[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 0/6] allow xc_domain_maximum_gpfn() to observe full GFN value
The present remaining osstest failures are due to truncation of the GFN resulting from the hypercall return value being passed back through the ioctl() return value (on Linux and Solaris), which is "int", plus the same for some further internal interfaces (osdep_hypercall(), xencall<N>()). Some of the memory-op sub-ops, like the one involved here, may pass back values which don't fit into "int". Different effects can be observed with a 32- and 64-bit tool stack, each causing one test to fail. The changes here will only deal with the truncation resulting when sizeof(int) < sizeof(long), i.e. only on 64-bit. For the 32-bit tool stack case to work in such a situation, yet uglier hackery would be needed. But even if the full value got passed back, we'd then hit: #ifdef __i386__ /* Very large domains (> 1TB) will exhaust virtual address space. */ if ( nr_pfns > 0x0fffffff ) { errno = E2BIG; PERROR("Cannot save this big a guest"); return -1; } #endif in xg_sr_save_x86_hvm.c:x86_hvm_setup() (and there's a similar check on the restore path). I wonder in how far a guest property can legitimately cause an osstest push to be prevented by causing a failure like this one. And of course I'm also puzzled by the ovmf change having managed to make it through its push gate. Note that I can't tell at this point whether there aren't further issues, as I've not actually tried the ovmf case. I could easily see there being oom issues there then, once to full value gets used for setting up the p2m monitoring during migration. Or processing might then take overly long. See the individual patches for changes in v2, all of which are to address review feedback. 1: x86/HVM: wire up multicalls 2: libxencall: osdep_hypercall() should return long 3: libxencall: introduce variant of xencall2() returning long 4: libxc: use multicall for memory-op on Linux (and Solaris) 5: libxencall: drop bogus mentioning of xencall6() 6: libxc: make xc_domain_maximum_gpfn() endianness-agnostic Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |