aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2013-02-09 19:25:51 -0500
committerKevin O'Connor <kevin@koconnor.net>2013-02-12 21:21:28 -0500
commit56c5089e237a763235bad8c912cb52b267f09b10 (patch)
treebf7693d8b6d2d7294b281ee528fe8a23451eccb5
parentde9e705591d75e42e904deb8918af3b1ee3dcb08 (diff)
downloadseabios-56c5089e237a763235bad8c912cb52b267f09b10.tar.gz
Convert basic integer fw_cfg entries into romfile entries.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r--src/acpi.c2
-rw-r--r--src/boot.c2
-rw-r--r--src/mptable.c3
-rw-r--r--src/paravirt.c48
-rw-r--r--src/paravirt.h4
-rw-r--r--src/smp.c3
6 files changed, 9 insertions, 53 deletions
diff --git a/src/acpi.c b/src/acpi.c
index 5396ae2..aebf26e 100644
--- a/src/acpi.c
+++ b/src/acpi.c
@@ -372,7 +372,7 @@ build_madt(void)
io_apic->interrupt = cpu_to_le32(0);
struct madt_intsrcovr *intsrcovr = (void*)&io_apic[1];
- if (qemu_cfg_irq0_override()) {
+ if (romfile_loadint("etc/irq0-override", 0)) {
memset(intsrcovr, 0, sizeof(*intsrcovr));
intsrcovr->type = APIC_XRUPT_OVERRIDE;
intsrcovr->length = sizeof(*intsrcovr);
diff --git a/src/boot.c b/src/boot.c
index f70e402..ec411b7 100644
--- a/src/boot.c
+++ b/src/boot.c
@@ -404,7 +404,7 @@ interactive_bootmenu(void)
{
// XXX - show available drives?
- if (! CONFIG_BOOTMENU || ! qemu_cfg_show_boot_menu())
+ if (! CONFIG_BOOTMENU || !romfile_loadint("etc/show-boot-menu", 1))
return;
while (get_keystroke(0) >= 0)
diff --git a/src/mptable.c b/src/mptable.c
index 2d4e441..fc16096 100644
--- a/src/mptable.c
+++ b/src/mptable.c
@@ -8,7 +8,6 @@
#include "util.h" // dprintf
#include "config.h" // CONFIG_*
#include "mptable.h" // MPTABLE_SIGNATURE
-#include "paravirt.h" // qemu_cfg_irq0_override
#include "pci.h"
#include "pci_regs.h"
@@ -143,7 +142,7 @@ mptable_setup(void)
intsrc->srcbusirq = i;
intsrc->dstapic = ioapic_id;
intsrc->dstirq = i;
- if (qemu_cfg_irq0_override()) {
+ if (romfile_loadint("etc/irq0-override", 0)) {
/* Destination 2 is covered by irq0->inti2 override (i ==
0). Source IRQ 2 is unused */
if (i == 0)
diff --git a/src/paravirt.c b/src/paravirt.c
index e782227..79b1c56 100644
--- a/src/paravirt.c
+++ b/src/paravirt.c
@@ -172,37 +172,6 @@ void qemu_cfg_preinit(void)
dprintf(4, "qemu_cfg_present=%d\n", qemu_cfg_present);
}
-void qemu_cfg_get_uuid(u8 *uuid)
-{
- if (!qemu_cfg_present)
- return;
-
- qemu_cfg_read_entry(uuid, QEMU_CFG_UUID, 16);
-}
-
-int qemu_cfg_show_boot_menu(void)
-{
- u16 v;
- if (!qemu_cfg_present)
- return 1;
-
- qemu_cfg_read_entry(&v, QEMU_CFG_BOOT_MENU, sizeof(v));
-
- return v;
-}
-
-int qemu_cfg_irq0_override(void)
-{
- u8 v;
-
- if (!qemu_cfg_present)
- return 0;
-
- qemu_cfg_read_entry(&v, QEMU_CFG_IRQ0_OVERRIDE, sizeof(v));
-
- return v;
-}
-
u32 qemu_cfg_e820_entries(void)
{
u32 cnt;
@@ -237,18 +206,6 @@ void qemu_cfg_get_numa_data(u64 *data, int n)
qemu_cfg_read((u8*)(data + i), sizeof(u64));
}
-u16 qemu_cfg_get_max_cpus(void)
-{
- u16 cnt;
-
- if (!qemu_cfg_present)
- return 0;
-
- qemu_cfg_read_entry(&cnt, QEMU_CFG_MAX_CPUS, sizeof(cnt));
-
- return cnt;
-}
-
static int
qemu_cfg_read_file(struct romfile_s *file, void *dst, u32 maxlen)
{
@@ -292,6 +249,11 @@ struct qemu_smbios_header {
static void
qemu_cfg_legacy(void)
{
+ // Misc config items.
+ qemu_romfile_add("etc/show-boot-menu", QEMU_CFG_BOOT_MENU, 0, 2);
+ qemu_romfile_add("etc/irq0-override", QEMU_CFG_IRQ0_OVERRIDE, 0, 1);
+ qemu_romfile_add("etc/max-cpus", QEMU_CFG_MAX_CPUS, 0, 2);
+
// ACPI tables
char name[128];
u16 cnt;
diff --git a/src/paravirt.h b/src/paravirt.h
index 6b99ca9..e92e236 100644
--- a/src/paravirt.h
+++ b/src/paravirt.h
@@ -26,12 +26,8 @@ static inline int runningOnKVM(void) {
void qemu_ramsize_preinit(void);
void qemu_biostable_setup(void);
void qemu_cfg_preinit(void);
-int qemu_cfg_show_boot_menu(void);
-void qemu_cfg_get_uuid(u8 *uuid);
-int qemu_cfg_irq0_override(void);
int qemu_cfg_get_numa_nodes(void);
void qemu_cfg_get_numa_data(u64 *data, int n);
-u16 qemu_cfg_get_max_cpus(void);
u32 qemu_cfg_e820_entries(void);
void* qemu_cfg_e820_load_next(void *addr);
void qemu_romfile_init(void);
diff --git a/src/smp.c b/src/smp.c
index 617e7fb..f971647 100644
--- a/src/smp.c
+++ b/src/smp.c
@@ -8,7 +8,6 @@
#include "util.h" // dprintf
#include "config.h" // CONFIG_*
#include "cmos.h" // CMOS_BIOS_SMP_COUNT
-#include "paravirt.h"
#define APIC_ICR_LOW ((u8*)BUILD_APIC_ADDR + 0x300)
#define APIC_SVR ((u8*)BUILD_APIC_ADDR + 0x0F0)
@@ -136,7 +135,7 @@ smp_setup(void)
// Restore memory.
*(u64*)BUILD_AP_BOOT_ADDR = old;
- MaxCountCPUs = qemu_cfg_get_max_cpus();
+ MaxCountCPUs = romfile_loadint("etc/max-cpus", 0);
if (!MaxCountCPUs || MaxCountCPUs < CountCPUs)
MaxCountCPUs = CountCPUs;