[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 0/2] exclude hyperv synic sections from vhost
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [PATCH 0/2] exclude hyperv synic sections from vhost |
Date: |
Thu, 9 Jan 2020 12:16:19 +0000 |
User-agent: |
Mutt/1.13.0 (2019-11-30) |
* Roman Kagan (address@hidden) wrote:
> On Wed, Jan 08, 2020 at 01:53:51PM +0000, Dr. David Alan Gilbert (git) wrote:
> > Hyperv's synic (that we emulate) is a feature that allows the guest
> > to place some magic (4k) pages of RAM anywhere it likes in GPA.
> > This confuses vhost's RAM section merging when these pages
> > land over the top of hugepages.
> >
> > Since they're not normal RAM, and they shouldn't have vhost DMAing
> > into them, exclude them from the vhost set.
>
> But they *are* normal RAM. If the guest driver sets up the device to
> DMA to a SynIC page so be it, and the guest deserves what it gets.
I don't think that's guaranteed to work.
However, in our case the guest isn't doing anything that crazy; it's
just setting the GPA of these pages in an inconveninent place for us.
> > I do that by marking them as device-ram and then excluding device-ram
> > from vhost.
> >
> > bz: https://bugzilla.redhat.com/show_bug.cgi?id=1779041
>
> I was pointed a while back by Vitaly at
> https://bugs.launchpad.net/qemu/+bug/1811533 which appeared to be the
> same issue, but failed to reproduce the problem. Can you please provide
> some more detail as to how it's triggered?
Our test script is:
/usr/libexec/qemu-kvm \
-name 'dgilbert-vm1' \
-machine q35 \
-nodefaults \
-device VGA,bus=pcie.0,addr=0x1 \
-m 4096 \
-object
memory-backend-file,size=1024M,prealloc=no,mem-path=/mnt/kvm_hugepage,policy=default,id=mem-mem0
\
-object
memory-backend-file,size=3072M,prealloc=no,mem-path=/mnt/kvm_hugepage,policy=default,id=mem-mem1
\
-smp 16,maxcpus=16,cores=8,threads=1,dies=1,sockets=2 \
-numa node,memdev=mem-mem0 \
-numa node,memdev=mem-mem1 \
-cpu SandyBridge,hv_stimer,hv_time,hv_synic,hv_vpindex \
-device
pcie-root-port,id=pcie.0-root-port-2,slot=2,chassis=2,addr=0x2,bus=pcie.0 \
-device qemu-xhci,id=usb1,bus=pcie.0-root-port-2,addr=0x0 \
-device
pcie-root-port,id=pcie.0-root-port-3,slot=3,chassis=3,addr=0x3,bus=pcie.0 \
-device virtio-scsi-pci,id=virtio_scsi_pci0,bus=pcie.0-root-port-3,addr=0x0
\
-drive
id=drive_image1,if=none,snapshot=off,aio=threads,cache=none,format=qcow2,file=./win2019-64-virtio-scsi.qcow2
\
-device scsi-hd,id=image1,drive=drive_image1 \
-device
pcie-root-port,id=pcie.0-root-port-4,slot=4,chassis=4,addr=0x4,bus=pcie.0 \
-device
virtio-net-pci,mac=9a:5c:d7:9f:cd:48,id=id7ex9m8,netdev=idim5Sro,bus=pcie.0-root-port-4,addr=0x0
\
-netdev tap,id=idim5Sro,vhost=on \
-device usb-tablet,id=usb-tablet1,bus=usb1.0,port=1 \
-vnc :1 \
-rtc base=localtime,clock=host,driftfix=slew \
-boot order=cdn,once=c,menu=off,strict=off \
-enable-kvm \
-device
pcie-root-port,id=pcie_extra_root_port_0,slot=5,chassis=5,addr=0x5,bus=pcie.0 \
-monitor stdio -qmp tcp:0:4444,server,nowait
Dave
> Thanks,
> Roman.
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK
- Re: [PATCH 2/2] hyperv/synic: Allocate as ram_device, (continued)