Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1308409

[PATCH V3 13/21] pci, acpi: Provide generic way to assign bus domain number.

From Tomasz Nowicki <tn@semihalf.com>
Newsgroups linux.kernel
Subject [PATCH V3 13/21] pci, acpi: Provide generic way to assign bus domain number.
Date 2016-01-13 14:30 +0100
Message-ID <qQtEU-hT-67@gated-at.bofh.it> (permalink)
References <qQtES-hT-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


As we now have valid PCI host bridge device reference we can
introduce code that is going to find its bus domain number using
ACPI _SEG method.

Note that _SEG method is optional, therefore _SEG absence means
that all PCI buses belong to domain 0.

Signed-off-by: Tomasz Nowicki <tn@semihalf.com>
Reviewed-by: Liviu Dudau <Liviu.Dudau@arm.com>
Tested-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Tested-by: Jeremy Linton <jeremy.linton@arm.com>
---
 drivers/pci/pci.c | 29 +++++++++++++++++++++++++----
 1 file changed, 25 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 7274006..39a985b 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -25,6 +25,7 @@
 #include <linux/device.h>
 #include <linux/pm_runtime.h>
 #include <linux/pci_hotplug.h>
+#include <linux/acpi.h>
 #include <asm-generic/pci-bridge.h>
 #include <asm/setup.h>
 #include <linux/aer.h>
@@ -4796,14 +4797,34 @@ void pci_bus_assign_domain_nr(struct pci_bus *bus, struct device *parent)
 	 * API and update the use_dt_domains value to keep track of method we
 	 * are using to assign domain numbers (use_dt_domains = 0).
 	 *
+	 * IF ACPI, we expect non-DT method (use_dt_domains == -1)
+	 * and call _SEG method for corresponding host bridge device.
+	 * If _SEG method does not exist, following ACPI spec (6.5.6)
+	 * all PCI buses belong to domain 0.
+	 *
 	 * All other combinations imply we have a platform that is trying
-	 * to mix domain numbers obtained from DT and pci_get_new_domain_nr(),
-	 * which is a recipe for domain mishandling and it is prevented by
-	 * invalidating the domain value (domain = -1) and printing a
-	 * corresponding error.
+	 * to mix domain numbers obtained from DT, ACPI and
+	 * pci_get_new_domain_nr(), which is a recipe for domain mishandling and
+	 * it is prevented by invalidating the domain value (domain = -1) and
+	 * printing a corresponding error.
 	 */
+
 	if (domain >= 0 && use_dt_domains) {
 		use_dt_domains = 1;
+#ifdef CONFIG_ACPI
+	} else if (!acpi_disabled && use_dt_domains == -1) {
+		struct acpi_device *acpi_dev = to_acpi_device(parent);
+		unsigned long long segment = 0;
+		acpi_status status;
+
+		status = acpi_evaluate_integer(acpi_dev->handle,
+					       METHOD_NAME__SEG, NULL,
+					       &segment);
+		if (ACPI_FAILURE(status) && status != AE_NOT_FOUND)
+			dev_err(&acpi_dev->dev,  "can't evaluate _SEG\n");
+
+		domain = segment;
+#endif
 	} else if (domain < 0 && use_dt_domains != 1) {
 		use_dt_domains = 0;
 		domain = pci_get_new_domain_nr();
-- 
1.9.1

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI hostbridge init based on ACPI Tomasz Nowicki <tn@semihalf.com> - 2016-01-13 14:30 +0100
  [PATCH V3 18/21] ACPI, PCI: Refine the way to handle translation_offset for ACPI resources Tomasz Nowicki <tn@semihalf.com> - 2016-01-13 14:30 +0100
    Re: [PATCH V3 18/21] ACPI, PCI: Refine the way to handle  translation_offset for ACPI resources Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2016-01-14 13:20 +0100
  [PATCH V3 02/21] x86, pci, acpi: Move arch-agnostic MMCONFIG (aka ECAM) and ACPI code out of arch/x86/ directory Tomasz Nowicki <tn@semihalf.com> - 2016-01-13 14:30 +0100
  [PATCH V3 17/21] acpi, mcfg: Add default PCI config accessors implementation and initial support for related quirks. Tomasz Nowicki <tn@semihalf.com> - 2016-01-13 14:30 +0100
  [PATCH V3 13/21] pci, acpi: Provide generic way to assign bus domain number. Tomasz Nowicki <tn@semihalf.com> - 2016-01-13 14:30 +0100
  [PATCH V3 06/21] XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y Tomasz Nowicki <tn@semihalf.com> - 2016-01-13 14:30 +0100
  Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Tomasz Nowicki <tn@semihalf.com> - 2016-01-13 16:30 +0100
  Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Sinan Kaya <okaya@codeaurora.org> - 2016-01-13 16:30 +0100
  Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Graeme Gregory <gg@slimlogic.co.uk> - 2016-01-14 14:50 +0100
    Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Mark Salter <msalter@redhat.com> - 2016-01-14 15:10 +0100
      Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Graeme Gregory <gg@slimlogic.co.uk> - 2016-01-14 15:20 +0100
        Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Mark Salter <msalter@redhat.com> - 2016-01-14 15:30 +0100
    Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Catalin Marinas <catalin.marinas@arm.com> - 2016-01-14 15:10 +0100
      Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Mark Salter <msalter@redhat.com> - 2016-01-14 15:20 +0100
        Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Catalin Marinas <catalin.marinas@arm.com> - 2016-01-14 16:00 +0100
          Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Mark Salter <msalter@redhat.com> - 2016-01-14 16:10 +0100
  Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Sinan Kaya <okaya@codeaurora.org> - 2016-01-14 16:40 +0100
    Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2016-01-14 17:20 +0100
      Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Mark Salter <msalter@redhat.com> - 2016-01-14 17:40 +0100
        Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2016-01-14 18:10 +0100
          Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Mark Salter <msalter@redhat.com> - 2016-01-14 18:40 +0100
            Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> - 2016-01-14 19:00 +0100
              Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Mark Salter <msalter@redhat.com> - 2016-01-14 19:50 +0100
  Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Mark Salter <msalter@redhat.com> - 2016-01-14 16:40 +0100
    Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Jeremy Linton <jeremy.linton@arm.com> - 2016-01-15 00:00 +0100
  Re: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI  hostbridge init based on ACPI Jeremy Linton <jeremy.linton@arm.com> - 2016-01-15 00:00 +0100

csiph-web