machine: introduce memory-backend property
Property will contain link to memory backend that will be used for backing initial RAM. Follow up commit will alias -mem-path and -mem-prealloc CLI options into memory backend options to make memory handling consistent (using only hostmem backend family for guest RAM allocation). Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200219160953.13771-3-imammedo@redhat.com>
This commit is contained in:
		
				
					committed by
					
						
						Patchew Importer
					
				
			
			
				
	
			
			
			
						parent
						
							68a86dc15c
						
					
				
				
					commit
					aa8b183974
				
			@@ -508,6 +508,22 @@ static void validate_sysbus_device(SysBusDevice *sbdev, void *opaque)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static char *machine_get_memdev(Object *obj, Error **errp)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    MachineState *ms = MACHINE(obj);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return g_strdup(ms->ram_memdev_id);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void machine_set_memdev(Object *obj, const char *value, Error **errp)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    MachineState *ms = MACHINE(obj);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    g_free(ms->ram_memdev_id);
 | 
				
			||||||
 | 
					    ms->ram_memdev_id = g_strdup(value);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void machine_init_notify(Notifier *notifier, void *data)
 | 
					static void machine_init_notify(Notifier *notifier, void *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    MachineState *machine = MACHINE(qdev_get_machine());
 | 
					    MachineState *machine = MACHINE(qdev_get_machine());
 | 
				
			||||||
@@ -889,6 +905,14 @@ static void machine_initfn(Object *obj)
 | 
				
			|||||||
                                        "Table (HMAT)", NULL);
 | 
					                                        "Table (HMAT)", NULL);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    object_property_add_str(obj, "memory-backend",
 | 
				
			||||||
 | 
					                            machine_get_memdev, machine_set_memdev,
 | 
				
			||||||
 | 
					                            &error_abort);
 | 
				
			||||||
 | 
					    object_property_set_description(obj, "memory-backend",
 | 
				
			||||||
 | 
					                                    "Set RAM backend"
 | 
				
			||||||
 | 
					                                    "Valid value is ID of hostmem based backend",
 | 
				
			||||||
 | 
					                                     &error_abort);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Register notifier when init is done for sysbus sanity checks */
 | 
					    /* Register notifier when init is done for sysbus sanity checks */
 | 
				
			||||||
    ms->sysbus_notifier.notify = machine_init_notify;
 | 
					    ms->sysbus_notifier.notify = machine_init_notify;
 | 
				
			||||||
    qemu_add_machine_init_done_notifier(&ms->sysbus_notifier);
 | 
					    qemu_add_machine_init_done_notifier(&ms->sysbus_notifier);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@
 | 
				
			|||||||
#define HW_BOARDS_H
 | 
					#define HW_BOARDS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "exec/memory.h"
 | 
					#include "exec/memory.h"
 | 
				
			||||||
 | 
					#include "sysemu/hostmem.h"
 | 
				
			||||||
#include "sysemu/blockdev.h"
 | 
					#include "sysemu/blockdev.h"
 | 
				
			||||||
#include "sysemu/accel.h"
 | 
					#include "sysemu/accel.h"
 | 
				
			||||||
#include "qapi/qapi-types-machine.h"
 | 
					#include "qapi/qapi-types-machine.h"
 | 
				
			||||||
@@ -285,6 +286,7 @@ struct MachineState {
 | 
				
			|||||||
    bool enforce_config_section;
 | 
					    bool enforce_config_section;
 | 
				
			||||||
    bool enable_graphics;
 | 
					    bool enable_graphics;
 | 
				
			||||||
    char *memory_encryption;
 | 
					    char *memory_encryption;
 | 
				
			||||||
 | 
					    char *ram_memdev_id;
 | 
				
			||||||
    DeviceMemoryState *device_memory;
 | 
					    DeviceMemoryState *device_memory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ram_addr_t ram_size;
 | 
					    ram_addr_t ram_size;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user