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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 31537C433F5 for ; Mon, 11 Oct 2021 03:03:08 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (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 B03F46054F for ; Mon, 11 Oct 2021 03:03:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org B03F46054F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 50FFC4039D; Mon, 11 Oct 2021 03:03:07 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qWxYchHv9A2m; Mon, 11 Oct 2021 03:03:05 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp4.osuosl.org (Postfix) with ESMTPS id 4405040271; Mon, 11 Oct 2021 03:03:05 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id EBDC5C000F; Mon, 11 Oct 2021 03:03:04 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 93B13C000D for ; Mon, 11 Oct 2021 03:03:03 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 70E284024E for ; Mon, 11 Oct 2021 03:03:03 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp2.osuosl.org (amavisd-new); dkim=pass (1024-bit key) header.d=redhat.com Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id F5Xl1G2EX_uA for ; Mon, 11 Oct 2021 03:03:01 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by smtp2.osuosl.org (Postfix) with ESMTPS id 8FC2D4023C for ; Mon, 11 Oct 2021 03:03:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1633921380; 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=ep/IQjZzEUDaeX9b8N3ewSbHxeYltfMqeGu5JVcLuBA=; b=az5doadUiufKVQwYOQVpWeELPVPI7nKlkG+fsRhtB6b4QjvVNrpuZC+5fqm6JbRx2PVGGD crb1Tb+ZWrTsYvtJiHOdhkI68ygbPQEkLfGjwxGlyI9yL2uqghILOvPYNSNkDszK3wO3qr Kkv/biKwtfVctJet4viDcOcB7/mCOoA= Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-303-XuCG6BqYNdO09qD_Gcw56A-1; Sun, 10 Oct 2021 23:02:59 -0400 X-MC-Unique: XuCG6BqYNdO09qD_Gcw56A-1 Received: by mail-pl1-f199.google.com with SMTP id o6-20020a170902778600b0013c8ce59005so7217216pll.2 for ; Sun, 10 Oct 2021 20:02:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=ep/IQjZzEUDaeX9b8N3ewSbHxeYltfMqeGu5JVcLuBA=; b=ZBL/nPdL+2TcyyMzUNpLQ7YY3qz98sNf5AUePzjH3NG6/Wnzv1ThshnA71WCICeCl8 C4WeIoe8jZRaXoEUgg7rBNEAJdb4HVuDhNp9ZExHSSbk0gzRspdofY3XgE0aTCaoXfi/ iZmTJBX/x/WeiZgk3WJKyat1ENrfxOZD5T8s7nlTG2u6FocPpU1N4ww1orSS0orivTTh EtnRhY9k2aPN0ZFyLtFeyjfa92oIDRfA66o89oQFM+FxWy2py72LDgKCYSpvTcUnFzhN 7oGOwGLzME/M73K9r2ryaBLENFeb9HzXloTShc4+dScLPG0IttEtGn52WTWLgIiYEFhd CH6w== X-Gm-Message-State: AOAM5327PMwMwHelbEc6xvSKDZHEa7LkVv+tW4qZUWqyUrWHyWqG06MY fqL/ZUuMHhATuqfdAqIRskYtTV4KtvxccOalFRQKeIhvNFudYnKX1e07GRzCuyqvhs0RL2FQbZD 2sPQR/MyttMmkN/Gak8bCcWKmve368mQ+BjafD7k1+g== X-Received: by 2002:a17:902:e74a:b0:13f:3538:fca0 with SMTP id p10-20020a170902e74a00b0013f3538fca0mr4438675plf.22.1633921378076; Sun, 10 Oct 2021 20:02:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxEsTVqtzKcpaLFRb/oOyLSfXXLORN55ZqgosVL8WudT2ITjI/dGae2/7vv9OSaC1LsR2BaSA== X-Received: by 2002:a17:902:e74a:b0:13f:3538:fca0 with SMTP id p10-20020a170902e74a00b0013f3538fca0mr4438639plf.22.1633921377610; Sun, 10 Oct 2021 20:02:57 -0700 (PDT) Received: from wangxiaodeMacBook-Air.local ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id o15sm5959453pfg.14.2021.10.10.20.02.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 10 Oct 2021 20:02:57 -0700 (PDT) Subject: Re: [PATCH v4 1/7] virtio-pci: introduce legacy device module To: Wu Zongyong , virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, mst@redhat.com References: From: Jason Wang Message-ID: Date: Mon, 11 Oct 2021 11:02:53 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: wei.yang1@linux.alibaba.com X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="gbk"; Format="flowed" Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" CtTaIDIwMjEvOS8yOSDPws7nMjoxMSwgV3UgWm9uZ3lvbmcg0LS1wDoKPiBTcGxpdCBjb21tb24g Y29kZXMgZnJvbSB2aXJ0aW8tcGNpLWxlZ2FjeSBzbyB2RFBBIGRyaXZlciBjYW4gcmV1c2UgaXQK PiBsYXRlci4KPgo+IFNpZ25lZC1vZmYtYnk6IFd1IFpvbmd5b25nIDx3dXpvbmd5b25nQGxpbnV4 LmFsaWJhYmEuY29tPgo+IC0tLQo+ICAgZHJpdmVycy92aXJ0aW8vS2NvbmZpZyAgICAgICAgICAg ICAgICAgfCAgMTAgKysKPiAgIGRyaXZlcnMvdmlydGlvL01ha2VmaWxlICAgICAgICAgICAgICAg IHwgICAxICsKPiAgIGRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMgICAgIHwgIDEw ICstCj4gICBkcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oICAgICB8ICAgOSArLQo+ ICAgZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9sZWdhY3kuYyAgICAgfCAxMDEgKysrLS0tLS0t LS0tCj4gICBkcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeV9kZXYuYyB8IDIyMCArKysr KysrKysrKysrKysrKysrKysrKysrCj4gICBpbmNsdWRlL2xpbnV4L3ZpcnRpb19wY2lfbGVnYWN5 LmggICAgICB8ICA0NCArKysrKwo+ICAgNyBmaWxlcyBjaGFuZ2VkLCAzMTIgaW5zZXJ0aW9ucygr KSwgODMgZGVsZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0aW8v dmlydGlvX3BjaV9sZWdhY3lfZGV2LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xp bnV4L3ZpcnRpb19wY2lfbGVnYWN5LmgKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRpby9L Y29uZmlnIGIvZHJpdmVycy92aXJ0aW8vS2NvbmZpZwo+IGluZGV4IGNlMWIzZjZlYzMyNS4uOGZj Zjk0Y2QyYzk2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlydGlvL0tjb25maWcKPiArKysgYi9k cml2ZXJzL3ZpcnRpby9LY29uZmlnCj4gQEAgLTIwLDYgKzIwLDE1IEBAIGNvbmZpZyBWSVJUSU9f UENJX0xJQgo+ICAgCSAgUENJIGRldmljZSB3aXRoIHBvc3NpYmxlIHZlbmRvciBzcGVjaWZpYyBl eHRlbnNpb25zLiBBbnkKPiAgIAkgIG1vZHVsZSB0aGF0IHNlbGVjdHMgdGhpcyBtb2R1bGUgbXVz dCBkZXBlbmQgb24gUENJLgo+ICAgCj4gK2NvbmZpZyBWSVJUSU9fUENJX0xJQl9MRUdBQ1kKPiAr CXRyaXN0YXRlCj4gKwloZWxwCj4gKwkgIExlZ2FjeSBQQ0kgZGV2aWNlIChWaXJ0aW8gUENJIENh cmQgMC45LnggRHJhZnQgYW5kIG9sZGVyIGRldmljZSkKPiArCSAgaW1wbGVtZW50YXRpb24uCj4g KwkgIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgdGhlIGJhc2ljIHByb2JlIGFuZCBjb250cm9sIGZv ciBkZXZpY2VzCj4gKwkgIHdoaWNoIGFyZSBiYXNlZCBvbiBsZWdhY3kgUENJIGRldmljZS4gQW55 IG1vZHVsZSB0aGF0IHNlbGVjdHMgdGhpcwo+ICsJICBtb2R1bGUgbXVzdCBkZXBlbmQgb24gUENJ Lgo+ICsKPiAgIG1lbnVjb25maWcgVklSVElPX01FTlUKPiAgIAlib29sICJWaXJ0aW8gZHJpdmVy cyIKPiAgIAlkZWZhdWx0IHkKPiBAQCAtNDMsNiArNTIsNyBAQCBjb25maWcgVklSVElPX1BDSV9M RUdBQ1kKPiAgIAlib29sICJTdXBwb3J0IGZvciBsZWdhY3kgdmlydGlvIGRyYWZ0IDAuOS5YIGFu ZCBvbGRlciBkZXZpY2VzIgo+ICAgCWRlZmF1bHQgeQo+ICAgCWRlcGVuZHMgb24gVklSVElPX1BD SQo+ICsJc2VsZWN0IFZJUlRJT19QQ0lfTElCX0xFR0FDWQo+ICAgCWhlbHAKPiAgICAgICAgICAg ICBWaXJ0aW8gUENJIENhcmQgMC45LlggRHJhZnQgKGNpcmNhIDIwMTQpIGFuZCBvbGRlciBkZXZp Y2Ugc3VwcG9ydC4KPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRpby9NYWtlZmlsZSBi L2RyaXZlcnMvdmlydGlvL01ha2VmaWxlCj4gaW5kZXggNjk5YmJlYTA0NjVmLi4wYTgyZDA4NzMy NDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aXJ0aW8vTWFrZWZpbGUKPiArKysgYi9kcml2ZXJz L3ZpcnRpby9NYWtlZmlsZQo+IEBAIC0xLDYgKzEsNyBAQAo+ICAgIyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMAo+ICAgb2JqLSQoQ09ORklHX1ZJUlRJTykgKz0gdmlydGlvLm8gdmly dGlvX3Jpbmcubwo+ICAgb2JqLSQoQ09ORklHX1ZJUlRJT19QQ0lfTElCKSArPSB2aXJ0aW9fcGNp X21vZGVybl9kZXYubwo+ICtvYmotJChDT05GSUdfVklSVElPX1BDSV9MSUJfTEVHQUNZKSArPSB2 aXJ0aW9fcGNpX2xlZ2FjeV9kZXYubwo+ICAgb2JqLSQoQ09ORklHX1ZJUlRJT19NTUlPKSArPSB2 aXJ0aW9fbW1pby5vCj4gICBvYmotJChDT05GSUdfVklSVElPX1BDSSkgKz0gdmlydGlvX3BjaS5v Cj4gICB2aXJ0aW9fcGNpLXkgOj0gdmlydGlvX3BjaV9tb2Rlcm4ubyB2aXJ0aW9fcGNpX2NvbW1v bi5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMgYi9k cml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jCj4gaW5kZXggYjM1YmIyZDU3ZjYyLi5k NzI0ZjY3NjYwOGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21t b24uYwo+ICsrKyBiL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMKPiBAQCAtNTQ5 LDYgKzU0OSw4IEBAIHN0YXRpYyBpbnQgdmlydGlvX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAq cGNpX2RldiwKPiAgIAo+ICAgCXBjaV9zZXRfbWFzdGVyKHBjaV9kZXYpOwo+ICAgCj4gKwl2cF9k ZXYtPmlzX2xlZ2FjeSA9IHZwX2Rldi0+bGRldi5pb2FkZHIgPyB0cnVlIDogZmFsc2U7Cj4gKwo+ ICAgCXJjID0gcmVnaXN0ZXJfdmlydGlvX2RldmljZSgmdnBfZGV2LT52ZGV2KTsKPiAgIAlyZWdf ZGV2ID0gdnBfZGV2Owo+ICAgCWlmIChyYykKPiBAQCAtNTU3LDEwICs1NTksMTAgQEAgc3RhdGlj IGludCB2aXJ0aW9fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LAo+ICAgCXJldHVy biAwOwo+ICAgCj4gICBlcnJfcmVnaXN0ZXI6Cj4gLQlpZiAodnBfZGV2LT5pb2FkZHIpCj4gLQkg ICAgIHZpcnRpb19wY2lfbGVnYWN5X3JlbW92ZSh2cF9kZXYpOwo+ICsJaWYgKHZwX2Rldi0+aXNf bGVnYWN5KQo+ICsJCXZpcnRpb19wY2lfbGVnYWN5X3JlbW92ZSh2cF9kZXYpOwo+ICAgCWVsc2UK PiAtCSAgICAgdmlydGlvX3BjaV9tb2Rlcm5fcmVtb3ZlKHZwX2Rldik7Cj4gKwkJdmlydGlvX3Bj aV9tb2Rlcm5fcmVtb3ZlKHZwX2Rldik7Cj4gICBlcnJfcHJvYmU6Cj4gICAJcGNpX2Rpc2FibGVf ZGV2aWNlKHBjaV9kZXYpOwo+ICAgZXJyX2VuYWJsZV9kZXZpY2U6Cj4gQEAgLTU4Nyw3ICs1ODks NyBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2Rl dikKPiAgIAo+ICAgCXVucmVnaXN0ZXJfdmlydGlvX2RldmljZSgmdnBfZGV2LT52ZGV2KTsKPiAg IAo+IC0JaWYgKHZwX2Rldi0+aW9hZGRyKQo+ICsJaWYgKHZwX2Rldi0+aXNfbGVnYWN5KQo+ICAg CQl2aXJ0aW9fcGNpX2xlZ2FjeV9yZW1vdmUodnBfZGV2KTsKPiAgIAllbHNlCj4gICAJCXZpcnRp b19wY2lfbW9kZXJuX3JlbW92ZSh2cF9kZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnRp by92aXJ0aW9fcGNpX2NvbW1vbi5oIGIvZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24u aAo+IGluZGV4IGJlZWMwNDdhOGY4ZC4uZWIxN2EyOWZjN2VmIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmgKPiArKysgYi9kcml2ZXJzL3ZpcnRpby92aXJ0 aW9fcGNpX2NvbW1vbi5oCj4gQEAgLTI1LDYgKzI1LDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC92 aXJ0aW9fY29uZmlnLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvdmlydGlvX3JpbmcuaD4KPiAgICNp bmNsdWRlIDxsaW51eC92aXJ0aW9fcGNpLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC92aXJ0aW9fcGNp X2xlZ2FjeS5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L3ZpcnRpb19wY2lfbW9kZXJuLmg+Cj4gICAj aW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+ Cj4gQEAgLTQ0LDE2ICs0NSwxNCBAQCBzdHJ1Y3QgdmlydGlvX3BjaV92cV9pbmZvIHsKPiAgIHN0 cnVjdCB2aXJ0aW9fcGNpX2RldmljZSB7Cj4gICAJc3RydWN0IHZpcnRpb19kZXZpY2UgdmRldjsK PiAgIAlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjsKPiArCXN0cnVjdCB2aXJ0aW9fcGNpX2xlZ2Fj eV9kZXZpY2UgbGRldjsKPiAgIAlzdHJ1Y3QgdmlydGlvX3BjaV9tb2Rlcm5fZGV2aWNlIG1kZXY7 Cj4gICAKPiAtCS8qIEluIGxlZ2FjeSBtb2RlLCB0aGVzZSB0d28gcG9pbnQgdG8gd2l0aGluIC0+ bGVnYWN5LiAqLwo+ICsJYm9vbCBpc19sZWdhY3k7Cj4gKwo+ICAgCS8qIFdoZXJlIHRvIHJlYWQg YW5kIGNsZWFyIGludGVycnVwdCAqLwo+ICAgCXU4IF9faW9tZW0gKmlzcjsKPiAgIAo+IC0JLyog TGVnYWN5IG9ubHkgZmllbGQgKi8KPiAtCS8qIHRoZSBJTyBtYXBwaW5nIGZvciB0aGUgUENJIGNv bmZpZyBzcGFjZSAqLwo+IC0Jdm9pZCBfX2lvbWVtICppb2FkZHI7Cj4gLQo+ICAgCS8qIGEgbGlz dCBvZiBxdWV1ZXMgc28gd2UgY2FuIGRpc3BhdGNoIElSUXMgKi8KPiAgIAlzcGlubG9ja190IGxv Y2s7Cj4gICAJc3RydWN0IGxpc3RfaGVhZCB2aXJ0cXVldWVzOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jIGIvZHJpdmVycy92aXJ0aW8vdmlydGlvX3Bj aV9sZWdhY3kuYwo+IGluZGV4IGQ2MmU5ODM1YWVlYy4uODJlYjQzN2FkOTIwIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmMKPiArKysgYi9kcml2ZXJzL3Zp cnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jCj4gQEAgLTE0LDYgKzE0LDcgQEAKPiAgICAqICBNaWNo YWVsIFMuIFRzaXJraW4gPG1zdEByZWRoYXQuY29tPgo+ICAgICovCj4gICAKPiArI2luY2x1ZGUg ImxpbnV4L3ZpcnRpb19wY2lfbGVnYWN5LmgiCj4gICAjaW5jbHVkZSAidmlydGlvX3BjaV9jb21t b24uaCIKPiAgIAo+ICAgLyogdmlydGlvIGNvbmZpZy0+Z2V0X2ZlYXR1cmVzKCkgaW1wbGVtZW50 YXRpb24gKi8KPiBAQCAtMjMsNyArMjQsNyBAQCBzdGF0aWMgdTY0IHZwX2dldF9mZWF0dXJlcyhz dHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldikKPiAgIAo+ICAgCS8qIFdoZW4gc29tZW9uZSBuZWVk cyBtb3JlIHRoYW4gMzIgZmVhdHVyZSBiaXRzLCB3ZSdsbCBuZWVkIHRvCj4gICAJICogc3RlYWwg YSBiaXQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcmVzdCBhcmUgc29tZXdoZXJlIGVsc2UuICovCj4g LQlyZXR1cm4gaW9yZWFkMzIodnBfZGV2LT5pb2FkZHIgKyBWSVJUSU9fUENJX0hPU1RfRkVBVFVS RVMpOwo+ICsJcmV0dXJuIHZwX2xlZ2FjeV9nZXRfZmVhdHVyZXMoJnZwX2Rldi0+bGRldik7Cj4g ICB9Cj4gICAKPiAgIC8qIHZpcnRpbyBjb25maWctPmZpbmFsaXplX2ZlYXR1cmVzKCkgaW1wbGVt ZW50YXRpb24gKi8KPiBAQCAtMzgsNyArMzksNyBAQCBzdGF0aWMgaW50IHZwX2ZpbmFsaXplX2Zl YXR1cmVzKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQo+ICAgCUJVR19PTigodTMyKXZkZXYt PmZlYXR1cmVzICE9IHZkZXYtPmZlYXR1cmVzKTsKPiAgIAo+ICAgCS8qIFdlIG9ubHkgc3VwcG9y dCAzMiBmZWF0dXJlIGJpdHMuICovCj4gLQlpb3dyaXRlMzIodmRldi0+ZmVhdHVyZXMsIHZwX2Rl di0+aW9hZGRyICsgVklSVElPX1BDSV9HVUVTVF9GRUFUVVJFUyk7Cj4gKwl2cF9sZWdhY3lfc2V0 X2ZlYXR1cmVzKCZ2cF9kZXYtPmxkZXYsIHZkZXYtPmZlYXR1cmVzKTsKPiAgIAo+ICAgCXJldHVy biAwOwo+ICAgfQo+IEBAIC00OCw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIHZwX2dldChzdHJ1Y3Qg dmlydGlvX2RldmljZSAqdmRldiwgdW5zaWduZWQgb2Zmc2V0LAo+ICAgCQkgICB2b2lkICpidWYs IHVuc2lnbmVkIGxlbikKPiAgIHsKPiAgIAlzdHJ1Y3QgdmlydGlvX3BjaV9kZXZpY2UgKnZwX2Rl diA9IHRvX3ZwX2RldmljZSh2ZGV2KTsKPiAtCXZvaWQgX19pb21lbSAqaW9hZGRyID0gdnBfZGV2 LT5pb2FkZHIgKwo+ICsJdm9pZCBfX2lvbWVtICppb2FkZHIgPSB2cF9kZXYtPmxkZXYuaW9hZGRy ICsKPiAgIAkJCVZJUlRJT19QQ0lfQ09ORklHX09GRih2cF9kZXYtPm1zaXhfZW5hYmxlZCkgKwo+ ICAgCQkJb2Zmc2V0Owo+ICAgCXU4ICpwdHIgPSBidWY7Cj4gQEAgLTY0LDcgKzY1LDcgQEAgc3Rh dGljIHZvaWQgdnBfc2V0KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2LCB1bnNpZ25lZCBvZmZz ZXQsCj4gICAJCSAgIGNvbnN0IHZvaWQgKmJ1ZiwgdW5zaWduZWQgbGVuKQo+ICAgewo+ICAgCXN0 cnVjdCB2aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2ID0gdG9fdnBfZGV2aWNlKHZkZXYpOwo+IC0J dm9pZCBfX2lvbWVtICppb2FkZHIgPSB2cF9kZXYtPmlvYWRkciArCj4gKwl2b2lkIF9faW9tZW0g KmlvYWRkciA9IHZwX2Rldi0+bGRldi5pb2FkZHIgKwo+ICAgCQkJVklSVElPX1BDSV9DT05GSUdf T0ZGKHZwX2Rldi0+bXNpeF9lbmFibGVkKSArCj4gICAJCQlvZmZzZXQ7Cj4gICAJY29uc3QgdTgg KnB0ciA9IGJ1ZjsKPiBAQCAtNzgsNyArNzksNyBAQCBzdGF0aWMgdm9pZCB2cF9zZXQoc3RydWN0 IHZpcnRpb19kZXZpY2UgKnZkZXYsIHVuc2lnbmVkIG9mZnNldCwKPiAgIHN0YXRpYyB1OCB2cF9n ZXRfc3RhdHVzKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQo+ICAgewo+ICAgCXN0cnVjdCB2 aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2ID0gdG9fdnBfZGV2aWNlKHZkZXYpOwo+IC0JcmV0dXJu IGlvcmVhZDgodnBfZGV2LT5pb2FkZHIgKyBWSVJUSU9fUENJX1NUQVRVUyk7Cj4gKwlyZXR1cm4g dnBfbGVnYWN5X2dldF9zdGF0dXMoJnZwX2Rldi0+bGRldik7Cj4gICB9Cj4gICAKPiAgIHN0YXRp YyB2b2lkIHZwX3NldF9zdGF0dXMoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYsIHU4IHN0YXR1 cykKPiBAQCAtODYsMjggKzg3LDI0IEBAIHN0YXRpYyB2b2lkIHZwX3NldF9zdGF0dXMoc3RydWN0 IHZpcnRpb19kZXZpY2UgKnZkZXYsIHU4IHN0YXR1cykKPiAgIAlzdHJ1Y3QgdmlydGlvX3BjaV9k ZXZpY2UgKnZwX2RldiA9IHRvX3ZwX2RldmljZSh2ZGV2KTsKPiAgIAkvKiBXZSBzaG91bGQgbmV2 ZXIgYmUgc2V0dGluZyBzdGF0dXMgdG8gMC4gKi8KPiAgIAlCVUdfT04oc3RhdHVzID09IDApOwo+ IC0JaW93cml0ZTgoc3RhdHVzLCB2cF9kZXYtPmlvYWRkciArIFZJUlRJT19QQ0lfU1RBVFVTKTsK PiArCXZwX2xlZ2FjeV9zZXRfc3RhdHVzKCZ2cF9kZXYtPmxkZXYsIHN0YXR1cyk7Cj4gICB9Cj4g ICAKPiAgIHN0YXRpYyB2b2lkIHZwX3Jlc2V0KHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KQo+ ICAgewo+ICAgCXN0cnVjdCB2aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2ID0gdG9fdnBfZGV2aWNl KHZkZXYpOwo+ICAgCS8qIDAgc3RhdHVzIG1lYW5zIGEgcmVzZXQuICovCj4gLQlpb3dyaXRlOCgw LCB2cF9kZXYtPmlvYWRkciArIFZJUlRJT19QQ0lfU1RBVFVTKTsKPiArCXZwX2xlZ2FjeV9zZXRf c3RhdHVzKCZ2cF9kZXYtPmxkZXYsIDApOwo+ICAgCS8qIEZsdXNoIG91dCB0aGUgc3RhdHVzIHdy aXRlLCBhbmQgZmx1c2ggaW4gZGV2aWNlIHdyaXRlcywKPiAgIAkgKiBpbmNsdWRpbmcgTVNpLVgg aW50ZXJydXB0cywgaWYgYW55LiAqLwo+IC0JaW9yZWFkOCh2cF9kZXYtPmlvYWRkciArIFZJUlRJ T19QQ0lfU1RBVFVTKTsKPiArCXZwX2xlZ2FjeV9nZXRfc3RhdHVzKCZ2cF9kZXYtPmxkZXYpOwo+ ICAgCS8qIEZsdXNoIHBlbmRpbmcgVlEvY29uZmlndXJhdGlvbiBjYWxsYmFja3MuICovCj4gICAJ dnBfc3luY2hyb25pemVfdmVjdG9ycyh2ZGV2KTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHUxNiB2 cF9jb25maWdfdmVjdG9yKHN0cnVjdCB2aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2LCB1MTYgdmVj dG9yKQo+ICAgewo+IC0JLyogU2V0dXAgdGhlIHZlY3RvciB1c2VkIGZvciBjb25maWd1cmF0aW9u IGV2ZW50cyAqLwo+IC0JaW93cml0ZTE2KHZlY3RvciwgdnBfZGV2LT5pb2FkZHIgKyBWSVJUSU9f TVNJX0NPTkZJR19WRUNUT1IpOwo+IC0JLyogVmVyaWZ5IHdlIGhhZCBlbm91Z2ggcmVzb3VyY2Vz IHRvIGFzc2lnbiB0aGUgdmVjdG9yICovCj4gLQkvKiBXaWxsIGFsc28gZmx1c2ggdGhlIHdyaXRl IG91dCB0byBkZXZpY2UgKi8KPiAtCXJldHVybiBpb3JlYWQxNih2cF9kZXYtPmlvYWRkciArIFZJ UlRJT19NU0lfQ09ORklHX1ZFQ1RPUik7Cj4gKwlyZXR1cm4gdnBfbGVnYWN5X2NvbmZpZ192ZWN0 b3IoJnZwX2Rldi0+bGRldiwgdmVjdG9yKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHN0cnVjdCB2 aXJ0cXVldWUgKnNldHVwX3ZxKHN0cnVjdCB2aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2LAo+IEBA IC0xMjMsMTIgKzEyMCw5IEBAIHN0YXRpYyBzdHJ1Y3QgdmlydHF1ZXVlICpzZXR1cF92cShzdHJ1 Y3QgdmlydGlvX3BjaV9kZXZpY2UgKnZwX2RldiwKPiAgIAlpbnQgZXJyOwo+ICAgCXU2NCBxX3Bm bjsKPiAgIAo+IC0JLyogU2VsZWN0IHRoZSBxdWV1ZSB3ZSdyZSBpbnRlcmVzdGVkIGluICovCj4g LQlpb3dyaXRlMTYoaW5kZXgsIHZwX2Rldi0+aW9hZGRyICsgVklSVElPX1BDSV9RVUVVRV9TRUwp Owo+IC0KPiAgIAkvKiBDaGVjayBpZiBxdWV1ZSBpcyBlaXRoZXIgbm90IGF2YWlsYWJsZSBvciBh bHJlYWR5IGFjdGl2ZS4gKi8KPiAtCW51bSA9IGlvcmVhZDE2KHZwX2Rldi0+aW9hZGRyICsgVklS VElPX1BDSV9RVUVVRV9OVU0pOwo+IC0JaWYgKCFudW0gfHwgaW9yZWFkMzIodnBfZGV2LT5pb2Fk ZHIgKyBWSVJUSU9fUENJX1FVRVVFX1BGTikpCj4gKwludW0gPSB2cF9sZWdhY3lfZ2V0X3F1ZXVl X3NpemUoJnZwX2Rldi0+bGRldiwgaW5kZXgpOwo+ICsJaWYgKCFudW0gfHwgdnBfbGVnYWN5X2dl dF9xdWV1ZV9lbmFibGUoJnZwX2Rldi0+bGRldiwgaW5kZXgpKQo+ICAgCQlyZXR1cm4gRVJSX1BU UigtRU5PRU5UKTsKPiAgIAo+ICAgCWluZm8tPm1zaXhfdmVjdG9yID0gbXNpeF92ZWM7Cj4gQEAg LTE1MSwxMyArMTQ1LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgdmlydHF1ZXVlICpzZXR1cF92cShzdHJ1 Y3QgdmlydGlvX3BjaV9kZXZpY2UgKnZwX2RldiwKPiAgIAl9Cj4gICAKPiAgIAkvKiBhY3RpdmF0 ZSB0aGUgcXVldWUgKi8KPiAtCWlvd3JpdGUzMihxX3BmbiwgdnBfZGV2LT5pb2FkZHIgKyBWSVJU SU9fUENJX1FVRVVFX1BGTik7Cj4gKwl2cF9sZWdhY3lfc2V0X3F1ZXVlX2FkZHJlc3MoJnZwX2Rl di0+bGRldiwgaW5kZXgsIHFfcGZuKTsKPiAgIAo+IC0JdnEtPnByaXYgPSAodm9pZCBfX2ZvcmNl ICopdnBfZGV2LT5pb2FkZHIgKyBWSVJUSU9fUENJX1FVRVVFX05PVElGWTsKPiArCXZxLT5wcml2 ID0gKHZvaWQgX19mb3JjZSAqKXZwX2Rldi0+bGRldi5pb2FkZHIgKyBWSVJUSU9fUENJX1FVRVVF X05PVElGWTsKPiAgIAo+ICAgCWlmIChtc2l4X3ZlYyAhPSBWSVJUSU9fTVNJX05PX1ZFQ1RPUikg ewo+IC0JCWlvd3JpdGUxNihtc2l4X3ZlYywgdnBfZGV2LT5pb2FkZHIgKyBWSVJUSU9fTVNJX1FV RVVFX1ZFQ1RPUik7Cj4gLQkJbXNpeF92ZWMgPSBpb3JlYWQxNih2cF9kZXYtPmlvYWRkciArIFZJ UlRJT19NU0lfUVVFVUVfVkVDVE9SKTsKPiArCQltc2l4X3ZlYyA9IHZwX2xlZ2FjeV9xdWV1ZV92 ZWN0b3IoJnZwX2Rldi0+bGRldiwgaW5kZXgsIG1zaXhfdmVjKTsKPiAgIAkJaWYgKG1zaXhfdmVj ID09IFZJUlRJT19NU0lfTk9fVkVDVE9SKSB7Cj4gICAJCQllcnIgPSAtRUJVU1k7Cj4gICAJCQln b3RvIG91dF9kZWFjdGl2YXRlOwo+IEBAIC0xNjcsNyArMTYwLDcgQEAgc3RhdGljIHN0cnVjdCB2 aXJ0cXVldWUgKnNldHVwX3ZxKHN0cnVjdCB2aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2LAo+ICAg CXJldHVybiB2cTsKPiAgIAo+ICAgb3V0X2RlYWN0aXZhdGU6Cj4gLQlpb3dyaXRlMzIoMCwgdnBf ZGV2LT5pb2FkZHIgKyBWSVJUSU9fUENJX1FVRVVFX1BGTik7Cj4gKwl2cF9sZWdhY3lfc2V0X3F1 ZXVlX2FkZHJlc3MoJnZwX2Rldi0+bGRldiwgaW5kZXgsIDApOwo+ICAgb3V0X2RlbF92cToKPiAg IAl2cmluZ19kZWxfdmlydHF1ZXVlKHZxKTsKPiAgIAlyZXR1cm4gRVJSX1BUUihlcnIpOwo+IEBA IC0xNzgsMTcgKzE3MSwxNSBAQCBzdGF0aWMgdm9pZCBkZWxfdnEoc3RydWN0IHZpcnRpb19wY2lf dnFfaW5mbyAqaW5mbykKPiAgIAlzdHJ1Y3QgdmlydHF1ZXVlICp2cSA9IGluZm8tPnZxOwo+ICAg CXN0cnVjdCB2aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2ID0gdG9fdnBfZGV2aWNlKHZxLT52ZGV2 KTsKPiAgIAo+IC0JaW93cml0ZTE2KHZxLT5pbmRleCwgdnBfZGV2LT5pb2FkZHIgKyBWSVJUSU9f UENJX1FVRVVFX1NFTCk7Cj4gLQo+ICAgCWlmICh2cF9kZXYtPm1zaXhfZW5hYmxlZCkgewo+IC0J CWlvd3JpdGUxNihWSVJUSU9fTVNJX05PX1ZFQ1RPUiwKPiAtCQkJICB2cF9kZXYtPmlvYWRkciAr IFZJUlRJT19NU0lfUVVFVUVfVkVDVE9SKTsKPiArCQl2cF9sZWdhY3lfcXVldWVfdmVjdG9yKCZ2 cF9kZXYtPmxkZXYsIHZxLT5pbmRleCwKPiArCQkJCVZJUlRJT19NU0lfTk9fVkVDVE9SKTsKPiAg IAkJLyogRmx1c2ggdGhlIHdyaXRlIG91dCB0byBkZXZpY2UgKi8KPiAtCQlpb3JlYWQ4KHZwX2Rl di0+aW9hZGRyICsgVklSVElPX1BDSV9JU1IpOwo+ICsJCWlvcmVhZDgodnBfZGV2LT5sZGV2Lmlv YWRkciArIFZJUlRJT19QQ0lfSVNSKTsKPiAgIAl9Cj4gICAKPiAgIAkvKiBTZWxlY3QgYW5kIGRl YWN0aXZhdGUgdGhlIHF1ZXVlICovCj4gLQlpb3dyaXRlMzIoMCwgdnBfZGV2LT5pb2FkZHIgKyBW SVJUSU9fUENJX1FVRVVFX1BGTik7Cj4gKwl2cF9sZWdhY3lfc2V0X3F1ZXVlX2FkZHJlc3MoJnZw X2Rldi0+bGRldiwgdnEtPmluZGV4LCAwKTsKPiAgIAo+ICAgCXZyaW5nX2RlbF92aXJ0cXVldWUo dnEpOwo+ICAgfQo+IEBAIC0yMTEsNTEgKzIwMiwxOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZp cnRpb19jb25maWdfb3BzIHZpcnRpb19wY2lfY29uZmlnX29wcyA9IHsKPiAgIC8qIHRoZSBQQ0kg cHJvYmluZyBmdW5jdGlvbiAqLwo+ICAgaW50IHZpcnRpb19wY2lfbGVnYWN5X3Byb2JlKHN0cnVj dCB2aXJ0aW9fcGNpX2RldmljZSAqdnBfZGV2KQo+ICAgewo+ICsJc3RydWN0IHZpcnRpb19wY2lf bGVnYWN5X2RldmljZSAqbGRldiA9ICZ2cF9kZXYtPmxkZXY7Cj4gICAJc3RydWN0IHBjaV9kZXYg KnBjaV9kZXYgPSB2cF9kZXYtPnBjaV9kZXY7Cj4gICAJaW50IHJjOwo+ICAgCj4gLQkvKiBXZSBv bmx5IG93biBkZXZpY2VzID49IDB4MTAwMCBhbmQgPD0gMHgxMDNmOiBsZWF2ZSB0aGUgcmVzdC4g Ki8KPiAtCWlmIChwY2lfZGV2LT5kZXZpY2UgPCAweDEwMDAgfHwgcGNpX2Rldi0+ZGV2aWNlID4g MHgxMDNmKQo+IC0JCXJldHVybiAtRU5PREVWOwo+IC0KPiAtCWlmIChwY2lfZGV2LT5yZXZpc2lv biAhPSBWSVJUSU9fUENJX0FCSV9WRVJTSU9OKSB7Cj4gLQkJcHJpbnRrKEtFUk5fRVJSICJ2aXJ0 aW9fcGNpOiBleHBlY3RlZCBBQkkgdmVyc2lvbiAlZCwgZ290ICVkXG4iLAo+IC0JCSAgICAgICBW SVJUSU9fUENJX0FCSV9WRVJTSU9OLCBwY2lfZGV2LT5yZXZpc2lvbik7Cj4gLQkJcmV0dXJuIC1F Tk9ERVY7Cj4gLQl9Cj4gLQo+IC0JcmMgPSBkbWFfc2V0X21hc2soJnBjaV9kZXYtPmRldiwgRE1B X0JJVF9NQVNLKDY0KSk7Cj4gLQlpZiAocmMpIHsKPiAtCQlyYyA9IGRtYV9zZXRfbWFza19hbmRf Y29oZXJlbnQoJnBjaV9kZXYtPmRldiwgRE1BX0JJVF9NQVNLKDMyKSk7Cj4gLQl9IGVsc2Ugewo+ IC0JCS8qCj4gLQkJICogVGhlIHZpcnRpbyByaW5nIGJhc2UgYWRkcmVzcyBpcyBleHByZXNzZWQg YXMgYSAzMi1iaXQgUEZOLAo+IC0JCSAqIHdpdGggYSBwYWdlIHNpemUgb2YgMSA8PCBWSVJUSU9f UENJX1FVRVVFX0FERFJfU0hJRlQuCj4gLQkJICovCj4gLQkJZG1hX3NldF9jb2hlcmVudF9tYXNr KCZwY2lfZGV2LT5kZXYsCj4gLQkJCQlETUFfQklUX01BU0soMzIgKyBWSVJUSU9fUENJX1FVRVVF X0FERFJfU0hJRlQpKTsKPiAtCX0KPiAtCj4gLQlpZiAocmMpCj4gLQkJZGV2X3dhcm4oJnBjaV9k ZXYtPmRldiwgIkZhaWxlZCB0byBlbmFibGUgNjQtYml0IG9yIDMyLWJpdCBETUEuICBUcnlpbmcg dG8gY29udGludWUsIGJ1dCB0aGlzIG1pZ2h0IG5vdCB3b3JrLlxuIik7Cj4gKwlsZGV2LT5wY2lf ZGV2ID0gcGNpX2RldjsKPiAgIAo+IC0JcmMgPSBwY2lfcmVxdWVzdF9yZWdpb24ocGNpX2Rldiwg MCwgInZpcnRpby1wY2ktbGVnYWN5Iik7Cj4gKwlyYyA9IHZwX2xlZ2FjeV9wcm9iZShsZGV2KTsK PiAgIAlpZiAocmMpCj4gICAJCXJldHVybiByYzsKPiAgIAo+IC0JcmMgPSAtRU5PTUVNOwo+IC0J dnBfZGV2LT5pb2FkZHIgPSBwY2lfaW9tYXAocGNpX2RldiwgMCwgMCk7Cj4gLQlpZiAoIXZwX2Rl di0+aW9hZGRyKQo+IC0JCWdvdG8gZXJyX2lvbWFwOwo+IC0KPiAtCXZwX2Rldi0+aXNyID0gdnBf ZGV2LT5pb2FkZHIgKyBWSVJUSU9fUENJX0lTUjsKPiAtCj4gLQkvKiB3ZSB1c2UgdGhlIHN1YnN5 c3RlbSB2ZW5kb3IvZGV2aWNlIGlkIGFzIHRoZSB2aXJ0aW8gdmVuZG9yL2RldmljZQo+IC0JICog aWQuICB0aGlzIGFsbG93cyB1cyB0byB1c2UgdGhlIHNhbWUgUENJIHZlbmRvci9kZXZpY2UgaWQg Zm9yIGFsbAo+IC0JICogdmlydGlvIGRldmljZXMgYW5kIHRvIGlkZW50aWZ5IHRoZSBwYXJ0aWN1 bGFyIHZpcnRpbyBkcml2ZXIgYnkKPiAtCSAqIHRoZSBzdWJzeXN0ZW0gaWRzICovCj4gLQl2cF9k ZXYtPnZkZXYuaWQudmVuZG9yID0gcGNpX2Rldi0+c3Vic3lzdGVtX3ZlbmRvcjsKPiAtCXZwX2Rl di0+dmRldi5pZC5kZXZpY2UgPSBwY2lfZGV2LT5zdWJzeXN0ZW1fZGV2aWNlOwo+ICsJdnBfZGV2 LT5pc3IgPSBsZGV2LT5pc3I7Cj4gKwl2cF9kZXYtPnZkZXYuaWQgPSBsZGV2LT5pZDsKPiAgIAo+ ICAgCXZwX2Rldi0+dmRldi5jb25maWcgPSAmdmlydGlvX3BjaV9jb25maWdfb3BzOwo+ICAgCj4g QEAgLTI2NCwxNiArMjIyLDExIEBAIGludCB2aXJ0aW9fcGNpX2xlZ2FjeV9wcm9iZShzdHJ1Y3Qg dmlydGlvX3BjaV9kZXZpY2UgKnZwX2RldikKPiAgIAl2cF9kZXYtPmRlbF92cSA9IGRlbF92cTsK PiAgIAo+ICAgCXJldHVybiAwOwo+IC0KPiAtZXJyX2lvbWFwOgo+IC0JcGNpX3JlbGVhc2VfcmVn aW9uKHBjaV9kZXYsIDApOwo+IC0JcmV0dXJuIHJjOwo+ICAgfQo+ICAgCj4gICB2b2lkIHZpcnRp b19wY2lfbGVnYWN5X3JlbW92ZShzdHJ1Y3QgdmlydGlvX3BjaV9kZXZpY2UgKnZwX2RldikKPiAg IHsKPiAtCXN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2ID0gdnBfZGV2LT5wY2lfZGV2Owo+ICsJc3Ry dWN0IHZpcnRpb19wY2lfbGVnYWN5X2RldmljZSAqbGRldiA9ICZ2cF9kZXYtPmxkZXY7Cj4gICAK PiAtCXBjaV9pb3VubWFwKHBjaV9kZXYsIHZwX2Rldi0+aW9hZGRyKTsKPiAtCXBjaV9yZWxlYXNl X3JlZ2lvbihwY2lfZGV2LCAwKTsKPiArCXZwX2xlZ2FjeV9yZW1vdmUobGRldik7Cj4gICB9Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5X2Rldi5jIGIvZHJp dmVycy92aXJ0aW8vdmlydGlvX3BjaV9sZWdhY3lfZGV2LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOWI5NzY4MGRkMDJiCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5X2Rldi5jCj4gQEAgLTAsMCArMSwy MjAgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKPiAr Cj4gKyNpbmNsdWRlICJsaW51eC92aXJ0aW9fcGNpLmgiCj4gKyNpbmNsdWRlIDxsaW51eC92aXJ0 aW9fcGNpX2xlZ2FjeS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9wY2kuaD4KPiArCj4gKwo+ICsvKgo+ICsgKiB2cF9sZWdhY3lfcHJvYmU6IHByb2Jl IHRoZSBsZWdhY3kgdmlydGlvIHBjaSBkZXZpY2UsIG5vdGUgdGhhdCB0aGUKPiArICogY2FsbGVy IGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBQQ0kgZGV2aWNlIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVu Y3Rpb24uCj4gKyAqIEBsZGV2OiB0aGUgbGVnYWN5IHZpcnRpby1wY2kgZGV2aWNlCj4gKyAqCj4g KyAqIFJldHVybiAwIG9uIHN1Y2NlZWQgb3RoZXJ3aXNlIGZhaWwKPiArICovCj4gK2ludCB2cF9s ZWdhY3lfcHJvYmUoc3RydWN0IHZpcnRpb19wY2lfbGVnYWN5X2RldmljZSAqbGRldikKPiArewo+ ICsJc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYgPSBsZGV2LT5wY2lfZGV2Owo+ICsJaW50IHJjOwo+ ICsKPiArCS8qIFdlIG9ubHkgb3duIGRldmljZXMgPj0gMHgxMDAwIGFuZCA8PSAweDEwM2Y6IGxl YXZlIHRoZSByZXN0LiAqLwo+ICsJaWYgKHBjaV9kZXYtPmRldmljZSA8IDB4MTAwMCB8fCBwY2lf ZGV2LT5kZXZpY2UgPiAweDEwM2YpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJaWYgKHBj aV9kZXYtPnJldmlzaW9uICE9IFZJUlRJT19QQ0lfQUJJX1ZFUlNJT04pCj4gKwkJcmV0dXJuIC1F Tk9ERVY7Cj4gKwo+ICsJcmMgPSBkbWFfc2V0X21hc2soJnBjaV9kZXYtPmRldiwgRE1BX0JJVF9N QVNLKDY0KSk7Cj4gKwlpZiAocmMpIHsKPiArCQlyYyA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJl bnQoJnBjaV9kZXYtPmRldiwgRE1BX0JJVF9NQVNLKDMyKSk7Cj4gKwl9IGVsc2Ugewo+ICsJCS8q Cj4gKwkJICogVGhlIHZpcnRpbyByaW5nIGJhc2UgYWRkcmVzcyBpcyBleHByZXNzZWQgYXMgYSAz Mi1iaXQgUEZOLAo+ICsJCSAqIHdpdGggYSBwYWdlIHNpemUgb2YgMSA8PCBWSVJUSU9fUENJX1FV RVVFX0FERFJfU0hJRlQuCj4gKwkJICovCj4gKwkJZG1hX3NldF9jb2hlcmVudF9tYXNrKCZwY2lf ZGV2LT5kZXYsCj4gKwkJCQlETUFfQklUX01BU0soMzIgKyBWSVJUSU9fUENJX1FVRVVFX0FERFJf U0hJRlQpKTsKPiArCX0KPiArCj4gKwlpZiAocmMpCj4gKwkJZGV2X3dhcm4oJnBjaV9kZXYtPmRl diwgIkZhaWxlZCB0byBlbmFibGUgNjQtYml0IG9yIDMyLWJpdCBETUEuICBUcnlpbmcgdG8gY29u dGludWUsIGJ1dCB0aGlzIG1pZ2h0IG5vdCB3b3JrLlxuIik7Cj4gKwo+ICsJcmMgPSBwY2lfcmVx dWVzdF9yZWdpb24ocGNpX2RldiwgMCwgInZpcnRpby1wY2ktbGVnYWN5Iik7Cj4gKwlpZiAocmMp Cj4gKwkJcmV0dXJuIHJjOwo+ICsKPiArCWxkZXYtPmlvYWRkciA9IHBjaV9pb21hcChwY2lfZGV2 LCAwLCAwKTsKPiArCWlmICghbGRldi0+aW9hZGRyKQo+ICsJCWdvdG8gZXJyX2lvbWFwOwo+ICsK PiArCWxkZXYtPmlzciA9IGxkZXYtPmlvYWRkciArIFZJUlRJT19QQ0lfSVNSOwo+ICsKPiArCWxk ZXYtPmlkLnZlbmRvciA9IHBjaV9kZXYtPnN1YnN5c3RlbV92ZW5kb3I7Cj4gKwlsZGV2LT5pZC5k ZXZpY2UgPSBwY2lfZGV2LT5zdWJzeXN0ZW1fZGV2aWNlOwo+ICsKPiArCXJldHVybiAwOwo+ICtl cnJfaW9tYXA6Cj4gKwlwY2lfcmVsZWFzZV9yZWdpb24ocGNpX2RldiwgMCk7Cj4gKwlyZXR1cm4g cmM7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwodnBfbGVnYWN5X3Byb2JlKTsKPiArCj4gKy8q Cj4gKyAqIHZwX2xlZ2FjeV9wcm9iZTogcmVtb3ZlIGFuZCBjbGVhbnVwIHRoZSBsZWdhY3kgdmly dGlvIHBjaSBkZXZpY2UKPiArICogQGxkZXY6IHRoZSBsZWdhY3kgdmlydGlvLXBjaSBkZXZpY2UK PiArICovCj4gK3ZvaWQgdnBfbGVnYWN5X3JlbW92ZShzdHJ1Y3QgdmlydGlvX3BjaV9sZWdhY3lf ZGV2aWNlICpsZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiA9IGxkZXYtPnBj aV9kZXY7Cj4gKwo+ICsJcGNpX2lvdW5tYXAocGNpX2RldiwgbGRldi0+aW9hZGRyKTsKPiArCXBj aV9yZWxlYXNlX3JlZ2lvbihwY2lfZGV2LCAwKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh2 cF9sZWdhY3lfcmVtb3ZlKTsKPiArCj4gKy8qCj4gKyAqIHZwX2xlZ2FjeV9nZXRfZmVhdHVyZXMg LSBnZXQgZmVhdHVyZXMgZnJvbSBkZXZpY2UKPiArICogQGxkZXY6IHRoZSBsZWdhY3kgdmlydGlv LXBjaSBkZXZpY2UKPiArICoKPiArICogUmV0dXJucyB0aGUgZmVhdHVyZXMgcmVhZCBmcm9tIHRo ZSBkZXZpY2UKPiArICovCj4gK3U2NCB2cF9sZWdhY3lfZ2V0X2ZlYXR1cmVzKHN0cnVjdCB2aXJ0 aW9fcGNpX2xlZ2FjeV9kZXZpY2UgKmxkZXYpCj4gK3sKPiArCj4gKwlyZXR1cm4gaW9yZWFkMzIo bGRldi0+aW9hZGRyICsgVklSVElPX1BDSV9IT1NUX0ZFQVRVUkVTKTsKPiArfQo+ICtFWFBPUlRf U1lNQk9MX0dQTCh2cF9sZWdhY3lfZ2V0X2ZlYXR1cmVzKTsKPiArCj4gKy8qCj4gKyAqIHZwX2xl Z2FjeV9nZXRfZHJpdmVyX2ZlYXR1cmVzIC0gZ2V0IGRyaXZlciBmZWF0dXJlcyBmcm9tIGRldmlj ZQo+ICsgKiBAbGRldjogdGhlIGxlZ2FjeSB2aXJ0aW8tcGNpIGRldmljZQo+ICsgKgo+ICsgKiBS ZXR1cm5zIHRoZSBkcml2ZXIgZmVhdHVyZXMgcmVhZCBmcm9tIHRoZSBkZXZpY2UKPiArICovCj4g K3U2NCB2cF9sZWdhY3lfZ2V0X2RyaXZlcl9mZWF0dXJlcyhzdHJ1Y3QgdmlydGlvX3BjaV9sZWdh Y3lfZGV2aWNlICpsZGV2KQo+ICt7Cj4gKwlyZXR1cm4gaW9yZWFkMzIobGRldi0+aW9hZGRyICsg VklSVElPX1BDSV9HVUVTVF9GRUFUVVJFUyk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwodnBf bGVnYWN5X2dldF9kcml2ZXJfZmVhdHVyZXMpOwo+ICsKPiArLyoKPiArICogdnBfbGVnYWN5X3Nl dF9mZWF0dXJlcyAtIHNldCBmZWF0dXJlcyB0byBkZXZpY2UKPiArICogQGxkZXY6IHRoZSBsZWdh Y3kgdmlydGlvLXBjaSBkZXZpY2UKPiArICogQGZlYXR1cmVzOiB0aGUgZmVhdHVyZXMgc2V0IHRv IGRldmljZQo+ICsgKi8KPiArdm9pZCB2cF9sZWdhY3lfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aXJ0 aW9fcGNpX2xlZ2FjeV9kZXZpY2UgKmxkZXYsCj4gKwkJCSAgICB1MzIgZmVhdHVyZXMpCj4gK3sK PiArCWlvd3JpdGUzMihmZWF0dXJlcywgbGRldi0+aW9hZGRyICsgVklSVElPX1BDSV9HVUVTVF9G RUFUVVJFUyk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwodnBfbGVnYWN5X3NldF9mZWF0dXJl cyk7Cj4gKwo+ICsvKgo+ICsgKiB2cF9sZWdhY3lfZ2V0X3N0YXR1cyAtIGdldCB0aGUgZGV2aWNl IHN0YXR1cwo+ICsgKiBAbGRldjogdGhlIGxlZ2FjeSB2aXJ0aW8tcGNpIGRldmljZQo+ICsgKgo+ ICsgKiBSZXR1cm5zIHRoZSBzdGF0dXMgcmVhZCBmcm9tIGRldmljZQo+ICsgKi8KPiArdTggdnBf bGVnYWN5X2dldF9zdGF0dXMoc3RydWN0IHZpcnRpb19wY2lfbGVnYWN5X2RldmljZSAqbGRldikK PiArewo+ICsJcmV0dXJuIGlvcmVhZDgobGRldi0+aW9hZGRyICsgVklSVElPX1BDSV9TVEFUVVMp Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKHZwX2xlZ2FjeV9nZXRfc3RhdHVzKTsKPiArCj4g Ky8qCj4gKyAqIHZwX2xlZ2FjeV9zZXRfc3RhdHVzIC0gc2V0IHN0YXR1cyB0byBkZXZpY2UKPiAr ICogQGxkZXY6IHRoZSBsZWdhY3kgdmlydGlvLXBjaSBkZXZpY2UKPiArICogQHN0YXR1czogdGhl IHN0YXR1cyBzZXQgdG8gZGV2aWNlCj4gKyAqLwo+ICt2b2lkIHZwX2xlZ2FjeV9zZXRfc3RhdHVz KHN0cnVjdCB2aXJ0aW9fcGNpX2xlZ2FjeV9kZXZpY2UgKmxkZXYsCj4gKwkJCQkgdTggc3RhdHVz KQo+ICt7Cj4gKwlpb3dyaXRlOChzdGF0dXMsIGxkZXYtPmlvYWRkciArIFZJUlRJT19QQ0lfU1RB VFVTKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh2cF9sZWdhY3lfc2V0X3N0YXR1cyk7Cj4g Kwo+ICsvKgo+ICsgKiB2cF9sZWdhY3lfcXVldWVfdmVjdG9yIC0gc2V0IHRoZSBNU0lYIHZlY3Rv ciBmb3IgYSBzcGVjaWZpYyB2aXJ0cXVldWUKPiArICogQGxkZXY6IHRoZSBsZWdhY3kgdmlydGlv LXBjaSBkZXZpY2UKPiArICogQGluZGV4OiBxdWV1ZSBpbmRleAo+ICsgKiBAdmVjdG9yOiB0aGUg Y29uZmlnIHZlY3Rvcgo+ICsgKgo+ICsgKiBSZXR1cm5zIHRoZSBjb25maWcgdmVjdG9yIHJlYWQg ZnJvbSB0aGUgZGV2aWNlCj4gKyAqLwo+ICt1MTYgdnBfbGVnYWN5X3F1ZXVlX3ZlY3RvcihzdHJ1 Y3QgdmlydGlvX3BjaV9sZWdhY3lfZGV2aWNlICpsZGV2LAo+ICsJCQkgICB1MTYgaW5kZXgsIHUx NiB2ZWN0b3IpCj4gK3sKPiArCWlvd3JpdGUxNihpbmRleCwgbGRldi0+aW9hZGRyICsgVklSVElP X1BDSV9RVUVVRV9TRUwpOwo+ICsJaW93cml0ZTE2KHZlY3RvciwgbGRldi0+aW9hZGRyICsgVklS VElPX01TSV9RVUVVRV9WRUNUT1IpOwo+ICsJLyogRmx1c2ggdGhlIHdyaXRlIG91dCB0byBkZXZp Y2UgKi8KPiArCXJldHVybiBpb3JlYWQxNihsZGV2LT5pb2FkZHIgKyBWSVJUSU9fTVNJX1FVRVVF X1ZFQ1RPUik7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwodnBfbGVnYWN5X3F1ZXVlX3ZlY3Rv cik7Cj4gKwo+ICsvKgo+ICsgKiB2cF9sZWdhY3lfY29uZmlnX3ZlY3RvciAtIHNldCB0aGUgdmVj dG9yIGZvciBjb25maWcgaW50ZXJydXB0Cj4gKyAqIEBsZGV2OiB0aGUgbGVnYWN5IHZpcnRpby1w Y2kgZGV2aWNlCj4gKyAqIEB2ZWN0b3I6IHRoZSBjb25maWcgdmVjdG9yCj4gKyAqCj4gKyAqIFJl dHVybnMgdGhlIGNvbmZpZyB2ZWN0b3IgcmVhZCBmcm9tIHRoZSBkZXZpY2UKPiArICovCj4gK3Ux NiB2cF9sZWdhY3lfY29uZmlnX3ZlY3RvcihzdHJ1Y3QgdmlydGlvX3BjaV9sZWdhY3lfZGV2aWNl ICpsZGV2LAo+ICsJCQkgICAgdTE2IHZlY3RvcikKPiArewo+ICsJLyogU2V0dXAgdGhlIHZlY3Rv ciB1c2VkIGZvciBjb25maWd1cmF0aW9uIGV2ZW50cyAqLwo+ICsJaW93cml0ZTE2KHZlY3Rvciwg bGRldi0+aW9hZGRyICsgVklSVElPX01TSV9DT05GSUdfVkVDVE9SKTsKPiArCS8qIFZlcmlmeSB3 ZSBoYWQgZW5vdWdoIHJlc291cmNlcyB0byBhc3NpZ24gdGhlIHZlY3RvciAqLwo+ICsJLyogV2ls bCBhbHNvIGZsdXNoIHRoZSB3cml0ZSBvdXQgdG8gZGV2aWNlICovCj4gKwlyZXR1cm4gaW9yZWFk MTYobGRldi0+aW9hZGRyICsgVklSVElPX01TSV9DT05GSUdfVkVDVE9SKTsKPiArfQo+ICtFWFBP UlRfU1lNQk9MX0dQTCh2cF9sZWdhY3lfY29uZmlnX3ZlY3Rvcik7Cj4gKwo+ICsvKgo+ICsgKiB2 cF9sZWdhY3lfc2V0X3F1ZXVlX2FkZHJlc3MgLSBzZXQgdGhlIHZpcnRxdWV1ZSBhZGRyZXNzCj4g KyAqIEBsZGV2OiB0aGUgbGVnYWN5IHZpcnRpby1wY2kgZGV2aWNlCj4gKyAqIEBpbmRleDogdGhl IHF1ZXVlIGluZGV4Cj4gKyAqIEBxdWV1ZV9wZm46IHBmbiBvZiB0aGUgdmlydHF1ZXVlCj4gKyAq Lwo+ICt2b2lkIHZwX2xlZ2FjeV9zZXRfcXVldWVfYWRkcmVzcyhzdHJ1Y3QgdmlydGlvX3BjaV9s ZWdhY3lfZGV2aWNlICpsZGV2LAo+ICsJCQkgICAgIHUxNiBpbmRleCwgdTMyIHF1ZXVlX3BmbikK PiArewo+ICsJaW93cml0ZTE2KGluZGV4LCBsZGV2LT5pb2FkZHIgKyBWSVJUSU9fUENJX1FVRVVF X1NFTCk7Cj4gKwlpb3dyaXRlMzIocXVldWVfcGZuLCBsZGV2LT5pb2FkZHIgKyBWSVJUSU9fUENJ X1FVRVVFX1BGTik7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwodnBfbGVnYWN5X3NldF9xdWV1 ZV9hZGRyZXNzKTsKPiArCj4gKy8qCj4gKyAqIHZwX2xlZ2FjeV9nZXRfcXVldWVfZW5hYmxlIC0g ZW5hYmxlIGEgdmlydHF1ZXVlCj4gKyAqIEBsZGV2OiB0aGUgbGVnYWN5IHZpcnRpby1wY2kgZGV2 aWNlCj4gKyAqIEBpbmRleDogdGhlIHF1ZXVlIGluZGV4Cj4gKyAqCj4gKyAqIFJldHVybnMgd2hl dGhlciBhIHZpcnRxdWV1ZSBpcyBlbmFibGVkIG9yIG5vdAo+ICsgKi8KPiArYm9vbCB2cF9sZWdh Y3lfZ2V0X3F1ZXVlX2VuYWJsZShzdHJ1Y3QgdmlydGlvX3BjaV9sZWdhY3lfZGV2aWNlICpsZGV2 LAo+ICsJCQkJdTE2IGluZGV4KQo+ICt7Cj4gKwlpb3dyaXRlMTYoaW5kZXgsIGxkZXYtPmlvYWRk ciArIFZJUlRJT19QQ0lfUVVFVUVfU0VMKTsKPiArCXJldHVybiBpb3JlYWQzMihsZGV2LT5pb2Fk ZHIgKyBWSVJUSU9fUENJX1FVRVVFX1BGTik7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwodnBf bGVnYWN5X2dldF9xdWV1ZV9lbmFibGUpOwo+ICsKPiArLyoKPiArICogdnBfbGVnYWN5X2dldF9x dWV1ZV9zaXplIC0gZ2V0IHNpemUgZm9yIGEgdmlydHF1ZXVlCj4gKyAqIEBsZGV2OiB0aGUgbGVn YWN5IHZpcnRpby1wY2kgZGV2aWNlCj4gKyAqIEBpbmRleDogdGhlIHF1ZXVlIGluZGV4Cj4gKyAq Cj4gKyAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHZpcnRxdWV1ZQo+ICsgKi8KPiArdTE2IHZw X2xlZ2FjeV9nZXRfcXVldWVfc2l6ZShzdHJ1Y3QgdmlydGlvX3BjaV9sZWdhY3lfZGV2aWNlICps ZGV2LAo+ICsJCQkgICAgIHUxNiBpbmRleCkKPiArewo+ICsJaW93cml0ZTE2KGluZGV4LCBsZGV2 LT5pb2FkZHIgKyBWSVJUSU9fUENJX1FVRVVFX1NFTCk7Cj4gKwlyZXR1cm4gaW9yZWFkMTYobGRl di0+aW9hZGRyICsgVklSVElPX1BDSV9RVUVVRV9OVU0pOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xf R1BMKHZwX2xlZ2FjeV9nZXRfcXVldWVfc2l6ZSk7Cj4gKwo+ICtNT0RVTEVfVkVSU0lPTigiMC4x Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiTGVnYWN5IFZpcnRpbyBQQ0kgRGV2aWNlIik7Cj4g K01PRFVMRV9BVVRIT1IoIld1IFpvbmd5b25nIDx3dXpvbmd5b25nQGxpbnV4LmFsaWJhYmEuY29t PiIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu dXgvdmlydGlvX3BjaV9sZWdhY3kuaCBiL2luY2x1ZGUvbGludXgvdmlydGlvX3BjaV9sZWdhY3ku aAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lZTJjNjE1NzIx NWYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5jbHVkZS9saW51eC92aXJ0aW9fcGNpX2xlZ2Fj eS5oCj4gQEAgLTAsMCArMSw0NCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMCAqLwo+ICsjaWZuZGVmIF9MSU5VWF9WSVJUSU9fUENJX0xFR0FDWV9ICj4gKyNkZWZpbmUg X0xJTlVYX1ZJUlRJT19QQ0lfTEVHQUNZX0gKPiArCj4gKyNpbmNsdWRlICJsaW51eC9tb2RfZGV2 aWNldGFibGUuaCIKPiArI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgo+ICsjaW5jbHVkZSA8bGludXgv dmlydGlvX3BjaS5oPgo+ICsKPiArc3RydWN0IHZpcnRpb19wY2lfbGVnYWN5X2RldmljZSB7Cj4g KwlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjsKPiArCj4gKwkvKiBXaGVyZSB0byByZWFkIGFuZCBj bGVhciBpbnRlcnJ1cHQgKi8KPiArCXU4IF9faW9tZW0gKmlzcjsKPiArCS8qIFRoZSBJTyBtYXBw aW5nIGZvciB0aGUgUENJIGNvbmZpZyBzcGFjZSAobGVnYWN5IG1vZGUgb25seSkgKi8KPiArCXZv aWQgX19pb21lbSAqaW9hZGRyOwo+ICsKPiArCXN0cnVjdCB2aXJ0aW9fZGV2aWNlX2lkIGlkOwo+ ICt9Owo+ICsKPiArdTY0IHZwX2xlZ2FjeV9nZXRfZmVhdHVyZXMoc3RydWN0IHZpcnRpb19wY2lf bGVnYWN5X2RldmljZSAqbGRldik7Cj4gK3U2NCB2cF9sZWdhY3lfZ2V0X2RyaXZlcl9mZWF0dXJl cyhzdHJ1Y3QgdmlydGlvX3BjaV9sZWdhY3lfZGV2aWNlICpsZGV2KTsKPiArdm9pZCB2cF9sZWdh Y3lfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aXJ0aW9fcGNpX2xlZ2FjeV9kZXZpY2UgKmxkZXYsCj4g KwkJCXUzMiBmZWF0dXJlcyk7Cj4gK3U4IHZwX2xlZ2FjeV9nZXRfc3RhdHVzKHN0cnVjdCB2aXJ0 aW9fcGNpX2xlZ2FjeV9kZXZpY2UgKmxkZXYpOwo+ICt2b2lkIHZwX2xlZ2FjeV9zZXRfc3RhdHVz KHN0cnVjdCB2aXJ0aW9fcGNpX2xlZ2FjeV9kZXZpY2UgKmxkZXYsCj4gKwkJCXU4IHN0YXR1cyk7 Cj4gK3UxNiB2cF9sZWdhY3lfcXVldWVfdmVjdG9yKHN0cnVjdCB2aXJ0aW9fcGNpX2xlZ2FjeV9k ZXZpY2UgKmxkZXYsCj4gKwkJCSAgIHUxNiBpZHgsIHUxNiB2ZWN0b3IpOwo+ICt1MTYgdnBfbGVn YWN5X2NvbmZpZ192ZWN0b3Ioc3RydWN0IHZpcnRpb19wY2lfbGVnYWN5X2RldmljZSAqbGRldiwK PiArCQkgICAgIHUxNiB2ZWN0b3IpOwo+ICt2b2lkIHZwX2xlZ2FjeV9zZXRfcXVldWVfYWRkcmVz cyhzdHJ1Y3QgdmlydGlvX3BjaV9sZWdhY3lfZGV2aWNlICpsZGV2LAo+ICsJCQkgICAgIHUxNiBp bmRleCwgdTMyIHF1ZXVlX3Bmbik7Cj4gK3ZvaWQgdnBfbGVnYWN5X3NldF9xdWV1ZV9lbmFibGUo c3RydWN0IHZpcnRpb19wY2lfbGVnYWN5X2RldmljZSAqbGRldiwKPiArCQkJCXUxNiBpZHgsIGJv b2wgZW5hYmxlKTsKCgpKdXN0IHNwb3QgdGhpcy4gVGhpcyBpcyBuZXZlciBkZWZpbmVkIGluIHRo aXMgcGF0Y2g/CgpUaGFua3MKCgo+ICtib29sIHZwX2xlZ2FjeV9nZXRfcXVldWVfZW5hYmxlKHN0 cnVjdCB2aXJ0aW9fcGNpX2xlZ2FjeV9kZXZpY2UgKmxkZXYsCj4gKwkJCQl1MTYgaWR4KTsKPiAr dm9pZCB2cF9sZWdhY3lfc2V0X3F1ZXVlX3NpemUoc3RydWN0IHZpcnRpb19wY2lfbGVnYWN5X2Rl dmljZSAqbGRldiwKPiArCQkJICAgICAgdTE2IGlkeCwgdTE2IHNpemUpOwo+ICt1MTYgdnBfbGVn YWN5X2dldF9xdWV1ZV9zaXplKHN0cnVjdCB2aXJ0aW9fcGNpX2xlZ2FjeV9kZXZpY2UgKmxkZXYs Cj4gKwkJCSAgICAgdTE2IGlkeCk7Cj4gK2ludCB2cF9sZWdhY3lfcHJvYmUoc3RydWN0IHZpcnRp b19wY2lfbGVnYWN5X2RldmljZSAqbGRldik7Cj4gK3ZvaWQgdnBfbGVnYWN5X3JlbW92ZShzdHJ1 Y3QgdmlydGlvX3BjaV9sZWdhY3lfZGV2aWNlICpsZGV2KTsKPiArCj4gKyNlbmRpZgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24g bWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0 dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxp emF0aW9u