All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Tomasz Nowicki <tn@semihalf.com>
Cc: helgaas@kernel.org, arnd@arndb.de, will.deacon@arm.com,
	catalin.marinas@arm.com, rafael@kernel.org,
	hanjun.guo@linaro.org, okaya@codeaurora.org,
	jchandra@broadcom.com, robert.richter@caviumnetworks.com,
	mw@semihalf.com, Liviu.Dudau@arm.com, ddaney@caviumnetworks.com,
	wangyijing@huawei.com, Suravee.Suthikulpanit@amd.com,
	msalter@redhat.com, linux-pci@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-acpi@vger.kernel.org,
	linux-kernel@vger.kernel.org, linaro-acpi@lists.linaro.org,
	jcm@redhat.com, andrea.gallo@linaro.org, dhdang@apm.com,
	jeremy.linton@arm.com, liudongdong3@huawei.com,
	cov@codeaurora.org
Subject: Re: [PATCH V9 10/11] ARM64/PCI: Implement ACPI low-level calls to access PCI_Config region from AML
Date: Fri, 10 Jun 2016 21:54:23 +0100	[thread overview]
Message-ID: <20160610205423.GC24178@red-moon> (raw)
In-Reply-To: <1465588519-11334-11-git-send-email-tn@semihalf.com>

On Fri, Jun 10, 2016 at 09:55:18PM +0200, Tomasz Nowicki wrote:
> ACPI spec6.1 - chapter: 5.5.2.4 defines OperationRegion (Declare Operation
> Region). Following the spec: " [...] An Operation Region is a specific
> region of operation within an address space that is declared as a subset
> of the entire address space using a starting address (offset) and a length.
> Control methods must have exclusive access to any address accessed via
> fields declared in Operation Regions. [...]".
> 
> OperationRegion allows to declare various of operation region address space

s/of//

> identifiers including PCI_Config. PCI_Config is meant to access PCI
> configuration space from the ASL. So every time ASL opcode operates
> on PCI_Config space region, ASL interpreter dispatches accesses to OS
> low-level calls - raw_pci_write() and raw_pci_read() for Linux - so-called
> ACPI RAW accessors.
> 
> In order to support PCI_Config operation region, implement mentioned
> raw_pci_write() and raw_pci_read() calls so they find associated bus
> and call read/write ops.
> 
> Waiting for clarification in the ACPI specifications in relation
> to PCI_Config space handling before PCI bus enumeration is completed,
> current code does not support PCI_Config region accesses before PCI bus
> enumeration whilst providing full AML PCI_Config access availability
> when the PCI bus enumeration is completed by the kernel so that
> RAW accessors can look-up PCI operations through the struct pci_bus
> associated with a PCI bus.
> 
> Signed-off-by: Tomasz Nowicki <tn@semihalf.com>
> Signed-off-by: Jayachandran C <jchandra@broadcom.com>

Reviewed-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

> ---
>  arch/arm64/kernel/pci.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c
> index b3b8a2c..328f857 100644
> --- a/arch/arm64/kernel/pci.c
> +++ b/arch/arm64/kernel/pci.c
> @@ -71,13 +71,21 @@ int pcibios_alloc_irq(struct pci_dev *dev)
>  int raw_pci_read(unsigned int domain, unsigned int bus,
>  		  unsigned int devfn, int reg, int len, u32 *val)
>  {
> -	return -ENXIO;
> +	struct pci_bus *b = pci_find_bus(domain, bus);
> +
> +	if (!b)
> +		return PCIBIOS_DEVICE_NOT_FOUND;
> +	return b->ops->read(b, devfn, reg, len, val);
>  }
>  
>  int raw_pci_write(unsigned int domain, unsigned int bus,
>  		unsigned int devfn, int reg, int len, u32 val)
>  {
> -	return -ENXIO;
> +	struct pci_bus *b = pci_find_bus(domain, bus);
> +
> +	if (!b)
> +		return PCIBIOS_DEVICE_NOT_FOUND;
> +	return b->ops->write(b, devfn, reg, len, val);
>  }
>  
>  #ifdef CONFIG_NUMA
> -- 
> 1.9.1
> 

WARNING: multiple messages have this Message-ID (diff)
From: lorenzo.pieralisi@arm.com (Lorenzo Pieralisi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V9 10/11] ARM64/PCI: Implement ACPI low-level calls to access PCI_Config region from AML
Date: Fri, 10 Jun 2016 21:54:23 +0100	[thread overview]
Message-ID: <20160610205423.GC24178@red-moon> (raw)
In-Reply-To: <1465588519-11334-11-git-send-email-tn@semihalf.com>

On Fri, Jun 10, 2016 at 09:55:18PM +0200, Tomasz Nowicki wrote:
> ACPI spec6.1 - chapter: 5.5.2.4 defines OperationRegion (Declare Operation
> Region). Following the spec: " [...] An Operation Region is a specific
> region of operation within an address space that is declared as a subset
> of the entire address space using a starting address (offset) and a length.
> Control methods must have exclusive access to any address accessed via
> fields declared in Operation Regions. [...]".
> 
> OperationRegion allows to declare various of operation region address space

s/of//

> identifiers including PCI_Config. PCI_Config is meant to access PCI
> configuration space from the ASL. So every time ASL opcode operates
> on PCI_Config space region, ASL interpreter dispatches accesses to OS
> low-level calls - raw_pci_write() and raw_pci_read() for Linux - so-called
> ACPI RAW accessors.
> 
> In order to support PCI_Config operation region, implement mentioned
> raw_pci_write() and raw_pci_read() calls so they find associated bus
> and call read/write ops.
> 
> Waiting for clarification in the ACPI specifications in relation
> to PCI_Config space handling before PCI bus enumeration is completed,
> current code does not support PCI_Config region accesses before PCI bus
> enumeration whilst providing full AML PCI_Config access availability
> when the PCI bus enumeration is completed by the kernel so that
> RAW accessors can look-up PCI operations through the struct pci_bus
> associated with a PCI bus.
> 
> Signed-off-by: Tomasz Nowicki <tn@semihalf.com>
> Signed-off-by: Jayachandran C <jchandra@broadcom.com>

Reviewed-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

