From patchwork Wed Feb 7 18:20:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548919 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F1D95C4828D for ; Wed, 7 Feb 2024 18:21:52 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXR-0004mj-Uq; Wed, 07 Feb 2024 13:20:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXJ-0004jI-5P for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:41 -0500 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXH-00085H-IF for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:40 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id C2815CE1A10; Wed, 7 Feb 2024 18:20:28 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A7FFC433F1; Wed, 7 Feb 2024 18:20:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330028; bh=IvNlnF9mYMcbkeCT+SaYzUm45YczldzSE/Voy2+FLk4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eX/P7WNlMFcBE51lz+nsCTMushfvIyTB9hQmv6XR4LD9QkCRD/PSJcbF5cEYZt37R LvYFgFjwD+/RSbwsr4GJIv1KeT++bEN48sryXmxMdS5N65hQyCl8gwJL9NrI6ndV/+ owRyKuxjs9asOIq8Y3TlwYtXrk2mXrzbIv7lFEWYNIqfR3eFa7k9VBAn+89KsjgJ6J VOpzSUCWL0bfPDqTmrX0jEPo0iWS9irPq9WzrSgz9/S9ZOKfiGdPD0I2Wlo8g7G8u4 t1NILuk1XjC6Qc36HRZM5Z9SSEJU+ckCCt0e8chyhJpQ3UIcociH1uppkwM9lAzBv9 dtfD8d4kCJR2w== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 01/13] disas/hppa: Add disassembly for qemu specific instructions Date: Wed, 7 Feb 2024 19:20:11 +0100 Message-ID: <20240207182023.36316-2-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2604:1380:40e1:4800::1; envelope-from=deller@kernel.org; helo=sin.source.kernel.org X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller Add disassembly of opcodes for "HALT QEMU", "RESET QEMU" and "RESTORE SHR" (restore shadow registers). Signed-off-by: Helge Deller Reviewed-by: Richard Henderson --- disas/hppa.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/disas/hppa.c b/disas/hppa.c index cce4f4aa37..22dce9b41b 100644 --- a/disas/hppa.c +++ b/disas/hppa.c @@ -1609,6 +1609,10 @@ static const struct pa_opcode pa_opcodes[] = { "call", 0xe800a000, 0xffe0e000, "nW", pa10, FLAG_STRICT}, { "ret", 0xe840d000, 0xfffffffd, "n", pa20, FLAG_STRICT}, +/* Opcodes assigned to QEMU, used by SeaBIOS firmware and Linux kernel */ +{ "HALT QEMU", 0xfffdead0, 0xfffffffd, "n", pa10, FLAG_STRICT}, +{ "RESET QEMU", 0xfffdead1, 0xfffffffd, "n", pa10, FLAG_STRICT}, +{ "RESTORE SHR",0xfffdead2, 0xfffffffd, "n", pa10, FLAG_STRICT}, }; #define NUMOPCODES ((sizeof pa_opcodes)/(sizeof pa_opcodes[0])) From patchwork Wed Feb 7 18:20:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548927 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 71AF8C4828F for ; Wed, 7 Feb 2024 18:23:16 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXQ-0004lk-2a; Wed, 07 Feb 2024 13:20:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXK-0004kf-Jn for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:42 -0500 Received: from sin.source.kernel.org ([145.40.73.55]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXI-00085K-B8 for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:42 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 1F156CE1985; Wed, 7 Feb 2024 18:20:30 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7D7E3C433C7; Wed, 7 Feb 2024 18:20:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330029; bh=nnPIll0WdUGBb3j9AjVCaV/yzNrk7pTlwf5F7MC2D1E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bo3xWjXa6k2JT0ZXRFb1MV8jgnMTXIlAXTeehNB3Gmoqr0TTubp9LjafookidUmhh ChmqCC+6pa0sQXgGbyPdaebzEStSoePZXHSn/onJa3KW29BbeMzLm/deZcQUd7fdtH 1ADJhIZqSwm/m4QbWQeFYjVoVgFVhoCRTDSPEg9jz7bQj9D+0JgaOsK/sh79/xqHxw uyb2CmgrEVtRv7lT7ZCTMIv2NP05z4bEwAD20inhbwVGlTbxCe6zAHwYOC1Z4VDEQB ogftnKEGXK/8bYjcJg+Y79npFsE/alWGZ9R32TkETHJf3nlRnobVQsOYfabV3nHe+K jqz8q3f61N70Q== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 02/13] target/hppa: Add "diag 0x101" for console output support Date: Wed, 7 Feb 2024 19:20:12 +0100 Message-ID: <20240207182023.36316-3-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=145.40.73.55; envelope-from=deller@kernel.org; helo=sin.source.kernel.org X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller For debugging purposes at the early stage of the bootup process, the SeaBIOS-hppa firmware sometimes needs to output characters to the serial console. Note that the serial console is the default output method for parisc machines. At this stage PCI busses and other devices haven't been initialized yet. So, SeaBIOS-hppa will not be able to find the correct I/O ports for the serial ports yet. Instead, add an emulation for the "diag 0x101" opcode to assist here. Without any other dependencies, SeaBIOS-hppa can then load the character to be printed in register %r26 and issue the diag assembly instruction. The qemu diag_console_output() helper function will then print that character to the first serial port. Signed-off-by: Helge Deller --- target/hppa/helper.h | 1 + target/hppa/op_helper.c | 32 ++++++++++++++++++++++++++++++++ target/hppa/translate.c | 6 ++++++ 3 files changed, 39 insertions(+) diff --git a/target/hppa/helper.h b/target/hppa/helper.h index 20698f68ed..1bdbcd8f98 100644 --- a/target/hppa/helper.h +++ b/target/hppa/helper.h @@ -103,4 +103,5 @@ DEF_HELPER_FLAGS_1(ptlbe, TCG_CALL_NO_RWG, void, env) DEF_HELPER_FLAGS_2(lpa, TCG_CALL_NO_WG, tl, env, tl) DEF_HELPER_FLAGS_1(change_prot_id, TCG_CALL_NO_RWG, void, env) DEF_HELPER_1(diag_btlb, void, env) +DEF_HELPER_1(diag_console_output, void, env) #endif diff --git a/target/hppa/op_helper.c b/target/hppa/op_helper.c index b1f24a5aad..2c2c4aa183 100644 --- a/target/hppa/op_helper.c +++ b/target/hppa/op_helper.c @@ -24,6 +24,8 @@ #include "exec/helper-proto.h" #include "exec/cpu_ldst.h" #include "qemu/timer.h" +#include "sysemu/sysemu.h" +#include "chardev/char-fe.h" #include "trace.h" G_NORETURN void HELPER(excp)(CPUHPPAState *env, int excp) @@ -484,3 +486,33 @@ uint64_t HELPER(hshradd)(uint64_t r1, uint64_t r2, uint32_t sh) } return ret; } + +/* + * diag_console_output() is a helper function used during the initial bootup + * process of the SeaBIOS-hppa firmware. During the bootup phase, addresses of + * serial ports on e.g. PCI busses are unknown and most other devices haven't + * been initialized and configured yet. With help of a simple "diag" assembler + * instruction and an ASCII character code in register %r26 firmware can easily + * print debug output without any dependencies to the first serial port and use + * that as serial console. + */ +void HELPER(diag_console_output)(CPUHPPAState *env) +{ + CharBackend *serial_backend; + Chardev *serial_port; + unsigned char c; + + /* find first serial port */ + serial_port = serial_hd(0); + if (!serial_port) + return; + + /* get serial_backend for the serial port */ + serial_backend = serial_port->be; + if (!serial_backend || + !qemu_chr_fe_backend_connected(serial_backend)) + return; + + c = (unsigned char)env->gr[26]; + qemu_chr_fe_write(serial_backend, &c, sizeof(c)); +} diff --git a/target/hppa/translate.c b/target/hppa/translate.c index 08d09d50d7..53ec57ee86 100644 --- a/target/hppa/translate.c +++ b/target/hppa/translate.c @@ -4411,6 +4411,12 @@ static bool trans_diag(DisasContext *ctx, arg_diag *a) gen_helper_diag_btlb(tcg_env); return nullify_end(ctx); } + if (a->i == 0x101) { + /* print char in %r26 to first serial console, used by SeaBIOS-hppa */ + nullify_over(ctx); + gen_helper_diag_console_output(tcg_env); + return nullify_end(ctx); + } #endif qemu_log_mask(LOG_UNIMP, "DIAG opcode 0x%04x ignored\n", a->i); return true; From patchwork Wed Feb 7 18:20:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548923 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7297CC4828D for ; Wed, 7 Feb 2024 18:22:46 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXJ-0004jV-I0; Wed, 07 Feb 2024 13:20:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXG-0004hk-MD for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:38 -0500 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXE-00085Q-3I for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:38 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 72ADDCE1ACF; Wed, 7 Feb 2024 18:20:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D070BC43390; Wed, 7 Feb 2024 18:20:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330030; bh=29/fLpf59A6CPqN/LYYXpn2/AuRJvOzTiNJ4whGi5vI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AUWcHwt7/HnC9M/DblhHLFjycmhf6WXSTeFzEKDgCTRVPDx84gAKWm3bms1UFKv4C nVlIXbXH4c4Zoh1lSiTtPVjwnwnqRZb3NAOSHmAOJDY52HZ9McMm2cqACer0VSgq41 wOkKrGqI3gf0NswXLtSNeDrUEWHKZoiLjIPG8BJ+fhKYbQF6HeeiRCde2IrF6Ys8yb 5CzZnejwEXbQPKlzkZBodb9nBHNJsx/pawjMigmf6k/51hQCqqaTCrHgA2C/au5z8a wxipSJ/jvXCiQkTQK/PaBWGZSdP8oZBJNNyPklnzxRcCyO/MOyuO5PGXvqXQDJs3T2 uanEL/FYJkwgg== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 03/13] target/hppa: Fix PSW_W and PSW_E bits in rsm, ssm and mtsm Date: Wed, 7 Feb 2024 19:20:13 +0100 Message-ID: <20240207182023.36316-4-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2604:1380:40e1:4800::1; envelope-from=deller@kernel.org; helo=sin.source.kernel.org X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller The ssm and rsm instructions number the PSW_W and PSW_E bits differently than how they are actually in the PSW. Both bits are relevant on 64-bit CPUs only. Fix the existing ssm and rsm instructions to handle the bits correctly. For that drop the swap_system_mask() helper function in favour of new helper functions get_system_mask, set_system_mask and mtsm_system_mask. get_system_mask() returns the PSW bits how they should be returned in the target register of the ssm and rsm instructions. set_system_mask() sets the PSW bits without any further modification. Note that the a->i constant value of ssm and rsm have already been converted to match the physical PSW bits by expand_sm_imm() in the instruction decoder. The mtsm instruction is different, as it takes the new PSW from a register at runtime, and as such the PSW.E and PSW.W bits are moved at runtime to the right bit positions before setting the PSW. Signed-off-by: Helge Deller --- target/hppa/cpu.h | 2 ++ target/hppa/helper.h | 4 +++- target/hppa/sys_helper.c | 46 +++++++++++++++++++++++++++++++++++++--- target/hppa/translate.c | 38 +++++++++++++++++++++------------ 4 files changed, 73 insertions(+), 17 deletions(-) diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h index 7a181e8f33..06b65f2258 100644 --- a/target/hppa/cpu.h +++ b/target/hppa/cpu.h @@ -122,7 +122,9 @@ #define PSW_T 0x01000000 #define PSW_S 0x02000000 #define PSW_E 0x04000000 +#define PSW_E_BIT 37 /* PA2.0 only */ #define PSW_W 0x08000000 /* PA2.0 only */ +#define PSW_W_BIT 36 /* PA2.0 only */ #define PSW_Z 0x40000000 /* PA1.x only */ #define PSW_Y 0x80000000 /* PA1.x only */ diff --git a/target/hppa/helper.h b/target/hppa/helper.h index 1bdbcd8f98..abffd3f531 100644 --- a/target/hppa/helper.h +++ b/target/hppa/helper.h @@ -92,7 +92,9 @@ DEF_HELPER_1(rfi_r, void, env) DEF_HELPER_FLAGS_2(write_interval_timer, TCG_CALL_NO_RWG, void, env, tl) DEF_HELPER_FLAGS_2(write_eirr, TCG_CALL_NO_RWG, void, env, tl) DEF_HELPER_FLAGS_2(write_eiem, TCG_CALL_NO_RWG, void, env, tl) -DEF_HELPER_FLAGS_2(swap_system_mask, TCG_CALL_NO_RWG, tl, env, tl) +DEF_HELPER_FLAGS_1(get_system_mask, TCG_CALL_NO_RWG, tl, env) +DEF_HELPER_FLAGS_2(set_system_mask, TCG_CALL_NO_RWG, void, env, tl) +DEF_HELPER_FLAGS_2(mtsm_system_mask, TCG_CALL_NO_RWG, void, env, tl) DEF_HELPER_FLAGS_3(itlba_pa11, TCG_CALL_NO_RWG, void, env, tl, tl) DEF_HELPER_FLAGS_3(itlbp_pa11, TCG_CALL_NO_RWG, void, env, tl, tl) DEF_HELPER_FLAGS_3(idtlbt_pa20, TCG_CALL_NO_RWG, void, env, tl, tl) diff --git a/target/hppa/sys_helper.c b/target/hppa/sys_helper.c index a59245eed3..88ba99f0d4 100644 --- a/target/hppa/sys_helper.c +++ b/target/hppa/sys_helper.c @@ -58,7 +58,27 @@ void HELPER(reset)(CPUHPPAState *env) helper_excp(env, EXCP_HLT); } -target_ulong HELPER(swap_system_mask)(CPUHPPAState *env, target_ulong nsm) +target_ulong HELPER(get_system_mask)(CPUHPPAState *env) +{ + target_ulong psw = env->psw; + + /* mask out invalid bits */ + target_ulong psw_new = psw & PSW_SM; + + /* ssm/rsm instructions number PSW_W and PSW_E differently */ + psw_new &= ~PSW_W; + if (psw & PSW_W) { + psw_new |= 1ull << (63 - PSW_W_BIT); + } + psw_new &= ~PSW_E; + if (psw & PSW_E) { + psw_new |= 1ull << (63 - PSW_E_BIT); + } + + return psw_new; +} + +void HELPER(set_system_mask)(CPUHPPAState *env, target_ulong nsm) { target_ulong psw = env->psw; /* @@ -70,8 +90,28 @@ target_ulong HELPER(swap_system_mask)(CPUHPPAState *env, target_ulong nsm) * machines set the Q bit from 0 to 1 without an exception, * so let this go without comment. */ - env->psw = (psw & ~PSW_SM) | (nsm & PSW_SM); - return psw & PSW_SM; + + cpu_hppa_put_psw(env, (psw & ~PSW_SM) | (nsm & PSW_SM)); +} + +void HELPER(mtsm_system_mask)(CPUHPPAState *env, target_ulong nsm) +{ + target_ulong psw_new; + + /* mask out invalid bits */ + psw_new = nsm & PSW_SM; + + /* set PSW_E and PSW_W */ + psw_new &= ~PSW_W; + if (nsm & (1ull << (63 - PSW_W_BIT))) { + psw_new |= PSW_W; + } + psw_new &= ~PSW_E; + if (nsm & (1ull << (63 - PSW_E_BIT))) { + psw_new |= PSW_E; + } + + helper_set_system_mask(env, psw_new); } void HELPER(rfi)(CPUHPPAState *env) diff --git a/target/hppa/translate.c b/target/hppa/translate.c index 53ec57ee86..10fdc0813d 100644 --- a/target/hppa/translate.c +++ b/target/hppa/translate.c @@ -2163,13 +2163,20 @@ static bool trans_rsm(DisasContext *ctx, arg_rsm *a) nullify_over(ctx); tmp = tcg_temp_new_i64(); - tcg_gen_ld_i64(tmp, tcg_env, offsetof(CPUHPPAState, psw)); - tcg_gen_andi_i64(tmp, tmp, ~a->i); - gen_helper_swap_system_mask(tmp, tcg_env, tmp); - save_gpr(ctx, a->t, tmp); + if (a->t != 0) { + gen_helper_get_system_mask(tmp, tcg_env); + save_gpr(ctx, a->t, tmp); + } + + if (a->i) { + tcg_gen_ld_i64(tmp, tcg_env, offsetof(CPUHPPAState, psw)); + tcg_gen_andi_i64(tmp, tmp, ~a->i); + gen_helper_set_system_mask(tcg_env, tmp); + + /* Exit, check e.g. for new interrupts */ + ctx->base.is_jmp = DISAS_IAQ_N_STALE_EXIT; + } - /* Exit the TB to recognize new interrupts, e.g. PSW_M. */ - ctx->base.is_jmp = DISAS_IAQ_N_STALE_EXIT; return nullify_end(ctx); #endif } @@ -2183,11 +2190,17 @@ static bool trans_ssm(DisasContext *ctx, arg_ssm *a) nullify_over(ctx); tmp = tcg_temp_new_i64(); - tcg_gen_ld_i64(tmp, tcg_env, offsetof(CPUHPPAState, psw)); - tcg_gen_ori_i64(tmp, tmp, a->i); - gen_helper_swap_system_mask(tmp, tcg_env, tmp); - save_gpr(ctx, a->t, tmp); + if (a->t != 0) { + gen_helper_get_system_mask(tmp, tcg_env); + save_gpr(ctx, a->t, tmp); + } + + if (a->i) { + tcg_gen_ld_i64(tmp, tcg_env, offsetof(CPUHPPAState, psw)); + tcg_gen_ori_i64(tmp, tmp, a->i); + gen_helper_set_system_mask(tcg_env, tmp); + } /* Exit the TB to recognize new interrupts, e.g. PSW_I. */ ctx->base.is_jmp = DISAS_IAQ_N_STALE_EXIT; return nullify_end(ctx); @@ -2198,12 +2211,11 @@ static bool trans_mtsm(DisasContext *ctx, arg_mtsm *a) { CHECK_MOST_PRIVILEGED(EXCP_PRIV_OPR); #ifndef CONFIG_USER_ONLY - TCGv_i64 tmp, reg; + TCGv_i64 reg; nullify_over(ctx); reg = load_gpr(ctx, a->r); - tmp = tcg_temp_new_i64(); - gen_helper_swap_system_mask(tmp, tcg_env, reg); + gen_helper_mtsm_system_mask(tcg_env, reg); /* Exit the TB to recognize new interrupts. */ ctx->base.is_jmp = DISAS_IAQ_N_STALE_EXIT; From patchwork Wed Feb 7 18:20:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548926 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 494B1C4828F for ; Wed, 7 Feb 2024 18:23:01 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXI-0004j2-K3; Wed, 07 Feb 2024 13:20:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXG-0004hV-FR for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:38 -0500 Received: from sin.source.kernel.org ([145.40.73.55]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXE-00085Z-0b for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:38 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id C55F1CE1ACE; Wed, 7 Feb 2024 18:20:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2F467C433F1; Wed, 7 Feb 2024 18:20:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330032; bh=4wOs4uCXpc/z2JJ4vuxVLui1OH3pi1Wr/LcS9MnUVp4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F7hrr+ixc4WjXdVK0oTKxwSmI7rL5g2TN5kME2eC1WS3DjK1bRFI5dGRNdfEjaXCm 6I37vkecKoGJTDpxk89AFMSVclOlzSOF16gl3XX4tH+UldlJ9+0PQQjq+E6+vISSN+ u93AGqcYSs/qc2R1KPkLGFPlxZCFYv5T3o+93JxDNJKtbQ+yDidl9Y7hrQO4uX3Kt8 5jSNnLLaKryCG3YDp4omY5FIMUIqiirke6JeDf5BFMz8/E8EiOnhgKsn2TzDdXqKlF cg6Aj7mMzPJUdnTsUQgNUvY4CrPW3Vg2f7PnkMoU4bq+x3POuJ+i1p6XlMHvfOQWT9 x5FnzqVNIPmdw== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 04/13] hw/pci-host/astro: Avoid aborting on access failure Date: Wed, 7 Feb 2024 19:20:14 +0100 Message-ID: <20240207182023.36316-5-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=145.40.73.55; envelope-from=deller@kernel.org; helo=sin.source.kernel.org X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller Instead of stopping the emulation, report a MEMTX_DECODE_ERROR if the OS tries to access non-existent registers. Signed-off-by: Helge Deller Reviewed-by: Richard Henderson --- hw/pci-host/astro.c | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/hw/pci-host/astro.c b/hw/pci-host/astro.c index 37d271118c..42bd65de53 100644 --- a/hw/pci-host/astro.c +++ b/hw/pci-host/astro.c @@ -122,10 +122,6 @@ static MemTxResult elroy_chip_read_with_attrs(void *opaque, hwaddr addr, case 0x0800: /* IOSAPIC_REG_SELECT */ val = s->iosapic_reg_select; break; - case 0x0808: - val = UINT64_MAX; /* XXX: tbc. */ - g_assert_not_reached(); - break; case 0x0810: /* IOSAPIC_REG_WINDOW */ switch (s->iosapic_reg_select) { case 0x01: /* IOSAPIC_REG_VERSION */ @@ -135,15 +131,15 @@ static MemTxResult elroy_chip_read_with_attrs(void *opaque, hwaddr addr, if (s->iosapic_reg_select < ARRAY_SIZE(s->iosapic_reg)) { val = s->iosapic_reg[s->iosapic_reg_select]; } else { - trace_iosapic_reg_read(s->iosapic_reg_select, size, val); - g_assert_not_reached(); + val = 0; + ret = MEMTX_DECODE_ERROR; } } trace_iosapic_reg_read(s->iosapic_reg_select, size, val); break; default: - trace_elroy_read(addr, size, val); - g_assert_not_reached(); + val = 0; + ret = MEMTX_DECODE_ERROR; } trace_elroy_read(addr, size, val); @@ -160,6 +156,7 @@ static MemTxResult elroy_chip_write_with_attrs(void *opaque, hwaddr addr, uint64_t val, unsigned size, MemTxAttrs attrs) { + MemTxResult ret = MEMTX_OK; ElroyState *s = opaque; int i; @@ -191,7 +188,7 @@ static MemTxResult elroy_chip_write_with_attrs(void *opaque, hwaddr addr, if (s->iosapic_reg_select < ARRAY_SIZE(s->iosapic_reg)) { s->iosapic_reg[s->iosapic_reg_select] = val; } else { - g_assert_not_reached(); + ret = MEMTX_DECODE_ERROR; } break; case 0x0840: /* IOSAPIC_REG_EOI */ @@ -204,9 +201,9 @@ static MemTxResult elroy_chip_write_with_attrs(void *opaque, hwaddr addr, } break; default: - g_assert_not_reached(); + ret = MEMTX_DECODE_ERROR; } - return MEMTX_OK; + return ret; } static const MemoryRegionOps elroy_chip_ops = { @@ -594,8 +591,8 @@ static MemTxResult astro_chip_read_with_attrs(void *opaque, hwaddr addr, #undef EMPTY_PORT default: - trace_astro_chip_read(addr, size, val); - g_assert_not_reached(); + val = 0; + ret = MEMTX_DECODE_ERROR; } /* for 32-bit accesses mask return value */ @@ -610,6 +607,7 @@ static MemTxResult astro_chip_write_with_attrs(void *opaque, hwaddr addr, uint64_t val, unsigned size, MemTxAttrs attrs) { + MemTxResult ret = MEMTX_OK; AstroState *s = opaque; trace_astro_chip_write(addr, size, val); @@ -686,11 +684,9 @@ static MemTxResult astro_chip_write_with_attrs(void *opaque, hwaddr addr, #undef EMPTY_PORT default: - /* Controlled by astro_chip_mem_valid above. */ - trace_astro_chip_write(addr, size, val); - g_assert_not_reached(); + ret = MEMTX_DECODE_ERROR; } - return MEMTX_OK; + return ret; } static const MemoryRegionOps astro_chip_ops = { From patchwork Wed Feb 7 18:20:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548922 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2F9EFC4828F for ; Wed, 7 Feb 2024 18:22:29 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXG-0004ho-Pl; Wed, 07 Feb 2024 13:20:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXF-0004hA-CF for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:37 -0500 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXD-00086J-NG for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:37 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id A191961A17; Wed, 7 Feb 2024 18:20:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82738C43390; Wed, 7 Feb 2024 18:20:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330033; bh=x2QqFV0OrTV+B0MBMSpUKn1JRbPiQZhKDBTVpogYAiY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tC54nD+38Adey29kFuNhnmdIp4Y/T1zUYpzutCuYTOCIRY2b84wEknq6WZh04w7fi zJcwMiVjgX0OCNuz0KJ0aX27sKa7HtdZquux4MZZaKUSLIwwDNETOPP7ebAYT2WiMi BEfu+JQX5zeXQlmkPfTqAtkfZbyn3j8aT8VoM7hnLD/tydP7Ve2yoHDD/pNTbJj9fy UyyW24u8yoAl2Y2YqaZpGMlfql/89IpB4hMD84vXDnoMKv5imogeIa7z8Ca9tfKHsv 5zIXzfLzyHG4oE9eJc11on5sA7JgvBbmjX85O4JjSgTnPQ/S8RO2E57BebT30W7LT0 5cqGqQga0IZ+g== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 05/13] hw/pci-host/astro: Implement Hard Fail and Soft Fail mode Date: Wed, 7 Feb 2024 19:20:15 +0100 Message-ID: <20240207182023.36316-6-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2604:1380:4641:c500::1; envelope-from=deller@kernel.org; helo=dfw.source.kernel.org X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller The Astro/Elroy chip can work in either Hard-Fail or Soft-Fail mode. Hard fail means the system bus will send an HPMC (=crash) to the processor, soft fail means the system bus will ignore timeouts of MMIO-reads or MMIO-writes and return -1ULL. The HF mode is controlled by a bit in the status register and is usually programmed by the OS. Return the corresponing values based on the current value of that bit. Signed-off-by: Helge Deller Reviewed-by: Richard Henderson --- hw/pci-host/astro.c | 23 +++++++++++++++++------ include/hw/pci-host/astro.h | 2 ++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/hw/pci-host/astro.c b/hw/pci-host/astro.c index 42bd65de53..39549df3f5 100644 --- a/hw/pci-host/astro.c +++ b/hw/pci-host/astro.c @@ -131,15 +131,21 @@ static MemTxResult elroy_chip_read_with_attrs(void *opaque, hwaddr addr, if (s->iosapic_reg_select < ARRAY_SIZE(s->iosapic_reg)) { val = s->iosapic_reg[s->iosapic_reg_select]; } else { - val = 0; - ret = MEMTX_DECODE_ERROR; + goto check_hf; } } trace_iosapic_reg_read(s->iosapic_reg_select, size, val); break; default: - val = 0; - ret = MEMTX_DECODE_ERROR; + check_hf: + if (s->status_control & HF_ENABLE) { + val = 0; + ret = MEMTX_DECODE_ERROR; + } else { + /* return -1ULL if HardFail is disabled */ + val = ~0; + ret = MEMTX_OK; + } } trace_elroy_read(addr, size, val); @@ -188,7 +194,7 @@ static MemTxResult elroy_chip_write_with_attrs(void *opaque, hwaddr addr, if (s->iosapic_reg_select < ARRAY_SIZE(s->iosapic_reg)) { s->iosapic_reg[s->iosapic_reg_select] = val; } else { - ret = MEMTX_DECODE_ERROR; + goto check_hf; } break; case 0x0840: /* IOSAPIC_REG_EOI */ @@ -201,7 +207,12 @@ static MemTxResult elroy_chip_write_with_attrs(void *opaque, hwaddr addr, } break; default: - ret = MEMTX_DECODE_ERROR; + check_hf: + if (s->status_control & HF_ENABLE) { + ret = MEMTX_DECODE_ERROR; + } else { + ret = MEMTX_OK; + } } return ret; } diff --git a/include/hw/pci-host/astro.h b/include/hw/pci-host/astro.h index f63fd220f3..e2966917cd 100644 --- a/include/hw/pci-host/astro.h +++ b/include/hw/pci-host/astro.h @@ -27,6 +27,8 @@ OBJECT_DECLARE_SIMPLE_TYPE(ElroyState, ELROY_PCI_HOST_BRIDGE) #define IOS_DIST_BASE_ADDR 0xfffee00000ULL #define IOS_DIST_BASE_SIZE 0x10000ULL +#define HF_ENABLE 0x40 /* enable HF mode (default is -1 mode) */ + struct AstroState; struct ElroyState { From patchwork Wed Feb 7 18:20:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548916 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EA54BC4829C for ; Wed, 7 Feb 2024 18:21:39 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXM-0004l5-6A; Wed, 07 Feb 2024 13:20:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXI-0004ic-1N for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:40 -0500 Received: from sin.source.kernel.org ([145.40.73.55]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXG-00087d-90 for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:39 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 7713FCE1AD0; Wed, 7 Feb 2024 18:20:35 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D54F8C433F1; Wed, 7 Feb 2024 18:20:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330034; bh=FaxA3mFrSxmY5kTESFNBYrTItNp7faYaL5jQs64YYHE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Rmu/KzsaU6UABUhm+KVn4mv8gcHJLeW6qMC7lknsg7yfFJNSLciicdRKIs3Ou9Sps Tjn1EJUqze7h/emedNv8qIRq8hMb45Y889I5kQhgOq4qOSON2P+biItAnfFhjI1RiR RcyZHRZ2ZEsB8c06jjYUOrmuIa/9DYA8OPXVP/5Jzqn9Ys2fmeal1fYAGmLkxB7Tb8 OHrI/rlj5UJWxyjbXbYzJWiK0BZNnEOFAO3ScA5kstrPH4jgJuYKdF5TINlH2TgIiN NEdYxsdRh+kHrpbXD86XoqaFeMwiiQTZejtJGz5wr2WVy68y9IfQ8Xf8kafZ/Nsftt InunyqljsWgwQ== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 06/13] lasi: allow access to LAN MAC address registers Date: Wed, 7 Feb 2024 19:20:16 +0100 Message-ID: <20240207182023.36316-7-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=145.40.73.55; envelope-from=deller@kernel.org; helo=sin.source.kernel.org X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller Firmware and qemu reads and writes the MAC address for the LASI LAN via registers in LASI. Allow those accesses and return zero even if LASI LAN isn't enabled to avoid HPMCs (=crashes). Signed-off-by: Helge Deller --- hw/misc/lasi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/misc/lasi.c b/hw/misc/lasi.c index 003f5b5ed8..9cfa5bb316 100644 --- a/hw/misc/lasi.c +++ b/hw/misc/lasi.c @@ -38,6 +38,7 @@ static bool lasi_chip_mem_valid(void *opaque, hwaddr addr, case LASI_LPT: case LASI_UART: case LASI_LAN: + case LASI_LAN + 12: /* LASI LAN MAC */ case LASI_RTC: case LASI_PCR ... LASI_AMR: @@ -78,6 +79,7 @@ static MemTxResult lasi_chip_read_with_attrs(void *opaque, hwaddr addr, case LASI_LPT: case LASI_UART: case LASI_LAN: + case LASI_LAN + 12: val = 0; break; case LASI_RTC: From patchwork Wed Feb 7 18:20:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548924 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B7EF3C4828F for ; Wed, 7 Feb 2024 18:22:57 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXK-0004kR-Ft; Wed, 07 Feb 2024 13:20:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXH-0004hy-3S for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:39 -0500 Received: from dfw.source.kernel.org ([139.178.84.217]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXF-00087u-Fp for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:38 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 5616B619D7; Wed, 7 Feb 2024 18:20:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3419EC43390; Wed, 7 Feb 2024 18:20:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330036; bh=98mbO8TIJY8H/aHyk2tyxWud+0ypEkYGWnHIB/+v55o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=J33HycEiFoJvFiphlurxfoPMYFzYlTto+n2J+NkvCYNXlK8CYfvryhXfqxuNRVBSy zJgcpeUJQmtLQR1pxVE2jkzplqPa6SaVDB0ypZTebP9w21ko+kUVvlBWqNH/K8vyTY sDusbKOLLHYLWqisAmSgiA/zJFSFDh7dwF7byJ1ZPQz6GVeGiVhsuHtjE70FgH9l4Q KWFoxGM9+zkgKSpSZ2YCaxXc6TbOZg8PdxBWHqE1pdf5tNAZeKIE/IKQd53VaPba9z ofArXS0Tq5r9fJjV/lIavEVCd70Hhp5yjWh08NwYLOhg7lNLEu9NyTu5uoRka0XsOH H0e95FmarA3nw== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 07/13] target/hppa: Implement do_transaction_failed handler for I/O errors Date: Wed, 7 Feb 2024 19:20:17 +0100 Message-ID: <20240207182023.36316-8-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=139.178.84.217; envelope-from=deller@kernel.org; helo=dfw.source.kernel.org X-Spam_score_int: -71 X-Spam_score: -7.2 X-Spam_bar: ------- X-Spam_report: (-7.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller Add the do_transaction_failed() handler to tigger a HPMC to the CPU in case of I/O transaction errors. This is a preparation commit. We still lack implementation for some registers, so do not yet enable sending HPMCs. Having this hunk here now nevertheless helps for the further development, so that it can easily be enabled later on. Signed-off-by: Helge Deller --- target/hppa/cpu.c | 1 + target/hppa/cpu.h | 5 +++++ target/hppa/mem_helper.c | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c index 5f87c1b12a..afe73d4474 100644 --- a/target/hppa/cpu.c +++ b/target/hppa/cpu.c @@ -191,6 +191,7 @@ static const TCGCPUOps hppa_tcg_ops = { .cpu_exec_interrupt = hppa_cpu_exec_interrupt, .do_interrupt = hppa_cpu_do_interrupt, .do_unaligned_access = hppa_cpu_do_unaligned_access, + .do_transaction_failed = hppa_cpu_do_transaction_failed, #endif /* !CONFIG_USER_ONLY */ }; diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h index 06b65f2258..5a4b56c975 100644 --- a/target/hppa/cpu.h +++ b/target/hppa/cpu.h @@ -383,6 +383,11 @@ bool hppa_cpu_exec_interrupt(CPUState *cpu, int int_req); int hppa_get_physical_address(CPUHPPAState *env, vaddr addr, int mmu_idx, int type, hwaddr *pphys, int *pprot, HPPATLBEntry **tlb_entry); +void hppa_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr, + vaddr addr, unsigned size, + MMUAccessType access_type, + int mmu_idx, MemTxAttrs attrs, + MemTxResult response, uintptr_t retaddr); extern const MemoryRegionOps hppa_io_eir_ops; extern const VMStateDescription vmstate_hppa_cpu; void hppa_cpu_alarm_timer(void *); diff --git a/target/hppa/mem_helper.c b/target/hppa/mem_helper.c index 629a9d90ef..676c0b3003 100644 --- a/target/hppa/mem_helper.c +++ b/target/hppa/mem_helper.c @@ -353,6 +353,25 @@ raise_exception_with_ior(CPUHPPAState *env, int excp, uintptr_t retaddr, cpu_loop_exit_restore(cs, retaddr); } +void hppa_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr, + vaddr addr, unsigned size, + MMUAccessType access_type, + int mmu_idx, MemTxAttrs attrs, + MemTxResult response, uintptr_t retaddr) +{ + CPUHPPAState *env = cpu_env(cs); + + qemu_log_mask(LOG_GUEST_ERROR, "HPMC at " TARGET_FMT_lx ":" TARGET_FMT_lx + " while accessing I/O at %#08" HWADDR_PRIx "\n", + env->iasq_f, env->iaoq_f, physaddr); + + /* FIXME: Enable HPMC exceptions when firmware has clean device probing */ + if (0) { + raise_exception_with_ior(env, EXCP_HPMC, retaddr, addr, + MMU_IDX_MMU_DISABLED(mmu_idx)); + } +} + bool hppa_cpu_tlb_fill(CPUState *cs, vaddr addr, int size, MMUAccessType type, int mmu_idx, bool probe, uintptr_t retaddr) From patchwork Wed Feb 7 18:20:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548921 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A4B02C4828D for ; Wed, 7 Feb 2024 18:22:28 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXJ-0004ji-OP; Wed, 07 Feb 2024 13:20:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXI-0004ie-2i for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:40 -0500 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXG-0008AI-IJ for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:39 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id A793761999; Wed, 7 Feb 2024 18:20:37 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 87727C433C7; Wed, 7 Feb 2024 18:20:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330037; bh=vqjS4Tn8JsTETJjKAhscWBmZAWUWeDAIiHK9Uvc1mpY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IL+jR9Qq+myOvvZsQ/8Ie4IfEkzVD8SUY90tNqIFBRM2CKeVD1L7hxDl7soKlQBzd LDMY1Mgd79jrWIkmzMgOsHEn45E0lrQGEdZX3kCBrMbcnsJTFT5SRNMoGqn3Tb0zpi bbex5SiAnuJk0qfHu2iT8y5IywAo1Hzzuk26+yK8r3z7SgQ+5zh3xNTHkznnzETPyR 4/7Npbb+dvBARGEQR07CTulXysSvT/0jQ53wlldMgsNBOPB6OqwUGJqOs5acy2uxwp 9IqomqZHxKkcUVY4Lcv2IQjfcQu1FvBshN7YHIsrgt62xtTXfS+x6kA+g22V1VLkz6 hK7ABblut0ydg== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 08/13] lasi: Add reset I/O ports for LASI audio and FDC Date: Wed, 7 Feb 2024 19:20:18 +0100 Message-ID: <20240207182023.36316-9-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2604:1380:4641:c500::1; envelope-from=deller@kernel.org; helo=dfw.source.kernel.org X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller Linux writes zeroes at bootup into the default ports for LASI audio and LASI floppy controller to reset those devices. Allow writing to those registers to avoid HPMCs. Signed-off-by: Helge Deller --- hw/misc/lasi.c | 11 +++++++++++ include/hw/misc/lasi.h | 2 ++ 2 files changed, 13 insertions(+) diff --git a/hw/misc/lasi.c b/hw/misc/lasi.c index 9cfa5bb316..970fc98b5c 100644 --- a/hw/misc/lasi.c +++ b/hw/misc/lasi.c @@ -36,10 +36,13 @@ static bool lasi_chip_mem_valid(void *opaque, hwaddr addr, case LASI_IAR: case LASI_LPT: + case LASI_AUDIO: + case LASI_AUDIO + 4: case LASI_UART: case LASI_LAN: case LASI_LAN + 12: /* LASI LAN MAC */ case LASI_RTC: + case LASI_FDC: case LASI_PCR ... LASI_AMR: ret = true; @@ -80,6 +83,7 @@ static MemTxResult lasi_chip_read_with_attrs(void *opaque, hwaddr addr, case LASI_UART: case LASI_LAN: case LASI_LAN + 12: + case LASI_FDC: val = 0; break; case LASI_RTC: @@ -145,12 +149,19 @@ static MemTxResult lasi_chip_write_with_attrs(void *opaque, hwaddr addr, case LASI_LPT: /* XXX: reset parallel port */ break; + case LASI_AUDIO: + case LASI_AUDIO + 4: + /* XXX: reset audio port */ + break; case LASI_UART: /* XXX: reset serial port */ break; case LASI_LAN: /* XXX: reset LAN card */ break; + case LASI_FDC: + /* XXX: reset Floppy controller */ + break; case LASI_RTC: s->rtc_ref = val - time(NULL); break; diff --git a/include/hw/misc/lasi.h b/include/hw/misc/lasi.h index 0a8c7352be..f01c0f680a 100644 --- a/include/hw/misc/lasi.h +++ b/include/hw/misc/lasi.h @@ -26,9 +26,11 @@ OBJECT_DECLARE_SIMPLE_TYPE(LasiState, LASI_CHIP) #define LASI_IAR 0x10 #define LASI_LPT 0x02000 +#define LASI_AUDIO 0x04000 #define LASI_UART 0x05000 #define LASI_LAN 0x07000 #define LASI_RTC 0x09000 +#define LASI_FDC 0x0A000 #define LASI_PCR 0x0C000 /* LASI Power Control register */ #define LASI_ERRLOG 0x0C004 /* LASI Error Logging register */ From patchwork Wed Feb 7 18:20:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548918 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6F0BFC4828D for ; Wed, 7 Feb 2024 18:21:48 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXL-0004ku-W3; Wed, 07 Feb 2024 13:20:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXJ-0004jW-Ci for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:41 -0500 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXH-0008BV-Ts for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:41 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 05F6B61A14; Wed, 7 Feb 2024 18:20:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DA70FC433F1; Wed, 7 Feb 2024 18:20:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330038; bh=KoFYV1cuiAvIfsT/+E/M7QzFRHRdtCx8I9CYomiWxOQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dhFnrxvI0FODuvGp03xWec7LxBlbciVZNt4O4Codv3Di2CCXiSU+4N4D8+vsr4BeB IZJGcLfZIRPuODDtVcVs9vjyddagdYNRzr7fQfmX9MB5a3WyPXpfvY6U9gZauG/Vzh OIg3Zq3EW3Tx6lv0blXDYYxYAcPi6yfa7gvWtqtdxHVDTazz0DNTP8nlTEP96E7p3Y UHMBbbcUk0YKwMj5FBH3HBS0IDGCmHrBzI0DKnzdfS+4SMcJcoLzLO4fVr7Sd6/AKP XSZc0D+goeGIXH9BExZCZJD6yqQsXL19Vtjfsu40nzC+RQXwfYHpOhEtrlzuQjHfej NPidzhQZw3Lqw== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 09/13] target/hppa: Allow read-access to PSW with rsm 0, reg instruction Date: Wed, 7 Feb 2024 19:20:19 +0100 Message-ID: <20240207182023.36316-10-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2604:1380:4641:c500::1; envelope-from=deller@kernel.org; helo=dfw.source.kernel.org X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller HP-UX 11 and HP ODE tools use the "rsm 0,%reg" instruction in not priviledged code paths to get the current PSW flags. The constant 0 means that no bits of the PSW shall be reset, so this is effectively a read-only access to the PSW. Allow this read-only access even for not privileged code. Signed-off-by: Helge Deller Acked-by: Richard Henderson --- target/hppa/translate.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target/hppa/translate.c b/target/hppa/translate.c index 10fdc0813d..7e58775bbf 100644 --- a/target/hppa/translate.c +++ b/target/hppa/translate.c @@ -2156,10 +2156,16 @@ static bool trans_ldsid(DisasContext *ctx, arg_ldsid *a) static bool trans_rsm(DisasContext *ctx, arg_rsm *a) { +#ifdef CONFIG_USER_ONLY CHECK_MOST_PRIVILEGED(EXCP_PRIV_OPR); -#ifndef CONFIG_USER_ONLY +#else TCGv_i64 tmp; + /* HP-UX 11i and HP ODE use rsm for read-access to PSW */ + if (a->i) { + CHECK_MOST_PRIVILEGED(EXCP_PRIV_OPR); + } + nullify_over(ctx); tmp = tcg_temp_new_i64(); From patchwork Wed Feb 7 18:20:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548928 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A3A56C4828F for ; Wed, 7 Feb 2024 18:23:46 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXP-0004lV-PK; Wed, 07 Feb 2024 13:20:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXK-0004kV-Ig for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:42 -0500 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXI-0008AI-Uj for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:42 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 61CF9619D7; Wed, 7 Feb 2024 18:20:40 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 393C2C433C7; Wed, 7 Feb 2024 18:20:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330040; bh=vLEiE8lhlyiRwJ4cJo1am9Zz8JhSgVENwn64GYYsBD0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ucl7fOfxxecmxSmjqqKU3SBIT/G+EY87oPkwY6UtyMLsnhiQdxN+HpAiKPvLiqxdh tDtdqOd34UjKDBqU1Pyc8pRo8c+Q/5OWF+T8v3eOx2bErtxI8j26K0w2UOOmYvW4TX nljNqKtiaHz/Rjoditl4h/fr5jqebI4fUxf5aX2t4eN929mdBjtvQjOS/HohVnL9hH F05bNn88goGc4FkpWM76MhRb7p4DXZPXJBHnVwJimMlkOjpyPFrXcd+Y5i7KjgejEB JnzcXRPKBMWJGz9gJOgbCkcUKMqxeFkke/g1g07VHA1yOjzb9EBneXzOKxU5ScEMeg 8f2d76RgcTnJA== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 10/13] target/hppa: Check privilege only when PSW.P is set Date: Wed, 7 Feb 2024 19:20:20 +0100 Message-ID: <20240207182023.36316-11-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2604:1380:4641:c500::1; envelope-from=deller@kernel.org; helo=dfw.source.kernel.org X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller CHECK_MOST_PRIVILEGED() should check the privilege level only when the PSW.P bit is set. Signed-off-by: Helge Deller --- target/hppa/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/hppa/translate.c b/target/hppa/translate.c index 7e58775bbf..21c2734a1f 100644 --- a/target/hppa/translate.c +++ b/target/hppa/translate.c @@ -604,7 +604,7 @@ static bool gen_illegal(DisasContext *ctx) #else #define CHECK_MOST_PRIVILEGED(EXCP) \ do { \ - if (ctx->privilege != 0) { \ + if (ctx->privilege != 0 && (ctx->tb_flags & PSW_P)) { \ return gen_excp_iir(ctx, EXCP); \ } \ } while (0) From patchwork Wed Feb 7 18:20:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548915 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 734DEC4828F for ; Wed, 7 Feb 2024 18:21:27 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXS-0004mx-Ma; Wed, 07 Feb 2024 13:20:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXL-0004kv-LY for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:43 -0500 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXK-0008BV-9Z for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:43 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id B78AA61999; Wed, 7 Feb 2024 18:20:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95BC7C433C7; Wed, 7 Feb 2024 18:20:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330041; bh=jX62TxfEqLvc+tH4WJBgE1waEPWqXlZDPP4oMNujLmU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nS0hN+O2mWzzm/VWB6tLudvzRUdTxgNHEqIEij5nl+/lo1gnsC0mFb8LO41xmHj+P J0OXHWI0PjYGPSQ37szI3Zq8cJwqrpm/j/0pX96C7FOpJPSWg48ZgHCqiLuEiBQDgk CGVnNBveGGy1+D5BSjcUqOI3JEWA2sXSb8HIoUh3SkQ/5krYvrrUVGN93ItwaqvdD3 /Selhb64KdFRaDt0lxon9fT26+Vjjqle06QyToExvIsTz0iU6bZix0haaBKlBhkFup nr+WgMQQ0i0IgCMyG2wzrarh2jTlB45qEvd252fOPNJq17MBEzr/CnJoYtpcYYq9CV DL5/XFlaLNM2g== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 11/13] target/hppa: PDC_BTLB_INFO uses 32-bit ints Date: Wed, 7 Feb 2024 19:20:21 +0100 Message-ID: <20240207182023.36316-12-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2604:1380:4641:c500::1; envelope-from=deller@kernel.org; helo=dfw.source.kernel.org X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller The BTLB helper function stores the BTLB info (four 32-bit ints) into the memory of the guest. They are only available when emulating a 32-bit CPU in the guest, so use "uint32_t" instead of "target_ulong" here. Signed-off-by: Helge Deller Reviewed-by: Richard Henderson --- target/hppa/mem_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/hppa/mem_helper.c b/target/hppa/mem_helper.c index 676c0b3003..66b8fa7d72 100644 --- a/target/hppa/mem_helper.c +++ b/target/hppa/mem_helper.c @@ -684,7 +684,7 @@ void HELPER(diag_btlb)(CPUHPPAState *env) case 0: /* return BTLB parameters */ qemu_log_mask(CPU_LOG_MMU, "PDC_BLOCK_TLB: PDC_BTLB_INFO\n"); - vaddr = probe_access(env, env->gr[24], 4 * sizeof(target_ulong), + vaddr = probe_access(env, env->gr[24], 4 * sizeof(uint32_t), MMU_DATA_STORE, mmu_idx, ra); if (vaddr == NULL) { env->gr[28] = -10; /* invalid argument */ From patchwork Wed Feb 7 18:20:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548920 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7E95AC4829C for ; Wed, 7 Feb 2024 18:21:48 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXb-0004qz-03; Wed, 07 Feb 2024 13:20:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXZ-0004qi-Ar for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:57 -0500 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXQ-0008Ed-CV for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:55 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 38154CE1A10; Wed, 7 Feb 2024 18:20:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F19C9C433C7; Wed, 7 Feb 2024 18:20:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330043; bh=L9FbRnd5iCvb4cEjT9p91Ba6xCuXeKlxDAfLsb2U7NI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X7b7queXT5Pc3e2yNJLN/Q+HfMAD43s/jewfSMIDIqRw8SkIyzppuGMiwFbMcJMT6 aYKK7xQw8ot86mgrXInOQ9jfZDNLWZqIcwEMpN3a1PBGEIS9CD3XAXtcNeu9pDWhY0 wB+yk5V/DUE33R5QlGNYTNygzNGj/pU8oW1vUq282vekdzhEDUBTAiyufPRkldHR0K b8S/EQdFcYCr8nhLowEc6bFyCGBPFSMWsdl/5W9qgS7KfPi/9fRvTNse1z7jsAaIqJ RLXxZwlHSETrn29rAu8P+/roCiTSIUxNyfVXlkefmG+UQvgJMh7Zc0xJISGxMr1495 xHsYyN0RllXEg== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 12/13] target/hppa: Update SeaBIOS-hppa to version 16 Date: Wed, 7 Feb 2024 19:20:22 +0100 Message-ID: <20240207182023.36316-13-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2604:1380:40e1:4800::1; envelope-from=deller@kernel.org; helo=sin.source.kernel.org X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, LOTS_OF_MONEY=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller SeaBIOS-hppa version 16 news & enhancements: - Initial 64-bit firmware release - Added fault handler to catch and report firmware bugs - Use Qemu's builtin_console_out() via diag 0x101 - parisc-qemu-install Makefile target to install firmware in qemu - Added -fw_cfg opt/OS64,string=3 option Fixes: - Avoid crash when booting without SCSI controller - Avoid possible crashes while detecting LASI LAN & graphics - Don't check layers in PDC_MEM_MAP_HPA, fixes NetBSD - Ensure cache definition does not trigger endless loops - Mark B160L as 32-bit machine in inventory Signed-off-by: Helge Deller Acked-by: Richard Henderson --- pc-bios/hppa-firmware.img | Bin 163324 -> 167836 bytes pc-bios/hppa-firmware64.img | Bin 0 -> 205944 bytes roms/seabios-hppa | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 pc-bios/hppa-firmware.img create mode 100755 pc-bios/hppa-firmware64.img diff --git a/pc-bios/hppa-firmware.img b/pc-bios/hppa-firmware.img old mode 100644 new mode 100755 index 1b3a8418250db977e0c0c4ae7194ba7e0199c30d..3cd2e2e68e06823a9a57ac582c19b025f4cd32de GIT binary patch delta 39217 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 X_-(|})Dh^#zFv(4jR34oB#izO3k6?d delta 35052 zcma&Pdtg-6)i-?3nMraow@fCt$z(EfG6NWHA;8JiBr{x{5TQYZ++n!sV5CNc3N)Aj z0)%_QCQL#@jaGcIk60-37%e;v3T?d52D$r$7Odz|qz$b;h6?ii)|sI6d;5Lw`^V&* zeP4U+wbyO0ebVu~?$)=_%`Rc(mX;x|$mKgZP1co`2XoRMQaJ95(g~v
s<7+-1W z1gUiLBx&m6rN|TRJy>b`H{SrHSt5t?ulkDr;_7*8cquOJrA%RK5tG|1}~>Y2jwCz=ziM4=ls;z zFFjMl%M19R)Q+-7{oBE{&wulTpA)6UCggKHiocr^IbmX2oP*C2W4er7!n^Av&voQ^ zxy#}!r_ycplI%dgrbEvNOt2aI-DflSoIgbe6`y5k&Y!rTG!

