From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 C292EB65E for ; Tue, 13 Feb 2024 16:46:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707842810; cv=none; b=GJKiBGw5w2x2gnb3wIOGcG73Bn1Zk6ZrHDSBI13+defn0s0V2PD5s1H76s9OIJmcQqII/g6+ROJaFovMu+3DsgRQWCS/59xMQ65XQI+NU/y2PIQKT2Lc9IUggHekXWQtCaZDxW2QXYXNsk/9TuLNi3A5r+h8EIUsGvnguh/sDJk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707842810; c=relaxed/simple; bh=tpR6mme3U+c+hWwnrFLNhjYtJU3ak8FHR/XxFoZpt7A=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=inS/jKXQvxci/6sucMORYXVkJ3U3JjMKw6t3egIBuP9Dlw1aXuwh6IhqmZ3HKVeEZfJ542PrehgccXqpKzo73w/WX6oXyQUxmXbJPujeNRv2gsJUXGR2ZpcuSY5Cu39zMzDtxmJnk69M4MxwDgj+iQZL5MC2CNXebM1B6Loplpo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=QHeX5IWT; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="QHeX5IWT" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-410acf9e776so63295e9.1 for ; Tue, 13 Feb 2024 08:46:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1707842807; x=1708447607; 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=ucHnqK65dNySMm0vCRPbNkUFL42gA9gziXTQqFiNUvw=; b=QHeX5IWTqEp+oKym4UQAeP7/PDKOs+/EgOlZZpKG1DlC0tkcI1LHaHXEFcRGGDLPSt ElFMcVRan4UpH47qaWhD4wjtmAReAOme3CjUhob2le194oBAIeOJvo2Iy2p7AympXHv8 9QqhwdHJ/YRGEnbaV1Up7/L7QL15CBP1qOJNSmmZsWZNtszXa98wxus7Yx1Y/DEE6+wa inzqZpt0mFUSLXrYi7XMnMZGlXrpwBhWy73Ld2/X8+qYno8m3RDVLJc+YzbSCwgpkaER EkoYdZpuQebBHG0Lj1jO3f/4+OqpdwT7e9PgP+yofp3IGPqetBWRf1XlP0NB0dLCGXxj k/5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707842807; x=1708447607; 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=ucHnqK65dNySMm0vCRPbNkUFL42gA9gziXTQqFiNUvw=; b=HiY8okrjy14dAwj38SyEmOlz+D4q6ZXxy57ar/XjO98AspWIbeppAKb1T/rkrK8kUh yKst4M7a4DNZUDHMZR3m5CFvq4NNl3C31DD7RPNatJXGSZCOF1+RABJgdXmjQlYwM2hv wHGTzpP6muIvck0LBB03iwt4bqDSfd+0BagzyOzXEHkunR0iwjvBmSZq6xEoBPY1t6Mp dHZMl1L5FYmAQc8jGhR66AId2GjqWsrj/lP3o3j3GhRE5Td0cuDHC2JlKgqbHU+Jif/w yeW+xyNtXgkoogVP58BRlN8IVJDP/50+JyHbELBNaGBZR72KFYQffKdba7yGXG4TEARW G77Q== X-Gm-Message-State: AOJu0YyNurdJM1LdRMoRhuqDnCEGcHbjihmjFB1IYdFc7+E+iZUeKJmH GDWKhsZ9T84pO7loV/O7mElz9TQj4aajiwf0r0jZQSJ8574+mstBMGT2Gq3bKQ== X-Google-Smtp-Source: AGHT+IG6slvUXaUw0vRKI8A9me0rjK09WsK8zsiKRNl9I6idacUaF6C041HykWyYM6oWpHYw96xUNw== X-Received: by 2002:a05:600c:b86:b0:410:87e5:42da with SMTP id fl6-20020a05600c0b8600b0041087e542damr20895wmb.2.1707842806913; Tue, 13 Feb 2024 08:46:46 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCWhWvrxvC7bBlOC2fdVAat9ianVn3v5ImA51f/ekh2Bn+WN6B+PRgMutn59Rh/G5n3wTsJ5N4htSPrmBzmmAbFz7eyO91qB/xLy9rcUWz8DHzWHN8VLO7V/+ydIILmXKrcSLvUHccEs+Z8BJdWUHbYm6KWQS3AZWvzuGCNo1UcQudJpAwLZny/dlVCWPIPxUsFQfyktpplDMmcA6OvQeozfvuRsm8tITPhGEH44YbUMRCctToqftPG30SjW7urn95FS0hlu8UnE/7uYHPbrIVYSsDzALRRkbh8uEfKkl6+JDfI/+0/j8zoNI9fxoHAAJj5cTJ7eT6k39+fsjqKRvR0hYubmkWBHXgU4GLrJLW4hIOM+sGUzIRMdBUomtsW8X4q7jS99vGKdFUjcVUKOAqTtwIrhy6vhc1cqqFT9AB/n6/gt1aIGHBtlFv8rQJPkTrahN1pDsuBrvgKewcS0H04/FkjAN2LlRrumoqSHllKsTHg+7RgEtA== Received: from google.com (185.83.140.34.bc.googleusercontent.com. [34.140.83.185]) by smtp.gmail.com with ESMTPSA id m41-20020a05600c3b2900b00411d0b58056sm886307wms.5.2024.02.13.08.46.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Feb 2024 08:46:46 -0800 (PST) Date: Tue, 13 Feb 2024 16:46:42 +0000 From: Mostafa Saleh To: Jason Gunthorpe Cc: iommu@lists.linux.dev, Joerg Roedel , linux-arm-kernel@lists.infradead.org, Robin Murphy , Will Deacon , Lu Baolu , Jean-Philippe Brucker , Joerg Roedel , Moritz Fischer , Moritz Fischer , Michael Shavit , Nicolin Chen , patches@lists.linux.dev, Shameer Kolothum , Zhangfei Gao Subject: Re: [PATCH v5 03/17] iommu/arm-smmu-v3: Move arm_smmu_rmr_install_bypass_ste() Message-ID: References: <0-v5-cd1be8dd9c71+3fa-smmuv3_newapi_p1_jgg@nvidia.com> <3-v5-cd1be8dd9c71+3fa-smmuv3_newapi_p1_jgg@nvidia.com> <20240213161601.GB1088888@nvidia.com> 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: <20240213161601.GB1088888@nvidia.com> On Tue, Feb 13, 2024 at 12:16:01PM -0400, Jason Gunthorpe wrote: > On Tue, Feb 13, 2024 at 03:37:43PM +0000, Mostafa Saleh wrote: > > Hi Jason, > > > > On Tue, Feb 06, 2024 at 11:12:40AM -0400, Jason Gunthorpe wrote: > > > Logically arm_smmu_init_strtab() is the function that allocates and > > > populates the stream table with the initial value of the STEs. After this > > > function returns the stream table should be fully ready. > > > > > > arm_smmu_rmr_install_bypass_ste() adjusts the initial stream table to force > > > any SIDs that the FW says have IOMMU_RESV_DIRECT to use bypass. This > > > ensures there is no disruption to the identity mapping during boot. > > > > > > Put arm_smmu_rmr_install_bypass_ste() into arm_smmu_init_strtab(), it > > > already executes immediately after arm_smmu_init_strtab(). > > > > > > No functional change intended. > > > > I think arm_smmu_init_strtab is quite low level to abstract FW configuration in it. > > For example in KVM[1] we'd re-use a big part of this driver and rely on similar > > low-level functions. But no strong opinion. > > I'm happy to drop this patch, if no strong opinion I will leave it > > > [1] https://lore.kernel.org/kvmarm/20230201125328.2186498-1-jean-philippe@linaro.org/ > > I saw this but I didn't try to figure out too much what it is > doing.. It looks like a new iommu driver that re-uses alot of the > datastructures of SMMU but has a different HW facing API based on > hypercalls? Yes, this is an implementation for the SMMUv3 driver in EL2 in KVM that is needed for DMA isolation for Protected KVM(pKVM) as the host is untrusted in this case and can attack the hypervisor through DMA. This is similar to the kernel driver but with a bunch of tricks such as page table allocation, power management and more. Also we have some plans to extend it to KVM guests, (Initially I was considering KVM-VFIO device but now with the new iommufd stuff, it might fit in there) > It seems interesting, but my knee jerk reaction would be that a new > iommu driver proposal needs to implement the new iommu core APIs, not > the old stuff. IMHO, when this progresses past a RFC it needs to come > as a proper submission of just the iommu driver, in the normal way. > > I also wonder about the wisdom of sharing so much code. Code sharing > is not unconditionally good if it doesn't have a robust abstraction.. > The idea is that as the hardware is common and most of the dt binding also, we shouldn’t really reinvent the wheel, so this series moves the common code for the page-table library to be shared with EL1/EL2 and for HW/FW probe and init to be shared between the kernel drivers and adds a lot of the infrastructure for IOMMUs in the hypervisor. Thanks, Mostafa 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 2AFFFC4829F for ; Tue, 13 Feb 2024 16:47:06 +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=XjCMZshQoghU+oPTWnPOyuCCk+TOz8QW8fjUUUUb9aA=; b=ReF1+rTVwpyusc wWldUWMOHtYhLseEBHYtB9KG9uErOLx3OqAFARutD+7nk+PlcenEPKsIZ8ZRbDkdTP/98Jy16jAgq PSDV5k3MdIJSwc6odoxl9vxOK4NNfeHkxBrAyIKjjTNkATdzg8UnHX2P1iyDs3brZr1tZs9FJavdp Eo5Hp3UBqRdhZHTBYRMrj2H0fkh6L65JpBF7j+0n79KkOywmihlBSWlYbd5Y1OIsLX6itBbh5dHpR tHe04rDbeWGqvhvDHRY3JZUqmmVNDCVeyTF6LzFQzX/LtiRSd1rCcwpFWL+wlX7B/kQa4jePihCf3 6ukMisu5/PhaZRK88Uzg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rZvvp-0000000A1KE-3cn6; Tue, 13 Feb 2024 16:46:53 +0000 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rZvvm-0000000A1Ii-3uau for linux-arm-kernel@lists.infradead.org; Tue, 13 Feb 2024 16:46:52 +0000 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-410cf70a057so64255e9.0 for ; Tue, 13 Feb 2024 08:46:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1707842807; x=1708447607; 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=ucHnqK65dNySMm0vCRPbNkUFL42gA9gziXTQqFiNUvw=; b=HrkbhE6ilcM7rdqoxW2z+yeFQ86vKzn4ZI6ziNXOVSkbVPRo/Z+lSet5qpuaFtlWev Ti8WAjXEpwuPe18A1TAmS85rA1IXTw0dGkM02wSnGb3HjzGiU/TldFuKipfyfZW2s3Nv zgkXKBDUpTNfvxGe1WHYHW7PycWJ6YVb1VcVzgOBHaysaNR7lj2jQdfPpGM8t1PDlbNv i62U76KNpyU+1e5kDU/NJXWay47Kgv8z6RU3UnU63jvBaOyGHO10+IHHX4vuRV9dCBDl QSHZm8Vwtv5DPLWXXQ5YpvlSrsTEEDJlt9gbH6Wx3GlIViXN1GYZeG0VaK334+FF5BUu 5W/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707842807; x=1708447607; 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=ucHnqK65dNySMm0vCRPbNkUFL42gA9gziXTQqFiNUvw=; b=CR5MrQVlNlNHqxv0Pjo3tGaHe6b+1KhoB4lNqzdO/gBUHyK+Iq92PQneNyVJ0b6D6K IVUZRcNIopPFn0VLne+7PRUoxFIXUkLlfx6TA0jE1qIdfy3IT+JtzMOFrL0pv86TVFz4 oVvkw5d2YZDnHjWvEjY3m1L8DW/cbZF87BfuZUcioAHD63MD9DWLPuybICIDpyQ2HEBt kyoR3pUNAUkhGlrdlUfkIv3RiBH02wDme43OQW7eO7ASFvqNGnRpEhGUYHjo0fiFG2LI JwGhl+341RX5zT14/8TMYyrqV37r9CkNsk7vs2saZ5XyJ74moEVrOacLLvqCi4Xjtlvt AQOQ== X-Forwarded-Encrypted: i=1; AJvYcCVhCbZflO+zF2uqyZrMj+p6IrlVbP/ny4YkvGVFE7Ru6xEHHpf3u199Hsy9s9D80pLd8T6CSjorVSZaMk3z2yDzop8QlK+o1DyFwOMfAmlo62F8gMo= X-Gm-Message-State: AOJu0YxnDm+ASEiVx8eG0oZ5RwUaL+JA7cpBONFnHxGW5roZU+/UXy9k o7pc9c60PDOI703lC5LQlPs3PzYf140UAI4q0GQeXwNgdJFszcINqiizZnVRHA== X-Google-Smtp-Source: AGHT+IG6slvUXaUw0vRKI8A9me0rjK09WsK8zsiKRNl9I6idacUaF6C041HykWyYM6oWpHYw96xUNw== X-Received: by 2002:a05:600c:b86:b0:410:87e5:42da with SMTP id fl6-20020a05600c0b8600b0041087e542damr20895wmb.2.1707842806913; Tue, 13 Feb 2024 08:46:46 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCWhWvrxvC7bBlOC2fdVAat9ianVn3v5ImA51f/ekh2Bn+WN6B+PRgMutn59Rh/G5n3wTsJ5N4htSPrmBzmmAbFz7eyO91qB/xLy9rcUWz8DHzWHN8VLO7V/+ydIILmXKrcSLvUHccEs+Z8BJdWUHbYm6KWQS3AZWvzuGCNo1UcQudJpAwLZny/dlVCWPIPxUsFQfyktpplDMmcA6OvQeozfvuRsm8tITPhGEH44YbUMRCctToqftPG30SjW7urn95FS0hlu8UnE/7uYHPbrIVYSsDzALRRkbh8uEfKkl6+JDfI/+0/j8zoNI9fxoHAAJj5cTJ7eT6k39+fsjqKRvR0hYubmkWBHXgU4GLrJLW4hIOM+sGUzIRMdBUomtsW8X4q7jS99vGKdFUjcVUKOAqTtwIrhy6vhc1cqqFT9AB/n6/gt1aIGHBtlFv8rQJPkTrahN1pDsuBrvgKewcS0H04/FkjAN2LlRrumoqSHllKsTHg+7RgEtA== Received: from google.com (185.83.140.34.bc.googleusercontent.com. [34.140.83.185]) by smtp.gmail.com with ESMTPSA id m41-20020a05600c3b2900b00411d0b58056sm886307wms.5.2024.02.13.08.46.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Feb 2024 08:46:46 -0800 (PST) Date: Tue, 13 Feb 2024 16:46:42 +0000 From: Mostafa Saleh To: Jason Gunthorpe Cc: iommu@lists.linux.dev, Joerg Roedel , linux-arm-kernel@lists.infradead.org, Robin Murphy , Will Deacon , Lu Baolu , Jean-Philippe Brucker , Joerg Roedel , Moritz Fischer , Moritz Fischer , Michael Shavit , Nicolin Chen , patches@lists.linux.dev, Shameer Kolothum , Zhangfei Gao Subject: Re: [PATCH v5 03/17] iommu/arm-smmu-v3: Move arm_smmu_rmr_install_bypass_ste() Message-ID: References: <0-v5-cd1be8dd9c71+3fa-smmuv3_newapi_p1_jgg@nvidia.com> <3-v5-cd1be8dd9c71+3fa-smmuv3_newapi_p1_jgg@nvidia.com> <20240213161601.GB1088888@nvidia.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240213161601.GB1088888@nvidia.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240213_084650_996909_A374ECB1 X-CRM114-Status: GOOD ( 33.62 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCBGZWIgMTMsIDIwMjQgYXQgMTI6MTY6MDFQTSAtMDQwMCwgSmFzb24gR3VudGhvcnBl IHdyb3RlOgo+IE9uIFR1ZSwgRmViIDEzLCAyMDI0IGF0IDAzOjM3OjQzUE0gKzAwMDAsIE1vc3Rh ZmEgU2FsZWggd3JvdGU6Cj4gPiBIaSBKYXNvbiwKPiA+IAo+ID4gT24gVHVlLCBGZWIgMDYsIDIw MjQgYXQgMTE6MTI6NDBBTSAtMDQwMCwgSmFzb24gR3VudGhvcnBlIHdyb3RlOgo+ID4gPiBMb2dp Y2FsbHkgYXJtX3NtbXVfaW5pdF9zdHJ0YWIoKSBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhbGxvY2F0 ZXMgYW5kCj4gPiA+IHBvcHVsYXRlcyB0aGUgc3RyZWFtIHRhYmxlIHdpdGggdGhlIGluaXRpYWwg dmFsdWUgb2YgdGhlIFNURXMuIEFmdGVyIHRoaXMKPiA+ID4gZnVuY3Rpb24gcmV0dXJucyB0aGUg c3RyZWFtIHRhYmxlIHNob3VsZCBiZSBmdWxseSByZWFkeS4KPiA+ID4gCj4gPiA+IGFybV9zbW11 X3Jtcl9pbnN0YWxsX2J5cGFzc19zdGUoKSBhZGp1c3RzIHRoZSBpbml0aWFsIHN0cmVhbSB0YWJs ZSB0byBmb3JjZQo+ID4gPiBhbnkgU0lEcyB0aGF0IHRoZSBGVyBzYXlzIGhhdmUgSU9NTVVfUkVT Vl9ESVJFQ1QgdG8gdXNlIGJ5cGFzcy4gVGhpcwo+ID4gPiBlbnN1cmVzIHRoZXJlIGlzIG5vIGRp c3J1cHRpb24gdG8gdGhlIGlkZW50aXR5IG1hcHBpbmcgZHVyaW5nIGJvb3QuCj4gPiA+IAo+ID4g PiBQdXQgYXJtX3NtbXVfcm1yX2luc3RhbGxfYnlwYXNzX3N0ZSgpIGludG8gYXJtX3NtbXVfaW5p dF9zdHJ0YWIoKSwgaXQKPiA+ID4gYWxyZWFkeSBleGVjdXRlcyBpbW1lZGlhdGVseSBhZnRlciBh cm1fc21tdV9pbml0X3N0cnRhYigpLgo+ID4gPiAKPiA+ID4gTm8gZnVuY3Rpb25hbCBjaGFuZ2Ug aW50ZW5kZWQuCj4gPiAKPiA+IEkgdGhpbmsgYXJtX3NtbXVfaW5pdF9zdHJ0YWIgaXMgcXVpdGUg bG93IGxldmVsIHRvIGFic3RyYWN0IEZXIGNvbmZpZ3VyYXRpb24gaW4gaXQuCj4gPiBGb3IgZXhh bXBsZSBpbiBLVk1bMV0gd2UnZCByZS11c2UgYSBiaWcgcGFydCBvZiB0aGlzIGRyaXZlciBhbmQg cmVseSBvbiBzaW1pbGFyCj4gPiBsb3ctbGV2ZWwgZnVuY3Rpb25zLiBCdXQgbm8gc3Ryb25nIG9w aW5pb24uCj4gCj4gSSdtIGhhcHB5IHRvIGRyb3AgdGhpcyBwYXRjaCwgaWYgbm8gc3Ryb25nIG9w aW5pb24gSSB3aWxsIGxlYXZlIGl0Cj4gCj4gPiBbMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcv a3ZtYXJtLzIwMjMwMjAxMTI1MzI4LjIxODY0OTgtMS1qZWFuLXBoaWxpcHBlQGxpbmFyby5vcmcv Cj4gCj4gSSBzYXcgdGhpcyBidXQgSSBkaWRuJ3QgdHJ5IHRvIGZpZ3VyZSBvdXQgdG9vIG11Y2gg d2hhdCBpdCBpcwo+IGRvaW5nLi4gSXQgbG9va3MgbGlrZSBhIG5ldyBpb21tdSBkcml2ZXIgdGhh dCByZS11c2VzIGFsb3Qgb2YgdGhlCj4gZGF0YXN0cnVjdHVyZXMgb2YgU01NVSBidXQgaGFzIGEg ZGlmZmVyZW50IEhXIGZhY2luZyBBUEkgYmFzZWQgb24KPiBoeXBlcmNhbGxzPwoKWWVzLCB0aGlz IGlzIGFuIGltcGxlbWVudGF0aW9uIGZvciB0aGUgU01NVXYzIGRyaXZlciBpbiBFTDIgaW4gS1ZN IHRoYXQgaXMgbmVlZGVkCmZvciBETUEgaXNvbGF0aW9uIGZvciBQcm90ZWN0ZWQgS1ZNKHBLVk0p IGFzIHRoZSBob3N0IGlzIHVudHJ1c3RlZCBpbiB0aGlzIGNhc2UgYW5kCmNhbiBhdHRhY2sgdGhl IGh5cGVydmlzb3IgdGhyb3VnaCBETUEuCgpUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIGtlcm5lbCBk cml2ZXIgYnV0IHdpdGggYSBidW5jaCBvZiB0cmlja3Mgc3VjaCBhcyBwYWdlIHRhYmxlCmFsbG9j YXRpb24sIHBvd2VyIG1hbmFnZW1lbnQgYW5kIG1vcmUuCgpBbHNvIHdlIGhhdmUgc29tZSBwbGFu cyB0byBleHRlbmQgaXQgdG8gS1ZNIGd1ZXN0cywgKEluaXRpYWxseSBJIHdhcyBjb25zaWRlcmlu ZwpLVk0tVkZJTyBkZXZpY2UgYnV0IG5vdyB3aXRoIHRoZSBuZXcgaW9tbXVmZCBzdHVmZiwgaXQg bWlnaHQgZml0IGluIHRoZXJlKQoKPiBJdCBzZWVtcyBpbnRlcmVzdGluZywgYnV0IG15IGtuZWUg amVyayByZWFjdGlvbiB3b3VsZCBiZSB0aGF0IGEgbmV3Cj4gaW9tbXUgZHJpdmVyIHByb3Bvc2Fs IG5lZWRzIHRvIGltcGxlbWVudCB0aGUgbmV3IGlvbW11IGNvcmUgQVBJcywgbm90Cj4gdGhlIG9s ZCBzdHVmZi4gSU1ITywgd2hlbiB0aGlzIHByb2dyZXNzZXMgcGFzdCBhIFJGQyBpdCBuZWVkcyB0 byBjb21lCj4gYXMgYSBwcm9wZXIgc3VibWlzc2lvbiBvZiBqdXN0IHRoZSBpb21tdSBkcml2ZXIs IGluIHRoZSBub3JtYWwgd2F5Lgo+IAo+IEkgYWxzbyB3b25kZXIgYWJvdXQgdGhlIHdpc2RvbSBv ZiBzaGFyaW5nIHNvIG11Y2ggY29kZS4gQ29kZSBzaGFyaW5nCj4gaXMgbm90IHVuY29uZGl0aW9u YWxseSBnb29kIGlmIGl0IGRvZXNuJ3QgaGF2ZSBhIHJvYnVzdCBhYnN0cmFjdGlvbi4uCj4KClRo ZSBpZGVhIGlzIHRoYXQgYXMgdGhlIGhhcmR3YXJlIGlzIGNvbW1vbiBhbmQgbW9zdCBvZiB0aGUg ZHQgYmluZGluZyBhbHNvLAp3ZSBzaG91bGRu4oCZdCByZWFsbHkgcmVpbnZlbnQgdGhlIHdoZWVs LCBzbyB0aGlzIHNlcmllcyBtb3ZlcyB0aGUgY29tbW9uIGNvZGUKZm9yIHRoZSBwYWdlLXRhYmxl IGxpYnJhcnkgdG8gYmUgc2hhcmVkIHdpdGggRUwxL0VMMiBhbmQgZm9yIEhXL0ZXIHByb2JlIGFu ZAppbml0IHRvIGJlIHNoYXJlZCBiZXR3ZWVuIHRoZSBrZXJuZWwgZHJpdmVycyBhbmQgYWRkcyBh IGxvdCBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUKZm9yIElPTU1VcyBpbiB0aGUgaHlwZXJ2aXNvci4K ClRoYW5rcywKTW9zdGFmYQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtYXJtLWtlcm5lbAo=