Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932208AbbGCRpx (ORCPT ); Fri, 3 Jul 2015 13:45:53 -0400 Received: from fish.king.net.pl ([79.190.246.46]:60757 "EHLO king.net.pl" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754998AbbGCRph (ORCPT ); Fri, 3 Jul 2015 13:45:37 -0400 Date: Fri, 3 Jul 2015 19:40:59 +0200 (CEST) From: Paul Osmialowski X-X-Sender: newchief@localhost.localdomain To: Thomas Gleixner cc: Paul Osmialowski , Arnd Bergmann , linux-arm-kernel@lists.infradead.org, Greg Kroah-Hartman , Ian Campbell , Jiri Slaby , Kumar Gala , Linus Walleij , Mark Rutland , Michael Turquette , Pawel Moll , Rob Herring , Russell King , Stephen Boyd , Vinod Koul , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org, linux-serial@vger.kernel.org, devicetree@vger.kernel.org, dmaengine@vger.kernel.org, Nicolas Pitre , Sergei Poselenov , Paul Bolle , Jingchang Lu , Yuri Tikhonov , Rob Herring , Geert Uytterhoeven , Uwe Kleine-Koenig , Alexander Potashev , Frank Li , Anson Huang Subject: Re: [PATCH v2 3/9] arm: twr-k70f120m: clock driver for Kinetis SoC In-Reply-To: Message-ID: References: <1435667250-28299-1-git-send-email-pawelo@king.net.pl> <1861313.aMcV1xHCIq@wuerfel> User-Agent: Alpine 2.00 (LNX 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="98048-854376599-1435945269=:15294" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 29076 Lines: 496 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --98048-854376599-1435945269=:15294 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Arnd, Thomas, Thanks for your valuable input and for your patience. I'm attaching yet another proposal for this clock driver. I've flattened the .dts and ensured register access protection. I've also added one more clock source (osc0er) and clock gate to it. Can you comment this one too? On Fri, 3 Jul 2015, Thomas Gleixner wrote: > On Thu, 2 Jul 2015, Paul Osmialowski wrote: >> On Thu, 2 Jul 2015, Arnd Bergmann wrote: >> >>> I wonder if you could move out the fixed rate clocks into their own >>> nodes. Are they actually controlled by the same block? If they are >>> just fixed, you can use the normal binding for fixed rate clocks >>> and only describe the clocks that are related to the driver. >> >> In my view having these clocks grouped together looks more convincing. After >> all, they all share the same I/O regs in order to read configuration. > > The fact that they share a register is not making them a group. That's > just a HW design decision and you need to deal with that by protecting > the register access, but not by trying to group them artificially at > the functional level. > > Thanks, > > tglx > --98048-854376599-1435945269=:15294 Content-Type: TEXT/x-diff; name=0003-arm-twr-k70f120m-clock-driver-for-Kinetis-SoC.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=0003-arm-twr-k70f120m-clock-driver-for-Kinetis-SoC.patch RnJvbSBlMDVkY2I3NzJkNDdlNDQ3MzkxNGFjMWU3NzAzYjM2MWViNTRkYjE0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogUGF1bCBPc21pYWxv d3NraSA8cGF3ZWxvQGtpbmcubmV0LnBsPg0KRGF0ZTogTW9uLCAyOSBKdW4g MjAxNSAyMDo1ODo1NSArMDIwMA0KU3ViamVjdDogW1BBVENIIDMvOV0gYXJt OiB0d3ItazcwZjEyMG06IGNsb2NrIGRyaXZlciBmb3IgS2luZXRpcyBTb0MN Cg0KQmFzZWQgb24gSzcwUDI1Nk0xNTBTRjNSTS5wZGYgSzcwIFN1Yi1GYW1p bHkgUmVmZXJlbmNlIE1hbnVhbCwgUmV2LiAzLg0KDQpTaWduZWQtb2ZmLWJ5 OiBQYXVsIE9zbWlhbG93c2tpIDxwYXdlbG9Aa2luZy5uZXQucGw+DQotLS0N CiAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9raW5ldGlzLWNsb2Nr LnR4dCAgICB8ICA4NiArKysrDQogYXJjaC9hcm0vYm9vdC9kdHMva2luZXRp cy5kdHNpICAgICAgICAgICAgICAgICAgICAgfCAgNTEgKysrDQogZHJpdmVy cy9jbGsvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKw0KIGRyaXZlcnMvY2xrL2Nsay1raW5ldGlzLmMgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgNTAyICsrKysrKysrKysrKysrKysrKysrKw0K IDQgZmlsZXMgY2hhbmdlZCwgNjQwIGluc2VydGlvbnMoKykNCiBjcmVhdGUg bW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz L2Nsb2NrL2tpbmV0aXMtY2xvY2sudHh0DQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvY2xrL2Nsay1raW5ldGlzLmMNCg0KZGlmZiAtLWdpdCBhL0Rv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9raW5ldGlz LWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n cy9jbG9jay9raW5ldGlzLWNsb2NrLnR4dA0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAuLjUwN2Y5MWINCi0tLSAvZGV2L251bGwNCisr KyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9r aW5ldGlzLWNsb2NrLnR4dA0KQEAgLTAsMCArMSw4NiBAQA0KKyogQ2xvY2sg YmluZGluZ3MgZm9yIEZyZWVzY2FsZSBLaW5ldGlzIFNvQw0KKw0KK1JlcXVp cmVkIHByb3BlcnRpZXM6DQorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImZz bCxraW5ldGlzLWNtdSIuDQorLSByZWc6IEZvciBmaXhlZCByYXRlIGNsb2Nr cywgdHdvIGFkZHJlc3MgcmFuZ2VzOg0KKwktIG9uZSBmb3IgdGhlIE11bHRp cHVycG9zZSBDbG9jayBHZW5ldGF0b3IgKE1DRykNCisJLSBvbmUgZm9yIFN5 c3RlbSBJbnRlZ3JhdGlvbiBNb2R1bGUgKFNJTSkgcmVnaXN0ZXIgc2V0Lg0K KwlGb3IgY2xvY2sgZ2F0ZXMsIG9uZSBhZGRyZXNzIHJhbmdlIGZvciBTeXN0 ZW0gSW50ZWdyYXRpb24gTW9kdWxlIChTSU0pDQorCXJlZ2lzdGVyIHNldC4N CistIGNsb2Nrczogc2luZ2xlIGVsZW1lbnQgbGlzdCBvZiBwYXJlbnQgY2xv Y2tzIChvbmx5IGZvciBub24tcm9vdCBjbG9ja3MpLg0KKy0gI2Nsb2NrLWNl bGxzOiBGb3IgZml4ZWQgcmF0ZSBjbG9ja3MgbXVzdCBiZSA8MD4sDQorCWZv ciBjbG9jayBnYXRlcyBtdXN0IGJlIDwyPiAoc2VlIGJlbG93KS4NCisNCitG b3IgY2xvY2sgZ2F0ZSBhZGRyZXNzZXMgc2VlIEs3MCBTdWItRmFtaWx5IFJl ZmVyZW5jZSBNYW51YWwsIFJldi4gMyBwZy4gMzQxDQorYW5kIGxhdGVyLiBO b3RpY2UgdGhhdCBhZGRyZXNzZXMgYXJlIHplcm8tYmFzZWQsIHNvIFNJTV9T Q0dDMSBoYXMgYWRkcmVzcyAwLA0KK1NJTV9TQ0dDMiBoYXMgYWRkcmVzcyAx IGFuZCBzbyBvbi4gVGhlIHNlY29uZCBhZGRyZXNzIGNvbXBvbmVudCBpcyB0 aGUgYml0DQoraW5kZXguDQorDQorTm90aWNlIHRoYXQgKG5vbi1nYXRlKSBj bG9jayBkZXZpY2UgbmFtZXMgbXVzdCBiZSBrbm93biB0byBLaW5ldGlzIENN VSBkcml2ZXJzLg0KKw0KK0N1cnJlbnRseSB0aGVzZSBhcmU6DQorDQorbyBm aXhlZC1yYXRlLW1jZ291dCAocm9vdCkNCitvIGZpeGVkLXJhdGUtb3NjMGVy IChyb290KQ0KK28gZml4ZWQtcmF0ZS1jY2xrIChmaXhlZC1yYXRlLW1jZ291 dCBjaGlsZCkNCitvIGZpeGVkLXJhdGUtcGNsayAoZml4ZWQtcmF0ZS1tY2dv dXQgY2hpbGQpDQorDQorRXhhbXBsZToNCisNCittY2dfb3V0Y2xrOiBmaXhl ZC1yYXRlLW1jZ291dEA0MDA2NDAwMCB7DQorCWNvbXBhdGlibGUgPSAiZnNs LGtpbmV0aXMtY211IjsNCisJcmVnID0gPDB4NDAwNjQwMDAgMHgxND4sIDww eDQwMDQ3MDAwIDB4MTEwMD47DQorCSNjbG9jay1jZWxscyA9IDwwPjsNCit9 Ow0KKw0KK21jZ19jY2xrOiBmaXhlZC1yYXRlLWNjbGtANDAwNjQwMDAgew0K Kwljb21wYXRpYmxlID0gImZzbCxraW5ldGlzLWNtdSI7DQorCXJlZyA9IDww eDQwMDY0MDAwIDB4MTQ+LCA8MHg0MDA0NzAwMCAweDExMDA+Ow0KKwljbG9j a3MgPSA8Jm1jZ19vdXRjbGs+Ow0KKwkjY2xvY2stY2VsbHMgPSA8MD47DQor fTsNCisNCittY2dfcGNsazogZml4ZWQtcmF0ZS1wY2xrQDQwMDY0MDAwIHsN CisJY29tcGF0aWJsZSA9ICJmc2wsa2luZXRpcy1jbXUiOw0KKwlyZWcgPSA8 MHg0MDA2NDAwMCAweDE0PiwgPDB4NDAwNDcwMDAgMHgxMTAwPjsNCisJY2xv Y2tzID0gPCZtY2dfb3V0Y2xrPjsNCisJI2Nsb2NrLWNlbGxzID0gPDA+Ow0K K307DQorDQorbWNnX2NjbGtfZ2F0ZTogY2Nsay1nYXRlQDQwMDQ3MDAwIHsN CisJY29tcGF0aWJsZSA9ICJmc2wsa2luZXRpcy1jbXUiOw0KKwlyZWcgPSA8 MHg0MDA0NzAwMCAweDExMDA+Ow0KKwljbG9ja3MgPSA8Jm1jZ19jY2xrPjsN CisJI2Nsb2NrLWNlbGxzID0gPDI+Ow0KK307DQorDQorbWNnX3BjbGtfZ2F0 ZTogcGNsay1nYXRlQDQwMDQ3MDAwIHsNCisJY29tcGF0aWJsZSA9ICJmc2ws a2luZXRpcy1jbXUiOw0KKwlyZWcgPSA8MHg0MDA0NzAwMCAweDExMDA+Ow0K KwljbG9ja3MgPSA8Jm1jZ19wY2xrPjsNCisJI2Nsb2NrLWNlbGxzID0gPDI+ Ow0KK307DQorDQorb3NjMF9lcmNsazogZml4ZWQtcmF0ZS1vc2MwZXJANDAw NjQwMDAgew0KKwljb21wYXRpYmxlID0gImZzbCxraW5ldGlzLWNtdSI7DQor CXJlZyA9IDwweDQwMDY0MDAwIDB4MTQ+LCA8MHg0MDA0NzAwMCAweDExMDA+ Ow0KKwkjY2xvY2stY2VsbHMgPSA8MD47DQorfTsNCisNCitvc2MwX2VyY2xr X2dhdGU6IG9zYzAtZ2F0ZUA0MDA0NzAwMCB7DQorCWNvbXBhdGlibGUgPSAi ZnNsLGtpbmV0aXMtY211IjsNCisJcmVnID0gPDB4NDAwNDcwMDAgMHgxMTAw PjsNCisJY2xvY2tzID0gPCZvc2MwX2VyY2xrPjsNCisJI2Nsb2NrLWNlbGxz ID0gPDI+Ow0KK307DQorDQordWFydDE6IHNlcmlhbEA0MDA2YjAwMCB7DQor CWNvbXBhdGlibGUgPSAiZnNsLGtpbmV0aXMtbHB1YXJ0IjsNCisJcmVnID0g PDB4NDAwNmIwMDAgMHgxMDAwPjsNCisJaW50ZXJydXB0cyA9IDw0Nz4sIDw0 OD47DQorCWludGVycnVwdC1uYW1lcyA9ICJ1YXJ0LXN0YXQiLCAidWFydC1l cnIiOw0KKwljbG9ja3MgPSA8Jm1jZ19jY2xrX2dhdGUgMyAxMT47DQorCWNs b2NrLW5hbWVzID0gImlwZyI7DQorCWRtYXMgPSA8JmVkbWEgMCA0PjsNCisJ ZG1hLW5hbWVzID0gInJ4IjsNCit9Ow0KZGlmZiAtLWdpdCBhL2FyY2gvYXJt L2Jvb3QvZHRzL2tpbmV0aXMuZHRzaSBiL2FyY2gvYXJtL2Jvb3QvZHRzL2tp bmV0aXMuZHRzaQ0KaW5kZXggOTNkMmE4YS4uNzJlYjk0MSAxMDA2NDQNCi0t LSBhL2FyY2gvYXJtL2Jvb3QvZHRzL2tpbmV0aXMuZHRzaQ0KKysrIGIvYXJj aC9hcm0vYm9vdC9kdHMva2luZXRpcy5kdHNpDQpAQCAtMywzICszLDU0IEBA DQogICoNCiAgKi8NCiAjaW5jbHVkZSAiYXJtdjctbS5kdHNpIg0KKw0KKy8g ew0KKwlzb2Mgew0KKwkJbWNnX291dGNsazogZml4ZWQtcmF0ZS1tY2dvdXRA NDAwNjQwMDAgew0KKwkJCWNvbXBhdGlibGUgPSAiZnNsLGtpbmV0aXMtY211 IjsNCisJCQlyZWcgPSA8MHg0MDA2NDAwMCAweDE0PiwgPDB4NDAwNDcwMDAg MHgxMTAwPjsNCisJCQkjY2xvY2stY2VsbHMgPSA8MD47DQorCQl9Ow0KKw0K KwkJbWNnX2NjbGs6IGZpeGVkLXJhdGUtY2Nsa0A0MDA2NDAwMCB7DQorCQkJ Y29tcGF0aWJsZSA9ICJmc2wsa2luZXRpcy1jbXUiOw0KKwkJCXJlZyA9IDww eDQwMDY0MDAwIDB4MTQ+LCA8MHg0MDA0NzAwMCAweDExMDA+Ow0KKwkJCWNs b2NrcyA9IDwmbWNnX291dGNsaz47DQorCQkJI2Nsb2NrLWNlbGxzID0gPDA+ Ow0KKwkJfTsNCisNCisJCW1jZ19wY2xrOiBmaXhlZC1yYXRlLXBjbGtANDAw NjQwMDAgew0KKwkJCWNvbXBhdGlibGUgPSAiZnNsLGtpbmV0aXMtY211IjsN CisJCQlyZWcgPSA8MHg0MDA2NDAwMCAweDE0PiwgPDB4NDAwNDcwMDAgMHgx MTAwPjsNCisJCQljbG9ja3MgPSA8Jm1jZ19vdXRjbGs+Ow0KKwkJCSNjbG9j ay1jZWxscyA9IDwwPjsNCisJCX07DQorDQorCQltY2dfY2Nsa19nYXRlOiBj Y2xrLWdhdGVANDAwNDcwMDAgew0KKwkJCWNvbXBhdGlibGUgPSAiZnNsLGtp bmV0aXMtY211IjsNCisJCQlyZWcgPSA8MHg0MDA0NzAwMCAweDExMDA+Ow0K KwkJCWNsb2NrcyA9IDwmbWNnX2NjbGs+Ow0KKwkJCSNjbG9jay1jZWxscyA9 IDwyPjsNCisJCX07DQorDQorCQltY2dfcGNsa19nYXRlOiBwY2xrLWdhdGVA NDAwNDcwMDAgew0KKwkJCWNvbXBhdGlibGUgPSAiZnNsLGtpbmV0aXMtY211 IjsNCisJCQlyZWcgPSA8MHg0MDA0NzAwMCAweDExMDA+Ow0KKwkJCWNsb2Nr cyA9IDwmbWNnX3BjbGs+Ow0KKwkJCSNjbG9jay1jZWxscyA9IDwyPjsNCisJ CX07DQorDQorCQlvc2MwX2VyY2xrOiBmaXhlZC1yYXRlLW9zYzBlckA0MDA2 NDAwMCB7DQorCQkJY29tcGF0aWJsZSA9ICJmc2wsa2luZXRpcy1jbXUiOw0K KwkJCXJlZyA9IDwweDQwMDY0MDAwIDB4MTQ+LCA8MHg0MDA0NzAwMCAweDEx MDA+Ow0KKwkJCSNjbG9jay1jZWxscyA9IDwwPjsNCisJCX07DQorDQorCQlv c2MwX2VyY2xrX2dhdGU6IG9zYzAtZ2F0ZUA0MDA0NzAwMCB7DQorCQkJY29t cGF0aWJsZSA9ICJmc2wsa2luZXRpcy1jbXUiOw0KKwkJCXJlZyA9IDwweDQw MDQ3MDAwIDB4MTEwMD47DQorCQkJY2xvY2tzID0gPCZvc2MwX2VyY2xrPjsN CisJCQkjY2xvY2stY2VsbHMgPSA8Mj47DQorCQl9Ow0KKwl9Ow0KK307DQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvTWFrZWZpbGUgYi9kcml2ZXJzL2Ns ay9NYWtlZmlsZQ0KaW5kZXggNjM0MThjZi4uNDEyZDc2YiAxMDA2NDQNCi0t LSBhL2RyaXZlcnMvY2xrL01ha2VmaWxlDQorKysgYi9kcml2ZXJzL2Nsay9N YWtlZmlsZQ0KQEAgLTI0LDYgKzI0LDcgQEAgb2JqLSQoQ09ORklHX0NPTU1P Tl9DTEtfQ0RDRTcwNikJKz0gY2xrLWNkY2U3MDYubw0KIG9iai0kKENPTkZJ R19BUkNIX0NMUFM3MTFYKQkJKz0gY2xrLWNscHM3MTF4Lm8NCiBvYmotJChD T05GSUdfQVJDSF9FRk0zMikJCSs9IGNsay1lZm0zMmdnLm8NCiBvYmotJChD T05GSUdfQVJDSF9ISUdIQkFOSykJCSs9IGNsay1oaWdoYmFuay5vDQorb2Jq LSQoQ09ORklHX0FSQ0hfS0lORVRJUykJCSs9IGNsay1raW5ldGlzLm8NCiBv YmotJChDT05GSUdfTUFDSF9MT09OR1NPTjMyKQkJKz0gY2xrLWxzMXgubw0K IG9iai0kKENPTkZJR19DT01NT05fQ0xLX01BWF9HRU4pCSs9IGNsay1tYXgt Z2VuLm8NCiBvYmotJChDT05GSUdfQ09NTU9OX0NMS19NQVg3NzY4NikJKz0g Y2xrLW1heDc3Njg2Lm8NCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9jbGst a2luZXRpcy5jIGIvZHJpdmVycy9jbGsvY2xrLWtpbmV0aXMuYw0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjhlMGEwZDcNCi0tLSAv ZGV2L251bGwNCisrKyBiL2RyaXZlcnMvY2xrL2Nsay1raW5ldGlzLmMNCkBA IC0wLDAgKzEsNTAyIEBADQorLyoNCisgKiBjbGsta2luZXRpcy5jIC0gQ2xv Y2sgZHJpdmVyIGZvciBLaW5ldGlzIEs3MCBNQ0cNCisgKg0KKyAqIEJhc2Vk IG9uIGxlZ2FjeSBwcmUtT0YgY29kZSBieSBBbGV4YW5kZXIgUG90YXNoZXYg PGFzcG90YXNoZXZAZW1jcmFmdC5jb20+DQorICoNCisgKiBDb3B5cmlnaHQg KEMpIDIwMTUgUGF1bCBPc21pYWxvd3NraSA8cGF3ZWxvQGtpbmcubmV0LnBs Pg0KKyAqDQorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIN CisgKiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlDQorICogRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51 eC9pby5oPg0KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+DQorI2luY2x1ZGUg PGxpbnV4L3NsYWIuaD4NCisjaW5jbHVkZSA8bGludXgvZXJyLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPg0KKyNpbmNsdWRlIDxsaW51 eC9vZi5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPg0KKw0KK2VudW0ga2luZXRpc19j bGtfaWRzIHsNCisJS0lORVRJU19DTEtfTUNHT1VUID0gMCwNCisJS0lORVRJ U19DTEtfT1NDMEVSLA0KKwlLSU5FVElTX0NMS19DQ0xLLA0KKwlLSU5FVElT X0NMS19QQ0xLLA0KKwlLSU5FVElTX0NMS19OVU0NCit9Ow0KKw0KK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgew0KKwllbnVtIGtpbmV0aXNfY2xrX2lkcwlpZDsN CisJY29uc3QgY2hhcgkJKm5hbWU7DQorfSBraW5ldGlzX2Nsa3NbS0lORVRJ U19DTEtfTlVNXSA9IHsNCisJeyAuaWQgPSBLSU5FVElTX0NMS19NQ0dPVVQs CS5uYW1lID0gImZpeGVkLXJhdGUtbWNnb3V0IiwJfSwNCisJeyAuaWQgPSBL SU5FVElTX0NMS19PU0MwRVIsCS5uYW1lID0gImZpeGVkLXJhdGUtb3NjMGVy IiwJfSwNCisJeyAuaWQgPSBLSU5FVElTX0NMS19DQ0xLLAkubmFtZSA9ICJm aXhlZC1yYXRlLWNjbGsiLAl9LA0KKwl7IC5pZCA9IEtJTkVUSVNfQ0xLX1BD TEssCS5uYW1lID0gImZpeGVkLXJhdGUtcGNsayIsCX0sDQorfTsNCisNCisv Kg0KKyAqIEZyZXF1ZW5jaWVzIG9uIE9TQzAgKEVYVEFMMC9YVEFMMCkgYW5k IE9TQzEgKEVYVEFMMS9YVEFMMSkNCisgKg0KKyAqIFRoZXNlIGZyZXF1ZW5j aWVzIHNob3VsZCBiZSBzZXQgdG8gdGhlIHNhbWUgdmFsdWVzIGFzIGluIFUt Qm9vdC4NCisgKi8NCisjZGVmaW5lIEtJTkVUSVNfT1NDMF9SQVRFCTUwMDAw MDAwCS8qIDUwIE1IeiAqLw0KKyNkZWZpbmUgS0lORVRJU19PU0MxX1JBVEUJ MTIwMDAwMDAJLyogMTIgTUh6ICovDQorDQorI2RlZmluZSBLSU5FVElTX1NJ TV9DR19OVU1SRUdTCTcNCisNCisvKg0KKyAqIFN5c3RlbSBJbnRlZ3JhdGlv biBNb2R1bGUgKFNJTSkgcmVnaXN0ZXIgbWFwDQorICoNCisgKiBUaGlzIG1h cCBhY3R1YWxseSBjb3ZlcnMgdHdvIGhhcmR3YXJlIG1vZHVsZXM6DQorICog ICAgIDEuIFNJTSBsb3ctcG93ZXIgbG9naWMsIGF0IDB4NDAwNDcwMDANCisg KiAgICAgMi4gU3lzdGVtIGludGVncmF0aW9uIG1vZHVsZSAoU0lNKSwgYXQg MHg0MDA0ODAwMA0KKyAqLw0KK3N0cnVjdCBraW5ldGlzX3NpbV9yZWdzIHsN CisJdTMyIHNvcHQxOwkvKiBTeXN0ZW0gT3B0aW9ucyBSZWdpc3RlciAxICov DQorCXUzMiByc3YwWzEwMjRdOw0KKwl1MzIgc29wdDI7CS8qIFN5c3RlbSBP cHRpb25zIFJlZ2lzdGVyIDIgKi8NCisJdTMyIHJzdjE7DQorCXUzMiBzb3B0 NDsJLyogU3lzdGVtIE9wdGlvbnMgUmVnaXN0ZXIgNCAqLw0KKwl1MzIgc29w dDU7CS8qIFN5c3RlbSBPcHRpb25zIFJlZ2lzdGVyIDUgKi8NCisJdTMyIHNv cHQ2OwkvKiBTeXN0ZW0gT3B0aW9ucyBSZWdpc3RlciA2ICovDQorCXUzMiBz b3B0NzsJLyogU3lzdGVtIE9wdGlvbnMgUmVnaXN0ZXIgNyAqLw0KKwl1MzIg cnN2MlsyXTsNCisJdTMyIHNkaWQ7CS8qIFN5c3RlbSBEZXZpY2UgSWRlbnRp ZmljYXRpb24gUmVnaXN0ZXIgKi8NCisJdTMyIHNjZ2NbS0lORVRJU19TSU1f Q0dfTlVNUkVHU107CS8qIENsb2NrIEdhdGluZyBSZWdzIDEuLi43ICovDQor CXUzMiBjbGtkaXYxOwkvKiBTeXN0ZW0gQ2xvY2sgRGl2aWRlciBSZWdpc3Rl ciAxICovDQorCXUzMiBjbGtkaXYyOwkvKiBTeXN0ZW0gQ2xvY2sgRGl2aWRl ciBSZWdpc3RlciAyICovDQorCXUzMiBmY2ZnMTsJLyogRmxhc2ggQ29uZmln dXJhdGlvbiBSZWdpc3RlciAxICovDQorCXUzMiBmY2ZnMjsJLyogRmxhc2gg Q29uZmlndXJhdGlvbiBSZWdpc3RlciAyICovDQorCXUzMiB1aWRoOwkvKiBV bmlxdWUgSWRlbnRpZmljYXRpb24gUmVnaXN0ZXIgSGlnaCAqLw0KKwl1MzIg dWlkbWg7CS8qIFVuaXF1ZSBJZGVudGlmaWNhdGlvbiBSZWdpc3RlciBNaWQt SGlnaCAqLw0KKwl1MzIgdWlkbWw7CS8qIFVuaXF1ZSBJZGVudGlmaWNhdGlv biBSZWdpc3RlciBNaWQgTG93ICovDQorCXUzMiB1aWRsOwkvKiBVbmlxdWUg SWRlbnRpZmljYXRpb24gUmVnaXN0ZXIgTG93ICovDQorCXUzMiBjbGtkaXYz OwkvKiBTeXN0ZW0gQ2xvY2sgRGl2aWRlciBSZWdpc3RlciAzICovDQorCXUz MiBjbGtkaXY0OwkvKiBTeXN0ZW0gQ2xvY2sgRGl2aWRlciBSZWdpc3RlciA0 ICovDQorCXUzMiBtY3I7CS8qIE1pc2MgQ29udHJvbCBSZWdpc3RlciAqLw0K K307DQorI2RlZmluZSBLSU5FVElTX1NJTV9QVFIoYmFzZSwgcmVnKSBcDQor CSgmKCgoc3RydWN0IGtpbmV0aXNfc2ltX3JlZ3MgKikoYmFzZSkpLT5yZWcp KQ0KKw0KKy8qDQorICogU3lzdGVtIENsb2NrIERpdmlkZXIgUmVnaXN0ZXIg MQ0KKyAqLw0KKy8qIENsb2NrIDEgb3V0cHV0IGRpdmlkZXIgdmFsdWUgKGZv ciB0aGUgY29yZS9zeXN0ZW0gY2xvY2spICovDQorI2RlZmluZSBLSU5FVElT X1NJTV9DTEtESVYxX09VVERJVjFfQklUUwkyOA0KKyNkZWZpbmUgS0lORVRJ U19TSU1fQ0xLRElWMV9PVVRESVYxX01TSyBcDQorCSgoKDEgPDwgNCkgLSAx KSA8PCBLSU5FVElTX1NJTV9DTEtESVYxX09VVERJVjFfQklUUykNCisvKiBD bG9jayAyIG91dHB1dCBkaXZpZGVyIHZhbHVlIChmb3IgdGhlIHBlcmlwaGVy YWwgY2xvY2spICovDQorI2RlZmluZSBLSU5FVElTX1NJTV9DTEtESVYxX09V VERJVjJfQklUUwkyNA0KKyNkZWZpbmUgS0lORVRJU19TSU1fQ0xLRElWMV9P VVRESVYyX01TSyBcDQorCSgoKDEgPDwgNCkgLSAxKSA8PCBLSU5FVElTX1NJ TV9DTEtESVYxX09VVERJVjJfQklUUykNCisNCisvKg0KKyAqIFN5c3RlbSBD bG9jayBEaXZpZGVyIFJlZ2lzdGVyIDINCisgKi8NCisvKiBVU0IgSFMgY2xv Y2sgZGl2aWRlciBmcmFjdGlvbiAqLw0KKyNkZWZpbmUgS0lORVRJU19TSU1f Q0xLRElWMl9VU0JIU0ZSQUNfQklUCTgNCisjZGVmaW5lIEtJTkVUSVNfU0lN X0NMS0RJVjJfVVNCSFNGUkFDX01TSyBcDQorCSgxIDw8IEtJTkVUSVNfU0lN X0NMS0RJVjJfVVNCSFNGUkFDX0JJVCkNCisvKiBVU0IgSFMgY2xvY2sgZGl2 aWRlciBkaXZpc29yICovDQorI2RlZmluZSBLSU5FVElTX1NJTV9DTEtESVYy X1VTQkhTRElWX0JJVAk5DQorI2RlZmluZSBLSU5FVElTX1NJTV9DTEtESVYy X1VTQkhTRElWX01TSyBcDQorCSg3IDw8IEtJTkVUSVNfU0lNX0NMS0RJVjJf VVNCSFNESVZfQklUKQ0KKw0KKy8qDQorICogTUNHIENvbnRyb2wgNSBSZWdp c3Rlcg0KKyAqLw0KKy8qIFBMTCBFeHRlcm5hbCBSZWZlcmVuY2UgRGl2aWRl ciAqLw0KKyNkZWZpbmUgS0lORVRJU19NQ0dfQzVfUFJESVZfQklUUwkwDQor I2RlZmluZSBLSU5FVElTX01DR19DNV9QUkRJVl9NU0sgXA0KKwkoKCgxIDw8 IDMpIC0gMSkgPDwgS0lORVRJU19NQ0dfQzVfUFJESVZfQklUUykNCisvKiBQ TEwgU3RvcCBFbmFibGUgKi8NCisjZGVmaW5lIEtJTkVUSVNfTUNHX0M1X1BM TFNURU5fTVNLCSgxIDw8IDUpDQorLyogUExMIENsb2NrIEVuYWJsZSAqLw0K KyNkZWZpbmUgS0lORVRJU19NQ0dfQzVfUExMQ0xLRU5fTVNLCSgxIDw8IDYp DQorLyogUExMIEV4dGVybmFsIFJlZmVyZW5jZSBTZWxlY3QgKGZvciBLNzBA MTIwTUh6KSAqLw0KKyNkZWZpbmUgS0lORVRJU19NQ0dfQzVfUExMUkVGU0VM X0JJVAk3DQorI2RlZmluZSBLSU5FVElTX01DR19DNV9QTExSRUZTRUxfTVNL CSgxIDw8IEtJTkVUSVNfTUNHX0M1X1BMTFJFRlNFTF9CSVQpDQorLyoNCisg KiBNQ0cgQ29udHJvbCA2IFJlZ2lzdGVyDQorICovDQorLyogVkNPIERpdmlk ZXIgKi8NCisjZGVmaW5lIEtJTkVUSVNfTUNHX0M2X1ZESVZfQklUUwkwDQor I2RlZmluZSBLSU5FVElTX01DR19DNl9WRElWX01TSyBcDQorCSgoKDEgPDwg NSkgLSAxKSA8PCBLSU5FVElTX01DR19DNl9WRElWX0JJVFMpDQorLyogUExM IFNlbGVjdCAqLw0KKyNkZWZpbmUgS0lORVRJU19NQ0dfQzZfUExMU19NU0sJ CSgxIDw8IDYpDQorLyoNCisgKiBNQ0cgQ29udHJvbCAxMSBSZWdpc3Rlcg0K KyAqLw0KKy8qIFBMTDEgRXh0ZXJuYWwgUmVmZXJlbmNlIERpdmlkZXIgKi8N CisjZGVmaW5lIEtJTkVUSVNfTUNHX0MxMV9QUkRJVl9CSVRTCTANCisjZGVm aW5lIEtJTkVUSVNfTUNHX0MxMV9QUkRJVl9NU0sgXA0KKwkoKCgxIDw8IDMp IC0gMSkgPDwgS0lORVRJU19NQ0dfQzExX1BSRElWX0JJVFMpDQorLyogUExM IENsb2NrIFNlbGVjdDogUExMMCBvciBQTEwxICovDQorI2RlZmluZSBLSU5F VElTX01DR19DMTFfUExMQ1NfTVNLCSgxIDw8IDQpDQorLyogUExMMSBTdG9w IEVuYWJsZSAqLw0KKyNkZWZpbmUgS0lORVRJU19NQ0dfQzExX1BMTFNURU4x X01TSwkoMSA8PCA1KQ0KKy8qIFBMTDEgQ2xvY2sgRW5hYmxlICovDQorI2Rl ZmluZSBLSU5FVElTX01DR19DMTFfUExMQ0xLRU4xX01TSwkoMSA8PCA2KQ0K Ky8qIFBMTDEgRXh0ZXJuYWwgUmVmZXJlbmNlIFNlbGVjdCAoZm9yIEs3MEAx MjBNSHopICovDQorI2RlZmluZSBLSU5FVElTX01DR19DMTFfUExMUkVGU0VM MV9CSVQJNw0KKyNkZWZpbmUgS0lORVRJU19NQ0dfQzExX1BMTFJFRlNFTDFf TVNLCSgxIDw8IEtJTkVUSVNfTUNHX0MxMV9QTExSRUZTRUwxX0JJVCkNCisv Kg0KKyAqIE1DRyBDb250cm9sIDEyIFJlZ2lzdGVyDQorICovDQorLyogVkNP MSBEaXZpZGVyICovDQorI2RlZmluZSBLSU5FVElTX01DR19DMTJfVkRJVjFf QklUUwkwDQorI2RlZmluZSBLSU5FVElTX01DR19DMTJfVkRJVjFfTVNLIFwN CisJKCgoMSA8PCA1KSAtIDEpIDw8IEtJTkVUSVNfTUNHX0MxMl9WRElWMV9C SVRTKQ0KKw0KKy8qDQorICogTXVsdGlwdXJwb3NlIENsb2NrIEdlbmVyYXRv ciAoTUNHKSByZWdpc3RlciBtYXANCisgKg0KKyAqIFNlZSBDaGFwdGVyIDI1 IG9mIHRoZSBLNzAgUmVmZXJlbmNlIE1hbnVhbA0KKyAqLw0KK3N0cnVjdCBr aW5ldGlzX21jZ19yZWdzIHsNCisJdTggYzE7CQkvKiBNQ0cgQ29udHJvbCAx IFJlZ2lzdGVyICovDQorCXU4IGMyOwkJLyogTUNHIENvbnRyb2wgMiBSZWdp c3RlciAqLw0KKwl1OCBjMzsJCS8qIE1DRyBDb250cm9sIDMgUmVnaXN0ZXIg Ki8NCisJdTggYzQ7CQkvKiBNQ0cgQ29udHJvbCA0IFJlZ2lzdGVyICovDQor CXU4IGM1OwkJLyogTUNHIENvbnRyb2wgNSBSZWdpc3RlciAqLw0KKwl1OCBj NjsJCS8qIE1DRyBDb250cm9sIDYgUmVnaXN0ZXIgKi8NCisJdTggc3RhdHVz OwkvKiBNQ0cgU3RhdHVzIFJlZ2lzdGVyICovDQorCXU4IHJzdjA7DQorCXU4 IGF0YzsJCS8qIE1DRyBBdXRvIFRyaW0gQ29udHJvbCBSZWdpc3RlciAqLw0K Kwl1OCByc3YxOw0KKwl1OCBhdGN2aDsJLyogTUNHIEF1dG8gVHJpbSBDb21w YXJlIFZhbHVlIEhpZ2ggUmVnaXN0ZXIgKi8NCisJdTggYXRjdmw7CS8qIE1D RyBBdXRvIFRyaW0gQ29tcGFyZSBWYWx1ZSBMb3cgUmVnaXN0ZXIgKi8NCisJ dTggYzc7CQkvKiBNQ0cgQ29udHJvbCA3IFJlZ2lzdGVyICovDQorCXU4IGM4 OwkJLyogTUNHIENvbnRyb2wgOCBSZWdpc3RlciAqLw0KKwl1OCByc3YyOw0K Kwl1OCBjMTA7CQkvKiBNQ0cgQ29udHJvbCAxMCBSZWdpc3RlciAqLw0KKwl1 OCBjMTE7CQkvKiBNQ0cgQ29udHJvbCAxMSBSZWdpc3RlciAqLw0KKwl1OCBj MTI7CQkvKiBNQ0cgQ29udHJvbCAxMiBSZWdpc3RlciAqLw0KKwl1OCBzdGF0 dXMyOwkvKiBNQ0cgU3RhdHVzIDIgUmVnaXN0ZXIgKi8NCisJdTggcnN2MzsN Cit9Ow0KKyNkZWZpbmUgS0lORVRJU19NQ0dfUFRSKGJhc2UsIHJlZykgXA0K KwkoJigoKHN0cnVjdCBraW5ldGlzX21jZ19yZWdzICopKGJhc2UpKS0+cmVn KSkNCisNCitzdHJ1Y3Qga2luZXRpc19jbGtfZ2F0ZSB7DQorCWNvbnN0IGNo YXIgKmNsa19nYXRlX25hbWU7DQorCXN0cnVjdCBjbGsgKmNsazsNCisJdTMy IHJlZzsNCisJdTMyIGlkeDsNCisJc3RydWN0IGxpc3RfaGVhZCBjbGtfbGlz dDsNCit9Ow0KKw0KK3N0cnVjdCBraW5ldGlzX2Nsa19nYXRlX2RhdGEgew0K Kwl2b2lkIF9faW9tZW0gKnNpbTsNCisJc3RydWN0IGxpc3RfaGVhZCBjbGtf Z2F0ZV9saXN0Ow0KK307DQorDQorc3RydWN0IGtpbmV0aXNfc2NnYyB7DQor CXVuc2lnbmVkIGxvbmcgcGFkZHI7DQorCXNwaW5sb2NrX3QgbG9jazsNCisJ c3RydWN0IGxpc3RfaGVhZCBzY2djX2xpc3Q7DQorfTsNCisNCitzdGF0aWMg c3RydWN0IGxpc3RfaGVhZCBraW5ldGlzX3NjZ2NfbGlzdCA9IExJU1RfSEVB RF9JTklUKGtpbmV0aXNfc2NnY19saXN0KTsNCisNCitzdGF0aWMgY29uc3Qg Y2hhciAqa2luZXRpc19vZl9jbGtfZ2V0X25hbWUoc3RydWN0IGRldmljZV9u b2RlICpucCkNCit7DQorCXN0cnVjdCBvZl9waGFuZGxlX2FyZ3MgY2xrc3Bl YzsNCisJaW50IHJldDsNCisJY29uc3QgY2hhciAqcmV0dmFsOw0KKw0KKwly ZXQgPSBvZl9wYXJzZV9waGFuZGxlX3dpdGhfYXJncyhucCwgImNsb2NrcyIs ICIjY2xvY2stY2VsbHMiLCAwLA0KKwkJCQkJJmNsa3NwZWMpOw0KKwlpZiAo cmV0KQ0KKwkJcmV0dXJuIE5VTEw7DQorDQorCXJldHZhbCA9IGNsa3NwZWMu bnAtPmZ1bGxfbmFtZTsNCisNCisJb2Zfbm9kZV9wdXQoY2xrc3BlYy5ucCk7 DQorDQorCXJldHVybiByZXR2YWw7DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3Qg Y2xrICpraW5ldGlzX2ZpbmRfY2xrX2dhdGUoDQorCQlzdHJ1Y3Qga2luZXRp c19jbGtfZ2F0ZV9kYXRhICpjbGtfZ2F0ZV9kYXRhLCB1MzIgcmVnLCB1MzIg aWR4KQ0KK3sNCisJc3RydWN0IGtpbmV0aXNfY2xrX2dhdGUgKmdhdGU7DQor DQorCWxpc3RfZm9yX2VhY2hfZW50cnkoZ2F0ZSwgJmNsa19nYXRlX2RhdGEt PmNsa19nYXRlX2xpc3QsIGNsa19saXN0KQ0KKwkJaWYgKChnYXRlLT5yZWcg PT0gcmVnKSAmJiAoZ2F0ZS0+aWR4ID09IGlkeCkpDQorCQkJcmV0dXJuIGdh dGUtPmNsazsNCisNCisJcmV0dXJuIE5VTEw7DQorfQ0KKw0KK3N0YXRpYyBz dHJ1Y3Qga2luZXRpc19zY2djICpraW5ldGlzX2ZpbmRfc2NnYyh1bnNpZ25l ZCBsb25nIHBhZGRyKQ0KK3sNCisJc3RydWN0IGtpbmV0aXNfc2NnYyAqc2Nn YzsNCisNCisJbGlzdF9mb3JfZWFjaF9lbnRyeShzY2djLCAma2luZXRpc19z Y2djX2xpc3QsIHNjZ2NfbGlzdCkNCisJCWlmIChzY2djLT5wYWRkciA9PSBw YWRkcikNCisJCQlyZXR1cm4gc2NnYzsNCisNCisJcmV0dXJuIE5VTEw7DQor fQ0KKw0KK3N0YXRpYyBzdHJ1Y3QgY2xrICpraW5ldGlzX2Nsa19nYXRlX2dl dChzdHJ1Y3Qgb2ZfcGhhbmRsZV9hcmdzICpjbGtzcGVjLA0KKwkJCQkJdm9p ZCAqZGF0YSkNCit7DQorCWNvbnN0IGNoYXIgKmNsa19uYW1lOw0KKwlzdHJ1 Y3Qga2luZXRpc19jbGtfZ2F0ZV9kYXRhICpjbGtfZ2F0ZV9kYXRhID0gZGF0 YTsNCisJc3RydWN0IGtpbmV0aXNfY2xrX2dhdGUgKmdhdGU7DQorCXUzMiBy ZWcgPSBjbGtzcGVjLT5hcmdzWzBdOw0KKwl1MzIgaWR4ID0gY2xrc3BlYy0+ YXJnc1sxXTsNCisJc3RydWN0IGNsayAqY2xrOw0KKwlzdHJ1Y3Qga2luZXRp c19zY2djICpzY2djOw0KKwl2b2lkIF9faW9tZW0gKmFkZHIgPSBLSU5FVElT X1NJTV9QVFIoY2xrX2dhdGVfZGF0YS0+c2ltLCBzY2djW3JlZ10pOw0KKwl1 bnNpZ25lZCBsb25nIHBhZGRyID0gdmlydF90b19waHlzKGFkZHIpOw0KKw0K KwljbGsgPSBraW5ldGlzX2ZpbmRfY2xrX2dhdGUoY2xrX2dhdGVfZGF0YSwg cmVnLCBpZHgpOw0KKwlpZiAoY2xrKQ0KKwkJcmV0dXJuIGNsazsNCisNCisJ Y2xrX25hbWUgPSBraW5ldGlzX29mX2Nsa19nZXRfbmFtZShjbGtzcGVjLT5u cCk7DQorCUJVR19PTighY2xrX25hbWUpOw0KKw0KKwlzY2djID0ga2luZXRp c19maW5kX3NjZ2MocGFkZHIpOw0KKwlpZiAoIXNjZ2MpIHsNCisJCXNjZ2Mg PSBremFsbG9jKHNpemVvZihzdHJ1Y3Qga2luZXRpc19zY2djKSwgR0ZQX0tF Uk5FTCk7DQorCQlpZiAoIXNjZ2MpDQorCQkJcmV0dXJuIEVSUl9QVFIoLUVO T01FTSk7DQorCQlzY2djLT5wYWRkciA9IHBhZGRyOw0KKwkJc3Bpbl9sb2Nr X2luaXQoJnNjZ2MtPmxvY2spOw0KKw0KKwkJbGlzdF9hZGQoJnNjZ2MtPnNj Z2NfbGlzdCwgJmtpbmV0aXNfc2NnY19saXN0KTsNCisJfQ0KKw0KKwlnYXRl ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGtpbmV0aXNfY2xrX2dhdGUpLCBH RlBfS0VSTkVMKTsNCisJaWYgKCFnYXRlKQ0KKwkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7DQorDQorCWdhdGUtPmNsa19nYXRlX25hbWUgPSBrYXNwcmlu dGYoR0ZQX0tFUk5FTCwgIiVzOiV1OiV1IiwNCisJCQkJY2xrc3BlYy0+bnAt PmZ1bGxfbmFtZSwgcmVnLCBpZHgpOw0KKwlpZiAoIWdhdGUtPmNsa19nYXRl X25hbWUpIHsNCisJCWtmcmVlKGdhdGUpOw0KKwkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7DQorCX0NCisNCisJY2xrID0gY2xrX3JlZ2lzdGVyX2dhdGUo TlVMTCwgZ2F0ZS0+Y2xrX2dhdGVfbmFtZSwgY2xrX25hbWUsIDAsIGFkZHIs DQorCQkJCQkJCWlkeCwgMCwgJnNjZ2MtPmxvY2spOw0KKwlpZiAoSVNfRVJS KGNsaykpIHsNCisJCXByX2VycigiQ2Fubm90IHJlZ2lzdGVyIGdhdGUgdG8g Y2xvY2sgJXNcbiIsIGNsa19uYW1lKTsNCisJCWtmcmVlX2NvbnN0KGdhdGUt PmNsa19nYXRlX25hbWUpOw0KKwkJa2ZyZWUoZ2F0ZSk7DQorCQlyZXR1cm4g Y2xrOw0KKwl9DQorDQorCWdhdGUtPmNsayA9IGNsazsNCisJZ2F0ZS0+cmVn ID0gcmVnOw0KKwlnYXRlLT5pZHggPSBpZHg7DQorDQorCWxpc3RfYWRkKCZn YXRlLT5jbGtfbGlzdCwgJmNsa19nYXRlX2RhdGEtPmNsa19nYXRlX2xpc3Qp Ow0KKw0KKwlyZXR1cm4gY2xrOw0KK30NCisNCitzdGF0aWMgdm9pZCBraW5l dGlzX29mX3JlZ2lzdGVyX2Nsa19nYXRlKHN0cnVjdCBkZXZpY2Vfbm9kZSAq bnApDQorew0KKwljb25zdCBjaGFyICpjbGtfcGFyZW50X25hbWUgPSBraW5l dGlzX29mX2Nsa19nZXRfbmFtZShucCk7DQorCXN0cnVjdCBraW5ldGlzX2Ns a19nYXRlX2RhdGEgKmNsa19nYXRlOw0KKwl2b2lkIF9faW9tZW0gKnNpbTsN CisJaW50IHJldDsNCisNCisJaWYgKCFjbGtfcGFyZW50X25hbWUpIHsNCisJ CXByX2Vycigibm8gY2xvY2sgc3BlY2lmaWVkIGZvciBnYXRlICVzXG4iLCBu cC0+ZnVsbF9uYW1lKTsNCisJCXJldHVybjsNCisJfQ0KKw0KKwlzaW0gPSBv Zl9pb21hcChucCwgMCk7DQorCWlmICghc2ltKSB7DQorCQlwcl9lcnIoImZh aWxlZCB0byBtYXAgU0lNIGFkZHJlc3MgcmFuZ2UgZm9yICVzXG4iLA0KKwkJ CQkJCQlucC0+ZnVsbF9uYW1lKTsNCisJCXJldHVybjsNCisJfQ0KKw0KKwlj bGtfZ2F0ZSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBraW5ldGlzX2Nsa19n YXRlX2RhdGEpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFjbGtfZ2F0ZSkgew0K KwkJaW91bm1hcChzaW0pOw0KKwkJcmV0dXJuOw0KKwl9DQorDQorCWNsa19n YXRlLT5zaW0gPSBzaW07DQorCUlOSVRfTElTVF9IRUFEKCZjbGtfZ2F0ZS0+ Y2xrX2dhdGVfbGlzdCk7DQorDQorCXJldCA9IG9mX2Nsa19hZGRfcHJvdmlk ZXIobnAsIGtpbmV0aXNfY2xrX2dhdGVfZ2V0LCBjbGtfZ2F0ZSk7DQorCWlm IChyZXQgPCAwKSB7DQorCQlwcl9lcnIoIkNvdWxkIG5vdCBhZGQgY2xvY2sg cHJvdmlkZXIgJXNcbiIsIG5wLT5mdWxsX25hbWUpOw0KKwkJa2ZyZWUoY2xr X2dhdGUpOw0KKwkJaW91bm1hcChzaW0pOw0KKwkJcmV0dXJuOw0KKwl9DQor fQ0KKw0KK3N0YXRpYyB2b2lkIGtpbmV0aXNfb2ZfcmVnaXN0ZXJfZml4ZWRf cmF0ZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1MzIgY2xrX3ZhbCkNCit7 DQorCWNvbnN0IGNoYXIgKmNsa19wYXJlbnRfbmFtZSA9IGtpbmV0aXNfb2Zf Y2xrX2dldF9uYW1lKG5wKTsNCisJc3RydWN0IGNsayAqY2xrOw0KKwlpbnQg cmV0Ow0KKw0KKwljbGsgPSBjbGtfcmVnaXN0ZXJfZml4ZWRfcmF0ZShOVUxM LCBucC0+ZnVsbF9uYW1lLA0KKwkJCQkJY2xrX3BhcmVudF9uYW1lLA0KKwkJ CQkJY2xrX3BhcmVudF9uYW1lID8gMCA6IENMS19JU19ST09ULA0KKwkJCQkJ Y2xrX3ZhbCk7DQorCWlmIChJU19FUlIoY2xrKSkgew0KKwkJcHJfZXJyKCJD b3VsZCBub3QgcmVnaXN0ZXIgY2xvY2sgJXNcbiIsIG5wLT5mdWxsX25hbWUp Ow0KKwkJcmV0dXJuOw0KKwl9DQorDQorCXJldCA9IG9mX2Nsa19hZGRfcHJv dmlkZXIobnAsIG9mX2Nsa19zcmNfc2ltcGxlX2dldCwgY2xrKTsNCisJaWYg KHJldCA8IDApIHsNCisJCXByX2VycigiQ291bGQgbm90IGFkZCBjbG9jayBw cm92aWRlciAlc1xuIiwgbnAtPmZ1bGxfbmFtZSk7DQorCQljbGtfdW5yZWdp c3RlcihjbGspOw0KKwkJcmV0dXJuOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyB2 b2lkIF9faW5pdCBraW5ldGlzX21jZ19pbml0KHN0cnVjdCBkZXZpY2Vfbm9k ZSAqbnApDQorew0KKwljb25zdCBpbnQgdmNvX2RpdiA9IDI7DQorCWNvbnN0 IGludCB2ZGl2X21pbiA9IDE2Ow0KKwl1MzIgY2xvY2tfdmFsW10gPSB7IFsw IC4uLiBLSU5FVElTX0NMS19OVU1dID0gMCB9Ow0KKwl2b2lkIF9faW9tZW0g KmJhc2U7DQorCXZvaWQgX19pb21lbSAqc2ltOw0KKwlpbnQgcGxsX3NlbDsN CisJaW50IG9zY19zZWw7DQorCXVuc2lnbmVkIGxvbmcgbWNnb3V0Ow0KKwll bnVtIGtpbmV0aXNfY2xrX2lkcyBjbGtfaWQ7DQorCXUzMiBjbG9ja19jZWxs czsNCisNCisJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyX2luZGV4KG5wLCAi I2Nsb2NrLWNlbGxzIiwgMCwgJmNsb2NrX2NlbGxzKSkgew0KKwkJcHJfZXJy KCJubyAjY2xvY2stY2VsbHMgc2V0IGZvciAlc1xuIiwgbnAtPmZ1bGxfbmFt ZSk7DQorCQlyZXR1cm47DQorCX0NCisNCisJLyoNCisJICogSGFuZGxlIGNs b2NrIGdhdGVzIChyZWNvZ25pemVkIGJ5IHR3byBjbG9jayBjZWxscykNCisJ ICovDQorCWlmICgyID09IGNsb2NrX2NlbGxzKSB7DQorCQlraW5ldGlzX29m X3JlZ2lzdGVyX2Nsa19nYXRlKG5wKTsNCisJCXJldHVybjsNCisJfQ0KKw0K KwliYXNlID0gb2ZfaW9tYXAobnAsIDApOw0KKwlpZiAoIWJhc2UpIHsNCisJ CXByX2VycigiZmFpbGVkIHRvIG1hcCBNQ0cgYWRkcmVzcyByYW5nZSBmb3Ig JXNcbiIsDQorCQkJCQkJCQlucC0+ZnVsbF9uYW1lKTsNCisJCXJldHVybjsN CisJfQ0KKw0KKwlzaW0gPSBvZl9pb21hcChucCwgMSk7DQorCWlmICghc2lt KSB7DQorCQlwcl9lcnIoImZhaWxlZCB0byBtYXAgU0lNIGFkZHJlc3MgcmFu Z2UgZm9yICVzXG4iLA0KKwkJCQkJCQkJbnAtPmZ1bGxfbmFtZSk7DQorCQlp b3VubWFwKGJhc2UpOw0KKwkJcmV0dXJuOw0KKwl9DQorDQorCS8qDQorCSAq IENoZWNrIHdoZXRoZXIgUExMMCBvciBQTEwxIGlzIHVzZWQgZm9yIE1DR09V VENMSw0KKwkgKi8NCisJcGxsX3NlbCA9ICEhKGlvcmVhZDgoS0lORVRJU19N Q0dfUFRSKGJhc2UsIGMxMSkpICYNCisJCQkJS0lORVRJU19NQ0dfQzExX1BM TENTX01TSyk7DQorDQorCS8qDQorCSAqIENoZWNrIHdoZXRoZXIgT1NDMCBv ciBPU0MxIGlzIHVzZWQgdG8gc291cmNlIHRoZSBtYWluIFBMTA0KKwkgKi8N CisJaWYgKHBsbF9zZWwpDQorCQlvc2Nfc2VsID0gISEoaW9yZWFkOChLSU5F VElTX01DR19QVFIoYmFzZSwgYzExKSkgJg0KKwkJCQlLSU5FVElTX01DR19D MTFfUExMUkVGU0VMMV9NU0spOw0KKwllbHNlDQorCQlvc2Nfc2VsID0gISEo aW9yZWFkOChLSU5FVElTX01DR19QVFIoYmFzZSwgYzUpKSAmDQorCQkJCUtJ TkVUSVNfTUNHX0M1X1BMTFJFRlNFTF9NU0spOw0KKw0KKwkvKg0KKwkgKiBT dGFydCB3aXRoIHRoZSBNQ0cgaW5wdXQgY2xvY2sNCisJICovDQorCW1jZ291 dCA9IG9zY19zZWwgPyBLSU5FVElTX09TQzFfUkFURSA6IEtJTkVUSVNfT1ND MF9SQVRFOw0KKw0KKwkvKg0KKwkgKiBBcHBseSBkaXZpZGVycyBhbmQgbXVs dGlwbGllcnMgb2YgdGhlIHNlbGVjdGVkIFBMTA0KKwkgKi8NCisJaWYgKHBs bF9zZWwpIHsNCisJCS8qDQorCQkgKiBQTEwxIGludGVybmFsIGRpdmlkZXIg KFBSRElWKQ0KKwkJICovDQorCQltY2dvdXQgLz0gKChpb3JlYWQ4KEtJTkVU SVNfTUNHX1BUUihiYXNlLCBjMTEpKSAmDQorCQkgIEtJTkVUSVNfTUNHX0Mx MV9QUkRJVl9NU0spID4+IEtJTkVUSVNfTUNHX0MxMV9QUkRJVl9CSVRTKSAr IDE7DQorDQorCQkvKg0KKwkJICogUExMMSBtdWx0aXBsaWNhdGlvbiBmYWN0 b3IgKFZESVYpDQorCQkgKi8NCisJCW1jZ291dCAqPSAoKGlvcmVhZDgoS0lO RVRJU19NQ0dfUFRSKGJhc2UsIGMxMikpICYNCisJCSAgS0lORVRJU19NQ0df QzEyX1ZESVYxX01TSykgPj4gS0lORVRJU19NQ0dfQzEyX1ZESVYxX0JJVFMp ICsNCisJCQkJCQkJCSAgICB2ZGl2X21pbjsNCisJfSBlbHNlIHsNCisJCS8q DQorCQkgKiBQTEwwIGludGVybmFsIGRpdmlkZXIgKFBSRElWKQ0KKwkJICov DQorCQltY2dvdXQgLz0gKChpb3JlYWQ4KEtJTkVUSVNfTUNHX1BUUihiYXNl LCBjNSkpICYNCisJCQlLSU5FVElTX01DR19DNV9QUkRJVl9NU0spID4+DQor CQkJS0lORVRJU19NQ0dfQzVfUFJESVZfQklUUykgKyAxOw0KKw0KKwkJLyoN CisJCSAqIFBMTDAgbXVsdGlwbGljYXRpb24gZmFjdG9yIChWRElWKQ0KKwkJ ICovDQorCQltY2dvdXQgKj0gKChpb3JlYWQ4KEtJTkVUSVNfTUNHX1BUUihi YXNlLCBjNikpICYNCisJCQlLSU5FVElTX01DR19DNl9WRElWX01TSykgPj4N CisJCQlLSU5FVElTX01DR19DNl9WRElWX0JJVFMpICsgdmRpdl9taW47DQor CX0NCisNCisJLyoNCisJICogQXBwbHkgdGhlIFBMTCBvdXRwdXQgZGl2aWRl cg0KKwkgKi8NCisJbWNnb3V0IC89IHZjb19kaXY7DQorDQorCWNsb2NrX3Zh bFtLSU5FVElTX0NMS19NQ0dPVVRdID0gbWNnb3V0Ow0KKwljbG9ja192YWxb S0lORVRJU19DTEtfT1NDMEVSXSA9IEtJTkVUSVNfT1NDMF9SQVRFOw0KKw0K KwljbG9ja192YWxbS0lORVRJU19DTEtfQ0NMS10gPSBtY2dvdXQgLw0KKwkJ KCgoaW9yZWFkMzIoS0lORVRJU19TSU1fUFRSKHNpbSwgY2xrZGl2MSkpICYN CisJCQlLSU5FVElTX1NJTV9DTEtESVYxX09VVERJVjFfTVNLKSA+Pg0KKwkJ CQlLSU5FVElTX1NJTV9DTEtESVYxX09VVERJVjFfQklUUykgKyAxKTsNCisN CisJLyoNCisJICogUGVyaXBoZXJhbCAoYnVzKSBjbG9jaw0KKwkgKi8NCisJ Y2xvY2tfdmFsW0tJTkVUSVNfQ0xLX1BDTEtdID0gbWNnb3V0IC8NCisJCSgo KGlvcmVhZDMyKEtJTkVUSVNfU0lNX1BUUihzaW0sIGNsa2RpdjEpKSAmDQor CQkJS0lORVRJU19TSU1fQ0xLRElWMV9PVVRESVYyX01TSykgPj4NCisJCQkJ S0lORVRJU19TSU1fQ0xLRElWMV9PVVRESVYyX0JJVFMpICsgMSk7DQorDQor CWlvdW5tYXAoc2ltKTsNCisJaW91bm1hcChiYXNlKTsNCisNCisJZm9yIChj bGtfaWQgPSAwOyBjbGtfaWQgPCBLSU5FVElTX0NMS19OVU07IGNsa19pZCsr KQ0KKwkJaWYgKCFvZl9ub2RlX2NtcChucC0+bmFtZSwga2luZXRpc19jbGtz W2Nsa19pZF0ubmFtZSkpDQorCQkJYnJlYWs7DQorDQorCWlmIChLSU5FVElT X0NMS19OVU0gPT0gY2xrX2lkKSB7DQorCQlwcl9lcnIoInVua25vd24gY2xv Y2sgJXMgc3BlY2lmaWVkXG4iLCBucC0+bmFtZSk7DQorCQlyZXR1cm47DQor CX0NCisNCisJaWYgKCFjbG9ja192YWxbY2xrX2lkXSkgew0KKwkJcHJfZXJy KCJubyBjbG9jayByYXRlIGZvciAlc1xuIiwgbnAtPm5hbWUpOw0KKwkJcmV0 dXJuOw0KKwl9DQorDQorCWtpbmV0aXNfb2ZfcmVnaXN0ZXJfZml4ZWRfcmF0 ZShucCwgY2xvY2tfdmFsW2Nsa19pZF0pOw0KK30NCisNCitDTEtfT0ZfREVD TEFSRShraW5ldGlzX21jZywgImZzbCxraW5ldGlzLWNtdSIsIGtpbmV0aXNf bWNnX2luaXQpOw0KLS0gDQoyLjMuNg0KDQo= --98048-854376599-1435945269=:15294-- -- 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/