RE: Switching from writeable pagetabletoshadowlog-dirtyat runtime

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

RE: Switching from writeable pagetabletoshadowlog-dirtyat runtime

Ian Pratt
 
> We found that in 32-bit code, the shadow_fault() do one more
> thing than 64-bit code.
> The following code in file shadow32.c checks the L1 page
> table with RW bit removed and make the shadow with RW bit, it
> does not inject the fault to guest.
> Does this is a work-around for switch from writable pagetable
> to shadow mode enable?
> Does this code makes sense to the writeable pagetable, and
> then may be one reason that 32bit log-dirty code can work?

Yep, the code you highlight is in shadow32 to support writable pagetable
emulation when in shadow mode.

My original shadow mode implementation didn't need special case code to
handle writable pagetables as the shadow fault handler was called after
the writeable pagetable handler in the main page fault handler: the
writeable pagetable fault was handled but then eecution was allowed to
drop through into the shadow fault handler, propagating the change into
the shadow pagetable without having to take another fault. It may be
possible to do something similar to remove the special case, but I'm
less familiar with the current code.

Ian

_______________________________________________
Xen-devel mailing list
[hidden email]
http://lists.xensource.com/xen-devel
Reply | Threaded
Open this post in threaded view
|

RE: Switching from writeable pagetabletoshadowlog-dirtyat runtime

Nakajima, Jun
Ian Pratt wrote:

>> We found that in 32-bit code, the shadow_fault() do one more thing
>> than 64-bit code. The following code in file shadow32.c checks the
>> L1 page table with RW bit removed and make the shadow with RW bit, it
>> does not inject the fault to guest.
>> Does this is a work-around for switch from writable pagetable to
>> shadow mode enable? Does this code makes sense to the writeable
>> pagetable, and then may be one reason that 32bit log-dirty code can
>> work?
>
> Yep, the code you highlight is in shadow32 to support writable
> pagetable emulation when in shadow mode.
>
> My original shadow mode implementation didn't need special case code
> to handle writable pagetables as the shadow fault handler was called
> after the writeable pagetable handler in the main page fault handler:
> the writeable pagetable fault was handled but then eecution was
> allowed to drop through into the shadow fault handler, propagating
> the change into the shadow pagetable without having to take another
> fault. It may be possible to do something similar to remove the
> special case, but I'm less familiar with the current code.
>
> Ian

So, let's add the code to shadow.c and continue on debugging.

Jun
---
Intel Open Source Technology Center

_______________________________________________
Xen-devel mailing list
[hidden email]
http://lists.xensource.com/xen-devel