Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.11-20171…
Browse files Browse the repository at this point in the history
…122' into staging

ppc patch queue 2017-11-22

Several more fixes to merge for qemu-2.11.

# gpg: Signature made Wed 22 Nov 2017 04:29:57 GMT
# gpg:                using RSA key 0x6C38CACA20D9B392
# 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.11-20171122:
  ppc: fix VTB migration
  spapr: Implement bug in spapr-vty device to be compatible with PowerVM
  hw/ppc/spapr: Fix virtio-scsi bootindex handling for LUNs >= 256

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
  • Loading branch information
pm215 committed Nov 23, 2017
2 parents 2fe47fc + 6dd836f commit 1b89975
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
18 changes: 18 additions & 0 deletions hw/char/spapr_vty.c
Expand Up @@ -58,6 +58,24 @@ static int vty_getchars(VIOsPAPRDevice *sdev, uint8_t *buf, int max)

while ((n < max) && (dev->out != dev->in)) {
buf[n++] = dev->buf[dev->out++ % VTERM_BUFSIZE];

/* PowerVM's vty implementation has a bug where it inserts a
* \0 after every \r going to the guest. Existing guests have
* a workaround for this which removes every \0 immediately
* following a \r, so here we make ourselves bug-for-bug
* compatible, so that the guest won't drop a real \0-after-\r
* that happens to occur in a binary stream. */
if (buf[n - 1] == '\r') {
if (n < max) {
buf[n++] = '\0';
} else {
/* No room for the extra \0, roll back and try again
* next time */
dev->out--;
n--;
break;
}
}
}

qemu_chr_fe_accept_input(&dev->chardev);
Expand Down
4 changes: 4 additions & 0 deletions hw/ppc/spapr.c
Expand Up @@ -2663,6 +2663,10 @@ static char *spapr_get_fw_dev_path(FWPathProvider *p, BusState *bus,
* swap 0100 or 10 << or 20 << ( target lun-id -- srplun )
*/
unsigned id = 0x1000000 | (d->id << 16) | d->lun;
if (d->lun >= 256) {
/* Use the LUN "flat space addressing method" */
id |= 0x4000;
}
return g_strdup_printf("%s@%"PRIX64, qdev_fw_name(dev),
(uint64_t)id << 32);
} else if (usb) {
Expand Down
4 changes: 2 additions & 2 deletions target/ppc/translate_init.c
Expand Up @@ -8081,10 +8081,10 @@ static void gen_spr_power8_ebb(CPUPPCState *env)
/* Virtual Time Base */
static void gen_spr_vtb(CPUPPCState *env)
{
spr_register(env, SPR_VTB, "VTB",
spr_register_kvm(env, SPR_VTB, "VTB",
SPR_NOACCESS, SPR_NOACCESS,
&spr_read_tbl, SPR_NOACCESS,
0x00000000);
KVM_REG_PPC_VTB, 0x00000000);
}

static void gen_spr_power8_fscr(CPUPPCState *env)
Expand Down

0 comments on commit 1b89975

Please sign in to comment.