[PATCH 1/1] QEMU: support USB cdrom devices

Daniel P. Berrangé berrange at redhat.com
Mon Sep 7 11:48:21 UTC 2020


On Mon, Sep 07, 2020 at 01:45:09PM +0200, Gerd Hoffmann wrote:
>   Hi,
> 
> > -device nec-usb-xhci,id=xhci \
> > -device usb-bot,id=scsi0,bus=xhci.0 \
> > -device
> > scsi-cd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,device_id=drive-scsi0-0-0-0,drive=libvirt-1-format,id=scsi0-0-0-0,bootindex=1
> > \
> > -device
> > scsi-cd,bus=scsi0.0,channel=0,scsi-id=0,lun=1,device_id=drive-scsi0-0-0-1,drive=libvirt-1-format,id=scsi0-0-0-1
> > \
> > 
> > which starts, but gives me a "Synchronous Exception" from the TianoCore
> > firmware, which I often saw with PCI enumeration problems.
> 
> Hmm, firmware bug?  Does seabios work?
> 
> > Also "info usb" just shows a single device. I just copied these lines
> > from a normal libvirt SCSI setup with two cdroms.
> 
> That is normal, it actually is only one usb device after all ;)
> 
> > But compared to my small patch with the usb-storage based USB CDROM,
> > this looks like a much larger change and a lot of work implement.
> 
> Yes.
> 
> As far I know libvirt wants move away from the old syntax and shift to
> use -blockdev more, not the other way around.
> 
> > 1. doing this transparently with a controller per device, just like the
> > usb-storage controller does internally (ok - it's just a scsi-cd there),
> > even if the usb-bot supports multiple LUNs. Guess multiple LUNs would
> > act like an USB hub?
> 
> usb-storage simply doesn't support multiple LUNs, so when going that
> route you can completely ignore the multiple LUN case.
> 
> > 2. invalidating the cdrom with USB addresses configurations and exposing
> > the controller in the XML. This seems easier from the libvirt code POV,
> > like:
> > 
> >     <controller type='scsi' model='usb-bot'>
> >       <address type='usb' port='1'/>
> >     </controller>
> 
> Yep, that is the other obvious approach.
> 
> > So I still would like to see my much simpler solution merged.
> 
> See above, but I'm not a libvirt maintainer so that's not for me to
> judge.  I'm just pointing out that this can be fixed without switching
> back to the old -drive syntax.

Switching back to -drive is out of the question. We've worked very hard
to eliminate its usage and get to an exclusively -blockdev based solution
because supporting both approaches in parallel complicates too much.

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 :|




More information about the libvir-list mailing list