From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 1C42126AF6 for ; Thu, 16 Jan 2025 08:51:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737017490; cv=none; b=BPTUiqcn4cbKUed3I0jpe8Tz7YRYdSUxnqMa5eT2LoVgIEppzBL0EO8xbs1ZZFAia9CVmmDWhnDJwVitKL+mzZu5xoIzJxJMO6CxaaoAzwgfqWkLk1/7/vrltA2XNoPgMnCsADxWNEqqPn3pOB1KpoMDsNJF6FWFV6QJBe/geRg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737017490; c=relaxed/simple; bh=FFnWxVgBfmkxOw1y7WfzcmhWlvlCPve9v5pbf9oHDrM=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=eysvAErpEbv7uvDuyjyctaIUhr9eDMDUa0Hf7mj1f/QG2CJ60Bv8+1Ug2iKjrdWnCBEFPbITHqL43ZIPFFMsXkmVj9yWobp5jNi5xraIurCMklEkuedRZyC1grOqH6GyDFxu0fyeQOCLsA+r3ePi1eNwWmdt6sGnVXsNQPPvtQY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=FDOLHRdF; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="FDOLHRdF" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-385dece873cso348461f8f.0 for ; Thu, 16 Jan 2025 00:51:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1737017486; x=1737622286; darn=lists.linux.dev; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=vdYGACSqmD06pBhAeXOqTAZ8uvEoU3CDJANNyc9PH5I=; b=FDOLHRdFTH2qnqRbphzGc6+vJze7ec4O+GWwOAc1iuctqnBWTcIVHnmWZIWINxPAbL pD93Ll4eS1K9qU2+MqNCSGJj2ZpakesR1eLZLz272fMyU9C0vdYkhlbwWf/mEQ75089W dlRwP/5J3Lffajwnag141PjkEbVNmfcbEmYzFmriQoOKmpblNXdgZSUzMInGHJaUeLCq X8s2+zYPLK/OIyGFaLd5YSVyyjW2LmLIj41rH1yaK6oG6XwCo5A1mOqahWNtVC4jBidt wQL6eXlLpt0oAFCIyQoVzbeEtE9KpG1P99udw79pxya5DXc8EFLkjU67l8VFfOrGj4SB URaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737017486; x=1737622286; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=vdYGACSqmD06pBhAeXOqTAZ8uvEoU3CDJANNyc9PH5I=; b=qCEr+mFGCR3ssN8BKbVFZbo9I2kJFKrSTo0lyVJBKqVhQv2cqApijSa405Mm3TfIvY /0fIFiA4h+ezN9SEbZgUvqpBKlHCDkCEnv9z4AIxwL2Ztrex7RYV+Ay0VaszrLj3XBMc 0pGslQNZb0QmBiHmeG+Da1gNolWh/AR6SQWe9C/Tauu763yFWbI+fvhmeqkUXYqA/jj2 3RsmA6Pxt2lJI6L19W6ozVmLgkEL6SRkNejmyeWEX+8Uv08kjg2IfCSiiqReKW/zNn+n U3Zp6ZKXdXzRjih3jotWCaGe0Hfe2hHfr/1UGOow6FTg7xjM2gj2gp2I1Xvdmr1JATQH y2lQ== X-Forwarded-Encrypted: i=1; AJvYcCVWqSPqSWWmwofK+zBUVy4/HpuEB1kVsvlttQ31KdiTrqWI8BaN4l2KUyjUWHMA5Eg14MZJ5g==@lists.linux.dev X-Gm-Message-State: AOJu0YwUhUvOwywmL6eeX0nHcjXULF/5vn6yNb9PkbCAnarTTwcM/n0v N36x44IsKhSWSMns4bRhtyq0voI+E5gMuiMKoLXNvgJmsdnCo/7AFpdo+JsKKpI= X-Gm-Gg: ASbGnct+jWRdg3c8dM3IupIfhmRIFdSybbHGUZWTw8Pqti0kcszCv0Tq+mH3TJ6jig0 IkrR+fqrQbWZ3Ri1GbkYXPbcUQae9FOtN9zekSbEHLrqhqD5BF0uzf4wPlZVfU/UtT1Bt4z7ySH +eN+U5OokMqaFATSbKca/FN2hV+bqBCzAzh+fzOpcNeH+vYSuXD9lLdBGXFr2NvgsNj0bP45j7V VG1MQvyIWL0b5AMmHmvM5JAMkae9fangFQ2mOvWCErZfxmpTVoijihtfKjPqcFUQQmG6nb2GZXQ OIgBiWYssma98FpQ2dOQNvEDZyAUN4324NBaiAC0bA== X-Google-Smtp-Source: AGHT+IEsbulHh7PZVHSAEnmDh38IVvfobmbwOpTAusRtk5MN3iwIfCnGsZ4ArTaC23pmkWtqt4FHJQ== X-Received: by 2002:a5d:47c4:0:b0:385:ed16:c8b with SMTP id ffacd0b85a97d-38a87309d21mr11955948f8f.23.1737017486382; Thu, 16 Jan 2025 00:51:26 -0800 (PST) Received: from localhost (2001-1ae9-1c2-4c00-20f-c6b4-1e57-7965.ip6.tmcz.cz. [2001:1ae9:1c2:4c00:20f:c6b4:1e57:7965]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4c3428sm19402764f8f.87.2025.01.16.00.51.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jan 2025 00:51:25 -0800 (PST) Date: Thu, 16 Jan 2025 09:51:25 +0100 From: Andrew Jones To: Milan =?utf-8?B?xJBva2nEhw==?= Cc: linux-riscv@lists.infradead.org, jgross@suse.com, aou@eecs.berkeley.edu, Milan.Djokic@rt-rk.com, rafael.j.wysocki@intel.com, linux-kernel@vger.kernel.org, oleksandr_tyshchenko@epam.com, iommu@lists.linux.dev, sstabellini@kernel.org, palmer@dabbelt.com, paul.walmsley@sifive.com, xen-devel@lists.xenproject.org, Slavisa.Petrovic@rt-rk.com, takakura@valinux.co.jp Subject: Re: [PATCH] riscv: Add initial Xen guest support for RISC-V Message-ID: <20250116-aa9eadde9279e66dbc01c705@orel> References: <20250114-316084c962eb867c0b681043@orel> Precedence: bulk X-Mailing-List: iommu@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Wed, Jan 15, 2025 at 08:04:05PM +0100, Milan Đokić wrote: > Hello Andrew, > > On Tue, Jan 14, 2025 at 7:18 PM Andrew Jones wrote: > > > > On Tue, Jan 14, 2025 at 05:09:36PM +0100, Milan Djokic wrote: ... > > > +++ b/arch/riscv/xen/hypercall.S > > > @@ -0,0 +1,71 @@ > > > +/* SPDX-License-Identifier: GPL-2.0 */ > > > +#include > > > +#include > > > +#include > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_event_channel_op); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_grant_table_op); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_xen_version); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_console_io); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_sched_op); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_hvm_op); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_memory_op); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_physdev_op); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_vcpu_op); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_platform_op_raw); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_multicall); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_vm_assist); > > > +EXPORT_SYMBOL_GPL(HYPERVISOR_dm_op); > > > +EXPORT_SYMBOL_GPL(privcmd_call); > > > +#define SBI_ECALL 0xE > > > > Shouldn't this be 0xA000007, i.e. the SBI firmware specific extension > > for Xen. Otherwise why refer to SBI? Note, '0xE' is an invalid, legacy > > extension ID in SBI. > > > Hypercall is triggered through SBI and we defined 0xE just as an > SBI_ECALL ID on Xen side for hypercall handling (among other operation > IDs), so we're not referring to some standard /legacy ID here, just > utilizing SBI for hypercall handling. If the SBI specified EIDs and binary encoding aren't used, then the hypercalls aren't "triggered through SBI", Xen is just doing its own thing on an ecall. Xen doesn't have to implement SBI at all, but if it wants to provide SBI services, as well as its own hypercalls, then the hypercalls should be encoded in the same way as SBI functions and an EID allowed by the SBI specification for hypervisor-specific functions should be used. For Xen, that EID is already specified and it's 0xA000007. > Is this specific ID (0xE) not allowed to be used on the kernel side > for some reason? If that is the case, we can use any other ID, > including the one which you suggested. > Linux can use any ID, and Xen can decide what that ID is, but, if Xen wants to implement SBI, then Xen can't use 0xE, because that EID is not allowed by the spec for the purpose of hypercalls. Thanks, drew 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 A2AE2C02180 for ; Thu, 16 Jan 2025 08:51: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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=94or+juqvBw10TGTifXINgnB9b/O1lFr3oDRpC1rDMI=; b=O7edyDRhipJ7SS iMs/SEz298T87JsQUfgdCg22M4vp/G8I6wUMjOf6XpxIUXStS4yYVdMKImYKAuj9F8W4G76YDZl/0 +QKwi4FlRQdqPoBvN7QKvD0T687MnNcksZuSiCGBeYlWuW7rfyxZifklhe0T/8llTF7EJr8rqwjWv I3BhWxiFR3GDu0gqfFewka3/ZVJFCp6VCQsCwz/0BJH67iCOJ1KJFJzAyrBthUGW/ivN3wQ770Cdg +pABn0TOeEnO5g7RzAK97E5dudByiJEdLv0JvqmGN3Gxv4Y1HRl3rOjLB1SVRvVxAkjL3u06KA1mR FQgFiBYSLGRJpBKO7qPw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tYLb8-0000000EGwY-37L6; Thu, 16 Jan 2025 08:51:30 +0000 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tYLb6-0000000EGw6-27S4 for linux-riscv@lists.infradead.org; Thu, 16 Jan 2025 08:51:29 +0000 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-385dece873cso348460f8f.0 for ; Thu, 16 Jan 2025 00:51:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1737017486; x=1737622286; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=vdYGACSqmD06pBhAeXOqTAZ8uvEoU3CDJANNyc9PH5I=; b=gYtjkrNnmmdVUeKXKeOZbsPIY9ZieJBJ/Ut764HCx+LdeYw2FeJNXhOwOxTVfXHyaS amcLP3qccbvE/7jwbdH0+sCsw9MS9SumuBC+VyirS1PPAX8yMok433W4BqTcma29HOxV ULn0/6RP7QfByb8GuxTAMsOU5UK5TI43aD8Mw/wOfsA0vhzr/nee6SqWeqyrih1Xw2QC xka6WJxFMEkJKlLurbvr5ppIukxLGbOGO6YommjciL47C/sUHxbOsMvnoJ8brRU1mmw0 SsXgsBt7fYdbrsqcC+p9n2XCkjAEpUU1lgcPBPOeQOOevJtPmwpy7ARfKIAgN47A+C7m NocA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737017486; x=1737622286; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=vdYGACSqmD06pBhAeXOqTAZ8uvEoU3CDJANNyc9PH5I=; b=is0ZZhIVGEiPKMroM7wN/uX0HhzSZsDMG6ZA6R4g/3I67IhmhlapNiPHa9iIrIgzap xcIGsfUD6vUifDRmuv3AlVJjWJE2upMNqXmu/ED3L3leRLIeu5wi1yfaLoPWKlsMli79 2/Y7HecwgJtMGO0ZUoIIi3vJfDB825srPeCIVtGJJ02s/KO1j8t4rnDysAusYz2OihSi GWOXQa8RHA8/oZVLt1XqjdqmE7CRt1I/F4Fz4nJXMjjD1qGyhPlTBe2V7dpAU6Qu4lBS l64puI/vbR0Fo52VpVgN+ZThUsKPA/BrCmMxxXDnQZu66ITlIOkNVA9F2UfKcW1YBUJk TJHg== X-Gm-Message-State: AOJu0YwPLg/l/JAEwRKgFdSE15TyvzjR5p+qF5gpiCKoU8LUfyJtpMWC p4Sa19IbRODQ/xIEw/3DqTgPJFGNEkWNjHksG3REtRDfnHED2gL5PTWLlHQ7vdQ= X-Gm-Gg: ASbGncsro3CuNscVCOZatKxkKZv1+NY4iXrrUWA1/1c/8b3Tkzj2LPhXcMyERivciu8 q6CN9WyzIM0uamUylO2l0KgqjrmpeiGUaXoDOp6BjSoWviwZBr7KRVShCE2PSUDlNTkbViNxaJM OC5apx81X69EfNTmzvYtr9w85XpidLBnZ+vU1sCBxMBExJL72LRvMYQQKSVgbZJ3SLDkIkUNUtv CnnRFac8jHPJc8OyYnzJHRG6BSJ2AFJMln0Bo/WEkqoXnj+enZSu8Nb7sMaAMLP6III3NhHzWX8 sOTmp8bjP7MWcFlBliuyj7FyWF7LU09TMu8CBnDFOA== X-Google-Smtp-Source: AGHT+IEsbulHh7PZVHSAEnmDh38IVvfobmbwOpTAusRtk5MN3iwIfCnGsZ4ArTaC23pmkWtqt4FHJQ== X-Received: by 2002:a5d:47c4:0:b0:385:ed16:c8b with SMTP id ffacd0b85a97d-38a87309d21mr11955948f8f.23.1737017486382; Thu, 16 Jan 2025 00:51:26 -0800 (PST) Received: from localhost (2001-1ae9-1c2-4c00-20f-c6b4-1e57-7965.ip6.tmcz.cz. [2001:1ae9:1c2:4c00:20f:c6b4:1e57:7965]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4c3428sm19402764f8f.87.2025.01.16.00.51.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jan 2025 00:51:25 -0800 (PST) Date: Thu, 16 Jan 2025 09:51:25 +0100 From: Andrew Jones To: Milan =?utf-8?B?xJBva2nEhw==?= Cc: linux-riscv@lists.infradead.org, jgross@suse.com, aou@eecs.berkeley.edu, Milan.Djokic@rt-rk.com, rafael.j.wysocki@intel.com, linux-kernel@vger.kernel.org, oleksandr_tyshchenko@epam.com, iommu@lists.linux.dev, sstabellini@kernel.org, palmer@dabbelt.com, paul.walmsley@sifive.com, xen-devel@lists.xenproject.org, Slavisa.Petrovic@rt-rk.com, takakura@valinux.co.jp Subject: Re: [PATCH] riscv: Add initial Xen guest support for RISC-V Message-ID: <20250116-aa9eadde9279e66dbc01c705@orel> References: <20250114-316084c962eb867c0b681043@orel> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250116_005128_548857_581980D5 X-CRM114-Status: GOOD ( 21.51 ) 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 T24gV2VkLCBKYW4gMTUsIDIwMjUgYXQgMDg6MDQ6MDVQTSArMDEwMCwgTWlsYW4gxJBva2nEhyB3 cm90ZToKPiBIZWxsbyBBbmRyZXcsCj4gCj4gT24gVHVlLCBKYW4gMTQsIDIwMjUgYXQgNzoxOOKA r1BNIEFuZHJldyBKb25lcyA8YWpvbmVzQHZlbnRhbmFtaWNyby5jb20+IHdyb3RlOgo+ID4KPiA+ IE9uIFR1ZSwgSmFuIDE0LCAyMDI1IGF0IDA1OjA5OjM2UE0gKzAxMDAsIE1pbGFuIERqb2tpYyB3 cm90ZToKLi4uCj4gPiA+ICsrKyBiL2FyY2gvcmlzY3YveGVuL2h5cGVyY2FsbC5TCj4gPiA+IEBA IC0wLDAgKzEsNzEgQEAKPiA+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w ICovCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPgo+ID4gPiArI2luY2x1ZGUgPGFz bS9hc3NlbWJsZXIuaD4KPiA+ID4gKyNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL3hlbi5oPgo+ID4g PiArRVhQT1JUX1NZTUJPTF9HUEwoSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wKTsKPiA+ID4g K0VYUE9SVF9TWU1CT0xfR1BMKEhZUEVSVklTT1JfZ3JhbnRfdGFibGVfb3ApOwo+ID4gPiArRVhQ T1JUX1NZTUJPTF9HUEwoSFlQRVJWSVNPUl94ZW5fdmVyc2lvbik7Cj4gPiA+ICtFWFBPUlRfU1lN Qk9MX0dQTChIWVBFUlZJU09SX2NvbnNvbGVfaW8pOwo+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwo SFlQRVJWSVNPUl9zY2hlZF9vcCk7Cj4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChIWVBFUlZJU09S X2h2bV9vcCk7Cj4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChIWVBFUlZJU09SX21lbW9yeV9vcCk7 Cj4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChIWVBFUlZJU09SX3BoeXNkZXZfb3ApOwo+ID4gPiAr RVhQT1JUX1NZTUJPTF9HUEwoSFlQRVJWSVNPUl92Y3B1X29wKTsKPiA+ID4gK0VYUE9SVF9TWU1C T0xfR1BMKEhZUEVSVklTT1JfcGxhdGZvcm1fb3BfcmF3KTsKPiA+ID4gK0VYUE9SVF9TWU1CT0xf R1BMKEhZUEVSVklTT1JfbXVsdGljYWxsKTsKPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKEhZUEVS VklTT1Jfdm1fYXNzaXN0KTsKPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKEhZUEVSVklTT1JfZG1f b3ApOwo+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwocHJpdmNtZF9jYWxsKTsKPiA+ID4gKyNkZWZp bmUgU0JJX0VDQUxMIDB4RQo+ID4KPiA+IFNob3VsZG4ndCB0aGlzIGJlIDB4QTAwMDAwNywgaS5l LiB0aGUgU0JJIGZpcm13YXJlIHNwZWNpZmljIGV4dGVuc2lvbgo+ID4gZm9yIFhlbi4gT3RoZXJ3 aXNlIHdoeSByZWZlciB0byBTQkk/IE5vdGUsICcweEUnIGlzIGFuIGludmFsaWQsIGxlZ2FjeQo+ ID4gZXh0ZW5zaW9uIElEIGluIFNCSS4KPiA+Cj4gSHlwZXJjYWxsIGlzIHRyaWdnZXJlZCB0aHJv dWdoIFNCSSBhbmQgd2UgZGVmaW5lZCAweEUganVzdCBhcyBhbgo+IFNCSV9FQ0FMTCBJRCBvbiBY ZW4gc2lkZSBmb3IgaHlwZXJjYWxsIGhhbmRsaW5nIChhbW9uZyBvdGhlciBvcGVyYXRpb24KPiBJ RHMpLCBzbyB3ZSdyZSBub3QgcmVmZXJyaW5nIHRvIHNvbWUgc3RhbmRhcmQgL2xlZ2FjeSBJRCBo ZXJlLCBqdXN0Cj4gdXRpbGl6aW5nIFNCSSBmb3IgaHlwZXJjYWxsIGhhbmRsaW5nLgoKSWYgdGhl IFNCSSBzcGVjaWZpZWQgRUlEcyBhbmQgYmluYXJ5IGVuY29kaW5nIGFyZW4ndCB1c2VkLCB0aGVu IHRoZQpoeXBlcmNhbGxzIGFyZW4ndCAidHJpZ2dlcmVkIHRocm91Z2ggU0JJIiwgWGVuIGlzIGp1 c3QgZG9pbmcgaXRzIG93bgp0aGluZyBvbiBhbiBlY2FsbC4gWGVuIGRvZXNuJ3QgaGF2ZSB0byBp bXBsZW1lbnQgU0JJIGF0IGFsbCwgYnV0IGlmCml0IHdhbnRzIHRvIHByb3ZpZGUgU0JJIHNlcnZp Y2VzLCBhcyB3ZWxsIGFzIGl0cyBvd24gaHlwZXJjYWxscywgdGhlbgp0aGUgaHlwZXJjYWxscyBz aG91bGQgYmUgZW5jb2RlZCBpbiB0aGUgc2FtZSB3YXkgYXMgU0JJIGZ1bmN0aW9ucyBhbmQKYW4g RUlEIGFsbG93ZWQgYnkgdGhlIFNCSSBzcGVjaWZpY2F0aW9uIGZvciBoeXBlcnZpc29yLXNwZWNp ZmljCmZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZC4gRm9yIFhlbiwgdGhhdCBFSUQgaXMgYWxyZWFk eSBzcGVjaWZpZWQgYW5kCml0J3MgMHhBMDAwMDA3LgoKPiBJcyB0aGlzIHNwZWNpZmljIElEICgw eEUpIG5vdCBhbGxvd2VkIHRvIGJlIHVzZWQgb24gdGhlIGtlcm5lbCBzaWRlCj4gZm9yIHNvbWUg cmVhc29uPyBJZiB0aGF0IGlzIHRoZSBjYXNlLCB3ZSBjYW4gdXNlIGFueSBvdGhlciBJRCwKPiBp bmNsdWRpbmcgdGhlIG9uZSB3aGljaCB5b3Ugc3VnZ2VzdGVkLgo+CgpMaW51eCBjYW4gdXNlIGFu eSBJRCwgYW5kIFhlbiBjYW4gZGVjaWRlIHdoYXQgdGhhdCBJRCBpcywgYnV0LCBpZiBYZW4Kd2Fu dHMgdG8gaW1wbGVtZW50IFNCSSwgdGhlbiBYZW4gY2FuJ3QgdXNlIDB4RSwgYmVjYXVzZSB0aGF0 IEVJRCBpcwpub3QgYWxsb3dlZCBieSB0aGUgc3BlYyBmb3IgdGhlIHB1cnBvc2Ugb2YgaHlwZXJj YWxscy4KClRoYW5rcywKZHJldwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1yaXNjdgo=