The default USB controller of pc machine type

Hello, I found that the default USB controller for q35 machine type is qemu-xhci while for pc it is piix3-uhci. Here are the results(on qemu-kvm-7.0.0 qemu-kvm-7.0.0): ➜ ~ cat /tmp/usb.xml <domain type="kvm"> <name>USB</name> <uuid>1a81d4ef-6537-4ae8-b257-8a15e0c0525f</uuid> <memory>2097152</memory> <currentMemory>2097152</currentMemory> <vcpu>1</vcpu> <os> <type arch="x86_64" machine="q35">hvm</type> <boot dev="hd"/> </os> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> </devices> </domain> ➜ ~ virsh define /tmp/usb.xml && virsh dumpxml USB|grep usb Domain 'USB' defined from /tmp/usb.xml <controller type='usb' index='0' model='qemu-xhci'> ➜ ~ cat /tmp/usb-pc.xml <domain type="kvm"> <name>USB</name> <uuid>1a81d4ef-6537-4ae8-b257-8a15e0c0525f</uuid> <memory>2097152</memory> <currentMemory>2097152</currentMemory> <vcpu>1</vcpu> <os> <type arch="x86_64" machine="pc">hvm</type> <boot dev="hd"/> </os> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> </devices> </domain> ➜ ~ virsh define /tmp/usb-pc.xml && virsh dumpxml USB|grep usb Domain 'USB' defined from /tmp/usb-pc.xml <controller type='usb' index='0' model='piix3-uhci'> And the default usb controller for q35 has been added since: ed2049ea19 qemu: auto-add generic xhci rather than NEC xhci to Q35 domains As I know, pc machine supports qemu-xhci as well. Morever, the performance of qemu-xhci is better than piix3-uhci. So why not update the default usb controller of pc machine type to qemu-xhci? I think we can improve it here.

On Wed, Jul 13, 2022 at 07:00:17PM +0800, Han Han wrote:
Hello, I found that the default USB controller for q35 machine type is qemu-xhci while for pc it is piix3-uhci. Here are the results(on qemu-kvm-7.0.0 qemu-kvm-7.0.0): ➜ ~ cat /tmp/usb.xml <domain type="kvm"> <name>USB</name> <uuid>1a81d4ef-6537-4ae8-b257-8a15e0c0525f</uuid> <memory>2097152</memory> <currentMemory>2097152</currentMemory> <vcpu>1</vcpu> <os> <type arch="x86_64" machine="q35">hvm</type> <boot dev="hd"/> </os> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> </devices> </domain>
➜ ~ virsh define /tmp/usb.xml && virsh dumpxml USB|grep usb Domain 'USB' defined from /tmp/usb.xml
<controller type='usb' index='0' model='qemu-xhci'>
➜ ~ cat /tmp/usb-pc.xml <domain type="kvm"> <name>USB</name> <uuid>1a81d4ef-6537-4ae8-b257-8a15e0c0525f</uuid> <memory>2097152</memory> <currentMemory>2097152</currentMemory> <vcpu>1</vcpu> <os> <type arch="x86_64" machine="pc">hvm</type> <boot dev="hd"/> </os> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> </devices> </domain>
➜ ~ virsh define /tmp/usb-pc.xml && virsh dumpxml USB|grep usb Domain 'USB' defined from /tmp/usb-pc.xml
<controller type='usb' index='0' model='piix3-uhci'>
And the default usb controller for q35 has been added since: ed2049ea19 qemu: auto-add generic xhci rather than NEC xhci to Q35 domains
As I know, pc machine supports qemu-xhci as well. Morever, the performance of qemu-xhci is better than piix3-uhci. So why not update the default usb controller of pc machine type to qemu-xhci? I think we can improve it here.
A qemu-xhci controller can be added to any x86 machien type regardless of the default, and most mgmt apps will do exactly that. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

