diff options
author | Philipp Stanner <pstanner@redhat.com> | 2024-01-31 10:00:23 +0100 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2024-02-12 10:36:17 -0600 |
commit | 815a3909ead7440e2827042e5ec618f4396f022c (patch) | |
tree | 0ab07a4035ccd6f8536aae7918d535f4fe111698 /drivers/pci/pci.h | |
parent | acc2364fe661069637c60ed5bbd32ea2a2c5ef61 (diff) | |
download | lwn-815a3909ead7440e2827042e5ec618f4396f022c.tar.gz lwn-815a3909ead7440e2827042e5ec618f4396f022c.zip |
PCI: Move devres code from pci.c to devres.c
The file pci.c is very large and contains a number of devres functions.
These functions should now reside in devres.c.
Move as much devres-specific code from pci.c to devres.c as possible.
There are a few callers left in pci.c that do devres operations. These
should be ported in the future. Add corresponding TODOs.
The reason they are not moved right now in this commit is that PCI's devres
currently implements a sort of "hybrid-mode": pci_request_region(), for
instance, does not have a corresponding pcim_ equivalent, yet. Instead, the
function can be made managed by previously calling pcim_enable_device()
(instead of pci_enable_device()). This makes it unreasonable to move
pci_request_region() to devres.c. Moving the functions would require
changes to PCI's API and is, therefore, left for future work.
In summary, this commit serves as a preparation step for a following
patch series that will cleanly separate the PCI's managed and unmanaged
API.
Link: https://lore.kernel.org/r/20240131090023.12331-5-pstanner@redhat.com
Suggested-by: Danilo Krummrich <dakr@redhat.com>
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/pci/pci.h')
-rw-r--r-- | drivers/pci/pci.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 2336a8d1edab..f70066e67d52 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -798,6 +798,27 @@ static inline pci_power_t mid_pci_get_power_state(struct pci_dev *pdev) #endif /* + * Managed PCI resources. This manages device on/off, INTx/MSI/MSI-X + * on/off and BAR regions. pci_dev itself records MSI/MSI-X status, so + * there's no need to track it separately. pci_devres is initialized + * when a device is enabled using managed PCI device enable interface. + * + * TODO: Struct pci_devres and find_pci_dr() only need to be here because + * they're used in pci.c. Port or move these functions to devres.c and + * then remove them from here. + */ +struct pci_devres { + unsigned int enabled:1; + unsigned int pinned:1; + unsigned int orig_intx:1; + unsigned int restore_intx:1; + unsigned int mwi:1; + u32 region_mask; +}; + +struct pci_devres *find_pci_dr(struct pci_dev *pdev); + +/* * Config Address for PCI Configuration Mechanism #1 * * See PCI Local Bus Specification, Revision 3.0, |