From: Christoph Hellwig Subject: [PATCH 3/6] sparc: remove the sparc32_dma_ops indirection Date: Sat, 8 Dec 2018 09:41:12 -0800 Message-ID: <20181208174115.16237-4-hch@lst.de> References: <20181208174115.16237-1-hch@lst.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181208174115.16237-1-hch@lst.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: iommu@lists.linux-foundation.org Cc: linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, Vineet Gupta , Robin Murphy , dri-devel@lists.freedesktop.org, "Matwey V. Kornilov" , openrisc@lists.librecores.org, Laurent Pinchart , sparclinux@vger.kernel.org, linux-snps-arc@lists.infradead.org, Ezequiel Garcia , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org List-Id: iommu@lists.linux-foundation.org VGhlcmUgaXMgbm8gZ29vZCByZWFzb24gdG8gaGF2ZSBhIGRvdWJsZSBpbmRpcmVjdGlvbiBmb3Ig dGhlIHNwYXJjMzIKZG1hIG9wcywgc28gcmVtb3ZlIHRoZSBzcGFyYzMyX2RtYV9vcHMgYW5kIGRl ZmluZSBzZXBhcmF0ZSBkbWFfbWFwX29wcwppbnN0YW5jZSBmb3IgdGhlIGRpZmZlcmVudCBJT01N VSB0eXBlcy4KClNpZ25lZC1vZmYtYnk6IENocmlzdG9waCBIZWxsd2lnIDxoY2hAbHN0LmRlPgot LS0KIGFyY2gvc3BhcmMvaW5jbHVkZS9hc20vZG1hLmggfCAgNDggKy0tLS0tLS0tLS0tCiBhcmNo L3NwYXJjL2tlcm5lbC9pb3BvcnQuYyAgIHwgMTI0ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIGFyY2gvc3BhcmMvbW0vaW8tdW5pdC5jICAgICAgfCAgNjUgKysrKysrKysrKysrLS0t LS0KIGFyY2gvc3BhcmMvbW0vaW9tbXUuYyAgICAgICAgfCAxMzcgKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTM4IGluc2VydGlvbnMoKyksIDIz NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL2RtYS5o IGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9kbWEuaAppbmRleCBhMWQ3Yzg2OTE3YzYuLjQ2MmU3 Yzc5NGEwOSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9kbWEuaAorKysgYi9h cmNoL3NwYXJjL2luY2x1ZGUvYXNtL2RtYS5oCkBAIC05MSw1NCArOTEsMTAgQEAgZXh0ZXJuIGlu dCBpc2FfZG1hX2JyaWRnZV9idWdneTsKICNlbmRpZgogCiAjaWZkZWYgQ09ORklHX1NQQVJDMzIK LQotLyogUm91dGluZXMgZm9yIGRhdGEgdHJhbnNmZXIgYnVmZmVycy4gKi8KIHN0cnVjdCBkZXZp Y2U7Ci1zdHJ1Y3Qgc2NhdHRlcmxpc3Q7Ci0KLXN0cnVjdCBzcGFyYzMyX2RtYV9vcHMgewotCV9f dTMyICgqZ2V0X3Njc2lfb25lKShzdHJ1Y3QgZGV2aWNlICosIGNoYXIgKiwgdW5zaWduZWQgbG9u Zyk7Ci0Jdm9pZCAoKmdldF9zY3NpX3NnbCkoc3RydWN0IGRldmljZSAqLCBzdHJ1Y3Qgc2NhdHRl cmxpc3QgKiwgaW50KTsKLQl2b2lkICgqcmVsZWFzZV9zY3NpX29uZSkoc3RydWN0IGRldmljZSAq LCBfX3UzMiwgdW5zaWduZWQgbG9uZyk7Ci0Jdm9pZCAoKnJlbGVhc2Vfc2NzaV9zZ2wpKHN0cnVj dCBkZXZpY2UgKiwgc3RydWN0IHNjYXR0ZXJsaXN0ICosaW50KTsKLSNpZmRlZiBDT05GSUdfU0JV UwotCWludCAoKm1hcF9kbWFfYXJlYSkoc3RydWN0IGRldmljZSAqLCBkbWFfYWRkcl90ICosIHVu c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIGludCk7Ci0Jdm9pZCAoKnVubWFwX2RtYV9hcmVh KShzdHJ1Y3QgZGV2aWNlICosIHVuc2lnbmVkIGxvbmcsIGludCk7Ci0jZW5kaWYKLX07Ci1leHRl cm4gY29uc3Qgc3RydWN0IHNwYXJjMzJfZG1hX29wcyAqc3BhcmMzMl9kbWFfb3BzOwotCi0jZGVm aW5lIG1tdV9nZXRfc2NzaV9vbmUoZGV2LHZhZGRyLGxlbikgXAotCXNwYXJjMzJfZG1hX29wcy0+ Z2V0X3Njc2lfb25lKGRldiwgdmFkZHIsIGxlbikKLSNkZWZpbmUgbW11X2dldF9zY3NpX3NnbChk ZXYsc2csc3opIFwKLQlzcGFyYzMyX2RtYV9vcHMtPmdldF9zY3NpX3NnbChkZXYsIHNnLCBzeikK LSNkZWZpbmUgbW11X3JlbGVhc2Vfc2NzaV9vbmUoZGV2LHZhZGRyLGxlbikgXAotCXNwYXJjMzJf ZG1hX29wcy0+cmVsZWFzZV9zY3NpX29uZShkZXYsIHZhZGRyLGxlbikKLSNkZWZpbmUgbW11X3Jl bGVhc2Vfc2NzaV9zZ2woZGV2LHNnLHN6KSBcCi0Jc3BhcmMzMl9kbWFfb3BzLT5yZWxlYXNlX3Nj c2lfc2dsKGRldiwgc2csIHN6KQotCi0jaWZkZWYgQ09ORklHX1NCVVMKLS8qCi0gKiBtbXVfbWFw L3VubWFwIGFyZSBwcm92aWRlZCBieSBpb21tdS9pb3VuaXQ7IEludmFsaWQgdG8gY2FsbCBvbiBJ SWVwLgotICoKLSAqIFRoZSBtbXVfbWFwX2RtYV9hcmVhIGVzdGFibGlzaGVzIHR3byBtYXBwaW5n cyBpbiBvbmUgZ28uCi0gKiBUaGVzZSBtYXBwaW5ncyBwb2ludCB0byBwYWdlcyBub3JtYWxseSBt YXBwZWQgYXQgJ3ZhJyAobGluZWFyIGFkZHJlc3MpLgotICogRmlyc3QgbWFwcGluZyBpcyBmb3Ig Q1BVIHZpc2libGUgYWRkcmVzcyBhdCAnYScsIHVuY2FjaGVkLgotICogVGhpcyBpcyBhbiBhbGlh cywgYnV0IGl0IHdvcmtzIGJlY2F1c2UgaXQgaXMgYW4gdW5jYWNoZWQgbWFwcGluZy4KLSAqIFNl Y29uZCBtYXBwaW5nIGlzIGZvciBkZXZpY2UgdmlzaWJsZSBhZGRyZXNzLCBvciAiYnVzIiBhZGRy ZXNzLgotICogVGhlIGJ1cyBhZGRyZXNzIGlzIHJldHVybmVkIGF0ICcqcGJhJy4KLSAqCi0gKiBU aGVzZSBmdW5jdGlvbnMgc2VlbSBkaXN0aW5jdCwgYnV0IGFyZSBoYXJkIHRvIHNwbGl0LgotICog T24gc3VuNG0sIHBhZ2UgYXR0cmlidXRlcyBkZXBlbmQgb24gdGhlIENQVSB0eXBlLCBzbyB3ZSBo YXZlIHRvCi0gKiBrbm93IGlmIHdlIGFyZSBtYXBwaW5nIFJBTSBvciBJL08sIHNvIGl0IGhhcyB0 byBiZSBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50Ci0gKiB0byBhIHNlcGFyYXRlIG1hcHBpbmcgZnVu Y3Rpb24gZm9yIENQVSB2aXNpYmxlIG1hcHBpbmdzLgotICovCi0jZGVmaW5lIHNidXNfbWFwX2Rt YV9hcmVhKGRldixwYmEsdmEsYSxsZW4pIFwKLQlzcGFyYzMyX2RtYV9vcHMtPm1hcF9kbWFfYXJl YShkZXYsIHBiYSwgdmEsIGEsIGxlbikKLSNkZWZpbmUgc2J1c191bm1hcF9kbWFfYXJlYShkZXYs YmEsbGVuKSBcCi0Jc3BhcmMzMl9kbWFfb3BzLT51bm1hcF9kbWFfYXJlYShkZXYsIGJhLCBsZW4p Ci0jZW5kaWYgLyogQ09ORklHX1NCVVMgKi8KIAordW5zaWduZWQgbG9uZyBzcGFyY19kbWFfYWxs b2NfcmVzb3VyY2Uoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3QgbGVuKTsKK2Jvb2wgc3BhcmNf ZG1hX2ZyZWVfcmVzb3VyY2Uodm9pZCAqY3B1X2FkZHIsIHNpemVfdCBzaXplKTsKICNlbmRpZgog CiAjZW5kaWYgLyogIShfQVNNX1NQQVJDX0RNQV9IKSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFy Yy9rZXJuZWwvaW9wb3J0LmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9pb3BvcnQuYwppbmRleCBmZDdh NDFjNmQ2ODguLmY0NjIxMzAzNTYzNyAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvaW9w b3J0LmMKKysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvaW9wb3J0LmMKQEAgLTUyLDggKzUyLDYgQEAK ICNpbmNsdWRlIDxhc20vaW8tdW5pdC5oPgogI2luY2x1ZGUgPGFzbS9sZW9uLmg+CiAKLWNvbnN0 IHN0cnVjdCBzcGFyYzMyX2RtYV9vcHMgKnNwYXJjMzJfZG1hX29wczsKLQogLyogVGhpcyBmdW5j dGlvbiBtdXN0IG1ha2Ugc3VyZSB0aGF0IGNhY2hlcyBhbmQgbWVtb3J5IGFyZSBjb2hlcmVudCBh ZnRlciBETUEKICAqIE9uIExFT04gc3lzdGVtcyB3aXRob3V0IGNhY2hlIHNub29waW5nIGl0IGZs dXNoZXMgdGhlIGVudGlyZSBELUNBQ0hFLgogICovCkBAIC0yNDcsNyArMjQ1LDcgQEAgc3RhdGlj IHZvaWQgX3NwYXJjX2ZyZWVfaW8oc3RydWN0IHJlc291cmNlICpyZXMpCiAJcmVsZWFzZV9yZXNv dXJjZShyZXMpOwogfQogCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBzcGFyY19kbWFfYWxsb2NfcmVz b3VyY2Uoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3QgbGVuKQordW5zaWduZWQgbG9uZyBzcGFy Y19kbWFfYWxsb2NfcmVzb3VyY2Uoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3QgbGVuKQogewog CXN0cnVjdCByZXNvdXJjZSAqcmVzOwogCkBAIC0yNjYsNyArMjY0LDcgQEAgc3RhdGljIHVuc2ln bmVkIGxvbmcgc3BhcmNfZG1hX2FsbG9jX3Jlc291cmNlKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6 ZV90IGxlbikKIAlyZXR1cm4gcmVzLT5zdGFydDsKIH0KIAotc3RhdGljIGJvb2wgc3BhcmNfZG1h X2ZyZWVfcmVzb3VyY2Uodm9pZCAqY3B1X2FkZHIsIHNpemVfdCBzaXplKQorYm9vbCBzcGFyY19k bWFfZnJlZV9yZXNvdXJjZSh2b2lkICpjcHVfYWRkciwgc2l6ZV90IHNpemUpCiB7CiAJdW5zaWdu ZWQgbG9uZyBhZGRyID0gKHVuc2lnbmVkIGxvbmcpY3B1X2FkZHI7CiAJc3RydWN0IHJlc291cmNl ICpyZXM7CkBAIC0zMDIsMTIyICszMDAsNiBAQCB2b2lkIHNidXNfc2V0X3NidXM2NChzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGludCB4KQogfQogRVhQT1JUX1NZTUJPTChzYnVzX3NldF9zYnVzNjQpOwog Ci0vKgotICogQWxsb2NhdGUgYSBjaHVuayBvZiBtZW1vcnkgc3VpdGFibGUgZm9yIERNQS4KLSAq IFR5cGljYWxseSBkZXZpY2VzIHVzZSB0aGVtIGZvciBjb250cm9sIGJsb2Nrcy4KLSAqIENQVSBt YXkgYWNjZXNzIHRoZW0gd2l0aG91dCBhbnkgZXhwbGljaXQgZmx1c2hpbmcuCi0gKi8KLXN0YXRp YyB2b2lkICpzYnVzX2FsbG9jX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IGxl biwKLQkJCQkgZG1hX2FkZHJfdCAqZG1hX2FkZHJwLCBnZnBfdCBnZnAsCi0JCQkJIHVuc2lnbmVk IGxvbmcgYXR0cnMpCi17Ci0JdW5zaWduZWQgbG9uZyBsZW5fdG90YWwgPSBQQUdFX0FMSUdOKGxl bik7Ci0JdW5zaWduZWQgbG9uZyB2YSwgYWRkcjsKLQlpbnQgb3JkZXI7Ci0KLQkvKiBYWFggd2h5 IGFyZSBzb21lIGxlbmd0aHMgc2lnbmVkLCBvdGhlcnMgdW5zaWduZWQ/ICovCi0JaWYgKGxlbiA8 PSAwKSB7Ci0JCXJldHVybiBOVUxMOwotCX0KLQkvKiBYWFggU28gd2hhdCBpcyBtYXhwaHlzIGZv ciB1cyBhbmQgaG93IGRvIGRyaXZlcnMga25vdyBpdD8gKi8KLQlpZiAobGVuID4gMjU2KjEwMjQp IHsJCQkvKiBfX2dldF9mcmVlX3BhZ2VzKCkgbGltaXQgKi8KLQkJcmV0dXJuIE5VTEw7Ci0JfQot Ci0Jb3JkZXIgPSBnZXRfb3JkZXIobGVuX3RvdGFsKTsKLQl2YSA9IF9fZ2V0X2ZyZWVfcGFnZXMo Z2ZwLCBvcmRlcik7Ci0JaWYgKHZhID09IDApCi0JCWdvdG8gZXJyX25vcGFnZXM7Ci0KLQlhZGRy ID0gc3BhcmNfZG1hX2FsbG9jX3Jlc291cmNlKGRldiwgbGVuX3RvdGFsKTsKLQlpZiAoIWFkZHIp Ci0JCWdvdG8gZXJyX25vbWVtOwotCi0JLy8gWFhYIFRoZSBzYnVzX21hcF9kbWFfYXJlYSBkb2Vz IHRoaXMgZm9yIHVzIGJlbG93LCBzZWUgY29tbWVudHMuCi0JLy8gc3JtbXVfbWFwaW9yYW5nZSgw LCB2aXJ0X3RvX3BoeXModmEpLCByZXMtPnN0YXJ0LCBsZW5fdG90YWwpOwotCS8qCi0JICogWFhY IFRoYXQncyB3aGVyZSBzZGV2IHdvdWxkIGJlIHVzZWQuIEN1cnJlbnRseSB3ZSBsb2FkCi0JICog YWxsIGlvbW11IHRhYmxlcyB3aXRoIHRoZSBzYW1lIHRyYW5zbGF0aW9ucy4KLQkgKi8KLQlpZiAo c2J1c19tYXBfZG1hX2FyZWEoZGV2LCBkbWFfYWRkcnAsIHZhLCBhZGRyLCBsZW5fdG90YWwpICE9 IDApCi0JCWdvdG8gZXJyX25vaW9tbXU7Ci0KLQlyZXR1cm4gKHZvaWQgKilhZGRyOwotCi1lcnJf bm9pb21tdToKLQlzcGFyY19kbWFfZnJlZV9yZXNvdXJjZSgodm9pZCAqKWFkZHIsIGxlbl90b3Rh bCk7Ci1lcnJfbm9tZW06Ci0JZnJlZV9wYWdlcyh2YSwgb3JkZXIpOwotZXJyX25vcGFnZXM6Ci0J cmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyB2b2lkIHNidXNfZnJlZV9jb2hlcmVudChzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHNpemVfdCBuLCB2b2lkICpwLAotCQkJICAgICAgIGRtYV9hZGRyX3QgYmEs IHVuc2lnbmVkIGxvbmcgYXR0cnMpCi17Ci0Jc3RydWN0IHBhZ2UgKnBndjsKLQotCW4gPSBQQUdF X0FMSUdOKG4pOwotCWlmICghc3BhcmNfZG1hX2ZyZWVfcmVzb3VyY2UocCwgbikpCi0JCXJldHVy bjsKLQotCXBndiA9IHZpcnRfdG9fcGFnZShwKTsKLQlzYnVzX3VubWFwX2RtYV9hcmVhKGRldiwg YmEsIG4pOwotCi0JX19mcmVlX3BhZ2VzKHBndiwgZ2V0X29yZGVyKG4pKTsKLX0KLQotLyoKLSAq IE1hcCBhIGNodW5rIG9mIG1lbW9yeSBzbyB0aGF0IGRldmljZXMgY2FuIHNlZSBpdC4KLSAqIENQ VSB2aWV3IG9mIHRoaXMgbWVtb3J5IG1heSBiZSBpbmNvbnNpc3RlbnQgd2l0aAotICogYSBkZXZp Y2UgdmlldyBhbmQgZXhwbGljaXQgZmx1c2hpbmcgaXMgbmVjZXNzYXJ5LgotICovCi1zdGF0aWMg ZG1hX2FkZHJfdCBzYnVzX21hcF9wYWdlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBhZ2Ug KnBhZ2UsCi0JCQkJdW5zaWduZWQgbG9uZyBvZmZzZXQsIHNpemVfdCBsZW4sCi0JCQkJZW51bSBk bWFfZGF0YV9kaXJlY3Rpb24gZGlyLAotCQkJCXVuc2lnbmVkIGxvbmcgYXR0cnMpCi17Ci0Jdm9p ZCAqdmEgPSBwYWdlX2FkZHJlc3MocGFnZSkgKyBvZmZzZXQ7Ci0KLQkvKiBYWFggd2h5IGFyZSBz b21lIGxlbmd0aHMgc2lnbmVkLCBvdGhlcnMgdW5zaWduZWQ/ICovCi0JaWYgKGxlbiA8PSAwKSB7 Ci0JCXJldHVybiAwOwotCX0KLQkvKiBYWFggU28gd2hhdCBpcyBtYXhwaHlzIGZvciB1cyBhbmQg aG93IGRvIGRyaXZlcnMga25vdyBpdD8gKi8KLQlpZiAobGVuID4gMjU2KjEwMjQpIHsJCQkvKiBf X2dldF9mcmVlX3BhZ2VzKCkgbGltaXQgKi8KLQkJcmV0dXJuIDA7Ci0JfQotCXJldHVybiBtbXVf Z2V0X3Njc2lfb25lKGRldiwgdmEsIGxlbik7Ci19Ci0KLXN0YXRpYyB2b2lkIHNidXNfdW5tYXBf cGFnZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgYmEsIHNpemVfdCBuLAotCQkJICAg IGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpciwgdW5zaWduZWQgbG9uZyBhdHRycykKLXsKLQlt bXVfcmVsZWFzZV9zY3NpX29uZShkZXYsIGJhLCBuKTsKLX0KLQotc3RhdGljIGludCBzYnVzX21h cF9zZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIGludCBuLAot CQkgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLCB1bnNpZ25lZCBsb25nIGF0dHJz KQotewotCW1tdV9nZXRfc2NzaV9zZ2woZGV2LCBzZywgbik7Ci0JcmV0dXJuIG47Ci19Ci0KLXN0 YXRpYyB2b2lkIHNidXNfdW5tYXBfc2coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRl cmxpc3QgKnNnLCBpbnQgbiwKLQkJCSAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLCB1bnNp Z25lZCBsb25nIGF0dHJzKQotewotCW1tdV9yZWxlYXNlX3Njc2lfc2dsKGRldiwgc2csIG4pOwot fQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9tYXBfb3BzIHNidXNfZG1hX29wcyA9IHsKLQku YWxsb2MJCQk9IHNidXNfYWxsb2NfY29oZXJlbnQsCi0JLmZyZWUJCQk9IHNidXNfZnJlZV9jb2hl cmVudCwKLQkubWFwX3BhZ2UJCT0gc2J1c19tYXBfcGFnZSwKLQkudW5tYXBfcGFnZQkJPSBzYnVz X3VubWFwX3BhZ2UsCi0JLm1hcF9zZwkJCT0gc2J1c19tYXBfc2csCi0JLnVubWFwX3NnCQk9IHNi dXNfdW5tYXBfc2csCi19OwotCiBzdGF0aWMgaW50IF9faW5pdCBzcGFyY19yZWdpc3Rlcl9pb3Bv cnQodm9pZCkKIHsKIAlyZWdpc3Rlcl9wcm9jX3NwYXJjX2lvcG9ydCgpOwpAQCAtNDkxLDcgKzM3 Myw3IEBAIHZvaWQgYXJjaF9zeW5jX2RtYV9mb3JfY3B1KHN0cnVjdCBkZXZpY2UgKmRldiwgcGh5 c19hZGRyX3QgcGFkZHIsCiAJCWRtYV9tYWtlX2NvaGVyZW50KHBhZGRyLCBQQUdFX0FMSUdOKHNp emUpKTsKIH0KIAotY29uc3Qgc3RydWN0IGRtYV9tYXBfb3BzICpkbWFfb3BzID0gJnNidXNfZG1h X29wczsKK2NvbnN0IHN0cnVjdCBkbWFfbWFwX29wcyAqZG1hX29wczsKIEVYUE9SVF9TWU1CT0wo ZG1hX29wcyk7CiAKICNpZmRlZiBDT05GSUdfUFJPQ19GUwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFy Yy9tbS9pby11bml0LmMgYi9hcmNoL3NwYXJjL21tL2lvLXVuaXQuYwppbmRleCBjOGNiMjdkM2Vh NzUuLjIwODhkMjkyYzZlNSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9tbS9pby11bml0LmMKKysr IGIvYXJjaC9zcGFyYy9tbS9pby11bml0LmMKQEAgLTEyLDcgKzEyLDcgQEAKICNpbmNsdWRlIDxs aW51eC9tbS5oPgogI2luY2x1ZGUgPGxpbnV4L2hpZ2htZW0uaD4JLyogcHRlX29mZnNldF9tYXAg PT4ga21hcF9hdG9taWMgKi8KICNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KLSNpbmNsdWRlIDxs aW51eC9zY2F0dGVybGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CiAjaW5j bHVkZSA8bGludXgvb2YuaD4KICNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KIApAQCAtMTQw LDE4ICsxNDAsMjYgQEAgbmV4dGk6CXNjYW4gPSBmaW5kX25leHRfemVyb19iaXQoaW91bml0LT5i bWFwLCBsaW1pdCwgc2Nhbik7CiAJcmV0dXJuIHZhZGRyOwogfQogCi1zdGF0aWMgX191MzIgaW91 bml0X2dldF9zY3NpX29uZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNoYXIgKnZhZGRyLCB1bnNpZ25l ZCBsb25nIGxlbikKK3N0YXRpYyBkbWFfYWRkcl90IGlvdW5pdF9tYXBfcGFnZShzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBwYWdlICpwYWdlLAorCQl1bnNpZ25lZCBsb25nIG9mZnNldCwgc2l6 ZV90IGxlbiwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLAorCQl1bnNpZ25lZCBsb25nIGF0 dHJzKQogeworCXZvaWQgKnZhZGRyID0gcGFnZV9hZGRyZXNzKHBhZ2UpICsgb2Zmc2V0OwogCXN0 cnVjdCBpb3VuaXRfc3RydWN0ICppb3VuaXQgPSBkZXYtPmFyY2hkYXRhLmlvbW11OwogCXVuc2ln bmVkIGxvbmcgcmV0LCBmbGFnczsKIAkKKwkvKiBYWFggU28gd2hhdCBpcyBtYXhwaHlzIGZvciB1 cyBhbmQgaG93IGRvIGRyaXZlcnMga25vdyBpdD8gKi8KKwlpZiAoIWxlbiB8fCBsZW4gPiAyNTYg KiAxMDI0KQorCQlyZXR1cm4gRE1BX01BUFBJTkdfRVJST1I7CisKIAlzcGluX2xvY2tfaXJxc2F2 ZSgmaW91bml0LT5sb2NrLCBmbGFncyk7CiAJcmV0ID0gaW91bml0X2dldF9hcmVhKGlvdW5pdCwg KHVuc2lnbmVkIGxvbmcpdmFkZHIsIGxlbik7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW91 bml0LT5sb2NrLCBmbGFncyk7CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgaW91bml0 X2dldF9zY3NpX3NnbChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2cs IGludCBzeikKK3N0YXRpYyBpbnQgaW91bml0X21hcF9zZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBzY2F0dGVybGlzdCAqc2csIGludCBzeiwKKwkJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24g ZGlyLCB1bnNpZ25lZCBsb25nIGF0dHJzKQogewogCXN0cnVjdCBpb3VuaXRfc3RydWN0ICppb3Vu aXQgPSBkZXYtPmFyY2hkYXRhLmlvbW11OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0xNjUs OSArMTczLDExIEBAIHN0YXRpYyB2b2lkIGlvdW5pdF9nZXRfc2NzaV9zZ2woc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCBpbnQKIAkJc2cgPSBzZ19uZXh0KHNnKTsK IAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW91bml0LT5sb2NrLCBmbGFncyk7CisJcmV0 dXJuIHN6OwogfQogCi1zdGF0aWMgdm9pZCBpb3VuaXRfcmVsZWFzZV9zY3NpX29uZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsIF9fdTMyIHZhZGRyLCB1bnNpZ25lZCBsb25nIGxlbikKK3N0YXRpYyB2b2lk IGlvdW5pdF91bm1hcF9wYWdlKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCB2YWRkciwg c2l6ZV90IGxlbiwKKwkJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLCB1bnNpZ25lZCBsb25n IGF0dHJzKQogewogCXN0cnVjdCBpb3VuaXRfc3RydWN0ICppb3VuaXQgPSBkZXYtPmFyY2hkYXRh LmlvbW11OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0xODEsNyArMTkxLDggQEAgc3RhdGlj IHZvaWQgaW91bml0X3JlbGVhc2Vfc2NzaV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBfX3UzMiB2 YWRkciwgdW5zaWduZWQgbG8KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb3VuaXQtPmxvY2ss IGZsYWdzKTsKIH0KIAotc3RhdGljIHZvaWQgaW91bml0X3JlbGVhc2Vfc2NzaV9zZ2woc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCBpbnQgc3opCitzdGF0aWMgdm9p ZCBpb3VuaXRfdW5tYXBfc2coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3Qg KnNnLCBpbnQgc3osCisJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpciwgdW5zaWduZWQgbG9u ZyBhdHRycykKIHsKIAlzdHJ1Y3QgaW91bml0X3N0cnVjdCAqaW91bml0ID0gZGV2LT5hcmNoZGF0 YS5pb21tdTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtMjAxLDE0ICsyMTIsMjcgQEAgc3Rh dGljIHZvaWQgaW91bml0X3JlbGVhc2Vfc2NzaV9zZ2woc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3Qgc2NhdHRlcmxpc3QgKnNnLAogfQogCiAjaWZkZWYgQ09ORklHX1NCVVMKLXN0YXRpYyBpbnQg aW91bml0X21hcF9kbWFfYXJlYShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgKnBiYSwg dW5zaWduZWQgbG9uZyB2YSwgdW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgbGVuKQorc3RhdGljIHZv aWQgKmlvdW5pdF9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBsZW4sCisJCWRtYV9h ZGRyX3QgKmRtYV9oYW5kbGUsIGdmcF90IGdmcCwgdW5zaWduZWQgbG9uZyBhdHRycykKIHsKIAlz dHJ1Y3QgaW91bml0X3N0cnVjdCAqaW91bml0ID0gZGV2LT5hcmNoZGF0YS5pb21tdTsKLQl1bnNp Z25lZCBsb25nIHBhZ2UsIGVuZDsKKwl1bnNpZ25lZCBsb25nIHZhLCBhZGRyLCBwYWdlLCBlbmQs IHJldDsKIAlwZ3Byb3RfdCBkdm1hX3Byb3Q7CiAJaW9wdGVfdCBfX2lvbWVtICppb3B0ZTsKIAot CSpwYmEgPSBhZGRyOworCS8qIFhYWCBTbyB3aGF0IGlzIG1heHBoeXMgZm9yIHVzIGFuZCBob3cg ZG8gZHJpdmVycyBrbm93IGl0PyAqLworCWlmICghbGVuIHx8IGxlbiA+IDI1NiAqIDEwMjQpCisJ CXJldHVybiBOVUxMOworCisJbGVuID0gUEFHRV9BTElHTihsZW4pOworCXZhID0gX19nZXRfZnJl ZV9wYWdlcyhnZnAsIGdldF9vcmRlcihsZW4pKTsKKwlpZiAoIXZhKQorCQlyZXR1cm4gTlVMTDsK KworCWFkZHIgPSByZXQgPSBzcGFyY19kbWFfYWxsb2NfcmVzb3VyY2UoZGV2LCBsZW4pOworCWlm ICghYWRkcikKKwkJZ290byBvdXRfZnJlZV9wYWdlczsKKwkqZG1hX2hhbmRsZSA9IGFkZHI7CiAK IAlkdm1hX3Byb3QgPSBfX3BncHJvdChTUk1NVV9DQUNIRSB8IFNSTU1VX0VUX1BURSB8IFNSTU1V X1BSSVYpOwogCWVuZCA9IFBBR0VfQUxJR04oKGFkZHIgKyBsZW4pKTsKQEAgLTIzNywyNyArMjYx LDMyIEBAIHN0YXRpYyBpbnQgaW91bml0X21hcF9kbWFfYXJlYShzdHJ1Y3QgZGV2aWNlICpkZXYs IGRtYV9hZGRyX3QgKnBiYSwgdW5zaWduZWQgbG9uCiAJZmx1c2hfY2FjaGVfYWxsKCk7CiAJZmx1 c2hfdGxiX2FsbCgpOwogCi0JcmV0dXJuIDA7CisJcmV0dXJuICh2b2lkICopcmV0OworCitvdXRf ZnJlZV9wYWdlczoKKwlmcmVlX3BhZ2VzKHZhLCBnZXRfb3JkZXIobGVuKSk7CisJcmV0dXJuIE5V TEw7CiB9CiAKLXN0YXRpYyB2b2lkIGlvdW5pdF91bm1hcF9kbWFfYXJlYShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IGxlbikKK3N0YXRpYyB2b2lkIGlvdW5pdF9m cmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIHZvaWQgKmNwdV9hZGRyLAorCQlk bWFfYWRkcl90IGRtYV9hZGRyLCB1bnNpZ25lZCBsb25nIGF0dHJzKQogewogCS8qIFhYWCBTb21l Ym9keSBwbGVhc2UgZmlsbCB0aGlzIGluICovCiB9CiAjZW5kaWYKIAotc3RhdGljIGNvbnN0IHN0 cnVjdCBzcGFyYzMyX2RtYV9vcHMgaW91bml0X2RtYV9vcHMgPSB7Ci0JLmdldF9zY3NpX29uZQkJ PSBpb3VuaXRfZ2V0X3Njc2lfb25lLAotCS5nZXRfc2NzaV9zZ2wJCT0gaW91bml0X2dldF9zY3Np X3NnbCwKLQkucmVsZWFzZV9zY3NpX29uZQk9IGlvdW5pdF9yZWxlYXNlX3Njc2lfb25lLAotCS5y ZWxlYXNlX3Njc2lfc2dsCT0gaW91bml0X3JlbGVhc2Vfc2NzaV9zZ2wsCitzdGF0aWMgY29uc3Qg c3RydWN0IGRtYV9tYXBfb3BzIGlvdW5pdF9kbWFfb3BzID0gewogI2lmZGVmIENPTkZJR19TQlVT Ci0JLm1hcF9kbWFfYXJlYQkJPSBpb3VuaXRfbWFwX2RtYV9hcmVhLAotCS51bm1hcF9kbWFfYXJl YQkJPSBpb3VuaXRfdW5tYXBfZG1hX2FyZWEsCisJLmFsbG9jCQkJPSBpb3VuaXRfYWxsb2MsCisJ LmZyZWUJCQk9IGlvdW5pdF9mcmVlLAogI2VuZGlmCisJLm1hcF9wYWdlCQk9IGlvdW5pdF9tYXBf cGFnZSwKKwkudW5tYXBfcGFnZQkJPSBpb3VuaXRfdW5tYXBfcGFnZSwKKwkubWFwX3NnCQkJPSBp b3VuaXRfbWFwX3NnLAorCS51bm1hcF9zZwkJPSBpb3VuaXRfdW5tYXBfc2csCiB9OwogCiB2b2lk IF9faW5pdCBsZF9tbXVfaW91bml0KHZvaWQpCiB7Ci0Jc3BhcmMzMl9kbWFfb3BzID0gJmlvdW5p dF9kbWFfb3BzOworCWRtYV9vcHMgPSAmaW91bml0X2RtYV9vcHM7CiB9CmRpZmYgLS1naXQgYS9h cmNoL3NwYXJjL21tL2lvbW11LmMgYi9hcmNoL3NwYXJjL21tL2lvbW11LmMKaW5kZXggMmM1Zjhh NjQ4ZjhjLi4zNTk5NDg1NzE3ZTcgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMvbW0vaW9tbXUuYwor KysgYi9hcmNoL3NwYXJjL21tL2lvbW11LmMKQEAgLTEzLDcgKzEzLDcgQEAKICNpbmNsdWRlIDxs aW51eC9tbS5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9oaWdo bWVtLmg+CS8qIHB0ZV9vZmZzZXRfbWFwID0+IGttYXBfYXRvbWljICovCi0jaW5jbHVkZSA8bGlu dXgvc2NhdHRlcmxpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgogI2luY2x1 ZGUgPGxpbnV4L29mLmg+CiAjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+CiAKQEAgLTIwNSwz OCArMjA1LDQ0IEBAIHN0YXRpYyB1MzIgaW9tbXVfZ2V0X29uZShzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgbnBhZ2VzKQogCXJldHVybiBidXNhMDsKIH0KIAotc3Rh dGljIHUzMiBpb21tdV9nZXRfc2NzaV9vbmUoc3RydWN0IGRldmljZSAqZGV2LCBjaGFyICp2YWRk ciwgdW5zaWduZWQgaW50IGxlbikKK3N0YXRpYyBkbWFfYWRkcl90IF9fc2J1c19pb21tdV9tYXBf cGFnZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwYWdlICpwYWdlLAorCQl1bnNpZ25lZCBs b25nIG9mZnNldCwgc2l6ZV90IGxlbikKIHsKLQl1bnNpZ25lZCBsb25nIG9mZjsKLQlpbnQgbnBh Z2VzOwotCXN0cnVjdCBwYWdlICpwYWdlOwotCXUzMiBidXNhOwotCi0Jb2ZmID0gKHVuc2lnbmVk IGxvbmcpdmFkZHIgJiB+UEFHRV9NQVNLOwotCW5wYWdlcyA9IChvZmYgKyBsZW4gKyBQQUdFX1NJ WkUtMSkgPj4gUEFHRV9TSElGVDsKLQlwYWdlID0gdmlydF90b19wYWdlKCh1bnNpZ25lZCBsb25n KXZhZGRyICYgUEFHRV9NQVNLKTsKLQlidXNhID0gaW9tbXVfZ2V0X29uZShkZXYsIHBhZ2UsIG5w YWdlcyk7Ci0JcmV0dXJuIGJ1c2EgKyBvZmY7CisJdm9pZCAqdmFkZHIgPSBwYWdlX2FkZHJlc3Mo cGFnZSkgKyBvZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBvZmYgPSAodW5zaWduZWQgbG9uZyl2YWRk ciAmIH5QQUdFX01BU0s7CisJdW5zaWduZWQgbG9uZyBucGFnZXMgPSAob2ZmICsgbGVuICsgUEFH RV9TSVpFIC0gMSkgPj4gUEFHRV9TSElGVDsKKwkKKwkvKiBYWFggU28gd2hhdCBpcyBtYXhwaHlz IGZvciB1cyBhbmQgaG93IGRvIGRyaXZlcnMga25vdyBpdD8gKi8KKwlpZiAoIWxlbiB8fCBsZW4g PiAyNTYgKiAxMDI0KQorCQlyZXR1cm4gRE1BX01BUFBJTkdfRVJST1I7CisJcmV0dXJuIGlvbW11 X2dldF9vbmUoZGV2LCB2aXJ0X3RvX3BhZ2UodmFkZHIpLCBucGFnZXMpICsgb2ZmOwogfQogCi1z dGF0aWMgX191MzIgaW9tbXVfZ2V0X3Njc2lfb25lX2dmbHVzaChzdHJ1Y3QgZGV2aWNlICpkZXYs IGNoYXIgKnZhZGRyLCB1bnNpZ25lZCBsb25nIGxlbikKK3N0YXRpYyBkbWFfYWRkcl90IHNidXNf aW9tbXVfbWFwX3BhZ2VfZ2ZsdXNoKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJc3RydWN0IHBhZ2Ug KnBhZ2UsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBzaXplX3QgbGVuLAorCQllbnVtIGRtYV9kYXRh X2RpcmVjdGlvbiBkaXIsIHVuc2lnbmVkIGxvbmcgYXR0cnMpCiB7CiAJZmx1c2hfcGFnZV9mb3Jf ZG1hKDApOwotCXJldHVybiBpb21tdV9nZXRfc2NzaV9vbmUoZGV2LCB2YWRkciwgbGVuKTsKKwly ZXR1cm4gX19zYnVzX2lvbW11X21hcF9wYWdlKGRldiwgcGFnZSwgb2Zmc2V0LCBsZW4pOwogfQog Ci1zdGF0aWMgX191MzIgaW9tbXVfZ2V0X3Njc2lfb25lX3BmbHVzaChzdHJ1Y3QgZGV2aWNlICpk ZXYsIGNoYXIgKnZhZGRyLCB1bnNpZ25lZCBsb25nIGxlbikKK3N0YXRpYyBkbWFfYWRkcl90IHNi dXNfaW9tbXVfbWFwX3BhZ2VfcGZsdXNoKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJc3RydWN0IHBh Z2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBzaXplX3QgbGVuLAorCQllbnVtIGRtYV9k YXRhX2RpcmVjdGlvbiBkaXIsIHVuc2lnbmVkIGxvbmcgYXR0cnMpCiB7Ci0JdW5zaWduZWQgbG9u ZyBwYWdlID0gKCh1bnNpZ25lZCBsb25nKSB2YWRkcikgJiBQQUdFX01BU0s7CisJdm9pZCAqdmFk ZHIgPSBwYWdlX2FkZHJlc3MocGFnZSkgKyBvZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBwID0gKCh1 bnNpZ25lZCBsb25nKXZhZGRyKSAmIFBBR0VfTUFTSzsKIAotCXdoaWxlKHBhZ2UgPCAoKHVuc2ln bmVkIGxvbmcpKHZhZGRyICsgbGVuKSkpIHsKLQkJZmx1c2hfcGFnZV9mb3JfZG1hKHBhZ2UpOwot CQlwYWdlICs9IFBBR0VfU0laRTsKKwl3aGlsZSAocCA8ICh1bnNpZ25lZCBsb25nKXZhZGRyICsg bGVuKSB7CisJCWZsdXNoX3BhZ2VfZm9yX2RtYShwKTsKKwkJcCArPSBQQUdFX1NJWkU7CiAJfQot CXJldHVybiBpb21tdV9nZXRfc2NzaV9vbmUoZGV2LCB2YWRkciwgbGVuKTsKKworCXJldHVybiBf X3NidXNfaW9tbXVfbWFwX3BhZ2UoZGV2LCBwYWdlLCBvZmZzZXQsIGxlbik7CiB9CiAKLXN0YXRp YyB2b2lkIGlvbW11X2dldF9zY3NpX3NnbF9nZmx1c2goc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3Qgc2NhdHRlcmxpc3QgKnNnLCBpbnQgc3opCitzdGF0aWMgaW50IHNidXNfaW9tbXVfbWFwX3Nn X2dmbHVzaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csCisJCWlu dCBzeiwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLCB1bnNpZ25lZCBsb25nIGF0dHJzKQog ewogCWludCBuOwogCkBAIC0yNDgsOSArMjU0LDEyIEBAIHN0YXRpYyB2b2lkIGlvbW11X2dldF9z Y3NpX3NnbF9nZmx1c2goc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNn CiAJCXNnLT5kbWFfbGVuZ3RoID0gc2ctPmxlbmd0aDsKIAkJc2cgPSBzZ19uZXh0KHNnKTsKIAl9 CisKKwlyZXR1cm4gc3o7CiB9CiAKLXN0YXRpYyB2b2lkIGlvbW11X2dldF9zY3NpX3NnbF9wZmx1 c2goc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCBpbnQgc3opCitz dGF0aWMgaW50IHNidXNfaW9tbXVfbWFwX3NnX3BmbHVzaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBzY2F0dGVybGlzdCAqc2csCisJCWludCBzeiwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24g ZGlyLCB1bnNpZ25lZCBsb25nIGF0dHJzKQogewogCXVuc2lnbmVkIGxvbmcgcGFnZSwgb2xkcGFn ZSA9IDA7CiAJaW50IG4sIGk7CkBAIC0yNzksNiArMjg4LDggQEAgc3RhdGljIHZvaWQgaW9tbXVf Z2V0X3Njc2lfc2dsX3BmbHVzaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlz dCAqc2cKIAkJc2ctPmRtYV9sZW5ndGggPSBzZy0+bGVuZ3RoOwogCQlzZyA9IHNnX25leHQoc2cp OwogCX0KKworCXJldHVybiBzejsKIH0KIAogc3RhdGljIHZvaWQgaW9tbXVfcmVsZWFzZV9vbmUo c3RydWN0IGRldmljZSAqZGV2LCB1MzIgYnVzYSwgaW50IG5wYWdlcykKQEAgLTI5NywyMyArMzA4 LDIzIEBAIHN0YXRpYyB2b2lkIGlvbW11X3JlbGVhc2Vfb25lKHN0cnVjdCBkZXZpY2UgKmRldiwg dTMyIGJ1c2EsIGludCBucGFnZXMpCiAJYml0X21hcF9jbGVhcigmaW9tbXUtPnVzZW1hcCwgaW9w dGV4LCBucGFnZXMpOwogfQogCi1zdGF0aWMgdm9pZCBpb21tdV9yZWxlYXNlX3Njc2lfb25lKHN0 cnVjdCBkZXZpY2UgKmRldiwgX191MzIgdmFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuKQorc3RhdGlj IHZvaWQgc2J1c19pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJf dCBkbWFfYWRkciwKKwkJc2l6ZV90IGxlbiwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLCB1 bnNpZ25lZCBsb25nIGF0dHJzKQogewotCXVuc2lnbmVkIGxvbmcgb2ZmOworCXVuc2lnbmVkIGxv bmcgb2ZmID0gZG1hX2FkZHIgJiB+UEFHRV9NQVNLOwogCWludCBucGFnZXM7CiAKLQlvZmYgPSB2 YWRkciAmIH5QQUdFX01BU0s7CiAJbnBhZ2VzID0gKG9mZiArIGxlbiArIFBBR0VfU0laRS0xKSA+ PiBQQUdFX1NISUZUOwotCWlvbW11X3JlbGVhc2Vfb25lKGRldiwgdmFkZHIgJiBQQUdFX01BU0ss IG5wYWdlcyk7CisJaW9tbXVfcmVsZWFzZV9vbmUoZGV2LCBkbWFfYWRkciAmIFBBR0VfTUFTSywg bnBhZ2VzKTsKIH0KIAotc3RhdGljIHZvaWQgaW9tbXVfcmVsZWFzZV9zY3NpX3NnbChzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIGludCBzeikKK3N0YXRpYyB2b2lk IHNidXNfaW9tbXVfdW5tYXBfc2coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxp c3QgKnNnLAorCQlpbnQgc3osIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpciwgdW5zaWduZWQg bG9uZyBhdHRycykKIHsKIAlpbnQgbjsKIAogCXdoaWxlKHN6ICE9IDApIHsKIAkJLS1zejsKLQog CQluID0gKHNnLT5sZW5ndGggKyBzZy0+b2Zmc2V0ICsgUEFHRV9TSVpFLTEpID4+IFBBR0VfU0hJ RlQ7CiAJCWlvbW11X3JlbGVhc2Vfb25lKGRldiwgc2ctPmRtYV9hZGRyZXNzICYgUEFHRV9NQVNL LCBuKTsKIAkJc2ctPmRtYV9hZGRyZXNzID0gMHgyMTIxMjEyMTsKQEAgLTMyMiwxNSArMzMzLDI4 IEBAIHN0YXRpYyB2b2lkIGlvbW11X3JlbGVhc2Vfc2NzaV9zZ2woc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCBpCiB9CiAKICNpZmRlZiBDT05GSUdfU0JVUwotc3Rh dGljIGludCBpb21tdV9tYXBfZG1hX2FyZWEoc3RydWN0IGRldmljZSAqZGV2LCBkbWFfYWRkcl90 ICpwYmEsIHVuc2lnbmVkIGxvbmcgdmEsCi0JCQkgICAgICB1bnNpZ25lZCBsb25nIGFkZHIsIGlu dCBsZW4pCitzdGF0aWMgdm9pZCAqc2J1c19pb21tdV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYs IHNpemVfdCBsZW4sCisJCWRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsIGdmcF90IGdmcCwgdW5zaWdu ZWQgbG9uZyBhdHRycykKIHsKIAlzdHJ1Y3QgaW9tbXVfc3RydWN0ICppb21tdSA9IGRldi0+YXJj aGRhdGEuaW9tbXU7Ci0JdW5zaWduZWQgbG9uZyBwYWdlLCBlbmQ7CisJdW5zaWduZWQgbG9uZyB2 YSwgYWRkciwgcGFnZSwgZW5kLCByZXQ7CiAJaW9wdGVfdCAqaW9wdGUgPSBpb21tdS0+cGFnZV90 YWJsZTsKIAlpb3B0ZV90ICpmaXJzdDsKIAlpbnQgaW9wdGV4OwogCisJLyogWFhYIFNvIHdoYXQg aXMgbWF4cGh5cyBmb3IgdXMgYW5kIGhvdyBkbyBkcml2ZXJzIGtub3cgaXQ/ICovCisJaWYgKCFs ZW4gfHwgbGVuID4gMjU2ICogMTAyNCkKKwkJcmV0dXJuIE5VTEw7CisKKwlsZW4gPSBQQUdFX0FM SUdOKGxlbik7CisJdmEgPSBfX2dldF9mcmVlX3BhZ2VzKGdmcCwgZ2V0X29yZGVyKGxlbikpOwor CWlmICh2YSA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCWFkZHIgPSByZXQgPSBzcGFyY19kbWFf YWxsb2NfcmVzb3VyY2UoZGV2LCBsZW4pOworCWlmICghYWRkcikKKwkJZ290byBvdXRfZnJlZV9w YWdlczsKKwogCUJVR19PTigodmEgJiB+UEFHRV9NQVNLKSAhPSAwKTsKIAlCVUdfT04oKGFkZHIg JiB+UEFHRV9NQVNLKSAhPSAwKTsKIAlCVUdfT04oKGxlbiAmIH5QQUdFX01BU0spICE9IDApOwpA QCAtMzg1LDE2ICs0MDksMjUgQEAgc3RhdGljIGludCBpb21tdV9tYXBfZG1hX2FyZWEoc3RydWN0 IGRldmljZSAqZGV2LCBkbWFfYWRkcl90ICpwYmEsIHVuc2lnbmVkIGxvbmcKIAlmbHVzaF90bGJf YWxsKCk7CiAJaW9tbXVfaW52YWxpZGF0ZShpb21tdS0+cmVncyk7CiAKLQkqcGJhID0gaW9tbXUt PnN0YXJ0ICsgKGlvcHRleCA8PCBQQUdFX1NISUZUKTsKLQlyZXR1cm4gMDsKKwkqZG1hX2hhbmRs ZSA9IGlvbW11LT5zdGFydCArIChpb3B0ZXggPDwgUEFHRV9TSElGVCk7CisJcmV0dXJuICh2b2lk ICopcmV0OworCitvdXRfZnJlZV9wYWdlczoKKwlmcmVlX3BhZ2VzKHZhLCBnZXRfb3JkZXIobGVu KSk7CisJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyB2b2lkIGlvbW11X3VubWFwX2RtYV9hcmVh KHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBidXNhLCBpbnQgbGVuKQorc3RhdGlj IHZvaWQgc2J1c19pb21tdV9mcmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IGxlbiwgdm9p ZCAqY3B1X2FkZHIsCisJCQkgICAgICAgZG1hX2FkZHJfdCBidXNhLCB1bnNpZ25lZCBsb25nIGF0 dHJzKQogewogCXN0cnVjdCBpb21tdV9zdHJ1Y3QgKmlvbW11ID0gZGV2LT5hcmNoZGF0YS5pb21t dTsKIAlpb3B0ZV90ICppb3B0ZSA9IGlvbW11LT5wYWdlX3RhYmxlOwotCXVuc2lnbmVkIGxvbmcg ZW5kOworCXN0cnVjdCBwYWdlICpwYWdlID0gdmlydF90b19wYWdlKGNwdV9hZGRyKTsKIAlpbnQg aW9wdGV4ID0gKGJ1c2EgLSBpb21tdS0+c3RhcnQpID4+IFBBR0VfU0hJRlQ7CisJdW5zaWduZWQg bG9uZyBlbmQ7CisKKwlpZiAoIXNwYXJjX2RtYV9mcmVlX3Jlc291cmNlKGNwdV9hZGRyLCBsZW4p KQorCQlyZXR1cm47CiAKIAlCVUdfT04oKGJ1c2EgJiB+UEFHRV9NQVNLKSAhPSAwKTsKIAlCVUdf T04oKGxlbiAmIH5QQUdFX01BU0spICE9IDApOwpAQCAtNDA4LDM4ICs0NDEsNDAgQEAgc3RhdGlj IHZvaWQgaW9tbXVfdW5tYXBfZG1hX2FyZWEoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBs b25nIGJ1c2EsIGludCBsZW4KIAlmbHVzaF90bGJfYWxsKCk7CiAJaW9tbXVfaW52YWxpZGF0ZShp b21tdS0+cmVncyk7CiAJYml0X21hcF9jbGVhcigmaW9tbXUtPnVzZW1hcCwgaW9wdGV4LCBsZW4g Pj4gUEFHRV9TSElGVCk7CisKKwlfX2ZyZWVfcGFnZXMocGFnZSwgZ2V0X29yZGVyKGxlbikpOwog fQogI2VuZGlmCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BhcmMzMl9kbWFfb3BzIGlvbW11X2Rt YV9nZmx1c2hfb3BzID0gewotCS5nZXRfc2NzaV9vbmUJCT0gaW9tbXVfZ2V0X3Njc2lfb25lX2dm bHVzaCwKLQkuZ2V0X3Njc2lfc2dsCQk9IGlvbW11X2dldF9zY3NpX3NnbF9nZmx1c2gsCi0JLnJl bGVhc2Vfc2NzaV9vbmUJPSBpb21tdV9yZWxlYXNlX3Njc2lfb25lLAotCS5yZWxlYXNlX3Njc2lf c2dsCT0gaW9tbXVfcmVsZWFzZV9zY3NpX3NnbCwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX21h cF9vcHMgc2J1c19pb21tdV9kbWFfZ2ZsdXNoX29wcyA9IHsKICNpZmRlZiBDT05GSUdfU0JVUwot CS5tYXBfZG1hX2FyZWEJCT0gaW9tbXVfbWFwX2RtYV9hcmVhLAotCS51bm1hcF9kbWFfYXJlYQkJ PSBpb21tdV91bm1hcF9kbWFfYXJlYSwKKwkuYWxsb2MJCQk9IHNidXNfaW9tbXVfYWxsb2MsCisJ LmZyZWUJCQk9IHNidXNfaW9tbXVfZnJlZSwKICNlbmRpZgorCS5tYXBfcGFnZQkJPSBzYnVzX2lv bW11X21hcF9wYWdlX2dmbHVzaCwKKwkudW5tYXBfcGFnZQkJPSBzYnVzX2lvbW11X3VubWFwX3Bh Z2UsCisJLm1hcF9zZwkJCT0gc2J1c19pb21tdV9tYXBfc2dfZ2ZsdXNoLAorCS51bm1hcF9zZwkJ PSBzYnVzX2lvbW11X3VubWFwX3NnLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBzcGFyYzMy X2RtYV9vcHMgaW9tbXVfZG1hX3BmbHVzaF9vcHMgPSB7Ci0JLmdldF9zY3NpX29uZQkJPSBpb21t dV9nZXRfc2NzaV9vbmVfcGZsdXNoLAotCS5nZXRfc2NzaV9zZ2wJCT0gaW9tbXVfZ2V0X3Njc2lf c2dsX3BmbHVzaCwKLQkucmVsZWFzZV9zY3NpX29uZQk9IGlvbW11X3JlbGVhc2Vfc2NzaV9vbmUs Ci0JLnJlbGVhc2Vfc2NzaV9zZ2wJPSBpb21tdV9yZWxlYXNlX3Njc2lfc2dsLAorc3RhdGljIGNv bnN0IHN0cnVjdCBkbWFfbWFwX29wcyBzYnVzX2lvbW11X2RtYV9wZmx1c2hfb3BzID0gewogI2lm ZGVmIENPTkZJR19TQlVTCi0JLm1hcF9kbWFfYXJlYQkJPSBpb21tdV9tYXBfZG1hX2FyZWEsCi0J LnVubWFwX2RtYV9hcmVhCQk9IGlvbW11X3VubWFwX2RtYV9hcmVhLAorCS5hbGxvYwkJCT0gc2J1 c19pb21tdV9hbGxvYywKKwkuZnJlZQkJCT0gc2J1c19pb21tdV9mcmVlLAogI2VuZGlmCisJLm1h cF9wYWdlCQk9IHNidXNfaW9tbXVfbWFwX3BhZ2VfcGZsdXNoLAorCS51bm1hcF9wYWdlCQk9IHNi dXNfaW9tbXVfdW5tYXBfcGFnZSwKKwkubWFwX3NnCQkJPSBzYnVzX2lvbW11X21hcF9zZ19wZmx1 c2gsCisJLnVubWFwX3NnCQk9IHNidXNfaW9tbXVfdW5tYXBfc2csCiB9OwogCiB2b2lkIF9faW5p dCBsZF9tbXVfaW9tbXUodm9pZCkKIHsKIAlpZiAoZmx1c2hfcGFnZV9mb3JfZG1hX2dsb2JhbCkg ewogCQkvKiBmbHVzaF9wYWdlX2Zvcl9kbWEgZmx1c2hlcyBldmVyeXRoaW5nLCBubyBtYXR0ZXIg b2Ygd2hhdCBwYWdlIGlzIGl0ICovCi0JCXNwYXJjMzJfZG1hX29wcyA9ICZpb21tdV9kbWFfZ2Zs dXNoX29wczsKKwkJZG1hX29wcyA9ICZzYnVzX2lvbW11X2RtYV9nZmx1c2hfb3BzOwogCX0gZWxz ZSB7Ci0JCXNwYXJjMzJfZG1hX29wcyA9ICZpb21tdV9kbWFfcGZsdXNoX29wczsKKwkJZG1hX29w cyA9ICZzYnVzX2lvbW11X2RtYV9wZmx1c2hfb3BzOwogCX0KIAogCWlmICh2aWtpbmdfbXhjY19w cmVzZW50IHx8IHNybW11X21vZHR5cGUgPT0gSHlwZXJTcGFyYykgewotLSAKMi4xOS4yCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK