From nobody Fri Sep 25 20:02:08 2026 Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A7CA149891D for ; Tue, 8 Sep 2026 21:35:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788903307; cv=none; b=KMJmS6B9F7zLONq4ustOZF+XgmT3Zxz2cwEI0NSP4sP1Vy2+Pe+JItzRTHj63XTsm+FPLqimWXTyTLiVAQ2HhI5bIyKpi0rfbkweDdva13sjbK5MLDfS/L8jb1cQbAHMpXydrBXIdpYFO/neVEJIWr5ETWP8oayRKxMVkHe6Nag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788903307; c=relaxed/simple; bh=LRZ8vmf7yVnDP8AHhwc+k+6VHYjhFocJjHx3TQ/DOkc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IsmdKFin5uegFfCwT4fozuLO3gWibVTqYXdgaNUuH10voPbxNgdmnZ4Ry/Y+xu/+2th5saOLoDmzm3q1gQgOo9YiqHFWViCCuzIFwwga43SbBsJIS6S6Mpky8E9ltk4WoCry5eHjNzSMMWyeaH8kk/wHhCLYg7HYSxC7Wn42Abw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com; spf=pass smtp.mailfrom=riscstar.com; dkim=pass (2048-bit key) header.d=riscstar-com.20251104.gappssmtp.com header.i=@riscstar-com.20251104.gappssmtp.com header.b=WBw/Q616; arc=none smtp.client-ip=209.85.219.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riscstar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=riscstar-com.20251104.gappssmtp.com header.i=@riscstar-com.20251104.gappssmtp.com header.b="WBw/Q616" Received: by mail-qv1-f44.google.com with SMTP id 6a1803df08f44-910316a2fc9so65363006d6.2 for ; Tue, 08 Sep 2026 14:35:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=riscstar-com.20251104.gappssmtp.com; s=20251104; t=1788903304; x=1789508104; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OlXU1fYfQVNOpzWxYYTTBNzAHTPsq9zYyGkBJYPHark=; b=WBw/Q616nSnQpo3D+YhR6IwmFP6QLF2C721MeiAH4C/BgqiGBVMsjUIqMiMr9DYu4m rzEoCvldkH6dkV15IswfMJIXfbkcEX0TE+R2vtClZIKoiewx79xLemr+9oeLamQrqy7y jzLrt2+zONY8tRhoroIA4pnO1x7gy4zmr1QJ/0Tea8z4GroRvwDnDoYJa+ta44Oyy2hi rsffKmE7v1ClR1gLvMyl7TDVwE5ryNB4c0wX9aJX7/obtUyrqfWuOB73+FEOePoKDtFU RJVBGJMgyylmzDcg7rzLjmR6H1xaRxGbVgq49uBRlyCtrBJN0xdU5OlmwC9vC8rAfDp4 2Giw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788903304; x=1789508104; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=OlXU1fYfQVNOpzWxYYTTBNzAHTPsq9zYyGkBJYPHark=; b=g+Z6ovwO/Wt9RdJ5h75dH7cRTGYFN/fBTq6BVegMG79baiNP7rwAILj3RRhXbQUqTb 8Csygtk2Lo4WKgLFhBqL8M7ZI0awyoH5BtJnGs2Rh3hOcCcbQUKaYuBCgRslOe/jOwLq CM9Bt6kQEjkUZqTB4JN/O4nSfgnsZYJSOsTD5ZWKHOxNrGExDb5F6/JDRxdhjzeXUX6X y8/HkmzPFKRFV1SowpoVd5sVWuFQ/jaju2BaeNDwOdKNAB7b1ofnL5a1BHJ20dcgjyLk cCs22EhLQy1W2p4l7WaqDSbHDgP4/2/KtCKmk6CjWUlTPjp4RwmbO+nwKb1h9Nu2PZI8 H7gw== X-Forwarded-Encrypted: i=1; AKwUvBxJ1r88fZyPnzcMwykRsAiKQ4ju8sdDyPpvNGVXW/b1qaOrEGv7TFEVfY/m923w5d1xH4FZsdUaweueCtE=@vger.kernel.org X-Gm-Message-State: AFuF++ms02l1ZNUtjoNUQtYAUbzTPbm8mVIrMZY4SYagYXaHKNHExg+7 vvitoJbq0c+KRpj4ypNELUAXJo+xpCXFzvqTkWiqP7a9D2hVzzbB9iS++B+AuSfNLzM= X-Gm-Gg: AYBFou0uAZsowBFsTlMuggF6H1B7HkQUl0K6OM57dhv2qpRzwKwhN3F8+MVAC0prhX9 gZmTrZ67ZoyZnEG4VkYDmQVC3zcwZ1MwzEDr/qOEDMVmYZFu26HD4W83eEoXclOWojbVOnEpyeO k0PqjyQOkRxZeSxXbm3blCu0N2KMLJhiZnVvMj1h22sa7xw1ZEnqusDTBzYcX/cWn8f3DVRYMoZ z3a3KRXHc3Ew+/U/vjPGBa2zdy8Q78uFHKGWcWnZ9OZ85a94bJXN35EdCzhoT1GEQ/R17LYHuFK KijZQQRzCIbPP4iYt8EqJBhpqZm+o5ZT2ADT2SE3B2KxteqwDIzXxUFTVVZPJyv6X9LbT7OLEFP PojVPXPNhFHsk4gAfbaDR0FtDcs22+SDFvPshRUWdDZHtogU8x6U8AbY4PDksZ5C2eKDVLAos/T hvLMPiKn5403X/t02oQjTEDK8tgptZy3LXFsgHmauxxmRp0aGjTk+HqaBa2bPvucGC X-Received: by 2002:a05:620a:6989:b0:936:d833:6a35 with SMTP id af79cd13be357-93980133923mr3591761285a.0.1788903304149; Tue, 08 Sep 2026 14:35:04 -0700 (PDT) Received: from zippy.localdomain ([73.62.185.64]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9397f9f0734sm1250497885a.4.2026.09.08.14.35.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 14:35:03 -0700 (PDT) From: Alex Elder To: bhelgaas@google.com, robh@kernel.org, saravanak@kernel.org Cc: herve.codina@bootlin.com, daniel@riscstar.com, mohd.anwar@oss.qualcomm.com, lorenzo.bianconi@oss.qualcomm.com, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Sashiko Subject: [PATCH v5 1/4] PCI: of: avoid allocations in of_pci_prop_compatible() Date: Tue, 8 Sep 2026 16:34:55 -0500 Message-ID: <20260908213459.2519059-2-elder@riscstar.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260908213459.2519059-1-elder@riscstar.com> References: <20260908213459.2519059-1-elder@riscstar.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Three compatible strings are formatted in of_pci_prop_compatible(). Their sizes are known in advance, and the largest is 16 bytes. Rather than dynamically allocating the space for those strings, just set aside a buffer on the stack large enough to hold all three. This avoids a problem that Sashiko pointed out, where an allocation failure would cause subsequent crash because strlen() is called unconditionally in of_changeset_add_prop_string_array(). Reported-by: Sashiko Link: https://lore.kernel.org/sashiko-reviews/a647bd56-7dc8-4fec-9d96-83462= 2054cdf@riscstar.com Signed-off-by: Alex Elder --- v5: - Made "bufp" have pointer type - Eliminated the unused local variable "i" drivers/pci/of_property.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/drivers/pci/of_property.c b/drivers/pci/of_property.c index 75a358f73e694..d66c702218081 100644 --- a/drivers/pci/of_property.c +++ b/drivers/pci/of_property.c @@ -324,27 +324,36 @@ static int of_pci_prop_intr_map(struct pci_dev *pdev,= struct of_changeset *ocs, return ret; } =20 +/* The three compatible property strings have max sizes 12+1, 15+1, and 13= +1 */ +#define PROP_SIZE 16 /* Max size of each compatible string */ static int of_pci_prop_compatible(struct pci_dev *pdev, struct of_changeset *ocs, struct device_node *np) { const char *compat_strs[PROP_COMPAT_NUM] =3D { 0 }; - int i, ret; + char buf[PROP_COMPAT_NUM * PROP_SIZE] =3D { }; + char *bufp =3D buf; + int ret; =20 - compat_strs[PROP_COMPAT_PCI_VVVV_DDDD] =3D - kasprintf(GFP_KERNEL, "pci%x,%x", pdev->vendor, pdev->device); - compat_strs[PROP_COMPAT_PCICLASS_CCSSPP] =3D - kasprintf(GFP_KERNEL, "pciclass,%06x", pdev->class); - compat_strs[PROP_COMPAT_PCICLASS_CCSS] =3D - kasprintf(GFP_KERNEL, "pciclass,%04x", pdev->class >> 8); + ret =3D snprintf(bufp, PROP_SIZE, "pci%x,%x", pdev->vendor, pdev->device); + if (ret >=3D PROP_SIZE) + return -EINVAL; + compat_strs[PROP_COMPAT_PCI_VVVV_DDDD] =3D bufp; + bufp +=3D ret + 1; =20 - ret =3D of_changeset_add_prop_string_array(ocs, np, "compatible", - compat_strs, PROP_COMPAT_NUM); - for (i =3D 0; i < PROP_COMPAT_NUM; i++) - kfree(compat_strs[i]); + ret =3D snprintf(bufp, PROP_SIZE, "pciclass,%06x", pdev->class); + if (ret >=3D PROP_SIZE) + return -EINVAL; + compat_strs[PROP_COMPAT_PCICLASS_CCSSPP] =3D bufp; + bufp +=3D ret + 1; =20 - return ret; + ret =3D snprintf(bufp, PROP_SIZE, "pciclass,%04x", pdev->class >> 8); + compat_strs[PROP_COMPAT_PCICLASS_CCSS] =3D bufp; + + return of_changeset_add_prop_string_array(ocs, np, "compatible", + compat_strs, PROP_COMPAT_NUM); } +#undef PROP_SIZE =20 int of_pci_add_properties(struct pci_dev *pdev, struct of_changeset *ocs, struct device_node *np) --=20 2.53.0 From nobody Fri Sep 25 20:02:08 2026 Received: from mail-qv1-f42.google.com (mail-qv1-f42.google.com [209.85.219.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D836F498931 for ; Tue, 8 Sep 2026 21:35:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788903308; cv=none; b=kbDNu/uNMcte6YY/yfAZU+c+PlseakLcACJo4PHPhTOFWA/SVNhSd375uNjczMXyidykmSjcTRepEpSGTbRL+XcTqd9xmCOqCeuzmLhGTieYd0ylSzaVrIQ1WXNkyUSVKbU6jAOIxdPxSFQGH/KAeVXXIedpVwNHftdL/94LNeo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788903308; c=relaxed/simple; bh=dSVFMgBYNWS5F0FgVH/G2sJcIm/aUqTCSZVMKsCMKP8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=b+4XfrIdYBglQcegNY+LK0tlDDFBkC3x0bLoF7DkFzm+7BkKmLd/+wwSZmBEjE1nTjD7oDCttX4LfgYQ/gEr9yivwpZBwOhxRtjdzySil7S3NWkOTJxW3F5rtN+AVWJlYvN1s1dUe9ftrCR1rFQgSpiKw277ecizypw9KaUIlgA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com; spf=pass smtp.mailfrom=riscstar.com; dkim=pass (2048-bit key) header.d=riscstar-com.20251104.gappssmtp.com header.i=@riscstar-com.20251104.gappssmtp.com header.b=hzGNbWvq; arc=none smtp.client-ip=209.85.219.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riscstar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=riscstar-com.20251104.gappssmtp.com header.i=@riscstar-com.20251104.gappssmtp.com header.b="hzGNbWvq" Received: by mail-qv1-f42.google.com with SMTP id 6a1803df08f44-90ce08834feso72464926d6.0 for ; Tue, 08 Sep 2026 14:35:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=riscstar-com.20251104.gappssmtp.com; s=20251104; t=1788903305; x=1789508105; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tbp0io90tD3hLKOmsDGrt9wIS9lt0GeXuRra07vYj6c=; b=hzGNbWvqQdA3RLBIXdrv8A8irGa6WhQiYcnlQ879HmC2FD7momMTDkshU9Em6schzf wi7d0OK4sSa/Gg3fj0e2gBPOKSdM0jlN7yHHTJ+eXzKnHNKjccoLQ+812GHueiZ7dJzD XONmiXZ0Mnjk4QSDANfTA/Wu1HH8h9JN6+bSwv3eTr5hFAzWjCNYklqcEAbAyZdyAOaf vIJol0Ba7l7UcOL/Q10BQMv7oDU+7rswPlxAxGWM1117MdKyV/+5ZtJhcFaBCRup0y7D a4ppzISlbW+EW6eY+7QNDlWNzTnm6afNqSkwezJtq/jSIgjFTXSKJV/pAptkc3HAUktx xudg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788903305; x=1789508105; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=tbp0io90tD3hLKOmsDGrt9wIS9lt0GeXuRra07vYj6c=; b=a7/EMEIMeicgD7GjudybICIBdE7MZGZtgxXMIR1RhqppIvEPmNA/m5B3spd6klcct1 me5y9133yWRpYO9cvpv0rmbmud5/9X7FvrTXI+AsdqjEKS5fRMPaJbcwtJ0IBgygjQTz 8duG/GG6CRG5OZpQgpRBoj46H95MqPFFIsJYbzV2hMgRMX0JkeeKi7i0eU/LKqigOiHo 8S9Z67oSQsJ3Ir9lgRLQQ2PZ1M+zDVPkGD60UOH4ABToX21Pj0JPMJOPPcwT4pbi/aUB hRght6PLKHMxH7DDJ9w47X8RdP4IJajwy93vK5i+IzVDP6u0R94a8qPYksF6jkWBgldI ymKQ== X-Forwarded-Encrypted: i=1; AKwUvBw9VKNi/ubIB/X6Ndv0gckujypI4DKFpzNosfDzjeBeZxWy8YjsxUtQZdfnaFnRHXKwV0HBBXRKGedgxkY=@vger.kernel.org X-Gm-Message-State: AFuF++kTX1pT39U7PSC6DAOyyUPBC0245OVq0c3Y1gtnFYbYKbcIOFg4 zbXXVuKY5DPNKUDG7CXBQ7e4y9+sHJfEYMoJo6JtD5gjYVgbakUec1HZWIM3V452hkg= X-Gm-Gg: AYBFou3TpD2b7x1wmdAr6gOcBccOWWA5I3RIdHMjT4mKIqrZDUkh1ArRMR5k+OeS+9X RaBuq7l57oZxEP6i7Hk/oi/qwudvjDhOt8N2x1vQxLBejTHUB196tnBwUzghmYUX1aLAcKhOwTd ve2hO56Bb67fe/fFIXZn99XGf/i6igFFadPgy8xDk5SOPgtxFV+fNNpTgGZ+6/bqCNThIFFM5V6 xFK0L3iUUnGUQz+38nmYy4lNrtHyR+FGEns4ih72qRk0C1oroXy1ADSCKAsuRDeFWShNsvJypZE CiK9TYmOXo0qDbUkYXyg5JqgSum5LcgVbMEfGwrnBxR/Yk+/PMoKu+k4OjCaef9SRrrI2FC0TXH 9pr2aVpEQclgh+oKjZRodPaY9xELipKIBwGQnq0iSzlqCfu59GHziVBeJQ/E212r4W2+h5nOSeN QciNULf7vc3TYA0HpPs0z3lm8BgWBuEcmoATcx8igyHx1t/dh4+RNZeoozr0/oGVeU7xD2+jTyt nY= X-Received: by 2002:a05:620a:8083:b0:932:df7e:b31d with SMTP id af79cd13be357-9398034162amr3348906385a.12.1788903305398; Tue, 08 Sep 2026 14:35:05 -0700 (PDT) Received: from zippy.localdomain ([73.62.185.64]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9397f9f0734sm1250497885a.4.2026.09.08.14.35.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 14:35:05 -0700 (PDT) From: Alex Elder To: bhelgaas@google.com, robh@kernel.org, saravanak@kernel.org Cc: herve.codina@bootlin.com, daniel@riscstar.com, mohd.anwar@oss.qualcomm.com, lorenzo.bianconi@oss.qualcomm.com, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 2/4] PCI: of: drop the reg_num argument to of_pci_set_address() Date: Tue, 8 Sep 2026 16:34:56 -0500 Message-ID: <20260908213459.2519059-3-elder@riscstar.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260908213459.2519059-1-elder@riscstar.com> References: <20260908213459.2519059-1-elder@riscstar.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The reg_num argument passed to of_pci_set_address() is always zero, so get rid of it. Reviewed-by: Herve Codina Signed-off-by: Alex Elder --- drivers/pci/of_property.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/pci/of_property.c b/drivers/pci/of_property.c index d66c702218081..1caabbd4c18b5 100644 --- a/drivers/pci/of_property.c +++ b/drivers/pci/of_property.c @@ -52,7 +52,7 @@ enum of_pci_prop_compatible { }; =20 static void of_pci_set_address(struct pci_dev *pdev, u32 *prop, u64 addr, - u32 reg_num, u32 flags, bool reloc) + u32 flags, bool reloc) { if (pdev) { prop[0] =3D FIELD_PREP(OF_PCI_ADDR_FIELD_BUS, pdev->bus->number) | @@ -61,7 +61,7 @@ static void of_pci_set_address(struct pci_dev *pdev, u32 = *prop, u64 addr, } else prop[0] =3D 0; =20 - prop[0] |=3D flags | reg_num; + prop[0] |=3D flags; if (!reloc) { prop[0] |=3D OF_PCI_ADDR_FIELD_NONRELOC; prop[1] =3D upper_32_bits(addr); @@ -131,7 +131,7 @@ static int of_pci_prop_ranges(struct pci_dev *pdev, str= uct of_changeset *ocs, continue; =20 val64 =3D pci_bus_address(pdev, &res[j] - pdev->resource); - of_pci_set_address(pdev, rp[i].parent_addr, val64, 0, flags, + of_pci_set_address(pdev, rp[i].parent_addr, val64, flags, false); if (pci_is_bridge(pdev)) { memcpy(rp[i].child_addr, rp[i].parent_addr, @@ -164,7 +164,7 @@ static int of_pci_prop_reg(struct pci_dev *pdev, struct= of_changeset *ocs, struct of_pci_addr_pair reg =3D { 0 }; =20 /* configuration space */ - of_pci_set_address(pdev, reg.phys_addr, 0, 0, 0, true); + of_pci_set_address(pdev, reg.phys_addr, 0, 0, true); =20 return of_changeset_add_prop_u32_array(ocs, np, "reg", (u32 *)®, sizeof(reg) / sizeof(u32)); @@ -467,7 +467,7 @@ static int of_pci_host_bridge_prop_ranges(struct pci_ho= st_bridge *bridge, /* PCI bus address */ val64 =3D res->start; of_pci_set_address(NULL, &ranges[ranges_sz], - val64 - window->offset, 0, flags, false); + val64 - window->offset, flags, false); ranges_sz +=3D OF_PCI_ADDRESS_CELLS; =20 /* Host bus address */ --=20 2.53.0 From nobody Fri Sep 25 20:02:08 2026 Received: from mail-qk1-f170.google.com (mail-qk1-f170.google.com [209.85.222.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E7038499F38 for ; Tue, 8 Sep 2026 21:35:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788903309; cv=none; b=n580YyE3XK18H9HTXsFvQCmFAlhU0TgkyKboMsKftBqNPqXNjdrzlOfLHus9/pk9Aycy1fG2S00ggTRLU6Vyr34mIwE/MqOHYUR5ATjF5x8JT9DVsEC4xFtBjzEZ71d6HGIITiMU7JVqCxVu3f368gLiEzhnirekvw5d5m0YZEU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788903309; c=relaxed/simple; bh=QDjh/o/EJT+5EmtaVLbTs0ss1hLQGrJ710TUSyqfmVA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ih8xkVRm9zpysa2sQ9bQIrnXhc6iVxiLwSAaFMsXT2D/+umoVnSQ4ZIrv7SBofgI0p4aVZ6+U3MXgUAqAgp+n6hYxJ2uG5fY2odTd+F+msTndzLk6BRU7bJq4ezeAes+LjjeA0ogF+8S2nkcD0qVvYHeAQPj2/bsM2wfVDh5P9o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com; spf=pass smtp.mailfrom=riscstar.com; dkim=pass (2048-bit key) header.d=riscstar-com.20251104.gappssmtp.com header.i=@riscstar-com.20251104.gappssmtp.com header.b=st4aBEsH; arc=none smtp.client-ip=209.85.222.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riscstar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=riscstar-com.20251104.gappssmtp.com header.i=@riscstar-com.20251104.gappssmtp.com header.b="st4aBEsH" Received: by mail-qk1-f170.google.com with SMTP id af79cd13be357-939b5ded99dso154577385a.2 for ; Tue, 08 Sep 2026 14:35:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=riscstar-com.20251104.gappssmtp.com; s=20251104; t=1788903306; x=1789508106; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Tf53B7+IQ/UMJpYYTrZ14GDqT88z18YWAe/D6JaHkeo=; b=st4aBEsHW7i1NfrLpMpkF3zLFb85kFQ/MnrejqSG3m4k/uJ/LPk0R34waRnZZMw1gv X7zTxflbU4AVGMQz7jBItBUR9y22FLl+PH5gE7JOB+WAhRXggCwJqZ4+VuU3cVBq8cCW lcMiChGLgRe4wTMWvpA1O5e1PqD189DDWX7QX6IuCen/dEIhN9MMf6MQbqrRys/k0Jn8 rctfaqkhMvmU8C4fxGZ/kz2OgNk1LBqxw9oiihcd9sRSTPg4VTtbxQmkZ8vooThenANl Hsr7us/93ShDkNmicoc9AuI3BI86Z6q06hprFv2kAoD56fdGO8lQdgVfeHSeTKqBUvKm qMxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788903306; x=1789508106; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Tf53B7+IQ/UMJpYYTrZ14GDqT88z18YWAe/D6JaHkeo=; b=Gz9le/kzLdvA7C147jlABTMGSuf+IVUqY5ql4x48QveNTVS++2KgXdUim0mBEnbkeZ O5QZcrgDMeTNP6VjGvte5IBvjnoTW8aXZ/4aAuk1xO+cHraKL67TRutEBMFjoT0aOX37 uhcfwAKi8zI5RF+4q6vRxstDhzGPYoKaHMkEEXIzQ751NLlL7aPcOLXjetzOswrUK4C+ 2HTRUeuxBFfIbknCOo0KHcy3ZlHXoragtW6+1N6LpGFbGtrMfXdzkJxbB/BWpp2vMx1s M7Hl0rYznSHDwN9WRznYMq/eg3zfPbwyVTPalKaK9dAz+ogonr28q0o4pRVn/Z+B1RYT jNYQ== X-Forwarded-Encrypted: i=1; AKwUvByRCGS4lt9jYnmWYsD9om5Wk6IOV48LaQ4ouFaqM9IXpJMvGXkM+YgsiboChay+AOffmRS8dirKsCoslRo=@vger.kernel.org X-Gm-Message-State: AFuF++k6z7HR6z+2j1xAgq70aQPAnyOZn/dg68M0xh98xmcY38d55k6T jPrKvVPgXCw5Dfz3dB3B9D3PR/nnXKljNhMTHBnLZ1IGWtKdF4PJyhoY9WGHau6jAed7OXNvDVV myrnlCXQ= X-Gm-Gg: AYBFou2oVn+AgheKw/lraF3EuktwXSNQxdarMx2KcWWAIP0icjbEJkQuDBbe3/Ld9NP M2AHy0oro4qq54iVWoME8lFNe/a+kgQQGPg7pMdeHnFa3K5gTOIoLsFRGScxRjZR5hKH9CTY6yE NnfF+GxcyofbFHaUuSSRgRyS6KY/GZIbh1tlMEz9KavsnD+1LL8n+0cCXPsg/loaehbit3ciXr6 FEoXYXQsIszoeecZZjCDXv4xiUetGo8FSBEF/NK5Bkict0l/pNrm2g9kyGfASJKTV9/QRcJ/wNQ MDPZ9dFJbF95woJ5BOllxUvryw9zoHWSvcjRhpn7ILu564gVVWLF+nfFxxjRuGf5GOs5/z3FY6S DtoRXg4eMI0KXYSIVofPU++H3gR7kuZgSj7d211FWQnzi4CGTT00qYvY63Zar0xtfumEM+uP5L/ rMZjW9kfcK1o1x4Fc8TBRpJnwHN8yRaBYT81UcTIgrzxkBZCdM7mUX+KjMVdjkmKVWNodLosjP1 GQ= X-Received: by 2002:a05:620a:710d:b0:939:8ecf:6025 with SMTP id af79cd13be357-9398ecf60bcmr2757377685a.20.1788903306440; Tue, 08 Sep 2026 14:35:06 -0700 (PDT) Received: from zippy.localdomain ([73.62.185.64]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9397f9f0734sm1250497885a.4.2026.09.08.14.35.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 14:35:06 -0700 (PDT) From: Alex Elder To: bhelgaas@google.com, robh@kernel.org, saravanak@kernel.org Cc: herve.codina@bootlin.com, daniel@riscstar.com, mohd.anwar@oss.qualcomm.com, lorenzo.bianconi@oss.qualcomm.com, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 3/4] PCI: of: don't zero flags in of_pci_get_addr_flags() Date: Tue, 8 Sep 2026 16:34:57 -0500 Message-ID: <20260908213459.2519059-4-elder@riscstar.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260908213459.2519059-1-elder@riscstar.com> References: <20260908213459.2519059-1-elder@riscstar.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The flags variable whose address is passed to of_pci_get_addr_flags() is zeroed before assigning a value to it. Skip the zeroing and just assign it instead. Reviewed-by: Herve Codina Signed-off-by: Alex Elder --- drivers/pci/of_property.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/pci/of_property.c b/drivers/pci/of_property.c index 1caabbd4c18b5..1e5d7dde467b8 100644 --- a/drivers/pci/of_property.c +++ b/drivers/pci/of_property.c @@ -82,12 +82,10 @@ static int of_pci_get_addr_flags(const struct resource = *res, u32 *flags) else return -EINVAL; =20 - *flags =3D 0; + *flags =3D FIELD_PREP(OF_PCI_ADDR_FIELD_SS, ss); if (res->flags & IORESOURCE_PREFETCH) *flags |=3D OF_PCI_ADDR_FIELD_PREFETCH; =20 - *flags |=3D FIELD_PREP(OF_PCI_ADDR_FIELD_SS, ss); - return 0; } =20 --=20 2.53.0 From nobody Fri Sep 25 20:02:08 2026 Received: from mail-qk1-f169.google.com (mail-qk1-f169.google.com [209.85.222.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 189E249AA35 for ; Tue, 8 Sep 2026 21:35:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788903311; cv=none; b=LXh2EMCEaffvdcK6I8ALvpN/QzCyPug3usTSjtrQcyHxab9Ow3QPvnAQoAWmwaAdAcjRHe2+AgrUUDduj35RUErRT87t0A6qS85nkHZpEsVzmBZLZ0e92LBPB2NlucAu9WNmzoIJ5FjN0Ch98sdSA+VpgmcoYrk13cvvoN/8PpU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788903311; c=relaxed/simple; bh=1F3EiIo11jnrR8LsMQza9ZGSJ9SjVCrnkOQSsqUAwJY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=O6dyFO8D6knEOuXzS5zHQ5VziAGJnxodtC6AsePeYE9iKKyMW9INzPF2IrOJmYMgC5i64xrLRtXw25a1Ufe2Ny+lGCw+am1zrPnoSpt70+FnC16aP6o43YkEp5/s6ZD6Tskyt958+89jJpP2duJoP1gNnVxLzVvHieR12n74iG8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com; spf=pass smtp.mailfrom=riscstar.com; dkim=pass (2048-bit key) header.d=riscstar-com.20251104.gappssmtp.com header.i=@riscstar-com.20251104.gappssmtp.com header.b=nBpu8UpD; arc=none smtp.client-ip=209.85.222.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riscstar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=riscstar-com.20251104.gappssmtp.com header.i=@riscstar-com.20251104.gappssmtp.com header.b="nBpu8UpD" Received: by mail-qk1-f169.google.com with SMTP id af79cd13be357-939adff838bso174031985a.0 for ; Tue, 08 Sep 2026 14:35:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=riscstar-com.20251104.gappssmtp.com; s=20251104; t=1788903308; x=1789508108; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=HE1zJOd468NvVHPcCax3V6S6Z0+9RulSQLUiQ0wVkKI=; b=nBpu8UpDl873Dqe4zjStxqCzK0TLQGiVVopSfCQE155ApxpGpebYL8gWKjt1omQAYd LB4VOPu2gaOiOmVwDy8CGEVXDHOSBZoKzGuNduBjeM+ulM9AhBKWfo0C64pOqIFp6YER 9rFR+PuDUYuyOS7krRU1J5keuBRscCotFLRIPS8rXYTS0joAx9FjJMuSaKeO3FgQoHqM TQZKrrz8vKk1NqScJgMGdgQmsk8dEyCaPbZOFGWTbI4ZRu1jwrR8WfSWOOAadT7ZSkB8 1EuY8e8Oh/kz2sYVNon/lAZuZHHufitWl+qRV77yla2lYfFijHqep9N/Fk6K69iJ8dEB cdCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788903308; x=1789508108; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=HE1zJOd468NvVHPcCax3V6S6Z0+9RulSQLUiQ0wVkKI=; b=DkLCyK1ElP9qpV+Meic54EqmA2xYdO+mswmwMXuBdHVG2h0IPLSlSlzCf6359Olawl DMKGVWW1TPnI6J3SrwuVTSg+GH9Evsu0rFUTaQ1bh92sGFLAUyqcCMDdoMg/kusIYsaQ wktmlF4ocgZnYkHAqk8FGf5vN4NE1DSgKi3BIMOLHE4YIryWayt1MIt7JKMMLuGL6LjN fjSVkdXqWAowE3fkkN4+yIV73hiTsGPr1YDqXIianWgPSRRM4cVldGdZEsj0FyuqxAFu voCbgZfOii2ulphBoin4vVUUtIGTwsChJhAe+/o3fiaQg+n/WOjrrNxmuP3+cGywJFXx ybVQ== X-Forwarded-Encrypted: i=1; AKwUvBzf5WRi9btVhQ3iEQV6kAExTuAUBL0TzyzsOOl6kKvYzM0rQwO9nrftHD/aAHR+jEhqWmEhlffYEWlNN+w=@vger.kernel.org X-Gm-Message-State: AFuF++kUNIz4l9Y3tIsrTxebsYyXMt1kbrmLikE/iz6jiaf62HicFw42 x7EtuyCMKjmppedzO8fPSb/C+PsYxx3zxI3evvbrr+kMxTynQO3VaaZSZSLtZ/vB34s= X-Gm-Gg: AYBFou13/YFWP6gFGEd2Ocbt6mKkm//NqyC2B+2qMCd/KEdxUnJwza0uclLzmporQUr HohfG0Vmp4I3wXca0S7c+8VUbmqFd2ZDMPyibN3VrgVZ4S3Ft9aRaIqdgEK0HxWivH5paw/YvKR zu0uVlnqQ3ZYzVKRvvfhYA2+8eTTUPYrVfRyDftoOjCrFWms+1OWV7RtK4pUOT73URqgqIybElA 4YMlEMXzTckrFsOyxrVxF8Mp4MgCHBJRsg/ymjmP/nl0x9B/Sc4nOtjbkOACOYaetcv8G3Ud4uR /QDRhLrn1D4oDBKV43QgyvFJCzUFuAn66bRh72nW1iUeey5PJ0SewjJHitBLhbJ4XQ2thpZqQQ/ TTvqs3iv6C3sKa7nLlF5EVLGWoPNNyCZ1AfHiTiKsKzr6urTKzXwQ1qGkwkVQums7et4TC8EuLV ZC5AigdIhjoApwUi//HtgX8D7qIONgUY0n2eHW35uAi9XZBafrlZFaHh+8NR9+78+W45HNoFvK8 U8= X-Received: by 2002:a05:620a:290a:b0:939:ca4:4d5f with SMTP id af79cd13be357-939803240c2mr3342092185a.5.1788903307689; Tue, 08 Sep 2026 14:35:07 -0700 (PDT) Received: from zippy.localdomain ([73.62.185.64]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9397f9f0734sm1250497885a.4.2026.09.08.14.35.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 14:35:07 -0700 (PDT) From: Alex Elder To: bhelgaas@google.com, robh@kernel.org, saravanak@kernel.org Cc: herve.codina@bootlin.com, daniel@riscstar.com, mohd.anwar@oss.qualcomm.com, lorenzo.bianconi@oss.qualcomm.com, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 4/4] PCI: of: introduce of_pci_verify_node() Date: Tue, 8 Sep 2026 16:34:58 -0500 Message-ID: <20260908213459.2519059-5-elder@riscstar.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260908213459.2519059-1-elder@riscstar.com> References: <20260908213459.2519059-1-elder@riscstar.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Commit 407d1a51921e9 ("PCI: Create device tree node for bridge") linked the PCI enumeration process together with devicetree, creating a devicetree node for discovered PCI bridges. Its successor commit ae9813db1dc5a ("PCI: Add quirks to generate device tree node for Xilinx Alveo U50") shows how to use a PCI final fixup quirk to also create a devicetree node for a non-bridge PCI device. These changes allowed devicetree overlays to describe components downstream of a PCI device, by providing a place to attach the overlay. Note that the dynamic devicetree node is only created if the device didn't already have an assigned node. Later, commit aa7b4bbcb3a1d ("arm64: dts: qcom: qcs6490-rb3gen2: Add TC9563 PCIe switch node") *pre-defined* devicetree nodes to represent the PCI device nodes that would (also) be discovered via the PCI enumeration process. The devicetree node in this case is created with the content from the DTS file. So when a (host) bridge is done being initialized during PCI enumeration, no node is dynamically created (the commits mentioned above do not apply). Ideally, any pre-defined PCI devicetree node would contain exactly the same information as whatever the dynamic creation process would produce (though it could include more). However that is not the case for the pre-defined Qualcomm RB3gen2 nodes. And in particular, the endpoint (function) nodes include this property: device_type =3D "pci"; This is simply wrong; that property is meant only for bridge nodes. Rob Herring requested that a runtime check to be added to spot this specific error, only for non-bridge PCI devices. Herve Codina further suggested we ensure that bridge PCI devices *do* define the device_type property, with value "pci". We also accept "pciex" as the value of the device_type property for bridges. Reviewed-by: Herve Codina Signed-off-by: Alex Elder --- drivers/pci/bus.c | 1 + drivers/pci/of.c | 32 ++++++++++++++++++++++++++++++++ drivers/pci/pci.h | 3 +++ 3 files changed, 36 insertions(+) diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c index 655ed53436d3e..679afbc6d3109 100644 --- a/drivers/pci/bus.c +++ b/drivers/pci/bus.c @@ -351,6 +351,7 @@ void pci_bus_add_device(struct pci_dev *dev) * are not assigned yet for some devices. */ pcibios_bus_add_device(dev); + of_pci_verify_node(dev); pci_fixup_device(pci_fixup_final, dev); if (pci_is_bridge(dev)) of_pci_make_dev_node(dev); diff --git a/drivers/pci/of.c b/drivers/pci/of.c index a51dff91b196d..5a040ed836744 100644 --- a/drivers/pci/of.c +++ b/drivers/pci/of.c @@ -1085,3 +1085,35 @@ int of_pci_get_equalization_presets(struct device *d= ev, return 0; } EXPORT_SYMBOL_GPL(of_pci_get_equalization_presets); + +/** + * of_pci_verify_node - Sanity check some PCI device node properties + * @pdev: The PCI device whose device node is checked + * + * PCI enumeration authoritatively discovers what we need to know about + * a PCI device. A devicetree-based platform will represent a PCI root + * bridge with a node, but otherwise devicetree doesn't typically include + * many PCI nodes. Where such nodes do exist, experience has shown that + * the "device_type" property is sometimes wrong, so warn about that. + */ +void of_pci_verify_node(struct pci_dev *pdev) +{ + struct device_node *np =3D pci_device_to_OF_node(pdev); + bool device_is_bridge; + bool device_type_pci; + + /* Nothing to check if there's no pre-existing devicetree node */ + if (!np) + return; + + device_is_bridge =3D pci_is_bridge(pdev); + device_type_pci =3D of_node_is_type(np, "pci") || + of_node_is_type(np, "pciex"); + + /* Bridges should have device type "pci"; endpoints should not */ + if (device_is_bridge =3D=3D device_type_pci) + return; + + dev_err(&pdev->dev, "PCI %s have \"pci\" device_type property\n", + device_is_bridge ? "bridge should" : "endpoint should not"); +} diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index ba3c3fddddc23..2e33d3bd4b0ba 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -1253,6 +1253,7 @@ bool of_pci_supply_present(struct device_node *np); int of_pci_get_equalization_presets(struct device *dev, struct pci_eq_presets *presets, int num_lanes); +void of_pci_verify_node(struct pci_dev *pdev); #else static inline int of_get_pci_domain_nr(struct device_node *node) @@ -1308,6 +1309,8 @@ static inline int of_pci_get_equalization_presets(str= uct device *dev, =20 return 0; } + +static inline void of_pci_verify_node(struct pci_dev *pdev) { } #endif /* CONFIG_OF */ =20 struct of_changeset; --=20 2.53.0