diff options
author | Marc MarĂ <markmb@redhat.com> | 2016-05-23 19:11:33 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2016-07-14 15:50:52 +0200 |
commit | b2a575a1c652904600869e774e45bf4c9ed72c55 (patch) | |
tree | 8e513030be9a11c9bc6d971812a01d2e8d1725ef /hw | |
parent | a91a4e7d8cfe6ece610aacf7c52738188f5b5cb5 (diff) |
Add optionrom compatible with fw_cfg DMA version
This optionrom is based on linuxboot.S.
Signed-off-by: Marc MarĂ <markmb@redhat.com>
Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
Message-Id: <1464027093-24073-2-git-send-email-rjones@redhat.com>
[Add -fno-toplevel-reorder, support clang without -m16. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/i386/pc.c | 10 | ||||
-rw-r--r-- | hw/nvram/fw_cfg.c | 2 |
2 files changed, 9 insertions, 3 deletions
diff --git a/hw/i386/pc.c b/hw/i386/pc.c index f56e225a99..1b8baa8fee 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -998,8 +998,13 @@ static void load_linux(PCMachineState *pcms, fw_cfg_add_i32(fw_cfg, FW_CFG_SETUP_SIZE, setup_size); fw_cfg_add_bytes(fw_cfg, FW_CFG_SETUP_DATA, setup, setup_size); - option_rom[nb_option_roms].name = "linuxboot.bin"; - option_rom[nb_option_roms].bootindex = 0; + if (fw_cfg_dma_enabled(fw_cfg)) { + option_rom[nb_option_roms].name = "linuxboot_dma.bin"; + option_rom[nb_option_roms].bootindex = 0; + } else { + option_rom[nb_option_roms].name = "linuxboot.bin"; + option_rom[nb_option_roms].bootindex = 0; + } nb_option_roms++; } @@ -1291,6 +1296,7 @@ void xen_load_linux(PCMachineState *pcms) load_linux(pcms, fw_cfg); for (i = 0; i < nb_option_roms; i++) { assert(!strcmp(option_rom[i].name, "linuxboot.bin") || + !strcmp(option_rom[i].name, "linuxboot_dma.bin") || !strcmp(option_rom[i].name, "multiboot.bin")); rom_add_option(option_rom[i].name, option_rom[i].bootindex); } diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 74a0079ca6..2873030ade 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -552,7 +552,7 @@ static bool is_version_1(void *opaque, int version_id) return version_id == 1; } -static bool fw_cfg_dma_enabled(void *opaque) +bool fw_cfg_dma_enabled(void *opaque) { FWCfgState *s = opaque; |