mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
ppc/pnv: fix xscom address translation for POWER9
High addresses can overflow the uint32_t pcba variable after the 8byte shift. Signed-off-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
ad521238b4
commit
f81e551229
1 changed files with 4 additions and 4 deletions
|
@ -124,8 +124,8 @@ static uint64_t xscom_read(void *opaque, hwaddr addr, unsigned width)
|
||||||
goto complete;
|
goto complete;
|
||||||
}
|
}
|
||||||
|
|
||||||
val = address_space_ldq(&chip->xscom_as, pcba << 3, MEMTXATTRS_UNSPECIFIED,
|
val = address_space_ldq(&chip->xscom_as, (uint64_t) pcba << 3,
|
||||||
&result);
|
MEMTXATTRS_UNSPECIFIED, &result);
|
||||||
if (result != MEMTX_OK) {
|
if (result != MEMTX_OK) {
|
||||||
qemu_log_mask(LOG_GUEST_ERROR, "XSCOM read failed at @0x%"
|
qemu_log_mask(LOG_GUEST_ERROR, "XSCOM read failed at @0x%"
|
||||||
HWADDR_PRIx " pcba=0x%08x\n", addr, pcba);
|
HWADDR_PRIx " pcba=0x%08x\n", addr, pcba);
|
||||||
|
@ -150,8 +150,8 @@ static void xscom_write(void *opaque, hwaddr addr, uint64_t val,
|
||||||
goto complete;
|
goto complete;
|
||||||
}
|
}
|
||||||
|
|
||||||
address_space_stq(&chip->xscom_as, pcba << 3, val, MEMTXATTRS_UNSPECIFIED,
|
address_space_stq(&chip->xscom_as, (uint64_t) pcba << 3, val,
|
||||||
&result);
|
MEMTXATTRS_UNSPECIFIED, &result);
|
||||||
if (result != MEMTX_OK) {
|
if (result != MEMTX_OK) {
|
||||||
qemu_log_mask(LOG_GUEST_ERROR, "XSCOM write failed at @0x%"
|
qemu_log_mask(LOG_GUEST_ERROR, "XSCOM write failed at @0x%"
|
||||||
HWADDR_PRIx " pcba=0x%08x data=0x%" PRIx64 "\n",
|
HWADDR_PRIx " pcba=0x%08x data=0x%" PRIx64 "\n",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue