diff options
-rw-r--r-- | hw/ide/sii3112.c | 12 | ||||
-rw-r--r-- | hw/misc/macio/macio.c | 2 | ||||
-rw-r--r-- | hw/ppc/e500.c | 9 | ||||
-rw-r--r-- | hw/ppc/ppc440_pcix.c | 11 | ||||
-rw-r--r-- | hw/ppc/prep.c | 2 | ||||
-rw-r--r-- | hw/ppc/spapr.c | 5 | ||||
-rw-r--r-- | hw/scsi/lsi53c895a.c | 7 | ||||
-rw-r--r-- | include/hw/pci/pci.h | 1 | ||||
-rw-r--r-- | target/ppc/translate.c | 9 | ||||
-rw-r--r-- | tests/boot-serial-test.c | 6 |
10 files changed, 36 insertions, 28 deletions
diff --git a/hw/ide/sii3112.c b/hw/ide/sii3112.c index e3896c6..743a50e 100644 --- a/hw/ide/sii3112.c +++ b/hw/ide/sii3112.c @@ -327,17 +327,6 @@ static void sii3112_pci_realize(PCIDevice *dev, Error **errp) qemu_register_reset(sii3112_reset, s); } -static void sii3112_pci_exitfn(PCIDevice *dev) -{ - PCIIDEState *d = PCI_IDE(dev); - int i; - - for (i = 0; i < 2; ++i) { - memory_region_del_subregion(&d->bmdma_bar, &d->bmdma[i].extra_io); - memory_region_del_subregion(&d->bmdma_bar, &d->bmdma[i].addr_ioport); - } -} - static void sii3112_pci_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); @@ -348,7 +337,6 @@ static void sii3112_pci_class_init(ObjectClass *klass, void *data) pd->class_id = PCI_CLASS_STORAGE_RAID; pd->revision = 1; pd->realize = sii3112_pci_realize; - pd->exit = sii3112_pci_exitfn; dc->desc = "SiI3112A SATA controller"; set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); } diff --git a/hw/misc/macio/macio.c b/hw/misc/macio/macio.c index af1bd46..454244f 100644 --- a/hw/misc/macio/macio.c +++ b/hw/misc/macio/macio.c @@ -406,6 +406,8 @@ static void macio_class_init(ObjectClass *klass, void *data) k->class_id = PCI_CLASS_OTHERS << 8; dc->props = macio_properties; set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); + /* Reason: Uses serial_hds in macio_instance_init */ + dc->user_creatable = false; } static const TypeInfo macio_oldworld_type_info = { diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 2238f96..9a85a41 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -1009,6 +1009,10 @@ void ppce500_init(MachineState *machine, PPCE500Params *params) } cur_base = loadaddr + payload_size; + if (cur_base < (32 * 1024 * 1024)) { + /* u-boot occupies memory up to 32MB, so load blobs above */ + cur_base = (32 * 1024 * 1024); + } /* Load bare kernel only if no bios/u-boot has been provided */ if (machine->kernel_filename && !kernel_as_payload) { @@ -1025,11 +1029,6 @@ void ppce500_init(MachineState *machine, PPCE500Params *params) cur_base += kernel_size; } - if (cur_base < (32 * 1024 * 1024)) { - /* u-boot occupies memory up to 32MB, so load blobs above */ - cur_base = (32 * 1024 * 1024); - } - /* Load initrd. */ if (machine->initrd_filename) { initrd_base = (cur_base + INITRD_LOAD_PAD) & ~INITRD_PAD_MASK; diff --git a/hw/ppc/ppc440_pcix.c b/hw/ppc/ppc440_pcix.c index ab2626a..b1307e6 100644 --- a/hw/ppc/ppc440_pcix.c +++ b/hw/ppc/ppc440_pcix.c @@ -21,6 +21,7 @@ #include "qemu/osdep.h" #include "qemu/error-report.h" +#include "qemu/log.h" #include "hw/hw.h" #include "hw/ppc/ppc.h" #include "hw/ppc/ppc4xx.h" @@ -286,8 +287,9 @@ static void ppc440_pcix_reg_write4(void *opaque, hwaddr addr, break; default: - error_report("%s: unhandled PCI internal register 0x%lx", __func__, - (unsigned long)addr); + qemu_log_mask(LOG_UNIMP, + "%s: unhandled PCI internal register 0x%"HWADDR_PRIx"\n", + __func__, addr); break; } } @@ -377,8 +379,9 @@ static uint64_t ppc440_pcix_reg_read4(void *opaque, hwaddr addr, break; default: - error_report("%s: invalid PCI internal register 0x%lx", __func__, - (unsigned long)addr); + qemu_log_mask(LOG_UNIMP, + "%s: invalid PCI internal register 0x%" HWADDR_PRIx "\n", + __func__, addr); val = 0; } diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 5c78503..a1e7219 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -787,7 +787,7 @@ static void ibm_40p_init(MachineState *machine) qdev_prop_set_uint32(dev, "equipment", 0xc0); qdev_init_nofail(dev); - pci_create_simple(pci_bus, PCI_DEVFN(1, 0), "lsi53c810"); + lsi53c810_create(pci_bus, PCI_DEVFN(1, 0)); /* XXX: s3-trio at PCI_DEVFN(2, 0) */ pci_vga_init(pci_bus); diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 032d034..fba76ab 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2607,10 +2607,11 @@ static void spapr_machine_init(MachineState *machine) NICInfo *nd = &nd_table[i]; if (!nd->model) { - nd->model = g_strdup("ibmveth"); + nd->model = g_strdup("spapr-vlan"); } - if (strcmp(nd->model, "ibmveth") == 0) { + if (g_str_equal(nd->model, "spapr-vlan") || + g_str_equal(nd->model, "ibmveth")) { spapr_vlan_create(spapr->vio_bus, nd); } else { pci_nic_init_nofail(&nd_table[i], phb->bus, nd->model, NULL); diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c index f3d4c4d..160657f 100644 --- a/hw/scsi/lsi53c895a.c +++ b/hw/scsi/lsi53c895a.c @@ -2279,3 +2279,10 @@ void lsi53c895a_create(PCIBus *bus) scsi_bus_legacy_handle_cmdline(&s->bus); } + +void lsi53c810_create(PCIBus *bus, int devfn) +{ + LSIState *s = LSI53C895A(pci_create_simple(bus, devfn, "lsi53c810")); + + scsi_bus_legacy_handle_cmdline(&s->bus); +} diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index d8c18c7..e255941 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -708,6 +708,7 @@ PCIDevice *pci_create(PCIBus *bus, int devfn, const char *name); PCIDevice *pci_create_simple(PCIBus *bus, int devfn, const char *name); void lsi53c895a_create(PCIBus *bus); +void lsi53c810_create(PCIBus *bus, int devfn); qemu_irq pci_allocate_irq(PCIDevice *pci_dev); void pci_set_irq(PCIDevice *pci_dev, int level); diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 0a0c090..218665b 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -4526,7 +4526,7 @@ static void gen_tlbie(DisasContext *ctx) TCGv_i32 t1; if (ctx->gtse) { - CHK_SV; /* If gtse is set then tblie is supervisor privileged */ + CHK_SV; /* If gtse is set then tlbie is supervisor privileged */ } else { CHK_HV; /* Else hypervisor privileged */ } @@ -4553,7 +4553,12 @@ static void gen_tlbsync(DisasContext *ctx) #if defined(CONFIG_USER_ONLY) GEN_PRIV; #else - CHK_HV; + + if (ctx->gtse) { + CHK_SV; /* If gtse is set then tlbsync is supervisor privileged */ + } else { + CHK_HV; /* Else hypervisor privileged */ + } /* BookS does both ptesync and tlbsync make tlbsync a nop for server */ if (ctx->insns_flags & PPC_BOOKE) { diff --git a/tests/boot-serial-test.c b/tests/boot-serial-test.c index ece25c6..5b24cd2 100644 --- a/tests/boot-serial-test.c +++ b/tests/boot-serial-test.c @@ -75,11 +75,13 @@ typedef struct testdef { static testdef_t tests[] = { { "alpha", "clipper", "", "PCI:" }, { "ppc", "ppce500", "", "U-Boot" }, - { "ppc", "prep", "", "Open Hack'Ware BIOS" }, + { "ppc", "prep", "-m 96", "Memory size: 96 MB" }, + { "ppc", "40p", "-boot d", "Booting from device d" }, { "ppc", "g3beige", "", "PowerPC,750" }, { "ppc", "mac99", "", "PowerPC,G4" }, { "ppc64", "ppce500", "", "U-Boot" }, - { "ppc64", "prep", "", "Open Hack'Ware BIOS" }, + { "ppc64", "prep", "-boot e", "Booting from device e" }, + { "ppc64", "40p", "-m 192", "Memory size: 192 MB" }, { "ppc64", "mac99", "", "PowerPC,970FX" }, { "ppc64", "pseries", "", "Open Firmware" }, { "ppc64", "powernv", "-cpu POWER8", "OPAL" }, |