|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: IOCTL_PRIVCMD_MMAPBATCH on Xen 4.13.0
On 15/05/2020 22:06, Manuel Bouyer wrote:
> [CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments
> unless you have verified the sender and know the content is safe.
>
> On Fri, May 15, 2020 at 10:00:07PM +0100, Andrew Cooper wrote:
>> What is qemu doing at the time? Is it by any chance trying to map the
>> IOREQ server frame?
> Here's what gdb says about it:
> Core was generated by `qemu-dm'.
> Program terminated with signal SIGSEGV, Segmentation fault.
> #0 0x000000000046997d in cpu_x86_init (
> cpu_model=cpu_model@entry=0x4d622d "qemu32")
> at
> /home/bouyer/pkgbuild/current/sysutils/xentools413/work/xen-4.13.0/tools/qemu-xen-traditional/i386-dm/helper2.c:156
> 156 rc = xenevtchn_bind_interdomain(
> --Type <RET> for more, q to quit, c to continue without paging--
> [Current thread is 1 (process 1480)]
> (gdb) where
> #0 0x000000000046997d in cpu_x86_init (
> cpu_model=cpu_model@entry=0x4d622d "qemu32")
> at
> /home/bouyer/pkgbuild/current/sysutils/xentools413/work/xen-4.13.0/tools/qemu-xen-traditional/i386-dm/helper2.c:156
> #1 0x000000000043628d in pc_init1 (ram_size=<optimized out>,
> vga_ram_size=4194304, boot_device=0x7f7fff460397 "cda", pci_enabled=1,
> cpu_model=0x4d622d "qemu32", initrd_filename=<optimized out>,
> kernel_cmdline=<optimized out>, kernel_filename=<optimized out>)
> at
> /home/bouyer/pkgbuild/current/sysutils/xentools413/work/xen-4.13.0/tools/qemu-xen-traditional/hw/pc.c:829
> #2 0x00000000004636e7 in xen_init_fv (ram_size=0, vga_ram_size=4194304,
> boot_device=0x7f7fff460397 "cda", kernel_filename=0x0,
> kernel_cmdline=0x4abff6 "", initrd_filename=0x0, cpu_model=0x0,
> direct_pci=0x0)
> at
> /home/bouyer/pkgbuild/current/sysutils/xentools413/work/xen-4.13.0/tools/qemu-xen-traditional/hw/xen_machine_fv.c:405
> #3 0x00000000004a975b in main (argc=23, argv=0x7f7fff45fc78,
> envp=<optimized out>)
> at
> /home/bouyer/pkgbuild/current/sysutils/xentools413/work/xen-4.13.0/tools/qemu-xen-traditional/vl.c:6014
>
> Does it help ?
Yes and no. This is collateral damage of earlier bug.
What failed was xen_init_fv()'s
shared_page = xc_map_foreign_range(xc_handle, domid, XC_PAGE_SIZE,
PROT_READ|PROT_WRITE, ioreq_pfn);
if (shared_page == NULL) {
fprintf(logfile, "map shared IO page returned error %d\n", errno);
exit(-1);
}
because we've ended up with a non-NULL pointer with no mapping behind
it, hence the SIGSEGV for the first time we try to use the pointer.
Whatever logic is behind xc_map_foreign_range() should have returned
NULL or a real mapping.
ioreq_pfn ought to be something just below the 4G boundary, and the
toolstack ought to put memory there in the first place. Can you
identify what value ioreq_pfn has, and whether it matches up with the
magic gfn range as reported by `xl create -vvv` for the guest?
~Andrew
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |