lkml.org 
[lkml]   [2015]   [Oct]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 17/60] PCI: Claim fixed resource during remove/rescan path
    Date
    During driver loading kernel will check if resources get reserved.
    so we need to make sure resources get reserved before pci_bus_add().

    On remove/rescan path, we will leave those fixed resource
    not reserved. In that path, 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 need to use rescan to make
    device get resource allocated while ignoring BIOS allocate resource.

    But fixed resources are not allocated via
    pci_assign_unassigned_bus_resources(), so we need to reserve them
    explicitly.

    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 55bb661..e7e86d3 100644
    --- a/drivers/pci/quirks.c
    +++ b/drivers/pci/quirks.c
    @@ -323,6 +323,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-10-09 00:01    [W:4.237 / U:0.320 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site