machine: add default_ram_size to machine class
Machines types can have different requirement for default ram size. Introduce a member in the machine class and set the current default_ram_size to 128MB. For QEMUMachine types override the value during the registration of the machine and for MachineClass introduce the generic class init setting the default_ram_size. Add helpers [K,M,G,T,P,E]_BYTE for better readability and easy usage Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Acked-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
		
							parent
							
								
									c5bc152bc3
								
							
						
					
					
						commit
						076b35b5a5
					
				| @ -294,6 +294,14 @@ static void machine_init_notify(Notifier *notifier, void *data) | ||||
|     foreach_dynamic_sysbus_device(error_on_sysbus_device, NULL); | ||||
| } | ||||
| 
 | ||||
| static void machine_class_init(ObjectClass *oc, void *data) | ||||
| { | ||||
|     MachineClass *mc = MACHINE_CLASS(oc); | ||||
| 
 | ||||
|     /* Default 128 MB as guest ram size */ | ||||
|     mc->default_ram_size = 128 * M_BYTE; | ||||
| } | ||||
| 
 | ||||
| static void machine_initfn(Object *obj) | ||||
| { | ||||
|     MachineState *ms = MACHINE(obj); | ||||
| @ -463,6 +471,7 @@ static const TypeInfo machine_info = { | ||||
|     .parent = TYPE_OBJECT, | ||||
|     .abstract = true, | ||||
|     .class_size = sizeof(MachineClass), | ||||
|     .class_init    = machine_class_init, | ||||
|     .instance_size = sizeof(MachineState), | ||||
|     .instance_init = machine_initfn, | ||||
|     .instance_finalize = machine_finalize, | ||||
|  | ||||
| @ -106,6 +106,7 @@ struct MachineClass { | ||||
|     const char *default_display; | ||||
|     GlobalProperty *compat_props; | ||||
|     const char *hw_version; | ||||
|     ram_addr_t default_ram_size; | ||||
| 
 | ||||
|     HotplugHandler *(*get_hotplug_handler)(MachineState *machine, | ||||
|                                            DeviceState *dev); | ||||
|  | ||||
| @ -186,6 +186,12 @@ int64_t strtosz(const char *nptr, char **end); | ||||
| int64_t strtosz_suffix(const char *nptr, char **end, const char default_suffix); | ||||
| int64_t strtosz_suffix_unit(const char *nptr, char **end, | ||||
|                             const char default_suffix, int64_t unit); | ||||
| #define K_BYTE     (1ULL << 10) | ||||
| #define M_BYTE     (1ULL << 20) | ||||
| #define G_BYTE     (1ULL << 30) | ||||
| #define T_BYTE     (1ULL << 40) | ||||
| #define P_BYTE     (1ULL << 50) | ||||
| #define E_BYTE     (1ULL << 60) | ||||
| 
 | ||||
| /* used to print char* safely */ | ||||
| #define STR_OR_NULL(str) ((str) ? (str) : "null") | ||||
|  | ||||
							
								
								
									
										30
									
								
								vl.c
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								vl.c
									
									
									
									
									
								
							| @ -120,8 +120,6 @@ int main(int argc, char **argv) | ||||
| #include "qom/object_interfaces.h" | ||||
| #include "qapi-event.h" | ||||
| 
 | ||||
| #define DEFAULT_RAM_SIZE 128 | ||||
| 
 | ||||
| #define MAX_VIRTIO_CONSOLES 1 | ||||
| #define MAX_SCLP_CONSOLES 1 | ||||
| 
 | ||||
| @ -1310,7 +1308,11 @@ void hmp_usb_del(Monitor *mon, const QDict *qdict) | ||||
| 
 | ||||
| MachineState *current_machine; | ||||
| 
 | ||||
| static void machine_class_init(ObjectClass *oc, void *data) | ||||
| /*
 | ||||
|  * Transitional class registration/init used for converting from | ||||
|  * legacy QEMUMachine to MachineClass. | ||||
|  */ | ||||
| static void qemu_machine_class_init(ObjectClass *oc, void *data) | ||||
| { | ||||
|     MachineClass *mc = MACHINE_CLASS(oc); | ||||
|     QEMUMachine *qm = data; | ||||
| @ -1333,7 +1335,7 @@ int qemu_register_machine(QEMUMachine *m) | ||||
|     TypeInfo ti = { | ||||
|         .name       = name, | ||||
|         .parent     = TYPE_MACHINE, | ||||
|         .class_init = machine_class_init, | ||||
|         .class_init = qemu_machine_class_init, | ||||
|         .class_data = (void *)m, | ||||
|     }; | ||||
| 
 | ||||
| @ -2647,13 +2649,13 @@ out: | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| static void set_memory_options(uint64_t *ram_slots, ram_addr_t *maxram_size) | ||||
| static void set_memory_options(uint64_t *ram_slots, ram_addr_t *maxram_size, | ||||
|                                MachineClass *mc) | ||||
| { | ||||
|     uint64_t sz; | ||||
|     const char *mem_str; | ||||
|     const char *maxmem_str, *slots_str; | ||||
|     const ram_addr_t default_ram_size = (ram_addr_t)DEFAULT_RAM_SIZE * | ||||
|                                         1024 * 1024; | ||||
|     const ram_addr_t default_ram_size = mc->default_ram_size; | ||||
|     QemuOpts *opts = qemu_find_opts_singleton("memory"); | ||||
| 
 | ||||
|     sz = 0; | ||||
| @ -3769,7 +3771,13 @@ int main(int argc, char **argv, char **envp) | ||||
|         machine_class = machine_parse(optarg); | ||||
|     } | ||||
| 
 | ||||
|     set_memory_options(&ram_slots, &maxram_size); | ||||
|     if (machine_class == NULL) { | ||||
|         fprintf(stderr, "No machine specified, and there is no default.\n" | ||||
|                 "Use -machine help to list supported machines!\n"); | ||||
|         exit(1); | ||||
|     } | ||||
| 
 | ||||
|     set_memory_options(&ram_slots, &maxram_size, machine_class); | ||||
| 
 | ||||
|     loc_set_none(); | ||||
| 
 | ||||
| @ -3798,12 +3806,6 @@ int main(int argc, char **argv, char **envp) | ||||
|     } | ||||
| #endif | ||||
| 
 | ||||
|     if (machine_class == NULL) { | ||||
|         fprintf(stderr, "No machine specified, and there is no default.\n" | ||||
|                 "Use -machine help to list supported machines!\n"); | ||||
|         exit(1); | ||||
|     } | ||||
| 
 | ||||
|     current_machine = MACHINE(object_new(object_class_get_name( | ||||
|                           OBJECT_CLASS(machine_class)))); | ||||
|     if (machine_help_func(qemu_get_machine_opts(), current_machine)) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Nikunj A Dadhania
						Nikunj A Dadhania