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 8E384C4345F for ; Fri, 19 Apr 2024 21:02:59 +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=woVJzZzVWnK+g9A+fF/kdaR/1gfO8cFvdS3lu7IGKUI=; b=u21APpQuAwPmwb t1UjJsoGbBUCMn/3P96pEo9ZoEt143/ZyqL146M7IbtU+9+Z1cW5nlmEhLx4iKp7tyj0X99jbOCiy qjSfdkwB3Yl8UsxqRZyvoej5R7+TxGNsUBJOkCKMF5kiJ/hev4V/SN2FmdjZbX59fYZn8VJjcY3aO qtj0FdpVCr4t0GM9q5SNhsGWZ1SVgrUhHdn+c0fiLeLbgkrWgFT3cR+Sci/JkPdA0HZTSuDQp3F0e 112W8+0UPyjXYZriWgSJnHUZo0H/CDtlfw8lJANNPbcCbhjdJGYTMhZ0cWHYOanxZX0/7IE1VpsZv 5uNh8NpY9W6cDOIlxJhQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rxvNa-00000006yF6-2ZkJ; Fri, 19 Apr 2024 21:02:42 +0000 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rxvNY-00000006yE0-1nPP for linux-arm-kernel@lists.infradead.org; Fri, 19 Apr 2024 21:02:42 +0000 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-41699bbfb91so19435e9.0 for ; Fri, 19 Apr 2024 14:02:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1713560557; x=1714165357; 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=dR/g1RqQSL1hzTLkoSRq5cGlQLUuRFkyHjupDfBTKnM=; b=2YNBst605aq7N1MX1TUjy06OcHDCLIfW+749pa0FykHqQYah8M4xnyR7p76ykiBLAG 9ALfmYEIXOMp05NXJYzZTO1WDuB0Izj5lSoGH0ybdDZrugjK5NQKDJXiJyH0zOC/9C1I Pfjx4agxArxonZWJqZNMq5X2QjOdgYZ2WSl9R8xYL4NiIXihKrtz6q/6gSNP9gb1O5l5 3lCUqBhyAxS0N8u++2jzY9EuqwjYriilDOr6RIaZ45DLSYHFLU+DTHvxN//Ee0KyinkU u4FNOKxDNoR+vYY3rZhwmrpvdW1okbyBhxgpClOduc4BMukEvGqtmXdtLbQF4tEX58AY J2LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713560557; x=1714165357; 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=dR/g1RqQSL1hzTLkoSRq5cGlQLUuRFkyHjupDfBTKnM=; b=qLSWyKB7G9VQPj/c2o74nSuJCdYtFJ1KavUwKiLIAM1X7KHaxK+XsrEPc6WPwooTW2 8ZkzYqwddRC3slVqfP4gDRdUQVumfv02HWR3HxcOQI5p+h/Bud4CSUOu9T+QtnjcCdtL 8Nx1ZSkKPdN1Ibz9W7VfeRGKrd7G5hZSoavWEfIppeixSudP9F1/utfppEf7F/wm7Bbh yYL344GCbrAWHxl+8jDoaK8/wvqp531W9pqQrco2Pc4FoO4xkWeyXBmKERs7bYZ0mA6+ zjuXY+1mNOOLfXW4BggrzbPo8PSkz3szhTL0HlPm7Plv6TNkyj+YQDGgQNv2jZjvfG5E xIzg== X-Forwarded-Encrypted: i=1; AJvYcCX0hCvVYeTNTQ0933lD/bNZnTAoSH6bKuHDKZlbpSCmS3cdRfuN2ARv/wcgqo7fdfTOKtz7plVXHL/wRTxCWOAZFCekpV+o4efBoqW8Vw2VJw7MROA= X-Gm-Message-State: AOJu0Yw2icBrUY6RdZTlNmJcFXwwvyBftDt7IQdI3jFMauEPPBcHuO8z 6VbPj96oj/mRA9Uxm4I89EqivlMCaqAbuYsXLayFCs2FPtxedEuy3xCAL8BPfi64ozoAx4+ySIx QVw== X-Google-Smtp-Source: AGHT+IH+oFXgzlco4PiIau9gclsgBzlVNdPzoSLK+qDWm8Qbx8JRpaFSJNWpEIKlVsfULmFD6XiWbQ== X-Received: by 2002:a05:600c:1c1b:b0:419:d60b:dc52 with SMTP id j27-20020a05600c1c1b00b00419d60bdc52mr45671wms.2.1713560557112; Fri, 19 Apr 2024 14:02:37 -0700 (PDT) Received: from google.com (180.232.140.34.bc.googleusercontent.com. [34.140.232.180]) by smtp.gmail.com with ESMTPSA id h15-20020a05600c350f00b00418d68df226sm8516063wmq.0.2024.04.19.14.02.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Apr 2024 14:02:36 -0700 (PDT) Date: Fri, 19 Apr 2024 21:02:32 +0000 From: Mostafa Saleh To: Jason Gunthorpe Cc: iommu@lists.linux.dev, Joerg Roedel , linux-arm-kernel@lists.infradead.org, Robin Murphy , Will Deacon , Eric Auger , Moritz Fischer , Moritz Fischer , Michael Shavit , Nicolin Chen , patches@lists.linux.dev, Shameerali Kolothum Thodi Subject: Re: [PATCH v7 1/9] iommu/arm-smmu-v3: Add an ops indirection to the STE code Message-ID: References: <0-v7-cb149db3a320+3b5-smmuv3_newapi_p2_jgg@nvidia.com> <1-v7-cb149db3a320+3b5-smmuv3_newapi_p2_jgg@nvidia.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1-v7-cb149db3a320+3b5-smmuv3_newapi_p2_jgg@nvidia.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240419_140240_622067_91097547 X-CRM114-Status: GOOD ( 42.99 ) 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 SGkgSmFzb24sCgpPbiBUdWUsIEFwciAxNiwgMjAyNCBhdCAwNDoyODoxMlBNIC0wMzAwLCBKYXNv biBHdW50aG9ycGUgd3JvdGU6Cj4gUHJlcGFyZSB0byBwdXQgdGhlIENEIGNvZGUgaW50byB0aGUg c2FtZSBtZWNoYW5pc20uIEFkZCBhbiBvcHMgaW5kaXJlY3Rpb24KPiBhcm91bmQgYWxsIHRoZSBT VEUgc3BlY2lmaWMgY29kZSBhbmQgbWFrZSB0aGUgd29ya2VyIGZ1bmN0aW9ucyBpbmRlcGVuZGVu dAo+IG9mIHRoZSBlbnRyeSBjb250ZW50IGJlaW5nIHByb2Nlc3NlZC4KPiAKPiBnZXRfdXNlZCBh bmQgc3luYyBvcHMgYXJlIHByb3ZpZGVkIHRvIGhvb2sgdGhlIGNvcnJlY3QgY29kZS4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFNoYXZpdCA8bXNoYXZpdEBnb29nbGUuY29tPgo+IFJldmll d2VkLWJ5OiBNaWNoYWVsIFNoYXZpdCA8bXNoYXZpdEBnb29nbGUuY29tPgo+IFRlc3RlZC1ieTog Tmljb2xpbiBDaGVuIDxuaWNvbGluY0BudmlkaWEuY29tPgo+IFRlc3RlZC1ieTogU2hhbWVlciBL b2xvdGh1bSA8c2hhbWVlcmFsaS5rb2xvdGh1bS50aG9kaUBodWF3ZWkuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IEphc29uIEd1bnRob3JwZSA8amdnQG52aWRpYS5jb20+Cj4gLS0tCj4gIGRyaXZlcnMv aW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMgfCAxNzggKysrKysrKysrKysrLS0t LS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDEwNiBpbnNlcnRpb25zKCspLCA3MiBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNt bXUtdjMuYyBiL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMKPiBp bmRleCA3OWMxOGU5NWRkMjkzZS4uYmYxMDVlOTE0ZDM4YjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuYwo+ICsrKyBiL2RyaXZlcnMvaW9t bXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMKPiBAQCAtNDIsOCArNDIsMjAgQEAgZW51 bSBhcm1fc21tdV9tc2lfaW5kZXggewo+ICAJQVJNX1NNTVVfTUFYX01TSVMsCj4gIH07Cj4gIAo+ IC1zdGF0aWMgdm9pZCBhcm1fc21tdV9zeW5jX3N0ZV9mb3Jfc2lkKHN0cnVjdCBhcm1fc21tdV9k ZXZpY2UgKnNtbXUsCj4gLQkJCQkgICAgICBpb2FzaWRfdCBzaWQpOwo+ICtzdHJ1Y3QgYXJtX3Nt bXVfZW50cnlfd3JpdGVyX29wczsKPiArc3RydWN0IGFybV9zbW11X2VudHJ5X3dyaXRlciB7Cj4g Kwljb25zdCBzdHJ1Y3QgYXJtX3NtbXVfZW50cnlfd3JpdGVyX29wcyAqb3BzOwo+ICsJc3RydWN0 IGFybV9zbW11X21hc3RlciAqbWFzdGVyOwo+ICt9Owo+ICsKPiArc3RydWN0IGFybV9zbW11X2Vu dHJ5X3dyaXRlcl9vcHMgewo+ICsJX19sZTY0IHZfYml0Owo+ICsJdm9pZCAoKmdldF91c2VkKShj b25zdCBfX2xlNjQgKmVudHJ5LCBfX2xlNjQgKnVzZWQpOwo+ICsJdm9pZCAoKnN5bmMpKHN0cnVj dCBhcm1fc21tdV9lbnRyeV93cml0ZXIgKndyaXRlcik7Cj4gK307Cj4gKwo+ICsjZGVmaW5lIE5V TV9FTlRSWV9RV09SRFMgOAo+ICtzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgYXJtX3NtbXVf c3RlKSA9PSBOVU1fRU5UUllfUVdPUkRTICogc2l6ZW9mKHU2NCkpOwo+ICAKPiAgc3RhdGljIHBo eXNfYWRkcl90IGFybV9zbW11X21zaV9jZmdbQVJNX1NNTVVfTUFYX01TSVNdWzNdID0gewo+ICAJ W0VWVFFfTVNJX0lOREVYXSA9IHsKPiBAQCAtOTcyLDQzICs5ODQsNDIgQEAgdm9pZCBhcm1fc21t dV90bGJfaW52X2FzaWQoc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSwgdTE2IGFzaWQpCj4g ICAqIHdvdWxkIGJlIG5pY2UgaWYgdGhpcyB3YXMgY29tcGxldGUgYWNjb3JkaW5nIHRvIHRoZSBz cGVjLCBidXQgbWluaW1hbGx5IGl0Cj4gICAqIGhhcyB0byBjYXB0dXJlIHRoZSBiaXRzIHRoaXMg ZHJpdmVyIHVzZXMuCj4gICAqLwo+IC1zdGF0aWMgdm9pZCBhcm1fc21tdV9nZXRfc3RlX3VzZWQo Y29uc3Qgc3RydWN0IGFybV9zbW11X3N0ZSAqZW50LAo+IC0JCQkJICBzdHJ1Y3QgYXJtX3NtbXVf c3RlICp1c2VkX2JpdHMpCj4gK3N0YXRpYyB2b2lkIGFybV9zbW11X2dldF9zdGVfdXNlZChjb25z dCBfX2xlNjQgKmVudCwgX19sZTY0ICp1c2VkX2JpdHMpCj4gIHsKPiAtCXVuc2lnbmVkIGludCBj ZmcgPSBGSUVMRF9HRVQoU1RSVEFCX1NURV8wX0NGRywgbGU2NF90b19jcHUoZW50LT5kYXRhWzBd KSk7Cj4gKwl1bnNpZ25lZCBpbnQgY2ZnID0gRklFTERfR0VUKFNUUlRBQl9TVEVfMF9DRkcsIGxl NjRfdG9fY3B1KGVudFswXSkpOwo+ICAKPiAtCXVzZWRfYml0cy0+ZGF0YVswXSA9IGNwdV90b19s ZTY0KFNUUlRBQl9TVEVfMF9WKTsKPiAtCWlmICghKGVudC0+ZGF0YVswXSAmIGNwdV90b19sZTY0 KFNUUlRBQl9TVEVfMF9WKSkpCj4gKwl1c2VkX2JpdHNbMF0gPSBjcHVfdG9fbGU2NChTVFJUQUJf U1RFXzBfVik7Cj4gKwlpZiAoIShlbnRbMF0gJiBjcHVfdG9fbGU2NChTVFJUQUJfU1RFXzBfVikp KQo+ICAJCXJldHVybjsKPiAgCj4gLQl1c2VkX2JpdHMtPmRhdGFbMF0gfD0gY3B1X3RvX2xlNjQo U1RSVEFCX1NURV8wX0NGRyk7Cj4gKwl1c2VkX2JpdHNbMF0gfD0gY3B1X3RvX2xlNjQoU1RSVEFC X1NURV8wX0NGRyk7Cj4gIAo+ICAJLyogUzEgdHJhbnNsYXRlcyAqLwo+ICAJaWYgKGNmZyAmIEJJ VCgwKSkgewo+IC0JCXVzZWRfYml0cy0+ZGF0YVswXSB8PSBjcHVfdG9fbGU2NChTVFJUQUJfU1RF XzBfUzFGTVQgfAo+IC0JCQkJCQkgIFNUUlRBQl9TVEVfMF9TMUNUWFBUUl9NQVNLIHwKPiAtCQkJ CQkJICBTVFJUQUJfU1RFXzBfUzFDRE1BWCk7Cj4gLQkJdXNlZF9iaXRzLT5kYXRhWzFdIHw9Cj4g KwkJdXNlZF9iaXRzWzBdIHw9IGNwdV90b19sZTY0KFNUUlRBQl9TVEVfMF9TMUZNVCB8Cj4gKwkJ CQkJICAgIFNUUlRBQl9TVEVfMF9TMUNUWFBUUl9NQVNLIHwKPiArCQkJCQkgICAgU1RSVEFCX1NU RV8wX1MxQ0RNQVgpOwo+ICsJCXVzZWRfYml0c1sxXSB8PQo+ICAJCQljcHVfdG9fbGU2NChTVFJU QUJfU1RFXzFfUzFEU1MgfCBTVFJUQUJfU1RFXzFfUzFDSVIgfAo+ICAJCQkJICAgIFNUUlRBQl9T VEVfMV9TMUNPUiB8IFNUUlRBQl9TVEVfMV9TMUNTSCB8Cj4gIAkJCQkgICAgU1RSVEFCX1NURV8x X1MxU1RBTExEIHwgU1RSVEFCX1NURV8xX1NUUlcgfAo+ICAJCQkJICAgIFNUUlRBQl9TVEVfMV9F QVRTKTsKPiAtCQl1c2VkX2JpdHMtPmRhdGFbMl0gfD0gY3B1X3RvX2xlNjQoU1RSVEFCX1NURV8y X1MyVk1JRCk7Cj4gKwkJdXNlZF9iaXRzWzJdIHw9IGNwdV90b19sZTY0KFNUUlRBQl9TVEVfMl9T MlZNSUQpOwo+ICAJfQo+ICAKPiAgCS8qIFMyIHRyYW5zbGF0ZXMgKi8KPiAgCWlmIChjZmcgJiBC SVQoMSkpIHsKPiAtCQl1c2VkX2JpdHMtPmRhdGFbMV0gfD0KPiArCQl1c2VkX2JpdHNbMV0gfD0K PiAgCQkJY3B1X3RvX2xlNjQoU1RSVEFCX1NURV8xX0VBVFMgfCBTVFJUQUJfU1RFXzFfU0hDRkcp Owo+IC0JCXVzZWRfYml0cy0+ZGF0YVsyXSB8PQo+ICsJCXVzZWRfYml0c1syXSB8PQo+ICAJCQlj cHVfdG9fbGU2NChTVFJUQUJfU1RFXzJfUzJWTUlEIHwgU1RSVEFCX1NURV8yX1ZUQ1IgfAo+ICAJ CQkJICAgIFNUUlRBQl9TVEVfMl9TMkFBNjQgfCBTVFJUQUJfU1RFXzJfUzJFTkRJIHwKPiAgCQkJ CSAgICBTVFJUQUJfU1RFXzJfUzJQVFcgfCBTVFJUQUJfU1RFXzJfUzJSKTsKPiAtCQl1c2VkX2Jp dHMtPmRhdGFbM10gfD0gY3B1X3RvX2xlNjQoU1RSVEFCX1NURV8zX1MyVFRCX01BU0spOwo+ICsJ CXVzZWRfYml0c1szXSB8PSBjcHVfdG9fbGU2NChTVFJUQUJfU1RFXzNfUzJUVEJfTUFTSyk7Cj4g IAl9Cj4gIAo+ICAJaWYgKGNmZyA9PSBTVFJUQUJfU1RFXzBfQ0ZHX0JZUEFTUykKPiAtCQl1c2Vk X2JpdHMtPmRhdGFbMV0gfD0gY3B1X3RvX2xlNjQoU1RSVEFCX1NURV8xX1NIQ0ZHKTsKPiArCQl1 c2VkX2JpdHNbMV0gfD0gY3B1X3RvX2xlNjQoU1RSVEFCX1NURV8xX1NIQ0ZHKTsKPiAgfQo+ICAK PiAgLyoKPiBAQCAtMTAxNyw1NyArMTAyOCw1NSBAQCBzdGF0aWMgdm9pZCBhcm1fc21tdV9nZXRf c3RlX3VzZWQoY29uc3Qgc3RydWN0IGFybV9zbW11X3N0ZSAqZW50LAo+ICAgKiB1bnVzZWRfdXBk YXRlIGlzIGFuIGludGVybWVkaWF0ZSB2YWx1ZSBvZiBlbnRyeSB0aGF0IGhhcyB1bnVzZWQgYml0 cyBzZXQgdG8KPiAgICogdGhlaXIgbmV3IHZhbHVlcy4KPiAgICovCj4gLXN0YXRpYyB1OCBhcm1f c21tdV9lbnRyeV9xd29yZF9kaWZmKGNvbnN0IHN0cnVjdCBhcm1fc21tdV9zdGUgKmVudHJ5LAo+ IC0JCQkJICAgIGNvbnN0IHN0cnVjdCBhcm1fc21tdV9zdGUgKnRhcmdldCwKPiAtCQkJCSAgICBz dHJ1Y3QgYXJtX3NtbXVfc3RlICp1bnVzZWRfdXBkYXRlKQo+ICtzdGF0aWMgdTggYXJtX3NtbXVf ZW50cnlfcXdvcmRfZGlmZihzdHJ1Y3QgYXJtX3NtbXVfZW50cnlfd3JpdGVyICp3cml0ZXIsCj4g KwkJCQkgICAgY29uc3QgX19sZTY0ICplbnRyeSwgY29uc3QgX19sZTY0ICp0YXJnZXQsCj4gKwkJ CQkgICAgX19sZTY0ICp1bnVzZWRfdXBkYXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgYXJtX3NtbXVfc3Rl IHRhcmdldF91c2VkID0ge307Cj4gLQlzdHJ1Y3QgYXJtX3NtbXVfc3RlIGN1cl91c2VkID0ge307 Cj4gKwlfX2xlNjQgdGFyZ2V0X3VzZWRbTlVNX0VOVFJZX1FXT1JEU10gPSB7fTsKPiArCV9fbGU2 NCBjdXJfdXNlZFtOVU1fRU5UUllfUVdPUkRTXSA9IHt9Owo+ICAJdTggdXNlZF9xd29yZF9kaWZm ID0gMDsKPiAgCXVuc2lnbmVkIGludCBpOwo+ICAKPiAtCWFybV9zbW11X2dldF9zdGVfdXNlZChl bnRyeSwgJmN1cl91c2VkKTsKPiAtCWFybV9zbW11X2dldF9zdGVfdXNlZCh0YXJnZXQsICZ0YXJn ZXRfdXNlZCk7Cj4gKwl3cml0ZXItPm9wcy0+Z2V0X3VzZWQoZW50cnksIGN1cl91c2VkKTsKPiAr CXdyaXRlci0+b3BzLT5nZXRfdXNlZCh0YXJnZXQsIHRhcmdldF91c2VkKTsKPiAgCj4gLQlmb3Ig KGkgPSAwOyBpICE9IEFSUkFZX1NJWkUodGFyZ2V0X3VzZWQuZGF0YSk7IGkrKykgewo+ICsJZm9y IChpID0gMDsgaSAhPSBOVU1fRU5UUllfUVdPUkRTOyBpKyspIHsKPiAgCQkvKgo+ICAJCSAqIENo ZWNrIHRoYXQgbWFza3MgYXJlIHVwIHRvIGRhdGUsIHRoZSBtYWtlIGZ1bmN0aW9ucyBhcmUgbm90 Cj4gIAkJICogYWxsb3dlZCB0byBzZXQgYSBiaXQgdG8gMSBpZiB0aGUgdXNlZCBmdW5jdGlvbiBk b2Vzbid0IHNheSBpdAo+ICAJCSAqIGlzIHVzZWQuCj4gIAkJICovCj4gLQkJV0FSTl9PTl9PTkNF KHRhcmdldC0+ZGF0YVtpXSAmIH50YXJnZXRfdXNlZC5kYXRhW2ldKTsKPiArCQlXQVJOX09OX09O Q0UodGFyZ2V0W2ldICYgfnRhcmdldF91c2VkW2ldKTsKPiAgCj4gIAkJLyogQml0cyBjYW4gY2hh bmdlIGJlY2F1c2UgdGhleSBhcmUgbm90IGN1cnJlbnRseSBiZWluZyB1c2VkICovCj4gLQkJdW51 c2VkX3VwZGF0ZS0+ZGF0YVtpXSA9IChlbnRyeS0+ZGF0YVtpXSAmIGN1cl91c2VkLmRhdGFbaV0p IHwKPiAtCQkJCQkgKHRhcmdldC0+ZGF0YVtpXSAmIH5jdXJfdXNlZC5kYXRhW2ldKTsKPiArCQl1 bnVzZWRfdXBkYXRlW2ldID0gKGVudHJ5W2ldICYgY3VyX3VzZWRbaV0pIHwKPiArCQkJCSAgICh0 YXJnZXRbaV0gJiB+Y3VyX3VzZWRbaV0pOwo+ICAJCS8qCj4gIAkJICogRWFjaCBiaXQgaW5kaWNh dGVzIHRoYXQgYSB1c2VkIGJpdCBpbiBhIHF3b3JkIG5lZWRzIHRvIGJlCj4gIAkJICogY2hhbmdl ZCBhZnRlciB1bnVzZWRfdXBkYXRlIGlzIGFwcGxpZWQuCj4gIAkJICovCj4gLQkJaWYgKCh1bnVz ZWRfdXBkYXRlLT5kYXRhW2ldICYgdGFyZ2V0X3VzZWQuZGF0YVtpXSkgIT0KPiAtCQkgICAgdGFy Z2V0LT5kYXRhW2ldKQo+ICsJCWlmICgodW51c2VkX3VwZGF0ZVtpXSAmIHRhcmdldF91c2VkW2ld KSAhPSB0YXJnZXRbaV0pCj4gIAkJCXVzZWRfcXdvcmRfZGlmZiB8PSAxIDw8IGk7Cj4gIAl9Cj4g IAlyZXR1cm4gdXNlZF9xd29yZF9kaWZmOwo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBlbnRyeV9z ZXQoc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSwgaW9hc2lkX3Qgc2lkLAo+IC0JCSAgICAg IHN0cnVjdCBhcm1fc21tdV9zdGUgKmVudHJ5LAo+IC0JCSAgICAgIGNvbnN0IHN0cnVjdCBhcm1f c21tdV9zdGUgKnRhcmdldCwgdW5zaWduZWQgaW50IHN0YXJ0LAo+ICtzdGF0aWMgYm9vbCBlbnRy eV9zZXQoc3RydWN0IGFybV9zbW11X2VudHJ5X3dyaXRlciAqd3JpdGVyLCBfX2xlNjQgKmVudHJ5 LAo+ICsJCSAgICAgIGNvbnN0IF9fbGU2NCAqdGFyZ2V0LCB1bnNpZ25lZCBpbnQgc3RhcnQsCj4g IAkJICAgICAgdW5zaWduZWQgaW50IGxlbikKPiAgewo+ICAJYm9vbCBjaGFuZ2VkID0gZmFsc2U7 Cj4gIAl1bnNpZ25lZCBpbnQgaTsKPiAgCj4gIAlmb3IgKGkgPSBzdGFydDsgbGVuICE9IDA7IGxl bi0tLCBpKyspIHsKPiAtCQlpZiAoZW50cnktPmRhdGFbaV0gIT0gdGFyZ2V0LT5kYXRhW2ldKSB7 Cj4gLQkJCVdSSVRFX09OQ0UoZW50cnktPmRhdGFbaV0sIHRhcmdldC0+ZGF0YVtpXSk7Cj4gKwkJ aWYgKGVudHJ5W2ldICE9IHRhcmdldFtpXSkgewo+ICsJCQlXUklURV9PTkNFKGVudHJ5W2ldLCB0 YXJnZXRbaV0pOwo+ICAJCQljaGFuZ2VkID0gdHJ1ZTsKPiAgCQl9Cj4gIAl9Cj4gIAo+ICAJaWYg KGNoYW5nZWQpCj4gLQkJYXJtX3NtbXVfc3luY19zdGVfZm9yX3NpZChzbW11LCBzaWQpOwo+ICsJ CXdyaXRlci0+b3BzLT5zeW5jKHdyaXRlcik7Cj4gIAlyZXR1cm4gY2hhbmdlZDsKPiAgfQo+ICAK PiBAQCAtMTA5NywyNCArMTEwNiwyMSBAQCBzdGF0aWMgYm9vbCBlbnRyeV9zZXQoc3RydWN0IGFy bV9zbW11X2RldmljZSAqc21tdSwgaW9hc2lkX3Qgc2lkLAo+ICAgKiBWPTAgcHJvY2Vzcy4gVGhp cyByZWxpZXMgb24gdGhlIElHTk9SRUQgYmVoYXZpb3IgZGVzY3JpYmVkIGluIHRoZQo+ICAgKiBz cGVjaWZpY2F0aW9uLgo+ICAgKi8KPiAtc3RhdGljIHZvaWQgYXJtX3NtbXVfd3JpdGVfc3RlKHN0 cnVjdCBhcm1fc21tdV9tYXN0ZXIgKm1hc3RlciwgdTMyIHNpZCwKPiAtCQkJICAgICAgIHN0cnVj dCBhcm1fc21tdV9zdGUgKmVudHJ5LAo+IC0JCQkgICAgICAgY29uc3Qgc3RydWN0IGFybV9zbW11 X3N0ZSAqdGFyZ2V0KQo+ICtzdGF0aWMgdm9pZCBhcm1fc21tdV93cml0ZV9lbnRyeShzdHJ1Y3Qg YXJtX3NtbXVfZW50cnlfd3JpdGVyICp3cml0ZXIsCj4gKwkJCQkgX19sZTY0ICplbnRyeSwgY29u c3QgX19sZTY0ICp0YXJnZXQpCj4gIHsKPiAtCXVuc2lnbmVkIGludCBudW1fZW50cnlfcXdvcmRz ID0gQVJSQVlfU0laRSh0YXJnZXQtPmRhdGEpOwo+IC0Jc3RydWN0IGFybV9zbW11X2RldmljZSAq c21tdSA9IG1hc3Rlci0+c21tdTsKPiAtCXN0cnVjdCBhcm1fc21tdV9zdGUgdW51c2VkX3VwZGF0 ZTsKPiArCV9fbGU2NCB1bnVzZWRfdXBkYXRlW05VTV9FTlRSWV9RV09SRFNdOwo+ICAJdTggdXNl ZF9xd29yZF9kaWZmOwo+ICAKPiAgCXVzZWRfcXdvcmRfZGlmZiA9Cj4gLQkJYXJtX3NtbXVfZW50 cnlfcXdvcmRfZGlmZihlbnRyeSwgdGFyZ2V0LCAmdW51c2VkX3VwZGF0ZSk7Cj4gKwkJYXJtX3Nt bXVfZW50cnlfcXdvcmRfZGlmZih3cml0ZXIsIGVudHJ5LCB0YXJnZXQsIHVudXNlZF91cGRhdGUp Owo+ICAJaWYgKGh3ZWlnaHQ4KHVzZWRfcXdvcmRfZGlmZikgPT0gMSkgewo+ICAJCS8qCj4gIAkJ ICogT25seSBvbmUgcXdvcmQgbmVlZHMgaXRzIHVzZWQgYml0cyB0byBiZSBjaGFuZ2VkLiBUaGlz IGlzIGEKPiAtCQkgKiBoaXRsZXNzIHVwZGF0ZSwgdXBkYXRlIGFsbCBiaXRzIHRoZSBjdXJyZW50 IFNURSBpcyBpZ25vcmluZwo+IC0JCSAqIHRvIHRoZWlyIG5ldyB2YWx1ZXMsIHRoZW4gdXBkYXRl IGEgc2luZ2xlICJjcml0aWNhbCBxd29yZCIgdG8KPiAtCQkgKiBjaGFuZ2UgdGhlIFNURSBhbmQg ZmluYWxseSAwIG91dCBhbnkgYml0cyB0aGF0IGFyZSBub3cgdW51c2VkCj4gLQkJICogaW4gdGhl IHRhcmdldCBjb25maWd1cmF0aW9uLgo+ICsJCSAqIGhpdGxlc3MgdXBkYXRlLCB1cGRhdGUgYWxs IGJpdHMgdGhlIGN1cnJlbnQgU1RFL0NEIGlzCj4gKwkJICogaWdub3JpbmcgdG8gdGhlaXIgbmV3 IHZhbHVlcywgdGhlbiB1cGRhdGUgYSBzaW5nbGUgImNyaXRpY2FsCj4gKwkJICogcXdvcmQiIHRv IGNoYW5nZSB0aGUgU1RFL0NEIGFuZCBmaW5hbGx5IDAgb3V0IGFueSBiaXRzIHRoYXQKPiArCQkg KiBhcmUgbm93IHVudXNlZCBpbiB0aGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24uCj4gIAkJICovCj4g IAkJdW5zaWduZWQgaW50IGNyaXRpY2FsX3F3b3JkX2luZGV4ID0gZmZzKHVzZWRfcXdvcmRfZGlm ZikgLSAxOwo+ICAKPiBAQCAtMTEyMywyMiArMTEyOSwyMSBAQCBzdGF0aWMgdm9pZCBhcm1fc21t dV93cml0ZV9zdGUoc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyLCB1MzIgc2lkLAo+ICAJ CSAqIHdyaXRpbmcgaXQgaW4gdGhlIG5leHQgc3RlcCBhbnl3YXlzLiBUaGlzIGNhbiBzYXZlIGEg c3luYwo+ICAJCSAqIHdoZW4gdGhlIG9ubHkgY2hhbmdlIGlzIGluIHRoYXQgcXdvcmQuCj4gIAkJ ICovCj4gLQkJdW51c2VkX3VwZGF0ZS5kYXRhW2NyaXRpY2FsX3F3b3JkX2luZGV4XSA9Cj4gLQkJ CWVudHJ5LT5kYXRhW2NyaXRpY2FsX3F3b3JkX2luZGV4XTsKPiAtCQllbnRyeV9zZXQoc21tdSwg c2lkLCBlbnRyeSwgJnVudXNlZF91cGRhdGUsIDAsIG51bV9lbnRyeV9xd29yZHMpOwo+IC0JCWVu dHJ5X3NldChzbW11LCBzaWQsIGVudHJ5LCB0YXJnZXQsIGNyaXRpY2FsX3F3b3JkX2luZGV4LCAx KTsKPiAtCQllbnRyeV9zZXQoc21tdSwgc2lkLCBlbnRyeSwgdGFyZ2V0LCAwLCBudW1fZW50cnlf cXdvcmRzKTsKPiArCQl1bnVzZWRfdXBkYXRlW2NyaXRpY2FsX3F3b3JkX2luZGV4XSA9Cj4gKwkJ CWVudHJ5W2NyaXRpY2FsX3F3b3JkX2luZGV4XTsKPiArCQllbnRyeV9zZXQod3JpdGVyLCBlbnRy eSwgdW51c2VkX3VwZGF0ZSwgMCwgTlVNX0VOVFJZX1FXT1JEUyk7Cj4gKwkJZW50cnlfc2V0KHdy aXRlciwgZW50cnksIHRhcmdldCwgY3JpdGljYWxfcXdvcmRfaW5kZXgsIDEpOwo+ICsJCWVudHJ5 X3NldCh3cml0ZXIsIGVudHJ5LCB0YXJnZXQsIDAsIE5VTV9FTlRSWV9RV09SRFMpOwo+ICAJfSBl bHNlIGlmICh1c2VkX3F3b3JkX2RpZmYpIHsKPiAgCQkvKgo+ICAJCSAqIEF0IGxlYXN0IHR3byBx d29yZHMgbmVlZCB0aGVpciBpbnVzZSBiaXRzIHRvIGJlIGNoYW5nZWQuIFRoaXMKPiAgCQkgKiBy ZXF1aXJlcyBhIGJyZWFraW5nIHVwZGF0ZSwgemVybyB0aGUgViBiaXQsIHdyaXRlIGFsbCBxd29y ZHMKPiAgCQkgKiBidXQgMCwgdGhlbiBzZXQgcXdvcmQgMAo+ICAJCSAqLwo+IC0JCXVudXNlZF91 cGRhdGUuZGF0YVswXSA9IGVudHJ5LT5kYXRhWzBdICYKPiAtCQkJCQljcHVfdG9fbGU2NCh+U1RS VEFCX1NURV8wX1YpOwo+IC0JCWVudHJ5X3NldChzbW11LCBzaWQsIGVudHJ5LCAmdW51c2VkX3Vw ZGF0ZSwgMCwgMSk7Cj4gLQkJZW50cnlfc2V0KHNtbXUsIHNpZCwgZW50cnksIHRhcmdldCwgMSwg bnVtX2VudHJ5X3F3b3JkcyAtIDEpOwo+IC0JCWVudHJ5X3NldChzbW11LCBzaWQsIGVudHJ5LCB0 YXJnZXQsIDAsIDEpOwo+ICsJCXVudXNlZF91cGRhdGVbMF0gPSBlbnRyeVswXSAmICh+d3JpdGVy LT5vcHMtPnZfYml0KTsKCmFybV9zbW11X3dyaXRlX2VudHJ5KCkgYXNzdW1lcyB0aGF0IHZfYml0 IGlzIGluIGVudHJ5WzBdIGFuZCB0aGF0IOKAnDHigJ0gbWVhbnMgdmFsaWQKKHdoaWNoIGlzIHRy dWUgZm9yIGJvdGggU1RFIGFuZCBDRCkgc28gd2h5IGRvIHdlIGNhcmUgYWJvdXQgaXQsIGlmIHdl IGJyZWFrIHRoZQpTVEUvQ0QgYW55d2F5LCB3aHkgbm90IGp1c3QgZG86CgoJdW51c2VkX3VwZGF0 ZVswXSA9IDA7CgllbnRyeV9zZXQod3JpdGVyLCBlbnRyeSwgdW51c2VkX3VwZGF0ZSwgMCwgMSk7 CgllbnRyeV9zZXQod3JpdGVyLCBlbnRyeSwgdGFyZ2V0LCAxLCBOVU1fRU5UUllfUVdPUkRTIC0g MSkKCWVudHJ5X3NldCh3cml0ZXIsIGVudHJ5LCB0YXJnZXQsIDAsIDEpOwoKVGhhdCBtYWtlcyB0 aGUgY29kZSBzaW1wbGVyIGJ5IGF2b2lkaW5nIGhhdmluZyB0aGUgdl9iaXQgaW4KYXJtX3NtbXVf ZW50cnlfd3JpdGVyX29wcy4KCgpUaGFua3MsCk1vc3RhZmEKCj4gKwkJZW50cnlfc2V0KHdyaXRl ciwgZW50cnksIHVudXNlZF91cGRhdGUsIDAsIDEpOwo+ICsJCWVudHJ5X3NldCh3cml0ZXIsIGVu dHJ5LCB0YXJnZXQsIDEsIE5VTV9FTlRSWV9RV09SRFMgLSAxKTsKPiArCQllbnRyeV9zZXQod3Jp dGVyLCBlbnRyeSwgdGFyZ2V0LCAwLCAxKTsKPiAgCX0gZWxzZSB7Cj4gIAkJLyoKPiAgCQkgKiBO byBpbnVzZSBiaXQgY2hhbmdlZC4gU2FuaXR5IGNoZWNrIHRoYXQgYWxsIHVudXNlZCBiaXRzIGFy ZSAwCj4gQEAgLTExNDYsMTggKzExNTEsNyBAQCBzdGF0aWMgdm9pZCBhcm1fc21tdV93cml0ZV9z dGUoc3RydWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyLCB1MzIgc2lkLAo+ICAJCSAqIGNvbXB1 dGVfcXdvcmRfZGlmZigpLgo+ICAJCSAqLwo+ICAJCVdBUk5fT05fT05DRSgKPiAtCQkJZW50cnlf c2V0KHNtbXUsIHNpZCwgZW50cnksIHRhcmdldCwgMCwgbnVtX2VudHJ5X3F3b3JkcykpOwo+IC0J fQo+IC0KPiAtCS8qIEl0J3MgbGlrZWx5IHRoYXQgd2UnbGwgd2FudCB0byB1c2UgdGhlIG5ldyBT VEUgc29vbiAqLwo+IC0JaWYgKCEoc21tdS0+b3B0aW9ucyAmIEFSTV9TTU1VX09QVF9TS0lQX1BS RUZFVENIKSkgewo+IC0JCXN0cnVjdCBhcm1fc21tdV9jbWRxX2VudAo+IC0JCQlwcmVmZXRjaF9j bWQgPSB7IC5vcGNvZGUgPSBDTURRX09QX1BSRUZFVENIX0NGRywKPiAtCQkJCQkgLnByZWZldGNo ID0gewo+IC0JCQkJCQkgLnNpZCA9IHNpZCwKPiAtCQkJCQkgfSB9Owo+IC0KPiAtCQlhcm1fc21t dV9jbWRxX2lzc3VlX2NtZChzbW11LCAmcHJlZmV0Y2hfY21kKTsKPiArCQkJZW50cnlfc2V0KHdy aXRlciwgZW50cnksIHRhcmdldCwgMCwgTlVNX0VOVFJZX1FXT1JEUykpOwo+ICAJfQo+ICB9Cj4g IAo+IEBAIC0xNDMwLDE3ICsxNDI0LDU3IEBAIGFybV9zbW11X3dyaXRlX3N0cnRhYl9sMV9kZXNj KF9fbGU2NCAqZHN0LCBzdHJ1Y3QgYXJtX3NtbXVfc3RydGFiX2wxX2Rlc2MgKmRlc2MpCj4gIAlX UklURV9PTkNFKCpkc3QsIGNwdV90b19sZTY0KHZhbCkpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9p ZCBhcm1fc21tdV9zeW5jX3N0ZV9mb3Jfc2lkKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUs IHUzMiBzaWQpCj4gK3N0cnVjdCBhcm1fc21tdV9zdGVfd3JpdGVyIHsKPiArCXN0cnVjdCBhcm1f c21tdV9lbnRyeV93cml0ZXIgd3JpdGVyOwo+ICsJdTMyIHNpZDsKPiArfTsKPiArCj4gK3N0YXRp YyB2b2lkIGFybV9zbW11X3N0ZV93cml0ZXJfc3luY19lbnRyeShzdHJ1Y3QgYXJtX3NtbXVfZW50 cnlfd3JpdGVyICp3cml0ZXIpCj4gIHsKPiArCXN0cnVjdCBhcm1fc21tdV9zdGVfd3JpdGVyICpz dGVfd3JpdGVyID0KPiArCQljb250YWluZXJfb2Yod3JpdGVyLCBzdHJ1Y3QgYXJtX3NtbXVfc3Rl X3dyaXRlciwgd3JpdGVyKTsKPiAgCXN0cnVjdCBhcm1fc21tdV9jbWRxX2VudCBjbWQgPSB7Cj4g IAkJLm9wY29kZQk9IENNRFFfT1BfQ0ZHSV9TVEUsCj4gIAkJLmNmZ2kJPSB7Cj4gLQkJCS5zaWQJ PSBzaWQsCj4gKwkJCS5zaWQJPSBzdGVfd3JpdGVyLT5zaWQsCj4gIAkJCS5sZWFmCT0gdHJ1ZSwK PiAgCQl9LAo+ICAJfTsKPiAgCj4gLQlhcm1fc21tdV9jbWRxX2lzc3VlX2NtZF93aXRoX3N5bmMo c21tdSwgJmNtZCk7Cj4gKwlhcm1fc21tdV9jbWRxX2lzc3VlX2NtZF93aXRoX3N5bmMod3JpdGVy LT5tYXN0ZXItPnNtbXUsICZjbWQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFy bV9zbW11X2VudHJ5X3dyaXRlcl9vcHMgYXJtX3NtbXVfc3RlX3dyaXRlcl9vcHMgPSB7Cj4gKwku c3luYyA9IGFybV9zbW11X3N0ZV93cml0ZXJfc3luY19lbnRyeSwKPiArCS5nZXRfdXNlZCA9IGFy bV9zbW11X2dldF9zdGVfdXNlZCwKPiArCS52X2JpdCA9IGNwdV90b19sZTY0KFNUUlRBQl9TVEVf MF9WKSwKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIGFybV9zbW11X3dyaXRlX3N0ZShzdHJ1Y3Qg YXJtX3NtbXVfbWFzdGVyICptYXN0ZXIsIHUzMiBzaWQsCj4gKwkJCSAgICAgICBzdHJ1Y3QgYXJt X3NtbXVfc3RlICpzdGUsCj4gKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgYXJtX3NtbXVfc3RlICp0 YXJnZXQpCj4gK3sKPiArCXN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUgPSBtYXN0ZXItPnNt bXU7Cj4gKwlzdHJ1Y3QgYXJtX3NtbXVfc3RlX3dyaXRlciBzdGVfd3JpdGVyID0gewo+ICsJCS53 cml0ZXIgPSB7Cj4gKwkJCS5vcHMgPSAmYXJtX3NtbXVfc3RlX3dyaXRlcl9vcHMsCj4gKwkJCS5t YXN0ZXIgPSBtYXN0ZXIsCj4gKwkJfSwKPiArCQkuc2lkID0gc2lkLAo+ICsJfTsKPiArCj4gKwlh cm1fc21tdV93cml0ZV9lbnRyeSgmc3RlX3dyaXRlci53cml0ZXIsIHN0ZS0+ZGF0YSwgdGFyZ2V0 LT5kYXRhKTsKPiArCj4gKwkvKiBJdCdzIGxpa2VseSB0aGF0IHdlJ2xsIHdhbnQgdG8gdXNlIHRo ZSBuZXcgU1RFIHNvb24gKi8KPiArCWlmICghKHNtbXUtPm9wdGlvbnMgJiBBUk1fU01NVV9PUFRf U0tJUF9QUkVGRVRDSCkpIHsKPiArCQlzdHJ1Y3QgYXJtX3NtbXVfY21kcV9lbnQKPiArCQkJcHJl ZmV0Y2hfY21kID0geyAub3Bjb2RlID0gQ01EUV9PUF9QUkVGRVRDSF9DRkcsCj4gKwkJCQkJIC5w cmVmZXRjaCA9IHsKPiArCQkJCQkJIC5zaWQgPSBzaWQsCj4gKwkJCQkJIH0gfTsKPiArCj4gKwkJ YXJtX3NtbXVfY21kcV9pc3N1ZV9jbWQoc21tdSwgJnByZWZldGNoX2NtZCk7Cj4gKwl9Cj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkIGFybV9zbW11X21ha2VfYWJvcnRfc3RlKHN0cnVjdCBhcm1fc21t dV9zdGUgKnRhcmdldCkKPiAtLSAKPiAyLjQzLjIKPiAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0Cmxp bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK