|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86: partially revert use of 2M mappings for hypervisor image
On 14/03/16 15:41, Jan Beulich wrote:
>>>> On 14.03.16 at 16:23, <andrew.cooper3@xxxxxxxxxx> wrote:
>> On 14/03/16 15:12, Jan Beulich wrote:
>>> --- a/xen/arch/x86/setup.c
>>> +++ b/xen/arch/x86/setup.c
>>> @@ -497,6 +497,17 @@ static void __init kexec_reserve_area(st
>>> #endif
>>> }
>>>
>>> +static inline bool_t using_2M_mapping(void)
>>> +{
>>> + return !l1_table_offset((unsigned long)__2M_text_end) &&
>>> + !l1_table_offset((unsigned long)__2M_rodata_start) &&
>>> + !l1_table_offset((unsigned long)__2M_rodata_end) &&
>>> + !l1_table_offset((unsigned long)__2M_init_start) &&
>>> + !l1_table_offset((unsigned long)__2M_init_end) &&
>>> + !l1_table_offset((unsigned long)__2M_rwdata_start) &&
>>> + !l1_table_offset((unsigned long)__2M_rwdata_end);
>> I would recommend
>>
>> #ifdef EFI
>> return 1;
>> #else
>> return 0;
>> #endif
>>
>> The compiler is unable to collapse that expression into a constant,
>> because it can only be evaluated at link time.
> But that wouldn't work, since setup.c gets compiled just once. The
> only usable difference in building is the linking stage. (And
> performance here is of no issue - this gets executed exactly twice.)
Oh yes - that fact keeps on escaping me. It is only an interim
solution, so is fine to stay.
>>> @@ -922,6 +942,8 @@ void __init noreturn __start_xen(unsigne
>>> * Undo the temporary-hooking of the l1_identmap.
>>> __2M_text_start
>>> * is contained in this PTE.
>>> */
>>> + BUG_ON(l2_table_offset((unsigned long)_erodata) ==
>>> + l2_table_offset((unsigned long)_stext));
>> Is this intentional to stay, or the remnants of debugging?
> This is intentional, as it documents the validity of the immediately
> following page table write: The change is not undoing the RWX ->
> RX change that your original patch did, and using RX past
> _erodata would obviously be wrong.
Ah yes.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |