On 11/27/13 07:46, Gerd Hoffmann wrote: > >>> + i440fx->pci_info.w32.begin = ram_size; > >> But this patch also obliterates the high bound, 0xe0000000, which can >> lead to: >> - w32.end - w32.begin <= 512M, or >> - a special case of the former, w32.end < w32.begin. > > ram_size is not the total amount of memory, it is low memory only.
I tried to check for that when I sent the email, and I couldn't see where this is enforced. See: pc_init1() [hw/i386/pc_piix.c] i440fx_init() [hw/pci-host/piix.c] pc_init1() receives the full RAM size in "args->ram_size". It uses this value to compute "above_4g_mem_size" and "below_4g_mem_size", for example. pc_init1() passes "args->ram_size" unchanged to i440fx_init(), as 7th argument. The 7th parameter of i440fx_init() is called "ram_size". Therefore it will hold the whole RAM size. Thanks Laszlo