• Ian Campbell's avatar
    x86: xen: 64-bit kernel RPL should be 0 · e68266b7
    Ian Campbell authored
    Under Xen 64 bit guests actually run their kernel in ring 3,
    however the hypervisor takes care of squashing descriptor the
    RPLs transparently (in order to allow them to continue to
    differentiate between user and kernel space CS using the RPL).
    Therefore the Xen paravirt backend should use RPL==0 instead of
    1 (or 3). Using RPL==1 causes generic arch code to take
    incorrect code paths because it uses "testl $3, <CS>, je foo"
    type tests for a userspace CS and this considers 1==userspace.
    
    This issue was previously masked because get_kernel_rpl() was
    omitted when setting CS in kernel_thread(). This was fixed when
    kernel_thread() was unified with 32 bit in
    f443ff42.
    Signed-off-by: default avatarIan Campbell <ian.campbell@citrix.com>
    Cc: Christian Kujau <lists@nerdbynature.de>
    Cc: Jeremy Fitzhardinge <Jeremy.Fitzhardinge@citrix.com>
    Cc: Cyrill Gorcunov <gorcunov@gmail.com>
    Cc: Brian Gerst <brgerst@gmail.com>
    LKML-Reference: <1263377768-19600-2-git-send-email-ian.campbell@citrix.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    e68266b7
enlighten.c 27.7 KB