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 99611C54E71 for ; Fri, 22 Mar 2024 18:14:53 +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=ul6O2yYolzjbhRJ9qCloG1c6FRmrmQwoeSwdKZGeXco=; b=eeqhKYUypPfXNt gR++5NsoWBDMBznBGC4DXFz+VuZ2C08dfWFHCeXGvsjpLwETqWTkRgsVhGRFZju4XIgYlDXuVRR81 LhctzYMFXO6iYN8SrzY4M/Je1RB+LPn1XSaMBWenzW9kvCiP84hAwi+l96AgW5at5RnTF+haVTCfU +l8Rx/Puz1SC4ZRa4KIsPkZpe4X/LgDtUCzHP+YFZKKqXIieS575gfuA6JP6SFZ66HS6xjNCgpz2i 7mLE0o5/+EbO+mnGfT4e7cEI9aehUvEsMlsR20y2bows3OPn6V6kHGKLH2Vb5h/QpCaI3g6m0VWDQ DhVIv7JvusGeSEW6EQyg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rnjPY-00000008JcC-3Uvi; Fri, 22 Mar 2024 18:14:36 +0000 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rnjPU-00000008Jaf-3kQm for linux-arm-kernel@lists.infradead.org; Fri, 22 Mar 2024 18:14:34 +0000 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-41428b378b9so9495e9.1 for ; Fri, 22 Mar 2024 11:14:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1711131270; x=1711736070; 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=Tg7FK1adNy9kVBWtxm5M01gQDSSIPZ6QTtS5XJqEjTE=; b=GQFHkcINdmbilmq2fkIH7exJVCW6bGjAub+ApGa2E1NSoqVblUGoV9OnqAJ1VrDXxL Hwlfyss/NtPeNth5OEcZAvy6K0eIGLt/wDTc2GQMyXWbzjUuT/vJKRJd1yTuUQuJrozV dykfjnWvpv7+IDgQYuoDaWrtP5d2Tl4rebhED4Fws8KhpdWl5dn3wkAQOWV5bRlplzty M9BnWKgGEJcGe2MdGOl4QUIGl58VCEjbHiFZU17oai7JR9RI7axIyB2d79YwJ5YDgcyX AHJXbykK4+GJKKtYc9xIYsixJ94iGT6XLWL9iHN/YzzoFKs2b/P1pLViazvBU8v9Yn2S fazQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711131270; x=1711736070; 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=Tg7FK1adNy9kVBWtxm5M01gQDSSIPZ6QTtS5XJqEjTE=; b=n8Cm9RXDwgRGL//+MVIIDIqegIjQhm0318tEZVXSpo4JRXZ1eLkjjRHMZuwNc9Bwde kA41k7YgzDpdHvQMomu2u2+z04ywzt/5H/T6/r3uejiaYjP0SMWN13eblgnUfSfFTU2o RYQR8v/etpX1g/o/A2ao/MpsiRczgjN7EI9TxMQ59nUALfLRPajLEa3V6ADQVuIsdQC/ XB40pvU5fKiM9knHz5RO0HG+VYKjQ1Kz7rCaXl6Z4nFRaEnGxqdcMQb1NQubB873WXeA XP7W5dV69LXXhVyOvJ0m97ySpJRiHQqx04W+HaeNtbbrg4qQeThrZ+ryEtqJaVDEv2Lu iFwg== X-Forwarded-Encrypted: i=1; AJvYcCUSYquoQGQlLUbUlWJmSr7joe4exgr8hjKOJDVJMdAIh3QRWp8uoGJTa2XAdb0uWusBmZux7csXRM9xZo3leKUgTWkHaBWT2QePF2i7LStf469sgsk= X-Gm-Message-State: AOJu0YwhdrzKZPDk8AJlTjv+iUBZrndQ3I5ithV6z/Qv+mtvC61wyIPx DOhh2G5k+6j8qbyeU/j3ILEpiFKmL6cM1RW4ZLaKMR4t8GMwrKO6QqAolmT8bQ== X-Google-Smtp-Source: AGHT+IFlAz1VWtABt9QEIqbX69Q4NML8xtukhkG+yMimaYpYIEIBbyT8vCbvi1HwwGOkvRDTRZqDFQ== X-Received: by 2002:a05:600c:1c8d:b0:414:800f:f992 with SMTP id k13-20020a05600c1c8d00b00414800ff992mr10631wms.2.1711131269544; Fri, 22 Mar 2024 11:14:29 -0700 (PDT) Received: from google.com (180.232.140.34.bc.googleusercontent.com. [34.140.232.180]) by smtp.gmail.com with ESMTPSA id n14-20020a5d51ce000000b0033e9fca1e49sm2573790wrv.60.2024.03.22.11.14.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Mar 2024 11:14:28 -0700 (PDT) Date: Fri, 22 Mar 2024 18:14:24 +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 , Jean-Philippe Brucker , Moritz Fischer , Michael Shavit , Nicolin Chen , patches@lists.linux.dev, Shameerali Kolothum Thodi Subject: Re: [PATCH v5 04/27] iommu/arm-smmu-v3: Add an ops indirection to the STE code Message-ID: References: <0-v5-9a37e0c884ce+31e3-smmuv3_newapi_p2_jgg@nvidia.com> <4-v5-9a37e0c884ce+31e3-smmuv3_newapi_p2_jgg@nvidia.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <4-v5-9a37e0c884ce+31e3-smmuv3_newapi_p2_jgg@nvidia.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240322_111432_975763_8D138DE9 X-CRM114-Status: GOOD ( 42.60 ) 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 SGkgSmFzb24sCgpPbiBNb24sIE1hciAwNCwgMjAyNCBhdCAwNzo0Mzo1MlBNIC0wNDAwLCBKYXNv biBHdW50aG9ycGUgd3JvdGU6Cj4gUHJlcGFyZSB0byBwdXQgdGhlIENEIGNvZGUgaW50byB0aGUg c2FtZSBtZWNoYW5pc20uIEFkZCBhbiBvcHMgaW5kaXJlY3Rpb24KPiBhcm91bmQgYWxsIHRoZSBT VEUgc3BlY2lmaWMgY29kZSBhbmQgbWFrZSB0aGUgd29ya2VyIGZ1bmN0aW9ucyBpbmRlcGVuZGVu dAo+IG9mIHRoZSBlbnRyeSBjb250ZW50IGJlaW5nIHByb2Nlc3NlZC4KPiAKPiBnZXRfdXNlZCBh bmQgc3luYyBvcHMgYXJlIHByb3ZpZGVkIHRvIGhvb2sgdGhlIGNvcnJlY3QgY29kZS4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFNoYXZpdCA8bXNoYXZpdEBnb29nbGUuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IEphc29uIEd1bnRob3JwZSA8amdnQG52aWRpYS5jb20+Cj4gLS0tCj4gIGRyaXZl cnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMgfCAxNzIgKysrKysrKysrKysr LS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlv bnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJt LXNtbXUtdjMuYyBiL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMK PiBpbmRleCBjNjBiMDY3YzFmNTUzZS4uYjdmOTQ3ZTM2ZjU5NmYgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuYwo+ICsrKyBiL2RyaXZlcnMv aW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMKPiBAQCAtNDgsOCArNDgsMjAgQEAg ZW51bSBhcm1fc21tdV9tc2lfaW5kZXggewo+ICAJQVJNX1NNTVVfTUFYX01TSVMsCj4gIH07Cj4g IAo+IC1zdGF0aWMgdm9pZCBhcm1fc21tdV9zeW5jX3N0ZV9mb3Jfc2lkKHN0cnVjdCBhcm1fc21t dV9kZXZpY2UgKnNtbXUsCj4gLQkJCQkgICAgICBpb2FzaWRfdCBzaWQpOwo+ICtzdHJ1Y3QgYXJt X3NtbXVfZW50cnlfd3JpdGVyX29wczsKPiArc3RydWN0IGFybV9zbW11X2VudHJ5X3dyaXRlciB7 Cj4gKwljb25zdCBzdHJ1Y3QgYXJtX3NtbXVfZW50cnlfd3JpdGVyX29wcyAqb3BzOwo+ICsJc3Ry dWN0IGFybV9zbW11X21hc3RlciAqbWFzdGVyOwo+ICt9Owo+ICsKPiArc3RydWN0IGFybV9zbW11 X2VudHJ5X3dyaXRlcl9vcHMgewo+ICsJdW5zaWduZWQgaW50IG51bV9lbnRyeV9xd29yZHM7Cj4g KwlfX2xlNjQgdl9iaXQ7Cj4gKwl2b2lkICgqZ2V0X3VzZWQpKGNvbnN0IF9fbGU2NCAqZW50cnks IF9fbGU2NCAqdXNlZCk7Cj4gKwl2b2lkICgqc3luYykoc3RydWN0IGFybV9zbW11X2VudHJ5X3dy aXRlciAqd3JpdGVyKTsKPiArfTsKPiArCj4gKyNkZWZpbmUgTlVNX0VOVFJZX1FXT1JEUyAoc2l6 ZW9mKHN0cnVjdCBhcm1fc21tdV9zdGUpIC8gc2l6ZW9mKHU2NCkpCj4KPiAgc3RhdGljIHBoeXNf YWRkcl90IGFybV9zbW11X21zaV9jZmdbQVJNX1NNTVVfTUFYX01TSVNdWzNdID0gewo+ICAJW0VW VFFfTVNJX0lOREVYXSA9IHsKPiBAQCAtOTgyLDQzICs5OTQsNDIgQEAgdm9pZCBhcm1fc21tdV90 bGJfaW52X2FzaWQoc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSwgdTE2IGFzaWQpCj4gICAq IHdvdWxkIGJlIG5pY2UgaWYgdGhpcyB3YXMgY29tcGxldGUgYWNjb3JkaW5nIHRvIHRoZSBzcGVj LCBidXQgbWluaW1hbGx5IGl0Cj4gICAqIGhhcyB0byBjYXB0dXJlIHRoZSBiaXRzIHRoaXMgZHJp dmVyIHVzZXMuCj4gICAqLwo+IC1zdGF0aWMgdm9pZCBhcm1fc21tdV9nZXRfc3RlX3VzZWQoY29u c3Qgc3RydWN0IGFybV9zbW11X3N0ZSAqZW50LAo+IC0JCQkJICBzdHJ1Y3QgYXJtX3NtbXVfc3Rl ICp1c2VkX2JpdHMpCj4gK3N0YXRpYyB2b2lkIGFybV9zbW11X2dldF9zdGVfdXNlZChjb25zdCBf X2xlNjQgKmVudCwgX19sZTY0ICp1c2VkX2JpdHMpCj4gIHsKPiAtCXVuc2lnbmVkIGludCBjZmcg PSBGSUVMRF9HRVQoU1RSVEFCX1NURV8wX0NGRywgbGU2NF90b19jcHUoZW50LT5kYXRhWzBdKSk7 Cj4gKwl1bnNpZ25lZCBpbnQgY2ZnID0gRklFTERfR0VUKFNUUlRBQl9TVEVfMF9DRkcsIGxlNjRf dG9fY3B1KGVudFswXSkpOwo+ICAKPiAtCXVzZWRfYml0cy0+ZGF0YVswXSA9IGNwdV90b19sZTY0 KFNUUlRBQl9TVEVfMF9WKTsKPiAtCWlmICghKGVudC0+ZGF0YVswXSAmIGNwdV90b19sZTY0KFNU UlRBQl9TVEVfMF9WKSkpCj4gKwl1c2VkX2JpdHNbMF0gPSBjcHVfdG9fbGU2NChTVFJUQUJfU1RF XzBfVik7Cj4gKwlpZiAoIShlbnRbMF0gJiBjcHVfdG9fbGU2NChTVFJUQUJfU1RFXzBfVikpKQo+ ICAJCXJldHVybjsKPiAgCj4gLQl1c2VkX2JpdHMtPmRhdGFbMF0gfD0gY3B1X3RvX2xlNjQoU1RS VEFCX1NURV8wX0NGRyk7Cj4gKwl1c2VkX2JpdHNbMF0gfD0gY3B1X3RvX2xlNjQoU1RSVEFCX1NU RV8wX0NGRyk7Cj4gIAo+ICAJLyogUzEgdHJhbnNsYXRlcyAqLwo+ICAJaWYgKGNmZyAmIEJJVCgw KSkgewo+IC0JCXVzZWRfYml0cy0+ZGF0YVswXSB8PSBjcHVfdG9fbGU2NChTVFJUQUJfU1RFXzBf UzFGTVQgfAo+IC0JCQkJCQkgIFNUUlRBQl9TVEVfMF9TMUNUWFBUUl9NQVNLIHwKPiAtCQkJCQkJ ICBTVFJUQUJfU1RFXzBfUzFDRE1BWCk7Cj4gLQkJdXNlZF9iaXRzLT5kYXRhWzFdIHw9Cj4gKwkJ dXNlZF9iaXRzWzBdIHw9IGNwdV90b19sZTY0KFNUUlRBQl9TVEVfMF9TMUZNVCB8Cj4gKwkJCQkJ ICAgIFNUUlRBQl9TVEVfMF9TMUNUWFBUUl9NQVNLIHwKPiArCQkJCQkgICAgU1RSVEFCX1NURV8w X1MxQ0RNQVgpOwo+ICsJCXVzZWRfYml0c1sxXSB8PQo+ICAJCQljcHVfdG9fbGU2NChTVFJUQUJf U1RFXzFfUzFEU1MgfCBTVFJUQUJfU1RFXzFfUzFDSVIgfAo+ICAJCQkJICAgIFNUUlRBQl9TVEVf MV9TMUNPUiB8IFNUUlRBQl9TVEVfMV9TMUNTSCB8Cj4gIAkJCQkgICAgU1RSVEFCX1NURV8xX1Mx U1RBTExEIHwgU1RSVEFCX1NURV8xX1NUUlcgfAo+ICAJCQkJICAgIFNUUlRBQl9TVEVfMV9FQVRT KTsKPiAtCQl1c2VkX2JpdHMtPmRhdGFbMl0gfD0gY3B1X3RvX2xlNjQoU1RSVEFCX1NURV8yX1My Vk1JRCk7Cj4gKwkJdXNlZF9iaXRzWzJdIHw9IGNwdV90b19sZTY0KFNUUlRBQl9TVEVfMl9TMlZN SUQpOwo+ICAJfQo+ICAKPiAgCS8qIFMyIHRyYW5zbGF0ZXMgKi8KPiAgCWlmIChjZmcgJiBCSVQo MSkpIHsKPiAtCQl1c2VkX2JpdHMtPmRhdGFbMV0gfD0KPiArCQl1c2VkX2JpdHNbMV0gfD0KPiAg CQkJY3B1X3RvX2xlNjQoU1RSVEFCX1NURV8xX0VBVFMgfCBTVFJUQUJfU1RFXzFfU0hDRkcpOwo+ IC0JCXVzZWRfYml0cy0+ZGF0YVsyXSB8PQo+ICsJCXVzZWRfYml0c1syXSB8PQo+ICAJCQljcHVf dG9fbGU2NChTVFJUQUJfU1RFXzJfUzJWTUlEIHwgU1RSVEFCX1NURV8yX1ZUQ1IgfAo+ICAJCQkJ ICAgIFNUUlRBQl9TVEVfMl9TMkFBNjQgfCBTVFJUQUJfU1RFXzJfUzJFTkRJIHwKPiAgCQkJCSAg ICBTVFJUQUJfU1RFXzJfUzJQVFcgfCBTVFJUQUJfU1RFXzJfUzJSKTsKPiAtCQl1c2VkX2JpdHMt PmRhdGFbM10gfD0gY3B1X3RvX2xlNjQoU1RSVEFCX1NURV8zX1MyVFRCX01BU0spOwo+ICsJCXVz ZWRfYml0c1szXSB8PSBjcHVfdG9fbGU2NChTVFJUQUJfU1RFXzNfUzJUVEJfTUFTSyk7Cj4gIAl9 Cj4gIAo+ICAJaWYgKGNmZyA9PSBTVFJUQUJfU1RFXzBfQ0ZHX0JZUEFTUykKPiAtCQl1c2VkX2Jp dHMtPmRhdGFbMV0gfD0gY3B1X3RvX2xlNjQoU1RSVEFCX1NURV8xX1NIQ0ZHKTsKPiArCQl1c2Vk X2JpdHNbMV0gfD0gY3B1X3RvX2xlNjQoU1RSVEFCX1NURV8xX1NIQ0ZHKTsKPiAgfQo+ICAKPiAg LyoKPiBAQCAtMTAyNyw1NyArMTAzOCw1NSBAQCBzdGF0aWMgdm9pZCBhcm1fc21tdV9nZXRfc3Rl X3VzZWQoY29uc3Qgc3RydWN0IGFybV9zbW11X3N0ZSAqZW50LAo+ICAgKiB1bnVzZWRfdXBkYXRl IGlzIGFuIGludGVybWVkaWF0ZSB2YWx1ZSBvZiBlbnRyeSB0aGF0IGhhcyB1bnVzZWQgYml0cyBz ZXQgdG8KPiAgICogdGhlaXIgbmV3IHZhbHVlcy4KPiAgICovCj4gLXN0YXRpYyB1OCBhcm1fc21t dV9lbnRyeV9xd29yZF9kaWZmKGNvbnN0IHN0cnVjdCBhcm1fc21tdV9zdGUgKmVudHJ5LAo+IC0J CQkJICAgIGNvbnN0IHN0cnVjdCBhcm1fc21tdV9zdGUgKnRhcmdldCwKPiAtCQkJCSAgICBzdHJ1 Y3QgYXJtX3NtbXVfc3RlICp1bnVzZWRfdXBkYXRlKQo+ICtzdGF0aWMgdTggYXJtX3NtbXVfZW50 cnlfcXdvcmRfZGlmZihzdHJ1Y3QgYXJtX3NtbXVfZW50cnlfd3JpdGVyICp3cml0ZXIsCj4gKwkJ CQkgICAgY29uc3QgX19sZTY0ICplbnRyeSwgY29uc3QgX19sZTY0ICp0YXJnZXQsCj4gKwkJCQkg ICAgX19sZTY0ICp1bnVzZWRfdXBkYXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgYXJtX3NtbXVfc3RlIHRh cmdldF91c2VkID0ge307Cj4gLQlzdHJ1Y3QgYXJtX3NtbXVfc3RlIGN1cl91c2VkID0ge307Cj4g KwlfX2xlNjQgdGFyZ2V0X3VzZWRbTlVNX0VOVFJZX1FXT1JEU10gPSB7fTsKPiArCV9fbGU2NCBj dXJfdXNlZFtOVU1fRU5UUllfUVdPUkRTXSA9IHt9OwpUaGlzIGlzIGNvbmZ1c2luZyB0byBtZSwg dGhlIGZ1bmN0aW9uIHdhcyBtb2RpZmllZCB0byBiZSBnZW5lcmljLCBzbyBpdHMgaGFzCmFyZ3Mg YXJlIF9fbGU2NCAqIGluc3RlYWQgb2Ygc3RydWN0IGFybV9zbW11X3N0ZSAqLgpCdXQgTlVNX0VO VFJZX1FXT1JEUyBpcyBkZWZpbmVkIGFzIOKAnChzaXplb2Yoc3RydWN0IGFybV9zbW11X3N0ZSkg LyBzaXplb2YodTY0KSnigJ0KYW5kIGluIHRoZSBzYW1lIGZ1bmN0aW9uIHdyaXRlci0+b3BzLT5u dW1fZW50cnlfcXdvcmRzIGlzIHVzZWQgbnRlcmNoYW5nZWFibHksCkkgdW5kZXJzdGFuZCB0aGF0 IHRoaXMgbm90IGEgY29uc3RhbnQgYW5kIHRoZSBjb21waWxlciB3b3VsZCBjb21wbGFpbi4KQnV0 IHNpbmNlIGZvciBhbnkgb3RoZXIgbnVtX2VudHJ5X3F3b3JkcyBsYXJnZXIgdGhhbiBOVU1fRU5U UllfUVdPUkRTIGl0IGZhaWxzLAphbmQgd2Uga25vdyBTVEVzIGFuZCBDRHMgYm90aCBoYXZlIHRo ZSBzYW1lIHNpemUsIHdlIHNpbXBsaWZ5IHRoZSBjb2RlIGFuZCBtYWtlCml0IGEgY29uc3RhbnQg ZXZlcnl3aGVyZS4KCkkgc2VlIGluIHRoZSBuZXh0IHBhdGNoLCB0aGF0IHRoaXMgaXMgcmVkZWZp bmVkIHRvIGJlIHRoZSBtYXggYmV0d2VlbiBTVEUgYW5kCkNELCBidXQgYWdhaW4sIHRoaXMgaGFy ZHdhcmUgYW5kIGl0IG5ldmVyIGNoYW5nZXMsIHNvIG15IG9waW5pb24gaXMgdG8gc2ltcGxpZnkK dGhlIGNvZGUsIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhbGl6ZSB0aGlzIHBhcnQuCgo+ ICAJdTggdXNlZF9xd29yZF9kaWZmID0gMDsKPiAgCXVuc2lnbmVkIGludCBpOwo+ICAKPiAtCWFy bV9zbW11X2dldF9zdGVfdXNlZChlbnRyeSwgJmN1cl91c2VkKTsKPiAtCWFybV9zbW11X2dldF9z dGVfdXNlZCh0YXJnZXQsICZ0YXJnZXRfdXNlZCk7Cj4gKwl3cml0ZXItPm9wcy0+Z2V0X3VzZWQo ZW50cnksIGN1cl91c2VkKTsKPiArCXdyaXRlci0+b3BzLT5nZXRfdXNlZCh0YXJnZXQsIHRhcmdl dF91c2VkKTsKPiAgCj4gLQlmb3IgKGkgPSAwOyBpICE9IEFSUkFZX1NJWkUodGFyZ2V0X3VzZWQu ZGF0YSk7IGkrKykgewo+ICsJZm9yIChpID0gMDsgaSAhPSB3cml0ZXItPm9wcy0+bnVtX2VudHJ5 X3F3b3JkczsgaSsrKSB7Cj4gIAkJLyoKPiAgCQkgKiBDaGVjayB0aGF0IG1hc2tzIGFyZSB1cCB0 byBkYXRlLCB0aGUgbWFrZSBmdW5jdGlvbnMgYXJlIG5vdAo+ICAJCSAqIGFsbG93ZWQgdG8gc2V0 IGEgYml0IHRvIDEgaWYgdGhlIHVzZWQgZnVuY3Rpb24gZG9lc24ndCBzYXkgaXQKPiAgCQkgKiBp cyB1c2VkLgo+ICAJCSAqLwo+IC0JCVdBUk5fT05fT05DRSh0YXJnZXQtPmRhdGFbaV0gJiB+dGFy Z2V0X3VzZWQuZGF0YVtpXSk7Cj4gKwkJV0FSTl9PTl9PTkNFKHRhcmdldFtpXSAmIH50YXJnZXRf dXNlZFtpXSk7Cj4gIAo+ICAJCS8qIEJpdHMgY2FuIGNoYW5nZSBiZWNhdXNlIHRoZXkgYXJlIG5v dCBjdXJyZW50bHkgYmVpbmcgdXNlZCAqLwo+IC0JCXVudXNlZF91cGRhdGUtPmRhdGFbaV0gPSAo ZW50cnktPmRhdGFbaV0gJiBjdXJfdXNlZC5kYXRhW2ldKSB8Cj4gLQkJCQkJICh0YXJnZXQtPmRh dGFbaV0gJiB+Y3VyX3VzZWQuZGF0YVtpXSk7Cj4gKwkJdW51c2VkX3VwZGF0ZVtpXSA9IChlbnRy eVtpXSAmIGN1cl91c2VkW2ldKSB8Cj4gKwkJCQkgICAodGFyZ2V0W2ldICYgfmN1cl91c2VkW2ld KTsKPiAgCQkvKgo+ICAJCSAqIEVhY2ggYml0IGluZGljYXRlcyB0aGF0IGEgdXNlZCBiaXQgaW4g YSBxd29yZCBuZWVkcyB0byBiZQo+ICAJCSAqIGNoYW5nZWQgYWZ0ZXIgdW51c2VkX3VwZGF0ZSBp cyBhcHBsaWVkLgo+ICAJCSAqLwo+IC0JCWlmICgodW51c2VkX3VwZGF0ZS0+ZGF0YVtpXSAmIHRh cmdldF91c2VkLmRhdGFbaV0pICE9Cj4gLQkJICAgIHRhcmdldC0+ZGF0YVtpXSkKPiArCQlpZiAo KHVudXNlZF91cGRhdGVbaV0gJiB0YXJnZXRfdXNlZFtpXSkgIT0gdGFyZ2V0W2ldKQo+ICAJCQl1 c2VkX3F3b3JkX2RpZmYgfD0gMSA8PCBpOwo+ICAJfQo+ICAJcmV0dXJuIHVzZWRfcXdvcmRfZGlm ZjsKPiAgfQo+ICAKPiAtc3RhdGljIGJvb2wgZW50cnlfc2V0KHN0cnVjdCBhcm1fc21tdV9kZXZp Y2UgKnNtbXUsIGlvYXNpZF90IHNpZCwKPiAtCQkgICAgICBzdHJ1Y3QgYXJtX3NtbXVfc3RlICpl bnRyeSwKPiAtCQkgICAgICBjb25zdCBzdHJ1Y3QgYXJtX3NtbXVfc3RlICp0YXJnZXQsIHVuc2ln bmVkIGludCBzdGFydCwKPiArc3RhdGljIGJvb2wgZW50cnlfc2V0KHN0cnVjdCBhcm1fc21tdV9l bnRyeV93cml0ZXIgKndyaXRlciwgX19sZTY0ICplbnRyeSwKPiArCQkgICAgICBjb25zdCBfX2xl NjQgKnRhcmdldCwgdW5zaWduZWQgaW50IHN0YXJ0LAo+ICAJCSAgICAgIHVuc2lnbmVkIGludCBs ZW4pCj4gIHsKPiAgCWJvb2wgY2hhbmdlZCA9IGZhbHNlOwo+ICAJdW5zaWduZWQgaW50IGk7Cj4g IAo+ICAJZm9yIChpID0gc3RhcnQ7IGxlbiAhPSAwOyBsZW4tLSwgaSsrKSB7Cj4gLQkJaWYgKGVu dHJ5LT5kYXRhW2ldICE9IHRhcmdldC0+ZGF0YVtpXSkgewo+IC0JCQlXUklURV9PTkNFKGVudHJ5 LT5kYXRhW2ldLCB0YXJnZXQtPmRhdGFbaV0pOwo+ICsJCWlmIChlbnRyeVtpXSAhPSB0YXJnZXRb aV0pIHsKPiArCQkJV1JJVEVfT05DRShlbnRyeVtpXSwgdGFyZ2V0W2ldKTsKPiAgCQkJY2hhbmdl ZCA9IHRydWU7Cj4gIAkJfQo+ICAJfQo+ICAKPiAgCWlmIChjaGFuZ2VkKQo+IC0JCWFybV9zbW11 X3N5bmNfc3RlX2Zvcl9zaWQoc21tdSwgc2lkKTsKPiArCQl3cml0ZXItPm9wcy0+c3luYyh3cml0 ZXIpOwo+ICAJcmV0dXJuIGNoYW5nZWQ7Cj4gIH0KPiAgCj4gQEAgLTExMDcsMTcgKzExMTYsMTUg QEAgc3RhdGljIGJvb2wgZW50cnlfc2V0KHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUsIGlv YXNpZF90IHNpZCwKPiAgICogVj0wIHByb2Nlc3MuIFRoaXMgcmVsaWVzIG9uIHRoZSBJR05PUkVE IGJlaGF2aW9yIGRlc2NyaWJlZCBpbiB0aGUKPiAgICogc3BlY2lmaWNhdGlvbi4KPiAgICovCj4g LXN0YXRpYyB2b2lkIGFybV9zbW11X3dyaXRlX3N0ZShzdHJ1Y3QgYXJtX3NtbXVfbWFzdGVyICpt YXN0ZXIsIHUzMiBzaWQsCj4gLQkJCSAgICAgICBzdHJ1Y3QgYXJtX3NtbXVfc3RlICplbnRyeSwK PiAtCQkJICAgICAgIGNvbnN0IHN0cnVjdCBhcm1fc21tdV9zdGUgKnRhcmdldCkKPiArc3RhdGlj IHZvaWQgYXJtX3NtbXVfd3JpdGVfZW50cnkoc3RydWN0IGFybV9zbW11X2VudHJ5X3dyaXRlciAq d3JpdGVyLAo+ICsJCQkJIF9fbGU2NCAqZW50cnksIGNvbnN0IF9fbGU2NCAqdGFyZ2V0KQo+ICB7 Cj4gLQl1bnNpZ25lZCBpbnQgbnVtX2VudHJ5X3F3b3JkcyA9IEFSUkFZX1NJWkUodGFyZ2V0LT5k YXRhKTsKPiAtCXN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUgPSBtYXN0ZXItPnNtbXU7Cj4g LQlzdHJ1Y3QgYXJtX3NtbXVfc3RlIHVudXNlZF91cGRhdGU7Cj4gKwl1bnNpZ25lZCBpbnQgbnVt X2VudHJ5X3F3b3JkcyA9IHdyaXRlci0+b3BzLT5udW1fZW50cnlfcXdvcmRzOwo+ICsJX19sZTY0 IHVudXNlZF91cGRhdGVbTlVNX0VOVFJZX1FXT1JEU107Cj4gIAl1OCB1c2VkX3F3b3JkX2RpZmY7 Cj4gIAo+ICAJdXNlZF9xd29yZF9kaWZmID0KPiAtCQlhcm1fc21tdV9lbnRyeV9xd29yZF9kaWZm KGVudHJ5LCB0YXJnZXQsICZ1bnVzZWRfdXBkYXRlKTsKPiArCQlhcm1fc21tdV9lbnRyeV9xd29y ZF9kaWZmKHdyaXRlciwgZW50cnksIHRhcmdldCwgdW51c2VkX3VwZGF0ZSk7Cj4gIAlpZiAoaHdl aWdodDgodXNlZF9xd29yZF9kaWZmKSA9PSAxKSB7Cj4gIAkJLyoKPiAgCQkgKiBPbmx5IG9uZSBx d29yZCBuZWVkcyBpdHMgdXNlZCBiaXRzIHRvIGJlIGNoYW5nZWQuIFRoaXMgaXMgYQo+IEBAIC0x MTMzLDIyICsxMTQwLDIxIEBAIHN0YXRpYyB2b2lkIGFybV9zbW11X3dyaXRlX3N0ZShzdHJ1Y3Qg YXJtX3NtbXVfbWFzdGVyICptYXN0ZXIsIHUzMiBzaWQsCj4gIAkJICogd3JpdGluZyBpdCBpbiB0 aGUgbmV4dCBzdGVwIGFueXdheXMuIFRoaXMgY2FuIHNhdmUgYSBzeW5jCj4gIAkJICogd2hlbiB0 aGUgb25seSBjaGFuZ2UgaXMgaW4gdGhhdCBxd29yZC4KPiAgCQkgKi8KPiAtCQl1bnVzZWRfdXBk YXRlLmRhdGFbY3JpdGljYWxfcXdvcmRfaW5kZXhdID0KPiAtCQkJZW50cnktPmRhdGFbY3JpdGlj YWxfcXdvcmRfaW5kZXhdOwo+IC0JCWVudHJ5X3NldChzbW11LCBzaWQsIGVudHJ5LCAmdW51c2Vk X3VwZGF0ZSwgMCwgbnVtX2VudHJ5X3F3b3Jkcyk7Cj4gLQkJZW50cnlfc2V0KHNtbXUsIHNpZCwg ZW50cnksIHRhcmdldCwgY3JpdGljYWxfcXdvcmRfaW5kZXgsIDEpOwo+IC0JCWVudHJ5X3NldChz bW11LCBzaWQsIGVudHJ5LCB0YXJnZXQsIDAsIG51bV9lbnRyeV9xd29yZHMpOwo+ICsJCXVudXNl ZF91cGRhdGVbY3JpdGljYWxfcXdvcmRfaW5kZXhdID0KPiArCQkJZW50cnlbY3JpdGljYWxfcXdv cmRfaW5kZXhdOwo+ICsJCWVudHJ5X3NldCh3cml0ZXIsIGVudHJ5LCB1bnVzZWRfdXBkYXRlLCAw LCBudW1fZW50cnlfcXdvcmRzKTsKPiArCQllbnRyeV9zZXQod3JpdGVyLCBlbnRyeSwgdGFyZ2V0 LCBjcml0aWNhbF9xd29yZF9pbmRleCwgMSk7Cj4gKwkJZW50cnlfc2V0KHdyaXRlciwgZW50cnks IHRhcmdldCwgMCwgbnVtX2VudHJ5X3F3b3Jkcyk7Cj4gIAl9IGVsc2UgaWYgKHVzZWRfcXdvcmRf ZGlmZikgewo+ICAJCS8qCj4gIAkJICogQXQgbGVhc3QgdHdvIHF3b3JkcyBuZWVkIHRoZWlyIGlu dXNlIGJpdHMgdG8gYmUgY2hhbmdlZC4gVGhpcwo+ICAJCSAqIHJlcXVpcmVzIGEgYnJlYWtpbmcg dXBkYXRlLCB6ZXJvIHRoZSBWIGJpdCwgd3JpdGUgYWxsIHF3b3Jkcwo+ICAJCSAqIGJ1dCAwLCB0 aGVuIHNldCBxd29yZCAwCj4gIAkJICovCj4gLQkJdW51c2VkX3VwZGF0ZS5kYXRhWzBdID0gZW50 cnktPmRhdGFbMF0gJgo+IC0JCQkJCWNwdV90b19sZTY0KH5TVFJUQUJfU1RFXzBfVik7Cj4gLQkJ ZW50cnlfc2V0KHNtbXUsIHNpZCwgZW50cnksICZ1bnVzZWRfdXBkYXRlLCAwLCAxKTsKPiAtCQll bnRyeV9zZXQoc21tdSwgc2lkLCBlbnRyeSwgdGFyZ2V0LCAxLCBudW1fZW50cnlfcXdvcmRzIC0g MSk7Cj4gLQkJZW50cnlfc2V0KHNtbXUsIHNpZCwgZW50cnksIHRhcmdldCwgMCwgMSk7Cj4gKwkJ dW51c2VkX3VwZGF0ZVswXSA9IGVudHJ5WzBdICYgKH53cml0ZXItPm9wcy0+dl9iaXQpOwo+ICsJ CWVudHJ5X3NldCh3cml0ZXIsIGVudHJ5LCB1bnVzZWRfdXBkYXRlLCAwLCAxKTsKPiArCQllbnRy eV9zZXQod3JpdGVyLCBlbnRyeSwgdGFyZ2V0LCAxLCBudW1fZW50cnlfcXdvcmRzIC0gMSk7Cj4g KwkJZW50cnlfc2V0KHdyaXRlciwgZW50cnksIHRhcmdldCwgMCwgMSk7Cj4gIAl9IGVsc2Ugewo+ ICAJCS8qCj4gIAkJICogTm8gaW51c2UgYml0IGNoYW5nZWQuIFNhbml0eSBjaGVjayB0aGF0IGFs bCB1bnVzZWQgYml0cyBhcmUgMAo+IEBAIC0xMTU2LDE4ICsxMTYyLDcgQEAgc3RhdGljIHZvaWQg YXJtX3NtbXVfd3JpdGVfc3RlKHN0cnVjdCBhcm1fc21tdV9tYXN0ZXIgKm1hc3RlciwgdTMyIHNp ZCwKPiAgCQkgKiBjb21wdXRlX3F3b3JkX2RpZmYoKS4KPiAgCQkgKi8KPiAgCQlXQVJOX09OX09O Q0UoCj4gLQkJCWVudHJ5X3NldChzbW11LCBzaWQsIGVudHJ5LCB0YXJnZXQsIDAsIG51bV9lbnRy eV9xd29yZHMpKTsKPiAtCX0KPiAtCj4gLQkvKiBJdCdzIGxpa2VseSB0aGF0IHdlJ2xsIHdhbnQg dG8gdXNlIHRoZSBuZXcgU1RFIHNvb24gKi8KPiAtCWlmICghKHNtbXUtPm9wdGlvbnMgJiBBUk1f U01NVV9PUFRfU0tJUF9QUkVGRVRDSCkpIHsKPiAtCQlzdHJ1Y3QgYXJtX3NtbXVfY21kcV9lbnQK PiAtCQkJcHJlZmV0Y2hfY21kID0geyAub3Bjb2RlID0gQ01EUV9PUF9QUkVGRVRDSF9DRkcsCj4g LQkJCQkJIC5wcmVmZXRjaCA9IHsKPiAtCQkJCQkJIC5zaWQgPSBzaWQsCj4gLQkJCQkJIH0gfTsK PiAtCj4gLQkJYXJtX3NtbXVfY21kcV9pc3N1ZV9jbWQoc21tdSwgJnByZWZldGNoX2NtZCk7Cj4g KwkJCWVudHJ5X3NldCh3cml0ZXIsIGVudHJ5LCB0YXJnZXQsIDAsIG51bV9lbnRyeV9xd29yZHMp KTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAtMTQ0MCwxNyArMTQzNSw1OCBAQCBhcm1fc21tdV93cml0 ZV9zdHJ0YWJfbDFfZGVzYyhfX2xlNjQgKmRzdCwgc3RydWN0IGFybV9zbW11X3N0cnRhYl9sMV9k ZXNjICpkZXNjKQo+ICAJV1JJVEVfT05DRSgqZHN0LCBjcHVfdG9fbGU2NCh2YWwpKTsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgYXJtX3NtbXVfc3luY19zdGVfZm9yX3NpZChzdHJ1Y3QgYXJtX3Nt bXVfZGV2aWNlICpzbW11LCB1MzIgc2lkKQo+ICtzdHJ1Y3QgYXJtX3NtbXVfc3RlX3dyaXRlciB7 Cj4gKwlzdHJ1Y3QgYXJtX3NtbXVfZW50cnlfd3JpdGVyIHdyaXRlcjsKPiArCXUzMiBzaWQ7Cj4g K307Cj4gKwo+ICtzdGF0aWMgdm9pZCBhcm1fc21tdV9zdGVfd3JpdGVyX3N5bmNfZW50cnkoc3Ry dWN0IGFybV9zbW11X2VudHJ5X3dyaXRlciAqd3JpdGVyKQo+ICB7Cj4gKwlzdHJ1Y3QgYXJtX3Nt bXVfc3RlX3dyaXRlciAqc3RlX3dyaXRlciA9Cj4gKwkJY29udGFpbmVyX29mKHdyaXRlciwgc3Ry dWN0IGFybV9zbW11X3N0ZV93cml0ZXIsIHdyaXRlcik7Cj4gIAlzdHJ1Y3QgYXJtX3NtbXVfY21k cV9lbnQgY21kID0gewo+ICAJCS5vcGNvZGUJPSBDTURRX09QX0NGR0lfU1RFLAo+ICAJCS5jZmdp CT0gewo+IC0JCQkuc2lkCT0gc2lkLAo+ICsJCQkuc2lkCT0gc3RlX3dyaXRlci0+c2lkLAo+ICAJ CQkubGVhZgk9IHRydWUsCj4gIAkJfSwKPiAgCX07Cj4gIAo+IC0JYXJtX3NtbXVfY21kcV9pc3N1 ZV9jbWRfd2l0aF9zeW5jKHNtbXUsICZjbWQpOwo+ICsJYXJtX3NtbXVfY21kcV9pc3N1ZV9jbWRf d2l0aF9zeW5jKHdyaXRlci0+bWFzdGVyLT5zbW11LCAmY21kKTsKPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBhcm1fc21tdV9lbnRyeV93cml0ZXJfb3BzIGFybV9zbW11X3N0ZV93cml0 ZXJfb3BzID0gewo+ICsJLnN5bmMgPSBhcm1fc21tdV9zdGVfd3JpdGVyX3N5bmNfZW50cnksCj4g KwkuZ2V0X3VzZWQgPSBhcm1fc21tdV9nZXRfc3RlX3VzZWQsCj4gKwkudl9iaXQgPSBjcHVfdG9f bGU2NChTVFJUQUJfU1RFXzBfViksCj4gKwkubnVtX2VudHJ5X3F3b3JkcyA9IHNpemVvZihzdHJ1 Y3QgYXJtX3NtbXVfc3RlKSAvIHNpemVvZih1NjQpLAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQg YXJtX3NtbXVfd3JpdGVfc3RlKHN0cnVjdCBhcm1fc21tdV9tYXN0ZXIgKm1hc3RlciwgdTMyIHNp ZCwKPiArCQkJICAgICAgIHN0cnVjdCBhcm1fc21tdV9zdGUgKnN0ZSwKPiArCQkJICAgICAgIGNv bnN0IHN0cnVjdCBhcm1fc21tdV9zdGUgKnRhcmdldCkKPiArewo+ICsJc3RydWN0IGFybV9zbW11 X2RldmljZSAqc21tdSA9IG1hc3Rlci0+c21tdTsKPiArCXN0cnVjdCBhcm1fc21tdV9zdGVfd3Jp dGVyIHN0ZV93cml0ZXIgPSB7Cj4gKwkJLndyaXRlciA9IHsKPiArCQkJLm9wcyA9ICZhcm1fc21t dV9zdGVfd3JpdGVyX29wcywKPiArCQkJLm1hc3RlciA9IG1hc3RlciwKPiArCQl9LAo+ICsJCS5z aWQgPSBzaWQsCj4gKwl9Owo+ICsKPiArCWFybV9zbW11X3dyaXRlX2VudHJ5KCZzdGVfd3JpdGVy LndyaXRlciwgc3RlLT5kYXRhLCB0YXJnZXQtPmRhdGEpOwo+ICsKPiArCS8qIEl0J3MgbGlrZWx5 IHRoYXQgd2UnbGwgd2FudCB0byB1c2UgdGhlIG5ldyBTVEUgc29vbiAqLwo+ICsJaWYgKCEoc21t dS0+b3B0aW9ucyAmIEFSTV9TTU1VX09QVF9TS0lQX1BSRUZFVENIKSkgewo+ICsJCXN0cnVjdCBh cm1fc21tdV9jbWRxX2VudAo+ICsJCQlwcmVmZXRjaF9jbWQgPSB7IC5vcGNvZGUgPSBDTURRX09Q X1BSRUZFVENIX0NGRywKPiArCQkJCQkgLnByZWZldGNoID0gewo+ICsJCQkJCQkgLnNpZCA9IHNp ZCwKPiArCQkJCQkgfSB9Owo+ICsKPiArCQlhcm1fc21tdV9jbWRxX2lzc3VlX2NtZChzbW11LCAm cHJlZmV0Y2hfY21kKTsKPiArCX0KPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgYXJtX3NtbXVfbWFr ZV9hYm9ydF9zdGUoc3RydWN0IGFybV9zbW11X3N0ZSAqdGFyZ2V0KQo+IC0tIAo+IDIuNDMuMgo+ ClRoYW5rcywKTW9zdGFmYQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtYXJtLWtlcm5lbAo=