[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 7/9] hw/hppa: Move software power button address back into PDC
From: |
deller |
Subject: |
[PATCH v2 7/9] hw/hppa: Move software power button address back into PDC |
Date: |
Sun, 7 Jan 2024 14:22:35 +0100 |
From: Helge Deller <deller@gmx.de>
The various operating systems (e.g. Linux, NetBSD) have issues
mapping the power button when it's stored in page zero.
NetBSD even crashes, because it fails to map that page and then
accesses unmapped memory.
Since we now have a consistent memory mapping of PDC in 32-bit
and 64-bit address space (the lower 32-bits of the address are in
sync) the power button can be moved back to PDC space.
This patch fixes the power button on Linux, NetBSD and HP-UX.
Signed-off-by: Helge Deller <deller@gmx.de>
---
hw/hppa/machine.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index 8017002a2a..9bf2116934 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -36,8 +36,8 @@
#define MIN_SEABIOS_HPPA_VERSION 12 /* require at least this fw version */
-/* Power button address at &PAGE0->pad[4] */
-#define HPA_POWER_BUTTON (0x40 + 4 * sizeof(uint32_t))
+#define HPA_POWER_BUTTON (FIRMWARE_END - 0x10)
+static hwaddr soft_power_reg;
#define enable_lasi_lan() 0
@@ -45,7 +45,6 @@ static DeviceState *lasi_dev;
static void hppa_powerdown_req(Notifier *n, void *opaque)
{
- hwaddr soft_power_reg = HPA_POWER_BUTTON;
uint32_t val;
val = ldl_be_phys(&address_space_memory, soft_power_reg);
@@ -221,7 +220,7 @@ static FWCfgState *create_fw_cfg(MachineState *ms, PCIBus
*pci_bus,
fw_cfg_add_file(fw_cfg, "/etc/hppa/machine",
g_memdup(mc->name, len), len);
- val = cpu_to_le64(HPA_POWER_BUTTON);
+ val = cpu_to_le64(soft_power_reg);
fw_cfg_add_file(fw_cfg, "/etc/hppa/power-button-addr",
g_memdup(&val, sizeof(val)), sizeof(val));
@@ -295,6 +294,8 @@ static TranslateFn
*machine_HP_common_init_cpus(MachineState *machine)
ram_max = 0xf0000000; /* 3.75 GB (32-bit CPU) */
}
+ soft_power_reg = translate(NULL, HPA_POWER_BUTTON);
+
for (unsigned int i = 0; i < smp_cpus; i++) {
g_autofree char *name = g_strdup_printf("cpu%u-io-eir", i);
--
2.43.0
- [PATCH v2 4/9] target/hppa: Fix PDC address translation on PA2.0 with PSW.W=0, (continued)
- [PATCH v2 4/9] target/hppa: Fix PDC address translation on PA2.0 with PSW.W=0, deller, 2024/01/07
- [PATCH v2 5/9] target/hppa: Strip upper 32-bits of IOR on error in probe, deller, 2024/01/07
- [PATCH v2 6/9] target/hppa: Strip upper 32-bits of IOR on unaligned access error, deller, 2024/01/07
- [PATCH v2 7/9] hw/hppa: Move software power button address back into PDC,
deller <=
- [PATCH v2 8/9] target/hppa: Avoid accessing %gr0 when raising exception, deller, 2024/01/07
- [PATCH v2 9/9] target/hppa: Update SeaBIOS-hppa to version 15, deller, 2024/01/07
- Re: [PATCH v2 0/9] target/hppa qemu v8.2 regression fixes, Bruno Haible, 2024/01/07