qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 00/80] COW: Speed up writes
@ 2013-11-06 12:12 Charlie Shepherd
  2013-11-06 12:12 ` [Qemu-devel] [PATCH 01/80] pc: add etc/e820 fw_cfg file Charlie Shepherd
  2013-11-06 12:12 ` [Qemu-devel] [PATCH 02/80] pc: register e820 entries for ram Charlie Shepherd
  0 siblings, 2 replies; 4+ messages in thread
From: Charlie Shepherd @ 2013-11-06 12:12 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, pbonzini, gabriel, Charlie Shepherd, stefanha

Following on from Paolo's commits 26ae980 and 276cbc7, this patchset
implements some changes he recommended earlier which I didn't previously have
time to do while on GSoC.

Patch 2 was written initially I was intending to use cow_co_is_allocated in
Patch 3 and needed it to consider all sectors but in the end cow_find_streak
was sufficient, so it may not strictly be necessary.

Andreas Färber (49):
  mips_mipssim: Silence BIOS loading warning for qtest
  puv3: Turn puv3_load_kernel() into a no-op for qtest without -kernel
  mainstone: Don't enforce use of -pflash for qtest
  gumstix: Don't enforce use of -pflash for qtest
  z2: Don't enforce use of -pflash for qtest
  palm: Don't enforce loading ROM or kernel for qtest
  omap_sx1: Don't enforce use of kernel or flash for qtest
  exynos4_boards: Silence lack of -smp 2 warning for qtest
  armv7m: Don't enforce use of kernel for qtest
  axis_dev88: Don't enforce use of kernel for qtest
  mcf5208: Don't enforce use of kernel for qtest
  an5206: Don't enforce use of kernel for qtest
  milkymist: Suppress -kernel/-bios/-drive error for qtest
  shix: Drop debug output
  shix: Don't require firmware presence for qtest
  leon3: Don't enforce use of -bios with qtest
  qtest: Prepare QOM machine tests
  a9mpcore: Split off instance_init
  arm_gic: Extract headers hw/intc/arm_gic{,_common}.h
  a9mpcore: Embed GICState
  a9scu: QOM cleanups
  a9mpcore: Embed A9SCUState
  arm_mptimer: Convert to QOM realize
  a9mpcore: Embed ARMMPTimerState
  a9mpcore: Convert to QOM realize
  a9mpcore: Prepare for QOM embedding
  a15mpcore: Split off instance_init
  a15mpcore: Embed GICState
  a15mpcore: Convert to QOM realize
  a15mpcore: Prepare for QOM embedding
  a9scu: Build only once
  arm11mpcore: Fix typo in MemoryRegion name
  arm11mpcore: Drop unused fields
  arm11mpcore: Create container MemoryRegion in instance_init
  arm11mpcore: Split off SCU device
  arm11mpcore: Convert ARM11MPCorePriveState to QOM realize
  realview_gic: Convert to QOM realize
  realview_gic: Prepare for QOM embedding
  arm11mpcore: Convert mpcore_rirq_state to QOM realize
  arm11mpcore: Prepare for QOM embedding
  arm11mpcore: Split off RealView MPCore
  qdev-monitor: Clean up qdev_device_add() variable naming
  qdev-monitor: Avoid qdev as variable name
  qdev-monitor: Inline qdev_init() for device_add
  pxa: Fix typo "dettach"
  pcmcia: QOM'ify PCMCIACardState and MicroDriveState
  microdrive: Coding Style cleanups
  ide: Drop ide_init2_with_non_qdev_drives()
  pcmcia/pxa2xx: QOM'ify PXA2xxPCMCIAState

Anthony Liguori (1):
  ossaudio: do not enable by default

Antony Pavlov (1):
  milkymist-uart: Use Device::realize instead of SysBusDevice::init

Charlie Shepherd (3):
  COW: Speed up writes
  COW: Extend checking allocated bits to beyond one sector
  COW: Skip setting already set bits

Gerd Hoffmann (3):
  pc: add etc/e820 fw_cfg file
  pc: register e820 entries for ram
  qxl: replace pipe signaling with bottom half

Igor Mammedov (1):
  qdev-monitor: Fix crash when device_add is called with abstract driver

Jan Kiszka (1):
  rtc: remove dead SQW IRQ code

