|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/3] xen/arm: fix mask calculation in init_pdx
Hi, On 5/7/19 10:35 AM, Jan Beulich wrote: On 07.05.19 at 10:59, <julien.grall@xxxxxxx> wrote:On 5/7/19 8:40 AM, Jan Beulich wrote:On 06.05.19 at 17:26, <julien.grall@xxxxxxx> wrote:On 5/6/19 10:06 AM, Jan Beulich wrote:On 03.05.19 at 22:50, <sstabellini@xxxxxxxxxx> wrote:+ mask = pdx_init_mask(1ULL << (MAX_ORDER + PAGE_SHIFT));PAGE_SIZE << MAX_ORDER?Hmmm, I am not entirely convince this will give the correct value because PAGE_SIZE is defined as (_AC(1, L) << PAGE_SHIFT.Oh, indeed, for an abstract 32-bit arch this would de-generate, due to MAX_ORDER being 20. Nevertheless I think the expression used invites for "cleaning up" (making the same mistake I've made), and since this is in Arm-specific code (where MAX_ORDER is 18) I think it would still be better to use the suggested alternative.The comment on top of PAGE_SIZE in asm-x86/page.h leads to think that PAGE_SIZE should use signed quantities. So I am not sure whether it is safe to switch to UL here.It's not (at least when keeping past x86-32 in the picture): Extending to unsigned long long works differently when the type is "unsigned long". This matters when using things like ~(PAGE_SIZE - 1).If we keep PAGE_SIZE as signed quantities, then I would rather not used your suggestion because this may introduce buggy code if MAX_ORDER is ever updated on Arm.A BUILD_BUG_ON() could help prevent this. Good point. Yes this is unrelated to the case Stefano is trying to fix, however Stefano & I have also been discussing of other potential issues with PDX.I wonder whether pdx_init_mask() itself wouldn't better apply this (lower) capDo you mean always returning (PAGE_SIZE << MAX_ORDER) or capping the init mask? Note that the later will not produce the same behavior as this patch. I would rather try to address the most important/concerning one at the same time. Stefano's patch is actually fixing all the known issues with PDX on Arm. 2) is not overly critical, but I think 1) should be addressed. At least on Arm, I don't see any real value to initialize the PDX mask with a base address. I would be more keen to implement pdx_init_mask() as: return fill_mask(((uint64_t)PAGE_SIZE << MAX_ORDER - 1);But (besides the missing closing parenthese) that's not what x86 wants. Could you remind me why? Cheers, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |