From: tn@semihalf•com (Tomasz Nowicki)
To: linux-arm-kernel@lists•infradead.org
Subject: [PATCH V4 15/23] acpi, mcfg: Implement two calls that might be used to inject/remove MCFG region.
Date: Fri, 12 Feb 2016 09:56:54 +0100 [thread overview]
Message-ID: <56BD9E56.5070805@semihalf.com> (raw)
In-Reply-To: <20160210140602.GB25060@red-moon>
On 10.02.2016 15:06, Lorenzo Pieralisi wrote:
> On Thu, Feb 04, 2016 at 06:28:53PM +0100, Tomasz Nowicki wrote:
>> >Lets abstract two calls which allow to inject and remove MCFG regions
>> >which may come from DSDT table. These calls will be used for x86 and ARM64
>> >PCI host bridge driver in the later patches.
>> >
>> >Signed-off-by: Tomasz Nowicki<tn@semihalf•com>
>> >Tested-by: Duc Dang<dhdang@apm•com>
>> >Tested-by: Dongdong Liu<liudongdong3@huawei•com>
>> >Tested-by: Hanjun Guo<hanjun.guo@linaro•org>
>> >Tested-by: Graeme Gregory<graeme.gregory@linaro•org>
>> >Tested-by: Sinan Kaya<okaya@codeaurora•org>
>> >---
>> > drivers/acpi/mcfg.c | 38 ++++++++++++++++++++++++++++++++++++++
>> > include/linux/pci-acpi.h | 9 +++++++++
>> > 2 files changed, 47 insertions(+)
>> >
>> >diff --git a/drivers/acpi/mcfg.c b/drivers/acpi/mcfg.c
>> >index 3e1e7be..dca4c4e 100644
>> >--- a/drivers/acpi/mcfg.c
>> >+++ b/drivers/acpi/mcfg.c
>> >@@ -10,6 +10,7 @@
>> > #include <linux/acpi.h>
>> > #include <linux/ecam.h>
>> > #include <linux/pci.h>
>> >+#include <linux/pci-acpi.h>
>> >
>> > #define PREFIX "MCFG: "
>> >
>> >@@ -77,6 +78,43 @@ int __init acpi_parse_mcfg(struct acpi_table_header *header)
>> > return 0;
>> > }
>> >
>> >+int pci_mmcfg_setup_map(struct acpi_pci_root_info *ci)
>> >+{
>> >+ struct pci_mmcfg_region *cfg;
>> >+ struct acpi_pci_root *root;
>> >+ int seg, start, end, err;
>> >+
>> >+ root = ci->root;
>> >+ seg = root->segment;
>> >+ start = root->secondary.start;
>> >+ end = root->secondary.end;
>> >+
>> >+ cfg = pci_mmconfig_lookup(seg, start);
>> >+ if (cfg)
>> >+ return 0;
>> >+
>> >+ cfg = pci_mmconfig_alloc(seg, start, end, root->mcfg_addr);
>> >+ if (!cfg)
>> >+ return -ENOMEM;
>> >+
>> >+ err = pci_mmconfig_inject(cfg);
>> >+ return err;
> When you integrate Jayachandran's patch this whole function will
> become a pci_mmconfig_insert() and that's where hot_added should
> be set.
>
>> >+}
>> >+
>> >+void pci_mmcfg_teardown_map(struct acpi_pci_root_info *ci)
>> >+{
>> >+ struct acpi_pci_root *root = ci->root;
>> >+ struct pci_mmcfg_region *cfg;
>> >+
>> >+ cfg = pci_mmconfig_lookup(root->segment, root->secondary.start);
>> >+ if (!cfg)
>> >+ return;
>> >+
>> >+ if (cfg->hot_added)
> Move the hot_added check in pci_mmconfig_delete() (that does the look
> up again), we do not want to carry out pci_mmconfig_lookup only to
> check that flag here (and we miss rcu locking for the look-up BTW).
Makes sense to me, I will follow your suggestion.
Thanks,
Tomasz
next prev parent reply other threads:[~2016-02-12 8:56 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-04 17:28 [PATCH V4 00/23] MMCONFIG refactoring and support for ARM64 PCI hostbridge init based on ACPI Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 01/23] x86, pci: Reorder logic of pci_mmconfig_insert() function Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 02/23] x86, pci, acpi: Move arch-agnostic MMCONFIG (aka ECAM) and ACPI code out of arch/x86/ directory Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 03/23] pci, acpi, mcfg: Provide generic implementation of MCFG code initialization Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 04/23] x86, pci: mmconfig_{32, 64}.c code refactoring - remove code duplication Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 05/23] x86, pci, ecam: mmconfig_64.c becomes default implementation for ECAM driver Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 06/23] XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 07/23] pci, acpi, mcfg: Provide default RAW ACPI PCI config space accessors Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 08/23] arm64, acpi: Use MCFG and empty PCI config space accessors from mcfg.c file Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 09/23] pci, acpi, ecam: Add flag to indicate whether ECAM region was hot added or not Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 10/23] x86, pci: Cleanup platform specific MCFG data by using ECAM hot_added flag Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 11/23] pci, acpi: Move ACPI host bridge device companion assignment to core code Tomasz Nowicki
2016-02-09 18:02 ` Lorenzo Pieralisi
2016-02-10 21:09 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 12/23] x86, ia64, pci: Remove ACPI companion device from platform specific data Tomasz Nowicki
2016-02-09 17:28 ` Lorenzo Pieralisi
2016-02-10 21:21 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 13/23] pci, acpi: Provide generic way to assign bus domain number Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 14/23] x86, ia64: Include acpi_pci_{add|remove}_bus to the default pcibios_{add|remove}_bus implementation Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 15/23] acpi, mcfg: Implement two calls that might be used to inject/remove MCFG region Tomasz Nowicki
2016-02-10 14:06 ` Lorenzo Pieralisi
2016-02-12 8:56 ` Tomasz Nowicki [this message]
2016-02-04 17:28 ` [PATCH V4 16/23] x86, acpi, pci: Use equivalent function from mcfg.c driver Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 17/23] acpi, mcfg: Add default PCI config accessors implementation and initial support for related quirks Tomasz Nowicki
2016-02-29 8:03 ` Jayachandran Chandrashekaran Nair
2016-03-02 10:42 ` Lorenzo Pieralisi
2016-02-04 17:28 ` [PATCH V4 18/23] pci, of: Move the PCI I/O space management to PCI core code Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 19/23] drivers: pci: add generic code to claim bus resources Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 20/23] pci, acpi: Support for ACPI based generic PCI host controller init Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 21/23] pci, acpi: Match PCI config space accessors against platfrom specific quirks Tomasz Nowicki
2016-02-04 17:29 ` [PATCH V4 22/23] arm64, pci, acpi: Assign legacy IRQs once device is enable Tomasz Nowicki
2016-02-11 11:58 ` Lorenzo Pieralisi
2016-02-11 17:17 ` Lorenzo Pieralisi
2016-02-11 18:39 ` Tomasz Nowicki
2016-02-11 18:46 ` Tomasz Nowicki
2016-02-04 17:29 ` [PATCH V4 23/23] arm64, pci, acpi: Start using ACPI based PCI host bridge driver for ARM64 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=56BD9E56.5070805@semihalf.com \
--to=tn@semihalf$(echo .)com \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox