xref: /qemu/docs/qdev-device-use.txt (revision c81737e5)
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