[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Xen PV PTE ABI (or lack thereof)

On 21/01/16 13:55, Jan Beulich wrote:

>>>> I was intending to have CONFIG_PV_PTE_DEBUG as an EXPERT option,
>>>> disabled by default even in debug builds.
>>>> There should not be an ABI difference between release and "normal" debug
>>>> builds.
>>> Well, I see your point, but as said above I'm not convinced
>>> disabling all that code is the right solution. In fact, what you
>>> propose is not far away from removing that code altogether.
>> The two bits are only used for specialised debugging.  They should be
>> relegated to people doing specific debugging, and not interfere with the
>> overwhelming majority of cases where Xen doesn't need to use any
>> software available PTE bits.
> Your repeated claim that _PAGE_GUEST_KERNEL is purely debugging only
> makes we wonder how you would mean to adjust adjust_guest_l1e() with
> that flag gone (most notably the last of its if()-s).

diff --git a/xen/arch/x86/mm.c

index b81d1fd..46ef5ce



@@ -1060,10 +1060,11 @@

                  == (_PAGE_GUEST_KERNEL|_PAGE_GLOBAL)

                 MEM_LOG("Global bit is set to kernel page


-            if ( !(l1e_get_flags((pl1e)) & _PAGE_USER)

-                l1e_add_flags((pl1e),

-            if ( !(l1e_get_flags((pl1e)) & _PAGE_GUEST_KERNEL)

-                l1e_add_flags((pl1e),

+            if ( l1e_get_flags((pl1e)) & _PAGE_USER

+                l1e_add_flags((pl1e),


+                l1e_remove_flags((pl1e),

+            l1e_add_flags((pl1e),


     } while ( 0 )

_PAGE_GUEST_KERNEL isn't in the ABI, which means that the 2nd if() is
the only piece of code which validly sets it.

Read-modify-write operations already don't function correctly as
_PAGE_GUEST_KERNEL is a hidden saturating bit from the guests point of view.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.