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