[tip:tools/kvm] kvm tools: ARM: bring generated pci FDT node in-line with kernel binding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Commit-ID:  32438608b599c52e148aee5f2824a44ee2d39c4f
Gitweb:     http://git.kernel.org/tip/32438608b599c52e148aee5f2824a44ee2d39c4f
Author:     Will Deacon <will.deacon@xxxxxxx>
AuthorDate: Thu, 17 Apr 2014 15:57:47 +0100
Committer:  Pekka Enberg <penberg@xxxxxxxxxx>
CommitDate: Tue, 22 Apr 2014 14:24:06 +0300

kvm tools: ARM: bring generated pci FDT node in-line with kernel binding

Now that the dust has settled on the devicetree bindings for the generic
PCI host controller in the Linux kernel, update the node generated by
kvmtool to match what mainline kernels will expect.

Signed-off-by: Will Deacon <will.deacon@xxxxxxx>
Signed-off-by: Pekka Enberg <penberg@xxxxxxxxxx>
---
 tools/kvm/arm/fdt.c |  1 +
 tools/kvm/arm/kvm.c |  5 -----
 tools/kvm/arm/pci.c | 25 ++++++++++++-------------
 3 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/tools/kvm/arm/fdt.c b/tools/kvm/arm/fdt.c
index d90fc9e..30cd75a 100644
--- a/tools/kvm/arm/fdt.c
+++ b/tools/kvm/arm/fdt.c
@@ -114,6 +114,7 @@ static int setup_fdt(struct kvm *kvm)
 
 	/* /chosen */
 	_FDT(fdt_begin_node(fdt, "chosen"));
+	_FDT(fdt_property_cell(fdt, "linux,pci-probe-only", 1));
 	_FDT(fdt_property_string(fdt, "bootargs", kern_cmdline));
 
 	/* Initrd */
diff --git a/tools/kvm/arm/kvm.c b/tools/kvm/arm/kvm.c
index 6db646b..008b7fe 100644
--- a/tools/kvm/arm/kvm.c
+++ b/tools/kvm/arm/kvm.c
@@ -56,11 +56,6 @@ void kvm__arch_read_term(struct kvm *kvm)
 
 void kvm__arch_set_cmdline(char *cmdline, bool video)
 {
-	/*
-	 * We don't support movable BARs, so force the guest to use what
-	 * we tell it.
-	 */
-	strcpy(cmdline, "pci=firmware");
 }
 
 void kvm__arch_init(struct kvm *kvm, const char *hugetlbfs_path, u64 ram_size)
diff --git a/tools/kvm/arm/pci.c b/tools/kvm/arm/pci.c
index ce1932e..9f4dabc 100644
--- a/tools/kvm/arm/pci.c
+++ b/tools/kvm/arm/pci.c
@@ -26,19 +26,15 @@ void pci__generate_fdt_nodes(void *fdt, u32 gic_phandle)
 	struct device_header *dev_hdr;
 	struct of_interrupt_map_entry irq_map[OF_PCI_IRQ_MAP_MAX];
 	unsigned nentries = 0;
-	/* Describe the memory ranges (config and memory) */
+	/* Bus range */
+	u32 bus_range[] = { cpu_to_fdt32(0), cpu_to_fdt32(1), };
+	/* Configuration Space */
+	u64 cfg_reg_prop[] = { cpu_to_fdt64(KVM_PCI_CFG_AREA),
+			       cpu_to_fdt64(ARM_PCI_CFG_SIZE), };
+	/* Describe the memory ranges */
 	struct of_pci_ranges_entry ranges[] = {
 		{
 			.pci_addr = {
-				.hi	= cpu_to_fdt32(of_pci_b_ss(OF_PCI_SS_CONFIG)),
-				.mid	= 0,
-				.lo	= 0,
-			},
-			.cpu_addr	= cpu_to_fdt64(KVM_PCI_CFG_AREA),
-			.length		= cpu_to_fdt64(ARM_PCI_CFG_SIZE),
-		},
-		{
-			.pci_addr = {
 				.hi	= cpu_to_fdt32(of_pci_b_ss(OF_PCI_SS_IO)),
 				.mid	= 0,
 				.lo	= 0,
@@ -49,8 +45,8 @@ void pci__generate_fdt_nodes(void *fdt, u32 gic_phandle)
 		{
 			.pci_addr = {
 				.hi	= cpu_to_fdt32(of_pci_b_ss(OF_PCI_SS_M32)),
-				.mid	= 0,
-				.lo	= 0,
+				.mid	= cpu_to_fdt32(KVM_PCI_MMIO_AREA >> 32),
+				.lo	= cpu_to_fdt32(KVM_PCI_MMIO_AREA),
 			},
 			.cpu_addr	= cpu_to_fdt64(KVM_PCI_MMIO_AREA),
 			.length		= cpu_to_fdt64(ARM_PCI_MMIO_SIZE),
@@ -59,11 +55,14 @@ void pci__generate_fdt_nodes(void *fdt, u32 gic_phandle)
 
 	/* Boilerplate PCI properties */
 	_FDT(fdt_begin_node(fdt, "pci"));
+	_FDT(fdt_property_string(fdt, "device_type", "pci"));
 	_FDT(fdt_property_cell(fdt, "#address-cells", 0x3));
 	_FDT(fdt_property_cell(fdt, "#size-cells", 0x2));
 	_FDT(fdt_property_cell(fdt, "#interrupt-cells", 0x1));
-	_FDT(fdt_property_string(fdt, "compatible", "linux,pci-virt"));
+	_FDT(fdt_property_string(fdt, "compatible", "pci-host-cam-generic"));
 
+	_FDT(fdt_property(fdt, "bus-range", bus_range, sizeof(bus_range)));
+	_FDT(fdt_property(fdt, "reg", &cfg_reg_prop, sizeof(cfg_reg_prop)));
 	_FDT(fdt_property(fdt, "ranges", ranges, sizeof(ranges)));
 
 	/* Generate the interrupt map ... */
--
To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Stable Commits]     [Linux Stable Kernel]     [Linux Kernel]     [Linux USB Devel]     [Linux Video &Media]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux