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 3ADF2C369D5 for ; Thu, 24 Apr 2025 19:52:36 +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:References:In-Reply-To: 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: List-Owner; bh=wYJrePHe6en6KFWVI6NCO2VyVn1UGmXUxYRRwRK9Vo4=; b=Ylllm3/Y4kfnWV t8eue4NH6MON8G6re8t/QX3tVsVXAel1e8ZGBEt4u4uhXx56gxStqv0TFJkbxs8UhkuE6y9+0665+ i+3LirL4h2T/GZFErlsKGw2Ncc0GInR4RG5IkuphB3sgN6wNYJgfwsyWq/U+1MeNUWMbB+Kqakn3Y Ej/bsXe0dTh+kVOGykCe1YLQpVdnDednOVkDc+rHb+3eVZo/n2EP5vHHPeG/IxL4kAPttuMfkQYl1 PL+XZWeln6Oqo3ecEYOLiM70zcLzksEfi1cqw4GqQ91X+TGbD1j9H4VJkkK3qOS2DcBWcNw0SBrhe jROsLwWP9cKQt+nzBAKA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u82cZ-0000000FFIA-1v6x; Thu, 24 Apr 2025 19:52:31 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u80U6-0000000EvDw-37T7 for linux-riscv@bombadil.infradead.org; Thu, 24 Apr 2025 17:35:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Sender:Reply-To:Content-ID:Content-Description; bh=pIsv+titG4x0ovEMDknM6ko4IiiOufEK1Ymj080VPx4=; b=oMgbroT3lRq/rGH6Tv1Pf7OYXo lOK8QOmRobeJyU8cDIUY8HmT76sKQuM7rVD5LdjYnhVALHiKbbUIwc15dNxQpyuMiJzJggoLVlemK Jqh//Q3jMikugfEIQqGW68QJLyBa474OD709H1LoYgcM0aM92IohA4gQ3jI2TP85IC+Ju6nVyQkHW RSVpzW+2jkqVq7oCcXTFVgMkX0y7hugq8KW67VFzx9WfWjdbSWwXp6b7eHgsSLgFusWca4iM51tMD Zg+EMy/9eDHFPJ6OV0El25wCfyoPj8bV9Qm2U1b/tm6Yf63b6xNnhtTWBPB8aEDsmRnUJIO94aGss z+N5u27g==; Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by desiato.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u80U3-0000000BsQP-42UN for linux-riscv@lists.infradead.org; Thu, 24 Apr 2025 17:35:37 +0000 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-22c33e5013aso17686215ad.0 for ; Thu, 24 Apr 2025 10:35:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1745516133; x=1746120933; darn=lists.infradead.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=pIsv+titG4x0ovEMDknM6ko4IiiOufEK1Ymj080VPx4=; b=fHgupdJ+hiS8czK6fU1b0JY8Kz3/CB+1qBDuH1UjhxcKgXINL7hPpCMabNwGQsJdSv R6b35wozP78EVGUim9zKU0ZaJf3w6K1RFbf/+TQFCg+RBRi8tRXVDWl8GZ8YecJ7FiKd k2o6bCFYg0jrmTO3wbcBEQSWkfH2556Hhcvbwy7kcCOtIiUugmcpbms0qglO73m+PKz2 ZK3cEJe5OExHuPCXkI5zaXPApB91/gTmGJ816NB+1lZJBFm2OyAEtpELQb6npouizPY/ 8jDqzGZCjsPKGpYAWQkEj/HAyxuwfSf8FmmaAIep5yQ3gErcL+eN4Q//lBRVKeZSbYON QULA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745516133; x=1746120933; 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=pIsv+titG4x0ovEMDknM6ko4IiiOufEK1Ymj080VPx4=; b=eveHrHvO0AyqYJb9nziKfIweR+Gv3lzA6KPE1M6pYnV4uVKXjV5Ijg0+UqE+kpr7pL CEvalrZ2R40M9yQfBuBTqj1tZ8g3x5itX/oJMnUFhhWFWp1dbSPVoOqlFUgWmtvtIb0P z0N9pOc1pGO2+WdD22uOFrW9tN5xiabKUL31mW6CCNxnrZxX8u4f1lbkPggnEsGzOk78 Wlbhc2HjDaEqNqnqaBb22cG/LbHMd78THU5Gh9zXm1N/5wNMCe5EUd5KFXcyjovBjQ/K 6y5hspRos/b9kNaVqFnMb8lCdH8LtKfaM2PTkyZxwW3Nkt6WIbb4YwGx49p3zf6DnJbc 3daw== X-Forwarded-Encrypted: i=1; AJvYcCUtghIPPeeP3C3nHPU4AIjp2XHyVlmT0sR7rVCGe4oD8dXY2z4PPVf5sUevXk78zpmPR00PYqNavJLZzg==@lists.infradead.org X-Gm-Message-State: AOJu0YzGSz0sy9H7IllaogRYbPDowkmQrfVcmJUbJynQ254A6M+5Rp19 r08CZrju2ra0AjLwMlrcLgaC4uUj06ceRFPnwd8J+B3rCpwLaV11pRk/CIk2TFE= X-Gm-Gg: ASbGncvSsCXmV9oXq7yj9d6+Cw+1Zx6+ZVNST1G9Sig42ug9ehGzwFOdLVkKzF4BTWc oswrqegde2IhEj+OcTv50dpKmkdYUT3/ejTpOXIKHX7LBBIhB3yY6f1l9T9jZNa2dwfhMKkB5dO djyJoiqV/OaJSIBNLptOAi+Rgy2Vr0EDaGTMDw/K2tL3lb922h1dYQG7qnB7UQPfehY7jobLPlA fKSwDt1brKxMHzZaHqTgvBpaocRq8oVoGSnGdgRysFXOSDGLO6fP8DDyoWvwF2I2Np2r8oqN7n5 MpBMJWd2dtpcz0yNvP1grW0O52AUjoATH+o986eNjA== X-Google-Smtp-Source: AGHT+IG9MFmvlCC44cS0jYEh46W0kXDkUBACm39Pu4nHZgkwqd3/vf/EeN8PbrVqTWMOQVYaPZCP6g== X-Received: by 2002:a17:903:234e:b0:223:67ac:8929 with SMTP id d9443c01a7336-22dbd35407bmr5607675ad.0.1745516133553; Thu, 24 Apr 2025 10:35:33 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22db5100c4esm16270255ad.173.2025.04.24.10.35.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Apr 2025 10:35:32 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: Paul Walmsley , Palmer Dabbelt , Anup Patel , Atish Patra , Shuah Khan , Jonathan Corbet , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Samuel Holland , Andrew Jones , Deepak Gupta Subject: [PATCH v6 13/14] RISC-V: KVM: add support for FWFT SBI extension Date: Thu, 24 Apr 2025 19:32:00 +0200 Message-ID: <20250424173204.1948385-14-cleger@rivosinc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250424173204.1948385-1-cleger@rivosinc.com> References: <20250424173204.1948385-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250424_183536_118715_DE4B1BA7 X-CRM114-Status: GOOD ( 24.75 ) 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 QWRkIGJhc2ljIGluZnJhc3RydWN0dXJlIHRvIHN1cHBvcnQgdGhlIEZXRlQgZXh0ZW5zaW9uIGlu IEtWTS4KClNpZ25lZC1vZmYtYnk6IENsw6ltZW50IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNv bT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBKb25lcyA8YWpvbmVzQHZlbnRhbmFtaWNyby5jb20+Ci0t LQogYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oICAgICAgICAgIHwgICA0ICsKIGFy Y2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmggICAgICB8ICAgMSArCiBhcmNoL3Jp c2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaV9md2Z0LmggfCAgMjkgKysrCiBhcmNoL3Jpc2N2 L2luY2x1ZGUvdWFwaS9hc20va3ZtLmggICAgICAgICAgfCAgIDEgKwogYXJjaC9yaXNjdi9rdm0v TWFrZWZpbGUgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGFyY2gvcmlzY3Yva3ZtL3ZjcHVf c2JpLmMgICAgICAgICAgICAgICAgICB8ICAgNCArCiBhcmNoL3Jpc2N2L2t2bS92Y3B1X3NiaV9m d2Z0LmMgICAgICAgICAgICAgfCAyMTYgKysrKysrKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNo YW5nZWQsIDI1NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9p bmNsdWRlL2FzbS9rdm1fdmNwdV9zYmlfZndmdC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9y aXNjdi9rdm0vdmNwdV9zYmlfZndmdC5jCgpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRl L2FzbS9rdm1faG9zdC5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCmluZGV4 IDRmYTAyZTA4MjE0Mi4uYzNmODgwNzYzYjlhIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL2t2bV9ob3N0LmgKKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5o CkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSA8YXNtL2t2bV92Y3B1X2ZwLmg+CiAjaW5jbHVk ZSA8YXNtL2t2bV92Y3B1X2luc24uaD4KICNpbmNsdWRlIDxhc20va3ZtX3ZjcHVfc2JpLmg+Cisj aW5jbHVkZSA8YXNtL2t2bV92Y3B1X3NiaV9md2Z0Lmg+CiAjaW5jbHVkZSA8YXNtL2t2bV92Y3B1 X3RpbWVyLmg+CiAjaW5jbHVkZSA8YXNtL2t2bV92Y3B1X3BtdS5oPgogCkBAIC0yODEsNiArMjgy LDkgQEAgc3RydWN0IGt2bV92Y3B1X2FyY2ggewogCS8qIFBlcmZvcm1hbmNlIG1vbml0b3Jpbmcg Y29udGV4dCAqLwogCXN0cnVjdCBrdm1fcG11IHBtdV9jb250ZXh0OwogCisJLyogRmlybXdhcmUg ZmVhdHVyZSBTQkkgZXh0ZW5zaW9uIGNvbnRleHQgKi8KKwlzdHJ1Y3Qga3ZtX3NiaV9md2Z0IGZ3 ZnRfY29udGV4dDsKKwogCS8qICdzdGF0aWMnIGNvbmZpZ3VyYXRpb25zIHdoaWNoIGFyZSBzZXQg b25seSBvbmNlICovCiAJc3RydWN0IGt2bV92Y3B1X2NvbmZpZyBjZmc7CiAKZGlmZiAtLWdpdCBh L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmggYi9hcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL2t2bV92Y3B1X3NiaS5oCmluZGV4IGNiNjhiM2E1N2M4Zi4uZmZkMDNmZWQwYzA2IDEw MDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV92Y3B1X3NiaS5oCisrKyBiL2Fy Y2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpLmgKQEAgLTk4LDYgKzk4LDcgQEAgZXh0 ZXJuIGNvbnN0IHN0cnVjdCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF9oc207 CiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0 X2RiY247CiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24gdmNwdV9z YmlfZXh0X3N1c3A7CiBleHRlcm4gY29uc3Qgc3RydWN0IGt2bV92Y3B1X3NiaV9leHRlbnNpb24g dmNwdV9zYmlfZXh0X3N0YTsKK2V4dGVybiBjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2JpX2V4dGVu c2lvbiB2Y3B1X3NiaV9leHRfZndmdDsKIGV4dGVybiBjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHVfc2Jp X2V4dGVuc2lvbiB2Y3B1X3NiaV9leHRfZXhwZXJpbWVudGFsOwogZXh0ZXJuIGNvbnN0IHN0cnVj dCBrdm1fdmNwdV9zYmlfZXh0ZW5zaW9uIHZjcHVfc2JpX2V4dF92ZW5kb3I7CiAKZGlmZiAtLWdp dCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaCBiL2FyY2gvcmlz Y3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjliYTg0MTM1NTc1OAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gv cmlzY3YvaW5jbHVkZS9hc20va3ZtX3ZjcHVfc2JpX2Z3ZnQuaApAQCAtMCwwICsxLDI5IEBACisv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICogQ29weXJp Z2h0IChjKSAyMDI1IFJpdm9zIEluYy4KKyAqCisgKiBBdXRob3JzOgorICogICAgIENsw6ltZW50 IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNvbT4KKyAqLworCisjaWZuZGVmIF9fS1ZNX1ZDUFVf UklTQ1ZfRldGVF9ICisjZGVmaW5lIF9fS1ZNX1ZDUFVfUklTQ1ZfRldGVF9ICisKKyNpbmNsdWRl IDxhc20vc2JpLmg+CisKK3N0cnVjdCBrdm1fc2JpX2Z3ZnRfZmVhdHVyZTsKKworc3RydWN0IGt2 bV9zYmlfZndmdF9jb25maWcgeworCWNvbnN0IHN0cnVjdCBrdm1fc2JpX2Z3ZnRfZmVhdHVyZSAq ZmVhdHVyZTsKKwlib29sIHN1cHBvcnRlZDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworfTsKKwor LyogRldGVCBkYXRhIHN0cnVjdHVyZSBwZXIgdmNwdSAqLworc3RydWN0IGt2bV9zYmlfZndmdCB7 CisJc3RydWN0IGt2bV9zYmlfZndmdF9jb25maWcgKmNvbmZpZ3M7Cit9OworCisjZGVmaW5lIHZj cHVfdG9fZndmdCh2Y3B1KSAoJih2Y3B1KS0+YXJjaC5md2Z0X2NvbnRleHQpCisKKyNlbmRpZiAv KiAhX19LVk1fVkNQVV9SSVNDVl9GV0ZUX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5j bHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2FzbS9rdm0uaApp bmRleCA1ZjU5ZmQyMjZjYzUuLjViYTc3YTNkOWY2ZSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9p bmNsdWRlL3VhcGkvYXNtL2t2bS5oCisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2FzbS9r dm0uaApAQCAtMjA0LDYgKzIwNCw3IEBAIGVudW0gS1ZNX1JJU0NWX1NCSV9FWFRfSUQgewogCUtW TV9SSVNDVl9TQklfRVhUX0RCQ04sCiAJS1ZNX1JJU0NWX1NCSV9FWFRfU1RBLAogCUtWTV9SSVND Vl9TQklfRVhUX1NVU1AsCisJS1ZNX1JJU0NWX1NCSV9FWFRfRldGVCwKIAlLVk1fUklTQ1ZfU0JJ X0VYVF9NQVgsCiB9OwogCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZSBiL2Fy Y2gvcmlzY3Yva3ZtL01ha2VmaWxlCmluZGV4IDRlMGJiYTkxZDI4NC4uMDZlMmQ1MmE5Yjg4IDEw MDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS9NYWtlZmlsZQorKysgYi9hcmNoL3Jpc2N2L2t2bS9N YWtlZmlsZQpAQCAtMjYsNiArMjYsNyBAQCBrdm0teSArPSB2Y3B1X29uZXJlZy5vCiBrdm0tJChD T05GSUdfUklTQ1ZfUE1VX1NCSSkgKz0gdmNwdV9wbXUubwoga3ZtLXkgKz0gdmNwdV9zYmkubwog a3ZtLXkgKz0gdmNwdV9zYmlfYmFzZS5vCitrdm0teSArPSB2Y3B1X3NiaV9md2Z0Lm8KIGt2bS15 ICs9IHZjcHVfc2JpX2hzbS5vCiBrdm0tJChDT05GSUdfUklTQ1ZfUE1VX1NCSSkgKz0gdmNwdV9z YmlfcG11Lm8KIGt2bS15ICs9IHZjcHVfc2JpX3JlcGxhY2UubwpkaWZmIC0tZ2l0IGEvYXJjaC9y aXNjdi9rdm0vdmNwdV9zYmkuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpLmMKaW5kZXggNTBi ZTA3OWI1NTI4Li4wNzQ4ODEwYzAyNTIgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVf c2JpLmMKKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9zYmkuYwpAQCAtNzgsNiArNzgsMTAgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBrdm1fcmlzY3Zfc2JpX2V4dGVuc2lvbl9lbnRyeSBzYmlfZXh0 W10gPSB7CiAJCS5leHRfaWR4ID0gS1ZNX1JJU0NWX1NCSV9FWFRfU1RBLAogCQkuZXh0X3B0ciA9 ICZ2Y3B1X3NiaV9leHRfc3RhLAogCX0sCisJeworCQkuZXh0X2lkeCA9IEtWTV9SSVNDVl9TQklf RVhUX0ZXRlQsCisJCS5leHRfcHRyID0gJnZjcHVfc2JpX2V4dF9md2Z0LAorCX0sCiAJewogCQku ZXh0X2lkeCA9IEtWTV9SSVNDVl9TQklfRVhUX0VYUEVSSU1FTlRBTCwKIAkJLmV4dF9wdHIgPSAm dmNwdV9zYmlfZXh0X2V4cGVyaW1lbnRhbCwKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3Zj cHVfc2JpX2Z3ZnQuYyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmIwZjY2YzdiZjAxMAotLS0gL2Rldi9udWxs CisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfc2JpX2Z3ZnQuYwpAQCAtMCwwICsxLDIxNiBAQAor Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKGMp IDIwMjUgUml2b3MgSW5jLgorICoKKyAqIEF1dGhvcnM6CisgKiAgICAgQ2zDqW1lbnQgTMOpZ2Vy IDxjbGVnZXJAcml2b3NpbmMuY29tPgorICovCisKKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgor I2luY2x1ZGUgPGxpbnV4L2Vyci5oPgorI2luY2x1ZGUgPGxpbnV4L2t2bV9ob3N0Lmg+CisjaW5j bHVkZSA8YXNtL2NwdWZlYXR1cmUuaD4KKyNpbmNsdWRlIDxhc20vc2JpLmg+CisjaW5jbHVkZSA8 YXNtL2t2bV92Y3B1X3NiaS5oPgorI2luY2x1ZGUgPGFzbS9rdm1fdmNwdV9zYmlfZndmdC5oPgor CitzdHJ1Y3Qga3ZtX3NiaV9md2Z0X2ZlYXR1cmUgeworCS8qKgorCSAqIEBpZDogRmVhdHVyZSBJ RAorCSAqLworCWVudW0gc2JpX2Z3ZnRfZmVhdHVyZV90IGlkOworCisJLyoqCisJICogQHN1cHBv cnRlZDogQ2hlY2sgaWYgdGhlIGZlYXR1cmUgaXMgc3VwcG9ydGVkIG9uIHRoZSB2Y3B1CisJICoK KwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLCBpZiBub3QgcHJvdmlkZWQgdGhlIGZlYXR1 cmUgaXMgYXNzdW1lZCB0bworCSAqIGJlIHN1cHBvcnRlZAorCSAqLworCWJvb2wgKCpzdXBwb3J0 ZWQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CisKKwkvKioKKwkgKiBAc2V0OiBTZXQgdGhlIGZl YXR1cmUgdmFsdWUKKwkgKgorCSAqIFJldHVybiBTQklfU1VDQ0VTUyBvbiBzdWNjZXNzIG9yIGFu IFNCSSBlcnJvciAoU0JJX0VSUl8qKQorCSAqCisJICogVGhpcyBjYWxsYmFjayBpcyBtYW5kYXRv cnkKKwkgKi8KKwlsb25nICgqc2V0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1f c2JpX2Z3ZnRfY29uZmlnICpjb25mLCB1bnNpZ25lZCBsb25nIHZhbHVlKTsKKworCS8qKgorCSAq IEBnZXQ6IEdldCB0aGUgZmVhdHVyZSBjdXJyZW50IHZhbHVlCisJICoKKwkgKiBSZXR1cm4gU0JJ X1NVQ0NFU1Mgb24gc3VjY2VzcyBvciBhbiBTQkkgZXJyb3IgKFNCSV9FUlJfKikKKwkgKgorCSAq IFRoaXMgY2FsbGJhY2sgaXMgbWFuZGF0b3J5CisJICovCisJbG9uZyAoKmdldCkoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NiaV9md2Z0X2NvbmZpZyAqY29uZiwgdW5zaWduZWQg bG9uZyAqdmFsdWUpOworfTsKKworc3RhdGljIGNvbnN0IGVudW0gc2JpX2Z3ZnRfZmVhdHVyZV90 IGt2bV9md2Z0X2RlZmluZWRfZmVhdHVyZXNbXSA9IHsKKwlTQklfRldGVF9NSVNBTElHTkVEX0VY Q19ERUxFRywKKwlTQklfRldGVF9MQU5ESU5HX1BBRCwKKwlTQklfRldGVF9TSEFET1dfU1RBQ0ss CisJU0JJX0ZXRlRfRE9VQkxFX1RSQVAsCisJU0JJX0ZXRlRfUFRFX0FEX0hXX1VQREFUSU5HLAor CVNCSV9GV0ZUX1BPSU5URVJfTUFTS0lOR19QTUxFTiwKK307CisKK3N0YXRpYyBib29sIGt2bV9m d2Z0X2lzX2RlZmluZWRfZmVhdHVyZShlbnVtIHNiaV9md2Z0X2ZlYXR1cmVfdCBmZWF0dXJlKQor eworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoa3ZtX2Z3ZnRfZGVmaW5l ZF9mZWF0dXJlcyk7IGkrKykgeworCQlpZiAoa3ZtX2Z3ZnRfZGVmaW5lZF9mZWF0dXJlc1tpXSA9 PSBmZWF0dXJlKQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IGt2bV9zYmlfZndmdF9mZWF0dXJlIGZlYXR1cmVzW10gPSB7Cit9 OworCitzdGF0aWMgc3RydWN0IGt2bV9zYmlfZndmdF9jb25maWcgKgora3ZtX3NiaV9md2Z0X2dl dF9jb25maWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBlbnVtIHNiaV9md2Z0X2ZlYXR1cmVfdCBm ZWF0dXJlKQoreworCWludCBpOworCXN0cnVjdCBrdm1fc2JpX2Z3ZnQgKmZ3ZnQgPSB2Y3B1X3Rv X2Z3ZnQodmNwdSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmZWF0dXJlcyk7IGkr KykgeworCQlpZiAoZndmdC0+Y29uZmlnc1tpXS5mZWF0dXJlLT5pZCA9PSBmZWF0dXJlKQorCQkJ cmV0dXJuICZmd2Z0LT5jb25maWdzW2ldOworCX0KKworCXJldHVybiBOVUxMOworfQorCitzdGF0 aWMgaW50IGt2bV9md2Z0X2dldF9mZWF0dXJlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGZl YXR1cmUsCisJCQkJc3RydWN0IGt2bV9zYmlfZndmdF9jb25maWcgKipjb25mKQoreworCXN0cnVj dCBrdm1fc2JpX2Z3ZnRfY29uZmlnICp0Y29uZjsKKworCXRjb25mID0ga3ZtX3NiaV9md2Z0X2dl dF9jb25maWcodmNwdSwgZmVhdHVyZSk7CisJaWYgKCF0Y29uZikgeworCQlpZiAoa3ZtX2Z3ZnRf aXNfZGVmaW5lZF9mZWF0dXJlKGZlYXR1cmUpKQorCQkJcmV0dXJuIFNCSV9FUlJfTk9UX1NVUFBP UlRFRDsKKworCQlyZXR1cm4gU0JJX0VSUl9ERU5JRUQ7CisJfQorCisJaWYgKCF0Y29uZi0+c3Vw cG9ydGVkKQorCQlyZXR1cm4gU0JJX0VSUl9OT1RfU1VQUE9SVEVEOworCisJKmNvbmYgPSB0Y29u ZjsKKworCXJldHVybiBTQklfU1VDQ0VTUzsKK30KKworc3RhdGljIGludCBrdm1fc2JpX2Z3ZnRf c2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGZlYXR1cmUsCisJCQkgICAgdW5zaWduZWQg bG9uZyB2YWx1ZSwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBr dm1fc2JpX2Z3ZnRfY29uZmlnICpjb25mOworCisJcmV0ID0ga3ZtX2Z3ZnRfZ2V0X2ZlYXR1cmUo dmNwdSwgZmVhdHVyZSwgJmNvbmYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlpZiAo KGZsYWdzICYgflNCSV9GV0ZUX1NFVF9GTEFHX0xPQ0spICE9IDApCisJCXJldHVybiBTQklfRVJS X0lOVkFMSURfUEFSQU07CisKKwlpZiAoY29uZi0+ZmxhZ3MgJiBTQklfRldGVF9TRVRfRkxBR19M T0NLKQorCQlyZXR1cm4gU0JJX0VSUl9ERU5JRURfTE9DS0VEOworCisJY29uZi0+ZmxhZ3MgPSBm bGFnczsKKworCXJldHVybiBjb25mLT5mZWF0dXJlLT5zZXQodmNwdSwgY29uZiwgdmFsdWUpOwor fQorCitzdGF0aWMgaW50IGt2bV9zYmlfZndmdF9nZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1 bnNpZ25lZCBsb25nIGZlYXR1cmUsCisJCQkgICAgdW5zaWduZWQgbG9uZyAqdmFsdWUpCit7CisJ aW50IHJldDsKKwlzdHJ1Y3Qga3ZtX3NiaV9md2Z0X2NvbmZpZyAqY29uZjsKKworCXJldCA9IGt2 bV9md2Z0X2dldF9mZWF0dXJlKHZjcHUsIGZlYXR1cmUsICZjb25mKTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OworCisJcmV0dXJuIGNvbmYtPmZlYXR1cmUtPmdldCh2Y3B1LCBjb25mLCB2YWx1 ZSk7Cit9CisKK3N0YXRpYyBpbnQga3ZtX3NiaV9leHRfZndmdF9oYW5kbGVyKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1biwKKwkJCQkgICAgc3RydWN0IGt2bV92Y3B1 X3NiaV9yZXR1cm4gKnJldGRhdGEpCit7CisJaW50IHJldDsKKwlzdHJ1Y3Qga3ZtX2NwdV9jb250 ZXh0ICpjcCA9ICZ2Y3B1LT5hcmNoLmd1ZXN0X2NvbnRleHQ7CisJdW5zaWduZWQgbG9uZyBmdW5j aWQgPSBjcC0+YTY7CisKKwlzd2l0Y2ggKGZ1bmNpZCkgeworCWNhc2UgU0JJX0VYVF9GV0ZUX1NF VDoKKwkJcmV0ID0ga3ZtX3NiaV9md2Z0X3NldCh2Y3B1LCBjcC0+YTAsIGNwLT5hMSwgY3AtPmEy KTsKKwkJYnJlYWs7CisJY2FzZSBTQklfRVhUX0ZXRlRfR0VUOgorCQlyZXQgPSBrdm1fc2JpX2Z3 ZnRfZ2V0KHZjcHUsIGNwLT5hMCwgJnJldGRhdGEtPm91dF92YWwpOworCQlicmVhazsKKwlkZWZh dWx0OgorCQlyZXQgPSBTQklfRVJSX05PVF9TVVBQT1JURUQ7CisJCWJyZWFrOworCX0KKworCXJl dGRhdGEtPmVycl92YWwgPSByZXQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBrdm1f c2JpX2V4dF9md2Z0X2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1f c2JpX2Z3ZnQgKmZ3ZnQgPSB2Y3B1X3RvX2Z3ZnQodmNwdSk7CisJY29uc3Qgc3RydWN0IGt2bV9z YmlfZndmdF9mZWF0dXJlICpmZWF0dXJlOworCXN0cnVjdCBrdm1fc2JpX2Z3ZnRfY29uZmlnICpj b25mOworCWludCBpOworCisJZndmdC0+Y29uZmlncyA9IGtjYWxsb2MoQVJSQVlfU0laRShmZWF0 dXJlcyksIHNpemVvZihzdHJ1Y3Qga3ZtX3NiaV9md2Z0X2NvbmZpZyksCisJCQkJR0ZQX0tFUk5F TCk7CisJaWYgKCFmd2Z0LT5jb25maWdzKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKGZlYXR1cmVzKTsgaSsrKSB7CisJCWZlYXR1cmUgPSAmZmVhdHVy ZXNbaV07CisJCWNvbmYgPSAmZndmdC0+Y29uZmlnc1tpXTsKKwkJaWYgKGZlYXR1cmUtPnN1cHBv cnRlZCkKKwkJCWNvbmYtPnN1cHBvcnRlZCA9IGZlYXR1cmUtPnN1cHBvcnRlZCh2Y3B1KTsKKwkJ ZWxzZQorCQkJY29uZi0+c3VwcG9ydGVkID0gdHJ1ZTsKKworCQljb25mLT5mZWF0dXJlID0gZmVh dHVyZTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQga3ZtX3NiaV9leHRfZndm dF9kZWluaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1fc2JpX2Z3ZnQg KmZ3ZnQgPSB2Y3B1X3RvX2Z3ZnQodmNwdSk7CisKKwlrZnJlZShmd2Z0LT5jb25maWdzKTsKK30K Kworc3RhdGljIHZvaWQga3ZtX3NiaV9leHRfZndmdF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUpCit7CisJaW50IGk7CisJc3RydWN0IGt2bV9zYmlfZndmdCAqZndmdCA9IHZjcHVfdG9fZndm dCh2Y3B1KTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZlYXR1cmVzKTsgaSsrKQor CQlmd2Z0LT5jb25maWdzW2ldLmZsYWdzID0gMDsKK30KKworY29uc3Qgc3RydWN0IGt2bV92Y3B1 X3NiaV9leHRlbnNpb24gdmNwdV9zYmlfZXh0X2Z3ZnQgPSB7CisJLmV4dGlkX3N0YXJ0ID0gU0JJ X0VYVF9GV0ZULAorCS5leHRpZF9lbmQgPSBTQklfRVhUX0ZXRlQsCisJLmhhbmRsZXIgPSBrdm1f c2JpX2V4dF9md2Z0X2hhbmRsZXIsCisJLmluaXQgPSBrdm1fc2JpX2V4dF9md2Z0X2luaXQsCisJ LmRlaW5pdCA9IGt2bV9zYmlfZXh0X2Z3ZnRfZGVpbml0LAorCS5yZXNldCA9IGt2bV9zYmlfZXh0 X2Z3ZnRfcmVzZXQsCit9OwotLSAKMi40OS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2 QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1yaXNjdgo=