lkml.org 
[lkml]   [2015]   [Jul]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v3 47/51] PCI: Claim fixed resource during remove/rescan path
Date
We need to reserve them before pci_bus_add().

During driver loading kernel will check if those reource get reserved.

On remove/rescan path, we will leave those fixed resource
not reserved, as we don't call pcibios_resource_survery() before
pci_assign_unassigned_bus_resources(), and that is intentional
for us to get new resources for rescan.
We do have example to use rescan to make device get resource
allocated.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
drivers/pci/quirks.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index e9fd0e9..9efa983 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -324,6 +324,23 @@ static void quirk_s3_64M(struct pci_dev *dev)
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M);

+/* for pci remove and rescan */
+static void quirk_allocate_fixed(struct pci_dev *dev)
+{
+ int i;
+ for (i = 0; i < PCI_NUM_RESOURCES; i++) {
+ struct resource *r = &dev->resource[i];
+
+ if (r->parent ||
+ !(r->flags & IORESOURCE_PCI_FIXED) ||
+ !(r->flags & (IORESOURCE_IO | IORESOURCE_MEM)))
+ continue;
+
+ pci_claim_resource(dev, i);
+ }
+}
+DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, quirk_allocate_fixed);
+
static void quirk_io(struct pci_dev *dev, int pos, unsigned size,
const char *name)
{
--
1.8.4.5


\
 
 \ /
  Last update: 2015-07-28 02:01    [W:0.654 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site