From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6C0F3A034F for ; Mon, 19 Jul 2021 16:44:18 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 432A84014E; Mon, 19 Jul 2021 16:44:18 +0200 (CEST) Received: from mail-oi1-f226.google.com (mail-oi1-f226.google.com [209.85.167.226]) by mails.dpdk.org (Postfix) with ESMTP id CFF624003E for ; Mon, 19 Jul 2021 16:44:16 +0200 (CEST) Received: by mail-oi1-f226.google.com with SMTP id u15so20965562oiw.3 for ; Mon, 19 Jul 2021 07:44:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; h=mime-version:subject:from:to:cc:message-id:date; bh=H5BUjWX3eMAh2/uxBEnMu9MeyTA/mWctfbQMMfnyDMA=; b=VylmpLe0QoSixty/ZkK1M9nLKpWCqMr7laREd4PJaSiDACNxfUXoCN0fX+Sn664FFl J1s7ELRHAFt5oNWrzmp3S2/qVFzw4op0McQsEA678gSZy1ESwoSyMnaocGnAEh9QfN2J R4tVzcVqVCr2eGg7vDmWjxQhjG7yUnlu2z+l8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:to:cc:message-id:date; bh=H5BUjWX3eMAh2/uxBEnMu9MeyTA/mWctfbQMMfnyDMA=; b=D427g1aMhhh77uBOt8VlkMEK3falhfgAmvf+OT38CJfYOIUyabCFVkBbw6JrBzrCiT WXjAMaKbB9H3WCTs1XkXh62trvkf9F3oXKHm4HyWf7ZORsa+rtHp0PgcEea8iOvgcV81 voZrB4GAsphDv2argqPuFHXuDwFC9iKGOCoKQ58+OlA+lry3xiku+nYqYtzZiwcwO8YL G427h+yuesVc81G3GW6l2Mcw4pHT9mo/siugTYd0+hcW41oi0OIVMEIjDcLk1OvQaVmY e0RY/yV5sQMtH93+5swwnyQC+2Wc35UM+IjPVfAmj6/eR+pL23DhgGig7HzZbeLKa3h4 NHgQ== X-Gm-Message-State: AOAM533Yj3F8nawaZL2MlnWA/cHfADBZBb6Y5G9gYNjIo30HGc5VW7/p RehiGrjq+ADnUvfvySY46sEa+HYjW+GEIK/wr32xyPe4nZEkTg== X-Google-Smtp-Source: ABdhPJzxRFYADusmYmaAcqUXAZ6JGeQ4l6LPRcRtIAxJ1UlVRaPg615W7V2Zz9omCZS5o7LOl9sZ5HP2iL0g X-Received: by 2002:a54:488f:: with SMTP id r15mr11210334oic.130.1626705856148; Mon, 19 Jul 2021 07:44:16 -0700 (PDT) Received: from postal.iol.unh.edu (postal.iol.unh.edu. [132.177.123.84]) by smtp-relay.gmail.com with ESMTPS id r18sm5640047oov.20.2021.07.19.07.44.16 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Jul 2021 07:44:16 -0700 (PDT) X-Relaying-Domain: iol.unh.edu Received: from noxus.dpdklab.iol.unh.edu (unknown [IPv6:2606:4100:3880:1722::4]) by postal.iol.unh.edu (Postfix) with ESMTP id 9C64E6052490; Mon, 19 Jul 2021 10:44:15 -0400 (EDT) Received: from noxus.dpdklab.iol.unh.edu (localhost [IPv6:::1]) by noxus.dpdklab.iol.unh.edu (Postfix) with ESMTP id 92CD588E63; Mon, 19 Jul 2021 10:44:15 -0400 (EDT) Content-Type: multipart/mixed; boundary="===============3990283549962623834==" MIME-Version: 1.0 From: dpdklab@iol.unh.edu To: test-report@dpdk.org Cc: dpdk-test-reports@iol.unh.edu Message-Id: <20210719144415.92CD588E63@noxus.dpdklab.iol.unh.edu> Date: Mon, 19 Jul 2021 10:44:15 -0400 (EDT) Subject: [dpdk-test-report] |WARNING| pw95959-95965 [PATCH] [v2, 7/7] net/nfp: batch file rename for consistency X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: test-report-bounces@dpdk.org Sender: "test-report" --===============3990283549962623834== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGVzdC1MYWJlbDogaW9sLXRlc3RpbmcKVGVzdC1TdGF0dXM6IFdBUk5JTkcKaHR0cDovL2RwZGsu b3JnL3BhdGNoLzk1OTU5CgpfYXBwbHkgcGF0Y2ggZmFpbHVyZV8KClN1Ym1pdHRlcjogSGVpbnJp Y2ggS3VobiA8aGVpbnJpY2gua3VobkBuZXRyb25vbWUuY29tPgpEYXRlOiBGcmlkYXksIEp1bHkg MTYgMjAyMSAwODozNTo0NiAKQXBwbGllZCBvbjogQ29tbWl0SUQ6MWYyNGUwYjQxY2MwZmU3YTY2 NjBhNjM4ZTgxZWY5ODcyY2ExNGNhNgpBcHBseSBwYXRjaCBzZXQgOTU5NTktOTU5NjUgZmFpbGVk OgoKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL21lc29uLmJ1aWxkLi4uCkNoZWNraW5n IHBhdGNoIGRyaXZlcnMvbmV0L25mcC9uZnBfZXRoZGV2LmMuLi4KQ2hlY2tpbmcgcGF0Y2ggZHJp dmVycy9uZXQvbmZwL25mcF9uZXQuYy4uLgpIdW5rICMxIHN1Y2NlZWRlZCBhdCAzOSAob2Zmc2V0 IDIgbGluZXMpLgpIdW5rICMyIHN1Y2NlZWRlZCBhdCA1MyAob2Zmc2V0IDIgbGluZXMpLgpIdW5r ICMzIHN1Y2NlZWRlZCBhdCAyNTQgKG9mZnNldCAyIGxpbmVzKS4KSHVuayAjNCBzdWNjZWVkZWQg YXQgNDA2IChvZmZzZXQgMiBsaW5lcykuCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJcmV0 dXJuIHJldDsKfQoKCi8qIEluaXRpYWxpc2UgYW5kIHJlZ2lzdGVyIGRyaXZlciB3aXRoIERQREsg QXBwbGljYXRpb24gKi8Kc3RhdGljIGNvbnN0IHN0cnVjdCBldGhfZGV2X29wcyBuZnBfbmV0X2V0 aF9kZXZfb3BzID0gewoJLmRldl9jb25maWd1cmUJCT0gbmZwX25ldF9jb25maWd1cmUsCgkuZGV2 X3N0YXJ0CQk9IG5mcF9uZXRfc3RhcnQsCgkuZGV2X3N0b3AJCT0gbmZwX25ldF9zdG9wLAoJLmRl dl9zZXRfbGlua191cAk9IG5mcF9uZXRfc2V0X2xpbmtfdXAsCgkuZGV2X3NldF9saW5rX2Rvd24J PSBuZnBfbmV0X3NldF9saW5rX2Rvd24sCgkuZGV2X2Nsb3NlCQk9IG5mcF9uZXRfY2xvc2UsCgku cHJvbWlzY3VvdXNfZW5hYmxlCT0gbmZwX25ldF9wcm9taXNjX2VuYWJsZSwKCS5wcm9taXNjdW91 c19kaXNhYmxlCT0gbmZwX25ldF9wcm9taXNjX2Rpc2FibGUsCgkubGlua191cGRhdGUJCT0gbmZw X25ldF9saW5rX3VwZGF0ZSwKCS5zdGF0c19nZXQJCT0gbmZwX25ldF9zdGF0c19nZXQsCgkuc3Rh dHNfcmVzZXQJCT0gbmZwX25ldF9zdGF0c19yZXNldCwKCS5kZXZfaW5mb3NfZ2V0CQk9IG5mcF9u ZXRfaW5mb3NfZ2V0LAoJLmRldl9zdXBwb3J0ZWRfcHR5cGVzX2dldCA9IG5mcF9uZXRfc3VwcG9y dGVkX3B0eXBlc19nZXQsCgkubXR1X3NldAkJPSBuZnBfbmV0X2Rldl9tdHVfc2V0LAoJLm1hY19h ZGRyX3NldCAgICAgICAgICAgPSBuZnBfc2V0X21hY19hZGRyLAoJLnZsYW5fb2ZmbG9hZF9zZXQJ PSBuZnBfbmV0X3ZsYW5fb2ZmbG9hZF9zZXQsCgkucmV0YV91cGRhdGUJCT0gbmZwX25ldF9yZXRh X3VwZGF0ZSwKCS5yZXRhX3F1ZXJ5CQk9IG5mcF9uZXRfcmV0YV9xdWVyeSwKCS5yc3NfaGFzaF91 cGRhdGUJPSBuZnBfbmV0X3Jzc19oYXNoX3VwZGF0ZSwKCS5yc3NfaGFzaF9jb25mX2dldAk9IG5m cF9uZXRfcnNzX2hhc2hfY29uZl9nZXQsCgkucnhfcXVldWVfc2V0dXAJCT0gbmZwX25ldF9yeF9x dWV1ZV9zZXR1cCwKCS5yeF9xdWV1ZV9yZWxlYXNlCT0gbmZwX25ldF9yeF9xdWV1ZV9yZWxlYXNl LAoJLnR4X3F1ZXVlX3NldHVwCQk9IG5mcF9uZXRfdHhfcXVldWVfc2V0dXAsCgkudHhfcXVldWVf cmVsZWFzZQk9IG5mcF9uZXRfdHhfcXVldWVfcmVsZWFzZSwKCS5yeF9xdWV1ZV9pbnRyX2VuYWJs ZSAgID0gbmZwX3J4X3F1ZXVlX2ludHJfZW5hYmxlLAoJLnJ4X3F1ZXVlX2ludHJfZGlzYWJsZSAg PSBuZnBfcnhfcXVldWVfaW50cl9kaXNhYmxlLAp9OwoKCnN0YXRpYyBpbnQKbmZwX25ldF9pbml0 KHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldikKewoJc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpw Y2lfZGV2OwoJc3RydWN0IG5mcF9wZl9kZXYgKnBmX2RldjsKCXN0cnVjdCBuZnBfbmV0X2h3ICpo dzsKCgl1aW50NjRfdCB0eF9iYXJfb2ZmID0gMCwgcnhfYmFyX29mZiA9IDA7Cgl1aW50MzJfdCBz dGFydF9xOwoJaW50IHN0cmlkZSA9IDQ7CglpbnQgcG9ydCA9IDA7CglpbnQgZXJyOwoKCVBNRF9J TklUX0ZVTkNfVFJBQ0UoKTsKCglwY2lfZGV2ID0gUlRFX0VUSF9ERVZfVE9fUENJKGV0aF9kZXYp OwoKCS8qIFVzZSBiYWNrcG9pbnRlciBoZXJlIHRvIHRoZSBQRiBvZiB0aGlzIGV0aF9kZXYgKi8K CXBmX2RldiA9IE5GUF9ORVRfREVWX1BSSVZBVEVfVE9fUEYoZXRoX2Rldi0+ZGF0YS0+ZGV2X3By aXZhdGUpOwoKCS8qIE5GUCBjYW4gbm90IGhhbmRsZSBETUEgYWRkcmVzc2VzIHJlcXVpcmluZyBt b3JlIHRoYW4gNDAgYml0cyAqLwoJaWYgKHJ0ZV9tZW1fY2hlY2tfZG1hX21hc2soNDApKSB7CgkJ UlRFX0xPRyhFUlIsIFBNRCwgImRldmljZSAlcyBjYW4gbm90IGJlIHVzZWQ6IiwKCQkJCSAgIHBj aV9kZXYtPmRldmljZS5uYW1lKTsKCQlSVEVfTE9HKEVSUiwgUE1ELCAiXHRyZXN0cmljdGVkIGRt YSBtYXNrIHRvIDQwIGJpdHMhXG4iKTsKCQlyZXR1cm4gLUVOT0RFVjsKCX07CgoJaWYgKChwY2lf ZGV2LT5pZC5kZXZpY2VfaWQgPT0gUENJX0RFVklDRV9JRF9ORlA0MDAwX1BGX05JQykgfHwKCSAg ICAocGNpX2Rldi0+aWQuZGV2aWNlX2lkID09IFBDSV9ERVZJQ0VfSURfTkZQNjAwMF9QRl9OSUMp KSB7CgkJcG9ydCA9ICgoc3RydWN0IG5mcF9uZXRfaHcgKilldGhfZGV2LT5kYXRhLT5kZXZfcHJp dmF0ZSktPmlkeDsKCQlpZiAocG9ydCA8IDAgfHwgcG9ydCA+IDcpIHsKCQkJUE1EX0RSVl9MT0co RVJSLCAiUG9ydCB2YWx1ZSBpcyB3cm9uZyIpOwoJCQlyZXR1cm4gLUVOT0RFVjsKCQl9CgoJCS8q IFVzZSBQRiBhcnJheSBvZiBwaHlzaWNhbCBwb3J0cyB0byBnZXQgcG9pbnRlciB0bwoJCSAqIHRo aXMgc3BlY2lmaWMgcG9ydAoJCSAqLwoJCWh3ID0gcGZfZGV2LT5wb3J0c1twb3J0XTsKCgkJUE1E X0lOSVRfTE9HKERFQlVHLCAiV29ya2luZyB3aXRoIHBoeXNpY2FsIHBvcnQgbnVtYmVyOiAlZCwg IgoJCQkJICAgICJORlAgaW50ZXJuYWwgcG9ydCBudW1iZXI6ICVkIiwKCQkJCSAgICBwb3J0LCBo dy0+bmZwX2lkeCk7CgoJfSBlbHNlIHsKCQlodyA9IE5GUF9ORVRfREVWX1BSSVZBVEVfVE9fSFco ZXRoX2Rldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOwoJfQoKCWV0aF9kZXYtPmRldl9vcHMgPSAmbmZw X25ldF9ldGhfZGV2X29wczsKCWV0aF9kZXYtPnJ4X3F1ZXVlX2NvdW50ID0gbmZwX25ldF9yeF9x dWV1ZV9jb3VudDsKCWV0aF9kZXYtPnJ4X3BrdF9idXJzdCA9ICZuZnBfbmV0X3JlY3ZfcGt0czsK CWV0aF9kZXYtPnR4X3BrdF9idXJzdCA9ICZuZnBfbmV0X3htaXRfcGt0czsKCgkvKiBGb3Igc2Vj b25kYXJ5IHByb2Nlc3NlcywgdGhlIHByaW1hcnkgaGFzIGRvbmUgYWxsIHRoZSB3b3JrICovCglp ZiAocnRlX2VhbF9wcm9jZXNzX3R5cGUoKSAhPSBSVEVfUFJPQ19QUklNQVJZKQoJCXJldHVybiAw OwoKCXJ0ZV9ldGhfY29weV9wY2lfaW5mbyhldGhfZGV2LCBwY2lfZGV2KTsKCglody0+ZGV2aWNl X2lkID0gcGNpX2Rldi0+aWQuZGV2aWNlX2lkOwoJaHctPnZlbmRvcl9pZCA9IHBjaV9kZXYtPmlk LnZlbmRvcl9pZDsKCWh3LT5zdWJzeXN0ZW1fZGV2aWNlX2lkID0gcGNpX2Rldi0+aWQuc3Vic3lz dGVtX2RldmljZV9pZDsKCWh3LT5zdWJzeXN0ZW1fdmVuZG9yX2lkID0gcGNpX2Rldi0+aWQuc3Vi c3lzdGVtX3ZlbmRvcl9pZDsKCglQTURfSU5JVF9MT0coREVCVUcsICJuZnBfbmV0OiBkZXZpY2Ug KCV1OiV1KSAldToldToldToldSIsCgkJICAgICBwY2lfZGV2LT5pZC52ZW5kb3JfaWQsIHBjaV9k ZXYtPmlkLmRldmljZV9pZCwKCQkgICAgIHBjaV9kZXYtPmFkZHIuZG9tYWluLCBwY2lfZGV2LT5h ZGRyLmJ1cywKCQkgICAgIHBjaV9kZXYtPmFkZHIuZGV2aWQsIHBjaV9kZXYtPmFkZHIuZnVuY3Rp b24pOwoKCWh3LT5jdHJsX2JhciA9ICh1aW50OF90ICopcGNpX2Rldi0+bWVtX3Jlc291cmNlWzBd LmFkZHI7CglpZiAoaHctPmN0cmxfYmFyID09IE5VTEwpIHsKCQlQTURfRFJWX0xPRyhFUlIsCgkJ CSJody0+Y3RybF9iYXIgaXMgTlVMTC4gQkFSMCBub3QgY29uZmlndXJlZCIpOwoJCXJldHVybiAt RU5PREVWOwoJfQoKCWlmIChody0+aXNfcGh5cG9ydCkgewoJCWlmIChwb3J0ID09IDApIHsKCQkJ aHctPmN0cmxfYmFyID0gcGZfZGV2LT5jdHJsX2JhcjsKCQl9IGVsc2UgewoJCQlpZiAoIXBmX2Rl di0+Y3RybF9iYXIpCgkJCQlyZXR1cm4gLUVOT0RFVjsKCQkJLyogVXNlIHBvcnQgb2Zmc2V0IGlu IHBmIGN0cmxfYmFyIGZvciB0aGlzCgkJCSAqIHBvcnRzIGNvbnRyb2wgYmFyCgkJCSAqLwoJCQlo dy0+Y3RybF9iYXIgPSBwZl9kZXYtPmN0cmxfYmFyICsKCQkJCSAgICAgICAocG9ydCAqIE5GUF9Q Rl9DU1JfU0xJQ0VfU0laRSk7CgkJfQoJfQoKCVBNRF9JTklUX0xPRyhERUJVRywgImN0cmwgYmFy OiAlcCIsIGh3LT5jdHJsX2Jhcik7CgoJaHctPm1heF9yeF9xdWV1ZXMgPSBubl9jZmdfcmVhZGwo aHcsIE5GUF9ORVRfQ0ZHX01BWF9SWFJJTkdTKTsKCWh3LT5tYXhfdHhfcXVldWVzID0gbm5fY2Zn X3JlYWRsKGh3LCBORlBfTkVUX0NGR19NQVhfVFhSSU5HUyk7CgoJLyogV29yayBvdXQgd2hlcmUg aW4gdGhlIEJBUiB0aGUgcXVldWVzIHN0YXJ0LiAqLwoJc3dpdGNoIChwY2lfZGV2LT5pZC5kZXZp Y2VfaWQpIHsKCWNhc2UgUENJX0RFVkkKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv bmZwL25mcF9uZXQuYzoxNjIwCkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL21lc29uLmJ1 aWxkIGNsZWFubHkuCkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYyBj bGVhbmx5LgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX25ldC5jIHdpdGggMSBy ZWplY3QuLi4KSHVuayAjMSBhcHBsaWVkIGNsZWFubHkuCkh1bmsgIzIgYXBwbGllZCBjbGVhbmx5 LgpIdW5rICMzIGFwcGxpZWQgY2xlYW5seS4KSHVuayAjNCBhcHBsaWVkIGNsZWFubHkuClJlamVj dGVkIGh1bmsgIzUuCmRpZmYgYS9kcml2ZXJzL25ldC9uZnAvbmZwX25ldC5jIGIvZHJpdmVycy9u ZXQvbmZwL25mcF9uZXQuYwkocmVqZWN0ZWQgaHVua3MpCkBAIC0xNjIwLDc4MCArMTMxMiw2IEBA IG5mcF9uZXRfcnNzX2NvbmZpZ19kZWZhdWx0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQogCXJl dHVybiByZXQ7CiB9CiAKLQotLyogSW5pdGlhbGlzZSBhbmQgcmVnaXN0ZXIgZHJpdmVyIHdpdGgg RFBESyBBcHBsaWNhdGlvbiAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBldGhfZGV2X29wcyBuZnBf bmV0X2V0aF9kZXZfb3BzID0gewotCS5kZXZfY29uZmlndXJlCQk9IG5mcF9uZXRfY29uZmlndXJl LAotCS5kZXZfc3RhcnQJCT0gbmZwX25ldF9zdGFydCwKLQkuZGV2X3N0b3AJCT0gbmZwX25ldF9z dG9wLAotCS5kZXZfc2V0X2xpbmtfdXAJPSBuZnBfbmV0X3NldF9saW5rX3VwLAotCS5kZXZfc2V0 X2xpbmtfZG93bgk9IG5mcF9uZXRfc2V0X2xpbmtfZG93biwKLQkuZGV2X2Nsb3NlCQk9IG5mcF9u ZXRfY2xvc2UsCi0JLnByb21pc2N1b3VzX2VuYWJsZQk9IG5mcF9uZXRfcHJvbWlzY19lbmFibGUs Ci0JLnByb21pc2N1b3VzX2Rpc2FibGUJPSBuZnBfbmV0X3Byb21pc2NfZGlzYWJsZSwKLQkubGlu a191cGRhdGUJCT0gbmZwX25ldF9saW5rX3VwZGF0ZSwKLQkuc3RhdHNfZ2V0CQk9IG5mcF9uZXRf c3RhdHNfZ2V0LAotCS5zdGF0c19yZXNldAkJPSBuZnBfbmV0X3N0YXRzX3Jlc2V0LAotCS5kZXZf aW5mb3NfZ2V0CQk9IG5mcF9uZXRfaW5mb3NfZ2V0LAotCS5kZXZfc3VwcG9ydGVkX3B0eXBlc19n ZXQgPSBuZnBfbmV0X3N1cHBvcnRlZF9wdHlwZXNfZ2V0LAotCS5tdHVfc2V0CQk9IG5mcF9uZXRf ZGV2X210dV9zZXQsCi0JLm1hY19hZGRyX3NldCAgICAgICAgICAgPSBuZnBfc2V0X21hY19hZGRy LAotCS52bGFuX29mZmxvYWRfc2V0CT0gbmZwX25ldF92bGFuX29mZmxvYWRfc2V0LAotCS5yZXRh X3VwZGF0ZQkJPSBuZnBfbmV0X3JldGFfdXBkYXRlLAotCS5yZXRhX3F1ZXJ5CQk9IG5mcF9uZXRf cmV0YV9xdWVyeSwKLQkucnNzX2hhc2hfdXBkYXRlCT0gbmZwX25ldF9yc3NfaGFzaF91cGRhdGUs Ci0JLnJzc19oYXNoX2NvbmZfZ2V0CT0gbmZwX25ldF9yc3NfaGFzaF9jb25mX2dldCwKLQkucnhf cXVldWVfc2V0dXAJCT0gbmZwX25ldF9yeF9xdWV1ZV9zZXR1cCwKLQkucnhfcXVldWVfcmVsZWFz ZQk9IG5mcF9uZXRfcnhfcXVldWVfcmVsZWFzZSwKLQkudHhfcXVldWVfc2V0dXAJCT0gbmZwX25l dF90eF9xdWV1ZV9zZXR1cCwKLQkudHhfcXVldWVfcmVsZWFzZQk9IG5mcF9uZXRfdHhfcXVldWVf cmVsZWFzZSwKLQkucnhfcXVldWVfaW50cl9lbmFibGUgICA9IG5mcF9yeF9xdWV1ZV9pbnRyX2Vu YWJsZSwKLQkucnhfcXVldWVfaW50cl9kaXNhYmxlICA9IG5mcF9yeF9xdWV1ZV9pbnRyX2Rpc2Fi bGUsCi19OwotCi0KLXN0YXRpYyBpbnQKLW5mcF9uZXRfaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmV0aF9kZXYpCi17Ci0Jc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2OwotCXN0cnVjdCBu ZnBfcGZfZGV2ICpwZl9kZXY7Ci0Jc3RydWN0IG5mcF9uZXRfaHcgKmh3OwotCi0JdWludDY0X3Qg dHhfYmFyX29mZiA9IDAsIHJ4X2Jhcl9vZmYgPSAwOwotCXVpbnQzMl90IHN0YXJ0X3E7Ci0JaW50 IHN0cmlkZSA9IDQ7Ci0JaW50IHBvcnQgPSAwOwotCWludCBlcnI7Ci0KLQlQTURfSU5JVF9GVU5D X1RSQUNFKCk7Ci0KLQlwY2lfZGV2ID0gUlRFX0VUSF9ERVZfVE9fUENJKGV0aF9kZXYpOwotCi0J LyogVXNlIGJhY2twb2ludGVyIGhlcmUgdG8gdGhlIFBGIG9mIHRoaXMgZXRoX2RldiAqLwotCXBm X2RldiA9IE5GUF9ORVRfREVWX1BSSVZBVEVfVE9fUEYoZXRoX2Rldi0+ZGF0YS0+ZGV2X3ByaXZh dGUpOwotCi0JLyogTkZQIGNhbiBub3QgaGFuZGxlIERNQSBhZGRyZXNzZXMgcmVxdWlyaW5nIG1v cmUgdGhhbiA0MCBiaXRzICovCi0JaWYgKHJ0ZV9tZW1fY2hlY2tfZG1hX21hc2soNDApKSB7Ci0J CVJURV9MT0coRVJSLCBQTUQsICJkZXZpY2UgJXMgY2FuIG5vdCBiZSB1c2VkOiIsCi0JCQkJICAg cGNpX2Rldi0+ZGV2aWNlLm5hbWUpOwotCQlSVEVfTE9HKEVSUiwgUE1ELCAiXHRyZXN0cmljdGVk IGRtYSBtYXNrIHRvIDQwIGJpdHMhXG4iKTsKLQkJcmV0dXJuIC1FTk9ERVY7Ci0JfTsKLQotCWlm ICgocGNpX2Rldi0+aWQuZGV2aWNlX2lkID09IFBDSV9ERVZJQ0VfSURfTkZQNDAwMF9QRl9OSUMp IHx8Ci0JICAgIChwY2lfZGV2LT5pZC5kZXZpY2VfaWQgPT0gUENJX0RFVklDRV9JRF9ORlA2MDAw X1BGX05JQykpIHsKLQkJcG9ydCA9ICgoc3RydWN0IG5mcF9uZXRfaHcgKilldGhfZGV2LT5kYXRh LT5kZXZfcHJpdmF0ZSktPmlkeDsKLQkJaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiA3KSB7Ci0JCQlQ TURfRFJWX0xPRyhFUlIsICJQb3J0IHZhbHVlIGlzIHdyb25nIik7Ci0JCQlyZXR1cm4gLUVOT0RF VjsKLQkJfQotCi0JCS8qIFVzZSBQRiBhcnJheSBvZiBwaHlzaWNhbCBwb3J0cyB0byBnZXQgcG9p bnRlciB0bwotCQkgKiB0aGlzIHNwZWNpZmljIHBvcnQKLQkJICovCi0JCWh3ID0gcGZfZGV2LT5w b3J0c1twb3J0XTsKLQotCQlQTURfSU5JVF9MT0coREVCVUcsICJXb3JraW5nIHdpdGggcGh5c2lj YWwgcG9ydCBudW1iZXI6ICVkLCAiCi0JCQkJICAgICJORlAgaW50ZXJuYWwgcG9ydCBudW1iZXI6 ICVkIiwKLQkJCQkgICAgcG9ydCwgaHctPm5mcF9pZHgpOwotCi0JfSBlbHNlIHsKLQkJaHcgPSBO RlBfTkVUX0RFVl9QUklWQVRFX1RPX0hXKGV0aF9kZXYtPmRhdGEtPmRldl9wcml2YXRlKTsKLQl9 Ci0KLQlldGhfZGV2LT5kZXZfb3BzID0gJm5mcF9uZXRfZXRoX2Rldl9vcHM7Ci0JZXRoX2Rldi0+ cnhfcXVldWVfY291bnQgPSBuZnBfbmV0X3J4X3F1ZXVlX2NvdW50OwotCWV0aF9kZXYtPnJ4X3Br dF9idXJzdCA9ICZuZnBfbmV0X3JlY3ZfcGt0czsKLQlldGhfZGV2LT50eF9wa3RfYnVyc3QgPSAm bmZwX25ldF94bWl0X3BrdHM7Ci0KLQkvKiBGb3Igc2Vjb25kYXJ5IHByb2Nlc3NlcywgdGhlIHBy aW1hcnkgaGFzIGRvbmUgYWxsIHRoZSB3b3JrICovCi0JaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBl KCkgIT0gUlRFX1BST0NfUFJJTUFSWSkKLQkJcmV0dXJuIDA7Ci0KLQlydGVfZXRoX2NvcHlfcGNp X2luZm8oZXRoX2RldiwgcGNpX2Rldik7Ci0KLQlody0+ZGV2aWNlX2lkID0gcGNpX2Rldi0+aWQu ZGV2aWNlX2lkOwotCWh3LT52ZW5kb3JfaWQgPSBwY2lfZGV2LT5pZC52ZW5kb3JfaWQ7Ci0JaHct PnN1YnN5c3RlbV9kZXZpY2VfaWQgPSBwY2lfZGV2LT5pZC5zdWJzeXN0ZW1fZGV2aWNlX2lkOwot CWh3LT5zdWJzeXN0ZW1fdmVuZG9yX2lkID0gcGNpX2Rldi0+aWQuc3Vic3lzdGVtX3ZlbmRvcl9p ZDsKLQotCVBNRF9JTklUX0xPRyhERUJVRywgIm5mcF9uZXQ6IGRldmljZSAoJXU6JXUpICV1OiV1 OiV1OiV1IiwKLQkJICAgICBwY2lfZGV2LT5pZC52ZW5kb3JfaWQsIHBjaV9kZXYtPmlkLmRldmlj ZV9pZCwKLQkJICAgICBwY2lfZGV2LT5hZGRyLmRvbWFpbiwgcGNpX2Rldi0+YWRkci5idXMsCi0J CSAgICAgcGNpX2Rldi0+YWRkci5kZXZpZCwgcGNpX2Rldi0+YWRkci5mdW5jdGlvbik7Ci0KLQlo dy0+Y3RybF9iYXIgPSAodWludDhfdCAqKXBjaV9kZXYtPm1lbV9yZXNvdXJjZVswXS5hZGRyOwot CWlmIChody0+Y3RybF9iYXIgPT0gTlVMTCkgewotCQlQTURfRFJWX0xPRyhFUlIsCi0JCQkiaHct PmN0cmxfYmFyIGlzIE5VTEwuIEJBUjAgbm90IGNvbmZpZ3VyZWQiKTsKLQkJcmV0dXJuIC1FTk9E RVY7Ci0JfQotCi0JaWYgKGh3LT5pc19waHlwb3J0KSB7Ci0JCWlmIChwb3J0ID09IDApIHsKLQkJ CWh3LT5jdHJsX2JhciA9IHBmX2Rldi0+Y3RybF9iYXI7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoIXBm X2Rldi0+Y3RybF9iYXIpCi0JCQkJcmV0dXJuIC1FTk9ERVY7Ci0JCQkvKiBVc2UgcG9ydCBvZmZz ZXQgaW4gcGYgY3RybF9iYXIgZm9yIHRoaXMKLQkJCSAqIHBvcnRzIGNvbnRyb2wgYmFyCi0JCQkg Ki8KLQkJCWh3LT5jdHJsX2JhciA9IHBmX2Rldi0+Y3RybF9iYXIgKwotCQkJCSAgICAgICAocG9y dCAqIE5GUF9QRl9DU1JfU0xJQ0VfU0laRSk7Ci0JCX0KLQl9Ci0KLQlQTURfSU5JVF9MT0coREVC VUcsICJjdHJsIGJhcjogJXAiLCBody0+Y3RybF9iYXIpOwotCi0JaHctPm1heF9yeF9xdWV1ZXMg PSBubl9jZmdfcmVhZGwoaHcsIE5GUF9ORVRfQ0ZHX01BWF9SWFJJTkdTKTsKLQlody0+bWF4X3R4 X3F1ZXVlcyA9IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfTUFYX1RYUklOR1MpOwotCi0J LyogV29yayBvdXQgd2hlcmUgaW4gdGhlIEJBUiB0aGUgcXVldWVzIHN0YXJ0LiAqLwotCXN3aXRj aCAocGNpX2Rldi0+aWQuZGV2aWNlX2lkKSB7Ci0JY2FzZSBQQ0lfREVWSUNFX0lEX05GUDQwMDBf UEZfTklDOgotCWNhc2UgUENJX0RFVklDRV9JRF9ORlA2MDAwX1BGX05JQzoKLQljYXNlIFBDSV9E RVZJQ0VfSURfTkZQNjAwMF9WRl9OSUM6Ci0JCXN0YXJ0X3EgPSBubl9jZmdfcmVhZGwoaHcsIE5G UF9ORVRfQ0ZHX1NUQVJUX1RYUSk7Ci0JCXR4X2Jhcl9vZmYgPSAodWludDY0X3Qpc3RhcnRfcSAq IE5GUF9RQ1BfUVVFVUVfQUREUl9TWjsKLQkJc3RhcnRfcSA9IG5uX2NmZ19yZWFkbChodywgTkZQ X05FVF9DRkdfU1RBUlRfUlhRKTsKLQkJcnhfYmFyX29mZiA9ICh1aW50NjRfdClzdGFydF9xICog TkZQX1FDUF9RVUVVRV9BRERSX1NaOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlQTURfRFJWX0xP RyhFUlIsICJuZnBfbmV0OiBubyBkZXZpY2UgSUQgbWF0Y2hpbmciKTsKLQkJZXJyID0gLUVOT0RF VjsKLQkJZ290byBkZXZfZXJyX2N0cmxfbWFwOwotCX0KLQotCVBNRF9JTklUX0xPRyhERUJVRywg InR4X2Jhcl9vZmY6IDB4JSIgUFJJeDY0ICIiLCB0eF9iYXJfb2ZmKTsKLQlQTURfSU5JVF9MT0co REVCVUcsICJyeF9iYXJfb2ZmOiAweCUiIFBSSXg2NCAiIiwgcnhfYmFyX29mZik7Ci0KLQlpZiAo aHctPmlzX3BoeXBvcnQpIHsKLQkJaHctPnR4X2JhciA9IHBmX2Rldi0+aHdfcXVldWVzICsgdHhf YmFyX29mZjsKLQkJaHctPnJ4X2JhciA9IHBmX2Rldi0+aHdfcXVldWVzICsgcnhfYmFyX29mZjsK LQkJZXRoX2Rldi0+ZGF0YS0+ZGV2X3ByaXZhdGUgPSBodzsKLQl9IGVsc2UgewotCQlody0+dHhf YmFyID0gKHVpbnQ4X3QgKilwY2lfZGV2LT5tZW1fcmVzb3VyY2VbMl0uYWRkciArCi0JCQkgICAg IHR4X2Jhcl9vZmY7Ci0JCWh3LT5yeF9iYXIgPSAodWludDhfdCAqKXBjaV9kZXYtPm1lbV9yZXNv dXJjZVsyXS5hZGRyICsKLQkJCSAgICAgcnhfYmFyX29mZjsKLQl9Ci0KLQlQTURfSU5JVF9MT0co REVCVUcsICJjdHJsX2JhcjogJXAsIHR4X2JhcjogJXAsIHJ4X2JhcjogJXAiLAotCQkgICAgIGh3 LT5jdHJsX2JhciwgaHctPnR4X2JhciwgaHctPnJ4X2Jhcik7Ci0KLQluZnBfbmV0X2NmZ19xdWV1 ZV9zZXR1cChodyk7Ci0KLQkvKiBHZXQgc29tZSBvZiB0aGUgcmVhZC1vbmx5IGZpZWxkcyBmcm9t IHRoZSBjb25maWcgQkFSICovCi0JaHctPnZlciA9IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9D RkdfVkVSU0lPTik7Ci0JaHctPmNhcCA9IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfQ0FQ KTsKLQlody0+bWF4X210dSA9IG5uX2NmZ19yZWFkbChodywgTkZQX05FVF9DRkdfTUFYX01UVSk7 Ci0JaHctPm10dSA9IFJURV9FVEhFUl9NVFU7Ci0KLQkvKiBWTEFOIGluc2VydGlvbiBpcyBpbmNv bXBhdGlibGUgd2l0aCBMU092MiAqLwotCWlmIChody0+Y2FwICYgTkZQX05FVF9DRkdfQ1RSTF9M U08yKQotCQlody0+Y2FwICY9IH5ORlBfTkVUX0NGR19DVFJMX1RYVkxBTjsKLQotCWlmIChORkRf Q0ZHX01BSk9SX1ZFUlNJT05fb2YoaHctPnZlcikgPCAyKQotCQlody0+cnhfb2Zmc2V0ID0gTkZQ X05FVF9SWF9PRkZTRVQ7Ci0JZWxzZQotCQlody0+cnhfb2Zmc2V0ID0gbm5fY2ZnX3JlYWRsKGh3 LCBORlBfTkVUX0NGR19SWF9PRkZTRVRfQUREUik7Ci0KLQlQTURfSU5JVF9MT0coSU5GTywgIlZF UjogJXUuJXUsIE1heGltdW0gc3VwcG9ydGVkIE1UVTogJWQiLAotCQkJICAgTkZEX0NGR19NQUpP Ul9WRVJTSU9OX29mKGh3LT52ZXIpLAotCQkJICAgTkZEX0NGR19NSU5PUl9WRVJTSU9OX29mKGh3 LT52ZXIpLCBody0+bWF4X210dSk7Ci0KLQlQTURfSU5JVF9MT0coSU5GTywgIkNBUDogJSN4LCAl cyVzJXMlcyVzJXMlcyVzJXMlcyVzJXMlcyVzIiwgaHctPmNhcCwKLQkJICAgICBody0+Y2FwICYg TkZQX05FVF9DRkdfQ1RSTF9QUk9NSVNDID8gIlBST01JU0MgIiA6ICIiLAotCQkgICAgIGh3LT5j YXAgJiBORlBfTkVUX0NGR19DVFJMX0wyQkMgICAgPyAiTDJCQ0ZJTFQgIiA6ICIiLAotCQkgICAg IGh3LT5jYXAgJiBORlBfTkVUX0NGR19DVFJMX0wyTUMgICAgPyAiTDJNQ0ZJTFQgIiA6ICIiLAot CQkgICAgIGh3LT5jYXAgJiBORlBfTkVUX0NGR19DVFJMX1JYQ1NVTSAgPyAiUlhDU1VNICIgIDog IiIsCi0JCSAgICAgaHctPmNhcCAmIE5GUF9ORVRfQ0ZHX0NUUkxfVFhDU1VNICA/ICJUWENTVU0g IiAgOiAiIiwKLQkJICAgICBody0+Y2FwICYgTkZQX05FVF9DRkdfQ1RSTF9SWFZMQU4gID8gIlJY VkxBTiAiICA6ICIiLAotCQkgICAgIGh3LT5jYXAgJiBORlBfTkVUX0NGR19DVFJMX1RYVkxBTiAg PyAiVFhWTEFOICIgIDogIiIsCi0JCSAgICAgaHctPmNhcCAmIE5GUF9ORVRfQ0ZHX0NUUkxfU0NB VFRFUiA/ICJTQ0FUVEVSICIgOiAiIiwKLQkJICAgICBody0+Y2FwICYgTkZQX05FVF9DRkdfQ1RS TF9HQVRIRVIgID8gIkdBVEhFUiAiICA6ICIiLAotCQkgICAgIGh3LT5jYXAgJiBORlBfTkVUX0NG R19DVFJMX0xJVkVfQUREUiA/ICJMSVZFX0FERFIgIiAgOiAiIiwKLQkJICAgICBody0+Y2FwICYg TkZQX05FVF9DRkdfQ1RSTF9MU08gICAgID8gIlRTTyAiICAgICA6ICIiLAotCQkgICAgIGh3LT5j YXAgJiBORlBfTkVUX0NGR19DVFJMX0xTTzIgICAgID8gIlRTT3YyICIgICAgIDogIiIsCi0JCSAg ICAgaHctPmNhcCAmIE5GUF9ORVRfQ0ZHX0NUUkxfUlNTICAgICA/ICJSU1MgIiAgICAgOiAiIiwK LQkJICAgICBody0+Y2FwICYgTkZQX05FVF9DRkdfQ1RSTF9SU1MyICAgICA/ICJSU1N2MiAiICAg ICA6ICIiKTsKLQotCWh3LT5jdHJsID0gMDsKLQotCWh3LT5zdHJpZGVfcnggPSBzdHJpZGU7Ci0J aHctPnN0cmlkZV90eCA9IHN0cmlkZTsKLQotCVBNRF9JTklUX0xPRyhJTkZPLCAibWF4X3J4X3F1 ZXVlczogJXUsIG1heF90eF9xdWV1ZXM6ICV1IiwKLQkJICAgICBody0+bWF4X3J4X3F1ZXVlcywg aHctPm1heF90eF9xdWV1ZXMpOwotCi0JLyogSW5pdGlhbGl6aW5nIHNwaW5sb2NrIGZvciByZWNv bmZpZ3MgKi8KLQlydGVfc3BpbmxvY2tfaW5pdCgmaHctPnJlY29uZmlnX2xvY2spOwotCi0JLyog QWxsb2NhdGluZyBtZW1vcnkgZm9yIG1hYyBhZGRyICovCi0JZXRoX2Rldi0+ZGF0YS0+bWFjX2Fk ZHJzID0gcnRlX3ptYWxsb2MoIm1hY19hZGRyIiwKLQkJCQkJICAgICAgIFJURV9FVEhFUl9BRERS X0xFTiwgMCk7Ci0JaWYgKGV0aF9kZXYtPmRhdGEtPm1hY19hZGRycyA9PSBOVUxMKSB7Ci0JCVBN RF9JTklUX0xPRyhFUlIsICJGYWlsZWQgdG8gc3BhY2UgZm9yIE1BQyBhZGRyZXNzIik7Ci0JCWVy ciA9IC1FTk9NRU07Ci0JCWdvdG8gZGV2X2Vycl9xdWV1ZXNfbWFwOwotCX0KLQotCWlmIChody0+ aXNfcGh5cG9ydCkgewotCQluZnBfbmV0X3BmX3JlYWRfbWFjKHBmX2RldiwgcG9ydCk7Ci0JCW5m cF9uZXRfd3JpdGVfbWFjKGh3LCAodWludDhfdCAqKSZody0+bWFjX2FkZHIpOwotCX0KLQotCWlm ICghcnRlX2lzX3ZhbGlkX2Fzc2lnbmVkX2V0aGVyX2FkZHIoCi0JCSAgICAoc3RydWN0IHJ0ZV9l dGhlcl9hZGRyICopJmh3LT5tYWNfYWRkcikpIHsKLQkJUE1EX0lOSVRfTE9HKElORk8sICJVc2lu ZyByYW5kb20gbWFjIGFkZHJlc3MgZm9yIHBvcnQgJWQiLAotCQkJCSAgIHBvcnQpOwotCQkvKiBV c2luZyByYW5kb20gbWFjIGFkZHJlc3NlcyBmb3IgVkZzICovCi0JCXJ0ZV9ldGhfcmFuZG9tX2Fk ZHIoJmh3LT5tYWNfYWRkclswXSk7Ci0JCW5mcF9uZXRfd3JpdGVfbWFjKGh3LCAodWludDhfdCAq KSZody0+bWFjX2FkZHIpOwotCX0KLQotCS8qIENvcHlpbmcgbWFjIGFkZHJlc3MgdG8gRFBESyBl dGhfZGV2IHN0cnVjdCAqLwotCXJ0ZV9ldGhlcl9hZGRyX2NvcHkoKHN0cnVjdCBydGVfZXRoZXJf YWRkciAqKWh3LT5tYWNfYWRkciwKLQkJCSZldGhfZGV2LT5kYXRhLT5tYWNfYWRkcnNbMF0pOwot Ci0JaWYgKCEoaHctPmNhcCAmIE5GUF9ORVRfQ0ZHX0NUUkxfTElWRV9BRERSKSkKLQkJZXRoX2Rl di0+ZGF0YS0+ZGV2X2ZsYWdzIHw9IFJURV9FVEhfREVWX05PTElWRV9NQUNfQUREUjsKLQotCWV0 aF9kZXYtPmRhdGEtPmRldl9mbGFncyB8PSBSVEVfRVRIX0RFVl9BVVRPRklMTF9RVUVVRV9YU1RB VFM7Ci0KLQlQTURfSU5JVF9MT0coSU5GTywgInBvcnQgJWQgVmVuZG9ySUQ9MHgleCBEZXZpY2VJ RD0weCV4ICIKLQkJICAgICAibWFjPSUwMng6JTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4IiwKLQkJ ICAgICBldGhfZGV2LT5kYXRhLT5wb3J0X2lkLCBwY2lfZGV2LT5pZC52ZW5kb3JfaWQsCi0JCSAg ICAgcGNpX2Rldi0+aWQuZGV2aWNlX2lkLAotCQkgICAgIGh3LT5tYWNfYWRkclswXSwgaHctPm1h Y19hZGRyWzFdLCBody0+bWFjX2FkZHJbMl0sCi0JCSAgICAgaHctPm1hY19hZGRyWzNdLCBody0+ bWFjX2FkZHJbNF0sIGh3LT5tYWNfYWRkcls1XSk7Ci0KLQlpZiAocnRlX2VhbF9wcm9jZXNzX3R5 cGUoKSA9PSBSVEVfUFJPQ19QUklNQVJZKSB7Ci0JCS8qIFJlZ2lzdGVyaW5nIExTQyBpbnRlcnJ1 cHQgaGFuZGxlciAqLwotCQlydGVfaW50cl9jYWxsYmFja19yZWdpc3RlcigmcGNpX2Rldi0+aW50 cl9oYW5kbGUsCi0JCQkJCSAgIG5mcF9uZXRfZGV2X2ludGVycnVwdF9oYW5kbGVyLAotCQkJCQkg ICAodm9pZCAqKWV0aF9kZXYpOwotCQkvKiBUZWxsaW5nIHRoZSBmaXJtd2FyZSBhYm91dCB0aGUg TFNDIGludGVycnVwdCBlbnRyeSAqLwotCQlubl9jZmdfd3JpdGViKGh3LCBORlBfTkVUX0NGR19M U0MsIE5GUF9ORVRfSVJRX0xTQ19JRFgpOwotCQkvKiBSZWNvcmRpbmcgY3VycmVudCBzdGF0cyBj b3VudGVycyB2YWx1ZXMgKi8KLQkJbmZwX25ldF9zdGF0c19yZXNldChldGhfZGV2KTsKLQl9Ci0K LQlyZXR1cm4gMDsKLQotZGV2X2Vycl9xdWV1ZXNfbWFwOgotCQluZnBfY3BwX2FyZWFfZnJlZSho dy0+aHdxdWV1ZXNfYXJlYSk7Ci1kZXZfZXJyX2N0cmxfbWFwOgotCQluZnBfY3BwX2FyZWFfZnJl ZShody0+Y3RybF9hcmVhKTsKLQotCXJldHVybiBlcnI7Ci19Ci0KLSNkZWZpbmUgREVGQVVMVF9G V19QQVRIICAgICAgICIvbGliL2Zpcm13YXJlL25ldHJvbm9tZSIKLQotc3RhdGljIGludAotbmZw X2Z3X3VwbG9hZChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKmRldiwgc3RydWN0IG5mcF9uc3AgKm5z cCwgY2hhciAqY2FyZCkKLXsKLQlzdHJ1Y3QgbmZwX2NwcCAqY3BwID0gbnNwLT5jcHA7Ci0JaW50 IGZ3X2Y7Ci0JY2hhciAqZndfYnVmOwotCWNoYXIgZndfbmFtZVsxMjVdOwotCWNoYXIgc2VyaWFs WzQwXTsKLQlzdHJ1Y3Qgc3RhdCBmaWxlX3N0YXQ7Ci0Jb2ZmX3QgZnNpemUsIGJ5dGVzOwotCi0J LyogTG9va2luZyBmb3IgZmlybXdhcmUgZmlsZSBpbiBvcmRlciBvZiBwcmlvcml0eSAqLwotCi0J LyogRmlyc3QgdHJ5IHRvIGZpbmQgYSBmaXJtd2FyZSBpbWFnZSBzcGVjaWZpYyBmb3IgdGhpcyBk ZXZpY2UgKi8KLQlzbnByaW50ZihzZXJpYWwsIHNpemVvZihzZXJpYWwpLAotCQkJInNlcmlhbC0l MDJ4LSUwMngtJTAyeC0lMDJ4LSUwMngtJTAyeC0lMDJ4LSUwMngiLAotCQljcHAtPnNlcmlhbFsw XSwgY3BwLT5zZXJpYWxbMV0sIGNwcC0+c2VyaWFsWzJdLCBjcHAtPnNlcmlhbFszXSwKLQkJY3Bw LT5zZXJpYWxbNF0sIGNwcC0+c2VyaWFsWzVdLCBjcHAtPmludGVyZmFjZSA+PiA4LAotCQljcHAt PmludGVyZmFjZSAmIDB4ZmYpOwotCi0Jc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUp LCAiJXMvJXMubmZmdyIsIERFRkFVTFRfRldfUEFUSCwKLQkJCXNlcmlhbCk7Ci0KLQlQTURfRFJW X0xPRyhERUJVRywgIlRyeWluZyB3aXRoIGZ3IGZpbGU6ICVzIiwgZndfbmFtZSk7Ci0JZndfZiA9 IG9wZW4oZndfbmFtZSwgT19SRE9OTFkpOwotCWlmIChmd19mID49IDApCi0JCWdvdG8gcmVhZF9m dzsKLQotCS8qIFRoZW4gdHJ5IHRoZSBQQ0kgbmFtZSAqLwotCXNucHJpbnRmKGZ3X25hbWUsIHNp emVvZihmd19uYW1lKSwgIiVzL3BjaS0lcy5uZmZ3IiwgREVGQVVMVF9GV19QQVRILAotCQkJZGV2 LT5kZXZpY2UubmFtZSk7Ci0KLQlQTURfRFJWX0xPRyhERUJVRywgIlRyeWluZyB3aXRoIGZ3IGZp bGU6ICVzIiwgZndfbmFtZSk7Ci0JZndfZiA9IG9wZW4oZndfbmFtZSwgT19SRE9OTFkpOwotCWlm IChmd19mID49IDApCi0JCWdvdG8gcmVhZF9mdzsKLQotCS8qIEZpbmFsbHkgdHJ5IHRoZSBjYXJk IHR5cGUgYW5kIG1lZGlhICovCi0Jc25wcmludGYoZndfbmFtZSwgc2l6ZW9mKGZ3X25hbWUpLCAi JXMvJXMiLCBERUZBVUxUX0ZXX1BBVEgsIGNhcmQpOwotCVBNRF9EUlZfTE9HKERFQlVHLCAiVHJ5 aW5nIHdpdGggZncgZmlsZTogJXMiLCBmd19uYW1lKTsKLQlmd19mID0gb3Blbihmd19uYW1lLCBP X1JET05MWSk7Ci0JaWYgKGZ3X2YgPCAwKSB7Ci0JCVBNRF9EUlZfTE9HKElORk8sICJGaXJtd2Fy ZSBmaWxlICVzIG5vdCBmb3VuZC4iLCBmd19uYW1lKTsKLQkJcmV0dXJuIC1FTk9FTlQ7Ci0JfQot Ci1yZWFkX2Z3OgotCWlmIChmc3RhdChmd19mLCAmZmlsZV9zdGF0KSA8IDApIHsKLQkJUE1EX0RS Vl9MT0coSU5GTywgIkZpcm13YXJlIGZpbGUgJXMgc2l6ZSBpcyB1bmtub3duIiwgZndfbmFtZSk7 Ci0JCWNsb3NlKGZ3X2YpOwotCQlyZXR1cm4gLUVOT0VOVDsKLQl9Ci0KLQlmc2l6ZSA9IGZpbGVf c3RhdC5zdF9zaXplOwotCVBNRF9EUlZfTE9HKElORk8sICJGaXJtd2FyZSBmaWxlIGZvdW5kIGF0 ICVzIHdpdGggc2l6ZTogJSIgUFJJdTY0ICIiLAotCQkJICAgIGZ3X25hbWUsICh1aW50NjRfdClm c2l6ZSk7Ci0KLQlmd19idWYgPSBtYWxsb2MoKHNpemVfdClmc2l6ZSk7Ci0JaWYgKCFmd19idWYp IHsKLQkJUE1EX0RSVl9MT0coSU5GTywgIm1hbGxvYyBmYWlsZWQgZm9yIGZ3IGJ1ZmZlciIpOwot CQljbG9zZShmd19mKTsKLQkJcmV0dXJuIC1FTk9NRU07Ci0JfQotCW1lbXNldChmd19idWYsIDAs IGZzaXplKTsKLQotCWJ5dGVzID0gcmVhZChmd19mLCBmd19idWYsIGZzaXplKTsKLQlpZiAoYnl0 ZXMgIT0gZnNpemUpIHsKLQkJUE1EX0RSVl9MT0coSU5GTywgIlJlYWRpbmcgZncgdG8gYnVmZmVy IGZhaWxlZC4iCi0JCQkJICAgIkp1c3QgJSIgUFJJdTY0ICIgb2YgJSIgUFJJdTY0ICIgYnl0ZXMg cmVhZCIsCi0JCQkJICAgKHVpbnQ2NF90KWJ5dGVzLCAodWludDY0X3QpZnNpemUpOwotCQlmcmVl KGZ3X2J1Zik7Ci0JCWNsb3NlKGZ3X2YpOwotCQlyZXR1cm4gLUVJTzsKLQl9Ci0KLQlQTURfRFJW X0xPRyhJTkZPLCAiVXBsb2FkaW5nIHRoZSBmaXJtd2FyZSAuLi4iKTsKLQluZnBfbnNwX2xvYWRf ZncobnNwLCBmd19idWYsIGJ5dGVzKTsKLQlQTURfRFJWX0xPRyhJTkZPLCAiRG9uZSIpOwotCi0J ZnJlZShmd19idWYpOwotCWNsb3NlKGZ3X2YpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBp bnQKLW5mcF9md19zZXR1cChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKmRldiwgc3RydWN0IG5mcF9j cHAgKmNwcCwKLQkgICAgIHN0cnVjdCBuZnBfZXRoX3RhYmxlICpuZnBfZXRoX3RhYmxlLCBzdHJ1 Y3QgbmZwX2h3aW5mbyAqaHdpbmZvKQotewotCXN0cnVjdCBuZnBfbnNwICpuc3A7Ci0JY29uc3Qg Y2hhciAqbmZwX2Z3X21vZGVsOwotCWNoYXIgY2FyZF9kZXNjWzEwMF07Ci0JaW50IGVyciA9IDA7 Ci0KLQluZnBfZndfbW9kZWwgPSBuZnBfaHdpbmZvX2xvb2t1cChod2luZm8sICJhc3NlbWJseS5w YXJ0bm8iKTsKLQotCWlmIChuZnBfZndfbW9kZWwpIHsKLQkJUE1EX0RSVl9MT0coSU5GTywgImZp cm13YXJlIG1vZGVsIGZvdW5kOiAlcyIsIG5mcF9md19tb2RlbCk7Ci0JfSBlbHNlIHsKLQkJUE1E X0RSVl9MT0coRVJSLCAiZmlybXdhcmUgbW9kZWwgTk9UIGZvdW5kIik7Ci0JCXJldHVybiAtRUlP OwotCX0KLQotCWlmIChuZnBfZXRoX3RhYmxlLT5jb3VudCA9PSAwIHx8IG5mcF9ldGhfdGFibGUt PmNvdW50ID4gOCkgewotCQlQTURfRFJWX0xPRyhFUlIsICJORlAgZXRoZXJuZXQgdGFibGUgcmVw b3J0cyB3cm9uZyBwb3J0czogJXUiLAotCQkgICAgICAgbmZwX2V0aF90YWJsZS0+Y291bnQpOwot CQlyZXR1cm4gLUVJTzsKLQl9Ci0KLQlQTURfRFJWX0xPRyhJTkZPLCAiTkZQIGV0aGVybmV0IHBv cnQgdGFibGUgcmVwb3J0cyAldSBwb3J0cyIsCi0JCQkgICBuZnBfZXRoX3RhYmxlLT5jb3VudCk7 Ci0KLQlQTURfRFJWX0xPRyhJTkZPLCAiUG9ydCBzcGVlZDogJXUiLCBuZnBfZXRoX3RhYmxlLT5w b3J0c1swXS5zcGVlZCk7Ci0KLQlzbnByaW50ZihjYXJkX2Rlc2MsIHNpemVvZihjYXJkX2Rlc2Mp LCAibmljXyVzXyVkeCVkLm5mZnciLAotCQkJbmZwX2Z3X21vZGVsLCBuZnBfZXRoX3RhYmxlLT5j b3VudCwKLQkJCW5mcF9ldGhfdGFibGUtPnBvcnRzWzBdLnNwZWVkIC8gMTAwMCk7Ci0KLQluc3Ag PSBuZnBfbnNwX29wZW4oY3BwKTsKLQlpZiAoIW5zcCkgewotCQlQTURfRFJWX0xPRyhFUlIsICJO RlAgZXJyb3Igd2hlbiBvYnRhaW5pbmcgTlNQIGhhbmRsZSIpOwotCQlyZXR1cm4gLUVJTzsKLQl9 Ci0KLQluZnBfbnNwX2RldmljZV9zb2Z0X3Jlc2V0KG5zcCk7Ci0JZXJyID0gbmZwX2Z3X3VwbG9h ZChkZXYsIG5zcCwgY2FyZF9kZXNjKTsKLQotCW5mcF9uc3BfY2xvc2UobnNwKTsKLQlyZXR1cm4g ZXJyOwotfQotCi1zdGF0aWMgaW50IG5mcF9pbml0X3BoeXBvcnRzKHN0cnVjdCBuZnBfcGZfZGV2 ICpwZl9kZXYpCi17Ci0Jc3RydWN0IG5mcF9uZXRfaHcgKmh3OwotCXN0cnVjdCBydGVfZXRoX2Rl diAqZXRoX2RldjsKLQlzdHJ1Y3QgbmZwX2V0aF90YWJsZSAqbmZwX2V0aF90YWJsZSA9IE5VTEw7 Ci0JaW50IHJldCA9IDA7Ci0JaW50IGk7Ci0KLQluZnBfZXRoX3RhYmxlID0gbmZwX2V0aF9yZWFk X3BvcnRzKHBmX2Rldi0+Y3BwKTsKLQlpZiAoIW5mcF9ldGhfdGFibGUpIHsKLQkJUE1EX0lOSVRf TE9HKEVSUiwgIkVycm9yIHJlYWRpbmcgTkZQIGV0aGVybmV0IHRhYmxlIik7Ci0JCXJldCA9IC1F SU87Ci0JCWdvdG8gZXJyb3I7Ci0JfQotCi0JLyogTG9vcCB0aHJvdWdoIGFsbCBwaHlzaWNhbCBw b3J0cyBvbiBQRiAqLwotCWZvciAoaSA9IDA7IGkgPCBwZl9kZXYtPnRvdGFsX3BoeXBvcnRzOyBp KyspIHsKLQkJY29uc3QgdW5zaWduZWQgaW50IG51bWFfbm9kZSA9IHJ0ZV9zb2NrZXRfaWQoKTsK LQkJY2hhciBwb3J0X25hbWVbUlRFX0VUSF9OQU1FX01BWF9MRU5dOwotCi0JCXNucHJpbnRmKHBv cnRfbmFtZSwgc2l6ZW9mKHBvcnRfbmFtZSksICIlc19wb3J0JWQiLAotCQkJIHBmX2Rldi0+cGNp X2Rldi0+ZGV2aWNlLm5hbWUsIGkpOwotCi0JCS8qIEFsbG9jYXRlIGEgZXRoX2RldiBmb3IgdGhp cyBwaHlwb3J0ICovCi0JCWV0aF9kZXYgPSBydGVfZXRoX2Rldl9hbGxvY2F0ZShwb3J0X25hbWUp OwotCQlpZiAoIWV0aF9kZXYpIHsKLQkJCXJldCA9IC1FTk9ERVY7Ci0JCQlnb3RvIHBvcnRfY2xl YW51cDsKLQkJfQotCi0JCS8qIEFsbG9jYXRlIG1lbW9yeSBmb3IgdGhpcyBwaHlwb3J0ICovCi0J CWV0aF9kZXYtPmRhdGEtPmRldl9wcml2YXRlID0KLQkJCXJ0ZV96bWFsbG9jX3NvY2tldChwb3J0 X25hbWUsIHNpemVvZihzdHJ1Y3QgbmZwX25ldF9odyksCi0JCQkJCSAgIFJURV9DQUNIRV9MSU5F X1NJWkUsIG51bWFfbm9kZSk7Ci0JCWlmICghZXRoX2Rldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpIHsK LQkJCXJldCA9IC1FTk9NRU07Ci0JCQlydGVfZXRoX2Rldl9yZWxlYXNlX3BvcnQoZXRoX2Rldik7 Ci0JCQlnb3RvIHBvcnRfY2xlYW51cDsKLQkJfQotCi0JCWh3ID0gTkZQX05FVF9ERVZfUFJJVkFU RV9UT19IVyhldGhfZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSk7Ci0KLQkJLyogQWRkIHRoaXMgZGV2 aWNlIHRvIHRoZSBQRidzIGFycmF5IG9mIHBoeXNpY2FsIHBvcnRzICovCi0JCXBmX2Rldi0+cG9y dHNbaV0gPSBodzsKLQotCQlody0+cGZfZGV2ID0gcGZfZGV2OwotCQlody0+Y3BwID0gcGZfZGV2 LT5jcHA7Ci0JCWh3LT5ldGhfZGV2ID0gZXRoX2RldjsKLQkJaHctPmlkeCA9IGk7Ci0JCWh3LT5u ZnBfaWR4ID0gbmZwX2V0aF90YWJsZS0+cG9ydHNbaV0uaW5kZXg7Ci0JCWh3LT5pc19waHlwb3J0 ID0gdHJ1ZTsKLQotCQlldGhfZGV2LT5kZXZpY2UgPSAmcGZfZGV2LT5wY2lfZGV2LT5kZXZpY2U7 Ci0KLQkJLyogY3RybC90eC9yeCBCQVIgbWFwcGluZ3MgYW5kIHJlbWFpbmluZyBpbml0IGhhcHBl bnMgaW4KLQkJICogbmZwX25ldF9pbml0Ci0JCSAqLwotCQlyZXQgPSBuZnBfbmV0X2luaXQoZXRo X2Rldik7Ci0KLQkJaWYgKHJldCkgewotCQkJcmV0ID0gLUVOT0RFVjsKLQkJCWdvdG8gcG9ydF9j bGVhbnVwOwotCQl9Ci0KLQkJcnRlX2V0aF9kZXZfcHJvYmluZ19maW5pc2goZXRoX2Rldik7Ci0K LQl9IC8qIEVuZCBsb29wLCBhbGwgcG9ydHMgb24gdGhpcyBQRiAqLwotCXJldCA9IDA7Ci0JZ290 byBldGhfdGFibGVfY2xlYW51cDsKLQotcG9ydF9jbGVhbnVwOgotCWZvciAoaSA9IDA7IGkgPCBw Zl9kZXYtPnRvdGFsX3BoeXBvcnRzOyBpKyspIHsKLQkJaWYgKHBmX2Rldi0+cG9ydHNbaV0gJiYg cGZfZGV2LT5wb3J0c1tpXS0+ZXRoX2RldikgewotCQkJc3RydWN0IHJ0ZV9ldGhfZGV2ICp0bXBf ZGV2OwotCQkJdG1wX2RldiA9IHBmX2Rldi0+cG9ydHNbaV0tPmV0aF9kZXY7Ci0JCQlydGVfZXRo X2Rldl9yZWxlYXNlX3BvcnQodG1wX2Rldik7Ci0JCQlwZl9kZXYtPnBvcnRzW2ldID0gTlVMTDsK LQkJfQotCX0KLWV0aF90YWJsZV9jbGVhbnVwOgotCWZyZWUobmZwX2V0aF90YWJsZSk7Ci1lcnJv cjoKLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgaW50IG5mcF9wZl9pbml0KHN0cnVjdCBydGVf cGNpX2RldmljZSAqcGNpX2RldikKLXsKLQlzdHJ1Y3QgbmZwX3BmX2RldiAqcGZfZGV2ID0gTlVM TDsKLQlzdHJ1Y3QgbmZwX2NwcCAqY3BwOwotCXN0cnVjdCBuZnBfaHdpbmZvICpod2luZm87Ci0J c3RydWN0IG5mcF9ydHN5bV90YWJsZSAqc3ltX3RibDsKLQlzdHJ1Y3QgbmZwX2V0aF90YWJsZSAq bmZwX2V0aF90YWJsZSA9IE5VTEw7Ci0JY2hhciBuYW1lW1JURV9FVEhfTkFNRV9NQVhfTEVOXTsK LQlpbnQgdG90YWxfcG9ydHM7Ci0JaW50IHJldCA9IC1FTk9ERVY7Ci0JaW50IGVycjsKLQotCWlm ICghcGNpX2RldikKLQkJcmV0dXJuIHJldDsKLQotCS8qCi0JICogV2hlbiBkZXZpY2UgYm91bmQg dG8gVUlPLCB0aGUgZGV2aWNlIGNvdWxkIGJlIHVzZWQsIGJ5IG1pc3Rha2UsCi0JICogYnkgdHdv IERQREsgYXBwcywgYW5kIHRoZSBVSU8gZHJpdmVyIGRvZXMgbm90IGF2b2lkIGl0LiBUaGlzCi0J ICogY291bGQgbGVhZCB0byBhIHNlcmlvdXMgcHJvYmxlbSB3aGVuIGNvbmZpZ3VyaW5nIHRoZSBO RlAgQ1BQCi0JICogaW50ZXJmYWNlLiBIZXJlIHdlIGF2b2lkIHRoaXMgdGVsbGluZyB0byB0aGUg Q1BQIGluaXQgY29kZSB0bwotCSAqIHVzZSBhIGxvY2sgZmlsZSBpZiBVSU8gaXMgYmVpbmcgdXNl ZC4KLQkgKi8KLQlpZiAocGNpX2Rldi0+a2RydiA9PSBSVEVfUENJX0tEUlZfVkZJTykKLQkJY3Bw ID0gbmZwX2NwcF9mcm9tX2RldmljZV9uYW1lKHBjaV9kZXYsIDApOwotCWVsc2UKLQkJY3BwID0g bmZwX2NwcF9mcm9tX2RldmljZV9uYW1lKHBjaV9kZXYsIDEpOwotCi0JaWYgKCFjcHApIHsKLQkJ UE1EX0lOSVRfTE9HKEVSUiwgIkEgQ1BQIGhhbmRsZSBjYW4gbm90IGJlIG9idGFpbmVkIik7Ci0J CXJldCA9IC1FSU87Ci0JCWdvdG8gZXJyb3I7Ci0JfQotCi0JaHdpbmZvID0gbmZwX2h3aW5mb19y ZWFkKGNwcCk7Ci0JaWYgKCFod2luZm8pIHsKLQkJUE1EX0lOSVRfTE9HKEVSUiwgIkVycm9yIHJl YWRpbmcgaHdpbmZvIHRhYmxlIik7Ci0JCXJldCA9IC1FSU87Ci0JCWdvdG8gZXJyb3I7Ci0JfQot Ci0JbmZwX2V0aF90YWJsZSA9IG5mcF9ldGhfcmVhZF9wb3J0cyhjcHApOwotCWlmICghbmZwX2V0 aF90YWJsZSkgewotCQlQTURfSU5JVF9MT0coRVJSLCAiRXJyb3IgcmVhZGluZyBORlAgZXRoZXJu ZXQgdGFibGUiKTsKLQkJcmV0ID0gLUVJTzsKLQkJZ290byBod2luZm9fY2xlYW51cDsKLQl9Ci0K LQlpZiAobmZwX2Z3X3NldHVwKHBjaV9kZXYsIGNwcCwgbmZwX2V0aF90YWJsZSwgaHdpbmZvKSkg ewotCQlQTURfSU5JVF9MT0coRVJSLCAiRXJyb3Igd2hlbiB1cGxvYWRpbmcgZmlybXdhcmUiKTsK LQkJcmV0ID0gLUVJTzsKLQkJZ290byBldGhfdGFibGVfY2xlYW51cDsKLQl9Ci0KLQkvKiBOb3cg dGhlIHN5bWJvbCB0YWJsZSBzaG91bGQgYmUgdGhlcmUgKi8KLQlzeW1fdGJsID0gbmZwX3J0c3lt X3RhYmxlX3JlYWQoY3BwKTsKLQlpZiAoIXN5bV90YmwpIHsKLQkJUE1EX0lOSVRfTE9HKEVSUiwg IlNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBmaXJtd2FyZSIKLQkJCQkiIHN5bWJvbCB0YWJs ZSIpOwotCQlyZXQgPSAtRUlPOwotCQlnb3RvIGV0aF90YWJsZV9jbGVhbnVwOwotCX0KLQotCXRv dGFsX3BvcnRzID0gbmZwX3J0c3ltX3JlYWRfbGUoc3ltX3RibCwgIm5mZF9jZmdfcGYwX251bV9w b3J0cyIsICZlcnIpOwotCWlmICh0b3RhbF9wb3J0cyAhPSAoaW50KW5mcF9ldGhfdGFibGUtPmNv dW50KSB7Ci0JCVBNRF9EUlZfTE9HKEVSUiwgIkluY29uc2lzdGVudCBudW1iZXIgb2YgcG9ydHMi KTsKLQkJcmV0ID0gLUVJTzsKLQkJZ290byBzeW1fdGJsX2NsZWFudXA7Ci0JfQotCi0JUE1EX0lO SVRfTE9HKElORk8sICJUb3RhbCBwaHlzaWNhbCBwb3J0czogJWQiLCB0b3RhbF9wb3J0cyk7Ci0K LQlpZiAodG90YWxfcG9ydHMgPD0gMCB8fCB0b3RhbF9wb3J0cyA+IDgpIHsKLQkJUE1EX0lOSVRf TE9HKEVSUiwgIm5mZF9jZmdfcGYwX251bV9wb3J0cyBzeW1ib2wgd2l0aCB3cm9uZyB2YWx1ZSIp OwotCQlyZXQgPSAtRU5PREVWOwotCQlnb3RvIHN5bV90YmxfY2xlYW51cDsKLQl9Ci0JLyogQWxs b2NhdGUgbWVtb3J5IGZvciB0aGUgUEYgImRldmljZSIgKi8KLQlzbnByaW50ZihuYW1lLCBzaXpl b2YobmFtZSksICJuZnBfcGYlZCIsIDApOwotCXBmX2RldiA9IHJ0ZV96bWFsbG9jKG5hbWUsIHNp emVvZigqcGZfZGV2KSwgMCk7Ci0JaWYgKCFwZl9kZXYpIHsKLQkJcmV0ID0gLUVOT01FTTsKLQkJ Z290byBzeW1fdGJsX2NsZWFudXA7Ci0JfQotCi0JLyogUG9wdWxhdGUgdGhlIG5ld2x5IGNyZWF0 ZWQgUEYgZGV2aWNlICovCi0JcGZfZGV2LT5jcHAgPSBjcHA7Ci0JcGZfZGV2LT5od2luZm8gPSBo d2luZm87Ci0JcGZfZGV2LT5zeW1fdGJsID0gc3ltX3RibDsKLQlwZl9kZXYtPnRvdGFsX3BoeXBv cnRzID0gdG90YWxfcG9ydHM7Ci0KLQlpZiAodG90YWxfcG9ydHMgPiAxKQotCQlwZl9kZXYtPm11 bHRpcG9ydCA9IHRydWU7Ci0KLQlwZl9kZXYtPnBjaV9kZXYgPSBwY2lfZGV2OwotCi0JLyogTWFw IHRoZSBzeW1ib2wgdGFibGUgKi8KLQlwZl9kZXYtPmN0cmxfYmFyID0gbmZwX3J0c3ltX21hcChw Zl9kZXYtPnN5bV90YmwsICJfcGYwX25ldF9iYXIwIiwKLQkJCQkgICAgIHBmX2Rldi0+dG90YWxf cGh5cG9ydHMgKiAzMjc2OCwKLQkJCQkgICAgICZwZl9kZXYtPmN0cmxfYXJlYSk7Ci0JaWYgKCFw Zl9kZXYtPmN0cmxfYmFyKSB7Ci0JCVBNRF9JTklUX0xPRyhFUlIsICJuZnBfcnRzeW1fbWFwIGZh aWxzIGZvciBfcGYwX25ldF9jdHJsX2JhciIpOwotCQlyZXQgPSAtRUlPOwotCQlnb3RvIHBmX2Ns ZWFudXA7Ci0JfQotCi0JUE1EX0lOSVRfTE9HKERFQlVHLCAiY3RybCBiYXI6ICVwIiwgcGZfZGV2 LT5jdHJsX2Jhcik7Ci0KLQkvKiBjb25maWd1cmUgYWNjZXNzIHRvIHR4L3J4IHZOSUMgQkFScyAq LwotCXBmX2Rldi0+aHdfcXVldWVzID0gbmZwX2NwcF9tYXBfYXJlYShwZl9kZXYtPmNwcCwgMCwg MCwKLQkJCQkJICAgICAgTkZQX1BDSUVfUVVFVUUoMCksCi0JCQkJCSAgICAgIE5GUF9RQ1BfUVVF VUVfQVJFQV9TWiwKLQkJCQkJICAgICAgJnBmX2Rldi0+aHdxdWV1ZXNfYXJlYSk7Ci0JaWYgKCFw Zl9kZXYtPmh3X3F1ZXVlcykgewotCQlQTURfSU5JVF9MT0coRVJSLCAibmZwX3J0c3ltX21hcCBm YWlscyBmb3IgbmV0LnFjIik7Ci0JCXJldCA9IC1FSU87Ci0JCWdvdG8gY3RybF9hcmVhX2NsZWFu dXA7Ci0JfQotCi0JUE1EX0lOSVRfTE9HKERFQlVHLCAidHgvcnggYmFyIGFkZHJlc3M6IDB4JXAi LCBwZl9kZXYtPmh3X3F1ZXVlcyk7Ci0KLQkvKiBJbml0aWFsaXplIGFuZCBwcmVwIHBoeXNpY2Fs IHBvcnRzIG5vdwotCSAqIFRoaXMgd2lsbCBsb29wIHRocm91Z2ggYWxsIHBoeXNpY2FsIHBvcnRz Ci0JICovCi0JcmV0ID0gbmZwX2luaXRfcGh5cG9ydHMocGZfZGV2KTsKLQlpZiAocmV0KSB7Ci0J CVBNRF9JTklUX0xPRyhFUlIsICJDb3VsZCBub3QgY3JlYXRlIHBoeXNpY2FsIHBvcnRzIik7Ci0J CWdvdG8gaHdxdWV1ZXNfY2xlYW51cDsKLQl9Ci0KLQkvKiByZWdpc3RlciB0aGUgQ1BQIGJyaWRn ZSBzZXJ2aWNlIGhlcmUgZm9yIHByaW1hcnkgdXNlICovCi0JbmZwX3JlZ2lzdGVyX2NwcF9zZXJ2 aWNlKHBmX2Rldi0+Y3BwKTsKLQotCXJldHVybiAwOwotCi1od3F1ZXVlc19jbGVhbnVwOgotCW5m cF9jcHBfYXJlYV9mcmVlKHBmX2Rldi0+aHdxdWV1ZXNfYXJlYSk7Ci1jdHJsX2FyZWFfY2xlYW51 cDoKLQluZnBfY3BwX2FyZWFfZnJlZShwZl9kZXYtPmN0cmxfYXJlYSk7Ci1wZl9jbGVhbnVwOgot CXJ0ZV9mcmVlKHBmX2Rldik7Ci1zeW1fdGJsX2NsZWFudXA6Ci0JZnJlZShzeW1fdGJsKTsKLWV0 aF90YWJsZV9jbGVhbnVwOgotCWZyZWUobmZwX2V0aF90YWJsZSk7Ci1od2luZm9fY2xlYW51cDoK LQlmcmVlKGh3aW5mbyk7Ci1lcnJvcjoKLQlyZXR1cm4gcmV0OwotfQotCi0vKgotICogV2hlbiBh dHRhY2hpbmcgdG8gdGhlIE5GUDQwMDAvNjAwMCBQRiBvbiBhIHNlY29uZGFyeSBwcm9jZXNzIHRo ZXJlCi0gKiBpcyBubyBuZWVkIHRvIGluaXRpYWxpemUgdGhlIFBGIGFnYWluLiBPbmx5IG1pbmlt YWwgd29yayBpcyByZXF1aXJlZAotICogaGVyZQotICovCi1zdGF0aWMgaW50IG5mcF9wZl9zZWNv bmRhcnlfaW5pdChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYpCi17Ci0Jc3RydWN0IG5m cF9jcHAgKmNwcDsKLQlzdHJ1Y3QgbmZwX3J0c3ltX3RhYmxlICpzeW1fdGJsOwotCWludCB0b3Rh bF9wb3J0czsKLQlpbnQgaTsKLQlpbnQgZXJyOwotCi0JaWYgKCFwY2lfZGV2KQotCQlyZXR1cm4g LUVOT0RFVjsKLQotCS8qCi0JICogV2hlbiBkZXZpY2UgYm91bmQgdG8gVUlPLCB0aGUgZGV2aWNl IGNvdWxkIGJlIHVzZWQsIGJ5IG1pc3Rha2UsCi0JICogYnkgdHdvIERQREsgYXBwcywgYW5kIHRo ZSBVSU8gZHJpdmVyIGRvZXMgbm90IGF2b2lkIGl0LiBUaGlzCi0JICogY291bGQgbGVhZCB0byBh IHNlcmlvdXMgcHJvYmxlbSB3aGVuIGNvbmZpZ3VyaW5nIHRoZSBORlAgQ1BQCi0JICogaW50ZXJm YWNlLiBIZXJlIHdlIGF2b2lkIHRoaXMgdGVsbGluZyB0byB0aGUgQ1BQIGluaXQgY29kZSB0bwot CSAqIHVzZSBhIGxvY2sgZmlsZSBpZiBVSU8gaXMgYmVpbmcgdXNlZC4KLQkgKi8KLQlpZiAocGNp X2Rldi0+a2RydiA9PSBSVEVfUENJX0tEUlZfVkZJTykKLQkJY3BwID0gbmZwX2NwcF9mcm9tX2Rl dmljZV9uYW1lKHBjaV9kZXYsIDApOwotCWVsc2UKLQkJY3BwID0gbmZwX2NwcF9mcm9tX2Rldmlj ZV9uYW1lKHBjaV9kZXYsIDEpOwotCi0JaWYgKCFjcHApIHsKLQkJUE1EX0lOSVRfTE9HKEVSUiwg IkEgQ1BQIGhhbmRsZSBjYW4gbm90IGJlIG9idGFpbmVkIik7Ci0JCXJldHVybiAtRUlPOwotCX0K LQotCS8qCi0JICogV2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIFBGIGNyZWF0ZWQgaW4gdGhl IHByaW1hcnkgcHJvY2VzcwotCSAqIGhlcmUgc28gd2UgaGF2ZSB0byByZWFkIHRoZSBudW1iZXIg b2YgcG9ydHMgZnJvbSBmaXJtd2FyZQotCSAqLwotCXN5bV90YmwgPSBuZnBfcnRzeW1fdGFibGVf cmVhZChjcHApOwotCWlmICghc3ltX3RibCkgewotCQlQTURfSU5JVF9MT0coRVJSLCAiU29tZXRo aW5nIGlzIHdyb25nIHdpdGggdGhlIGZpcm13YXJlIgotCQkJCSIgc3ltYm9sIHRhYmxlIik7Ci0J CXJldHVybiAtRUlPOwotCX0KLQotCXRvdGFsX3BvcnRzID0gbmZwX3J0c3ltX3JlYWRfbGUoc3lt X3RibCwgIm5mZF9jZmdfcGYwX251bV9wb3J0cyIsICZlcnIpOwotCi0JZm9yIChpID0gMDsgaSA8 IHRvdGFsX3BvcnRzOyBpKyspIHsKLQkJc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2OwotCQlj aGFyIHBvcnRfbmFtZVtSVEVfRVRIX05BTUVfTUFYX0xFTl07Ci0KLQkJc25wcmludGYocG9ydF9u YW1lLCBzaXplb2YocG9ydF9uYW1lKSwgIiVzX3BvcnQlZCIsCi0JCQkgcGNpX2Rldi0+ZGV2aWNl Lm5hbWUsIGkpOwotCi0JCVBNRF9EUlZfTE9HKERFQlVHLCAiU2Vjb25kYXJ5IGF0dGFjaGluZyB0 byBwb3J0ICVzIiwKLQkJICAgIHBvcnRfbmFtZSk7Ci0JCWV0aF9kZXYgPSBydGVfZXRoX2Rldl9h dHRhY2hfc2Vjb25kYXJ5KHBvcnRfbmFtZSk7Ci0JCWlmICghZXRoX2RldikgewotCQkJUlRFX0xP RyhFUlIsIEVBTCwKLQkJCSJzZWNvbmRhcnkgcHJvY2VzcyBhdHRhY2ggZmFpbGVkLCAiCi0JCQki ZXRoZGV2IGRvZXNuJ3QgZXhpc3QiKTsKLQkJCXJldHVybiAtRU5PREVWOwotCQl9Ci0JCWV0aF9k ZXYtPnByb2Nlc3NfcHJpdmF0ZSA9IGNwcDsKLQkJZXRoX2Rldi0+ZGV2X29wcyA9ICZuZnBfbmV0 X2V0aF9kZXZfb3BzOwotCQlldGhfZGV2LT5yeF9xdWV1ZV9jb3VudCA9IG5mcF9uZXRfcnhfcXVl dWVfY291bnQ7Ci0JCWV0aF9kZXYtPnJ4X3BrdF9idXJzdCA9ICZuZnBfbmV0X3JlY3ZfcGt0czsK LQkJZXRoX2Rldi0+dHhfcGt0X2J1cnN0ID0gJm5mcF9uZXRfeG1pdF9wa3RzOwotCQlydGVfZXRo X2Rldl9wcm9iaW5nX2ZpbmlzaChldGhfZGV2KTsKLQl9Ci0KLQkvKiBSZWdpc3RlciB0aGUgQ1BQ IGJyaWRnZSBzZXJ2aWNlIGZvciB0aGUgc2Vjb25kYXJ5IHRvbyAqLwotCW5mcF9yZWdpc3Rlcl9j cHBfc2VydmljZShjcHApOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgbmZwX3BmX3Bj aV9wcm9iZShzdHJ1Y3QgcnRlX3BjaV9kcml2ZXIgKnBjaV9kcnYgX19ydGVfdW51c2VkLAotCQkJ ICAgIHN0cnVjdCBydGVfcGNpX2RldmljZSAqZGV2KQotewotCWlmIChydGVfZWFsX3Byb2Nlc3Nf dHlwZSgpID09IFJURV9QUk9DX1BSSU1BUlkpCi0JCXJldHVybiBuZnBfcGZfaW5pdChkZXYpOwot CWVsc2UKLQkJcmV0dXJuIG5mcF9wZl9zZWNvbmRhcnlfaW5pdChkZXYpOwotfQotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IHJ0ZV9wY2lfaWQgcGNpX2lkX25mcF9wZl9uZXRfbWFwW10gPSB7Ci0Jewot CQlSVEVfUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX05FVFJPTk9NRSwKLQkJCSAgICAgICBQQ0lf REVWSUNFX0lEX05GUDQwMDBfUEZfTklDKQotCX0sCi0JewotCQlSVEVfUENJX0RFVklDRShQQ0lf VkVORE9SX0lEX05FVFJPTk9NRSwKLQkJCSAgICAgICBQQ0lfREVWSUNFX0lEX05GUDYwMDBfUEZf TklDKQotCX0sCi0JewotCQkudmVuZG9yX2lkID0gMCwKLQl9LAotfTsKLQotc3RhdGljIGludCBu ZnBfcGNpX3VuaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpCi17Ci0Jc3RydWN0IHJ0 ZV9wY2lfZGV2aWNlICpwY2lfZGV2OwotCXVpbnQxNl90IHBvcnRfaWQ7Ci0KLQlwY2lfZGV2ID0g UlRFX0VUSF9ERVZfVE9fUENJKGV0aF9kZXYpOwotCi0JaWYgKHBjaV9kZXYtPmlkLmRldmljZV9p ZCA9PSBQQ0lfREVWSUNFX0lEX05GUDQwMDBfUEZfTklDIHx8Ci0JICAgIHBjaV9kZXYtPmlkLmRl dmljZV9pZCA9PSBQQ0lfREVWSUNFX0lEX05GUDYwMDBfUEZfTklDKSB7Ci0JCS8qIEZyZWUgdXAg YWxsIHBoeXNpY2FsIHBvcnRzIHVuZGVyIFBGICovCi0JCVJURV9FVEhfRk9SRUFDSF9ERVZfT0Yo cG9ydF9pZCwgJnBjaV9kZXYtPmRldmljZSkKLQkJCXJ0ZV9ldGhfZGV2X2Nsb3NlKHBvcnRfaWQp OwotCQkvKgotCQkgKiBQb3J0cyBjYW4gYmUgY2xvc2VkIGFuZCBmcmVlZCBidXQgaG90cGx1Z2dp bmcgaXMgbm90Ci0JCSAqIGN1cnJlbnRseSBzdXBwb3J0ZWQKLQkJICovCi0JCXJldHVybiAtRU5P VFNVUDsKLQl9Ci0KLQkvKiBWRiBjbGVhbnVwLCBqdXN0IGZyZWUgcHJpdmF0ZSBwb3J0IGRhdGEg Ki8KLQlyZXR1cm4gbmZwX25ldF9jbG9zZShldGhfZGV2KTsKLX0KLQotc3RhdGljIGludCBldGhf bmZwX3BjaV9yZW1vdmUoc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2KQotewotCXJldHVy biBydGVfZXRoX2Rldl9wY2lfZ2VuZXJpY19yZW1vdmUocGNpX2RldiwgbmZwX3BjaV91bmluaXQp OwotfQotCi1zdGF0aWMgc3RydWN0IHJ0ZV9wY2lfZHJpdmVyIHJ0ZV9uZnBfbmV0X3BmX3BtZCA9 IHsKLQkuaWRfdGFibGUgPSBwY2lfaWRfbmZwX3BmX25ldF9tYXAsCi0JLmRydl9mbGFncyA9IFJU RV9QQ0lfRFJWX05FRURfTUFQUElORyB8IFJURV9QQ0lfRFJWX0lOVFJfTFNDLAotCS5wcm9iZSA9 IG5mcF9wZl9wY2lfcHJvYmUsCi0JLnJlbW92ZSA9IGV0aF9uZnBfcGNpX3JlbW92ZSwKLX07Ci0K LVJURV9QTURfUkVHSVNURVJfUENJKG5ldF9uZnBfcGYsIHJ0ZV9uZnBfbmV0X3BmX3BtZCk7Ci1S VEVfUE1EX1JFR0lTVEVSX1BDSV9UQUJMRShuZXRfbmZwX3BmLCBwY2lfaWRfbmZwX3BmX25ldF9t YXApOwotUlRFX1BNRF9SRUdJU1RFUl9LTU9EX0RFUChuZXRfbmZwX3BmLCAiKiBpZ2JfdWlvIHwg dWlvX3BjaV9nZW5lcmljIHwgdmZpbyIpOwogUlRFX0xPR19SRUdJU1RFUl9TVUZGSVgobmZwX2xv Z3R5cGVfaW5pdCwgaW5pdCwgTk9USUNFKTsKIFJURV9MT0dfUkVHSVNURVJfU1VGRklYKG5mcF9s b2d0eXBlX2RyaXZlciwgZHJpdmVyLCBOT1RJQ0UpOwogLyoKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVy cy9uZXQvbmZwL21lc29uLmJ1aWxkLi4uCmVycm9yOiBkcml2ZXJzL25ldC9uZnAvbWVzb24uYnVp bGQ6IGRvZXMgbm90IG1hdGNoIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L25mcC9u ZnBfbmV0LmMgPT4gZHJpdmVycy9uZXQvbmZwL25mcF9jb21tb24uYy4uLgplcnJvcjogZHJpdmVy cy9uZXQvbmZwL25mcF9uZXQuYzogZG9lcyBub3QgbWF0Y2ggaW5kZXgKQ2hlY2tpbmcgcGF0Y2gg ZHJpdmVycy9uZXQvbmZwL25mcF9uZXRfcG1kLmggPT4gZHJpdmVycy9uZXQvbmZwL25mcF9jb21t b24uaC4uLgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2NwcF9icmlkZ2UuYy4u LgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX25ldF9jdHJsLmggPT4gZHJpdmVy cy9uZXQvbmZwL25mcF9jdHJsLmguLi4KQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25m cF9ldGhkZXYuYy4uLgplcnJvcjogZHJpdmVycy9uZXQvbmZwL25mcF9ldGhkZXYuYzogZG9lcyBu b3QgZXhpc3QgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9ldGhk ZXZfdmYuYy4uLgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX25ldF9sb2dzLmgg PT4gZHJpdmVycy9uZXQvbmZwL25mcF9sb2dzLmguLi4KQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9u ZXQvbmZwL25mcF9yeHR4LmMuLi4KQXBwbGllZCBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX25l dF9wbWQuaCA9PiBkcml2ZXJzL25ldC9uZnAvbmZwX2NvbW1vbi5oIGNsZWFubHkuCkFwcGxpZWQg cGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9jcHBfYnJpZGdlLmMgY2xlYW5seS4KQXBwbGllZCBw YXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX25ldF9jdHJsLmggPT4gZHJpdmVycy9uZXQvbmZwL25m cF9jdHJsLmggY2xlYW5seS4KQXBwbGllZCBwYXRjaCBkcml2ZXJzL25ldC9uZnAvbmZwX2V0aGRl dl92Zi5jIGNsZWFubHkuCkFwcGxpZWQgcGF0Y2ggZHJpdmVycy9uZXQvbmZwL25mcF9uZXRfbG9n cy5oID0+IGRyaXZlcnMvbmV0L25mcC9uZnBfbG9ncy5oIGNsZWFubHkuCkFwcGxpZWQgcGF0Y2gg ZHJpdmVycy9uZXQvbmZwL25mcF9yeHR4LmMgY2xlYW5seS4KCmh0dHBzOi8vbGFiLmRwZGsub3Jn L3Jlc3VsdHMvZGFzaGJvYXJkL3BhdGNoc2V0cy8xNzg1Mi8KClVOSC1JT0wgRFBESyBDb21tdW5p dHkgTGFiCg== --===============3990283549962623834==--