--- /dev/null
+diff -r 0d66aa7337e7 vl.c
+--- a/vl.c Thu Aug 13 16:45:09 2009 +0100
++++ b/vl.c Thu Aug 13 16:46:18 2009 +0100
+@@ -5102,7 +5102,7 @@
+ fprintf(stderr, "qemu: invalid ram size: %s\n", optarg);
+ exit(1);
+ }
+-
++#ifndef CONFIG_DM
+ /* On 32-bit hosts, QEMU is limited by virtual address space */
+ if (value > (2047 << 20)
+ #ifndef USE_KQEMU
+@@ -5116,6 +5116,7 @@
+ fprintf(stderr, "qemu: ram size too large\n");
+ exit(1);
+ }
++#endif
+ ram_size = value;
+ break;
+ }
+@@ -5679,6 +5680,7 @@
+ ram_size += 1 * MEM_G; /* skip 3G-4G MMIO, LEGACY_IO_SPACE etc. */
+ #endif
+
++#ifndef CONFIG_DM
+ if (machine->ram_require & RAMSIZE_FIXED) {
+ if (ram_size > 0) {
+ if (ram_size < phys_ram_size) {
+@@ -5697,7 +5699,6 @@
+ phys_ram_size += ram_size;
+ }
+
+-#ifndef CONFIG_DM
+ phys_ram_base = qemu_vmalloc(phys_ram_size);
+ if (!phys_ram_base) {
+ fprintf(stderr, "Could not allocate physical memory\n");