linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI
@ 2018-03-07  7:39 Jan Kiszka
  2018-03-07  7:39 ` [PATCH v5 1/7] jailhouse: Provide detection for non-x86 systems Jan Kiszka
                   ` (7 more replies)
  0 siblings, 8 replies; 17+ messages in thread
From: Jan Kiszka @ 2018-03-07  7:39 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Bjorn Helgaas
  Cc: x86, Linux Kernel Mailing List, jailhouse-dev, linux-pci,
	virtualization, Andy Shevchenko, Benedikt Spranger,
	Juergen Gross, Mark Rutland, Otavio Pontes, Rob Herring

Basic x86 support [1] for running Linux as secondary Jailhouse [2] guest
is currently pending in the tip tree. This builds on top and enhances
the PCI support for x86 and also ARM guests (ARM[64] does not require
platform patches and works already).

Key elements of this series are:
 - detection of Jailhouse via device tree hypervisor node
 - function-level PCI scan if Jailhouse is detected
 - MMCONFIG support for x86 guests

As most changes affect x86, I would suggest to route the series also via
tip after the necessary acks are collected.

Changes in v5:
 - fix build breakage of patch 6 on i386

Changes in v4:
 - slit up Kconfig changes
 - respect pcibios_last_bus during mmconfig setup
 - cosmetic changes requested by Andy

Changes in v3:
 - avoided duplicate scans of PCI functions under Jailhouse
 - reformated PCI_MMCONFIG condition and rephrase related commit log

Changes in v2:
 - adjusted commit log and include ordering in patch 2
 - rebased over Linus master

Jan

[1] https://lkml.org/lkml/2017/11/27/125
[2] http://jailhouse-project.org

CC: Benedikt Spranger <b.spranger@linutronix.de>
CC: Juergen Gross <jgross@suse.com>
CC: Mark Rutland <mark.rutland@arm.com>
CC: Otavio Pontes <otavio.pontes@intel.com>
CC: Rob Herring <robh+dt@kernel.org>

Jan Kiszka (6):
  jailhouse: Provide detection for non-x86 systems
  PCI: Scan all functions when running over Jailhouse
  x86: Align x86_64 PCI_MMCONFIG with 32-bit variant
  x86: Consolidate PCI_MMCONFIG configs
  x86/jailhouse: Allow to use PCI_MMCONFIG without ACPI
  MAINTAINERS: Add entry for Jailhouse

Otavio Pontes (1):
  x86/jailhouse: Enable PCI mmconfig access in inmates

 Documentation/devicetree/bindings/jailhouse.txt |  8 ++++++++
 MAINTAINERS                                     |  7 +++++++
 arch/x86/Kconfig                                | 12 +++++++-----
 arch/x86/include/asm/jailhouse_para.h           |  2 +-
 arch/x86/include/asm/pci_x86.h                  |  2 ++
 arch/x86/kernel/Makefile                        |  2 +-
 arch/x86/kernel/cpu/amd.c                       |  2 +-
 arch/x86/kernel/jailhouse.c                     |  8 ++++++++
 arch/x86/pci/legacy.c                           |  4 +++-
 arch/x86/pci/mmconfig-shared.c                  |  4 ++--
 drivers/pci/probe.c                             | 22 +++++++++++++++++++---
 include/linux/hypervisor.h                      | 17 +++++++++++++++--
 12 files changed, 74 insertions(+), 16 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/jailhouse.txt

