[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 17/20] pc: Postpone adding ACPI and SMBIOS to fw_cfg
From: |
minyard |
Subject: |
[Qemu-devel] [PATCH 17/20] pc: Postpone adding ACPI and SMBIOS to fw_cfg |
Date: |
Wed, 29 May 2013 17:08:13 -0500 |
From: Corey Minyard <address@hidden>
Postpone the addition of the ACPI and SMBIOS tables until after
device initialization. This allows devices to add entries to these
tables.
Signed-off-by: Corey Minyard <address@hidden>
---
hw/i386/pc.c | 38 ++++++++++++++++++++++++++++++--------
1 file changed, 30 insertions(+), 8 deletions(-)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 197d218..d3143a4 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -598,8 +598,6 @@ static unsigned int pc_apic_id_limit(unsigned int max_cpus)
static void *bochs_bios_init(void)
{
void *fw_cfg;
- uint8_t *smbios_table;
- size_t smbios_len;
uint64_t *numa_fw_cfg;
int i, j;
unsigned int apic_id_limit = pc_apic_id_limit(max_cpus);
@@ -622,14 +620,8 @@ static void *bochs_bios_init(void)
fw_cfg_add_i16(fw_cfg, FW_CFG_MAX_CPUS, (uint16_t)apic_id_limit);
fw_cfg_add_i32(fw_cfg, FW_CFG_ID, 1);
fw_cfg_add_i64(fw_cfg, FW_CFG_RAM_SIZE, (uint64_t)ram_size);
- fw_cfg_add_bytes(fw_cfg, FW_CFG_ACPI_TABLES,
- acpi_tables, acpi_tables_len);
fw_cfg_add_i32(fw_cfg, FW_CFG_IRQ0_OVERRIDE, kvm_allows_irq0_override());
- smbios_table = smbios_get_table(&smbios_len);
- if (smbios_table)
- 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));
@@ -1012,6 +1004,31 @@ void pc_acpi_init(const char *default_dsdt)
}
}
+struct pc_bios_post_init {
+ Notifier post_init;
+ void *fw_cfg;
+};
+
+/* Add the ACPI and SMBIOS tables after all the hardware has been initialized.
+ * This gives devices a chance to add to those tables.
+ */
+static void pc_bios_post_initfn(Notifier *n, void *opaque)
+{
+ struct pc_bios_post_init *p = container_of(n, struct pc_bios_post_init,
+ post_init);
+ uint8_t *smbios_table;
+ size_t smbios_len;
+
+ fw_cfg_add_bytes(p->fw_cfg, FW_CFG_ACPI_TABLES,
+ acpi_tables, acpi_tables_len);
+ smbios_table = smbios_get_table(&smbios_len);
+ if (smbios_table)
+ fw_cfg_add_bytes(p->fw_cfg, FW_CFG_SMBIOS_ENTRIES,
+ smbios_table, smbios_len);
+}
+
+static struct pc_bios_post_init post_init;
+
void *pc_memory_init(MemoryRegion *system_memory,
const char *kernel_filename,
const char *kernel_cmdline,
@@ -1071,6 +1088,11 @@ void *pc_memory_init(MemoryRegion *system_memory,
for (i = 0; i < nb_option_roms; i++) {
rom_add_option(option_rom[i].name, option_rom[i].bootindex);
}
+
+ post_init.fw_cfg = fw_cfg;
+ post_init.post_init.notify = pc_bios_post_initfn;
+ qemu_add_machine_init_done_notifier(&post_init.post_init);
+
return fw_cfg;
}
--
1.7.9.5
- [Qemu-devel] [PATCH 02/20] qemu-char: Allow a chardev to reconnect if disconnected, (continued)
- [Qemu-devel] [PATCH 02/20] qemu-char: Allow a chardev to reconnect if disconnected, minyard, 2013/05/29
- [Qemu-devel] [PATCH 15/20] acpi: Add a way to extend tables, minyard, 2013/05/29
- [Qemu-devel] [PATCH 06/20] Add a base IPMI interface, minyard, 2013/05/29
- [Qemu-devel] [PATCH 19/20] smbios: Add a function to directly add an entry, minyard, 2013/05/29
- [Qemu-devel] [PATCH 20/20] ipmi: Add SMBIOS table entry, minyard, 2013/05/29
- [Qemu-devel] [PATCH 07/20] ipmi: Add a PC ISA type structure, minyard, 2013/05/29
- [Qemu-devel] [PATCH 18/20] ipmi: Add ACPI table entries for BMCs, minyard, 2013/05/29
- [Qemu-devel] [PATCH 09/20] ipmi: Add a BT low-level interface, minyard, 2013/05/29
- [Qemu-devel] [PATCH 08/20] ipmi: Add a KCS low-level interface, minyard, 2013/05/29
- [Qemu-devel] [PATCH 01/20] qemu-char: Allocate CharDriverState in qemu_chr_new_from_opts, minyard, 2013/05/29
- [Qemu-devel] [PATCH 17/20] pc: Postpone adding ACPI and SMBIOS to fw_cfg,
minyard <=
- [Qemu-devel] [PATCH 14/20] ipmi: Add migration capability to the IPMI device., minyard, 2013/05/29
- [Qemu-devel] [PATCH 11/20] ipmi: Add an external connection simulation interface, minyard, 2013/05/29
- [Qemu-devel] [PATCH 16/20] acpi: Add table construction tools, minyard, 2013/05/29
- [Qemu-devel] [PATCH 12/20] ipmi: Add tests, minyard, 2013/05/29
- [Qemu-devel] [PATCH 10/20] ipmi: Add a local BMC simulation, minyard, 2013/05/29