From patchwork Sun Feb 11 12:28:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13552445 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 7B128C4829E for ; Sun, 11 Feb 2024 12:31:46 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xg-00068E-HZ; Sun, 11 Feb 2024 07:29:32 -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 1rZ8xe-00067H-At for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:30 -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 1rZ8xa-0006F0-4g for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:29 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id A9ECACE0D8B; Sun, 11 Feb 2024 12:29:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9642FC433C7; Sun, 11 Feb 2024 12:29:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654554; bh=vx4xC5M+DPAKkeJWujimrHUf61MEn29t9idgCCP1zPY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZMGeVWXw/swr9HHmP4u1QJbNc+E65RvxgCTkgqdpFZ0xDPouDPn4GX6RQeKwmiSGW 9Le4m1LcV9s6ImAvbSp62hIH4mRSBQzb07qIgRicwzG8+OyHMU6XyqIkJYA4c7PkxD ao++5bDoRwOQry7dQaYyT+etYUcxEEa6Q3n982EPlWq7IoMT/0HQDVnxR6rk9vwg1w cb4bQOgLVDNQZ0uLc+50MxaCqsd8yJeXCpKpTtKzDW+8lewPy1C2O7xw6BndQhDwK+ rvm1hUMYJU1cu2blMR+284aeSBjZO2ASBANayhR3cKgJx7J0ZW2rUTfYi5w/xVYZPp 7HM8g9q4tdHcg== 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: Sun, 11 Feb 2024 13:28:58 +0100 Message-ID: <20240211122909.5807-2-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -50 X-Spam_score: -5.1 X-Spam_bar: ----- X-Spam_report: (-5.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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 Sun Feb 11 12:28:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13552437 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 250EEC4829A for ; Sun, 11 Feb 2024 12:30:11 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xh-00068L-Vi; Sun, 11 Feb 2024 07:29: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 1rZ8xe-00067E-AA for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:30 -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 1rZ8xa-0006F8-4c for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:28 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 144D560C55; Sun, 11 Feb 2024 12:29:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 66D69C43390; Sun, 11 Feb 2024 12:29:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654556; bh=7qAJa6D5seczT2BjZtyKXdtgQQtPHSe7FBlQvtuMc80=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ifwv/5ELJWXvSE/S90wBR28h0NrRJxQSrIBx4cqgFtMNMP9LzgnJh4MQsE9R7ucDM lTq3U96OtbF+0HVTyYGlGKg0RlRhyP+0Xsm6/4QZQnel10tN5SuF6+UTj+nADhaksp 8Zw+CNalGYpA+CSOGPSWWxLDbUtj6IovDSR4kQlqv2J8mS6dL9upNer7wHDv1PzQN4 wdI14V8tQlEYnQt1wKWa/BZ42FIz8hz/NMi4r7IRii2Qk6R3fuxFzXe+1PoAl0YGor JEYfbmv4rOl5P+AW016E+RlRua1Fhr+qfEIgvSoiD/FldoerhN8QOLe992UmF3jEZj 4IiVgfjnflqUQ== 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: Sun, 11 Feb 2024 13:28:59 +0100 Message-ID: <20240211122909.5807-3-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -77 X-Spam_score: -7.8 X-Spam_bar: ------- X-Spam_report: (-7.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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 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 Sun Feb 11 12:29:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13552442 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 6288EC4829E for ; Sun, 11 Feb 2024 12:31:29 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xl-0006BN-Rv; Sun, 11 Feb 2024 07:29: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 1rZ8xh-00068Q-G3 for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:33 -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 1rZ8xe-0006FF-2m for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:33 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 49E15CE0D97; Sun, 11 Feb 2024 12:29:19 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 364B5C433C7; Sun, 11 Feb 2024 12:29:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654558; bh=RjBu0t65VIh4q8pCxLppdwA9o9NQdQjXfzNg8fayLiM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qEcpqCye13fuQNok2LJXe6eOfvH3Ast1l72+wEEKe/guCNkZAS6z1EGFBmr+MwTKc I0oAXcXZLos9epK7+DymOhZVsRbcvkJgxBq8ddVC29J2PJBvBZZa6uCXhdgoEH5YdV WA/cSRjk1j2IK6n2j2naYo+hz9S8jRlYGW/SHdTvBGQtoWYLKvex+v0EyMJd+Mqhsc MIhi1NdUySel+oYIxNWXN5Y4OndS3YfvCqR38G4YaNPZEyyjO8lTA6I8hTW8xluX0Q YuGjiyqD/v8czRzv9wSH1qy05BscExmbTX/L3o/dQS0GErt0L87StjRSMfLvUZNMr+ +3QL2wXjU2bbA== 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: Sun, 11 Feb 2024 13:29:00 +0100 Message-ID: <20240211122909.5807-4-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -50 X-Spam_score: -5.1 X-Spam_bar: ----- X-Spam_report: (-5.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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 Sun Feb 11 12:29:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13552441 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 F3462C4829A for ; Sun, 11 Feb 2024 12:31:22 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xj-00069d-LQ; Sun, 11 Feb 2024 07:29:35 -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 1rZ8xg-000686-Aj for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:32 -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 1rZ8xe-0006FH-2i for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:31 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id AE24D60C3C; Sun, 11 Feb 2024 12:29:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 06295C433F1; Sun, 11 Feb 2024 12:29:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654560; bh=ubbnHP6CQJX6H46ApufgbUTl/GyRa/bvBIBXu8fglok=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IcXMrNV7nRA2xKAYJIIxaHMXV1znn+08SRA+2wtrCFnuFLXD7SB0LAIkDuJ7sWBf4 cDU3yIJ6OUyMkOn9vVh4PchIxOk53o+xBxfp7JkZnhg/uU/TFRkDUv3th5P3D2R2Mj uZuJ7emkD/rKuuMzWIyUK8xKpBYhpQ4+1y2zIBT6r2oHtonsfQM8L9racg+ui6haa1 n6WaomdHWzmeI4LbnyKvMWYWiL4GMhdebP7AS1h3SwTSD82w8ZQFc4MoSwcr+Uj/rS 7dZoJcxjLM8TcsM/nv3h3IUXZOwF9pXQSIVQuoaQSZWVuCKuGMHpUj++nByi4xMNcU GJXzTuyLTEbXw== 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: Sun, 11 Feb 2024 13:29:01 +0100 Message-ID: <20240211122909.5807-5-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -77 X-Spam_score: -7.8 X-Spam_bar: ------- X-Spam_report: (-7.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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 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 Sun Feb 11 12:29:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13552436 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 AD5D6C4829B for ; Sun, 11 Feb 2024 12:30:10 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xd-000671-GW; Sun, 11 Feb 2024 07:29:29 -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 1rZ8xc-00066j-HZ for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:28 -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 1rZ8xa-0006FU-4R for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:27 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 8A9AF60C56; Sun, 11 Feb 2024 12:29:22 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC436C433F1; Sun, 11 Feb 2024 12:29:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654562; bh=FaxA3mFrSxmY5kTESFNBYrTItNp7faYaL5jQs64YYHE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PKu9KHhx8io9Jlg9RvfX5Rg6PAKQ/xEMz7/jTF/0pUdp8tUpURHtyn5zrDcYZKShC krXRderYZoqppZqkKLYOPcsm8/gADSp6/2864XCJJVc9HHUbp1SqbIlsfPaR1ejeF2 uqocH3wD3JUzdG6QhOB42+lOxwDsqIZplOY1DX5EVTCakcpMqju3o9vQV4utoPx3uc GPmenh9u34yufWb37HhJeEW0FILXMTFQduslXnGmISWTo24cG6Nt0kb3OzooZpeOXf Q9cuXXS3xAqZEc3FciOl4DVbVpakQ7qJNq5Clph5DC5Tx7QZNzpTc45O/guw9NFpsn vSpPbgYSABvkA== 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: Sun, 11 Feb 2024 13:29:02 +0100 Message-ID: <20240211122909.5807-6-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -77 X-Spam_score: -7.8 X-Spam_bar: ------- X-Spam_report: (-7.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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 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 Sun Feb 11 12:29:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13552440 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 262F6C4829B for ; Sun, 11 Feb 2024 12:30:43 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xe-00067a-IN; Sun, 11 Feb 2024 07:29:31 -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 1rZ8xc-00066i-Hc for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:28 -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 1rZ8xa-0006Fd-4b for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:27 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 36C5D60C76; Sun, 11 Feb 2024 12:29:24 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A9A13C43390; Sun, 11 Feb 2024 12:29:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654564; bh=pgNJchBQDIBYjxxSFSCpASqiLdg+D2giuu+TbQVVM78=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JCld145HSL3yt1XjuhjnjBc+BzuNHTZOqB6J5T073flhbLBoZcBmHQCaNXZb+Jpxg 63hcXXS25s43s9uRjDoQNexk6Gd+Lfq1IOwwhgUFE7IwfV6kZRi2BdzLzgBwaYxmcU SD5DdiqQW2yI5vK7WKju/W1yFHbwQq5nZpKEJ3Yh+RNBusxaoMO1xYY/Z1NeRMeRa+ LvZ1qsYsyUaOFLHjHAZFU/INj+SM5W/cutEKIn8NA1fp1bR1Y02butupqyaFA+4t0/ nPZ+6VyDbpDIwPz+XfQNKqsGOitifl2PobwZXZp5/3K4zeNbKLWk18Oe3XORyv/1qO bPZEGI0tz5dSw== 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: Sun, 11 Feb 2024 13:29:03 +0100 Message-ID: <20240211122909.5807-7-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -77 X-Spam_score: -7.8 X-Spam_bar: ------- X-Spam_report: (-7.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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 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 Sun Feb 11 12:29:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13552443 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 E6065C4829E for ; Sun, 11 Feb 2024 12:31:40 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xk-00069x-6U; Sun, 11 Feb 2024 07:29:36 -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 1rZ8xg-000687-BR for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:32 -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 1rZ8xe-0006Fn-2r for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:31 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 8E9EDCE0D9A; Sun, 11 Feb 2024 12:29:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7A294C43390; Sun, 11 Feb 2024 12:29:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654565; bh=vqjS4Tn8JsTETJjKAhscWBmZAWUWeDAIiHK9Uvc1mpY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VCeAyfhJHThAIy/IdJBQnJ+NXBoZLktO2guTHiPNz0eFgU729pysTzbWQ4FLu93Lb tMqDftA05efNrcJYoz0t8v3ZQlR5CScBuc567XZa2Iomf6QAwu+rqKSb3Zc4OYTtOZ 6I+bzfl6piArqZUk5Vcoqb8rBIYsjjE/I+1t+DEmgf15vGyvMfucjybfxjiYMt8Xdp iDT8B+E1txw48MZR2UsU7iaKW9CFodtUkCf3qz0xheWQ+0rYlbwxpNYLUzUktqYHA1 g4iggU3mi1mZsJhlPsBtfgX4A7KH/7MQDcvceTeB7YFLHCMxs8Z2hJNvuPI3jjTD9r kjccUoNDzRxRA== 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: Sun, 11 Feb 2024 13:29:04 +0100 Message-ID: <20240211122909.5807-8-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -50 X-Spam_score: -5.1 X-Spam_bar: ----- X-Spam_report: (-5.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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 Sun Feb 11 12:29:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13552447 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 E5064C4829A for ; Sun, 11 Feb 2024 12:31:59 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xl-0006BO-Si; Sun, 11 Feb 2024 07:29: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 1rZ8xi-000695-N1 for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:34 -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 1rZ8xg-0006G7-2v for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:34 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 5BB44CE0D92; Sun, 11 Feb 2024 12:29:28 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4AA51C433C7; Sun, 11 Feb 2024 12:29:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654567; bh=QEDKIdARto+ZCseIU47VCEGfs+CMVMZ3Lv39zKgePHQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MZ6FFPhtbtlpDN418JaX0k1Zf2lELMe5/sb9d2g1hAFe5152AoHCV3t/SnJFuqLHa kB4xuEj6Qk/caP23es3U9RJBtPUf9Vk10CEKgf0g2JS0h9FRLq0IEe/AIWHXbR4Yct D61d0ghA/KIZz7c+Z6HrvSMR9dTCTB6Z7ydcHgFFgQeDtLucT+QGP8o8nmKbYfTTkT nw+ZNKCAPe8MwSVataCEUP6MwB8wY1OchvbzEKiOOu0bOElCb9GiXMaJ/kARzW05tY bnuQ01UvfeU7gxQ+FOnVC8S3JK4PRRx460VQ5NLxX6MMW/sE6Z70CFBtSRktDeJyAW d95M3Wu1D/90g== 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: Sun, 11 Feb 2024 13:29:05 +0100 Message-ID: <20240211122909.5807-9-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -50 X-Spam_score: -5.1 X-Spam_bar: ----- X-Spam_report: (-5.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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 Sun Feb 11 12:29:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13552438 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 11A8DC4829A for ; Sun, 11 Feb 2024 12:30:25 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xl-0006BA-IX; Sun, 11 Feb 2024 07:29: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 1rZ8xh-00068P-FY for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:33 -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 1rZ8xf-0006G9-Vt for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:33 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id BB7C960C56; Sun, 11 Feb 2024 12:29:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 19DE5C43390; Sun, 11 Feb 2024 12:29:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654569; bh=bMGiugQoc2DhmTSqm+CZs/LiSubHUzCkUMZHroTlcng=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Lj4GZYBnN9ClB0jvm2zMsFEvZFFXt7nBF2UgERlrJvm2JI1k/Om/YSwj5R3mCrhI5 ttMTDFq502kE/dY2TDATc9eDRUA0ikBII0F5wy21rOg7vEnuBUdqbnmdFql1xX295M qimuoSSc8N/PzMYvyNqMbwDsINa26fEp3a3/4DYCnFk6k5FznZCb1yVYrApRYuzvNm KsX4vRWwUSZ1AccnmEs++mQ/EUH6pdlZ8e61gNkhHMkrC5zut/Qr982Mmw18DZWAMY MetqoSH4GegFocG2H+8BpSMnlm9lFc1TwRTKOuC71rOURsa5LR/YKPSvLehgVPPE5A jNlCimcoh//4g== 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: Sun, 11 Feb 2024 13:29:06 +0100 Message-ID: <20240211122909.5807-10-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -77 X-Spam_score: -7.8 X-Spam_bar: ------- X-Spam_report: (-7.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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 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 Sun Feb 11 12:29:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13552446 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 62F6BC4829B for ; Sun, 11 Feb 2024 12:31:53 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xl-0006Ak-8M; Sun, 11 Feb 2024 07:29: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 1rZ8xk-0006A0-7A for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:36 -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 1rZ8xi-0006Gy-Gj for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:35 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 2EDBBCE0D8B; Sun, 11 Feb 2024 12:29:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DDC4FC433C7; Sun, 11 Feb 2024 12:29:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654571; bh=WnjkRHA+PxnhJ2hwB5R3kLTKfKDbD/nEu0xgZtuTRoo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Mo2SxgeiIonE6/LMG/P99TzmyuqH4hvTUqhgqELCyW/X9yL2WNC4uFqQ3BDhcY2CP K6acADc5jMka1kIU8jxSSkHNFqbhhFdreD9DbcJVhnob0ELIr2OvoSkcvLrNFg/dff taqZ+AlioetNrEgURLvU+aO4JhNd9gZ8qZ184nRfkQct2x3eT+p6fX3fnQ0mDuW2zk AHfy+erq+uI5+UCemvvyvHA/Fwo7h8lToSq4y34tGnKY1N7cxwpPhBNRaarRNIHB3r jACHalMBdp6fMMXP4q4BHzfKY9/2cf0ocCY5nbgs2ejFPXF0zbLgcckmbeujLkNrge LTA2e9y6+dOIw== 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: Sun, 11 Feb 2024 13:29:07 +0100 Message-ID: <20240211122909.5807-11-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -50 X-Spam_score: -5.1 X-Spam_bar: ----- X-Spam_report: (-5.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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: 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 Sun Feb 11 12:29:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13552444 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 69E00C4829B for ; Sun, 11 Feb 2024 12:31:33 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xv-0006CV-Oz; Sun, 11 Feb 2024 07:29: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 1rZ8xt-0006CG-2E for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29: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 1rZ8xm-0006HR-64 for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:44 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 98B9ACE0D92; Sun, 11 Feb 2024 12:29:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7803C433F1; Sun, 11 Feb 2024 12:29:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654573; bh=D4lslpTSUom1ahmwfQeYixxUv+uuQ+t1Va9OHZ5Wwj8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nYcMV2LlWpq1cMWLi42wpcMpyJP6KW6oYr8+O+LjDG7Bv5BU4DUlIiG1ITrd4DKkJ 9nW5DVXQmIUTM4nlHI0XfMUc+nQ8A11dD15lnmKphGmsExyAFylaU7kJATXjnEsF83 20fa0EjNDUHigVk7J1V3lz5ujN6ghTgn/MAiy2jifnItGoGYNUrTfcgGLiEyPq5xfz mlzzcz+qt9QrwJkn8IwnjjdWrLvLpPmXjW9+s9rSrklvQJTDGixpNRiqGuclO2cvjh gUUhfncX/dvjtVPR/6/fixDnwoId+JVd22Z8Xt3n1Q+5Yo2qyYXdSSpNh3X5cETEo0 Yw3SLY+XUAnyg== 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: Sun, 11 Feb 2024 13:29:08 +0100 Message-ID: <20240211122909.5807-12-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -50 X-Spam_score: -5.1 X-Spam_bar: ----- X-Spam_report: (-5.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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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

-;~aX(VL>}nFg8<;Wh_n|^bGv*aK3y{x~t9ljP-7-8~2I4VeaN>Sn z`*+P>{l2uEV+4PR@uaP&GU|@D=>rR!_JBao`nfFNW}~@eQqKyO?ip;M*nJ z8`irC1Msf)DjGk`Ck{btAG0pOr=HIC*=C9*wym~l>w@%n@O$DGWtmUG^I;_GGicc; zFRD_TqXYXLr)+Eym_2oa~Fh$?q)jp zMj7ro@PzT!ux}&yo-v<-&qMc#2)?O6XS>wjZOu-(L+dWap0ywh<0sSS5Sm~mIJoI8%v zA}r2QS6ft~Infe|=)!wW>O&D`tpA8NiWqE&*U$Y)*cWlfwOaeh*9FeDt=G8j6aL%e zg0`(?#&vM|eQk$ z5HuEFGwRXXSGM2gL!V>~RrVk8J7XEcHr{-A9m}}q$vTdhBT8SA@*RCCnh%dK>Q;7& z1ZDS~2U)Mc@u&fZ;F0^#jqiRA*hgV*-a@P$S$FhuX+k&D10~<~V(MgwVFP=nOU}@G zcppFj?|`!=vHKRT8OnY^y}(x2!6xz};6~0$(a)M^x;g(y>#&0a5D!swO5#e^JLWeTb!{^p3&m+&AlC`>1Cx_RPPiZQZc|bmnNUtF%PwnxgqIW)nsiLS9WY zbB_}6D7!N4$(4n@4PUYFd2`$sRt=fRf_oI^SaT#5Fq?4*8m@SS7&efQX39W6emDt1Tz+v2Cu&Vex= z=eM|P8+Mwieyj5~tjV%YWrSlM2Ar>}c`WTWyg#4gj`5pC{7T-z(c)KnJNz_cW~QufyfeTIQ+ZT^+`IQ2+X6i>R>kfr_8hcUHZe8djCNb+n&WZwJlE>CeulDxaYkKl+wH*b7meR%y`mQ;GtY{f{bsQa znK#a8FV40cA5BDlfTX=cc2gF;~^>Oa1 zo7ND{*bjxSl8^KDgMpKc3xB+&oH)9e7aPJoF$V@AzD(Ekj*S-&;+~iT)}DV1$UQM@ zHO;hA)3ndp+HRHNIfc)^Gf#=ys>sE@G+qXrEwQX+=Aw zFOimDQ<42aTQBq7t3yKvs4|HMc~=<9M4+$uKBQG>0^cZ~V!X{p+LDl?H{Lb+>L6_t z=w>p@;(Y*OyjnWsi(@`~-;KO>mFJ$T&R!Ar%6Qmqv>|D119`9}+;cD`N%%m7Ezulb zpgBIqcL)2i#4-0v=EL~)#@NNnd5y2l*;Q@8`37we=LT@^#2#}*<=2RHgK=Q&0?r+z z561c?x=`0w<3wJrt^Xhfd72Q*Z2)-@WaTnvFNb#O{KaW(58oqId*UY@Z(VQhzIyJ^ zeoR~K_@BQLm=Qw(b+iz#m}|4(zi|S;AzSs{0=oB{IvBKHJYwVTvaU<**{3E39bJ9) z?DTrjDdJ@RB;*5~Y7d@D3%Uor;&P#{kDNW&r@{Jx_&4`1cMKh`*2>q5r-=j$1we^Slag4JfBfQv?a=Od4L8NW$FAR2XXhtGJa=0xnqh5}#OME0M2mGQGthZ(Ub5@+LgO=8b3ps6%xB4E(hb*vK_*J>kn zt(>>~d-pPQ`3>+q&GryuDKWOq-u>+Bi4AK)u5kjWONz3?whtLy*~uu+ zpGr7Bn0_FW+Sice*8HvaN7CvNyl8FZ5y64t(^XPXiY_z6rO(H1$p7B+$6* zNiIG8KlYGTR%HDTKc5)S1lr3~z21uw2w@vn(n z=$WC~miNkxHjzhsDTH<#_r^e%39)aKb3D!n@1yIrx*K`j;~({FH*U7Y*A8|P*CoK#Jc|eTJQaB;Gsu>r+U&1 z`c`MnvlgD+kbrZ5_AjmTB50$k<~`|n^1qt&C z@e0?!Y{;_NkX<3ikAQw8an^9&csh8bw#c6xWI6In_*mt$Jm{uX?~myFxU+Vn(I@V+ z3QQTi*VDdP+G*J#_EMH3PH=~pLw(;a>kYqAM!;CWr^$r!b`5u}EL zw^?mVajW{CxRKvA{ONSzWuEXlWvn--pL3RTueRv`<7UxE6 zT0Sy&TI_XAV}8NSP@C}M+Lm{w8aQA%zSq|8LcE38fYI;Twyh_0o_vXCd{loUg2-=z zPBlI6Z03TzGnwo1Dl&`meg&QD)6C;}r!&vw{W9}P-Y+t*LuWI=ub>-rwIt|i1A(Iv zm^)dBzcvT9gfgRjMVB};v%$f=@@e?b#@a?-KgTh@>nh%}(l?kSEiYuk`F8bvW(fBL zB7a_}t9&c}+I4kiD5fsYhqxtvEi}`Iv+X`Dfal&kpIMvfGu!cW;F*f28&9O0y?Ey0 z>BDm^o&h}f;u*xV0?!bhb$Px{+Du<3JDv_aQ}J};>B;k1@ZEy%(B%s?M>*h~>9f_5 z*ZzkW2SidLyzJ-m-q=)Uym<_1jrgmrFH+~UF-EHY(LUJS?@BKmY^s8GzGa!eD=yV{jdPV$6Ay z9e5eOBB8(F&r@x3&{mfI@vtn`N&9z4+xX~{!{(1EHQAR|-(SJH+UqZ29BNtT{l5D* zp{=px8BF(-N}b{_%{n0;nmX1w`;%b{6h44Q1F!X^;awg$J?nhM_~*jJH8&W?FIf**>BjZ%+cErk59!#z#KR_ z9ls?$728|05cjh!hdqvX<~Y+=0(T@yUs?~1je6WFc_DY3IcHGT;(4eeE{+^$-H`2` zV10zIs=yXPy_2BN(U()z%X5|CdJk^4{NCDG&WSQV&O<`RX&^4a^Ug$<$63*bpbmd@ zJM4%55FJowaM>2?XFF`~``bD2$@jH``t8o6S`Vo|fVhV0elFnV2=C|8ya9>hX9wP-PKEjIYQy`3cz+204?9n2<}$a#PWd_d=ZN)pLW|%YH}|6qT2;8*Uy^=u z*c_>kGPpsLO*>`ZdE|*h^+#+ zV4Mcv;!qabMV{@}Ww*Uy+pU5y{iK^b*+LierKzmLFo3)-0mTkc%S ztl;C=v$0OAC{@2Jiu<&{BR{92TK$HcJgwp+^0Zm~mTK$cm^<3I&0XSc)2wgu9&Y@< zX}M^9vnC>No^aU8tXuT|LfpMR13GvJ?M%DzI%HwU?KfVBoGwqw`IO_Wg;nc2EvhQ) z)CKwcH~dHkZ@AeeGIZh%Kg!`Z@?AE*;oXn_>Z(G>@u(ZNx0U$KJp4X|cfQ-!Q$L7r z!1`2I>Bm{}*R>m!e&xf8_pgBm%C=aC4)(%Y^(|o+eZ&<}0l!J%iz!c>q#pprdtYRF zjv8yyQ@QUUi|4-R0LLQbQOkoWPf1yNPUr3AzJEE)xT)Xrg?@$ zujRaEJ&@@_lBZ?gSnT&c3?HzQQV-^w(3e5y^?O?pn@4=SgvSMv&SK9oVa>w9)H5gZ ze(M!WH&w7q-l>c%z~R7idisS7Szl`F_g=vKw&OgGSHXchoqlQW9(~x}Gy16gE}Vf# zjNWIDk3L}U8-2*$%Z+)w)SiH6l)}m0B*B4j_yj&K z*RKscRFUipsx`e~hdLvKI;D+U#hZ;bKpXnHzg5;N)=gY9UGg?*g}*fHk%eh&8T`g821KHl$!x{dMRJMVQ= zZ3Q-?f3kL9?`0G3Hed6*f%i&Uz0!BeeFJ5#tNz-&=r7{9rv92w6{FvNQmw_&b}84g zdqI19gh}opOIYtqHP@J8?W_my5qQTP=;oDS8XXetP%!N;5HmN^5rnUW z33f({!Qa8(CW2S;-X-3xg1w}@M_{9!>?~D%!WpwIRr$71xQ%`$1!H~SC8+~#AYS5N z;9qz?zVZB~j<>DrAlrr7aclEp-^7G|pCC-o$DZVzb{4xz@IKlZW5PO(-xf)G3i~{; zlUX#_$=ps8@)Y4d15>vkaTAvP>WjvsuY!MmW17N!QD1!TfcNMMw2OUzM-AInc-orJ z{D5D0Lbz;G8Q_M08Ty9xfVN5Kqz;Tjq>p)c{~P+~ZHHl}#DfLz^%?OBj97tOb8|so zY!i3!iClv*iAd=WeK23{u)`er@Jh<0pccl{zeI<+dhOts5s6)2r);Y{&s}>)L69H$ip%<5hY(yCd-CSmJOXO z`)9+jUxm2g(95!+mt{jQ%Z6T-4ZSQIdRaE~vTW#O+0e_fp_f6=%z~|9I^vVfQTH|v z8xafpCGabK1dLN_>)*X<$gDMq){UeQKDn1!lV~gE6L*#$Q97ed`CFo2!2LaH4EH1< zkH|5c-=tmkN9eS1`yaT*pGr8>lX$~^rg68D=!rFn_HR&+hJES8*yZ-_jQeyWFV0ST zRqRST)-SGe=4r93?XWLludKWF(-k+@i=L0YCf`WEwvaY2!`_8&i)rt|e$aB(f%K&} z+idZOd%5Js2CE(Cte?iWl_THOetHvoO|rMNL0f%egGJNR))EH&`%i9c04%D^27$#7 zd;F`qtWjUOz}7_hvKLNVn3 z=_!kmzwp87xbGs8{hVEyku|##a+AI;BhL%zpJZgA?+(gw9bsc1)e)s)a?3<8R)tpg%Z7J=Weqq?ZhsQpnOI?@`HSZh2 zyyd?8MAyp;4x5gC^#{K)<9$y0`C-#%Yh3?_F?JT#Fh^+iiD6lw`&804=Eg&^hq_*S z#F%SHlf5L)HO!TVF+T=b5wnc+Ex2zi3+wgHp4g`&tlcm+J>f479D;Q53J{H`zO2lIfAg>QGHW9TDxmCt&D^9}ot zuV5aVZ=-F*SwkHWf{*%bFM+>5!ZL_|$Fti?S4Hei(72uXk{og-6Y}x4o@qn09*`+z zjUfyQ_q#sl98+~TI6rbW@8dioNU!xrAcC&8Qr{H*Z zs_c!B_Bf|h9%;Wro}SEuK04SI=@a@d_=m*--r>{BWT^2r>+{e}Wjbt7Le^P(IKe{7tk^6H1Pj(CZ?Js1!lzws8ODxwB?@~AQd%}GeBVi)o87TLU1m(4#Dd0S-j%0Yb^xCab5Tgm1hKsJw;-%2)bl=r_Zn;)~|zGlk_ z%I9noJQHj22cK}gWPfWCJD&#pqef+DV@9~NCmBzWvhkn|ogFJS-1ms!f_lD<@?dcz z%1b#t9*l~WAZfd(uj+DAzaZ-bZHQdNI;7v<9%dZV9K=BJfR~6o=EeDa9WI@JZ99{@ z1MLAe#N!YffU}pxjx^Oa?8f~fIKTV-X+=njXBucCyyn41zyS5U=lEn${xfdNO{+h) zK2D4MHqIRTO4<_U4q{n_#8BB+u^ig??T6qk;c9ujqz_R zOoPv>m1SWg6MF{B*EZ}*GSWNNi*mScTa^R8o)y@?{cybW8Fc|G`_WGget_|`JFqOC ziTYk&A@#*d6|Z_=sfy72C$Vz6^dWm9wRTGs=neZ z4=@fe@LP#} z)RUHA)MoCj%30&}-TtJ%7s6%}q7DHY(s9~f@O+!`Lj^wE7t3}(3np-^XIXx)(|NpI`qX%Xu3DY)N#0q4G> zzl+Pa$0E<483WUgF{X{S2hl$8A#I1ppoo0n_HsfaMLY0a@sjC6e4q^I{v|9OVQ5U#iw-@tyH%dsR$+P4RvgKe#WWy#lMoWgVd{Z(8$XP+Ea z#B?QdMc3i?W_gF5gZbgp@n+r$$WDNj_wUtydvJapWIdKir<@C$IrB5-D|Fx=AgE??>p9y6|b*yaM?!|rjXhV9@Ux8lhG#_RX84%|h+^B*#nVcttwfc*K}-J>o< z!3xM^`hQ{<_!1rEOvTOTsDve94u6g?re48pbU+dsn zHyURXFZfe&{uuSJtZH|g#Q$YJ10Og8lxpDm`|v>=bNvA=Y)*qR4FADzjI)VS=eK)t z|ArP}zzO}JVLD)D8^ia`G5ru z323O8cynSubY?JP2hW@1+isj&RlK_Sof6E?ES%H3#6FMyEJJjcyw5U4#yk5a;CVVG z9_KlG%Dti-p9Hf9akS=RPEQy3K0|$wBSBY10%!9(QLG# zx)`(5PMcv|4en4}vo`6?nDvD0vxRpx(Q~it8IS!1>kODxo_A;_9wSOOU*s4xzVp4 z)D6+E?(_q+=2{b@$|E2%#D->F);xf<`;z|{mQMIr=QOwEQzzh~8)6#H>gA{H)#7Z|tch2Ai6#4fL6~3b?nEf4rp)xkg+Nk82ht zRftV6DT01`=gYMr<%AF81HU5l(@Ogt_Hp!kO)$T&qwczbwVR&l*h^zy>p}*;u z|4M(GrN7JH$OpWS0@h`Ojr}GJgdKfTbR&H&Yc={>?o02B{)%iB=BtgRy9sMdDbN1j zbC9&fGoiGv)+F9l#(RFbwoAY2OY*V4TTlo0!@Ra7JnyB>VX$o@pX9+=!P@$RJNiNkc#Ma`V}*=$&!F($Irj6rQ5KVIJCB>1!bQX`gL)C!aVi@V)*y z^U=od85*s0>qgw0#=f?HS1`~HOS!A@{T-ConO+)j*f}4ie7|TfpDc^G9=VdY`9rza zy+d8OOxNq_`C9R=s0n>0MR^&X&cWST0uH_xixWabvJi|OH|1s#LT`F*8Zty{kIfo7{QY4a1g(Z(oy!+%LELThfM1pUdpanOWACtvzgCNAx(`(eH9U?A-f1 z_+9SDel32(r}8$xONS$<(f87sq`m(a{V!4f!Ub>1x>uPG+r+ASYABC{`|@qcHS~J~ zfNK&*N_|VtX55oI=9JAZ$vwQ^i58COI`yjFxX2~}v zV;{_}t%^vl;}h|rOnJvMvz)dr;LD&tjHPNThVLp4Pc!1T0_WMtM|eQ%Je!B}xrd7Q zo!_#KM$3KR`1Y#tO`goxa4ZRObxwibCG(|V@k8fnpDS4M&pxc@9~Jyx_TC4&>gvk- z{@qJ}n|qVoYXD6`AU8oe(Q2D&AP^FA0slm;GZ!NYEEu9_rDdFfMqBHP;|-uh5eWqp zm|%j6;vZ@dBVYqbrbV&UnMjm>fgyIrHl4^2A%OtFyr1v+{caNJbe`vVpS9liU2C4K zb#s2_-`@M|v(G;N_gVa{B-JPFIbOIoCQNvcao=>ttpQ&dZ#eF<^#^0`STpX{-K;b3 z&iLf2G&9FQ{-=Y#+~Ct048>ol`Ju*y+*1vUKKi~I$?&qsV}r$ibl}4#J@iwaMq4&( zT=Z8NN-sL#%VlyI^E}13i!n^P9iI0Ub059s62qBvPtJ$-+`zy%_tJXsvwmrh|CBzQ z8*k4^FT67;%9|%%{8lMC)>8WtUG&vAEMAm*WA+sV+bVYCj-kJrG_{iQckBFlfH`Pd z*W$|TL+Zy>CU~_``2^44J+nJL=ZMzD3xg*#PmkHg3Bk0LyVQDz7WbVa~cO{xsxW@N%PmFneo9B4f~>S6b`H^ zJ6-jMtmh8`mRUO{?L9>eysM(JkM=%+47GDk$-!H_(CoQU51etg`#$XvckR4P`YPHE zmMovrLVKUJq4$jXRrws&OwaUTw z7-%%#xb-%zZ!Hv@51yz`ik8JmXWBU5BS>rd9jA=#PCl1Y#)-;j%1B+kP(1NkmDT1O zXF%1DUHFC3KicnB`Be_(;hYuy@`$~94@v25_z3|g&m`^P!oxhJMTYam^M2`qcDk)! zY43z|SK8@Do*>=SW!)Pe6g-W6xf8a1EN?L+JRV$gWDR%1R(ps3d&Jxc%j5pnn*Z!) zS=O&F4JWLY-$(pDMQ7f~n(Z8aOJMbr#f<&H_4J~GW1NFE_8gX#uge#Gx^n^k9b?ae zzdKlI-i|u!O>1j0`0oQ2J9C!qrM=9rx~JztmwwzgTg0z?NoBAYe*HCff%Jwe_rQib zd#@ueivNt$PT=z9>&Roc*jF3*F>Va*Zd@;YrfhVv&iBhNL}O)SteID}TGl%1Nq0bZ zn|@W}4Ayf^+OIbo-Vs-+@dxh5N~8QH{>(co9KB`qrN)PXCEcohbL7pDt=D%c5BG>V zRX6C5sqA}<6AVW_vJAWnum8|Vw^`}*jg8+YM0@njSA}WpX4CibwN9KltM0_v=gOf0 zn%}eO+a@>PPGo5u=PVgVyZ;jRp5Q;4 zu%Y7f0|zFU@k)B?KlkuGn|>qaf%hlePhXJq0OwcH^KPwmJeR2GnB5kN5+a?@d28@Z|Jz3ebpn-3Vz|{Tl=NXyk){YqFFQ&{-9{; zrG>MlhL$4}mb9IDbHv;u6P~bX2#ymEnJdqRj(ap-GGlD^PM1Z#%e=*YD@%5QRR7e0 zeNOPgE2iIRP4oBGtz9>JIDenlFlBF^^KO6{zx}1)FqZf$x!4bJ^BvZhMSl9#NvwC~ z={uaB5a}CpZ2qIlKJ|SL;7ES3Ysv3s`l$xSutn^z4W+%#O1LjD?CE#XZ)Ht)7U%em z`pY%P;_Sa<3;V!h^01Bd2Vd99pBFqK`>^yKlaQ4K_V{IUy3$ot_3v*IoPObDgFh;} zCVkhNtIRm&naPH4%N9@Kz3{vS^m(1&puacU<*?5qsVr?5UN&`zy$G>EAt!pFTB)nM@mAm!lHQk_{BaiGyu=E zAFYeg-^+GXh;^V)Q}>qxXU_6XHJNBz#U&m_Ko$QZGX_K?W; zLgZ^3?$7X>wobd4t#cckKMZiD`hNTm;y&DVX4g}5k4`Y>!KZwdw~e&}H$1*8=O8$e ztU=zjhQGHWOLJ(uv;6-SNM4?ue==vi4as6vty&*PaV$oM!%QGUgI{lw@9J#Dw$*YXKd-Vw^%nwHS1 z@QSL@e<6HE-g2FDcIWrhD2)C1aCp1Dp3d2K*6V_vghklqT%Fjc_33$4tYPtngTfb( zmObmn){%j|amQuzkv;54pn^3ci?9=duQ|ae?G0a{yBAgr`@%z`dbRD$s~3fnv@1lP z>Ky*u6FmCQJ?N6m2R@uIjklRKW(Yj++X+*VgBgU)Ce8hB%d?rE-G6k}oDdw&H>NgM z4rpOqu~7UqygfcaHihouH&c3A>2f%0qOrdCh5oVEs?T6g9=&_phj~w}$j)eWc>SN~ z@eI!7yU#rETN@T$E}ZUdbM`-yt5upG5kTQoa}RGi}ebHQE{BkImgX z;R)Pn{ANG!5&h5J2@k665x$Ih*w(rGCYXJq`5)S{t1_GN>imGyf3=<2^GBV_Q8`z3 z1ns`D3Hd#qx4wVBWXnt33dxI++b-TAH*yg-TfE`S@P^ePtwYBCsOL_vhfFLl=W*j$lUdFwV&b&wqq|>~cf*hfn@> zB=g9v?0a{|M0`KTuIE!OYwRqGcgtMv_$vdmmaL3i9e+)r2)(#S_AIbJ(f;&9kq9t6 z@tj9ozAAYBmR$BFJ)>`XPdzvRa_+1+*Hx2;0#9~%4rg7tpt zqy;yQwZ6aq=r_V{6@2Ll&OXg3`7D27$pL#`q19d0DEdVw@@D#Bm4omqjUg32^?LU9 z$g^ir)y^XF?caX9J-Wufza%B?+2Y{Syh&g!J{r;5bFg$#BnzJX{o;2b=6yK!I%Y|4 ztKT*2Iidqx84Eb8>8`quJTc3+&ps}mXkLV$bAFMLITar3g`-PD*;sLrP0Z8J1>W}_ z^`@TczU&!qH~Ylw`ODAG>_=yG)hGC#i%A)KHm3*vH~2PqQ?gTCUoSownTP+zj26qI zIQ)f#TN(dm#W?;n6|Py%XwG zd-vd|j$35!Da8GKAnn`5mZg1#-J$daoC%Jw-tzMYDm_`eQFF0mwMYC2K3%~+=MeYo zQCnC~+nv_q+YUeQH|-wYesH&EDLiR8y^;O=TI%U2>w~H<-f5Cc7;Ea*$mZPx%Cj#w zec0E_-;Jb5Hjs<<<9k|Cz;1a@8MR_ zhRi+O{`Q`X%?QUX6n9U*x~g_G?|q0)Gi|QUJ`;A6>LfhQtmAAF zZlep0EjQ2a+Rkr1p*mK53Lmzfl8vsWJ=^}5^-}YEv_8BW9#YwW?uRZ+_Y8&P$t!OfIjJN4(JHOM|V_f?3mG#2&%q!_hijSKY zFlXSg0kA}HZJJ*CEbdYLJX2vO&xo-~7I2-<- zzK^au=+KsI=y@-p+VmOc-`L$W-d^{lUUY_Vmct*j&%?O}kKqTnc^jm1WhBF#+Yjf( zX94RtbXQ=PwiH{P8u!Ft`(o8?-PSnf@bJP4jw-XP`S|r+Tbn+Q@~ytPgSGw?>Sw6* z#oK5uB!_o#n`?dTMu)iHEmv6ccHaDMnz;71^PESu)81ghX*b@-)>S=lY@(SHD354v zb=9oF-k{kFQW>F1d%K(3E^OY+J?@339NZze`S8TGwN>ev*byzgd4qKW_iWl*-8EaH zu;VT!MkXet`s`D}6C3G$tQ zj@A1g!XL?#eYHu-YwO4ATG3``*FKZp10GPlM!3=WYvDnQXy#3e_Ey*S4$(*WXU!YE zkuSI8<-kYgxyX61JiT)}^C8ZD48I88i(kGn;qN3%U%vd_R^ic4e!EWVWbc`^{AXq ze2)ni4%!9%MZt;equ2^Bi_GKuqB9<_*YXxQYiZb4b=K0xSuC{id(-)Kk>@0K-E?n% z6Za`T;XZ|JyTP&BKwJ7)^gA?Z|IFwdXugScC)OzoPKsZQiL>BWxbQsv2sVLD`U_QN z9VqSx_PHM$M(tICvET>TGvW*gZg6!Z)8adUd*kR~*64KSl{88pSIirJ7k}9x8kAn; z?w{U)xlQTehj&!D`^ub(j2|pmWYHI;&BhJl-Yz)(>Xml}T#ikJw?3BaNp|2tuf0n6 zW8}<{1M?<{!FB$v2mdG1M+5+dB*L#uZRo$M z?=N4hqi-y@2;VlxwS1#Jl$Y#vWkRcIPe%TySXn9~{Y$?1Qd=y&S8y@zCC*c0;|I44 zTn*gO`6_A)1Q|Oa{yKIj7$alD51SK)KY#8`2W(lYU!m`(pGhw+y3tx-&H>~N)P1Uo z4~~XBtXV|(g?f2(=B=+J7vUdT#o-^>`&N?MFRNcn3eW48?tI_rFHBSnia;U(H!JaVFvx%_~)BN{=o%0G|&EH}7z3ETw+Gk+;0gg@0y`?cw{HirOVD zj61IW@3vQ*V7bep`TqapBEcU;X|t?=bt!F@b=fs` z83K<~)RqR}>({ll6~m}^7vEP`)K(0(dHl<>{djEa?)xv@hlvaK^jti2>5m=Hb^PFO z9D6Yr58*ccX`1-&_YZ@&#dccPmB`{vwY9khfB13U5opN>gt3eK?PB`a>th3qg@-&_ zoc{03(GnOd5B0CH*P}|-a9?;eZ67=1t(Mh-8zx^dNMx zamM}w!?ib9-)ealz(?K&31%|3weW}0Jw3K8r>!8bWZ8oaf<}JzYLkVJSmW9{cc$}h zdkA|2>;;&;oBKJR7ZUv^7YBpT9_CF1oz2QnS{X-~#T=?=7s2*}@nxk@&N; zJK?VnKY*Ul-Vn5j*7BCx>g>TW)omBHHK1#z$9-VV9L3M8irHf7CojGp-M81!{p`ri zqI=o1FRYawzGNJ5>7HH?xxB{0z9T>Ft?hJvjkwq`a$Dl3`Vyn-I%`b-E4@KKU&R}0 z!QQwF)lUf@b}px@E|8(n$=~H~<~wxq-|}{-Ty-s@k^O>mg|${a-9Ee0k#Ya6y9`tc#rx} zY?KDDGoPmKvpq4gInSJOc)VF}MOI85%;i1_cbkD#&zY+b@D86``pXsO&IYtQWt?P> zQB&5&-EWUWm_M|r-^xyMwUp$!^seYk#!c;fhethCZYerF8nroO(wrZ)@$DHcc$dnhuX0NjGJUV;&b}h<_vrn0wH4)&&2QC1+xcy} zM{eZV!0LY4jF0HY!J9lxZHfM@xGp$;ukb35%4*}?wovtIm@~JEf zYFz=!F1bB=TZOfcGmke)9ys4Oo4BBnt0vI9I6rjA;Y%|ue*@>ApWDQE!=K&RYk#tlg~uBzZPSm zA81bnXXAEq-#cx<*Q9IO^Y{yo5!NX=R~>}M#~7W#+lD_BEXFsc4oy4w*1&4DDShY6 zEVvNV>1>Qgtzt!|BS*ml~Ap0Qoz=+qrhe=nEpta-UtT}z5wjD0; zXUR`|{irj`ew@=Y)KWgJ-{`-hXl`#;c^LoLfOPePQ)K+z$*}M#p;^edoN%@Y|`6S8g%-F)eYUbk#TWZRqUH zm+Mix3L!fyeCNF>c6-{j*U3BDeQlxXhtmRkMX!-PXht79dN$;N zFJbJrw_uCnMx~LANIohzl+QNl^J3cTW>p18^?dEO{R6{wv(~*Tnab($f2}vr>gKF_ zLb~K^B{o)Otvq4lerKzA)&CwHI%SOR(wX{RymN&3C7DB?4CK2fI`**V6v26d)7!Uq zZr`Z3VULx~_@i%LasJh*v~AN~lt<~>I)9Ozoif1eT^V{hsygkuyW(2WZe;%Vj?Dji zaDn8vu4U|5(II)2Uve#ZWlr5=kA*Z3d4B`LF%DXdBY`E z@qgTxuvukeohB2VH%Pquk9(_vQQmVW4*S3HYn8rf_3*EqG6#9XEF#?5SNI>IeH;sq zOUSaCl0t?a`o{3}@%7w+IIi}ndv!m4++rLQKX8G@arg69(~Ieuj9bEAzMP>wMt5!1 z7~O5SD19To7+##+KBnZz#8u)YXKQA|yPLk*KW=t0zL^RAA@up=@NwoCybGiDj^32p zSajNqH-km&s~g@NHM;kBTn}lu=fk>9BX78yaSwN#_b%v02hs-nXn6bDJ{qv+3k}ps zmfoaVfP33&yKkvHz5Qe8KhZk|vhT++7I|rxU_oOR=OQZTy9&)XhBC<(lPPCs^=ItU z9?|+la1-OvG;a;_?Z%wL6Lp_uQ`_0Cn?zG(vOAsaV>syH!@_}lCNDdQQ30!2p=OXy$ie*Ee&qRFQ3&3icCG#&d29~k;7B#Tz6e{tY?e%W!`6Eohr zIOka0JBb;{9{rC^)7i+tf|HA1{5#}f0pY6u9?^PoY1t0pB5bs1GdM0*nen39LtV>N z`KDa9tsCYUS)Y;aM8@3jUI;&Ag--Flz@F7vTkSL+jTxG}#X1*ld9kaZ{_jM_lJ8zP zgAKzy4;Adrsjvd#$tc2(JT#yMzil^vO=1KYD&x-cTI$-&Q@GFVx9Rnt=%u&9GeYBz zWfdz`{%D_2r?VXX?%-< zGf^INk`>dBAKVrAmfaubC4?w@1?PiyOXe;~Q)By08qPKIK1M3zobd@^jUx^wd6udz zau0iBb5b;KLNTyLOYbUu_7#^=N4_s;`{<=0XPXDM2;a)cwL1)N%y@6~7r+VIH1FQ5 zGN1<@mJD2yr?38>49*ijPnK={3-J?uTTH#HEKQZC-^5>Vf^+20j9Ry{NB2TG>sa4v zv94Ul7;~;IlZWPVSFv-;6B^Gl1~v1z*0h*`8hd>c?=_PD9_B#B(nsJ8Aq!con`vGb z{PG{)OtWdQylSt|9VeZ^*kPmg_mK06dmdkYP&7sR5bc-Qcd;joXj;O(=p^)seZOH- zTgNXqs@|aK`@nL?y<%vyqWu|fJ^l@6HL~W_(uPu{yWJaww?ECxB3DcQv(D!ILbPi= ztmL0u`>;8>O>54)DKVAzB<|rYiG|oCEyX73Dr}N!uc(3b=TBI7V-0%ZSM*tLIC`$M zt@D*@*)P=^VBuHT64u;PdbfR1V5z~){L{B2X27V3uX7rueKN|85cge8x&^s?E#cs1XPurXBYIByQlyoClFY8;w%Jqk#$DAJ% z+_rN&^{$&e)*OJXB_I9zM+K$Wrw$2LINe_y?nKA3=NmqQ9&Be#P3Pv(y>TspL!8Iq zou!@Avj1S;Z+G%6i2EvVz@+&+a4_6e@QKM|((bqzK3C8%W|4hAd-;ljYnzudHV2;Q zv}xK=!@8j*K4A~6lrtq!S|Z_x-C0`a3;)C&4FA+^?h6>cJmTg7Ptmd?ADi%z-f=>@ ze?j;su6C2=r>>UpBd$h6i%I+L7vZ0|>a)8YTAqQHWi~A~9q;Pi-^|!p_N(*Q7hTUA zqR^CmJjOER%=MQWTN11v6m|0+?`f;JsM87+o$2jsON-9ZFSZ8`6?ItQlB42x&BgGp z7*jR_qh>%cYbjNRzIS8F!#iS3eTR1r2$FVlc-MeHZ&{e!`Hi3&2h2e*8H$p1zWer=owFcsuzkxJ%_xnHV#l6^+nZ z-*&F=zLcT6d%GDIYAj}SU20rb`1*t@wKe&3{$)VKv@h_X1Ki=v*nrBVHpu(KF5Y3e zj5lBOX88Ab>t#}Jn~b){OWGp3?R|7W5cep&sEAKXWJU9vwjJ0zj)e1K3_Z|Nt$CGb z`H{v{*C*8LJN)g0M)}S6UnI2r(D|O%ZPK)hMw4E;8rvnNZEG!@Z|itcNV=Bth>j-j z}kdF1Lz^KZL%v1wSITehp)sHTUP=3og`@#UNm(*h`ER;RK(eVW_ z)q<1WvXV76%bGWLa3p+nLh+bxt-V;*=_PSi_?p;Ye1$!pO|M_s6CNF#HRh<*s5tdU zN_QsBT@oJ#_EoV9pfe&~ovn3#QVWa^%v^cnjLVKl|d1QFzj6OY*7;o7dU47O-a%ev-DdCt~t6%40LcWQWU*OPs zzvRZIA!v>I9c_HnKqKSqP0tLE9~e@4->8@YN`Gjs58L!FZA7Nb{ughf3=mHShgg>i zu`V^!3RXO7uS>-g+v`%!xQsU){4MIU#E1EngR1y#;a43laAlb~p^eP17__sbaxnGk zGHr(MKy+IaLYCn1w znTqJ$aLxoCXC7OwK4*TVRi*Vc+2AyK*;x}&zaZT^Z_(f^e&a5E-)?z#X1Q<~*&gLD zXYLnV85w;@_0gPvE+|$1 zkkgpAiufk>j6z<{Vx!;pC;X*-?k3@ez|4eDV3zmCJF9p%xyZL6CWZRKo@n(J?y-H& zJ@l`dcX9^gJ>Bny(eQXT7j?Q@!3&OQ=YkY~(n{8APBf)MFX_ zV&cd9+tCy75ZzJ$-wG1T%=b7eVBB2JtuAJbI@E3z{R87^>eJ-Q^P;bL-$vsl^v3)p zaXL3r8gI$QXu9dg+B!CUrm=zY#8(BHOukW``mrVMMtC-h{Ine_;9nK^bWbFGC-wyw za|SWOn%alEgXz`4{nqmC#pN2aiI(gu1_jX@)57Dp4_6hq!rSAXv;U{VdwA=tm^HX| z&RtgU&e`4cSMAGMil^&Lq--*IkGm_e$J9O+9mN|_yPMBquZniT{TTPy8trqASfMox z#>+M6miD&J9begNlq1a@0P(M_^UbTy&KY2AqN|(=8+C*KLR;q>=T1+t$5-+zE@vil zAd}~f2E_sYqSFq*HFB7AZ3255dRx`Ec3h;D_i=n{&6{FBUL7ekXBwTiB1aTtCKE!g1AOPUo;Nyt&JdPG-$?`We=mq?hT}g4D~WXBa!` zd^%_Ms;E1+bY96BYr!2Q*quDh+C&fgOq~VGlwb9&I>zQ{ReY%5UeooSYGifF@{ao( z#jm!`*VDzX?19=B2^>CKX?ZI1o@lXUjrMHDPOkRm@yQRF^yl6){AYc@=rI3N=wd4n ze|W3EYj;)fYTiD*0Byn3E6m%FrvDI+g+uvAP5v(Rw&kg_A*bG^FlKS$2%n+wQIq^; z9HVcW#w}MVjge*cwzxZDaTa`zc`wg$jXU$aJD~M7@FqEUSL@ByQzag2)W);Nbl)wf zV&EdhRdyFV4!;kK0x$KGfBJUT?u&wq6?r%DEb9_!?#Z0Zp2fXSH)np2QXjK@caGDz zXF9sAJT4sQBw2$nu@R&R$Oqq>1BA?=b&b=6|8U zv4qEP!+~SeK{elvMU0ga9!BnmSy?}Rl<%s*k&@K~3;pL4>l3O2M{pbOc#pOB^H%VV z8uTLfUrSh@IkGn8Z^o`cPj@CJsNI)T7L?*%3$Nd#{e1R9RWOnHX>Z$sC%UIcJ54?& zyvNpaMY{6D=NdEA5xT~5p zz>5FKo;R>YG$Z`ogs@=HPtR=Yus`#UhjnJe)EgCZ$8auW>g{;k#T`=G`HEurMwPrJI zMmQFLqbg?L2LtOp$U=bMP{|T^G&iA7D2w@CrTehv`zY@aHRPM|9BW2*{KsW48(!?L zy2|u9ZRfc!>9kFoKU<7`5U%VLw?j{L@4U4#5-dYj%v@JvQOdy`Lyn; zeVs7N)X}x9fRat*J2E9saKxS@=i!I!QYRxmy zW%Yf!X47W9A#LbPa@ln@KEcFirx@F?=*CU6%~*FXV=U+rKe!_sFf^a5UKlO6sqbE7{BshYQr}E_bo*x{uE$=~Maibd{@B>K=o#UjgMKQrW$o>4*n*mQ z_%eUX$x4)$>ivp=V}%=As-57i*Z7vRin8CgjdjeRDLd_f@$0s>&UeQszw(`29LbVw zG_7S^Q56ge#_pD&m$1L;rIc-TqKCa@FX#K>RwRZ3)EjzzIQCNpE=~vpnmCtoO!};? z<5lb&BpCh1Uao8h+(;j6>IvMkLCpF{%_q=m)?RRp4BFv4^-kwZ=^p7F(Ifkz=+8Nf zyCSvQ3r?yJr`$&W_*?8VC#RVIk-1*w2 zx`(m#K+?377ndh;ZtdQR;?eV_j(3N`JKR~&V)iPgZg3aV7qhd*T6U~E`IQ|+R< zC!`C|F$+w&&b|6Q@t<`i&LRK0MddQ_W84w@j`)?0;8dE$ z7S6O<=#!3fcVwFE;GnarI8XH(FY65PMTzy^D%>>IB0_=RlI|m&V-v2z_XbC(H@Dt= zHF(c#-E`e60MJ+t*5rHz(*(sS0#NzY>!ES0m?V|IYPpIoE@;UQ2Q%8+9&X@jZXf|~No;*(@yk`x@WpRE$t{(3W;s$X! zW8lgX?>Brp|NSHXqNu__=7nd}2Liw{F`o*t8>LAq*`C;R*Kp<3i#k{zH6c;T|^h zpJvU0ysc@8hs7`YhK*B`{pkIawNvkQhgIja*Ad|{3L8Eqj3FiRKKJwb;2`x=b?A1L zlewq6s6u=4!x;k>YuIc z|LPqO*Amz#8(UhBgC7Ze-=n?}ccIdh{3`!@V?5Ym!p7NL?1Ew2O#6Hra{eiA73uy8 zdm!%JzTl66b2R(?g6l<3_E2mvF=vI&eaQa%vU@uwr{Ma!jv(*77i_CrJ?cHJdr+n> z&Lh;<$(B2OVc(3lT9r<_Z8!212ppZ7Z0k*psi&+$9+jqp^9R_9RT}V2pL%|Pks}k= zRkvC9r>A;2*GRl*XC7O_9nM)#jmh|tUwc+R$as|fwI<<~3^G1a8)h%+TaTy?RBp<4 zyWI3Z{7$}aqi=|lpZ@qd{C}zMaQc7{-}e4vmwo?VI88b)vh8x;!W%Va%)$3xVOw++ z^F7xsa|TD2cLxhqW@ju`vAhg<=l-+8unjh1>U#rBKWF%&d(mCHJEuN6ASn2>>+dLB zYjn!P`>{_^KEn^@6GKhdg3S=>3!5RUsPC6GhFxBn9^|{6 zu+_Lv%Z4RknMP(W)YfQT_S9I;Xu`WE@5^5)-Yxwok|KBVBi8iAUHN|}UKaI8CR49v zeRUiBti-*z?01nwTOLP@Hfe0R?UbD4tS%_vd`s8jzj;CDGZ;S=G@uud{gE5xUtSr! zqd!ecD)Wblw^NS{FucOn&&MhwbCw$oU(&2~Z|+)ls#0fKm^T${I`T7rSDe}jZ9wI(TOGW5YVLrrsjsg0#@J;UzEx#WJD<`4 zZ`TJC?Y5q_QF*lYW9rq&#IBE#{bI?LBNy)8xNiEHKaq)=-HNA-s~BI^QRXLA|4S-! z_bNZ||4QpI%N9qH)DDQ}T?MOM^Ec^B+9~_d`IA%!;#oL%zyj=d?X~HS{hnYjzh?ZL zwvl=?dXslL=raaHl*Y(Y*UtNM_T_(1@RVNgdgIP**SP}rMKaebPH7Yme^VtJHf^PB z2+97i6`YG6GceC>e^4-#UUxEYUeA3)*L%J2A2^n8?yzBJCr0{A`IT?(Z}O+MoqM~p zq#m6IKHf&ryL>kn{?OG@_ybp~-jazc4$N4R7c4HE?`rQ??((*-cR#bsJ$RDx+H|~q z!VVjGLbRANVmHI4XV0DRGeJ63cczuD2JoiI^m#pY zpEr*_udsV?CVTM_l||(Yj~`HF+}r`x23FTQox-blttUx7I6HBdkq_A}<^3D_wQK4B z*c)Pwm6rAxFzR#u#fmh|8s5%1hE+ue3syJHNp3GWUa+buZ+Lsrfr8ZvZz@P`FFI7P zI=AcY4T{S>boaWV!}!nL{d~z0+{1UTFZ!%tRS9W|J}p?)e7CQqg!rN+!hl&s9^MU1 z-Cvi?x~ezr>B>k_^H|=xFJnB8E&C%Sz82o$R-RSD**uf)gEl?62k(BasRNn_2j?p6 zUJe20sv__ndC1qo`x%Ne`6k?T_XhQ&qUrRSIEyr^WCP!q>rL_2v3C2YH|2C?jCFbg z>!_S@$oUucQq23^R#o%$(ERIy(&n*)Tbifw{VU2ben3m}or7EIf}_SY&l=G3^g~Mv zS!=vY?QVbl`1bt=*0-YvgZt}qyY?U0AbUiC{q++T?LY7ji}?2Ny@&5Te8+H~=D7EG zOxm)R-~wb~=JVawMAk4|Phg8Yl^3+I{;ubH8Wcr5249(eHaM8q(PvHs^ z9>%*fTdiG>i2wTT!@c9z-dgvx{_Vj0w;1Sl) z7e5?HVl09U1I`4JUf-%a)u-0xPd^uDX-!M@SM-kslZvP-?mDh=>hYeZKaI$q#vJO# zVos|!nk?n{bLok9H?@p!Z|b2AE39BsOKw+F4|T}8X;aIDMNK`_VTI-4dk^1x_>R#T zUD?Ig{$Fz?Ym=XDiO`pL7e8E?W^f`Gw5x%loxUbZdq4b)?G)V`S3k{t^A?5w@8Qn~ zKmVLH(fd%$&?Ao|w`1R_<;YKc?cjBrx=7M}o_9mSXZ#~rgHxF6ooCPkcbd9EW=g0J zM?Rk0zst0-l7kgq_VfxC`tsPrq|T3QKu*?FjcZr_CuyEX-!0NtP8ce-oBDHnc82T z1yAy7wYOjZ&{}6T3{4VV#7ap#!nl72id6%}v9+~W?ET2VN zBP^n}HYX;{@R2x^hj4{OX>7ILuG+tbw&u`gxAW>RO}p;b&YO4HZB1-y2ml*) z8+--6_zJ(%#8=+WyHol0SHyNpM@k-hc`5mj-g?f_TjC{Q*u2T~O^>n5r8wmwTw&__ zkWutjwa4(1Z-v>s{KcJr!pnCYUeX5W{}wJ;SC!eE4BmHayyDT4ywZKm#P45cmwEpp z({CF2-d|$+%@X>{=Otg1sYG&1fBBrssrLZ|x9K!(Pw|A&$F75SCG@T9;orihRJ&c$ zmoD_>#-x-0!`tK?>SaIj>7$V(g=f%@>Kz#MAF{*78&d6R$LcGW7gZJdQoVM4sXwXR zX>^va$m|s+N~f~Ev(e~Y_B7?J7 z($Rjj0G_EI9Ya5QC*RS2v`GDEM!Wja<)@b%LXM|NU+u4=AFWy6&YnPUe--^`&4w<% z1N*D!M{E9J5#JuZ_wc=k?-+E*aqqh^mp@q_oOk3iU(0g`=|_=~=MGq*gFVP2ZBzYN zuZ$u$k~5vrSAA*CS8~{N20op3`cZh;YQ527 zRhIM@Rr)*DGi?)a9>DZJJ7+I`5Kt&>&%^wme8 zQ8)yD@kVsvcHmTchhpn0sJJB^ktFXT>=F?szrI}$Q*OSSXq$5Xvp#b1_R5br^E^xU z=fwM_2>oA$&HJVZ{a=O6`=$u}Uxm$kzW4BLc+dF$IQE<_f3`m3&~v|{|JiQ$e@i+l zM+h$V$Wy)B2b#SO(QvxQgDj2wg1z)vtc?VzbEhwSb&=@{X`4n4=!>IrKtJ0n2YmO+ z0pGoHz_%?2>>sX-d@Inr7XHKM=CkyLCDid5Y`nl@`XF@AmMqf`%CCMWbaimwc!c0HL9$u@pIk0~_bn>mR z1G_a|eQB0(^`|S^j~zkw8OJYN{2sb@vfYn)cY24ZAB#*|I!^ITW6-^nS>;u|HFY|E zyNpJkHg%$lsZWzm`t{J=&uNT9J(M(65C;x3Cc&>Zs5y>lgYZQ9xT%J@3-bt#Pkik4 zE*}#~@)X4k8I{Q#CXcobA2f!N-7VjGZ|Z>>Z$SNmuZA)1qN?B#`q!ry1;?gssq-|wX?c3}e?AUY|E#)v zp7G8>#=^#q>HzxWV#Yh_{}?|sT@HVczgBBgmyr>TDMnzwi}+So)eX{}{p&*T#0$|N z9y%)Mwq*S1gV&Ri>jEAZ{{GE zFBmi1lRntx%m44^uC6M!eEEY6U!+TYxof2FXNynrTl_7VQI*8^Y+tT>1HbihmxPMP zeLCJV&KG>h70E45@r7cNe>*AS^#JSO%vg`&T3sQlX?#j+S#rTKg+*cFukp?9!-;>b z@4Z32IPpJ7y-Xs#C3yI!5x=ot{%eUZjm9f2Y2tmGY#6qG;uj{5HS&B}^2E>hKGv6i z;#Sf$^vhpLniZGizu)AsMn3AmyPbGL1Ae6+?ZoFQ-Zu$)t&v%RVaMlx;YnB6i1VN3 zdX|QYURMe#h^T zOZ=p=+D4*g1hKk?9)D*R6QQWuB^{rrW>CwQctL|TKN z@@_6mp74clQjDwB8m{uo-&=l9ipoD>vyF53d*Tn@N*l%BV8a_;=7C4RSNi_tmw&XA zU*&J$8~no!{(k;w`Af@^b1x}>uJAXsS}7`jsSPV7ia+Wv6I>@A_$dpV@`FEjw8!u- z#o%|oGfD3fe#h_e_2mciYe?NZ| z|N9>JNPH%)%G2O+iGNpkM1%Zg$z%K1zu*&pd868-;%$7F8~pwJ2EXG6|K$dMKfl4> z&%aOfQl6zABO8|+{C)mm?NNNhgMU~Qe<}IokK&K|qxj`7CH|7~4=WTN@JHhfe$nH= zpXYJpi~P_(wB4zHrI%mn8=UmO9~#B4{POq5Px@gI<+JN6#znmF+x)iEOP-Bi>4^6T zj_OP4TCE|%zp41LmnNGaY6Q5Xki9h7{o&4PY`$l;#Q+m;-c*=9xyg%bFB^>yH-ts&CedJSqC;qZR z{H5|Mob+W%*H_H<9FJ;U+tg# zYXAP~e(fLp{xZV*$%EhE?~@O|p|_uZpVEuJqKo_<+-UwutyV(2!GIQl7G_)UIX(#Me zH|6iEZ(kwlL|-&s@cO5ZmS6GU_eRSf^(%dY%InEh{d%`J@EQaMe;NJ;2R`|Iru_J$ z@k;+E`TOL<7nKhOpYgl;!CL^Hs9*RB@kjB=A9DN+-~oTEDZlVLex)z%=ii5aQa^uh z`AOdZJd1eY6aB#R>?2(D=hSy>A%2tJiEmYWKX?%je8TUP$D{NO4m{}Xh4;ST;Pf(e#3Yzg~XPi;I6y zZ~Z%dgTF6+u)*KY9}*nl!xj7p`J&}-0A8WsIQRv>O!58FTjVS42T%06`uY3Uzw#S+ zidR1TA>b+hB*!0-+s`j}@;7*LO?u&Lz#q*YmA?iLba4(lTK=eipOfD44=jwrQ#k2O zd4!Mr_y-FAq<;Qh_{vB6eWX)-gX6D{`sI>8T7Kap{Q#ve6+9ns$?u_m+^qage5(^L zc#4nUkHVM#k*Htk@UJ7C%fYXB@uNR{;qUJk|D%5L4=D6dPKO@(Lyq6UKVT>RNz}J9 zz8es7^qc5cdQ0j1;@z1_@6h8SzL#Fo%fG;hFO}PBxeEyw{s#OF+_x#aBtAmCkw=A- zekXpxFU3{*eG2dAua_Tsoc3**`tRr8r+i9Jx>E8N%I)V5$xnKxf43H(zc=>t7m{D` ze-Iy7XUS6k_Gxachxz#DCM+$jCpyn2?8E3f0N>;iU_DEdX55^Y4W!OSU#}>l(u!S%QTL@FJg>Vn{Nfu&1 zp%nWhtFTY93Hv15u$|C=jS|~NHg~}{Jn$wNyi0@Q1RwmeE2?*qHnpAFwpHuGqzf862KTF@g7dqJ`*{4zZJaa1p5)(S$Hz)y-((oB zwdC{*vRUMA>gHTqq_~i8_LuU_{W_<9|BbN8zHaU3xvt}^-DaidoSSP|>&6xO)?OZV zg>9R+j|VGs_Fa2>Z4ud6a&yxsrrfdye}uhKY?H=%fR7y?(J&%j`8iV&Twa-1qw$&Ut5S|J03LTr{5D-Guw&Ak$TOW-$#e;@F+sga*I%zIFC z_vM}aBz0u#+@pEtlwb9tdc}WH=P#9(cfw-YI<`EZC3z?|Fb&EN65@R>3R zj=|OW%ZC+D-G+p#X+7_q1%r?D%QI{YcekB#T;#n0muNP5J6=(F0@yHfRYu0|RvY2& z*H(C%w9zVfm9uNQ7t4FBZq6NHN1nF^1eb8zzV?}Ie>Ck4+wIYEhCZ+!3H`=;lrw;; zkD!gGb_970pH@a5*-TyBqI`vW&D~#fX1eXvo0~tIlllkFxqT76Yaw}`U!Qj_dgo&P zzWn5a6}}|V-`2Bz)%^PWTllT_ZFJ9u<^bmf{{W3WxNSMd^Y`NZ@!&FV;9zCiao&3R z3VTZR?ESgtAI*2=9L@hi`@DR|5*{Kv$oFNV%B`<5B3_H{bYNzwTzp?enwFf^R?Ph4 z`Qrs6=fi?ce9xdA9?$tz-dBen0M_yRAC79l_BUr+$x{jr@#iMO7eY@PVNZ>UEOE_m z%KzSc-nzw|I-j$A#Pdc~{wnnE2Ff5Y#L@6vvc z&D)nA&fbFDLucdplrH5XjV&7;FXbzp9hV%9vu(|FyfiQxNBX}$blzjmEZQ(%{8(|> zuUSi#7g>Drum^m|>*1@|tKnWHHlaM6xAYo$FfzOOMxAw3dLyHf6FYnu^?j2G=Uzfz z`j@}ZJrmy&_msxD!@Hg-&dxV!e(N6eOnor3H{Ge%_Da?{7d2Y(Q{dwi_$nJlP3Yd0 zE!TfcJ)tv(=1YE+&&c4%)}u!LK62W2$BtpTb0`=qBPAQ94x~g=aH&*EVUN8y#~x_8M=h;Gri|%>9;*y4REko#Q?+ zu5P#TDPDBg^;P#n=v9yv~_GSCYF1QL9QLd zaISxlY%F|oRZ?2CeB6;Y`e{!nqdtnmhQDcr%H><-<}KxHgCD(s4Fq?pd7I1{aK{tD zV5Zt@)2zOCjNVTTg-pBu2CaK|57>ThT4&uj!+eL@P+QL%Up0RT|CDxw`woNm)XR@a zPZ*s=nfLPsS0Amsn@&F|I`_}C@H_fFgb;x3EEArF0ZzsoA; zzL$}EQ})Df#FY`ZR{5kW6)$+A1$+_8Gf4I%vr}Ay+B#~d_QIFFUZqKKMfG4Z^`blS z!vy2m$-!HF&zd(G4=G*I;ry?FWtp;f@ScX>eFuG?;rEj_`lRlZ-vS8h@k=b zZR_Bj0r3r($n_LE|DJTow%UegQKrUm^vCg?(KcezoO&r9eAsCmZrk4wtxCFuEM5VZDL&0J4szl+mqXi-?1{A>Udjj zyLB~Zpu39etZPJ9cC8gE-fexy9}HZhr$hth!6ODLXZIrP>qz%NozI|NLRzSG<#W?vvEvpNpUL7wW?{we@T+ zZT!RVcKo-Dig?rM3unzm=i#5K^5f1RT{`{Dq`AM%_t9>X;%^9)@Oy~+gnEPw9v9a-CpJ$J$x9et`#(y)gsj2aA67;KoPliXEd{4S>Vtjo6{P**x z_ToEL`<2Q@_-4VB9a7nx)I4icOciInU1r>__rId`*LLdN!=t7IEv2X4@9Q0lpL+K- z-f~*S8Dp31m)mEICzdj8Gw^!fwds8AHG`l0HqATD{SCqUcCqd)c|)d51u@mVdg1)G z&D__h2kz&B3y%0GT;b17!7lM{T=N8vx!$(y*em~*`CdcLKK#77B^!#&`#v{sLBBtw z6dRRa1#5Xvbh9f?Wn(URS=;G%w?^rbK6$2?YYfPDeKNoF`=V6;^iLvd4%oJ^ztDec zAdT_G9M&aLnWqimuC?b>$z>k@9f3h=zy99^Qgz0Mx(Y2>9W2BxT(bJgN09I9#0$#d zVf<|I4ul&wM(cFAgQj#_nWvdUa9{N5QzhK(SnVz%?3&XRv7RYkSYri~xbMhTiW8T0 zx?)I@6MmiEWp%={MUxXgPVdp4DjAXltlZNTypL$Z$rH^^`ib243Z7ci3oFCC@hbcs z)|GKD28Nwl1H6aacY^<0r)q#f9CO2=CeK>;w78e`O`3PycgDRE7{+_fcRsy(;s}*F z^o}(ywB5>8+9+JY@}e+_n<#i=d7q(fb^dPg$lnzh;y)iq72Q#q{oR2fhR^>V7%IBC ztIxZf*hKg`kaTJd{95C_)Bh!Pawd>0p6Sf9|35?*{8C)I(o;r-pHevdQh0}5uL@VY z)cMiu9oS%b#68`&-WkVsZr6KBMyJ$8@*Y&5sXBz#agtrWxvv%zMAv50{{(nzB_{ib z{f-&mgShh)q`p148Mt2DD{bh4xsB0r16Pe)5smPd-BZ2IV*k)H!r7R;^V9VwXa-SdAETJedw=^YR9}qjLik&7FVVzj_|#rAGZcKi=R88 z!pMn*{vF3paIeM9>&MSOr%!CY_UV(t<*To(7X1HG7S7Y2;0<;7za$Gj?qm5U)9!8x z4E2Xpmv(zKZS4lTZXLK8YB!Q6=m;vEqergnCs*GhY}V5iqr#%sF6)pabSG`t)>HoP zJM!|EfuRoEtNX!47xuzM2lnc-@7QoNHh?>%G?a646eeLeC@p&HCczZEDfDgX^ZJ(u ze_tCYvL=dt>7PBT)7uTb|KI8#E9Y)o|JdV=*QctzA+I~lc#d^1#`c!cJ9X$C`a=9M z{06~`Aa|WTxEZ)!+$(Y8us!fCi@8770-8`%8g9RE?^94E%Lc> zW02()xPz!e(`Knd(_YoLs|{n@e+c*eGj(?N>4&gSmqvY;DGuHIwCWpOMV$W`g~fXO z&jnIs&j!1R#G#uNSFSj8v%-Jw$cVz%*f-_8N^!^R~(pK1M{VxQP zP5N{08I{4{I;EHX6@2V1n7&OorGw3w2_0fmr{07nPjSf)zXU;oa962+n_th{t_Rr%qD=FfCNA`uNkQ#$uR zc8_THjMx1P*Se;3?t<(d*=qbQ*PTs4?t|=3yU#Zx!@_-0=cREQv^TaR7!s^II3Mkb zj1NxE&gX8_CUc(pYR>zPSn^&lg?Z^r>?<&rOB*H{R!&?z*%!KN#Php3UrjzwkTcf1 zIb#=$ndI9&c!V$gzp0yhM}+g{Bg9wjd7Tc%S*^(-^KH(i6K3`ib@tjCm}u|G4P5NF zQUAZ&{z3QJZtRb3H|CV>djHXO2j?0$E%k)zf^!SMar__KexC!+<5jroQn-D&7}Vph z-?{lRLmM>Na+G|D9Hm?$N5dUC8t%vu?~6O-T{&@b((~!e-6Rh)|9i`W;WceRGO#ju zPr%eoa>$bVC$d1jG|h&OmdmbN+y7##<-XeFv)r%S?w}3Ewd0pi=T05F?Qr({#Cy&h zoHyx^4ckB1ZRd~4kjp(p?$6gl%is}`1^szarbl+5vlQMmJFUU-4|4o3I{pO5zr^v6 zbo}>4QbHNZ-!waEB6YukvXpy93?A|PH^STjg(;nIH_i5pchZjYQ;lbW;hZcv{pEag zVmis^-ocM=Oz@aASIZAS3~ij>NFi>7CwZVLp#8s}`_|J|)~&1!j%wA}myDqA zv}~^WTUdLn^jnFMl`X|V*;`}%W$m-CL_9~{;f;c!)}VwA_UMOU$9iaD8Fpqm5;_y7 zXAeuV2rq2z@OAh)-D!M(e`QP1lhBe_o;}o~xLM5oD}P;C-#WI$XWmQIdx8nPU6JuO zmUU|nHf|rXg51wGGzc&A=1lC*M-<2VW)5w(Kc^>PY@1-eGLq08n1cp zs64#0$@&ZB;r#&N-dkCJMB&1x^E^?Q8O#3SA>ldLljJ#2nH-qE#*+kYeJAl9JW!bw zm|yAfjOwZ%i9a)YsOxL|0ns|2o{q3A{Nvzdmey?qd(rr#g&WT$Jo$da=3=Cr)He~<1!!L^0V-FPcJo!=N5zY5xPl7e`TGq0%{Lck9Ht*&< zQmuDHTUEX0M5J)N%#SxfU7SmDmGOIo-#qTF&iY_&y_Y-KM@82M57!3{9Otft>^#Un z&G`o|dm`%(Y?nzXJbt2lVo!&yY#&nFM-Wzz_6KTzYD%o?2DwhfB^io^E(R^JA1 zs<+NP=T_`7kFALf9jWoRB-ABFMtw;=6P9z{3i_`JT&_F8ChlG8=R1MRbIw_riuYmP zG#Z|B#u}$E?`L*cMtw~2*aL&C1oDi1xS&UO_!WQPc)%K4gIoz0apd!SGvDY>S&z$7 zoWarQ$k{L}0b9|Lv5#}90J~Gnv5_m^2Hi=2`k~?t{p;*trDv{e+0dsasTR;ES>F3S;;%I_^0u$@Vmx7 zYz+!wozDqVx2zNW-!*plb`!O<~=OaepXxKqTw0ER`J-9L0We(?U6iz zzBqWh#_~ktqHS1y!h?dPFz6c+ZI8%I=KtN^`@lz8U3ueoW)OymVL;SqBYA)zK}i@8 zC1@m*KS-iL#sn2DHVMfT}eNL+jMKn$xXS{su(8>71ST0>}A#f~~`}?jkJ!Xy_~-a@!_zJQ?T6m^@jE|$ z`=L`U-!twRR}0m8wO76A`hn*|<*`HYcqCS8U-8JHczMjJr!!7%9x1c^KT=i>&!JZH zM9Gghmf4HSPnMr7&F4$URq3Q_OvRl=CdChp9~uwm^5u-1G{E)ovRD#NGQt}69O*f7 z?J@HC0|?~H*B+xZ&Q0b>#fG8ZNj0G+h9}|^Cv~fzL~M8hsc|)&NUKb+>^NW zzgYfa!Hcd*S27o4)Y}$D(D-n`xfloX6WNv&`ES-eRY2*ve zD-&gU`z6~h+xVTH-`Nh?J!mqeNlDfrlm3!EtYRvRj+4)I#y+GJc+_G&&uw4Nh*a=TaoBzqB+zoU7e`BAi>ApO0Ugp4pU4mmYIPT~W_4 zjh;My7mO8*m7gp>Np&H4>ACDwq9I!1DF83c03?fKl5Csu%*RY?PljBUNl#a@>6--8 z<)2ELErVLi#`43-csg0E8_fWBKZCI{O4r@d@_50R=NZotx_XY>{Y-gcK1e5{Aio^r z?zP9jMgAId4ZDU(?kok59GiRc(w8rNdELp2;nLEn_)NZS3+6Yt$)7GXa!#cVTn3dt-O?uWner#+NJ_pQ_Gq-6?0>Mk z$c=405Fdh1e2Bfc^i zfT*1F#-aG3MCrtd^7Cl~$-u5K(vL+PGY|2H%k1^&RQl`kSz}swrg(wf78%P=v;IxD zB0g1qUEh-hClhvqeapwnGuGcJ*JwLcnls-S&&Hpz|H?|k>2ZnGLsXAydR^iyCsW+% zr_OjLdP+}QRvMi$$*}#Oe1=y|R2RC4hhrR1CxccR5iC^pjQ5Q1dvIT_9w5^gfpUh9vGKI-luw^dxpa?Eqe$Z}XHUf@wT` zsERc)T^Y+yc$n>Vdmbb|-1ipw@EGJVutN!HVX;$K=V1H_Zv|~5vVKk-qT3-!fH7PKPk}TJ zl||@$n+WZYL`EZ7xHPtI_}XYWj-IcLt{cXU02;$G>YqvHQ`X;BMUnsZJVU4MlP?EZ z#%Kor&uV|Cu!R3>4&%Yu=N~73hVoO^15S?Q_>}&~<9src1M4}t?(AzjGCkz5X=jn+x@io45l;Jttim$1kTc#^TBF)W;9zBTwh~*f}FR%gGcsYri!amvy&RGL*l^33Jr!2N98WtkOqv=(j! zu1~b6PLF!xu8i})v!7>+Czont>oLyEiaI%6D9wq_ik3s8bYWqBdH%j5JumMW3un|X z9bdXM57rWMV+-SDkw}@jACD!Rz9w)_JRJ|EImQgn4yMbCAYi5 zrtp7R^QGu=%JV1HoBWjc%crsaaOyuTe!Xtw^OfoF^Gcig+w}COdYh1FOVfG;r)WQ? z{Sy2z%Bikjoc5a*zr%jh;ukj~8)TZxv#mdz^`8#Ea~*x^{I=Dcbv8Xl+uo1}G;Pe# z_L}MO!!cs6Ve(qLoy|-;`TQx{`0Lc`AfDy%eAe@z=fUy^4~@Sw{(6+IcV0X+zCPpp zS&sXbZx8?4anWey#1S9=b;j|_*?#G4Vf^2zr!#KMOli~N&)~nNEvG8qslUzRjAb7` zo&M+Kvg1?m3nA6t=5fY^KWYB9t(M+qN&MJ#q~8Cq`JI&M z)g4^>84g~Y<}31l69+`d=KrL#S+AM%6Phc{Ud}+)bMiMHl8L_V@c!5785|s2zCQl? zcnnZq2V?0M5D@1Y^PJT8s$~sA_u8DR4-+SA9KuRuQb>#h)0}@C{HH$tIka%_r}w2P z+TX#S!GE&u-wR6V?)^Hw{>rfb(a!477*U(cF7x!xZwv5*7VUNC;&~17pVCr1x1mo7 z$YYXAONY@DUd(5{&EELb_>D~CAB1x}ao<%s=@j-if&f$J5=Yi4MRh-ObiGqy(zkDC zCT`ruF2$^d8l1dzd>x+YYT`R$IAh5qD_1`}h||BBxw*Odxp-y=GvkY%&(2z(docg4 zbuadew~S+m&v<@1*?uM^8D=WqnT~Rg%z_5_v30}LU)K%i<9W(irJf_M7oBvO;>jGz z(wsa`JfYOP``mo<6HiS4GcobR6Yu7eY}qr5O+@LMo=lt9j-`{7=Ey#Act0MdD;oto zG)utjfoppFw$^s+bo6K4Y145kwaBhxw%knB=eke7d|Q8!l%b$(x@G5Nf$3~YX|~ll zmZA8p$+nD4rA(2I=XUYrZq|@Z!h{Z4*|TOcf3^~)$kX~~r^%+kspy|g`n%HK*4>V! z8H=*{U+y7&O)-LGkifi{?B?S6?YUEU!DK5km%jTpEiJGW#6@yXr4=TZZ*#Gv47JQ` zn?(JyTXAy9oMM-6$I{Ve(#x)YcKtK?pIxdQJDu`Luk4)Zq}gdUFUK&}DF=r+V zO`U!!o|{Q88u@ThkJGWq+GS5k<4p%E$4)Q08HDf!P0z7rd2; zryT!prJtW;>M-3y(@$KPBc4gm6D3PZ-7}g~$W)ljl^)Zw>~fQ0={d}vHRUPHm}^+? zB5}){Zb#{TX(j=V^aA`ZQG~2fW}ga7b^hmIPj~*NpUFP-@}VQPJ)9iLandtQzZ`ba zef121=o9B=lkQvF|NW4GJez6{>*S~p@{s)z=-@JI}S8156=`& zG2=Nc>ao%mhpdK9`lT48vp1FHXr|=>AWUulqtnnkME?Bw`Ti4mrPPj zdI8RX(_JS2&kQGW7PyM23>V&8!l7EVs;z31s>X$P%tg&L%Mb`GQvn!$2Cj(E;a6Do zl}wmQcaC!7ItP-I=?*|%7@q*11fp_Jjc#s~r16za-YiI@D<_J2B$ZsMYkDA2-`V&z z&RjJc^vUuTszoVRGw!U+QK^rZM<9tl^o=*qNAZ?5DiLqINDf57rIMX9*Mls=7uf|i zhIU?kO_oP8i`JloEJtn#Sc_$nhh*u#rDOtwpM`x-lY$<9e3mCm$UDjnO-*pF*U z-*cl$;>5;=&aGxDmY7{0>E{CFj49-ywb)Z8wOg`&F8r_YIk3uHNKFo@{V0=PCEJCp z%%1N~76)H(_77?g($$jID3sN8@ahsggj)0w_j1K-a^N1no0X;wO9o>HKmpL`J;r6h;>im&9UveHYH+QG=gmfZy|#5SrC-%VYmv7azCH)}=c~eKVYE7$`dS9O3}0Uh zR35G(*r+mErK(g}G+EwE-NR-;QuaW7i*)oQF2ZJ@&m{++PNj5n(Og1&>4H~Xjx{4) zmxCsAV4ph#8oEw3P^)Dw8*8&u6_lWx><2XJkZo-1Sjy5qo?y}unr8yhifAR;swNtY zHbn!t7U6zna`5Wb;(9v2Qy&>%c{BsL(1Q4>DqUtk9f~H)Tdyh@8$Rwq$B6bA64? z$d)Fate;H>>qZwsI@dk5zBZS$O`UO@f@5|b#nSo}df^=9N4@=k=#kM>88&X($v`{D zj@fdITszOia@9O#Ngde_DTl0>8rU*hqV;lZMoUg^52_oDY_uvO3!}Z|N|tvJ`Bs#! zMerp%elVE~{;lPRFNp7eXJHDREsv!d*{SjlIV91XW3JS`oQW=wQf{(-RZ`c<`WY)E z+k~)Wf%!51f=gk(cLnUt+XQ^_PW-`QD!S zDVExQ1CU^8S}K*s9~#lgx0Ay{oo?0!HcXZ0h5n0ClXn*;h7CX0bF%$S{$xlqr%RP< zdseCIQV0SG55`ZRX&SQo4z)dn&PHudOgHY@qrjzVNkZNdm3S?@El6S{4>PsaW3vCv z#0rwzpI4E#FH9073903hM)r7Q*O%sVs;jvs%gfVAc}f14I{p#KOigEYc(yON)0WGl zU{JLw9sxCT;w!l{ySC}dWv2hYD%yD^M5RQgt}iptird)4wp)rYpsD_1ESpN1u01CA zC#CfID&dWRR51yh{5gQRnq*8~uMyc~f0-?9ln~;Gn7R_2+&^qW%IEQjM&wQOI@9^)$H z>9LW<$C+3m&P-t3XB^d(Xes7|jgylTDVIlYR_Q+p5*^`vH~Cr_a9h*V^Ow@Zcu)Ij zI$xlR&MuMz?a$2~o%iQnMduNz=QPRkGM_V;U3@i8A1CW)kK@VmQuVXxvg>ElCCf|I z&!!{&wyF+X)nb?Q=c2|Yv>q|%Youkmb3!`Pql$+}5EvO!R?vt*4Q{`nk4=dG@%HZ!2lBc}UbECOw{e?<2beYfp zCd*5I{+CRb`TQ@L&g_OKpZ_J(QLB;6$>+eybYwqnyUG2-Szok$lt!w_?Uo`B_Tw|z z?DB+WYW*M&K8jE3d17+8sr|$DtzK2J!MNv%TtgjTPMaC(;m zE!{{!QM-iqME>4OWtw?vPHbO+%k@L4H@rq^ZP*V5XHG*ghb2(`+zzqIM5 z+V>cFY$4lIQ`CbEsI?R{ufPnLY2U39bW`bPPH3mn&(KY!pBdYx(vL^MsqJUvO{Jfq zn@T@3UQVT-p_|HnO7Gfe9+_%iOI~k!K)Uud;}AnWSxz^vvPT$yvG-ck51jKB(JjQ- zL}!xKxN7tr6}qRg2)p6rFgHpg1>b{PhIM6`?jzM|V>FqL=FCFu@22)Y<1g9uv!!1O z>ukVD!%a9hS)Ap3=vq}Boe?c({i4^}0%RVfdSqXhFpKfO%=+;DVq)`vJ?F znvU%;HJzzB(`O!Ecuv&vQ~>i?w)1-$t;mAhf773Haea-CBtxe^+v6F<_^ioZiy7^0 zXw%!HU+Q^N1T(iEbK5HAkNTsl5F^~Lcf+PNq9Ix*%XhE6`hJ4LeJsIQfeU_lp*xAJOS~K`MdZL}xC#`;du_$h}xSF2=~b z80$4}lu}Z|A>1iVf2C3qZX~hPbQGM%UT4;lG{&Zea@?yw6n$Uxj_7-%w?;SO`wn1f z-wj~1PRu;dbsnKEa-D(EqXPq~1_6u9aJ0!60}`pJF-U*V3ic}%kH(^Lm4u902qq`o z-#--gsiuKANeeawAwc;_>`6Z2iVfgWr2)S;j6yY;2#6x!*EIs+KtQSf{$S8j4$)DQ z69yTcrLGB+XjYWuC$uj0`FuDfiwz8*oB#rjni%ob63kD-T=qd)` zDsVZdwxgys(1A1{b!ytSk*UNw$A|i1D&_$Zk#SBb)PZh9Q2eLSVvM4DS4B9zB$Ab9NDOPxBFkCbgwg{^k3i>Q7*fzjfFmKc0fi{i! ztbm5}1sW)6Sw2Dt`Y44ErL3WFc*xRGAQoCj;tc$LpCpVWrNaUIl;HJhS+cF*C~Qfe9m*ajio?}bKD76QcY^(M%I17o1mWO2AlA}8D*jrSXAVKp_!9w$ zMG`!$7wZO6ikK>p0v3LpR|hC!SBR30y|kjz3MzbfXlNj6motV!;ROg#41fJ`jX+TZ zA*19(&KT;0EG`NNd<0%Xfp`v^DuCV=9flVmuo21geLlDhh5muT;lTmXfFvQX=>C54 zPs!;Y85tTne3%stQ?e-sx{*3jEsb-iXCqKfLNs&>CoHP_EA-JkEKF(&1b*ts89Ht> zpk5VBAi9sSfHCa`#t-0?2wc->RJ*9pOD$CD)uB`uss||@b9|jd9PQ>vK{V`*^hb0O zDv2sd`yeHP1kQor2yz%9p8he(@z(?bG3cWO5D$@gsj?!CEs7r6lxQC;O!BmZFnH69;SX%1F`jc|P~`y~3^ZuM zsN7`FGNhY~{;UqoXi!IYB@EH5n^sgNy{3UMsw^`TBQpP(9G^wyXfm097?Jsh5ln|( z=q5aYFcm5}JPb)rjo;4k*OYn_WPYB+nM~})h)hN%N85lAnu8O%$%LF}G(_M)@WU~9 z0wF;s;!`|~jd6~R;Hf1WAs+1_s2V)Nfp~qCBEby68ub;KWP(n_;Za&Q@=)$2D91*W zugHqTt)|COHHDu+vje6rI6o!So2Z3gIJ-?%-=tDB3 zF(PA?APIw@RH_`vbtMcBBf=vH^Jv8I1T056j0le)%%c&*qnx@iV#ZOO1G+Gz>Kwy^ z$vDZy;Pt4sCR1x_wry)`t2s(MDl#}29~>M!hNzy&lj>vhARBCL%mXA?6dBZh;PhUt zb%ICd*t(Hs34_?KthG+?pu=Mj=pUhSET;e%(XJ0XBnh!w4zZe=6FeS4gs;>W){8*h zSaz3zqBg>!MK{VxD9YtXj&@7RBO?Zh4AX)^P_9f8kf!-flh_@@ZXaU9K#b9ZhG`uH zV+4)WWMY7*!RSzw5)Pa=(N=^&aURKKfTV;(j|>b4YJ&doXoMz2jacCkJz9!~j}bXk z)|C-N6$J-_W>grHz;sC0l_!i>twz8YmOevcWRNsr!s~PSDBVT3?RkYiAAvX8ykMU{ zf8l&Oe!?n5FW?t1@Ge-aaUMfc@%1$SJM!}vFTOl~1|{$~J%2&o0+y#rt92OHDxk7@ zACc>u71}{elGxXXxr0dnW3euwSx$=0ihmFV=VdB^Qdl z#lBZxzL@RJ{Gb+k&d-IutUuS^wja&erOL)(Uu-CC9M#2$YvWo8=NFlRg5m}eueK=) z3lA0|;EU6IrCWpkyaiiJr9lg~7SVpF@P=y6M^C^O`>*bQpqp__?;MeDy?Mgg%}k0E zLx2cF=G$6&pmeK3)?HyR)0B9riZx7%G=#`H7hEGVo#2!G=CR|ny-2ORljmB1?zg#Mu0EgCR? z8D%;0DZbvp4=OzY=r3jwTr5QErNo|26F^gk0gyMtVRX_TxM^S1Z%ciB{icA?kIFwt z`c!gZ2N0uAMW0UduZQMrl+n-p<3|D z%Icb6xTf0Zr$y73lvi1~lbREO`73wqsIR}_hU>2voa(28l&|Zjg&6%f`-ZX^Zc5Sl zLAyMvf0?6w$Q3zAc_QA_@4ovm-k}#6ht=7)-@Y@UAGsbmq3B2SAVy$$+FzXhXGswK z&5qIdUm2Tg#tg~#6-h^AanA1vAmkm+G#xKS7en6&>1^{ez1vMHCge-~(Z7|SsxR$L|L=j(SO@B&L=O*Ws}_3GT}^+bQhxU_ z3KZk8eFrIMFwze}>_e$K{{RFF$u-v_pE{x79jlY|FM|g-_aXEdD)*%EBPYzS6D4xykG&(=R7~p@m(nE1J1YSBc4x~pZv+muW>!UGryhB{Dkwq)n0G# ze3g&+I$!HUTLe6ikNKbVlxn3I`r52*y|DARNCtU#_jpv z-#P%=MI;*jp>_`r4YB+V$MO zxrrU)JvTWTbv>7dEqwBLX-sPJQETUXp$NzLpWxTHX%EN*uA9X0lgl~F*DmPb7nd~l zKno}H!zGgV33rySaYy;U?eg;q^OF1>`k{V)-6CB7>ng9m;fDJ99hJ{8UXBs(AdPx; zjC(OqCYO&2Y5|;2-`7=c={Ed?ub*9x2A~+}n!NtOjO-|%^R>R(A4GRb&^XFU?thS( ztbbl%HHN(E>eg*ko@q=6e?kGuhjS+3lH_Qg17Lj(AG01*?pZwl8-0@cJ1Uce8)pE& zrZwH@!#*4_g^a3oAPe}nYAA5bos)Ob)R23E2tm;7ZqhQ*f=U1qQ*(Tqy z-Y^N8nDba7A;t@b)oD(HSSwcZ{%xVTCWaj zKKi2OD0ASm=NHx#&Yzvgr(e#~K~g9aB#C^qIraZ>lW_3%+i%%&%k8(@C72w7Cjz5p z(c?@$8$WA-v=%6zn25*K`GXp|?`ldV;{1zz+4BpVrpRy0o_|?niu~vl`9oRrU9b7G z=f5$WJ^!^p_Wals{BP!E=YMkw{oX8^f`PG$!S^3q~C$i_S4Ns9j zmOcO4KNi=YMeu`+cb?JO7ts z+4F~{$p6X|`ae;cUH%hO*#AjycK#>B+4Fzx&z^r`3j6%_Xm!mN`JP-a!&iBn_T(z&d%@7nkbFbO`JPwj zaQZ88fjo|Q<_LV{q@3O=g4^T<2+7ZR>W`#)4N}cFrMG0 zq5J7pf!jF!6_K;7pYa??&j~Uc zz_`FaGJN%`3>P#p%;WOiFGxMk6aGBGmkFE~VETE54Cjmp91?hx;knxwE@S!bqY;g} zj~cv2@I0owK;&Q0FZclGf9)9KrT@VA)1{2Ra-89-&v5$DLBWR^mWtiy`#Aq;*3bQP zROtOow``l>it!ww|N03||N4l)qXG{L6ge-lKJFh|I^C1QxF@GZ=pvFX*;r0m&CRUoX|TE2bF!CZM7Fg`A-V2f+7dWP&CvTYXAC)oudY#)W>1w#xMvcB%GonX4Jjd1$1puie|QO^Ge>*fB4@O>oA=?@M{ zzM&fsoXc~6WJvI10*3{T3XBOnA#jZ0gI?_cYXoi+7#3*gM+F}c zC~`lh1V75~V}5}_ftEli?_*)cNBS8)Y~&0G-C==JzmFXgd_>@=z?i@|!-qwWhkb(k z1xoo3pAh`GK#}*b$bVSMdw4+dqXNSMn*;_01{gk~1R7lEAL*C$L4ijFO1Y1S9v?US zCpiD(c>?_cMefLe;1Pj`1)B6W!M6#N@;@%+e|$*Nk1-rE{G*INDtbIxB)F9OXi)I5 zKq>E0k^88~eN^N=dQ|9Q3_sx$m?yAQU{GL_z_7ppfg*oI;3uS<5rLmL%5)Z36DQ_eu_z8h=fnyAx z6Fr{uGXBM|K#}()(c{ZSoc`FLz{3KE7=Bskhw>!-sK8?khb)02XGr+I;^*|QNV#7z z=_2n*!Jiysy041-uSmVV+9v4%fkOXP;s5FhPJe8e;ZsF|Oa7xZ8u!eJ3uL*T^90WK za{75(56}ETjjOraIep$64A*{!VNO58`Nsuv{XFxB7=KmvY4dnJ>6srCx={_ydexI_ zXQbVdwCXYW4^fyg#K-Y%OU~~Fr2T7 zw%ojF({enPU$JQ`?ecHla^se|TemDSJN{sGRby36MMFbvgH9qmSi4yf++0_^!944y z=_;yfHV7l(HNgr^S5+6RudCt=O0TV}77YJD0eov+wT2B_D=IgM07~C-OWmf5t+hId z@QUi{##<^j)zb5&TF#b+t@V!b>{2+ta#LN^jg4D3(Sv2W9K;B2-oW|?8*b%tZ)@1P zVRPf=iXhW9)Lp-|F<5u&1_&qms``qCn#N%L2FV9M6N}sp8&L9QR)pxc+`{r3Hf*SF z+)!U%Cvs}>1P|p`*4I^3S5-7@ZLHtWutA$$r*Ep*(g+)Dt*zVAs4FS*VO7+lzGBP9 z4crKlzU7w2h7DCj-k|w|8|tsGtKVF)rD}u58@OJzTduFuczt!fhP7L^*4J*lSzDU) zY1mrJ{8hD$wOgt;(1SaaUcUhbtk{~MtKCw&wYFj_Rfp*-wl-F6*rZ*6=!1l_uQYC| z+XyNLUGU~4JV=d*Kzy5Ox7^5>(AVACczs2!mizwMZ|?f`uCINttn;1jFV_A0H8pIUzT)dyah_0ij0xBJ7ty6A$HzdQcF za&KF=>&nY^O$?vA>cOXP_=~n}7tH(RoRafe|MQ_QZ~SJ>rO*CX-Qy(xooAl&QW^I@ z|K)3`obgA-uAs6SFTMJ0D(|T`@B0ardBysU0xI`U6@Pyxm3{ufMf-2r$dAbd8&>No zG;FA^t=QDKs$|{Oet$`6NoQAQh%z?TR|IQns~U<{p|c?f-Re}jn>K9LhPv^V&HSgS zl?wH?tPGW|_6w@<_Fb*TUE%J~uJ$f|wh);_N9j9Sdv+K1wBMx*r}Dy~7OS?}+ORj& z+3UYj)9vW$>Mh>c+}=^VuerUKB~w~gcWbCy3fj@$)lP@cU2)>KsLW97HC89$%@!5eyrUyzwYK-% znUli>Z>}USQwq=uR@85W=b=~F14O8kSXvc$IKpgdb6*eSw|C>aJG8rNZ^-J}*BR}Brr8m)Sdt;A?d<7o?&xUlg-xxloy=`5?J@Zq8+cr+uH90n2RJEL<2OT5 zNz`~lRYR@dRl%Ee3}Z)K{cSd+c-w8`Z^jxlWKwYRq1q7ief!BUcb$7YQ4}&HrKHo41Qx} zwI5w9|#sPN#BoVsS@Tv)x^F`8}cTmafj?a94M)+PkZ{yK8sP%AQ@#R6xm&b{;BL zhB~^t_7{g++S|H%(Dzriws&^fs6s~Z4%Bm(RCKAXol+~7Ms$@{F6{|W^m2`X|MGwz zpQRBYSlQa$zBdFMf_v`Nq?)p#rmA-3QnVwQv|?)oDrD6(cefT-g9=UBXDw}MuiW1o z>fvEhRo_y*vZ~s8ZwgasEE55WxD-DsU`BNFh!oN|HCPqHWuO>^AJ@uamo|H~Z2pv7`7W$Qi zCeS_>>Io;|n?t*r>nku(G*mQLMd*c;yWHATEgZYUy-D;wdI27S5C3&T5b7aGxoACU zwRg7nwm0{NS}kqPrQsaa5NfWht!uFMHFx&*SiC~9h`7Xz{Ayx+l-m=1H`Kj1)QWDn zyQ_PDaj3J^@LywXZfI z_!9GURaaj}tDdd9L(S5dRn^oridrz7SxfzEBFnjocF(E}(gH3?J~&Lt^`Sj|?cG$j zW=zyOP#3GW%W7`vZQl!rv3lD=7N%;c9OUE#;SD|3hK4F@XIHnjp+%#!aT`4j_jEVz z3^n)mb%z>Zsow6c4jvDAY~>-gxVf{Xt;;NL(&Xz=RYto+dn^B%mHt&LSNm73(PmSP z)thS@5pC#g?(Vhf^faUgi-wkF8exr}6k)pPp|u1C39^uJ+naAjA6x2Q9dUk&4U#2d zNDLIuqWbss>?rPS-yOobZ&!0KFX)WpQ9fB&Pigq->1ozOdvf}nAzI^6NKUuchYg{Q zP)je{pVxoa=#IOzr36*Pd(L`GsNt-tuFjq9yZXBILJCT3r3UTB!V6tBh~*U;aksU( ztF;g7z9KLzx7vH)3T^Pvea+oi3-a0$j^EpcoZZ~pOLA&^u@dOC+Cm*+3#M(~xnKKA zduMNGS9g2wep<8j>_;)Xt)8x(y(CM!2?)qN*9UQ1VZH|o-{pS&!G6m023 zN@uTyB_MndlEe+cd5sv-vNp)dlkH?te{!rqt>(^FcH@xd(0FUeIJS&3^#Aj9v@Y#w zYY(H+J=Ts;2vu#qGt|iirRJ03P8!Rqu=+4OYHJW5uT-@>Tk#x}v$a{*Rxg87vh9*F zN$W~TEn$x>UA>`etgT%zJ%pnuvIo{+*3Q08^wO@*<_?&9MZ!dSQJq*$!v+aE=uVtd zu@{SeDnr(6XzlKhu`2A*T4F3|M6&(%B0XU~JIe}}SQrv$H-phJdCd<0(6uE2R!@ml z(b3VhFDn)3nn9N``e^=8iL|&~HnqG3f3NBYHFw)~*ZStv?u3(BEp5%6yF%n~Snajz z`KjA#Cx;?u#<+zEum=Ml+!`HX$9`*fJL+&}XoZFSoQ!k5T{&iCgl{H#0Q(*Jb8Aq7DEXv)qI3dgX^TcDN3Nli_y z=3UM0m_4atbyy}~)mG7IVfl*zxT{5X79`PPJV&iE=73^EzZy8(KuZl-!K!*|M|0<$ z7$Yd;Z0*{$3(k<5OSaG^pdN~a^bWW@9Hx~Z|`mE>cbGCRU=g@EbAJ3+Ue1w8=RY!gq~G!c~S*uCf2HTZ7S;|FN6Ly z@Yr6AEM(m7=CHM7X-D4*tGSm<)e*Tyf3L7=YwKy_(GfwkuHI^HZS7{92}FaXE!td( zuN@t*A?=jI9nI){Dko7U&qO#+S=x$PceP+RE?U~rYW7GL;;@U^4Ru7Uiu#RumxL%* zi&6p-*RUFtueVD~s`pDA)f=V`G&({K9pK2Jk6z>IGFL#NBwFGiBHz{*J7Q>x{)+;L5F^jirteZRAcZWMd=u3J^!6tEv zO2g7zWr`?WPf5D!I*D9uB5Nt4>lf$>Xw8>Uu%I(7#IVhUIU@;eu$ibr6?UNy!(ChZ zcB9QHK*Gj)Ow_d9L7|S1av~I$=2lf1=o{+&lZ2#`QCo47rYn)cG{k%18gA9erWjQp zEb3mp+)hilQ9Tyjz50kpMjWeoC)Em7q(-S+b+w+22o^#*CD%0cJj{AM@J+{L@wJBwuj zCHcmG=!{3x&={LoW3{fJCBFlw+-|+p#K4DzN2nPSSzovn^EOOSw2rVY5!Wbtp zvWE3g(ThavJc{UeXgQjAZ@XS)uew@hisCaGaxCn0mZQk<{_gf&ZM_yY0&9y``&X~A zYC;{D=&M6Go$9vAS~U#p+8rrr4XxLUAhQ#|iZ+BpQq;2~=Zq>>OjSk~$C!_~9&@v0 z;j|acBQ2M9hx~YX~Tn&y|JqcLiG_uVl2VHN&aoLVEec4ZtmXCTcdDu zZ<`i#{jGFZTe7qje^gWl#?nq|3%%tPvJ@iY?g=5fCR)`SL;H7h(JnqI4_U@Aylls5 zLQh|q4gg^fQUIGBy&ongg@@=Qt%2;bc6Rl3Vr7VNysx*5GHA`SslBr=g4I`dXQ;#4 zhtZ`?uUhqiqh7Sq_(2F`7E9{`0kA&Aee97U%@ zF}3T{3fk539y!6fVO#Ci6zU{&Lj;4h9+%PNe0RjO9Jiya(XcLSsI(GZO1swmAynV) z&}e1tAG#8HLb-a4o(jx_zDNs9xWhHre$o0vDr>E`wBOv^d1og!c_tbACZ5}IVCLMm zs9IviCWGfLoJm?Yte{>{g`=QQ$MSL#i5}y0Q0W%UiIKq^IwcknDFr3gPjZka z2N?D`mfV0kmG%T@QG6nXev9J|GdpSvVK~`^-RGv->oKJ5YHy)gl{Q-|EZm@=13B!r z{gF~X?la=tMdXt-ik`|`dDWFUIQq1RoVJD9uK1c5|0f+K7!Vx)-ruAq{zU1BUbb|w zZs$%y)b-7{y#lxuzD0PgKJx8I+<0tg>+5YrLs1@uTbsK(VFp#-$4S_mTXl#w)KsjZ ze8AOL;pZv=uPnvt2=J;^SWh-=zOtAyC|yU07(wHj(t&FZ#&@-}Tw@h&timE;)s-cy zOIBg(UVWv1?dnpis2)AB2HUc#?k;S(IlFk(atrrJ`g+?tdag+-#tv*5v_#ySX%4ryH0smGMl8Ym!aALAVm696VMETHp-{LHt4x%DVtwc4@&qB}bp@7bpzZnc?uP%^E0&GDc~Z|_3J z20Tx2n>=SBiaOIbG;B@S!;xN9x8?d;en^1IWqUdD8}tp#$?5bILV})`ztCP+I;|Xf z>H_ymHr&$K-qY9_>ZRj9v6h`Ka@dFt`X1a2M=!MLZ@+Khb~?=YQb6t_|U?XA4(- z@YyYIeB*(e=iKuTFHJoCTKBVe^#0-QzwC;>^4H_nUij!=fBNN_Utapd`B#1C({K0w zxc#z6-uQI;cRu^}4L|+;vl~BDTDSD|x!?KB4?g_BOW!P<^Z6I{ef3DF__r&%Zo9(W zcSG;}Pjr6ijSp-;`jwaezT!_m+xwsWzxcqshHoBTe^dQiJ70ZrXw?sP7eBq)chs|N zjs4^W~*8pKrM-=DDwH!Sdz1a&kMv z%ljg|Ua|Y+?ccln-x^BKJO48u|C?7sIXzoH{PmVs_P#&o z+hzN{F?8>DpDWq;Z(n=!W8Eu0xZu94uKmLQIPv*SZ+lvYF4=kGGnIbVcW?Y~cy#O& zAN^s+O^?mo`mFyaA3JgJ&wpQ^_w!HAEWA1N72h9oulnGvd#uZS?;i}W{`OCfUHtfW zEvPRTe_+)TG@2}NMyn1<4<-!@I$xv zlGb&<8+dl&zm~KtEP6cH@vpDk_xHbj_CFu{U*Gt_{tJGvC-R5ayBn@}e%bmL|K+mg zBR~1ju^%oP{_d=Q`Ncgy|55B;7ykP_b%);S{7GbHeAg4*7j^wzPRl*t|H8=OFU>1I zJmcB_Jnw7o*>mny=jU&HPth;;{ri#`_uRkw`6urV{IKxhvd=!7bHQ`ZK2vq+uJ0Z3 zowsSz_kZ^6Kd!I*)@_HDA2}I1czNSLc0GB`&;RRp9n}{7FOeUS50U?n?~vb+&yc^6uaKXRkC1htkfll$8h^L-_DRbu0pf%B4BPU~9|0b7;3t$?P-x=| zih#E|@HXHM{T4vK1wV7-A6M#vZCRb zybDp@g^uzrM0po}&z5)Lh*B3h_%8zgMLs+KqCDWG4m<$-sBNE%j^PdcJ{!*ieO?>r zg(WWx{CjqN@R zzqAI6&9Lo{mqDM)4%qpZMS(l?zibHjR~`A#x2Vvz7rimNXw2);^@Ba>ror-{*bntx zz70FXxHbuA>hXycnsBW^tbhSz{hNVE=Mut4*Qfx zfDhUFmmkG&{5`w;zz9w_7TEa}kXPxm^DBW@S+@MDBCH(qZM@pT6LXerj}6G*FlM(O zOrkbA{B0xhH*T}*v#|;Lr&eh%lvUG)9n*GOel7AhJ>bO;IYSWqZ_@yt7&vU}w|Njd z)u>Isr62ekc73*-z!S7yp@)A5efXI6LjMnf|E34*{F@-ZJ}B*p{Q7P9IP6&;!47K% zDZ`-w(FVU=pN3N4#~k^?*a;4beNexxLwEww(O+&x+RZ_m|K@GL9rn8g#oR*uM?~Hd zQ)*kG_^*X{5k3z7ZQ#Gn(Vn+K{%wba8M1C0RO zXM0qs_pPwo=Y4*q8VkkVpl?L^jl;J5#u4BrZT=>d+4QsnKZYl~itP4jhP>vO13#fu zi^IQKEa1leXpfeNQmqT@_HWGte%NlW)J zfB!Ick`Dj8vkACkJiQb0?tH^Hva+Wf6p3w{J5tS_;$Ozdzygvlkyzyfxh=R z{O_I-;BPqSPvG6n5xe|@QQ*UNc?Us%=n=cTLnuEQu-hwI1ANe?j}8HkJMb~3?%ibD z>)s&VH663%-G}n~W468f2|wXA>MQzfs1IBA`1au<;Ewu!xJjvpl-*w+0_(sETmFDw zsgJ%O?TzvAqoYcFY)sk{?fo!HdiZ`@--r8wJN)-y(0}|5oBrb`lzMd39=>j!N8zaCZU=~CN2o(=$iMEEg2JbhTHZxu>;7UD%p{jDW9+V^h>9~Jq8A6M${ zs_pXrt_Jw;?E3v3%KuKQtiMYTZ&T{KgSNkacSxy!FzdZFh=czh-VlDmPbl@hV?q!7 zd&5e7f567S4}E`N);D>GL;efKf142ZD)nNV>+3>&UL3=3l6l2{K|ktK>L+HthClp- zaL4@ilWo8q^Tkh~&rcoum7hY!PtAA?`~4JU{><1HI3<2D7?{ioA9qj zyh*9w4%z&_J*w2dIOh9*1^rtK#2>zZIO_BJZ8rVy!T;ZHNIu%{zfu2jhkuTjDwk_C z;ZH8taplVWqu`ezK87Ei*_7~4*W4iRm;*n7$CV>C?u#ndJfDrv%Tq4AiI?}w3lR6> zWA{JT{5IhBdK2$u18$EuuKAdY|P^w&uYNS70f;j54xJ=sbLc{~gwfzy{--P&Kd`9i^wjWonrVgnO_?yDY zwWB)Go~|7=z{58EjtFpjeeT);{aOy#^es`~qlxjs)dKl@&G?#!_zC5@t6KVBKH`x7 zNz*>13h$9qu92UKzN--j|8tg<5B}$h@Nu-yb13imuiEx}9`>9UuIG;_*Gr~9 zqJA&6;nQK~zl8E$3On!!@W<`?zBB~fVXxS*a=lh$)4%2iUh2SM?>COw_#2>q)9#=cHLRs`C83^V|nF z-0%K?htu#nYb-*U?iV6w=F@5DsJsU>-9)a%yzWg5^*7~zmGgZ;$v1T%6k~yUfy;@F zalWfsL)WKJ?=O@|zsNxx?J#84DZpQX9gi2)FcXY%9CrT28XF%1{}ZJ){tNK`>gfay zzH)lcu)AlNVQ-Y7{Qs@HI|bi6$oYGPes4_Zn*<8JC(8JqfIubC64)egP~fn@7{l(Q zgF#chv+)0S7C^^68~$IifVRE-KWC#~l$gM%N>T2ocSyet4l-U8)zEdKDJt{~>}GVN z>v7i3Nn+5*f8u-0hfnF`JZH*DM}E|qktRMdHtbBzR=lR07?mNLxx7y1bnz7WS?Oq; zX%nMSCpx8knIH_$Y_|JT{9Xk2Q_>Dk@p~EEPaTzfX{V?7eGKlWj!Sxs1Wk-_>l)oB zM#EbE#HgjADbwgWF?uiOPsBC+bAGX&|1S0WqkkP916gSvR!tP#G|15ztXLvFV`PTp zbf-W<=SZ4cpo+VS*dUV99I#B5fs)`eIQ!M<(&G?U3ph{28EH0Txi)TMCf&e*&Ulw{ zsNLEAulEZa6L{PdJRKN^nM96(VZnpbk!N_~z9y0PT7>1jc0%BYp_vYh`^K1<}rVj?#v&_5k{h9~X|7`fY6UTj3*kfE6l zjQa*f?yE9B#R4MNnvOif6UR1}<-A%W@R-2EhGsf2?z>myzA`NG`~njLz;xuE1QW}7 zrBvXM!2apTGdyw2$oaf7bv;+!M+_FUO%Y!1%$MEI& zyOBHbr;Orl?zy1B0&?Bw9 zR6Y1y*rAC#N_+!nOpgrmQuU~HsGy_nDEY_zXHbu{@>2D1p0oeorbmuaAJFzV6a5zU zO(*YE>;b;J&#)eo+ebwl?giXKozJATL#q4E^P=^uY0p z`R{)GU_Bs3-LAjp}=mi4)L|MlEKuS3dzxFh``?One6u8Gmi) znTWmv9BpEN>02VK-+4<+dMY$@nbJ+Z$gxuC3~uNQZlFomaD3F9kGv!2Eq|2rfp^9X z!*n41e<7a-ykiNJ^MQB5(~)O*#{bEjkNiQ-Ti)@q{6Cm=q#->mIQ~yj(f1E>-tvd2 z$Za|;K`F%J|1>Oe-1x5rrS+s9K#PYWIYiCg5xBP=g|Lg2`02}&WRM%QvYZuSF@ zoAvg%+fqnR3#I=nm3kW(7Cd-bg3c13wZK^moVCDN3!JsUSqq%Cz`L-(?BRk6I_ErN zVM2#h+2ql>O@i5GZk15Up8_4o)1l7_5&(nsq^q((b?EeFHh@{Gcy|# zt&b%n4D)Bw!#ww5%1eT@{+ICQ)+1qWQ=k*l{zk%|TMtuCS}5;_p}d41+bnuM=-jM+ zl~!1$ME29H4oCY_35ou~=L2g?SDF_UYJ#A}bjjxfZUjo-*ZrA6f>1tA5W)Dv-!ZBT zBot-2P5>tAuHT76InsI+0gEtauoy97h4*yn=_NcA-sSU4kkCY8-mRR8VY45cE&IUP zynpq~epma~32ZdW>Dz8=a?($XHW|6wME;1t zAt&AG#_73BmUGUi$O{OxPFI$bo}S|rxitch2|Nrs*w?2fMo-@)6QcozSx$O-Zk6SDj*2`>pp)#h&%eVPecDa+TP1nfRHa`DxlAaUSP! z4TxQh{;_EbJ|{R#YCM|8Ka|D`&e zJoA57$V;>z^gz3?9-Zf$A^-6Dvi{$i`9H8EJ$^>dC*7S+?dhelJreayCxrGN5)yQt zQPQK=q`!N}dSsPj{!b1>Mh`diK)dksILH6%jI~SFb42rhdk#I|r=-Vy>XT4ybHy3c z~UmJ7ftHqlrwT z2mFIN?O#TzUB3U@Gh~kmyn!N1aQyG9(L=fQ^Ry3Wu3gK|kRD!@eZH0dH$|ZdJ=#19 z&+4J;o~gj?l2sa=zez~w5e)G2P$uJDL#;=a1rG{voNXoaP~gitITGLK0IBDpFAB`; z5HUvYLZtuiRjmROziUG{g+6(|yyMqrw1BysJ?Xog&MV#BgADrw_VB*h-D^pDfZ<+) zMQqd3LeQIRR2`Y=zdnA32 zFMay*yySG6PqZBLbC-+q%C#MOEKc7uFEyQLC?u!%L5^<$zVLj#SL;-+<@7-gr4xN> zI+eTUe3q5aKg#7U_ot)}LJmFCcM)VcCObXO>D{>dGQ;mkACvTeI?o%h)4wM2x|`H| zpXErmyVNqvnT~dqP!w>;|C*-JIm@E~f?VF$G>uL_#jgp36w+P5cj9Ar*c5`Z=vfP# zwSa8_H{FZGORRKAS@}`_qL4h^?u}wR1Y6ZdInVUpu*E{A_;#xzdNji2Lb*YODG_B; z3~9KdO0oHrpksvq9uO4i`=)LkGrW@ab@x*D{P#?B{Ks5xol4O^Rg-d_XNMW~G?{$C z1B}l=;ing}ZtPA$)cL1CbC%@)J`1ql>@$kZVEpMgC3H=U|2yN~H2LR9{s~E#Dfp=1 zW}$B8u5%?lk6=^EoCZ9}Pl3xkIub#Y!a@d#?+X$!j(E8IyP8tc&o~-e8C&^r^|*?i zhb!kx3Hh$~=qv7C*`tW zo3-#BkDF1|or*mvR07hZ6ox~To4+KXmir1HA*>hk91sf)uG2QT(rtS)))C3j!) zo=f8Ix#KSZdMEMb|Hy zxkxSEwRq#=S&P+@wk0)7yh~K!`wMR<%qdh$?_7H0(sP%p%Q`OGblIHC)Us=rU8B^p zc+s+=#dsHee0kIIgLvR`D-sv!?r5^#T zRkiEx2fU&9hT;d+4e=Y*jca;i(~7v20;v`N#^&AaEkN-LV)(7c zlD*B{tFA67S=rOwvhvOytr!ZfT)QTF_Nr{ztJkhmB|Cb0R0)2c55>|?>*2?}SVjH& zWF^hL_=Q{imM#CtEsS&q0?mbHUYw=dC?V7p)lrvjk3=dWoX#op0FwD#G0t)QI?9m& z2KKjQN9p%d68ti6hB@24C(4nWCWeV`dta>7dyuNjw{W(k^>@p>>%Ke29G+AKocv%* z<-aGc`P_#@k+}j{8or(Um_HNxySe<2G-*orgE0-&vTY0#-%kEwq#FAP|I^1brTbf@ z!jYHY?(ZBddBdNYBKk?f*SIFJYsd9D94mfa<9Y3BXoxUgvQ<9YLj$ld6eYD zYk{95bcR2!ard{3-F(1JnUrPXGZ5drf)g4lmjy`u&jiCy?Mln8Yo?Yq@Igo z8mb>wFid<05;45&9`W?s`~*MW4{-3zaKv9l-01Ijq{IG~R13Z)Dcz X-Patchwork-Id: 13552448 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 89F84C4829B for ; Sun, 11 Feb 2024 12:32:10 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rZ8xo-0006Bt-46; Sun, 11 Feb 2024 07:29: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 1rZ8xn-0006Bk-6A for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:39 -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 1rZ8xl-0006Gy-Gl for qemu-devel@nongnu.org; Sun, 11 Feb 2024 07:29:38 -0500 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 65B33CE0D8B; Sun, 11 Feb 2024 12:29:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54177C433C7; Sun, 11 Feb 2024 12:29:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707654575; bh=dmm23UrfgEksNR5qCPqYN6vj7hcWMO7WB2mC/roSAbI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gva582P1Z2niQIGtWUDuWy8Glk8SC/7S7LKTIZJ5LF+EieyXx7GhQEokxBQu+eoaU +Ld2WbntdDaKxsFt103mSIAZg+dyR6OnOTHY8q/OJdWcEZ4XP5ZtYNb7d3CuFBakw+ Z6mPVYXuRbmdKKyVsDxgmGz3fkAmAsp5lsv8OVLx/i7ABPJNF3yhheida5gzUo5wTI ENEagBK7gjH1l9gvxYIP6gGEEr6Y+ZSF6mAL/ueACLPoscQdaBqiUe2FBitfdtzC9e INREGjXEQiTY/c3nGu8wj3H6ljRrkVJ4hV72BFQuk0HeiFMRSV/tZXlj3gYkVyo3I1 CuKa21lUvTw2g== 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: Sun, 11 Feb 2024 13:29:09 +0100 Message-ID: <20240211122909.5807-13-deller@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240211122909.5807-1-deller@kernel.org> References: <20240211122909.5807-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: -50 X-Spam_score: -5.1 X-Spam_bar: ----- X-Spam_report: (-5.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.677, 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 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);