-- 
2.13.6

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v5 1/7] jailhouse: Provide detection for non-x86 systems
  2018-03-07  7:39 [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Jan Kiszka
@ 2018-03-07  7:39 ` Jan Kiszka
  2018-03-08 11:33   ` [tip:x86/platform] " tip-bot for Jan Kiszka
  2018-03-07  7:39 ` [PATCH v5 2/7] PCI: Scan all functions when running over Jailhouse Jan Kiszka
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 17+ messages in thread
From: Jan Kiszka @ 2018-03-07  7:39 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Bjorn Helgaas
  Cc: x86, Linux Kernel Mailing List, jailhouse-dev, linux-pci,
	virtualization, Andy Shevchenko, Rob Herring, Mark Rutland,
	Juergen Gross

From: Jan Kiszka <jan.kiszka@siemens.com>

Implement jailhouse_paravirt() via device tree probing on architectures
!= x86. Will be used by the PCI core.

CC: Rob Herring <robh+dt@kernel.org>
CC: Mark Rutland <mark.rutland@arm.com>
CC: Juergen Gross <jgross@suse.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
---
 Documentation/devicetree/bindings/jailhouse.txt |  8 ++++++++
 arch/x86/include/asm/jailhouse_para.h           |  2 +-
 include/linux/hypervisor.h                      | 17 +++++++++++++++--
 3 files changed, 24 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/jailhouse.txt

diff --git a/Documentation/devicetree/bindings/jailhouse.txt b/Documentation/devicetree/bindings/jailhouse.txt
new file mode 100644
index 000000000000..2901c25ff340
--- /dev/null
+++ b/Documentation/devicetree/bindings/jailhouse.txt
@@ -0,0 +1,8 @@
+Jailhouse non-root cell device tree bindings
+--------------------------------------------
+
+When running in a non-root Jailhouse cell (partition), the device tree of this
+platform shall have a top-level "hypervisor" node with the following
+properties:
+
+- compatible = "jailhouse,cell"
diff --git a/arch/x86/include/asm/jailhouse_para.h b/arch/x86/include/asm/jailhouse_para.h
index 875b54376689..b885a961a150 100644
--- a/arch/x86/include/asm/jailhouse_para.h
+++ b/arch/x86/include/asm/jailhouse_para.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL2.0 */
 
 /*
- * Jailhouse paravirt_ops implementation
+ * Jailhouse paravirt detection
  *
  * Copyright (c) Siemens AG, 2015-2017
  *
diff --git a/include/linux/hypervisor.h b/include/linux/hypervisor.h
index b19563f9a8eb..fc08b433c856 100644
--- a/include/linux/hypervisor.h
+++ b/include/linux/hypervisor.h
@@ -8,15 +8,28 @@
  */
 
 #ifdef CONFIG_X86
+
+#include <asm/jailhouse_para.h>
 #include <asm/x86_init.h>
+
 static inline void hypervisor_pin_vcpu(int cpu)
 {
 	x86_platform.hyper.pin_vcpu(cpu);
 }
-#else
+
+#else /* !CONFIG_X86 */
+
+#include <linux/of.h>
+
 static inline void hypervisor_pin_vcpu(int cpu)
 {
 }
-#endif
+
+static inline bool jailhouse_paravirt(void)
+{
+	return of_find_compatible_node(NULL, NULL, "jailhouse,cell");
+}
+
+#endif /* !CONFIG_X86 */
 
 #endif /* __LINUX_HYPEVISOR_H */
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 2/7] PCI: Scan all functions when running over Jailhouse
  2018-03-07  7:39 [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Jan Kiszka
  2018-03-07  7:39 ` [PATCH v5 1/7] jailhouse: Provide detection for non-x86 systems Jan Kiszka
@ 2018-03-07  7:39 ` Jan Kiszka
  2018-03-08 11:34   ` [tip:x86/platform] " tip-bot for Jan Kiszka
  2018-03-07  7:39 ` [PATCH v5 3/7] x86/jailhouse: Enable PCI mmconfig access in inmates Jan Kiszka
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 17+ messages in thread
From: Jan Kiszka @ 2018-03-07  7:39 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Bjorn Helgaas
  Cc: x86, Linux Kernel Mailing List, jailhouse-dev, linux-pci,
	virtualization, Andy Shevchenko, Benedikt Spranger

From: Jan Kiszka <jan.kiszka@siemens.com>

Per PCIe r4.0, sec 7.5.1.1.9, multi-function devices are required to
have a function 0.  Therefore, Linux scans for devices at function 0
(devfn 0/8/16/...) and only scans for other functions if function 0
has its Multi-Function Device bit set or ARI or SR-IOV indicate
there are more functions.

The Jailhouse hypervisor may pass individual functions of a
multi-function device to a guest without passing function 0, which
means a Linux guest won't find them.

Change Linux PCI probing so it scans all function numbers when
running as a guest over Jailhouse.

This is technically prohibited by the spec, so it is possible that
PCI devices without the Multi-Function Device bit set may have
unexpected behavior in response to this probe.

Derived from original patch by Benedikt Spranger.

CC: Benedikt Spranger <b.spranger@linutronix.de>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 arch/x86/pci/legacy.c |  4 +++-
 drivers/pci/probe.c   | 22 +++++++++++++++++++---
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/arch/x86/pci/legacy.c b/arch/x86/pci/legacy.c
index 1cb01abcb1be..dfbe6ac38830 100644
--- a/arch/x86/pci/legacy.c
+++ b/arch/x86/pci/legacy.c
@@ -4,6 +4,7 @@
 #include <linux/init.h>
 #include <linux/export.h>
 #include <linux/pci.h>
+#include <asm/jailhouse_para.h>
 #include <asm/pci_x86.h>
 
 /*
@@ -34,13 +35,14 @@ int __init pci_legacy_init(void)
 
 void pcibios_scan_specific_bus(int busn)
 {
+	int stride = jailhouse_paravirt() ? 1 : 8;
 	int devfn;
 	u32 l;
 
 	if (pci_find_bus(0, busn))
 		return;
 
-	for (devfn = 0; devfn < 256; devfn += 8) {
+	for (devfn = 0; devfn < 256; devfn += stride) {
 		if (!raw_pci_read(0, busn, devfn, PCI_VENDOR_ID, 2, &l) &&
 		    l != 0x0000 && l != 0xffff) {
 			DBG("Found device at %02x:%02x [%04x]\n", busn, devfn, l);
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index ef5377438a1e..3c365dc996e7 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -16,6 +16,7 @@
 #include <linux/pci-aspm.h>
 #include <linux/aer.h>
 #include <linux/acpi.h>
+#include <linux/hypervisor.h>
 #include <linux/irqdomain.h>
 #include <linux/pm_runtime.h>
 #include "pci.h"
@@ -2518,14 +2519,29 @@ static unsigned int pci_scan_child_bus_extend(struct pci_bus *bus,
 {
 	unsigned int used_buses, normal_bridges = 0, hotplug_bridges = 0;
 	unsigned int start = bus->busn_res.start;
-	unsigned int devfn, cmax, max = start;
+	unsigned int devfn, fn, cmax, max = start;
 	struct pci_dev *dev;
+	int nr_devs;
 
 	dev_dbg(&bus->dev, "scanning bus\n");
 
 	/* Go find them, Rover! */
-	for (devfn = 0; devfn < 0x100; devfn += 8)
-		pci_scan_slot(bus, devfn);
+	for (devfn = 0; devfn < 256; devfn += 8) {
+		nr_devs = pci_scan_slot(bus, devfn);
+
+		/*
+		 * The Jailhouse hypervisor may pass individual functions of a
+		 * multi-function device to a guest without passing function 0.
+		 * Look for them as well.
+		 */
+		if (jailhouse_paravirt() && nr_devs == 0) {
+			for (fn = 1; fn < 8; fn++) {
+				dev = pci_scan_single_device(bus, devfn + fn);
+				if (dev)
+					dev->multifunction = 1;
+			}
+		}
+	}
 
 	/* Reserve buses for SR-IOV capability */
 	used_buses = pci_iov_bus_range(bus);
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 3/7] x86/jailhouse: Enable PCI mmconfig access in inmates
  2018-03-07  7:39 [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Jan Kiszka
  2018-03-07  7:39 ` [PATCH v5 1/7] jailhouse: Provide detection for non-x86 systems Jan Kiszka
  2018-03-07  7:39 ` [PATCH v5 2/7] PCI: Scan all functions when running over Jailhouse Jan Kiszka
@ 2018-03-07  7:39 ` Jan Kiszka
  2018-03-08 11:35   ` [tip:x86/platform] " tip-bot for Otavio Pontes
  2018-03-07  7:39 ` [PATCH v5 4/7] x86: Align x86_64 PCI_MMCONFIG with 32-bit variant Jan Kiszka
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 17+ messages in thread
From: Jan Kiszka @ 2018-03-07  7:39 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Bjorn Helgaas
  Cc: x86, Linux Kernel Mailing List, jailhouse-dev, linux-pci,
	virtualization, Andy Shevchenko

From: Otavio Pontes <otavio.pontes@intel.com>

Use the PCI mmconfig base address exported by jailhouse in boot
parameters in order to access the memory mapped PCI configuration space.

Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
[Jan: rebased, fixed !CONFIG_PCI_MMCONFIG, used pcibios_last_bus]
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 arch/x86/include/asm/pci_x86.h | 2 ++
 arch/x86/kernel/jailhouse.c    | 8 ++++++++
 arch/x86/pci/mmconfig-shared.c | 4 ++--
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h
index eb66fa9cd0fc..959d618dbb17 100644
--- a/arch/x86/include/asm/pci_x86.h
+++ b/arch/x86/include/asm/pci_x86.h
@@ -151,6 +151,8 @@ extern int pci_mmconfig_insert(struct device *dev, u16 seg, u8 start, u8 end,
 			       phys_addr_t addr);
 extern int pci_mmconfig_delete(u16 seg, u8 start, u8 end);
 extern struct pci_mmcfg_region *pci_mmconfig_lookup(int segment, int bus);
+extern struct pci_mmcfg_region *__init pci_mmconfig_add(int segment, int start,
+							int end, u64 addr);
 
 extern struct list_head pci_mmcfg_list;
 
diff --git a/arch/x86/kernel/jailhouse.c b/arch/x86/kernel/jailhouse.c
index b68fd895235a..fa183a131edc 100644
--- a/arch/x86/kernel/jailhouse.c
+++ b/arch/x86/kernel/jailhouse.c
@@ -124,6 +124,14 @@ static int __init jailhouse_pci_arch_init(void)
 	if (pcibios_last_bus < 0)
 		pcibios_last_bus = 0xff;
 
+#ifdef CONFIG_PCI_MMCONFIG
+	if (setup_data.pci_mmconfig_base) {
+		pci_mmconfig_add(0, 0, pcibios_last_bus,
+				 setup_data.pci_mmconfig_base);
+		pci_mmcfg_arch_init();
+	}
+#endif
+
 	return 0;
 }
 
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c
index 96684d0adcf9..0e590272366b 100644
--- a/arch/x86/pci/mmconfig-shared.c
+++ b/arch/x86/pci/mmconfig-shared.c
@@ -94,8 +94,8 @@ static struct pci_mmcfg_region *pci_mmconfig_alloc(int segment, int start,
 	return new;
 }
 
