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 9337DC4332F for ; Sat, 7 May 2022 18:21:13 +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=RSez1ttyB1ybPhfZa3VTjtmdreneeLPRjFkkGoQQrfE=; b=kLg3fyy7vV53hF Cr/nNyhGCwIqS/xADLGz7H3Rw2RE2ovqBnCFVo7ZZU/0f1PqhR+qqwD0KUWMSiYRdcLaYku08yw8x IP8SO7F5Bn9Q2IcqL86vgrjFtNIrTjpWrGfW/BYnafNcZ5ozO+6/mcRWjBCIwwq9hLT7ck9iNMPfe Tak5eYlFCFoVAJ5esKlGCRgAMdS6nUpdGUKp1Y6fcLj8oeanuA4O1GvgJvXpFAXj6ywfl9jALMTql sfAK2CLSTNd7ww0uFTqS3+Na/FMktgSf5yVVzi7Tts2NlBka7NYY3uIR17/Xdlj3BU7iZxFrzki5f hFvEYib0kjSAH48k54ng==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nnP28-007vXJ-6G; Sat, 07 May 2022 18:20:00 +0000 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nnP1Y-007vFJ-Un for linux-arm-kernel@lists.infradead.org; Sat, 07 May 2022 18:19:27 +0000 Received: by mail-wm1-x330.google.com with SMTP id q20so6254443wmq.1 for ; Sat, 07 May 2022 11:19:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/tE24Epa/B9t6hINhti+0qrrH2Ayc1ZVkfo5g4wLeJM=; b=pHunhm5LcGaWGqSqpnCaJLx1HKwwGm+QcAnyHXni4G05/DDzLu2dBCIMlTSs7Kro1r Imn+rsvPoXSJMbnO9sqeeo6fJ0w/25pXPesstI2pdMmYSHfUc4SHlTQw98HSRt1LNzk8 x153rz6Sd6vfTRIX0+v3B5mC4ntIR/NWR2YUs8BMSHF5A/agx379p/zUe5ACZoNhwHDZ NPCdJK9Inl/jdm8S1FpBqyILR9jorjdbdrJR+jR/4DRbHzewrO/YMAp8eRwi1fA3FfD+ aABoI/isygKUQxu1kQNlDPhC/e19Jz2I8BoUYqpdFbYShAwaVq8FSMb30nCHea6JeW0L hjwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/tE24Epa/B9t6hINhti+0qrrH2Ayc1ZVkfo5g4wLeJM=; b=qA2WPq7jPfoKrARxbosUxEfwxzR7Xxb9kX93g1UFF85hxkf2Qak4e6+03BWxBHJ1+s uXA7fUCtP7kttPNvv74XwCsM9K7Jl9mItUqWfpifanQXDAs8lfbvntCkTB74AI46cW5F sTtkawlSho9WsyDRdIVusUDcQG/i3koNhtA14mGr3RhPn/fq45HX1wqptQ4vhKfyGxAT pLneNJgcN+VxwENyyWD6sygh3JStnzwrWpoQ0UNl80Ul9CvB2mu2KWM5Amyj2pPQegxw shD8tzofD3t8gp5wYdulIsZVTw+QQgeA8cVNkmqZ1RNFpjQXTjJHaYgeu3ZphbU9vJYg MG1Q== X-Gm-Message-State: AOAM532GByN6E11M+54A3mJMIxUWIXsjV8NAGHFXozHfrWToKlUA4/eT nPaqME2bdxYmUQpHbAkWFyw= X-Google-Smtp-Source: ABdhPJxBOOgVAgBRCVt+whQtaQ1bMotolbL617ZTixMBeupKujHPOUz5W2K18bpkn4k6f+wihFjJ5g== X-Received: by 2002:a05:600c:1909:b0:394:47d2:eca9 with SMTP id j9-20020a05600c190900b0039447d2eca9mr15802949wmq.82.1651947563308; Sat, 07 May 2022 11:19:23 -0700 (PDT) Received: from otyshchenko.router ([212.22.223.21]) by smtp.gmail.com with ESMTPSA id b10-20020a5d4d8a000000b0020c5253d8f3sm8198457wru.63.2022.05.07.11.19.21 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 07 May 2022 11:19:22 -0700 (PDT) From: Oleksandr Tyshchenko To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Juergen Gross , Boris Ostrovsky , Stefano Stabellini , Julien Grall , Oleksandr Tyshchenko , "Michael S. Tsirkin" , Christoph Hellwig Subject: [PATCH V2 3/7] xen/grant-dma-ops: Add option to restrict memory access under Xen Date: Sat, 7 May 2022 21:19:04 +0300 Message-Id: <1651947548-4055-4-git-send-email-olekstysh@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1651947548-4055-1-git-send-email-olekstysh@gmail.com> References: <1651947548-4055-1-git-send-email-olekstysh@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220507_111925_075892_0F2F288D X-CRM114-Status: GOOD ( 31.87 ) 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 RnJvbTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgoKSW50cm9kdWNlIFhlbiBncmFu dCBETUEtbWFwcGluZyBsYXllciB3aGljaCBjb250YWlucyBzcGVjaWFsIERNQS1tYXBwaW5nCnJv dXRpbmVzIGZvciBwcm92aWRpbmcgZ3JhbnQgcmVmZXJlbmNlcyBhcyBETUEgYWRkcmVzc2VzIHRv IGJlIHVzZWQgYnkKZnJvbnRlbmRzIChlLmcuIHZpcnRpbykgaW4gWGVuIGd1ZXN0cy4KCkFkZCB0 aGUgbmVlZGVkIGZ1bmN0aW9uYWxpdHkgYnkgcHJvdmlkaW5nIGEgc3BlY2lhbCBzZXQgb2YgRE1B IG9wcwpoYW5kbGluZyB0aGUgbmVlZGVkIGdyYW50IG9wZXJhdGlvbnMgZm9yIHRoZSBJL08gcGFn ZXMuCgpUaGUgc3Vic2VxdWVudCBjb21taXQgd2lsbCBpbnRyb2R1Y2UgdGhlIHVzZSBjYXNlIGZv ciB4ZW4tZ3JhbnQgRE1BIG9wcwpsYXllciB0byBlbmFibGUgdXNpbmcgdmlydGlvIGRldmljZXMg aW4gWGVuIGd1ZXN0cyBpbiBhIHNhZmUgbWFubmVyLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBH cm9zcyA8amdyb3NzQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgVHlzaGNoZW5r byA8b2xla3NhbmRyX3R5c2hjaGVua29AZXBhbS5jb20+Ci0tLQpDaGFuZ2VzIFJGQyAtPiBWMToK ICAgLSBzcXVhc2ggd2l0aCBhbG1vc3QgYWxsIGNoYW5nZXMgZnJvbSBjb21taXQgKGV4Y2VwdCBo YW5kbGluZyAieGVuLGRldi1kb21pZCIKICAgICBwcm9wZXJ0eSk6CiAgICAgIltQQVRDSCA0LzZd IHZpcnRpbzogVmFyaW91cyB1cGRhdGVzIHRvIHhlbi12aXJ0aW8gRE1BIG9wcyBsYXllciIKICAg LSB1cGRhdGUgY29tbWl0IHN1YmplY3QvZGVzY3JpcHRpb24gYW5kIGNvbW1lbnRzIGluIGNvZGUK ICAgLSBsZWF2ZSBvbmx5IHNpbmdsZSBLY29uZmlnIG9wdGlvbiBYRU5fVklSVElPIGFuZCByZW1v dmUgYXJjaGl0ZWN0dXJhbAogICAgIGRlcGVuZGVuY2llcwogICAtIGludHJvZHVjZSBjb21tb24g eGVuX2hhc19yZXN0cmljdGVkX3ZpcnRpb19tZW1vcnlfYWNjZXNzKCkgaW4geGVuLmgKICAgICBh bmQgdXBkYXRlIGFyY2hfaGFzX3Jlc3RyaWN0ZWRfdmlydGlvX21lbW9yeV9hY2Nlc3MoKSBmb3Ig Ym90aAogICAgIEFybSBhbmQgeDg2IHRvIGNhbGwgbmV3IGhlbHBlcgogICAtIHVzZSAoMVVMTCA8 PCA2MykgaW5zdGVhZCBvZiAweDgwMDAwMDAwMDAwMDAwMDBVTEwgZm9yIFhFTl9HUkFOVF9BRERS X09GRgogICAtIGltcGxlbWVudCB4ZW5fdmlydGlvX2RtYV9tYXAodW5tYXApX3NnKCkgdXNpbmcg ZXhhbXBsZSBpbiBzd2lvdGxiLXhlbi5jCiAgIC0gb3B0aW1pemUgcGFkZGluZyBieSBtb3Zpbmcg ImJyb2tlbiIgZmllbGQgaW4gc3RydWN0IHhlbl92aXJ0aW9fZGF0YQogICAtIHJlbW92ZSB1bm5l ZWRlZCBwZXItZGV2aWNlIHNwaW5sb2NrCiAgIC0gcmVtb3ZlIHRoZSBpbmNsdXNpb24gb2Ygdmly dGlvX2NvbmZpZy5oCiAgIC0gcmVtYW5lIGV2ZXJ5dGhpbmcgYWNjb3JkaW5nIHRvIHRoZSBuZXcg bmFtaW5nIHNjaGVtZToKICAgICBzL3ZpcnRpby9ncmFudF9kbWEKICAgLSBhZGQgbmV3IGhpZGRl biBjb25maWcgb3B0aW9uIFhFTl9HUkFOVF9ETUFfT1BTCgpDaGFuZ2VzIFYxIC0+IFYyOgogICAt IGZpeCBjaGVja3BhdGNoLnBsIHdhcm5pbmdzCiAgIC0gcmVtb3ZlIHRoZSBpbmNsdXNpb24gb2Yg bGludXgvcGNpLmgKICAgLSByZXdvcmsgdG8gdXNlIHhhcnJheSBmb3IgZGF0YSBjb250ZXh0CiAg IC0gcmVtb3ZlIEVYUE9SVF9TWU1CT0xfR1BMKHhlbl9ncmFudF9zZXR1cF9kbWFfb3BzKTsKICAg LSByZW1vdmUgdGhlIGxpbmUgb2YgKiBhZnRlciBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcgogICAt IHNwbGl0IGNoYW5nZXMgaW50byBncmFudC1kbWEtb3BzLmMgYW5kIGFyY2hfaGFzX3Jlc3RyaWN0 ZWRfdmlydGlvX21lbW9yeV9hY2Nlc3MoKQogICAgIGFuZCB1cGRhdGUgY29tbWl0IHN1YmplY3Qv ZGVzY3JpcHRpb24gYWNjb3JkaW5nbHkKICAgLSByZW1vdmUgImRlZmF1bHQgbiIgZm9yIGNvbmZp ZyBYRU5fVklSVElPCiAgIC0gaW1wbGVtZW50IHhlbl9ncmFudF9kbWFfYWxsb2MoZnJlZSlfcGFn ZXMoKQotLS0KIGRyaXZlcnMveGVuL0tjb25maWcgICAgICAgICB8ICAgNCArCiBkcml2ZXJzL3hl bi9NYWtlZmlsZSAgICAgICAgfCAgIDEgKwogZHJpdmVycy94ZW4vZ3JhbnQtZG1hLW9wcy5jIHwg MzE0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRl L3hlbi94ZW4tb3BzLmggICAgICAgfCAgIDggKysKIDQgZmlsZXMgY2hhbmdlZCwgMzI3IGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3hlbi9ncmFudC1kbWEtb3BzLmMK CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9LY29uZmlnIGIvZHJpdmVycy94ZW4vS2NvbmZpZwpp bmRleCAxMjBkMzJmLi4zMTNhOTEyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vS2NvbmZpZwor KysgYi9kcml2ZXJzL3hlbi9LY29uZmlnCkBAIC0zMzUsNCArMzM1LDggQEAgY29uZmlnIFhFTl9V TlBPUFVMQVRFRF9BTExPQwogCSAgaGF2aW5nIHRvIGJhbGxvb24gb3V0IFJBTSByZWdpb25zIGlu IG9yZGVyIHRvIG9idGFpbiBwaHlzaWNhbCBtZW1vcnkKIAkgIHNwYWNlIHRvIGNyZWF0ZSBzdWNo IG1hcHBpbmdzLgogCitjb25maWcgWEVOX0dSQU5UX0RNQV9PUFMKKwlib29sCisJc2VsZWN0IERN QV9PUFMKKwogZW5kbWVudQpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vTWFrZWZpbGUgYi9kcml2 ZXJzL3hlbi9NYWtlZmlsZQppbmRleCA1YWFlNjZlLi4xYTIzY2IwIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3hlbi9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3hlbi9NYWtlZmlsZQpAQCAtMzksMyArMzks NCBAQCB4ZW4tZ250YWxsb2MteQkJCQk6PSBnbnRhbGxvYy5vCiB4ZW4tcHJpdmNtZC15CQkJCTo9 IHByaXZjbWQubyBwcml2Y21kLWJ1Zi5vCiBvYmotJChDT05GSUdfWEVOX0ZST05UX1BHRElSX1NI QlVGKQkrPSB4ZW4tZnJvbnQtcGdkaXItc2hidWYubwogb2JqLSQoQ09ORklHX1hFTl9VTlBPUFVM QVRFRF9BTExPQykJKz0gdW5wb3B1bGF0ZWQtYWxsb2Mubworb2JqLSQoQ09ORklHX1hFTl9HUkFO VF9ETUFfT1BTKQkJKz0gZ3JhbnQtZG1hLW9wcy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9n cmFudC1kbWEtb3BzLmMgYi9kcml2ZXJzL3hlbi9ncmFudC1kbWEtb3BzLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjI5YWQ3YmYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL3hlbi9ncmFudC1kbWEtb3BzLmMKQEAgLTAsMCArMSwzMTQgQEAKKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBYZW4gZ3JhbnQgRE1BLW1hcHBpbmcg bGF5ZXIgLSBjb250YWlucyBzcGVjaWFsIERNQS1tYXBwaW5nIHJvdXRpbmVzCisgKiBmb3IgcHJv dmlkaW5nIGdyYW50IHJlZmVyZW5jZXMgYXMgRE1BIGFkZHJlc3NlcyB0byBiZSB1c2VkIGJ5IGZy b250ZW5kcworICogKGUuZy4gdmlydGlvKSBpbiBYZW4gZ3Vlc3RzCisgKgorICogQ29weXJpZ2h0 IChjKSAyMDIxLCBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+CisgKi8KKworI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXAtb3BzLmg+CisjaW5j bHVkZSA8bGludXgvb2YuaD4KKyNpbmNsdWRlIDxsaW51eC9wZm4uaD4KKyNpbmNsdWRlIDxsaW51 eC94YXJyYXkuaD4KKyNpbmNsdWRlIDx4ZW4veGVuLmg+CisjaW5jbHVkZSA8eGVuL2dyYW50X3Rh YmxlLmg+CisKK3N0cnVjdCB4ZW5fZ3JhbnRfZG1hX2RhdGEgeworCS8qIFRoZSBJRCBvZiBiYWNr ZW5kIGRvbWFpbiAqLworCWRvbWlkX3QgZGV2X2RvbWlkOworCS8qIElzIGRldmljZSBiZWhhdmlu ZyBzYW5lPyAqLworCWJvb2wgYnJva2VuOworfTsKKworc3RhdGljIERFRklORV9YQVJSQVkoeGVu X2dyYW50X2RtYV9kZXZpY2VzKTsKKworI2RlZmluZSBYRU5fR1JBTlRfRE1BX0FERFJfT0ZGCSgx VUxMIDw8IDYzKQorCitzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QgZ3JhbnRfdG9fZG1hKGdyYW50 X3JlZl90IGdyYW50KQoreworCXJldHVybiBYRU5fR1JBTlRfRE1BX0FERFJfT0ZGIHwgKChkbWFf YWRkcl90KWdyYW50IDw8IFBBR0VfU0hJRlQpOworfQorCitzdGF0aWMgaW5saW5lIGdyYW50X3Jl Zl90IGRtYV90b19ncmFudChkbWFfYWRkcl90IGRtYSkKK3sKKwlyZXR1cm4gKGdyYW50X3JlZl90 KSgoZG1hICYgflhFTl9HUkFOVF9ETUFfQUREUl9PRkYpID4+IFBBR0VfU0hJRlQpOworfQorCitz dGF0aWMgc3RydWN0IHhlbl9ncmFudF9kbWFfZGF0YSAqZmluZF94ZW5fZ3JhbnRfZG1hX2RhdGEo c3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCB4ZW5fZ3JhbnRfZG1hX2RhdGEgKmRhdGE7 CisKKwl4YV9sb2NrKCZ4ZW5fZ3JhbnRfZG1hX2RldmljZXMpOworCWRhdGEgPSB4YV9sb2FkKCZ4 ZW5fZ3JhbnRfZG1hX2RldmljZXMsICh1bnNpZ25lZCBsb25nKWRldik7CisJeGFfdW5sb2NrKCZ4 ZW5fZ3JhbnRfZG1hX2RldmljZXMpOworCisJcmV0dXJuIGRhdGE7Cit9CisKKy8qCisgKiBETUEg b3BzIGZvciBYZW4gZnJvbnRlbmRzIChlLmcuIHZpcnRpbykuCisgKgorICogVXNlZCB0byBhY3Qg YXMgYSBraW5kIG9mIHNvZnR3YXJlIElPTU1VIGZvciBYZW4gZ3Vlc3RzIGJ5IHVzaW5nIGdyYW50 cyBhcworICogRE1BIGFkZHJlc3Nlcy4KKyAqIFN1Y2ggYSBETUEgYWRkcmVzcyBpcyBmb3JtZWQg YnkgdXNpbmcgdGhlIGdyYW50IHJlZmVyZW5jZSBhcyBhIGZyYW1lCisgKiBudW1iZXIgYW5kIHNl dHRpbmcgdGhlIGhpZ2hlc3QgYWRkcmVzcyBiaXQgKHRoaXMgYml0IGlzIGZvciB0aGUgYmFja2Vu ZAorICogdG8gYmUgYWJsZSB0byBkaXN0aW5ndWlzaCBpdCBmcm9tIGUuZy4gYSBtbWlvIGFkZHJl c3MpLgorICoKKyAqIE5vdGUgdGhhdCBmb3Igbm93IHdlIGhhcmQgd2lyZSBkb20wIHRvIGJlIHRo ZSBiYWNrZW5kIGRvbWFpbi4gSW4gb3JkZXIKKyAqIHRvIHN1cHBvcnQgYW55IGRvbWFpbiBhcyBi YWNrZW5kIHdlJ2QgbmVlZCB0byBhZGQgYSB3YXkgdG8gY29tbXVuaWNhdGUKKyAqIHRoZSBkb21p ZCBvZiB0aGlzIGJhY2tlbmQsIGUuZy4gdmlhIFhlbnN0b3JlLCB2aWEgdGhlIFBDSS1kZXZpY2Un cworICogY29uZmlnIHNwYWNlIG9yIERUL0FDUEkuCisgKi8KK3N0YXRpYyB2b2lkICp4ZW5fZ3Jh bnRfZG1hX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsCisJCQkJIGRtYV9h ZGRyX3QgKmRtYV9oYW5kbGUsIGdmcF90IGdmcCwKKwkJCQkgdW5zaWduZWQgbG9uZyBhdHRycykK K3sKKwlzdHJ1Y3QgeGVuX2dyYW50X2RtYV9kYXRhICpkYXRhOworCXVuc2lnbmVkIGludCBpLCBu X3BhZ2VzID0gUEZOX1VQKHNpemUpOworCXVuc2lnbmVkIGxvbmcgcGZuOworCWdyYW50X3JlZl90 IGdyYW50OworCXZvaWQgKnJldDsKKworCWRhdGEgPSBmaW5kX3hlbl9ncmFudF9kbWFfZGF0YShk ZXYpOworCWlmICghZGF0YSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAodW5saWtlbHkoZGF0YS0+ YnJva2VuKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXQgPSBhbGxvY19wYWdlc19leGFjdChuX3Bh Z2VzICogUEFHRV9TSVpFLCBnZnApOworCWlmICghcmV0KQorCQlyZXR1cm4gTlVMTDsKKworCXBm biA9IHZpcnRfdG9fcGZuKHJldCk7CisKKwlpZiAoZ250dGFiX2FsbG9jX2dyYW50X3JlZmVyZW5j ZV9zZXEobl9wYWdlcywgJmdyYW50KSkgeworCQlmcmVlX3BhZ2VzX2V4YWN0KHJldCwgbl9wYWdl cyAqIFBBR0VfU0laRSk7CisJCXJldHVybiBOVUxMOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBu X3BhZ2VzOyBpKyspIHsKKwkJZ250dGFiX2dyYW50X2ZvcmVpZ25fYWNjZXNzX3JlZihncmFudCAr IGksIGRhdGEtPmRldl9kb21pZCwKKwkJCQlwZm5fdG9fZ2ZuKHBmbiArIGkpLCAwKTsKKwl9CisK KwkqZG1hX2hhbmRsZSA9IGdyYW50X3RvX2RtYShncmFudCk7CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgdm9pZCB4ZW5fZ3JhbnRfZG1hX2ZyZWUoc3RydWN0IGRldmljZSAqZGV2LCBzaXpl X3Qgc2l6ZSwgdm9pZCAqdmFkZHIsCisJCQkgICAgICAgZG1hX2FkZHJfdCBkbWFfaGFuZGxlLCB1 bnNpZ25lZCBsb25nIGF0dHJzKQoreworCXN0cnVjdCB4ZW5fZ3JhbnRfZG1hX2RhdGEgKmRhdGE7 CisJdW5zaWduZWQgaW50IGksIG5fcGFnZXMgPSBQRk5fVVAoc2l6ZSk7CisJZ3JhbnRfcmVmX3Qg Z3JhbnQ7CisKKwlkYXRhID0gZmluZF94ZW5fZ3JhbnRfZG1hX2RhdGEoZGV2KTsKKwlpZiAoIWRh dGEpCisJCXJldHVybjsKKworCWlmICh1bmxpa2VseShkYXRhLT5icm9rZW4pKQorCQlyZXR1cm47 CisKKwlncmFudCA9IGRtYV90b19ncmFudChkbWFfaGFuZGxlKTsKKworCWZvciAoaSA9IDA7IGkg PCBuX3BhZ2VzOyBpKyspIHsKKwkJaWYgKHVubGlrZWx5KCFnbnR0YWJfZW5kX2ZvcmVpZ25fYWNj ZXNzX3JlZihncmFudCArIGkpKSkgeworCQkJZGV2X2FsZXJ0KGRldiwgIkdyYW50IHN0aWxsIGlu IHVzZSBieSBiYWNrZW5kIGRvbWFpbiwgZGlzYWJsZWQgZm9yIGZ1cnRoZXIgdXNlXG4iKTsKKwkJ CWRhdGEtPmJyb2tlbiA9IHRydWU7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlnbnR0YWJfZnJl ZV9ncmFudF9yZWZlcmVuY2Vfc2VxKGdyYW50LCBuX3BhZ2VzKTsKKworCWZyZWVfcGFnZXNfZXhh Y3QodmFkZHIsIG5fcGFnZXMgKiBQQUdFX1NJWkUpOworfQorCitzdGF0aWMgc3RydWN0IHBhZ2Ug Knhlbl9ncmFudF9kbWFfYWxsb2NfcGFnZXMoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6 ZSwKKwkJCQkJICAgICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwKKwkJCQkJICAgICAgZW51bSBk bWFfZGF0YV9kaXJlY3Rpb24gZGlyLAorCQkJCQkgICAgICBnZnBfdCBnZnApCit7CisJdm9pZCAq dmFkZHI7CisKKwl2YWRkciA9IHhlbl9ncmFudF9kbWFfYWxsb2MoZGV2LCBzaXplLCBkbWFfaGFu ZGxlLCBnZnAsIDApOworCWlmICghdmFkZHIpCisJCXJldHVybiBOVUxMOworCisJcmV0dXJuIHZp cnRfdG9fcGFnZSh2YWRkcik7Cit9CisKK3N0YXRpYyB2b2lkIHhlbl9ncmFudF9kbWFfZnJlZV9w YWdlcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLAorCQkJCSAgICAgc3RydWN0IHBh Z2UgKnZhZGRyLCBkbWFfYWRkcl90IGRtYV9oYW5kbGUsCisJCQkJICAgICBlbnVtIGRtYV9kYXRh X2RpcmVjdGlvbiBkaXIpCit7CisJeGVuX2dyYW50X2RtYV9mcmVlKGRldiwgc2l6ZSwgcGFnZV90 b192aXJ0KHZhZGRyKSwgZG1hX2hhbmRsZSwgMCk7Cit9CisKK3N0YXRpYyBkbWFfYWRkcl90IHhl bl9ncmFudF9kbWFfbWFwX3BhZ2Uoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGFnZSAqcGFn ZSwKKwkJCQkJIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwKKwkJCQkJIGVudW0g ZG1hX2RhdGFfZGlyZWN0aW9uIGRpciwKKwkJCQkJIHVuc2lnbmVkIGxvbmcgYXR0cnMpCit7CisJ c3RydWN0IHhlbl9ncmFudF9kbWFfZGF0YSAqZGF0YTsKKwl1bnNpZ25lZCBpbnQgaSwgbl9wYWdl cyA9IFBGTl9VUChzaXplKTsKKwlncmFudF9yZWZfdCBncmFudDsKKwlkbWFfYWRkcl90IGRtYV9o YW5kbGU7CisKKwlpZiAoV0FSTl9PTihkaXIgPT0gRE1BX05PTkUpKQorCQlyZXR1cm4gRE1BX01B UFBJTkdfRVJST1I7CisKKwlkYXRhID0gZmluZF94ZW5fZ3JhbnRfZG1hX2RhdGEoZGV2KTsKKwlp ZiAoIWRhdGEpCisJCXJldHVybiBETUFfTUFQUElOR19FUlJPUjsKKworCWlmICh1bmxpa2VseShk YXRhLT5icm9rZW4pKQorCQlyZXR1cm4gRE1BX01BUFBJTkdfRVJST1I7CisKKwlpZiAoZ250dGFi X2FsbG9jX2dyYW50X3JlZmVyZW5jZV9zZXEobl9wYWdlcywgJmdyYW50KSkKKwkJcmV0dXJuIERN QV9NQVBQSU5HX0VSUk9SOworCisJZm9yIChpID0gMDsgaSA8IG5fcGFnZXM7IGkrKykgeworCQln bnR0YWJfZ3JhbnRfZm9yZWlnbl9hY2Nlc3NfcmVmKGdyYW50ICsgaSwgZGF0YS0+ZGV2X2RvbWlk LAorCQkJCXhlbl9wYWdlX3RvX2dmbihwYWdlKSArIGksIGRpciA9PSBETUFfVE9fREVWSUNFKTsK Kwl9CisKKwlkbWFfaGFuZGxlID0gZ3JhbnRfdG9fZG1hKGdyYW50KSArIG9mZnNldDsKKworCXJl dHVybiBkbWFfaGFuZGxlOworfQorCitzdGF0aWMgdm9pZCB4ZW5fZ3JhbnRfZG1hX3VubWFwX3Bh Z2Uoc3RydWN0IGRldmljZSAqZGV2LCBkbWFfYWRkcl90IGRtYV9oYW5kbGUsCisJCQkJICAgICBz aXplX3Qgc2l6ZSwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLAorCQkJCSAgICAgdW5zaWdu ZWQgbG9uZyBhdHRycykKK3sKKwlzdHJ1Y3QgeGVuX2dyYW50X2RtYV9kYXRhICpkYXRhOworCXVu c2lnbmVkIGludCBpLCBuX3BhZ2VzID0gUEZOX1VQKHNpemUpOworCWdyYW50X3JlZl90IGdyYW50 OworCisJaWYgKFdBUk5fT04oZGlyID09IERNQV9OT05FKSkKKwkJcmV0dXJuOworCisJZGF0YSA9 IGZpbmRfeGVuX2dyYW50X2RtYV9kYXRhKGRldik7CisJaWYgKCFkYXRhKQorCQlyZXR1cm47CisK KwlpZiAodW5saWtlbHkoZGF0YS0+YnJva2VuKSkKKwkJcmV0dXJuOworCisJZ3JhbnQgPSBkbWFf dG9fZ3JhbnQoZG1hX2hhbmRsZSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbl9wYWdlczsgaSsrKSB7 CisJCWlmICh1bmxpa2VseSghZ250dGFiX2VuZF9mb3JlaWduX2FjY2Vzc19yZWYoZ3JhbnQgKyBp KSkpIHsKKwkJCWRldl9hbGVydChkZXYsICJHcmFudCBzdGlsbCBpbiB1c2UgYnkgYmFja2VuZCBk b21haW4sIGRpc2FibGVkIGZvciBmdXJ0aGVyIHVzZVxuIik7CisJCQlkYXRhLT5icm9rZW4gPSB0 cnVlOworCQkJcmV0dXJuOworCQl9CisJfQorCisJZ250dGFiX2ZyZWVfZ3JhbnRfcmVmZXJlbmNl X3NlcShncmFudCwgbl9wYWdlcyk7Cit9CisKK3N0YXRpYyB2b2lkIHhlbl9ncmFudF9kbWFfdW5t YXBfc2coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLAorCQkJCSAg IGludCBuZW50cywgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLAorCQkJCSAgIHVuc2lnbmVk IGxvbmcgYXR0cnMpCit7CisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzOworCXVuc2lnbmVkIGludCBp OworCisJaWYgKFdBUk5fT04oZGlyID09IERNQV9OT05FKSkKKwkJcmV0dXJuOworCisJZm9yX2Vh Y2hfc2coc2csIHMsIG5lbnRzLCBpKQorCQl4ZW5fZ3JhbnRfZG1hX3VubWFwX3BhZ2UoZGV2LCBz LT5kbWFfYWRkcmVzcywgc2dfZG1hX2xlbihzKSwgZGlyLAorCQkJCWF0dHJzKTsKK30KKworc3Rh dGljIGludCB4ZW5fZ3JhbnRfZG1hX21hcF9zZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBz Y2F0dGVybGlzdCAqc2csCisJCQkJaW50IG5lbnRzLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBk aXIsCisJCQkJdW5zaWduZWQgbG9uZyBhdHRycykKK3sKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnM7 CisJdW5zaWduZWQgaW50IGk7CisKKwlpZiAoV0FSTl9PTihkaXIgPT0gRE1BX05PTkUpKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCWZvcl9lYWNoX3NnKHNnLCBzLCBuZW50cywgaSkgeworCQlzLT5k bWFfYWRkcmVzcyA9IHhlbl9ncmFudF9kbWFfbWFwX3BhZ2UoZGV2LCBzZ19wYWdlKHMpLCBzLT5v ZmZzZXQsCisJCQkJcy0+bGVuZ3RoLCBkaXIsIGF0dHJzKTsKKwkJaWYgKHMtPmRtYV9hZGRyZXNz ID09IERNQV9NQVBQSU5HX0VSUk9SKQorCQkJZ290byBvdXQ7CisKKwkJc2dfZG1hX2xlbihzKSA9 IHMtPmxlbmd0aDsKKwl9CisKKwlyZXR1cm4gbmVudHM7CisKK291dDoKKwl4ZW5fZ3JhbnRfZG1h X3VubWFwX3NnKGRldiwgc2csIGksIGRpciwgYXR0cnMgfCBETUFfQVRUUl9TS0lQX0NQVV9TWU5D KTsKKwlzZ19kbWFfbGVuKHNnKSA9IDA7CisKKwlyZXR1cm4gLUVJTzsKK30KKworc3RhdGljIGlu dCB4ZW5fZ3JhbnRfZG1hX3N1cHBvcnRlZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHU2NCBtYXNrKQor eworCXJldHVybiBtYXNrID09IERNQV9CSVRfTUFTSyg2NCk7Cit9CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZG1hX21hcF9vcHMgeGVuX2dyYW50X2RtYV9vcHMgPSB7CisJLmFsbG9jID0geGVuX2dy YW50X2RtYV9hbGxvYywKKwkuZnJlZSA9IHhlbl9ncmFudF9kbWFfZnJlZSwKKwkuYWxsb2NfcGFn ZXMgPSB4ZW5fZ3JhbnRfZG1hX2FsbG9jX3BhZ2VzLAorCS5mcmVlX3BhZ2VzID0geGVuX2dyYW50 X2RtYV9mcmVlX3BhZ2VzLAorCS5tbWFwID0gZG1hX2NvbW1vbl9tbWFwLAorCS5nZXRfc2d0YWJs ZSA9IGRtYV9jb21tb25fZ2V0X3NndGFibGUsCisJLm1hcF9wYWdlID0geGVuX2dyYW50X2RtYV9t YXBfcGFnZSwKKwkudW5tYXBfcGFnZSA9IHhlbl9ncmFudF9kbWFfdW5tYXBfcGFnZSwKKwkubWFw X3NnID0geGVuX2dyYW50X2RtYV9tYXBfc2csCisJLnVubWFwX3NnID0geGVuX2dyYW50X2RtYV91 bm1hcF9zZywKKwkuZG1hX3N1cHBvcnRlZCA9IHhlbl9ncmFudF9kbWFfc3VwcG9ydGVkLAorfTsK Kwordm9pZCB4ZW5fZ3JhbnRfc2V0dXBfZG1hX29wcyhzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJ c3RydWN0IHhlbl9ncmFudF9kbWFfZGF0YSAqZGF0YTsKKwl1aW50MzJfdCBkZXZfZG9taWQ7CisK KwlkYXRhID0gZmluZF94ZW5fZ3JhbnRfZG1hX2RhdGEoZGV2KTsKKwlpZiAoZGF0YSkgeworCQlk ZXZfZXJyKGRldiwgIlhlbiBncmFudCBETUEgZGF0YSBpcyBhbHJlYWR5IGNyZWF0ZWRcbiIpOwor CQlyZXR1cm47CisJfQorCisJLyogWFhYIFRoZSBkb20wIGlzIGhhcmRjb2RlZCBhcyB0aGUgYmFj a2VuZCBkb21haW4gZm9yIG5vdyAqLworCWRldl9kb21pZCA9IDA7CisKKwlkYXRhID0gZGV2bV9r emFsbG9jKGRldiwgc2l6ZW9mKCpkYXRhKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkYXRhKQorCQln b3RvIGVycjsKKworCWRhdGEtPmRldl9kb21pZCA9IGRldl9kb21pZDsKKworCWlmICh4YV9lcnIo eGFfc3RvcmUoJnhlbl9ncmFudF9kbWFfZGV2aWNlcywgKHVuc2lnbmVkIGxvbmcpZGV2LCBkYXRh LAorCQkJR0ZQX0tFUk5FTCkpKSB7CisJCWRldl9lcnIoZGV2LCAiQ2Fubm90IHN0b3JlIFhlbiBn cmFudCBETUEgZGF0YVxuIik7CisJCWdvdG8gZXJyOworCX0KKworCWRldi0+ZG1hX29wcyA9ICZ4 ZW5fZ3JhbnRfZG1hX29wczsKKworCXJldHVybjsKKworZXJyOgorCWRldl9lcnIoZGV2LCAi0KFh bm5vdCBzZXQgdXAgWGVuIGdyYW50IERNQSBvcHMsIHJldGFpbiBwbGF0Zm9ybSBETUEgb3BzXG4i KTsKK30KKworTU9EVUxFX0RFU0NSSVBUSU9OKCJYZW4gZ3JhbnQgRE1BLW1hcHBpbmcgbGF5ZXIi KTsKK01PRFVMRV9BVVRIT1IoIkp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4iKTsKK01P RFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3hlbi1vcHMuaCBi L2luY2x1ZGUveGVuL3hlbi1vcHMuaAppbmRleCBhMzU4NGEzLi40ZjlmYWQ1IDEwMDY0NAotLS0g YS9pbmNsdWRlL3hlbi94ZW4tb3BzLmgKKysrIGIvaW5jbHVkZS94ZW4veGVuLW9wcy5oCkBAIC0y MjEsNCArMjIxLDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fcHJlZW1wdGlibGVfaGNhbGxf ZW5kKHZvaWQpIHsgfQogCiAjZW5kaWYgLyogQ09ORklHX1hFTl9QViAmJiAhQ09ORklHX1BSRUVN UFRJT04gKi8KIAorI2lmZGVmIENPTkZJR19YRU5fR1JBTlRfRE1BX09QUwordm9pZCB4ZW5fZ3Jh bnRfc2V0dXBfZG1hX29wcyhzdHJ1Y3QgZGV2aWNlICpkZXYpOworI2Vsc2UKK3N0YXRpYyBpbmxp bmUgdm9pZCB4ZW5fZ3JhbnRfc2V0dXBfZG1hX29wcyhzdHJ1Y3QgZGV2aWNlICpkZXYpCit7Cit9 CisjZW5kaWYgLyogQ09ORklHX1hFTl9HUkFOVF9ETUFfT1BTICovCisKICNlbmRpZiAvKiBJTkNM VURFX1hFTl9PUFNfSCAqLwotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==