ppc patch queue for 2018-03-19

This pull request supersedes the one for 2018-03-15.  The only
 difference is one patch is removed, since it exposed some code which
 triggers ubsan warnings.
 
 Here's the set of accumulated patches now that we're into soft freeze.
 I've split new functionality into a ppc-for-2.13 branch, so this only
 has bugfixes.  Well.. and a couple of simple cleanups to make bugfixes
 easier, some test improvements and a trivial change to make command
 line options more obvious.  I think those are all acceptable for soft
 freeze.
 -----BEGIN PGP SIGNATURE-----
 
 iQIyBAABCAAdFiEEdfRlhq5hpmzETofcbDjKyiDZs5IFAlqvBbAACgkQbDjKyiDZ
 s5KZrQ/4hZK0MmA49DPdY8rILYnh5g2MVN3Nw4HsKR2KZuKw7Zwwroz7l2YLHgn5
 ADVWNLhnoBKA8W6nI8qnEccd058G0+BsE2bJ5jXEGuPyRu5+d8bMMLfdjd4Seu1a
 5B+lp18yWA6yyHrf4iQ+9NATg2KP45tWm+keD4q6ZjQbvR/9kh/KCy6RT94jhnjU
 vSDGMMEsxWkdxuUmpWGmh1Pkid+9hBZb2dYSgCuirXqMhAYI5jbYWB0868vzBUEK
 1KDD19jBkjDL6H0z9T6BTWXyMQn7Wk5OqHoelPzxDRHArnzoE7/06iUyOK4AzPsU
 qFSrkkuyHzo5xWWjZ5Rx35qydQdfJw2RgKskj5Jdc2SuagZNRIojK1eRFpokdaND
 FQ/ncjNmuPWfZ1+Ab5p0Jbh0/dZoC6Al0wkrPux+wWWZazF5dnN9BuIoUdW0dcRW
 reCPHkO0h39BP/fiUid0VWfZIkL5oyxkNhQjom4KXcR/0mFCIp9rHCs1m+eqNGBM
 0mXZ1LbK7re1f3dY/kT5zZde89mToQehDBI9UkVR7/7BLKmD6C5uCSzBIT5fAZGX
 SMz9hPQfFs2UWd9N1MbDDXHl1tD4v7ZT6alX+v3qQJzNqCDNPpQ+mPZ9CeSZ23vC
 Gka+f5umdsYamGwdthWph1VDZlvVSuwUE4kP9hWUhW56Db0AXg==
 =TViG
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.12-20180319' into staging

ppc patch queue for 2018-03-19

This pull request supersedes the one for 2018-03-15.  The only
difference is one patch is removed, since it exposed some code which
triggers ubsan warnings.

Here's the set of accumulated patches now that we're into soft freeze.
I've split new functionality into a ppc-for-2.13 branch, so this only
has bugfixes.  Well.. and a couple of simple cleanups to make bugfixes
easier, some test improvements and a trivial change to make command
line options more obvious.  I think those are all acceptable for soft
freeze.

# gpg: Signature made Mon 19 Mar 2018 00:34:56 GMT
# gpg:                using RSA key 6C38CACA20D9B392
# gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>"
# gpg:                 aka "David Gibson (Red Hat) <dgibson@redhat.com>"
# gpg:                 aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>"
# gpg:                 aka "David Gibson (kernel.org) <dwg@kernel.org>"
# Primary key fingerprint: 75F4 6586 AE61 A66C C44E  87DC 6C38 CACA 20D9 B392

* remotes/dgibson/tags/ppc-for-2.12-20180319:
  target/ppc: fix tlbsync to check privilege level depending on GTSE
  ppc440_pcix: Change some error_report to qemu_log_mask(LOG_UNIMP, ...)
  hw/ppc/spapr: Allow "spapr-vlan" as NIC model name beside "ibmveth"
  PPC e500: Fix gap between u-boot and kernel
  hw/misc/macio: Mark the macio devices with user_creatable = false
  hw/ppc/prep: Fix implicit creation of "-drive if=scsi" devices
  tests/boot-serial: Check the 40p machine, too
  sii3112: Remove unneeded exit function

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2018-03-19 09:39:29 +00:00
commit 870c75b543
10 changed files with 36 additions and 28 deletions

View file

@ -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);
}

View file

@ -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 = {

View file

@ -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;

View file

@ -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;
}

View file

@ -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);

View file

@ -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);

View file

@ -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);
}

View file

@ -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);

View file

@ -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) {

View file

@ -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" },