196560cb3SMarkus Armbruster= How to convert to -device & friends = 296560cb3SMarkus Armbruster 396560cb3SMarkus Armbruster=== Specifying Bus and Address on Bus === 496560cb3SMarkus Armbruster 596560cb3SMarkus ArmbrusterIn qdev, each device has a parent bus. Some devices provide one or 696560cb3SMarkus Armbrustermore buses for children. You can specify a device's parent bus with 796560cb3SMarkus Armbruster-device parameter bus. 896560cb3SMarkus Armbruster 996560cb3SMarkus ArmbrusterA device typically has a device address on its parent bus. For buses 1096560cb3SMarkus Armbrusterwhere this address can be configured, devices provide a bus-specific 1123bf93b2SMarkus Armbrusterproperty. Examples: 1296560cb3SMarkus Armbruster 1396560cb3SMarkus Armbruster bus property name value format 1496560cb3SMarkus Armbruster PCI addr %x.%x (dev.fn, .fn optional) 1596560cb3SMarkus Armbruster I2C address %u 1696560cb3SMarkus Armbruster SCSI scsi-id %u 1723bf93b2SMarkus Armbruster IDE unit %u 1823bf93b2SMarkus Armbruster HDA cad %u 1923bf93b2SMarkus Armbruster virtio-serial-bus nr %u 2023bf93b2SMarkus Armbruster ccid-bus slot %u 2123bf93b2SMarkus Armbruster USB port %d(.%d)* (port.port...) 2296560cb3SMarkus Armbruster 2396560cb3SMarkus ArmbrusterExample: device i440FX-pcihost is on the root bus, and provides a PCI 2496560cb3SMarkus Armbrusterbus named pci.0. To put a FOO device into its slot 4, use -device 2596560cb3SMarkus ArmbrusterFOO,bus=/i440FX-pcihost/pci.0,addr=4. The abbreviated form bus=pci.0 2696560cb3SMarkus Armbrusteralso works as long as the bus name is unique. 2796560cb3SMarkus Armbruster 2896560cb3SMarkus Armbruster=== Block Devices === 2996560cb3SMarkus Armbruster 3096560cb3SMarkus ArmbrusterA QEMU block device (drive) has a host and a guest part. 3196560cb3SMarkus Armbruster 3296560cb3SMarkus ArmbrusterIn the general case, the guest device is connected to a controller 3396560cb3SMarkus Armbrusterdevice. For instance, the IDE controller provides two IDE buses, each 341c9f3b88SMarkus Armbrusterof which can have up to two devices, and each device is a guest part, 351c9f3b88SMarkus Armbrusterand is connected to a host part. 3696560cb3SMarkus Armbruster 3796560cb3SMarkus ArmbrusterExcept we sometimes lump controller, bus(es) and drive device(s) all 3896560cb3SMarkus Armbrustertogether into a single device. For instance, the ISA floppy 3996560cb3SMarkus Armbrustercontroller is connected to up to two host drives. 4096560cb3SMarkus Armbruster 4196560cb3SMarkus ArmbrusterThe old ways to define block devices define host and guest part 4296560cb3SMarkus Armbrustertogether. Sometimes, they can even define a controller device in 4396560cb3SMarkus Armbrusteraddition to the block device. 4496560cb3SMarkus Armbruster 4596560cb3SMarkus ArmbrusterThe new way keeps the parts separate: you create the host part with 4696560cb3SMarkus Armbruster-drive, and guest device(s) with -device. 4796560cb3SMarkus Armbruster 4896560cb3SMarkus ArmbrusterThe various old ways to define drives all boil down to the common form 4996560cb3SMarkus Armbruster 5023bf93b2SMarkus Armbruster -drive if=TYPE,bus=BUS,unit=UNIT,OPTS... 5196560cb3SMarkus Armbruster 5296560cb3SMarkus ArmbrusterTYPE, BUS and UNIT identify the controller device, which of its buses 5396560cb3SMarkus Armbrusterto use, and the drive's address on that bus. Details depend on TYPE. 5423bf93b2SMarkus Armbruster 5523bf93b2SMarkus ArmbrusterInstead of bus=BUS,unit=UNIT, you can also say index=IDX. 5696560cb3SMarkus Armbruster 5796560cb3SMarkus ArmbrusterIn the new way, this becomes something like 5896560cb3SMarkus Armbruster 5996560cb3SMarkus Armbruster -drive if=none,id=DRIVE-ID,HOST-OPTS... 6096560cb3SMarkus Armbruster -device DEVNAME,drive=DRIVE-ID,DEV-OPTS... 6196560cb3SMarkus Armbruster 6223bf93b2SMarkus ArmbrusterThe old OPTS get split into HOST-OPTS and DEV-OPTS as follows: 6323bf93b2SMarkus Armbruster 6423bf93b2SMarkus Armbruster* file, format, snapshot, cache, aio, readonly, rerror, werror go into 6523bf93b2SMarkus Armbruster HOST-OPTS. 6623bf93b2SMarkus Armbruster 6723bf93b2SMarkus Armbruster* cyls, head, secs and trans go into HOST-OPTS. Future work: they 6823bf93b2SMarkus Armbruster should go into DEV-OPTS instead. 6923bf93b2SMarkus Armbruster 7023bf93b2SMarkus Armbruster* serial goes into DEV-OPTS, for devices supporting serial numbers. 7123bf93b2SMarkus Armbruster For other devices, it goes nowhere. 7223bf93b2SMarkus Armbruster 7323bf93b2SMarkus Armbruster* media is special. In the old way, it selects disk vs. CD-ROM with 7423bf93b2SMarkus Armbruster if=ide, if=scsi and if=xen. The new way uses DEVNAME for that. 7523bf93b2SMarkus Armbruster Additionally, readonly=on goes into HOST-OPTS. 7623bf93b2SMarkus Armbruster 7723bf93b2SMarkus Armbruster* addr is special, see if=virtio below. 7823bf93b2SMarkus Armbruster 7923bf93b2SMarkus ArmbrusterThe -device argument differs in detail for each type of drive: 8096560cb3SMarkus Armbruster 8196560cb3SMarkus Armbruster* if=ide 8296560cb3SMarkus Armbruster 8323bf93b2SMarkus Armbruster -device DEVNAME,drive=DRIVE-ID,bus=IDE-BUS,unit=UNIT 8496560cb3SMarkus Armbruster 8523bf93b2SMarkus Armbruster where DEVNAME is either ide-hd or ide-cd, IDE-BUS identifies an IDE 8623bf93b2SMarkus Armbruster bus, normally either ide.0 or ide.1, and UNIT is either 0 or 1. 8796560cb3SMarkus Armbruster 8896560cb3SMarkus Armbruster* if=scsi 8996560cb3SMarkus Armbruster 9096560cb3SMarkus Armbruster The old way implicitly creates SCSI controllers as needed. The new 9196560cb3SMarkus Armbruster way makes that explicit: 9296560cb3SMarkus Armbruster 9396560cb3SMarkus Armbruster -device lsi53c895a,id=ID 9496560cb3SMarkus Armbruster 9596560cb3SMarkus Armbruster As for all PCI devices, you can add bus=PCI-BUS,addr=DEVFN to 9696560cb3SMarkus Armbruster control the PCI device address. 9796560cb3SMarkus Armbruster 9823bf93b2SMarkus Armbruster This SCSI controller provides a single SCSI bus, named ID.0. Put a 9923bf93b2SMarkus Armbruster disk on it: 10096560cb3SMarkus Armbruster 10123bf93b2SMarkus Armbruster -device DEVNAME,drive=DRIVE-ID,bus=ID.0,scsi-id=UNIT 102a5c062edSStefan Hajnoczi 10323bf93b2SMarkus Armbruster where DEVNAME is either scsi-hd, scsi-cd or scsi-generic. 10496560cb3SMarkus Armbruster 10596560cb3SMarkus Armbruster* if=floppy 10696560cb3SMarkus Armbruster 1074a27a638SMarkus Armbruster -device floppy,unit=UNIT,drive=DRIVE-ID 10896560cb3SMarkus Armbruster 1094a27a638SMarkus Armbruster Without any -device floppy,... you get an empty unit 0 and no unit 1104a27a638SMarkus Armbruster 1. You can use -nodefaults to suppress the default unit 0, see 11123bf93b2SMarkus Armbruster "Default Devices". 11296560cb3SMarkus Armbruster 11396560cb3SMarkus Armbruster* if=virtio 11496560cb3SMarkus Armbruster 11565d6dcbdSStefan Hajnoczi -device virtio-blk-pci,drive=DRIVE-ID,class=C,vectors=V,ioeventfd=IOEVENTFD 11696560cb3SMarkus Armbruster 11796560cb3SMarkus Armbruster This lets you control PCI device class and MSI-X vectors. 11896560cb3SMarkus Armbruster 11923bf93b2SMarkus Armbruster IOEVENTFD controls whether or not ioeventfd is used for virtqueue 12023bf93b2SMarkus Armbruster notify. It can be set to on (default) or off. 12165d6dcbdSStefan Hajnoczi 12296560cb3SMarkus Armbruster As for all PCI devices, you can add bus=PCI-BUS,addr=DEVFN to 12323bf93b2SMarkus Armbruster control the PCI device address. This replaces option addr available 12423bf93b2SMarkus Armbruster with -drive if=virtio. 12596560cb3SMarkus Armbruster 12696560cb3SMarkus Armbruster* if=pflash, if=mtd, if=sd, if=xen are not yet available with -device 12796560cb3SMarkus Armbruster 128480324ecSThomas HuthFor USB storage devices, you can use something like: 12996560cb3SMarkus Armbruster 130a5c062edSStefan Hajnoczi -device usb-storage,drive=DRIVE-ID,removable=RMB 131a5c062edSStefan Hajnoczi 13223bf93b2SMarkus ArmbrusterThe removable parameter gives control over the SCSI INQUIRY removable 13323bf93b2SMarkus Armbruster(RMB) bit. USB thumbdrives usually set removable=on, while USB hard 13423bf93b2SMarkus Armbrusterdisks set removable=off. 13523bf93b2SMarkus Armbruster 13623bf93b2SMarkus ArmbrusterBug: usb-storage pretends to be a block device, but it's really a SCSI 13723bf93b2SMarkus Armbrustercontroller that can serve only a single device, which it creates 13823bf93b2SMarkus Armbrusterautomatically. The automatic creation guesses what kind of guest part 13923bf93b2SMarkus Armbrusterto create from the host part, like -drive if=scsi. Host and guest 14023bf93b2SMarkus Armbrusterpart are not cleanly separated. 14196560cb3SMarkus Armbruster 14296560cb3SMarkus Armbruster=== Character Devices === 14396560cb3SMarkus Armbruster 14496560cb3SMarkus ArmbrusterA QEMU character device has a host and a guest part. 14596560cb3SMarkus Armbruster 14696560cb3SMarkus ArmbrusterThe old ways to define character devices define host and guest part 14796560cb3SMarkus Armbrustertogether. 14896560cb3SMarkus Armbruster 14996560cb3SMarkus ArmbrusterThe new way keeps the parts separate: you create the host part with 15096560cb3SMarkus Armbruster-chardev, and the guest device with -device. 15196560cb3SMarkus Armbruster 15296560cb3SMarkus ArmbrusterThe various old ways to define a character device are all of the 15396560cb3SMarkus Armbrustergeneral form 15496560cb3SMarkus Armbruster 15596560cb3SMarkus Armbruster -FOO FOO-OPTS...,LEGACY-CHARDEV 15696560cb3SMarkus Armbruster 15796560cb3SMarkus Armbrusterwhere FOO-OPTS... is specific to -FOO, and the host part 15896560cb3SMarkus ArmbrusterLEGACY-CHARDEV is the same everywhere. 15996560cb3SMarkus Armbruster 16096560cb3SMarkus ArmbrusterIn the new way, this becomes 16196560cb3SMarkus Armbruster 16296560cb3SMarkus Armbruster -chardev HOST-OPTS...,id=CHR-ID 16396560cb3SMarkus Armbruster -device DEVNAME,chardev=CHR-ID,DEV-OPTS... 16496560cb3SMarkus Armbruster 16596560cb3SMarkus ArmbrusterThe appropriate DEVNAME depends on the machine type. For type "pc": 16696560cb3SMarkus Armbruster 16796560cb3SMarkus Armbruster* -serial becomes -device isa-serial,iobase=IOADDR,irq=IRQ,index=IDX 16896560cb3SMarkus Armbruster 16996560cb3SMarkus Armbruster This lets you control I/O ports and IRQs. 17096560cb3SMarkus Armbruster 17196560cb3SMarkus Armbruster* -parallel becomes -device isa-parallel,iobase=IOADDR,irq=IRQ,index=IDX 17296560cb3SMarkus Armbruster 17396560cb3SMarkus Armbruster This lets you control I/O ports and IRQs. 17496560cb3SMarkus Armbruster 17596560cb3SMarkus Armbruster* -usbdevice braille doesn't support LEGACY-CHARDEV syntax. It always 17696560cb3SMarkus Armbruster uses "braille". With -device, this useful default is gone, so you 17796560cb3SMarkus Armbruster have to use something like 17896560cb3SMarkus Armbruster 179a92ff8c1SThomas Huth -device usb-braille,chardev=braille -chardev braille,id=braille 18096560cb3SMarkus Armbruster 18196560cb3SMarkus ArmbrusterLEGACY-CHARDEV translates to -chardev HOST-OPTS... as follows: 18296560cb3SMarkus Armbruster 18396560cb3SMarkus Armbruster* null becomes -chardev null 18496560cb3SMarkus Armbruster 185378af961SAnatoli Huseu1* pty, msmouse, wctablet, braille, stdio likewise 18696560cb3SMarkus Armbruster 18796560cb3SMarkus Armbruster* vc:WIDTHxHEIGHT becomes -chardev vc,width=WIDTH,height=HEIGHT 18896560cb3SMarkus Armbruster 18996560cb3SMarkus Armbruster* vc:<COLS>Cx<ROWS>C becomes -chardev vc,cols=<COLS>,rows=<ROWS> 19096560cb3SMarkus Armbruster 19196560cb3SMarkus Armbruster* con: becomes -chardev console 19296560cb3SMarkus Armbruster 1936e93a44bSMarkus Armbruster* COM<NUM> becomes -chardev serial,path=COM<NUM> 19496560cb3SMarkus Armbruster 19596560cb3SMarkus Armbruster* file:FNAME becomes -chardev file,path=FNAME 19696560cb3SMarkus Armbruster 19796560cb3SMarkus Armbruster* pipe:FNAME becomes -chardev pipe,path=FNAME 19896560cb3SMarkus Armbruster 19996560cb3SMarkus Armbruster* tcp:HOST:PORT,OPTS... becomes -chardev socket,host=HOST,port=PORT,OPTS... 20096560cb3SMarkus Armbruster 20196560cb3SMarkus Armbruster* telnet:HOST:PORT,OPTS... becomes 20296560cb3SMarkus Armbruster -chardev socket,host=HOST,port=PORT,OPTS...,telnet=on 20396560cb3SMarkus Armbruster 20496560cb3SMarkus Armbruster* udp:HOST:PORT@LOCALADDR:LOCALPORT becomes 20596560cb3SMarkus Armbruster -chardev udp,host=HOST,port=PORT,localaddr=LOCALADDR,localport=LOCALPORT 20696560cb3SMarkus Armbruster 20796560cb3SMarkus Armbruster* unix:FNAME becomes -chardev socket,path=FNAME 20896560cb3SMarkus Armbruster 20996560cb3SMarkus Armbruster* /dev/parportN becomes -chardev parport,file=/dev/parportN 21096560cb3SMarkus Armbruster 21196560cb3SMarkus Armbruster* /dev/ppiN likewise 21296560cb3SMarkus Armbruster 21396560cb3SMarkus Armbruster* Any other /dev/FNAME becomes -chardev tty,path=/dev/FNAME 21496560cb3SMarkus Armbruster 21596560cb3SMarkus Armbruster* mon:LEGACY-CHARDEV is special: it multiplexes the monitor onto the 21696560cb3SMarkus Armbruster character device defined by LEGACY-CHARDEV. -chardev provides more 21796560cb3SMarkus Armbruster general multiplexing instead: you can connect up to four users to a 21896560cb3SMarkus Armbruster single host part. You need to pass mux=on to -chardev to enable 21996560cb3SMarkus Armbruster switching the input focus. 22096560cb3SMarkus Armbruster 22196560cb3SMarkus ArmbrusterQEMU uses LEGACY-CHARDEV syntax not just to set up guest devices, but 22296560cb3SMarkus Armbrusteralso in various other places such as -monitor or -net 22396560cb3SMarkus Armbrusteruser,guestfwd=... You can use chardev:CHR-ID in place of 22496560cb3SMarkus ArmbrusterLEGACY-CHARDEV to refer to a host part defined with -chardev. 22596560cb3SMarkus Armbruster 22696560cb3SMarkus Armbruster=== Network Devices === 22796560cb3SMarkus Armbruster 22823bf93b2SMarkus ArmbrusterHost and guest part of network devices have always been separate. 22996560cb3SMarkus Armbruster 23023bf93b2SMarkus ArmbrusterThe old way to define the guest part looks like this: 23196560cb3SMarkus Armbruster 23223bf93b2SMarkus Armbruster -net nic,netdev=NET-ID,macaddr=MACADDR,model=MODEL,name=ID,addr=STR,vectors=V 23396560cb3SMarkus Armbruster 23423bf93b2SMarkus ArmbrusterThe new way is -device: 23596560cb3SMarkus Armbruster 23696560cb3SMarkus Armbruster -device DEVNAME,netdev=NET-ID,mac=MACADDR,DEV-OPTS... 23796560cb3SMarkus Armbruster 23896560cb3SMarkus ArmbrusterDEVNAME equals MODEL, except for virtio you have to name the virtio 23996560cb3SMarkus Armbrusterdevice appropriate for the bus (virtio-net-pci for PCI), and for USB 24023bf93b2SMarkus Armbrusteryou have to use usb-net. 24196560cb3SMarkus Armbruster 24296560cb3SMarkus ArmbrusterThe old name=ID parameter becomes the usual id=ID with -device. 24396560cb3SMarkus Armbruster 24496560cb3SMarkus ArmbrusterFor PCI devices, you can add bus=PCI-BUS,addr=DEVFN to control the PCI 24596560cb3SMarkus Armbrusterdevice address, as usual. The old -net nic provides parameter addr 24623bf93b2SMarkus Armbrusterfor that, which is silently ignored when the NIC is not a PCI device. 24796560cb3SMarkus Armbruster 24865d6dcbdSStefan HajnocziFor virtio-net-pci, you can control whether or not ioeventfd is used for 24965d6dcbdSStefan Hajnoczivirtqueue notify by setting ioeventfd= to on or off (default). 25065d6dcbdSStefan Hajnoczi 25196560cb3SMarkus Armbruster-net nic accepts vectors=V for all models, but it's silently ignored 25296560cb3SMarkus Armbrusterexcept for virtio-net-pci (model=virtio). With -device, only devices 25396560cb3SMarkus Armbrusterthat support it accept it. 25496560cb3SMarkus Armbruster 25596560cb3SMarkus ArmbrusterNot all devices are available with -device at this time. All PCI 25696560cb3SMarkus Armbrusterdevices and ne2k_isa are. 25796560cb3SMarkus Armbruster 25896560cb3SMarkus ArmbrusterSome PCI devices aren't available with -net nic, e.g. i82558a. 25996560cb3SMarkus Armbruster 26096560cb3SMarkus Armbruster=== Graphics Devices === 26196560cb3SMarkus Armbruster 26296560cb3SMarkus ArmbrusterHost and guest part of graphics devices have always been separate. 26396560cb3SMarkus Armbruster 26423bf93b2SMarkus ArmbrusterThe old way to define the guest graphics device is -vga VGA. Not all 26523bf93b2SMarkus Armbrustermachines support all -vga options. 26696560cb3SMarkus Armbruster 26723bf93b2SMarkus ArmbrusterThe new way is -device. The mapping from -vga argument to -device 26823bf93b2SMarkus Armbrusterdepends on the machine type. For machine "pc", it's: 26996560cb3SMarkus Armbruster 27096560cb3SMarkus Armbruster std -device VGA 27196560cb3SMarkus Armbruster cirrus -device cirrus-vga 27296560cb3SMarkus Armbruster vmware -device vmware-svga 27323bf93b2SMarkus Armbruster qxl -device qxl-vga 27423bf93b2SMarkus Armbruster none -nodefaults 27523bf93b2SMarkus Armbruster disables more than just VGA, see "Default Devices" 27696560cb3SMarkus Armbruster 27796560cb3SMarkus ArmbrusterAs for all PCI devices, you can add bus=PCI-BUS,addr=DEVFN to control 27896560cb3SMarkus Armbrusterthe PCI device address. 27996560cb3SMarkus Armbruster 28096560cb3SMarkus Armbruster-device VGA supports properties bios-offset and bios-size, but they 28196560cb3SMarkus Armbrusteraren't used with machine type "pc". 28296560cb3SMarkus Armbruster 28323bf93b2SMarkus ArmbrusterFor machine "isapc", it's 28496560cb3SMarkus Armbruster 28523bf93b2SMarkus Armbruster std -device isa-vga 28623bf93b2SMarkus Armbruster cirrus not yet available with -device 28723bf93b2SMarkus Armbruster none -nodefaults 28823bf93b2SMarkus Armbruster disables more than just VGA, see "Default Devices" 28996560cb3SMarkus Armbruster 29023bf93b2SMarkus ArmbrusterBug: the new way doesn't work for machine types "pc" and "isapc", 29123bf93b2SMarkus Armbrusterbecause it violates obscure device initialization ordering 29223bf93b2SMarkus Armbrusterconstraints. 29396560cb3SMarkus Armbruster 29496560cb3SMarkus Armbruster=== Audio Devices === 29596560cb3SMarkus Armbruster 29696560cb3SMarkus ArmbrusterHost and guest part of audio devices have always been separate. 29796560cb3SMarkus Armbruster 29896560cb3SMarkus ArmbrusterThe old way to define guest audio devices is -soundhw C1,... 29996560cb3SMarkus Armbruster 30096560cb3SMarkus ArmbrusterThe new way is to define each guest audio device separately with 30196560cb3SMarkus Armbruster-device. 30296560cb3SMarkus Armbruster 30396560cb3SMarkus ArmbrusterMap from -soundhw sound card name to -device: 30496560cb3SMarkus Armbruster 30596560cb3SMarkus Armbruster ac97 -device AC97 30696560cb3SMarkus Armbruster cs4231a -device cs4231a,iobase=IOADDR,irq=IRQ,dma=DMA 30796560cb3SMarkus Armbruster es1370 -device ES1370 30896560cb3SMarkus Armbruster gus -device gus,iobase=IOADDR,irq=IRQ,dma=DMA,freq=F 30923bf93b2SMarkus Armbruster hda -device intel-hda,msi=MSI -device hda-duplex 31096560cb3SMarkus Armbruster sb16 -device sb16,iobase=IOADDR,irq=IRQ,dma=DMA,dma16=DMA16,version=V 31196560cb3SMarkus Armbruster adlib not yet available with -device 31296560cb3SMarkus Armbruster pcspk not yet available with -device 31396560cb3SMarkus Armbruster 31496560cb3SMarkus ArmbrusterFor PCI devices, you can add bus=PCI-BUS,addr=DEVFN to control the PCI 31596560cb3SMarkus Armbrusterdevice address, as usual. 31696560cb3SMarkus Armbruster 31796560cb3SMarkus Armbruster=== USB Devices === 31896560cb3SMarkus Armbruster 31996560cb3SMarkus ArmbrusterThe old way to define a virtual USB device is -usbdevice DRIVER:OPTS... 32096560cb3SMarkus Armbruster 32196560cb3SMarkus ArmbrusterThe new way is -device DEVNAME,DEV-OPTS... Details depend on DRIVER: 32296560cb3SMarkus Armbruster 32323bf93b2SMarkus Armbruster* ccid -device usb-ccid 32423bf93b2SMarkus Armbruster* keyboard -device usb-kbd 32596560cb3SMarkus Armbruster* mouse -device usb-mouse 32696560cb3SMarkus Armbruster* tablet -device usb-tablet 32796560cb3SMarkus Armbruster* wacom-tablet -device usb-wacom-tablet 328*c81737e5SCésar Belley* u2f -device u2f-{emulated,passthru} 32996560cb3SMarkus Armbruster* braille See "Character Devices" 33096560cb3SMarkus Armbruster 33196560cb3SMarkus Armbruster=== Watchdog Devices === 33296560cb3SMarkus Armbruster 33396560cb3SMarkus ArmbrusterHost and guest part of watchdog devices have always been separate. 33496560cb3SMarkus Armbruster 33596560cb3SMarkus ArmbrusterThe old way to define a guest watchdog device is -watchdog DEVNAME. 33696560cb3SMarkus ArmbrusterThe new way is -device DEVNAME. For PCI devices, you can add 33796560cb3SMarkus Armbrusterbus=PCI-BUS,addr=DEVFN to control the PCI device address, as usual. 33896560cb3SMarkus Armbruster 33996560cb3SMarkus Armbruster=== Host Device Assignment === 34096560cb3SMarkus Armbruster 34196560cb3SMarkus ArmbrusterQEMU supports assigning host PCI devices (qemu-kvm only at this time) 342ab37bfc7SPaolo Bonziniand host USB devices. PCI devices can only be assigned with -device: 34396560cb3SMarkus Armbruster 344ab37bfc7SPaolo Bonzini -device vfio-pci,host=ADDR,id=ID 34596560cb3SMarkus Armbruster 346480324ecSThomas HuthTo assign a host USB device use: 34796560cb3SMarkus Armbruster 34896560cb3SMarkus Armbruster -device usb-host,hostbus=BUS,hostaddr=ADDR,vendorid=VID,productid=PRID 34996560cb3SMarkus Armbruster 350480324ecSThomas HuthOmitted options match anything. 35123bf93b2SMarkus Armbruster 35223bf93b2SMarkus Armbruster=== Default Devices === 35323bf93b2SMarkus Armbruster 35423bf93b2SMarkus ArmbrusterQEMU creates a number of devices by default, depending on the machine 35523bf93b2SMarkus Armbrustertype. 35623bf93b2SMarkus Armbruster 35723bf93b2SMarkus Armbruster-device DEVNAME... and global DEVNAME... suppress default devices for 35823bf93b2SMarkus Armbrustersome DEVNAMEs: 35923bf93b2SMarkus Armbruster 36023bf93b2SMarkus Armbruster default device suppressing DEVNAMEs 3617a0bbd55SMarkus Armbruster CD-ROM ide-cd, ide-drive, ide-hd, scsi-cd, scsi-hd 3624a27a638SMarkus Armbruster floppy floppy, isa-fdc 36323bf93b2SMarkus Armbruster parallel isa-parallel 36423bf93b2SMarkus Armbruster serial isa-serial 3657a0bbd55SMarkus Armbruster VGA VGA, cirrus-vga, isa-vga, isa-cirrus-vga, 36663d5dfbeSMarkus Armbruster vmware-svga, qxl-vga, virtio-vga, ati-vga, 36763d5dfbeSMarkus Armbruster vhost-user-vga 36823bf93b2SMarkus Armbruster 36923bf93b2SMarkus ArmbrusterThe default NIC is connected to a default part created along with it. 37023bf93b2SMarkus ArmbrusterIt is *not* suppressed by configuring a NIC with -device (you may call 37123bf93b2SMarkus Armbrusterthat a bug). -net and -netdev suppress the default NIC. 37223bf93b2SMarkus Armbruster 37323bf93b2SMarkus Armbruster-nodefaults suppresses all the default devices mentioned above, plus a 37423bf93b2SMarkus Armbrusterfew other things such as default SD-Card drive and default monitor. 375