From patchwork Mon Feb 12 23:47: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: 13554170 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 EBFBDC4829E for ; Mon, 12 Feb 2024 23:48:47 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1O-0003AO-9G; Mon, 12 Feb 2024 18:47:34 -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 1rZg1M-00039c-2S for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:32 -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 1rZg1K-00007G-Hd for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:31 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id AE117611C3; Mon, 12 Feb 2024 23:47:28 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 14D37C433F1; Mon, 12 Feb 2024 23:47:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781648; bh=vx4xC5M+DPAKkeJWujimrHUf61MEn29t9idgCCP1zPY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fbCokjKfPlvwkBJLbqAzLnuIMmN0U9OTvmKkjqzLO1umIA05nZQ6N7ZxSRxRNZVGx srkDPPRx+NY6svPPmCxhaO1AV2zULZvzYwcq6WB49NqllHgb09+PqpgWzWLMaxm2Nh VDoiBuAOw51UdBwVNiyyvvBNaFBHy6mgxPj4mzf0C38zU5kyXogWUh0oX8q8zQmKMd aglAB4/3hwBTVPA8z3E9nLQ/5NJWqKRx1vAlzPZYmekwVkYxoTSGOJofTtPimUJOuf SI96+H0oXqtq2UbMHIiXtOHm6FzUN2mdYFPAoU9fsnXrZOsvZ6Kxi4UYEN/RbvW0gt +xTL5wfqtp8OA== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller Subject: [PULL 01/12] disas/hppa: Add disassembly for qemu specific instructions Date: Tue, 13 Feb 2024 00:47:12 +0100 Message-ID: <20240212234723.222847-2-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -51 X-Spam_score: -5.2 X-Spam_bar: ----- X-Spam_report: (-5.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.774, 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 Mon Feb 12 23:47: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: 13554171 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 CE4EFC4829F for ; Mon, 12 Feb 2024 23:49:04 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1R-0003B5-GS; Mon, 12 Feb 2024 18:47:37 -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 1rZg1P-0003Ai-Ld for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:36 -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 1rZg1M-00007V-MF for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:34 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 2F631611C5; Mon, 12 Feb 2024 23:47:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C8B2AC43390; Mon, 12 Feb 2024 23:47:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781650; bh=7qAJa6D5seczT2BjZtyKXdtgQQtPHSe7FBlQvtuMc80=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Pa6QHCtFcOOZbBoDZL9FhdHxmmpvzMCnJr+bniPp4A96v9dBlLRGTMVZ9FZXRDsMl pDpBMC1Oc1ZuoJouBweMDype8m7AgJzkCniRGwL+7hRPrviJtPq6Wrs9YfmKzo66zx WpaX+JKFmwBxfJLvPphH3x+sbkuL/U2CzNDgHwQmhZVc0PiePSsgyuwPVsIWz7D/6Z vA4BndNVW8uDgAiFXvidEEY6TFWmB1SFlQLn3DsoIArlPMo2zOA338rNjbDtuvp6A/ /JODbnYgw4xZj1L8RSkEXFZuqrWeWQTA8Q7FHTb9U5gzfApcrCWTlzQyaWP5YL0MeR Y0ybWyTfdwwxw== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller Subject: [PULL 02/12] target/hppa: Add "diag 0x101" for console output support Date: Tue, 13 Feb 2024 00:47:13 +0100 Message-ID: <20240212234723.222847-3-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -51 X-Spam_score: -5.2 X-Spam_bar: ----- X-Spam_report: (-5.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.774, 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 Reviewed-by: Richard Henderson --- target/hppa/helper.h | 1 + target/hppa/sys_helper.c | 36 ++++++++++++++++++++++++++++++++++++ target/hppa/translate.c | 6 ++++++ 3 files changed, 43 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/sys_helper.c b/target/hppa/sys_helper.c index a59245eed3..4a31748342 100644 --- a/target/hppa/sys_helper.c +++ b/target/hppa/sys_helper.c @@ -23,6 +23,8 @@ #include "exec/helper-proto.h" #include "qemu/timer.h" #include "sysemu/runstate.h" +#include "sysemu/sysemu.h" +#include "chardev/char-fe.h" void HELPER(write_interval_timer)(CPUHPPAState *env, target_ulong val) { @@ -109,3 +111,37 @@ void HELPER(rfi_r)(CPUHPPAState *env) helper_getshadowregs(env); helper_rfi(env); } + +#ifndef CONFIG_USER_ONLY +/* + * 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)); +} +#endif 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 Mon Feb 12 23:47: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: 13554176 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 44B6DC4829F for ; Mon, 12 Feb 2024 23:49:14 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1X-0003Bj-7Q; Mon, 12 Feb 2024 18:47:43 -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 1rZg1T-0003BO-MC for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:39 -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 1rZg1Q-00007i-Io for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:39 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 87492CE0ED1; Mon, 12 Feb 2024 23:47:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 86834C433C7; Mon, 12 Feb 2024 23:47:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781651; bh=RjBu0t65VIh4q8pCxLppdwA9o9NQdQjXfzNg8fayLiM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tVfusdODgAS0/YSH3PTLm4WfPybzKljhzn8X0Jsrv/UIg2BAwrBAZ76aJ87zZ/98g BThkWf89FaAVTW4w2WQOuvmqBi9GGRsFvXQRkNu1pd2n2CsAnppO06G/9Sec6CZdDs XTE0yPVtLFlilgdZiHyhAuaPQm1VuN8N6xKfcTH8Y01nM/aKCEvvkp5ybLnUdzYJYD KTOyxgI4/ocTzQOo/V4ZXDb8byYBuizC0b0QHvSSQZJl97qtVg9EzxAEOdiH8gq91d YBTRhWT0JA++tVNss0lAJYkvoIjNViFZG0qzvZV8Li3cyCvxniYEaSRfH5o63VHcMf BbMJwWOzLLwzw== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller Subject: [PULL 03/12] hw/pci-host/astro: Avoid aborting on access failure Date: Tue, 13 Feb 2024 00:47:14 +0100 Message-ID: <20240212234723.222847-4-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -51 X-Spam_score: -5.2 X-Spam_bar: ----- X-Spam_report: (-5.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.774, 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 | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/hw/pci-host/astro.c b/hw/pci-host/astro.c index 37d271118c..96d655f5fb 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); @@ -191,7 +187,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(); + return MEMTX_DECODE_ERROR; } break; case 0x0840: /* IOSAPIC_REG_EOI */ @@ -204,7 +200,7 @@ static MemTxResult elroy_chip_write_with_attrs(void *opaque, hwaddr addr, } break; default: - g_assert_not_reached(); + return MEMTX_DECODE_ERROR; } return MEMTX_OK; } @@ -594,8 +590,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 +606,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 +683,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 Mon Feb 12 23:47: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: 13554180 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 1E10BC4829D for ; Mon, 12 Feb 2024 23:49:28 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1a-0003Ck-Ju; Mon, 12 Feb 2024 18:47:46 -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 1rZg1X-0003By-Dg for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:43 -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 1rZg1R-00007n-4I for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:41 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 41673CE17BB; Mon, 12 Feb 2024 23:47:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 41FF0C433F1; Mon, 12 Feb 2024 23:47:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781653; bh=ubbnHP6CQJX6H46ApufgbUTl/GyRa/bvBIBXu8fglok=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Tg+uNbCFBdhUB4HPlfR2U4IIkLWfOS6kU9vfMc5yvBshYN2i3lo41ldE1o3TX0AfA bHcZz+d0Ly52l7QB+6pBhorvO68M92enzTcdJ3tfRDEMrEsfOguDOvGOdXKqMFU+/C plXYr7qlqawfEqdKj2jQ3M3om5Rhl+5osyMyz16WUwj1sQvAZksZ/KquOQvQyZi6sL +WeIfDeNzW3mY7/8eUQUMPGubplDzeTAqwsc3J/SSn1/5Os6aMVJEVHvN08MEoWOmS f2D133jYXfCX0KCiDTiTEz8vZALLFmvSgUZQHgQJwXQs/ypfJJ+ACFhOkFYJ5XSanR YX9HusgIu+f9Q== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller Subject: [PULL 04/12] hw/pci-host/astro: Implement Hard Fail and Soft Fail mode Date: Tue, 13 Feb 2024 00:47:15 +0100 Message-ID: <20240212234723.222847-5-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -51 X-Spam_score: -5.2 X-Spam_bar: ----- X-Spam_report: (-5.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.774, 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_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_HELO_TEMPERROR=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 | 21 +++++++++++++++------ include/hw/pci-host/astro.h | 2 ++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/hw/pci-host/astro.c b/hw/pci-host/astro.c index 96d655f5fb..e3e589ceac 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); @@ -187,7 +193,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 { - return MEMTX_DECODE_ERROR; + goto check_hf; } break; case 0x0840: /* IOSAPIC_REG_EOI */ @@ -200,7 +206,10 @@ static MemTxResult elroy_chip_write_with_attrs(void *opaque, hwaddr addr, } break; default: - return MEMTX_DECODE_ERROR; + check_hf: + if (s->status_control & HF_ENABLE) { + return MEMTX_DECODE_ERROR; + } } return MEMTX_OK; } 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 Mon Feb 12 23:47: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: 13554179 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 C6CA8C4829E for ; Mon, 12 Feb 2024 23:49:27 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1Z-0003CX-SP; Mon, 12 Feb 2024 18:47:46 -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 1rZg1V-0003Ba-Lq for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:41 -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 1rZg1T-000081-HJ for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:41 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 01E56CE17B9; Mon, 12 Feb 2024 23:47:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F31DBC43390; Mon, 12 Feb 2024 23:47:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781655; bh=FaxA3mFrSxmY5kTESFNBYrTItNp7faYaL5jQs64YYHE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fJb+i8lhURxipu3GR9STRz8ob2xMkXCvSTgdfd4c6rV0PwRHAvMuVoHoAbtF5BDy8 zvmgMRGP1URlDYqJrzqxuIFVJwslWXBk4Bb+XSV0KM+ipfZ+tCCuZOouAUAxb756cy oVFUvaisGBTaksMlnjxK82Yv8XrpokaljUEOP+Pp6NQ+c42Qw29BjQAQ8PAfh+A69l eoUUJ8eMNfHyxx3tHf47QMqo7k7gBOgKqQenEGEb57+YjL69MgR4SF1lZ0bpBLzzSk YxMyrpPbYCht8ZuUk1vEqdHQlGryfY1rRADQuzaLGBLSbZxKuWB/oVzuts0QyRSX2T /iyp6iQUKHn2g== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller Subject: [PULL 05/12] lasi: allow access to LAN MAC address registers Date: Tue, 13 Feb 2024 00:47:16 +0100 Message-ID: <20240212234723.222847-6-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -51 X-Spam_score: -5.2 X-Spam_bar: ----- X-Spam_report: (-5.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.774, 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 Mon Feb 12 23:47: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: 13554178 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 35A56C4829F for ; Mon, 12 Feb 2024 23:49:20 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1Z-0003CN-JA; Mon, 12 Feb 2024 18:47: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 1rZg1X-0003Bz-DQ for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:43 -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 1rZg1U-000086-B1 for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:42 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id AF14ECE17E5; Mon, 12 Feb 2024 23:47:37 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AF80AC433C7; Mon, 12 Feb 2024 23:47:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781657; bh=pgNJchBQDIBYjxxSFSCpASqiLdg+D2giuu+TbQVVM78=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cBbofxaRm8bt2vde0cDOlFgjFDzRhov6+t5OuHButCqLp8pS4lJl5BTrvUFaQ0ZU9 eTZQ2WytK3S5TRSb30khLjHWfPZpxLu4dijyaJ3xX3NDfIuiPyuWSNNmoTjR83s4nz UGiKKYzA3QDryrhLaBZ8+5eD2V0lU1xhugBYe1kd8aVbfD2oqRFixU4wOfbOHneYNp 3Gop4BkviOnJFJbdOe1lO38EU6LIevTxortqfbgR4Wf8PltyPAfnmtPkm7iGgGJWqQ DJWHBqe8no0YWlnA+5hITLsZT6nt6OEqIjGZg8S0+GOIiVsAfmoOb6by1zftzXPWJJ 9MBg9SgEQW49Q== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller Subject: [PULL 06/12] target/hppa: Implement do_transaction_failed handler for I/O errors Date: Tue, 13 Feb 2024 00:47:17 +0100 Message-ID: <20240212234723.222847-7-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -51 X-Spam_score: -5.2 X-Spam_bar: ----- X-Spam_report: (-5.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.774, 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 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 7a181e8f33..a92dc352cb 100644 --- a/target/hppa/cpu.h +++ b/target/hppa/cpu.h @@ -381,6 +381,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 Mon Feb 12 23:47: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: 13554174 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 795B5C4829E for ; Mon, 12 Feb 2024 23:49:12 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1b-0003DG-Am; Mon, 12 Feb 2024 18:47: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 1rZg1Z-0003CO-KU for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:45 -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 1rZg1X-00008P-4i for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:45 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 69DA0CE17E6; Mon, 12 Feb 2024 23:47:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6ADBCC433F1; Mon, 12 Feb 2024 23:47:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781658; bh=vqjS4Tn8JsTETJjKAhscWBmZAWUWeDAIiHK9Uvc1mpY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NtPjrtq+hvNwgMVahFvUmUaA4tlGLNc6VAQe9oxFkepfJswZURWRuLstexr5dPHdL Gyfs2dIdeUOzuB6sNx8B1wDfChmlzwaCcYhLVu8+IOvhl8GudDfddSvgydvtxtIRiw HJwJzs6JWrsPHKYBIZ0f0eg1k3xk5G5hcOpigbxYQXDxTLDwyXv8KS2IbwFCm4Pxku YtAWLLwyCm9fAPAuhJyZk2M0MEe5L+RTywZY3w/rNijK9Pg+hb/bMKltRI50ekL/w/ q9VcvbwxBwpw7lIPiE7smQbcOmy9SW/h9iAQrUXQHnKViTEovBA3f+fpHz2knn1KT+ FIxDLDRqL84fQ== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller Subject: [PULL 07/12] lasi: Add reset I/O ports for LASI audio and FDC Date: Tue, 13 Feb 2024 00:47:18 +0100 Message-ID: <20240212234723.222847-8-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -51 X-Spam_score: -5.2 X-Spam_bar: ----- X-Spam_report: (-5.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.774, 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 Mon Feb 12 23:47: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: 13554169 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 C7B22C4829F for ; Mon, 12 Feb 2024 23:48:44 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1c-0003EE-Ht; Mon, 12 Feb 2024 18:47: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 1rZg1Z-0003CP-NO for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:45 -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 1rZg1X-00008u-W6 for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:45 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 2A5E7CE17E7; Mon, 12 Feb 2024 23:47:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 26BEAC433C7; Mon, 12 Feb 2024 23:47:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781660; bh=QEDKIdARto+ZCseIU47VCEGfs+CMVMZ3Lv39zKgePHQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=g/Xq8CG+QSRseydqktWIUlAXviVy4BX3/1N/U11esSI5DYPwlCj/NGrJc2D15Nyf2 B1Ms25z1CUQB2IRfAknEZnJXr3JByKPsTsUpmwPzPUVJDAL74vx/I4+pSlXnVa7J+1 tB6t4YZQk1TrT83wSyIgD/pEe1Ch800wlyQ+z+/gJTE+XkBictZMpET0pjDWCUewku I3qRgHECvTvuy2vd6MfNI2T9WqkHOS+7eKFx0NTciA/0Eq8FFC6XSdJEmvRtLwI9kU 7402YM/xq/PztlQlTQHhTt+WJmgmPBicAGJzxRyKz6GGVfHZ2oGhUq5JDEX9DY3r89 Oj09MqD7NvSGg== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller Subject: [PULL 08/12] target/hppa: Allow read-access to PSW with rsm 0, reg instruction Date: Tue, 13 Feb 2024 00:47:19 +0100 Message-ID: <20240212234723.222847-9-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -51 X-Spam_score: -5.2 X-Spam_bar: ----- X-Spam_report: (-5.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.774, 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 53ec57ee86..01f3188656 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 Mon Feb 12 23:47: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: 13554177 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 74C89C4829E for ; Mon, 12 Feb 2024 23:49:18 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1e-0003Eg-4P; Mon, 12 Feb 2024 18:47: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 1rZg1b-0003DI-AB for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:47 -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 1rZg1Z-00009B-Hv for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:47 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id D9F85CE17B9; Mon, 12 Feb 2024 23:47:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DA8EBC433F1; Mon, 12 Feb 2024 23:47:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781662; bh=bMGiugQoc2DhmTSqm+CZs/LiSubHUzCkUMZHroTlcng=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fIpLKn27e3vkTT3s8QIyNGitEgRIQfytmGeQxiRoDTld4daoEBeq3WPKqzQIi0hG9 a5t/vpA1lcPBUbfujQigHUr8IpcuuyBH285GoHf0wJGVkXoQZFMwNwwY25SiO6Ig00 HwHw3bAypzHJi3yWD5TL986yr09WPVoTvvT7Hg/9dljyUStvlnL8wQmsr1wmQoGtNH SVJTD0ruWMrmbYfzW6SEYsF+bt5INVunajvv5OIVp9hnqyfBXeAfeCQPe7uOPZLozt 9j+c0z7M481tAOa4daX9qPVw04xEyuT4wtJ6TazIDJylNzSveqtZRatWaklNNhwvWa GxaySBZG/GVLg== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller Subject: [PULL 09/12] target/hppa: PDC_BTLB_INFO uses 32-bit ints Date: Tue, 13 Feb 2024 00:47:20 +0100 Message-ID: <20240212234723.222847-10-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -51 X-Spam_score: -5.2 X-Spam_bar: ----- X-Spam_report: (-5.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.774, 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 Mon Feb 12 23:47:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13554173 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 E3D1FC48BC4 for ; Mon, 12 Feb 2024 23:49:04 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1e-0003EL-B3; Mon, 12 Feb 2024 18:47: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 1rZg1b-0003DM-DL for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:47 -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 1rZg1Z-00009G-MI for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:47 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 67A646117F; Mon, 12 Feb 2024 23:47:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 96713C433C7; Mon, 12 Feb 2024 23:47:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781664; bh=WnjkRHA+PxnhJ2hwB5R3kLTKfKDbD/nEu0xgZtuTRoo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qK8sptLUwpqCTNq0KQuzt7qTgWluuaAde/dvq2R74mYNtf6cfKXVhTQ8grqrzCabd 42mAGvt/1Iaa3iadQRlxigB2XoPYM9W7qIfJ06IhO5Oo8zwDdeEBl4za1vTEttF4lu pnQzVhJs5yheUr1y++MwxoCIY8C1Z3O7aVkyZNQ0Bc07VQQCV9Q/Vu9b6VxiWw2QF5 zLbtgPtsrOZCcieNUu//yAzB+XKaTIcyOwMAGgFYWqEdVpMNIm/lXVrn85XyYKnqbH GDoMQxZnl6yRCbOY0OzgvO/Ns5WXh524gK5BEb8i+3Fji+4KlhwrGxo8ZQecj39pTJ BSK0Z7lt2dJQg== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Subject: [PULL 10/12] hw/net/tulip: add chip status register values Date: Tue, 13 Feb 2024 00:47:21 +0100 Message-ID: <20240212234723.222847-11-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -78 X-Spam_score: -7.9 X-Spam_bar: ------- X-Spam_report: (-7.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.774, 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: Sven Schnelle Netbsd isn't able to detect a link on the emulated tulip card. That's because netbsd reads the Chip Status Register of the Phy (address 0x14). The default phy data in the qemu tulip driver is all zero, which means no link is established and autonegotation isn't complete. Therefore set the register to 0x3b40, which means: Link is up, Autonegotation complete, Full Duplex, 100MBit/s Link speed. Also clear the mask because this register is read only. Signed-off-by: Sven Schnelle Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Helge Deller Tested-by: Helge Deller Signed-off-by: Helge Deller --- hw/net/tulip.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/net/tulip.c b/hw/net/tulip.c index 6d4fb06dad..1f2ef20977 100644 --- a/hw/net/tulip.c +++ b/hw/net/tulip.c @@ -421,7 +421,7 @@ static uint16_t tulip_mdi_default[] = { /* MDI Registers 8 - 15 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* MDI Registers 16 - 31 */ - 0x0003, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0003, 0x0000, 0x0001, 0x0000, 0x3b40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; @@ -429,7 +429,7 @@ static uint16_t tulip_mdi_default[] = { static const uint16_t tulip_mdi_mask[] = { 0x0000, 0xffff, 0xffff, 0xffff, 0xc01f, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0fff, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0x0fff, 0x0000, 0xffff, 0xffff, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; From patchwork Mon Feb 12 23:47: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: 13554168 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 CAB48C4829D for ; Mon, 12 Feb 2024 23:48:30 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1k-0003Ne-EX; Mon, 12 Feb 2024 18:47:56 -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 1rZg1i-0003It-Mf for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:54 -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 1rZg1c-0000Aa-Nf for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:54 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id B8B6C611C3; Mon, 12 Feb 2024 23:47:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 825AAC43390; Mon, 12 Feb 2024 23:47:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781666; bh=D4lslpTSUom1ahmwfQeYixxUv+uuQ+t1Va9OHZ5Wwj8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VoSYMUwHwFyO6wxpXNZnqBugAWRw9GiM7MCN7MQlbHcUu+57NzjzO6jbPsqEwQg// tXaekvVre4lEQx+SXLDoqt/oi2dmC1aChUanrckIupSOdXthAMvPYbQy/C9n1t7gIN baHNhd5W+S0Wox1J4fkNAj6Xr6tdvW+gw9S6UD2p8ojGlJYDRf0Zp89iTlip4nQMWh uFgklsIVyVPd/ln3faTP1ZbnByDpeCL3imhpUqdp0yidhz1ZLHZCLyvkpHa0SF1zZD RyDqxkDoJATbf7bshI7xYIwNTnu6oiLq/P0vKqx2D7K8sjws7VEpoBrYFs8Cxy/UJ2 xNz8FvsOOBY1g== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller Subject: [PULL 11/12] target/hppa: Update SeaBIOS-hppa to version 16 Date: Tue, 13 Feb 2024 00:47:22 +0100 Message-ID: <20240212234723.222847-12-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -51 X-Spam_score: -5.2 X-Spam_bar: ----- X-Spam_report: (-5.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.774, 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 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 -> 167820 bytes pc-bios/hppa-firmware64.img | Bin 0 -> 206024 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..e065e48ded21a44fc16592c571a0752422e31200 GIT binary patch delta 42350 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%0AJOxDdJ3QK zCpuB2m-z`R=qWw?iD|q~jaK7%{v(2uXf`L+ArS~fda@BPq#3|8DrIx1PB$Z$n(ey6 z=1SZd7^5fPB{R_(i(W_0tu5&Ie zLZ+LEULDiQ7?Hg?j>`|nGy~v&9&~%27Csp`ao+FofLG#m(_2GBv7Eu?< zd}eCY1q-`sHD3sHIRHI+8FxX!*SuM30*);G#vM4BzeV)cxbFWJ=C07gYcXufzZfwJd^j1qKY`Ory65hAl+DxTVYg z;x^IfQeA#D0d$)W-A?oY2gV=62mS!gVK41K`@d$=%jg;mxMtS`5awDXz}v3Dz6OQY zdVKs*B-h*YW_KO_H!Qlo8z`b1t(rWX8*M~4uWJ1Oitwg$l;~FzdRO_YNuu$7y-th| z5dGRa>^1_2fxjNo%9QD062aa|m<+s`1g7tv0gDMZ{KKYa3=;TSnFu$}7$ltGOToz1 z8R2=LCwu}-l9;VOj>T+55~~lvL~I`kvwda+CCrs1(#B?rNR)Jv*z3^f1mF#TZY@3| zImO-{FmCGx?8QcJMdwVGii$4K9KiDv6_BsJtr=(p4*A+i-M>}=t@zM)NYq7Y`jPrN z8Q0`pE9O>B?>9H3?vvkrAk+qRH+~$o1 zIW|rrJw~SwBhkkqbvnP0L_XI$&rjs{l6ay|FQq5?NtATV(2x==DW`3hzRx>`IYQo5 zEQPwWwo7NEz_NBl+H*s0t(1NgvIpyydqw~~SdL1NE%lOrs3Pqi0|zUcdlFRc&>;^O zvb!O>Ta)#0ZIIm!+1;9KohoaCtPQd@kL*yb%H0L-E^v2wxQ^p0x7wgc)r|nF#|Dpv zUC?WTUR#3uGplq--TC~9a2M7}8~j7+5u_eL>ODaer>f{siy|GG0*tAO92yt0hah`M zlYLH=t%GbGWa~6pjSJa2$ktiqro+<8kXlI9LaJ7i`jQ&97E-m4s?{_$soaB*JqX!@ znyki!>_NyLw92+4(0Bk+2OxDolX_MSdjL`gAay{~_>9V}fou(AYcyGn3)vdT)@ZU? zCPKCvvelaG-^^M^qpEj5H0+0l{i+7z{V5|U(!LHwdI8JF`zCx#VL#OFhuZyPTnZU} z?zX3KPG{#DY@$Ao4bhYsg$l4j>MT$&WKhV}2S@>q)l?oLczz0I_X?fB*gwv$U{VCP z8Zt@1Z3?YLlZ|VI|FlA}{_fo8rTP95YfXwe0p=xOo*4T}uqw&j@q!d3q-*W&{uiZF ze(vHkQh<<-nPpq6v{ia&Ozv%!7KJ=IMpA~AXpSNmoRt;@ZW$qIE3T(HD=m;`pOt0> zZh^p7t86|i#RqQ1ho-khvM2Cv;7c{UA9#v}4+GED@EgF3H2gO3O4)c$iVxX31-ua} zF~f4kIYfGFkff(FWIOxpl|>H diff --git a/pc-bios/hppa-firmware64.img b/pc-bios/hppa-firmware64.img new file mode 100755 index 0000000000000000000000000000000000000000..7f6d837f0da72a46591addf548cac72abd0e2a9c GIT binary patch literal 206024 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

-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 X-Patchwork-Id: 13554175 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 79564C4829D for ; Mon, 12 Feb 2024 23:49:12 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZg1l-0003Rj-QF; Mon, 12 Feb 2024 18:47:57 -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 1rZg1k-0003Nt-GV for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:56 -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 1rZg1f-0000Ai-3h for qemu-devel@nongnu.org; Mon, 12 Feb 2024 18:47:56 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id C72FCCE17B9; Mon, 12 Feb 2024 23:47:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C9191C433C7; Mon, 12 Feb 2024 23:47:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707781668; bh=6vagHqBoZ2ubfTZKUJlBmt9pcsuk146jYOR+LVQKiDI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SUWWxuQROHVEckTClXdTvOu57+6Y1zQAML+UNxakMYpIL7agShrEg4a2MTL2Amxeo mtlnV9c3EbGO0EkKA9JJ9gBeHbpyVGFF6eoKAoaCqaMdfZ8lCBcQHdRGCWFQvGXHBO YOu78pZ/FtVoUvmd02ZXBWeErtu7kAAz3r+Shf5V/Bm1fKJ3DNQS9BdUdHu8UL4rjp KCcr/b23jl8k5KdR0UcW4vQwwd4IvGOQMIBbArrx35lq6nQ0yDwJtOJx3lh8TnCkAS TtLS4Fwtbw6QotBwbulSagtaghw8yo/dUJuZq0At4GzI4QZGROJpX8Mzw1P9xRdLP2 +a9PJO+I6qb8Q== From: deller@kernel.org To: qemu-devel@nongnu.org Cc: Richard Henderson , Sven Schnelle , Jason Wang , Helge Deller Subject: [PULL 12/12] hw/hppa/machine: Load 64-bit firmware on 64-bit machines Date: Tue, 13 Feb 2024 00:47:23 +0100 Message-ID: <20240212234723.222847-13-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240212234723.222847-1-deller@kernel.org> References: <20240212234723.222847-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: -39 X-Spam_score: -4.0 X-Spam_bar: ---- X-Spam_report: (-4.0 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=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 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). Wrap firmware loading inside !qtest_enabled() to avoid this warning with qtest: "qemu-system-hppa: no firmware provided". Signed-off-by: Helge Deller Acked-by: Richard Henderson --- hw/hppa/machine.c | 52 +++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index eb78c46ff1..5fcaf5884b 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -13,6 +13,7 @@ #include "qemu/error-report.h" #include "sysemu/reset.h" #include "sysemu/sysemu.h" +#include "sysemu/qtest.h" #include "sysemu/runstate.h" #include "hw/rtc/mc146818rtc.h" #include "hw/timer/i8254.h" @@ -333,6 +334,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,31 +410,37 @@ 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"); - if (firmware_filename == NULL) { - error_report("no firmware provided"); - exit(1); - } + 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 (!qtest_enabled()) { + 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); + } - size = load_elf(firmware_filename, NULL, translate, NULL, - &firmware_entry, &firmware_low, &firmware_high, NULL, - true, EM_PARISC, 0, 0); + size = load_elf(firmware_filename, NULL, translate, NULL, + &firmware_entry, &firmware_low, &firmware_high, NULL, + true, EM_PARISC, 0, 0); - if (size < 0) { - error_report("could not load firmware '%s'", firmware_filename); - exit(1); - } - qemu_log_mask(CPU_LOG_PAGE, "Firmware loaded at 0x%08" PRIx64 - "-0x%08" PRIx64 ", entry at 0x%08" PRIx64 ".\n", - firmware_low, firmware_high, firmware_entry); - if (firmware_low < translate(NULL, FIRMWARE_START) || - firmware_high >= translate(NULL, FIRMWARE_END)) { - error_report("Firmware overlaps with memory or IO space"); - exit(1); + if (size < 0) { + error_report("could not load firmware '%s'", firmware_filename); + exit(1); + } + qemu_log_mask(CPU_LOG_PAGE, "Firmware loaded at 0x%08" PRIx64 + "-0x%08" PRIx64 ", entry at 0x%08" PRIx64 ".\n", + firmware_low, firmware_high, firmware_entry); + if (firmware_low < translate(NULL, FIRMWARE_START) || + firmware_high >= translate(NULL, FIRMWARE_END)) { + error_report("Firmware overlaps with memory or IO space"); + exit(1); + } + g_free(firmware_filename); } - g_free(firmware_filename); rom_region = g_new(MemoryRegion, 1); memory_region_init_ram(rom_region, NULL, "firmware",