[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] tests/xen-access: Added vm_event emulation tests
On 04/14/2017 09:08 PM, Tamas K Lengyel wrote: > > > On Thu, Apr 13, 2017 at 4:20 AM, Razvan Cojocaru > <rcojocaru@xxxxxxxxxxxxxxx <mailto:rcojocaru@xxxxxxxxxxxxxxx>> wrote: > > On 04/12/2017 08:11 PM, Tamas K Lengyel wrote: > > > > > > On Mon, Apr 10, 2017 at 3:44 AM, Razvan Cojocaru > > + emulate = 1; > > + memaccess = 1; > > + } > > #if defined(__i386__) || defined(__x86_64__) > > else if ( !strcmp(argv[0], "breakpoint") ) > > { > > @@ -536,7 +551,7 @@ int main(int argc, char *argv[]) > > } > > > > rc = xc_set_mem_access(xch, domain_id, default_access, > > START_PFN, > > - (xenaccess->max_gpfn - START_PFN) ); > > + emulate ? 1000 : > > (xenaccess->max_gpfn - START_PFN)); > > > > > > Why only 1000? What if the domain has less then 1000? > > Because it will kill the guest to emulate everything, and the emulator > still can't handle all instructions (this is easy to see by using all > the guest's pages and looking at the output of xl dmesg with loglvl=all > guest_loglvl=all on the Xen command line). > > > So what's the guarantee that the emulator will work if you only do it > only up to the first 1000 pages? Seems totally arbitrary to me. If the > emulator can't handle all instructions then you would have to check that > the instruction for which you are returning the emulate flag is in the > list of instruction that can be handled.. Can such a list be derived > right now? If an instruction can't be emulated it will be shown as such in the ring buffer used by xl dmesg. Speaking of that, I'd like to, at some point, send a patch that sends a vm_event saying that emulation failed to userspace when that is the case, to give it a chance to do something else (for example use altp2m, or lift the page restrictions). We can also probably go through the emulator code and build an exact list of all the officially supported instructions, but I believe that that would have to be manual work - I am not aware of a tool to extract them or a header file that lists them in some structure. I'd love to be wrong about this. As for your question, there's no guarantee that the emulator will work,obut that's not why I chose 1000. I chose that number because the application will get less EPT events, and the guest will not be bogged down by handling them. But in my experiments it's also less likely to hit unhandleable instructions in the first 1000 pages since those are usually used by the guest kernel, drivers, and so on, and are less likely to cause problems. In any case, I don't mind dropping the 1000 pages limit - I can always build a custom xen-access when I need it. Thanks, Razvan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |