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