[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.5 4/4] xen: arm: Support the other 4 PCI buses on Xgene
Hi Ian, On 11/18/2014 04:44 PM, Ian Campbell wrote: > Currently we only establish specific mappings for pcie0, which is > used on the Mustang platform. However at least McDivitt uses pcie3. > So wire up all the others, based on whether the corresponding DT node > is marked as available. > > This results in no change for Mustang. Hopefully, we will support PCI DT parsing in Xen 4.6! > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > --- > +/* > + * Xen does not currently support mapping MMIO regions and interrupt > + * for bus child devices (referenced via the "ranges" and > + * "interrupt-map" properties to domain 0). Instead for now map the > + * necessary resources manually. > + */ > +static int xgene_storm_specific_mapping(struct domain *d) > +{ > + struct dt_device_node *node = NULL; NIT: const struct > + int ret; > + > + while ( (node = dt_find_compatible_node(node, "pci", "apm,xgene-pcie")) ) > + { > + u64 addr; > + > + /* Identify the bus via it's control register address */ > + ret = dt_device_get_address(node, 0, &addr, NULL); > + if ( ret < 0 ) > + return ret; > + > + if ( !dt_device_is_available(node) ) > + continue; > + > + switch ( addr ) > + { > + case 0x1f2b0000: /* PCIe0 */ > + ret = xgene_storm_pcie_specific_mapping(d, > + 0x0e000000000UL, 0x10000000000UL, 0xc2); > + break; > + case 0x1f2c0000: /* PCIe1 */ > + ret = xgene_storm_pcie_specific_mapping(d, > + 0x0d000000000UL, 0x0e000000000UL, 0xc8); > + break; > + case 0x1f2d0000: /* PCIe2 */ > + ret = xgene_storm_pcie_specific_mapping(d, > + 0x09000000000UL, 0x0a000000000UL, 0xce); > + break; > + case 0x1f500000: /* PCIe3 */ > + ret = xgene_storm_pcie_specific_mapping(d, > + 0x0a000000000UL, 0x0c000000000UL, 0xd4); > + break; > + case 0x1f510000: /* PCIe4 */ > + ret = xgene_storm_pcie_specific_mapping(d, > + 0x0c000000000UL, 0x0d000000000UL, 0xda); > + break; > + > + default: > + /* Ignore unknown PCI busses */ I would add a printk("Ignoring PCI busses %s\n", dt_node_full_name(dev)); > + ret = 0; > + break; continue? You can't assume the order of the PCI busses in the device tree. > + } > + > + if ( ret < 0 ) > + return ret; > + > + printk("Mapped additional regions for PCIe device at 0x%"PRIx64"\n", > + addr); Printing the device tree path would be more helpful than the address. Regards, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |