On Fri, 2009-07-10 at 19:17 +1000, Benjamin Herrenschmidt wrote: > On Fri, 2009-07-10 at 17:15 +0800, Liu Yu-B13201 wrote: > > Sounds reasonable. > > > > There are some old patchset which implemented the binary patch as Ben > > described. > > > > http://marc.info/?l=kvm-ppc&m=122154653905212&w=2 > > http://marc.info/?l=kvm-ppc&m=122154657905306&w=2 > > > > Interesting. Any reason why that wasn't merged ? Ok, I had a look and it seems like he's rewriting the guest instructions from the hypervisor. I prefer having the guest rewrite it's own instructions. That does mean that the layout inside the magic page has to be fixed to a certain extent (or we need the hypervisor to at least pass some kind of description of where the various fields are) but that's a much better approach I believe. The main reason is because of the user-readable SPRG4..7. Because the guest will -not- trap when reading them, it will be able to read the value from the real underlying registers. However, when the writes to them are replaced by writing to the magic page, the underlying register is not kept in sync and things will break. Thus I prefer having the guest itself replace those instructions with magic page accesses in both case (stores and loads), it becomes the guest responsibility to ensure it's properly using the magic page -only- and doesn't trap on the actual instructions. We would thus continue trapping on the normal instructions and emulate them the old way (though we can probably move that emulation to asm code that is run before the switch back to the linux mm via the magic page :-) and thus make the emulation much faster, but that's a different deal. But still, the bulk of the patches for adding the cleaner paravirt interfaces, the magic page etc... seems sane. Cheers, Ben. -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html