> ---
>  arch/arm64/kernel/pci.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c
> index b3b8a2c..328f857 100644
> --- a/arch/arm64/kernel/pci.c
> +++ b/arch/arm64/kernel/pci.c
> @@ -71,13 +71,21 @@ int pcibios_alloc_irq(struct pci_dev *dev)
>  int raw_pci_read(unsigned int domain, unsigned int bus,
>  		  unsigned int devfn, int reg, int len, u32 *val)
>  {
> -	return -ENXIO;
> +	struct pci_bus *b = pci_find_bus(domain, bus);
> +
> +	if (!b)
> +		return PCIBIOS_DEVICE_NOT_FOUND;
> +	return b->ops->read(b, devfn, reg, len, val);
>  }
>  
>  int raw_pci_write(unsigned int domain, unsigned int bus,
>  		unsigned int devfn, int reg, int len, u32 val)
>  {
> -	return -ENXIO;
> +	struct pci_bus *b = pci_find_bus(domain, bus);
> +
> +	if (!b)
> +		return PCIBIOS_DEVICE_NOT_FOUND;
> +	return b->ops->write(b, devfn, reg, len, val);
>  }
>  
>  #ifdef CONFIG_NUMA
> -- 
> 1.9.1
> 

  reply	other threads:[~2016-06-10 20:53 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-10 19:55 [PATCH V9 00/11] Support for ARM64 ACPI based PCI host controller Tomasz Nowicki
2016-06-10 19:55 ` Tomasz Nowicki
2016-06-10 19:55 ` [PATCH V9 01/11] PCI/ECAM: Move ecam.h to linux/include/pci-ecam.h Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 19:55 ` [PATCH V9 02/11] PCI/ECAM: Add parent device field to pci_config_window Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 19:55 ` [PATCH V9 03/11] PCI: Add new function to unmap IO resources Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 19:55 ` [PATCH V9 04/11] ACPI/PCI: Support IO resources when parsing PCI host bridge resources Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 19:55 ` [PATCH V9 05/11] ACPI/PCI: Add generic MCFG table handling Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 23:25   ` Bjorn Helgaas
2016-06-10 23:25     ` Bjorn Helgaas
2016-06-10 19:55 ` [PATCH V9 06/11] PCI: Refactor generic bus domain assignment Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 20:50   ` Lorenzo Pieralisi
2016-06-10 20:50     ` Lorenzo Pieralisi
2016-06-10 19:55 ` [PATCH V9 07/11] PCI: Factor DT specific pci_bus_find_domain_nr() code out Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 20:51   ` Lorenzo Pieralisi
2016-06-10 20:51     ` Lorenzo Pieralisi
2016-06-10 19:55 ` [PATCH V9 08/11] ARM64/PCI: Add ACPI hook to assign domain number Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 19:55 ` [PATCH V9 09/11] ARM64/PCI: ACPI support for legacy IRQs parsing and consolidation with DT code Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 23:36   ` Bjorn Helgaas
2016-06-10 23:36     ` Bjorn Helgaas
2016-06-13 10:00     ` Tomasz Nowicki
2016-06-13 10:00       ` Tomasz Nowicki
2016-06-13 10:40     ` Lorenzo Pieralisi
2016-06-13 10:40       ` Lorenzo Pieralisi
2016-06-13 15:56       ` Liviu.Dudau
2016-06-13 15:56         ` Liviu.Dudau at arm.com
2016-06-13 20:01       ` Duc Dang
2016-07-05  4:36         ` Duc Dang
2016-06-13 20:01         ` Duc Dang
2016-06-14  9:30         ` Lorenzo Pieralisi
2016-06-14  9:30           ` Lorenzo Pieralisi
2016-06-14  9:30           ` Lorenzo Pieralisi
2016-06-10 19:55 ` [PATCH V9 10/11] ARM64/PCI: Implement ACPI low-level calls to access PCI_Config region from AML Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-06-10 20:54   ` Lorenzo Pieralisi [this message]
2016-06-10 20:54     ` Lorenzo Pieralisi
2016-06-10 19:55 ` [PATCH V9 11/11] ARM64/PCI: Support for ACPI based PCI host controller Tomasz Nowicki
2016-06-10 19:55   ` Tomasz Nowicki
2016-11-22 23:13   ` Bjorn Helgaas
2016-11-22 23:13     ` Bjorn Helgaas
2016-11-22 23:13     ` Bjorn Helgaas
2016-11-23 11:21     ` Tomasz Nowicki
2016-11-23 11:21       ` Tomasz Nowicki
2016-11-23 18:22       ` Bjorn Helgaas
2016-11-23 18:22         ` Bjorn Helgaas
2016-11-24 11:10         ` Tomasz Nowicki
2016-11-24 11:10           ` Tomasz Nowicki
2016-06-10 23:41 ` [PATCH V9 00/11] Support for ARM64 " Bjorn Helgaas
2016-06-10 23:41   ` Bjorn Helgaas
2016-06-10 23:50   ` Jon Masters
2016-06-10 23:50     ` Jon Masters
2016-06-10 23:50     ` Jon Masters
2016-06-10 23:58   ` [Linaro-acpi] " Jon Masters
2016-06-10 23:58     ` Jon Masters
2016-06-11  9:51   ` Tomasz Nowicki
2016-06-11  9:51     ` Tomasz Nowicki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160610205423.GC24178@red-moon \
    --to=lorenzo.pieralisi@arm.com \
    --cc=Liviu.Dudau@arm.com \
    --cc=Suravee.Suthikulpanit@amd.com \
    --cc=andrea.gallo@linaro.org \
    --cc=arnd@arndb.de \
    --cc=catalin.marinas@arm.com \
    --cc=cov@codeaurora.org \
    --cc=ddaney@caviumnetworks.com \
    --cc=dhdang@apm.com \
    --cc=hanjun.guo@linaro.org \
    --cc=helgaas@kernel.org \
    --cc=jchandra@broadcom.com \
    --cc=jcm@redhat.com \
    --cc=jeremy.linton@arm.com \
    --cc=linaro-acpi@lists.linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=liudongdong3@huawei.com \
    --cc=msalter@redhat.com \
    --cc=mw@semihalf.com \
    --cc=okaya@codeaurora.org \
    --cc=rafael@kernel.org \
    --cc=robert.richter@caviumnetworks.com \
    --cc=tn@semihalf.com \
    --cc=wangyijing@huawei.com \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.