|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 04/28] ARM: GICv3 ITS: allocate device and collection table
Hi Andre On 02/16/2017 01:03 PM, Shanker Donthineni wrote: Hi Andre, On 01/30/2017 12:31 PM, Andre Przywara wrote:Each ITS maps a pair of a DeviceID (usually the PCI b/d/f triplet) and an EventID (the MSI payload or interrupt ID) to a pair of LPI number and collection ID, which points to the target CPU.This mapping is stored in the device and collection tables, which softwarehas to provide for the ITS to use. Allocate the required memory and hand it the ITS. The maximum number of devices is limited to a compile-time constant exposed in Kconfig. Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx> --- xen/arch/arm/Kconfig | 14 +++++ xen/arch/arm/gic-v3-its.c | 129 +++++++++++++++++++++++++++++++++++++++ xen/arch/arm/gic-v3.c | 5 ++ xen/include/asm-arm/gic_v3_its.h | 55 ++++++++++++++++- 4 files changed, 202 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig index 71734a1..81bc233 100644 --- a/xen/arch/arm/Kconfig +++ b/xen/arch/arm/Kconfig @@ -64,6 +64,20 @@ config MAX_PHYS_LPI_BITSThis can be overriden on the command line with the max_lpi_bits Please try ITS page sizes in the order 64K, 16K and 4K to cover more ITS devices using a flat table. Similar to Linux ITS driver. + void *buffer = NULL; + + attr = GIC_BASER_InnerShareable << GITS_BASER_SHAREABILITY_SHIFT; + attr |= GIC_BASER_CACHE_SameAsInner << GITS_BASER_OUTER_CACHEABILITY_SHIFT;+ attr |= GIC_BASER_CACHE_RaWaWb << GITS_BASER_INNER_CACHEABILITY_SHIFT;+ + /*+ * Setup the BASE register with the attributes that we like. Then read
Limit to 256 ITS pages, ITS spec doesn't support more than 256 ITS pages.
/* Maximum of 256 ITS pages are allowed */
if ( (table_size >> PAGE_BITS(pagesz)) > GITS_BASER_PAGES_MAX )
table_size = BIT(PAGE_BITS(pagesz)) * GITS_BASER_PAGES_MAX;
+ if ( !buffer ) + buffer = alloc_xenheap_pages(order, 0); + if ( !buffer ) + return -ENOMEM; + Please zero memory memset(buffer, 0x00, order << PAGE_SHIFT) -- Shanker Donthineni Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |