diff options
author | Leandro Lupori <leandro.lupori@eldorado.org.br> | 2022-06-28 10:39:57 -0300 |
---|---|---|
committer | Daniel Henrique Barboza <danielhb413@gmail.com> | 2022-07-18 13:59:43 -0300 |
commit | 3c2e80ad2fcf004fcf74bf690dc1c952320a5b52 (patch) | |
tree | 233b4f9e2594a618c86ab3e92904a0cd3dc77a3b /hw/ppc/spapr.c | |
parent | 3778aa970f21b475ca16befcf271078602104fe6 (diff) | |
download | qemu-3c2e80ad2fcf004fcf74bf690dc1c952320a5b52.zip qemu-3c2e80ad2fcf004fcf74bf690dc1c952320a5b52.tar.gz qemu-3c2e80ad2fcf004fcf74bf690dc1c952320a5b52.tar.bz2 |
ppc: Check partition and process table alignment
Check if partition and process tables are properly aligned, in
their size, according to PowerISA 3.1B, Book III 6.7.6 programming
note. Hardware and KVM also raise an exception in these cases.
Signed-off-by: Leandro Lupori <leandro.lupori@eldorado.org.br>
Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
Message-Id: <20220628133959.15131-2-leandro.lupori@eldorado.org.br>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Diffstat (limited to 'hw/ppc/spapr.c')
-rw-r--r-- | hw/ppc/spapr.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 3a51128..bc9ba6e 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1336,6 +1336,11 @@ static bool spapr_get_pate(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu, patb = spapr->nested_ptcr & PTCR_PATB; pats = spapr->nested_ptcr & PTCR_PATS; + /* Check if partition table is properly aligned */ + if (patb & MAKE_64BIT_MASK(0, pats + 12)) { + return false; + } + /* Calculate number of entries */ pats = 1ull << (pats + 12 - 4); if (pats <= lpid) { |