Marc-André Lureau (1):
  vga: fix invalid read after free

Michael S. Tsirkin (3):
  pc: disable acpi info for isapc and old pc machine
  exec: limit system memory size
  qom: Fix pointer to int property helpers' documentation

Mike Frysinger (1):
  configure: detect endian via compile test

Paolo Bonzini (1):
  vl: allow "cont" from panicked state

Peter Maydell (10):
  bswap.h: Remove cpu_to_le16wu()
  bswap.h: Remove cpu_to_le32wu()
  bswap.h: Remove le16_to_cpupu()
  bswap.h: Remove le32_to_cpupu()
  bswap.h: Remove be32_to_cpupu()
  bswap.h: Remove cpu_to_be16wu()
  bswap.h: Remove cpu_to_be32wu()
  bswap.h: Remove cpu_to_be64wu()
  bswap.h: Remove cpu_to_32wu()
  docs/memory.txt: Clarify and expand priority/overlap documentation

Stefan Hajnoczi (3):
  qdev-monitor: Unref device when device_add fails
  qdev: Drop misleading qdev_free() function
  tests: fix 64-bit int literals for 32-bit hosts

Wenchao Xia (2):
  qapi: fix memleak by adding implict struct functions in dealloc
    visitor
  tests: fix memleak in error path test for input visitor

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH 01/80] pc: add etc/e820 fw_cfg file
  2013-11-06 12:12 [Qemu-devel] [PATCH 00/80] COW: Speed up writes Charlie Shepherd
@ 2013-11-06 12:12 ` Charlie Shepherd
  2013-11-06 12:15   ` Charlie Shepherd
  2013-11-06 12:12 ` [Qemu-devel] [PATCH 02/80] pc: register e820 entries for ram Charlie Shepherd
  1 sibling, 1 reply; 4+ messages in thread
From: Charlie Shepherd @ 2013-11-06 12:12 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, Andrea Arcangeli, stefanha, Charlie Shepherd,
	Gerd Hoffmann, pbonzini, gabriel

From: Gerd Hoffmann <kraxel@redhat.com>

Unlike the existing FW_CFG_E820_TABLE entry which carries reservations
only the new etc/e820 file also has entries for RAM.

Format is simliar to the FW_CFG_E820_TABLE, it is a simple list of
e820_entry structs.  Unlike FW_CFG_E820_TABLE it has no count though
as the number of entries can be figured from the file size.

Cc: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Charlie Shepherd <charlie@ctshepherd.com>
---
 hw/i386/pc.c | 39 ++++++++++++++++++++++++++++-----------
 1 file changed, 28 insertions(+), 11 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index dee409d..a653ae4 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -90,7 +90,9 @@ struct e820_table {
     struct e820_entry entry[E820_NR_ENTRIES];
 } QEMU_PACKED __attribute((__aligned__(4)));
 
-static struct e820_table e820_table;
+static struct e820_table e820_reserve;
+static struct e820_entry *e820_table;
+static unsigned e820_entries;
 struct hpet_fw_config hpet_cfg = {.count = UINT8_MAX};
 
 void gsi_handler(void *opaque, int n, int level)
@@ -577,19 +579,32 @@ static void handle_a20_line_change(void *opaque, int irq, int level)
 
 int e820_add_entry(uint64_t address, uint64_t length, uint32_t type)
 {
-    int index = le32_to_cpu(e820_table.count);
+    int index = le32_to_cpu(e820_reserve.count);
     struct e820_entry *entry;
 
-    if (index >= E820_NR_ENTRIES)
-        return -EBUSY;
-    entry = &e820_table.entry[index++];
+    if (type != E820_RAM) {
+        /* old FW_CFG_E820_TABLE entry -- reservations only */
+        if (index >= E820_NR_ENTRIES) {
+            return -EBUSY;
+        }
+        entry = &e820_reserve.entry[index++];
+
+        entry->address = cpu_to_le64(address);
+        entry->length = cpu_to_le64(length);
+        entry->type = cpu_to_le32(type);
+
+        e820_reserve.count = cpu_to_le32(index);
+    }
 
-    entry->address = cpu_to_le64(address);
-    entry->length = cpu_to_le64(length);
-    entry->type = cpu_to_le32(type);
+    /* new "etc/e820" file -- include ram too */
+    e820_table = g_realloc(e820_table,
+                           sizeof(struct e820_entry) * (e820_entries+1));
+    e820_table[e820_entries].address = cpu_to_le64(address);
+    e820_table[e820_entries].length = cpu_to_le64(length);
+    e820_table[e820_entries].type = cpu_to_le32(type);
+    e820_entries++;
 
-    e820_table.count = cpu_to_le32(index);
-    return index;
+    return e820_entries;
 }
 
 /* Calculates the limit to CPU APIC ID values
@@ -640,7 +655,9 @@ static FWCfgState *bochs_bios_init(void)
         fw_cfg_add_bytes(fw_cfg, FW_CFG_SMBIOS_ENTRIES,
                          smbios_table, smbios_len);
     fw_cfg_add_bytes(fw_cfg, FW_CFG_E820_TABLE,
-                     &e820_table, sizeof(e820_table));
+                     &e820_reserve, sizeof(e820_reserve));
+    fw_cfg_add_file(fw_cfg, "etc/e820", e820_table,
+                    sizeof(struct e820_entry) * e820_entries);
 
     fw_cfg_add_bytes(fw_cfg, FW_CFG_HPET, &hpet_cfg, sizeof(hpet_cfg));
     /* allocate memory for the NUMA channel: one (64bit) word for the number
-- 
1.8.4.rc3

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH 02/80] pc: register e820 entries for ram
  2013-11-06 12:12 [Qemu-devel] [PATCH 00/80] COW: Speed up writes Charlie Shepherd
  2013-11-06 12:12 ` [Qemu-devel] [PATCH 01/80] pc: add etc/e820 fw_cfg file Charlie Shepherd
