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 X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E6B22C49EAD for ; Tue, 5 Nov 2019 09:42:38 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C416C21929 for ; Tue, 5 Nov 2019 09:42:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C416C21929 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3A8026E975; Tue, 5 Nov 2019 09:42:38 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id C1C5D6E977 for ; Tue, 5 Nov 2019 09:42:36 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-367-QKyKdWrBOfGSQkBZ_IXJ0A-1; Tue, 05 Nov 2019 04:42:32 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CD414477; Tue, 5 Nov 2019 09:42:26 +0000 (UTC) Received: from jason-ThinkPad-X1-Carbon-6th.redhat.com (ovpn-12-252.pek2.redhat.com [10.72.12.252]) by smtp.corp.redhat.com (Postfix) with ESMTP id 426A25C28D; Tue, 5 Nov 2019 09:39:35 +0000 (UTC) From: Jason Wang To: kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-gvt-dev@lists.freedesktop.org, kwankhede@nvidia.com, alex.williamson@redhat.com, mst@redhat.com, tiwei.bie@intel.com Subject: [PATCH V8 6/6] docs: sample driver to demonstrate how to implement virtio-mdev framework Date: Tue, 5 Nov 2019 17:32:40 +0800 Message-Id: <20191105093240.5135-7-jasowang@redhat.com> In-Reply-To: <20191105093240.5135-1-jasowang@redhat.com> References: <20191105093240.5135-1-jasowang@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-MC-Unique: QKyKdWrBOfGSQkBZ_IXJ0A-1 X-Mimecast-Spam-Score: 0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1572946955; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=syXqnRjGmjED8oe1bGzFfKezKmp2rR8du99TBlzamLo=; b=CNMgl8xu/5pD71WLCbBNd9U79ZU57t3pNhS11be9ACo4Z1keRjUwURbiRQRcuQiqaASfKl 3DHvurRrN5rkyxNV1S7U3pJGcAYoQDTLD0qccM4z3SXU+D0I5Fz7CSJjfu0prgdmdxfGlK PO0Bcx0mc0461sQIiihIPBAGWLfEbZk= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: christophe.de.dinechin@gmail.com, sebott@linux.ibm.com, airlied@linux.ie, Jason Wang , heiko.carstens@de.ibm.com, kevin.tian@intel.com, virtualization@lists.linux-foundation.org, rob.miller@broadcom.com, lulu@redhat.com, eperezma@redhat.com, pasic@linux.ibm.com, borntraeger@de.ibm.com, haotian.wang@sifive.com, zhi.a.wang@intel.com, farman@linux.ibm.com, idos@mellanox.com, gor@linux.ibm.com, cunming.liang@intel.com, rodrigo.vivi@intel.com, xiao.w.wang@intel.com, freude@linux.ibm.com, parav@mellanox.com, zhihong.wang@intel.com, stefanha@redhat.com, akrowiak@linux.ibm.com, netdev@vger.kernel.org, cohuck@redhat.com, oberpar@linux.ibm.com, maxime.coquelin@redhat.com, lingshan.zhu@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191105093240.mC8MbJBl1AhmKEYvytfPx7YCQmqiPApwoU7SLM7nvT8@z> VGhpcyBzYW1wbGUgZHJpdmVyIGNyZWF0ZXMgbWRldiBkZXZpY2UgdGhhdCBzaW11bGF0ZSB2aXJ0 aW8gbmV0IGRldmljZQpvdmVyIHZpcnRpbyBtZGV2IHRyYW5zcG9ydC4gVGhlIGRldmljZSBpcyBp bXBsZW1lbnRlZCB0aHJvdWdoIHZyaW5naAphbmQgd29ya3F1ZXVlLiBBIGRldmljZSBzcGVjaWZp YyBkbWEgb3BzIGlzIHRvIG1ha2Ugc3VyZSBIVkEgaXMgdXNlZApkaXJlY3RseSBhcyB0aGUgSU9W QS4gVGhpcyBzaG91bGQgYmUgc3VmZmljaWVudCBmb3Iga2VybmVsIHZpcnRpbwpkcml2ZXIgdG8g d29yay4KCk9ubHkgJ3ZpcnRpbycgdHlwZSBpcyBzdXBwb3J0ZWQgcmlnaHQgbm93LiBJIHBsYW4g dG8gYWRkICd2aG9zdCcgdHlwZQpvbiB0b3Agd2hpY2ggcmVxdWlyZXMgc29tZSB2aXJ0dWFsIElP TU1VIGltcGxlbWVudGVkIGluIHRoaXMgc2FtcGxlCmRyaXZlci4KClNpZ25lZC1vZmYtYnk6IEph c29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+Ci0tLQogTUFJTlRBSU5FUlMgICAgICAgICAg ICAgICAgfCAgIDEgKwogc2FtcGxlcy9LY29uZmlnICAgICAgICAgICAgfCAgIDcgKwogc2FtcGxl cy92ZmlvLW1kZXYvTWFrZWZpbGUgfCAgIDEgKwogc2FtcGxlcy92ZmlvLW1kZXYvbXZuZXQuYyAg fCA2ODUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFu Z2VkLCA2OTQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbXBsZXMvdmZpby1t ZGV2L212bmV0LmMKCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4 IGY2NjFkMTMzNDRkNi4uMzVlOTIwNGQ1YzY4IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysg Yi9NQUlOVEFJTkVSUwpAQCAtMTcyNDgsNiArMTcyNDgsNyBAQCBGOglpbmNsdWRlL2xpbnV4L3Zp cnRpbyouaAogRjoJaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb18qLmgKIEY6CWRyaXZlcnMvY3J5 cHRvL3ZpcnRpby8KIEY6CW1tL2JhbGxvb25fY29tcGFjdGlvbi5jCitGOglzYW1wbGVzL3ZmaW8t bWRldi9tdm5ldC5jCiAKIFZJUlRJTyBCTE9DSyBBTkQgU0NTSSBEUklWRVJTCiBNOgkiTWljaGFl bCBTLiBUc2lya2luIiA8bXN0QHJlZGhhdC5jb20+CmRpZmYgLS1naXQgYS9zYW1wbGVzL0tjb25m aWcgYi9zYW1wbGVzL0tjb25maWcKaW5kZXggYzhkYWNiNGRkYTgwLi5hMWExY2EyYzAwYjcgMTAw NjQ0Ci0tLSBhL3NhbXBsZXMvS2NvbmZpZworKysgYi9zYW1wbGVzL0tjb25maWcKQEAgLTEzMSw2 ICsxMzEsMTMgQEAgY29uZmlnIFNBTVBMRV9WRklPX01ERVZfTURQWQogCSAgbWVkaWF0ZWQgZGV2 aWNlLiAgSXQgaXMgYSBzaW1wbGUgZnJhbWVidWZmZXIgYW5kIHN1cHBvcnRzCiAJICB0aGUgcmVn aW9uIGRpc3BsYXkgaW50ZXJmYWNlIChWRklPX0dGWF9QTEFORV9UWVBFX1JFR0lPTikuCiAKK2Nv bmZpZyBTQU1QTEVfVklSVElPX01ERVZfTkVUCisgICAgICAgIHRyaXN0YXRlICJCdWlsZCB2aXJ0 aW8gbWRldiBuZXQgZXhhbXBsZSBtZWRpYXRlZCBkZXZpY2Ugc2FtcGxlIGNvZGUgLS0gbG9hZGFi bGUgbW9kdWxlcyBvbmx5IgorCWRlcGVuZHMgb24gVklSVElPX01ERVZfREVWSUNFICYmIFZIT1NU X1JJTkcgJiYgbQorCWhlbHAKKwkgIEJ1aWxkIGEgbmV0d29ya2luZyBzYW1wbGUgZGV2aWNlIGZv ciB1c2UgYXMgYSB2aXJ0aW8KKwkgIG1lZGlhdGVkIGRldmljZS4KKwogY29uZmlnIFNBTVBMRV9W RklPX01ERVZfTURQWV9GQgogCXRyaXN0YXRlICJCdWlsZCBWRklPIG1kcHkgZXhhbXBsZSBndWVz dCBmYmRldiBkcml2ZXIgLS0gbG9hZGFibGUgbW9kdWxlIG9ubHkiCiAJZGVwZW5kcyBvbiBGQiAm JiBtCmRpZmYgLS1naXQgYS9zYW1wbGVzL3ZmaW8tbWRldi9NYWtlZmlsZSBiL3NhbXBsZXMvdmZp by1tZGV2L01ha2VmaWxlCmluZGV4IDEwZDE3OWM0ZmRlYi4uZjM0YWY5MGVkMGEwIDEwMDY0NAot LS0gYS9zYW1wbGVzL3ZmaW8tbWRldi9NYWtlZmlsZQorKysgYi9zYW1wbGVzL3ZmaW8tbWRldi9N YWtlZmlsZQpAQCAtMywzICszLDQgQEAgb2JqLSQoQ09ORklHX1NBTVBMRV9WRklPX01ERVZfTVRU WSkgKz0gbXR0eS5vCiBvYmotJChDT05GSUdfU0FNUExFX1ZGSU9fTURFVl9NRFBZKSArPSBtZHB5 Lm8KIG9iai0kKENPTkZJR19TQU1QTEVfVkZJT19NREVWX01EUFlfRkIpICs9IG1kcHktZmIubwog b2JqLSQoQ09ORklHX1NBTVBMRV9WRklPX01ERVZfTUJPQ0hTKSArPSBtYm9jaHMubworb2JqLSQo Q09ORklHX1NBTVBMRV9WSVJUSU9fTURFVl9ORVQpICs9IG12bmV0Lm8KZGlmZiAtLWdpdCBhL3Nh bXBsZXMvdmZpby1tZGV2L212bmV0LmMgYi9zYW1wbGVzL3ZmaW8tbWRldi9tdm5ldC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGI0M2ZjYzc4YTY4Ci0tLSAvZGV2 L251bGwKKysrIGIvc2FtcGxlcy92ZmlvLW1kZXYvbXZuZXQuYwpAQCAtMCwwICsxLDY4NSBAQAor Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorLyoKKyAqIE1lZGlhdGVk IHZpcnR1YWwgdmlydGlvLW5ldCBkZXZpY2UgZHJpdmVyLgorICoKKyAqIENvcHlyaWdodCAoYykg MjAxOSwgUmVkIEhhdCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgQXV0aG9yOiBK YXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPgorICoKKyAqIFNhbXBsZSBkcml2ZXIgdGhh dCBjcmVhdGVzIG1kZXYgZGV2aWNlIHRoYXQgc2ltdWxhdGVzIGV0aGVybmV0IGxvb3BiYWNrCisg KiBkZXZpY2UuCisgKgorICogVXNhZ2U6CisgKgorICogIyBtb2Rwcm9iZSB2aXJ0aW9fbWRldgor ICogIyBtb2Rwcm9iZSBtdm5ldAorICogIyBjZCAvc3lzL2RldmljZXMvdmlydHVhbC9tdm5ldC9t dm5ldC9tZGV2X3N1cHBvcnRlZF90eXBlcy9tdm5ldC12aXJ0aW8KKyAqICMgZWNobyAiODNiOGY0 ZjItNTA5Zi0zODJmLTNjMWUtZTZiZmUwZmExMDAxIiA+IC4vY3JlYXRlCisgKiAjIGNkIGRldmlj ZXMvODNiOGY0ZjItNTA5Zi0zODJmLTNjMWUtZTZiZmUwZmExMDAxCisgKiAjIGxzIC1kIHZpcnRp bzAKKyAqIHZpcnRpbzAKKyAqLworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvcG9s bC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgor I2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KKyNpbmNsdWRlIDxsaW51eC91dWlkLmg+CisjaW5jbHVk ZSA8bGludXgvaW9tbXUuaD4KKyNpbmNsdWRlIDxsaW51eC9zeXNmcy5oPgorI2luY2x1ZGUgPGxp bnV4L2ZpbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPgorI2luY2x1ZGUgPGxp bnV4L21kZXYuaD4KKyNpbmNsdWRlIDxsaW51eC92cmluZ2guaD4KKyNpbmNsdWRlIDxsaW51eC9t ZGV2X3ZpcnRpb19vcHMuaD4KKyNpbmNsdWRlIDx1YXBpL2xpbnV4L3ZpcnRpb19jb25maWcuaD4K KyNpbmNsdWRlIDx1YXBpL2xpbnV4L3ZpcnRpb19uZXQuaD4KKworI2RlZmluZSBWRVJTSU9OX1NU UklORyAgIjAuMSIKKyNkZWZpbmUgRFJJVkVSX0FVVEhPUiAgICJSZWQgSGF0IENvcnBvcmF0aW9u IgorCisjZGVmaW5lIE1WTkVUX0NMQVNTX05BTUUgIm12bmV0IgorI2RlZmluZSBNVk5FVF9OQU1F ICAgICAgICJtdm5ldCIKKworLyoKKyAqIEdsb2JhbCBTdHJ1Y3R1cmVzCisgKi8KKworc3RhdGlj IHN0cnVjdCBtdm5ldF9kZXYgeworCXN0cnVjdCBjbGFzcwkqdmRfY2xhc3M7CisJc3RydWN0IGlk cgl2ZF9pZHI7CisJc3RydWN0IGRldmljZQlkZXY7Cit9IG12bmV0X2RldjsKKworc3RydWN0IG12 bmV0X3ZpcnRxdWV1ZSB7CisJc3RydWN0IHZyaW5naCB2cmluZzsKKwlzdHJ1Y3QgdnJpbmdoX2tp b3YgaW92OworCXVuc2lnbmVkIHNob3J0IGhlYWQ7CisJYm9vbCByZWFkeTsKKwl1NjQgZGVzY19h ZGRyOworCXU2NCBkZXZpY2VfYWRkcjsKKwl1NjQgZHJpdmVyX2FkZHI7CisJdTMyIG51bTsKKwl2 b2lkICpwcml2YXRlOworCWlycXJldHVybl90ICgqY2IpKHZvaWQgKmRhdGEpOworfTsKKworI2Rl ZmluZSBNVk5FVF9RVUVVRV9BTElHTiBQQUdFX1NJWkUKKyNkZWZpbmUgTVZORVRfUVVFVUVfTUFY IDI1NgorI2RlZmluZSBNVk5FVF9ERVZJQ0VfSUQgMHgxCisjZGVmaW5lIE1WTkVUX1ZFTkRPUl9J RCAwCisKK3U2NCBtdm5ldF9mZWF0dXJlcyA9ICgxVUxMIDw8IFZJUlRJT19GX0FOWV9MQVlPVVQp IHwKKwkJICAgICAoMVVMTCA8PCBWSVJUSU9fRl9WRVJTSU9OXzEpIHwKKwkJICAgICAoMVVMTCA8 PCBWSVJUSU9fRl9JT01NVV9QTEFURk9STSk7CisKKy8qIFN0YXRlIG9mIGVhY2ggbWRldiBkZXZp Y2UgKi8KK3N0cnVjdCBtdm5ldF9zdGF0ZSB7CisJc3RydWN0IG12bmV0X3ZpcnRxdWV1ZSB2cXNb Ml07CisJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7CisJc3BpbmxvY2tfdCBsb2NrOworCXN0cnVj dCBtZGV2X2RldmljZSAqbWRldjsKKwlzdHJ1Y3QgdmlydGlvX25ldF9jb25maWcgY29uZmlnOwor CXZvaWQgKmJ1ZmZlcjsKKwl1MzIgc3RhdHVzOworCXUzMiBnZW5lcmF0aW9uOworCXU2NCBmZWF0 dXJlczsKKwlzdHJ1Y3QgbGlzdF9oZWFkIG5leHQ7Cit9OworCitzdGF0aWMgc3RydWN0IG11dGV4 IG1kZXZfbGlzdF9sb2NrOworc3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgbWRldl9kZXZpY2VzX2xp c3Q7CisKK3N0YXRpYyB2b2lkIG12bmV0X3F1ZXVlX3JlYWR5KHN0cnVjdCBtdm5ldF9zdGF0ZSAq bXZuZXQsIHVuc2lnbmVkIGludCBpZHgpCit7CisJc3RydWN0IG12bmV0X3ZpcnRxdWV1ZSAqdnEg PSAmbXZuZXQtPnZxc1tpZHhdOworCWludCByZXQ7CisKKwlyZXQgPSB2cmluZ2hfaW5pdF9rZXJu KCZ2cS0+dnJpbmcsIG12bmV0X2ZlYXR1cmVzLCBNVk5FVF9RVUVVRV9NQVgsCisJCQkgICAgICAg ZmFsc2UsIChzdHJ1Y3QgdnJpbmdfZGVzYyAqKXZxLT5kZXNjX2FkZHIsCisJCQkgICAgICAgKHN0 cnVjdCB2cmluZ19hdmFpbCAqKXZxLT5kcml2ZXJfYWRkciwKKwkJCSAgICAgICAoc3RydWN0IHZy aW5nX3VzZWQgKil2cS0+ZGV2aWNlX2FkZHIpOworfQorCitzdGF0aWMgdm9pZCBtdm5ldF92cV9y ZXNldChzdHJ1Y3QgbXZuZXRfdmlydHF1ZXVlICp2cSkKK3sKKwl2cS0+cmVhZHkgPSAwOworCXZx LT5kZXNjX2FkZHIgPSAwOworCXZxLT5kcml2ZXJfYWRkciA9IDA7CisJdnEtPmRldmljZV9hZGRy ID0gMDsKKwl2cS0+Y2IgPSBOVUxMOworCXZxLT5wcml2YXRlID0gTlVMTDsKKwl2cmluZ2hfaW5p dF9rZXJuKCZ2cS0+dnJpbmcsIG12bmV0X2ZlYXR1cmVzLCBNVk5FVF9RVUVVRV9NQVgsCisJCQlm YWxzZSwgMCwgMCwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIG12bmV0X3Jlc2V0KHN0cnVjdCBtdm5l dF9zdGF0ZSAqbXZuZXQpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQor CQltdm5ldF92cV9yZXNldCgmbXZuZXQtPnZxc1tpXSk7CisKKwltdm5ldC0+ZmVhdHVyZXMgPSAw OworCW12bmV0LT5zdGF0dXMgPSAwOworCSsrbXZuZXQtPmdlbmVyYXRpb247Cit9CisKK3N0YXRp YyB2b2lkIG12bmV0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0cnVjdCBt dm5ldF9zdGF0ZSAqbXZuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0CisJCQkJCQkgbXZu ZXRfc3RhdGUsIHdvcmspOworCXN0cnVjdCBtdm5ldF92aXJ0cXVldWUgKnR4cSA9ICZtdm5ldC0+ dnFzWzFdOworCXN0cnVjdCBtdm5ldF92aXJ0cXVldWUgKnJ4cSA9ICZtdm5ldC0+dnFzWzBdOwor CXNpemVfdCByZWFkLCB3cml0ZSwgdG90YWxfd3JpdGU7CisJaW50IGVycjsKKwlpbnQgcGt0cyA9 IDA7CisKKwlzcGluX2xvY2soJm12bmV0LT5sb2NrKTsKKworCWlmICghdHhxLT5yZWFkeSB8fCAh cnhxLT5yZWFkeSkKKwkJZ290byBvdXQ7CisKKwl3aGlsZSAodHJ1ZSkgeworCQl0b3RhbF93cml0 ZSA9IDA7CisJCWVyciA9IHZyaW5naF9nZXRkZXNjX2tlcm4oJnR4cS0+dnJpbmcsICZ0eHEtPmlv diwgTlVMTCwKKwkJCQkJICAmdHhxLT5oZWFkLCBHRlBfQVRPTUlDKTsKKwkJaWYgKGVyciA8PSAw KQorCQkJYnJlYWs7CisKKwkJZXJyID0gdnJpbmdoX2dldGRlc2Nfa2VybigmcnhxLT52cmluZywg TlVMTCwgJnJ4cS0+aW92LAorCQkJCQkgICZyeHEtPmhlYWQsIEdGUF9BVE9NSUMpOworCQlpZiAo ZXJyIDw9IDApIHsKKwkJCXZyaW5naF9jb21wbGV0ZV9rZXJuKCZ0eHEtPnZyaW5nLCB0eHEtPmhl YWQsIDApOworCQkJYnJlYWs7CisJCX0KKworCQl3aGlsZSAodHJ1ZSkgeworCQkJcmVhZCA9IHZy aW5naF9pb3ZfcHVsbF9rZXJuKCZ0eHEtPmlvdiwgbXZuZXQtPmJ1ZmZlciwKKwkJCQkJCSAgICBQ QUdFX1NJWkUpOworCQkJaWYgKHJlYWQgPD0gMCkKKwkJCQlicmVhazsKKworCQkJd3JpdGUgPSB2 cmluZ2hfaW92X3B1c2hfa2VybigmcnhxLT5pb3YsIG12bmV0LT5idWZmZXIsCisJCQkJCQkgICAg IHJlYWQpOworCQkJaWYgKHdyaXRlIDw9IDApCisJCQkJYnJlYWs7CisKKwkJCXRvdGFsX3dyaXRl ICs9IHdyaXRlOworCQl9CisKKwkJLyogTWFrZSBzdXJlIGRhdGEgaXMgd3JvdGUgYmVmb3JlIGFk dmFuY2luZyBpbmRleCAqLworCQlzbXBfd21iKCk7CisKKwkJdnJpbmdoX2NvbXBsZXRlX2tlcm4o JnR4cS0+dnJpbmcsIHR4cS0+aGVhZCwgMCk7CisJCXZyaW5naF9jb21wbGV0ZV9rZXJuKCZyeHEt PnZyaW5nLCByeHEtPmhlYWQsIHRvdGFsX3dyaXRlKTsKKworCQkvKiBNYWtlIHN1cmUgdXNlZCBp cyB2aXNpYmxlIGJlZm9yZSByYXNpbmcgdGhlIGludGVycnVwdC4gKi8KKwkJc21wX3dtYigpOwor CisJCWxvY2FsX2JoX2Rpc2FibGUoKTsKKwkJaWYgKHR4cS0+Y2IpCisJCQl0eHEtPmNiKHR4cS0+ cHJpdmF0ZSk7CisJCWlmIChyeHEtPmNiKQorCQkJcnhxLT5jYihyeHEtPnByaXZhdGUpOworCQls b2NhbF9iaF9lbmFibGUoKTsKKworCQlpZiAoKytwa3RzID4gNCkgeworCQkJc2NoZWR1bGVfd29y aygmbXZuZXQtPndvcmspOworCQkJZ290byBvdXQ7CisJCX0KKwl9CisKK291dDoKKwlzcGluX3Vu bG9jaygmbXZuZXQtPmxvY2spOworfQorCitzdGF0aWMgZG1hX2FkZHJfdCBtdm5ldF9tYXBfcGFn ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwYWdlICpwYWdlLAorCQkJCSB1bnNpZ25lZCBs b25nIG9mZnNldCwgc2l6ZV90IHNpemUsCisJCQkJIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRp ciwKKwkJCQkgdW5zaWduZWQgbG9uZyBhdHRycykKK3sKKwkvKiBWcmluZ2ggY2FuIG9ubHkgdXNl IEhWQSAqLworCXJldHVybiAoZG1hX2FkZHJfdCkocGFnZV9hZGRyZXNzKHBhZ2UpICsgb2Zmc2V0 KTsKK30KKworc3RhdGljIHZvaWQgbXZuZXRfdW5tYXBfcGFnZShzdHJ1Y3QgZGV2aWNlICpkZXYs IGRtYV9hZGRyX3QgZG1hX2FkZHIsCisJCQkgICAgIHNpemVfdCBzaXplLCBlbnVtIGRtYV9kYXRh X2RpcmVjdGlvbiBkaXIsCisJCQkgICAgIHVuc2lnbmVkIGxvbmcgYXR0cnMpCit7Cit9CisKK3N0 YXRpYyB2b2lkICptdm5ldF9hbGxvY19jb2hlcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVf dCBzaXplLAorCQkJCSAgZG1hX2FkZHJfdCAqZG1hX2FkZHIsIGdmcF90IGZsYWcsCisJCQkJICB1 bnNpZ25lZCBsb25nIGF0dHJzKQoreworCXZvaWQgKmFkZHIgPSBrbWFsbG9jKHNpemUsIGZsYWcp OworCisJaWYgKGFkZHIgPT0gTlVMTCkKKwkJKmRtYV9hZGRyID0gRE1BX01BUFBJTkdfRVJST1I7 CisJZWxzZQorCQkqZG1hX2FkZHIgPSAoZG1hX2FkZHJfdCkgYWRkcjsKKworCXJldHVybiBhZGRy OworfQorCitzdGF0aWMgdm9pZCBtdm5ldF9mcmVlX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRl diwgc2l6ZV90IHNpemUsCisJCQkJdm9pZCAqdmFkZHIsIGRtYV9hZGRyX3QgZG1hX2FkZHIsCisJ CQkJdW5zaWduZWQgbG9uZyBhdHRycykKK3sKKwlrZnJlZSgodm9pZCAqKWRtYV9hZGRyKTsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFfbWFwX29wcyBtdm5ldF9kbWFfb3BzID0geworCS5t YXBfcGFnZSA9IG12bmV0X21hcF9wYWdlLAorCS51bm1hcF9wYWdlID0gbXZuZXRfdW5tYXBfcGFn ZSwKKwkuYWxsb2MgPSBtdm5ldF9hbGxvY19jb2hlcmVudCwKKwkuZnJlZSA9IG12bmV0X2ZyZWVf Y29oZXJlbnQsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG1kZXZfdmlydGlvX2RldmljZV9v cHMgbWRldl92aXJ0aW9fb3BzOworCitzdGF0aWMgaW50IG12bmV0X2NyZWF0ZShzdHJ1Y3Qga29i amVjdCAqa29iaiwgc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KQoreworCXN0cnVjdCBtdm5ldF9z dGF0ZSAqbXZuZXQ7CisJc3RydWN0IHZpcnRpb19uZXRfY29uZmlnICpjb25maWc7CisJc3RydWN0 IGRldmljZSAqZGV2ID0gbWRldl9kZXYobWRldik7CisKKwlpZiAoIW1kZXYpCisJCXJldHVybiAt RUlOVkFMOworCisJbXZuZXQgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgbXZuZXRfc3RhdGUpLCBH RlBfS0VSTkVMKTsKKwlpZiAobXZuZXQgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlt dm5ldC0+YnVmZmVyID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpOworCWlmICghbXZu ZXQtPmJ1ZmZlcikgeworCQlrZnJlZShtdm5ldCk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwor CWNvbmZpZyA9ICZtdm5ldC0+Y29uZmlnOworCWNvbmZpZy0+bXR1ID0gMTUwMDsKKwljb25maWct PnN0YXR1cyA9IFZJUlRJT19ORVRfU19MSU5LX1VQOworCWV0aF9yYW5kb21fYWRkcihjb25maWct Pm1hYyk7CisKKwlJTklUX1dPUksoJm12bmV0LT53b3JrLCBtdm5ldF93b3JrKTsKKworCXNwaW5f bG9ja19pbml0KCZtdm5ldC0+bG9jayk7CisJbXZuZXQtPm1kZXYgPSBtZGV2OworCW1kZXZfc2V0 X2RydmRhdGEobWRldiwgbXZuZXQpOworCisJbXV0ZXhfbG9jaygmbWRldl9saXN0X2xvY2spOwor CWxpc3RfYWRkKCZtdm5ldC0+bmV4dCwgJm1kZXZfZGV2aWNlc19saXN0KTsKKwltdXRleF91bmxv Y2soJm1kZXZfbGlzdF9sb2NrKTsKKworCWRldi0+Y29oZXJlbnRfZG1hX21hc2sgPSBETUFfQklU X01BU0soNjQpOworCXNldF9kbWFfb3BzKGRldiwgJm12bmV0X2RtYV9vcHMpOworCisJbWRldl9z ZXRfdmlydGlvX29wcyhtZGV2LCAmbWRldl92aXJ0aW9fb3BzKTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IG12bmV0X3JlbW92ZShzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpCit7CisJ c3RydWN0IG12bmV0X3N0YXRlICptZHMsICp0bXBfbWRzOworCXN0cnVjdCBtdm5ldF9zdGF0ZSAq bXZuZXQgPSBtZGV2X2dldF9kcnZkYXRhKG1kZXYpOworCWludCByZXQgPSAtRUlOVkFMOworCisJ bXV0ZXhfbG9jaygmbWRldl9saXN0X2xvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSht ZHMsIHRtcF9tZHMsICZtZGV2X2RldmljZXNfbGlzdCwgbmV4dCkgeworCQlpZiAobXZuZXQgPT0g bWRzKSB7CisJCQlsaXN0X2RlbCgmbXZuZXQtPm5leHQpOworCQkJbWRldl9zZXRfZHJ2ZGF0YSht ZGV2LCBOVUxMKTsKKwkJCWtmcmVlKG12bmV0LT5idWZmZXIpOworCQkJa2ZyZWUobXZuZXQpOwor CQkJcmV0ID0gMDsKKwkJCWJyZWFrOworCQl9CisJfQorCW11dGV4X3VubG9jaygmbWRldl9saXN0 X2xvY2spOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHNzaXplX3QKK3NhbXBsZV9tdm5l dF9kZXZfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLAorCQkgICAgIGNoYXIgKmJ1ZikKK3sKKwlpZiAobWRldl9mcm9tX2RldihkZXYpKQorCQly ZXR1cm4gc3ByaW50ZihidWYsICJUaGlzIGlzIE1ERVYgJXNcbiIsIGRldl9uYW1lKGRldikpOwor CisJcmV0dXJuIHNwcmludGYoYnVmLCAiXG4iKTsKK30KKworc3RhdGljIERFVklDRV9BVFRSX1JP KHNhbXBsZV9tdm5ldF9kZXYpOworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbXZuZXRfZGV2 X2F0dHJzW10gPSB7CisJJmRldl9hdHRyX3NhbXBsZV9tdm5ldF9kZXYuYXR0ciwKKwlOVUxMLAor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbXZuZXRfZGV2X2dyb3Vw ID0geworCS5uYW1lICA9ICJtdm5ldF9kZXYiLAorCS5hdHRycyA9IG12bmV0X2Rldl9hdHRycywK K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICptdm5ldF9kZXZfZ3Jv dXBzW10gPSB7CisJJm12bmV0X2Rldl9ncm91cCwKKwlOVUxMLAorfTsKKworc3RhdGljIHNzaXpl X3QKK3NhbXBsZV9tZGV2X2Rldl9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsCisJCSAgICAgY2hhciAqYnVmKQoreworCWlmIChtZGV2X2Zyb21f ZGV2KGRldikpCisJCXJldHVybiBzcHJpbnRmKGJ1ZiwgIlRoaXMgaXMgTURFViAlc1xuIiwgZGV2 X25hbWUoZGV2KSk7CisKKwlyZXR1cm4gc3ByaW50ZihidWYsICJcbiIpOworfQorCitzdGF0aWMg REVWSUNFX0FUVFJfUk8oc2FtcGxlX21kZXZfZGV2KTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1 dGUgKm1kZXZfZGV2X2F0dHJzW10gPSB7CisJJmRldl9hdHRyX3NhbXBsZV9tZGV2X2Rldi5hdHRy LAorCU5VTEwsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBtZGV2 X2Rldl9ncm91cCA9IHsKKwkubmFtZSAgPSAidmVuZG9yIiwKKwkuYXR0cnMgPSBtZGV2X2Rldl9h dHRycywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICptZGV2X2Rl dl9ncm91cHNbXSA9IHsKKwkmbWRldl9kZXZfZ3JvdXAsCisJTlVMTCwKK307CisKKyNkZWZpbmUg TVZORVRfU1RSSU5HX0xFTiAxNgorCitzdGF0aWMgc3NpemVfdAorbmFtZV9zaG93KHN0cnVjdCBr b2JqZWN0ICprb2JqLCBzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKmJ1ZikKK3sKKwljaGFyIG5h bWVbTVZORVRfU1RSSU5HX0xFTl07CisJY29uc3QgY2hhciAqbmFtZV9zdHIgPSAidmlydGlvLW5l dCI7CisKKwlzbnByaW50ZihuYW1lLCBNVk5FVF9TVFJJTkdfTEVOLCAiJXMiLCBkZXZfZHJpdmVy X3N0cmluZyhkZXYpKTsKKwlpZiAoIXN0cmNtcChrb2JqLT5uYW1lLCBuYW1lKSkKKwkJcmV0dXJu IHNwcmludGYoYnVmLCAiJXNcbiIsIG5hbWVfc3RyKTsKKworCXJldHVybiAtRUlOVkFMOworfQor CitzdGF0aWMgTURFVl9UWVBFX0FUVFJfUk8obmFtZSk7CisKK3N0YXRpYyBzc2l6ZV90CithdmFp bGFibGVfaW5zdGFuY2VzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBkZXZpY2Ug KmRldiwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBJTlRfTUFY KTsKK30KKworc3RhdGljIE1ERVZfVFlQRV9BVFRSX1JPKGF2YWlsYWJsZV9pbnN0YW5jZXMpOwor CitzdGF0aWMgc3NpemVfdCBkZXZpY2VfYXBpX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0 cnVjdCBkZXZpY2UgKmRldiwKKwkJCSAgICAgICBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmlu dGYoYnVmLCAiJXNcbiIsIFZJUlRJT19NREVWX0RFVklDRV9BUElfU1RSSU5HKTsKK30KKworc3Rh dGljIE1ERVZfVFlQRV9BVFRSX1JPKGRldmljZV9hcGkpOworCitzdGF0aWMgc3RydWN0IGF0dHJp YnV0ZSAqbWRldl90eXBlc19hdHRyc1tdID0geworCSZtZGV2X3R5cGVfYXR0cl9uYW1lLmF0dHIs CisJJm1kZXZfdHlwZV9hdHRyX2RldmljZV9hcGkuYXR0ciwKKwkmbWRldl90eXBlX2F0dHJfYXZh aWxhYmxlX2luc3RhbmNlcy5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCBtZGV2X3R5cGVfZ3JvdXAgPSB7CisJLm5hbWUgID0gInZpcnRpbyIsCisJLmF0 dHJzID0gbWRldl90eXBlc19hdHRycywKK307CisKKy8qIFRCRDogInZob3N0IiB0eXBlICovCisK K3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICptZGV2X3R5cGVfZ3JvdXBzW10gPSB7CisJ Jm1kZXZfdHlwZV9ncm91cCwKKwlOVUxMLAorfTsKKworc3RhdGljIGludCBtdm5ldF9zZXRfdnFf YWRkcmVzcyhzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYsIHUxNiBpZHgsCisJCQkJdTY0IGRlc2Nf YXJlYSwgdTY0IGRyaXZlcl9hcmVhLCB1NjQgZGV2aWNlX2FyZWEpCit7CisJc3RydWN0IG12bmV0 X3N0YXRlICptdm5ldCA9IG1kZXZfZ2V0X2RydmRhdGEobWRldik7CisJc3RydWN0IG12bmV0X3Zp cnRxdWV1ZSAqdnEgPSAmbXZuZXQtPnZxc1tpZHhdOworCisJdnEtPmRlc2NfYWRkciA9IGRlc2Nf YXJlYTsKKwl2cS0+ZHJpdmVyX2FkZHIgPSBkcml2ZXJfYXJlYTsKKwl2cS0+ZGV2aWNlX2FkZHIg PSBkZXZpY2VfYXJlYTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBtdm5ldF9zZXRf dnFfbnVtKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldiwgdTE2IGlkeCwgdTMyIG51bSkKK3sKKwlz dHJ1Y3QgbXZuZXRfc3RhdGUgKm12bmV0ID0gbWRldl9nZXRfZHJ2ZGF0YShtZGV2KTsKKwlzdHJ1 Y3QgbXZuZXRfdmlydHF1ZXVlICp2cSA9ICZtdm5ldC0+dnFzW2lkeF07CisKKwl2cS0+bnVtID0g bnVtOworfQorCitzdGF0aWMgdm9pZCBtdm5ldF9raWNrX3ZxKHN0cnVjdCBtZGV2X2RldmljZSAq bWRldiwgdTE2IGlkeCkKK3sKKwlzdHJ1Y3QgbXZuZXRfc3RhdGUgKm12bmV0ID0gbWRldl9nZXRf ZHJ2ZGF0YShtZGV2KTsKKwlzdHJ1Y3QgbXZuZXRfdmlydHF1ZXVlICp2cSA9ICZtdm5ldC0+dnFz W2lkeF07CisKKwlpZiAodnEtPnJlYWR5KQorCQlzY2hlZHVsZV93b3JrKCZtdm5ldC0+d29yayk7 Cit9CisKK3N0YXRpYyB2b2lkIG12bmV0X3NldF92cV9jYihzdHJ1Y3QgbWRldl9kZXZpY2UgKm1k ZXYsIHUxNiBpZHgsCisJCQkgICAgc3RydWN0IHZpcnRpb19tZGV2X2NhbGxiYWNrICpjYikKK3sK KwlzdHJ1Y3QgbXZuZXRfc3RhdGUgKm12bmV0ID0gbWRldl9nZXRfZHJ2ZGF0YShtZGV2KTsKKwlz dHJ1Y3QgbXZuZXRfdmlydHF1ZXVlICp2cSA9ICZtdm5ldC0+dnFzW2lkeF07CisKKwl2cS0+Y2Ig PSBjYi0+Y2FsbGJhY2s7CisJdnEtPnByaXZhdGUgPSBjYi0+cHJpdmF0ZTsKK30KKworc3RhdGlj IHZvaWQgbXZuZXRfc2V0X3ZxX3JlYWR5KHN0cnVjdCBtZGV2X2RldmljZSAqbWRldiwgdTE2IGlk eCwgYm9vbCByZWFkeSkKK3sKKwlzdHJ1Y3QgbXZuZXRfc3RhdGUgKm12bmV0ID0gbWRldl9nZXRf ZHJ2ZGF0YShtZGV2KTsKKwlzdHJ1Y3QgbXZuZXRfdmlydHF1ZXVlICp2cSA9ICZtdm5ldC0+dnFz W2lkeF07CisKKwlzcGluX2xvY2soJm12bmV0LT5sb2NrKTsKKwl2cS0+cmVhZHkgPSByZWFkeTsK KwlpZiAodnEtPnJlYWR5KQorCQltdm5ldF9xdWV1ZV9yZWFkeShtdm5ldCwgaWR4KTsKKwlzcGlu X3VubG9jaygmbXZuZXQtPmxvY2spOworfQorCitzdGF0aWMgYm9vbCBtdm5ldF9nZXRfdnFfcmVh ZHkoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LCB1MTYgaWR4KQoreworCXN0cnVjdCBtdm5ldF9z dGF0ZSAqbXZuZXQgPSBtZGV2X2dldF9kcnZkYXRhKG1kZXYpOworCXN0cnVjdCBtdm5ldF92aXJ0 cXVldWUgKnZxID0gJm12bmV0LT52cXNbaWR4XTsKKworCXJldHVybiB2cS0+cmVhZHk7Cit9CisK K3N0YXRpYyBpbnQgbXZuZXRfc2V0X3ZxX3N0YXRlKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldiwg dTE2IGlkeCwgdTY0IHN0YXRlKQoreworCXN0cnVjdCBtdm5ldF9zdGF0ZSAqbXZuZXQgPSBtZGV2 X2dldF9kcnZkYXRhKG1kZXYpOworCXN0cnVjdCBtdm5ldF92aXJ0cXVldWUgKnZxID0gJm12bmV0 LT52cXNbaWR4XTsKKwlzdHJ1Y3QgdnJpbmdoICp2cmggPSAmdnEtPnZyaW5nOworCisJc3Bpbl9s b2NrKCZtdm5ldC0+bG9jayk7CisJdnJoLT5sYXN0X2F2YWlsX2lkeCA9IHN0YXRlOworCXNwaW5f dW5sb2NrKCZtdm5ldC0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHU2NCBtdm5l dF9nZXRfdnFfc3RhdGUoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LCB1MTYgaWR4KQoreworCXN0 cnVjdCBtdm5ldF9zdGF0ZSAqbXZuZXQgPSBtZGV2X2dldF9kcnZkYXRhKG1kZXYpOworCXN0cnVj dCBtdm5ldF92aXJ0cXVldWUgKnZxID0gJm12bmV0LT52cXNbaWR4XTsKKwlzdHJ1Y3QgdnJpbmdo ICp2cmggPSAmdnEtPnZyaW5nOworCisJcmV0dXJuIHZyaC0+bGFzdF9hdmFpbF9pZHg7Cit9CisK K3N0YXRpYyB1MTYgbXZuZXRfZ2V0X3ZxX2FsaWduKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldikK K3sKKwlyZXR1cm4gTVZORVRfUVVFVUVfQUxJR047Cit9CisKK3N0YXRpYyB1NjQgbXZuZXRfZ2V0 X2ZlYXR1cmVzKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldikKK3sKKwlyZXR1cm4gbXZuZXRfZmVh dHVyZXM7Cit9CisKK3N0YXRpYyBpbnQgbXZuZXRfc2V0X2ZlYXR1cmVzKHN0cnVjdCBtZGV2X2Rl dmljZSAqbWRldiwgdTY0IGZlYXR1cmVzKQoreworCXN0cnVjdCBtdm5ldF9zdGF0ZSAqbXZuZXQg PSBtZGV2X2dldF9kcnZkYXRhKG1kZXYpOworCisJLyogRE1BIG1hcHBpbmcgbXVzdCBiZSBkb25l IGJ5IGRyaXZlciAqLworCWlmICghKGZlYXR1cmVzICYgKDFVTEwgPDwgVklSVElPX0ZfSU9NTVVf UExBVEZPUk0pKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltdm5ldC0+ZmVhdHVyZXMgPSBmZWF0 dXJlcyAmIG12bmV0X2ZlYXR1cmVzOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG12 bmV0X3NldF9jb25maWdfY2Ioc3RydWN0IG1kZXZfZGV2aWNlICptZGV2LAorCQkJCXN0cnVjdCB2 aXJ0aW9fbWRldl9jYWxsYmFjayAqY2IpCit7CisJLyogV2UgZG9uJ3Qgc3VwcG9ydCBjb25maWcg aW50ZXJydXB0ICovCit9CisKK3N0YXRpYyB1MTYgbXZuZXRfZ2V0X3ZxX251bV9tYXgoc3RydWN0 IG1kZXZfZGV2aWNlICptZGV2KQoreworCXJldHVybiBNVk5FVF9RVUVVRV9NQVg7Cit9CisKK3N0 YXRpYyB1MzIgbXZuZXRfZ2V0X2RldmljZV9pZChzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpCit7 CisJcmV0dXJuIE1WTkVUX0RFVklDRV9JRDsKK30KKworc3RhdGljIHUzMiBtdm5ldF9nZXRfdmVu ZG9yX2lkKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldikKK3sKKwlyZXR1cm4gTVZORVRfVkVORE9S X0lEOworfQorCitzdGF0aWMgdTggbXZuZXRfZ2V0X3N0YXR1cyhzdHJ1Y3QgbWRldl9kZXZpY2Ug Km1kZXYpCit7CisJc3RydWN0IG12bmV0X3N0YXRlICptdm5ldCA9IG1kZXZfZ2V0X2RydmRhdGEo bWRldik7CisKKwlyZXR1cm4gbXZuZXQtPnN0YXR1czsKK30KKworc3RhdGljIHZvaWQgbXZuZXRf c2V0X3N0YXR1cyhzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYsIHU4IHN0YXR1cykKK3sKKwlzdHJ1 Y3QgbXZuZXRfc3RhdGUgKm12bmV0ID0gbWRldl9nZXRfZHJ2ZGF0YShtZGV2KTsKKworCW12bmV0 LT5zdGF0dXMgPSBzdGF0dXM7CisKKwlpZiAoc3RhdHVzID09IDApIHsKKwkJc3Bpbl9sb2NrKCZt dm5ldC0+bG9jayk7CisJCW12bmV0X3Jlc2V0KG12bmV0KTsKKwkJc3Bpbl91bmxvY2soJm12bmV0 LT5sb2NrKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIG12bmV0X2dldF9jb25maWcoc3RydWN0IG1k ZXZfZGV2aWNlICptZGV2LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAorCQkJICAgICB2b2lkICpidWYs IHVuc2lnbmVkIGludCBsZW4pCit7CisJc3RydWN0IG12bmV0X3N0YXRlICptdm5ldCA9IG1kZXZf Z2V0X2RydmRhdGEobWRldik7CisKKwlpZiAob2Zmc2V0ICsgbGVuIDwgc2l6ZW9mKHN0cnVjdCB2 aXJ0aW9fbmV0X2NvbmZpZykpCisJCW1lbWNweShidWYsICZtdm5ldC0+Y29uZmlnICsgb2Zmc2V0 LCBsZW4pOworfQorCitzdGF0aWMgdm9pZCBtdm5ldF9zZXRfY29uZmlnKHN0cnVjdCBtZGV2X2Rl dmljZSAqbWRldiwgdW5zaWduZWQgaW50IG9mZnNldCwKKwkJCSAgICAgY29uc3Qgdm9pZCAqYnVm LCB1bnNpZ25lZCBpbnQgbGVuKQoreworCS8qIE5vIHdyaXRhYmxlIGNvbmZpZyBzdXBwb3J0dGVk IGJ5IG12bmV0ICovCit9CisKK3N0YXRpYyB1MzIgbXZuZXRfZ2V0X2dlbmVyYXRpb24oc3RydWN0 IG1kZXZfZGV2aWNlICptZGV2KQoreworCXN0cnVjdCBtdm5ldF9zdGF0ZSAqbXZuZXQgPSBtZGV2 X2dldF9kcnZkYXRhKG1kZXYpOworCisJcmV0dXJuIG12bmV0LT5nZW5lcmF0aW9uOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IG1kZXZfdmlydGlvX2RldmljZV9vcHMgbWRldl92aXJ0aW9fb3Bz ID0geworCS5zZXRfdnFfYWRkcmVzcyAgICAgICAgID0gbXZuZXRfc2V0X3ZxX2FkZHJlc3MsCisJ LnNldF92cV9udW0gICAgICAgICAgICAgPSBtdm5ldF9zZXRfdnFfbnVtLAorCS5raWNrX3ZxICAg ICAgICAgICAgICAgID0gbXZuZXRfa2lja192cSwKKwkuc2V0X3ZxX2NiICAgICAgICAgICAgICA9 IG12bmV0X3NldF92cV9jYiwKKwkuc2V0X3ZxX3JlYWR5ICAgICAgICAgICA9IG12bmV0X3NldF92 cV9yZWFkeSwKKwkuZ2V0X3ZxX3JlYWR5ICAgICAgICAgICA9IG12bmV0X2dldF92cV9yZWFkeSwK Kwkuc2V0X3ZxX3N0YXRlICAgICAgICAgICA9IG12bmV0X3NldF92cV9zdGF0ZSwKKwkuZ2V0X3Zx X3N0YXRlICAgICAgICAgICA9IG12bmV0X2dldF92cV9zdGF0ZSwKKwkuZ2V0X3ZxX2FsaWduICAg ICAgICAgICA9IG12bmV0X2dldF92cV9hbGlnbiwKKwkuZ2V0X2ZlYXR1cmVzICAgICAgICAgICA9 IG12bmV0X2dldF9mZWF0dXJlcywKKwkuc2V0X2ZlYXR1cmVzICAgICAgICAgICA9IG12bmV0X3Nl dF9mZWF0dXJlcywKKwkuc2V0X2NvbmZpZ19jYiAgICAgICAgICA9IG12bmV0X3NldF9jb25maWdf Y2IsCisJLmdldF92cV9udW1fbWF4ICAgICAgICAgPSBtdm5ldF9nZXRfdnFfbnVtX21heCwKKwku Z2V0X2RldmljZV9pZCAgICAgICAgICA9IG12bmV0X2dldF9kZXZpY2VfaWQsCisJLmdldF92ZW5k b3JfaWQgICAgICAgICAgPSBtdm5ldF9nZXRfdmVuZG9yX2lkLAorCS5nZXRfc3RhdHVzICAgICAg ICAgICAgID0gbXZuZXRfZ2V0X3N0YXR1cywKKwkuc2V0X3N0YXR1cyAgICAgICAgICAgICA9IG12 bmV0X3NldF9zdGF0dXMsCisJLmdldF9jb25maWcgICAgICAgICAgICAgPSBtdm5ldF9nZXRfY29u ZmlnLAorCS5zZXRfY29uZmlnICAgICAgICAgICAgID0gbXZuZXRfc2V0X2NvbmZpZywKKwkuZ2V0 X2dlbmVyYXRpb24gICAgICAgICA9IG12bmV0X2dldF9nZW5lcmF0aW9uLAorfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBtZGV2X3BhcmVudF9vcHMgbWRldl9mb3BzID0geworCS5vd25lciAgICAg ICAgICAgICAgICAgID0gVEhJU19NT0RVTEUsCisJLmRldl9hdHRyX2dyb3VwcyAgICAgICAgPSBt dm5ldF9kZXZfZ3JvdXBzLAorCS5tZGV2X2F0dHJfZ3JvdXBzICAgICAgID0gbWRldl9kZXZfZ3Jv dXBzLAorCS5zdXBwb3J0ZWRfdHlwZV9ncm91cHMgID0gbWRldl90eXBlX2dyb3VwcywKKwkuY3Jl YXRlICAgICAgICAgICAgICAgICA9IG12bmV0X2NyZWF0ZSwKKwkucmVtb3ZlCQkJPSBtdm5ldF9y ZW1vdmUsCit9OworCitzdGF0aWMgdm9pZCBtdm5ldF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2 aWNlICpkZXYpCit7CisJZGV2X2RiZyhkZXYsICJtdm5ldDogcmVsZWFzZWRcbiIpOworfQorCitz dGF0aWMgaW50IF9faW5pdCBtdm5ldF9kZXZfaW5pdCh2b2lkKQoreworCWludCByZXQgPSAwOwor CisJcHJfaW5mbygibXZuZXRfZGV2OiAlc1xuIiwgX19mdW5jX18pOworCisJbWVtc2V0KCZtdm5l dF9kZXYsIDAsIHNpemVvZihtdm5ldF9kZXYpKTsKKworCWlkcl9pbml0KCZtdm5ldF9kZXYudmRf aWRyKTsKKworCW12bmV0X2Rldi52ZF9jbGFzcyA9IGNsYXNzX2NyZWF0ZShUSElTX01PRFVMRSwg TVZORVRfQ0xBU1NfTkFNRSk7CisKKwlpZiAoSVNfRVJSKG12bmV0X2Rldi52ZF9jbGFzcykpIHsK KwkJcHJfZXJyKCJFcnJvcjogZmFpbGVkIHRvIHJlZ2lzdGVyIG12bmV0X2RldiBjbGFzc1xuIik7 CisJCXJldCA9IFBUUl9FUlIobXZuZXRfZGV2LnZkX2NsYXNzKTsKKwkJZ290byBmYWlsZWQxOwor CX0KKworCW12bmV0X2Rldi5kZXYuY2xhc3MgPSBtdm5ldF9kZXYudmRfY2xhc3M7CisJbXZuZXRf ZGV2LmRldi5yZWxlYXNlID0gbXZuZXRfZGV2aWNlX3JlbGVhc2U7CisJZGV2X3NldF9uYW1lKCZt dm5ldF9kZXYuZGV2LCAiJXMiLCBNVk5FVF9OQU1FKTsKKworCXJldCA9IGRldmljZV9yZWdpc3Rl cigmbXZuZXRfZGV2LmRldik7CisJaWYgKHJldCkKKwkJZ290byBmYWlsZWQyOworCisJcmV0ID0g bWRldl9yZWdpc3Rlcl9kZXZpY2UoJm12bmV0X2Rldi5kZXYsICZtZGV2X2ZvcHMpOworCWlmIChy ZXQpCisJCWdvdG8gZmFpbGVkMzsKKworCW11dGV4X2luaXQoJm1kZXZfbGlzdF9sb2NrKTsKKwlJ TklUX0xJU1RfSEVBRCgmbWRldl9kZXZpY2VzX2xpc3QpOworCisJZ290byBhbGxfZG9uZTsKKwor ZmFpbGVkMzoKKworCWRldmljZV91bnJlZ2lzdGVyKCZtdm5ldF9kZXYuZGV2KTsKK2ZhaWxlZDI6 CisJY2xhc3NfZGVzdHJveShtdm5ldF9kZXYudmRfY2xhc3MpOworCitmYWlsZWQxOgorYWxsX2Rv bmU6CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgX19leGl0IG12bmV0X2Rldl9leGl0 KHZvaWQpCit7CisJbXZuZXRfZGV2LmRldi5idXMgPSBOVUxMOworCW1kZXZfdW5yZWdpc3Rlcl9k ZXZpY2UoJm12bmV0X2Rldi5kZXYpOworCisJZGV2aWNlX3VucmVnaXN0ZXIoJm12bmV0X2Rldi5k ZXYpOworCWlkcl9kZXN0cm95KCZtdm5ldF9kZXYudmRfaWRyKTsKKwljbGFzc19kZXN0cm95KG12 bmV0X2Rldi52ZF9jbGFzcyk7CisJbXZuZXRfZGV2LnZkX2NsYXNzID0gTlVMTDsKKwlwcl9pbmZv KCJtdm5ldF9kZXY6IFVubG9hZGVkIVxuIik7Cit9CisKK21vZHVsZV9pbml0KG12bmV0X2Rldl9p bml0KQorbW9kdWxlX2V4aXQobXZuZXRfZGV2X2V4aXQpCisKK01PRFVMRV9MSUNFTlNFKCJHUEwg djIiKTsKK01PRFVMRV9JTkZPKHN1cHBvcnRlZCwgIlNpbXVsYXRlIGxvb3BiYWNrIGV0aGVybmV0 IGRldmljZSBvdmVyIG1kZXYiKTsKK01PRFVMRV9WRVJTSU9OKFZFUlNJT05fU1RSSU5HKTsKK01P RFVMRV9BVVRIT1IoRFJJVkVSX0FVVEhPUik7Ci0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==