[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <56c1d551-a18d-8ee0-eb3c-b2b7d5341161@semihalf.com>
Date: Tue, 22 Nov 2016 13:32:12 +0100
From: Tomasz Nowicki <tn@...ihalf.com>
To: Dongdong Liu <liudongdong3@...wei.com>, helgaas@...nel.org,
arnd@...db.de, rafael@...nel.org, Lorenzo.Pieralisi@....com,
wangzhou1@...ilicon.com, pratyush.anand@...il.com
Cc: linux-pci@...r.kernel.org, linux-acpi@...r.kernel.org,
linux-kernel@...r.kernel.org, jcm@...hat.com,
gabriele.paoloni@...wei.com, charles.chenxin@...wei.com,
hanjun.guo@...aro.org, linuxarm@...wei.com
Subject: Re: [PATCH V6 1/2] PCI/ACPI: Provide acpi_get_rc_resources() for
ARM64 platform
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@...wei.com>
> Signed-off-by: Tomasz Nowicki <tn@...ihalf.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
Powered by blists - more mailing lists