@ 2013-11-06 12:12 ` Charlie Shepherd
  1 sibling, 0 replies; 4+ messages in thread
From: Charlie Shepherd @ 2013-11-06 12:12 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, Andrea Arcangeli, stefanha, Charlie Shepherd,
	Gerd Hoffmann, pbonzini, gabriel

From: Gerd Hoffmann <kraxel@redhat.com>

So RAM shows up in the new etc/e820 fw_cfg file.

Cc: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Charlie Shepherd <charlie@ctshepherd.com>
---
 hw/i386/pc.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index a653ae4..12c436e 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1174,13 +1174,7 @@ FWCfgState *pc_memory_init(MemoryRegion *system_memory,
     memory_region_init_alias(ram_below_4g, NULL, "ram-below-4g", ram,
                              0, below_4g_mem_size);
     memory_region_add_subregion(system_memory, 0, ram_below_4g);
-    if (0) {
-        /*
-         * Ideally we should do that too, but that would ruin the e820
-         * reservations added by seabios before initializing fw_cfg.
-         */
-        e820_add_entry(0, below_4g_mem_size, E820_RAM);
-    }
+    e820_add_entry(0, below_4g_mem_size, E820_RAM);
     if (above_4g_mem_size > 0) {
         ram_above_4g = g_malloc(sizeof(*ram_above_4g));
         memory_region_init_alias(ram_above_4g, NULL, "ram-above-4g", ram,
-- 
1.8.4.rc3

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH 01/80] pc: add etc/e820 fw_cfg file
  2013-11-06 12:12 ` [Qemu-devel] [PATCH 01/80] pc: add etc/e820 fw_cfg file Charlie Shepherd
@ 2013-11-06 12:15   ` Charlie Shepherd
  0 siblings, 0 replies; 4+ messages in thread
From: Charlie Shepherd @ 2013-11-06 12:15 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, Andrea Arcangeli, stefanha, Charlie Shepherd,
	Gerd Hoffmann, pbonzini, gabriel

Sorry all, some confusion using git-publish, apologies for the spam.


Charlie

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-11-06 12:15 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-06 12:12 [Qemu-devel] [PATCH 00/80] COW: Speed up writes Charlie Shepherd
2013-11-06 12:12 ` [Qemu-devel] [PATCH 01/80] pc: add etc/e820 fw_cfg file Charlie Shepherd
2013-11-06 12:15   ` Charlie Shepherd
2013-11-06 12:12 ` [Qemu-devel] [PATCH 02/80] pc: register e820 entries for ram Charlie Shepherd

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).