[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 0/3] hw/scsi: Cleanup around scsi_bus_legacy_handle_cmdline()
From: |
Paolo Bonzini |
Subject: |
Re: [PATCH 0/3] hw/scsi: Cleanup around scsi_bus_legacy_handle_cmdline() |
Date: |
Fri, 22 Nov 2024 13:53:19 +0100 |
User-agent: |
Mozilla Thunderbird |
On 11/22/24 13:37, Thomas Huth wrote:
On 22/11/2024 12.19, Philippe Mathieu-Daudé wrote:
When a device model requires legacy command line handling,
call scsi_bus_legacy_handle_cmdline() in its realize handler
instead of having each user call it.
This applies to:
- spapr_vscsi
- lsi53c810 / lsi53c895a
- sysbus_esp
Note, scsi_bus_legacy_handle_cmdline() prototype could be
made private to hw/scsi/ to restrict its use to scsi device
implementations.
Not sure whether this is the right way to go ... shouldn't the handling
of the legacy command line be rather part of the machine than being part
of the SCSI controller device? Imagine for example a machine that has
multiple, different SCSI controllers - I think you'd rather want to let
the machine decide where the legacy devices should be grabbed from than
having the SCSI controller devices fight for them...?
I agree that it should be done in the machines generally:
1) if the machine creates a SCSI controller, it should then call
scsi_bus_legacy_handle_cmdline(). This is the case for esp and for
spapr-vscsi (so spapr_vscsi_create() could be inlined in its caller).
2) lsi53c* is the odd one out because it was "the" way to add "-drive
if=scsi" to the PC machine.
For case (2) it's okay to call it in the realize function, I guess.
However, let's only process -drive if=scsi for devices added on the
command-line.
The LSI HBA should not call scsi_bus_legacy_handle_cmdline() if
dev->hotplugged. I think we can do it without a deprecation period,
and in fact assert that !phase_check(PHASE_MACHINE_READY) in
scsi_bus_legacy_handle_cmdline().
Paolo