Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2216195/?format=api
{ "id": 2216195, "url": "http://patchwork.ozlabs.org/api/patches/2216195/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260326023627.54349-1-rosenp@gmail.com/", "project": { "id": 42, "url": "http://patchwork.ozlabs.org/api/projects/42/?format=api", "name": "Linux GPIO development", "link_name": "linux-gpio", "list_id": "linux-gpio.vger.kernel.org", "list_email": "linux-gpio@vger.kernel.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260326023627.54349-1-rosenp@gmail.com>", "list_archive_url": null, "date": "2026-03-26T02:36:27", "name": "pinctrl: intel: use FAM for communities", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "894f9f6236bb37b7db51a0c809030fef59d0682a", "submitter": { "id": 70304, "url": "http://patchwork.ozlabs.org/api/people/70304/?format=api", "name": "Rosen Penev", "email": "rosenp@gmail.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-gpio/patch/20260326023627.54349-1-rosenp@gmail.com/mbox/", "series": [ { "id": 497527, "url": "http://patchwork.ozlabs.org/api/series/497527/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-gpio/list/?series=497527", "date": "2026-03-26T02:36:27", "name": "pinctrl: intel: use FAM for communities", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/497527/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2216195/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2216195/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-gpio+bounces-34183-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-gpio@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=C+QhDHRt;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-gpio+bounces-34183-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=\"C+QhDHRt\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.210.178", "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=gmail.com" ], "Received": [ "from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fh7Kj6W3Rz1y1G\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 13:40:09 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id D65C2302F27B\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 02:36:48 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id A378F3914F3;\n\tThu, 26 Mar 2026 02:36:47 +0000 (UTC)", "from mail-pf1-f178.google.com (mail-pf1-f178.google.com\n [209.85.210.178])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 154F038E113\n\tfor <linux-gpio@vger.kernel.org>; Thu, 26 Mar 2026 02:36:45 +0000 (UTC)", "by mail-pf1-f178.google.com with SMTP id\n d2e1a72fcca58-823c56765fdso249748b3a.1\n for <linux-gpio@vger.kernel.org>;\n Wed, 25 Mar 2026 19:36:45 -0700 (PDT)", "from ryzen ([2601:644:8000:5b5d::8bd])\n by smtp.gmail.com with ESMTPSA id\n d2e1a72fcca58-82c7d385601sm990176b3a.33.2026.03.25.19.36.43\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 25 Mar 2026 19:36:44 -0700 (PDT)" ], "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774492607; cv=none;\n b=IU3vFSYY7f7xAN5xeDoyHvZh4Ir2PvTDXmo5UdVxUYaOGQ7y0NTJpkAmt9XQsf0U18g6JmFekr4Cg/9XVUVHMcnxKlPAlxbTZ/arhX7LxMtTM1qlBRGI0mKRv8VHSwqa6Dedet3JcH9V9/R5m6tpJ6N2wWJPI3ksubcze/8oVCg=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774492607; c=relaxed/simple;\n\tbh=x9AzjzvF+Zn/f58SEXBbdYUK8/A08m9vI2LlTEJCV7Q=;\n\th=From:To:Cc:Subject:Date:Message-ID:MIME-Version;\n b=Jv4o8yIk9BdEMcV4/l4wF9ZHfZNwgmaWdlbtWYVTiIa/FJ/MjL9FsWaRjSvaBmaIJADfBpX/nmPGv9hHVOTcOHtx/BFJ/2KphZQdBY+rGc4IaIwIyQE4rUhawMLVAPRhISG4BOTb3t43VbZibAQlFV5+3XdeIf6PZq/05FliATY=", "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com;\n spf=pass smtp.mailfrom=gmail.com;\n dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=C+QhDHRt; arc=none smtp.client-ip=209.85.210.178", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1774492605; x=1775097405;\n darn=vger.kernel.org;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:from:to:cc:subject:date:message-id:reply-to;\n bh=dc94mFyUarnXD7uTGOHIqKLXmGuXftbJg5Kgbu68aTI=;\n b=C+QhDHRtemAh95GLVEXIKzkv7aytG5q8dF+9ChKxMy7ty6zd3mE8rcD0QMPTiVWtjK\n iziO+56iB68d/OxpWjMhTc1g/o/yu5UL2HOPJrpiX+seDk4ParjTIuj1AKmAJIM1i2zI\n Odpg97Ma4jJB9XT4VFxf7vOl/tOd603zow4uQzr5SdR3O+6JV4swleSlTA85dNCVwRms\n UvbrqYSKbOaCVGQj5BS5ej0x6W+ZvVa1Ojo686vKtDvrH+3pIjeiqH8ksxVDJ2WKOt/P\n vfdqW4A4OERRpAdLjZauIZKIvC/yaBBd649hzpBBUYfBOwdJfk4EW8Do/v/I3cs63BJK\n p0nA==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774492605; x=1775097405;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=dc94mFyUarnXD7uTGOHIqKLXmGuXftbJg5Kgbu68aTI=;\n b=JwvkZOWeIFkz7Sx070fSrypeL5f3GXBV72Wr6qT3gI9o128HBsp2ZZg9Zr8+Dez7LP\n SUZzbd//xCxwgqv4qoHvQPdoylhx4xWmqSH3KXG1CJ9+IbJmyDYYo/zEwU/kTgPV5g5U\n j2tZ4GTF12r9dtQCIMIH2QolWXM5qH2TYZsU4v83SRG5eUhlsttLGiX7aYYaMe8BbY88\n wWGAHUBKW9+6V4RxO7kd2Wk+6gdsWbFOtSUQwjkRVxvJXXu3uu6lez+zUvECBTeaJrbR\n hSJOVUbf5ClEycrwi/tV+NnAJWeuZ+AcyftQcPW4RgqEgL3UOt+2m66wGGe8+6NE9aFF\n /B+A==", "X-Gm-Message-State": "AOJu0YzAOaljT6kxRaPoc0GAK9oZ6Z805FAZ/ZLUVBnK0F5NALcbts70\n\tsTewCCzmm+Mty+1W15C3cUiVMIScvKq/YYLv5ZBlomK4WkeDOcaHSfoOI7z3JbmS", "X-Gm-Gg": "ATEYQzx3l6gAgc/0RAXzhaG1eNRne9aogVTgFopFG1Y+WR161rpcovcJ11HABpmLZ8l\n\tMUzdcycjn71Q+TeWuyXDDFhZW6XmcU30vdHcYW+CESZSrzU77SmHNp2YPDk5ACE7sJnENsKReHl\n\td6V78rC5cnCoOcZcSB0w4+ivIuDZVCFlGirFQoFEK30X7vuxznNdhRanUV/uTMOHA8MBh89hL9O\n\txNZrzcz9mrl463HmcGPrtxvh8Z3dnXCkDFHWg+mTdrf7AFYTTClLxnzeZWlVOIMKg+VEsVlb4mb\n\tmd/3vEKAZiwyTHecgqsssA3BQv2EiB3nsGljlEafSgZWEk/3aC71oyqs93Opinm+TsqHHSwNmJk\n\tNUPge5VJvvuI933Tq+aVDlnoJJlH+ZBpYLypodp4H168BMS3ZDZW7+W91RYaYWa70t+8fjj1tF0\n\tp4PGPQHyXtdvb300Uh9zTwRITVpAgWcjbRk38PJRhqW7fUhp9M3SwcrlIZFE7/3N3jtQ==", "X-Received": "by 2002:a05:6a00:f05:b0:82a:6de8:fa4e with SMTP id\n d2e1a72fcca58-82c6de9f009mr6630975b3a.17.1774492604974;\n Wed, 25 Mar 2026 19:36:44 -0700 (PDT)", "From": "Rosen Penev <rosenp@gmail.com>", "To": "linux-gpio@vger.kernel.org", "Cc": "Mika Westerberg <mika.westerberg@linux.intel.com>,\n\tAndy Shevchenko <andy@kernel.org>,\n\tLinus Walleij <linusw@kernel.org>,\n\tKees Cook <kees@kernel.org>,\n\t\"Gustavo A. R. Silva\" <gustavoars@kernel.org>,\n\tlinux-kernel@vger.kernel.org (open list),\n\tlinux-hardening@vger.kernel.org (open list:KERNEL HARDENING (not covered by\n other areas):Keyword:\\b__counted_by(_le|_be)?\\b)", "Subject": "[PATCH] pinctrl: intel: use FAM for communities", "Date": "Wed, 25 Mar 2026 19:36:27 -0700", "Message-ID": "<20260326023627.54349-1-rosenp@gmail.com>", "X-Mailer": "git-send-email 2.53.0", "Precedence": "bulk", "X-Mailing-List": "linux-gpio@vger.kernel.org", "List-Id": "<linux-gpio.vger.kernel.org>", "List-Subscribe": "<mailto:linux-gpio+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-gpio+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit" }, "content": "Use a flexible array member to combine allocations into one.\n\nAdd __counted_by for extra runtime analysis. Move counting variable\nassignments to after allocation as required by __counted_by.\n\nSigned-off-by: Rosen Penev <rosenp@gmail.com>\n---\n drivers/pinctrl/intel/pinctrl-baytrail.c | 43 +++++++---------------\n drivers/pinctrl/intel/pinctrl-cherryview.c | 11 ++----\n drivers/pinctrl/intel/pinctrl-intel.c | 15 ++------\n drivers/pinctrl/intel/pinctrl-intel.h | 2 +-\n drivers/pinctrl/intel/pinctrl-lynxpoint.c | 9 +----\n 5 files changed, 25 insertions(+), 55 deletions(-)", "diff": "diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/intel/pinctrl-baytrail.c\nindex b733ec31ad9d..e73419498857 100644\n--- a/drivers/pinctrl/intel/pinctrl-baytrail.c\n+++ b/drivers/pinctrl/intel/pinctrl-baytrail.c\n@@ -1558,31 +1558,6 @@ static int byt_gpio_probe(struct intel_pinctrl *vg)\n \treturn 0;\n }\n \n-static int byt_set_soc_data(struct intel_pinctrl *vg,\n-\t\t\t const struct intel_pinctrl_soc_data *soc)\n-{\n-\tstruct platform_device *pdev = to_platform_device(vg->dev);\n-\tint i;\n-\n-\tvg->soc = soc;\n-\n-\tvg->ncommunities = vg->soc->ncommunities;\n-\tvg->communities = devm_kmemdup_array(vg->dev, vg->soc->communities, vg->ncommunities,\n-\t\t\t\t\t sizeof(*vg->soc->communities), GFP_KERNEL);\n-\tif (!vg->communities)\n-\t\treturn -ENOMEM;\n-\n-\tfor (i = 0; i < vg->soc->ncommunities; i++) {\n-\t\tstruct intel_community *comm = vg->communities + i;\n-\n-\t\tcomm->pad_regs = devm_platform_ioremap_resource(pdev, 0);\n-\t\tif (IS_ERR(comm->pad_regs))\n-\t\t\treturn PTR_ERR(comm->pad_regs);\n-\t}\n-\n-\treturn 0;\n-}\n-\n static const struct acpi_device_id byt_gpio_acpi_match[] = {\n \t{ \"INT33B2\", (kernel_ulong_t)byt_soc_data },\n \t{ \"INT33FC\", (kernel_ulong_t)byt_soc_data },\n@@ -1595,19 +1570,29 @@ static int byt_pinctrl_probe(struct platform_device *pdev)\n \tstruct device *dev = &pdev->dev;\n \tstruct intel_pinctrl *vg;\n \tint ret;\n+\tint i;\n \n \tsoc_data = intel_pinctrl_get_soc_data(pdev);\n \tif (IS_ERR(soc_data))\n \t\treturn PTR_ERR(soc_data);\n \n-\tvg = devm_kzalloc(dev, sizeof(*vg), GFP_KERNEL);\n+\tvg = devm_kzalloc(dev, struct_size(vg, communities, soc_data->ncommunities), GFP_KERNEL);\n \tif (!vg)\n \t\treturn -ENOMEM;\n \n+\tvg->ncommunities = soc_data->ncommunities;\n+\tmemcpy(vg->communities, soc_data->communities, soc_data->ncommunities * sizeof(*vg->communities));\n+\n \tvg->dev = dev;\n-\tret = byt_set_soc_data(vg, soc_data);\n-\tif (ret)\n-\t\treturn dev_err_probe(dev, ret, \"failed to set soc data\\n\");\n+\tvg->soc = soc_data;\n+\n+\tfor (i = 0; i < vg->soc->ncommunities; i++) {\n+\t\tstruct intel_community *comm = vg->communities + i;\n+\n+\t\tcomm->pad_regs = devm_platform_ioremap_resource(pdev, 0);\n+\t\tif (IS_ERR(comm->pad_regs))\n+\t\t\treturn PTR_ERR(comm->pad_regs);\n+\t}\n \n \tvg->pctldesc\t\t= byt_pinctrl_desc;\n \tvg->pctldesc.name\t= dev_name(dev);\ndiff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c\nindex a33eca5eafc4..e9b062b44fea 100644\n--- a/drivers/pinctrl/intel/pinctrl-cherryview.c\n+++ b/drivers/pinctrl/intel/pinctrl-cherryview.c\n@@ -1595,19 +1595,16 @@ static int chv_pinctrl_probe(struct platform_device *pdev)\n \tif (IS_ERR(soc_data))\n \t\treturn PTR_ERR(soc_data);\n \n-\tpctrl = devm_kzalloc(dev, sizeof(*pctrl), GFP_KERNEL);\n+\tpctrl = devm_kzalloc(dev, struct_size(pctrl, communities, soc_data->ncommunities), GFP_KERNEL);\n \tif (!pctrl)\n \t\treturn -ENOMEM;\n \n+\tpctrl->ncommunities = soc_data->ncommunities;\n+\tmemcpy(pctrl->communities, soc_data->communities, soc_data->ncommunities * sizeof(*pctrl->communities));\n+\n \tpctrl->dev = dev;\n \tpctrl->soc = soc_data;\n \n-\tpctrl->ncommunities = pctrl->soc->ncommunities;\n-\tpctrl->communities = devm_kmemdup_array(dev, pctrl->soc->communities, pctrl->ncommunities,\n-\t\t\t\t\t\tsizeof(*pctrl->soc->communities), GFP_KERNEL);\n-\tif (!pctrl->communities)\n-\t\treturn -ENOMEM;\n-\n \tcommunity = &pctrl->communities[0];\n \tcommunity->regs = devm_platform_ioremap_resource(pdev, 0);\n \tif (IS_ERR(community->regs))\ndiff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c\nindex 97bf5ec78db4..635e4e5ab10c 100644\n--- a/drivers/pinctrl/intel/pinctrl-intel.c\n+++ b/drivers/pinctrl/intel/pinctrl-intel.c\n@@ -1581,24 +1581,17 @@ int intel_pinctrl_probe(struct platform_device *pdev,\n \tstruct intel_pinctrl *pctrl;\n \tint i, ret, irq;\n \n-\tpctrl = devm_kzalloc(dev, sizeof(*pctrl), GFP_KERNEL);\n+\tpctrl = devm_kzalloc(dev, struct_size(pctrl, communities, soc_data->ncommunities), GFP_KERNEL);\n \tif (!pctrl)\n \t\treturn -ENOMEM;\n \n+\tpctrl->ncommunities = soc_data->ncommunities;\n+\tmemcpy(pctrl->communities, soc_data->communities, soc_data->ncommunities * sizeof(*pctrl->communities));\n+\n \tpctrl->dev = dev;\n \tpctrl->soc = soc_data;\n \traw_spin_lock_init(&pctrl->lock);\n \n-\t/*\n-\t * Make a copy of the communities which we can use to hold pointers\n-\t * to the registers.\n-\t */\n-\tpctrl->ncommunities = pctrl->soc->ncommunities;\n-\tpctrl->communities = devm_kmemdup_array(dev, pctrl->soc->communities, pctrl->ncommunities,\n-\t\t\t\t\t\tsizeof(*pctrl->soc->communities), GFP_KERNEL);\n-\tif (!pctrl->communities)\n-\t\treturn -ENOMEM;\n-\n \tfor (i = 0; i < pctrl->ncommunities; i++) {\n \t\tstruct intel_community *community = &pctrl->communities[i];\n \t\tunsigned short capability_offset[6];\ndiff --git a/drivers/pinctrl/intel/pinctrl-intel.h b/drivers/pinctrl/intel/pinctrl-intel.h\nindex b5476b9de0db..c382fe8f08c2 100644\n--- a/drivers/pinctrl/intel/pinctrl-intel.h\n+++ b/drivers/pinctrl/intel/pinctrl-intel.h\n@@ -260,10 +260,10 @@ struct intel_pinctrl {\n \tstruct pinctrl_dev *pctldev;\n \tstruct gpio_chip chip;\n \tconst struct intel_pinctrl_soc_data *soc;\n-\tstruct intel_community *communities;\n \tsize_t ncommunities;\n \tstruct intel_pinctrl_context context;\n \tint irq;\n+\tstruct intel_community communities[] __counted_by(ncommunities);\n };\n \n int intel_pinctrl_probe(struct platform_device *pdev,\ndiff --git a/drivers/pinctrl/intel/pinctrl-lynxpoint.c b/drivers/pinctrl/intel/pinctrl-lynxpoint.c\nindex 299ee4f22bdc..b3cde7afded9 100644\n--- a/drivers/pinctrl/intel/pinctrl-lynxpoint.c\n+++ b/drivers/pinctrl/intel/pinctrl-lynxpoint.c\n@@ -715,19 +715,14 @@ static int lp_gpio_probe(struct platform_device *pdev)\n \tif (!soc)\n \t\treturn -ENODEV;\n \n-\tlg = devm_kzalloc(dev, sizeof(*lg), GFP_KERNEL);\n+\tlg = devm_kzalloc(dev, struct_size(lg, communities, soc->ncommunities), GFP_KERNEL);\n \tif (!lg)\n \t\treturn -ENOMEM;\n \n+\tlg->ncommunities = soc->ncommunities;\n \tlg->dev = dev;\n \tlg->soc = soc;\n \n-\tlg->ncommunities = lg->soc->ncommunities;\n-\tlg->communities = devm_kcalloc(dev, lg->ncommunities,\n-\t\t\t\t sizeof(*lg->communities), GFP_KERNEL);\n-\tif (!lg->communities)\n-\t\treturn -ENOMEM;\n-\n \tlg->pctldesc = lptlp_pinctrl_desc;\n \tlg->pctldesc.name = dev_name(dev);\n \tlg->pctldesc.pins = lg->soc->pins;\n", "prefixes": [] }