Messages in this thread | | | Subject | Re: [PATCH V6 1/2] PCI/ACPI: Provide acpi_get_rc_resources() for ARM64 platform | From | Tomasz Nowicki <> | Date | Tue, 22 Nov 2016 13:32:12 +0100 |
| |
Hi Dongdong,
On 22.11.2016 13:08, Dongdong Liu wrote: > The acpi_get_rc_resources() is used to get the RC register address that can > not be described in MCFG. It takes the _HID&segment to look for and returns > the RC address resource. Use PNP0C02 devices to describe such RC address > resource. Use _UID to match segment to tell which root bus the PNP0C02 > resource belong to. > > Signed-off-by: Dongdong Liu <liudongdong3@huawei.com> > Signed-off-by: Tomasz Nowicki <tn@semihalf.com> > --- > drivers/pci/pci-acpi.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++ > drivers/pci/pci.h | 4 +++ > 2 files changed, 73 insertions(+) > > diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c > index d966d47..76fd6f4 100644 > --- a/drivers/pci/pci-acpi.c > +++ b/drivers/pci/pci-acpi.c > @@ -29,6 +29,75 @@ > 0x91, 0x17, 0xea, 0x4d, 0x19, 0xc3, 0x43, 0x4d > }; > > +#ifdef CONFIG_ARM64 > +static struct resource *acpi_get_rc_addr(struct acpi_device *adev) > +{ > + struct resource_entry *entry; > + struct list_head list; > + unsigned long flags; > + int ret; > + struct resource *res; > + > + INIT_LIST_HEAD(&list); > + flags = IORESOURCE_MEM; > + ret = acpi_dev_get_resources(adev, &list, > + acpi_dev_filter_resource_type_cb, > + (void *) flags); > + if (ret <= 0) > + return NULL; > + > + entry = list_first_entry(&list, struct resource_entry, node); > + res = entry->res;
You return "res" memory pointer and...
> + acpi_dev_free_resource_list(&list);
free it here.
> + return res; > +}
We either allocate memory for res here or get it from the caller.
Tomasz
| |