From 4c1410d59c6d02882b97ded8c3144bfbd039e0df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Wed, 12 Mar 2014 18:43:01 +0100 Subject: [PATCH 1/2] prep: Update ppc_rom.bin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This increases file size from 512 KiB to 1 MiB. Signed-off-by: Andreas Färber --- pc-bios/ppc_rom.bin | Bin 524288 -> 1048576 bytes roms/openhackware | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/ppc_rom.bin b/pc-bios/ppc_rom.bin index d378d9a95e63fe843b7a6234fb45ddf6179198d3..e7f769328b33c67ab02426fc5f643cd11b5b101e 100644 GIT binary patch delta 20336 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 OyEUWOcAJ0fM;HOR@jZnA delta 20361 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 diff --git a/roms/openhackware b/roms/openhackware index e9829b5584..1af7e55425 160000 --- a/roms/openhackware +++ b/roms/openhackware @@ -1 +1 @@ -Subproject commit e9829b5584169ad14df2ca8776b87f4985aa9f06 +Subproject commit 1af7e55425e58a6dcb5133b092fcf16f8c654fb9 From d0b25425749d5525b2ba6d9d966d8800a5643b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Tue, 5 Nov 2013 00:09:45 +0100 Subject: [PATCH 2/2] raven: Move BIOS loading from board code to PCI host MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Raven datasheet explains where firmware lives in system memory, so do it there instead of in board code. Other boards using the same PCI host will not have to copy the firmware loading code. Signed-off-by: Hervé Poussineau [AF: Drop BIOS size workaround in favor of replacing our firmware blob] Signed-off-by: Andreas Färber --- hw/pci-host/prep.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++ hw/ppc/prep.c | 46 ++++++----------------------------------- 2 files changed, 57 insertions(+), 40 deletions(-) diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c index 0c948e2c30..94fdffa777 100644 --- a/hw/pci-host/prep.c +++ b/hw/pci-host/prep.c @@ -28,7 +28,9 @@ #include "hw/pci/pci_bus.h" #include "hw/pci/pci_host.h" #include "hw/i386/pc.h" +#include "hw/loader.h" #include "exec/address-spaces.h" +#include "elf.h" #define TYPE_RAVEN_PCI_DEVICE "raven" #define TYPE_RAVEN_PCI_HOST_BRIDGE "raven-pcihost" @@ -38,6 +40,10 @@ typedef struct RavenPCIState { PCIDevice dev; + + uint32_t elf_machine; + char *bios_name; + MemoryRegion bios; } RavenPCIState; #define RAVEN_PCI_HOST_BRIDGE(obj) \ @@ -52,6 +58,8 @@ typedef struct PRePPCIState { RavenPCIState pci_dev; } PREPPCIState; +#define BIOS_SIZE (1024 * 1024) + static inline uint32_t PPC_PCIIO_config(hwaddr addr) { int i; @@ -169,10 +177,45 @@ static void raven_pcihost_initfn(Object *obj) static int raven_init(PCIDevice *d) { + RavenPCIState *s = RAVEN_PCI_DEVICE(d); + char *filename; + int bios_size = -1; + d->config[0x0C] = 0x08; // cache_line_size d->config[0x0D] = 0x10; // latency_timer d->config[0x34] = 0x00; // capabilities_pointer + memory_region_init_ram(&s->bios, OBJECT(s), "bios", BIOS_SIZE); + memory_region_set_readonly(&s->bios, true); + memory_region_add_subregion(get_system_memory(), (uint32_t)(-BIOS_SIZE), + &s->bios); + vmstate_register_ram_global(&s->bios); + if (s->bios_name) { + filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, s->bios_name); + if (filename) { + if (s->elf_machine != EM_NONE) { + bios_size = load_elf(filename, NULL, NULL, NULL, + NULL, NULL, 1, s->elf_machine, 0); + } + if (bios_size < 0) { + bios_size = get_image_size(filename); + if (bios_size > 0 && bios_size <= BIOS_SIZE) { + hwaddr bios_addr; + bios_size = (bios_size + 0xfff) & ~0xfff; + bios_addr = (uint32_t)(-BIOS_SIZE); + bios_size = load_image_targphys(filename, bios_addr, + bios_size); + } + } + } + if (bios_size < 0 || bios_size > BIOS_SIZE) { + hw_error("qemu: could not load bios image '%s'\n", s->bios_name); + } + if (filename) { + g_free(filename); + } + } + return 0; } @@ -212,12 +255,20 @@ static const TypeInfo raven_info = { .class_init = raven_class_init, }; +static Property raven_pcihost_properties[] = { + DEFINE_PROP_UINT32("elf-machine", PREPPCIState, pci_dev.elf_machine, + EM_NONE), + DEFINE_PROP_STRING("bios-name", PREPPCIState, pci_dev.bios_name), + DEFINE_PROP_END_OF_LIST() +}; + static void raven_pcihost_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->realize = raven_pcihost_realizefn; + dc->props = raven_pcihost_properties; dc->fw_name = "pci"; } diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 9f8538cd20..81e13cb4ac 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -456,7 +456,6 @@ static void ppc_prep_init(QEMUMachineInitArgs *args) MemoryRegion *sysmem = get_system_memory(); PowerPCCPU *cpu = NULL; CPUPPCState *env = NULL; - char *filename; nvram_t nvram; M48t59State *m48t59; MemoryRegion *PPC_io_memory = g_new(MemoryRegion, 1); @@ -464,9 +463,8 @@ static void ppc_prep_init(QEMUMachineInitArgs *args) #if 0 MemoryRegion *xcsr = g_new(MemoryRegion, 1); #endif - int linux_boot, i, nb_nics1, bios_size; + int linux_boot, i, nb_nics1; MemoryRegion *ram = g_new(MemoryRegion, 1); - MemoryRegion *bios = g_new(MemoryRegion, 1); uint32_t kernel_base, initrd_base; long kernel_size, initrd_size; DeviceState *dev; @@ -509,43 +507,6 @@ static void ppc_prep_init(QEMUMachineInitArgs *args) vmstate_register_ram_global(ram); memory_region_add_subregion(sysmem, 0, ram); - /* allocate and load BIOS */ - memory_region_init_ram(bios, NULL, "ppc_prep.bios", BIOS_SIZE); - memory_region_set_readonly(bios, true); - memory_region_add_subregion(sysmem, (uint32_t)(-BIOS_SIZE), bios); - vmstate_register_ram_global(bios); - if (bios_name == NULL) - bios_name = BIOS_FILENAME; - filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); - if (filename) { - bios_size = load_elf(filename, NULL, NULL, NULL, - NULL, NULL, 1, ELF_MACHINE, 0); - if (bios_size < 0) { - bios_size = get_image_size(filename); - if (bios_size > 0 && bios_size <= BIOS_SIZE) { - hwaddr bios_addr; - bios_size = (bios_size + 0xfff) & ~0xfff; - bios_addr = (uint32_t)(-bios_size); - bios_size = load_image_targphys(filename, bios_addr, bios_size); - } - if (bios_size > BIOS_SIZE) { - fprintf(stderr, "qemu: PReP bios '%s' is too large (0x%x)\n", - bios_name, bios_size); - exit(1); - } - } - } else { - bios_size = -1; - } - if (bios_size < 0 && !qtest_enabled()) { - fprintf(stderr, "qemu: could not load PPC PReP bios '%s'\n", - bios_name); - exit(1); - } - if (filename) { - g_free(filename); - } - if (linux_boot) { kernel_base = KERNEL_LOAD_ADDR; /* now we can load the kernel */ @@ -593,6 +554,11 @@ static void ppc_prep_init(QEMUMachineInitArgs *args) } dev = qdev_create(NULL, "raven-pcihost"); + if (bios_name == NULL) { + bios_name = BIOS_FILENAME; + } + qdev_prop_set_string(dev, "bios-name", bios_name); + qdev_prop_set_uint32(dev, "elf-machine", ELF_MACHINE); pcihost = PCI_HOST_BRIDGE(dev); object_property_add_child(qdev_get_machine(), "raven", OBJECT(dev), NULL); qdev_init_nofail(dev);