From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0AD4B168AEF for ; Thu, 18 Apr 2024 14:27:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713450434; cv=none; b=S2NBUsgEM4jNuyOxY8x43Z2zb8nrakgL9znMQr7AvjrvAarEG8KsHMBMGdSM3Lp8pxZChKGkMV/Pe5R9AEwzgJaAU/HFVnxTXSLUrwBwflcA5CV8iZAPmlgIBa8C/vKGPNHB81GDSz6hthPODdXFZqvcCPXo7JlANhzLT+/Erf4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713450434; c=relaxed/simple; bh=4xAZjsq5NBCk8pMTWSn7cGEZjggQAqPnOuHGhTfr1N4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=dbcLusqlw1Zq0KffKu/QlIHt+pamlcTT4V00KRvSG1cN3AazT795PAWJ4XbN8LxHZLMF0luOE+jlQlGZACJvDMB+nAWhL/FghzgFtdf5Rc3s4NU8WdWsoivmF3/0lCPd2DiBDFM2hBlT5Sq2qm8V0ZI8fnT1ZRVHDyr9lNpu62M= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=YU8IcQvL; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="YU8IcQvL" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-343d32aba7eso184337f8f.1 for ; Thu, 18 Apr 2024 07:27:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1713450430; x=1714055230; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=p3RiUuSEoG2S8esV/YzS5auTHlA7j5ReVp1mTpYduo8=; b=YU8IcQvLzq9Q8bZtr3YqGNHYXi9jReRjVxb/R36xMx/8xGG8lrZiSXtRZhbC6+ZgLs wHue9C5RQ+UWNIo8YMUjUHz1hH9ys7HCBz1vIYWAdAUFOTK09+RAZ/7aKM/SilbYrx/P XVMJGHh2oWPHIbU5boayw1RD4dO5X4vCkuU9L57E2xV1CiV53YJpXKGwqDKGwMwa/Phk oaGNohhWNULpW7bhOuUv+66M8uk9ngicnDHQNBBv0+nGRstAvTGON6AdHsxZRRb5kXdt Rpfpm67eR4PrS6y5UGP93OwNCH/sD8wlk67qiy+ZI/XYju3s2thIjPaNP0lm4Hmn4jGI 5abA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713450430; x=1714055230; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=p3RiUuSEoG2S8esV/YzS5auTHlA7j5ReVp1mTpYduo8=; b=OisPw8JTGsZA2fqYdYkEOUHF2+leg9s6irjqVz2UkUDr1b+3xWbImIsasxNoelqYqz 29w6p6Z+iGMl+wLCJMkjpuCuq6VPK+JWKwLipoOxVa/+txxbhWuFQIrzwDgHHezQkeV4 +cyRm9+ysFwjcxi9JL5HqTuGxyKoUpqD5k04qhOqQUdR1i7Bqqmo51AhxMMjUyYYYNbo +6A8Ir4xhupiXyPqAQmQKZrZtNFuosy9mrmLghuq/AbvQ2c/P6ggQpxHDlyTFjWHLUKY D1RHPvfkgeqLT/Lj90h4j2/XzwpQlouowF9zPytN54KP9gODyHZ+JxGONRD/xurxlVni AQ/Q== X-Forwarded-Encrypted: i=1; AJvYcCWpUW6EZAYcQce914+kaudlluEXYU2qkTOLGcz7cftQMOLgtdKvsZtQ3auLASSoGW/6Lnl+kzz0n8/wS418ZDHiTEThPTDNnaQ6s+YK X-Gm-Message-State: AOJu0YyJmqGXWGB3IEO+W2rNUIQHZruhsYeTDE4ctYsS1rYEPK+a/okL zWHujA9sGgaWzjY23jOJlts4D23eV+VvIwPrQultfpNBjLEDn258kRnKqyVsRAw= X-Google-Smtp-Source: AGHT+IFEKKLATpLTVwutm2tzIoiZ11Ga9pVF4NMfg4vCen7e5iSouPTou2BE8D1MsN0dG3NtPPHp/g== X-Received: by 2002:a05:600c:524a:b0:418:2719:6b14 with SMTP id fc10-20020a05600c524a00b0041827196b14mr2077367wmb.3.1713450430306; Thu, 18 Apr 2024 07:27:10 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:999:a3a0:7b64:4d1d:16d8:e38b]) by smtp.gmail.com with ESMTPSA id v10-20020a05600c470a00b00418a386c059sm2873645wmo.42.2024.04.18.07.27.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Apr 2024 07:27:09 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: Conor Dooley , Rob Herring , Krzysztof Kozlowski , Paul Walmsley , Palmer Dabbelt , Albert Ou , Anup Patel , Atish Patra Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Ved Shanbhogue Subject: [RFC PATCH 0/7] riscv: Add support for Ssdbltrp extension Date: Thu, 18 Apr 2024 16:26:39 +0200 Message-ID: <20240418142701.1493091-1-cleger@rivosinc.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A double trap typically arises during a sensitive phase in trap handling operations — when an exception or interrupt occurs while the trap handler (the component responsible for managing these events) is in a non-reentrant state. This non-reentrancy usually occurs in the early phase of trap handling, wherein the trap handler has not yet preserved the necessary state to handle and resume from the trap. The occurrence of such event is unlikely but can happen when dealing with hardware errors. This series adds support for Ssdbltrp[1]. It is based on SSE support as well as firmware feature to enable double trap. Ssdbltrp can be tested using qemu[1], opensbi[2], linux[3] and kvm-unit-tests[5]. Assuming you have a riscv environment available and configured (CROSS_COMPILE), it can be built for riscv64 using the following instructions: Qemu: $ git clone https://github.com/rivosinc/qemu.git $ cd qemu $ git switch dev/cleger/dbltrp_rfc_v1 $ mkdir build && cd build $ ../configure --target-list=riscv64-softmmu $ make OpenSBI: $ git clone https://github.com/rivosinc/opensbi.git $ cd opensbi $ git switch dev/cleger/dbltrp_rfc_v1 $ make O=build PLATFORM_RISCV_XLEN=64 PLATFORM=generic Linux: $ git clone https://github.com/rivosinc/linux.git $ cd linux $ git switch dev/cleger/dbltrp_rfc_v1 $ export ARCH=riscv $ make O=build defconfig $ ./script/config --file build/.config --enable RISCV_DBLTRP $ make O=build kvm-unit-tests: $ git clone https://github.com/clementleger/kvm-unit-tests.git $ cd kvm-unit-tests $ git switch dev/cleger/dbltrp_rfc_v1 $ ./configure --arch=riscv64 --cross-prefix=$CROSS_COMPILE $ make You will also need kvmtool in your rootfs. One can build a buildroot rootfs using the buildroot provided at [6] (which contains an update of kvmtool with riscv support). Run with kvm-unit-test test as kernel: $ qemu-system-riscv64 \ -M virt \ -cpu rv64,x-ssdbltrp=true,x-smdbltrp=true \ -nographic \ -serial mon:stdio \ -bios opensbi/build/platform/generic/firmware/fw_jump.bin \ -kernel kvm-unit-tests-dbltrp/riscv/sbi_dbltrp.flat ... [OpenSBI boot partially elided] Boot HART ISA Extensions : sscofpmf,sstc,zicntr,zihpm,zicboz,zicbom,sdtrig,svadu,ssdbltrp ... ########################################################################## # kvm-unit-tests ########################################################################## PASS: sbi: fwft: FWFT extension probing no error PASS: sbi: fwft: FWFT extension is present PASS: sbi: fwft: dbltrp: Get double trap enable feature value PASS: sbi: fwft: dbltrp: Set double trap enable feature value == 0 PASS: sbi: fwft: dbltrp: Get double trap enable feature value == 0 PASS: sbi: fwft: dbltrp: Double trap disabled, trap first time ok PASS: sbi: fwft: dbltrp: Set double trap enable feature value == 1 PASS: sbi: fwft: dbltrp: Get double trap enable feature value == 1 PASS: sbi: fwft: dbltrp: Trapped twice allowed ok INFO: sbi: fwft: dbltrp: Should generate a double trap and crash ! sbi_trap_error: hart0: trap0: double trap handler failed (error -10) sbi_trap_error: hart0: trap0: mcause=0x0000000000000010 mtval=0x0000000000000000 sbi_trap_error: hart0: trap0: mtval2=0x0000000000000003 mtinst=0x0000000000000000 sbi_trap_error: hart0: trap0: mepc=0x00000000802000d8 mstatus=0x8000000a01006900 sbi_trap_error: hart0: trap0: ra=0x00000000802001fc sp=0x0000000080213e70 sbi_trap_error: hart0: trap0: gp=0x0000000000000000 tp=0x0000000080088000 sbi_trap_error: hart0: trap0: s0=0x0000000080213e80 s1=0x0000000000000001 sbi_trap_error: hart0: trap0: a0=0x0000000080213e80 a1=0x0000000080208193 sbi_trap_error: hart0: trap0: a2=0x000000008020dc20 a3=0x000000000000000f sbi_trap_error: hart0: trap0: a4=0x0000000080210cd8 a5=0x00000000802110d0 sbi_trap_error: hart0: trap0: a6=0x00000000802136e4 a7=0x0000000046574654 sbi_trap_error: hart0: trap0: s2=0x0000000080210cd9 s3=0x0000000000000000 sbi_trap_error: hart0: trap0: s4=0x0000000000000000 s5=0x0000000000000000 sbi_trap_error: hart0: trap0: s6=0x0000000000000000 s7=0x0000000000000001 sbi_trap_error: hart0: trap0: s8=0x0000000000002000 s9=0x0000000080083700 sbi_trap_error: hart0: trap0: s10=0x0000000000000000 s11=0x0000000000000000 sbi_trap_error: hart0: trap0: t0=0x0000000000000000 t1=0x0000000080213ed8 sbi_trap_error: hart0: trap0: t2=0x0000000000001000 t3=0x0000000080213ee0 sbi_trap_error: hart0: trap0: t4=0x0000000000000000 t5=0x000000008020f8d0 sbi_trap_error: hart0: trap0: t6=0x0000000000000000 Run with linux and kvm-unit-test test in kvm (testing VS-mode): $ qemu-system-riscv64 \ -M virt \ -cpu rv64,x-ssdbltrp=true,x-smdbltrp=true \ -nographic \ -serial mon:stdio \ -bios opensbi/build/platform/generic/firmware/fw_jump.bin \ -kernel linux/build/arch/riscv/boot/Image ... [Linux boot partially elided] [ 0.735079] riscv-dbltrp: Double trap handling registered ... $ lkvm run -k sbi_dbltrp.flat -m 128 -c 2 ########################################################################## # kvm-unit-tests ########################################################################## PASS: sbi: fwft: FWFT extension probing no error PASS: sbi: fwft: FWFT extension is present PASS: sbi: fwft: dbltrp: Get double trap enable feature value PASS: sbi: fwft: dbltrp: Set double trap enable feature value == 0 PASS: sbi: fwft: dbltrp: Get double trap enable feature value == 0 PASS: sbi: fwft: dbltrp: Double trap disabled, trap first time ok PASS: sbi: fwft: dbltrp: Set double trap enable feature value == 1 PASS: sbi: fwft: dbltrp: Get double trap enable feature value == 1 PASS: sbi: fwft: dbltrp: Trapped twice allowed ok INFO: sbi: fwft: dbltrp: Should generate a double trap and crash ! [ 51.939077] Guest double trap [ 51.939323] kvm [93]: VCPU exit error -95 [ 51.939683] kvm [93]: SEPC=0x802000d8 SSTATUS=0x200004520 HSTATUS=0x200200180 [ 51.939947] kvm [93]: SCAUSE=0x10 STVAL=0x0 HTVAL=0x3 HTINST=0x0 KVM_RUN failed: Operation not supported $ Link: https://github.com/riscv/riscv-double-trap/releases/download/v0.56/riscv-double-trap.pdf [1] Link: https://github.com/rivosinc/qemu/tree/dev/cleger/dbltrp_rfc_v1 [2] Link: https://github.com/rivosinc/opensbi/tree/dev/cleger/dbltrp_rfc_v1 [3] Link: https://github.com/rivosinc/linux/tree/dev/cleger/dbltrp_rfc_v1 [4] Link: https://github.com/clementleger/kvm-unit-tests/tree/dev/cleger/dbltrp_rfc_v1 [5] Link: https://github.com/clementleger/buildroot/tree/dev/cleger/kvmtool [6] --- Clément Léger (7): riscv: kvm: add support for FWFT SBI extension dt-bindings: riscv: add Ssdbltrp ISA extension description riscv: add Ssdbltrp ISA extension parsing riscv: handle Ssdbltrp mstatus SDT bit riscv: add double trap driver riscv: kvm: add SBI FWFT support for SBI_FWFT_DOUBLE_TRAP_ENABLE RISC-V: KVM: add support for double trap exception .../devicetree/bindings/riscv/extensions.yaml | 6 + arch/riscv/include/asm/csr.h | 3 + arch/riscv/include/asm/hwcap.h | 1 + arch/riscv/include/asm/kvm_host.h | 12 +- arch/riscv/include/asm/kvm_vcpu_sbi.h | 1 + arch/riscv/include/asm/kvm_vcpu_sbi_fwft.h | 37 ++++ arch/riscv/include/asm/sbi.h | 1 + arch/riscv/include/uapi/asm/kvm.h | 2 + arch/riscv/kernel/cpufeature.c | 1 + arch/riscv/kernel/entry.S | 52 ++--- arch/riscv/kernel/head.S | 4 + arch/riscv/kernel/sse_entry.S | 4 +- arch/riscv/kvm/Makefile | 1 + arch/riscv/kvm/vcpu.c | 28 +-- arch/riscv/kvm/vcpu_exit.c | 33 +++- arch/riscv/kvm/vcpu_insn.c | 15 +- arch/riscv/kvm/vcpu_onereg.c | 2 + arch/riscv/kvm/vcpu_sbi.c | 8 +- arch/riscv/kvm/vcpu_sbi_fwft.c | 177 ++++++++++++++++++ arch/riscv/kvm/vcpu_switch.S | 19 +- drivers/firmware/Kconfig | 7 + drivers/firmware/Makefile | 1 + drivers/firmware/riscv_dbltrp.c | 95 ++++++++++ include/linux/riscv_dbltrp.h | 19 ++ 24 files changed, 466 insertions(+), 63 deletions(-) create mode 100644 arch/riscv/include/asm/kvm_vcpu_sbi_fwft.h create mode 100644 arch/riscv/kvm/vcpu_sbi_fwft.c create mode 100644 drivers/firmware/riscv_dbltrp.c create mode 100644 include/linux/riscv_dbltrp.h -- 2.43.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 79DFEC4345F for ; Thu, 18 Apr 2024 15:31:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=54NYxDDh3Hzr972CsxZPd1AxmRMxYE6qM7f1Dc+ovZs=; b=eDPPKh+VYJaX7b BLi5Z8YRrw+om8SL+NrprB4zh/5UlRPBDYMBhG14Rg0oD1JBm+vr5zqOLRM3Bu/ISxn/Gzs5bSO5+ YwkBLyU1eoO5GdTwl2N57i5Tqdjcb4dTBkAOqzGnslm+S8I+ufHf03MSy99EcB+ZKJhVrjFwrUxyd ohTt/SCgtDZj8xR6Va5nrfqInNpgSHKn2FqMLlMbsshTR+ojBx/qHbQlF6UlpMbOAU6MJNdUI/HwT QRF+8sPcoiGWjHDBpp67bNrBtRXqj2BFPfTLSDlbnthKIh+HSKhzSxmdRk7gj80CDVD/L4kTBaE69 IzRPqYJcqUGZOG+vNqWA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rxTjc-00000002nnI-0338; Thu, 18 Apr 2024 15:31:36 +0000 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rxSjH-00000002cUE-3oga for linux-riscv@lists.infradead.org; Thu, 18 Apr 2024 14:27:13 +0000 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-345606e8ac0so124131f8f.0 for ; Thu, 18 Apr 2024 07:27:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1713450430; x=1714055230; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=p3RiUuSEoG2S8esV/YzS5auTHlA7j5ReVp1mTpYduo8=; b=hJc4cblS92J24PHAhXXjXKTkhDeXFjLAWALdUqMy3xHfrnpl/ZXPGEXAzqNnbLhXNA oQCTeHs/N5cQf+NuPX7dBPI8z2tMXT80CYu2oGu2Xwqijrxlzft9G7+ml/dNPOs8Vsm/ bygtmyE9OzzuOHUfQM53Q4dIc6/IjBLIc8tt5fyIk3T+qM8mrN5tztD8cjW8kG/vcSCM yTmmWInK0coK7ZkVT/chUFdzoNN8uRj7MoZwXZ4zQuQ23fna8Xv9qPKciLOp05jbXMYg SMf5vySQf52PO/OwiHrUXxcYtaXv/MUMIi02pJyyNdw7HXZdv/fBfisxAPsLGpc4VfMY 5/uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713450430; x=1714055230; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=p3RiUuSEoG2S8esV/YzS5auTHlA7j5ReVp1mTpYduo8=; b=JmbK1WgxeR1T4LcwoGi8rqdalfTEKNwKf1iKnza4VZR5M3u1W1F+16x0iA6ENZlanZ 6r5bzlA9uQHPYbNeM0S0Yaxv5DRry8gH/oRq3y2ZAUK4WKHcw0zRd4hNY/vU5kjkwi3k HyX/9zscUyYC356hMokO14dipO90+ZiYLnBe+hO7DvrxgB04GAl65AE/qsvyWYxfbxBS ILOQfXtzOmlU9dh5Jiu7Hov7G0tvpcYHmr/XGZWIxyCmtS2c6eNKe3BH8DjqyihrkDli QX5A3jY/GfkD4HsvQplI0P1qWCHOvnbhd3CrlKlJ2Cxrxa2uM2Zfxhp+97YS6wySHkoK RRpw== X-Forwarded-Encrypted: i=1; AJvYcCXPXPIpGW2eEdaCGPngjPqRI4QRJbLDM+boPVOV3CO/Y0E8TlvTkLzhHoSHq41tTEfTAUFr3Bv/lRaL/ufaM8jZYxJ4u/8yLWfCMD1UH5nu X-Gm-Message-State: AOJu0YwCDHBsw0zyT9koDjDU/kjoINweTv2hqpdd+z+tVbeXu6sCk8sZ p93ZOri/anbW10pMBAvQhKDE9mC7fggKTEG1bOmcymd/DgaHJYZcB6fgkCYAIrE= X-Google-Smtp-Source: AGHT+IFEKKLATpLTVwutm2tzIoiZ11Ga9pVF4NMfg4vCen7e5iSouPTou2BE8D1MsN0dG3NtPPHp/g== X-Received: by 2002:a05:600c:524a:b0:418:2719:6b14 with SMTP id fc10-20020a05600c524a00b0041827196b14mr2077367wmb.3.1713450430306; Thu, 18 Apr 2024 07:27:10 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:999:a3a0:7b64:4d1d:16d8:e38b]) by smtp.gmail.com with ESMTPSA id v10-20020a05600c470a00b00418a386c059sm2873645wmo.42.2024.04.18.07.27.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Apr 2024 07:27:09 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: Conor Dooley , Rob Herring , Krzysztof Kozlowski , Paul Walmsley , Palmer Dabbelt , Albert Ou , Anup Patel , Atish Patra Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Ved Shanbhogue Subject: [RFC PATCH 0/7] riscv: Add support for Ssdbltrp extension Date: Thu, 18 Apr 2024 16:26:39 +0200 Message-ID: <20240418142701.1493091-1-cleger@rivosinc.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240418_072711_985624_15D85CDD X-CRM114-Status: GOOD ( 15.14 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org QSBkb3VibGUgdHJhcCB0eXBpY2FsbHkgYXJpc2VzIGR1cmluZyBhIHNlbnNpdGl2ZSBwaGFzZSBp biB0cmFwIGhhbmRsaW5nCm9wZXJhdGlvbnMg4oCUIHdoZW4gYW4gZXhjZXB0aW9uIG9yIGludGVy cnVwdCBvY2N1cnMgd2hpbGUgdGhlIHRyYXAKaGFuZGxlciAodGhlIGNvbXBvbmVudCByZXNwb25z aWJsZSBmb3IgbWFuYWdpbmcgdGhlc2UgZXZlbnRzKSBpcyBpbiBhCm5vbi1yZWVudHJhbnQgc3Rh dGUuIFRoaXMgbm9uLXJlZW50cmFuY3kgdXN1YWxseSBvY2N1cnMgaW4gdGhlIGVhcmx5CnBoYXNl IG9mIHRyYXAgaGFuZGxpbmcsIHdoZXJlaW4gdGhlIHRyYXAgaGFuZGxlciBoYXMgbm90IHlldCBw cmVzZXJ2ZWQKdGhlIG5lY2Vzc2FyeSBzdGF0ZSB0byBoYW5kbGUgYW5kIHJlc3VtZSBmcm9tIHRo ZSB0cmFwLiBUaGUgb2NjdXJyZW5jZQpvZiBzdWNoIGV2ZW50IGlzIHVubGlrZWx5IGJ1dCBjYW4g aGFwcGVuIHdoZW4gZGVhbGluZyB3aXRoIGhhcmR3YXJlCmVycm9ycy4KClRoaXMgc2VyaWVzIGFk ZHMgc3VwcG9ydCBmb3IgU3NkYmx0cnBbMV0uIEl0IGlzIGJhc2VkIG9uIFNTRSBzdXBwb3J0IGFz IHdlbGwgYXMKZmlybXdhcmUgZmVhdHVyZSB0byBlbmFibGUgZG91YmxlIHRyYXAuCgpTc2RibHRy cCBjYW4gYmUgdGVzdGVkIHVzaW5nIHFlbXVbMV0sIG9wZW5zYmlbMl0sIGxpbnV4WzNdIGFuZApr dm0tdW5pdC10ZXN0c1s1XS4gQXNzdW1pbmcgeW91IGhhdmUgYSByaXNjdiBlbnZpcm9ubWVudCBh dmFpbGFibGUgYW5kCmNvbmZpZ3VyZWQgKENST1NTX0NPTVBJTEUpLCBpdCBjYW4gYmUgYnVpbHQg Zm9yIHJpc2N2NjQgdXNpbmcgdGhlCmZvbGxvd2luZyBpbnN0cnVjdGlvbnM6CgpRZW11OgogICQg Z2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9yaXZvc2luYy9xZW11LmdpdAogICQgY2QgcWVt dQogICQgZ2l0IHN3aXRjaCBkZXYvY2xlZ2VyL2RibHRycF9yZmNfdjEKICAkIG1rZGlyIGJ1aWxk ICYmIGNkIGJ1aWxkCiAgJCAuLi9jb25maWd1cmUgLS10YXJnZXQtbGlzdD1yaXNjdjY0LXNvZnRt bXUKICAkIG1ha2UKCk9wZW5TQkk6CiAgJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3Jp dm9zaW5jL29wZW5zYmkuZ2l0CiAgJCBjZCBvcGVuc2JpCiAgJCBnaXQgc3dpdGNoIGRldi9jbGVn ZXIvZGJsdHJwX3JmY192MQogICQgbWFrZSBPPWJ1aWxkIFBMQVRGT1JNX1JJU0NWX1hMRU49NjQg UExBVEZPUk09Z2VuZXJpYwoKTGludXg6CiAgJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29t L3Jpdm9zaW5jL2xpbnV4LmdpdAogICQgY2QgbGludXgKICAkIGdpdCBzd2l0Y2ggZGV2L2NsZWdl ci9kYmx0cnBfcmZjX3YxCiAgJCBleHBvcnQgQVJDSD1yaXNjdgogICQgbWFrZSBPPWJ1aWxkIGRl ZmNvbmZpZwogICQgLi9zY3JpcHQvY29uZmlnIC0tZmlsZSBidWlsZC8uY29uZmlnIC0tZW5hYmxl IFJJU0NWX0RCTFRSUAogICQgbWFrZSBPPWJ1aWxkCgprdm0tdW5pdC10ZXN0czoKICAkIGdpdCBj bG9uZSBodHRwczovL2dpdGh1Yi5jb20vY2xlbWVudGxlZ2VyL2t2bS11bml0LXRlc3RzLmdpdAog ICQgY2Qga3ZtLXVuaXQtdGVzdHMKICAkIGdpdCBzd2l0Y2ggZGV2L2NsZWdlci9kYmx0cnBfcmZj X3YxCiAgJCAuL2NvbmZpZ3VyZSAtLWFyY2g9cmlzY3Y2NCAtLWNyb3NzLXByZWZpeD0kQ1JPU1Nf Q09NUElMRQogICQgbWFrZQoKWW91IHdpbGwgYWxzbyBuZWVkIGt2bXRvb2wgaW4geW91ciByb290 ZnMuIE9uZSBjYW4gYnVpbGQgYSBidWlsZHJvb3QKcm9vdGZzIHVzaW5nIHRoZSBidWlsZHJvb3Qg cHJvdmlkZWQgYXQgWzZdICh3aGljaCBjb250YWlucyBhbiB1cGRhdGUKb2Yga3ZtdG9vbCB3aXRo IHJpc2N2IHN1cHBvcnQpLgoKUnVuIHdpdGgga3ZtLXVuaXQtdGVzdCB0ZXN0IGFzIGtlcm5lbDoK ICAkIHFlbXUtc3lzdGVtLXJpc2N2NjQgXAogICAgLU0gdmlydCBcCiAgICAtY3B1IHJ2NjQseC1z c2RibHRycD10cnVlLHgtc21kYmx0cnA9dHJ1ZSBcCiAgICAtbm9ncmFwaGljIFwKICAgIC1zZXJp YWwgbW9uOnN0ZGlvIFwKICAgIC1iaW9zIG9wZW5zYmkvYnVpbGQvcGxhdGZvcm0vZ2VuZXJpYy9m aXJtd2FyZS9md19qdW1wLmJpbiBcCiAgICAta2VybmVsIGt2bS11bml0LXRlc3RzLWRibHRycC9y aXNjdi9zYmlfZGJsdHJwLmZsYXQKICAuLi4KICBbT3BlblNCSSBib290IHBhcnRpYWxseSBlbGlk ZWRdCiAgQm9vdCBIQVJUIElTQSBFeHRlbnNpb25zICA6IHNzY29mcG1mLHNzdGMsemljbnRyLHpp aHBtLHppY2Jveix6aWNib20sc2R0cmlnLHN2YWR1LHNzZGJsdHJwCiAgLi4uCiAgIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKICAjICAgIGt2bS11bml0LXRlc3RzCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgUEFT Uzogc2JpOiBmd2Z0OiBGV0ZUIGV4dGVuc2lvbiBwcm9iaW5nIG5vIGVycm9yCiAgUEFTUzogc2Jp OiBmd2Z0OiBGV0ZUIGV4dGVuc2lvbiBpcyBwcmVzZW50CiAgUEFTUzogc2JpOiBmd2Z0OiBkYmx0 cnA6IEdldCBkb3VibGUgdHJhcCBlbmFibGUgZmVhdHVyZSB2YWx1ZQogIFBBU1M6IHNiaTogZndm dDogZGJsdHJwOiBTZXQgZG91YmxlIHRyYXAgZW5hYmxlIGZlYXR1cmUgdmFsdWUgPT0gMAogIFBB U1M6IHNiaTogZndmdDogZGJsdHJwOiBHZXQgZG91YmxlIHRyYXAgZW5hYmxlIGZlYXR1cmUgdmFs dWUgPT0gMAogIFBBU1M6IHNiaTogZndmdDogZGJsdHJwOiBEb3VibGUgdHJhcCBkaXNhYmxlZCwg dHJhcCBmaXJzdCB0aW1lIG9rCiAgUEFTUzogc2JpOiBmd2Z0OiBkYmx0cnA6IFNldCBkb3VibGUg dHJhcCBlbmFibGUgZmVhdHVyZSB2YWx1ZSA9PSAxCiAgUEFTUzogc2JpOiBmd2Z0OiBkYmx0cnA6 IEdldCBkb3VibGUgdHJhcCBlbmFibGUgZmVhdHVyZSB2YWx1ZSA9PSAxCiAgUEFTUzogc2JpOiBm d2Z0OiBkYmx0cnA6IFRyYXBwZWQgdHdpY2UgYWxsb3dlZCBvawogIElORk86IHNiaTogZndmdDog ZGJsdHJwOiBTaG91bGQgZ2VuZXJhdGUgYSBkb3VibGUgdHJhcCBhbmQgY3Jhc2ggIQoKICBzYmlf dHJhcF9lcnJvcjogaGFydDA6IHRyYXAwOiBkb3VibGUgdHJhcCBoYW5kbGVyIGZhaWxlZCAoZXJy b3IgLTEwKQoKICBzYmlfdHJhcF9lcnJvcjogaGFydDA6IHRyYXAwOiBtY2F1c2U9MHgwMDAwMDAw MDAwMDAwMDEwIG10dmFsPTB4MDAwMDAwMDAwMDAwMDAwMAogIHNiaV90cmFwX2Vycm9yOiBoYXJ0 MDogdHJhcDA6IG10dmFsMj0weDAwMDAwMDAwMDAwMDAwMDMgbXRpbnN0PTB4MDAwMDAwMDAwMDAw MDAwMAogIHNiaV90cmFwX2Vycm9yOiBoYXJ0MDogdHJhcDA6IG1lcGM9MHgwMDAwMDAwMDgwMjAw MGQ4IG1zdGF0dXM9MHg4MDAwMDAwYTAxMDA2OTAwCiAgc2JpX3RyYXBfZXJyb3I6IGhhcnQwOiB0 cmFwMDogcmE9MHgwMDAwMDAwMDgwMjAwMWZjIHNwPTB4MDAwMDAwMDA4MDIxM2U3MAogIHNiaV90 cmFwX2Vycm9yOiBoYXJ0MDogdHJhcDA6IGdwPTB4MDAwMDAwMDAwMDAwMDAwMCB0cD0weDAwMDAw MDAwODAwODgwMDAKICBzYmlfdHJhcF9lcnJvcjogaGFydDA6IHRyYXAwOiBzMD0weDAwMDAwMDAw ODAyMTNlODAgczE9MHgwMDAwMDAwMDAwMDAwMDAxCiAgc2JpX3RyYXBfZXJyb3I6IGhhcnQwOiB0 cmFwMDogYTA9MHgwMDAwMDAwMDgwMjEzZTgwIGExPTB4MDAwMDAwMDA4MDIwODE5MwogIHNiaV90 cmFwX2Vycm9yOiBoYXJ0MDogdHJhcDA6IGEyPTB4MDAwMDAwMDA4MDIwZGMyMCBhMz0weDAwMDAw MDAwMDAwMDAwMGYKICBzYmlfdHJhcF9lcnJvcjogaGFydDA6IHRyYXAwOiBhND0weDAwMDAwMDAw ODAyMTBjZDggYTU9MHgwMDAwMDAwMDgwMjExMGQwCiAgc2JpX3RyYXBfZXJyb3I6IGhhcnQwOiB0 cmFwMDogYTY9MHgwMDAwMDAwMDgwMjEzNmU0IGE3PTB4MDAwMDAwMDA0NjU3NDY1NAogIHNiaV90 cmFwX2Vycm9yOiBoYXJ0MDogdHJhcDA6IHMyPTB4MDAwMDAwMDA4MDIxMGNkOSBzMz0weDAwMDAw MDAwMDAwMDAwMDAKICBzYmlfdHJhcF9lcnJvcjogaGFydDA6IHRyYXAwOiBzND0weDAwMDAwMDAw MDAwMDAwMDAgczU9MHgwMDAwMDAwMDAwMDAwMDAwCiAgc2JpX3RyYXBfZXJyb3I6IGhhcnQwOiB0 cmFwMDogczY9MHgwMDAwMDAwMDAwMDAwMDAwIHM3PTB4MDAwMDAwMDAwMDAwMDAwMQogIHNiaV90 cmFwX2Vycm9yOiBoYXJ0MDogdHJhcDA6IHM4PTB4MDAwMDAwMDAwMDAwMjAwMCBzOT0weDAwMDAw MDAwODAwODM3MDAKICBzYmlfdHJhcF9lcnJvcjogaGFydDA6IHRyYXAwOiBzMTA9MHgwMDAwMDAw MDAwMDAwMDAwIHMxMT0weDAwMDAwMDAwMDAwMDAwMDAKICBzYmlfdHJhcF9lcnJvcjogaGFydDA6 IHRyYXAwOiB0MD0weDAwMDAwMDAwMDAwMDAwMDAgdDE9MHgwMDAwMDAwMDgwMjEzZWQ4CiAgc2Jp X3RyYXBfZXJyb3I6IGhhcnQwOiB0cmFwMDogdDI9MHgwMDAwMDAwMDAwMDAxMDAwIHQzPTB4MDAw MDAwMDA4MDIxM2VlMAogIHNiaV90cmFwX2Vycm9yOiBoYXJ0MDogdHJhcDA6IHQ0PTB4MDAwMDAw MDAwMDAwMDAwMCB0NT0weDAwMDAwMDAwODAyMGY4ZDAKICBzYmlfdHJhcF9lcnJvcjogaGFydDA6 IHRyYXAwOiB0Nj0weDAwMDAwMDAwMDAwMDAwMDAKClJ1biB3aXRoIGxpbnV4IGFuZCBrdm0tdW5p dC10ZXN0IHRlc3QgaW4ga3ZtICh0ZXN0aW5nIFZTLW1vZGUpOgogICQgcWVtdS1zeXN0ZW0tcmlz Y3Y2NCBcCiAgICAtTSB2aXJ0IFwKICAgIC1jcHUgcnY2NCx4LXNzZGJsdHJwPXRydWUseC1zbWRi bHRycD10cnVlIFwKICAgIC1ub2dyYXBoaWMgXAogICAgLXNlcmlhbCBtb246c3RkaW8gXAogICAg LWJpb3Mgb3BlbnNiaS9idWlsZC9wbGF0Zm9ybS9nZW5lcmljL2Zpcm13YXJlL2Z3X2p1bXAuYmlu IFwKICAgIC1rZXJuZWwgbGludXgvYnVpbGQvYXJjaC9yaXNjdi9ib290L0ltYWdlCiAgLi4uCiAg W0xpbnV4IGJvb3QgcGFydGlhbGx5IGVsaWRlZF0KICBbICAgIDAuNzM1MDc5XSByaXNjdi1kYmx0 cnA6IERvdWJsZSB0cmFwIGhhbmRsaW5nIHJlZ2lzdGVyZWQKICAuLi4KCiAgJCBsa3ZtIHJ1biAt ayBzYmlfZGJsdHJwLmZsYXQgLW0gMTI4IC1jIDIKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgICAg a3ZtLXVuaXQtdGVzdHMKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICBQQVNTOiBzYmk6IGZ3ZnQ6IEZX RlQgZXh0ZW5zaW9uIHByb2Jpbmcgbm8gZXJyb3IKICBQQVNTOiBzYmk6IGZ3ZnQ6IEZXRlQgZXh0 ZW5zaW9uIGlzIHByZXNlbnQKICBQQVNTOiBzYmk6IGZ3ZnQ6IGRibHRycDogR2V0IGRvdWJsZSB0 cmFwIGVuYWJsZSBmZWF0dXJlIHZhbHVlCiAgUEFTUzogc2JpOiBmd2Z0OiBkYmx0cnA6IFNldCBk b3VibGUgdHJhcCBlbmFibGUgZmVhdHVyZSB2YWx1ZSA9PSAwCiAgUEFTUzogc2JpOiBmd2Z0OiBk Ymx0cnA6IEdldCBkb3VibGUgdHJhcCBlbmFibGUgZmVhdHVyZSB2YWx1ZSA9PSAwCiAgUEFTUzog c2JpOiBmd2Z0OiBkYmx0cnA6IERvdWJsZSB0cmFwIGRpc2FibGVkLCB0cmFwIGZpcnN0IHRpbWUg b2sKICBQQVNTOiBzYmk6IGZ3ZnQ6IGRibHRycDogU2V0IGRvdWJsZSB0cmFwIGVuYWJsZSBmZWF0 dXJlIHZhbHVlID09IDEKICBQQVNTOiBzYmk6IGZ3ZnQ6IGRibHRycDogR2V0IGRvdWJsZSB0cmFw IGVuYWJsZSBmZWF0dXJlIHZhbHVlID09IDEKICBQQVNTOiBzYmk6IGZ3ZnQ6IGRibHRycDogVHJh cHBlZCB0d2ljZSBhbGxvd2VkIG9rCiAgSU5GTzogc2JpOiBmd2Z0OiBkYmx0cnA6IFNob3VsZCBn ZW5lcmF0ZSBhIGRvdWJsZSB0cmFwIGFuZCBjcmFzaCAhCiAgWyAgIDUxLjkzOTA3N10gR3Vlc3Qg ZG91YmxlIHRyYXAKICBbICAgNTEuOTM5MzIzXSBrdm0gWzkzXTogVkNQVSBleGl0IGVycm9yIC05 NQogIFsgICA1MS45Mzk2ODNdIGt2bSBbOTNdOiBTRVBDPTB4ODAyMDAwZDggU1NUQVRVUz0weDIw MDAwNDUyMCBIU1RBVFVTPTB4MjAwMjAwMTgwCiAgWyAgIDUxLjkzOTk0N10ga3ZtIFs5M106IFND QVVTRT0weDEwIFNUVkFMPTB4MCBIVFZBTD0weDMgSFRJTlNUPTB4MAogIEtWTV9SVU4gZmFpbGVk OiBPcGVyYXRpb24gbm90IHN1cHBvcnRlZAogICQKCkxpbms6IGh0dHBzOi8vZ2l0aHViLmNvbS9y aXNjdi9yaXNjdi1kb3VibGUtdHJhcC9yZWxlYXNlcy9kb3dubG9hZC92MC41Ni9yaXNjdi1kb3Vi bGUtdHJhcC5wZGYgWzFdCkxpbms6IGh0dHBzOi8vZ2l0aHViLmNvbS9yaXZvc2luYy9xZW11L3Ry ZWUvZGV2L2NsZWdlci9kYmx0cnBfcmZjX3YxIFsyXQpMaW5rOiBodHRwczovL2dpdGh1Yi5jb20v cml2b3NpbmMvb3BlbnNiaS90cmVlL2Rldi9jbGVnZXIvZGJsdHJwX3JmY192MSBbM10KTGluazog aHR0cHM6Ly9naXRodWIuY29tL3Jpdm9zaW5jL2xpbnV4L3RyZWUvZGV2L2NsZWdlci9kYmx0cnBf cmZjX3YxIFs0XQpMaW5rOiBodHRwczovL2dpdGh1Yi5jb20vY2xlbWVudGxlZ2VyL2t2bS11bml0 LXRlc3RzL3RyZWUvZGV2L2NsZWdlci9kYmx0cnBfcmZjX3YxIFs1XQpMaW5rOiBodHRwczovL2dp dGh1Yi5jb20vY2xlbWVudGxlZ2VyL2J1aWxkcm9vdC90cmVlL2Rldi9jbGVnZXIva3ZtdG9vbCBb Nl0KLS0tCgpDbMOpbWVudCBMw6lnZXIgKDcpOgogIHJpc2N2OiBrdm06IGFkZCBzdXBwb3J0IGZv ciBGV0ZUIFNCSSBleHRlbnNpb24KICBkdC1iaW5kaW5nczogcmlzY3Y6IGFkZCBTc2RibHRycCBJ U0EgZXh0ZW5zaW9uIGRlc2NyaXB0aW9uCiAgcmlzY3Y6IGFkZCBTc2RibHRycCBJU0EgZXh0ZW5z aW9uIHBhcnNpbmcKICByaXNjdjogaGFuZGxlIFNzZGJsdHJwIG1zdGF0dXMgU0RUIGJpdAogIHJp c2N2OiBhZGQgZG91YmxlIHRyYXAgZHJpdmVyCiAgcmlzY3Y6IGt2bTogYWRkIFNCSSBGV0ZUIHN1 cHBvcnQgZm9yIFNCSV9GV0ZUX0RPVUJMRV9UUkFQX0VOQUJMRQogIFJJU0MtVjogS1ZNOiBhZGQg c3VwcG9ydCBmb3IgZG91YmxlIHRyYXAgZXhjZXB0aW9uCgogLi4uL2RldmljZXRyZWUvYmluZGlu Z3MvcmlzY3YvZXh0ZW5zaW9ucy55YW1sIHwgICA2ICsKIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20v Y3NyLmggICAgICAgICAgICAgICAgICB8ICAgMyArCiBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2h3 Y2FwLmggICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1f aG9zdC5oICAgICAgICAgICAgIHwgIDEyICstCiBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92 Y3B1X3NiaS5oICAgICAgICAgfCAgIDEgKwogYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdmNw dV9zYmlfZndmdC5oICAgIHwgIDM3ICsrKysKIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vc2JpLmgg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3Jpc2N2L2luY2x1ZGUvdWFwaS9hc20va3Zt LmggICAgICAgICAgICAgfCAgIDIgKwogYXJjaC9yaXNjdi9rZXJuZWwvY3B1ZmVhdHVyZS5jICAg ICAgICAgICAgICAgIHwgICAxICsKIGFyY2gvcmlzY3Yva2VybmVsL2VudHJ5LlMgICAgICAgICAg ICAgICAgICAgICB8ICA1MiArKy0tLQogYXJjaC9yaXNjdi9rZXJuZWwvaGVhZC5TICAgICAgICAg ICAgICAgICAgICAgIHwgICA0ICsKIGFyY2gvcmlzY3Yva2VybmVsL3NzZV9lbnRyeS5TICAgICAg ICAgICAgICAgICB8ICAgNCArLQogYXJjaC9yaXNjdi9rdm0vTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIGFyY2gvcmlzY3Yva3ZtL3ZjcHUuYyAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAyOCArLS0KIGFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jICAgICAgICAgICAg ICAgICAgICB8ICAzMyArKystCiBhcmNoL3Jpc2N2L2t2bS92Y3B1X2luc24uYyAgICAgICAgICAg ICAgICAgICAgfCAgMTUgKy0KIGFyY2gvcmlzY3Yva3ZtL3ZjcHVfb25lcmVnLmMgICAgICAgICAg ICAgICAgICB8ICAgMiArCiBhcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaS5jICAgICAgICAgICAgICAg ICAgICAgfCAgIDggKy0KIGFyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYyAgICAgICAgICAg ICAgICB8IDE3NyArKysrKysrKysrKysrKysrKysKIGFyY2gvcmlzY3Yva3ZtL3ZjcHVfc3dpdGNo LlMgICAgICAgICAgICAgICAgICB8ICAxOSArLQogZHJpdmVycy9maXJtd2FyZS9LY29uZmlnICAg ICAgICAgICAgICAgICAgICAgIHwgICA3ICsKIGRyaXZlcnMvZmlybXdhcmUvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2Zpcm13YXJlL3Jpc2N2X2RibHRycC5j ICAgICAgICAgICAgICAgfCAgOTUgKysrKysrKysrKwogaW5jbHVkZS9saW51eC9yaXNjdl9kYmx0 cnAuaCAgICAgICAgICAgICAgICAgIHwgIDE5ICsrCiAyNCBmaWxlcyBjaGFuZ2VkLCA0NjYgaW5z ZXJ0aW9ucygrKSwgNjMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNj di9pbmNsdWRlL2FzbS9rdm1fdmNwdV9zYmlfZndmdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJj aC9yaXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9m aXJtd2FyZS9yaXNjdl9kYmx0cnAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgv cmlzY3ZfZGJsdHJwLmgKCi0tIAoyLjQzLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LXJpc2N2Cg==