Commit 1fcf0d77 authored by Will Deacon's avatar Will Deacon
Browse files

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: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
parent 506fd90b
......@@ -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 */
......
......@@ -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)
......
......@@ -26,17 +26,13 @@ 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)),
......@@ -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 ... */
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment