From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698072; cv=none; d=zohomail.com; s=zohoarc; b=kial5KmwNZ3kEgfy5YDIpAg2Fz7GYrNHIV2gX6e2Zo1MXCO9/gTnfP5o2+ItmvLa4KN/SSGMK6TyRVaU3tqSPnQT7ziTebrftKfQFBvQ6W7L/4JFMeaR+V/4pNea0PPDn6vMAxtCWyChZ1aB/SuxYrxt6/mkmrkb7LQO+L4+urk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698072; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=u7wjPkG/ntlVqsAo3bR2GeOkCsbyPnLbq91ceDRWcvk=; b=b3/EIEEYvUdtCkXjwSW4Dc240ZmN6rLPSY2O2roDAVczHiOEJ9ogUr00nEQdXeejf+Jw6n1xVwvJrArxazzdxCOH/x5I81Z4ib2CUgAirFUJgfuaGEj1XKvYoN1iIK60sCfChdfsoL76mVFDyhDwJs8UgAxeM8jIUpBYgeG/PwY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698069134416.476164661516; Tue, 11 Mar 2025 06:01:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzC1-0000wk-7x; Tue, 11 Mar 2025 08:58:45 -0400 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 1trzBs-0000vG-Ql; Tue, 11 Mar 2025 08:58:38 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzBo-0007oR-DD; Tue, 11 Mar 2025 08:58:35 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-2feae794508so8081948a91.0; Tue, 11 Mar 2025 05:58:31 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.58.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:58:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697910; x=1742302710; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=u7wjPkG/ntlVqsAo3bR2GeOkCsbyPnLbq91ceDRWcvk=; b=SIii28Y+MGsgzRfdpDvapK2psDdhlbbzpw1IPdEUbpA6Cz8r8pTTrB19guznzUNH23 DvNPUM0JaSQ00mNyngm58NCsysj7CIOexRVwSL7oxs2E3GIba2od2R8nd4pqe8Efoq1u wFykPqxSznAl+cVdB2Ar8/hYrtLf5D17Mv3zdl9be7GOF3/Kbjk7/fzc5fW4u5YklP6R +ALVlMgZEBlF+iZMgxUKzQ7w+I6Tr5VSf9nLhqWQRlbFCX8kqKeqm9/z/yFaOgizkDDn 6u5dZRfTJVdwDmlAgrrYgkDFG5QNCrVor3zbnQgEyAq34Tm0qIxMmQvmXFsWAmNPPbOB EmUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697910; x=1742302710; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=u7wjPkG/ntlVqsAo3bR2GeOkCsbyPnLbq91ceDRWcvk=; b=Fi4LQShifCOD3jXogMDZ50JaPPEQGPhI8kxbxLS5Vg5paYhJGlMKClr9qV6nDC3sDz Z03u3nVD171K3sSF6+ewT8MX9eptSQGX1qm4Q1LofoOacIjOIxU5beXJqVS3bUsDCLLe 2eu/2ZJzP+Qt1KaJA0Oi4ml4Ggh7e92gmBqWypwTBBhWG0MIixBWUEF9RChV9AOxwBcp fpyFWT3CVtGCSJfTfDUNZHL/DsSU2bcsD53lH/ip0xbXnDl1hCNai9H9vrDMnyprRyie 1fAnzV5jJ8/gHR1hqytOVPuNFqyyNldFVaoL6nDZisac1ZdnT2Xzv7SfK5L3DKHmgPuP DJAg== X-Forwarded-Encrypted: i=1; AJvYcCUYS0NIBBX134ptewyiUy8umBUjCRLpMm8P18Le+mgi0B8m6hTlpYOjTevFNwgZxME6zOdytb568Q==@nongnu.org X-Gm-Message-State: AOJu0YzL5GbZtw0ZzuTCs/TpCiG3ol4aLiu/x/hZtEbX1vgIKYbcqchm om2QqAO+/ph+0msj3VTqoJ9MuHjG470MKDAIp5plmYZbq1qz0z961f9Y0w== X-Gm-Gg: ASbGncsCJrj7YsReHKPJazPSTfwSj251Om8+OpjIjwVmV3jmnoqQK7fqmdWGNktKIvu 058YGpzOIAuQ964NOMqBTNOxG/PzlGaq3CrSZxYfcniiInZEm4OHK3t/FBbq6F9zw318ESnlmvV g6cxqYETZypCTAJqZuf1CjIuF6g64GeWPkr0Ql+xAFD12j5tw03IXlBUiW4M/dQpYNcA0XCjeqR V1Sj7a0IFZwNWUYxcJ7dtxQtSFPP/GS/EWz7f67nUJ806Bh3YfuoevoQNC+Qh3RsJKVwmUH7Vc7 Jvp7N/alQ+udBSqRAqcYU5J04m1YcQ6l2r5BYc9d6LW3NDU5XWI= X-Google-Smtp-Source: AGHT+IGIqYa8qeyLfWBVgGoHt+p6wAsY1KCHmJ7RHjz24qW8Etm3dVWkWNWeWdinz2VYptWdxW8HjQ== X-Received: by 2002:a17:90b:2d82:b0:2ff:5357:1c7e with SMTP id 98e67ed59e1d1-2ff7ce89db6mr26355537a91.20.1741697908460; Tue, 11 Mar 2025 05:58:28 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [PULL 01/72] ppc/ppc405: Remove tests Date: Tue, 11 Mar 2025 22:56:55 +1000 Message-ID: <20250311125815.903177-2-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698074389019000 From: C=C3=A9dric Le Goater Since we are about to remove all support for PPC 405, start by removing the tests referring to the ref405ep machine. Link: https://lore.kernel.org/qemu-devel/20250110141800.1587589-2-clg@redha= t.com Signed-off-by: C=C3=A9dric Le Goater Reviewed-by: Nicholas Piggin Message-ID: <20250204080649.836155-2-clg@redhat.com> Signed-off-by: Nicholas Piggin --- tests/functional/meson.build | 1 - tests/functional/test_ppc_405.py | 37 -------------------------------- tests/qtest/m48t59-test.c | 5 ----- tests/qtest/meson.build | 1 - 4 files changed, 44 deletions(-) delete mode 100755 tests/functional/test_ppc_405.py diff --git a/tests/functional/meson.build b/tests/functional/meson.build index e78560a901..74f8414a0c 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -207,7 +207,6 @@ tests_ppc_system_quick =3D [ ] =20 tests_ppc_system_thorough =3D [ - 'ppc_405', 'ppc_40p', 'ppc_amiga', 'ppc_bamboo', diff --git a/tests/functional/test_ppc_405.py b/tests/functional/test_ppc_4= 05.py deleted file mode 100755 index 9851c03ee9..0000000000 --- a/tests/functional/test_ppc_405.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env python3 -# -# Test that the U-Boot firmware boots on ppc 405 machines and check the co= nsole -# -# Copyright (c) 2021 Red Hat, Inc. -# -# This work is licensed under the terms of the GNU GPL, version 2 or -# later. See the COPYING file in the top-level directory. - -from qemu_test import QemuSystemTest, Asset -from qemu_test import wait_for_console_pattern -from qemu_test import exec_command_and_wait_for_pattern - -class Ppc405Machine(QemuSystemTest): - - timeout =3D 90 - - ASSET_UBOOT =3D Asset( - ('https://gitlab.com/huth/u-boot/-/raw/taihu-2021-10-09/' - 'u-boot-taihu.bin'), - 'a076bb6cdeaafa406330e51e074b66d8878d9036d67d4caa0137be03ee4c112c') - - def do_test_ppc405(self): - file_path =3D self.ASSET_UBOOT.fetch() - self.vm.set_console(console_index=3D1) - self.vm.add_args('-bios', file_path) - self.vm.launch() - wait_for_console_pattern(self, 'AMCC PPC405EP Evaluation Board') - exec_command_and_wait_for_pattern(self, 'reset', 'AMCC PowerPC 405= EP') - - def test_ppc_ref405ep(self): - self.require_accelerator("tcg") - self.set_machine('ref405ep') - self.do_test_ppc405() - -if __name__ =3D=3D '__main__': - QemuSystemTest.main() diff --git a/tests/qtest/m48t59-test.c b/tests/qtest/m48t59-test.c index 605797ab78..1e39a0e8f0 100644 --- a/tests/qtest/m48t59-test.c +++ b/tests/qtest/m48t59-test.c @@ -247,11 +247,6 @@ static void base_setup(void) base_year =3D 1968; base_machine =3D "SS-5"; use_mmio =3D true; - } else if (g_str_equal(arch, "ppc") || g_str_equal(arch, "ppc64")) { - base =3D 0xF0000000; - base_year =3D 1968; - base_machine =3D "ref405ep"; - use_mmio =3D true; } else { g_assert_not_reached(); } diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 8a6243382a..b23fe67db7 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -171,7 +171,6 @@ qtests_mips64el =3D qtests_mips qtests_ppc =3D \ qtests_filter + \ (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] = : []) + \ - (config_all_devices.has_key('CONFIG_M48T59') ? ['m48t59-test'] : []) + = \ (config_all_accel.has_key('CONFIG_TCG') ? ['prom-env-test'] : []) + = \ (config_all_accel.has_key('CONFIG_TCG') ? ['boot-serial-test'] : []) + = \ ['boot-order-test'] --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698015; cv=none; d=zohomail.com; s=zohoarc; b=g9kapGQSvK4SBrv6EZtBwS1z1mZaflPROsA9pyFkYvJlJObLttHAs1bjn6wZ6UMS+ZCPg8uzgfw2ZQ6a3/1Lq5DGhCCfMraHEcrvhDnlR1lH9xMDmdfOkaqVVQ/UBoM6I6slgm66MEQV3NWwGEKQN1IBhgiKPg2msDVOI2+fNNA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698015; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9qziwSp72v5bFf9UwHWA2wgeDsKZUWFBWm7xQttp+nk=; b=Y/aYvd8WKwPIXpoAE0g5R2R3RXbuYc1xbAe1fZXqNuRJUhYWImCqBhdgaCsO1T6cd+uhsYmou+7p0V6nXlna5TgHcVYxNS1ICw8lijy009I/CyJ8qrPoSEdnexolciboTwRPDBvIvV/ep356gOPi2/mnsYMQxGZUxDrbOR86MZk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698015384907.9135524904136; Tue, 11 Mar 2025 06:00:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzC5-00012y-1e; Tue, 11 Mar 2025 08:58:49 -0400 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 1trzC1-0000xN-NN; Tue, 11 Mar 2025 08:58:45 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzBr-0007ow-KC; Tue, 11 Mar 2025 08:58:45 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-2ff04f36fd2so9011346a91.1; Tue, 11 Mar 2025 05:58:33 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.58.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:58:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697912; x=1742302712; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9qziwSp72v5bFf9UwHWA2wgeDsKZUWFBWm7xQttp+nk=; b=Y9rUxcofB1lyDLTVXfX53g+DgMeVhU/QP/yf9K44slef6CWQ3+urbBSo3lByVHwD1j 96LsjpElriziBZpwulhn7hF92Sks283E2VT5jmr8B1ONKDtXDq+Bymce67eLm6KVObuL cRBVk3RinPnCoL3hnaLFHNz6mLRmfIG895MoWEMJGNpbh1r4nmrt5PJVOVdx28n92+e3 M8X6KH9jRQLwOhguENJOniDYXW3W7JRi2qj8NXx/4/+DtYjAJjTtyMDOhQXoI1+7bKWB ru0auU6RxQ3oJFRVObzcBhaAAED5TpT0NF7Q+jqEVHHRgIJYS4ZrDbC1f3rza28Hw5MR q3TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697912; x=1742302712; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9qziwSp72v5bFf9UwHWA2wgeDsKZUWFBWm7xQttp+nk=; b=kXkqtSKRBzBgcNMKBGRxta0XnDHE5+oE8kY2zntF+4fouzF8X+JNiI9c4s1H7i6Av7 JERdcT+yBCECv0SSfic5O+KlZFBmVf8L9SFTqrDc+9TcMAvT9ONtpnHEaKOBWnNJ/HFF ePy9tZ1/1S7Mf1d/YFIZoDc3mP4bNpT4Rg0kMJlsqyTYJLtjD/VZZfAdYuxF7zDqJ3Fg 9I+jhARzf12XTTdXT0kk9LtkFH9IoJg3FoVE1O2ZGEojuntw4ITMLhW6k06qaC9wGuv1 TDIl0qt1hnAwJhow6eM2lzaGvz8Q5vhmphOmYIrG70BbiOSteyWgb9oVJvy2W0Huo5xa j1cA== X-Forwarded-Encrypted: i=1; AJvYcCX3jvOA08sY4aUH6TjbL8weBDTDhKIW50YElV1Yb5EAfOky8743eNb0v5NGrSDn+8t4HiPSpqNTpg==@nongnu.org X-Gm-Message-State: AOJu0Yzri3WHvzzRcBIi42H+jICu+0Tyqic5k8Bj6A/r24BF7e/WS6KL 9uO/vdm74YhzsrwJAez26Whiqsbjl7Rf5+iDcdl82RISsIMmo6HChT/tzQ== X-Gm-Gg: ASbGncugDOT84EbR/QqruSzfr0tpb7/x+ls5BeTvEDOoxfk7y8QEkDT6Ip/FeyMQT5D gECHgBhfSuadNaBn5VF7mNLNR5wT2FszjRr/Kh0rbXfFT+sTnNnYY4kucOA5aqP5qtLwCDUF0pE +9vkdCXoEtwf8m9xjlcHxVldcfqXWHWHhwGEFYmhl/xYP1bgks5qbXm1DeRctSHfLlzfgS/OcpO 2YWUCn44zAkYpDyupVn6D+8w91Ulht+TC5fkLQdJIjIDPYyDnu/i/vI26Odthsy9Xma715IPGxA y1IPj4DeB9rpSlRk4iQf3RkVRm5Hb6Xka4mqxS92tUnUavAECfg= X-Google-Smtp-Source: AGHT+IFjo34kHqAtrEJIIQO9nDSHx36UtediFHCmhNt2Sd9pOmgWHHuetKAcotvGwVfBoB67Iq5Org== X-Received: by 2002:a17:90b:4ad0:b0:2ff:6fc3:79c4 with SMTP id 98e67ed59e1d1-2ff7cef5cdamr26065740a91.27.1741697911557; Tue, 11 Mar 2025 05:58:31 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [PULL 02/72] ppc/ppc405: Remove boards Date: Tue, 11 Mar 2025 22:56:56 +1000 Message-ID: <20250311125815.903177-3-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698016757019000 From: C=C3=A9dric Le Goater The ref405ep machine is the only PPC 405 machine. Drop all support by removing the SoC and associated devices as-well as the machine. Link: https://lore.kernel.org/qemu-devel/20250110141800.1587589-3-clg@redha= t.com Signed-off-by: C=C3=A9dric Le Goater Reviewed-by: Nicholas Piggin Message-ID: <20250204080649.836155-3-clg@redhat.com> Signed-off-by: Nicholas Piggin --- MAINTAINERS | 6 - docs/about/deprecated.rst | 8 - docs/about/removed-features.rst | 7 + docs/system/ppc/embedded.rst | 1 - hw/ppc/Kconfig | 9 - hw/ppc/meson.build | 3 - hw/ppc/ppc405.h | 186 ----- hw/ppc/ppc405_boards.c | 520 ------------- hw/ppc/ppc405_uc.c | 1216 ------------------------------- 9 files changed, 7 insertions(+), 1949 deletions(-) delete mode 100644 hw/ppc/ppc405.h delete mode 100644 hw/ppc/ppc405_boards.c delete mode 100644 hw/ppc/ppc405_uc.c diff --git a/MAINTAINERS b/MAINTAINERS index 0e5db7a574..e2f538fc16 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1407,12 +1407,6 @@ F: hw/openrisc/openrisc_sim.c =20 PowerPC Machines ---------------- -405 (ref405ep) -L: qemu-ppc@nongnu.org -S: Orphan -F: hw/ppc/ppc405* -F: tests/functional/test_ppc_405.py - Bamboo L: qemu-ppc@nongnu.org S: Orphan diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 589951b136..3d39d2a9da 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -277,14 +277,6 @@ deprecated; use the new name ``dtb-randomness`` instea= d. The new name better reflects the way this property affects all random data within the device tree blob, not just the ``kaslr-seed`` node. =20 -PPC 405 ``ref405ep`` machine (since 9.1) -'''''''''''''''''''''''''''''''''''''''' - -The ``ref405ep`` machine and PPC 405 CPU have no known users, firmware -images are not available, OpenWRT dropped support in 2019, U-Boot in -2017, Linux also is dropping support in 2024. It is time to let go of -this ancient hardware and focus on newer CPUs and platforms. - Big-Endian variants of MicroBlaze ``petalogix-ml605`` and ``xlnx-zynqmp-pm= u`` machines (since 9.2) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''= '''''''''''''''''''''''' =20 diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.= rst index 156c0c253c..2527a91795 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -1064,6 +1064,13 @@ for all machine types using the PXA2xx and OMAP2 SoC= s. We are also dropping the ``cheetah`` OMAP1 board, because we don't have any test images for it and don't know of anybody who does. =20 +ppc ``ref405ep`` machine (removed in 10.0) +'''''''''''''''''''''''''''''''''''''''''' + +This machine was removed because PPC 405 CPU have no known users, +firmware images are not available, OpenWRT dropped support in 2019, +U-Boot in 2017, and Linux in 2024. + linux-user mode CPUs -------------------- =20 diff --git a/docs/system/ppc/embedded.rst b/docs/system/ppc/embedded.rst index af3b3d9fa4..5cb7d98b45 100644 --- a/docs/system/ppc/embedded.rst +++ b/docs/system/ppc/embedded.rst @@ -4,6 +4,5 @@ Embedded family boards - ``bamboo`` bamboo - ``mpc8544ds`` mpc8544ds - ``ppce500`` generic paravirt e500 platform -- ``ref405ep`` ref405ep - ``sam460ex`` aCube Sam460ex - ``virtex-ml507`` Xilinx Virtex ML507 reference design diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index b44d91bebb..ced6bbc740 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -44,15 +44,6 @@ config POWERNV select SSI_M25P80 select PNV_SPI =20 -config PPC405 - bool - default y - depends on PPC - select M48T59 - select PFLASH_CFI02 - select PPC4XX - select SERIAL_MM - config PPC440 bool default y diff --git a/hw/ppc/meson.build b/hw/ppc/meson.build index 7cd9189869..9893f8adeb 100644 --- a/hw/ppc/meson.build +++ b/hw/ppc/meson.build @@ -57,9 +57,6 @@ ppc_ss.add(when: 'CONFIG_POWERNV', if_true: files( 'pnv_n1_chiplet.c', )) # PowerPC 4xx boards -ppc_ss.add(when: 'CONFIG_PPC405', if_true: files( - 'ppc405_boards.c', - 'ppc405_uc.c')) ppc_ss.add(when: 'CONFIG_PPC440', if_true: files( 'ppc440_bamboo.c', 'ppc440_uc.c')) diff --git a/hw/ppc/ppc405.h b/hw/ppc/ppc405.h deleted file mode 100644 index 9a4312691e..0000000000 --- a/hw/ppc/ppc405.h +++ /dev/null @@ -1,186 +0,0 @@ -/* - * QEMU PowerPC 405 shared definitions - * - * Copyright (c) 2007 Jocelyn Mayer - * - * Permission is hereby granted, free of charge, to any person obtaining a= copy - * of this software and associated documentation files (the "Software"), t= o deal - * in the Software without restriction, including without limitation the r= ights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included= in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN - * THE SOFTWARE. - */ - -#ifndef PPC405_H -#define PPC405_H - -#include "qom/object.h" -#include "hw/ppc/ppc4xx.h" -#include "hw/intc/ppc-uic.h" -#include "hw/i2c/ppc4xx_i2c.h" - -/* PLB to OPB bridge */ -#define TYPE_PPC405_POB "ppc405-pob" -OBJECT_DECLARE_SIMPLE_TYPE(Ppc405PobState, PPC405_POB); -struct Ppc405PobState { - Ppc4xxDcrDeviceState parent_obj; - - uint32_t bear; - uint32_t besr0; - uint32_t besr1; -}; - -/* OPB arbitrer */ -#define TYPE_PPC405_OPBA "ppc405-opba" -OBJECT_DECLARE_SIMPLE_TYPE(Ppc405OpbaState, PPC405_OPBA); -struct Ppc405OpbaState { - SysBusDevice parent_obj; - - MemoryRegion io; - uint8_t cr; - uint8_t pr; -}; - -/* DMA controller */ -#define TYPE_PPC405_DMA "ppc405-dma" -OBJECT_DECLARE_SIMPLE_TYPE(Ppc405DmaState, PPC405_DMA); -struct Ppc405DmaState { - Ppc4xxDcrDeviceState parent_obj; - - qemu_irq irqs[4]; - uint32_t cr[4]; - uint32_t ct[4]; - uint32_t da[4]; - uint32_t sa[4]; - uint32_t sg[4]; - uint32_t sr; - uint32_t sgc; - uint32_t slp; - uint32_t pol; -}; - -/* GPIO */ -#define TYPE_PPC405_GPIO "ppc405-gpio" -OBJECT_DECLARE_SIMPLE_TYPE(Ppc405GpioState, PPC405_GPIO); -struct Ppc405GpioState { - SysBusDevice parent_obj; - - MemoryRegion io; - uint32_t or; - uint32_t tcr; - uint32_t osrh; - uint32_t osrl; - uint32_t tsrh; - uint32_t tsrl; - uint32_t odr; - uint32_t ir; - uint32_t rr1; - uint32_t isr1h; - uint32_t isr1l; -}; - -/* On Chip Memory */ -#define TYPE_PPC405_OCM "ppc405-ocm" -OBJECT_DECLARE_SIMPLE_TYPE(Ppc405OcmState, PPC405_OCM); -struct Ppc405OcmState { - Ppc4xxDcrDeviceState parent_obj; - - MemoryRegion ram; - MemoryRegion isarc_ram; - MemoryRegion dsarc_ram; - uint32_t isarc; - uint32_t isacntl; - uint32_t dsarc; - uint32_t dsacntl; -}; - -/* General purpose timers */ -#define TYPE_PPC405_GPT "ppc405-gpt" -OBJECT_DECLARE_SIMPLE_TYPE(Ppc405GptState, PPC405_GPT); -struct Ppc405GptState { - SysBusDevice parent_obj; - - MemoryRegion iomem; - - int64_t tb_offset; - uint32_t tb_freq; - QEMUTimer *timer; - qemu_irq irqs[5]; - uint32_t oe; - uint32_t ol; - uint32_t im; - uint32_t is; - uint32_t ie; - uint32_t comp[5]; - uint32_t mask[5]; -}; - -#define TYPE_PPC405_CPC "ppc405-cpc" -OBJECT_DECLARE_SIMPLE_TYPE(Ppc405CpcState, PPC405_CPC); - -enum { - PPC405EP_CPU_CLK =3D 0, - PPC405EP_PLB_CLK =3D 1, - PPC405EP_OPB_CLK =3D 2, - PPC405EP_EBC_CLK =3D 3, - PPC405EP_MAL_CLK =3D 4, - PPC405EP_PCI_CLK =3D 5, - PPC405EP_UART0_CLK =3D 6, - PPC405EP_UART1_CLK =3D 7, - PPC405EP_CLK_NB =3D 8, -}; - -struct Ppc405CpcState { - Ppc4xxDcrDeviceState parent_obj; - - uint32_t sysclk; - clk_setup_t clk_setup[PPC405EP_CLK_NB]; - uint32_t boot; - uint32_t epctl; - uint32_t pllmr[2]; - uint32_t ucr; - uint32_t srr; - uint32_t jtagid; - uint32_t pci; - /* Clock and power management */ - uint32_t er; - uint32_t fr; - uint32_t sr; -}; - -#define TYPE_PPC405_SOC "ppc405-soc" -OBJECT_DECLARE_SIMPLE_TYPE(Ppc405SoCState, PPC405_SOC); - -struct Ppc405SoCState { - /* Private */ - DeviceState parent_obj; - - /* Public */ - PowerPCCPU cpu; - PPCUIC uic; - Ppc405CpcState cpc; - Ppc405GptState gpt; - Ppc405OcmState ocm; - Ppc405GpioState gpio; - Ppc405DmaState dma; - PPC4xxI2CState i2c; - Ppc4xxEbcState ebc; - Ppc405OpbaState opba; - Ppc405PobState pob; - Ppc4xxPlbState plb; - Ppc4xxMalState mal; - Ppc4xxSdramDdrState sdram; -}; - -#endif /* PPC405_H */ diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c deleted file mode 100644 index 969cac345a..0000000000 --- a/hw/ppc/ppc405_boards.c +++ /dev/null @@ -1,520 +0,0 @@ -/* - * QEMU PowerPC 405 evaluation boards emulation - * - * Copyright (c) 2007 Jocelyn Mayer - * - * Permission is hereby granted, free of charge, to any person obtaining a= copy - * of this software and associated documentation files (the "Software"), t= o deal - * in the Software without restriction, including without limitation the r= ights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included= in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN - * THE SOFTWARE. - */ - -#include "qemu/osdep.h" -#include "qemu/units.h" -#include "qapi/error.h" -#include "qemu/datadir.h" -#include "cpu.h" -#include "hw/ppc/ppc.h" -#include "hw/qdev-properties.h" -#include "hw/sysbus.h" -#include "ppc405.h" -#include "hw/rtc/m48t59.h" -#include "hw/block/flash.h" -#include "system/qtest.h" -#include "system/reset.h" -#include "system/block-backend.h" -#include "hw/boards.h" -#include "qemu/error-report.h" -#include "hw/loader.h" -#include "qemu/cutils.h" -#include "elf.h" - -#define BIOS_FILENAME "ppc405_rom.bin" -#define BIOS_SIZE (2 * MiB) - -#define KERNEL_LOAD_ADDR 0x01000000 -#define INITRD_LOAD_ADDR 0x01800000 - -#define PPC405EP_SDRAM_BASE 0x00000000 -#define PPC405EP_SRAM_BASE 0xFFF00000 -#define PPC405EP_SRAM_SIZE (512 * KiB) - -#define USE_FLASH_BIOS - -#define TYPE_PPC405_MACHINE MACHINE_TYPE_NAME("ppc405") -OBJECT_DECLARE_SIMPLE_TYPE(Ppc405MachineState, PPC405_MACHINE); - -struct Ppc405MachineState { - /* Private */ - MachineState parent_obj; - /* Public */ - - Ppc405SoCState soc; -}; - -/* CPU reset handler when booting directly from a loaded kernel */ -static struct boot_info { - uint32_t entry; - uint32_t bdloc; - uint32_t initrd_base; - uint32_t initrd_size; - uint32_t cmdline_base; - uint32_t cmdline_size; -} boot_info; - -static void main_cpu_reset(void *opaque) -{ - PowerPCCPU *cpu =3D opaque; - CPUPPCState *env =3D &cpu->env; - struct boot_info *bi =3D env->load_info; - - cpu_reset(CPU(cpu)); - - /* stack: top of sram */ - env->gpr[1] =3D PPC405EP_SRAM_BASE + PPC405EP_SRAM_SIZE - 8; - - /* Tune our boot state */ - env->gpr[3] =3D bi->bdloc; - env->gpr[4] =3D bi->initrd_base; - env->gpr[5] =3D bi->initrd_base + bi->initrd_size; - env->gpr[6] =3D bi->cmdline_base; - env->gpr[7] =3D bi->cmdline_size; - - env->nip =3D bi->entry; -} - -/* Bootinfo as set-up by u-boot */ -typedef struct { - uint32_t bi_memstart; - uint32_t bi_memsize; - uint32_t bi_flashstart; - uint32_t bi_flashsize; - uint32_t bi_flashoffset; /* 0x10 */ - uint32_t bi_sramstart; - uint32_t bi_sramsize; - uint32_t bi_bootflags; - uint32_t bi_ipaddr; /* 0x20 */ - uint8_t bi_enetaddr[6]; - uint16_t bi_ethspeed; - uint32_t bi_intfreq; - uint32_t bi_busfreq; /* 0x30 */ - uint32_t bi_baudrate; - uint8_t bi_s_version[4]; - uint8_t bi_r_version[32]; - uint32_t bi_procfreq; - uint32_t bi_plb_busfreq; - uint32_t bi_pci_busfreq; - uint8_t bi_pci_enetaddr[6]; - uint8_t bi_pci_enetaddr2[6]; /* PPC405EP specific */ - uint32_t bi_opbfreq; - uint32_t bi_iic_fast[2]; -} ppc4xx_bd_info_t; - -static void ppc405_set_default_bootinfo(ppc4xx_bd_info_t *bd, - ram_addr_t ram_size) -{ - memset(bd, 0, sizeof(*bd)); - - bd->bi_memstart =3D PPC405EP_SDRAM_BASE; - bd->bi_memsize =3D ram_size; - bd->bi_sramstart =3D PPC405EP_SRAM_BASE; - bd->bi_sramsize =3D PPC405EP_SRAM_SIZE; - bd->bi_bootflags =3D 0; - bd->bi_intfreq =3D 133333333; - bd->bi_busfreq =3D 33333333; - bd->bi_baudrate =3D 115200; - bd->bi_s_version[0] =3D 'Q'; - bd->bi_s_version[1] =3D 'M'; - bd->bi_s_version[2] =3D 'U'; - bd->bi_s_version[3] =3D '\0'; - bd->bi_r_version[0] =3D 'Q'; - bd->bi_r_version[1] =3D 'E'; - bd->bi_r_version[2] =3D 'M'; - bd->bi_r_version[3] =3D 'U'; - bd->bi_r_version[4] =3D '\0'; - bd->bi_procfreq =3D 133333333; - bd->bi_plb_busfreq =3D 33333333; - bd->bi_pci_busfreq =3D 33333333; - bd->bi_opbfreq =3D 33333333; -} - -static ram_addr_t __ppc405_set_bootinfo(CPUPPCState *env, ppc4xx_bd_info_t= *bd) -{ - CPUState *cs =3D env_cpu(env); - ram_addr_t bdloc; - int i, n; - - /* We put the bd structure at the top of memory */ - if (bd->bi_memsize >=3D 0x01000000UL) { - bdloc =3D 0x01000000UL - sizeof(ppc4xx_bd_info_t); - } else { - bdloc =3D bd->bi_memsize - sizeof(ppc4xx_bd_info_t); - } - stl_be_phys(cs->as, bdloc + 0x00, bd->bi_memstart); - stl_be_phys(cs->as, bdloc + 0x04, bd->bi_memsize); - stl_be_phys(cs->as, bdloc + 0x08, bd->bi_flashstart); - stl_be_phys(cs->as, bdloc + 0x0C, bd->bi_flashsize); - stl_be_phys(cs->as, bdloc + 0x10, bd->bi_flashoffset); - stl_be_phys(cs->as, bdloc + 0x14, bd->bi_sramstart); - stl_be_phys(cs->as, bdloc + 0x18, bd->bi_sramsize); - stl_be_phys(cs->as, bdloc + 0x1C, bd->bi_bootflags); - stl_be_phys(cs->as, bdloc + 0x20, bd->bi_ipaddr); - for (i =3D 0; i < 6; i++) { - stb_phys(cs->as, bdloc + 0x24 + i, bd->bi_enetaddr[i]); - } - stw_be_phys(cs->as, bdloc + 0x2A, bd->bi_ethspeed); - stl_be_phys(cs->as, bdloc + 0x2C, bd->bi_intfreq); - stl_be_phys(cs->as, bdloc + 0x30, bd->bi_busfreq); - stl_be_phys(cs->as, bdloc + 0x34, bd->bi_baudrate); - for (i =3D 0; i < 4; i++) { - stb_phys(cs->as, bdloc + 0x38 + i, bd->bi_s_version[i]); - } - for (i =3D 0; i < 32; i++) { - stb_phys(cs->as, bdloc + 0x3C + i, bd->bi_r_version[i]); - } - stl_be_phys(cs->as, bdloc + 0x5C, bd->bi_procfreq); - stl_be_phys(cs->as, bdloc + 0x60, bd->bi_plb_busfreq); - stl_be_phys(cs->as, bdloc + 0x64, bd->bi_pci_busfreq); - for (i =3D 0; i < 6; i++) { - stb_phys(cs->as, bdloc + 0x68 + i, bd->bi_pci_enetaddr[i]); - } - n =3D 0x70; /* includes 2 bytes hole */ - for (i =3D 0; i < 6; i++) { - stb_phys(cs->as, bdloc + n++, bd->bi_pci_enetaddr2[i]); - } - stl_be_phys(cs->as, bdloc + n, bd->bi_opbfreq); - n +=3D 4; - for (i =3D 0; i < 2; i++) { - stl_be_phys(cs->as, bdloc + n, bd->bi_iic_fast[i]); - n +=3D 4; - } - - return bdloc; -} - -static ram_addr_t ppc405_set_bootinfo(CPUPPCState *env, ram_addr_t ram_siz= e) -{ - ppc4xx_bd_info_t bd; - - memset(&bd, 0, sizeof(bd)); - - ppc405_set_default_bootinfo(&bd, ram_size); - - return __ppc405_set_bootinfo(env, &bd); -} - -static void boot_from_kernel(MachineState *machine, PowerPCCPU *cpu) -{ - CPUPPCState *env =3D &cpu->env; - hwaddr boot_entry; - hwaddr kernel_base; - int kernel_size; - hwaddr initrd_base; - int initrd_size; - ram_addr_t bdloc; - int len; - - bdloc =3D ppc405_set_bootinfo(env, machine->ram_size); - boot_info.bdloc =3D bdloc; - - kernel_size =3D load_elf(machine->kernel_filename, NULL, NULL, NULL, - &boot_entry, &kernel_base, NULL, NULL, - ELFDATA2MSB, PPC_ELF_MACHINE, 0, 0); - if (kernel_size < 0) { - error_report("Could not load kernel '%s' : %s", - machine->kernel_filename, load_elf_strerror(kernel_si= ze)); - exit(1); - } - boot_info.entry =3D boot_entry; - - /* load initrd */ - if (machine->initrd_filename) { - initrd_base =3D INITRD_LOAD_ADDR; - initrd_size =3D load_image_targphys(machine->initrd_filename, init= rd_base, - machine->ram_size - initrd_base); - if (initrd_size < 0) { - error_report("could not load initial ram disk '%s'", - machine->initrd_filename); - exit(1); - } - - boot_info.initrd_base =3D initrd_base; - boot_info.initrd_size =3D initrd_size; - } - - if (machine->kernel_cmdline) { - len =3D strlen(machine->kernel_cmdline); - bdloc -=3D ((len + 255) & ~255); - cpu_physical_memory_write(bdloc, machine->kernel_cmdline, len + 1); - boot_info.cmdline_base =3D bdloc; - boot_info.cmdline_size =3D bdloc + len; - } - - /* Install our custom reset handler to start from Linux */ - qemu_register_reset(main_cpu_reset, cpu); - env->load_info =3D &boot_info; -} - -static void ppc405_init(MachineState *machine) -{ - Ppc405MachineState *ppc405 =3D PPC405_MACHINE(machine); - const char *kernel_filename =3D machine->kernel_filename; - MemoryRegion *sysmem =3D get_system_memory(); - - object_initialize_child(OBJECT(machine), "soc", &ppc405->soc, - TYPE_PPC405_SOC); - object_property_set_link(OBJECT(&ppc405->soc), "dram", - OBJECT(machine->ram), &error_abort); - object_property_set_uint(OBJECT(&ppc405->soc), "sys-clk", 33333333, - &error_abort); - qdev_realize(DEVICE(&ppc405->soc), NULL, &error_fatal); - - /* allocate and load BIOS */ - if (machine->firmware) { - MemoryRegion *bios =3D g_new(MemoryRegion, 1); - g_autofree char *filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, - machine->firmware); - long bios_size; - - memory_region_init_rom(bios, NULL, "ef405ep.bios", BIOS_SIZE, - &error_fatal); - - if (!filename) { - error_report("Could not find firmware '%s'", machine->firmware= ); - exit(1); - } - - bios_size =3D load_image_size(filename, - memory_region_get_ram_ptr(bios), - BIOS_SIZE); - if (bios_size < 0) { - error_report("Could not load PowerPC BIOS '%s'", machine->firm= ware); - exit(1); - } - - bios_size =3D (bios_size + 0xfff) & ~0xfff; - memory_region_add_subregion(sysmem, (uint32_t)(-bios_size), bios); - } - - /* Load kernel and initrd using U-Boot images */ - if (kernel_filename && machine->firmware) { - target_ulong kernel_base, initrd_base; - long kernel_size, initrd_size; - - kernel_base =3D KERNEL_LOAD_ADDR; - kernel_size =3D load_image_targphys(kernel_filename, kernel_base, - machine->ram_size - kernel_base); - if (kernel_size < 0) { - error_report("could not load kernel '%s'", kernel_filename); - exit(1); - } - - /* load initrd */ - if (machine->initrd_filename) { - initrd_base =3D INITRD_LOAD_ADDR; - initrd_size =3D load_image_targphys(machine->initrd_filename, - initrd_base, - machine->ram_size - initrd_b= ase); - if (initrd_size < 0) { - error_report("could not load initial ram disk '%s'", - machine->initrd_filename); - exit(1); - } - } - - /* Load ELF kernel and rootfs.cpio */ - } else if (kernel_filename && !machine->firmware) { - ppc4xx_sdram_ddr_enable(&ppc405->soc.sdram); - boot_from_kernel(machine, &ppc405->soc.cpu); - } -} - -static void ppc405_machine_class_init(ObjectClass *oc, void *data) -{ - MachineClass *mc =3D MACHINE_CLASS(oc); - - mc->desc =3D "PPC405 generic machine"; - mc->init =3D ppc405_init; - mc->default_ram_size =3D 128 * MiB; - mc->default_ram_id =3D "ppc405.ram"; - mc->deprecation_reason =3D "machine is old and unmaintained"; -} - -static const TypeInfo ppc405_machine_type =3D { - .name =3D TYPE_PPC405_MACHINE, - .parent =3D TYPE_MACHINE, - .instance_size =3D sizeof(Ppc405MachineState), - .class_init =3D ppc405_machine_class_init, - .abstract =3D true, -}; - -/*************************************************************************= ****/ -/* PPC405EP reference board (IBM) */ -/* - * Standalone board with: - * - PowerPC 405EP CPU - * - SDRAM (0x00000000) - * - Flash (0xFFF80000) - * - SRAM (0xFFF00000) - * - NVRAM (0xF0000000) - * - FPGA (0xF0300000) - */ - -#define PPC405EP_NVRAM_BASE 0xF0000000 -#define PPC405EP_FPGA_BASE 0xF0300000 -#define PPC405EP_FLASH_BASE 0xFFF80000 - -#define TYPE_REF405EP_FPGA "ref405ep-fpga" -OBJECT_DECLARE_SIMPLE_TYPE(Ref405epFpgaState, REF405EP_FPGA); -struct Ref405epFpgaState { - SysBusDevice parent_obj; - - MemoryRegion iomem; - - uint8_t reg0; - uint8_t reg1; -}; - -static uint64_t ref405ep_fpga_readb(void *opaque, hwaddr addr, unsigned si= ze) -{ - Ref405epFpgaState *fpga =3D opaque; - uint32_t ret; - - switch (addr) { - case 0x0: - ret =3D fpga->reg0; - break; - case 0x1: - ret =3D fpga->reg1; - break; - default: - ret =3D 0; - break; - } - - return ret; -} - -static void ref405ep_fpga_writeb(void *opaque, hwaddr addr, uint64_t value, - unsigned size) -{ - Ref405epFpgaState *fpga =3D opaque; - - switch (addr) { - case 0x0: - /* Read only */ - break; - case 0x1: - fpga->reg1 =3D value; - break; - default: - break; - } -} - -static const MemoryRegionOps ref405ep_fpga_ops =3D { - .read =3D ref405ep_fpga_readb, - .write =3D ref405ep_fpga_writeb, - .impl.min_access_size =3D 1, - .impl.max_access_size =3D 1, - .valid.min_access_size =3D 1, - .valid.max_access_size =3D 4, - .endianness =3D DEVICE_BIG_ENDIAN, -}; - -static void ref405ep_fpga_reset(DeviceState *dev) -{ - Ref405epFpgaState *fpga =3D REF405EP_FPGA(dev); - - fpga->reg0 =3D 0x00; - fpga->reg1 =3D 0x0F; -} - -static void ref405ep_fpga_realize(DeviceState *dev, Error **errp) -{ - Ref405epFpgaState *s =3D REF405EP_FPGA(dev); - - memory_region_init_io(&s->iomem, OBJECT(s), &ref405ep_fpga_ops, s, - "fpga", 0x00000100); - sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->iomem); -} - -static void ref405ep_fpga_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D ref405ep_fpga_realize; - device_class_set_legacy_reset(dc, ref405ep_fpga_reset); - /* Reason: only works as part of a ppc405 board */ - dc->user_creatable =3D false; -} - -static const TypeInfo ref405ep_fpga_type =3D { - .name =3D TYPE_REF405EP_FPGA, - .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(Ref405epFpgaState), - .class_init =3D ref405ep_fpga_class_init, -}; - -static void ref405ep_init(MachineState *machine) -{ - DeviceState *dev; - SysBusDevice *s; - MemoryRegion *sram =3D g_new(MemoryRegion, 1); - - ppc405_init(machine); - - /* allocate SRAM */ - memory_region_init_ram(sram, NULL, "ref405ep.sram", PPC405EP_SRAM_SIZE, - &error_fatal); - memory_region_add_subregion(get_system_memory(), PPC405EP_SRAM_BASE, s= ram); - - /* Register FPGA */ - dev =3D qdev_new(TYPE_REF405EP_FPGA); - object_property_add_child(OBJECT(machine), "fpga", OBJECT(dev)); - sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, PPC405EP_FPGA_BASE); - - /* Register NVRAM */ - dev =3D qdev_new("sysbus-m48t08"); - qdev_prop_set_int32(dev, "base-year", 1968); - s =3D SYS_BUS_DEVICE(dev); - sysbus_realize_and_unref(s, &error_fatal); - sysbus_mmio_map(s, 0, PPC405EP_NVRAM_BASE); -} - -static void ref405ep_class_init(ObjectClass *oc, void *data) -{ - MachineClass *mc =3D MACHINE_CLASS(oc); - - mc->desc =3D "ref405ep"; - mc->init =3D ref405ep_init; -} - -static const TypeInfo ref405ep_type =3D { - .name =3D MACHINE_TYPE_NAME("ref405ep"), - .parent =3D TYPE_PPC405_MACHINE, - .class_init =3D ref405ep_class_init, -}; - -static void ppc405_machine_init(void) -{ - type_register_static(&ppc405_machine_type); - type_register_static(&ref405ep_type); - type_register_static(&ref405ep_fpga_type); -} - -type_init(ppc405_machine_init) diff --git a/hw/ppc/ppc405_uc.c b/hw/ppc/ppc405_uc.c deleted file mode 100644 index 8250824a1a..0000000000 --- a/hw/ppc/ppc405_uc.c +++ /dev/null @@ -1,1216 +0,0 @@ -/* - * QEMU PowerPC 405 embedded processors emulation - * - * Copyright (c) 2007 Jocelyn Mayer - * - * Permission is hereby granted, free of charge, to any person obtaining a= copy - * of this software and associated documentation files (the "Software"), t= o deal - * in the Software without restriction, including without limitation the r= ights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included= in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN - * THE SOFTWARE. - */ - -#include "qemu/osdep.h" -#include "qemu/units.h" -#include "qapi/error.h" -#include "qemu/log.h" -#include "cpu.h" -#include "hw/ppc/ppc.h" -#include "hw/i2c/ppc4xx_i2c.h" -#include "hw/irq.h" -#include "hw/qdev-properties.h" -#include "ppc405.h" -#include "hw/char/serial-mm.h" -#include "qemu/timer.h" -#include "system/reset.h" -#include "system/system.h" -#include "exec/address-spaces.h" -#include "hw/intc/ppc-uic.h" -#include "trace.h" - -/*************************************************************************= ****/ -/* Shared peripherals */ - -/*************************************************************************= ****/ -/* PLB to OPB bridge */ -enum { - POB0_BESR0 =3D 0x0A0, - POB0_BESR1 =3D 0x0A2, - POB0_BEAR =3D 0x0A4, -}; - -static uint32_t dcr_read_pob(void *opaque, int dcrn) -{ - Ppc405PobState *pob =3D opaque; - uint32_t ret; - - switch (dcrn) { - case POB0_BEAR: - ret =3D pob->bear; - break; - case POB0_BESR0: - ret =3D pob->besr0; - break; - case POB0_BESR1: - ret =3D pob->besr1; - break; - default: - /* Avoid gcc warning */ - ret =3D 0; - break; - } - - return ret; -} - -static void dcr_write_pob(void *opaque, int dcrn, uint32_t val) -{ - Ppc405PobState *pob =3D opaque; - - switch (dcrn) { - case POB0_BEAR: - /* Read only */ - break; - case POB0_BESR0: - /* Write-clear */ - pob->besr0 &=3D ~val; - break; - case POB0_BESR1: - /* Write-clear */ - pob->besr1 &=3D ~val; - break; - } -} - -static void ppc405_pob_reset(DeviceState *dev) -{ - Ppc405PobState *pob =3D PPC405_POB(dev); - - /* No error */ - pob->bear =3D 0x00000000; - pob->besr0 =3D 0x0000000; - pob->besr1 =3D 0x0000000; -} - -static void ppc405_pob_realize(DeviceState *dev, Error **errp) -{ - Ppc405PobState *pob =3D PPC405_POB(dev); - Ppc4xxDcrDeviceState *dcr =3D PPC4xx_DCR_DEVICE(dev); - - ppc4xx_dcr_register(dcr, POB0_BEAR, pob, &dcr_read_pob, &dcr_write_pob= ); - ppc4xx_dcr_register(dcr, POB0_BESR0, pob, &dcr_read_pob, &dcr_write_po= b); - ppc4xx_dcr_register(dcr, POB0_BESR1, pob, &dcr_read_pob, &dcr_write_po= b); -} - -static void ppc405_pob_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D ppc405_pob_realize; - device_class_set_legacy_reset(dc, ppc405_pob_reset); - /* Reason: only works as function of a ppc4xx SoC */ - dc->user_creatable =3D false; -} - -/*************************************************************************= ****/ -/* OPB arbitrer */ -static uint64_t opba_readb(void *opaque, hwaddr addr, unsigned size) -{ - Ppc405OpbaState *opba =3D opaque; - uint32_t ret; - - switch (addr) { - case 0x00: - ret =3D opba->cr; - break; - case 0x01: - ret =3D opba->pr; - break; - default: - ret =3D 0x00; - break; - } - - trace_opba_readb(addr, ret); - return ret; -} - -static void opba_writeb(void *opaque, hwaddr addr, uint64_t value, - unsigned size) -{ - Ppc405OpbaState *opba =3D opaque; - - trace_opba_writeb(addr, value); - - switch (addr) { - case 0x00: - opba->cr =3D value & 0xF8; - break; - case 0x01: - opba->pr =3D value & 0xFF; - break; - default: - break; - } -} -static const MemoryRegionOps opba_ops =3D { - .read =3D opba_readb, - .write =3D opba_writeb, - .impl.min_access_size =3D 1, - .impl.max_access_size =3D 1, - .valid.min_access_size =3D 1, - .valid.max_access_size =3D 4, - .endianness =3D DEVICE_BIG_ENDIAN, -}; - -static void ppc405_opba_reset(DeviceState *dev) -{ - Ppc405OpbaState *opba =3D PPC405_OPBA(dev); - - opba->cr =3D 0x00; /* No dynamic priorities - park disabled */ - opba->pr =3D 0x11; -} - -static void ppc405_opba_realize(DeviceState *dev, Error **errp) -{ - Ppc405OpbaState *s =3D PPC405_OPBA(dev); - - memory_region_init_io(&s->io, OBJECT(s), &opba_ops, s, "opba", 2); - sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->io); -} - -static void ppc405_opba_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D ppc405_opba_realize; - device_class_set_legacy_reset(dc, ppc405_opba_reset); - /* Reason: only works as function of a ppc4xx SoC */ - dc->user_creatable =3D false; -} - -/*************************************************************************= ****/ -/* Code decompression controller */ -/* XXX: TODO */ - -/*************************************************************************= ****/ -/* DMA controller */ -enum { - DMA0_CR0 =3D 0x100, - DMA0_CT0 =3D 0x101, - DMA0_DA0 =3D 0x102, - DMA0_SA0 =3D 0x103, - DMA0_SG0 =3D 0x104, - DMA0_CR1 =3D 0x108, - DMA0_CT1 =3D 0x109, - DMA0_DA1 =3D 0x10A, - DMA0_SA1 =3D 0x10B, - DMA0_SG1 =3D 0x10C, - DMA0_CR2 =3D 0x110, - DMA0_CT2 =3D 0x111, - DMA0_DA2 =3D 0x112, - DMA0_SA2 =3D 0x113, - DMA0_SG2 =3D 0x114, - DMA0_CR3 =3D 0x118, - DMA0_CT3 =3D 0x119, - DMA0_DA3 =3D 0x11A, - DMA0_SA3 =3D 0x11B, - DMA0_SG3 =3D 0x11C, - DMA0_SR =3D 0x120, - DMA0_SGC =3D 0x123, - DMA0_SLP =3D 0x125, - DMA0_POL =3D 0x126, -}; - -static uint32_t dcr_read_dma(void *opaque, int dcrn) -{ - return 0; -} - -static void dcr_write_dma(void *opaque, int dcrn, uint32_t val) -{ -} - -static void ppc405_dma_reset(DeviceState *dev) -{ - Ppc405DmaState *dma =3D PPC405_DMA(dev); - int i; - - for (i =3D 0; i < 4; i++) { - dma->cr[i] =3D 0x00000000; - dma->ct[i] =3D 0x00000000; - dma->da[i] =3D 0x00000000; - dma->sa[i] =3D 0x00000000; - dma->sg[i] =3D 0x00000000; - } - dma->sr =3D 0x00000000; - dma->sgc =3D 0x00000000; - dma->slp =3D 0x7C000000; - dma->pol =3D 0x00000000; -} - -static void ppc405_dma_realize(DeviceState *dev, Error **errp) -{ - Ppc405DmaState *dma =3D PPC405_DMA(dev); - Ppc4xxDcrDeviceState *dcr =3D PPC4xx_DCR_DEVICE(dev); - int i; - - for (i =3D 0; i < ARRAY_SIZE(dma->irqs); i++) { - sysbus_init_irq(SYS_BUS_DEVICE(dma), &dma->irqs[i]); - } - - ppc4xx_dcr_register(dcr, DMA0_CR0, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_CT0, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_DA0, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_SA0, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_SG0, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_CR1, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_CT1, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_DA1, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_SA1, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_SG1, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_CR2, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_CT2, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_DA2, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_SA2, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_SG2, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_CR3, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_CT3, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_DA3, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_SA3, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_SG3, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_SR, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_SGC, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_SLP, dma, &dcr_read_dma, &dcr_write_dma); - ppc4xx_dcr_register(dcr, DMA0_POL, dma, &dcr_read_dma, &dcr_write_dma); -} - -static void ppc405_dma_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D ppc405_dma_realize; - device_class_set_legacy_reset(dc, ppc405_dma_reset); - /* Reason: only works as function of a ppc4xx SoC */ - dc->user_creatable =3D false; -} - -/*************************************************************************= ****/ -/* GPIO */ -static uint64_t ppc405_gpio_read(void *opaque, hwaddr addr, unsigned size) -{ - trace_ppc405_gpio_read(addr, size); - return 0; -} - -static void ppc405_gpio_write(void *opaque, hwaddr addr, uint64_t value, - unsigned size) -{ - trace_ppc405_gpio_write(addr, size, value); -} - -static const MemoryRegionOps ppc405_gpio_ops =3D { - .read =3D ppc405_gpio_read, - .write =3D ppc405_gpio_write, - .endianness =3D DEVICE_NATIVE_ENDIAN, -}; - -static void ppc405_gpio_realize(DeviceState *dev, Error **errp) -{ - Ppc405GpioState *s =3D PPC405_GPIO(dev); - - memory_region_init_io(&s->io, OBJECT(s), &ppc405_gpio_ops, s, "gpio", - 0x38); - sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->io); -} - -static void ppc405_gpio_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D ppc405_gpio_realize; - /* Reason: only works as function of a ppc4xx SoC */ - dc->user_creatable =3D false; -} - -/*************************************************************************= ****/ -/* On Chip Memory */ -enum { - OCM0_ISARC =3D 0x018, - OCM0_ISACNTL =3D 0x019, - OCM0_DSARC =3D 0x01A, - OCM0_DSACNTL =3D 0x01B, -}; - -static void ocm_update_mappings(Ppc405OcmState *ocm, - uint32_t isarc, uint32_t isacntl, - uint32_t dsarc, uint32_t dsacntl) -{ - trace_ocm_update_mappings(isarc, isacntl, dsarc, dsacntl, ocm->isarc, - ocm->isacntl, ocm->dsarc, ocm->dsacntl); - - if (ocm->isarc !=3D isarc || - (ocm->isacntl & 0x80000000) !=3D (isacntl & 0x80000000)) { - if (ocm->isacntl & 0x80000000) { - /* Unmap previously assigned memory region */ - trace_ocm_unmap("ISA", ocm->isarc); - memory_region_del_subregion(get_system_memory(), &ocm->isarc_r= am); - } - if (isacntl & 0x80000000) { - /* Map new instruction memory region */ - trace_ocm_map("ISA", isarc); - memory_region_add_subregion(get_system_memory(), isarc, - &ocm->isarc_ram); - } - } - if (ocm->dsarc !=3D dsarc || - (ocm->dsacntl & 0x80000000) !=3D (dsacntl & 0x80000000)) { - if (ocm->dsacntl & 0x80000000) { - /* Beware not to unmap the region we just mapped */ - if (!(isacntl & 0x80000000) || ocm->dsarc !=3D isarc) { - /* Unmap previously assigned memory region */ - trace_ocm_unmap("DSA", ocm->dsarc); - memory_region_del_subregion(get_system_memory(), - &ocm->dsarc_ram); - } - } - if (dsacntl & 0x80000000) { - /* Beware not to remap the region we just mapped */ - if (!(isacntl & 0x80000000) || dsarc !=3D isarc) { - /* Map new data memory region */ - trace_ocm_map("DSA", dsarc); - memory_region_add_subregion(get_system_memory(), dsarc, - &ocm->dsarc_ram); - } - } - } -} - -static uint32_t dcr_read_ocm(void *opaque, int dcrn) -{ - Ppc405OcmState *ocm =3D opaque; - uint32_t ret; - - switch (dcrn) { - case OCM0_ISARC: - ret =3D ocm->isarc; - break; - case OCM0_ISACNTL: - ret =3D ocm->isacntl; - break; - case OCM0_DSARC: - ret =3D ocm->dsarc; - break; - case OCM0_DSACNTL: - ret =3D ocm->dsacntl; - break; - default: - ret =3D 0; - break; - } - - return ret; -} - -static void dcr_write_ocm(void *opaque, int dcrn, uint32_t val) -{ - Ppc405OcmState *ocm =3D opaque; - uint32_t isarc, dsarc, isacntl, dsacntl; - - isarc =3D ocm->isarc; - dsarc =3D ocm->dsarc; - isacntl =3D ocm->isacntl; - dsacntl =3D ocm->dsacntl; - switch (dcrn) { - case OCM0_ISARC: - isarc =3D val & 0xFC000000; - break; - case OCM0_ISACNTL: - isacntl =3D val & 0xC0000000; - break; - case OCM0_DSARC: - isarc =3D val & 0xFC000000; - break; - case OCM0_DSACNTL: - isacntl =3D val & 0xC0000000; - break; - } - ocm_update_mappings(ocm, isarc, isacntl, dsarc, dsacntl); - ocm->isarc =3D isarc; - ocm->dsarc =3D dsarc; - ocm->isacntl =3D isacntl; - ocm->dsacntl =3D dsacntl; -} - -static void ppc405_ocm_reset(DeviceState *dev) -{ - Ppc405OcmState *ocm =3D PPC405_OCM(dev); - uint32_t isarc, dsarc, isacntl, dsacntl; - - isarc =3D 0x00000000; - isacntl =3D 0x00000000; - dsarc =3D 0x00000000; - dsacntl =3D 0x00000000; - ocm_update_mappings(ocm, isarc, isacntl, dsarc, dsacntl); - ocm->isarc =3D isarc; - ocm->dsarc =3D dsarc; - ocm->isacntl =3D isacntl; - ocm->dsacntl =3D dsacntl; -} - -static void ppc405_ocm_realize(DeviceState *dev, Error **errp) -{ - Ppc405OcmState *ocm =3D PPC405_OCM(dev); - Ppc4xxDcrDeviceState *dcr =3D PPC4xx_DCR_DEVICE(dev); - - /* XXX: Size is 4096 or 0x04000000 */ - memory_region_init_ram(&ocm->isarc_ram, OBJECT(ocm), "ppc405.ocm", 4 *= KiB, - &error_fatal); - memory_region_init_alias(&ocm->dsarc_ram, OBJECT(ocm), "ppc405.dsarc", - &ocm->isarc_ram, 0, 4 * KiB); - - ppc4xx_dcr_register(dcr, OCM0_ISARC, ocm, &dcr_read_ocm, &dcr_write_oc= m); - ppc4xx_dcr_register(dcr, OCM0_ISACNTL, ocm, &dcr_read_ocm, &dcr_write_= ocm); - ppc4xx_dcr_register(dcr, OCM0_DSARC, ocm, &dcr_read_ocm, &dcr_write_oc= m); - ppc4xx_dcr_register(dcr, OCM0_DSACNTL, ocm, &dcr_read_ocm, &dcr_write_= ocm); -} - -static void ppc405_ocm_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D ppc405_ocm_realize; - device_class_set_legacy_reset(dc, ppc405_ocm_reset); - /* Reason: only works as function of a ppc4xx SoC */ - dc->user_creatable =3D false; -} - -/*************************************************************************= ****/ -/* General purpose timers */ -static int ppc4xx_gpt_compare(Ppc405GptState *gpt, int n) -{ - /* XXX: TODO */ - return 0; -} - -static void ppc4xx_gpt_set_output(Ppc405GptState *gpt, int n, int level) -{ - /* XXX: TODO */ -} - -static void ppc4xx_gpt_set_outputs(Ppc405GptState *gpt) -{ - uint32_t mask; - int i; - - mask =3D 0x80000000; - for (i =3D 0; i < 5; i++) { - if (gpt->oe & mask) { - /* Output is enabled */ - if (ppc4xx_gpt_compare(gpt, i)) { - /* Comparison is OK */ - ppc4xx_gpt_set_output(gpt, i, gpt->ol & mask); - } else { - /* Comparison is KO */ - ppc4xx_gpt_set_output(gpt, i, gpt->ol & mask ? 0 : 1); - } - } - mask =3D mask >> 1; - } -} - -static void ppc4xx_gpt_set_irqs(Ppc405GptState *gpt) -{ - uint32_t mask; - int i; - - mask =3D 0x00008000; - for (i =3D 0; i < 5; i++) { - if (gpt->is & gpt->im & mask) { - qemu_irq_raise(gpt->irqs[i]); - } else { - qemu_irq_lower(gpt->irqs[i]); - } - mask =3D mask >> 1; - } -} - -static void ppc4xx_gpt_compute_timer(Ppc405GptState *gpt) -{ - /* XXX: TODO */ -} - -static uint64_t ppc4xx_gpt_read(void *opaque, hwaddr addr, unsigned size) -{ - Ppc405GptState *gpt =3D opaque; - uint32_t ret; - int idx; - - trace_ppc4xx_gpt_read(addr, size); - - switch (addr) { - case 0x00: - /* Time base counter */ - ret =3D muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + gpt->tb_o= ffset, - gpt->tb_freq, NANOSECONDS_PER_SECOND); - break; - case 0x10: - /* Output enable */ - ret =3D gpt->oe; - break; - case 0x14: - /* Output level */ - ret =3D gpt->ol; - break; - case 0x18: - /* Interrupt mask */ - ret =3D gpt->im; - break; - case 0x1C: - case 0x20: - /* Interrupt status */ - ret =3D gpt->is; - break; - case 0x24: - /* Interrupt enable */ - ret =3D gpt->ie; - break; - case 0x80 ... 0x90: - /* Compare timer */ - idx =3D (addr - 0x80) >> 2; - ret =3D gpt->comp[idx]; - break; - case 0xC0 ... 0xD0: - /* Compare mask */ - idx =3D (addr - 0xC0) >> 2; - ret =3D gpt->mask[idx]; - break; - default: - ret =3D -1; - break; - } - - return ret; -} - -static void ppc4xx_gpt_write(void *opaque, hwaddr addr, uint64_t value, - unsigned size) -{ - Ppc405GptState *gpt =3D opaque; - int idx; - - trace_ppc4xx_gpt_write(addr, size, value); - - switch (addr) { - case 0x00: - /* Time base counter */ - gpt->tb_offset =3D muldiv64(value, NANOSECONDS_PER_SECOND, gpt->tb= _freq) - - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); - ppc4xx_gpt_compute_timer(gpt); - break; - case 0x10: - /* Output enable */ - gpt->oe =3D value & 0xF8000000; - ppc4xx_gpt_set_outputs(gpt); - break; - case 0x14: - /* Output level */ - gpt->ol =3D value & 0xF8000000; - ppc4xx_gpt_set_outputs(gpt); - break; - case 0x18: - /* Interrupt mask */ - gpt->im =3D value & 0x0000F800; - break; - case 0x1C: - /* Interrupt status set */ - gpt->is |=3D value & 0x0000F800; - ppc4xx_gpt_set_irqs(gpt); - break; - case 0x20: - /* Interrupt status clear */ - gpt->is &=3D ~(value & 0x0000F800); - ppc4xx_gpt_set_irqs(gpt); - break; - case 0x24: - /* Interrupt enable */ - gpt->ie =3D value & 0x0000F800; - ppc4xx_gpt_set_irqs(gpt); - break; - case 0x80 ... 0x90: - /* Compare timer */ - idx =3D (addr - 0x80) >> 2; - gpt->comp[idx] =3D value & 0xF8000000; - ppc4xx_gpt_compute_timer(gpt); - break; - case 0xC0 ... 0xD0: - /* Compare mask */ - idx =3D (addr - 0xC0) >> 2; - gpt->mask[idx] =3D value & 0xF8000000; - ppc4xx_gpt_compute_timer(gpt); - break; - } -} - -static const MemoryRegionOps gpt_ops =3D { - .read =3D ppc4xx_gpt_read, - .write =3D ppc4xx_gpt_write, - .valid.min_access_size =3D 4, - .valid.max_access_size =3D 4, - .endianness =3D DEVICE_NATIVE_ENDIAN, -}; - -static void ppc4xx_gpt_cb(void *opaque) -{ - Ppc405GptState *gpt =3D opaque; - - ppc4xx_gpt_set_irqs(gpt); - ppc4xx_gpt_set_outputs(gpt); - ppc4xx_gpt_compute_timer(gpt); -} - -static void ppc405_gpt_reset(DeviceState *dev) -{ - Ppc405GptState *gpt =3D PPC405_GPT(dev); - int i; - - timer_del(gpt->timer); - gpt->oe =3D 0x00000000; - gpt->ol =3D 0x00000000; - gpt->im =3D 0x00000000; - gpt->is =3D 0x00000000; - gpt->ie =3D 0x00000000; - for (i =3D 0; i < 5; i++) { - gpt->comp[i] =3D 0x00000000; - gpt->mask[i] =3D 0x00000000; - } -} - -static void ppc405_gpt_realize(DeviceState *dev, Error **errp) -{ - Ppc405GptState *s =3D PPC405_GPT(dev); - SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); - int i; - - s->timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, &ppc4xx_gpt_cb, s); - memory_region_init_io(&s->iomem, OBJECT(s), &gpt_ops, s, "gpt", 0xd4); - sysbus_init_mmio(sbd, &s->iomem); - - for (i =3D 0; i < ARRAY_SIZE(s->irqs); i++) { - sysbus_init_irq(sbd, &s->irqs[i]); - } -} - -static void ppc405_gpt_finalize(Object *obj) -{ - /* timer will be NULL if the GPT wasn't realized */ - if (PPC405_GPT(obj)->timer) { - timer_del(PPC405_GPT(obj)->timer); - } -} - -static void ppc405_gpt_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D ppc405_gpt_realize; - device_class_set_legacy_reset(dc, ppc405_gpt_reset); - /* Reason: only works as function of a ppc4xx SoC */ - dc->user_creatable =3D false; -} - -/*************************************************************************= ****/ -/* PowerPC 405EP */ -/* CPU control */ -enum { - PPC405EP_CPC0_PLLMR0 =3D 0x0F0, - PPC405EP_CPC0_BOOT =3D 0x0F1, - PPC405EP_CPC0_EPCTL =3D 0x0F3, - PPC405EP_CPC0_PLLMR1 =3D 0x0F4, - PPC405EP_CPC0_UCR =3D 0x0F5, - PPC405EP_CPC0_SRR =3D 0x0F6, - PPC405EP_CPC0_JTAGID =3D 0x0F7, - PPC405EP_CPC0_PCI =3D 0x0F9, -#if 0 - PPC405EP_CPC0_ER =3D xxx, - PPC405EP_CPC0_FR =3D xxx, - PPC405EP_CPC0_SR =3D xxx, -#endif -}; - -static void ppc405ep_compute_clocks(Ppc405CpcState *cpc) -{ - uint32_t CPU_clk, PLB_clk, OPB_clk, EBC_clk, MAL_clk, PCI_clk; - uint32_t UART0_clk, UART1_clk; - uint64_t VCO_out, PLL_out; - int M, D; - - VCO_out =3D 0; - if ((cpc->pllmr[1] & 0x80000000) && !(cpc->pllmr[1] & 0x40000000)) { - M =3D (((cpc->pllmr[1] >> 20) - 1) & 0xF) + 1; /* FBMUL */ - trace_ppc405ep_clocks_compute("FBMUL", (cpc->pllmr[1] >> 20) & 0xF= , M); - D =3D 8 - ((cpc->pllmr[1] >> 16) & 0x7); /* FWDA */ - trace_ppc405ep_clocks_compute("FWDA", (cpc->pllmr[1] >> 16) & 0x7,= D); - VCO_out =3D (uint64_t)cpc->sysclk * M * D; - if (VCO_out < 500000000UL || VCO_out > 1000000000UL) { - /* Error - unlock the PLL */ - qemu_log_mask(LOG_GUEST_ERROR, "VCO out of range %" PRIu64 "\n= ", - VCO_out); -#if 0 - cpc->pllmr[1] &=3D ~0x80000000; - goto pll_bypass; -#endif - } - PLL_out =3D VCO_out / D; - /* Pretend the PLL is locked */ - cpc->boot |=3D 0x00000001; - } else { -#if 0 - pll_bypass: -#endif - PLL_out =3D cpc->sysclk; - if (cpc->pllmr[1] & 0x40000000) { - /* Pretend the PLL is not locked */ - cpc->boot &=3D ~0x00000001; - } - } - /* Now, compute all other clocks */ - D =3D ((cpc->pllmr[0] >> 20) & 0x3) + 1; /* CCDV */ - trace_ppc405ep_clocks_compute("CCDV", (cpc->pllmr[0] >> 20) & 0x3, D); - CPU_clk =3D PLL_out / D; - D =3D ((cpc->pllmr[0] >> 16) & 0x3) + 1; /* CBDV */ - trace_ppc405ep_clocks_compute("CBDV", (cpc->pllmr[0] >> 16) & 0x3, D); - PLB_clk =3D CPU_clk / D; - D =3D ((cpc->pllmr[0] >> 12) & 0x3) + 1; /* OPDV */ - trace_ppc405ep_clocks_compute("OPDV", (cpc->pllmr[0] >> 12) & 0x3, D); - OPB_clk =3D PLB_clk / D; - D =3D ((cpc->pllmr[0] >> 8) & 0x3) + 2; /* EPDV */ - trace_ppc405ep_clocks_compute("EPDV", (cpc->pllmr[0] >> 8) & 0x3, D); - EBC_clk =3D PLB_clk / D; - D =3D ((cpc->pllmr[0] >> 4) & 0x3) + 1; /* MPDV */ - trace_ppc405ep_clocks_compute("MPDV", (cpc->pllmr[0] >> 4) & 0x3, D); - MAL_clk =3D PLB_clk / D; - D =3D (cpc->pllmr[0] & 0x3) + 1; /* PPDV */ - trace_ppc405ep_clocks_compute("PPDV", cpc->pllmr[0] & 0x3, D); - PCI_clk =3D PLB_clk / D; - D =3D ((cpc->ucr - 1) & 0x7F) + 1; /* U0DIV */ - trace_ppc405ep_clocks_compute("U0DIV", cpc->ucr & 0x7F, D); - UART0_clk =3D PLL_out / D; - D =3D (((cpc->ucr >> 8) - 1) & 0x7F) + 1; /* U1DIV */ - trace_ppc405ep_clocks_compute("U1DIV", (cpc->ucr >> 8) & 0x7F, D); - UART1_clk =3D PLL_out / D; - - if (trace_event_get_state_backends(TRACE_PPC405EP_CLOCKS_SETUP)) { - g_autofree char *trace =3D g_strdup_printf( - "Setup PPC405EP clocks - sysclk %" PRIu32 " VCO %" PRIu64 - " PLL out %" PRIu64 " Hz\n" - "CPU %" PRIu32 " PLB %" PRIu32 " OPB %" PRIu32 " EBC %" PRIu32 - " MAL %" PRIu32 " PCI %" PRIu32 " UART0 %" PRIu32 - " UART1 %" PRIu32 "\n", - cpc->sysclk, VCO_out, PLL_out, - CPU_clk, PLB_clk, OPB_clk, EBC_clk, MAL_clk, PCI_clk, - UART0_clk, UART1_clk); - trace_ppc405ep_clocks_setup(trace); - } - - /* Setup CPU clocks */ - clk_setup(&cpc->clk_setup[PPC405EP_CPU_CLK], CPU_clk); - /* Setup PLB clock */ - clk_setup(&cpc->clk_setup[PPC405EP_PLB_CLK], PLB_clk); - /* Setup OPB clock */ - clk_setup(&cpc->clk_setup[PPC405EP_OPB_CLK], OPB_clk); - /* Setup external clock */ - clk_setup(&cpc->clk_setup[PPC405EP_EBC_CLK], EBC_clk); - /* Setup MAL clock */ - clk_setup(&cpc->clk_setup[PPC405EP_MAL_CLK], MAL_clk); - /* Setup PCI clock */ - clk_setup(&cpc->clk_setup[PPC405EP_PCI_CLK], PCI_clk); - /* Setup UART0 clock */ - clk_setup(&cpc->clk_setup[PPC405EP_UART0_CLK], UART0_clk); - /* Setup UART1 clock */ - clk_setup(&cpc->clk_setup[PPC405EP_UART1_CLK], UART1_clk); -} - -static uint32_t dcr_read_epcpc(void *opaque, int dcrn) -{ - Ppc405CpcState *cpc =3D opaque; - uint32_t ret; - - switch (dcrn) { - case PPC405EP_CPC0_BOOT: - ret =3D cpc->boot; - break; - case PPC405EP_CPC0_EPCTL: - ret =3D cpc->epctl; - break; - case PPC405EP_CPC0_PLLMR0: - ret =3D cpc->pllmr[0]; - break; - case PPC405EP_CPC0_PLLMR1: - ret =3D cpc->pllmr[1]; - break; - case PPC405EP_CPC0_UCR: - ret =3D cpc->ucr; - break; - case PPC405EP_CPC0_SRR: - ret =3D cpc->srr; - break; - case PPC405EP_CPC0_JTAGID: - ret =3D cpc->jtagid; - break; - case PPC405EP_CPC0_PCI: - ret =3D cpc->pci; - break; - default: - /* Avoid gcc warning */ - ret =3D 0; - break; - } - - return ret; -} - -static void dcr_write_epcpc(void *opaque, int dcrn, uint32_t val) -{ - Ppc405CpcState *cpc =3D opaque; - - switch (dcrn) { - case PPC405EP_CPC0_BOOT: - /* Read-only register */ - break; - case PPC405EP_CPC0_EPCTL: - /* Don't care for now */ - cpc->epctl =3D val & 0xC00000F3; - break; - case PPC405EP_CPC0_PLLMR0: - cpc->pllmr[0] =3D val & 0x00633333; - ppc405ep_compute_clocks(cpc); - break; - case PPC405EP_CPC0_PLLMR1: - cpc->pllmr[1] =3D val & 0xC0F73FFF; - ppc405ep_compute_clocks(cpc); - break; - case PPC405EP_CPC0_UCR: - /* UART control - don't care for now */ - cpc->ucr =3D val & 0x003F7F7F; - break; - case PPC405EP_CPC0_SRR: - cpc->srr =3D val; - break; - case PPC405EP_CPC0_JTAGID: - /* Read-only */ - break; - case PPC405EP_CPC0_PCI: - cpc->pci =3D val; - break; - } -} - -static void ppc405_cpc_reset(DeviceState *dev) -{ - Ppc405CpcState *cpc =3D PPC405_CPC(dev); - - cpc->boot =3D 0x00000010; /* Boot from PCI - IIC EEPROM disabled */ - cpc->epctl =3D 0x00000000; - cpc->pllmr[0] =3D 0x00021002; - cpc->pllmr[1] =3D 0x80a552be; - cpc->ucr =3D 0x00004646; - cpc->srr =3D 0x00040000; - cpc->pci =3D 0x00000000; - cpc->er =3D 0x00000000; - cpc->fr =3D 0x00000000; - cpc->sr =3D 0x00000000; - cpc->jtagid =3D 0x20267049; - ppc405ep_compute_clocks(cpc); -} - -/* XXX: sysclk should be between 25 and 100 MHz */ -static void ppc405_cpc_realize(DeviceState *dev, Error **errp) -{ - Ppc405CpcState *cpc =3D PPC405_CPC(dev); - Ppc4xxDcrDeviceState *dcr =3D PPC4xx_DCR_DEVICE(dev); - - assert(dcr->cpu); - cpc->clk_setup[PPC405EP_CPU_CLK].cb =3D - ppc_40x_timers_init(&dcr->cpu->env, cpc->sysclk, PPC_INTERRUPT_PIT= ); - cpc->clk_setup[PPC405EP_CPU_CLK].opaque =3D &dcr->cpu->env; - - ppc4xx_dcr_register(dcr, PPC405EP_CPC0_BOOT, cpc, - &dcr_read_epcpc, &dcr_write_epcpc); - ppc4xx_dcr_register(dcr, PPC405EP_CPC0_EPCTL, cpc, - &dcr_read_epcpc, &dcr_write_epcpc); - ppc4xx_dcr_register(dcr, PPC405EP_CPC0_PLLMR0, cpc, - &dcr_read_epcpc, &dcr_write_epcpc); - ppc4xx_dcr_register(dcr, PPC405EP_CPC0_PLLMR1, cpc, - &dcr_read_epcpc, &dcr_write_epcpc); - ppc4xx_dcr_register(dcr, PPC405EP_CPC0_UCR, cpc, - &dcr_read_epcpc, &dcr_write_epcpc); - ppc4xx_dcr_register(dcr, PPC405EP_CPC0_SRR, cpc, - &dcr_read_epcpc, &dcr_write_epcpc); - ppc4xx_dcr_register(dcr, PPC405EP_CPC0_JTAGID, cpc, - &dcr_read_epcpc, &dcr_write_epcpc); - ppc4xx_dcr_register(dcr, PPC405EP_CPC0_PCI, cpc, - &dcr_read_epcpc, &dcr_write_epcpc); -} - -static const Property ppc405_cpc_properties[] =3D { - DEFINE_PROP_UINT32("sys-clk", Ppc405CpcState, sysclk, 0), -}; - -static void ppc405_cpc_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D ppc405_cpc_realize; - device_class_set_legacy_reset(dc, ppc405_cpc_reset); - /* Reason: only works as function of a ppc4xx SoC */ - dc->user_creatable =3D false; - device_class_set_props(dc, ppc405_cpc_properties); -} - -/* PPC405_SOC */ - -static void ppc405_soc_instance_init(Object *obj) -{ - Ppc405SoCState *s =3D PPC405_SOC(obj); - - object_initialize_child(obj, "cpu", &s->cpu, - POWERPC_CPU_TYPE_NAME("405ep")); - - object_initialize_child(obj, "uic", &s->uic, TYPE_PPC_UIC); - - object_initialize_child(obj, "cpc", &s->cpc, TYPE_PPC405_CPC); - object_property_add_alias(obj, "sys-clk", OBJECT(&s->cpc), "sys-clk"); - - object_initialize_child(obj, "gpt", &s->gpt, TYPE_PPC405_GPT); - - object_initialize_child(obj, "ocm", &s->ocm, TYPE_PPC405_OCM); - - object_initialize_child(obj, "gpio", &s->gpio, TYPE_PPC405_GPIO); - - object_initialize_child(obj, "dma", &s->dma, TYPE_PPC405_DMA); - - object_initialize_child(obj, "i2c", &s->i2c, TYPE_PPC4xx_I2C); - - object_initialize_child(obj, "ebc", &s->ebc, TYPE_PPC4xx_EBC); - - object_initialize_child(obj, "opba", &s->opba, TYPE_PPC405_OPBA); - - object_initialize_child(obj, "pob", &s->pob, TYPE_PPC405_POB); - - object_initialize_child(obj, "plb", &s->plb, TYPE_PPC4xx_PLB); - - object_initialize_child(obj, "mal", &s->mal, TYPE_PPC4xx_MAL); - - object_initialize_child(obj, "sdram", &s->sdram, TYPE_PPC4xx_SDRAM_DDR= ); - object_property_add_alias(obj, "dram", OBJECT(&s->sdram), "dram"); -} - -static void ppc405_reset(void *opaque) -{ - cpu_reset(CPU(opaque)); -} - -static void ppc405_soc_realize(DeviceState *dev, Error **errp) -{ - Ppc405SoCState *s =3D PPC405_SOC(dev); - CPUPPCState *env; - SysBusDevice *sbd; - int i; - - /* init CPUs */ - if (!qdev_realize(DEVICE(&s->cpu), NULL, errp)) { - return; - } - qemu_register_reset(ppc405_reset, &s->cpu); - - env =3D &s->cpu.env; - - ppc_dcr_init(env, NULL, NULL); - - /* CPU control */ - if (!ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(&s->cpc), &s->cpu, errp)) { - return; - } - - /* PLB arbitrer */ - if (!ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(&s->plb), &s->cpu, errp)) { - return; - } - - /* PLB to OPB bridge */ - if (!ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(&s->pob), &s->cpu, errp)) { - return; - } - - /* OBP arbitrer */ - sbd =3D SYS_BUS_DEVICE(&s->opba); - if (!sysbus_realize(sbd, errp)) { - return; - } - sysbus_mmio_map(sbd, 0, 0xef600600); - - /* Universal interrupt controller */ - if (!ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(&s->uic), &s->cpu, errp)) { - return; - } - sbd =3D SYS_BUS_DEVICE(&s->uic); - sysbus_connect_irq(sbd, PPCUIC_OUTPUT_INT, - qdev_get_gpio_in(DEVICE(&s->cpu), PPC40x_INPUT_INT)= ); - sysbus_connect_irq(sbd, PPCUIC_OUTPUT_CINT, - qdev_get_gpio_in(DEVICE(&s->cpu), PPC40x_INPUT_CINT= )); - - /* SDRAM controller */ - /* - * We use the 440 DDR SDRAM controller which has more regs and features - * but it's compatible enough for now - */ - object_property_set_int(OBJECT(&s->sdram), "nbanks", 2, &error_abort); - if (!ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(&s->sdram), &s->cpu, errp)) { - return; - } - /* XXX 405EP has no ECC interrupt */ - sysbus_connect_irq(SYS_BUS_DEVICE(&s->sdram), 0, - qdev_get_gpio_in(DEVICE(&s->uic), 17)); - - /* External bus controller */ - if (!ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(&s->ebc), &s->cpu, errp)) { - return; - } - - /* DMA controller */ - if (!ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(&s->dma), &s->cpu, errp)) { - return; - } - sbd =3D SYS_BUS_DEVICE(&s->dma); - for (i =3D 0; i < ARRAY_SIZE(s->dma.irqs); i++) { - sysbus_connect_irq(sbd, i, qdev_get_gpio_in(DEVICE(&s->uic), 5 + i= )); - } - - /* I2C controller */ - sbd =3D SYS_BUS_DEVICE(&s->i2c); - if (!sysbus_realize(sbd, errp)) { - return; - } - sysbus_mmio_map(sbd, 0, 0xef600500); - sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(DEVICE(&s->uic), 2)); - - /* GPIO */ - sbd =3D SYS_BUS_DEVICE(&s->gpio); - if (!sysbus_realize(sbd, errp)) { - return; - } - sysbus_mmio_map(sbd, 0, 0xef600700); - - /* Serial ports */ - if (serial_hd(0) !=3D NULL) { - serial_mm_init(get_system_memory(), 0xef600300, 0, - qdev_get_gpio_in(DEVICE(&s->uic), 0), - PPC_SERIAL_MM_BAUDBASE, serial_hd(0), - DEVICE_BIG_ENDIAN); - } - if (serial_hd(1) !=3D NULL) { - serial_mm_init(get_system_memory(), 0xef600400, 0, - qdev_get_gpio_in(DEVICE(&s->uic), 1), - PPC_SERIAL_MM_BAUDBASE, serial_hd(1), - DEVICE_BIG_ENDIAN); - } - - /* OCM */ - if (!ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(&s->ocm), &s->cpu, errp)) { - return; - } - - /* GPT */ - sbd =3D SYS_BUS_DEVICE(&s->gpt); - if (!sysbus_realize(sbd, errp)) { - return; - } - sysbus_mmio_map(sbd, 0, 0xef600000); - for (i =3D 0; i < ARRAY_SIZE(s->gpt.irqs); i++) { - sysbus_connect_irq(sbd, i, qdev_get_gpio_in(DEVICE(&s->uic), 19 + = i)); - } - - /* MAL */ - object_property_set_int(OBJECT(&s->mal), "txc-num", 4, &error_abort); - object_property_set_int(OBJECT(&s->mal), "rxc-num", 2, &error_abort); - if (!ppc4xx_dcr_realize(PPC4xx_DCR_DEVICE(&s->mal), &s->cpu, errp)) { - return; - } - sbd =3D SYS_BUS_DEVICE(&s->mal); - for (i =3D 0; i < ARRAY_SIZE(s->mal.irqs); i++) { - sysbus_connect_irq(sbd, i, qdev_get_gpio_in(DEVICE(&s->uic), 11 + = i)); - } - - /* Ethernet */ - /* Uses UIC IRQs 9, 15, 17 */ -} - -static void ppc405_soc_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D ppc405_soc_realize; - /* Reason: only works as part of a ppc405 board/machine */ - dc->user_creatable =3D false; -} - -static const TypeInfo ppc405_types[] =3D { - { - .name =3D TYPE_PPC405_POB, - .parent =3D TYPE_PPC4xx_DCR_DEVICE, - .instance_size =3D sizeof(Ppc405PobState), - .class_init =3D ppc405_pob_class_init, - }, { - .name =3D TYPE_PPC405_OPBA, - .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(Ppc405OpbaState), - .class_init =3D ppc405_opba_class_init, - }, { - .name =3D TYPE_PPC405_DMA, - .parent =3D TYPE_PPC4xx_DCR_DEVICE, - .instance_size =3D sizeof(Ppc405DmaState), - .class_init =3D ppc405_dma_class_init, - }, { - .name =3D TYPE_PPC405_GPIO, - .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(Ppc405GpioState), - .class_init =3D ppc405_gpio_class_init, - }, { - .name =3D TYPE_PPC405_OCM, - .parent =3D TYPE_PPC4xx_DCR_DEVICE, - .instance_size =3D sizeof(Ppc405OcmState), - .class_init =3D ppc405_ocm_class_init, - }, { - .name =3D TYPE_PPC405_GPT, - .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(Ppc405GptState), - .instance_finalize =3D ppc405_gpt_finalize, - .class_init =3D ppc405_gpt_class_init, - }, { - .name =3D TYPE_PPC405_CPC, - .parent =3D TYPE_PPC4xx_DCR_DEVICE, - .instance_size =3D sizeof(Ppc405CpcState), - .class_init =3D ppc405_cpc_class_init, - }, { - .name =3D TYPE_PPC405_SOC, - .parent =3D TYPE_DEVICE, - .instance_size =3D sizeof(Ppc405SoCState), - .instance_init =3D ppc405_soc_instance_init, - .class_init =3D ppc405_soc_class_init, - } -}; - -DEFINE_TYPES(ppc405_types) --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698034; cv=none; d=zohomail.com; s=zohoarc; b=GQmA/+TvVJVZbMXvzKaP4ub3a6bRTa2oi9AF/l8hgNwytkr0FZiH3qAKSCz41H0vYlyKmbloGqhwCWMfRYTA/08NOuD8LMNLXrWr0p3VC0HLj14LerSdBEp4ZDU+sh3vuHms035Jv4x4xg/z0jVo1pvJBAZ6w+jreVRo8W0PfNo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698034; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sBgrSU/V9kiJHYlPQWXMJ6s9y81s7RCCnVq7DtgjGLI=; b=jFljWIPr6S1dTzvoK8qah6IuPH0o+e/YQKJq8/gon60yYt2J+694AFCnl3BC1nDbxYSpFsdrWrhoOaesL+uyZ2a9J/Xsf3Eujd5dA8pOAwQecOhTJHFwTXJH6hlqOz3nlJSUtE6v5F1cN6tnSKSd+/OKiSW1EiW+e/rN++wBmT8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698034665857.6883723169784; Tue, 11 Mar 2025 06:00:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCA-0001AZ-00; Tue, 11 Mar 2025 08:58:54 -0400 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 1trzC2-0000xa-Ch; Tue, 11 Mar 2025 08:58:46 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzBs-0007pE-Ur; Tue, 11 Mar 2025 08:58:46 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-2ff80290debso7719591a91.3; Tue, 11 Mar 2025 05:58:35 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.58.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:58:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697914; x=1742302714; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sBgrSU/V9kiJHYlPQWXMJ6s9y81s7RCCnVq7DtgjGLI=; b=RvCu2h6SQ4K1A5XZ/zwwX8z0ORn0Y8ZU02QGHhOCD8bPzynVdovCZ8BwP3Ae6HHHvd qnk6cmePQsD7kBDKcgOKhiP+KHSvYy7f0iH6fp++Zprqa9icIiWeYPaFOXM4Wg1FrLJT kGHW3DYmmHrs/ED064+3apWU3LhhIBv4S73FJZxsqJGbpba24kV+xdogVCTB7UjIqPNE tP2KfM/8vWlIjFFQlJkEMpdsPZMnZf1jMX9cIEAbgNu1czRHT3/Tq25AFjsGk5WRVqCw ZbCfazQA0DKhzjIMskIImMbBjJ51jDMDDx5E6cSi7jOOYOyVpiLddcK3eNAfkcYgf0Qj CNww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697914; x=1742302714; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sBgrSU/V9kiJHYlPQWXMJ6s9y81s7RCCnVq7DtgjGLI=; b=LREkTCp9j+nfWkTHTZ4RHJVs4fT1MIUT5qssqO+U5K+Ne5FgyVdQLXwRb9LB1pQG9u wnjYvwWGNsMj8FDivi2ZqeMifRZDbTese91quJcPTIul2rS43Nl5RskOuMal2lI2FxVa hKQSzdKBf/fjQKygmQpvAG54zeCOo7FnAa7g1lyVoCus6RoH8/iIa7UkGRVRZtfPaMjE QAUSMzXbBZpUS7Ckt7GlrrJlMpq19PkNlwVoCLDgSGMgyAtEV9O/Xh3RkGeqxge3unxy y9saf9Yxw97+BdD67LXwFJJAkJ0fFzL+2e38NDOyp41pwmn5NnFXw38p9QK0KOIZpAoK +qOw== X-Forwarded-Encrypted: i=1; AJvYcCWWmpsbMbZPS99fT2RdigvurkQU5rwUIuk+ybYDP2rHhUrjHCs7Rio7bwZn/6+VZtgzbji06MxstQ==@nongnu.org X-Gm-Message-State: AOJu0Yxf6LbiaDyghklLQfMMIgfmkh5mQuEwQ2FHsDiKq4c3eQNbOV5c Gdr64HAWL+sMwe7Fc8CzSYF6G5wlqi/CcP5zQ5CkSdvK0TaVJ3V7L497TA== X-Gm-Gg: ASbGncv/lo6//BXXZ7Vk4KS/LZRJmUD7hI03SLJH76v9J4pwo0oYnEx0jvUguPkqzQf gz7l0hXWAuMBvDNxxfRPoqjDysZvnZMpuNz9MFwb2hQQ+7E6PMA8wzTOoXtrF5VYSQ0xIIo56cA QCWY5td5Qf6kIrzzL2pmb7Bxh82kPKfyDBuhkkvk/w+LHcCAs8F1wbL/stuwhXwK5gSNCHl7Qpq qQ9JYYd4kCGiA21wGscQkCZzW+aQLocZIHeS0PSMZfnCdBIrjsnv6nNFMf+YIcFvPKzsp+Ke3V1 piUv7caxjwrG4sV7awfSitXFLg8vgI3mPmPc9LEKU27HOuJS11Pa0ROr2X8eMQ== X-Google-Smtp-Source: AGHT+IFjxpTwGyFJIK61Ujhn4nfL8tUwiE4L9lGL6UtH8mIRIcJfvV2tskX7D61uLejfWBGjJbpMTQ== X-Received: by 2002:a17:90b:2d82:b0:2ff:6aa6:47a3 with SMTP id 98e67ed59e1d1-2ff7ced8c45mr27732195a91.25.1741697914329; Tue, 11 Mar 2025 05:58:34 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [PULL 03/72] hw/ppc: Deprecate 405 CPUs Date: Tue, 11 Mar 2025 22:56:57 +1000 Message-ID: <20250311125815.903177-4-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698037468019000 From: C=C3=A9dric Le Goater The ref405ep machine is scheduled for removal in QEMU 10.0. Keep the 405 CPU implementation for a while because it is theoretically possible to model the power management (OCC) co-processor found on the IBM POWER [8-11] processors. Signed-off-by: C=C3=A9dric Le Goater Reviewed-by: Nicholas Piggin Message-ID: <20250204080649.836155-4-clg@redhat.com> Signed-off-by: Nicholas Piggin --- docs/about/deprecated.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 3d39d2a9da..e2b4f077d4 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -266,6 +266,15 @@ in the QEMU object model anymore. ``Sun-UltraSparc-III= i+`` and but for consistency these will get removed in a future release, too. Use ``Sun-UltraSparc-IIIi-plus`` and ``Sun-UltraSparc-IV-plus`` instead. =20 +PPC 405 CPUs (since 10.0) +''''''''''''''''''''''''' + +The PPC 405 CPU has no known users and the ``ref405ep`` machine was +removed in QEMU 10.0. Since the IBM POWER [8-11] processors uses an +embedded 405 for power management (OCC) and other internal tasks, it +is theoretically possible to use QEMU to model them. Let's keep the +CPU implementation for a while before removing all support. + System emulator machines ------------------------ =20 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699980; cv=none; d=zohomail.com; s=zohoarc; b=fKazQdT/qtSF4MomZnuxjE5M9IySJ5+zy0svrPKPsnXP2FpLEsyis0wCLQSNNIzwW0b8VLFjNaoyhpblA6Be88Dpe92+vyEtip92izFXd2Z1FE7iK4UxjxY9zAPRJrXXTnrdec1Uye901ALF29oL/dwEOxp/mTTvDCiRSMKzRD0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699980; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rBUe/WA9nsu0CxkSM+Xn01IFK5k9XxBynarqDRlpsIg=; b=L9QRsUUSoeY93/LNiXRH2WGkk+X1joMsXQRMEebQh4u2FJvomVUmDBDmNqbuUvC3LrzL9aQjM+IEGkt92qkGsz0AbNIvfM6oOEqw6ayRwH8OvkzgaWdtyId6ak9i+eIn8UvRIDw0HaMvytrzz1bTogmA/u+dRemkR6xuX/cggVw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699979920885.0382350375226; Tue, 11 Mar 2025 06:32:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCT-0001Wv-8n; Tue, 11 Mar 2025 08:59:13 -0400 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 1trzCL-0001Mg-NU; Tue, 11 Mar 2025 08:59:07 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzC9-0007rC-El; Tue, 11 Mar 2025 08:59:05 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-2f9d3d0f55dso8223982a91.1; Tue, 11 Mar 2025 05:58:52 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.58.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:58:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697931; x=1742302731; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rBUe/WA9nsu0CxkSM+Xn01IFK5k9XxBynarqDRlpsIg=; b=Fd33mU+PNYr1x/9EeX0wn5hhXW+45a9ltVKXsQWG2/ensRBn4ZzJ/6rlhbamN1Bqoq f7429JkOxIf1fnTesaPKdAyE5FWtM8Of+FSokT1IKI213rZk64ugCB/k+xgUvPk7suBN adNEWt+AOdvmYTPvMuI3X+lWcnZiVi38QaodhMCMyLrVQlq08wkjmdqXUZrw+Tpnpngw gz4jrS5WrATeCs5wqEQh6KJxHCWINMYmZq9fme6fWS+rpbq3riktnIjWBBgOfyJMrlbV qlpIc8VQEX9VMldeR5uieXBXCLqKeovzO1fjxUeGqmp/WGuCjHw62EjkOthOYd6AHIR3 hJvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697931; x=1742302731; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rBUe/WA9nsu0CxkSM+Xn01IFK5k9XxBynarqDRlpsIg=; b=eDA4fXFgxrWc3F+crWdqkh3U4B/54R9WqaTbsfGP6xWOpnkuaulhPQOrYnxbDFhy0C xnVTl79MtU3pxKzuGBYVZMLNpBogJBcdBrKA5Q9m+o5NTkz7ZFF6uvuBJ5HVpKhbOZrz zlGt0Uhwdyxc+shOEL5Yqwuz6bx7HZpT+X4OqTo/1z5bCl+aYCT2KnoRq0Dk6eQDjZpG 0kpRDFVcemY5m/SbKhxeC83AACzvXwsGewZxGrpCh1Qmc4LCzYOnzZ0aNvrJZUhDGFeQ hPCgMAND9i+3eqNsCEF6bj1jl0F9TpvItln7QYKRgya5M3zSE8Bfr6MMu67R8SEkyRDA Kaqw== X-Forwarded-Encrypted: i=1; AJvYcCUCW/5eGL/GM0Sy6ynt6qSJYBOCzDTIsmTsO9/5e/E1+55DUZZBsFLVw0zGxdpZAiZZ/bLojLgkCQ==@nongnu.org X-Gm-Message-State: AOJu0YynNseZ7Pi2A5ggKcepSpKMlKP1OWWhij8JXQQWVQFvZ/EoODg4 f+S5w22c3owCwueJNo0MO6h2Blnpraf6zSExS4LV2YDk8rnt9jPzQnRwmw== X-Gm-Gg: ASbGnctDRvw0MacZIs2HAq3HQUJECXV5GVtvnSaZ2+5Z3B84jvuCdjRSoaTqeIQ9dJA MkCeqVhEPs5NxPhtbZ9QQz04EOWvRI28qnEwRlK0hrEO7RWyiYk5v1vl+saGsc/eOXvX2UmsaeQ Q0Mm8FGvG/ADEDkKk9CmqpOvLV+rkPezWFZgX5XZykIBt5hh0rshDDvLAul/3HGLEBNg2F0Zfkt S76+soH6OhQsvdoKr++dwZAUYBa6mPxq+6j4bfN47JhZ5awAmG12qJrPR0Rqlk7UK7LnMscVX0r aIZUO0bkZDo1TZSfOzonIEmxd3bQsWVOz1SFm5WPX8HfJmVpgdM= X-Google-Smtp-Source: AGHT+IF42foNh+8hhc1aobyKm8cQNajOAfY1+fmJEotfvuJhsB+PJjAVIKJebLj81mXCxGB/m7vDsw== X-Received: by 2002:a17:90a:d40f:b0:2ff:618c:a1e0 with SMTP id 98e67ed59e1d1-2ff7cf37945mr25772570a91.29.1741697928163; Tue, 11 Mar 2025 05:58:48 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 04/72] ppc/pnv: Update skiboot to 7.1-106 Date: Tue, 11 Mar 2025 22:56:58 +1000 Message-ID: <20250311125815.903177-5-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, LOTS_OF_MONEY=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699985215019100 Content-Type: text/plain; charset="utf-8" This skiboot firmware importantly contains updates for HOMER/OCC bugs. These subsystems have bitrotted in QEMU and skiboot and this update allows new QEMU models to be exercised. Power11 support is also added. This model is not yet merged in QEMU, but firmware support will make development and testing simpler. Signed-off-by: Nicholas Piggin --- pc-bios/skiboot.lid | Bin 2527328 -> 2592960 bytes roms/skiboot | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/skiboot.lid b/pc-bios/skiboot.lid index 906bd5127175d4f9fa8a1e160f7a648902bdedd4..ffc77ee11126c9b70e6c5691f06= 04ca8579bd0b7 100644 GIT binary patch literal 2592960 zcmeEv4SZD9nfJMqgbZI{v;zhO86@gVj5b&-6DA*%fbAtg8ZB(8^VMA1xc-@_|D=3Dy`{hg@)#E)_PN2C7kziRzY?SG?VD8Ke}{q(;p?9}qd zp#GoutJeR&t6qOD-Bas77WF^-V_g4nsQ+0XMO5FbK(^BLk}h_6kJ|L=3DZ2mH!Ds7g@cjWsZpVAb$55;)96ae1`ZC;+xM9 zA47a?YW#oq^QrZ730;iu{qHXGe-r&v>wgyNKkj2(|Fcp5u^;35e**O%^D(Z!8}%Rk zF|Pka)Zh6ruKy&|Kl5W%|Nl*6k>W)mpb$_9CTA??8UKK=3DdmU}fRa!INyNr;)I+<`F&1R!fTWZ`bD%OEk3+Qj`+aNagZ5LbnxicFljhTMG_onm#aHs~jlRmJC#B zp@Bwi*}w*^c3`^}9_ZF$;PWD*5xj50-!94js^&&*P2UD>UEg-Cr7$%1+)(wFpMa;elZ|Z5wx5R-#oEY3u0Zb~|VpZCz7|M*J%s9$4{vKhapb+@~41p-N_XmO^t$t;bBQH%{Rk}iiaIe693GNGU zuf%;J?m4)B4)-az$8gWXeFejX;9hYd{2};>Zo{7P+soQ&>x725Y=3DpbMw$dfAhkRVX zBQ%tiS@w{~h{87$=3D=3D_hEwU<0!7}dXb4?G8-OAtPnvRR^}MTqKcLey`|-1(Jl`SRH) zJLWD7HDez-{4|#TMm`%MZE4gz-u5+XuX=3DX0YqvkoBT%L`PZw!hz(ZbjP-xLEVTX%x z2)_^EZluHhc5MpYSL;FpefWB+MKAd=3DV%c7Qy3h^>D{nV)GJWeMaWxe@fP2~J@C=3Dz-wj8f=3D?TY?r*Endfo;O+ZxYTjVfGp#{ZT{w z4u9#7lCD+m%tvIo$V=3DZ+eYcTQIDO`J|MU`I3mR4O&xyMWyk^+EzGqb5B7HLJXr;S+S(1O&iFE)ko@BmwNmoi;rxIx%_~Z`3-2lQMcMEr^3O$nb%*19@{^>+=3DLWB%4Su`qP}9E6@YQ99T7Mfe zn!so4@7>Yo-bEe$;~mJTl)VNoF%{t2@n@WU&>+uK{x8lxX!7g>Wiqu+tVcXw1mPQ8 z725#+;CA=3D{yG64+bFl%w!QJp5zEjag-{4=3D&=3DQmyJg}>2dIIa3SKk7Ljv{Okt`eG;g zVki1yC;B3ut@fU^$Y`+6d$6rfS6@H!8ttFTF+|!SBbff^NI5RNK}`0ezw2q2y~sAD z{2Eg~-)2P1+QQXRCs7yq(T>zj`M6Ujd2y#s+KfAO(nj2&lQilk=3Dp@aJ{$UuC)7lC{ z-|7feFN+y<2iuI=3D<8ACG;q-eyV^n*>;q;|Dd6#{$c0k56&B#C5KgH9o5ROcR1^mO{ zF+@I>U(;q(r&;-zf4*(FA8Tore#)E>s-9M2+;K@8>h@M)DCP}Shez+JShWVN4Y zvf57=3Dz-u#PEcgLk-+(@Hiq0G{7A#LA*0=3Do^^12M<{jcU@ovE)Vn(V$SSN6VeNuzH2sZQ3-wu_OEee7#-3ZXX3J0N)@1Iyd5!p4)ta+sVO=3DL& z5EBCTSYesf$GLW*JEB+NOc{0ZJh=3D{nGS9RQ5*E{P5-VaZW1Pq}M$2(=3Dx{*UVvHKF> zA+jp1tzq2CFxN)nSa-5<1g;iV3u8`CQLtH5l?zc<4*qcGv+VO?+R*sRwVTM7AX_VE zgp1H#RZgULBE2(TJ{JXy)5co?Y06XRMSLNx0he9j=3DRDz+D z>ftYnfZbwR%%YmS|3%AC#1sMw0fm4hapb$_9Cy)5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a z0fm4hapb$_9Cy) z5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a0fm4ha zpb$_9Cz#7eioA@8>J$UsI}sV5JZa()GwcjgRum$N#;k`=3Dy)5KsvGKa4;OywAj+_CEf@C@Ou%~x! z<>I-E7NA;i{z?Cv2hXYV|9pg>QtNzeBEon{f1$|Nq#F?L(#MAPDKd8W-DAI>O2-aV zH-&&gKp~(IPzWdl6aoqXg@8gpA)pXY2q**;0tx|zfI>hapb$_9Cy) z5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a0fm4ha zpb$_9Cy)5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a0fm4< zKp~(IPzWdl6aoqXg@8gpA)pXY2q**;0tx|zfI>hapb$_9Cy)5Kssx z1QY@a0fm4*?3};%~!kF-kNb5-Wf zuDOnvYT3uDG|%xy&3k-cAj8wz@@5DPyyX}V-GThk)co>UrhBL! zd}w*bD&+e2mg0XT&*m&fUu<^pD!p4z6IFdOxyfBtNJR*7op`&JhB1eckpTufeUM|8trU}_tl;;%!_XUyibKM9VG%lIyT~E3 z63z~hxVS?U%om!mZ2sd#9xpQM0tlylkj!8Ku;_{xdp;B3(AGI*qQd}NbcNw zBEHg>BEHH>Nk6y4MZUr2(8YEi=3DtlpJo>w=3Dp-Rw=3Du0C4onwtsL&xWXLlX1#z*PF}IR zyV#bCeQBTW$2;X9dT=3D1DPq=3DhSpvyFYNv~ai7IPpzWcHt~T;MaC_^_U`4qiQ|PsqEq zvoJB0-M?13fF1C1x^@>o#n3dtYOetIA@*rp6mpB4D5oWu9r_JH& z%r4LivF@wOJ3Q-pML2Ivl7FNv64Sx!E3BKpOK62V#O!rPIy@+|i}eTuh4_M*_UQoV z1|q_nxL%0+uNTwVcG1<9mBE-8cRy%ESNBy$t6vZ6;_og*(IQbKvXRzRc$3JAS9geL z)4?!hi2cf_zQ&!Hk2E#H6`7yb7N1XDY4xYV6=3DuKDa9-Hov}dD5@0MF7JXR>%cA#b#>X# z)Ysk*t1sGRY-4#x4rq*R^mTZRF*@7P&Hm+&fnJ)V=3DftxM^j*66>H92G%9^<4DLzy7 z^a;5e@yJVyX%_zo^FfAYmXx6m*PgS4xR%^x_6O?s{MuMQBOG1&df3=3D@NjQE7+9F?w z{^?>J`=3DPGgdVL6l*dM@4jPXpXYhS+84i8ga5a;B({hU*{!#qix{5yZ3`&&dYu=3DrKE8H1$z!yw zCv5TfQjQgO+pmV=3DcD|d8n{CH!8H&64b~cnsI2) z-7@V2@1uC-rNu_sG70@eT}3Pl9~NU{tsU8*{aMOh$quw_=3DSvky`K&Ncp0woGQyYE$ z-Ech0w*AMmkW?5;&#Ob3E-UQT2N=3Dd@i4D>Mo9lJ$9})})j)Rm%fA#q>T|9Y`VV2B! zQ3H8N9mhVC?C*swkk=3DUcyR;k3wfgvzSA>uh`D#g^$9HX`SRjgsCVWIjLoNKZJr@*u{90QO6eOdsClq(OY-jC`7;%+85@JD$W}%#vuPV@I1c4?0e%2b4L~9{wid0 zxbNESjJ$R1f8cXD^5}9LdH{9^_(Gn=3D_E?n9I^+FH``r`YhQ7-7lem}@!Ar9xOBdbp zfpH1Cg_tvKvYj~2v5m<8nc7L8aN(XI48d0tL*VyN50r5!cN8)SSLZO0Up<(PB zi?PoY=3Dt4j6rL~m>MJ%ZYlX}q@UCF+&tj;Gq5wHGuq^SS#qzyn^8*@9nw2c<~GK*mo zc!A~9(7jGe_nPaedx=3DN%2R-2r)4{~KbcI=3D)Hzl<#zan)Y+tR}CLX5ET(qb7FZu*3r zS5w;Px}>c@omyf3VT;`+^H?_CH`wp9;?JOsAVa_%w$tE~vY#|SZlr$SG7-U)A-mmj zp7^kK16EnE8Jwh(Y(Lc9d#3RwZ-&`VU4y#`xeBtaQ`*KvUTxeSsvf*I1S;jJAOQwW!T}=3DySF3Ui*PL^+=3D1}P2>0mXM{?|de8D!kz=3D^E9 zhIFun&pAtAZ;tiv?2xuW_!k(9TZALLQ(S<$WhdL$!td6q5D1KvR}#e~+nM#}d?lU$ z7M_{gjf@5YOt zl6orf8PVL2`ByjY^dcTVA(!RLp z-@|-9_HZoU-}>_G=3D<}IR82^ZL7*qAE370Z1;6YxD>5T!}x`-dWD~NgGIAdC`D2<7x z`0K)H80WgZ7l|iI8@0;#0Okh|^;VKTXnxCR%6vl4%IYSqsClkCI+*!H@E$=3Ds8#1y) zF9a5}EB#F!OCVnkjG)x$A8NmXXFrk3Ql2-uN4^mre>N zWN5l^Q9I`0keiD(qx~_zxoB$;;aB2$ig9rZpK}rKGOmDp#AF^1d2P7){xJDuJ;1BP zkGz(CTjXFIcQTEvdoqn!SCp(zGOppudsAqPe~0nl%|$wSkWJLV3qG@l(qDL2YWnR- zdVy`i6DXkU4L0Xp#Ia#;H}lwdK5OAQel61@&1T$qrNt&#V_{OSTK4AtB~nK>X^=3D4#HSq7 z2iAUoPZ@sVPRka(adHTSe+Zvb83%pVu1}b<8;`uS7;G}?#?`(xUQb#p})bsmxpU5jekiz{o8wg&Mt zglA+t`GKz!{?5$cWDRk#)_-_sRThcJEd}W%&|97qr4RK=3DePg=3D=3Dw zBl5-aw#a;OTb*yuid32$>)9_-u)#dBwGypBkjgY;RTIZi+%eVYG7xc zLT8NRb7M)b#*}y$;*VST%^Jj~A--xjUi7Bq zzZLQ6h%Zfv-<=3DYFJK{4CKRqRWb4t8{xQvvz?+lk+Scbf#^zn(qDeH zKW!}Ig?x+tMIPn}Mts+V$!o+nCrp0XFO6>mFM|z|9`Rk^Hd@Qwkl)%!wf{2zQG_|K zbsIa&7`Do|(@s~8bVsjYSaJ@FQo$ekA?+1nP}1cT^eg&z9csOt8TqoJz8wV1H zT)KA81_UMjUHP&vRloAjy4GID@FcGNxrg9)m3lK)HzTu4pK#7*mSNM+E^P58>1&{y z4Z8E~{F)^T<}RD|v!FfH--rWfXQLjEpg3OAk5*J>9xW&zJW=3DGp-DxiMcWEM$8>|FI zY4pEi?wMBS>s`S)DC`p_c%zQc3Vd>Y1%La1XoQ}CKRTTluFW)0po}hAg8iRW2C$N4 zh(#a0jN|M7R2giKB2T`k@@W`TKRJYbKjwc09!=3DmbZOM3*2*(>mtv>#3**_@f$@wAt z9kXnf1IknfuYJ!c`ggRfhfAy<#dlIx)uW^G$BWa*d&yKeqa+P4YrZD6Y(L=3DDU$G`m|<8&e1l>LP7knL+W zn`z?*)_ZD8-UPiC`kr3BmU-d^F{r+s`K&o;+ERu|dfL){hRc2gd?O_l7$aW&yS|!3 z9^+=3D<5`sR}p5DYXJ?0^gx8##%X`^F5`)~k%x>#=3D6a4q@33;i5n{-#4-eSA+99$_#3 z@no_dHlCTFzX>!KGrsXgA#R-?y)tj~g3pw$Nb}oi(vapb(#&KUwjtU@UlV_uQC0HaUnqdy^aX5JiPl!yE1) zW15m3^dyC#*hoa!Pan@sKafRa~}gCh5##A1{n~;75OTjjlblf%!?B z^#qt2Ih#PHECp*_8!M4X*BdLo}+AzyRafn)V+&|OcBMloCq z@Kl)ZzF$xx{0%J&^PZMZ$}dXZrT9$*8RNu4*KO+U#tB@NW^xMh=3Db-m^;5ne!Uf zG_!>t;?}1sA8?I#`t%yH+$Yu5MUr9a6_hg*i_htKI{5@f} zt0UR2R(lGU)t+J^`V8cbW8`bin5TDam?r#?2hWBZg+C8oxJXI4n``65sQ~hUxsX;+ zF8y2c8b<>|_@5AWh(4*f3BLh$L7=3D@}iN6TH#;(iV#>M%3e?EaVTiSiZD&q84_K$(Q zu8_LeW9i~Sz2$%?B%Ua{5N#&%MxlJj(a7?ncjgDl1IoRv^g;N_bm4@(oR0VG$c>&{ z@Iv3DD^gzOHkv9cTb>njh^g_=3D1+x6U)mB>>tutR^d&#zFMO(C<>!xf&u5awy#P;~< zrECx2QVSb|?VcWwqdds0aj~?c-Ek-K9d)>kOHl8aiFGjG;}k)pU4s4vY&7<@4C`4O zvT%1(?%qo2N85Dm$?YsF78O$}%-%O3D|sXO(Ne1)^=3D`NO(HgwNUhLh%euRAJN4>4a z`9uBa7R1BO?pm_%RU(?$GoUqc>3p~ zPGzunpc}36Vc?MQP`SJBTZhPN9@>=3DmW=3DsBmb2)794)!zqy(J!X=3Dj-CL^I1>!?fw$H zYu}#EcRej#hF6&V^m~sR9;3clBjZKRWZpT}NqQ~NLrpJLz}A$y1a=3DbF%E!T9cEaEK z)6dH^&;uC%_Uqce-pagekA%;i51)c_?R+uCdOzerU8S!F`IEK}X#eJ2H3 zsoPM;9E_KH?eX%Adkv^-bn%sL@?t$(>!_A(=3DFU&{U#rjTJumhG=3DJ49T^fNtqg${em z!g6nAtcK%-(8ATzbYQxPX(+cGpV;<%x1UG)M^-^E)1HP8=3DhDg0X}9U3>MEv(EjCzE z#{CJN-oUkcLma>Dar!$I=3D3b3yqTL$ymsL&WGwEAnyx2;Ke^p9`v6o$WT_{P3RldNuA}+kGA%NSLb$IRfV}5)^Dx?=3DA+i;%RNx=3D#ksxc@3co^ z6@#t~q+^uC_@1}&A?&m20v7Gy4eR{Tc`w`k@0)x~SHFH*j?vJaYxylhQijMgD?8B6Snc$zO>j_@L|uh=3D?f}(6WE!1SFrtP z*ZZsYezVV7e{a;ad!^mOcBJjRuEy<0dD*s{Vl8R!_jGOZ3n37vym1`10bw@IrHgyD)sS+z*xkIuRK+%*WfvFYC_oIj2PVL487IFG%nj^3NuH zS}cF%;2~#{{|fUzH#HU?;##L>jJDRwY~C~OMLO``k8))jv%Oh{wf8CWH0%GF8s?5? zu^j^Ku+j5V_P&T(i81&bE9Y#GmHyn0B^Bm@3qcmPN4{KNr~LSpt>``(cDlXBhBw(4U97-XPWl+c9=3D>Kb^Dx29#SYoUpYA1D#WQt@x?EMzPLyg7=3D_H z2K}x5yAXeZbq#d>^z;6vedk2E*93D?UHi#I(ntTzTGiUIz{UeQXWwPvwoFgB^(f{T zkG~_+AV2Z|r+qgf>y?xd$UiKJZzo}Y-rvi!SRTg&Yrg-beM}n%&$=3DVeZm+~1 zU1V)wxbFCZrR&pj8?Eaz?65FPIcj?+^Bn^%$0n<~<{?Hed7)(h?2m8MCi=3D@Fg zrWv6VJvIjY;I9_?u*=3Dei`|d^k-rGNsm3;If!)7;-vit~w`IEc4rJuyYG3Pf zYfDA*ebWW}W1pA2+ht6Fy+vJ=3DiFJx*=3DFzo<(`8*mi)>Ho*OCjYd2fjW>v?bDZ-;q2 z5JNd#_`7!Bvw?zrPhgMOkwEsI_vid^-_vtmD?FEVqfUul`7&rOx}7xh3WfOO4{RO$ zpx6q15-b5d$+Nld39jc^{)KB!%JdcvQ@|f>c#9s_{IshgjEDZm8YSes3w+e?>qNbO zJyb4qE9xrgpx<(=3D-JODWT-UBFC5_Wyy*~wOjy>yatP_}{tpd+eBriGt4*J(v@(n%_ z?u?#*4s8LSu+uI1x#o)DGR$mgqqk#j*&;M6e&II8bN-Jy%6)Ejcq_vjj{KbTw1(&Z z)u#73S#PxYBeERXURO(*v+7}{gN}t2;w)MVt|l$yk$V^$eeQW2n=3DtP?q&psvy&bC+pJE!zsfQii|ETpr|lR@(qS3F73r%MEp7jGVUtHJZ4z3j zY0SSuR#$N?oR~>}gQMa_(qNya|EUytVh2QW-vj(Yzn!UTKbp)m&{>+iYxUNvsKatV)fu`C6o>&yaSAo;Fj~U(XnvDrq@7W?J`uzE$4E?GfIwUUS&O z%ktysj<3HU<1-SnY&~PA#70m1q17(hJ2zYTeDPAEX!_ZIUkq%7`azNyXtzDW9c09!!FquJ;ZM~&3q|0 zJ*IH7ER3n^hWq%yd%F0%)G-+IHS$>J%XS3NpQVkp{CsqUzpf7Byu)!~HSQ=3DRNt0s@t;`HH9uRn$8Q?BMdsj5o$`mlKMh- zls_f;9?}ycn|gxd9x#Kys8#YL^`@}KAo2s=3D!%1CM+Bnc|)MWS3|Asw;&lpX5{-T=3DA zSw%jNFq$gDc6n!Go^@Sfx>#lTX9w1>p6Dmm+*0n<`t41aN9!oFkvt*&vXnA5>!T`U z+amlCMDx;OW1!z``@JD;WtjRjY47UdAEt+psKWf^8@vzOke1H2bQboavi;JhM3}~^ z=3Dfb=3DBY`1fsE*5U!JL-IBm>+YmOgloW5`XpUvvqNs)T1Rg!RKa7%L&xGE4ii<`BGQz8P@wp%tIy3TWy+G zg6~IZCqQoYBJ2iT_+Jg75|kIaUz}l1D`{b`ANku~0$QPae}FxE&%xeqF-_79!ykqC zzmxWK8T#(EuRo$|3uHY;q`9LRJ|j5}Y74F;50bAI=3Dz*r!??Rl%j`J}NxCqWUjT$kF z;mLgp_mzko=3Dz>^(3HGevu50sC`+uICry@Ogm`OUey!iF;d!@X=3DZrzIYB`@tomH~dZ zkUsN))}_fjIB&6a1pm7%{wkzAkay0l!TUk*{tECN74L*j)gJyLX+#IQb1_$I(X;y7 z@ybi?b?3NU0NaGVk%IZKJK#5>eX^+f7scV~QK5w~;j#O`xJA`F8-V#+c*nVF>ErR@8_o|v}1sNXqO+tD}t52Him!n))-=3DZEl8xH?}dlIbAAYX z%Q-oGTBK9uJ1c|vBrUmyvj1;USNJdtCGI~EcPsg^ z+g`4t*cit^XMIXq_^;=3DcCeuRS?@ft2hPVq;;!?}#)3qxeONna%-RrOy;2qpsgmr1L zbgRGE@A8JTt2lRiUbwCtzR{)ftYCHmeJ+w)?lxxV!K=3D>DPxP#JuaLF|_BRuM?hElZ zy>Sk3tmVFD;|=3DV29t>dK`bo(*eF>O5&Ei-waHDVyVBH1!!aMK~)=3D-|s`Q8}D*r?F& zJs|Qij$(Y=3DC2`}JC2gpzcd@D_FF9_-e}FZO9544O$C9=3DkZHS~@mzc|SscYOaO-w9^ z9TfR-*zs}f_ck8!Vm;I>DhLj>OMYS+_Lw72q&!&Je`qsHa-3`g-+rz^lV@TLKcu(F z;}v`k#^9^O9ts&xA7!Jsj%A`eq(L5pA^$p=3D-iog*Y4^x}VC@BX<5JsqiTwcIm*bZ4 zY;PqomROGeh3w0~;L#+FV58Y$6!(Fy3A!kwMDmf%^o22xv^U8U^6W0c{w6yfeCC5s zyi1v(pH>v>35IfRD;{c$DMIjgzuHW;_V<&F9+;p>c{FJ=3D{#cj64S+|NIS`}eu_ z3H+VF9{UWebN)DUkex{5I${twnfoEHy2xuzNMT`l+QB<)_qn;pdS zY0kVn7RH&A2FS4PuYMzvv}bU(swxEH>?=3D59?(ENn&lJzp2dA_-(oha*!>smA;uRSvwAu^WAF)O1-1c~ z;y7)0IWG;Y?|ii94U{Ltv?jI@aD56ic&6d$#QDJJ28@jlVO>{8AISAkUYal`_e65g zw{i9vGIpEcmHQLN@r*Ivmk#sQ=3D>T7Htcf20&n9R+o62|R<;IaY*gN&TljI$CW_ElK zX`VSH&DD0AeM|$sq&Klx0@fnC=3DCpYtYs_kJ)aW=3DlrD9QILPkPu|V} zJG_R@|FKVDJ!cut(&F68TdlxqCi_&phBnbf8Q|Nw_P}QY1qT)evJd>-oIf5IJ?FIp`2{8L^-#az zyg2I(K6hLF^sVcnLw=3DuG%OxKM?H4gm>RB!C0fsdk`gxfCRnDD}AO4c>$TpPzX`Exw zg?B2`rTBcBF*eHirbQ=3DUjiJa-n?N7`%MDBqeeN)B2TcP$8m&zFU}V^BG7NhS%DQE` zlOm00D#AyFr=3DjTwl9z@b{1`f;uK<3Mt1LM&r5@3>OA^czg`a)|&vMM5&mHZy0QErs z9PC3N;n6x{>A!(&@9u1~SrkA8=3D$wajB*a=3DuL7EV^A>_r}~W zel=3DwHYUtyvq^=3D0mcg6zOc1;cxbj`({<%|#rU~ZVzV`6MB*-IH5hql;^yi2g(AfI!4 z*ljw-O*uAT40X|`L;A)Gm%IHtac*5}-bOl*55LX7NAiI*{-&;3h?n{UdVyo%dXAU& zUddfO2k=3D~M&3n0?%lyD?J!G&OynHA62F_Q3cFzNdE0l4COcz~U9!A@5N1D9&gV^sC z;Tess8u_qwH@}l(V!xhNR~Y~H0P-h&)7ay&2RaP;&3v@y8I1c4!dbsN?Cj|4H`S;W6snyE%77edfu&gK?|Q=3DfYgS*Fl*>8Mji;BR(4} z@zP?j{8QTKAFVbz@{}AiSD=3DkGNLR#k z9CzfHo^@nnO4}7C+Xa0%pV$XlfDw2kE!sn@FZDn9iFO`?J@oCjNzZPtHLRa(*O(Yb z-4NY$%x&3fzh7maGq4pI=3DqMHNhyQG3O;(>SO;DDlr^u?#f8#mddgT2 zn^)HHlylsV?Skwdv1Gq%hc0gTZU}`H6wof-<&WgTt}4fwtyEo1Ir^YYv=3D?;lw(0bs zZMLF+%D&9LXB5f42|tUa3nIR_E8?4vKe0QKoB6~k^hZlRN9t(OZ?@=3Dns+T3!s<1{~iuvZifAK&OlgX z*4M{(1nPyu8xR=3D`55NZj`@-*U0B!8WgFVqp9dG1d58(=3Djo8v$r20kvvSwtbc1=3Dk73 zW$2rA*MhGbUvgvaSpe*@)`Yd+dq6KHG9q7k6MI4N%_@9<3UcKlP2lrrT`tDH)ONF; zPlxLhHm;MP%SD~Uhi0dZEkrQlk#7vrEOdLzC`G?_=3DuNZOoB#nA6pNr%ihvXj9jU$h68_xyORGGsf;nA;v?ea~{UQGC3|{EUaIT z@v-FU+<~8AzK1+EPZ%c;hFRC>jW0t-{qZd3mwEvECP))D)tyXV5QIENg-hB5*b7XX zfa60W`gNqa(W7U*nGd;@bHV5j!3WN2M>C#-52gER=3Do8q8-;y?-J)c}{?LFYW)c(bk zf7Y2Y3hPQs>dI64C%$>6XLYX~X_sNVNa?fQKh`NNccl!3urLW=3Dxb2rd) z;Cl|7+jK`j?-tI3X|F}*gHHL?_`{ip6uHOuAn0E?4PV?lDd}tk9jvRfFPpu#KF`M3 z=3Dfb|Re)+AU*6ux!h3T}#G?$9>@$>?WyeFJfCB*doUU%m?^=3DDdSm;3!R?|pW2@JAGJOEfZf#L_FPgE0*n3# z+jE*6PmTH!YjoC_GZH(}nU>O~TYILMy@5ht=3DSTmCZ3mmf!jAjvTDyNsd!fR7zZ-r0 zoIp@yczxnxw5_vlPJBmwHf&e_ZrX(2f&FG5zwtuf7WYTl`6hmW-|&*QSLc3)S>J)_ zxzM)1pO^jD)|ZR%Eg-BFyb|&4;9L&O?*Sj zEp21ORhY+KpnOACKZ>p+Hf1)(&~<~b*M@bSrDtF#m^eG&;XHx!2$Oqh*vAnfuOWNL zvK8LgVA~3%v=3Dw^hitMk=3D7n$J8AGdu?(a*r{Z0bH{>6LHH4}lD60<(6`V~2Ip8|&bs z^3?8?`Q5aaNWV9rVzPYG>Eyga+*PX!0g>mym z*heP{e3@ThJ0Z>$uP4vH-$EZe>uKri?xSeCado^H9>pS zTXkuQuq`1+vtXNQ_1k)BJ2gk<;2VKB9~I3mmtzvgs0uSakv02Z z5{$P7zrS^@?VF=3Dr-gNL2QJk48afqy9%ms@fm&Fg8{c`=3D|^-qNZ9)WT3yon(Y4`g@7 zSf4q6>};9y+QE`JPagF3^a*hpF)3+heLddEIK$zQeP`U982mg!+yWZ(>F!O=3DOQ09W z*>&zPO184^y$4%y=3D^U(`G(7U-a6|R|@F$%sZHMTWAvfHc#P6tKo`wFg!GLebN^{;} z@|A~^#-Op8^#HGX7zVx2)v)ph;bFb7uNLy*we+3YM8B1;O>bmc*m>EQpG--f&9=3DTT zW`^#ZfpaCJ*^cIW;D0HS@=3DA-1w`4%i+S@PZZw~`kjA7XKX!$%XTq~$=3Dbun4a9g{Kw zo5xxsD3NOf`RtRH3?8hq`a`2!GqUoYC+Fy>3w(-ucSE;k+xxxUT)n=3DLa`G2LV4B!T9C7ZFejO|B+*Za>=3D5gaSG>1cZ(g&90n?8K@dFjV5k$!x4 zpiAOx?U&Bl>j%Cr&XM);8*dMR7-byo(v@s$1o2AwZpoxo#>xxavn1{rb| zpzp;u0b}@o{9U-iZ-VeC#taXA{7Y(&VQztb6Fz9ISv8Ik`HP*ITfMNS(a-Y}V}KLZ zNN5wqe+itN@Mm+)1paLMJ2&GZX>&vEuVyyVk7oM7wV+!7y4eSRGUty6cQQZv-0Ok*Ng|3mZ zv=3D`AX%tOBv_R8Po-}$&x7uqe9UAdkB`O>uuOPR*%WAIlk220wC}>|b&pb+wqNi%-b0QGP#A*6Wn> zMXC1x3DyC1!Co=3Di$Ul1x``=3D_+(buhye?e_ZR2S^Y`Z@?_c6 zCF~nkpPFdZ7wMRfawW$++3&jV24D28)2Ake@jm!_U5i+Krcmn6RIG0!pG;dQ&q0va zTQh*oq6+iiYV0$trA~=3D+t@D{l1%XyHn4riY5N2V+qnc#Wbj^f4H89 zzNl-)-7Nn@9LeWcw1OmJrN(6=3DDR z57^~3* zT4ja#(^45XSB^v0+AN;?=3DTk4eDeI4VTKfspB%UMYDpH2mTQc0a7ybeHT`YT@Zhv$u z{B<0M#{Xao%L&YdJj(Yi)Ax!Y471VRf(#VE5^ouS%xtf?jBc+}mp^q)}mZ zZmTf6_t+R05$79LVxVCus^(97xVkcr<5V-|3175x;abN>h5Fs&{$f=3DwL9u-`r{8j94P2)2?+eQ zK}i>7I@{vw6H-P|C-~!c?@HQE7}K~0?hmwEdKu##&t&ulT7WaoZ5NDA&Qruv+T%S~ z(?uH3u>G_@*lS<($;^@9SDv>VKnT7shaWpSoDep7-8qBHtd*7g63Z z9y=3DpN_%0#FY|BaAky$ zoO}LOJ0~q!Jo?l%Wcd!825mV~UPAts41AM}I{Yxso__X4(qaFA4xde#fV^|B*&4{B z+*48zM4v6-o|0Xp*UPnS=3DpPs5wYg@}8lyV%37gkH(Ep-~F?Apz&$3wIN5*4qVUT^i z7;+b{ne=3DVSPN059c+NFPj!vl-*~la90n)VdsxcJBVWOD%znNL&#Ua`AK@AFI3GK*9nb41SEx^=3DjptPItc$$Gy!)qX z`Fhr`w#E`7AK$FcV4uJ~8V_uAt**Sch2Ml&YilqvYlpl3x0u&AiuVR4Lawfm=3Dc1P4yGYGA-z3*k`fkVgi@68vqgK{0FAWQ@ zVc`J}&H&!6xbasoE&&<|&_LgC;jF{D=3D$Pli(8o(Thvhdi;-H0Z8&~S%t#92l%)2+- za1i#2a6Z8N@$X`-zU{|hX;-B^hj6c)Pf$l2kv+MbbF%JChkiGd7V9yRw`7`Bo6maI z@-5ph&HAFQoTDyn_+Cq8|6+_8BJ+LnGFaK3;}1{^jUfE#S=3DwKi+8U6)u?NF8pVTbRKQ{{Nyl>OdIl35idq`l6vf|fS z{r%|G2)~};)_C*F>oA9Mf|qQgwalFuW5$h*a=3D)QbpO}^dJvDn8^?D5FaH{oOjNLeg zex8)GM8TwWa!!EnqDOph^0ymY=3D%-HV-{`h-cl{&htiZS8r5=3D%KG2R$8UAel*c!TA` z_6y?1Yv{KXY#x{CSuftoxfuKuvrFE@cWC}NDHJdd-DS!DnB^g4O3u@W8S&+u12)(a z%a$8EpK0vzW!bPzoUxDLvYdA7j3$3`fHt76O`Ld|xcBLg(lvK-yg%-52X-y^YdZgN zEAH%9hw@2V;AphOL0iE3{#8ALdUop?0IrofVylJ<_oA`seD3Q3JPX+by|17byd2@b$CGbMshW71g z8Pk)zF%8ENzT3|u$2FGoqE*gO?j2eu?Y#r&zb(Q+dtTSh-o*SiHvE>3huBDYYER1b zfzRriOJh3v=3D;WMOIDCA^SlN}*4vUBvu{yRIY2ky@$A9k%nGgH6u#ZaPzOCqb?6rVj zui?oz-TL?kB%UY}^MRM9_x+>Ui)Rm>C*rx!)}zCF4()wfJZr{zEOnW`dQzwl>s8PX zjnF01208_swA0#SE&i5Km)dP`wl0dL9Osps>W|_#?!XWC3rVbLZ$SQHde#f97BB1k zT8->0w?Myh&tVI`O_VM7O*X=3DQamw=3D=3Dn*1&i_EJKx>qB!B>2rxcZ}Yzvzo}9a0?`Vy z?N#1URxQiqItSO}lD{8?Fnm*G#J+8$xBOPmR{@LV^iRVt9p^qawx{&#at~iqVw9yL zGGv|Q`p`EHTI&oA=3D2pz@tUe8Vt#qR#rr^c)_dP!kMe(xsfZjPH>8s}aJtkx9|15r< zdzJi9r_u)vnR(Tg?;v#{d{l8MZ%v7Fq_0P$OI_oSVqK=3DSNA3^BT=3DVS^Xj<_Z2|kk_ zJ?pur@yJX17VYxBi1Ml^AKbTY{m#N*m0hOXcLX_~GCVIb<+ooz55Cstl0LRse3xmG z>!GFQ?w%@hZ%-rqnjcsj9XwHT6Y5ewR2MJja)B?ITcNk)m?ziS=3D`-Vc9P}LK_=3DiJa z+?G|ZT#IeNJ`MPbtoZ#~7;pQHrbHh?8-XVDzN|m70Nx9%`Jwj4fjN><`Pt(UpOEltpKbY?hc(F(BD(p$LWUf6ynd6+FnDHEJV14&io?)i$ z2F7>NC%z~$su;4DV@w|#j+z5u&Pi>1dz?}B38vePzqbYsXf5>Z!ms;QpbIu~rPi_% z-%@BqdSjZ@A>-_Q09-p0h9~_|{>BXJ2iphVqUnY|MJ$n6BObWi!oG|)T+Y2l%e`_9 zbJuFvoYtOc^Xa-7;sWD5?)5RBfZs|gIIGW?Es42W3vE5{7PI&d!@LKe;NF4&i)$_7nJqv;GOwW_)o514Dr7J<0bjG*4v&**z0XW_253D zq@>Y6}`N|hoTfe1( zuuvoqbR8VS-tV=3D|7XK%H6^Kb(mqLaNU@MrHZ8N-1x9u$?=3Dat6uUXr$%#RdHBJNa$G;WQ4U*^e|et8pfP zb1&fOX>^GYpHpaIEhK@pzk$;DG04Oiu?%N+7@uwTDeTiZHZ3xv0)1*=3DD!zM|jk7(T z0x*yLcdou8*qe&5zF$~<6JcUC=3D0dhS=3DQZY9^2ztLcqZM|_&q*5eq4q5U8x6w&ndsV zBhjHg!-Lgtp048GPi7_cyRI$$ZU{Mgdc`s<-Ny?m zfoF+jAEDmdcMN;#>2a`g}SZ1Z!-Hh_FCmv%e2+&5TPK4Q-;aEI^mbY;L_FL~Sr99{PhiUy9Q5`V1yz(?JI z?=3DjxYGN?cFtgU`L@*1+iSvJ;GcC(+def6w=3DOYRBh@6^q+QnnWq zW4|2jz7_OOTi=3DfGJs>o$mm@95l2y^c^0s=3Djt_l9cOhSC?duD z&1o$UdIB>1O=3D+7_|LFK!DbstWX{5h362N)Npl~hrIld2F!?1B!Q!Hf~@GiggM_%zP zAj9C_oO1s&_;w`LKqEJl<2(G%n)vIa?4)AH- z0zR)`Ui(Um*?ow%d{UoAdymWWq6y!my-`!Q_vkdqIZNS9(g)dP*^gqLQPao0;W>8u za_q#Jwi_ZL6p&0CHM2p3d%T)%Ww@m)nxrgSW5kn5`(WssF{%6*yN|c^9E5&{-5A@P z`rVnHON|44u(vDZzB-hfkwRbNvrT^u9(fJXN85}_+8g}NXT`~tc{&#b!V>qz$$=3D~kFqC-ZJ!lK!Ha zree%B7D9fqYpZwT_m#!0MK${x_`4PhVOuZG%{)#S@{SQPwB1{as((1RtVY^eT}eW` zTk?+I8G)?hn`?r$EBjnQxjWe(3QtbHu}>0AtX%VgEo}!vA zn_0B1@6vFd2s&P3lq^>li=3D_;XqyarEzp=3D-8Wh3PHW}laPd_B|?hM2!T1@|G@OWI)4 z*MYvC#2fRcS8Sc&jXei@^b!2lHgH7!(EoaVrEAxoWIZa(@6_-Po2(u4A)YbVg}W1L zq+;NJ*oAqO&!#gEm}~cy;QKssFUWgU%tziZPRHyt`NW@XBKMG=3DvVVN=3DE%*v|%ds1G z=3D$oglw)z(r$ncW3-LkI=3DC*(H+W7aI3!I5V@_`RaY+zNan=3DMmjgV`!&po)P=3DT8zH1-9gBkFkKOyM@Zwty&Z_bQ*r$y8A{=3DqcaIeMRvLesx zKdSP*%(H}9(HG0*nF)UHG>mVHVXn4(T~tggF@IeWH5+b=3DzIgof=3Dd+9D_h(1i6T5Jh z_ytS8-#T9xzU|}-IA9#ze2VSOdhz!+5x$yh1*o4qV;!i+Sz_)v?83O;0^eW*_M=3D?; z)-NDq8w2g|7uQ2~(uZ{A%kb}tcSs*|0s3upT^lX+k(_tNtg%7*_%!Eert`OBkI0<| z!~T_GEZb0iKTSJX$2iOPV?F|2TNnqv_?rpbM}oaFnJ+TUDf!`Vu=3D5u%j`^XVo|pV_ zPbb#^B#)yl`qtUJ&5(;0BMMr?7hFc7Ju+#uWLN35MfJQom;~A};!YxYWKF zx!}#VI^S(8ux~$|W0bMtP5eGFb@Od2{MB#0u4_xChCs2xTw7}0-DRbIk*3b1?7n$hNT00_xh|9A?@Iv-xV?lQua0Ld@?iPK(38$Zsl0 zeZsu{rnje}EPSuyZ#FRx_n#oWF|4=3DW##!xz)U#;crAWd{`i?MOw-?OCc_sYLRPwji zPhaoH>QLXSsc#bbqCHRvTMnz5XtTmVtym{@ThrS*eWbJr@hxas=3DRmPohI4I5+ZRNA zl43Q&OEVB=3Du*4x zs58Em{Pq`gZSfYyeQlex+og|yeFSm0V(w9(!MZ$sehC9-gYa9%@#}_v(;j=3Dt zFejCJZu0Eki@wg**YHKWZJ>;+NC#!YwtGk8v&0uXBOdzn?HYzLFZ!7aXAq%l;RC~+ z?Plw4FXmnErSMPM_>CRwdwXb`M?iwt(0&*_>(PnSt(@mL*^?H?M@q03nl3v(qIM)T63BTF; zgw?Np90c97=3Dqrr_Dok%CPJVtkb_`jE1ijzxSEcVU&4d zcskin+6}-dd2Yvv@6m9q{ZJi38|0&uLtC9T7248OSpDk~qq^a?f*IDltg#&YjjaDH|mrdL9>3{2D4}Kd*i})6O8ul9fthIdshcF%saotLMi>V%Gjc{&G{>D1>sP}v^ z3gyol?z8{NeD{UGF!?Uoec~=3DPe??KRq=3Dwep(nm7%*bX$PQ`6eiJ zY-+TdA^$nTYhi<4aKR$RcJKPyaLAa=3D9~Gk9D`?O0X-BLs`x*MPOL{Z%0CuMPeINOX z&@c3Hy_N^Yc3Q8Ndm|rN;ET@%(Q?C!hbar!voCS`+Hc-0Ujn;-8TLFg+E@o-GvS;Y z?m`0(@gRN^zgdt?qT}Mdgt{f?INpo>``|xC9Ygj!q9Vtfbl_!~{@%Vy+SfQ_ybIvc zE*j8o(6l=3D>p{POx&~|}tyYJ0Y$sK+n9=3D&)su4?}kVFLwN}$An*q zt%t$yKZ3mamdFo(o5(=3DX=3Di<0u?Z};CY(BK^&#Dvak4 z8AJC&)#^=3D=3Dnb^N<2fo{J?owpt^tj9fEL@MEuQsHrJjvlSEjMZg@CGZpMeKhZGlwUT zKXBcYzz@c7-<15Ia}{M=3D&rR^fYh~X-SC0LHI9!8x$eV*`l6?mKLdLZeJMqVP-VJ$P z1@AzdM4s)qekt?9PS+uQj~rFnR`=3DdB{I2KiClU)1?G)*>LopfejU44UO7N5GCon(S z{1|<{7c?0%a&5RS^Zsj0H*FLn&#NVm*?sc64Z1ybwU&JB(;U4~^N!xNq&-tsVC0-7 z&xQ_BB<0X9@_!F8V5M%feFF97pcy_1a{BT2geD)-d%X08LAjrzu3}k}A^sEg@kQ^_ zw4_2pOZz}eFG4R{l)j;-LFGLywAmeA8J4U4d|c`1NN}2{VA*D-1vtghpgS!~sT26fV4Ykam@%kg%s=3D!apm8$PW5!|-oAl8?tSB7nL0sckf@p}bUMy97 z58qAuR_J2Z#WRDQlY#SQB=3DI?|{6@Z71BcOhR=3DF{jaxM-qJUDChK<_%b56(d#v>*;{b@*L`E8(5Fw8E;tG&BJ6K!?s>>tGYTo^ZX-T z_)PE)r%HRzdqEU5^(XqC4YYIYf`1k5yx5z%Y#7|3-ex)KT4?_stX<6=3DPWjdTn~xqK z{6<&sYF_lgCCE3O?Jy0vSS<4xvIIN@yzia0tPgm{I``3a?OG?GelWW67WhdRzf+7Q zZEq!*H%<)ZVsj@`zH=3Dv2EdIs#zZn~L=3DYxs&F+rbdA`HM;5Oa0lT}+wYFm>LJxq7aC zIvx2Y0yI8izi?zX;iqizMmmzTj`he|;8|k9QBF+hN#Dft*I3)CF8I%rH{x#%{)H{q zH*XB0LOn(ul(o5cwu`>2_oE{n6{sT(`3jg%d`lN%jdXLzT=3D056F5Vol zC)feH@W<)m{4G+pG|I7C-c+jP8DO~=3D>sRvAG{Qxg{LRVW0sB5=3D{&5ky8%=3D9<8r^{GO)WzFolE zE6{iQ%93Dz^L?e$@9Fpr(=3D-lURe%S$J&=3DKXaxRT&IAb|q=3DohjJb#pr}GH2RH(^tIRJv6WUepe7MhU+V?t$`1Gn0dj6hSk~WxGRc$e5lAB z)HA-Wz3rP$eYET2_rltOJZ0?qTyG37fxp1wL;Lqni5~5n@1pF6WBq67(J1$u{CT^+V{9Jh2!zMkXyq89A$n zHp%bvv0so3Kbs?{Zr&9ifywl4tl`hhSzde*@G3(ZfD-T~fA8Z6Q}@}c)M4E90rV#vl0wz~`b-N;Ps zr@^vT_KJ#sTXvH~gSh1d)6u+zqo0E?Foi}&xaJjkTZ{m}$_Gy_K zmz@&_@HyD7%ZIUTBU?pYC-7s$7yP}#e#9>|KW2Qvb1r9oi5K9+233bafT!-~jUaS108R0CaClX<20CYYB?-iTj~K zw;_Eno%|4IXO4hx@cfdq&)Qg97_x9?$}_Iw@-5LPL6?^lvt9R+59p@}9|1S*R`%}x zcaa=3DRhhE?9-&=3DBlb>*$J9hp7-z~L!m6HeSsgulyJ9mAS(tgRL z4fG49A$ekSkf?k1-!I2HU)Bz@8(A-9E6(i1_RAaEJwDL9v)+Urb*vC@3U7Aua=3D$z@ zvj@Cqwv2>c~KJ7cd)XMtdbA;vd>GZ)~>W2+>_v(gy z*Q}nhCsL|?RUvQQK^%|~>RaWF>IwY4zP!;j-#5;F20Se((CG4T?6m%HY$@hq@=3D}aA z{Ch=3DiBTd#!OACh<(a%-uZb`ZIW!J2pT#)*;`~vz_B&A4sS(AP|6=3Di*dne`@~TO*Bo zn^UHOzU3S#_H(-9G@dPZ1bktfryP&J3&BI?ppF#ER_*~1F2VyjoA1C?Td*sst8ggn zjT+9{f;Rjl>l)u}cFWrc5DTY_N@$P25guCQ1=3D+iAjVORNhB>M@1kv&x>-3$M3 zr)`Y+^xA^pfHsxWrqszgfJf+kHze#A@qH& z;XMGUoee|1jL(97B*>cmv!nQJsjeBUt9>NWG8PWLUz{Hf$ei!zL-+d}(D9v`c0b+@ zc*m26%KG}WXAyQ!MN@oYwhWG&4>73q*u5RKvhQb%mvTANq~5$Nh|EULoncM)`#iw1 zQN!{!j<}qa%5w0z$#>2rCdM@(Pbh`$MD8E6?M}IW>}K3U=3D0mJ%PsiWJe)jP`tW6M4 z=3D#w=3D)7s;C@?*n}31W*5M#;lwAV)&%Gmv>fU-)S`CSl8eVc%E%x{1DI@?oam3V}0Oz z_cjh!ON=3Dja5qQB8u5EaJ5@{1dBOuFQpMPMJnuxPe=3D8m<#t@T4Hpu?UT7n8CNdS7dT z%t!13f$wb%-zV1qJ};W)6T53n(@XAnEBiljuAy&>AA3`@1A&j@UPt(emsYHv4gVO& z7fxdChE=3D(LC1RKsbY4?`6?|U53;zY`(qa1u^Vb$sUsGGKB<4RyT5Px{eFMffr01Jg z@GrJDJ5H;R%g`%cZwdlHS!Y2HiQ!+r53oJ_-U~Xl<8lz{UyS!PKCGX8u!WfO2Cy%=3D0#^2aOvAb9 zYEAEL8ZV6s=3Dk&g}IjEeulf-k~vTx+aIYH=3DXPcu!lTvB_>KuOO7_GP%_qH~|hKtyu3oiYI zjx8#3?y3pQ(|EI*2;ZE%dM{&vpMA>xaG@csGS>#sJ?J9!QbYH!(e*~#Z&u6e&I^q$ zeTL(@v*J1xwESW#Y_Z}&D$R_85v?zc7Eqd?vq??%|gT0&OYC6{mU z1(dq~N|m|b>EG6LKcn*S&(m{46|)|cwYny|njg4Jn(;4kJl9fxpBq$Kr(!wCu6>qzvxVP)f3BOx zM|%**pcQ9W!+^E3V_`!E_~7{xuVze<2mY<8Dv$Gt?MwZ@GwQz1a*f%;dg6ShcRj{r z%}>C)FkjtEN2yJW(cZZQJ`}DoLL;F+{#wo$)I1xqc$Z!2XP0l`S>sCkpVOm%Qp=3D;r z%khr3;LPn-lzkR=3D<*3(}vYlW5O6C6O75Ltv-X%X)nTy|2=3DXF1;Jj?$9oUi^Z1A?VWX{p6kaMW6km9#69O@TtQ?PJcf&L zXX&*#XO=3DE_OTfWTE!P!qGaqS^dO%m8m*LE0>67oiVYcCj@M_4!q0B2@>VPy^4RkRy{7lmOz0S&Z2%)Ae^4;=3D>k$pD+1 z%B-~SxI73bsNY!GKgXLqvSwjj)G=3DxIa%7W{N3?12UM3kIoKxA~-wrahK8R`tu4#zd ziSS_p-Nfzb$fwugO(VFzsn1h#&I$F8rZ2Cd3+N-q|J!n1zQxoFSeuGVZq;^jLu((# zZKK|nb~^1(>KtpIKDTFDBUQ z?s-?@%#%N1e)t%3KeV8|Q2*X{nW5n^p!0#Ybr1Au*w)|9a?%=3DJm|)87Jz>h_3~V3c zb%yrap6lQK-ludueNm^4(1L;X!d>@iSogvn)b}celaJ`uW7S;hJ9yS*972qbqjbj)?$#ALoohT#{V$faIh2md%IYd+us8{ z`n?|61F^EEeMlH!%jpX3*;(anIdN6!(Op%cP&Z-{%zvF}p_$#ezz=3D-DXcxDaAKnjL zElCaWxq*|ifcS=3DyE@)$-PR{X$4Z_8_Pro~iS56b+-awZpOgTKeSU>$csH<;x=3DL}U% z-UGe_|HH@;G{>i(-3v5Q>(B@4@{%4J3x=3D9|+`-R(s`uITT|p;!cQ^b4E-MJ4BIbRd zeJIz8VbtHx{^RUN$@#cTAiJ_7vKHk24e@LEy^Jkm8U*K3 z1NXa%xmRap+$Q6B>R78cEA1alCp^&z=3D;l%7ablkMZ$7cy?>n)|%9tzsS@X>kQ-G6H z%)@~EZiS!vDmC958IjC(pl{5#GJYs?#N@vVxP0sIZj4oFTL9~vsfXbc0J?IEjS_l> zl{NV-wohG?^C!AjT_|^6yZ}8p3sUJH(#?K0lO!@OwkwU7SxYD`R$f5EU30_d&;fM$0D94RC;Q!x}-`0>D=3Dk zeKhf{q^LyF#CJ{0frCf6mbcVjZeo4@0RH(tohC8^bmE7949aaM{aYD7n87@{%}-$u z?=3D2VmF>t8)X75s+?>3R|Cf`qyZ&)I17@uOsG_x{7u7vu2DSM_u+lAN5_gg7zg|^pA z{_Msz94jkh)^!QxF2s1HL?6N!0!Duw_N{JKuITf2r2a<1L{H|GUQ4`|y4apdsFvR36D``OU(V*$(9zkk{SeErX& z3t(fw8lO0Q0PpudOZwWR`HS``5+56FclvaLp2G#R*$?ts(8o@}U3PdwEFLoO3f#TN z@#LHZ-RrpV=3DqKu4%Cbcx?B2S)XFq{7=3Dm+*jeB$E@pM^4@t5bcW!k3|cJe!BuzS^J3 zv^y2_BL0)&D@Fc5x+%o^q0!#u&=3DO-+lP0x2>CdkP(HO=3DJ>koT_(Mh;Jfb(Yb9qMDu zaHg#!Ei7v1d6ZB0R@%?YTm`%l?xi9feuuIb5(IA*{f{ttTcQ5~2e5sPCyo|9Oq`y4 zOV4rJLaedg2k;GTb-=3DFc#oy0RXMBB-0z1aVY6IkAo?b7%iufwH!=3D%7dnCO3wu^7}B z*I8HiTZPXeR^R@p!>13o3!JbQ?vI)?f3k1X@G|FbLq6m-;|O^u$J+}bM{hGeOo+qa z$Z*avj05*kk2kdU)L{LE{@Lr4eqwtI#5vC?cxQh4p=3DlrSW4B{mv8|8_WT`#c@sON%?!?>r8cE`YXtq-_d4BDB< zIv-d&w5kz4_td;ZJ%o{Lr z41WGllp(mseQ2?Mx!5n1naDHr&;#bgLXyUgo<>8DEm9ta1^9s}%~UsZB0hdL|lV5n2%AI~Jf z25>h0)}VWyJub=3DarTp@_|4=3DsO5cnykm8b zuP|)eCzpS~SiJUjfWs%|+ew(U?@}l4<4%t83D-r>1(6Z;BTf|#ah!oyIDC`7cQJnX zu3F5vDD`FCt3{?DW=3D-hP?$zO)di;0~#)8yExI?V-KP}fq53()Juf+MF_xel*m*=3D-+k$VFv8bk!$ZYbHd_U4tZL!hh0S;1l@jvp_A>F z`pv_vFTYF;11+uut%ZGM7~}$#fp^^bkn)ZCf|GI<0d<6=3DFVG!XUheeZ{?g3OeU@vK z&^Fru3@6Y|5^ThVpLcx~>1)}}Y5Mvr_7&rl3pnmVyQA^5em}L*|R8t%FT2-1K9LVR~rrdAXTX{eH zan0ON%QRlPZno6wdxEG~`n%8ccg^7%-t#K!lbKz2Tdq8j@0>@ZQ}D>D{8BXw`1R(O zV9ywQ31`a=3D0qzv^#m)Iax@%x;GTE2w&cyl8AnFl4kGLUSca+S^1%mULlt=3DE?=3D|lv&2(JGzO*Aoh_4uDvJfu-{CTQl1L7KF|u943$Ki*-hcz!P5f$Mzy;Uh89MnT`;opS7VBJENS5>shic%VnDW@bg?$>; zfqi=3D1w?m%ZeYrE|;M;p&5EZvW_Kv#-`vbU>vSu!9D%&o|UA`Ln#E=3DPvH(-5_EPPyH z{FktnIKuk9k#598x|?G^L-U$9hCvULbtCr)smIa3rOt+J+jecS)Ssk}oFgoceIM#! zvgTmC%+9$(r&?;udqK1nT`+X2v=3DL7~fi$6amZyJl$pO2I`Mig^zv=3D8N;hwtTz(p7J z5bw6`@6ZNssh311z!stRY+7Y~=3DaRCK?ps8z)b*sJe!;ubc1bJvelz|>x)E!6i}1}@ zT5~aM=3DiOoWm!`_M$LvGimgH)K7sN^Y^uze~liKbV>2AUIx12ikn!Ed1p0zRGuxB*s zeM>#vL>!oYxX_Os><48U;1C=3Dd+&J*sl$tvC()VjO{w@1({oHhig}~af#%8 z408i@W1lqzcEMK1UgK@)?$hnPc%!NFBx7xQBhg26eJ_fvgYBcw+tRfi@SNm#Z)Eio z4ZAz4EcN0r2Nt=3DvhqTTyiS*f9f+-_oIEAq}IKjXTA{$&2m zLxaROVF3JJ*X#KW0t;yocI(CUWsD7hxOu!w4Lqo!-QvDU9_%1Xgs)>wgul1qTc(v1 zd5vweY)|{p#k#&{ZsIrcBD5c0J92%7`RvF&(y)K8h6k{eaZTvR!AkoNPf5K=3DfGL0I zlKMic6Z^S{$%MO(Y?abrPrAw%z}{*F^!PH^$iVaK3wmn0keBsT+8f?7Fvz~0mHnel z)Gfh>4gxejF`hpdJO)4C8UT~f0rgjYZ!ZK~1)Vq_J9G)!n;k@@T6X@ZiVfh2wP9t? z+b?njV<7m)Iu(7s1w1mZ(*CbiL1cE;ISKEH`?$EHV*_+r7xr<<|F&YE`hy3Vw+H+3 zJ-FA);R(R$as&UrYh3((2J>NzvH?5w^iF<b!a?SN9!lherUJi6Q3Bq z9XJ_l0<-vmK1l3jO!SE&OX>-)dkF0QRi|+OI>|QOt|F zus3&wl!spd?mNafU_3|@<_uxxL%t>d<6eBx1DkZ zb)(FC?4jwl_T|*vhI3}%K@PoejLrGeWw1dU!kyHejcD_Z38TJUl<~q*^hd|-4x$f{ zlN&A9P~qjDqsN31I|aT%oG;X4wBIK9kQWw5K_62x` z&)&@r;*ouXL_QXaCyTW{VB3K@^PGNF+P{4zh(cdrZZ8L{%j0wV{pVPY_~M+!9M9=3D_ z7k6mFwnBKjutsh#+~0w}?#{W`H@R(phn0QDE)?OT=3DK<{NCAadfnEg>R*P@||19H9z zu_<$?$1z4Faf_Ivp3qnF_#R;2^!z^gw&}-G?2it(k7cdUJYebPlg$|Oz|~3(2H?O8 z>vQUPnJ0TH?e|0a>^}vd08m^E^c0%yb}i z-L2~)9oQRCM>5J{582+%K2VQ7(^@SKzkMb1qdgb%!$ww|H&cCy>&p6zJ@MzaQR%w7rN`SPD8BC;J`6Jfr91gtY?Z^WEO4Dg}b83)CT<&)T71FTQp6htA-_YZiY_(t9WyOqS0 zcS*NUTg{P1Y?3eLxzeO?LEoql=3DPCQ+ZJHS<}|5~T-gFn_2*AWhk6Lj!7 zlOX#{EY7~|_{`@NJ;@ml=3D?}&P_`1>Xl6iVe*1Qr#!GU8Uar3#c6RN4)9Bf%gio`JTde%stThT9GZJH(6_B|DZYE7khca z7%|>JiXJcfRp!Awxff0FiRoHa_774Wo+M{hHh&eg*4L}|G!*X-byKgSPo(%iVof3Y z_GS!u=3DJ<5Bf9??zPVS{!+23zt9e^QD|7J~rG)@25k0H((<2-TS7Vz9r*ABfzAvT74 z;#I6?o|`sLH3xo++1^9@a_TVQqKAO9eE2Ii!lnZmi*ySz(hYw%w}D-sxd!ami@lrs zE~kTiRk^yG@IQSEWVH+X{#X^%yT4uQ3rM}NdruG@hV*3mCx{i?ntnNYEOiXoO8`#* zuHkpl`*2+p{RyBy72~g(2R~e{hX8Lx&uR4MkW0}Io8J+umwlQO>l5S;#>GS13(Dv| zu`d{>!Sp;U$+sg2z)blf_QBY!X(NXXW9VYkr>HxjKVi9RCVMt*{ILBN6tFDD?N$8Y zlR!JOULoyJ21(o|BY)Ue%#|N#8Pu{Wh(gXBA>B(K%OHQiyA03rCeDk5bT{=3DJ%#ZQ9 zuGO1a7ir4Mo^`L|Kf-nN>CVtQbpOA|8%7g+68Q5>S^w$%JH){o2b-zbIJv*5;n8z( z=3D1GlDxnGmEAIM$UJuo)3L0Rgt%Y&#Gx-<6+w=3Dddkcyz0leLkdl+wc$mqu$6HS6k}8 zW(4sKX9QeggW1;iAK(F*=3DDnVFC*e(p`W{05VJMfR?GNjRv7Dr}qCVKPkS2b1s52`e z4R(<3UGcQv9h0=3DjOua3AYf-OX*ZI`zO!Kx1d^#qZ*m~AI!|#}*C-H|*jE`zu(C_-z zRiu-cj~n=3DymAYE^H^-9udB{VX4{Qp+9oqMA?t2aQx&voxw**ls*BeIfA7lQC&pL47 z#OQ_X^N-NO)t}=3D!!aIU*tb-(uxRv!UEv(D<4rJmCUI26*W;^6#Xsgj_3*VO^E1y_@ ztn3+#>plu;m*5U7jG=3D3MDPSg^$NpX9LpSdM^XCyCkF5=3D&aE$I-K?}|J7skIq=3DYUJG zY^DA9+d(DeuJ+s7_PF5v=3Dfz%xn48~cUo7?11m@v8+U~Af?a9~jblD}A`t2nNY1-a=3D z$zL%a?H?m8<1}fAP5I=3D9Oq00#w3%_D z#rt#IlkQCa$)uT|_072pckULzmlbt_4suzZb+JxAI(xdhaHmnNnZF0YyWyWzyq~z? zz3}ugFS-JFIshI1P~RuOd!~6mOx!KF=3DW*hW>kgdfamzd&yAr(NG2nXsKXZAHlDEYk zT{nw%sfR>2DH@BpgF7%oGY{mVy|6x8Qaplf%6P~fMfOs<&sk{Y`PxzYO!+itnMZSbNj6(hZ_{Fxq zgTQ-!!%h2tx8R}2LF4wyT5IIuP+#C{wbsyCp}z93K_)(dCiu8`FE!-9Mcgu;2ka~< z+<&fD-z`Mja-W4yVa=3Dw#^`zOCPO8tFQg}mr?IsoVs{`>6C(TSMW&Tj`TW8KYA+e1q zPohm}e_X(&W>l!8`oJLNFHV5hfiVD`A@Hpy2g1cQwUs@+i9C^fjd~aMX;wi0cGVYp zin%U@ZBotx5C@!pLG&mz1U6mJcmmJkS{wdCuH~BN*>6|ce;>!Zq(huVPt|`rdi{&w zFSwF1iTS$?~@F3{iV3zCjw53LwwkCA6L z?8SAMFCVVayn8xYlqV)L9p3M(y~+Dw7o*PR9c-OJTGabje{2O0|5coazja3tRdZbh zy4r!Z#b)81d1gP5nC=3DDKCfcg7-*ox^Pdr0Tx>m*U{N`H%7xX3XBU-jHKB%nw`o(kU z%LVv+VtSLD%}%hNg{!$wee|YKL#NlgUypu<9sCRK-X1u zgt{co%pi5$KCmultS~><#_^1p0jKe|pr?#3*is7=3D?mS(;ndSVg7+cKE(1l!2+Yzi)s_V9Dd4>J5%a}*bBP}?P z%dx>8gy<~>AMT!+%Hp{S;Gh*aXhnaqdXXm<2h$nrreYPPj{xT7@PxHxKf568K@)-~ zj{2gy8qgnJ+H=3Dg^6ZvBQrcdb_=3Ds9-D{! z5p(H~;8E{6*yo9V3;cW$x1I4XcMF~xZTRyh_=3DY5Ddu@AxZX2;e?hnl!h8R%xa5NEn z*q2lD^sSF&z>AY-TmbPqE3OH|>+0M21@i?H^U=3D;bF3Za25&vlK3Uj_%*;C@Sw?v-Qzn*f)_xsLV&v$nlcw)S5;9i84 z{awbqn*n`mlBOxM7s36wplyQ}Ir|Xza&Ajp>6?dkP_}p@>QdfAM!!y+&C3Glj&4r> zG0^9MV(6f_pHkMFll;hl{mMShMSXwS@^Y5ZzMLwb{0;M2(MRfZYtM#vaSl%GO_O)Q zh9hxB!87iKeYZH2FTToQyesOyv}3?QnYLereKW=3DTue(O#_csp&4)2345wYZ8qs2ZS z_WKSU2w=3D>!+ba$foAq%nVetmtm=3DpVV1QphdCF+}4D|#SHE$^c$UwlfkibN;$x5->C zs=3DwtsHJqmy=3DS<=3Dce#C^1$Dxnl8T63fp)- zd}G8fqwdd`qdbooQP*Q`A%4lp0_KOWW+&Ho@S*L6pHUIUX}IhO{VVod^A7|-7jDi=3D z>;t=3Ddq6Y#1yKp>1l;Sb?C+$APXgj~!Y4t-lJW>}e@HqDJ%^a}C;gab56D^& zeo?Y-AayT5I}sOXZpmEMNjZu!-b9^j1;(le`<9Hu$^P=3DLxd$2~wtbP8aZ9oaQ(1;% zMf&HQ^@iO-_v}CR!@cB9WRr90$xfCtpzl#9zgtLnfFetQ0x)A zzGSKHwQSGeq#EB~r~S{T`Ay4zdy+|G{#%e=3D)=3DAorV%a&&$FT+veRVJz1{`tS5OGn- zgRSfvCH8+A#(}bsdq$kE{*|se|K0<|*f$CgFX%@#V39Q&)Nz^G#UGD$Gy3V-n2d($hg9gH-eZ{}^9M2w+ zKej^>h6?fm7>j0(8Rt0pOk?a!%(r&JkGSfvofh`nUGTL`3+w$j`-tA7!?#lX4SGr| zZ31$C!6RwalrtEQ`wZQ!IlMP5jNdzn3%QdR`me~M5{&C0@z~9Ig2gCv``0c3oV-IB zdrWeV>OZfj@wa!ezG~A)i91WW;(P(U5|Gb?z9$e2kp-(E04XO}88 zE#E-9-;K2Ahu*oO2C^uP`Y-L_H7mjAwy61udN$_Cd4`rtiu}@E&MKUfg3g$OwnNB& zC+bLu!`r)}X_UH?WpL-!SmcrTXRI?G|Bm|j<-&(1S8N;0^Mauv9!1|1j8k#+1vP|o zxGtI=3DtUL74fx7o!f=3D$%*IQpGzsZVA8V-9x#H)~d)Ex-ahz1;y=3D?ykKAdzTc> z9>JUlufpEJ;u-4B$rI4l2=3DWzsG22BQT$6x*ULUumr)nC2kd$id(r3maaVoK_Vi%QpFcWKvu)c&b(^_XIU)SN`BAC&M{J*^S9&~{kC4m4e+SrQo?VXEkUs=3D0cQ9rs&LIm8hW54<7F{a&gQ0!L3b9Ue z=3Da;&PCyeKln)kkFclukgpH;6UhO&%znCrQfuM?K5_u4#La*!}R07dx-&R8CB zmjIq;e%7%2=3D z|GXEt-r9JvTFLqA3&7r_0&l zbbL)Tf9t!^q~#2fcBP){i1iQv@4YsC!yt1vztS!e`j&b&sUhB0bvAjEsec^%t@)$1 zMu>#8mZtgRfbl(}U)$%=3Dij{4h~Su&lQCel&sa>@Vty z^TK3}Yb*O3h?AuKQ4r$?Yhw5zEL6L>2BRM9#RVi~k3q+5=3DnDHEwKw`VC#NK?%~0p& zXoJ1eQok->J9yuv`D^m%N_*jE^KGL!169PkZ)wxuJ}!Kz+GHJ^jP>pi_I2TX%#S*E zLT6g zF)RBz?)%<&_+Z-9e!QSe=3D;b8VmNU$nvI8)!F)$qjj#`bs!LB0eO0e%az7@dZz4Xyw zUpW>taMlKEI<9Y9&&0FnkAXd?(cBAObs^V4P#`y9U#=3Di|Ol{h>i)zz9IxyLtz5sm2 z_=3D~-f#QxU0AM8m%1S!r(5lu{!Hy^YW%4ec+U zT$lo#TJCxZg@)`3fCk4HJvFno;Aa=3DDfX+JQ-IUT(>4s+?FU<%7)X8PD$NI`_dvZZa zX@17pec+G9p^-bO7u7g?u?~7^9rV(=3DZPd|ICIhd~(GRDxywTB{fsS45+E_3Cy`Y`ZKG@EqLd7MSc&Qs?(?Z ztp7Y{7aK0{k;Zz7Tg=3DBytb=3DmqO;A~=3D2lwCEM+EN8&}T4S4$RnV>uM}l^HC-|xgvc* zeL+<*#vKBgehxX9*J;pI`le~Q5I_&)N$>+H+rqh2hOu$hvs}0NgP8Zt_?Kt*&P05M zMEYX;pb7Ca(fB>;+zB#=3DbICUWbq(3h{fnug4AMQ;yIfCg=3D6pUh7gf^_C?9QL9cXW0 z8Ix}saYbI=3De+`@RlAa%j-eXz355l*3p7Nq5rn5fAY6bpE?yQr2+M-y!YgOKWx_Pb< z`p6+E%efAiTJa6A+AH-OENw%zd=3DlnhX(RAKvF(%+`eG+RP z^W*kKGt@G{8|5YD)0AglDy`cHKJXm)!1n>ypI%DB-4)M>ei2Mt;*F$YtrZg5(6$m~ zIsIsGzg*MsmA}@|u7Z5|8b9y95(JR`Ho?zw!V$L}BtefKCAja|mp11QF9MJIU>j~$ zMX*cehzyrG{^44D_u#weFnWAHd=3DN6h)AMLr5M%!U(z2cWlM7xd1+BvWIt}*9v;h8j z@s7JX({QdQ4R*aF=3DFTfU4@7SP?0|W041VE#?`IHpNf&!|D$dH+PUkm_Los;M1IruW zr%T%q;QY0%(rOF;=3DKyRapm{ZB#VsnC=3Dke!a4r2}_(XWzo2zR=3D?-h|(VzXulYQ)z(T zI3GSBe1VF}-+n{O8+e4Bu>$?#!08Gb>zn?|bCDRWawr`#4P^&WaYT9hVw6n$Jy z;&<}mM^zHmpg1dqv=3Do!3f8#K|#I?n_#OI^)5tE2A6aD7zGArT2CM1Wu5>>o zG7>s^cuP#4nlocZ-yTSdM(%lZ*<E->Gy&v9Pd4jjTpGIkEY zg@6{rf>?X+9pm)EzTjawk zb*JcC7+=3Ds%)tU5WGagl9|HODg)>W?>rS9fg7Og`mp0n{rU*tMb`$+lFu1vdF z^T7RLdPsjUCh)||xM3g8T23I{%ukiPu+RH#@o_Fa*6*vp=3D^aF@#DT{)sVv?=3DwIzpK0{ zlLKE{u;Ykx59Ga5THtR5Uy=3DnaUlm>++VItyNi8W}*ml;!7gfH2cZ@5#TITRH>@#@u z-7(Nhv33E?x)<2b*EC(Nk_}(?j%`z}1@}BJ_m7}1qxW^*r02`YW4^25k9Kus4e1GG za9+u#jo1Y}BoFVi%zl0qa5vSA&-kW-*qYeu{ikw0^k{4z%G_LzxjJbZZQ&nXcIq7c zXxQN{-~mfE^4E}0=3Dwc%G0-Wzy0|(-1E>FY1V(+yaF>Mp%_7vFK%NM4@4`kR=3DK@8Et zmnqZwniKfQu0=3D1p)(}77cdwF9fIjAUH{)FR7InY2m%rD9`E>uh0vGeFN$BHB^zk-> z!zE5x;3XGjm(gBMn=3D8(|;ojJ^seE6&L)`}bYT2Z1-eSn!X`yYEHA|3}YjUSN&I2D~ ze(0skgg&8Pc_V2*S~@|6Xs1u)vCIdWofCah4IwO++UsIJxvzwNZl(MZStGj1QJ=3DHl zgtYCH@qVTKd&jon{ZH^+0}i?FtMjDfefP7Js~r4dExYFD`&80*ci^n8@R+3IQ`TZn zBLjC=3DHmWfLbadDY(prRu!~NmKJsL9z-$O5|bkf6=3D4QZu-Zy5W&;HQrp+C4IYzaUgM&&53WxsJ=3D1{6yk75cl3l z`p*;bZ>e`g{>jXf3I#^4gc;dX{C-1R%stJcjUNk zXW0flo@oYO8IWf#iL0~vx3X6%KG=3DfuZjm{lIne{AtQMLRx*EHOa<2U;%%kd1!5Z>L z>hv+)4ElF!!}Exlz2^@#@ws#I2;hTG)OWlc>uczzFVSqHe!7R88+D2AgxE(+o4A+)8kE@MDufu{U+Zyl~O;BGJx~G z4SpPb>*?=3D}y1^42JoL6D^zU97_vclT=3DA&)pfc;+0M|(G#zFvU7{zrU0-Zlbx{zKE4 z9Wi-?pC;tFj`%K&);`R0<8BZz}jyQ)>6AhNj)gfa>VbXZRums=3DKYwz zM|GPA5$o&Z)UmB>|K$3(9PY($obw#zlK7rFHs{xi02ZHQ`r6Cd0e-VwKTv0N)(z2_ zkb4O>L0KQdPGIz?9ME2~rajka>Y0SUzkZqC1|9($-9Lo?bFQqw9y;?<1w{)D@e1BffXU+Qtef1nNX zocG2yE882!J9O=3DOH{#N{u@1(WLd3xFNh}$xL%c0lu5ol=3D_!6B1`kOClt(fyIS9UmQ zSTnE0U6RKJS?|C`c#ibJ%)>iRHxFswhn$NJjz>4od;pJsm$ehdb7KOY=3DHR=3DF{lj|Xrj6I)J-2h5dU5!6|gPv)>A$bLcDfZHgA-l~2q*$JmPl{l&o_C;9?%fBMyowM=3D~Y z3Ot^gClNEQ0x`0&ZU?LwbLF~5*+&e1q0?l*uj|cKK{S9h?Wa)sEhqkUeky1v;@%2f zX!JPvo7SuyIoem@@gUw!p|f6*dLnLp@49;PCQ}dn=3D)zX^SEHm=3Dr|c5aH_A7BFrkp& z8VmD0p^SVL2;=3D^ZC-Xeq>tcPO-+UFiPe!V-w{D}bQ01% z{OLSamU@uid}Ss^aU`S68_ZK(WnwE1Aa=3DLd#yT5RGxsFTnp5v%L*}4f$|LUpzkyx2 zuVkd&%g*=3D~&a;UQj%N6XZ!h@95cZFKtt~*TuiGXRvaTD#{e1)wPs|2x=3D|6roW14cj z5c6Bk?hKY+?{gIL-2aS4@4;tdq>Sl0+BHHyH?e!T7iavDurG*xri?`x_uQt!emY1P zyed7BKY?CS=3D)-BLyF_mI1CX`dU4Pf(oAJvjcFx!aJAFf)J#-d%3Svb!p-YN&$QqFN zD|K+Do=3DBjt)s}jroOv}p7p&v{dSd&~>u5VlLEASnAKJ#;up{-?jm`BQQm!RUus6(A zDYX^p&AtMayQJOj^!^3$=3DPO2zuGuzpR{eCwMEsZB@HUmQWCv_!t+4mj1Fo+YQ;*Lt zN~g|eZ}5Ttg)Rti9^_9>nVRoyL!LGN%tc$v@3~DOE;{V!+hAv(Ys1cgdw4*L4ew*E z5y|);nZJUcAIW-K(y0GMGWJy3vvv?}l*z*%KC-W0kM%OgjO%49JAZcPsFSN?Ukb6=3D zxi5u2yJfEmcflKf3dB^CQ697WG@?9j9#u|F{RXH_^{-Ktt%u@TO8n zuSE>=3DQR=3D^D7o?>?S6kQUQtQeNU?1B)YslmwFO^Qth?Gutf1@zt>CvMb0_Ak?VaIr zTUkSe*VE_N+lb$4=3D6gX@8s3W-QWv2wzRV9g7o=3D6;oMBDPpCcD>O#oX!F3v0?rik5{ zp8>tK@vIcq?+v>k$1?YMXC$HC^VhN-(1r`Rbjf{FXv0!J+9UOEQR_ISO!G#vve*M&S7FtfQ9oOi(GPEzI;}3osecRdN_65Kj@-%(zw3!FM@D@M$L%@K8eJGZ?crIY)(jB89Bgdb5kb!WYF(Uj!0(n&v0DUIpb zk;p~#J1k$Av7ra|K`p)zzO^p31b@>Ra|3)o754t>t{EooOeAX#(idCm)n4`uqP9E9QdG^1qAD!8G6oFlip6pJvdzCMAudB4vo?{y4 zdD#K-w#?1t3wxf>?`Odep=3DbHLLe;5%XLJS@_AEx+O~l;ASXE%G3M+CCw{u^xrB^7v}d!w40;fGdH7rN<#T0 zl>bV3V|T|OZDCE-y$gD!jj|{GcFQB>3%j?+`+CDy@q43b!-u@<66zg-dY?eO%TezK zzKVC6YYV{F3oD)^ebyH^d|hE}lnTDBy!baB|G?MPH2j-`f8gONjDOItQxw|i_1h0j zM>~d(5BVP6y{7${crP;V58^$~y#E02x#s=3Df@a{J6SSxg$H18q2cbNAG-VY}9BNg&$ zRC#09PQ*(7z~|mQNBWV^eq58-kI{g068?GcZzJH{jlWS-C+_U-S~9spkFT$SK2m3| z!Q90dchzve0J?+a%w5m}d{euE^k-&y;5!+({IGms*F>B*I|<#IV{Pbd$X0wGlQ8yw z3oPs!ZQ9+9dOS$$GryT;`hOPIUY#cgz*Ga6lFJ)AdEeXsm|Py@e^u9W*7!BGUb*`RTiyw%i+Gx43b_lKvu9q^1qy*Ph%3OruqFLClCALhYXHqKSFZ`@CA^&Xr=3D9u;P?X_zV<8}9d{B?napKUkw{TS(+ z5^#`$_Lr77eugud1Lt=3DVVEt@~lb366vV8*)J zZ~x*de6!+Xeb(>s+spbiOm9v_o%#Cx{YOyeaO5pE@NP%mO#BX*->;P~{FE{2%{*b* zPmh?iR;S^?lU^FK2g zb>tz<^gZ)DME*VL1FA^iG}>pC+p!#l^Hd>m&sPb7{%_+%#HOrF@TX)!Kq z54R@;k$1f*2cP*9hW}?);C*=3Dl9!H@LjOhu)9Xf?ZYLNGKColIEk+&MS$9z07N#_TT zh{=3Dp(?CqW?F}#`ZHkL0uQH1=3DC99o9o!wpP0S9&7HsheYt{7;oP9zS_19Lb>j;|F!Q zA-CXtmwrF%9K4(PKco`xt@?Y$hj`yWnQV0Dx1qln-TACnf*5h6Zxxv>`fpZ>)_>0u zxea-b^b_jvSmiBCvb#!&drwx;*w5a1x(LDia%zP@j(0xIrxUmaJ)7?;9d|C1}`9 z{SEZiO3l3ucI|%JEe+Yr+uLf`<>1Uzt6^(%9ZHY(W=3DPi~aitu#x`s-5T+A z7kkvP6}0tpUpa(R_E-~oqA#XZH8}YskA0usKeN|pQ1lv=3D>r>i|XfyKV(S|mRXJO~z z{2=3D1gMJRc0dR9TDWb;2*;bT&W-Z@||Fh!uWW z5P+22in!J@uga^mUz;9J&pr?7T91|Vs{=3D?MhjzmMyLPgRaL%t2vAl)W8hR1CrnTR> z6HoMUC_-)c_p+MfUBq}veY4H^liiZHA$CT^3%icvGg;JLpyQzc*JtdrscVzATY5IZ z#sK>peR=3Dz~qWgSec0K8TBzr8^09LkVf{epsz;T;P`8RuV{NWUwgK9kyM4`ib09UDA z|0A{n;C{UT_;Gx+-48UW+poqMN7y}fp{)^YAN68Mu0sD$`xEvmtHB%G8i#*&`X(7jW0-S@Uw);9wG3m# zErm^^dc#kZ*W`Z?@SXPjiIA>w{>YHlOerS%opE|ld)Xh;Bku-9=3D;H!KFfAwNNEL9vC=3Dhvzgl0E|({bR^-d!FhMF4{|OOXNH_R(L%j` z!nexUB6tsS3g^M(0yWkf$)4(+tBNb_?~DkdLgvBvMSK^l;s+M#IHb5=3D#*H()Jhz+E z=3D*Ku=3D$wxoe2YS+q@VmId{y0~@h2>kZ?_V)a7vt;&#;E;Y;hT7^$`_wDe_8;)=3DdALB zCO%NjlkY(im?Mex9)9k*6>Hrc&3yNXNEtPrAE4qcFGDjWbngf!|HO)C0Q3 zc)N>>>npCsSj6sFRea9a&Nt8w>Zj~*>aU+rm^9ct zJfv?c`%BYFm!u1fYmS^HLHr6$%b4#%%U=3Dq?&org}x{Gq6{&u9mf_<3?S0^?$~Y>Ij#IS*m1u;28&=3DtO|c@kzni{hS?@ zcGXis0BUHG`hwJ9%I-F0?_eI3o%+DzDus0Dy9NI1pe@p7&$aN4MGPmQvs*x84xN>$ ze3Z#YQ9fcP_Fb#0qPL;HGwq!y&zKkec?ak|l#wT63wpqOuy^U=3D`hVh*dzV)Bx#t0w z^Ok-E`GLpKzAH?e0(%wHVQa>G$61aMz~}e6asLgzxvLmkqRKZCK)I>=3DA{OOeuxD5i z@KX23Sd0;#fqRX>_eYRt;9HU074v?N@B-+c=3DI+JbJ4g>0Hxm=3D}ob3s`WhZ$H*3N<0(ZK!*LY+7iFP`+s!D-C+3@GWuL?IAD7GC2jV>}+3(_=3D5Ipa( zm@t7h9+v(JAH;RSBY}hI;0@A$SBdX?=3D)bJRaZlzZ#AaAo<<)2YTzTT}EBkpTo&IlJ zGy~t?M!snuB}kUvuv zd%R(!UyU;>{*{cG7AS70tEy=3D%$I+I8DsO#-*IQo@zV*JkGZ~XQ6${=3DSj z-|;UG@5SxY)Kuj0io7Y2yPl>xFrcklV|^0d^sLr@0SEhn^j}ok6*CA2U>uG=3Dd}8u7 z(Kp)YSd9%wu2~Ja;ONY`=3DFXJN2HWDjYp;g)s@q8$UC^s1?NDFK&q$_x-7aI0A%20d zeI)VQI{0yTh!gHx1C~dLbHoqow$vYI2LTA{!8y;{L1*LhGg81e?48g@+wj|szq>?- zz<$~3X-dY0<3Fao)TNA`|AqY3L1$q--dXd}RtNC241c5edoMuaBYpz)3HxzhgU)JY zXYw5MjKeSYKPz?kU4c2Tw!q#G|JD5V(zL0IUch-|y~fFD!u>L|0fB}V!>1s~Jvzjd z_5 zMb6nO^r5~h`yY$Ie ze4kCd#Kf4HhdLK?Zi+0pUzPA|a#5M+{q*%09z@>bjhy=3D=3DVg*V+sBaLyIIUz%I^3() zVE%8HJ_KFhS?B(>(*8yw|Id%{-j>ZCq#GZWrymRgNXikEUqimu1HYA?eYkfAXJGN0 zXNiKa3-$R5eCxs6ac_*gZ^!#i=3DEoVq9NalE1bb&W;P;*$4a>Aupr6`;MF+W#@CD$b zJfSliWjsB7X;aZw37X}T98ON4Z}_WCnwe7S&^P?BWPHBxKpB=3Dof<=3Dl_GGgP&Izp7r`4u71?&wN2te;9kqMdPH7 zYUY)D6-5s}_aw?yp$ztWKa0yc=3D$W$L3t3^QZwu|q7_P#8A?=3Da+`z5R!ykmR+{Xyu~ zeIKk~8s^ux#7|u6|K|vPduWyVGw{swdmUDGdVGx!d^f>HKpd_B?cIQN60*l0;>O^g zcg^tJ(;00(sQone0I@E_|dHdUq{>l#v!P)A-iO)V9#EK^Ex<7;eu@Y9eg?OMjci74V@Eb z$u&*f?&uYq)3hykBVU5Q*YC~=3D0{gIM40gsUP}vuKhUxI73$R|cM?Vn4KvR1J;Zn8j|?~+!2T5ZzzZJxoNJ4_Mt5M0NBZ27H!h_#CZ!({H#UaFyaz; z%ojW&##a7?;-AekzABL~Qio(cz~dN8t=3Dqx2iAVH(7WyH23)fJDIdH#C+*mU%O{aga zz#w>p+}C*Q%>ax^D1VG~B5xjjfgL=3D?`EBxUG{Z;k&82L^7_8Hu^#7!Le8)YO$=3DVJC z8xZ(O4sy*Y~go_DGJqLBe^jH8S>>k?RzkNL4im_7*p zGb{VvZwdkgj63XN$t4;ZjC&%F1uSNM_d643Xdk{~SgYoNH$V;z(gx`9ea(-+4{3Mg zc!t+v9GlQ?i@Jb5-hgki^aZ>F_}_r~fFpZ7;95djwX%~o#b9&A`9JYNf7Ua=3D$GK^N zFAdhVN4MScHrqyBh-?0j$Dq4n4X$$Mf_`~UmSv%gK)f9JV)v^^&LB=3DGZd(5}H3@N}+$^|DpvfHe=3DgmL+q}T|43Z$4-NL zz;J;8oq+?(U$uC@+@*UDD3{ohDF6Mk9UZe+2*D|2QMVrr$il2(jT zcP-lES_7T87{8P8H-x{gDD0s)+i*ndK0L$nrCTkvW;5{wom|dSU<^ce^ERrxs5_l* zjq-~b>Mq7kB5o4+4C`z{opV{|0}bFec)?olcFslkLh~%Z-Qo)kpGoZt-8H!x-{@n? z-^RcHZt?Gz`P=3D!h6YmH53-3Ir;n@(hJI0siN+SPZoa6e7E4a1}pE?g+qbvIkJWP0y zKbiS~>u%(Q{U>_u18#OEt~pW1{o5y#|h-bij9 z;Dep=3DH!i{ly90P|-||E}p`OuZoRjt1Ja-E2cYdAu2_JZOw}!EAr^vpnzPR3#8s{^l zHN#^XNptyWN#qeV_?tw0;e9K86+u@jPFK0VKwGofRs!zE_otKGr;w-I$wU1Fcoo~! z>1b|1`MoGF{pVP4OyFblj4v-qXd)383FF+INGs@f*vjhF``Q?9Z{$4CYRglE$<&EC z*);=3Dn!x$U44_;@w8@OKQ^j+inJnXi%NdNoe+FpXH`NVYV0ee*Q2F`1gmwAgh{bS=3D3 zIwn6Y8Drq`_8;H#vn}<+u^=3Di>Y!h?uxC0ydcQf+HIw4_P^n4GW8TZKV>>&;q$MZs{ zvzF~LkBp;G%S+heK6h5woMj2-q<=3Dr=3DCP;U(n9R#uM}An}Qfo0ZkQg*GDb(}vEM$cqsl zXIv1OX-~vBMHW2*nf3_!vk&L~VaxVzQb}5-9luGwZ^C}yK2;<9LH6W7IkBpY=3DSV0+ zTw+H;nOx)vCFFS>yf6fx#sKDErZ0f?=3DPhambx-pi#P>1yHWOueUQF{J)Xz3yXW66W zkDLL^B+Wp+1x=3Dkizrs3`P<|HLpf2J3o{bnnHMJIG??^Rw)kwhUCY&l4ZRg?dM$#c`#{fxf@-o&-ApLWn@{XRB;_ci9b2k-06yTbcMlV>O1Tg`hj-s$thdV+Z0W!@1x zM0J?=3DC3uhe^0LW)XR%LDm*K8j=3D#K-|gJUZDc8mUpeDFE!+jv)n#0RZ%UT{hwv~ts{wruI>WB^(at$U z`_-mcObWX-j5w!Gj8kum%GES9-rG5-wk$o^-4{QTwN{`l#A`!w)~d_0{jOMquse|U}`JUu+e?-Bf%IMh1d zU$PS5nMPRfy$f_Q)zG|!b?=3Dq@E_(nbjv~{)7#&?DGCGd0`;X&XEelfVN+#duGakxHl>;s8#>2(k1pE<)Od;7z#t-)Rs=3DHhnI zYcUqw#|~kSCy4J|25+|mM{~@3kaj1QDaSqO@V|eLc^mToTGQ~&ztuE+{~g&IabjDu z+!_0Txep&J%+V`Hm_Dr6Jn-Y)=3Dn|j!zGl|P_W`#vVzI}uf2qfP`*}fRH25VCcE)|N zfq5d}94GiCeAqvdeP=3Dy)7oQQn7!Mg!&o+SLX3axBj*q?3^{uR9-1E9I5xy9Xh2Q=3D8 zjs!U8B*3}EzzKYIBlgDteD;TT$rpq7iq{Oh>ovT`?gjXK67YFUe4hrwt8uzbc&5SW ztOQt{HEtF3`gVcU8TbBhF8_jXUJ?XQalCd!2_&9a{9Y@oqv>>bt@l+=3D731`Ob*j396YeH)OnA(|#L#Z{{Yi#^0Q11^s(cMn#bp=3DT-kAV+ptoemn9t z*nk_-n=3D;eNI=3DW|YdVNLKHG|NrvpxX5cHSqjo=3DUH>KKOiIdbuCVE9)c5yfe(7 zt(UP517E`YiS21){(Lt1jAM-Tz!!tJ_&x)#8Q+g4qUrySw6}qevbyrepGg84Xo5o< zOL(8~I*CE!iaN>UWdfo5kU@VzrKpQKG`NLUccJ2TVrDWE8Qa8{Zt!InD%McNLaQxQ z++qa@hzhQD!M-e3g&qxI-m-sy*MGi6VC+9$_J29JF8Pe*r||e;2OfE)@%j&M z0$kNRM*F>O~}Z>@X^^H zAD`|cu7Hmq@DUjVADv$g9~Xz+xO-8>5P>87v1>8L39JJG=3D6%5a-g65 zr+ihst0SHNr^~Bt8eYh&PZa+jTwZPaa(z)Ox*X_D^VJh>1t#De3c3-#-_->;g|DXg z!p;?bBpieqFY2|!biTDW1>Z-#0w30}(&k`$za)GE_{kub zbsI!yYVfDXGy zo(-4H{w3jB!1B}Ja^jI!8eD(bCvd@5lbUO9pYKN^>Q@Rk+pGCZ8$NJ(jQHhRtH$Z; z!O9*lo_q1FgY%EBLR-GZ?PkKB_S}v*a9m4X!*PN5&6mr3g?oHJ$LX|@e^4$D@P#8uKR2D`*yb}?V# zh0!ca=3Dug`B;UDRXt7W#fOBph5y5`!P_|~iUoM_w1U#GGiSgTsDWVFqBUOWi=3D(}kBo z9xaD|qu9#3Y_Jd3L1(sK(*T<%`wX&Z?=3Dr&1Hj1xm?(x+6NCsdQUU`f*V4+dPkA6Fs zc{F{d>7X{3?qBGjAFdGGCv{Mp>wGY$boOb_Tkt3zd8`Fh@k*{)o4Lmd08h2V++^%c z+N`iIgy&#$&f8yidR};j&@9&85c^HeaUxAB-RXn5x*s;v2Lazp^>e$X>owLq8+@!z zw=3Db&b^n(YAJ%Y#Nc`xo)cDQ(stULPk`#?KbySjglAHcH=3DcPH@7H9*SW8t7a?)8~%^ zyS@N^CVKw81^SgQF;#fkAU0O?>!<(xksUi$d%Ny#Lpx5y)NzNq2x4eeZZS9 z@n_Mefh)?Ho|8W@?0m0d{l|*NV%>bT(W!LMldIj2;XujOp_MMgbgypCn2Eie*mplR zKM>`<`$+@$-RB!dMjpDc1Ah)cwH?1pfR|3xVc9SiA>bXaA=3DcJ1gYxAyBLve3SmqTP6psw>{jy4(@0@nT$@ zrwter@jd;^j&DtsjW~gYMz=3D0|oi6)fX~%iW1-u&xE6TQHxcJT}e$y#B5Wa&Z|GSrc zrfD*I5^=3D`)Uh6>gcSd`X^s_{b>DXs{|0Qr4aEC}2lVpr)x^NCg7h0w{L}tp^I*k4k zAC_)_$4mHAx{tM)dsx{&q04#NId=3DbB=3DEfIeJ%ap*KF9PaB>q)f-`}Bmk00L_=3D{8=3D6 zwya5OV~uX(NWPagM!`?cPlvjl1w#K;8&WiW*vSUq65rzfZ8)TOf3gjK5_xg%HvFac z9Bq*Pw&a6q!~0jE4IBS=3DZEy*EN`<%!g@Z_$PkI$M?C-{ouTkE(+!*!)pJSL-M^=3D$aD zOg3U{>p907_%8Su=3DkC{&2lW;h7<V@&4;gu$o#NLWcSoxt>>v6Sn#NBA zFXFe3cc#%U@)_fI4RF2sucUFkrHJuTq7Ek8lL%{cPB`bmJYtQ38&^B-sa*o#B!M8|o@SSstYQg+9M z{03N_Bws*$-8S|oai;o^vAa(%Kwaqn)9aCL3X=3D0mo2&o1TE-maA}9B#vy`=3DtC*#f? z9W@g^SNX)5FEK{uD5@@_#=3DAw#xtG5!&uS(iO>6XVy%Ms9xt>|jP;A-*uOOZ zo+A&Chgt9--%6~qvtazg*r<|j2O3^onYvxPjKj%jg zU#@S~3H}G^o6WxX3sMg7sbu_l#-Hd75n~DZZAyxVJ^C5pP%w>|%X_qQ4a#dLf5tpZ z&Nn;PnAW-oeJB|3_WKx*r~3D8XEpoQ>d$lY?5MO6bqBPs5XbMElEFdlK1i0mQ787RKQ<3fY6?P?s#Iv?j5NbgH*7u_Cp zU5~w5UMUCjVi~VitXxU=3D_-NuIwnOm)ewT8fW1tMdRTs`|V42YSL^nSdo-n3A0PS>| zxqsSlj- z;!3vHvWe&zDU^A=3DGLMapdW8I`N5#Qt_9ZS{>_&%pTfA7DDg+rIt??@>Se8vhW%EwALhs`J#nsej#hBDYlC5J2@k4ppz|CXZs> zkezvy^BRV${HRF7Fp~EQhTosYEw3aDX72BsMP_krhi8M(MsZg^`-EQ0*m%Z|jGPZB z`@`GMvu@Dt(@M6!y-7c>Q{(vUwfgyfC7U5{v>yP*V?gWI%N2}of2j1T_=3Dijb+e4Fk zJ=3DQszvCe@$VEXgYgtj}NkA%KuZNnom)q`8g<+n+Xi9yyl{=3D>pg2W5|$`(}y<3`Kj5 ztfyPiPOSrs3l@AO5Ki<3taoU?BRK180j9eeb9?YDOV1>p#V!@%{<+*Yr_z=3D|`~lx$ zqvF2b@Uc^Q%8z9+3go-PVbju6)_>~(MjhjsHl35)fPG(cET zmh?Yh*;f5v;uw7~gH@&%Jo{j%um^jJ6Z@HtG8=3DT!#&gqCbF2d$0E3t8Z-ZWPWmln7 z>`C*mpOW(x`p8=3D21hJ-ILmDM#R9a)jG#YySD1doMcYR&XIy3h`l!f9-`fRcs6~AcI z^(+tN9MWa1V2tUWX6!jLCJ3J?|EY0hY=3Dg6o?_+q+eLBEFo@tDgwI#L#bvR|8+lEiJ zr}aa!KEhL4`1Lwn$7;-dxKA`fTuS}ob3Ez<;1}Lv8n!9!2%HVk2foBL%lrUd_suxe zw;VB%dfoN;ju?1E(4P4e{8 zBk(-auq=3Dg_d_Q0q64~Uu9)5#ZqyE>Q?f(hBg>bVe*^0#9<25Y{l`BQo~!Ycr*X6w zzEaPlPxkoYudZc2i^lbL#Q95fk{)q3^A3Jj_cNp{UwoVB3#Reut^B6jA%6Pq=3Dx94} z1KiI8zDAT5Lg$1%t-lVH+^=3D}Ofp~s>h#7)2Ty?)g zzspx?Fkd;n|2aQk@|}M3PX4CygHOeOqucZ!kMSFDX2ZK@c(3cHudURd%9nxhAZgM6 zeT8ZD-t3D%x`lc1E`zvX`rBneo@-{0{z}A4IG)(Eb#hS55l^;xg3L z5f|WJ{?7iP|(r_(^#osFEQ-kG1+Jj<}?2!V<=3DQv`&2_=3D!>oqF7Wg!K zjZmfUsdXfffEy48K*48Bj{Wem0G3rhgh_$ z=3D@nzRr-9$n%D{NPV?N6O%^J*W$pQRCGDM}jrgx0 z;5T2q??V16x#kRDJepe9IqzCn8ja_ewue+-#dk?R`x0BEY}IGUeubWGyApYg6@VnD0$%}pt}}5wpXIxyrPfgtPyzde2M6u z)X{R*Z1AIA?yE;1<*9T(7TO9`jY0gBZpKQg(RwFh2H|Yr8^N=3D0HtWKNyXzQdc=3DaO0 z3+TgMt#|Rh$`^nfYghW;-mTalO`Fth;ln2UJQDBdCMM?$*xS%sTKKwQ?G<92FiZDA zy?JWyL+?9$k7pGFB1i2Fqg@d&o0<+0A7RWs(@?S8#jcOod~93VSr(_S5ns@{wzJm%=3Dz~_{rITq$4-32jq z?7Zh$hG{e-^;&qASBuRYAC`^wr6(hOR2QkO*kKES>p z9^KKgc3&bxXp6Wtb6?qyqIo6pYR%c0hxCX%V=3DzXnc!`)NX3X^?!`b~j_9Db*m3})< zKReOS#i@R->}6SMj&!D#n?????D>~JD#2RV=3DN;Vez~v5g>zf{jPC|s z=3Dv|F_Gxz1wD2|uR|Iqdl^{D<6Pe{Z0e>K}iU(S>D=3Dr^S5726-`lC|eE>)AfwaO=3DsN z@J?*vXC7djD7&8e6+S}wu@zmKsH&L|Dfq9+yWtcfXYvninE<#?wxg_3; z9Kbv-5d04K1L%)@0r_h@oZ`fiLAeBK!h4;C{;vGk4E+eCCxL=3DXke_ybJW|4$U=3DIHWVJXJAEu@-v`%#aZrNx zd`tD=3DSojxIDEdcSInOHSQ;Z`E`*5(R)9ZOH(StVC_10iq)WBwj@qx7(#yPb2VxHHx z6LB~FGXGl+yPC5vjM#NmNQ1R!*lQg~$CywKwBg{%Ls)M-l<4s^VUAgT5HdXRht%Gq zc%i~S_S7B*Z?WR!K~HvX*yRNcUt=3D1#&GDo0sE=3Dc*opVAn_obBY{}9kL$B{mpR_3wV zHlp=3Dv;Sc&g9Va+Pc~>29@_@og@#nrox!^vCH5cgR&mdNv$N@#?@m5`igLLibtYrI*V&Wr6zl-ND3h?|?;x6csn0?OD%H;iW z)`9Z%UV+`4VZSt#P2<$_Iu@TdR2~zWhU`r6TWBigUpWuI;Rhg^w#UiY9I!WBoaO7rwDy6ET0NI&ry6L5w-dc@0OxSUP&8d66a4{6yW@p+#AL| z=3DY}4tdEsLBVq-PVoZ+#|Ur*pNtK|{HTm~B@dG$zXF7GeE~8cW2W`Xg)52#{^nd#Dbee+i{ztmcwao9>!^YxD z+r!l%WB*Ig_ENO>SgO6HGL8nem->#GvpVEQB^usG(dH{vn@?ZJ_qxq~X|oA?c&gpc zsCNHKbUoGX-aB~RClBw_`58MjB*yE5@pgS|?-!5f3%mLk+$L9nqItgRWqqi{Td?Imj z9ln)Q4kfmR_nitLCdXMafxd*84|Wca3502;hUqxke;caemBhQU5$^a<`#X)4eKf$e z9?u&o`&%oN90V?9T?6YjLD)*$FurjH6W7*1eP9)2>#D_weFHfYZhc$UE|I>(bBp1c zu@3gdv6x3T7|xTY@Vkcb?h`%27t4e%PGLWSKWt>Zq1syP^Om{zMqj*LXp1@%>W!k_ zcGMd|y=3DzeKh1EYYZfgdQ4vsS^r*DIeZVl&2;UO;pxBt4qZ?Hd&nF|lS)dZiBVx)}* z$4Xik(zYXQ8+jwrHZZN`sX2EXqFo?iPvfE2RX+&dpbpW|x5K^}!#(x5&7jL}_NCY| zo12|x?)FX;#Va$lk7oO0pzRf&mmrI&-^8&_ZQ(%0aL*$SP*$6w@$H-0X8Hh|Iro3) zM`45we7)213r5{y`zEarPQt=3D*g5T{(&MR##a(gaiRn;tnl9+^;{;L27=3D0%9AB2q^2NV+M$%OZeW%N;0J8HsTOL6Mv7K7}K=3D)0?hc;94=3D8HE5j^RPZ zYzxN6FVy&W|Hr<>Oq(ASqJ0rF_XSQ_c_n30QXZmik%uA+$6+pocwbs4iPeK9;$O`5 zBO}Y9p4|76k?)@c`mVws<{vT_QTLpefbaeG9ae-ZRTpE9LtjhVtBiJjd;~NBz3Y?t zo#J~^xsKe2cn~vFt&7ryfe|A(jQQHs@{p_|DoQ^sP~_A zy|roeF7~5rE2cGY&3f@hE}6@v>x!i{j4?f`h4g0i5A9CD6JAH~{Za?d4lG722b+2?HglhMC~#C?!l%iF zK6C{O#lDr}UY6*&8gokOyZqH@8*)aY>8oy zMKKTKx5-%3#W%!;mU4rIPA~XY=3DV0Zh<3{#C_Zvfr8}xX|QFOG;#QKg`t@+?w+$9*Z zpf|t;n_J?bhC4~GX6|oxX#SRO@wZ@=3D$l3vX?KcNW!-}u9i2h;mHSjR<)7O(_gWsvS z;cut|%Gwp_p8W~BzugTv%C$pZ{FAHv$ON818^=3Dne&wufZjFBJ0_m4jE(Q)D6KSF-%DOfURcd~4#p#3A~_ zuVE;Z@>Tt>O8vmOu3uo5?`j;M^u<43&+;hy(&u}W>44#PgaP;oDn0DOk1&_W?|U3E zJs>l{XB@rYDeNQIx;ZDe_jQ5y#0|)!|6sAal0Nx(H%xE}9!3~2hb9ir5N_GefY{(> z&JXVNBa`OgPJvZ$H9iyHZm_-)=3Dilu@yzD{r5*K2#10Mr*rEauG>#pO!;!9lI%Cagl zaONv?jb_v7$DTRRp2QxvuXZ{8TJGq5LC>`bpNIdQnlGJsmwm>*g?xO6{$lJCj5{af zkn|DomeRGe6kWMH$a|j~f|!*Jf(zs)?E+qH+xvm&)b5wWZq;U$OB`|S>E!xE>?G!; zsq-P?8_^72X>xZf<-Up!gE@%%A1$48{DssxIVTAs9y$76@JSj*{dIDN0%WF{^TTF8 z3KX3n=3DN{211&-*^0O3-!5WkdtP8`TMjdw4Qe3*ZNKD6Gv^*R*AD{a2<>=3D}U% z@!$g+MlJEQ)8>NxrMuvZdBo`M#cgl34gBbILur8#quhn=3DFfKS=3DY@PJ?)nz~1gE$;n zo@JPG?x2oz;)d|Dw*wEu_zm2r=3D5=3D~LZ{|L$d?2OXiBrx~uPv?K{6XrC#FjyKN!Hu- z5$o*<8pF;}uMO>;PkNU*I_$#KyF5O}?d^H>8z?Yuy|9ZQ? zJq+hED4vmL=3DB)ao-=3DH3be#IQdQ;J{g<3>ALPPXFxT%;`*{^F9@1TyDeHJ^D{Kk`4q zd(gctyaV~6!-nV5?QVg{xj=3DoRpFB9F&;Nk^7qX2sB{a`;vgZ87 zBEC0se?3K)m9$lwxm%u*@kAVBJn^gn%zfV_ZG%@_uWFU%qoq zD>|NQ5s(cxY#|JT^Wls)2nTS=3Daiw+jEl4d_8h_oaa3F2(Il{JMTwl+%0o1{Hsh4~N zzHIqsPV>8dWXIVKHheRJ70OmbxkWzb4wH}FHfdT&-O5(BxrKQEkEIAD zc@OEz%-uYdeS!MMorE5WxxbTr5Uq+vpx9jz-wN~`o;DQ9aizCH%D7K81}axAnmZ8{xp?H?N8S+F3sFu-72(1 z-prUEC@*Da`22vzYaaPMV0b`{CFnoNzWG&3FV*^lrN_J5(?mv&H?4# z%5uXA$X-3h%-mn@A6Pcv%+h5-_ddNIX_pgL;!cglPsb(m;3heq`@?dR<})&$t^6t3 z^~u3B7%cvf9MkT0Ojgw#hcNKGDDl6bj3o?dx@<}hC$H!S!)I@480@6ORDI8MCgIop zZuJpm*J?CNS3W(GjpF-ItXZvHUj9#(CtNko>%o#%-0`B z8+VNV*-7xLV5QiHyhtN{c;Kl^&<5c}Qg3sj^K9MZ_)5+ZFh+0|YvM`R$>k$42@ADAM2WejIUYF^|D_>i?-Zrq-p*++T3t$6}5d&QqwD#~x?i z*c?3uTFC1>VZdK;5OWmOM#wtMk6;VJo)G$q;r&dsrJdsrWj=3D{G;`vxRakzItmf{`G z^P8h_?LzEu!nPITL(UDrz4+RICUP)0Tv+6MRR2_ORk1`;FbsJxz6Kf&aTSdpT zuMmBL`VqcCck5j3e$mKbJ)FNNee;uDC?_a*$9t9Ud%1+cmpHnBJd}L|e29HP_H$x< z!A|oG@xwN#a*ki9(j`h_FKYWV@B%sfXT)}&p~_3-ksi$4P3urRucVBne4%WiOeftT zUk~t_ZH-IQm@l}aZ%C}(Nqf22r~$`R>8}Xp(9W~xS}ap^j8}H&yW2CLPR;iUj`#rp z`32xf$pG*N+8RnHCr)$kCFSWXeV*1mbB(OPcZ?CC*>khABTuznm{860KsVmGP92c`|t- z&tB*GYig`~UK;Y8$Xih8C<}M>{;6xWksm5NmDhmSj_0)J@JzerfpfjxF5vJ@g~JIW zd@kGXObe=3DKkzDYy85lGb5d+yCX{8_Mh*4 z@FZ*&Zs2pP)SRXdq-15HfqI=3D4M|&C8#nb2Z#hE;V@hqIVfwT8D&Tu}%#ASX|066>k zJSOYJjq2;CRQx|nS3>;1{`%5~>wyQ+M}XfW!O5K%qlsg}@1fr#rq5NX&9XMFb=3D#*> z`hAkuZ#V#&TA_5MGZiUXI-}1`(X<4dD_Z*G!%&r?CGBUEBlJ`x`-$5cCKLA?I+E=3DH zFIDZ?P>Om+QvP%7>iTAcyTAjR4EI^<;;;b#mu}0(U6qkIMLy=3Da@xWg^r3XIq&J@ep2SYO)h2TVAp zgtn&%Sl>_FRxnwWb5?%x`@!=3DU=3D=3D>GPU(7KtXYvZHAJ1((A@MWw8w$Jc#u+3J>b_dq z^qUiT;Y9YujuIENAX-te-61vP6D09NsvgV;c)2b&xJAJlbdA^r@ggHfd)1GGo z!IeKpdrv_JhHn(UK?Y9YIOjRO!Ifk3!iPHH=3DX7dc_$OoXPBwBJ#g~*_YS@|{1`imy zhP3&lCnECtn4vCP?Pag*b}yGz&muJTABaH z4%^JwPMcTqi%u}%yZ9zL6~0}MZ*^(k?lq0MXZ)xa-~5rCHb>gGP535q8{cs5u}$ol ztjisp@CLrU%zTl_5`$_H6O=3D2?0GqJgg8(-q-`(tk1m|S<|-UPJO1^s5xH^CdCffBPjM9v z;l0;YI4pu+_sN~Mj+3|8_R?Nu;v9FRb&^)`+m7$~$kSFj_oMcP+WoT{YD>6=3DxgUA< zBhNwPvAGH}49dg4TWp*AcG@;Bygqxo=3Dg>qS^6qgJW{V!pwpHJq(dH_|xx!dW_1>Ks zL#$vWw?S8oVGBN6!Zk2=3D#O8Hxm>AS++@gn)2VmTC|46Z`@PY{7Gt<)Et<#ngXB^*5 zPg{rcCpK@e@ni6e(R2BYdBWJIh4Oz*9^zcZ?_*#m`;qiD`uJ4%*0-VeedqV^iI1Xx zJJE-2vBzzDV_{oIX#vg)v0<(F2+kb>JY}84*_;BF-GybkFf$8s9Vv$GhhTyu;ZKbEN;% z(mC*M^?-B}@lM*9mTm^#En_-Qv!)T+IyX4Wghs?(d%y5Hp?%Ue^|l~&->;vW{_!2Q zz%#o3Q=3DD6o{uO=3DH^zuFB1mx;H@*5A^_|C#P^&JcE+-r_83cqa5`{Ub8qej{fo2by2 zqG{)~0+q1(kg6YO4TEAV{^bKx``%>In&eeuv@ z{sN|LXT#L=3D2*0@tY#r%xAFp^N?N`#5(euGJyVZ{j8ny@0V7p1)pAFj$d>{NRVsE^y zWh2@RSp(TNyF$MG8sC1ezA>&lzHL%{J9|986DR37v&_fToqt15aul+T# z)gl`&Y1h>QWORk>5q{m99;kgB^YXC#o+l9hQNZA9g37q5nP^ytn$|;Lm** zr@@rOJ?HkI*&O=3D2Q(mH7F3!OigGtpRFT8h1VBxwUfs@^ad+lUnSV6gQ!J1WQ z2lVuGeB*4N3m{_$tY^No5%B#B@bxbC?!fnJq>Lk!v7Gq_>gOnfezgPidnx1ls*D1z znQdQsuVEX^7v7Zxy_P<5SQjRZs`-KB$2cGi1!Isui2NDn$j?0{gXM3~`7c5Ka@12L z`aE=3DKi%vj)n9Dk^zY*#S zW3csw#?4|Zj*?JO8TLzfx&H7$(3$l#Y=3DhpDuzA8?Y#!~B!O+_e2J7E?Ggu$13*I#* z5A#JkY-7-~VdN{!GI$1db+hf*`q{>CoSQg2IGjFRwm;m5zH|Qs_QHDTYo+6tx}Q&U zn>orhrEGLI#?~w08cTJ=3D_9S?nJ5=3D#nUT7}rD=3DhJXpPdfXzV#-~bgv7Zx+bqR+Zfhh zAHOu@f=3D<4-HW0GI_s$M~Y?sJI=3Dj!-DL5H``laH!f(f zgZ9(fS)47jKUn=3DY>G~f+{aM6c*96p4WY&dltj!CJnOlU|E*V?kU(UY5@9@@2)K!@8 z#y!s*vEg?F=3D>UDh^XBQxfcap8F+AO3KZM;dxXhvn^bKgj%(+c?J<}k)*UBF%d=3DD}- zZ9PiIj1^fCt^cZ-`|y#Tg1D^;dWffV)b+6j&?n>;)_P?g=3DS%#li!=3D+`r>*3ejIa8F z?WW-@;CpS`l)byupFr>MEkAIR&J(~MtP!5X>oRw#gnY#J|E&C0qPKDubjycdH^O~=3D zfwF|XyzH=3D}lKO8HbKkN%3XYXsQ}9lpe%dj_0}e@9v^!%@Jm!S%;IK}vAFm{=3D9A}L` zm~N-ufU-YC3LxH=3Dd8BVgCs#R*3q0#4P4YBOy37L^P+ywx zwr>UxO7xER#k=3DPEQD6nqEG~o}Fl0(^0rqoO$v7^?_dU-@zDR-8rpQ zMxNdivNA$HCd3FSZ--Au1n|eV3C>vt<&N-9_yXa(gR;xaSt_~=3D*KL3Yk!Rs|IagSk z%eqL%++$9fdT1`r?89>(&v)L*HuT(}#%xUBB>bT98ty5j-BjraWxXs1?+><4PQsao z`K9GsZ0~yl<0}6Cah)#DN{4=3Dvbu{RP?p~xvnq4{#N|fs?Kg_D#mR)tyH_;xMJ6f_C zwrZ{`2t3NB2s=3Dy|uwoozjbMf!MN(cXyX)$AfJ@`L`dA#WTQ>6K+N!00gsNse1zGP~ zP-skm-fy@&4W7Md$8V<6Z`FSOQUf&pezxD;VPpX=3D=3DvR~ek-io<8+W9xx1at3PPx|3pBQv{RbP)<$iqR9L^X2afRF~8|relhvSNEM;)!c#Cxs$p7w4HZKF(wZ^CP7 zkCc8)#GjY(`klAoFO4;njhH8Xdn{v^5oYYMoFuV0e2I5%Vwu2IJK##KyA4tLGu~BD zk6}IV!vqbkUCZ>Ecdb!)$*bYsQs{To8}46q#;`Xg{$~=3D_`})C8d%Q1k~jhLVS=3D;!S6q6z8QXIm}5(O;CmBp!JMSS7$WUyH?R*FZNd2TCEi}m{7T;Z z>t5_>i36q##D(ZqFn#_W`u{d0;ic^O@P`bpngscbSP(@_3x4WXYa=3Dbk;hTi{fk5pRj|lz8xTij8Pv>um6~;YJi=3D+_?fa zQP}%p(2s1P*`35`Ch*@0T>OFS6j+zf47Xoh9IEQ93l_%ME-OX_#}S;OuXw}{0FnMl z%zI9|cNyPzZ&;9%T0@A>Pm6tMwyZb4FTSJLt7qo;FJxZ5R$5%_k@b6f-wT|l^Lpaw~JWk!aov1F|macw^s_gM3c6=3D8%#{$A!s5fG zG4r?|1*PJNj1alzi+}q$z9)a^Ds=3DAUn4+!;+)hc_n&+ZlmYp3>7Vt#?Uoo=3DtO3tZ- zXP|Dt;kS4;>c7>GM5u2Le|3HP)9O3#{&duJUS4gr%c{?p$Sq|(ghli=3D760TS)A;%W ze6Ra0$Cvo+GCrr54>~EwD_*t;{&DOjY2qhXJLNnyqT;ex`1K`n_W6<4H4%QU&9?op zOCiSZ_fE?iNzti+F@E!qlz96TRXFh{J|Sn*MZ%?V3Ar-4!89%_@Ed5;w~P_gBi!}x z)xoyZ%y)o^I;x795}mvec3QzR{mk&*T^^~KLwVzmUOOAM6ye{>=3DJyZMe#+zPZpGQy zNCR8vRV-88f8%-HE8TbUr@q9t6@2!^Zw>L+G~O0DqiEsYG#)YePp0vADlL3&Q#3JU zB;Mb^yv%cUo6mHlrM(1cXD}`5%jK`4n}Vg9MqQ*)1>2M>vEDN%okBL<4&JR~nb75w zMW%7-A6XvSBkfPCvl-u{%^Yi>1?dBhTX%HIW1!a|_%3b6w@wtnE2*O-=3D>#;QWUg~5 zee9+D=3D+qxs^rG~T*INC^Z0SYTnloZ59N~N7hyEXCZp$9P(vA93YYE^5q)V#~q^XAd zmvt4ZKKjYIQD+eAzq-EBY4y3NvvTf`s`n1T1?p|n^_HAfZSr2de`vug1Gg);o>~;Is)biVOM9YB%iB zXG#liidD=3DquIw#xM$GIFWqhy?K{GZp_lH>)t^o4~$jU3pGsQ;|W7wh(%C^|fBpl$S zQy&BzGX8pl2J{orXe&wS61a$~C4v~u-+X|~7e3zYS1s~*)KznkkvM%@}SvuZjwGG+>lKHZ36*(#t18|JNjNkrCsz9>xb>crsGJd zF(>1F>R(J_hLV548}q^sXb|2Lhi{0i`A$JmykuOf`U|YKcu8Xx{hzO0Nt(qNwtOSW zQ#iJ+PT5~Y#^^e{8ejiE>i}&JQU~ESbEBiv`Gluk#?U?RKZ$cr0)4Suz5ANT6^l23 zwic(Q;kx<|tZyS0$VI(=3DAPV32>oH>w{|r84TGw$$ry)jF@iL|XKH9>o$j??C#3L{9 z;nHoF{-u8YzsBz%ey6beUfF6dXe+jh{A&w*8*woWhb?3;zrx*_NUTscv>?)rD77DU z1ePH-Cen&6ve{Tdn3@X<9uEE-KAwdx`ZLvqhD@?-l{JJhcn|qHXenB-CK$aY&!P!4 z=3DSIjv_wvT3x%Q(PGj*b$YIcHy(x0$T{RMc!$CAsq2A% zw3Bz4xy{{Z%c*`ifJ|dOt%U{c+O~2X+d~{jq6HG`DOO*wCW&Wb_??7J&m$aZJc@N7 zKAv%9OMO8*bqovl*1LZ7qKxy`V{fqP0biCg1<)4At7&DXQTPDAu|BJvtdH%q>Kp`j zGevLtDcZFG?LzxVL&VRyaLDqlc7VsdgDQEY^i#+@%Clr2Lw>NW#FvcA=3D(HPsaTS-A z@I2I2@UZHK$ZaT3{N*wBF}IIvIUzO__|~`{R5D`wJ$_VJz8f&VLYT$g0l&j(-=3D#im zoiEEZF!{D&+V|i`IGXa(mw4?l=3D1uFLHt>rmUhzuFK+q}UXx(?HppCSqn(*`@)xoR+_otrHq5gJfOQa z=3D0P8qb1efji!t_|D^z9Hu}$L(Gh-;@Y4lTe?B}4FO&38XPnZ6OOr)<6;%JVT%kulf zlz6f~Oo@k)HiBflM8;^kY)hj{`AE7nbDJ0oVg+oSh~hcg0^$f5XT99WYIpS^pT=3Dr_)JXO=3DSOY83FezkUf2?|^mo{7rk$$lFdTsmzy2xG zt!KK(<3?663qI-KH#%LGJ31Zf;nPHBJaicOVFx8G1fsAtZ_B)`%KQFo*aY32i zvkZI_wl&%)Qt(Xopqym7hxQc^S4+`mIm3anonwacpYyd7wvDuLI{jOwF;(P0ZEzf? zQeSlXz3{Ed0$i7}U8o2D<&wQC=3D`^9o#!B{w#ed-ICg)?}8-0`0#%JHw^yjobO^#Px z#tLn-kr=3DnI&ocfF=3DJ;HLFd~Gr7xs`+{H-lOP*A7x_i8PIjdbbI%2LRKP~n)o1=3DDHA z@&#b`qMgPL8<=3DgDk$49-g?_P!c$PN$9(IXaWIVFJEuJzMjAm{l)<^UnIm8GsbFQiY zXyT{C^$7az5-)s*IaW1)*{^t4L;NbAgz1lRyqLxmk%{mb7@d~RnlEB(PX8U!NEw)` z!6w(+o0e`syn)91N$)2U1sk>9USP2N>-w+1?crMZ=3DP3WUyMB7FFaGINmixp`Bcpf% z^w=3DGfU7j8Af82Q@4|@>cx21is{jk4AU9h*~JoE{M6SS_@dBo4cH63lrGL6YHk6|2z z@XgszJef>ZeF%Q_hJE5OH?`oQhvVUo{7-W7i*HI`ieY8sP1-*sNZhn=3D)y zK)Uzv?xz0lioiD}&E-4D9%pM6+OK$Uaj+`pC9b$;NqaBPc>yjse(5`HV=3DN>*3lCDX zR#b($fsX>A9nj?Kt+&AM2Ky*!>!n@=3DyV_pVvk2AkO08v3e$p@g$@G0&r_boQ$&yQ} z7>lmAUo5(F&>LbF*eVsh6@Ake|L8eCD&m~R%$Ylb_i20gu_~jYqAFSbyR_0Z>cgeJUfbh0$6P$>k@ZU??7@l-mLPopQl=3D)tltin}R2ya%#BdQk() zc^YNR$Jl#^{>8csX^Y}@i9N(YUsu6Kq}|4Q=3DyMyjK3A;qvqj-2Q9b}aTTsWl7}K5W zvHsIgJK04)idOIjrUylyh%XS|F86+}MHSC7jqwMFmjU%DSyHI_AHH$>2gsAX zkS9M+$&(L-kD?e};?Kr$h;`ZyzOXL5gMQfawDrtil!J7AmL4ph@DAzvmdk_wN1X#> z&t~Zzrt#tiKfaw$$0*KH^F-z?hMy4E;7GSt8N>_YjG$k|?_%wA_%Tn#81{l!bf`6H z&_Y(j+@2A=3Dc&}h}?)zKyDt+}1`gm7!EwX9sDxRg7-;6lK@Tuxt^&0n_nRV>Lg@+tv zx{n3to``Wl@Y~%b;dT7$?18_75x&=3DSGj4A11m>egk4x6_b{jb%Z|@B6Zp>@>Z5Z?( z_*-i~juMVTkJm8Dz9_!AxfJ|%*navRrVGqD>yzv``Q^u0;@3B`Ar|^5=3D{NXxZ{G|#$a~xDfQ0_sLyUr?i56i7&x#&07 zmFotS`wD#05raUD;W3{{xyqh3&llf)+$tBv^Rh)C4?|c_WS?<8(ac@(7W%D#^SP!m zt7OlhYvP%_Xmypn-SXvV{Is4s;h)vR`$iHlFHrS zhd)ikE5Qfo^U^eKRls8y_EihfR`h+@pJq%bdv4zTvWI6>m)%i(YT=3DFf?(mJ-Tbr+B zf9+*|^;AHHfF=3D;5+L+K#xat^w?cpx76!qla*Ji{P;!H(7#_jb9=3D)Hc!RyE7G5^_J} zxv^lI8uv5mBtB^T*TQe^=3D%R0mZOy`U$UBbw!R9rMPLY>NceRzP^v~YFc6vI655N!a zOku0X=3D(2bU<|Bm5){9@@z|D0QPdnFC5whTJ%+uD5DuL`lTR;QNHkmIgAE6n3U;OD^ zEF1LG89s_OC)XmEucID_^C^WUh*#R=3DQ0EY|SS|8c;C)Qt1V*(%~CjhoS)h_l|&z%(juNxTNP zyfP!X$cHgv=3DKd4sL*fs@*a?h#?u*|k<#ss`3wN;*Xs$Etc<*SogH~g8Si264^rH~Y zg=3D0tHpS)qla$RSB>m>(*w&Wdh>kLuN6^1@dxg_*VytG7 zhlDqo@KrT7ww5TrDBQ1OKdy4nXJ+Mvs6ysSjrr7FE*{0Yn~uH^SlHO{J74^nclo`l z(aG^)`*x$#=3D59B<^-G3F=3Do3dmtp{$=3DC44%lLzZXj%pJGxhaHy1}5IL20d#CL3)dj8(+d?rm%$589P7rzMG z!cFXV@g>4urBs}GV{3R*tj8U37?7VYF5IzsL@;WWRPAsY!RX1rlBkj4k7k+u`|I-u z^gKKeLq8HujxE6XwrPBAE$dI#)tuRexzm}ljzj`7559=3D6*gb~fxa&_wR@rlxWVeFv z!MD=3DYv~S)O%2yh(40gaj^2uLlzWcSgERT8ucn|lE?eD@_aKTdXTXJHojl`?uo&|i_f01stq~vTiq78+QdZ{KWqo!aHBK*q{iSbY>An***w$G~5%2|$bnki#p-?~5T{o{DQ4EVW??I(ZeTMQ*} zm|+9oS!DT@d7Cr2k41ds-5XxZcSkSTqG)=3Dg=3D>NKJVeh!)b<-HRgMIO6*vNk&p8jmc_>eoML=3DIp!?^2VBa82w z?s@%+pvbI@cOw68xTIXjp5O*ok7+#n9N}YMqs{I`RJ9kTDim+%N*hdyV6tb-2`VkUv#(U-WX{?UM$b%o#n=3Dd(f% zCHBOcZ6)|_G`;jJXz`$Df64?g+o&$P;i~^qruTearyF&M^oM8hS^uwTm;zkd26SQ5~ z%l_xMf}v!S!hx{_Fy^l)%wWGP!MVl8LsfI_({7-;yqp zdYAbD=3DM%6+VNQF-L3lNMHi0kx{94vSomuIDL-u1_^vHODPb%z?`EB6S8h4sc|IZNF zA771leTCNssE0sKKnXH((dSP3>WFV|;cF$Wb1~1k_qr=3DWwO;CldCj*N<04&%VOi@5 ztj0ZT&vsc$DS*CK_|N2d4%iRIEiQB#tMMy%#ds`l&k*~iX>1n#uRlD0y%RKkkoaSt zyQ7z4j{0k{$+2D7SFPrU>Kpb5{rU~7&G;6m0?+W|JB8M}+(t(53hXm#j=3DzrB;!;N0 zpVZhz+B`+4iFd#YhT(au`@w@o=3D~oYCmj2zrp`NcE%qAadu;UN=3D^r+(kCpN}Nhu$W0 z$F6^{)p5<~M3IpXJ7fL{Poe}oBpdxa6sD9+%EH)U_%&cm2BY`p^&%Ezug&Q6B|f~V z3%}@_n5LKe8CUzR4WL!gABW${Hkn4Iv-GP5;4uJ?k$qRq`QbUS*l0W9i5~m^>=3D4*buILs4<6CqYV>2H(FZuqK8v zx6iyH=3Dr+A!do9*!xptD+Rtn!4jEO(s{+OaOTLf(mm_rPqN7S)AJOy?I%8$$g^9d8) z;e0FLq=3DT~RvWe)2HGD2DymTe*+tvNw&BXmieg93|Z`SwRqXWAz)BoL%ao?fuU%>rd zeg6*b_v`yJxChOg-iv)pJg;$$nuGmHWReUCEeZ5M*t(xzG zqw_I7P6vrs;4E`>wGq{L72D}*#F8f;Eb|r{Wynz0j&<7tS+o7uMvODuFE91PJMi1a zGJrGKpw7&!Za%#T_d`(MI{e~{w$rg@lvVZ|>|@tpAKQf{cp~Nk1xCvX#6zjRyRRpi zzd7E5JVU_;)}VbGRsUy8|KoYHdLAmW1<%{`^AUhYe01pN1NwQde%_^@_v_~^`uU)K zUe9O3V9^!jmAf&KZw`6uLw@6066MW6SqA)MlAkw2R*-M{5?zZi$8e!6+75YM_}+Wp zHuAo=3D4||U>XBXbuXxPEqo!lD)f6@k)&p9CF63&yG!{_E36+FQ^#|B)(rJOd{4oh%v z!+OUllr?i<)~*ptq7LY3ml~97!UGX&2r=3Dmp6U4~Fd0dcbiBrr28M~zTLe$fMSZ(0- zs;-71tgE;*@iE@r20N~-Dabyy=3Dw&m38`#c<+`}{?Gp)1O620>lX7$rgy%;l*@bC^b z7p=3D{HF&M2YSvY+2h>BV#=3DAzeHb5W+dz8DM_c#$<7;@=3D&;>|3a3JnQK%Ut$*`eG7S! z(jybWNF(hTw~CCmY)gu^G4~wA?nIsvd0V$Dn=3D~A zmGpli9BDAjXT9lgm^qi|F*a!ZQwOiNLdG!aB~LJ7XrJYmmaHE)q)YuQKc!ySnEsyY zoZz{&okKwWoa$;lGVc2f-#3N(Yf+ou~)WWPGkg!sIwe_CtEM#>MNe? z`JmUO_Fb*K*FG)~t(z5yZZ;}vzxbe`HghWKIa6BupZVzDn%KP1@P61yx*hBdVOi^HIy?=3D<<{VVSy{t|miYcor%_TxG0Z?yHG!fiR`-SH>W`%l@cub&DV??^>Mwr!;4 zAbj0ms~zFF@pZ4K1AFGmjGP69N3f=3DpZ&bs!g0)aN!`1`3W*ltt4zBZad@$Bk7v`z% z4b|5(#s%$3`hNjJZGuY*>Gjsl4#)sGu{_$-c>jwD{Kg!Ih6kf#oWRKWOA0vif zwln-Pe51o=3DU7-Gg&ZXGb<%^fxR!m-{m^Zp7sQWaJS6?Ku8tVaWI4DY?vmv|wz4exxuQJE z*&*jBbM@aUlj8oYTV!HiJ3FQC`+yTQlj%Um5}+tVrS*(~kL zU0?#2cJW_^eV_5)Lz&QtvF^aL+JXnM@9&H!5SlPMa4sK1;1jxj;%V8lyBGWVATz_$ zaJJeU#DItG1o-TtzY@l0ytMEt6LP_Y^bzZz$e1PVb#UBWWumW`p8Lm=3DmxVL-0q`z9ij?&henDgIr2Uh6#D)VM=3DmVSsbz1a4 z=3DsxrhTFyNK>GDC-+*y5zX9 z#sb>uy|0USJ$;kdIK<9B>njV753Pib`V3*YBO$tFIq(=3DqpE#hJao@SDlcHbz?#R%~ zRo|Rx;JE2OX5u}3XXajuTyn|S`9I(X{>QTl0n=3DzdiuoJ(k-c&MSNxc{^FPD*SwWw( zHBT91xEHo{nlW1Bg!Z|UHNxnu`Di!RT2G1oi}9U+4_|)cyWNu(6n4Kz-@V{?lXMv* zZW}iYZATj#be{Qa$D@ah{FVgx(N1HuqW z#$htny~TS%@T(y2F>~uS(QjMt*Iwb-QP7RLpXAu`Af9!KH_z(g+W5(RjJdG-PHA%m z&UsMnjIvz#NA&=3DH%7GHTM>%f510VI*z1VA>%l#o=3Drd{NL7gv(r`}Qe+g9k-!W1Zg4 zwxSFt+n4f7sB_``wGD&`9W?unwieq%)C}wwAX#Uu})q`+XP@fr%boXO0QRsW!r$U+>Nn(Dd0%*Ppr9Y zNH3f7R)ELL7Qw$k_=3D(kT>9jh)ALC62Xtht%D*TdPeZY^hNEejVy5H0D4~VxT`A@6- zv*Fj6=3Ds@25FPZO*&Nl)1T99wBu{BtIah>l{)%kej zrT84u!Jn_YWEp}{)z5XL$q7kxT{Pbvte;X6SoZ#;>*}*B#}^`w)3Pynf%+j54?z;? ze;9+q;p_fy3yP*)q0;5og=3DQnRE^Gt?%VocqxmOihd<=3D7|OvVtVPfg3) z;>eB*8A}!>ycY-S_d{>y`}l|SJ4Kv!?8E$hU|}LM!3|wne>)&CL7I%5g*&_#Bkiv6 z4zxFMGVo9z*5@UjNBkMm9PYCgCOQxgDE`=3DW^^plYj{@&7=3DHm|l_V(-QS!W+`o&5@9 zasy_2vK>P)mzWJ3ai&p1J}G+>5I8GZ?m2fx`UXWlZ%Vk_3jg2JU!wp1Cj(C%wdULDFab$M6A$A;~#LwR=3DOzZSnH zp1*14lnRepk8v(AcNlkr#szMChdx^>a)jSGZ^Spdd&BJSv0eCnSNkDj1k%h!6N$SB z_}@6BfittQXmynlG;=3D2A@*C=3DlRNYM6cLk&IbQ+AGuJ#yq^z~4W-=3D_CaobK`LMC{(1asH|kwmV}%O0ycKRNM%Dd|ZizykL&`BSefw~6ctzE9$xY`%rS>R_~OJx+lV^tz(e}J9IiQ0 zCuj>z=3DAQ34#}H%D2o0TI6#UCIh=3DX(@56}6qx7mCCg8CB5b_Wo6CFP>PqHMCO(T~bj z5}hsaNPUUF3d{rh19-P1PLthL#JJgh)W>3-CMS_>y}9Ro74<~i<76Iq^^ zggL))?7n(qn8b+(4n^OGTysZjzDoPq!bZ$791m);+KiJ1IF_*;JjVgQflm;P8lnyy-PzB z9TV4_XUqO`z;DgB(U02ir^e0oR+e40+qjar@f?~|f_7XbI#WC<IuU?TI?XJ`+^2rG0&SOdTa?p`IR@sbjx z+kWnKgKXtG%qcU+bu05oIqUH*I`LIq)_A^WIy2|1LJO41R_r3sCe9^Gtbu(P_^fV2 zQeMe57Tq3Ai)fE-2g_qS*gk;+FtD9$pBu2Hx6jO(zR!ic zG+njk6RdsSz;v|V48#d_cF-tn0F!$qjkI&5^jH6Op4r5DurFaWVkSD#=3D54CY-gPLN zSF+6PT{(K{D|hb%35H;3J^Z;Maja*TA#_pN{22{1JC*jLo@*FtfcD+=3D#V)xgRws z`iS4EanZ_m3hv64xaD!{WUaGf0=3DT!Lc6NGd(*L z?v%`&6ZOTLhMc30ON%S9AOpFGy$+7j+M{bYmV0lpY*Ujq@>?(FVqHZ?+wrT;T0U{K zUCHY3g)A4afftp>Ad5zH6&~G)xiR*E${MLt%F4id*U`<%{IR2(VGApU4(kY3N_>_a z*ubcdzK%2o-rJ#f+52LUuU*hjN{j~T9*9 z#olv2ctRID%DsS;shC zM;_LB95`2tb_&Ge?%SYfH6(Nf9Bwvq%l4}A()R|xotkL49z{R;;=3Dv<+AQbeTk8=3D~n z&MIq4;PvOSimr_ewWB6tIqKKvz`L2r061B(S@apS+WN-9n(75b?4K=3Dg8!JkRpnK2eIXYRcV^CB z_K`1f&m6WFIPEtlGi|w_$@`A%{p8H*-b^Jpx}2_@d20s9T-D(Z>j5PfS>)m5N;x|Pz?(Mkcbrv5*+Z?o&0T$WErD0#J^cF*G zXI)ba(|yDU^uQj&_CcRAdJ7EfNjfHVa6f>ekNE$`-1~q>SzPVI&xQa?Ofc41qXk(^ z&@7D_TEtB@|3I{xEMTyqpvAHwsDz@13Uy<4$p%-OSZ#x1g^C&~SnR8P;Vtxyt!T7} zplH#mFI2<;Q4){}Rx|;2pYOiU%(J@*VBh|}-}PPJUKeC{o_S`@oPTrX%$YNX$xr+a zJnzD}sB=3D*D6u%mEKH!_mXMnHOlja(Rul&T|Bi$^Ui*1IsUCetrNxuUc#zxl`_(}hQ zI9@#S;|yz8HDZ^{dxR$`kJPdG&i$}&5QjtkH+p|N{#v@W-II3JTGg%AL9km2XB$Ji zs`t0ayXE`a0$HMOQ#oeNt&Ib4z6KdNxJE#K)U6%54f&He-%^iRuws7a{>#_yi6S@X zQTlKdE+ebt+zN07-m$^Xc5xh(KTq1YxQyue%Ky7d9VlM}{b|uoY-;3AfbXty9L`#D zk7tG&7xI=3DpgIIUoMOqHJ(+>i_X!A9U?>2k69|Rqn$8`YjErm>W!x!Ao9=3D!(k=3D$>sr zi>&=3D=3D=3DYbFV+3B{4-slA~4~w4h89rC|TI5o{^Eti;{IE^6u8}p;wYg|>k#6%V;PzRp zJ?WEToL@%{|27&M)SP8(1x_-tW<`Dm(4`pnbwDnlpVLn~X?Wmw;2i*YY9D>-TzoIZ zK9#lqRoE3&dqc85TxBdglfI&Dt90bGvjJSKd zJm9Vi@bX?&HO}z0-$#DmUXBsZwvx6Or;B637#QQ2gE1%JZ#K%am3)ltKy`j%>nl&% zSgs34;_UiRcm6(!L&Kah0Mn6iXa#s3`T#O2dIz!bT@5R}4~R&oeM5;l4|CUJB=3DRM1G-*T%-^5WE<~K zK#r$j$RW@jcueAMb_BxeURdnMzFm@JoI(4*uemlfV$*=3DG?i*mcKwoNnGuCi$@TTuSg!@5e^xBNt2G8I8I7^=3Ds z`iOp^-A;geI{moN8~x_ne8%~MI5`vjA&=3DnE=3Dn>NKsvAx7;Sq+5XOP>Hu&y#A)e$o;z_=3DBHT-s7KgJ1JJaLnPNyT@n{Ib`+4m`jo@PW+X?skdGQ1^PJ zeWxWs_V$7I#&F!Hk-ejM@0i#8yUc$WTRUynhfMhGM&L{v`10XdM)rvYBM*MOT*%i9 z@KBwi!}rdM>8WaR=3D|h(cio9-LAhM z!FR;w{zP;KeR0GA@6=3Dt2@8CDlIh0S}I}9-RIdyz`Eu+U&1>3{QO|JLJqQ`irEZ6Xm zyj2M~*YhUgD?c$fG{2O3(yn+DJg?SQ zz`1)<7W{#@j}LxC@TklWYTQ|t&dzQ|92@FHHNGYPO`|i*zU-dkcfkgBf+%*vlx+%7aat>9PMx)(INNEtDtK z#~nAZ4c2>%ZDQ{pKlzEpKYG$G9}~j~_6gh;P7vn?oUH1LliMfz@Uq59AOR=3DGwO#HZ zZiH56#!m&|Ou&!$<`sV4U%>Vi?6orfT*yA=3DU&eW0zI?8X&*M0|tgSE3?s!k$*SIQN zf^(H&;0`z=3D4g%qW8I0vuI9ocEbv4dDisS5dp-TeJ;yP@Q#Yeflz}c9R+2ErUz*)WK zBiK#A*%9h{*@KBdhhKQLAAZ41;v~_w_C{~Bv44$A<}>1&cPq}0XF{JL$L#*Cn42zd zc&5|{zfQwI?$$u$=3Dm))r22#l8f?asjHBjmr`!i%HD53nO=3Dm|^31A)`(B zPJ3z@@8P8F?y>(;Y-ZXzXq#srS_nJ7AN59WZzg<{d9DFYjE7GZYX+_t64nACZ*=3DF! ztk-`J9sR&pd$z25FdtM<=3DYjw7;(b3Pw5HCoa*BhG^Vt^4YKbp(HsW@{6UtgSe*FCu z^xwg`+mrU~4XDnK$sJ9jM>2q!eAIt%*eatBmIbzk}-^4kNJf-z*pYs78`wvI?P}jnv z$A0x?{H^Er1mCX*JpVV5Vc4Bt!8UXN&ujaw`4Fd&7UBCvj#dNnBJbe!*Eur{*uDJn(w@=3D>X;^B z;XLHAPmsPrm${%zyC)4!67}h$`-6yYbA>&(c+#AYtJt>a`r--3RmJ;^p#|4xA-3H7 za`Dv<`wK#bzu+tIzOrL!CyNfucV^iEFXo7O!j~$J-SbD3HBol3-oxI45mM!4w1HdH z_etNv_vMEkHPQ>N!kV|R3HHh02SP8HUAY5I#@5Lg18W9v0DPn=3D?5VfA^*E!1X=3D$O^ z<&FNhj%B$S;`e#>&@i(H=3Dc1Zu2N1@4W||#KcAK4tPMSxS;_Mmzy>QSEeu~!Y;(OhI z{gBh}@r(}SOx6VT*T8QO_Hds9`GVe-^$(Ee_<5bgiwD~xPc2iEd0>oYC(g~J7Q&d=3DC4qb-TLGvYi~_Cv3^<0jSt zf62Zv_NBtWdyC*sXcgV6&hMD5d{5=3DED?|QR(s9Q~^=3D@=3DK@YRlZ{AYQVz+?A|&Z6Ga zeae|B{caHNB98R0Qitz(?0250+j$_=3DXgtfZ{E^0g|MRaPPtJ*z3+=3Dy@Yl% z6JUBo!DOy&#=3DF?Nz@5OJ?`!<%dx1UICDh-f;gIo%R$=3D`+Q1UYh?88h{qfbV1E}hT1Old zyp%3Esa#?7g)**5J@)1sSWjpa$46$@D&tQvoP^8YM}J2YUnS)b_h_>XG;ibmb)fqT zck@oXcF^4Tmf#oi{h~$p#T&~r5D#=3DDju$V_+a$BS(j`fGIT!M5kZlHhfyQlR4cFuj znRG4qUgF@WI}+Y2Qe%5lU|#&^|L{}xG3U&0#{N8bhi9o)H_tK#u0s6Qsu4z^jvZT=3D zKg-COcFDxc109t)(?)M8=3DDD|NgC<@+tt`2CT8jQ%o{atAsqfdpKNWNq$o+KeKX{23 za%ctuTX5C}^Z{K2rp32DCij21!d{<(YrD`CWAjaOqFsA(G3FWMQyj0`RCi?oPWY9~ zYz^n-fHP0SSqL~C8qVB*1t(!7tf27>t3Tinu#bPAIUG^m8G6~+(DE|%lsPd0kG}xC zkm>CrpEwi!C-Mj7gYx3B|Lhv_1bLtzU&Q4EJfX(?#+$55T3}7y+0zDl^%&a0-})Od zCnD~EdB;5Vy@#buK97}syp3gwuMEc_^v9e&lr!?O=3Dd6>W4^QA7w~zMji7;BnlNvBe}`P_7qAX+G6`eSYkZ0L1bork^)AxFI zLYE1iUY9mmw=3DbUV6Zj6UGG3$}S^U!Ph;w^>v3Vp1G#=3DmByUgV~x2a$mg9J%&oq@zKbfc?}V3N146bX zCn?sCa}#WL#zfh;*5kY0XtmG?HdJW(e&(4UX>ff@o|e%W@wGJlj2Abn;m`Ne8xpk=3Dz{oyxoY`z=3Do8((NQOWp9K^`5j5^oyOr zN8l6Q(QwvkxX$Dwz*;8JM^LrVhrR%(_7RK-<0n6{y-f5y^33buNw4%>56>#{;bpys zn`^LwgNB^ly`vALJjNT<IdN_j+K6r1igm@7DHroBCFdru zId?L;7F^Ni0Q+3_5JlITw~psC#FIKup2Xa`EayGP*iXbck6TCbIrb7%{HVM;WsH7z zAfLhhI!D{?YCP?b%~t#iPq|jroAVy)kyiYT@@dTV=3DQXF_Cgrc79IyiB>j)cp2mP+F z-f^|#Zc^#@?N8|6EM8)s^qRK_t%d&a=3Df~vvY_@$%4c{-GfLN)!k-w|m7*w!v%Ho1$ zpH3{evn*I}{S;ppXpFrYYaQ0A=3DyS^>d{5B_xwCXmF0c8@UY3u0A2}E5AO|N zxmf(J<_vk4G{Ccy7|%lr?oTJGG2J3E*k!^t!Zs@jY&G!7UUT*?z9;Po|6e!I8~uK7tW4;6-8az(Vx(0bU1wI`e@TAL-d-J-rC>!3doi|iFbA`8cJM9VW{LO2=3DB=3Do^Ls}*!4 z4Fho7&<`56XsBTkJ)zsk&~0GtdR-&zn}x&=3D_XmKpJm}2O($QIk&Et&#zK69xC%w)& z!joTW3_;AtL#&HBE{#_|@DUk~HlU;@4pVT|D2 z%mf%~HH?A(1&rXYlVRB5u)n_vkC=3DRHp`q{}8pa^X8U0q&>4<^r8a~9x4B9I$57;y5 z`^vO@MTohw2j-P$ObMxT56s5`emEuWQSIHF_ejhpd;)gIrmRxpoAWf}yqNUxMt`7m z>uknybn;w3{DPgxBW!jch97=3D%oMC}q8g@jKFm{*k->K^C->IMFP=3D9nS&I)P0k_jIz za!lN^6kv&Ow6{1br23jJvKO}{&vW4%iV;ZZF%Z}3KtJh-8A%S_h*MIu7h8VclbC!OZW;aL}oyjIp~g`1iLijLE2qB%OT^&9EWlHfUi8}-Qal- zyf3sKgWQWj=3DLPB1pMXQ13C)u4iRV0^tKaEDj_)hb&QDy`PyEpveK6mLPT^}l^6*~_ z<6*>vv#%5P7?~#!VZ=3D2D(Z258!U7d(ZxzUh{=3D#*bd(%uF(D} zZ?y7lmdV~miQ&K=3D+|WZS_wU4Bv&;+Kp8Xw&ZOjorW6u5#&~gat2MUjH43&kmc{f>% zF7PXnE_0MV!5Mq@B|5epa=3DPaG&~FugATN2N^WS7UG*D)r^Q(olDAqb34{E>A8#)`NflQA%xdm1DjuN{y0ku@6m(mDrC9Q3F)-%`XR;mmb) zw+|K3XP?+MzKoB=3DuT|D0WfYYf?L04qzH%vBRvRAMAfZw0{px>x59QalH&EvOf2Tdd zQ&}@>G5iUGEVzK%T>Kskc*lBdJ4X31817TEU7n*#TyOF|9?yVJWE{ZZZqi-ObCek! zz-zC{d0}pq_`%Uw>&(;V(aYoK(ed7DA`BnFnbJS!q>21t%_H)s^bUPOcAmTSMyE)h zjF$qu601o&Rps_DFVpsUE@F`q<)Uk8A?ZI!<|2#-Ydh|1rFZ6*m`C9=3D6CWb_$N{e$ zhu-=3DM{nYpX7;IeT6WQ_bV#9IbMI)X50Fl)v;Da}_nq1+jXR$4Bbm|SPPd!JS2YuMY zaTsjA3ynt$%n{VcOi{3=3DJ(wp8@tf%^(YVk1QFwS0m$ONv?FL3z)#;A&( z%QfFMDm%uz$%hwMhw(_k60gwTwPxydysr>CWu4c&;V|oTHDs-makOKt(aQD4+n->K zBI|&JXS9F$3^6x1KF{~?P84OZ8!DHB)-$}(M|UNZfcxMv(;^w%;kD_gu`4BOH$4Z~M{Vta+2v^4SkG-r$5 z%GgD<29rI3sdswKKTh`H18>Kf{plG%tWpp8?XrD!6)m8pj%t^m4*>vL~(a-$C~YZ+VazOi$8pkxQ+%eG9# zl-nNAF_gri;#rMDcPrP58wc`zOSTf_iFEFEqCHvHTW8`%9>IL0=3DvqUawR{EN7ae16 zl=3DYR`ub(oN<;dR&r>Csxln))c&=3DtNOITpDux1pJJ00(IjV(wjh|1!VKi~!g9jKzmN zhJ4c|^@GU%zYpJ|z3fBc8CnVNWRW$re}M~m3sxZ365liNm-M|5e+M+ZWaJ};zSMKp zK9Sj`k0j4bKFTG}4EY0N_%3bmC}X+ka;{g>&dR{p7)RKN zVt!(=3DH#}=3Dam{T}BYk9ud>DE-c;_&dni2RX*v%RHBbga_{+ zhe###+GOch+sTg5UyxgeFi8LAEvl_)yVw@WE&bL59RAoFeMo2%FQ3Nvp7|)>%lb+; zq~M!;V!DAb1fH}Zjf@}Qd~59@!{PX&ihew2C7^;tfTJ9xc&=3DWFR1&0ug+X9amlTcBcT@e5ZXOweIR_x zwUo5K3b~YFbGyRdzhs5P8Lt=3DqKyH9aj*sU%@!W8=3D3opq1QjH@FIky=3D&humI|)#Uk5nmUIE>Wm?K#)>hhnWyyDwU7;oSDPomtFUw*bZ zt=3Dzbz;XdroA{RjL+VA@tezt>gOT(~NoZdJSu$529Sc<=3D}<4OUe&9w&Sa7-f=3D>%N(_ z$UlPeJkTjs#gH1JH;5yQ^{-xYo#+_I(N4zvq0e^e7rY}e`Y4~-@}ZP}0sdJR-ya%m z&G`dDgTN1~abNWoV@GB4+b>q$Kj_7Lz!4beU>v-Uc|`d=3Dn4N>O@@h>wJ_L9MNZ^JVG^&`YgH2gvut^(b`PyY!E_K<{I&>dGXXvwOw|fI-hQu4j~O zK9IQ&)ICd>*WDrTmCvv-R+czzsPW_lhV+oeW2u)tX#>N7$B$>w9wDvN{Y^N3HXQNj zOU$l%)1EVZrM-|m=3D57_dcWJzd4UD-R>+77nK(ogm9DSO6hC^iDJ54^rcb8*)m+JA2 zh~Xw0e3|2H1b!$NfpBhKaFnMaPz|`NFGgOYKDmk#)+EUs_f+~>nJ<7gP3S4`_`n|S z*=3DJC9Q5KkM&y$wiRDb;ZriPo|$!J6l4*IS^i&WlqigE5BZ38dmR0K!mMnnbAok7&5yMT+f?_6L~bA)a)t=3D=3DBy)8v z#c#;*n81h*(#nCo2f;_M(89$|;G`oD@a9ghw->UlAJ3rGZ;vPO8 zBY0_PUeL*Z4#}~Rh@Ze<(JlS?ydC&iru&$LGk8LOp(Exiz`3enG2$?90v%wV($~wm zUdO_Mt|Alb)LpPi&(`+$jcXMEnpp zbspqV!8{q0OZB~9F0Xe9@9#9c%sE~pRPom6;Gcrc~i|5Z#cLExd8gQ3$J@{PF@%S~+Z^_hW)Nz;- zlRatJYlIw4UkSQz!aYx6!^d*ASHFq!ar`#W?%5wd2Av38)z_mf>_MS?l){tQ%05`8 z`sm%rJ}ezq139AqB*rVELvUY9U-{u!Kh|UYIr_^`=3DuEJCb&e0z6C2hQGR%azqVb-; zn4x^w<$*PxJlF^&m20|sJZHT((uaodP5||p11cG1X;OyuZT+hl3&zQ3^amY6oJKqc zZL|=3Dt@)NTqM`jrpS@yS;7f0*k#zcP28DLyg+Soro&buABvpHRlaW(Gjv-!|Ce9SmU z$DCOed9>9)mlD!=3DniF@4g)29>YLNFkS}1dx^4}P#4@Wt_L=3DS_GANzl9C zKV?@|z8aq|3f8kfymQ8RQOk5r&LD#^-~5}5zZv+;^`OIwZ&`}7w$vw6U>mH*chKvL z73!~b)(|}@I6SFQk%2>k59(>yzbNwx{KMT8RTAGrHvSvP)XZOXP>9cud;$x6!Psg4W z>Gxz!D$lmWo=3Dw%yu4J2(BTs5%K72g--miC$fM)dXVSj3ktYf$?##wL4X^pj%{hk`c z{WcrP_aNr=3Do^3b-gZL^m#ZSyv=3D1D#Ip3Kpdb@=3DXeT(hiEaL4MaK2+{5F?_9$1BRE4 zyTIQj;o@3Ne3WH)UIQOx*?_0J%Hlpsfj#=3Dly?kHOU@PM!Vf*xHk9R8n8|?`$u6P0y zEa!Es5gMM@&sYV!w2kv^xx>;S|7L6MMRLzzrQ^kPqi`SAcL#pZ?rJv%aIH|k8GT}2 z@J2tWB79vh87ZwFD!MgnW1RK0-vh4${aXk7{IC6EpMT31?76RA#JZ=3DhwXiOXd^DWT z&~GU4Vn>D5AN#TTWPk1ew|U<@W47x>WR7d$xi|e zPn-uDE-2Y&Mu=3DaTr|F+D-?LY*G|g4BK!X&~i>YX%1#RR&Z>CSnK`xz?(o*1WBI+as zQab4WOrPcqquj&tT+m+fN?UeN_ZjF7JB{aemJ4KrEm_H=3D>{Yz&&D4&S)bVFSSKEmChHlynR+RJfq?#_kZ3jAsIE-F78I7iOC zMq{DJIJnJ+&Kt)gUo`wzOEKotpZ$d#L_QQ*RJb@E*S*O1u&_qj?7Qz^91{AXzS3v^ zi+u;`#sBZden@oP|8DHN7Z6Ws?7gM<%8&S5&oFk;E&uM=3DJ*hpk{l_zB7Uk22PW1Og zTQlO?^4?D9lsh1ESX2EHXGIo>-tEpFG=3Dp(6TsLsOBVQiswq@p)usvICbD=3DR1YXr_2 zbMSW%{EBnCUW6R))_w@_LHyw5zB1e@^AhI3K6&&K?1SSPo`)1Xw;{g3tW|!lsRKC% z>S(}=3D{ktF7X$z@mWorJw`a|ync4)g!;zh8(GgsaV|KOX-XP+;6hkh^CgO9!g;~0Ag zd4`xLv*b6354rINm$)~*gBVKX|3{o;2V#-!n6sJZgR+_G?w}vjn8VzPYOeU+&4f|+ zosPW)JKx6`XhRxuPl4EOWpA<`%4{qnp4Izh8(AJ0b_DI4n*-m<raE`w*DP*TcGoODZ2f%YmJdIZFF+6MZY>{_+q7ppAh|tF(u2Gvaw#1F6z8xs$CuZ||QjakXbiw~ZzK&oVkH_Wfwqrgt)SPV$~un;0IQEfpZnwPwsjO^0Zm;JbA$7dfS^~Dman}ai zWinUBb-JF1JgNUYiaiVZWEVhJLfR2D3Nx0(C>Qvu@Cqi|YpeW8XCU;Kg_c z_sgHK_EzANoxYnK>h7=3D?R%co>@}>;s;j68GoDd_vZmhVbk4!h%pWVocO|I%Ri8dfsMR z-qu4C@dtp46i!@s*$0x-B+7z<%cO zeRb4_mxu$&R~_lOjlVgz$~o`?--4H z*7JA6wj({HGw-z)T7$mRw<-FvUDB8ONz*t9_gq(M-`WDw7qp!yd`z6kp5BaA3Mb2D zZp$wPZLdCEP8egNH}bb>gaPr2wbRW^7xj7m2*U+0kE*D&U?zA^kR&*sPq%;zL4w2l5=3D`ts*{%TggL^`j0tE=3DVnYKA94SW`?5JH zSTi)*T;9kRkFdVGJ>8&=3DSG;yCjb(A1et8Xl^A2_LS;HRi*fW~PV8aQILG~K?H(Vnyo4+b!`>@THPp`>zxmv+TPRyHY zjAX6}18XLY#*MXjM=3Dx_8!9|^K;o}-Q3%1Zj()!Y<0PvOX1DX{XbtI8oEJiaFR;lw}j%$# zP`;S+jQU3Dnd2X8808FG!_P22#2l)5>4L{K|RN(z})OGF_Aj>{BEQ9>B+#my$?#=3D-;xyn#ys+jrdf|-d7cVY%_$0 zS`X_n-%7ni9`u?IkCJ}XcsKDobO__<$cuh&`=3DV$Xhb>qwpr>P2dyzw0D%IUt3I8pd-<@4}E?tePUeH8`Fa?4@H^KA`ZvrLs+NK z;uG9ck;o?vo4n%7RyJbK^L=3D>bdswI89y!e`zXxx80e-WyF8K_(t1SLkyw$fpa2DOn zwQB-z!8(^ujJG_gUB|#vV^q9G#ze-_B-&Qob3C*^mYaUJ`$?lm(dLKOD&BK$^P$Pc z5}TZjhwfR(cZiP!J-gW(`Rp>*qn>pmj~DOj@COZt(zl;I&S%tnq=3D~gRXX)CQy#^n@ z=3DvwGm=3D#rt;JMFpEd+dd{%S7&SR{L;YEz&rwAe@3f+)3sN|FDX@qBgZAO046v641do%8&?&}o>1xc6}^ zU)P@@?J&ZvnqXeJ0Lf-v!#&Gar|n zL8~26kNDmCcQO=3Dy2Jc6^F6Q%UxDk20kmI%MzYT+VUS*s&mc8Q&|A^}Xd*Dyse#mP+ z_?+%XSu3v=3DZTPim(FUGXFLb11uf|1RjtsU?VKbk{>yhWhDBH+1D+V!Cp>`$bDv z&N^G?SySUCYp7ln$dwl?aa-`OM2N&@-d0BKM z>@3ldo$)noW!QI#=3Dt$;limz)C%gO!H&u`H3vsGwKn@7$q%~I!4L!4)SzKMM(ct=3Dg+ z_fvG^J=3DBf1TyJEHJlAt@6W|rOk@XzLg5QEu+SQ78?mx=3D*riZaMX@%_cU9+Ys7>{o3 zBjbco;@D>W1bj5p<+~Jd)b~Hbb{dOq*%D`gzwVIO1C!9_R6Y~F3D0_ku!vlmS}sk> z<^7_os!hn{Vl9^@ksBk# zIl4aCaB$9<-i&qm?>cd}cq#l8xcgwHf#1Aqyp6vf&}&idgC@&5RQmbHIl3R^7wZFO zmG&w9OmvmoK+aaNf%H4@@p113d^E?MN!#PT4~gU4OtC$7o;vO-+Em=3Dfz`nH^@R5`?GHj+#>S_?A?21 z{#WmRvx4tqKZ5Zfo4wHq7x>UK_fgy{XFo)pqxSxAHXIM2`}*Vy01rC6k(VCfJJfGz zW4@C4efLUPY`weRCck6+)|t=3DWu8{GahTmcx#`P+EI=3Dmy?Rb|wA&U&Lpp3C>=3D(&XJa zh!NoL!4GZYZy9HFyi=3DYj-8jP=3D9sfLkbKiilL%)b$60pM$KYP8`43FY-)Ekpn55C20 zt)B~3yQObSJ<}ArV$K)cit! z*pvGAn*RKQ+~`8<{_rS1C_TrA#xx(u`Jb=3Dn1LIw9WYdFur!OCL2z>E%d`GX;iSfZc zp~IQ^V4LVA#S{NAP~MI4LCeeht?*DXQl7>5pkyk4TlfQgCu#aB-(9p=3D@C&?Y`X1h^ z^nr=3D>i{vPFDBA5>h-UaX9qmG-U7{RXbM0irsgkCk0na!fR%u2X=3D&)4N7k8)47M?~Q zXN=3DWSw(`zhg0m((J#ALF7&h;9uxB>lZ+U4W@_?EqzYjp!_M#;7P`-WC z*m@H&ojJ#U7j#a@;2D4^p=3D1Zfl8%4$7w^Wf+GO9mgJ+qlFLnFu-z48~Kin1G)$P8q zdXm>1_MQ)wx!>(IGhXF)(v!G_e8tWYgI6N%mH*QOJG_Z)AZ|9|+Kn9VtplELg{$*j z)ju!7yuKYUhM+el;_njtoph=3D_HL%MY`SW=3D8Bd~3%9x<(a;N{S_Nx3ODgD_&vgY()F zqg;tPC$MkG`EB=3DtG6&DZM5cKLBB$A)V%HYJgZzs2B*MBHx$IBkucHoo#0{T#evfnZ z*?}$P8Hb+6p1tp^HnfpU-I};>2>3t7-2!4uU`)r=3DSP-KStq`8ewcFUX2edb}jVbL1 zuPsMjGS&Xi4;rQD!-Mu$o~HdCwvT76r+IclKMQL*rGrkGb4+X8zi|6fhe01r5d64Vlf|JbKeDMv$Ezd2Aj#yJY180Za^o13_!ZTnauaxJY zA@2;~xgzB!8#z2yE_PbAx)aD8DRRmE&|Z|_LMUwkp%GstEr*cNyu(XXBT0*kQyGo?XLd zcg~a8mP)*rkvmA>@Xg(#a<1Tf$XMn;p^aF%W!GZ7a}M7@-C?2@Kb6p~L*_8lb)3>Ja*8M$)gg24o%Is4m4mw3r_^2jA68wN zOOdlPhjF@qW0IawI@>x~rMN?P?)86nVUW!%^Lt=3DrfS-vy6uZ9Lx?mXAY$ z!Sd6bm%w=3D#*qXA&hTK{7&DZpO3U*fr?>qj*`yKuG<68axX1rf|D9AOPVGKv!eu-}` z@Qmj90MA)ZZ6lo8M$F)Oh@2AR8t9#!s6Vm69K2zKY2*b9j%Ot5iiVTNGY&N%M~yo{ zH>&T6d-Yw(=3D)S{?f>2;m>jK4IPqEyjH351&8BYo7lmp9Ris zHA)+!>w;sKS8xqR-NUsbVE$O1V-6(k2&31$;B6^GZqD2*1*WkLqu%h7?wF6TuB|_h z&nYV|*q*AL-=3Dwju;Y4NyXw=3DsA2)@IHRL@qg;xpm}{pN%=3D8l_!;@$NA63~|gL z8TE3e;E#Gr^3{kOU$B7hGEXSV7a~tcx+nGRE)?-&3!RN;m@`rKIOaSZvuMkqPUIZh z?aa3FD@+2cj8BHIZ}K7^UM4&|4*}kuM0)d?D_nEC*Sz~mK9{m^%|j|qEE~R$w0l{O zd-HPouH}=3Dy@J2Sg%4cd`w_?a@HmVqtG_tgSYy)IVEK{XFYp+UlcbznyODyqw=3D>^q%cD;|=3DuF9Ytjt{NIct^h4Pfz6Mgw<=3D zjSYTTJ5a_s!5G>+x>N4K0{)f@u3C+h$I3g`0rq2T%X8L$T)?_o9x8$V%T)Q3dsz)mY4MyzwDd*?lmvGjCBC}VCGg*{jEym|M?}e&8WM+S9BEW z!B0EyQe98vSodppWyKk<`x7+eu-O!=3D-l#CS~b1mgk)35^Y%vW-9myAWq!}ER#-PaT7rhbTq zywMaJ%PC7T zAJl+%F>b&p`cRJ(IS+pNAnU0$&RdScR}h07!tX7eYZd$+kvoMWb9c!;ifsIYiNkjigMIj0+~K6XIR!cr{gEfFxGX@e^j0he3Hq1$4R}^Rww^Q1M>MaAuLo^lJ^JJ4yyl`u z&>Un%&g5Zz_a@g9LmQo)8+bOcw9)J$?&{4E@X=3D;xvhSd?XLN6|z(5auJHVc><{nB`0*^hUylKC9$+5+ zq9y3>fozW_^$q$z7I1&{(4Op4+yS4mD%D7-d_B1sF(@Ti|0ukM=3Dii~*6?+C__!2yY zn6WpWoi-%7I3Ms~&Md(iX*JLP1wvVVo}r*0w!WihXx+R^I*ZElZ0_Hs8WRlT0r-1t zfmYt5tLpH5saJz~&O96HED!vgXG`(^&wGZ#R=3D4FNj=3DpzZs<9k*mbXNV)OCQ>x=3D&zv zO}f2j2+l?jci0mc zbLI1&Qscc-_@6XGeb6>t)d!7Hzf#lS4Lo}nUGO98S>l;8%|6{7u-DYN+(yJ?jX{y6 zAJZw9Dh}xNFm)xKpTp;9uLFPhiTNF3asWQG=3DvU;(v*nkX=3DH*Xuj|{Nk1mi(7XD;}3 z;vaCmQ2Hz6kST+%{T*=3Dd1ajBkVq&KseKzA9`lVifL(>c+=3D$TPbR}LEzynyrT>GMAd z8CN_Bo9YSpxJ%_+n~i500YfI*bFH5bTA_2Lr?xFTbil|w^cwa)@UQ1*@-OqmYuH;m zfPFvkFW_ho-tt5Kjr#?Y`ss@}o=3DW@T2{h+8L;pv3!a8pO+4cVic-lJY{|%m~(~2Bp z+C8bSQ3q7@Vm*oVVIE{y;)khc1227>bIQA-cairYesfulZ$2RQGvk#Ivw${3u=3D&;g4dx2SXF&5e@*&@jdFqZv!iV?fkk_zB{hqQT%nI&@ zsj`zRbXg(aW$rMwUv>LfJcmBML-ZeI8tn`t51|}#5owNpKRHeM4c~sZerE`}WBu*a zv$Rh!28YzI&dy|8p0gfX&pKU;vnybW4&~gc+h|=3Dnx^sg!nsgbTQ~$I4L^K;V$n6`M zkE5$58~)j(G(N|g0c#-OKLlBcX3wZxlk7m-)A&r!9lre1WUKAh*OwV7fNLfm^CNkh zSg+ZcJ(s?3EBBeUk6j9;JBD#w)?C<_j{EdduwGwB-}~*ueP{^u?=3D!!#aeQnc{3p6m z=3Dk;cL?2l(kT;b!zmflipg293}@&xABuAlF z*=3D5(70r&XV_;U*H%`)Xf zsJ^2Nd$u3@0JqXjn|I%b@P>wv#F4? zTJmP^TwXI(_(J1qv#j^4@2K@gKQCiH-KYayo~->Bsq6!7<-mqX)#sE_ zb-OxOY&Q4@GTv?&Pu0Lya2hF`%Q=3DtNm0iBN$T_Bc0(_s0WyG3E+3%8L^bX`xo^NBH zB^`M-(z4nd06DH5(Om+6j8oZAyr+kHt!+>v8LVLBO6M0MV)mO)u>x6AI96aH#at<)+QhJ6~ z-U2=3DY9;m|rcY4b<_>aQ1?@Nv#(KYklW}Ah+Ji{~KzFqQN`Mt3QztIKwoHoJkjHu|+aZ3*TRk<|6*2uRd+>Ms7v4>0KlFLK_Zyk+R>b3ST}J&gijQD>&S(Z+;I|}9zJ_~o$Ne_g9q^YAABa0w zfFs@k3EyBTeD@iFkH(Mg>PAkn14e1jLBvuIF*15n7=3DKgKOjrXKb#M-$olYL2o~67v zpu1~zP7A7AR`{!&4!Au@w8!&X~x-0k3eGIzZX)y2nw zFL3uc00U`A*-Jn45`3aXB3F}ej(4=3D?SFEKMWN_W@-emR^EL-qhv{S=3D&x;`|9biD-K za|z!!<|NdwK%Hw?C!rm}@t-KajO7@Ym6!8t@813OOSrEN_=3D0^|%e6nogE`~YZnojZ zzxpAUZ(Y2nJR>l!jj>p@U5}&B#h%fgvwpdhb=3D2H!q&JUK>dq9qbZbA@76C8d z-&-H#d+-y8?s31edIx_O>|3+0K5+TghLgBQu%r#S&!SuJyit6P2X+RkPvD#c=3D2fg+JgJ+uYp`PL6qHQ`&yJUv!}u9|*<;Ih95CygKS~Ma zegA3leZEuqLahBg?y;4Gj3FgHV@M(XR=3DdaaSJVz5kGz({@;a%Th` zBMw5(H2ND#lk3e_s3+DkAC21Ii0)#&h7PH7Q$n4v?;koqT_FX|lgs+VN@G zapXHLO^3hTPn!yUV?X9>ws6-VP z?j98Q;Jbd{uCQnV_9x57zl-?Zrr_vu>`z{wxIY;{bHfZH3A^RCJpB6<|KM-2opiV3 z98I3l0y?~ugZUh~x0Jqi>}A1sc*Azenfg9MbR=3DP~ZyM~A7z5bIuJE1T#5lmKcNh5p zG;yW&?ITAa>lwM1f}f&pt|c9!xqEk3IacD{9&@fl&ode0Vz^(U(V>$_gFPIL-zUYh{#c)<5L z%6y6Z37yI~en*kRadwsS1oKh3iku(e9L$&Wd%OgErQ$v0>EoTn3O?RN34h?xM4m4U zIRti`<%9k{nctU>Pdx9hzK-$K=3D~f%4v%b3kdJl6XVlU0!8!6w>cIqZMrvcjmINA;U z0UK%dD&iin`vD8${-SyK+ljw8yKL^qUkCmkz~4+%<0oOBd42_LQ~KX!-G{tLdT-oM zIm5pc@O`Z}^2%NxUexyFc6aFk$$?RSCqwoEzKag_)Dx!TANp%# zY&-L9h?)Kw&bYRNN3ecWXA2@DbF<8-jx9;&yq;Tl*7Kn4vv=3D(&rTw3d9KD~zH}N^X zYnxf=3D4o#cH=3DQGI5f+ONbY_vOX0S?FGT|0hbf2L{?$02J}xURt4Dh~;s5wET_2XesE zh|Q~-%zE^RK-L8(@%Tg|!y9?*sCq7V?*L!JmTGIkEBqwjw=3DMsFhu@bQeRxshck7w) z+Zz$R<)d!vZ9ENbZE@V5c=3DZgpUH5+pw?6}JC&Y2?`Iq)K1z3D?m(Bx~^qVjH^_j)4#>OJTN=3D4@>% znt=3DJdyt55@vm<{9=3DX1&P?dVQ{p9}MQ@74G>0D0DPur@*NdFaBqT$_gWLmv)wl|rW! zaz3|g4a6}zFpf4ouOpxCk78p04@SG-N3`yGg3ifC+m3wnfqNx$q#tyEwL}haHU(=3D^ ztm7Pn4fvY_RPYm9gY)jLAai`CZq#>#np6AAJaU*gE5|7xzU@;rR&}o{b8vUlM!@}m zh*jNDS8h2~=3DnK=3DLFNwz8rQaa#>2eqN4A@i%DOc*E{CJK*T2$vb9<5S#1F?>GjWC zx|i*vzlHT{=3DHQ$W&+a^xRR1T#S2wC>D9?CEo(arBJ*ybIaq=3DeGmP-HFJZ>NSktnz7 zP=3D6&n&*_E^n}&I}&S_7Q`4Z<1>+H#n-eCfB$l@t)%zuJFPE`u!@tPyZeGhpOF92*SsPkszjU@0Ur74^ZH&R3 z`YGN;4Bt=3Dk*$#2uTS(cB9&y*hQTr{KyPn1G4(?^vuQq)3e_@PBZzJ)J@~zaLjn-Xr zseb_4ZrK zzy25Re&{n7^1g?}J`(u4QuFmniw`UB-dAk#;`qj-bbs*WoQ6$V{###6KRXxr01Syd zU8{KdpCf$$gLytmLpIr)vTS3@2YC96`fZoeHu#iyC5`IfN8p(i$PV(c{bsY|fx7wI z{(9&G;PgS_6l+4nH~h0Pf$uVf@ASDn&b|K@-!XTunjhh>v-s{tCt*K5-`R4!k!7O8 zVtl9GhuvcF-3{G*KgM^6l?E^D%t7EC%V5{G)^D4$nfE=3D`IiE`6d9C265B&8Xz$XB? zQS#d(vE@pBjaoPM*+qWwT+RoZUrC&)eqPaEeu39Q&F2-T@HxkfICs~Y8R5Qse#cb8 zt!Qc{$7TNWO)M9_-vquNPQEu6LZ)_dZS8IsIWTy(1vK-aUWKw7*3H0c{KV!q7kE8B z7esFUS96&s^*?zAsEYDIp5^=3D2I_y+A>5b_1bT-c$v91+Q6nN=3D4d{-T=3Dz?$QfSaZ7p?TUL*eCt{YCX1? zo`EhsA^zBK;{&ehg$;2!=3DReN(^jh9QzUr#ZUaNn@?+4#>HFC@vN{?U+SSKySImjP~ z{^#@ld{VdsZG^MeQFmZ&P7Y>gj|1N|Vq9%8xbTIxh$rZp zL$5`)9AF!tvkeuugWOfEGEN=3D8Ip|)t!F+MNy9Vb2pmR>X$(SMV-+aa-sd>G!nf2gr zOke!TpXo2KL#L+mF0A0V@(lP?mxoLv1HQw|#Wz3ZXIvS1%HK8E;Xkk!xdJQ8_&$7t zIofB3wPxj&ECUY}E$hd%vFAg>*t@| zFJa3ti~*eMcR+Q_Rp0sB`e%C<TL!WszOaSe7|Tqwne=3DbAxl*_JINO9g(JwXN-)v)sZex{h zgFfZt)3lLvhOr?A)|R2$Saa&w7D4w$LTGc~zt^VGuG@SjVQho`%{BtMjpwYfCDJQD z#f;Qp-82$DCo3;3eI1Z}k*yrN*glE*k&$EXz;e)Vy`tMMus?HhHRwA4;~NbAu;Z_t zFygOK1jebdn@K+?e|j8rK71MGfV;1M?PByfR6R=3D?5G;RKe0oLDjX3LOBG+Puex6ii zACQdqn$)v_Cd=3D`=3DrQh5`-_Y`6=3D$e8t@JWo3H4WpE=3D}*(=3D`4BIZVvHylZ?r&0?D*S6 zc`XcKK53UZ#qSG;kZxEA^xr~v>x{KD0S8nwqPmOC6G~^ zIjeY%a>%)WzEQ^5qHHhAz>7vfsbTzj7WQk*lga2agt7;4?l}YTfP;f}+^4c;P%&*N zw&i~f^1kH&iCoz(5}=3DSo7Rm z9YESVIQBvF%d^|y zOJ)9U?nMc2hH9`^g*kW%*4WaM{!jLOldxCoz#7jZeGaR0-qXo(2g|&E*k(%!Lw8Pg zTYf3#;^wu5#X>;JFF#U|%%>p6&hM zc}~MK5}=3D5`hIBavp0bY3bK|B~=3DNtKn_$4=3D?r|Wq+FQ zC!E z>hB?ZU#Gt};d`zA-h%J&JxV*v@jax!x8i$KV-9o<=3DAXK9+%Y-YXb+a9WS}gy>!7(V zANq|v#d9n8j(l4wn0L(`UUSl69|j5=3Dq^++FLi_P&kMJ3A*`7#O6!8(4%QkLG z824JhWx>7<-!0hN@Ex!#zSletU8VLI2`6ytA*`UqV3fBAywA{&G^xmk&V_EW7kSq_ zlsQ?3y0iywNO%UDbW$3hVSN40c5{69iLHn6F(;qR8Y9}s=3DwF|f#PqYo zFXL>0uiCg&!@U5o_3_K_3@vhD2)}E1Zqn<|Wz@Be<=3DHzqk3%o4tKUyJ){gR_ljaKJ zJmx@F=3Da-C3Ij4tnYdNEnL>E`q7=3D^*no*v1whcoTdoa>M?u_BLWsCAAB=3DGA-3A0E7A zP8czwfU^g%5mvwxWFH!L0S(uE3QuKI`Ap-fzwdvCH*(K0J_pR4|Fi4OFZWek;tzJeCp8kdeHvZ_}tBHlHB|n8B=3DBhHXH6Jvd>US`o0dML2l~;6t=3DfodIoV&t)#G!s~7yF?e zo0c`G7(Ch^_s|_n6c2+(zfP7l4Dh4(!2bhZ(h|gtpl^RQ=3DmfndChD0 za@?omH^#^V_OLh7C_0R1hVeTWd0MbP5B^c|vqSKjA~wpTy3xPfTbEVR0X^W*&o?JL z&#W7LhdhUTFRRP?9(23;K;7t{q3k-)#0=3DGC&0?9qZuD=3DZ4BtOheDe5d7JW(!M93HxgRJIvN)a3l|(?U6v=3Dg&N*wZ zf8L)aP!FmyJIY3&tY?D1`s@zcjKJM$#=3DZgPkYRH9p7h^n=3DPO9)mf*-Sv$XGFGIm%c9`-AI1 z`^}@;5$F%yjlOzTiT@CNnWHHG#2fV9eX3t`b)5fxJs-{S6FY}e=3D##m?Zt-CMITpDu z9`xabK4XaS+yrI+V4c%nr)rskuRb`E?<;;3UtxQ&T%FYkR2#5YP43ZrEx%#y0~_UH zjP;1jwa8gA6!TY}h8eo}pzwo+F*892wtCI+AF}^{MPH4FJWuL!`n$*X$HP54IInig zc-1^u_d5GST-;iYt;lh)?DbVSj~F~-!ZjMknGagwESOp34k2#wH^xw&5v0txH+^i> z@42K?e4vJrO!;Zpb1=3DgVVBPt5Us9cE4CGzIY#aG>*v?7Z2bxLS8ZtGBXGRIf2s1g| z6|VcT;rQ_k_|wuAZ|o&(RUno-)fBmICF9Q$m@oCI&eqWrsQ;gZudr}{TmsUP8-C&)G;d|5{uJGLt?}~-~{rbrCnxE|DyQ+`+TU8%MXTN&LE%?dv z3H2V*^O2kcI z2-B^CJiuaOIbpziE(KFymZE*pdwiDA7Hq@7bMAJ+ zR3ziYyjeQB-P_PID&t5sv^FFt-PuRqH>r1v&=3Dq#XI-1J^V(Fz`~dL{jrZk z&%odG2rL)*#PsZN#PM2lh}x&fZeuKWjIW-AeTTO&=3Da&Y;xVK&Q%D?PwX~25FfidG> zy@zuzHvGmsXAD#Eh{t5Vh;uA-zWAA`OFgN};(oLwj2U|{jKgoVXYV8oGB?|e0aoA5 zc}52Cl|9WlNXJ$frC#&!aLywuN~|$08_RW*S~HnD`>vVHtUJg5vgXeklBWHBb{|gDU0gi*<^}>;S4{NG?%`?mU)q!pA7I}xv ztg>|(XqoBHQ$d`wb#G*y)6*Yg>qGw_;C2iBp-Xlr^aq{_cHmhJ+XDUo zd$b*2`H9(lzyth)Ls~3dL!EBX0`z}?{6YM|*V*9;FTOz8G=3DGz|V_zH|LQLMFMZn{| zdhEHtgX9<0vNKG*`)<$&0LUBD|1zl9llst{zA!Hy?KKNz{JOsAC?y-_b^?!&@UogO zVtb^pC)GLIDezlD7EYOG$$NTin5WHwgcCfnGl55dv&GPv1y|yA$dlysc>!Pfv4!v- z+puuO{W<%T{i|?ZxShz!e_RD;zkG0tt^0>%IRrnE{SbV^>KjlgNi}{rL#DD?6 ze~Z(=3D^`;MvoT;xmXUAs3+|RFydAr+xIyn3_AHkm^`o{>4^FF<>+9;g_o(Kf4emW4u zKm1LAo$wp}YI!G@_@l3wzH6NI5g$e3cfz6g$~618L40~rf5{lg@$L@TIhe_N;WMSo ztpJZ%GNycyNf{+ev`nqc?qE!+E8Jj{bw=3Dc`y*|K1d^S5r*_C}|d$-}ka`@04>A>$r zwB;JMdGcZF8Fy|&KIaZu_rtC`wvBvt*B+x3&tPYFMU))cmN7;F_P{lY-v=3DNz_`qS- zMVZ#w13ZMWtELn2O`jc8{M>M^mgB<0kgV}T@O$Km@5=3DngtE!G=3DcP5?0x&Z#P2H-#G zq<-HGoWbTA*Ud4Z&pKUxBV+0GGoio2PiK#eH-x=3DDv6C9YsDt(DxM%o2aH-GqjAEQ& z`(3ZAy;0gcm~#Twegn$s%eN!9pdH^CH^J}8_^#F}@Xy!3en9aF=3Dv`NK$y?-C;+$<+ z?MT___bsv&d_U#BMK0#%P*pkCw6L*}TM~K&c=3D#*YkIsQ#YP+th_cX5jkYgc_XnHT; zZ`j3s{KqP$Eoq%MQY+78Uo>miV!}utjpc`Fbjmpqtn;H-yZoa_(JM-sVeG)rd-inp zcq5NI&OX$-#Te7D#~4f6gFlfkdDmjSF3xkc!XF1ZV@*f@);H?KmvgjA+b=3D6I4&<;3 zU4l7ee&|W;x97pXlYI}Nt(Zm|axoh(~7(&P$ZzrbgMeK|J?wk70ix7dSv9M9@@HII%RNchm7 zWlug!8u#l9Htz?ASx@z4*}M^)v+d&x%|N|Zbv@$zUG`bJ6wai3C zlSAjQj5eL%-sC;xD*hjOqE7W`cA*{m9kGVF-;ZYaNjTSW|0w9i1=3DM+rb#g=3DJ5qGo+ zFgD2pkF_Xr@MgDpBd=3DTfPxdSWLynNY-X)I`PQWp9#2#f|Ho!NtvF8?mIW*b%{T0oF(?S=3D)0w5LzdzFiHfftS|oKe4qz8Ni#Asg zmr7RO5Sn0|E%o~ccX(2pTgZ24qh)w8@PoM@_F4wcXJUT(;&I^*)j!Uljro{ud(Dr> z09V2r{EH%fVmTE&sZH+zSLY~ve6u3a2gkg;j8!gOl6=3DzDO5V!5(&f8)0?r>oXAdm$ zp`nu5z+=3D5*u8w6oj#wt<-a3w0rsK$~b{u2DnZ(8y-1)mUxHB8)6nxcqSHb&@_ZMtz ze8L?v1{8#hq=3DGve|EsGWyoIyE%;V;b?y|9M@C9R*9-t0tbY}0AxonAT24JzpU_n1# zGkHDh7tS_@hN_3OxHmPv<&7K=3Dp0jj#owF&4V>omKdBea5j2psP#WtZs^nc3uzT!Ju zE%C^5(D4JnB7BOt&$-^{Ua`m74t;Ub4(fTM|1-pTAG{+pk{n}r_VBhLEqE?6sCZYM zW2FCh>FDg8l21#uu`QvERF3(fW;|!!Gxc2NB;AHQf0)k^Tcn>i_kW+y3F~6!Vv{!B zuZq`+3Y>s%8T2d9Adz=3Dri#Fmef-9siMSt!I$^5FHF9EMzA$_rJMTZF!yyk$*q;1Fz zXeO~HDo$nam98ya?Q9>hdC)COE^}2QCt<{Vko6^gON}oE8}$KYDh|_<0`z&_>D#v< ze^nR#XssijGL95s9a!Z&ex$I&)#zVdX9-NV0QjM_=3DLOfoy1TcX| z&vLK)QJ1@Z$tHCd&E+zFZJ%weD{o0+JG9O4?vs@9`e)jQx?5o%kE(D<4B)8Wyw$T7 z`oz5aHp1!Zz(3rF``9YuF2-ilN2BcVJrQ{x!h8{VUvy9NNaHSTcl97d*JQ4E=3Dz@0O zHz|%^+nan3{M;w!qsH+h;uv&X87SesfyQdUc2*1qv`@Jb7>Mi09^q-1fV>|$VXBqV%Wr%YyzjHkax)_it z;Ni2Sx=3Di*#QEo%|cFrG|&&GSrj^UR60FINrrXePo^+=3DnbQMsG!zV`YIGyJ}^2RePj-MaWks=3DoO6AMvIxE=3D3i79Kln7 zQ|u1{p&zFs{WR_oL>A%>ntv_!Cg6Xa+raz4Zv%)y62EtV&U^rCsEPT|{l(XY<+#rx z{RTF`=3DVl$x$Ul35Wk~zNw~;qFh;#PV9IGm`XrwN)0_Su=3DJKwYpI;gX2UmTvRgC8uu z8}cyyl2$oae@my$#hii8&L8W;fHG#O@HG!m_E7{Z3neK4)tupv=3D{Rd901dENV}zKaGx902|*vQW@w+AU3J^vOP}mB zPIU*3p?tf(yn3owu)&<{zjQ~o?7!#I4ioixwLZOQ zvIpb4_8P1Im=3D3Hw8P6fSWgmIU4Ls+J68^GKjWzURq%X(5LF?P0pHUuMa;?mV);UAJ zLRuwY0B^B6(U-_irGFo|fNyD@XLL9166?diNBlv#3`zG%;VXyKa z{FKtB)LQ|rNwk@xbU1Jj^@;lF(@w`YU~1nU8LMd2v5WiJoIxGm zi@X&+gY@gz#WBQuqUonB{T#N%w%HbFw9rjU_mHLo*q+>{vkYLE?%yzMC;o1=3D+p6BTV`o8|)mgXiAl_ZNd}rNj=3DgU1F z)7mX`F}dA1wS3=3DH&mi=3DHGZm}NZs%mW+9`U@AoV!M6>)S`K)NdQD7xZ(8AVT#mbf`5 zJz*UAqFZQsqRk3)a&9rlb_w2h1f2-q)^xH%*Evg%{dLeuo1zm$ZBU=3D+UXMK06?9I* zIPgASy903BwqxG;TNuCh!?}IE+7B6(LFC2PWBc%P-b`OW?Dy?*-jn$XdE76Q496ap z_0W!s{ddAwsGIP#86JT}{D#7l2DX9mwsZgMO}%SNbUac1co*%T{qES-Wd1lkFgy#f zPK&RN(jF=3D2uKbU*OV?;pV7k^kZEBl81TJ-5AB5b4+ClHJj*x-xC5>K{30I)Ci8@K2srRAZcpy) zeZyWPz1QvQ$z^+_`|fpCXJCWZPdiU{z16`v?1q00`=3D$?_n#<$k2KI$HY~>pFrrsGM z67h+xZyf_ppLN*&%YsAN6JXy@Rk&~zK!5N+XClw@yW5lcc<&rGd{6v3uYL{pAGnXP zdX;S{^qZSB4vx6sn?+bjEAzoibh$f_UZ&EMS0Ta78W&%t&9OD@}G`+yK(U{f4TKM1h79VTaEbSh;`Nd9^_ro9?Xg1RlXjE3u6@CNgG9Mj6IHi z@M1l>Lic>nv_^m8LuXuf=3Dx0V(k;E8Hrf(i#_APD%J+^kbxEH|hQn}|6{-0T_!?Lu+ zGNw-#_I_2unFV}75rldaL zqX2h<7?TG3n1rvu%OmvR$KGWKcm;h-h5lF{xCVb4CHxO(w}Z$V(#P!4J|F^j_QLcT z$}8#G75Jrh0)525BXReK^6mD1`hN}LNDybuSPRH22Axc)83TFo@Ol0VCqvGFMhJ(p zY2R}j=3DRx)fh+7no$3WN(dACJ$BhQ0|4|^8FbpU(~cgDpoH63;#?A>u@{H&H2GlKOx z|3+oA3WPpNS9;i&x9T!kh$Ash)r(|v9=3DV5CzmKhC8OW9vMN`i^IQD^j3^)eA{F&bW z810L{dFs<@RMlM4$>}XKh%3*JhC&Nk@xK7(^4 z@qBh5UIzC&u#rR0I?9*>$WN;uYg9JpD_bD$-TUEtV$>vGRh8$FwS0>iE|Yc0ePZ1j zjM4fiy%}|K&cQl-v8R-Di}~5czJ(q-AoF)%&S9gJH^i;*-KsBZef<<;;q2WRF6`}d z*)Pu<*%s(_3wcY;c_#KGl`-Bn6tMK8-AcxO_%_wxbOKbVB|S)+|a$dehj z@5W#70vGkEby$Zg_A>2>Hoq;y+FMBb4c2s0-KNgcy50Xyr;aLdcUl>17dC=3D+tmFRm zFVHlf&iX4=3DeT)fy;>v$kI2s&I1) zdEsr0TNHUvSccCrfVoP0DkHRPDNbtE`@Ht-(PGUIQYd27y z(Nk7_YUGMw)E`NT+4@afYz@SwzeD7kUdNN5bLRpF4&KMc+R3QNKAzsNzzE^qL;`%l zCzX}ITMKxD^fU6N{ug~J2w#l1>V2>HF!qa8xo|bdtNUS`OIxP!J)ktc$q*=3Dqe{?zY zYP65GZQ76ebl-&()#5n z#zuhN)CU`3(iH5kI`1`HIJe1Gx|_9GkY<2x^qAPc-M2UOm)C)QX0mUdHM_5EZ~+FP znLMX+(v8{B9dU-yJJ#^$6hSs9c%bM0vZ6Zzc%UBvzw_Pj6_t2X<=3D`9PC*|x!-qYeb zYg6PXnV9eJaT)4PxMe%sG(8$ENt4uvd~#dUBvS` zBN&6D>jK?|$6mLn_YmOEV;xohi8uHiyr-Xk5`4V8X4rh2d5fnQ!P|?)UK`yLp`Spk zpU&5GKa=3DA60dGr_wr$v|FEyO8I)`2WK7xzU&h2Us5CAS^uhM@G4mInx)&5ZSTMfW( z+8u-qbveJ=3DY=3D02YpvM(z9H!t`vu-4_H+G&OssjHwPvPqE$5YtZD=3De3tSQ|4 zFs|S57T|{Ql!v%~X^g_!O2*$T;Mt>TC1lSB?}p%9EX@1h#ARM~*Dm6{Ci~xvuR?!2 zSp!^;z%O`9rtEPb*Ix}Dkl6Oeb>1zeHBPS&*^9S(Q*ZJBY<}YC{>HCGo`bK(@1M-@ zuf#^7=3De(l(70`Z>tl_zM?_JY=3D;|j5lg&z~y8KoP@Vi}L@uRfiq+lZ%q(B#NM9{^GH z9~b%_MDBXbu=3Dib-13w?d{TbfNoL?6?o(?{n6bN};;ycfK#cl8}4S}ynpI@xT+|d5e z=3D1skE4yyAb@=3DWAae|r(+)ql_Op@4?d8@J92-20)=3DhE(0@gIu%4NXokMiznA=3Ds#366@K9D%C73pJLj2r zz69Dho|k>^$ozL2|43Po|9sC0%i_xCl;$-fwf9zF^48jwHT3?HsxdvWO=3Dq)$WojZ8n8ZzjHOhA&&q zJTtOw9{B{Tkg2YnhveKw#nozjmNBj&pO%w1(FaOo zN#uEHA885V7j@g&cKY4yqxQAuxQ8_Yh(o8!KQ~tTzLWb3M}>}$1mDxP%OxGMbP$*% z?lxe$@?@Ca{R?~}WF6f#aoEm0*fy7y8^-a2#>Tp9m-qo!R_}R+7ymqj!&PpiotS3z zct>2al>Ko({%jG#KDqS$GQ7{W%#VA``m6-?l`NGt^>K4_eYa`ZtkSE{cCt&!JjKT( z{iD3#IwNG~+5DhvL*o6g*@u)3>f=3DJ>r=3DDE*Kv>t6yjWevsrh&~4csY}9#vkmhxeVLwz%_5H!t}W=3Dz_!s%3;4$!P(#S8>{%>#^ z(eaUn`~dUe!M^MReLofRxJKrkI?*8WXxAI9>P1`+PQ#o4F3ydjkF8UD2Ii&6@SKPk z8<7VYVHi!dMiSl=3D^SWw{H2n2=3DM_lwbmaBIg8PA=3DAGY;rho}jV$!Jiu${q#IF5AOzF zG?F;>+E<=3D~t~UG>))m@oSN*HLH+{%-%!Qoc%X@m*N0^Z(rLUMT-LtZmDi#=3DwA+@k7 z`;A5Y;w<4UAgtf%^v|N)6yG=3DC3H19D$SbU)dvPx(JVWN=3D<3H*7cxDIt*7JdTY*s;R z?oK?V-l4pnMfi!v2=3Db<0&v#JZ?+RVH4LWD*y}vW9|9Q=3DaLZAcaZxu3D>h94!m+XtK z_jK=3D%%CoFhFXA5ZKIqKw=3D~6s=3Dt>8j^U#E05;v#(WcDBv-0Aoy-PlB93SA4NH>$#A) zx$*DOK^9f=3DH|+qlt6hP86lGBleq#*Hfcr+aO&q`uv!?*OnD##O`2y2pdmGrFu#Q1% zmopuEDDIWk<10VWdo#2}c~h_Jq8*hn_(+q1m9Wv#R=3DEEs9E;53AarWS`RClh$MDb` z%-tW<+#$|?_#L5#L)>fqMEIvVmxdkD6}opj@D9CvsI<-4PW4gS=3D5=3DlL(-?aj^j%{0 zO-PY*H>amr$pY3x{Vz~A(}#gzOs|rDkPf|T$vI|t2-&UNp9FIXO+O$A7yK1UClGrWTZLxo3b_k zSkHTqIjQ)50zSd6>PEv^bS~)kYGbCmUGB0}Qoa{KzsSp8lAr$%Ba}aJ$&-}HO71Ut z8{dQa`?L7opuaD{_on)@5S#DbuX1ZjJo=3DqxqXM?lO7ey3_n{wsc0%I)@+<|oh1^Yg zp71wbYn-OXHv`|v2aKAluS#!BF+zDB;C+-);skoSXGyi4o0r zq#Fn?=3DBF(1pC9keAh3tW7RCizLU-_Y$* z>%Kl-=3DjK^uS9WHG-s9xfWd9)M$255S66i&RFZj@K0rbgWDANg?i!Ce=3Dl6Y1Qb$)Sp zG|N!lYaY9$5x%h)4|wah-@&JCg!dAcSefJKpKHSn9Ofu|S+q?V`kve zo>g6$nMiZ6pQ`g{-?_%dMbri&b{+6kyKTT_pG7hz7j16ZHgpZ*YB4rS^d2HQegqdbT{6zDrp@%g0!5pF;Fu?_(6TI^2IJ{Z!w4DIb*m4J zqMvV%xuN%GBD1hB1+0nGgJNT~Zo_W}(kc7Mhp6K{jj?cFL!FcS_;Q_Yzw3I-Z0kS~ z@`82Nm%nA3D3gu9#_W%W(r;;W^~XEURduY>P)^4(w}$BNNx)YxzSE`w8+GJ!)N$iAPA zv5i81a_(=3D^TF?WxSH@4~4!^=3DHFL$KnHmSS7f#6{iCm>GmA!`3+2dMD9%zd&V9PO1LF<02Ba7VZ6$0)d`qcxC|{pN4Vi z4bCs{9$pp6Eaw^lT%!c4xOw!ZmOU-HDDbv;yW#;$_GMQMakvkNZ&5b-OOu zzr-g6u(aTNF~vfu7~ znX=3DY+Zq{6!iL>0ED!ZLPZSOO>E#QfIK+koYyTw*!C1e}@+_n-HyL{nP_}oK=3D+vj%+ z5RZ>{N2%M-%6_*N^K}DoRT^L3E)&bQI^xH~G01+Y{JtaJ)T`(NeH-qA^veEb`E$@k&c$LT~<* z{KgFb@HLj}tcC8tJ}_3-hBvRHpBCC4X+~OQJ$BY*HefH;i~Sn(wP_D?k7P#HY+_x- z=3Dh)`b^Ud%BjZ9;Ik{()G*t3B6PD5W0$ow)7X%+QF!}kci2aOqQ-;6vVb6x+7;d=3D_5 zLBeyqU=3DjSB+cAL~mR<>;^SyXKBo{az**sx5WapP-*;m}!@R8;@C&at{n+aNe1Ne-9 zXT$b!V}=3D>tFMA8pyEkK&nc`4rxa*X_1p(+zUWl>IgyIs=3D&vuAT30 zGb5{IF8JGwG+#iNh(FRW-_Ry*&B!Xj3;Q8nfM>kbwRDadzEAYb`pHpTcvL%^L?5re zz8@|w0WKU07nw~O7q~~4*@l>nr?X!*7rcYH^p|F&=3DK#~NHZz#6e7=3D`b1|=3Da+=3D3Uce zQ1+{fEGKBS16BBmo@web@F5c0wartT$v*|BKJG(5DE6TeaQdw>UF}D&yp8)&`hZ|h zx=3DQb$)-xQgqK|Nw6}~0;$84Qz>3y{a|Ktz+5$CDlri<7&=3DVozh zW~I9WbU#Y?=3D-lcS=3D;@FpwMFgRza`g=3DdBr~&ZFlEo`sGX=3DZ$H%SKT=3DBDjd#TO)ojPp zWMl+hYA+3}Jf2S94DX1nOPOA`wnNtOvc}BHy8V3TPwtvgHwB;g>LSG-=3Do@n4R*WS9 zYb9gV0fX=3DO4&^&jKGMBjWaFO6Q-O1w@4K&!;(QI?zM!9;8NOfEsw)h>njrE9F~`9RcV<>- zdYPN&LEBw;kG&mhG#NT}m#4Jyvs3v-cj;}|_dzbnTd<(tx!|*}xe*S~z>RFAbKaN@`_RTJdxS_fqk_o0DLXFdZMsBge_EI8Q% zl<^Zi_vjy2Bs$K`w*1jD%MnkbW_YQr9r$G44Y*Gs-Rik+h@0z1J->s@^>bA|0HNgD z{jx@3w;njhICuWhCoG5glQ@#Lj8XnreHF;!M|4Qt*F3e3jrk%&u;#%BUIvZW@vEBg zPJqys&DX#u=3Ddo^Vtzl1qHB7pqT+_Z^dk3!T_&U_VSRQ!ZOMvi+i&3K1ur7nSh}@@& zsQ=3Djx<9h(Y^e7c;3bdfcW7%eGeD;m!aunelRMF^vQ~xH zhL(QB{R#OxWaZ_oOCJl!rYV|!CjoBW)j48@$G^?|&h44Pk2x=3DxpCe}E%RHtlc~r7l z^KjU~?oUSEXy%c|D9?H)WM=3Dfkv(~lj{Ql!D87;cQB6Y^(ZZjOLPu#59loYX1u^MHZB!T z)=3Dy+wT>BZQGfLNSq0Ze>M`UsFX7T{x3kpVG4DU-n0<532tipT!`!T#fEO_M}O4gKh zRL;NAPiGu1|6oRriY^2B-6!cg)A9f-?x_|0K*74=3DUA7PW;{JiUyQ=3D2Unve2YM|czO zgESA1!Eyg}+LzI(=3D;!`M=3DAj<>n^VDhe?ZYd3iR}0w=3Dy4nq@lb+_B@gMXGtB5op{1} zaKbi`40}C)kJN3fA-yzh8or0;Wf;p4)lQ^?acB5FMrY%6ACZ3X4$2yb)pjL{Z^sbm z%AP{;$33GnucX`S-*D+p|4zmj?u3oRdtp}=3DWZ+KNh(oZsA>JSF(FKB69^yLZS|vZ_ zUvwM&l!eef?5ntE!1noeXxJY*qZ8-xu=3D90$Yf79K+HK)Z-l3`qFC+e^!M(Qe?4|G# z8UM{~cfn>{Kf%ZeG&)NgCm0j;K4}#C;{M!0{=3D$AS=3DLOLBQ}uVTJ%JBU-**6x2J#Zk zixLRGuAjiPKnOlap?7Qji%(rYaBLV?2F~`K`aa`sxo#CmV|Cbo|a@ zxk9G{_vrX83gXl_XCE5aCi#?>FY`D)En`}^mWdO4yc~~1gD zdJXP4x;EVZ325mY>KJ&hIs@lIvL5)`J3^iPL%y^O&>~xmmKF}$&c>-SW8NmA&#;3>JgN6W`H@H#VgTwg9 z-+Ii*zX~x_q5HV^$!Ooj7^81pD$3$r*yy4 zfBqIna3|gZKE@cQ02h0)Hi`m`$FY`9eoH2hBsP@z^OobTorj%(^Kk{|0~eU#?brFx zYu;q57rt2Z6P!!@!ne(<@C*Mo;&&hLOPNP{AYBLz{Ny#(Ro~C;;`c%5p#XcqJDA5< zNQ+-IvLLH_{qx}y_$d8L_ck&waP!&l!M0k#zZi#ye2n|yc5mvm9%SVvG`p^;H0}@;SzplnCVSpRfNszL{bHfN{EbBz+g^0TPn<1y z>fb0+`}=3Dl2;6Xbc#E)L;Lt*L^;6rj(7U`h#2QD`w-NNH3r|vrO5_nn>Vm3@B zoK`10!Y78mf%eZ1%wZe;1&tqQyxtZp$L}5e)H(m?tDQ1 zdf+x6I*G+3u*63eI3L$Vy{}E)3Le=3Dz*~nmBZ{pn|GZA+(2Q(wTL2>&K@DO!}HEvwV zXr7;_ZByIz8H)`1=3DmWRfG=3DV--kp_FkKYdCcc;I$3a!6>9^TBz-xxq$n>Xfaj$=3DEzF zAA6^boNwf3V@_tmm!ho>@d20z-Ep(FVWtNPY3nyqYYM$H@wTDZ?+FX+_gewaeYD+A zhK`0<=3Dz=3D%y&AY7>ulQa%oep<(ir0PZ11qcZDiQ*d_fqExQWs-6xAjq0*M!Ut&2Q4X zCL6}+>|x0@*@x1hYjxe~Nv2yw!)B>o2WX=3DbD=3Do9)*X9U(p5$2^Va7m#-f z^Vk>rCruJwe5a3OF7`I3aczJHOi^bWi$q5yZn;h%OVc!dbMW21i|_n4zdOt)d{ig5 zcU#hKY)HH)<>}agbf9@=3DdH>%9K4(`+vCTazS_AKavAUwW>-kb-9T{s zp*#N+BaI3HXGb>S0!trIyL;G-8@tmay5KIKg} zqTkW%qq^$>#L08q5?s?Se}x(OG_3Ly{*3%xcXkD-ho@_}Uq!yacxRUk`MV_)&<(`@g~uC(~{GmtLhzq3pHS9SZ%7b3kzl^6d}JN+`G->A|P;@i0%=3D|T&4 z;(#^=3DXY(CMzetrgf^q5hAYI0PXP3nGwA+6a=3D|gmRXIy!_4fx6Dl5Rkwh zH~p?D>&r;v-=3Dfoaaewqo@D#1nJU@{zR$KLWzs&NfIc)AmA7?QgvSvo-8t81b@GEM=3D z{-+)L=3Dna(#pjX7^YZTcEdX8V;w!iInt#8;<-A7_|t!*(rVQv04-T;`I02)6r`4^`@ zfbP?9-jGw14V`K@bt=3DcC!UXGZUh>P8RTIu^sPSI)1kZJAis@66G(Sz z{}$@+A$;F9;NM&L{W0>BD09dQsSn5QzV!ugA2iErTp>J|WiZZhOf#)F{^mnvz<*ek zIU?%>zdwlMm9p=3D^{0CX)JMgfcWn7I`uOIxwwB8c>M|=3D0F_B&+#;5YV^kf-Gj{>Y3R zoI)5RKXJUki2S+oJ0ZMX!#9I)_aE0+<4}#CsD49PZOdmH=3DK<`w^d4kx;Z)$fe$%xld59r%#8*c?R0b#lPwJHwXWKbDYBtiqjK(UlKT-ae)to6i)Nt?<8Zwy8q}_ zrehqPEN5DK1P`jt{$`!`y88Xa0{wg2$vC$*vdnkjoHW5t3=3DdlO;`xfmpnaKJxn8;M zv0ksUab$+81mBHXCS#7b=3D`q0meqfUijmFCc+4p8ACQv?M@0(Cny!(FGROknz<<9Iw zoi9Q6S_>N3pyfx~g(5#l518+J(XPEl`|%sLQdx2|*ss?oLVhC}E%)o4(0xH49sSzCp3L5_ ze#6}TJ2rQBhJC2qZ+<*i9O63%RVf{Rm%YB{%0mh-Re3C{=3D=3D74hyk^wGo&a!Zy1@O}i*fE@%`_wX8-2)&^8DiOdT+Gfz6d^fhkfAtcPYM) z_eR6N6BwiV>m!IK1e%?EgB2ECc02Ug)@5n#>Tc+>%O(aUcPiY9UUqSoyB$2_B_peP zC(cYl2Wc}IW=3D8g{CXCg);cuV4_d?>TCi^e8Ka%KKRmDR`lJ;s!?DW~R6Q!8p4}~`l ztaC@U$n0@q(~s=3DCo9$zb<^;QHZ1K0Yz@21UqzMEH0$m}%3uVnks1m^J@ s`crIu#n=3D}Y6h4!fr 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�e!^<$&4!lc$ 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�Xd+|INPtwPRyypU8iQ=3D#QAZ{qK*t0IM*`R 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 Xf1 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 z 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

7>kS+gkM|zkN)d{@}G?P@bcQw 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

lsTqqGzT04C!K#bmZ%o2h%5Gt-fRHdrP2qdUyw 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

itqY6peN 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 z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}fo~jv`ToVu@zvQiNx^_i#=3Dtwja=3Dj*hwc1wa zM1urKfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ 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

}BX7Y`5Vm3OxJF06g*& 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�T*nH4IH{?3-`nu_AKDlg9i6+P;t z$u~a;KF7Ukt*lGPD{>;}ZGfh);Ijb$fqJ{RpQw-DD{*~JM=3DR$4z)Zz)@ib@ZcpZp2 z3|e&2r+CCeD!cAbXBO#oeW?ly-Il7xXbAid^T8ht-lFTq`u~viINIpMyj#IO;M?Ap z$=3Dwci|9$T3c;EMkrauzIy>KO+S##gpKp&w=3Dpo1Qy zmsPi`i%5UG7oGGwF+Jsa(C;bUg&N8q1^OBB7sgc!eiQyBVd!m&a3-|!t!mn5sQV#K zaJTQN<`wFq36CPi?;+6omHUO(>*l^!&ASq6_dzabP?@wj2UlE`MLW1JEm`KE0858&HJ_(0zm zVayuA*#rmwTtdO+D1i ziD`)QgxHgy%^b!GT8?+r2l|xCgk8UjV_Y|m`=3D_+hkzSQc93!64BKUeQ5?fOA-VubI z=3Dd3_;u+x0^apnOpK3dn>nT54NVcucfwoYa~{s!-bjK5WIg8H`@8UmHbCvH#S9725q z$(wLS+Shk0=3DFX2mKedK_9{DsYRCLOoJ3i2WZRaia)F#RN(R^?BB~ipoL9BGaGxE7` z-Vw69;40f6tqBFtG~nR8L9FeepGAsQU=3D{8H$J*2b`&Qnc{r8X$G50__q?@|qqrmS* zfZtU>k6cs2@}RS@Is1%t1~SbV$TY>OvFoh#8GPS*9Q8IDy+MwN?T51y&4T{1QJ=3D%Mwt!B72McGt)$pdg;#~%Q=3Dpz&Ii^wMpyYnHVc(88l zf)2Kou%U0Cqx}H}*S+zIABT=3D_$V;$!_5!YF6}7`AP&_o7^J$SvA=3D9dG2L6VpwOgY$$JBCd-EM)Na7| zDq_Z;WgWmhbb;ipL#pwUpSYd}?=3DFFF2;--Xr){?H3x*a}6iy00#Ib-j;gNuOW~*XIO(A$kBk=3D7T>gD1pCJv#Qt-RX2x<5lb?R zayWpI}h?V@y>c4nFKppapZUC$8~)F-x2IjGN{k9)>Iw~U&(y~ zI~KTihE1RXw0P*)IJyG`d8u=3DOW`6`DusnT)iGyatEm&WWY8|nLlDKVSn`A zX1>Gtdho@M3*n2Ep_5l_I_K|#ysN^IJjJ`L(rvq!sq28x{T=3DR+XK{TJ`S4KjGSTBe z_gM6zYn?wj=3Di>k>Z-U%2F<<;y$wvlJ-e1)Na|QGpOt0X(?4~;~7khwypvUz`d$zJ1 z@P#$K!%JR*_X7wQ^(MfRoDuX#?>WtUqyxZW<|ksTg-O5Ir$=3DABjOplS!hR3^gy7rptmAUsIQ97C~o63@4H0|hDnTv_pkL< zJMUpTz*R5KyCQ37HehYX+=3DI>d71#&Q_znJ3Pv zT-^H{D@)RG>7Z}REdp+e3JziqV?~Ry|N4007kh3iD1*$2c$KURaHb~UeA?{QtO1J5A`E{^xZ#FF@b1;7_io=3D6MB-O)6j;N7y)K)W=3Dj} z-IqP0)pd)fRb9e%86R7Z+tZgaFYNv4a}RE)CcNm=3DB)sA$zSjBNgZg1ShQQV-b?Z5w zBt8|q#~nDKAABl#pFj4_t^f)bt+09Cp8wS{+N>M-zQBvPMMpr_spU+EFtxm}m!rM%8LTvcFM zH}6Ziz9@Uoy23BM*WC2Oc)g9QehA%ckDZ+NLBxOy6gI0KtA>F$OwfA<*)NE^wE^mYthPM9=3DR3dkvcPNWhjX=3Dl_;JDzZ@aylp1TD7=3DDLemoU2OWdhQ!) z&*`>heH9wqD>z~vv?c2bY4ChK_lueb2rMrhCS2gRjKQ)9x&Z2`mtwx}_PO&qki?Jd z3At|}Pt|kwD(>gccp7d^;XVd=3Dn`8|JeHD4pkE`Hw77%*rG`0#=3Dbu0At1$#cOtWCL| z^Smf~PfxTBU!#L#InO9#`lHFM0RYN9 zDdK5KozRz62Y;;QjD6j#Ia5r$zDCXuoHtnzKxVU#+$i!=3DKwT~E)~owG?V5K? ztvaQA>Z-}itJmN?pQ4P5X9h7xpKe^G?i-XUeEESQl+pXf|CnxY;)iWOMe7;cxTX*5 z(7d`Zf*3urc7legD=3DpA}U!f=3D367+i0@|Q9G*gXeXMz{NyDVnC=3Dn#FgBA=3Dub0t}$fX zi;po4@IbF^iJpjYFgy)^;d%ubO~Uy8WvjNit)51>jm>Q%ZEhSR;+Oa&Tt$b9cO(DX+P-jC2J>rN z7Dvrooaw2Dy3=3DDn+?zq|bcV=3D@|R>v-ltokm{VBD}}Q zi=3DwCSTYr!>;rzDWx(wsM_yQP*t8-BWKXJPWZK{l^Lb{F9_bA*|H5j_AeoAQk1Z-A~ zPpTfcqjD|iY#aFZFw!cXd2i)a_};?4QV!5`@)qtp8`=3Dgv_O$^t27zP%^8H@$(ePG) zx;rB?FprD@bakgAKh!a)Jcn^lcpGH6X2CJ#LBbM_jo`j+uh1>)BJMm5Z$TEHHiPYG z9oYJDe7*ndTAI*nYg{&7B?se>dM-spqJv=3DMZ4tBy=3D5Cu;=3D8U z51WOSjJziH35}<>dje0eVI32C#2!=3DpeSGfzuK};1%~tpeY<@6+PLnoCSHRt1y?*Oh zEyO?Tsyo(&@q2rysn5kSfMXrzhv?`R=3Dc7M37stM#ozG(VB}}*VPjQ?QXQX2rmuN3Q znP|RMeCDT?NkzYq`1VJClE-!!zvKeA9(MlyedCt_*RLdS{a7l?>bgtP0n6jH zN54gzWQsqkV<=3D(VA%kC)&~F%DPrPINpYgK4<{q}ScsKFDeJ*ft3-`#*IR`lJW?SG* zz3TIZ?gwvz|3K0pzxBIk`5t=3D~+SfduRk#Zh`)|Q-?44(r2HrIjengVb#wB?T*A>jg z&lpdmKD{Je>yKPA2hazc348m${IS<>VI6wEKTY`61@P3JCfC9D;id$hRvu&>9Jl)N z62y7dzUBW0O|qWv>3ZINkThBQS9O)mZ^>sxCJHOzyMF7BYuS$BxjvcKx*x6n*lRMM z;DdBp_vI%Gn72D$pg$7u2%o|9Pnga+3|;OcPEe2V6TG*`Uo?IHQSfZme3=3D^tf5(vj zGS;Jc(bKJbMn8h~H~^l{7Uv7?+=3DaN8v?m8T0`bRkF5B{N1-p5JZ zES^ttFGAd4AAu@-`J-+bkHi}N$q2SZ+D1R0CNAppiqCK@$2v^^4&Dg>+TQE) z$6gIFFYF>Uj3=3D}YWmrWnBM<4gm7zmId>PnvF@E~ z1RrZ74g1`E68aac`ILw8ZUJaU?o1(l(DnnHxZt+HYju)eV4T;{FAl%y>-M;@4XrT! z$;Nn`^hfWQ#ktMz<@A120cpNr$-kL?sZgC`ij>yg-d z{b3dBF??V&+W^l;?2LVV_1bc%h3Q-eI;u)C^*HYv1BbsrzW_3!Z5y}E2|VtD9_ELAnBEPK*}x-o0sp8b9?g8P{U3gQVI3O( zPmD12&BQBy;yBjh|IQen`|@YW`^ekaSMoOUH76egjY_{*Mz0I++^XqthtN(v^icKK zU-KOE#PoSrhRR1(*C5s?&-LG(ul5h>kpn*A+HwMVK-PW#dpK7S{h`p~zg}0rPyNTT z#Jc)F3j*i}Wr+E$kZsm}#oX^B>q@tEL+bj!_`J7phy0Zy&kw`*??EdSgRYc$EB0#O zwpZnL?)lz%12hXc{XM}g2jP)9cC|2UwpT$CesCcVD*w?>2wbRl>CJBPugoi~B&(KINe$ zyN2%PeQ*BQ8!MTv<)Mh+9QFLn%$;8BFL4McKl@`-g=3DU0~s3)%)+FoQqKDT~ewUXR99_+uj4)QF@6EyRrKfFfBW3uN1%4;=3DNqb7hi}W77b8Px~ya{Uo)`4y^{||C7rqC507=3D$*;{L#gc z0Kg#Z9ADk17XpjR#%7}K5YvpjJj~X`pzMvnG4x4o$C%zRcP!-BRZV>6c*IJ_B5wLv z-XViM)unggH9zrvAN52WSNdt&eRRstlwUEn-Qo5?{^_gXrl0m=3D;p0YUWcz7*0GH5% z_7BbajJTxj5q*VTs7?CAd9fq{_yXb^4V?!3nbCLTSyN<<%|<>MPmaH)+XH+3(OVuy z)uhu~G~M3%vHops!E1iv<0y2~aNwlRoplLi0$Hb^3oTkPHoK?|bRaVHEkc_-d&+&z z{0Q!~23%dch|A`Z04l7sUM{UW=3DDr8G5E|v2qg~R|@NP2ZUDO}jyMXzmKfA`t-Ch3Z ztpYpcBA@#kZ!@haZ>-no$mlzgOj=3Do-&+)Z(>pi8Rsdn(5Hq|V1KCDs#RmrL*ef3p- zYmLx8>oWAQCOU&~t`*ud>w1F?2fssQ{^}0N^VlrHNSqMw9|3%r8|cHj z*w{)nF@JR_--YtL6(uShk3BpwZ*^%+y2@ERwo>jLWxdb~%H6Yz^DBE|Zlx7?H7y6K zQZVLEbnpKn-TyU?{;OirP)8l{@~F@m=3DYrjD^!Y~gIWty<^w?Xk6DN9pe7%DBLVuMR zm(l#aXvSC{@Y0TK{B)zOcmLbxzJ#_xu>*??bZBh$iPa{4WAtWwPD`DPsT9i}%lP}v zh$%k_wBQC`Slala=3Dmy6?FL(p)K(nx?8VTQ{faX&xHwVzL!MVT$7=3D0!_F8X+GvetoC z3J=3DiqcFA<;3wa)1WDW8N^c(B)mR8n<{s>Pk1|4X9jG{FIuPpk;SUTx)dv5RFDi2MFlg%lIQ>Zo_n8}VbS;f&*uX(d7itR zd+yopx#ym{Sm^Qgbr$7Miv9ebPBZ>Dp#hfVJhMHKk+BIf{&3?JxwzXRJydNBt*riF zwi%!AU|&s;gTQw>+7p~`?4HPnKf<{CoAI}$KZU#8BD5|3vxS9M`0<-@$P3T}KZ!90 zdY#UBXMP~8FE*|Z;w8#vQ0}9TwOTj87w7=3DKmyhCm(#QWnFH}Ij0ygS}elOyTn&65$ z)7Qqid*U*-McmQ%#eG)FZ1kB097=3D9I(^@o_WoVD`j1lM{N9Sit$S<{?`fvosUtq?! z$@l@k*pt|!I!w6)e6%%I^Ss&Vxgx(e4uSmsu-c5jEOas-5*N7Hfv)&T*k84`AiwGu z`~1&o50eIt(<_Ci)GIX@ca0kNhrc&t_k9pVqu+tE6YRxttUF!TMeZhRBXt|s*3@ms z^{sT;sp{XV>#rtFhj`A-+MxN@+HcP*WHRojD;~`KYU&d+{@@hCNu8qf&4({5y>hMS zCCZQzlw%yBCsJh`iB{#xv!JnR{z}LiyvMij*!->Jt0%-RD``WVC;XBnL8A@NyzE10 zR&2c?9?;aWlxJO-N38Ld3%rQcE>$p$6WYPNQpU|wXG;4d?H$N?d+##pu0jr&pX7xG z1&lzioISoh*nG#lHCjK(1O2Svnu+7{t-B(>ayItoA|Jl3{DRkJ5)O_7aw)eSXLReW zjNN*@4Egl!YVvp!qJEji?*86X+Rz=3DG$$OZ}B(U z!hPr5hm2h-GCx#5*8oJkKe9=3DUql(YwrNOS7u9Fm;=3DhI zK(8Nc48LkDTly;Ql5|R5SK9}gUW@yq6%0H20fs&rh91yl2(af14#Uu~n2Xxi7(cl~ z+kh{A%(8Pn!r4jO^^7>~-q0g`F}8espMh_QAqq`5w!!aKjJRxxsq{Q%JQc|NKzL1L zvt{L>8Ga<5EIQEY(DDWQ7FGxJ%_@l}b|L<8pmE@8z#^sff3n|usy(rk{V>K8cVSPA zIVCjyn`J!9WjueNzB1!4_6?#iFG-Ks5hf0tBaTed7 zVjaBL?EZR~yc=3Di)!&{N(BD2^}dCv>~>mu76tSUx)i&T`D| zuN-`*VNB9YV!tM9q3B2GC)>vv+KCuLYn|Bd@I%?YxDv$i_Qn~`V~i~;y#(%uV3?3nRq#ZG|T)u+oEQUm#neBMK9 za7KZ&Rt&k5E3y&%7aaq-nU1_-h^y)xlf2_i>(M(fZtZ{mBgVXVKoEd=3D+N^^d3)*sV zUQ}+t#Z7$2wGCrE@Gc=3DM)f#MnEY77q9+Xh|b;w}&P3XD}pz=3Dyb-KEHmWn(u{Wj$FjyE#Q7JeB@!%dQAAOeoLkc z&t07RlCa|~#??;Aav6rjb7URUdte1J&r_@KBQJ_}__9FhY zoX@~pZHR^6kMG_1W{%7q_~ss3lKz~)k?ezH%mBWb15n|6E%5yjWyDK1uO2TWrl!b< z`cujX-g|qZj98^)M8@dj_|k_w6KqdRn8Z{bfHQnIu`Kx-_E{h9A(6kyM>r>GL<@(^#CKL~I`)}v88S1_ zE4@F8^P|?q$hA~5l{qaS8`2;fvLG7<`Xy&jC)z@;3L|u(#GLv$|AODhu1_`Gtx>cc zS2-%=3Du1hm^$=3Dg9Rj{c9!UBvkWPFApEd>mo?r|2n-G5LrK{hz@>Jkz|IL6|&Y$eU`? z)}LSFJM?XVkKl8CWfgFDof-SR$c>cej7z|t)bD4pJod^{_}^GX+Z6HPjQ2Z&xV~ea z$VbkyPoTTnRZd6xczxb+t9;ftbltn_pLz}>Yb{47s|l?QgOhnqwJ}Ud(GIWQLF>p zuS#ia1?EX`qjTk^wzWaGbs6hPTd?0fkq+dD_8-!1wduBc1Fmn;Rx6)F22&4ojyM9| z+K!ld7w$>^2r?dLgb~3$X?`eJ3yQ@ly1GaG5;rd`1@c($<~W~ zUL&KxYZSDUS+PfcZt(o$^Xzx_fB!}4)JR9J#3jeC+|T|6*5v~0S)O*}S!BFw{K~fz z?_mF99D`EcykFPb<$H82S;2F7F$UdJCa9V2r6LR7Hl}2y9?w_P_44>b}m(hQ0#-CixK76~X zWZkOf_+#XB8a<59N#A_7Xl0cj@DT*(Za`D>(3jwebBuOd(dJ~<1$}JC7e9$L znC(-yWmMzmh)Y5rE$%AYCt7L8Dn-kyur5T7KiJba!-aD^>MX19apYs<$r&;azTv(> zbU+&svI?<)fYbVe%mL+9z}XXG`&idj=3D=3DDn;*P3WE2WMn?HfTo*PWGAcl}p$jw_dX}^2{@nu@~WwRY!hxr1)ODl!`ftMP< zt9?sVe!vI&X@3FXkGc)seOc0ImFFGVS5?7p!ViA|d;%7%d-)`6m7)wIgF3**C*fkA zD&k1`t{$@36Zr(bn!iVbsA^iRLW2r7$ELCECU@0D`p|qqr@Ht|GR@}+we5Q2SCp#e?C$+l)VP zD2T$zaeR6y+8@SeHeIn_(AFgT?|5NV1?LOj0m!OZQXl#sxN&$oKtG$>{i0VMGyIHM z#$9wPSw_=3D{i#9C#<2-pHpH2ZSuQ225gg(?5j%-13eiCDleHv|>|Nq;o89x!QtV2J| zD!x~p;W}ZjhI)=3DVR@utVBco*>W&`(OK7Cxyi$O-1@&De6VhUGcXMWla8J^8&oI{Zn z(W*)Oy(mhVF=3D{;D5igkcWuS#S@qG}F_({+)`qFv&+9&FH!Ts0wM}sINI8y$uHQ=3D>A zdS{tD0$RVxOWJc$m(2YW@yq;U_;be@&MfIWxu_VEhPu z{mW#XmBP1eON}#-qbm>oditRx-wNRGC1+wHpB^^j%LT{B&ry7tz$pB<`+PILY)=3Dp! z7MyE1Xk&PmcML^e`reoWH>Q*wkFqbZtXkjg{*4*`=3D}r7w&r=3D)wIca@l^Qy~uXNudI zP8trS2mJPYK|YTzRqqTw$KMYnX?*uC(D=3DLX8Bfvu$Q-f{t~>1er@6;m;C=3D@>>B+PqyDVWtAim|wYX(b@ej+c2&Fn!&nSPUMlsOl!_MK12W8=3D%is=3DM)~|G8p(vT`%B1yYbwU{Jkf#r`1!vXQdgt zUCB!936)-=3D_Hh(HlnNdcKYSa*5co;RGwQAc?VPN)K1ch=3DA+Tm}5S5PScMHBU?!8w% zketgs`_1?gp?}~hxyD3Y&eQ+i*JpX~v%Yq6U&uS5`kI&Q>$6MIR~^fqsxRQCcfff_ z^8Yn{YHTZe+&X-_Wt>TS%eOAv30vzS<|zyzk3k^w71d`WY{fPsTRlfUhs;-=3D*08|7 zI@E@)_(|GPN!c+=3D`~2jbnb!p$0%Rj%GmlkP_gYhwZXJd^c|glVIh%p`TtI#(>j<|2 z{;|lZ=3D|H^B%#wSUkF2U4ywD!3_Ty~j=3D~m@(;{x#0`XD+lJr4`e4x`=3Dc-r({&jG4i` zDASJfTzlZJ4Z|itA;heTT%rCa4Wlpa=3Djm9bA=3D}_Xl(;aQ*{-851#Cmj?j1tkkkyP$ zWSu+(Th9yCmgtRXknt-CGvMt6EdVD6lj}Y$m#EKD=3DxGrCX58;Iwn_RqQPyZa|G6jf z*)5*xs-PM3jzUq4A&z_EtscOU3m7v%(})uqB5{hU+=3DwQY)9|cFX$LV{Y{wJV?bM;2 zLzHEJ|0=3D-Vj%xfQ)~YAk!&n;!p$D?=3Df1Ui@D72yD$;AGl98vLPpDlwdIcmmV5c?P7 zgRT3G;Yv3k-y4y&^Oyf7sC})+BR$9jl ziNSBNP}TLevM%6Xj4ytYdK-PAkFJ38YqkFkUZIb}x2{U!D9qT;#V*4gJTvH{Q2RCt z&qe3bS10?DHHe+V+#|-d$q?HCGHHt^xZ~fLgG%kE8Vy?KY^HOy4btUNxKA3~LJ@`*$9Sd82eYJ@W zdk37GLCEoc3ZJ{9#_ay!LH5aW*MLjyDOOi)3uLwn>}+?5yK0*)|BJH6k3sBY2IUaW zQ4ggIqMQk2uK9rNh|IzMHQrr;XF_vjfMw40Ra?BHj5{Hh(y%`ik+Zy0j63VcNZzb7 z8_LS_I=3D31_JEKMkaz2c1aT}M%UI)HM84U{u827Gr7;|I$a8@GoW#KEz0VNZxf)1Cv!1i(y!ibp9eBulJRJ{GYI`TN3}AqIp?S6dG?R*r|^w^#GYkb6XQ4Xc=3DRm5H*)*+@Lc`p zm`mRO*iO08WS?hr9>@ha{3PhsW&xcLUpDu43feKyH>^ z&)1cIoW?yU-m!!jl7o!b@CJ-rv4O$o%zx5}xnkauhAYO^&fIi5^GCg**T}h1FNxc6!mE1PjI)|3MVOTT64mpNgu-%;mAzqA>etkJk*v99Yeobe(* zDF1T+asGG6p0suJGj$eF=3D~JT11!po}NFehC;TO`jrhiuw2c5;h0qmP+_OKn4q3@v&^}HwS!hVwg z+eb?IUgTPAh{!nHyA&9?!T9;U_p93HOhE3O3IED#86oG8i@_@a>S@v`^>pJahie=3D4 zoz}m?-<0o=3DV_A5A=3DEzSdr;Oesx~m@Y{24il|NV7dJz@kxuMVj#!?*&OFRo+XXO|gg z`n**^=3DqRHs4SwxkLYL%Eyrscgo`)P|r8cfWt2uao*q7hbi{os}d=3D>t&y@xm_X8cb( z*%t0CA6;sUtC*5?^;HeSk+W?=3D#l=3D{wWq_X59m)Ql<|dr)5B2sF&Uf(}_d;BY+$&Zm zVw$lBQJy#80+&IaAz#3*3ga9|CHLmV7Wyn<3xz$fg*flbYfx3qd)U>wLd`{w>lAyZ z&zs%vh^)oDa=3Dl91jI@mTaTz6T;kFXkTEXRE2l}lQ9&i}Qv$4Tt+g*$gNa;^xtm^OB zT8v>{xCOZ1W%NE5wkPoo{AUy2p_cPVFIN#qjb4?%%Elq_4Z54S&}&?-aQVkpmV+%Y z2|UvgaPEuYPks`47?hsd_lVYWgUhDE2KY11=3DG9lp8k({jZQf<)nDK=3DzD^*UKv7c=3DX zqQRyST(3jsG(pE%2TDagglHc)CW_pkEVN=3DPm4DeWdX57!!(+<~$54r_31dtsH{wI; zvj53uyCaT(Umk~#ckkb7XK#A0*0a2Gz9)=3D)UMT0ww~hufx9w*+Su=3DlVMDYHR!hFNw znuEKs!T+I1ujfMzw8>R`6zDF_c6|BX#~WY$I?wee+JbEMw<2G~XUMStTD0o`jOpZ?xarav}456?fX0e z&Q7j-`f|?o9It`A0sTC(oNeg6n4_dO(iiCBIoc_>=3DfKVP@XKkxOXoo)hb|JhKvR8~ z-_!{GSqeZBXJg@pLuTsi0ho5pdapy}UdX0+Xzo><6fL`DmcJ%kb zmhwHO=3DuY-(!-k*tsd|=3D2rzrd8tvZ%xTa@Xr&EhQQTUR)Pb{+MBmojKN<~?HgDMux@ z3icv6|AEZ6ysXc*(9g&~=3D3iyJg4ZQD_Z^Ae;rJdS!{mt9;UEa6a`0ToycZwUv(hm^}iJV}--(uSP zTsvS5fmqJ^7tq8h)(+7YwRU*oCBB!jM52F#o!tjI)CFJh5(q`ZcL9Z}i>&JS!?+&hS&}I=3D~ zH?4-N_)hmTRINc~J;G^san*%*% zS~EZ3bL254PF9t)0a&j0mWyB5L0uQD&P2VsV=3DSj(D&d%AypeqmXqX&)4;>@-<2BAD zAMaZSdVvl2U$5~U%;eD;PAQw1Gtn>-5)g*R~`EvLhc8&CG$$TkGb_kx;A1S4m3^5 z4Rf6W`o6Vcm|5FUXx4_#uAq%dT;|SxazzF0)!FNw%xiqIvm!bUW53O4UpT;M^t^Do zMOo;9{YpPoC~__CI-@^0)R$vwL7CatKAETYw2GL=3D3iCRRcdH>kVY{~+b}#yG7#*mn zj2IWpUKXgp`v~qw%xLNlToBKc86DvFcHxW6V0AihbypqR*EHx)!71!)^4-z~z8}%1 zXmGZi5$UQ{d`X-yoy_;(mr05a>!iKo>2StYRR*#{^T~bK$2F}PtNC2#d0K|JAixMa zF~YbpKiX`SwxIKJA^#yWkJX?!KaTL}fEj*?6Masm^~dZW3h3An?l<*C}+ zN*5@e9!Pq_eKepQmWMxj3(uW`=3D7a|@9z)$1G;BKCRd$K>E@Q0&nNO_eGwBEVlKUu# zmmSLa8SnmJHrvA5N8$!BKG-l_mKnca+QA+4>lg=3DA0{MVWq=3D8`%kB66MLr8ri`ET1R3$vDa!pzmuu2}^SnrMpBwO`@*eARPgT}i%g1ly zIs^2Qt#Nf+Zmj4aiBE-JV*k1DwHao-S;mLhZKoOkr~HOqH|)6HBkPfOsSSUJ@ejbn zVMm&=3D2L&$NlgW5`i4E|&hk}Oo%blBb9Zz`3K9J{8!y$9P`Gw{E=3DTEKXe~EE!}N zZM)%bgk1~x{dI2KL5ckQ@G}+%GGD!nFkvlND?X(7c_I^VR=3DHODfSVx~xURrmZ2Kpe z@q6DpzI^`&`S+5MkS~M@?E|ivq<8kmz8cq|ubu2`!v`#j_Tp@xaav+)#ohA!6n5+& zv-{OUx(;E0yxfmH%X@8mg7UP3Z3LVjzJaFsN%)=3DctPZ%DMOaL$re6>*l{|I~#kwY6 zWGBYv+a+_h2<>OrxiM!W%k!FX-p7ppF3LJATUUtZzqmH91$maBTl2j#qN4R&qd%Y9?csS=3DEBTiXdNlCgzFIC9ZNU0N$G` ze1v>$!8rqwr`0+#fV8aqd%yf)5FH9^SXX-@U;NOFog=3DcBdw+9w-Q3AFrvIL_(VV9$ z@8u)m3rrKdk3i1-F-9Nw(NAlbH17R|@=3DNl_hbY&-!TkyDBQ^SC{ub-`ZEm>!+C1c| z&MD}HGaXGvpwuujry$QwLsrS~St=3DjSP>D+*J-C0|+<^9%lpCk9&EO@9PUvs7-#xe0 zI8Ci3j@^kh)>q8s3cm}^eSHYoac(Qebu#}uwwT@Ph5u;}cP*~T_qlNP&-eKO4EK5D!aUqmKl7b~@W_DV6gdSfe>yShI1QTaa(sSbDBO z+bs;;@X*K&pnc?^_W5B~z5hjdRer`umKpEvrE=3DAWjX?MV_#h|udY&Bnmwnc{{|CtqSuC*l5rOs^}wvvKXdyg56Kw8mZLAB)a`Zwk36>R(6hNZ0~# z_yj>u#{dIu8PM0^QrK;u3oXgH`Y$d*`!m=3D+_VZzHTkXE<)t=3D>&Q3i81{s?C@X^V`; z-*+!5GxGG`y3!sk7~wu8vYJ})pZH7?$ehw(uF^t5^X z)}c}tU_BT1I^aZ(b*tf0`rnavy?}7WA69dB_Ird)Xj0-BznJ8?8~%~_0+C~AtB7(b z;QY4>#rR41^#acK-vghFr7us$8~LIY{H*ds!)_sOV9Y&c{2m#EU=3D6pRqk_+vzAXlzh63(Zu(Ol z`{GyyCdhrf^O&(8W%4=3DZb0%an?~v(__KNX+2JDjpJj=3Dx2dHBx8ynoIzuyqzw592-e z(sR9jjNzz}Qx|}o@8y36`NxP)#Lxr`&+D?6I2!Uh{|M-qJdN`Pq=3D!ea7tNeIJUdZj z!|f56znG+8{^M&Jwu;c}jFGn5&>!vKKGgr9m9+q!pG5q5!1*q8dQV>^BONs?Z(1!f zf0_<>j+T4qu)%NcjE-{D9Pj_hc);vd=3DaH$COTvh=3DU;ZWJE^|)jjR~SN(h>C^b)T|P zYx3!v0#Avr4(o;z;I_t$|Ix-Rd_8Hoz9!=3DU{25un>I%R#;~3jI(qwEeo67sr@-FeY zuqH7a+eRWzcVrvd?m-#N&lx#Cn~QmP)WICFxjav;^WMVm(0EnQfSenmzYWEs0@^#|{xYGga3Fc{~427MrlI?oJ z_$Pn=3DYB2wnb!52b0nX`tQ+V$9V8h)l%2uHNmwF~tJ?@Xp)gP+9HgDB*5g#!YcSs;V zE@E*3cLw;P_WtpJ^L)%llX1th^rHjU@Od~!ykKNjU!Q9{H_G@eVm=3D+=3D_pGDMFJSK> zva~jIo5)PiLqjQXbMxhCT+caZN0C-$UpgQAg{}s^Lm%7^J-}SdB72&QwX^qNZvnDi zc-1<%JaoJG1+VnHVq{R~nelU_-L{WlN3F z*5bP_Y>{dBPQ%}$bspaS!V9EX*u-W$G)j-}q1khnri|yC_sH95H*_NWHte;V(mH^b z0P&v0!#9v?Qg8Hk)tj~{O^^B90qmRO0gYsnPbqUCZ?^LQ(UI`yegxj#YPDfp?RdpcVvWNXZ0c$HpETS}z>A-@v2Rz+VA{}u%s&ZTa(?N{ zP|p@Pf@sLj(3}t0^QqWR6>8H`@;CwhPCtvZA)0zU`2OE0OQ6TH%10?Ewa59 zcTKV45u9}bt;sul6ISqBF3;eRU(lbNT@5(jd|vDmt7nR)8@TtI-RcAr0JAk(c$Bgfgp+0i=3DX460;2XgT6 zjKTx#-+&F$4>);X$)&~_`funsBb4gTu;)`^n9l`FO-2Rhm9`J&w%HT;>NHs+#rp0H zqA%i!e=3DmyGV6W~>(OWDlv4oMYaOVpB^|e9^!~y4Aa!NVhc#7XwLq4M!ep2TAjbWr| zuAv#H5yoE2%;l0hq?m21^YmX`gSH`u?h?LLYo3XdgJ_5}9&o-f^aQwPYq-y68O&#p zwhW&&OdeO;1iiVikYhMQY+&}&ysoC0@MFvm0k;cKji1Ci)YA?dr!5gLY{zfP`jS4J z7<758N$%yfEx$z$6_u-y{6sH`NX_VK&;Yi z&{*Yo_eXax9AMm2H|C$8%qlnhnCE%;dyel@u~j8D1UhgMp1l{yoIgE?fnhAykY5)} z!QS~4<9C6~hs5Sa+t(JH6E;wGE`Cp1J-}f8R{HhnN0O^XBV;zcnS7~HIsWR0q5(@c*IWvw|K@J4}#gFQLZK?@&+8#QiIMgJ_tvM4kj5zU%xX;-M#Wc-ovd zV!m;H^6N9q*yTbiOTgzN)*9)nQUCrOM%wM~8`h#%4ayf~w?@AD$c$y%a(i3AxphIo zaO0ZUJD%enOO`KeTmw0r-Z&RICLa4FZ}zgk)bb3lZ=3DDqf?jIz4iy)&KAAXki?p##0 z%Q@1w81~_=3D&Wfs?86z9UKYQ`&8;!~(ldK+mPY7hrbF+>f&mCe%%2-(5-Rh{+a{mpMYbvkdT`iaw#~XY;KU(t!;-196U&T8~B43XNO&|{7 z_PM%!@hev?#htzPsD9uNpG)3nIh3!ZO^fp5S)OfD=3DTg7=3D>c4)xYb9up`gYxMdUj$; z{m&Tdfchf;bp1708^nBzRekRmUB3`|+8rZ(UMX_Q8rRA`ArIh>-5i9iGhxZOMrHFy zMq1k|cy57SU~3Z2##aze6TfXW%X5#(w^H=3D>%q4}W(;IbON1Z28XCLa&ZzDLkP2`R2 zN#PzfT_;4?6|TPNtIJ)-c8Me8Ql5@Ext6#tHPV^eP<)6}z)_f^EuIei-G1#Qwl9%> zMAMoiV@JF232rRL-_ozPHS#sC;A8#9G~;SNUC&(v^b|uLj z(TMhuDBML3UWqXv=3Di5w~f9hA34>(_|V2Ai5&S_A#1e_b`3zA&Lfz10q4x#}0Ov{Ta zm2dXY68jlssmG>U@(5^ujo6l?d)vNrcaU!T`#KC`a2fnp?szWsn9}nbS0wGs2L`i0 zJ@?yBurt@-6+a0(6R=3DVTjG{aXErPy#@u#(ApaWlijSDy(%y`2tZ;dN-*IBh)3&D#o zS#9J6-(t;=3D9%c7(9#np;gYQBftnl3kpFVKGGr)n&`^1jXu)y4$C zzQwZ$yeR$rKDGaC($AtqKWls-M1cwSKn5~@FLO+oFfW1R^ZPy!SkvWsF?_YQjhR!u z%LqUB5#+#R{DTakEr7Z?(7*oG_*?pWMD>R|;DSq0HY9knno)k@tU}tQ2HWwo9oVk) zn{h2U0d0iY27j;i$@fHjBW?osXgN15;B%~dpJ5r9AK-?(z`GscTWD8u?wer>$32}X zxcY4g*GAPtaj(LhILC&1$#|mPO1Iei- zXNJgs@(SSOd+;yMo2i_8nm*Njgmra7Zm4~VLq5Q=3D7R~dMuvq~w&R5oK;~0=3DP=3DJtSd z{dMrCy=3DW^$#6UCKJMo;kR{(Pf_|M+2+m0OXGQYld@!cP1 zQ!!p~)IAwRX7|cbK>&o@K(uYMe2-ZRB=3D-XTrtceVJk0mX=3DkRr@q9Mni=3D8xbeZ+E;^ zy(`ziJ}%EM4*-^}$;iTL1xbmJPa@%+X$(1+Jhzb+bO z%!U2jjD9-WyP$DGbq{3|U- zu(x4#a!$}Dd}~%z|IV4(Z8)AqJ^f5zL7NlD<6JxL$>np_SH;_Ps8{_EPHh zI-F7$eL6g;b*tAw&Hz4HU!xw@x~s4*KCoyaeouy7jCkHg?te5H&2qnN<^!S=3DmyR-i zcPgD-e*t`Q6T2=3Dx-X#5v)fCg`xU?eE6Ks?oT|4!8ndT8=3D!T_AsdnJ(1U3rZw(O zmM6VY7opCrN>7fFzS~~0K5u)>+NbM}A+1q<(cTBWl|qi~fbUp%uSh|w$=3DMaxax1qc~|JU<*3hr`%yD;W`qr!L3wyKrRUt_I?x$fC0w1IpDSZ@^v zoa-K(v!4$**R}~?K(7Wef47A17d09ciykw^Qf9I*&$NYX z3-W#y*Vf;k8|m;+l%Fo;@gHP>2UYnIp9*o+Am_pU)}-U)$DWj5$^xFOnF2rXSV!Ls zVA44nY9fG-Fle>#-lmpAY~hBL=3D7dL1=3D5dO94XRvLu*5Kd9+Uj=3DXVE@mVz*B%@0{rkl9s3vNES&ti8}UNZWPIU9 z#x7K}a2)VU)846}z5w14N7#CvXhmmiAFRfE)^IZKE>n3z5)()n1nZ0I% zEz=3Dz)f1|&#EQjBi&z@D_=3D?Tzr&jd2>ox$gAOOV@)@UAxyr`wG)pR^OEoy~VVGuO3l zy4Vp*KSut$NcS=3D2r?FOefPs=3D=3DdOzexaB-awte%Pd++1s3D=3D=3Dsq+eKUd;&c7RMUT0R zi_S&7?jx{q+6|*?jJCV64)9&CZEqZq10EhKLV1jJ-mff|;pxGC9L_X>cCzLj<2p6H zAMwO{uU3~Lwl8d?S6Q_#?$HG|&7?2PcoM z*dwt)rgiDte5UKbX6acA-nmkbXASoM7j#VrKDlP72i)*;hTOb6)T*q14LS>U1mfiT zMzNM?T#PdzIAbC@9_7I+@A`j_IPxaox}N^~dqlpGmnkEnBT(mtcWQlOShnYY|33KX z5@ly6UdCldQB z_^uPa-Z3)nBn?8pUD-DU7ynTBJN6XnYW!U(G^Fr%tWEiHRo*Ctzj!`mPY8CIq7~c| zOgb^GUyeVaFFZ444X*25uKS{Vu=3D{ebj_ymx-CuHk625pH`pT91GWPgNGd@N7K|GAy z-3@x^$MS3&_?~z?znQ6ReW3b3+Mev+Y+_y2|Iz2wSVyJ6eE59$S>}QMD(Q|<{OdUGDMY#F$%FVE#_#9wU5oE$ z@jVmYtIT*%;AmcNtU??nZP+5V#kr)duiJVNji?M^YC^|~F% zGu#_z`mDzh>vX<-e%YnNaS@l9I5{j|T3`2{V!_`lP_9by}4 zT6mH5Ned}-u!3#l{?->@=3DQwJY?fs;3d9NPGid99~e#)nJ6LU5d{(QgjAFhupv8PqJ z*g3NL`qrM4{7XLWyT+U0H%*5eTOd)<&+FbKjuqWNMs|Qs+hO})%|Mx| z=3D;%;i{XR$Xz*%3uaDp%D0lQx9@?IUdJEsHm02}4t2dZA|sGcjxww_A;`)ByAbav!u zF7a;0C!bAN_+IN{l)pmwSkZk?FGcsM`uK_|tfTvRNWoh=3DSK6U|jr5eDZRq1k>-h}1 z!DaqEk)wXlgx?;l z87joCoYUkAI9I)aZuvyF;TNvYo50(oFVIsiVmK%A{D^7op22o#+X7Ed zncW8jmkNg^qu3YL0J6W9dM<}&bxiAv61?Uou?MAL+7NL5bvegIm@!}2x0#;B@hMmj zz86F#4G-ztUawK2zFDKG;Nv2+Xl>1h-md6wsf?cpKgKEcPw?A@m`y6dAuJIhHR{b-scdFnc1_ z6M%b|hFjg&E`H@ZFXJ=3DvF~&KFXO?;H6F5razKzUp?3ma}81Do6oy7U*cNgh4u~v{z zN<8P&%!@k3*RE`9`Vf!otU+#4&i7Q2FKUcwjQ?0rdI{bm9u5C+Ur9|n|Hk(kyxXpR zWBsh2$)3dgtu4amA zO|Mx6dv>BKhqjj+S5(4I)MdA_on+bR#h4Sdf1>*O1^SZt*ZpJ7W&8=3DxCbJ&qtb%-t zSed?o%-RM%Gp)}`wg0HOYo}3Q()fZ z>i#8srtOOMq))WUlk~?jW7K=3D*wF_%I;10hxDmr;}8^$EOqUglBQh3A~K0{#9=3DZ!qeWqkDcx(xL>ZoiHD1)RrN zVxOQ)#;bMkMAaA9#AQ2!s86`qpZ56`sXm9r`Hpm=3D&Xzka!nmN1#}C$ZD6hk6?`!22 z_}vZyo-L@tPjbJ2IF2}`2AnG|6M6l(j*VS6-Q(LeOx78C&tL)IFwE{RWUS!zK3&$Z z+)&v8($pKazdzO2uXM|o%Y*1p?;|$Dc4ds5#kdqtJN)*`UkeLO2N9P9dl2vQ@g2su z3*RhXfbV&@pQ|t1;dlY>-Eu|(`q=3DE=3DFE}ddFEZjv$N=3D0yWn@JQhv61H@FQo~JmCdjhsgZ^+d*7PF4}Riy_B{f+brgOY7aP9R01S^5_^UA zUJzq`e7mN52rqRtV4hF;AG7DYd;j@CRD>+(6Lk-Bu|IG5Fc=3Di|hCseyf9=3DTjke$;`1o8#IRRlyhil zpi7Cbc)|ht8O*Utj{9lMC55@Fc6@Xk{lu^RfNhq#jNMb*>1m;JC9h+D^>>=3D3|K@%; zX=3Ddw-kxr=3DbZMy4E_%xB8KlQvq> zUs_4oRQrs;bjYCeGWr{^pWMgn?s}Nz^?c;|7K66k9heKp^S*Y%;@A#(pyMjjGI&P| z`t8Fy$M<{N9zNq8yO>91zlv;68)L@DN*}PpcL%HIzy?3^)rqvIe1eXc+5MpK_wn$i z%@%kcC%pTlp9H+?2yZ9*EbxUvFBq5E{kdCU=3D`XzD(fxA%nh~?z7jbwjp9|V?g+^A8 zk8`5XwRpbC-CmaiF?;C_`0#5fi%@QmdXD^Cz0>Jy&BI#jZtS(N%-xg| zI5XJn!(JZeVj*Z1f6s$IL2@*~9^zR%Bw@z6uJ}~ZpNg;3{zUpQ<2S7%+$G`Bmr>RQ zBjYYbIT;K87JN5h?=3Dn73Xi4OuzPA!Ix4!})AwrGfqdB42pyT$#3ex# z)OMs=3DPX%euWaQx->Un1Oo=3D5mTG+lhH0k1#9D4A;X;oTYJe^2$WT=3D2gOd~YC6U_N-C zdGZb9;?GB{OEGeEbpqzyo@&EmT0WsS!1%rKz_$G3m_ToB>EKphLW4yw@mS zhvWdPp>4`oMW1z-^hy1JKCfV#a+h=3DWUYq~n$GNLO+ngnQk2Vehww;85@Dhh=3D4?Y8V zmWKt+c(uF(OzkX>z6&6~z&{tQW*zXTwhiwp;Cs*|;tx9?};^hg1!T! z6<^SB9cj6%*oPcE+|vtW{`2fS7=3DzR>wK z^2oiSpY_ADJf1_qI?n~!k+tw#!vL*q5qfFESm7Tb&6w7Rh3t#?E9o#+@yeo1)iW@(=3Dq0@-ah^uHGJhwZX;{_`5Q*ga!VYctjFkE1Z~X) z4Zt2Vg-1E>lz+gNL)$(QvkTj%mg57>6?4w1_wX!i#wvtApdXq~uvK!*?t5)|gWdXA zk_Q~NE`IDzuFGUUkY~c>&bi7v(X=3Dfq7S}IbnpPDGpJT@QPv`T-#oz<*Z2i*B=3Di%9S zKC80YPph0AKBs=3D^UOpQo<#yTSdb#lIB0eiP>yk^VEdRxgyUs%1sBcK$qrvZeI9ISC zXV!OO9|1gGe=3DqbiWG?8N^L2@74fRT!c!zx!p>6OG#`I`R@lW9_zE`>-M)Hrsq19wsW4~g1x_|lz zxpu=3DE`!&w@jb_X}neWLD$#}%fvpT24CW-A7evtW7@$SeIl9?{LGu9<@EbrPtUy;lo zfX>o{=3DVDzAY?JG8yvH3WnP()<-pBSye@d4uUV&o#B;phaJM@OfXWiQ_ZAUT(vdzSJ zx<8&0L*RNndl=3D8U(Y|BM6aS|E=3Dh-IOQd#)z0{r0np9-y`&*SJ*x5a#?&nMu(kAxhZhP464 zh&F5(Koizv)+7A$qr(maoQqtEx>}wQzX9i;CI5B&e6+_i!;cQEMfy>ZQydfEdx~>K zJaN8212-t#f3yzWiCvHJ(6`9($$jT$_s7|MhxOFg=3DzkviXeKOJkHs*bT#v=3D{dMxF9 zYgGVk{}y9_Y`^R^RUf}`EgSwl)iefc`=3DF5)pA6o1Te0{^v8NphmJXp)jvr;`p=3D*A` zXR7hdx;%f#InRVJhXZcQacvyn%E3wC8EpoKm*YR!@~V0pqlf z*`MMk$29HBbMQ<=3DusREH6ur&&N)|eQto1SXG@)-dwZY!KNb18^1^U(cci`BRI;EsL z+*|cv;u&e94S72v&M=3D-olxyK;j{8KLM2*uO8$kWc7lpo|n(erA~hi4Iwo=3Dw9! zZo^wBbW7gt^k#ts zIesL5FL!uDs???S&=3D_oVu?=3D1*7i%eka{KC%@ub`1C+Fr4wlYW<2sPiFUr zGJdQn{v~U*uz?(e{{amb_8|=3D7H?j&F_?xz&mRBiywiohdmF?kstl_5vM?5pw#+?5F z=3DR*^PuYnU!q!-UU!2ezL63gmwuIBHP`*zE`>%JW<^F4hF?~@0U@MpoN?!JokR2y#5 zZOJzDKB~yuUcUxR=3DdpXZH?lkQ*1RJvKs$MHJPwh_QL%ylbywBXmK9MigQiRIbzCo&Fnq;dfFdW7Xt=3DThb{OZXxydIi2QkIMHr96SO3ijNc-3-}kK zD}Eed{6`(A=3D(E>91I|AnUxe(5dgvebt-H5f`JMm$S`cMrKOO4} zcGA3KaFZ1bd5pKJ1zLV3Lx^6vTxeT_*b=3DdKRIVy}JVcjd!;|Lq_ev&RP?CT&0Z=3DlUy|u)QDOYkLRltkwr?JHlH6IjLg)Q*E7j z$@wn%K-HzK^DX!3S0PsTK*+s~Je#lD|F`e}+Na!X>$(xP#fVPvw>7?uxCh2dhe5lH z5npV$0-2Mgd=3D=3D1u6W*wco2Zrr>L zcD#&hUgPG27!P>e8l&j>-6-27d;#b0BlyYB343Q*zr#E3gEKC}<6GD4QS#@V%YrDZ zVVbC6ny6uVx8X{;rx0-Nx8Vue@X+UsJp9iymY1|1FWVezD%*UZwQzV1VC~CxOFE1f zz)R`2O-|TrZ-Pz^I{u}6X9Lfda-zqx9@n-S^BHNs*p?d88rZ-x$~S_$D8&!cPk2w` z`5oXRUHoKmkKkC3P2>z^VB@EZt$$ErP<$Prf$n!+V4J|I17r2lBv@QK7jC!WJjm>4P$e?EMu?~Gv?!Vz#ju$%Wh zMzc1@LIv1U!d^y$+b{Pq68Eq-CK5hvWAwLmlrOq@TdGb%zlYc+$4`8CBH7pnd%KR$ z2t%|S^aYr_Wu9X2WFS-sTj(CcAHUI4jDH@MVZC_a@CyFMcK~e)P6?;j@Sy4By6af~ z__>~9w#j<1V=3DCB=3D_~8qN!>?rZN7wu$=3Dq~A(P&icUi|nE#KWtNSW-4%24cwh4{4g;z zQ21eD)1{lSeiNRkv2%&>4qf;hz+Z4tMVf0o)xZm6E^>vZ)kaS5sEHVk=3D%pAVgE~DW!_L_>Yv=3D%nk0B27J0kq*5x@JaG@ieHGn4yB)eEHo>+*pj?F z#Tb8I*su?48cng!vSHs07ami6+}8;lLhm-$B=3Dv4{4dUiELf5{@`K;PQzijpuq-oU6 z4gw&wzl?z4lYlMYysy;eXSt_vosv7WFHpZ#@xVWC3Zjz6BV`MHBz{e6vVRO(<$a^1 z59$?VLs4HWuUbL9YQ~4nWg7yIb@)Bfr)qoKEO`!kssEJrX3K%5F`JcN;TMRNa&JD! z{b-bjtUAoNIy)9F!E2~9gLVXYE3_E<9$I$FojZ~2r%7wHEg-Y7m-yB~_Ggd9w@zdw z&xWkEWh%~OW@-C?dmFF;4xi692(#J!&-EJKHVrRw(QUSE1LV=3D)d{FJBTH9>dD>(>g z2dram%&OI_|GoPD718%Ill$<)XR7hXA0Zrop_Fal+!SLA6$qqU@I0d z9?Ua+^EUqNTeo?ecc7%wvzaiM7~p5*F$c_-VFz(RQei>sYI@ z=3D~DEGd@PWYdC@VRV&;MH7D{_N*gyOH4j3jA1~rB^Mb4nV>%fD0?(Z$ZYkm^G^b~oe z^>_9j%88`BdZS+u6(~!Rev#pR_(f)7T_1p71UU2%KSgSM-7A%UYRp&T8k=3D_nPd;hqO@Sj4b zBX-&^`8t_k_*a`)uZ< zH{*jxv5bP_4KIIV-qc=3Dce6;Wt=3DcaKE_4M3jd}mr`3%pvUmIy7eEvxTx*4JYa+fc{V z$ljFTJU&|HA9#C8ViZA#_e(zezSCJ3&o`28blJgt<_pX75bRU>ir`o1eVx+ruMgmR z&Uxov=3D&3YyKRk47P;|Z0u@gfVDjgfMl#Zot)VeijcK_otw!txqZapE_y;_rgTPZpf zdiI36*{lng`NdBnjz`mGt7&;fuITkaTXKES`%bk!P&sIfjP;4b>j!Uee>khT?GogN1I)(N*h{DzbNVv)%^acVB^QT2 zH7`cnw#|s<)jB`myk|9eQO6K5{=3D@)J=3DAh571z!peHz+(@JS>QM*fW)UM9Dir9MjD1 zTUPQNZFKG(z)oL59Ljz~gHB zlChEoJ+O7!_>G*x>8lHym*GA4wYV-s&gdWf-i%+gglz(D*|SHP$63Cqyt%CjZQ~yD zzNoW|&z6)oFI$2>8lx3DrhChD*46oni?DAzld=3DMPX2Rp>Bh8Erj!T(zS-;+@=3DpqO6 z+;af+sKafUL3o}AJbhUn@Nk_o6J=3DnxSTj>#MyzF#@IJ@=3DT(r3j=3D4AB)Xpe0-U`hbSXm(;me zrFs2Opza}mqKv|`{-o!+OOLa>{to;NpIA!1Hgs?Ak(5lu+A?gs<*6PX zPUsq|-`PQw0sLGGr+FePDDTK?R-P2oI9hkaf+ zon=3DU;;|DrNo`R>5AN`l_v5bu$jTWDeWNc%c9JeSObhnbe*be#|8HuFMZp#|MDu1uLSi{c(Tvm(RRZLFoJ*2 zyot|@%O^QX4r*2ymJ!k;)ZQ#hM&axCWS8+ z*!*Z(KgtZEko40=3D+TKdP?sPMjE&XX+K!)`B%#0Vj$+F~6>RjsBt3hLU#E<9&%n5xi zq!s4+bY6x1g3?PYeP?>rmhZeX9W+k(ux?$W=3Dy~`WPqlS`KCzHn?0|&+fZd!C%C0cD zx7}Hd9C#=3DP+-?^r^nW4?j`txEm(ZQ3<wc+a!8z{Mk%uw*!xbZA8?nu?Y!11t?`H^ue)tBi$#U4Ku zUD&dja?@^~>;LdlBc~-9?;v)f&}rl}*xtjpnDG*kk0L)U=3DP|pVfb;GH+=3DmJ+`)RGG z`m`!Deu0!rp#!0N*iKxZZ?XF?^%sq4l|OO3#ol8$ksO4`OmZR|DU=3Dl5fI zz|lebuBo7f>mt3+(UOI{1Y5xK(9Jz!2SY}!Q97+|G^+8F@MBSKN8K&C0cY*g;ETb& zuz@?ojfxidm=3DK#RaT@qe!}Bye_XDmRu6ao3xLY$z*UyIyRUzx}u#v?WK|ZIQ*R`&t zVB{z8Ee1j3ex3zragFG1?qEzfXraFv)9EA3_#j2Mz$@ashhklW^|E!qzI&GUNWqWv zE^=3DVy`Y?c~7kj+ja2?lRzv7k;Ya6o4^BU{R^Fjq4|EREWYtc`je@B|NpcVF$+feSQ z7(d#$pmAfMB6Lp77|{+~hjEV_&hX;51ML|lcRSiWf4A?Ss*wAqcs@B4LEAmC3arf@ z45IJb-pAVN`mdQ^xj%Ez;QW4W=3D!fmp1-Evs;~tkah&~_4Di6oU`#hr~TXH);YH@k0 zPfy2QGtRdSl=3D+YTq9wNkWy70V`ZJybcYn2e-T&}-e{A?c^9JjNpTyZ3bZlBb6aB_H zkKWkgiWam0@7LzV@s0W27I5BG1n~HAgcCUze|t#e9r}>i+g(cDk@r23(<{|FbM4td zRHAI7z921Op0O^EuV*>X-T~67iq(wU=3Del<^uE1VW2V`VBXr(~#TmXH5Gfp1vO+TRL z_7*dK-gLH)`j}f|+4tOO+{XJWyeHmi{3P1kI;6JY@^Q7Hy@h$5Pa4Kd++z>?&n$vp zg|K36Z{KY^3G10$?8m&J?>44iG@bIAa+!1)o8FSk?;|T)3iut*Zpnv#^AP0-WPs=3D- z^NpqbB;1 zau2YidBPd612c?P)Y0;-6}g&hx&58`+?Jc9E1zZSt<(RT@Y!#&8!SMt3@gj4&|JKTKlnbOSj4w$$T9zptefrvf^A4VQogzAu`@7JYz7EJl=3Dt{Hu zrH|Q;(2>=3D>mFr{7N7ntHDj0|d`ZwucfKPK3{7GvV9}+DGf8$`&zy zIQ?HZm*BVk!#=3D;zO(pJR&ImcRzpOX+=3Df>4~17dHi#T`mKLy-?&>O(mbzXI|B&tm&9 z#$!e?&)q~XAKnpn;@=3Dp=3D=3DJb|(7bLHm4>CvLrpHUU0a!*e9}Qu-*;4m7R$FOC{inPG zCtL8Vbq@D(jsVtt@X|r}lCL8!(B2`1o0o0<-`0rO?tt_5Hk7CCDMmY@S48*Ji|*N$ zY%BN2XsZv~lDX=3D!WUerGEAWV)gfA6s%K6W-soI{Yx9K9+FXyx1-<8Y zXCWj9Q8DPKPnR{kL(^%8_AM8YZ>gg^)wwvMd(P9Wr_N}+G?~9aGgxQdwq4EnA<6L$ z+1FwFj=3DQ3~46!2TDWB5(kF109U%@#@@C1Fx*gI~=3DH_w3>NA?YG2M@l4F)lzC z{D|+evbxvdTc=3D}KRX^o1Mt=3D5h947O2iB)O z?@=3Dd`-c|g_Z9F?~oD`3tX}=3D)da8Q@qZG)!!;~C{*koA)7%sNPZh6mHH}M(y+Lmpmbp-iJ zQgS2eu>_nm_t^YP-o-vsa85O1j6TJk=3DdU9N@00j0$9agJV{YjOVDDm%7dPDh4$heO2lB5>~*wDeq!q8X~@T17^tYP{@r=3Dd!7l1=3D zZ-3+)gZ?(H3#CocvxXh=3D?5rsoCz+tf&jAWQ30}7MX65W2^loS_Vo#>oXZZTwWYZ$r z=3D@&#r(jaA&#C`=3D0xtFx-xP8qd9Vo_6!rrs{NVH`Q6!}fLjd|7gL_$uZ?SS()c_Nd7 z&=3DHZoi$R;%r&{%95DjAAWfkji--hc#+0`f(5YxkfS1HpzLW8&l#W%2MJakn_z0 zpO9(w`XSrGS?U`6{UrX*#eJ0nbZW z9&`sE)w!dAlb`#npYjX}*VxRFzrC{&V*n2UXPeE~bC!+ zvQ_EKo_TyG{2p8X73=3D6WI*DWbT=3DMfq%>z6I%!IO+rQ?mPv{$@O1+7UXj zp9hV!llQ;lYoxD6V-R3|){I{)`i49|e=3DBW5Jje$)147wdYZ$H)|l#j3x9keS!-!9sq%I1Am#wfUv_=3D#H!>M}0a z?O6d|_`R-YLKzZkI*oT7f`{8X@5h;@zZhAu`*F|3Uy!$yZTNXUsL@Kf068(eDm?@ssd<(pj@ScL2l6I6uOebh2w{i0~wZTmlwm%;+Viy=3D@ zk0mmJxKVo&t8NM!pfA`gpdrkc?PoaSb%l?gYPoJ5qK^S%uEhGa81Z$EhB05~g;pLY zY$`NzYL{i~_F&x-T3()4yF6oeXjwr;V`E`n=3D&Wsitl4iZv(oYz&+oH>2Kid>Yo&{< zXM54fhCdYjIdc?UtF1_{Vxcxe(N28(r) z$zuZ24moPkh60K@Az+~wd*LUxN%NY(*qZ^ZfN0?g7!)kD){D1rFSelJS*Y5JZ&bjj zpb3Zti_9b;bN=3D7&+WSm~h&Pe?5 zk@<@95$0tVWg?+>oR_C;rfCU#c98+-vw5UF`ag)(QQBd*_0U&FWxE)f#9mp650xsO zV$94dw*26;^;lnuzDMkG16O2_Mge;P^tf*`J@qq+CTEu^Ja(?(oDY~~PSg2t@1M0F z{Ox|8y~O)L$%r_ z$ZYc{P4AVo^MTGmWJQ5Da78U(_5$W%OwaYTl1Kh%k14G;{OLTbpIrXWFwTc`q*u3r zC#3YXs#3@YT-X;HmtJT%jG9yr?L0;I&hiVI9Y)nC@Wa3rkEwbxUt~RK-%6Wr)_Rk- zaR09=3DWA=3DnKw9-T@6i1j=3D-Hoy+wM~hb0W*v{Rv(AeY5qsepxRH z9-9y!NKaJhuaW*|UsmtM7=3DmvC)&G$~E%R+hf7R;#rXG*|-My~jxZs&nt*^FuBlwBn zPQ$&OV+wKy`gbM4_AB28-%WjN74@F zJ@`#bceDKP&w@Vp(VKEXt6uuparwa~6K}Xo%6}Si1)jOC@jfq(W-Q|vvc9DNFjQua`i%4W0)8{!ILdU|B{SL!bk-i80 zj&lfUk2AiY3Fj32W6(dGW6q0DG|G`WoVdZ->-kN_Mf%gR{f=3D_f# zs+@y!5m^t!dy{60{TFOKQkJYYE?u(6=3Dqv4!yExL@&Gx=3DB#(3{h{mW|4p8h+5mowN4 zAaCj|INy+df<6VXA9&ui@3y-ne3#YX+V^NZ|xQ){l_CBJG9DtMJ{g1oTe7s+>F3zEq@r730bGG!K$9 z=3Dw{>}3ir}a{q6&2Pn!rP6-j@DPgT6W#BX zG2u5p#dxsi_GMDhk2>f7=3Dy zNXjQ>t|_PO)9q|G@?!5LxUm?&`*7lF=3D&Q< z_eX}KuFc-0^303rXGmx4*Y@mS6Vl5VaD525=3Dppz=3DB=3D4kMU;AZ3JD{~~D2`9JU75YF z_c8R{yP)qs8eHnOg7#kjd^2)tm=3D75+b|QKl6=3D1!m_J;#kj#uz+Si>}$)}n2|7#d`T zo^4b4)p$^QIB?}TT+yYr{iB>O?Wn!?$FTclTb>pAJ!u7-l;0Vvx$$Kqv(YlVxHl(D z@Q5=3D*uE3Sk%=3DSwfSVs^xVXKPdHw(WGr1zF>5+4ba8!}p-GA4-}TxZ026Gz*5yzqCH z3wiRb@)Ypp7W8{_JnY)h<}B)ZjYMBXB4o<12CxqFDfioBWPmFO7UllSR`HDI}6*L z?qnM2%gD(Ie7{INLDU2Lv&d>h^SNMra4d2jx5uCvIXTgXM7mGsvhP{1`)Ck$wO6*O zHP$nGnTE0h=3DK0eMYx4&E?f0s4t>h(m4@+1k-k~?dIBsVij*qXeQ@fTj9CLQWn{-bl zlJWTtI8UteA(4i2b`Lo9TJRacJ;#B-3b<@|2`k`hB%FW`=3DQ)FofN?U*yf}>KKktU| z?zfPPPZUOP(%rKt6Hy0u5_gen{abG{(k5e-`mreoqBOUkFtwEin`$R^RMuu03#zhS zU#Q1-iVp?Dmed2<%*6aAw#_n6@0+?5^mDH((7&InqW?8!=3D)E~iOM1>5WyIB_wvwJj zKB#`yaH_Rkf9h2*ucSQ4v^EV**-Lxv{=3DZUmG^9$(`5KLO-ikIamHt|1wf4|K9cG+2 zY5E1{tn~U}dd&KvjPs98<7}h7mf+ZH3}Rf&i5(Xm??H}hK-vH2HAbP+c&j`s(NU9{ zf%WHId&z52hkYmJW;t_~bl2%_e%t>U;3mavPoBp1a}98Eb#SGBhmnCh#?zq#a@l-_ zastzk=3Dit3(zif0hId0bda+4W)_jRUi7;K~!dg61-OVf9_~4#&9gzjy>X|iUzCSllVvL zGheAB-lp7_R5ayx_?tkvDybja3?4kOW=3DL*yy&`_5M{FaT$4r%@L^pL~Gr zBfp~lfxHR&2frD5O5|+vfwq*OzqZ$j$}!oz$LjX93;H9oHMW1-G45cKHnkc3QRfP@ zLNDGr*$lmX#s?tU$U};)FzXe7Se_^h%udp zJ%IRJ(p$_N+h9h%{K|(+)FUC?N~U32IfE4W@;%0(?=3DxL~?6X+P_b2CIl+(wXIO;{l zlUCf;O-qsHEsXVTX5>s2!}0xlr1juicnIF7n(e(0NSw%1Q_mt9pQ!von2SHQTHV$^ zWlncBVZYO__Oh`5f6$&oP`Auoz+J1W0-O0d9l~WTRp@lAD`@`9!tyNm%zE1D^zBQ> zJ>mm~&|U`feG#|0(poDA(mjnu@qPyorUU7sT!qkLlw2Gn`d*pSnBW{`=3Dk-l1o-D> z+`TY~{fvE%G~p#;+c;pD+3pZ|%H0C}O*6)k&v9Dx4$neI=3D{Mqh74eY$P7Y>yl>NxR zkYBG0Pc}$6`Rq{P+ff^)`s2yCJ7d5SSA{FnZ0|3)6PYUV(L>Aw+pnHJsScYVb)G@# zIgHt87yVq(UKwk9$S!KGl(9%2i*KPT*dFAuOuaT8B<*YBUdw=3DqNC!Jpqnz=3D;%S1aJ z@j_b(@~!MaSo?=3D&D4eOaa&O`SeVxfWVj4!^p6pcFx5qiY8N&ZDRt_!MZH%Zmx-}|m z=3Dr;dMwfRcnji4*;MKw1>@3JW)2z=3DuGnCsZjyvv(?otbqSetmu%?Qh^ZQ~6n_ggzkd z7Q)K1xaS*Fo&o(r-$gUA2YR#84YJK>`=3D8mT)zh&LSYQ`i(nPE%D zZ(bn`D&R+rdq2>hD%w-@3)~|vXokBss4^m_pL_=3D8Ru~Da8}oag$Hqga zQ|fYY|FV5N>_@yV4}LS0obU30_O{D9c;qXUQ=3DXw*(Fs2uk&R1^fnE}f^hE*fqeJLr z;D1bsBo$Q;hR*SKCo8LejbHHNDILfc?ixlIa1RCV9E49dgoV`o51B);kK_bitH5V2 zpr3&!6#bk(&b&x7d~$It{Vde<^QrWKrk_d0GeAGppr4r^fPOxcdZmAGFDAx=3D$T?=3D@ zND0d%4(o)^Ty-UB3jGCL^yQB;4*az_pFS6%M^&`bMcb(hXb0tu#r{`B?R$1DW#6%V zkENpTLib$9a@dzF(3iC(jDdrJcBrk0O zO$#l;7B_PIHOA>S->lmD>5UANwhC`DaumNjEOUxIZj^5Ms((>!)q0JNvbUKRddgRs zAN2h&+cA0|`P$tIUeH#_!t>8X`Pm>j#|wUT_XL&KYH57N7!ie6!|K}*A-szJE4`pg z!F&86<`a0K=3DRw(%)EN0-1H%cg@+p1QzkuduYTwZ64Y zoPl@maJjUf@sTGFaJ_B2DN~k(1%uBMo<~oCcjdr$EEJo}gf({em~?w)vE| z?XwHqGeQ4u1%8vva7U^SnYdO0E$yj(276zA_^k*{FPCt^xzWUVBHDkT1>J`qun#Ma z0>ABjKVo|BX~2&15c@#Z2f7bXX2^_uvWjUm&2T-W=3DipC-@7Q!h83C|p+IfF~l&g8} zg|yRG_!03}zlgS7x4vq2-0=3Dw0bM6B^x^>$cA2}m2Cnnu0>wna-AFx!)91yx|zT|7N zEb=3D$RH7)rhrp@~x*ELxoS71;Qd1{5V6>Yv$jgQziABQ}w`8C#0X!FNHOBZRg!aHc4 z^EmsYyUp*7A}mpSi+>$k4!Kmuv9$Raw)vLB?iOil4YKgLh+ODs@F7CCOYPJ74cxio znu>AJk8vn3D%af>D`O&#G;ZsG2@}?B@adhqnQ#Li(ob3jZ7@U2WUP~Jp?h0eV$&YjRcV^1s`PZ6`u@=3Dgn~&w8e9nX1!v_zGD*^x2c{7-{&@-l~ywr%R_5A1r(mI00 zMlR<_@GX(k$e#g&#|(#rp9;STEzi?!!dk<8OPA-Ax}CS3DD><%s1>4t;2{PEq|X(4>Ba?g9M*v9PkuoCEO}R->Q8<>9PelF?x_A`AK!6K zEAkcV!TUe)-o`rc9tKRxh9=3Dtf$g5wg*IrYu#a=3DOK)d${e`<=3DHU$Awlbs~qK>B^)R} zi1)7u2i|M(evWY9eLmhps=3Dbj}c#oj0|3UaP!71{gD%n>&Z;2I^{CTF)I0#XdUV`~i=3D8Lq8Z`GI4TI=3D^zw7+Ug?R0HMDO*cB0NI+z%ON(TXi2mzipL> zpIl4&5J2vmN`x|L)RP%`g>wF_l z>!Mna|1y*_A7NN`bncLT2t9J04}~EN{t!CP#Kf=3DB@qKhW_BlFVkBP5U@#;Qb6;HH-S!M^q;O=3DvdM6UA|XZwU6>mqqp67)QhGF*qCk zq$(@k{rFy(`=3Dk}d*s_ZE>QIg&W^R@AT7HB~f2|Mt zwGP*Y-0^@r3Wqv(yHd4V^Mo-YF#pUMaMAOIED!k0?B+9_Z-Xy5K(pgWvxv(AZgy7A zX&F8Tc50Kek|S(qPx~O|tZYu=3DOH)4a4-ub175}W{9!E`uS;>A88P4kH9fdnijd|6t z^PDmGm}vJabr2Wp(^y_X`A}fQ-nXw}o^y)j{C+o#9bF2(c~08MD;U~?cAe1IAJOk4 z@&39_I}&L}*MFkrPOE(y!)fo}3(U*Jc^|^(uim{Yj^Q%Dqn&Is;&TWu(m;xpCrZDu zI7NTN5vSd7hT1_>9(BP)ZLbIYcAfFa9I=3D{&=3DAHm>?9YbVmD<@}N!}}O8zdO>)g7VHYBd58iuxQ8P z-g1`!><)`}95m{83{Tf~aJ}6v0_#Scr--lKZa9IbNw~wCdA*Rw5-5*x4G*~E%=3DWj0 zpM(F=3D4q<8o_7Rr3MZc6#f8g|_`W>aPFNV&OeqV8(675)R%XBei4ECX6x{P#|u}YPJ zajNbLrv6Z^mj^wKdZ7nBA$fY9S+4&ic?;K`X6R~JJ5y(%WuwpUj0 ztueTwY!6(uip-3*HW5F7Z*HS1&kv8N+wPT-xb3T6O)eJpN9+=3D5*+5+{Y zC(zO)Gc>ZqhYG6Opbu$+ju-L}e4mkjq}058dXm4^3RiAGTm#ChADFJ-?K&3ig3F$$c8d@e$pYzXJ5ONzq$P1;*}3Q|WQ6t|m#P{}GqucgSC&@2!8m z271_VgJZU$@xk}u3>NlKU@%^h;50+k>wL)T|1I`2M|h~Ks`UTT=3D*{*cem!gsc2lHF!8eQ%pX$$tUK+|)fZ@xOu3EKkr|8Yf%&p#G2dgpmapH|mH z$*3y@GF?h8Y|yC>Hyk)S`#J87DaNWMysX$tQ5OY8Px&y98-;p6t$>RVf| zKev8$OSqxGkzQA^GF7QKG4gH=3D+_HVq2m&_qNG4cEJ?|@$La?T6Z_Oe%!f01*E z%n^e|C$a5D!2jRyALlSuPQE5BpYu~)=3D8{U3*~I(n>z+;CvaH+)2)#?&j>$T*0bxkH zASVO!b*0R=3DvvaNhpS?nKFY{%P-E?^zgWV*iRv6BtruhN=3Db#eB4j+8?=3DMg{&$Bw zVTO<8F|M0FPPg$J>zT9Qg&a>e=3DRbh;z!gSs%%@GYm3M(}MK;#=3Dx^&)8fJ@?){enJA zulw*%mBeTL>Pf)sCo%XuE%5u_g&%nAUDYSrefG%?RhQ+p;a$2Dcnu7hZiXsnG0u718I7c!Y6~({YIwBBPos%XK%IF_T*WVlaMCE3=3DIwXP$<&!ZtDk8&s*e| zlzAzy-sX?le@8m<7jM!{spOlS17K&{LVuEMV@;R4vUbpTw6$Z5&=3DPnFctLtjK557B zX#WdS{q{*N081HwO7GSfds@tb_GemCc$?;mb_3i4Dv>{(`Ej|nypEFb;3 znfwahn{x`}dn59PW&eymyR8sqgBBFUCwk@)H8S? z2VDq%WWqPX&o(}!>|g=3D^-iyIs=3DrMLd?!3yIbYlbhfwte3?nPG1$=3D!xW(}CC*G!&t~ zQYVqeX6iis_4k(hv#k$vdi~jnJ?bWRGiA9r`s?~fPA^Xe#{6kL#$c=3DJ%r(O;Z?k=3Dr zc?M)@XNmmQg~v7j*WJ;0-q8>=3D($Cdzgp13go-p7x=3Dkf8=3Domv4!)QEfWZj%a8R3`W5yDevEa} zupxR8tLtu6=3D1`#%1&eVQ>HF#Q4L#Cdr_&FM>G$WBtTP&xloX&YFc9geZ9_M8JlxvvHJ>ccUN$NFLO1J4>S6F%1pMXdN$6w;o?%^5j`X|pR@8qh!+^i1fWM@#V)t=3D)Ioj3Lz+hGFQn0qpu*{}LAq_zL7(;A z^$q)p*dy*pCQPGPFKLoxkuHI&XnClkfqe%$tp~3@!}8GA>AHOC4xl@=3DZdP){7B7?0|-e^m5!cq`K=3D`bs{f_`|<=3D)L1Wwp|7uINjXve(6zpsKO~>>1?)UY znvOb;frmDGlX4HEcs@}cUMn(gZmqVnx}AHdT+5qQTdEHUsk1Iw7(W|!LUE9FPn0af z8F{BY9*6A*-1FKC(XXL-BL9Mia&4Nc@da5{N`VQ zOP(cncoUS(1mr~P$)~u#_qyM++_AbHXV4jjZ{Aq|-!Jmsf_IO8-;Z~%es|*Cso!0A z&ndx?S++fiq|-4z(ly*bF5A0#sEqNA`Qb{c)BRR1-0<@Go(V||*(?*_!rhaL&-#$J`-SXB)E4qY+Ugic?@(nh2k#&pEDZtII> zv;0F)fAZ2zi+ihndQZk`XBTN!WZ+veVJCimSgZd`)LmKo=3DY1j|mM}I(s4|qVo z@O{XPs;ou0pV?S}u-=3D7EC*uI)@yA&=3D+M{7sb|f56;1g4U(^KGGEl9#A-k+@GM0-u| z-VGTMGKwv$`WImisNfuMywHaXS|>){oJm?i_>BzLbdXLOD661;>v$iAOTSWg8yNnT z8JgS0FpN*E@pBI0l}}Vpj6DVma3+8c8m<=3DnHREr?8?7#XFE4SVVS+ED_fFxHJhKD- zHfb{{zOg_T^oO5`F;mWX`fNj8^XNDG+hkww}Nz`kuNYL#Ka^ z?-GyvEEi>P54?%E@Frb59Yyeo;vVVg0}E$%7pHaO`CS>C#NoH%kNe!+G-K;8R}u#5 zXf^DWwa!~|+M%oPCSE?khsx0&KkT?PV`n8NLut4rQ;6p;z3mA^`Jr8)q+>k&WO^xr?9G9;b?p8T8jdAP? z(D_J=3DnU0IV0pF&VwKE;ki~OVJdaTJ12z(zTzP}A`pdsw74W|wT{xPn!?}k{W_SNPH z4}`6Fhs5uDBLQ&2=3DJv<{Gh8KO5#idm$s5~HXS^BOx|8s9hrdbQl7Mi*Wo$o!2P{QW zJ`O+r#p?Am{u)-68=3DE1=3D4fY`(G}Ni)X`>P{*k*iN&;cca?r~;H#;xH#`leUQLz_8v zmAyIVbmHh8;hm&K&flQ@+|CbiW@jDl-cdRN=3D#WNSVTRx8$NESIX87GzeAnaHug>;m zHX(>lly>d$Yr~DRQ=3DTQC7z3C5jrA&h_5+`aPoZ0;e3(?k`s6%`*e;DI0erAEdvlEs zg-X4!>tJ63Mv>cym;voS~Xa)9TRrmw;; z`vTt%`aWKj?ZEvc@LM&bnW3rI<&^Evhqtnv#+Pxc%R#B=3D6ewgWuGf}QM8v?V9c1AiNBot0G+b8~3Z&U3Ul_wHC#gf(Hp z*@?{Sf}BdcQ;tO)E0`bkck7u!pB%F?XBv*g?)maftV?=3Dbjy%-+l+gYnR^PO;esMZ^ zts0YW2p*tM$9Q!3;6ua{ych8f<6qq#BU$j_gio4b#xLkwWK}kBqJHVqBe~FneumC? zSqaYAc~XoQN{j`>-^nh+^GGKAUf#*Qt2@$bv&~BAj8Eg-+QGbgjd<{ji2G=3DV3+4Wj zdPC9!=3DCFCRtM(>zRI&Y_+jh`6WY-1TC?hkSH{q1b`}I{HR4QHzy__5VCq}%2xX)i_ zzRVHE5a{up!8~Iq=3D?nO$Z^LU>&AMLeqdHj1id5d$pa3|?cLeV)d#-V9wL;}K~cGEM^{PN3g^u&US?Uwxo;7k+ORn2U`G&`HYu zI`COG*ZqkRPyBH2#}&9StEOfknP8cs~16&u<(Atu3gXUh@3c&ckNz z_rO0 zrLWofzFS_J6_qtFm>Wn792cP5EjXjeeeOd-8$KfuGhxF_kNhRl?`8V0(;v^1rRFitY>!*VU-l#Be3^gHE{EB1^$~`%4v{?? zj9;=3DY*bOC^;s3djarhN@z?+(4;CvDF3NJ?42bd1!!Omap;UevV7#QIf?A2jRgYfC( zdEO*vGd}r5Wje~+ZCQ(*v>C0*%COf04Zx3wJdWkLt;LzHz$i7pg=3DWq1p#Y8_@_6Cz z*^8k=3DzfZ;->cRZ&oQk?jnC=3D4J8e!Hlo zeRr63GotuJ+Y)Q{iu`U(KMf))Ll$W~fH`av@E?99)rX81FE_?NpoZ6*G;|ns{l&1` zb61}dyHcD>GfqAO-%yH1cn=3D82kw?Ryfcj^e;lD}$qn@TH{N>i6lNY_GC9=3DTnS8H41 zmG+9A!Nrr9{R`QPrw5CT0f28D=3DUwU}YMr-XuEaVh4*v4Ji+xN___02ii8jR8SdV(l3?C3$ zC65uGT;U@!7SXRcuBH^jwboGgb%fu3kT_-iu4dr20zP2pET7Hq$AZh}*>JU$E}y;h z!14wBZp&K!|KP_R`^t{lja^uuI-_f=3DnS`mV73aHBjFHQ-m(K&gdJFGE0k@nv<$Rw5 zzJc##%Uj((ij2FNrwuSy2);_%&~WVX%w7vIBg%0RAt zZ#jXJ>8v05(tzi?Q66NKzfJTRGG;w(_W<@f%uS$4p2=3Dv3y`R!oy(RiB(3k3WKX^6w zV8Vw-F)!)Bn>0A1runuU=3Dtxcj-bot9MC{{CNBj6K@WU_JE%=3D^*cIM)DyiS*d@UgDX ztmd-MfSY8rv%wl^=3DRu!jpiHm*4ZfXX=3DR441Fu%U1pY!UN-PB4gV~FHq({n{=3DvNQwHHdHYg^#$0Op#2S6ZeQq zTb8+e9)9~{UKf6Zz8Xe+qs>bxv%1#c49-#bunk~dhy6s&+TrPtUE3+QdJ|5JVOoq4 z88?{s+H12;q?6`=3D&n<}J)9rT!eA4DCns1R;Le~D<1RoNTr+AaDno9oGiaVc3bG9z- z;{2wg2HE&rz{j}uVi~}nvJ(X#b_FK>+^$=3D#Wy=3DrvkWsIv2f6Sedcuxf_cL6J^YIXros12{P2m&`7-Z(!<>!2AIZ5IzXB`Z0AIcO zalj&D(TnC1PK09)zxpzSOB;YQ`2T*_6U;LD%!fRK_RPgxMt`BCH~ZY%)R?^3-`gYe zE#t!_IJ55)nm5|!sQYMJCmJcY`4fhzbWmIy#-Hxgoz&E zfWQqrG{@Ba6VzRW>c~5L!aXSl?y2e=3Dv^tBb+x!6Xs0HlxEDMV zbOBi)qnoz%JjeQRrmYfVpcV0Bxc-9AjXtD9uD|Ge&%GM)@b_I)Ap1yVx*d=3DYu7)0R zs>}_LRnKaj#&r0BQtiU|&dz7x17Ww3*0~7wMX4_EPW;8=3D+$S!1&huc60x}8${+eE4 z&ZROBDO$REyWlUp`*z|9<)2_1YR7X8*Z)<_!I&Spk7~_EG#{}SLVHBEA>M8QP0PA& z2KYgfo(n1#XXx>?%$sm5%ZH3wR~kp&$oWC$vJK>ey~Y6sjO9Ht=3D2$k`PCXIE!CU_D zoW)MWLoXkBQRH^m44^FDnbhgpa7}Ml;F`-+8+JW{VvLx)vk?y4^+>}-@)gG9n|xuu zHxD5nZ0;iyFOqLuOuoTA@--tL*1VC+zMgOEr``E>9%nw_`CDafZ_<@=3D_L1v!@WX`6 zRAU&{cxl1$MzX%gB3IK0WV&l`@A6J*Klq|LHxYh2RqDY%^uGsupZ5&Pyh6ED)BITC zJD9at>_Wj03dAnP&;EEz`UC6ubEFBiuI~q5gOSA8{>NO{4Ehk;Lc-(TL7DcNxysMz zosSa+jt|PbC#}U!&O@^H6xsH!BaF9oB%}@cFO~VR33TDNbw9ggo>w-8mX9(4=3Dh3{Z zw)vw?TefRAL88#F5Q0Tw~cM|XD>6P9@8@G{$ zdG9>x>!#xiXn0p5({fxReVG~F9aMQE-E)!FgLsqDv%m*#Z+ynci?yquf3C6}NkzjT z|5j!7ZJ7f;OIXn+@xzk|-#Va!9)5VH`CUzMO~CsiSH(3?n4zT;S#Rqi!y~?s%Avzf z_*i78B_A2Tf?kJrxQ&gWpFf!4mqpG65ANxQA#9%O+{yB=3DN4*Gox`oWg{oo}H#v;_o z`<#>6Zzw}(4tl&wq^pAOp2?^uJts+id!ycF(3tEQPJx_7ou=3D~Dl$n4suts}HXb!le zKQ!T)kbiLhnBtwnA2WqNs(F2J#T7!_8!NVJ2Bi5D; zKK?VzJhz8}rz6Fmb=3DdIFs$t(>!*GK6b$aQUzJi?r(Q z*KwA$a?|n}+I+h2e0wT&s^VMqFl?AQ-K3r9UJ>mmT>d2J>p9+DmbUBpUfPFntcf$H znc*ETAc>Z9FVErrXXkh$vlDU<)+`HwQ?6ZhQCCShG0%fGju83JA-@NVIQ~KojF;~=3D z*biEeC7GrTXOY6qAF+Jkpb0;GqI=3D;YM}VGf`3U@HAo!0T{pvw|sQ;R@`LMCXcR|6^ zhO2SI@|uE$SPlf1|EgdHzAKhjg5Nv9?=3DeS4cIG)B%mqJ6qi<{Gg?xTmWYf~+wG2aB za`272sBnil^1CXQ`&$>YP4TTYfgdlg2~2zgdUl~@@&MpQWE1ok_tCd0YjfSw-3Q`hCTTePz-}Yxun?cNJ@`mHPS_W0-OWzY6!qbpLcUTkw)rMwyb^Du@3 z?^}QyjNK`>^Si79c0Tc^!K-n`K-y<*Mlc^4PqTk!SQqoXl^HMhl8+TR>H@!a(^`SA z?}6@czC0@_iqp{IIX)ChzEfF&`%bf#Z>yOza5U?`4e}A9_(c1MeI6`b@n57zjxk+M z&pqRI(A6X}yi3{)eq!&R6`(D<(KnClzLCA;by+Kl=3D4bmkUJLa2NOlFXGR*LcG6y1m zhu){@IiJin&wVxD2LM+MGwRs?c^=3DS2lhF(NLv;wNM;P?|3Aybhh9BPzX8126$FrZn zFE$pSe}NC!B5nJKLjyV>|c^@?vh!T7iAE zU!yOQG>#I88^rCx??b3Z=3D06*c#2@Iigs>|(EkC~7`K@uZfb{N7>fNm`)_ey(-y$wQ z?kGySr;Bf>tYy?8jrSsY}(7B$Aa35R6N;+%<$MK$J*+~m&7 z+U?HhIri>(Phe4FFT>^ofT?*^_KN>P-DA}l{K+(?lRbf72=3D8=3Dq9I8J5iPRSzpV%J& zelR}&tATky2TRrX{P7F?<~z?T)b0Kg#{Q4jFs$rnNkwxe8rb(yJ_>uvTNp3AXQ79@ zbtma{wH}waL*&=3DemdZJOT7MEsDyoafy~Evmtr&A0+uo#J^n+VM+2F!`{+DGuYkE2i zd070dQD){^$8D|H=3DGu^T(gouenR60O3*9rW9{xiR7jeIwEaxkni;_iG!Sg~q3*t>U zy_M~RZ2@ErBfWn2m+6$hhZQ9o;&biXDWM7Ae=3DBXQWUk(6EU0-oThfvKFfJ?2bEmpk z4){Fpzl9#s1sVIVLUVrDgp;SrIhPGzrk8CZ61Fjbn&ooMU%Y_F7jMa|du9s|z1XxkvLXtevti zZQMj2zU5XQ3R85okNh2T@7Tgko+_okd;nFw#f51%Mcx(M9fi@=3D>312<%m>_!FmpJa`tVRbcP zJ;60ZW~$K_I!+hY0O&JUYsK10Htggpz|BN&!aLG`s?C3D^8u(HaPI}&H|p@ih~{$v z+#1dc_JoL&VAfhMb&bH;cKtn(-V-jAp1Ody$v_=3D zl(An)@2(BkUIF?O9Z)0o6&rVBt|&L=3DVXyVIX#RDOVFK4)rP@`d!Zi+5`Pb%}p&t%o z`itnC2ASu+c%5$y2D)nhUt^byZyZfEil&5c3yf&55@6b?ny+o8o##Q48L$c<28Ms;XCydl#zg6TbBU3x^^SdmUO3m zLE!>zSLY=3DXx7l?}BU)}ez4+2`4s=3DxDe-+FjHO4EfC3 zoi@`5pMiJYy%(o({Eiu#AiR?F&i!6*QsT{MBi8AgB^>Z{+X>lnv|a<~GQL3i_>0r6 z)wM3`&c(Qs9s4S9{*iU(!>e$gx*7VxCLbE8`_l8j=3D*y+(%WbMJbCS%E|3&8K8U(nD zcOQKx7kwG8^_jNa5q*4M9K5iTY1xlxyFGS=3DU$LKEfgJ1!-aLzGdeW}4Z-?&V+~-2G zT$f0jg$8mU5B!JVNYTK5o?;m>G+^^Y&_K>~q%CB;-A@X4Iggm3@ofxOW&Fohz60l6 z*J?R_tqb3?)mVvNk7zzoy)@gXaStE!{KK9W+1`w-7Pt!ZT@HwMB5WP&f-KX=3Dee_*Vp)-C!dDdwIdwlefl;SSJ zeqdcnL1ES#PK1r5o=3DCrE!p`4SQ{d%(8qQoB6Ic#l7Z^-y>v8$E?)jtooiFpLY1L`I z@z~ue{eKJYy~e;tRJuRBr+%LjJ_LG!e3CoHMk91r@OkAGiv&!b{IQajF)-hPc-5|dx z6Mk!>aSn-#yji95rF6&n6`mq(eRN!EOxyugrZZK?^@@qpc=3Db!$P~RmnajJdRBGvAQ z>I*GL!3X)f(gzr~m~V#O44VVmvC^+)Z?oeMS**)zT(d#y6n&5J>dAH^m44eEavKTm z)x57S;aGJ?BJMEiYt`TVMtZ$fnqF-s9IHPTo;2k+?%&@Luz)zv*e zz*d>C*gEnk-CMWc$n<9W8P&f&u7&&0k+8_Swfx2S`POxBcUk3|B%d`yV8A>e?fS0# zJ#7%p$QCIF>xp)aKl;FjZ?c~rEN*f9y{!ms0sg>~d=3D=3DJh)alBdPF#yo_H$L_Y-mRs zGyI2J1%AKg5s?*V^tZ!|{8rkHI?j^skhilO@^Z2BO|%w#n?6?Mu>zmBgZ`Sb;%`TBX@5zjqN+84lY@{5G;e=3D*NdKe5Uc zxNe}U;<~XoOZz(W<&8Jea94@(*eBRmgxt^$zog+>V;kzPK{THWWChCVc0YL&UTOCs z0p}NQ!d@BsBKK54PQaNA>`^;tZ&mX%_ypk|BxFI(J)lkdPCWX6guQfEPK`C``J80< zkARM`cIfTT<9=3DS+BpxCFc%t%~lD|>5C+b_Sp)KA>YyHGX;XTl;e>Jv&HZt10NxpUX zhP@WvT9(Rbs4j|?FheWO)2|P^gMEh!fdV99u;$>;q=3DGNUf3yk~L z&}J9XU&-{u8Qy!@#koN1<+q4;6kF4|Z*U9m75&*PGZ5`6lwZ zoHJV_W3r>B!;QTS=3DNhdi*ht<3nG`+)u3yY~3~To$eh0Iz{|)p-Pp{l*JcF@F|LRLu z4Kvo8;UCQ>40;R~v~Jh*xzm6yX*Bh@*l*b|jcFi9Ze%^(ww?(A^V~$!GvGpTkrSyxcS8N`%-UxlP{ymm=3D zvfNl%^s&`hvE5DSyTFchnRf zf}bGETeIfSB*6BYdfc@@T|>BmaLyH857<{C?$P>0*pp(NqjV8-g{RQh40$1GNaHB; z|KTh@`~#d7c-iK_=3DnoX0){h~a(19LmdI|g<@Uh=3Drf$L%Ow!R3P5lUd^Wu1u@RM(fn+DnOWysH2cSd# ze^*uh1Y^493do$0Re%fH7i?*`!ALmy25gKe$311l*N&O^4$tk-1{n6(mxQs;hcf;c z#2o>xc!z!V5Zp^)lxWo$wdfH#l1m}l@X&C!cw5~f(`43A0s@S-&I-f z^1a`>Vxw18*6(J(2H-rtGZ5E{`SIO}?*aI}WOCN)FX4S)@LuB*oUeG9@apsf8K37d z;2-p}r;+9=3Deph9M_&!MGO=3DjM~s0Vd^hI)+T$(hM@u*-ry7H!?FFY`)!H&>-z*$P|R z--~TF_U&LV0_+*{@Ha^RO~UU~{Q2-V8+E3vy2t2Gn^)R%Rqji6)*br`b%V*U^G(Yi z1H14+STly77WzlOu0S5*_*MM!eCi(jQpVVhU-;^?w%`{w0oHTuM~uaci}ht$0DTrP zpJ0FT9sZdf>Diy2hRE2MeoXo1eheQ6j{5x{`mt|qmN#6L^*?q$_N~hLhx8-L!Mnxx zE74DvRh51=3D1Nh0{`{Yv4!#(KBdyUH{m!dE4k-oefX`aUWRSd5xMW5Y+K9e-)vwMue zcu!+Fn1hmQy|iVEx&4r(O>pu?uWNqAoA8%m43oQwCCy(h<2U1x{wuyCeY@yg1E0R&+HKn`mgL!S%CCO^j}%`T zH;Uol#rrSh#aOGHJ6ysz%qOSO{;_!F6Wx=3DxW%;@xi^PW3mZi+Ej14{{qzz$P=3DGv*) zKX(*njY-3vuTcp5zIN~0skm31{)aMTei?^*)0oZ)o5k$4z8Yu3b7E)ql`)IuD7osN z2l2`$x~A`0KYfqHz#w>fxZZH^4j$46WfT{6HkLI(m!IfEfx7&8+{Z#3{2*H0erV&A z3`<$9Zs?+@yl9@ab~3N%BhFeo>~c^(?wI^1q&0b>bAL}*qi~+Js*pu^JIexZf7A@! z(8Vx;@vK$OcLn2@Ux!QUn7-BrXDw+z=3DL}u$7L*%gSvLKl4bk>1Iq}Q6h~^W;u{ZHd zm&oj(S<3BogBMkrXCr%kNJPD;(BX#b-xEB9ZrI9jDW7(-XCoW<4cM2e^3QxtcaHMc zM9atcVLOm-7W4I7KVxj=3Dg2zXytt(pfdU_;r1YKS`@(6vax}cv+JkwZhWz2@%3iqv> z@EeD@F;n|%$x!f?%6zS5iVR(rWuEOi#ri=3D9Tl`1hD~~voGjP|_uULv1UcHL(xDVN{ zb%-PRPMMo)gJpPEeP`d9U@5z#_FfM%pXk1TPsqKmqK-ovmO{o67KB$`Sa0t4biLB2 zcDa+bM%pZpzBGSrByTX!o}b3LU4Gb}>@+GnKa%skm1b!5jSLs~&z=3D|Dfrs_n^92u! z>NPfd6aTRQS@=3DZPfe0HAr9aSj4eqn48$=3DrH{K$ud-F=3D_?3UGomg#W&V;j|BGOL4Un zj-$0EBa);#$O!p_XX06>?(6bmhd3a#bd9{zGn`1sNMw~eB2mUU<~fw zo%fs>`WFZ5Xh@~~L705Y3wt7gMfJ;=3DtK08^jC=3Ds=3D+aox`z6opR@V`qRa;^dF*D*iR z%GeVdy2LLQv}rq|yi_BjCfkE@ttOSeL;46dcl7n#&1bPgdw~w%Y{zRXSGNyx5GoZKBQ^gf%Y_GKHKxp zO8SpB+lwAzxbPckcZbkKH@`XMM>L=3D4oaIeCMf*2(m+}Su-G0W0gi=3D2CIJ)a_k79Ut z9ql4B#MChe(R`wHaIUcVJ7fXhk~Yjak*a<^B!VrP!Si0=3DNik<;$NUm~1$(HKB}`M` z$2m9LJ?0DW?lC9yI;(dwT*gz!iWm5f`k`z1ycw^2qVtUOO<>GM#7$s3i=3DXD6_%I*g zcQ@$T0W4r(sSJ5t6Ygt@t70pogGThsD=3Deb(k8Lrdr9c!oNw_u&} z&Y08rTi>h9Uy<@=3D{sT9pyYIZA#9e*EebAGp)f6`aR!8qP$nS0U8b;loKZ!i|?_EZ! z`zhQBCwIf)90$gX|78p7y(ijy0IU^p1wP}?N@wo@ULTS%({Qg9E_51yhCU7V8G0_T z({hR4*GTeJ#6hR#U&C^+rsEp4tZwF$df)#E;fqqXpMA!%pX?)b*5kfT*bSJWYqR)G z+X5MLp=3D$^5o8x9xp+TSFnVmR$Q@8#PxNpWUeav|ReKN96$*bV)Psq5Dxh3+8z08k% z52FuSyoo2cF5%UN%3raLdEL!v zM)3@>7w>deubqu@pXb?EGcs9cd z-N|?02XI8T&Ov1=3Dd)heHms!HAM}4S z<}I}M@M<3o*KmkS)&tNfo?jBAC>lkP9iA@#f?9NzJ%wqD{&_f z^(TWccI>^$rKa^;!5R8$LG`BoGig@@oMqM*ct@ij1&5kOoEjd`>)59Ohm14#4$%{=3D zuO5MUFS6z%!cN@+^-CC=3D(4AlXM}~oqrD5&oubGK4gY)3+m?sp!Sa&Pq)%(-6d>>8z z0za1>v>- zf5#qXC+G;c@WW0%C9fFocfxk!Uc(9AY_#W#56fJvwT%Y*KDxx?n^7g7_zU^hjdNMA zH}Uv`xt__Z}OvBv-nmzaB zYmDRksAby2ehYN*q2X(NIqJ6+vdfLXM>*@5)~=3DgrB<)kU2NLyj4~f2$dEd)7(kc3j z`aiXwb0hB2IFrZzR%`O_-=3D%Q8G>`QNZqI#r9p4Eb@XJ>|Q64F@68Qf8$d}|zJa%h% zSeLf1jKjVT+82IQ`qGA3k166y&SGH9*mjh_*Y_K-W&pk(mASvIB<_N<__TY#csyjD zdo{}kAOwdk#NnABzuoI_XFB8vlvycud(8-2{r%_RYuLbe@Y^udAA{}?e2Fl8+rArV zo9*t#)#*MlxDxw+z}km(12<(2XU#Wi^oKbeH0_;ky17uaxo{~yG&mhCREV})LP9_`wQbBs9|cPM|p z4~5z7j=3D_DVrqvkS-;}Cw|C>VQ>B+Mc?j5k%{M#QHkFhxq^1t5SUkvW<@0%Xbb;|f>9g6mEdfW^RdyR0g4La=3D4 z2ooB{oV2a21a~ojE<{&>^*iaK=3DJ)LXhjsr)j@j`N_l!3ibzz+Jm+rhk&Z1MfKdWOY(*&C7CS04MMbGKuFx&eoRRj^7_w zYMp|jjeu(yV1aD&@F*WD#{1W3gL*5J+hm^GFZ}_&l_GV5R$T$tB)8=3DNA6O!CNPS!U zv!qe1qbu9WjYiDTec0!mCtMYI2F^qJ?Q@aryV_#25_V)OyT{hgakG>^{Pud30iN(n)sAIklg|R=3DpiAU2FY}>qM0x0R`Kl5M#_>=3D8iM{vmzClQtLp2@QHi*D;{uDFZxWk8vK!3P1%%Ytm{R{c!d`9AtTdMa!{_1!r7XB8b zf!-wYwyqmzm-BIsw^8Vyup{1J{@c3cV8JiO*9G=3DLw_we2fxacO>=3DDAEX*Yvo6@Bof zt0Et3#0P~I0Nc0P>v$6n7s?u{+xA=3DZYK6{Qrj}>jK|kw$GqOy0i>k-5LfX*;90c;8 zkab#kOgZ6D{L7(zJ*;g4F2yzn<0_r9zQ1DaM)oQCMb;^3H_mtGKWm2nZ4UE$flAtX zz#gZI-#YEg%pvgi&|o}_c{%qLxxPiP5du#f3N%#gnou=3D!=3DJ$Kf_}*Tj69mfZ%t!Uv1iu{du*2o3_cHNz+FE%YXa`P`Eh08IKwq7 z%ipprd+kQRCgYTCVqVM1)8peq*26xNOB*#|)1g<3k4G zfOOCHF}xM_|J}ZABJ)(c-@9P`(>QnfE71N5C;amdhp&Eh&zQ|G$U6X+y>Eh=3DkT#a* zt%c4SbEXZGf44Cg=3DUzG2Ia{AmwkehSu>OG!Mai zF5vx;_iSIE4JVHoUaWaCShk|k0@@B?oGl9akWsbqP>z2+_Vq?tk<3)sH8d#u6wZZ! zVHMhP5O?Ix%}k8PevC0FGck$#GcwnyG=3D<+sn&((P*HXyychrG(=3DOW=3DzdCvHF_?(@K zG{UD;nnIl0k~9v&k>^a}If%n}ol;tAlZQ z9z)s%o50*<6R}>#FV>K``1J-MBl3K0aERf7e?Xis0j(`Z_zCZ>aQWArhMDF z0R8?QbI{u_Vh)nK6^LuC>yh;-U~>@ntKiE^l| zzcK7GMo+EW*T1ng`-UEN8IGIL)!XpbVi<8vXi6I7;0(pbxR+J9$_)EI@}ZG!#fGh0 zlJySOP`@PpzG=3D-K1Z*rz>%oLpNpC3gC6p<1H2W5O`hxW`e7+wv&u#D0bsp5~KTixy zpCbRQc06&6zLa(UH^FjYn~M4)e;?+@xJUpE#fe?HrXhsIxtknkZTjH2fzGcH_uB+X zUyA=3DYUhUjuOvT(h34Ps281p8=3DU-WpR5ww%*KibVlT!A8|A+;Q>#D?~_xRt#bsnR^0Kod{Bkat2Srcv$Z2i)1epgLuNW?^C(v{&S3_M>U8;e zECcrM^fAq`zJ>6f+@!`s;}Q5@JAm;}1V4=3DTa17+SY+v_)d8J(@Z9!1xi>l1J<17>D zJ;6f2t;Y=3DJ^h)U889t74Tpq?DzgZv0A;%G5h0GM6NZb;q3Z{+;Y`?-G$C%@6+dW1u zZA81r+FF_a(9W|gue;xi&h%^xVP)T%;kv?DIAh>LJ1+)bd=3DlY89q=3DiLaX!(Q3Va0! z3+nW?l^VG?AI7s`pb>`y_twotKOg$G@eCd!G)_FKxuY015s?&(bF6{i$ORhtTp(*u z29KGC=3D6}mLe=3DsvCJ{kKrXECNddd$y780UeRvGlF$hAy@?%ZCbM=3D?!+L8<7WRcC3T{ z+jb$(g4pt1f#SQ(aLsEh`yxEy!SCP+53;PU^MqooS8J+RCg|=3DWJi*~N&uwdCJnFm% zPbkJYs2ZVv#{b`WLh-w1xVl}Jp9Z_ZNsvcUT=3D0+E6y*HSF=3D`$Blr|kT?qGNu^!`j! zv(Ky~uiuPxW&09}!1J9=3Diy_y2i#`ZrA(><08^(G^kFg#``3jzjSa{kWhYjN$O{n)m zc)b6A;GsYIZ-6K9FvbPtFzhw`PXOrW6P0xk){inNb&v)Z`7<0 zPpTOu`h&x|T*%5L*iZe{1eQw}Bs@@Z57q+P%+RH07*5(385*!b{%%(7_`7XuK-i{I z4+o#uT}&SXbHLp~zFZ~zFDCqX_fgLwgbV!_JPrAH1KKbO_v#G=3De10pZy6u`2>db03 zz|Ir8B-wXD|XSkX$M!K+HvCpSE=3D;dk4qkoe<1#0TXt@R9Bzh(3BEzoa#qyU zVoaSve=3D)OQ2M!sbRmRX8JA5b{eE_}2Yc5uVCrV37&V2Q8%9*ffse+Al19kpd?g_Im zX^Yf$FYM~G<$VxrQ4RRmNQSSZv|zE3I6u?qg6}`r^*Y4P9(;y2_Ji7rlcs9ggbp7v zYnH4#4!31T!w=3Dfwz}X(ij_Kr4c;8kqL)Jjs3Kjz0fwj$}M<9GTe4@h76Yf9d`sEg` zh2RT1q2Ot&b7^pGb7kO~6xW85g$TnQQ}4HZXeiTQy|)cA=3DpfQJ?^kF?S!fr02N{>* zJ;fdqi`K%wV*zZU;3J7XFwAhK(7Ac;y}c}p^QUKFLI!L*>~jq4U+4^ec_ZVA3)=3DN^ zeuqpLU(%2${Vi+e&|5OUQeRfGFcD)C_*D29*}BHqNSjR34f+}D2-sxT87sXB|9%rl)Zdl71vU}zPjIa-uk_gF z>N%s=3D*A|qfyPGh7m*5QOIM~~lmb|qj)kt4_z_@&I(6|EOSbtmXd8J?U$Ge~9t(Lw z_@V6{K&tckf6)x2N}o- zT6GX-nE!H@W#fzse%pINW>Vkq1%$pY{U8lPG{=3DlhJf*5%M0R2nJXgr(D@?06a9+fEcYNXI_#McVp;jvtr0+s5E52flH?uM_^o zw_)B+TmF%;ygz-U}RO`$r$Ui)v z!LT@nAzcR3Aug41_~sdcIL$ZbNf}K>AH{S2O?U(C4IsY)Cd*oea|KvaO_g-pq4Px9 z)McppPH&a^wqq|whok&KOsnG`*L4m-8L{x@=3D=3DcX?;2q7pm}B?Qr#JBH%o%80>RH%X zgSBUv^Go+x8pjs%-19OnPHZ(&I5uIwF|&Hd)uL~&-+lu3A&ujDE+5UYPsds)Gw3!lsC2cfu>{U*N>J7<_roR~uOmX=3Dhcj=3DsK3x-5( z&yi-VnbLyUIQN#yvucset#w8UWni0rC?9iteVa_&0QxEP{M!xXrD{ zN99G#z2om`-DLEt+@I{L{OcDVSMJ+4+zkJ#l!Gyu8!aDmCCV2bq|47ec@*;qju!Pu zGb#p#-a1Wyyq+++0{wTHVP%6@Hs{y0(}#~hNBX=3D93;1&Mrp)C=3D0p5g%2e2HM1tTfg zgO$xrDw+bje%^6VlOpGpR!_$lnJO0@+@KXCM=3DUNgS58@Y+{4{>3Y?-Y4CT2Ijqr@&Cnh;QD?4ZT{%{u9)!c3}+$sgK<~TGwg!BDeEQCrP=3Dpgp{?Jl z17us#&cAyTch*84K2xl9>aF#Z3Hv#Gs94E@@wYHcr+?oJrwe{{Ty9JpbZ6-YV)CWO z#C?glKX%8(g=3D6Ai-;%y8Chl-|+|7Lv_h3w1b4;8QacWK$nKf>GOxzg6NuMh?<0@m~ z#v^VR%fy|ZGYgs$9kd7aZAe4A;~uf=3D0-wNsbblEuv1!D{E*#g!bd=3Du;niCza79+>E z5B7eTzep$fN3d23_brz+JE7BWfLM&D)AY{W61vYN=3Ds;l9#GtW)d?nQ!Y@_!*14m1Xj*BkRl`Gkz?2lNs*w z8pB<7Ij~hzbbING4Ch@HEFWj&_EAopxi3|GtNZr##u?_meN-Cb4Ac1bwHRV+COqxZ zD#oE)hrkEhG+nN=3Dzn~euqb1K9gX=3D~v!5;gfV~qFh`?FDZg#NcKeL?a!8S!>I%&;TK zFuM)JDc~0vP*1$nL-^5Vgts&8Md3%hg8x#%iK{vJ(f^OOcY%+py4uFiBpC=3D4UPBvd zP|zTt2?m9VI>{suZuYtlRyEt3`gw!o;?KDKSZn8jSRD~0p*ru%iAd1FU# zURrB*=3DCMPR`(wu2&DaCm3R{rp%tXc}z=3Dy~@c>S0ocC)t@Hd_$>$6)vw-~;dM1(EE` zQPtkEg9CDI8eizmE}M^c754`HNlwy?rpKS zXaaOi{2ZOLE}<5Et(y2V`o?jvOB<9M;fgi8ct#%jusIhr!MwM+)9mw4yq=3Dw(n1C-q z^{3B#w%vgIgiG!J`DBC@?tNR__Xzk*#u)pAehLnxOdak8SZufYc3vd1!c+Crqevgz zsjQ4IPt^g)*>AZ!rRjPPoJE@=3Dn;OTg*~NH>I!|LOJa2iTF%gG`xj1i;F#BL1d#aAT z#<3Q|MZ1gbXgVGMy;T3#AKR$<-Al$k#yIPUKn|w+IJc?ra=3DoUD;DBwQ|GE#KoX}}` ztY6AT(+>Por%C^HTC{&UP5O_tRVDw%txKGE@`m9SSR z58n5oAn*sCPnakA2Ke#>Q9tm7^ixdN`eM7d;lcc$8t-=3DNv~$2BXQly`g>kTuPJm@% znH9Qry3`Xivf;zYS+byid|!s@zATC>kF^9W|Gn!0XWdxJtRq;jxozTKkhjJ2`NZFQ zc20Z|Z6>I=3DPVz$CMvm|#u3A*I?a)rDZs#GkgL+r8PF>$ysPEml`h?#>7p&jina#RM z7sddE2W9Qx#E2CxdVy*1FIRT*FTb*yYMn8|{ep-=3DPy9Rbmoq=3Dw-k|8)>OKcf9atY# zu(qe4pH^!`=3DEZ2$y!IRFt=3D9F<0KLD5d)&922Valty!Uja!=3Dy_*J11Qc!&?uLcc}AP zMTbb?dFoxM>rIK#VG_>XnB&sU4g}0xlzGrlO#lj=3DC7#}+)73g|I7Q-*)yr0BIP4}N;d%zKwqK-p92s_tb^wM&C zg=3DzE@zF_SvITT|T$gu2ti2vDIrVjF zPx7HX;qU)RdrBTpDm2}j4nrOf#{C)Bduy)rHTXNr<7Ck-D&}iscx$_knOmRbI^Bem zR#T1e5bb2vgEq8YnfFWRh_mbqcpGxv-m2Tb&rAyTl0J&>q1NA!zMiT{i_E0J2`3F@ zaK4n?Hug@t&3ot$!&`PohPNK~WFZb8te_9#9w2!YZ8l)dUGlA1HtHX-(vVQ=3Dz$UfPxsZ=3DG6C>z#e< z4R7|bP2RKv|72O#$8#*KaL;K1%NWC;-^%gK^LZeH=3D2?*iZA=3D6IDI6e9g}zn;hC%AP zy%KiPK=3DK3acq{DQ!tdmDd`}Lv3v6#u8H~_eZ?fJz6tP}P#Y%gOwVS^6Bj$xyi zev+q7Y?DL4xwqWCrcxh-c?TbC?Dj&8y45&GMjKF2-}c>3*pJuY96+1M0EsoZpJ|73d>$as;-K z)qH{QndbeY&X{UII@%#Ff~IkNvJVw94fK{+il^#^3m_K|gT6h&G~^Fze&}NwUsURE zVr!txP^-D0$PL&MY0Qhb_de!P?b)-XY|98vT0hN;!AN<4Z97 zxNqVrFUCFKg$>}AHhc-Lz@dhbc)ynK{&^=3D$xbG~m193c@SA%jqd*x%MaZV91)uOLh z6WMc9EFSveM$A7avW;7h@tltK=3Da^rYJ;=3DX#KZVrI@!zrTa;DQJ;o3dcdt)r#l^AqO z%#3|45Wfv;K4%oA9x9}tYXY^IkXZmQ=3D6}s&X`)!4M}InMrS9!tfT4Vo@< zHNT1cvG0+w?~FUqC5v5%3*R+~d9aV+gibRp`<~tWrr&3=3DF7QpF=3D^7<6kK<5u0`B`# zX8}h91 zERhdvTbCV}af!iotHt=3D`z4VJrc6WwPE7ann~}sP>O(qfzu6XK z;#`N9mOX1+1bDE1?^c0N$?91Pd?-vlL0z#mz|I-Q+}}hQkNebFpHr6=3DYHegW$R@^I zQlzfXnFr$Pip2nQU8egF>nS@h$L`#j5uvW6%|LpP_q;W*70O^M%!aK{u5E>-h;@Z* z2Y+lYOV3|aNA)~nstSfSp_!r=3D{3__UXd6=3DhIMCv~zFY7_auJg}#Hpqno)t)EjKY3q=3D-4%P9A-hHESyuymyu-1nJv~k|px)rB>*y8js568VH*OdB2wW)mcha%T-%z6b$yW0u%BDI0h}dQec8C>kIt2Fh+3> zMvtpjL5G1y+gKLyF#4ngapMyA1a-p-%8)`MJ zkg<~|bNdH(VGch7V|)(FgAVjP&Z!F>8A<+d@C`m3NVrt|?FP9-vy9@0qyriU@R`hqv0ti@X_h^=3DRPxApb#Jxo!d`Lj zLoNHxCu8qPC+Yinip&pD{uIAkc9Gx`<2T9UOAI6bYJSIiZ@_&F^+`K~HAD7(xDnrL z?j>s_7AJk>^a1O0_I%lDWFXek>^%TqdE3YdIJ+&Jjk5y$I2#>nsalmUggLJDlSiO_ z9j|+&P}+koSH9QrkNJ+iM&J+i@L+o>W8H$6TJReEq0pJhP9C|l1bU3JM(K*PgCy-u z9pB%n;`_1mGi|yoW68ZdRjdCTOFJz%2_C>%`DmZtJypFgRP~;gac^RHe~Gj3se`;& zx8$w)&12p}=3DqJ{R`tvvr629u*=3DliA5NqoMehzW&`Nn5&~@F8P9ANwowRiV>@8}a)H z5B$Es&y~+d-7WFz(3ug^ANYKztJ(4S=3D>Mto(+VHpE0wN%KKg$u{cD8}g|Ci&pZKPy z-;cvrlETUAKkKsFnHK!46TXyBE8{tetD29db;OgaLE*_b=3D2>t4G{z4PPiLJmJRRN5 zca5h+_}a%nH_icI95{ITTE-T9S2ee=3D^CQO2=3D(}nhot817ecNUac|y`L@1tN99w&ZK zckhmUJav%mci+cT(tjtOKNdLj9=3DfqN*Vi&OZ-q`sy~<|5o(p^f3|zN{n4DR`e9*1; zv3@1XE}dA3wT?p@sp>N0~Biamz-_ZsHje&E!qFH#pQNyrSj~TB;EP z%0Qm}7>^O~YRi}Hu*0?;93c0X#f?kUHIK1D#p5Rgj~d=3DI-fI?1``2E!|E0~n_BP~% zUB~!?!r$5cOjG6BQ?MQc=3DP@u(>sPTnXN2E%o;|TVZ6_OH3#mJRTSn)Cu9Q)}^>#bt z)bC5y_uM&eebB(%k}C|k7nQncwq*RlHt7^g zH%zN(naGS74o{z88C9pfF^0=3D#N46v0KKVMp(O2q*ZvcH?XS!=3D2K`}njGc2O^q+R`h z4+)n2*nIg7-z@LvvpLv4brNk1XFYB0e8d@s!tXDd(q+FQs*gTO-#yK}Uke#4XsE*a zTzCbn3p}B9p0UzfFLsYUBl79@D7U#5o4n|)nfx$(jeb7V%5jbH02%LFMVUvQzx7b? z63F;Grekd3uGckt0*9h!xooH$D`Nz0+BMWkXnUZ6XV!y2p^ReU1rzksVpA*0f@{XqQfz_)cv z?l6+{I_eZ}5HY%JBY}1S?@Ym*LPqcq)||f{JqrWlc1i+y%?g_zv!AGAr4@RxoPYDq z4J9w_tx6t8R`WaYMO#&3^#SnPHuBr4_n8*h20C5TKzNp+uBp)RX~LsbgL})Gl%^vx zHUT%+)7w}__@HO~q0NvFvd8Zw?8C7_%M=3Da$pdr_{G#wqsx*5yDdcknlK1_x^W{P}A z9BRKB^EI(CkGnshAGkih+q)PT8{nPL^?Ke0k-{h60zYeA-w;M|ADy5rl!dfYUg)sOE#0C_!bMSj1>db8%qt+Xv&XM9*g*QA(_{lqL zhw?z^7+Qar-h!;W^+ zL~bdWU{}Z5d{*?jZZn<+6Jbj@=3DZ%sE8v(=3DbVl?>f3c{iAeW)RxzQj53JuweH^KXlc z!rv}2ev~~0c_z4E+uO%bjE^gb7^>qVQx0Q)l>$dhU{RSF*?5B=3D!_fc>0v0(y;RBIdd>l-)7qnQ75Anp1v` z_;3>6+1`!teRQ6ZxI9m=3D4d5jDIJhV6HO?K}$ov5CP>lW}zHHl_<+AQWvDFlu?n8~> zgXXmpfQ!t#kFJG{i9M*(Q8sn?1S5fI%QNpjj&B99Jt_M(dT}2f_=3D)$Z7L#|)q@V0# zJ+#%9PsSMNE%}!D$3iYIwyOZUpZGD|E0If{C~fn`^E}8=3DZnztK^9%g`9`~lagFI94`?-;By5>IVL)B>KyfGcq{hI-_PjpN& z1vZE6t)o8pY(rxn^a*T!_@vkmhjTFn=3DHFylq2kG`8#>9+8MGZzfDf!2x8JKA`+PP2 z#=3DVU=3D`vrB;Hm1zS-FgREPLJDlp1||fR!foC4Zz70Na7Q<2bhm@FQ)r{-Nv~W-qoRX z>@LV(;NDn-a|y5a&c^-2(8DtCx)}F~)d99L?$5^X8O&d;SA!Zy*yCm|Lf(W7}K(y*A?PMc1sXG_l$Gc+&vW zg>?n~v<*1>ti6@_a^QoiymicbPps~QEY=3DOZ`{9=3D^BlzWE?EB6Ky*xN85&8*ni&V~A zRnEn}1+4Rj>~PM%Ne(vRo6D#rU3gaxWI}RfhLPW}-PnNGgpqZ*{?^0DFHOe17gJQs zPWFp~r%S-Iyw9NghMPGr0NdVL5J-Frv^u)nhw|edYtOHoCGBqPrrpimv|IN-ZWm)1 z?e=3D54n19*@T=3D#&jv2xHYu04%oZODV0QV|!fhfaM|;!Qzgpg%2*>+O^MC9sJu#NXgo z-g%qz5#?d~J(p~D%KoQQc6#HbsO$Q)g7W15OyzwdrJ0uwZ8VKN*k7`zJhOLd_vf{7zt)i?h*74-$=3Dd}x}x6P+D6dbG^+hQX;&Nbg1e05lD``1>0cP`lFu)w zzvpxC(G@aQL?7ZT2{&!SIDOcH{indW>j?DHMo-a{zgeLRD%tnaDVGjyXzWn{`M;-p zO7GP07xpgfHwt2`E{f-m5t}uC{L0n(4g68v4V`MwMJMtG?FGs_;g1Zf8~!-FfUu(7 z63rhQy5W!R+THj+ZddrD{uJA7C^V{-JZq7DNdGSdz48ImuP_F{v$%^#@h9jY{3>n9NwQ7eG+PS)qRn!=3DHLR zq%kY74rfdPPVPaoA_3v$tU-tg;+$UESdbm{oTJb&Xyl4KNd|9W zF9`UY@m#T`A?uub#5~mHTr)r%cqHCn{aWk66;?QR5Zi|?>M$oXsJCkm?hVVQtx|sX z_*Ar)f52FLXWUgc#^$_TLDa!^q>U=3D;FQ)s~jnIP~);B>02yem8MI0%? zv|u?%+xQRb4MgVawLq9Fvfi;m`_?jD$$P`6VqA!;N$jeAH`Cw;=3D{qAVxtGEU9bC`v z$lEIPI)ruED*vjE`KPM0c0vaqknajNuqCH{hq})Sd)-pcc<8Xp@Gn8m@r{f@yEt! z0nznJqBoB?w5Q&jhjyExGn*`R^l4+Bc}rxDg006 z`O@yk8`tc&!Z~>?gZYR3>fG>suSgwASI5PmrcOs*Eu(Rd1J^)>_AO^#jz`ellrx5* zCso{SkKkGEBdSCE9=3Dck^jSptBOm3aggXgF_Yr<8TgW|vP4xNf$JX=3Dz6*Kaun6Qg@V zLI)4BEcpI_g7rux-~E?R7qo|^e!Kl7WL`qvc*BEp3+S)b(?2rZk8Z_x+R6!k#uCDx;i*d~-op=3DlXlg z{;+h|E}i0TiLiMen8W;oCS&~A)H4`AJ*Qs(c9>Owma() z__nSKl^&UT$_n+$X5E;tNg!riudKFMw#jBkt?;ci^5FYM;N z<9^k)EUrHCY;}xhr)@!fljG`3LfItIHFjjLt`GO%8gBh<8}y%&8w$@)p?oi0o^u_X zk5jtJj;ug=3DwFe>!W29VvBaB>M5;uOPVZYtA+v4hC-_#mKJ2FX^i-&I%zo8Bv`{Q2^ zdR0w}08faAUMq4Mas5Z28?pAQ6(`vm^)cPJe7~Wd#Gr~z0jTsBlufuqypH+{%uu<&~b)E7<{RUVJ)4e=3DJ>&OzW?e|#GzdC?)tNyL{oC_Booh2Oc7vWD_S&i|=3D2D#)vi z@TI#u`yS^!b`ym!Ku_&E%(QOmnBJ)l(RHBNJS%j~Z7ie53H+fO|352y z&0v0OIp|7hdEJ!)S+oc|g*6VpsKIAG(eqw-HzdCE?9*{vPe;3hdc?E-PxEEnBKT=3D+ z&^T38Q!ndI9&=3DM)^#6=3D~+LzhVzB2&kB8b+=3Dqtoy_x&QF#a%? zIC{1!w@-Kr`W`%rd9Gm3Uvu9e^K#!K^K#!K@>g)*pepl`=3Dyc{O`?>6GV*10nzVc{W zzr)^X)z*DFtx(di|B+>VJ3ko2bnbt|zT45<|ETl5#C%l}r^NIMA zkBUbuA5zNrQ{!aBKZkd{TYC9q?3;&9L_crmy+!x+{>^W)dZ)aCckU-?!<0ID`RuSmXTuK7p7=3D9w z8tl*z?9h*3hrR+k^aC)ae~<%l*P9gaP_)Dq@6fo}!|lWjDClc31kk_E=3D5# zE@WB^-W%5fF2H;BZhps6J1)Q&0gMsHUiRiAUJ|--dr?}7k@FE?dj+sOfxVyik1y;9 z&p$-=3DDV(&Q4D@)bq~iE%jC<*|8$VjlHezFH#~^vHH?o))yqZA!Q`w{+2z~>XW9<)k znD zUd8Ok!B;KsgQrF+-{Y_2SkAvt?4UH-yWkDzw5!(gJLFD@vUmSFfbUA)x6hNcO0c&p zhWrw8;q7agCN{WZZ!e_0*t><_b7^m5PqAZft1^36GmUpwR{S0|_s^eY{}bgL9jWsJ z=3D|A*;7=3DEUlFJihE$L1`s_tuF6!$yu<$M=3DJKwf|VzumJFf_9^~X{F`CfpE~>xzfRd; zil62+V1NHBgb8CYNcn;Grs9=3DPG-hkMD?je6U-QxviwiSd2|Pnt>)U{3|6`^P1!=3D!8 z&s=3Di=3DdIw|Pl>)hHBaaLAdXncb_OEY;owoik=3DFxlbo&n6)T|JEDy!9^ZaUJ;r|JHg7 z<&Ava`-t^p{ClY8ZOru*WLx2^Q_QRSvLG4q=3DK$*KZH2O=3DPoVc!z%W3i--UC9j9R=3D8 z!tX}>_JTaxWZB0g?^uizul)m=3DLs9Gf3T{SSJ9J3hfb^bhR&xT&w9G;Tcbn%SSi>(_q%=3DwF{sF zai(2SLcRXpOMf4N@3WL{3oy-Ucb2`Z z08b}bTd>e{2T1#cV~@Ze!5PWuKlU*GpiRx8{yo!&Ldvc&sz_t{fw(^k^WXc=3DGEL|k z8T~&0W*MQM#1h^XUV%KIFS3DY3Qr&GV_se7Ny!g7fZo5h!dJSO=3DFro!k3{&+c0v1D zadil;)ws3qjkODWhCX1?(%){e8BbqqtKr;3W{Z^b=3DE~b9FZ*-w6GNy0A`ix*hvIy@}tY7X6>dWqk(W*f%l9bm(w{9)lg`>EM(6 z%(6ci;X^s_Z31K>_bu}bqMykfLBa2F9}vdr@P7DlVoOze96;{f)XxfEq3Hi6?%&$E z=3DHRlm#?N#*{PLTMkuJE04E>qH!vn>X#h}qT%l_~%1{f9gIv3}43{=3D-8__>)g3S#k44rn^*~0rU)X#x}&T%E4QhQ;c9v4ZH%m@!lyP z3ToN*6~@DEz6;++lnur*ivE-vZ)7rE*}_IE(-?1~-R_+|s+w|{@iFWzf$jdD@V=3D5U zu8}dGlsGbM;i21D*S~GMm;F1o`^}>Xlk9uNTrgmm$u<E>Zp=3D-m^{ z6Vo;At$HtCrx<3!NUO=3DWig_Vdu%^_Bx9`4<-)PTL1|kje(!zQ+M_%q6;iM~hxm$3^ zyet!wmpk3e2igC83|BX<9h*SEVaN)mjZKH&a0EUB+8?9+8!r;PY497e;WtQZ9e%?r z@Ee|h-_QXU?@neNiXQEYX!G+No|xZo$9+tXjm5tlm-l-34az@AaPGmgLObU$EpWr% zmEQn=3DLg~*hA5b?_SyAA&zo$?v(H{03F# z?fFdW&TmlZJEi|5Tx%C~MdwKI6kW26l)0g^C5#^V*aSzJ4 z3J(^ZK!1a#`++{RwPWMx=3DKox_8}aPt082Q163aJUigjh_u*v7bCLa#Hi21yknd#T@ z?Dtg}%6IzhZs^$fePapWIm9~A?*F5;Gr1x=3D2y+A0WSwhYv-G2C2KKbvznlJF{G5ap zdPn4o+WW!1A@94{KPAI64)Sl#U8p)J!?y?zD>=3D}4?r_JW%ztiKw!P3vSF&u!9KLsz zW!tmm`<-?><-4aS7(~1$V%Z-FKjhZhHtb5AO{DHg_s*X2k~iD8s^oPe-McOEPcqly zoLvywDY8$=3DaGYU{I3(Ae0v87DG&T3~&U&_|#<{(NwyT2gt!@17sY48+7IO#D@7q`N zJ7~KSKYXJ5hRBy4efk;4wEd`k`nRP{jX(JG?>^~61q$C+hzy0ThjsFm`IfEXv7|5I zG2K5cVPklrK0VuW>bLB71TN6Z7Wr3o#D{w4T21YxJ`_@LT~?rI>AqOS82*&UH2J3c z>8Wz-Jvnu+#HFeEi7NNE6mIHPN!k(RE2BL2vdlQ++3Ef^+LrULR6a#>HLezJMpJwQ z{;Xj#uU;K*b31+catH3XM&wY&bEVKNNF15&g~hN{NfQ@z55HmEKo61I$cs53dq2`S z=3Dfw0%ojw^wSr_JX?9E6|(CLeHdM49B&l;|~yD{byMD5eAbe$Q!_fFyQt>dgCM%Ufj z_)eIu$S|R?qU++IWq;U9(xP-Nu0>Wp9q8JTk7oYB!HsV30UrwJ_R=3DhS_cXri_J+yd zvHJ6o#3x$6>Hf+4kOeNzb#M(kaAkN8yClY5^M;WR8qU(T-hRqTGbvZ}8vahi`mbe=3D zZ^zz$*yAmSjSYw$Rp+G}MLb^|XFa(h%06`A`#R*Ghxa{JIB%g30KgvI&wAs06WF7- zO5MpPT&hH}IkFhcza0 zj-z;i!I=3DI%Q9C+lB$V)Ov*w;cA8iAq3;#nuc&cX3wZa#PoC43nSNZWV;DU2?TwAr9 zG6MP~3wI;Q*?wpnI_08KghTkf$uGDk9N;I~3q04Tr|5UPeYqoJ@SSsoDt2JEFVx?k z*KPIE`ES$TpTPH-gh78Fr@#C4cc=3DbLeg}`UZGyz7lU+Y^i|M|P`@07_`@3o9S)uI$ zw<=3DHna%YIwXUvY^ci5LLW8TCZ`km4EbY#q( zdhJEFUdxeo%Y}%)Abx(!H8~$0+bCxjzH;Df&JzdziS-;O#O{P`%UHe@suP*7=3D`;iU zL>oLmW`oZ>i#!Y1w#JDWOS`29(qvr3>~lKfAcn8>rGQvK9D$`#;2momJ>REE8*t3fKEJL^>xepO#gRbR%KpY z&N8soXW)lVbX`n#KF*A&7ahbiPMy8um0F&1jRWn^nb|JmXR8p~(Q>}HVYxc*9%~-@ zV$D!rA1du8mIHZtlj50gu>1Z^IHsQ;j%?xS?%|j&vH;`hy!NN*UN8yrrk^(myKOvV z19$^|X)|O+Gxd+R9`}vZ7(OpL?4A9I6K9hcgE#w@pL)|i8Icp3Fxv6UWj#pir=3Dy4; zJ!aFp#yMQIR@3xM=3D2<@0Wj+pFz_=3DC0H};#je3h3PNx|K?QzH}Wm3eO&_A}vJnT=3DQf z9P)FGu@T?6_G{v@fXk%pK>EFU?x0xc2O0x!vQ7mw3~-#_yQ^W1%mpWK&7z{CXA)u1 zV=3Dn`10MeI_GXjX?Ux2mwavzq4s}IZLym7{llXL4aFN_$E@AFq>oeI}n(tox>e;LgB zpo`7`My{o}{mSLAqt@87u3W}n-mhs-El-9I4IbnfmyD@Ecl6^LB{S*9w^@G7n+Dd=3D zUFq}Ip}hwo>8%u$F;s+v?7hHnG@sbmZq z@}*qbhMog0Q^`BzKc3@&`eg1vmAmD2>jXY!i!Je4_Fttw;BhO! z<`cD%2n+Z6u|5YToF~=3D^9wl28E&xxRhUYE9bJq^wQT9Kgj@a38q1U$f&=3D7e7e5KbG z-a5=3Do8YOZ_e^0mUH%ggL!MZdE8*eY)0c$OBq564iI()JP{H}P+eh=3Dw>yz)7Z{d#Nk zTwY~QZV|k2JOQSGmi>C04;84ke^HONXY!r6ru;MA^S{C?pAPuyXtUnBAWFLhq}^tb z+i`8I@}UCN#=3D~`%z3UX;+Aq(s755@d#uB?zT?D{odh`dFeqz?U_n;6<*$FEXynXH@ZTX6<+4|vVV#k zQfpGA-aj=3D)+l*h6qSA!#y2?=3D8L)l~;!BJt#+&B)FtYQF=3DX z2<~HznC_xca;E&9u{DueC+c|epV#_OP{$&$|7ff5KXeB7%(RTHO?Hh2|E$7Pts7? z6n_$4>+O)(d&*lPFkl{5a(Ihm1q2cu8T5u6>oPR^y~_>Hpa{F((nW*f?3cjqlx$ zlNUwDcRx-x4q&qs9=3DeQ^7yGjAuH)p7Zu#D2oV;*?-#uN%$qW1V{r~Maxg$nbJx;pD zj%ID{sIy*rj&Q_u)?X_5uH?~E%Pf2Q$9#|JtUF?MlipWty63cE98Mq0IqQ1J!b8WL z_>HWi%^qhwg!@hn#AFt~G}!ogUiyMJ8LPqjgP^16UGO~D$H70k4d)c~n!`4o{g$%F z67od$hE`&IVVCu_xKpNS(iWDnLf7r(FVB`zwhYeb#GZOJFV6JI<&qEgN25<00ecm) z^NEgyt~k3by(7*xKHx)v7|#AIJgRWEdKc_G8LKgz&Bd;lEldYiRvn1-|d zrN6Kb2umV=3D*;lT?Hr=3D-u07kAE&qpyn(&yq`F5Y`)_?IKzhd8Hy-IZ7ygS!f+7`;n& zdXItj50nmjb-aJ)%_YWv{Ba}q8{Zg;~S87h3USHvE9K|({Yi-s!o}s0BqmQQZTI&{%0Hs<#C?X2l~va zg9EJ4b1uTG>&3jou?Ezei29@-ao>4%K@z^-$Nb&E-inxI3v{TnFU^LXX^(+C#ay{P z25H_}$h5NCzVgnV-OrmndxSUbxGyJktQaxOWjU`LtIY|z?40{&KaX}E6gvw0EQkw< z9|R4|Ey(voek<|MoF}nCtTVuOw-ru2LAV%e#JkUGdTOS;W6qg2Bfh2Jo9Npt(4BrI z@vVG5!$d!Iyl?ho=3DgeUF2K(MqHG4k3iH*Q-s0(rK*|`5Wv6O9q*7c_Q*8MG)8fncq zW2YHwgqq(lMn3+mk=3D(MxFmP9+@z~QwKJ_Hx__wi)^l7n?7FhpfiP)YJ2T#mon(XDY z+gtG`A6F21up4|wc?I#@4v#b5GcI@8{)cgw%a*{L3#(_1}F_s+lxwjt@O) z9G6fMKPL5Aw~#GkgpWOg6ELrEOKc64*5T1}g)kpOI&0oZ!#aSFP*wzD04 zyG3GRn8%bcNBQBt1yWI-=3Dy;FTi~4jOF@dP20W0dm=3D7vvy88Q)Vf@=3Da4>&{`^v<=3DAt=3D-6_Jl%iFrI{O0gijPs z(ulAU1`X%J{Gd^sm1wu)cOc~~c(s~y-Cr_aa^mkOW2~kZrCvQ2QnN0xZO}Fg_<^5e z@9_@_itY)+PlHc$s)4^v%7#SxdliXG`2Az%mARp&7ln?hKDzY;cV&)+Pjm1rhCR@$h<=3DAd+6)Tzj^C1ZfeZ1 zmwI_jI3K*mx$0VuIpn_`Fg&Vszx@@@L3rGcIkddUA8BI|ZXyzoI^P9)QqD5>ArJOq z5H|m_SC(`Ki^zkjA6|w&IP;k+aE5Ooio*WnS*?@78>3hA9q@Em3xZF4qH8h~&DzIB z#wBEgD_vnv(3Kxvi}Sd*CnO6WZ+C^mhZ9mFu7ou3Nl9dILb~EX*Jkn{;$I7Ws8H{L zhpK+@4BBgsv%Sv!vg{2a zd(nOalKDjYNZ3sGP0NLTh@pB9VO?AWZQAuxm$pZza(x2m>#^)Vyy8Oz-fbUE!}#GD z9}Qj~;>0LJ*@<$en9lQ=3D0b9DVU!Q?*^@;a+S^e}5g{oqYh3puaOlIJ%qspWyqz`0tPtUFb{B0VcWDR(biC&CxS7M&b?Fkn`1g-8vGpm4&}JP@4)WH5Bi?!@D^mqzIa|j zd$rN_@CWgR`RJaeyFkW2&sYaOoc-6U^3wP8#kWvlX8Q?$uQd7|2Rs#waobI(yHw!i znFy7}4txi`+UMh2Kg0<)`7ch(9~U&9XB-gu!^92Gp+deSw4y!Fu4nDb^?;0b(9U*!iuW^fDL~Kjae}~ zwe@FS4Rb!)2A{UMfa4V4JR|VN7pamyD9m!{3bxk6>YL!OPoSnbwS3HxRQ6BZv36r^ zXL!k@fH@B^PhT+%?QMm;rrw!i{j6dW*>uocVR^;Mu1em~|qz%vd zI-Nb`mAcZ*3zy;U>i?tD z4Ennk@jvpA=3D#}>MdTi}qJ_I(O_`~)A|F*E)JtTK0BQJQQT<4R!A8xgcoX1;5R;^>d zSg*vV?e>{E-?AmBkNEY@fjr0B%s}LWRN(mnjM;S=3D10X*t?V9^%8$B^+^8{c4567J) zhkeK#OIb-Vxn5mqYyfZ3Mrh?2r0*K98;X}3+<$xwJ{4rEz{`EL9|jBg9;ZKnr2osh z2cwT{>%4WF?y1v+XSx0c`(CvzCN?c%GK;`pX@F}G$7*$LF@^z<($)6(`{`)m3*SH z9Y z=3D9&fX7{`oy&)j5?uEn_F~e&{wymv#2KdAMvU1Fpj(z(@H>yZZn`ILkHP@?Lw>aEu<#yn4mym4 zzQq^}ods>${D~*?Y0p6hrHTK+b3&3X8q78+3)xo{hnoC6^YiaG-6?!t( zV*>a}#uzwz4&KPHnnteh0RWC=3Dl*QVE=3D$P4~#x|GdKwZ$* z7?=3DY(58OjOZy-E@r|JvveQ((sBR$TJtim}_lo2}sBlR@ppy+A5r{jGsZ3y&nUEp9^ zf&Y?v)|VVubF_r~QZ^gwBDnt7{vg#8RC54kQd(ahI-_(HWbk7~AAcaNpt?+Ov#}#? zZm3hR&>l5L5|%)ou?Ovq*6k1W4-lJRsDI!tw2kvW$MoC;d?6lhpU%hqNyItc;eXq$ z_{I4u$w0mfSP)?wZg@N|wRN5NgBiJFZ?}EnF#F?4YN6Az41>=3D1r&e3#%H&Rtv z-%Qq74crk|9eHFTX?qs5hP^Dbu3sVW+KvoL3??ai!*oyN-nZ!-2V%!^%pAO?gI!?R zUoY zdo^%86^kyx+B`F6ZgPBRz$SZkF*h`U+4w}yuEn>04lgjSL7SQLIA+qfR{M}q z=3Dx`iz1MBt02E=3D}%FW1@)%@-Gf7-@;qP9sV`vCszSruD?Yy)o6$-}eQ0utU4B z--H&n7knHVaGv&SRr~qa?*)JObF_aK@Q679w(r35Wud+Q%SyYRJnX>3{l<##+QLzo z+zw1*mF}lK!|{Q;{v3RmNy()?6p;S@0`_9(ae{VaoW!-I+Obok?P!@5Z#OwMQ?{$q zeTR12ZCcNGC~I+lMK6tyiH(?hhF{VLb4T#=3DU_U7va|F`i{~1Fei&MJc8`#!YNc<1! zuotjrOv_!2ewG;WFg$69;GA8V4EPLq?zb4@v(As{S`Q{qF-i z0`VDpBYxRWo=3DpyUI3^a~kJ39Y%KKgE-9yIM|2e(e)1$cTL~qOq;B2KU)=3D{Prmk#Yc z+dI?Vp08y^iuU8U&UU1fM_$yiM%JA|mZE>zIluvTEi2R^Gjy^&5*xn%Zlf*;}S#xZk zoP^?0xy}AVo~B`bg7XdBR{;G_S)IF4yFB%d z>}uH>qY1GsPgED9&A}pD5nmLWNMd@8OMS>DeTRHQn;+uN0VDAA7qoeM{P=3DkOdn+ApBXU~e7f+teM2Rs6<#%%B_P{u2LK_zs92mXED3 z2(-bbL5yuV#=3DCBBs()L3f!K=3DT2Y+j~w5RrxBnO^Gdj}CO+tG6q=3DMzQON}El6oj!m+ zYSC67&YR-=3DdX974RY*R{ndhw&x&+Y$K2aMeUiSKzK%T{TrP54Fc+!W=3Ds3*vNk_P_y zuz|o+BHQ)c8SI}LR*EM&2loy2=3DJ}BMo9k`c!%Fc)>owikjB||gmx7kR1-#Ue`#amW zpFihAAqOv@Z3@l@cfl6V0Damzk7?ovYxHMXO@qftxr=3DRN=3D7~OwKfO7=3D((wU?#(6HQ!w8aD)?hoPo(2M8J=3Dg6os4h2^1;vcf%4&?*#_jD zl0Th%3z(AqZDv7WTTUwNW$@H2v8h4dz!2)HuuKifuw4L;E$1gZgL(dV;e4MSK*FWAb~T>ZF1F4ry0!1zoW3f$?#SrFH06 zjlW88u}F>YFT~dnTqt{+aU=3Dsi`9{=3DDe&8H4WVn5Xc)+)_`1^LsH>A<-gx zybfdE^DOv;`#KawnLnMjt^X;srD^SN@phv3 z(NjJY6#OcB-$UF)_s!XjeLJO_fo9NWJL1^%Jtpe?b#~}lWdqndWDL1E2JFourxCZn z_{ekW!S~v8@DcDhXcY4)x?MXEfAWdm+nPNQW1MkJoHuN`M@#GzG;gMy5jz?Ewd|uZ z7TFIEVz^G6}VQO zsLls0jC~f0UZvem`XUZsCbquqLsst+%vZub3DkgggUG+K-ikilEVKAiaDJ>ufO zSnmcs>(%z_>!%murm&y>)0Cb7%gs4fz<)L%YyTYPwkX-~Tl9 zGht0^RWv9vTrvkz1Y9EqDfOW5u$>7j{8;-Ge+e((@(84a6=3DP5N0N>-8SJNq{y25*A zdmOx3^l=3DHVnb;yWrofN(MFxjAMUZ5E_%fW0AhV;xsC6LWxJ?@19OL`N?&q- z3(lEBCPSXdU1y3uNs?d54ZDVY49vw|1>3ID{amK_`g;>mEuSb~o9%&x8O#=3D@4(3t;e*g!&?=3D1RWf++Ue9 z;k^*$W2dD0Ghr)XUO>+wK}XrAIClj2H_%@~8>u?2M#qnz@NTp1^08J4=3DQ(I=3DLGRWu z56apY=3DQ~jLUeZ?Db&rbqcu9)B&N^P@mmC~$Zhz$Kee646$Osm~p6)yk2L1xi;{M?@ zk!KCS75!txOXvHGjL|cSKCS>P;zyY7kzb+veBx~6kq-d>3msdPaua8kN^DHz0mi4u z5w1Ca-+(^pd6JPqN$30xWC>)C;M$Qn7&BQSXDBP9dF)=3D)SxT?io0%85+RB(4ajifD zY#K+V`)c~Zg?=3D0Hp+OT$%EwqGIK#1%PjPaD4+TYU0Z-+_Ev_-lD!-&TH9H^jGFj$U z21?uB3>m&-(%~H{1ps?N|I8TFCEQ9}>9dQ|{L_NNYc0g@R+) z^00$;6PIedUDZYZJ9@XPO!@C}*6sh%#iisk;LybQ?}Ijy{0lHndQVB^dDxy^Mq+8^ z$;JNRBjr4M$b&w-lLmc)oq)CTn6t&bdl&<}531|9)b~NbkNd9JztvxW4pU@qW*1;S zzYWnbCfQ-Gi*umFZ+YgB5*ikayT~)pgC8>CWmeV;6WKyc{3MS1xm;6`bo*^T*U(X5yJu#FZEN2Jtq; zZ|#|Z7Wf_yp{%T>u_u*}Z7A>;eE|PO*8Aj^HDf+(zLD;K2znRt#b1H7tclGlSWjRA zbx->#$m(=3D|z}N%0Ysq(}`^p`}C+a_mY<%MM(3J~?w$L#s+bD7jbOs*}Rk5u0?Gi7Q zcwhS~{xNB^k(0f(h%13-0?$hQ#j4tPIdLW9{$d{i4?`6m+8>CkYXSWdw81&cIf5UV z3v8cWe#eni|CoaO@*!UcACzbAFQEP{%|uM!hp{?bWLvtw;z(-XP|r;zMVKGl_BCR4 zZD*^o*32J3Ik7K>$9y8U(mz-SaW(Bp(>=3DVD{f7PvX1Jm6VK3wRf1{mZuE(T3M>~wV z*GvqJLbFC*`qf`ER)jNnzs;C5+FOeD(#qbFIn2_$biyd-s`SJ6B*p|Ikj=3DYAt)V(c>SAo|wc;DuiXUVab1ZTQ`RX85>*$%@9N zJ45-sXit10#4pgMis2~Uo`?Pej+W!v#_%azwe0hk!LH%h6@G7dJKGC?FjH_ck>e{c z_7l!OuJ#8$9>{i5x2&d-x^14GLVqtLHFcq^jpUobyJW(0-ngMLj2T5b#qe+g1#*Tg}8KDKD~M z32AtR4`)ZPpD|gZ?HZ?_FZn4MjGtv zj%_43w7*=3D@9`%WB!nxT`ILF@7KW>cF0gq{zFFRfg*$a85Y2{c?qGtGy1H^ zv(I2H(5dQjyOrw%@%M539d3D5WQnu(BW|1wqYYfhH3*b{;(Km4iaW-K+Fua7DgH}q zC`3F8J}T$CpuYyN-`&_7@ay~D#x%gHeSu+9@yaL8mK=3DH*?T=3D%>JGL2FAZHQb+iMCrkBFUIjzoG;X-$24SM=3D#;+(x|8%n+{s%D zn!Sa!T2Eh=3D${3|TKz(}F#+H7+Yv z`=3DRC3&5CxRIe<3>IwOtihEZP<*9}vLbjDqvNc@`Ht)@PLThz_T(}`+H$NkAZ87DP?*CdAc1n5y`x`#ZE?(q>`=3Dxj4}em|ED zg?dH^|4?3X{TF=3D!j5lw+`1Lp7*I~!4%P8=3Dd9|4bjz1jzW z!51<{XkP-}fzdwnaOBzG_eF-&#{%3l)~8=3DLV`utxoS%@mAaIYqDA}fT8)a5mZ|y_3K*Vi!K9l0IfhAOd;=3DYsqVsk1wU%Cn1;u9BpxHJ!Kjv}39-Uqsq>r`-F zbe<0x9k~pC|1jqbj48;Uif8{&0y&I6wR~LhnS-;>#s1?MQ?jdNo1-%;-g+7JefSdV z1Aj2~_(b5NlLa}osQ(hk<4;d>{4WB1ATwH)X6L|nMB2Dsjz(Af~Yq?c>Od zLA3j1or}n1=3Dyvd0o`WBZHJ^%I{iBg>YWWPlZyvz4xSl%rqqVeUKug#zfjgR08TUv3 z7RJ>vP}#qceg2BbaPkxEqTS(#AYZ8S1&@PbutnwBAeY0_GFBy?5LqjFTkNlvC#4O> z-L#F0I}XMPoQYw^(LJcYy6o8H$NW|BM^HxQOxIkN+F{ z5UKLS*&+iA0at9U3^JpmP14*ZaA8~kF29;b1a4%0_#bW`s#|gxv2?lD6aEon)3%Xh zCaSwmZpA(eStE2DcEnq1|HzD;_=3DfV7<)DwU%~kyaC6-KE<8AP`$dNBzU>jZRg`;9G zz}`v}TB47b|GIcTvhs=3D3g%{J`9mO#qbGlrE#@KUnbbe?VbrE<#=3D@NziiPXiO?O>5% z@0Q3OXra-klYOWhaVJ0RG3?b0l81no(OJD@eMJ>xQ5e@g;u|n`y5G$}j5;x!b$AZq zJOsqoIJSuo+1tAW;~O|pJlY(I?as!#n^kq za~OUR*EMv2yJawAu*k=3D?dYCi4C>DE-%G`^{2NHV~J@U^M#$G$y#4ia3y;e=3Dx z#(IsGnb^?A{&l7o^_$g{kSBfTH~~HZ$4F%56UUDOb_>0LfAL|RHG_6%dWGi;EJ`0d z5~UUA>A-`Q{qbraDvr_#Faw6F;9A4)odCNFd1Ov+7}nmehn)S`NSv`=3D(L(GC;mybc zacyLji7q?)zW9RkJ}rSxNopuGD*O-8c5aZd(3$4+h0!kNja)L8g+9Qo&?gFOq%ziy zU57e@P8*OFuvswIC3H)R`Ib?-r9CHfquyd%1TwGV_zfxfr}*0BTq|&;<}}3?+5Z6X z#8|3cTQZb<30Y{&9ENd ztN1<6ykR$M+>|a+@U{vs!>(}Vh%Ni?rEEj+#XLbHtau-BKlmiEeCmD*$iLIz0q)J& zxCDK4;=3Dq9%j5Cq#yOkebWVgX?!`cPx=3DY#(B9;6L^#&zo?JadyHk2F6$p#j~3;x{ygVPWIe`BlGwnA z6LuUAUyJ{vWb9i9qwp!;>qGVZZ$b|*_y(}TzBv`SH9P$}+V#-GI!1l!IOj;|2M0V# zX7e1%z+ZZ9;$3wpBRB!y)$(l1SRC(NnZFX8piQLvK=3D*z@)CC)yZQTbMKUCQ}rwS?W zL4aJumYS$%ke6%e7jfQCcv3~&@IsAE@<#1q$$fNhHv#nx> z(k4d?B?ImD4{ZBuDq~oIZHSEy+QW4?J2>B2J{I%h*t3MO_DG=3DOlT^PKd;crpqjWuIJ_2VCe_ zatiwn_y*z(8Q|sQ1NcY%HxPWE6=3D-RpKC1>lK%aeQ531wi3PS&?c=3D30X4-CEouVo9q zm98iz3|`ouxJTfy4~59b%1=3DAlPhuxx+njWJUPs*T=3DRG&k_ayz;Kk_Ndqt0@afo%TQ zL9wr;%)j>fi@w&j?!VRx{M2>gTYe{(0OAqb#2GJ$H5c%HR_uAl9Rff6fP1@POPtW} z2d8142X{vA!9Ln{&R=3DIwS(jXzdFfF9kIdoJZLxczet7UkOBR>o~UmE__uv4!UfC#2PcoC)|9ldDkrK zY(#8J>_1oHI>8eO>0&&Qa&txH@~Gtc!J_PT6Pr@6=3Di)S;9d!3OWDf*QSy7Jtnq_f%geWIoMT{@PJu6%S3sG7Ibi!# zXB$Y*0k5>qhK0U)`G%`>%93N{a|#Ol!x>Mq-+O$m!FgO4Xj)R%aN#`QYF3B(F)s$1 ztPAWMca^^pei>xyjL%bYC};eiV@!(8r}pdt|3Sd0&w8@I#(QxK>c?*_+DHJMzd}93 z@xB>2g#5T*WfcF=3DpWTfe%~5_G-NUD{vI?u}fu+)01_n&~_x_+DI?=3DU@o3KF7X@0ovCk>e)?>o z4*;Ln7CYOtmwC`X*kb>&1Ap>~#yixxnE!E~=3DyBML(e?7|o0{wHE8`IJ1hk7Fr%dLd zJtk}7Ic7!ov>)%3FFmH~-rV9tqvR>*4#X6d-J$gNe~k7AKsT-ziPmMS_&4o3u7QYt zfAa+EA-(X!C(ah>`zZP_Sm?11b`Ig^+(&G^r{?XyicZ(C40ZIAWxpx(Qr}&oU!iXs z2pe$^9V_dTRbT&WrVovatz0Vco4SR=3D4aBL9T;4}b`HV6pTrc6+K-ATi{WllOA!fw+ zkLOVyye?}dg5ZIZXs@Jf@`dyKrRG(Lb1h}e#b1)fzf1i^N3=3Dd^yYGwbMi4yUXB^2) z+$XRAr%Bl^eES^dw7&haS{njhQScs6@+}eZSdLwsQ^0*9s1GX0ph^dFY#hC7G~b?E3>h zhc9+K%1cP4~C<`y(-&?kZ#&_> zWK9I{EpbPw?{u5059iECeTbLN|5W)blK##doo+K7{E)9%TpXrXo5)Yd7RpV?k`|#8=3DHNW*=3Dj1uQ zRJ=3Dat_~X7&+&{G4hsr2V0cRG+ALMuv#?n?LOPi-VyoK})gcWJGvklr6sHYfhOk^9V z>jBn)ePdqTTgm?c$M*J6-woU&MeK0|+)KkW_&QadsyUcn`LAKocFA)bt3lT+(jb3v!Z9a5^4JEHO;?#yv1?#x1X?W>U-R!^IWuD#Mj|VZq@e&U@r4C)0aovTEsDg z`E8Vwwj}*zBh&pz%Sy!_hUL$qj)c)N_NDJT)-#>we~x*RXMoOmc+7aab!>v&Qt?F3 zO%cfL9G`J@&PQ{W=3DiKz#b>6f&WrP=3DSjP{p{>|X{MP%W}w>f0rF0#r7DxY-5pSaPe_%qiiBsK8766mbn7!%4jOZ=3D=3DqVL)89 zmb|fiGRpO)3`yGR&!gX)vnP` zw6hmg6#W+baF%PUXbU{@&@XTg$M1S>g01ifZGsp-ez;oNK)Z?$ZJrkcnu3Qb+dVP5 zZx=3Dkm{x~LSIQsyyst4fY^EW;KT^S&D7w*82R@Dw-r!x5m9uc}h`bvomnRy1md`T!;JrZcOG0tZQKN6*`dtNHz~cWD>&Ga6c47_& zuu5!S=3D=3Du69K7;hcH>`Pt44MJ{!n&G^HND?Z`VQ$x^MJ2b3f`kOR#?U1Wo##;BVN4n zsv+Rl$6PfEuP?cy^$U-+6$GAyow4B4lJZf&+gk9&&|hjAY#YbC;Dbkq1JLlE@@uUU znMVw|CRV)k2ktR^qI^o?nexoZDdkfv@S2S^`K~IS)7*$LiaTO}ADrPd0rF@5W63HZ6G@aN@?)SK?1$>+O;0iBmkq-wfWO#s9rdbx8N8!tIX^@!C@shpa;` znQ)HHYxOv^zn^yJBKBcJKD81 zR;fMgu(m1i9ea@av4>abSB_r`j=3DuZmNd_3b04V%eYGX|KmK$8X8*aBRt+ z+A#>m$fs6k{Vcn=3DWfK0{N?Xp#RvxMx`YRC5pd&h&n6;R@px-vt)!(8y{gzp3 zBQM7?=3DFlzerh6Tq8oBAbSAI-xI!0&~@z=3D&y##MYj zdBk6ZlV@b`L+V}6`hdq?XR@n^=3DMar*&*k0Dn1B98oR?jF1l?p6yMDJTTWffKzEfBB zO1szTb#w0QHFh6|ANp*yHiflMxBpi4ID9(Tzw9m66SL@U>*E|`@2_}sa6V&|EqLF$-o!q&YC`QvLh4OXCwWBe4w5Z_G-n|zNIPN z=3DbrXQy+^$z_}%J=3DX~VA1GOp|^>U8d7{g>Jgpj^uZzDwFK>#3j*ZPEIk@tT95?x+8m z?i-kUZO5KyINu*NYyC67rh#nR*yH7V&$rEH>Mu*b z+h3mwM(f?P1$=3D^a_x;q_Y_@9dnryh#pKPVA;{QCXwuoi0G0&;WgZ=3D~j?wM>hrnA%i zd~c=3D>$qt)uN8@L{p#2-mflU{E8^i1R?kGx*jwN45`Ykr5{ zfKHSAIcJ4gT|0P&quad;CSk`jc2CP(v$fWD)xXOAZlPsYe`KKZ7vbxFDr&~2;?%8nx$eZad4jlc(RO{f!;}Drpkg8au^rv;z{o2jOGi%ax!U5s zjORY$_l0-%5SWqy;5PvLqGn{UP*(!mHgW|#7^Wp#eqM(%BgKXmq51+w(LT)nDu z%F^Pyp(~B!Q5Q#JYOCN=3D;CNuJDPzndHCAN89P#h0%CZSuM;h5zApG;(@U1yzk;)Ch z^H7fiyW;BZwPrJMr&|RN*-fF=3D?4f?{Ma^jo1(SW-p=3D<4%ze90h#EI9IGuFZPzFTL0 zu6kAfEtRGY-mbZ&%0y&G1Gft6Puvb~Xf530Yv5MeM1Br#?jgqYmRchk)!h5z%3tV~ z&!{|QLws*cP3x`?0)t4);DTDhDf_x2pebcbTnG^EpQbL%yN|%9r-cMMm)4u7hPfujJs# zJ5m1Xxh@u5!I4jO3BKGf<2t~1dDQ%!wNETgd53em%X9Rte5urr-GzLkF8Uhn9@Lu9 z1b=3Dtd)L5BR6^f{xDJ_SSlnpuSafcT{j}_1ZV=3D@)+P=3DI{S1@}W-V;kFNrD}uwrQDCx-)O4xe1FSW6LG&Q=3Dug~% zCpx9lcy&$L1+>2iekzB5;`TfV?$M7k)DND|p)ZR>qm-Wm+`JZUz=3DZre^0VH{y%D-s zFt#g)^8$Oy--XA=3D8ZTu6{e!Ycr`GhGrZ~EhlT*?9N0Xy8rbG2S_tKURz8XuNUe^AJ zm%`TJJzet~-E?S&rJp*Nek!38tIr0@cs5@+rG55Fs7_>hhxlxuU+-|=3D95{{ktD-Jn z4!q77qwe^k@O6+rB*fRiyM}MASFR`$cK&Eiw(`%_30v7;zfL+Kvh=3D`yCqDh7 z6~H26_fS^a`@7rgh|`3IDDzVLT=3DO*jt$=3DPkYGcaM15aYdD?Wb&-?2N1 z`+7oi`4v;4J?zTl8IeeB6raL{_4TrYxfe`LCpI1)X+(F5kCkUfWvSOl=3Ddxec)Bh~A z|JC|OQ(v9(Xl=3DyS6-)-LPr|lC{+wO(vy6U}+xE%Vg3Ve^UpaX6(^_70A?BCT!JhI{1k~?b{SFm2b5tU#5tOK9KPK~Vw z|NLOLB^dXg=3D1x)Xe(}29KMCE1pp&RedjY}D(P_pH+>@bY$mIsb1RZ*!F5ofYH_h_! zcIN(TKjRChOT1ba#2%DA5Jh&GWCgYW>$_Z+V+*iX1bC8PVG{jC*D{A3^}1*~YP?I5 zqjp5lLu*>n=3DI-Q%K#2FMMZ-DSF1g>IwfYU;QT?N{Mn}$;ev>|Ky#Dh(<#W%x$=3Dq%% z^zlxWKlm9lGV#s{>l+u+Zgzry=3D8lI3JFYh!GjH%tPWdi*HQi<+k^74ljhpT>|F|AH z7%RU8^gR6(|CX?u5a!D8hHr;MWAJA8cKG5=3D@XRyW zdX_KR;ET2J#fZqGDIa{n_%zPsrU_@ynhswuu9OeH*v`0pR-P@;`^lXX&Yrmg+Va7t zKE}nn!OY@Iu38kXb9*v(*yShJ@I1kA`$sgte;PP&45YBY< zRIHq9?uL%WBzHh-K4@(^v__wnt539<*a5BiL~Gf58Dlb85s6@1X}_|Cqxdk?>B5ip zlRN4ko%w=3DqVyMHT7=3DH_ww0@{i1$-#NvvXW(%doO;s0X>9?VTA>qYz8{#SJ|j4t z?!aj+I9=3D$%sZDUY>{aLsI3bJJKW*W(p*)dn2Ucx`usXdER*M+#D@knQlyA<^c&S@B zNNm)2*~7$o7h`@2IBC9HhAub^Z33%9`}wUky$=3DPmS<`>loc{KXNXloBN#th+Zi1g^ zF0#f{i&unq$!b08eiQ%5T`mn=3Dgzk_Wn+wfXp0M81JL3^ub+i`+L<=3D+T%F%Z@^j*AH z^sR9^w0*jN%d{f-SVq%FAK$VC?*_lExwS5?+qll~-O6{8?+o_FI&ir>=3Drbdv6Or#D z;D%|OEkB+MH6Cc1@mQMP4z4Pp=3D@-G( zbeE}BedRu+5v`kxx7s2gxOUrAh_qbV~FBzOw)!!U?#}vT} z<+ZH;GH3K8--+10_>vK!H%FS~SwcEE^Ssfg`B}t;hKd&0-@7 zp7K4I#E%6()+t7VJLz!X*RvK{9}BJL;AbLdhiP*_v_3=3DdD{|mB794*Y_-p`vqXoZt zuePj()*redjpX_0LiiQ=3DQx}ELCT|C4+NnQUr_IV&xFb1Q^ck-w#@m4j^(T2h zF4Q+zfw=3D=3DdgWd}I&UGJ%!`Zuexzd1Fnp7sY9fn$SS3l)@0ihhJgYeUqTBsSIE zvnm7U)y^HcH`HZ36Ehyo^)bp$Q~inm0rsN;`My~hvwf&V>{H+=3DEznePDiO~Ad5}waJ0hYbN2j1GM-_#ptih%pD_f%|qjzUPf3nF^)2HR$ zeMw`t?^&Dii~cR2FUo*}&$x1E6l1T? z)8^y0zwJf!nKbevYcfa6Kl9`<fO2672@FMG523$b^1HVcIaGV!Ja6y z^MW^Nrv$wfh29w-?F6MKtd7l%{Y_U-Oe?CF{gnPTw$=3De@hstQ4S!Gaw-*<58-JUPDe)i6pEG4?Nh$i`P1!tr zOU5T;+ibx{Lx1L@Go1PPY0NpV2KTgy|1L;>gIotR*W|h$A9@XcA^xKLMW`!{Oj*zO z_E}X+_uP{;3!s-plJD@2VP4W1Hhi^#4s35k3I^mED{g6a(fZ)%D=3D3#GlrFg_kh(eg3;YamYY>Iax!$%Mcl(KaAsx&x%QdrDJ?~9 z&F|LNDCa70SyS+g^Q?*zzz+N0^6x6j6DK~noN;*sOTmyiOAWf87!j}Z&ngRFHsI zkZJYsV<_28Y;~p8!Q8iW7tN$^E>&H!kEp}?EoHMqx20}d6{+#j`tc8%s^qE63smQ% zSfXi@=3D5)?HA$8T)6IzdHddvh84aAvTdmk}I>=3D&_XUt2tJ!`#emC#5q|Mn~ZR&%G)e z%Ao5Se&7#0XzKJ%wD{4NRlcR}=3DF-%p>2?kUi~<8`*4ywI!3*W=3DOObyc+CCi2Y`?jb zd1rZQQk5;6tWZ9r!xlcNifFxHlTcr|A0c)@IS1@M)B8^MFXvs&9izoRJJq&1*31W1 zS}Ul*Pi@khn7goU3GDC*MZ~v0@nknXbMY$e+Vdomt=3DMg>^+k&}pQL&;kD|}=3D$6*7$ z>u1d+0E`!3GaYmu^&1D(`w05oVwGui|8^RTG!Qz(d zAoLB54L+W$Ti5tq*S7!{;SM^6rViW-T$XpIO^Efb`o=3DRD!-M20n-sLXqP>^ar|9g3 z@QGJa(HfrHy%Em!q-ee3pDZ8O(eA=3Di{AyGEb^7_pwj5mnkBIm}{0+Q9;zzzC;MwXH z=3Dyf7x#Q&CFT^SQn{oSHlXi@d5{$vC7SU5a#Rjz*O8b-G{xCqx8v*QywST9+jb=3Dc&Y z5yp9VIrRm=3DYcTnFd^;_Qe>j{(??9^u(3kdO&r^2%PJ2e#b@kys=3DJ!MKo9oFXY-2oJ zA9FNF+ys8+`S1*Dr|x;t%;`d{SC>%sWc6FL(w{a#o{t&w317|G+^1Q740jd!oZr|* zo!alQ--S&OxW~aerR>N0pMzfWd35+L^;c``GuulBXSVh?Gr!=3DhZu1%0Bk({?&Nq$E zZ4SQW91arrRj*|H_$#qLTFjO3R#9V+wLN4B{hR~7;_`!mzZuYu^_4TGFgbwjdVD5r z=3D4dS3o0ZE8Trke^<*boVf3f`Cj$VJmukoOpJlvO_STWJ&e7m_nQe`jB zv!{5A6xe% z^ZwR}e=3Ds5XW#;*o1w!vU@Ls4BUPCV>cNYI>)|vgyvnorNJDFYZb11oUdIJ06y~c|^ zJ74lGSmiOPGi%QVUoRE(+cr>J!TfteuwV1INkt|kS*~_!eGj~cJF6`DV6b00M(?G@ z*FUQIlAETJH|Ckijg=3D>D#16#{sY-}vfzK{msryfOm%qS;$BOpKYh-QSV^DJGbB0X^7?eK!q0TZl}WR{W#xX~xI-mgBm4u6lvhQTx5{!D?-y zw7SaLZC$pm9mu;MpOr{_8(rA}ZZoF1hvz*vP%q=3D|o<3ABW7z0+-;?2o;?d||Y0voV z?gRX;CPqisE#tFYir1+=3D(_WWxy;t+*6e2cl=3DfyLlW1^1)vQ_SteS!vDqO3SN~ z4Xsx{80%~OTAYr$?|i@D9lzqrs!!8=3DB)b5*8}ae`6FTkq7f&}u(3orY*;>rGxp%Q22Yo;p zFLR(;@O$Mx_)YmIUD=3D~~j4#%=3DEET8Gp0Ekl1&ngdil!$Du1(LA4|F~Hx8b#qg{8}T z#Pkw7>HWW(Z`qX2rnjH5d|MJ-zy_01Z zQYM%@ZHMCE0??Z`oXPI4>#}pbF}ZpuUnaf7^`#BjjB#?K94^=3DspG`7`Vf4^6(&6#h zts^IY(inztNM0Srimg|WJ1Sezlm!NF?!P3x?I1C^S;@9CK&FqKW5cf@7jCPpej}F5 z%Krz3$I+p~o%~Apw}Eka0bRWp>uc$aQ=3D#^^h^|8!Qj23B^Zg&kqVbs;(U}jT8KmC@awtz@QSWabVeiX0yXW$S)BVYjfrt~6>JjZ|E?NxkHoJL9Hdhd#RBWx|_N&Jd%^QD`XgV{mSBg~6 zUzb7InNE8LrxmmpNnb%u)Y{+sm2b8A)rUlP%;~e%9ur)F@03_y+S(4mu^ywn`s!CW z?lDbw(1&#<07B{>vxTt+-u0nKa^EI~4y^OYs zY3DLM2WFbHtWOVcj?HU-R<68pO?%*tZNFCk@L3PG68lVi6D zuj@O>;u1c$dxKm%+QnNh?~T%X;B#X73HIwe1U#y`9J=3DCMBF$;L*Jk_gcmny$Gix7o z;{TAn)hb$Go*6+_SLvSC8BAyqarnS*e)H6ow%@V7)CRTDw2i**A(vI{yZ+>Pj|66!DYJh$jsTMzTm3E1Pr7|Ta{W=3D#2Mn0sWGH_yK>SO0~o zAHC~o`VnogN92wQzL81r&L%s4?Ymf-&4`|~rWb0BUu0nl@6f*ydY^uTy3^Ty?J?3` zoMgj8%p*Ha)ic3WF^g)$!q=3D(W$phomZE4l5TRHjHD<)lS#QKtU{K^wD6!+Nwi0v2q z1L)V?>R0m_-&Mb^ao<_2cALZBWekTq_^FRaar@Q8KnU*mS3{!bsCQQiTArf(Np^e* zJHD-<_}>{zhwNd8UOlmo%ASu?32{H#-_?d(?sVvOS0*^N%%l&we48mVP5%ZAp8rdt z_A91DeQumoQqfr1{Y-k>biZVT;yCet|J;tj*$Xt)j!!(!UazP*-NJNc199OFJ}0Kv zz^m|Q(^~4T{e{2j7w}u1#=3DT9d3HSCd%4ud#xpU8DMLS( zLudVkdd`mD#x=3D#ebMu{jZ$ldv4^0-A=3D(J#=3DO+T^2*{>7dz@9bms=3D3C;$;u&J_TNc| zzIxws#+U7Gxth5H`VzbJNE}Ofn>IVN@qezew88mS7B9~?z7_^e6jabdDt{QVB*+r2fnZQ!Vq20i&5uQdJnj6w&(SD|ErWseU8eL zjULIz$L)iLX2MW@XPy$65MXGrlq0$^4awesow{Z9r{~@E@4y;LXNMw$5vy z-42^Ow^Q<{)bhCF4`QF@T=3D=3D7dJy#j#GOl6S1e)9 zWcRGEn1WyOW9H%}zF--Pf`>s!C^)M;9eqWo#~qJ@Zj0`kQ~VHJ&Q=3D7y1zsq-P#9qYTbSM`8z?HAP=3D zh1Pu%;Fme#V5jn4oQmvCMe#9qN2~Bzl=3DY0ZeqZ@3%Ui09_W)~z_^1K{SD6U#Fv1-? zJ{3P>*>3rrQS9H{H`Xb*+q z3>ev3K?@gnntBW9?3$la=3DR&=3DYpETgM2kz%j$!zHb^kTE>wWP~sI_4WeR`Pj z-aRm&@q4^Obsmi)Sa8J68~%ak8StCB&UDZbQSQ`)PjD_9IC6Kgt{(t>&o@h z=3DJ@|4J}cf>AMsu9UR+BgJ_9F<$dIWLmDV!b~-QDcz4je1`=3D#7}+l=3Da<+y{P1|` zYT2p|oaWyi`>4d)TlPB5IXA8I|0VX($PeOFB0GXQb3V``{la-2)8iq zdgi;n$f-lVNYS?2?vH8Xdj)OWNOSt++lYFf??t~WC)Hx)Z#3sGB5#!ToJ?%F65ruk z&bIA-)9~|JzaR4o;e_AmySkBARyG8n;p>UrwCCM9y6pMg$|(t*?e0Fr9A)F! z3UaM_QYDe9J<8e%{xbi)6A- zu;ZJW>?fZ?pkx$Wjx$#!k3Gey=3D;%h>&(7p@-9 z-c{Bqkc8fA(oGoqkOJ!OiycFIJ|rCh6yfLq7;T&uk7 z7S(wX*CV;sTv69w<+_AxoyV-}3%Hig*M}UJ-|?Sma}?t~*N!?zW1G&xF7vcHYl@yE z?-}Ki-ZG82GJYq$=3DsV&zLvdok8cI4Y&M?1ykoAHQ*{5ce5Cc%6^+bU?kKpYXRohA zr;)tQp_ip#M=3DFKm;zg2gq`ZHN2@RzAlbxOQD`jU?80(_3*mjx1Tk^J2kL z^OBt3U-!_p9Td^Wli^=3DmgZV*a@Fko{X zDmNm}iLXGG@~wAi=3Djb&Ia{oayGg_um79WJ<2sBV59i1Oj>$Q*P$MTWqcT{7?B0f{z zzrwNP?iKXajz@Ln)&ivC!dgoVChO>$NYE2iWR=3DM+QF~ zZR#1TGvqzVhN$w^dsZy&;E(jLrW;-#?9wW|DM(z(j?am2y3$EZK7|t+Hm|}Jh%PGJdllek0*1K_3oC>X;Ag>#|Z}(SX z>n{?_ljJl!5TgAIf1Sv5e6sTEvRC&Uz31qq>rS_JgM41j+;Rc!Et(Xt=3DcoJTx%+t( z<088@HTgxq>@ae(EJ#+#_s^X2E%r-yni`v@O!FezVQ-Rcqp)u1Zj9UJS1k|p-SBhu z1H1%k=3DVAM^A3N1>MFQV>Hd_2$EB}E*acu;;V~r0z;7fjke*UDsDpglsmHbciRyI$_nH9?tzAaPL(0 zt)T2v+_Uh8cNe+$qtx+d>R^6mtljO*&j#yTrkIVB0`*g{MQi3&UOIDSojG?P&7J}q z^JAWC8D}02cbIFLFUa;0t{-QdrL`WjUUQMKeh1KN1nQ+eA4`NUXD>$OrP6QvlcPfs z%6Cx5(R69#qL|s zBbb5DS9pFM-(7q!})`b{D^ zYL{eLV4z>)KU8n~Lf!P`CHf+HzgK=3DzexFO8>RQzgk0Oh+cAnQW7kS;uUl;dxLhH~4 zxoo4@R%PiIr&TpgpIjk3=3D$<{2+t!y6N^ZK;AG$MpsP#GGE8Y$#6dRs=3D=3DZg-F6xUc9 zNw(KlWu7;_jz40%U1*M9eVRF8_0{J1{s)i;50M9HkMV6DG^LHyulT~2x$K2)hfZ5B zd38B!cbQGhL%EmS!1YtcpV`SicbbuSM=3DbrjcV2cw>&j%KPGr=3DT-uDzCWahK6cJRyi8egH1Xx^H7wMd((gH) zNlZi_{cfPDHe#-K*YxJt^%wdKZyh;?*TBW*>!KhNQ(4E$Ud>m9f=3DPKPPuadaPZh&SP_Ec1e~(AHdN z>RI;7zioV5$o+&pdVGJg9qYsDv+BG!lecFapO}+}nAj^~6PLZb6g#O)WfZRwqA~Eh zzh@Lak*UyQP;p$@uI`1Ef%h6-UJ5*Ob^$$vf2^-l-tuRNg;9=3Dt*-?e(lQ{nBKFzO-owd;6 zF&K=3D0v+9a^w<^ZzddB@a)$5brE39?2sP{jV-`+W|hj9W+U*U;Rr0-Dbj6m>gqeW_|M1-O#?r)J|kgs!6b&9Bulso!i!=3DDt}Lm zANsDvbWOa*92aW1rb~Tme&I3eKL%&Nj~3r&&v!}t4^t*sDqZzX63%4*sFyhtucDx6gVAdL%i9 zcCb(Ibp=3D9e%xTKe8QQS$9OOV$GA7ph(Kb7V@ixvcK-n_p>V0Awbajc1S-}s{Lhc`z zUIO%W(9+C?4Ld@u3uWJ-f8$mbE=3Dv;wk}(UbKWAZ|Op_~5Wt+B5uAuDY_!(+=3DZv9ZP z-rldpY1Yw=3Do_g7Yp$v#EZh2bw8He&dVAs9tUqOtm>;zrM&*vG}sY+~y$|K-(Kj|hflwpSSkO?X8ISGJ@oZ|t-U&Xi0AUBWcXHmtB-F#-=3D%z) zbKm+J!cDTrtiRzy?pKqS$HLgfbwqVzuXyE~hv&=3D4V{*UxulxD6kNmR}tZbE?k*DE> zV=3DF|rvb(~ZITa??OY$MjgWh*yXDEw&Twcf%z;aQvc$Jkog0I$@xVM^|#ny&{rZ+q5 zQ;$7ISM+h#QINx~k76;n|8&CWvpLI=3DA-b`eJgr&vrnvT5aa_oULEq5~ZPs~#v_5RE`_mcAp z1v{<(1G}F>$LHD{$?}`^erRQgW8<5dR`-+JGFqH;bYlSDGja}_Uou2~=3DyLp1CulC^ zp4*_@En}b|+59yFhaKG@y+`{Y-Vq<~r~CRiXCW|VH^0vq>;%dE8)YjXe@d4xbLdgJ zLVDA_<^B^~Q+9s2Wwnzh7rq@nw&!WDMrQ@fCm8M|XGsC<$>03_ICZ&WO)?g6g*RW9eC)=3D$p=3DlI@3 zmS*i*z`~En1w2pfABkhv2TV-R>f`jBcEASEMCR%>Vt%YFs-cTCryW)vBmGbWOuFmf-oa8eCec#~9=3D_{=3DMSN|Dza^;iAs5{?I*!4p25zF>C=3DSf+6D0^i$^Vm=3D)e&ThkCo zzI2A#QA{E4PsHZNe*Ec>e;au~-SQg}-^|=3D5!ZqbX?`+uJh^|gmhN_Yaqaor}K1@}5 zmaxA;a~$?NU64oxW17#ru6@eKqVcHr(QVewgNF94H|D$Z8M|~P+d0U$Hds4-!|wFL zQ-Bw~%Bt!9Wj!V``w(mGW6U7%$k{o?v#%pA&w&YWyWGNi_S>xUVQ(oegLYQ&j{NXb z1;g2Y)EeLo9l)A-?`0oo{J}A%ZuY>)$>{okvoB0O>DSLgS0>U~O9ZwRzwv3+J31 z%;y15ZaOQ050|y~N8V>ltN|E1r=3D<;i6*oLdJMC&mbFnDW zeBbhvgR9q>m-v)_v1up%w#qK#hT|imADyC0&3h70c0VH?;oguv3C=3D|0!I8#Ce=3Dd{W zC%!XVC?go>E;|R2uZeo>d6eXm7mSEcQ_g^Swl9ufY5n;7(5vv)>@~nzwiz^*Z2vuR zLrs6wxUd68rT6^7pFY%IAFMMa*j%BefszWFTPL4KbTF^~z+Zh+4{n^~6i*tc%J0vj1{( z#aH&-4?JuP;GyTqiKlb6My+bL>lwS%0Y3TljHve~TWEg@vb@py{&emx=3DYzWVY7=3DjZ zo@%F(~r510J zQR=3DHJ3x}O8K>zDwy(>?OGw>c{sm2o6j&I@tV0Xhozx?pd7#gka(iryj;ODS1Y@kKC z=3Dhg33&58%ht^psNQSU=3DfQk_0_E-qgxeNb$L2U$KR)CC`GI9>UXO(W|wl1q`yQE_}0 zXQ+{L$#+zr=3Ds9z5YQc0r`zorEmFQ~rw)A`kAH>4*{pp_sBkUFTA2`#>1AN<#?q+Ob zQlrQl5ww1Q3g@}SbyuYVb8*}nCeyc6{&gK8F z`-2IEvp>r34_byDVcVZZ`^vg`P%cB0H_G)auzoFWcOqzHda&E{0bW z--%78eC+Q1sgh~#@0hhe-r;?n5hxp@^&4MzaCGS-alnCpQ0osz#DGf%|I4X*uKw6K zbIB}h5BX5kKk58^o^0p7aoHXFret^Ro0r|auO-`cq<=3D+zK>Rz8SD)gnk=3Dy<_{a8#t z@ONKoWf?N-b=3Dj3+a^cm^H6;b*?ooe}JNMToUOU4E%Qy@T;i`;Cq3i}hXdw8moVMD7BEu2}E?%+fur{{yd@0vwfw zkwv0MTONHt`Gb_7qVn|9`UY&wIOEVcd&p@=3D*Fhi9=3D}WU;K*kGaqEFUlh$XDlyOx$I z!#r|hu07g1er2V#1%~WhpJNLQ@!tmd0sb2QMMRelZtGvR?bTU26#wP+4SY)e+c3tJ z;p2|rzrg=3DL{u|I*;$Pvv^_S)OPqGDnN0Rec!rLC2ljlF|8qJ?HPHQ_J#ee_wJ3DT4 zmF2$)$Kb!NkKwp=3DJ7z=3DRf-LH}T)+3i!|Ihs%E#Z%{iq{;R#(sjO8n)~JlIvhgUA}npH2B~ZeORmx@A=3DkuGV+s;K%L{k$%tdSZxHG zuge@So`w!Lht_8M18*WzTA%R?r^#)n`;)76cK87s^9v8}nEgNSa4uff%H5Cb{8#+I z^Ns0|j7vHQe}ro@+I)7@U!QxA7MZ)DNO z=3D|;};kZxSpDt@r`Kf2kTU&Q=3DK`WPL&2slL@88G9&;xx!QTO`3;BvsX2OFPve_CE** zc5jBo@r^d#6dml1_03qVcj)iEsmd;uA2Y1HmD@M2<@qj0KJ37PIz`1EY_=3D#`xwt!yB5z zM7?Y6S_$}{aum)pd3(r>Z(p0JD?%n}&Ij(pzSU`I*TtP=3D&AU%$H^2KqBSniO!v~K38{dJu&&zhi`Sy z&s7)lYVWeSCelPqUaC^G?OBli#V+ehY`WaG{g~E&te(!pW}1B$8W^%8*^gsm;y=3DNT zwDjZ5sYO2yjf-{^OaJNKThDt|cQ*gNyIy;M?0U+le}8`Rer%jy{@S0cuxlJka`h#j z+g+c0>SzAs&#O3R8>=3Daz053$XmPgZrqJ|CTl^jK6t(toIEow;X)@<$K^Y zk$!D|efrfu`|+_y608*^d#pSe@^4vs`sN6?PD}sbR(W$ark@XL-^w`nr9Kb8zak%o zV4hVjnndeZ5~xlTX6y3?T*8`m6ZKBQdJ z`=3DJ$R?W#Y!u|zjLmORXy`yz1Z(n)&H?)q5YSHGus>90d8s{3!E6`M1Dh*m!Jcn1?X z+}iPciZ;b3@I!>|>N9i(q4x*9$d?n7ThGd^$+~_CPleW$<&T1I%89cWO#X_wp5zO2 zyKwD89XXpzV;<5e7d6Id0DLG1y5i)m9CFHhv&Dh=3DMV5A$Qyl3_U{0~r;scvzzqKEL zxAcVMjA-rMmTbqn>#`d^jm*(pS!Z*jW4B_X<<3TMeGdno9+LTH2G29r=3Di=3DgkbCSR3 zoDXN}E#2EOe#5ngF8sd6SRkYF^V1{8Bz=3Dr6P_6Mqy{lhRo50iR1Q#aj9GF~a=3DMFv0 zvnOCbsm)O9H=3DoeC0Cv6tEhEF2)BG|&r>PB_l2qlN{f!f_r?j{2a(p(-U1Ghzvv#37 zZz;5KO3~qV-U83fQH%lnHZ?czOFlsTz?k^;QBFTiFgHe>$HcqG-_ygHMqN4o&7Z!H zLtwd`%ShHS&vERW_eTgmddIED`q%Z0G5xpdp^qo2Os@V~>@Uam8thEpL0w~>O-$&( zHkoIVE-ZRty}O^+JDfKvTX1T@yZLdcZ1aOZp`Dw*LisH!Z|}YROWnJKdlokE!W?I; z|2xmp!ENXg$A{3VwPNZoZQk=3D3u*jCP&XsH=3D2CBK8oGWMUii8(tv(5K*htf^mq2!BS zvU`Qo(|?ml%^`oz704XrPRTI;{hU1m!ODg^?&W>5NsG@eJ`uQ%7k`lf7Czrgv>JhT*glh1vG{K?<{EwXZ4q5oEXfAq_ZsfsFp ze~U@v=3DPLvGAMjM#?2hNVn;5)8;XluCq=3D5I{syZO$R zFy|(WiDEo@lGS5v|3morl;qF)3>P9x?RgO6k97ua(VSRsYK4XAOJQ?LiSJ6hRz9d+i>JR@8rrU|5#Ix z;aqO|M^2&wysS^}Ip~k|MaJ3j6~5E6zdkiNmY@#ftfe@yB12=3DRt_*PiYgntl+z>}T zxQ2QUIkf%cJoP))S7-GNIDb-bC#Tlk$t-%GxzfI0vX-&O-M7?w^A6?Cm8@hAwbdC% zoz?%D`^cFTHdiLS;BP58*qTgzsMVZI9RtZ$Vlg+|{C1-C%)PPRS1gV+m!+L*y~A4J z$t(EI;U9S%NmZ3Ro|+g%?w`5W+A~*ON)CVa8MK(Po7)%=3DF@>}vy0H68$Zfmd-Cq() zuPJ$)TmpfCr`dtMUNW8#u?s*HY?>+Jz>#NS?{lNan%r`~iBiC2nLf=3Dxv#xBn^+p~ri)6Wdo_eQ<< zY|Qty2swFl+oeae?dN)AL0`%QQ}$`tm=3DeB&NA~TQb^h(|j5(qo6-V@gwMyHMAm2v) z`4s)IF%0VS$G+p%b*yng&qwV`ShUdQ#0f6C0llOCRG78UXF1<%)COy?6Zx&{AZ2wH zjLq{!%*o;0{h1B_cW~8wbN`Y37mh8Dx88i1wu^G>AhEuQwRA;3txwL&l%o%HrTlBAY4--fwi@zf)~U7eJex#6ER2R-U>b7mEn52HVih1@HaD zeeY||dv>2po7%NLeCz}DL+xrUPW8xV@^Ll;ZPwGgKKXT-sP|vKfUdg4t~+A0r|&-h zM|H&Ng`3{D^D)6D)VgTD;-{sPntsuLKDlEIGLg8Z#gTCN;^We5V)w-QCTxmRF@1SJ z>uun;BRR?L5y`L9hgugeqFjs0S=3DhzR2;zz#0EU~LwblP`Z>swIACW5tUGnvNB-@ge ztgE&VhctnBUiraY{ez4vbz`!@%Y-kePQ~%kUu5;Ht8`t^7sbczh<#LRZ5!ZlB{E?Z z-)$7r$L17jM-C`|D(i3_&f3rzSXaspN}np$|7*ksP^JXg-+VN~3MLiM8wj zO9f`zGYA=3D5smjz=3D5DSVtn^hSGt2yqo8ThM_e;#(rXMtvz6Sbjo9xXd%0Uy zk2BxVUePU6%$?jXs;xY@do}Aq2RNI<*+Y78Kfm2Qrw60_cK4hf?BsWR;x(+dHymh- z9lUXa#-wZctGPFadr#<|g>jwLZN*#IgCID<3pPfugV?=3DX{L6hUriuRCflhbMmbGgp z#>OiF7h*FOe?QjumG@QWQFF2fwO7Zy66;-J>8WEaF@bj8b7-fvzn!`w^4+K|>aqRB zuVExZIHzKBNVzuf>+*c$a_%SDb3wV3+JpXPc5gRDRwnU0)cUO|p3T!Uw+_k5YU(2A z7-wm!PV3WUf6pG}%{>qyCT-5Zo2G-hrgCo=3D-yf671k%e_j`f|UhYGr{MXJQPl(PPt%MEJ7`~U$qW=3Df_vec7{5D(b9lq%+ZErm zpu4r^o;=3DgW*alm?=3D=3DO`)Yv`US;_OLcPuW5G6(@FqArps-tpe_`j}?1>9dI6P-I3lD z4S`!Pak0LRr@+Cc88zZH*2>s^M?`_#2ovoKe%?Y?9gmP@nN!iv3HRhS=3DYau z&B;*c>|3`nPW<9uw(`%#x$gff_ij=3Dj3hq72y~}d(u zEG^&iIo=3DzmXV8K64uj|RRb1+m$8&CdU;OUMk9kM(_A2bcP$xO$kH9hh8Y4Rm8P9pa z^)<=3Ds%r0PlZ}P60HObcUL@m6QoL}Wv{Ba!MKQ)9i0w&*!~8v?d3?*!_T-7{-a=3DAWu-&rsa&7okDX zVL35t-1kN6DVNl9V5W05I-=3DgTA-z!K%XWwzl5L97_|7=3Dl1cmVkipRA33B}XF`UvCWJRNgyf;?2YxohH1XAYzsDB)$< zU5xWPjMo>wDod`tFSf^NNNa7t!tRfQ=3DV#V>h)Hl`3PK%br1gW_wYP!AmIiDr9P!GN zvi;2|xwGT~?w*EWf58SmjCl87fbN8HcZ}7yS zwzHcRL!~%1;5HSw5l8mzsZ^y;o~NSTI}cbpigh^oUkdpN8opOD^FDaW!N)Cs0WKqs zq?uUXIoHOiv|~Ga@U{a#$w9kb*w^d4x8yVG7w`*otj)gSJo{*p?$O4WLR`}a?4Wb3 z?@aeqHq^T0{8;bv&#R3i`DgaC#6E(TSno}X_1qcfoeTJ>PkxUI<2=3DqCX99hqSiNCm zjUBwUHqHy+!raGsSof_p4`}SNQ)f1mJQd2AVvV~t;^>Z5^UNKgc_wk+I`bXZUKq7{ z3g=3D%RZ1AWa-e2R6&-y~8o20YFN3p(|FRKi66i~g6Ztnep#hoKlg7jhSkz;k^kjrDe zH{PlDb8rK{4?E*-9Txv;=3Db6ra;+(u}i5;AOiQZ+LCng$pJ`3!w)R>tItZA<^Yh4?- z#_7|bV=3Dq8s!V~=3D)0S?i1=3D0xD&Sxr8E#xRC4xIX8P9Qo(aWEXwPIPs#(hT=3D{=3D*tg@& z{cbz5Z^_@{?7=3D!#e<^GGM7!1WZw=3D**`);+<$Ly(v``77@{AHF8kR!WPzxv_CyDuAp z5B+fL$fZ5d#W`VM5WXP0OR`En<|O&Jw65&Nsh?QL7s%bl0oGv!x0MBU1lPrqo#11f z))wgVe8oQjJKq4`Joku4EPv1jF#jew+Fo|?=3D-2`d{vAG%uRHsflUzDFLjQl^*!thm zClh16H_QW6vMc9H$IE{LEl0#F+>0OJp4N4NQK!nR;5YqN{Q0h^cWF7V>XXlTmAvaq z$k&z)z{(TuGQ;vnhL&iQS^JO|6_&%)fGWWd}z%d->Rt*=3D0^VipJlT zKJ;W_y$jdH>4231-+tTOceO-0a(t72m>r1qRon4TcrE+-geR7?xpD5L)TwbiTH!Teu5)GZ`@QBCy8?3EJ ztO@=3D3lg05f!tq(w{+}?AeQ(06w|=3De=3D$ME@k;CN91jz`M>>f}fL%lkt(X5V`_`yM#n zzi*0JWN{2FSR8*Dzp(tW7dbdi&-{&xu36B5%4V4FGUg6mB$vXSmo3Fbsk+wLwb*6)p zDm#97WSCu`ymat!TdeoGlsW`eduJ$Fu937&Djph zIh~t-(a%!J%_C_DUI}6kC>O=3DBbyP&%1M-I|MO+*->G zH)MBF2Y#90dGbS~rbV^3Hix{eyV37=3DzVy~&a)o1i~Xbcw=3D3(l#{Qn@W%flQCp)n*w~E);yAibdfA(|4 zSJ~Lep*9!?`~DaUd;6K6T}j=3D>+Dx|G`=3Df^XGHC0@rg)JuOTYtjrsRB!1>s?2PQN8j zmOma`EEX)Gn~kx9S6ba5zP0q+dfRdIYvX}Q=3D)g|ak9wc7bO#La$#aMT&N}DD4%kvj*4t@qKbrrUtv^lr7|C+jrR7JEyodOS#>f(0As`ab9-ny5q^VXH6}8UbOxZP=3D97V zuYEqZr5qV><|vg#zMR`L-bC8)#k5a@uSW-ESJ>Quv!E}>-+Nn!^UfK+)jQxft3Cju zyW2K#eIe)gMeVstoR#TG5X1Rlt*`y1#_8-+I_eBA&kU*v^4H2=3DCqtd%esf>XoIlng zN74_@&ZN&B#_iY#!}IQVVPml|BdyX2)Z_Fc8l zy9?NhT+~h*!ha6$DRWVEsP*>qQa;vh#&YHrxtyqbr0%=3D-5>DMb=3DL{Bj+~X1WEX3X<->M<)4P3^$}x^I`hq`fP?8r8SH*#;LAYU*-M! z-uN`-4Ad!c%t+!?3R;HgG?rM3R!6V7tD0yi1PV}!%ucw=3D7p ziFg~oQ1vG9xx4d4C+5hpUC%ARWAq3-lHVhT$8nbaf!Wb|-m!BkV!c;=3DU+uVbSi-x1 ziS-36{(;#`4lZw9LJ@uPu*>aK{~(G<@6x&V2u`k2^9n?o$u{^>JTrdD0p8w~~NKA5X>| zwNP z?ABZ3RID>6kSYFfhn1-v=3D?4{`zxeg0`6V5WOgPkN@$0NP%~1PI7nXEDr{_C#daC7r zOTRXLuJN>3@4s(R-PR7{Ub-okxGyamY^z82q3Kn(U~gkz-)+ZZ*Ps&QavJl7o;&Rx z9_NmAX|8?x8F1y46SMF1$@M=3Db{)7IYSH`S%+gMak_Xpf>aqpMYggyl}_M%4wOXeE=3D zf~Rcy{60bU?_dM8+dkZ2=3DkzljoBwdC;9lfdej34h$WPv)`ZUc=3Ddf+2jVrSO!9=3D=3D{oNVTcM&plx!cv`p1}>iLDrH zttWITF9vY(#i?i#?<>|1`{G>L3lpDlbTR9i1ECjwG6#F_oKS0HZK$C!Cr?+zdf&6U zeAakx;of<>Zky6RL+a5Urz)@UM!h#L1a3~wAkId}<-AA^gcISwaR01q5%Hm9GJB1D zJTD5b&FSXGYaE(O0vV9xg#r~DI^&WIV3ERl`P z+!6YL=3D0xYQ-X~V5KIz7`G&U!)PiIfuha7Brj&&O80-i}nDwn?Y?5B6;*7yeRtQ}`s zC1cPzBc)H0@qen$>5D>LTVN0Q92q(0M7294Bi;GZ(X!%5y(;@m_7QW;lV4UHjOXKI zQJ&C+5>Gzna5Ts&N+ zdb@dM>$YovjjQMv{B?4zp25QlfX$)MhO2(a{;yK!_to#VV1u&;mSBz0+RD6xzHj_B z?^)h=3D>VNEjQ^(*8Xn$8rKG)h!S5mb;`8`JRGeo^NlG|YLgK!2L!^t-y8|YX*tL4LZ z7`s7vFJjq)J1wu;{STfSHKr!kkK{`Vwca6p>zn)s`K!vWiqkm$$?Rmxgbns{ok>jS zyW`6fSihO@#6bOod+(@s{H~q~Xu{ctBE6kq4av^&54~aAa&Udf`n1@SFfh+#9`l$s zd|1foEtW2qrpB1f}Hd>+bo=3DlDAY{tLRj*QMFz(CIL`ZQfx0qo#mnT^s&nJ9bO6b{ro*Q7{ha z^)}b0p8>85ZTjUy`t7r)Y8;kkCldEK#jFy(Qq!k53SY`2gdSq8^y_vmZuctyJNNt@ zY@UC3L+?9q{P6jq_Op+te?jawek)|L&K)X?dcQG-qWa{0R*rx3hMz+#Tf!ZATG?@I zS}9u2dVwSFwO$}v$@@3^SKGGHFOj813oH-heb{#>rpgx{3m*Ia;R|s(fWL%uhVEE* z0NLjLev;oA=3DXcW>ez!S3m4SMGFL&>Mh2N{>6Xk4eFSN8V??V+W*|md%E7TAAFkffg z$e+hrm zetS;0pZsW}HShEUsW;Pfn+e?U9en36JeIIL!T8d*zQ*`YvNmw~OaGauK1u!X7|ORv zmaDyiDP}YBd~2-t(WlieeaiLYWL*b8Yb-qj|B?cFenw}Qtj6CZI#0H?)jM+7&M}`p zHcj^*s2yjX>s|*BII_4Cy52lY9@F5_H2n|l>W8Ii3(pVUa^UIlL(f}XdhR-cp0RCm za~r=3DMzi0{F5)Ynaitpgu9{ie1zIB%=3DhF5RQJcj;e9l(tpCg$bvHnmAVy~%IkAO1Tl zUo8#kT%+a-<+H!z1Ig0nt5yQzzqh;(uk0AcE7)Q1N^7jQ-pb-OryWm0JG0z&JZeWa zRrAJ;_09L5?{D;h%UjMDugm~ntL#1%$tXLo`1?k^=3Dg`*&c5i`fL#>@tM>2h%{KM=3De z;yf~9Z|B2n^-=3DHj8+k<^dp?qE0EgGE|C*J{L%arU98)g8#9BhX){{gxc3*U!*W7he z%WIzXd0r#tF4Wp|ot4ecNH+hSr7^7?O?b8GdlLqb%TF}D=3DkSl`M(JnEKYA}itd960 z+johJ?;D9JUa;&nb0hLM({crKZSA=3Dyo<_0TS~o~t{cFEtD|w<#zd|>#rqJ|9;Fw!$ zfCuQqq&Pru*A-@Ht;w!Q_5Q^6Ew{hfY5RY5rj7gjkx}-&)2xo&Z+-CDoDV)5vFi@M zcGs46TDlrqTbjC3c!RD6zGv&uT#GZUpgm`8=3D}T7LdhPlEaqo?+Ej8a_*9WeIE}gZd zp*pO*u(Hjm!&zH$>KIyEx@cvh`3%u%(=3D(P%Cw-T(pEyPBAL*CTd;$7lj{mhSdhXKE z>tSdDdU_@O2L1~>$Cu2$Rz>v5(^1Zz;@KClCFSETvwU1hjs|kmJN~kwQmr*#&O|Gr)?^9yJjCxQo_2Gr_s1v3X#hJO-?!(L@SFIuIylQF1I^=3D0i58#ph@MLx z>;2lwL-2d@bUiyzX9A9#KGeo<_7=3D%+en@9fkXyn24)QzX{2s{gI}+>N^t|drCT3K} zYUWz8-k(_cN1JYJz@NTsVeYI!SbsTvVht)chdSYps>9Mg_HL*(H7(Y=3D{`>zke_raTuadOU7 zOWq({gR3R@sBJ7T*CT+7$05n5SW5v*W6i5&6dOvOh0EcwU-#G%^UujkHe_+4`@Ucq_Y`7fC!pMvIp z{f=3D)*ar}?CYu)}#x=3Di!5jFaEG84m&@u9q)Ol|62AaT#Ik&PRgRr-{Q{48%bYshwAN1d++FZ2h(CSaG2XHH`Q7&Hm+f;d z&Rq7(P~UUwb{oYf=3Dz%{vYqh3AZNkGF3v~^2aBi%3+6O!`tVJ&xns;UG+8JwFFZE!n zpr=3Dpn2BwU=3D6IifbHE%bs=3DriP#`gHx7^;h~+Lx1MQsd#vQoLoBUPxm~|v1%~m=3D*x3% zUs%(ypL}1U-uTPtrx-6dkvt*aS&`N%qs13ld@=3DqT(a|-G zHAr!N@_r4Mj#s#_w&U!6ka=3D(*Cp%Lu_(HwvbFA+(4!p;G{JsWcb*O*g5BJ;e_8<0N z%({gd%zaevr1MSaKow=3D2@1x30yoUWp4L{s}a>UY(9;Y(l4$dK9nuZPw=3D`0-eSvXqxpfTFZ zK)vj%OT8ssp?w6gkA7zLy4HB9H)C^v@GSPxCdWUAUgN$q2ayfen%WP(n1_$rqV_cJ z7A=3DN0oYfd=3DopO=3DtjeYc!_w6(Eo8wb%wsM+xQu+H<&ouuo*89L0bdNqp?RYxixz^?i zr=3DFj+=3Do$J!ee>(NTi=3D%`pR{@M$kQ7w4qT#gR_9y?PS7vN6rBZ@gAux}c|oktcUa|k zcLucLA%5J)+4IK@tYs}YZGr=3DH^YQWU5bJp8THagU6P;0hU@qr8RpCzy&QLC(8s;{B z{0wDkqkAWH_W9PSZe+n`$A@_p(I57ckAaeWC%4#f`?5329J^yiS+Xvg&m&8pZ4Oq+ zd1qh9m4^neQvZS8rm z{>D9Of4|nrTG^AMJ*>XEYuNh$oWuD2!%gXvEM2cjpT*dfvp95M8h#mICA#IkGR64E zde95m9AlHWKF02oHY$m4t!ht=3DEb&rK1>kU`Do*x6g zNbzCH=3D7zoECO5~?xMVh*Nd6mo2R;-mCdMKB-Cu%6(-+4Zd^O55mO7PuocID#mwnyF zz#L#MEIASDz2E6Gc6$yk_(yK5gC2hN7V!b)Gs*_$u_jvAX?dBoFRjs*TG*^fPjO*i zoZA~toAYCRBkva+go7jPRN)hQkoDgSMyU)w9It#n$~`7{Oz2Bb0iM3}zrCH9{7iPB ziuS@3obYP;e$inv6jeXUm5-YG2RYZI13nZjufo6Rb=3DP%U)9vVkD&mqh68HL+jb$%F zhb^%>l{sj%cx=3D0EzZjT0KB9o#$6@*Cv=3DxQV=3Dud=3Dv`9+FHQGMxOF^AVaWM@u-3>fi< z$_wXVa+cudg0_`A&&nL-3{dP`5%G#k#Lv;{BTjP5E3T!hCGX$6EVqtRoEh!V zRMdOfIpT#J4Tv}DkZIug0K9N843C7jozT>7u<7JdAM0nIgs$qD{-8+$2RHZOnC=3D@`-{y>%P(!x6mVHLV zMGF5mXXC}_J=3DX6{a#X}9cVTyfDF-&YohqIG;+Lp*&aAqnCbVzOgGOU?=3DBlPmI>`E) ztZy=3DVr>lb&DL-Wo=3Db)t~bM7Pin6XD9z+f=3DlQ}TGY=3D@DOJCHrN=3D)BXF}nHN!({!9f2 zhn%@VX0C&)Vrw_xuL#&@%GqW0Mn?HWh*v1Ka?F9-?0%KuelXOUSxU~}5plYI4E+DP3eWkMW0@+4g!N$LShdM0&$@J}xyAMXG%%_XiyF@eQ)cW@$9|Sfk z4SLUE>;&7!H0LIkg13$}2EWR5E^JmTP4(FOyx`ck7*okF-&RW9sgxGXZlVb26Uf>&q1RYRp^smyC=3D^icz&p_dpp07 z&l67X4(tV)Qu z8xcMtANY4?eWd))W=3D&}HK-JSgOs(VuKFt{p_d_P)Z%}MHd)=3D~Yd>YxApNz8^uD>Dp zxgo~cz9vtUr*m#|!D+@zCU2b#?szClKXy6ZYPdbpzI&@+0A}XFnQi(#sy-_#*kb;g z`e>u~h5A{feQ=3D-2UHNF8e%xFTYzlGSu8TSHVN9Kuo}bRMcr3A5Ctndhf%`c3O+6Cn zSY`Urhk2-Bb)+MCtzdwMCXRXv{d`Arf%Ug_Y!bM$=3D<}XPN3+Rvo&!PTpTV9yQRqKc z@XY*kLUD+U+3rS%M=3DwvZbyZn&5j>LM9sb~~d>=3D0H`E=3DkidiXr>hR%e6?n}^HN|1dg zv2{3)YtbO&eEt`3J&^G%bZ>h9^lu9?oxV+ z7Se@$yE0#N3$iX7Yy2X<)Dx3>(_`gXD(B$to|o8xwjXa zv@6oF*7O7Ebl4In$7Ur@qQji5TJXzTs;+$fD^-ckk94U3|P2nVq{1orc2f1sk4$i`90nj?rS>ORC#1lb=3Dxr z-oR#m((`=3D(^?*pnNt-u#zoqwBUbGC}9U;9ToHG@cw2z(b;O5k+{jlkmOFlT+5(rB^ zq1y%RPCK1tvM5kqa-KJq`(cXh-X6}ihBxMc(~xMU{)Mv(*GH*ZbX!{5Z1;#+o|#@v zI8ZQGY04Y4=3DPw%Gtv{?uyLUyaED!0Dm*GIM;mf5J7*7gUZQ}yrO#9#Iq2B69d$7UE z^AA6DgO9TqdWG&s(SF;Sx+d>_bcZKK#@+WQn4KP$98v(;W^uU!Kbhfi^P}Uv_R`+d^2~- z2mW=3D%SHZD3A zoK?eI_w00)@jn*B;l|L{wrTt@KkMAi>&7BO6z@`%T>M3?mpi>+ZF>B}i`B{_8-hIL zF1@KOO2y(^(&uHQ=3Dlbcpln%UEex5w_hXFmx`Y?)d$he{X!K23~yU}eoR8D@VMfWW* z4;L&a-L128?#mjRE42@7ncD~UwTaXrneqfp=3Dwo~;Ilg38^M}qvQJ-b|OK)_zZK(3` z+ADsrYpB+5ogU`&t~;-fQn~n#KFV(|y$hfC;>#l)ofj*uubs(SZd0Uvgz=3DboPPP~G z;q5*SihE?;!<=3Dv7>n$B07%$VG&8%^14p2M9O)UP`NXG|;N4+yXY+QU}aMt2jq~lfN z2PZd71_m_OX25s{^KJ>{mkLgQ43nato;qDyMjQoG_ z^V|GS{x$3yGg|sE6U%*asdz|mfu|5Oa=3D2@P*BTc;=3DHOZrNWlf&x`OM^JgD+3=3DQfwn zZ^gXu?sfUNL@)e6i?>HQI?h%Z>RaaY9Y;@x&&I)#j(bdQWb{?{=3D%#VV_!V9*bnv$u z?$I4yA9Wvk+4|;+lHnfvO1huO=3D<7H9ylY*%CmyBk)xG(w@kYi?6a2N$*?p6X08yU| zU-_hmWTQ$aNZF>o?p~|$8u{STxls!EV?n+`v-5!UgkbSuC{!Ncz0mi;n9nB_|Ka;! z3L@iJX0dsE%JV}Pgzv$O_a|N(In4+)W_aOe18atC$KF(xUnw~Lyj>4gpw{_#2 zW6+~tq~n;;Uwlq|^EfZ@R0>w*Pi*sQGRoXR{;LHSeiYqh_FQ>?JI88-;KY`#z*iY; z%WXD3v2$5{TQJyo^KU3S)Rj$cr(Bn8MA|4&{lUf`qVF6tUZP&D9q8TINXOsa^~)@C zbP4yw_~w9XUvANU$~H7RDP`k28FjnK2cIrQR=3D3HhAAXvD4E?M1;^KinPZczIH)EMp*=3D8bcZFzRh?VM;$i) zeHxDwjhVxt+k3vOJ9LBUNtLI}c=3D4G(9w*SY$sso$ZuyKGkE^VV>g+Qf<-0r0c)aCH zk&gFG{!w2o&FPblr48p?{wOwR@JCyl$BFm9wUIM;951rx^U&9#WESs;HqIY>`F8wN z!5<}?Cw!~T<)z(}J&rAW%f+I}&Es^=3DPdMi??R`qw>RUty!A{>sN#5I; zs_f0`ODN^5$GKV-jD!sNHR5375-f3|D6>aGk>_7>XL znb)pgzjgik>qDyB=3D9=3DuZ%(4Cl8<(7*e>p0zyurq$UygMA)nF%o6rRSunsAch`lR*z z_~qmC3nvfQ9UnNMHkQD@uQPS;XW#G5>GSQDS5E$Hlh&&fi@pBXC&Z?F&g2Dj?-tzf z4SR!N{E+Y!1h6;f^w30#EWa^qjrM zQ6N$BtGKKxHaCH*eySUNuGgF;xe{qFdr4`u`w8~} zj-M$x!dUN;9c^(=3DjGL+juYaYDdoPHXCBGxo&->0GhHtktLv;C`avYA*+y$9ys|cUSl*o(uf3qu=3DHH zwlkbmxA8>dQpI}=3DP&<*1cWqqrEFIgIb>sF*A4I+!^~=3DL&oE-B>4i}MSUS|ZDPGzcjGZI+EastK)mCh<_9Is)y}VFzLvVNh5x6(|@IR=3D& zhjT(7+QY@W~+s^Ufm+jt6Tjp_H1_I@JYsdGIHnWBJZ;^OUH-ml9OJP99;!0 zb)45(_u%;ZX(ymQqZ6McSuUQ3-W5w`dN=3Dv9ed0&-tv=3DFTGF7mHpVS<$G2I&JIJ{Bs zg%|p=3DJvLUhKleh7?wpFO)OzL_k@mwjZb*;Sy^*L+Ji&b5;(d0=3D8`+7Je2DHC9||_! zdL}XacT%T~XCFV>BMx51?xq=3Di(y~IblK0nwn{k=3DAp--by^-?E#&S4u{k`Mm8&}WS0 zz8#CJQW$CT>q>`(}SK23t z4|6YTs)pyfH!|_u)+HFoyQ$=3DhHg;-9HE|~|GB~=3Dvu^wDJ>0oVZSH8+3@n84RV7<45 z_e*5gNJj;K?9~xHyZ4l5cmI)RNAt!XX^hj?w#WSPd&sjXRtYQ(S<~RF=3D>|LNisS0L zSEl7#i=3DE3Hh@E;rKiGtvKqjK&eqME0e(BHLVQl#PJv`d@qi=3D=3D1tl1fG5xi z`Ta3fL>+f!;L7PijX&B3Or}>;&z<0+TKE<2HBPF$josnxSS6keijh{}lUnO^J?YaKsJU51J+W_x9F&3Rr z{i~{E-@}#7Vfxw6+L!#cex95dA4VTb*^9%PZe2I{19pQO_;puKiofhk_Y2WTL|DFH4kFW7ze2rP`YrpON;H=3Dv}$9}roRVTRhQg^*XI_@~AccRa-g%%r8 z-;;K8rKKUCksTR2@9pO}zBy>Tg$;EQ`uD^RnGgRK>xcNl@!B0TDT7XX&~RYy(MN)f zcd!mN|2?%M8OGXs(BPZ>8tW`~*qHHQ6Aa}_cWd#DYcgOnnS=3Dcq3^v|Ag|RRj-A#KT z=3D4m`opZvX97K@Z@Hyy?Cv~P1Y-oDiJ=3DfHXgN3ueGtm&oRMc0=3D-^4Ib+x+SZ88GidO zsee!UycG2{`HGdxtW#|P%M0}F^RCWQN9}Al^Etc{&^yj>#UGOWu70;o@G9byKJ0_{ z;|Pi~{ImFwjjmVubnO6dCC9m+m$l`fV#$T0NXPA0t6uGi(KvOufBPA|v)C}B(T}dz zv*Vpp)jjJkOAS8VRV7;i{AKl|-SWK3FwTk?XRYC!ue9>0PoRE~)4_SSR(g(X;;OC9 z)m5*1GpbH`b2=3DNmy`p>POm8>v;ODyI(ayDAYv(pE(YfC{+7<9RyEt>GYg`~V(((4$ zQ7Uc2A1)g+F*8umRn}b1^Ikpkdj`K-{ohf3C;Z=3DY`0d9HHrMdG(|=3D#vM&17JdVc5n zznAda))%RBne0V$g_U71*Z4$vWW(xQ;^k${O-etpt9g_Ey}`cQnp^zuE&9gC6K$IW z>~lYS$E43AgRs-4s(-52FH;SVT5S2pl~tS(dc%^o(XK3I0omXBtw!|x~c*_~VP`EJ2vatmJl*m@=3DZ@$*q;wdkrb1Wo@E>DX_)N1b*j#7EVk zF;e&Qw}GLb<2U*d_Hx?$;APH7l@ELU&r)8KB{yrI!H@s98^^7$>pk(4(|p|4Yh8;q zqz#{@Z|W0q0;^O9_byBB9HB3{D*LHuM0xCj;tbl(_*8VVa@|KV%6(+tfhXwt}1TRDdY6Vmyu_w@<@lTo1i_$BRuox z%_{#bbQr3%PXjmfHQq3q*&e18&E70k9kkn27en?ZPaWVM$Pl>o8wCa@MbB*%u@2-@8zC7|t4(Rnm_Q#8KuEn_9r{2T9T=3D z9oG`K7|4H`uXRvA4ss@N4fbJZ5)3`@ZvV8RvKWGJj#Wu%c9NLEeHRU{^i?*rnOy(z@my=3D7p zQ*P&6Xt9uUk&@Qd6V_4&ep2gfz@Oen(MGJ4?li{6n4&YpeO%7~_a>{+<&#>Eg#Hz@ zT|nCv^rs(SDb}^Z&(GTT4Gnq+Z7O721G|4d<;B&!)+fE5;qT>`pYr`scS!y5>sm=3D& zmqaO$QU4a+*?3SM(J|P#Y%lN5R6ey8&Z+3}4ft`rsdlusn9)`~^?HZFTWoBB@T@pR zmEVBA;DL`^i@)W!;(5XGRPif59sTaHv$H6VZ;Wzh8U2s}W*h(hg4)9eNgHD{)P0tM z&*%S&68UIir3uNuB5>*WhxnIpcEI?@&1Kwo+n0tp*f|sJE(K3_EED^f9FIR0{z#wk zseKdi3E_w3H^v@3Al?Dy)R+fT^pAdtKCxlkcS7G~^M4(`McZWFQ=3Da?@%jo~}Wj(q@ zGU?04+idN_-%BETkjM0LXwo_MDa8dXADF^-0-lU?%-a^FK8+#qUZmp(MqiD4Xx}HU z`yY#fE#R!l?G;a!(TpZYAXes-*!Vhm7n&}WSlGN<<()ph9Dhp8cv5v# zmNr+X(p|abmlF?PRLdU5+8rM2u(5+`Kb@yFN4BQ=3DP8-X=3DN%}KNcl>!#Ec^@BGKjQ3@E(x_QWK zZSZqLq~oS{l_nU(N7BQDtNFtQw1#ua_ZeMGRxGb0uhG`QYx@IyIkKF!#hccvo{NX+ zEbz1Q;H@6n>B|zIo=3Dwy{T;tu3M^w9}ze4Ms^=3D*PP*-<{g;EAa%$xrgsDAtMZITm}v z{KD_66wjgc)8P7MZ2S|(x!d+_tLs#(tVCyqm>kxcM>y;Fe8DdK zv|U5oEBPdE;=3D>}G&2YgJ)Th{?qh!%1Jy-Vh=3DYpwy`g6oj+u4Bpv;Lgn@N4l}?7Kp4 zfNRbr>uIODC%!0|NHlt0NpX&+IaPPv^Swv7kbR9@+DTt4qX47$>#Ehw8zl3na|H6x z?b$MW?zqv!(KfjPxy;^`YC?U#vV`JL2Qm@T1Z-icB^nKd^RPUEW||`~ZDyzG>6wWERSmVR3CrpWohet&N+oH1q%QWA^gLVh! zN7++;-%PjBe1zOu!@P`t@Q=3D4gX-H#8XU@{jpj2Ic{mVbDPSpjTegDbw{q*6%m2u)< z78-B&=3D*Btp(~niqK8~v7lxPb6l$@1LBD#NEd$i@&`~f=3DHcqg$-FFr5$jTaohr(@pm zj~xx}c%)PE7kh^J=3DuY-cD(0>K6|pXUO^;>LVma6+^Ud#`^jNZ!n zI4YTs|0!W`)e{GUp3IrOxegCUyP{MUY~c^M)A8)dQ*QkQx>Co3qu}F2V{?Kvr+|1l zy8b5i?dL94S$rx>{Pb48t-aKj6>J)SK8<{Tqj@iP0_Of`qvY5rcYc7Ycbfd{_{(if zr|NL9O zc*Euu@F*C93%yd>zgBtg?q(0~xjGlt@rR9_CT~)(1^xpk#5Q~)Z%BrikIP{B$(I>} z$m7%Ta=3D)!=3D)94@{Ci&4frkM z>DU@<%Jqc*aMqDFwUef=3D@a^8ep!fdxZWUjsUGavMZ84fGGd?LI_7z?up0RaRiI?O5 z-n*PhVf1+3Pj243s!Vr0868^X|M{db-W&E67ljseA4!$7{sX69pJb2YkB`Ac3cv7! z?hdoqo5PF?-I=3DX8B6!*C;$Y*7dB}o#x~@-}-r<~cUg;cqN_Whed~D? zj5=3D2h_5Opu@1^9g)2jz;H=3DeQ>>=3Dj!h9naeMXC9cxe!IJ(G~#$}#j!Lm+T4*9tzYZS z8x3w}mfkcV)-S9*oVSf?vGY<+Mt9tlt20f4jdvA0e%bY|>Z)o@c4*DT)w#;nnAx9~ zh_ruuxzYuj(oVdtF}!L^d^Gdt+-CMleB1OWzzl8<$adw(+i$k@jomE3e-Uaf`%2QFq(8td*Jbsk7Vvgv)mFxF12N?@iQO8_9?(zFGc)*V1M5un3CfLX32YnH#C*|; z3SJ_&h>psuyRkk z=3D@$auvoZ_?i{ts|5Tfg;<-Fk)L5q=3DuCsNX2&;)GvzisPC8dfe4}YIkkh z7iPzYg)fQ?tdKnC{HhYwkq7+lUgi+Ae#iW6VZZ*tuCAY*;n#J&Usoe|s}SC7oUZk5 z3pNB+BCD2t?0o6gBrFa`I1M)bY_4DL=3DT&dry|N`wmGrJV@b`Y*A8&iOx@~>fuloV` zZ(S3xRW)RVr)|s`Lwwq~ibG)jJ$KsroH6jg9Xek!oYl5V?KiCr{C(xPteU=3DgX+J+c z;hVK8Ltf*5=3D$XZN`rV?l)@);(^;((xNGCdWiFg9}nj5=3D6SQa0}-@g`>#bQNe;FkTr zy1%2{l-!%lDl zUSe}f%3`;cI6ABs9V#3hiVMp*_YJ=3Dji%$2wA)F$y53MW{M6`c-8br zjf2$Or@2b=3D=3DcgPG4!0&hSN?aTWBWkyB6HO-hx3)Ux-s(fd+z=3D59JQI!TW$PVd!MW; zq|RBfdR=3D=3D-#fC>Zp0+s(AI*bp=3DWthJ!t<_ctNv#B!0{3BDRZ(Xzgz5#pyb8irMaA6 zfn4Kv-cs&Q&~N04Z}+eIGBU|@@CLK^87p)U*iDw@uxeM>->WqNcnh-P&mBqF~=3DVyau z@Iao%Tb#4J1ZVub5~DHg7f}9KZ#pJxs#=3DBfu64vhb%qvo%KyS0i&-toACKAa@|kfKp`SL|Pb*NHdS4EqfyMBIZC`|+4SV{vTF&?>YP%Yr+BNvp z4xzW4lD*Qs4BZd9eSRWf>0^E~+0&xEY-qlh$&OB~Gi9zFF?QLX<#bqI$J?v1Y947t#YyGk!?0r6N?^&}D+|FkG z+yS!clZHE-^Eo>QbnJKJCtl}iFRAr`n3rJV-50=3D{skm>`y_fvX^zZse$L~%5D}G#}?s}I?Q%J_pLV^H?ICwr2QL1Rj;jwCif4w-eyIB@`R)(ALj`1o3Utln8RpY`dFU&rdH)M5D*>lV)1Ydqrf@rZ_@sdGNu z*;qecAbftw_*#6JK6|?334`yeZ6e*})dc5&kIW^1N>C`FU8kPJY1H z^L?p#)jEp?-*!(dMjbvU=3D%D$ua`HM)ZHhmu-nhGnI&)NKnnq>n$D77ue*L3>A&>!s z<&Pv^KRX2{%MjS{oA)Sm4~{EKcVjPQ+UOl)BS6hp){y4lmzE+o7PwO7gYQYMVKOdAz#@{i$T_ z)ke1vdAvu_rACiuL-FJ*e}Laj=3DPPD&7C;`~A-)Uv&f>cWA7%xz*5=3Dm}-98=3DhtDM+n z>q(j)me7nowuY+tskHN+@$d$*hRvCD%y=3DR^}vr~FAc3^H7L5H$oSl5G(_8HD7 zYhy#-ABvS=3DU3=3DQxmNC_H$DdO@_wq6Ghj~R`XI+ja(jWDQvp2sK&N)--pfk~Xc8WKh zZ_j(e?&07ZIg|6W4a}xDa6V1}_*!3*jn9JnpsU_a9wjbU>*~v$JX`Y(8;?5kx?{`D zQCcJ&T{L-vpS~y~{aQa=3Dbx!ruH)o`q9QMm!%$-u@@v(=3D9gGYWh^upnrv}I$bGGudR zQ+$H_sDqZNPRWyC<2}P8?O(rM?UCmL^|f<>7%{DRkRA>UG5+)CSJM%!pN;oS7av4AeshJ& zh@O3YGrAvx@o`<`*x#N}9>bIQckWrj`OmBD9pj6+hgkb8*ri>%kXy0<$!YiE7-E&9zl|5=3D;DIiKnAk!Sh+m;dkHVe^HD)EEFR*B9Cg zqBn)JUVKdT`Tfk)chHkwG+6yPA|L%tad7n}?{hwrW3)nUGFPHEy=3Db)Z^KuT6_Twh^ zWaK%YcZ};7jYnL2$<0-*HZFSBNPXB-@gF|i%l&oyk69mlbS3k{FX5YagR|~EJJSBc z2K5X6hu2T82X2eG(K&S=3DwYM^yGZ6dcboegOo*~yraA9N+STcWcX>DNr7Y2&>Y zT8w5ir!#dfFtk&AUNjsid`az#SL@ahyStDzyg-r3NA+F2gneXssrV__c<r00 z8O^7GAqKzU&&EU39NO5Z^s0KD+nCk+9Q?)7*|MLA9D8r7@)&%^bNAj1&kWZ)Czq4! zwErW>-3V2cj`!+@{{h}RZez*lSMSFXI=3DCK-bZj=3D-_R#X)4qz!%o#0}c^f;~kR~0m! zM_&d=3Dzo1N|(tFA@1taa@HoZe%SrM$`PB`xe23HCn{(7JBr^89p%1Fnr-%}a&+4wGS z&RjkB;HCK*>NOe8Ty&&`D$_a=3DuUrL7&x-k6i5 z-K@0H;Ain`-eBpZm8EO19`haa)A8u1A>#w$*peqlK6c-~llI8S75Cje@_YCF&&Y4w zmxM>^Ev*QdReIlNd0tX}4zjqxn~1JgTX!|*Q|{yMe)cEd{I>QiAaj3xmf9>i$NLie zFv5okepve>&b)0`8hvj^_giUcjm`fUY5%I@ep#ty9b^y6;MNCv=3DxvFZ@1hLh>8dbD#Q5_ACa@45*z$`^opruOzer0+LxQyBvUho^VcwA+WZB61UlWnvW_CDB{stcRk>X8jXKi`bB zU;cv9sHecrDT05%4fE`y)_>|=3D;_kz_-0DDgt_ik4*9O|KvGS#K-7&v!8FM!Dy^mPH zM=3Dg)*@1RMpz3vCyJ=3Di&d+i(zU%JJ&1Jd|Je`q66PNNdOopZ+!Q|MTZnMt3I&N4`D` zKRr5C?{z1!52KA?wFBKc!-3DdZs`-bE8y+lp}SvpP|wGaC+Nrr#Mkg`ad2pMbvUQr z9Fp|0bN_1_FWXVOe!z~{`eC)TJGLE&t^aau?K_M4uBx5(-H8{))<l>D$&X;$`d}s%O4jn^=3DrLVwPf<_iT;QIQDHS z?oBbW#3Wmskohno$v+u6K1d&izh<0@>phhqMm+ zF6+fM)suo{!5ahQ-k8VJ| zJmKb@<{wAe>jy@u5MAwj#UwGNi92>Wj*BhIe$ezb^V>5Q5u?nQJu5c4fLOxh-m163 z&xrw>V^s;o>g}|?6aN)#Z2kqjbG7O=3DU1*`Cw;wWEVp}GWg~l(`c|6iS{w}p=3DczQ;AWY(8C+3}Fc zp|)|SyHh)BM&#I`QiF4>@R${p?kN8dPN^%;=3DgUTDyIHhdIO}fc`nO#g zU)UK3{|>Fl&UPdv%@O2svWvorR>`2G%y=3DhpaIcR_|N zdTgd^$D77p62%MWI(XJk?tGeYH^IxT-PK5ZdjE5$58p9ndYRSrTANAxc`91mX@v@qbS;)Ez zmyRWU2((k1{Y?7ur%QH|iCpHF|$hsx4b;|CrIVQXNHk!~U?N`O8&|NwC z(UqOfM}0%4+^Q_|ZYDPAHId;(Gk>)=3D6xm*cAmSvZoR=3DQ@+X#1)Sr1 zqu!f*L~aEeH-vdNQ}5{C7PX&>(NioFYw0=3Dk?M$WX?Ciq)K{eF36sC z*)`~vI#+w z^S&)nt5BjhSC{NB{XeR$NhO8E`X zjrSj@o&Q@QXk&!dofedKj^~WrWMv3_@JskUTV>PO+9%`D?u5~u9ZBZ4 z71Hy2`gfJ_j%(wA&xtm6PhtB=3DqeuA=3D^&>D(eCqms#U)V>e2mrmQ>zcJ@y|0}fG-%F zNvEctW+OTL1dg4MZry@Req+F9*|H1X7*bq?eN;KdYpJSy;CFSq+&wd0W0I|+r=3D2Bs z5BYbZR-+tui9T963mio#HTf;_)RuMujM)a?IYK#oSR>| zbA2D1#>ezjebD|`PyZkI9_RjURT?s7uV^fsS5@9!q`m#&td?~D)8$BaeyAr8_SET* z7ncU!o-`Th_~_Jj^w%bMX#>0jj!tbx=3DCJ4CIQJw4io)3+^z32$46ys_j?xFk)1$tF zPFt_Ft)8{VNbAp{U$LmVhT;uB=3DA+0|_V-Fa?^?R1C*jv`piu?cj+1@z-j$gb-rtK1&+n7xhCX>VlP9lFo-{A2P3l=3Djocfw6fO@{|@-{asE`h>OI{Wi|CNHowM6llTDxWzA*8c)#=3DyO>GYfBk>oQr z*0eUEIpOr{4%>%Esf_y32bupqMn{o;+7~~5TMZ63BTYW~e4UR!-qtkMID`v2a{V8&FDRg-MV8qYsZaBH@Qh{8GN=3DVKXYV1#?D~Uh_^`2q3z7HEcS-0J>8$e8I8&C+TQ89SFn||Y|_e?0zYv^S=3D5m| zfAZo3=3DI5C_p_W?@Yctx*p-jqu4(5E^3@p;QW`ik@?5dDF8m#%-wcoux6KDLshdPc~ zVgH}WJJt=3D%cELvxWWJT$^ZDWie2V@W3Nb%L)~DN3G^4E%=3D+iaKhl-U7WBVEnSYI76 zz4VoZb9t}(-1XjI;#<6gK5F`KN*@L1`H^FDogo-GI|#n9*w*5YfHfF7_R33wRsCu> z$Mt#Yz|ci~`wFg~@cXmH_2<1UeftBxv%=3DZ$T_zut`RTy@hjHG0w)MkgqgQ?yny^>M z;%{^oLfHGlGX~E!@Bn$@lMm$+GvvvRIt{L|Xz6Wor_>Ru!=3DQ#ojq1E&>H}*LwavKz&H8wg!_2u zc-9OPS`$W}VtqK2{5fMPmv3SU@HN6Kz;T_A!yY@=3Dhcm?sLEsf12!APghMwil_HsBI zp}o8%jMd6Bfb$&YZN`lJHkHKebpgxL$@Jw6gF|*GHhyZ(JDQWmPnN?^IQy@h{hyo~ z11E}&qx}l$e!|m-X?OB!!x?@+cxb}nE#=3Dju^TKzt5v4K+dJ9^p%eA5-DRHx)}XPs97 z?t{W#mHa5cCz{}+B!-zr+kOO)uwRvUwU}Ee+o~3QQXH=3D zt)*%2o#9DzA|C3)csjwEdXzIA+M6fdLQiX|TiPo5He3CteE;C@ut~9XmREsCWY6Jy z!OLo5>#$ML>E6qzqe6AG{R{Dv1G!_g3fsM;H6&Vts}aoG1uiz|rfY?Z58>ZzWa7_{ zz0{_3deMY?y4R+-z0oN;&@S)5-)j2wb8xmo{p9;L zhr4&{X+od04>u)$GkqLdNA9A}{MGVTkG}8haL3~%4e%8_+z)yV5-$Twp8CZ+qw!^Y z?aPEEnf?Ifr=3DO;4YutU34gs%Zo+C0Uflt-xO&jiyw3ojdr6as^K7qy!dwBPX-huOw za2NJ&e9xZgLpb}$29oqi>u|igM6ze>efX@wQ`OduS%(E}2`q#78 zuyt#cO2uc;b2oc1D`=3D-Bvz_wu9qv01(q}Rw)2^xvdD-!=3De)G;k?n#feeW&(fW7Kn2>|s{?(A)W$7KfpR;Nb z4)a;zYMyn^uSc3_F-ZCZ?Rd0Jtf!Z)yn>DWhuQOoblkUuv*f4ep7)=3D1hdUp>yNx*a zYtE~gKKUPh8_zwSAJ3)j&(O}m8CqEn4`jE^Bu1>esuj8R#;>YlLmY$cYi@des zf$<^EG5FW&hs!_1`9_>O96uviU0&h^rq8jslWFLuXTl3p>hAwW{*pp`HJ*0{V|iX| z5POst;it%jZpb>~F#;t+JoHd}j?v^E=3D(9RLC|Di8bryR%IKO6~_Kqc2kpB$6TW<4@LetLZKW6S^?l7K=3D&N=3Dy&h4C{&)v+_OYpV}c z{1f9%b8a!PdzDd>fd#-Hm_E62jQEta0>Ll*jQ5hav3IB%nOaMptZ9dyQXaKCh&=3DcW zlKWP+!T0Fs{N6n}FXMsGba{%l~aIi67kQ_ILIGkE?e!2-jr$b+$Z26J1U1K zcTX?tKSp<1($|5~M|k(7uQTap&`ZN5oMK=3Dlbx~k-^dp)>P#DK zr-9}pXD^885-+ne^A99;vUiyMQ`)l=3D+i`JTR|#notIOh(!{{56_~XtWgkAhR;W4=3D` zvwe*P?IB9dYn=3D^VZRc9ArgNLOH*=3D2DyjDARzwk^u(!&E=3D=3D1F|NqoGr&k%i~Ex;NH`hj$D#W6~!;(fh* z4bUJLdep=3DYh0vXu>hX4d{L z<`;AkKh7I}-Xhjoo)%6v{tM?gzYwKj{GnR^cmg=3D{{Jln_5>Ep2dSK3aWUlh44}#n8 z$C>tyXJ;F1{9&ZM$m${{Cs$_)fy*9WU$(=3DO54WBF^I^DKuVM|?!OeLvn#-goS3Qd! z*g$-}Z@V0BNVXncn@sfH8_(YRAzt2sXNMHW!_{T7i8Qx!XGD^@KcTh%*cjVK#(l$) z+6DWDxV4SOjgPu`uc5otA0H3bW#A#G^`vmt!)8bJ#=3D+cyeQ>ZZ(mv#Qy-VRhb2)e@ z;*~xwJ_#O#C!Q1EgtOmN9Jtvl@ME42cLBbbhs1O0vs*8Jb7C9(DSOHG54PD^g;Ns0 z*BzZ+paFX|HoP+=3D9~C;p6kEF@rk8qNGMm|KNX}kgV`q!xEjTE;KD0avP{6lxK^u50 z3zs>4HTj^{40+##Zy+!BWJ&dcw}%vq7i6Qv=3D6;cN*3*^G_xH1pZpUS3xKI~dzm`U3O0*ENyxz?~u=3Do|9zT z?iemuQvC7JYxu8kHC$^<$WOspafwDdBji!x2!5FsAMNdKxQ6}=3DKU`b8{(s(@vyu6< zg!|k}r@q|qZO@zj8FaeIr7z3>BL9r~j_)bgx9Skxe$SvJ9MWCXS>h-{s_)JnqH#<(9UAZtCOk3m*Zq z_Fbg$?|5pTJO5O%D)38BKTquH;RW=3Dndz`NYACvW8dM@?Nh;0Q2=3DivJU4>A0YX*|&H zSlhUl(YIdK9^+su>*e6Y@HJ`b%kxVIw91ZKPC17YY#?M)Z$91^qh0w2^Q50j-;8ZX z$IPuRi_HZO{l>i*dxr1aFXqQ{rj`kB@f^|zf`eRe#5-^VH`yo6XW{JE_NQnIkD8Ag zf6*(}U&YXJcev!4l=3D$02Rc^_Jbs--IdcYv`Zze-ZH7A?)E zl>OS4%=3DRT~=3Da*hO+qZQ}YL~vS2)@so*4Y2|^Gk;m$G#gbi_I#&blR)|-MY_F zAM(|g^h1v?N}i-YXR1Ho?<$k!ieVK!;n~`IURadTUYNTW@)qnGQoJD9zp2vW{`9S# zm(I`a%!_|D4DW=3D3@vlxQYa2}8!g@Yj8xKz^>rIna59o|M)~5J`cZ#*# zo9-`TF|io_<}L`)U-iU_S%YC+1^Xdyei{AUQC(K^tl3s0Sd$FJHfGI`U{HfhIAS%C5IQx|gq3z7t z-;)0jW+3}R@OLFo4K;cweh5CMy{0;w=3DU*XK=3DYyM}K|p(t zl{Y1m&>c*FAl=3DD-E1TQ|yxU#u1am!OL42b%hWO}kwS1qkS(B0N56lOJcGs)&fTLxq zpSx)vr+lL!K{BWxw6{5IukHUcS+jUpExx?m1xff|Y>D)aYWd&d!#k^E8`#$buIXE^ z*c18`PP_r{oH3wy`hat`#4nf4IqK5+llvF>^Wk;!W6<_)%|&(V%JPMqaMn80H#8=3D- zK3{nmd^D>pKV<{M59md1+&aBzub1c+kJ3)bIa^E)e^qTwymZY3qw{X`s7|$$?j!Sp z>*Jr|CSN2^@h#Tg`@*8y)%}~G&GpQYxv^P?^4*wJ{I55-WVHEFCJNWY)|iZD43yN) z?cY>8>xD()gVnZq#u=3D^@=3DlbzVjdRI+eor~h>oB-vQ{~)#g5g*uDEqhSu8aMMxy%xhoDZT^j z?(w0d+Rcj(G+BF8IEy{NTF&~4ve*OTB!5?EE|bn6-6M7g`S$15OJmPYDia;!mrKq} z;6AnTOXHU#dxW3TPOZ~EhySHh?G`>tY?dmvO6TQ}{}*e&DA zkcoM*13bT@`{QO@8arV1>=3DvxF5v@&7f05~0sr_A^K5D0O67^5YzF)c*JUgW=3Dhj(H3 zj%WFn)&FwAD_X-}MUrXYprCRRerDkI*EG#f8=3Dv5xKRv<0sX4g~y8h!Y;Kh5A>wKBE zLi*$`T@blscpgqY^?`y|Ei(Pzz+G1r>(9xPzP+>}_A|yJ`rz-Px4}=3DA>pOEVFKg-<9UH`Z?xX@ z5xlU)=3DY@3*%=3D_`Mw;R9ECe{0oP}T`#fFuH z!r3pld;c^yprg@$^D{_SLw>dBj2eRh9yyE-S~)sBURzRYy^-Y63vCW?>&UAsujVWk zWU%-~a!B%_sue!mh z!B&+!WamQG#b48WoEyJ}^;4ZwdQEj+U9yWmZ@10@0r%*B?@dp^g&rV#rb%np;q2WH zGM4jFaI}>Y2Za1$&7i{W9!w^SYoA5G-vLYqs>{shOgnW+V)&6a@!WCv8u^{;?N*yw z?~?6Qmkd?YZjrwRy~3w_hOY5H?Z}g=3DH&;jLaP3@ZR6IF91E)>8n*hA5 z0RODT|IY}r>66~?6wdzd*G)e`pIp2hn`}5dGiK7u7VBJ3KUkAb;|jh+$6xB>CVdXH z(=3D~goIhX(BOVkuAE8yc_OHyW<68R?tF^EmnV-z)L+wE^oB4#ZwCR(>Rm z4X1sRz{tN2UnkD0Q*#`r!Dd_s1gEU!(rPIfXmW8B_Wb)}8l`j3#6F<(|{k6GS=3D zjYEnPPayN}ak@wBS?0?1(jg8I51y=3DtUs}W2f2aTj`lQd$?K};?N?x%pv@Ez5dJJ`Q zA9Sd%9Gaf@v{&sk^WLvsiBkC|@n$&tS@y%E@6fjSmvi^Ki3j^TbPt_%d9rW)?o6$~ z&d9M}8UG8$*xkq_$?@h31ZTZ?NP8E7RlKt-oOS0zf~WjT=3Drv9*@6o(Izm%AYVWvl{ zterccsCM>#v#DfH#To-Ekj1YXU6F_471<8X)_V7)Dk@B+A$MoML-pj>dE(Wg2YK_v zi?JsX4|Cp8Wh$@M%w-ELVEvMHwc2le_aA;M|4!8c_$;^jQs-|Wt`mPtIsRDcF2WAP z-c3HZbQEn4^e*Igli-)1wyM?io5l>-Dy6$tk)F}!?AS=3D=3Dbk580&s!VZQo_anbEl2#!8fz`O5$7QPO=3DknjMlVRmTY*E` zCuX*LFTTRLv~|Ss;?5?|ebQ(9$8}#+_Rit%uBh&roD)@RG=3D7@+uzG0A-c)$w80*6I zPHqGWM00!#rGg2Z)o2g8-c_~W*FXpV$u{=3DA4D~kfw~60d_-^5EC%<>|y_dgMekb@o z%3tSCwsAM#&_FJKd7Q;(zAW_2mD&$OzbeYB?E5<5zinKgpqH$9+xAY?M2&i3J3-S3$GCO;9pb6eu)*rl{3Jn+}V8Zfa72j9ymJ4bkS@EmH( zcwf!?EFZpY8SjI<&-UTnnDM@dy!7qJ?X?U0H5#Sb&QSL7pJl4I3nAQ!4)_TI*mb$wV)eBZ$I$O4yoiUO8i_ysSv3mo2xJ7NS zhx1Iq1MT)IpR4z;8RNP;R`n8hw=3D!ns$GQkUUhu?_V&Ga*cnRxy%ssKuc7EYb(H`C^ zr|#X3o_~&8-HQm<8t2tFj6|kSMrV>tC$D&fvyTS*{Q;K0UhC(dqP*0D5AHR|EYkjL z{+rOE>Bp5WZsP7bOlJfAM&=3DJzjp%uZGMo8rvSeG`I^V&HLB} z=3DT&sYhqDecIeaPT5lsdSEycH+m~v^Xt>n^p?y%bVU-izNU&PdyHS*|*cg zp%Uu}lwXfubyww!vDuSejO`$Xr?kZU2(^D0up|EOS^2RG3PRLbpmStplg7>~3B_g? zRO36@8=3DpMs#re79%grK2EL0soqw3DsPU>2xb&=3D}oQ7yEwgElxLBvw*k_0FHbc?+{{ z#SSa6dhJY9?9EtNMJTq8U{7c~p0Oa&E7+tGeRTTFX>V+c&H}UF4$B8#I6os>& zBFxP`+4cB6%-%omBXn}sZQ^DB^zl0Rw!S)fm-e`yM(^3UKT5NotoLl2pR!>r#uU9p z_;TkzI2pnCT4r|`?(ol{qGD+8^YvcoOUyAVWf$|^<4+=3D8wgqzG7&37L-yOhQ&O6qg zOimW?J4<>KYtDIX*!5c5Q;eF@W#@ezA7rNgNxmHX5=3D9LYsrwAc2lN%n0mpNk7hO&J z+s&7F20Ai6cas(8dw&-{|AIR?r{l$VX|Q^J8P8>@=3DW3OC(98HZf8vt|rFRl%ebTo( zdg-3{KEh_}O7FnVRs6p0on(%DhO;i%kAt6&wJ`b}s-1<*8;0yF9k4D|YQDq~UC4Io z?(EAWZclY!cjVXuk4J&2cGl5F>J#_~$iI`)T{ZVe7B^@P8EE!`);}+-Iz=3D4ff@E?P zdZF3}x69hD;H&`cHLHj3X8mG-^K&Cpidav)T($&fWA7m5trdTo$JnpLw_aLN7B3xj z=3D?%j@*&+q|Vv1foK(c zM}DN_Ci!vc#}e(wL{8LmUZTx&(#ff7Ps32J-tUK<0k3}6jeRx0F8GJqcyMQRtV%v~ zZ-e{;jQx7*0N1D1iwFHWWP{Y(URnC-&geaPVMe;*(KvI8eLH2GiCpG=3D1sdk^U9l<% zUWA*Og6oLsPSSzuXxID@+OM3WGcfO18ub_}$!CRYPiqqBj-L9;T4?o&-9Rf_X3bFB=3D!s5_ zHuT#poA5AW;Cq*74_Uu;HlEF=3De0a2t(fWS!o99%q-(CK_Z*Bc-ux_jMAt!!C+l!Ky zL)rIRw{_}^(CR381Hq<1J^ZD=3DB|dJX|E}b(DP?tz%EP!gSDa^;y*>PaW*^`?$$ozpfQ^#6|@7BfE9>7wxHCU?Sf; zpU;5jI)lgj3;QzPPgCDVZeuTJ?>btbQw{iN5iR(=3D^EkE*dgZo^ItxlF#Yf&zhlfB=3D zvH#rZ-rkcZ>lp1GMVAjkm$bdYJ>2`yC4!l4Iz0W^c-8d{yq`Xg@v5I^MO7eBJ(7K_ zfWw}xlom^mS% z|A8%`I|G~BxX;MVTY(Mywz=3D;H^h0c)m3N+G4BgEBAg#4K-_cUxg{8V!8~mibNYuNe zOFRa@AqUs_V*vhm^-P|(NY2rZP}`OG5e5z^9{CM)BI2&%r7JGg92-9)qP@VQ+*t5N zv6oS{_=3Drs0nSa^ZKVUrTXybKCKE%U{(eG{@`8|NDTp5agb0=3D%P)t8c%wQxm5He~C_ zB4la?|7FxSwTBkohLIOj$CsC&Pbc>bUcp);wsx;_zz|z{uKZIOboOc%{^FOlMlWc^ z+|rBJd)j*2=3D|d(@yiq?`@!53?H#Sw$*Fn%9zV7bTXX6*^^V<)lV3dwi^@{e{(C;xv zFO65i1C?g)&2VG#<+*$>izHv3$v1N7fXk zpNV=3Dn_7^%FSS%qiaFiKH|CVuXXKRoC`kU*>s!v*f659JYVm?!~ zpOW41kI8nvO{PbZe|jm^UwAtt-gABW)7FglC9V(q=3D4#G$>HDtMxjW3w7BlFVqo1uA za)B|JuCMjxp87mzvkvu^A(KqMb@d;xJkY43r`#KvbZml779$1Rg>Gzcw~FESwdZvP zpZndK$uHMAcwc+SPlsM_c4fdaMRmGzZ=3DKS6bk#Y$(;mZRPL3UH%g8^tXa0Ee(bRi* zWt6L9&ve(`9-Wod+s|yiA8$nD*cyw`wRYFy2edimUv}V;g&MWB^?}PtB_f>F5rq>peZkc_5;wmrq>-9N96XaD) z9C%xz7$CJ3NxrD~pW1Xk`@4RIvp3@l?p|)Zt#u}669vTQJ^E1~49v)bx5f#!P(xO$ zo;5aXzIDF*8peU?&*Fc6H}P$H48OPVTl3^jey9C@{I21h=3DFED2C-^oW;PP=3DjK0tmK z;0r9`uY}(fd6JmHUz1n)EEf6no=3D@g}?fkD2w{=3DC{3tadSxzOo4g4m;Sq3<0<3)RqlPD zfcO0}-pgjB4*_`O<##jQm!tb^k{##fGVeM07kZupExxaTe!RI#<Zey-<_%cA+J{O+?w&+=3D$8ZEJ$fzU zYy+@Ch^duvy!UyQ{mjK8Q4JMg^v0`sIV?*zxI z+fsSKYY-ZjWb`@Ab136E=3D<^D2zq&M|oNO+ihh9zVb)3&bd))^_17P!gM*B0$b?+oi z_cNs6J}XrxaId5+e%*jadXwwd{`XSpoHL~Rw^Z*IKP_X<>#pJbZq<$cv`P6i9{qgA z8^Rm#JwY22`=3DsBVYJ>Dmq;u9ypeCICNGk3&WBvS*HOMRT?O>}NwOCtXF~EiSV8U6k zYel!ZrQJ30QE%0S?M@O+@WaBS-Nk38?;IhFrCp0}45j`7ofc_Gi6dG^zP`AweJ zl^2dqrT+)dD|k+&|Cr~-^1@N6^oMw!$8#$EuRPB#FRb#@AEZB7(|GpNAN)4Y6Uz%n zrqb`{c?8d?^cQ$8E-$R~(;wnIv#&b@2VK9|`2YU6f^1@K+`Byw2C@&nB z%Kr+_dwBNKAO0NA+sg~b`{@r~#`9*LQ|Ztnu&%stLMk2j0xNhIiodF6%Yr_%4`c{b0fbip^Rys*Si|Ml5C zPvqH8|Mf*Yk0>uJO{J^8VxCj!@E`G;h3?!MHzt0)O0r#gOE~K%g&I>!$I4e`wp@|& zEV$n*3aZ@JzRiy)h6MBTol)vQx-mQPlN>WS68 z#U#`ut^A_+azVbffKNs>m zo97z;S@$YT{(BN5%O& z|KY}Q&VQJ+y(qQ@uC?zb?l+!=3DzD*Pdy6P6`z+vz2OI5FIQ^nO--$uf#O`iO@xhnIm zt^LO+??v!P)mX1!6)e4H^G7v5)IhEKOQd; zz|TB0x%c$@B2U%8uT3sC@BU7j*C!oMSu$K_9pAqOKlcl)6P<8;8R!(R!B@KvFZQC=3D zKWw@9sIvT$(m*}$x5y7Ip7!a^UX1Tu7Nuh1oNBNaYh`Pu=3DtsRD_~)4B$PZVDA?M`CcvFl9Nn~NL=3DXW^`Q*8jTI@8_rL77nrFoSx_6gWNjBSZ{`W zO@c4%{iBUrbn?z#JlSkK$^OCHji2%3RD`qF@1Yy|q;bT%8=3D?19#jf%FaGrBWY!`|Obic+EYQMA;UbhOV6=3DzT_+8ueE+SBye9>xTD~&YZ@& z#`$^dsjWS6jaP#_$iwEp4&P2bX@hw#f+ms^1*m%2sk7wO#(d6yWiL<^K6ZAfgH8K$ zqwvKh#~17N(u_V9$Fpp)H|Oj18E2i4&p>LDPX^vmVPE46lS|OZ{Fugj$DN&H?U}D-S#0#~P~GE)xwiu!`4xXm$*fE*0fkZ)Y)2+ zWwXhW{)kp~E@1C{>x1!U&yA7`KCE}`mk+gPd@SMY`+9hVGjLeH><-TQ^{3qvKTqqO z7H>W4xBvQo5cfXtQB~Le=3DsA-Bfnpom(FO$>1Z)yh8xidclZ1(4J2JF4XebduCk1Qp zPe0LOJGsncCV(|jY!gLqRFF`i#ny6Zf7nYaU{F9%`YyKWjS3hFmV{u78Z{v#=3DY79x z?=3Dy2Ug4*}F@4b9JaL(+r|E#^%+H0@9_S$O)UAHFrA9PvZ_;zp5wJ;P zGl71>|GF z&Gng>30S)aC|A!UOKGRmc_lVlqQP*NFUu;5E`#0B$e#xg8MjNH*ZB4*MyOy z=3D$tR(QsJxR1hVr_`j4~0)Ul&%+Z+B*L+w=3D~9vSwZkzNH~0CnaPaeSirIDZ0~k-vH{ zH$fIO!4D?bu@HVRIBzX|$j4l9tF}2#Pt6BtyPCMmJ5KL@P~u%>HC$pUjl=3DS>*j7&l0- zNBig6XNIHs;^Vdn@`3l}d@A3`{3E^{=3D495*{Nk&Gxew(%pT@JPvIgVlNm;BJST6T- zmTP4>Kgx7HWqg_MU64nZXRhdY$~af%w72pxmsRzK!SDQzZ*!?f@jKEFF`Z|lC|im9 zD-B~M^RXZ7|L26m3tXzcL$B=3DkwQ(+DBzLT9l)3s0YaHw!Eq$19#zqG> z#BRX9=3D~qT#H(awJb|c=3DI#@{zyvq7yttN?iCL@?v=3DxhTRvrFW_^w}5=3D+khc|x+mtP5 z+i{*EZOs4gjz8he#~2579C_2ZUiEqYlRPLm)cjZg-920BSEdKJ%w76xgLf)taa}|n z`AoVfz4XYxL`zj>W0ID*pD()dLigvPXG#xK_xli5!iln9{w!W_lueBx*t9-t95B8H z_3d=3DN!5oD(NL^(Z#0M|52QwZmCnMl5X^XJ+w6r@Q>t&2!?$EmO?Okt!4ka@0g*hJB zug}6g=3DB&v{9HJke2Y-Mw!TB$k(To_>GIyo)1(!W9Hy49{F2&fX@wX>sTRq1v`pkXd z>gZ#TvG!dm@TZE6xeDvKkM?lxQ+q(%Z|QODeId3D_1@`4aQ#r>O3rJySl$(O^sshh8OhIAu%FC~F8K6?phm zyO%vj291Ba=3DJVv&JZ;adbwT61udy6;Eb61)Wq*7!)ctx)*99H^k(7*tPEHtEht|pd z8-2W8!%&B~$})#gc5!^6?ozuR(RDK($wpKBQ~E9H^0wm4l-5^+#@q+O`1o0UMj69V z=3DK9Z5CY68A@P93Tg{<*D6Q+c-AKwuh!sjUC=3D*M@q{%dgEc;~;Cf9@ThC;un;;|8Ir zgFpI0-LKBmb%8%t6dCF-Nz)X6{ON1pkG2$ly!HmmrTF89oB11fQfuCfhf?xP^V(qk zxMh^i|EXhQFn|0&*0i5Rixhv%zx?yGk;-5Bd1>w7^Bd0jJZ(S^bMVKUL!YON9lw3* z-w@vzI;Y>-RBz)S^OCHYAhX^6b|>B+T!i&g7GpI{FhmPlcm# z=3Djq}2BYk_4bQp|}##c`d$M;u-fpA*~()jRz7Q{!+>F}ZFqkt{1xwmff0qk{euw8r3 zf-h7K?3J(uDxOgG$;JiD!*|C#C1YHdll7X-Z(@tb*cOxE!-9`@LS9ln=3D%oo6! zukpqN9os7ryNdeE&v6b1ZQ*@TTi`EsKhq|zy~O?j-W=3D%-gWvG8Zn!Zanw3L-&BePX zn&siUj^mBBOdf1N7lAjRGqGOi{^Z}yKxOhT#Wz1c=3Dk)aYQ`MR2_45g*r&svhFj`2X zm$ZE*zES=3DBQ`Kqu=3D}~=3D?evU>=3DKCxd&-*BEJt#3P$9m7kiZ$I;$zHiSmHrp9^@n^v^ z^i9@b|9an^&H8_*Zx75nL*MqDxo;2fUI(YV({kq~k^TQl--zR2#_~Oodouxty4Qm~ zh8S5O*PM#pyq;)grR;s?)j-#WbX9rw{-}k3k@GV5_r#9K6 zjK;+_-5MRb4`=3DeMP51_%!?q2v{7?jbX^FCzyoIrENlb5V&9@MjgL*#CMR7mOb(hR- z#0SnnMWW+-SO@kid!&8z$KW|^jHyPj8~;R4ryQ|uu#WL88Hg{fV>s_Sn8r1gUQf|~ zstmOI)HM|5#%yIjb&GyN9U_=3D<|3+zqa6o^6oT49hwz4m8X(lYx$xjOt?(3mFld$!`goelo2#5^E0K>uKm-JU=3D_ zEsF2%n_NIS3LJ=3D>=3Dl+u3gG1g4$}g;ARv7iExxw0jGvIspoA*Pi_40PgV~^^iwce(0 zybAl#_hK(;9nN-eJr6m5IvXE&Y!RyCpV(^HAEZGVrv6l48tC^sGd3l}@t58oJ&qbG zWUTUh(E{}8N%V(tH5_}3vFpXB{|@1O*w=3DG$Co5<%SDk;bHgQbGb1_!FjlCw^Aw&D4 zy+7P#TCH8|{aTTbra&KKgkL`k79v+rd){5fAcq#Lt+K z+D~AAlKtSiow^wsw#QVj*Z{1F9J9{-hGZGML~lD^_AM2xMtLXhI3unUY&dU-I_>e$ zahsMEXMpE)^a%83HYgi9I5aHzzdi|@q3U>mUfj-lgsQIb-|0H%f=3D8;q0`K=3D$ZU9sVyU(9c(JIYEG&a#3Z1#ebj;iub(u;)o% zv7D;;#?Yv~H`x)xmhB&FSSlFezPxc`!FA35+eR; zE`Dbtp0lTCfsvaID|zITYk%K|Ve}-m_TPS1sC!2x(>Qj68Os8A<=3D<)6{@Z=3Dtuvuo0 z`B3-H17T#;YkxOvjofE|U&2N9x>nl&mL5ko{w3?Q$9d4m72PPwpPFA(cI3y4lh++} zi@gB*$5<~Y9!oD1%vfrQ4%Y*F=3D%}kAGS|_Eg1X$Bmqi%AJT~t-_?%oMHmd0O-GQD6 z_^%E=3DkPg{MoyeZclzwul$XvjzW%ZK%-tZR6{FJRDOTit?SP~N$Hlt0>wQL`4%UlbX z954(Iv#;Y@sf&2yY4RB`n1f-MJdgPuFjRQM&vCvv4GeX?0t3&K!1qSZawAS;EGN}I zVG9})?_r&G+l#B9J7OLuPCnWG<$LV*gBf-EQH*~w$I)+(G^5`hzTJbiD`V$r{9_+O z@XvV}c51XKYY(4iOQLrCzCdXc?!Ib(?r`f{k;UuL{)_PAX+`@jinkR0zj;;|joCUq z@HH~fh;iY0k@yfFtva+FYos3<%%SQpBQaFb1ogo`DZ%)6rE<1i>p<|2Z`AuU%}N(} zK>Dclg^|ATJHgvH0}H(tw(dr`JFZ0Trpxttc08u{B$}PRQP|(XK33JA2`}1pu?^e5 zGGsllkm;-+GJUN-fxR?*rz~UpK78w|GZOeGF`|hFyjL?$FU}zWmh;DiktYeCXD4|u zYQvY_9^s`;AY?61t^v?4&$OsEQJ1$};7sDX7cznEu}-#)-_V)a_IYc<$gg3S{S)GZ zdF^%p-&2k}3-~Q)j32ZfL;Ev2ZvtKNPeASuv?@PBqcxZjZ$|a}OYYqujs8$)%b5cB z(ea!V_8~TEn(bCJTlHudh0yoHzC$>N!gCU<-*+S5`jB8188 zGAcsd$}ZWp9cSCXQ>bSp>xdu39eU7dfx}g7NB4ho-8f^Vzx{cf@fTV?t#RL?_g>g` z%+AlThI3L|{0X6V3u5D}|2#Ag8l%3RR!0P|tw$eP(%Tan;2YWT9RA{HW7PKn~~ltrs*7FO@kJKBX=3DG_7^CZ z80!rC^NU*z^_LviNqZy5^xH`v5j$?A>~jLfYTEtqkM_T8jK8F8hFoUb6&eTF%RFu- z`=3DIu=3Dy}WY*@lKm{lIp-Gihp|o;g{*sTwqd0_0(|XV+c3XC&f*@+ z1oADS-G(ucx$g@3_)3Z|jZLg475nzSb5eEfWL+y@)1Zut_}ei*LH_eDRisA~mBu2_ zC4u;2GOn>^=3DKkISbsqm8JMDTjFVBE{ll(fSU17%-_`3ie!iIh2-#TD&vrXKMN`Aqf z#E!>Qo$nrCoq%P~{FvG!u9Ud~_=3DN1QS&6LtOY#WPt_ChI#e8l1P^_oCM;j}8>Tp&L zG8OoYik}2<54wV*2kaIGan{TH+ffzugVKk=3DSNAcYorVZ>} z84I*0=3Dx@K}H}(}}#n%scM82x;$EA>9 ztUtZlZUb{;1@O)|f}ojI0e)yi{;2lHM!!zUSxtN^^tKwA>~redJ!d)Uq5Mi{J54rd zAH^8?Bfl%U56C_-(*B$(Gthyyql(@G`=3DOU4Fi&xxBMbDtTj9Vc(ES$tf;TtuyRD}p z-*=3Db~=3DMvk1Pso4)$^iHP{A3H7=3DAVPUKdA(LXY%YI<%J$AqHBO=3DjWXARCiK-pY?%Hq z3X^{|--=3DEI_>+Csd|T1MyJ+{z{9jF(ujcL#`-NW-la%>Te<5Wo>Q!^i`8%G#7#VH% zgXKUY$dyxh%+K-Uq-~0aZ+wSvp^qDb89#m%uly6+7W@C*L~G$UsBgo6yoPo$jo&toA+9U2ro6eM6TV;Y zi^AGJr{gKKeF$g9O=3DBa{JxI^(#aWcPYm7qN(LT9njnRVdt@tkI$bUD^cojIym2>K) z>aIfj-g2!|;Xd$rO0M`heyldyt;v(%-@U0g5>~5>VE|8>hpZ>B52GK#M|Bp@J)4T> zo|G}G)0c}ZlCk`YamoA%Ymwv^8TDjRCqT@)xhdJT<~>LLX-Zx^By*dh`9s(6yV%cp zra<^$z2cM99E|g_;E@*aCv3VQ>sJrhb!tAGpvpZaFqALMED^ta8P~=3DH;!L+I<4EOI zXZ1Ly$`@posI({Y2G~9z!IgHgYdrxKwEt>8ULu>-$XGxt2&=3DhBZLe{U9j7NRIbu&2H9_T`ZEOS?_2XATqztbkeJ;&-Fc`ZL;x*h4X2C^9P#Ja8UjekBGvQn+ck!_JSj zP$TwqJ8-57YuLM@hWc~Zkng%&=3DEH-R4Vn)fV{p*?qsE|F73!WN$M~rrTpsaJzb|BYipRQF3(kIy)WXd=3Dco5x*KiYM!$akA-~J{ z1&kT>eQk1_>oLd-%B)QvbDTRHfp4vY{4vR|x_p@5m`BlK?L9V3`g;K1B5}kP zl>Q4n*C%;X=3DNT<|l6uaTd8~uq6wE)L$=3D`TqpRVRRc&J{@an)`3$v?*&S503E`hhAN z5N#p6^PT%H@YiFVS}u!j6S98x=3DP)Wz_5W-;-|g7N^brNE+tj%mv)td#H96$zR7nr` z+n-A)7=3DI>XT-ULNbzuHF9dEz~zhWZ43*NC`sLKCBwaYOey0p1Sd;^u=3DAo{)LPL`1| zslGGb1@#m?1~#0N_I)z(t>9S|v%i5)3jOWdxK5a%{4U|oOZsE2t>H+~U+MJ69X^VH zqovcXOTlUE9Sp~BA4vQDbPA4@!jJ3&#@$B1Aa|YPeT#x+V3Wiy0Uw+J7R76TSMl1K z^tJ-Rr|ocz{IgT+e&bm@pD;Fq z=3DiI~zp1b|+!gCc4egOPy#@O)dG2}(xOf}y;p2Q2zbjke=3D3ZIYNVVA+2u%CRO((iwd z=3D?b3v-;q4B-UOeIB~Gv&wYHsspIup@?pd=3D~2Kn?^HM73-LGYK-Kc<1sUUen~_i+$L zi7EJ4l8>M#P&Sxqo_OpPX&*d-^sucPDmYv6>~E^i7WDyj#!>Wv)k!|r-zNxfC&$og z!Fy_6vofW8Qg;11*|sW=3D_#p|w3-J9|a$G>q-aQzu)lGxp8hCmzTu&&RrslWh0vCMw z70#d7nO6SxG`Ny&Yq(~l;CfVKjT%$^ZQ$1eHJ1AKDx41}+=3D_1Y=3D-qZZfx3ZA!MW(; zk0$XFsOvv2X9XpHb8#|%qW@J%m;6e{kv0Snti3V+4~$jxerb1t#c*T3QX4jH)ubV0d#NrxOCWS7wEkg`zs zwSqUHrIJ}Fv$EG&7v}fP$+kofTAv()goW}LojtAd}5IXPN_c>i@~LHu9`<5`Tr zedr!v0C5o!x58J1c%abde>ayt6e04W6?CaR4djuzE;|2x+=3D2Jr2E^bj0=3D`>L5e4{ngT_!Y&PC%S&-epv0AZArz8Rr(%U-;-%h+lwycNMvKJ9EsXtxtlT^o_twgR zYpo|f91Ejjp>-YZB~GRfveQdEdeC43zkB2K_j~wiyBz9^5N?dEi2rTGPhcG)BOV@S z=3DYhO#Po>|#%1#FkcB4#n>f4HU?QbX}`hlwJ{)Nf(B^GQaRwLjUP5J{@jih-BUq6tx z04MA-E0S%YzPTFy7Np;ktgjApMMC%sNft98C9)xMWbHN-z~_qg?#|-JlIRlhMnwp_?gt@fS*?H zLgB%kt3Z7^d&KV*|SLr?s0-xIoa%#Xd_ z8?TFWm72M<|M)ZD>m%`N?@!KK^j87i7U*=3D*CD@k6XMx72=3D&Q(ArFHXVnlJR;@PbzH zzr(pezzlrdUm6CGt+P82wn+Gys@oyrRJkGqvwAgUem4~_zw*pSD zsYix~4MlT&o8X- zPRH0#Yi(W6axG`WT24f@+-TN1<0i@rA1Xqdw`0r(Qe*aBfrn!ncq?N$!VjHonks7* zv2K)8vIT2o;stw2TWz?sJir`eWygoSAbUirulGKhmgjb^F@=3D6gMxo#L-kp}G40(2o zT;bY4aB#2aWbCVMYclezHPoM(7-7@!raH=3DB|M(OQDGP`*@x7o-rmhYD5coqR=3DRe3( zMK_PoO?)%C7Z=3DR9X_3Zv1@af$a1N&114;TL-9fhp&T`~;&~3Ss{x;p_YPv1bbX%_J zwpQroQFQaJMtmMwH^v2LoCAULa-kVu2hD<-W&usJ9THDTbd-2%E3yB^R5e#9cbMDGb^%sY{y$Nj&x^Pw;MbvpRz{)ZjuJ9Ik6QOYL* z`JdM57)STt?8v`D<6rmz?R)jOD)S-}@D)LSwLLo~dam%K!skBfFQf|G1|EoNEJl~>0$9(v9UKJ>OZ zgF0d`WA5H$9T+o>OU+>8lje-?rtJxx=3D?p3BMjhM(6*}RbnHnW$u*cd8dkNa$-5SWV z!2cY^8rE5ghnAc}Sa4TC96D&5-@=3D_Ks7tM@5>5Q3<<%CIR`(9mkl#f9^|D3~8*shM z`;s>y@_ae6@h=3D&tIhb+7niPDN-up9h(4OA2`9St7A%_u%Nx`hf^bJo_cL&_ne()~m zSuC#&FJQIp^;+l2#(ryZOwdN{8w;6kVZM7CJa7-@M(9t9j>nRH({$tE#+nPvUC#UvIOMl0_oR@O5Sv@2iMngfw$l|IGK2mLjCy~G(Ng-L+0j{IYJc(!@00;E zhjTjhM5Slne@|N3k+c=3D2zCUuu;O`m7QAc4~9i?e`#NOzrBQNbcVijY3zRiwreZQIZ zy`J9*hvKt`JJY^b(T3%HLgFHVX7{D>VMb7Y=3Dl(qCnDT#7_{qrSISz?&mmoc1m$B9e zzY(`O5B(-u0Y{^v_kBs+tM9HOh=3DrU*9ZJD??}5QEx^|qVjqjx8Y0+&UE;jk7p*QV& z0&U1SE!{><+V`-3oaynKW|qGexEMgl74{1-Dc&GIHaDe}DZqHgcs31@p;!y(yx`Yn z;rA2{Tn6Aff$wdKNAF!VxGu9DvS4$nEo}o$;?QiRJV=3D#ak(AL2hh~e=3DfV?1Mr#`L! zW&-WEq5KKe{!i2TZ-#NF$Y{zY*=3DvSeQm~j9WB>7J8myCnOE2(@Z))!Iw{J-(SzzYK zSX6d*jK!$PWx|Mc;HfDs#>goL%|ecyDbFDI+d0(n%;gH7HSeU+ z4(rW9W9-3X+w3>?lPDiCw(gR2yki{QCHTiX#>-tI7gF-@E*T$+kMEK`Dw^GOHQ~WK zc=3D0Zueh07J^>y`5dfX*^fwGWgcZpu&m?L0IHLEz!4fY!`+@Ws2(8=3DHaYy$IUIrhZ& zrR;6jm7`hyW!URRoTD+-ym4(m=3DMDN=3D$h=3DBDjlOua0U_2TeeW@s<<^ZigY>b2UILq* z=3D(eqc?OoUQ;4E`@C+@U~`pRHaw)Xq3H@*NnD&O~Aa*<(-?`16H>CkI%Useh92H3i} zet=3D%P5os>yT`tIKS9}0A-V*E+dU5U&_suiEtkc!H%6xPx^gP$N(l9!NI_NLeDtnJu z<8htAwL1I$dDrRmfyZ5jYp1ju3+O{cc`5M_VH1Gwh|w9-vE$~Y&U!U?G509n6wj28 zF%G^exEaYYg#K*t&L8LKe<(g(D)n7j{jRX(0md7sR5H}2&rV~i%=3D zi*Y6PsEG^W0kq6q1)oejRX^eD&;5AH3cH`8&!OM{Vt;o7ef-NvpdWQtfxaU|m&1JC z-wqmo!WYZ7twvwQxsah(MaVaod;#{Mj53@9?w?6siCW+roEK5Lm`m(Rw0DC}Zt{>H zyrb}DHu{RJ6a0-huP3kvk-(jD&?U`g$hk;#2iH^|sd$&Lmm$5ZVVn_ZC^c%lr>p_U zx@fdBLFXCQ^UH(X9*MI-5Y8QU*x+)U=3DJJNPT zAJXa3UB=3D|{U2oLJ@+P@)@7Z4OO6$YugpL4x%Os{I=3DiP>kU(U)JTH@`rdSY3|G43bzM`mTAY}R!V-(0Id+F|U&{YPcdqZl_A=3DSQMP5x@U7uQztv^hnLE*o&E- zTUK+;m)c{~ahD`u#dP9a_Kh=3D^#IgcC z%R9jz!@S<+PQw7K-O)XBBD`A>ZF=3DMPw3o&5=3DExa{nqn2tHrntvw|A%b^lYKNA9P)C zRv7p}JXY8yF`rdZ*J_iw9`_Lq_Sb{`2XfsAb$?Uz3GX51{qSM%bhXC2DR{3-!}}4# zEdM*tb$fdRw>aBP{0i=3DYcRBO@OVHq#cwhIWf#^D8a&#B!JX(m~z$I`R%gZM%HlwXY zJl`2B=3D6#L8TORP12VA2Mc(3;UKzx<6u*NlU=3DFCLgOx{!IiA^iq;5`a@PxJ<2*95(> z372lb9K!le#ij)|#Op6~`*3bBwjhA`XmcX7ZW~%c-obsdUjBY`F6RtuBVzP!Ov%vi z=3DAv2tiS4{@KE?}daA*(X!vC>3x1Duyp1{aSM<3&{EX-!*n35u6?$!71i817^P;`}q&%?C-=3D5hf`TiFA zpYm**ciHxpq3)j-htVml73kYM+3{^BzR6q^U3`8G+Rc^oaNr}9`v>9}%e>}KSSJLI zrCe9fIK{I_au1qqSCw_~2lE{8m&>|{vRb~q|8>VVFJrNA{Q3g;Hv}{qF7j{&;C8faP(JHKp0w7+ZvW9-JVrbJ@H zL%^@q;!kYl_s#x<*g`PF%AeSO2Ge?=3D;L~WW=3DG4$Cz3+D^a2JX4y!C%!PUZgjN1*vR zp!sCbd=3DBybU7TMTt%SPjrz>oO{@Gr!A=3DLGQma2OzII_-CSe-Ph97vVlL_avZ) zR7Y<)KSG_h_MRsrwQGN)ZJ&qk5M0Ze%9x?=3DC|@gcC+*U*$9-azBTuexH0CG|#vABB znqY2fv}pl;$)euKwX(7&ym~WXbkO5SsQZ3d?*OJ;$tOMtucqjR-{|AB$Y-)FcxfNk zy{U0GeTDGUxBjZ^=3Db5n63Y_opKD3J11*fGaMzH*4B(O7^M!$+P(eE_z8Ctw?-nCOD zx)t6F@m?23)v)jG!~5O(J%D%7b&+0;_jx+K0`E%ylYOSDt95!d(v|)f=3DUqBgO8<-V zo}a35I?raji~ff?Tkt+yr`Lz9Tl(c4{sO^_Yc?6`FL`bhX{EM}N&JLqt6T=3DzGQm30 zG#>XoPr!ZU%ceQa^aA)Ivc%Dn4q2Dyff|FB9z;Qa-{2@)4o-pT#n`inJ*pf72#W<<_#I6j&Gj2 z5;NEYnU3cSJjKqb?qdFSyOMwX4dCPBhWbm|3891Dj{``D?S=3D`=3DD2t~cg^$J zoOe*xj!)NwJENpO7+Z24_)KSk*{1DFA9S5_h&cGPGCCe}q{!Glq&R#wV#)U%0d~>zuPIr~mv{m3jZR z)`xyJW*Avb^No>>Pa4^cFBtCLrARw$c4@KahW4=3DW_ggA&+i*{K-3NDtcYQb|eDvCQWmeVl z%IRi+%Q>Q^nb)5^o%UZJ?~+j(Y^XLoDVo#>9uCF%u%HV^tIq6 zvEef>f$pA3oeb&OzB;3sdVK7@`H=3D?fuQy~uhEB)XlVwKctgOTZv+`QM7|XjV(vXS! zIMs7tR#xB=3DzBlDtr>KWcU1AO33ab@$@Lx)7HyRU%jO9~*fi&pA37l_9z|Wgr z-j=3D{mW33}ne(`#gpX82xYYO!13U725p7=3DfM2m4B*yHMX^z{2PGYzOH>Pw3xe@{BHX zxud(#j)A%H{2@nD}igkvJUOxcll1VvyOB@JA6LQc94D#+L7OA2T#&~G>V0x zH{mLn*kX^}&MBs&om0``o`AH~$F{J39zF^9_IhJ^XcNE7JAu1A(gL{S^I5iq^rwJ3 z`3>CRNji{D(FF7}1ATftSK4A)V9BXXUIVcxAOn`(Zg`jOHH@VNM&{BPMp3Ld*Ngj| zJig_IXLh`*WOg`$`cFn?$A7<#PegObj9c%!XO~nn-93Bi?h^ct%r5B|;B(fEg!`m> z)=3Dm2)eb$X$c}5RTi8PL+j~>S5!ATL;v2;Iv<2kFO8F^gpcn8YK7)3oL=3DttK3u+v-| zi68WUcTT$F2fHFmpSC)X?w);P1mDsAO;siFgMja*-*4j+@MXokn9hCp_8ee4_>z0} zAFEOSOOe@sB#bXbmKGTkkk=3Di%3338Q>!Q0}a>uPHk%#so_R%iDQ-eOdjd2`jA6|;g zs$n1S97Q#mm~G2c~@xDWVU1{i%WM3#=3DkI76M~qpI-zq`Q1d~y^pZoM}0&~fa`97Uav z0>*yGfK`AI`O6;#jC{TU7`NK8fxiLcQNTFrGQb!F&mIGe&qikd4`4%`OA9bokD~np zfN|@eBC`(y#;xy1z!TZg|M7a`IixjVd)__U3s?_6ADQh1jCd{`jWd8-;U`&pA!w8f zIr2PcG$-=3DV(?&sT`Z0I;=3DJh498zDco0Y>C6-wYV}>;a4iZMnkVp!M|UBhfb4266)6 zb=3D*yp0~kN9V!9jn?2b(b90P#yAYinTw01{7rkqE+r1w}&Z^5a?rJ{Es=3D^b624|)f^ z@e|I4!`rmGnLqnOzLHtT)}W{lMSWHzTwCq%r2Ms4+QKQQ;+>qg$tg&fwcQ zfGz$eXq``5PmVqgc}4lQ3ePcs59KJ&(s~=3DlZj5;Qi+lFJ6TZJhX8$|k`%7f$Tmv!#up9&*7GDYYz_U00 z1+Yyg?!3`I<-5xd?kkCI#q+>=3D)Nw3QegLrXxeBlyM7qd8{steeI~Iw>#-kp{zJK?4 z<6HjU`R$XD+1sj1qGMfZJX6+e?HGXUC?aktYhq&| zPg=3DnW9p{(m2`1dz_&MWi>&6fuBSsb)hEcDvi)%8lkr|LYHZT4ud;%>wTrh zqI=3D-Sd(Q~wyV4CkkG8E7uyZ#%?c7*v;yn3;r^3+BVB0=3DHJusM2v`njOCT*Co7tYYX zzIwfS(1{_~H0U z@JL@znZE^jR-SZYKV`I9H-GrBBcIoAS*^KKjj7Sq?Pai?xAVLb;1~_vP1>a|bF}t6 z++8q2)#RtdC!+1&Bb>-GmvK_ zo|(wQ=3DMbci)Om*T9cjamCmYW!N9#Q2@*QbkMIH~HImpB3D5QIIp7Z#Q zwDa-gJyWzF<|6+Dq>V;?KF8qO1fBl^z9Vfc=3D-U{(iZ(Xide9&+mwEeWi0@7%?&N`G4CfR& z$aC}`kn@R1$NPuUrm`&++I}XmG2`1Q@xxL3obVM<=3Dhcwje>c;ZhwIgl_58#zpnxAl zhjZ+w{2)B`_|FbzcvlL*o(C;?lDYd2@a#k2wK6OotG2mE3x7lSw z*7kiCmkGLtuKKJpdJVn5*z@wUm3gb?)#MG^b#vbKA(fsd+KN5jf2=3DYuFJGly z5v{!VwPD4crt2&7%sDEpu)1>Mfv*;O&iO`V-tjh-_VE`hFS_1W?78K#%DjtiQE66d z<=3D4J&X|d;Ln=3D13B->cH9Dk^i&IlI{N*2v1dOU_bh3wkT_fBvgt&$pkc%nOcDY1>ZP zYxJHB#8I1%7@Uv?Jul#_`%>@%?3X=3Dut0PaP6%1>LKsrAL7Zv zCRzs@z~FU$7S{P$HCan{)#Pp8mA1}5S(A0Ooz_>AHOziLRg<;-h|b%OviAD`^2>W~ zzSVCg*~iDP1Y+*xCX+vvW}OG;jyeq?#SO; z@$E`?q@%}$-;v1CJjW;}9R~fle8A}~&pRV~v zA?(!Nt|yH^*9%4vzDhlD*kff+cFzY9?oq_+4@*2U?wi(jJsYX{UbU+x(C9iwUB&o4 zes7lNvA2P{ncQ=3DqH--d*$K6UaZ^U9->w z*irt+yRql<`$+7^qcJ^^? zigxzJE{EO-I3s^xJ6F16!AV$$L$}Ym7VQAn>l=3DYWX(`8~FS^lt%g@*8-=3DGj{HEXou@?jkjIWj@WO|pN`n9LeBYmF)HlNi5!7{7fOzkL|LeHgQS7_->h?Qzbh&?TWukD3>TjPs7m2rFIsQq1h~ zCua*nR$rF>Ee|CJ3lBMUX~rgX=3D+d>KOXu})4lv*=3DnT_v=3D!)ciKo#oJ_6KT41*=3DcoY z)2a-k<&-XcQt1$%sY{=3DnnWjr8pi9S3qf1M>NnP3;c#rK-wx@LILfa<%8M^d0Fh6MD z@F&Jcpi7q#H_)YP9lCV2LzjkL@9KaaC+F&ty0m%f4#Ln0UAl8D_I|Z4U6VgHT$49; zLd}Srk%&#WyZ0vg9Q7_t>3FV2=3D#bQNsY~-|qK@pEyyvNFQkQ00hD!UE3-6igeHq_} z=3D)8O%%6B}eQ&ZoiPR-|Vr03}Rs8ciT3o1?O8>!xSk-8m1av zJabVWpLt04>iY6gAJZ;YX;NQ-dYAgXuJf|KOZblGH&AAuUN5X|m}&%&R*1U!ycBr? zy6#EH$F$2-n$$g6y-VGf>%6S{3clm{&4#H)5Kk}aSLN;rAd87>Rsw9 z)_GZ93E%OYnp&$AoC1$02CY@hUeTj%-o~1JO^T0Yt)kAF%0BTadu<~7VpvBsVt6F~ zluRm^iM2}8Y1S(GOghdzd#Kla@Sa|)V1Kq-{MPk)#JN_%x4u!1b&S1MLHen4^jd}R zwS}x_WX~OTil9@rrq(K7=3D??=3D^*ea@n85gJeahkPCQP`Cop6~jEzm zROatslVDmy-V59lGaemp4E=3D7}*$7?cEXJlryyz_Gfo=3Dltu&G*-_ueRKU|64n36{gWTc9@X|V%XYg%I zo-xAC+JY>@g?=3Ds~PH;Zlv~eP9;C1S3y^Rmfbq)E1oBQdPuL+~}6drJfWBh?c z3Saq|oj0L>7l1A|V*M~3`Zs<9u6DHTIW1lQgT0;%Sw*tWXZ@&Ge2;im0`+5V88#@c zx9+5wzzh44s$ zf6k7N)mjPmJrBk}t8pp(^BnhBU!K}0$C(o7Be}lu`-P{{&p^NjttHf*Eqm@=3D&jEL^ zE!O_e|AB3Ex*PRM48xQxxxCo!n>s^c%<$#y*ZzjqTF58HTnwO2_v7C*yj-h5_kn-V ztv)FSTK4?JCez5iuo z)xx)#_OGUIlCG1*9%%Ce#=3D#=3DY>qf`N*n7#H;_m$_c;K3iGZ}9f=3DZH4Ng5C|eBa91B z_wDgp%dfZ-K1#q%m^u{d_SkhZe=3DOI#0d3@jtjoUc>@(WPCY+tKabMIo5jdRjEUyR# zqz&||Z?;hwvIek*-G3gQjd)&wXMMD|9e6Pc=3D(|Ilc$e+;gu1nFg~m%1XOs~?g=3DZL# z#If$fvkbh~9?ZC?$54NcGmRJV>{lhnnC1n@5{|LAT4Ez)%;j>-iT;RKdl++HMf;QS z%t4+f{4GW%`GR~6+z;|iEM4Nt33Y#Q75j~RF8XqTzp80V#kd0ACynAa#pC-af3_f& zWVNptW48$Y$O-u3!-ksDE&J|q(5NxD*x>k|fVt1WoO`LzIuABX{AQXjZ`kc}kJEG5 z(@(%pSI#N+l{)H};e8Hwe5SrlbbKqsw~>x-!yVt;_?DgecJkfSw}GDc*7h=3DAvDJfk z9yoVqoI+l=3DBky)cUdE64f^VMn5&E&W6F4ERf!jIwy@U87o*3gbcf{Aeg#K-W?RI1? zX@D3Uc+bYWAMee0ckB1%3CqaL9cGL~dIG)?@SpQuap%x;evLXKcV>+!;}hSByYQVs zBLmOTUiefa@0jQ@|LdcV8VjN$yp&rWZ#(>dlj&w7(?Rbnq>Tn#S>lUaXXHdj1TZ%G zPr`jUO?lx<{VH{IjW8*r-i4f}yib$$tqRWZ z?a0nQ(QP_$2ZoCCsODnvMZ;OUv^$~eLe@jEFbdhU2F@_Yya_$So|DI~{q)$qRvYFT z;LqCU^RyYCm~%`UXBRRiL}mB@;#y#Q#(z0%lb3TJ(m`cVZlE|SZ~SStWzb=3DRSs&A&qDnH~7&lALd^cG|DRMWpEX#PX`i+K*R4Du%@|A$jP-Z^v1>pQ4=3D<7HmXb$2%rEi*$)x#fPUVT?po7`2k^*lGuwN%&6e;oK!arnqL zfNce0dRN!(#9WnZYgoVC7Vf-irrxCMTJ8&&I1AfT#yha%sFVFhpFHYp2j?d~< zZ-iUU(d#-N&l~8${!mgkM7;rBr?=3DrU%)h)(3-w_hQD^H@un6ser$tu=3DFmGRnd0=3D{Q z!>k~5!7O7eWM3|1SseKC_(m9U`sO430`A|%<|OaB4*LSeRMY|gWb;HY!vj*tpP4vI z@pw#P^o;G*zPhEd*TFb&IRDahGh*@h4G-$f@`sJl)OT!N$@k-Y$W4EZ_*+4LY}Wa6 zp1lG*Fl)-|PdpnfX$t_q)6`vL5)ZtPcb^f@-gP_YD!LAB3Ii0C6`7-DlBK)dxkR4qJeuM1@_<%n@`F!x4Pkuz-3qsvPg`dd3sXFt2 zsOuCx4)8yXzT!Oj1uJwvk}=3D0cuHx(lX~MJ2ph>0fM_tgB*-Myxp4Ssexa96P<&%y& zMgF7SK(b!QOWM!Ai#3K$lgH`O)Lb;C3364%0b^VT;uB}CI{t1<;+Yb{1(@ytEO($< z;Stae@dQ%z3ucUIXPBv^xKy>-@iv|0UG93w1t^I%lQo95}Avgg&b8=3D5xTqb&%m)Icy+zvs7sIE0U5u%pV0d!Bgf7Q zd%~lRyhR$`$sK<(zGb)BImft?`O#(x>+d|zn9_05xT51tV^Yr=3D%sWF~z<6=3DZOV!ig zt?KDN-Ze+b4Ytde8<;19DIDx7x8Xo}NB{eE|NEcr9BnoxPMP(I{pNBT9`J?NE(g2E z5J$UF-R>ghWjo$=3DTPm4X`6HNrbmT45d4tjUkZbdKA7g*OP=3D973OUV_?#VwqRdvJCI ztYyQ=3D&vcRlQ%v+H@R z8=3DG~UlE$v*Oo?X+xw;W&U9xGP;5^c?n&)_)RI&x>j5C8cz%mBAEVEg~jI}ni4XJ=3DILtF%gzwPmFe~?l}{guIr$lx-pnBYF}5eim8tN2hg^R zRpw{huu%8)@3Bn0_+`x9)->b|^BeM3g{)un%Qxml8_2uUk#_=3D$@y`*vWE6Zo242DZ zR^xAPv)5xCoX0W766pU*?n6^Y!h0jqTJUc@bz(d>;@@WcYsJ6a__q)L+VHQv4)D_^ zi85uK#lR8P!NBWewT1*;m%TU|eLoNeFvN3D%xuQ@(F#`s#s2pHVN5y?eQ40fP2i9B zy0)U85~&CJ&Oy!tr||_C8Vq$Ct5`4F;+R2O*Pt!Y8>FpD_RDIKvn{|8`08xt?>dA# zP7Wk>Px>At`uag{_*asTL)HYD11SF~o6)yy1#kZYfUz3(2br59<$dCGc=3D;gg8Eyh^{7Hc)TMHiY#>vYd4=3DfpV9kTn=3Dp;Sf?huTVdA#T)gi9=3DTGI_ zOf0XR^?E|q#B10OnV$e#L59UR{4*XpfcR_&;ODU&Fl$3~F4BF{ccy;FH6 z+I$stAg-Wk^GSWGo(u1G!cQJlbRK|SWi9FgUQkax=3DPv&kqs%uY4dI6t@@OU>HIm9*XSWRAuA)4rG!~Pv~s9rDjp|JNzpPi6( zEIIEfI`p@rY@zn&LH++2KDhq=3DR@UE#`%I!Ggvkg{k42po0^4T9fK$FeiKYr87_!F2 z?DFXIH1^ql_$|^P(N}@{4^dZC^=3D&lcLqW$vtoHAzGL$b7BaCv3qLK3f>p)MZ*C<0g z)CA#|vVZ}$i)_e+&Hi?-8~Z&1#~P#Ah9hKolH;Ge%=3DXp!duti^`2_0$-!<#IhR|ng zJ>?j_y=3DvF>5d0iv{8tj^%4bQB*G+bP@GV~}Fy*zQe|@c82Y_$br!amQb9Nu;;lO*T zjTeRYQ&k;Xv9Aj`tnaO#fpOE`5i^28^BtK#6(8d~=3DNh@2t5xTl!1KcBR~z#0?x@5( zWWM9G>qdI3k_T@9?w(c9372&N4z$yZz6}Lj%>ozrOy($S?4Rwj7&E!-4{?KhNuEpL zY3w_8UbKUA@|0Tx-KdwbMVeDQI=3D05nhwrc2b&4Gmw8y-YK>D;g@TQu3PHhA&pMaiK zjU|o0n}KyT5&Q1>vkVX^AJ8UQ`Q(*>+pUj+ApIcM6Pwv2Gg+(Hl2y`yA3)}Huh|?gXZCh08y^PxxWczrZwDXcpI<>s$rhobr8Nt7W9r1(Gf-$#&Mb7{N8NR0D4s;@fys?PH0^# zTjQof<0cuKY|wgkDc1bJPmj_;VPjMAM{_g8{+^BJQ0`v=3Dp3&;e-hC$fSqFd8SY8hN zz^=3D(g+j?!7?Mb%f0S@*oK(TR&;GnS#;tFz-H}^uD;Oitzy3Z(&$1J4-`B| z{)ShV{5kAwU!=3DYNY{Z(Xp&qGi0_&+`0yeRMc-Ou7RM7nJ;V_CO`oa-{4mMO zDAN+1n!~xVIl0!^>Rju*o8n*Gi=3D*@2Zs&E>e=3D=3D2n_f7{)0bNGfwzwAD3fZP%!QDwp zKZT9~SYX2xSVn%b{@q`;%LL8tn^W}&_6D* z^QZc-J0G$%VwXi8{;uwvXI_N&3p>Y{7j*QS=3DLO9V-f^@a)^%1OPjdb0sPm?@IEG8m#+8%kcV#CI;2eUs0RSgu zb~)&dSKH+nRPF+e@^HHuBw1+ihcC{3*K*v^zn!JG!nI`%fCyJM&D+`evlszm2>ub4xo_PW=3DB<(%kUC&lBPDG!}?PH6OBFhok?!3ltCa&Rsgs+zT9j77sn9`tXl+DH`;86b*WFPD6uq9@?PG z-<&Gnqvd~3+iA+D^H8fUKhaUXMYZ44e46s?k3*)1s^d}&fjjvaUO|D$%rgCDhty%YPF zumPNe%`+*F{9Da^{>9H;;m`T%PyD_GZvULNEZAx4l?`iAY7WI-W1oq;Di7fs_I`Z>vxXw1-kqM+JR%^5vL0J zDAtMVsUzBP?9l)6&VoU>H z(Rds8^t^RN)Xh(LZJTNG3B6(iz=3Ds3ezoMT`!k0N{ zzWV1dY7^ZbX8-}$wA>;i6ZyEN%&xn^EUSYJ3U)l6t-)F5nRs3&d*iYEkl0MI_RG<0 zyOq8`8}|uXVpnl}*7rzY{B&b>Eq_@3s{!+O^`KJ6Lg{Y zLfqScMtXJbUSl_|7}xZ zkEZ;g-usT~3(f-_1ir!d=3Dxcji-3ttJ?U1aT!HnZj* zOep_-Nk1Vzw@kkUd(8fXVNCG=3Dz82+2(borj$IU{25zgNFxfk=3Dd--Zo6p0Hj8UrM@) z!SlD2OoeT<4*4tdTn5YWoB?#i#=3D5DlY(36Az5whmShpe;Tw&cD;V&73;5%J5AY~J) zv4&86ILq$8syiXy^G89?c+gnsn`$)I{{A^&HtLGzW%Q@GA7@5*s`AWQbbKG^7ekiO3EO8hyT+1*t7GvI8J?EAQ| zwwO>i$=3DspvY&K*4lv#V#L*RkF2GzE?4BvN4Kk5uOZG*8q?(-u)Xu_;Y#9feC^Mro@ z8~5OHz1z*Io=3DV0V3?E9t1b@UZY!g2+CV%foZ`1+?iL(iKCV1~+Os@7iN8V-ZFTQ2f zRy>55wPq&i>YHQ+dCwDQ)Dp6O^gt@VwZ3CD){t+zveDnjlDNy=3DQ)jHlS#{+5K|k{$ z{!UBhO)mH>xw2q4UGF_)R(XGK26+$5zt1;3kzL%ESrlVl;B78o$^lGCnE)D86Bh7J zL5fDlD;186tSOhmhJ*N_p!LYyQAQTdh9nBUBEL0%;w(LQdrAaj4*XfW;BnyR-D1TD ziidB;T8MdkUZahBNa!cy^;RsYG^!uOzhl?BJOz_jC+?UN{J2)Cn5C}Zv71~T@G@ZU zpN6@`-qXuLUn4l&g#E@Yp+Cm1yK5!(=3DP>`EPi?4wG-&QpcdYcv8Fu8!oxfGV6fb%i z`>>GzV_$%85aMX}KO1TCTRpIqXD^v+))#zPWRn`7lTJH6vu@dHxDqR|H!b7x*xkC% zOwauHtBChGvQF>V0{&T<kY+L*W?s2hLO-$A>uTFgsRa|9ih#5877)rsbf0 zGvgG5teb^?jJ?!37d}@-ChzucChco)ejICk&>rn8+TWGrKj0-3IBN}A2i~>Yr_2LR zcu;IT(o<^+NzXL6@1tyhy;|-LtVDhn#`G4y4>spg#2?7}8sxiKO*?qqHC7H{Cu~7X z)ttI3V28vz=3DgB6#gC=3DV`8mw%_u|=3DQiv7fLdJ`wuXWaw3k)S1CpK;zId1TAK?p z-XIS`2iRwDzG?cN(gomimaeN+g+4euhW(>H0iJ(#@k+o4IDJL1!8ZWLA}gm7=3DMS3j zgspz}C1^jE_W|#p-(4_D_$Rjx_4_<;h+h-%CbAQCHIip#KV_V&unzuLvAQ}>&~-9_ z=3DJ=3DP9_>!96A=3Dix_J*Q)?tfr0-8;&`&!ylpUh&9T9ch~lPu<75!xx52;&lLO27k1Po z?f1<5tTNsfS1$P9hM_5F?vgnR<*Glet)Q#70rt!q=3Du)NNjU${N=3D(mvcVQ^t>NgoE^ zOLzO{y!51h@k_7xSH1*4vzNb)`49VKcRT}d4fr+eRyw$`9)1m3`h7RvJM?=3D8-Z!gv zGwYN74ojpS(b3=3DwAL{mr4C}HWE3i)hnyi41toFfCmcF@}8B?No*0(e_bEL#ywC8JEFsn!pz~E zk23`u#fJjx2)wW5y*=3D?8;UkD|*e9@MYM`?OxO?M+i1wA(tb8TFN6TJrkbT5%pYV|Q zFx0v{sH*~U`QfgEph*eziUiK+)EO=3DKw;umC;@@WcYsJ6a__q)L+VHQvbjgT{KIo3| zXOGD_i9X5#{)Qgz#e2xgJUeV?T^#$R;KRvWyV2(Y?agCsP^3}sGJ1V3Pjm|P`4QQW zFS{A%nKYt&;htLj$&RvUG4^+{X3=3D%f7lJYNwnXPoce9Vt#W`i@qnICikUSTQ{Jl75hxrbD$|z3u zN$u+w2|VIsajKzUtdcvNk08@>oa;~JM?1VC^ufWaSqJ;owMN=3D)@vectFxusr6X8B(_1VP2&9JCMSHzvkdnSltD%(^>0O+ zy))DD%_R@PXM;LdmBKN7Hu|2y98rP!9&`YV+r)3Ao_-^oQ-F^#c0Kg#KzknatKQ#! z;4%6(Kqp+lx=3D_y@s0a523w}<3Za6oCy`%wGj`yI;?cL_eZbJL8BebYHm0p=3D;*Q@<8 zwy<8CMs|OJAJlEi_>*}?{7(j|F^>x00AB7V*DD{7m)E4#Sp{5!PIkTULDqOA{ZTjO z2=3DhC38H|$x|Ka_zR}Z;Wa0Yl9QD&4~#`a+#tqGG}6HWkJZG=3DhD;^pCk^AGF;T#W+P zHt1u6VFC}<UC_k+~iZ6Tg#Wm+3W#|98Dsl;rY(t>qWEB+;np|u~2-$Q-$o8oWM3jW*_G=3D_vz z{9@(^Unlux?=3D^$#?LUHc3$ot9T|Z!HLO+qg zei5}sIB4!jjw#^%41N)r$H52MFJi~I6s(!Asxc>i5vA}Q5V$&TG{e0mW|j7F06f+- z`p}^7zd+yRd=3Dc@BzE_6^29o@ZK95#?A8_>j6voN`HLNenY)=3Dxdfq~>4f<9@V4r@8;r%y*C%dt#opg*}@ zN8Pt8{=3D=3DRb_%3=3DG_HdWDcn^IPc{@VZO_$nm5Kqt@BPUUZT4VN4*1jGy>TWb!@hut) z2EFi+0DokxC>UVyYC zFVkQ>pydvQhf}K@eH%$%Ak3#>;#$e$Q{_`?%^e(XTw~}mN*|z}uI98dy@H^FZUmJLKcdEWqhiq7Z8;&V~5&dOM>)NUDB5eTi1TH?-739X700T23~$D)#kuT$i;T0 zZ=3DLMM7$tvlEH$U{_YHC6zg_b_Y!x^=3DseAwnN}!)lDKT57gpDOru6nQX`=3D}Fc!&|2M3jIkB6b|0`|QghIfgbiZl8J%E#@)I(MCbvYS3c*Z?g5i z!=3DUq1_&y`_!K*SipdHG^YR*}*9v|p=3DHw=3DL7H8RG*X7K6IrW=3D9VQk-+4etHwyyisiL zYq8E@KQq}${3U&jye*kMgV%|h?+GKrXRi~x?%*0x&aA=3DCBzMQdF5Ec{F$WfyWssSR zG!E*82TO5>d?kI~<|Sph|L|`>E5wklG#2^Wp8`Fu5m`+8Z^$YiLpWp&vTWZt&`@Lu z*QUTrx!f~zHO{|5$5wjZcSPSxu-!44?H&D@oRE@73dTD$$s@F@fyB|`5{9#0@jUy zD+fRMm!x&j)wv!0=3DGy*FwgG!=3D)zn|`9>EjC!^r53yBhsl_f>|h|1Re5uD3H21tpxn zXiLlNQFfpo30=3D@eBkJ4K^#s<<(9^*~0oX2uw){;#4Rz=3D3VLkCDsP9{w@yb6ZJQD%S z*}zv#{K*U5;DKz-GqR7+!~Q}4#awuVep~FX)Qd0^3Ww%#tS1xx1YlhQeH?i~bJ0bR zw;pRuSr?K2SPpeHh6X;Abv4WT4?m4FY(pn>Auq}{LbuLgIr=3DJ-uR;SK)r0}CYAd6R z`IRo{YGa*fi?IV*Y@HAFxA?j48u(DgtS$%L|2JCqceRiwlwZ&Fy>{Jd91K~B_Pusp zm^;?7ypnk?t~UaZufwr_aC_$kMzHuo>y$5VU!BC#$Q2v?+0ZjGi!m28OyAc4J3VBo zZKogNrOX6uRcsrwe>h-;Y<>3)!l3(twPe!QmAX_j`x6@I7QRw_acxp-NaAe}4s0J; zDTgx7{%83Q|62FoY#|(2JAkKL^udIj&4iDv;llVEWXDr$-pnnb5B^)~LjR#3J;nJ3 zIB;bH2iZ0bu)k^$53z5TogMA`ziIm#@G6RP|2-!O1R50D&<2Y(C}=3D{#f`UCM1cSx) z$Pq8xh8A0}2ZOy}p@j-Zov-(M-kF`~)e`@Fqw zT(zpZj@7MFbvHTcmZ`dbuN!H|SSu$OWc(_ZG4Td=3D+5rC2nSGL_v7eF)`@l0MA#>>T zc~k#~Kiag<&}rOP2;DAdp}qNy`6J^l|g1~Q^iqS8f5huS;D*FBLJF4Gv>kJ!&Kg4-@!@gS@(6%>? z1HCL2vDUY+hlD*xoLQG=3DCSgaH(Kljh4%lxZpV%+khiZywe@4MyGd)>hg2Id{TefFKZ^d|Lw_eA=3DR z!I0yx-U0qp^^May(r>Ec8Or#f4`P3EE#isCZpx+anuzlXbdD_Nz_v(ikbt3BQjRFVYQ!1WUET-obCoYJ7pI80vvGscpZI)6S*y&o} z(63*nh=3D+SWvQE2}VgYK)@Ysj?4^jQR<+XpM=3DU79w;fz5{{stHNm@dX5{1La%nH1n& zjq-tNjLB$9SDc8c@N9(MHKyOVqv!TmM|6b$*(0mSzeYJ?4xIniZSO>s?gp)E=3D=3Dqcx zZ-_<|tD9#oR-$i;(^umRH)x?VLZLOU-T}P!HyG#aV+)r=3D(K2J0u8-{-KP;`Y_U++? zaqBbh(qkDTZ^AdozO**K@5mQOU+CS5`wHSy5!!SG8TigapdZpuq#x z1^FtLr|+j!vivuYFJpQ7j>2k|AB}to%l`!VB9{Lp@-tbUe&c8o%VXWIXS4i^$d6$8 z3gic|Jl3FkZ@&ljahUH~q~&w?<;cJIS6=3D zR)BwWS>IjQsn?5dFSN-o6wi*LaoP=3D9H|(!W&J_OOmT`0Ter1x|A84=3Dxjpl%5NNbVG zk;s>gZeu!(dbJoU74yP+J55!8io|{^{C`-}QW*X311@3`X=3D_LOv9fyTBI9*c2jm&A zs~|gWYgM-)&v;!GMxODy>H*{>uZ5jgLHD?=3DRXv9MOwd5rRr33{ouX)*F|6eTo=3D?mi zUYImM@;q(d?DVe`yLld{!cg__d5K7=3DnwA8g91J0W=3DfTNH1xS!ba3d0A5v)dPfWJb$ zxHMTmE(`bLkftLQBb6eRBOO4h)il~hiBCZqfD}fGBIP12Mp}zhA^V9xjQe^`OGrdY zMG7H}Mw*ONfV2#0BhntEYNQ5D>(CV`4Jiw09MW{8Vx&@}a-;)DwVKvZlVfyD!TkWF zFj7>(a&f;HX)RI((qW`}S(ccHpAJh!3L%X~nv7I{vbXb|8=3D{Ii_ZzX$MqRlkVA9{^m$Kj?odgZ~`xQL276gZ~!r!3sW!P0e(!uYZ&}9z;`S7J`4Wd z7XaU&;AITn2k@l|zMR2_0iLhmMGSsF;14PIR0f|3_$UR>W^m}q+`$Syl)>Q-=3DU%Vi zy%`+-aBhNvCo%YmNG$)Xgg0DZaL7IXkb)nz;76|oe4Bz-GC2H3{u%{e&)}JWFH-Ol z2G0h3mV)OoIQ)P91O=3DbO;J*X>ZUw)W!PfxZU%>}4_;$d%D|k-^|7RqY*R0_2437CO z@1%r(eulv@@8|7T@G1*_tSjJ~6?`j$L+*Ji6nr&Tb3w|8)-JIPD zzK_8(0Np%4SO&eP8@4lNcSR*Lz;vn_Q^sy z@81g?yGH?#G45M}r+`mJd|6BM;2z(5(FJX|$M;3_0}B2U?km;(0o<3X`!l#-Pxsay zTs7i|*-HL8Vs3F=3DB`;1@NFgQ}E!9>2r>MWs>B~fo<07$;<7djQnsU8a26kn<%xL16sj^bYNrTSO6SA40) z{(-@l>ObRN@CE&ppS*zb9i@fu{B$`_T89G6j#ndBA%gQt+)3&1o$R9{#6Et3h8E&`&&4 zGE#4(K}aKzsQ+yBpYDw`3HLLRijYc>RukXk{_lybNbFZ)|5wWLAA-NC><8do4XgV< z$XBuaT;zo;RsAQCFJtA;BhSZr19>4!RsR(7MOOU}Xb*WN%hTE5Ni07A`D~Ua9UH;& zgx?^RpM!jFmj7SmlUe>bK5w zkUDda#m2e~cm$}f!ebmOyNmE(c|504`eO3)!-pcVnLDXH$|~@WuB*g(=3DIkgM16TUp zhiv*T4es$?lr}X}*yNDO@O#CiYx#X$eh)UGO-IT@Dn^1`Xr)N&k;;)O({2#o+*m8< zG4Zb{0{()2yL>+UO(gb6T@(!^U-k%|g>pVD0iDVxez+F*$|ruf4fo0?es~D?l{60O z)4rgZD{9CdluxXo{XpdtYrcv55?R0IKHM{#t)aPz{5M@!$=3D64EMbS8OScQgtzAo@_ zT_rzk8!VfSJQ%f#k-T&;$HFY!=3D zzm0pryHL)_F}PRr$;nB$7xM|=3D6&Pl|aGYVB5 zdS~0K&gZBzLDiw}EqK)V2(kB!3|U9$xmTU9qmGDw9;pkG&+@AC-AHV@p#Kp)-mlJ2 zP-j1lCFQ%jH*V=3DN`IPsQujc0dR>Skq%5`)m>dr^;tQGIZ(D$5%EPwS5;t{=3DXZ@%N2 z^HCxC6!vfO3U$O;wD}*(Gu1gCJ%Ku7qZkNvB(L0coPUTak97~~i23hV_+1B|e(sONes-4nfqZcm?X@)A(q*166VG(o zYzL>HFF#umMF*yApSA2n+QBKv|7V8$eeB@Wv#4XpU&_th&kocvhxE2qz$;}t9=3D-CI#C@uf1LI;@qK*{e^86P*r_L|p0xFyG%wI)@&WH#UJkwf({MOg zL1!Ry$=3D>OlF6bmZO;Y6}=3Du8ILBAvycGlLY{hjMCHqJP8x1&zLVJ7K@%pV0>OccH#P ze|#J2V-I6$uP6|Hq%NRcxqcn?@P2wu)(^I&K5Xu%J4Jo?%Qp0nJ^r6Aq59Icb{xPh zUFJ9Sj6TA_9W&?*u;3?rCC-TW^AjPZd9-cw`_AA@5&p0Bwadr* zBC*LQX>5CJ{4t(0Ox~|>!kLq8y@d>=3D{3;PQ)u0Jo(nsKY5}gOixLI#P{CN%H`HD;t z&wqE2_j6`#DB70#q|ty+Lds?36nmB;Eu`=3DG5iX$${B}al$8{0?y(9)p4duK-G36Ns z8xYEQ^^1TVX0WVK&ZAQRt7I^=3D{rD5WHqv<~9>)QG(U4;#_CK4WK*TAl`wFyFfawYp z;154Dg>TdZDK46$YpL}6R7N~m`Wx5_(UNoe#)$s!73i~|bS2JPqfTh97Ocg2s?&%=3D zPg6{q7>BiQ3&rJhnZDVk6Ljv2{IfcTRbcl2bBwG&W9`6eLY7FH}KN``G zOcP@r#{q@yS{$u$JjNO?$2wf=3DH5`F=3D62)X2({&_?{ zKas}9xQRaF&Q{}EzAb3ii8hSe#Xau1x+{#kM2+j3!%aOQ9ch)`GfO?jopFV6*U54J zRdMxvK6AZ$-1^2gjtloCE>m|&XGvef!SYUG{($~c%tGswAr(09x%~7y1(yE8-{l;O zq6_gIT3g!4(oG`Hm6i8Ix|`4DGKp|cCL_=3DtXV2K>bVF*4aryp*vu z_RI8}Ff+(@XlxpnjfuVaoGIR8zPx zcR09tGmUj8^o-<7F$noa;#;k$S7&~TG3V2m1@CK#!iSh~$C<}bCghK@BuCkLl#QZx z@TFZHWd~3;kjkWfZk~=3D?y3F{)uysGb&G19)92N6Fz3+xORU2BW-I1A^aC7wakE78w zpA<|?AFt&-9(gkFi%96P?xH#$Et{hhpZC{G+c zIwLEtHt*E;p3K{G`;+Kj&@b$GC4BWfEitzU-}G_MZM2U^mubTW9pszIXN8KiAhk98 zH008~_Bhtkkb%Gl_D=3Dp7cwvt`D&ij+HykXZc!Dl>--stjeu|!-^Z6~JzjIFDy+eD< zdoDZsnDl$^?2+BO`=3D_~#=3D6#}paI@`kw07_m$;)wjvVyaY7Uw zl;YccLXX6n>@4D(clryOcW9ku9DEkAd~#PL_JFW| zHCE7PtY4_HeCemy&63?G%j~i{IJkA$ee#m(Kgo|4NB{5I`#*4~^nL9yo9@wXUgUfd zi^L`@A)c%8i@oXlG)0boU}4+F|1{(ne{AdYefogvzn^daZ920%emBvQF>Kx$^$d;n z>knj#`2KszKF`n=3DqX{)5-_#pvG*SUl7ScwfQlX2&R!^LY#Ks%zAK2=3D~a;xkEdVW;H z^0dERW#v!M^Quagr{`5=3DR{jHe9<|!apP=3DVmVjo`mi4W*`RFNn*_lG~lbAcZni~>oN z5&m>ZzhSO(Y`j>VDR_~M-@W&GuR%PYrTB#6UE&3;eWFMMkcyCUL-VCy!#gmOt^4K_ z>;Cda>%K{2_r=3D!zr32P|^H6s0v7Y&KoAN_AXYfPe|Dj8*u06xSzwV~_j{KRJ^VE7q zti2&en)j?Z{!^Sg`{5!YveXtkUvnO3$P06kkC%!`-%Bi1*Z>Ah7o{M<_wA1hB2wU8acg~Qfx_o{^{rS=3Ds_mv6^41Hqn)r9`6 z1x1|5o;Q@5aYX%cjMt}l9%3T+7>p;^A3L-nZ{JeCS&c_JMwdD7(Y`(RS-{PBZwI+>{v#wvUyVDYqf=3D9WwU>m{H5kt#-Hd@^DW()ZTa z?lkV3Csqx^{#PgQJmTI`tVubKrM{lS{_qdP{x|80p|Acpy}6L;g@b=3Dt>xY|temeJ6 z`~2{xG5_7>tt039OWNOTfqcIYh_H1?D?t-_MMqBN}r~4ZgYPxj*9ZJWsu!a%DNv9?aezKC;6e;n;1) z_~GCS$$m7oZJa%ulnw;RXSsFY+;qviJ;kFajxR$*jeweb0G@{wq+sZDAAI9}X z(yOOZop5k%Su1oO#y%sDMXEE!{QIL)pZS;O+zKR`cj-UP!}NbD674ZAcJt!gUx9y; z2ORHv>9rp4t$_3Sx7ef3F4S4?0e>Cv5;vUWq33zX_JAeZ?-}!-O}3zkE|>qjvTl;x zUhm$1xwS;4+@5QaLtFDr+x;kwz58kANBdEqz{ST#&c{og**!^(U0@sAjMZ$q(jawZ z0^Wb}jMbnc0rH1jM@WAtPFsw$)-9*=3DNfEuW+6^Zi^3)a5p#vWENr%da<$$5S)Ak* zs}bGg$3i(`+_6lD22g*bL)ecteI55Zp&UbxUhApG_T4*eoBixM)PDPE&X!~Uc`HOg zS1a+_`G_UE|GH}XH=3DcXQx%T{I)n{Qu-`PyKAU+qrmqL7X@JsD&@2rxjTDTgvPBCU{ z^SU`!?7k^cbVB0^JiO=3DhEZ=3De3w0^xWfyTf&GkV@W9{=3DfiIi2OB^KwIpKI;tXdF;uJ zIz;ucU`r8YVvUM-HDjaL{Qqn+E9(gxt6}-ukoVK^Miy%*6B8@q;LP1w}Yh`wX9f-P1s>@V$DC1HUtO4w)E)7`O1!AcYiYyKUxB`o-5 z1ses}LkcE;(=3D+F@hXES{niq$5#9c@As9fkOTlX({{ry zf~2eFSnBy4#(7rGN84>S94gYpo+Wrh^M`ryc&ZhjW{hpDnZ?)`YfD7mF86=3D7V-4ty z&%YEtRvbsqplDvi@19}ZmO{^LVFOX@=3DiEDeuilI}Et&EtqxjNe-uNtL`JRy*qM!!+ zx6K8I=3DR z#kX~G;ZGg~jNUUSCjsFK6a;9`;Io-BEB|tRAzSv|Z?Er9{8RHx2R^4s+&)iLeY*8P zJ%2EC55LuM!srLzFnXwTu9if3>{E>?I1br8>wF$@;dCVS-TWv9kTU#}rSD{uJibvn z$Htl^eBeB-1HP%b1$r)@6^VU(^4SgI8HK8Ijhn6uc}}|0;_(|%kO}Fzn5Tg+?QxK- zjd7t1gHZ1#(jD9{#y#mrwxxTqUqoWxS;uG+F__>>PAmy!V*k(JIell!joUeK-dDB3 zIrZ<{Z}dkn?=3D~%y84mxAHhtRArc{%cTeie+$GHj1x6pp&mIR`K?JIelooHEq_5EL7 zg1$v;D$jStu%}(VqyT$Xf=3D(gl*ozUpO3jlvb0Fr}#$Th}7=3D{<#&1vc5z_rxP^UL+V zxLzS{v+u`@F#NxGt+?&Q0ZM@^{Bq|RF|KQp?4hMg~)A8vF9rGk}Y4M`Cv^ zh=3DPysiBgx%z59zeSAEwsD#KWqPkwLNPn_gCU}NcQh1zzQN z?w+-j%6}!#vO30Zz}eWWS*qMaRt*oMe5@+>kX1tg$_J}*4_P%VMR|8wF5Z7|j*oK{ zcgAG77k?YJqx_I8_u_BEJ1E~Q%f0y9fb$f0E|uk8{B49T-Z@K_d-1pND<~gJ<>L3w z3Y_w5#2k6&U@Dh(^VCeGH{K^{5d84{VY}LG4-QzvtVP~lyz?R`3 zUFNzd9DMSK)6U7py`S|p;#|$JRZ(<+eGh5pbbc|1=3DCMtC3+Bo*ayYjn&l_x)u~I0f z@uw(Xg8lX<2q(jT0FHOPhmE2BB#lqPPQ)ef3t>G$XQ6WCdLmnuiGP0n+VJtxA2hBu zVjPU$jeMQ|UPohvj14!|s&QQL!?p8piARA(^+pBgXY`B68(WLzg; zbjEP6vEJ-TcoUEKTpr4~)KTGfZ)>=3DD$HGS@2t80|PtX_EW*ZZV=3Di;}&MI8HfLg~st zSja`-b15^Tzt}9>1jKJ+q79y%zj#o=3D4oKc!!kO9^w@ID`zwd+hVu|;QC9UCY%(bo0 zZ<`m;u*#k1!p*39t*gzR|k#{0+)b=3Dqo$t4f3i2CZ>TfimYrUn5s7_E z#Q%bpxq)jU`YGZ24Ez+0b5XC5+J_M5hUNy6rR`Q3>mkhlPk7A#PmFDa?j@4$Z>3Ye zcG(bpukTcFPB-}Ry1>^>_l8bX-+?#i%h*eBNuP%J`lHR1mwsuH72BFI%c51S;QXw_ zIb#;};em4(1$W@QJ4SHe)(AhP^yxml6S;n@f-~PqGRf#paE3FN>61z(FQdJvr)cSi zCUlu|fUyTcwqc&JLW~KWd(-wDI2ICmjrEG;pIEP4Mr^%1Gl~w$7leZgYp8QvF8}G# zf32f`VNdShUyr!`R#U3oZ++9yC*~7~uGfUT zifwasQ$}7<$C(j*YX%#80MMYzq%9nLT*Uw0zNl%0)bBf%M$yQw-(uYU1jl*JM7y0e zeLoVrV0z(jmls|U)yNZ$8Thby&crYdVB2&f=3Dk&v-W9iWnf&px8Irl&Lu<;n=3D9Ix=3D|Bu%3 z@^=3D9~7x>A37nI9xTklu(`J`Q^221*Fw%CL?Y$xx3Ts!*zo4x-*TcT)e*V!gKliWFm z;DWzo|F9YG>+OhsT=3D*CZ9#{zYd)Pl)WYiDsh#w^PGcIAD@A*Q4%e}1la{M0FX39&x z6qn+bE*HN&^rFVD7lQ&(G_>ml;a%}G!5w-5ypK&V;LwZ5rCt!;&oTKIw@Lm=3DPM7R_ zyj{rO&c|jvtF5r+AsZi$?lG|Edp{#>uyU|We%Ux zjBh^N)M=3DG}nzr}{!x<~-hfD59@kWWcT1s`(^v97S+z9zQaT@)GCy)}F4y*~|Ax z-D|#Rm*D`x&r+L@pnc>I)~Wt6U(X+eq3CkintQ%(xyI4|(kL3*b(`YiZGwKOgGIi3 zTOR%2ma{6B%(Vra~1p;?cvp)kN2-Q3RLxKWf>9@;!!Kc<}#eJO2HTQ9pM4TQCQ` zGE2dkJ-1-)ctyy|&gWZk=3DBIQU)tC4bp200$E`ECG`9ZtB^%r#6?TF&2EhnSs5O9f) zjJM%;wg~+PT=3DGr8TTTJKnd&Qi+N1vsc6|B?y6pJqSo6u>uaNy0xb#09ELi04`}OOj zFYPx`(6mz7uaLPu5c~D31pK&j|5zUyiS_HR${fC5zYk^Is0=3Dv4zZZOWQf_98dpqB-Xb%iVju(L#cCItpB+uTj_s`?7y#^|Lr_E z3^|R7qBA#7Ud~W(X3KP*{^ec-SG-d3HSuaip#it^s_$@uD_$**=3D>O_Zc}dIM>A0nf z(<0u1^q#-<(~_3-vr#m%+q({0UYf7q%-%`9F9~_M<-2@8)pyG`eG$Pe`Mx`w@)GC# zt+=3DJj#M$suZoh!_H`Wl=3D+96%|Q@b6~``w#OJn-B+UdGhqFP8U@VxZDz@U9Z+pzsTH z)>*=3DV59a&)5rhn`Huxz#(9{6MuT=3D2`phy3H8RuH`O8Rhp)d?Z}rlUIf+ zbhQPa8yxs_kD{TV6@J9x!=3DL&P9DI1x&Ibus<63qRw6C|_a?vvE9K@n6CVo=3DIeWoc4Xo5~#k!XHGlT|Jrv+uPr^fr3>|A*KgWi_`8so zkjr-HiHM1{Nx+AX+m858n`-C7%}d3&w)j$vEA$Y0Li9FEJuImOK0;pDXCWWaDB&Ni zM7(JDaOmf+SA!I~Onm@su)n|39+NhHvsh2rc|hyFzpaX*GY1dw+m=3DrU47fO_z7oIL zl%uVV=3D+(yzcxZdv0L8OS5q;S~3*I41!CwVj_(|&D@?#X!_Ypoo`h>*0@Q%~d)E=3D_N zJT-eQZs}^(ClIe?T(9l6WZkD%6b(t|#yI>C;TNozjFD%aPU{H%>RMgrM}o&Ch}F0$xb{5YK=3Dko1d4SFyNM6Q!I1iDuPSB#_vSxZ!e-ep6&f! z@ZEgwANViSou$g;IX0{8M<~0W%D@BI!!MWNmM)h)c*tamT_!hni=3Dv^O4@B2r*AZON z#eCmVrVGCep$c85y@Z3a_WJvpfLI4bV!ec1?PC&;|0?v=3DJ|@k}B}=3D0i#KE6s=3Dw~d! z6)%e;`iFuR$&*>uKDT4t@4=3DJj?L0|srheV{Z4h_>&f*>7)rNek5B%732b#~GI!17* zr?c9z{~dV6?pso)Q9t&$f%vt7%|kPN=3DRfy+9I(Hi9ZT)v-T!)NueS9Q(Ys#gtfXsZ zJLbQ@89QBHll*kef9v}zeAs+1#_djUIqoA?To}Ak{1LQ$n=3D%sn+VyUFssF!hX8n)H zP;@cf{>52;-43QmzjDLQC>ptS=3DP$xu-MaIa;Zz^??^v6W{ogQ4m34OLKJ5PnX8*r% z*?&0ri{Y){nyzpa{B+~`!Uh`Gjq3|b3GRL_5yUtAuNU*5w7p*>q8eQ;f8^H1V8pHy z*B3_7(5~wwn-_X0IMa!8#6B+s2rhMEh7}hCuc#A_SnPV?*X-kxjjdbd9+&W0w}6dn z?TcP{+{f(n_FSU+m;Oz}_+s32pK%QzhgffVxh5~BqtowcMefU`+U#Wbm*h8Q( z*9!f2%YE$%!o}_1o@gd`>G4Dl{ru_{DwF!~^9J0~<=3DiU(u=3DN=3Dis@BzGzAm1IclJX8DCH>!ssa zZ;wXm$4)1W``i+OGdhK@P~)Ych%OhM-0q2=3DGA@t1){4t}EQq3^6_;;5NqO1tv;(-M ztJQv0pS|qz>M<~ihHg66>?OGB-`W?sBA?<0+51m9=3D3^z756FN!gtB~0d|&BT)@QoWQwo@5bqrX z5T_+?5@j~Kjvs@)y##^-Ppsc2AI2?RZI~b9e`L4oWT{UprF_L+Ob+pY4vM7(d&t_g^{^MMF1_N`<`aJfb!GV+X0efjKVx;(EpoGgo~QDvFEbhkU!QV zliC#j$v7clh8>Sjek7oT;S+Go$z+c`A<6uF6Egs8Mkzq@@z$q z*4g{NW^WV??fuj9yFX1NxavOyS|X!%Q*ya zY4>6sM?CxE*(e54Hlyb6gm)vl{GCh%S7)_oPAD|>4rjR39wx;B@^>=3DvJ+UVpI*E6Z zx(NR-_3yzHA_|vj_u=3D5gR?a^roRf5QSsFznJ6#<*0)OF$Jm~69_1$z8%wljxSHT1e z&gqiBlj%cOz-VK|I32zii6zw$T*WvgGRE08U%-S7PE1BIT_z6<-Eqg}9lmP!eMyU=3D zXlUmH$?@qv1XuK`HC_kU;5=3Dho*j&_O|2x{s{&$Bg$@`=3Dp-eWG?q{gJZOf}|>?_f;f zCloF!RwUh-+i2lv#){CLxhEK0$)v;g0T*^+*QX9Yj>NvOfa**B2D?iBJ}2ZVb?nC$ zo#xrIA5ZYNoemF6I=3D?WG`nB_x_WA!{;$hKA&(-IqQ++#rv~SJFavt=3DnvOZ-wr)^BBJN#8*ock1+Ky;OI(9^uJg(i zqn>p}_uMULFX~C0AIQcKbeZ}a4o+xp1!r+4C=3D%;*Fp5TQoPW>8H1wzgo@wXprTT9E zc3MDi3uk#2N78JZD<+)tL_LY~gi%K`RoogfM*a~$yoX94xdEyIZs>gxD>&k zoU?dWZB8MBuas~N&r|0JzDxYaTXBH{e-HjR&fRuwr2Y~ANLh)vykin#$~6R6{fBT% zmy18{{yTQJ&zBtqUH18s&We=3D?dlh^z*I0BG;@3-}7zk$oSS(9t07?P`m-zf>EpF*@ z;p3K9$8Xr>)v;3)4ejzGe4biGa3vSz4+TDa+ySUUmpN`Y_`_D_zmDSkK_u2;X%vm@ zW753-l$`&Lt9jjw1v^I3W+Jr#y@>mMSc+S^+Mxd(e`)7`haOQhwDX_#Wu6rJUuxU8 z=3D=3DgL*pPf$iRos_|vxIxCd?NNcS8buZl*12GaZ8uU4}ZJt_^chTgu*Bq+VLWuJSp(C z>jmwn<<6%1z}InRN5UmO_b)~jy4r%zRy#iN=3Db~tc{<$5zg?)w-1Xulg$bVdG@_$eI z`*;uelfPdgKZ+) zTz`O;^CC9K{Ew4Xw7DX$+C;Fhj7 z=3DtJTtyFLVk-0k|1_&`Kocrc0%RsX5DrOVa7+Ycp*IK|or4+{M^aF>3a&H&F6^vnLg zUm<$;=3D%4#t!dtGj66do1dqvTh_$AN3Y!!LcZ#&jMiA(H!33$nW73^dpji>sz;-a9O zPs72nt*n0%*GoGIOrt*Rev<6ui3EZR9WrB8vXhw)8F0%^5_d;p0ipkvoxHT0>H#Z4QX5c*It#w7X;0syX>^~Ft_2!pyRK9}BVE^*(Elu)YwE3O zv%jsSQk_k>zt8&SAutf%CN{ChSl8-T>5IkLJO}rg;%@-uO<(?;=3DS;~H&YDz;yhaK zgJ(zJS>lIh9q=3DR^XQ%HV52eJ6;rc&ly^qL;(=3DR1A;y>DTEgXjYo#D|-@L%XBPNR|?kd9Kl zO~@Bw?EJ-rsla8XV7R8m6~H#|9fwIOFa9BK*uKg)RXWNyI`XBCyiNDfUxB^6>4GC) z}yxG1^+=3DfH!KafcIEU>#lCBrs;C5|FYikz*zXsg)z1u7x^%! z8+l`WVU(xwa*6AIiFe=3DKe7W3wb+}&Iqj1eqW0}8I6b{~3=3DgpVPOZvruclcHyWvV70h7eesW6mk&~!D`zHGR*!!$AUZ$+>^P&GzGaJ(br%T6Jc{_1xTunSuIHhnt z;aitQTt>(nwkN>IPqLS{z*4OXh-O7b&tIn)ud zS*mbWG+na!PDMi|bZ8=3Dd8;rhPn0Ng4+`0jp*4RtS%}CX>CB3wn^nYS{K@f8<#fwAf zxgN#G^ZtA~H>}MS>rL`&Wb1XqHPJqQ~}C&u`|J?-ZUbiH4v0{Y&UDT`3P20DJZit4s5ivdDj#+V@?i)l0LW9XHT#ac;6 zcs#nKOX!f4MYvOIvhdKE)y8;IXP(>~MTd;0)tnEZ{J5@R?a2g3odTneP<}#rSX(OA z^sJAlRi3yktj(I>XwPKcsVC=3D^Tjo>6dd%n>x;esM=3DHJMqaU`$4I|#RQF`0koh$(Z( z+t4jxZyvS=3DyAbPGW9-)DJu5wm!CIHMe2>`Vjga?G3#pwo2AB7DrlN>00ekVFyOvkYAC%{QBop zKT>{oTXTTvckaHvow{z?q@?o~hYUP@aDad8*C^`P{Nt2k1YN|ijVBqh5C{F9ubdQx)>eb-q21u z9Q-ak7)6Jz+r-xwh&ncYPqx{eeLniO`#W&wPgX&6o44aHwx|m)K>-L}VzrdVBd~_RgVIN@!Mw}$$(+3Ym zfe534`Mk^u6w$@-%xtgzJM^SL*jMX%(&z3d26f<>PB0%lQ&2>g(v#*|nU#N~o(!cm zaC_Eb4n28zXB6ET|SR{oWA z4fzlCf69_5x-)RI(?x!F>N+a-rYqVG{lAIn{}7x0NA%bQ3}If#*O(dHNIJiDPRP$# z-{CjPLlxGX=3DU&_8nDZKF>izR|a$Se}6mxzP^W=3D|({yW#!xjEvS@0bs6+!6&2QXb#h zh+Dc0c^GsEAiiloUEHWY3h#_|>Yc-0re{XcU+eaAqnK0d_VR#9Kee^{)eOTvm|bVI z*Z-UGik!b^O(Z;-9*ux}0w%BXJM9W<1=3Dkz2gk5_94+y|( z3AXm2y_Gdps_=3Du7_E4%I(xkn`<{zMsX{ucOL*DR{Mm~|3OJ03*K|6U>VCU8B6H#=3D^ zcwv@@@@YPu?ewEjqkSkpn1u3Gj`pS>M!fpPuqJ=3D+*xMhCPvC9A$I1RWbc4WC^6`$t zK$$LP4|f!{lMg1IQfG3HMA0GRgIO;5@S{#t?oG#!gv}dmK}Rcb#SJ~EA4Nx3+|tG9 z7`&yObU6IaL&9&j?tiWq^MKv|{BU*@h%g#hTrqeuA&HCQ+1~gk3;snjbVu@h&bBBz zZ5`L1b)t?f2EBhj!5FSn*ESLMNh#@L?}m85PDlzU%o-s8Am_%%k?AhyR5cIYj1dyd0T`0jJ8k9^jne-xOR@)q&i z_q!3y8c*zVEH~@q2iIfn74ZVAQ)-nbEDUQ8EOPWwV3l{knq0<+tbLS~FGu@kYEL=3D` zzcE7cdO!g{bg?~>0sY&lGY(&zCv>uP|CS=3D>6`Oy{cG^Gl#ost8(d4@Qjrju4HpkjO zG-VEZZY9>vekh8;{A2B}jG}VMzi*7dEnUp!Zaw>-@$caYQFPck|Gq5zpM5U--Ue!C z$RGB`_;;(Zm%{O+_dnV*A7mN&Bz?mV`t$L?Q?p$9$jM8n+}p=3D}PxwEEYb&us_hZzL zr88;|(-ufDApJ zx$9$Dx$~Jj&O`re7AyCA=3D3eZL@4w0jUy9>_vk`kSockW~#`$0QY|JwE*_3}xVC5x_ za-0)rDP-kNnjc5`L{{#gIgo_%;jG+;=3DD=3Dcan%}LkXzpvw(TwKw6W%nxyMT@9z=3D_U5 zy*q`K`{1Pcoabm3XUL=3D+(rx?ynDcCL1M=3DhDx|~jPpNDQ8I>d1Dz`2Q^A@aldF>gLr zHCcR2vtplkabDJjv$VG~AN_Bdb%irOkNS+CCv7clrrXxi=3D-H!ev~=3D%5;Cmf z=3DU+-3<+z$75h&NM)Y^M|M0;n(dTUF zJIwxX_OSmxKKB3473{xp!H3(sufc^5)aQ*cEKYhX;)mmtdai zW1}Cwr9{a{{6oITkvDA3D4*mg&vxWTIP!ydUeeZkh7WB$7(bnQ3B7H|WaWN3;Nx!( zY_<5^+rWv<0XH4<#_2$7_79v6Jj8Hv;tc=3DsIoBaSoPEy6z0K_ZrUJ!BjEx z#No4m^IMx4&NCh59q> z%}4+L!S&yXGvxA*WBxd6L{os3`^n`RZ=3DBCpS~%a(V3*6AwOlU1!!aMcxyN4qX1P88 zkKXqDn<BvuVzkNI}@I_8(hao*rvE3A8V zcVgv&hxmp?&|`lp&f9mtk!AVr9;735u{a>*qz_)**tm{4km7*d(^$FBeB!tFab~84 zQ_5P2k`1RZ-Z)kAy^9hDuYl8;>lseYITGvI(|itf&=3DkNNd796mJ~a95F}0LgG=3D0U; zAI9ge_{hJq55u|4P1EUnShPVYi8@}FIRIp z;yq4>O*GqV0_8=3DjzW66??cuasu=3Dtcb z)5JO6#QAz}oGW&-F`YO8=3Dav<$+z%(sTXro`3#TtZBI05;|0Vg{&r^04{k>)Pr4quY zb=3DmDW=3DP$c2$#Wl`WA51EGiIta=3DCymg^<_uEYfQ*=3Dp`u&-llt?;MgBUwW3V?4UtDhC z;HR_O8@+H)WA^YLbNf!8G1JtTz30?vsYLhn>Dr@)o#5LL@p*Gc!d6c1R^x6}v<3=3DH zTj{pOTkp1yx;mew3mpsxyV=3D&ilE!X>{b}5G%$vq;Bicse#Y}%1yYBR+aod#tjK;1W z>))<4_xt#}t&QF^c8z+_nBDh(P{;S@bd__2TZMmsK zrti9TqR&{Z%-!T~KkQF*tGUU?cWFNR^erWp@4B|P8>egb`pe+`&$r9txN3t{(IozHoXrO&>?SgGD|PxQ|c?;7)r;c^T z@6X@Q%Kda~p%1=3Dn|Gd*^H_nMZ=3DU>X!TtOB-`!h$^Oa3I*@Uh?z5>;OOlRhBPXZ?GW zub-U!!1}gqK^yqtGshiGBK+hTi^MEDj%DQI%xmZ=3DT@Rg_cLu()1AJw+^p%$zeD>z3 zt>G_w;yx9L{AN%1Ncf3n{5Ey-QSf0Qd?dc5t84zgvExJDdQ{eh(S6vxFYxynti0S& zj^|zP@%@`+j&k7j?{lnuuDv|a6@H%U=3D{QGu8syTQwHG#7s$-4m+S>~Z@YdCq#g=3DS3 ztOoDs67~h$vSn8OmHN{m)0qA(l~Ap4 zRy1rnz-hp~@1^Wh9n1T56l*)oHJdilKCN@Ug#LBLyU8i|-xdG6l0ITBh&9Nj0;+H9 z>ykb}uP*R0B%czxd-G}2a7O2N$jY`4EB6}p39ODGQ(L{(zriKW>MDDSH|S?RGk&%Y zZv5G671ts8y{S$7*;SdN9K6K&J!@Vsag<|^>u>@qcj!nEw(#N_R-SEdPv78dX@iag zOT6{`MX?7ZbtKMOKVn9a@{04Z{}-1qoP6Zfyn)rZ3VAiNH9%ad(j_LZAguvB=3DF=3DCs z?{V;x)+H~FVR$+CN&7(W&SK?$Hs>?PwTL-c@-sM<LINoEE&lHY-tH%*65 zTwxBp&0D^Q=3D-V?`*9EH8SjzreXnruSh<>QR%-}}hGQ|g%u~)#w=3DX~5DG5-S>!+#1~ z=3D=3D+5i1>cx zyw~ykx=3D@>o{X{&Q&@)Mn@K62dcY;?9*XGhQtWCH_+mNWc3h$%P?@UkB=3DHjJ97>L2v8 zp%_8^?N?{(lDKwS7w?!SF-4*GoC z?Vs@sXIjtEW!ZV4h1S3xcK#P0dzIMzBH4K}_lq;_<%DxHZ||Tfh#2Dq?!WwK`l7cS zUYKst)G|quWTUBzH%%{WzJhJ}tT&ss(sznfXB^5UPc>p=3D4o@3GfyyTaH$ zarU|*HFln3Y{UNvFmM^qae)oZq|f}0hVr3n7jpdZ8<__Eir%#j`qw(>Uwf~;y{RVx4ElQ_*6#;@7s$-&F*-jz zbO*jCjPI?E&Y=3DBwlv4~w|F6UUWQw_r_zS;}Q4gCX82PF*d>p9*mlt{S>G>^62d;)s zqa~j%8**hfeA(yu$Md_HuXETa+3@qN#6C1vzqOaO_pwpUZ?0}2e8pTHxKyEdq-3i* zWaIJeuE3>xym|N>_upl9ze6-V$NhhaqZ~Btk1?8@JV89T{}3zBwzm&l1G)2f)rTj6 zWN*J!z0l%G<9f~$sW**dy=3Dh+4%y4qj1e(_zW93eoh-Mx`J805CbMq+H-iIdbNpG6=3D zt+r@tIP9jW!Ds((O*$LXi8E;0$8mDvT#U8#)2zK8&WpWqK2^eSHexkqPoMAimcwcu zyO!8>gLH58Sca36Cdgs+U{>y=3DDGBH2+Oq%SL(}DAi>A*3^Ln)7?poKN%ptiE48Ky&@9bgh?~^F8MJ zQrN&ndcNVB>m&Lz9`t_Be0ozfbJ3 zyN2@+zX|2g|J{}L^4(?je7(b->KEI~S2)_Qu(g*wJm>TLXT^f6msxYNl-W5O{c^ne zv)(dW(ZiBSz#$V_^Dl2?<%1l44>D~U$jXx)6T^lKo1N;w*|FAZeLVrcpOE*D+wt8lEf0I~^~fh-9+)|Fmwqwy zdiQF2&Xf1iw_eCQbz5>?op}bE>^hsJEOl@Er@4j7>Ay&P?#utlk8-hANK^mU;~mDs zY7VSMee;t1KI>!uPyYw@uPgbVwaH(OcgDy5pI*x3=3Daet(yP^&H@ApoUo?`jrGamYX z#z+63=3D4+QKyG>Hez3c?Txy(@xpHq>*%1a#Ocs{V>BrBh3FQ<3UceE1!2H=3DyHO=3DRtT zd_utI`9KTXn>%fbe=3D)9Ojr@l^Q)zGm9lnY76Z0O&xzM#Z7b^985cE0?WdZ1V68N`c`PgUw=3DM(C#DXiQB=3DcRlN z;)k=3D(J5{kn3+KAk9A}a%WJhxBspLrUbs}IXhMY)tS&!-$a5ix(&b?2DpP2+%CcEWT zm*7qN(t&M=3DD}44sb#d-B9H>3R@y7Uu&lX^*FSYZ%$1mB$c)Qi1512?vqYR(Hu`>6%qv_G|(;pTjH589vN zKG^x}9<)DojB%wv&zjyE90k(8&zb@s4Nx>$&zb@!w|UF*$%hypOB{L#yldvOa)*xzkPaSX zu1$QOHL=3DV6ir4v)lcQcKdG-ZN4#lV!u_NJN1A`j*DxA< zaE$ZW4{bhR;aFpv{}fI>`#+1h{g=3D7TzU(TY$mY*9VSY{hQ|e7=3D35_p@aFfsOwEBmV)K z|n|E15F?aUvhGnCSfdCH|e|RX5=3DfSts#4eKekz{}RvO ze~I7QTtKn_-VPlNB4)a@RF#c$egh7%LUQE%Uh(}m(7pk4^H%V@l*>|{<%uuz*3m@^ zoqf`t9%7F5)K552ZP2LvNm;3)S^UHKFk37DI)?IcY1`FPy!CTYYqkr2vv3yEPX}LU z{#)3J?NY4y_ZVyMW4qcD-hBC8gQdIg+v1=3D9Bi#kPEr*nx+c@|AZmhrVz9GH?=3DdZi( z)0&qqrn|>?ddul|t;NT{`)`Zdz-OPcb?kl0!0{r9l5sxpZw8J6jB$Faa`8{<*6}Vr zI8R_WdFamL!lsmO%jWiivuMzr$GPtL>5k7jWfR-~IkwSGlYRd}(s0b@`RBePjD{)) zj+Hno*qxP^*~QDTmdTE{Td&GsZzg6gOlfAzn>#t=3D=3D+xm+$ z`YS|#OYHr{v;Lae*k4DZzdH2SXzwqP_1AF4{%*!uF!?*X+0thI-9y;@HtdJsj2nIT zfX=3D(suAmLNwI{$<@!Pw^U(z$;rSUtw^xn-pJv{oU7Ss*=3Do6dIp(craUE}fZ*Q)kZt zM>dFYwqqRQw~Fu^wPJohM!#d*GMj7wIu)kxNoJ&KOS2!3AC}j-n%>nFF_ZCqNjiH=3D zb1}Dv?4tN#r%&h&^0#gEp5%`#yErn_#3!DfNwp-Yy!eOMw#kt<<|$R)($8Mr($k)A z-pcdD*UN;iU46r^^ zsn5(TyJj_;9G)#Rr$&U6S<6vHA&p1W$+7wP<-Av*`E6 zQzV}Qg3rh&68|k;9~x(l0Xy{8`Ac1xT+=3D+p5VFKPLwt1fU)A91-&cPc<-UPI3-l*b z%hD!7f1o2Io1vsDv=3D6HEDgb__TC`LZXQo%sycm;no?c6|Vot10OxJyQSe0z{DSTPOLX{W)@SVauM}Dd!Ki-iy{E*RpC@;r6p>L9)&v{t^WG+=3De^>+~I=3D+q}LbRE++-66wNZq+C``V^iI6G_EoK*}oywu#n|b ziN`FDy%W8f<*`?yA3$Hr@V^ZGniuI_IPi{Z4TyJ3jdKbEAnV1Y?_*w8zX5N~m9F1^ zZ>guc=3D+EG-oU5&G9~D3@VRLZYFdQF6nPKmu3UJ-S>mpyy^H$qL%w?Y&I%c%3;dRkA zkLRtnT358S^Tfgzdi?n^TRXw8gBi|s4W6w?dzIfP8P9ozZwT_|Dp~aHptN}LKCs{| zi$UT<48r)DUDRQij6W_e&qx(MM4hKN(4g>Q@z4R+84!#;i_JsPRbLZv&>yCC#&1V; zE}-)^_l7F)n?{ywv1Yu?*Y0AUh?OTgag_MA^d#BKIOBj_{(@%*T+cx8Jwd*Pa^gm3 zmb`Eq%;;$&Zq4i&!P^yXzP;_C{}(cu|BbG~JPN<|hm7=3Dj$7ZDK&EB|OdYZLqBW_JK zf^T9DejBR{aWR>`kx;SnF-FEOwP__4PFVlP2 z#W}98!ggWH@yvb`ylFgNZP~{DEH|C|>OAo1qWCC%1hY@)7-YZF1}}+qemJo2sK*$E z<{0W5MxbXM(}~fAKi0G%6|{y3v>>LSGxq_nOI@cpsz+7Ycf_=3Duk%AN)PBj$mNod2c&yb4?{H}@SWsn<}H;=3DjbQlH?BOIv01>Fz7z^5$9(T*f$Yp*4I& z|CG-s<4u_t;62&SS|aHWcr-xi&d@op;hR3-QO_KF(+9dkdK1ETut zFMI=3D$ug|j`IC=3D3X$&JtFOMLKQJla$1#%IqGH$G>#Fdi`*({#IDqym7$Imp5j+`ErKOr<^bI?0ms@W<2@QxVa6u zjBw-fx^@1`)7%p6YuLUk%`djSQ-^N}( z_%Qu_J&ogoHB~39H>b)qRb~U$RQOhoYfVLMXuU81iF_%g5YkYjEF|JL_R*VgKIhVE zd@rXM>x%~Dv$3x=3D6$$W`Jgf`iX3b#=3DxKGG?e_XWuGU zgJ*QH7^!lUsTU@Gbvu1xJfF3JJaZThRNCn`*IAt^z*mx^c}f1icF;Zcxy?TGWBq9R z_NbHoB5(T7O|s^i*KG7h^jgv<^MYQ|cOjDTUw#*&gYjL6T6*uoT&Jsb_64&cZdBV8 zciU4{S86MHv1_-R7pLTUL&Z$aH9B;A4C9s1K}Q`wea*IbvTL!TgXzRBkM-{Azy@4h-*?-rW_?aiMt}G)`AA@y}Y<2T*p(h=3DWC0ME_{At*%&??wsc4>qofLmzb|euV=3D&C#n7guW&A~fscp0F;6Re^a5V)&=3DJxz^=3D|OVji58TZF*9% z!cEUf<2z4YI^aW-K2y?EVUs^-=3D*@9PKG~jcS#QtR*z5pjv1%OURgQcm&lAl~-;6#=3D zc^%{p90eHp0!O(`N5EI>-Kh@h-6_~K#&W+q)j?D5PSy0Ia>&6ZLus2k(%n4&u$iyl zoc7@Di;Q=3D$cl1>F3q1n9?0u;L?)RlSc)c6_A?CK`RN^0SK4a&{hk#m_q+$C*9yDZJ z1r5S?gag~hsS%{#FnxUx_|%NBMko9}IAG78w&f*$+dTZ=3DY2%w>PGA41H-Ary=3DXc@2 zwyieYgdf-@;~(Rjt@xct;FZCAR(RDg^Eq*7-pR{i?eLpt5OmBH-{F|R>h`2qf7K22 zjg9Kjd5NQGADy0iEw%jWwm~Ki@x+4@`|Lb8Vc;mhk_TINx@B}?Y5Qf=3DyiwZr)-n?Z zGalJG!DEbp7Hxq6Eare;Kf&VFKr(!?V=3DuAkgwU zVw7!QWy`HHdjF`7uipz;SqaK!v34xBqW6yK?q_8zwxV~A>M~iGL*L@A^VYXIcE<44 zu$$MfoOAQ~{oU=3DGdz#itS-xWUB{lcxrD{C!4}7-yNU2Y+%w+Pqb#_0D2aa zck(v8Pt@1>J`wpQBW0<3<3GuX%ILpHh8fW|H9@aKT zxxG7e&u49Olc;aD_aS_bnDFHLbwa+D|Iw~-`U&b=3D z#*m+vTXVz9Jvpuxk)Wr#(U0g(>f=3Djv2G;hSA$+Hh zuM<`?d|~tN4Q4VaW@Xq9KR%X~O=3DV^9>ou*d2NnXi{;aK+9h5qGCHd4W>dN)NW+S#V zWf~4_UJClG?-$eWJs+ig%YRQ}%NU(l0jq`!W*;#Aeo-GPwwRDOP3T zpR}pJd&K`X{K$v!=3DjY(zac&>Z=3DbYf<@lgzCCm((Moj%UuiB%m zW30-EUd{Kfd5negtMBe-_%YoHgz?+RTwj^)1aNM(dJSvGbSH2CWqiNUL38l?-n#RC zg+=3DqG8aK_G76_Vcy7MmIU%Qg-@EEiWy0dA#i34;ex9H}YP?27rTXZ6r(VM<^5%*l- zP0*=3DMY4pr2sWwMTq9s>2)SE&%oxb3lYe~;CZ`7MI(qFwJ9N4%SXTZch zHl5R?-z90p8B$r^sTX`g)(<`o-jJE9eIc)Nn8ry(zb&+82^DB}g>v?$!G@P@rLZVQk7><@;SgWiSoE# zNOfnYf2}v_8EZ-L%n#))8Huk|WTfI;V&C{-*N@ba@@ny$U*XZW;`|!%s%P;jt+V<@ zY}brbT_1Z>{4kP7Ugwl7{AT+FIuDF~E0vtZKRi!L0&iL}(qF5{Proj?c#4$k73y?y z%31cY3-RVxCgn{@xpn%KAmP+CJLipG8!;$iG0e;MGso_BiK^Ypt+wk2{XzdDc>DZ& zQf>u*0yDx|5M`v;f4QbGA$|DA;xAm2ta_j8$Qy&1| z!y3CtpNAG`foRcn(QshHi6I5}2Bvy9=3DkjkzFGoBSMSbBbpx=3Db!ozH4rhHQJV>NMu* zLg;{c?i`wz^Ik5r{C-FMP%Y|(wE^NiL$VR*bSXXm!+2$=3DAE5eAt+2*`Y|Arm)VgG( zKX`!7SgW&|$r3_Wa%>TrZ~hnYmD!YR%hJOa-uPy9mYAo+{WQrEuH~oXWmkc zv+g=3DQKMdncr=3DF1o`U5h6WmDB2d>t+Mdi(Ckh5yIeyTC_PUHjwvBq5nZsPWfW zBZ3SPG>OrR7Ih|*$MC9?jM|_es5~YF6};MCuxKYT!%Q&R#A=3D%q>Jc{&geiHSsX*HLI zatdjSdGzV7Kyu7Ue}leZze!UY@O5i+`ajE_>PM8zUG!vuO^+vw&7lq8OWc%eo4@Zy zu`{%@o_N^DGR`Kx6ud?h)qz)Efp_xPZFolk9rf!Ufww4$clIy;fq3WG@Xr4S;=3DRj; zcf>ys?;}aPv!3|};(gMFclLh=3Dua18=3DGybjRx^(+q$^poJ7=3D1DQ>EsvueK&{?!rqLG z5?Ba*JnaI$kmnuOch{ z_(rP_35D5@#Gi&w%^+^q<0{jq?wv_EtnbSJ?)u1Ys(u0cYKGp%e8$h$;1NHz@#W9U z{|9Xy^!HtVG5|z>yRBD@_V<2#Ez6$1tv?*#bJvizmP8)KDikv`AM|Z z6-|TRdonTq>r-Wa2%rG_GRSIfxzno-$F;m_i&T~?W+3Ludd(G8>eeEa`|Nx8drAGo z6*11obNn{)AA89d&3=3D-wglVf(BYo=3Db-xDvM%NkPYw~QzAaf_b>J&FAY*zaTM755jJ zy4z^;b*7G8F~i?C^ML@6K(BI3D)7Bf<=3D|{o zSCyAB0QXTi=3DnJ6}W?!%=3DsTXPNN4SQ1(|G8`ki3e{JAD5O)}I{n7-NR+)#F&ZS@@bP zqxw_IAUF2-mZ5mm8!2TlX8iurlrmdW%H(42q}ZITu7^{~;M~NA#0S{QEE!tH$oIz| z9Ggld+2ndf!etnsH+x_pPMB-2*sjyQu?>Ntr(p13G>Zdr^GG z6PJlEKui_F+6cSvo7M8I3dBk2h=3Dt0yF9P4oD`V=3D6x)+e6hCX>>r?YRv>+k)+xdBv! zJrz+68-GLI9o(quk#E&GRPkjh)-xVH)(cyzR#{_<5Jyy2=3De1R3LO$`0mW>Q!7f<{9 zuDeU>u*D+oaSE}B$`5rT7Rfro@zI(BF2CH$PL{W;ZlU>soa!BV*A4d)cv9shM zu%9NmH}GUK4{7>?guecL^<|j#ZT0tE^Cw$<8K8xW4THz*TdukmI7A04J7L!c)KuvFcCCMp&lRT7SD60G zXFP87k3X?3^rFR^^g{GWk*7oc6gHP;Z(cU22i1>mc2 z0_9`s!E%guT`jMViQEqxk1;QBhxmWsDRWoLSa>(uFnoW+_ng$ZFh0NfkpP%t_D4TH z#m@D(0XA{J;64?fX%k6&<-|9fO@KebKkn5+-7lf;vut(KFEnYt@R%1U_(|A=3D&-iIi zB8H%>5ZnGYWc8W9?^~M!Kse`>gshg^WYrXTRo)d-ul4jVa*ieF9meneMbD3k91Z6X zzq`lsyXryuU7OFPY<-ZYw|pFAi+qOYJ!M;EjA2d{`#~t%$<}y|@+FQjb&x&w0F>2n zKfvq2vt$q3q2;ZXn0B(0dQ;ZrRbk}KsW*X-5$8~Ec0+G6UBsQwm zrk?Cel`G1Z{0*IG_V+f5Z%z6{caFbrh9&=3D3QgJeGm{L~c54p!u%cA~VvwrGDlyF*a z+|&Ji)88TwaKB6I%i3IA@?+DN_80oc4<2MblktnGEB)j<>PpScjEQbk4#YENeBu5s z>bNHWgi(xv?|(@-LL<7p!A;UXgwPM)t!?`F3%1yQ-3mNUJ{$6mf+*~&-`>|iw?_JV zqc^b**LcIpdJs1`5^>BaYbW~;rQ-0eigyy0F!V{?JeT1VxIQ`4U>I1~nt^fazw84E z{3K#Pi$8d#_W+QGTz3!uX!nKD2dwzdy~*D@#Ej73I1j3wg320#BB zHfhF>r4#&p-X7uEi|7xX&@b8_;t8BNb~o0-e3+`++O|R`2?HI^1x+LIlb=3DN2pWxH~ zjHW9=3DlZ=3D0(!_&m`9EY*@(9!^i&@`cdek922`b!P^e3acfl3 zo=3DWBHSf~ogi?%5$L^^TKs_2pUY#BEg4m*rq&+_6y(wZ!z4xx-;;YAtbnEvnDlro(u zWsqZfKBX?T&V~c|rOsDVaD;5nkz494PkBBs`J8#B=3Dgv)eUS@laoYKFGe%jhG#`YZf zq<_DH@RY0M3UJ|SDt*`A`-cJEhyD(E_nkR5LZ8(jaTN4rtIud#hobx>`VQP<-gin$ zznjn%zN>FIeM#mLJPv zacIXNVjaXmo-V|DIGbqfLR?>s7)!4&Ue5Q9W1i?!!j*OEn2BWruOVha+0f5XcElvn zNvkYq9yX3{$ly4{b2(_1{;yK!uAr0Zn(%__^V)J${GT;tO6FTeSozl%L4|4$>}RBVREO;py=3DAd1?hW^4**}@TrNZI_`?T0D2Q+ zp5wdh`p5fjry;qaZ3PB&^yD9?e`udMf8p8T@BP0GtOM;6Ka(;xNBh1vQD~5Phaa8N z|M`p`at+k~q_x{&f;yiu( z?iD?P{9S}qXt<3wu2Fd!Wuh*W^{K*>_U9N|yaGK!egAJ)&lJN!ew?a1%SB(&|9XAK z!~1}qpTsoiD0pnphlR&X3s$U(506^Pd(rTzjT=3D(EpXC~VyzHU@kS=3D6hLLy$ijZ!t0!GrUfqctS$tr2b=3DENx zwjg}9^HQua@-o)t8hg(RSX<#xMq#1Cnxpt`TRmeKi*f9_Vk7&iscZdxSF8p8v*7xSjLl&^|HNt z!n{wup$#HS@a$8Y9_Dv9rkU$urh%@>e_(moOVqTNHeM(7FK4Tb4>s8881GCL8Z_J) zzbBm7ExyHWb1vN&>O&lmPMgi{B5xTp_*Bk3*xz>;4@myf3%H`|CN=3DmjJQUrPHcRK} zBz7pU>^w6-gqku{Jf1`O2-T6V(UwSyj!Kg;#t zzFF1@zPFR+`zBJa%05B4DWscaDF4vW-Nm7$yHT%^ANq0+e(xzRhpp5WsqD~MSXqYp zN(#Y0uRf=3D9+ccH2cA9z+bd<`NY4%_jlcsl)cLDepD&arpH4^uONKSY@Az~W8~x9Kem_OIHxWCbW61{+FbV( z)Ak#0Z-j5remO4d&|s5WeJcAc(n7r=3DKGPoaqm632mS6cd{C$_ZSqAI-#6H|b<@E!=3D z#cTYYhTpBGkH|$Fur=3DhW;aPZj&_9FrM4yH>Gkd1n)+t$jz5vRC=3Dh z4)rv2rF8}3QGefM&#~-^>~RHd`04xcY$eu%+REp#ucUpWtmJ>^Y)Q<+&XT#*RhR>g zsV0_LIpGKN(c+_Q_1D{MYjJFwnG0%DX|B5Rm;HkqMHkTT`+(02{oZcP(|R%2d%Ad9 z`<(J0`THh)!8TNCpW}spz*^G5-!aFwvfu}LZC<>)9DJ$=3D&+zPIcS*kZ-I0Y?(g&XC zxBR~+n)LmpF_r6af;SIg-RO^D-x;0MgSnxMt^A&DYm@juJ7g#KcxYTf zxT>buU92+y?J1RU9BUx)`)mA$y&33N=3D!0W6TxS1Skq$g!|D=3DiiIDEbK^Vhph}2vVuvVL%1zeR44rAZ`CcCa_yQugJ%8i$DPV|`yeP$GLLH~+=3DIlB~mSov>Vmxj*X z4LKM#zozF5?%T*VRbnpu(szl2{WW-UggovkgDVa+dd>VQm+jfO&hU_yW9x78K zy{iV_u+ePF!dvF=3DyW|D(r+b%C*xg~kM;qctTwRPOv!CI!qz(Ud|1da^ueqdw<>)tk zYQ%^Xn9ak$Yy^yqTTrhT^}0~+B>FF1?-|R8L(kj(b;&UBX9Hg9LBFw=3DzTb6^Y7VtD z7yH!MA%1Vls=3D*UDL$JVRTOx0*AKv}`z7lDF=3DAM29zH8Pncun1yg0(Ccci7qnJB=3D5Zes3;u zBmNs1%Ax%!ANkf&tyaPJL~-p(<+t{WQ;q`XwZw^j#%G;}8lG2EjJ(H4&AYzcjFo}o z8k^j0zIE!Qz>!TH;j21}LyvV9w-ljX%uxZxDe-<{JpEY*bx2~xc;7najC9}r&U&<^ zTgU!iEIvICrj7CU6|ZMqro6y|FD8d)U7y#3^NdT1MMpvscX52zf%O8Yo8z$_JnOl` zjK8q9--^FT5Bs?Awz&2S>(E`XT*>JnW>o!#%0(`u z(Wj~(4WJ;O@xCjP3tv#($a~~3at+aeN+;IkJ4fO#AAeX+mV{r3SB#Mqx}AV<;{Kt}Uf7jyT(6(k~jlKF3a)@_4@1M(jO zn4;u5h3S|0dtbOI03hOV;RoNAVC(5tUn_b{dhYjw2$o_?dloba2!bMv0t3BB8;g2xX+W*v|}#(b?2 zCv%9)b*#H^Da(m1K!*@Jt?8%)p8#W(N7)d{;;fE~#E03+E=3DehO#2=3Dq8_1elz?|}|8 zr}a-;V4oWl_riN=3Dqjp%X4LYrz>UCI4sN?95`-bCRv{4<=3D{F{;C@4N5{w#npQBVamF zXW^-E@h-v;)>SuSI`n zl*{kHqc!dc(3cK9kHdDteqE6NeOmspvjV7qvV~vqxhr#XVvXuP$dU6W;;#h;ehcG` zzY+%g@ln>NlWnSQa~})nxYOSoc#d_QDl?3??stwfWsS9u1yw9p7LdI)t02Rz^d%Vc zY(5oMkMpCCJ4Zs^zeCwqz`K~w2rdB%eiHuBXMFDq*!vXWTchgl?=3DX~y-@6P)|3M=3D+ zvi^hMfMMhhU><*9iXm&+(Druf&o;EXJ0#-~hdB>8($fhaqEvwk--xj|j|zKQHZ!1- zwg;Mj*8x}^mm0Yx=3DL?@(;aAcK_v|j!1Uqg8uUi4%1i3V$E{wr%*+e|J-;Dd><8dBB z3-5^?GG8sWt)^qF8jaP0zDCvTUYM)G6G!JkcQe8T)p?mbk}G z+DFzMI5_EA6scCj$Mg{AW+-LRFgsot% zCoNobecrZ8XTj{Ej0(0B`qSi(PmmZ6deS~5uPi@U1+5-v#1-Aln+` zFET=3DlIp_1OKd=3DnxGHGglmh_l3>3S}Bm1O|uw94Q)Wc0tE5m?Yg9)fm*G@=3D~)!A_rX zZ!W<2N!XpwxaT?c6`uPM4*;gWQFZsDuK+&!;9&nQ=3D+Qw#L4O?3pIqoqzTGBGo4fZo z%7Zreyme~>s6b?imX@SL^>pDq3RO5GJ3ESfj~HfFz^?u1h{H@u575j%g z?gU&k_RentJv7$8SXan(3qCdF zEc5;jP5<4zKHryN_+~+)^{V0xAq!p5WwIEWlY^M;g9&f9(XP5Ea0Cr;4|R2+6T(GwYuWE?gK0rURYDJB97ei zv155{^OZV2sK;8=3D3&gjtGjfp<* zbcHj}A3KDuVfG0O_6zJL<FU4BZ3c)oJvPU2FzZU~FKSngu z@=3DyQ!T)VxV-annx^Xy;Yo804amF1hF?}2vuCdcJT-(-Lvf1hv4IgM{B@b})hC4dG* zJ5)&9yKjxZZ?yPw+63AOKm46!42&36`{D0!|I zP5m3{m&zK<`=3D(#IYd4DVBYugo7Uu^U&$bmW+Kb<=3Dw&EuXu8R&GW3!#`?S`vMuki}? zVD7v6{zFzy$YKnV8Ljw+Z&G$RE(aBzZ&-hmEX2tG}lQhtS?Xl z7^k5B$=3D_BL@5kKR5sZhuQlqp1+vs21UMww%*!(DXwRVXtFbCBZWY<1<9 zPsQ9)bHkFTX=3D+qkA!MFL znJ;>yt?$I`Kt-z0u07@O6&l?n?N2viLt1qGnS4p*QIlv zm{)>M4Yz(ET;Rw2?aWL3ePWE zJl7^l+!5LLay|4cZw7JTeiy#@N$`$swfJYX*W%+>xBL2w{C!{lEC6I?ye92tjOH_z zxY%y;ka6lTZQq-0``5P+2WZ>Lc5~el&VD@M+H`#_+AjXz95)X;w_(=3DJHaFSY{6o+- z)5P0Fp0STW8Q$V2(SDzC`z7%Ea_#}+a;{x-b?O`hb8hSx%@|$QQEfxJ1`zj3&ZZKv zY{bmFFHFgs!&cGuxv>q%1ISvlA@51|_LM2Lm2|PL4vmlda9JnuV~y~zxakAT_-;r( z9)1z|&g(>vpnu5O+}6&9;*%J6GZ#)-+xN_Npgpq-Fs{pxSZaEztk4GQ9F+{}wU+N~ zbIEHxA9Vc=3Df8SZ6|KRUF%5e5XjEnGoELWX^JzaTE07P`4J(R(=3D3X#JO+~Ox82TKRZ zZ%h9=3DrUMQ-Kiij4Av88&JeN_ZpqGCqowsf!ojgavRd; zONLgR))*H$f^!dXW)tdjML|p54cC~w#u+lX;{!lM`YbroNLsD&9ehwm>-{RtdJit2 zU6+it65~FfQTHx%EU`Za^-7#V`|_!hTUk%x1SAz25i_B0OgXD5Ke*T$+uYFP?>n=3DF z^(pS)`pb?ltAl=3D+Bm`e(!;sd(ahLyNPvv#mVS5^ent;IibuowgUc72_`YNSyub zQ6zbJyvU$nRS(~6oOym(9SJ>ShhqRsQf?~hvTCsnQ=3D(I@J9NG8?XoQYa)O0nRX6c&GH$GmJ3qS zWq@D*Biyr~&!fbqQgG*|;`SM}-19195%hz{WX#oc`BmbVasFrMxF;AMJuO%{0qt;) zo)nqzTj*2Ki~tZZ_JEyDiuhg+MsCL%%m?vaAoG1&I^HlwupHX9m3oW1?zDJh*$3dQ zGpMrYBZNO#C+Mo1^)0l)AUy7O;fo(5igjt^iO&dp#<2s(5RDb1z2q-&MGwC?dXl{z z^zB$1EVgaZTcBx67rlgi8Et@1>Udz^-=3DI)7f0AZxj)Que^6rV(l4O*|T zc#Jh{4V9~~&Uf9D1>|*z>$TqopHF&*^m&cws~C5idgBuRQ8(+K{e5Rh|Ig>k2wE603YE~mpsC9J(Z*9 zc7q?{vvy&A9x(yu?!Rh|2x|fAsZXuXi=3D2kbr8Fgd>TIn0$hm@bftEW{WyiI+`aF=3D? z_xcCJ=3DdxV%F|<8He35Gyd59m;d6wCa`up@6M6+TE!IAv&xG$xyt_T@yspIRvwGmanKvH5 zH_Krj?!W!+_OSDslK(&NZl}*cK42Vk1@!Hl+je_N%fWoB|KOTky<4@ql7ltp&|fjj-idNm0q_L8+=3DnlIZ2j~+=3D6;rm?VEXNecqAdtpExp z$8&0p-JfEwP=3D-J5_+?6&`pEa;bDzZCQ0`a9no*QPt~e(GQ`_Z_M;ikuWNTBq)j#O=3DL~B!?57UIp8(XlDdCu86Am~t=3DHMdG~?p$x30#oU9%BWvFk;2t2{(01LtAGi3i`R~Ka0$*r*p3l7! z+~Zw|9F*tg8~=3D(mubGqy&%FfSu4$}L`HZolw*ed6Jm76h;FUHjXY&R%&syt%w#^4^ z&#(;frOro~dp0-vdn-R@nH4(`4})$`2z!LUw-qZehqLl+@aLF5n?%>K*tG(2w%I=3DJ zSHyFDR=3DIvYeZ{(S7DqO`pBD>JfBQri8Bd_^DU9t@=3DZDe@C6J;pdWjE#vCt5~hV<-W8nEQ5E@ihuX4oBK1A+2dI;cORaK{^Qx% z+9u|FiF=3D~+xc3cxZ|+3gyVb;Tj(HE~8l}zTJ=3D87zv#W0Ia@;HDJ=3DldM)49zrL1vGu z`R<9>hf$QZo#$}06sh@UdlqYaH=3DO}kgRtNSatk-Q679sAbF_9?zk_f=3D_^ z1W?fCr&?3`7x=3D-nq>bpj%$+G^&`(WE+KDcc(oZ=3D`{BdJfN?quu9G4F5ryR&}rk~An zLw(?E2X66W>!)V@@>GA`@KykYZ0%Vy)TcLSou(hvbS}3&M>`(clmc(-qu7Q9(H|Rr z_;m;8zQ3Z6Vw)Nc67SG9&2r%uKej&VhCf+$Va+LF4qy8}P48A4y^zgcH`!=3De<3S$H zdQRKK^9O9tmt(E3!xKP!mm}|loyUF^@&CLPA@r*l?~PlBchs^U2w`o@ee@4sd|`tx z3|GFNhi92q9kD%FS1jcs13)Y7^Q=3D&YIY!8(zUw&S1~2T!5jxL@{V;KxOvuwO^c0X7Q1J!}J+nqtEcHyQ#yo;-)_)`^uYU z`Hv3Pl78J+e$fHDcbK-@fM+xKOz79Xyde6LqePxR?wADI`^-PMOzcS8_w{pQFUAMC z-$l-EqE9?JDE1#)86U*^gQYI=3D8TP$O@+h?H!FsVFw5J`_@gw%jSeJ3GtQW;RDdSv@ zPaEMgx$hl*(}6WooKNHV`Jd8XU&EXke1og*=3DA7%2IVM5MoEZFheaVILo!^LW=3Dr7l9 zWL(^$(!J|(<{HX0PE%@a6~2LQcG1ffJu`4!tc(ua=3DW{$uYf1i2=3DRMGn!8N$RpG&+L zADn38w^!$W8m3`h9A%gXJ`G*7PD7Ugy2@Aw>nB~dx(&1Lw3NCBhp9VlxVp8@)Xav? z=3Dry=3DQ;`zZp*leIZ#rMGm2e;Xt2R+bpdl}|gJZL}4wNPJagS3yxPZ7_qQ?nqylygIA z6NB?@IEVL>gD0iWFn!8aZD-$p1Ni2yxCOe09L~5EuxB%mgT6l_)IggaTx-K!60UqZ z56?0!nqxg`Bz04l{igU+)`9&g?Axb{5>YqJ{0;MEp$D-p2lEv&|AM@rt7+bC(9v`=3D zE*-Ka)PMBYGXWrpe01DevlMjI@?6gi<9WaPAohIjQbCT(ng1akSJPWB1MVI^PmP73 zYslSSDYm2S@46Ex#!n*e<}7VaU0R%pG8D$7I?>XeZyJg)Lt27hI=3D;HmpG1 z8UEf@sn^p5-w}&{iI}zlbw15gS8s_$lP?GPmh828o1+Ui# zuVub&-XM5Al4s(C-ufoy?S5ngfQWsSCkmd2g@@N@o;%W9P4mz5_x|u*mVvCu-$~$k zD|AS7OZ1z(!h95-Euk+Y9#`Fb%!i)57Hvh@$Cnab_=3DDUca8CF4KK!S|J@{nY!#vu< zyLb;gY3EqRI(r~;zwo5X-#hs(K41N=3D%D|th=3DrZ@2SN6#MRj5}WaWrqE$zyU{~BC*{}Vw^`~>oUqXiDn zmUv!$sC}h>EaZ9?Vw46?lrZtQInJ}mSIrao-bY)SztRk%!#^;=3Dk0hP0Osi zCInegW{_7@_gUzt`R4Ez*fo+I2ObHj`)nK-=3DXRJ7||RpC$X2N`LE(x z3*m*h>lrNh2u;4J!eyFP3FJfwMV@h4{S=3DdtmmBgvlyQ~kZo!pl?mqy1>7zjuMFONzwaAaWA-WoH z6oUT?L(g3dAJKd=3DfC{LGX1}@>{EA`i=3D^ox6+OIAM;au>0(62sRc&<8=3DbpvN~HTbwX z0vs>I`!P1k@vMsvdH_tHJZEVp=3D0A5ceij>mPQ}PyOCLdR6n{bTlDsA#!Q)k8k2YQO z$Jf3^dJ;Yhyad1QBtASF!Dlwz_yNu!UdDUSjm<;)6Ky+a_oZX`d{Y^6H8IJPDao_U z!MPS^Wi~x`bpJ5}W?6zz9X6%Q2UqupXKlz++pK8WcE6FF?1axR( z0PqQ!iSFw>ldEn4e8(3>#N&_ui?qcizrXleBMTIZaIqzlAc5 zEMv-!=3DMB|Uo>-53E$=3D7zCc3WHurGyur7_N#BkKw}xi0zPu&1+zzI|o)^Nd$kAij|` zJJcZ=3Dmmq%CeE!L!#LHL!_P9Cr5}soYRL@bLCH&?+>IQ8gJn`*3_OoG+U)G^S+|}5J zqt`lsSF(PKe#2F_uny;m&)0Q4+Q2$QZW8Y;Z1DH4`Y>@%`nH8X!M#85-YK%w_Bq+# zTO1Y`#FX6c$T}h$cpg^o7pS}46HD-xa%+a%kOQ4M87TQl*p~3SY2mYwNwd$Gg0sKk zm)ZLq_#X75_v^j^G6G+gv!C*GS^dtMWc(xT2`mEb692$&j2B)Z?#J0x%L1ra+AZUN zKm_Oee#U!f8h>xmS_=3DmBjfYO`1ueS&llU^uF&kp&)#WTV)E6)O%pd=3D} z2W_8g>Xg&f6i6rCz)>XSb<8(Qe8fC84zxY}~g ze`-c?=3D7>IpO2>NgE{=3D3^>uoY}UnGJjzHOcf}#DhY#Rv zkd?)o7y4Cu3 z^czL4PObBhtHdziUB{{T2eB?R9z$D3>NX8_9MiMM%!!PP2|U(L7U|rW#nsZks)K` zhNAlqxxEr6vLC*W`k!QEo;gPSL`|8*G^rxWB zVrP)O#6rgp;_Rh(s}TUOX*-i;i~}2S)zx}&*4-BHcxZeewu$|iy%SFoPGY=3D+7&{z9 zj3Ru(UVPN!iefCfOKmiHm5seKF_s0-E|3_e6MnQq#gcm1b}sQHcr`@N$*cc2mUuz0 zo8`c_C1^il!183gkcM_h-nE?jK4f1j!%Mm*TImdFm1Lq)ClE;eg8E}G!%l+|#F9__dGF~kpJ)uom z+kv|k_Lk{C`thImoNWM)yglPpurjKQx^<38;B^!{C;sT_Mzx&z7`#jVES49(OHK#x zSjPL8tlT-^CH@4i-DqbJYg%zeSWV3U@`t2NkIyLwPdCu;bBZ3y90KGCzb5BtnEJTP z?i+L)k;mR8d-j)8E}--7ZSYh0!#T{KNFRy(x9XUp?rt21{k+xHa;8-%NA?H02oaCGTq{EZ2gPcGeM|khNXfWy`6+MiEO*7#mQa0sSA^R)U}W*yff? zH%YvMJq~5yHDc3XU=3D!$%Lat~l&voSZBGixdZf?9c@s=3DAbofBW^Q(3hEAOsC*7>7Dm zFND272N1t}jdJz?kIwaXao)Cmbp*$_#T}Da7wgb#&a#9?@-A}gJ3-ECAP2zyLj^Wr zVr~=3Dql!D&|by>&f0fqM9Uut_pbuwOtO zl@Ge8ue53OG46-)m>-E#0{B6@w)~o{1HQRUh>6wmjSNtAq;TIK5?$wJZw9U z`nu#?gvgU+G5>3=3De=3DFhHI=3Dq+on~M4~eCk@vXFP&+i)=3DIc#v|mV4HqD6Fe$%@KZJP` zlV6kN{GNbW-oy{z;|Nc?A@~U9H_SRdCH?@O|E;<>4^fgM^VfVA#4PUyRrts>;K4oU z^JJcN*Mj*DH_jL$?nn#gY~uSvOKWN zF4us61n{#9Gb`4!Ee@r5mvWEwvtFP{d;<8zKbt%XnfDJD`h$$YbQ|M+&N|SyWOSa; z{kQnT_L%$uFPgcp0pHQk{TJj3?rF}N@#%Qa?$wHCX!#nd`=3D|08o#r0$U}~Nl^|zl&b9-<%)2lXSaa%b_QV^FmJ) z*0BBViTeF5ptS(94p2X)dR0k^%)O_P`98Z`$!kl$5_&*>K~|9WK2z>{Q7rKZ;8)9Z z%*Rz_n)YuL%G?FyME=3DxohL8FXG;h8bIS93{!2y0^og8Q_AuQ|T+!=3DUkux%|cSjN`W z6Ue1xs#m=3Ds&ohMYy3BNxZAQ7PQ4VqdFFRSM8)pMZolmNCj>TOMpkAD3L!C#CN6vV{ zcN(s9*Fx{Z#r`1Q;kG_U*9{y7e-lTr=3Dg2Caf4LUd_)EiII-X@fzDH8!yB2Z@edr0g z;SU}GZ5Ca~UEN8#K;Os&4BE@z)HU$*8jzXz1n`T0GJl1f9{QAJptXxSihN&`z7As{ z?30E6LqEWn0DdoqJo-Vxac)8P<0t+g*NCg>?}1}`|dn^z9HJ&*79sPW^g$MU><}h@h^{$HVgzt?V z2Hl52_hGgNYv<|9*st=3DvZNekg2Rx}|tuof$1)L zmnH9X8+;b#CBwJhLb@iGI8A*=3DOo8j%fgA|**VvPSb_`%2g6rdWd@}y{8_%8ieFDE7 z_{#;2&VlTBKYmkpyBq#_9O}FE0|#NPvg$vN{ z73K5%+8WXno>r{+z8Q6b-=3DJwpaI=3DSuaywygt5k)!D20M6~K7_GdctT;# zvSRGzf?q|O*$bs%1b?s- z`dEpv9mbG68xnM~zuS5k^`L)hmA(#nk5IT@+Ibi>%KNjdeh>Ir2lbI~z-L&n(8ZXi zODVz-4{=3Dzq79W1FQRjGJ)9ZkS9~pZG@Wa%{{kq-pedG`2Ngf@a0^Vb+Z}BP;F3vM; zp|-gWu<6uggYiczcqI0MeCJ&6Pt>f3!{C8DSFPbPe~|mwez2eXOCQgAIrg3NtIUcy z2gt+pQ9{f4=3D--cFjmQi8yzVk(tb9CQ%7I@`lTU1GD6&_01U}>*27QNXBB3)*|>B>MiM}CDvGhQP82E;<7V?55EAdZG2P0!LIjJqbB z7fhuKed9~mt8^~v#hwP%qsPFl8tMQ1t*7 zeGJ#~I??{c;hb4l;!I!0SJyB`r601&;9g*MHP(rvjTpyH!u1lsa!k*0;yl~$YZwc0 ze;4fpzYYF|+}5D%CBzGR*v$L*Z9Qu*8G-f0=3DwDd}@uQE~in?;O?JAe+H}So*UdyZ~ z%#?j_0myrAxHxNaD5p?)qd2P*aaZWpbN`4n^ppD!L9dsN&g;f^%hgJu??bE+?_B1P zzT5#_+MAk3L%)Fc6@TqR;rVakkDGN-FGixSEuh{tv@*td|>w zVG#856YyN)xAQ!f!t+klOP)8AeteJlD&F%PfU!4=3D8BCS9IK)q zY6$=3D@@~}bXQQ3##ykpFvr#;I1IM;ax?bcco2>Bs@t@jaQO~qdNV4qR21V#Bte6!1vxVZ|&&)UkND4tIfx7RZi(6>94qy}-Un(iFE9o4Jauu9 zF+Ft2%Q;SbI{<4$;#u1-MV}L@bb37z#EXq;5@a`Io&QM*6=3D{g^Wq^c&rBjz zp!{8^bI4iCt|(*-oeUkoyumTd8(-?E@mS|E*x~6ypMm)}Q%CkuM=3D+jifWBZ&4s@YFVjq{MARaH>rDCNq>Zz)4 zf&V}})*kuf2**bpUyKY@?j|2gh+{3`E-}9HY4kSFBQkMB<`@J2>=3DLYzh2G3;SPV3gc?d6R-^}P(dO9ioV zrn<*%fREMSVKwskK)yBy=3DWjiAn0d45bFR*JF^*tJsWlc^Wn=3D zR3WF}_`nH1wXdi;e@S>g-u+PME5;fyyo*A$hre|L))uK8_(aaJir>Dm8?jEUY7cF| z+4W8RHOSd!vn=3D#Gx*{v9%hd^6$FuMZ)A>acY#QD>z_&%X|nXj1k68YD; zuJCQQ1nI-Ej`<$aWYUvMdU|j_eCsV7Kirvu-$DH3pM`&Ic6=3DZCL;U0q>kBW@^|1XZ zbxHfpx*V(vb*xFLL)ySPxZjHPunv=3D_X}B+SfKM-wZaHTPb-Fe!GLn2gc8R@B%v6d`p zU|x+eEp-}l_+1O~8y>IB{om?in1ldjqd{ZBd4cUbwKw*^!MyD`Hs2cyGX|X*ZT*2#(DK% z4?l+W{)v7)9&PLIP+K9Zt^K>yj{bwHbHGr$(T2T{1M2x}M*u+R%ZB9ghzK7eihmf- zq@hn3(|^CpZGA#zwEjwQ{yC9fa$z3<_%Y;6p3BgWv3$5_eD3TbM;XqJ;M(XKeCJ<> z@i@>XK8z`tcZCiZCe4lJ*||Z;Otsgl?;)1^UN`b`{?GgW5CCM$c=3DbJu>6s^VxSjAr z6Hd1-A?*Q{NBh2VypWhHM@(bU;E%sAbN7`mt5Kc}Jl$ z9Fv)Pf&NB5qDz=3Dp!n?R|o~2hUhCUdWzkhRVwOSm?k(}WeypOguJi-6w*dlxvjShy3 z)a2PkZ>?;YkR`cj6PJ8ZZ_0tAwrFP5)oI)XIV|=3DW`BjWf(KnZIF0f}BV$U4^AH#)J zh>a2F`M&vPWXlI{BCk3F=3Dk>oC`uO5E$Awf`WJPz)xEJvKg0BYiQn15s)Q5`KBV+*lKt##n?tAN1!; zdovQ}@A$fKHGf~9$8&=3Drmy_%RJaOXy`hX?i!(`?N#YZ_IuP(gH(1){r5g*{0YPbmJ z0(|1aJ45<8?#^W&i};i8OIBm2@eHtdeDwmAw|WC&_KUK%V~<+K>K8@sv9=3D18%lS^u zi#1f^{gu9&OX(lm7O0Uv91|`-T#9Ea9hAnewBqW z^2uKU_ZTz33O}I6R)VjL1wHv6ED3qAZ@E$J!2Yhh)nV+91We_M_!q0^WBt%ctQ}f0 zV(z%ODqCHya#yd%hTWULmK%w`4;lRt`z=3Dr2$O7;*xs40rbQ*Ly85U6y=3D~$fQH&q4d#RJ_Qn;Sre)#&%q<_KLJ}NX3Yq8KS> z)*1kwe%v2_Z)N}pnEORLxgV!h&PFr7eu!sAQ13vSwO&Z(=3D6l$-O_*11!ut)g3yZ^5 z&f;+P_+s7)4&mNC37%{Jo{O=3D1KKe05y#a4s^pA{l8w$o1AkHoK z_uep(yl0$X(%lT0-2RA;?FR6hIC>W1I-9xLaRme8RDR?)RmGf(IQ*W<_Z$Fhg^baC z-Eowwh{sp#MtiZYv!T3yYD3XE1)R03n)x@twp=3D{*iZ} zb2A?ClZZt~C;bC+MDPo@B3^VR;+x*K;$IG{^P(`om+z5``hgXO6PwEL?l>JhP)5>zNVH=3D{dl7Ok}j=3DonYcz8u%2% z!X=3DuP=3DRPNYfO|P|dwt>RnHZPcKwt9;Zu28~M$89Z=3DymLkFUw?VBluGg~u!_>_z)Z2o3E!&Z^^2=3Dh_^Vjt7RR7U$i!avgkKYNH z0aq8!x9r4o*o>>`-K+dZZ&^>8f%h1nM}Cg6`D+i)GM}F-e(UHwu|wpyor0qiZH(cs z>5!be>pyyv^tazd?1Xu(43s(MN|brHTI0A$#%b`ihfp0q=3D~2@!p!^9}=3DZJ^UmjCb> zXGjcOITij4Ie*X1bz2bkbVp{qj(ucrE1Xl)&3CYSR{U9cI;m$Tws_oiFVgpM4?1|1 z+u=3D#i!Fz2OkLH&JuDQEh8Dk6FtsHlmgL=3D@@%s?0=3DB^=3D`x!?akoLE8--FeDyRMsdJz01HpY-?fWrCLhfHb+zyVYS?H z#(+=3D!BzUE5G`mCF=3D*iEi13Kq#$h=3DUva_W<_i<&AhPv#Q7Hr0IqIcDJ<9{c=3D9e_0g( zvU2BTPCg$fezL0vf9$`J&#&ppd9tem%+l}oqHi2gR`!1UM57OO^Ko5YBXV8ZM`qTe zTxQ2bNgs)_xl$kMf*gNq?I|+y`#;?0P1d>3r|aBTW5UceVVr;|1k5DBxBwHd!7MRhta^hc zj2AFIz|;U{E?}ZIm}V2E)vTx8gb4s<31I3069i1B4Q96qv)6>#XTn4Q(+rqaz_j;& z_?Ak-yyeg^Z{=3D#3xAIMx7+^L7W-DNJ0LE#9DKudwnJ_q$SNIq;uf67Vvw7_^ug$i+ zRbyVao6qN(*D>=3DtU|w%Fua}tDTg~fw^LmGQ9W<{y&FiRnz1zHQHm~=3DZ*RAIDKJ&WW zyzVluW9D_YdA-@ZK4M;PHLv^4>mB-fztY!loAvK^nAc|g`*Y1}v;O`0=3DCvi;PVjs; zc)k}r-v^#|*?8V<^4y}K-;`4qV7dWw1Tg*mAHHpq?c1ho-?r*CWt*mYveO(rRcX0B zMQQnfvB~yrQ?_qUGHG+^deXdr@d2g=3DFmnOpC2a#)Z~HV|Z`YXR=3DdwIvh3@X2v;bh1 z0Hz)=3D!Tyil4wx`YOqhBTCa7aI#Cqr_3o+(H9P0v4KXwIn zhEv17~2CmSLS@Bi_|`^m>W^dCl@> zxi46bc?*<{qRbZhV~ZZd36mH*a2!iG*QUC+B-Z*F;5TI)g)cwuYWnp%{-ZPRBAicM z_l*9I6!Ba4c^A|GH+YfA-7Fz4zz(>YGXCN}I!$u_Jt)(^RFCZtUr2t(j5S=3D~tCip_EZF!upPDHAW1bIl0sm*ps)Ar8`aSk%p16+15UbtAJc6rf@%gU0 zKL>Drz{E=3DEgy+DY&GQKiy=3DPeB;>8pFN1xICA8@!j(+;?rZht`FSEeCm>FptI+u!lAG8LS1j#Ap5w)M5anm+ayUP4ypaoix@bz{$XB9(As(L523*|7 zfpO6@w-VlpaVi&~4IA(t*%eFv;!|@z6WpEYS4d7|F~&347Z3b5X}*2KtIMaOeBFPz zI@4#Sl)Frq%ikyTOIw$I-GB6H8UOgyH++NG>^EzhTl#6Q&wg3+_U3sv#aT>Kl+b)MgNEAvttMO4E|mSJ|97dS4P@2 z>|(U7a)9-Of~S`e+ITx)eXyGWEu&tHRZj%$G6Iig5YG^q@XV{D*ImNok;@LgGzX1O8xNFmdPf$-@ODWdbWXpKW;rdVIwdw<|Yy3yA znaFmodRrCTyC;`pHmx6>rmi;KdV}UiwaDV$H#1PiaGE$we>$U$IOzXCC+;=3D;iGJ08 zw8G8%r;%T)mVJgF@@s}&c~{-1M&7veBF+(~qaT=3Dseg|W6tQWwTJX~Cz_eqrsuwL?B z_0zJy(7U7vj(5KU(!C!h!z_ zy^Sa8le%+4bf@C|_=3D(al8_T%2*?+WrEX$sTH+h;j>3!f$47thz^yep5e)N3M_3{0j zb4b&+f6aX2_}MWPy}KtmjO_0JrIuY)Im_MM;~l2V_s=3DlPoGWF%999Qb=3D`ud?4XCeT zcwBAE%yMD}cVp4QsruCRL$i$Z`*(ji9NldZv&;je3H3dA&>pFrYB5XqKk=3DV@ZESeMn9_-8^Bn5C;JBNuRUSb z{nhfx_$}nK17rQBq5eke!KwbH>ILF#ELFMp6ge#397kIW$Q1PKc}&w&^(f21ZquL# z$6c>=3DO~!hxT#19^`p81G156d_ypdZzrXdb zCcNl;^V{YbBSOz@X(l}*OnNc_&)nDn)1MF@=3DE25o06oVvJ>!04!t5dpeL^x8s%+%F zVftH%x8Tb^CO_%Nu|A{!D`@7~Mc0sz&_qg9>7~Y${W`qLo_W|DyQf+jec9TFrtigsFG+;o`M5BU&Y_fT55Nu$n1q-57+vO!7pg~X)vPpJf(cm*EDpqVa zLJ+QUFSelZfi5Z$t@eUd3J4e!Bmt{r7lZ_o-~anPGn*_(z5jeZu)Fg(Gjrz5IcLtC zIm0xpUD}$5AwKVN(n0x@=3DaF}l@PYD!fHe$qBBVxZdL1sb343xCd80pQ0UK(|-4Q%*!s;X?Ro9rqP2M+}5{yDYHA~Wg22JfBO+& zX?`Z_ZCZEDdxp#Ur>+HAlL|a_DO7!r6E5^_jOo}g=3D-cLvrelsXWpSRYRU?b3%lFi> z_y)l-W7nX5JYXuV%Uve4LD`h|9{#rc+iboieQctC9LWOz#{Fi&J80e=3D zsUE{IF;+ACQaX(Hoi6LcG`5TNu%_a2$mD99i!zhz1a*2bzx)H}U((JdStHa}0Xvy< zY|@`&Ifvio(l{L~<7Zztdchf!#FuqPhW2E6v^kIOB;B8pM0he^z~Mj8Huf;V zYF#EGdMfr$p2K@!lhtP~uRF@)6xRu2saBKT!DpJYGNzpZPMf)o7VL;qq<`c!b9`AD z2fog(2VQUa{vv0}-k!*#eWW>iPpe=3D4+t;O40-50QMJ%JzRGP=3De3bN zWtY3DGulXlnDeVyA25T`4$?`7Nbh0N$sdFd>hywElg_~r z4@UXWf^RiXGviKRJJngLYsM1Q#r2rFEq^HXTWG^M;oEz7RsnrBgJsM-r24*8Da5nH zMU=3Dj{HZvdTTvN@=3Da|FJ9M8kL0Fb`>QpjW$&qj+x<)2_jul5z{@UHvqjeKU@AIe*@} zE|GZR*kevL^|`k;^)Fe=3DG$TWjgNvg4u0+-_#z4N3jPmiiy-P|o4ExivKIU?L?4N4t zkMeD{iLBOpy6F>jzjF_=3D4(uJmcbHbFrp;g)`kT_84w+P_?vn8n-`VB%`bEFTcmvam zz(cahKguURUwjfWuA@y`4(6c}`FYWN(FH1R$EF* z`UP8g-dl#>j1PABZrgyBxcroPy~y?Hl<9=3Dew^}hzRfG?HW2-wdP}(qeSSqo0bD&>r z9sg_WH_Y0@TKIzfZkVVlvBq13w;cNOLFRMq0!KpchA)7J+LvJtaOdAfzCb_GsyvU~ z2L67^Q6H}+%}vC30+*6EqE9X0_gky>Lmv|R!jTL;_5oYirjP05nWisXJH?0ao?0Zg zfcfByTZMmsCdp^rk(~Za7hHxkkHC1Jk@r|4&IIQ1{2ug^px4Qx!?8Yzeq#SMqqpgwwBx9cQ)l-NeW)Q!^6WGF=3D3K&bf%h%+KH(YD zr|Q1t%weAR6M@FjzeM(LDd@RSU8HrL1*CB}(I8FlS8VavGw87bKN#m4_KiN64K45m z!rljcS!&>Rb?mo| z#+{x{@OcezoMw)?QXfL!*Rk)<^|6g~N3yrD&*;BC>(pa=3DjrqkNKA2WqcN6B{Df3VH z9kch0*;l}S0Og@OcPA|1ECsY!2pKUNb%vS!-Z07$@PU?xOA&K@f^Vkg{X;~KnsuB8 z9xvr?ohEm9?Yd01@V}@mboo!LseDV#z@Gk6#wA2M4jEryI^xWq;GLpejQQ$9$t zJrCcn!S|#1o{#Tou7zy@;H|!*^h)yOs65$P`K216$B{jT;{Yrd-y2{W?8XlAQury_ zpqrg`qJYzde<{;{6dfW*)_ziTo~yJS5xLmX@>URr(7ckGiTG z3(yaz5BoX`_`g(i`$YamJG3#jI09?p_1=3DA;=3DxR(WeNgKxj=3D;*b*z?N#cZ>^u-|Dew zS+nP!`II}d>{GT69h3KC&$xF=3Dzy5-S=3DXG;8ZO@W2L6q}F^@v}N&}nfw9edVYgQ3^c z&o#YtIQ9kL^?-|g!?GDH>(8@wlfBLg@`u)CzWK!6p2vL8s`#->I%i|v#dhHh(3knk zE)`DL_buy_82TNn>33H_6!${ES!dI4l+IN0_)_5S65_9Q81|dg4`aq~;bJp}J37X& zbB^>KdtjscjP(yWTjy7!%p98Yh6{5I9KE+FrtY*eL(ULzegJ&P9+z+-4+dzQJT;DW zDjxU}x{(@29=3D)hoWD56PDQGhZ>yvgE?z0o|J%0R*b{r*(4aC|tq5|)JyRBV&xlbW( z%fEzeSn%6+?98!tf6nyrwT}JIzZOU5$&9t|r~4b_LRvJ=3D=3D^(9x?%dAv42-eW@I2W+ zF}5bgH%X80$@|$}v|qYUr%vVs?KW+@%@A7D`*CYeluj{L++)^zE8H*r0Q(p51#{GG zxme3To-y4pm9T~H)w@(q$ZkU(c=3Df3(9mv}FU}oNvk!PA|eixmxNS z`Mw0if6a6O|K0L^c6{&V%6kv?vZ2_^_7%HXGwcM-&JgyjI}YqCU4i>q6J{)OW}Wy8 z_pjL}_70J~*$0tgo=3D-uR%qD#B0?6T0snjF1EJ*LkblKZOrgNPLJ|lx4W4farYv)1m zYw9rA_vON!kiDbmw~6tI+|5MHBl3FSEe&=3Db zEhDh*K?{}cNR{9Kx&dRy>obUu?ZK%0a9dy8Z)hm?Y&d%U2;1tR(b&H}M4EL>UiTvQ z00Hp#hUyW!yH;oH#=3DXRP#Cy6xe5KI7!0@Kx{-;kxVZaV5Fe){S8CWm-U4-G!*xjux zWB(5B8@!W8Cdc*ze6BOsIO4HSBo4GK&Fa^oOIax*TNXn020Uxrk*fq(28OnqXdG;F zN1hP=3DhdUMX{0@1i6>GYAdR89hp0-05{+j`Y@~=3D53lz@18dxv0NGwEyKsY~Mi(oVYzYjibME#Fgj`FCYE~>K* z8P0s{9X2sfWC+fU3RTiz{ziW($ID4WfU(v5ei+}k;X7sd6ZpPUr{6dT-|LM|!8g6* zU)-aTuqJpvsCFUjm$YA@{|yy$J8!skE9|1vo{!p5I^X&^e%HJVJsJM9k;k^PeaMFd z=3DwHJ~-_*^S?+Dy|x#nY!tz#J(&t1{+44tUQGvMFMTeMlNhn}?@Z62lGuk-rJ*tqu5 zud`u~F|b8OSKR+)arQ01A#k!_7|!qBdKtL6K<0rs!TL*vUG^m41HaeGddK(WW*=3DeG zYkYvvX@lPu-Cso0N3f5+%_@XEo}ES0W&SaCdrruQyEL8a3J^PSN*$bh{Aw$BL4LF> z-oe5d!hjNivj=3Dg@{c2k@5B+I0>4`|+8Ivx!y>AC&quEAhUId$WBksGpF#r1zZ!iP% z<&#(jHrjZm)OBNgfl9;{w3T$iy|+5tdrKZb*_Vv_bj9$61U*}fEmQC9TB~@EocyM| zvGazk0=3D!$9anTgo=3D>YdA?_oW;#H!+)dE04l&}`zVq7?Ena;?k_*YB+##3TOJu#Fsp zAGS&FJee<%*A;htDSJfFLQv1wBh@Siy?boKJmtungmw0!bsF>-%AR}Cen-vS|I#-0 z!Gc@pY9Z1T;Q+=3DF@3c#bz0e1^?*u&9avzcTr>tN-J&#vE%{F|W$J!Sr4cB?slraze zq`d0q^0$7nBuDil?{I_=3DXZA|mFNU2F^VpAje#RB%p1&lc*L0pA^G<)mN4DD@x!YER zxvKA&t7~2$TutNb>-De4mnAk#BhR^E#USQ@3(9SD9Kl$|ol8^V0b8u%de%wgdY7yTMc;VSq`l4^3 zg0F<^=3DR^dR(8z-0e`XW>7@Gs?k+pyq+*eu;TZ zmbkT-)_;JS@?`HEi&UvgA7)KEOj0af$wcld^4qh)*d&&?OWoiD`z>l@7 zp8G}M>a;Uu<|od5z)b?|ztErPr*Fp8z`nYzPk-Y9Fx?-Umw3gPaOO9&HSa~d>m8{~ zV1C|v@X6b8l?VAebHMq}fkv#;)7cwm?#f>F)(s60KzExv^SC>bDl`vTr40alL;LSh zo*5Yld8K7KVWAA=3DCun}pan0YaY+`%tC-OE&`|Y+qsbRX7TQm1??!g~?`u8lz>F8PD z%m#etSqScc9^&`qrp)8`9yH%i;rkkV$N9&pm+^hQzE=3DR76Y!UP;$O-?9yZV+w1JM< z(KtS81HA?DjA;Y4!G8_07JRy&g(^XKi`GYFPD7Z}@tD)maxcPa&83_mZYw^FfDg>- zLLVr-ULTZk89Hi+jXT3QL-14Y=3DWcqxJI791&Q60)6EwOG?q}h*4Zl0-c20kB-*w8u zeV{~Nn@aZg#yvdJKH37UC6=3D#+@1S2*maasMxkQyl`yK6(?#P3E2tPU=3D*qEAdM}qP- z)4(kgx(Lj=3Dqod!8MMk6FlrM#g{;ax{KL21}uJ6(XDy$KtB419%IG2~MxU{fh$=3DAsZr&W@+?e-l|Ub(WkF$1{E!2PODv_S(8)1N0E zf)yihwt?|u4Dh2`+)Hp!tv&!AB(5~#M{Z&obOr1)WL`hOyk3Cz2I&5snu>Y-K<4!! z>?;DZHgw=3D8@G0xkmIPWMOgrlU<_v);HpF(AzXi;G24;7{BV3+S0p>2k6g~_*aIdrA ziq7@i?{K{os;NR7rj2;&HKrXK+cA75neRN)R#m8Gy})$eCY7|{rdT+$rC-3y8m>n< z0};F36%(a=3DIqp_jpJd5*&WB&_nAn`vYAboAwvAmenEB{`b44BK9B>?g?=3DNDWGXz{j zuIR!1(hndTfD7zhmQ?JHMC}1-r5{~1g?F=3DgC*FI>QCHcWBd)<-_4A4aUltQ)=3D}k!z zJKPayE7R@ullh6Y<7<7@_DSjQ)6$7YM__im?DN7G9c0_=3DtM|U2p6kKh{0h(XATM$E zsv!w|zd_R^?oU~*v*aCX^ciO!wb*ZLH*&IlZv`1p3)+hAjiNAeG>lu|SJIlUW3;No zg_mJnUIyC(?$bic6{&U}sz4+xzIc~wwc^8-=3D%%jX@!V*(QWCru7gYmAd*a#S_EOJ=3D};ekHLzlFD(IwJQd z!v$twuhUU8`+Cz>GwUFo^Ywet$-=3D)H!!*4gIkmz+#QvSWi`8%zhKxRw4a=3DBxk(Kos5#*xWrvzs69iZ30G`$U%&Uc)^x z+w)@e5Y+8&)^(=3DQAIOtj27jNTPp}R8WRBcT zZ!Pu!KF4(qJ!KTey^;CUHB9{O7#lLpF%8bGP(=3DoI~@4v>5LH2X(KXCi0J5sU417Pl^H#hT>`r_GR(6&_Y zrlz+<9{DEYt!ms$rq0&@{6%A@pgRA~jcf3PD6Vl<3Z3|De7A0-e!%lM&L#CGzTb20 zO6YKZ#yN&f&AYZzz7O+#gSiHts0#yE@f8n2UwA>EDVC&bnd^9mv~!Qq*UM`>=3D$O0d zjlKN*5A!q{<2#@E)JGVDt)dceS7_azvb^L9tZNPTcNqVgYaeERtPR&bB%iN9*MDW{ zAB9F&>ACuBC&2Mf=3D8E*hc=3DT)(_$d&~e^_T1qfRPfeRHk2 zNYfo_?Vjfhj+eS4Wv_Zr$K6!h$WQdAh~ti(uhanUGzSo~WpZD6V+FRG=3D-()9y4Gxe&|Z_)(ylzwJjEwH{C&-So@ue7+9|x zSiFP1!FK@hfE#d*o|rzmBoTJC^p5^`JEse8IY)oq)G+QH4j4s%5s%oVmqyn*< zWBfKp;9kZAz`FO2W53-^uRq35;+6P~#jW>H#tuJr5mGl1IKw+JWnG3|GrJ26l3mOl zamJ>(lJw@{9dSo>9PU3}$@`D4=3DpFG_WNyDvc8NU~xc4F5eyQLM{q@N`mc#_MhkMt6CHn;}XZCzc{XWV&+>ze0HcXk0{Q`A}NN?c{%zu}hMb2_+P};h;=3DQlBBNspC0T3hq(*y@0;5dkX zfqUz8yQ%$I#=3DiYekpNFA{XDzJY660RYJP1j%fnByvRUlXJE7()^4qln=3DOu- zdk;AR1vi;?WbDB0a)9Jt``8NAKbB%Y+nslv84HVXRjJ>jpTiv!afb;J44Yx^(0jn=3D zg=3DTn8*qE`p!Nj+Ky^#0!WzTmSwtCoO@3ov0_8iZjWHs}Q%vrkUTX&>~@Li0<&bgyr zDz>#quM7`5)Shn6O5KrO-I*@)1-;M__+c_&tYsS8M|un6x<~Qi2wb-B^B7mXQZPoqzg>JXOQxwsGH~-R`m?R;T|6In@YR_FA0vCq9o$QZEX-- zFy4j!y{rq%=3DS)Hz^U13l#E#-exyS|Um~Qq-Ic%rmTkKh@!OH?gJ@i^A{)lC$8^-SI z(Cz?t)5cupIojZ_1=3D{smj?q$I>utERpE{BGnA;CPM@QNBLiH(9!tz^z+>%k@5l2{ zbFZQ30e576EAxcTeFKKz5f8*3aPMbYN4fd&C@1TmbY_m(z)JW z95;QATgLXd7TnfbjVx#MC-LFHo~|?6Oov~U*wPsH5p(!gJ%{rX1TN+U?IudQHIlzw zxBI|B<~LH`*sJLpeT01f>Im0J@rSa&!!{+k+MJQuzG5_Vq_cg%Za({vH%09g-Z7gd2BG}C_UfSoEb3P^BhjlVR`WLi| zJxkB&o6=3D{4Gy0~{-e%Y9JtBJx^xtdxU*)#mI7k?#d?C)B(lia&y2U*#YrH3W?)@J*LfAV`h3?f3H}WY!V(#O* zcF^}5!mrHOGLO8V;t%ISC(VTqUQQ+UmPvA^tmpfFoUhI6PZ+e@crV@w9f|itFW{Zi zD(!z%rIxnSdr@4F_4Hk(`y!XD_Sr0a*A2c418CtRB2p&O$ZtJzZEU(9A z+XFoGL*MP<2WK7K%siYCyQDnMS5SUkO!-&V-VnuuE!d6+@kt%_7|Ut9nJoag>3}Qq zNg8)sM`irkbEg+!zW^Qc;$+_p#=3DUxD7wchM#_#I;i)e@P-XFCuC5vpqT4~5$wu`#c z50q^@<0)UXlKu0uKF0%lP8#t;yub(f_wLA?T;_pR`f;see>1>;1MVb+)CDNl>Zu#* zk}(9T#OKpnH)4mjjV4cIJ%bxLSH|1SLbE7OJ{iZeCylcoWZb}6pAH;vEMa|(V>OIC zQ*@4+EfuJn#PenRbKq{l0N(#_TQAEP(We%)iMxPBPShdKIe?1$<) z%oF&?g>M*`X^aVz>r%fRm!W#=3D*oUV-q1;*YJaCalzc;!60R0wwhUdRd#&0KN5YNOR zo8-O(&%`0KiabcK*XiGv;=3D7S?_x~2(kJ6{d+g<$mcES$h<=3DHD`A?$;L3~mzj+WSG{ zrdZ>~HxchuLjUBvaaUSjCes?T0*}56%bfo9TN-*3qk3-q2p+;rBIv)HE`;1nogTxTinMupZCJxjyrT za*h5VZ8?#i&42Jy$(}p+b?=3D-@aHc+YRpvnHe-ZT_o;C4o-2fe-)Y%B=3D1QEUkM`~!aV6d!E@Z6f#xdB7 zj~{U*+MGwc5EsOY#z$P4^a=3Dc5^QSZ70-R+(Xe@&K$%hU)%`tf{=3DHl2M@C@y*RWob1 zw(I_43*iBO&2ncPc6RbF;-K^yp6Oh$Hkx1h;1!Ab4m$S5$ahE1Uu^PP7T`@m-dS@5 zYQ~wo8O#H|ryIFReY}ePfTTe@5}8ywfjHhEwB=3D7#$qjo{V#C|O7yKY9M*g$-){i>n z$(cOHO5Uw;I&%}@X8ua4!>93Yg-XQP){3kfbgVR&ztb?Bd3d4g9bM30>`R#2nM+uQ zesb9ZF*fnPJN;-h<`eh}{aIb?liT{+3oN@RRi$xVxUE-(AMoxa%Ehu3iIGkIgLk1&{=3Dc8B? z$lKnYR}bD>2YxR+5p%2aUuC}TyGldf$Csx3x-ZXBd0&=3DgsCT*}O6EEHMA03|I2O5gZdrp!?}!tSkw27o(r^|yp+_?DLz{reh_H2BV1f@~ zP6Vgzc@cG|$@@9nortz4W3`$-;C(%}_3w?szj*#&9VsIm;Q49xE8B-L$eo*YO-whu zkUX7yu9bU~>|2&}1wXIVd|qTj2zOQzy~&hwt@Y#q3l_sC27E&E^CN!3LK`dC25H=3DF zty|gw-$p+k;i-C#58cl^=3Dn0UGwhh78;D5+-7Our`o5()R6Ku=3DR%(F&FJ<#(xc!s&# zY+DPQtYJUOZ+r^Xa!1Y+J`j8cydQJ{f1SN7 zXZjwe`~I!0BaHP`8LQ}luhg)d!Q}zp4mmq8_q3s}2pyi65d+I^V9nNPw%21|-5vvL zc{OxO^dElM1vkyPQuZ9lb241inGmO^br0yKo7SJMD$(t9*(5NvE@Ct7B$#$KceL|z z?EDXa9+j^3sB3qzEOit!o>bD5#>YUR*KEiZ;O=3DO8g3Y2nL;Pyn#Jt~YUUHYrA$Z2l zO3W?v^Yc(n?se(=3D-1D&Kw05%JvZib1!Opzbsr#SU%JwTUFNDi^f!s4V>~c`&+3t+V z+iu4F5%YXIY{O&n_M5zQ%tLys<2Bm|N8lmc2UE$WJ;6h8hs_mJ?*~&)=3DoEeB`Rk`zgsEaC^v9k5)%0qKHZaTlD5nprdpH>;x~Nj&g;QE z;`b!<6{Nckf1^^eeehj7ade?~NYI6O9qV`&V@G~*;G!w+h+XP5;5Yfwf&-Lkacc=3DD z{a3WfHhyp)TlI$vR6{ljVGN^KSM-61UDm7CFRc&sd|Hp9{(6qV z9X_Sk;B^=3D;)-w8+3|KoE@53GGd?(v9_qS4zzKy#4g?!vkfE9C|3 zk0tFvSw~sdsrsw}+=3D(4=3DOY-vL(2g^J z>lf`pPn}#wxQwG)-XD1ax3Q;;H}F6|z1Orn@D(BdvT+R;*V#ccon$POeY#GC<~LgZ zroG@4(;a~!uoYBnVjI$KU}dr1LnX-kL$1|hj8Xh&u$I$2%3!k?G@pn)#XUgGAvrjzmrem`$y%h4L1O9%&m!99YVMpFa z%_aRc_}d;wNb`P?RliFHJ~0QY$|z0a#(%erUn^I&@k-^RHhAJw#b-|L98 zl>*;B*dt!+hbsJQKbw!9bz`p7Nt^cB123sXJFv6X5BH$3%xzFz?g-59OTP`bwOVMF z@|d^*&k#GYzDqg(8llg~#Br?atQUJ-TCffLqO+opP+DeZNrx{#d^_vGYrw-wzv&z- zR2x4*UL4bai|_CmSDgo$_M+8RdboE(b#K^nYYwmX){MTAG6``uCJ_c{H`flH{x$rp z6W_YQacIF0O!qc8AxjZQi8dnmP|;?FaxIQSZ{3iUxZnpFm#pvkh`r^hVSj<=3D(M$4F zC+3YyjL#c;2=3D_h%^D8;uC0BM%E6F&7J+7z3lm&SCYd`OCglxwP)dt%C`{auc;J;k? zfR+CqXl}*)zRrE~-Ei9L4)FJ0{-8~@`fg5J&RvR#J-*Bc@iV=3D(qVq=3DL&1+Yzjp{;L$IX;=3D6}Mz zJ4)hQZfn(SmY2N1{C}D;_9NXnd>s4UUCie_1kBYQU9Q*$yo2Zbu?zD+|CuOj*LQUG zu9dW)ZGpt}#yO?iS}9{QuxU@u#N5-*EeAfGw67a`*4~~x<1yn9e$V!_t-1JN&b2%8 z2Z0q`i)c5&w7Z|}R)g+&HVXK7+dGc1%^6Mc^QbGl4Rd1iXQ@#VUjc7@(9VK#Eo>LD zT)uFJ!_qcw=3DVl$r8IAcK^K<_^$e5=3Dg4_d#fz+s*m4CYA>ki- zuBeMgY$B&fH(43!ji8H=3D`CgCjVt+CAmZ7at^%ytopCA4ELG;ANae?;1Bm7JG*c`vlac=3D<_=3Dp4gi-mG^lK+& zmgrz%tI4D@9w6}Fo-TA6#M?!MYRLU816_qQo5s5dy6<<${AbUFPblaPJcW8j1AG!1 z7*`u>x);|4^*XmzJx*Z2w}Iz$IAi{#x+m`UUFgD|2k)~7WqsIz#}wX0?prWc0NQ>fy2ecXIjj$Qx?I+c?3sdhMqy$c)VWSB z7!ElodPbYkrK&fv4DyZ=3D7vh)5{YAL#Bc`LBWUL9=3DW;ILH*6F5BvUroO*#_FGhS0%50X&zU8ugC?o3*V`+}Y{}4Y+-Hza<0eHy8 z0S0kVG7>ls!Y`J4Qj{sX;+Ev*0_CH>Qb~sD+iX+CSZ77zzcS)?^f~E^{*GWj5EncZ z?+GL=3DtkC-%+PfD11wQwI;$4`>&WqkvDZCT3w16=3DVZhwPyOuT{9I?h0Ggyj}2qkez; za{?1(4PV2VWJ$M@aoBqUF7iv5&%E-*E5XZ3`m-+5MOR^ZX${5_D9JPFx{qUM_g5j_ z;Q&vTGrW@iQf|B{*N1S&Z_@HNe-rQ;DDjo9#`y{GLHz=3D@!H_%rgY=3D*KIMKywN{YnB z7(SK7`p`>4j(X+cTyWmXFM9;@dRkyR_9jWcd8Po^&l4tL8@Rgv9dI9UZc5Yk%W%uy z7}$xiu%QE{Vehh;`5e36^OyXUaM9QECA|aYOS-QuvKAcmHhJGL79L;;UjZ!2EBLb< z_*ldGUfM8pEq)%NkA+VSXB(v9C_U@)r>>T^zlKk$(DH$ILCdQIXQXH8->GJn$xTaA zSuPdVGEpsW@vGwUH7^&F4nc20&|oF?6WH>3k5XtA>3r|dhyHa#J;nu=3Ddmn_8_ab8) zU3{lI+_H|akGzY$I>yg60QyXK)Rb(7JjMHsHb?0O(9}abGkS6=3D%OakWL-*^5;QRk$ z-E(ao((67FzUNri|NFj@_dbm6%&ynnM# z$m3b9$$NCJ$=3Dl96$PN0jn!FcYGkF`C$NA%W5gUWx`s8y=3D_g|_qeU?gZ0A8?e2cX<( z?dwpoRj-3vd$Qb;OV#j7OASN&E|eA9Df1nH1>M|{amQH(_wrU~Ka+nke$Pm6ms;iW z|Cn5Upz{W;uN>cIBsJs6_{!q;?%x?bJH( zpM;hTuP1KJ+2H~w#%%MTA^7p^JX3c~@VJ|n%9=3Dsj-D#(Y!ggEF37)8@IMaCMwBQ8y ze$=3D^0+epXV%s(H*_cdCVDg7h9uh-vuq~bg6ktkDe6TXKsbFsh6`#WqCmNyUbJbNzi zem(KN6?nI%SL_4cp>wf)?7OPd;lBr&+z+476IC~T-V`5%U2_!QLaW#$=3DWDNI=3DExr9 zQGM2|eZ4TxW3^4EL1>NsT<4I1F?TqQ;QpiiS3>iX7u@a+_Y-;}9Y*;A?APDA!zX$W zk0u?u0QoHJ+BnN|hktBl9@40n8{du3a+$`tsObN9(DQ=3D3xaZL24-1bGU0Cl0&!xk{ z5C2FCV9wNiV+>zw3fqtM6-3)*Y^T}@{YLZ%bpUdh@gKFlu5Q63$Dysy01o_mpu>Z9 zFqSOVafCeV->E5e>y3~68|Uf#A2XOA{8IN{k9EP_ChvTc7i05VaKFww-o!lgC2DI+ zi@_IpvVM;x9NElrz*T~_Nq_b27yJHOq|eyvpT;-z|vK(lZF&*2Un#l9e18>W@Q9btE z$OIi%lD@MCK5;uX3&Dj4-k9~~L68EKmO`M*R`y>)up|-cieRwuuBhSRR zEWOv=3DbkOLTr?&=3Dw1b%5tfbTG5;d1WL+uITRj+VZ0-vwMbXv-dVC1P^wyQ81*drA5w z)5|V|zwIrzB##^1xvil=3D6+iqi-tG7m^?2CE4r3hyx8hR^+(OntZyN1qzkCm<6t}f} zBfsa`;hUKVo?4CjIzI3f`bhv64b#D2Ber!c1AevD*kXOquLUoJtMO9Gb1=3D}v=3D>9AV zIP0_D1Yel^W$}VlN$I5%E~>=3DX1!v{&Z@-4?uKZ2tV3yS{+sE@@$bH!8@VoH7wX(;j zZM4b}lDPqoZ|dVwxCgwfQ=3DZssk_GRH_+E)}A=3Dq9i!)@+xMCcuGe1dnOtI`V4=3DxBL| zSFLOS82+{M`9igFGkjZZe2=3Df)ueDlvwM`?+&;KDjo4$;gug{4iv^U0qcHLHy$b9Uj zu+O{dF%N)yr%1Ufl;JzrC^Ng7>G&=3D0#_E0Jalxyhvvgf=3DSVHiNKU}?}bR8 zXwo+TXBg9q2T+WE?eE+n?M}$Wg1oOGi%(oSjCu>x;*34gKQeetQyZ za6w}ma!@WJUW$4c@t-umum$tKRkqy3^SQsgF@KWPGTs_}rE^Up{KxwHOD(;wv^`_> zGHcYu~aW7*3JZpxk;_bhO{h42ZN_mF5y06ZJ-no=3DJkKLH&sWf|bB z#l-%A%(1Y7zq8Qwt^7f(n=3Ddz9s{ zQFxxicO%QMD#3Tka-_HJ!S@jLbnZW&sz%H-z^f?xIN2Tk=3D1#&qmpsF{_*SgnVWJn2 zmg7mJhs5wo*7BH&!&99G#n(Xyg3A1~kP#Ud{s6;LTUs zKoiSHJjHvERnfcr=3D-XD!2Y;B&z94UXg^A6;^m6CE0Trd|9oSpQ_;Id4TZZ^%O3b(L z_XAmvae=3D^3c>a@!&yd886q)&bcjh-blnZ8lKI8(<|4tLW-f;Z~V>=3D)+(Z6#u@`sj0kPw|0shrhp?Fu)(~03Qey zsz1MipZtsAoqyJEKf;Dc{t0_YI`%-qKZ0MW8-%X}yrsNzO1;nY&E^3R(YvfFDa$nt zJc<2XY^?$Bizo|uqGOc9wvPK?f4&WNvm}A3dDVx=3D*YXSY+bp~dNSh3OW;K6-?|ePh zSqN=3DG4#=3DC6q#NK2<+um5BhPkLUVr4pAukSjcD5Uv-(bTVZHOg%q}pmYa>l!CE#H|s zXSLPxMGQR3@%88;|Jv`{7pfOBAb$pO|Kfcvio>P7JSY_0cNPwTXN|+cP0W||Wj!Hf zjSq>&q4*Sg8#N9Km$EFzvJGvie2?Ac{IhaRE=3D^O;Ab4WE^5Lu?sr>Nw1MohX1Gs}u zVH%N^OpmU~HOuC1c1kvZg#&9nm{ zKY{njfSa_^yYLD6ht4}>d`f(tJA7muVSx{s*inKS`n~x4!_UUY7=3DlS!4${ZQmZHD&yvUZu{Vn#k z5`!u$1AE&H`<31<>tVaMig5nofc|FogdYfBU9biGSL=3D2>|7QGS`hSaUk822H8jYCg zBRoJNZ28LZp6-lJwpx9%b2nTj|Gmn=3D|7`5%01#eALdXK=3DWmD@J4YPV95GG z9p2Ny{p7Mr)Xl-!Kv(m-8g1tzjc25BdM~!63)_{w80H*#VrxNNb2oR`tIS9H4IFFs z4xHCy*faH>yzM06N*sYe*cIQuL(3fjg|SJCueIm4tQ)}#MJ(jxSPpzmEdCu3SeW`d+W3O^d2 z9db@vwZF~61oR2MdpFJz81GrF!Y}F;4wiLDz1!Myumk?W95XhYh2kyQ6|ir-2svGo zHojp6*F$6@Xp4A}cn@xC^QWw%eb)=3D+{=3D@%7?j? zb708AH8NI_bLDssYpB2i?IojpNb&;ZPoUoNm48teuKY?}SbeGL276pG;CIIOv8ROp zCjDv+E~9s9-nvvunJLj4D|Y< z%-(4~pxqSw9(_h(wG zWL{)W-(Smo?c>o}yvU2ViIGi`UuL3-3gHQV>;rllI-S-5(`|urmmy7n}d!;G!JAB`%;{%*(fR4+3Gy7&+ z`3G(5!8;8vuutso_zCfOdhKtPG_fb<(C%n+Ey+^}{&Ky)95=3DUf8}yjzn14HX&?xFP zx6Vz>0c|B_19$1aR0%8F@NUl^l)ZAFia&xejz1Njhc%H5{eAs{8Hl@$cw9#^l*8Fu zU5>UBtKeHhKg(OkLw~XEC}W>+S0cTl%lqv%P3Zr%M+(%77!%`ng&51M`~>VU)>Fmh zhuz;E z?um8eL*NlB*l*BHYk33U0-p9s_Vv`Xk@p-U7q%t@7Ln{Jo9}VzE7_P z4jES+cQxL2GOiZrv~&v2gsjkD!XciqrkA5Hall^!%7wBKLjh^EnZG3d+two;cTU>Y zWL+yUH|JJ1TiP8s{5iTQjJ;nxdq zMS7aUtYNKB)yvw#9M&UU_UtD81!-fyYQVk^dnP$cmUukw@P3gcNIS{54nW6R7KH0X zP7zO-*ICH-X;=3Dr=3D5th-RMgdo?jnD<7^O`l%w>L^F#6@#~DrOl+!1n_3CUDG1DaX-*`9B6l3c6{E_0$V2Hkf-y#8uk_SrH`&B z)duK5>EqJl^D+}fcCJFaT&#YFUNtlnxpVAcG|axXkPf0 zz-B&hX>8kjzSVWV5?*BT1kYl}7e4vbK*9w+k~t3I6Ea=3D<&4s_}!937+D&c5;ylpnq z*k-|#h|g6X?R$f8P%bg1+^LRoj~zAT zM7E+_S5qz(ZSIVgGi9VtCrUZ?%r{PN1jNXD*84Q_#4L@vkw}n;~Rv(+$8OT4?tFgf_o$` z)3y%W?Ul8KScbm<4}gD!?QNNpkgN@yCHT#L>PzV_%AK#vNqep68|Rkg{JMW%%DgYy zqmub%J@~TBMNGM;O}YN;7vH!yWm-DQ+&spVv6(XQC{uV=3Dzs#O-_giWsLFQ~_o%H*2cEjS!~gp<`+_}kE7EcP2>{ERi=3DZxoZ z?#K{^RcJyT;<+%6x%ZeR$$sQE4WYJxWd*s~&+x=3DJ97rUE2*+p3B zFV8v(iD&BAPK&Z$`^;1zo-6x98+{h`4OxGLoqR;x>Y=3Dd13cfM_fct>E>0^O~F$B^6 zvaAt^LESL=3Dzj5xB2H38$yphRSu8ui)ZUoP8zF5rm^*mT|e$|2doiaxl--+YaGHr*dbh%#!)Z_s7| zY(K4D#HS&yohueCVIN7GvWEfA&gf6Lt(_jBGmPSxgpSc~jw4zJzJGUm(CE+fI{|fD zI_myABc^VjbJR8bXVK%(mp(eH-9L5IZ9Dj%>poP3x{sYz_l20cqN|*{&-3=3D9?wGUc z24m`qygREd>3F5^FRQi3PvPCH8% z{mnVy-FHccpogL;{v<{n)`PCoy8q{KaC%95J@ChlF|@{v-x^CgBfa6S4#sZfu#X(S za|LJ?^DQvy7QGfzU-YT7aiD2+(Hr3Z-TyW9o`rJ@;4_+>LmV z|30hkj+nY#ex}`BsQc;N;cS-ZV#+tDLS3tLm`V+xMi`dXXTaA8KAaK1qtVVdy z5c`RK@!g1K+L;|Sfo%HYNKC4}ctb3_{Z*E8W+CQqNOV{I=3D9iqufA$>nkS=3D=3D}*$3%# zp;yRZ_(=3DaN$Z^9@8gIA;MpBNtt$A0oo}>o?V+?Phtyekm&u#rrFXoG_x0rr6wrJTu z0&lSQTqE9RP$_dorQi7rK*33{F5Covvh7Py=3Df(jxV~pUNZ~;_A&1I!65>i3!WL zt(Rr}3XKG9Z5ZPf+IBIg%!7_-nu*%X#mA28<5j&b>V!T(&!7eCQSFn`S>S2;ssOQQF=3D^526j{u*m~U*HO?>vxRq=3D7*hf zJEiIAs4{_~Zy4%=3D&UjpLiA+vVX=3Dp$QN37hGfjenfW5)ldAiu zH@#hs(mpP6-qANXVVG_AYX$DE;Mtea^~5I`{psNWAdUa{WuS)u+jCoMmq@z2ha2xjx)15*d||EdR`^O* zQ1)mVx%YOK*W->KmH##D*;WjVQ~+l9gKB}P<4|W}&V1~v-b(~t!<=3Dqpe(-s$fA~`3 zo{97gG~t8n(YjMs;1jMZ`cXnxISs$7Ijloox@e;EIaf@1#5v*St_J@>$~*D7+^;Ge zb&m~i-}i-&>Ap-A-gO6LNd;^kat4a?l;5Dkq60`BS0S^D&_-mKV8)`dDWN zw4VROC4_--G_g;x4}H$xBA0Mh>JYi~_b-@-^&RAx*gt1h;B$eGF*)i2+dKLg5x%1J z2wVD@eGIQfUF}aQWBdKsn0k6G%Ghk(+Ur41WA8ZUOq>LE#ngL@eKUH?QPvY$3Iz7Z zxUBHtb{vJb%6udLG-&%uIa3Wx=3D}lTNbm)QaneZ}w-VrBf%$l}dx|;2Pey$bzflnUF z_GFr#x43?=3D33rA4{Evtgm9oTXOLRVOGjB}UwhB%cVqT#?gT@=3D(;g9{S3*Yr~;QQmL z%)`3x$O9hqTzovjqpB4YxQuJH?;VQAM(w}#31n?^kl7lnq`2C=3DZFi^gcEu6Q$%|S%yVWf z984IXv)g1oAdek^#fXW0#X#o!^X-}PZrVQag`UNCoOlnneO|4#&#|28M^cohz#g-X zvd)jVB;HiU|Bv`kpGqHV>yZL$+mVUZ z&U5>$G!N3aYjZ%BL#ACQGRyQY@yH_BK6AvbpOP;=3D0srFOiM|V$VeWkme}NtHT~*ca zm0Irn3U{NemJvt~A$=3D>-w;_Ee(m<;=3DSHoXyg$?i8MmKzAyA5f5kmfB8?a^^BrVCfphsdI zQ1?sI>w48L=3D869AllvCb4~+iUZ!z9li}Y$oEEY#&2x^4ZgzuXuI6wacCpK9qA{s19`BO(TA&eJ*xAsU0$~10c$xb z-+{~hS{BMXCh@2%=3DOw6LByB*)a0DK|TDPI!hDRHFH0b{m_Tm`WNincxU!>*WGlUZrMD{uz!R#FbmdV4`1TZlWPphdZl=3DK~ITXVa?g#eSK&JX($W zwcalEfVmd|oNPE&hq?>sTAbk$u=3DzjDaO+DJs_b8M-

=3D6 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

Q}%=3DUVt0lP z>$3f17LhJE@6gqNx0$zbJvm+?@FHE5*$+Qg^$YY$zrF+T>n()LhEpwz!Pk{JY$}sI;YI9f9NW+9Q2TK z+1x2Rufo`K?A}JFgKoR{#XbOaq@h4;|G>vhkfZQEY2XrP#SOiE%dERL>c8@S3*s8j zu~(_n<3{(rIal{ZzstqOf%brx;kuJ*3BDyh1mDzcPqwKQS-f0g_#^UIh#ZbRO!lt} z^2v9T#GU33zkWpUp!KhlQw0Ul(!zp4(DB>p!Z#ZM&l|wQWcpMm_FO+@!Iy5qSty}5 z@Yu)W1|fCj3dyfSx~~W$|2I4xRT2&A+d-P=3D@w{moT;bxMb@qAPde2|CV!uz%6CL zx%k>|KQIT!kWFZFwgwbz z&mTHDG@uH0P3HQp>l=3DG|y2EE~3vBD@L5z?;9bOJU(YkekvUTgmS154`!E^gx?` zeA_3Bd)i;dIhxMm`o<4^D6s8AA7c5Q)&I~y`)beC(+$kelp477`0PH89@4SGoOt_# zSYe4Dwy*g;IWYI$sXX_z-R+NgE=3DF{8&{aM6zk{#PFA7^6WM}-o3cpJzGo=3DT>=3DLfKd zgtae)_CAi2e#wE2tj=3DDomgBn+-_{h)2*T%I3f$87Uom@ZEPuLL%CZh* z$BvGRsprUDh~+i%+7#$j{L5JX#@|<30A7 zm(F|*y3KcC2gG_k`b)L!XhxM|{Oef{au5s@!rx(E{-U1u>Dz*F+B&@Rw zRpFUe@ZF4jti-`0iG3)=3D^9nq(aK9Ay^Wnf6U)5%h8}<&IV*t*8kLCQ$wr1na89#WV zJ^rbMs`M6|=3Df(J!z5a??9zP{A@a2#%7b4cZ0{oh?>?Ft7ratl9X~2{&wa7PlPEq&^ z#+bxkmd`kL+E2K3-$i1lgnosxW1t<$V+Nl}`JT)(OD8g~q&Q_b|Zy5$<6&&M`)u z8wcOKM0BC$c)o=3DS05PjW(H28k8p=3DN4AeXq83V0Fk&I_4>hN6tv#AI9?u_$i@%!mH{r&Kw`@5;8B=3DercOT(9qwl6_@CkaD+BiDXK z$9UPt#9v##1iDfobUV_fhT(~hM~;7NtVCirZb7}Q?rLxu{n5q3@v-NT0|M^`cVKuG z`5{U*4k|h>fQKj3|5leWxCjG=3D$7bUK<2y&(GdA5lpO9II|4YaNv-A0}9jOP8m(s_A zw&u`AO{-}O_D6SHkXedx_WNA=3DhlrV{ZPIQ#hwd(Wv!`tG%I*h`e=3DPmr_LPR3xO?yG z=3DxfgUo)2#Jg?Mw=3D-w}JTSX~O7>2c)tHLb^S4(}YCJB~J0d|uWsFZ(a4sA2( z^L5}MXYQjs!ud$Ac!A%#j|SlCHd#l<(Z+lA_0)YQkrNI%vNZkB_WRPFUmyP%�yu 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

!JR%dh z@A0TU3hZKutgIhTDF0z}!ITy`R26A|JOf=3D;wO<@I%JHoK80$hODjyp)#RH(8I;y~7 zxGY~9!3ConD0Uu(d3nY4@nJDPl^x46_OU)ypp=3DY&k5jc(_+rSIs^~q+6LnhaQEHVg z_ymp^xvPBwyIVHs6G1)DKS4=3DbQ%pq|PYLA{=3DuJ40Qrlmnb9~jWpP%Gz{E0;GYZ4@? zRg*?AUGo?2Tb{^z72b)r?C>>jJrF+8r{7e1BCi#9jX<63Q=3DTY@=3DX2%K)AHxz4Z3De z413j98}S-Q`VM02=3D!!Azf-Xc zoW>o-)hE+pRqgmGrd1x{seM1i_Ef%h`{Y0`9V)0Chm9tOw5$-va2t83?F42BqV_ za?*qGmDq@=3DIrnv_saB;YCTi4;VCvJzo}_+|d(!$|W$<?!Xa?x z&P^Iw(i&CRlk(b{n^A!`U_%yidotd_PvwwD$CT;*H{tw6dM4Bvm_qFDpkhGO!a;t zi-Cp*`~78DSp5ftG#k*5K^7POZ?gB6aa^1a8g+3{%S@g@qM0;^$Bf};KrKA(qH}MW zyXb6A&k0#9kbemm4!sE%WU$KO^`Ket!qbp9t-qI1s}Y^O3F+wVdl^NmHjgEcM^yKw^cQgU zV$+6MK=3Dr?ccOMI;EGKXH`1T@t+_~??82txQJ%y{obl|Tu23!QKRm3J_L?j7|O;yYeB7Rs04_TuLHI{5Gu24wys$1$kY^X5~C<|sHb z-v&o606O_e=3DG3Rcx(oJz)A$nmF{=3DI)Hn?SYHYl)P;&g#Aw7mK_cI0nEqbO@V3T1Lk z^HfIS-~Ck93;%2SO}%*#D-zY!<5LW)rT)`JlQLG=3D_Gxqwnd8{*k_C>hz+t zpH_)ze}<8=3DBS)jK`V9IM7pu<%khROhrku1!WS@!1Q`hoL)RBwz{ujN%n<#UiiF?aF z%RFtSKx*ks>$d=3D&$w*&rej-Equdp2FI||R>i-Ye%=3DOESS`i*(5evXPzzh@ci z8k(MMQ;A<;EM5L9tPsStXR*b>YvI0ULwe7?{a4Vv>eTCNs! zrJo(rP4a9}PczRB%L}W%XK_G9h3`?}E5C-qa_|2lI5Xd6aA4q~3KUx{^0{H{iCmf1 zFt`tEkO~y;c^3+I{|*t@hf@Gds=3Dj>z{cVbUK@|W3w*o@KwCCFw(cO0+D{7hR4;pg` z&|2n_+T4!cjGMzE4d&YSWxNvAGgREHiQSyul?MW3@n|*#?0phkJREHMW z$NJZDq$G~ikLWn>D;qCHz3|3g88sDcc1(XE>bW|YM=3DMm=3DtTg`|yPj>HdSL#!07wn< z&*6<7Xh2Zq{hQ}7iy(Vi#EY&Dzt2TgnU#(S%I%3=3DIH>)fruEZbjzXF?vtBLL9{L>K z9-&Q)jCkiqZU0}y?xp|5FQW~3@lCHAJq2xbNL79h{9)qXt)R;dOXVm3cD(X@g00HG z%(kE-3_`8SW3=3DQ5``nlw4!VAe34DMNgix-{6;ef>fXL1*hrIy@kYkWgXT68^}Ro)Wq)3Tit9=3D6*h=3D9eJL_ z6DGrN0JW-^&8pH^)3hnHp8Zmv5ga;!!lE8wUKrNDGx7qS;j5wU z5Y)-9-@Z_WpcSRfqpI=3D&mQHgs;Im>Cz2JXgOe;88C;h;8ut6TAgPkY)r+=3Dxeu?GX7 zHEMM*sGT?%GCIQIgzsR4tN4RQPe!-LPmr`6j6vS=3D1uO@0x~{NiNG8_IV`9cIHV#c*2nCk`Y6eIg zLR06D8qa`S302ddg%@q)R+Z`njl76zSL%-|W#LNcT&F#5$qWH!`0CiWaRFnJ=3DpDgf;tv<+7pISSJ+u z?i=3Dxr;cu~@Q2Nu#xyza@t@c>&`}OF4<_ADo-_YX~fyfs*$9xbd{FiLzqd?)m&s+Zw z!-@)N6VU5zr4rVP-^D%Agu2X3R9%Od=3DV&< zR+y)%r9Z{I1C)NfN-VMsUifEkV;q=3DPKM7hJ4mNvw5Uvdj(+cx0P$YemXmswSkZMn& zlP^ULojO5!5+Emin)wt^=3DF2jl0}B5ps)zFA0n%S&z5*Nz;0FG7A_9R;FVO!8r~+hw z!#s6EOtA3;^DUtCcbM-P{uJ|l;2l5af0H_diS?~eF+rFU{W&ND0)fj>_S-<=3D-?WYS zIPlH{@TZth1BHJh&AXc>&f*Ihki(exJU|B2m4idJ`ErHzs$UPQk0-52>~fuDYK#aE zKfOGKi~r>=3D%YDB*^SMfBedy`>2ABx{&PJ6Z{VkjIgg^c;-Zeuny+zAJ^(U7MolnS< zIq+h&Zxt{me;FX=3DJ4~x5o>nXUHRfrV(!XEx3*nPZBcQE?@JU*@3?P~&=3DmF#e1Lkp$ zW*Q4RMMI rE;3Hc;f#e^?0lPQ?v>lKpAJ|045Q!=3DGb54;%|%lLx4poddPeeDD!ogCzSqM%y$j{fO$gcuWG&&KIQrYt^~b+(;*{( zUky%24S$^d3By0)sl#FcSF-FU9JBBrckn5k<2a<5D+M+Xii)3VGhYPCgjMEiKrZ-D>hS3fc$u%q{=3DVVo4xb+Q{a4A3Q|sj*K+ON7w~kU+->noAT(voX zIwS*jF`ocRf13HM-~R*``tp+D&$GWs{zLeWJN!hIg)&f1FybBXqM#?DDip$1WIq* zLYc6_{17M-wn8575DNd}R49(569q_rg83v+_zyXnFNK{HzK{V~ErgvVpbVffO^^df zf021Y>3^R2GEn+!%sW6|NAR|B1|4a&*w7^d9(;~}i_bZy2TmsJV@!n&0n*PaKSQ$c z|0P7kbodONi^6}%y9$)TXDCnxBsn1K4|uf0{F33%Gha0PKWDxSl=3D-X7JHRp8TgfYa zjIT>)>fmHR3u9UV6(Cmd7!^)@7a;w8=3D3Suh9~|Ww3O~*NPS6WD8#My9F>eFK1n=3D;~ zXH($C1dopLqz(TP#whe`4j}x=3DULdeX3wa1~f-=3DSwKqv$7u6~m>`?Gf(@T3z;y}*1O zDD$Wmt&q#_#bXFp9e~RnR!C#_fFAL_|*yo8Q@?{1rf@CB=3DdEk^tYKO z6#fIBGv5J9f1i0m`5ZXVWMKdl0s3Nqg3ggFC)nlr&jk&?%{-y-@BfJTIB=3DAoo&)ct zSRj-E73R~xQ2@StFULHg^#7RoJW%?}%o9pK7H~hc`W#Ip100Nr$2lLvIe4ya=3Dxx?J zK#_1?mw7^&ug|;-l>Qe~If`@eTF}#9GcE%2e`nqXihS1+%%_1O-@LVKbii*P5)i{QBNL^KGD(~aNb=3DR-AL!Mp_s4nUCprOZEk1jueIiI6B+bQM}DgiQ9 zPZ}{xtfy5@>sdoDu%1&@t>+EB!a8=3DDYQ1de4(nCrYQ1LYE!OMGwyD0Rp?6uw2UTgk zW9S3cd#bGUzF+@-aq=3Dtyc`a&U$TmE0yOMa+~F*N@%@h=3DsniEDyMZCi|4@y zF6*wULRaS>z&UjzVyNxxw;-vo+$ zAEue_0EIv9sw@uN<{JanUB5o1EP)ap(vIDXOATYqLQ#^D*qgTFx!;B7P-dGIDR z5;b3>28lUFyAUoeffqI1q%rw(-fg<)wvO&8U8I&uXP%v9pvW9wR1O{Dn|0P5Lw8hH z>uuHvMf{GxEu*=3Dan|+q42~y_Qn~T&GQO+&0qwtj=3DK=3D>yrs)~H2TXEJ2rGAL{1W@Kn zGoJzqfBZA%NtgaS^VC4$=3DbcIm;T1B-fHDUZ{Q;vRvqHM`SJ_|jj?DMA;mGLE4_T?{ zy{WO4`d36?UjRPSYkUQ-EVyAgv(h$vj%seRX7vZI0w)h8y_p&T?+;2gf*AiBkI}hB zGFsgT0Yrs2y38k3dAk+aOKJXqhZ&XvC&F%0dP9{TdH5tN>1g-5O#{VHJRA z_^5x4s<-{3QS)|1Ol(KL^sk0B>fWCjY&5lFrqS|eF54=3Dx9ak*a5bPpJFLitAeJ*BW!0u?^sn!( zM!oF-|Djp+FW{`kVHIr|-8Nsv4n*2zynP2QzaK_nLJ6ySW8S89kt5h+zY|Z=3DBSx)L zd2NgwahK=3Dtq&Y&RisVyePtFiXzQ#Oi_wf$%#+fqJVxH=3Dfc{Thal*uZooll%%En>VqjSSIb)Eh>WIvdZ3tr$J^(<9sIP_f2Klmj{YV?fNG3*dB)X zSf=3DRLEtmDOYHGdW*Vorrud2S*X)N=3DXS;seyyK!aA)D6AEdK)O3Iqfh{y2y8j$M=3D-T z7t8eg`uZWq^_8RbfnT3)vF@s_*2ypPS3G?ou)GK97i=3Df-3!=3Ddt93ezB0N-M z9p7GRo!TyS8dE&>Q)xZt*YEAIo>y(?>hPQu8lMR%2ghFhZ;usJ6T9e2fUo8ksB~Fd z+>2d|8hna*d<^S1v8Kf(L+6?ni>eGgvsg3q0>`%uo?ErpGkC}IAI0WPQ zf60g(O@I^i?{qOnZ;mE$4T*h;KW+Gj>_`1$$G*g$)BZ2E{Lhh}CddPRiicTH5u7M! zE{HMts|FuZ2`p^uoXvXM&}m_aJCKtV!di5%H9a=3D|o0f{tTZhNqSHGCI9+~`| zO}4<;t*&a$TYF}1=3DwV=3D-G4S<{a_6mwCo{S)fxtplCH7f+CO_?H9JiHAp~uQvzvoz4#rH!;=3Djb1e^ZTvGCy&)UVry14NiPh% zark59Vm$sY=3DlAgg79Q)@;s>U$cP1yOW%xIdTyy_Bon5!~*YSHp>(=3D^r-+N;BUH@pj GyXF5Q`0cg; diff --git a/roms/SLOF b/roms/SLOF index 3a259df244..ee03aec2c1 160000 --- a/roms/SLOF +++ b/roms/SLOF @@ -1 +1 @@ -Subproject commit 3a259df2449fc4a4e43ab5f33f0b2c66484b4bc3 +Subproject commit ee03aec2c106a699aaddd2d3dd52cbd7b7e8d544 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698012; cv=none; d=zohomail.com; s=zohoarc; b=EfkSWRhonx5n9gZMTHxZL1z5E7Loj3p/z8yukp02t/NSAbjAOldlYlLcWk7ygGv7U2pJD9jaBuYFW5c0MvgTbODcXNj8btDWg2d8icXjw0aNYKR7y3qQ5psofP9JOwocburNWEfj42dBr/yLNK1ezUmDKr6FWyrdyb/7XvKyBJg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698012; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CSHGgwgOJ8bvFCtn77OMVeDfhzz9rRbWoztTbokAA7U=; b=SqNMGskB7cvnSJVXnd6mtgiYWl1C3yOilTctn84nPQsCFo5RCktI5y6fuPo4uH8Lg1BIg/vQ2vVuFlaXHaZj9wicFWstgVaJeTYc4kAfaOrph5bG+1CpWTqSAg0PVAtdLjzqfpqfSMEFzxfjSyEMJ+2ghnswt3sS6JCsewkKzBQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174169801249432.51662083108829; Tue, 11 Mar 2025 06:00:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCO-0001Q8-QL; Tue, 11 Mar 2025 08:59:09 -0400 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 1trzCJ-0001LO-HD; Tue, 11 Mar 2025 08:59:03 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCE-0007rp-UE; Tue, 11 Mar 2025 08:59:03 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-2feb91a2492so9002009a91.2; Tue, 11 Mar 2025 05:58:58 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.58.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:58:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697936; x=1742302736; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CSHGgwgOJ8bvFCtn77OMVeDfhzz9rRbWoztTbokAA7U=; b=cu0JLqMyW+QcWmnab3BDI9G0hYzqABrfUzVqDoSujd+j0njvwWp1PRL3vyGQCBnGXA AzQDnqF1pRX+nccz5DO0/l22i4DV2n7eSK5EXBCaSxqrLfFpms5shG93PLxrjOeOPiGL pSBO4iOLiAk25rtND/yn6mUe7Mk/PBXi3d1nX1whWcyLhrvZFjVK1qoG59+FPcBXqlXe 08dKQ1JqUGknhVIL8MX9etlpL3O5rFZ8XD3P4+vDk441xOe/+ZYaf+l29hd8l7rzJFdg HH6JaRK4Dqev4iebAE461ANK9qlKOzu2eh7ceQEAyw3oWb5zeZ0gxFkbGxbBeMg7LR0V mKRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697936; x=1742302736; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CSHGgwgOJ8bvFCtn77OMVeDfhzz9rRbWoztTbokAA7U=; b=IUlFPqJjfKF7tpVLs110+Fbe+cLpF8gqZEr4tF9nsaEmxxg2QSfFjkPWNUrAcyYU0Z dQkhq3NRK6z143p7KZ+WtCvdPzHK5d9zloSOF+wFGlCDot6cAlYs7jmw06dTmZLS+oFF 1idA8GUSKzbh98pdEwV0WJQZWxgPOdJJEMvhtI25zV5wrx8aB/FhDaQtQYLlKdYaXmu5 Zr59GCvCOUN9M93dKoZXGh6UmscKBC4OJdRPlVkktb8slDII5Mm4D+++YHFyV88E11QT m8VMwyFQ2jIh7wUnsOr7ZMO31Lpk56rtL1Mcp6bHY0fWsuVPJ7D1UNACBofl244OA5lE JWyA== X-Forwarded-Encrypted: i=1; AJvYcCWRbFAGUWm6S33l0Am1kemNLKlVGyxlSAY1vJpO4mXDVSSwH+83L+Ogqnbf4gZTEBGaM/sF3UUUwQ==@nongnu.org X-Gm-Message-State: AOJu0YwT2ejgGXyRqLk/2jcGDXhBpNTBDHUqWgmX3CogZw4iRLx/hHmu rHfmHSNGWU30gJ0OanSeSU6F24lzSs4Cy0Q/d4SkyoB9gR18lPwYiPXa0A== X-Gm-Gg: ASbGncvQ6vCKft5YAvZvlRIGsIRyAldkZWsiiW21rDSKTu9PTIchfIRtPImXuTQKJ8K O1RoDgzoLkqCl8s2SAf+UbPPPYrCiz69R4dNQRZzZWxQFjnEdYBq7S6pzkyXyYW2Ibw0tQNnhP4 4uYLYKefnJXm5/RnF3T+v3U/ahPGluamRjkYSfRvVhCGVE96hozsxhAZcIz9ER4KRUBbqPR9eaH 5hwIBZV1P2vy2/5QesfBcir60T1+TDo0JNqA7NjYVXSsZPbLED5KTe2Ro4IYFIX5IFfu4UOVbPv vL0pSbiu6DOLqRcYEAs+7Tt5ecILsQyoCsrVo+7n4Qpehu/L2jc= X-Google-Smtp-Source: AGHT+IE0wNuDgcv5ZTW5TzeMwA7YKz9OzyNsRJualoW7aKYhS8N9K9b58RgfwuLSJQCx8Ar70CvUEg== X-Received: by 2002:a17:90b:528e:b0:2fe:a336:fe63 with SMTP id 98e67ed59e1d1-2ff7cef5ca6mr27094454a91.24.1741697935914; Tue, 11 Mar 2025 05:58:55 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 06/72] ppc/pnv/phb4: Add pervasive chiplet support to PHB4/5 Date: Tue, 11 Mar 2025 22:57:00 +1000 Message-ID: <20250311125815.903177-7-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698015887019100 Content-Type: text/plain; charset="utf-8" Each non-core chiplet on a chip has a "pervasive chiplet" unit and its xscom register set. This adds support for PHB4/5. skiboot reads the CPLT_CONF1 register in __phb4/5_get_max_link_width(), which shows up as unimplemented xscom reads. Set a value in PCI CONF1 register's link-width field to demonstrate skiboot doing something interesting with it. In the bigger picture, it might be better to model the pervasive chiplet type as parent that each non-core chiplet model derives from. For now this is enough to get the PHB registers implemented and working for skiboot, and provides a second example (after the N1 chiplet) that will help if the design is reworked as such. Signed-off-by: Nicholas Piggin --- hw/pci-host/pnv_phb4_pec.c | 55 +++++++++++++++++++++++++++++++++- hw/ppc/pnv.c | 8 +++++ include/hw/pci-host/pnv_phb4.h | 5 ++++ include/hw/ppc/pnv_xscom.h | 4 +++ 4 files changed, 71 insertions(+), 1 deletion(-) diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index a156839caf..cb8a7e3afa 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -197,6 +197,9 @@ static PnvPHB *pnv_pec_default_phb_realize(PnvPhb4PecSt= ate *pec, return phb; } =20 +#define XPEC_P9_PCI_LANE_CFG PPC_BITMASK(10, 11) +#define XPEC_P10_PCI_LANE_CFG PPC_BITMASK(0, 1) + static void pnv_pec_realize(DeviceState *dev, Error **errp) { PnvPhb4PecState *pec =3D PNV_PHB4_PEC(dev); @@ -211,6 +214,43 @@ static void pnv_pec_realize(DeviceState *dev, Error **= errp) =20 pec->num_phbs =3D pecc->num_phbs[pec->index]; =20 + /* Pervasive chiplet */ + object_initialize_child(OBJECT(pec), "nest-pervasive-common", + &pec->nest_pervasive, + TYPE_PNV_NEST_CHIPLET_PERVASIVE); + if (!qdev_realize(DEVICE(&pec->nest_pervasive), NULL, errp)) { + return; + } + + /* Set up pervasive chiplet registers */ + /* + * Most registers are not set up, this just sets the PCI CONF1 link-wi= dth + * field because skiboot probes it. + */ + if (pecc->version =3D=3D PNV_PHB4_VERSION) { + /* + * On P9, PEC2 has configurable 1/2/3-furcation). + * Make it trifurcated (x8, x4, x4) to match pnv_pec_num_phbs. + */ + if (pec->index =3D=3D 2) { + pec->nest_pervasive.control_regs.cplt_cfg1 =3D + SETFIELD(XPEC_P9_PCI_LANE_CFG, + pec->nest_pervasive.control_regs.cplt_cfg1, + 0b10); + } + } else if (pecc->version =3D=3D PNV_PHB5_VERSION) { + /* + * On P10, both PECs are configurable 1/2/3-furcation). + * Both are trifurcated to match pnv_phb5_pec_num_stacks. + */ + pec->nest_pervasive.control_regs.cplt_cfg1 =3D + SETFIELD(XPEC_P10_PCI_LANE_CFG, + pec->nest_pervasive.control_regs.cplt_cfg1, + 0b10); + } else { + g_assert_not_reached(); + } + /* Create PHBs if running with defaults */ if (defaults_enabled()) { g_assert(pec->num_phbs <=3D MAX_PHBS_PER_PEC); @@ -290,9 +330,16 @@ static const Property pnv_pec_properties[] =3D { PnvChip *), }; =20 +#define XPEC_PCI_CPLT_OFFSET 0x1000000ULL + +static uint32_t pnv_pec_xscom_cplt_base(PnvPhb4PecState *pec) +{ + return PNV9_XSCOM_PEC_NEST_CPLT_BASE + XPEC_PCI_CPLT_OFFSET * pec->ind= ex; +} + static uint32_t pnv_pec_xscom_pci_base(PnvPhb4PecState *pec) { - return PNV9_XSCOM_PEC_PCI_BASE + 0x1000000 * pec->index; + return PNV9_XSCOM_PEC_PCI_BASE + XPEC_PCI_CPLT_OFFSET * pec->index; } =20 static uint32_t pnv_pec_xscom_nest_base(PnvPhb4PecState *pec) @@ -321,6 +368,7 @@ static void pnv_pec_class_init(ObjectClass *klass, void= *data) device_class_set_props(dc, pnv_pec_properties); dc->user_creatable =3D false; =20 + pecc->xscom_cplt_base =3D pnv_pec_xscom_cplt_base; pecc->xscom_nest_base =3D pnv_pec_xscom_nest_base; pecc->xscom_pci_base =3D pnv_pec_xscom_pci_base; pecc->xscom_nest_size =3D PNV9_XSCOM_PEC_NEST_SIZE; @@ -349,6 +397,10 @@ static const TypeInfo pnv_pec_type_info =3D { /* * POWER10 definitions */ +static uint32_t pnv_phb5_pec_xscom_cplt_base(PnvPhb4PecState *pec) +{ + return PNV10_XSCOM_PEC_NEST_CPLT_BASE + XPEC_PCI_CPLT_OFFSET * pec->in= dex; +} =20 static uint32_t pnv_phb5_pec_xscom_pci_base(PnvPhb4PecState *pec) { @@ -373,6 +425,7 @@ static void pnv_phb5_pec_class_init(ObjectClass *klass,= void *data) static const char compat[] =3D "ibm,power10-pbcq"; static const char stk_compat[] =3D "ibm,power10-phb-stack"; =20 + pecc->xscom_cplt_base =3D pnv_phb5_pec_xscom_cplt_base; pecc->xscom_nest_base =3D pnv_phb5_pec_xscom_nest_base; pecc->xscom_pci_base =3D pnv_phb5_pec_xscom_pci_base; pecc->xscom_nest_size =3D PNV10_XSCOM_PEC_NEST_SIZE; diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 87607508c7..4407b3a1a2 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1753,6 +1753,7 @@ static void pnv_chip_power9_pec_realize(PnvChip *chip= , Error **errp) for (i =3D 0; i < chip->num_pecs; i++) { PnvPhb4PecState *pec =3D &chip9->pecs[i]; PnvPhb4PecClass *pecc =3D PNV_PHB4_PEC_GET_CLASS(pec); + uint32_t pec_cplt_base; uint32_t pec_nest_base; uint32_t pec_pci_base; =20 @@ -1765,9 +1766,12 @@ static void pnv_chip_power9_pec_realize(PnvChip *chi= p, Error **errp) return; } =20 + pec_cplt_base =3D pecc->xscom_cplt_base(pec); pec_nest_base =3D pecc->xscom_nest_base(pec); pec_pci_base =3D pecc->xscom_pci_base(pec); =20 + pnv_xscom_add_subregion(chip, pec_cplt_base, + &pec->nest_pervasive.xscom_ctrl_regs_mr); pnv_xscom_add_subregion(chip, pec_nest_base, &pec->nest_regs_mr); pnv_xscom_add_subregion(chip, pec_pci_base, &pec->pci_regs_mr); } @@ -2027,6 +2031,7 @@ static void pnv_chip_power10_phb_realize(PnvChip *chi= p, Error **errp) for (i =3D 0; i < chip->num_pecs; i++) { PnvPhb4PecState *pec =3D &chip10->pecs[i]; PnvPhb4PecClass *pecc =3D PNV_PHB4_PEC_GET_CLASS(pec); + uint32_t pec_cplt_base; uint32_t pec_nest_base; uint32_t pec_pci_base; =20 @@ -2039,9 +2044,12 @@ static void pnv_chip_power10_phb_realize(PnvChip *ch= ip, Error **errp) return; } =20 + pec_cplt_base =3D pecc->xscom_cplt_base(pec); pec_nest_base =3D pecc->xscom_nest_base(pec); pec_pci_base =3D pecc->xscom_pci_base(pec); =20 + pnv_xscom_add_subregion(chip, pec_cplt_base, + &pec->nest_pervasive.xscom_ctrl_regs_mr); pnv_xscom_add_subregion(chip, pec_nest_base, &pec->nest_regs_mr); pnv_xscom_add_subregion(chip, pec_pci_base, &pec->pci_regs_mr); } diff --git a/include/hw/pci-host/pnv_phb4.h b/include/hw/pci-host/pnv_phb4.h index 8abee78e4d..8a80c0c667 100644 --- a/include/hw/pci-host/pnv_phb4.h +++ b/include/hw/pci-host/pnv_phb4.h @@ -13,6 +13,7 @@ #include "hw/pci-host/pnv_phb.h" #include "hw/pci/pci_bus.h" #include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_nest_pervasive.h" #include "hw/ppc/xive.h" #include "qom/object.h" =20 @@ -174,6 +175,9 @@ struct PnvPhb4PecState { uint32_t index; uint32_t chip_id; =20 + /* Pervasive chiplet control */ + PnvNestChipletPervasive nest_pervasive; + /* Nest registers, excuding per-stack */ #define PHB4_PEC_NEST_REGS_COUNT 0xf uint64_t nest_regs[PHB4_PEC_NEST_REGS_COUNT]; @@ -196,6 +200,7 @@ struct PnvPhb4PecState { struct PnvPhb4PecClass { DeviceClass parent_class; =20 + uint32_t (*xscom_cplt_base)(PnvPhb4PecState *pec); uint32_t (*xscom_nest_base)(PnvPhb4PecState *pec); uint32_t xscom_nest_size; uint32_t (*xscom_pci_base)(PnvPhb4PecState *pec); diff --git a/include/hw/ppc/pnv_xscom.h b/include/hw/ppc/pnv_xscom.h index 648388a599..a927aea1c0 100644 --- a/include/hw/ppc/pnv_xscom.h +++ b/include/hw/ppc/pnv_xscom.h @@ -126,6 +126,8 @@ struct PnvXScomInterfaceClass { #define PNV9_XSCOM_PEC_PCI_BASE 0xd010800 #define PNV9_XSCOM_PEC_PCI_SIZE 0x200 =20 +#define PNV9_XSCOM_PEC_NEST_CPLT_BASE 0x0d000000 + /* XSCOM PCI "pass-through" window to PHB SCOM */ #define PNV9_XSCOM_PEC_PCI_STK0 0x100 #define PNV9_XSCOM_PEC_PCI_STK1 0x140 @@ -197,6 +199,8 @@ struct PnvXScomInterfaceClass { #define PNV10_XSCOM_PEC_NEST_BASE 0x3011800 /* index goes downwards ... */ #define PNV10_XSCOM_PEC_NEST_SIZE 0x100 =20 +#define PNV10_XSCOM_PEC_NEST_CPLT_BASE 0x08000000 + #define PNV10_XSCOM_PEC_PCI_BASE 0x8010800 /* index goes upwards ... */ #define PNV10_XSCOM_PEC_PCI_SIZE 0x200 =20 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741702661; cv=none; d=zohomail.com; s=zohoarc; b=NXRCltgt3OFLpvO4wgSLvno7eqixclb2Hi3V8kjI5HiCnP9kLOS2RF160E8BL5l6Tlw1+P6LnKe6/WWlSAmg2YqHnbg1nLMnK4Z5E3L0ovHVdiXVSi9Z0Id0P6TVse+vvBh9N3ihvf1Ai46VrMHaGlZXGSeNaVdsuGKEOGNzcoI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741702661; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kcsPJBP6bO4++1h7GJpYSXw0Uff46Q4C7W6SLg5uEts=; b=YBUlZzA3MpGbZpWMNt91PWaxdAgYRfxny2tlXHWLEhiDpIo8Myn3GQXMFoRiGAil2W1pYeO2COT3+lIiQsxxFkv2uOm8FGMZOk/zJoFZHsZ/1WeCNIoX+LVJN+RpPdxiD4uz2OnrjsZ82qgitCE3fRn5/LtQMn0qx8A+ZyZH/Uc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741702661174157.80707809496948; Tue, 11 Mar 2025 07:17:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCd-0001sZ-TF; Tue, 11 Mar 2025 08:59:24 -0400 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 1trzCO-0001Qi-Rq; Tue, 11 Mar 2025 08:59:09 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCH-0007s7-Iz; Tue, 11 Mar 2025 08:59:06 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-2fa8ada6662so11364432a91.1; Tue, 11 Mar 2025 05:58:59 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.58.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:58:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697938; x=1742302738; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kcsPJBP6bO4++1h7GJpYSXw0Uff46Q4C7W6SLg5uEts=; b=cPfl47h3QH/D3Lr5jxmwwecgMvdnWqXuI0hfV2dBtjft6yLaSCS3PwJL+9Hn168/tw JzuUaEGt10cBNecVZpQllBcdcDVYL4/YO+st4q2+SQZ66mhcQJgoOLg4T5TMvu8hAyJC 0ro3eHlxTeuqdVqZam7PvsWRg1O2Xkz+taFfdK5uYn6Vf/EMfsxuUPmKZhY3kO9OEc3q KVx605FjTGjHSG1XjJme7lL1H2S+8R5Rcm2syTthefF4qRpNbXgljRKf1zGOHkXCWj0D 7gtzH0Ea+loX6AcjuvV0GfFeK0bN4e3xk6mDPKTC5u5KyXuKTYsUkBO4NGnNEsq6kQcn HuOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697938; x=1742302738; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kcsPJBP6bO4++1h7GJpYSXw0Uff46Q4C7W6SLg5uEts=; b=wc47OaogXN0H1REW8NeeWOqb768MHaNGXLh3ZBCALHlFDKBYbTt38LKwsrEn8TaNYv U/hP5l3pf5pTGp/e8Yf4JjyNa2A9kqXJtoJwlQiuqbSRnPzhPU1OjHcq90PKW2nDsdQZ UzFRdIjAbQOka/e/0yLIS3PQWdYDMekYBoXbZ5SDOk1zIjJ5y/8dT/LoGK/Nu+zEBy0v mXadyf/W2efgS5Oba0IyE4lASsxLToVz/kfzl0mJLJwGTGjyMcXR8Y6Y1HUVI7J7OERe YPMuc3bhQ/pC/6e56vw8uAwqz1cvMKylIylp+gE7nayctQ5xTkp44d0ve1bMVW14muEc x80Q== X-Forwarded-Encrypted: i=1; AJvYcCXe3wtdbookycgWIHSsKnC2djbLA4dNhRZv+h58SyJ9Ol/T3z1GPk3TMzS1vhr45ZNfx0SptopuHw==@nongnu.org X-Gm-Message-State: AOJu0YxCDd/V2eNS/DbMcXdX2z3MjF3ljeC05AQfQbbOYc3xfxy+4I1h IT0cPiCiiY8EjEdZePoU3NlAwLWGMa7GKT+C4I/zpzMQIx+3mGiKl8lMvw== X-Gm-Gg: ASbGncvkhgQ51l4UlzZoA+EYB9FukBeLrA3381BW6ljpU0tzLJ0a9FFtPunrgNB8HvK 0K0VcjuLggxHLZn7wY/zHZ69LtvmZr7pzEcFViFIyvgOLXU/fAWLideNVC6cYbDmxd8eX5zKQs6 Xbaco3aCGsYBEnhkYal/CupuQ4C8Vio3sUL4fkCa3w5nqi+4Yqcy6RZkDjBvmOZvNNEJ4ksaP2x x0KI3dfpgEqU+/gsOQ3lKTvxQk0jA9xWf/OpUMKQvzRz7nBRKiZNbOuxc+2Ru997MgZef2+0Y59 lk0nVY4syxlYLPKdks9VZhzNbCJW1U1o7CWhmZo6lwpsB40mwF0= X-Google-Smtp-Source: AGHT+IEGGlDAaDwQ0oZiGUGFomsh5DUynMHiKF2q1dA/1Lk9XGFtScknb0Pv6FUuvwx8p4UG4MPh9Q== X-Received: by 2002:a17:90b:3849:b0:2f9:c56b:6ec8 with SMTP id 98e67ed59e1d1-2ff7ce9114dmr26936375a91.10.1741697938308; Tue, 11 Mar 2025 05:58:58 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 07/72] ppc/pnv/homer: Fix OCC registers Date: Tue, 11 Mar 2025 22:57:01 +1000 Message-ID: <20250311125815.903177-8-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741702662495019000 Content-Type: text/plain; charset="utf-8" The HOMER OCC registers seem to have bitrotted and fail for various reasons on powernv8, 9, and 10. The major problems are that POWER8 has the wrong version value and its pstate ordering is incorrect. POWER9/10 have not set the OCC state to active. Non-zero chips are also set to OCC slaves for POWER9/10. Unfortunately skiboot has also bitrotted and requires fixes that are not yet in the bios files to run. With a patched skiboot, before this change, powernv9/10 report: [ 0.262050394,3] OCC: Chip: 0: OCC not active [ 0.262128603,3] OCC: Initialization on all chips did not complete(timed= out) powernv8 reports: [ 0.173572100,3] OCC: Unknown OCC-OPAL interface version. [ 0.173812059,3] OCC: Initialization on all chips did not complete(timed= out) After this patch, all report: [ 0.176815668,5] OCC: All Chip Rdy after 0 ms Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_homer.c | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/hw/ppc/pnv_homer.c b/hw/ppc/pnv_homer.c index a1d83c8149..acd2f7b3a6 100644 --- a/hw/ppc/pnv_homer.c +++ b/hw/ppc/pnv_homer.c @@ -70,21 +70,24 @@ static uint64_t pnv_power8_homer_read(void *opaque, hwa= ddr addr, PnvHomer *homer =3D PNV_HOMER(opaque); =20 switch (addr) { - case PNV8_OCC_PSTATE_VERSION: - case PNV8_OCC_PSTATE_MIN: - case PNV8_OCC_PSTATE_ID_ZERO: - return 0; case PNV8_OCC_PSTATE_VALID: + return 1; case PNV8_OCC_PSTATE_THROTTLE: + return 0; + case PNV8_OCC_PSTATE_VERSION: + return 0x02; + case PNV8_OCC_PSTATE_MIN: + return -2; case PNV8_OCC_PSTATE_NOM: case PNV8_OCC_PSTATE_TURBO: - case PNV8_OCC_PSTATE_ID_ONE: + return -1; + case PNV8_OCC_PSTATE_ULTRA_TURBO: + return 0; + case PNV8_OCC_PSTATE_ID_ZERO: + return 0; case PNV8_OCC_VDD_VOLTAGE_IDENTIFIER: case PNV8_OCC_VCS_VOLTAGE_IDENTIFIER: return 1; - case PNV8_OCC_PSTATE_ULTRA_TURBO: - case PNV8_OCC_PSTATE_ID_TWO: - return 2; case PNV8_OCC_PSTATE_DATA: return 0x1000000000000000; /* P8 frequency for 0, 1, and 2 pstates */ @@ -92,6 +95,10 @@ static uint64_t pnv_power8_homer_read(void *opaque, hwad= dr addr, case PNV8_OCC_PSTATE_ONE_FREQUENCY: case PNV8_OCC_PSTATE_TWO_FREQUENCY: return 3000; + case PNV8_OCC_PSTATE_ID_ONE: + return -1; + case PNV8_OCC_PSTATE_ID_TWO: + return -2; } /* pstate table core max array */ if (core_max_array(homer, addr)) { @@ -192,11 +199,12 @@ static const TypeInfo pnv_homer_power8_type_info =3D { =20 /* P9 Pstate table */ =20 +#define PNV9_OCC_PSTATE_VALID 0xe2000 #define PNV9_OCC_PSTATE_ID_ZERO 0xe2018 #define PNV9_OCC_PSTATE_ID_ONE 0xe2020 #define PNV9_OCC_PSTATE_ID_TWO 0xe2028 #define PNV9_OCC_PSTATE_DATA 0xe2000 -#define PNV9_OCC_PSTATE_DATA_AREA 0xe2008 +#define PNV9_OCC_PSTATE_MINOR_VERSION 0xe2008 #define PNV9_OCC_PSTATE_MIN 0xe2003 #define PNV9_OCC_PSTATE_NOM 0xe2004 #define PNV9_OCC_PSTATE_TURBO 0xe2005 @@ -211,7 +219,7 @@ static const TypeInfo pnv_homer_power8_type_info =3D { #define PNV9_OCC_PSTATE_TWO_FREQUENCY 0xe202c #define PNV9_OCC_ROLE_MASTER_OR_SLAVE 0xe2002 #define PNV9_CORE_MAX_BASE 0xe2819 - +#define PNV9_DYNAMIC_DATA_STATE 0xe2b80 =20 static uint64_t pnv_power9_homer_read(void *opaque, hwaddr addr, unsigned size) @@ -219,11 +227,17 @@ static uint64_t pnv_power9_homer_read(void *opaque, h= waddr addr, PnvHomer *homer =3D PNV_HOMER(opaque); =20 switch (addr) { + case PNV9_OCC_PSTATE_VALID: + return 1; case PNV9_OCC_MAX_PSTATE_ULTRA_TURBO: case PNV9_OCC_PSTATE_ID_ZERO: return 0; - case PNV9_OCC_PSTATE_DATA: case PNV9_OCC_ROLE_MASTER_OR_SLAVE: + if (homer->chip->chip_id =3D=3D 0) { + return 0x1; /* master */ + } else { + return 0x0; /* slave */ + } case PNV9_OCC_PSTATE_NOM: case PNV9_OCC_PSTATE_TURBO: case PNV9_OCC_PSTATE_ID_ONE: @@ -241,10 +255,13 @@ static uint64_t pnv_power9_homer_read(void *opaque, h= waddr addr, return 3000; case PNV9_OCC_PSTATE_MAJOR_VERSION: return 0x90; + case PNV9_OCC_PSTATE_MINOR_VERSION: + return 0x01; case PNV9_CHIP_HOMER_BASE: - case PNV9_OCC_PSTATE_DATA_AREA: case PNV9_CHIP_HOMER_IMAGE_POINTER: return 0x1000000000000000; + case PNV9_DYNAMIC_DATA_STATE: + return 0x03; /* active */ } /* pstate table core max array */ if (core_max_array(homer, addr)) { --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698003; cv=none; d=zohomail.com; s=zohoarc; b=dr65PzU6RYRd7chcNMtXSxbu7wZAmtgJx71rjIlHf/DZS0otSCUZb+7NN6bzmQBIvT2GybAf00o6wCeqWW8+RtzAxDQ4CGFGaLGdNTJL0UQucNjQ+OpmGFmr1hHZTiNUAPWDvG1Inh2hU88NIBYDnzjswZzfNS2gLiUYFZqiMs0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698003; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wd805KbtUJ3mYr3xoOW61EiyMaIe0guwHYCEOoqrQks=; b=SJnKUdOlV1Y0Nn8ICQUp0KIFS8r2b0yJRgHnZGxcUcpVPEyJu8sRc349+Miz8EoFbPZSk/1w/RH34nM6XNUNlg8U074+aL3v5FBwXJJ/MTK3g5E53Qldo3bvkuEyYfIF8fOGGBAUoo5v7hzdRqBVhUPdk5Qj0YVCGfdPGZiIT5k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698003260282.0414969753182; Tue, 11 Mar 2025 06:00:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCq-0002Pi-6t; Tue, 11 Mar 2025 08:59:36 -0400 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 1trzCL-0001Mh-OX; Tue, 11 Mar 2025 08:59:06 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCJ-0007sK-SE; Tue, 11 Mar 2025 08:59:05 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-2fee4d9c2efso9000099a91.3; Tue, 11 Mar 2025 05:59:01 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.58.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697941; x=1742302741; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wd805KbtUJ3mYr3xoOW61EiyMaIe0guwHYCEOoqrQks=; b=GnYCc38CSjKlarRQLV1TNAiTKtvke5qo8gOewPazeRxH34A3GmTNIz+2wcSMGPvWIl GzGORteQEAMhfvjMn3axJd/U/I6+3DQ0vRKhOltK6sXSvWnOY009EqdUuIrM+pqEuIVG Mh63RXs9V6re68UWMddrXtRj4K7qkmcvTFMB55HIjoSJlVf9eOys7quE92upAvF40UOi vNJCJdH+1s3Lcs6j7bziRO0Lvx3AelAtovQqb/mhJ7kfbsE5mbSeE4xL8Qp16RJw4qIP LH8jR+vtaT9OKuBDiuRFrXR+QEEwtpkgsrGoMt/OpfM2DbD9qppKGp3DWYDD8Hork9lU XUyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697941; x=1742302741; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wd805KbtUJ3mYr3xoOW61EiyMaIe0guwHYCEOoqrQks=; b=s30YdnmHh2xnO4iwBOahJVfmLf0YN8RZnGyNqUZUuIqUZCBbkz/iLsG3qQ14L43W4N z7RGON3L60elwiL6Eq/0G8Sm8X3KX6b1XALyG6JbweIthmnZF8DRYisA/CRzIcQLhc5I /DSjHucdMcKyCqDnrbiYLpTY99iknnt3wNGYGBVfA/Hjk3VES1lTws4PqDtxVY8oC0si dq5o4YJIDK72qIet3SpUa/1ZQQvaSU+IgfdVZC5X5pHJBLdnIR3pOgbKLFy4gSM5Q0YD 8AdA2zIqmdEGyNJ74w8nU4reO5/feqr5cW3G63TaRH11V92ZDw2SB2nj+x/ohp9vaVZO gFJA== X-Forwarded-Encrypted: i=1; AJvYcCXGcFYwqEel1JPG8OF3TjADk6EXCblhzM5h6RcWNalps141dIi+HFd4ZPaDLOwyJQFMf8fhHg+tpA==@nongnu.org X-Gm-Message-State: AOJu0Yyhpggy2qFL+2hwlrW9U8O9HuNn5ikxLgdBHGXZG4ErBWgUM9y2 qzOf1zBZB3eWF8ieHYfntWp73g/ko4mA0lPOtnevDKn/42kMhmISMAst6A== X-Gm-Gg: ASbGncv5AcmUyeZClA3+/M1ud0oAegKGZYCu8/uSCXDOoX3J4KNguW4H+z9QOgDREio oSoEtBKgJN9BQn9eoKs2UhS8lZYBBi2KgPt94V9y88BCU0ea26NYU2kzn1gVDiXCpZo+pVK/lQ7 2jVuxQnDIzbLxirZ5mE13N9imMNMRDjDe2ss00ylWLitfLCptkV2nN9fYBJMvYTdG134t5ar/KS R15DHBunQ16xLbDLiYk4uTntwH3OR/tmxJoT/wbqcRiarCEZNDwspMroDY6OC7a3NeoR9ulqVGJ D3fHn3PqsK9h6ILvBRGRgBVNJe4B/KdMYN8ERQsxjt0cGcctntw= X-Google-Smtp-Source: AGHT+IEZ87898TFY5TjRDkDsFQrCZwnHYHK+prYoGxg8reddGGRazTKXy94Ck5ywDrp6T5iCmjCilQ== X-Received: by 2002:a17:90b:2fc7:b0:2ee:693e:ed7a with SMTP id 98e67ed59e1d1-2ff7cf2b591mr26976434a91.35.1741697940643; Tue, 11 Mar 2025 05:59:00 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 08/72] ppc/pnv/homer: Make dummy reads return 0 Date: Tue, 11 Mar 2025 22:57:02 +1000 Message-ID: <20250311125815.903177-9-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698006159019100 Content-Type: text/plain; charset="utf-8" HOMER memory implements some dummy registers that return a nonsense value to satisfy skiboot accesses caused by "SLW" init and register save/restore programming that has never worked under QEMU: [ 0.265000943,3] SLW: Failed to set HRMOR for CPU 0,RC=3D0x1 [ 0.265356988,3] Disabling deep stop states To simplify a later change to implement HOMER as a RAM area, make these return zero, which has the same result. Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_homer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/ppc/pnv_homer.c b/hw/ppc/pnv_homer.c index acd2f7b3a6..75b0ee7964 100644 --- a/hw/ppc/pnv_homer.c +++ b/hw/ppc/pnv_homer.c @@ -89,7 +89,7 @@ static uint64_t pnv_power8_homer_read(void *opaque, hwadd= r addr, case PNV8_OCC_VCS_VOLTAGE_IDENTIFIER: return 1; case PNV8_OCC_PSTATE_DATA: - return 0x1000000000000000; + return 0; /* P8 frequency for 0, 1, and 2 pstates */ case PNV8_OCC_PSTATE_ZERO_FREQUENCY: case PNV8_OCC_PSTATE_ONE_FREQUENCY: @@ -259,7 +259,7 @@ static uint64_t pnv_power9_homer_read(void *opaque, hwa= ddr addr, return 0x01; case PNV9_CHIP_HOMER_BASE: case PNV9_CHIP_HOMER_IMAGE_POINTER: - return 0x1000000000000000; + return 0; case PNV9_DYNAMIC_DATA_STATE: return 0x03; /* active */ } --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698061; cv=none; d=zohomail.com; s=zohoarc; b=fVtvgLyBdqvQbZNFtbJ9f40ShxE3ZZnpFMvwcXU2qioQ33ACf/klyeeS07+ZoKhFFC+ZG7+P/cywzgm5zMyUstQOcLrxtzul+/RfvG8z4LsnFC8+Yw/+eCQ574aAYP5pxwOpoRz6xcyvsesorIdwjeMvBxpOvXT+BvqUCiaMWPw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698061; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YrjQAkubjW9GpsAIIJ1EX4bgybSUalPSDK9qpo5mGhU=; b=h4M8/st59IIAvAaE+WnnluOs/YkSIdPNqigMHq/M/3AW3DsgXoeDY6ZqiZJRVs1gtQ0Pfcn/rD8PbX+eOXOcwB3zWtvga7h7Ne+GIZ0L3TXG8M2fgelGajbAT3FrkS7qYz7scByLP+OIh2gs+ZQPlpB1nPzqX9iaWP+Lr5U+tNI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698061652441.28166721156197; Tue, 11 Mar 2025 06:01:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCY-0001fW-NN; Tue, 11 Mar 2025 08:59:20 -0400 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 1trzCN-0001QA-SL; Tue, 11 Mar 2025 08:59:08 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCL-0007tD-Rc; Tue, 11 Mar 2025 08:59:07 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-2ff797f8f1bso7286529a91.3; Tue, 11 Mar 2025 05:59:04 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697943; x=1742302743; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YrjQAkubjW9GpsAIIJ1EX4bgybSUalPSDK9qpo5mGhU=; b=QTBPxkTZWhuzyaWXpvS21/nIa3/M3RA6HxP7irvR22pMonyeTHljrWkG1GZFojbcqY jn1ZO3+ndBpblkrOchG4oVtUvBcuaUGh1jh/Xi3Efpa3w4LQ60r+W75pVP3Y/cTTBoay D5SHB9OdQbCMX4pX68f3P+qg2GQ7NsYtxjoLM/PraLTAkeQxLISeR8oLOx8tc7NBXvkz CBgq0nUS3IqsrlzINUkJEKm0wyE65W4yZJJms0kdl7np0LdTaoRDb20pv4x2KbfAJG3i myYMJ4FEf/5zM10LKUqCwfx//3FcMCBhFQPwGP5MZhSPvzNGSMpPZwT/3e5frml4KT+r 2w5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697943; x=1742302743; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YrjQAkubjW9GpsAIIJ1EX4bgybSUalPSDK9qpo5mGhU=; b=BH4Vofo4St+8CvwfGd6qUrEEcPXAR4OjJyeRrI5+QtOAGFp+jhEm7tJJY3INXLUneP Qm1p7wobl6srRYguxBRiLr0uN/V4YwqB4WlTZgJ1sxWGQyMQKXgLA/iJa92wAEKI3+Nk p4AUxFqGjw+kZkySwLANWVxOcQ30zo0Et5ocfjKv1RNE+Tm3diYxRSRXaAlVUe7hCe7c SMJ6Lhbm2ENyrORsshuA8vc3a2tIlJUVk0B5xmYLJ75SoKvsRqfcLgvP5sLzsJoaew0R nEgSa0T/P1HrkiyxCGiG5dESE3hJ5qfCxxBT8YiviA0eO1F5gl5AgjDvQUyrbseIrRoR +eaA== X-Forwarded-Encrypted: i=1; AJvYcCUTffL5sF38IYFuYnKKtHvHMiqzN6R2XklqABu87wklmKGYWcdfc94HNTrzaimJAX0d69d6Qlrydw==@nongnu.org X-Gm-Message-State: AOJu0Yxb4iWBpnrmbOE1MWY0RjlzWBllihHOerXvbQqWr5zD4+K65fyi y4ybWK8/roWLMMzm+5cWi/F/9tO+WYA8WiZtUqF1tUoiG8nSKtIjKPW8pw== X-Gm-Gg: ASbGncvbYgQgLd9FEMeB+xwAV2Ag9iRo2XaVwPkfFQqoy+P8SCNCJ0YLIabgV0aWXqd lHvbpwv5U4/Pq244wEy2kGlvoMrultHg1dWg9tKH5ZwkAKHxOPbpKpJd0bXNL3aQZihveKxQxrZ WbPy0xtokbCMqsvo3zc+gHxmq2j/gh+8wc205jVAJnYIV/3sAXj2qIG7IEyp04b5BuqqmJpFbrO j6gXnIOZaYue7l/x57vM/4DmxqsRQtOgoSsvq1sK8NJ0yWkwRVWqSn0Ff9N+4SRC/1RqDD6C94+ Cvt4Of9H0LECrMavFIoWRcLEJ3xl9LdG7Em4J+9E4SK+IMwwF9Q= X-Google-Smtp-Source: AGHT+IGlxVm1OVGiHo8O9YGAo0yMldwiYGsNeGlr5ba15ikp7TBijUHJ9BvvyJJqHqxpAT7ZgRLCag== X-Received: by 2002:a17:90b:180a:b0:2fe:9e6c:add9 with SMTP id 98e67ed59e1d1-300ff105730mr5520279a91.18.1741697943064; Tue, 11 Mar 2025 05:59:03 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 09/72] ppc/pnv/occ: Fix common area sensor offsets Date: Tue, 11 Mar 2025 22:57:03 +1000 Message-ID: <20250311125815.903177-10-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698064266019100 Content-Type: text/plain; charset="utf-8" The commit to fix the OCC common area sensor mappings didn't update the register offsets to match. Before this change, skiboot reports: [ 0.347100086,3] OCC: Chip 0 sensor data invalid Afterward, there is no error and the sensor_groups directory appears under /sys/firmware/opal/. The SLW_IMAGE_BASE address looks like a workaround to intercept firmware memory accesses, but that does not seem to be required now (and would have been broken by the OCC common area region mapping change anyway). So it can be removed. Fixes: 3a1b70b66b5cb4 ("ppc/pnv: Fix OCC common area region mapping") Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_occ.c | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c index 48123ceae1..c6681a035a 100644 --- a/hw/ppc/pnv_occ.c +++ b/hw/ppc/pnv_occ.c @@ -32,22 +32,21 @@ #define OCB_OCI_OCCMISC_OR 0x4022 =20 /* OCC sensors */ -#define OCC_SENSOR_DATA_BLOCK_OFFSET 0x580000 -#define OCC_SENSOR_DATA_VALID 0x580001 -#define OCC_SENSOR_DATA_VERSION 0x580002 -#define OCC_SENSOR_DATA_READING_VERSION 0x580004 -#define OCC_SENSOR_DATA_NR_SENSORS 0x580008 -#define OCC_SENSOR_DATA_NAMES_OFFSET 0x580010 -#define OCC_SENSOR_DATA_READING_PING_OFFSET 0x580014 -#define OCC_SENSOR_DATA_READING_PONG_OFFSET 0x58000c -#define OCC_SENSOR_DATA_NAME_LENGTH 0x58000d -#define OCC_SENSOR_NAME_STRUCTURE_TYPE 0x580023 -#define OCC_SENSOR_LOC_CORE 0x580022 -#define OCC_SENSOR_LOC_GPU 0x580020 -#define OCC_SENSOR_TYPE_POWER 0x580003 -#define OCC_SENSOR_NAME 0x580005 -#define HWMON_SENSORS_MASK 0x58001e -#define SLW_IMAGE_BASE 0x0 +#define OCC_SENSOR_DATA_BLOCK_OFFSET 0x0000 +#define OCC_SENSOR_DATA_VALID 0x0001 +#define OCC_SENSOR_DATA_VERSION 0x0002 +#define OCC_SENSOR_DATA_READING_VERSION 0x0004 +#define OCC_SENSOR_DATA_NR_SENSORS 0x0008 +#define OCC_SENSOR_DATA_NAMES_OFFSET 0x0010 +#define OCC_SENSOR_DATA_READING_PING_OFFSET 0x0014 +#define OCC_SENSOR_DATA_READING_PONG_OFFSET 0x000c +#define OCC_SENSOR_DATA_NAME_LENGTH 0x000d +#define OCC_SENSOR_NAME_STRUCTURE_TYPE 0x0023 +#define OCC_SENSOR_LOC_CORE 0x0022 +#define OCC_SENSOR_LOC_GPU 0x0020 +#define OCC_SENSOR_TYPE_POWER 0x0003 +#define OCC_SENSOR_NAME 0x0005 +#define HWMON_SENSORS_MASK 0x001e =20 static void pnv_occ_set_misc(PnvOCC *occ, uint64_t val) { @@ -129,8 +128,6 @@ static uint64_t pnv_occ_common_area_read(void *opaque, = hwaddr addr, case HWMON_SENSORS_MASK: case OCC_SENSOR_LOC_GPU: return 0x8e00; - case SLW_IMAGE_BASE: - return 0x1000000000000000; } return 0; } --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698058; cv=none; d=zohomail.com; s=zohoarc; b=m7CgcMmB1nbsfNlv/8bBpZwTvkcvbuYTX4+IpHL2+4gYlL27rNsLSQ0wS+7SQF3ePe7Gz3C6H/iEljAcQ1LQ3Gdu90WrCOh300FyyqTPnKQco7XMSeXWlgCFpSuh7xKDQXzMMfrIZBRhIzYt0z7FLCr+yks1HyEPDNp3HsmKkEA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698058; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gXU+U1l4Fd7SyqGLYuKX8zb67TDEGdub9abcDAe/vP8=; b=KbIPPs6tg9aeeOEsOvHHR/m1eV3ZfbklWUFOl3aX7wXkAABcR9DqADNsQvNytjnatVeCKi08PHTF75pp/elC/pebXFBtGTH8v+D5doH9LOx+rm5H+hr+ebWz/6jye4m0s+W5wOVaRilSAiKOQ88dc03ZD4mZddgF8/rV6DoAjLE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698058304496.55950579175135; Tue, 11 Mar 2025 06:00:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCa-0001hJ-Na; Tue, 11 Mar 2025 08:59:21 -0400 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 1trzCR-0001Uk-CJ; Tue, 11 Mar 2025 08:59:12 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCO-0007tn-0F; Tue, 11 Mar 2025 08:59:10 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-2fee05829edso10575715a91.3; Tue, 11 Mar 2025 05:59:07 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697946; x=1742302746; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gXU+U1l4Fd7SyqGLYuKX8zb67TDEGdub9abcDAe/vP8=; b=QjiRjuqa/W5PvadWA3sC4hvk5+4d9XVbi/eaGhr/2VuH7Zq9eVfl5MUtCg49TVeIcq wE1VWcKBAGlt/lIBQzy/K3+qObJJGdCbkrV1YwnIoX9neuiSWLObeN42gikQIy2kYWam NRLrJcQmtRiq895kFbDiydnrpWt+bOKQ6DB9WELVHNwP5lG2au6hNvmBlqiZQiOBkznI xTpnnjh/p+kh7ODxERFU6vUq3K2fYFwwwrIX9xJJdJ+fTxxUeQek77NDWA4d8rcLJk86 GQOjLq9wLTG66twik+CtwEBFOPh6Hcw1OulWNBH6YKLBRvgFPfsPTd20g8scPqstq55F PNow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697946; x=1742302746; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gXU+U1l4Fd7SyqGLYuKX8zb67TDEGdub9abcDAe/vP8=; b=fxcxdxKm4zM5zDTkRF9eE26kp2YFC12GQ0KCLjgYlh81e4KM0vmTaIy2o5/sirTmA0 g0jMZsvR3jqrIN1+WpASQVTZ44mybKxU6ysd1u3KPRmyfnHfyo/6RZsoOSvYBchoG9QM dUaAz3hKyC19XAk/AIHVhLXCLAXsELzeoNmmbH4x3xmtF2rJjmW03SNWonVWmS/WAVBy V/Iiq4JcfoemqB9wWudfKU5GNss6apNBdq/UlkAe+yn2B1/AECJaNqKhyzgbOHOI6B8R TcZ/KYAVbimoujFZ7LQuXT5DYy2YtA4fewLjnrWmz423IIy+CWamgWKpIws4afK8k+R+ j5YQ== X-Forwarded-Encrypted: i=1; AJvYcCXBfeHw9/5VCkMdToD2OIRB/XBQp77NIP9rne8P6gIITtdHH09CYSpY1/d76ra863YGlct75f0fxQ==@nongnu.org X-Gm-Message-State: AOJu0YxDQ0L+hn6tO1Xo7xyLVsybRm2B4I6lTP8ezzFSi1IQbC9CIUgY kDQg/+gTsg5O11ZFjUIB96tp986SGWu5BDtELEvxjM27YV4pietKMmX3Qw== X-Gm-Gg: ASbGnctmliHyU6iAyhW1CIMIK4uV0GoTt8QyAgRN/rpgDisYnuh91BH6QXJYh0juZee IWuPHXBg+mVG1nvk0tkH4bWp+hEj00GSbkMM+d9Kle1ZB1n/j2z4aRwbn0fOjWDFiEXFT1wbCCS wrxNIewb4O2eRQkAYGYetN/w7MieGxN+ol/bZ89yk/0yIhuyu79MAlbCnXDlktzR1lfmspDKPhv Lxq3QN/WlBsGLQueoj4jqsvhZKswiC5YLp04fLhUYWpm+/ei0xwPm9Dmb3/ZMnkfIBUCiWAVBcq atIoROxYus+1BHtH3ucBMZFgA7xNgks5M+foaitMklb+7NQ5hms= X-Google-Smtp-Source: AGHT+IG3+xr/2h+PWYIuYl/EieLYhOiHlZl8JyOV3SJZdQfC/ZcRMjL0XcvzQu4nL2m4ia/sIHtmug== X-Received: by 2002:a17:90b:1648:b0:2f9:9ddd:68b9 with SMTP id 98e67ed59e1d1-2ff7cefbc6dmr23162307a91.26.1741697945564; Tue, 11 Mar 2025 05:59:05 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 10/72] ppc/pnv/homer: class-based base and size Date: Tue, 11 Mar 2025 22:57:04 +1000 Message-ID: <20250311125815.903177-11-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698059852019000 Content-Type: text/plain; charset="utf-8" Put HOMER memory region base and size into the class, to allow more code-reuse between different machines in later changes. Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_homer.c | 46 +++++++++++++++++++++++++++----------- include/hw/ppc/pnv.h | 6 ++--- include/hw/ppc/pnv_homer.h | 7 +++++- 3 files changed, 41 insertions(+), 18 deletions(-) diff --git a/hw/ppc/pnv_homer.c b/hw/ppc/pnv_homer.c index 75b0ee7964..67a1fd77ba 100644 --- a/hw/ppc/pnv_homer.c +++ b/hw/ppc/pnv_homer.c @@ -138,16 +138,16 @@ static uint64_t pnv_homer_power8_pba_read(void *opaqu= e, hwaddr addr, unsigned size) { PnvHomer *homer =3D PNV_HOMER(opaque); - PnvChip *chip =3D homer->chip; + PnvHomerClass *hmrc =3D PNV_HOMER_GET_CLASS(homer); uint32_t reg =3D addr >> 3; uint64_t val =3D 0; =20 switch (reg) { case PBA_BAR0: - val =3D PNV_HOMER_BASE(chip); + val =3D homer->base; break; case PBA_BARMASK0: /* P8 homer region mask */ - val =3D (PNV_HOMER_SIZE - 1) & 0x300000; + val =3D (hmrc->size - 1) & 0x300000; break; case PBA_BAR3: /* P8 occ common area */ val =3D PNV_OCC_COMMON_AREA_BASE; @@ -179,13 +179,19 @@ static const MemoryRegionOps pnv_homer_power8_pba_ops= =3D { .endianness =3D DEVICE_BIG_ENDIAN, }; =20 +static hwaddr pnv_homer_power8_get_base(PnvChip *chip) +{ + return PNV_HOMER_BASE(chip); +} + static void pnv_homer_power8_class_init(ObjectClass *klass, void *data) { PnvHomerClass *homer =3D PNV_HOMER_CLASS(klass); =20 + homer->get_base =3D pnv_homer_power8_get_base; + homer->size =3D PNV_HOMER_SIZE; homer->pba_size =3D PNV_XSCOM_PBA_SIZE; homer->pba_ops =3D &pnv_homer_power8_pba_ops; - homer->homer_size =3D PNV_HOMER_SIZE; homer->homer_ops =3D &pnv_power8_homer_ops; homer->core_max_base =3D PNV8_CORE_MAX_BASE; } @@ -291,16 +297,16 @@ static uint64_t pnv_homer_power9_pba_read(void *opaqu= e, hwaddr addr, unsigned size) { PnvHomer *homer =3D PNV_HOMER(opaque); - PnvChip *chip =3D homer->chip; + PnvHomerClass *hmrc =3D PNV_HOMER_GET_CLASS(homer); uint32_t reg =3D addr >> 3; uint64_t val =3D 0; =20 switch (reg) { case PBA_BAR0: - val =3D PNV9_HOMER_BASE(chip); + val =3D homer->base; break; case PBA_BARMASK0: /* P9 homer region mask */ - val =3D (PNV9_HOMER_SIZE - 1) & 0x300000; + val =3D (hmrc->size - 1) & 0x300000; break; case PBA_BAR2: /* P9 occ common area */ val =3D PNV9_OCC_COMMON_AREA_BASE; @@ -332,13 +338,19 @@ static const MemoryRegionOps pnv_homer_power9_pba_ops= =3D { .endianness =3D DEVICE_BIG_ENDIAN, }; =20 +static hwaddr pnv_homer_power9_get_base(PnvChip *chip) +{ + return PNV9_HOMER_BASE(chip); +} + static void pnv_homer_power9_class_init(ObjectClass *klass, void *data) { PnvHomerClass *homer =3D PNV_HOMER_CLASS(klass); =20 + homer->get_base =3D pnv_homer_power9_get_base; + homer->size =3D PNV_HOMER_SIZE; homer->pba_size =3D PNV9_XSCOM_PBA_SIZE; homer->pba_ops =3D &pnv_homer_power9_pba_ops; - homer->homer_size =3D PNV9_HOMER_SIZE; homer->homer_ops =3D &pnv_power9_homer_ops; homer->core_max_base =3D PNV9_CORE_MAX_BASE; } @@ -354,16 +366,16 @@ static uint64_t pnv_homer_power10_pba_read(void *opaq= ue, hwaddr addr, unsigned size) { PnvHomer *homer =3D PNV_HOMER(opaque); - PnvChip *chip =3D homer->chip; + PnvHomerClass *hmrc =3D PNV_HOMER_GET_CLASS(homer); uint32_t reg =3D addr >> 3; uint64_t val =3D 0; =20 switch (reg) { case PBA_BAR0: - val =3D PNV10_HOMER_BASE(chip); + val =3D homer->base; break; case PBA_BARMASK0: /* P10 homer region mask */ - val =3D (PNV10_HOMER_SIZE - 1) & 0x300000; + val =3D (hmrc->size - 1) & 0x300000; break; case PBA_BAR2: /* P10 occ common area */ val =3D PNV10_OCC_COMMON_AREA_BASE; @@ -395,13 +407,19 @@ static const MemoryRegionOps pnv_homer_power10_pba_op= s =3D { .endianness =3D DEVICE_BIG_ENDIAN, }; =20 +static hwaddr pnv_homer_power10_get_base(PnvChip *chip) +{ + return PNV10_HOMER_BASE(chip); +} + static void pnv_homer_power10_class_init(ObjectClass *klass, void *data) { PnvHomerClass *homer =3D PNV_HOMER_CLASS(klass); =20 + homer->get_base =3D pnv_homer_power10_get_base; + homer->size =3D PNV_HOMER_SIZE; homer->pba_size =3D PNV10_XSCOM_PBA_SIZE; homer->pba_ops =3D &pnv_homer_power10_pba_ops; - homer->homer_size =3D PNV10_HOMER_SIZE; homer->homer_ops =3D &pnv_power9_homer_ops; /* TODO */ homer->core_max_base =3D PNV9_CORE_MAX_BASE; } @@ -424,9 +442,11 @@ static void pnv_homer_realize(DeviceState *dev, Error = **errp) homer, "xscom-pba", hmrc->pba_size); =20 /* homer region */ + homer->base =3D hmrc->get_base(homer->chip); + memory_region_init_io(&homer->regs, OBJECT(dev), hmrc->homer_ops, homer, "homer-main-memory", - hmrc->homer_size); + hmrc->size); } =20 static const Property pnv_homer_properties[] =3D { diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index fcb6699150..d8fca079f2 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -205,9 +205,8 @@ void pnv_bmc_set_pnor(IPMIBmc *bmc, PnvPnor *pnor); #define PNV9_OCC_SENSOR_BASE(chip) (PNV9_OCC_COMMON_AREA_BASE + \ PNV_OCC_SENSOR_DATA_BLOCK_BASE((chip)->chip_id)) =20 -#define PNV9_HOMER_SIZE 0x0000000000400000ull #define PNV9_HOMER_BASE(chip) \ - (0x203ffd800000ull + ((uint64_t)(chip)->chip_id) * PNV9_HOMER_SIZE) + (0x203ffd800000ull + ((uint64_t)(chip)->chip_id) * PNV_HOMER_SIZE) =20 /* * POWER10 MMIO base addresses - 16TB stride per chip @@ -250,8 +249,7 @@ void pnv_bmc_set_pnor(IPMIBmc *bmc, PnvPnor *pnor); #define PNV10_OCC_SENSOR_BASE(chip) (PNV10_OCC_COMMON_AREA_BASE + \ PNV_OCC_SENSOR_DATA_BLOCK_BASE((chip)->chip_id)) =20 -#define PNV10_HOMER_SIZE 0x0000000000400000ull #define PNV10_HOMER_BASE(chip) \ - (0x300ffd800000ll + ((uint64_t)(chip)->chip_id) * PNV10_HOMER_SIZE) + (0x300ffd800000ll + ((uint64_t)(chip)->chip_id) * PNV_HOMER_SIZE) =20 #endif /* PPC_PNV_H */ diff --git a/include/hw/ppc/pnv_homer.h b/include/hw/ppc/pnv_homer.h index b1c5d498dc..5ffc0c97af 100644 --- a/include/hw/ppc/pnv_homer.h +++ b/include/hw/ppc/pnv_homer.h @@ -42,15 +42,20 @@ struct PnvHomer { PnvChip *chip; MemoryRegion pba_regs; MemoryRegion regs; + hwaddr base; }; =20 =20 struct PnvHomerClass { DeviceClass parent_class; =20 + /* Get base address of HOMER memory */ + hwaddr (*get_base)(PnvChip *chip); + /* Size of HOMER memory */ + int size; + int pba_size; const MemoryRegionOps *pba_ops; - int homer_size; const MemoryRegionOps *homer_ops; =20 hwaddr core_max_base; --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698170; cv=none; d=zohomail.com; s=zohoarc; b=aCWl41YXtrCY20D8Hs4TGiJi+ZPmZMZRcseiSbPtGsK3cC9kqweKw4Fze7KknW2eai0zc9/JWPy8Vvy7UDAk73x5qViugYd1ZqefO8RhdM7uamduKEMDN48ikmFgJ2kA2LaHTNTh5anPwJzeLUuB9I77DBYnqxkPHlyoWy/TbEA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698170; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VLC1n3HVZL5UFr7qSjs7PdPNKDKAAkSwrr+MO1MH/MU=; b=SUwFxqR72CzfxrhtRhaYyIjT4+wwgGLP0XvUAYNr9jnE7p2PAbHzc1DCq55p9vi71VYvjYbS4+KdrTCX8UkJh6TUfGlmecKpex1cBGsMtjVvNmfr6ht/HLaOvX1DyjJ1iaj2flRo6k1n0wTLbTLm+ISHZYIMul8iwzcBYhE9t/Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174169817070879.22954655203591; Tue, 11 Mar 2025 06:02:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCv-0002iX-3p; Tue, 11 Mar 2025 08:59:42 -0400 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 1trzCV-0001cG-QP; Tue, 11 Mar 2025 08:59:15 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCT-0007ud-KF; Tue, 11 Mar 2025 08:59:15 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-2fecba90cc3so10436509a91.2; Tue, 11 Mar 2025 05:59:10 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697948; x=1742302748; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VLC1n3HVZL5UFr7qSjs7PdPNKDKAAkSwrr+MO1MH/MU=; b=MCv8mRME+VlXfNIlUkk+VgeJ8WAR9LtZs8zOrTw61HXN7/obSY2AqgAQuHXuJgOAoN dRhxvyAFH7vmAQCWny3Evy2zZmWrTUA+ICzzG8Nakvd4X9Xia4i97FzNaATsdxIGnTo+ 7mt60q1xpUVSjOq4AnaIQVRxk+RChG0lKvVDYtjRlxEwpopr3YuZ2N5EMKdypoaJcmOZ 51tC28k3eKuiEECTmioAFT9RXcyvqaz5c1Mo3O5B/caKpCKRlylBEE93YyEqnBDHhHy1 5a40TU3HHg/TnkNV787saQrsVMOMhUJXliwxF1X+AqAX7XpOBSGQKZvrf60bP6++0nay ZK8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697948; x=1742302748; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VLC1n3HVZL5UFr7qSjs7PdPNKDKAAkSwrr+MO1MH/MU=; b=LvMERcXiphMBumjc/PormHToedyDz9THUkpDBNN5F5RZBQSYyCrfNTu20hRvvwaUo9 MS7WcWYD7ow7aMsXmAAWPfFFys6oLZw3VXVwCSKnhc58zwwHZxQGMvWkM6GWsdIvFOSU kAE+J7+0RTsmgb1nC0Cf3s57ABKlfhYZnE9pB8R9USM72KkizpvO/DsWq6kei9Tv1rol AkYLySyxVBPFQ4YwMMx9qPkk5lpNGzLIh1KQPdYu9CuDlOW1Nl3Ad5adMtMaVzOFsEjt Jpus6DF7WtuzJalR1ObqbUvRJc13EWHquP+eg0QQOCOhSqMCPlXbLQeYLa9kZhuhlI91 Ft1g== X-Forwarded-Encrypted: i=1; AJvYcCUwpNyk31GEOJMnMZ10uqaHPeo18qPbHmhj9I+WLjcy0Ytvu58yNGeNdzx8Q8uGrRHQSeHbnbmvYA==@nongnu.org X-Gm-Message-State: AOJu0YyOD2a7F/pJnxbGXIhHOpG+WwmNkHCUVqMFxDDgfwg8gKuSaaeG 6OUuLeADwJc5BqifuZHTFBBYKCZDttuu20iQMexY/vk8LvcgJskT7elSDA== X-Gm-Gg: ASbGncvw+/0YK4HzErRo7nag9CM7Ao2zXskfujfqtiLmBkmRV0T4rzdf11r/i/ZLiCc vs1OsX3MZdByIfcWPqqAnQFhMA/p84wXJfHpLMIDd8uMl4wPgqCDcx+zeJYG4AE0fBA0bMG7NZP vJ+6evQY1vnPE8v1Mm266rVxg5R02B9YfdVNgyiUrV+Th9ae54TOMyZadAmajq+Xc1nFnUGGJsq tAW0ZKmD66xJKpibFK8vGARoqJ05yQatGD86hZ+wUDc4Ax71VU67rIxJAZfEcbKLMT0mcsuz3FA ejvnQyU0gwWlVpolKAp+ihzEKNfTdKRAxfk8SIEWZ02i9VLn6pw= X-Google-Smtp-Source: AGHT+IGvY8ozC/uQAizW8zsb53sHUauiNE6F8zgr5Qr3Ie/PuiDWspaTTXP6IdA7QV3HomRrGRzFuw== X-Received: by 2002:a17:90b:3887:b0:2f4:4003:f3ea with SMTP id 98e67ed59e1d1-2ff7cef99c2mr31715649a91.33.1741697947928; Tue, 11 Mar 2025 05:59:07 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 11/72] ppc/pnv/occ: Better document OCCMISC bits Date: Tue, 11 Mar 2025 22:57:05 +1000 Message-ID: <20250311125815.903177-12-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698174558019100 Content-Type: text/plain; charset="utf-8" Use defines for the OCCMISC register bits, and add a comment about the IRQ request bit, which QEMU may not model quite correctly. Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_occ.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c index c6681a035a..5424d87ee9 100644 --- a/hw/ppc/pnv_occ.c +++ b/hw/ppc/pnv_occ.c @@ -30,6 +30,7 @@ #define OCB_OCI_OCCMISC 0x4020 #define OCB_OCI_OCCMISC_AND 0x4021 #define OCB_OCI_OCCMISC_OR 0x4022 +#define OCCMISC_PSI_IRQ PPC_BIT(0) =20 /* OCC sensors */ #define OCC_SENSOR_DATA_BLOCK_OFFSET 0x0000 @@ -50,13 +51,16 @@ =20 static void pnv_occ_set_misc(PnvOCC *occ, uint64_t val) { - bool irq_state; - - val &=3D 0xffff000000000000ull; + val &=3D PPC_BITMASK(0, 18); /* Mask out unimplemented bits */ =20 occ->occmisc =3D val; - irq_state =3D !!(val >> 63); - qemu_set_irq(occ->psi_irq, irq_state); + + /* + * OCCMISC IRQ bit triggers the interrupt on a 0->1 edge, but not clear + * how that is handled in PSI so it is level-triggered here, which is = not + * really correct (but skiboot is okay with it). + */ + qemu_set_irq(occ->psi_irq, !!(val & OCCMISC_PSI_IRQ)); } =20 static uint64_t pnv_occ_power8_xscom_read(void *opaque, hwaddr addr, --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700622; cv=none; d=zohomail.com; s=zohoarc; b=RVBhCTtzJoZNFeE04zS35lUCAeXl55yjPXt6miRrT0LXSItpicroJLP6v5Ha4U1RYQ23NHp8u6yvDU6weRRRthYBjMuoWU1uG5YSRumQF2f0F8gwKAtSDi+m9EHzZwNzDP4ywTeQgu2ZCyUrY52niDNAX8A7xtJx5BUQCX8skPE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700622; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Js3E974HF75tsKX3gwV22ZPIVLOl+mdYAbePvTKZzbs=; b=OUqCWkXfCh9ROtirTBvWugRxoxfEldGN54ySxFa+BrEzSyOr6+p7xOH740TVKIyUeuCPV4Xm5BVlIONNLAsjD9mBf+nJvAw0dI5pWh8jWvYZV56DB8XacGlodSeAQCLeNqFzUprGzc4bbR33e0XCCpWQQfcTRRrQFQLW1Oxvk3k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174170062266516.300714157227844; Tue, 11 Mar 2025 06:43:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCy-00031e-3D; Tue, 11 Mar 2025 08:59:44 -0400 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 1trzCX-0001ew-HI; Tue, 11 Mar 2025 08:59:17 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCT-0007v7-M9; Tue, 11 Mar 2025 08:59:17 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-2ff615a114bso9408877a91.0; Tue, 11 Mar 2025 05:59:12 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697951; x=1742302751; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Js3E974HF75tsKX3gwV22ZPIVLOl+mdYAbePvTKZzbs=; b=FIynth60jp2Y3qbvxj0vxcUoau/xLlaQBXVSZqdv5gEilNytGxNGB7P290zngaqaZd v5dCsu5fWHh+Iq8IEwU3NxAM+P4Rr//b+vRnUpntX4dqezHHVuUDOSA2p2TjaIRlfXPi GhHJf4k2SQUikKFeSfXgyDVb9aEnCeuv37qlCbcV0dvOs5cAiFDLhkH/8exo6XCNGMz1 KbXttPe2QfF/g7rNDLdEngOrSjX5+b90fj5HXQgsF1gxhHFoYc1DGpXBxqd96VujP52y ouxUTW83kz9ld6IkMNOeeR+dBiXM1t57qr0rmYggYf3xbf5vvEY9mr0Hz2zicqjz7iC1 GJMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697951; x=1742302751; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Js3E974HF75tsKX3gwV22ZPIVLOl+mdYAbePvTKZzbs=; b=QNPAKUdfPhkTsc4Ui1oBkqmXPEolSd/2KEk8wJBoObNDgfz4Q886cVJO95UeyKLoWO FAUKQecQI1u7P3fWCQyXKNBWVSUDz+XBiKTvpN5n0D5Y4LoxCXK1oOPXtkbCixPN5qTr HyQkYkx7859x8r5bk7KLrRFgHNSbqJ3dFNVW05vfcNyP+zB/v5ynBRWvPekz5pPUcZD7 AOL1uf6E23Xa6OmbE/Extr/gJMl5TIvENYUZ8X3BFxiUu3G8IlVx7+JnafrBpWIAxYT+ obqTheH9AAEsUcaVvSMpbEsBvnJZZgl0rEhgX1DsONZem/xfA64ScDiH3k3b4nCGV8FD mscg== X-Forwarded-Encrypted: i=1; AJvYcCWInkRtOjWwdy5j8ZsUp6+WBh2Q6GNNOQd9BFWke+ZkX+NsItHf1l3lQx1qajkc9Sh9XTCSJZFLrg==@nongnu.org X-Gm-Message-State: AOJu0YyD+jXnZSCMQ3zQJz4DS05uKswJSDtmOn0r3CnG5Jk3/WwVWYc0 8GwKJAxd4OaXtPN/5JfkDMpvSrWoOVTj71Tm67Rp+QxOr0rRRrGWsnP+9Q== X-Gm-Gg: ASbGncsq0NmMBEEX5LkUJr46eLnGm0fvtpYUEGkv7YcY9mHwREv7Zdja1+A7lzxjhuk t87dcNWPGG6sXOHMSlcjz/0E4yDtGzIC5LNEsULIKUDSI6zaqlS7uA95NPBIvDcsOupH/6oI/uf pkdAsFa90sJJlVljgaSzm6E536jIu72hSqlErpHqLmT5I+Xk5Op6fAKHAK5M9TL4hlgQfZJSTnd 4/LU36kr1REb2ll0EYmrBawUn6daFFGytL2IbQGgFQh0seT8P4MR6u/DYpG6NtlaN2LqTSFY1Q4 yacCuVOBRX+HpALvdVntrMu3dBF9hWZ6L/9pWDRGTtSWQz3RhG4= X-Google-Smtp-Source: AGHT+IG/FVJjYyNBQ2uhg6tLvYW64Pd1z+EWw2ar8cLKBeNhYWyWYyu8m7k8ADaUmG20OYIpgpQ0yA== X-Received: by 2002:a17:90b:1346:b0:2fb:fe21:4841 with SMTP id 98e67ed59e1d1-3010051f3famr5108789a91.8.1741697950517; Tue, 11 Mar 2025 05:59:10 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 12/72] ppc/pnv: Make HOMER memory a RAM region Date: Tue, 11 Mar 2025 22:57:06 +1000 Message-ID: <20250311125815.903177-13-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700624586019100 The HOMER is a region of memory used by host and firmware and microconrollers. It has very little logic by itself, just some BAR registers. Users of this memory should operate on it rather than have HOMER implement them with MMIO registers, which is not the right model. This change switches the implementation of HOMER from MMIO to RAM, and moves the OCC register implementation to in-memory structure accesses performed by the OCC model. This has the downside that access to unimplemented regions of HOMER are no longer flagged. Perhaps that could be done by adding a memory region for HOMER, and ram subregions under that for each implemented part. But for now this takes the simpler approach. Note: This brings some data structure definitions from skiboot, which does not match QEMU coding style but is not changed to make comparisons and updates simpler. Signed-off-by: Nicholas Piggin --- hw/ppc/pnv.c | 89 ++++---- hw/ppc/pnv_homer.c | 203 +---------------- hw/ppc/pnv_occ.c | 434 ++++++++++++++++++++++++++++++++++++- include/hw/ppc/pnv_homer.h | 5 +- include/hw/ppc/pnv_occ.h | 6 + roms/SLOF | 2 +- 6 files changed, 495 insertions(+), 244 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 4407b3a1a2..8c0a2d0573 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1555,7 +1555,21 @@ static void pnv_chip_power8_realize(DeviceState *dev= , Error **errp) return; } =20 + /* HOMER (must be created before OCC) */ + object_property_set_link(OBJECT(&chip8->homer), "chip", OBJECT(chip), + &error_abort); + if (!qdev_realize(DEVICE(&chip8->homer), NULL, errp)) { + return; + } + /* Homer Xscom region */ + pnv_xscom_add_subregion(chip, PNV_XSCOM_PBA_BASE, &chip8->homer.pba_re= gs); + /* Homer RAM region */ + memory_region_add_subregion(get_system_memory(), chip8->homer.base, + &chip8->homer.mem); + /* Create the simplified OCC model */ + object_property_set_link(OBJECT(&chip8->occ), "homer", + OBJECT(&chip8->homer), &error_abort); if (!qdev_realize(DEVICE(&chip8->occ), NULL, errp)) { return; } @@ -1567,19 +1581,6 @@ static void pnv_chip_power8_realize(DeviceState *dev= , Error **errp) memory_region_add_subregion(get_system_memory(), PNV_OCC_SENSOR_BASE(c= hip), &chip8->occ.sram_regs); =20 - /* HOMER */ - object_property_set_link(OBJECT(&chip8->homer), "chip", OBJECT(chip), - &error_abort); - if (!qdev_realize(DEVICE(&chip8->homer), NULL, errp)) { - return; - } - /* Homer Xscom region */ - pnv_xscom_add_subregion(chip, PNV_XSCOM_PBA_BASE, &chip8->homer.pba_re= gs); - - /* Homer mmio region */ - memory_region_add_subregion(get_system_memory(), PNV_HOMER_BASE(chip), - &chip8->homer.regs); - /* PHB controllers */ for (i =3D 0; i < chip8->num_phbs; i++) { PnvPHB *phb =3D chip8->phbs[i]; @@ -1863,18 +1864,6 @@ static void pnv_chip_power9_realize(DeviceState *dev= , Error **errp) pnv_xscom_add_subregion(chip, PNV9_XSCOM_CHIPTOD_BASE, &chip9->chiptod.xscom_regs); =20 - /* Create the simplified OCC model */ - if (!qdev_realize(DEVICE(&chip9->occ), NULL, errp)) { - return; - } - pnv_xscom_add_subregion(chip, PNV9_XSCOM_OCC_BASE, &chip9->occ.xscom_r= egs); - qdev_connect_gpio_out(DEVICE(&chip9->occ), 0, qdev_get_gpio_in( - DEVICE(psi9), PSIHB9_IRQ_OCC)); - - /* OCC SRAM model */ - memory_region_add_subregion(get_system_memory(), PNV9_OCC_SENSOR_BASE(= chip), - &chip9->occ.sram_regs); - /* SBE */ if (!qdev_realize(DEVICE(&chip9->sbe), NULL, errp)) { return; @@ -1886,7 +1875,7 @@ static void pnv_chip_power9_realize(DeviceState *dev,= Error **errp) qdev_connect_gpio_out(DEVICE(&chip9->sbe), 0, qdev_get_gpio_in( DEVICE(psi9), PSIHB9_IRQ_PSU)); =20 - /* HOMER */ + /* HOMER (must be created before OCC) */ object_property_set_link(OBJECT(&chip9->homer), "chip", OBJECT(chip), &error_abort); if (!qdev_realize(DEVICE(&chip9->homer), NULL, errp)) { @@ -1894,10 +1883,23 @@ static void pnv_chip_power9_realize(DeviceState *de= v, Error **errp) } /* Homer Xscom region */ pnv_xscom_add_subregion(chip, PNV9_XSCOM_PBA_BASE, &chip9->homer.pba_r= egs); + /* Homer RAM region */ + memory_region_add_subregion(get_system_memory(), chip9->homer.base, + &chip9->homer.mem); =20 - /* Homer mmio region */ - memory_region_add_subregion(get_system_memory(), PNV9_HOMER_BASE(chip), - &chip9->homer.regs); + /* Create the simplified OCC model */ + object_property_set_link(OBJECT(&chip9->occ), "homer", + OBJECT(&chip9->homer), &error_abort); + if (!qdev_realize(DEVICE(&chip9->occ), NULL, errp)) { + return; + } + pnv_xscom_add_subregion(chip, PNV9_XSCOM_OCC_BASE, &chip9->occ.xscom_r= egs); + qdev_connect_gpio_out(DEVICE(&chip9->occ), 0, qdev_get_gpio_in( + DEVICE(psi9), PSIHB9_IRQ_OCC)); + + /* OCC SRAM model */ + memory_region_add_subregion(get_system_memory(), PNV9_OCC_SENSOR_BASE(= chip), + &chip9->occ.sram_regs); =20 /* PEC PHBs */ pnv_chip_power9_pec_realize(chip, &local_err); @@ -2144,7 +2146,22 @@ static void pnv_chip_power10_realize(DeviceState *de= v, Error **errp) pnv_xscom_add_subregion(chip, PNV10_XSCOM_CHIPTOD_BASE, &chip10->chiptod.xscom_regs); =20 + /* HOMER (must be created before OCC) */ + object_property_set_link(OBJECT(&chip10->homer), "chip", OBJECT(chip), + &error_abort); + if (!qdev_realize(DEVICE(&chip10->homer), NULL, errp)) { + return; + } + /* Homer Xscom region */ + pnv_xscom_add_subregion(chip, PNV10_XSCOM_PBA_BASE, + &chip10->homer.pba_regs); + /* Homer RAM region */ + memory_region_add_subregion(get_system_memory(), chip10->homer.base, + &chip10->homer.mem); + /* Create the simplified OCC model */ + object_property_set_link(OBJECT(&chip10->occ), "homer", + OBJECT(&chip10->homer), &error_abort); if (!qdev_realize(DEVICE(&chip10->occ), NULL, errp)) { return; } @@ -2169,20 +2186,6 @@ static void pnv_chip_power10_realize(DeviceState *de= v, Error **errp) qdev_connect_gpio_out(DEVICE(&chip10->sbe), 0, qdev_get_gpio_in( DEVICE(&chip10->psi), PSIHB9_IRQ_PSU)); =20 - /* HOMER */ - object_property_set_link(OBJECT(&chip10->homer), "chip", OBJECT(chip), - &error_abort); - if (!qdev_realize(DEVICE(&chip10->homer), NULL, errp)) { - return; - } - /* Homer Xscom region */ - pnv_xscom_add_subregion(chip, PNV10_XSCOM_PBA_BASE, - &chip10->homer.pba_regs); - - /* Homer mmio region */ - memory_region_add_subregion(get_system_memory(), PNV10_HOMER_BASE(chip= ), - &chip10->homer.regs); - /* N1 chiplet */ if (!qdev_realize(DEVICE(&chip10->n1_chiplet), NULL, errp)) { return; diff --git a/hw/ppc/pnv_homer.c b/hw/ppc/pnv_homer.c index 67a1fd77ba..18a53a80c1 100644 --- a/hw/ppc/pnv_homer.c +++ b/hw/ppc/pnv_homer.c @@ -29,101 +29,6 @@ #include "hw/ppc/pnv_homer.h" #include "hw/ppc/pnv_xscom.h" =20 - -static bool core_max_array(PnvHomer *homer, hwaddr addr) -{ - int i; - PnvHomerClass *hmrc =3D PNV_HOMER_GET_CLASS(homer); - - for (i =3D 0; i <=3D homer->chip->nr_cores; i++) { - if (addr =3D=3D (hmrc->core_max_base + i)) { - return true; - } - } - return false; -} - -/* P8 Pstate table */ - -#define PNV8_OCC_PSTATE_VERSION 0x1f8001 -#define PNV8_OCC_PSTATE_MIN 0x1f8003 -#define PNV8_OCC_PSTATE_VALID 0x1f8000 -#define PNV8_OCC_PSTATE_THROTTLE 0x1f8002 -#define PNV8_OCC_PSTATE_NOM 0x1f8004 -#define PNV8_OCC_PSTATE_TURBO 0x1f8005 -#define PNV8_OCC_PSTATE_ULTRA_TURBO 0x1f8006 -#define PNV8_OCC_PSTATE_DATA 0x1f8008 -#define PNV8_OCC_PSTATE_ID_ZERO 0x1f8010 -#define PNV8_OCC_PSTATE_ID_ONE 0x1f8018 -#define PNV8_OCC_PSTATE_ID_TWO 0x1f8020 -#define PNV8_OCC_VDD_VOLTAGE_IDENTIFIER 0x1f8012 -#define PNV8_OCC_VCS_VOLTAGE_IDENTIFIER 0x1f8013 -#define PNV8_OCC_PSTATE_ZERO_FREQUENCY 0x1f8014 -#define PNV8_OCC_PSTATE_ONE_FREQUENCY 0x1f801c -#define PNV8_OCC_PSTATE_TWO_FREQUENCY 0x1f8024 -#define PNV8_CORE_MAX_BASE 0x1f8810 - - -static uint64_t pnv_power8_homer_read(void *opaque, hwaddr addr, - unsigned size) -{ - PnvHomer *homer =3D PNV_HOMER(opaque); - - switch (addr) { - case PNV8_OCC_PSTATE_VALID: - return 1; - case PNV8_OCC_PSTATE_THROTTLE: - return 0; - case PNV8_OCC_PSTATE_VERSION: - return 0x02; - case PNV8_OCC_PSTATE_MIN: - return -2; - case PNV8_OCC_PSTATE_NOM: - case PNV8_OCC_PSTATE_TURBO: - return -1; - case PNV8_OCC_PSTATE_ULTRA_TURBO: - return 0; - case PNV8_OCC_PSTATE_ID_ZERO: - return 0; - case PNV8_OCC_VDD_VOLTAGE_IDENTIFIER: - case PNV8_OCC_VCS_VOLTAGE_IDENTIFIER: - return 1; - case PNV8_OCC_PSTATE_DATA: - return 0; - /* P8 frequency for 0, 1, and 2 pstates */ - case PNV8_OCC_PSTATE_ZERO_FREQUENCY: - case PNV8_OCC_PSTATE_ONE_FREQUENCY: - case PNV8_OCC_PSTATE_TWO_FREQUENCY: - return 3000; - case PNV8_OCC_PSTATE_ID_ONE: - return -1; - case PNV8_OCC_PSTATE_ID_TWO: - return -2; - } - /* pstate table core max array */ - if (core_max_array(homer, addr)) { - return 1; - } - return 0; -} - -static void pnv_power8_homer_write(void *opaque, hwaddr addr, - uint64_t val, unsigned size) -{ - /* callback function defined to homer write */ - return; -} - -static const MemoryRegionOps pnv_power8_homer_ops =3D { - .read =3D pnv_power8_homer_read, - .write =3D pnv_power8_homer_write, - .valid.min_access_size =3D 1, - .valid.max_access_size =3D 8, - .impl.min_access_size =3D 1, - .impl.max_access_size =3D 8, - .endianness =3D DEVICE_BIG_ENDIAN, -}; - /* P8 PBA BARs */ #define PBA_BAR0 0x00 #define PBA_BAR1 0x01 @@ -192,8 +97,6 @@ static void pnv_homer_power8_class_init(ObjectClass *kla= ss, void *data) homer->size =3D PNV_HOMER_SIZE; homer->pba_size =3D PNV_XSCOM_PBA_SIZE; homer->pba_ops =3D &pnv_homer_power8_pba_ops; - homer->homer_ops =3D &pnv_power8_homer_ops; - homer->core_max_base =3D PNV8_CORE_MAX_BASE; } =20 static const TypeInfo pnv_homer_power8_type_info =3D { @@ -203,96 +106,6 @@ static const TypeInfo pnv_homer_power8_type_info =3D { .class_init =3D pnv_homer_power8_class_init, }; =20 -/* P9 Pstate table */ - -#define PNV9_OCC_PSTATE_VALID 0xe2000 -#define PNV9_OCC_PSTATE_ID_ZERO 0xe2018 -#define PNV9_OCC_PSTATE_ID_ONE 0xe2020 -#define PNV9_OCC_PSTATE_ID_TWO 0xe2028 -#define PNV9_OCC_PSTATE_DATA 0xe2000 -#define PNV9_OCC_PSTATE_MINOR_VERSION 0xe2008 -#define PNV9_OCC_PSTATE_MIN 0xe2003 -#define PNV9_OCC_PSTATE_NOM 0xe2004 -#define PNV9_OCC_PSTATE_TURBO 0xe2005 -#define PNV9_OCC_PSTATE_ULTRA_TURBO 0xe2818 -#define PNV9_OCC_MAX_PSTATE_ULTRA_TURBO 0xe2006 -#define PNV9_OCC_PSTATE_MAJOR_VERSION 0xe2001 -#define PNV9_OCC_OPAL_RUNTIME_DATA 0xe2b85 -#define PNV9_CHIP_HOMER_IMAGE_POINTER 0x200008 -#define PNV9_CHIP_HOMER_BASE 0x0 -#define PNV9_OCC_PSTATE_ZERO_FREQUENCY 0xe201c -#define PNV9_OCC_PSTATE_ONE_FREQUENCY 0xe2024 -#define PNV9_OCC_PSTATE_TWO_FREQUENCY 0xe202c -#define PNV9_OCC_ROLE_MASTER_OR_SLAVE 0xe2002 -#define PNV9_CORE_MAX_BASE 0xe2819 -#define PNV9_DYNAMIC_DATA_STATE 0xe2b80 - -static uint64_t pnv_power9_homer_read(void *opaque, hwaddr addr, - unsigned size) -{ - PnvHomer *homer =3D PNV_HOMER(opaque); - - switch (addr) { - case PNV9_OCC_PSTATE_VALID: - return 1; - case PNV9_OCC_MAX_PSTATE_ULTRA_TURBO: - case PNV9_OCC_PSTATE_ID_ZERO: - return 0; - case PNV9_OCC_ROLE_MASTER_OR_SLAVE: - if (homer->chip->chip_id =3D=3D 0) { - return 0x1; /* master */ - } else { - return 0x0; /* slave */ - } - case PNV9_OCC_PSTATE_NOM: - case PNV9_OCC_PSTATE_TURBO: - case PNV9_OCC_PSTATE_ID_ONE: - case PNV9_OCC_PSTATE_ULTRA_TURBO: - case PNV9_OCC_OPAL_RUNTIME_DATA: - return 1; - case PNV9_OCC_PSTATE_MIN: - case PNV9_OCC_PSTATE_ID_TWO: - return 2; - - /* 3000 khz frequency for 0, 1, and 2 pstates */ - case PNV9_OCC_PSTATE_ZERO_FREQUENCY: - case PNV9_OCC_PSTATE_ONE_FREQUENCY: - case PNV9_OCC_PSTATE_TWO_FREQUENCY: - return 3000; - case PNV9_OCC_PSTATE_MAJOR_VERSION: - return 0x90; - case PNV9_OCC_PSTATE_MINOR_VERSION: - return 0x01; - case PNV9_CHIP_HOMER_BASE: - case PNV9_CHIP_HOMER_IMAGE_POINTER: - return 0; - case PNV9_DYNAMIC_DATA_STATE: - return 0x03; /* active */ - } - /* pstate table core max array */ - if (core_max_array(homer, addr)) { - return 1; - } - return 0; -} - -static void pnv_power9_homer_write(void *opaque, hwaddr addr, - uint64_t val, unsigned size) -{ - /* callback function defined to homer write */ - return; -} - -static const MemoryRegionOps pnv_power9_homer_ops =3D { - .read =3D pnv_power9_homer_read, - .write =3D pnv_power9_homer_write, - .valid.min_access_size =3D 1, - .valid.max_access_size =3D 8, - .impl.min_access_size =3D 1, - .impl.max_access_size =3D 8, - .endianness =3D DEVICE_BIG_ENDIAN, -}; - static uint64_t pnv_homer_power9_pba_read(void *opaque, hwaddr addr, unsigned size) { @@ -351,8 +164,6 @@ static void pnv_homer_power9_class_init(ObjectClass *kl= ass, void *data) homer->size =3D PNV_HOMER_SIZE; homer->pba_size =3D PNV9_XSCOM_PBA_SIZE; homer->pba_ops =3D &pnv_homer_power9_pba_ops; - homer->homer_ops =3D &pnv_power9_homer_ops; - homer->core_max_base =3D PNV9_CORE_MAX_BASE; } =20 static const TypeInfo pnv_homer_power9_type_info =3D { @@ -420,8 +231,6 @@ static void pnv_homer_power10_class_init(ObjectClass *k= lass, void *data) homer->size =3D PNV_HOMER_SIZE; homer->pba_size =3D PNV10_XSCOM_PBA_SIZE; homer->pba_ops =3D &pnv_homer_power10_pba_ops; - homer->homer_ops =3D &pnv_power9_homer_ops; /* TODO */ - homer->core_max_base =3D PNV9_CORE_MAX_BASE; } =20 static const TypeInfo pnv_homer_power10_type_info =3D { @@ -435,18 +244,22 @@ static void pnv_homer_realize(DeviceState *dev, Error= **errp) { PnvHomer *homer =3D PNV_HOMER(dev); PnvHomerClass *hmrc =3D PNV_HOMER_GET_CLASS(homer); + char homer_str[32]; =20 assert(homer->chip); =20 pnv_xscom_region_init(&homer->pba_regs, OBJECT(dev), hmrc->pba_ops, homer, "xscom-pba", hmrc->pba_size); =20 - /* homer region */ + /* Homer RAM region */ homer->base =3D hmrc->get_base(homer->chip); =20 - memory_region_init_io(&homer->regs, OBJECT(dev), - hmrc->homer_ops, homer, "homer-main-memory", - hmrc->size); + snprintf(homer_str, sizeof(homer_str), "homer-chip%d-memory", + homer->chip->chip_id); + if (!memory_region_init_ram(&homer->mem, OBJECT(homer), + homer_str, hmrc->size, errp)) { + return; + } } =20 static const Property pnv_homer_properties[] =3D { diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c index 5424d87ee9..22b07a415a 100644 --- a/hw/ppc/pnv_occ.c +++ b/hw/ppc/pnv_occ.c @@ -24,9 +24,13 @@ #include "hw/irq.h" #include "hw/qdev-properties.h" #include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_occ.h" =20 +#define P8_HOMER_OPAL_DATA_OFFSET 0x1F8000 +#define P9_HOMER_OPAL_DATA_OFFSET 0x0E2000 + #define OCB_OCI_OCCMISC 0x4020 #define OCB_OCI_OCCMISC_AND 0x4021 #define OCB_OCI_OCCMISC_OR 0x4022 @@ -166,7 +170,11 @@ const MemoryRegionOps pnv_occ_sram_ops =3D { static void pnv_occ_power8_class_init(ObjectClass *klass, void *data) { PnvOCCClass *poc =3D PNV_OCC_CLASS(klass); + DeviceClass *dc =3D DEVICE_CLASS(klass); =20 + dc->desc =3D "PowerNV OCC Controller (POWER8)"; + poc->opal_shared_memory_offset =3D P8_HOMER_OPAL_DATA_OFFSET; + poc->opal_shared_memory_version =3D 0x02; poc->xscom_size =3D PNV_XSCOM_OCC_SIZE; poc->xscom_ops =3D &pnv_occ_power8_xscom_ops; } @@ -239,8 +247,11 @@ static void pnv_occ_power9_class_init(ObjectClass *kla= ss, void *data) DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->desc =3D "PowerNV OCC Controller (POWER9)"; + poc->opal_shared_memory_offset =3D P9_HOMER_OPAL_DATA_OFFSET; + poc->opal_shared_memory_version =3D 0x90; poc->xscom_size =3D PNV9_XSCOM_OCC_SIZE; poc->xscom_ops =3D &pnv_occ_power9_xscom_ops; + assert(!dc->user_creatable); } =20 static const TypeInfo pnv_occ_power9_type_info =3D { @@ -263,10 +274,19 @@ static const TypeInfo pnv_occ_power10_type_info =3D { .class_init =3D pnv_occ_power10_class_init, }; =20 +static bool occ_init_homer_memory(PnvOCC *occ, Error **errp); + static void pnv_occ_realize(DeviceState *dev, Error **errp) { PnvOCC *occ =3D PNV_OCC(dev); PnvOCCClass *poc =3D PNV_OCC_GET_CLASS(occ); + PnvHomer *homer =3D occ->homer; + + assert(homer); + + if (!occ_init_homer_memory(occ, errp)) { + return; + } =20 occ->occmisc =3D 0; =20 @@ -282,12 +302,16 @@ static void pnv_occ_realize(DeviceState *dev, Error *= *errp) qdev_init_gpio_out(dev, &occ->psi_irq, 1); } =20 +static const Property pnv_occ_properties[] =3D { + DEFINE_PROP_LINK("homer", PnvOCC, homer, TYPE_PNV_HOMER, PnvHomer *), +}; + static void pnv_occ_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->realize =3D pnv_occ_realize; - dc->desc =3D "PowerNV OCC Controller"; + device_class_set_props(dc, pnv_occ_properties); dc->user_creatable =3D false; } =20 @@ -309,3 +333,411 @@ static void pnv_occ_register_types(void) } =20 type_init(pnv_occ_register_types); + +/* From skiboot/hw/occ.c with tab to space conversion */ +/* OCC Communication Area for PStates */ + +#define OPAL_DYNAMIC_DATA_OFFSET 0x0B80 +/* relative to HOMER_OPAL_DATA_OFFSET */ + +#define MAX_PSTATES 256 +#define MAX_P8_CORES 12 +#define MAX_P9_CORES 24 +#define MAX_P10_CORES 32 + +#define MAX_OPAL_CMD_DATA_LENGTH 4090 +#define MAX_OCC_RSP_DATA_LENGTH 8698 + +#define P8_PIR_CORE_MASK 0xFFF8 +#define P9_PIR_QUAD_MASK 0xFFF0 +#define P10_PIR_CHIP_MASK 0x0000 +#define FREQ_MAX_IN_DOMAIN 0 +#define FREQ_MOST_RECENTLY_SET 1 + +#define u8 uint8_t +#define s8 int8_t +#define u16 uint16_t +#define s16 int16_t +#define u32 uint32_t +#define s32 int32_t +#define u64 uint64_t +#define s64 int64_t +#define __be16 uint16_t +#define __be32 uint32_t +#define __packed QEMU_PACKED + +/** + * OCC-OPAL Shared Memory Region + * + * Reference document : + * https://github.com/open-power/docs/blob/master/occ/OCC_OpenPwr_FW_Inter= faces.pdf + * + * Supported layout versions: + * - 0x01, 0x02 : P8 + * https://github.com/open-power/occ/blob/master_p8/src/occ/proc/proc_psta= te.h + * + * - 0x90 : P9 + * https://github.com/open-power/occ/blob/master/src/occ_405/proc/proc_pst= ate.h + * In 0x90 the data is separated into :- + * -- Static Data (struct occ_pstate_table): Data is written once by OCC + * -- Dynamic Data (struct occ_dynamic_data): Data is updated at runtime + * + * struct occ_pstate_table - Pstate table layout + * @valid: Indicates if data is valid + * @version: Layout version [Major/Minor] + * @v2.throttle: Reason for limiting the max pstate + * @v9.occ_role: OCC role (Master/Slave) + * @v#.pstate_min: Minimum pstate ever allowed + * @v#.pstate_nom: Nominal pstate + * @v#.pstate_turbo: Maximum turbo pstate + * @v#.pstate_ultra_turbo: Maximum ultra turbo pstate and the maximum + * pstate ever allowed + * @v#.pstates: Pstate-id and frequency list from Pmax to = Pmin + * @v#.pstates.id: Pstate-id + * @v#.pstates.flags: Pstate-flag(reserved) + * @v2.pstates.vdd: Voltage Identifier + * @v2.pstates.vcs: Voltage Identifier + * @v#.pstates.freq_khz: Frequency in KHz + * @v#.core_max[1..N]: Max pstate with N active cores + * @spare/reserved/pad: Unused data + */ +struct occ_pstate_table { + u8 valid; + u8 version; + union __packed { + struct __packed { /* Version 0x01 and 0x02 */ + u8 throttle; + s8 pstate_min; + s8 pstate_nom; + s8 pstate_turbo; + s8 pstate_ultra_turbo; + u8 spare; + u64 reserved; + struct __packed { + s8 id; + u8 flags; + u8 vdd; + u8 vcs; + __be32 freq_khz; + } pstates[MAX_PSTATES]; + s8 core_max[MAX_P8_CORES]; + u8 pad[100]; + } v2; + struct __packed { /* Version 0x90 */ + u8 occ_role; + u8 pstate_min; + u8 pstate_nom; + u8 pstate_turbo; + u8 pstate_ultra_turbo; + u8 spare; + u64 reserved1; + u64 reserved2; + struct __packed { + u8 id; + u8 flags; + u16 reserved; + __be32 freq_khz; + } pstates[MAX_PSTATES]; + u8 core_max[MAX_P9_CORES]; + u8 pad[56]; + } v9; + struct __packed { /* Version 0xA0 */ + u8 occ_role; + u8 pstate_min; + u8 pstate_fixed_freq; + u8 pstate_base; + u8 pstate_ultra_turbo; + u8 pstate_fmax; + u8 minor; + u8 pstate_bottom_throttle; + u8 spare; + u8 spare1; + u32 reserved_32; + u64 reserved_64; + struct __packed { + u8 id; + u8 valid; + u16 reserved; + __be32 freq_khz; + } pstates[MAX_PSTATES]; + u8 core_max[MAX_P10_CORES]; + u8 pad[48]; + } v10; + }; +} __packed; + +/** + * OPAL-OCC Command Response Interface + * + * OPAL-OCC Command Buffer + * + * --------------------------------------------------------------------- + * | OPAL | Cmd | OPAL | | Cmd Data | Cmd Data | OPAL | + * | Cmd | Request | OCC | Reserved | Length | Length | Cmd | + * | Flags | ID | Cmd | | (MSB) | (LSB) | Data... | + * --------------------------------------------------------------------- + * | =E2=80=A6.OPAL Command Data up to max of Cmd Data Length 4090 bytes = | + * | | + * --------------------------------------------------------------------- + * + * OPAL Command Flag + * + * ----------------------------------------------------------------- + * | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | + * | (msb) | | | | | | | (lsb) | + * ----------------------------------------------------------------- + * |Cmd | | | | | | | | + * |Ready | | | | | | | | + * ----------------------------------------------------------------- + * + * struct opal_command_buffer - Defines the layout of OPAL command buffer + * @flag: Provides general status of the command + * @request_id: Token to identify request + * @cmd: Command sent + * @data_size: Command data length + * @data: Command specific data + * @spare: Unused byte + */ +struct opal_command_buffer { + u8 flag; + u8 request_id; + u8 cmd; + u8 spare; + __be16 data_size; + u8 data[MAX_OPAL_CMD_DATA_LENGTH]; +} __packed; + +/** + * OPAL-OCC Response Buffer + * + * --------------------------------------------------------------------- + * | OCC | Cmd | OPAL | Response | Rsp Data | Rsp Data | OPAL | + * | Rsp | Request | OCC | Status | Length | Length | Rsp | + * | Flags | ID | Cmd | | (MSB) | (LSB) | Data... | + * --------------------------------------------------------------------- + * | =E2=80=A6.OPAL Response Data up to max of Rsp Data Length 8698 bytes= | + * | | + * --------------------------------------------------------------------- + * + * OCC Response Flag + * + * ----------------------------------------------------------------- + * | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | + * | (msb) | | | | | | | (lsb) | + * ----------------------------------------------------------------- + * | | | | | | |OCC in | Rsp | + * | | | | | | |progress|Ready | + * ----------------------------------------------------------------- + * + * struct occ_response_buffer - Defines the layout of OCC response buffer + * @flag: Provides general status of the response + * @request_id: Token to identify request + * @cmd: Command requested + * @status: Indicates success/failure status of + * the command + * @data_size: Response data length + * @data: Response specific data + */ +struct occ_response_buffer { + u8 flag; + u8 request_id; + u8 cmd; + u8 status; + __be16 data_size; + u8 data[MAX_OCC_RSP_DATA_LENGTH]; +} __packed; + +/** + * OCC-OPAL Shared Memory Interface Dynamic Data Vx90 + * + * struct occ_dynamic_data - Contains runtime attributes + * @occ_state: Current state of OCC + * @major_version: Major version number + * @minor_version: Minor version number (backwards compatible) + * Version 1 indicates GPU presence populated + * @gpus_present: Bitmask of GPUs present (on systems where = GPU + * presence is detected through APSS) + * @cpu_throttle: Reason for limiting the max pstate + * @mem_throttle: Reason for throttling memory + * @quick_pwr_drop: Indicates if QPD is asserted + * @pwr_shifting_ratio: Indicates the current percentage of power = to + * take away from the CPU vs GPU when shifting + * power to maintain a power cap. Value of 100 + * means take all power from CPU. + * @pwr_cap_type: Indicates type of power cap in effect + * @hard_min_pwr_cap: Hard minimum system power cap in Watts. + * Guaranteed unless hardware failure + * @max_pwr_cap: Maximum allowed system power cap in Watts + * @cur_pwr_cap: Current system power cap + * @soft_min_pwr_cap: Soft powercap minimum. OCC may or may not = be + * able to maintain this + * @spare/reserved: Unused data + * @cmd: Opal Command Buffer + * @rsp: OCC Response Buffer + */ +struct occ_dynamic_data { + u8 occ_state; + u8 major_version; + u8 minor_version; + u8 gpus_present; + union __packed { + struct __packed { /* Version 0x90 */ + u8 spare1; + } v9; + struct __packed { /* Version 0xA0 */ + u8 wof_enabled; + } v10; + }; + u8 cpu_throttle; + u8 mem_throttle; + u8 quick_pwr_drop; + u8 pwr_shifting_ratio; + u8 pwr_cap_type; + __be16 hard_min_pwr_cap; + __be16 max_pwr_cap; + __be16 cur_pwr_cap; + __be16 soft_min_pwr_cap; + u8 pad[110]; + struct opal_command_buffer cmd; + struct occ_response_buffer rsp; +} __packed; + +enum occ_response_status { + OCC_RSP_SUCCESS =3D 0x00, + OCC_RSP_INVALID_COMMAND =3D 0x11, + OCC_RSP_INVALID_CMD_DATA_LENGTH =3D 0x12, + OCC_RSP_INVALID_DATA =3D 0x13, + OCC_RSP_INTERNAL_ERROR =3D 0x15, +}; + +#define OCC_ROLE_SLAVE 0x00 +#define OCC_ROLE_MASTER 0x01 + +#define OCC_FLAG_RSP_READY 0x01 +#define OCC_FLAG_CMD_IN_PROGRESS 0x02 +#define OPAL_FLAG_CMD_READY 0x80 + +#define PCAP_MAX_POWER_W 100 +#define PCAP_SOFT_MIN_POWER_W 20 +#define PCAP_HARD_MIN_POWER_W 10 + +static bool occ_write_static_data(PnvOCC *occ, + struct occ_pstate_table *static_data, + Error **errp) +{ + PnvOCCClass *poc =3D PNV_OCC_GET_CLASS(occ); + PnvHomer *homer =3D occ->homer; + hwaddr static_addr =3D homer->base + poc->opal_shared_memory_offset; + MemTxResult ret; + + ret =3D address_space_write(&address_space_memory, static_addr, + MEMTXATTRS_UNSPECIFIED, static_data, + sizeof(*static_data)); + if (ret !=3D MEMTX_OK) { + error_setg(errp, "OCC: cannot write OCC-OPAL static data"); + return false; + } + + return true; +} + +static bool occ_write_dynamic_data(PnvOCC *occ, + struct occ_dynamic_data *dynamic_data, + Error **errp) +{ + PnvOCCClass *poc =3D PNV_OCC_GET_CLASS(occ); + PnvHomer *homer =3D occ->homer; + hwaddr static_addr =3D homer->base + poc->opal_shared_memory_offset; + hwaddr dynamic_addr =3D static_addr + OPAL_DYNAMIC_DATA_OFFSET; + MemTxResult ret; + + ret =3D address_space_write(&address_space_memory, dynamic_addr, + MEMTXATTRS_UNSPECIFIED, dynamic_data, + sizeof(*dynamic_data)); + if (ret !=3D MEMTX_OK) { + error_setg(errp, "OCC: cannot write OCC-OPAL dynamic data"); + return false; + } + + return true; +} + +static bool occ_init_homer_memory(PnvOCC *occ, Error **errp) +{ + PnvOCCClass *poc =3D PNV_OCC_GET_CLASS(occ); + PnvHomer *homer =3D occ->homer; + PnvChip *chip =3D homer->chip; + struct occ_pstate_table static_data; + struct occ_dynamic_data dynamic_data; + int i; + + memset(&static_data, 0, sizeof(static_data)); + static_data.valid =3D 1; + static_data.version =3D poc->opal_shared_memory_version; + switch (poc->opal_shared_memory_version) { + case 0x02: + static_data.v2.throttle =3D 0; + static_data.v2.pstate_min =3D -2; + static_data.v2.pstate_nom =3D -1; + static_data.v2.pstate_turbo =3D -1; + static_data.v2.pstate_ultra_turbo =3D 0; + static_data.v2.pstates[0].id =3D 0; + static_data.v2.pstates[1].freq_khz =3D cpu_to_be32(3000); + static_data.v2.pstates[1].id =3D -1; + static_data.v2.pstates[1].freq_khz =3D cpu_to_be32(3000); + static_data.v2.pstates[2].id =3D -2; + static_data.v2.pstates[2].freq_khz =3D cpu_to_be32(3000); + for (i =3D 0; i < chip->nr_cores; i++) { + static_data.v2.core_max[i] =3D 1; + } + break; + case 0x90: + if (chip->chip_id =3D=3D 0) { + static_data.v9.occ_role =3D OCC_ROLE_MASTER; + } else { + static_data.v9.occ_role =3D OCC_ROLE_SLAVE; + } + static_data.v9.pstate_min =3D 2; + static_data.v9.pstate_nom =3D 1; + static_data.v9.pstate_turbo =3D 1; + static_data.v9.pstate_ultra_turbo =3D 0; + static_data.v9.pstates[0].id =3D 0; + static_data.v9.pstates[0].freq_khz =3D cpu_to_be32(3000); + static_data.v9.pstates[1].id =3D 1; + static_data.v9.pstates[1].freq_khz =3D cpu_to_be32(3000); + static_data.v9.pstates[2].id =3D 2; + static_data.v9.pstates[2].freq_khz =3D cpu_to_be32(3000); + for (i =3D 0; i < chip->nr_cores; i++) { + static_data.v9.core_max[i] =3D 1; + } + break; + default: + g_assert_not_reached(); + } + if (!occ_write_static_data(occ, &static_data, errp)) { + return false; + } + + memset(&dynamic_data, 0, sizeof(dynamic_data)); + dynamic_data.occ_state =3D 0x3; /* active */ + dynamic_data.major_version =3D 0x0; + dynamic_data.hard_min_pwr_cap =3D cpu_to_be16(PCAP_HARD_MIN_POWER_W); + dynamic_data.max_pwr_cap =3D cpu_to_be16(PCAP_MAX_POWER_W); + dynamic_data.cur_pwr_cap =3D cpu_to_be16(PCAP_MAX_POWER_W); + dynamic_data.soft_min_pwr_cap =3D cpu_to_be16(PCAP_SOFT_MIN_POWER_W); + switch (poc->opal_shared_memory_version) { + case 0x90: + dynamic_data.minor_version =3D 0x1; + break; + case 0x02: + dynamic_data.minor_version =3D 0x0; + break; + default: + g_assert_not_reached(); + } + if (!occ_write_dynamic_data(occ, &dynamic_data, errp)) { + return false; + } + + return true; +} diff --git a/include/hw/ppc/pnv_homer.h b/include/hw/ppc/pnv_homer.h index 5ffc0c97af..a6f2710fa1 100644 --- a/include/hw/ppc/pnv_homer.h +++ b/include/hw/ppc/pnv_homer.h @@ -41,7 +41,7 @@ struct PnvHomer { =20 PnvChip *chip; MemoryRegion pba_regs; - MemoryRegion regs; + MemoryRegion mem; hwaddr base; }; =20 @@ -56,9 +56,6 @@ struct PnvHomerClass { =20 int pba_size; const MemoryRegionOps *pba_ops; - const MemoryRegionOps *homer_ops; - - hwaddr core_max_base; }; =20 #endif /* PPC_PNV_HOMER_H */ diff --git a/include/hw/ppc/pnv_occ.h b/include/hw/ppc/pnv_occ.h index df321244e3..f994860980 100644 --- a/include/hw/ppc/pnv_occ.h +++ b/include/hw/ppc/pnv_occ.h @@ -46,6 +46,9 @@ struct PnvOCC { =20 qemu_irq psi_irq; =20 + /* OCCs operate on regions of HOMER memory */ + PnvHomer *homer; + MemoryRegion xscom_regs; MemoryRegion sram_regs; }; @@ -53,6 +56,9 @@ struct PnvOCC { struct PnvOCCClass { DeviceClass parent_class; =20 + hwaddr opal_shared_memory_offset; /* offset in HOMER */ + uint8_t opal_shared_memory_version; + int xscom_size; const MemoryRegionOps *xscom_ops; }; diff --git a/roms/SLOF b/roms/SLOF index ee03aec2c1..3a259df244 160000 --- a/roms/SLOF +++ b/roms/SLOF @@ -1 +1 @@ -Subproject commit ee03aec2c106a699aaddd2d3dd52cbd7b7e8d544 +Subproject commit 3a259df2449fc4a4e43ab5f33f0b2c66484b4bc3 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741701080; cv=none; d=zohomail.com; s=zohoarc; b=Mkga9mJfYSQkxZh8E7M2nnk4y9MAEPsGckupIBTvr2WHUMxeA9f31mug6xaFNSTOxwIPLCRlnoW2kW7X/XXAdJwQRUtZ5A5S+k/I6uUEQYvhXuyNqiFqG839rQMLsPVcO08fIZZvwWWpEKnKNgEQsM6FfTmuPU308GQHBKNKnYo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741701080; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GVJ4vU5t7PULY28jxp4RCE9dE62+yidxPTM11DiQEfw=; b=VRFCRQYrGwyu69OUsaBQPbZwnP1iVeJTOh/g89pkHRfZM13e/euyf6hnF6M5Qwlj1xGtjEXv++LcczkwxYep+gB1ZgxLGHt889uUNc0bI5hjBwcffbH+XOs/Uai7W+Ft1XZDJyIEQwRzjeBCHxE41nWMfYPUv6AJmjXBI3t6eOA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741701080798756.4023746997703; Tue, 11 Mar 2025 06:51:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzD1-0003Qw-Cj; Tue, 11 Mar 2025 08:59:47 -0400 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 1trzCa-0001kd-HB; Tue, 11 Mar 2025 08:59:20 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCV-0007vc-9D; Tue, 11 Mar 2025 08:59:20 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-300fefb8e06so1880761a91.0; Tue, 11 Mar 2025 05:59:14 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697953; x=1742302753; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GVJ4vU5t7PULY28jxp4RCE9dE62+yidxPTM11DiQEfw=; b=OTPFDRfXg/X/QZgjMh/pO46kaWz6LsWcSUXvE2kHkuR/T04xow5lYJ/PmOoiPCXd2P KgKQDxeg3scljGV3QiKyv95j5b+AZghJDzqykUd361LE+zNE1R34mjs8Mkx01TNMOHjj MS2FwVCMEOhWBq+dkzyUGjlMMMw7TbbGYxgGkaX0I5tj1ZFrm2JtI5idNb5dlV9Rehrp 9G0i32hbUJgCtmjnZ6+t2clPwwtoh8ptGkL49sMcaA/oqRe7b0Lp3TDXpkOrKWCACHij AlGK2q4HG2gf4Sv/+Ozw9uk6uT5uDfkgkSxmIMW/3jJfLFAnFetumqbymNzU3sMq5HvT Hu/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697953; x=1742302753; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GVJ4vU5t7PULY28jxp4RCE9dE62+yidxPTM11DiQEfw=; b=O0Kmq55zpkJeMsLdLD8gv8H5zbZ4mwXHCj1Fz0pLC2SLcdk/p/smuPYIwDjIHYxoI1 0PmoJZ/8YumLB4r+cGeGGZEkOfKTrfuIOna8R6iFUy/yskKsDZ1BS7eWWsMcaHnsnHET aHkF5acZRJFXA0QfPqIu8Ayk0QHemrFgdLma6RM7VAgaHUayTyDa7JNC0XcWHex9pryi +cg3IqibbPt+MJa3x1hw65I19kQahdM1I0ZBG84yHmSdtaINXl0dFJbzYuN6WeGJ6V1N Ruf18+aK3JMoDSV6AjpA5ZeVaAUCwhEwG1iSkeYYvH7v0BZPmuwAJVraBw8wx0tse62c QiQA== X-Forwarded-Encrypted: i=1; AJvYcCVQzWHnLvz+kTPHINTWzbXR/2i5um/ZGZjAwm4Tv7iGkC2yoP+L52Fm9cL794u7XaTKdpdVy75z2g==@nongnu.org X-Gm-Message-State: AOJu0Yy8L9qbhBrgW+1HY/dj/ZTVzXOqDf+UnmHZ12fSOQxhX8dGEuat GgRT8UQs5Pyd7MVXE4hi8BGZk7+9q5TKSJEvaUFS71jWl8YezoHAcDBJTg== X-Gm-Gg: ASbGncs2SnXLw8JmcP0HOM2T7eYAyt/iPozcdDbYl/7NEdtRyjYIZdSUj+HGEsOVRxN DU32o52VBSTeFuC6qgO8wfBp064LHC1WDBkSRiKQSyx59xAsjCO2D/j06rMaFTEHCNBueJHZ0S/ zrk9zZyaE29416a2rAsNdtTITqwVVfCLzZr35j71vBwi2BA+RKkSE6wukG7PFDt5HZyRSIQNrYl D08abWkHFKH3aE3i3D4HR/aqoZrunMHvm6C/0K6JUgNfhRH7VC6uJEHnTov2a7fITqrg1SXi8xq BKVEY4TYgl+uR+/gV5i6yNfcWgGZSeGnTGvz0NyuX9AchfgIa38= X-Google-Smtp-Source: AGHT+IGNLQJINQzXwusTn4U7ICPr6ESQca+Ph66QOCbxdJo5yFgbbe2xy2CYoQT0eo6NkqhkohgwRQ== X-Received: by 2002:a17:90b:4c51:b0:2f9:c139:b61f with SMTP id 98e67ed59e1d1-300ff0ca64cmr5142714a91.14.1741697952924; Tue, 11 Mar 2025 05:59:12 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 13/72] ppc/pnv/occ: Update pstate frequency tables Date: Tue, 11 Mar 2025 22:57:07 +1000 Message-ID: <20250311125815.903177-14-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741701083520019100 Content-Type: text/plain; charset="utf-8" OCC pstate frequencies are in kHz, so the OCC data was 3-4MHz. Upgrade to GHz. Make each pstate have a different frequency. Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_occ.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c index 22b07a415a..19ccfe1bbf 100644 --- a/hw/ppc/pnv_occ.c +++ b/hw/ppc/pnv_occ.c @@ -682,11 +682,11 @@ static bool occ_init_homer_memory(PnvOCC *occ, Error = **errp) static_data.v2.pstate_turbo =3D -1; static_data.v2.pstate_ultra_turbo =3D 0; static_data.v2.pstates[0].id =3D 0; - static_data.v2.pstates[1].freq_khz =3D cpu_to_be32(3000); + static_data.v2.pstates[1].freq_khz =3D cpu_to_be32(4000000); static_data.v2.pstates[1].id =3D -1; - static_data.v2.pstates[1].freq_khz =3D cpu_to_be32(3000); + static_data.v2.pstates[1].freq_khz =3D cpu_to_be32(3000000); static_data.v2.pstates[2].id =3D -2; - static_data.v2.pstates[2].freq_khz =3D cpu_to_be32(3000); + static_data.v2.pstates[2].freq_khz =3D cpu_to_be32(2000000); for (i =3D 0; i < chip->nr_cores; i++) { static_data.v2.core_max[i] =3D 1; } @@ -702,11 +702,11 @@ static bool occ_init_homer_memory(PnvOCC *occ, Error = **errp) static_data.v9.pstate_turbo =3D 1; static_data.v9.pstate_ultra_turbo =3D 0; static_data.v9.pstates[0].id =3D 0; - static_data.v9.pstates[0].freq_khz =3D cpu_to_be32(3000); + static_data.v9.pstates[0].freq_khz =3D cpu_to_be32(4000000); static_data.v9.pstates[1].id =3D 1; - static_data.v9.pstates[1].freq_khz =3D cpu_to_be32(3000); + static_data.v9.pstates[1].freq_khz =3D cpu_to_be32(3000000); static_data.v9.pstates[2].id =3D 2; - static_data.v9.pstates[2].freq_khz =3D cpu_to_be32(3000); + static_data.v9.pstates[2].freq_khz =3D cpu_to_be32(2000000); for (i =3D 0; i < chip->nr_cores; i++) { static_data.v9.core_max[i] =3D 1; } --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698039; cv=none; d=zohomail.com; s=zohoarc; b=BukeZ5+WHvOszzvPDGw3NsoQBEC97oUz0iK95DBgpP2xCrt9fAP01es0jMFZqZgZKjBu1jCgBfK7go3puVU9/VuDz8RRZw7p/4Y/GhM5hvOpcxRwyYdksqRnzb4lD0B16oFL9Bae96Y46/W/CxbG1s6QqqrM4egJRroPyLM1/YY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698039; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VqfCGsNGemWHWOkA7UQFNXiZp9CJgWEykoLLRmbbzrQ=; b=NtfEBKp1AWkOqea9jIIgOA4b/8QsCp+5hv95z4DbG1o1QJuTKy/cwGNF8lVaIsApjCN5EZg2VWJyuLnKHvZnOU5vp5p7OcuU5gqk7TFpU12DBOHM82YD0mSK2nlKO5umH8jpL4dtdZq3RYB6r/HNNwfi4EjeZEWVVEoI8MKk9TQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698039455241.0500190252518; Tue, 11 Mar 2025 06:00:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzD4-0003c9-BZ; Tue, 11 Mar 2025 08:59:50 -0400 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 1trzCd-0001rU-Fr; Tue, 11 Mar 2025 08:59:23 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCa-0007w2-CJ; Tue, 11 Mar 2025 08:59:23 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-2ff80290e44so8655680a91.0; Tue, 11 Mar 2025 05:59:16 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697955; x=1742302755; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VqfCGsNGemWHWOkA7UQFNXiZp9CJgWEykoLLRmbbzrQ=; b=Ib5L4qjHqCxonO6i/DOK9BRUS9kf4WALF4m5DGlcXyT2n726aAyVLr1VXqJp+wHmYq /ls3ma9/n8dGKaAx1fPsmYwJpGdqkB5oaECWCs1f1GIzgZus5CXd7FS4KhMrUvlqlhFn wpRJ9P9KfJrrBW7kb6QSRp/ywGRCSEcgUxdW0s/Dyocmvw7AsBzgMgoH3BGG6C9pUP26 fUhSOsMguxpvzSNoF2IIOtTj4BnM8c/tVewubj0lxQmtfAUMg3auczTILVIW5hvWitG4 K+lJG9wLCwF2rJoJ0IWQFqhWxzO4X7FPP/0jkthw4FG5bU2S4H4JtR9KbL5acyS+X/L7 3mlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697955; x=1742302755; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VqfCGsNGemWHWOkA7UQFNXiZp9CJgWEykoLLRmbbzrQ=; b=aC2TI/GBjXQ6++3BIOJG3R3pQLvsECPlYJtzfopCP4QIISubpICRH1VuX9j/7ziap5 VpHgzj5LOVMTqQBUAAKdMzhM90ZVJCsVLMuj2JzBYn72OGQo7OjMsZ+5O/ROO+Ge+WgO UR0Wg8LFcmL+/fEiqtxqv7SO38Ozx6QI2DjleBGIzIM/h62KBT2AZejALa7BeAJOPGcY qfEczqfEoB+tNbutuopz3oviIVr5RLuGAaDisnJa5csd4AHRZ9nujsH39B+cBhy2mrET W/mNqPi/9QvbCPi0v3T9kSXQiUdX6PRgwEtIdMSHisbUOa4UtuG90Gu9ZScuAYpq+L7l hYnw== X-Forwarded-Encrypted: i=1; AJvYcCWlKr+82Wi4HjCg/wn07nXog8xW897eQdQev15PHeq5rCm3YuYDujGhBPpeo8GLmHa9oqBPTsG2/w==@nongnu.org X-Gm-Message-State: AOJu0Yxo50kY+mWoL1t2C2dJXHPy2B4mT3lL5b0iZc8VQjxM8hTyf0FZ MmJi1Ta5LDqQ5dn1ZuC6aUSQtYueOPtLObWrjNCTA4sXXxT1ZRPMJrgdZw== X-Gm-Gg: ASbGncv4m/x/SOkbsj2FvQ6we3QJOkaFKD7tAeHt2gNW73SYe1MMw3K9a3zyB90qY5c /SK2nOt9x0phfNsar2xfvrWgqD3DKEdnyr6RAqWRB0d4+SYqRtH/OsE14xuKJew5PreLDpP4UB4 WvQwp0ehRl/ElDHen7Zpdhfs5Vob02TWIRRD5EIfJBZTVRMiMcYKMm1rkqwKOZW9TMRRNgG+LXh +UxD2xlOf26VUhPTQ65J5/OCnE5Fzn0H1qyb0DVdl4il5/Y1i7Vqryjkl7xpPJnZnBdmWC/5J0V dupk/W/inY0W/JEiLRBIaBVxyECVwZaX++mPGPhzUFbc9oaHe14= X-Google-Smtp-Source: AGHT+IHrvtF1tUwWVcOgMKICqjT5Ligq+yRnaV19JNLa4UiyGXeozI95dqmEq4ApzVgdnX9pbcmOmw== X-Received: by 2002:a17:90b:1b0b:b0:2fc:c262:ef4b with SMTP id 98e67ed59e1d1-2ff7cea9a99mr30654512a91.18.1741697955298; Tue, 11 Mar 2025 05:59:15 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 14/72] ppc/pnv/occ: Add POWER10 OCC-OPAL data format Date: Tue, 11 Mar 2025 22:57:08 +1000 Message-ID: <20250311125815.903177-15-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698040170019100 Content-Type: text/plain; charset="utf-8" Add POWER10 OCC-OPAL data format. POWER10 changes major version and adds a few fields. Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_occ.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c index 19ccfe1bbf..34decb1700 100644 --- a/hw/ppc/pnv_occ.c +++ b/hw/ppc/pnv_occ.c @@ -263,14 +263,20 @@ static const TypeInfo pnv_occ_power9_type_info =3D { =20 static void pnv_occ_power10_class_init(ObjectClass *klass, void *data) { + PnvOCCClass *poc =3D PNV_OCC_CLASS(klass); DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->desc =3D "PowerNV OCC Controller (POWER10)"; + poc->opal_shared_memory_offset =3D P9_HOMER_OPAL_DATA_OFFSET; + poc->opal_shared_memory_version =3D 0xA0; + poc->xscom_size =3D PNV9_XSCOM_OCC_SIZE; + poc->xscom_ops =3D &pnv_occ_power9_xscom_ops; + assert(!dc->user_creatable); } =20 static const TypeInfo pnv_occ_power10_type_info =3D { .name =3D TYPE_PNV10_OCC, - .parent =3D TYPE_PNV9_OCC, + .parent =3D TYPE_PNV_OCC, .class_init =3D pnv_occ_power10_class_init, }; =20 @@ -711,6 +717,37 @@ static bool occ_init_homer_memory(PnvOCC *occ, Error *= *errp) static_data.v9.core_max[i] =3D 1; } break; + case 0xA0: + if (chip->chip_id =3D=3D 0) { + static_data.v10.occ_role =3D OCC_ROLE_MASTER; + } else { + static_data.v10.occ_role =3D OCC_ROLE_SLAVE; + } + static_data.v10.pstate_min =3D 4; + static_data.v10.pstate_fixed_freq =3D 3; + static_data.v10.pstate_base =3D 2; + static_data.v10.pstate_ultra_turbo =3D 0; + static_data.v10.pstate_fmax =3D 1; + static_data.v10.minor =3D 0x01; + static_data.v10.pstates[0].valid =3D 1; + static_data.v10.pstates[0].id =3D 0; + static_data.v10.pstates[0].freq_khz =3D cpu_to_be32(4200000); + static_data.v10.pstates[1].valid =3D 1; + static_data.v10.pstates[1].id =3D 1; + static_data.v10.pstates[1].freq_khz =3D cpu_to_be32(4000000); + static_data.v10.pstates[2].valid =3D 1; + static_data.v10.pstates[2].id =3D 2; + static_data.v10.pstates[2].freq_khz =3D cpu_to_be32(3800000); + static_data.v10.pstates[3].valid =3D 1; + static_data.v10.pstates[3].id =3D 3; + static_data.v10.pstates[3].freq_khz =3D cpu_to_be32(3000000); + static_data.v10.pstates[4].valid =3D 1; + static_data.v10.pstates[4].id =3D 4; + static_data.v10.pstates[4].freq_khz =3D cpu_to_be32(2000000); + for (i =3D 0; i < chip->nr_cores; i++) { + static_data.v10.core_max[i] =3D 1; + } + break; default: g_assert_not_reached(); } @@ -726,6 +763,10 @@ static bool occ_init_homer_memory(PnvOCC *occ, Error *= *errp) dynamic_data.cur_pwr_cap =3D cpu_to_be16(PCAP_MAX_POWER_W); dynamic_data.soft_min_pwr_cap =3D cpu_to_be16(PCAP_SOFT_MIN_POWER_W); switch (poc->opal_shared_memory_version) { + case 0xA0: + dynamic_data.minor_version =3D 0x1; + dynamic_data.v10.wof_enabled =3D 0x1; + break; case 0x90: dynamic_data.minor_version =3D 0x1; break; --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699778; cv=none; d=zohomail.com; s=zohoarc; b=FJ7Bhrjo5Z+97GjL1ljwgJgG8BMfXHlMedOGbsIg7SO2AYUw54MHlJyhhNxUq35lJPudu5iMTfwHsXEQxlgZ5kXULW9a3FjaSeE0S6A3w6lbwNdV5xtnRv8t3keNufD5Bdc95KrA1OViSMlYYn+p/HUDKxhZo/JSR65GQN7CIA8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699778; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UE/0F1oCsxuW6Zn4Oxkfeuhf/dmH1J3omqaeTt273/s=; b=eCxIJheig7GgYVDO+eM/6oBpZg1Q2p55OPTrruYPaH2sdS9R2nO1ImDZOZfWTceuViDApABjFm9RN0AHoW9lc87Y7H4LmN+8GGqufFFG4nweU5CO/MjQJHES72s1Qdl9RL57bfpLEPuzHLIvPatyeXscEySwtEhJ/eWD6yBtM5E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699778702384.3667315124651; Tue, 11 Mar 2025 06:29:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCp-0002Hj-3c; Tue, 11 Mar 2025 08:59:36 -0400 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 1trzCf-0001xO-3N; Tue, 11 Mar 2025 08:59:25 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCb-0007wb-3v; Tue, 11 Mar 2025 08:59:24 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-2ff694d2d4dso7752706a91.0; Tue, 11 Mar 2025 05:59:19 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697958; x=1742302758; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UE/0F1oCsxuW6Zn4Oxkfeuhf/dmH1J3omqaeTt273/s=; b=ZOEbIlSBwYIwDAjkGnI+bqaFKpkjzdY4Mpe3ibd4e6N/zll+iFV11FaOXgIzrizC0j MLlSNdUW/yDdciS4XJ4C6gcpDmDWvJvcVqqrVmDUW51qrGvSbLfAPMW8BHbBvswFIqme d1ISZvKHNPmaB9WcfVQRGGhANCr5sv/WcU2P0yyG613xEVAYA6jKHZT0wcaoHA/mp1Zm fEnYgKQ5IaFLNC6cPhXL669Yj9Fe0Oi/W0XQANwYRbeiIb0pPsb5bMUvEV7BJvf7nKL6 hV3XZvBHOCkB6KVVhD1e3C7/iEvU8FMrX4K0WTE+BugSWNwpMbp+qqQsKeU2roCgmHKh nOUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697958; x=1742302758; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UE/0F1oCsxuW6Zn4Oxkfeuhf/dmH1J3omqaeTt273/s=; b=APUy/yphjyajt1U1wxsfe0YJ72m/loaFD6+K+D5LHo8ahVQfmmaDdN8gko+bMzdGa0 rJ1Ow6l4ZLhlwRd1VpB0nX+/VOI4Uhg4gVljoAtjOW6Vw+tWBrK1zt4YACXQ2cDRPEC/ HpECOCYZrvwLFZpCZKfK+9pKLLm8VKMWiF5GkR5iy+9yvdGVd/AyOmkV7KPtVX3P0wU6 M3lPp0Q+J5yw/2y9O2pzCRLYF+6RTKkCFXNBpEEaLmM7/ZBMaGbegBV8UhThZpIhoo24 wmS9XVWDQ7u10j4MKuVdNTg6jE7hPTGWFZYsKE/Ne0Yj/mTGqIVXP8Ihr8JOe+bnqNNj GAgg== X-Forwarded-Encrypted: i=1; AJvYcCUCO/zHWT+7g8jSm/wN9QK+SWAE81womiU5pi7CMUWHQjIjzrIbv8/uB98DM3ARLqdYEmmnwC4xhg==@nongnu.org X-Gm-Message-State: AOJu0YzvQ9Qf5XE8NIqc+eyNAmieBWdA78baRbQ1V1r6HN3pBXqw7GiZ kRy6kgdk27xze3zilEDHTZOJyOXudYyzLdTDMRgWRlHq5S90PluQYA42uQ== X-Gm-Gg: ASbGncuUlmoRcr1IrkSQ1favtSNMPl5Gebb2jvC2UnJ8mL2cZ1l4ciVeMA+JQsVo6z6 /kvnHaitqPjB5StaegMML6yIly0NZCBEUXaydN+/n0dlyGx5+XwSxW4Lj36Fjmctv90dAscZ1tu NWbia+WrfZjbJUlwKoQbLDKeyhEkHj5lm5SypPRt6GppktttbCBemgGRMsEFx4VMcUUfrMMG3d/ 6G3eKvHfieZzsF5Pgy0tQW3dtRP/bmnrb6T+kjWfcf9bL7S+bzUY2zkMiFTQM3XowEI4/xIfzP9 h/gDiqmN4Wx/luuuzYyFI9ggioL+GuhnS5TBpFgTcypeB0Hw3pU= X-Google-Smtp-Source: AGHT+IHiRLIIZjbcAFAK0jHHweWIKArYV/YLTbEn2bwKu3i8Mg4V2J0vjSwg8413tKV8DzxxyzIYNQ== X-Received: by 2002:a17:90b:3887:b0:2fe:80cb:ac05 with SMTP id 98e67ed59e1d1-2ff7ce7ac2bmr28535031a91.9.1741697957658; Tue, 11 Mar 2025 05:59:17 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 15/72] ppc/pnv/occ: Implement a basic dynamic OCC model Date: Tue, 11 Mar 2025 22:57:09 +1000 Message-ID: <20250311125815.903177-16-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699780061019100 Content-Type: text/plain; charset="utf-8" The OCC is an On Chip Controller that handles various thermal and power management. It is a PPC405 microcontroller that runs its own firmware which is out of scope of the powernv machine model. Some dynamic behaviour and interfaces that are important for host CPU testing can be implemented with a much simpler state machine. This change adds a 100ms timer that ticks through a simple state machine that looks for "OCC command requests" coming from host firmware, and responds to them. For now the powercap command is implemented because that is used by OPAL and exported to Linux and is easy to test. $ F=3D/sys/firmware/opal/powercap/system-powercap/powercap-current $ cat $F 100 $ echo 50 | sudo tee $F 50 $ cat $F 50 Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_occ.c | 146 +++++++++++++++++++++++++++++++++++++++ include/hw/ppc/pnv_occ.h | 3 + 2 files changed, 149 insertions(+) diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c index 34decb1700..d9ce35a4d6 100644 --- a/hw/ppc/pnv_occ.c +++ b/hw/ppc/pnv_occ.c @@ -35,6 +35,7 @@ #define OCB_OCI_OCCMISC_AND 0x4021 #define OCB_OCI_OCCMISC_OR 0x4022 #define OCCMISC_PSI_IRQ PPC_BIT(0) +#define OCCMISC_IRQ_SHMEM PPC_BIT(3) =20 /* OCC sensors */ #define OCC_SENSOR_DATA_BLOCK_OFFSET 0x0000 @@ -67,6 +68,11 @@ static void pnv_occ_set_misc(PnvOCC *occ, uint64_t val) qemu_set_irq(occ->psi_irq, !!(val & OCCMISC_PSI_IRQ)); } =20 +static void pnv_occ_raise_msg_irq(PnvOCC *occ) +{ + pnv_occ_set_misc(occ, occ->occmisc | OCCMISC_PSI_IRQ | OCCMISC_IRQ_SHM= EM); +} + static uint64_t pnv_occ_power8_xscom_read(void *opaque, hwaddr addr, unsigned size) { @@ -281,6 +287,20 @@ static const TypeInfo pnv_occ_power10_type_info =3D { }; =20 static bool occ_init_homer_memory(PnvOCC *occ, Error **errp); +static bool occ_model_tick(PnvOCC *occ); + +/* Relatively arbitrary */ +#define OCC_POLL_MS 100 + +static void occ_state_machine_timer(void *opaque) +{ + PnvOCC *occ =3D opaque; + uint64_t next =3D qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + OCC_POLL_MS; + + if (occ_model_tick(occ)) { + timer_mod(&occ->state_machine_timer, next); + } +} =20 static void pnv_occ_realize(DeviceState *dev, Error **errp) { @@ -306,6 +326,10 @@ static void pnv_occ_realize(DeviceState *dev, Error **= errp) PNV_OCC_SENSOR_DATA_BLOCK_SIZE); =20 qdev_init_gpio_out(dev, &occ->psi_irq, 1); + + timer_init_ms(&occ->state_machine_timer, QEMU_CLOCK_VIRTUAL, + occ_state_machine_timer, occ); + timer_mod(&occ->state_machine_timer, OCC_POLL_MS); } =20 static const Property pnv_occ_properties[] =3D { @@ -647,6 +671,27 @@ static bool occ_write_static_data(PnvOCC *occ, return true; } =20 +static bool occ_read_dynamic_data(PnvOCC *occ, + struct occ_dynamic_data *dynamic_data, + Error **errp) +{ + PnvOCCClass *poc =3D PNV_OCC_GET_CLASS(occ); + PnvHomer *homer =3D occ->homer; + hwaddr static_addr =3D homer->base + poc->opal_shared_memory_offset; + hwaddr dynamic_addr =3D static_addr + OPAL_DYNAMIC_DATA_OFFSET; + MemTxResult ret; + + ret =3D address_space_read(&address_space_memory, dynamic_addr, + MEMTXATTRS_UNSPECIFIED, dynamic_data, + sizeof(*dynamic_data)); + if (ret !=3D MEMTX_OK) { + error_setg(errp, "OCC: cannot read OCC-OPAL dynamic data"); + return false; + } + + return true; +} + static bool occ_write_dynamic_data(PnvOCC *occ, struct occ_dynamic_data *dynamic_data, Error **errp) @@ -668,6 +713,107 @@ static bool occ_write_dynamic_data(PnvOCC *occ, return true; } =20 +static bool occ_opal_send_response(PnvOCC *occ, + struct occ_dynamic_data *dynamic_data, + enum occ_response_status status, + uint8_t *data, uint16_t datalen) +{ + struct opal_command_buffer *cmd =3D &dynamic_data->cmd; + struct occ_response_buffer *rsp =3D &dynamic_data->rsp; + + rsp->request_id =3D cmd->request_id; + rsp->cmd =3D cmd->cmd; + rsp->status =3D status; + rsp->data_size =3D cpu_to_be16(datalen); + if (datalen) { + memcpy(rsp->data, data, datalen); + } + if (!occ_write_dynamic_data(occ, dynamic_data, NULL)) { + return false; + } + /* Would be a memory barrier here */ + rsp->flag =3D OCC_FLAG_RSP_READY; + cmd->flag =3D 0; + if (!occ_write_dynamic_data(occ, dynamic_data, NULL)) { + return false; + } + + pnv_occ_raise_msg_irq(occ); + + return true; +} + +/* Returns error status */ +static bool occ_opal_process_command(PnvOCC *occ, + struct occ_dynamic_data *dynamic_data) +{ + struct opal_command_buffer *cmd =3D &dynamic_data->cmd; + struct occ_response_buffer *rsp =3D &dynamic_data->rsp; + + if (rsp->flag =3D=3D 0) { + /* Spend one "tick" in the in-progress state */ + rsp->flag =3D OCC_FLAG_CMD_IN_PROGRESS; + return occ_write_dynamic_data(occ, dynamic_data, NULL); + } else if (rsp->flag !=3D OCC_FLAG_CMD_IN_PROGRESS) { + return occ_opal_send_response(occ, dynamic_data, + OCC_RSP_INTERNAL_ERROR, + NULL, 0); + } + + switch (cmd->cmd) { + case 0xD1: { /* SET_POWER_CAP */ + uint16_t data; + if (be16_to_cpu(cmd->data_size) !=3D 2) { + return occ_opal_send_response(occ, dynamic_data, + OCC_RSP_INVALID_CMD_DATA_LENGTH, + (uint8_t *)&dynamic_data->cur_pw= r_cap, + 2); + } + data =3D be16_to_cpu(*(uint16_t *)cmd->data); + if (data =3D=3D 0) { /* clear power cap */ + dynamic_data->pwr_cap_type =3D 0x00; /* none */ + data =3D PCAP_MAX_POWER_W; + } else { + dynamic_data->pwr_cap_type =3D 0x02; /* user set in-band */ + if (data < PCAP_HARD_MIN_POWER_W) { + data =3D PCAP_HARD_MIN_POWER_W; + } else if (data > PCAP_MAX_POWER_W) { + data =3D PCAP_MAX_POWER_W; + } + } + dynamic_data->cur_pwr_cap =3D cpu_to_be16(data); + return occ_opal_send_response(occ, dynamic_data, + OCC_RSP_SUCCESS, + (uint8_t *)&dynamic_data->cur_pwr_ca= p, 2); + } + + default: + return occ_opal_send_response(occ, dynamic_data, + OCC_RSP_INVALID_COMMAND, + NULL, 0); + } + g_assert_not_reached(); +} + +static bool occ_model_tick(PnvOCC *occ) +{ + struct occ_dynamic_data dynamic_data; + + if (!occ_read_dynamic_data(occ, &dynamic_data, NULL)) { + /* Can't move OCC state field to safe because we can't map it! */ + qemu_log("OCC: failed to read HOMER data, shutting down OCC\n"); + return false; + } + if (dynamic_data.cmd.flag =3D=3D OPAL_FLAG_CMD_READY) { + if (!occ_opal_process_command(occ, &dynamic_data)) { + qemu_log("OCC: failed to write HOMER data, shutting down OCC\n= "); + return false; + } + } + + return true; +} + static bool occ_init_homer_memory(PnvOCC *occ, Error **errp) { PnvOCCClass *poc =3D PNV_OCC_GET_CLASS(occ); diff --git a/include/hw/ppc/pnv_occ.h b/include/hw/ppc/pnv_occ.h index f994860980..3ec42de0ff 100644 --- a/include/hw/ppc/pnv_occ.h +++ b/include/hw/ppc/pnv_occ.h @@ -41,6 +41,9 @@ DECLARE_INSTANCE_CHECKER(PnvOCC, PNV10_OCC, TYPE_PNV10_OC= C) struct PnvOCC { DeviceState xd; =20 + /* OCC dynamic model is driven by this timer. */ + QEMUTimer state_machine_timer; + /* OCC Misc interrupt */ uint64_t occmisc; =20 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698060; cv=none; d=zohomail.com; s=zohoarc; b=fYRKKRycVqyuPm3QVXrdYoW/9PpfuzKoMlk0AhgezadXtGZ+lbGc2h9wuRV0m3zmkFgDsiqPIkFr/qmDS6cftochZMLj0YngNZIEI1LKp5dHZeRLTv7t+yzYR0849OjGpwcUvOjJ8Kv9VY8fyWGEd/URE+pqUCVXwgvQS1TVrCM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698060; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=T1uWfwdoT5PuKunpdf5GL7Jo4UcITHEbOpLA5+y74zY=; b=m22r1G+FXmLh3NoMGz9qGziIMhdun6BmJgNF+OoI7ng65/HnXbOxQ9/zaH0/Qb09/xDXLjNK//XVWLZdrVC4XiZL2Y8/yD8iJDziqvXRuZU3OlXQCP52w2ubgzmepAbjNB2rObHRQfq2LyxBHtqRVken1BnwM5/A/3BB0jlwkZ4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698060666781.5352140006689; Tue, 11 Mar 2025 06:01:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzDC-0003x7-NF; Tue, 11 Mar 2025 08:59:58 -0400 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 1trzCg-00021s-SG; Tue, 11 Mar 2025 08:59:28 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCc-0007x4-U9; Tue, 11 Mar 2025 08:59:25 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-2ff64550991so8237887a91.0; Tue, 11 Mar 2025 05:59:22 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697961; x=1742302761; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T1uWfwdoT5PuKunpdf5GL7Jo4UcITHEbOpLA5+y74zY=; b=S8xLiHhR/AxOxTKHERJwZy0a9kJvrtf+/pptQh5CURjBXXIbK4/u75exJ3hGRfmueg G4Pam2AbGMUkdjJ2wFx08v+Q/Tp3QD1w2h3DKdRMs5oNHFAghJOzHvic0mm4C61GypEg /bPk5Zijbzo7q5ibkJw0MFHtl3JjX+kQHHM1XNakQDscVXRztbZFdaaK9c82p7oz+L7d qr6jHROTwR/i0w9Ax+zkeXWfpE5/mjNuSWt6KxGXUa/0n8NoR1jRAT3kcEQCFR2RW21v AukZrFVqxAqZZcXO8RpY1IIzFdGW3FaD8apzKIbor6GEMFkon/nLv4ABPCzNcF+5pv0q NceA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697961; x=1742302761; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T1uWfwdoT5PuKunpdf5GL7Jo4UcITHEbOpLA5+y74zY=; b=bG4z4hB/lyiC5gZzs8hNYnMNHlFbZfa9pkxKRG1VxpvDsjN9NpXChPzB2QCV8bTWcU zgk8S6VC1OhU02quN6I7Xhi3eina7CSJ3hImKxrQlAx5dM9H2WxHndX6f2TgJzhj+UhC 1oJUeJJwNbCAJD8Sxx7R7rgz6XsSrhasBhi5xTivnfAHMMgkaYRyPc0T73qilCQRU+vl HIYGmhFzCfCosWCQ8DfGsaCMVtp/zSyGc/f5+czcrWH1rqjp8JZun0SqGgT//u4CYokA rNsCprWCt74W5lL9u7AqRy3TWdkwYwqNDoPjnsG499lsB8E6UZMUlQpB2n3aq9l/DE+u K/Hw== X-Forwarded-Encrypted: i=1; AJvYcCVlg5UHPVGVLj+KDQ0MtwX5Cb5ZmWbDoceib1Iiyame9mVaHihT+LP0yWWU5ZnaEOIVWbHbhmrq6A==@nongnu.org X-Gm-Message-State: AOJu0YwNm2YzJRUfNLo9JSlg9BZOpbOTOhKC5A0+YMiY7D0O3cjdh0U5 dQfqXCW1k1iBruswKm26CC199DGC5VLvqOMafkdO8A5wtnb8s2FppACRyw== X-Gm-Gg: ASbGncuiI6JnxCntQeWIUQsLelU3vyNSxeadKEzB20G8WiLmiODA9KJfSAeCBAKzTgn a/mGGAran4iz4mBQd2Fcmvh86oD6xRjKV+A/XJXlFbBNfTM33yVAUIBjCrV0m7fhfdzOiQvFHhK qBaLJ7y8pt8sepbLLpg1yykElRJI+OFEKh98E7K6Fbk1jwuMb4Pt/yRJthCwvtIVg/9ZfLtFgsj xIC+qVBbF3U1ye12ve2vf3wk1LpIRhMsNtj5xWLA7w+02dCOgyY05/4hkIqosnIRyWWsSQL5hLE M+62i8QSnTbBfu0bpWR/qshi+cjCC0exVHKoo8tj6v4JuEHBU/w= X-Google-Smtp-Source: AGHT+IHhK3Xq0p0Gsazf9hC06zEq/EpkSQuUyC5j8Ci91L0KHHOssdLEtZOlVMMajo7ZW5PBpz4NGw== X-Received: by 2002:a17:90b:3812:b0:2ef:114d:7bf8 with SMTP id 98e67ed59e1d1-2ff7ce7277cmr24565728a91.6.1741697960456; Tue, 11 Mar 2025 05:59:20 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 16/72] target/ppc: Add Power9/10 power management SPRs Date: Tue, 11 Mar 2025 22:57:10 +1000 Message-ID: <20250311125815.903177-17-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698062323019100 Content-Type: text/plain; charset="utf-8" Linux power management code accesses these registers for pstate management. Wire up a very simple implementation. Signed-off-by: Nicholas Piggin --- After OCC fixes in QEMU pnv model and skiboot (since they have suffered some bitrot), Linux will start performing PM SPR accesses. This is a very simple implementation that makes it a bit happier. Thanks, Nick --- target/ppc/cpu.h | 2 ++ target/ppc/cpu_init.c | 11 +++++++++ target/ppc/helper.h | 2 ++ target/ppc/misc_helper.c | 53 ++++++++++++++++++++++++++++++++++++++++ target/ppc/spr_common.h | 2 ++ target/ppc/translate.c | 16 ++++++++++++ 6 files changed, 86 insertions(+) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 0b8b4c0517..682583d1d1 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -2091,6 +2091,7 @@ void ppc_compat_add_property(Object *obj, const char = *name, #define SPR_VTB (0x351) #define SPR_LDBAR (0x352) #define SPR_MMCRC (0x353) +#define SPR_PMSR (0x355) #define SPR_PSSCR (0x357) #define SPR_440_INV0 (0x370) #define SPR_440_INV1 (0x371) @@ -2098,6 +2099,7 @@ void ppc_compat_add_property(Object *obj, const char = *name, #define SPR_440_INV2 (0x372) #define SPR_TRIG2 (0x372) #define SPR_440_INV3 (0x373) +#define SPR_PMCR (0x374) #define SPR_440_ITV0 (0x374) #define SPR_440_ITV1 (0x375) #define SPR_440_ITV2 (0x376) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 1780cabfc6..54035c7bbb 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -6451,6 +6451,17 @@ static void register_power9_common_sprs(CPUPPCState = *env) spr_read_generic, spr_write_generic, KVM_REG_PPC_PSSCR, 0); =20 + spr_register_hv(env, SPR_PMSR, "PMSR", + SPR_NOACCESS, SPR_NOACCESS, + SPR_NOACCESS, SPR_NOACCESS, + &spr_read_pmsr, SPR_NOACCESS, + 0); + spr_register_hv(env, SPR_PMCR, "PMCR", + SPR_NOACCESS, SPR_NOACCESS, + SPR_NOACCESS, SPR_NOACCESS, + &spr_read_generic, &spr_write_pmcr, + PPC_BIT(63)); /* Version 1 (POWER9/10) */ + } =20 static void init_proc_POWER9(CPUPPCState *env) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 5a77e761bd..11b914e640 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -733,6 +733,8 @@ DEF_HELPER_2(store_tfmr, void, env, tl) DEF_HELPER_FLAGS_2(store_sprc, TCG_CALL_NO_RWG, void, env, tl) DEF_HELPER_FLAGS_1(load_sprd, TCG_CALL_NO_RWG_SE, tl, env) DEF_HELPER_FLAGS_2(store_sprd, TCG_CALL_NO_RWG, void, env, tl) +DEF_HELPER_FLAGS_1(load_pmsr, TCG_CALL_NO_RWG_SE, tl, env) +DEF_HELPER_FLAGS_2(store_pmcr, TCG_CALL_NO_RWG, void, env, tl) #endif DEF_HELPER_2(store_sdr1, void, env, tl) DEF_HELPER_2(store_pidr, void, env, tl) diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index e379da6010..190e9091fc 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -377,6 +377,59 @@ void helper_store_sprd(CPUPPCState *env, target_ulong = val) break; } } + +target_ulong helper_load_pmsr(CPUPPCState *env) +{ + target_ulong lowerps =3D extract64(env->spr[SPR_PMCR], PPC_BIT_NR(15),= 8); + target_ulong val =3D 0; + + val |=3D PPC_BIT(63); /* verion 0x1 (POWER9/10) */ + /* Pmin =3D 0 */ + /* XXX: POWER9 should be 3 */ + val |=3D 4ULL << PPC_BIT_NR(31); /* Pmax */ + val |=3D lowerps << PPC_BIT_NR(15); /* Local actual Pstate */ + val |=3D lowerps << PPC_BIT_NR(7); /* Global actual Pstate */ + + return val; +} + +static void ppc_set_pmcr(PowerPCCPU *cpu, target_ulong val) +{ + cpu->env.spr[SPR_PMCR] =3D val; +} + +void helper_store_pmcr(CPUPPCState *env, target_ulong val) +{ + PowerPCCPU *cpu =3D env_archcpu(env); + CPUState *cs =3D env_cpu(env); + CPUState *ccs; + + /* Leave version field unchanged (0x1) */ + val &=3D ~PPC_BITMASK(60, 63); + val |=3D PPC_BIT(63); + + val &=3D ~PPC_BITMASK(0, 7); /* UpperPS ignored */ + if (val & PPC_BITMASK(16, 59)) { + qemu_log_mask(LOG_GUEST_ERROR, "Non-zero PMCR reserved bits " + TARGET_FMT_lx"\n", val); + val &=3D ~PPC_BITMASK(16, 59); + } + + /* DPDES behaves as 1-thread in LPAR-per-thread mode */ + if (ppc_cpu_lpar_single_threaded(cs)) { + ppc_set_pmcr(cpu, val); + return; + } + + /* Does iothread need to be locked for walking CPU list? */ + bql_lock(); + THREAD_SIBLING_FOREACH(cs, ccs) { + PowerPCCPU *ccpu =3D POWERPC_CPU(ccs); + ppc_set_pmcr(ccpu, val); + } + bql_unlock(); +} + #endif /* defined(TARGET_PPC64) */ =20 void helper_store_pidr(CPUPPCState *env, target_ulong val) diff --git a/target/ppc/spr_common.h b/target/ppc/spr_common.h index 01aff449bc..8e3117b463 100644 --- a/target/ppc/spr_common.h +++ b/target/ppc/spr_common.h @@ -204,6 +204,8 @@ void spr_write_hmer(DisasContext *ctx, int sprn, int gp= rn); void spr_read_tfmr(DisasContext *ctx, int gprn, int sprn); void spr_write_tfmr(DisasContext *ctx, int sprn, int gprn); void spr_write_lpcr(DisasContext *ctx, int sprn, int gprn); +void spr_read_pmsr(DisasContext *ctx, int gprn, int sprn); +void spr_write_pmcr(DisasContext *ctx, int sprn, int gprn); void spr_read_dexcr_ureg(DisasContext *ctx, int gprn, int sprn); void spr_read_ppr32(DisasContext *ctx, int sprn, int gprn); void spr_write_ppr32(DisasContext *ctx, int sprn, int gprn); diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 80638ab535..b0cc8bf283 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -1326,6 +1326,22 @@ void spr_write_lpcr(DisasContext *ctx, int sprn, int= gprn) translator_io_start(&ctx->base); gen_helper_store_lpcr(tcg_env, cpu_gpr[gprn]); } + +void spr_read_pmsr(DisasContext *ctx, int gprn, int sprn) +{ + translator_io_start(&ctx->base); + gen_helper_load_pmsr(cpu_gpr[gprn], tcg_env); +} + +void spr_write_pmcr(DisasContext *ctx, int sprn, int gprn) +{ + if (!gen_serialize_core_lpar(ctx)) { + return; + } + translator_io_start(&ctx->base); + gen_helper_store_pmcr(tcg_env, cpu_gpr[gprn]); +} + #endif /* !defined(CONFIG_USER_ONLY) */ =20 void spr_read_tar(DisasContext *ctx, int gprn, int sprn) --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699726; cv=none; d=zohomail.com; s=zohoarc; b=DvlQS37qX07a9cEtgFu4YvuB3r2y/Q7Kz2uisBKLTqdcxgVqRaEyco/jnVs+cXJ3espamLoDV2MwcvVgo421FwyAiP3LzhdvazqkRFKBKbDD+t9QCixQpffKRYpL6yEGAYf/O6fq2yfoViaJLU9j5Oydav8yRZ5xQ0RJ7lFG45Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699726; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fqFuEaShL7QDMXwSHtnl81qUichOoVW19OOsjZgbiVQ=; b=a4YiIaX3QmdY8d/YMQ1F2NK+LqMSdWsUlPZqTCA7+XLuRW+qGw02Vq39bsiOXbuBUs3Q0xr8c2n3e+wYi7TeTbRKakV3eBjCpzfTO2Uw7G3E4boE/qVE15oVbVrwmJHzEKVP8Z9Ugx2r9RPBVz1dKh4Rv1TAx2xMpHc+KS+JvFo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699726520565.8743196227865; Tue, 11 Mar 2025 06:28:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzDF-00044S-3r; Tue, 11 Mar 2025 09:00:01 -0400 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 1trzCh-00022J-9H; Tue, 11 Mar 2025 08:59:28 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCf-0007xX-G6; Tue, 11 Mar 2025 08:59:27 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-2ff69365e1dso7926330a91.3; Tue, 11 Mar 2025 05:59:24 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697963; x=1742302763; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fqFuEaShL7QDMXwSHtnl81qUichOoVW19OOsjZgbiVQ=; b=HMCa47uLlBR/MQzcTgvvhVhh+aEhgGxZpok8lelz35/E56gzpLsO5QYKrq3k/06kCG j6vJr8GDF+9zk14HsskZV8Uos75QQ+4m5fgkvvOa5zgVKp4pBS9PFp6BqsQe0J+1LtLG vC8CjhqkEbOSd/3tjKbUGlxMdzzDRi6CZNEzQJoysw17aD38RQFb75ffR398xpDlIp5N xMzkwVW41JDwOs6qjL4MsozOOtXPYGtiFhaz3RrXteKnamLvrqpEhy6NFaBLHJX910PO bIGEB9J4URYWt8yj2i8z7tcaC+270PnxeJuSv7KsSY43HHfg714MSDf8KYeEMO5b6Nxq B2OQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697963; x=1742302763; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fqFuEaShL7QDMXwSHtnl81qUichOoVW19OOsjZgbiVQ=; b=NgyHQbOOKSlnux+/AQZVGfDWn2PHLC2KPKTeTQkFkUinkEtljz8BoE7ypapRB9rHzh INU4AElv+uWnLoaqqNLBJ/4utsCtjp/+b5md6YJRFLm+k1FTCttDisMZ9Q6kUcB/R/ot OO91S/PgmS7dtZlJixMRnjWmBCjvAFpSlLpfJUjvOI80HPlOGuaNfp09KGw6wRToC47w LItT3AsqIVFVzKopA0JVRzvVlwlIH3c/t32+p6j8fFEtkrgJd3QxbDeZW8yh9kI265VT qk6Fifmo8Ni8elLwevrVjXLPcVgqvUya9Pup9SD4ncvUoOPunMw53DSjuAgq+63yny3J tXRg== X-Forwarded-Encrypted: i=1; AJvYcCXnnVCOW45RO17P/Iaw/fn6qxP4IfBCrh+y9BEg1X03h31UDVg2U9THTWF7y8mqroLl6RvVYVlp2g==@nongnu.org X-Gm-Message-State: AOJu0YxaTUWo0BA8d9KHU4sNX/S/G2gmnuoeaaTuuWrDYO46TbrrVV1O uLenap25hEoHUCZZ7FAkxzP+QbDCmdYUOs0masZbzKccp0mDEuwzlyaj9Q== X-Gm-Gg: ASbGncs0f2NSVDC2l4dq1cSvXXbYW1y9VqzXVq6iq4UiGMnvJ3cv/KwmPk7yTXBjZ2s MA+I9bBFP8fRBlK9RXTIFoPo4nnM91EqHauVV05bT8lAkQOJYqb5B+BHRYRq73Pe4B8pgaQDtTr zD5CGkUaYvqTDQ0n+w/Rf73rgeSj2v545yr6Qig3ho7jJXxdmSoK/cypPOYj0vdmeOawH7nsnLt iP5rofmTEf/GSrpXfpmvMlEHAlww6XkHC092ZnBlrfp0AllpWl9i8izZa4owVj1PC3WVxF9CbOl VEkJ+ntETFjqcgu1rJGP3mbsqFI05Bj1Tq+iUfsuEZw4zuvghro= X-Google-Smtp-Source: AGHT+IGI0v+NMdNqMr7la3iNW7GBB4U91RILxWfSpz+dcYrLsD/e79DcHZMqtkXSizdplmdmqa3pmA== X-Received: by 2002:a17:90b:164f:b0:2fe:baa3:b8b9 with SMTP id 98e67ed59e1d1-2ff7ce4f306mr25161149a91.4.1741697963258; Tue, 11 Mar 2025 05:59:23 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 17/72] ppc/pnv: Support LPC host controller irqs other than serirqs Date: Tue, 11 Mar 2025 22:57:11 +1000 Message-ID: <20250311125815.903177-18-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699726957019000 Content-Type: text/plain; charset="utf-8" The LPC model has only supported serirqs (ISA device IRQs), however there are internal sources that can raise other interrupts. Update the device to handle these interrupt sources. Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_lpc.c | 64 +++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index 0480a60f3f..d0fccc165d 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -456,46 +456,18 @@ static void pnv_lpc_eval_irqs(PnvLpcController *lpc) { uint32_t active_irqs =3D 0; =20 - if (lpc->lpc_hc_irqstat & PPC_BITMASK32(16, 31)) { - qemu_log_mask(LOG_UNIMP, "LPC HC Unimplemented irqs in IRQSTAT: " - "0x%08"PRIx32"\n", lpc->lpc_hc_irqstat); - } - - if (lpc->lpc_hc_irqser_ctrl & LPC_HC_IRQSER_EN) { - active_irqs =3D lpc->lpc_hc_irqstat & lpc->lpc_hc_irqmask; + active_irqs =3D lpc->lpc_hc_irqstat & lpc->lpc_hc_irqmask; + if (!(lpc->lpc_hc_irqser_ctrl & LPC_HC_IRQSER_EN)) { + active_irqs &=3D ~LPC_HC_IRQ_SERIRQ_ALL; } =20 /* Reflect the interrupt */ - if (!lpc->psi_has_serirq) { - /* - * POWER8 ORs all irqs together (also with LPCHC internal interrupt - * sources) and outputs a single line that raises the PSI LPCHC irq - * which then latches an OPB IRQ status register that sends the irq - * to PSI. - * - * We don't honor the polarity register, it's pointless and unused - * anyway - */ - if (active_irqs) { - lpc->opb_irq_input |=3D OPB_MASTER_IRQ_LPC; - } else { - lpc->opb_irq_input &=3D ~OPB_MASTER_IRQ_LPC; - } - - /* Update OPB internal latch */ - lpc->opb_irq_stat |=3D lpc->opb_irq_input & lpc->opb_irq_mask; - - qemu_set_irq(lpc->psi_irq_lpchc, lpc->opb_irq_stat !=3D 0); - } else { + if (lpc->psi_has_serirq) { /* - * POWER9 and POWER10 have routing fields in OPB master registers = that + * POWER9 and later have routing fields in OPB master registers th= at * send LPC irqs to 4 output lines that raise the PSI SERIRQ irqs. * These don't appear to get latched into an OPB register like the * LPCHC irqs. - * - * POWER9 LPC controller internal irqs still go via the OPB - * and LPCHC PSI irqs like P8, but we have no such internal sources - * modelled yet. */ bool serirq_out[4] =3D { false, false, false, false }; int irq; @@ -510,7 +482,33 @@ static void pnv_lpc_eval_irqs(PnvLpcController *lpc) qemu_set_irq(lpc->psi_irq_serirq[1], serirq_out[1]); qemu_set_irq(lpc->psi_irq_serirq[2], serirq_out[2]); qemu_set_irq(lpc->psi_irq_serirq[3], serirq_out[3]); + + /* + * POWER9 and later LPC controller internal irqs still go via the = OPB + * and LPCHC PSI irqs like P8, so take the SERIRQs out and continu= e. + */ + active_irqs &=3D ~LPC_HC_IRQ_SERIRQ_ALL; + } + + /* + * POWER8 ORs all irqs together (also with LPCHC internal interrupt + * sources) and outputs a single line that raises the PSI LPCHC irq + * which then latches an OPB IRQ status register that sends the irq + * to PSI. + * + * We don't honor the polarity register, it's pointless and unused + * anyway + */ + if (active_irqs) { + lpc->opb_irq_input |=3D OPB_MASTER_IRQ_LPC; + } else { + lpc->opb_irq_input &=3D ~OPB_MASTER_IRQ_LPC; } + + /* Update OPB internal latch */ + lpc->opb_irq_stat |=3D lpc->opb_irq_input & lpc->opb_irq_mask; + + qemu_set_irq(lpc->psi_irq_lpchc, lpc->opb_irq_stat !=3D 0); } =20 static uint64_t lpc_hc_read(void *opaque, hwaddr addr, unsigned size) --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700891; cv=none; d=zohomail.com; s=zohoarc; b=lykzO2qhh6y/09iY4/68sv00so2EDblg2VMdIpw8uBuKe9FMsCTvJbP6ya2WIBSxXLC3wnV0bVd03a3Vchco/bWWxumFgzutMQK9+kDJHzamatOL26p9T2NkF/l5XFm/R+D0Vr4wS+myGUmgKF5PnCuaS7a15A8Ebpxld732mS8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700891; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EhoSht0TisSg7cbroKzPBDpRepZ7Wrpxv0wxqbEmqv4=; b=n3Cmnc6iZCa1huIeWYVHwxRJTPQrWOVHyb8Cr1VrmH2eXtnD5GPk0eoGxKm9A12A+wXN2UN3Y3rsWA/jKwVxxNiZbu3hC20HT3JcLgBKTcuNNgMoJv509qmNr0wLP4HyLMNStbbzRp53MQI4GAnOxWEVXbmU3w1PRKO1rae3zEo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741700891351593.8299999465686; Tue, 11 Mar 2025 06:48:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzE5-0004xf-Rw; Tue, 11 Mar 2025 09:00:55 -0400 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 1trzCn-0002JI-Ku; Tue, 11 Mar 2025 08:59:34 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCi-0007y9-Dm; Tue, 11 Mar 2025 08:59:33 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-2ff6e91cff5so7757705a91.2; Tue, 11 Mar 2025 05:59:27 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697966; x=1742302766; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EhoSht0TisSg7cbroKzPBDpRepZ7Wrpxv0wxqbEmqv4=; b=initoQA76VoLv+MXY1mw1KGCP1UENAMazhjLvxhU5wXEMC417+RliIbiM5T9KvYIV3 kPDop2eGCeV5ARimT90YLTeWaPYuAHS1emozpo2Um0cCviirGf9Dr5m03vsMn6MJ7UpU SO3yalhN1s+gGHWY1UMVtL8VJKaMTd6I1OE5Q0PTRz8lJtp70OaLOI6Mpb3WtYj7HO/0 YugE4+34B0m4DIjnNuZ7lEM7JvIai97/mIaNhumFqJHVAm3hAWtGecBFHLL4Fex963o1 nZO9jKc1XSPeLBe3CsO4mOEcuUYDwTCoh+JILm0fgHEg8+mfO2EyHL0OM6CebTmXCn2M WysQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697966; x=1742302766; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EhoSht0TisSg7cbroKzPBDpRepZ7Wrpxv0wxqbEmqv4=; b=JY8MTl2cwBBfud+6MApVDd3c89ZO/fK3NzgMlD7JhvI3SY72qPDBBDJKzKcwCM9bSe ji6bhWbghp3p1cT1hFbU59n7yhB/CUdxR9ezmb98fQwxAdfVQinUVoWd0JNwUmoxAgSN 8MPQ1o+XRyvxeSlUu1loauL+gKVX/5fmtwOFa3d3v3hmL1qhvsxAHOJ7AfYzGJzxz5AO bBhJu2ipHzIsr1o3B1oAxK5JpQiimh66EJOXJFo3y20q6wu7Uv3KcebNaDLUnQwSOSxf /gQf40NgjvmoQ3H0zDmxlcjVYhNFEAadrixKGZNroSDMs7jjg1nPAE740FS5SCoZYXVZ Za3A== X-Forwarded-Encrypted: i=1; AJvYcCWo7YXE0OEmW5SRtZ6xfes+ZBrAU97z/3/edC3g9WQ44A1YXY/uK2bWSkeVV6NYxXh+0lZ4I0ziKQ==@nongnu.org X-Gm-Message-State: AOJu0Yyfs7GR4bQnM+bBsZ6vn8j0JqkMCyxYDvxWXdl0zH6vlzA+bxZM gzwL+NzSOx76ZgMxW/kOGlAqazwPxUGBYHRFpwP5HY87eANQCsfmrDBesA== X-Gm-Gg: ASbGncs7H321GTd2zMMUzcAYPOyf/YRluCSAd0TS9nWrx2lU9Z68GbEZxABR29YuqP0 8WE6+Atf5672gKaOryI7ODbv7gLksV0CiGK8R191aTVxirQRyGwh2SUz2EmNEvL6xPnE/22z/yU KRwk/mymB1LkWcLqKdo7hTn2yZwD5TyNaZ5kO/dpl6CR1638NVQSDMe3WEteBXl2hWCN9yXQb/u E3y9MQQ9r7G06n2YdFPjhLgL7qNJjCyaf4jGVLETWPIeZISw9i4JjPqEmwRVeDfspJFOdiih3p3 ekE64ppPQdAW9ATxvCO8zIM6+TQfKsfVu9LimNt1ONw1FuY1yOU= X-Google-Smtp-Source: AGHT+IFMIafJM2wQ6gch2cDeaw1K/Ib/xE2lL58g/EsLcp2EJihtrxyjeceWntpOYYS9OTkpwwA6Qg== X-Received: by 2002:a17:90b:180b:b0:2ff:5357:1c7f with SMTP id 98e67ed59e1d1-2ff7cf3d0bfmr23969660a91.30.1741697965689; Tue, 11 Mar 2025 05:59:25 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 18/72] ppc/pnv: raise no-response errors if an LPC transaction fails Date: Tue, 11 Mar 2025 22:57:12 +1000 Message-ID: <20250311125815.903177-19-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102c.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700892652019000 Content-Type: text/plain; charset="utf-8" If nothing responds to an LPC access, the LPC host controller should set an IRQSTAT error. Model this behaviour. skiboot uses this error to "probe" LPC accesses, among other things to determine if a SuperIO chip is present. After this change it recognizes there is no SuperIO present and does not keep trying to access it. Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_lpc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index d0fccc165d..0e02ce6e94 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -353,6 +353,8 @@ static const MemoryRegionOps pnv_lpc_xscom_ops =3D { .endianness =3D DEVICE_BIG_ENDIAN, }; =20 +static void pnv_lpc_opb_noresponse(PnvLpcController *lpc); + static uint64_t pnv_lpc_mmio_read(void *opaque, hwaddr addr, unsigned size) { PnvLpcController *lpc =3D PNV_LPC(opaque); @@ -376,6 +378,7 @@ static uint64_t pnv_lpc_mmio_read(void *opaque, hwaddr = addr, unsigned size) } =20 if (result !=3D MEMTX_OK) { + pnv_lpc_opb_noresponse(lpc); qemu_log_mask(LOG_GUEST_ERROR, "OPB read failed at @0x%" HWADDR_PRIx "\n", addr); } @@ -406,6 +409,7 @@ static void pnv_lpc_mmio_write(void *opaque, hwaddr add= r, } =20 if (result !=3D MEMTX_OK) { + pnv_lpc_opb_noresponse(lpc); qemu_log_mask(LOG_GUEST_ERROR, "OPB write failed at @0x%" HWADDR_PRIx "\n", addr); } @@ -511,6 +515,12 @@ static void pnv_lpc_eval_irqs(PnvLpcController *lpc) qemu_set_irq(lpc->psi_irq_lpchc, lpc->opb_irq_stat !=3D 0); } =20 +static void pnv_lpc_opb_noresponse(PnvLpcController *lpc) +{ + lpc->lpc_hc_irqstat |=3D LPC_HC_IRQ_SYNC_NORESP_ERR; + pnv_lpc_eval_irqs(lpc); +} + static uint64_t lpc_hc_read(void *opaque, hwaddr addr, unsigned size) { PnvLpcController *lpc =3D opaque; --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698020; cv=none; d=zohomail.com; s=zohoarc; b=al/BewbBLZvWu8FjQZtM8iENERAwcAaNfVeOvZadWgvg8V6NBjCOmw0GuWnwqpRN20s7lrrBRE+JBgLEq5x7r4XIT6JeExuaU4KRh4TbvFTpT+Ptv2bUm7i/Jboo7vF7hdTtti7vtqBcG1zW/aQNBlNPHcw9rF2AzDr8mf1Woqo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698020; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LWFZ3hhh+CauKRhvgamT4Y6yPpw/m5EE+YXGOVXnowQ=; b=lz8LuWOVc+0GEJzDubqgxYgSnVPlGproIKpl26/WTlxycMgU+sRO+1Z3OWZaowlGq15DYL+fGyc1+e9vExz1IM4PWjKz6oF0x5qjk5ZCnIuIQ0xWj+vyZ8hAPpB+VikKPXw/UkgU/ejUwRc/0hdisrjZ0IgfkM07iOU2DzlVb50= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698020126357.7302069350717; Tue, 11 Mar 2025 06:00:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCw-0002sJ-T9; Tue, 11 Mar 2025 08:59:42 -0400 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 1trzCs-0002al-2B; Tue, 11 Mar 2025 08:59:38 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCm-0007yt-HY; Tue, 11 Mar 2025 08:59:37 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-2ff6ae7667dso10225697a91.0; Tue, 11 Mar 2025 05:59:30 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697968; x=1742302768; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LWFZ3hhh+CauKRhvgamT4Y6yPpw/m5EE+YXGOVXnowQ=; b=fukWU700sv3SNmaskwEv76wTHdATqZeKREVlH2wOHCLLSG97Y96uRFJy62Yu4g+VTS 2YVN8WO/E2rCsyIyE2H0iurdzLzpF7I5YuwfilxIJqm9AemjKXL7vy8mZMnbNee/OxKn aycwd8/qz+AdRWZDwzCaeHlGTiTv7GvYqgNkllU1X/Ge1ou92xqyEJ0t3mTocq3h3a58 eMvrNRArneccI/ZgqES3jntZeLkkurad1aw1VIP4HTFjOfaoCSITOEWenAH2/TWskr3b dh8p/dTBrhkheYBzHnZflsZg4ZTbRCx+l3E0VNalr49hItvaUyKK9b0i2RmVBGIeSbIM i+Lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697968; x=1742302768; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LWFZ3hhh+CauKRhvgamT4Y6yPpw/m5EE+YXGOVXnowQ=; b=uBAMDKPTrwwNkw3Efj+1IBkcb7guISZFW9Gz3AQ2QJIasRlffo6pdKVJ4aFxbYfbF3 tMlKrv4FOLN8kws9LWhmCQuJQeEm2Q59om4sH9cQvzjgpgYnpbZCKVGt2xKerRl9s/O0 VSRqOg5Pitvoj6W5nM+IzrGW/B55dT2JzDtKS33x4VPR6YtF1vtqJ5LxcIQ3//KBgR7o 2uYDhev8Zz+e1XkabLMQENgVlWymva8EltNd+JNXBbEacbo7eSnXNkE8D86/EpqovYf1 iQyRtgsH6fL/lQk1/yAZdQJ/+TJnKSMGu8BGoREPvN9Wz+Jtnzmgq/Pru5ndrS3/q/lj 3wug== X-Forwarded-Encrypted: i=1; AJvYcCWjUt8OkxvbDrQzWrmZ28u6DUlo9sOpM47KKXUSWin8hRr88g2u51eFYqZISHAMVetBsDCjxbqDzA==@nongnu.org X-Gm-Message-State: AOJu0YwucRyzJJxjZpyffyVjD1xVq2wG3HuhE/DVLkKhtQoB5v2n4Cwx eK2ViLErR5P6dmoKhnfoud7A95Gymqltu+gKE37CU5V+HE1Juv+FROxSvQ== X-Gm-Gg: ASbGnctPNuIyeKmTwUn4HvbOvCl6DcYxKiarciQLkrp8jyt39oGgv7Gk03zP3d8yvMj qPrKDJ0dnfz460rN9yYhm5Ru1/SK5W0HFvVPlNPjZFndHOmCGFkqEQnm8D+j3iqkHtBlc9VuKew 086AlX+KuXkcfRDQCNIFYAEMVpGs7OsUBrdg2SKsVlHVJyszTimAsdcWecg90lAPTLVK9TXwxIz vs2ktslWBswAfqoDQdJ3h/fqtou+OUxy5nJv/sZrqFaMbQNfYBwqy1C2Wl+qpmmACqZ0WhutISJ bCbMd0RStBe4CyXg8vbRgMo45bH2OewZ7mFLKdE51ulz0oim7Ys= X-Google-Smtp-Source: AGHT+IGsmLnQ5nuz1baaSGWshuiCQAoKQNb38fSHNEUxPj5+z+qFuI1Qmib2l92ftTxdSaro4tuzNw== X-Received: by 2002:a17:90b:3c08:b0:2fc:3264:3657 with SMTP id 98e67ed59e1d1-2ff7cd45c1cmr32797426a91.0.1741697968252; Tue, 11 Mar 2025 05:59:28 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 19/72] ppc/pnv: Implement LPC FW address space IDSEL Date: Tue, 11 Mar 2025 22:57:13 +1000 Message-ID: <20250311125815.903177-20-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698022123019100 Content-Type: text/plain; charset="utf-8" LPC FW address space is a 256MB (28-bit) region to one of 16-devices that are selected with the IDSEL register. Implement this by making the ISA FW address space 4GB, and move the 256MB OPB alias within that space according to IDSEL. Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_lpc.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index 0e02ce6e94..d812dc8268 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -85,7 +85,7 @@ enum { =20 #define ISA_IO_SIZE 0x00010000 #define ISA_MEM_SIZE 0x10000000 -#define ISA_FW_SIZE 0x10000000 +#define ISA_FW_SIZE 0x100000000 #define LPC_IO_OPB_ADDR 0xd0010000 #define LPC_IO_OPB_SIZE 0x00010000 #define LPC_MEM_OPB_ADDR 0xe0000000 @@ -561,10 +561,13 @@ static void lpc_hc_write(void *opaque, hwaddr addr, u= int64_t val, =20 switch (addr) { case LPC_HC_FW_SEG_IDSEL: - /* XXX Actually figure out how that works as this impact - * memory regions/aliases + /* + * ISA FW "devices" are modeled as 16x256MB windows into a + * 4GB LPC FW address space. */ + val &=3D 0xf; /* Selects device 0-15 */ lpc->lpc_hc_fw_seg_idsel =3D val; + memory_region_set_alias_offset(&lpc->opb_isa_fw, val * LPC_FW_OPB_= SIZE); break; case LPC_HC_FW_RD_ACC_SIZE: lpc->lpc_hc_fw_rd_acc_size =3D val; @@ -798,9 +801,9 @@ static void pnv_lpc_realize(DeviceState *dev, Error **e= rrp) memory_region_init(&lpc->opb_mr, OBJECT(dev), "lpc-opb", 0x100000000ul= l); address_space_init(&lpc->opb_as, &lpc->opb_mr, "lpc-opb"); =20 - /* Create ISA IO and Mem space regions which are the root of - * the ISA bus (ie, ISA address spaces). We don't create a - * separate one for FW which we alias to memory. + /* + * Create ISA IO, Mem, and FW space regions which are the root of + * the ISA bus (ie, ISA address spaces). */ memory_region_init(&lpc->isa_io, OBJECT(dev), "isa-io", ISA_IO_SIZE); memory_region_init(&lpc->isa_mem, OBJECT(dev), "isa-mem", ISA_MEM_SIZE= ); --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699709; cv=none; d=zohomail.com; s=zohoarc; b=EasE0gGHdht0Gr/l4SCypATPfAC8+YZ/Wr0chexJFwgmPOsaNZBjYRgsOX1QldtHSKR5KAGPSWESF3PORGrq5eA4BDaU/aeBccNNfB09FU/Pzzm7EwPrufRbkkJ1eZ+8Q6j0uXYh+FOnsSSb87m4aBoTd1khb5EQcTojJHv/eqc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699709; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=m8Jod93+icdv8DpO8jgqQJRsTJBpt3ebVNZMdW9CDpM=; b=f7TnvyUA6ycpauVtgHXQJdG4xG10O2SNGhk2Kgdk5yhoA59WrX5ljGjOobAtSawtVTKDQiRK1FwbhP1NUY0cswWZwPAgQwlo0kYGk8T5oiicXxEnD8UKvttqkH2qt69M3Sgc0pEHdcqmvMYuKXy9kCJOfxDazG1wAY+5Vjvc2Kg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174169970914057.55917856275062; Tue, 11 Mar 2025 06:28:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCs-0002ay-AQ; Tue, 11 Mar 2025 08:59:38 -0400 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 1trzCp-0002Me-LP; Tue, 11 Mar 2025 08:59:35 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCm-0007zb-UQ; Tue, 11 Mar 2025 08:59:35 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-2feb91a2492so9002926a91.2; Tue, 11 Mar 2025 05:59:31 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697971; x=1742302771; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=m8Jod93+icdv8DpO8jgqQJRsTJBpt3ebVNZMdW9CDpM=; b=FOqGKn5ZTMB6LtxA2elPNehgwIwZ2DKVFlrxF0MLK3ytnJt2pZxQWwhkfM2ddicQck +/UgyRtnuWiuxUTdAZxaWPDSjsAzZyo3j8FetMS8N/HQcGF3r8YrtFFvCY4HrawQS+oP pzf30hhmy1k0NU/VLcfyUXk+0SI/iJRAyIaHl/My9kJoaZhDiXq+vCtc+UQS9UgggCQp FxLLtpf4jy0JM6IpLl5AaKkM3HFIfh4bGkK1osHQGmcCg//pWmnZzFOTXDY8KZ2yjuGr PGPsYXyF5eAoL8oNfxbQJ6SR17+iY3hzi0fEE2gmCYXg1nBmEdq9+GMCQIa8dW3mVXXn NLdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697971; x=1742302771; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m8Jod93+icdv8DpO8jgqQJRsTJBpt3ebVNZMdW9CDpM=; b=MnRRUATcCz1WwXMlZimADK3xuPQeV7a69kIHhZ1btvxJ/AJdqrKMCcRtqAt7CqwqE5 WH8bUctId4rjyR3FVp6VNbfqKxE01mMeDebd1RoQRR/Hw+fBK+zm1R2m332l19F1sNOs G0wQH313+sEtanXvyGtCnf5/nCaEDW3TisYrtNJ/SV/3MO4UFWihUqgHILhCgya4+UC1 1z+Sid8Nn4fKdIbhxEh6icRKBtm1Wf/6UTMQeHzrDxSod4U14AQUEMNPr7A6XtzKDE6w NlhX8wAbJHw3k0yAmlutar4JBmjylkDP9EbmOaJG1nSDlQ8hCgYdROzcA05enFm+xC/j +HZQ== X-Forwarded-Encrypted: i=1; AJvYcCWNbDdxa/PpPCemZWrBSFlkkMkN9bYfvMC6Ynr+V13DEnl1I29ZwMvwYos8RP6m5KJ9PbLEwm/RLA==@nongnu.org X-Gm-Message-State: AOJu0Yw9qB3eP02wEqgCN9n5d1ze1G4TC4xVDn1HPtn1VjPcqF+2w4sZ KTT1ur3Pr+mFKFHtyc1YgtnfhlQY+mhKbKRMOhpX/WkVj9OlsWzAFMk8Cg== X-Gm-Gg: ASbGnctwd8dpVsU7yBofkZJEcSjJfM7sQdVUTkfn+JVTQ9Os9fQkicCcuzYCRHiXQmh GptwbUg+Vl1LoUjRjDWupq15avtcyooWybCtz/mXipIuU38YU0Hpeg8CwYj8tlzbb/HEU7AkFbT 7IHHT3KQmcfvfanzrR0rPWWWiCYptv8jT3GhhTBe0XDcSVzlshD+VphBmelmxfAJdv3CA/99uwL N8PKLNsS9/qFB9/1egc32Zgw+fzNMzP/QPVrJlXAu56qhEyf0/VNCSu5TRDu9WuP4xNeTGpOkBm QCdrtyOgvJw5Gju1Qo6019pmqLsuI4/zm+7EjSUymJn7g3Why2o= X-Google-Smtp-Source: AGHT+IFai/yXZpdJFENUX4ZlQiWu7uBV1XuOa5w5Wuj2R2Iud8fxrRxjN9JaeR87R9XhpZ+WRNJ6OA== X-Received: by 2002:a17:90a:d44c:b0:2ff:6488:e026 with SMTP id 98e67ed59e1d1-2ff7cf26d18mr24494146a91.30.1741697970645; Tue, 11 Mar 2025 05:59:30 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 20/72] ppc/pnv: Move PNOR to offset 0 in the ISA FW space Date: Tue, 11 Mar 2025 22:57:14 +1000 Message-ID: <20250311125815.903177-21-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699711142019000 Content-Type: text/plain; charset="utf-8" skiboot has a bug that does not handle ISA FW access correctly for IDSEL devices > 0, and the current PNOR default address and size puts 64MB in device 0 and 64MB in device 1, which causes skiboot to hit this bug and breaks PNOR accesses. Move the PNOR address down to 0 for now, so a 256MB PNOR can be accessed via device 0. Signed-off-by: Nicholas Piggin --- include/hw/ppc/pnv_pnor.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/hw/ppc/pnv_pnor.h b/include/hw/ppc/pnv_pnor.h index 2e37ac88bf..19c2d642e8 100644 --- a/include/hw/ppc/pnv_pnor.h +++ b/include/hw/ppc/pnv_pnor.h @@ -13,9 +13,11 @@ #include "hw/sysbus.h" =20 /* - * PNOR offset on the LPC FW address space + * PNOR offset on the LPC FW address space. For now this should be 0 becau= se + * skiboot 7.1 has a bug where IDSEL > 0 (LPC FW address > 256MB) access is + * not performed correctly. */ -#define PNOR_SPI_OFFSET 0x0c000000UL +#define PNOR_SPI_OFFSET 0x00000000UL =20 #define TYPE_PNV_PNOR "pnv-pnor" OBJECT_DECLARE_SIMPLE_TYPE(PnvPnor, PNV_PNOR) --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698060; cv=none; d=zohomail.com; s=zohoarc; b=RDfG1adaHXF3HLWbQIef+gKDZux7bMf30uIoRNeL96me1I/t8aXOd64qbG1u6m6d9LXByme+CljimEJq+4yNda4xszs/Jbjq0xM813CF4pp8xuQDd49Rso2FusR3PgdHBVWw6SMPs4aSdsGbzC0L521eFxYLwK6Wgf8ulhy3ZkQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698060; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=G3M6o0HCxEonBIrEgIZJkSZItGG16Roe3OW9YD7vpN8=; b=QCYOmUkmtpnbsxJ/iGJtX+LhqyTaCiPK8z1kwIzJBDLt1cU+Ruag3SSnhT9Gs9teA6HUW04FRvbQRFxP+MEt8XPprqA2JwEvRtRffTJ7zakzJkhAOXMqcrlL+WGXpIP9Xrz3Ubv6BcSNAy/Uw4dGv8x84CtpOrOxc4CKIJ8OOSg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698060393747.5382753675408; Tue, 11 Mar 2025 06:01:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzD0-0003L3-Eu; Tue, 11 Mar 2025 08:59:46 -0400 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 1trzCv-0002mS-K6; Tue, 11 Mar 2025 08:59:41 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCq-000800-OP; Tue, 11 Mar 2025 08:59:41 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-2ff187f027fso9043672a91.1; Tue, 11 Mar 2025 05:59:34 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697973; x=1742302773; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=G3M6o0HCxEonBIrEgIZJkSZItGG16Roe3OW9YD7vpN8=; b=mcPIO5HWu1+gRkFBq7e0+6pUgR2AHD7TcKKMkT9aHlPdpqRgihTj+Fj9iy5pXxSC6c 02Ioc/nytzelHle1AFRLOmIFX7iMbsTO9fMidqDTgAZlb1n3rQEigKo4bIVPw0GwCml6 KCmIaugBGHlKKwMMU8lGpKPfQbhu0V0SfcaS7d3doEl0MljDTDA3zhS2YB97GnrjtzJa HrYisApPxowVb0Dh7kmuAKzJZOSkyG6czPrfLFMry88IQB5ES5kUEZdcxhUvcETPSOr9 ot0llz34OyvnABsPnIvpb+jVIsfVXVPaxSPjuz+NTkTDHVwqxGSXkUKptRHEi3Z2a16m XQfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697973; x=1742302773; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=G3M6o0HCxEonBIrEgIZJkSZItGG16Roe3OW9YD7vpN8=; b=vM5lYU71nG8XynKpfNd6ZGSb5TzuPmb+LO01bc/oDG5sEPmiMmBb1WusEUtKBxAcuL nLrYbcxs286e4E+wqFSSn6t1aQ4Tce7ZDGpoT4aEiBm82hAZgrG9S9PlGfCZjQ3fZa3X GKUDnYqzhk0CpL8r9izPVPamkCwWqsH9DKOCwMRxQ9HPHBXZazpz5Jb6oV3iSgjvGs6R EFNTVvLWZrIkj8m79CBVxyEQkA+Ly1v+XKDNEedX8T/9/ADU22Tn0pxeX42SE/878Ahn QUvAIZLp0LQVxdOquFSWRjNIrUIDPPjfPRe7wWfatgLFSrudduaQl73gysyb32K1SFwd Ob/g== X-Forwarded-Encrypted: i=1; AJvYcCWGEqRiMMBgpwycSYwDd7aqJ0O50+p408gqjhl9fpZ+e/hmuvE16hCUA2+E+EJr07dEDyk1VMba5A==@nongnu.org X-Gm-Message-State: AOJu0YxUEK/4VUm0QS2obXZViKzgHFgzb+SDLytN8ObR68r96gmh/hEG rog5v6u7HLKmQFfAt8h1FFcUdGa9Qo4lDcigdBIHkzJwpf6l1Am5ToG9GQ== X-Gm-Gg: ASbGnctq0jjEAXUXCT4Aq1GIQFXOtdfqpnWeFSwxw1wvjf/M6l9fv2emxHfIRTKAa4v zskoet/LE8KxvONmej2N+EO65/nqP9pPM9mn0k5SgZ1XAyFxDDUJdt7IyjGxhcgx5EJ687WM2kS 0ES3qo76nM+3lKYXu+JkCkkZrTRjZNFptZrlXt8AMkpwPTM0DBnzki9b6J41RT3/lPAOkutmbRj Md1PbRC6f/WI70lk5mTQtX58fSRyuzP9FvQkr1+iyADZbXR22omWCG9SnIdkF9wNJ3nu/96unWZ iqUoJXvgQ/v0wG87wMtQ6ywbCS8Ncth5wbW2E7egvTX+0IvrzX8= X-Google-Smtp-Source: AGHT+IGpJ3Abqlt0qCxF/qLDb513LeEuMoZaNufLaAoM4DtPXII8Mv+lZIYo9Iq2Puj/vACSovGHVw== X-Received: by 2002:a17:90b:5403:b0:2fa:1e56:5d82 with SMTP id 98e67ed59e1d1-301005782bbmr4506063a91.17.1741697973002; Tue, 11 Mar 2025 05:59:33 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 21/72] ppc/pnv: Add a PNOR address and size sanity checks Date: Tue, 11 Mar 2025 22:57:15 +1000 Message-ID: <20250311125815.903177-22-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698062125019000 Content-Type: text/plain; charset="utf-8" The BMC HIOMAP PNOR access protocol has certain limits on PNOR addresses and sizes. Add some sanity checks for these so we don't get strange behaviour. Signed-off-by: Nicholas Piggin --- hw/ppc/pnv_bmc.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/hw/ppc/pnv_bmc.c b/hw/ppc/pnv_bmc.c index 0c1274df21..811ba3d7a4 100644 --- a/hw/ppc/pnv_bmc.c +++ b/hw/ppc/pnv_bmc.c @@ -251,10 +251,38 @@ static const IPMINetfn hiomap_netfn =3D { =20 void pnv_bmc_set_pnor(IPMIBmc *bmc, PnvPnor *pnor) { + uint32_t pnor_size =3D pnor->size; + uint32_t pnor_addr =3D PNOR_SPI_OFFSET; + if (!pnv_bmc_is_simulator(bmc)) { return; } =20 + /* + * The HIOMAP protocol uses block units and 16-bit addressing. + * Prevent overflow or misalign. + */ + if (pnor_addr >=3D 1U << (BLOCK_SHIFT + 16)) { + warn_report("PNOR address is larger than 2^%d, disabling PNOR", + BLOCK_SHIFT + 16); + return; + } + if (pnor_addr & ((1U << BLOCK_SHIFT) - 1)) { + warn_report("PNOR address is not aligned to 2^%d, disabling PNOR", + BLOCK_SHIFT); + return; + } + if (pnor_size > 1U << (BLOCK_SHIFT + 16)) { + warn_report("PNOR size is larger than 2^%d, disabling PNOR", + BLOCK_SHIFT + 16); + return; + } + if (pnor_size & ((1U << BLOCK_SHIFT) - 1)) { + warn_report("PNOR size is not aligned to 2^%d, disabling PNOR", + BLOCK_SHIFT); + return; + } + object_ref(OBJECT(pnor)); object_property_add_const_link(OBJECT(bmc), "pnor", OBJECT(pnor)); =20 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700446; cv=none; d=zohomail.com; s=zohoarc; b=n+pLyI0TIcm44F6pxQ3wUWODLPRPUzMwtnpUqJ1ZWZXX4Kp27q2z4AzOftDeQUIl9niY6+cDglANyk8+OOpQabUlpIDhvdDQ8/Vgkg3zma/CAJCVdfuDmfD8CDOgB7zlVPgT9/iPdLhEreH25nGWiATtpNm2jDWJNlJl6XRxotk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700446; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qsdA+qlvH8AULZPbvQGBXuXcb6N6318CN6Tmz9++ciM=; b=ThMfAVyM3CyKLmoRWLCWT+cnDvyE22XzAvRPmdAabCo1ApWphI+sxEAVfwmoia/nT1aiS+FgdgxiP+hAhhCe6wl++9HeUm5I0jwwgQhWn//Nr5co/Hoq2dnLqgVLgj89YiRRgoXJO2K8ajSEZAkrRnBJjNDsp4pkQ0OZ98zx+ck= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741700446383652.3566170979066; Tue, 11 Mar 2025 06:40:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzFT-0006Rx-Go; Tue, 11 Mar 2025 09:02:20 -0400 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 1trzCw-0002rK-Mw; Tue, 11 Mar 2025 08:59:42 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCr-00080X-RV; Tue, 11 Mar 2025 08:59:42 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-2ff6e91cff5so7757955a91.2; Tue, 11 Mar 2025 05:59:37 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697976; x=1742302776; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qsdA+qlvH8AULZPbvQGBXuXcb6N6318CN6Tmz9++ciM=; b=MYHb8kxyHNMa/Y5ypl1HSou/va667OPih0HOEPxp7RxbvEAaSJfVRIhyEBURAc06Mj dejyM9p8fRKg2xqyldtDHqtHJ6UNsO8BN6sMKhevf/i2huV3QY+Zl4m/NqHEZ+GOMe0n a0A4efIVzSw5H7IyNGr98Nj14SwnLHTH+a4D/M8H8JNF3nEl2V1NGZTlbJNq7KLdv2Mg cXSxSARzBlcBt3mSdPQmftjEOVMpEw/a8e4Ua0v8YQCTmmDRP0pWNY/6kNbePb9uq5tB fURoRh8bKasQyTbyLjr1vtIGI7NI+I5+ag/xcNOFx1BI/TnlkynXpi0WjiXnbn1Ar9sj uedQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697976; x=1742302776; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qsdA+qlvH8AULZPbvQGBXuXcb6N6318CN6Tmz9++ciM=; b=rKkCzKlg914RLSJHFRhaDlX+cNgWMbsysDc7e2eYjtxyTTP08sDO1k7TexPNfbuuwk xsNNNdrkrxY1ZNIvOolO+vTy93IzIcndTaS+4SbwH7c5/d67uOVKrr1GmTa5kfY7oqN2 xcxeONTCMruJvXKBLwtSEnWVBcAHE6YsNiF3Yxas+PMNKRjyCJYUlR0MgXscTkFsCEMO 0Fx+73q6GbAdX82ZSsxlkSV0b0EQtMy9Tn/TErc+U4ECQH9slTsp+kwfupSaMxihHZnA WCVuQ3pk0TtHllrvsr3hVWWMLaOJSLD2TwXB/kQejt0UuteAiipY5mRLO0E+OkfjvEky FU0Q== X-Forwarded-Encrypted: i=1; AJvYcCXesdo2DZi/WggnUyBBoYyHyCrMmiExu8KFkr3g2gk+tS6U7BU0Fbfi3A8khTtgr8uYxUbwIp4Yzw==@nongnu.org X-Gm-Message-State: AOJu0YxCHRlG9NcQLmbExLgiJpn1soVMlJR7vrQT8xpCs3uLQOjp8tGB tC78zMakik3gH3nJuWoKcemRwKCqL9VMv/3x9qtc1eTtowrTyPtTGHPhOQ== X-Gm-Gg: ASbGncvrbhwYIokjfblYRnE+RZdQ4catvzdgsADnzuh+15Enw0saSulbR0u9ZPzsleA /XMvekMg97JIc+E3w4ewAvYwhIO4qOYa7nRMHSr2RADndjcFJ4AGPrXdAFU+ZU701FkYyI7sple zNr2c3eP69VG3HKUS83rO7saLs0nD2Co+Yj7KUGYNKfprW0BW/89fcga+W4eRqa7/qEtmhKOHgy 1TDR5hxe+gAauKqGy7e9VrjnE6rU0XeSIvpLVVrRr7c0fgMiG8ss8zExTYjIwtlSVQy/TErCnXq LYK9L413Vfqaz32hqUonAt4gHG02jfGSFpCLDHmjqstgU2JjRl0= X-Google-Smtp-Source: AGHT+IFdLrbNi3hpd6CXUKedD/MwVENAVSC6zHj6ud85qI1ON1jqf9btFYMz7TKa95/80+PCJZyP/A== X-Received: by 2002:a17:90b:3883:b0:2fe:d766:ad8e with SMTP id 98e67ed59e1d1-2ff7ce74e92mr25055771a91.4.1741697975492; Tue, 11 Mar 2025 05:59:35 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 22/72] ppc/pnv: Add a default formatted PNOR image Date: Tue, 11 Mar 2025 22:57:16 +1000 Message-ID: <20250311125815.903177-23-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700448091019000 Content-Type: text/plain; charset="utf-8" The default PNOR image is erased and not recognised by skiboot, so NVRAM gets disabled. This change adds a tiny pnor file that is a proper FFS image with a formatted NVRAM partition. This is recognised by skiboot and will persist across machine reboots. Signed-off-by: Nicholas Piggin --- MAINTAINERS | 1 + docs/system/ppc/powernv.rst | 7 +++++++ hw/ppc/pnv.c | 16 +++++++++++++++- pc-bios/README | 13 +++++++++++++ pc-bios/meson.build | 1 + pc-bios/pnv-pnor.bin | Bin 0 -> 139264 bytes 6 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 pc-bios/pnv-pnor.bin diff --git a/MAINTAINERS b/MAINTAINERS index e2f538fc16..cdb3041bb2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1537,6 +1537,7 @@ F: include/hw/ppc/pnv* F: include/hw/pci-host/pnv* F: include/hw/ssi/pnv_spi* F: pc-bios/skiboot.lid +F: pc-bios/pnv-pnor.bin F: tests/qtest/pnv* F: tests/functional/test_ppc64_powernv.py =20 diff --git a/docs/system/ppc/powernv.rst b/docs/system/ppc/powernv.rst index de7a807ac7..f3ec2cc69c 100644 --- a/docs/system/ppc/powernv.rst +++ b/docs/system/ppc/powernv.rst @@ -195,6 +195,13 @@ Use a MTD drive to add a PNOR to the machine, and get = a NVRAM : =20 -drive file=3D./witherspoon.pnor,format=3Draw,if=3Dmtd =20 +If no mtd drive is provided, the powernv platform will create a default +PNOR device using a tiny formatted PNOR in pc-bios/pnv-pnor.bin opened +read-only (PNOR changes will be persistent across reboots but not across +invocations of QEMU). If no defaults are used, an erased 128MB PNOR is +provided (which skiboot will probably not recognize since it is not +formatted). + Maintainer contact information ------------------------------ =20 diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 8c0a2d0573..6fec455ff9 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -64,6 +64,8 @@ #define FW_LOAD_ADDR 0x0 #define FW_MAX_SIZE (16 * MiB) =20 +#define PNOR_FILE_NAME "pnv-pnor.bin" + #define KERNEL_LOAD_ADDR 0x20000000 #define KERNEL_MAX_SIZE (128 * MiB) #define INITRD_LOAD_ADDR 0x28000000 @@ -941,7 +943,7 @@ static void pnv_init(MachineState *machine) uint64_t chip_ram_start =3D 0; int i; char *chip_typename; - DriveInfo *pnor =3D drive_get(IF_MTD, 0, 0); + DriveInfo *pnor; DeviceState *dev; =20 if (kvm_enabled()) { @@ -971,6 +973,18 @@ static void pnv_init(MachineState *machine) * Create our simple PNOR device */ dev =3D qdev_new(TYPE_PNV_PNOR); + pnor =3D drive_get(IF_MTD, 0, 0); + if (!pnor && defaults_enabled()) { + fw_filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, PNOR_FILE_NAME= ); + if (!fw_filename) { + warn_report("Could not find PNOR '%s'", PNOR_FILE_NAME); + } else { + QemuOpts *opts; + opts =3D drive_add(IF_MTD, -1, fw_filename, "format=3Draw,read= only=3Don"); + pnor =3D drive_new(opts, IF_MTD, &error_fatal); + g_free(fw_filename); + } + } if (pnor) { qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(pnor)); } diff --git a/pc-bios/README b/pc-bios/README index a08e034fc3..f0f13e15f2 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -43,6 +43,19 @@ run an hypervisor OS or simply a host OS on the "baremetal" platform, also known as the PowerNV (Non-Virtualized) platform. =20 +- pnv-pnor.bin is a non-volatile RAM image used by PowerNV, which stores + NVRAM BIOS settings among other things. This image was created with the + following command (the ffspart tool can be found in the skiboot source t= ree): + + ffspart -s 0x1000 -c 34 -i pnv-pnor.in -p pnv-pnor.bin + + Where pnv-pnor.in contains the two lines (no leading whitespace): + + NVRAM,0x01000,0x00020000,,,/dev/zero + VERSION,0x21000,0x00001000,,,/dev/zero + + skiboot is then booted once to format the NVRAM partition. + - QemuMacDrivers (https://github.com/ozbenh/QemuMacDrivers) is a project to provide virtualised drivers for PPC MacOS guests. =20 diff --git a/pc-bios/meson.build b/pc-bios/meson.build index 51e95cc903..34d6616c32 100644 --- a/pc-bios/meson.build +++ b/pc-bios/meson.build @@ -70,6 +70,7 @@ blobs =3D [ 's390-ccw.img', 'slof.bin', 'skiboot.lid', + 'pnv-pnor.bin', 'palcode-clipper', 'u-boot.e500', 'u-boot-sam460-20100605.bin', diff --git a/pc-bios/pnv-pnor.bin b/pc-bios/pnv-pnor.bin new file mode 100644 index 0000000000000000000000000000000000000000..3e6f70014408e76d5aeca758c31= 113f3eee2da84 GIT binary patch literal 139264 zcmeI#F-pWh6adg4Z3XuTYGvUiB3M|su2Hsktrl6cs9>qBjb1>#fLMAT?;zU=3DIwKJx z*a&F???dwcWXPYH*UhM`jv}IHo|}}HBL*qOMt-$pRBkWk$LE*rZ%ti%rbu<}lm5^7 zyGJwKO}c-2yd93Ka_@J$yyjZ7{!*&*I3iaa$H()_!+57U+}$6xJFlm~&-t6P=3Djrax z|F(F)%jXmX2oNAZfB*pk1PBlyK;XXu2d_m;C$p`K)9IwH|GL_@uexdi1PBlyK!5-N z0t5&UAV8px0`rwYoYb>feb&d_+cN~(+J_HC5AV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U jAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly&@X{6e@Sm% literal 0 HcmV?d00001 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699597; cv=none; d=zohomail.com; s=zohoarc; b=Bw+gCQOAW/b4tq+FOpzUuXg05Kld4AnR3IG1m1YxIGLrq5RW+OfVaHr6vJwEYEU6Y4zX84+9Fqrw3G/xm3NSzXWD8+cbmR83YTKlIjsgVpAyuzsX8LWY4GZrhT+8rzAhTsfR5cWdYbu31pWdFlDwvKVYTmfg/zJOxJQ9/Ima8cM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699597; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YqPpSFq/0fdsjmu5dGyUqROl/b/bn7/APbML/SqYVto=; b=dmJ5GUXOf61AAWkcwKDNeh4YL4Svuvv8dUG3tDrzsoaFTtHKDC3huECK8EKRf+KtC8CcesnQ/pzs5j5+py3Q7ATT2zq+/Epxmvgoes7c02lxsT65vl/c67SDQL9IJAsETd6k9EHxGErKVZiqQ1BPCGv6BwCawyWQd7YIRNmpd9A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699597221315.6048849743646; Tue, 11 Mar 2025 06:26:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzFa-000704-Up; Tue, 11 Mar 2025 09:02:28 -0400 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 1trzCy-000364-Fu; Tue, 11 Mar 2025 08:59:45 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCw-00080x-3m; Tue, 11 Mar 2025 08:59:44 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-2fee4d9c2efso9001086a91.3; Tue, 11 Mar 2025 05:59:40 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697979; x=1742302779; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YqPpSFq/0fdsjmu5dGyUqROl/b/bn7/APbML/SqYVto=; b=kYojWAGgc5DUc8wymJqbAQxpCVfgANWwY8UHbfUXVHeI9sEYo4H1AIkLuyNiq8tA31 PwR0/HEDKb1ysDov1/fUKt+Kaeofe23Sgd/4I1ou9sktkp8n5CtbNKitf8WUngHUlpN+ UFS0UZz8BU4bpHRZX2uVqK8oN1D7U+QcjCwAxYkG28X6TFxO5x4+WSSJA62FcVkrl2/N +7b3pdZ5LKJNq3P5KYEPIicUe3oBayJ0xEWzkls/KFXjtu2NJKTx5MOkl0BV4JXfW5gf VrqDapPDucgvPb/2JHCHFUrbGRHuur462IjdGGHsf6+3otRpAJ1hSlXI4ZHgC9bdBsSX xeFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697979; x=1742302779; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YqPpSFq/0fdsjmu5dGyUqROl/b/bn7/APbML/SqYVto=; b=cnLI6NzE7MKpqmUanOOw15ELF2vROwOQvW+uTBwjAO/6T5WJOwD4BFwoAmVGshm9Bq eJ6HpuoNOoH1UCwNYBEdSlx0X5DKisu1zr+J+as89pOR8oK5SJ/ML4z+AJj3gto93dUd CBnUNdWSI5PHmFF1GQ66o0eaKkQ7rD05Sj2iPpyHaqmUl7qMEuo0AGQ/XwB8lwkkAR4D eDj0ZqCNByNGQNRBZAXstjjsI/iAZBS5yRSDaK/eYdzdi8mu2JFd5o+UH/nASgcdcQz9 /9GGiLOILvooJutqrKDIN/odG9xoz7nUtZ9SYHd4B8LNePi0edbK9uf1rjPz8TbvehV/ 39Hg== X-Forwarded-Encrypted: i=1; AJvYcCUOYtMj0mcsT5o4QyHkmzyZzMwkvh1NCjjz8/e6cR8NelRX36BKWH8CPn0lOktgGh+FT5lOGE3qpg==@nongnu.org X-Gm-Message-State: AOJu0Ywm5Jfl8VYFyVpXGk+zrmFv2RyCbN1Q8THxoFBPhkHTG97X6lx/ WGTjC5Y2uV6WUw+JrlZKyJjSGvkbPRC8ULz1skX0k/uD+4Due0csXMFjEQ== X-Gm-Gg: ASbGncvEYmqQrrwerTHgloAypKsReViBX6RWQNrnktbEwBIf8fAbned1rkyCV5XMYDH 80uiWNBOU41miCYogdBlvAnXlTEp0UIAsWzfBicSNQTjpEWszvpRj2gBpBx2Cxn7EVMPKvC7GRO /Ritfk5N+zMJkL5XiXTg/08yL0sVeJuZZ2NOJzHOcVR75H2/ltB4Vp9DQiWGw+ARDKbR/LpM/gi 6J791SmUvS969SN0yGC544KFVYVyegAYQ9nA5DoV7OZt0yfzoBjPMfOkkl6k0mbTDoGrZvx6Nl9 sNVSr+T6m5NbnltgkxRv77OvqSo0eQ8EimrhKkazy9bEYD8hRJYDYVTof5fBpg== X-Google-Smtp-Source: AGHT+IFCLboP2NEYVER6Ia/nktt0alb7IBxusg86yBWU41313CNd0zQswT6vFclWJ+klo6cKjlNAzw== X-Received: by 2002:a17:90b:1a8c:b0:2ee:aa28:79aa with SMTP id 98e67ed59e1d1-2ff7ce524ebmr25368424a91.6.1741697978701; Tue, 11 Mar 2025 05:59:38 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Frederic Barrat , Michael Kowal Subject: [PULL 23/72] ppc/xive2: Update NVP save/restore for group attributes Date: Tue, 11 Mar 2025 22:57:17 +1000 Message-ID: <20250311125815.903177-24-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699599650019100 Content-Type: text/plain; charset="utf-8" From: Frederic Barrat If the 'H' attribute is set on the NVP structure, the hardware automatically saves and restores some attributes from the TIMA in the NVP structure. The group-specific attributes LSMFB, LGS and T have an extra flag to individually control what is saved/restored. Signed-off-by: Frederic Barrat Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- hw/intc/xive2.c | 23 ++++++++++++++++++----- include/hw/ppc/xive2_regs.h | 10 +++++++--- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index fc5aed3315..cd075e4db9 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -1,10 +1,9 @@ /* * QEMU PowerPC XIVE2 interrupt controller model (POWER10) * - * Copyright (c) 2019-2022, IBM Corporation.. + * Copyright (c) 2019-2024, IBM Corporation.. * - * This code is licensed under the GPL version 2 or later. See the - * COPYING file in the top-level directory. + * SPDX-License-Identifier: GPL-2.0-or-later */ =20 #include "qemu/osdep.h" @@ -313,7 +312,19 @@ static void xive2_tctx_save_ctx(Xive2Router *xrtr, Xiv= eTCTX *tctx, =20 nvp.w2 =3D xive_set_field32(NVP2_W2_IPB, nvp.w2, regs[TM_IPB]); nvp.w2 =3D xive_set_field32(NVP2_W2_CPPR, nvp.w2, regs[TM_CPPR]); - nvp.w2 =3D xive_set_field32(NVP2_W2_LSMFB, nvp.w2, regs[TM_LSMFB]); + if (nvp.w0 & NVP2_W0_L) { + /* + * Typically not used. If LSMFB is restored with 0, it will + * force a backlog rescan + */ + nvp.w2 =3D xive_set_field32(NVP2_W2_LSMFB, nvp.w2, regs[TM_LSMFB]); + } + if (nvp.w0 & NVP2_W0_G) { + nvp.w2 =3D xive_set_field32(NVP2_W2_LGS, nvp.w2, regs[TM_LGS]); + } + if (nvp.w0 & NVP2_W0_T) { + nvp.w2 =3D xive_set_field32(NVP2_W2_T, nvp.w2, regs[TM_T]); + } xive2_router_write_nvp(xrtr, nvp_blk, nvp_idx, &nvp, 2); =20 nvp.w1 =3D xive_set_field32(NVP2_W1_CO, nvp.w1, 0); @@ -527,7 +538,9 @@ static uint8_t xive2_tctx_restore_os_ctx(Xive2Router *x= rtr, XiveTCTX *tctx, xive2_router_write_nvp(xrtr, nvp_blk, nvp_idx, nvp, 2); =20 tctx->regs[TM_QW1_OS + TM_CPPR] =3D cppr; - /* we don't model LSMFB */ + tctx->regs[TM_QW1_OS + TM_LSMFB] =3D xive_get_field32(NVP2_W2_LSMFB, n= vp->w2); + tctx->regs[TM_QW1_OS + TM_LGS] =3D xive_get_field32(NVP2_W2_LGS, nvp->= w2); + tctx->regs[TM_QW1_OS + TM_T] =3D xive_get_field32(NVP2_W2_T, nvp->w2); =20 nvp->w1 =3D xive_set_field32(NVP2_W1_CO, nvp->w1, 1); nvp->w1 =3D xive_set_field32(NVP2_W1_CO_THRID_VALID, nvp->w1, 1); diff --git a/include/hw/ppc/xive2_regs.h b/include/hw/ppc/xive2_regs.h index 1d00c8df64..e88d6eab1e 100644 --- a/include/hw/ppc/xive2_regs.h +++ b/include/hw/ppc/xive2_regs.h @@ -1,10 +1,9 @@ /* * QEMU PowerPC XIVE2 internal structure definitions (POWER10) * - * Copyright (c) 2019-2022, IBM Corporation. + * Copyright (c) 2019-2024, IBM Corporation. * - * This code is licensed under the GPL version 2 or later. See the - * COPYING file in the top-level directory. + * SPDX-License-Identifier: GPL-2.0-or-later */ =20 #ifndef PPC_XIVE2_REGS_H @@ -152,6 +151,9 @@ typedef struct Xive2Nvp { uint32_t w0; #define NVP2_W0_VALID PPC_BIT32(0) #define NVP2_W0_HW PPC_BIT32(7) +#define NVP2_W0_L PPC_BIT32(8) +#define NVP2_W0_G PPC_BIT32(9) +#define NVP2_W0_T PPC_BIT32(10) #define NVP2_W0_ESC_END PPC_BIT32(25) /* 'N' bit 0:ESB 1:END */ #define NVP2_W0_PGOFIRST PPC_BITMASK32(26, 31) uint32_t w1; @@ -163,6 +165,8 @@ typedef struct Xive2Nvp { #define NVP2_W2_CPPR PPC_BITMASK32(0, 7) #define NVP2_W2_IPB PPC_BITMASK32(8, 15) #define NVP2_W2_LSMFB PPC_BITMASK32(16, 23) +#define NVP2_W2_T PPC_BIT32(27) +#define NVP2_W2_LGS PPC_BITMASK32(28, 31) uint32_t w3; uint32_t w4; #define NVP2_W4_ESC_ESB_BLOCK PPC_BITMASK32(0, 3) /* N:0 */ --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741701285; cv=none; d=zohomail.com; s=zohoarc; b=bfveevU4CQfWQY+zPVdgXMGMiOPnR+zN+AoqSI/piCsSXegArw6t9fVlqYjsOWU0hwUIsNpdK6ylUpvSdJrefCwGnuBUOWfgpHwogG0N8OxShOn7Pf52FDBAwMkiS35c7J5gQbdfod2NBSCeRHZy9A4dyHLi4THNlR75URxo56g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741701285; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GRjGMMyN8Fta0GJMwT6WyLidcFv71ZTmFrwphwzXpVk=; b=lL+9vjWY7Byjyb3Z4nHYSjIMPSDHu3uYdojxhZS7uh2FWwME/2fP3GSOwHJNdwoDy4R1c455tvzihpDJuXZ0/CTF419GdxDU+O5S6IK/xT8LE5fA+N/ywyMOuIBDsDt6ZgSTWoFXuSQqzYHykF/TkyQFfNT2dLpQceKDWpDWcLY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741701285081214.52897842542257; Tue, 11 Mar 2025 06:54:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzGR-0007yv-8D; Tue, 11 Mar 2025 09:03:20 -0400 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 1trzD0-0003Hr-21; Tue, 11 Mar 2025 08:59:46 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCx-00081L-UP; Tue, 11 Mar 2025 08:59:45 -0400 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-2ff615a114bso9409631a91.0; Tue, 11 Mar 2025 05:59:42 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697981; x=1742302781; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GRjGMMyN8Fta0GJMwT6WyLidcFv71ZTmFrwphwzXpVk=; b=KBSbvW9mT9ddb5wFaCIzW/+Zb9g1GsHjFds+0t2c5SIH2RWh/0D4B2xZhrp9KSlSVD NfuRJ4Gu0bvWgHnTIQLBlx+kMgFCV3MfuZYdHKdJ+Zv1Q5TicN8giEr4ZrDoWnbySjI5 FJKyCKoey6++0Zb9Cp3x0UA4kVamRxXUHHEQwzZR9rqgRPNfGVKcieO9fLC2qRIpw5+S Is6/Aj/rI82CTPynBVtmeOcWkZWjc0FTkgbdViyn/AMRbHRC4XASYnUaRcqwzUyPZf7o g3KUvHl781TFsu6v3TgCFHXF4kQKwsijXFmJ7rZmZGzDIIv/D7Tb7msR5fE7/kIcdZDp XGfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697981; x=1742302781; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GRjGMMyN8Fta0GJMwT6WyLidcFv71ZTmFrwphwzXpVk=; b=NgBS38ndc0cKDmdy6q8Wo4vlQBEk8zqKMUlMPk51FzAGPFRsJQ8ols/95zp+PbBjpe 32bQwVOdY9G+3qZFyZI8y/TaUgutq7x2VT7ERme3XpGcke7EU5mYLkjO88x4dSfBoZ5v aWyFePsgDdkrWKgWUrzjU0gScw+4Qy0YVnGY0TDKHU5VWCkGEqw2xsjHoqrvzGP+jDQn om/D8x8BcFAaspb8w0s1meltv/GFHWzEKX3R2TrOzmEMw2KaAFV0Lmyotz9XbqzIjj9D dezy6P2iABSSCeeG807RbqzV33Q3WkCCDrc1VnC0zs9KvUV3gV/NxCPxYVyMg0Nlj9FS N10g== X-Forwarded-Encrypted: i=1; AJvYcCXOjYk6hxWTBjGMRozhQsfvztFxL6SUgPUIA1K3Fn+LctEONhq9zwdQZoVfsXzwXDpudHYAapLusw==@nongnu.org X-Gm-Message-State: AOJu0YxOMt7iAbfiDfSh1EmU6hth9GZHSLti7o4v4auFOx1UzwLAdrFd HvN5aJh5YBtRv9wdBYkKJGx1zlmCXFyUjw4yebnycbEyZHq0rxlKWlVwFQ== X-Gm-Gg: ASbGncsZ1FTJ7lQqDYA3C/z/oLoZ9Qiejw3J0hLLIXiRlvAfj4f6Vi02rryQHBsnKGr oTkwWD3BYqF5kEw6xL0PfXsNKGu1BtuE2TMtKeHGWhmkFJscMa+eacIcnv+lAhyVbfvkngbdjs6 F6RqoqsBRwcr1J6NLez1YtZfusVdkDr18CB70aecpVBhXwE/GQhMk3yg/G63bVENVIvEJQEmv4o fIAQgR/0Oz3Z7jh7DOEx8UHdwJDRxynZHtIfeEjVxE7NpdLP16Eu32Xa4urEe911EjHyPyhSBas IYUpD6f8n7p969GM7gpyNOcIRztI8FtZgxybh8UGwRnY+bZKi9c= X-Google-Smtp-Source: AGHT+IGlDc6s3YJsqfn76XrlHsjEZ1RPr/bFxF9kUztMEsytOBLmIYr82HlGHywm0x4NR18qXrtByA== X-Received: by 2002:a17:90b:384a:b0:2ee:9661:eafb with SMTP id 98e67ed59e1d1-30100546828mr4565682a91.12.1741697981420; Tue, 11 Mar 2025 05:59:41 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Michael Kowal Subject: [PULL 24/72] ppc/xive: Rename ipb_to_pipr() to xive_ipb_to_pipr() Date: Tue, 11 Mar 2025 22:57:18 +1000 Message-ID: <20250311125815.903177-25-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1032.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741701288037019100 Content-Type: text/plain; charset="utf-8" From: Michael Kowal Rename to follow the convention of the other function names. Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- hw/intc/xive.c | 22 ++++++---------------- include/hw/ppc/xive.h | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/hw/intc/xive.c b/hw/intc/xive.c index 139cfdf9bf..f603d9f1a5 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -3,8 +3,7 @@ * * Copyright (c) 2017-2018, IBM Corporation. * - * This code is licensed under the GPL version 2 or later. See the - * COPYING file in the top-level directory. + * SPDX-License-Identifier: GPL-2.0-or-later */ =20 #include "qemu/osdep.h" @@ -27,15 +26,6 @@ * XIVE Thread Interrupt Management context */ =20 -/* - * Convert an Interrupt Pending Buffer (IPB) register to a Pending - * Interrupt Priority Register (PIPR), which contains the priority of - * the most favored pending notification. - */ -static uint8_t ipb_to_pipr(uint8_t ibp) -{ - return ibp ? clz32((uint32_t)ibp << 24) : 0xff; -} =20 static uint8_t exception_mask(uint8_t ring) { @@ -159,7 +149,7 @@ static void xive_tctx_set_cppr(XiveTCTX *tctx, uint8_t = ring, uint8_t cppr) * Recompute the PIPR based on local pending interrupts. The PHYS * ring must take the minimum of both the PHYS and POOL PIPR values. */ - pipr_min =3D ipb_to_pipr(regs[TM_IPB]); + pipr_min =3D xive_ipb_to_pipr(regs[TM_IPB]); ring_min =3D ring; =20 /* PHYS updates also depend on POOL values */ @@ -169,7 +159,7 @@ static void xive_tctx_set_cppr(XiveTCTX *tctx, uint8_t = ring, uint8_t cppr) /* POOL values only matter if POOL ctx is valid */ if (pool_regs[TM_WORD2] & 0x80) { =20 - uint8_t pool_pipr =3D ipb_to_pipr(pool_regs[TM_IPB]); + uint8_t pool_pipr =3D xive_ipb_to_pipr(pool_regs[TM_IPB]); =20 /* * Determine highest priority interrupt and @@ -193,7 +183,7 @@ void xive_tctx_ipb_update(XiveTCTX *tctx, uint8_t ring,= uint8_t ipb) uint8_t *regs =3D &tctx->regs[ring]; =20 regs[TM_IPB] |=3D ipb; - regs[TM_PIPR] =3D ipb_to_pipr(regs[TM_IPB]); + regs[TM_PIPR] =3D xive_ipb_to_pipr(regs[TM_IPB]); xive_tctx_notify(tctx, ring); } =20 @@ -841,9 +831,9 @@ void xive_tctx_reset(XiveTCTX *tctx) * CPPR is first set. */ tctx->regs[TM_QW1_OS + TM_PIPR] =3D - ipb_to_pipr(tctx->regs[TM_QW1_OS + TM_IPB]); + xive_ipb_to_pipr(tctx->regs[TM_QW1_OS + TM_IPB]); tctx->regs[TM_QW3_HV_PHYS + TM_PIPR] =3D - ipb_to_pipr(tctx->regs[TM_QW3_HV_PHYS + TM_IPB]); + xive_ipb_to_pipr(tctx->regs[TM_QW3_HV_PHYS + TM_IPB]); } =20 static void xive_tctx_realize(DeviceState *dev, Error **errp) diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h index ea5d03a346..75276b9ba6 100644 --- a/include/hw/ppc/xive.h +++ b/include/hw/ppc/xive.h @@ -130,11 +130,9 @@ * TCTX Thread interrupt Context * * - * Copyright (c) 2017-2018, IBM Corporation. - * - * This code is licensed under the GPL version 2 or later. See the - * COPYING file in the top-level directory. + * Copyright (c) 2017-2024, IBM Corporation. * + * SPDX-License-Identifier: GPL-2.0-or-later */ =20 #ifndef PPC_XIVE_H @@ -510,6 +508,16 @@ static inline uint8_t xive_priority_to_ipb(uint8_t pri= ority) 0 : 1 << (XIVE_PRIORITY_MAX - priority); } =20 +/* + * Convert an Interrupt Pending Buffer (IPB) register to a Pending + * Interrupt Priority Register (PIPR), which contains the priority of + * the most favored pending notification. + */ +static inline uint8_t xive_ipb_to_pipr(uint8_t ibp) +{ + return ibp ? clz32((uint32_t)ibp << 24) : 0xff; +} + /* * XIVE Thread Interrupt Management Aera (TIMA) * --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700786; cv=none; d=zohomail.com; s=zohoarc; b=kx2689sYPM85VeDIXeRqrFVdPgcYja41Pwv+mgVN0jahaICnKC6edG5rkCzjtdoPa1qUpSaW7xUH4328Dq5nDtOY8HVhlBv12/XKP3MDSoKcrrawy+0lSXkyZJNhhvjq5BIUsZ91HlaZ/fDoEVhmoX2NF/kKR7cUrfQJ9sbN7Hw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700786; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dW2SVkFDquqc+hhC+TtvF/CU3vzLH2zU4mYHOp2YaJk=; b=nfpBCnEe6Xn6g/B3wgRsitmcC9H4VoEUQi6giKXJDhvJKFAcOylGUkhqRGRLT05eQX2N6WD9fbBRjVV1KDhnsH23/3GDSN8kEnGWYlheHgxc5gT3zo+rgFV97LebULCoWpl31i3g9xLMWzOn1HqgDMAfm+46DUdp3mNmxosjwZo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741700786082157.12814629254933; Tue, 11 Mar 2025 06:46:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzGZ-00008w-SH; Tue, 11 Mar 2025 09:03:28 -0400 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 1trzD9-0003mH-62; Tue, 11 Mar 2025 08:59:55 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzD4-00082A-1R; Tue, 11 Mar 2025 08:59:54 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-2feb96064e4so10447910a91.1; Tue, 11 Mar 2025 05:59:47 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697985; x=1742302785; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dW2SVkFDquqc+hhC+TtvF/CU3vzLH2zU4mYHOp2YaJk=; b=G+vHpizrH8bOgIuc4wOR3J/mlGpRcRFFySzFThxMXNPHNJ5E8WOl2t/t5kNP9TtNby CU1I3qGLN+EI45TATQW9voBVXAG/LKKKecsS63j7aVBWfbldMm1FdzeZzR7iD2JkOVvQ JPujZUUV+0aI6Nh6gSGTLvanXHrgdO2RH9gFpSq7kVkfn6sNPqacI8vlYc10fFOUG/m/ w3QIPdnnIoZibD0Z9iyi1Rn6xDRfibTebmunYnFWlE8q0CoWzNwLMM8J0tY3/vl+Y69G LrRKYfPxB8DV6HWBED7+JsH+99xU/rSl4WGCg1LcG5OedY7aTcjUVWSh7NtNk2FlWwWk mI7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697985; x=1742302785; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dW2SVkFDquqc+hhC+TtvF/CU3vzLH2zU4mYHOp2YaJk=; b=ZQjLDMgRfoGBcFqpZdE5OqbknPpUwFmwlBV0jcU0joUY2bHBuWUSX1W1G3lgCCLTWa 9scBmDFiqp0cPAm4WlTl/rdH8Tct917A4pxdYuymdc1+dJ1QvZDb+xCoI0nx2wJ0g6YA j7lyhHnmGHiS3v64FafSc7UToRQKdjUo26pepVEMNH47VAKx5vjIOkOLY4ZBwXTY79X3 0u1o4Xh8YzUINcH20HflSUY5HsQCDZY8vEwgGJRbrF5jJbU3bUGQhOFBHiFvrQilr376 BeUNhnANGqfQQF3/bsZud0ryoxEzJp8TV2+A2DIlJd9IygXu8akepE9rlnAQTqjxfqbf NlQw== X-Forwarded-Encrypted: i=1; AJvYcCWXyrJ62h2PFYTbNo+bf1/++KYihOBjezpEU9fRZkqzCymTDWEArKF8jPalMKZE0Q4GWxrCc+zvow==@nongnu.org X-Gm-Message-State: AOJu0YwsUGDZbjcOBO+4Qx/x9GGETPdD48koLhwxvmvge57CtTWx0EH9 ZrwHVi/K98Yr6fIS50Xd7Mt7Lh53Q+dziuAJAGeps5MircVA03D1foUI1w== X-Gm-Gg: ASbGncvkBh4vi/EeyEKlO54uZygawr4vmxJJDjlTNxnKZHT2v6ox/Rvcu4ghDdINVyi zi3p3E/aNWazkQ2S1mBMaWuV0MBCQ8j/huxii0SfJe4hqvHz0dojkpnYA4LdlE3qnwITArWTKUz vsT1SM6fpBXL537TsklH/y9+6SnNOB6+pjDfxI76Ia1vXLMre/3g4ydNb2RttLJc+BRVgOYVPKv QVqc9K3F+kP4EQNV1VCM3QEkPK7LoEKL+ahKsx/J9fLrxeqdRJQ/lLHpFZiN5Xm8UAfgrQu+F2H cgMUhmkfIyYPVE7f3KWH1+sOfA7YSzqCOk5vM1GMrR0Rzj36300= X-Google-Smtp-Source: AGHT+IE1GT1X12NBUfBkLV7JsleMYRTncW/WdB4w+kQhbgxFUJkXymx+y5OGUa3NTuJItDyydpQOpg== X-Received: by 2002:a17:90b:2e42:b0:2ff:7cb8:6eca with SMTP id 98e67ed59e1d1-2ff7ced77eemr27811042a91.24.1741697984451; Tue, 11 Mar 2025 05:59:44 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Frederic Barrat , Michael Kowal Subject: [PULL 25/72] ppc/xive2: Add grouping level to notification Date: Tue, 11 Mar 2025 22:57:19 +1000 Message-ID: <20250311125815.903177-26-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700788123019000 Content-Type: text/plain; charset="utf-8" From: Frederic Barrat The NSR has a (so far unused) grouping level field. When a interrupt is presented, that field tells the hypervisor or OS if the interrupt is for an individual VP or for a VP-group/crowd. This patch reworks the presentation API to allow to set/unset the level when raising/accepting an interrupt. It also renames xive_tctx_ipb_update() to xive_tctx_pipr_update() as the IPB is only used for VP-specific target, whereas the PIPR always needs to be updated. Signed-off-by: Frederic Barrat Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- hw/intc/trace-events | 2 +- hw/intc/xive.c | 88 ++++++++++++++++++++++---------------- hw/intc/xive2.c | 19 ++++---- include/hw/ppc/xive.h | 9 +++- include/hw/ppc/xive_regs.h | 25 ++++++++--- 5 files changed, 90 insertions(+), 53 deletions(-) diff --git a/hw/intc/trace-events b/hw/intc/trace-events index 913197a181..e9fe1978f9 100644 --- a/hw/intc/trace-events +++ b/hw/intc/trace-events @@ -283,7 +283,7 @@ xive_router_end_notify(uint8_t end_blk, uint32_t end_id= x, uint32_t end_data) "EN xive_router_end_escalate(uint8_t end_blk, uint32_t end_idx, uint8_t esc_bl= k, uint32_t esc_idx, uint32_t end_data) "END 0x%02x/0x%04x -> escalate END = 0x%02x/0x%04x data 0x%08x" xive_tctx_tm_write(uint32_t index, uint64_t offset, unsigned int size, uin= t64_t value) "target=3D%d @0x%"PRIx64" sz=3D%d val=3D0x%" PRIx64 xive_tctx_tm_read(uint32_t index, uint64_t offset, unsigned int size, uint= 64_t value) "target=3D%d @0x%"PRIx64" sz=3D%d val=3D0x%" PRIx64 -xive_presenter_notify(uint8_t nvt_blk, uint32_t nvt_idx, uint8_t ring) "fo= und NVT 0x%x/0x%x ring=3D0x%x" +xive_presenter_notify(uint8_t nvt_blk, uint32_t nvt_idx, uint8_t ring, uin= t8_t group_level) "found NVT 0x%x/0x%x ring=3D0x%x group_level=3D%d" xive_end_source_read(uint8_t end_blk, uint32_t end_idx, uint64_t addr) "EN= D 0x%x/0x%x @0x%"PRIx64 =20 # pnv_xive.c diff --git a/hw/intc/xive.c b/hw/intc/xive.c index f603d9f1a5..1e362f987a 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -26,19 +26,6 @@ * XIVE Thread Interrupt Management context */ =20 - -static uint8_t exception_mask(uint8_t ring) -{ - switch (ring) { - case TM_QW1_OS: - return TM_QW1_NSR_EO; - case TM_QW3_HV_PHYS: - return TM_QW3_NSR_HE; - default: - g_assert_not_reached(); - } -} - static qemu_irq xive_tctx_output(XiveTCTX *tctx, uint8_t ring) { switch (ring) { @@ -58,11 +45,10 @@ static uint64_t xive_tctx_accept(XiveTCTX *tctx, uint8_= t ring) { uint8_t *regs =3D &tctx->regs[ring]; uint8_t nsr =3D regs[TM_NSR]; - uint8_t mask =3D exception_mask(ring); =20 qemu_irq_lower(xive_tctx_output(tctx, ring)); =20 - if (regs[TM_NSR] & mask) { + if (regs[TM_NSR] !=3D 0) { uint8_t cppr =3D regs[TM_PIPR]; uint8_t alt_ring; uint8_t *alt_regs; @@ -77,11 +63,18 @@ static uint64_t xive_tctx_accept(XiveTCTX *tctx, uint8_= t ring) =20 regs[TM_CPPR] =3D cppr; =20 - /* Reset the pending buffer bit */ - alt_regs[TM_IPB] &=3D ~xive_priority_to_ipb(cppr); + /* + * If the interrupt was for a specific VP, reset the pending + * buffer bit, otherwise clear the logical server indicator + */ + if (regs[TM_NSR] & TM_NSR_GRP_LVL) { + regs[TM_NSR] &=3D ~TM_NSR_GRP_LVL; + } else { + alt_regs[TM_IPB] &=3D ~xive_priority_to_ipb(cppr); + } =20 - /* Drop Exception bit */ - regs[TM_NSR] &=3D ~mask; + /* Drop the exception bit and any group/crowd */ + regs[TM_NSR] =3D 0; =20 trace_xive_tctx_accept(tctx->cs->cpu_index, alt_ring, alt_regs[TM_IPB], regs[TM_PIPR], @@ -91,7 +84,7 @@ static uint64_t xive_tctx_accept(XiveTCTX *tctx, uint8_t = ring) return ((uint64_t)nsr << 8) | regs[TM_CPPR]; } =20 -static void xive_tctx_notify(XiveTCTX *tctx, uint8_t ring) +void xive_tctx_notify(XiveTCTX *tctx, uint8_t ring, uint8_t group_level) { /* HV_POOL ring uses HV_PHYS NSR, CPPR and PIPR registers */ uint8_t alt_ring =3D (ring =3D=3D TM_QW2_HV_POOL) ? TM_QW3_HV_PHYS : r= ing; @@ -101,13 +94,13 @@ static void xive_tctx_notify(XiveTCTX *tctx, uint8_t r= ing) if (alt_regs[TM_PIPR] < alt_regs[TM_CPPR]) { switch (ring) { case TM_QW1_OS: - regs[TM_NSR] |=3D TM_QW1_NSR_EO; + regs[TM_NSR] =3D TM_QW1_NSR_EO | (group_level & 0x3F); break; case TM_QW2_HV_POOL: - alt_regs[TM_NSR] =3D (TM_QW3_NSR_HE_POOL << 6); + alt_regs[TM_NSR] =3D (TM_QW3_NSR_HE_POOL << 6) | (group_level = & 0x3F); break; case TM_QW3_HV_PHYS: - regs[TM_NSR] |=3D (TM_QW3_NSR_HE_PHYS << 6); + regs[TM_NSR] =3D (TM_QW3_NSR_HE_PHYS << 6) | (group_level & 0x= 3F); break; default: g_assert_not_reached(); @@ -175,17 +168,27 @@ static void xive_tctx_set_cppr(XiveTCTX *tctx, uint8_= t ring, uint8_t cppr) regs[TM_PIPR] =3D pipr_min; =20 /* CPPR has changed, check if we need to raise a pending exception */ - xive_tctx_notify(tctx, ring_min); + xive_tctx_notify(tctx, ring_min, 0); } =20 -void xive_tctx_ipb_update(XiveTCTX *tctx, uint8_t ring, uint8_t ipb) -{ +void xive_tctx_pipr_update(XiveTCTX *tctx, uint8_t ring, uint8_t priority, + uint8_t group_level) + { + /* HV_POOL ring uses HV_PHYS NSR, CPPR and PIPR registers */ + uint8_t alt_ring =3D (ring =3D=3D TM_QW2_HV_POOL) ? TM_QW3_HV_PHYS : r= ing; + uint8_t *alt_regs =3D &tctx->regs[alt_ring]; uint8_t *regs =3D &tctx->regs[ring]; =20 - regs[TM_IPB] |=3D ipb; - regs[TM_PIPR] =3D xive_ipb_to_pipr(regs[TM_IPB]); - xive_tctx_notify(tctx, ring); -} + if (group_level =3D=3D 0) { + /* VP-specific */ + regs[TM_IPB] |=3D xive_priority_to_ipb(priority); + alt_regs[TM_PIPR] =3D xive_ipb_to_pipr(regs[TM_IPB]); + } else { + /* VP-group */ + alt_regs[TM_PIPR] =3D xive_priority_to_pipr(priority); + } + xive_tctx_notify(tctx, ring, group_level); + } =20 /* * XIVE Thread Interrupt Management Area (TIMA) @@ -401,13 +404,13 @@ static void xive_tm_set_os_lgs(XivePresenter *xptr, X= iveTCTX *tctx, } =20 /* - * Adjust the IPB to allow a CPU to process event queues of other + * Adjust the PIPR to allow a CPU to process event queues of other * priorities during one physical interrupt cycle. */ static void xive_tm_set_os_pending(XivePresenter *xptr, XiveTCTX *tctx, hwaddr offset, uint64_t value, unsigned= size) { - xive_tctx_ipb_update(tctx, TM_QW1_OS, xive_priority_to_ipb(value & 0xf= f)); + xive_tctx_pipr_update(tctx, TM_QW1_OS, value & 0xff, 0); } =20 static void xive_os_cam_decode(uint32_t cam, uint8_t *nvt_blk, @@ -485,16 +488,20 @@ static void xive_tctx_need_resend(XiveRouter *xrtr, X= iveTCTX *tctx, /* Reset the NVT value */ nvt.w4 =3D xive_set_field32(NVT_W4_IPB, nvt.w4, 0); xive_router_write_nvt(xrtr, nvt_blk, nvt_idx, &nvt, 4); + + uint8_t *regs =3D &tctx->regs[TM_QW1_OS]; + regs[TM_IPB] |=3D ipb; } + /* - * Always call xive_tctx_ipb_update(). Even if there were no + * Always call xive_tctx_pipr_update(). Even if there were no * escalation triggered, there could be a pending interrupt which * was saved when the context was pulled and that we need to take * into account by recalculating the PIPR (which is not * saved/restored). * It will also raise the External interrupt signal if needed. */ - xive_tctx_ipb_update(tctx, TM_QW1_OS, ipb); + xive_tctx_pipr_update(tctx, TM_QW1_OS, 0xFF, 0); /* fxb */ } =20 /* @@ -1648,6 +1655,12 @@ static uint32_t xive_tctx_hw_cam_line(XivePresenter = *xptr, XiveTCTX *tctx) return xive_nvt_cam_line(blk, 1 << 7 | (pir & 0x7f)); } =20 +static uint8_t xive_get_group_level(uint32_t nvp_index) +{ + /* FIXME add crowd encoding */ + return ctz32(~nvp_index) + 1; +} + /* * The thread context register words are in big-endian format. */ @@ -1733,6 +1746,7 @@ bool xive_presenter_notify(XiveFabric *xfb, uint8_t f= ormat, { XiveFabricClass *xfc =3D XIVE_FABRIC_GET_CLASS(xfb); XiveTCTXMatch match =3D { .tctx =3D NULL, .ring =3D 0 }; + uint8_t group_level; int count; =20 /* @@ -1746,9 +1760,9 @@ bool xive_presenter_notify(XiveFabric *xfb, uint8_t f= ormat, =20 /* handle CPU exception delivery */ if (count) { - trace_xive_presenter_notify(nvt_blk, nvt_idx, match.ring); - xive_tctx_ipb_update(match.tctx, match.ring, - xive_priority_to_ipb(priority)); + group_level =3D cam_ignore ? xive_get_group_level(nvt_idx) : 0; + trace_xive_presenter_notify(nvt_blk, nvt_idx, match.ring, group_le= vel); + xive_tctx_pipr_update(match.tctx, match.ring, priority, group_leve= l); } =20 return !!count; diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index cd075e4db9..62c3f05af9 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -563,8 +563,11 @@ static void xive2_tctx_need_resend(Xive2Router *xrtr, = XiveTCTX *tctx, uint8_t nvp_blk, uint32_t nvp_idx, bool do_restore) { - Xive2Nvp nvp; uint8_t ipb; + uint8_t backlog_level; + uint8_t backlog_prio; + uint8_t *regs =3D &tctx->regs[TM_QW1_OS]; + Xive2Nvp nvp; =20 /* * Grab the associated thread interrupt context registers in the @@ -593,15 +596,15 @@ static void xive2_tctx_need_resend(Xive2Router *xrtr,= XiveTCTX *tctx, nvp.w2 =3D xive_set_field32(NVP2_W2_IPB, nvp.w2, 0); xive2_router_write_nvp(xrtr, nvp_blk, nvp_idx, &nvp, 2); } + regs[TM_IPB] |=3D ipb; + backlog_prio =3D xive_ipb_to_pipr(ipb); + backlog_level =3D 0; + /* - * Always call xive_tctx_ipb_update(). Even if there were no - * escalation triggered, there could be a pending interrupt which - * was saved when the context was pulled and that we need to take - * into account by recalculating the PIPR (which is not - * saved/restored). - * It will also raise the External interrupt signal if needed. + * Compute the PIPR based on the restored state. + * It will raise the External interrupt signal if needed. */ - xive_tctx_ipb_update(tctx, TM_QW1_OS, ipb); + xive_tctx_pipr_update(tctx, TM_QW1_OS, backlog_prio, backlog_level); } =20 /* diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h index 75276b9ba6..805b1d7b80 100644 --- a/include/hw/ppc/xive.h +++ b/include/hw/ppc/xive.h @@ -508,6 +508,11 @@ static inline uint8_t xive_priority_to_ipb(uint8_t pri= ority) 0 : 1 << (XIVE_PRIORITY_MAX - priority); } =20 +static inline uint8_t xive_priority_to_pipr(uint8_t priority) +{ + return priority > XIVE_PRIORITY_MAX ? 0xFF : priority; +} + /* * Convert an Interrupt Pending Buffer (IPB) register to a Pending * Interrupt Priority Register (PIPR), which contains the priority of @@ -540,8 +545,10 @@ void xive_tctx_pic_print_info(XiveTCTX *tctx, GString = *buf); Object *xive_tctx_create(Object *cpu, XivePresenter *xptr, Error **errp); void xive_tctx_reset(XiveTCTX *tctx); void xive_tctx_destroy(XiveTCTX *tctx); -void xive_tctx_ipb_update(XiveTCTX *tctx, uint8_t ring, uint8_t ipb); +void xive_tctx_pipr_update(XiveTCTX *tctx, uint8_t ring, uint8_t priority, + uint8_t group_level); void xive_tctx_reset_signal(XiveTCTX *tctx, uint8_t ring); +void xive_tctx_notify(XiveTCTX *tctx, uint8_t ring, uint8_t group_level); =20 /* * KVM XIVE device helpers diff --git a/include/hw/ppc/xive_regs.h b/include/hw/ppc/xive_regs.h index 326327fc79..54bc6c53b4 100644 --- a/include/hw/ppc/xive_regs.h +++ b/include/hw/ppc/xive_regs.h @@ -7,10 +7,9 @@ * access to the different fields. * * - * Copyright (c) 2016-2018, IBM Corporation. + * Copyright (c) 2016-2024, IBM Corporation. * - * This code is licensed under the GPL version 2 or later. See the - * COPYING file in the top-level directory. + * SPDX-License-Identifier: GPL-2.0-or-later */ =20 #ifndef PPC_XIVE_REGS_H @@ -146,7 +145,14 @@ #define TM_SPC_PULL_PHYS_CTX_OL 0xc38 /* Pull phys ctx to odd cache line= */ /* XXX more... */ =20 -/* NSR fields for the various QW ack types */ +/* + * NSR fields for the various QW ack types + * + * P10 has an extra bit in QW3 for the group level instead of the + * reserved 'i' bit. Since it is not used and we don't support group + * interrupts on P9, we use the P10 definition for the group level so + * that we can have common macros for the NSR + */ #define TM_QW0_NSR_EB PPC_BIT8(0) #define TM_QW1_NSR_EO PPC_BIT8(0) #define TM_QW3_NSR_HE PPC_BITMASK8(0, 1) @@ -154,8 +160,15 @@ #define TM_QW3_NSR_HE_POOL 1 #define TM_QW3_NSR_HE_PHYS 2 #define TM_QW3_NSR_HE_LSI 3 -#define TM_QW3_NSR_I PPC_BIT8(2) -#define TM_QW3_NSR_GRP_LVL PPC_BIT8(3, 7) +#define TM_NSR_GRP_LVL PPC_BITMASK8(2, 7) +/* + * On P10, the format of the 6-bit group level is: 2 bits for the + * crowd size and 4 bits for the group size. Since group/crowd size is + * always a power of 2, we encode the log. For example, group_level=3D4 + * means crowd size =3D 0 and group size =3D 16 (2^4) + * Same encoding is used in the NVP and NVGC structures for + * PGoFirst and PGoNext fields + */ =20 /* * EAS (Event Assignment Structure) --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699601; cv=none; d=zohomail.com; s=zohoarc; b=TsIPxS6PS664isSSYMC2idocOSQwZQWl34dAA7lt+pSe8x0638U8FJnTWS4jCSWHc+IpN+EalGML8idDln1Dw3AM80gjZpfK9K3gx35VFHBbTY9Fh1Gk1Erfl22OfLme3fsIy046o3jJCO4hnyNjpbOokLFXDSIbkN6PljhBApQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699601; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hMN1cLhziqhpOJDuVkl12QW9EXehxz96DoalbVVJvq0=; b=lYPi4B0NlNN6u/n+Xb5OhXMwu0e+FWYRwdR01PHDAEwgqGEYTMC1XmKbYQ9dr9TwrOYa2HfTWlRj+y6Vn7vEfIJIjece6j5KNzxF6HtCTy7usIwyyTJRd86BFCCW5Dh9/bUfg4HfEQJKNwwwETkUQbke/8Wn0wQyjBttvvKFi2M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699601843617.4309223492802; Tue, 11 Mar 2025 06:26:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzDF-00044h-Le; Tue, 11 Mar 2025 09:00:01 -0400 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 1trzDD-0003xP-Fm; Tue, 11 Mar 2025 08:59:59 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzD7-00082N-Aw; Tue, 11 Mar 2025 08:59:58 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-2ff80290e44so8656755a91.0; Tue, 11 Mar 2025 05:59:49 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697987; x=1742302787; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hMN1cLhziqhpOJDuVkl12QW9EXehxz96DoalbVVJvq0=; b=TEweNpT20gR9p+/0ewUN5vDZyR8vjxanxo2JdoR1hUhanCYPZjVmbfGwfeNcLokVBy OgjUFCLlxoASSyKPnTuOX517/cIUqac7LtubddI7XpyV6bNwC4Qr1h34hPwvDUlWJjWn O7m0PVky9AO6NDbqlkwqJX9kr8KOhpsWT7jxOMWcjOD8dIU1l6EEcL8T6Z07rfyuGAc0 66JjBmltIK1I6daLWGXlS3b1gXdq3Nn2HgW8bANdDAVN9SQUtfcEzwzS1e8XC3V2DQ9u vp+vBLQIwiAy9w2XSEMsgFcpalheQOk71m/GxeY0hW/C9/zBkk8osA0Ihu/6HGxerekl 3aOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697987; x=1742302787; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hMN1cLhziqhpOJDuVkl12QW9EXehxz96DoalbVVJvq0=; b=K2q2Pyf/t1PbTeF5A4cmgta3tgMr5ApFBVeq7n03zQt4i33WYgzvoIGsLU0P2zLnjy oNM8XC6jBUcFJ9jm9ZslKY2d/XI6hvIGgVvgfy5YA9afZ4CxHwrIV6gavV+FfQr2z+7R v+wLTF2dWSILTRGDwNg7zEzNlPj/2EOCJZ3ArOFMALNZUpCMlvsch4OgIZK99cHOdlcD TephpMFPFM1R2v3c5lRo/tSFEqpuslrALbcJYMr3dgwvCEaa8ZteNB5Ang0nAnlb5QJh yKCBLTs8Zb4jNy9C6ehdcvFye22whx54+lN2K9rrN+Q1lrWz6KfTebOOu+OfucKKSJwM 30hg== X-Forwarded-Encrypted: i=1; AJvYcCVizmK9PcwIMF+FkYpMoZ2MdKPqVW0yFbbgHbod0A7fJBkx0o/h1bj4aPqKCMeAdBibddO2NtuiOA==@nongnu.org X-Gm-Message-State: AOJu0Yy7DQjUnZXhTUwSgZrMUDSGYEU7rzKfA0KlET8YzvuLoqlIpawC kfqPNdy0E9ZqZPgDIiWEtbb8nahRnlwjUX1l9dl9GE9iPos0zz3SRVe21w== X-Gm-Gg: ASbGncvFVpJ0c+RevmfYEVVMWRRvPhiNz1b85xVYIomAJNGyx22VbCf61iplQ6fXmBQ kdNZ+5XNLsj53L8xzU4qkFhBedPHw+dvhmcf5dbgekMwM3g48sburn7dynNokxWigs4Ns+W9uGf P2BKJUrddd7LcPNcC0ZfXg7xEsyz4JPx9Y8h3uAuH1gzveWD7FgGh3qm2TidzNc4jief1D56ZND Og/g9Gy3H0aAIZCJec61a1NBNIEuLM3/rFalaXoUNqvkbFA7EU1DVJ10y5HOqz49z7+KaXNcDkQ Axqt1x+8C76mFhFctwyvMDYoBpTW3DLP/xPFyzuxCwnXRLirb6uikDEqHkgAlg== X-Google-Smtp-Source: AGHT+IE0ysSSHJbAK4sBVeloxEobHbZKuSuDoh1mll617LgWQJDxBczKLi3jFEtIs9BwkuUyBGK+Qw== X-Received: by 2002:a17:90b:4b11:b0:2ff:6ac2:c5a5 with SMTP id 98e67ed59e1d1-2ff7cf13a5emr23091757a91.26.1741697987463; Tue, 11 Mar 2025 05:59:47 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Frederic Barrat , Michael Kowal Subject: [PULL 26/72] ppc/xive2: Support group-matching when looking for target Date: Tue, 11 Mar 2025 22:57:20 +1000 Message-ID: <20250311125815.903177-27-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699607529019000 Content-Type: text/plain; charset="utf-8" From: Frederic Barrat If an END has the 'i' bit set (ignore), then it targets a group of VPs. The size of the group depends on the VP index of the target (first 0 found when looking at the least significant bits of the index) so a mask is applied on the VP index of a running thread to know if we have a match. Signed-off-by: Frederic Barrat Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- hw/intc/pnv_xive2.c | 38 +++++++++++++++--------- hw/intc/xive.c | 56 +++++++++++++++++++++++++----------- hw/intc/xive2.c | 65 ++++++++++++++++++++++++++++++------------ include/hw/ppc/xive.h | 5 +++- include/hw/ppc/xive2.h | 7 ++--- 5 files changed, 118 insertions(+), 53 deletions(-) diff --git a/hw/intc/pnv_xive2.c b/hw/intc/pnv_xive2.c index 9ed759417e..8429ccbd51 100644 --- a/hw/intc/pnv_xive2.c +++ b/hw/intc/pnv_xive2.c @@ -1,10 +1,9 @@ /* * QEMU PowerPC XIVE2 interrupt controller model (POWER10) * - * Copyright (c) 2019-2022, IBM Corporation. + * Copyright (c) 2019-2024, IBM Corporation. * - * This code is licensed under the GPL version 2 or later. See the - * COPYING file in the top-level directory. + * SPDX-License-Identifier: GPL-2.0-or-later */ =20 #include "qemu/osdep.h" @@ -660,21 +659,34 @@ static int pnv_xive2_match_nvt(XivePresenter *xptr, u= int8_t format, logic_serv); } =20 - /* - * Save the context and follow on to catch duplicates, - * that we don't support yet. - */ if (ring !=3D -1) { - if (match->tctx) { + /* + * For VP-specific match, finding more than one is a + * problem. For group notification, it's possible. + */ + if (!cam_ignore && match->tctx) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: already found a " "thread context NVT %x/%x\n", nvt_blk, nvt_idx); - return false; + /* Should set a FIR if we ever model it */ + return -1; + } + /* + * For a group notification, we need to know if the + * match is precluded first by checking the current + * thread priority. If the interrupt can be delivered, + * we always notify the first match (for now). + */ + if (cam_ignore && + xive2_tm_irq_precluded(tctx, ring, priority)) { + match->precluded =3D true; + } else { + if (!match->tctx) { + match->ring =3D ring; + match->tctx =3D tctx; + } + count++; } - - match->ring =3D ring; - match->tctx =3D tctx; - count++; } } } diff --git a/hw/intc/xive.c b/hw/intc/xive.c index 1e362f987a..3e4c932f19 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -1655,6 +1655,16 @@ static uint32_t xive_tctx_hw_cam_line(XivePresenter = *xptr, XiveTCTX *tctx) return xive_nvt_cam_line(blk, 1 << 7 | (pir & 0x7f)); } =20 +uint32_t xive_get_vpgroup_size(uint32_t nvp_index) +{ + /* + * Group size is a power of 2. The position of the first 0 + * (starting with the least significant bits) in the NVP index + * gives the size of the group. + */ + return 1 << (ctz32(~nvp_index) + 1); +} + static uint8_t xive_get_group_level(uint32_t nvp_index) { /* FIXME add crowd encoding */ @@ -1727,30 +1737,39 @@ int xive_presenter_tctx_match(XivePresenter *xptr, = XiveTCTX *tctx, /* * This is our simple Xive Presenter Engine model. It is merged in the * Router as it does not require an extra object. - * - * It receives notification requests sent by the IVRE to find one - * matching NVT (or more) dispatched on the processor threads. In case - * of a single NVT notification, the process is abbreviated and the - * thread is signaled if a match is found. In case of a logical server - * notification (bits ignored at the end of the NVT identifier), the - * IVPE and IVRE select a winning thread using different filters. This - * involves 2 or 3 exchanges on the PowerBus that the model does not - * support. - * - * The parameters represent what is sent on the PowerBus */ bool xive_presenter_notify(XiveFabric *xfb, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, bool cam_ignore, uint8_t priority, - uint32_t logic_serv) + uint32_t logic_serv, bool *precluded) { XiveFabricClass *xfc =3D XIVE_FABRIC_GET_CLASS(xfb); - XiveTCTXMatch match =3D { .tctx =3D NULL, .ring =3D 0 }; + XiveTCTXMatch match =3D { .tctx =3D NULL, .ring =3D 0, .precluded =3D = false }; uint8_t group_level; int count; =20 /* - * Ask the machine to scan the interrupt controllers for a match + * Ask the machine to scan the interrupt controllers for a match. + * + * For VP-specific notification, we expect at most one match and + * one call to the presenters is all we need (abbreviated notify + * sequence documented by the architecture). + * + * For VP-group notification, match_nvt() is the equivalent of the + * "histogram" and "poll" commands sent to the power bus to the + * presenters. 'count' could be more than one, but we always + * select the first match for now. 'precluded' tells if (at least) + * one thread matches but can't take the interrupt now because + * it's running at a more favored priority. We return the + * information to the router so that it can take appropriate + * actions (backlog, escalation, broadcast, etc...) + * + * If we were to implement a better way of dispatching the + * interrupt in case of multiple matches (instead of the first + * match), we would need a heuristic to elect a thread (for + * example, the hardware keeps track of an 'age' in the TIMA) and + * a new command to the presenters (the equivalent of the "assign" + * power bus command in the documented full notify sequence. */ count =3D xfc->match_nvt(xfb, format, nvt_blk, nvt_idx, cam_ignore, priority, logic_serv, &match); @@ -1763,6 +1782,8 @@ bool xive_presenter_notify(XiveFabric *xfb, uint8_t f= ormat, group_level =3D cam_ignore ? xive_get_group_level(nvt_idx) : 0; trace_xive_presenter_notify(nvt_blk, nvt_idx, match.ring, group_le= vel); xive_tctx_pipr_update(match.tctx, match.ring, priority, group_leve= l); + } else { + *precluded =3D match.precluded; } =20 return !!count; @@ -1802,7 +1823,7 @@ void xive_router_end_notify(XiveRouter *xrtr, XiveEAS= *eas) uint8_t nvt_blk; uint32_t nvt_idx; XiveNVT nvt; - bool found; + bool found, precluded; =20 uint8_t end_blk =3D xive_get_field64(EAS_END_BLOCK, eas->w); uint32_t end_idx =3D xive_get_field64(EAS_END_INDEX, eas->w); @@ -1885,8 +1906,9 @@ void xive_router_end_notify(XiveRouter *xrtr, XiveEAS= *eas) found =3D xive_presenter_notify(xrtr->xfb, format, nvt_blk, nvt_idx, xive_get_field32(END_W7_F0_IGNORE, end.w7), priority, - xive_get_field32(END_W7_F1_LOG_SERVER_ID, end.w7= )); - + xive_get_field32(END_W7_F1_LOG_SERVER_ID, end.w7= ), + &precluded); + /* we don't support VP-group notification on P9, so precluded is not u= sed */ /* TODO: Auto EOI. */ =20 if (found) { diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index 62c3f05af9..41dbbdbb68 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -739,6 +739,12 @@ int xive2_router_write_nvgc(Xive2Router *xrtr, bool cr= owd, return xrc->write_nvgc(xrtr, crowd, nvgc_blk, nvgc_idx, nvgc); } =20 +static bool xive2_vp_match_mask(uint32_t cam1, uint32_t cam2, + uint32_t vp_mask) +{ + return (cam1 & vp_mask) =3D=3D (cam2 & vp_mask); +} + /* * The thread context register words are in big-endian format. */ @@ -753,44 +759,50 @@ int xive2_presenter_tctx_match(XivePresenter *xptr, X= iveTCTX *tctx, uint32_t qw1w2 =3D xive_tctx_word2(&tctx->regs[TM_QW1_OS]); uint32_t qw0w2 =3D xive_tctx_word2(&tctx->regs[TM_QW0_USER]); =20 - /* - * TODO (PowerNV): ignore mode. The low order bits of the NVT - * identifier are ignored in the "CAM" match. - */ + uint32_t vp_mask =3D 0xFFFFFFFF; =20 if (format =3D=3D 0) { - if (cam_ignore =3D=3D true) { - /* - * F=3D0 & i=3D1: Logical server notification (bits ignored at - * the end of the NVT identifier) - */ - qemu_log_mask(LOG_UNIMP, "XIVE: no support for LS NVT %x/%x\n", - nvt_blk, nvt_idx); - return -1; + /* + * i=3D0: Specific NVT notification + * i=3D1: VP-group notification (bits ignored at the end of the + * NVT identifier) + */ + if (cam_ignore) { + vp_mask =3D ~(xive_get_vpgroup_size(nvt_idx) - 1); } =20 - /* F=3D0 & i=3D0: Specific NVT notification */ + /* For VP-group notifications, threads with LGS=3D0 are excluded */ =20 /* PHYS ring */ if ((be32_to_cpu(qw3w2) & TM2_QW3W2_VT) && - cam =3D=3D xive2_tctx_hw_cam_line(xptr, tctx)) { + !(cam_ignore && tctx->regs[TM_QW3_HV_PHYS + TM_LGS] =3D=3D 0) = && + xive2_vp_match_mask(cam, + xive2_tctx_hw_cam_line(xptr, tctx), + vp_mask)) { return TM_QW3_HV_PHYS; } =20 /* HV POOL ring */ if ((be32_to_cpu(qw2w2) & TM2_QW2W2_VP) && - cam =3D=3D xive_get_field32(TM2_QW2W2_POOL_CAM, qw2w2)) { + !(cam_ignore && tctx->regs[TM_QW2_HV_POOL + TM_LGS] =3D=3D 0) = && + xive2_vp_match_mask(cam, + xive_get_field32(TM2_QW2W2_POOL_CAM, qw2w2= ), + vp_mask)) { return TM_QW2_HV_POOL; } =20 /* OS ring */ if ((be32_to_cpu(qw1w2) & TM2_QW1W2_VO) && - cam =3D=3D xive_get_field32(TM2_QW1W2_OS_CAM, qw1w2)) { + !(cam_ignore && tctx->regs[TM_QW1_OS + TM_LGS] =3D=3D 0) && + xive2_vp_match_mask(cam, + xive_get_field32(TM2_QW1W2_OS_CAM, qw1w2), + vp_mask)) { return TM_QW1_OS; } } else { /* F=3D1 : User level Event-Based Branch (EBB) notification */ =20 + /* FIXME: what if cam_ignore and LGS =3D 0 ? */ /* USER ring */ if ((be32_to_cpu(qw1w2) & TM2_QW1W2_VO) && (cam =3D=3D xive_get_field32(TM2_QW1W2_OS_CAM, qw1w2)) && @@ -802,6 +814,22 @@ int xive2_presenter_tctx_match(XivePresenter *xptr, Xi= veTCTX *tctx, return -1; } =20 +bool xive2_tm_irq_precluded(XiveTCTX *tctx, int ring, uint8_t priority) +{ + uint8_t *regs =3D &tctx->regs[ring]; + + /* + * The xive2_presenter_tctx_match() above tells if there's a match + * but for VP-group notification, we still need to look at the + * priority to know if the thread can take the interrupt now or if + * it is precluded. + */ + if (priority < regs[TM_CPPR]) { + return false; + } + return true; +} + static void xive2_router_realize(DeviceState *dev, Error **errp) { Xive2Router *xrtr =3D XIVE2_ROUTER(dev); @@ -841,7 +869,7 @@ static void xive2_router_end_notify(Xive2Router *xrtr, = uint8_t end_blk, Xive2End end; uint8_t priority; uint8_t format; - bool found; + bool found, precluded; Xive2Nvp nvp; uint8_t nvp_blk; uint32_t nvp_idx; @@ -922,7 +950,8 @@ static void xive2_router_end_notify(Xive2Router *xrtr, = uint8_t end_blk, found =3D xive_presenter_notify(xrtr->xfb, format, nvp_blk, nvp_idx, xive2_end_is_ignore(&end), priority, - xive_get_field32(END2_W7_F1_LOG_SERVER_ID, end.w= 7)); + xive_get_field32(END2_W7_F1_LOG_SERVER_ID, end.w= 7), + &precluded); =20 /* TODO: Auto EOI. */ =20 diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h index 805b1d7b80..e78adaffa5 100644 --- a/include/hw/ppc/xive.h +++ b/include/hw/ppc/xive.h @@ -422,6 +422,7 @@ void xive_router_end_notify(XiveRouter *xrtr, XiveEAS *= eas); typedef struct XiveTCTXMatch { XiveTCTX *tctx; uint8_t ring; + bool precluded; } XiveTCTXMatch; =20 #define TYPE_XIVE_PRESENTER "xive-presenter" @@ -450,7 +451,9 @@ int xive_presenter_tctx_match(XivePresenter *xptr, Xive= TCTX *tctx, bool xive_presenter_notify(XiveFabric *xfb, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, bool cam_ignore, uint8_t priority, - uint32_t logic_serv); + uint32_t logic_serv, bool *precluded); + +uint32_t xive_get_vpgroup_size(uint32_t nvp_index); =20 /* * XIVE Fabric (Interface between Interrupt Controller and Machine) diff --git a/include/hw/ppc/xive2.h b/include/hw/ppc/xive2.h index 5bccf41159..65154f78d8 100644 --- a/include/hw/ppc/xive2.h +++ b/include/hw/ppc/xive2.h @@ -1,11 +1,9 @@ /* * QEMU PowerPC XIVE2 interrupt controller model (POWER10) * - * Copyright (c) 2019-2022, IBM Corporation. - * - * This code is licensed under the GPL version 2 or later. See the - * COPYING file in the top-level directory. + * Copyright (c) 2019-2024, IBM Corporation. * + * SPDX-License-Identifier: GPL-2.0-or-later */ =20 #ifndef PPC_XIVE2_H @@ -121,6 +119,7 @@ uint64_t xive2_tm_pull_os_ctx(XivePresenter *xptr, Xive= TCTX *tctx, hwaddr offset, unsigned size); void xive2_tm_pull_os_ctx_ol(XivePresenter *xptr, XiveTCTX *tctx, hwaddr offset, uint64_t value, unsigned size); +bool xive2_tm_irq_precluded(XiveTCTX *tctx, int ring, uint8_t priority); void xive2_tm_set_hv_target(XivePresenter *xptr, XiveTCTX *tctx, hwaddr offset, uint64_t value, unsigned size); void xive2_tm_pull_phys_ctx_ol(XivePresenter *xptr, XiveTCTX *tctx, --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699751; cv=none; d=zohomail.com; s=zohoarc; b=ADKCN6rilW0+3CVhZrkUZFf5aZ6G1Kx1S5nOy814UaVcbIiY6BuP4Hc6FUcFjVBGCVe/ayNKnZSL8JKp5ErOvLEXOHrRdqbqRsdyrOblMYV1GxuDadgtVbSJ3A8705wmybl+0Wu+fkD2209xLGPKFeFXsX5Mnz40vPJ/LF+Me8E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699751; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xTjpRh8AshfIRm5pJ5AIa8+ub5kge53Qy5H2Kvu+cVA=; b=GMDZu13yxObzx/9PZdckGtq7x5di+eFOPCAQ0OHe93CfaW4/In2DgIUGqFUI0IaPvcf5JaARCe00diQNp9pSBiAI/ZgAM/gf8jzLkgUFtu5qCA0UqUXYALc58chqdh9KC0BMwPuDBsn9daXsib875thpzi/kWA8nnUlf/CniHQs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174169975138964.06015659288153; Tue, 11 Mar 2025 06:29:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzGs-0000jx-NF; Tue, 11 Mar 2025 09:03:48 -0400 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 1trzDE-00043v-NU; Tue, 11 Mar 2025 09:00:00 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDB-00082v-Hp; Tue, 11 Mar 2025 09:00:00 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-2ff799d99dcso9005405a91.1; Tue, 11 Mar 2025 05:59:52 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697991; x=1742302791; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xTjpRh8AshfIRm5pJ5AIa8+ub5kge53Qy5H2Kvu+cVA=; b=noBanvvLtEQvQktWO2jBxGBNNbqAQsBxKjHzU7TMfapOr6LnQgHuGjKPGWaeLv0dLu ZAfrVoee8bJNkinmugqbxRrPzCGSn9WWIrv6eN3QWWC8uBVuBzHmPLN7tXSC8WlrMFFj et5ANPBj76fjPwO8Hpycg/+fXjNgHR+pKVpm9G+957N2XlI4pGv0ICuGB+JO1sk4OEFF IQnmdmSgcX6Sf+5O7JlxBq1AEJFV2702kOlUzKz1GgvozY1TzV/UpRnR+qlV/TdaAMql q4oF98wOGKisLju3SC52ukIfGfK10kWyjOWPuRzr0NpJpsJyyf7+a9z1pK8YxB/x9kvC ANiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697991; x=1742302791; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xTjpRh8AshfIRm5pJ5AIa8+ub5kge53Qy5H2Kvu+cVA=; b=XEMIyMxhuJDbC3NZ+LUyNnnagOWhYqpzPxEyXhAnbLWKFrtX6DxH1MEk+9wRWHgUrG SlDE92D3iIju+m/TvTNrSxITdbSsy2D0gXp04guTVL20FlSZT5qFT2HynePWSxSlprcW mU2cr11v17UGZW/YN/MpElrJSKb9NH9EAV6GqI3FpzkC1BAmhtUFbMxHev5D8gKbzyPd cHTWHy5CzvVB9j0E2fQyujwURBwzXSi3J+UkGOb/PBV4CciUHlKB9sLS0BzD5RdQijYM UbbGeXJ0CbVzsho9bUuXhT9nk7aDPkByH48hRUhZA4Pp24hRTEtcKkVSyNNw2KsP7X23 stzA== X-Forwarded-Encrypted: i=1; AJvYcCVLT8855Ucfmk9D513+yfRCFTK6uxcnqS4G1SH8qIYh92gEjD+5p2I7xN9RdyRQOSIhUN5l0KPWaw==@nongnu.org X-Gm-Message-State: AOJu0YzqRC0Iz72tknHaA5w9a4YrCaCUqkAuQOAOyA4Qa6+nCMAmUPEf Q/ZegDe4S27tACnS76XIyhhI3gNmTCIPieOqbjrVm9Gy1bfoJ2y9OiTG5Q== X-Gm-Gg: ASbGncvY4WACg4mqg937Hr/iL9LcEw8yM6X/DXRMyeqxIsHXKwisn6qnMR2PCyFuFqs 7enUFO3noJsJEmJLUbiCcjTCFvj3YzOo+hSNichds2xUKlRIVFMpQkEYZkb7LgV558KL5J04II4 UA/ZvQhMx8u9E6lVKnd4uJUrsWPMDfEwhgIfH84riMRdsJJepMjX11hKa2iM7syz10amC1y8Rka NCy3C1r4uZ21NBkorBtGUmRgbgtXEaRnU36mzc/Xnd8AxUXH1SP3jwAo54uU/+aochZDpDCEcyI FxCcsUdQfbh7DGuSGGLACFEcTT/3d2CL2mlg3k3jKCu5suNzEaE= X-Google-Smtp-Source: AGHT+IEM67xUBNJBPEPT1mrvnjjezGC4Sj5o21YDfJsIN8s7vSw+oXHfHEE5Pb3+WJP0fGJhsXA+xA== X-Received: by 2002:a17:90b:4c81:b0:2fc:b40:339a with SMTP id 98e67ed59e1d1-2ff7ce7abdfmr27297036a91.10.1741697990449; Tue, 11 Mar 2025 05:59:50 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Frederic Barrat , Michael Kowal Subject: [PULL 27/72] ppc/xive2: Add undelivered group interrupt to backlog Date: Tue, 11 Mar 2025 22:57:21 +1000 Message-ID: <20250311125815.903177-28-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699754015019100 Content-Type: text/plain; charset="utf-8" From: Frederic Barrat When a group interrupt cannot be delivered, we need to: - increment the backlog counter for the group in the NVG table (if the END is configured to keep a backlog). - start a broadcast operation to set the LSMFB field on matching CPUs which can't take the interrupt now because they're running at too high a priority. [npiggin: squash in fixes from milesg] [milesg: only load the NVP if the END is !ignore] [milesg: always broadcast backlog, not only when there are precluded VPs] Signed-off-by: Frederic Barrat Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- hw/intc/pnv_xive2.c | 42 +++++++++++++ hw/intc/xive2.c | 136 ++++++++++++++++++++++++++++++++--------- hw/ppc/pnv.c | 22 ++++++- include/hw/ppc/xive.h | 5 ++ include/hw/ppc/xive2.h | 1 + 5 files changed, 175 insertions(+), 31 deletions(-) diff --git a/hw/intc/pnv_xive2.c b/hw/intc/pnv_xive2.c index 8429ccbd51..e7a7d1b50f 100644 --- a/hw/intc/pnv_xive2.c +++ b/hw/intc/pnv_xive2.c @@ -705,6 +705,47 @@ static uint32_t pnv_xive2_presenter_get_config(XivePre= senter *xptr) return cfg; } =20 +static int pnv_xive2_broadcast(XivePresenter *xptr, + uint8_t nvt_blk, uint32_t nvt_idx, + uint8_t priority) +{ + PnvXive2 *xive =3D PNV_XIVE2(xptr); + PnvChip *chip =3D xive->chip; + int i, j; + bool gen1_tima_os =3D + xive->cq_regs[CQ_XIVE_CFG >> 3] & CQ_XIVE_CFG_GEN1_TIMA_OS; + + for (i =3D 0; i < chip->nr_cores; i++) { + PnvCore *pc =3D chip->cores[i]; + CPUCore *cc =3D CPU_CORE(pc); + + for (j =3D 0; j < cc->nr_threads; j++) { + PowerPCCPU *cpu =3D pc->threads[j]; + XiveTCTX *tctx; + int ring; + + if (!pnv_xive2_is_cpu_enabled(xive, cpu)) { + continue; + } + + tctx =3D XIVE_TCTX(pnv_cpu_state(cpu)->intc); + + if (gen1_tima_os) { + ring =3D xive_presenter_tctx_match(xptr, tctx, 0, nvt_blk, + nvt_idx, true, 0); + } else { + ring =3D xive2_presenter_tctx_match(xptr, tctx, 0, nvt_blk, + nvt_idx, true, 0); + } + + if (ring !=3D -1) { + xive2_tm_set_lsmfb(tctx, ring, priority); + } + } + } + return 0; +} + static uint8_t pnv_xive2_get_block_id(Xive2Router *xrtr) { return pnv_xive2_block_id(PNV_XIVE2(xrtr)); @@ -2444,6 +2485,7 @@ static void pnv_xive2_class_init(ObjectClass *klass, = void *data) =20 xpc->match_nvt =3D pnv_xive2_match_nvt; xpc->get_config =3D pnv_xive2_presenter_get_config; + xpc->broadcast =3D pnv_xive2_broadcast; }; =20 static const TypeInfo pnv_xive2_info =3D { diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index 41dbbdbb68..44d891f1f6 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -53,7 +53,8 @@ static uint32_t xive2_nvgc_get_backlog(Xive2Nvgc *nvgc, u= int8_t priority) =20 /* * The per-priority backlog counters are 24-bit and the structure - * is stored in big endian + * is stored in big endian. NVGC is 32-bytes long, so 24-bytes from + * w2, which fits 8 priorities * 24-bits per priority. */ ptr =3D (uint8_t *)&nvgc->w2 + priority * 3; for (i =3D 0; i < 3; i++, ptr++) { @@ -62,6 +63,30 @@ static uint32_t xive2_nvgc_get_backlog(Xive2Nvgc *nvgc, = uint8_t priority) return val; } =20 +static void xive2_nvgc_set_backlog(Xive2Nvgc *nvgc, uint8_t priority, + uint32_t val) +{ + uint8_t *ptr, i; + uint32_t shift; + + if (priority > 7) { + return; + } + + if (val > 0xFFFFFF) { + val =3D 0xFFFFFF; + } + /* + * The per-priority backlog counters are 24-bit and the structure + * is stored in big endian + */ + ptr =3D (uint8_t *)&nvgc->w2 + priority * 3; + for (i =3D 0; i < 3; i++, ptr++) { + shift =3D 8 * (2 - i); + *ptr =3D (val >> shift) & 0xFF; + } +} + void xive2_eas_pic_print_info(Xive2Eas *eas, uint32_t lisn, GString *buf) { if (!xive2_eas_is_valid(eas)) { @@ -830,6 +855,19 @@ bool xive2_tm_irq_precluded(XiveTCTX *tctx, int ring, = uint8_t priority) return true; } =20 +void xive2_tm_set_lsmfb(XiveTCTX *tctx, int ring, uint8_t priority) +{ + uint8_t *regs =3D &tctx->regs[ring]; + + /* + * Called by the router during a VP-group notification when the + * thread matches but can't take the interrupt because it's + * already running at a more favored priority. It then stores the + * new interrupt priority in the LSMFB field. + */ + regs[TM_LSMFB] =3D priority; +} + static void xive2_router_realize(DeviceState *dev, Error **errp) { Xive2Router *xrtr =3D XIVE2_ROUTER(dev); @@ -870,7 +908,6 @@ static void xive2_router_end_notify(Xive2Router *xrtr, = uint8_t end_blk, uint8_t priority; uint8_t format; bool found, precluded; - Xive2Nvp nvp; uint8_t nvp_blk; uint32_t nvp_idx; =20 @@ -934,19 +971,6 @@ static void xive2_router_end_notify(Xive2Router *xrtr,= uint8_t end_blk, nvp_blk =3D xive_get_field32(END2_W6_VP_BLOCK, end.w6); nvp_idx =3D xive_get_field32(END2_W6_VP_OFFSET, end.w6); =20 - /* NVP cache lookup */ - if (xive2_router_get_nvp(xrtr, nvp_blk, nvp_idx, &nvp)) { - qemu_log_mask(LOG_GUEST_ERROR, "XIVE: no NVP %x/%x\n", - nvp_blk, nvp_idx); - return; - } - - if (!xive2_nvp_is_valid(&nvp)) { - qemu_log_mask(LOG_GUEST_ERROR, "XIVE: NVP %x/%x is invalid\n", - nvp_blk, nvp_idx); - return; - } - found =3D xive_presenter_notify(xrtr->xfb, format, nvp_blk, nvp_idx, xive2_end_is_ignore(&end), priority, @@ -962,10 +986,9 @@ static void xive2_router_end_notify(Xive2Router *xrtr,= uint8_t end_blk, /* * If no matching NVP is dispatched on a HW thread : * - specific VP: update the NVP structure if backlog is activated - * - logical server : forward request to IVPE (not supported) + * - VP-group: update the backlog counter for that priority in the NVG */ if (xive2_end_is_backlog(&end)) { - uint8_t ipb; =20 if (format =3D=3D 1) { qemu_log_mask(LOG_GUEST_ERROR, @@ -974,19 +997,72 @@ static void xive2_router_end_notify(Xive2Router *xrtr= , uint8_t end_blk, return; } =20 - /* - * Record the IPB in the associated NVP structure for later - * use. The presenter will resend the interrupt when the vCPU - * is dispatched again on a HW thread. - */ - ipb =3D xive_get_field32(NVP2_W2_IPB, nvp.w2) | - xive_priority_to_ipb(priority); - nvp.w2 =3D xive_set_field32(NVP2_W2_IPB, nvp.w2, ipb); - xive2_router_write_nvp(xrtr, nvp_blk, nvp_idx, &nvp, 2); - - /* - * On HW, follows a "Broadcast Backlog" to IVPEs - */ + if (!xive2_end_is_ignore(&end)) { + uint8_t ipb; + Xive2Nvp nvp; + + /* NVP cache lookup */ + if (xive2_router_get_nvp(xrtr, nvp_blk, nvp_idx, &nvp)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: no NVP %x/%x\n", + nvp_blk, nvp_idx); + return; + } + + if (!xive2_nvp_is_valid(&nvp)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: NVP %x/%x is invalid= \n", + nvp_blk, nvp_idx); + return; + } + + /* + * Record the IPB in the associated NVP structure for later + * use. The presenter will resend the interrupt when the vCPU + * is dispatched again on a HW thread. + */ + ipb =3D xive_get_field32(NVP2_W2_IPB, nvp.w2) | + xive_priority_to_ipb(priority); + nvp.w2 =3D xive_set_field32(NVP2_W2_IPB, nvp.w2, ipb); + xive2_router_write_nvp(xrtr, nvp_blk, nvp_idx, &nvp, 2); + } else { + Xive2Nvgc nvg; + uint32_t backlog; + + /* For groups, the per-priority backlog counters are in the NV= G */ + if (xive2_router_get_nvgc(xrtr, false, nvp_blk, nvp_idx, &nvg)= ) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: no NVG %x/%x\n", + nvp_blk, nvp_idx); + return; + } + + if (!xive2_nvgc_is_valid(&nvg)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: NVG %x/%x is invalid= \n", + nvp_blk, nvp_idx); + return; + } + + /* + * Increment the backlog counter for that priority. + * We only call broadcast the first time the counter is + * incremented. broadcast will set the LSMFB field of the TIMA= of + * relevant threads so that they know an interrupt is pending. + */ + backlog =3D xive2_nvgc_get_backlog(&nvg, priority) + 1; + xive2_nvgc_set_backlog(&nvg, priority, backlog); + xive2_router_write_nvgc(xrtr, false, nvp_blk, nvp_idx, &nvg); + + if (backlog =3D=3D 1) { + XiveFabricClass *xfc =3D XIVE_FABRIC_GET_CLASS(xrtr->xfb); + xfc->broadcast(xrtr->xfb, nvp_blk, nvp_idx, priority); + + if (!xive2_end_is_precluded_escalation(&end)) { + /* + * The interrupt will be picked up when the + * matching thread lowers its priority level + */ + return; + } + } + } } =20 do_escalation: diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 6fec455ff9..af836c1388 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1,7 +1,9 @@ /* * QEMU PowerPC PowerNV machine model * - * Copyright (c) 2016, IBM Corporation. + * Copyright (c) 2016-2024, IBM Corporation. + * + * SPDX-License-Identifier: GPL-2.0-or-later * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -2662,6 +2664,23 @@ static int pnv10_xive_match_nvt(XiveFabric *xfb, uin= t8_t format, return total_count; } =20 +static int pnv10_xive_broadcast(XiveFabric *xfb, + uint8_t nvt_blk, uint32_t nvt_idx, + uint8_t priority) +{ + PnvMachineState *pnv =3D PNV_MACHINE(xfb); + int i; + + for (i =3D 0; i < pnv->num_chips; i++) { + Pnv10Chip *chip10 =3D PNV10_CHIP(pnv->chips[i]); + XivePresenter *xptr =3D XIVE_PRESENTER(&chip10->xive); + XivePresenterClass *xpc =3D XIVE_PRESENTER_GET_CLASS(xptr); + + xpc->broadcast(xptr, nvt_blk, nvt_idx, priority); + } + return 0; +} + static bool pnv_machine_get_big_core(Object *obj, Error **errp) { PnvMachineState *pnv =3D PNV_MACHINE(obj); @@ -2795,6 +2814,7 @@ static void pnv_machine_p10_common_class_init(ObjectC= lass *oc, void *data) pmc->dt_power_mgt =3D pnv_dt_power_mgt; =20 xfc->match_nvt =3D pnv10_xive_match_nvt; + xfc->broadcast =3D pnv10_xive_broadcast; =20 machine_class_allow_dynamic_sysbus_dev(mc, TYPE_PNV_PHB); } diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h index e78adaffa5..6a410c6f1a 100644 --- a/include/hw/ppc/xive.h +++ b/include/hw/ppc/xive.h @@ -442,6 +442,9 @@ struct XivePresenterClass { uint32_t logic_serv, XiveTCTXMatch *match); bool (*in_kernel)(const XivePresenter *xptr); uint32_t (*get_config)(XivePresenter *xptr); + int (*broadcast)(XivePresenter *xptr, + uint8_t nvt_blk, uint32_t nvt_idx, + uint8_t priority); }; =20 int xive_presenter_tctx_match(XivePresenter *xptr, XiveTCTX *tctx, @@ -472,6 +475,8 @@ struct XiveFabricClass { uint8_t nvt_blk, uint32_t nvt_idx, bool cam_ignore, uint8_t priority, uint32_t logic_serv, XiveTCTXMatch *match); + int (*broadcast)(XiveFabric *xfb, uint8_t nvt_blk, uint32_t nvt_idx, + uint8_t priority); }; =20 /* diff --git a/include/hw/ppc/xive2.h b/include/hw/ppc/xive2.h index 65154f78d8..ebf301bb5b 100644 --- a/include/hw/ppc/xive2.h +++ b/include/hw/ppc/xive2.h @@ -120,6 +120,7 @@ uint64_t xive2_tm_pull_os_ctx(XivePresenter *xptr, Xive= TCTX *tctx, void xive2_tm_pull_os_ctx_ol(XivePresenter *xptr, XiveTCTX *tctx, hwaddr offset, uint64_t value, unsigned size); bool xive2_tm_irq_precluded(XiveTCTX *tctx, int ring, uint8_t priority); +void xive2_tm_set_lsmfb(XiveTCTX *tctx, int ring, uint8_t priority); void xive2_tm_set_hv_target(XivePresenter *xptr, XiveTCTX *tctx, hwaddr offset, uint64_t value, unsigned size); void xive2_tm_pull_phys_ctx_ol(XivePresenter *xptr, XiveTCTX *tctx, --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700974; cv=none; d=zohomail.com; s=zohoarc; b=dWU9ACdomkzApUOf+Vd919uXYDs37F9uVzqRMUIAVy1r1xXDSOXg4RsyVRk68/s7je30eApZZByPt8kSyNuT6D+tddCcKazEiWFxBL76QkF1WCSmoU2NH6/oh7LsPhAJHEbKpo+4EHWAiDvQ2IQFAIjE8mbYRNYrosO1+i1KELc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700974; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LV73eZk7vJrbkDVPoyzfVDHfZQAl5NgriC87PEyH8zI=; b=f1Lsv7ZdZWLBbFsScbHD6fZ5q59/TbqeRMI479EasR3P4fJifM3xPIsbxHWlP11U/0DwanZ8LAJUzM1b7oF0b+CcGvhi41LrHuloIr8JfbPdeymZRC2xRuheeAzd4DdQBk1reNUDueNqWugO5G1eXFoWd8lfZjBYku2sz3YOb8U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741700974938898.6583976846533; Tue, 11 Mar 2025 06:49:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzGc-0000DJ-Tj; Tue, 11 Mar 2025 09:03:31 -0400 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 1trzDM-0004Ff-Mc; Tue, 11 Mar 2025 09:00:13 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDD-00083P-3e; Tue, 11 Mar 2025 09:00:06 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-2ff64550991so8238766a91.0; Tue, 11 Mar 2025 05:59:56 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697993; x=1742302793; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LV73eZk7vJrbkDVPoyzfVDHfZQAl5NgriC87PEyH8zI=; b=jWBt3INKVyF7UbU/k3bt+TiuhMUSnDGqf5TVlgL0LdvsZ8iMEWMAmdsinuk5QixYzz 2div17Mvs61tdhVtZhgS9KNPEBfV990CgsjGYEuj7JEm7vol0f7cBG6hsB619V3hLNWh gQhx5yUfXdNHfZkAx0+kM0NVkor/HpzBSDOtUArEYPVmWVNI2RRpcDS7aS+9ajnfSh6M bysV2gOIhOEDTYTw3s1poY7UwMSvyK63sk8FlXXjVroibLhyhLvJD23AzrtVfAU/Ktf4 wTL3e3qw7lpR72iU1z6Z7mg7GDtbWkGbG+QPQeZbD0uicOVr7ALlIhJJnDYBeTgvkjHK pBRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697993; x=1742302793; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LV73eZk7vJrbkDVPoyzfVDHfZQAl5NgriC87PEyH8zI=; b=auihO09VU91kmmy1v9Yq0DXr6eaWuH4S7w4rgt7/qc/LWgRVCkMLHNR5UE58Q5t3HX rfN7iISiGrtlwjLXS2Q+lZtmd70wDawu3wULmqO0JPILSpH2QrV+Rh6CQg2/Mrw+TeuX TE+NWmb1G72AaGzgFQ+tBHSRGpXF0XL651adtJQ8ijCBYFDzZuIaqQWWuem59YXDSDC1 c5M8R/NBuET55nHDn6pWcC5yfF86/NkEm3I1kJJLoNeqj52bdNBDQsQfcIevy0w6xGX5 odEu7FNNsufMsiIVHbj9RU0AWqLw4AEfw42MXqsY3JfGITIDUmPfZxD9vCwIKd1qXOKX 9Tsw== X-Forwarded-Encrypted: i=1; AJvYcCXLSOCr4j/vBgZgzL2D+HO7xgGNJq3t+UgWrxYMsh0HNi746naG/tnJt2KYdp+FpOejZOiY1BMCEg==@nongnu.org X-Gm-Message-State: AOJu0YzSF0WH2jeWY9bJfxNjgNxTCfXrSWLBx7C6ghbpDqswBYESe8zv EdC0nv8Y+Do2hYntT1xDd4PNhCrEW3Dl2Xkto4QOzua6LWvG5xcA48M7WA== X-Gm-Gg: ASbGncs0wJhV9xfnocayeo/yxbX1yP/gXqEkPONlVwDknf0miFkIZNNjjuC2pl9af2t sGVp1DPw61Rxq7uhz6EWh2FnJ1YgYWw3uzuEhQSrq72kXLq+3X4gBwVe8VK6zCd6TeUIny1uB6h lDyD2gT9sIRX7prxMIfLCkarUzDr4i0AH1PX8m9rUz+8/SfeUiNktKJQ7j1fuJ/wDSwQMoQ+jLK oMWE+n5SnAbmMI8CFWBx/Tca+qForEchMRe3JsAglz+K0iAAgQugGd+2lXwfajvQIhZ09v7mtuR NC20cXp5cXDBiW2xtRpI9Rv+16RaUdBmQDZhzzcYknO701aOdFk= X-Google-Smtp-Source: AGHT+IEzdBJbCY0edAKOTyoyZsqDTvJiP3s6ENrxFsqCZXVRPsMQugUOTEY1T9ttRK/0wTha6xJnaA== X-Received: by 2002:a17:90b:1a8c:b0:2ee:94d1:7a89 with SMTP id 98e67ed59e1d1-2ff7ce6f36emr24072499a91.1.1741697993428; Tue, 11 Mar 2025 05:59:53 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Frederic Barrat , Michael Kowal Subject: [PULL 28/72] ppc/xive2: Process group backlog when pushing an OS context Date: Tue, 11 Mar 2025 22:57:22 +1000 Message-ID: <20250311125815.903177-29-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700977344019100 Content-Type: text/plain; charset="utf-8" From: Frederic Barrat When pushing an OS context, we were already checking if there was a pending interrupt in the IPB and sending a notification if needed. We also need to check if there is a pending group interrupt stored in the NVG table. To avoid useless backlog scans, we only scan if the NVP belongs to a group. Signed-off-by: Frederic Barrat Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- hw/intc/xive2.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index 44d891f1f6..2fa7b90669 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -279,6 +279,85 @@ static void xive2_end_enqueue(Xive2End *end, uint32_t = data) end->w1 =3D xive_set_field32(END2_W1_PAGE_OFF, end->w1, qindex); } =20 +/* + * Scan the group chain and return the highest priority and group + * level of pending group interrupts. + */ +static uint8_t xive2_presenter_backlog_scan(XivePresenter *xptr, + uint8_t nvp_blk, uint32_t nvp_= idx, + uint8_t first_group, + uint8_t *out_level) +{ + Xive2Router *xrtr =3D XIVE2_ROUTER(xptr); + uint32_t nvgc_idx, mask; + uint32_t current_level, count; + uint8_t prio; + Xive2Nvgc nvgc; + + for (prio =3D 0; prio <=3D XIVE_PRIORITY_MAX; prio++) { + current_level =3D first_group & 0xF; + + while (current_level) { + mask =3D (1 << current_level) - 1; + nvgc_idx =3D nvp_idx & ~mask; + nvgc_idx |=3D mask >> 1; + qemu_log("fxb %s checking backlog for prio %d group idx %x\n", + __func__, prio, nvgc_idx); + + if (xive2_router_get_nvgc(xrtr, false, nvp_blk, nvgc_idx, &nvg= c)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: No NVG %x/%x\n", + nvp_blk, nvgc_idx); + return 0xFF; + } + if (!xive2_nvgc_is_valid(&nvgc)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: Invalid NVG %x/%x\n", + nvp_blk, nvgc_idx); + return 0xFF; + } + + count =3D xive2_nvgc_get_backlog(&nvgc, prio); + if (count) { + *out_level =3D current_level; + return prio; + } + current_level =3D xive_get_field32(NVGC2_W0_PGONEXT, nvgc.w0) = & 0xF; + } + } + return 0xFF; +} + +static void xive2_presenter_backlog_decr(XivePresenter *xptr, + uint8_t nvp_blk, uint32_t nvp_idx, + uint8_t group_prio, + uint8_t group_level) +{ + Xive2Router *xrtr =3D XIVE2_ROUTER(xptr); + uint32_t nvgc_idx, mask, count; + Xive2Nvgc nvgc; + + group_level &=3D 0xF; + mask =3D (1 << group_level) - 1; + nvgc_idx =3D nvp_idx & ~mask; + nvgc_idx |=3D mask >> 1; + + if (xive2_router_get_nvgc(xrtr, false, nvp_blk, nvgc_idx, &nvgc)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: No NVG %x/%x\n", + nvp_blk, nvgc_idx); + return; + } + if (!xive2_nvgc_is_valid(&nvgc)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: Invalid NVG %x/%x\n", + nvp_blk, nvgc_idx); + return; + } + count =3D xive2_nvgc_get_backlog(&nvgc, group_prio); + if (!count) { + return; + } + xive2_nvgc_set_backlog(&nvgc, group_prio, count - 1); + xive2_router_write_nvgc(xrtr, false, nvp_blk, nvgc_idx, &nvgc); +} + /* * XIVE Thread Interrupt Management Area (TIMA) - Gen2 mode * @@ -588,9 +667,13 @@ static void xive2_tctx_need_resend(Xive2Router *xrtr, = XiveTCTX *tctx, uint8_t nvp_blk, uint32_t nvp_idx, bool do_restore) { + XivePresenter *xptr =3D XIVE_PRESENTER(xrtr); uint8_t ipb; uint8_t backlog_level; + uint8_t group_level; + uint8_t first_group; uint8_t backlog_prio; + uint8_t group_prio; uint8_t *regs =3D &tctx->regs[TM_QW1_OS]; Xive2Nvp nvp; =20 @@ -625,6 +708,20 @@ static void xive2_tctx_need_resend(Xive2Router *xrtr, = XiveTCTX *tctx, backlog_prio =3D xive_ipb_to_pipr(ipb); backlog_level =3D 0; =20 + first_group =3D xive_get_field32(NVP2_W0_PGOFIRST, nvp.w0); + if (first_group && regs[TM_LSMFB] < backlog_prio) { + group_prio =3D xive2_presenter_backlog_scan(xptr, nvp_blk, nvp_idx, + first_group, &group_leve= l); + regs[TM_LSMFB] =3D group_prio; + if (regs[TM_LGS] && group_prio < backlog_prio) { + /* VP can take a group interrupt */ + xive2_presenter_backlog_decr(xptr, nvp_blk, nvp_idx, + group_prio, group_level); + backlog_prio =3D group_prio; + backlog_level =3D group_level; + } + } + /* * Compute the PIPR based on the restored state. * It will raise the External interrupt signal if needed. --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741703862; cv=none; d=zohomail.com; s=zohoarc; b=PzsBhYLGS2YHGYEnABp9ByDz580wI+yphYCpIRXr6aCIbmdAGr90xLv7p85xof4n21bMP039jFB+5YqgDVzXruqi+jMTGxk9AVV/8T4rntYfPeHjovoef6MkMICP8LrpbKciUKfy7Capq9ubhMGA0URLZToEWLIDaxZwb/uR2ZM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741703862; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vHn+7OUywAbF6FO5dZ4T4+uIeHrdZtwa40tDfqPgy7A=; b=U9shfLeOD8WG0icYxKe9K9m1r2vPhYtIadt1Z8EM71iEGFEr8iG9ZfOmCA9QeAYI/9M4Ko59MrVNwWmGh7beFQe7yIvA68hbU7G65cfdArLaBq59kAeY9sSJ0z/d+GGIuenRedgiFrzo2oR43PtmXXmqQpaR2OE+CdVj1DMOqQk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741703862532122.7714571031413; Tue, 11 Mar 2025 07:37:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzDx-0004p6-2b; Tue, 11 Mar 2025 09:00:50 -0400 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 1trzDL-0004Fh-PI; Tue, 11 Mar 2025 09:00:08 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDF-000840-QC; Tue, 11 Mar 2025 09:00:06 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-2feb96064e4so10448206a91.1; Tue, 11 Mar 2025 05:59:59 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697997; x=1742302797; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vHn+7OUywAbF6FO5dZ4T4+uIeHrdZtwa40tDfqPgy7A=; b=Psudf4yGVd2ZJITxMYM22OKN0cf70PcUSaNfLZDlKFCPeauA09m6KI9dmQowjthw+y 5JPQwb7/CCsHkmAgyjmCb9HFsZLh99g3k6tnjvnlpryBeAxhb5qwipgQ7oahWTKIO54x +C4ajFGjVtUtY7MELLFTbQ5GmApI57mQmjghLei35WhdW3TJnm66MmjWLFXZEqOJ5lup uauQylig3fMCqgmV8oklQ13PIGH3RFV9wIxAM8odX9z/T64jA0sUICl/D0XHVXjm6h2+ HPF88wQa0PNq87pqL/yyW0Dde4sVr0+SxNkigudXf3ghfU2OzIpUT+1EvEe1wU5uAMCO um7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697997; x=1742302797; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vHn+7OUywAbF6FO5dZ4T4+uIeHrdZtwa40tDfqPgy7A=; b=EPYp/Ipx3GWX52i4yWND+obdd1o20yunktW7k/xEu1XbDISNi2cE2DXBL9V1ru0FHD 77+GTNprkw2yb4vzA//z00N/BuvSZewS9okhy0HS06QF/dIgiln1TEh//WiinqQ4jAnd ZY20G8GesKOi74rHvMtxJ9D3pOxPocqv0bRDDdbtp2RoZKqZQQZQK7fznxxYzrmRAH/c OcWtytQhBJEvnlKi0eAhvik748pACApx2E+wfrZNLxsZXN3pjd/EyadpB54kV6AEMhLa jYlU1u+UZBTLZQsiabxf05ALl/zokNCgOU65CR53uSoiUglzvA1sfHIs1iAWB8ZquLsp SvxQ== X-Forwarded-Encrypted: i=1; AJvYcCXfAsWG+lGNNlJrHlMsvwu9pMWgufkfqKDt67ktkMeZ3CNK4teDcAdZuc4mFWrcujo0Ng6eNR6TuA==@nongnu.org X-Gm-Message-State: AOJu0Yy9iVMlu7y5KAW4zJfX3zlVOpeDWFWTHaW5wyk+g7I2G6E+MOD8 zHJHnHyq7raRWHA47rcCUliouOcXir8xuRZlH1NIwPcRtX6I0UWNsZdp1g== X-Gm-Gg: ASbGncvoMXzMEa3ODJDevpnpZUVbhgZiGLCTSyB7NTtE3g7/q9GbzALAFi7wEQp1kBc iNDLu8y3utjvQhisvRYLVdbm6I8lUV5r1SPM5VuhBZog8/JzA24RIW8HiseNfJ76eKhY3eu5qEQ DrVbfLbA72EkqXJIUZhA9/C/P+VfvTYMlS1PH/6mTTNJS2GfYvvW8GP9zC46pnOkAce6t63GGyO WZjpyGwcFvsFyICb+Wq/KNg4476GadZ6AdgWMFazC46R+XohdnoEyrH7Mon+pAnPgv78B6A+KX1 P77UaKWtn+cdT/8CwagiQUvAkGHHM4jF0ISXOK3UWcQdzQ3mJQc= X-Google-Smtp-Source: AGHT+IEWWLTlPLkk0d6vRY14TnrdFBc0oc0LqTtBycsYZpBwaZb3VOwD/4MqE5ApmwUm0Pi0FHb/fw== X-Received: by 2002:a17:90b:2883:b0:2ff:52e1:c49f with SMTP id 98e67ed59e1d1-2ff7ced8c0amr23219572a91.26.1741697996495; Tue, 11 Mar 2025 05:59:56 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Frederic Barrat , Michael Kowal Subject: [PULL 29/72] ppc/xive2: Process group backlog when updating the CPPR Date: Tue, 11 Mar 2025 22:57:23 +1000 Message-ID: <20250311125815.903177-30-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741703863723019000 Content-Type: text/plain; charset="utf-8" From: Frederic Barrat When the hypervisor or OS pushes a new value to the CPPR, if the LSMFB value is lower than the new CPPR value, there could be a pending group interrupt in the backlog, so it needs to be scanned. Signed-off-by: Frederic Barrat Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- hw/intc/xive.c | 4 +- hw/intc/xive2.c | 173 ++++++++++++++++++++++++++++++++++++++++- include/hw/ppc/xive2.h | 4 + 3 files changed, 177 insertions(+), 4 deletions(-) diff --git a/hw/intc/xive.c b/hw/intc/xive.c index 3e4c932f19..535e59646f 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -589,7 +589,7 @@ static const XiveTmOp xive2_tm_operations[] =3D { * MMIOs below 2K : raw values and special operations without side * effects */ - { XIVE_TM_OS_PAGE, TM_QW1_OS + TM_CPPR, 1, xive_tm_set_os_cppr, + { XIVE_TM_OS_PAGE, TM_QW1_OS + TM_CPPR, 1, xive2_tm_set_os_cppr, NULL }, { XIVE_TM_HV_PAGE, TM_QW1_OS + TM_WORD2, 4, xive2_tm_push_os_ctx, NULL }, @@ -597,7 +597,7 @@ static const XiveTmOp xive2_tm_operations[] =3D { NULL }, { XIVE_TM_OS_PAGE, TM_QW1_OS + TM_LGS, 1, xive_tm_set_os_lgs, NULL }, - { XIVE_TM_HV_PAGE, TM_QW3_HV_PHYS + TM_CPPR, 1, xive_tm_set_hv_cppr, + { XIVE_TM_HV_PAGE, TM_QW3_HV_PHYS + TM_CPPR, 1, xive2_tm_set_hv_cppr, NULL }, { XIVE_TM_HV_PAGE, TM_QW3_HV_PHYS + TM_WORD2, 1, xive_tm_vt_push, NULL }, diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index 2fa7b90669..017c0f8bb4 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -17,6 +17,7 @@ #include "hw/ppc/xive.h" #include "hw/ppc/xive2.h" #include "hw/ppc/xive2_regs.h" +#include "trace.h" =20 uint32_t xive2_router_get_config(Xive2Router *xrtr) { @@ -768,6 +769,172 @@ void xive2_tm_push_os_ctx(XivePresenter *xptr, XiveTC= TX *tctx, } } =20 +static int xive2_tctx_get_nvp_indexes(XiveTCTX *tctx, uint8_t ring, + uint32_t *nvp_blk, uint32_t *nvp_idx) +{ + uint32_t w2, cam; + + w2 =3D xive_tctx_word2(&tctx->regs[ring]); + switch (ring) { + case TM_QW1_OS: + if (!(be32_to_cpu(w2) & TM2_QW1W2_VO)) { + return -1; + } + cam =3D xive_get_field32(TM2_QW1W2_OS_CAM, w2); + break; + case TM_QW2_HV_POOL: + if (!(be32_to_cpu(w2) & TM2_QW2W2_VP)) { + return -1; + } + cam =3D xive_get_field32(TM2_QW2W2_POOL_CAM, w2); + break; + case TM_QW3_HV_PHYS: + if (!(be32_to_cpu(w2) & TM2_QW3W2_VT)) { + return -1; + } + cam =3D xive2_tctx_hw_cam_line(tctx->xptr, tctx); + break; + default: + return -1; + } + *nvp_blk =3D xive2_nvp_blk(cam); + *nvp_idx =3D xive2_nvp_idx(cam); + return 0; +} + +static void xive2_tctx_set_cppr(XiveTCTX *tctx, uint8_t ring, uint8_t cppr) +{ + uint8_t *regs =3D &tctx->regs[ring]; + Xive2Router *xrtr =3D XIVE2_ROUTER(tctx->xptr); + uint8_t old_cppr, backlog_prio, first_group, group_level =3D 0; + uint8_t pipr_min, lsmfb_min, ring_min; + bool group_enabled; + uint32_t nvp_blk, nvp_idx; + Xive2Nvp nvp; + int rc; + + trace_xive_tctx_set_cppr(tctx->cs->cpu_index, ring, + regs[TM_IPB], regs[TM_PIPR], + cppr, regs[TM_NSR]); + + if (cppr > XIVE_PRIORITY_MAX) { + cppr =3D 0xff; + } + + old_cppr =3D regs[TM_CPPR]; + regs[TM_CPPR] =3D cppr; + + /* + * Recompute the PIPR based on local pending interrupts. It will + * be adjusted below if needed in case of pending group interrupts. + */ + pipr_min =3D xive_ipb_to_pipr(regs[TM_IPB]); + group_enabled =3D !!regs[TM_LGS]; + lsmfb_min =3D (group_enabled) ? regs[TM_LSMFB] : 0xff; + ring_min =3D ring; + + /* PHYS updates also depend on POOL values */ + if (ring =3D=3D TM_QW3_HV_PHYS) { + uint8_t *pregs =3D &tctx->regs[TM_QW2_HV_POOL]; + + /* POOL values only matter if POOL ctx is valid */ + if (pregs[TM_WORD2] & 0x80) { + + uint8_t pool_pipr =3D xive_ipb_to_pipr(pregs[TM_IPB]); + uint8_t pool_lsmfb =3D pregs[TM_LSMFB]; + + /* + * Determine highest priority interrupt and + * remember which ring has it. + */ + if (pool_pipr < pipr_min) { + pipr_min =3D pool_pipr; + if (pool_pipr < lsmfb_min) { + ring_min =3D TM_QW2_HV_POOL; + } + } + + /* Values needed for group priority calculation */ + if (pregs[TM_LGS] && (pool_lsmfb < lsmfb_min)) { + group_enabled =3D true; + lsmfb_min =3D pool_lsmfb; + if (lsmfb_min < pipr_min) { + ring_min =3D TM_QW2_HV_POOL; + } + } + } + } + regs[TM_PIPR] =3D pipr_min; + + rc =3D xive2_tctx_get_nvp_indexes(tctx, ring_min, &nvp_blk, &nvp_idx); + if (rc) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: set CPPR on invalid context\= n"); + return; + } + + if (cppr < old_cppr) { + /* + * FIXME: check if there's a group interrupt being presented + * and if the new cppr prevents it. If so, then the group + * interrupt needs to be re-added to the backlog and + * re-triggered (see re-trigger END info in the NVGC + * structure) + */ + } + + if (group_enabled && + lsmfb_min < cppr && + lsmfb_min < regs[TM_PIPR]) { + /* + * Thread has seen a group interrupt with a higher priority + * than the new cppr or pending local interrupt. Check the + * backlog + */ + if (xive2_router_get_nvp(xrtr, nvp_blk, nvp_idx, &nvp)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: No NVP %x/%x\n", + nvp_blk, nvp_idx); + return; + } + + if (!xive2_nvp_is_valid(&nvp)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: invalid NVP %x/%x\n", + nvp_blk, nvp_idx); + return; + } + + first_group =3D xive_get_field32(NVP2_W0_PGOFIRST, nvp.w0); + if (!first_group) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: invalid NVP %x/%x\n", + nvp_blk, nvp_idx); + return; + } + + backlog_prio =3D xive2_presenter_backlog_scan(tctx->xptr, + nvp_blk, nvp_idx, + first_group, &group_le= vel); + tctx->regs[ring_min + TM_LSMFB] =3D backlog_prio; + if (backlog_prio !=3D 0xFF) { + xive2_presenter_backlog_decr(tctx->xptr, nvp_blk, nvp_idx, + backlog_prio, group_level); + regs[TM_PIPR] =3D backlog_prio; + } + } + /* CPPR has changed, check if we need to raise a pending exception */ + xive_tctx_notify(tctx, ring_min, group_level); +} + +void xive2_tm_set_hv_cppr(XivePresenter *xptr, XiveTCTX *tctx, + hwaddr offset, uint64_t value, unsigned size) +{ + xive2_tctx_set_cppr(tctx, TM_QW3_HV_PHYS, value & 0xff); +} + +void xive2_tm_set_os_cppr(XivePresenter *xptr, XiveTCTX *tctx, + hwaddr offset, uint64_t value, unsigned size) +{ + xive2_tctx_set_cppr(tctx, TM_QW1_OS, value & 0xff); +} + static void xive2_tctx_set_target(XiveTCTX *tctx, uint8_t ring, uint8_t ta= rget) { uint8_t *regs =3D &tctx->regs[ring]; @@ -938,7 +1105,9 @@ int xive2_presenter_tctx_match(XivePresenter *xptr, Xi= veTCTX *tctx, =20 bool xive2_tm_irq_precluded(XiveTCTX *tctx, int ring, uint8_t priority) { - uint8_t *regs =3D &tctx->regs[ring]; + /* HV_POOL ring uses HV_PHYS NSR, CPPR and PIPR registers */ + uint8_t alt_ring =3D (ring =3D=3D TM_QW2_HV_POOL) ? TM_QW3_HV_PHYS : r= ing; + uint8_t *alt_regs =3D &tctx->regs[alt_ring]; =20 /* * The xive2_presenter_tctx_match() above tells if there's a match @@ -946,7 +1115,7 @@ bool xive2_tm_irq_precluded(XiveTCTX *tctx, int ring, = uint8_t priority) * priority to know if the thread can take the interrupt now or if * it is precluded. */ - if (priority < regs[TM_CPPR]) { + if (priority < alt_regs[TM_CPPR]) { return false; } return true; diff --git a/include/hw/ppc/xive2.h b/include/hw/ppc/xive2.h index ebf301bb5b..fc7422fea7 100644 --- a/include/hw/ppc/xive2.h +++ b/include/hw/ppc/xive2.h @@ -113,6 +113,10 @@ typedef struct Xive2EndSource { * XIVE2 Thread Interrupt Management Area (POWER10) */ =20 +void xive2_tm_set_hv_cppr(XivePresenter *xptr, XiveTCTX *tctx, + hwaddr offset, uint64_t value, unsigned size); +void xive2_tm_set_os_cppr(XivePresenter *xptr, XiveTCTX *tctx, + hwaddr offset, uint64_t value, unsigned size); void xive2_tm_push_os_ctx(XivePresenter *xptr, XiveTCTX *tctx, hwaddr offs= et, uint64_t value, unsigned size); uint64_t xive2_tm_pull_os_ctx(XivePresenter *xptr, XiveTCTX *tctx, --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698166; cv=none; d=zohomail.com; s=zohoarc; b=XrOB6pP1xJ39I40/EW/sHS2Tz7CPP2CMmbfz1q9AUjBFvNL0zp1emkS1GEPT6FmwzVU4xXnkrR35me3HhiSDgo/zu/mKMxXVB3mncSicyQGZgLhnEYQICIUXZppK+sODerBVjLarMHtE+wIH0iSOHIRHUjJKaf3D2G6jqgbgsM0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698166; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WWZ6jXzWeTg9f0TMcRn568DCYUVFZ/Q8jdAM6fw8ow0=; b=Qi8HJEhsZAKn5xTecFMh40cofSzZfBld3YFNJRsaJ1fb7EX+nw3Rkdi8EyZZm5XRM0BLYHSay5MuLwTdBqvs9J0jLvlI50llnVsz/cN5l5/mF1xZkAlZ/YAprUzlujlm+oq+WRvMPC2zeSey/xPm8BbuH0wC4dmPXZIc99xlmcM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698166096745.6330625689168; Tue, 11 Mar 2025 06:02:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzEg-0005UY-5M; Tue, 11 Mar 2025 09:01:34 -0400 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 1trzDQ-0004Lp-1C; Tue, 11 Mar 2025 09:00:15 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDH-00084T-Ld; Tue, 11 Mar 2025 09:00:10 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-300fefb8e06so1881870a91.0; Tue, 11 Mar 2025 06:00:00 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:59:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697999; x=1742302799; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WWZ6jXzWeTg9f0TMcRn568DCYUVFZ/Q8jdAM6fw8ow0=; b=U1bfh1OOCKIZzbHXzVSR4BpSIYP2qUSkVsw3KG0t/WE50B5KkPh0MbOK3BrsVRoT4K 8KtL2XLs9d4QtKzvuHx6h/3kZCKBD9F30A9qo2IhnDBtztOXc0R1gppsrMoPnwUWV7qI 2i0E/Eto/uZr/dPkVwDslT2eMOFKg04VOfCbs0Y7GbmKvlNeVN00UNOiRGlliyR66UXR Adul+2e+oynEd2lrVIIBNeBMldeuow6xfNPE0k061bC0JEU5JV8GNcFDojAJPwBTFsnn Y5D13qSOH+5T8MdvN2AUlz8wbp59WWGVpBr8AtuZqci6nYL2TKfDaLOJeLoERCMo2rQG A1ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697999; x=1742302799; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WWZ6jXzWeTg9f0TMcRn568DCYUVFZ/Q8jdAM6fw8ow0=; b=L661rPbGNnbiPXpxNvqMMlfl29XlzUrh/CJvl7G23178qsaJmQ+b1va2GBDlQq9Noz AK5fCBw4muRAf9cy+TDCB96VLV+vFn0K/cDsNoit4ieTlMhDaqIZlhxD++cEwIA/YcmD eNxTCy+T23Np9RUYRipfIzmEtB8grcj+ORENzB/dgoufZSMS8wGAWF8sFFh1hBAiboVg 2K66T8FW4lauE/Uvk1RjwMzlQsr7N88CLM3+hQH4jtpBOabObm8POf7dGe06okCCBQpE ZEaiSJT0VHesg3BMoMXe4MCRv+HnyGQiARtN+vyw+z0V1NOeEFhcVFXY+9oE7TZNIlu1 mqHg== X-Forwarded-Encrypted: i=1; AJvYcCW7eYhW58Rrek6Z+EMOTfCrpcDiQVEXZh3JofbVJZPTXRENNwuH7iP7vMGzvcwTEOTFAWFxamAQKQ==@nongnu.org X-Gm-Message-State: AOJu0Yw3fri5JD9Mpf3NUjOGQe395nSxQxFifCbdN4qHX8+ms69XB6C4 hLYHFBL+FFBROHPY1sMdndqu3ykwzqKhRW+kpK0RY2QcAgPQobQjvAtXLA== X-Gm-Gg: ASbGncsdJsoSS8EJQSSFtJyIuHBc/YC4ctbaTjfOJQc0PC9/CG5mtlu9HVzdLYn2DTI vw0BUPvno7UXTm39m5ehtSeW6RyWdD+eXGoeAZmezAG0iy2m5IPJNCBPU1gukWMuvU29lcJmkzM qJBJ+9vSKV991gf4GgeRNa3kAMmbcMJH5n71txYCzBDBDaAbUOXF3heZEGnJysI3VuHA+YfKtUC SM6S+Y/qjvnsPO4Z97bAUgdz4PoLxIzj8/Isu44AAGUQpSk736Fna1P+JnGOyFKbFdF1/RAyiUi 7imclgU1EG7bbYXz1TE6XrukurrysOeasOdSwCls/xfng1+MWm4= X-Google-Smtp-Source: AGHT+IFis6Ard7BrObSIFYYxBdA/Z2a3tRl3ETjHPZW5AOeookzEcW5d3AEBe22dGlAf8OZzt0TyTA== X-Received: by 2002:a17:90b:264e:b0:2fe:a336:fe65 with SMTP id 98e67ed59e1d1-300ff0ca8c9mr4849182a91.10.1741697999464; Tue, 11 Mar 2025 05:59:59 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Frederic Barrat , Michael Kowal Subject: [PULL 30/72] qtest/xive: Add group-interrupt test Date: Tue, 11 Mar 2025 22:57:24 +1000 Message-ID: <20250311125815.903177-31-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698174601019100 Content-Type: text/plain; charset="utf-8" From: Frederic Barrat Add XIVE2 tests for group interrupts and group interrupts that have been backlogged. Signed-off-by: Frederic Barrat Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- tests/qtest/pnv-xive2-test.c | 160 +++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) diff --git a/tests/qtest/pnv-xive2-test.c b/tests/qtest/pnv-xive2-test.c index dd19e88861..a4d06550ee 100644 --- a/tests/qtest/pnv-xive2-test.c +++ b/tests/qtest/pnv-xive2-test.c @@ -2,6 +2,8 @@ * QTest testcase for PowerNV 10 interrupt controller (xive2) * - Test irq to hardware thread * - Test 'Pull Thread Context to Odd Thread Reporting Line' + * - Test irq to hardware group + * - Test irq to hardware group going through backlog * * Copyright (c) 2024, IBM Corporation. * @@ -315,6 +317,158 @@ static void test_pull_thread_ctx_to_odd_thread_cl(QTe= stState *qts) word2 =3D get_tima32(qts, target_pir, TM_QW3_HV_PHYS + TM_WORD2); g_assert_cmphex(xive_get_field32(TM_QW3W2_VT, word2), =3D=3D, 0); } + +static void test_hw_group_irq(QTestState *qts) +{ + uint32_t irq =3D 100; + uint32_t irq_data =3D 0xdeadbeef; + uint32_t end_index =3D 23; + uint32_t chosen_one; + uint32_t target_nvp =3D 0x81; /* group size =3D 4 */ + uint8_t priority =3D 6; + uint32_t reg32; + uint16_t reg16; + uint8_t pq, nsr, cppr; + + printf("# =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + printf("# Testing irq %d to hardware group of size 4\n", irq); + + /* irq config */ + set_eas(qts, irq, end_index, irq_data); + set_end(qts, end_index, target_nvp, priority, true /* group */); + + /* enable and trigger irq */ + get_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_SET_PQ_00); + set_esb(qts, irq, XIVE_TRIGGER_PAGE, 0, 0); + + /* check irq is raised on cpu */ + pq =3D get_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_GET); + g_assert_cmpuint(pq, =3D=3D, XIVE_ESB_PENDING); + + /* find the targeted vCPU */ + for (chosen_one =3D 0; chosen_one < SMT; chosen_one++) { + reg32 =3D get_tima32(qts, chosen_one, TM_QW3_HV_PHYS + TM_WORD0); + nsr =3D reg32 >> 24; + if (nsr =3D=3D 0x82) { + break; + } + } + g_assert_cmphex(chosen_one, <, SMT); + cppr =3D (reg32 >> 16) & 0xFF; + g_assert_cmphex(nsr, =3D=3D, 0x82); + g_assert_cmphex(cppr, =3D=3D, 0xFF); + + /* ack the irq */ + reg16 =3D get_tima16(qts, chosen_one, TM_SPC_ACK_HV_REG); + nsr =3D reg16 >> 8; + cppr =3D reg16 & 0xFF; + g_assert_cmphex(nsr, =3D=3D, 0x82); + g_assert_cmphex(cppr, =3D=3D, priority); + + /* check irq data is what was configured */ + reg32 =3D qtest_readl(qts, xive_get_queue_addr(end_index)); + g_assert_cmphex((reg32 & 0x7fffffff), =3D=3D, (irq_data & 0x7fffffff)); + + /* End Of Interrupt */ + set_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_STORE_EOI, 0); + pq =3D get_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_GET); + g_assert_cmpuint(pq, =3D=3D, XIVE_ESB_RESET); + + /* reset CPPR */ + set_tima8(qts, chosen_one, TM_QW3_HV_PHYS + TM_CPPR, 0xFF); + reg32 =3D get_tima32(qts, chosen_one, TM_QW3_HV_PHYS + TM_WORD0); + nsr =3D reg32 >> 24; + cppr =3D (reg32 >> 16) & 0xFF; + g_assert_cmphex(nsr, =3D=3D, 0x00); + g_assert_cmphex(cppr, =3D=3D, 0xFF); +} + +static void test_hw_group_irq_backlog(QTestState *qts) +{ + uint32_t irq =3D 31; + uint32_t irq_data =3D 0x01234567; + uint32_t end_index =3D 129; + uint32_t target_nvp =3D 0x81; /* group size =3D 4 */ + uint32_t chosen_one =3D 3; + uint8_t blocking_priority, priority =3D 3; + uint32_t reg32; + uint16_t reg16; + uint8_t pq, nsr, cppr, lsmfb, i; + + printf("# =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + printf("# Testing irq %d to hardware group of size 4 going through " \ + "backlog\n", + irq); + + /* + * set current priority of all threads in the group to something + * higher than what we're about to trigger + */ + blocking_priority =3D priority - 1; + for (i =3D 0; i < SMT; i++) { + set_tima8(qts, i, TM_QW3_HV_PHYS + TM_CPPR, blocking_priority); + } + + /* irq config */ + set_eas(qts, irq, end_index, irq_data); + set_end(qts, end_index, target_nvp, priority, true /* group */); + + /* enable and trigger irq */ + get_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_SET_PQ_00); + set_esb(qts, irq, XIVE_TRIGGER_PAGE, 0, 0); + + /* check irq is raised on cpu */ + pq =3D get_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_GET); + g_assert_cmpuint(pq, =3D=3D, XIVE_ESB_PENDING); + + /* check no interrupt is pending on the 2 possible targets */ + for (i =3D 0; i < SMT; i++) { + reg32 =3D get_tima32(qts, i, TM_QW3_HV_PHYS + TM_WORD0); + nsr =3D reg32 >> 24; + cppr =3D (reg32 >> 16) & 0xFF; + lsmfb =3D reg32 & 0xFF; + g_assert_cmphex(nsr, =3D=3D, 0x0); + g_assert_cmphex(cppr, =3D=3D, blocking_priority); + g_assert_cmphex(lsmfb, =3D=3D, priority); + } + + /* lower priority of one thread */ + set_tima8(qts, chosen_one, TM_QW3_HV_PHYS + TM_CPPR, priority + 1); + + /* check backlogged interrupt is presented */ + reg32 =3D get_tima32(qts, chosen_one, TM_QW3_HV_PHYS + TM_WORD0); + nsr =3D reg32 >> 24; + cppr =3D (reg32 >> 16) & 0xFF; + g_assert_cmphex(nsr, =3D=3D, 0x82); + g_assert_cmphex(cppr, =3D=3D, priority + 1); + + /* ack the irq */ + reg16 =3D get_tima16(qts, chosen_one, TM_SPC_ACK_HV_REG); + nsr =3D reg16 >> 8; + cppr =3D reg16 & 0xFF; + g_assert_cmphex(nsr, =3D=3D, 0x82); + g_assert_cmphex(cppr, =3D=3D, priority); + + /* check irq data is what was configured */ + reg32 =3D qtest_readl(qts, xive_get_queue_addr(end_index)); + g_assert_cmphex((reg32 & 0x7fffffff), =3D=3D, (irq_data & 0x7fffffff)); + + /* End Of Interrupt */ + set_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_STORE_EOI, 0); + pq =3D get_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_GET); + g_assert_cmpuint(pq, =3D=3D, XIVE_ESB_RESET); + + /* reset CPPR */ + set_tima8(qts, chosen_one, TM_QW3_HV_PHYS + TM_CPPR, 0xFF); + reg32 =3D get_tima32(qts, chosen_one, TM_QW3_HV_PHYS + TM_WORD0); + nsr =3D reg32 >> 24; + cppr =3D (reg32 >> 16) & 0xFF; + lsmfb =3D reg32 & 0xFF; + g_assert_cmphex(nsr, =3D=3D, 0x00); + g_assert_cmphex(cppr, =3D=3D, 0xFF); + g_assert_cmphex(lsmfb, =3D=3D, 0xFF); +} + static void test_xive(void) { QTestState *qts; @@ -330,6 +484,12 @@ static void test_xive(void) /* omit reset_state here and use settings from test_hw_irq */ test_pull_thread_ctx_to_odd_thread_cl(qts); =20 + reset_state(qts); + test_hw_group_irq(qts); + + reset_state(qts); + test_hw_group_irq_backlog(qts); + reset_state(qts); test_flush_sync_inject(qts); =20 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741698234; cv=none; d=zohomail.com; s=zohoarc; b=cyUa1r2lclPamrHsQX3KZQnFeOzF1sw2Y83m1b+gTeEknegKlRmkGpZEBzmSSnOxMCYj/hvwe8Wjots7WasBVUHnkKg3/h09kCkSEPhJsvBz5Ge5gjIrAt8HFRq2DSSmHZv5dBHaRH+U3pX9qymcq+ZzF9qWFvB92wN1yX11RUY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741698234; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=by3/ZI8Vkw6A3nNqZvSfEcf780vJNiwWvMG40uDK0x8=; b=cG018DnMnyA/FNu7xt4iDfUtlwoQTlE+qp1NXb2EAaRhn2/JNH0a5w0ICagSJ1kNAGo8FQBXpeLKJ4LPLtdWNBogte2NKes/+2o0Gaubo7Y6+3cFG5YtAgN6uEcWaJYf80h4Jh36tX3emRTKUtIv2SAv/+Et+hZvKYOdViwbrjA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698234472946.6355252811934; Tue, 11 Mar 2025 06:03:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzF3-00060f-A0; Tue, 11 Mar 2025 09:01:54 -0400 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 1trzDX-0004bJ-DJ; Tue, 11 Mar 2025 09:00:23 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDM-00086E-2A; Tue, 11 Mar 2025 09:00:18 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-2ff6cf448b8so10792074a91.3; Tue, 11 Mar 2025 06:00:04 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.59.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698002; x=1742302802; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=by3/ZI8Vkw6A3nNqZvSfEcf780vJNiwWvMG40uDK0x8=; b=FkTHtluBCmu8Fb+XRMfU9juHCRqhUDEBTrsn2JWTE1mVdAmyN5VcQmM+3TFrKFxIq7 Me4rsZshA3f7ShH9XlRzbsrMXszrNCUZUxxw8i4swBWeqE27O5RV4hB8J3wRBUaEhoT7 ONmj7MyDuUGP9AQSO5Wykkqn6mA9IF9NmVLJ5nhbM62lqZ3c5gqlIrdbTKndQMBqdjK1 FKbJ0nMDF7m9qygKdn3tmpqzWB6A0KGWCfn9E4Nl0k88W/dsao2CwHj+ts8KLEi52/NC PbNQGyQwbvYEvsyFAaMKsmkzewTSzJb8sb0QUSE1lAObc3EbU+sxN1tgd4JflcF8kKWh wSlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698002; x=1742302802; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=by3/ZI8Vkw6A3nNqZvSfEcf780vJNiwWvMG40uDK0x8=; b=vsEO1UXtQddw3YR4azBN0beCY+UZFtdFQdKWLxstuR2LvMpuQP9xlvkhGyUjMM3pwk ACSzI8V68XJZ8Pgs5DI+kRonPd8zJMdltraMxpc7BvrHXeZC1U0a0uLx//Gf2z9EQYEN gsf5h80Vu5krhsIzFZ0oHLNy2T8g4yJqqbBs7BN3Rz2ftocNGbXc9eEytNP8BcBgRGS1 L6Xku3zQp8BrTfrAS7WyN7KJl3I+pqueE6Br3CEmK3b32MqF29hYSR7bJ0uEnRJX4fqT AAlAhwWcxjGEMERtVPLGrRX09ttC0fzmiTKHcRH1C4Xvb4gXN3T3qDSY8RvTk+K09F10 qgLw== X-Forwarded-Encrypted: i=1; AJvYcCWEYKBSUpWfLL9l6T/DYrgj33T4DclM4LxCaNb8WpMAsra1jVLCP6ztgAh9MDVHfaBSr0gyJM1vyg==@nongnu.org X-Gm-Message-State: AOJu0YxewOb21H9pW7dgIocBZYqjcGuBDVXJhtk4Zf+AReShSblw9WiD Mwa5+iSlIf5N1WWTdGQjZJDrfH1WODV4reibBzFbVkoRaCtVmmcNhM6vzg== X-Gm-Gg: ASbGncsNj0F1rf7mSXnHyCjj8rNhV87v8ucYAbiig888rifEi997ISv2MKehOFULyoe 63BPzhfPG8RQybeMFzl7kBX/340MOozNCEVk5IhOkmQhnnKZb0isruHqBhH10s9BS6t1/T/PsDK u2IbfH1E7G+ASdlYMxLiRur/hwjD9ZEsJHVHIYOk6pLqk82jXPFV14hkOoIfEXiO3u9rB2ozoCr U+UIcwSVj7pprNzzipd0UhFLYrDtUyBvsqkc/h0mdiBX+6OYpyBR2dzQ+knao9UyTL/wa4LOMjr O5E/qkqU0GCXVNe2N2jerYRxbMf8NASyu9FCif7CHO/pGyT6ZEqUGmjQ7eAc2w== X-Google-Smtp-Source: AGHT+IFFev1f83NDL/uuWb5ctq6PRHelu6ZBjZNhO9IoU+0pOqaK1j1KPPfzBSRu9zdhHzFS5zLy1A== X-Received: by 2002:a17:90b:3849:b0:2f9:c56b:6ec8 with SMTP id 98e67ed59e1d1-2ff7ce9114dmr26940394a91.10.1741698002458; Tue, 11 Mar 2025 06:00:02 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Frederic Barrat , Michael Kowal Subject: [PULL 31/72] ppc/xive2: Add support for MMIO operations on the NVPG/NVC BAR Date: Tue, 11 Mar 2025 22:57:25 +1000 Message-ID: <20250311125815.903177-32-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698236951019100 Content-Type: text/plain; charset="utf-8" From: Frederic Barrat Add support for the NVPG and NVC BARs. Access to the BAR pages will cause backlog counter operations to either increment or decriment the counter. Also added qtests for the same. Signed-off-by: Frederic Barrat Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- hw/intc/pnv_xive2.c | 80 +++++++++++++--- hw/intc/trace-events | 4 + hw/intc/xive2.c | 87 ++++++++++++++++++ include/hw/ppc/xive2.h | 9 ++ include/hw/ppc/xive2_regs.h | 3 + tests/qtest/meson.build | 3 +- tests/qtest/pnv-xive2-common.h | 1 + tests/qtest/pnv-xive2-nvpg_bar.c | 153 +++++++++++++++++++++++++++++++ tests/qtest/pnv-xive2-test.c | 3 + 9 files changed, 328 insertions(+), 15 deletions(-) create mode 100644 tests/qtest/pnv-xive2-nvpg_bar.c diff --git a/hw/intc/pnv_xive2.c b/hw/intc/pnv_xive2.c index e7a7d1b50f..c55d596e48 100644 --- a/hw/intc/pnv_xive2.c +++ b/hw/intc/pnv_xive2.c @@ -2202,21 +2202,40 @@ static const MemoryRegionOps pnv_xive2_tm_ops =3D { }, }; =20 -static uint64_t pnv_xive2_nvc_read(void *opaque, hwaddr offset, +static uint64_t pnv_xive2_nvc_read(void *opaque, hwaddr addr, unsigned size) { PnvXive2 *xive =3D PNV_XIVE2(opaque); + XivePresenter *xptr =3D XIVE_PRESENTER(xive); + uint32_t page =3D addr >> xive->nvpg_shift; + uint16_t op =3D addr & 0xFFF; + uint8_t blk =3D pnv_xive2_block_id(xive); =20 - xive2_error(xive, "NVC: invalid read @%"HWADDR_PRIx, offset); - return -1; + if (size !=3D 2) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: invalid nvc load size %d\n", + size); + return -1; + } + + return xive2_presenter_nvgc_backlog_op(xptr, true, blk, page, op, 1); } =20 -static void pnv_xive2_nvc_write(void *opaque, hwaddr offset, +static void pnv_xive2_nvc_write(void *opaque, hwaddr addr, uint64_t val, unsigned size) { PnvXive2 *xive =3D PNV_XIVE2(opaque); + XivePresenter *xptr =3D XIVE_PRESENTER(xive); + uint32_t page =3D addr >> xive->nvc_shift; + uint16_t op =3D addr & 0xFFF; + uint8_t blk =3D pnv_xive2_block_id(xive); =20 - xive2_error(xive, "NVC: invalid write @%"HWADDR_PRIx, offset); + if (size !=3D 1) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: invalid nvc write size %d\n", + size); + return; + } + + (void)xive2_presenter_nvgc_backlog_op(xptr, true, blk, page, op, val); } =20 static const MemoryRegionOps pnv_xive2_nvc_ops =3D { @@ -2224,30 +2243,63 @@ static const MemoryRegionOps pnv_xive2_nvc_ops =3D { .write =3D pnv_xive2_nvc_write, .endianness =3D DEVICE_BIG_ENDIAN, .valid =3D { - .min_access_size =3D 8, + .min_access_size =3D 1, .max_access_size =3D 8, }, .impl =3D { - .min_access_size =3D 8, + .min_access_size =3D 1, .max_access_size =3D 8, }, }; =20 -static uint64_t pnv_xive2_nvpg_read(void *opaque, hwaddr offset, +static uint64_t pnv_xive2_nvpg_read(void *opaque, hwaddr addr, unsigned size) { PnvXive2 *xive =3D PNV_XIVE2(opaque); + XivePresenter *xptr =3D XIVE_PRESENTER(xive); + uint32_t page =3D addr >> xive->nvpg_shift; + uint16_t op =3D addr & 0xFFF; + uint32_t index =3D page >> 1; + uint8_t blk =3D pnv_xive2_block_id(xive); =20 - xive2_error(xive, "NVPG: invalid read @%"HWADDR_PRIx, offset); - return -1; + if (size !=3D 2) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: invalid nvpg load size %d\n", + size); + return -1; + } + + if (page % 2) { + /* odd page - NVG */ + return xive2_presenter_nvgc_backlog_op(xptr, false, blk, index, op= , 1); + } else { + /* even page - NVP */ + return xive2_presenter_nvp_backlog_op(xptr, blk, index, op); + } } =20 -static void pnv_xive2_nvpg_write(void *opaque, hwaddr offset, +static void pnv_xive2_nvpg_write(void *opaque, hwaddr addr, uint64_t val, unsigned size) { PnvXive2 *xive =3D PNV_XIVE2(opaque); + XivePresenter *xptr =3D XIVE_PRESENTER(xive); + uint32_t page =3D addr >> xive->nvpg_shift; + uint16_t op =3D addr & 0xFFF; + uint32_t index =3D page >> 1; + uint8_t blk =3D pnv_xive2_block_id(xive); =20 - xive2_error(xive, "NVPG: invalid write @%"HWADDR_PRIx, offset); + if (size !=3D 1) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: invalid nvpg write size %d\n= ", + size); + return; + } + + if (page % 2) { + /* odd page - NVG */ + (void)xive2_presenter_nvgc_backlog_op(xptr, false, blk, index, op,= val); + } else { + /* even page - NVP */ + (void)xive2_presenter_nvp_backlog_op(xptr, blk, index, op); + } } =20 static const MemoryRegionOps pnv_xive2_nvpg_ops =3D { @@ -2255,11 +2307,11 @@ static const MemoryRegionOps pnv_xive2_nvpg_ops =3D= { .write =3D pnv_xive2_nvpg_write, .endianness =3D DEVICE_BIG_ENDIAN, .valid =3D { - .min_access_size =3D 8, + .min_access_size =3D 1, .max_access_size =3D 8, }, .impl =3D { - .min_access_size =3D 8, + .min_access_size =3D 1, .max_access_size =3D 8, }, }; diff --git a/hw/intc/trace-events b/hw/intc/trace-events index e9fe1978f9..0ba9a02e73 100644 --- a/hw/intc/trace-events +++ b/hw/intc/trace-events @@ -286,6 +286,10 @@ xive_tctx_tm_read(uint32_t index, uint64_t offset, uns= igned int size, uint64_t v xive_presenter_notify(uint8_t nvt_blk, uint32_t nvt_idx, uint8_t ring, uin= t8_t group_level) "found NVT 0x%x/0x%x ring=3D0x%x group_level=3D%d" xive_end_source_read(uint8_t end_blk, uint32_t end_idx, uint64_t addr) "EN= D 0x%x/0x%x @0x%"PRIx64 =20 +# xive2.c +xive_nvp_backlog_op(uint8_t blk, uint32_t idx, uint8_t op, uint8_t priorit= y, uint8_t rc) "NVP 0x%x/0x%x operation=3D%d priority=3D%d rc=3D%d" +xive_nvgc_backlog_op(bool c, uint8_t blk, uint32_t idx, uint8_t op, uint8_= t priority, uint32_t rc) "NVGC crowd=3D%d 0x%x/0x%x operation=3D%d priority= =3D%d rc=3D%d" + # pnv_xive.c pnv_xive_ic_hw_trigger(uint64_t addr, uint64_t val) "@0x%"PRIx64" val=3D0x= %"PRIx64 =20 diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index 017c0f8bb4..34628f2922 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -88,6 +88,93 @@ static void xive2_nvgc_set_backlog(Xive2Nvgc *nvgc, uint= 8_t priority, } } =20 +uint64_t xive2_presenter_nvgc_backlog_op(XivePresenter *xptr, + bool crowd, + uint8_t blk, uint32_t idx, + uint16_t offset, uint16_t val) +{ + Xive2Router *xrtr =3D XIVE2_ROUTER(xptr); + uint8_t priority =3D GETFIELD(NVx_BACKLOG_PRIO, offset); + uint8_t op =3D GETFIELD(NVx_BACKLOG_OP, offset); + Xive2Nvgc nvgc; + uint32_t count, old_count; + + if (xive2_router_get_nvgc(xrtr, crowd, blk, idx, &nvgc)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: No %s %x/%x\n", + crowd ? "NVC" : "NVG", blk, idx); + return -1; + } + if (!xive2_nvgc_is_valid(&nvgc)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: Invalid NVG %x/%x\n", blk, i= dx); + return -1; + } + + old_count =3D xive2_nvgc_get_backlog(&nvgc, priority); + count =3D old_count; + /* + * op: + * 0b00 =3D> increment + * 0b01 =3D> decrement + * 0b1- =3D> read + */ + if (op =3D=3D 0b00 || op =3D=3D 0b01) { + if (op =3D=3D 0b00) { + count +=3D val; + } else { + if (count > val) { + count -=3D val; + } else { + count =3D 0; + } + } + xive2_nvgc_set_backlog(&nvgc, priority, count); + xive2_router_write_nvgc(xrtr, crowd, blk, idx, &nvgc); + } + trace_xive_nvgc_backlog_op(crowd, blk, idx, op, priority, old_count); + return old_count; +} + +uint64_t xive2_presenter_nvp_backlog_op(XivePresenter *xptr, + uint8_t blk, uint32_t idx, + uint16_t offset) +{ + Xive2Router *xrtr =3D XIVE2_ROUTER(xptr); + uint8_t priority =3D GETFIELD(NVx_BACKLOG_PRIO, offset); + uint8_t op =3D GETFIELD(NVx_BACKLOG_OP, offset); + Xive2Nvp nvp; + uint8_t ipb, old_ipb, rc; + + if (xive2_router_get_nvp(xrtr, blk, idx, &nvp)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: No NVP %x/%x\n", blk, idx); + return -1; + } + if (!xive2_nvp_is_valid(&nvp)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: Invalid NVP %x/%x\n", blk, i= dx); + return -1; + } + + old_ipb =3D xive_get_field32(NVP2_W2_IPB, nvp.w2); + ipb =3D old_ipb; + /* + * op: + * 0b00 =3D> set priority bit + * 0b01 =3D> reset priority bit + * 0b1- =3D> read + */ + if (op =3D=3D 0b00 || op =3D=3D 0b01) { + if (op =3D=3D 0b00) { + ipb |=3D xive_priority_to_ipb(priority); + } else { + ipb &=3D ~xive_priority_to_ipb(priority); + } + nvp.w2 =3D xive_set_field32(NVP2_W2_IPB, nvp.w2, ipb); + xive2_router_write_nvp(xrtr, blk, idx, &nvp, 2); + } + rc =3D !!(old_ipb & xive_priority_to_ipb(priority)); + trace_xive_nvp_backlog_op(blk, idx, op, priority, rc); + return rc; +} + void xive2_eas_pic_print_info(Xive2Eas *eas, uint32_t lisn, GString *buf) { if (!xive2_eas_is_valid(eas)) { diff --git a/include/hw/ppc/xive2.h b/include/hw/ppc/xive2.h index fc7422fea7..c07e23e1d3 100644 --- a/include/hw/ppc/xive2.h +++ b/include/hw/ppc/xive2.h @@ -90,6 +90,15 @@ int xive2_presenter_tctx_match(XivePresenter *xptr, Xive= TCTX *tctx, uint8_t nvt_blk, uint32_t nvt_idx, bool cam_ignore, uint32_t logic_serv); =20 +uint64_t xive2_presenter_nvp_backlog_op(XivePresenter *xptr, + uint8_t blk, uint32_t idx, + uint16_t offset); + +uint64_t xive2_presenter_nvgc_backlog_op(XivePresenter *xptr, + bool crowd, + uint8_t blk, uint32_t idx, + uint16_t offset, uint16_t val); + /* * XIVE2 END ESBs (POWER10) */ diff --git a/include/hw/ppc/xive2_regs.h b/include/hw/ppc/xive2_regs.h index e88d6eab1e..9bcf7a8a6f 100644 --- a/include/hw/ppc/xive2_regs.h +++ b/include/hw/ppc/xive2_regs.h @@ -233,4 +233,7 @@ typedef struct Xive2Nvgc { void xive2_nvgc_pic_print_info(Xive2Nvgc *nvgc, uint32_t nvgc_idx, GString *buf); =20 +#define NVx_BACKLOG_OP PPC_BITMASK(52, 53) +#define NVx_BACKLOG_PRIO PPC_BITMASK(57, 59) + #endif /* PPC_XIVE2_REGS_H */ diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index b23fe67db7..3ecb23e610 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -368,7 +368,8 @@ qtests =3D { 'ivshmem-test': [rt, '../../contrib/ivshmem-server/ivshmem-server.c'], 'migration-test': migration_files + migration_tls_files, 'pxe-test': files('boot-sector.c'), - 'pnv-xive2-test': files('pnv-xive2-common.c', 'pnv-xive2-flush-sync.c'), + 'pnv-xive2-test': files('pnv-xive2-common.c', 'pnv-xive2-flush-sync.c', + 'pnv-xive2-nvpg_bar.c'), 'qos-test': [chardev, io, qos_test_ss.apply({}).sources()], 'tpm-crb-swtpm-test': [io, tpmemu_files], 'tpm-crb-test': [io, tpmemu_files], diff --git a/tests/qtest/pnv-xive2-common.h b/tests/qtest/pnv-xive2-common.h index 9ae34771aa..2077c05ebc 100644 --- a/tests/qtest/pnv-xive2-common.h +++ b/tests/qtest/pnv-xive2-common.h @@ -107,5 +107,6 @@ extern void set_end(QTestState *qts, uint32_t index, ui= nt32_t nvp_index, =20 =20 void test_flush_sync_inject(QTestState *qts); +void test_nvpg_bar(QTestState *qts); =20 #endif /* TEST_PNV_XIVE2_COMMON_H */ diff --git a/tests/qtest/pnv-xive2-nvpg_bar.c b/tests/qtest/pnv-xive2-nvpg_= bar.c new file mode 100644 index 0000000000..028512bddc --- /dev/null +++ b/tests/qtest/pnv-xive2-nvpg_bar.c @@ -0,0 +1,153 @@ +/* + * QTest testcase for PowerNV 10 interrupt controller (xive2) + * - Test NVPG BAR MMIO operations + * + * Copyright (c) 2024, IBM Corporation. + * + * This work is licensed under the terms of the GNU GPL, version 2 or + * later. See the COPYING file in the top-level directory. + */ +#include "qemu/osdep.h" +#include "libqtest.h" + +#include "pnv-xive2-common.h" + +#define NVPG_BACKLOG_OP_SHIFT 10 +#define NVPG_BACKLOG_PRIO_SHIFT 4 + +#define XIVE_PRIORITY_MAX 7 + +enum NVx { + NVP, + NVG, + NVC +}; + +typedef enum { + INCR_STORE =3D 0b100, + INCR_LOAD =3D 0b000, + DECR_STORE =3D 0b101, + DECR_LOAD =3D 0b001, + READ_x =3D 0b010, + READ_y =3D 0b011, +} backlog_op; + +static uint32_t nvpg_backlog_op(QTestState *qts, backlog_op op, + enum NVx type, uint64_t index, + uint8_t priority, uint8_t delta) +{ + uint64_t addr, offset; + uint32_t count =3D 0; + + switch (type) { + case NVP: + addr =3D XIVE_NVPG_ADDR + (index << (XIVE_PAGE_SHIFT + 1)); + break; + case NVG: + addr =3D XIVE_NVPG_ADDR + (index << (XIVE_PAGE_SHIFT + 1)) + + (1 << XIVE_PAGE_SHIFT); + break; + case NVC: + addr =3D XIVE_NVC_ADDR + (index << XIVE_PAGE_SHIFT); + break; + default: + g_assert_not_reached(); + } + + offset =3D (op & 0b11) << NVPG_BACKLOG_OP_SHIFT; + offset |=3D priority << NVPG_BACKLOG_PRIO_SHIFT; + if (op >> 2) { + qtest_writeb(qts, addr + offset, delta); + } else { + count =3D qtest_readw(qts, addr + offset); + } + return count; +} + +void test_nvpg_bar(QTestState *qts) +{ + uint32_t nvp_target =3D 0x11; + uint32_t group_target =3D 0x17; /* size 16 */ + uint32_t vp_irq =3D 33, group_irq =3D 47; + uint32_t vp_end =3D 3, group_end =3D 97; + uint32_t vp_irq_data =3D 0x33333333; + uint32_t group_irq_data =3D 0x66666666; + uint8_t vp_priority =3D 0, group_priority =3D 5; + uint32_t vp_count[XIVE_PRIORITY_MAX + 1] =3D { 0 }; + uint32_t group_count[XIVE_PRIORITY_MAX + 1] =3D { 0 }; + uint32_t count, delta; + uint8_t i; + + printf("# =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + printf("# Testing NVPG BAR operations\n"); + + set_nvg(qts, group_target, 0); + set_nvp(qts, nvp_target, 0x04); + set_nvp(qts, group_target, 0x04); + + /* + * Setup: trigger a VP-specific interrupt and a group interrupt + * so that the backlog counters are initialized to something else + * than 0 for at least one priority level + */ + set_eas(qts, vp_irq, vp_end, vp_irq_data); + set_end(qts, vp_end, nvp_target, vp_priority, false /* group */); + + set_eas(qts, group_irq, group_end, group_irq_data); + set_end(qts, group_end, group_target, group_priority, true /* group */= ); + + get_esb(qts, vp_irq, XIVE_EOI_PAGE, XIVE_ESB_SET_PQ_00); + set_esb(qts, vp_irq, XIVE_TRIGGER_PAGE, 0, 0); + vp_count[vp_priority]++; + + get_esb(qts, group_irq, XIVE_EOI_PAGE, XIVE_ESB_SET_PQ_00); + set_esb(qts, group_irq, XIVE_TRIGGER_PAGE, 0, 0); + group_count[group_priority]++; + + /* check the initial counters */ + for (i =3D 0; i <=3D XIVE_PRIORITY_MAX; i++) { + count =3D nvpg_backlog_op(qts, READ_x, NVP, nvp_target, i, 0); + g_assert_cmpuint(count, =3D=3D, vp_count[i]); + + count =3D nvpg_backlog_op(qts, READ_y, NVG, group_target, i, 0); + g_assert_cmpuint(count, =3D=3D, group_count[i]); + } + + /* do a few ops on the VP. Counter can only be 0 and 1 */ + vp_priority =3D 2; + delta =3D 7; + nvpg_backlog_op(qts, INCR_STORE, NVP, nvp_target, vp_priority, delta); + vp_count[vp_priority] =3D 1; + count =3D nvpg_backlog_op(qts, INCR_LOAD, NVP, nvp_target, vp_priority= , 0); + g_assert_cmpuint(count, =3D=3D, vp_count[vp_priority]); + count =3D nvpg_backlog_op(qts, READ_y, NVP, nvp_target, vp_priority, 0= ); + g_assert_cmpuint(count, =3D=3D, vp_count[vp_priority]); + + count =3D nvpg_backlog_op(qts, DECR_LOAD, NVP, nvp_target, vp_priority= , 0); + g_assert_cmpuint(count, =3D=3D, vp_count[vp_priority]); + vp_count[vp_priority] =3D 0; + nvpg_backlog_op(qts, DECR_STORE, NVP, nvp_target, vp_priority, delta); + count =3D nvpg_backlog_op(qts, READ_x, NVP, nvp_target, vp_priority, 0= ); + g_assert_cmpuint(count, =3D=3D, vp_count[vp_priority]); + + /* do a few ops on the group */ + group_priority =3D 2; + delta =3D 9; + /* can't go negative */ + nvpg_backlog_op(qts, DECR_STORE, NVG, group_target, group_priority, de= lta); + count =3D nvpg_backlog_op(qts, READ_y, NVG, group_target, group_priori= ty, 0); + g_assert_cmpuint(count, =3D=3D, 0); + nvpg_backlog_op(qts, INCR_STORE, NVG, group_target, group_priority, de= lta); + group_count[group_priority] +=3D delta; + count =3D nvpg_backlog_op(qts, INCR_LOAD, NVG, group_target, + group_priority, delta); + g_assert_cmpuint(count, =3D=3D, group_count[group_priority]); + group_count[group_priority]++; + + count =3D nvpg_backlog_op(qts, DECR_LOAD, NVG, group_target, + group_priority, delta); + g_assert_cmpuint(count, =3D=3D, group_count[group_priority]); + group_count[group_priority]--; + count =3D nvpg_backlog_op(qts, READ_x, NVG, group_target, group_priori= ty, 0); + g_assert_cmpuint(count, =3D=3D, group_count[group_priority]); +} diff --git a/tests/qtest/pnv-xive2-test.c b/tests/qtest/pnv-xive2-test.c index a4d06550ee..a0e9f19313 100644 --- a/tests/qtest/pnv-xive2-test.c +++ b/tests/qtest/pnv-xive2-test.c @@ -493,6 +493,9 @@ static void test_xive(void) reset_state(qts); test_flush_sync_inject(qts); =20 + reset_state(qts); + test_nvpg_bar(qts); + qtest_quit(qts); } =20 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699407; cv=none; d=zohomail.com; s=zohoarc; b=imQ+9CaeeV01jPax2sA5iLb8NxSOiR72UmxzX0q+jha/WAlIEIRI83ZpexHn749F9zBbgRkyuawsrhQQVuac1YKCuUFD4Q6D0swclRz8k3pCHcddX9YK+ES00m4uVt94mZGHChvGvS2OhJDFeBM8uSlxJd/7lWg2rrHa+Z9QrF8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699407; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=V66yWUqp8rsmJBZEyKf71sM70wBJJD9B0Sphx+ooMzc=; b=oGUY2Pbf6DvH0bzzQal8LuM/5mu+BUfUy12eF0rKDOfPZhdb9hJqJLOCeHDeAaMIdx6lp1kSwMK6/TUTJ/iG+8SSqTcGqmpuK79aMLKwXH4kj//T748Wxgfe1oAAL/yJGnDJd52gz6vvRylEPRGDJlb+KXxURh5doP+8629+z2s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699407881663.367611315109; Tue, 11 Mar 2025 06:23:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzFU-0006Sl-JQ; Tue, 11 Mar 2025 09:02:20 -0400 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 1trzDc-0004i6-N0; Tue, 11 Mar 2025 09:00:25 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDQ-0008Hk-7O; Tue, 11 Mar 2025 09:00:19 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-2ff797f8f1bso7288104a91.3; Tue, 11 Mar 2025 06:00:08 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698006; x=1742302806; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=V66yWUqp8rsmJBZEyKf71sM70wBJJD9B0Sphx+ooMzc=; b=B6S2o2joT4KT4l8Kj3Y39htmR9o9iOV7o7mFm+tX/yNhUWPAhbb3HT/1B1iZGc4b+M 2jBccjUMpNquPL90yA1pEmz3wfRsIYHc0zGgzHzVVOZbMcGmzn7G9YOwOzaDOnk7dyQn lzW+E7U9Lc81GtNu527hUU2lLeIOjgeINahwkvHJEfA5kCHN4Irqe5RN/LizijmEPJ2z 8oMowmNzpvBRDgZoXUuPmylRjb6m+EhHjAq5LpM0oCaGA9kNTxi/t3x2jWX8FRoL55yt u+0IZU3pg4WkPUmp+a61bDROhs2bXk9e0ti5lt0MQQs9Ja7e/GlQy51sOFqFyzxpGP3C aXNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698006; x=1742302806; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=V66yWUqp8rsmJBZEyKf71sM70wBJJD9B0Sphx+ooMzc=; b=TP3dy+cdBuMSrMmyf7exJa9Ulu5OwGDGfTGHyQWqxtLCSH4yF8u4yG7NsKrterbFbO 73oenjrPKx1X4wZ0/L5CqhtgbSqmMVtzoXZYVCtiHjleSgBMnScFcwvt+9/f1yYPz5ZR z6xoKE1g6kuttVUaI36M9y624abSwhLwdgO6cWkk4IJNV+gXaNxCcSDs8ekFiJBcU3au qSeJuJGTKP9EplyisEuJ5IYn49NolpOnPbYTT4G7qfH0n41lQ9D7wr7ngxpXNT1CDkQh dFqnRkRZBMhWUTyib1oxb6KtOTuqSyT+Wi/mVMfcSVqzKgIJrCGFw/ZITksM10MSRq7s P/vQ== X-Forwarded-Encrypted: i=1; AJvYcCVVDIjHYTocUHhIkXSi8RViJwokROXohxFQ2JcneSP+6FK7FwrCeLIv3bgYRuUYIMBotEW3pP83Wg==@nongnu.org X-Gm-Message-State: AOJu0YwwX7ZIEf9L1tNa7IzyRm+gWQdZ1WCxILC/4sE4qvK3YUoRzvsL Dmwf2yebN+/iFyK/rQ3VTmp7QQPIU5+UBb5W2pAUOA74D375+Uu1M4uc7A== X-Gm-Gg: ASbGnctjg/rih+IPAYfBbRQdshExiSzw+NIZ6Jw9vFJWFw8Q11Mr5RX/G3J0tLRvTxa vk6kksfnXogqh1c0UIlzC2za7rp7J2kUPdgareI7e2H5/N5QdqelnLyAGeLYWWKmbe/1OuJ0B0N D/PZR5QXENfWZDT8TQlQFi8Utf7GGopSMQpN+u39kOmIf4nkdqCAW5NEG7Y72zQbitqxTh6R2X0 rmuUuZCR20YSX4Z8mJoTQFFNAyeAT1R9TMdzrOj5t9o37CJcO6dghtLoLjOT/lFp+0hb6qB7OPJ wGRn04mlPvCZE22PfrwZHIMYAEJbMDLg6n+eP73UD1TGzK0U1cc= X-Google-Smtp-Source: AGHT+IEfrVJuXfc+XS2CthpcI9JwyvsXeVDA2ClnnJjxtMLLYI0Lr9dO9PM/c4FEKPHb6mkYHmAwQA== X-Received: by 2002:a17:90b:2742:b0:2fe:a8b1:7d8 with SMTP id 98e67ed59e1d1-300ff34d643mr4825311a91.25.1741698006292; Tue, 11 Mar 2025 06:00:06 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Frederic Barrat , Glenn Miles , Michael Kowal Subject: [PULL 32/72] ppc/xive2: Support crowd-matching when looking for target Date: Tue, 11 Mar 2025 22:57:26 +1000 Message-ID: <20250311125815.903177-33-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699413930019000 Content-Type: text/plain; charset="utf-8" From: Frederic Barrat XIVE crowd sizes are encoded into a 2-bit field as follows: 0: 0b00 2: 0b01 4: 0b10 16: 0b11 A crowd size of 8 is not supported. If an END is defined with the 'crowd' bit set, then a target can be running on different blocks. It means that some bits from the block VP are masked when looking for a match. It is similar to groups, but on the block instead of the VP index. Most of the changes are due to passing the extra argument 'crowd' all the way to the function checking for matches. Signed-off-by: Frederic Barrat Signed-off-by: Glenn Miles Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- hw/intc/pnv_xive.c | 10 +++--- hw/intc/pnv_xive2.c | 12 +++---- hw/intc/spapr_xive.c | 8 ++--- hw/intc/xive.c | 45 +++++++++++++++++++++---- hw/intc/xive2.c | 76 +++++++++++++++++++++++++++++++++--------- hw/ppc/pnv.c | 15 +++++---- hw/ppc/spapr.c | 7 ++-- include/hw/ppc/xive.h | 10 +++--- include/hw/ppc/xive2.h | 3 +- 9 files changed, 134 insertions(+), 52 deletions(-) diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c index b755ddf0ff..ccbe95a58e 100644 --- a/hw/intc/pnv_xive.c +++ b/hw/intc/pnv_xive.c @@ -1,10 +1,9 @@ /* * QEMU PowerPC XIVE interrupt controller model * - * Copyright (c) 2017-2019, IBM Corporation. + * Copyright (c) 2017-2024, IBM Corporation. * - * This code is licensed under the GPL version 2 or later. See the - * COPYING file in the top-level directory. + * SPDX-License-Identifier: GPL-2.0-or-later */ =20 #include "qemu/osdep.h" @@ -473,7 +472,7 @@ static bool pnv_xive_is_cpu_enabled(PnvXive *xive, Powe= rPCCPU *cpu) =20 static int pnv_xive_match_nvt(XivePresenter *xptr, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint8_t priority, + bool crowd, bool cam_ignore, uint8_t priorit= y, uint32_t logic_serv, XiveTCTXMatch *match) { PnvXive *xive =3D PNV_XIVE(xptr); @@ -500,7 +499,8 @@ static int pnv_xive_match_nvt(XivePresenter *xptr, uint= 8_t format, * Check the thread context CAM lines and record matches. */ ring =3D xive_presenter_tctx_match(xptr, tctx, format, nvt_blk, - nvt_idx, cam_ignore, logic_se= rv); + nvt_idx, cam_ignore, + logic_serv); /* * Save the context and follow on to catch duplicates, that we * don't support yet. diff --git a/hw/intc/pnv_xive2.c b/hw/intc/pnv_xive2.c index c55d596e48..0b81dad6ba 100644 --- a/hw/intc/pnv_xive2.c +++ b/hw/intc/pnv_xive2.c @@ -624,7 +624,7 @@ static bool pnv_xive2_is_cpu_enabled(PnvXive2 *xive, Po= werPCCPU *cpu) =20 static int pnv_xive2_match_nvt(XivePresenter *xptr, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint8_t priority, + bool crowd, bool cam_ignore, uint8_t priori= ty, uint32_t logic_serv, XiveTCTXMatch *match) { PnvXive2 *xive =3D PNV_XIVE2(xptr); @@ -655,8 +655,8 @@ static int pnv_xive2_match_nvt(XivePresenter *xptr, uin= t8_t format, logic_serv); } else { ring =3D xive2_presenter_tctx_match(xptr, tctx, format, nv= t_blk, - nvt_idx, cam_ignore, - logic_serv); + nvt_idx, crowd, cam_igno= re, + logic_serv); } =20 if (ring !=3D -1) { @@ -707,7 +707,7 @@ static uint32_t pnv_xive2_presenter_get_config(XivePres= enter *xptr) =20 static int pnv_xive2_broadcast(XivePresenter *xptr, uint8_t nvt_blk, uint32_t nvt_idx, - uint8_t priority) + bool crowd, bool ignore, uint8_t priority) { PnvXive2 *xive =3D PNV_XIVE2(xptr); PnvChip *chip =3D xive->chip; @@ -732,10 +732,10 @@ static int pnv_xive2_broadcast(XivePresenter *xptr, =20 if (gen1_tima_os) { ring =3D xive_presenter_tctx_match(xptr, tctx, 0, nvt_blk, - nvt_idx, true, 0); + nvt_idx, ignore, 0); } else { ring =3D xive2_presenter_tctx_match(xptr, tctx, 0, nvt_blk, - nvt_idx, true, 0); + nvt_idx, crowd, ignore, = 0); } =20 if (ring !=3D -1) { diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c index a764c0bb57..ce734b03ab 100644 --- a/hw/intc/spapr_xive.c +++ b/hw/intc/spapr_xive.c @@ -1,10 +1,9 @@ /* * QEMU PowerPC sPAPR XIVE interrupt controller model * - * Copyright (c) 2017-2018, IBM Corporation. + * Copyright (c) 2017-2024, IBM Corporation. * - * This code is licensed under the GPL version 2 or later. See the - * COPYING file in the top-level directory. + * SPDX-License-Identifier: GPL-2.0-or-later */ =20 #include "qemu/osdep.h" @@ -431,7 +430,8 @@ static int spapr_xive_write_nvt(XiveRouter *xrtr, uint8= _t nvt_blk, =20 static int spapr_xive_match_nvt(XivePresenter *xptr, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint8_t priority, + bool crowd, bool cam_ignore, + uint8_t priority, uint32_t logic_serv, XiveTCTXMatch *match) { CPUState *cs; diff --git a/hw/intc/xive.c b/hw/intc/xive.c index 535e59646f..c77df2c1f8 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -1665,10 +1665,42 @@ uint32_t xive_get_vpgroup_size(uint32_t nvp_index) return 1 << (ctz32(~nvp_index) + 1); } =20 -static uint8_t xive_get_group_level(uint32_t nvp_index) +static uint8_t xive_get_group_level(bool crowd, bool ignore, + uint32_t nvp_blk, uint32_t nvp_index) { - /* FIXME add crowd encoding */ - return ctz32(~nvp_index) + 1; + uint8_t level; + + if (!ignore) { + g_assert(!crowd); + return 0; + } + + level =3D (ctz32(~nvp_index) + 1) & 0b1111; + if (crowd) { + uint32_t blk; + + /* crowd level is bit position of first 0 from the right in nvp_bl= k */ + blk =3D ctz32(~nvp_blk) + 1; + + /* + * Supported crowd sizes are 2^1, 2^2, and 2^4. 2^3 is not support= ed. + * HW will encode level 4 as the value 3. See xive2_pgofnext(). + */ + switch (level) { + case 1: + case 2: + break; + case 4: + blk =3D 3; + break; + default: + g_assert_not_reached(); + } + + /* Crowd level bits reside in upper 2 bits of the 6 bit group leve= l */ + level |=3D blk << 4; + } + return level; } =20 /* @@ -1740,7 +1772,7 @@ int xive_presenter_tctx_match(XivePresenter *xptr, Xi= veTCTX *tctx, */ bool xive_presenter_notify(XiveFabric *xfb, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint8_t priority, + bool crowd, bool cam_ignore, uint8_t priority, uint32_t logic_serv, bool *precluded) { XiveFabricClass *xfc =3D XIVE_FABRIC_GET_CLASS(xfb); @@ -1771,7 +1803,7 @@ bool xive_presenter_notify(XiveFabric *xfb, uint8_t f= ormat, * a new command to the presenters (the equivalent of the "assign" * power bus command in the documented full notify sequence. */ - count =3D xfc->match_nvt(xfb, format, nvt_blk, nvt_idx, cam_ignore, + count =3D xfc->match_nvt(xfb, format, nvt_blk, nvt_idx, crowd, cam_ign= ore, priority, logic_serv, &match); if (count < 0) { return false; @@ -1779,7 +1811,7 @@ bool xive_presenter_notify(XiveFabric *xfb, uint8_t f= ormat, =20 /* handle CPU exception delivery */ if (count) { - group_level =3D cam_ignore ? xive_get_group_level(nvt_idx) : 0; + group_level =3D xive_get_group_level(crowd, cam_ignore, nvt_blk, n= vt_idx); trace_xive_presenter_notify(nvt_blk, nvt_idx, match.ring, group_le= vel); xive_tctx_pipr_update(match.tctx, match.ring, priority, group_leve= l); } else { @@ -1904,6 +1936,7 @@ void xive_router_end_notify(XiveRouter *xrtr, XiveEAS= *eas) } =20 found =3D xive_presenter_notify(xrtr->xfb, format, nvt_blk, nvt_idx, + false /* crowd */, xive_get_field32(END_W7_F0_IGNORE, end.w7), priority, xive_get_field32(END_W7_F1_LOG_SERVER_ID, end.w7= ), diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index 34628f2922..5fa8e1b3fb 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -1121,13 +1121,40 @@ static bool xive2_vp_match_mask(uint32_t cam1, uint= 32_t cam2, return (cam1 & vp_mask) =3D=3D (cam2 & vp_mask); } =20 +static uint8_t xive2_get_vp_block_mask(uint32_t nvt_blk, bool crowd) +{ + uint8_t size, block_mask =3D 0b1111; + + /* 3 supported crowd sizes: 2, 4, 16 */ + if (crowd) { + size =3D xive_get_vpgroup_size(nvt_blk); + if (size =3D=3D 8) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: Invalid crowd size of 8n= "); + return block_mask; + } + block_mask &=3D ~(size - 1); + } + return block_mask; +} + +static uint32_t xive2_get_vp_index_mask(uint32_t nvt_index, bool cam_ignor= e) +{ + uint32_t index_mask =3D 0xFFFFFF; /* 24 bits */ + + if (cam_ignore) { + index_mask &=3D ~(xive_get_vpgroup_size(nvt_index) - 1); + } + return index_mask; +} + /* * The thread context register words are in big-endian format. */ int xive2_presenter_tctx_match(XivePresenter *xptr, XiveTCTX *tctx, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint32_t logic_serv) + bool crowd, bool cam_ignore, + uint32_t logic_serv) { uint32_t cam =3D xive2_nvp_cam_line(nvt_blk, nvt_idx); uint32_t qw3w2 =3D xive_tctx_word2(&tctx->regs[TM_QW3_HV_PHYS]); @@ -1135,7 +1162,8 @@ int xive2_presenter_tctx_match(XivePresenter *xptr, X= iveTCTX *tctx, uint32_t qw1w2 =3D xive_tctx_word2(&tctx->regs[TM_QW1_OS]); uint32_t qw0w2 =3D xive_tctx_word2(&tctx->regs[TM_QW0_USER]); =20 - uint32_t vp_mask =3D 0xFFFFFFFF; + uint32_t index_mask, vp_mask; + uint8_t block_mask; =20 if (format =3D=3D 0) { /* @@ -1143,9 +1171,9 @@ int xive2_presenter_tctx_match(XivePresenter *xptr, X= iveTCTX *tctx, * i=3D1: VP-group notification (bits ignored at the end of the * NVT identifier) */ - if (cam_ignore) { - vp_mask =3D ~(xive_get_vpgroup_size(nvt_idx) - 1); - } + block_mask =3D xive2_get_vp_block_mask(nvt_blk, crowd); + index_mask =3D xive2_get_vp_index_mask(nvt_idx, cam_ignore); + vp_mask =3D xive2_nvp_cam_line(block_mask, index_mask); =20 /* For VP-group notifications, threads with LGS=3D0 are excluded */ =20 @@ -1277,6 +1305,12 @@ static void xive2_router_end_notify(Xive2Router *xrt= r, uint8_t end_blk, return; } =20 + if (xive2_end_is_crowd(&end) & !xive2_end_is_ignore(&end)) { + qemu_log_mask(LOG_GUEST_ERROR, + "XIVE: invalid END, 'crowd' bit requires 'ignore' bi= t\n"); + return; + } + if (xive2_end_is_enqueue(&end)) { xive2_end_enqueue(&end, end_data); /* Enqueuing event data modifies the EQ toggle and index */ @@ -1325,7 +1359,7 @@ static void xive2_router_end_notify(Xive2Router *xrtr= , uint8_t end_blk, nvp_idx =3D xive_get_field32(END2_W6_VP_OFFSET, end.w6); =20 found =3D xive_presenter_notify(xrtr->xfb, format, nvp_blk, nvp_idx, - xive2_end_is_ignore(&end), + xive2_end_is_crowd(&end), xive2_end_is_ignore(&e= nd), priority, xive_get_field32(END2_W7_F1_LOG_SERVER_ID, end.w= 7), &precluded); @@ -1377,17 +1411,24 @@ static void xive2_router_end_notify(Xive2Router *xr= tr, uint8_t end_blk, nvp.w2 =3D xive_set_field32(NVP2_W2_IPB, nvp.w2, ipb); xive2_router_write_nvp(xrtr, nvp_blk, nvp_idx, &nvp, 2); } else { - Xive2Nvgc nvg; + Xive2Nvgc nvgc; uint32_t backlog; + bool crowd; =20 - /* For groups, the per-priority backlog counters are in the NV= G */ - if (xive2_router_get_nvgc(xrtr, false, nvp_blk, nvp_idx, &nvg)= ) { - qemu_log_mask(LOG_GUEST_ERROR, "XIVE: no NVG %x/%x\n", - nvp_blk, nvp_idx); + crowd =3D xive2_end_is_crowd(&end); + + /* + * For groups and crowds, the per-priority backlog + * counters are stored in the NVG/NVC structures + */ + if (xive2_router_get_nvgc(xrtr, crowd, + nvp_blk, nvp_idx, &nvgc)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: no %s %x/%x\n", + crowd ? "NVC" : "NVG", nvp_blk, nvp_idx); return; } =20 - if (!xive2_nvgc_is_valid(&nvg)) { + if (!xive2_nvgc_is_valid(&nvgc)) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: NVG %x/%x is invalid= \n", nvp_blk, nvp_idx); return; @@ -1399,13 +1440,16 @@ static void xive2_router_end_notify(Xive2Router *xr= tr, uint8_t end_blk, * incremented. broadcast will set the LSMFB field of the TIMA= of * relevant threads so that they know an interrupt is pending. */ - backlog =3D xive2_nvgc_get_backlog(&nvg, priority) + 1; - xive2_nvgc_set_backlog(&nvg, priority, backlog); - xive2_router_write_nvgc(xrtr, false, nvp_blk, nvp_idx, &nvg); + backlog =3D xive2_nvgc_get_backlog(&nvgc, priority) + 1; + xive2_nvgc_set_backlog(&nvgc, priority, backlog); + xive2_router_write_nvgc(xrtr, crowd, nvp_blk, nvp_idx, &nvgc); =20 if (backlog =3D=3D 1) { XiveFabricClass *xfc =3D XIVE_FABRIC_GET_CLASS(xrtr->xfb); - xfc->broadcast(xrtr->xfb, nvp_blk, nvp_idx, priority); + xfc->broadcast(xrtr->xfb, nvp_blk, nvp_idx, + xive2_end_is_crowd(&end), + xive2_end_is_ignore(&end), + priority); =20 if (!xive2_end_is_precluded_escalation(&end)) { /* diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index af836c1388..d60574d601 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -2608,7 +2608,7 @@ static void pnv_pic_print_info(InterruptStatsProvider= *obj, GString *buf) =20 static int pnv_match_nvt(XiveFabric *xfb, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint8_t priority, + bool crowd, bool cam_ignore, uint8_t priority, uint32_t logic_serv, XiveTCTXMatch *match) { @@ -2622,8 +2622,8 @@ static int pnv_match_nvt(XiveFabric *xfb, uint8_t for= mat, XivePresenterClass *xpc =3D XIVE_PRESENTER_GET_CLASS(xptr); int count; =20 - count =3D xpc->match_nvt(xptr, format, nvt_blk, nvt_idx, cam_ignor= e, - priority, logic_serv, match); + count =3D xpc->match_nvt(xptr, format, nvt_blk, nvt_idx, crowd, + cam_ignore, priority, logic_serv, match); =20 if (count < 0) { return count; @@ -2637,7 +2637,7 @@ static int pnv_match_nvt(XiveFabric *xfb, uint8_t for= mat, =20 static int pnv10_xive_match_nvt(XiveFabric *xfb, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint8_t priority, + bool crowd, bool cam_ignore, uint8_t prior= ity, uint32_t logic_serv, XiveTCTXMatch *match) { @@ -2651,8 +2651,8 @@ static int pnv10_xive_match_nvt(XiveFabric *xfb, uint= 8_t format, XivePresenterClass *xpc =3D XIVE_PRESENTER_GET_CLASS(xptr); int count; =20 - count =3D xpc->match_nvt(xptr, format, nvt_blk, nvt_idx, cam_ignor= e, - priority, logic_serv, match); + count =3D xpc->match_nvt(xptr, format, nvt_blk, nvt_idx, crowd, + cam_ignore, priority, logic_serv, match); =20 if (count < 0) { return count; @@ -2666,6 +2666,7 @@ static int pnv10_xive_match_nvt(XiveFabric *xfb, uint= 8_t format, =20 static int pnv10_xive_broadcast(XiveFabric *xfb, uint8_t nvt_blk, uint32_t nvt_idx, + bool crowd, bool cam_ignore, uint8_t priority) { PnvMachineState *pnv =3D PNV_MACHINE(xfb); @@ -2676,7 +2677,7 @@ static int pnv10_xive_broadcast(XiveFabric *xfb, XivePresenter *xptr =3D XIVE_PRESENTER(&chip10->xive); XivePresenterClass *xpc =3D XIVE_PRESENTER_GET_CLASS(xptr); =20 - xpc->broadcast(xptr, nvt_blk, nvt_idx, priority); + xpc->broadcast(xptr, nvt_blk, nvt_idx, crowd, cam_ignore, priority= ); } return 0; } diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index c15340a58d..c7cf04e063 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -4,6 +4,9 @@ * Copyright (c) 2004-2007 Fabrice Bellard * Copyright (c) 2007 Jocelyn Mayer * Copyright (c) 2010 David Gibson, IBM Corporation. + * Copyright (c) 2010-2024, IBM Corporation.. + * + * SPDX-License-Identifier: GPL-2.0-or-later * * Permission is hereby granted, free of charge, to any person obtaining a= copy * of this software and associated documentation files (the "Software"), t= o deal @@ -4436,7 +4439,7 @@ static void spapr_pic_print_info(InterruptStatsProvid= er *obj, GString *buf) */ static int spapr_match_nvt(XiveFabric *xfb, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint8_t priority, + bool crowd, bool cam_ignore, uint8_t priority, uint32_t logic_serv, XiveTCTXMatch *match) { SpaprMachineState *spapr =3D SPAPR_MACHINE(xfb); @@ -4444,7 +4447,7 @@ static int spapr_match_nvt(XiveFabric *xfb, uint8_t f= ormat, XivePresenterClass *xpc =3D XIVE_PRESENTER_GET_CLASS(xptr); int count; =20 - count =3D xpc->match_nvt(xptr, format, nvt_blk, nvt_idx, cam_ignore, + count =3D xpc->match_nvt(xptr, format, nvt_blk, nvt_idx, crowd, cam_ig= nore, priority, logic_serv, match); if (count < 0) { return count; diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h index 6a410c6f1a..538f438681 100644 --- a/include/hw/ppc/xive.h +++ b/include/hw/ppc/xive.h @@ -438,13 +438,13 @@ struct XivePresenterClass { InterfaceClass parent; int (*match_nvt)(XivePresenter *xptr, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint8_t priority, + bool crowd, bool cam_ignore, uint8_t priority, uint32_t logic_serv, XiveTCTXMatch *match); bool (*in_kernel)(const XivePresenter *xptr); uint32_t (*get_config)(XivePresenter *xptr); int (*broadcast)(XivePresenter *xptr, uint8_t nvt_blk, uint32_t nvt_idx, - uint8_t priority); + bool crowd, bool cam_ignore, uint8_t priority); }; =20 int xive_presenter_tctx_match(XivePresenter *xptr, XiveTCTX *tctx, @@ -453,7 +453,7 @@ int xive_presenter_tctx_match(XivePresenter *xptr, Xive= TCTX *tctx, bool cam_ignore, uint32_t logic_serv); bool xive_presenter_notify(XiveFabric *xfb, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint8_t priority, + bool crowd, bool cam_ignore, uint8_t priority, uint32_t logic_serv, bool *precluded); =20 uint32_t xive_get_vpgroup_size(uint32_t nvp_index); @@ -473,10 +473,10 @@ struct XiveFabricClass { InterfaceClass parent; int (*match_nvt)(XiveFabric *xfb, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint8_t priority, + bool crowd, bool cam_ignore, uint8_t priority, uint32_t logic_serv, XiveTCTXMatch *match); int (*broadcast)(XiveFabric *xfb, uint8_t nvt_blk, uint32_t nvt_idx, - uint8_t priority); + bool crowd, bool cam_ignore, uint8_t priority); }; =20 /* diff --git a/include/hw/ppc/xive2.h b/include/hw/ppc/xive2.h index c07e23e1d3..8cdf819174 100644 --- a/include/hw/ppc/xive2.h +++ b/include/hw/ppc/xive2.h @@ -88,7 +88,8 @@ void xive2_router_notify(XiveNotifier *xn, uint32_t lisn,= bool pq_checked); int xive2_presenter_tctx_match(XivePresenter *xptr, XiveTCTX *tctx, uint8_t format, uint8_t nvt_blk, uint32_t nvt_idx, - bool cam_ignore, uint32_t logic_serv); + bool crowd, bool cam_ignore, + uint32_t logic_serv); =20 uint64_t xive2_presenter_nvp_backlog_op(XivePresenter *xptr, uint8_t blk, uint32_t idx, --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699563; cv=none; d=zohomail.com; s=zohoarc; b=ftoc+th1cH+d97v4l/qFeg8GJDGvm8bDJ9O5UdxlpdYj809sgCvDUdoS0RCRIernvQ3MZ/0WPEEL0HH3iL3aPi445fuf88mcwTDTLD1o5kWJO5O1QHZa5GvZdhVKDM5MvKZs75xqGNQKkmXbFfMZBuQ98kZILwFT9u54pf9jNjg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699563; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=s/XBvKPmghhbKFfzwm85aRAZZaLgzLWVK0EV9GNbOE4=; b=BRRVE82MLbAts0stKC4vTzU4TMbyT+DKUjGQGZrEiXKhnYtA/7WRv3Z6zObwsY0/GO8EecFKMzqdFskujQd4YphdQL6vQIKNgj+M6sdGx9XiSZ7tWrltpg6wQKDcdGTc4SUZIGQPnx/xXM3o89M/hPShs6uG575iey/fxfT9ZwI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699563592633.8984484774074; Tue, 11 Mar 2025 06:26:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzKG-000741-Dm; Tue, 11 Mar 2025 09:07:22 -0400 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 1trzDW-0004aS-H6; Tue, 11 Mar 2025 09:00:23 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDS-0008IS-9b; Tue, 11 Mar 2025 09:00:18 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-224341bbc1dso67975095ad.3; Tue, 11 Mar 2025 06:00:11 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698009; x=1742302809; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=s/XBvKPmghhbKFfzwm85aRAZZaLgzLWVK0EV9GNbOE4=; b=A4yTrPFCvwtbO/SEY6UeeeKqTYgJRD0oP3aNJIMWaXyhxJ94/5Rc2V/TA8LFzfpI9L gEeOgS+OnpbmaQ8LI76paYJs1aH7ogMvGjpKWWkKmjBVbEukuIGpjenjANAC5ixDc5CM xsdPFwyHDJWM0B97kyUPWDRsm1itnFZOLMLZJIbcEPfF/qGHm36ky3Wk/RIzX790TKuf auYvfwy4GAjoIIkj/oofI4MAnp4ntOnSbcaPKvYsK+BnwcX8kZaF/Y14u6TDCcsBpvKQ 41/nor1Wd4VhZjJ79kSuN1alEN6UZitydDgNUAPbCxcxRw+2NTh9SoYQx4hkMr9Z/edt 4PUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698009; x=1742302809; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=s/XBvKPmghhbKFfzwm85aRAZZaLgzLWVK0EV9GNbOE4=; b=HAkr3Xz9/Hg+FmNW+P5vRQ+8F1nyhZpM5xDkIPYvxLzvBkPffAzHsNH7To/HGu5aBX 08aXzcebvO460OrPeEVFpfEvrn60/oHw387S9xILb42N3emcWDUNQOxfxUe10Lx6PiCV VqKKXZucjWxaIFlRlod8krqfNTHQxeCa/wpU861v93OyMU6cdOLHv/MvEO3q7KUeUcw4 xGaqIoj1LrPkiSfeSMkuM0c5KJybgkRpAKEk3QLfU48rHQvo0PKhFMQPGhPxHz2ns3Gg Ov0biT+hsvZZ3n62vdj+TORhiEhLwcJbsARW65nqMxEObrvON/FpZxWm5mWBFpFfKiuH 8isg== X-Forwarded-Encrypted: i=1; AJvYcCWhRU4PHEWFynbcTilie8T/+BK95hYccZNR9Mc8YgilhLt/L8phirT6sgnSX82xbgz4jqVMoOJ9HA==@nongnu.org X-Gm-Message-State: AOJu0YzekYfY+WwnbhfAZWVY2wch9D1ZGMhMll3k5TJe8U0md2CP4RE9 bQj4PWVIL045vLDXVBI/EBbxnPd8tfTDl+u5gxabVOpAqOMdsxGVwkqa9g== X-Gm-Gg: ASbGncubJFjaHH3BDfu/pdgtM25sB7VhwpaeU4kIVNxLRaM69uo3li5Kcc0kVwdayes nnPSWDoV9Aa7WrAQc81hvpmhhvmYJnzSYFEpWR4yoWFTH0wLZiKxvrIFiXW4R9VDahl8TcMd6ZM aO85yS8GDoUqAjJvM01HeXzHDagT5LFJ16pqAx5K9Jq9a07GAGQVNHFM/JTM2XVySM5fxdxR0Pw RfftX3PiptKYDc0M6yuSRRJMhSs1kuxso89CwtT5l4eDBRdFUctwRaMdQHFy11yNBTpWB8dG25m SiX9neP6IQ4ANYMD377rmOLyZIZj7ODXI2z0Sy3o2po9jIVDXXM= X-Google-Smtp-Source: AGHT+IF1qSFvQdY4aQMYNsKVRb3BvJiV+sYcoOGgGY4PNlhMGzMIka3DoYXRPPzXncEghUctBhYk2A== X-Received: by 2002:a17:902:c949:b0:224:78e:4ebe with SMTP id d9443c01a7336-22593183ec4mr45122475ad.33.1741698009287; Tue, 11 Mar 2025 06:00:09 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Glenn Miles , Glenn Miles Subject: [PULL 33/72] pnv/xive2: Rename nvp_ to nvx_ if they can refer to NVP or NVGC Date: Tue, 11 Mar 2025 22:57:27 +1000 Message-ID: <20250311125815.903177-34-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699564426019000 Content-Type: text/plain; charset="utf-8" From: Glenn Miles The blk/index in some paths may refer to an NVP or an NVGC. When it is not known ahead of time, use the nvx_ prefix to prevent confusion. [npiggin: split out of larger fix patch and reworded] Signed-off-by: Glenn Miles Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- hw/intc/xive2.c | 56 ++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index 5fa8e1b3fb..e925307d0f 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -226,8 +226,8 @@ void xive2_end_pic_print_info(Xive2End *end, uint32_t e= nd_idx, GString *buf) uint32_t qsize =3D xive_get_field32(END2_W3_QSIZE, end->w3); uint32_t qentries =3D 1 << (qsize + 10); =20 - uint32_t nvp_blk =3D xive_get_field32(END2_W6_VP_BLOCK, end->w6); - uint32_t nvp_idx =3D xive_get_field32(END2_W6_VP_OFFSET, end->w6); + uint32_t nvx_blk =3D xive_get_field32(END2_W6_VP_BLOCK, end->w6); + uint32_t nvx_idx =3D xive_get_field32(END2_W6_VP_OFFSET, end->w6); uint8_t priority =3D xive_get_field32(END2_W7_F0_PRIORITY, end->w7); uint8_t pq; =20 @@ -256,7 +256,7 @@ void xive2_end_pic_print_info(Xive2End *end, uint32_t e= nd_idx, GString *buf) xive2_end_is_firmware2(end) ? 'F' : '-', xive2_end_is_ignore(end) ? 'i' : '-', xive2_end_is_crowd(end) ? 'c' : '-', - priority, nvp_blk, nvp_idx); + priority, nvx_blk, nvx_idx); =20 if (qaddr_base) { g_string_append_printf(buf, " eq:@%08"PRIx64"% 6d/%5d ^%d", @@ -372,7 +372,7 @@ static void xive2_end_enqueue(Xive2End *end, uint32_t d= ata) * level of pending group interrupts. */ static uint8_t xive2_presenter_backlog_scan(XivePresenter *xptr, - uint8_t nvp_blk, uint32_t nvp_= idx, + uint8_t nvx_blk, uint32_t nvx_= idx, uint8_t first_group, uint8_t *out_level) { @@ -387,19 +387,19 @@ static uint8_t xive2_presenter_backlog_scan(XivePrese= nter *xptr, =20 while (current_level) { mask =3D (1 << current_level) - 1; - nvgc_idx =3D nvp_idx & ~mask; + nvgc_idx =3D nvx_idx & ~mask; nvgc_idx |=3D mask >> 1; qemu_log("fxb %s checking backlog for prio %d group idx %x\n", __func__, prio, nvgc_idx); =20 - if (xive2_router_get_nvgc(xrtr, false, nvp_blk, nvgc_idx, &nvg= c)) { + if (xive2_router_get_nvgc(xrtr, false, nvx_blk, nvgc_idx, &nvg= c)) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: No NVG %x/%x\n", - nvp_blk, nvgc_idx); + nvx_blk, nvgc_idx); return 0xFF; } if (!xive2_nvgc_is_valid(&nvgc)) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: Invalid NVG %x/%x\n", - nvp_blk, nvgc_idx); + nvx_blk, nvgc_idx); return 0xFF; } =20 @@ -415,7 +415,7 @@ static uint8_t xive2_presenter_backlog_scan(XivePresent= er *xptr, } =20 static void xive2_presenter_backlog_decr(XivePresenter *xptr, - uint8_t nvp_blk, uint32_t nvp_idx, + uint8_t nvx_blk, uint32_t nvx_idx, uint8_t group_prio, uint8_t group_level) { @@ -425,17 +425,17 @@ static void xive2_presenter_backlog_decr(XivePresente= r *xptr, =20 group_level &=3D 0xF; mask =3D (1 << group_level) - 1; - nvgc_idx =3D nvp_idx & ~mask; + nvgc_idx =3D nvx_idx & ~mask; nvgc_idx |=3D mask >> 1; =20 - if (xive2_router_get_nvgc(xrtr, false, nvp_blk, nvgc_idx, &nvgc)) { + if (xive2_router_get_nvgc(xrtr, false, nvx_blk, nvgc_idx, &nvgc)) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: No NVG %x/%x\n", - nvp_blk, nvgc_idx); + nvx_blk, nvgc_idx); return; } if (!xive2_nvgc_is_valid(&nvgc)) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: Invalid NVG %x/%x\n", - nvp_blk, nvgc_idx); + nvx_blk, nvgc_idx); return; } count =3D xive2_nvgc_get_backlog(&nvgc, group_prio); @@ -443,7 +443,7 @@ static void xive2_presenter_backlog_decr(XivePresenter = *xptr, return; } xive2_nvgc_set_backlog(&nvgc, group_prio, count - 1); - xive2_router_write_nvgc(xrtr, false, nvp_blk, nvgc_idx, &nvgc); + xive2_router_write_nvgc(xrtr, false, nvx_blk, nvgc_idx, &nvgc); } =20 /* @@ -1289,8 +1289,8 @@ static void xive2_router_end_notify(Xive2Router *xrtr= , uint8_t end_blk, uint8_t priority; uint8_t format; bool found, precluded; - uint8_t nvp_blk; - uint32_t nvp_idx; + uint8_t nvx_blk; + uint32_t nvx_idx; =20 /* END cache lookup */ if (xive2_router_get_end(xrtr, end_blk, end_idx, &end)) { @@ -1355,10 +1355,10 @@ static void xive2_router_end_notify(Xive2Router *xr= tr, uint8_t end_blk, /* * Follows IVPE notification */ - nvp_blk =3D xive_get_field32(END2_W6_VP_BLOCK, end.w6); - nvp_idx =3D xive_get_field32(END2_W6_VP_OFFSET, end.w6); + nvx_blk =3D xive_get_field32(END2_W6_VP_BLOCK, end.w6); + nvx_idx =3D xive_get_field32(END2_W6_VP_OFFSET, end.w6); =20 - found =3D xive_presenter_notify(xrtr->xfb, format, nvp_blk, nvp_idx, + found =3D xive_presenter_notify(xrtr->xfb, format, nvx_blk, nvx_idx, xive2_end_is_crowd(&end), xive2_end_is_ignore(&e= nd), priority, xive_get_field32(END2_W7_F1_LOG_SERVER_ID, end.w= 7), @@ -1389,15 +1389,15 @@ static void xive2_router_end_notify(Xive2Router *xr= tr, uint8_t end_blk, Xive2Nvp nvp; =20 /* NVP cache lookup */ - if (xive2_router_get_nvp(xrtr, nvp_blk, nvp_idx, &nvp)) { + if (xive2_router_get_nvp(xrtr, nvx_blk, nvx_idx, &nvp)) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: no NVP %x/%x\n", - nvp_blk, nvp_idx); + nvx_blk, nvx_idx); return; } =20 if (!xive2_nvp_is_valid(&nvp)) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: NVP %x/%x is invalid= \n", - nvp_blk, nvp_idx); + nvx_blk, nvx_idx); return; } =20 @@ -1409,7 +1409,7 @@ static void xive2_router_end_notify(Xive2Router *xrtr= , uint8_t end_blk, ipb =3D xive_get_field32(NVP2_W2_IPB, nvp.w2) | xive_priority_to_ipb(priority); nvp.w2 =3D xive_set_field32(NVP2_W2_IPB, nvp.w2, ipb); - xive2_router_write_nvp(xrtr, nvp_blk, nvp_idx, &nvp, 2); + xive2_router_write_nvp(xrtr, nvx_blk, nvx_idx, &nvp, 2); } else { Xive2Nvgc nvgc; uint32_t backlog; @@ -1422,15 +1422,15 @@ static void xive2_router_end_notify(Xive2Router *xr= tr, uint8_t end_blk, * counters are stored in the NVG/NVC structures */ if (xive2_router_get_nvgc(xrtr, crowd, - nvp_blk, nvp_idx, &nvgc)) { + nvx_blk, nvx_idx, &nvgc)) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: no %s %x/%x\n", - crowd ? "NVC" : "NVG", nvp_blk, nvp_idx); + crowd ? "NVC" : "NVG", nvx_blk, nvx_idx); return; } =20 if (!xive2_nvgc_is_valid(&nvgc)) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: NVG %x/%x is invalid= \n", - nvp_blk, nvp_idx); + nvx_blk, nvx_idx); return; } =20 @@ -1442,11 +1442,11 @@ static void xive2_router_end_notify(Xive2Router *xr= tr, uint8_t end_blk, */ backlog =3D xive2_nvgc_get_backlog(&nvgc, priority) + 1; xive2_nvgc_set_backlog(&nvgc, priority, backlog); - xive2_router_write_nvgc(xrtr, crowd, nvp_blk, nvp_idx, &nvgc); + xive2_router_write_nvgc(xrtr, crowd, nvx_blk, nvx_idx, &nvgc); =20 if (backlog =3D=3D 1) { XiveFabricClass *xfc =3D XIVE_FABRIC_GET_CLASS(xrtr->xfb); - xfc->broadcast(xrtr->xfb, nvp_blk, nvp_idx, + xfc->broadcast(xrtr->xfb, nvx_blk, nvx_idx, xive2_end_is_crowd(&end), xive2_end_is_ignore(&end), priority); --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700914; cv=none; d=zohomail.com; s=zohoarc; b=JNxKeX7RsebXvy/dSmYS8hIypIMFHfBCGTJqIvqHAbqRFAiYmBBMaqtegoBIqoWz/h7kJQWyc+G3x2NyTDJkmk3rnZwp+Qd1Gi0hskbUI7nP2oW3BqjzkLcA3v5inC3h4gryHmPrYcou3XV+6WdedSGXnQWiYWb7qcw6rdc84lU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700914; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WONqQrZcwlp8hZGRfUQfRRo9qkCGxQct+x79CzVQ1Sk=; b=Z3EKIm+AvJQBD8+3dJ4/E8P9+SdsEAUmxoJT27Tp3kLK4Jbq8mRnjNmVJzsDkJ6Z6k7Auwu3sixinh8+zvlfEgU78GvpuAZuThDK5LXimE8GmBKq6YF1Sxl/RRKY3uvwmzT+arz6kinz7OEp3RmZ4dTSJUgZdmkFYDk0d0ul8b4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741700914505602.8862652421438; Tue, 11 Mar 2025 06:48:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzF5-00066f-GR; Tue, 11 Mar 2025 09:02:00 -0400 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 1trzDc-0004i3-Hl; Tue, 11 Mar 2025 09:00:25 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDW-0008JI-5r; Tue, 11 Mar 2025 09:00:21 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-2fee4d9c2efso9001913a91.3; Tue, 11 Mar 2025 06:00:13 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698012; x=1742302812; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WONqQrZcwlp8hZGRfUQfRRo9qkCGxQct+x79CzVQ1Sk=; b=ZIV41OYTk5AJo+39WPqgjZBze6c4C9cd9fX09Uw0hlMSmT9s7wozivaWfYThsbMznJ aplUh0bRA7cCckjDRt+qyFAvva8fJ18m8b+uMFFiF32z5Ma/eVx0eFwLgnLNlfshq9tt Ux8Ql+qwvUmMIQyzQ5+CFOvJ8rdgobRu0P5BbBE5SI9XNRjldSFVeV8/XgU0uff1Yvp+ kK+vWoxvBqoKSWS8sU3HfoxpeUcP82eG/iL1MdiYF1Jxexk0OO4BlBRj95NgFvaZJPip J5hl6AAo+nsO3XBHAej/GywqXk/IDxZW6kZQ7SpYGOAbvBAfAKiDTstj3TSkb5rJmMRM I5Rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698012; x=1742302812; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WONqQrZcwlp8hZGRfUQfRRo9qkCGxQct+x79CzVQ1Sk=; b=P69hScfqykVy3sklPYLvUvQqTLW879uSfPAmAY3Qb4gLbkA7jQCdOt0fNg5U3WEO6v 0DewdvIEcySzeJdsvGJUUcjGXUZ77DBuOCMQgKw9HIX9yV+PRr34A2ywaXvtaS8AfUPO SL7imw368FjX0agzlVoBoqalgNYuE0BuMrbQtQM043zlcyOrJN0o8c04BGHujvsj1czA tiXIOAOnW0YuRe4U3aOlXPtRkTIZ7uuMdJ4/GzVHvqsEU6fxqG5cZSRqiH/51VLPOEt2 V1+5S3vL2nveRV5vFeZbtXwRyGNulo8ZCZ8QU4b1cCcncnKvEGXDjmU4QvyKRpnbct/F 6XGg== X-Forwarded-Encrypted: i=1; AJvYcCWIXT2OJImLPh+6dxunVgrrw0FJG7d2XXeDwF5VS2jBNBLLBX+zI0Q5185s97qJ0Vzhf3GCC3szMw==@nongnu.org X-Gm-Message-State: AOJu0Yyz9EttYr8AfMqlR8hOalmgajBh/i0y40+EXdE9br/UOh74xokm BnP605tcm1+yescWWsNV+DcdfeE5F53C6axDIsxkoRHbmu3STqEYbJmi9g== X-Gm-Gg: ASbGncsKdueB2YZ4+XhQu4Q+5prJvZWVp1XgGxbpHp65df8GQisJnNoTXgglc9lTpq2 XInjNIxdBNTcH7qd/jys/NXIF6YubZmlP/sKVb4soTgPv72E/eTjF0JIUMQuqKfZHYFQ9mKhd7Y 9Z3wUZDoWZTnBARkqlsSIbnfKGRPUXHiwzGwSbfa2y+ZromQWyNKJydxPKa3/eEY4sLAaWaW767 v8T8KWX+gRfVrF6D2GhfHOuh43Rccd6FN8BUi/yPne1vaaDgXbaJarVwR7+fv0OJO7ZTlHT78wq vuPI9EGbPpci4q2JlyojLlFQZrsH8vxerfFzyniZ0ZFTL+EjAZQ= X-Google-Smtp-Source: AGHT+IEgV0fqBE6Z9BPqEchYJbCJvBp74KhJbKiEch9XoY6eS3Igccqlk+FjtY1eWACnQZKNFNeYvg== X-Received: by 2002:a17:90b:52c3:b0:2fe:9581:fbea with SMTP id 98e67ed59e1d1-2ff7cf22de4mr26426610a91.29.1741698012303; Tue, 11 Mar 2025 06:00:12 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Frederic Barrat , Michael Kowal Subject: [PULL 34/72] ppc/xive2: Check crowd backlog when scanning group backlog Date: Tue, 11 Mar 2025 22:57:28 +1000 Message-ID: <20250311125815.903177-35-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700916711019000 Content-Type: text/plain; charset="utf-8" From: Frederic Barrat When processing a backlog scan for group interrupts, also take into account crowd interrupts. Signed-off-by: Frederic Barrat Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- hw/intc/xive2.c | 82 +++++++++++++++++++++++++------------ include/hw/ppc/xive2_regs.h | 4 ++ 2 files changed, 60 insertions(+), 26 deletions(-) diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index e925307d0f..f8ef615487 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -367,6 +367,35 @@ static void xive2_end_enqueue(Xive2End *end, uint32_t = data) end->w1 =3D xive_set_field32(END2_W1_PAGE_OFF, end->w1, qindex); } =20 +static void xive2_pgofnext(uint8_t *nvgc_blk, uint32_t *nvgc_idx, + uint8_t next_level) +{ + uint32_t mask, next_idx; + uint8_t next_blk; + + /* + * Adjust the block and index of a VP for the next group/crowd + * size (PGofFirst/PGofNext field in the NVP and NVGC structures). + * + * The 6-bit group level is split into a 2-bit crowd and 4-bit + * group levels. Encoding is similar. However, we don't support + * crowd size of 8. So a crowd level of 0b11 is bumped to a crowd + * size of 16. + */ + next_blk =3D NVx_CROWD_LVL(next_level); + if (next_blk =3D=3D 3) { + next_blk =3D 4; + } + mask =3D (1 << next_blk) - 1; + *nvgc_blk &=3D ~mask; + *nvgc_blk |=3D mask >> 1; + + next_idx =3D NVx_GROUP_LVL(next_level); + mask =3D (1 << next_idx) - 1; + *nvgc_idx &=3D ~mask; + *nvgc_idx |=3D mask >> 1; +} + /* * Scan the group chain and return the highest priority and group * level of pending group interrupts. @@ -377,29 +406,28 @@ static uint8_t xive2_presenter_backlog_scan(XivePrese= nter *xptr, uint8_t *out_level) { Xive2Router *xrtr =3D XIVE2_ROUTER(xptr); - uint32_t nvgc_idx, mask; + uint32_t nvgc_idx; uint32_t current_level, count; - uint8_t prio; + uint8_t nvgc_blk, prio; Xive2Nvgc nvgc; =20 for (prio =3D 0; prio <=3D XIVE_PRIORITY_MAX; prio++) { - current_level =3D first_group & 0xF; + current_level =3D first_group & 0x3F; + nvgc_blk =3D nvx_blk; + nvgc_idx =3D nvx_idx; =20 while (current_level) { - mask =3D (1 << current_level) - 1; - nvgc_idx =3D nvx_idx & ~mask; - nvgc_idx |=3D mask >> 1; - qemu_log("fxb %s checking backlog for prio %d group idx %x\n", - __func__, prio, nvgc_idx); - - if (xive2_router_get_nvgc(xrtr, false, nvx_blk, nvgc_idx, &nvg= c)) { - qemu_log_mask(LOG_GUEST_ERROR, "XIVE: No NVG %x/%x\n", - nvx_blk, nvgc_idx); + xive2_pgofnext(&nvgc_blk, &nvgc_idx, current_level); + + if (xive2_router_get_nvgc(xrtr, NVx_CROWD_LVL(current_level), + nvgc_blk, nvgc_idx, &nvgc)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: No NVGC %x/%x\n", + nvgc_blk, nvgc_idx); return 0xFF; } if (!xive2_nvgc_is_valid(&nvgc)) { - qemu_log_mask(LOG_GUEST_ERROR, "XIVE: Invalid NVG %x/%x\n", - nvx_blk, nvgc_idx); + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: Invalid NVGC %x/%x\n= ", + nvgc_blk, nvgc_idx); return 0xFF; } =20 @@ -408,7 +436,7 @@ static uint8_t xive2_presenter_backlog_scan(XivePresent= er *xptr, *out_level =3D current_level; return prio; } - current_level =3D xive_get_field32(NVGC2_W0_PGONEXT, nvgc.w0) = & 0xF; + current_level =3D xive_get_field32(NVGC2_W0_PGONEXT, nvgc.w0) = & 0x3F; } } return 0xFF; @@ -420,22 +448,23 @@ static void xive2_presenter_backlog_decr(XivePresente= r *xptr, uint8_t group_level) { Xive2Router *xrtr =3D XIVE2_ROUTER(xptr); - uint32_t nvgc_idx, mask, count; + uint32_t nvgc_idx, count; + uint8_t nvgc_blk; Xive2Nvgc nvgc; =20 - group_level &=3D 0xF; - mask =3D (1 << group_level) - 1; - nvgc_idx =3D nvx_idx & ~mask; - nvgc_idx |=3D mask >> 1; + nvgc_blk =3D nvx_blk; + nvgc_idx =3D nvx_idx; + xive2_pgofnext(&nvgc_blk, &nvgc_idx, group_level); =20 - if (xive2_router_get_nvgc(xrtr, false, nvx_blk, nvgc_idx, &nvgc)) { - qemu_log_mask(LOG_GUEST_ERROR, "XIVE: No NVG %x/%x\n", - nvx_blk, nvgc_idx); + if (xive2_router_get_nvgc(xrtr, NVx_CROWD_LVL(group_level), + nvgc_blk, nvgc_idx, &nvgc)) { + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: No NVGC %x/%x\n", + nvgc_blk, nvgc_idx); return; } if (!xive2_nvgc_is_valid(&nvgc)) { - qemu_log_mask(LOG_GUEST_ERROR, "XIVE: Invalid NVG %x/%x\n", - nvx_blk, nvgc_idx); + qemu_log_mask(LOG_GUEST_ERROR, "XIVE: Invalid NVGC %x/%x\n", + nvgc_blk, nvgc_idx); return; } count =3D xive2_nvgc_get_backlog(&nvgc, group_prio); @@ -443,7 +472,8 @@ static void xive2_presenter_backlog_decr(XivePresenter = *xptr, return; } xive2_nvgc_set_backlog(&nvgc, group_prio, count - 1); - xive2_router_write_nvgc(xrtr, false, nvx_blk, nvgc_idx, &nvgc); + xive2_router_write_nvgc(xrtr, NVx_CROWD_LVL(group_level), + nvgc_blk, nvgc_idx, &nvgc); } =20 /* diff --git a/include/hw/ppc/xive2_regs.h b/include/hw/ppc/xive2_regs.h index 9bcf7a8a6f..b11395c563 100644 --- a/include/hw/ppc/xive2_regs.h +++ b/include/hw/ppc/xive2_regs.h @@ -236,4 +236,8 @@ void xive2_nvgc_pic_print_info(Xive2Nvgc *nvgc, uint32_= t nvgc_idx, #define NVx_BACKLOG_OP PPC_BITMASK(52, 53) #define NVx_BACKLOG_PRIO PPC_BITMASK(57, 59) =20 +/* split the 6-bit crowd/group level */ +#define NVx_CROWD_LVL(level) ((level >> 4) & 0b11) +#define NVx_GROUP_LVL(level) (level & 0b1111) + #endif /* PPC_XIVE2_REGS_H */ --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700758; cv=none; d=zohomail.com; s=zohoarc; b=Sf1TuN1S57RVErT5PhoXxZ/Ontrf1IIF3Ivrz6NxQwCKQrbZvPlnkTONn96F/SKh8/mLekK2FNhMbmbOABt6HX6dR/HpvnVl9U3yIwdjnpTX0EKwXPg8vewb7q2MvakBdk2JEVNY3F2h/Q03eghiygl+dPxfQc5FMeC2Ny1qNiY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700758; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3NFBpDCgw8d0BEXG761d1mgdF1JZURhwF8ApqY/UDtY=; b=RKqS/8EY2Su61XK6wN1pr4cnZ17SxqrJPDq93tPTQKPdigNzWU8AT2qo7NWFP2PMNHSl4PLKCmTakdQZ+UVb06gF1UCgyz06sa/qBswtggW+o3UUvasey8ka8rqGVh37F3nxQ10fqnh6OCsuVrSuFLjCkALA/2Y0GZEMKW7SBKQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741700758083843.6484744042663; Tue, 11 Mar 2025 06:45:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJ0-0003Rl-2y; Tue, 11 Mar 2025 09:05:58 -0400 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 1trzDi-0004sr-5x; Tue, 11 Mar 2025 09:00:42 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDc-0008Lt-JW; Tue, 11 Mar 2025 09:00:29 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-2ff6cf448b8so10792609a91.3; Tue, 11 Mar 2025 06:00:17 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698016; x=1742302816; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3NFBpDCgw8d0BEXG761d1mgdF1JZURhwF8ApqY/UDtY=; b=PGc90jcxSmvqXURPRKwYdAgyLdM+WmjwRvILUPHG3UwzCH7dw/z+k+F8aZsnKN7tIA dNKtQV1Hkpm0LLlfjFSievC7lOfzThmq9Rt8elpwjnF0aiGipwSE/FRmwveYz7SN3Qgv hnNKcpU5yzfgbXDWO4DS33ztXkVfjfD9POmAOQ4dmtTTclw2FayfEHA1keWE+7V5Mtcq rt5KzJg3KP5I/4FJb/ygmL8/ZJkVx1KjCNdK0r1oR/ecP20BCCxRFJk4jiCxoztAls04 lY14HPsvpPJOSi+JkVm0xnQb/rLP0cMgPF8eM+Y4fIwUBA94zv0F9MaAkHMqXlqe9d75 9AJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698016; x=1742302816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3NFBpDCgw8d0BEXG761d1mgdF1JZURhwF8ApqY/UDtY=; b=ddPNVrfO4UPp8HltRS7xVFVzHI18FGVOE4jgqsXGo7a+3R4tBtA2OexxJPfiW7f7Rm pWXj9i2sQ8Uscb0kEE/38gOjr81RqmYBHY0qJaIuJUozq48ZVe1iKrSPlkYFBBLcYTb/ IfgxH01lzfgGt4ftf1vEpPsnyAtss86Ov2rWnS21u3bQs3CPbb0fh4gaOMyJjJRrXXAX XSiREtFr1m/nc1mqIU70Z3TUj7BMMjFQiFnAIHiqXjVlFUJKYw9VfoL4Hw6KoFVSl810 mS0n8qTD/CBDNBfLj1XtGHnwqD+kJfWfC9S2v7V+xdRCu2DqHGGnXrVsrEhWNEKNpaHx SvRQ== X-Forwarded-Encrypted: i=1; AJvYcCVUfzyHkhQQPSpmfxZ2KDKI2l47DUMI8IdAM5LvWb4TmRjuNSE4ePXPARaQERDsHe9THoup3lBlqg==@nongnu.org X-Gm-Message-State: AOJu0YwABmbfYbFUcgho14LnjiQQiMUqroxXl+Ok10gGP32jksE5MxUZ x4cvUhTsSTRRXHQShX8EWD8/js0afcO7XnCOGit3R0EvVEAooXPJDiP/vQ== X-Gm-Gg: ASbGncvdsuJX1orqFL0Dm14hz7+Yg2KPGHpcM5sbB+QtXYHeCBDAyWXQxRwMCBP7mcz XQ1WsGMI0PO/WMSWARVn2QYcrQNlMUndhsaHrCRHbv6OZ7VI7Sog1c/4uzZuvKWgNA2trAM7FBM 89jDvaAq4+cPbSUB9h3KYPhup4UmE7HnkZV+4OBI/moRP4lM1e+i/G7c9IbU7eHz3n45cZ+TZY/ a5lucpcIzJHprd68oQ1IdDbh4mlAS/WukqlUDRH00puDUKhwfsWR25cGtxFXoPO5H60IupqStEJ PwTBp7Y3nN8p7/oNYP0jSWWSDUJ3jG2qPIGv5jFhIavm/j0mye0= X-Google-Smtp-Source: AGHT+IF43HxN2P31K8G+t/cSb3/L+nf1oz6ZZpz33m3yXYQtvJY/YH4lsoJRQnrudacpP+fLG3ehKw== X-Received: by 2002:a17:90b:1d0a:b0:2fe:a614:5cf7 with SMTP id 98e67ed59e1d1-2ff7ce7b451mr24523889a91.3.1741698015593; Tue, 11 Mar 2025 06:00:15 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Glenn Miles , Glenn Miles , Michael Kowal Subject: [PULL 35/72] qtest/xive: Change printf to g_test_message Date: Tue, 11 Mar 2025 22:57:29 +1000 Message-ID: <20250311125815.903177-36-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700759832019000 Content-Type: text/plain; charset="utf-8" From: Glenn Miles Change all printf() in pnv-xive2-* qtests to g_test_message() [npiggin: split from pool qtest] Signed-off-by: Glenn Miles Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- tests/qtest/pnv-xive2-flush-sync.c | 6 +++--- tests/qtest/pnv-xive2-nvpg_bar.c | 7 +++---- tests/qtest/pnv-xive2-test.c | 22 ++++++++++++---------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/tests/qtest/pnv-xive2-flush-sync.c b/tests/qtest/pnv-xive2-flu= sh-sync.c index 3b32446adb..142826bad0 100644 --- a/tests/qtest/pnv-xive2-flush-sync.c +++ b/tests/qtest/pnv-xive2-flush-sync.c @@ -178,14 +178,14 @@ void test_flush_sync_inject(QTestState *qts) int test_nr; uint8_t byte; =20 - printf("# =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); - printf("# Starting cache flush/queue sync injection tests...\n"); + g_test_message("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D"); + g_test_message("Starting cache flush/queue sync injection tests..."); =20 for (test_nr =3D 0; test_nr < sizeof(xive_inject_tests); test_nr++) { int op_type =3D xive_inject_tests[test_nr]; =20 - printf("# Running test %d\n", test_nr); + g_test_message("Running test %d", test_nr); =20 /* start with status byte set to 0 */ clr_sync(qts, src_pir, ic_topo_id, op_type); diff --git a/tests/qtest/pnv-xive2-nvpg_bar.c b/tests/qtest/pnv-xive2-nvpg_= bar.c index 028512bddc..6ac8d36c82 100644 --- a/tests/qtest/pnv-xive2-nvpg_bar.c +++ b/tests/qtest/pnv-xive2-nvpg_bar.c @@ -4,8 +4,7 @@ * * Copyright (c) 2024, IBM Corporation. * - * This work is licensed under the terms of the GNU GPL, version 2 or - * later. See the COPYING file in the top-level directory. + * SPDX-License-Identifier: GPL-2.0-or-later */ #include "qemu/osdep.h" #include "libqtest.h" @@ -78,8 +77,8 @@ void test_nvpg_bar(QTestState *qts) uint32_t count, delta; uint8_t i; =20 - printf("# =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); - printf("# Testing NVPG BAR operations\n"); + g_test_message("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D"); + g_test_message("Testing NVPG BAR operations"); =20 set_nvg(qts, group_target, 0); set_nvp(qts, nvp_target, 0x04); diff --git a/tests/qtest/pnv-xive2-test.c b/tests/qtest/pnv-xive2-test.c index a0e9f19313..7e7b1e79c0 100644 --- a/tests/qtest/pnv-xive2-test.c +++ b/tests/qtest/pnv-xive2-test.c @@ -4,6 +4,7 @@ * - Test 'Pull Thread Context to Odd Thread Reporting Line' * - Test irq to hardware group * - Test irq to hardware group going through backlog + * - Test irq to pool thread * * Copyright (c) 2024, IBM Corporation. * @@ -220,8 +221,8 @@ static void test_hw_irq(QTestState *qts) uint16_t reg16; uint8_t pq, nsr, cppr; =20 - printf("# =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); - printf("# Testing irq %d to hardware thread %d\n", irq, target_pir); + g_test_message("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D"); + g_test_message("Testing irq %d to hardware thread %d", irq, target_pir= ); =20 /* irq config */ set_eas(qts, irq, end_index, irq_data); @@ -278,8 +279,9 @@ static void test_pull_thread_ctx_to_odd_thread_cl(QTest= State *qts) uint32_t cl_word; uint32_t word2; =20 - printf("# =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); - printf("# Testing 'Pull Thread Context to Odd Thread Reporting Line'\n= "); + g_test_message("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D"); + g_test_message("Testing 'Pull Thread Context to Odd Thread Reporting "= \ + "Line'"); =20 /* clear odd cache line prior to pull operation */ memset(cl_pair, 0, sizeof(cl_pair)); @@ -330,8 +332,8 @@ static void test_hw_group_irq(QTestState *qts) uint16_t reg16; uint8_t pq, nsr, cppr; =20 - printf("# =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); - printf("# Testing irq %d to hardware group of size 4\n", irq); + g_test_message("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D"); + g_test_message("Testing irq %d to hardware group of size 4", irq); =20 /* irq config */ set_eas(qts, irq, end_index, irq_data); @@ -395,10 +397,10 @@ static void test_hw_group_irq_backlog(QTestState *qts) uint16_t reg16; uint8_t pq, nsr, cppr, lsmfb, i; =20 - printf("# =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); - printf("# Testing irq %d to hardware group of size 4 going through " \ - "backlog\n", - irq); + g_test_message("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D"); + g_test_message("Testing irq %d to hardware group of size 4 going " \ + "through backlog", + irq); =20 /* * set current priority of all threads in the group to something --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699384; cv=none; d=zohomail.com; s=zohoarc; b=lymtBvWULIRh6UFiDtGHNPaeZNkpijF3qZkXWwgAGs2OMaf205BcZdxXReGOg2l/fune9GvXmKGk0ieJO7LtT9LPxmMEXMpmgOBE0vZVUNom/+PDMJ9mp3Wa0B+9kIpTH7su6gV1c5f7JfmmTZpK2OUek7uOdyAX+gcCwWN2DCM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699384; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bW/i37H/kqxxMLYWVFi5dKIqqFLw8+mO4T5YC2Hj02M=; b=aetnu541MAe8vD1I4jI3emxgJUehCHGxPgr4jq4x4WQF/sqHD5MYTpYdXbFU0BC1sD8RQ48LIJpAGXDyY2WdAr6KmaOidow1ZFtx2Am9bv2vZy30aM6wHDO7fn19STWka9RO8K7xls5X4fATJsnho+vcNXSIB3Ay3dAXzDu/im0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699384902943.0053018010645; Tue, 11 Mar 2025 06:23:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzFb-00073e-3R; Tue, 11 Mar 2025 09:02:27 -0400 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 1trzDi-0004su-Ka; Tue, 11 Mar 2025 09:00:42 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDd-0008Ne-UU; Tue, 11 Mar 2025 09:00:30 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-2ff615a114bso9410930a91.0; Tue, 11 Mar 2025 06:00:20 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698019; x=1742302819; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bW/i37H/kqxxMLYWVFi5dKIqqFLw8+mO4T5YC2Hj02M=; b=jtjUL4Yd9Ncb3H4IGqQnecw3gAh45sv4Bg9B4V1S7Pp/llsv8bnn7MUCLWcSV5cV+m zRa8Yvp176Z+seKf7UCDQUaaGLZuPFWLoM2qyvhO+UBqehf/Fz/kkdzwDJky5vspHBvV VYpl+xWUvHjfJPhWOqWaBKMpbfp8mNUl5Q3xCMOOKSxZSRmnP04rpBbdOZfJjPu9jpO3 +pqBZAriXYqqIzEeJuRY0wrtU9B28q+Ha/xj+eMrkeKTOYoUbpbK/HGtpVIvCeOn3DQG zzfsyVjnQzLBYvraoKdRi7dMbfIwg0iHP1DBlLxiFUSobEibmaNXyqg+yBa4vcyzV2Zs xiLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698019; x=1742302819; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bW/i37H/kqxxMLYWVFi5dKIqqFLw8+mO4T5YC2Hj02M=; b=ZkaN0374zydXStFn8C7pkTdvQZYq+OsS8XSRAqa3eqSATYEzGBntd4re9+hwANj9SQ XizaOSOQ0bMx29APtwMQnb1cWmdtaUEKi6SJJV/LbnTUmryGJupgllsUXfFGHdmQnP/C M0Cw3n+Z0eoE7kA6VOS9KO43Iel2XYh0BZkKyxZLZu15+jFVXmc0ciMmdSUS6DiylImV 50b2kq3kl0o3++98uwKWkcOzEnjLwYLTQ2oV/VjaHRXynPVLUNlm0iSAlKjrKZrrEOtS BRpqMcPL5B3J1c4uNO9mUzPpjt8QoCdab3Oy4cmRkHujav2HP0djkSAkxeeaEC8RhRXT +Q6A== X-Forwarded-Encrypted: i=1; AJvYcCUHrdZ1yuPU66Rn4sxinrmE+bOdxvAkEyksCW1BiBxRcqlmvUj8wLBXsibwUK/+suMvrI6O9qKY8Q==@nongnu.org X-Gm-Message-State: AOJu0YxHhhfziUUKifmWlepdi7KNQG3CQYxZNqmfBd08Z6xSjFCVIX8J GGZTzosswkOPQBTU5oK8rrXNRfIeByEu6TB/KgqcbgWOB4ZcVKc9DHhChw== X-Gm-Gg: ASbGncuFGXY8wKSgv9FDALvqclRrYFZsIobl2Iup7D15zrhP3BYYDFlOu0Ko0OrynVB bO83X9LFRjJ+RjHwERAjEwJOXUnRWP9ic6gERij3MFH1fB5gdxkkrvptHKqN/fxjvmX+CVfawyA XUcJ70qxc50GuY1IgUdbdLPZlJUTqGnnY/NmnS+RT2LOHtaV9Z4xtIT0AaNLJhcfco5aPlBgljT jLfq8qC+YacgaWD9Lnf9WZcSGT2slmq7BguWXyvIitF6nBUjzJouVn3rzcB2Ax3nxxr1mWgb7CU PnJTPesnDb6lmG5qZ/sA2GFWwe7+4ko8mLFQ1NVPBZ2im1ed0K4= X-Google-Smtp-Source: AGHT+IFht5oBBKw3ggcDUXirydsLyedSR5nBJcEZkoJgMjN3aHGigSX5ctDGNbRB5dM+InUV0kr0Kg== X-Received: by 2002:a17:90b:1d46:b0:2fa:2133:bc87 with SMTP id 98e67ed59e1d1-3010051f268mr4508383a91.6.1741698018880; Tue, 11 Mar 2025 06:00:18 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Glenn Miles , Glenn Miles , Michael Kowal Subject: [PULL 36/72] qtest/xive: Add test of pool interrupts Date: Tue, 11 Mar 2025 22:57:30 +1000 Message-ID: <20250311125815.903177-37-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699387422019100 Content-Type: text/plain; charset="utf-8" From: Glenn Miles Added new test for pool interrupts. Removed all printfs from pnv-xive2-* q= tests. Signed-off-by: Glenn Miles Signed-off-by: Michael Kowal Reviewed-by: Nicholas Piggin Signed-off-by: Nicholas Piggin --- tests/qtest/pnv-xive2-test.c | 76 ++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/tests/qtest/pnv-xive2-test.c b/tests/qtest/pnv-xive2-test.c index 7e7b1e79c0..5313d4ef18 100644 --- a/tests/qtest/pnv-xive2-test.c +++ b/tests/qtest/pnv-xive2-test.c @@ -267,6 +267,79 @@ static void test_hw_irq(QTestState *qts) g_assert_cmphex(cppr, =3D=3D, 0xFF); } =20 +static void test_pool_irq(QTestState *qts) +{ + uint32_t irq =3D 2; + uint32_t irq_data =3D 0x600d0d06; + uint32_t end_index =3D 5; + uint32_t target_pir =3D 1; + uint32_t target_nvp =3D 0x100 + target_pir; + uint8_t priority =3D 5; + uint32_t reg32; + uint16_t reg16; + uint8_t pq, nsr, cppr, ipb; + + g_test_message("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D"); + g_test_message("Testing irq %d to pool thread %d", irq, target_pir); + + /* irq config */ + set_eas(qts, irq, end_index, irq_data); + set_end(qts, end_index, target_nvp, priority, false /* group */); + + /* enable and trigger irq */ + get_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_SET_PQ_00); + set_esb(qts, irq, XIVE_TRIGGER_PAGE, 0, 0); + + /* check irq is raised on cpu */ + pq =3D get_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_GET); + g_assert_cmpuint(pq, =3D=3D, XIVE_ESB_PENDING); + + /* check TIMA values in the PHYS ring (shared by POOL ring) */ + reg32 =3D get_tima32(qts, target_pir, TM_QW3_HV_PHYS + TM_WORD0); + nsr =3D reg32 >> 24; + cppr =3D (reg32 >> 16) & 0xFF; + g_assert_cmphex(nsr, =3D=3D, 0x40); + g_assert_cmphex(cppr, =3D=3D, 0xFF); + + /* check TIMA values in the POOL ring */ + reg32 =3D get_tima32(qts, target_pir, TM_QW2_HV_POOL + TM_WORD0); + nsr =3D reg32 >> 24; + cppr =3D (reg32 >> 16) & 0xFF; + ipb =3D (reg32 >> 8) & 0xFF; + g_assert_cmphex(nsr, =3D=3D, 0); + g_assert_cmphex(cppr, =3D=3D, 0); + g_assert_cmphex(ipb, =3D=3D, 0x80 >> priority); + + /* ack the irq */ + reg16 =3D get_tima16(qts, target_pir, TM_SPC_ACK_HV_REG); + nsr =3D reg16 >> 8; + cppr =3D reg16 & 0xFF; + g_assert_cmphex(nsr, =3D=3D, 0x40); + g_assert_cmphex(cppr, =3D=3D, priority); + + /* check irq data is what was configured */ + reg32 =3D qtest_readl(qts, xive_get_queue_addr(end_index)); + g_assert_cmphex((reg32 & 0x7fffffff), =3D=3D, (irq_data & 0x7fffffff)); + + /* check IPB is cleared in the POOL ring */ + reg32 =3D get_tima32(qts, target_pir, TM_QW2_HV_POOL + TM_WORD0); + ipb =3D (reg32 >> 8) & 0xFF; + g_assert_cmphex(ipb, =3D=3D, 0); + + /* End Of Interrupt */ + set_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_STORE_EOI, 0); + pq =3D get_esb(qts, irq, XIVE_EOI_PAGE, XIVE_ESB_GET); + g_assert_cmpuint(pq, =3D=3D, XIVE_ESB_RESET); + + /* reset CPPR */ + set_tima8(qts, target_pir, TM_QW3_HV_PHYS + TM_CPPR, 0xFF); + reg32 =3D get_tima32(qts, target_pir, TM_QW3_HV_PHYS + TM_WORD0); + nsr =3D reg32 >> 24; + cppr =3D (reg32 >> 16) & 0xFF; + g_assert_cmphex(nsr, =3D=3D, 0x00); + g_assert_cmphex(cppr, =3D=3D, 0xFF); +} + #define XIVE_ODD_CL 0x80 static void test_pull_thread_ctx_to_odd_thread_cl(QTestState *qts) { @@ -486,6 +559,9 @@ static void test_xive(void) /* omit reset_state here and use settings from test_hw_irq */ test_pull_thread_ctx_to_odd_thread_cl(qts); =20 + reset_state(qts); + test_pool_irq(qts); + reset_state(qts); test_hw_group_irq(qts); =20 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741702902; cv=none; d=zohomail.com; s=zohoarc; b=UgytBCMCR4G8XM0/bdPzh5s+n4r93QvbO8uX986pplpbSqZyg/nOoL7lVduiE4tb10peyku2Ay/Xtlz8gzEDTBb/5eJ2vIH1k1HExfr6p6k6wRoYSjEyjoXX3d3hfsYKF64Fm9AEdFaG3MdNkr5b2UiXtktAey4NO9mli1WsQws= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741702902; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1oeqcWSYzaX2aoHg4HxvXmQxGkn+hGDZWQYQTvy2CSk=; b=NERhp82u63MYVM6s9PCV085I7mvpUk90VAyIjEhI/A3YqTS2+6lQVyAAWi+gYxGlslV4wwPg7yofBpiQVjFJn6xsZmuEOJCpqfMYBBdWjR/QGNIWWxBB7zjZmF9d+RFeAncgttDDNc4t6BC6d7SnbUa3TxL4wxjz8lV+sRlYk5Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741702902539469.830196663346; Tue, 11 Mar 2025 07:21:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzKW-00080f-6Q; Tue, 11 Mar 2025 09:07:32 -0400 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 1trzDh-0004rV-KP; Tue, 11 Mar 2025 09:00:39 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDc-0008Pn-TK; Tue, 11 Mar 2025 09:00:29 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-2ff69365e1dso7927732a91.3; Tue, 11 Mar 2025 06:00:23 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698022; x=1742302822; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1oeqcWSYzaX2aoHg4HxvXmQxGkn+hGDZWQYQTvy2CSk=; b=nSghJ0zeLeGbL3s/RkeylT2kTzIHrZLwM2neW+NDaN6K2bgjqV3V5RjppFfEziXFXQ cv0f5wIwdRfDnhBfsM6jiuiOZh7EqMLEABRGCehf1NK16UoZBasy9pJSIeD4wDVhALdi rDhzBE8zfSTq5SHlMs7LSqk5FgEl3ISAFxtDOMtdDMlGI6nd4Y8U0QiLOeEHy6C/9JVe dNUIav69HVxWCCnYyH3b3nQjS2pTDzjibLDAba/JEKf2bBmImEA8KpgWvxhtL39H1o2w XsOPS5r9pcz5Zl6kWeH2CtUuNCgGo6hgKzc48gZBgUq5+tpRQbYOoRvkaT1uE+tgZzyJ qRDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698022; x=1742302822; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1oeqcWSYzaX2aoHg4HxvXmQxGkn+hGDZWQYQTvy2CSk=; b=Y+GB7HOgYFJBduFGhJmUG/IuWdg+a3/X9mI8wSnwuQDxguCq9cR+j9nBAZwYf15eSw 2fFIAbqodVb1daFAvJMfx7ey9wZ2XDXEMYQAvCxRwxxmRK0I5ZBT0zjfJ70cSE5uAFSx gt5OjDkYI/vclXLdQaAQ2Ws7dA2g5bsxv9vQBPPp0gXPSCKt8KIWWP1uGh37slDoK24W rMFiVp6R1DcEY1r2Ic5slKMu+L8C2PS83I/tP/P7KVK3BFfk8lf8qXiITKomZ3LWTwt+ mAW7fl9DZXt+EwVUgKUOnn4bPxbRYvCWO3wB31N8QNd3OQbYdohfe0QDgtMfi/RUdxSm nNpg== X-Forwarded-Encrypted: i=1; AJvYcCU3AGdYUDWR/5b6wtB6Y14iBJZ6gXONinv2euzLJIwv0Q5TPxPldW95rvWbU/nrAFpSSwqIOiisaw==@nongnu.org X-Gm-Message-State: AOJu0Yxg30eP3LbVyL+QJJ5xrMWbiEdICddcc64WHQmRSWUY3aP1FX32 uKBQRQQHLH7W0ZVccaFS8UJcGrl/HGJcFT1LOBBKkhPgAThXKhQ1BY1q2A== X-Gm-Gg: ASbGnctRM5u+bRmDPcAY0T90wDoEH+Es1thJFZLeVM87RGnxi8dZreCPTTHoh9gVdxw laAxqbLrnQJIilZXLcWrgFtdZUTUr99ywSDe4VvDPXaB59Yb3LPn2iqzGGw76aERm273B0I0JIw /kFlNE4Za9/KrG6ooFcR504tjp/q257orCjKTWBGMMkScGTWJG15Yisv5KybE6gxZFElNOpAWvQ WvwktaG1d9w/LJUrEzRRKYDGSq+ZkPnVUXyK39uhsb6ZtohbxU/h7alqC7OD38BEVAeSSVKNrge FpT8zNzPEZ7+zfb8R9PRq+oouqNnb2sh39kQrmrPlXGmW1ju2Mw= X-Google-Smtp-Source: AGHT+IFiX0aQPF90w+RCqJFRVSt+PKTcuNo2HkonEv/t9CZ6rGlJ8DkC7x7c5GOlZzMCne3JX+fwvg== X-Received: by 2002:a17:90b:278f:b0:2f7:4cce:ae37 with SMTP id 98e67ed59e1d1-2ff7ce8958fmr30252261a91.18.1741698021825; Tue, 11 Mar 2025 06:00:21 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Chalapathi V Subject: [PULL 37/72] hw/ssi/pnv_spi: Replace PnvXferBuffer with Fifo8 structure Date: Tue, 11 Mar 2025 22:57:31 +1000 Message-ID: <20250311125815.903177-38-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741702904639019000 Content-Type: text/plain; charset="utf-8" From: Chalapathi V In PnvXferBuffer dynamically allocating and freeing is a process overhead. Hence used an existing Fifo8 buffer with capacity of 16 bytes. Signed-off-by: Chalapathi V Message-ID: <20250303141328.23991-2-chalapathi.v@linux.ibm.com> Signed-off-by: Nicholas Piggin --- hw/ssi/pnv_spi.c | 264 ++++++++++++++++----------------------- include/hw/ssi/pnv_spi.h | 3 + 2 files changed, 108 insertions(+), 159 deletions(-) diff --git a/hw/ssi/pnv_spi.c b/hw/ssi/pnv_spi.c index 15e25bd1be..388b425157 100644 --- a/hw/ssi/pnv_spi.c +++ b/hw/ssi/pnv_spi.c @@ -19,6 +19,7 @@ =20 #define PNV_SPI_OPCODE_LO_NIBBLE(x) (x & 0x0F) #define PNV_SPI_MASKED_OPCODE(x) (x & 0xF0) +#define PNV_SPI_FIFO_SIZE 16 =20 /* * Macro from include/hw/ppc/fdt.h @@ -35,48 +36,14 @@ } \ } while (0) =20 -/* PnvXferBuffer */ -typedef struct PnvXferBuffer { - - uint32_t len; - uint8_t *data; - -} PnvXferBuffer; - -/* pnv_spi_xfer_buffer_methods */ -static PnvXferBuffer *pnv_spi_xfer_buffer_new(void) -{ - PnvXferBuffer *payload =3D g_malloc0(sizeof(*payload)); - - return payload; -} - -static void pnv_spi_xfer_buffer_free(PnvXferBuffer *payload) -{ - g_free(payload->data); - g_free(payload); -} - -static uint8_t *pnv_spi_xfer_buffer_write_ptr(PnvXferBuffer *payload, - uint32_t offset, uint32_t length) -{ - if (payload->len < (offset + length)) { - payload->len =3D offset + length; - payload->data =3D g_realloc(payload->data, payload->len); - } - return &payload->data[offset]; -} - static bool does_rdr_match(PnvSpi *s) { /* * According to spec, the mask bits that are 0 are compared and the * bits that are 1 are ignored. */ - uint16_t rdr_match_mask =3D GETFIELD(SPI_MM_RDR_MATCH_MASK, - s->regs[SPI_MM_REG]); - uint16_t rdr_match_val =3D GETFIELD(SPI_MM_RDR_MATCH_VAL, - s->regs[SPI_MM_REG]); + uint16_t rdr_match_mask =3D GETFIELD(SPI_MM_RDR_MATCH_MASK, s->regs[SP= I_MM_REG]); + uint16_t rdr_match_val =3D GETFIELD(SPI_MM_RDR_MATCH_VAL, s->regs[SPI_= MM_REG]); =20 if ((~rdr_match_mask & rdr_match_val) =3D=3D ((~rdr_match_mask) & GETFIELD(PPC_BITMASK(48, 63), s->regs[SPI_RCV_DATA_REG]))) { @@ -107,8 +74,8 @@ static uint8_t get_from_offset(PnvSpi *s, uint8_t offset) return byte; } =20 -static uint8_t read_from_frame(PnvSpi *s, uint8_t *read_buf, uint8_t nr_by= tes, - uint8_t ecc_count, uint8_t shift_in_count) +static uint8_t read_from_frame(PnvSpi *s, uint8_t nr_bytes, uint8_t ecc_co= unt, + uint8_t shift_in_count) { uint8_t byte; int count =3D 0; @@ -118,20 +85,24 @@ static uint8_t read_from_frame(PnvSpi *s, uint8_t *rea= d_buf, uint8_t nr_bytes, if ((ecc_count !=3D 0) && (shift_in_count =3D=3D (PNV_SPI_REG_SIZE + ecc_count))) { shift_in_count =3D 0; - } else { - byte =3D read_buf[count]; + } else if (!fifo8_is_empty(&s->rx_fifo)) { + byte =3D fifo8_pop(&s->rx_fifo); trace_pnv_spi_shift_rx(byte, count); s->regs[SPI_RCV_DATA_REG] =3D (s->regs[SPI_RCV_DATA_REG] << 8)= | byte; + } else { + qemu_log_mask(LOG_GUEST_ERROR, "pnv_spi: Reading empty RX_FIFO= \n"); } count++; } /* end of while */ return shift_in_count; } =20 -static void spi_response(PnvSpi *s, int bits, PnvXferBuffer *rsp_payload) +static void spi_response(PnvSpi *s) { uint8_t ecc_count; uint8_t shift_in_count; + uint32_t rx_len; + int i; =20 /* * Processing here must handle: @@ -144,13 +115,14 @@ static void spi_response(PnvSpi *s, int bits, PnvXfer= Buffer *rsp_payload) * First check that the response payload is the exact same * number of bytes as the request payload was */ - if (rsp_payload->len !=3D (s->N1_bytes + s->N2_bytes)) { + rx_len =3D fifo8_num_used(&s->rx_fifo); + if (rx_len !=3D (s->N1_bytes + s->N2_bytes)) { qemu_log_mask(LOG_GUEST_ERROR, "Invalid response payload size in " "bytes, expected %d, got %d\n", - (s->N1_bytes + s->N2_bytes), rsp_payload->len); + (s->N1_bytes + s->N2_bytes), rx_len); } else { uint8_t ecc_control; - trace_pnv_spi_rx_received(rsp_payload->len); + trace_pnv_spi_rx_received(rx_len); trace_pnv_spi_log_Ncounts(s->N1_bits, s->N1_bytes, s->N1_tx, s->N1_rx, s->N2_bits, s->N2_bytes, s->N2_tx, s->N2= _rx); /* @@ -175,15 +147,23 @@ static void spi_response(PnvSpi *s, int bits, PnvXfer= Buffer *rsp_payload) /* Handle the N1 portion of the frame first */ if (s->N1_rx !=3D 0) { trace_pnv_spi_rx_read_N1frame(); - shift_in_count =3D read_from_frame(s, &rsp_payload->data[0], - s->N1_bytes, ecc_count, shift_in_count); + shift_in_count =3D read_from_frame(s, s->N1_bytes, ecc_count, = shift_in_count); } /* Handle the N2 portion of the frame */ if (s->N2_rx !=3D 0) { + /* pop out N1_bytes from rx_fifo if not already */ + if (s->N1_rx =3D=3D 0) { + for (i =3D 0; i < s->N1_bytes; i++) { + if (!fifo8_is_empty(&s->rx_fifo)) { + fifo8_pop(&s->rx_fifo); + } else { + qemu_log_mask(LOG_GUEST_ERROR, "pnv_spi: Reading e= mpty" + " RX_FIFO\n"); + } + } + } trace_pnv_spi_rx_read_N2frame(); - shift_in_count =3D read_from_frame(s, - &rsp_payload->data[s->N1_bytes], s->N2_bytes, - ecc_count, shift_in_count); + shift_in_count =3D read_from_frame(s, s->N2_bytes, ecc_count, = shift_in_count); } if ((s->N1_rx + s->N2_rx) > 0) { /* @@ -210,36 +190,41 @@ static void spi_response(PnvSpi *s, int bits, PnvXfer= Buffer *rsp_payload) } /* end of else */ } /* end of spi_response() */ =20 -static void transfer(PnvSpi *s, PnvXferBuffer *payload) +static void transfer(PnvSpi *s) { - uint32_t tx; - uint32_t rx; - PnvXferBuffer *rsp_payload =3D NULL; + uint32_t tx, rx, payload_len; + uint8_t rx_byte; =20 - rsp_payload =3D pnv_spi_xfer_buffer_new(); - if (!rsp_payload) { - return; - } - for (int offset =3D 0; offset < payload->len; offset +=3D s->transfer_= len) { + payload_len =3D fifo8_num_used(&s->tx_fifo); + for (int offset =3D 0; offset < payload_len; offset +=3D s->transfer_l= en) { tx =3D 0; for (int i =3D 0; i < s->transfer_len; i++) { - if ((offset + i) >=3D payload->len) { + if ((offset + i) >=3D payload_len) { tx <<=3D 8; + } else if (!fifo8_is_empty(&s->tx_fifo)) { + tx =3D (tx << 8) | fifo8_pop(&s->tx_fifo); } else { - tx =3D (tx << 8) | payload->data[offset + i]; + qemu_log_mask(LOG_GUEST_ERROR, "pnv_spi: TX_FIFO underflow= \n"); } } rx =3D ssi_transfer(s->ssi_bus, tx); for (int i =3D 0; i < s->transfer_len; i++) { - if ((offset + i) >=3D payload->len) { + if ((offset + i) >=3D payload_len) { + break; + } + rx_byte =3D (rx >> (8 * (s->transfer_len - 1) - i * 8)) & 0xFF; + if (!fifo8_is_full(&s->rx_fifo)) { + fifo8_push(&s->rx_fifo, rx_byte); + } else { + qemu_log_mask(LOG_GUEST_ERROR, "pnv_spi: RX_FIFO is full\n= "); break; } - *(pnv_spi_xfer_buffer_write_ptr(rsp_payload, rsp_payload->len,= 1)) =3D - (rx >> (8 * (s->transfer_len - 1) - i * 8)) & 0xFF; } } - spi_response(s, s->N1_bits, rsp_payload); - pnv_spi_xfer_buffer_free(rsp_payload); + spi_response(s); + /* Reset fifo for next frame */ + fifo8_reset(&s->tx_fifo); + fifo8_reset(&s->rx_fifo); } =20 static inline uint8_t get_seq_index(PnvSpi *s) @@ -310,13 +295,11 @@ static void calculate_N1(PnvSpi *s, uint8_t opcode) * If Forced Implicit mode and count control doesn't * indicate transmit then reset the tx count to 0 */ - if (GETFIELD(SPI_CTR_CFG_N1_CTRL_B2, - s->regs[SPI_CTR_CFG_REG]) =3D=3D 0) { + if (GETFIELD(SPI_CTR_CFG_N1_CTRL_B2, s->regs[SPI_CTR_CFG_REG])= =3D=3D 0) { s->N1_tx =3D 0; } /* If rx count control for N1 is set, load the rx value */ - if (GETFIELD(SPI_CTR_CFG_N1_CTRL_B3, - s->regs[SPI_CTR_CFG_REG]) =3D=3D 1) { + if (GETFIELD(SPI_CTR_CFG_N1_CTRL_B3, s->regs[SPI_CTR_CFG_REG])= =3D=3D 1) { s->N1_rx =3D s->N1_bytes; } } @@ -328,8 +311,7 @@ static void calculate_N1(PnvSpi *s, uint8_t opcode) * cap the size at a max of 64 bits or 72 bits and set the sequencer F= SM * error bit. */ - uint8_t ecc_control =3D GETFIELD(SPI_CLK_CFG_ECC_CTRL, - s->regs[SPI_CLK_CFG_REG]); + uint8_t ecc_control =3D GETFIELD(SPI_CLK_CFG_ECC_CTRL, s->regs[SPI_CLK= _CFG_REG]); if (ecc_control =3D=3D 0 || ecc_control =3D=3D 2) { if (s->N1_bytes > (PNV_SPI_REG_SIZE + 1)) { qemu_log_mask(LOG_GUEST_ERROR, "Unsupported N1 shift size when= " @@ -340,8 +322,7 @@ static void calculate_N1(PnvSpi *s, uint8_t opcode) } } else if (s->N1_bytes > PNV_SPI_REG_SIZE) { qemu_log_mask(LOG_GUEST_ERROR, "Unsupported N1 shift size, " - "bytes =3D 0x%x, bits =3D 0x%x\n", - s->N1_bytes, s->N1_bits); + "bytes =3D 0x%x, bits =3D 0x%x\n", s->N1_bytes, s->N= 1_bits); s->N1_bytes =3D PNV_SPI_REG_SIZE; s->N1_bits =3D s->N1_bytes * 8; } @@ -350,19 +331,10 @@ static void calculate_N1(PnvSpi *s, uint8_t opcode) /* * Shift_N1 operation handler method */ -static bool operation_shiftn1(PnvSpi *s, uint8_t opcode, - PnvXferBuffer **payload, bool send_n1_alone) +static bool operation_shiftn1(PnvSpi *s, uint8_t opcode, bool send_n1_alon= e) { uint8_t n1_count; bool stop =3D false; - - /* - * If there isn't a current payload left over from a stopped sequence - * create a new one. - */ - if (*payload =3D=3D NULL) { - *payload =3D pnv_spi_xfer_buffer_new(); - } /* * Use a combination of N1 counters to build the N1 portion of the * transmit payload. @@ -413,9 +385,13 @@ static bool operation_shiftn1(PnvSpi *s, uint8_t opcod= e, */ uint8_t n1_byte =3D 0x00; n1_byte =3D get_from_offset(s, n1_count); - trace_pnv_spi_tx_append("n1_byte", n1_byte, n1_count); - *(pnv_spi_xfer_buffer_write_ptr(*payload, (*payload)->len,= 1)) =3D - n1_byte; + if (!fifo8_is_full(&s->tx_fifo)) { + trace_pnv_spi_tx_append("n1_byte", n1_byte, n1_count); + fifo8_push(&s->tx_fifo, n1_byte); + } else { + qemu_log_mask(LOG_GUEST_ERROR, "pnv_spi: TX_FIFO is fu= ll\n"); + break; + } } else { /* * We hit a shift_n1 opcode TX but the TDR is empty, tell = the @@ -436,16 +412,17 @@ static bool operation_shiftn1(PnvSpi *s, uint8_t opco= de, * - we are receiving and the RDR is empty so we allow the ope= ration * to proceed. */ - if ((s->N1_rx !=3D 0) && (GETFIELD(SPI_STS_RDR_FULL, - s->status) =3D=3D 1)) { + if ((s->N1_rx !=3D 0) && (GETFIELD(SPI_STS_RDR_FULL, s->status= ) =3D=3D 1)) { trace_pnv_spi_sequencer_stop_requested("shift N1" "set for receive but RDR is full"); stop =3D true; break; - } else { + } else if (!fifo8_is_full(&s->tx_fifo)) { trace_pnv_spi_tx_append_FF("n1_byte"); - *(pnv_spi_xfer_buffer_write_ptr(*payload, (*payload)->len,= 1)) - =3D 0xff; + fifo8_push(&s->tx_fifo, 0xff); + } else { + qemu_log_mask(LOG_GUEST_ERROR, "pnv_spi: TX_FIFO is full\n= "); + break; } } n1_count++; @@ -486,15 +463,13 @@ static bool operation_shiftn1(PnvSpi *s, uint8_t opco= de, */ if (send_n1_alone && !stop) { /* We have a TX and a full TDR or an RX and an empty RDR */ - trace_pnv_spi_tx_request("Shifting N1 frame", (*payload)->len); - transfer(s, *payload); + trace_pnv_spi_tx_request("Shifting N1 frame", fifo8_num_used(&s->t= x_fifo)); + transfer(s); /* The N1 frame shift is complete so reset the N1 counters */ s->N2_bits =3D 0; s->N2_bytes =3D 0; s->N2_tx =3D 0; s->N2_rx =3D 0; - pnv_spi_xfer_buffer_free(*payload); - *payload =3D NULL; } return stop; } /* end of operation_shiftn1() */ @@ -552,13 +527,11 @@ static void calculate_N2(PnvSpi *s, uint8_t opcode) * If Forced Implicit mode and count control doesn't * indicate a receive then reset the rx count to 0 */ - if (GETFIELD(SPI_CTR_CFG_N2_CTRL_B3, - s->regs[SPI_CTR_CFG_REG]) =3D=3D 0) { + if (GETFIELD(SPI_CTR_CFG_N2_CTRL_B3, s->regs[SPI_CTR_CFG_REG])= =3D=3D 0) { s->N2_rx =3D 0; } /* If tx count control for N2 is set, load the tx value */ - if (GETFIELD(SPI_CTR_CFG_N2_CTRL_B2, - s->regs[SPI_CTR_CFG_REG]) =3D=3D 1) { + if (GETFIELD(SPI_CTR_CFG_N2_CTRL_B2, s->regs[SPI_CTR_CFG_REG])= =3D=3D 1) { s->N2_tx =3D s->N2_bytes; } } @@ -571,8 +544,7 @@ static void calculate_N2(PnvSpi *s, uint8_t opcode) * cap the size at a max of 64 bits or 72 bits and set the sequencer F= SM * error bit. */ - uint8_t ecc_control =3D GETFIELD(SPI_CLK_CFG_ECC_CTRL, - s->regs[SPI_CLK_CFG_REG]); + uint8_t ecc_control =3D GETFIELD(SPI_CLK_CFG_ECC_CTRL, s->regs[SPI_CLK= _CFG_REG]); if (ecc_control =3D=3D 0 || ecc_control =3D=3D 2) { if (s->N2_bytes > (PNV_SPI_REG_SIZE + 1)) { /* Unsupported N2 shift size when ECC enabled */ @@ -590,19 +562,10 @@ static void calculate_N2(PnvSpi *s, uint8_t opcode) * Shift_N2 operation handler method */ =20 -static bool operation_shiftn2(PnvSpi *s, uint8_t opcode, - PnvXferBuffer **payload) +static bool operation_shiftn2(PnvSpi *s, uint8_t opcode) { uint8_t n2_count; bool stop =3D false; - - /* - * If there isn't a current payload left over from a stopped sequence - * create a new one. - */ - if (*payload =3D=3D NULL) { - *payload =3D pnv_spi_xfer_buffer_new(); - } /* * Use a combination of N2 counters to build the N2 portion of the * transmit payload. @@ -629,44 +592,47 @@ static bool operation_shiftn2(PnvSpi *s, uint8_t opco= de, * code continue will end up building the payload twice in the same * buffer since RDR full causes a sequence stop and restart. */ - if ((s->N2_rx !=3D 0) && - (GETFIELD(SPI_STS_RDR_FULL, s->status) =3D=3D 1)) { + if ((s->N2_rx !=3D 0) && (GETFIELD(SPI_STS_RDR_FULL, s->status) = =3D=3D 1)) { trace_pnv_spi_sequencer_stop_requested("shift N2 set" "for receive but RDR is full"); stop =3D true; break; } - if ((s->N2_tx !=3D 0) && ((s->N1_tx + n2_count) < - PNV_SPI_REG_SIZE)) { + if ((s->N2_tx !=3D 0) && ((s->N1_tx + n2_count) < PNV_SPI_REG_SIZE= )) { /* Always append data for the N2 segment if it is set for TX */ uint8_t n2_byte =3D 0x00; n2_byte =3D get_from_offset(s, (s->N1_tx + n2_count)); - trace_pnv_spi_tx_append("n2_byte", n2_byte, (s->N1_tx + n2_cou= nt)); - *(pnv_spi_xfer_buffer_write_ptr(*payload, (*payload)->len, 1)) - =3D n2_byte; - } else { + if (!fifo8_is_full(&s->tx_fifo)) { + trace_pnv_spi_tx_append("n2_byte", n2_byte, (s->N1_tx + n2= _count)); + fifo8_push(&s->tx_fifo, n2_byte); + } else { + qemu_log_mask(LOG_GUEST_ERROR, "pnv_spi: TX_FIFO is full\n= "); + break; + } + } else if (!fifo8_is_full(&s->tx_fifo)) { /* * Regardless of whether or not N2 is set for TX or RX, we need * the number of bytes in the payload to match the overall len= gth * of the operation. */ trace_pnv_spi_tx_append_FF("n2_byte"); - *(pnv_spi_xfer_buffer_write_ptr(*payload, (*payload)->len, 1)) - =3D 0xff; + fifo8_push(&s->tx_fifo, 0xff); + } else { + qemu_log_mask(LOG_GUEST_ERROR, "pnv_spi: TX_FIFO is full\n"); + break; } n2_count++; } /* end of while */ if (!stop) { /* We have a TX and a full TDR or an RX and an empty RDR */ - trace_pnv_spi_tx_request("Shifting N2 frame", (*payload)->len); - transfer(s, *payload); + trace_pnv_spi_tx_request("Shifting N2 frame", fifo8_num_used(&s->t= x_fifo)); + transfer(s); /* * If we are doing an N2 TX and the TDR is full we need to clear t= he * TDR_full status. Do this here instead of up in the loop above s= o we * don't log the message in every loop iteration. */ - if ((s->N2_tx !=3D 0) && - (GETFIELD(SPI_STS_TDR_FULL, s->status) =3D=3D 1)) { + if ((s->N2_tx !=3D 0) && (GETFIELD(SPI_STS_TDR_FULL, s->status) = =3D=3D 1)) { s->status =3D SETFIELD(SPI_STS_TDR_FULL, s->status, 0); } /* @@ -682,8 +648,6 @@ static bool operation_shiftn2(PnvSpi *s, uint8_t opcode, s->N1_bytes =3D 0; s->N1_tx =3D 0; s->N1_rx =3D 0; - pnv_spi_xfer_buffer_free(*payload); - *payload =3D NULL; } return stop; } /* end of operation_shiftn2()*/ @@ -701,19 +665,6 @@ static void operation_sequencer(PnvSpi *s) uint8_t opcode =3D 0; uint8_t masked_opcode =3D 0; =20 - /* - * PnvXferBuffer for containing the payload of the SPI frame. - * This is a static because there are cases where a sequence has to st= op - * and wait for the target application to unload the RDR. If this occ= urs - * during a sequence where N1 is not sent alone and instead combined w= ith - * N2 since the N1 tx length + the N2 tx length is less than the size = of - * the TDR. - */ - static PnvXferBuffer *payload; - - if (payload =3D=3D NULL) { - payload =3D pnv_spi_xfer_buffer_new(); - } /* * Clear the sequencer FSM error bit - general_SPI_status[3] * before starting a sequence. @@ -775,10 +726,8 @@ static void operation_sequencer(PnvSpi *s) s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status, FSM= _DONE); } else if (s->responder_select !=3D 1) { qemu_log_mask(LOG_GUEST_ERROR, "Slave selection other than= 1 " - "not supported, select =3D 0x%x\n", - s->responder_select); - trace_pnv_spi_sequencer_stop_requested("invalid " - "responder select"); + "not supported, select =3D 0x%x\n", s->respo= nder_select); + trace_pnv_spi_sequencer_stop_requested("invalid responder = select"); s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status, FSM= _IDLE); stop =3D true; } else { @@ -840,9 +789,8 @@ static void operation_sequencer(PnvSpi *s) =3D=3D SEQ_OP_SHIFT_N2) { send_n1_alone =3D false; } - s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status, - FSM_SHIFT_N1); - stop =3D operation_shiftn1(s, opcode, &payload, send_n1_al= one); + s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status, FSM= _SHIFT_N1); + stop =3D operation_shiftn1(s, opcode, send_n1_alone); if (stop) { /* * The operation code says to stop, this can occur if: @@ -858,7 +806,7 @@ static void operation_sequencer(PnvSpi *s) if (GETFIELD(SPI_STS_TDR_UNDERRUN, s->status)) { s->shift_n1_done =3D true; s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->sta= tus, - FSM_SHIFT_N2); + FSM_SHIFT_N2); s->status =3D SETFIELD(SPI_STS_SEQ_INDEX, s->statu= s, (get_seq_index(s) + 1)); } else { @@ -866,8 +814,7 @@ static void operation_sequencer(PnvSpi *s) * This is case (1) or (2) so the sequencer needs = to * wait and NOT go to the next sequence yet. */ - s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->sta= tus, - FSM_WAIT); + s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->sta= tus, FSM_WAIT); } } else { /* Ok to move on to the next index */ @@ -890,21 +837,18 @@ static void operation_sequencer(PnvSpi *s) * error bit 3 (general_SPI_status[3]) in status reg. */ s->status =3D SETFIELD(SPI_STS_GEN_STATUS_B3, s->status, 1= ); - trace_pnv_spi_sequencer_stop_requested("shift_n2 " - "w/no shift_n1 done"); + trace_pnv_spi_sequencer_stop_requested("shift_n2 w/no shif= t_n1 done"); stop =3D true; } else { /* Ok to do a Shift_N2 */ - s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status, - FSM_SHIFT_N2); - stop =3D operation_shiftn2(s, opcode, &payload); + s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status, FSM= _SHIFT_N2); + stop =3D operation_shiftn2(s, opcode); /* * If the operation code says to stop set the shifter stat= e to * wait and stop */ if (stop) { - s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status, - FSM_WAIT); + s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status,= FSM_WAIT); } else { /* Ok to move on to the next index */ next_sequencer_fsm(s); @@ -988,8 +932,7 @@ static void operation_sequencer(PnvSpi *s) case SEQ_OP_BRANCH_IFNEQ_INC_2: s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_E= XECUTE); trace_pnv_spi_sequencer_op("BRANCH_IFNEQ_INC_2", get_seq_index= (s)); - uint8_t condition2 =3D GETFIELD(SPI_CTR_CFG_CMP2, - s->regs[SPI_CTR_CFG_REG]); + uint8_t condition2 =3D GETFIELD(SPI_CTR_CFG_CMP2, s->regs[SPI_= CTR_CFG_REG]); /* * The spec says the loop should execute count compare + 1 tim= es. * However we learned from engineering that we really only loop @@ -1209,6 +1152,9 @@ static void pnv_spi_realize(DeviceState *dev, Error *= *errp) s->cs_line =3D g_new0(qemu_irq, 1); qdev_init_gpio_out_named(DEVICE(s), s->cs_line, "cs", 1); =20 + fifo8_create(&s->tx_fifo, PNV_SPI_FIFO_SIZE); + fifo8_create(&s->rx_fifo, PNV_SPI_FIFO_SIZE); + /* spi scoms */ pnv_xscom_region_init(&s->xscom_spic_regs, OBJECT(s), &pnv_spi_xscom_o= ps, s, "xscom-spi", PNV10_XSCOM_PIB_SPIC_SIZE); diff --git a/include/hw/ssi/pnv_spi.h b/include/hw/ssi/pnv_spi.h index 8815f67d45..9878d9a25f 100644 --- a/include/hw/ssi/pnv_spi.h +++ b/include/hw/ssi/pnv_spi.h @@ -23,6 +23,7 @@ =20 #include "hw/ssi/ssi.h" #include "hw/sysbus.h" +#include "qemu/fifo8.h" =20 #define TYPE_PNV_SPI "pnv-spi" OBJECT_DECLARE_SIMPLE_TYPE(PnvSpi, PNV_SPI) @@ -37,6 +38,8 @@ typedef struct PnvSpi { SSIBus *ssi_bus; qemu_irq *cs_line; MemoryRegion xscom_spic_regs; + Fifo8 tx_fifo; + Fifo8 rx_fifo; /* SPI object number */ uint32_t spic_num; uint8_t transfer_len; --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699118; cv=none; d=zohomail.com; s=zohoarc; b=R4ECSzTdsidOOTYvQ3syEO3+Vgts96jsDLIh9aMlpF1Xn46y/CHx/3pgUXLoZQHjtsgn8+JEZdFfNtx/Y9n2n6qkGLhWDkmqeK1EV/Ttnrc5dJNpHjzgnaZfEcAy7iLR+6M7mqZ+hnRRm1T3RRbbYxkrOQ8z+wGdP63b1qXZt24= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699118; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ltiIpntD1e/ZvbcOYuUkJzWPVpcS1p6NcC9JSvLJgJs=; b=OzgleDYR4kl8zMlLhUmBNrUSXYNH6yUi5XHSvtqk7x1SjvQLhd84I3tVUXwM/oOsmnHY4ImdRJrbFYACFokFdEGlkSSUbq1Rv5dNUuHtrFinuM+bO0E3+S5fkPSRNr6/NLU/zFtTEMZ+jLSLNqpL4VjmTcygPjtebmCdeLW8ceY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699118071958.1102470287411; Tue, 11 Mar 2025 06:18:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzIw-0003FU-8s; Tue, 11 Mar 2025 09:05:54 -0400 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 1trzDl-0004tJ-OT; Tue, 11 Mar 2025 09:00:42 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDf-0008SW-Oh; Tue, 11 Mar 2025 09:00:33 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-2ff04f36fd2so9014252a91.1; Tue, 11 Mar 2025 06:00:26 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698025; x=1742302825; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ltiIpntD1e/ZvbcOYuUkJzWPVpcS1p6NcC9JSvLJgJs=; b=gh37F6v75VHtGQ30qUt8BY5QNVQSu+jF5GU2C4YlYgsDN/UyHTOTorKh8AaicBhq4V hwzJrfyqH2vT/Rxf+NYCh5p33RsvCXzkl18j+zI7u6kF/O/wp7TIr5I8sZlr+7Ahb5IZ DoMGWjCJDxAm36mR6LtzKQuzNs5yZFVolPwjBzduBa7caE6egW08O7wqqZxG60bvmN0R tR80hi2TxUFIQiNFxaVYHa1CyUVgIQ2du+T/FKDpqzFrfGS+jN9VhRL0+M3k7ykdvlDd eUGFJ0lnG0wcPpkOIaUQgF2kZkYj2p/7nlxkIOwmQJYZKEEYuEFDWQIZ4DBjdGlOicpO QwzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698025; x=1742302825; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ltiIpntD1e/ZvbcOYuUkJzWPVpcS1p6NcC9JSvLJgJs=; b=QCnwBwRm58r4O089lCOCkn1SpNFIqUFWvAtvfLszY6VjilkNgH1UjC9F60wy9T7e+s Ag/9GZdDMxUcn3flIja0bKa6JnMTmVV/J4PtDmmTWZrghqMPkVsT/fSEddohbgLBmH6u RuLKiuAfA5FRrSQyUPQEefpgbL1hUBhQnlyw2lgy5xyVWWfXRR4bIIxPgoaHjj07ChQO vMOJrGCKZZJTkeBE11SFuDXHhwkp9pPu4LwAcId6AUNvblMgh6GkZFLplfdzPRRFtIrE 4bIZw/BPrzIPfwuM62djg/IZ3qnmGa90Iiy5fc7pqg/Ug+MkyuVuaNcF9rRjDMsWD3R1 kw2Q== X-Forwarded-Encrypted: i=1; AJvYcCVMnqXcYEGufZYxmhqdN62corU3omZmSYgbokCAyHZ9+0aDpTosFYn5esq6XZEaW2HfzZWTZSUE2A==@nongnu.org X-Gm-Message-State: AOJu0Yxg2De6tSHI0TTL7xTV3GEMwbZHkbmzUVyOh516PYhIl7W+XymF ccefWAyR4LlqIe3YDpvNHf6NfY39VBShYbEPMjy9DeZ8bjwJkWNsScSAQw== X-Gm-Gg: ASbGncspVS4NBIffocKZ/bOTB8/nK9vvSu1LhFZc1jZ+9zHWn7FlbA7a6XMJRaS7+mB 5dPktMEt9k75ELmlKKhs3OQWJzhtuhfnaHx888s4KljZv0gWtSsaMrKlcaS4kqZRpkJk1+3DTT/ xL3jPFt9NhrLvpdpaZYuciMDAPn/epLMm5REIgJmQnPzicFzi3eha9KF8YIn502tdkXk8kj7q2H OYa3VY9ZrhNNLmpxtzEgNaM5aZNFmraG+aaYndpeyFGUe/o6Ph55OX8VROIMyffL/Gd/cR6pYlR lodYwfTyUbCSfHcWEljK0DH626ikDUwpynsWmpOqnEGEQz1Wfh0= X-Google-Smtp-Source: AGHT+IEUX7EQKfo4DCOgQUmp+PAEpVwTq+rX9BWmWCAia6eMLOHO9RLW5iwyQW9TghvOet5wGrhpFg== X-Received: by 2002:a17:90b:2e51:b0:2ff:7331:18bc with SMTP id 98e67ed59e1d1-2ff7ceee7ebmr22740098a91.26.1741698024574; Tue, 11 Mar 2025 06:00:24 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Chalapathi V Subject: [PULL 38/72] hw/ssi/pnv_spi: Use local var seq_index instead of get_seq_index(). Date: Tue, 11 Mar 2025 22:57:32 +1000 Message-ID: <20250311125815.903177-39-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699120611019000 Content-Type: text/plain; charset="utf-8" From: Chalapathi V Use a local variable seq_index instead of repeatedly calling get_seq_index() method and open-code next_sequencer_fsm(). Signed-off-by: Chalapathi V Reviewed-by: Nicholas Piggin Message-ID: <20250303141328.23991-3-chalapathi.v@linux.ibm.com> Signed-off-by: Nicholas Piggin --- hw/ssi/pnv_spi.c | 97 ++++++++++++++++++++++++++---------------------- 1 file changed, 52 insertions(+), 45 deletions(-) diff --git a/hw/ssi/pnv_spi.c b/hw/ssi/pnv_spi.c index 388b425157..de33542c35 100644 --- a/hw/ssi/pnv_spi.c +++ b/hw/ssi/pnv_spi.c @@ -227,18 +227,6 @@ static void transfer(PnvSpi *s) fifo8_reset(&s->rx_fifo); } =20 -static inline uint8_t get_seq_index(PnvSpi *s) -{ - return GETFIELD(SPI_STS_SEQ_INDEX, s->status); -} - -static inline void next_sequencer_fsm(PnvSpi *s) -{ - uint8_t seq_index =3D get_seq_index(s); - s->status =3D SETFIELD(SPI_STS_SEQ_INDEX, s->status, (seq_index + 1)); - s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_INDEX_INC= REMENT); -} - /* * Calculate the N1 counters based on passed in opcode and * internal register values. @@ -664,6 +652,7 @@ static void operation_sequencer(PnvSpi *s) bool stop =3D false; /* Flag to stop the sequencer */ uint8_t opcode =3D 0; uint8_t masked_opcode =3D 0; + uint8_t seq_index; =20 /* * Clear the sequencer FSM error bit - general_SPI_status[3] @@ -677,12 +666,17 @@ static void operation_sequencer(PnvSpi *s) if (GETFIELD(SPI_STS_SEQ_FSM, s->status) =3D=3D SEQ_STATE_IDLE) { s->status =3D SETFIELD(SPI_STS_SEQ_INDEX, s->status, 0); } + /* + * SPI_STS_SEQ_INDEX of status register is kept in seq_index variable = and + * updated back to status register at the end of operation_sequencer(). + */ + seq_index =3D GETFIELD(SPI_STS_SEQ_INDEX, s->status); /* * There are only 8 possible operation IDs to iterate through though * some operations may cause more than one frame to be sequenced. */ - while (get_seq_index(s) < NUM_SEQ_OPS) { - opcode =3D s->seq_op[get_seq_index(s)]; + while (seq_index < NUM_SEQ_OPS) { + opcode =3D s->seq_op[seq_index]; /* Set sequencer state to decode */ s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_DECOD= E); /* @@ -699,7 +693,7 @@ static void operation_sequencer(PnvSpi *s) case SEQ_OP_STOP: s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_E= XECUTE); /* A stop operation in any position stops the sequencer */ - trace_pnv_spi_sequencer_op("STOP", get_seq_index(s)); + trace_pnv_spi_sequencer_op("STOP", seq_index); =20 stop =3D true; s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status, FSM_IDL= E); @@ -710,7 +704,7 @@ static void operation_sequencer(PnvSpi *s) =20 case SEQ_OP_SELECT_SLAVE: s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_E= XECUTE); - trace_pnv_spi_sequencer_op("SELECT_SLAVE", get_seq_index(s)); + trace_pnv_spi_sequencer_op("SELECT_SLAVE", seq_index); /* * This device currently only supports a single responder * connection at position 0. De-selecting a responder is fine @@ -721,8 +715,7 @@ static void operation_sequencer(PnvSpi *s) if (s->responder_select =3D=3D 0) { trace_pnv_spi_shifter_done(); qemu_set_irq(s->cs_line[0], 1); - s->status =3D SETFIELD(SPI_STS_SEQ_INDEX, s->status, - (get_seq_index(s) + 1)); + seq_index++; s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status, FSM= _DONE); } else if (s->responder_select !=3D 1) { qemu_log_mask(LOG_GUEST_ERROR, "Slave selection other than= 1 " @@ -747,13 +740,15 @@ static void operation_sequencer(PnvSpi *s) * applies once a valid responder select has occurred. */ s->shift_n1_done =3D false; - next_sequencer_fsm(s); + seq_index++; + s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, + SEQ_STATE_INDEX_INCREMENT); } break; =20 case SEQ_OP_SHIFT_N1: s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_E= XECUTE); - trace_pnv_spi_sequencer_op("SHIFT_N1", get_seq_index(s)); + trace_pnv_spi_sequencer_op("SHIFT_N1", seq_index); /* * Only allow a shift_n1 when the state is not IDLE or DONE. * In either of those two cases the sequencer is not in a prop= er @@ -785,8 +780,9 @@ static void operation_sequencer(PnvSpi *s) * transmission to the responder without requiring a refil= l of * the TDR between the two operations. */ - if (PNV_SPI_MASKED_OPCODE(s->seq_op[get_seq_index(s) + 1]) - =3D=3D SEQ_OP_SHIFT_N2) { + if ((seq_index !=3D 7) && + PNV_SPI_MASKED_OPCODE(s->seq_op[(seq_index + 1)]) =3D= =3D + SEQ_OP_SHIFT_N2) { send_n1_alone =3D false; } s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status, FSM= _SHIFT_N1); @@ -806,9 +802,8 @@ static void operation_sequencer(PnvSpi *s) if (GETFIELD(SPI_STS_TDR_UNDERRUN, s->status)) { s->shift_n1_done =3D true; s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->sta= tus, - FSM_SHIFT_N2); - s->status =3D SETFIELD(SPI_STS_SEQ_INDEX, s->statu= s, - (get_seq_index(s) + 1)); + FSM_SHIFT_N2); + seq_index++; } else { /* * This is case (1) or (2) so the sequencer needs = to @@ -819,14 +814,16 @@ static void operation_sequencer(PnvSpi *s) } else { /* Ok to move on to the next index */ s->shift_n1_done =3D true; - next_sequencer_fsm(s); + seq_index++; + s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, + SEQ_STATE_INDEX_INCREMENT); } } break; =20 case SEQ_OP_SHIFT_N2: s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_E= XECUTE); - trace_pnv_spi_sequencer_op("SHIFT_N2", get_seq_index(s)); + trace_pnv_spi_sequencer_op("SHIFT_N2", seq_index); if (!s->shift_n1_done) { qemu_log_mask(LOG_GUEST_ERROR, "Shift_N2 is not allowed if= a " "Shift_N1 is not done, shifter state =3D 0x%= llx", @@ -851,14 +848,16 @@ static void operation_sequencer(PnvSpi *s) s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status,= FSM_WAIT); } else { /* Ok to move on to the next index */ - next_sequencer_fsm(s); + seq_index++; + s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, + SEQ_STATE_INDEX_INCREMENT); } } break; =20 case SEQ_OP_BRANCH_IFNEQ_RDR: s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_E= XECUTE); - trace_pnv_spi_sequencer_op("BRANCH_IFNEQ_RDR", get_seq_index(s= )); + trace_pnv_spi_sequencer_op("BRANCH_IFNEQ_RDR", seq_index); /* * The memory mapping register RDR match value is compared aga= inst * the 16 rightmost bytes of the RDR (potentially with masking= ). @@ -874,15 +873,16 @@ static void operation_sequencer(PnvSpi *s) if (rdr_matched) { trace_pnv_spi_RDR_match("success"); /* A match occurred, increment the sequencer index. */ - next_sequencer_fsm(s); + seq_index++; + s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, + SEQ_STATE_INDEX_INCREMENT); } else { trace_pnv_spi_RDR_match("failed"); /* * Branch the sequencer to the index coded into the op * code. */ - s->status =3D SETFIELD(SPI_STS_SEQ_INDEX, s->status, - PNV_SPI_OPCODE_LO_NIBBLE(opcode)); + seq_index =3D PNV_SPI_OPCODE_LO_NIBBLE(opcode); } /* * Regardless of where the branch ended up we want the @@ -901,12 +901,13 @@ static void operation_sequencer(PnvSpi *s) case SEQ_OP_TRANSFER_TDR: s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_E= XECUTE); qemu_log_mask(LOG_GUEST_ERROR, "Transfer TDR is not supported\= n"); - next_sequencer_fsm(s); + seq_index++; + s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_I= NDEX_INCREMENT); break; =20 case SEQ_OP_BRANCH_IFNEQ_INC_1: s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_E= XECUTE); - trace_pnv_spi_sequencer_op("BRANCH_IFNEQ_INC_1", get_seq_index= (s)); + trace_pnv_spi_sequencer_op("BRANCH_IFNEQ_INC_1", seq_index); /* * The spec says the loop should execute count compare + 1 tim= es. * However we learned from engineering that we really only loop @@ -920,19 +921,21 @@ static void operation_sequencer(PnvSpi *s) * mask off all but the first three bits so we don't try to * access beyond the sequencer_operation_reg boundary. */ - s->status =3D SETFIELD(SPI_STS_SEQ_INDEX, s->status, - PNV_SPI_OPCODE_LO_NIBBLE(opcode)); + seq_index =3D PNV_SPI_OPCODE_LO_NIBBLE(opcode); s->loop_counter_1++; } else { /* Continue to next index if loop counter is reached */ - next_sequencer_fsm(s); + seq_index++; + s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, + SEQ_STATE_INDEX_INCREMENT); } break; =20 case SEQ_OP_BRANCH_IFNEQ_INC_2: s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_E= XECUTE); - trace_pnv_spi_sequencer_op("BRANCH_IFNEQ_INC_2", get_seq_index= (s)); - uint8_t condition2 =3D GETFIELD(SPI_CTR_CFG_CMP2, s->regs[SPI_= CTR_CFG_REG]); + trace_pnv_spi_sequencer_op("BRANCH_IFNEQ_INC_2", seq_index); + uint8_t condition2 =3D GETFIELD(SPI_CTR_CFG_CMP2, + s->regs[SPI_CTR_CFG_REG]); /* * The spec says the loop should execute count compare + 1 tim= es. * However we learned from engineering that we really only loop @@ -945,19 +948,21 @@ static void operation_sequencer(PnvSpi *s) * mask off all but the first three bits so we don't try to * access beyond the sequencer_operation_reg boundary. */ - s->status =3D SETFIELD(SPI_STS_SEQ_INDEX, - s->status, PNV_SPI_OPCODE_LO_NIBBLE(opcode= )); + seq_index =3D PNV_SPI_OPCODE_LO_NIBBLE(opcode); s->loop_counter_2++; } else { /* Continue to next index if loop counter is reached */ - next_sequencer_fsm(s); + seq_index++; + s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, + SEQ_STATE_INDEX_INCREMENT); } break; =20 default: s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_E= XECUTE); /* Ignore unsupported operations. */ - next_sequencer_fsm(s); + seq_index++; + s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_I= NDEX_INCREMENT); break; } /* end of switch */ /* @@ -965,10 +970,10 @@ static void operation_sequencer(PnvSpi *s) * we need to go ahead and end things as if there was a STOP at the * end. */ - if (get_seq_index(s) =3D=3D NUM_SEQ_OPS) { + if (seq_index =3D=3D NUM_SEQ_OPS) { /* All 8 opcodes completed, sequencer idling */ s->status =3D SETFIELD(SPI_STS_SHIFTER_FSM, s->status, FSM_IDL= E); - s->status =3D SETFIELD(SPI_STS_SEQ_INDEX, s->status, 0); + seq_index =3D 0; s->loop_counter_1 =3D 0; s->loop_counter_2 =3D 0; s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_I= DLE); @@ -979,6 +984,8 @@ static void operation_sequencer(PnvSpi *s) break; } } /* end of while */ + /* Update sequencer index field in status.*/ + s->status =3D SETFIELD(SPI_STS_SEQ_INDEX, s->status, seq_index); return; } /* end of operation_sequencer() */ =20 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741701000; cv=none; d=zohomail.com; s=zohoarc; b=jEc+42+x/Dx1hCJqglATkVpIOx8XYP1VB6j5u3PIXpxmvceeJuo95vQRd183wEF0Ti9mALJ5GgmH8/+t5X5cHuLSnLsnVjMW++iM+VV9RTGZwAU8Ry2qlUW5Np+80DuSSMTTOmYbNj6qlRbFepUunFxKhmWVaCOGmmOplxEtk+s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741701000; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=q3BmDWJaQxO3ga2r+rH3p0NW/4tv9mRzlMcun1D9rBI=; b=SvxFST9D3OUDBlz/n3/4T6+jAqxrM1a27ciSoOZ4JdT23Zvvj3Fo15V/3VSOJj5pFH6eeu9fDOnCerWpMneq3DkWphDF9ABXfhKoNv5ADhQMWzsQjXP1hdlh++jVj7uZiyS9V7rOISBHMOuxzRfNGy+aWWGzPlVxJ70yBlGXtoE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741701000391769.0705561076528; Tue, 11 Mar 2025 06:50:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzGR-000802-MB; Tue, 11 Mar 2025 09:03:20 -0400 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 1trzDl-0004tI-6D; Tue, 11 Mar 2025 09:00:42 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDi-0008Un-E5; Tue, 11 Mar 2025 09:00:32 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-224100e9a5cso100846765ad.2; Tue, 11 Mar 2025 06:00:29 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698028; x=1742302828; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=q3BmDWJaQxO3ga2r+rH3p0NW/4tv9mRzlMcun1D9rBI=; b=Bb5Vh8Lg6CUG+QuEXCtK7740+jGENUxDPxEya1jOaUlOJ1LMXZcQP/642zz5O5YGGD yT/9jEiI5CvVaURBwbxtbRUnQSk9o1tglqvE4/BlnVkBYZy9NlJKQ1wp7/2RYLaRurJm K692Sx1/dD2KOUolC3nSC5qWxGK1g9RgZvucc4Ss5Mlt65ds1Ms5YHui5qfiXGARenWZ IGVM9I04zB+uOxLOs6g1Kg1mgI0pjjxy/JwgAeFgDVQVZZkwQ9en07/rsTlLV2Arr5BP l2Dxeene0wzmQPKUrE9Rw5RKU4jQ63pCu7uOCveqC6Dl+wD3kb823QYj6CjlRpHodx6j 87Tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698028; x=1742302828; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=q3BmDWJaQxO3ga2r+rH3p0NW/4tv9mRzlMcun1D9rBI=; b=OaLIpyNN6PrO/UH170pxjxkWF2Kq5Ul3SKqop0FqXg2prs+qwALWFODEkcsexhyMDG 8oBROczBB8e2jJ7wo0chozToKp+mplDD2uMXER16TwM+PBuq2GKLEh6tqANxLNVmGI3p upmfjCLW7VibZ8PhJfShD+L9PeMi0iNqHQy5QK/ZSkyf7bK5etpoj+5feE3fcXC6ZhUa ztsUb+Y/7E+RDUlRey4SNuaqwuOYRoK4GuvsgQjtgJ3lTNBL96B0jVFjQdpd9UwSuq7a 6jT0Ot18k51rEn2tJzTgtWhQNseVkO3+9OtvrsEkRBUUkAU9aQqjbh+rJkqL7HUHMhMs FRjg== X-Forwarded-Encrypted: i=1; AJvYcCWusDzGsR1TW+JCm9bcUATuLJ7AYwJah5WjjzUwjWdc6+H2YA6TfXjKogDh5pO48BoXIta4paDx1g==@nongnu.org X-Gm-Message-State: AOJu0YxzO3/tecyboolXxS3xD2d+BCyHwc9KsvkfPzMOSx9saywVgvYb s7v4W+ticmHOCDzgZvUI8Xv3S96F2A5zErxSLk/e97b2+Jdw+wYSFxGTig== X-Gm-Gg: ASbGnctX3p52xKT45XGYYFmahtIvQp7+fZHUzSMdBbw1KdEbwaupwA/69EAxpdtobws N1EeDNHZ3oKW8v9m0aJS3P3skboKwT1IxqOAw9ktQfm/ANTyMmQK+W4v4rXRipsK+GD827mMzn5 JZCPzEeLxDVl/7qNBU5fmPVHHCw8gG3tUBIkPL1ilfUp/NSoGLiJkyexQcq4MjMmuSmzA8untFY d9T43JP52UASLM/+I67N+Lw5Eaj3jx+jmG2raDbyNUXX2w3VxhFUBjKz52E76XtiIVvvsSEI16T 3cvjP6+xT/XoljRErPU1JlsPWvcsKs9DQAowg4ooE0bWfgzZaGA= X-Google-Smtp-Source: AGHT+IHb56irBhoKneJKzVkcTWD2cD2JK+WC3OxKBGYfFbR7a0+WmGbvRRsobRKDte3B6loA6Ja/6Q== X-Received: by 2002:a17:903:298b:b0:21f:4649:fd49 with SMTP id d9443c01a7336-22428c221dbmr291023675ad.49.1741698027290; Tue, 11 Mar 2025 06:00:27 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Chalapathi V Subject: [PULL 39/72] hw/ssi/pnv_spi: Make bus names distinct for each controllers of a socket Date: Tue, 11 Mar 2025 22:57:33 +1000 Message-ID: <20250311125815.903177-40-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741701003336019100 Content-Type: text/plain; charset="utf-8" From: Chalapathi V Create a spi buses with distinct names on each socket so that responders are attached to correct SPI controllers. Change the bus name to chipX.spi. where X =3D 0.. QOM tree on a 2 socket machine: (qemu) info qom-tree /machine (powernv10-machine) /chip[0] (power10_v2.0-pnv-chip) /pib_spic[0] (pnv-spi) /chip0.spi.0 (SSI) /xscom-spi[0] (memory-region) /chip[1] (power10_v2.0-pnv-chip) /pib_spic[0] (pnv-spi) /chip1.spi.0 (SSI) /xscom-spi[0] (memory-region) Signed-off-by: Chalapathi V Message-ID: <20250303141328.23991-4-chalapathi.v@linux.ibm.com> Signed-off-by: Nicholas Piggin --- hw/ppc/pnv.c | 2 ++ hw/ssi/pnv_spi.c | 5 +++-- include/hw/ssi/pnv_spi.h | 3 ++- tests/qtest/pnv-spi-seeprom-test.c | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index d60574d601..59365370c3 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -2252,6 +2252,8 @@ static void pnv_chip_power10_realize(DeviceState *dev= , Error **errp) /* pib_spic[2] connected to 25csm04 which implements 1 byte transf= er */ object_property_set_int(OBJECT(&chip10->pib_spic[i]), "transfer_le= n", (i =3D=3D 2) ? 1 : 4, &error_fatal); + object_property_set_int(OBJECT(&chip10->pib_spic[i]), "chip-id", + chip->chip_id, &error_fatal); if (!sysbus_realize(SYS_BUS_DEVICE(OBJECT (&chip10->pib_spic[i])), errp)) { return; diff --git a/hw/ssi/pnv_spi.c b/hw/ssi/pnv_spi.c index de33542c35..83221607c9 100644 --- a/hw/ssi/pnv_spi.c +++ b/hw/ssi/pnv_spi.c @@ -1147,14 +1147,15 @@ static const MemoryRegionOps pnv_spi_xscom_ops =3D { =20 static const Property pnv_spi_properties[] =3D { DEFINE_PROP_UINT32("spic_num", PnvSpi, spic_num, 0), + DEFINE_PROP_UINT32("chip-id", PnvSpi, chip_id, 0), DEFINE_PROP_UINT8("transfer_len", PnvSpi, transfer_len, 4), }; =20 static void pnv_spi_realize(DeviceState *dev, Error **errp) { PnvSpi *s =3D PNV_SPI(dev); - g_autofree char *name =3D g_strdup_printf(TYPE_PNV_SPI_BUS ".%d", - s->spic_num); + g_autofree char *name =3D g_strdup_printf("chip%d." TYPE_PNV_SPI_BUS "= .%d", + s->chip_id, s->spic_num); s->ssi_bus =3D ssi_create_bus(dev, name); s->cs_line =3D g_new0(qemu_irq, 1); qdev_init_gpio_out_named(DEVICE(s), s->cs_line, "cs", 1); diff --git a/include/hw/ssi/pnv_spi.h b/include/hw/ssi/pnv_spi.h index 9878d9a25f..6adb72dbb2 100644 --- a/include/hw/ssi/pnv_spi.h +++ b/include/hw/ssi/pnv_spi.h @@ -31,7 +31,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(PnvSpi, PNV_SPI) #define PNV_SPI_REG_SIZE 8 #define PNV_SPI_REGS 7 =20 -#define TYPE_PNV_SPI_BUS "pnv-spi-bus" +#define TYPE_PNV_SPI_BUS "spi" typedef struct PnvSpi { SysBusDevice parent_obj; =20 @@ -42,6 +42,7 @@ typedef struct PnvSpi { Fifo8 rx_fifo; /* SPI object number */ uint32_t spic_num; + uint32_t chip_id; uint8_t transfer_len; uint8_t responder_select; /* To verify if shift_n1 happens prior to shift_n2 */ diff --git a/tests/qtest/pnv-spi-seeprom-test.c b/tests/qtest/pnv-spi-seepr= om-test.c index 57f20af76e..600493c425 100644 --- a/tests/qtest/pnv-spi-seeprom-test.c +++ b/tests/qtest/pnv-spi-seeprom-test.c @@ -92,7 +92,7 @@ static void test_spi_seeprom(const void *data) qts =3D qtest_initf("-machine powernv10 -smp 2,cores=3D2," "threads=3D1 -accel tcg,thread=3Dsingle -nographic " "-blockdev node-name=3Dpib_spic2,driver=3Dfile," - "filename=3D%s -device 25csm04,bus=3Dpnv-spi-bus.2,c= s=3D0," + "filename=3D%s -device 25csm04,bus=3Dchip0.spi.2,cs= =3D0," "drive=3Dpib_spic2", tmp_path); spi_seeprom_transaction(qts, chip); qtest_quit(qts); --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699418; cv=none; d=zohomail.com; s=zohoarc; b=gvbKO+vQVvaLIAMrFmhbAje+se1C+muTwDuBfIEArSw+cT+2heSKsurxJDvS4JTy4bmSCI+rZSlsqBfdDHIyYms5bVVQDbLR0V3OdTaolvuN/tU0vpJohu/nPHZZy9F6nVfnRQkTwznoWsW6F7VvQ8oHsga4oynferSUWz9ZlVs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699418; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=e+hvRNZhyfNMby5k48ebI9t7MyykDhncL1DN8gtvFQA=; b=T5l1vi00w6R4fHcGbumdyTOiIJoX7e7S/RDuUhlKPl6ZNehJTCZ7kyaep8X7OdTH7//l4T8HHxDj34nRqvfAglhxnRdlvz2uRRKscJOmpeJVdrXJGzyv7tkNGi2FRUXHwhT6t+IiuCMAQ68Yp5Wvyxqg8x1EydhyG45pm61PELo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699418139841.5000243615274; Tue, 11 Mar 2025 06:23:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzIv-0003Cz-F6; Tue, 11 Mar 2025 09:05:53 -0400 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 1trzDp-0004v6-Qh; Tue, 11 Mar 2025 09:00:42 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDl-0008WV-Sd; Tue, 11 Mar 2025 09:00:35 -0400 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-2ff784dc055so7175187a91.1; Tue, 11 Mar 2025 06:00:32 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698030; x=1742302830; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=e+hvRNZhyfNMby5k48ebI9t7MyykDhncL1DN8gtvFQA=; b=eSywFVXrP4iijlCcvKDl+XqgBov45nb+yLSZgiY/DyUqwFwPPc+tSzdo/f7aNXs1iw AeXsPhNDgA5AmIGJGPS8BqMPt+U+MehoQJz/gFkTx874Isknio7ycfFiJPdKgEJ3lBq8 yyVva2D3QqFAA1aXF6REiogWSSD4mrkbbai34SjClcmbhRs7F7fwnbGqjxSlewQjSZCu KTqGaUKSPI6crCFNQ9SU5OdcbBEW9kyN/s2ZyBxDBobn80sJ4O1WSo6T8sOB9R8w0hnR 7QwX3eYxnuQn+1mC51fNxENvzYFEAuLN5m9ev/9oqw4hEYw6TaZGSxjxW1k4UtwJajUD SKBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698030; x=1742302830; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=e+hvRNZhyfNMby5k48ebI9t7MyykDhncL1DN8gtvFQA=; b=DMbtECXifVt4/XitHQOktuQyAfdPLGm7wwukdACrKY1IQiBakOsydZcgk7lTYHscOv 7YMTBa6aK30b9nFappL1PW/Gf06Y9YIqCX8XMlW5Ifb3Bx+1/XyKfLWU0d5i3XySmwbP bfQvv0zKrc7l0rowQxFFR+tKje2rEPmNjcydy2gsVtvoJvi0pkj9073oEVhXPOB3I40g m8lJ0NhsunjvmjZQiPgdThxhbkYwKquPkFhkxXPtx6BPU4eGDjg4P/lnS7iw9606YLGi N5H3fXNTyfUKBw/ZTFEsyTiar/jpRMDFH8qsjIzaPzEdWa6IQkFB0OKKcZngrCqZgHhb qvbg== X-Forwarded-Encrypted: i=1; AJvYcCU9RfPREC1G/uoLEsSAMYyyEwbrSgLMDq2Sf92O7LIKRXTMCG++++YaWyVcG7+nSyZKop2HBInNuQ==@nongnu.org X-Gm-Message-State: AOJu0Yz5I05OjwhgJAxowh76v/Kupqt8cReS/G+Z8ep5pypyDREhq5Zh G6vo0c9WMwM6VHDKq58GCbO4OUfaJpztZBzcnvsbxZ1RJKlSPUlZsDLHvQ== X-Gm-Gg: ASbGncuSaMvKlg2hGuua4Btlo9+CgMt1mHG95zKGvJHt4uLqpwUHT274dkat66LMC2c 4zDPKY25fJHF9Gq/2jV2/Axit1hGRw4976zWY0Ju/N7cWjegAak9Mfi6aq1PVTF5hPpBeS+YwnA 9YatzKpz2RDRaxyZtApwghYaRWdN8s4NN9sbcG125wnQMyJ8r5M/r4Vato5z1jy+mqtSfCpQKGs cORxbgC0qjrjhm0QnRYMKWn5utUJ773ztZL3IXi7ji/KoZSwAQMpzaX7QjGw1QV1E+Ukry2xhNh Vj+TWKYbWpVZoV3oaNaORwP3pQL2x+IGSEf+9JWkP4oc6HyOCgW9pHxhSG9Nmg== X-Google-Smtp-Source: AGHT+IGu88eBRybEnsZgPcHrjAlxoFTCJ0W9NxLeLN700ULZI4NP7fp5wZAQOeuXJJgQfk5WJy4Ytw== X-Received: by 2002:a17:90b:528a:b0:2ff:6e72:b8e2 with SMTP id 98e67ed59e1d1-300ff37051bmr4324135a91.31.1741698030344; Tue, 11 Mar 2025 06:00:30 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Chalapathi V Subject: [PULL 40/72] hw/ssi/pnv_spi: Put a limit to RDR match failures Date: Tue, 11 Mar 2025 22:57:34 +1000 Message-ID: <20250311125815.903177-41-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1032.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699420236019000 Content-Type: text/plain; charset="utf-8" From: Chalapathi V There is a possibility that SPI controller can get into loop due to indefin= ite RDR match failures. Hence put a limit to failures and stop the sequencer. Signed-off-by: Chalapathi V Reviewed-by: Nicholas Piggin Message-ID: <20250303141328.23991-5-chalapathi.v@linux.ibm.com> Signed-off-by: Nicholas Piggin --- hw/ssi/pnv_spi.c | 10 ++++++++++ include/hw/ssi/pnv_spi.h | 1 + 2 files changed, 11 insertions(+) diff --git a/hw/ssi/pnv_spi.c b/hw/ssi/pnv_spi.c index 83221607c9..126070393e 100644 --- a/hw/ssi/pnv_spi.c +++ b/hw/ssi/pnv_spi.c @@ -20,6 +20,7 @@ #define PNV_SPI_OPCODE_LO_NIBBLE(x) (x & 0x0F) #define PNV_SPI_MASKED_OPCODE(x) (x & 0xF0) #define PNV_SPI_FIFO_SIZE 16 +#define RDR_MATCH_FAILURE_LIMIT 16 =20 /* * Macro from include/hw/ppc/fdt.h @@ -872,18 +873,27 @@ static void operation_sequencer(PnvSpi *s) rdr_matched =3D does_rdr_match(s); if (rdr_matched) { trace_pnv_spi_RDR_match("success"); + s->fail_count =3D 0; /* A match occurred, increment the sequencer index. */ seq_index++; s->status =3D SETFIELD(SPI_STS_SEQ_FSM, s->status, SEQ_STATE_INDEX_INCREMENT); } else { trace_pnv_spi_RDR_match("failed"); + s->fail_count++; /* * Branch the sequencer to the index coded into the op * code. */ seq_index =3D PNV_SPI_OPCODE_LO_NIBBLE(opcode); } + if (s->fail_count >=3D RDR_MATCH_FAILURE_LIMIT) { + qemu_log_mask(LOG_GUEST_ERROR, "pnv_spi: RDR match fai= lure" + " limit crossed %d times hence requestin= g " + "sequencer to stop.\n", + RDR_MATCH_FAILURE_LIMIT); + stop =3D true; + } /* * Regardless of where the branch ended up we want the * sequencer to continue shifting so we have to clear diff --git a/include/hw/ssi/pnv_spi.h b/include/hw/ssi/pnv_spi.h index 6adb72dbb2..c591a0663d 100644 --- a/include/hw/ssi/pnv_spi.h +++ b/include/hw/ssi/pnv_spi.h @@ -40,6 +40,7 @@ typedef struct PnvSpi { MemoryRegion xscom_spic_regs; Fifo8 tx_fifo; Fifo8 rx_fifo; + uint8_t fail_count; /* RDR Match failure counter */ /* SPI object number */ uint32_t spic_num; uint32_t chip_id; --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699496; cv=none; d=zohomail.com; s=zohoarc; b=MLSg6N+QM3SMu9HoP/vgizlLgxz8dT5xILx1gNffNAcusB4PpXZPjbBxYPjGeQvKr9cqGA/9MZ3gvFR8FfnaMwiVRoYmKC8YqogEWysVJUSPVlqgVAPFk/l1V6tx1F4JXygUZFWvJv7tQOQ3KQ6qui6hcrI6ZyNZCZsnrW1tGX0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699496; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tZ8e0vShkNtIuKOZGNzWODhsrmyTMS8jpNRn157CjZU=; b=OCYSIHpkL+VrwHSF9eiNiJiIuFWR2h4Nz5HMMgYw8f1aROOn3xVF8qbDGA3zVONhREFMDXXJ54GbAdYT1BJTUGuNvqMDKD5LPDacAehZIQfCzvVuEkib2qnhGCbj9Mv0F4LFVjoJYzxTcC+cu8i/Fyn7795c7cDFIbTcpFIfrPI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174169949666665.69356346359757; Tue, 11 Mar 2025 06:24:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzKt-00028d-2L; Tue, 11 Mar 2025 09:07:55 -0400 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 1trzDx-0004zv-Vd; Tue, 11 Mar 2025 09:00:50 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDq-00006S-1t; Tue, 11 Mar 2025 09:00:44 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-2fef5c978ccso8070371a91.1; Tue, 11 Mar 2025 06:00:35 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698033; x=1742302833; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tZ8e0vShkNtIuKOZGNzWODhsrmyTMS8jpNRn157CjZU=; b=VoLqJz/Cm7CDbXqFUPLqUOd7Q23puRPRbYBgZS3bnhPnXGlu17okWYc6sHRpCxf370 fAL12m1kg19v3Qb/hiLAHp/UoUNWihxxqVAbDO1Q4c+Ly5zrOaOXX1y3on72g4b2REzF aeo/Zm6Ix6Il8Iu7M7Ml238vRq4UIFDKuWGUUbEUQLu16HV2FYaUiMuZnmf85gIhMina pP8tGYcuB1+0MBpeYiUN2vjr49XkNs/2f4QRmHiHfdYFR8QCdJUUh/paYJ0XeOlcoUeo 6RRHHkX5tcV8GszxeYUKNSo9dp1FkNa283+VGFwE8UQbDTYhd+S03IU0F+x+EuqqhKu9 gvlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698033; x=1742302833; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tZ8e0vShkNtIuKOZGNzWODhsrmyTMS8jpNRn157CjZU=; b=IGobXPt7zBWFIWjmjd/5Ppc2xWWeG35UoIiqqAPJCNQiplyCAmRyiIrr11rDavEG70 wI+DoPOOiFDJUnxz8BdcQe1hqQK5ioce4nB5qPUeZYh3nfwND9lFAiOW5lu/ULodUFgO fSeCzGqJwnsc7Q9lAwOOstAm9cQXdYoJx6Dpm7Cby/gbTJpj3vX38Lf7QUY5fxIgVtIB kDYnwyFj+Xw3g27rp4D+PogV3PK4M+WTlBh3FY3tdTDy+9Nlr/Axi2CHC9dp+eWL+ZrR h2ejGVr+mL4tpdiHjbSJt5996CZvrHxE+nVUzq0yyJlybBbnt/tA6hrQTdU2O6eYLPg+ 5Vpg== X-Forwarded-Encrypted: i=1; AJvYcCW2UyOnIbtQKHA3pIJ3CuWJXPmCwmqVFQRejh/eOvhz3K4VN73ffKDVZ/KP7lyavP/o6kKDu75+7g==@nongnu.org X-Gm-Message-State: AOJu0YwyZUmdJMzOS59G6Vnyiyi/bNj/Kv5OKwmNwo6A+Wfcv2Gywgp8 rgtIaefELMtdMHCNkc4TNtd4K0wRw6Hqq2+y+exLYLF8+n4+mE3/3f3ROw== X-Gm-Gg: ASbGncsl/9S2vqMu3mqcnmgr6VssuP0wYfuBtsyzd8QfWdfORq9IUERBLuOAsQ9nelv X3d2j6Y5h4nJs/7EzkKzLWi3TNLqyGKcBO1LMf/SJsL3p/LRF5vcEkggElh8iQ/Fm2ZhOLH3XPh +/GCUmx12fWHp/L5fbo0Gqv7CH1xmDggH55WhMyuQvJPoQOX20gmtw12aQxFNHxKOIailqeDfKd xE/xv0pU/PGTqv5RpZvSR07Mm2eRQYiBTRl1d9T7Siu1P6YGhlJiyehOA2aZ/sIKvhFgBlXlNv6 J+AmXMMgRdZl3ZrCJwi8pi8z547HbU+g2g6PKryg2JkVTW6+vwY= X-Google-Smtp-Source: AGHT+IEqcXWS1kF+UEBbIJscupE6OMlrGspwIhQqxXseanccg+qVgpTrd8f9LikehZQg7pqTgEV6/Q== X-Received: by 2002:a17:90a:e7c2:b0:2ff:693a:758d with SMTP id 98e67ed59e1d1-2ff7ceef0famr25700066a91.27.1741698033020; Tue, 11 Mar 2025 06:00:33 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 41/72] hw/ppc/spapr: Restrict CONFER hypercall to TCG Date: Tue, 11 Mar 2025 22:57:35 +1000 Message-ID: <20250311125815.903177-42-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699497920019000 From: Philippe Mathieu-Daud=C3=A9 KVM handles H_CONFER and does not pass it along to QEMU, so only vhyp (as used by TCG spapr) needs to handle it. [npiggin: Add changelog] Signed-off-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250127102620.39159-2-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- hw/ppc/spapr_hcall.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index f987ff323f..4f1933b8da 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -580,6 +580,8 @@ static target_ulong h_confer(PowerPCCPU *cpu, SpaprMach= ineState *spapr, CPUState *cs =3D CPU(cpu); SpaprCpuState *spapr_cpu; =20 + assert(tcg_enabled()); /* KVM will have handled this */ + /* * -1 means confer to all other CPUs without dispatch counter check, * otherwise it's a targeted confer. --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700736; cv=none; d=zohomail.com; s=zohoarc; b=EytKJ8esf8eQhLixai0x53mrPR7bw7vlHjMK1NbSplrOG1uaIe54GgITUodG1v5uKne7wNBaGM87zZTauiNmJGfIuDKX33RB48KSY/mqnnlHqDSjihjpBe3UJNYiEN8cD3mMOvbHk0bIxUvXES6JjeRH93UQVVNZJZ+rqJ9sGfM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700736; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0SOjOhB33VcprDEO41KFUFk52SOqUV2z89oKt7zJj2k=; b=Z2MoQXmPXNhFDGNoMFtOx5RtKGUCiyDDluIElEDqUQ4AwHbwUpSjyphNH6BzmWi3woaH8tcIrbw64qSfQm/Sb14PGjIrjDf/Y8waVG4hU5gHKQinjaRBlzljgfzgprOxAUPXj+hMd0gcU7k25Wl99GQNObTQzQrzTXPYQtIEP2I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741700736013917.3620982553117; Tue, 11 Mar 2025 06:45:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJ0-0003SI-4c; Tue, 11 Mar 2025 09:05:58 -0400 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 1trzDw-0004zj-2t; Tue, 11 Mar 2025 09:00:49 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDs-00006w-EF; Tue, 11 Mar 2025 09:00:43 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-223959039f4so107093655ad.3; Tue, 11 Mar 2025 06:00:37 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698036; x=1742302836; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0SOjOhB33VcprDEO41KFUFk52SOqUV2z89oKt7zJj2k=; b=KMr1duMRe3iB4aMaisXIuLVJodxxkZWcf1mteaP9BR2aANi8AF84JXqAfCJ3gZYyta oLBHKZ8TarBOiS+ld9q75mhNGHj9xf/pEL6BACZHCYHbNMtz1FjDjehd+R7do38xtubG BqovjpnSvBZzz54jZytSAY69+PRYSZARsTZxEiVdI/KRzLomG02fLEGV29q/Jot2rBFf LsXc1lrdIPoTakZx+L1LObRHUuNCY9MiyU+so/UUgTtmI9LDNEJ4RpMgyfb92cskRcOC ii0zOtBHbAKXZoY7WFk3yI9YMpillTbnmTrNtL5aygycA1V30wHHP7FW+/4KQkShB5/o LSfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698036; x=1742302836; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0SOjOhB33VcprDEO41KFUFk52SOqUV2z89oKt7zJj2k=; b=WZkxyca8GRCJwRuSfqFfMGUT2B4YkCPrcjWgpIYBp3/odEcOlPRNsrpDkDjuXxCXJD zpNU3AB88OqGfgSnWFH8AnihYLW+ZWPRlWPevbnwXfR9b4//azzwKY9pIB1y2Kkt6YoA GpHnCNPNbdmoRrTl3Qe3GZVdrXCF9QLc4P2VfK8ynxx4Pcny0596MQfH7Vx/Wcgrd9kw AFg6HoM5OzYZ8g4BzIBx+yc+VWX2LIm9RHtRMvP1YrHK3M3avXO2PvUfPnnT/3GANRFe Uak16ty4Lh0vcGTtyPg2gT13azzjSdxuBlIJoQfQmIM043Uh7i6WsPR0P94R3zy1oBDv BDEw== X-Forwarded-Encrypted: i=1; AJvYcCWEruztmpkhvsiWJnToFsbixJ8MFve91/eazdav/2iqG4ZBkAfrrkoNIC6/2BuNAZF386xAIU2u9A==@nongnu.org X-Gm-Message-State: AOJu0YwM1J+KnEQa0oFoWvuX5J1M8FIJZ1NyAa9qHELrGit4FUpudQAO x8q0SKCWW+jW5zzf4Fx4S7uxsGT/n2BcED8XfaN9whGKLuvVGJHY9Zz10Q== X-Gm-Gg: ASbGnctxRGV5KRQ/bmT1W09sLecOlvQ0vMS9tBn9zzprWqGhe5Bv86Q+jMOEM9IeSdj kEOWeoaTVBKS5W/EBMiDVqdJXMhK0ujdAWZIHoJ/3HIy9lmTTEIWRbUUxKjWI8j5UPum7ZdFENQ W+O6dNjQX3Cm1M4myBvmUYMN4PVorJcpsZYw3Dl3uqRqPw+o3EjWy+vustbMBsvTmIDaCaIx54R VvHpwOvwmMIVqaXsB36gblQtzSlsKgTPGdhmiIG7QlHygzFl1JSdQD/VnJvgnu6vWac0v/kFTYx G9dGi3uxclcXX1qvCkCPM1fyeGmsfhzxWGui03pKuoHmWQ+v0Ts= X-Google-Smtp-Source: AGHT+IHEqSmL9HA6QPp39OII2HSFm1GvK8H36w04DYL7MNdIUNL8CqudgVl32QZt22hc/hIM1yxeNg== X-Received: by 2002:a17:902:fc47:b0:223:5a6e:b20 with SMTP id d9443c01a7336-2242887eb29mr245014615ad.7.1741698035735; Tue, 11 Mar 2025 06:00:35 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, dan tan Subject: [PULL 42/72] ppc/pnv: Add new PowerPC Special Purpose Registers (RWMR) Date: Tue, 11 Mar 2025 22:57:36 +1000 Message-ID: <20250311125815.903177-43-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=npiggin@gmail.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700737849019000 Content-Type: text/plain; charset="utf-8" From: dan tan Register RWMR - Region Weighted Mode Register for privileged access in Power9 and Power10 It controls what the SPURR register produces. Specs: - Power10: https://files.openpower.foundation/s/EgCy7C43p2NSRfR TCG does not model SMT priority, timing, resource controls and status so this register has no effect for now. [npiggin: adjust changelog] Signed-off-by: dan tan Message-ID: <20250116154226.13376-1-dantan@linux.vnet.ibm.com> Signed-off-by: Nicholas Piggin --- target/ppc/cpu.h | 1 + target/ppc/cpu_init.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 682583d1d1..25b1e6d6b0 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -2102,6 +2102,7 @@ void ppc_compat_add_property(Object *obj, const char = *name, #define SPR_PMCR (0x374) #define SPR_440_ITV0 (0x374) #define SPR_440_ITV1 (0x375) +#define SPR_RWMR (0x375) #define SPR_440_ITV2 (0x376) #define SPR_440_ITV3 (0x377) #define SPR_440_CCR1 (0x378) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 54035c7bbb..8d73e11540 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -5773,6 +5773,11 @@ static void register_power9_book4_sprs(CPUPPCState *= env) SPR_NOACCESS, SPR_NOACCESS, &spr_read_generic, &spr_write_generic, KVM_REG_PPC_WORT, 0); + spr_register_hv(env, SPR_RWMR, "RWMR", + SPR_NOACCESS, SPR_NOACCESS, + &spr_read_generic, &spr_write_generic, + &spr_read_generic, &spr_write_generic, + 0x00000000); #endif } =20 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699416; cv=none; d=zohomail.com; s=zohoarc; b=g3yw2pSx5ueoaZhGH7gcDlGrHGNtxH1d+gRZP+GAv+bvqiJjJPHkKrFlHKTOv9plWKMuWHmMoIQBna37WC5QIJfNGVMPPOHpwcUPMTvM9JZiB05BkkA4Q9nuBcdVEvb3j0cSn20wi9ZGCBdp6UkcrYmkxi4mTr4V9vEK/0E1xkQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699416; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ef5JtUmQjY3eZoVQLsqqxOztpN+e+XJ12V25TE9Pgi8=; b=J9B2H0iUVcXFihkhwdK6fZ+x630YpGae0qsUUYzNZYHturccuQr0xobmprCygevA/UJ8bMJIsIlHfr2/SzkFfl1E1F8Qf+3CveSXsXgPlt7qo//eaIeuQd8qqykm01IRowaBEJ9R39dnBOf8J1RTqK8vkCOvev1/zPw30ruJXq4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699416104320.5360064522431; Tue, 11 Mar 2025 06:23:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJK-00045t-Qf; Tue, 11 Mar 2025 09:06:19 -0400 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 1trzDw-0004zk-O4; Tue, 11 Mar 2025 09:00:49 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDt-00007a-Hp; Tue, 11 Mar 2025 09:00:44 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-2ff6e91cff5so7759815a91.2; Tue, 11 Mar 2025 06:00:40 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698039; x=1742302839; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ef5JtUmQjY3eZoVQLsqqxOztpN+e+XJ12V25TE9Pgi8=; b=R5K31FYExGIIdHSgoQ1uFjhDjRnvBSsRdZWjyWL3RtyBIraPc8a8igtKfRyLo6vxkE R7KURS+/OjPnkYOkfowOuYUJ36gaXbBs0P2R0MDDXFhF807gv/Echi0vm3+dXWa8DXhL CWZ4L1K9OE5SAQ8fA4dHRVIRD2zu6sNWntWIqjWhyeXIA1BxwXGs7HQojM4alYN0sEj7 b2+rI/OskHBZ5xIhTz8EOyE1sjju5WWci78Vxm/S2RuSuRQzn3Zv2bY9ui/rB8Snifr3 hE5le4TIT/rXpVeROnIN7Zh286GRzuIrWiQv9/p5XyE0dVwkiD/zzNI6PBALjRqpV8nY dliQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698039; x=1742302839; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ef5JtUmQjY3eZoVQLsqqxOztpN+e+XJ12V25TE9Pgi8=; b=snMy09y3gGb36B8cwi4YctyiZTs47mh24e8m/6MGFEsgG+oVmSrah8h0ueT8dBr2Jw TM8DvWo3UuB5uwSNFwBanj1f/D993ONmDoiYXbQL+t4hfLWsqvgOnsxw1lvz6lX2T419 boebcCi7OGHkAJme45NqVOzRjcC5QemCKkuLUYflafubD6VK/npdrtBYjqWuW+zwjtH2 9XwkBuHZ5ej+Eocsp2fSnbEEU7nRLYa+ft+1VlKUcS86Xl1sOh03tRmRDMNOfxJA/u/Q y9TXmeHiJaem2l884PQ9tJ1P7nItDqHVJwHqAJ9WlKfV9vBWeFgQjHj/6YmKxiMBb3hE Mi5w== X-Forwarded-Encrypted: i=1; AJvYcCURu+umiYqh3qsAl5OugzxgVmvoXRZOS73X55rvPTZadXKCvWwSfs2qDPPam43J79F5dPuQ4sJp9A==@nongnu.org X-Gm-Message-State: AOJu0Yw3MCPysFSy7i4CuGvWjkitcGO9XXXfbXZslOe4R+OAO2CALAr1 Zh257XgEVy9LrzK5Lu6XpHFSbfCGYp5SI2wpFdjPykVyW90Yzz1DzLRntQ== X-Gm-Gg: ASbGncu+TLF7Z1Kw7YJw1p6eNmyeCTe2rr9qDlXpDDM2uHG9n3MBH8bzrym3jZEVK8i OEbPHSv4Hc8qouDd6pUsP12OxCtl4mJJEaq9ywDT4312wWkpNy1KZ7JJV+/X4i51OEs0K1SxSC2 +a6DDIr/KjfzyTXjpSeGF+8TZoK0ITSfBreDEzERM2qFFtfKNU/mSK13efEGaQ8X+ajg1BruWru H9RCH0TILPPn8xseXhbenb+bBb5z1QY/xUgGBbbK+0fejUWOUBC+QnHG60ijxTy4S5PZIf5ZBxi RuibenwzPcwanB/DM2w3U3Vfl/BAitxdePuXxWcwk/lB6oe4wZQ= X-Google-Smtp-Source: AGHT+IH45hJAsbcuERTowHkzKWunADMl6tTLtwrJOii8wJU6Mh69BxSiogcqltCklb7uCL7iO4fkxw== X-Received: by 2002:a17:90a:ec87:b0:2fe:dd2c:f8e7 with SMTP id 98e67ed59e1d1-2ff7ce8fa48mr26297537a91.10.1741698038779; Tue, 11 Mar 2025 06:00:38 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 43/72] target/ppc: Make ppc_ldl_code() declaration public Date: Tue, 11 Mar 2025 22:57:37 +1000 Message-ID: <20250311125815.903177-44-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699417546019000 From: Philippe Mathieu-Daud=C3=A9 We are going to move code calling ppc_ldl_code() out of excp_helper.c where it is defined. Expose its declaration for few commits, until eventually making it static again once everything is moved. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20250127102620.39159-4-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- target/ppc/excp_helper.c | 2 +- target/ppc/internal.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index fde9912230..7ed4bbec03 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -144,7 +144,7 @@ static inline bool insn_need_byteswap(CPUArchState *env) return !!(env->msr & ((target_ulong)1 << MSR_LE)); } =20 -static uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr) +uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr) { uint32_t insn =3D cpu_ldl_code(env, addr); =20 diff --git a/target/ppc/internal.h b/target/ppc/internal.h index 20fb2ec593..46db6adfcf 100644 --- a/target/ppc/internal.h +++ b/target/ppc/internal.h @@ -268,6 +268,8 @@ static inline void pte_invalidate(target_ulong *pte0) #define PTE_PTEM_MASK 0x7FFFFFBF #define PTE_CHECK_MASK (TARGET_PAGE_MASK | 0x7B) =20 +uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr); + #ifdef CONFIG_USER_ONLY void ppc_cpu_record_sigsegv(CPUState *cs, vaddr addr, MMUAccessType access_type, --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699489; cv=none; d=zohomail.com; s=zohoarc; b=lN7O4LdcRBvaXtc9+OXApzC1DuDz5cV/ANGW+8+Vpz8pABg6N4+FT9oeUiX5j9NnSvb5WqvJFTQ6evrqLQ4WABgeIK8EebAaSoKgoiPgR2+MFnQ8bUpcM+4CKI2fL+7EE0bRjhIUAzKPBfRNqS6zm3xmGZUILVx0btwY4MBzTNE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699489; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=REbqXCfa8pgvPbVQj8PRaR6rcvUlPevWe8sa0CWfROg=; b=gL1KTOATgsuZTohdNYAlNHPPorb+elz0B68DQ3f4JPGfzHpIZQFIye9s5oVHWlwV0puMLJ0ksSlncyPc3tiBxOOeFjfsKbhn+83RQz3rLWheIxW2/C+6o80Y3VGdXRUmocCbPh+bn0VZvMPDKG4axMNYhjdmlg3s20Lmp/iDEAU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699489456206.1497126509155; Tue, 11 Mar 2025 06:24:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzG2-0007lU-6r; Tue, 11 Mar 2025 09:02:58 -0400 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 1trzE1-00051Z-OM; Tue, 11 Mar 2025 09:00:51 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzDw-00008I-CB; Tue, 11 Mar 2025 09:00:49 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-2fecba90cc3so10439391a91.2; Tue, 11 Mar 2025 06:00:43 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698042; x=1742302842; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=REbqXCfa8pgvPbVQj8PRaR6rcvUlPevWe8sa0CWfROg=; b=Rq4+J3WxtIk/Pxbh8GjHnUb0rotO7F5rQ/hRuDMRKfXDvwKgDid3bafvcx4EkuV37P rJUf58uNEYrmzWJrvSG0QPSxg9reSmuZH1n8BfHdvaGvYSDVx5iPOAMatnjFBG/H8ioK 0vIiFjcqhq49+4Ia6J8APi26x/x6caqw44Zh4lM8ID8NPcbmFUB01h/FoeoZDiDecnlF PVpA1geBsIh1QYWd7LbJHmdBtfTgeiQweXJduIfj5oK7zzGstxTlurjnQRsEAfCbpMCz xIlRHrE1ZD7+Emf6wVOzZiVIWkm2MNd8NdmFdSq3H2oatFOouKrGEHt0TE2/9SxAdF7a v6QQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698042; x=1742302842; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=REbqXCfa8pgvPbVQj8PRaR6rcvUlPevWe8sa0CWfROg=; b=f+ioq74YE8d0SJ9tinrQ9Vj/iwuppYO5GnG16jv/hELYTCZL/7PXqUmvgemiI1L28L heDQjvcm7OqhxG+d1Lz2VGQafXTafL57wTy8pGsluCnPBMndMuP55ckYvqQnb5ACvIRr UgiiOYSOrmV/oy3gokTyzH+eXZrp//XPyA0RMGdkaxYrIMOqhMMx3ZzpHm77G44wZL6f 9T3wF73V79KfaOg8u1gOV3annIs3bRr4xE8A21nufDMT752epf5e1OeC+Esd/90QhHWk dc1z35+aQuMdRzLK36WN5eYN1s4Z8UJzoKJz0iQP9QOLO6e1mkvDa9YZf/D2docTl41O IOrQ== X-Forwarded-Encrypted: i=1; AJvYcCXS8jckMR1M4XwfDmMZkT1fbSUShQavkca5BO1aq6l5Xlsczr+VJXxPmD6YAbuI1DkzPQX8XBYutQ==@nongnu.org X-Gm-Message-State: AOJu0YzZLcKbxgdKdJO1yFnALQiHadoiIFFCR8vsSYkDjl3riLa4JOPu 1CB//EukC+cBqksXQMDaldK5NcqGZ4zVXm8qOlbG/goP6NEt0i8oHgKqPQ== X-Gm-Gg: ASbGncuY0vpT1EUz1p1xO/ca9HGFXJ93F5iPr4nmFOWSWz5RBkvAyCb4ORsnQER7ZfH uFRVPKLkDLktYd6+MIsenrsUU8ZuTejUyxhMfAEPqIGSr0GFT1yJmSAHkazjJB4L5D0/urOwFhg Q2wOBTBvnk6KuXQR4XgViTXhO14neLWO5QCVFZMqGzZodrxdqBw6JP99vCWwYT1yaSIAnSxuOtf QFfhS2y5Rpw3EofPEvOTc0JJy75RGhV/hMtp0+j0sRjBKDQ2MW0Wwni2rv7EcpPf8eCPdESDlIj gjC8w7c0vruM4SC+dhy5jzcd+tBeOuFMzeIj+QXQecvta4jYR1g= X-Google-Smtp-Source: AGHT+IFe4gxagE/tvsGdhOBDbnrU7b1D6VEvAbxeb6U5V91Du+JBsNh86syAphhju8NEfWrAsmwL2A== X-Received: by 2002:a17:90b:3b52:b0:2f8:49ad:4079 with SMTP id 98e67ed59e1d1-2ff7ce451e3mr25660168a91.6.1741698041806; Tue, 11 Mar 2025 06:00:41 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 44/72] target/ppc: Move TCG specific exception handlers to tcg-excp_helper.c Date: Tue, 11 Mar 2025 22:57:38 +1000 Message-ID: <20250311125815.903177-45-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699490056019000 From: Philippe Mathieu-Daud=C3=A9 Move the TCGCPUOps handlers to a new unit: tcg-excp_helper.c, only built when TCG is selected. See in target/ppc/cpu_init.c: #ifdef CONFIG_TCG static const TCGCPUOps ppc_tcg_ops =3D { ... .do_unaligned_access =3D ppc_cpu_do_unaligned_access, .do_transaction_failed =3D ppc_cpu_do_transaction_failed, .debug_excp_handler =3D ppc_cpu_debug_excp_handler, .debug_check_breakpoint =3D ppc_cpu_debug_check_breakpoint, .debug_check_watchpoint =3D ppc_cpu_debug_check_watchpoint, }; #endif /* CONFIG_TCG */ Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20250127102620.39159-5-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- target/ppc/excp_helper.c | 173 ------------------------------ target/ppc/meson.build | 1 + target/ppc/tcg-excp_helper.c | 202 +++++++++++++++++++++++++++++++++++ 3 files changed, 203 insertions(+), 173 deletions(-) create mode 100644 target/ppc/tcg-excp_helper.c diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 7ed4bbec03..b05eb7f5ae 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -3144,178 +3144,5 @@ void helper_book3s_trace(CPUPPCState *env, target_u= long prev_ip) raise_exception_err(env, POWERPC_EXCP_TRACE, error_code); } =20 -void ppc_cpu_do_unaligned_access(CPUState *cs, vaddr vaddr, - MMUAccessType access_type, - int mmu_idx, uintptr_t retaddr) -{ - CPUPPCState *env =3D cpu_env(cs); - uint32_t insn; - - /* Restore state and reload the insn we executed, for filling in DSISR= . */ - cpu_restore_state(cs, retaddr); - insn =3D ppc_ldl_code(env, env->nip); - - switch (env->mmu_model) { - case POWERPC_MMU_SOFT_4xx: - env->spr[SPR_40x_DEAR] =3D vaddr; - break; - case POWERPC_MMU_BOOKE: - case POWERPC_MMU_BOOKE206: - env->spr[SPR_BOOKE_DEAR] =3D vaddr; - break; - default: - env->spr[SPR_DAR] =3D vaddr; - break; - } - - cs->exception_index =3D POWERPC_EXCP_ALIGN; - env->error_code =3D insn & 0x03FF0000; - cpu_loop_exit(cs); -} - -void ppc_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr, - vaddr vaddr, unsigned size, - MMUAccessType access_type, - int mmu_idx, MemTxAttrs attrs, - MemTxResult response, uintptr_t retaddr) -{ - CPUPPCState *env =3D cpu_env(cs); - - switch (env->excp_model) { -#if defined(TARGET_PPC64) - case POWERPC_EXCP_POWER8: - case POWERPC_EXCP_POWER9: - case POWERPC_EXCP_POWER10: - case POWERPC_EXCP_POWER11: - /* - * Machine check codes can be found in processor User Manual or - * Linux or skiboot source. - */ - if (access_type =3D=3D MMU_DATA_LOAD) { - env->spr[SPR_DAR] =3D vaddr; - env->spr[SPR_DSISR] =3D PPC_BIT(57); - env->error_code =3D PPC_BIT(42); - - } else if (access_type =3D=3D MMU_DATA_STORE) { - /* - * MCE for stores in POWER is asynchronous so hardware does - * not set DAR, but QEMU can do better. - */ - env->spr[SPR_DAR] =3D vaddr; - env->error_code =3D PPC_BIT(36) | PPC_BIT(43) | PPC_BIT(45); - env->error_code |=3D PPC_BIT(42); - - } else { /* Fetch */ - /* - * is_prefix_insn_excp() tests !PPC_BIT(42) to avoid fetching - * the instruction, so that must always be clear for fetches. - */ - env->error_code =3D PPC_BIT(36) | PPC_BIT(44) | PPC_BIT(45); - } - break; -#endif - default: - /* - * TODO: Check behaviour for other CPUs, for now do nothing. - * Could add a basic MCE even if real hardware ignores. - */ - return; - } - - cs->exception_index =3D POWERPC_EXCP_MCHECK; - cpu_loop_exit_restore(cs, retaddr); -} - -void ppc_cpu_debug_excp_handler(CPUState *cs) -{ -#if defined(TARGET_PPC64) - CPUPPCState *env =3D cpu_env(cs); - - if (env->insns_flags2 & PPC2_ISA207S) { - if (cs->watchpoint_hit) { - if (cs->watchpoint_hit->flags & BP_CPU) { - env->spr[SPR_DAR] =3D cs->watchpoint_hit->hitaddr; - env->spr[SPR_DSISR] =3D PPC_BIT(41); - cs->watchpoint_hit =3D NULL; - raise_exception(env, POWERPC_EXCP_DSI); - } - cs->watchpoint_hit =3D NULL; - } else if (cpu_breakpoint_test(cs, env->nip, BP_CPU)) { - raise_exception_err(env, POWERPC_EXCP_TRACE, - PPC_BIT(33) | PPC_BIT(43)); - } - } -#endif -} - -bool ppc_cpu_debug_check_breakpoint(CPUState *cs) -{ -#if defined(TARGET_PPC64) - CPUPPCState *env =3D cpu_env(cs); - - if (env->insns_flags2 & PPC2_ISA207S) { - target_ulong priv; - - priv =3D env->spr[SPR_CIABR] & PPC_BITMASK(62, 63); - switch (priv) { - case 0x1: /* problem */ - return env->msr & ((target_ulong)1 << MSR_PR); - case 0x2: /* supervisor */ - return (!(env->msr & ((target_ulong)1 << MSR_PR)) && - !(env->msr & ((target_ulong)1 << MSR_HV))); - case 0x3: /* hypervisor */ - return (!(env->msr & ((target_ulong)1 << MSR_PR)) && - (env->msr & ((target_ulong)1 << MSR_HV))); - default: - g_assert_not_reached(); - } - } -#endif - - return false; -} - -bool ppc_cpu_debug_check_watchpoint(CPUState *cs, CPUWatchpoint *wp) -{ -#if defined(TARGET_PPC64) - CPUPPCState *env =3D cpu_env(cs); - - if (env->insns_flags2 & PPC2_ISA207S) { - if (wp =3D=3D env->dawr0_watchpoint) { - uint32_t dawrx =3D env->spr[SPR_DAWRX0]; - bool wt =3D extract32(dawrx, PPC_BIT_NR(59), 1); - bool wti =3D extract32(dawrx, PPC_BIT_NR(60), 1); - bool hv =3D extract32(dawrx, PPC_BIT_NR(61), 1); - bool sv =3D extract32(dawrx, PPC_BIT_NR(62), 1); - bool pr =3D extract32(dawrx, PPC_BIT_NR(62), 1); - - if ((env->msr & ((target_ulong)1 << MSR_PR)) && !pr) { - return false; - } else if ((env->msr & ((target_ulong)1 << MSR_HV)) && !hv) { - return false; - } else if (!sv) { - return false; - } - - if (!wti) { - if (env->msr & ((target_ulong)1 << MSR_DR)) { - if (!wt) { - return false; - } - } else { - if (wt) { - return false; - } - } - } - - return true; - } - } -#endif - - return false; -} - #endif /* !CONFIG_USER_ONLY */ #endif /* CONFIG_TCG */ diff --git a/target/ppc/meson.build b/target/ppc/meson.build index db3b7a0c33..8eed1fa40c 100644 --- a/target/ppc/meson.build +++ b/target/ppc/meson.build @@ -14,6 +14,7 @@ ppc_ss.add(when: 'CONFIG_TCG', if_true: files( 'int_helper.c', 'mem_helper.c', 'misc_helper.c', + 'tcg-excp_helper.c', 'timebase_helper.c', 'translate.c', 'power8-pmu.c', diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c new file mode 100644 index 0000000000..3402dbe05e --- /dev/null +++ b/target/ppc/tcg-excp_helper.c @@ -0,0 +1,202 @@ +/* + * PowerPC exception emulation helpers for QEMU (TCG specific) + * + * Copyright (c) 2003-2007 Jocelyn Mayer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ +#include "qemu/osdep.h" +#include "exec/cpu_ldst.h" + +#include "hw/ppc/ppc.h" +#include "internal.h" +#include "cpu.h" +#include "trace.h" + +#ifndef CONFIG_USER_ONLY + +void ppc_cpu_do_unaligned_access(CPUState *cs, vaddr vaddr, + MMUAccessType access_type, + int mmu_idx, uintptr_t retaddr) +{ + CPUPPCState *env =3D cpu_env(cs); + uint32_t insn; + + /* Restore state and reload the insn we executed, for filling in DSISR= . */ + cpu_restore_state(cs, retaddr); + insn =3D ppc_ldl_code(env, env->nip); + + switch (env->mmu_model) { + case POWERPC_MMU_SOFT_4xx: + env->spr[SPR_40x_DEAR] =3D vaddr; + break; + case POWERPC_MMU_BOOKE: + case POWERPC_MMU_BOOKE206: + env->spr[SPR_BOOKE_DEAR] =3D vaddr; + break; + default: + env->spr[SPR_DAR] =3D vaddr; + break; + } + + cs->exception_index =3D POWERPC_EXCP_ALIGN; + env->error_code =3D insn & 0x03FF0000; + cpu_loop_exit(cs); +} + +void ppc_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr, + vaddr vaddr, unsigned size, + MMUAccessType access_type, + int mmu_idx, MemTxAttrs attrs, + MemTxResult response, uintptr_t retaddr) +{ + CPUPPCState *env =3D cpu_env(cs); + + switch (env->excp_model) { +#if defined(TARGET_PPC64) + case POWERPC_EXCP_POWER8: + case POWERPC_EXCP_POWER9: + case POWERPC_EXCP_POWER10: + case POWERPC_EXCP_POWER11: + /* + * Machine check codes can be found in processor User Manual or + * Linux or skiboot source. + */ + if (access_type =3D=3D MMU_DATA_LOAD) { + env->spr[SPR_DAR] =3D vaddr; + env->spr[SPR_DSISR] =3D PPC_BIT(57); + env->error_code =3D PPC_BIT(42); + + } else if (access_type =3D=3D MMU_DATA_STORE) { + /* + * MCE for stores in POWER is asynchronous so hardware does + * not set DAR, but QEMU can do better. + */ + env->spr[SPR_DAR] =3D vaddr; + env->error_code =3D PPC_BIT(36) | PPC_BIT(43) | PPC_BIT(45); + env->error_code |=3D PPC_BIT(42); + + } else { /* Fetch */ + /* + * is_prefix_insn_excp() tests !PPC_BIT(42) to avoid fetching + * the instruction, so that must always be clear for fetches. + */ + env->error_code =3D PPC_BIT(36) | PPC_BIT(44) | PPC_BIT(45); + } + break; +#endif + default: + /* + * TODO: Check behaviour for other CPUs, for now do nothing. + * Could add a basic MCE even if real hardware ignores. + */ + return; + } + + cs->exception_index =3D POWERPC_EXCP_MCHECK; + cpu_loop_exit_restore(cs, retaddr); +} + +void ppc_cpu_debug_excp_handler(CPUState *cs) +{ +#if defined(TARGET_PPC64) + CPUPPCState *env =3D cpu_env(cs); + + if (env->insns_flags2 & PPC2_ISA207S) { + if (cs->watchpoint_hit) { + if (cs->watchpoint_hit->flags & BP_CPU) { + env->spr[SPR_DAR] =3D cs->watchpoint_hit->hitaddr; + env->spr[SPR_DSISR] =3D PPC_BIT(41); + cs->watchpoint_hit =3D NULL; + raise_exception(env, POWERPC_EXCP_DSI); + } + cs->watchpoint_hit =3D NULL; + } else if (cpu_breakpoint_test(cs, env->nip, BP_CPU)) { + raise_exception_err(env, POWERPC_EXCP_TRACE, + PPC_BIT(33) | PPC_BIT(43)); + } + } +#endif +} + +bool ppc_cpu_debug_check_breakpoint(CPUState *cs) +{ +#if defined(TARGET_PPC64) + CPUPPCState *env =3D cpu_env(cs); + + if (env->insns_flags2 & PPC2_ISA207S) { + target_ulong priv; + + priv =3D env->spr[SPR_CIABR] & PPC_BITMASK(62, 63); + switch (priv) { + case 0x1: /* problem */ + return env->msr & ((target_ulong)1 << MSR_PR); + case 0x2: /* supervisor */ + return (!(env->msr & ((target_ulong)1 << MSR_PR)) && + !(env->msr & ((target_ulong)1 << MSR_HV))); + case 0x3: /* hypervisor */ + return (!(env->msr & ((target_ulong)1 << MSR_PR)) && + (env->msr & ((target_ulong)1 << MSR_HV))); + default: + g_assert_not_reached(); + } + } +#endif + + return false; +} + +bool ppc_cpu_debug_check_watchpoint(CPUState *cs, CPUWatchpoint *wp) +{ +#if defined(TARGET_PPC64) + CPUPPCState *env =3D cpu_env(cs); + + if (env->insns_flags2 & PPC2_ISA207S) { + if (wp =3D=3D env->dawr0_watchpoint) { + uint32_t dawrx =3D env->spr[SPR_DAWRX0]; + bool wt =3D extract32(dawrx, PPC_BIT_NR(59), 1); + bool wti =3D extract32(dawrx, PPC_BIT_NR(60), 1); + bool hv =3D extract32(dawrx, PPC_BIT_NR(61), 1); + bool sv =3D extract32(dawrx, PPC_BIT_NR(62), 1); + bool pr =3D extract32(dawrx, PPC_BIT_NR(62), 1); + + if ((env->msr & ((target_ulong)1 << MSR_PR)) && !pr) { + return false; + } else if ((env->msr & ((target_ulong)1 << MSR_HV)) && !hv) { + return false; + } else if (!sv) { + return false; + } + + if (!wti) { + if (env->msr & ((target_ulong)1 << MSR_DR)) { + if (!wt) { + return false; + } + } else { + if (wt) { + return false; + } + } + } + + return true; + } + } +#endif + + return false; +} + +#endif /* !CONFIG_USER_ONLY */ --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699564; cv=none; d=zohomail.com; s=zohoarc; b=SisRPnMb1VMP+LxWvRtnYGb02PXBC+4UFDeXa2ORfBmmf9oN4zJnd5idNzrrL1e0P7y0E0YXwpdvKNavX6nOTGKER8/4kHJ+XLZ5W6efs5S7x+zKrq+OdDN7uP/knPf+3asTwsz2jRKzSh6TIjm3OY/BHIcEh9YhSH3CfvRePcc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699564; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6S9jU22byVS+8eEKHCDnlZgprjWuUh/KidjFhLfhjko=; b=bLLnaRSO6whi5FkdSiWL6FcoKUU5EEt653a2NlqY2sF0ReiSlzx71fMQDmfCiRST0t/g9fHK303skcRfPfNmmTSo77TunNuy5LU7HW0wboaLBZlGp4OzuTM43idC3mr3YLN9JGHoBL4xjFQfmK/chmWB3wdYSjHCsLsFddSfQC4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699564180297.1434846967019; Tue, 11 Mar 2025 06:26:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzGa-00008x-P2; Tue, 11 Mar 2025 09:03:28 -0400 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 1trzE3-000571-73; Tue, 11 Mar 2025 09:00:54 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzE1-00008m-7d; Tue, 11 Mar 2025 09:00:50 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-2feae794508so8085256a91.0; Tue, 11 Mar 2025 06:00:46 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698045; x=1742302845; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6S9jU22byVS+8eEKHCDnlZgprjWuUh/KidjFhLfhjko=; b=g0JGOoSGfuoYUeXAaUG3BJg0XrY7UkTxVo0ysK9C/E1YDXltfl2bnN8D4H8FJiUWQ6 ZKD6PmPOnGnuW6QpDSMs0WiA8GPBv7pVOgVqiwbFhS0ZPt/LL3sh/+/BLYs26Ivd/i9/ 1MXJLdiP53QCEZc+2SECahtLaKfl31CW857/KMzaCp0WC2ASLGO9CFyfWLegFjpuZmIN aV29qdHFwXTxs9qIXde9DwzmPgaY6dI30anBOOt3JzDogbWYe8jBLk1s2kD6jVLPFJLX mPSNzx3+OIfMaItDfJcIDr+KaCGdGOcEOvFOQE/taWJkDuIdZldkN9TmrQtQkikuAJQw DQHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698045; x=1742302845; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6S9jU22byVS+8eEKHCDnlZgprjWuUh/KidjFhLfhjko=; b=kXYySotCYwaWc7JtmxIAMwmvRofNZvH7ksBzM3H+dEUDIAD/lGvvfkXIEs5WtWUY9s SUSdCG9QL9SkrQ3HPZi5h8NoM/E7g7MJl5j/x8zMCoreXdQ5NkWkg1mfBChPmwpL6h2R sai0tXkf+1Y/7RY+v7cmBrVbMxJB+kYy0133gfcYYMAlQUwmHpOVof7AUI4zaLiO9iiy RhBw8g7jMds3bEqtCecc8B9EBY6Mcoop0flL8QErRfZhLtj7gddxXr7jg38tTNe1dCuv g++tYazpXGPLBpb2zM+oz/5zrBK18yVV9TpdC7HaErNYqVame2kwRY6FXzLVPJYcN/iN F8uw== X-Forwarded-Encrypted: i=1; AJvYcCXGW23q1tU5RDkApiUfTAyHEheisuVpVYJ0aaN+3E/ooVEgdvu6Bhz6irVs12QfIzo+MHqe9TvlbQ==@nongnu.org X-Gm-Message-State: AOJu0Yxb1zgVbVE+BrJ0MY913Vge8Rg//s0iqceTFoK9BsNTfekVqZ0W AZaUiSddq1VsYYnk//eMQShW7o2ApUp5gcPAqwnaCjIQfDuq2vs7/XV8+w== X-Gm-Gg: ASbGncuYOhZaqSM2lOV2C+UaNYG2omp3b1gmMyGKIyofAz51bElH+unh07MeUsyPBQ+ xoBeTmIseoTLwg/FS1+Sr3NmyTKaAMqjuLvX5stdF7erJR/bwTnP6rKtdJC7RiWLr1ul5qBvjv1 /VLHLUFpAr7q0gkRdF49sIrKCRwqT07mE82uwn1QXRUtzPmo+4rUV1DQfhlos1PmA13WQL+4FgR e26/3x3rJ8ev2cZZb/RcE7N6mwFhTiqVcBqfMbypqnShWWO3rTAV4MoFk2M1hvDcRcP4xTPdvRy bYfId+RNKcoWMJjWOJ7K5FXe+Q94h3qIJqx1UQqRsaB/D6atHZGCxU6IM/GqBg== X-Google-Smtp-Source: AGHT+IEJNGqwgZToGOe1BXasTksgFUwuhGEsFPva1IxfrTL6K1igtZZvwGwUR4jjkaiHfpQAoTTBJQ== X-Received: by 2002:a17:90b:1c05:b0:2ee:a583:e616 with SMTP id 98e67ed59e1d1-2ff7ce6d543mr27900239a91.9.1741698044790; Tue, 11 Mar 2025 06:00:44 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 45/72] target/ppc: Move ppc_ldl_code() to tcg-excp_helper.c Date: Tue, 11 Mar 2025 22:57:39 +1000 Message-ID: <20250311125815.903177-46-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699566359019000 From: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20250127102620.39159-6-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- target/ppc/excp_helper.c | 21 --------------------- target/ppc/tcg-excp_helper.c | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index b05eb7f5ae..8956466db1 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -136,27 +136,6 @@ static void dump_hcall(CPUPPCState *env) env->nip); } =20 -#ifdef CONFIG_TCG -/* Return true iff byteswap is needed to load instruction */ -static inline bool insn_need_byteswap(CPUArchState *env) -{ - /* SYSTEM builds TARGET_BIG_ENDIAN. Need to swap when MSR[LE] is set */ - return !!(env->msr & ((target_ulong)1 << MSR_LE)); -} - -uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr) -{ - uint32_t insn =3D cpu_ldl_code(env, addr); - - if (insn_need_byteswap(env)) { - insn =3D bswap32(insn); - } - - return insn; -} - -#endif - static void ppc_excp_debug_sw_tlb(CPUPPCState *env, int excp) { const char *es; diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c index 3402dbe05e..6950b78774 100644 --- a/target/ppc/tcg-excp_helper.c +++ b/target/ppc/tcg-excp_helper.c @@ -199,4 +199,22 @@ bool ppc_cpu_debug_check_watchpoint(CPUState *cs, CPUW= atchpoint *wp) return false; } =20 +/* Return true iff byteswap is needed to load instruction */ +static inline bool insn_need_byteswap(CPUArchState *env) +{ + /* SYSTEM builds TARGET_BIG_ENDIAN. Need to swap when MSR[LE] is set */ + return !!(env->msr & ((target_ulong)1 << MSR_LE)); +} + +uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr) +{ + uint32_t insn =3D cpu_ldl_code(env, addr); + + if (insn_need_byteswap(env)) { + insn =3D bswap32(insn); + } + + return insn; +} + #endif /* !CONFIG_USER_ONLY */ --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699608; cv=none; d=zohomail.com; s=zohoarc; b=VRX8JSeBE2yAhq4zdtg2JoYPe4K1DpDXqqLGlOiEDu2Ofbv8iitpTb5AukBLGYqIhgJI9pakrv6CCJJ4QxQEFbwUfR7r5T19WSOTIjsiwr1Sd45YxtlowMte2IpuH+B3gQLDtr4raQ7V/LnNmUHkgU/gvoPIVuzsNr4DHFBOGsA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699608; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9hQkVoYW8C4C1nZdyf/BtCP5nliX3X99Cb593+4du5g=; b=CyR8KLfs2/eQJhdHJpw4ZslB1MXjGUyteu4GnscvXzUb3CQI+ROpvCI55HHBfaKuSHEqZIyRQYqKKuo4QI14Ok8Q2dbYSxlHZYqfREa5gkNCQuEdF8HtG0RMQDBns20TaEf3xVeA2iiUQd6Wzx4CVicD15pwDLQeBREJJQhHNcs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174169960868262.124487337348114; Tue, 11 Mar 2025 06:26:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzFa-0006xO-Ty; Tue, 11 Mar 2025 09:02:26 -0400 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 1trzE4-00057z-GP; Tue, 11 Mar 2025 09:00:54 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzE2-00009A-29; Tue, 11 Mar 2025 09:00:52 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-2ff187f027fso9046295a91.1; Tue, 11 Mar 2025 06:00:49 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698047; x=1742302847; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9hQkVoYW8C4C1nZdyf/BtCP5nliX3X99Cb593+4du5g=; b=eDfIKjgbC3EK/TrN147pmQtrskKRtuJrbvpVJY7T4OJiVu5sXmoECtFWrxW6OS9o0K R5HeIHvuFgFc3e6jyiMH1nhvDRIIFrsCREBqwuf2t73uMJMp4/LWV86+K5KCfmErArkM RdTLnwVvmkdgHUCJhlwJrvRV7SP/4bySlC1wfe0ATLeN9nbB+zxEnpbXh0dGEgYyHqNv nL5s5bKwHysTXM4tYZwrWPmtpGi6N1tO5OUGAnm16UprscJGrevJ3V79DOORVz3yuabP s5GV4FqS0no4HCKJeb/s1Qi+dcIErZxt2lLCGhNGdOkhVbtyNs2Wph22CMbER4ru1HsC iBbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698047; x=1742302847; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9hQkVoYW8C4C1nZdyf/BtCP5nliX3X99Cb593+4du5g=; b=sdobTb9i3f/LW4SVUavfrjTCH+dXFH0MO0cuuGzu8XksHMNe29ZpAuVXry4WMqfvRK xnpD5DnykXu3Mdw5FCtAt7ziJ2Flo3oNEDR1C31ZL5HxVOB0n/QXpI5eTvGIL9xOtDzG xsnD7rvBWJ4NXQepQLcs3Mc4GAoiGS4lu8EswjVsXiBQn6sXa3FkSOdJWHdcvQ3dWO3v f31C7wITXsGjNvqyTibE/w4kcBz5vhzVicNW5srMcFT7GQPMQk0zUf+Fb3/vABXJ9gNy XqsEeJE/QRFHv6WMwHHLgAJgMeKopqLCSlE+73l/l63D4k+Pn5f8xrYk+wyaKY+dcjnJ kleQ== X-Forwarded-Encrypted: i=1; AJvYcCWhK2aCfRzv2756leJTmhuLM+8lI31RPsfEPwZa5hn4gtvgSHaywa/0uBFrf0nOw3SOH0jeuH5iDg==@nongnu.org X-Gm-Message-State: AOJu0Yydugn3LwOqLuO1QglvVzcpOy3K479v8CleckwB0eEn1+XWYKFG +MswCm9uQ7HPWVgRJBt8h7zg7mMbd4wVjnXqVKW3tC8om9qV60qTSKRxzA== X-Gm-Gg: ASbGnctuSpOmoWTpTIwttihpmRMF2rGR9JdQ7LdOuHU4V8lLxK9wT4TtHTSpAhAnBnP mVP3EKt0if0cpNw2Dmyb0yh86hfP2AZ74S92DXMGVJmIkDA9UtooGY9ZcOMwuUoBmqZlhdIxgzn S4Uat8WGnUWnqyRSgL0V9UjQoejRN2Pi0knceMMpScgdv8WonwGKvmEHIeRBIuifo2+Ij+KR4Xq caDmcRcZZMzS0DApW6rCgy4zgCDiNATV9jfEZxU/R6CQDdRnQukpwpv68VNjbcqzOG1SHYsVYjK oyi6qE/+BpwOABN3PO2SKTfFQlGm6MeUn1oqzDCOuXOgkvIxboo= X-Google-Smtp-Source: AGHT+IEQ5vWLyxKrkPdFANZhmP0hlFYINaCgpY7ahdt7nD9w+s45rEgz72q1SOQAueIKMEHSrqgTeQ== X-Received: by 2002:a17:90b:1f8c:b0:2fa:562c:c1cf with SMTP id 98e67ed59e1d1-301004f7fb3mr4645081a91.1.1741698047502; Tue, 11 Mar 2025 06:00:47 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 46/72] target/ppc: Ensure powerpc_mcheck_checkstop() is only called under TCG Date: Tue, 11 Mar 2025 22:57:40 +1000 Message-ID: <20250311125815.903177-47-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699609650019100 From: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250127102620.39159-7-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- target/ppc/excp_helper.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 8956466db1..b08cd53688 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -19,6 +19,7 @@ #include "qemu/osdep.h" #include "qemu/main-loop.h" #include "qemu/log.h" +#include "system/tcg.h" #include "system/system.h" #include "system/runstate.h" #include "cpu.h" @@ -30,7 +31,6 @@ #include "trace.h" =20 #ifdef CONFIG_TCG -#include "system/tcg.h" #include "exec/helper-proto.h" #include "exec/cpu_ldst.h" #endif @@ -443,13 +443,11 @@ void helper_attn(CPUPPCState *env) static void powerpc_mcheck_checkstop(CPUPPCState *env) { /* KVM guests always have MSR[ME] enabled */ -#ifdef CONFIG_TCG if (FIELD_EX64(env->msr, MSR, ME)) { return; } - + assert(tcg_enabled()); powerpc_checkstop(env, "machine check with MSR[ME]=3D0"); -#endif } =20 static void powerpc_excp_40x(PowerPCCPU *cpu, int excp) --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741702451; cv=none; d=zohomail.com; s=zohoarc; b=E/FgnvBjw4UpXV/LSSxTfvZ5hQo7QCDw8syhO9IlVgbJMxXoSUhkVeepaTXcWY2DI1AeswQOsUB1MeumrgyJQsNOnXk8002izCA+pFXaRuWykkxtHagSlm+BmkpdGsrXJdQFT82cc0HFLV4kVQ3ZBgsyyVGBTI1EuXTd/ZLjfCc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741702451; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VyPpxpR1LPgC7kHmIhSLHr8dyizfyqPn+5SkC4Qa1kM=; b=XkMnsbX9OOh0kd6/mjrMN2c2Pj5KbLgpi5NHbsVXKfEsqvXF3zo7DbRFRL7kgwP01flMUSQxh+anKDyDAtZg272xf3TcLV604je1r/TqUBH+s6VdrBw5I2wuDwnwEb43tpVJqF0e6EcpCmBJM9W0+FVpY3/PeCZ/vGgKX4YPJdA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174170245138287.46709860200428; Tue, 11 Mar 2025 07:14:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJN-0004B4-Nv; Tue, 11 Mar 2025 09:06:22 -0400 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 1trzEB-0005HS-O1; Tue, 11 Mar 2025 09:01:04 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzE4-0000AK-NB; Tue, 11 Mar 2025 09:00:58 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-224341bbc1dso67994515ad.3; Tue, 11 Mar 2025 06:00:51 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698051; x=1742302851; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VyPpxpR1LPgC7kHmIhSLHr8dyizfyqPn+5SkC4Qa1kM=; b=eb69PDmc6vgFL5ZGMpEkb/6i2Vb6ANHUT0/1zgouWOqdAJIZMQmqTrjh1BuBT6V+ua aSwtkdo7d7cm2cise4vFKrUK9eZgrvNYCuTS9SQ34kQHWt+LTAErsw+GdZyDC+1a7AYv jeGDJEgmU7mEaSGEzf89rLqgKLG4QkPJwQQ+ewqYfvQ6gEv6LoNltHtglWnZCnIqZ+Cj /vI3denqz7CA9Zl5wS5k23382xW+uImEslHyMAxfDti/i6lMh8/IItJtbiJoOPm7B6u1 BmhySgYv766x1l3XPSjgWwvGxR6ONRBzlWOfpD/XcvIuKUuXNLr7KNLGbzs16jU33FlU Rd6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698051; x=1742302851; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VyPpxpR1LPgC7kHmIhSLHr8dyizfyqPn+5SkC4Qa1kM=; b=dBLpFqJxPXPy+2Kmi6Ky0ZjVAx/RpSKjVlZWPyQE26NFywZZMZtOscK9sYG9LuuBCp ott9VHRo6xBu7Xbwdx8Bi39i6ziIZE85RHSxs+tzZ3dM9qppTWLF15ic2L8PliNlapSz W9yeUpemkPZXPaLfmx2cRp6GDAdNid7yJLVoJKP+8Va8rXOlsN7rhbmUquh495r216T0 DNyH7HouvDwi/s2i3RlHcNSYco1+eqEkvZ8MRg4Pz+AMghXMP4bzdlQ7YsugRDYrmwAA 92nspWVqbaGj7Kmpl3q/bHK5WitawxBK9yR4+3hu3RYyw4Tbk40VrdSX3cRwAoDVi10H 4xwA== X-Forwarded-Encrypted: i=1; AJvYcCXohdBXpmIkIppv/mAraqR+QnWhjykf7WOHbxBDgmK4qJyZf1l/mMoRlqtW6jWGGVH0z7lL2m06gQ==@nongnu.org X-Gm-Message-State: AOJu0Yz4k3Y8ih8Uotb6UvBN1Gnp4/iPYxD8CrH9ewlRFxS+GxJ9QHrJ jzYgtTH0dEtZCvW2KF7pUkkwezi1/dXtvNAYwv1F3LbvPr5Y0FvNiPlwrA== X-Gm-Gg: ASbGncti2/TSZvvHusWKJGyPkg8dMIZDgt2utdFE/6MIV9NOVTkgc7/4JCXs412q4WL 4WDXBQKscmNi81SVIdPFfeo7PFiY3JvrED7LfbgNcVJ+OwmYYTt2JB67Ougsym2xxYEn+0lQ2jc y+AuakrGvwAenWjxK3LLwC9ogU4OObuyjj2EwYaJhFyripNlRSHLRYpBkQFVScmWO4VdZd1RL9T cug2PUMdZ26nsDyvmVQ69Ueyumm/9zDBZR2qQPyrO4JF1N8OKDPi3qPQER7TgE5jopV+FlDeu92 h+kHVQw3jSZvDcvCXHB81940gnhTJ5uVpEHIPhU1QGTlsCjgYXY= X-Google-Smtp-Source: AGHT+IG3/dJF0uCdNybHet8gcnCbHhEvUcYDAyybd/VVNwW6hC8T/djteCM/ofz2DtXmA4DQfaZzJQ== X-Received: by 2002:a17:902:c94d:b0:220:c066:94eb with SMTP id d9443c01a7336-22592e407damr48788845ad.25.1741698050538; Tue, 11 Mar 2025 06:00:50 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 47/72] target/ppc: Restrict powerpc_checkstop() to TCG Date: Tue, 11 Mar 2025 22:57:41 +1000 Message-ID: <20250311125815.903177-48-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741702453190019000 From: Philippe Mathieu-Daud=C3=A9 Expose powerpc_checkstop() prototype, and move it to tcg-excp_helper.c, only built when TCG is available. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20250127102620.39159-8-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- target/ppc/excp_helper.c | 26 -------------------------- target/ppc/internal.h | 4 +++- target/ppc/tcg-excp_helper.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 27 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index b08cd53688..236e5078f5 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -400,32 +400,6 @@ static void powerpc_set_excp_state(PowerPCCPU *cpu, ta= rget_ulong vector, } =20 #ifdef CONFIG_TCG -/* - * This stops the machine and logs CPU state without killing QEMU (like - * cpu_abort()) because it is often a guest error as opposed to a QEMU err= or, - * so the machine can still be debugged. - */ -static G_NORETURN void powerpc_checkstop(CPUPPCState *env, const char *rea= son) -{ - CPUState *cs =3D env_cpu(env); - FILE *f; - - f =3D qemu_log_trylock(); - if (f) { - fprintf(f, "Entering checkstop state: %s\n", reason); - cpu_dump_state(cs, f, CPU_DUMP_FPU | CPU_DUMP_CCOP); - qemu_log_unlock(f); - } - - /* - * This stops the machine and logs CPU state without killing QEMU - * (like cpu_abort()) so the machine can still be debugged (because - * it is often a guest error). - */ - qemu_system_guest_panicked(NULL); - cpu_loop_exit_noexc(cs); -} - #if defined(TARGET_PPC64) && !defined(CONFIG_USER_ONLY) void helper_attn(CPUPPCState *env) { diff --git a/target/ppc/internal.h b/target/ppc/internal.h index 46db6adfcf..62186bc1e6 100644 --- a/target/ppc/internal.h +++ b/target/ppc/internal.h @@ -289,7 +289,9 @@ void ppc_cpu_do_transaction_failed(CPUState *cs, hwaddr= physaddr, void ppc_cpu_debug_excp_handler(CPUState *cs); bool ppc_cpu_debug_check_breakpoint(CPUState *cs); bool ppc_cpu_debug_check_watchpoint(CPUState *cs, CPUWatchpoint *wp); -#endif + +G_NORETURN void powerpc_checkstop(CPUPPCState *env, const char *reason); +#endif /* !CONFIG_USER_ONLY */ =20 FIELD(GER_MSK, XMSK, 0, 4) FIELD(GER_MSK, YMSK, 4, 4) diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c index 6950b78774..93c2d6b5a0 100644 --- a/target/ppc/tcg-excp_helper.c +++ b/target/ppc/tcg-excp_helper.c @@ -17,7 +17,9 @@ * License along with this library; if not, see . */ #include "qemu/osdep.h" +#include "qemu/log.h" #include "exec/cpu_ldst.h" +#include "system/runstate.h" =20 #include "hw/ppc/ppc.h" #include "internal.h" @@ -199,6 +201,32 @@ bool ppc_cpu_debug_check_watchpoint(CPUState *cs, CPUW= atchpoint *wp) return false; } =20 +/* + * This stops the machine and logs CPU state without killing QEMU (like + * cpu_abort()) because it is often a guest error as opposed to a QEMU err= or, + * so the machine can still be debugged. + */ +G_NORETURN void powerpc_checkstop(CPUPPCState *env, const char *reason) +{ + CPUState *cs =3D env_cpu(env); + FILE *f; + + f =3D qemu_log_trylock(); + if (f) { + fprintf(f, "Entering checkstop state: %s\n", reason); + cpu_dump_state(cs, f, CPU_DUMP_FPU | CPU_DUMP_CCOP); + qemu_log_unlock(f); + } + + /* + * This stops the machine and logs CPU state without killing QEMU + * (like cpu_abort()) so the machine can still be debugged (because + * it is often a guest error). + */ + qemu_system_guest_panicked(NULL); + cpu_loop_exit_noexc(cs); +} + /* Return true iff byteswap is needed to load instruction */ static inline bool insn_need_byteswap(CPUArchState *env) { --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741702352; cv=none; d=zohomail.com; s=zohoarc; b=bROqwb8yFAT0ubBAxcMdk2FiSeyWdT3J0LN24/fpBgjG3DFIboZ4FIkKtB0t0XuieSC0G6LsUEdvIHEXjCodhKIVwEhZSQ6tasOijAiVHwC0t3SNIvB6ARC5t1Z4b/yKULozVDt7tBMvNYRv0DisQHdOAYb+IUnKDF4f8h6KyuQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741702352; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JXbLVl+GmIzuW1zJgw//SH32S1N1RiaYQUubYyQlPG0=; b=AkMQQDKE2GGtWlVDqh0Xym2jNHgflfqC4dVEjmhVNeFmiynLUlqwYmYqhd5MpiPJLzqDb/rrg2aBvV7Z0Iwtgbuno/M07AkR2x8Ms6ALCv0N3aNjzARu+ecGXmxc1PmfyK1xEud6IXF3TZZCJMvBaBUKJf5pHrn3HTmMJ3K3Pkk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741702352562870.5197353671098; Tue, 11 Mar 2025 07:12:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzHM-00015x-O9; Tue, 11 Mar 2025 09:04:28 -0400 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 1trzED-0005Ng-Kz; Tue, 11 Mar 2025 09:01:06 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzE7-0000Aj-Ou; Tue, 11 Mar 2025 09:01:01 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-2ff615a114bso9412283a91.0; Tue, 11 Mar 2025 06:00:54 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698053; x=1742302853; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JXbLVl+GmIzuW1zJgw//SH32S1N1RiaYQUubYyQlPG0=; b=Bh/r8up3aPDla4svFh8HanutVZTxATTXNNt3bC7Xbc05twUzQuIrWR4oJMua9uuvw3 sn67IRL0MbaeWBPCoYqL6YsM4w8nRNLFz6nERJ7KOiyrdnbfNRi5qe43IATvf/y8DOw7 owkYpoiBPMKrWUaYwNdtlHz6A6ahDNIkqYvxZYilthWz2KnEBhaKX2UOFae9yoLPIwp7 h+qCX/X4D/J8DDLzjbfkje5KuUISAsZeV0ykw5HBE8eq4/VYEl0M2CnkmU2q4w5Nt66L IhJ0kjh/Kn8voRpFhsHvGiLzVWS3NslFkRZtxqRsD5zBfPkFflYFGL9mM0U/q/QG1OFg 1yLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698053; x=1742302853; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JXbLVl+GmIzuW1zJgw//SH32S1N1RiaYQUubYyQlPG0=; b=Cc2vnNybVBggWjFFw8G6lXZdltllyHf9a1GRF8jII9A/L+lwmYBMyyJDlyyFKukkSe I6lgVod2DXvvY4aakT1zRb0SWqEOTJpkz1TMJF8x6NNe2YwoJVduMwH801x+NCs3uLV8 zhHlhIwcdLK8xTmal+Dh2VRUKnldl/Pzbw366jpgUqtWIXBsgVygb+Y3v8b0E1uLFGdz VtxExglvg3b3BzIG4L+YF1ig4COrZdLtWIJcdFP//YoL1zjtidvuTX5IhwHoABXzhbYg guVI/gcw/+53ejYKhOSZGqB4X9XRoAQpf903gkZfoXOXaI05IxI8tUpQGPkNjzbZp3BJ W2YQ== X-Forwarded-Encrypted: i=1; AJvYcCVz9xEFVrOrAYYC15wUf6rDh6dtqgXZ897imX/glH4vg/8l6pXUz6ZRRCPYV53EXk88rD7C91Y9Dw==@nongnu.org X-Gm-Message-State: AOJu0Yz/Y2i6fvNEyOps6rFDdke4VQvIGSWRlWbuteewvxIZvy0wopsB QzBz2jY4oS0A/RZ0/ZduZ/0msZlfZXgWh5Slo+wJXsREWRC01C6dVemW9A== X-Gm-Gg: ASbGnctvXzxkaYfQ2/4CweMyFAbto4I9W5YmyOAE83YzCt/iwkmzPipF1SjRBpKjzus C/suJbNBz1cIRzIRqwgHqLZcvti8LQKtZm7ecrROLwZaj6/tsuYWZh74fbeuZ/rWFHCmIGFz3S+ zZwpDjhGDryMatAKYwqyIBoBoMLtJ4AP2fXs20i6fQN1E6rNb1E2e5lJTzzjNrP+VgEDo88jjzT /AXI6gvtMuYI+tWfPOZSUAodfHK/XyjIga+jS5P0dWRESVXhR4447BjhTtCnPdlqakEY8wGcw5W plCroTl5+yzbr/kQ9/1rXEVo33pYPDSz+VQw41AAGT48BNX+pQY= X-Google-Smtp-Source: AGHT+IHnqpZUL1uuPGF2HHgzmnk1DrgtTaZH/qHHRmSOFnKUqmV8NiMImsPjDSvzrVxu//xlhETawg== X-Received: by 2002:a17:90b:50c7:b0:2fa:2268:1af4 with SMTP id 98e67ed59e1d1-3010051c043mr4492197a91.7.1741698053591; Tue, 11 Mar 2025 06:00:53 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 48/72] target/ppc: Remove raise_exception_ra() Date: Tue, 11 Mar 2025 22:57:42 +1000 Message-ID: <20250311125815.903177-49-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741702354296019100 From: Philippe Mathieu-Daud=C3=A9 Introduced in commit db789c6cd33 ("ppc: Provide basic raise_exception_* functions"), raise_exception_ra() has never been used. Remove as dead code. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20250127102620.39159-9-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- target/ppc/cpu.h | 2 -- target/ppc/excp_helper.c | 6 ------ 2 files changed, 8 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 25b1e6d6b0..505b589714 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -2756,8 +2756,6 @@ static inline void cpu_get_tb_cpu_state(CPUPPCState *= env, vaddr *pc, #endif =20 G_NORETURN void raise_exception(CPUPPCState *env, uint32_t exception); -G_NORETURN void raise_exception_ra(CPUPPCState *env, uint32_t exception, - uintptr_t raddr); G_NORETURN void raise_exception_err(CPUPPCState *env, uint32_t exception, uint32_t error_code); G_NORETURN void raise_exception_err_ra(CPUPPCState *env, uint32_t exceptio= n, diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 236e5078f5..9e1a2ecc36 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -2528,12 +2528,6 @@ void raise_exception(CPUPPCState *env, uint32_t exce= ption) raise_exception_err_ra(env, exception, 0, 0); } =20 -void raise_exception_ra(CPUPPCState *env, uint32_t exception, - uintptr_t raddr) -{ - raise_exception_err_ra(env, exception, 0, raddr); -} - #ifdef CONFIG_TCG void helper_raise_exception_err(CPUPPCState *env, uint32_t exception, uint32_t error_code) --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699320; cv=none; d=zohomail.com; s=zohoarc; b=lhPa36rbukDg8bH67855npGwjPvNdbbKUr/A2Qcj8i4b5q7v7vZs/WZmCLYt1XnNfltwje5IhJgOmejyej3Hwz02mFDwU4gUD+S5N/N9b1xZb+kdzU0EXJeomR5r7sYox2jeYfa7hYHpNFLSfzGt/6aLXM2jTBYf373Mc+4ykrA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699320; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6QcWNxidF+8F14IOmySk+2TS0qLc2Hl5I2PiCaOol8E=; b=JMWNU5uUaWuTVgA87t/LxJGupz12rq7soOSVkPtz5vAGwreWQGRt1D+IF6QT4gh+ZgS7l5yENxKCvMN4f455pA4svTqFIaw3egDj8j7EdmTO5Zb0RFNO44qHJ7iSv3LsPgGMy/VG3uvI1w+dNcos3TTOnwXwh5DsucvcpC76fhM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699320199490.15679872674286; Tue, 11 Mar 2025 06:22:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJV-0004Zz-Ew; Tue, 11 Mar 2025 09:06:29 -0400 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 1trzEE-0005No-U3; Tue, 11 Mar 2025 09:01:06 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEA-0000B8-IC; Tue, 11 Mar 2025 09:01:01 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-2fa8ac56891so8062867a91.2; Tue, 11 Mar 2025 06:00:57 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698056; x=1742302856; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6QcWNxidF+8F14IOmySk+2TS0qLc2Hl5I2PiCaOol8E=; b=eL5sZd0Jnn1SuZ1B9g0xrkRT4NCcdK08rkgHNLqdvTYCusg3AYFvYdxXknsQhuUtPt aF0UR2o/xHHt4rxesnUcBiBev0AiAPFaXkLi3RuSXV8Y8bShvTyZ5lKLAqtj9ugcDEY0 jsuFgqKfa/5Y+t1k+bDG1LGTff3+68NJo3/Ob2v1EE9I4kt/MDDflWO0weRoQ3iY6J6o DlCX+z9nTf4Ub+OCXaLzc9dcx7L0KeXOOHWEcvEqZjHOnwE/Mdt90uarTNWZS788nY5n VRmjfnzjWrEWjEPY1nA8EXij5qMsQEUESlZF76w+xx5I5zZqTlsEDNE8EUKoeCWOC3tA n4PA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698056; x=1742302856; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6QcWNxidF+8F14IOmySk+2TS0qLc2Hl5I2PiCaOol8E=; b=FrUVxUemX+CGE0amQwJBx8Ot5jiWZ9AJOZ2gqPrLWSs/h7546B4hxRwg3yUbBFkqGO QZSaCyUXKdef5Jm1sUnWxwPYu6qR3TG0FbekgzvnPatPFzb7GKZswkeLojEfJ19lAODx TVqlMQMgW6m1P+s3ix1N76+a2jim1lLFGXabzrvqfhHS6AKq3XbNLMON3by64i1+osxW KsTm+2WBqqfjZLOnFwVgXExRcFU5BXbOIRBQG18C1KR2LIKuSu6NKj3RSfJBaoLDPSjI UrXqzi/jgbGLyb4/jxZPhaLsOCNCf08MPrBoKuynlsKjDwiwN+5FYm8ie5TXSqC4thi1 LFDQ== X-Forwarded-Encrypted: i=1; AJvYcCULCnGTy5mGZ+3n8+80znvvFk19n3GDRiXuUJY4iGkNwQC9i2q4XJlUGyec0P3UuV6FlgvgqXpeOw==@nongnu.org X-Gm-Message-State: AOJu0Yy+l+qLGvCJTuBJiZ7uniBbcYQdVjGMJ6cfEVLJ4JRGhAs6hdJw svo1AqezRV1KKkUBVnUYZffZXg8JotNvhGTBL0f+KzepErb5uSokQ7AlNg== X-Gm-Gg: ASbGncvozUsh/PaXmXVEumBNcc/OtCDxcwGWfd8YeWtWTmYc7wuJb8lwtpRUmlJrrkI /nN0D1F4mLr6LkpQKloTsxJJn1PfEoGydd2Vl/5wf3+bqQcfGHjermFwLsRupqmSYgudZVxRkIS /9m25MgHPm5jVa5I8M6b4DWdvJft9YALXx71hQLLGHNiBvbjOiDZNJLojsTK+Glp5LIiEuc5XNd KGAEIcic06MeypcFnrC33yuKWLfvDgO8WahcSwiyQ/Ve+Zu/HTfl4WsNkk8dVZkd+Mv/HdA6P05 B4ENXa3CABmUxQPVK4YbzXneJAHaJPQhS7uFTjMr03U4By+BKD4= X-Google-Smtp-Source: AGHT+IHCy4rvVri/vTa/rnjuzFdLf5mF5P6ijmWnVC0Tsoonsvdoe3C9wE8weJlK9fPlu2zNDGd++Q== X-Received: by 2002:a17:90b:278f:b0:2f7:4cce:ae37 with SMTP id 98e67ed59e1d1-2ff7ce8958fmr30255905a91.18.1741698056295; Tue, 11 Mar 2025 06:00:56 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 49/72] target/ppc: Restrict exception helpers to TCG Date: Tue, 11 Mar 2025 22:57:43 +1000 Message-ID: <20250311125815.903177-50-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699321173019100 From: Philippe Mathieu-Daud=C3=A9 Move exception helpers to tcg-excp_helper.c so they are only built when TCG is selected. Preprocessor guards are added for some helpers unused when CONFIG_USER_ONLY. [npiggin: mention USER_ONLY change] Signed-off-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20250127102620.39159-10-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- target/ppc/excp_helper.c | 34 -------------------------------- target/ppc/tcg-excp_helper.c | 38 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 9e1a2ecc36..6a12402b23 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -2504,41 +2504,7 @@ bool ppc_cpu_exec_interrupt(CPUState *cs, int interr= upt_request) =20 #endif /* !CONFIG_USER_ONLY */ =20 -/*************************************************************************= ****/ -/* Exceptions processing helpers */ - -void raise_exception_err_ra(CPUPPCState *env, uint32_t exception, - uint32_t error_code, uintptr_t raddr) -{ - CPUState *cs =3D env_cpu(env); - - cs->exception_index =3D exception; - env->error_code =3D error_code; - cpu_loop_exit_restore(cs, raddr); -} - -void raise_exception_err(CPUPPCState *env, uint32_t exception, - uint32_t error_code) -{ - raise_exception_err_ra(env, exception, error_code, 0); -} - -void raise_exception(CPUPPCState *env, uint32_t exception) -{ - raise_exception_err_ra(env, exception, 0, 0); -} - #ifdef CONFIG_TCG -void helper_raise_exception_err(CPUPPCState *env, uint32_t exception, - uint32_t error_code) -{ - raise_exception_err_ra(env, exception, error_code, 0); -} - -void helper_raise_exception(CPUPPCState *env, uint32_t exception) -{ - raise_exception_err_ra(env, exception, 0, 0); -} =20 #ifndef CONFIG_USER_ONLY void helper_store_msr(CPUPPCState *env, target_ulong val) diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c index 93c2d6b5a0..268a161459 100644 --- a/target/ppc/tcg-excp_helper.c +++ b/target/ppc/tcg-excp_helper.c @@ -19,15 +19,53 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "exec/cpu_ldst.h" +#include "exec/exec-all.h" +#include "exec/helper-proto.h" #include "system/runstate.h" =20 +#include "helper_regs.h" #include "hw/ppc/ppc.h" #include "internal.h" #include "cpu.h" #include "trace.h" =20 +/*************************************************************************= ****/ +/* Exceptions processing helpers */ + +void raise_exception_err_ra(CPUPPCState *env, uint32_t exception, + uint32_t error_code, uintptr_t raddr) +{ + CPUState *cs =3D env_cpu(env); + + cs->exception_index =3D exception; + env->error_code =3D error_code; + cpu_loop_exit_restore(cs, raddr); +} + +void helper_raise_exception_err(CPUPPCState *env, uint32_t exception, + uint32_t error_code) +{ + raise_exception_err_ra(env, exception, error_code, 0); +} + +void helper_raise_exception(CPUPPCState *env, uint32_t exception) +{ + raise_exception_err_ra(env, exception, 0, 0); +} + #ifndef CONFIG_USER_ONLY =20 +void raise_exception_err(CPUPPCState *env, uint32_t exception, + uint32_t error_code) +{ + raise_exception_err_ra(env, exception, error_code, 0); +} + +void raise_exception(CPUPPCState *env, uint32_t exception) +{ + raise_exception_err_ra(env, exception, 0, 0); +} + void ppc_cpu_do_unaligned_access(CPUState *cs, vaddr vaddr, MMUAccessType access_type, int mmu_idx, uintptr_t retaddr) --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699923; cv=none; d=zohomail.com; s=zohoarc; b=b3WNtidh4juqb1HK5S2iiEjcZNiWr4g2Er4esjmOUswk1WTpGcPTI3AmtEOF+KHAJeRhzNotWPpGeGseAQNOgOO+XmRHlx9nHiQGqOM5XdGgMB/Ri8FiOsrvidZEICvWzSgJDptjpEsIjF1+WkpvrWrHjRm5CmYS+wqrVAvmLbM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699923; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Biw+0LaKs2HJdMoWQD130jxziht29GfeWu2Z9l8GRBs=; b=JU/n7v8ghsZEnXViMjWnCD8u08+uJAEsBCHWBqBh4YQakZOIKu1VVebRY8rjltT8URdFyNUb6/fs/x53l87bq8427ddsAiwGMIQR+fitQhjgLryx3QPjku37adEyxYPN0A8mT6dww8+8QCmDJMH0BamW6RKljEr0HhOykfM0pD0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699923016461.25281568597484; Tue, 11 Mar 2025 06:32:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzI6-0001f3-31; Tue, 11 Mar 2025 09:05:03 -0400 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 1trzEI-0005QP-Qa; Tue, 11 Mar 2025 09:01:10 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzED-0000CT-QB; Tue, 11 Mar 2025 09:01:04 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-22355618fd9so99664825ad.3; Tue, 11 Mar 2025 06:01:01 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:00:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698059; x=1742302859; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Biw+0LaKs2HJdMoWQD130jxziht29GfeWu2Z9l8GRBs=; b=jNgGFDfs+JE4sbk8FPEcPOiBf2oLd8vucgPWU6NrziL5kR2Lf/WfdVQqi5fod8WWFi Mt5PtO5KZvRTvV6Dg+xVcq4nypNLe3B4+9tDFrPXlSpaKhHVcmSq8NDqmJcGAjCL55Mw SAN4XqUqNQv/ZlpeRvXwxSH43ZG/5JAoncWx+r8iRQxqWJqhRRtePGG2QONWziotXj9W j+/i6a9Ug0PDEFAmQpY2uq84fLhnSc0X7bFRCZrGpBSiTovnMmxUzCl1T+grDPXsgBDo J+64yMUvrK+49RSH9y4LdovP/OeWkXuyrMzpQmATVOdVrWPK1uDGo0nomiZNSHSA6Eh2 6dBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698059; x=1742302859; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Biw+0LaKs2HJdMoWQD130jxziht29GfeWu2Z9l8GRBs=; b=fM4tjZzEa9l28/ytnGyPPHWQuwwOZ1LQYs0e897Cp0aWuEeulq2NIrSBrBlPzmoIjF xqXjAEt6RwrR5JqQd6YWyRMIb/1d8zk4IOqrA2XVysqBzp0nLn45U9fxktVdNmBGEZBf 7cZbpDGJrQ7wk0IqwgNatX2/KKvm/tyTLZclDCwNNIyJqMxSzt/KXbdgMTzOztAGDTB2 lwJZRbjUnRGUac4D3Ya91J/ArRHZMBBPq77aM8egtPcKQoJLlmdd/Lc26TmRbpxXo7F7 lHY5ePfSpmJNm0BonIb7Y9bXeaHghfXZdeiKVq+WKnj5/5daA7BEMGQDsabHDB/QM69R ZXSA== X-Forwarded-Encrypted: i=1; AJvYcCW9Ys8zXU+SLE73bhNCYMKI2mUqsZGsR5PhXFwTeUthNQ0E5x4dpHU5ByxufiDvft427O2VK/ubLQ==@nongnu.org X-Gm-Message-State: AOJu0YwYBiXH+ElDlBfW1UUXeCCdr+9a1cjCFuWnCKMX45tPWjT2wok/ gyK+JWp/GGDHYpEMxIkiwDIN90SgIPLhnpUxxMJY5sjSJ0YSxGOZQJC2Bw== X-Gm-Gg: ASbGncsU3BQWghfGrrS1mg/8d1DwLZ/HoegM4pYdqqSWr1DgO+JsYoV4HSHKWsVb2zq ju1MdYXot9Qll6b0083DbEbui7gnWZngl+Kk5iTdC9md8BsU3a6uFUrPhP29zbqZHBLiAC21qac iXlndXexSN2K4IrqiF8oAkGJ8EUVD/H5ooZkDkQ1V9eZdOB3UL0COdRv7T/AYTbd/TaZZwxQRqG mPgj9gvygHzIBWrp1zrtSs+Q98k6wkcYADQpQxYYwu2Jap6d/C8z1fkTeNURGMly0Bswmy9Jk7U jdHZqzf63I23qLfwkv2vFJF7rcvzwXMxmNXEBR5cnM5WeZvkRwY= X-Google-Smtp-Source: AGHT+IEN2raaLOqVO0ZPFX4PCEgIolIjqfTVMFmar8x3HrSJ/wAhF1QBtB3+lHf9sRyqOCUeLk3sHA== X-Received: by 2002:a17:902:d2cd:b0:224:255b:c934 with SMTP id d9443c01a7336-225931af86amr33975445ad.51.1741698059286; Tue, 11 Mar 2025 06:00:59 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 50/72] target/ppc: Restrict various common helpers to TCG Date: Tue, 11 Mar 2025 22:57:44 +1000 Message-ID: <20250311125815.903177-51-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699927658019100 From: Philippe Mathieu-Daud=C3=A9 Move helpers common to system/user emulation to tcg-excp_helper.c. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20250127102620.39159-12-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- target/ppc/excp_helper.c | 141 ---------------------------------- target/ppc/tcg-excp_helper.c | 143 +++++++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+), 141 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 6a12402b23..511e27f726 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -2711,148 +2711,7 @@ void helper_rfmci(CPUPPCState *env) /* FIXME: choose CSRR1 or MCSRR1 based on cpu type */ do_rfi(env, env->spr[SPR_BOOKE_MCSRR0], env->spr[SPR_BOOKE_MCSRR1]); } -#endif /* !CONFIG_USER_ONLY */ - -void helper_TW(CPUPPCState *env, target_ulong arg1, target_ulong arg2, - uint32_t flags) -{ - if (!likely(!(((int32_t)arg1 < (int32_t)arg2 && (flags & 0x10)) || - ((int32_t)arg1 > (int32_t)arg2 && (flags & 0x08)) || - ((int32_t)arg1 =3D=3D (int32_t)arg2 && (flags & 0x04)) || - ((uint32_t)arg1 < (uint32_t)arg2 && (flags & 0x02)) || - ((uint32_t)arg1 > (uint32_t)arg2 && (flags & 0x01))))) { - raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, - POWERPC_EXCP_TRAP, GETPC()); - } -} - -#ifdef TARGET_PPC64 -void helper_TD(CPUPPCState *env, target_ulong arg1, target_ulong arg2, - uint32_t flags) -{ - if (!likely(!(((int64_t)arg1 < (int64_t)arg2 && (flags & 0x10)) || - ((int64_t)arg1 > (int64_t)arg2 && (flags & 0x08)) || - ((int64_t)arg1 =3D=3D (int64_t)arg2 && (flags & 0x04)) || - ((uint64_t)arg1 < (uint64_t)arg2 && (flags & 0x02)) || - ((uint64_t)arg1 > (uint64_t)arg2 && (flags & 0x01))))) { - raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, - POWERPC_EXCP_TRAP, GETPC()); - } -} -#endif /* TARGET_PPC64 */ - -static uint32_t helper_SIMON_LIKE_32_64(uint32_t x, uint64_t key, uint32_t= lane) -{ - const uint16_t c =3D 0xfffc; - const uint64_t z0 =3D 0xfa2561cdf44ac398ULL; - uint16_t z =3D 0, temp; - uint16_t k[32], eff_k[32], xleft[33], xright[33], fxleft[32]; - - for (int i =3D 3; i >=3D 0; i--) { - k[i] =3D key & 0xffff; - key >>=3D 16; - } - xleft[0] =3D x & 0xffff; - xright[0] =3D (x >> 16) & 0xffff; - - for (int i =3D 0; i < 28; i++) { - z =3D (z0 >> (63 - i)) & 1; - temp =3D ror16(k[i + 3], 3) ^ k[i + 1]; - k[i + 4] =3D c ^ z ^ k[i] ^ temp ^ ror16(temp, 1); - } - - for (int i =3D 0; i < 8; i++) { - eff_k[4 * i + 0] =3D k[4 * i + ((0 + lane) % 4)]; - eff_k[4 * i + 1] =3D k[4 * i + ((1 + lane) % 4)]; - eff_k[4 * i + 2] =3D k[4 * i + ((2 + lane) % 4)]; - eff_k[4 * i + 3] =3D k[4 * i + ((3 + lane) % 4)]; - } - - for (int i =3D 0; i < 32; i++) { - fxleft[i] =3D (rol16(xleft[i], 1) & - rol16(xleft[i], 8)) ^ rol16(xleft[i], 2); - xleft[i + 1] =3D xright[i] ^ fxleft[i] ^ eff_k[i]; - xright[i + 1] =3D xleft[i]; - } - - return (((uint32_t)xright[32]) << 16) | xleft[32]; -} =20 -static uint64_t hash_digest(uint64_t ra, uint64_t rb, uint64_t key) -{ - uint64_t stage0_h =3D 0ULL, stage0_l =3D 0ULL; - uint64_t stage1_h, stage1_l; - - for (int i =3D 0; i < 4; i++) { - stage0_h |=3D ror64(rb & 0xff, 8 * (2 * i + 1)); - stage0_h |=3D ((ra >> 32) & 0xff) << (8 * 2 * i); - stage0_l |=3D ror64((rb >> 32) & 0xff, 8 * (2 * i + 1)); - stage0_l |=3D (ra & 0xff) << (8 * 2 * i); - rb >>=3D 8; - ra >>=3D 8; - } - - stage1_h =3D (uint64_t)helper_SIMON_LIKE_32_64(stage0_h >> 32, key, 0)= << 32; - stage1_h |=3D helper_SIMON_LIKE_32_64(stage0_h, key, 1); - stage1_l =3D (uint64_t)helper_SIMON_LIKE_32_64(stage0_l >> 32, key, 2)= << 32; - stage1_l |=3D helper_SIMON_LIKE_32_64(stage0_l, key, 3); - - return stage1_h ^ stage1_l; -} - -static void do_hash(CPUPPCState *env, target_ulong ea, target_ulong ra, - target_ulong rb, uint64_t key, bool store) -{ - uint64_t calculated_hash =3D hash_digest(ra, rb, key), loaded_hash; - - if (store) { - cpu_stq_data_ra(env, ea, calculated_hash, GETPC()); - } else { - loaded_hash =3D cpu_ldq_data_ra(env, ea, GETPC()); - if (loaded_hash !=3D calculated_hash) { - raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, - POWERPC_EXCP_TRAP, GETPC()); - } - } -} - -#include "qemu/guest-random.h" - -#ifdef TARGET_PPC64 -#define HELPER_HASH(op, key, store, dexcr_aspect) = \ -void helper_##op(CPUPPCState *env, target_ulong ea, target_ulong ra, = \ - target_ulong rb) = \ -{ = \ - if (env->msr & R_MSR_PR_MASK) { = \ - if (!(env->spr[SPR_DEXCR] & R_DEXCR_PRO_##dexcr_aspect##_MASK || = \ - env->spr[SPR_HDEXCR] & R_HDEXCR_ENF_##dexcr_aspect##_MASK)) = \ - return; = \ - } else if (!(env->msr & R_MSR_HV_MASK)) { = \ - if (!(env->spr[SPR_DEXCR] & R_DEXCR_PNH_##dexcr_aspect##_MASK || = \ - env->spr[SPR_HDEXCR] & R_HDEXCR_ENF_##dexcr_aspect##_MASK)) = \ - return; = \ - } else if (!(env->msr & R_MSR_S_MASK)) { = \ - if (!(env->spr[SPR_HDEXCR] & R_HDEXCR_HNU_##dexcr_aspect##_MASK)) = \ - return; = \ - } = \ - = \ - do_hash(env, ea, ra, rb, key, store); = \ -} -#else -#define HELPER_HASH(op, key, store, dexcr_aspect) = \ -void helper_##op(CPUPPCState *env, target_ulong ea, target_ulong ra, = \ - target_ulong rb) = \ -{ = \ - do_hash(env, ea, ra, rb, key, store); = \ -} -#endif /* TARGET_PPC64 */ - -HELPER_HASH(HASHST, env->spr[SPR_HASHKEYR], true, NPHIE) -HELPER_HASH(HASHCHK, env->spr[SPR_HASHKEYR], false, NPHIE) -HELPER_HASH(HASHSTP, env->spr[SPR_HASHPKEYR], true, PHIE) -HELPER_HASH(HASHCHKP, env->spr[SPR_HASHPKEYR], false, PHIE) - -#ifndef CONFIG_USER_ONLY /* Embedded.Processor Control */ static int dbell2irq(target_ulong rb) { diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c index 268a161459..2459d2d095 100644 --- a/target/ppc/tcg-excp_helper.c +++ b/target/ppc/tcg-excp_helper.c @@ -66,6 +66,149 @@ void raise_exception(CPUPPCState *env, uint32_t excepti= on) raise_exception_err_ra(env, exception, 0, 0); } =20 +#endif /* !CONFIG_USER_ONLY */ + +void helper_TW(CPUPPCState *env, target_ulong arg1, target_ulong arg2, + uint32_t flags) +{ + if (!likely(!(((int32_t)arg1 < (int32_t)arg2 && (flags & 0x10)) || + ((int32_t)arg1 > (int32_t)arg2 && (flags & 0x08)) || + ((int32_t)arg1 =3D=3D (int32_t)arg2 && (flags & 0x04)) || + ((uint32_t)arg1 < (uint32_t)arg2 && (flags & 0x02)) || + ((uint32_t)arg1 > (uint32_t)arg2 && (flags & 0x01))))) { + raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, + POWERPC_EXCP_TRAP, GETPC()); + } +} + +#ifdef TARGET_PPC64 +void helper_TD(CPUPPCState *env, target_ulong arg1, target_ulong arg2, + uint32_t flags) +{ + if (!likely(!(((int64_t)arg1 < (int64_t)arg2 && (flags & 0x10)) || + ((int64_t)arg1 > (int64_t)arg2 && (flags & 0x08)) || + ((int64_t)arg1 =3D=3D (int64_t)arg2 && (flags & 0x04)) || + ((uint64_t)arg1 < (uint64_t)arg2 && (flags & 0x02)) || + ((uint64_t)arg1 > (uint64_t)arg2 && (flags & 0x01))))) { + raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, + POWERPC_EXCP_TRAP, GETPC()); + } +} +#endif /* TARGET_PPC64 */ + +static uint32_t helper_SIMON_LIKE_32_64(uint32_t x, uint64_t key, uint32_t= lane) +{ + const uint16_t c =3D 0xfffc; + const uint64_t z0 =3D 0xfa2561cdf44ac398ULL; + uint16_t z =3D 0, temp; + uint16_t k[32], eff_k[32], xleft[33], xright[33], fxleft[32]; + + for (int i =3D 3; i >=3D 0; i--) { + k[i] =3D key & 0xffff; + key >>=3D 16; + } + xleft[0] =3D x & 0xffff; + xright[0] =3D (x >> 16) & 0xffff; + + for (int i =3D 0; i < 28; i++) { + z =3D (z0 >> (63 - i)) & 1; + temp =3D ror16(k[i + 3], 3) ^ k[i + 1]; + k[i + 4] =3D c ^ z ^ k[i] ^ temp ^ ror16(temp, 1); + } + + for (int i =3D 0; i < 8; i++) { + eff_k[4 * i + 0] =3D k[4 * i + ((0 + lane) % 4)]; + eff_k[4 * i + 1] =3D k[4 * i + ((1 + lane) % 4)]; + eff_k[4 * i + 2] =3D k[4 * i + ((2 + lane) % 4)]; + eff_k[4 * i + 3] =3D k[4 * i + ((3 + lane) % 4)]; + } + + for (int i =3D 0; i < 32; i++) { + fxleft[i] =3D (rol16(xleft[i], 1) & + rol16(xleft[i], 8)) ^ rol16(xleft[i], 2); + xleft[i + 1] =3D xright[i] ^ fxleft[i] ^ eff_k[i]; + xright[i + 1] =3D xleft[i]; + } + + return (((uint32_t)xright[32]) << 16) | xleft[32]; +} + +static uint64_t hash_digest(uint64_t ra, uint64_t rb, uint64_t key) +{ + uint64_t stage0_h =3D 0ULL, stage0_l =3D 0ULL; + uint64_t stage1_h, stage1_l; + + for (int i =3D 0; i < 4; i++) { + stage0_h |=3D ror64(rb & 0xff, 8 * (2 * i + 1)); + stage0_h |=3D ((ra >> 32) & 0xff) << (8 * 2 * i); + stage0_l |=3D ror64((rb >> 32) & 0xff, 8 * (2 * i + 1)); + stage0_l |=3D (ra & 0xff) << (8 * 2 * i); + rb >>=3D 8; + ra >>=3D 8; + } + + stage1_h =3D (uint64_t)helper_SIMON_LIKE_32_64(stage0_h >> 32, key, 0)= << 32; + stage1_h |=3D helper_SIMON_LIKE_32_64(stage0_h, key, 1); + stage1_l =3D (uint64_t)helper_SIMON_LIKE_32_64(stage0_l >> 32, key, 2)= << 32; + stage1_l |=3D helper_SIMON_LIKE_32_64(stage0_l, key, 3); + + return stage1_h ^ stage1_l; +} + +static void do_hash(CPUPPCState *env, target_ulong ea, target_ulong ra, + target_ulong rb, uint64_t key, bool store) +{ + uint64_t calculated_hash =3D hash_digest(ra, rb, key), loaded_hash; + + if (store) { + cpu_stq_data_ra(env, ea, calculated_hash, GETPC()); + } else { + loaded_hash =3D cpu_ldq_data_ra(env, ea, GETPC()); + if (loaded_hash !=3D calculated_hash) { + raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, + POWERPC_EXCP_TRAP, GETPC()); + } + } +} + +#include "qemu/guest-random.h" + +#ifdef TARGET_PPC64 +#define HELPER_HASH(op, key, store, dexcr_aspect) = \ +void helper_##op(CPUPPCState *env, target_ulong ea, target_ulong ra, = \ + target_ulong rb) = \ +{ = \ + if (env->msr & R_MSR_PR_MASK) { = \ + if (!(env->spr[SPR_DEXCR] & R_DEXCR_PRO_##dexcr_aspect##_MASK || = \ + env->spr[SPR_HDEXCR] & R_HDEXCR_ENF_##dexcr_aspect##_MASK)) = \ + return; = \ + } else if (!(env->msr & R_MSR_HV_MASK)) { = \ + if (!(env->spr[SPR_DEXCR] & R_DEXCR_PNH_##dexcr_aspect##_MASK || = \ + env->spr[SPR_HDEXCR] & R_HDEXCR_ENF_##dexcr_aspect##_MASK)) = \ + return; = \ + } else if (!(env->msr & R_MSR_S_MASK)) { = \ + if (!(env->spr[SPR_HDEXCR] & R_HDEXCR_HNU_##dexcr_aspect##_MASK)) = \ + return; = \ + } = \ + = \ + do_hash(env, ea, ra, rb, key, store); = \ +} +#else +#define HELPER_HASH(op, key, store, dexcr_aspect) = \ +void helper_##op(CPUPPCState *env, target_ulong ea, target_ulong ra, = \ + target_ulong rb) = \ +{ = \ + do_hash(env, ea, ra, rb, key, store); = \ +} +#endif /* TARGET_PPC64 */ + +HELPER_HASH(HASHST, env->spr[SPR_HASHKEYR], true, NPHIE) +HELPER_HASH(HASHCHK, env->spr[SPR_HASHKEYR], false, NPHIE) +HELPER_HASH(HASHSTP, env->spr[SPR_HASHPKEYR], true, PHIE) +HELPER_HASH(HASHCHKP, env->spr[SPR_HASHPKEYR], false, PHIE) + +#ifndef CONFIG_USER_ONLY + void ppc_cpu_do_unaligned_access(CPUState *cs, vaddr vaddr, MMUAccessType access_type, int mmu_idx, uintptr_t retaddr) --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741701995; cv=none; d=zohomail.com; s=zohoarc; b=AtjMvF5l5DQhSGbMTquNc3u6JAkFUEMfqywJTfsxRLN6KNBWAXoPJj6CaUGGh3ij6qmmpCUR1eUtDd4jG2atXg3ytYj2Le3MikeybTuN89hc3fO1To3lwtIRUZccFhdhKGbaxmKec1SnatpfXxsJdLmLSU4FNibx1WHrerowm78= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741701995; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VAXQPpG8yd5CXPgOFWtFPIwtpv24G2eRO8aH++zGVxo=; b=WU2E9QUULMhnWH2isPd66G/9ivIw4B93pv7hH3xliZw/3CsByXItRfoFI3iWZU6pAX2MbcdtxotTVtV7EBCrWIaqJ8/16+FmSO43/ybhvz4kOPpo4y8DlwJB1Xqgo9nbeTjasctgaCalnSw3jz0IL/deEcMzvEkv6Xi9vZuJBpA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174170199517953.80867015144429; Tue, 11 Mar 2025 07:06:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzID-0001wZ-Vi; Tue, 11 Mar 2025 09:05:12 -0400 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 1trzEN-0005TL-Ui; Tue, 11 Mar 2025 09:01:21 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEJ-0000DH-2M; Tue, 11 Mar 2025 09:01:11 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-2ff80290debso7724277a91.3; Tue, 11 Mar 2025 06:01:03 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.00.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698062; x=1742302862; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VAXQPpG8yd5CXPgOFWtFPIwtpv24G2eRO8aH++zGVxo=; b=G0Zm74GA1pzpklSPTPSacE1hJP4V0G36ex4nKhOHlf26g7Bz6y57HAHo6fMWSZa6Wj 2JbAUA2MIeDl3787lVzG0Odho+8xYVTB+2PSdosWF1qzcAxBNWSSsTVzfxVG/pvIKmcU g/1c8oIEBoo+kTjVAoQBhoZ/UQ8aW7TckLhBPjBSbzbJLiNjpb/+Tk7fXb2gG0sZqLc4 DpG5bkiO3Rp0NXTl31igvUQ3SZhotNTYHgTBNwX/lHi5zyq6O0BQimOTxgCRHe0dWkBU g1l1kuFkFjsz3sSyv6A8wb9oFl4EzjQ20X+ZOa6bsXGmGdyysliK5a8aL7+U59alBZf/ IwVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698062; x=1742302862; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VAXQPpG8yd5CXPgOFWtFPIwtpv24G2eRO8aH++zGVxo=; b=bpxMZJPRi5TbWsCe1b6WbLxlua052m4RSnxjY9raZrEIdrbabUbloF6ubOvkMs3Y/t S0pRaxF8zGwXNMlyOHt192WcfBkQJD7xa5qlJmiRDZoKoMh9eg3xFLZl+x/idCOCTIKq vBOo4Ykxw87DYTmICgzkU+HxoJ/wnxYfwkh8dLRaEBmSlN01V9Y+xEBBGHOC2zqhl/8V jjVXnge4okPIxTrB+fmo6itOwHS6KpjZoPctamh2igwESZZDOruR0YHy+Sr0mXAqt/T0 CLo9IGwQYmRdTuhxoDWKpMZuGNGNduth8HcBIuHNphKldAx360cPObpnybNiAp1nSjkz eziw== X-Forwarded-Encrypted: i=1; AJvYcCVRKEjNiDuoN7UBiJQy5WIA5B4WZsak93ZAm5IDZI++KNve+1rELh7BAIV0Sds+p6TM6TQf1erndA==@nongnu.org X-Gm-Message-State: AOJu0YweEl9/qmsLDBiQgnRMttuTFOGP1jCS11oCgh6xktUiw6BY+i4L u28BeLYckAiRSY25KNYqATxC49bQcHmJ5ERYDH78MkX43JkH7tXtj8g+DA== X-Gm-Gg: ASbGnctnIOpq6Gx5V++I+XFeVH2FjgvrPYd9bwzTBtMl1TTAvbPxkkKynmWqr0flW9m LnVrlszoFRUvoarcasy1vSiTa0nSdGT8yJUWIKeUY6ayCqscdxBpkTvNGkwMPFlKXX6GiWjEfjw hjtaUjL3pTaSYcM8KS4Ibp8HL487a4b70zB08JF62RdcBFY0xHzkghynJtc2SJ5vOFucOG6PsnQ EytqbR92Hm9RTZWXF86lBL5/TGhaNTE6m/IdIrm75kQRTRuBqv/vfC9jixzQf2WVmDHcVR/MNPm RavAVgK0nJA+BXlQM4scIMK4uKw9c8RstILpCICnykd7dtm2wiU= X-Google-Smtp-Source: AGHT+IEJvJex1riie9VM+bWx3XlnhXhRmXd5P61c4kiVRPjzQmZVW6m/KZ7BsyvbNOgHzGmhMPAdtg== X-Received: by 2002:a17:90b:390c:b0:2f9:cf97:56a6 with SMTP id 98e67ed59e1d1-2ff7ce63ffbmr29281898a91.14.1741698062313; Tue, 11 Mar 2025 06:01:02 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 51/72] target/ppc: Fix style in excp_helper.c Date: Tue, 11 Mar 2025 22:57:45 +1000 Message-ID: <20250311125815.903177-52-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102c.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741701997289019100 From: Philippe Mathieu-Daud=C3=A9 Fix style in do_rfi() before moving the code around. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20250127102620.39159-13-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- target/ppc/excp_helper.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 511e27f726..659852543f 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -2558,8 +2558,9 @@ static void do_rfi(CPUPPCState *env, target_ulong nip= , target_ulong msr) msr &=3D ~(1ULL << MSR_POW); =20 /* MSR:TGPR cannot be set by any form of rfi */ - if (env->flags & POWERPC_FLAG_TGPR) + if (env->flags & POWERPC_FLAG_TGPR) { msr &=3D ~(1ULL << MSR_TGPR); + } =20 #ifdef TARGET_PPC64 /* Switching to 32-bit ? Crop the nip */ --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741703597; cv=none; d=zohomail.com; s=zohoarc; b=d8XBwz9DVtS7NzWCSsuprHv9EebR8DSXbq2UYa2mFLduhEpkZ1dmovhHBQB38Uv4xfualt2vQjpNfbL1R0s3Snm8kdiju4tDMB5HaFrgfSCJBgwxBzflg8fMTq5PJi5jqtUfUjUVyIfoeeiDAg2Po3LBiQbRypQ6I1sq064p6l4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741703597; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5Qg32i2ZNEVpFinMGEejCFLsCi4jerRMng5QMzQ5ljg=; b=YtXH+/orJvuvYZkveqWnsReo/L677+bslqK1tK9+cWGR/Un6JK4yUUVJB11FuBHROJbFJvzZIqG+Q/jVlYK6ggHb1oXcu7mhtlNRu6NsozrrIbYl7GgsfIHWK4EFLXsT/ZtDusnp1gPj2hT0f7qi5vvx7qnHC5homJF12BtSvFY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741703597157340.78625730440876; Tue, 11 Mar 2025 07:33:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzKx-0002TN-Cf; Tue, 11 Mar 2025 09:07:59 -0400 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 1trzEN-0005TK-Sp; Tue, 11 Mar 2025 09:01:21 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEK-0000Db-IS; Tue, 11 Mar 2025 09:01:10 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-2feae794508so8085970a91.0; Tue, 11 Mar 2025 06:01:06 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698065; x=1742302865; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5Qg32i2ZNEVpFinMGEejCFLsCi4jerRMng5QMzQ5ljg=; b=jPOZJ1W6a7aU1DT7kM0gJiUtabIfAzBQb4KKuH26N0KVhsiWN8YCeVLipCpN7B/zC+ y2DYd8Xb/Yph0IdPxGmUTKz0GiqWoSd0Zc1nIofNqDh6uq17ooVECq357hRBRAw1gMqE 4y6MPGXX4It96/6JjjmFOq6b7w1kkd1bE0OcOBqtP1Wj52GiyCQtHr4CUJ4PVCYP6TU1 L8GJwNXd5VM5ocge0sXvJYUUNh5FXpfK8ks4aGV5ubii17gB8BOuD4Y1KX0GRcSLaEEp LWLYOmmXVJfu2PSzeHm7ad5I/0cebsZlfd5I2CyMgvggkOerjps2CcY21l9iBu9tNj64 L7Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698065; x=1742302865; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5Qg32i2ZNEVpFinMGEejCFLsCi4jerRMng5QMzQ5ljg=; b=IdqH/hlw4he3UCoVoeyEAB8EpozjnY/dhVCpEkZLlrJB9a0+9dQUMmHlcrDhUtB4ZV YGC5n3ToYhnpk8SMLygpOQQ+E3Sa4rBqjGAJKs/Sdmka27rdu6IfcJIAe6Cl0P0LFDqO P9wGhJDEDozFUACbSrPgKENjBwZ6xHTCW5++iykDzmHXTd5wkVK+sKL1DojkFyjh5CZs SxjQL5ueodq5jZgtew0P8eHFnQQzSiAK8ziXLnDeSnBldkfG/QZDd5Q/+/Zz8lThjdCc H9nwzanTEIp/bLDVwEgSTf0EF1EJfqcTCohp3hATZrweckCqSwfQp0EK58rdrlZwpgGX f62A== X-Forwarded-Encrypted: i=1; AJvYcCVeSkxcgUlu7YwIP65J3tMk8i17+OdlUgQI3UYeHGdsw1CbtH+CeMo6Pm+10LDiDjp6K3xOQneKWQ==@nongnu.org X-Gm-Message-State: AOJu0YyIlBmgbFYmqzuzbHnqfSOht+W7rD3oGnQmDSMKaVa6zUD5tIrD uTwDbGae/v3Yrc7PSDC6leHU1l40q5BnEBHYSe5TEtLpF9ZD8L9orWPtjw== X-Gm-Gg: ASbGncsD74c4hbiuy+05dcEIcw79DfWJ0FxwOrA/+U+j7DEW/cdXkw++OXXFtT81j96 6k9CyEzPLjSNJ32DeCfjP43O8maPEVFXFVoUtm99dg78hWFQ1N83SOVimIcA1+P0adUb1i4HijD ATv3oYr9RiYPJ0QBgAZtFxmXUEucCJMLGTkvJ3aWUwMwniCY9frycS9aB3BjwCfLqk1rZsndQz7 HlmFaadjM/J7/Z/aaqcEcOOgpFX64PfDtP1oBbdxMZJgFktihnQptoGpcAEGo8ZuDQTgmnc9ja2 gixdNTXYE1JW4xgXrZFiFdPnMDaNVGBUQ36mLvE0w9OJMJgVlk8= X-Google-Smtp-Source: AGHT+IEwarqDwS1tOb+Lcio8qbjL4V185hjh6m8ZxICy60WOf2aj6Auap8YBaJFrK7xSUUIxW68g1Q== X-Received: by 2002:a17:90b:1c05:b0:2ee:a583:e616 with SMTP id 98e67ed59e1d1-2ff7ce6d543mr27902162a91.9.1741698065313; Tue, 11 Mar 2025 06:01:05 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 52/72] target/ppc: Make powerpc_excp() prototype public Date: Tue, 11 Mar 2025 22:57:46 +1000 Message-ID: <20250311125815.903177-53-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741703599403019100 From: Philippe Mathieu-Daud=C3=A9 In order to move TCG specific code dependent on powerpc_excp() in the next commit, expose its prototype in "internal.h". Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20250127102620.39159-14-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- target/ppc/excp_helper.c | 2 +- target/ppc/internal.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 659852543f..9ba5335698 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1571,7 +1571,7 @@ static inline void powerpc_excp_books(PowerPCCPU *cpu= , int excp) } #endif /* TARGET_PPC64 */ =20 -static void powerpc_excp(PowerPCCPU *cpu, int excp) +void powerpc_excp(PowerPCCPU *cpu, int excp) { CPUPPCState *env =3D &cpu->env; =20 diff --git a/target/ppc/internal.h b/target/ppc/internal.h index 62186bc1e6..9012d3809c 100644 --- a/target/ppc/internal.h +++ b/target/ppc/internal.h @@ -291,6 +291,8 @@ bool ppc_cpu_debug_check_breakpoint(CPUState *cs); bool ppc_cpu_debug_check_watchpoint(CPUState *cs, CPUWatchpoint *wp); =20 G_NORETURN void powerpc_checkstop(CPUPPCState *env, const char *reason); +void powerpc_excp(PowerPCCPU *cpu, int excp); + #endif /* !CONFIG_USER_ONLY */ =20 FIELD(GER_MSK, XMSK, 0, 4) --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699784; cv=none; d=zohomail.com; s=zohoarc; b=PIyRK3cj8Gk3thXNGYI99t3KvIHRxp+ZevFMA55bxYuvG0Vh2kVFnPmFKZjkxcueiB06ZkGA1ayWjaBRhypGN9Ai5NMiRm5HVL95Le0kfwBS8KL4uIAIzYNMNf9ZS6vJRJmTWLiuPB+MwkawKcFoILIZy2PlTVJarwmuRs/KBMc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699784; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gOr0Iv0DC4pt8besb91uNgjRLEvbLePKXK2ZL6VXyUs=; b=UrFRl0zBwK+R8tK1aY/OJ++jGaQ9UfOYcs/azkLoIYF/KS/v+Hy3R4dII90+DQLR4AzlRshlPRZyLySm47eBRrgKJER8/RwNwnAvqt0gBi+XoEXYtoO212I4DuQlEc+zKLnJpwM853KGushflmwDMH0Q+8XhAvaqx4LcNiwt/IQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699784184549.2125952336913; Tue, 11 Mar 2025 06:29:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzIp-0002YC-P6; Tue, 11 Mar 2025 09:05:47 -0400 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 1trzET-0005Uw-Bb; Tue, 11 Mar 2025 09:01:24 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEP-0000EK-1N; Tue, 11 Mar 2025 09:01:17 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2255003f4c6so49940685ad.0; Tue, 11 Mar 2025 06:01:10 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698069; x=1742302869; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gOr0Iv0DC4pt8besb91uNgjRLEvbLePKXK2ZL6VXyUs=; b=SbeYQddCnmDPak1ipsZ9ONRB3vBMjdmuFbUPl10wxeIJjzx4n1b/2g5ivCybwi+cfK rnxt/GlutS9jvpWdi4p9mW6joDPbCz2cbAbsAyM3fKBkKQtb0PaOm6YJHNfXwFXMLanz DXYFslu/cnWZlcYi/2NOEhbgjJi6zwZ1ZcF43ZopN2kldINmXIRD62hFIm6aEqVEpPsX oUkYCTm0mfCyH1erSd1egetgszgmw5n+IqLHdcCVM4NEtZQNx1ZNa7lNTnsDW77fxDqk i+01oOpl34oD0/NtMMKpjhdfPFQxMcrBeVYrYxVTdVpeO7ZNPvJ/fpAGabXEUXbik03I 8YCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698069; x=1742302869; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gOr0Iv0DC4pt8besb91uNgjRLEvbLePKXK2ZL6VXyUs=; b=RD3z0IqU6Iz4Rxa9wjj20RRLNZBy4WoRSC/0lQK72oySr7V+DrE5/liGDJSdNUBpcd i5DLppGRf+b3JLEiYhPdT6A5IjQVe5IjEXcStgKkomWCwVoDjNTokhkHfR72qC3GJyKO YftoNmBiNur8buU03RVhXnKa4vkckKiUG5aRPgw8nxVDqZuwbdu1U7m5p4j+ovwpajku XqunGfT0TNEeltioiJnESpX4PgalCCDA/MnrGyLXnlmSL4c9uLsGX4M8s0vF2GcDihP4 SiUppATm5NCon9Q8wDASuZU4kmaIDSuLmL73F6nNEcyGZi1UH94jI80S0N3CJYncEdd2 70ng== X-Forwarded-Encrypted: i=1; AJvYcCXj97HoCXMK7Q2a9Q1t7FLcdKuLe17ZpiHjxuOgsoc09gazEX/OFI74lvoZVxE5jOpwYwN7QudjlQ==@nongnu.org X-Gm-Message-State: AOJu0Yxpc9cIRKasGIOccWWn9io6MmxYqOkYRxOhJ8ncIM43/nN9dkPn tfTOmGDIHaNlefYLb446R2Bow8Z3JfuxSUWYBoC7liuEDGnViOksh06VMA== X-Gm-Gg: ASbGnctxFx90mMJTbuxhr4kHJDlYqJ/Ymyn47ijRlyWKtTf5rLOX2uUbyF2g1PEOBx4 DM0mchPacXs63WDBmv1Z2vns7pq928X9gTrzBQ7nPOrJHRZl5SfhQHhuzX5lk39H1flccS/Y3O2 8Hfxn+b3fyWZuCbDAFdGCMwVTVgPUYHKM28czGPJX4TW7FyfDY8CVokagjXe8hLpubH2CfLvaMW HYe5P1a0rTCGTb8mvZdE0FbZr7uFSlglGWlu47pHHAh2Zv96Nwe2/fc/CLV+kn1S4lcxGtHmPcD vWp2Jpkb6cA/wk1ggWJEHERKC73MDVuIfvTWyQi7SQ2l/vnWwws= X-Google-Smtp-Source: AGHT+IExUlv0Jo62kwnGnHDajJY1AZaA8nuTSvQU84mIJwOieUTYENuxymwv7a/4IDwoozsO0bkrXw== X-Received: by 2002:a17:90b:2e8f:b0:2fe:b907:3b05 with SMTP id 98e67ed59e1d1-300ff3661a9mr4807699a91.29.1741698068472; Tue, 11 Mar 2025 06:01:08 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 53/72] target/ppc: Restrict ATTN / SCV / PMINSN helpers to TCG Date: Tue, 11 Mar 2025 22:57:47 +1000 Message-ID: <20250311125815.903177-54-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=npiggin@gmail.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699786122019100 From: Philippe Mathieu-Daud=C3=A9 Move helper_attn(), helper_scv() and helper_pminsn() to tcg-excp_helper.c. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20250127102620.39159-15-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- target/ppc/cpu.h | 3 - target/ppc/excp_helper.c | 434 ----------------------------------- target/ppc/tcg-excp_helper.c | 423 +++++++++++++++++++++++++++++++++- 3 files changed, 421 insertions(+), 439 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 505b589714..8d43983fe1 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -2755,9 +2755,6 @@ static inline void cpu_get_tb_cpu_state(CPUPPCState *= env, vaddr *pc, } #endif =20 -G_NORETURN void raise_exception(CPUPPCState *env, uint32_t exception); -G_NORETURN void raise_exception_err(CPUPPCState *env, uint32_t exception, - uint32_t error_code); G_NORETURN void raise_exception_err_ra(CPUPPCState *env, uint32_t exceptio= n, uint32_t error_code, uintptr_t radd= r); =20 diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 9ba5335698..44e19aacd8 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -30,11 +30,6 @@ =20 #include "trace.h" =20 -#ifdef CONFIG_TCG -#include "exec/helper-proto.h" -#include "exec/cpu_ldst.h" -#endif - /*************************************************************************= ****/ /* Exception processing */ #ifndef CONFIG_USER_ONLY @@ -399,21 +394,6 @@ static void powerpc_set_excp_state(PowerPCCPU *cpu, ta= rget_ulong vector, env->reserve_addr =3D -1; } =20 -#ifdef CONFIG_TCG -#if defined(TARGET_PPC64) && !defined(CONFIG_USER_ONLY) -void helper_attn(CPUPPCState *env) -{ - /* POWER attn is unprivileged when enabled by HID, otherwise illegal */ - if ((*env->check_attn)(env)) { - powerpc_checkstop(env, "host executed attn"); - } else { - raise_exception_err(env, POWERPC_EXCP_HV_EMU, - POWERPC_EXCP_INVAL | POWERPC_EXCP_INVAL_INVAL); - } -} -#endif -#endif /* CONFIG_TCG */ - static void powerpc_mcheck_checkstop(CPUPPCState *env) { /* KVM guests always have MSR[ME] enabled */ @@ -2503,417 +2483,3 @@ bool ppc_cpu_exec_interrupt(CPUState *cs, int inter= rupt_request) } =20 #endif /* !CONFIG_USER_ONLY */ - -#ifdef CONFIG_TCG - -#ifndef CONFIG_USER_ONLY -void helper_store_msr(CPUPPCState *env, target_ulong val) -{ - uint32_t excp =3D hreg_store_msr(env, val, 0); - - if (excp !=3D 0) { - cpu_interrupt_exittb(env_cpu(env)); - raise_exception(env, excp); - } -} - -void helper_ppc_maybe_interrupt(CPUPPCState *env) -{ - ppc_maybe_interrupt(env); -} - -#ifdef TARGET_PPC64 -void helper_scv(CPUPPCState *env, uint32_t lev) -{ - if (env->spr[SPR_FSCR] & (1ull << FSCR_SCV)) { - raise_exception_err(env, POWERPC_EXCP_SYSCALL_VECTORED, lev); - } else { - raise_exception_err(env, POWERPC_EXCP_FU, FSCR_IC_SCV); - } -} - -void helper_pminsn(CPUPPCState *env, uint32_t insn) -{ - CPUState *cs =3D env_cpu(env); - - cs->halted =3D 1; - - /* Condition for waking up at 0x100 */ - env->resume_as_sreset =3D (insn !=3D PPC_PM_STOP) || - (env->spr[SPR_PSSCR] & PSSCR_EC); - - /* HDECR is not to wake from PM state, it may have already fired */ - if (env->resume_as_sreset) { - PowerPCCPU *cpu =3D env_archcpu(env); - ppc_set_irq(cpu, PPC_INTERRUPT_HDECR, 0); - } - - ppc_maybe_interrupt(env); -} -#endif /* TARGET_PPC64 */ - -static void do_rfi(CPUPPCState *env, target_ulong nip, target_ulong msr) -{ - /* MSR:POW cannot be set by any form of rfi */ - msr &=3D ~(1ULL << MSR_POW); - - /* MSR:TGPR cannot be set by any form of rfi */ - if (env->flags & POWERPC_FLAG_TGPR) { - msr &=3D ~(1ULL << MSR_TGPR); - } - -#ifdef TARGET_PPC64 - /* Switching to 32-bit ? Crop the nip */ - if (!msr_is_64bit(env, msr)) { - nip =3D (uint32_t)nip; - } -#else - nip =3D (uint32_t)nip; -#endif - /* XXX: beware: this is false if VLE is supported */ - env->nip =3D nip & ~((target_ulong)0x00000003); - hreg_store_msr(env, msr, 1); - trace_ppc_excp_rfi(env->nip, env->msr); - /* - * No need to raise an exception here, as rfi is always the last - * insn of a TB - */ - cpu_interrupt_exittb(env_cpu(env)); - /* Reset the reservation */ - env->reserve_addr =3D -1; - - /* Context synchronizing: check if TCG TLB needs flush */ - check_tlb_flush(env, false); -} - -void helper_rfi(CPUPPCState *env) -{ - do_rfi(env, env->spr[SPR_SRR0], env->spr[SPR_SRR1] & 0xfffffffful); -} - -#ifdef TARGET_PPC64 -void helper_rfid(CPUPPCState *env) -{ - /* - * The architecture defines a number of rules for which bits can - * change but in practice, we handle this in hreg_store_msr() - * which will be called by do_rfi(), so there is no need to filter - * here - */ - do_rfi(env, env->spr[SPR_SRR0], env->spr[SPR_SRR1]); -} - -void helper_rfscv(CPUPPCState *env) -{ - do_rfi(env, env->lr, env->ctr); -} - -void helper_hrfid(CPUPPCState *env) -{ - do_rfi(env, env->spr[SPR_HSRR0], env->spr[SPR_HSRR1]); -} - -void helper_rfebb(CPUPPCState *env, target_ulong s) -{ - target_ulong msr =3D env->msr; - - /* - * Handling of BESCR bits 32:33 according to PowerISA v3.1: - * - * "If BESCR 32:33 !=3D 0b00 the instruction is treated as if - * the instruction form were invalid." - */ - if (env->spr[SPR_BESCR] & BESCR_INVALID) { - raise_exception_err(env, POWERPC_EXCP_PROGRAM, - POWERPC_EXCP_INVAL | POWERPC_EXCP_INVAL_INVAL); - } - - env->nip =3D env->spr[SPR_EBBRR]; - - /* Switching to 32-bit ? Crop the nip */ - if (!msr_is_64bit(env, msr)) { - env->nip =3D (uint32_t)env->spr[SPR_EBBRR]; - } - - if (s) { - env->spr[SPR_BESCR] |=3D BESCR_GE; - } else { - env->spr[SPR_BESCR] &=3D ~BESCR_GE; - } -} - -/* - * Triggers or queues an 'ebb_excp' EBB exception. All checks - * but FSCR, HFSCR and msr_pr must be done beforehand. - * - * PowerISA v3.1 isn't clear about whether an EBB should be - * postponed or cancelled if the EBB facility is unavailable. - * Our assumption here is that the EBB is cancelled if both - * FSCR and HFSCR EBB facilities aren't available. - */ -static void do_ebb(CPUPPCState *env, int ebb_excp) -{ - PowerPCCPU *cpu =3D env_archcpu(env); - - /* - * FSCR_EBB and FSCR_IC_EBB are the same bits used with - * HFSCR. - */ - helper_fscr_facility_check(env, FSCR_EBB, 0, FSCR_IC_EBB); - helper_hfscr_facility_check(env, FSCR_EBB, "EBB", FSCR_IC_EBB); - - if (ebb_excp =3D=3D POWERPC_EXCP_PERFM_EBB) { - env->spr[SPR_BESCR] |=3D BESCR_PMEO; - } else if (ebb_excp =3D=3D POWERPC_EXCP_EXTERNAL_EBB) { - env->spr[SPR_BESCR] |=3D BESCR_EEO; - } - - if (FIELD_EX64(env->msr, MSR, PR)) { - powerpc_excp(cpu, ebb_excp); - } else { - ppc_set_irq(cpu, PPC_INTERRUPT_EBB, 1); - } -} - -void raise_ebb_perfm_exception(CPUPPCState *env) -{ - bool perfm_ebb_enabled =3D env->spr[SPR_POWER_MMCR0] & MMCR0_EBE && - env->spr[SPR_BESCR] & BESCR_PME && - env->spr[SPR_BESCR] & BESCR_GE; - - if (!perfm_ebb_enabled) { - return; - } - - do_ebb(env, POWERPC_EXCP_PERFM_EBB); -} -#endif /* TARGET_PPC64 */ - -/*************************************************************************= ****/ -/* Embedded PowerPC specific helpers */ -void helper_40x_rfci(CPUPPCState *env) -{ - do_rfi(env, env->spr[SPR_40x_SRR2], env->spr[SPR_40x_SRR3]); -} - -void helper_rfci(CPUPPCState *env) -{ - do_rfi(env, env->spr[SPR_BOOKE_CSRR0], env->spr[SPR_BOOKE_CSRR1]); -} - -void helper_rfdi(CPUPPCState *env) -{ - /* FIXME: choose CSRR1 or DSRR1 based on cpu type */ - do_rfi(env, env->spr[SPR_BOOKE_DSRR0], env->spr[SPR_BOOKE_DSRR1]); -} - -void helper_rfmci(CPUPPCState *env) -{ - /* FIXME: choose CSRR1 or MCSRR1 based on cpu type */ - do_rfi(env, env->spr[SPR_BOOKE_MCSRR0], env->spr[SPR_BOOKE_MCSRR1]); -} - -/* Embedded.Processor Control */ -static int dbell2irq(target_ulong rb) -{ - int msg =3D rb & DBELL_TYPE_MASK; - int irq =3D -1; - - switch (msg) { - case DBELL_TYPE_DBELL: - irq =3D PPC_INTERRUPT_DOORBELL; - break; - case DBELL_TYPE_DBELL_CRIT: - irq =3D PPC_INTERRUPT_CDOORBELL; - break; - case DBELL_TYPE_G_DBELL: - case DBELL_TYPE_G_DBELL_CRIT: - case DBELL_TYPE_G_DBELL_MC: - /* XXX implement */ - default: - break; - } - - return irq; -} - -void helper_msgclr(CPUPPCState *env, target_ulong rb) -{ - int irq =3D dbell2irq(rb); - - if (irq < 0) { - return; - } - - ppc_set_irq(env_archcpu(env), irq, 0); -} - -void helper_msgsnd(target_ulong rb) -{ - int irq =3D dbell2irq(rb); - int pir =3D rb & DBELL_PIRTAG_MASK; - CPUState *cs; - - if (irq < 0) { - return; - } - - bql_lock(); - CPU_FOREACH(cs) { - PowerPCCPU *cpu =3D POWERPC_CPU(cs); - CPUPPCState *cenv =3D &cpu->env; - - if ((rb & DBELL_BRDCAST_MASK) || (cenv->spr[SPR_BOOKE_PIR] =3D=3D = pir)) { - ppc_set_irq(cpu, irq, 1); - } - } - bql_unlock(); -} - -/* Server Processor Control */ - -static bool dbell_type_server(target_ulong rb) -{ - /* - * A Directed Hypervisor Doorbell message is sent only if the - * message type is 5. All other types are reserved and the - * instruction is a no-op - */ - return (rb & DBELL_TYPE_MASK) =3D=3D DBELL_TYPE_DBELL_SERVER; -} - -static inline bool dbell_bcast_core(target_ulong rb) -{ - return (rb & DBELL_BRDCAST_MASK) =3D=3D DBELL_BRDCAST_CORE; -} - -static inline bool dbell_bcast_subproc(target_ulong rb) -{ - return (rb & DBELL_BRDCAST_MASK) =3D=3D DBELL_BRDCAST_SUBPROC; -} - -/* - * Send an interrupt to a thread in the same core as env). - */ -static void msgsnd_core_tir(CPUPPCState *env, uint32_t target_tir, int irq) -{ - PowerPCCPU *cpu =3D env_archcpu(env); - CPUState *cs =3D env_cpu(env); - - if (ppc_cpu_lpar_single_threaded(cs)) { - if (target_tir =3D=3D 0) { - ppc_set_irq(cpu, irq, 1); - } - } else { - CPUState *ccs; - - /* Does iothread need to be locked for walking CPU list? */ - bql_lock(); - THREAD_SIBLING_FOREACH(cs, ccs) { - PowerPCCPU *ccpu =3D POWERPC_CPU(ccs); - if (target_tir =3D=3D ppc_cpu_tir(ccpu)) { - ppc_set_irq(ccpu, irq, 1); - break; - } - } - bql_unlock(); - } -} - -void helper_book3s_msgclr(CPUPPCState *env, target_ulong rb) -{ - if (!dbell_type_server(rb)) { - return; - } - - ppc_set_irq(env_archcpu(env), PPC_INTERRUPT_HDOORBELL, 0); -} - -void helper_book3s_msgsnd(CPUPPCState *env, target_ulong rb) -{ - int pir =3D rb & DBELL_PROCIDTAG_MASK; - bool brdcast =3D false; - CPUState *cs, *ccs; - PowerPCCPU *cpu; - - if (!dbell_type_server(rb)) { - return; - } - - /* POWER8 msgsnd is like msgsndp (targets a thread within core) */ - if (!(env->insns_flags2 & PPC2_ISA300)) { - msgsnd_core_tir(env, rb & PPC_BITMASK(57, 63), PPC_INTERRUPT_HDOOR= BELL); - return; - } - - /* POWER9 and later msgsnd is a global (targets any thread) */ - cpu =3D ppc_get_vcpu_by_pir(pir); - if (!cpu) { - return; - } - cs =3D CPU(cpu); - - if (dbell_bcast_core(rb) || (dbell_bcast_subproc(rb) && - (env->flags & POWERPC_FLAG_SMT_1LPAR))) { - brdcast =3D true; - } - - if (ppc_cpu_core_single_threaded(cs) || !brdcast) { - ppc_set_irq(cpu, PPC_INTERRUPT_HDOORBELL, 1); - return; - } - - /* - * Why is bql needed for walking CPU list? Answer seems to be because = ppc - * irq handling needs it, but ppc_set_irq takes the lock itself if nee= ded, - * so could this be removed? - */ - bql_lock(); - THREAD_SIBLING_FOREACH(cs, ccs) { - ppc_set_irq(POWERPC_CPU(ccs), PPC_INTERRUPT_HDOORBELL, 1); - } - bql_unlock(); -} - -#ifdef TARGET_PPC64 -void helper_book3s_msgclrp(CPUPPCState *env, target_ulong rb) -{ - helper_hfscr_facility_check(env, HFSCR_MSGP, "msgclrp", HFSCR_IC_MSGP); - - if (!dbell_type_server(rb)) { - return; - } - - ppc_set_irq(env_archcpu(env), PPC_INTERRUPT_DOORBELL, 0); -} - -/* - * sends a message to another thread on the same - * multi-threaded processor - */ -void helper_book3s_msgsndp(CPUPPCState *env, target_ulong rb) -{ - helper_hfscr_facility_check(env, HFSCR_MSGP, "msgsndp", HFSCR_IC_MSGP); - - if (!dbell_type_server(rb)) { - return; - } - - msgsnd_core_tir(env, rb & PPC_BITMASK(57, 63), PPC_INTERRUPT_DOORBELL); -} -#endif /* TARGET_PPC64 */ - -/* Single-step tracing */ -void helper_book3s_trace(CPUPPCState *env, target_ulong prev_ip) -{ - uint32_t error_code =3D 0; - if (env->insns_flags2 & PPC2_ISA207S) { - /* Load/store reporting, SRR1[35, 36] and SDAR, are not implemente= d. */ - env->spr[SPR_POWER_SIAR] =3D prev_ip; - error_code =3D PPC_BIT(33); - } - raise_exception_err(env, POWERPC_EXCP_TRACE, error_code); -} - -#endif /* !CONFIG_USER_ONLY */ -#endif /* CONFIG_TCG */ diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c index 2459d2d095..4b859a8ffa 100644 --- a/target/ppc/tcg-excp_helper.c +++ b/target/ppc/tcg-excp_helper.c @@ -17,6 +17,7 @@ * License along with this library; if not, see . */ #include "qemu/osdep.h" +#include "qemu/main-loop.h" #include "qemu/log.h" #include "exec/cpu_ldst.h" #include "exec/exec-all.h" @@ -55,13 +56,13 @@ void helper_raise_exception(CPUPPCState *env, uint32_t = exception) =20 #ifndef CONFIG_USER_ONLY =20 -void raise_exception_err(CPUPPCState *env, uint32_t exception, +static G_NORETURN void raise_exception_err(CPUPPCState *env, uint32_t exce= ption, uint32_t error_code) { raise_exception_err_ra(env, exception, error_code, 0); } =20 -void raise_exception(CPUPPCState *env, uint32_t exception) +static G_NORETURN void raise_exception(CPUPPCState *env, uint32_t exceptio= n) { raise_exception_err_ra(env, exception, 0, 0); } @@ -426,4 +427,422 @@ uint32_t ppc_ldl_code(CPUArchState *env, target_ulong= addr) return insn; } =20 +#if defined(TARGET_PPC64) +void helper_attn(CPUPPCState *env) +{ + /* POWER attn is unprivileged when enabled by HID, otherwise illegal */ + if ((*env->check_attn)(env)) { + powerpc_checkstop(env, "host executed attn"); + } else { + raise_exception_err(env, POWERPC_EXCP_HV_EMU, + POWERPC_EXCP_INVAL | POWERPC_EXCP_INVAL_INVAL); + } +} + +void helper_scv(CPUPPCState *env, uint32_t lev) +{ + if (env->spr[SPR_FSCR] & (1ull << FSCR_SCV)) { + raise_exception_err(env, POWERPC_EXCP_SYSCALL_VECTORED, lev); + } else { + raise_exception_err(env, POWERPC_EXCP_FU, FSCR_IC_SCV); + } +} + +void helper_pminsn(CPUPPCState *env, uint32_t insn) +{ + CPUState *cs =3D env_cpu(env); + + cs->halted =3D 1; + + /* Condition for waking up at 0x100 */ + env->resume_as_sreset =3D (insn !=3D PPC_PM_STOP) || + (env->spr[SPR_PSSCR] & PSSCR_EC); + + /* HDECR is not to wake from PM state, it may have already fired */ + if (env->resume_as_sreset) { + PowerPCCPU *cpu =3D env_archcpu(env); + ppc_set_irq(cpu, PPC_INTERRUPT_HDECR, 0); + } + + ppc_maybe_interrupt(env); +} + +#endif /* TARGET_PPC64 */ +void helper_store_msr(CPUPPCState *env, target_ulong val) +{ + uint32_t excp =3D hreg_store_msr(env, val, 0); + + if (excp !=3D 0) { + cpu_interrupt_exittb(env_cpu(env)); + raise_exception(env, excp); + } +} + +void helper_ppc_maybe_interrupt(CPUPPCState *env) +{ + ppc_maybe_interrupt(env); +} + +static void do_rfi(CPUPPCState *env, target_ulong nip, target_ulong msr) +{ + /* MSR:POW cannot be set by any form of rfi */ + msr &=3D ~(1ULL << MSR_POW); + + /* MSR:TGPR cannot be set by any form of rfi */ + if (env->flags & POWERPC_FLAG_TGPR) { + msr &=3D ~(1ULL << MSR_TGPR); + } + +#ifdef TARGET_PPC64 + /* Switching to 32-bit ? Crop the nip */ + if (!msr_is_64bit(env, msr)) { + nip =3D (uint32_t)nip; + } +#else + nip =3D (uint32_t)nip; +#endif + /* XXX: beware: this is false if VLE is supported */ + env->nip =3D nip & ~((target_ulong)0x00000003); + hreg_store_msr(env, msr, 1); + trace_ppc_excp_rfi(env->nip, env->msr); + /* + * No need to raise an exception here, as rfi is always the last + * insn of a TB + */ + cpu_interrupt_exittb(env_cpu(env)); + /* Reset the reservation */ + env->reserve_addr =3D -1; + + /* Context synchronizing: check if TCG TLB needs flush */ + check_tlb_flush(env, false); +} + +void helper_rfi(CPUPPCState *env) +{ + do_rfi(env, env->spr[SPR_SRR0], env->spr[SPR_SRR1] & 0xfffffffful); +} + +#ifdef TARGET_PPC64 +void helper_rfid(CPUPPCState *env) +{ + /* + * The architecture defines a number of rules for which bits can + * change but in practice, we handle this in hreg_store_msr() + * which will be called by do_rfi(), so there is no need to filter + * here + */ + do_rfi(env, env->spr[SPR_SRR0], env->spr[SPR_SRR1]); +} + +void helper_rfscv(CPUPPCState *env) +{ + do_rfi(env, env->lr, env->ctr); +} + +void helper_hrfid(CPUPPCState *env) +{ + do_rfi(env, env->spr[SPR_HSRR0], env->spr[SPR_HSRR1]); +} + +void helper_rfebb(CPUPPCState *env, target_ulong s) +{ + target_ulong msr =3D env->msr; + + /* + * Handling of BESCR bits 32:33 according to PowerISA v3.1: + * + * "If BESCR 32:33 !=3D 0b00 the instruction is treated as if + * the instruction form were invalid." + */ + if (env->spr[SPR_BESCR] & BESCR_INVALID) { + raise_exception_err(env, POWERPC_EXCP_PROGRAM, + POWERPC_EXCP_INVAL | POWERPC_EXCP_INVAL_INVAL); + } + + env->nip =3D env->spr[SPR_EBBRR]; + + /* Switching to 32-bit ? Crop the nip */ + if (!msr_is_64bit(env, msr)) { + env->nip =3D (uint32_t)env->spr[SPR_EBBRR]; + } + + if (s) { + env->spr[SPR_BESCR] |=3D BESCR_GE; + } else { + env->spr[SPR_BESCR] &=3D ~BESCR_GE; + } +} + +/* + * Triggers or queues an 'ebb_excp' EBB exception. All checks + * but FSCR, HFSCR and msr_pr must be done beforehand. + * + * PowerISA v3.1 isn't clear about whether an EBB should be + * postponed or cancelled if the EBB facility is unavailable. + * Our assumption here is that the EBB is cancelled if both + * FSCR and HFSCR EBB facilities aren't available. + */ +static void do_ebb(CPUPPCState *env, int ebb_excp) +{ + PowerPCCPU *cpu =3D env_archcpu(env); + + /* + * FSCR_EBB and FSCR_IC_EBB are the same bits used with + * HFSCR. + */ + helper_fscr_facility_check(env, FSCR_EBB, 0, FSCR_IC_EBB); + helper_hfscr_facility_check(env, FSCR_EBB, "EBB", FSCR_IC_EBB); + + if (ebb_excp =3D=3D POWERPC_EXCP_PERFM_EBB) { + env->spr[SPR_BESCR] |=3D BESCR_PMEO; + } else if (ebb_excp =3D=3D POWERPC_EXCP_EXTERNAL_EBB) { + env->spr[SPR_BESCR] |=3D BESCR_EEO; + } + + if (FIELD_EX64(env->msr, MSR, PR)) { + powerpc_excp(cpu, ebb_excp); + } else { + ppc_set_irq(cpu, PPC_INTERRUPT_EBB, 1); + } +} + +void raise_ebb_perfm_exception(CPUPPCState *env) +{ + bool perfm_ebb_enabled =3D env->spr[SPR_POWER_MMCR0] & MMCR0_EBE && + env->spr[SPR_BESCR] & BESCR_PME && + env->spr[SPR_BESCR] & BESCR_GE; + + if (!perfm_ebb_enabled) { + return; + } + + do_ebb(env, POWERPC_EXCP_PERFM_EBB); +} +#endif /* TARGET_PPC64 */ + +/*************************************************************************= ****/ +/* Embedded PowerPC specific helpers */ +void helper_40x_rfci(CPUPPCState *env) +{ + do_rfi(env, env->spr[SPR_40x_SRR2], env->spr[SPR_40x_SRR3]); +} + +void helper_rfci(CPUPPCState *env) +{ + do_rfi(env, env->spr[SPR_BOOKE_CSRR0], env->spr[SPR_BOOKE_CSRR1]); +} + +void helper_rfdi(CPUPPCState *env) +{ + /* FIXME: choose CSRR1 or DSRR1 based on cpu type */ + do_rfi(env, env->spr[SPR_BOOKE_DSRR0], env->spr[SPR_BOOKE_DSRR1]); +} + +void helper_rfmci(CPUPPCState *env) +{ + /* FIXME: choose CSRR1 or MCSRR1 based on cpu type */ + do_rfi(env, env->spr[SPR_BOOKE_MCSRR0], env->spr[SPR_BOOKE_MCSRR1]); +} + +/* Embedded.Processor Control */ +static int dbell2irq(target_ulong rb) +{ + int msg =3D rb & DBELL_TYPE_MASK; + int irq =3D -1; + + switch (msg) { + case DBELL_TYPE_DBELL: + irq =3D PPC_INTERRUPT_DOORBELL; + break; + case DBELL_TYPE_DBELL_CRIT: + irq =3D PPC_INTERRUPT_CDOORBELL; + break; + case DBELL_TYPE_G_DBELL: + case DBELL_TYPE_G_DBELL_CRIT: + case DBELL_TYPE_G_DBELL_MC: + /* XXX implement */ + default: + break; + } + + return irq; +} + +void helper_msgclr(CPUPPCState *env, target_ulong rb) +{ + int irq =3D dbell2irq(rb); + + if (irq < 0) { + return; + } + + ppc_set_irq(env_archcpu(env), irq, 0); +} + +void helper_msgsnd(target_ulong rb) +{ + int irq =3D dbell2irq(rb); + int pir =3D rb & DBELL_PIRTAG_MASK; + CPUState *cs; + + if (irq < 0) { + return; + } + + bql_lock(); + CPU_FOREACH(cs) { + PowerPCCPU *cpu =3D POWERPC_CPU(cs); + CPUPPCState *cenv =3D &cpu->env; + + if ((rb & DBELL_BRDCAST_MASK) || (cenv->spr[SPR_BOOKE_PIR] =3D=3D = pir)) { + ppc_set_irq(cpu, irq, 1); + } + } + bql_unlock(); +} + +/* Server Processor Control */ + +static bool dbell_type_server(target_ulong rb) +{ + /* + * A Directed Hypervisor Doorbell message is sent only if the + * message type is 5. All other types are reserved and the + * instruction is a no-op + */ + return (rb & DBELL_TYPE_MASK) =3D=3D DBELL_TYPE_DBELL_SERVER; +} + +static inline bool dbell_bcast_core(target_ulong rb) +{ + return (rb & DBELL_BRDCAST_MASK) =3D=3D DBELL_BRDCAST_CORE; +} + +static inline bool dbell_bcast_subproc(target_ulong rb) +{ + return (rb & DBELL_BRDCAST_MASK) =3D=3D DBELL_BRDCAST_SUBPROC; +} + +/* + * Send an interrupt to a thread in the same core as env). + */ +static void msgsnd_core_tir(CPUPPCState *env, uint32_t target_tir, int irq) +{ + PowerPCCPU *cpu =3D env_archcpu(env); + CPUState *cs =3D env_cpu(env); + + if (ppc_cpu_lpar_single_threaded(cs)) { + if (target_tir =3D=3D 0) { + ppc_set_irq(cpu, irq, 1); + } + } else { + CPUState *ccs; + + /* Does iothread need to be locked for walking CPU list? */ + bql_lock(); + THREAD_SIBLING_FOREACH(cs, ccs) { + PowerPCCPU *ccpu =3D POWERPC_CPU(ccs); + if (target_tir =3D=3D ppc_cpu_tir(ccpu)) { + ppc_set_irq(ccpu, irq, 1); + break; + } + } + bql_unlock(); + } +} + +void helper_book3s_msgclr(CPUPPCState *env, target_ulong rb) +{ + if (!dbell_type_server(rb)) { + return; + } + + ppc_set_irq(env_archcpu(env), PPC_INTERRUPT_HDOORBELL, 0); +} + +void helper_book3s_msgsnd(CPUPPCState *env, target_ulong rb) +{ + int pir =3D rb & DBELL_PROCIDTAG_MASK; + bool brdcast =3D false; + CPUState *cs, *ccs; + PowerPCCPU *cpu; + + if (!dbell_type_server(rb)) { + return; + } + + /* POWER8 msgsnd is like msgsndp (targets a thread within core) */ + if (!(env->insns_flags2 & PPC2_ISA300)) { + msgsnd_core_tir(env, rb & PPC_BITMASK(57, 63), PPC_INTERRUPT_HDOOR= BELL); + return; + } + + /* POWER9 and later msgsnd is a global (targets any thread) */ + cpu =3D ppc_get_vcpu_by_pir(pir); + if (!cpu) { + return; + } + cs =3D CPU(cpu); + + if (dbell_bcast_core(rb) || (dbell_bcast_subproc(rb) && + (env->flags & POWERPC_FLAG_SMT_1LPAR))) { + brdcast =3D true; + } + + if (ppc_cpu_core_single_threaded(cs) || !brdcast) { + ppc_set_irq(cpu, PPC_INTERRUPT_HDOORBELL, 1); + return; + } + + /* + * Why is bql needed for walking CPU list? Answer seems to be because = ppc + * irq handling needs it, but ppc_set_irq takes the lock itself if nee= ded, + * so could this be removed? + */ + bql_lock(); + THREAD_SIBLING_FOREACH(cs, ccs) { + ppc_set_irq(POWERPC_CPU(ccs), PPC_INTERRUPT_HDOORBELL, 1); + } + bql_unlock(); +} + +#ifdef TARGET_PPC64 +void helper_book3s_msgclrp(CPUPPCState *env, target_ulong rb) +{ + helper_hfscr_facility_check(env, HFSCR_MSGP, "msgclrp", HFSCR_IC_MSGP); + + if (!dbell_type_server(rb)) { + return; + } + + ppc_set_irq(env_archcpu(env), PPC_INTERRUPT_DOORBELL, 0); +} + +/* + * sends a message to another thread on the same + * multi-threaded processor + */ +void helper_book3s_msgsndp(CPUPPCState *env, target_ulong rb) +{ + helper_hfscr_facility_check(env, HFSCR_MSGP, "msgsndp", HFSCR_IC_MSGP); + + if (!dbell_type_server(rb)) { + return; + } + + msgsnd_core_tir(env, rb & PPC_BITMASK(57, 63), PPC_INTERRUPT_DOORBELL); +} +#endif /* TARGET_PPC64 */ + +/* Single-step tracing */ +void helper_book3s_trace(CPUPPCState *env, target_ulong prev_ip) +{ + uint32_t error_code =3D 0; + if (env->insns_flags2 & PPC2_ISA207S) { + /* Load/store reporting, SRR1[35, 36] and SDAR, are not implemente= d. */ + env->spr[SPR_POWER_SIAR] =3D prev_ip; + error_code =3D PPC_BIT(33); + } + raise_exception_err(env, POWERPC_EXCP_TRACE, error_code); +} #endif /* !CONFIG_USER_ONLY */ --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700148; cv=none; d=zohomail.com; s=zohoarc; b=nTDUb8dsmJz1VrylTM4yXxGCLX7CBvBb0wE4N7KgPBOhQZpJGuvphWvPYiLCukxaq5y5KZeSZkcEyf9b95P+2ev9DDmh6zVvNNVoH8/UnDOCJZVYUFVqCOxEGJpyn8WiQyNrcBNVHnEk6GcC6WMlRZKCMbAMoyAwPjiCe51AFpI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700148; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=A6q6Au2PYMTFLE8G5QWMGA2jsF0I3uVxpvs/IiCO/uk=; b=O91OwoQT8kyf98R0+MM36EKydt5u8WPGCiO1lX0e0qRRmo6zqfv/6ov833clP3dLCwKov8wWYwF082coXbnsaV6EgWtVQ7l9ILSfaSfUcFNt5zoOH4HZgTHg7tmjjl21TsypkPx8cY/lEGjVtQdYckygWa9s6Ym3Yw/LVOVt4lo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741700148370526.5837315566766; Tue, 11 Mar 2025 06:35:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzIX-0002FP-OI; Tue, 11 Mar 2025 09:05:37 -0400 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 1trzET-0005Uv-19; Tue, 11 Mar 2025 09:01:24 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEP-0000F2-Mi; Tue, 11 Mar 2025 09:01:16 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-2ff69365e1dso7929377a91.3; Tue, 11 Mar 2025 06:01:12 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698071; x=1742302871; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=A6q6Au2PYMTFLE8G5QWMGA2jsF0I3uVxpvs/IiCO/uk=; b=lXeppP1+vghLkG/pDv/OlwJbFFgAs7rIO6pNb+/q7jZcBPCxs2bM9jGUlyspT9g/OM Epsll3+5lS3F6HpJxyx3SJm/QqpCOvX104Xo8AR3YiCKTtm9lHepZsWG2C9350PyB/Vy 3bMtxmKUdeEFA2WM1XXMeg9FxQpt0+C02OtnOpG0BqHUe35wJjZxYx09VIUulAtRgYdk T2wi5lye2W012gjKonfy+MWTt2LMZaqz5HVws3AgibX15DD39XxFO3I/6tfGk+xBb20s tLV+CyAjnhA0kIkUUHfqnPKOLtAaxujDsKtJAwIPpB3zmJmlf3dm9Mo5r5X22ypS8xei rv8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698071; x=1742302871; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=A6q6Au2PYMTFLE8G5QWMGA2jsF0I3uVxpvs/IiCO/uk=; b=SS66HIl1CwTUCdZB9GI//u9unMC03YHFgBhqReQ1EemaYzwZenbVwcwrpXLxr5fRw2 muWoLpitvQuj+8RjQp0Msdw+LtUsR3s7Zxc8o29t9Jzso9S4/kIziO1h7yjAdyxSUYdj 68R1k1c5KGK1MoEsfrlfBIbSSaWIds9SuvIgVNiIEsX+99P8E7fKq81HLCo8rB0HXT23 autd5+CsuoyX7IhvLqk8nup4T7ALr0pnJqcahMKPEM5JtW8DZv5uar1VW3r4uaTkgAOY uBCbMD/Q+yclr1dx69b+tkYH1whGYRvukO3AwiQB4gk65owXOJySaK9DOG19Nz76mcLj HlHQ== X-Forwarded-Encrypted: i=1; AJvYcCUe/hVnYp84r2CARbXen1QdLpzqKjBn4lo/FUxPKLgsJEyHIVY6MPR/TljPFyK12sE239NPznyF8A==@nongnu.org X-Gm-Message-State: AOJu0YwNnn/AOa+EaSN1VsGq8Yl2K22yJ/a1twneThsORlM0lTEdcRfs 11ZQM7ZvG9yzbfQENUNcc91RvpwFsQmqUKmz1jqhLe+ez+0zeq7c0sPHgw== X-Gm-Gg: ASbGncuVMFy+xjNULygJtMgnUhSpJ1hFc7Ir86GLcvaM4Ga+xHwZGFFHkUtzNb/8cZI kvoGQITIOCEOu984niZIVvTwT0kcej+o/sukXI5k+6QawwhtDBPXRhClqFIOQ12HeKHz3kAFmjK 20s6hOVzNsXsip8VqUwDCs421MAlmAeBktONYhnMr+zjpd8GMlcnNk1e6XUEEzQPoZx7JFyxP6S iRIQNQAdCWaDiSQ+dt+J3BPwieszPeOWMIa343bUeDEL80Sknb/8vAQNUxiODHS1jibh1CWHldi sKLu23ftjnSQkgxBwEwyC71Xf+0IV75/iA1FrIzuSLXP4J5KPME= X-Google-Smtp-Source: AGHT+IFHxsySwNaiuFmOaF0flXJIqS8ZmcbDMIyGEaCgNHxjC15RdQwaFlxhKTL6OL5W4I5lt7gdgw== X-Received: by 2002:a17:90a:e7ce:b0:2ff:58a4:9db3 with SMTP id 98e67ed59e1d1-2ff7cf25652mr26488690a91.35.1741698071504; Tue, 11 Mar 2025 06:01:11 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 54/72] hw/ppc/spapr: Convert HPTE() macro as hpte_get_ptr() method Date: Tue, 11 Mar 2025 22:57:48 +1000 Message-ID: <20250311125815.903177-55-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700149465019100 From: Philippe Mathieu-Daud=C3=A9 Convert HPTE() macro as hpte_get_ptr() method. Reviewed-by: Nicholas Piggin Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20241220213103.6314-2-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- hw/ppc/spapr.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index c7cf04e063..0cae4853db 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1402,7 +1402,13 @@ static bool spapr_get_pate(PPCVirtualHypervisor *vhy= p, PowerPCCPU *cpu, } } =20 -#define HPTE(_table, _i) (void *)(((uint64_t *)(_table)) + ((_i) * 2)) +static uint64_t *hpte_get_ptr(SpaprMachineState *s, unsigned index) +{ + uint64_t *table =3D s->htab; + + return &table[2 * index]; +} + #define HPTE_VALID(_hpte) (tswap64(*((uint64_t *)(_hpte))) & HPTE64_V_VAL= ID) #define HPTE_DIRTY(_hpte) (tswap64(*((uint64_t *)(_hpte))) & HPTE64_V_HPT= E_DIRTY) #define CLEAN_HPTE(_hpte) ((*(uint64_t *)(_hpte)) &=3D tswap64(~HPTE64_V_= HPTE_DIRTY)) @@ -1617,7 +1623,7 @@ int spapr_reallocate_hpt(SpaprMachineState *spapr, in= t shift, Error **errp) spapr->htab_shift =3D shift; =20 for (i =3D 0; i < size / HASH_PTE_SIZE_64; i++) { - DIRTY_HPTE(HPTE(spapr->htab, i)); + DIRTY_HPTE(hpte_get_ptr(spapr, i)); } } /* We're setting up a hash table, so that means we're not radix */ @@ -2174,7 +2180,7 @@ static void htab_save_chunk(QEMUFile *f, SpaprMachine= State *spapr, qemu_put_be32(f, chunkstart); qemu_put_be16(f, n_valid); qemu_put_be16(f, n_invalid); - qemu_put_buffer(f, HPTE(spapr->htab, chunkstart), + qemu_put_buffer(f, (void *)hpte_get_ptr(spapr, chunkstart), HASH_PTE_SIZE_64 * n_valid); } =20 @@ -2200,16 +2206,16 @@ static void htab_save_first_pass(QEMUFile *f, Spapr= MachineState *spapr, =20 /* Consume invalid HPTEs */ while ((index < htabslots) - && !HPTE_VALID(HPTE(spapr->htab, index))) { - CLEAN_HPTE(HPTE(spapr->htab, index)); + && !HPTE_VALID(hpte_get_ptr(spapr, index))) { + CLEAN_HPTE(hpte_get_ptr(spapr, index)); index++; } =20 /* Consume valid HPTEs */ chunkstart =3D index; while ((index < htabslots) && (index - chunkstart < USHRT_MAX) - && HPTE_VALID(HPTE(spapr->htab, index))) { - CLEAN_HPTE(HPTE(spapr->htab, index)); + && HPTE_VALID(hpte_get_ptr(spapr, index))) { + CLEAN_HPTE(hpte_get_ptr(spapr, index)); index++; } =20 @@ -2249,7 +2255,7 @@ static int htab_save_later_pass(QEMUFile *f, SpaprMac= hineState *spapr, =20 /* Consume non-dirty HPTEs */ while ((index < htabslots) - && !HPTE_DIRTY(HPTE(spapr->htab, index))) { + && !HPTE_DIRTY(hpte_get_ptr(spapr, index))) { index++; examined++; } @@ -2257,9 +2263,9 @@ static int htab_save_later_pass(QEMUFile *f, SpaprMac= hineState *spapr, chunkstart =3D index; /* Consume valid dirty HPTEs */ while ((index < htabslots) && (index - chunkstart < USHRT_MAX) - && HPTE_DIRTY(HPTE(spapr->htab, index)) - && HPTE_VALID(HPTE(spapr->htab, index))) { - CLEAN_HPTE(HPTE(spapr->htab, index)); + && HPTE_DIRTY(hpte_get_ptr(spapr, index)) + && HPTE_VALID(hpte_get_ptr(spapr, index))) { + CLEAN_HPTE(hpte_get_ptr(spapr, index)); index++; examined++; } @@ -2267,9 +2273,9 @@ static int htab_save_later_pass(QEMUFile *f, SpaprMac= hineState *spapr, invalidstart =3D index; /* Consume invalid dirty HPTEs */ while ((index < htabslots) && (index - invalidstart < USHRT_MAX) - && HPTE_DIRTY(HPTE(spapr->htab, index)) - && !HPTE_VALID(HPTE(spapr->htab, index))) { - CLEAN_HPTE(HPTE(spapr->htab, index)); + && HPTE_DIRTY(hpte_get_ptr(spapr, index)) + && !HPTE_VALID(hpte_get_ptr(spapr, index))) { + CLEAN_HPTE(hpte_get_ptr(spapr, index)); index++; examined++; } @@ -2451,11 +2457,11 @@ static int htab_load(QEMUFile *f, void *opaque, int= version_id) =20 if (spapr->htab) { if (n_valid) { - qemu_get_buffer(f, HPTE(spapr->htab, index), + qemu_get_buffer(f, (void *)hpte_get_ptr(spapr, index), HASH_PTE_SIZE_64 * n_valid); } if (n_invalid) { - memset(HPTE(spapr->htab, index + n_valid), 0, + memset(hpte_get_ptr(spapr, index + n_valid), 0, HASH_PTE_SIZE_64 * n_invalid); } } else { --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699601; cv=none; d=zohomail.com; s=zohoarc; b=hUVCvObfHLwFkCiivACHPdBGwBqTFAcvLu/7+y6Q7YAVYawfAnPlRaglOdZ4Civ8nabCZPuYssMAjzefjXPBN45/pdPapIQP8GgLTEx7nDzN8wUN1Nv6fYjh88eeIp5HuVzKIfZWm9CRAUgBS1mC/N97Lot5PXjKojzYz5Xxe7A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699601; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kNfAFKwb/h/Q47CuyyAbJR4Xbbiqi59X5UF2kJZMU+s=; b=aZrDaIqpbJfOfTCmOPXhlaY+PMfkx7ztnXC5+P4h1c5h+Hmp7Db98sWpZpUdW+PEIqA6zhONQwueJyZrXWMcZ0qp8GB4XKzh6gPzQra3V5W8tpxp0JSdeKIWV+Mr1JRIXyLt4eB0IhiUbrv6brHukUAoOYIfhhpyTdeZ+9M+SwQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699601429197.4927506239875; Tue, 11 Mar 2025 06:26:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzIr-0002oH-AC; Tue, 11 Mar 2025 09:05:49 -0400 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 1trzEX-0005Vj-7I; Tue, 11 Mar 2025 09:01:27 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzET-0000FP-7t; Tue, 11 Mar 2025 09:01:19 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-2ff797f8f1bso7290510a91.3; Tue, 11 Mar 2025 06:01:15 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698074; x=1742302874; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kNfAFKwb/h/Q47CuyyAbJR4Xbbiqi59X5UF2kJZMU+s=; b=kxuU6wQQwNaZ4em4NG4E6Q0MFA3DZJ85S04AoxUi7JnFufgZoZhtkwGfIDeuhw+6pK NouYzoddDctuadi4UL7/il4Rkof4m5BJAUVo4fhE+af44/SnqtEhB5JEBJ/jZqFvfPgp cqimOvAP5CbNQacpHGFDnOfsnHmbSkO5A+aTJbvFOoG3zXSB6R06MFhovsoLygaFwri0 eHOT3In42NwyutpLmsgQaEUjs6xoCJDxkoNUNdNRykUGQg3UuTJQj13vjEvq5fRNazfg gP/xJJ+j8Ai2s3wEJkoFKxsNpANhE7B9UkTdHadC/0Q+U4lwREjGt1HyF3ByN7VXYIFy C1gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698074; x=1742302874; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kNfAFKwb/h/Q47CuyyAbJR4Xbbiqi59X5UF2kJZMU+s=; b=ltr/HqNkrFcKauHaTi/qbXnf1Whr5KRT4QIaJXkSDLSLDgm42UDOG3WohAAXCx8hgf MHuKb3Fsp2qJmuKwd+4SpP4qQsunM4cAMJkQeYMTZZvdTWKngcdy/0OoacfdvRSEKSgq TX3v3N1h9G5YeqdXB1PXtEnEexmJ5AlLE6CBADA2JLo4UiY68JhPqp/047NvYlZj6L2u zElTps19q46kD1AVH1wvFZ/n4bcDaj44bj+9TGu4BSeDZP9d8J6g2EbmfdVQZgZShaNJ xNYWbCJhigc1qsh9WGxr0qfEitqhDKt+2LpcHr9L7ytMcReCs4PQVjNTUm+O+Urf/guq IPYQ== X-Forwarded-Encrypted: i=1; AJvYcCX/LoaRH22fENwWTcy2vdTdH+YlsFVWkm0T+CS/pSNO31qSpkLi4HH9dbSGRFAItZ8boLf16fyvbg==@nongnu.org X-Gm-Message-State: AOJu0YzHVvQLnBAW2ErImN2DZacFp18gRswQL2oEYCf8R+NLPt871B5O m509l/O6e2R4soXyG/hvV97gPNrO47261+2CFwKaaa0CGiOMvi4QzzQZoQ== X-Gm-Gg: ASbGnctbmIEm6E+I3aLkq+8v7pPwPDCS8kkpoK9EyBtvqis29X7F+YZYQUHi98vqJV1 VbrrYlhWJwxGtkmuw51y5x5L/BNiDObx4kpZ3AfGjJLWFoeAw5/jhp1AIpt4jZgHdT6aMdkY4A2 0aSl8BFZxID09aAwaDQWXLqaWFLSCSoUY0l0np0weqodiFKgHx7asKelmc9xpUe5lPEf+smIoGP fqBLuJeT9Df0yl6GsVAy7B3jwt3+X2D/i4gp5DlJ2yTs7qWSwKOHkJ7xq8pTwtgDQK/qo6KDiyz H6Px5ydoB4reOZJR2QbUTkHGBnKRRCqKlaFJzIjOCrzsfEwq1NtqcGqjbu2z6Q== X-Google-Smtp-Source: AGHT+IEUxDsnBxxE5nNu4SKGqQyGuvwFXnfJLIyrLcaDFm/15CUqwxnjvMAlvSg/FQ7RNNwBFBQGpw== X-Received: by 2002:a17:90b:2648:b0:2fe:e9c6:689e with SMTP id 98e67ed59e1d1-300ff0c9bacmr4859052a91.8.1741698074488; Tue, 11 Mar 2025 06:01:14 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 55/72] hw/ppc/spapr: Convert HPTE_VALID() macro as hpte_is_valid() method Date: Tue, 11 Mar 2025 22:57:49 +1000 Message-ID: <20250311125815.903177-56-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699607513019000 From: Philippe Mathieu-Daud=C3=A9 Convert HPTE_VALID() macro as hpte_is_valid() method. sPAPR data structures including the hash page table are big-endian regardless of current CPU endian mode, so use the big-endian LD/ST API to access the hash PTEs. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Nicholas Piggin Reviewed-by: Harsh Prateek Bora Message-ID: <20241220213103.6314-3-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- hw/ppc/spapr.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 0cae4853db..daf997cea1 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1409,7 +1409,11 @@ static uint64_t *hpte_get_ptr(SpaprMachineState *s, = unsigned index) return &table[2 * index]; } =20 -#define HPTE_VALID(_hpte) (tswap64(*((uint64_t *)(_hpte))) & HPTE64_V_VAL= ID) +static bool hpte_is_valid(SpaprMachineState *s, unsigned index) +{ + return ldq_be_p(hpte_get_ptr(s, index)) & HPTE64_V_VALID; +} + #define HPTE_DIRTY(_hpte) (tswap64(*((uint64_t *)(_hpte))) & HPTE64_V_HPT= E_DIRTY) #define CLEAN_HPTE(_hpte) ((*(uint64_t *)(_hpte)) &=3D tswap64(~HPTE64_V_= HPTE_DIRTY)) #define DIRTY_HPTE(_hpte) ((*(uint64_t *)(_hpte)) |=3D tswap64(HPTE64_V_H= PTE_DIRTY)) @@ -2206,7 +2210,7 @@ static void htab_save_first_pass(QEMUFile *f, SpaprMa= chineState *spapr, =20 /* Consume invalid HPTEs */ while ((index < htabslots) - && !HPTE_VALID(hpte_get_ptr(spapr, index))) { + && !hpte_is_valid(spapr, index)) { CLEAN_HPTE(hpte_get_ptr(spapr, index)); index++; } @@ -2214,7 +2218,7 @@ static void htab_save_first_pass(QEMUFile *f, SpaprMa= chineState *spapr, /* Consume valid HPTEs */ chunkstart =3D index; while ((index < htabslots) && (index - chunkstart < USHRT_MAX) - && HPTE_VALID(hpte_get_ptr(spapr, index))) { + && hpte_is_valid(spapr, index)) { CLEAN_HPTE(hpte_get_ptr(spapr, index)); index++; } @@ -2264,7 +2268,7 @@ static int htab_save_later_pass(QEMUFile *f, SpaprMac= hineState *spapr, /* Consume valid dirty HPTEs */ while ((index < htabslots) && (index - chunkstart < USHRT_MAX) && HPTE_DIRTY(hpte_get_ptr(spapr, index)) - && HPTE_VALID(hpte_get_ptr(spapr, index))) { + && hpte_is_valid(spapr, index)) { CLEAN_HPTE(hpte_get_ptr(spapr, index)); index++; examined++; @@ -2274,7 +2278,7 @@ static int htab_save_later_pass(QEMUFile *f, SpaprMac= hineState *spapr, /* Consume invalid dirty HPTEs */ while ((index < htabslots) && (index - invalidstart < USHRT_MAX) && HPTE_DIRTY(hpte_get_ptr(spapr, index)) - && !HPTE_VALID(hpte_get_ptr(spapr, index))) { + && !hpte_is_valid(spapr, index)) { CLEAN_HPTE(hpte_get_ptr(spapr, index)); index++; examined++; --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699737; cv=none; d=zohomail.com; s=zohoarc; b=Z3by8mObOi9ceiITQc+CbIvmlF9d1WzgH5dfQ1/5riPZDHDHUnh4B1Lb6XGxCDYGaq5APGuPguUNspXg9dnG9isc2POybbjt4I/GzbzLjySBXCJiYsg6o6LiLEYrCV7DrLj3IAeSIVnjM07+8fTZIxNzT5GwcvjLn9yPCcIjfI0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699737; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wiqaFq1CDDEcKauctJ0QrZkvhAfYnv9s43KRAQPzSbk=; b=mVNTt88GgsR/vpPUZuwCYOuT0pKLon/68TqwZzI4c+3BeMmxtXu3/D9b66GjVzMel9QayeEesPp5ipptuZFD6IfX3aGp4jsYmWytHLmdvZ98X9YjE/XiUtGLmvhgpRVWAmvvA4SZd1Y+RK8b7YBpdicdosygRqnlPlYLtlSga9A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699737397849.7692831144304; Tue, 11 Mar 2025 06:28:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJP-0004Hz-4m; Tue, 11 Mar 2025 09:06:23 -0400 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 1trzEZ-0005Vr-Qf; Tue, 11 Mar 2025 09:01:27 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEV-0000G9-Uv; Tue, 11 Mar 2025 09:01:22 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-2feb91a25bdso8350772a91.1; Tue, 11 Mar 2025 06:01:19 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698078; x=1742302878; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wiqaFq1CDDEcKauctJ0QrZkvhAfYnv9s43KRAQPzSbk=; b=jhN5LRDOEOV3/BwiWc7xG9BytRBVTP0ZlL/jGLUaSF+VH+NjQ2IGBj+MNMIYfJ1eKF eMfajtBXpDfTz7oKMFjQDkqw5H1pbDr51u6+A+xkQtGahxcpklq0rokdj4n4MmSFoIRc ch33CWZGwLkun6aT+S0EDiMedGFe6KdJRSI7woGBYFG+307+TXrm4FfU9cMAAERobeKs L9vZYJL0ZfAquAXSK1lng1WgApIOPCKrFoGX82G1vy5FMz2FYDjlbI0bWApQfFfouwSR Y4QEK5Wj8sG1C6zC19u6qhAZNX4eVDD6qtwIQnaDS/FzZm5OvvkxXzX96VtFHHJe60PW lHUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698078; x=1742302878; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wiqaFq1CDDEcKauctJ0QrZkvhAfYnv9s43KRAQPzSbk=; b=Io7S9OMD1Mvf/Rq3JhlQQRxH9RxwbQM+StJ3GeIn10rfJ8jLR8zmST8CoSKDpV7jNG p8mzjxM3LbFUVteuSf3TbOICxHci46UeaxOS4RESpafzlr0GVzxre4lI/hypT1V1Ku2I y2YGHrkaE72SuS7zI2pZJ1XWSRNOSYBCFPRdln1u5anLyhhMSvF3mGKDuMWZrRpW7g/L pFIAu+vOThTJfQbxgTwMSJuOJ8E9Axtokk7fQPFdHyyH6balnnQ+taPvhqDLEyALfOSF qoJA7qGBaPDdC2J7A4QujqHCSnM/UN9k6dbfb6O7adXpV3rc840CY2LX8vatmHfFQEqS 24Lg== X-Forwarded-Encrypted: i=1; AJvYcCXirWT0qS4NmR21+Ai/yLFBwAIpsQg/SK0rPnihKN3wJrT2xIIm9LrbCkpT/95Mkva9yugfpeJqqg==@nongnu.org X-Gm-Message-State: AOJu0YypYlDRJ575Th20UdME2b65WtMVAyE/IVVJCy4OMnl4hyeE//YQ Xlev6bf8IZ7PB1RnZnGAQQr5k+WWUOAx7khgTj88ygkk2x9Lu7ME8Bhe2A== X-Gm-Gg: ASbGncvvMQn3bwt6Il2wUdrPKYwYbjG0VVF/uCEG/8nW4yBJXjJGLV+jGWQ1pi1b3hl 94dOsRjr5eOxqBXODsNxn32iCOAlvM2kKoBZstHGLna1twtA+tECJnWj6zGFfz7rZIeYi/U0xOg MAWAt/mPHizPeXUppKbSCln0MSH9mZcg7mWpKy/YdBmhhLDJWMi19H5gmc0D77CLOF3N/Om7O4j 15AAZHH7QNwhYrXlLRaZrNffgbjspUkHE+WN1R7vyl9D6Fg0a60hBvurVS9sTbARenNfMEUb7iH uvP+x8TeNaOP5tGtCAOrzPDd38mF4Fe7QTYXwopnDttMlx131Ck= X-Google-Smtp-Source: AGHT+IFZ4rCUZEjZpe1mFQo3aIobhNdwaD5QnMN0PnEvFwTHHvx+66sIohxoNQUv+G35Fntl0zu/OA== X-Received: by 2002:a17:90b:2742:b0:2fe:a8b1:7d8 with SMTP id 98e67ed59e1d1-300ff34d643mr4832273a91.25.1741698077824; Tue, 11 Mar 2025 06:01:17 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 56/72] hw/ppc/spapr: Convert HPTE_DIRTY() macro as hpte_is_dirty() method Date: Tue, 11 Mar 2025 22:57:50 +1000 Message-ID: <20250311125815.903177-57-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699739188019000 From: Philippe Mathieu-Daud=C3=A9 Convert HPTE_DIRTY() macro as hpte_is_dirty() method. sPAPR data structures including the hash page table are big-endian regardless of current CPU endian mode, so use the big-endian LD/ST API to access the hash PTEs. Reviewed-by: Nicholas Piggin Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20241220213103.6314-4-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- hw/ppc/spapr.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index daf997cea1..dd81398445 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1414,7 +1414,11 @@ static bool hpte_is_valid(SpaprMachineState *s, unsi= gned index) return ldq_be_p(hpte_get_ptr(s, index)) & HPTE64_V_VALID; } =20 -#define HPTE_DIRTY(_hpte) (tswap64(*((uint64_t *)(_hpte))) & HPTE64_V_HPT= E_DIRTY) +static bool hpte_is_dirty(SpaprMachineState *s, unsigned index) +{ + return ldq_be_p(hpte_get_ptr(s, index)) & HPTE64_V_HPTE_DIRTY; +} + #define CLEAN_HPTE(_hpte) ((*(uint64_t *)(_hpte)) &=3D tswap64(~HPTE64_V_= HPTE_DIRTY)) #define DIRTY_HPTE(_hpte) ((*(uint64_t *)(_hpte)) |=3D tswap64(HPTE64_V_H= PTE_DIRTY)) =20 @@ -2259,7 +2263,7 @@ static int htab_save_later_pass(QEMUFile *f, SpaprMac= hineState *spapr, =20 /* Consume non-dirty HPTEs */ while ((index < htabslots) - && !HPTE_DIRTY(hpte_get_ptr(spapr, index))) { + && !hpte_is_dirty(spapr, index)) { index++; examined++; } @@ -2267,7 +2271,7 @@ static int htab_save_later_pass(QEMUFile *f, SpaprMac= hineState *spapr, chunkstart =3D index; /* Consume valid dirty HPTEs */ while ((index < htabslots) && (index - chunkstart < USHRT_MAX) - && HPTE_DIRTY(hpte_get_ptr(spapr, index)) + && hpte_is_dirty(spapr, index) && hpte_is_valid(spapr, index)) { CLEAN_HPTE(hpte_get_ptr(spapr, index)); index++; @@ -2277,7 +2281,7 @@ static int htab_save_later_pass(QEMUFile *f, SpaprMac= hineState *spapr, invalidstart =3D index; /* Consume invalid dirty HPTEs */ while ((index < htabslots) && (index - invalidstart < USHRT_MAX) - && HPTE_DIRTY(hpte_get_ptr(spapr, index)) + && hpte_is_dirty(spapr, index) && !hpte_is_valid(spapr, index)) { CLEAN_HPTE(hpte_get_ptr(spapr, index)); index++; --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741701599; cv=none; d=zohomail.com; s=zohoarc; b=B3cQqvsQ+BezZLoJcWzJwBdhZ6fbRr5PNUgNdsAgCFj5wwyT4DAzTd3kSL4a71ausvXHmXHCEU7BhJ4JE7OzwXLC1u9D2hQzMAOwtqkHtXP0NeGEKZSOdRAy+2tDR3wxz5H4l0zLtgFkU8FNZ1DBuT14nMkf2sNyAwCzYAb0nvQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741701599; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vyXD5UzpUW0YaKhAXXjbHUshaxnE47RC+WIYwrc3gYk=; b=boQDGihufOuaT18DqEQ++Pw7A7e8UNHrBBTHa6DPzaKJ/z6moqNmYxbGnNofxz9dONuhahJMA4OcYLhSsO8s8YehLGkEmOGtXl4uvdzLAvbXcAxDo+UWpbIoCWQUCSaVRFk903z8sSMozVPZrNrel70QEfKlwxWY5xEWZhJMP7A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741701599215290.5555581575195; Tue, 11 Mar 2025 06:59:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzIu-00034F-29; Tue, 11 Mar 2025 09:05:52 -0400 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 1trzEe-0005XO-A0; Tue, 11 Mar 2025 09:01:30 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEa-0000Gv-LY; Tue, 11 Mar 2025 09:01:27 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-2f9d3d0f55dso8228505a91.1; Tue, 11 Mar 2025 06:01:23 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698082; x=1742302882; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vyXD5UzpUW0YaKhAXXjbHUshaxnE47RC+WIYwrc3gYk=; b=XNEiM5gAK3OsrCtpEp9VMs0G3iu5Tq/2ANyAqtl3CYwKX6ZgfYok9UUxHbl7chuT92 uM0bBm8wkPe9KyIfvZKN/21/iSVmB5rJHRlkFd0vA4Ppyhz4Kw4Nn47BRF6YzTkofqbi NVo0zEYLSC/W0f3YkbKD7b7Tfbw25diI71DVQgWbGzFUjHB4p5njY5Ytnohxvc/8GkUU 2dzOTTRLXw0+X0TEq8XcVhYmc8d3Q5yvnPCogkV7AYdroN+4G+b/B9cXBSHnyuLauSPk Y9n11kYeNkaehkLp86eXaQHxYtjer2zy/wj+vu70RXJVKWEMfVNolPW0iPkq8PqVkXy0 YpQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698082; x=1742302882; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vyXD5UzpUW0YaKhAXXjbHUshaxnE47RC+WIYwrc3gYk=; b=I+fcPISZ4fcYobtykJZY9vkq2qOjluiPbhSvuCbtLohl9DjaeTIkG0ypfy1TnvFMXK 5hv7O+7sflQd92OYEvOX6elIry7d0+5mxeQn9M9oiiMz7kBONf0E/FT+iJY9+onVfAKB Sp/swthvplZYuMSCHJEQXuPZ0i6tjMlUJ5dR3l//51I+FxCJflPzyLngNxtGwB6P5c0p 7frU0mjMdcI+FQEtTjHQZI+oZXYOCen7HBsxLo2CRWDXA9/DTdd/XI/cNUjURXV1wEPl t42UXLGpv7qV/+8kTXanR3ALsGAxvhOywS4OzHCU5ib566SFN5g7M09qDg4R8FznqdHH dIDg== X-Forwarded-Encrypted: i=1; AJvYcCUVV+7Nee8sdnDcyLt5o6eFppOv1YXdl0xtNq5WnVe0GIQm8d3y9YBByKCFT/d9XOzF0CjLjKRDcw==@nongnu.org X-Gm-Message-State: AOJu0YwsMqaK3K1WkK5s75n/z6TZCXp/TOcnUbmr9Ei2C00H+CCXkLne 6/YLwJgIQXsc6+0kYFI2PGfnVpuUFTghG/DBTexiR7aBCP9/AWG6/4q8Vg== X-Gm-Gg: ASbGncs4W9QeT58sB1W+K6e0ed7kzeYi+dac0/a2Zwdkd7OAVhle873Z5JkRKkzx9lh qio0oenhN2JETzxytcvy4z8bw5Y0NUVZqets6G49QmOFh1+ox0yejO5C9xLAzahd+ni1LXyaPbW ViW34OzKmQ3U7hVr2yD779EMZw4D27PprW3ThX0gRocraJEFwxsxXYGVQ3MGGI9jJur0JPm/uT1 hSu6L3oM8etI7zH1i5xaUz5WT7O7JDJTn2WHg6g8Zq+vMzxG6Y3g/8Czu0AZdza65l+0R4tcdYR tqCMQ1lSzp2/fSTmTXLU911t2uhYpd7ipsK5O3iruCNHCvsLakWF9RESTwSv6A== X-Google-Smtp-Source: AGHT+IEMJZBUgVnye9Cur+e6qLx66fIs3LKKWKwiYdXdizHq23zqK1Kp7v7WjIVSvGuGTSNK+VlNvw== X-Received: by 2002:a17:90b:38cd:b0:2ee:741c:e9f4 with SMTP id 98e67ed59e1d1-2ff7ce8e5dfmr26796090a91.11.1741698080776; Tue, 11 Mar 2025 06:01:20 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 57/72] hw/ppc/spapr: Convert CLEAN_HPTE() macro as hpte_set_clean() method Date: Tue, 11 Mar 2025 22:57:51 +1000 Message-ID: <20250311125815.903177-58-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741701600344019000 From: Philippe Mathieu-Daud=C3=A9 Convert CLEAN_HPTE() macro as hpte_set_clean() method. sPAPR data structures including the hash page table are big-endian regardless of current CPU endian mode, so use the big-endian LD/ST API to access the hash PTEs. Reviewed-by: Nicholas Piggin Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20241220213103.6314-5-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- hw/ppc/spapr.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index dd81398445..3568a97045 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1419,7 +1419,12 @@ static bool hpte_is_dirty(SpaprMachineState *s, unsi= gned index) return ldq_be_p(hpte_get_ptr(s, index)) & HPTE64_V_HPTE_DIRTY; } =20 -#define CLEAN_HPTE(_hpte) ((*(uint64_t *)(_hpte)) &=3D tswap64(~HPTE64_V_= HPTE_DIRTY)) +static void hpte_set_clean(SpaprMachineState *s, unsigned index) +{ + stq_be_p(hpte_get_ptr(s, index), + ldq_be_p(hpte_get_ptr(s, index)) & ~HPTE64_V_HPTE_DIRTY); +} + #define DIRTY_HPTE(_hpte) ((*(uint64_t *)(_hpte)) |=3D tswap64(HPTE64_V_H= PTE_DIRTY)) =20 /* @@ -2215,7 +2220,7 @@ static void htab_save_first_pass(QEMUFile *f, SpaprMa= chineState *spapr, /* Consume invalid HPTEs */ while ((index < htabslots) && !hpte_is_valid(spapr, index)) { - CLEAN_HPTE(hpte_get_ptr(spapr, index)); + hpte_set_clean(spapr, index); index++; } =20 @@ -2223,7 +2228,7 @@ static void htab_save_first_pass(QEMUFile *f, SpaprMa= chineState *spapr, chunkstart =3D index; while ((index < htabslots) && (index - chunkstart < USHRT_MAX) && hpte_is_valid(spapr, index)) { - CLEAN_HPTE(hpte_get_ptr(spapr, index)); + hpte_set_clean(spapr, index); index++; } =20 @@ -2273,7 +2278,7 @@ static int htab_save_later_pass(QEMUFile *f, SpaprMac= hineState *spapr, while ((index < htabslots) && (index - chunkstart < USHRT_MAX) && hpte_is_dirty(spapr, index) && hpte_is_valid(spapr, index)) { - CLEAN_HPTE(hpte_get_ptr(spapr, index)); + hpte_set_clean(spapr, index); index++; examined++; } @@ -2283,7 +2288,7 @@ static int htab_save_later_pass(QEMUFile *f, SpaprMac= hineState *spapr, while ((index < htabslots) && (index - invalidstart < USHRT_MAX) && hpte_is_dirty(spapr, index) && !hpte_is_valid(spapr, index)) { - CLEAN_HPTE(hpte_get_ptr(spapr, index)); + hpte_set_clean(spapr, index); index++; examined++; } --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699421; cv=none; d=zohomail.com; s=zohoarc; b=ayDVXeolzYwMl577496WsVpCAnqA1eueWsakHuhxT75UTCFyMuwVVcJZbJtNYZA9txI9xfgDKgH/Tk/aMpOOfEYY62SuWgg/q3siolVG5FVtIqh9tZ2va3Pc0w9P7/Zjt/XAkisi0vyKeSB8f7xq7+vgydBPQik/3CtmhAvRhrw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699421; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ejM9HRB5/VzpqAv8bUdwCGywl1lKQVo0Ro8YQEozmw8=; b=ZF/lnVwD2GtXWr8dF5TMlzdGafbPq71KqOPlKIJUEXodNgzBXFsZiIhxvCAa7uNaQ7ZGwQnKoOF4AWnTJxs5q9/VsO3kesIK2a97KnzlPy3YipJzXh3Z8tQQUyWmx1avaONm5uxiorOHHyBZRIDaT8rdbLRkcodJoVr4G6DU6g0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699421154583.0360710774623; Tue, 11 Mar 2025 06:23:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJU-0004ZV-Vi; Tue, 11 Mar 2025 09:06:29 -0400 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 1trzEg-0005Xy-7J; Tue, 11 Mar 2025 09:01:34 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEe-0000HU-Du; Tue, 11 Mar 2025 09:01:29 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-2ff6e91cff5so7761463a91.2; Tue, 11 Mar 2025 06:01:27 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698086; x=1742302886; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ejM9HRB5/VzpqAv8bUdwCGywl1lKQVo0Ro8YQEozmw8=; b=FvN5cAYD1l7yoSUIdn26m3LNP0cBeVB0jUtQ22kZYN1uE5WSdbbH8+1Y/OMlQO5xU5 pnAQF0Z+mCEfFrRBzSODJh7OQ0wMJCMmTJ3cehQQPSMru3Wffh2dNL0kuUflXwBwcaf5 +ZqC/lqPZ/FXBfV/9mJiNrcZ6wnaMpKQPTwnB8uf8b95EyEgbCaIoOB/nbPCS3ZGTg9k JFY9dRRqatDV8QW9l2wvKiZuy8Xb5Y5F7YUiPEJ8aUuS94ksTnKadiY2SFT6rYhP/4zg B+coMUubNuIb4KKfScIsTPyh5YlN6b/bVml9Yf7PBC4YhizRP1UHaPsCBHD6Jd+aax9l jLyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698086; x=1742302886; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ejM9HRB5/VzpqAv8bUdwCGywl1lKQVo0Ro8YQEozmw8=; b=rI9yFR/FqpngZSGWDLzShBaExJmGhEXJudADGXgYg9tHHWPIlM/Lbnr428IYjEaFSB mAemjm5/rZkwiqKl36wPYwKqb/nIbjh9NW08yw+G1AlSzrZSgEmfVdVH32Zd3+DKwRUI aXivfaSVUqgSrmiotfsZP8ZgrRhcWnCjEoUUZYzDMGEYmNsvl7fAz7eKxwCKvugs1zl9 +LeuqiPXULpY3Ha9vRabOQUcSK+EUnZhtkdqmJhXrQEGW9TBrspoYMgnYah4ghCChq3/ gOr2QPkvbazTv338DWDAIECvnivbPD5QfDOMLeSvKI2aP9bCGE0ilV+FcD2cYyd5SFMQ CCpQ== X-Forwarded-Encrypted: i=1; AJvYcCUVw+alfklO1WjA/frZiR4rdXn/VrP9PBuuntPGluQ3H9UGTimBXndY509XRVlSImapOVCAtZEcsQ==@nongnu.org X-Gm-Message-State: AOJu0YzYVFxgzlRIv/wz4VDgWv7eIYlbP2w8UkuJmNAFin7d2Xm2jNo/ PZPvxNZdT6I4xX4iIkyMXivUwTivx1euJ/XC4UC9LyH/afJvj9qeJ8VqjQ== X-Gm-Gg: ASbGncvX/h4h8JVrriFnz24n38soxLxJbXIE/zRD54syYh2qF1563Zuj206LcIG6gUH nUI3HSiOGbG9oX1S2GFXl9nmNtmR9vs/eknVyCrQHNPWti7hXgmgFFT6aP+t65nDoEX2XUOgx9c eIM9GBYYQWpqZA43S7hSJTClhyXE6RsZgrIFQTV1PO45YTxXXxWTuC43N+O6feFkzl8l8acSO2E mbxlDyEJ9f/3RkwrROg8US5zvFHMBQvMaGX8upp6UtbaRS/XXtynDGym91Ju0k+1G4uIxchTXEq V3BAhmVv4eJnJwaWyXoWLMWhQ1AvOsISRTG6jNe7IuAsHYadaRA= X-Google-Smtp-Source: AGHT+IHs6oo++CKnNNKejh7ur7cPc0n4ZdhawTJB62wb1wpJAIC4e4u8rAG9ggbqG+vPbdLBj9Y1yw== X-Received: by 2002:a17:90b:1d04:b0:2ef:67c2:4030 with SMTP id 98e67ed59e1d1-2ff7cf0a667mr25504343a91.27.1741698084126; Tue, 11 Mar 2025 06:01:24 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Harsh Prateek Bora Subject: [PULL 58/72] hw/ppc/spapr: Convert DIRTY_HPTE() macro as hpte_set_dirty() method Date: Tue, 11 Mar 2025 22:57:52 +1000 Message-ID: <20250311125815.903177-59-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1036.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699421770019000 From: Philippe Mathieu-Daud=C3=A9 Convert DIRTY_HPTE() macro as hpte_set_dirty() method. sPAPR data structures including the hash page table are big-endian regardless of current CPU endian mode, so use the big-endian LD/ST API to access the hash PTEs. Reviewed-by: Nicholas Piggin Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Harsh Prateek Bora Message-ID: <20241220213103.6314-6-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- hw/ppc/spapr.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 3568a97045..0acf3c53dc 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1425,7 +1425,11 @@ static void hpte_set_clean(SpaprMachineState *s, uns= igned index) ldq_be_p(hpte_get_ptr(s, index)) & ~HPTE64_V_HPTE_DIRTY); } =20 -#define DIRTY_HPTE(_hpte) ((*(uint64_t *)(_hpte)) |=3D tswap64(HPTE64_V_H= PTE_DIRTY)) +static void hpte_set_dirty(SpaprMachineState *s, unsigned index) +{ + stq_be_p(hpte_get_ptr(s, index), + ldq_be_p(hpte_get_ptr(s, index)) | HPTE64_V_HPTE_DIRTY); +} =20 /* * Get the fd to access the kernel htab, re-opening it if necessary @@ -1636,7 +1640,7 @@ int spapr_reallocate_hpt(SpaprMachineState *spapr, in= t shift, Error **errp) spapr->htab_shift =3D shift; =20 for (i =3D 0; i < size / HASH_PTE_SIZE_64; i++) { - DIRTY_HPTE(hpte_get_ptr(spapr, i)); + hpte_set_dirty(spapr, i); } } /* We're setting up a hash table, so that means we're not radix */ --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699423; cv=none; d=zohomail.com; s=zohoarc; b=n9QtbeFRzB6PkunwC6uaDI9UzlWnKJHFI+4wu9R/py9uC9FYH8Ctl9HoiKjXvxNf3i9K/xDBJngRbKkzQ0cA7uxPs0qLwoMCiFFEJdA2iQCkBp8oX+BGpuB1FhqjszkG4zMnBgpkOJLvcxiQd6F/ZD9LWLxpGjW+3OYeR2IEKLk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699423; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Q98gbAuec0TkReIAHsIjEI1jfEiskw6MwZvR40Hgs1w=; b=Z4rA7pQIKKfweBES5EmKvjTq+IvbXTbbJZO/pV/0QxSqORqlOSf+Zx4m2RmsrG9ttMu2hgAK0yUOiuxX/p+1Jwrgb8KY/STIe3dMvWQUtRqzUgHzFldNZOaGLR+gC67hhqP6rmUaXzXyKdSBpR8d3ud4kHRfPRCu0AlWrwNaiAs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699423334803.2735126023454; Tue, 11 Mar 2025 06:23:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJb-000534-Dr; Tue, 11 Mar 2025 09:06:35 -0400 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 1trzEk-0005bA-3u; Tue, 11 Mar 2025 09:01:36 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEg-0000Hn-9D; Tue, 11 Mar 2025 09:01:32 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-2ff69365e1dso7929979a91.3; Tue, 11 Mar 2025 06:01:28 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698087; x=1742302887; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q98gbAuec0TkReIAHsIjEI1jfEiskw6MwZvR40Hgs1w=; b=fTebRs/YekZTR3N+F00+3NCDbdmNVn1Rhdqx+BAPMVBakvoTTofs/oiMz9Jqzcdztq fk56ZeBIdPUnyHrcBrbckoKr2yzGM6//DpVqtUCAPEWP1Zn+DkWCuUXM636LAnox0VOJ +wxrvJXCD4YxCfmRk0Ya1IHwMeCp0VWggQI+fmFyWO7FbbZDizHVzAGtS4QMFJg3m5ol x+MPlR/coKjz/vRZRQ/ze4NDTYFrQGWcb0DfO7c33ikI/qcZBmz3bOYMjZ0qIZdF3sUX 1PQ3cPsb6vZa5hqy0Ebh1COqb36WuqNIN0F89CXIfdZl8mVTvsxKcQ8c3scoTxmqK3Lk x4VA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698087; x=1742302887; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Q98gbAuec0TkReIAHsIjEI1jfEiskw6MwZvR40Hgs1w=; b=JGH/AkKs1S/wW3zhNIGEi3IoehXSUAzD9EqBElP4Qx9roZnG2PjLVp6f3LxwVv8voj 3uF7o7cYb24fIZ6zOuXOkipvQ6HJcWGQq6Zftgs6CTLAtquQN6jeZrV03RkzyvBiL+IK XLEuu5CFveJshxiJI4s1+AzkIAnAgDIhFw5Y7fvSPkmUssBI+uhF8+WxbWJCRLj1hpGj dkgCGjc8acaaNtTCy6QwR95W55f6sTTM/kYhKftnnYkkuGfoRxyKUKFJBVc326Nn0KO0 HDwC0gwR0SNBc87/v8hKgZ777Mm24K2ze951TuNbeycDfkXZYrDYm7gJlt4AB7MkQAIS Q/1g== X-Forwarded-Encrypted: i=1; AJvYcCV+z3sM5RAVxHhtO1LuX2rO545UdKJ51j5lS+dBPKluUQuaTmU0Wxfe6m0GYqrtRLrjir3m7EfRVg==@nongnu.org X-Gm-Message-State: AOJu0Yzf0hLUMHIkGYBl8l+P2LIRFeKJ2q1GL8cu81l8OqHl7sg54R5S qN/IicNMYLem60iC0zDw8wjprI+yfjfuzkolvGkg1Wrp1Nj9RqhEZ7lypw== X-Gm-Gg: ASbGncuTQZwQvdlQvrdzU2dZDQPAd/0Ij0r1OZCz8Yv6RevvBDACFLFAs7MPFEPHgqv 7Xrh05KQjNU6CtfjoYSYCG5WKUtIURqSXUE/Jn1gbksD4Ham2GIWRVLVkgHH2zNTn6Y/OkBlKI2 XvbRqoFJtWZmOFcuNyOTD9evObA0XH7ZpRKfawTO+5FOf1oNyOwLAKBDDDCaVnsg29r4KY7xecP RRJbiMzRPGwrHCcVEssMHxqz2x2nb4XSQwBJeGiU739GLO5vRWCflB1iTV6DxCo1n5TSmvzLn3n n1OOlF1VvLCTrTLF+9C0uMRp10MpR53NtVsAJFJ1LdMbsx4827s= X-Google-Smtp-Source: AGHT+IHxDv3LZ4LBZ1myb8OjwuffMy6ub21FaKhxEpo5n74ntVMs1uiuc7nCmlD4qbtnf/q+6ar6ZQ== X-Received: by 2002:a17:90b:38ca:b0:2f9:9ddd:689b with SMTP id 98e67ed59e1d1-2ff7ceee83amr22267581a91.22.1741698087437; Tue, 11 Mar 2025 06:01:27 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , BALATON Zoltan , Harsh Prateek Bora Subject: [PULL 59/72] hw/ppc/epapr: Do not swap ePAPR magic value Date: Tue, 11 Mar 2025 22:57:53 +1000 Message-ID: <20250311125815.903177-60-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699423679019000 From: Philippe Mathieu-Daud=C3=A9 The ePAPR magic value in $r6 doesn't need to be byte swapped. See ePAPR-v1.1.pdf chapter 5.4.1 "Boot CPU Initial Register State" and the following mailing-list threads: https://lore.kernel.org/qemu-devel/CAFEAcA_NR4XW5DNL4nq7vnH4XRH5UWbhQCxuLyK= qYk6_FCBrAA@mail.gmail.com/ https://lore.kernel.org/qemu-devel/D6F93NM6OW2L.2FDO88L38PABR@gmail.com/ Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Nicholas Piggin Tested-by: BALATON Zoltan Reviewed-by: Harsh Prateek Bora Message-ID: <20241220213103.6314-7-philmd@linaro.org> Signed-off-by: Nicholas Piggin --- hw/ppc/sam460ex.c | 2 +- hw/ppc/virtex_ml507.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 3ecae6a950..7dc3b309c8 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -234,7 +234,7 @@ static void main_cpu_reset(void *opaque) =20 /* Create a mapping for the kernel. */ booke_set_tlb(&env->tlb.tlbe[0], 0, 0, 1 << 31); - env->gpr[6] =3D tswap32(EPAPR_MAGIC); + env->gpr[6] =3D EPAPR_MAGIC; env->gpr[7] =3D (16 * MiB) - 8; /* bi->ima_size; */ =20 } else { diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index a01354d991..17115be74d 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -119,7 +119,7 @@ static void main_cpu_reset(void *opaque) /* Create a mapping spanning the 32bit addr space. */ booke_set_tlb(&env->tlb.tlbe[0], 0, 0, 1U << 31); booke_set_tlb(&env->tlb.tlbe[1], 0x80000000, 0x80000000, 1U << 31); - env->gpr[6] =3D tswap32(EPAPR_MAGIC); + env->gpr[6] =3D EPAPR_MAGIC; env->gpr[7] =3D bi->ima_size; } =20 --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699633; cv=none; d=zohomail.com; s=zohoarc; b=Vr/iciy2taO6uDcq1njH6VS2GSkZAXmIRglXNS7CxQUoJaxxNn0LBHEMPcUpuAjL6t66AAi4s6qCqkl88z0tunTMzC2fMgtU4xz2ypjAC33pQKffb/JTfV3evejy9BqVe8v9FUmGg7sm/aY7k1cIpRew0/SECyC2Mh2IHo1Akt4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699633; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3JRInH28kT8NQFjaUfcoifBn4ExD1TRUGhB92fe2nGc=; b=eg3TDc2AvJmBl0iqPufMHHQxdoCwY1725DbtX/Jo+zInV5O9WVyWb99ruQYF+hN1BkhYCflIyihb0Oc1XAbGENjvJ3YvzvfHYYn6W7kTRkhSnNP2Lwb9SsU1FnJcQzLssLVOFebqxmDYCsibof8RZdLhH/00OrUdB8LIDoo5tFw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699633485725.8800279425494; Tue, 11 Mar 2025 06:27:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzIz-0003QF-Ep; Tue, 11 Mar 2025 09:05:57 -0400 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 1trzEn-0005c4-1n; Tue, 11 Mar 2025 09:01:37 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEk-0000If-81; Tue, 11 Mar 2025 09:01:36 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-300f92661fcso2351212a91.3; Tue, 11 Mar 2025 06:01:33 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698092; x=1742302892; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3JRInH28kT8NQFjaUfcoifBn4ExD1TRUGhB92fe2nGc=; b=HpAb6kZQCNJzCN4jJ/rcAIs3rZlOR2qm3G0RUvOcA3xrqhcV4ufKKBpdulqbV0jtYN YTd76e2k3rK2Qbpjr5ttwzG8CJhZlZQi86uHSfYZmn1RF1m58+N3rZ2QzSa4lgpBfZhK vFayUvM/ZogNQsl1Ku1u5TzbjtWJWhcoVvYoI2YOs7w0OYx63LXNBk6AKMjteC1tbUWV yDqN4g9cQdvIDspBTbMSzIo41pYYujxagUkzbegYnCZVDoLdzw1dWHtjV/o++tzO559F F6khPgQ3GoOIge3tALkCrH2I1qp6inWoI93TrzXPH/wm49Fd5Wwz/K+GgAUhBahhOBLr S6Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698092; x=1742302892; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3JRInH28kT8NQFjaUfcoifBn4ExD1TRUGhB92fe2nGc=; b=dNfGiuTuXnod5aqzNmjC+JG8cQqjDbniCOWnFraQg3XLYlJuWRiI0PHzlS37Wp+38p 4ZfBUEd208YSJE3EeU/9u3OQqL/HbvgBJr0HhfTt3qrngtild5awj8EyOYSkncNawLy+ OehxG/OTOH9AFYXtpMK48hLzkSo0zi56GvDq0Tu9iTyIlTRUgSKO5Oipyptt0s8jv/ZJ vtdw3ivgbNB6B8koEUAe4c5w3CXUbltVroA4ROa4Xg0A3iIF2T9TC9uRQhQBHA0r/l4B 8qmGHG0mY/elNEnuHd6YWHl7vDaATA+TvKSvBmlAMYMQn9hJyuRpegdUVfg7kVeynQVv fHHw== X-Forwarded-Encrypted: i=1; AJvYcCVxK3WuK8C58ZAtrKnghWohlf/Z8GqYBvLT6QV4VcdJDo/kDLM7yZYbCB88FuenRoIiCvngTHiLCg==@nongnu.org X-Gm-Message-State: AOJu0YyHrsVj2/gY7qD/Z31Ck6JdgDrZRxmfRa3yBgDZZl6eHQWsBrTn nXpHyuXx2TaqoBqyetNOzuzscrg9NxOlGsDf3e3GVbolB7ZxuxBOTDWgdw== X-Gm-Gg: ASbGncvdZ4P+wMAqb0UWnjbl87ZajBZWu01MEbg0qRZ+c1CV6qmcJvRbk4rRTrSvPcJ OBoIywQlqODOA2BExIgaluPZHGp3urK1S0zjQ9FOZcO5XoaEj4Vxz5aDosgtakE2prgXzxFgibs vWM7mb2FFhTqT70FjR9k70qf3OQr1mui9cl99XlXk2CSajuhzTGxcvr2CkmMJ1xyGrW2j4Ag5A7 uXW05BzuOlKTZlb0aFbYkxmY4Q/CMiX0R00NnuqDCcrOEGyJLqrCGBzl+VGsoXjqCk1u+dWKTWh OPRFzHOtGDQZKDZS1yyM0KZuCXXsouPspjQQ68pf72SU0y6lqNQ= X-Google-Smtp-Source: AGHT+IF6rtusrJ9DZlMX+zGfMn0HFO0XtTsFU4OPR/740n799Hj9OtxiKDjfWWfmOec/CCvtKM8BCA== X-Received: by 2002:a17:90b:3e4f:b0:2ff:7b15:813b with SMTP id 98e67ed59e1d1-2ff7ce93a00mr30063132a91.17.1741698090463; Tue, 11 Mar 2025 06:01:30 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Shivaprasad G Bhat , Harsh Prateek Bora Subject: [PULL 60/72] ppc: Enable 2nd DAWR support on Power10 PowerNV machine Date: Tue, 11 Mar 2025 22:57:54 +1000 Message-ID: <20250311125815.903177-61-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699635635019100 Content-Type: text/plain; charset="utf-8" From: Shivaprasad G Bhat Extend the existing watchpoint facility from TCG DAWR0 emulation to DAWR1 on POWER10. Reviewed-by: Nicholas Piggin Reviewed-by: Harsh Prateek Bora Signed-off-by: Shivaprasad G Bhat Message-ID: <173708680684.1678.13237334676438770057.stgit@linux.ibm.com> Signed-off-by: Nicholas Piggin --- target/ppc/cpu.c | 45 +++++++++++++++++++-------- target/ppc/cpu.h | 6 ++-- target/ppc/cpu_init.c | 15 +++++++++ target/ppc/helper.h | 2 ++ target/ppc/machine.c | 3 +- target/ppc/misc_helper.c | 10 ++++++ target/ppc/spr_common.h | 2 ++ target/ppc/tcg-excp_helper.c | 59 +++++++++++++++++++----------------- target/ppc/translate.c | 12 ++++++++ 9 files changed, 110 insertions(+), 44 deletions(-) diff --git a/target/ppc/cpu.c b/target/ppc/cpu.c index d148cd76b4..bfcc695de7 100644 --- a/target/ppc/cpu.c +++ b/target/ppc/cpu.c @@ -130,11 +130,13 @@ void ppc_store_ciabr(CPUPPCState *env, target_ulong v= al) ppc_update_ciabr(env); } =20 -void ppc_update_daw0(CPUPPCState *env) +void ppc_update_daw(CPUPPCState *env, int rid) { CPUState *cs =3D env_cpu(env); - target_ulong deaw =3D env->spr[SPR_DAWR0] & PPC_BITMASK(0, 60); - uint32_t dawrx =3D env->spr[SPR_DAWRX0]; + int spr_dawr =3D rid ? SPR_DAWR1 : SPR_DAWR0; + int spr_dawrx =3D rid ? SPR_DAWRX1 : SPR_DAWRX0; + target_ulong deaw =3D env->spr[spr_dawr] & PPC_BITMASK(0, 60); + uint32_t dawrx =3D env->spr[spr_dawrx]; int mrd =3D extract32(dawrx, PPC_BIT_NR(48), 54 - 48); bool dw =3D extract32(dawrx, PPC_BIT_NR(57), 1); bool dr =3D extract32(dawrx, PPC_BIT_NR(58), 1); @@ -144,9 +146,9 @@ void ppc_update_daw0(CPUPPCState *env) vaddr len; int flags; =20 - if (env->dawr0_watchpoint) { - cpu_watchpoint_remove_by_ref(cs, env->dawr0_watchpoint); - env->dawr0_watchpoint =3D NULL; + if (env->dawr_watchpoint[rid]) { + cpu_watchpoint_remove_by_ref(cs, env->dawr_watchpoint[rid]); + env->dawr_watchpoint[rid] =3D NULL; } =20 if (!dr && !dw) { @@ -166,28 +168,45 @@ void ppc_update_daw0(CPUPPCState *env) flags |=3D BP_MEM_WRITE; } =20 - cpu_watchpoint_insert(cs, deaw, len, flags, &env->dawr0_watchpoint); + cpu_watchpoint_insert(cs, deaw, len, flags, &env->dawr_watchpoint[rid]= ); } =20 void ppc_store_dawr0(CPUPPCState *env, target_ulong val) { env->spr[SPR_DAWR0] =3D val; - ppc_update_daw0(env); + ppc_update_daw(env, 0); } =20 -void ppc_store_dawrx0(CPUPPCState *env, uint32_t val) +static void ppc_store_dawrx(CPUPPCState *env, uint32_t val, int rid) { int hrammc =3D extract32(val, PPC_BIT_NR(56), 1); =20 if (hrammc) { /* This might be done with a second watchpoint at the xor of DEAW[= 0] */ - qemu_log_mask(LOG_UNIMP, "%s: DAWRX0[HRAMMC] is unimplemented\n", - __func__); + qemu_log_mask(LOG_UNIMP, "%s: DAWRX%d[HRAMMC] is unimplemented\n", + __func__, rid); } =20 - env->spr[SPR_DAWRX0] =3D val; - ppc_update_daw0(env); + env->spr[rid ? SPR_DAWRX1 : SPR_DAWRX0] =3D val; + ppc_update_daw(env, rid); +} + +void ppc_store_dawrx0(CPUPPCState *env, uint32_t val) +{ + ppc_store_dawrx(env, val, 0); +} + +void ppc_store_dawr1(CPUPPCState *env, target_ulong val) +{ + env->spr[SPR_DAWR1] =3D val; + ppc_update_daw(env, 1); +} + +void ppc_store_dawrx1(CPUPPCState *env, uint32_t val) +{ + ppc_store_dawrx(env, val, 1); } + #endif #endif =20 diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 8d43983fe1..efab54a068 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1260,7 +1260,7 @@ struct CPUArchState { #if defined(TARGET_PPC64) ppc_slb_t slb[MAX_SLB_ENTRIES]; /* PowerPC 64 SLB area */ struct CPUBreakpoint *ciabr_breakpoint; - struct CPUWatchpoint *dawr0_watchpoint; + struct CPUWatchpoint *dawr_watchpoint[2]; #endif target_ulong sr[32]; /* segment registers */ uint32_t nb_BATs; /* number of BATs */ @@ -1589,9 +1589,11 @@ void ppc_store_sdr1(CPUPPCState *env, target_ulong v= alue); void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val); void ppc_update_ciabr(CPUPPCState *env); void ppc_store_ciabr(CPUPPCState *env, target_ulong value); -void ppc_update_daw0(CPUPPCState *env); +void ppc_update_daw(CPUPPCState *env, int rid); void ppc_store_dawr0(CPUPPCState *env, target_ulong value); void ppc_store_dawrx0(CPUPPCState *env, uint32_t value); +void ppc_store_dawr1(CPUPPCState *env, target_ulong value); +void ppc_store_dawrx1(CPUPPCState *env, uint32_t value); #endif /* !defined(CONFIG_USER_ONLY) */ void ppc_store_msr(CPUPPCState *env, target_ulong value); =20 diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 8d73e11540..9dc5ace828 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -5172,6 +5172,20 @@ static void register_book3s_207_dbg_sprs(CPUPPCState= *env) KVM_REG_PPC_CIABR, 0x00000000); } =20 +static void register_book3s_310_dbg_sprs(CPUPPCState *env) +{ + spr_register_kvm_hv(env, SPR_DAWR1, "DAWR1", + SPR_NOACCESS, SPR_NOACCESS, + SPR_NOACCESS, SPR_NOACCESS, + &spr_read_generic, &spr_write_dawr1, + KVM_REG_PPC_DAWR1, 0x00000000); + spr_register_kvm_hv(env, SPR_DAWRX1, "DAWRX1", + SPR_NOACCESS, SPR_NOACCESS, + SPR_NOACCESS, SPR_NOACCESS, + &spr_read_generic, &spr_write_dawrx1, + KVM_REG_PPC_DAWRX1, 0x00000000); +} + static void register_970_dbg_sprs(CPUPPCState *env) { /* Breakpoints */ @@ -6584,6 +6598,7 @@ static void init_proc_POWER10(CPUPPCState *env) { register_power9_common_sprs(env); register_HEIR64_spr(env); + register_book3s_310_dbg_sprs(env); register_power10_hash_sprs(env); register_power10_dexcr_sprs(env); register_power10_pmu_sup_sprs(env); diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 11b914e640..ca414f2f43 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -28,6 +28,8 @@ DEF_HELPER_2(store_pcr, void, env, tl) DEF_HELPER_2(store_ciabr, void, env, tl) DEF_HELPER_2(store_dawr0, void, env, tl) DEF_HELPER_2(store_dawrx0, void, env, tl) +DEF_HELPER_2(store_dawr1, void, env, tl) +DEF_HELPER_2(store_dawrx1, void, env, tl) DEF_HELPER_2(store_mmcr0, void, env, tl) DEF_HELPER_2(store_mmcr1, void, env, tl) DEF_HELPER_2(store_mmcrA, void, env, tl) diff --git a/target/ppc/machine.c b/target/ppc/machine.c index 0bd7ae6c0c..98df5b4a3a 100644 --- a/target/ppc/machine.c +++ b/target/ppc/machine.c @@ -264,7 +264,8 @@ static int cpu_post_load(void *opaque, int version_id) /* Re-set breaks based on regs */ #if defined(TARGET_PPC64) ppc_update_ciabr(env); - ppc_update_daw0(env); + ppc_update_daw(env, 0); + ppc_update_daw(env, 1); #endif /* * TCG needs to re-start the decrementer timer and/or raise the diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index 190e9091fc..2d9512c116 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -234,6 +234,16 @@ void helper_store_dawrx0(CPUPPCState *env, target_ulon= g value) ppc_store_dawrx0(env, value); } =20 +void helper_store_dawr1(CPUPPCState *env, target_ulong value) +{ + ppc_store_dawr1(env, value); +} + +void helper_store_dawrx1(CPUPPCState *env, target_ulong value) +{ + ppc_store_dawrx1(env, value); +} + /* * DPDES register is shared. Each bit reflects the state of the * doorbell interrupt of a thread of the same core. diff --git a/target/ppc/spr_common.h b/target/ppc/spr_common.h index 8e3117b463..84c910c440 100644 --- a/target/ppc/spr_common.h +++ b/target/ppc/spr_common.h @@ -165,6 +165,8 @@ void spr_write_cfar(DisasContext *ctx, int sprn, int gp= rn); void spr_write_ciabr(DisasContext *ctx, int sprn, int gprn); void spr_write_dawr0(DisasContext *ctx, int sprn, int gprn); void spr_write_dawrx0(DisasContext *ctx, int sprn, int gprn); +void spr_write_dawr1(DisasContext *ctx, int sprn, int gprn); +void spr_write_dawrx1(DisasContext *ctx, int sprn, int gprn); void spr_write_ureg(DisasContext *ctx, int sprn, int gprn); void spr_read_purr(DisasContext *ctx, int gprn, int sprn); void spr_write_purr(DisasContext *ctx, int sprn, int gprn); diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c index 4b859a8ffa..5a189dc3d7 100644 --- a/target/ppc/tcg-excp_helper.c +++ b/target/ppc/tcg-excp_helper.c @@ -345,39 +345,42 @@ bool ppc_cpu_debug_check_watchpoint(CPUState *cs, CPU= Watchpoint *wp) { #if defined(TARGET_PPC64) CPUPPCState *env =3D cpu_env(cs); + bool wt, wti, hv, sv, pr; + uint32_t dawrx; + + if ((env->insns_flags2 & PPC2_ISA207S) && + (wp =3D=3D env->dawr_watchpoint[0])) { + dawrx =3D env->spr[SPR_DAWRX0]; + } else if ((env->insns_flags2 & PPC2_ISA310) && + (wp =3D=3D env->dawr_watchpoint[1])) { + dawrx =3D env->spr[SPR_DAWRX1]; + } else { + return false; + } =20 - if (env->insns_flags2 & PPC2_ISA207S) { - if (wp =3D=3D env->dawr0_watchpoint) { - uint32_t dawrx =3D env->spr[SPR_DAWRX0]; - bool wt =3D extract32(dawrx, PPC_BIT_NR(59), 1); - bool wti =3D extract32(dawrx, PPC_BIT_NR(60), 1); - bool hv =3D extract32(dawrx, PPC_BIT_NR(61), 1); - bool sv =3D extract32(dawrx, PPC_BIT_NR(62), 1); - bool pr =3D extract32(dawrx, PPC_BIT_NR(62), 1); - - if ((env->msr & ((target_ulong)1 << MSR_PR)) && !pr) { - return false; - } else if ((env->msr & ((target_ulong)1 << MSR_HV)) && !hv) { - return false; - } else if (!sv) { - return false; - } + wt =3D extract32(dawrx, PPC_BIT_NR(59), 1); + wti =3D extract32(dawrx, PPC_BIT_NR(60), 1); + hv =3D extract32(dawrx, PPC_BIT_NR(61), 1); + sv =3D extract32(dawrx, PPC_BIT_NR(62), 1); + pr =3D extract32(dawrx, PPC_BIT_NR(62), 1); =20 - if (!wti) { - if (env->msr & ((target_ulong)1 << MSR_DR)) { - if (!wt) { - return false; - } - } else { - if (wt) { - return false; - } - } - } + if ((env->msr & ((target_ulong)1 << MSR_PR)) && !pr) { + return false; + } else if ((env->msr & ((target_ulong)1 << MSR_HV)) && !hv) { + return false; + } else if (!sv) { + return false; + } =20 - return true; + if (!wti) { + if (env->msr & ((target_ulong)1 << MSR_DR)) { + return wt; + } else { + return !wt; } } + + return true; #endif =20 return false; diff --git a/target/ppc/translate.c b/target/ppc/translate.c index b0cc8bf283..a52cbc869a 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -637,6 +637,18 @@ void spr_write_dawrx0(DisasContext *ctx, int sprn, int= gprn) translator_io_start(&ctx->base); gen_helper_store_dawrx0(tcg_env, cpu_gpr[gprn]); } + +void spr_write_dawr1(DisasContext *ctx, int sprn, int gprn) +{ + translator_io_start(&ctx->base); + gen_helper_store_dawr1(tcg_env, cpu_gpr[gprn]); +} + +void spr_write_dawrx1(DisasContext *ctx, int sprn, int gprn) +{ + translator_io_start(&ctx->base); + gen_helper_store_dawrx1(tcg_env, cpu_gpr[gprn]); +} #endif /* defined(TARGET_PPC64) && !defined(CONFIG_USER_ONLY) */ =20 /* CTR */ --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699600; cv=none; d=zohomail.com; s=zohoarc; b=di6Os74p4kojhy8vR13wARNh9/WfhVIP1ePcfyWorF5RCAhZHV3UaSXUeI1MjQQa/NRcw/U6KmwTnfJRiXWRD8NuoGSev3p0Zn1FTsSasvToTLQbFm49Vo47y7tpPrkQPStE8Zr9pD0ArqhsdsA3t5IDQ8mOOTKyjqRvqjFH3ck= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699600; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vHowS6P5BYg/rSJVbmvQ3akSwNj1ZtWnh45h27uLxQY=; b=G4RdWIPi3L0BHQljP3Wxge1jK24GUs0oKaQRE9xQEBuv6W8OuTGo+IG+yiB1DvlWwAbSuHL2bU25+1WhipwgbilxPVFMmQBWIgi/w1/BP1Erl8rAoA2SLcYQwgDTzHFyseoPGJCmkxv74x15pqM4/pnvohP5kU56kLhUQK/pYPk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699600405322.82789856946545; Tue, 11 Mar 2025 06:26:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJr-00062S-CP; Tue, 11 Mar 2025 09:06:52 -0400 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 1trzEp-0005km-Up; Tue, 11 Mar 2025 09:01:42 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEn-0000JK-JF; Tue, 11 Mar 2025 09:01:39 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-2ff784dc055so7177610a91.1; Tue, 11 Mar 2025 06:01:35 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698094; x=1742302894; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vHowS6P5BYg/rSJVbmvQ3akSwNj1ZtWnh45h27uLxQY=; b=DJlEHgGy+IAt8cQ90xUY0eIbcMW/wqlTV1fxtDucSmHEH0G99LpjiBjJyaDszrxutZ eNiZJ8pvEEqZZCRS3jOdh3ShuWOAiWI1PxbK5TsG9KegtcXDjJZIEy+Uv+Gg2Bl8+IHo jUn4t2GApMD2SIeqky6hRzwBvpbK3yM8p0MPi9YoioiZhhwoHqS3q55N8X7lGvqpybSk NraKvyVUaOw2yYe2tmFuUpuc4QMWdjQfuE++8jhRBenzBY/OV55BG0iCiNVNB6Ufnu6S k8Wo/ncGbubpWzxaLJGNlBXnWxGlz6nSIezHRcFcj/uVtL87Vv+eRkxVdkIcra35o1xW 0FhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698094; x=1742302894; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vHowS6P5BYg/rSJVbmvQ3akSwNj1ZtWnh45h27uLxQY=; b=nILcny2kp2WrKjRu0tUBm4XHTvv3q3+cjVooxT3Gd9hDm8+eH04rJ5+ImCkRflQcvT tQ8B3dvFxFw7WTwW17ccCRGkjMlwS4l4NtIlIF8BfDUzGpzA7nbkpF1t6/hbjnFzPPaw ns1T8t4YqN1H/TD28mxoCRml9pJBbV0O0PyLNyCP3J+OSNR+nCGa43eP2Bhk8rXnYdWQ P5XE0On2RjalXr4j2dxkSVm3YC5WFrlaC8Q2Pd/N5mlCw76vwyF+37lsW9nQ9VNKTok9 v7r+n8C4qW+oyvxL2pzBgnTU2EeSbvRpyv2ffm1NOPOWc/DN5DdVuT9KPsWNRwU/YtVb 6oLw== X-Forwarded-Encrypted: i=1; AJvYcCV7onlPN5mntk1em+WeCaKZhzaCOdDRAJHv4WKAStKtWaY8MEuG+YDGF8ym1lagMjFN5bBbamnxyw==@nongnu.org X-Gm-Message-State: AOJu0YzZOEFf7z/1N2a1w/DTCcafM97GRiZiyS1zbwzHmyWQl6boO0/J OA57TXQUGT+FuaAmpycEGcSTnLp/GP59Dnl6w0Cf+JAoZkwk7/tAkHcJvg== X-Gm-Gg: ASbGncvfwZsy3CTwqNEMO+TsxOVckna/TEk5SInSkZOSYpNltmK+Kt5aDD4M1mPOM+o BgRYMLE31qn6B+2AzxVPAhwVngExw1/y6xFqyVVyzEXLBaE8/VQRqa3XZiMZn6pqyzAfkM4TS37 7Ckw5Xv1i9lrC/72lULrSQpJ9+DBv18+YIOGOumzt6mwtlEW09J1/zM4qo0xawo7tfhzkWzDMKF 6Hrf03TRRdn48/6F4/6zyHdP8gc+RNnjo3eRDBXUl8T3/V1Its5G1/MnLL3DTdm0h4hbfLJD2Nx /OVJaRhzwWdquGrtLFnr733OvGX3mJQaSOHwDXW1+t1WOvg15wI= X-Google-Smtp-Source: AGHT+IEjE+5Z6cbs5WrPYTixKQE7tCPH4wzNRS834rYetiR6W7zxy28+Jn33fTdnxmTDagXM7abGuA== X-Received: by 2002:a17:90a:e70e:b0:2ee:f076:20fb with SMTP id 98e67ed59e1d1-300ff10c978mr5414489a91.17.1741698093784; Tue, 11 Mar 2025 06:01:33 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Shivaprasad G Bhat , Harsh Prateek Bora , Ravi Bangoria Subject: [PULL 61/72] ppc: spapr: Enable 2nd DAWR on Power10 pSeries machine Date: Tue, 11 Mar 2025 22:57:55 +1000 Message-ID: <20250311125815.903177-62-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699601866019100 Content-Type: text/plain; charset="utf-8" From: Shivaprasad G Bhat As per the PAPR, bit 0 of byte 64 in pa-features property indicates availability of 2nd DAWR registers. i.e. If this bit is set, 2nd DAWR is present, otherwise not. Use KVM_CAP_PPC_DAWR1 capability to find whether kvm supports 2nd DAWR or not. If it's supported, allow user to set the pa-feature bit in guest DT using cap-dawr1 machine capability. Reviewed-by: Nicholas Piggin Reviewed-by: Harsh Prateek Bora Signed-off-by: Ravi Bangoria Signed-off-by: Shivaprasad G Bhat Message-ID: <173708681866.1678.11128625982438367069.stgit@linux.ibm.com> Signed-off-by: Nicholas Piggin --- hw/ppc/spapr.c | 7 ++++++- hw/ppc/spapr_caps.c | 43 ++++++++++++++++++++++++++++++++++++++++++ hw/ppc/spapr_hcall.c | 27 +++++++++++++++++--------- include/hw/ppc/spapr.h | 6 +++++- target/ppc/kvm.c | 12 ++++++++++++ target/ppc/kvm_ppc.h | 12 ++++++++++++ 6 files changed, 96 insertions(+), 11 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 0acf3c53dc..fcd2ca515c 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -246,7 +246,7 @@ static void spapr_dt_pa_features(SpaprMachineState *spa= pr, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 48 - 53 */ /* 54: DecFP, 56: DecI, 58: SHA */ 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 54 - 59 */ - /* 60: NM atomic, 62: RNG */ + /* 60: NM atomic, 62: RNG, 64: DAWR1 (ISA 3.1) */ 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, /* 60 - 65 */ /* 68: DEXCR[SBHE|IBRTPDUS|SRAPD|NPHIE|PHIE] */ 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, /* 66 - 71 */ @@ -295,6 +295,9 @@ static void spapr_dt_pa_features(SpaprMachineState *spa= pr, * in pa-features. So hide it from them. */ pa_features[40 + 2] &=3D ~0x80; /* Radix MMU */ } + if (spapr_get_cap(spapr, SPAPR_CAP_DAWR1)) { + pa_features[66] |=3D 0x80; + } =20 _FDT((fdt_setprop(fdt, offset, "ibm,pa-features", pa_features, pa_size= ))); } @@ -2163,6 +2166,7 @@ static const VMStateDescription vmstate_spapr =3D { &vmstate_spapr_cap_rpt_invalidate, &vmstate_spapr_cap_ail_mode_3, &vmstate_spapr_cap_nested_papr, + &vmstate_spapr_cap_dawr1, NULL } }; @@ -4680,6 +4684,7 @@ static void spapr_machine_class_init(ObjectClass *oc,= void *data) smc->default_caps.caps[SPAPR_CAP_CCF_ASSIST] =3D SPAPR_CAP_ON; smc->default_caps.caps[SPAPR_CAP_FWNMI] =3D SPAPR_CAP_ON; smc->default_caps.caps[SPAPR_CAP_RPT_INVALIDATE] =3D SPAPR_CAP_OFF; + smc->default_caps.caps[SPAPR_CAP_DAWR1] =3D SPAPR_CAP_ON; =20 /* * This cap specifies whether the AIL 3 mode for diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c index 904bff87ce..9f4fd0cb5e 100644 --- a/hw/ppc/spapr_caps.c +++ b/hw/ppc/spapr_caps.c @@ -696,6 +696,34 @@ static void cap_ail_mode_3_apply(SpaprMachineState *sp= apr, } } =20 +static void cap_dawr1_apply(SpaprMachineState *spapr, uint8_t val, + Error **errp) +{ + ERRP_GUARD(); + + if (!val) { + return; /* Disable by default */ + } + + if (!ppc_type_check_compat(MACHINE(spapr)->cpu_type, + CPU_POWERPC_LOGICAL_3_10, 0, + spapr->max_compat_pvr)) { + error_setg(errp, "DAWR1 supported only on POWER10 and later CPUs"); + error_append_hint(errp, "Try appending -machine cap-dawr1=3Doff\n"= ); + return; + } + + if (kvm_enabled()) { + if (!kvmppc_has_cap_dawr1()) { + error_setg(errp, "DAWR1 not supported by KVM."); + error_append_hint(errp, "Try appending -machine cap-dawr1=3Dof= f"); + } else if (kvmppc_set_cap_dawr1(val) < 0) { + error_setg(errp, "Error enabling cap-dawr1 with KVM."); + error_append_hint(errp, "Try appending -machine cap-dawr1=3Dof= f"); + } + } +} + SpaprCapabilityInfo capability_table[SPAPR_CAP_NUM] =3D { [SPAPR_CAP_HTM] =3D { .name =3D "htm", @@ -831,6 +859,15 @@ SpaprCapabilityInfo capability_table[SPAPR_CAP_NUM] = =3D { .type =3D "bool", .apply =3D cap_ail_mode_3_apply, }, + [SPAPR_CAP_DAWR1] =3D { + .name =3D "dawr1", + .description =3D "Allow 2nd Data Address Watchpoint Register (DAWR= 1)", + .index =3D SPAPR_CAP_DAWR1, + .get =3D spapr_cap_get_bool, + .set =3D spapr_cap_set_bool, + .type =3D "bool", + .apply =3D cap_dawr1_apply, + }, }; =20 static SpaprCapabilities default_caps_with_cpu(SpaprMachineState *spapr, @@ -841,6 +878,11 @@ static SpaprCapabilities default_caps_with_cpu(SpaprMa= chineState *spapr, =20 caps =3D smc->default_caps; =20 + if (!ppc_type_check_compat(cputype, CPU_POWERPC_LOGICAL_3_10, + 0, spapr->max_compat_pvr)) { + caps.caps[SPAPR_CAP_DAWR1] =3D SPAPR_CAP_OFF; + } + if (!ppc_type_check_compat(cputype, CPU_POWERPC_LOGICAL_3_00, 0, spapr->max_compat_pvr)) { caps.caps[SPAPR_CAP_LARGE_DECREMENTER] =3D SPAPR_CAP_OFF; @@ -975,6 +1017,7 @@ SPAPR_CAP_MIG_STATE(ccf_assist, SPAPR_CAP_CCF_ASSIST); SPAPR_CAP_MIG_STATE(fwnmi, SPAPR_CAP_FWNMI); SPAPR_CAP_MIG_STATE(rpt_invalidate, SPAPR_CAP_RPT_INVALIDATE); SPAPR_CAP_MIG_STATE(ail_mode_3, SPAPR_CAP_AIL_MODE_3); +SPAPR_CAP_MIG_STATE(dawr1, SPAPR_CAP_DAWR1); =20 void spapr_caps_init(SpaprMachineState *spapr) { diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index 4f1933b8da..406aea4ecb 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -822,11 +822,12 @@ static target_ulong h_set_mode_resource_set_ciabr(Pow= erPCCPU *cpu, return H_SUCCESS; } =20 -static target_ulong h_set_mode_resource_set_dawr0(PowerPCCPU *cpu, - SpaprMachineState *spapr, - target_ulong mflags, - target_ulong value1, - target_ulong value2) +static target_ulong h_set_mode_resource_set_dawr(PowerPCCPU *cpu, + SpaprMachineState *spapr, + target_ulong mflags, + target_ulong resource, + target_ulong value1, + target_ulong value2) { CPUPPCState *env =3D &cpu->env; =20 @@ -839,8 +840,15 @@ static target_ulong h_set_mode_resource_set_dawr0(Powe= rPCCPU *cpu, return H_P4; } =20 - ppc_store_dawr0(env, value1); - ppc_store_dawrx0(env, value2); + if (resource =3D=3D H_SET_MODE_RESOURCE_SET_DAWR0) { + ppc_store_dawr0(env, value1); + ppc_store_dawrx0(env, value2); + } else if (resource =3D=3D H_SET_MODE_RESOURCE_SET_DAWR1) { + ppc_store_dawr1(env, value1); + ppc_store_dawrx1(env, value2); + } else { + g_assert_not_reached(); + } =20 return H_SUCCESS; } @@ -919,8 +927,9 @@ static target_ulong h_set_mode(PowerPCCPU *cpu, SpaprMa= chineState *spapr, args[3]); break; case H_SET_MODE_RESOURCE_SET_DAWR0: - ret =3D h_set_mode_resource_set_dawr0(cpu, spapr, args[0], args[2], - args[3]); + case H_SET_MODE_RESOURCE_SET_DAWR1: + ret =3D h_set_mode_resource_set_dawr(cpu, spapr, args[0], args[1], + args[2], args[3]); break; case H_SET_MODE_RESOURCE_LE: ret =3D h_set_mode_resource_le(cpu, spapr, args[0], args[2], args[= 3]); diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index a6c0547e31..d227f0b94b 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -83,8 +83,10 @@ typedef enum { #define SPAPR_CAP_AIL_MODE_3 0x0C /* Nested PAPR */ #define SPAPR_CAP_NESTED_PAPR 0x0D +/* DAWR1 */ +#define SPAPR_CAP_DAWR1 0x0E /* Num Caps */ -#define SPAPR_CAP_NUM (SPAPR_CAP_NESTED_PAPR + 1) +#define SPAPR_CAP_NUM (SPAPR_CAP_DAWR1 + 1) =20 /* * Capability Values @@ -406,6 +408,7 @@ struct SpaprMachineState { #define H_SET_MODE_RESOURCE_SET_DAWR0 2 #define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE 3 #define H_SET_MODE_RESOURCE_LE 4 +#define H_SET_MODE_RESOURCE_SET_DAWR1 5 =20 /* Flags for H_SET_MODE_RESOURCE_LE */ #define H_SET_MODE_ENDIAN_BIG 0 @@ -1003,6 +1006,7 @@ extern const VMStateDescription vmstate_spapr_cap_fwn= mi; extern const VMStateDescription vmstate_spapr_cap_rpt_invalidate; extern const VMStateDescription vmstate_spapr_cap_ail_mode_3; extern const VMStateDescription vmstate_spapr_wdt; +extern const VMStateDescription vmstate_spapr_cap_dawr1; =20 static inline uint8_t spapr_get_cap(SpaprMachineState *spapr, int cap) { diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index 216638dee4..992356cb75 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -92,6 +92,7 @@ static int cap_large_decr; static int cap_fwnmi; static int cap_rpt_invalidate; static int cap_ail_mode_3; +static int cap_dawr1; =20 #ifdef CONFIG_PSERIES static int cap_papr; @@ -152,6 +153,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) cap_ppc_nested_kvm_hv =3D kvm_vm_check_extension(s, KVM_CAP_PPC_NESTED= _HV); cap_large_decr =3D kvmppc_get_dec_bits(); cap_fwnmi =3D kvm_vm_check_extension(s, KVM_CAP_PPC_FWNMI); + cap_dawr1 =3D kvm_vm_check_extension(s, KVM_CAP_PPC_DAWR1); /* * Note: setting it to false because there is not such capability * in KVM at this moment. @@ -2114,6 +2116,16 @@ int kvmppc_set_fwnmi(PowerPCCPU *cpu) return kvm_vcpu_enable_cap(cs, KVM_CAP_PPC_FWNMI, 0); } =20 +bool kvmppc_has_cap_dawr1(void) +{ + return !!cap_dawr1; +} + +int kvmppc_set_cap_dawr1(int enable) +{ + return kvm_vm_enable_cap(kvm_state, KVM_CAP_PPC_DAWR1, 0, enable); +} + int kvmppc_smt_threads(void) { return cap_ppc_smt ? cap_ppc_smt : 1; diff --git a/target/ppc/kvm_ppc.h b/target/ppc/kvm_ppc.h index 1d8cb76a6b..a8768c1dfd 100644 --- a/target/ppc/kvm_ppc.h +++ b/target/ppc/kvm_ppc.h @@ -68,6 +68,8 @@ bool kvmppc_has_cap_htm(void); bool kvmppc_has_cap_mmu_radix(void); bool kvmppc_has_cap_mmu_hash_v3(void); bool kvmppc_has_cap_xive(void); +bool kvmppc_has_cap_dawr1(void); +int kvmppc_set_cap_dawr1(int enable); int kvmppc_get_cap_safe_cache(void); int kvmppc_get_cap_safe_bounds_check(void); int kvmppc_get_cap_safe_indirect_branch(void); @@ -377,6 +379,16 @@ static inline bool kvmppc_has_cap_xive(void) return false; } =20 +static inline bool kvmppc_has_cap_dawr1(void) +{ + return false; +} + +static inline int kvmppc_set_cap_dawr1(int enable) +{ + abort(); +} + static inline int kvmppc_get_cap_safe_cache(void) { return 0; --=20 2.47.1 From nobody Thu Apr 3 10:05:04 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700163; cv=none; d=zohomail.com; s=zohoarc; b=cme8+PJBwlPHa2uu2bFWItC2aHqC+PcuzkMDTF2oL9W0bw0dabtVmDiumrQf6oBPE6nZTlrbLpKG3MUQlsJm0TVEBeWPcnxXCayH93A+eM9DqAhB1DQkKqII71XZz+XZ+yP/CO2dmLriv7Yt0OlbZzjA1T+FoJMu5iBc6OzwHcQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700163; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=MvevJgZuo4bkG1Sd+5i0dJdPdtOcYaorR/nWe5rVjjE=; b=ckfZpCKHTMbv3dbj6oB8+IvLXfqRiIcelwRBSQW9nr13gOsUjOoKT4R3HXKQ/jlPTyT/qSTv6uqUD4ATjlqHba3YgUVfO/V0nTCqKC3DaxA/8sGEY1ZmIzJs8eT5T53VmbBP8CP/+C7ItNWPJg6YkXj631SC4Ncb/IQmnuBHWnw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174170016367761.300420471764824; Tue, 11 Mar 2025 06:36:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzL6-0002qd-Dk; Tue, 11 Mar 2025 09:08:09 -0400 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 1trzEu-0005sq-Gv; Tue, 11 Mar 2025 09:01:45 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEp-0000Jv-Bk; Tue, 11 Mar 2025 09:01:44 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-2feae794508so8087231a91.0; Tue, 11 Mar 2025 06:01:38 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698097; x=1742302897; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MvevJgZuo4bkG1Sd+5i0dJdPdtOcYaorR/nWe5rVjjE=; b=McXVTU7qOv4feBARpMHt7pyMy1FlVVrBkcA335/q+2nw36DmAKrv4gWz5mHTHWTBsu NruP6/cxhgCGmEmcBllkfRzgguz33bS24hvLXqu6e3vIWXx36iJD8zWMHVtUK3IgNqcs +zFqweuujZw+uv5vU/80w/zJ/OWWwCUYJaO0uSz4+Gx5AdtoeRcM0jqqCcbaI440YfpN oLJQK5gV7Zn5iEU67DjLM+G11POv6+b+ScARDgqfud2jjZh0z12KhNqnIyB6a2QpXGjT sc3Ag32a4DAZZdcQnypDQ5mTOxlFLK1fIA5rH5HJDCe7N1zpfZIUtigPCDwWXEjwFuoT r0dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698097; x=1742302897; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MvevJgZuo4bkG1Sd+5i0dJdPdtOcYaorR/nWe5rVjjE=; b=MJjDgYHRoiwPpH0DMH+oFmu6gfZ9VtIqaTeygxQQ+z62KWNTL/ahBGvOzqCTQsed5M dQiEcpUQSeRHTsv9iM3VfUr6Qt9t4RafqfoFtQUIxNGJoSCXFMQrElib1MYBtay/XSzx rgPwW1pkqpcYlgk2WW/t5hjf/wMdAYnBVcDayINybwM6TD6yYtJLnuXYmOjCgmb0tAYH Ol3KyxQlgUk+fDX2WLZWP1TD56CvBdwVpUrX+Clzh2nc7LjQDzV/t8xpo/bxecCmBUS7 KXdhXTFSqPnGRNYn/wjhVMdj8z/cwmvUYwHXRNVtwwKtmJ4CDEMH8hcd0RG5Wkl07TW2 TCug== X-Forwarded-Encrypted: i=1; AJvYcCVTEuplVE/+8vumGzWn4Lbq8zKtNRFjzObX2K3hu0R3RjnYYEyNpcbI+NvjFCwAE6k96zzmPBpt2A==@nongnu.org X-Gm-Message-State: AOJu0YxjNkkxwLVLb6YVfobzoSqBWP+PpR1Sts+4oG+Y2GSfSQyhacj7 WcRsOFC01/VOBS3t5EQiiuZDv5nLN7PDnK3Hd4pb9hIDPLiKYedI0zc8gQ== X-Gm-Gg: ASbGncsiKZP1yFRW+1K13cXRcDTxDBPzir5PwT9c21JwdOIkiOufPZct7YMYYDnYhfk mQ/6i0hyoomRt4vicAnqC92gvpC+5RujnWnu9JANB4E21W1tqYw0ON1vJawQn8Apki+rNTDHWe/ Z5H1uE8L8LBBsvM92dJgBbmc1mFIEKSYjG1YzOD6PHnuykXZ2SD1AhPCpLI2wnHkefvCej962lx gz9QrYlmrWhpjvYvNl4+/LMEI8zck+kaVavFZzl+b91L5zglxev6x+vtP9XJ1QmaqdHAPd5MO8g xqeM0fwhReFqlAYRtABM2OZephDJ738rSClG29XCfzW9BkOd30E= X-Google-Smtp-Source: AGHT+IHGaq0nnS5TDBnbJU9Jr5a7d+IsbyF4+HVbzZAWZR8sNw+QHvH1/Pr5wdo/VLI5qABjqLzgdQ== X-Received: by 2002:a17:90a:e7c2:b0:2ff:693a:758d with SMTP id 98e67ed59e1d1-2ff7ceef0famr25706466a91.27.1741698097019; Tue, 11 Mar 2025 06:01:37 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Vaibhav Jain , Harsh Prateek Bora Subject: [PULL 62/72] spapr: nested: Add support for reporting Hostwide state counter Date: Tue, 11 Mar 2025 22:57:56 +1000 Message-ID: <20250311125815.903177-63-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700165642019100 Content-Type: text/plain; charset="utf-8" From: Vaibhav Jain Add support for reporting Hostwide state counters for nested KVM pseries guests running with 'cap-nested-papr' on Qemu-TCG acting as L0-hypervisor. The Hostwide state counters are statistics about state that L0-hypervisor maintains for the L2-guests and represent the state of all L2-guests, not just a specific one. These stats counters are exposed to L1-Hypervisor by the L0-Hypervisor via a new bit-flag named 'getHostWideState' for the H_GUEST_GET_STATE hcall which is documented at [1]. Once this flag is set the hcall should populate the Guest-State-Elements in the requested GSB with the stat counter values. Currently following five counters are supported: * l0_guest_heap_size_inuse * l0_guest_heap_size_max * l0_guest_pagetable_size_inuse * l0_guest_pagetable_size_max * l0_guest_pagetable_reclaimed At the moment '0' is being reported for all these counters as these counters doesn't align with how L0-Qemu manages Guest memory. The patch implements support for these counters by adding new members to the 'struct SpaprMachineStateNested'. These new members are then plugged into the existing 'guest_state_element_types[]' with the help of a new macro 'GSBE_NESTED_MACHINE_DW' together with a new helper 'get_machine_ptr()'. guest_state_request_check() is updated to ensure correctness of the requested GSB and finally h_guest_getset_state() is updated to handle the newly introduced flag 'GUEST_STATE_REQUEST_HOST_WIDE'. This patch is tested with the proposed linux-kernel implementation to expose these stat-counter as perf-events at [2]. [1] https://lore.kernel.org/all/20241222140247.174998-2-vaibhav@linux.ibm.com [2] https://lore.kernel.org/all/20241222140247.174998-1-vaibhav@linux.ibm.com Signed-off-by: Vaibhav Jain Reviewed-by: Harsh Prateek Bora Message-ID: <20250221155449.530645-1-vaibhav@linux.ibm.com> Signed-off-by: Nicholas Piggin --- hw/ppc/spapr_nested.c | 119 ++++++++++++++++++++++++---------- include/hw/ppc/spapr_nested.h | 67 +++++++++++++++++-- 2 files changed, 147 insertions(+), 39 deletions(-) diff --git a/hw/ppc/spapr_nested.c b/hw/ppc/spapr_nested.c index 23958c6383..201f629203 100644 --- a/hw/ppc/spapr_nested.c +++ b/hw/ppc/spapr_nested.c @@ -65,10 +65,9 @@ static SpaprMachineStateNestedGuest *spapr_get_nested_guest(SpaprMachineState *sp= apr, target_ulong guestid) { - SpaprMachineStateNestedGuest *guest; - - guest =3D g_hash_table_lookup(spapr->nested.guests, GINT_TO_POINTER(gu= estid)); - return guest; + return spapr->nested.guests ? + g_hash_table_lookup(spapr->nested.guests, + GINT_TO_POINTER(guestid)) : NULL; } =20 bool spapr_get_pate_nested_papr(SpaprMachineState *spapr, PowerPCCPU *cpu, @@ -594,26 +593,37 @@ static bool spapr_nested_vcpu_check(SpaprMachineState= NestedGuest *guest, return false; } =20 -static void *get_vcpu_state_ptr(SpaprMachineStateNestedGuest *guest, - target_ulong vcpuid) +static void *get_vcpu_state_ptr(SpaprMachineState *spapr, + SpaprMachineStateNestedGuest *guest, + target_ulong vcpuid) { assert(spapr_nested_vcpu_check(guest, vcpuid, false)); return &guest->vcpus[vcpuid].state; } =20 -static void *get_vcpu_ptr(SpaprMachineStateNestedGuest *guest, - target_ulong vcpuid) +static void *get_vcpu_ptr(SpaprMachineState *spapr, + SpaprMachineStateNestedGuest *guest, + target_ulong vcpuid) { assert(spapr_nested_vcpu_check(guest, vcpuid, false)); return &guest->vcpus[vcpuid]; } =20 -static void *get_guest_ptr(SpaprMachineStateNestedGuest *guest, +static void *get_guest_ptr(SpaprMachineState *spapr, + SpaprMachineStateNestedGuest *guest, target_ulong vcpuid) { return guest; /* for GSBE_NESTED */ } =20 +static void *get_machine_ptr(SpaprMachineState *spapr, + SpaprMachineStateNestedGuest *guest, + target_ulong vcpuid) +{ + /* ignore guest and vcpuid for this */ + return &spapr->nested; +} + /* * set=3D1 means the L1 is trying to set some state * set=3D0 means the L1 is trying to get some state @@ -1013,7 +1023,15 @@ struct guest_state_element_type guest_state_element_= types[] =3D { GSBE_NESTED_VCPU(GSB_VCPU_OUT_BUFFER, 0x10, runbufout, copy_state_ru= nbuf), GSBE_NESTED_VCPU(GSB_VCPU_OUT_BUF_MIN_SZ, 0x8, runbufout, out_buf_min_= size), GSBE_NESTED_VCPU(GSB_VCPU_HDEC_EXPIRY_TB, 0x8, hdecr_expiry_tb, - copy_state_hdecr) + copy_state_hdecr), + GSBE_NESTED_MACHINE_DW(GSB_L0_GUEST_HEAP_INUSE, l0_guest_heap_inuse), + GSBE_NESTED_MACHINE_DW(GSB_L0_GUEST_HEAP_MAX, l0_guest_heap_max), + GSBE_NESTED_MACHINE_DW(GSB_L0_GUEST_PGTABLE_SIZE_INUSE, + l0_guest_pgtable_size_inuse), + GSBE_NESTED_MACHINE_DW(GSB_L0_GUEST_PGTABLE_SIZE_MAX, + l0_guest_pgtable_size_max), + GSBE_NESTED_MACHINE_DW(GSB_L0_GUEST_PGTABLE_RECLAIMED, + l0_guest_pgtable_reclaimed), }; =20 void spapr_nested_gsb_init(void) @@ -1031,8 +1049,13 @@ void spapr_nested_gsb_init(void) else if (type->id >=3D GSB_VCPU_IN_BUFFER) /* 0x0c00 - 0xf000 Thread + RW */ type->flags =3D 0; + else if (type->id >=3D GSB_L0_GUEST_HEAP_INUSE) + + /*0x0800 - 0x0804 Hostwide Counters + RO */ + type->flags =3D GUEST_STATE_ELEMENT_TYPE_FLAG_HOST_WIDE | + GUEST_STATE_ELEMENT_TYPE_FLAG_READ_ONLY; else if (type->id >=3D GSB_VCPU_LPVR) - /* 0x0003 - 0x0bff Guest + RW */ + /* 0x0003 - 0x07ff Guest + RW */ type->flags =3D GUEST_STATE_ELEMENT_TYPE_FLAG_GUEST_WIDE; else if (type->id >=3D GSB_HV_VCPU_STATE_SIZE) /* 0x0001 - 0x0002 Guest + RO */ @@ -1139,18 +1162,26 @@ static bool guest_state_request_check(struct guest_= state_request *gsr) return false; } =20 - if (type->flags & GUEST_STATE_ELEMENT_TYPE_FLAG_GUEST_WIDE) { + if (type->flags & GUEST_STATE_ELEMENT_TYPE_FLAG_HOST_WIDE) { + /* Hostwide elements cant be clubbed with other types */ + if (!(gsr->flags & GUEST_STATE_REQUEST_HOST_WIDE)) { + qemu_log_mask(LOG_GUEST_ERROR, "trying to get/set a host w= ide " + "Element ID:%04x.\n", id); + return false; + } + } else if (type->flags & GUEST_STATE_ELEMENT_TYPE_FLAG_GUEST_WIDE= ) { /* guest wide element type */ if (!(gsr->flags & GUEST_STATE_REQUEST_GUEST_WIDE)) { - qemu_log_mask(LOG_GUEST_ERROR, "trying to set a guest wide= " + qemu_log_mask(LOG_GUEST_ERROR, "trying to get/set a guest = wide " "Element ID:%04x.\n", id); return false; } } else { /* thread wide element type */ - if (gsr->flags & GUEST_STATE_REQUEST_GUEST_WIDE) { - qemu_log_mask(LOG_GUEST_ERROR, "trying to set a thread wid= e " - "Element ID:%04x.\n", id); + if (gsr->flags & (GUEST_STATE_REQUEST_GUEST_WIDE | + GUEST_STATE_REQUEST_HOST_WIDE)) { + qemu_log_mask(LOG_GUEST_ERROR, "trying to get/set a thread= wide" + " Element ID:%04x.\n", id); return false; } } @@ -1419,7 +1450,8 @@ static target_ulong h_guest_create_vcpu(PowerPCCPU *c= pu, return H_SUCCESS; } =20 -static target_ulong getset_state(SpaprMachineStateNestedGuest *guest, +static target_ulong getset_state(SpaprMachineState *spapr, + SpaprMachineStateNestedGuest *guest, uint64_t vcpuid, struct guest_state_request *gsr) { @@ -1452,7 +1484,7 @@ static target_ulong getset_state(SpaprMachineStateNes= tedGuest *guest, =20 /* Get pointer to guest data to get/set */ if (type->location && type->copy) { - ptr =3D type->location(guest, vcpuid); + ptr =3D type->location(spapr, guest, vcpuid); assert(ptr); if (!~(type->mask) && is_gsr_invalid(gsr, element, type)) { return H_INVALID_ELEMENT_VALUE; @@ -1469,6 +1501,7 @@ next_element: } =20 static target_ulong map_and_getset_state(PowerPCCPU *cpu, + SpaprMachineState *spapr, SpaprMachineStateNestedGuest *gue= st, uint64_t vcpuid, struct guest_state_request *gsr) @@ -1492,7 +1525,7 @@ static target_ulong map_and_getset_state(PowerPCCPU *= cpu, goto out1; } =20 - rc =3D getset_state(guest, vcpuid, gsr); + rc =3D getset_state(spapr, guest, vcpuid, gsr); =20 out1: address_space_unmap(CPU(cpu)->as, gsr->gsb, len, is_write, len); @@ -1510,27 +1543,46 @@ static target_ulong h_guest_getset_state(PowerPCCPU= *cpu, target_ulong buf =3D args[3]; target_ulong buflen =3D args[4]; struct guest_state_request gsr; - SpaprMachineStateNestedGuest *guest; + SpaprMachineStateNestedGuest *guest =3D NULL; =20 - guest =3D spapr_get_nested_guest(spapr, lpid); - if (!guest) { - return H_P2; - } gsr.buf =3D buf; assert(buflen <=3D GSB_MAX_BUF_SIZE); gsr.len =3D buflen; gsr.flags =3D 0; - if (flags & H_GUEST_GETSET_STATE_FLAG_GUEST_WIDE) { + + /* Works for both get/set state */ + if ((flags & H_GUEST_GET_STATE_FLAGS_GUEST_WIDE) || + (flags & H_GUEST_SET_STATE_FLAGS_GUEST_WIDE)) { gsr.flags |=3D GUEST_STATE_REQUEST_GUEST_WIDE; } - if (flags & ~H_GUEST_GETSET_STATE_FLAG_GUEST_WIDE) { - return H_PARAMETER; /* flag not supported yet */ - } =20 if (set) { + if (flags & ~H_GUEST_SET_STATE_FLAGS_MASK) { + return H_PARAMETER; + } gsr.flags |=3D GUEST_STATE_REQUEST_SET; + } else { + /* + * No reserved fields to be set in flags nor both + * GUEST/HOST wide bits + */ + if ((flags & ~H_GUEST_GET_STATE_FLAGS_MASK) || + (flags =3D=3D H_GUEST_GET_STATE_FLAGS_MASK)) { + return H_PARAMETER; + } + + if (flags & H_GUEST_GET_STATE_FLAGS_HOST_WIDE) { + gsr.flags |=3D GUEST_STATE_REQUEST_HOST_WIDE; + } + } + + if (!(gsr.flags & GUEST_STATE_REQUEST_HOST_WIDE)) { + guest =3D spapr_get_nested_guest(spapr, lpid); + if (!guest) { + return H_P2; + } } - return map_and_getset_state(cpu, guest, vcpuid, &gsr); + return map_and_getset_state(cpu, spapr, guest, vcpuid, &gsr); } =20 static target_ulong h_guest_set_state(PowerPCCPU *cpu, @@ -1641,7 +1693,8 @@ static int get_exit_ids(uint64_t srr0, uint16_t ids[1= 6]) return nr; } =20 -static void exit_process_output_buffer(PowerPCCPU *cpu, +static void exit_process_output_buffer(SpaprMachineState *spapr, + PowerPCCPU *cpu, SpaprMachineStateNestedGuest *guest, target_ulong vcpuid, target_ulong *r3) @@ -1679,7 +1732,7 @@ static void exit_process_output_buffer(PowerPCCPU *cp= u, gsr.gsb =3D gsb; gsr.len =3D VCPU_OUT_BUF_MIN_SZ; gsr.flags =3D 0; /* get + never guest wide */ - getset_state(guest, vcpuid, &gsr); + getset_state(spapr, guest, vcpuid, &gsr); =20 address_space_unmap(CPU(cpu)->as, gsb, len, true, len); return; @@ -1705,7 +1758,7 @@ void spapr_exit_nested_papr(SpaprMachineState *spapr,= PowerPCCPU *cpu, int excp) =20 exit_nested_store_l2(cpu, excp, vcpu); /* do the output buffer for run_vcpu*/ - exit_process_output_buffer(cpu, guest, vcpuid, &r3_return); + exit_process_output_buffer(spapr, cpu, guest, vcpuid, &r3_return); =20 assert(env->spr[SPR_LPIDR] !=3D 0); nested_load_state(cpu, spapr_cpu->nested_host_state); @@ -1820,7 +1873,7 @@ static target_ulong h_guest_run_vcpu(PowerPCCPU *cpu, gsr.buf =3D vcpu->runbufin.addr; gsr.len =3D vcpu->runbufin.size; gsr.flags =3D GUEST_STATE_REQUEST_SET; /* Thread wide + writing */ - rc =3D map_and_getset_state(cpu, guest, vcpuid, &gsr); + rc =3D map_and_getset_state(cpu, spapr, guest, vcpuid, &gsr); if (rc =3D=3D H_SUCCESS) { nested_papr_run_vcpu(cpu, lpid, vcpu); } else { diff --git a/include/hw/ppc/spapr_nested.h b/include/hw/ppc/spapr_nested.h index e420220484..f7be0d5a95 100644 --- a/include/hw/ppc/spapr_nested.h +++ b/include/hw/ppc/spapr_nested.h @@ -11,7 +11,13 @@ #define GSB_TB_OFFSET 0x0004 /* Timebase Offset */ #define GSB_PART_SCOPED_PAGETBL 0x0005 /* Partition Scoped Page Table */ #define GSB_PROCESS_TBL 0x0006 /* Process Table */ - /* RESERVED 0x0007 - 0x0BFF */ + /* RESERVED 0x0007 - 0x07FF */ +#define GSB_L0_GUEST_HEAP_INUSE 0x0800 /* Guest Management Heap Size */ +#define GSB_L0_GUEST_HEAP_MAX 0x0801 /* Guest Management Heap Max Size */ +#define GSB_L0_GUEST_PGTABLE_SIZE_INUSE 0x0802 /* Guest Pagetable Size */ +#define GSB_L0_GUEST_PGTABLE_SIZE_MAX 0x0803 /* Guest Pagetable Max Siz= e */ +#define GSB_L0_GUEST_PGTABLE_RECLAIMED 0x0804 /* Pagetable Reclaim in by= tes */ + /* RESERVED 0x0805 - 0xBFF */ #define GSB_VCPU_IN_BUFFER 0x0C00 /* Run VCPU Input Buffer */ #define GSB_VCPU_OUT_BUFFER 0x0C01 /* Run VCPU Out Buffer */ #define GSB_VCPU_VPA 0x0C02 /* HRA to Guest VCPU VPA */ @@ -196,6 +202,38 @@ typedef struct SpaprMachineStateNested { #define NESTED_API_PAPR 2 bool capabilities_set; uint32_t pvr_base; + + /** + * l0_guest_heap_inuse: The currently used bytes in the Hypervisor's G= uest + * Management Space associated with the Host Partition. + **/ + uint64_t l0_guest_heap_inuse; + + /** + * host_heap_max: The maximum bytes available in the Hypervisor's Guest + * Management Space associated with the Host Partition. + **/ + uint64_t l0_guest_heap_max; + + /** + * host_pagetable: The currently used bytes in the Hypervisor's Guest + * Page Table Management Space associated with the Host Partition. + **/ + uint64_t l0_guest_pgtable_size_inuse; + + /** + * host_pagetable_max: The maximum bytes available in the Hypervisor's= Guest + * Page Table Management Space associated with the Host Partition. + **/ + uint64_t l0_guest_pgtable_size_max; + + /** + * host_pagetable_reclaim: The amount of space in bytes that has been + * reclaimed due to overcommit in the Hypervisor's Guest Page Table + * Management Space associated with the Host Partition. + **/ + uint64_t l0_guest_pgtable_reclaimed; + GHashTable *guests; } SpaprMachineStateNested; =20 @@ -229,9 +267,15 @@ typedef struct SpaprMachineStateNestedGuest { #define HVMASK_HDEXCR 0x00000000FFFFFFFF #define HVMASK_TB_OFFSET 0x000000FFFFFFFFFF #define GSB_MAX_BUF_SIZE (1024 * 1024) -#define H_GUEST_GETSET_STATE_FLAG_GUEST_WIDE 0x8000000000000000 -#define GUEST_STATE_REQUEST_GUEST_WIDE 0x1 -#define GUEST_STATE_REQUEST_SET 0x2 +#define H_GUEST_GET_STATE_FLAGS_MASK 0xC000000000000000ULL +#define H_GUEST_SET_STATE_FLAGS_MASK 0x8000000000000000ULL +#define H_GUEST_SET_STATE_FLAGS_GUEST_WIDE 0x8000000000000000ULL +#define H_GUEST_GET_STATE_FLAGS_GUEST_WIDE 0x8000000000000000ULL +#define H_GUEST_GET_STATE_FLAGS_HOST_WIDE 0x4000000000000000ULL + +#define GUEST_STATE_REQUEST_GUEST_WIDE 0x1 +#define GUEST_STATE_REQUEST_HOST_WIDE 0x2 +#define GUEST_STATE_REQUEST_SET 0x4 =20 /* * As per ISA v3.1B, following bits are reserved: @@ -251,6 +295,15 @@ typedef struct SpaprMachineStateNestedGuest { .copy =3D (c) \ } =20 +#define GSBE_NESTED_MACHINE_DW(i, f) { \ + .id =3D (i), \ + .size =3D 8, \ + .location =3D get_machine_ptr, \ + .offset =3D offsetof(struct SpaprMachineStateNested, f), \ + .copy =3D copy_state_8to8, \ + .mask =3D HVMASK_DEFAULT \ +} + #define GSBE_NESTED(i, sz, f, c) { \ .id =3D (i), \ .size =3D (sz), \ @@ -509,9 +562,11 @@ struct guest_state_element_type { uint16_t id; int size; #define GUEST_STATE_ELEMENT_TYPE_FLAG_GUEST_WIDE 0x1 -#define GUEST_STATE_ELEMENT_TYPE_FLAG_READ_ONLY 0x2 +#define GUEST_STATE_ELEMENT_TYPE_FLAG_HOST_WIDE 0x2 +#define GUEST_STATE_ELEMENT_TYPE_FLAG_READ_ONLY 0x4 uint16_t flags; - void *(*location)(SpaprMachineStateNestedGuest *, target_ulong); + void *(*location)(struct SpaprMachineState *, SpaprMachineStateNestedGu= est *, + target_ulong); size_t offset; void (*copy)(void *, void *, bool); uint64_t mask; --=20 2.47.1 From nobody Thu Apr 3 10:05:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699596; cv=none; d=zohomail.com; s=zohoarc; b=cYatvt60jc8ZQy4cY5PFiRGN/TmOYTH3vj92JfVQRqEXzhMn1XmNxvWVe7aHK15CcqfO5w4gKW8Zh4/LgterBjunVUeL/QPdTpkewPrNS83fmKi4DB89SdoZSiy+5HUyLK4iR2RsyXjaIdTfXoTj7ljV+bLnv1dcL7TrovaHmgQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699596; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JY67tjfgQ34CRjW0ZGaljhvuHtNs5IgoqrFyn/RHWZc=; b=KWE0Y+1SHdDx9VEVNcn06x0b9ZYe9nvmjNs3BJ+p4ktTqxAGwVPA3jNS43ISKB8pSJNhpoDfCvyDNx1Wbp+ufSEnen9uLxSISWTM9y4v67MvMmC9GNkVzmdWo/XAf7O8gI/gsjpJEDlcdROHQV//G3CTnEz+vkmwSmR4KXbMPkQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699596174452.0731363168653; Tue, 11 Mar 2025 06:26:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJm-0005nP-8S; Tue, 11 Mar 2025 09:06:48 -0400 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 1trzEv-0005tv-4P; Tue, 11 Mar 2025 09:01:46 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEs-0000KV-H5; Tue, 11 Mar 2025 09:01:44 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-2f42992f608so9032932a91.0; Tue, 11 Mar 2025 06:01:40 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698099; x=1742302899; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JY67tjfgQ34CRjW0ZGaljhvuHtNs5IgoqrFyn/RHWZc=; b=AWL+hf0yRuk1bQE/e1HZgJuK21sORynea7DAsLFvOxMum93xxWSccoFQcorcxSHAUy 92Rm2BFG+3UBnLIsHWa9S09HPS/4mU1YQE1DqcV9+BhWk25UQOu3rAl5Kkrmldvwx3bL p+rRZmrhCXN/yGiggW2yZKsoyiQzse3Cvytx6a/nFJp9TWNatWTPOxbfV/WvKuucwTcf //oquu5VKTVRDt4yQkhuln5EInEruxefGaAog8wQeIrQG0pACXI6gBdEwGRmgmHLyLlw rA8MwWJI5ToXus6y9sb+dfz3n/y3yt8TrTpnFKb+qwrtXwF4CHpcIjBQDoUhqRrHoyUl MBzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698099; x=1742302899; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JY67tjfgQ34CRjW0ZGaljhvuHtNs5IgoqrFyn/RHWZc=; b=Hqx273MCUVVNLkd0cVw8Ec088Md4Lh+Xy1ecXAu+IMzI+C1XbyLTjHr1pAFHHSxxDm IY13Gou7ByLdNJ4Q0JnZTOQ3N52WCV0elYtucc10lresX/r7Fm35zNEn/hrj0pTALkko pkj/Je0XhpRZDdUPl/zom5ftWTyrGr7e/IZ5S+UAAwUQ+4qwFF3bJTsFy8bgW2pL+LbX DR6uzU9pHEGi2zCmVNZyLKTxv/KJqQW8Ytc2Gco1swLFPKGZUMVEFEu/zidrUOwYtwsE kQmbh4uT0I8K5qwjgrnm0/v33XvAjQpIjME0676nzGi5PWv5eYIZBa+YmjQGw6vnJqlN Z+JQ== X-Forwarded-Encrypted: i=1; AJvYcCXyizlIIbA07NwE9lRmQxGdTtbCKe4fdDkiuuEGZJlPlKKHa+9OjqF9kwhp9KZYtoDkjxytK0oIpA==@nongnu.org X-Gm-Message-State: AOJu0Yyv7Zmic4VTYM8rnn2T7JAaa+SkMPd71UHKLERT3MnuU29ikjtQ 6oJ8jDN/DB2ICO8e19p9Y4ybHMCsiripcUqmBp36uOiGVmNm7n3giOeuHw== X-Gm-Gg: ASbGncskEJYZwShg+Huym507yXEWfzug9AiEyW2kurBJkD1UFDpXQzUJfqg0i9JexbE nMV99DuT9keTelgHBrriDHybhPfZ0Ab7Ww1DaR1iYDcbcFMthvwyLJ/447WnoMhUttML0VK+3An BeAeyuC9mPbxirYTPekM90+TEROGPHWM4Z5EHDmCGWBEg6DA9hu9D9YkqW7x6qDJluWMrVJ1yZw +QzR+FygQW40IaH4tUBWjxy2izWUGTxRKTWurRUKAdT2ljipnqg/rFEKPydN4t93Eear0NGzd5K HWsg3I1MXAiAFn15AU+iWyvQPFOl792ny/waocEsqYykOWSJwyX6Qh7JvmnPyQ== X-Google-Smtp-Source: AGHT+IHfbWkjiyhk8kgV3NYQHOuEDsaSJvC+Ced3BjtR/V255+jwgWGx78b0P9eE9vFtHLdputyg9g== X-Received: by 2002:a17:90b:1a86:b0:2ee:9b09:7d3d with SMTP id 98e67ed59e1d1-2ff7ce8b60amr24976057a91.19.1741698099460; Tue, 11 Mar 2025 06:01:39 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 63/72] target/ppc: fix timebase register reset state Date: Tue, 11 Mar 2025 22:57:57 +1000 Message-ID: <20250311125815.903177-64-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699597581019100 Content-Type: text/plain; charset="utf-8" (H)DEC and PURR get reset before icount does, which causes them to be skewed and not match the init state. This can cause replay to not match the recorded trace exactly. For DEC and HDEC this is usually not noticable since they tend to get programmed before affecting the target machine. PURR has been observed to cause replay bugs when running Linux. Fix this by resetting using a time of 0. Message-ID: <20241219034035.1826173-2-npiggin@gmail.com> Signed-off-by: Nicholas Piggin --- hw/ppc/ppc.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c index 90e3db5cfe..3a80931538 100644 --- a/hw/ppc/ppc.c +++ b/hw/ppc/ppc.c @@ -1123,16 +1123,21 @@ void cpu_ppc_tb_reset(CPUPPCState *env) timer_del(tb_env->hdecr_timer); ppc_set_irq(cpu, PPC_INTERRUPT_HDECR, 0); tb_env->hdecr_next =3D 0; + _cpu_ppc_store_hdecr(cpu, 0, 0, 0, 64); } =20 /* * There is a bug in Linux 2.4 kernels: * if a decrementer exception is pending when it enables msr_ee at sta= rtup, * it's not ready to handle it... + * + * On machine reset, this is called before icount is reset, so for + * icount-mode, setting TB registers using now =3D=3D qemu_clock_get_n= s() + * results in them being garbage after icount is reset. Use an + * explicit now =3D=3D 0 to get a consistent reset state. */ - cpu_ppc_store_decr(env, -1); - cpu_ppc_store_hdecr(env, -1); - cpu_ppc_store_purr(env, 0x0000000000000000ULL); + _cpu_ppc_store_decr(cpu, 0, 0, -1, 64); + _cpu_ppc_store_purr(env, 0, 0); } =20 void cpu_ppc_tb_free(CPUPPCState *env) --=20 2.47.1 From nobody Thu Apr 3 10:05:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699602; cv=none; d=zohomail.com; s=zohoarc; b=TnIdyizzjpy1JZj1Ly7ODdpd5j/6/OK2lRTNqAOT8lmtHGnlQnUCZ9dylt8KMddNeRJg2vXB8zokdfQrT28R+1EfQ7q9rn6mya/5SYTO4RkpPIrYNprDkS143ftt+sNQOK63KsXQ7IUwI9YaP+FnHdNeTiJ7gyz0b1v1RvuQUgU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699602; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lV0y6ykMDBCM1ul3LncOR8t4MUHPncGhWb9AC9RcVko=; b=K/wJS0Zi+L8koNFX5Gbm7jySKvBPQKY2nnWsd8T8suMjIXr9eLsp0Z6ouo2VQYJSDFlUff2VmzE92533C8l9FX5nyFwaC649/62trMjso0U3SNb4ZKcSutzN7xEwJ6k07gN2QxeRxgfskFe2w8hm420Rx6fnp95cS0ncI4htGkM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699602237436.5392157819499; Tue, 11 Mar 2025 06:26:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJz-00068y-DA; Tue, 11 Mar 2025 09:06:59 -0400 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 1trzEv-0005v6-TO; Tue, 11 Mar 2025 09:01:47 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEu-0000L5-63; Tue, 11 Mar 2025 09:01:45 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-2fe9759e5c1so8054887a91.0; Tue, 11 Mar 2025 06:01:43 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698102; x=1742302902; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lV0y6ykMDBCM1ul3LncOR8t4MUHPncGhWb9AC9RcVko=; b=fnNjkko7V8djKvJXXLgjgrRE8/pdBbT4eDrQiXd9CbCsnT7FPhlllRMXIFPcNaR1/P 6XteelwdKMTdsKtePyJqH0R6jZabemK5KAzTTI8wIitERtU6J0RmHKc3qH9tPHdDqYIs LiXhIXE2CxJpuK4NeyJiIkwyS3DoigOvxaYQvGTvLnpNkoD5CyeT4OMWOaVQDFlSHchZ FEnBWWMNyG+jvoLVLsZqGtMDN5vYcOSDUqzgkEVhZiYetuQa6+Opp7OQsR/OeR211sGw u2EKNyd+48wNDl3s7wPLOX/qZnxRFQPqb4B+fpDKggeeMh6HP1yVdFqI29fyqUgQmney XLGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698102; x=1742302902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lV0y6ykMDBCM1ul3LncOR8t4MUHPncGhWb9AC9RcVko=; b=HWVEEfBQ7Et+vMDTIpnGiXCa7O2fdgFxxZM17BTreuZHHqntYaozYPvfXzowTkhzff 6FZ/EMJ8Kn82SL44Z2sx5XfTxMYRt4NOFl+EnYaMiBBMddD6IU7mI2kjAx9HT/8Y8p9c IDXD/3jJSaop6zNQmKR/xNwougdnF/FSnjaOKUWY9Ka24cIwZnSgtyVGfb1hlkiWJzpy V9LhsJccW1avsD2ijz9gpKYkTy+N9jFh4HWGEGtDWE0e58WKJLa4cX3Y1aBM0OXWDV7R SoDUh+b/QJimPesPp0jtE/gppU52TdD/8m7a3zaJNRLgfEtfDqn95mCvXhQMK3btufDj 6MIQ== X-Forwarded-Encrypted: i=1; AJvYcCVIqn30pXoGwyVeLCP+XR4HOJyez/Rc8HKAikdNlHw271xvXc5z1m8cNj/VUHLvI5vVhJb5jmoJxA==@nongnu.org X-Gm-Message-State: AOJu0YxkrRz1oY1HBTC3ZJkEqpqhfYrUpW+91xBmLkIfirHFqbL+NR/O methTdK/I62N0OoXXs0XZJ8T0dKCyfiHVED+2oJ5q5tSKasdX5tqB2lxhQ== X-Gm-Gg: ASbGncskZbdojavG7J0FzybO8svhaWXFx5vXD9hSgbboV7Eo86g1imE+KcmbO2r/z7u Afod9WPTZtqnsUstRIZjYs0i/2S6UuDkrWJGS7K937NrwdhI53LGKGvf+QtshdOEEDuX427t2js nOCym8r9HBdbVvdmBFANVFlMMqUBIzTmcAC+7cM2bqp9a9AKYZC3XGr+bTsvKCqTeEU8oDS0PW1 umwoA1fSXS29mIU+p6RHKyI6aUGn73NQW8WJEhOyTVCw4RRWc86dONtUjM0+PCvWWixTiIcAej2 1+vQAN0CnxO1zxOGYVlgZHFbmWZ+slvdvyxrhvLDEyWcDFDxKXY= X-Google-Smtp-Source: AGHT+IFdo6Q7W2VRMrdNXkKgtKJ7N7iDZIPAYVg198lj4C5MNEmZNVQa3zcn4h4O/NeQxEU1I74E4w== X-Received: by 2002:a17:90a:d00f:b0:2ee:d433:7c50 with SMTP id 98e67ed59e1d1-300ff351ae3mr4025558a91.23.1741698101874; Tue, 11 Mar 2025 06:01:41 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 64/72] target/ppc: Wire up BookE ATB registers for e500 family Date: Tue, 11 Mar 2025 22:57:58 +1000 Message-ID: <20250311125815.903177-65-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699607402019000 Content-Type: text/plain; charset="utf-8" From the Freescale PowerPC Architecture Primer: Alternate time base APU. This APU, implemented on the e500v2, defines a 64-bit time base counter that differs from the PowerPC defined time base in that it is not writable and counts at a different, and typically much higher, frequency. The alternate time base always counts up, wrapping when the 64-bit count overflows. This implementation of ATB uses the same frequency as the TB. The existing spr_read_atbu/l functions are unused without this patch to wire them into the SPR. RTEMS uses this SPR on the e6500, though this hasn't been tested. Message-ID: <20241219034035.1826173-6-npiggin@gmail.com> Signed-off-by: Nicholas Piggin --- target/ppc/cpu_init.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 9dc5ace828..8b590e7f17 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -922,6 +922,18 @@ static void register_BookE206_sprs(CPUPPCState *env, u= int32_t mas_mask, #endif } =20 +static void register_atb_sprs(CPUPPCState *env) +{ + spr_register(env, SPR_ATBL, "ATBL", + &spr_read_atbl, SPR_NOACCESS, + &spr_read_atbl, SPR_NOACCESS, + 0x00000000); + spr_register(env, SPR_ATBU, "ATBU", + &spr_read_atbu, SPR_NOACCESS, + &spr_read_atbu, SPR_NOACCESS, + 0x00000000); +} + /* SPR specific to PowerPC 440 implementation */ static void register_440_sprs(CPUPPCState *env) { @@ -2911,6 +2923,11 @@ static void init_proc_e500(CPUPPCState *env, int ver= sion) register_BookE206_sprs(env, 0x000000DF, tlbncfg, mmucfg); register_usprgh_sprs(env); =20 + if (version !=3D fsl_e500v1) { + /* e500v1 has no support for alternate timebase */ + register_atb_sprs(env); + } + spr_register(env, SPR_HID0, "HID0", SPR_NOACCESS, SPR_NOACCESS, &spr_read_generic, &spr_write_generic, --=20 2.47.1 From nobody Thu Apr 3 10:05:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699596; cv=none; d=zohomail.com; s=zohoarc; b=mjnki1Ae5uyzgKsZjWA1/SEe4klVMg9OK7d+1nP5hcPz4tr5DwRX9pymD8lUGjh71eWKgZzVosqAW1EB8p8DbCC3vWgupB9EL07jWp3A2r5Qzu1d/RPapS2sGwGGM7q4WscpqnN6LBbAmSGyLys7ObUV7dTHVpjW3+uEOTQj4Ms= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699596; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ilno9T+zEsi8ai9jccA8FciMmreT00QeJlMccgO6CII=; b=BufIwknU8lX+r1z6/1xArXe4iaK8Nqy6MjUX/QIbv6ijnSD4qEhCM/D+At+OLVRb5+OVQm6vydUi9ILyylLnnDI7NHsjTTHViskEqnkkwhPJ8KfwvRO68IXXPGKfvdNkqU2EtQa0JJ2LZO8DHDsIP3F3xvuyQdRqraLBF4ljTAE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699596621738.1454852529105; Tue, 11 Mar 2025 06:26:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzJz-0006A6-PO; Tue, 11 Mar 2025 09:06:59 -0400 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 1trzEx-0005yo-TL; Tue, 11 Mar 2025 09:01:48 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEw-0000LW-6c; Tue, 11 Mar 2025 09:01:47 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-2feb96064e4so10452685a91.1; Tue, 11 Mar 2025 06:01:45 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698104; x=1742302904; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ilno9T+zEsi8ai9jccA8FciMmreT00QeJlMccgO6CII=; b=eC1sNM8M2L7mnzvbf7oFH8kDhaP8kFy61ubLRZqrUTfyKZxAHJjbO/F5KDWTfWZl/n wuqli2wMNm20qXUJi5twIhYUVQqIz9GamMMTFEkwylRkvfUfrN0bnUyOzWhv1E7LSQTb BYlkGTb0L0uuvxS63HSDMO5vdxDeKdFhhDa9RPmnAH3OyEHc7HLySvjdiCbfKo3ZyxvD ffCokiVsV7N5fQHlYIVsAgJ36YacwpBjjFccKVaauVygpV8KwwoNpkS29ROBQyXVRKod tI4q5klWWK3m4rvtzsZ/wpnUHmmNU8CFlcULYrBQlW8HrpUTbDn/2ViXzJhXMXDQVJ3b ZCaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698104; x=1742302904; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ilno9T+zEsi8ai9jccA8FciMmreT00QeJlMccgO6CII=; b=WdQCkac2XWbaEcloklwZAttmRBTvJ1eC6JB6tXHCHbctRxligDSHAt8OayDh377NE9 bdaEJuEIp8Q14L9Gu/ubeua9leJuwqRpWGqJuccXLwQFvKfPL2FYOP6s2ZmiTosq3jSH GgfGz5E6kDYE6SVxe3FLQEvv371BO7QCkN5/g2ilVQwiAU3cSG6vlVIN6I3UjV1uQuh4 Fd80X2WL6cwknAwwNpV47viNtuhv4liAYpbrO5NRDvKPmwEqteuOIWYiSm5IvYqEub2I i4DR0CAxjCiotnjZ3xEREmfGNBEHDvs2FaO/JpVU28nRLkYipe3hgjT06jIMIvtNj38J fBPw== X-Forwarded-Encrypted: i=1; AJvYcCWr0Z75IlGlOOIQRdJfSCGS6oiQOAbcYzOQ0GsGdFfVJ3cjPajvFukRGFYAHE0YPlwL89TfB/O3Ig==@nongnu.org X-Gm-Message-State: AOJu0YxbeOIvMPWdMwUa9svc3RUDnTiJGpxf57wPlrNWuWdMdQ+4yhHV a7h35CI6KLwbSIRFEoiZSABu06sz8Z3heMYcgpKIgfgHPFu8rBV1/Y5S1w== X-Gm-Gg: ASbGncuRq8R83hTEZaOXR1nJYKvsWNrc1xXZC961dPWzs2tknTjJtLbprhU4sb2DHvT qT4EnpEFvnKb6mQkQbH2YDBHBAXwlP/rXYDBb8yLqk8vqDKsIc0HkRD+BNshviXbl1mLk75bn9l Y6KfSCRAmBOJ8DBpPrstqzFkL4j6JtDuV5s6Ai/JaHh0AYc5u7DzpP9ClUg1iIEK+RTFG4cgDiH b7FZcNPY0tFKF7n7lRTwTGTjS+bTC0f4SioV5a3WG+6PKA9M29ROSKbfnBY3rK2mx1PrGGGwADP r6aNOvlBmt+cGE884pW922VNgIqDXB9g9WvJzfEP2HUbXqkU5owaRcYtVQBjOA== X-Google-Smtp-Source: AGHT+IHMU9Ha3HMA9N1E6G3VfYwY0OTrH/wycKuKcP6q00DRV4soyT0f4SifW/kAixS1ZMl6KA+VAQ== X-Received: by 2002:a17:90b:1d0a:b0:2ea:83a0:47a5 with SMTP id 98e67ed59e1d1-2ff7ce457acmr25997767a91.4.1741698104252; Tue, 11 Mar 2025 06:01:44 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org Subject: [PULL 65/72] target/ppc: Avoid warning message for zero process table entries Date: Tue, 11 Mar 2025 22:57:59 +1000 Message-ID: <20250311125815.903177-66-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699598371019000 Content-Type: text/plain; charset="utf-8" A translation that encounters a process table entry that is zero is something that Linux does to cause certain kernel NULL pointer dereferences to fault. It is not itself a programming error, so avoid the guest error log. Message-ID: <20241219034035.1826173-5-npiggin@gmail.com> Signed-off-by: Nicholas Piggin --- target/ppc/mmu-radix64.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/target/ppc/mmu-radix64.c b/target/ppc/mmu-radix64.c index 1d3d9e1be7..461eda4a3d 100644 --- a/target/ppc/mmu-radix64.c +++ b/target/ppc/mmu-radix64.c @@ -571,6 +571,20 @@ static int ppc_radix64_process_scoped_xlate(PowerPCCPU= *cpu, prtbe0 =3D ldq_phys(cs->as, h_raddr); } =20 + /* + * Some Linux uses a zero process table entry in PID!=3D0 for kernel c= ontext + * without userspace in order to fault on NULL dereference, because us= ing + * PIDR=3D0 for the kernel causes the Q0 page table to be used to tran= slate + * Q3 as well. Check for that case here to avoid the invalid configura= tion + * message. + */ + if (unlikely(!prtbe0)) { + if (guest_visible) { + ppc_radix64_raise_si(cpu, access_type, eaddr, DSISR_R_BADCONFI= G); + } + return 1; + } + /* Walk Radix Tree from Process Table Entry to Convert EA to RA */ *g_page_size =3D PRTBE_R_GET_RTS(prtbe0); base_addr =3D prtbe0 & PRTBE_R_RPDB; --=20 2.47.1 From nobody Thu Apr 3 10:05:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700099; cv=none; d=zohomail.com; s=zohoarc; b=d1M1VZiKlE/rOHK9C/kiNfxcO71eaCRsrVeS5AJcFxNkIadvtZmFzaKd23M4RD++KbS3PkI4OwBVsl0KqbnDdCBQhG5wuT7uJcPRylWUobHVG0TO2GgmZ9q5V3uWV5RBvReoU3L1L+kfgnTsOxHkeLcoafg7Bz01vpbcSVqISMY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700099; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TQn7KOWUQFcqU1w4jtYKqmuC8Pu69FDqNY7Y/CrCA40=; b=ernwz7OopY++aMcxvwf/XJAOgXqVCv0+kXvXDNvQIa4XYHUYKD3EP+ED2/5ekyNI6R0Mc7MRNioVErzQQxu3959zKJMsXGQY9LuGcRr5hKbPp2qCyjDluPwSs6n1D463cMmije34pEkRCDhrGQHHVqRHWIjP9lziAbvvp8IHiXs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741700099258316.8882986218598; Tue, 11 Mar 2025 06:34:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzK6-0006ZP-TI; Tue, 11 Mar 2025 09:07:08 -0400 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 1trzF1-00062l-6z; Tue, 11 Mar 2025 09:01:53 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzEz-0000MD-HX; Tue, 11 Mar 2025 09:01:50 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-2feb91a25bdso8351929a91.1; Tue, 11 Mar 2025 06:01:48 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698107; x=1742302907; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TQn7KOWUQFcqU1w4jtYKqmuC8Pu69FDqNY7Y/CrCA40=; b=EPoUpjeiPKGvD2rSrb/7jfGlD2ezASk+OL+EFviNCTw4p2mJSY/pRPkESWDAxmhAHr 2KEFRKVAusFZfHtKTzezHPf0zFsEEGA88dt8K7ENZbpHUs5l95PH4pdCpYMCDIe2gcK7 SU8eFKrW/ELWj/gyXNq4bFL3679nNP0f5FE9rwssHV4kOrymuBVAdsgJ4KJOhEwimZoM p/VpOnA6DuVJbr9yS2pVD/Ymyu9itNbzL/y/l/v9SG2skULiwvSdMkEQi/eGzGJs8fxv JhKQwK3ONVbF06DvlE3lW/fSgQc06SEUZdm7N1azlv/Bo4iWYlag8/QwICWczOH7WZxB 0Uxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698107; x=1742302907; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TQn7KOWUQFcqU1w4jtYKqmuC8Pu69FDqNY7Y/CrCA40=; b=qVMeetIcAJufjtf8Ec+2/xdPOZWx2pVRGcKdOVK2U4xf8KUkncaOtvuK4gtDxoK0df jbaWI/G5wJ/Aj4PEXuFz16dENJkEladrip5gLvT/afwZ0hNxygeW8U/vR8FQD/L198H4 jWID0BoTMUcbQeQrKhDdmJShamOpxXevtPCN7IgJ9SshDr5r0dcpTbtcZIodjIp/Xapc +AsWmkacwP/EBp3XxTDDt+GnbqyaqsMWiBCMJPwtcOx2gVUjXSR38++rEA0lR+2gBQNV 397Ux++9GVFcmv8ZoYLpwY41NlKLh3TS4bYgmudpAV4APmEsUsO+VqFPVpLl52tg39xw 5xRQ== X-Forwarded-Encrypted: i=1; AJvYcCUNjBlRKvRUFKpTo8SYofTBu+cXSkComN2ji3eOyZ+q3dEVqA5qXZqJ084SUY1y6kZQqGvC+H8mNw==@nongnu.org X-Gm-Message-State: AOJu0YxzCdZTUqmZfT3V/CGJUJqDzLTci0sVjMq1xbaNbpRUokachoe3 j2kwuhKLfagPPZClrCtLbMWKcg+GwxzFPz2p176shLjgsoK/qqQI+pZ8NQ== X-Gm-Gg: ASbGncugDu2bPeQ7n/rlnHBxUpQfh4DC4r611nsiEUbYzkU6QujqIGNAeaBZ8UO5yxa +0hYqFf+KAz7TYh3ZK5pW2dkCOZMYPPF2sw6PwI4no2C01YTF45dHIfZHrNmnTCCcJ0NKhAM1Tr 5+cKDNUvDLPl2p9OMIW5sxh6OkKYfu9S0Z5v+8th84GnY0YOG1GwFx/zghU9eNEWp2zq4rrE45f WYxkva/DG9rwZjf+QDFe96YUI7/4rR9ZqjNtBiXwJXYhUSL7PHTNufIWhNc6HyGNtGDvHn3r87h tTov+T/5SaNHTHvQu9+FFXJK2RidPNk1p6YLw0lh+wIBXFxZ/c4= X-Google-Smtp-Source: AGHT+IHivNbFtL7rTgJkaCQzrNnXxu0MUV9IllhCiFP4VhSb7Cv5sQSyZnueukBT4lrE3TaIIqOloA== X-Received: by 2002:a17:90b:2648:b0:2fe:e9c6:689e with SMTP id 98e67ed59e1d1-300ff0c9bacmr4862348a91.8.1741698107206; Tue, 11 Mar 2025 06:01:47 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Harsh Prateek Bora , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 66/72] spapr: Generate random HASHPKEYR for spapr machines Date: Tue, 11 Mar 2025 22:58:00 +1000 Message-ID: <20250311125815.903177-67-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700101295019100 The hypervisor is expected to create a value for the HASHPKEY SPR for each partition. Currently it uses zero for all partitions, use a random number instead, which in theory might make kernel ROP protection more secure. Signed-of-by: Nicholas Piggin Reviewed-by: Harsh Prateek Bora Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20241219034035.1826173-4-npiggin@gmail.com> Signed-off-by: Nicholas Piggin --- hw/ppc/spapr.c | 3 +++ hw/ppc/spapr_cpu_core.c | 2 ++ include/hw/ppc/spapr.h | 1 + 3 files changed, 6 insertions(+) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index fcd2ca515c..a415e51d07 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2917,6 +2917,9 @@ static void spapr_machine_init(MachineState *machine) spapr_ovec_set(spapr->ov5, OV5_XIVE_EXPLOIT); } =20 + qemu_guest_getrandom_nofail(&spapr->hashpkey_val, + sizeof(spapr->hashpkey_val)); + /* init CPUs */ spapr_init_cpus(spapr); =20 diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index 9e0e0648a7..0671d9e44b 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c @@ -273,6 +273,8 @@ static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMa= chineState *spapr, env->spr_cb[SPR_PIR].default_value =3D cs->cpu_index; env->spr_cb[SPR_TIR].default_value =3D thread_index; =20 + env->spr_cb[SPR_HASHPKEYR].default_value =3D spapr->hashpkey_val; + cpu_ppc_set_1lpar(cpu); =20 /* Set time-base frequency to 512 MHz. vhyp must be set first. */ diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index d227f0b94b..39bd5bd5ed 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -203,6 +203,7 @@ struct SpaprMachineState { uint32_t fdt_initial_size; void *fdt_blob; uint8_t fdt_rng_seed[32]; + uint64_t hashpkey_val; long kernel_size; bool kernel_le; uint64_t kernel_addr; --=20 2.47.1 From nobody Thu Apr 3 10:05:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699313; cv=none; d=zohomail.com; s=zohoarc; b=eQn7k/l45v7g9dphqtm6inBh+pr+/OLZ/8FIutd78mSB9JoILxQB5G906fxzJI5ZKDmEGS1bMZR+IbPp0xWG60UKXHaybVBp82CGXq7pbBdAgYFhtPqjttDJgdvMpyjuq8Bh7ceQpr2ObPh7FxgHKPEA/RIFb1MEN6VQH6HcTMw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699313; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Kxho44oluW8FOSM2HZbfWLIKk4fba+N89CNPXqjPZug=; b=iwNcE1M3PxguEyqB3pHfQqyxODzs85OgM9OHZ5cTnCHcolL8uV5uzarVh65yQdIsubUcUGPHt/yR5lJZBFkn5WXyA/cLzA01wIeOFcyutkgcALJOgUkiCQNCPXkr1rJWXTnSO+J7qFkojjla1VC476r+4nAwdLYE4CassdK4pHw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699313341270.9518057386367; Tue, 11 Mar 2025 06:21:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzKi-0000yJ-Le; Tue, 11 Mar 2025 09:07:44 -0400 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 1trzFC-0006Gp-Cq; Tue, 11 Mar 2025 09:02:08 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzF3-0000Mh-H5; Tue, 11 Mar 2025 09:02:00 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-2feae794508so8087751a91.0; Tue, 11 Mar 2025 06:01:52 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698110; x=1742302910; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Kxho44oluW8FOSM2HZbfWLIKk4fba+N89CNPXqjPZug=; b=h0yZUFWMoACsS+KnfRChFOlDIlKuKy4+gwe/LBTZbNal55kHDUUxHe55ZbQMFFsZ+o M0mxFpx0idByjce6KDUV59slq1wql3vO7vHsI4LxLZ63hD6vZw/3k7TB8XJzHrz45Dyu a7nhadZaxuFbPEh/MLQLn4vrrb4X1rZRaknJztMdXa/RIS7W9OBZlxdl5wxW+Q++lb4n 9FM956W5RGih43U1YxVawPWF1RUF15e23CQ1pngMYSDeLFesD52NBF4A+Hw2egvv4EIV H5NNxnRUxwEKuwYH36/dln3jOa0VTxeMuoLbPQAE9fX66EZIxQaJ6KyJ4RPP4rSM9ePf 1AsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698110; x=1742302910; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Kxho44oluW8FOSM2HZbfWLIKk4fba+N89CNPXqjPZug=; b=wNI13SH382S3menucWOkSwI4TCeEPpHoEyAimz39m1V2tzFScD2NduDCEnKPsrnZg5 Y9ASTLu45LKmk1rltH+gca+qo50aMqAsbJV568NUfbn/fqCppmHtox5ynCo5MpLCXVuN 3VUkttWxnLVFyok94BvJMLk7PXmSNoKkLQnVPGupg/fxqwDC/xDd89Dh2/rwlrFx07do nh+iGsr1wQl6EvYmAaRoMGej9RSgSaSQ3I8xZ/vOE3OOjU7GUNmMkaaLST6DGmfLDF6j io+1TZhTXVX3y1BlzYnE7xGiPmJ+OCama8lBlOtSn/Ey13tn6cmq1wIWEP1M1WRmG6XH Cv/A== X-Forwarded-Encrypted: i=1; AJvYcCXqjp1nNoMzWiwKpmNhpywi9NxwdSoexCxZt1r+177Mr26lcjySIzRHjo3b2SCpoztdnSOGPlOTYw==@nongnu.org X-Gm-Message-State: AOJu0YwsQxy+oLyhTD7HiA1yD8rE0Z3ftHoXuRHit4eDd8Mc8RLXuvzU uLq4maEfKzqLLWDKLLN6G8dZRNw1ZQfZXgPW1Gdc12i35GEuknrAQnJDgA== X-Gm-Gg: ASbGncsLRYeDhEKp+99iqG9WsKGxsA7kncxXybErXaCfGC+a152SdR4biJ8MEYSWGO/ 8DBsPYFRvjjwwmzrTXrblNpKL5awkXeA0C6gbacQq2ZgRuKFLKLNU/23ERDXecOxe7e0myYKCKP ESZHsCUorXPnTLrnD4tTO3QxYv3xMaVKHPUm0yCR52s36gYr17t1nJdsC7EJfxyfmDacgxx9BCY w5Qt4/Un4Ox0HEAO+hzlCDjBwAHFup5MUv4t4Kgh5gIx6ZCg6y7rF6gzeOsTgrouQG9OCw5zmWH hPiycqbSGSKLz1XCC6nUkfsfhGqKYjQzul4rMkWrAI7nTUUoh/E= X-Google-Smtp-Source: AGHT+IEUtO7mbUqOQOnuiCu3c0l7NIXHWY4nXKZgBD+EBY6vpZWxOZ12LNzENerDYxx6zHjK+gg6IQ== X-Received: by 2002:a17:90b:3c8d:b0:2ee:d63f:d73 with SMTP id 98e67ed59e1d1-2ff7ce6c9b5mr27223648a91.11.1741698109935; Tue, 11 Mar 2025 06:01:49 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, BALATON Zoltan Subject: [PULL 67/72] ppc/amigaone: Simplify replacement dummy_fw Date: Tue, 11 Mar 2025 22:58:01 +1000 Message-ID: <20250311125815.903177-68-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699316115019100 Content-Type: text/plain; charset="utf-8" From: BALATON Zoltan There's no need to do shift in a loop, doing it in one instruction works just as well, only the result is used. Signed-off-by: BALATON Zoltan Reviewed-by: Nicholas Piggin Message-ID: <446bf740cbb99422be2cc5a31e51a1034eddded7.1740673173.git.balato= n@eik.bme.hu> Signed-off-by: Nicholas Piggin --- hw/ppc/amigaone.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index b02792221c..4290d58613 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -41,10 +41,7 @@ =20 /* AmigaOS calls this routine from ROM, use this if no firmware loaded */ static const char dummy_fw[] =3D { - 0x38, 0x00, 0x00, 0x08, /* li r0,8 */ - 0x7c, 0x09, 0x03, 0xa6, /* mtctr r0 */ - 0x54, 0x63, 0xf8, 0x7e, /* srwi r3,r3,1 */ - 0x42, 0x00, 0xff, 0xfc, /* bdnz 0x8 */ + 0x54, 0x63, 0xc2, 0x3e, /* srwi r3,r3,8 */ 0x7c, 0x63, 0x18, 0xf8, /* not r3,r3 */ 0x4e, 0x80, 0x00, 0x20, /* blr */ }; --=20 2.47.1 From nobody Thu Apr 3 10:05:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741701956; cv=none; d=zohomail.com; s=zohoarc; b=krJmF1+HXlzXv3MGNRY4iQU9DM6gy5t4t4OyscRthK/u92GHCLI9l/SoAnOMizAK5thkd7WEOY+c+hGFV9iccLsXw4n/+aois2/RFoUjLOErZi6hyyFRC5d6DtaLwOhf6tbHCYjT3mVapBebymR7EaSXkHof6B2/1YFw2oY71Kw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741701956; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ag/IQcoVCKBwm3hoxb2LywEaHZGgEXDr7bl00iOZl08=; b=f89LwHPHcJWFw7m7ssAFmXqjbb+DyB1HFoCWZCNq09DOIaRgchR+2yyOGNwVO637skRp1CEsOryepeFc7byNPvlYzQPFKitziN9szbPP0GFCEHTpNrS8gf/eBYJyzutNPESuDlL+C8FZcnVqZ7ll48LAoQCx6w7inUv8crwaFUI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174170195627798.9921150677194; Tue, 11 Mar 2025 07:05:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzK8-0006nm-UK; Tue, 11 Mar 2025 09:07:10 -0400 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 1trzFD-0006Gy-NP; Tue, 11 Mar 2025 09:02:08 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzF8-0000N4-4n; Tue, 11 Mar 2025 09:02:03 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-2ff80290e44so8662566a91.0; Tue, 11 Mar 2025 06:01:55 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698113; x=1742302913; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ag/IQcoVCKBwm3hoxb2LywEaHZGgEXDr7bl00iOZl08=; b=eOdkHY4BYQI4L1Defs19wLjxkEydc/X49RZsYiUSeUp8AoWN6gXiy+8YUwUIwCdR2w bYlflupRIDriAcerPBLzWmVBtHcpMnT+PSd9cDKiuWXuMJhamluUNG4AHr4BKrSP68WX iBppjdkmoHiI8RIgslXapl5/Y1Stpvo1hDpWfiCT5kdDzLCxPI2nGQcit4J/WjUwKQUQ Gbhrhx41EgGYMHxWYKvkFyUY4LQrxbthj6CILcuv1pH6bOZMwi8sqIk8JE5UIHjmQgEm INZsFOX1JymnN3CAkni7H4wpWzm/kiBvfMxF/jQ20Vj61ZJavnJoTxOE8cV69lzr7t8H /JTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698113; x=1742302913; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ag/IQcoVCKBwm3hoxb2LywEaHZGgEXDr7bl00iOZl08=; b=V4YSvJRvXVaev+yK9zIkcX0pZ+B8JTeQnbUYsPy5ZvAG7kqFMFHJm1Ezv/MibAEWxz cxjq+pU55LytlaLCmHoH0d41OROdE+a6+YX99dIGkUxQjE67Tv9gpCEWt3y+qoftJgOT 3lX5nUITlYvC2abVZw4cor513iEd641ppFFwidrPysiVq+hfbAy117o6vbCp8N7XfNZ+ Sn2lKdH52o9Pf0Ehzszy3agNuVJZasdWArEJh/xIHqQV9NMO4JdfBkLOaQp3CSsLHB31 6EADahqIuR0vToY6qR8Rc6mEsGfIo+usAvf7PAspdYvG6LpYCh1JZpb3YfQBPZpVuCsw iN0w== X-Forwarded-Encrypted: i=1; AJvYcCWa4eU1T2hJs+nM8BzGyQs93UgoxRsFW36ZXQN9tPYe6GNRos6sz/w1bhdG8o6y3GW0kxdvLYIgfg==@nongnu.org X-Gm-Message-State: AOJu0Yzr2wovBbKy5bupC2/NvodXWeWKIfQQLlIB5M2FouZilRd+81ev jAG5YV4/VEANvLAfdBwZhl5CxbVRXQwf126ypwU0YNzGdODyZ3c2Ds+SZQ== X-Gm-Gg: ASbGncswSE0s//1IQFzL3/C7oPCOq9Wv2PWEOiew8Kn2TIPaUdqfmdGm068mFG75B3q soiOzJ5jS2ECLg1CkCHlP3+EBKp59K+iqb8Tm3uvAs+CN/95lJqBT05ZkS0Mk7iCP8QB8QJDgLL TVONdk6GTzOE+gy5fwwzXe1jc0lv/GSOSMCMiE7+CL/9ggD5Q177BffwVnRUg4ES1YuCwzyfcpt uoIG2zWvUhh81nxy50WYySpMvHzVTKwZ42rMFSnuKoFIpBAOJlnlt//bO225TsxWpB8CnVbXAXq 7+dbuTuFNiaVM/MApXcLl+Dz4H1LAQnQE1ck51c9l1eju1o0+ns= X-Google-Smtp-Source: AGHT+IHGHi0YCKuzUX2ZW2gAJ1JVM7T7aSD2GJjt+xBz2msrBMmquFvOwCCHIZJ3MejaLnEfiScxNQ== X-Received: by 2002:a17:90b:1b0b:b0:2fc:c262:ef4b with SMTP id 98e67ed59e1d1-2ff7cea9a99mr30670044a91.18.1741698112616; Tue, 11 Mar 2025 06:01:52 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, BALATON Zoltan Subject: [PULL 68/72] ppc/amigaone: Implement NVRAM emulation Date: Tue, 11 Mar 2025 22:58:02 +1000 Message-ID: <20250311125815.903177-69-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741701959250019100 Content-Type: text/plain; charset="utf-8" From: BALATON Zoltan The board has a battery backed NVRAM where U-Boot environment is stored which is also accessed by AmigaOS and e.g. C:NVGetVar command crashes without it having at least a valid checksum. [npiggin: 32-bit compile fix] Signed-off-by: BALATON Zoltan Reviewed-by: Nicholas Piggin Message-ID: <7e4c0107ef6bdc2b20fb1e780a188275c7dc1e49.1740673173.git.balato= n@eik.bme.hu> Signed-off-by: Nicholas Piggin --- hw/ppc/amigaone.c | 113 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 110 insertions(+), 3 deletions(-) diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index 4290d58613..feb2cf452c 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -21,10 +21,13 @@ #include "hw/ide/pci.h" #include "hw/i2c/smbus_eeprom.h" #include "hw/ppc/ppc.h" +#include "system/block-backend.h" #include "system/qtest.h" #include "system/reset.h" #include "kvm_ppc.h" =20 +#include /* for crc32 */ + #define BUS_FREQ_HZ 100000000 =20 /* @@ -46,6 +49,100 @@ static const char dummy_fw[] =3D { 0x4e, 0x80, 0x00, 0x20, /* blr */ }; =20 +#define NVRAM_ADDR 0xfd0e0000 +#define NVRAM_SIZE (4 * KiB) + +#define TYPE_A1_NVRAM "a1-nvram" +OBJECT_DECLARE_SIMPLE_TYPE(A1NVRAMState, A1_NVRAM) + +struct A1NVRAMState { + SysBusDevice parent_obj; + + MemoryRegion mr; + BlockBackend *blk; +}; + +static uint64_t nvram_read(void *opaque, hwaddr addr, unsigned int size) +{ + /* read callback not used because of romd mode */ + g_assert_not_reached(); +} + +static void nvram_write(void *opaque, hwaddr addr, uint64_t val, + unsigned int size) +{ + A1NVRAMState *s =3D opaque; + uint8_t *p =3D memory_region_get_ram_ptr(&s->mr); + + p[addr] =3D val; + if (s->blk) { + blk_pwrite(s->blk, addr, 1, &val, 0); + } +} + +static const MemoryRegionOps nvram_ops =3D { + .read =3D nvram_read, + .write =3D nvram_write, + .endianness =3D DEVICE_BIG_ENDIAN, + .impl =3D { + .min_access_size =3D 1, + .max_access_size =3D 1, + }, +}; + +static void nvram_realize(DeviceState *dev, Error **errp) +{ + A1NVRAMState *s =3D A1_NVRAM(dev); + void *p; + uint32_t *c; + + memory_region_init_rom_device(&s->mr, NULL, &nvram_ops, s, "nvram", + NVRAM_SIZE, &error_fatal); + sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->mr); + c =3D p =3D memory_region_get_ram_ptr(&s->mr); + if (s->blk) { + if (blk_getlength(s->blk) !=3D NVRAM_SIZE) { + error_setg(errp, "NVRAM backing file size must be %" PRId64 "b= ytes", + NVRAM_SIZE); + return; + } + blk_set_perm(s->blk, BLK_PERM_CONSISTENT_READ | BLK_PERM_WRITE, + BLK_PERM_ALL, &error_fatal); + if (blk_pread(s->blk, 0, NVRAM_SIZE, p, 0) < 0) { + error_setg(errp, "Cannot read NVRAM contents from backing file= "); + return; + } + } + if (*c =3D=3D 0) { + *c =3D cpu_to_be32(crc32(0, p + 4, NVRAM_SIZE - 4)); + if (s->blk) { + blk_pwrite(s->blk, 0, 4, p, 0); + } + } +} + +static const Property nvram_properties[] =3D { + DEFINE_PROP_DRIVE("drive", A1NVRAMState, blk), +}; + +static void nvram_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(oc); + + dc->realize =3D nvram_realize; + device_class_set_props(dc, nvram_properties); +} + +static const TypeInfo nvram_types[] =3D { + { + .name =3D TYPE_A1_NVRAM, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(A1NVRAMState), + .class_init =3D nvram_class_init, + }, +}; +DEFINE_TYPES(nvram_types) + static void amigaone_cpu_reset(void *opaque) { PowerPCCPU *cpu =3D opaque; @@ -72,7 +169,7 @@ static void amigaone_init(MachineState *machine) DeviceState *dev; I2CBus *i2c_bus; uint8_t *spd_data; - int i; + DriveInfo *di; =20 /* init CPU */ cpu =3D POWERPC_CPU(cpu_create(machine->cpu_type)); @@ -97,6 +194,16 @@ static void amigaone_init(MachineState *machine) memory_region_add_subregion(get_system_memory(), 0x40000000, mr); } =20 + /* nvram */ + dev =3D qdev_new(TYPE_A1_NVRAM); + di =3D drive_get(IF_MTD, 0, 0); + if (di) { + qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(di)); + } + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + memory_region_add_subregion(get_system_memory(), NVRAM_ADDR, + sysbus_mmio_get_region(SYS_BUS_DEVICE(dev)= , 0)); + /* allocate and load firmware */ rom =3D g_new(MemoryRegion, 1); memory_region_init_rom(rom, NULL, "rom", PROM_SIZE, &error_fatal); @@ -136,7 +243,7 @@ static void amigaone_init(MachineState *machine) pci_mem =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1); mr =3D g_new(MemoryRegion, 1); memory_region_init_alias(mr, OBJECT(dev), "pci-mem-low", pci_mem, - 0, 0x1000000); + 0, 0xe0000); memory_region_add_subregion(get_system_memory(), 0xfd000000, mr); mr =3D g_new(MemoryRegion, 1); memory_region_init_alias(mr, OBJECT(dev), "pci-mem-high", pci_mem, @@ -153,7 +260,7 @@ static void amigaone_init(MachineState *machine) qdev_connect_gpio_out_named(DEVICE(via), "intr", 0, qdev_get_gpio_in(DEVICE(cpu), PPC6xx_INPUT_INT)); - for (i =3D 0; i < PCI_NUM_PINS; i++) { + for (int i =3D 0; i < PCI_NUM_PINS; i++) { qdev_connect_gpio_out(dev, i, qdev_get_gpio_in_named(DEVICE(via), "pirq", i)); } --=20 2.47.1 From nobody Thu Apr 3 10:05:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741700814; cv=none; d=zohomail.com; s=zohoarc; b=hALQKpKhQeu1pRXNoYfHp1XhcZ5HrYHSOI8lcCxjRXRzoHED2uYYtMwvDiwBfUzmgMKIezkaPEccREL8nupkibY0VK/UWLHcedmVVdODGtI4nGAOe+RmjXXB1ZUmFoT9skLe/jzAoZU57nAeLwmEODMYJCZ+IyPxCInVICeFByA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741700814; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=s/hwfz8W3nE/NCo2dN8T5chquYKvDoTqUnc1wA+QdPA=; b=OnptqLnwCk7KjuXrf8vciy5FBdnGRiCPC3ae2hHDV0hDO8bSMDX8/zx862Ar7tgjNVnrRMLseabTal15tt8lowCuOUdXcBldF9N8gJSZJNPWjqrvv31tkocxPlnZmZPTb/Zqy7O5so34koAdBpbh2G6d+oktt4vBn6oF3hM88Cw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741700814605940.5070134326189; Tue, 11 Mar 2025 06:46:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzKO-0007Py-LP; Tue, 11 Mar 2025 09:07:24 -0400 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 1trzFD-0006Gz-S6; Tue, 11 Mar 2025 09:02:08 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzFB-0000NK-2c; Tue, 11 Mar 2025 09:02:03 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-2f9b9c0088fso9069439a91.0; Tue, 11 Mar 2025 06:01:58 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698115; x=1742302915; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=s/hwfz8W3nE/NCo2dN8T5chquYKvDoTqUnc1wA+QdPA=; b=O/QuBAJs56ueGZj4zD8MuKojOmWcrp5l6QXRuxnZn/nTAyXUs1wjd6APbuyiNjdRQd solIe1mIl9LIfGrqDuyrnGUjjwYKxR67PwPAwvQuRg6V8ipwmr/BdstjSjpz8XXmb5EF JeLF5Pr2SBrFL0MRxCX0Q3s2iobFIZTBxLD5Tbp+aUp2Lg7iRFLShYTr3yTMaPimuKGD HtZa5nLuvULnZjHRmHVdtRfNTsh/CxX5j/HKWUbQbc6y1i0oJHx5Lqm08/skEPacs+A+ iPmgB0QAXYyHQ4KPU2WrAvXai4lNBh7qTi8dYo3oQIlu+Z0aEY143mczC5d8zNoxSmk7 V+Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698115; x=1742302915; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=s/hwfz8W3nE/NCo2dN8T5chquYKvDoTqUnc1wA+QdPA=; b=h+dQJEI3hCog9DQVtduQEK9Qw17eeNHg2xmS+sXqr6gNm/ixXEPesWZSj8VuG+ycX3 O+T7vbTaZlAWqVuMJTDo7jjtYJn5ipz4L51xRMHw2xsypFyFCmyA8/Dwg5/dEH4gg7M8 bo+MCeBtAm6VrBFEFCGkCpCPxYG+IYzlRVSTfmg7ohi7KWfcmoiTEeODRWiBpBr4qFm4 0o2E+5JqFezWoQG/t4sSL3Isbpqh5oXxxZK9TmOBKn2JEGE7wT1g456mtaQiaXrOpWdB X5F9bVMpBBVDUkSQEbIG0jVQf0r5QDR/DpVRjBdY/R3TTHUcJwK66NjsnShcSU86vFPJ aGkw== X-Forwarded-Encrypted: i=1; AJvYcCWYVe+ZYGJjCZ+inPdzPXHDvb6NksycyupyOCv8o0QrR5e0lqdbHy+Jt7bUtcPUbAsATkhPlU7QKQ==@nongnu.org X-Gm-Message-State: AOJu0YyabGuBYQ/ZemWWa/riuwo+yfXuhEB48Mm8PwP8fckfMX/7bRox iwRuuyvymTDMOCnvM3HGZwkmRYTVObObZlD35lX4MC5Fdbw+y4CiBhxifA== X-Gm-Gg: ASbGnctxMmqtSmHihD+qlX2672UbuL2Lskn6OESLcqfv7oaKqq/2daJUdjz9MCVA70Z +A5oX2g4qtUO5Ri9xyOX6c9SifSqEg0FcZMBQ+bihfSYsEYkxQ39Qd9vPfvd+G2Qdj6Aitq7tw1 tXYPEkb7iOuamMZ43iiGSMI6Rgs5/21tC3qMOkgmPzxjPUR8oP/ujGuguJhUt2UxGUu/9etIKXs 2cvPuPltq6b9jSPm44cZUUEzdKYHyP/7KjtYCFN+jhbu29btASLIT5Kk+CGT257NSFz/VBTwi1/ sKO2kE0wq8fE2I/Dbiu7xEU0MMtladdk8c9tXg8atoAUTtvNz85ppeTI/jw+LQ== X-Google-Smtp-Source: AGHT+IEfSr0Gudn4GDMIT4yBrRsINF1KjueLA3K/k+IuqK9TzELvKvXpXWwdPEKEfe5NbCoDvTjnCQ== X-Received: by 2002:a17:90b:528a:b0:2ee:5c9b:35c0 with SMTP id 98e67ed59e1d1-30100544832mr4123620a91.9.1741698115514; Tue, 11 Mar 2025 06:01:55 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, BALATON Zoltan Subject: [PULL 69/72] ppc/amigaone: Add default environment Date: Tue, 11 Mar 2025 22:58:03 +1000 Message-ID: <20250311125815.903177-70-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741700816155019000 Content-Type: text/plain; charset="utf-8" From: BALATON Zoltan Initialise empty NVRAM with default values. This also enables IDE UDMA mode in AmigaOS that is faster but has to be enabled in environment due to problems with real hardware but that does not affect emulation so we can use faster defaults here. Signed-off-by: BALATON Zoltan Reviewed-by: Nicholas Piggin Message-ID: <4d63f88191612329e0ca8102c7c0d4fc626dc372.1740673173.git.balato= n@eik.bme.hu> Signed-off-by: Nicholas Piggin --- hw/ppc/amigaone.c | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index feb2cf452c..1c6f2a944d 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -52,6 +52,28 @@ static const char dummy_fw[] =3D { #define NVRAM_ADDR 0xfd0e0000 #define NVRAM_SIZE (4 * KiB) =20 +static char default_env[] =3D + "baudrate=3D115200\0" + "stdout=3Dvga\0" + "stdin=3Dps2kbd\0" + "bootcmd=3Dboota; menu; run menuboot_cmd\0" + "boot1=3Dide\0" + "boot2=3Dcdrom\0" + "boota_timeout=3D3\0" + "ide_doreset=3Don\0" + "pci_irqa=3D9\0" + "pci_irqa_select=3Dlevel\0" + "pci_irqb=3D10\0" + "pci_irqb_select=3Dlevel\0" + "pci_irqc=3D11\0" + "pci_irqc_select=3Dlevel\0" + "pci_irqd=3D7\0" + "pci_irqd_select=3Dlevel\0" + "a1ide_irq=3D1111\0" + "a1ide_xfer=3DFFFF\0"; +#define CRC32_DEFAULT_ENV 0xb5548481 +#define CRC32_ALL_ZEROS 0x603b0489 + #define TYPE_A1_NVRAM "a1-nvram" OBJECT_DECLARE_SIMPLE_TYPE(A1NVRAMState, A1_NVRAM) =20 @@ -94,7 +116,7 @@ static void nvram_realize(DeviceState *dev, Error **errp) { A1NVRAMState *s =3D A1_NVRAM(dev); void *p; - uint32_t *c; + uint32_t crc, *c; =20 memory_region_init_rom_device(&s->mr, NULL, &nvram_ops, s, "nvram", NVRAM_SIZE, &error_fatal); @@ -113,12 +135,25 @@ static void nvram_realize(DeviceState *dev, Error **e= rrp) return; } } + crc =3D crc32(0, p + 4, NVRAM_SIZE - 4); + if (crc =3D=3D CRC32_ALL_ZEROS) { /* If env is uninitialized set defau= lt */ + *c =3D cpu_to_be32(CRC32_DEFAULT_ENV); + /* Also copies terminating \0 as env is terminated by \0\0 */ + memcpy(p + 4, default_env, sizeof(default_env)); + if (s->blk) { + blk_pwrite(s->blk, 0, sizeof(crc) + sizeof(default_env), p, 0); + } + return; + } if (*c =3D=3D 0) { *c =3D cpu_to_be32(crc32(0, p + 4, NVRAM_SIZE - 4)); if (s->blk) { blk_pwrite(s->blk, 0, 4, p, 0); } } + if (be32_to_cpu(*c) !=3D crc) { + warn_report("NVRAM checksum mismatch"); + } } =20 static const Property nvram_properties[] =3D { --=20 2.47.1 From nobody Thu Apr 3 10:05:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699468; cv=none; d=zohomail.com; s=zohoarc; b=RuOUOxlLMqlbRZw2htO6YL/7FV8OBeTeI9UNwsFohNnVj/G9+jtXfkpEt3YX2rUKv8dSfPWyp5/sbg7mjWGBKP63TGN857+6yBjn3jsZZgui7CUrD18WvaYQi8XJK0e/Pt9wvzrT2y+itjoVrvKBtq17GKKSSLusvsyvIbWrjsc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699468; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Iy9MYT8fdEi9vMpgSjXfvO+etPc3lGZwDZWPx6oNxPs=; b=ZokX7UOyFPHaQBD2SOBQVmM2V6c6UP2G8kC4NVWeZ8DFKgQHoykAaqBWVt5pwpMM7jIi3gD/fOTcHsGybAh5bA3Xc6eH2JJTYfgUtwP9EcTcs5tp/ZMeYfz/wlPrB39RPaVED6TGWcSjCtRWQ/Ot0L5sI3cGT2D7t73gBL5Tjvg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699468256281.63028352648075; Tue, 11 Mar 2025 06:24:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzKP-0007RK-EZ; Tue, 11 Mar 2025 09:07:26 -0400 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 1trzFG-0006Hj-2C; Tue, 11 Mar 2025 09:02:09 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzFD-0000NY-UW; Tue, 11 Mar 2025 09:02:05 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-2ff6a98c638so10165510a91.0; Tue, 11 Mar 2025 06:02:02 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:01:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698119; x=1742302919; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Iy9MYT8fdEi9vMpgSjXfvO+etPc3lGZwDZWPx6oNxPs=; b=ZgUxvN2GDTbONgbtd5S93LMiXrGOdwobqPLcLN7+1MoCUGQcGtc/FhwLP2ypxMK1Yz 50wEN3M04V9aIPdQ0mDt6QXDDgqAi40tSxFQJUnMuq7hqy1tQc3oBsXmBMsIC0OEYVXa RY+V0Hy8bjujuec9dnI5vEbqZyGPxcQ/cfzNWUT0TL0MK7lnd61IACmT7jtcmyPVFBGT 6CJJHGtEzuv+4NwJ3aVWt6Pgpj+pPUvXEj4rpjqmotQKzLD6r3ESdyMipxCJQApPjIlt PpLVZADgnGNPbdrFMFVqiFOqG9DNOvPAzUCblnsRWa4Bgpkjzdpc0RrgpzAjvPMRFJdx pRqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698119; x=1742302919; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Iy9MYT8fdEi9vMpgSjXfvO+etPc3lGZwDZWPx6oNxPs=; b=fw7rqkscA0T2kIeFxmEc68PYC0wgJtMnhSsWV5LyDOt7DalTwFhia5N37TZ74z2jLY 9J8up8I3NvoImNJ9/T2KtF2czz+JbYdcQTZHmU0K91vkBGC8wGa6RfPABjR64EdRx9ey IImgvBYrUTllp4lfvWpu74Ozp13/cKjEOGU27xAI3STYS2Ej8+cuuW49n6oIfovFC7Gq 2TJb755HaVdIGZ+godcyQlNberzK9GZHFEedfdDadQkWZhal5bRinElU1JrP4cQJ5LBx c1Dx0AeVNXQFxBTdFHHsHpHoWVfjrYD2idEwSTZCQwcLwJZ2C9oKSj1BSRwEkLzjwpcZ STNA== X-Forwarded-Encrypted: i=1; AJvYcCXYewsH9Tz2yTo3mHO1SGifXxjICjhJCQFcW5aVGKy+vpp3R+IuR7r02LB6p3Z1o1xWrDCjM8JffA==@nongnu.org X-Gm-Message-State: AOJu0YxCPQ78b4JJ0E0pQfG3KwgKuEAvD+zIhRy2OJnCS/FBc95CZQN2 th2unRDLJNHBl1tyzYJJMUe3YeVaEkT01aiWZLW1MQ6MyuCCHVrI6OLeuQ== X-Gm-Gg: ASbGncvOOzCmjlcACO+wafeaS0HME1mTGBDjmN9S3rZZH5J+RtPiXGCOO6/3LwH7XXG HKHTKO7C4006jnk+R2hmsbbUdRgEBtdvTQqU0yAiTdFZwyseB6XdU2ETfYbCpg0DpbUBECGoM3n 4ouSsgPf2xYToe1jaYo64SPNZxl5RFNhPYG3JEpCos8U/gWAvEzTg+L+jweeQRgrwQwLKVZ2c0X P88Ij1vMMqbXiK3VK5KEtMpVj9hspvEZmsjgEKgeQ9gLS6NJKUrg1wb3ak+qJgksZeAOAEq0iyC /ZcOZI5TV65w0/1grwL79tQ76alsr6kXwoycIpw+DmCLXEFh/VI= X-Google-Smtp-Source: AGHT+IFgqL9bbZ2fICseOPZfQrNrcT0fAz/HZJGis76AwygYFFwD63MWTP2pBrIZ4Xa8Fl8lXeX+CQ== X-Received: by 2002:a17:90b:3ec2:b0:2ee:9e06:7db0 with SMTP id 98e67ed59e1d1-2ff7ce6349emr28202121a91.11.1741698118226; Tue, 11 Mar 2025 06:01:58 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, BALATON Zoltan Subject: [PULL 70/72] ppc/amigaone: Add kernel and initrd support Date: Tue, 11 Mar 2025 22:58:04 +1000 Message-ID: <20250311125815.903177-71-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=npiggin@gmail.com; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699470056019000 Content-Type: text/plain; charset="utf-8" From: BALATON Zoltan Add support for -kernel, -initrd and -append command line options. Signed-off-by: BALATON Zoltan Reviewed-by: Nicholas Piggin Message-ID: <489b1be5d95d5153e924c95b0691b8b53f9ffb9e.1740673173.git.balato= n@eik.bme.hu> Signed-off-by: Nicholas Piggin --- hw/ppc/amigaone.c | 113 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index 1c6f2a944d..359f5fa125 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -25,11 +25,14 @@ #include "system/qtest.h" #include "system/reset.h" #include "kvm_ppc.h" +#include "elf.h" =20 #include /* for crc32 */ =20 #define BUS_FREQ_HZ 100000000 =20 +#define INITRD_MIN_ADDR 0x600000 + /* * Firmware binary available at * https://www.hyperion-entertainment.com/index.php/downloads?view=3Dfiles= &parent=3D28 @@ -178,12 +181,68 @@ static const TypeInfo nvram_types[] =3D { }; DEFINE_TYPES(nvram_types) =20 +struct boot_info { + hwaddr entry; + hwaddr stack; + hwaddr bd_info; + hwaddr initrd_start; + hwaddr initrd_end; + hwaddr cmdline_start; + hwaddr cmdline_end; +}; + +/* Board info struct from U-Boot */ +struct bd_info { + uint32_t bi_memstart; + uint32_t bi_memsize; + uint32_t bi_flashstart; + uint32_t bi_flashsize; + uint32_t bi_flashoffset; + uint32_t bi_sramstart; + uint32_t bi_sramsize; + uint32_t bi_bootflags; + uint32_t bi_ip_addr; + uint8_t bi_enetaddr[6]; + uint16_t bi_ethspeed; + uint32_t bi_intfreq; + uint32_t bi_busfreq; + uint32_t bi_baudrate; +} QEMU_PACKED; + +static void create_bd_info(hwaddr addr, ram_addr_t ram_size) +{ + struct bd_info *bd =3D g_new0(struct bd_info, 1); + + bd->bi_memsize =3D cpu_to_be32(ram_size); + bd->bi_flashstart =3D cpu_to_be32(PROM_ADDR); + bd->bi_flashsize =3D cpu_to_be32(1); /* match what U-Boot detects */ + bd->bi_bootflags =3D cpu_to_be32(1); + bd->bi_intfreq =3D cpu_to_be32(11.5 * BUS_FREQ_HZ); + bd->bi_busfreq =3D cpu_to_be32(BUS_FREQ_HZ); + bd->bi_baudrate =3D cpu_to_be32(115200); + + cpu_physical_memory_write(addr, bd, sizeof(*bd)); +} + static void amigaone_cpu_reset(void *opaque) { PowerPCCPU *cpu =3D opaque; + CPUPPCState *env =3D &cpu->env; =20 cpu_reset(CPU(cpu)); - cpu_ppc_tb_reset(&cpu->env); + if (env->load_info) { + struct boot_info *bi =3D env->load_info; + + env->gpr[1] =3D bi->stack; + env->gpr[2] =3D 1024; + env->gpr[3] =3D bi->bd_info; + env->gpr[4] =3D bi->initrd_start; + env->gpr[5] =3D bi->initrd_end; + env->gpr[6] =3D bi->cmdline_start; + env->gpr[7] =3D bi->cmdline_end; + env->nip =3D bi->entry; + } + cpu_ppc_tb_reset(env); } =20 static void fix_spd_data(uint8_t *spd) @@ -205,6 +264,8 @@ static void amigaone_init(MachineState *machine) I2CBus *i2c_bus; uint8_t *spd_data; DriveInfo *di; + hwaddr loadaddr; + struct boot_info *bi =3D NULL; =20 /* init CPU */ cpu =3D POWERPC_CPU(cpu_create(machine->cpu_type)); @@ -301,6 +362,56 @@ static void amigaone_init(MachineState *machine) } pci_ide_create_devs(PCI_DEVICE(object_resolve_path_component(via, "ide= "))); pci_vga_init(pci_bus); + + if (!machine->kernel_filename) { + return; + } + + /* handle -kernel, -initrd, -append options and emulate U-Boot */ + bi =3D g_new0(struct boot_info, 1); + cpu->env.load_info =3D bi; + + loadaddr =3D MIN(machine->ram_size, 256 * MiB); + bi->bd_info =3D loadaddr - 8 * MiB; + create_bd_info(bi->bd_info, machine->ram_size); + bi->stack =3D bi->bd_info - 64 * KiB - 8; + + if (machine->kernel_cmdline && machine->kernel_cmdline[0]) { + size_t len =3D strlen(machine->kernel_cmdline); + + loadaddr =3D bi->bd_info + 1 * MiB; + cpu_physical_memory_write(loadaddr, machine->kernel_cmdline, len += 1); + bi->cmdline_start =3D loadaddr; + bi->cmdline_end =3D loadaddr + len + 1; /* including terminating '= \0' */ + } + + sz =3D load_elf(machine->kernel_filename, NULL, NULL, NULL, + &bi->entry, &loadaddr, NULL, NULL, + ELFDATA2MSB, PPC_ELF_MACHINE, 0, 0); + if (sz <=3D 0) { + sz =3D load_uimage(machine->kernel_filename, &bi->entry, &loadaddr, + NULL, NULL, NULL); + } + if (sz <=3D 0) { + error_report("Could not load kernel '%s'", + machine->kernel_filename); + exit(1); + } + loadaddr +=3D sz; + + if (machine->initrd_filename) { + loadaddr =3D ROUND_UP(loadaddr + 4 * MiB, 4 * KiB); + loadaddr =3D MAX(loadaddr, INITRD_MIN_ADDR); + sz =3D load_image_targphys(machine->initrd_filename, loadaddr, + bi->bd_info - loadaddr); + if (sz <=3D 0) { + error_report("Could not load initrd '%s'", + machine->initrd_filename); + exit(1); + } + bi->initrd_start =3D loadaddr; + bi->initrd_end =3D loadaddr + sz; + } } =20 static void amigaone_machine_init(MachineClass *mc) --=20 2.47.1 From nobody Thu Apr 3 10:05:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699340; cv=none; d=zohomail.com; s=zohoarc; b=Iy5QxillgALyMDHAo0elBWkLjpfawh/AyEbfMTZd3BWaiWMbw/aMtzuEXMZbgGQux9EIWV7DCjNU5aN2POBJFJXA7nZJ28pICGiDZ5tUNErhHx48ILM3Wa9jOX132r7oi8egP6Vu2sS8TNNWxTBmTqUtrP2847bBBAzdR1Pg7SY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699340; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=elAFXUjF+R6E0+41mljzNOshBJCWfVTXW/A0lm/eOnM=; b=SAXpbF3EzNPOVgehRUQd8jb91YaIfjTzCxUXu6CicS03qndD3kHMDQ2oyP2ltTXwyqUMHb7R3rTeFjgyzUA0G+VvVHuKwMT7jqGFlgZukaGN7bdtiTeedVKlClQDjtG0QMxWKmjnH0gf7JyYQMmrln3yAX2ZzB8NdoepYiwKWlw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741699340342512.5364033399985; Tue, 11 Mar 2025 06:22:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzKY-0008CH-3O; Tue, 11 Mar 2025 09:07:34 -0400 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 1trzFN-0006MY-TJ; Tue, 11 Mar 2025 09:02:15 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzFE-0000Nx-MI; Tue, 11 Mar 2025 09:02:10 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2255003f4c6so49959605ad.0; Tue, 11 Mar 2025 06:02:02 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.01.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:02:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698121; x=1742302921; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=elAFXUjF+R6E0+41mljzNOshBJCWfVTXW/A0lm/eOnM=; b=h0SwqOnbiIrZA3nYF4zqtGvYwIn3rpHrgX2XC9MxhsU45poFy58FFxMwy5fWpy3Hz8 qs0fWH26AA5O9AscypFWDLRI1142924qgJC5zHLKqnUzJP07JZpHpcqKnWWrXilSM3eV JmNdhx3ptMxFEaXGEBwAMcx8/fBIzG7V3OfVHgRy9l61dQnr85AsEn3CfQQe1JCIFSpK XCYiS6NSQEd/op0a6XsalPk69YKZz9OqU++rhR2HynxWTVIJmugT4CxwIbLSaN6L9rBJ gbwPx0G+Fn0KiV1nlLufRlJmzX0bxlPVfTEHbQkaqu6vU7p0BGZlQ+U9nkM8SBWwh2A6 4Nww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698121; x=1742302921; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=elAFXUjF+R6E0+41mljzNOshBJCWfVTXW/A0lm/eOnM=; b=Geypf3Id3a6lYFvK2P2aligOQYz6GwbfhgM5FFMQJK+wRaHi/ofZw85cxgLTeBpwiS rlDJ7fWra84yDftRkxxVVGEYFkMjyo7mqQ4bG0uHwC+/RlYt8IxrmZ98GMvHhsqY/1KJ COp9j+BQlQQrPTxH8sCeo2hs2glu0HUM2IvfZ6QWzgHf7mV/1GamukUobLH6UWnDucUv wVTCQZX3LCkm8XnKwguuswUb8UFTU6pMdhJsr/utTFPE8XTIzGxWPmSgaDbw2l5uVGI+ 4fkDLmPi35ZYy1SYfVemh40miQZFd7Ad/OX1IVIHGV4Tcq6mXC+XylsM7XT9eIoRPDoC l90A== X-Forwarded-Encrypted: i=1; AJvYcCVaD2tT9Tj9fTdrupHGxgysO6exY1AiQfpEMUkhovngq+2u1tf0GYchYr81Q9SIvCgnV+rf3G6djw==@nongnu.org X-Gm-Message-State: AOJu0YylgSZ4PEtlS5B+Hvg2bhbsUb1LHUBxDNpZ8W4V1OHLF7sgdw6W 6l0hNr0HuOsd2Q707WM3WfT5XLJ+xgwIaVBI6SjVrA1giLEWhitQ6g+vOw== X-Gm-Gg: ASbGncvXxqvrlUmkVY0aZzZvCfKdCJpPeSqO0ciMue7GUzI661dpOp0MEOUi+NBbtej 4rJEiyqSDbrEzjJFBKm2QJsBKmu72d4qJ/V+C4+Fg/Ov3s0K9IWgOavH3V6K613kqIFYeNfnxTk Te36+0380gNEs3QNiSzQt615U7E64obvjR0eaCeDP6OJK3SF4TVXeJ0zZTahnM0PKWBqW3Ok3S2 3L5mJV3ERkutC5AB39gMChCbHnsqH9+4yfWScvuBlsgvs/RRvIpOM6sfWVG6AdxTlPuxsqu+Cl7 vYFPhN7Z7h+ghw5pA7M0rMY2SUF0d1SFsDe3AdUA92h7U6UvQzw= X-Google-Smtp-Source: AGHT+IEvfuD1NrKWI+2Dv0OL8sLBjxEo6/deJYw1ULxKFwwvAOvUHJYL0oPwf2abozxnkGOzQeBWUA== X-Received: by 2002:a17:90b:528a:b0:2ee:d824:b559 with SMTP id 98e67ed59e1d1-300ff34d5c3mr4672098a91.28.1741698121189; Tue, 11 Mar 2025 06:02:01 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, BALATON Zoltan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 71/72] ppc/amigaone: Add #defines for memory map constants Date: Tue, 11 Mar 2025 22:58:05 +1000 Message-ID: <20250311125815.903177-72-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=npiggin@gmail.com; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699343387019100 From: BALATON Zoltan Suggested-by: Nicholas Piggin Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Nicholas Piggin Message-ID: <3b8e54ad9220d57e7b0a33f3570e880f26677ce8.1740673173.git.balato= n@eik.bme.hu> Signed-off-by: Nicholas Piggin --- hw/ppc/amigaone.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index 359f5fa125..483512125f 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -32,6 +32,14 @@ #define BUS_FREQ_HZ 100000000 =20 #define INITRD_MIN_ADDR 0x600000 +#define INIT_RAM_ADDR 0x40000000 + +#define PCI_HIGH_ADDR 0x80000000 +#define PCI_HIGH_SIZE 0x7d000000 +#define PCI_LOW_ADDR 0xfd000000 +#define PCI_LOW_SIZE 0xe0000 + +#define ARTICIA_ADDR 0xfe000000 =20 /* * Firmware binary available at @@ -287,7 +295,7 @@ static void amigaone_init(MachineState *machine) /* Firmware uses this area for startup */ mr =3D g_new(MemoryRegion, 1); memory_region_init_ram(mr, NULL, "init-cache", 32 * KiB, &error_fa= tal); - memory_region_add_subregion(get_system_memory(), 0x40000000, mr); + memory_region_add_subregion(get_system_memory(), INIT_RAM_ADDR, mr= ); } =20 /* nvram */ @@ -322,7 +330,7 @@ static void amigaone_init(MachineState *machine) } =20 /* Articia S */ - dev =3D sysbus_create_simple(TYPE_ARTICIA, 0xfe000000, NULL); + dev =3D sysbus_create_simple(TYPE_ARTICIA, ARTICIA_ADDR, NULL); =20 i2c_bus =3D I2C_BUS(qdev_get_child_bus(dev, "smbus")); if (machine->ram_size > 512 * MiB) { @@ -339,12 +347,12 @@ static void amigaone_init(MachineState *machine) pci_mem =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1); mr =3D g_new(MemoryRegion, 1); memory_region_init_alias(mr, OBJECT(dev), "pci-mem-low", pci_mem, - 0, 0xe0000); - memory_region_add_subregion(get_system_memory(), 0xfd000000, mr); + 0, PCI_LOW_SIZE); + memory_region_add_subregion(get_system_memory(), PCI_LOW_ADDR, mr); mr =3D g_new(MemoryRegion, 1); memory_region_init_alias(mr, OBJECT(dev), "pci-mem-high", pci_mem, - 0x80000000, 0x7d000000); - memory_region_add_subregion(get_system_memory(), 0x80000000, mr); + PCI_HIGH_ADDR, PCI_HIGH_SIZE); + memory_region_add_subregion(get_system_memory(), PCI_HIGH_ADDR, mr); pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci.0")); =20 /* VIA VT82c686B South Bridge (multifunction PCI device) */ --=20 2.47.1 From nobody Thu Apr 3 10:05:05 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1741699561; cv=none; d=zohomail.com; s=zohoarc; b=i3X8Rs6yJgAXWWBQZIwESawvnTGjNg92GcHvXkCOsP43VniNKkR6ztHqpgxP91yOsgNU+WUvWl02dbmg0GmvIH6wfd+I05Q7mmJ/LNkIPZHwYVZzUJEtrbohKZbZVLzxVBSsJGoVPFKJyt632Bya1P1OERuEmh1i2xAoNji8uv0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741699561; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tAN+HnepXEYeETm6X7cQEpTvdXTBx3EHSfsdgopHuPI=; b=PO2SQTqIZVeCqJzn9kOHNy+Tx/wmHMVUqLproflboq2oWdI8RVDtWF3J2qxX1O8wydMQaJ91RBPE5upnZNAN11A9qveug3PfoUdLAodcXVcyscLGzWpKFtWmB5ZBDh0lGkm5GdYTzAYyh+/sG8dgYByWflCBbM7rEyWHkvjfMI8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174169956118125.862599955169117; Tue, 11 Mar 2025 06:26:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzKm-0001LS-KB; Tue, 11 Mar 2025 09:07:48 -0400 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 1trzFL-0006LS-Pr; Tue, 11 Mar 2025 09:02:14 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzFI-0000Ok-LQ; Tue, 11 Mar 2025 09:02:10 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-2fea47bcb51so11359335a91.2; Tue, 11 Mar 2025 06:02:05 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.06.02.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 06:02:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741698124; x=1742302924; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tAN+HnepXEYeETm6X7cQEpTvdXTBx3EHSfsdgopHuPI=; b=JJZbh2l0Ph+pAKrU4cJQj5kkoQ2p/UBym7ImFEWHMokTBORjMacpx5KSj1cckOxDI9 gPjPah65MNWgo8B0TkuAjAPWYr8tFTuj/CPkDsnhlnz1bUkBb7LAa3WTxCVkF3677u94 3O9f/ZjhVj186sd9u2dPK15H9RTD8rCkWzJan+xBaNtmZymCE5RiEkmoEt2m4wLIkNrD zOHoJ23R/KKzfJx2UiQC2GgiPLLOkVBZ5+Dwt5iB5jRcqy7NB6gILSLn/K2rmQuNF7mt YYZRUdVCdLUIi2ATqVuvnIbr/5gO3R3qTife0uk575D7hhCTvAPvWGxGfQHhEiaLUBty pv6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741698124; x=1742302924; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tAN+HnepXEYeETm6X7cQEpTvdXTBx3EHSfsdgopHuPI=; b=NgwPyKNLEuhZM8xXGdWoJ50ckNvYMKG5VTztR/pvHuHfnXvOTJiujkWUuiF7yDMT0h E7C5wq8kSawLCLyTelwve7Q1xtrCqSS/XcsnqgvrQONKaYDdOqu0MsCZmqEdahRodpzT dutR785tqpSh/p7BGvWCoOXOAORDUKZV5rou5Qb7Y6fPzrF0f29H9QGKFN8/xIEBL3/K CNrTu3IdVNPiOT+SD1GuGaqNDgsha3wR+iJqj43HIfkUJraNVLgxuJX2lpFoAyOqVTQf 7iEvO/m4biaMacIKiXsk+2Gr+cgBkSXszIFYZeSDMeyj1PA2ruZgGWMqWgBHA4MPn9X7 tuFw== X-Forwarded-Encrypted: i=1; AJvYcCWyLr06BuYEZIeqJ5U91oO8afNWxpAGWiSdTETwc8x7tDmp5ymYjc5oBOxOLp9dD5tcZxaCUHYumQ==@nongnu.org X-Gm-Message-State: AOJu0Yx6h9FCt/7fHHvFiSxPUJZ1lfe+Miml5hwqEtQW1jfSoO2lpiFN XAK1WL0i5LdtEANLgohsEbveM2FPkPuKF9JZW/iS5vXjqharcWDSHHtKpA== X-Gm-Gg: ASbGncuxvlkwt3AR5OQAFx1taCNqTZtURCgPDMASyen8iD3P1RfQDNXCQoCXR9oAdL8 JOTYKnDq0HUXYUEYs9W934+jF6A4Kgclvi3m7P5Y7Xmf+EaooUmZrKi0lM4NhMTQR6YW9HjBrG3 Hu7JXIBLLingwLkcTIAEk+LUj1NMw3t7tjOjHmw9HJi/eYM3gBWYN9pePGY7X64Al/6BKeMD3MC SmKPy96t7/CbefBxlTJWlmiFgGw+PC7kYNj4M8iGtJ2KZHlCYTDU0CEn9Du74cH4Bo6q5NARI15 Vqn41hyp+EtryMEoH+XAnsf4e+WV4cfvTBf6oBeoW4q4FvH/iFs= X-Google-Smtp-Source: AGHT+IEhxKc7QK2c+anq0I1mojZLWvDqfhA2vOV9L7tDz2FcGcafQoam3LJNySdsaQeq/PjJ9Lg/jw== X-Received: by 2002:a17:90b:2883:b0:2ff:52e1:c4a1 with SMTP id 98e67ed59e1d1-2ff7cf128acmr27247430a91.24.1741698123882; Tue, 11 Mar 2025 06:02:03 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, BALATON Zoltan Subject: [PULL 72/72] docs/system/ppc/amigang.rst: Update for NVRAM emulation Date: Tue, 11 Mar 2025 22:58:06 +1000 Message-ID: <20250311125815.903177-73-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=npiggin@gmail.com; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741699563683019100 From: BALATON Zoltan Add NVRAM and hint on how to make it persistent. Also update Linux boot section which should now boot automatically with the new NVRAM defaults so manual settings in menu may not be needed normally. Signed-off-by: BALATON Zoltan Reviewed-by: Nicholas Piggin Message-ID: <20250304205926.87E364E6010@zero.eik.bme.hu> Signed-off-by: Nicholas Piggin --- docs/system/ppc/amigang.rst | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/system/ppc/amigang.rst b/docs/system/ppc/amigang.rst index e2c9cb74b7..21bb14ed09 100644 --- a/docs/system/ppc/amigang.rst +++ b/docs/system/ppc/amigang.rst @@ -21,6 +21,7 @@ Emulated devices * VIA VT82C686B south bridge * PCI VGA compatible card (guests may need other card instead) * PS/2 keyboard and mouse + * 4 KiB NVRAM (use ``-drive if=3Dmtd,format=3Draw,file=3Dnvram.bin`` to k= eep contents persistent) =20 Firmware -------- @@ -54,14 +55,14 @@ To boot the system run: -cdrom "A1 Linux Net Installer.iso" \ -device ati-vga,model=3Drv100,romfile=3DVGABIOS-lgpl-l= atest.bin =20 -From the firmware menu that appears select ``Boot sequence`` =E2=86=92 -``Amiga Multiboot Options`` and set ``Boot device 1`` to -``Onboard VIA IDE CDROM``. Then hit escape until the main screen appears a= gain, -hit escape once more and from the exit menu that appears select either -``Save settings and exit`` or ``Use settings for this session only``. It m= ay -take a long time loading the kernel into memory but eventually it boots an= d the -installer becomes visible. The ``ati-vga`` RV100 emulation is not -complete yet so only frame buffer works, DRM and 3D is not available. +If a firmware menu appears, select ``Boot sequence`` =E2=86=92 ``Amiga Mul= tiboot Options`` +and set ``Boot device 1`` to ``Onboard VIA IDE CDROM``. Then hit escape un= til +the main screen appears again, hit escape once more and from the exit menu= that +appears select either ``Save settings and exit`` or ``Use settings for this +session only``. It may take a long time loading the kernel into memory but +eventually it boots and the installer becomes visible. The ``ati-vga`` RV1= 00 +emulation is not complete yet so only frame buffer works, DRM and 3D is not +available. =20 Genesi/bPlan Pegasos II (``pegasos2``) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --=20 2.47.1

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 =3DDm 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 (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1741698043992360.4980064318636; Tue, 11 Mar 2025 06:00:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1trzCX-0001d0-4D; Tue, 11 Mar 2025 08:59:17 -0400 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 1trzCN-0001Q9-SJ; Tue, 11 Mar 2025 08:59:08 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1trzCE-0007rl-Ip; Tue, 11 Mar 2025 08:59:07 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-223594b3c6dso96002935ad.2; Tue, 11 Mar 2025 05:58:57 -0700 (PDT) Received: from wheely.local0.net ([118.208.151.101]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ff4e773dddsm11822318a91.12.2025.03.11.05.58.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 05:58:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741697936; x=1742302736; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TJXJaXt4lWuDUJpetfS2lE/I1FwD3R0NAQpy6wRY7rU=; b=cZoHg7O+APTKIAy2fdSysfHsfnzgrl7OHbTNx76lru33TT931xxnQ/+jmm4/28otIF XLoR2cgA70mqytknap8HsyxJVFQvzYvFUpTur6K20agJbmXcA52VdS/FOtCMhqrARi6G +atS1x4VHBOsd0qI+yjSXuUjZqbllXufdKIHeIAspLKnkM6m/XuEKLQOOGec1NK0cCCu 4rsE7DEZH9r9P1jzDnNJwpZZ9ag1d2SolPKvdvn4MCklOc4StEO6mmSG16gIgP1gUSaE R0cjzP+/gJoggVW3L4K+PH9bcIePieMeP793ghhrCCiJwwnJbosxnegAmHI3WYa8S8vn y6Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741697936; x=1742302736; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TJXJaXt4lWuDUJpetfS2lE/I1FwD3R0NAQpy6wRY7rU=; b=BHSmlRt3TgkLSDpJmSQNbrJcoRnwhGUgytamifDG7UNlqKxB1wzpyHPO/8wjh6bxlW PpReNqXyJx/Il1juuRP+ZITwR7y8nhQMXJk3FymyW8lx3oS0mWOEh5kEiSFSwUOKN9Za +m6tjksCP8vDMjLTx2uECLVgQ5j0VipBQi9IJ51pNPzhQoQBX5EFafvnr7alSaCEFRuM 1A5qLSdddtd2qdu4iwgZWMMNRB0eBRRqpgX+sg6W+HsjdWY2wphvJSnDKeHg+3aOrsbY CQn0BdczHtPQC27A2Nz40qqcvu5KOvSauXz+uI2ckmoHljxICGPK1xnE16YUz8b/pBik 2R6w== X-Forwarded-Encrypted: i=1; AJvYcCU5TZQ9T3d/2bklOtW9q2mzvLgtXsU2QNtCx/nQqkPfouCHRGic782yh69QV19q5WLb6ub4RWIODQ==@nongnu.org X-Gm-Message-State: AOJu0YyZv9YCAt51JFMU+3kxZdhvRKRpTiAHaNM7G+FDxjVG6VyqYD9s IcQepIMry5weeN1XqFnomtpndOeKiqAZfQN1fY82h5q33QJHmWI/XOUAhw== X-Gm-Gg: ASbGncufB+xvfSnrUricyqeIILVdedXoWGccSj1cRmMTJFe2LvA9cvJhKvZ8ajDQ+Jj srpxGZXnDxTMVvflZ5h5EBbDw3WQ+IKUjYDLuEfarXFIesVs1oAvZqGBMVa5ALH+t/xxoZQGMin CC1unxg4RNCRSjk2uHUQGiPJ1cGAXwReEdOVL2yU/fYLdOqKhgBXGJ6o7P7bSq9BGDKTDXx6Htk ChFoIkst3+jaly7N6WSaMLXKzd7Aik+px11+glGqBrIDptlWteCECBKcZboIMJtobB0AhYbKEA0 Dj/2rRn46ZapvQfTx5xoneLywitgG2KtQ8paknjhZW96T1llFdj7YrnTMDIZoQ== X-Google-Smtp-Source: AGHT+IF6f6W+2IMNdcxtuuqEbKNR9sKWoOic2G4BJ3CfWfgY9c9jZV4jGlSGCiP2rlUs7I6nssDJ3w== X-Received: by 2002:a17:90b:4c8a:b0:2f6:d266:f45e with SMTP id 98e67ed59e1d1-2ff7ce50364mr27924050a91.2.1741697933379; Tue, 11 Mar 2025 05:58:53 -0700 (PDT) From: Nicholas Piggin To: qemu-devel@nongnu.org Cc: Nicholas Piggin , qemu-ppc@nongnu.org, Alexey Kardashevskiy Subject: [PULL 05/72] pseries: Update SLOF firmware image Date: Tue, 11 Mar 2025 22:56:59 +1000 Message-ID: <20250311125815.903177-6-npiggin@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250311125815.903177-1-npiggin@gmail.com> References: <20250311125815.903177-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=npiggin@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, LOTS_OF_MONEY=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1741698049132019000 Content-Type: text/plain; charset="utf-8" From: Alexey Kardashevskiy This adds TPM pass through API. Also, moves SLOF from github to gitlab. Signed-off-by: Alexey Kardashevskiy Signed-off-by: Nicholas Piggin --- pc-bios/README | 4 ++-- pc-bios/slof.bin | Bin 995000 -> 996184 bytes roms/SLOF | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pc-bios/README b/pc-bios/README index 700dcaab52..a08e034fc3 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -13,8 +13,8 @@ =20 - SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware implementation for certain IBM POWER hardware. The sources are at - https://github.com/aik/SLOF, and the image currently in qemu is - built from git tag qemu-slof-20230918. + https://gitlab.com/slof/slof, and the image currently in qemu is + built from git tag qemu-slof-20241106. =20 - VOF (Virtual Open Firmware) is a minimalistic firmware to work with -machine pseries,x-vof=3Don. When enabled, the firmware acts as a slim s= him and diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin index 27fed09f49a79eaba394a961cce5ddf065902259..4314e17b9ddc964c905a7b107d9= aa7a651a43890 100644 GIT binary patch delta 217628 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 ewBp>*H+|uGYR%fZ8P^tdE-_Os7_MVwFYu2pS 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