On Thursday 31 January 2008, Anthony Liguori wrote: > KVM supports more than 2GB of memory for x86_64 hosts. The following patch > fixes a number of type related issues where int's were being used when they > shouldn't have been. It also introduces CMOS support so the BIOS can build > the appropriate e820 tables.
You've still got a fairly random mix of unsigned long, ram_addr_t and uint64_t. > -typedef void QEMUMachineInitFunc(int ram_size, int vga_ram_size, > +typedef void QEMUMachineInitFunc(ram_addr_t ram_size, int vga_ram_size, This breaks every target except x86. > + if (above_4g_mem_size) { > + rtc_set_memory(s, 0x5b, (unsigned int)above_4g_mem_size >> 16); > + rtc_set_memory(s, 0x5c, (unsigned int)above_4g_mem_size >> 24); > + rtc_set_memory(s, 0x5d, above_4g_mem_size >> 32); This will cause warnings on 32-bit hosts. > + if (ram_size >= 0xe0000000 ) { > + above_4g_mem_size = ram_size - 0xe0000000; > + ram_size = 0xe0000000; > + } I'm fairly sure this will break the VMware VGA adapter: > pci_vmsvga_init(pci_bus, ds, phys_ram_base + ram_size, > ram_size, vga_ram_size); > +#define PHYS_RAM_MAX_SIZE (2047 * 1024 * 1024 * 1024ULL) This seems fairly arbitrary. Why? Any limit is certainly target specific. Paul