Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932819AbZLQDKX (ORCPT ); Wed, 16 Dec 2009 22:10:23 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1758487AbZLQDKR (ORCPT ); Wed, 16 Dec 2009 22:10:17 -0500 Received: from mail-pz0-f171.google.com ([209.85.222.171]:38418 "EHLO mail-pz0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758657AbZLQDKP (ORCPT ); Wed, 16 Dec 2009 22:10:15 -0500 MIME-Version: 1.0 In-Reply-To: <29ab51dc0912111815s2095539cjc3d0450435725452@mail.gmail.com> References: <20091211080254.GB7625@linux-sh.org> <29ab51dc0912111815s2095539cjc3d0450435725452@mail.gmail.com> From: Nobuhiro Iwamatsu Date: Thu, 17 Dec 2009 12:09:53 +0900 Message-ID: <29ab51dc0912161909r7a6e5397sc751a49a636d755d@mail.gmail.com> Subject: Re: [PATCH 2/3 v2] sh: fix DMA driver's descriptor chaining and cookie assignment To: Paul Mundt Cc: Guennadi Liakhovetski , linux-kernel@vger.kernel.org, Dan Williams , linux-sh@vger.kernel.org Content-Type: multipart/mixed; boundary=00504502b2233066a8047ae3f66f Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 24488 Lines: 351 --00504502b2233066a8047ae3f66f Content-Type: text/plain; charset=ISO-8859-1 Hi, 2009/12/12 Nobuhiro Iwamatsu : > Hi, > > Oh, I was going to check an old patch. > > 2009/12/11 Paul Mundt : >> On Thu, Dec 10, 2009 at 06:35:11PM +0100, Guennadi Liakhovetski wrote: >>> The SH DMA driver wrongly assigns negative cookies to transfer descriptors, >>> also, its chaining of partial descriptors is broken. The latter problem is >>> usually invisible, because maximum transfer size per chunk is 16M, but if you >>> artificially set this limit lower, the driver fails. Since cookies are also >>> used in chunk management, both these problems are fixed in one patch. As side >>> effects a possible memory leak, when descriptors are prepared, but not >>> submitted, and multiple races have also been fixed. >>> >>> Signed-off-by: Guennadi Liakhovetski >> >> Looks good to me. > Me too. > > But I want to check other CPU of sh. I will do next week. > Please wait "Acked-by". > > I tested this patch. But I can not apply to Paul's git/HEAD. I re-create patch and I attached. This version of patch work fine. Guennadi, could you test this patch on sh7724? Best regards, Nobuhiro -- Nobuhiro Iwamatsu iwamatsu at {nigauri.org / debian.org} GPG ID: 40AD1FA6 --00504502b2233066a8047ae3f66f Content-Type: text/plain; charset=US-ASCII; name="sh-fix-DMA-driver-s-descriptor-chaining-and-cookie-a.patch" Content-Disposition: attachment; filename="sh-fix-DMA-driver-s-descriptor-chaining-and-cookie-a.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g3ay8op70 RnJvbSA1YTE3OTM0ZjVjMjczMWIzNWU3MTQxOGU5NGJmNWU1NTdhMmMxZjE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5v cmc+CkRhdGU6IFRodSwgMTcgRGVjIDIwMDkgMTA6NDY6MDAgKzA5MDAKU3ViamVjdDogW1BBVENI IHYzXSBzaDogZml4IERNQSBkcml2ZXIncyBkZXNjcmlwdG9yIGNoYWluaW5nIGFuZCBjb29raWUg YXNzaWdubWVudAoKVGhlIFNIIERNQSBkcml2ZXIgd3JvbmdseSBhc3NpZ25zIG5lZ2F0aXZlIGNv b2tpZXMgdG8gdHJhbnNmZXIgZGVzY3JpcHRvcnMsCmFsc28sIGl0cyBjaGFpbmluZyBvZiBwYXJ0 aWFsIGRlc2NyaXB0b3JzIGlzIGJyb2tlbi4gVGhlIGxhdHRlciBwcm9ibGVtIGlzCnVzdWFsbHkg aW52aXNpYmxlLCBiZWNhdXNlIG1heGltdW0gdHJhbnNmZXIgc2l6ZSBwZXIgY2h1bmsgaXMgMTZN LCBidXQgaWYgeW91CmFydGlmaWNpYWxseSBzZXQgdGhpcyBsaW1pdCBsb3dlciwgdGhlIGRyaXZl ciBmYWlscy4gU2luY2UgY29va2llcyBhcmUgYWxzbwp1c2VkIGluIGNodW5rIG1hbmFnZW1lbnQs IGJvdGggdGhlc2UgcHJvYmxlbXMgYXJlIGZpeGVkIGluIG9uZSBwYXRjaC4gQXMgc2lkZQplZmZl Y3RzIGEgcG9zc2libGUgbWVtb3J5IGxlYWssIHdoZW4gZGVzY3JpcHRvcnMgYXJlIHByZXBhcmVk LCBidXQgbm90CnN1Ym1pdHRlZCwgYW5kIG11bHRpcGxlIHJhY2VzIGhhdmUgYWxzbyBiZWVuIGZp eGVkLgoKU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNr aUBnbXguZGU+ClNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdh dXJpLm9yZz4KLS0tCiBkcml2ZXJzL2RtYS9zaGRtYS5jIHwgIDMyNyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9kbWEvc2hkbWEuaCB8 ICAgIDkgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjIyIGluc2VydGlvbnMoKyksIDExNCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9zaGRtYS5jIGIvZHJpdmVycy9kbWEvc2hk bWEuYwppbmRleCAyZTRhNTRjLi43NzUwZTY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9zaGRt YS5jCisrKyBiL2RyaXZlcnMvZG1hL3NoZG1hLmMKQEAgLTIzLDE2ICsyMywxOSBAQAogI2luY2x1 ZGUgPGxpbnV4L2RtYWVuZ2luZS5oPgogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAjaW5jbHVk ZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KLSNpbmNsdWRlIDxsaW51eC9kbWFwb29sLmg+CiAjaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CiAjaW5jbHVkZSA8Y3B1L2RtYS5oPgogI2lu Y2x1ZGUgPGFzbS9kbWEtc2guaD4KICNpbmNsdWRlICJzaGRtYS5oIgogCiAvKiBETUEgZGVzY3Jp cHRvciBjb250cm9sICovCi0jZGVmaW5lIERFU0NfTEFTVAkoLTEpCi0jZGVmaW5lIERFU0NfQ09N UAkoMSkKLSNkZWZpbmUgREVTQ19OQ09NUAkoMCkKK2VudW0gc2hfZG1hZV9kZXNjX3N0YXR1cyB7 CisJREVTQ19JRExFLAorCURFU0NfUFJFUEFSRUQsCisJREVTQ19TVUJNSVRURUQsCisJREVTQ19D T01QTEVURUQsCS8qIGNvbXBsZXRlZCwgaGF2ZSB0byBjYWxsIGNhbGxiYWNrICovCisJREVTQ19X QUlUSU5HLAkvKiBjYWxsYmFjayBjYWxsZWQsIHdhaXRpbmcgZm9yIGFjayAvIHJlLXN1Ym1pdCAq LworfTsKIAogI2RlZmluZSBOUl9ERVNDU19QRVJfQ0hBTk5FTCAzMgogLyoKQEAgLTQ1LDYgKzQ4 LDggQEAKICAqLwogI2RlZmluZSBSU19ERUZBVUxUICAoUlNfRFVBTCkKIAorc3RhdGljIHZvaWQg c2hfZG1hZV9jaGFuX2xkX2NsZWFudXAoc3RydWN0IHNoX2RtYWVfY2hhbiAqc2hfY2hhbiwgYm9v bCBhbGwpOworCiAjZGVmaW5lIFNIX0RNQUNfQ0hBTl9CQVNFKGlkKSAoZG1hX2Jhc2VfYWRkcltp ZF0pCiBzdGF0aWMgdm9pZCBzaF9kbWFlX3dyaXRlbChzdHJ1Y3Qgc2hfZG1hZV9jaGFuICpzaF9k YywgdTMyIGRhdGEsIHUzMiByZWcpCiB7CkBAIC0xMDYsMTEgKzExMSwxMSBAQCBzdGF0aWMgaW5s aW5lIHVuc2lnbmVkIGludCBjYWxjX3htaXRfc2hpZnQoc3RydWN0IHNoX2RtYWVfY2hhbiAqc2hf Y2hhbikKIAlyZXR1cm4gdHNfc2hpZnRbKGNoY3IgJiBDSENSX1RTX01BU0spID4+IENIQ1JfVFNf U0hJRlRdOwogfQogCi1zdGF0aWMgdm9pZCBkbWFlX3NldF9yZWcoc3RydWN0IHNoX2RtYWVfY2hh biAqc2hfY2hhbiwgc3RydWN0IHNoX2RtYWVfcmVncyBodykKK3N0YXRpYyB2b2lkIGRtYWVfc2V0 X3JlZyhzdHJ1Y3Qgc2hfZG1hZV9jaGFuICpzaF9jaGFuLCBzdHJ1Y3Qgc2hfZG1hZV9yZWdzICpo dykKIHsKLQlzaF9kbWFlX3dyaXRlbChzaF9jaGFuLCBody5zYXIsIFNBUik7Ci0Jc2hfZG1hZV93 cml0ZWwoc2hfY2hhbiwgaHcuZGFyLCBEQVIpOwotCXNoX2RtYWVfd3JpdGVsKHNoX2NoYW4sIGh3 LnRjciA+PiBjYWxjX3htaXRfc2hpZnQoc2hfY2hhbiksIFRDUik7CisJc2hfZG1hZV93cml0ZWwo c2hfY2hhbiwgaHctPnNhciwgU0FSKTsKKwlzaF9kbWFlX3dyaXRlbChzaF9jaGFuLCBody0+ZGFy LCBEQVIpOworCXNoX2RtYWVfd3JpdGVsKHNoX2NoYW4sIGh3LT50Y3IgPj4gY2FsY194bWl0X3No aWZ0KHNoX2NoYW4pLCBUQ1IpOwogfQogCiBzdGF0aWMgdm9pZCBkbWFlX3N0YXJ0KHN0cnVjdCBz aF9kbWFlX2NoYW4gKnNoX2NoYW4pCkBAIC0xODQsOCArMTg5LDkgQEAgc3RhdGljIGludCBkbWFl X3NldF9kbWFycyhzdHJ1Y3Qgc2hfZG1hZV9jaGFuICpzaF9jaGFuLCB1MTYgdmFsKQogCiBzdGF0 aWMgZG1hX2Nvb2tpZV90IHNoX2RtYWVfdHhfc3VibWl0KHN0cnVjdCBkbWFfYXN5bmNfdHhfZGVz Y3JpcHRvciAqdHgpCiB7Ci0Jc3RydWN0IHNoX2Rlc2MgKmRlc2MgPSB0eF90b19zaF9kZXNjKHR4 KTsKKwlzdHJ1Y3Qgc2hfZGVzYyAqZGVzYyA9IHR4X3RvX3NoX2Rlc2ModHgpLCAqY2h1bmssICps YXN0ID0gZGVzYywgKmM7CiAJc3RydWN0IHNoX2RtYWVfY2hhbiAqc2hfY2hhbiA9IHRvX3NoX2No YW4odHgtPmNoYW4pOworCWRtYV9hc3luY190eF9jYWxsYmFjayBjYWxsYmFjayA9IHR4LT5jYWxs YmFjazsKIAlkbWFfY29va2llX3QgY29va2llOwogCiAJc3Bpbl9sb2NrX2JoKCZzaF9jaGFuLT5k ZXNjX2xvY2spOwpAQCAtMTk1LDQ1ICsyMDEsNTMgQEAgc3RhdGljIGRtYV9jb29raWVfdCBzaF9k bWFlX3R4X3N1Ym1pdChzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKnR4KQogCWlmIChj b29raWUgPCAwKQogCQljb29raWUgPSAxOwogCi0JLyogSWYgZGVzYyBvbmx5IGluIHRoZSBjYXNl IG9mIDEgKi8KLQlpZiAoZGVzYy0+YXN5bmNfdHguY29va2llICE9IC1FQlVTWSkKLQkJZGVzYy0+ YXN5bmNfdHguY29va2llID0gY29va2llOwotCXNoX2NoYW4tPmNvbW1vbi5jb29raWUgPSBkZXNj LT5hc3luY190eC5jb29raWU7CisJc2hfY2hhbi0+Y29tbW9uLmNvb2tpZSA9IGNvb2tpZTsKKwl0 eC0+Y29va2llID0gY29va2llOworCisJLyogTWFyayBhbGwgY2h1bmtzIG9mIHRoaXMgZGVzY3Jp cHRvciBhcyBzdWJtaXR0ZWQsIG1vdmUgdG8gdGhlIHF1ZXVlICovCisJbGlzdF9mb3JfZWFjaF9l bnRyeV9zYWZlKGNodW5rLCBjLCBkZXNjLT5ub2RlLnByZXYsIG5vZGUpIHsKKwkJLyoKKwkJICog QWxsIGNodW5rcyBhcmUgb24gdGhlIGdsb2JhbCBsZF9mcmVlLCBzbywgd2UgaGF2ZSB0byBmaW5k CisJCSAqIHRoZSBlbmQgb2YgdGhlIGNoYWluIG91cnNlbHZlcworCQkgKi8KKwkJaWYgKGNodW5r ICE9IGRlc2MgJiYgKGNodW5rLT5tYXJrID09IERFU0NfSURMRSB8fAorCQkJCWNodW5rLT5hc3lu Y190eC5jb29raWUgPiAwIHx8CisJCQkJY2h1bmstPmFzeW5jX3R4LmNvb2tpZSA9PSAtRUJVU1kg fHwKKwkJCQkmY2h1bmstPm5vZGUgPT0gJnNoX2NoYW4tPmxkX2ZyZWUpKQorCQkJYnJlYWs7CisJ CWNodW5rLT5tYXJrID0gREVTQ19TVUJNSVRURUQ7CisJCS8qIENhbGxiYWNrIGdvZXMgdG8gdGhl IGxhc3QgY2h1bmsgKi8KKwkJY2h1bmstPmFzeW5jX3R4LmNhbGxiYWNrID0gTlVMTDsKKwkJY2h1 bmstPmNvb2tpZSA9IGNvb2tpZTsKKwkJbGlzdF9tb3ZlX3RhaWwoJmNodW5rLT5ub2RlLCAmc2hf Y2hhbi0+bGRfcXVldWUpOworCQlsYXN0ID0gY2h1bms7CisJfQorCisJbGFzdC0+YXN5bmNfdHgu Y2FsbGJhY2sgPSBjYWxsYmFjazsKKwlsYXN0LT5hc3luY190eC5jYWxsYmFja19wYXJhbSA9IHR4 LT5jYWxsYmFja19wYXJhbTsKIAotCWxpc3Rfc3BsaWNlX2luaXQoJmRlc2MtPnR4X2xpc3QsIHNo X2NoYW4tPmxkX3F1ZXVlLnByZXYpOworCWRldl9kYmcoc2hfY2hhbi0+ZGV2LCAic3VibWl0ICMl ZEAlcCBvbiAlZDogJXhbJWRdIC0+ICV4XG4iLAorCQl0eC0+Y29va2llLCAmbGFzdC0+YXN5bmNf dHgsIHNoX2NoYW4tPmlkLAorCQlkZXNjLT5ody5zYXIsIGRlc2MtPmh3LnRjciwgZGVzYy0+aHcu ZGFyKTsKIAogCXNwaW5fdW5sb2NrX2JoKCZzaF9jaGFuLT5kZXNjX2xvY2spOwogCiAJcmV0dXJu IGNvb2tpZTsKIH0KIAorLyogQ2FsbGVkIHdpdGggZGVzY19sb2NrIGhlbGQgKi8KIHN0YXRpYyBz dHJ1Y3Qgc2hfZGVzYyAqc2hfZG1hZV9nZXRfZGVzYyhzdHJ1Y3Qgc2hfZG1hZV9jaGFuICpzaF9j aGFuKQogewotCXN0cnVjdCBzaF9kZXNjICpkZXNjLCAqX2Rlc2MsICpyZXQgPSBOVUxMOworCXN0 cnVjdCBzaF9kZXNjICpkZXNjOwogCi0Jc3Bpbl9sb2NrX2JoKCZzaF9jaGFuLT5kZXNjX2xvY2sp OwotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXNjLCBfZGVzYywgJnNoX2NoYW4tPmxkX2Zy ZWUsIG5vZGUpIHsKLQkJaWYgKGFzeW5jX3R4X3Rlc3RfYWNrKCZkZXNjLT5hc3luY190eCkpIHsK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRlc2MsICZzaF9jaGFuLT5sZF9mcmVlLCBub2RlKQorCQlp ZiAoZGVzYy0+bWFyayAhPSBERVNDX1BSRVBBUkVEKSB7CisJCQlCVUdfT04oZGVzYy0+bWFyayAh PSBERVNDX0lETEUpOwogCQkJbGlzdF9kZWwoJmRlc2MtPm5vZGUpOwotCQkJcmV0ID0gZGVzYzsK LQkJCWJyZWFrOworCQkJcmV0dXJuIGRlc2M7CiAJCX0KLQl9Ci0Jc3Bpbl91bmxvY2tfYmgoJnNo X2NoYW4tPmRlc2NfbG9jayk7CiAKLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9pZCBzaF9k bWFlX3B1dF9kZXNjKHN0cnVjdCBzaF9kbWFlX2NoYW4gKnNoX2NoYW4sIHN0cnVjdCBzaF9kZXNj ICpkZXNjKQotewotCWlmIChkZXNjKSB7Ci0JCXNwaW5fbG9ja19iaCgmc2hfY2hhbi0+ZGVzY19s b2NrKTsKLQotCQlsaXN0X3NwbGljZV9pbml0KCZkZXNjLT50eF9saXN0LCAmc2hfY2hhbi0+bGRf ZnJlZSk7Ci0JCWxpc3RfYWRkKCZkZXNjLT5ub2RlLCAmc2hfY2hhbi0+bGRfZnJlZSk7Ci0KLQkJ c3Bpbl91bmxvY2tfYmgoJnNoX2NoYW4tPmRlc2NfbG9jayk7Ci0JfQorCXJldHVybiBOVUxMOwog fQogCiBzdGF0aWMgaW50IHNoX2RtYWVfYWxsb2NfY2hhbl9yZXNvdXJjZXMoc3RydWN0IGRtYV9j aGFuICpjaGFuKQpAQCAtMjUyLDExICsyNjYsMTAgQEAgc3RhdGljIGludCBzaF9kbWFlX2FsbG9j X2NoYW5fcmVzb3VyY2VzKHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKIAkJZG1hX2FzeW5jX3R4X2Rl c2NyaXB0b3JfaW5pdCgmZGVzYy0+YXN5bmNfdHgsCiAJCQkJCSZzaF9jaGFuLT5jb21tb24pOwog CQlkZXNjLT5hc3luY190eC50eF9zdWJtaXQgPSBzaF9kbWFlX3R4X3N1Ym1pdDsKLQkJZGVzYy0+ YXN5bmNfdHguZmxhZ3MgPSBETUFfQ1RSTF9BQ0s7Ci0JCUlOSVRfTElTVF9IRUFEKCZkZXNjLT50 eF9saXN0KTsKLQkJc2hfZG1hZV9wdXRfZGVzYyhzaF9jaGFuLCBkZXNjKTsKKwkJZGVzYy0+bWFy ayA9IERFU0NfSURMRTsKIAogCQlzcGluX2xvY2tfYmgoJnNoX2NoYW4tPmRlc2NfbG9jayk7CisJ CWxpc3RfYWRkKCZkZXNjLT5ub2RlLCAmc2hfY2hhbi0+bGRfZnJlZSk7CiAJCXNoX2NoYW4tPmRl c2NzX2FsbG9jYXRlZCsrOwogCX0KIAlzcGluX3VubG9ja19iaCgmc2hfY2hhbi0+ZGVzY19sb2Nr KTsKQEAgLTI3Myw3ICsyODYsMTAgQEAgc3RhdGljIHZvaWQgc2hfZG1hZV9mcmVlX2NoYW5fcmVz b3VyY2VzKHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKIAlzdHJ1Y3Qgc2hfZGVzYyAqZGVzYywgKl9k ZXNjOwogCUxJU1RfSEVBRChsaXN0KTsKIAotCUJVR19PTighbGlzdF9lbXB0eSgmc2hfY2hhbi0+ bGRfcXVldWUpKTsKKwkvKiBQcmVwYXJlZCBhbmQgbm90IHN1Ym1pdHRlZCBkZXNjcmlwdG9ycyBj YW4gc3RpbGwgYmUgb24gdGhlIHF1ZXVlICovCisJaWYgKCFsaXN0X2VtcHR5KCZzaF9jaGFuLT5s ZF9xdWV1ZSkpCisJCXNoX2RtYWVfY2hhbl9sZF9jbGVhbnVwKHNoX2NoYW4sIHRydWUpOworCiAJ c3Bpbl9sb2NrX2JoKCZzaF9jaGFuLT5kZXNjX2xvY2spOwogCiAJbGlzdF9zcGxpY2VfaW5pdCgm c2hfY2hhbi0+bGRfZnJlZSwgJmxpc3QpOwpAQCAtMjkyLDYgKzMwOCw4IEBAIHN0YXRpYyBzdHJ1 Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKnNoX2RtYWVfcHJlcF9tZW1jcHkoCiAJc3RydWN0 IHNoX2RtYWVfY2hhbiAqc2hfY2hhbjsKIAlzdHJ1Y3Qgc2hfZGVzYyAqZmlyc3QgPSBOVUxMLCAq cHJldiA9IE5VTEwsICpuZXc7CiAJc2l6ZV90IGNvcHlfc2l6ZTsKKwlMSVNUX0hFQUQodHhfbGlz dCk7CisJaW50IGNodW5rcyA9IChsZW4gKyBTSF9ETUFfVENSX01BWCkgLyAoU0hfRE1BX1RDUl9N QVggKyAxKTsKIAogCWlmICghY2hhbikKIAkJcmV0dXJuIE5VTEw7CkBAIC0zMDEsNDIgKzMxOSw3 NSBAQCBzdGF0aWMgc3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICpzaF9kbWFlX3ByZXBf bWVtY3B5KAogCiAJc2hfY2hhbiA9IHRvX3NoX2NoYW4oY2hhbik7CiAKKwkvKiBIYXZlIHRvIGxv Y2sgdGhlIHdob2xlIGxvb3AgdG8gcHJvdGVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgcmVsZWFzZSAq LworCXNwaW5fbG9ja19iaCgmc2hfY2hhbi0+ZGVzY19sb2NrKTsKKworCS8qCisJICogQ2hhaW5p bmc6CisJICogZmlyc3QgZGVzY3JpcHRvciBpcyB3aGF0IHVzZXIgaXMgZGVhbGluZyB3aXRoIGlu IGFsbCBBUEkgY2FsbHMsIGl0cworCSAqIGNvb2tpZSBpcyBhdCBmaXJzdCBzZXQgdG8gLUVCVVNZ LCBhdCB0eC1zdWJtaXQgdG8gYSBwb3NpdGl2ZQorCSAqIG51bWJlcgorCSAqIGlmIG1vcmUgdGhh biBvbmUgY2h1bmsgaXMgbmVlZGVkIGZ1cnRoZXIgY2h1bmtzIGhhdmUgY29va2llID0gLUVJTlZB TAorCSAqIHRoZSBsYXN0IGNodW5rLCBpZiBub3QgZXF1YWwgdG8gdGhlIGZpcnN0LCBoYXMgY29v a2llID0gLUVOT1NQQworCSAqIGFsbCBjaHVua3MgYXJlIGxpbmtlZCBvbnRvIHRoZSB0eF9saXN0 IGhlYWQgd2l0aCB0aGVpciAubm9kZSBoZWFkcworCSAqIG9ubHkgZHVyaW5nIHRoaXMgZnVuY3Rp b24sIHRoZW4gdGhleSBhcmUgaW1tZWRpYXRlbHkgc3BsaWNlZAorCSAqIGJhY2sgb250byB0aGUg ZnJlZSBsaXN0IGluIGZvcm0gb2YgYSBjaGFpbgorCSAqLworCiAJZG8gewotCQkvKiBBbGxvY2F0 ZSB0aGUgbGluayBkZXNjcmlwdG9yIGZyb20gRE1BIHBvb2wgKi8KKwkJLyogQWxsb2NhdGUgdGhl IGxpbmsgZGVzY3JpcHRvciBmcm9tIHRoZSBmcmVlIGxpc3QgKi8KIAkJbmV3ID0gc2hfZG1hZV9n ZXRfZGVzYyhzaF9jaGFuKTsKIAkJaWYgKCFuZXcpIHsKIAkJCWRldl9lcnIoc2hfY2hhbi0+ZGV2 LAogCQkJCSJObyBmcmVlIG1lbW9yeSBmb3IgbGluayBkZXNjcmlwdG9yXG4iKTsKLQkJCWdvdG8g ZXJyX2dldF9kZXNjOworCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShuZXcsICZ0eF9saXN0LCBub2Rl KQorCQkJbmV3LT5tYXJrID0gREVTQ19JRExFOworCQkJbGlzdF9zcGxpY2UoJnR4X2xpc3QsICZz aF9jaGFuLT5sZF9mcmVlKTsKKwkJCXNwaW5fdW5sb2NrX2JoKCZzaF9jaGFuLT5kZXNjX2xvY2sp OworCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAotCQljb3B5X3NpemUgPSBtaW4obGVuLCAoc2l6ZV90 KVNIX0RNQV9UQ1JfTUFYKTsKKwkJY29weV9zaXplID0gbWluKGxlbiwgKHNpemVfdClTSF9ETUFf VENSX01BWCArIDEpOwogCiAJCW5ldy0+aHcuc2FyID0gZG1hX3NyYzsKIAkJbmV3LT5ody5kYXIg PSBkbWFfZGVzdDsKIAkJbmV3LT5ody50Y3IgPSBjb3B5X3NpemU7Ci0JCWlmICghZmlyc3QpCisK KwkJaWYgKCFmaXJzdCkgeworCQkJLyogRmlyc3QgZGVzYyAqLworCQkJbmV3LT5hc3luY190eC5j b29raWUgPSAtRUJVU1k7CiAJCQlmaXJzdCA9IG5ldzsKKwkJfSBlbHNlIHsKKwkJCS8qIE90aGVy IGRlc2MgLSBpbnZpc2libGUgdG8gdGhlIHVzZXIgKi8KKwkJCW5ldy0+YXN5bmNfdHguY29va2ll ID0gLUVJTlZBTDsKKwkJfQorCisJCWRldl9kYmcoc2hfY2hhbi0+ZGV2LAorCQkJImNoYWluaW5n ICV1IG9mICV1IHdpdGggJXAsIGRzdCAleCwgY29va2llICVkXG4iLAorCQkJY29weV9zaXplLCBs ZW4sICZuZXctPmFzeW5jX3R4LCBkbWFfZGVzdCwKKwkJCW5ldy0+YXN5bmNfdHguY29va2llKTsK IAotCQluZXctPm1hcmsgPSBERVNDX05DT01QOwotCQlhc3luY190eF9hY2soJm5ldy0+YXN5bmNf dHgpOworCQluZXctPm1hcmsgPSBERVNDX1BSRVBBUkVEOworCQluZXctPmFzeW5jX3R4LmZsYWdz ID0gZmxhZ3M7CisJCW5ldy0+Y2h1bmtzID0gY2h1bmtzLS07CiAKIAkJcHJldiA9IG5ldzsKIAkJ bGVuIC09IGNvcHlfc2l6ZTsKIAkJZG1hX3NyYyArPSBjb3B5X3NpemU7CiAJCWRtYV9kZXN0ICs9 IGNvcHlfc2l6ZTsKIAkJLyogSW5zZXJ0IHRoZSBsaW5rIGRlc2NyaXB0b3IgdG8gdGhlIExEIHJp bmcgKi8KLQkJbGlzdF9hZGRfdGFpbCgmbmV3LT5ub2RlLCAmZmlyc3QtPnR4X2xpc3QpOworCQls aXN0X2FkZF90YWlsKCZuZXctPm5vZGUsICZ0eF9saXN0KTsKIAl9IHdoaWxlIChsZW4pOwogCi0J bmV3LT5hc3luY190eC5mbGFncyA9IGZsYWdzOyAvKiBjbGllbnQgaXMgaW4gY29udHJvbCBvZiB0 aGlzIGFjayAqLwotCW5ldy0+YXN5bmNfdHguY29va2llID0gLUVCVVNZOyAvKiBMYXN0IGRlc2Mg Ki8KKwlpZiAobmV3ICE9IGZpcnN0KQorCQluZXctPmFzeW5jX3R4LmNvb2tpZSA9IC1FTk9TUEM7 CiAKLQlyZXR1cm4gJmZpcnN0LT5hc3luY190eDsKKwkvKiBQdXQgdGhlbSBiYWNrIG9uIHRoZSBm cmVlIGxpc3QsIHNvLCB0aGV5IGRvbid0IGdldCBsb3N0ICovCisJbGlzdF9zcGxpY2VfdGFpbCgm dHhfbGlzdCwgJnNoX2NoYW4tPmxkX2ZyZWUpOwogCi1lcnJfZ2V0X2Rlc2M6Ci0Jc2hfZG1hZV9w dXRfZGVzYyhzaF9jaGFuLCBmaXJzdCk7Ci0JcmV0dXJuIE5VTEw7CisJc3Bpbl91bmxvY2tfYmgo JnNoX2NoYW4tPmRlc2NfbG9jayk7CisKKwlyZXR1cm4gJmZpcnN0LT5hc3luY190eDsKIAogfQog CkBAIC0zNDUsNjQgKzM5NiwxMjYgQEAgZXJyX2dldF9kZXNjOgogICoKICAqIFRoaXMgZnVuY3Rp b24gY2xlYW4gdXAgdGhlIGxkX3F1ZXVlIG9mIERNQSBjaGFubmVsLgogICovCi1zdGF0aWMgdm9p ZCBzaF9kbWFlX2NoYW5fbGRfY2xlYW51cChzdHJ1Y3Qgc2hfZG1hZV9jaGFuICpzaF9jaGFuKQor c3RhdGljIGRtYV9hc3luY190eF9jYWxsYmFjaworX19sZF9jbGVhbnVwKHN0cnVjdCBzaF9kbWFl X2NoYW4gKnNoX2NoYW4sIGJvb2wgYWxsKQogewogCXN0cnVjdCBzaF9kZXNjICpkZXNjLCAqX2Rl c2M7CisJLyogSXMgdGhlICJleHBvc2VkIiBoZWFkIG9mIGEgY2hhaW4gYWNrZWQ/ICovCisJYm9v bCBoZWFkX2Fja2VkID0gZmFsc2U7CisJZG1hX2Nvb2tpZV90IGNvb2tpZSA9IDA7CisJZG1hX2Fz eW5jX3R4X2NhbGxiYWNrIGNhbGxiYWNrID0gTlVMTDsKKwl2b2lkICpwYXJhbSA9IE5VTEw7CisK IAogCXNwaW5fbG9ja19iaCgmc2hfY2hhbi0+ZGVzY19sb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmUoZGVzYywgX2Rlc2MsICZzaF9jaGFuLT5sZF9xdWV1ZSwgbm9kZSkgewotCQlkbWFf YXN5bmNfdHhfY2FsbGJhY2sgY2FsbGJhY2s7Ci0JCXZvaWQgKmNhbGxiYWNrX3BhcmFtOwotCi0J CS8qIG5vbiBzZW5kIGRhdGEgKi8KLQkJaWYgKGRlc2MtPm1hcmsgPT0gREVTQ19OQ09NUCkKKwkJ c3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICp0eCA9ICZkZXNjLT5hc3luY190eDsKKwor CQlCVUdfT04odHgtPmNvb2tpZSA+IDAgJiYgdHgtPmNvb2tpZSAhPSBkZXNjLT5jb29raWUpOwor CQlCVUdfT04oZGVzYy0+bWFyayAhPSBERVNDX1NVQk1JVFRFRCAmJgorCQkJZGVzYy0+bWFyayAh PSBERVNDX0NPTVBMRVRFRCAmJgorCQkJZGVzYy0+bWFyayAhPSBERVNDX1dBSVRJTkcpOworCisJ CS8qCisJCSAqIHF1ZXVlIGlzIG9yZGVyZWQsIGFuZCB3ZSB1c2UgdGhpcyBsb29wIHRvICgxKSBj bGVhbiB1cCBhbGwKKwkJICogY29tcGxldGVkIGRlc2NyaXB0b3JzLCBhbmQgdG8gKDIpIHVwZGF0 ZSBkZXNjcmlwdG9yIGZsYWdzIG9mCisJCSAqIGFueSBjaHVua3MgaW4gYSAocGFydGlhbGx5KSBj b21wbGV0ZWQgY2hhaW4KKwkJICovCisJCWlmICghYWxsICYmIGRlc2MtPm1hcmsgPT0gREVTQ19T VUJNSVRURUQgJiYKKwkJCWRlc2MtPmNvb2tpZSAhPSBjb29raWUpCiAJCQlicmVhazsKIAotCQkv KiBzZW5kIGRhdGEgc2VzYyAqLwotCQljYWxsYmFjayA9IGRlc2MtPmFzeW5jX3R4LmNhbGxiYWNr OwotCQljYWxsYmFja19wYXJhbSA9IGRlc2MtPmFzeW5jX3R4LmNhbGxiYWNrX3BhcmFtOworCQlp ZiAodHgtPmNvb2tpZSA+IDApCisJCQljb29raWUgPSB0eC0+Y29va2llOwogCiAJCS8qIFJlbW92 ZSBmcm9tIGxkX3F1ZXVlIGxpc3QgKi8KLQkJbGlzdF9zcGxpY2VfaW5pdCgmZGVzYy0+dHhfbGlz dCwgJnNoX2NoYW4tPmxkX2ZyZWUpOworCQlpZiAoZGVzYy0+bWFyayA9PSBERVNDX0NPTVBMRVRF RCAmJiBkZXNjLT5jaHVua3MgPT0gMSkgeworCQkJQlVHX09OKHNoX2NoYW4tPmNvbXBsZXRlZF9j b29raWUgIT0gZGVzYy0+Y29va2llIC0gMSk7CisJCQlzaF9jaGFuLT5jb21wbGV0ZWRfY29va2ll ID0gZGVzYy0+Y29va2llOworCQl9CiAKLQkJZGV2X2RiZyhzaF9jaGFuLT5kZXYsICJsaW5rIGRl c2NyaXB0b3IgJXAgd2lsbCBiZSByZWN5Y2xlLlxuIiwKLQkJCQlkZXNjKTsKKwkJLyogQ2FsbCBj YWxsYmFjayBvbiB0aGUgbGFzdCBjaHVuayAqLworCQlpZiAoZGVzYy0+bWFyayA9PSBERVNDX0NP TVBMRVRFRCAmJiB0eC0+Y2FsbGJhY2spIHsKKwkJCWRlc2MtPm1hcmsgPSBERVNDX1dBSVRJTkc7 CisJCQljYWxsYmFjayA9IHR4LT5jYWxsYmFjazsKKwkJCXBhcmFtID0gdHgtPmNhbGxiYWNrX3Bh cmFtOworCQkJZGV2X2RiZyhzaF9jaGFuLT5kZXYsCisJCQkJImRlc2NyaXB0b3IgIyVkQCVwIG9u ICVkIGNhbGxiYWNrXG4iLAorCQkJCXR4LT5jb29raWUsIHR4LCBzaF9jaGFuLT5pZCk7CisJCQlC VUdfT04oZGVzYy0+Y2h1bmtzICE9IDEpOworCQkJYnJlYWs7CisJCX0KIAotCQlsaXN0X21vdmUo JmRlc2MtPm5vZGUsICZzaF9jaGFuLT5sZF9mcmVlKTsKLQkJLyogUnVuIHRoZSBsaW5rIGRlc2Ny aXB0b3IgY2FsbGJhY2sgZnVuY3Rpb24gKi8KLQkJaWYgKGNhbGxiYWNrKSB7Ci0JCQlzcGluX3Vu bG9ja19iaCgmc2hfY2hhbi0+ZGVzY19sb2NrKTsKLQkJCWRldl9kYmcoc2hfY2hhbi0+ZGV2LCAi bGluayBkZXNjcmlwdG9yICVwIGNhbGxiYWNrXG4iLAotCQkJCQlkZXNjKTsKLQkJCWNhbGxiYWNr KGNhbGxiYWNrX3BhcmFtKTsKLQkJCXNwaW5fbG9ja19iaCgmc2hfY2hhbi0+ZGVzY19sb2NrKTsK KwkJaWYgKHR4LT5jb29raWUgPiAwIHx8IHR4LT5jb29raWUgPT0gLUVCVVNZKSB7CisJCQlpZiAo ZGVzYy0+bWFyayA9PSBERVNDX0NPTVBMRVRFRCkgeworCQkJCUJVR19PTih0eC0+Y29va2llIDwg MCk7CisJCQkJZGVzYy0+bWFyayA9IERFU0NfV0FJVElORzsKKwkJCX0KKwkJCWhlYWRfYWNrZWQg PSBhc3luY190eF90ZXN0X2Fjayh0eCk7CisJCX0gZWxzZSB7CisJCQlzd2l0Y2ggKGRlc2MtPm1h cmspIHsKKwkJCWNhc2UgREVTQ19DT01QTEVURUQ6CisJCQkJZGVzYy0+bWFyayA9IERFU0NfV0FJ VElORzsKKwkJCQkvKiBGYWxsIHRocm91Z2ggKi8KKwkJCWNhc2UgREVTQ19XQUlUSU5HOgorCQkJ CWlmIChoZWFkX2Fja2VkKQorCQkJCQlhc3luY190eF9hY2soJmRlc2MtPmFzeW5jX3R4KTsKKwkJ CX0KKwkJfQorCisJCWRldl9kYmcoc2hfY2hhbi0+ZGV2LCAiZGVzY3JpcHRvciAlcCAjJWQgY29t cGxldGVkLlxuIiwKKwkJCXR4LCB0eC0+Y29va2llKTsKKworCQlpZiAoKChkZXNjLT5tYXJrID09 IERFU0NfQ09NUExFVEVEIHx8CisJCQlkZXNjLT5tYXJrID09IERFU0NfV0FJVElORykgJiYKKwkJ CWFzeW5jX3R4X3Rlc3RfYWNrKCZkZXNjLT5hc3luY190eCkpIHx8IGFsbCkgeworCQkJLyogUmVt b3ZlIGZyb20gbGRfcXVldWUgbGlzdCAqLworCQkJZGVzYy0+bWFyayA9IERFU0NfSURMRTsKKwkJ CWxpc3RfbW92ZSgmZGVzYy0+bm9kZSwgJnNoX2NoYW4tPmxkX2ZyZWUpOwogCQl9CiAJfQogCXNw aW5fdW5sb2NrX2JoKCZzaF9jaGFuLT5kZXNjX2xvY2spOworCisJaWYgKGNhbGxiYWNrKQorCQlj YWxsYmFjayhwYXJhbSk7CisKKwlyZXR1cm4gY2FsbGJhY2s7Cit9CisKKy8qCisgKiBzaF9jaGFu X2xkX2NsZWFudXAgLSBDbGVhbiB1cCBsaW5rIGRlc2NyaXB0b3JzCisgKgorICogVGhpcyBmdW5j dGlvbiBjbGVhbnMgdXAgdGhlIGxkX3F1ZXVlIG9mIERNQSBjaGFubmVsLgorICovCitzdGF0aWMg dm9pZCBzaF9kbWFlX2NoYW5fbGRfY2xlYW51cChzdHJ1Y3Qgc2hfZG1hZV9jaGFuICpzaF9jaGFu LCBib29sIGFsbCkKK3sKKwl3aGlsZSAoX19sZF9jbGVhbnVwKHNoX2NoYW4sIGFsbCkpCisJCTsK IH0KIAorCiBzdGF0aWMgdm9pZCBzaF9jaGFuX3hmZXJfbGRfcXVldWUoc3RydWN0IHNoX2RtYWVf Y2hhbiAqc2hfY2hhbikKIHsKLQlzdHJ1Y3QgbGlzdF9oZWFkICpsZF9ub2RlOwotCXN0cnVjdCBz aF9kbWFlX3JlZ3MgaHc7CisJc3RydWN0IHNoX2Rlc2MgKnNkOworCisJc3Bpbl9sb2NrX2JoKCZz aF9jaGFuLT5kZXNjX2xvY2spOwogCiAJLyogRE1BIHdvcmsgY2hlY2sgKi8KLQlpZiAoZG1hZV9p c19idXN5KHNoX2NoYW4pKQorCWlmIChkbWFlX2lzX2J1c3koc2hfY2hhbikpIHsKKwkJc3Bpbl91 bmxvY2tfYmgoJnNoX2NoYW4tPmRlc2NfbG9jayk7CiAJCXJldHVybjsKKwl9CiAKIAkvKiBGaW5k IHRoZSBmaXJzdCB1bi10cmFuc2ZlciBkZXNjaXB0b3IgKi8KLQlmb3IgKGxkX25vZGUgPSBzaF9j aGFuLT5sZF9xdWV1ZS5uZXh0OwotCQkobGRfbm9kZSAhPSAmc2hfY2hhbi0+bGRfcXVldWUpCi0J CQkmJiAodG9fc2hfZGVzYyhsZF9ub2RlKS0+bWFyayA9PSBERVNDX0NPTVApOwotCQlsZF9ub2Rl ID0gbGRfbm9kZS0+bmV4dCkKLQkJY3B1X3JlbGF4KCk7Ci0KLQlpZiAobGRfbm9kZSAhPSAmc2hf Y2hhbi0+bGRfcXVldWUpIHsKLQkJLyogR2V0IHRoZSBsZCBzdGFydCBhZGRyZXNzIGZyb20gbGRf cXVldWUgKi8KLQkJaHcgPSB0b19zaF9kZXNjKGxkX25vZGUpLT5odzsKLQkJZG1hZV9zZXRfcmVn KHNoX2NoYW4sIGh3KTsKLQkJZG1hZV9zdGFydChzaF9jaGFuKTsKLQl9CisJbGlzdF9mb3JfZWFj aF9lbnRyeShzZCwgJnNoX2NoYW4tPmxkX3F1ZXVlLCBub2RlKQorCQlpZiAoc2QtPm1hcmsgPT0g REVTQ19TVUJNSVRURUQpIHsKKwkJCS8qIEdldCB0aGUgbGQgc3RhcnQgYWRkcmVzcyBmcm9tIGxk X3F1ZXVlICovCisJCQlkbWFlX3NldF9yZWcoc2hfY2hhbiwgJnNkLT5odyk7CisJCQlkbWFlX3N0 YXJ0KHNoX2NoYW4pOworCQkJYnJlYWs7CisJCX0KKworCXNwaW5fdW5sb2NrX2JoKCZzaF9jaGFu LT5kZXNjX2xvY2spOwogfQogCiBzdGF0aWMgdm9pZCBzaF9kbWFlX21lbWNweV9pc3N1ZV9wZW5k aW5nKHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKQEAgLTQyMCwxMiArNTMzLDExIEBAIHN0YXRpYyBl bnVtIGRtYV9zdGF0dXMgc2hfZG1hZV9pc19jb21wbGV0ZShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4s CiAJZG1hX2Nvb2tpZV90IGxhc3RfdXNlZDsKIAlkbWFfY29va2llX3QgbGFzdF9jb21wbGV0ZTsK IAotCXNoX2RtYWVfY2hhbl9sZF9jbGVhbnVwKHNoX2NoYW4pOworCXNoX2RtYWVfY2hhbl9sZF9j bGVhbnVwKHNoX2NoYW4sIGZhbHNlKTsKIAogCWxhc3RfdXNlZCA9IGNoYW4tPmNvb2tpZTsKIAls YXN0X2NvbXBsZXRlID0gc2hfY2hhbi0+Y29tcGxldGVkX2Nvb2tpZTsKLQlpZiAobGFzdF9jb21w bGV0ZSA9PSAtRUJVU1kpCi0JCWxhc3RfY29tcGxldGUgPSBsYXN0X3VzZWQ7CisJQlVHX09OKGxh c3RfY29tcGxldGUgPCAwKTsKIAogCWlmIChkb25lKQogCQkqZG9uZSA9IGxhc3RfY29tcGxldGU7 CkBAIC00ODAsMTEgKzU5MiwxMyBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgc2hfZG1hZV9lcnIoaW50 IGlycSwgdm9pZCAqZGF0YSkKIAkJZXJyID0gc2hfZG1hZV9yc3QoMCk7CiAJCWlmIChlcnIpCiAJ CQlyZXR1cm4gZXJyOworI2lmZGVmIFNIX0RNQUNfQkFTRTEKIAkJaWYgKHNoZGV2LT5wZGF0YS5t b2RlICYgU0hETUFfRE1BT1IxKSB7CiAJCQllcnIgPSBzaF9kbWFlX3JzdCgxKTsKIAkJCWlmIChl cnIpCiAJCQkJcmV0dXJuIGVycjsKIAkJfQorI2VuZGlmCiAJCWRpc2FibGVfaXJxKGlycSk7CiAJ CXJldHVybiBJUlFfSEFORExFRDsKIAl9CkBAIC00OTQsMzUgKzYwOCwyNiBAQCBzdGF0aWMgaXJx cmV0dXJuX3Qgc2hfZG1hZV9lcnIoaW50IGlycSwgdm9pZCAqZGF0YSkKIHN0YXRpYyB2b2lkIGRt YWVfZG9fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCiB7CiAJc3RydWN0IHNoX2RtYWVfY2hh biAqc2hfY2hhbiA9IChzdHJ1Y3Qgc2hfZG1hZV9jaGFuICopZGF0YTsKLQlzdHJ1Y3Qgc2hfZGVz YyAqZGVzYywgKl9kZXNjLCAqY3VyX2Rlc2MgPSBOVUxMOworCXN0cnVjdCBzaF9kZXNjICpkZXNj OwogCXUzMiBzYXJfYnVmID0gc2hfZG1hZV9yZWFkbChzaF9jaGFuLCBTQVIpOwogCi0JbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKGRlc2MsIF9kZXNjLAotCQkJCSAmc2hfY2hhbi0+bGRfcXVldWUs IG5vZGUpIHsKLQkJaWYgKChkZXNjLT5ody5zYXIgKyBkZXNjLT5ody50Y3IpID09IHNhcl9idWYp IHsKLQkJCWN1cl9kZXNjID0gZGVzYzsKKwlzcGluX2xvY2soJnNoX2NoYW4tPmRlc2NfbG9jayk7 CisJbGlzdF9mb3JfZWFjaF9lbnRyeShkZXNjLCAmc2hfY2hhbi0+bGRfcXVldWUsIG5vZGUpIHsK KwkJaWYgKChkZXNjLT5ody5zYXIgKyBkZXNjLT5ody50Y3IpID09IHNhcl9idWYgJiYKKwkJCWRl c2MtPm1hcmsgPT0gREVTQ19TVUJNSVRURUQpIHsKKwkJCWRldl9kYmcoc2hfY2hhbi0+ZGV2LCAi ZG9uZSAjJWRAJXAgZHN0ICV1XG4iLAorCQkJCWRlc2MtPmFzeW5jX3R4LmNvb2tpZSwgJmRlc2Mt PmFzeW5jX3R4LAorCQkJCWRlc2MtPmh3LmRhcik7CisJCQlkZXNjLT5tYXJrID0gREVTQ19DT01Q TEVURUQ7CiAJCQlicmVhazsKIAkJfQogCX0KIAotCWlmIChjdXJfZGVzYykgewotCQlzd2l0Y2gg KGN1cl9kZXNjLT5hc3luY190eC5jb29raWUpIHsKLQkJY2FzZSAwOiAvKiBvdGhlciBkZXNjIGRh dGEgKi8KLQkJCWJyZWFrOwotCQljYXNlIC1FQlVTWTogLyogbGFzdCBkZXNjICovCi0JCXNoX2No YW4tPmNvbXBsZXRlZF9jb29raWUgPQotCQkJCWN1cl9kZXNjLT5hc3luY190eC5jb29raWU7Ci0J CQlicmVhazsKLQkJZGVmYXVsdDogLyogZmlyc3QgZGVzYyAoIDAgPCApKi8KLQkJCXNoX2NoYW4t PmNvbXBsZXRlZF9jb29raWUgPQotCQkJCWN1cl9kZXNjLT5hc3luY190eC5jb29raWUgLSAxOwot CQkJYnJlYWs7Ci0JCX0KLQkJY3VyX2Rlc2MtPm1hcmsgPSBERVNDX0NPTVA7Ci0JfQorCXNwaW5f dW5sb2NrKCZzaF9jaGFuLT5kZXNjX2xvY2spOworCiAJLyogTmV4dCBkZXNjICovCiAJc2hfY2hh bl94ZmVyX2xkX3F1ZXVlKHNoX2NoYW4pOwotCXNoX2RtYWVfY2hhbl9sZF9jbGVhbnVwKHNoX2No YW4pOworCXNoX2RtYWVfY2hhbl9sZF9jbGVhbnVwKHNoX2NoYW4sIGZhbHNlKTsKIH0KIAogc3Rh dGljIHVuc2lnbmVkIGludCBnZXRfZG1hZV9pcnEodW5zaWduZWQgaW50IGlkKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9kbWEvc2hkbWEuaCBiL2RyaXZlcnMvZG1hL3NoZG1hLmgKaW5kZXggNjBiODFl NS4uMTA4ZjFjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvc2hkbWEuaAorKysgYi9kcml2ZXJz L2RtYS9zaGRtYS5oCkBAIC0xMyw5ICsxMyw5IEBACiAjaWZuZGVmIF9fRE1BX1NIRE1BX0gKICNk ZWZpbmUgX19ETUFfU0hETUFfSAogCi0jaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Ci0jaW5jbHVk ZSA8bGludXgvZG1hcG9vbC5oPgogI2luY2x1ZGUgPGxpbnV4L2RtYWVuZ2luZS5oPgorI2luY2x1 ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KIAogI2RlZmlu ZSBTSF9ETUFfVENSX01BWCAweDAwRkZGRkZGCS8qIDE2TUIgKi8KIApAQCAtMjYsMTMgKzI2LDE2 IEBAIHN0cnVjdCBzaF9kbWFlX3JlZ3MgewogfTsKIAogc3RydWN0IHNoX2Rlc2MgewotCXN0cnVj dCBsaXN0X2hlYWQgdHhfbGlzdDsKIAlzdHJ1Y3Qgc2hfZG1hZV9yZWdzIGh3OwogCXN0cnVjdCBs aXN0X2hlYWQgbm9kZTsKIAlzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgYXN5bmNfdHg7 CisJZG1hX2Nvb2tpZV90IGNvb2tpZTsKKwlpbnQgY2h1bmtzOwogCWludCBtYXJrOwogfTsKIAor c3RydWN0IGRldmljZTsKKwogc3RydWN0IHNoX2RtYWVfY2hhbiB7CiAJZG1hX2Nvb2tpZV90IGNv bXBsZXRlZF9jb29raWU7CS8qIFRoZSBtYXhpbXVtIGNvb2tpZSBjb21wbGV0ZWQgKi8KIAlzcGlu bG9ja190IGRlc2NfbG9jazsJCS8qIERlc2NyaXB0b3Igb3BlcmF0aW9uIGxvY2sgKi8KLS0gCjEu Ni41LjQKCg== --00504502b2233066a8047ae3f66f-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/