From: Amey Narkhede <ameynarkhede03@gmail.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: alex.williamson@redhat.com,
Raphael Norwitz <raphael.norwitz@nutanix.com>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
kw@linux.com, Shanker Donthineni <sdonthineni@nvidia.com>,
Sinan Kaya <okaya@kernel.org>, Len Brown <lenb@kernel.org>,
"Rafael J . Wysocki" <rjw@rjwysocki.net>
Subject: [PATCH v9 6/8] PCI: Setup ACPI fwnode early and at the same time with OF
Date: Mon, 5 Jul 2021 19:51:36 +0530 [thread overview]
Message-ID: <20210705142138.2651-7-ameynarkhede03@gmail.com> (raw)
In-Reply-To: <20210705142138.2651-1-ameynarkhede03@gmail.com>
From: Shanker Donthineni <sdonthineni@nvidia.com>
The pci_dev objects are created through two mechanisms 1) during PCI
bus scan and 2) from I/O Virtualization. The fwnode in pci_dev object
is being set at different places depends on the type of firmware used,
device creation mechanism, and acpi_pci_bridge_d3() WAR.
The software features which have a dependency on ACPI fwnode properties
and need to be handled before device_add() will not work. One use case,
the software has to check the existence of _RST method to support ACPI
based reset method.
This patch does the two changes in order to provide fwnode consistently.
- Set ACPI and OF fwnodes from pci_setup_device().
- Remove pci_set_acpi_fwnode() in acpi_pci_bridge_d3().
After this patch, ACPI/OF firmware properties are visible at the same
time during the early stage of pci_dev setup. And also call sites should
be able to use firmware agnostic functions device_property_xxx() for the
early PCI quirks in the future.
Signed-off-by: Shanker Donthineni <sdonthineni@nvidia.com>
---
drivers/pci/pci-acpi.c | 1 -
drivers/pci/probe.c | 7 ++++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
index eaddbf701..dae021322 100644
--- a/drivers/pci/pci-acpi.c
+++ b/drivers/pci/pci-acpi.c
@@ -952,7 +952,6 @@ static bool acpi_pci_bridge_d3(struct pci_dev *dev)
return false;
/* Assume D3 support if the bridge is power-manageable by ACPI. */
- pci_set_acpi_fwnode(dev);
adev = ACPI_COMPANION(&dev->dev);
if (adev && acpi_device_power_manageable(adev))
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 221a20415..ba0137322 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1790,6 +1790,9 @@ int pci_setup_device(struct pci_dev *dev)
dev->error_state = pci_channel_io_normal;
set_pcie_port_type(dev);
+ pci_set_of_node(dev);
+ pci_set_acpi_fwnode(dev);
+
pci_dev_assign_slot(dev);
/*
@@ -1925,6 +1928,7 @@ int pci_setup_device(struct pci_dev *dev)
default: /* unknown header */
pci_err(dev, "unknown header type %02x, ignoring device\n",
dev->hdr_type);
+ pci_release_of_node(dev);
return -EIO;
bad:
@@ -2352,10 +2356,7 @@ static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
dev->vendor = l & 0xffff;
dev->device = (l >> 16) & 0xffff;
- pci_set_of_node(dev);
-
if (pci_setup_device(dev)) {
- pci_release_of_node(dev);
pci_bus_put(dev->bus);
kfree(dev);
return NULL;
--
2.32.0
next prev parent reply other threads:[~2021-07-05 14:22 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-05 14:21 [PATCH v9 0/8] Expose and manage PCI device reset Amey Narkhede
2021-07-05 14:21 ` [PATCH v9 1/8] PCI: Add pcie_reset_flr to follow calling convention of other reset methods Amey Narkhede
2021-07-05 14:37 ` Amey Narkhede
2021-07-08 20:24 ` Alex Williamson
2021-07-11 16:40 ` Raphael Norwitz
2021-07-05 14:21 ` [PATCH v9 2/8] PCI: Add new array for keeping track of ordering of " Amey Narkhede
2021-07-11 16:42 ` Raphael Norwitz
2021-07-14 13:13 ` Shanker R Donthineni
2021-07-05 14:21 ` [PATCH v9 3/8] PCI: Remove reset_fn field from pci_dev Amey Narkhede
2021-07-05 14:21 ` [PATCH v9 4/8] PCI/sysfs: Allow userspace to query and set device reset mechanism Amey Narkhede
2021-07-06 5:16 ` Leon Romanovsky
2021-07-11 16:51 ` Raphael Norwitz
2021-07-14 11:59 ` Amey Narkhede
2021-07-05 14:21 ` [PATCH v9 5/8] PCI: Define a function to set ACPI_COMPANION in pci_dev Amey Narkhede
2021-07-05 14:21 ` Amey Narkhede [this message]
2021-07-05 14:21 ` [PATCH v9 7/8] PCI: Add support for ACPI _RST reset method Amey Narkhede
2021-07-05 14:21 ` [PATCH v9 8/8] PCI: Change the type of probe argument in reset functions Amey Narkhede
2021-07-05 23:39 ` kernel test robot
2021-07-05 23:39 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210705142138.2651-7-ameynarkhede03@gmail.com \
--to=ameynarkhede03@gmail.com \
--cc=alex.williamson@redhat.com \
--cc=bhelgaas@google.com \
--cc=kw@linux.com \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=okaya@kernel.org \
--cc=raphael.norwitz@nutanix.com \
--cc=rjw@rjwysocki.net \
--cc=sdonthineni@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.