This is in line with the PA-8700 specification.
As the SeaBIOS functional tests requires a 40 bit physical address space
and now support the A400 machine, update tests to run that instead.
Signed-off-by: Anton Johansson <anjo@rev.ng>
---
target/hppa/cpu.c | 2 +-
tests/functional/hppa/test_seabios.py | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c
index cc755da8be..5ba1045f1f 100644
--- a/target/hppa/cpu.c
+++ b/target/hppa/cpu.c
@@ -344,7 +344,7 @@ static const TypeInfo hppa_cpu_type_infos[] = {
.name = TYPE_HPPA_CPU_PA_8700,
.parent = TYPE_HPPA_CPU,
.class_data = &(const HPPACPUDef) {
- .phys_addr_bits = 40,
+ .phys_addr_bits = 44,
.is_pa20 = true,
},
},
diff --git a/tests/functional/hppa/test_seabios.py b/tests/functional/hppa/test_seabios.py
index 661b2464e1..bdb9d534ef 100755
--- a/tests/functional/hppa/test_seabios.py
+++ b/tests/functional/hppa/test_seabios.py
@@ -12,7 +12,7 @@
class HppaSeabios(QemuSystemTest):
timeout = 5
- MACH_BITS = {'B160L': 32, 'C3700': 64}
+ MACH_BITS = {'B160L': 32, 'A400': 64}
def boot_seabios(self):
mach = self.machine
@@ -28,7 +28,7 @@ def test_hppa_32(self):
self.boot_seabios()
def test_hppa_64(self):
- self.set_machine('C3700')
+ self.set_machine('A400')
self.boot_seabios()
if __name__ == '__main__':
--
2.52.0
On 3/2/26 12:56, Anton Johansson via qemu development wrote:
> This is in line with the PA-8700 specification.
>
> As the SeaBIOS functional tests requires a 40 bit physical address space
44 bit physical address space?
Other than that:
Reviewed-by: Helge Deller <deller@gmx.de>
> and now support the A400 machine, update tests to run that instead.
>
> Signed-off-by: Anton Johansson <anjo@rev.ng>
> ---
> target/hppa/cpu.c | 2 +-
> tests/functional/hppa/test_seabios.py | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c
> index cc755da8be..5ba1045f1f 100644
> --- a/target/hppa/cpu.c
> +++ b/target/hppa/cpu.c
> @@ -344,7 +344,7 @@ static const TypeInfo hppa_cpu_type_infos[] = {
> .name = TYPE_HPPA_CPU_PA_8700,
> .parent = TYPE_HPPA_CPU,
> .class_data = &(const HPPACPUDef) {
> - .phys_addr_bits = 40,
> + .phys_addr_bits = 44,
> .is_pa20 = true,
> },
> },
> diff --git a/tests/functional/hppa/test_seabios.py b/tests/functional/hppa/test_seabios.py
> index 661b2464e1..bdb9d534ef 100755
> --- a/tests/functional/hppa/test_seabios.py
> +++ b/tests/functional/hppa/test_seabios.py
> @@ -12,7 +12,7 @@
> class HppaSeabios(QemuSystemTest):
>
> timeout = 5
> - MACH_BITS = {'B160L': 32, 'C3700': 64}
> + MACH_BITS = {'B160L': 32, 'A400': 64}
>
> def boot_seabios(self):
> mach = self.machine
> @@ -28,7 +28,7 @@ def test_hppa_32(self):
> self.boot_seabios()
>
> def test_hppa_64(self):
> - self.set_machine('C3700')
> + self.set_machine('A400')
> self.boot_seabios()
>
> if __name__ == '__main__':
>
On 03/03/26, Helge Deller wrote:
> On 3/2/26 12:56, Anton Johansson via qemu development wrote:
> > This is in line with the PA-8700 specification.
> >
> > As the SeaBIOS functional tests requires a 40 bit physical address space
>
> 44 bit physical address space?
Hmm maybe I'm missing something then, the 44 bit functional tests still
hangs. From what I can tell mapping of the PDC address space results in
physical addresses starting with 0xf00f0xxxxxx for 44 bits, whereas SeaBIOS
uses 0xf0f0xxxxxx, meaning we require 40 bits to work with SeaBIOS from
QEMUs side.
hwaddr hppa_abs_to_phys_pa2_w0(CPUHPPAState *env, vaddr addr)
{
/*
* See Figure H-10, "Absolute Accesses when PSW W-bit is 0",
* combined with Figure H-11, as above.
*/
if (likely(extract32(addr, 28, 4) != 0xf)) {
...
} else if (extract32(addr, 24, 4) != 0) {
...
} else {
/*
* PDC address space:
* Figures H-10 and H-11 of the parisc2.0 spec do not specify
* where to map into the 64-bit PDC address space.
* We map with an offset which equals the 32-bit address, which
* is what can be seen on physical machines too.
*/
addr = (uint32_t)addr;
addr |= -1ull << (hppa_phys_addr_bits(env) - 4);
}
return addr;
}
please let me know if I'm missing something!:)
On 3/3/26 13:12, Anton Johansson via qemu development wrote:
> On 03/03/26, Helge Deller wrote:
>> On 3/2/26 12:56, Anton Johansson via qemu development wrote:
>>> This is in line with the PA-8700 specification.
>>>
>>> As the SeaBIOS functional tests requires a 40 bit physical address space
>>
>> 44 bit physical address space?
>
> Hmm maybe I'm missing something then, the 44 bit functional tests still
> hangs. [..]
There is (maybe) a misunderstanding.
In your commit message you mention that 40bits are required, but in the
patch itself you change from 40 to 44 bits. This might be misleading?
Maybe explain in the commit message why you put the 44 here?
.class_data = &(const HPPACPUDef) {
- .phys_addr_bits = 40,
+ .phys_addr_bits = 44,
.is_pa20 = true,
Helge
© 2016 - 2026 Red Hat, Inc.