Ramon van Handel wrote:


> The basis for the optimisation is the realisation that once you have to SBE
> anyway, there is absolutely no reason anymore to execute ring0 code in
> ring3.
> We can replace all dangerous instructions and run ring0 code in ring0, with
> the monitor.

Ring{0,1,2} are 'system' privilege in the paging protection scheme.  Ring3
is 'user' privilege.

Running guest ring0 code at ring0 open memory access to PTE.P==1 pages,
which includes the monitor interrupt handlers, and monitor data
structures.  Thus, all memory access instructions would be dangerous.
We'd have to move to the concept of 'shortening' guest kernel segments,
so we leave our selves a safe hole to put the monitor in.

Once you modify the instructions in a page by extending the size
of an instruction (changing an IO to a call), as opposed to
inserting an INT3 (always 1 byte), we have to move from our notion
of simple modified cache pages to a more dynamic translation like
scheme.  The branch offsets change etc.

-Kevin


-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Kevin Lawton                        [EMAIL PROTECTED]
MandrakeSoft, Inc.                  Plex86 developer
http://www.linux-mandrake.com/      http://www.plex86.org/

Reply via email to