mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 20:44:16 +00:00 
			
		
		
		
	scsi: Remove automatic creation of SCSI controllers with -drive if=scsi
Automatic creation of SCSI controllers for "-drive if=scsi" for x86
machines was quite a bad idea (see description of commit f778a82f0c
for details). This is marked as deprecated since QEMU v2.9.0, and as
far as I know, nobody complained that this is still urgently required
anymore. Time to remove this now.
Suggested-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <1519123357-13225-1-git-send-email-thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
			
			
This commit is contained in:
		
							parent
							
								
									d07aa197c5
								
							
						
					
					
						commit
						1454509726
					
				
							
								
								
									
										17
									
								
								hw/i386/pc.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								hw/i386/pc.c
									
									
									
									
									
								
							| @ -1636,23 +1636,6 @@ void pc_nic_init(ISABus *isa_bus, PCIBus *pci_bus) | ||||
|     rom_reset_order_override(); | ||||
| } | ||||
| 
 | ||||
| void pc_pci_device_init(PCIBus *pci_bus) | ||||
| { | ||||
|     int max_bus; | ||||
|     int bus; | ||||
| 
 | ||||
|     /* Note: if=scsi is deprecated with PC machine types */ | ||||
|     max_bus = drive_get_max_bus(IF_SCSI); | ||||
|     for (bus = 0; bus <= max_bus; bus++) { | ||||
|         pci_create_simple(pci_bus, -1, "lsi53c895a"); | ||||
|         /*
 | ||||
|          * By not creating frontends here, we make | ||||
|          * scsi_legacy_handle_cmdline() create them, and warn that | ||||
|          * this usage is deprecated. | ||||
|          */ | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void ioapic_init_gsi(GSIState *gsi_state, const char *parent_name) | ||||
| { | ||||
|     DeviceState *dev; | ||||
|  | ||||
| @ -295,10 +295,6 @@ static void pc_init1(MachineState *machine, | ||||
|                                  PC_MACHINE_ACPI_DEVICE_PROP, &error_abort); | ||||
|     } | ||||
| 
 | ||||
|     if (pcmc->pci_enabled) { | ||||
|         pc_pci_device_init(pci_bus); | ||||
|     } | ||||
| 
 | ||||
|     if (pcms->acpi_nvdimm_state.is_enabled) { | ||||
|         nvdimm_init_acpi_state(&pcms->acpi_nvdimm_state, system_io, | ||||
|                                pcms->fw_cfg, OBJECT(pcms)); | ||||
|  | ||||
| @ -273,9 +273,6 @@ static void pc_q35_init(MachineState *machine) | ||||
|     /* the rest devices to which pci devfn is automatically assigned */ | ||||
|     pc_vga_init(isa_bus, host_bus); | ||||
|     pc_nic_init(isa_bus, host_bus); | ||||
|     if (pcmc->pci_enabled) { | ||||
|         pc_pci_device_init(host_bus); | ||||
|     } | ||||
| 
 | ||||
|     if (pcms->acpi_nvdimm_state.is_enabled) { | ||||
|         nvdimm_init_acpi_state(&pcms->acpi_nvdimm_state, system_io, | ||||
|  | ||||
| @ -2277,5 +2277,5 @@ void lsi53c895a_create(PCIBus *bus) | ||||
| { | ||||
|     LSIState *s = LSI53C895A(pci_create_simple(bus, -1, "lsi53c895a")); | ||||
| 
 | ||||
|     scsi_bus_legacy_handle_cmdline(&s->bus, false); | ||||
|     scsi_bus_legacy_handle_cmdline(&s->bus); | ||||
| } | ||||
|  | ||||
| @ -271,7 +271,7 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, BlockBackend *blk, | ||||
|     return SCSI_DEVICE(dev); | ||||
| } | ||||
| 
 | ||||
| void scsi_bus_legacy_handle_cmdline(SCSIBus *bus, bool deprecated) | ||||
| void scsi_bus_legacy_handle_cmdline(SCSIBus *bus) | ||||
| { | ||||
|     Location loc; | ||||
|     DriveInfo *dinfo; | ||||
| @ -284,59 +284,12 @@ void scsi_bus_legacy_handle_cmdline(SCSIBus *bus, bool deprecated) | ||||
|             continue; | ||||
|         } | ||||
|         qemu_opts_loc_restore(dinfo->opts); | ||||
|         if (deprecated) { | ||||
|             /* Handling -drive not claimed by machine initialization */ | ||||
|             if (blk_get_attached_dev(blk_by_legacy_dinfo(dinfo))) { | ||||
|                 continue;       /* claimed */ | ||||
|             } | ||||
|             if (!dinfo->is_default) { | ||||
|                 warn_report("bus=%d,unit=%d is deprecated with this" | ||||
|                             " machine type", | ||||
|                             bus->busnr, unit); | ||||
|             } | ||||
|         } | ||||
|         scsi_bus_legacy_add_drive(bus, blk_by_legacy_dinfo(dinfo), | ||||
|                                   unit, false, -1, false, NULL, &error_fatal); | ||||
|     } | ||||
|     loc_pop(&loc); | ||||
| } | ||||
| 
 | ||||
| static bool is_scsi_hba_with_legacy_magic(Object *obj) | ||||
| { | ||||
|     static const char *magic[] = { | ||||
|         "am53c974", "dc390", "esp", "lsi53c810", "lsi53c895a", | ||||
|         "megasas", "megasas-gen2", "mptsas1068", "spapr-vscsi", | ||||
|         "virtio-scsi-device", | ||||
|         NULL | ||||
|     }; | ||||
|     const char *typename = object_get_typename(obj); | ||||
|     int i; | ||||
| 
 | ||||
|     for (i = 0; magic[i]; i++) | ||||
|         if (!strcmp(typename, magic[i])) { | ||||
|             return true; | ||||
|     } | ||||
| 
 | ||||
|     return false; | ||||
| } | ||||
| 
 | ||||
| static int scsi_legacy_handle_cmdline_cb(Object *obj, void *opaque) | ||||
| { | ||||
|     SCSIBus *bus = (SCSIBus *)object_dynamic_cast(obj, TYPE_SCSI_BUS); | ||||
| 
 | ||||
|     if (bus && is_scsi_hba_with_legacy_magic(OBJECT(bus->qbus.parent))) { | ||||
|         scsi_bus_legacy_handle_cmdline(bus, true); | ||||
|     } | ||||
| 
 | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| void scsi_legacy_handle_cmdline(void) | ||||
| { | ||||
|     object_child_foreach_recursive(object_get_root(), | ||||
|                                    scsi_legacy_handle_cmdline_cb, NULL); | ||||
| } | ||||
| 
 | ||||
| static int32_t scsi_invalid_field(SCSIRequest *req, uint8_t *buf) | ||||
| { | ||||
|     scsi_req_build_sense(req, SENSE_CODE(INVALID_FIELD)); | ||||
|  | ||||
| @ -1215,8 +1215,7 @@ void spapr_vscsi_create(VIOsPAPRBus *bus) | ||||
|     dev = qdev_create(&bus->bus, "spapr-vscsi"); | ||||
| 
 | ||||
|     qdev_init_nofail(dev); | ||||
|     scsi_bus_legacy_handle_cmdline(&VIO_SPAPR_VSCSI_DEVICE(dev)->bus, | ||||
|                                    false); | ||||
|     scsi_bus_legacy_handle_cmdline(&VIO_SPAPR_VSCSI_DEVICE(dev)->bus); | ||||
| } | ||||
| 
 | ||||
| static int spapr_vscsi_devnode(VIOsPAPRDevice *dev, void *fdt, int node_off) | ||||
|  | ||||
| @ -153,7 +153,7 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, BlockBackend *blk, | ||||
|                                       int unit, bool removable, int bootindex, | ||||
|                                       bool share_rw, | ||||
|                                       const char *serial, Error **errp); | ||||
| void scsi_bus_legacy_handle_cmdline(SCSIBus *bus, bool deprecated); | ||||
| void scsi_bus_legacy_handle_cmdline(SCSIBus *bus); | ||||
| void scsi_legacy_handle_cmdline(void); | ||||
| 
 | ||||
| SCSIRequest *scsi_req_alloc(const SCSIReqOps *reqops, SCSIDevice *d, | ||||
|  | ||||
| @ -2680,11 +2680,6 @@ The ``-net vlan=NN'' argument is partially replaced with the | ||||
| new ``-netdev'' argument. The remaining use cases will no | ||||
| longer be directly supported in QEMU. | ||||
| 
 | ||||
| @subsection -drive if=scsi (since 2.9.0) | ||||
| 
 | ||||
| The ``-drive if=scsi'' argument is replaced by the the | ||||
| ``-device BUS-TYPE'' argument combined with ``-drive if=none''. | ||||
| 
 | ||||
| @subsection -drive cyls=...,heads=...,secs=...,trans=... (since 2.10.0) | ||||
| 
 | ||||
| The drive geometry arguments are replaced by the the geometry arguments | ||||
|  | ||||
| @ -157,9 +157,7 @@ case "$QEMU_DEFAULT_MACHINE" in | ||||
|     pc) | ||||
|         run_qemu -drive if=floppy | ||||
|         run_qemu -drive if=ide,media=cdrom | ||||
|         run_qemu -drive if=scsi,media=cdrom | ||||
|         run_qemu -drive if=ide | ||||
|         run_qemu -drive if=scsi | ||||
|         ;; | ||||
|      *) | ||||
|         ;; | ||||
| @ -188,9 +186,7 @@ case "$QEMU_DEFAULT_MACHINE" in | ||||
|     pc) | ||||
|         run_qemu -drive file="$TEST_IMG",if=floppy,readonly=on | ||||
|         run_qemu -drive file="$TEST_IMG",if=ide,media=cdrom,readonly=on | ||||
|         run_qemu -drive file="$TEST_IMG",if=scsi,media=cdrom,readonly=on | ||||
|         run_qemu -drive file="$TEST_IMG",if=ide,readonly=on | ||||
|         run_qemu -drive file="$TEST_IMG",if=scsi,readonly=on | ||||
|         ;; | ||||
|      *) | ||||
|         ;; | ||||
|  | ||||
							
								
								
									
										9
									
								
								vl.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								vl.c
									
									
									
									
									
								
							| @ -4621,15 +4621,6 @@ int main(int argc, char **argv, char **envp) | ||||
| 
 | ||||
|     rom_reset_order_override(); | ||||
| 
 | ||||
|     /*
 | ||||
|      * Create frontends for -drive if=scsi leftovers. | ||||
|      * Normally, frontends for -drive get created by machine | ||||
|      * initialization for onboard SCSI HBAs.  However, we create a few | ||||
|      * more ever since SCSI qdevification, but this is pretty much an | ||||
|      * implementation accident, and deprecated. | ||||
|      */ | ||||
|     scsi_legacy_handle_cmdline(); | ||||
| 
 | ||||
|     /* Did we create any drives that we failed to create a device for? */ | ||||
|     drive_check_orphaned(); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Thomas Huth
						Thomas Huth