From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [QUESTION] x86_64 -> i386/i686 CPU translation between xl and qemu binary? Date: Fri, 5 Feb 2016 00:12:15 +0000 Message-ID: <56B3E8DF.2050805@citrix.com> References: <56b3cb85.c542620a.6af1e.ffff9622@mx.google.com> <56B3CF23.4000404@citrix.com> <37b9c5a5ce090206990842778b8f6eef@crc.id.au> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <37b9c5a5ce090206990842778b8f6eef@crc.id.au> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Steven Haigh Cc: Alex Braunegg , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 04/02/2016 23:14, Steven Haigh wrote: > On 2016-02-05 09:22, Andrew Cooper wrote: >> On 04/02/2016 22:06, Alex Braunegg wrote: >>> root 30511 46.4 0.1 398728 1860 ? RLsl 08:47 0:27 >>> /usr/lib/xen/bin/qemu-system-i386 -xen-domid 6 -chardev >>> socket,id=libxl-cmd,path=/var/run/xen/qmp-libxl-6,server,n >>> owait -no-shutdown -mon chardev=libxl-cmd,mode=control -chardev >>> socket,id=libxenstat-cmd,path=/var/run/xen/qmp-libxenstat-6,server,nowait >>> >>> -mon chardev=libxenstat-cmd,mode=control >>> -nodefaults -name test2 -vnc >>> 0.0.0.0:0,websocket,x509=/etc/pki/xen,password,to=99 -display none >>> -serial >>> pty -device VGA,vgamem_mb=16 -boot order=cd -usb -usbdevice tablet >>> -soundhw >>> ac97 -device rtl8139,id=nic0,netdev=net0,mac=00:16:3e:f1:48:8c -netdev >>> type=tap,id=net0,ifname=vif6.0-emu,script=no,downscript=no -machine >>> xenfv -m >>> 496 -drive file=/dev/zvol/stor >>> age0/xen/test2/disk_sda,if=ide,index=0,media=disk,format=raw,cache=writeback >>> >>> -drive >>> file=/storage0/data-shares/iso/CentOS-6.5-x86_64-minimal.iso,if=ide,index=2, >>> >>> readonly=on,media=c >>> drom,format=raw,cache=writeback,id=ide-5632 >>> >>> ------------------------------------------ >>> >>> So - to me it appears that xl is performing some sort of x86_64 -> >>> i386/i686 >>> instruction translation to make things work. >>> >>> Would this not be introducing a performance impediment by having >>> some sort >>> of extra translation processing going on between xl and the qemu >>> binary? >> >> Qemu is only used for device emulation when used with Xen, not CPU >> emulation. >> >> The "-machine xenfv" tells this to Qemu, and "-xen-domid 6" tells it >> which Xen domain to connect to. >> >> All HVM domains run with hardware virtualisation extensions, which are >> managed by Xen itself. > > Hi Andrew, > > Thanks for this response - to ensure I have this correct, there is no > need for qemu-upstream to build qemu-system-x86_64 as the CPU is > directly handled by Xen and not by qemu Correct. > - thereby passing through the capabilities of the CPU directly to the > guest. As such, as long as qemu starts on a 64 bit machine it will be > able to run 64 bit OS/kernel etc. Incorrect. A 32bit Qemu is perfectly able to emulate devices for a 64bit OS. The ABI of the emulated devices is not tied to the running width of Qemu or the OS. > > I ask this as I see a number of qemu packages that do include > qemu-system-x86_64 as well as qemu-system-i386 - which makes me seek > clarification. I would assume that these are just not built to use Xen > as the hypervisor for hardware acceleration? > This will just be down to the choice of the person who packaged qemu for a particular distro. ~Andrew