6q^o75oRs(8?6li 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 Wk_lkO&qOlcMbAsZSYn2)ulheFH#`jh literal 0 HcmV?d00001 diff --git a/roms/seabios-hppa b/roms/seabios-hppa index e4eac85880..d7078ed49b 160000 --- a/roms/seabios-hppa +++ b/roms/seabios-hppa @@ -1 +1 @@ -Subproject commit e4eac85880e8677f96d8b9e94de9f2eec9c0751f +Subproject commit d7078ed49b4f896dd2c8694129667a9662155d2f From patchwork Wed Feb 7 18:20:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13548925 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5D490C4828D for ; Wed, 7 Feb 2024 18:22:58 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rXmXT-0004nG-9I; Wed, 07 Feb 2024 13:20:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXP-0004ll-UG for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:48 -0500 Received: from dfw.source.kernel.org ([139.178.84.217]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rXmXO-0008EW-6D for qemu-devel@nongnu.org; Wed, 07 Feb 2024 13:20:47 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 44D4B61A34; Wed, 7 Feb 2024 18:20:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E6AE3C433F1; Wed, 7 Feb 2024 18:20:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707330044; bh=FpOCoPgFYE4MpPAthlIj28nIxN0rYpoircX68gN/zpM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rf0dHE3eXGVyQZcVhHmyp+/z31vguo4Nwi+tplOGCaA1kHyHPvEgBqsSeXBXTt4gY tvkPVHLZ0Dsd1sSk8vDZGgyg+vdKaeBYJOz2zlLqYrYMd84L9yHKVpZuy4afrST0Cp /qYwXacGKvU8nQtw5LZgqyomM8pgIlAN8ZtWrG7ESrFB2S3Rlim00SG6BKH2Jdm8X9 TYH4RK4eNbx5Qe8QeY1SLnhsZfZufb59G832YFNNs5aqHt/78iQrvdL/52BkiEG35i a6Rc3yd5y9Qfl4yTtOaCAAM+qX5fMYB6RQVIo+Q+YxQ2iZfLroY4fENOVJyygl2c7g kdxvDpSW7yYug== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Helge Deller Subject: [PATCH 13/13] hw/hppa/machine: Load 64-bit firmware on 64-bit machines Date: Wed, 7 Feb 2024 19:20:23 +0100 Message-ID: <20240207182023.36316-14-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240207182023.36316-1-deller@kernel.org> References: <20240207182023.36316-1-deller@kernel.org> MIME-Version: 1.0 Received-SPF: pass client-ip=139.178.84.217; envelope-from=deller@kernel.org; helo=dfw.source.kernel.org X-Spam_score_int: -71 X-Spam_score: -7.2 X-Spam_bar: ------- X-Spam_report: (-7.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.106, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Helge Deller Load the 64-bit SeaBIOS-hppa firmware by default when running on a 64-bit machine. This will enable us to later support more than 4GB of RAM and is required that the OS (or PALO bootloader) will start or install a 64-bit kernel instead of a 32-bit kernel. Note that SeaBIOS-hppa v16 provides the "-fw_cfg opt/OS64,string=3" option with which the user can control what the firmware shall report back to the OS: Support of 32-bit OS, support of a 64-bit OS, or support for both (default). Signed-off-by: Helge Deller Acked-by: Richard Henderson --- hw/hppa/machine.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index eb78c46ff1..a47baa572d 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -333,6 +333,7 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus, const char *kernel_filename = machine->kernel_filename; const char *kernel_cmdline = machine->kernel_cmdline; const char *initrd_filename = machine->initrd_filename; + const char *firmware = machine->firmware; MachineClass *mc = MACHINE_GET_CLASS(machine); DeviceState *dev; PCIDevice *pci_dev; @@ -408,9 +409,13 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus, /* Load firmware. Given that this is not "real" firmware, but one explicitly written for the emulation, we might as - well load it directly from an ELF image. */ - firmware_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, - machine->firmware ?: "hppa-firmware.img"); + well load it directly from an ELF image. Load the 64-bit + firmware on 64-bit machines by default if not specified + on command line. */ + if (!firmware) { + firmware = lasi_dev ? "hppa-firmware.img" : "hppa-firmware64.img"; + } + firmware_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, firmware); if (firmware_filename == NULL) { error_report("no firmware provided"); exit(1);