-static struct pci_mmcfg_region *__init pci_mmconfig_add(int segment, int start,
-							int end, u64 addr)
+struct pci_mmcfg_region *__init pci_mmconfig_add(int segment, int start,
+						 int end, u64 addr)
 {
 	struct pci_mmcfg_region *new;
 
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 4/7] x86: Align x86_64 PCI_MMCONFIG with 32-bit variant
  2018-03-07  7:39 [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Jan Kiszka
                   ` (2 preceding siblings ...)
  2018-03-07  7:39 ` [PATCH v5 3/7] x86/jailhouse: Enable PCI mmconfig access in inmates Jan Kiszka
@ 2018-03-07  7:39 ` Jan Kiszka
  2018-03-08 11:35   ` [tip:x86/platform] " tip-bot for Jan Kiszka
  2018-03-07  7:39 ` [PATCH v5 5/7] x86: Consolidate PCI_MMCONFIG configs Jan Kiszka
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 17+ messages in thread
From: Jan Kiszka @ 2018-03-07  7:39 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Bjorn Helgaas
  Cc: x86, Linux Kernel Mailing List, jailhouse-dev, linux-pci,
	virtualization, Andy Shevchenko

From: Jan Kiszka <jan.kiszka@siemens.com>

Allow to enable PCI_MMCONFIG when only SFI is present and make this
option default on. This will help consolidating both into one Kconfig
statement.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 arch/x86/Kconfig | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index eb7f43f23521..c19f5342ec2b 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2659,7 +2659,8 @@ config PCI_DOMAINS
 
 config PCI_MMCONFIG
 	bool "Support mmconfig PCI config space access"
-	depends on X86_64 && PCI && ACPI
+	default y
+	depends on X86_64 && PCI && (ACPI || SFI)
 
 config PCI_CNB20LE_QUIRK
 	bool "Read CNB20LE Host Bridge Windows" if EXPERT
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 5/7] x86: Consolidate PCI_MMCONFIG configs
  2018-03-07  7:39 [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Jan Kiszka
                   ` (3 preceding siblings ...)
  2018-03-07  7:39 ` [PATCH v5 4/7] x86: Align x86_64 PCI_MMCONFIG with 32-bit variant Jan Kiszka
@ 2018-03-07  7:39 ` Jan Kiszka
  2018-03-08 11:36   ` [tip:x86/platform] " tip-bot for Jan Kiszka
  2018-03-07  7:39 ` [PATCH v5 6/7] x86/jailhouse: Allow to use PCI_MMCONFIG without ACPI Jan Kiszka
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 17+ messages in thread
From: Jan Kiszka @ 2018-03-07  7:39 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Bjorn Helgaas
  Cc: x86, Linux Kernel Mailing List, jailhouse-dev, linux-pci,
	virtualization, Andy Shevchenko

From: Jan Kiszka <jan.kiszka@siemens.com>

Since e279b6c1d329 ("x86: start unification of arch/x86/Kconfig.*"), we
have two PCI_MMCONFIG entries, one from the original i386 and another
from x86_64. This consolidates both entries into a single one.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 arch/x86/Kconfig | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index c19f5342ec2b..8986a6b6e3df 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2641,8 +2641,10 @@ config PCI_DIRECT
 	depends on PCI && (X86_64 || (PCI_GODIRECT || PCI_GOANY || PCI_GOOLPC || PCI_GOMMCONFIG))
 
 config PCI_MMCONFIG
-	def_bool y
-	depends on X86_32 && PCI && (ACPI || SFI) && (PCI_GOMMCONFIG || PCI_GOANY)
+	bool "Support mmconfig PCI config space access" if X86_64
+	default y
+	depends on PCI && (ACPI || SFI)
+	depends on X86_64 || (PCI_GOANY || PCI_GOMMCONFIG)
 
 config PCI_OLPC
 	def_bool y
@@ -2657,11 +2659,6 @@ config PCI_DOMAINS
 	def_bool y
 	depends on PCI
 
-config PCI_MMCONFIG
-	bool "Support mmconfig PCI config space access"
-	default y
-	depends on X86_64 && PCI && (ACPI || SFI)
-
 config PCI_CNB20LE_QUIRK
 	bool "Read CNB20LE Host Bridge Windows" if EXPERT
 	depends on PCI
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 6/7] x86/jailhouse: Allow to use PCI_MMCONFIG without ACPI
  2018-03-07  7:39 [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Jan Kiszka
                   ` (4 preceding siblings ...)
  2018-03-07  7:39 ` [PATCH v5 5/7] x86: Consolidate PCI_MMCONFIG configs Jan Kiszka
@ 2018-03-07  7:39 ` Jan Kiszka
  2018-03-08 11:36   ` [tip:x86/platform] " tip-bot for Jan Kiszka
  2018-03-07  7:39 ` [PATCH v5 7/7] MAINTAINERS: Add entry for Jailhouse Jan Kiszka
  2018-03-19 19:48 ` [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Bjorn Helgaas
  7 siblings, 1 reply; 17+ messages in thread
From: Jan Kiszka @ 2018-03-07  7:39 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Bjorn Helgaas
  Cc: x86, Linux Kernel Mailing List, jailhouse-dev, linux-pci,
	virtualization, Andy Shevchenko

From: Jan Kiszka <jan.kiszka@siemens.com>

Jailhouse does not use ACPI, but it does support MMCONFIG. Make sure the
latter can be built without having to enable ACPI as well. Primarily, we
need to make the AMD mmconf-fam10h_64 depend upon MMCONFIG and ACPI,
instead of just the former.

Saves some bytes in the Jailhouse non-root kernel.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 arch/x86/Kconfig          | 6 +++++-
 arch/x86/kernel/Makefile  | 2 +-
 arch/x86/kernel/cpu/amd.c | 2 +-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 8986a6b6e3df..b53340e71f84 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2643,7 +2643,7 @@ config PCI_DIRECT
 config PCI_MMCONFIG
 	bool "Support mmconfig PCI config space access" if X86_64
 	default y
-	depends on PCI && (ACPI || SFI)
+	depends on PCI && (ACPI || SFI || JAILHOUSE_GUEST)
 	depends on X86_64 || (PCI_GOANY || PCI_GOMMCONFIG)
 
 config PCI_OLPC
@@ -2659,6 +2659,10 @@ config PCI_DOMAINS
 	def_bool y
 	depends on PCI
 
+config MMCONF_FAM10H
+	def_bool y
+	depends on X86_64 && PCI_MMCONFIG && ACPI
+
 config PCI_CNB20LE_QUIRK
 	bool "Read CNB20LE Host Bridge Windows" if EXPERT
 	depends on PCI
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
index 29786c87e864..73ccf80c09a2 100644
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@ -146,6 +146,6 @@ ifeq ($(CONFIG_X86_64),y)
 	obj-$(CONFIG_GART_IOMMU)	+= amd_gart_64.o aperture_64.o
 	obj-$(CONFIG_CALGARY_IOMMU)	+= pci-calgary_64.o tce_64.o
 
-	obj-$(CONFIG_PCI_MMCONFIG)	+= mmconf-fam10h_64.o
+	obj-$(CONFIG_MMCONF_FAM10H)	+= mmconf-fam10h_64.o
 	obj-y				+= vsmp_64.o
 endif
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index f0e6456ca7d3..12bc0a1139da 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
@@ -716,7 +716,7 @@ static void init_amd_k8(struct cpuinfo_x86 *c)
 
 static void init_amd_gh(struct cpuinfo_x86 *c)
 {
-#ifdef CONFIG_X86_64
+#ifdef CONFIG_MMCONF_FAM10H
 	/* do this for boot cpu */
 	if (c == &boot_cpu_data)
 		check_enable_amd_mmconf_dmi();
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 7/7] MAINTAINERS: Add entry for Jailhouse
  2018-03-07  7:39 [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Jan Kiszka
                   ` (5 preceding siblings ...)
  2018-03-07  7:39 ` [PATCH v5 6/7] x86/jailhouse: Allow to use PCI_MMCONFIG without ACPI Jan Kiszka
@ 2018-03-07  7:39 ` Jan Kiszka
  2018-03-08 11:36   ` [tip:x86/platform] " tip-bot for Jan Kiszka
  2018-03-19 19:48 ` [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Bjorn Helgaas
  7 siblings, 1 reply; 17+ messages in thread
From: Jan Kiszka @ 2018-03-07  7:39 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Bjorn Helgaas
  Cc: x86, Linux Kernel Mailing List, jailhouse-dev, linux-pci,
	virtualization, Andy Shevchenko

From: Jan Kiszka <jan.kiszka@siemens.com>

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 MAINTAINERS | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 4623caf8d72d..6dc0b8f3ae0e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7523,6 +7523,13 @@ Q:	http://patchwork.linuxtv.org/project/linux-media/list/
 S:	Maintained
 F:	drivers/media/dvb-frontends/ix2505v*
 
+JAILHOUSE HYPERVISOR INTERFACE
+M:	Jan Kiszka <jan.kiszka@siemens.com>
+L:	jailhouse-dev@googlegroups.com
+S:	Maintained
+F:	arch/x86/kernel/jailhouse.c
+F:	arch/x86/include/asm/jailhouse_para.h
+
 JC42.4 TEMPERATURE SENSOR DRIVER
 M:	Guenter Roeck <linux@roeck-us.net>
 L:	linux-hwmon@vger.kernel.org
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [tip:x86/platform] jailhouse: Provide detection for non-x86 systems
  2018-03-07  7:39 ` [PATCH v5 1/7] jailhouse: Provide detection for non-x86 systems Jan Kiszka
@ 2018-03-08 11:33   ` tip-bot for Jan Kiszka
  0 siblings, 0 replies; 17+ messages in thread
From: tip-bot for Jan Kiszka @ 2018-03-08 11:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, andy.shevchenko, bhelgaas, mark.rutland,
	jan.kiszka, hpa, robh+dt, tglx, mingo, jgross

Commit-ID:  63338a38db955cb4e0352c11b78732157c78d30b
Gitweb:     https://git.kernel.org/tip/63338a38db955cb4e0352c11b78732157c78d30b
Author:     Jan Kiszka <jan.kiszka@siemens.com>
AuthorDate: Wed, 7 Mar 2018 08:39:12 +0100
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Thu, 8 Mar 2018 12:30:37 +0100

jailhouse: Provide detection for non-x86 systems

Implement jailhouse_paravirt() via device tree probing on architectures
!= x86. Will be used by the PCI core.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Juergen Gross <jgross@suse.com>
Cc: jailhouse-dev@googlegroups.com
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: linux-pci@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lkml.kernel.org/r/dae9fe0c6e63141c28ca90492fa5712b4c33ffb5.1520408357.git.jan.kiszka@siemens.com

---
 Documentation/devicetree/bindings/jailhouse.txt |  8 ++++++++
 arch/x86/include/asm/jailhouse_para.h           |  2 +-
 include/linux/hypervisor.h                      | 17 +++++++++++++++--
 3 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/Documentation/devicetree/bindings/jailhouse.txt b/Documentation/devicetree/bindings/jailhouse.txt
new file mode 100644
index 000000000000..2901c25ff340
--- /dev/null
+++ b/Documentation/devicetree/bindings/jailhouse.txt
@@ -0,0 +1,8 @@
+Jailhouse non-root cell device tree bindings
+--------------------------------------------
+
+When running in a non-root Jailhouse cell (partition), the device tree of this
+platform shall have a top-level "hypervisor" node with the following
+properties:
+
+- compatible = "jailhouse,cell"
diff --git a/arch/x86/include/asm/jailhouse_para.h b/arch/x86/include/asm/jailhouse_para.h
index 875b54376689..b885a961a150 100644
--- a/arch/x86/include/asm/jailhouse_para.h
+++ b/arch/x86/include/asm/jailhouse_para.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL2.0 */
 
 /*
- * Jailhouse paravirt_ops implementation
+ * Jailhouse paravirt detection
  *
  * Copyright (c) Siemens AG, 2015-2017
  *
diff --git a/include/linux/hypervisor.h b/include/linux/hypervisor.h
index b19563f9a8eb..fc08b433c856 100644
--- a/include/linux/hypervisor.h
+++ b/include/linux/hypervisor.h
@@ -8,15 +8,28 @@
  */
 
 #ifdef CONFIG_X86
+
+#include <asm/jailhouse_para.h>
 #include <asm/x86_init.h>
+
 static inline void hypervisor_pin_vcpu(int cpu)
 {
 	x86_platform.hyper.pin_vcpu(cpu);
 }
-#else
+
+#else /* !CONFIG_X86 */
+
+#include <linux/of.h>
+
 static inline void hypervisor_pin_vcpu(int cpu)
 {
 }
-#endif
+
+static inline bool jailhouse_paravirt(void)
+{
+	return of_find_compatible_node(NULL, NULL, "jailhouse,cell");
+}
+
+#endif /* !CONFIG_X86 */
 
 #endif /* __LINUX_HYPEVISOR_H */

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [tip:x86/platform] PCI: Scan all functions when running over Jailhouse
  2018-03-07  7:39 ` [PATCH v5 2/7] PCI: Scan all functions when running over Jailhouse Jan Kiszka
@ 2018-03-08 11:34   ` tip-bot for Jan Kiszka
  0 siblings, 0 replies; 17+ messages in thread
From: tip-bot for Jan Kiszka @ 2018-03-08 11:34 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, andy.shevchenko, tglx, hpa, b.spranger, jan.kiszka,
	bhelgaas, mingo

Commit-ID:  690f4304104f37e473bd5e43fc5247f5cd35b225
Gitweb:     https://git.kernel.org/tip/690f4304104f37e473bd5e43fc5247f5cd35b225
Author:     Jan Kiszka <jan.kiszka@siemens.com>
AuthorDate: Wed, 7 Mar 2018 08:39:13 +0100
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Thu, 8 Mar 2018 12:30:37 +0100

PCI: Scan all functions when running over Jailhouse

Per PCIe r4.0, sec 7.5.1.1.9, multi-function devices are required to have a
function 0.  Therefore, Linux scans for devices at function 0 (devfn
0/8/16/...) and only scans for other functions if function 0 has its
Multi-Function Device bit set or ARI or SR-IOV indicate there are more
functions.

The Jailhouse hypervisor may pass individual functions of a multi-function
device to a guest without passing function 0, which means a Linux guest
won't find them.

Change Linux PCI probing so it scans all function numbers when running as a
guest over Jailhouse.

This is technically prohibited by the spec, so it is possible that PCI
devices without the Multi-Function Device bit set may have unexpected
behavior in response to this probe.

Originally-by: Benedikt Spranger <b.spranger@linutronix.de>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: jailhouse-dev@googlegroups.com
Cc: Benedikt Spranger <b.spranger@linutronix.de>
Cc: linux-pci@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Link: https://lkml.kernel.org/r/06e279b2a3e06cf6689ab3975f8ab592bba02362.1520408357.git.jan.kiszka@siemens.com

---
 arch/x86/pci/legacy.c |  4 +++-
 drivers/pci/probe.c   | 22 +++++++++++++++++++---
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/arch/x86/pci/legacy.c b/arch/x86/pci/legacy.c
index 1cb01abcb1be..dfbe6ac38830 100644
--- a/arch/x86/pci/legacy.c
+++ b/arch/x86/pci/legacy.c
@@ -4,6 +4,7 @@
 #include <linux/init.h>
 #include <linux/export.h>
 #include <linux/pci.h>
+#include <asm/jailhouse_para.h>
 #include <asm/pci_x86.h>
 
 /*
@@ -34,13 +35,14 @@ int __init pci_legacy_init(void)
 
 void pcibios_scan_specific_bus(int busn)
 {
+	int stride = jailhouse_paravirt() ? 1 : 8;
 	int devfn;
 	u32 l;
 
 	if (pci_find_bus(0, busn))
 		return;
 
-	for (devfn = 0; devfn < 256; devfn += 8) {
+	for (devfn = 0; devfn < 256; devfn += stride) {
 		if (!raw_pci_read(0, busn, devfn, PCI_VENDOR_ID, 2, &l) &&
 		    l != 0x0000 && l != 0xffff) {
 			DBG("Found device at %02x:%02x [%04x]\n", busn, devfn, l);
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index ef5377438a1e..3c365dc996e7 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -16,6 +16,7 @@
 #include <linux/pci-aspm.h>
 #include <linux/aer.h>
 #include <linux/acpi.h>
+#include <linux/hypervisor.h>
 #include <linux/irqdomain.h>
 #include <linux/pm_runtime.h>
 #include "pci.h"
@@ -2518,14 +2519,29 @@ static unsigned int pci_scan_child_bus_extend(struct pci_bus *bus,
 {
 	unsigned int used_buses, normal_bridges = 0, hotplug_bridges = 0;
 	unsigned int start = bus->busn_res.start;
-	unsigned int devfn, cmax, max = start;
+	unsigned int devfn, fn, cmax, max = start;
 	struct pci_dev *dev;
+	int nr_devs;
 
 	dev_dbg(&bus->dev, "scanning bus\n");
 
 	/* Go find them, Rover! */
-	for (devfn = 0; devfn < 0x100; devfn += 8)
-		pci_scan_slot(bus, devfn);
+	for (devfn = 0; devfn < 256; devfn += 8) {
+		nr_devs = pci_scan_slot(bus, devfn);
+
+		/*
+		 * The Jailhouse hypervisor may pass individual functions of a
+		 * multi-function device to a guest without passing function 0.
+		 * Look for them as well.
+		 */
+		if (jailhouse_paravirt() && nr_devs == 0) {
+			for (fn = 1; fn < 8; fn++) {
+				dev = pci_scan_single_device(bus, devfn + fn);
+				if (dev)
+					dev->multifunction = 1;
+			}
+		}
+	}
 
 	/* Reserve buses for SR-IOV capability */
 	used_buses = pci_iov_bus_range(bus);

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [tip:x86/platform] x86/jailhouse: Enable PCI mmconfig access in inmates
  2018-03-07  7:39 ` [PATCH v5 3/7] x86/jailhouse: Enable PCI mmconfig access in inmates Jan Kiszka
@ 2018-03-08 11:35   ` tip-bot for Otavio Pontes
  0 siblings, 0 replies; 17+ messages in thread
From: tip-bot for Otavio Pontes @ 2018-03-08 11:35 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: bhelgaas, andy.shevchenko, mingo, hpa, otavio.pontes, jan.kiszka,
	linux-kernel, tglx

Commit-ID:  6fa4a94e150be25d02547d51f03b4bc34aaec32f
Gitweb:     https://git.kernel.org/tip/6fa4a94e150be25d02547d51f03b4bc34aaec32f
Author:     Otavio Pontes <otavio.pontes@intel.com>
AuthorDate: Wed, 7 Mar 2018 08:39:14 +0100
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Thu, 8 Mar 2018 12:30:38 +0100

x86/jailhouse: Enable PCI mmconfig access in inmates

Use the PCI mmconfig base address exported by jailhouse in boot parameters
in order to access the memory mapped PCI configuration space.

[Jan: rebased, fixed !CONFIG_PCI_MMCONFIG, used pcibios_last_bus]

Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: jailhouse-dev@googlegroups.com
Cc: linux-pci@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Cc: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lkml.kernel.org/r/2ee9e4401fa22377b3965893a558120f169be82b.1520408357.git.jan.kiszka@siemens.com

---
 arch/x86/include/asm/pci_x86.h | 2 ++
 arch/x86/kernel/jailhouse.c    | 8 ++++++++
 arch/x86/pci/mmconfig-shared.c | 4 ++--
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h
index eb66fa9cd0fc..959d618dbb17 100644
--- a/arch/x86/include/asm/pci_x86.h
+++ b/arch/x86/include/asm/pci_x86.h
@@ -151,6 +151,8 @@ extern int pci_mmconfig_insert(struct device *dev, u16 seg, u8 start, u8 end,
 			       phys_addr_t addr);
 extern int pci_mmconfig_delete(u16 seg, u8 start, u8 end);
 extern struct pci_mmcfg_region *pci_mmconfig_lookup(int segment, int bus);
+extern struct pci_mmcfg_region *__init pci_mmconfig_add(int segment, int start,
+							int end, u64 addr);
 
 extern struct list_head pci_mmcfg_list;
 
diff --git a/arch/x86/kernel/jailhouse.c b/arch/x86/kernel/jailhouse.c
index b68fd895235a..fa183a131edc 100644
--- a/arch/x86/kernel/jailhouse.c
+++ b/arch/x86/kernel/jailhouse.c
@@ -124,6 +124,14 @@ static int __init jailhouse_pci_arch_init(void)
 	if (pcibios_last_bus < 0)
 		pcibios_last_bus = 0xff;
 
+#ifdef CONFIG_PCI_MMCONFIG
+	if (setup_data.pci_mmconfig_base) {
+		pci_mmconfig_add(0, 0, pcibios_last_bus,
+				 setup_data.pci_mmconfig_base);
+		pci_mmcfg_arch_init();
+	}
+#endif
+
 	return 0;
 }
 
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c
index 0b40482578b8..7389db538c30 100644
--- a/arch/x86/pci/mmconfig-shared.c
+++ b/arch/x86/pci/mmconfig-shared.c
@@ -94,8 +94,8 @@ static struct pci_mmcfg_region *pci_mmconfig_alloc(int segment, int start,
 	return new;
 }
 
-static struct pci_mmcfg_region *__init pci_mmconfig_add(int segment, int start,
-							int end, u64 addr)
+struct pci_mmcfg_region *__init pci_mmconfig_add(int segment, int start,
+						 int end, u64 addr)
 {
 	struct pci_mmcfg_region *new;
 

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [tip:x86/platform] x86: Align x86_64 PCI_MMCONFIG with 32-bit variant
  2018-03-07  7:39 ` [PATCH v5 4/7] x86: Align x86_64 PCI_MMCONFIG with 32-bit variant Jan Kiszka
@ 2018-03-08 11:35   ` tip-bot for Jan Kiszka
  0 siblings, 0 replies; 17+ messages in thread
From: tip-bot for Jan Kiszka @ 2018-03-08 11:35 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, mingo, jan.kiszka, tglx, andy.shevchenko, hpa, bhelgaas

Commit-ID:  55027a7772b1a9c36fb9731fc6c847b6a59c5bef
Gitweb:     https://git.kernel.org/tip/55027a7772b1a9c36fb9731fc6c847b6a59c5bef
Author:     Jan Kiszka <jan.kiszka@siemens.com>
AuthorDate: Wed, 7 Mar 2018 08:39:15 +0100
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Thu, 8 Mar 2018 12:30:38 +0100

x86: Align x86_64 PCI_MMCONFIG with 32-bit variant

Allow to enable PCI_MMCONFIG when only SFI is present and make this option
default on. This will help consolidating both into one Kconfig statement.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: jailhouse-dev@googlegroups.com
Cc: linux-pci@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lkml.kernel.org/r/a2faf78c54f340f5549149e8b679c95950dae83d.1520408357.git.jan.kiszka@siemens.com

---
 arch/x86/Kconfig | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index c1236b187824..6bd763640925 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2658,7 +2658,8 @@ config PCI_DOMAINS
 
 config PCI_MMCONFIG
 	bool "Support mmconfig PCI config space access"
-	depends on X86_64 && PCI && ACPI
+	default y
+	depends on X86_64 && PCI && (ACPI || SFI)
 
 config PCI_CNB20LE_QUIRK
 	bool "Read CNB20LE Host Bridge Windows" if EXPERT

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [tip:x86/platform] x86: Consolidate PCI_MMCONFIG configs
  2018-03-07  7:39 ` [PATCH v5 5/7] x86: Consolidate PCI_MMCONFIG configs Jan Kiszka
@ 2018-03-08 11:36   ` tip-bot for Jan Kiszka
  0 siblings, 0 replies; 17+ messages in thread
From: tip-bot for Jan Kiszka @ 2018-03-08 11:36 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: hpa, mingo, andy.shevchenko, tglx, jan.kiszka, linux-kernel, bhelgaas

Commit-ID:  b45c9f3656b691ab7324c7eaefb3416bea0326d8
Gitweb:     https://git.kernel.org/tip/b45c9f3656b691ab7324c7eaefb3416bea0326d8
Author:     Jan Kiszka <jan.kiszka@siemens.com>
AuthorDate: Wed, 7 Mar 2018 08:39:16 +0100
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Thu, 8 Mar 2018 12:30:38 +0100

x86: Consolidate PCI_MMCONFIG configs

Since e279b6c1d329 ("x86: start unification of arch/x86/Kconfig.*"), there
exist two PCI_MMCONFIG entries, one from the original i386 and another from
x86_64. Consolidate both entries into a single one.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: jailhouse-dev@googlegroups.com
Cc: linux-pci@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lkml.kernel.org/r/2a0ccd51ea6f7996e07162918228e23bdc1fbb03.1520408357.git.jan.kiszka@siemens.com

---
 arch/x86/Kconfig | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 6bd763640925..573b7c49d9f8 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2640,8 +2640,10 @@ config PCI_DIRECT
 	depends on PCI && (X86_64 || (PCI_GODIRECT || PCI_GOANY || PCI_GOOLPC || PCI_GOMMCONFIG))
 
 config PCI_MMCONFIG
-	def_bool y
-	depends on X86_32 && PCI && (ACPI || SFI) && (PCI_GOMMCONFIG || PCI_GOANY)
+	bool "Support mmconfig PCI config space access" if X86_64
+	default y
+	depends on PCI && (ACPI || SFI)
+	depends on X86_64 || (PCI_GOANY || PCI_GOMMCONFIG)
 
 config PCI_OLPC
 	def_bool y
@@ -2656,11 +2658,6 @@ config PCI_DOMAINS
 	def_bool y
 	depends on PCI
 
-config PCI_MMCONFIG
-	bool "Support mmconfig PCI config space access"
-	default y
-	depends on X86_64 && PCI && (ACPI || SFI)
-
 config PCI_CNB20LE_QUIRK
 	bool "Read CNB20LE Host Bridge Windows" if EXPERT
 	depends on PCI

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [tip:x86/platform] x86/jailhouse: Allow to use PCI_MMCONFIG without ACPI
  2018-03-07  7:39 ` [PATCH v5 6/7] x86/jailhouse: Allow to use PCI_MMCONFIG without ACPI Jan Kiszka
@ 2018-03-08 11:36   ` tip-bot for Jan Kiszka
  0 siblings, 0 replies; 17+ messages in thread
From: tip-bot for Jan Kiszka @ 2018-03-08 11:36 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, jan.kiszka, bhelgaas, hpa, mingo, tglx, andy.shevchenko

Commit-ID:  8364e1f8379c7f9d3e63f127a585f889906b3e10
Gitweb:     https://git.kernel.org/tip/8364e1f8379c7f9d3e63f127a585f889906b3e10
Author:     Jan Kiszka <jan.kiszka@siemens.com>
AuthorDate: Wed, 7 Mar 2018 08:39:17 +0100
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Thu, 8 Mar 2018 12:30:39 +0100

x86/jailhouse: Allow to use PCI_MMCONFIG without ACPI

Jailhouse does not use ACPI, but it does support MMCONFIG. Make sure the
latter can be built without having to enable ACPI as well. Primarily, its
required to make the AMD mmconf-fam10h_64 depend upon MMCONFIG and
ACPI, instead of just the former.

Saves some bytes in the Jailhouse non-root kernel.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: jailhouse-dev@googlegroups.com
Cc: linux-pci@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lkml.kernel.org/r/788bbd5325d1922235e9562c213057425fbc548c.1520408357.git.jan.kiszka@siemens.com

---
 arch/x86/Kconfig          | 6 +++++-
 arch/x86/kernel/Makefile  | 2 +-
 arch/x86/kernel/cpu/amd.c | 2 +-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 573b7c49d9f8..7f00f60a2028 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2642,7 +2642,7 @@ config PCI_DIRECT
 config PCI_MMCONFIG
 	bool "Support mmconfig PCI config space access" if X86_64
 	default y
-	depends on PCI && (ACPI || SFI)
+	depends on PCI && (ACPI || SFI || JAILHOUSE_GUEST)
 	depends on X86_64 || (PCI_GOANY || PCI_GOMMCONFIG)
 
 config PCI_OLPC
@@ -2658,6 +2658,10 @@ config PCI_DOMAINS
 	def_bool y
 	depends on PCI
 
+config MMCONF_FAM10H
+	def_bool y
+	depends on X86_64 && PCI_MMCONFIG && ACPI
+
 config PCI_CNB20LE_QUIRK
 	bool "Read CNB20LE Host Bridge Windows" if EXPERT
 	depends on PCI
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
index 29786c87e864..73ccf80c09a2 100644
--- a/arch/x86/kernel/Makefile
+++ b/arch/x86/kernel/Makefile
@@ -146,6 +146,6 @@ ifeq ($(CONFIG_X86_64),y)
 	obj-$(CONFIG_GART_IOMMU)	+= amd_gart_64.o aperture_64.o
 	obj-$(CONFIG_CALGARY_IOMMU)	+= pci-calgary_64.o tce_64.o
 
-	obj-$(CONFIG_PCI_MMCONFIG)	+= mmconf-fam10h_64.o
+	obj-$(CONFIG_MMCONF_FAM10H)	+= mmconf-fam10h_64.o
 	obj-y				+= vsmp_64.o
 endif
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index f0e6456ca7d3..12bc0a1139da 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
@@ -716,7 +716,7 @@ static void init_amd_k8(struct cpuinfo_x86 *c)
 
 static void init_amd_gh(struct cpuinfo_x86 *c)
 {
-#ifdef CONFIG_X86_64
+#ifdef CONFIG_MMCONF_FAM10H
 	/* do this for boot cpu */
 	if (c == &boot_cpu_data)
 		check_enable_amd_mmconf_dmi();

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [tip:x86/platform] MAINTAINERS: Add entry for Jailhouse
  2018-03-07  7:39 ` [PATCH v5 7/7] MAINTAINERS: Add entry for Jailhouse Jan Kiszka
@ 2018-03-08 11:36   ` tip-bot for Jan Kiszka
  0 siblings, 0 replies; 17+ messages in thread
From: tip-bot for Jan Kiszka @ 2018-03-08 11:36 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: hpa, jan.kiszka, linux-kernel, mingo, andy.shevchenko, bhelgaas, tglx

Commit-ID:  e21c963c0fe3dc6d8a5c23474eb8f560b184132a
Gitweb:     https://git.kernel.org/tip/e21c963c0fe3dc6d8a5c23474eb8f560b184132a
Author:     Jan Kiszka <jan.kiszka@siemens.com>
AuthorDate: Wed, 7 Mar 2018 08:39:18 +0100
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Thu, 8 Mar 2018 12:30:39 +0100

MAINTAINERS: Add entry for Jailhouse

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: jailhouse-dev@googlegroups.com
Cc: linux-pci@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lkml.kernel.org/r/8be8af4084d862faa43d55c7bae94af7e0da1609.1520408357.git.jan.kiszka@siemens.com

---
 MAINTAINERS | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 9a7f76eadae9..272d8c98c0e1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7521,6 +7521,13 @@ Q:	http://patchwork.linuxtv.org/project/linux-media/list/
 S:	Maintained
 F:	drivers/media/dvb-frontends/ix2505v*
 
+JAILHOUSE HYPERVISOR INTERFACE
+M:	Jan Kiszka <jan.kiszka@siemens.com>
+L:	jailhouse-dev@googlegroups.com
+S:	Maintained
+F:	arch/x86/kernel/jailhouse.c
+F:	arch/x86/include/asm/jailhouse_para.h
+
 JC42.4 TEMPERATURE SENSOR DRIVER
 M:	Guenter Roeck <linux@roeck-us.net>
 L:	linux-hwmon@vger.kernel.org

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI
  2018-03-07  7:39 [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Jan Kiszka
                   ` (6 preceding siblings ...)
  2018-03-07  7:39 ` [PATCH v5 7/7] MAINTAINERS: Add entry for Jailhouse Jan Kiszka
@ 2018-03-19 19:48 ` Bjorn Helgaas
  2018-03-19 19:50   ` Thomas Gleixner
  7 siblings, 1 reply; 17+ messages in thread
From: Bjorn Helgaas @ 2018-03-19 19:48 UTC (permalink / raw)
  To: Jan Kiszka
  Cc: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Bjorn Helgaas,
	x86, Linux Kernel Mailing List, jailhouse-dev, linux-pci,
	virtualization, Andy Shevchenko, Benedikt Spranger,
	Juergen Gross, Mark Rutland, Otavio Pontes, Rob Herring

On Wed, Mar 07, 2018 at 08:39:11AM +0100, Jan Kiszka wrote:
> Basic x86 support [1] for running Linux as secondary Jailhouse [2] guest
> is currently pending in the tip tree. This builds on top and enhances
> the PCI support for x86 and also ARM guests (ARM[64] does not require
> platform patches and works already).
> ...

Hi Jan,

What tree do you plan to merge this through?  I was sort of assuming
x86, since the main point of jailhouse is not PCI, but I do notice
most of the changes here are PCI-related, so thought I should make
sure you're not waiting on me.

> Jan Kiszka (6):
>   jailhouse: Provide detection for non-x86 systems
>   PCI: Scan all functions when running over Jailhouse
>   x86: Align x86_64 PCI_MMCONFIG with 32-bit variant
>   x86: Consolidate PCI_MMCONFIG configs
>   x86/jailhouse: Allow to use PCI_MMCONFIG without ACPI
>   MAINTAINERS: Add entry for Jailhouse
> 
> Otavio Pontes (1):
>   x86/jailhouse: Enable PCI mmconfig access in inmates
> 
>  Documentation/devicetree/bindings/jailhouse.txt |  8 ++++++++
>  MAINTAINERS                                     |  7 +++++++
>  arch/x86/Kconfig                                | 12 +++++++-----
>  arch/x86/include/asm/jailhouse_para.h           |  2 +-
>  arch/x86/include/asm/pci_x86.h                  |  2 ++
>  arch/x86/kernel/Makefile                        |  2 +-
>  arch/x86/kernel/cpu/amd.c                       |  2 +-
>  arch/x86/kernel/jailhouse.c                     |  8 ++++++++
>  arch/x86/pci/legacy.c                           |  4 +++-
>  arch/x86/pci/mmconfig-shared.c                  |  4 ++--
>  drivers/pci/probe.c                             | 22 +++++++++++++++++++---
>  include/linux/hypervisor.h                      | 17 +++++++++++++++--
>  12 files changed, 74 insertions(+), 16 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/jailhouse.txt
> 
> -- 
> 2.13.6
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI
  2018-03-19 19:48 ` [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Bjorn Helgaas
@ 2018-03-19 19:50   ` Thomas Gleixner
  0 siblings, 0 replies; 17+ messages in thread
From: Thomas Gleixner @ 2018-03-19 19:50 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Jan Kiszka, Ingo Molnar, H . Peter Anvin, Bjorn Helgaas, x86,
	Linux Kernel Mailing List, jailhouse-dev, linux-pci,
	virtualization, Andy Shevchenko, Benedikt Spranger,
	Juergen Gross, Mark Rutland, Otavio Pontes, Rob Herring

Bjorn,

On Mon, 19 Mar 2018, Bjorn Helgaas wrote:

> On Wed, Mar 07, 2018 at 08:39:11AM +0100, Jan Kiszka wrote:
> > Basic x86 support [1] for running Linux as secondary Jailhouse [2] guest
> > is currently pending in the tip tree. This builds on top and enhances
> > the PCI support for x86 and also ARM guests (ARM[64] does not require
> > platform patches and works already).
> > ...
> 
> Hi Jan,
> 
> What tree do you plan to merge this through?  I was sort of assuming
> x86, since the main point of jailhouse is not PCI, but I do notice
> most of the changes here are PCI-related, so thought I should make
> sure you're not waiting on me.

I picked it up already. It's sitting in tip x86/platform

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2018-03-19 19:51 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-07  7:39 [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Jan Kiszka
2018-03-07  7:39 ` [PATCH v5 1/7] jailhouse: Provide detection for non-x86 systems Jan Kiszka
2018-03-08 11:33   ` [tip:x86/platform] " tip-bot for Jan Kiszka
2018-03-07  7:39 ` [PATCH v5 2/7] PCI: Scan all functions when running over Jailhouse Jan Kiszka
2018-03-08 11:34   ` [tip:x86/platform] " tip-bot for Jan Kiszka
2018-03-07  7:39 ` [PATCH v5 3/7] x86/jailhouse: Enable PCI mmconfig access in inmates Jan Kiszka
2018-03-08 11:35   ` [tip:x86/platform] " tip-bot for Otavio Pontes
2018-03-07  7:39 ` [PATCH v5 4/7] x86: Align x86_64 PCI_MMCONFIG with 32-bit variant Jan Kiszka
2018-03-08 11:35   ` [tip:x86/platform] " tip-bot for Jan Kiszka
2018-03-07  7:39 ` [PATCH v5 5/7] x86: Consolidate PCI_MMCONFIG configs Jan Kiszka
2018-03-08 11:36   ` [tip:x86/platform] " tip-bot for Jan Kiszka
2018-03-07  7:39 ` [PATCH v5 6/7] x86/jailhouse: Allow to use PCI_MMCONFIG without ACPI Jan Kiszka
2018-03-08 11:36   ` [tip:x86/platform] " tip-bot for Jan Kiszka
2018-03-07  7:39 ` [PATCH v5 7/7] MAINTAINERS: Add entry for Jailhouse Jan Kiszka
2018-03-08 11:36   ` [tip:x86/platform] " tip-bot for Jan Kiszka
2018-03-19 19:48 ` [PATCH v5 0/7] jailhouse: Enhance secondary Jailhouse guest support /wrt PCI Bjorn Helgaas
2018-03-19 19:50   ` Thomas Gleixner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).