From owner-freebsd-current@freebsd.org Sat Jul 30 06:14:00 2016 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 121D9BA8DF1 for ; Sat, 30 Jul 2016 06:14:00 +0000 (UTC) (envelope-from dnelson_1901@yahoo.com) Received: from nm36-vm9.bullet.mail.gq1.yahoo.com (nm36-vm9.bullet.mail.gq1.yahoo.com [98.136.216.170]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CEA0311DE for ; Sat, 30 Jul 2016 06:13:59 +0000 (UTC) (envelope-from dnelson_1901@yahoo.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1469859233; bh=3M2SpQjIb7fI2mWbQ7scpE8K7/OGZl1Uqio31d9om6o=; h=Date:From:Reply-To:To:Subject:References:From:Subject; b=LhIrE2QyHjmtM37D7q1tgZihZlVXhmqa9IgHZ18N5abfWYpGDp1qtR+JvKRFDtYeTOxofxmhjxz2dXTutkEnvefyobEYchJ3nJfQFFxTigydTfEe9wlFDNXlPRhGToTZjg+4IWN4LRz3LFP79v9YtHmVYEq+D9ynsHorlZpy8j2nKLDG6KLx9x0ePLvr4Du8lZ6RW187FndhF9OvOs5QbnazRbVnJb4wzhSFLfM23prGhKYaLtl8oclIyJGcp2vw1BAOkpIEjZtoIarJJYt7tDZSY3AViDT3NA693Rv576CVzpwQ80yx3dNUXhSmE36I+E97mWhF4XYSWuQFUWOF1Q== Received: from [127.0.0.1] by nm36.bullet.mail.gq1.yahoo.com with NNFMP; 30 Jul 2016 06:13:53 -0000 Received: from [98.137.12.57] by nm36.bullet.mail.gq1.yahoo.com with NNFMP; 30 Jul 2016 06:11:04 -0000 Received: from [98.137.12.222] by tm2.bullet.mail.gq1.yahoo.com with NNFMP; 30 Jul 2016 06:11:04 -0000 Received: from [127.0.0.1] by omp1030.mail.gq1.yahoo.com with NNFMP; 30 Jul 2016 06:11:04 -0000 X-Yahoo-Newman-Property: ymail-4 X-Yahoo-Newman-Id: 202770.6320.bm@omp1030.mail.gq1.yahoo.com X-YMail-OSG: isCAG2kVM1mm.yBGULmaD8kMsohZz6KtwPl4L_4g3lNDzGkJR1YpyUKjyifczLD nfxmLaEMCZn8Y0zepzImYeDGEWstKo9UQ7_we6OGlQ_hMCHM9ROBwyG3lIvAgyZfm0v1LUKKQzOk v1VBYZKzfjplJxaJasarG1Ki36fBmxD23._dMCA9wMRqpRwzThWFiw16YSakHNzlCQqg0duAXwZ_ UQ3m.TA7S3YO01HLDckLmbIvjNZp_GZJ_jNPkslARlYaEkcQZ31c2MASf646ytxD1rSVaGelChzq yJih1xgby.2G5ZF9WN1qD4cTIIIDCybfZ5R98.XcRZpYzwMAk_qefm0zan76ENrzX8U91McC_oRl kHRkg2PcB_JA76U.oFu7RTlgDZPVTNvqvDjOunclgDoivsWth1Xn5cWHzcd17HiAszPaVzttapgN wYcMvURIvtBvk1Nz7BHpkEOx17.La91bMdIxL8FQXKgQap9p5aqznCjCowD8IpO14udns2RWQTW. UitUzYUZdhVokn.4znnEufOcnZuHgIuEr82j.Qm98ojB4ToDgMQ7HRIZt2PUrxGQcq8mAgQ-- Received: from jws10765.mail.gq1.yahoo.com by sendmailws777.mail.gq1.yahoo.com; Sat, 30 Jul 2016 06:11:03 +0000; 1469859063.737 Date: Sat, 30 Jul 2016 06:11:03 +0000 (UTC) From: Dan Nelson Reply-To: Dan Nelson To: "freebsd-current@freebsd.org" Message-ID: <315070490.8622006.1469859063414.JavaMail.yahoo@mail.yahoo.com> Subject: AR8327 Etherswitch led control patch MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_8622005_1358949567.1469859063414" References: <315070490.8622006.1469859063414.JavaMail.yahoo.ref@mail.yahoo.com> X-Mailman-Approved-At: Sat, 30 Jul 2016 11:56:28 +0000 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jul 2016 06:14:00 -0000 ------=_Part_8622005_1358949567.1469859063414 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit I got a TP-Link WDR4300 recently, flashed it to FreeBSD, and decided that I needed to be able to control all the LEDs on the front :) As a start, attached is a patch that allows you to manage the five LEDs connected to the Atheros AR8327 switch chip it uses. It extends the etherswitch API, allowing up to three LEDs per port to be set to on, off, cyclic blink, or default (flash on activity for the 8327). I added an "led" subcommand to the etherswitchcfg tool for full control, and also added led(4) nodes for basic on/off control. This particular switch seems to only notice changes to the LED registers twice per second, so it's no good for smooth animation, but it works just fine as a 5-bit progress bar or error display. This does break ABI compatibility of the etherswitch ioctl because of new elements in the structure. The code should be generic enough to apply easily to other etherswitch chips. Comments and suggestions welcome. -- Dan Nelson dnelson_1901@yahoo.com ------=_Part_8622005_1358949567.1469859063414 Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=etherswitch.diff Content-ID: <70a48cda-e56d-13b2-1a5b-1086bb66ee24@yahoo.com> SW5kZXg6IHNiaW4vZXRoZXJzd2l0Y2hjZmcvZXRoZXJzd2l0Y2hjZmcuOAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzYmluL2V0aGVyc3dpdGNoY2ZnL2V0aGVyc3dpdGNoY2ZnLjgJKHJldmlzaW9uIDMwMzUzOCkK KysrIHNiaW4vZXRoZXJzd2l0Y2hjZmcvZXRoZXJzd2l0Y2hjZmcuOAkod29ya2luZyBjb3B5KQpA QCAtMzMsMjYgKzMzLDI2IEBACiAuU2ggU1lOT1BTSVMKIC5ObQogLk9wIEZsICJmIGNvbnRyb2wg ZmlsZSIKLS5BciBpbmZvCisuQ20gaW5mbwogLk5tCiAuT3AgRmwgImYgY29udHJvbCBmaWxlIgot LkFyIGNvbmZpZworLkNtIGNvbmZpZwogLkFyIGNvbW1hbmQgcGFyYW1ldGVyCiAuTm0KIC5PcCBG bCAiZiBjb250cm9sIGZpbGUiCi0uQXIgcGh5CisuQ20gcGh5CiAuQXIgcGh5LnJlZ2lzdGVyWz12 YWx1ZV0KIC5ObQogLk9wIEZsICJmIGNvbnRyb2wgZmlsZSIKLS5BciBwb3J0JWQKKy5DbSBwb3J0 JWQKIC5BciBbZmxhZ3NdIGNvbW1hbmQgcGFyYW1ldGVyCiAuTm0KIC5PcCBGbCAiZiBjb250cm9s IGZpbGUiCi0uQXIgcmVnCisuQ20gcmVnCiAuQXIgcmVnaXN0ZXJbPXZhbHVlXQogLk5tCiAuT3Ag RmwgImYgY29udHJvbCBmaWxlIgotLkFyIHZsYW5ncm91cCVkCisuQ20gdmxhbmdyb3VwJWQKIC5B ciBjb21tYW5kIHBhcmFtZXRlcgogLlNoIERFU0NSSVBUSU9OCiBUaGUKQEAgLTgxLDggKzgxLDgg QEAgVGhlIGNvbmZpZyBjb21tYW5kIHByb3ZpZGVzIGFjY2VzcyB0byBnbG9iYWwgc3dpdGMKIHBh cmFtZXRlcnMuCiBJdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CiAuUHAKLS5CbCAt dGFnIC13aWR0aCAiLkFyIHZsYW5fbW9kZSBtb2RlIiAtY29tcGFjdAotLkl0IEFyIHZsYW5fbW9k ZSBtb2RlCisuQmwgLXRhZyAtd2lkdGggIi5DbSB2bGFuX21vZGUgbW9kZSIgLWNvbXBhY3QKKy5J dCBDbSB2bGFuX21vZGUgQXIgbW9kZQogU2V0cyB0aGUgc3dpdGNoIFZMQU4gbW9kZSAoZGVwZW5k cyBvbiB0aGUgaGFyZHdhcmUpLgogLkVsCiAuU3MgcGh5CkBAIC0xMDMsNTEgKzEwMyw2MCBAQCBU aGUgcG9ydCBjb21tYW5kIHNlbGVjdHMgb25lIG9mIHRoZSBwb3J0cyBvZiB0aGUgcwogSXQgc3Vw cG9ydHMgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKIC5QcAogLkJsIC10YWcgLXdpZHRoICIuQXIg cHZpZCBudW1iZXIiIC1jb21wYWN0Ci0uSXQgQXIgcHZpZCBudW1iZXIKKy5JdCBDbSBwdmlkIEFy IG51bWJlcgogU2V0cyB0aGUgZGVmYXVsdCBwb3J0IFZJRCB0aGF0IGlzIHVzZWQgdG8gcHJvY2Vz cyBpbmNvbWluZyBmcmFtZXMgdGhhdCBhcmUgbm90IHRhZ2dlZC4KLS5JdCBBciBtZWRpYSBtZWRp YXNwZWMKKy5JdCBDbSBtZWRpYSBBciBtZWRpYXNwZWMKIFNwZWNpZmllcyB0aGUgcGh5c2ljYWwg bWVkaWEgY29uZmlndXJhdGlvbiB0byBiZSBjb25maWd1cmVkIGZvciBhIHBvcnQuCi0uSXQgQXIg bWVkaWFvcHQgbWVkaWFvcHRpb24KKy5JdCBDbSBtZWRpYW9wdCBBciBtZWRpYW9wdGlvbgogU3Bl Y2lmaWVzIGEgbGlzdCBvZiBtZWRpYSBvcHRpb25zIGZvciBhIHBvcnQuCiBTZWUKIC5YciBpZmNv bmZpZyA4CiBmb3IgZGV0YWlscyBvbgotLkFyIG1lZGlhCisuQ20gbWVkaWEKIGFuZAotLkFyIG1l ZGlhb3B0IC4KKy5DbSBtZWRpYW9wdCAuCisuSXQgQ20gbGVkIEFyIG51bWJlciBzdHlsZQorU2V0 cyB0aGUgZGlzcGxheSBzdHlsZSBmb3IgYSBnaXZlbiBMRUQuICBBdmFpbGFibGUgc3R5bGVzIGFy ZTogCisuQ20gZGVmYXVsdCAKKyh1c3VhbGx5IGZsYXNoIG9uIGFjdGl2aXR5KSwKKy5DbSBvbiAs IAorLkNtIG9mZiAsIAorYW5kIAorLkNtIGJsaW5rIC4KK05vdCBhbGwgc3dpdGNoZXMgd2lsbCBz dXBwb3J0IGFsbCBzdHlsZXMuCiAuRWwKIC5QcAogQW5kIHRoZSBmb2xsb3dpbmcgZmxhZ3MgKHBs ZWFzZSBub3RlIHRoYXQgbm90IGFsbCBmbGFncwogYXJlIHN1cHBvcnRlZCBieSBhbGwgc3dpdGNo IGRyaXZlcnMpOgogLlBwCi0uQmwgLXRhZyAtd2lkdGggIi5BciBhZGR0YWciIC1jb21wYWN0Ci0u SXQgQXIgYWRkdGFnCisuQmwgLXRhZyAtd2lkdGggIi5GbCBhZGR0YWciIC1jb21wYWN0CisuSXQg Q20gYWRkdGFnCiBBZGQgVkxBTiB0YWcgdG8gZWFjaCBwYWNrZXQgc2VudCBieSB0aGUgcG9ydC4K LS5JdCBBciAtYWRkdGFnCisuSXQgRmwgYWRkdGFnCiBEaXNhYmxlIHRoZSBhZGQgVkxBTiB0YWcg b3B0aW9uLgotLkl0IEFyIHN0cmlwdGFnCisuSXQgQ20gc3RyaXB0YWcKIFN0cmlwIHRoZSBWTEFO IHRhZ3MgZnJvbSB0aGUgcGFja2V0cyBzZW50IGJ5IHRoZSBwb3J0LgotLkl0IEFyIC1zdHJpcHRh ZworLkl0IEZsIHN0cmlwdGFnCiBEaXNhYmxlIHRoZSBzdHJpcCBWTEFOIHRhZyBvcHRpb24uCi0u SXQgQXIgZmlyc3Rsb2NrCisuSXQgQ20gZmlyc3Rsb2NrCiBUaGlzIG9wdGlvbnMgbWFrZXMgdGhl IHN3aXRjaCBwb3J0IGxvY2sgb24gdGhlIGZpcnN0IE1BQyBhZGRyZXNzIGl0IHNlZXMuCiBBZnRl ciB0aGF0LCB1c3VhbGx5IHlvdSBuZWVkIHRvIHJlc2V0IHRoZSBzd2l0Y2ggdG8gbGVhcm4gZGlm ZmVyZW50CiBNQUMgYWRkcmVzc2VzLgotLkl0IEFyIC1maXJzdGxvY2sKKy5JdCBGbCBmaXJzdGxv Y2sKIERpc2FibGUgdGhlIGZpcnN0IGxvY2sgb3B0aW9uLgogTm90ZSB0aGF0IHNvbWV0aW1lcyB5 b3UgbmVlZCB0byByZXNldCB0aGUKIHN3aXRjaCB0byByZWFsbHkgZGlzYWJsZSB0aGlzIG9wdGlv bi4KLS5JdCBBciBkcm9wdW50YWdnZWQKKy5JdCBDbSBkcm9wdW50YWdnZWQKIERyb3AgcGFja2V0 cyB3aXRob3V0IGEgVkxBTiB0YWcuCi0uSXQgQXIgLWRyb3B1bnRhZ2dlZAorLkl0IEZsIGRyb3B1 bnRhZ2dlZAogRGlzYWJsZSB0aGUgZHJvcCB1bnRhZ2dlZCBwYWNrZXRzIG9wdGlvbi4KLS5JdCBB ciBkb3VibGV0YWcKKy5JdCBDbSBkb3VibGV0YWcKIEVuYWJsZSBRaW5RIGZvciB0aGUgcG9ydC4K LS5JdCBBciAtZG91YmxldGFnCisuSXQgRmwgZG91YmxldGFnCiBEaXNhYmxlIFFpblEgZm9yIHRo ZSBwb3J0LgotLkl0IEFyIGluZ3Jlc3MKKy5JdCBDbSBpbmdyZXNzCiBFbmFibGUgdGhlIGluZ3Jl c3MgZmlsdGVyIG9uIHRoZSBwb3J0LgotLkl0IEFyIC1pbmdyZXNzCisuSXQgRmwgaW5ncmVzcwog RGlzYWJsZSB0aGUgaW5ncmVzcyBmaWx0ZXIuCiAuRWwKIC5TcyByZWcKQEAgLTE1NiwxNCArMTY1 LDE0IEBAIFRoZSByZWcgY29tbWFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIHJlZ2lzdGVycyBv CiBUaGUgdmxhbmdyb3VwIGNvbW1hbmQgc2VsZWN0cyBvbmUgb2YgdGhlIFZMQU4gZ3JvdXBzIGZv ciBjb25maWd1cmF0aW9uLgogSXQgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKIC5Q cAotLkJsIC10YWcgLXdpZHRoICIuQXIgdmxhbmdyb3VwIiAtY29tcGFjdAotLkl0IEFyIHZsYW4g VklECisuQmwgLXRhZyAtd2lkdGggIi5DbSBtZW1iZXJzIiAtY29tcGFjdAorLkl0IENtIHZsYW4g QXIgVklECiBTZXRzIHRoZSBWTEFOIElEICg4MDIuMXEgVklEKSBmb3IgdGhpcyBWTEFOIGdyb3Vw LgogRnJhbWVzIHRyYW5zbWl0dGVkIG9uIHRhZ2dlZCBtZW1iZXIgcG9ydHMgb2YgdGhpcyBncm91 cCB3aWxsIGJlIHRhZ2dlZAogd2l0aCB0aGlzIFZJRC4KIEluY29taW5nIGZyYW1lcyBjYXJyeWlu ZyB0aGlzIHRhZyB3aWxsIGJlIGZvcndhcmRlZCBhY2NvcmRpbmcgdG8gdGhlCiBjb25maWd1cmF0 aW9uIG9mIHRoaXMgVkxBTiBncm91cC4KLS5JdCBBciBtZW1iZXJzIHBvcnQsLi4uCisuSXQgQ20g bWVtYmVycyBBciBwb3J0LC4uLgogQ29uZmlndXJlcyB3aGljaCBwb3J0cyBhcmUgdG8gYmUgYSBt ZW1iZXIgb2YgdGhpcyBWTEFOIGdyb3VwLgogVGhlIHBvcnQgbnVtYmVycyBhcmUgZ2l2ZW4gYXMg YSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4KIEVhY2ggcG9ydCBjYW4gb3B0aW9uYWxseSBiZSBmb2xs b3dlZCBieQpJbmRleDogc2Jpbi9ldGhlcnN3aXRjaGNmZy9ldGhlcnN3aXRjaGNmZy5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHNiaW4vZXRoZXJzd2l0Y2hjZmcvZXRoZXJzd2l0Y2hjZmcuYwkocmV2aXNpb24g MzAzNTM4KQorKysgc2Jpbi9ldGhlcnN3aXRjaGNmZy9ldGhlcnN3aXRjaGNmZy5jCSh3b3JraW5n IGNvcHkpCkBAIC04Myw2ICs4Myw4IEBAIHN0cnVjdCBjbWRzIHsKIH07CiBzdGF0aWMgc3RydWN0 IGNtZHMgY21kc1tdOwogCisvKiBNdXN0IG1hdGNoIHRoZSBFVEhFUlNXSVRDSF9QT1JUX0xFRF8q IGVudW0gb3JkZXIgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpsZWRzdHlsZXNbXSA9IHsgImRlZmF1 bHQiLCAib24iLCAib2ZmIiwgImJsaW5rIiwgTlVMTCB9OwogCiAvKgogICogUHJpbnQgYSB2YWx1 ZSBhIGxhIHRoZSAlYiBmb3JtYXQgb2YgdGhlIGtlcm5lbCdzIHByaW50Zi4KQEAgLTI3MCw2ICsy NzIsMzggQEAgc2V0X3BvcnRfbWVkaWFvcHQoc3RydWN0IGNmZyAqY2ZnLCBjaGFyICphcmd2W10p CiB9CiAKIHN0YXRpYyB2b2lkCitzZXRfcG9ydF9sZWQoc3RydWN0IGNmZyAqY2ZnLCBjaGFyICph cmd2W10pCit7CisJZXRoZXJzd2l0Y2hfcG9ydF90IHA7CisJaW50IGxlZDsKKwlpbnQgaTsKKwkK KwliemVybygmcCwgc2l6ZW9mKHApKTsKKwlwLmVzX3BvcnQgPSBjZmctPnVuaXQ7CisJaWYgKGlv Y3RsKGNmZy0+ZmQsIElPRVRIRVJTV0lUQ0hHRVRQT1JULCAmcCkgIT0gMCkKKwkJZXJyKEVYX09T RVJSLCAiaW9jdGwoSU9FVEhFUlNXSVRDSEdFVFBPUlQpIik7CisKKwlsZWQgPSBzdHJ0b2woYXJn dlsxXSwgTlVMTCwgMCk7CisJaWYgKGxlZCA8IDEgfHwgbGVkID4gcC5lc19ubGVkcykKKwkJZXJy eChFWF9VU0FHRSwgImludmFsaWQgbGVkIG51bWJlciAlczsgbXVzdCBiZSBiZXR3ZWVuIDEgYW5k ICVkIiwKKwkJCWFyZ3ZbMV0sIHAuZXNfbmxlZHMpOworCisJbGVkLS07CisKKwlmb3IgKGk9MDsg bGVkc3R5bGVzW2ldICE9IE5VTEw7IGkrKykgeworCQlpZiAoc3RyY21wKGFyZ3ZbMl0sIGxlZHN0 eWxlc1tpXSkgPT0gMCkgeworCQkJcC5lc19sZWRbbGVkXSA9IGk7CisJCQlicmVhazsKKwkJfQor CX0gCisJaWYgKGxlZHN0eWxlc1tpXSA9PSBOVUxMKQorCQllcnJ4KEVYX1VTQUdFLCAiaW52YWxp ZCBsZWQgc3R5bGUgXCIlc1wiIiwgYXJndlsyXSk7CisKKwlpZiAoaW9jdGwoY2ZnLT5mZCwgSU9F VEhFUlNXSVRDSFNFVFBPUlQsICZwKSAhPSAwKQorCQllcnIoRVhfT1NFUlIsICJpb2N0bChJT0VU SEVSU1dJVENIU0VUUE9SVCkiKTsKK30KKworc3RhdGljIHZvaWQKIHNldF92bGFuZ3JvdXBfdmlk KHN0cnVjdCBjZmcgKmNmZywgY2hhciAqYXJndltdKQogewogCWludCB2OwpAQCAtMzM0LDEwICsz NjgsMTAgQEAgc2V0X3JlZ2lzdGVyKHN0cnVjdCBjZmcgKmNmZywgY2hhciAqYXJnKQogCWlmIChj PT1hcmcpCiAJCXJldHVybiAoMSk7CiAJaWYgKCpjID09ICc9JykgewotCQl2ID0gc3RydG9sKGMr MSwgTlVMTCwgMCk7CisJCXYgPSBzdHJ0b3VsKGMrMSwgTlVMTCwgMCk7CiAJCXdyaXRlX3JlZ2lz dGVyKGNmZywgYSwgdik7CiAJfQotCXByaW50ZigiXHRyZWcgMHglMDR4PTB4JTA0eFxuIiwgYSwg cmVhZF9yZWdpc3RlcihjZmcsIGEpKTsKKwlwcmludGYoIlx0cmVnIDB4JTA0eD0weCUwOHhcbiIs IGEsIHJlYWRfcmVnaXN0ZXIoY2ZnLCBhKSk7CiAJcmV0dXJuICgwKTsKIH0KIApAQCAtMzU3LDcg KzM5MSw3IEBAIHNldF9waHlyZWdpc3RlcihzdHJ1Y3QgY2ZnICpjZmcsIGNoYXIgKmFyZykKIAlp ZiAoZCA9PSBjKQogCQlyZXR1cm4gKDEpOwogCWlmICgqYyA9PSAnPScpIHsKLQkJdmFsID0gc3Ry dG9sKGMrMSwgTlVMTCwgMCk7CisJCXZhbCA9IHN0cnRvdWwoYysxLCBOVUxMLCAwKTsKIAkJd3Jp dGVfcGh5cmVnaXN0ZXIoY2ZnLCBwaHksIHJlZywgdmFsKTsKIAl9CiAJcHJpbnRmKCJcdHJlZyAl ZC4weCUwMng9MHglMDR4XG4iLCBwaHksIHJlZywgcmVhZF9waHlyZWdpc3RlcihjZmcsIHBoeSwg cmVnKSk7CkBAIC00NDIsNiArNDc2LDEzIEBAIHByaW50X3BvcnQoc3RydWN0IGNmZyAqY2ZnLCBp bnQgcG9ydCkKIAkJcHJpbnRmKCJcdHB2aWQ6ICVkXG4iLCBwLmVzX3B2aWQpOwogCXByaW50Yigi XHRmbGFncyIsIHAuZXNfZmxhZ3MsIEVUSEVSU1dJVENIX1BPUlRfRkxBR1NfQklUUyk7CiAJcHJp bnRmKCJcbiIpOworCWlmIChwLmVzX25sZWRzKSB7CisJCXByaW50ZigiXHRsZWQ6ICIpOworCQlm b3IgKGkgPSAwOyBpIDwgcC5lc19ubGVkczsgaSsrKSB7CisJCQlwcmludGYoIiVkOiVzJXMiLCBp KzEsIGxlZHN0eWxlc1twLmVzX2xlZFtpXV0sIChpPT1wLmVzX25sZWRzLTEpPyIiOiIgIik7CisJ CX0KKwkJcHJpbnRmKCJcbiIpOworCX0KIAlwcmludGYoIlx0bWVkaWE6ICIpOwogCXByaW50X21l ZGlhX3dvcmQocC5lc19pZm1yLmlmbV9jdXJyZW50LCAxKTsKIAlpZiAocC5lc19pZm1yLmlmbV9h Y3RpdmUgIT0gcC5lc19pZm1yLmlmbV9jdXJyZW50KSB7CkBAIC01NDAsNyArNTgxLDcgQEAgdXNh Z2Uoc3RydWN0IGNmZyAqY2ZnIF9fdW51c2VkLCBjaGFyICphcmd2W10gX191bnUKIAkgICAgInBo eS5yZWdpc3Rlcls9dmFsdWVdXG4iKTsKIAlmcHJpbnRmKHN0ZGVyciwgIlx0ZXRoZXJzd2l0Y2hj ZmcgWy1mIGNvbnRyb2wgZmlsZV0gcG9ydFggIgogCSAgICAiW2ZsYWdzXSBjb21tYW5kIHBhcmFt ZXRlclxuIik7Ci0JZnByaW50ZihzdGRlcnIsICJcdFx0cG9ydCBjb21tYW5kczogcHZpZCwgbWVk aWEsIG1lZGlhb3B0XG4iKTsKKwlmcHJpbnRmKHN0ZGVyciwgIlx0XHRwb3J0IGNvbW1hbmRzOiBw dmlkLCBtZWRpYSwgbWVkaWFvcHQsIGxlZFxuIik7CiAJZnByaW50ZihzdGRlcnIsICJcdGV0aGVy c3dpdGNoY2ZnIFstZiBjb250cm9sIGZpbGVdIHJlZyAiCiAJICAgICJyZWdpc3Rlcls9dmFsdWVd XG4iKTsKIAlmcHJpbnRmKHN0ZGVyciwgIlx0ZXRoZXJzd2l0Y2hjZmcgWy1mIGNvbnRyb2wgZmls ZV0gdmxhbmdyb3VwWCAiCkBAIC02NTEsNyArNjkyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCQkJZm9yKGk9MDsgY21kc1tpXS5uYW1lICE9IE5VTEw7IGkrKykgewogCQkJCWlm IChjZmcubW9kZSA9PSBjbWRzW2ldLm1vZGUgJiYgc3RyY21wKGFyZ3ZbMF0sIGNtZHNbaV0ubmFt ZSkgPT0gMCkgewogCQkJCQlpZiAoYXJnYyA8IChjbWRzW2ldLmFyZ3MgKyAxKSkgewotCQkJCQkJ cHJpbnRmKCIlcyBuZWVkcyBhbiBhcmd1bWVudFxuIiwgY21kc1tpXS5uYW1lKTsKKwkJCQkJCXBy aW50ZigiJXMgbmVlZHMgJWQgYXJndW1lbnQlc1xuIiwgY21kc1tpXS5uYW1lLCBjbWRzW2ldLmFy Z3MsIChjbWRzW2ldLmFyZ3M9PTEpPyIiOiIsIik7CiAJCQkJCQlicmVhazsKIAkJCQkJfQogCQkJ CQkoY21kc1tpXS5mKSgmY2ZnLCBhcmd2KTsKQEAgLTY5MSw2ICs3MzIsNyBAQCBzdGF0aWMgc3Ry dWN0IGNtZHMgY21kc1tdID0gewogCXsgTU9ERV9QT1JULCAicHZpZCIsIDEsIHNldF9wb3J0X3Zp ZCB9LAogCXsgTU9ERV9QT1JULCAibWVkaWEiLCAxLCBzZXRfcG9ydF9tZWRpYSB9LAogCXsgTU9E RV9QT1JULCAibWVkaWFvcHQiLCAxLCBzZXRfcG9ydF9tZWRpYW9wdCB9LAorCXsgTU9ERV9QT1JU LCAibGVkIiwgMiwgc2V0X3BvcnRfbGVkIH0sCiAJeyBNT0RFX1BPUlQsICJhZGR0YWciLCAwLCBz ZXRfcG9ydF9mbGFnIH0sCiAJeyBNT0RFX1BPUlQsICItYWRkdGFnIiwgMCwgc2V0X3BvcnRfZmxh ZyB9LAogCXsgTU9ERV9QT1JULCAiaW5ncmVzcyIsIDAsIHNldF9wb3J0X2ZsYWcgfSwKSW5kZXg6 IHN5cy9kZXYvZXRoZXJzd2l0Y2gvYXJzd2l0Y2gvYXJzd2l0Y2guYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz eXMvZGV2L2V0aGVyc3dpdGNoL2Fyc3dpdGNoL2Fyc3dpdGNoLmMJKHJldmlzaW9uIDMwMzUzOCkK KysrIHN5cy9kZXYvZXRoZXJzd2l0Y2gvYXJzd2l0Y2gvYXJzd2l0Y2guYwkod29ya2luZyBjb3B5 KQpAQCAtNjksNiArNjksOCBAQAogI2luY2x1ZGUgPGRldi9ldGhlcnN3aXRjaC9hcnN3aXRjaC9h cnN3aXRjaF84MzI3Lmg+CiAjaW5jbHVkZSA8ZGV2L2V0aGVyc3dpdGNoL2Fyc3dpdGNoL2Fyc3dp dGNoXzkzNDAuaD4KIAorI2luY2x1ZGUgPGRldi9sZWQvbGVkLmg+CisKICNpbmNsdWRlICJtZGlv X2lmLmgiCiAjaW5jbHVkZSAibWlpYnVzX2lmLmgiCiAjaW5jbHVkZSAiZXRoZXJzd2l0Y2hfaWYu aCIKQEAgLTc3LDYgKzc5LDE0IEBACiBzdGF0aWMgU1lTQ1RMX05PREUoX2RlYnVnLCBPSURfQVVU TywgYXJzd2l0Y2gsIENUTEZMQUdfUkQsIDAsICJhcnN3aXRjaCIpOwogI2VuZGlmCiAKKy8qIE1h cCBFVEhFUlNXSVRDSF9QT1JUX0xFRF8qIHRvIEF0aGVyb3MgcGF0dGVybiBjb2RlcyAqLworc3Rh dGljIGludCBsZWRfcGF0dGVybl90YWJsZVtdID0geyAKKwlbRVRIRVJTV0lUQ0hfUE9SVF9MRURf REVGQVVMVF0gPSAweDMsIAorCVtFVEhFUlNXSVRDSF9QT1JUX0xFRF9PTl0gPSAweDIsIAorCVtF VEhFUlNXSVRDSF9QT1JUX0xFRF9PRkZdID0gMHgwLCAKKwlbRVRIRVJTV0lUQ0hfUE9SVF9MRURf QkxJTktdID0gMHgxIAorfTsKKwogc3RhdGljIGlubGluZSBpbnQgYXJzd2l0Y2hfcG9ydGZvcnBo eShpbnQgcGh5KTsKIHN0YXRpYyB2b2lkIGFyc3dpdGNoX3RpY2sodm9pZCAqYXJnKTsKIHN0YXRp YyBpbnQgYXJzd2l0Y2hfaWZtZWRpYV91cGQoc3RydWN0IGlmbmV0ICopOwpAQCAtODUsNiArOTUs OSBAQCBzdGF0aWMgaW50IGFyOHh4eF9wb3J0X3ZsYW5fc2V0dXAoc3RydWN0IGFyc3dpdGNoXwog ICAgIGV0aGVyc3dpdGNoX3BvcnRfdCAqcCk7CiBzdGF0aWMgaW50IGFyOHh4eF9wb3J0X3ZsYW5f Z2V0KHN0cnVjdCBhcnN3aXRjaF9zb2Z0YyAqc2MsCiAgICAgZXRoZXJzd2l0Y2hfcG9ydF90ICpw KTsKK3N0YXRpYyBpbnQgYXJzd2l0Y2hfc2V0bGVkKHN0cnVjdCBhcnN3aXRjaF9zb2Z0YyAqc2Ms IGludCBwaHksIGludCBsZWQsCisgICAgaW50IHN0eWxlKTsKK3N0YXRpYyB2b2lkIGFyc3dpdGNo X2xlZF9mdW5jKHN0cnVjdCBhcnN3aXRjaF9kZXZfbGVkICpkZXZfbGVkLCBpbnQgb25vZmYpOwog CiBzdGF0aWMgaW50CiBhcnN3aXRjaF9wcm9iZShkZXZpY2VfdCBkZXYpCkBAIC0xODgsOSArMjAx LDI2IEBAIGFyc3dpdGNoX2F0dGFjaF9waHlzKHN0cnVjdCBhcnN3aXRjaF9zb2Z0YyAqc2MpCiAJ CQlkZXZpY2VfcHJpbnRmKHNjLT5zY19kZXYsCiAJCQkgICAgImF0dGFjaGluZyBQSFkgJWQgZmFp bGVkXG4iLAogCQkJICAgIHBoeSk7CisJCQlyZXR1cm4gKGVycik7CiAJCX0KKworCQlpZiAoQVI4 WDE2X0lTX1NXSVRDSChzYywgQVI4MzI3KSkgeworCQkJaW50IGxlZDsKKwkJCWNoYXIgbGVkbmFt ZVtJRk5BTVNJWis0XTsKKworCQkJZm9yIChsZWQgPSAwOyBsZWQgPCAzOyBsZWQrKykgeworCQkJ CXNwcmludGYobGVkbmFtZSwgIiVzJWRsZWQlZCIsIG5hbWUsIAorCQkJCSAgICBhcnN3aXRjaF9w b3J0Zm9ycGh5KHBoeSksIGxlZCsxKTsKKwkJCQlzYy0+ZGV2X2xlZFtwaHldW2xlZF0uc2MgPSBz YzsKKwkJCQlzYy0+ZGV2X2xlZFtwaHldW2xlZF0ubGVkID0gCisJCQkJICAgIGxlZF9jcmVhdGUo KGxlZF90ICopYXJzd2l0Y2hfbGVkX2Z1bmMsCisJCQkJICAgICZzYy0+ZGV2X2xlZFtwaHldW2xl ZF0sIGxlZG5hbWUpOworCQkJCXNjLT5kZXZfbGVkW3BoeV1bbGVkXS5waHkgPSBwaHk7CisJCQkJ c2MtPmRldl9sZWRbcGh5XVtsZWRdLmxlZG51bSA9IGxlZDsKKwkJCX0KKwkJfQogCX0KLQlyZXR1 cm4gKGVycik7CisJcmV0dXJuICgwKTsKIH0KIAogc3RhdGljIGludApAQCAtNDIyLDcgKzQ1Miw3 IEBAIHN0YXRpYyBpbnQKIGFyc3dpdGNoX2RldGFjaChkZXZpY2VfdCBkZXYpCiB7CiAJc3RydWN0 IGFyc3dpdGNoX3NvZnRjICpzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKLQlpbnQgaTsKKwlp bnQgaSwgbGVkOwogCiAJY2FsbG91dF9kcmFpbigmc2MtPmNhbGxvdXRfdGljayk7CiAKQEAgLTQz Miw2ICs0NjIsOSBAQCBhcnN3aXRjaF9kZXRhY2goZGV2aWNlX3QgZGV2KQogCQlpZiAoc2MtPmlm cFtpXSAhPSBOVUxMKQogCQkJaWZfZnJlZShzYy0+aWZwW2ldKTsKIAkJZnJlZShzYy0+aWZuYW1l W2ldLCBNX0RFVkJVRik7CisJCWZvciAobGVkPTA7IGxlZCA8IEFSU1dJVENIX05VTV9MRURTOyBs ZWQrKykgCisJCQlpZiAoc2MtPmRldl9sZWRbaV1bbGVkXS5sZWQgIT0gTlVMTCkKKwkJCQlsZWRf ZGVzdHJveShzYy0+ZGV2X2xlZFtpXVtsZWRdLmxlZCk7CiAJfQogCiAJYnVzX2dlbmVyaWNfZGV0 YWNoKGRldik7CkBAIC02ODMsNiArNzE2LDM4IEBAIGFyc3dpdGNoX2dldHBvcnQoZGV2aWNlX3Qg ZGV2LCBldGhlcnN3aXRjaF9wb3J0X3QKIAl9IGVsc2UgewogCQlyZXR1cm4gKEVOWElPKTsKIAl9 CisJCisJaWYgKCFhcnN3aXRjaF9pc19jcHVwb3J0KHNjLCBwLT5lc19wb3J0KSAmJiAKKwkgICAg QVI4WDE2X0lTX1NXSVRDSChzYywgQVI4MzI3KSkgeworCQlpbnQgbGVkOworCQlwLT5lc19ubGVk cyA9IDM7CisKKwkJZm9yIChsZWQgPSAwOyBsZWQgPCBwLT5lc19ubGVkczsgbGVkKyspCisJCXsK KwkJCWludCBzdHlsZTsKKwkJCXVpbnQzMl90IHZhbDsKKwkJCQorCQkJLyogRmluZCB0aGUgcmln aHQgc3R5bGUgZW51bSBmb3Igb3VyIHBhdHRlcm4gKi8KKwkJCXZhbCA9IGFyc3dpdGNoX3JlYWRy ZWcoZGV2LCAKKwkJCSAgICBhcjgzMjdfbGVkX21hcHBpbmdbcC0+ZXNfcG9ydC0xXVtsZWRdLnJl Zyk7CisJCQl2YWwgPSAodmFsPj5hcjgzMjdfbGVkX21hcHBpbmdbcC0+ZXNfcG9ydC0xXVtsZWRd LnNoaWZ0KSYweDAzOworCQkJICAgIAorCQkJZm9yIChzdHlsZSA9IDA7IHN0eWxlIDwgRVRIRVJT V0lUQ0hfUE9SVF9MRURfTUFYOyBzdHlsZSsrKQorCQkJeworCQkJCWlmIChsZWRfcGF0dGVybl90 YWJsZVtzdHlsZV0gPT0gdmFsKSBicmVhazsKKwkJCX0KKwkJCQorCQkJLyogY2FuJ3QgaGFwcGVu ICovCisJCQlpZiAoc3R5bGUgPT0gRVRIRVJTV0lUQ0hfUE9SVF9MRURfTUFYKQorCQkJCXN0eWxl ID0gRVRIRVJTV0lUQ0hfUE9SVF9MRURfREVGQVVMVDsKKwkJCQorCQkJcC0+ZXNfbGVkW2xlZF0g PSBzdHlsZTsKKwkJfQorCX0gZWxzZQorCXsKKwkJcC0+ZXNfbmxlZHMgPSAwOworCX0KKwkKIAly ZXR1cm4gKDApOwogfQogCkBAIC03MjcsNyArNzkyLDcgQEAgYXI4eHh4X3BvcnRfdmxhbl9zZXR1 cChzdHJ1Y3QgYXJzd2l0Y2hfc29mdGMgKnNjLAogc3RhdGljIGludAogYXJzd2l0Y2hfc2V0cG9y dChkZXZpY2VfdCBkZXYsIGV0aGVyc3dpdGNoX3BvcnRfdCAqcCkKIHsKLQlpbnQgZXJyOworCWlu dCBlcnIsIGk7CiAJc3RydWN0IGFyc3dpdGNoX3NvZnRjICpzYzsKIAlzdHJ1Y3QgaWZtZWRpYSAq aWZtOwogCXN0cnVjdCBtaWlfZGF0YSAqbWlpOwpAQCAtNzQ0LDkgKzgwOSwyMCBAQCBhcnN3aXRj aF9zZXRwb3J0KGRldmljZV90IGRldiwgZXRoZXJzd2l0Y2hfcG9ydF90CiAJCQlyZXR1cm4gKGVy cik7CiAJfQogCi0JLyogRG8gbm90IGFsbG93IG1lZGlhIGNoYW5nZXMgb24gQ1BVIHBvcnQuICov CisJLyogRG8gbm90IGFsbG93IG1lZGlhIG9yIGxlZCBjaGFuZ2VzIG9uIENQVSBwb3J0LiAqLwog CWlmIChhcnN3aXRjaF9pc19jcHVwb3J0KHNjLCBwLT5lc19wb3J0KSkKIAkJcmV0dXJuICgwKTsK KwkKKwlpZiAoQVI4WDE2X0lTX1NXSVRDSChzYywgQVI4MzI3KSkKKwl7CisJCWZvciAoaSA9IDA7 IGkgPCAzOyBpKyspCisJCXsJCisJCQlpbnQgZXJyOworCQkJZXJyID0gYXJzd2l0Y2hfc2V0bGVk KHNjLCBwLT5lc19wb3J0LTEsIGksIHAtPmVzX2xlZFtpXSk7CisJCQlpZiAoZXJyKQorCQkJCXJl dHVybiAoZXJyKTsKKwkJfQorCX0KIAogCW1paSA9IGFyc3dpdGNoX21paWZvcnBvcnQoc2MsIHAt PmVzX3BvcnQpOwogCWlmIChtaWkgPT0gTlVMTCkKQEAgLTc1OCw2ICs4MzQsMzQgQEAgYXJzd2l0 Y2hfc2V0cG9ydChkZXZpY2VfdCBkZXYsIGV0aGVyc3dpdGNoX3BvcnRfdAogCXJldHVybiAoaWZt ZWRpYV9pb2N0bChpZnAsICZwLT5lc19pZnIsIGlmbSwgU0lPQ1NJRk1FRElBKSk7CiB9CiAKKy8q CisgKiBsZWQoNCkgY2FsbGJhY2sgZnVuY3Rpb24uICBUaGF0IGFwaSBvbmx5IGtub3dzIG9uL29m ZjsgaWYgeW91IHdhbnQgdG8KKyAqIHJlc2V0IGJhY2sgdG8gZGVmYXVsdHMsIHlvdSdsbCBuZWVk IHRvIHVzZSBldGhlcnN3aXRjaGNmZy4KKyAqLworc3RhdGljIHZvaWQgCithcnN3aXRjaF9sZWRf ZnVuYyhzdHJ1Y3QgYXJzd2l0Y2hfZGV2X2xlZCogZGV2X2xlZCwgaW50IG9ub2ZmKQoreworCWFy c3dpdGNoX3NldGxlZChkZXZfbGVkLT5zYywgZGV2X2xlZC0+cGh5LCBkZXZfbGVkLT5sZWRudW0s IAorCSAgICBvbm9mZiA/IEVUSEVSU1dJVENIX1BPUlRfTEVEX09OIDogRVRIRVJTV0lUQ0hfUE9S VF9MRURfT0ZGKTsKK30KKworc3RhdGljIGludAorYXJzd2l0Y2hfc2V0bGVkKHN0cnVjdCBhcnN3 aXRjaF9zb2Z0YyAqc2MsIGludCBwaHksIGludCBsZWQsIGludCBzdHlsZSkKK3sKKwlpbnQgc2hp ZnQ7CisKKwlpZiAocGh5IDwgMCB8fCBwaHkgPiBzYy0+bnVtcGh5cykKKwkJcmV0dXJuIEVJTlZB TDsKKworCWlmIChzdHlsZSA8IDAgfHwgc3R5bGUgPiBFVEhFUlNXSVRDSF9QT1JUX0xFRF9NQVgp CisJCXJldHVybiAoRUlOVkFMKTsKKyAgICAKKwlzaGlmdCA9IGFyODMyN19sZWRfbWFwcGluZ1tw aHldW2xlZF0uc2hpZnQ7CisJcmV0dXJuIChhcnN3aXRjaF9tb2RpZnlyZWcoc2MtPnNjX2Rldiwg CisJICAgIGFyODMyN19sZWRfbWFwcGluZ1twaHldW2xlZF0ucmVnLCAKKwkgICAgMHgwMyA8PCBz aGlmdCwgbGVkX3BhdHRlcm5fdGFibGVbc3R5bGVdIDw8IHNoaWZ0KSk7Cit9CisKIHN0YXRpYyB2 b2lkCiBhcnN3aXRjaF9zdGF0Y2hnKGRldmljZV90IGRldikKIHsKSW5kZXg6IHN5cy9kZXYvZXRo ZXJzd2l0Y2gvYXJzd2l0Y2gvYXJzd2l0Y2hfODMyNy5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYv ZXRoZXJzd2l0Y2gvYXJzd2l0Y2gvYXJzd2l0Y2hfODMyNy5jCShyZXZpc2lvbiAzMDM1MzgpCisr KyBzeXMvZGV2L2V0aGVyc3dpdGNoL2Fyc3dpdGNoL2Fyc3dpdGNoXzgzMjcuYwkod29ya2luZyBj b3B5KQpAQCAtNzUsNiArNzUsMzYgQEAKICAqIGxlYWQgdG8gdHJhZmZpYyBzdG9ybXMvbG9vcHMu CiAgKi8KIAorLyogTWFwIHBvcnQrbGVkIHRvIHJlZ2lzdGVyK3NoaWZ0ICovCitzdHJ1Y3QgYXI4 MzI3X2xlZF9tYXBwaW5nIGFyODMyN19sZWRfbWFwcGluZ1tBUjgzMjdfTlVNX1BIWVNdW0VUSEVS U1dJVENIX1BPUlRfTUFYX0xFRFNdID0KK3sKKwl7CS8qIFBIWTAgKi8KKwkJe0FSODMyN19SRUdf TEVEX0NUUkwwLCAxNCB9LAorCQl7QVI4MzI3X1JFR19MRURfQ1RSTDEsIDE0IH0sCisJCXtBUjgz MjdfUkVHX0xFRF9DVFJMMiwgMTQgfQorCX0sCisJewkvKiBQSFkxICovCisJCXtBUjgzMjdfUkVH X0xFRF9DVFJMMywgOCAgfSwKKwkJe0FSODMyN19SRUdfTEVEX0NUUkwzLCAxMCB9LAorCQl7QVI4 MzI3X1JFR19MRURfQ1RSTDMsIDEyIH0KKwl9LAorCXsJLyogUEhZMiAqLworCQl7QVI4MzI3X1JF R19MRURfQ1RSTDMsIDE0IH0sCisJCXtBUjgzMjdfUkVHX0xFRF9DVFJMMywgMTYgfSwKKwkJe0FS ODMyN19SRUdfTEVEX0NUUkwzLCAxOCB9CisJfSwKKwl7CS8qIFBIWTMgKi8KKwkJe0FSODMyN19S RUdfTEVEX0NUUkwzLCAyMCB9LAorCQl7QVI4MzI3X1JFR19MRURfQ1RSTDMsIDIyIH0sCisJCXtB UjgzMjdfUkVHX0xFRF9DVFJMMywgMjQgfQorCX0sCisJewkvKiBQSFk0ICovCisJCXtBUjgzMjdf UkVHX0xFRF9DVFJMMCwgMzAgfSwKKwkJe0FSODMyN19SRUdfTEVEX0NUUkwxLCAzMCB9LAorCQl7 QVI4MzI3X1JFR19MRURfQ1RSTDIsIDMwIH0KKwl9Cit9OworCiBzdGF0aWMgaW50CiBhcjgzMjdf dmxhbl9vcChzdHJ1Y3QgYXJzd2l0Y2hfc29mdGMgKnNjLCB1aW50MzJfdCBvcCwgdWludDMyX3Qg dmlkLAogICAgIHVpbnQzMl90IGRhdGEpCkluZGV4OiBzeXMvZGV2L2V0aGVyc3dpdGNoL2Fyc3dp dGNoL2Fyc3dpdGNoXzgzMjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L2V0aGVyc3dpdGNoL2Fy c3dpdGNoL2Fyc3dpdGNoXzgzMjcuaAkocmV2aXNpb24gMzAzNTM4KQorKysgc3lzL2Rldi9ldGhl cnN3aXRjaC9hcnN3aXRjaC9hcnN3aXRjaF84MzI3LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYg Kzg1LDExIEBAIHN0cnVjdCBhcjgzMjdfcG9ydF9jZmcgewogCXVpbnQzMl90IHJ4cGF1c2U7CiB9 OwogCitleHRlcm4gc3RydWN0IGFyODMyN19sZWRfbWFwcGluZyB7CisJaW50IHJlZzsKKwlpbnQg c2hpZnQ7Cit9IGFyODMyN19sZWRfbWFwcGluZ1tBUjgzMjdfTlVNX1BIWVNdW0VUSEVSU1dJVENI X1BPUlRfTUFYX0xFRFNdOworCiBleHRlcm4Jdm9pZCBhcjgzMjdfYXR0YWNoKHN0cnVjdCBhcnN3 aXRjaF9zb2Z0YyAqc2MpOwogCiAjZW5kaWYJLyogX19BUlNXSVRDSF84MzI3X0hfXyAqLwpJbmRl eDogc3lzL2Rldi9ldGhlcnN3aXRjaC9hcnN3aXRjaC9hcnN3aXRjaHZhci5oCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHN5cy9kZXYvZXRoZXJzd2l0Y2gvYXJzd2l0Y2gvYXJzd2l0Y2h2YXIuaAkocmV2aXNpb24g MzAzNTM4KQorKysgc3lzL2Rldi9ldGhlcnN3aXRjaC9hcnN3aXRjaC9hcnN3aXRjaHZhci5oCSh3 b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxNSBAQCB0eXBlZGVmIGVudW0gewogI2RlZmluZSBB UlNXSVRDSF9OVU1fUE9SVFMJTUFYKEFSODMyN19OVU1fUE9SVFMsIEFSOFgxNl9OVU1fUE9SVFMp CiAjZGVmaW5lIEFSU1dJVENIX05VTV9QSFlTCU1BWChBUjgzMjdfTlVNX1BIWVMsIEFSOFgxNl9O VU1fUEhZUykKIAorI2RlZmluZSBBUlNXSVRDSF9OVU1fTEVEUwkzCisKK3N0cnVjdCBhcnN3aXRj aF9kZXZfbGVkIHsKKwlzdHJ1Y3QgYXJzd2l0Y2hfc29mdGMJKnNjOworCXN0cnVjdCBjZGV2CSps ZWQ7CisJaW50CQlwaHk7CisJaW50CQlsZWRudW07Cit9OworCiBzdHJ1Y3QgYXJzd2l0Y2hfc29m dGMgewogCXN0cnVjdCBtdHgJc2NfbXR4OwkJLyogc2VyaWFsaXplIGFjY2VzcyB0byBzb2Z0YyAq LwogCWRldmljZV90CXNjX2RldjsKQEAgLTY2LDYgKzc1LDcgQEAgc3RydWN0IGFyc3dpdGNoX3Nv ZnRjIHsKIAljaGFyCQkqaWZuYW1lW0FSU1dJVENIX05VTV9QSFlTXTsKIAlkZXZpY2VfdAltaWli dXNbQVJTV0lUQ0hfTlVNX1BIWVNdOwogCXN0cnVjdCBpZm5ldAkqaWZwW0FSU1dJVENIX05VTV9Q SFlTXTsKKwlzdHJ1Y3QgYXJzd2l0Y2hfZGV2X2xlZAlkZXZfbGVkW0FSU1dJVENIX05VTV9QSFlT XVtBUlNXSVRDSF9OVU1fTEVEU107CiAJc3RydWN0IGNhbGxvdXQJY2FsbG91dF90aWNrOwogCWV0 aGVyc3dpdGNoX2luZm9fdCBpbmZvOwogCkluZGV4OiBzeXMvZGV2L2V0aGVyc3dpdGNoL2V0aGVy c3dpdGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9ldGhlcnN3aXRjaC9ldGhlcnN3aXRjaC5o CShyZXZpc2lvbiAzMDM1MzgpCisrKyBzeXMvZGV2L2V0aGVyc3dpdGNoL2V0aGVyc3dpdGNoLmgJ KHdvcmtpbmcgY29weSkKQEAgLTE0LDcgKzE0LDcgQEAgZXh0ZXJuIGRyaXZlcl90ICAgICAgICAg ZXRoZXJzd2l0Y2hfZHJpdmVyOwogCiBzdHJ1Y3QgZXRoZXJzd2l0Y2hfcmVnIHsKIAl1aW50MTZf dAlyZWc7Ci0JdWludDE2X3QJdmFsOworCXVpbnQzMl90CXZhbDsKIH07CiB0eXBlZGVmIHN0cnVj dCBldGhlcnN3aXRjaF9yZWcgZXRoZXJzd2l0Y2hfcmVnX3Q7CiAKQEAgLTY0LDEwICs2NCwyMyBA QCB0eXBlZGVmIHN0cnVjdCBldGhlcnN3aXRjaF9jb25mIGV0aGVyc3dpdGNoX2NvbmZfdAogI2Rl ZmluZQlFVEhFUlNXSVRDSF9QT1JUX0ZMQUdTX0JJVFMJXAogIlwwMjBcMUNQVVBPUlRcMlNUUklQ VEFHXDNBRERUQUdcNEZJUlNUTE9DS1w1RFJPUFVOVEFHR0VEXDZRaW5RXDdJTkdSRVNTIgogCisj ZGVmaW5lIEVUSEVSU1dJVENIX1BPUlRfTUFYX0xFRFMgMworCitlbnVtIGV0aGVyc3dpdGNoX3Bv cnRfbGVkIHsKKwlFVEhFUlNXSVRDSF9QT1JUX0xFRF9ERUZBVUxULAorCUVUSEVSU1dJVENIX1BP UlRfTEVEX09OLAorCUVUSEVSU1dJVENIX1BPUlRfTEVEX09GRiwKKwlFVEhFUlNXSVRDSF9QT1JU X0xFRF9CTElOSywKKwlFVEhFUlNXSVRDSF9QT1JUX0xFRF9NQVgKK307Cit0eXBlZGVmIGVudW0g ZXRoZXJzd2l0Y2hfcG9ydF9sZWQgZXRoZXJzd2l0Y2hfcG9ydF9sZWRfdDsKKwogc3RydWN0IGV0 aGVyc3dpdGNoX3BvcnQgewogCWludAkJZXNfcG9ydDsKIAlpbnQJCWVzX3B2aWQ7CisJaW50CQll c19ubGVkczsKIAl1aW50MzJfdAllc19mbGFnczsKKwlldGhlcnN3aXRjaF9wb3J0X2xlZF90IGVz X2xlZFtFVEhFUlNXSVRDSF9QT1JUX01BWF9MRURTXTsKIAl1bmlvbiB7CiAJCXN0cnVjdCBpZnJl cQkJZXNfdWlmcjsKIAkJc3RydWN0IGlmbWVkaWFyZXEJZXNfdWlmbXI7Cg== ------=_Part_8622005_1358949567.1469859063414--