Re: [PATCH v2 1/4] KVM: x86: use new CS.RPL as CPL during task switch
From: Paolo Bonzini
Date: Fri May 16 2014 - 18:20:02 EST
Il 15/05/2014 18:51, Paolo Bonzini ha scritto:
During task switch, all of CS.DPL, CS.RPL, SS.DPL must match (in addition
to all the other requirements) and will be the new CPL. So far this
worked by carefully setting the CS selector and flag before doing the
s/flag/EFLAGS/
task switch; however, this will not work once we get the CPL from SS.DPL:
setting SS itself would fail if the task switch changes the privilege
level.
More precisely, before patch 4 in this series setting CS.selector would
already change the CPL. After it, you actually have to set the full
segment descriptor cache to change the CPL, so we cannot use
ctxt->ops->cpl(ctxt) to retrieve the CPL during a task switch. The
check that fails without this patch is that SS.DPL must be == CPL, and
the failure happens because ctxt->ops->cpl(ctxt) is the *old* SS.DPL.
Paolo
Temporarily assume that the CPL comes from CS.RPL during task switch
to a protected-mode task. This is the same approach used in QEMU's
emulation code, which (until version 2.0) manually tracks the CPL.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/