On Wed, Jul 13, 2022 at 7:04 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
On Wed, Jul 13, 2022 at 07:00:17PM +0800, Han Han wrote:
Hello, I found that the default USB controller for q35 machine type is qemu-xhci while for pc it is piix3-uhci. Here are the results(on qemu-kvm-7.0.0 qemu-kvm-7.0.0): ➜ ~ cat /tmp/usb.xml <domain type="kvm"> <name>USB</name> <uuid>1a81d4ef-6537-4ae8-b257-8a15e0c0525f</uuid> <memory>2097152</memory> <currentMemory>2097152</currentMemory> <vcpu>1</vcpu> <os> <type arch="x86_64" machine="q35">hvm</type> <boot dev="hd"/> </os> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> </devices> </domain>
➜ ~ virsh define /tmp/usb.xml && virsh dumpxml USB|grep usb Domain 'USB' defined from /tmp/usb.xml
<controller type='usb' index='0' model='qemu-xhci'>
➜ ~ cat /tmp/usb-pc.xml <domain type="kvm"> <name>USB</name> <uuid>1a81d4ef-6537-4ae8-b257-8a15e0c0525f</uuid> <memory>2097152</memory> <currentMemory>2097152</currentMemory> <vcpu>1</vcpu> <os> <type arch="x86_64" machine="pc">hvm</type> <boot dev="hd"/> </os> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> </devices> </domain>
➜ ~ virsh define /tmp/usb-pc.xml && virsh dumpxml USB|grep usb Domain 'USB' defined from /tmp/usb-pc.xml
<controller type='usb' index='0' model='piix3-uhci'>
And the default usb controller for q35 has been added since: ed2049ea19 qemu: auto-add generic xhci rather than NEC xhci to Q35 domains
As I know, pc machine supports qemu-xhci as well. Morever, the performance of qemu-xhci is better than piix3-uhci. So why not update the default usb controller of pc machine type to qemu-xhci? I think we can improve it here.
A qemu-xhci controller can be added to any x86 machien type regardless of the default, and most mgmt apps will do exactly that.
Does that mean, the default USB controller for a specific x86 machine type does NOT matter? And leave the default USB controller to up-layer mgmt apps?
With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

On Fri, Jul 15, 2022 at 02:36:36PM +0800, Han Han wrote:
On Wed, Jul 13, 2022 at 7:04 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
On Wed, Jul 13, 2022 at 07:00:17PM +0800, Han Han wrote:
Hello, I found that the default USB controller for q35 machine type is qemu-xhci while for pc it is piix3-uhci. Here are the results(on qemu-kvm-7.0.0 qemu-kvm-7.0.0): ➜ ~ cat /tmp/usb.xml <domain type="kvm"> <name>USB</name> <uuid>1a81d4ef-6537-4ae8-b257-8a15e0c0525f</uuid> <memory>2097152</memory> <currentMemory>2097152</currentMemory> <vcpu>1</vcpu> <os> <type arch="x86_64" machine="q35">hvm</type> <boot dev="hd"/> </os> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> </devices> </domain>
➜ ~ virsh define /tmp/usb.xml && virsh dumpxml USB|grep usb Domain 'USB' defined from /tmp/usb.xml
<controller type='usb' index='0' model='qemu-xhci'>
➜ ~ cat /tmp/usb-pc.xml <domain type="kvm"> <name>USB</name> <uuid>1a81d4ef-6537-4ae8-b257-8a15e0c0525f</uuid> <memory>2097152</memory> <currentMemory>2097152</currentMemory> <vcpu>1</vcpu> <os> <type arch="x86_64" machine="pc">hvm</type> <boot dev="hd"/> </os> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> </devices> </domain>
➜ ~ virsh define /tmp/usb-pc.xml && virsh dumpxml USB|grep usb Domain 'USB' defined from /tmp/usb-pc.xml
<controller type='usb' index='0' model='piix3-uhci'>
And the default usb controller for q35 has been added since: ed2049ea19 qemu: auto-add generic xhci rather than NEC xhci to Q35 domains
As I know, pc machine supports qemu-xhci as well. Morever, the performance of qemu-xhci is better than piix3-uhci. So why not update the default usb controller of pc machine type to qemu-xhci? I think we can improve it here.
A qemu-xhci controller can be added to any x86 machien type regardless of the default, and most mgmt apps will do exactly that.
Does that mean, the default USB controller for a specific x86 machine type does NOT matter? And leave the default USB controller to up-layer mgmt apps?
Yes, that's our general view for most defaults in fact. There's no single perfect defaults, so we let mgmt apps select thigns explicitly With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
participants (2)
-
Daniel P. Berrangé
-
Han Han