[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2.1 v7 3/3] xen-hvm: Handle machine opt max-ram-below-4g
On Thu, 19 Jun 2014, Don Slutz wrote: > This is the xen part of "pc & q35: Add new machine opt max-ram-below-4g" > > Note: this machine option cannot be used to increase the amount > of ram below 4G. > > Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx> It is still good for me. > v7: > Rename from "xen-hvm: Pass is_default to xen_hvm_init" > Drop is_default. > Use object_property_get_int() to get max-ram-below-4g. > Do min(xen limit, user limit). > v6: > Changed to work with the changes in #2: > Added max_ram_below_4g_changed in order to know if it is a default value > or a user specified one. > Added "assert(pc_machine->max_ram_below_4g_changed > 0)" so that > "make check" will abort on default not set for any of the pc or > q35 machine types. > Dropped "Acked-by: Stefano Stabellin" do to bigger change. > > xen-hvm.c | 35 +++++++++++++++++++++++------------ > 1 file changed, 23 insertions(+), 12 deletions(-) > > diff --git a/xen-hvm.c b/xen-hvm.c > index a0b6b5d..2745a7a 100644 > --- a/xen-hvm.c > +++ b/xen-hvm.c > @@ -161,25 +161,36 @@ static void xen_ram_init(ram_addr_t *below_4g_mem_size, > { > MemoryRegion *sysmem = get_system_memory(); > ram_addr_t block_len; > + uint64_t user_lowmem = object_property_get_int(qdev_get_machine(), > + > PC_MACHINE_MAX_RAM_BELOW_4G, > + &error_abort); > > - block_len = ram_size; > - if (ram_size >= HVM_BELOW_4G_RAM_END) { > - /* Xen does not allocate the memory continuously, and keep a hole at > - * HVM_BELOW_4G_MMIO_START of HVM_BELOW_4G_MMIO_LENGTH > - */ > - block_len += HVM_BELOW_4G_MMIO_LENGTH; > + /* Handle the machine opt max-ram-below-4g. It is basicly doing > + * min(xen limit, user limit). > + */ > + if (HVM_BELOW_4G_RAM_END <= user_lowmem) { > + user_lowmem = HVM_BELOW_4G_RAM_END; > } > - memory_region_init_ram(&ram_memory, NULL, "xen.ram", block_len); > - *ram_memory_p = &ram_memory; > - vmstate_register_ram_global(&ram_memory); > > - if (ram_size >= HVM_BELOW_4G_RAM_END) { > - *above_4g_mem_size = ram_size - HVM_BELOW_4G_RAM_END; > - *below_4g_mem_size = HVM_BELOW_4G_RAM_END; > + if (ram_size >= user_lowmem) { > + *above_4g_mem_size = ram_size - user_lowmem; > + *below_4g_mem_size = user_lowmem; > } else { > *above_4g_mem_size = 0; > *below_4g_mem_size = ram_size; > } > + if (!*above_4g_mem_size) { > + block_len = ram_size; > + } else { > + /* > + * Xen does not allocate the memory continuously, it keeps a > + * hole of the size computed above or passed in. > + */ > + block_len = (1ULL << 32) + *above_4g_mem_size; > + } > + memory_region_init_ram(&ram_memory, NULL, "xen.ram", block_len); > + *ram_memory_p = &ram_memory; > + vmstate_register_ram_global(&ram_memory); > > memory_region_init_alias(&ram_640k, NULL, "xen.ram.640k", > &ram_memory, 0, 0xa0000); > -- > 1.8.4 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |