|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 2/9] arm/mem_access: Add defines supporting PTs with varying page sizes
Hi Sergej, On 20/06/17 21:33, Sergej Proskurin wrote: We already define PAGE_SHIFT_* in xen/iommu.h. You probably want to consolidate them in a single common place (maybe xen/paging.h or xen/lib.h?). + +#define third_shift(gran) (PAGE_SHIFT_##gran) +#define third_size(gran) ((paddr_t)1 << third_shift(gran)) + +#define second_shift(gran) (third_shift(gran) + LPAE_SHIFT_##gran) +#define second_size(gran) ((paddr_t)1 << second_shift(gran)) + +#define first_shift(gran) (second_shift(gran) + LPAE_SHIFT_##gran) +#define first_size(gran) ((paddr_t)1 << first_shift(gran)) + +/* Note that there is no zeroeth lookup level with a 64K granule size. */ +#define zeroeth_shift(gran) (first_shift(gran) + LPAE_SHIFT_##gran) +#define zeroeth_size(gran) ((paddr_t)1 << zeroeth_shift(gran)) + +#define GUEST_TABLE_OFFSET(offs, gran) ((paddr_t)(offs) & lpae_entry_mask(gran)) +#define third_guest_table_offset(gva, gran) GUEST_TABLE_OFFSET((gva >> third_shift(gran)), gran) +#define second_guest_table_offset(gva, gran) GUEST_TABLE_OFFSET((gva >> second_shift(gran)), gran) +#define first_guest_table_offset(gva, gran) GUEST_TABLE_OFFSET((gva >> first_shift(gran)), gran) +#define zeroeth_guest_table_offset(gva, gran) GUEST_TABLE_OFFSET((gva >> zeroeth_shift(gran)), gran) I don't think we should expose those macros and AFAICT you only use them once. So I would prefer if you move open-code them in the helpers below. Please add a comment saying 64K does not have zeroeth page-table. + return 0; \ + else \ + return zeroeth_guest_table_offset((paddr_t)gva, gran##K); \ +} \ + +GUEST_TABLE_OFFSET_HELPERS(4); +#ifdef CONFIG_ARM_64 +GUEST_TABLE_OFFSET_HELPERS(16); +GUEST_TABLE_OFFSET_HELPERS(64); +#endif Please undef both GUEST_TABLE_OFFSET and GUEST_TABLE_OFFSET_HELPERS. + #endif /* __ASSEMBLY__ */ /* Cheers, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |