 2d0d2837dc
			
		
	
	
		2d0d2837dc
		
	
	
	
	
		
			
			There are QEMUMachines that have neither IF_IDE nor IF_SCSI as a default/standard interface to their block devices / drives. Therefore, this patch introduces a new field default_block_type per QEMUMachine struct. The prior use_scsi field becomes thereby obsolete and is replaced through .default_block_type = IF_SCSI. This patch also changes the default for s390x to IF_VIRTIO and removes an early hack that converts IF_IDE drives. Other parties have already claimed interest (e.g. IF_SD for exynos) To create a sane default, for machines that dont specify a default_block_type, this patch makes IF_IDE = 0 and IF_NONE = 1. I checked all users of IF_NONE (blockdev.c and ww/device-hotplug.c) as well as IF_IDE and it seems that it is ok to change the defines - in other words, I found no obvious (to me) assumption in the code regarding IF_NONE==0. IF_NONE is only set if there is an explicit if=none. Without if=* the interface becomes IF_DEFAULT. I would suggest to have some additional care, e.g. by letting this patch sit some days in the block tree. Based on an initial patch from Einar Lueck <elelueck@de.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> CC: Igor Mitsyanko <i.mitsyanko@samsung.com> CC: Markus Armbruster <armbru@redhat.com> CC: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Alexander Graf <agraf@suse.de> Acked-by: Igor Mitsyanko <i.mitsyanko@samsung.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Declarations for use by board files for creating devices.  */
 | |
| 
 | |
| #ifndef HW_BOARDS_H
 | |
| #define HW_BOARDS_H
 | |
| 
 | |
| #include "blockdev.h"
 | |
| #include "qdev.h"
 | |
| 
 | |
| typedef struct QEMUMachineInitArgs {
 | |
|     ram_addr_t ram_size;
 | |
|     const char *boot_device;
 | |
|     const char *kernel_filename;
 | |
|     const char *kernel_cmdline;
 | |
|     const char *initrd_filename;
 | |
|     const char *cpu_model;
 | |
| } QEMUMachineInitArgs;
 | |
| 
 | |
| typedef void QEMUMachineInitFunc(QEMUMachineInitArgs *args);
 | |
| 
 | |
| typedef void QEMUMachineResetFunc(void);
 | |
| 
 | |
| typedef struct QEMUMachine {
 | |
|     const char *name;
 | |
|     const char *alias;
 | |
|     const char *desc;
 | |
|     QEMUMachineInitFunc *init;
 | |
|     QEMUMachineResetFunc *reset;
 | |
|     BlockInterfaceType block_default_type;
 | |
|     int max_cpus;
 | |
|     unsigned int no_serial:1,
 | |
|         no_parallel:1,
 | |
|         use_virtcon:1,
 | |
|         no_floppy:1,
 | |
|         no_cdrom:1,
 | |
|         no_sdcard:1;
 | |
|     int is_default;
 | |
|     const char *default_machine_opts;
 | |
|     GlobalProperty *compat_props;
 | |
|     struct QEMUMachine *next;
 | |
|     const char *hw_version;
 | |
| } QEMUMachine;
 | |
| 
 | |
| int qemu_register_machine(QEMUMachine *m);
 | |
| QEMUMachine *find_default_machine(void);
 | |
| 
 | |
| extern QEMUMachine *current_machine;
 | |
| 
 | |
| #endif
 |