]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
PCI: Move struct pci_devres.pinned bit to struct pci_dev
authorPhilipp Stanner <pstanner@redhat.com>
Thu, 13 Jun 2024 11:50:21 +0000 (13:50 +0200)
committerKrzysztof Wilczyński <kwilczynski@kernel.org>
Wed, 10 Jul 2024 04:20:10 +0000 (04:20 +0000)
The bit describing whether the PCI device is currently pinned is stored
in struct pci_devres. To clean up and simplify the PCI devres API, it's
better if this information is stored in struct pci_dev.

This will later permit simplifying pcim_enable_device().

Move the 'pinned' boolean bit to struct pci_dev.

Restructure bits in struct pci_dev so the pm / pme fields are next to
each other.

Link: https://lore.kernel.org/r/20240613115032.29098-9-pstanner@redhat.com
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/devres.c
drivers/pci/pci.h
include/linux/pci.h

index 4ac662efc6acb316bb1d5d50e25c5f37ccfa2148..31ebda1db1b0b3b8d417f0d82095df7384861e3c 100644 (file)
@@ -407,7 +407,7 @@ static void pcim_release(struct device *gendev, void *res)
        if (this->restore_intx)
                pci_intx(dev, this->orig_intx);
 
-       if (pci_is_enabled(dev) && !this->pinned)
+       if (pci_is_enabled(dev) && !dev->pinned)
                pci_disable_device(dev);
 }
 
@@ -463,18 +463,12 @@ EXPORT_SYMBOL(pcim_enable_device);
  * pcim_pin_device - Pin managed PCI device
  * @pdev: PCI device to pin
  *
- * Pin managed PCI device @pdev.  Pinned device won't be disabled on
- * driver detach.  @pdev must have been enabled with
- * pcim_enable_device().
+ * Pin managed PCI device @pdev. Pinned device won't be disabled on driver
+ * detach. @pdev must have been enabled with pcim_enable_device().
  */
 void pcim_pin_device(struct pci_dev *pdev)
 {
-       struct pci_devres *dr;
-
-       dr = find_pci_dr(pdev);
-       WARN_ON(!dr || !pci_is_enabled(pdev));
-       if (dr)
-               dr->pinned = 1;
+       pdev->pinned = true;
 }
 EXPORT_SYMBOL(pcim_pin_device);
 
index 4f220bbbd4ae425994434fb0c1ead0a68e16de64..eb1eb4c7c34aefcd8bedff41dcb59ca0ae1afd48 100644 (file)
@@ -821,7 +821,6 @@ static inline pci_power_t mid_pci_get_power_state(struct pci_dev *pdev)
  * then remove them from here.
  */
 struct pci_devres {
-       unsigned int pinned:1;
        unsigned int orig_intx:1;
        unsigned int restore_intx:1;
        unsigned int mwi:1;
index fb004fd4e8890537e002e0181427487c9e021732..0c19f0717899f41b61752e8926d61232d6c632b4 100644 (file)
@@ -367,10 +367,11 @@ struct pci_dev {
                                           this is D0-D3, D0 being fully
                                           functional, and D3 being off. */
        u8              pm_cap;         /* PM capability offset */
-       unsigned int    imm_ready:1;    /* Supports Immediate Readiness */
        unsigned int    pme_support:5;  /* Bitmask of states from which PME#
                                           can be generated */
        unsigned int    pme_poll:1;     /* Poll device's PME status bit */
+       unsigned int    pinned:1;       /* Whether this dev is pinned */
+       unsigned int    imm_ready:1;    /* Supports Immediate Readiness */
        unsigned int    d1_support:1;   /* Low power state D1 is supported */
        unsigned int    d2_support:1;   /* Low power state D2 is supported */
        unsigned int    no_d1d2:1;      /* D1 and D2 are forbidden */