Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753304Ab3JaIvn (ORCPT ); Thu, 31 Oct 2013 04:51:43 -0400 Received: from intranet.asianux.com ([58.214.24.6]:4800 "EHLO intranet.asianux.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750784Ab3JaIvi (ORCPT ); Thu, 31 Oct 2013 04:51:38 -0400 X-Spam-Score: -100.8 Message-ID: <527219D7.4000109@asianux.com> Date: Thu, 31 Oct 2013 16:50:31 +0800 From: Chen Gang User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 MIME-Version: 1.0 To: Vineet Gupta CC: Francois Bedard , "jeremy.bennett@embecosm.com" , "linux-kernel@vger.kernel.org" , Claudiu Zissulescu , joern Rennecke Subject: Re: [Suggestion] arc: compiler: bug: about an arc compiler's bug which is not in gcc main source code. References: <523FD9E7.3050303@asianux.com> <523FDBD7.4040602@asianux.com> <523FE578.5060801@asianux.com> <52672DAC.1030307@asianux.com> <3B8191AEEF8AD9429F893BDAAB473CA258E064A4@US01WEMBX2.internal.synopsys.com> <52673E9B.6040800@asianux.com> <52706456.5060802@asianux.com> In-Reply-To: Content-Type: multipart/mixed; boundary="------------090605050501080608020507" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 49873 Lines: 716 This is a multi-part message in MIME format. --------------090605050501080608020507 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 10/31/2013 03:48 PM, Vineet Gupta wrote: > Hi Chen, > > Many thanks for all your efforts so far. > Since I need provide contribution to Public Open Source, so what I have done is what I should do. :-) In fact, I really need improve myself: e.g. how to make negative effect lowest (e.g. how to let more members pleased with what I have done), how to improve efficiency (make my waste mail lower) ... > Most of your patches have already been folded into ARC for 3.13. I will send out > the patches for some of the cross-arch changes in next development cycle as > currently I need to finish up a few things for upcoming merge window. > OK, thanks. > We are actively working on toolchain issues and hopefully the fixes will make it > into next formal release of tools. Please check back in few weeks. > OK, I will/should focus. And for gcc issue #27, I shrank the demo source file is about 1K lines (shrank from 50K lines to 1K lines), although it is still a big file which can be shrunk more. And excuse me, I don't know how to past this file on this website, so I load it as attachment, please check. Thanks. -- Chen Gang --------------090605050501080608020507 Content-Type: text/plain; charset=UTF-8; name="target_core_pr.i.shrink3.line_1K.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="target_core_pr.i.shrink3.line_1K.i" dHlwZWRlZiBjaGFyIF9fczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4Owp0eXBlZGVm IHNob3J0IF9fczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2Owp0eXBlZGVmIGlu dCBfX3MzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CnR5cGVkZWYgbG9uZyBsb25n IF9fczY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3U2NDsKdHlwZWRlZiBzaWdu ZWQgY2hhciBzODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4Owp0eXBlZGVmIHNpZ25lZCBz aG9ydCBzMTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdTE2Owp0eXBlZGVmIHNpZ25lZCBp bnQgczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7CnR5cGVkZWYgc2lnbmVkIGxvbmcg bG9uZyBzNjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKZW51bSB7CiBmYWxz ZSA9IDAsCiB0cnVlID0gMQp9Owp0eXBlZGVmIHN0cnVjdCB7CiB1bnNpZ25lZCBsb25nIGZk c19iaXRzWzEwMjQgLyAoOCAqIHNpemVvZihsb25nKSldOwp9IF9fa2VybmVsX2ZkX3NldDsK dHlwZWRlZiB2b2lkICgqX19rZXJuZWxfc2lnaGFuZGxlcl90KShpbnQpOwp0eXBlZGVmIGlu dCBfX2tlcm5lbF9rZXlfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfbXFkX3Q7CnR5cGVkZWYg bG9uZyBfX2tlcm5lbF9sb25nX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX2tlcm5lbF91 bG9uZ190Owp0eXBlZGVmIF9fa2VybmVsX3Vsb25nX3QgX19rZXJuZWxfaW5vX3Q7CnR5cGVk ZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX21vZGVfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxf cGlkX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX2lwY19waWRfdDsKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgX19rZXJuZWxfdWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX2dp ZF90Owp0eXBlZGVmIF9fa2VybmVsX2xvbmdfdCBfX2tlcm5lbF9zdXNlY29uZHNfdDsKdHlw ZWRlZiBpbnQgX19rZXJuZWxfZGFkZHJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJu ZWxfdWlkMzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfZ2lkMzJfdDsKdHlw ZWRlZiBfX2tlcm5lbF91aWRfdCBfX2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgX19rZXJu ZWxfZ2lkX3QgX19rZXJuZWxfb2xkX2dpZF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tl cm5lbF9vbGRfZGV2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX3NpemVfdDsK dHlwZWRlZiBpbnQgX19rZXJuZWxfc3NpemVfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfcHRy ZGlmZl90Owp0eXBlZGVmIHN0cnVjdCB7CiBpbnQgdmFsWzJdOwp9IF9fa2VybmVsX2ZzaWRf dDsKdHlwZWRlZiBfX2tlcm5lbF9sb25nX3QgX19rZXJuZWxfb2ZmX3Q7CnR5cGVkZWYgbG9u ZyBsb25nIF9fa2VybmVsX2xvZmZfdDsKdHlwZWRlZiBfX2tlcm5lbF9sb25nX3QgX19rZXJu ZWxfdGltZV90Owp0eXBlZGVmIF9fa2VybmVsX2xvbmdfdCBfX2tlcm5lbF9jbG9ja190Owp0 eXBlZGVmIGludCBfX2tlcm5lbF90aW1lcl90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9jbG9j a2lkX3Q7CnR5cGVkZWYgY2hhciAqIF9fa2VybmVsX2NhZGRyX3Q7CnR5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgX19rZXJuZWxfdWlkMTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tl cm5lbF9naWQxNl90Owp0eXBlZGVmIF9fdTE2IF9fbGUxNjsKdHlwZWRlZiBfX3UxNiBfX2Jl MTY7CnR5cGVkZWYgX191MzIgX19sZTMyOwp0eXBlZGVmIF9fdTMyIF9fYmUzMjsKdHlwZWRl ZiBfX3U2NCBfX2xlNjQ7CnR5cGVkZWYgX191NjQgX19iZTY0Owp0eXBlZGVmIF9fdTE2IF9f c3VtMTY7CnR5cGVkZWYgX191MzIgX193c3VtOwp0eXBlZGVmIF9fdTMyIF9fa2VybmVsX2Rl dl90Owp0eXBlZGVmIF9fa2VybmVsX2ZkX3NldCBmZF9zZXQ7CnR5cGVkZWYgX19rZXJuZWxf ZGV2X3QgZGV2X3Q7CnR5cGVkZWYgX19rZXJuZWxfaW5vX3QgaW5vX3Q7CnR5cGVkZWYgX19r ZXJuZWxfbW9kZV90IG1vZGVfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1bW9kZV90Owp0 eXBlZGVmIF9fdTMyIG5saW5rX3Q7CnR5cGVkZWYgX19rZXJuZWxfb2ZmX3Qgb2ZmX3Q7CnR5 cGVkZWYgX19rZXJuZWxfcGlkX3QgcGlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfZGFkZHJfdCBk YWRkcl90Owp0eXBlZGVmIF9fa2VybmVsX2tleV90IGtleV90Owp0eXBlZGVmIF9fa2VybmVs X3N1c2Vjb25kc190IHN1c2Vjb25kc190Owp0eXBlZGVmIF9fa2VybmVsX3RpbWVyX3QgdGlt ZXJfdDsKdHlwZWRlZiBfX2tlcm5lbF9jbG9ja2lkX3QgY2xvY2tpZF90Owp0eXBlZGVmIF9f a2VybmVsX21xZF90IG1xZF90Owp0eXBlZGVmIF9Cb29sIGJvb2w7CnR5cGVkZWYgX19rZXJu ZWxfdWlkMzJfdCB1aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9naWQzMl90IGdpZF90Owp0eXBl ZGVmIF9fa2VybmVsX3VpZDE2X3QgdWlkMTZfdDsKdHlwZWRlZiBfX2tlcm5lbF9naWQxNl90 IGdpZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50cHRyX3Q7CnR5cGVkZWYgX19r ZXJuZWxfbG9mZl90IGxvZmZfdDsKdHlwZWRlZiBfX2tlcm5lbF9zaXplX3Qgc2l6ZV90Owp0 eXBlZGVmIF9fa2VybmVsX3NzaXplX3Qgc3NpemVfdDsKdHlwZWRlZiBfX2tlcm5lbF9wdHJk aWZmX3QgcHRyZGlmZl90Owp0eXBlZGVmIF9fa2VybmVsX3RpbWVfdCB0aW1lX3Q7CnR5cGVk ZWYgX19rZXJuZWxfY2xvY2tfdCBjbG9ja190Owp0eXBlZGVmIF9fa2VybmVsX2NhZGRyX3Qg Y2FkZHJfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsKdHlwZWRlZiB1bnNpZ25l ZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDsKdHlwZWRlZiB1 bnNpZ25lZCBsb25nIHVfbG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVuY2hhcjsKdHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7 CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKdHlwZWRlZiBfX3U4IHVfaW50OF90Owp0 eXBlZGVmIF9fczggaW50OF90Owp0eXBlZGVmIF9fdTE2IHVfaW50MTZfdDsKdHlwZWRlZiBf X3MxNiBpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVfaW50MzJfdDsKdHlwZWRlZiBfX3MzMiBp bnQzMl90Owp0eXBlZGVmIF9fdTggdWludDhfdDsKdHlwZWRlZiBfX3UxNiB1aW50MTZfdDsK dHlwZWRlZiBfX3UzMiB1aW50MzJfdDsKdHlwZWRlZiBfX3U2NCB1aW50NjRfdDsKdHlwZWRl ZiBfX3U2NCB1X2ludDY0X3Q7CnR5cGVkZWYgX19zNjQgaW50NjRfdDsKdHlwZWRlZiB1NjQg c2VjdG9yX3Q7CnR5cGVkZWYgdTY0IGJsa2NudF90Owp0eXBlZGVmIHUzMiBkbWFfYWRkcl90 Owp0eXBlZGVmIHVuc2lnbmVkIGdmcF90Owp0eXBlZGVmIHVuc2lnbmVkIGZtb2RlX3Q7CnR5 cGVkZWYgdW5zaWduZWQgb29tX2ZsYWdzX3Q7CnR5cGVkZWYgdTMyIHBoeXNfYWRkcl90Owp0 eXBlZGVmIHBoeXNfYWRkcl90IHJlc291cmNlX3NpemVfdDsKdHlwZWRlZiB1bnNpZ25lZCBs b25nIGlycV9od19udW1iZXJfdDsKdHlwZWRlZiBzdHJ1Y3QgewogaW50IGNvdW50ZXI7Cn0g YXRvbWljX3Q7CnN0cnVjdCBsaXN0X2hlYWQgewogc3RydWN0IGxpc3RfaGVhZCAqbmV4dCwg KnByZXY7Cn07CnR5cGVkZWYgc3RydWN0IHsKIHZvbGF0aWxlIHVuc2lnbmVkIGludCBzbG9j azsKfSBhcmNoX3NwaW5sb2NrX3Q7CnR5cGVkZWYgc3RydWN0IHJhd19zcGlubG9jayB7CiBh cmNoX3NwaW5sb2NrX3QgcmF3X2xvY2s7CiB1bnNpZ25lZCBpbnQgbWFnaWMsIG93bmVyX2Nw dTsKIHZvaWQgKm93bmVyOwp9IHJhd19zcGlubG9ja190Owp0eXBlZGVmIHN0cnVjdCBzcGlu bG9jayB7CiB1bmlvbiB7CiAgc3RydWN0IHJhd19zcGlubG9jayBybG9jazsKIH07Cn0gc3Bp bmxvY2tfdDsKdHlwZWRlZiBhdG9taWNfdCBhdG9taWNfbG9uZ190Owp0eXBlZGVmIHN0cnVj dCBfX3dhaXRfcXVldWUgd2FpdF9xdWV1ZV90Owp0eXBlZGVmIGludCAoKndhaXRfcXVldWVf ZnVuY190KSh3YWl0X3F1ZXVlX3QgKndhaXQsIHVuc2lnbmVkIG1vZGUsIGludCBmbGFncywg dm9pZCAqa2V5KTsKCnN0cnVjdCBfX3dhaXRfcXVldWUgewogdW5zaWduZWQgaW50IGZsYWdz Owogdm9pZCAqcHJpdmF0ZTsKIHdhaXRfcXVldWVfZnVuY190IGZ1bmM7CiBzdHJ1Y3QgbGlz dF9oZWFkIHRhc2tfbGlzdDsKfTsKc3RydWN0IHdhaXRfYml0X2tleSB7CiB2b2lkICpmbGFn czsKIGludCBiaXRfbnI7Cn07CnN0cnVjdCB3YWl0X2JpdF9xdWV1ZSB7CiBzdHJ1Y3Qgd2Fp dF9iaXRfa2V5IGtleTsKIHdhaXRfcXVldWVfdCB3YWl0Owp9OwpzdHJ1Y3QgX193YWl0X3F1 ZXVlX2hlYWQgewogc3BpbmxvY2tfdCBsb2NrOwogc3RydWN0IGxpc3RfaGVhZCB0YXNrX2xp c3Q7Cn07CnR5cGVkZWYgc3RydWN0IF9fd2FpdF9xdWV1ZV9oZWFkIHdhaXRfcXVldWVfaGVh ZF90OwpzdHJ1Y3QgbXV0ZXggewogYXRvbWljX3QgY291bnQ7CiBzcGlubG9ja190IHdhaXRf bG9jazsKIHN0cnVjdCBsaXN0X2hlYWQgd2FpdF9saXN0Owogc3RydWN0IHRhc2tfc3RydWN0 ICpvd25lcjsKIGNvbnN0IGNoYXIgKm5hbWU7CiB2b2lkICptYWdpYzsKfTsKdHlwZWRlZiBz dHJ1Y3QgY3B1bWFzayB7IHVuc2lnbmVkIGxvbmcgYml0c1soKCgyKSArICg4ICogc2l6ZW9m KGxvbmcpKSAtIDEpIC8gKDggKiBzaXplb2YobG9uZykpKV07IH0gY3B1bWFza190OwpzdHJ1 Y3QgY29tcGxldGlvbiB7CiB1bnNpZ25lZCBpbnQgZG9uZTsKIHdhaXRfcXVldWVfaGVhZF90 IHdhaXQ7Cn07CnN0cnVjdCB3b3JrcXVldWVfc3RydWN0OwpzdHJ1Y3Qgd29ya19zdHJ1Y3Q7 CnR5cGVkZWYgdm9pZCAoKndvcmtfZnVuY190KShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp Owp2b2lkIGRlbGF5ZWRfd29ya190aW1lcl9mbih1bnNpZ25lZCBsb25nIF9fZGF0YSk7Cgpl bnVtIHsKIFdPUktfU1RSVUNUX1BFTkRJTkdfQklUID0gMCwKIFdPUktfU1RSVUNUX0RFTEFZ RURfQklUID0gMSwKIFdPUktfU1RSVUNUX1BXUV9CSVQgPSAyLAogV09SS19TVFJVQ1RfTElO S0VEX0JJVCA9IDMsCiBXT1JLX1NUUlVDVF9TVEFUSUNfQklUID0gNCwKIFdPUktfU1RSVUNU X0NPTE9SX1NISUZUID0gNSwKIFdPUktfU1RSVUNUX0NPTE9SX0JJVFMgPSA0LAogV09SS19T VFJVQ1RfUEVORElORyA9IDEgPDwgV09SS19TVFJVQ1RfUEVORElOR19CSVQsCiBXT1JLX1NU UlVDVF9ERUxBWUVEID0gMSA8PCBXT1JLX1NUUlVDVF9ERUxBWUVEX0JJVCwKIFdPUktfU1RS VUNUX1BXUSA9IDEgPDwgV09SS19TVFJVQ1RfUFdRX0JJVCwKIFdPUktfU1RSVUNUX0xJTktF RCA9IDEgPDwgV09SS19TVFJVQ1RfTElOS0VEX0JJVCwKIFdPUktfU1RSVUNUX1NUQVRJQyA9 IDEgPDwgV09SS19TVFJVQ1RfU1RBVElDX0JJVCwKIFdPUktfTlJfQ09MT1JTID0gKDEgPDwg V09SS19TVFJVQ1RfQ09MT1JfQklUUykgLSAxLAogV09SS19OT19DT0xPUiA9IFdPUktfTlJf Q09MT1JTLAogV09SS19DUFVfVU5CT1VORCA9IDIsCiBXT1JLX0NQVV9FTkQgPSAyICsgMSwK IFdPUktfU1RSVUNUX0ZMQUdfQklUUyA9IFdPUktfU1RSVUNUX0NPTE9SX1NISUZUICsgV09S S19TVFJVQ1RfQ09MT1JfQklUUywKIFdPUktfT0ZGUV9GTEFHX0JBU0UgPSBXT1JLX1NUUlVD VF9DT0xPUl9TSElGVCwKIFdPUktfT0ZGUV9DQU5DRUxJTkcgPSAoMSA8PCBXT1JLX09GRlFf RkxBR19CQVNFKSwKIFdPUktfT0ZGUV9GTEFHX0JJVFMgPSAxLAogV09SS19PRkZRX1BPT0xf U0hJRlQgPSBXT1JLX09GRlFfRkxBR19CQVNFICsgV09SS19PRkZRX0ZMQUdfQklUUywKIFdP UktfT0ZGUV9MRUZUID0gMzIgLSBXT1JLX09GRlFfUE9PTF9TSElGVCwKIFdPUktfT0ZGUV9Q T09MX0JJVFMgPSBXT1JLX09GRlFfTEVGVCA8PSAzMSA/IFdPUktfT0ZGUV9MRUZUIDogMzEs CiBXT1JLX09GRlFfUE9PTF9OT05FID0gKDFMVSA8PCBXT1JLX09GRlFfUE9PTF9CSVRTKSAt IDEsCiBXT1JLX1NUUlVDVF9GTEFHX01BU0sgPSAoMVVMIDw8IFdPUktfU1RSVUNUX0ZMQUdf QklUUykgLSAxLAogV09SS19TVFJVQ1RfV1FfREFUQV9NQVNLID0gfldPUktfU1RSVUNUX0ZM QUdfTUFTSywKIFdPUktfU1RSVUNUX05PX1BPT0wgPSAodW5zaWduZWQgbG9uZylXT1JLX09G RlFfUE9PTF9OT05FIDw8IFdPUktfT0ZGUV9QT09MX1NISUZULAogV09SS19CVVNZX1BFTkRJ TkcgPSAxIDw8IDAsCiBXT1JLX0JVU1lfUlVOTklORyA9IDEgPDwgMSwKIFdPUktFUl9ERVND X0xFTiA9IDI0LAp9OwpzdHJ1Y3Qgd29ya19zdHJ1Y3QgewogYXRvbWljX2xvbmdfdCBkYXRh Owogc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKIHdvcmtfZnVuY190IGZ1bmM7Cn07CnN0cnVj dCBrcmVmIHsKIGF0b21pY190IHJlZmNvdW50Owp9OwplbnVtIGRtYV9kYXRhX2RpcmVjdGlv biB7CiBETUFfQklESVJFQ1RJT05BTCA9IDAsCiBETUFfVE9fREVWSUNFID0gMSwKIERNQV9G Uk9NX0RFVklDRSA9IDIsCiBETUFfTk9ORSA9IDMsCn07CnN0cnVjdCBzZW1hcGhvcmUgewog cmF3X3NwaW5sb2NrX3QgbG9jazsKIHVuc2lnbmVkIGludCBjb3VudDsKIHN0cnVjdCBsaXN0 X2hlYWQgd2FpdF9saXN0Owp9OwpzdHJ1Y3QgY29uZmlnX2l0ZW0gewogY2hhciAqY2lfbmFt ZTsKIGNoYXIgY2lfbmFtZWJ1ZlsyMF07CiBzdHJ1Y3Qga3JlZiBjaV9rcmVmOwogc3RydWN0 IGxpc3RfaGVhZCBjaV9lbnRyeTsKIHN0cnVjdCBjb25maWdfaXRlbSAqY2lfcGFyZW50Owog c3RydWN0IGNvbmZpZ19ncm91cCAqY2lfZ3JvdXA7CiBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlw ZSAqY2lfdHlwZTsKIHN0cnVjdCBkZW50cnkgKmNpX2RlbnRyeTsKfTsKc3RydWN0IGNvbmZp Z19pdGVtX3R5cGUgewogc3RydWN0IG1vZHVsZSAqY3Rfb3duZXI7CiBzdHJ1Y3QgY29uZmln ZnNfaXRlbV9vcGVyYXRpb25zICpjdF9pdGVtX29wczsKIHN0cnVjdCBjb25maWdmc19ncm91 cF9vcGVyYXRpb25zICpjdF9ncm91cF9vcHM7CiBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRl ICoqY3RfYXR0cnM7Cn07CnN0cnVjdCBjb25maWdfZ3JvdXAgewogc3RydWN0IGNvbmZpZ19p dGVtIGNnX2l0ZW07CiBzdHJ1Y3QgbGlzdF9oZWFkIGNnX2NoaWxkcmVuOwogc3RydWN0IGNv bmZpZ2ZzX3N1YnN5c3RlbSAqY2dfc3Vic3lzOwogc3RydWN0IGNvbmZpZ19ncm91cCAqKmRl ZmF1bHRfZ3JvdXBzOwp9OwpzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlIHsKIGNvbnN0IGNo YXIgKmNhX25hbWU7CiBzdHJ1Y3QgbW9kdWxlICpjYV9vd25lcjsKIHVtb2RlX3QgY2FfbW9k ZTsKfTsKc3RydWN0IHBlcmNwdV9pZGFfY3B1OwpzdHJ1Y3QgcGVyY3B1X2lkYSB7CiB1bnNp Z25lZCBucl90YWdzOwogc3RydWN0IHBlcmNwdV9pZGFfY3B1ICp0YWdfY3B1OwogY3B1bWFz a190IGNwdXNfaGF2ZV90YWdzOwogc3RydWN0IHsKICBzcGlubG9ja190IGxvY2s7CiAgdW5z aWduZWQgY3B1X2xhc3Rfc3RvbGVuOwogIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CiAgdW5z aWduZWQgbnJfZnJlZTsKICB1bnNpZ25lZCAqZnJlZWxpc3Q7CiB9IF9fYXR0cmlidXRlX18o KF9fYWxpZ25lZF9fKCgxIDw8IDYpKSkpOwp9OwplbnVtIGhiYV9mbGFnc190YWJsZSB7CiBI QkFfRkxBR1NfSU5URVJOQUxfVVNFID0gMHgwMSwKIEhCQV9GTEFHU19QU0NTSV9NT0RFID0g MHgwMiwKfTsKZW51bSB0cmFuc3BvcnRfbHVuX3N0YXR1c190YWJsZSB7CiBUUkFOU1BPUlRf TFVOX1NUQVRVU19GUkVFID0gMCwKIFRSQU5TUE9SVF9MVU5fU1RBVFVTX0FDVElWRSA9IDEs Cn07CmVudW0gdHJhbnNwb3J0X3RwZ190eXBlX3RhYmxlIHsKIFRSQU5TUE9SVF9UUEdfVFlQ RV9OT1JNQUwgPSAwLAogVFJBTlNQT1JUX1RQR19UWVBFX0RJU0NPVkVSWSA9IDEsCn07CmVu dW0gdHJhbnNwb3J0X3N0YXRlX3RhYmxlIHsKIFRSQU5TUE9SVF9OT19TVEFURSA9IDAsCiBU UkFOU1BPUlRfTkVXX0NNRCA9IDEsCiBUUkFOU1BPUlRfV1JJVEVfUEVORElORyA9IDMsCiBU UkFOU1BPUlRfUFJPQ0VTU0lORyA9IDUsCiBUUkFOU1BPUlRfQ09NUExFVEUgPSA2LAogVFJB TlNQT1JUX0lTVEFURV9QUk9DRVNTSU5HID0gMTEsCiBUUkFOU1BPUlRfQ09NUExFVEVfUUZf V1AgPSAxOCwKIFRSQU5TUE9SVF9DT01QTEVURV9RRl9PSyA9IDE5LAp9OwplbnVtIHNlX2Nt ZF9mbGFnc190YWJsZSB7CiBTQ0ZfU1VQUE9SVEVEX1NBTV9PUENPREUgPSAweDAwMDAwMDAx LAogU0NGX1RSQU5TUE9SVF9UQVNLX1NFTlNFID0gMHgwMDAwMDAwMiwKIFNDRl9FTVVMQVRF RF9UQVNLX1NFTlNFID0gMHgwMDAwMDAwNCwKIFNDRl9TQ1NJX0RBVEFfQ0RCID0gMHgwMDAw MDAwOCwKIFNDRl9TQ1NJX1RNUl9DREIgPSAweDAwMDAwMDEwLAogU0NGX0ZVQSA9IDB4MDAw MDAwODAsCiBTQ0ZfU0VfTFVOX0NNRCA9IDB4MDAwMDAxMDAsCiBTQ0ZfQklESSA9IDB4MDAw MDA0MDAsCiBTQ0ZfU0VOVF9DSEVDS19DT05ESVRJT04gPSAweDAwMDAwODAwLAogU0NGX09W RVJGTE9XX0JJVCA9IDB4MDAwMDEwMDAsCiBTQ0ZfVU5ERVJGTE9XX0JJVCA9IDB4MDAwMDIw MDAsCiBTQ0ZfU0VOVF9ERUxBWUVEX1RBUyA9IDB4MDAwMDQwMDAsCiBTQ0ZfQUxVQV9OT05f T1BUSU1JWkVEID0gMHgwMDAwODAwMCwKIFNDRl9QQVNTVEhST1VHSF9TR19UT19NRU1fTk9B TExPQyA9IDB4MDAwMjAwMDAsCiBTQ0ZfQUNLX0tSRUYgPSAweDAwMDQwMDAwLAogU0NGX0NP TVBBUkVfQU5EX1dSSVRFID0gMHgwMDA4MDAwMCwKIFNDRl9DT01QQVJFX0FORF9XUklURV9Q T1NUID0gMHgwMDEwMDAwMCwKIFNDRl9DTURfWENPUFlfUEFTU1RIUk9VR0ggPSAweDAwMjAw MDAwLAp9OwplbnVtIHRyYW5zcG9ydF9sdW5mbGFnc190YWJsZSB7CiBUUkFOU1BPUlRfTFVO RkxBR1NfTk9fQUNDRVNTID0gMHgwMCwKIFRSQU5TUE9SVF9MVU5GTEFHU19JTklUSUFUT1Jf QUNDRVNTID0gMHgwMSwKIFRSQU5TUE9SVF9MVU5GTEFHU19SRUFEX09OTFkgPSAweDAyLAog VFJBTlNQT1JUX0xVTkZMQUdTX1JFQURfV1JJVEUgPSAweDA0LAp9OwoKdHlwZWRlZiB1bnNp Z25lZCBzZW5zZV9yZWFzb25fdDsKCmVudW0gdGNtX3NlbnNlX3JlYXNvbl90YWJsZSB7CiBU Q01fTk9fU0VOU0UgPSAoIHNlbnNlX3JlYXNvbl90ICkoMHgwMCksCiBUQ01fTk9OX0VYSVNU RU5UX0xVTiA9ICggc2Vuc2VfcmVhc29uX3QgKSgweDAxKSwKIFRDTV9VTlNVUFBPUlRFRF9T Q1NJX09QQ09ERSA9ICggc2Vuc2VfcmVhc29uX3QgKSgweDAyKSwKIFRDTV9JTkNPUlJFQ1Rf QU1PVU5UX09GX0RBVEEgPSAoIHNlbnNlX3JlYXNvbl90ICkoMHgwMyksCiBUQ01fVU5FWFBF Q1RFRF9VTlNPTElDSVRFRF9EQVRBID0gKCBzZW5zZV9yZWFzb25fdCApKDB4MDQpLAogVENN X1NFUlZJQ0VfQ1JDX0VSUk9SID0gKCBzZW5zZV9yZWFzb25fdCApKDB4MDUpLAogVENNX1NO QUNLX1JFSkVDVEVEID0gKCBzZW5zZV9yZWFzb25fdCApKDB4MDYpLAogVENNX1NFQ1RPUl9D T1VOVF9UT09fTUFOWSA9ICggc2Vuc2VfcmVhc29uX3QgKSgweDA3KSwKIFRDTV9JTlZBTElE X0NEQl9GSUVMRCA9ICggc2Vuc2VfcmVhc29uX3QgKSgweDA4KSwKIFRDTV9JTlZBTElEX1BB UkFNRVRFUl9MSVNUID0gKCBzZW5zZV9yZWFzb25fdCApKDB4MDkpLAogVENNX0xPR0lDQUxf VU5JVF9DT01NVU5JQ0FUSU9OX0ZBSUxVUkUgPSAoIHNlbnNlX3JlYXNvbl90ICkoMHgwYSks CiBUQ01fVU5LTk9XTl9NT0RFX1BBR0UgPSAoIHNlbnNlX3JlYXNvbl90ICkoMHgwYiksCiBU Q01fV1JJVEVfUFJPVEVDVEVEID0gKCBzZW5zZV9yZWFzb25fdCApKDB4MGMpLAogVENNX0NI RUNLX0NPTkRJVElPTl9BQk9SVF9DTUQgPSAoIHNlbnNlX3JlYXNvbl90ICkoMHgwZCksCiBU Q01fQ0hFQ0tfQ09ORElUSU9OX1VOSVRfQVRURU5USU9OID0gKCBzZW5zZV9yZWFzb25fdCAp KDB4MGUpLAogVENNX0NIRUNLX0NPTkRJVElPTl9OT1RfUkVBRFkgPSAoIHNlbnNlX3JlYXNv bl90ICkoMHgwZiksCiBUQ01fUkVTRVJWQVRJT05fQ09ORkxJQ1QgPSAoIHNlbnNlX3JlYXNv bl90ICkoMHgxMCksCiBUQ01fQUREUkVTU19PVVRfT0ZfUkFOR0UgPSAoIHNlbnNlX3JlYXNv bl90ICkoMHgxMSksCiBUQ01fT1VUX09GX1JFU09VUkNFUyA9ICggc2Vuc2VfcmVhc29uX3Qg KSgweDEyKSwKIFRDTV9QQVJBTUVURVJfTElTVF9MRU5HVEhfRVJST1IgPSAoIHNlbnNlX3Jl YXNvbl90ICkoMHgxMyksCiBUQ01fTUlTQ09NUEFSRV9WRVJJRlkgPSAoIHNlbnNlX3JlYXNv bl90ICkoMHgxNCksCn07CmVudW0gdGFyZ2V0X3NjX2ZsYWdzX3RhYmxlIHsKIFRBUkdFVF9T Q0ZfQklESV9PUCA9IDB4MDEsCiBUQVJHRVRfU0NGX0FDS19LUkVGID0gMHgwMiwKIFRBUkdF VF9TQ0ZfVU5LTk9XTl9TSVpFID0gMHgwNCwKfTsKZW51bSB0Y21fdG1yZXFfdGFibGUgewog VE1SX0FCT1JUX1RBU0sgPSAxLAogVE1SX0FCT1JUX1RBU0tfU0VUID0gMiwKIFRNUl9DTEVB Ul9BQ0EgPSAzLAogVE1SX0NMRUFSX1RBU0tfU0VUID0gNCwKIFRNUl9MVU5fUkVTRVQgPSA1 LAogVE1SX1RBUkdFVF9XQVJNX1JFU0VUID0gNiwKIFRNUl9UQVJHRVRfQ09MRF9SRVNFVCA9 IDcsCn07CmVudW0gdGNtX3RtcnNwX3RhYmxlIHsKIFRNUl9GVU5DVElPTl9DT01QTEVURSA9 IDEsCiBUTVJfVEFTS19ET0VTX05PVF9FWElTVCA9IDIsCiBUTVJfTFVOX0RPRVNfTk9UX0VY SVNUID0gMywKIFRNUl9UQVNLX01HTVRfRlVOQ1RJT05fTk9UX1NVUFBPUlRFRCA9IDQsCiBU TVJfRlVOQ1RJT05fUkVKRUNURUQgPSA1LAp9Owp0eXBlZGVmIGVudW0gewogU0NTSV9JTlNU X0lOREVYLAogU0NTSV9ERVZJQ0VfSU5ERVgsCiBTQ1NJX0FVVEhfSU5UUl9JTkRFWCwKIFND U0lfSU5ERVhfVFlQRV9NQVgKfSBzY3NpX2luZGV4X3Q7CgpzdHJ1Y3Qgc2VfY21kOwoKc3Ry dWN0IHQxMF9hbHVhIHsKIHUxNiBhbHVhX3RnX3B0X2dwc19jb3VudGVyOwogdTMyIGFsdWFf dGdfcHRfZ3BzX2NvdW50Owogc3BpbmxvY2tfdCB0Z19wdF9ncHNfbG9jazsKIHN0cnVjdCBz ZV9kZXZpY2UgKnQxMF9kZXY7CiBzdHJ1Y3QgdDEwX2FsdWFfdGdfcHRfZ3AgKmRlZmF1bHRf dGdfcHRfZ3A7CiBzdHJ1Y3QgY29uZmlnX2dyb3VwIGFsdWFfdGdfcHRfZ3BzX2dyb3VwOwog c3RydWN0IGxpc3RfaGVhZCB0Z19wdF9ncHNfbGlzdDsKfTsKc3RydWN0IHQxMF9hbHVhX2x1 X2dwIHsKIHUxNiBsdV9ncF9pZDsKIGludCBsdV9ncF92YWxpZF9pZDsKIHUzMiBsdV9ncF9t ZW1iZXJzOwogYXRvbWljX3QgbHVfZ3BfcmVmX2NudDsKIHNwaW5sb2NrX3QgbHVfZ3BfbG9j azsKIHN0cnVjdCBjb25maWdfZ3JvdXAgbHVfZ3BfZ3JvdXA7CiBzdHJ1Y3QgbGlzdF9oZWFk IGx1X2dwX25vZGU7CiBzdHJ1Y3QgbGlzdF9oZWFkIGx1X2dwX21lbV9saXN0Owp9OwpzdHJ1 Y3QgdDEwX2FsdWFfbHVfZ3BfbWVtYmVyIHsKIGJvb2wgbHVfZ3BfYXNzb2M7CiBhdG9taWNf dCBsdV9ncF9tZW1fcmVmX2NudDsKIHNwaW5sb2NrX3QgbHVfZ3BfbWVtX2xvY2s7CiBzdHJ1 Y3QgdDEwX2FsdWFfbHVfZ3AgKmx1X2dwOwogc3RydWN0IHNlX2RldmljZSAqbHVfZ3BfbWVt X2RldjsKIHN0cnVjdCBsaXN0X2hlYWQgbHVfZ3BfbWVtX2xpc3Q7Cn07CnN0cnVjdCB0MTBf YWx1YV90Z19wdF9ncCB7CiB1MTYgdGdfcHRfZ3BfaWQ7CiBpbnQgdGdfcHRfZ3BfdmFsaWRf aWQ7CiBpbnQgdGdfcHRfZ3BfYWx1YV9hY2Nlc3Nfc3RhdHVzOwogaW50IHRnX3B0X2dwX2Fs dWFfYWNjZXNzX3R5cGU7CiBpbnQgdGdfcHRfZ3Bfbm9ub3BfZGVsYXlfbXNlY3M7CiBpbnQg dGdfcHRfZ3BfdHJhbnNfZGVsYXlfbXNlY3M7CiBpbnQgdGdfcHRfZ3BfaW1wbGljdF90cmFu c19zZWNzOwogaW50IHRnX3B0X2dwX3ByZWY7CiBpbnQgdGdfcHRfZ3Bfd3JpdGVfbWV0YWRh dGE7CiB1MzIgdGdfcHRfZ3BfbWRfYnVmX2xlbjsKIHUzMiB0Z19wdF9ncF9tZW1iZXJzOwog YXRvbWljX3QgdGdfcHRfZ3BfYWx1YV9hY2Nlc3Nfc3RhdGU7CiBhdG9taWNfdCB0Z19wdF9n cF9yZWZfY250Owogc3BpbmxvY2tfdCB0Z19wdF9ncF9sb2NrOwogc3RydWN0IG11dGV4IHRn X3B0X2dwX21kX211dGV4Owogc3RydWN0IHNlX2RldmljZSAqdGdfcHRfZ3BfZGV2Owogc3Ry dWN0IGNvbmZpZ19ncm91cCB0Z19wdF9ncF9ncm91cDsKIHN0cnVjdCBsaXN0X2hlYWQgdGdf cHRfZ3BfbGlzdDsKIHN0cnVjdCBsaXN0X2hlYWQgdGdfcHRfZ3BfbWVtX2xpc3Q7Cn07CnN0 cnVjdCB0MTBfYWx1YV90Z19wdF9ncF9tZW1iZXIgewogYm9vbCB0Z19wdF9ncF9hc3NvYzsK IGF0b21pY190IHRnX3B0X2dwX21lbV9yZWZfY250Owogc3BpbmxvY2tfdCB0Z19wdF9ncF9t ZW1fbG9jazsKIHN0cnVjdCB0MTBfYWx1YV90Z19wdF9ncCAqdGdfcHRfZ3A7CiBzdHJ1Y3Qg c2VfcG9ydCAqdGdfcHQ7CiBzdHJ1Y3QgbGlzdF9oZWFkIHRnX3B0X2dwX21lbV9saXN0Owp9 OwpzdHJ1Y3QgdDEwX3d3biB7CiBjaGFyIHZlbmRvcls4XTsKIGNoYXIgbW9kZWxbMTZdOwog Y2hhciByZXZpc2lvbls0XTsKIGNoYXIgdW5pdF9zZXJpYWxbMjU0XTsKIHNwaW5sb2NrX3Qg dDEwX3ZwZF9sb2NrOwogc3RydWN0IHNlX2RldmljZSAqdDEwX2RldjsKIHN0cnVjdCBjb25m aWdfZ3JvdXAgdDEwX3d3bl9ncm91cDsKIHN0cnVjdCBsaXN0X2hlYWQgdDEwX3ZwZF9saXN0 Owp9OwoKc3RydWN0IHQxMF9wcl9yZWdpc3RyYXRpb24gewogY2hhciBwcl9yZWdfaXNpZFsx Nl07CiB1bnNpZ25lZCBjaGFyIHByX2lwb3J0WzI1Nl07CiB1bnNpZ25lZCBjaGFyIHByX3Rw b3J0WzI1Nl07CiB1MTYgcHJfYXB0cGxfcnB0aTsKIHUxNiBwcl9yZWdfdHBndDsKIGludCBw cl9yZWdfYWxsX3RnX3B0OwogaW50IHByX3JlZ19hcHRwbDsKIGludCBwcl9yZXNfaG9sZGVy OwogaW50IHByX3Jlc190eXBlOwogaW50IHByX3Jlc19zY29wZTsKIGJvb2wgaXNpZF9wcmVz ZW50X2F0X3JlZzsKIHUzMiBwcl9yZXNfbWFwcGVkX2x1bjsKIHUzMiBwcl9hcHRwbF90YXJn ZXRfbHVuOwogdTMyIHByX3Jlc19nZW5lcmF0aW9uOwogdTY0IHByX3JlZ19iaW5faXNpZDsK IHU2NCBwcl9yZXNfa2V5OwogYXRvbWljX3QgcHJfcmVzX2hvbGRlcnM7CiBzdHJ1Y3Qgc2Vf bm9kZV9hY2wgKnByX3JlZ19uYWNsOwogc3RydWN0IHNlX2Rldl9lbnRyeSAqcHJfcmVnX2Rl dmU7CiBzdHJ1Y3Qgc2VfbHVuICpwcl9yZWdfdGdfcHRfbHVuOwogc3RydWN0IGxpc3RfaGVh ZCBwcl9yZWdfbGlzdDsKIHN0cnVjdCBsaXN0X2hlYWQgcHJfcmVnX2Fib3J0X2xpc3Q7CiBz dHJ1Y3QgbGlzdF9oZWFkIHByX3JlZ19hcHRwbF9saXN0Owogc3RydWN0IGxpc3RfaGVhZCBw cl9yZWdfYXRwX2xpc3Q7CiBzdHJ1Y3QgbGlzdF9oZWFkIHByX3JlZ19hdHBfbWVtX2xpc3Q7 Cn07CnN0cnVjdCB0MTBfcmVzZXJ2YXRpb24gewogaW50IHByX2FsbF90Z19wdDsKIGludCBw cl9hcHRwbF9hY3RpdmU7CiB1MzIgcHJfZ2VuZXJhdGlvbjsKIHNwaW5sb2NrX3QgcmVnaXN0 cmF0aW9uX2xvY2s7CiBzcGlubG9ja190IGFwdHBsX3JlZ19sb2NrOwogc3RydWN0IHNlX25v ZGVfYWNsICpwcl9yZXNfaG9sZGVyOwogc3RydWN0IGxpc3RfaGVhZCByZWdpc3RyYXRpb25f bGlzdDsKIHN0cnVjdCBsaXN0X2hlYWQgYXB0cGxfcmVnX2xpc3Q7Cn07CnN0cnVjdCBzZV90 bXJfcmVxIHsKIHU4IGZ1bmN0aW9uOwogdTggcmVzcG9uc2U7CiBpbnQgY2FsbF90cmFuc3Bv cnQ7CiB1MzIgcmVmX3Rhc2tfdGFnOwogdm9pZCAqZmFicmljX3Rtcl9wdHI7CiBzdHJ1Y3Qg c2VfY21kICp0YXNrX2NtZDsKIHN0cnVjdCBzZV9kZXZpY2UgKnRtcl9kZXY7CiBzdHJ1Y3Qg c2VfbHVuICp0bXJfbHVuOwogc3RydWN0IGxpc3RfaGVhZCB0bXJfbGlzdDsKfTsKc3RydWN0 IHNlX2NtZCB7CiB1OCBzY3NpX3N0YXR1czsKIHU4IHNjc2lfYXNjOwogdTggc2NzaV9hc2Nx OwogdTE2IHNjc2lfc2Vuc2VfbGVuZ3RoOwogaW50IGFsdWFfbm9ub3BfZGVsYXk7CiBlbnVt IGRtYV9kYXRhX2RpcmVjdGlvbiBkYXRhX2RpcmVjdGlvbjsKIGludCBzYW1fdGFza19hdHRy OwogdW5zaWduZWQgaW50IG1hcF90YWc7CiBlbnVtIHRyYW5zcG9ydF9zdGF0ZV90YWJsZSB0 X3N0YXRlOwogdW5zaWduZWQgY21kX3dhaXRfc2V0OjE7CiB1bnNpZ25lZCB1bmtub3duX2Rh dGFfbGVuZ3RoOjE7CiB1MzIgc2VfY21kX2ZsYWdzOwogdTMyIHNlX29yZGVyZWRfaWQ7CiB1 MzIgZGF0YV9sZW5ndGg7CiB1MzIgcmVzaWR1YWxfY291bnQ7CiB1MzIgb3JpZ19mZV9sdW47 CiB1NjQgcHJfcmVzX2tleTsKIHZvaWQgKnNlbnNlX2J1ZmZlcjsKIHN0cnVjdCBsaXN0X2hl YWQgc2VfZGVsYXllZF9ub2RlOwogc3RydWN0IGxpc3RfaGVhZCBzZV9sdW5fbm9kZTsKIHN0 cnVjdCBsaXN0X2hlYWQgc2VfcWZfbm9kZTsKIHN0cnVjdCBzZV9kZXZpY2UgKnNlX2RldjsK IHN0cnVjdCBzZV9kZXZfZW50cnkgKnNlX2RldmU7CiBzdHJ1Y3Qgc2VfbHVuICpzZV9sdW47 CiBzdHJ1Y3Qgc2Vfc2Vzc2lvbiAqc2Vfc2VzczsKIHN0cnVjdCBzZV90bXJfcmVxICpzZV90 bXJfcmVxOwogc3RydWN0IGxpc3RfaGVhZCBzZV9jbWRfbGlzdDsKIHN0cnVjdCBjb21wbGV0 aW9uIGNtZF93YWl0X2NvbXA7CiBzdHJ1Y3Qga3JlZiBjbWRfa3JlZjsKIHN0cnVjdCB0YXJn ZXRfY29yZV9mYWJyaWNfb3BzICpzZV90Zm87CiBzZW5zZV9yZWFzb25fdCAoKmV4ZWN1dGVf Y21kKShzdHJ1Y3Qgc2VfY21kICopOwogc2Vuc2VfcmVhc29uX3QgKCpleGVjdXRlX3J3KShz dHJ1Y3Qgc2VfY21kICosIHN0cnVjdCBzY2F0dGVybGlzdCAqLCB1MzIsIGVudW0gZG1hX2Rh dGFfZGlyZWN0aW9uKTsKIHNlbnNlX3JlYXNvbl90ICgqdHJhbnNwb3J0X2NvbXBsZXRlX2Nh bGxiYWNrKShzdHJ1Y3Qgc2VfY21kICopOwogdW5zaWduZWQgY2hhciAqdF90YXNrX2NkYjsK IHVuc2lnbmVkIGNoYXIgX190X3Rhc2tfY2RiWzMyXTsKIHVuc2lnbmVkIGxvbmcgbG9uZyB0 X3Rhc2tfbGJhOwogdW5zaWduZWQgaW50IHRfdGFza19ub2xiOwogdW5zaWduZWQgaW50IHRy YW5zcG9ydF9zdGF0ZTsKIHNwaW5sb2NrX3QgdF9zdGF0ZV9sb2NrOwogc3RydWN0IGNvbXBs ZXRpb24gdF90cmFuc3BvcnRfc3RvcF9jb21wOwogc3RydWN0IGNvbXBsZXRpb24gdHJhbnNw b3J0X2x1bl9mZV9zdG9wX2NvbXA7CiBzdHJ1Y3QgY29tcGxldGlvbiB0cmFuc3BvcnRfbHVu X3N0b3BfY29tcDsKIHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwogc3RydWN0IHNjYXR0ZXJs aXN0ICp0X2RhdGFfc2c7CiBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnRfZGF0YV9zZ19vcmlnOwog dW5zaWduZWQgaW50IHRfZGF0YV9uZW50czsKIHVuc2lnbmVkIGludCB0X2RhdGFfbmVudHNf b3JpZzsKIHZvaWQgKnRfZGF0YV92bWFwOwogc3RydWN0IHNjYXR0ZXJsaXN0ICp0X2JpZGlf ZGF0YV9zZzsKIHVuc2lnbmVkIGludCB0X2JpZGlfZGF0YV9uZW50czsKIHN0cnVjdCBsaXN0 X2hlYWQgc3RhdGVfbGlzdDsKIGJvb2wgc3RhdGVfYWN0aXZlOwogc3RydWN0IGNvbXBsZXRp b24gdGFza19zdG9wX2NvbXA7CiB2b2lkICpwcml2Owp9OwpzdHJ1Y3Qgc2VfdWEgewogdTgg dWFfYXNjOwogdTggdWFfYXNjcTsKIHN0cnVjdCBzZV9ub2RlX2FjbCAqdWFfbmFjbDsKIHN0 cnVjdCBsaXN0X2hlYWQgdWFfZGV2X2xpc3Q7CiBzdHJ1Y3QgbGlzdF9oZWFkIHVhX25hY2xf bGlzdDsKfTsKc3RydWN0IHNlX25vZGVfYWNsIHsKIGNoYXIgaW5pdGlhdG9ybmFtZVsyMjRd OwogYm9vbCBkeW5hbWljX25vZGVfYWNsOwogYm9vbCBhY2xfc3RvcDoxOwogdTMyIHF1ZXVl X2RlcHRoOwogdTMyIGFjbF9pbmRleDsKIGNoYXIgYWNsX3RhZ1s2NF07CiB1NjQgbnVtX2Nt ZHM7CiB1NjQgcmVhZF9ieXRlczsKIHU2NCB3cml0ZV9ieXRlczsKIHNwaW5sb2NrX3Qgc3Rh dHNfbG9jazsKIGF0b21pY190IGFjbF9wcl9yZWZfY291bnQ7CiBzdHJ1Y3Qgc2VfZGV2X2Vu dHJ5ICoqZGV2aWNlX2xpc3Q7CiBzdHJ1Y3Qgc2Vfc2Vzc2lvbiAqbmFjbF9zZXNzOwogc3Ry dWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnOwogc3BpbmxvY2tfdCBkZXZpY2VfbGlzdF9s b2NrOwogc3BpbmxvY2tfdCBuYWNsX3Nlc3NfbG9jazsKIHN0cnVjdCBjb25maWdfZ3JvdXAg YWNsX2dyb3VwOwogc3RydWN0IGNvbmZpZ19ncm91cCBhY2xfYXR0cmliX2dyb3VwOwogc3Ry dWN0IGNvbmZpZ19ncm91cCBhY2xfYXV0aF9ncm91cDsKIHN0cnVjdCBjb25maWdfZ3JvdXAg YWNsX3BhcmFtX2dyb3VwOwogc3RydWN0IGNvbmZpZ19ncm91cCBhY2xfZmFicmljX3N0YXRf Z3JvdXA7CiBzdHJ1Y3QgY29uZmlnX2dyb3VwICphY2xfZGVmYXVsdF9ncm91cHNbNV07CiBz dHJ1Y3QgbGlzdF9oZWFkIGFjbF9saXN0Owogc3RydWN0IGxpc3RfaGVhZCBhY2xfc2Vzc19s aXN0Owogc3RydWN0IGNvbXBsZXRpb24gYWNsX2ZyZWVfY29tcDsKIHN0cnVjdCBrcmVmIGFj bF9rcmVmOwp9OwpzdHJ1Y3Qgc2Vfc2Vzc2lvbiB7CiB1bnNpZ25lZCBzZXNzX3RlYXJpbmdf ZG93bjoxOwogdTY0IHNlc3NfYmluX2lzaWQ7CiBzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKnNlX25v ZGVfYWNsOwogc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnOwogdm9pZCAqZmFicmlj X3Nlc3NfcHRyOwogc3RydWN0IGxpc3RfaGVhZCBzZXNzX2xpc3Q7CiBzdHJ1Y3QgbGlzdF9o ZWFkIHNlc3NfYWNsX2xpc3Q7CiBzdHJ1Y3QgbGlzdF9oZWFkIHNlc3NfY21kX2xpc3Q7CiBz dHJ1Y3QgbGlzdF9oZWFkIHNlc3Nfd2FpdF9saXN0Owogc3BpbmxvY2tfdCBzZXNzX2NtZF9s b2NrOwogc3RydWN0IGtyZWYgc2Vzc19rcmVmOwogdm9pZCAqc2Vzc19jbWRfbWFwOwogc3Ry dWN0IHBlcmNwdV9pZGEgc2Vzc190YWdfcG9vbDsKfTsKc3RydWN0IHNlX2RldmljZTsKc3Ry dWN0IHNlX3RyYW5zZm9ybV9pbmZvOwpzdHJ1Y3Qgc2NhdHRlcmxpc3Q7CnN0cnVjdCBzZV9t bF9zdGF0X2dycHMgewogc3RydWN0IGNvbmZpZ19ncm91cCBzdGF0X2dyb3VwOwogc3RydWN0 IGNvbmZpZ19ncm91cCBzY3NpX2F1dGhfaW50cl9ncm91cDsKIHN0cnVjdCBjb25maWdfZ3Jv dXAgc2NzaV9hdHRfaW50cl9wb3J0X2dyb3VwOwp9OwpzdHJ1Y3Qgc2VfbHVuX2FjbCB7CiBj aGFyIGluaXRpYXRvcm5hbWVbMjI0XTsKIHUzMiBtYXBwZWRfbHVuOwogc3RydWN0IHNlX25v ZGVfYWNsICpzZV9sdW5fbmFjbDsKIHN0cnVjdCBzZV9sdW4gKnNlX2x1bjsKIHN0cnVjdCBs aXN0X2hlYWQgbGFjbF9saXN0Owogc3RydWN0IGNvbmZpZ19ncm91cCBzZV9sdW5fZ3JvdXA7 CiBzdHJ1Y3Qgc2VfbWxfc3RhdF9ncnBzIG1sX3N0YXRfZ3JwczsKfTsKc3RydWN0IHNlX2Rl dl9lbnRyeSB7CiBib29sIGRlZl9wcl9yZWdpc3RlcmVkOwogdTMyIGx1bl9mbGFnczsKIHUz MiBtYXBwZWRfbHVuOwogdTMyIHRvdGFsX2NtZHM7CiB1NjQgcHJfcmVzX2tleTsKIHU2NCBj cmVhdGlvbl90aW1lOwogdTMyIGF0dGFjaF9jb3VudDsKIHU2NCByZWFkX2J5dGVzOwogdTY0 IHdyaXRlX2J5dGVzOwogYXRvbWljX3QgdWFfY291bnQ7CiBhdG9taWNfdCBwcl9yZWZfY291 bnQ7CiBzdHJ1Y3Qgc2VfbHVuX2FjbCAqc2VfbHVuX2FjbDsKIHNwaW5sb2NrX3QgdWFfbG9j azsKIHN0cnVjdCBzZV9sdW4gKnNlX2x1bjsKIHN0cnVjdCBsaXN0X2hlYWQgYWx1YV9wb3J0 X2xpc3Q7CiBzdHJ1Y3QgbGlzdF9oZWFkIHVhX2xpc3Q7Cn07CnN0cnVjdCBzZV9kZXZfYXR0 cmliIHsKIGludCBlbXVsYXRlX21vZGVsX2FsaWFzOwogaW50IGVtdWxhdGVfZHBvOwogaW50 IGVtdWxhdGVfZnVhX3dyaXRlOwogaW50IGVtdWxhdGVfZnVhX3JlYWQ7CiBpbnQgZW11bGF0 ZV93cml0ZV9jYWNoZTsKIGludCBlbXVsYXRlX3VhX2ludGxja19jdHJsOwogaW50IGVtdWxh dGVfdGFzOwogaW50IGVtdWxhdGVfdHB1OwogaW50IGVtdWxhdGVfdHB3czsKIGludCBlbXVs YXRlX2NhdzsKIGludCBlbXVsYXRlXzNwYzsKIGludCBlbmZvcmNlX3ByX2lzaWRzOwogaW50 IGlzX25vbnJvdDsKIGludCBlbXVsYXRlX3Jlc3RfcmVvcmQ7CiB1MzIgaHdfYmxvY2tfc2l6 ZTsKIHUzMiBibG9ja19zaXplOwogdTMyIGh3X21heF9zZWN0b3JzOwogdTMyIGZhYnJpY19t YXhfc2VjdG9yczsKIHUzMiBvcHRpbWFsX3NlY3RvcnM7CiB1MzIgaHdfcXVldWVfZGVwdGg7 CiB1MzIgcXVldWVfZGVwdGg7CiB1MzIgbWF4X3VubWFwX2xiYV9jb3VudDsKIHUzMiBtYXhf dW5tYXBfYmxvY2tfZGVzY19jb3VudDsKIHUzMiB1bm1hcF9ncmFudWxhcml0eTsKIHUzMiB1 bm1hcF9ncmFudWxhcml0eV9hbGlnbm1lbnQ7CiB1MzIgbWF4X3dyaXRlX3NhbWVfbGVuOwog c3RydWN0IHNlX2RldmljZSAqZGFfZGV2Owogc3RydWN0IGNvbmZpZ19ncm91cCBkYV9ncm91 cDsKfTsKc3RydWN0IHNlX2Rldl9zdGF0X2dycHMgewogc3RydWN0IGNvbmZpZ19ncm91cCBz dGF0X2dyb3VwOwogc3RydWN0IGNvbmZpZ19ncm91cCBzY3NpX2Rldl9ncm91cDsKIHN0cnVj dCBjb25maWdfZ3JvdXAgc2NzaV90Z3RfZGV2X2dyb3VwOwogc3RydWN0IGNvbmZpZ19ncm91 cCBzY3NpX2x1X2dyb3VwOwp9OwpzdHJ1Y3Qgc2VfZGV2aWNlIHsKIHUzMiBkZXZfbGlua19t YWdpYzsKIHUxNiBkZXZfcnB0aV9jb3VudGVyOwogdTMyIGRldl9jdXJfb3JkZXJlZF9pZDsK IHUzMiBkZXZfZmxhZ3M7CiB1MzIgZGV2X3BvcnRfY291bnQ7CiB1MzIgcXVldWVfZGVwdGg7 CiB1NjQgZGV2X3Jlc19iaW5faXNpZDsKIHUzMiBkZXZfaW5kZXg7CiB1NjQgY3JlYXRpb25f dGltZTsKIHUzMiBudW1fcmVzZXRzOwogdTY0IG51bV9jbWRzOwogdTY0IHJlYWRfYnl0ZXM7 CiB1NjQgd3JpdGVfYnl0ZXM7CiBzcGlubG9ja190IHN0YXRzX2xvY2s7CiBhdG9taWNfdCBz aW1wbGVfY21kczsKIGF0b21pY190IGRldl9vcmRlcmVkX2lkOwogYXRvbWljX3QgZGV2X29y ZGVyZWRfc3luYzsKIGF0b21pY190IGRldl9xZl9jb3VudDsKIGludCBleHBvcnRfY291bnQ7 CiBzcGlubG9ja190IGRlbGF5ZWRfY21kX2xvY2s7CiBzcGlubG9ja190IGV4ZWN1dGVfdGFz a19sb2NrOwogc3BpbmxvY2tfdCBkZXZfcmVzZXJ2YXRpb25fbG9jazsKIHVuc2lnbmVkIGlu dCBkZXZfcmVzZXJ2YXRpb25fZmxhZ3M7CiBzcGlubG9ja190IHNlX3BvcnRfbG9jazsKIHNw aW5sb2NrX3Qgc2VfdG1yX2xvY2s7CiBzcGlubG9ja190IHFmX2NtZF9sb2NrOwogc3RydWN0 IHNlbWFwaG9yZSBjYXdfc2VtOwogc3RydWN0IHNlX25vZGVfYWNsICpkZXZfcmVzZXJ2ZWRf bm9kZV9hY2w7CiBzdHJ1Y3QgdDEwX2FsdWFfbHVfZ3BfbWVtYmVyICpkZXZfYWx1YV9sdV9n cF9tZW07CiBzdHJ1Y3QgdDEwX3ByX3JlZ2lzdHJhdGlvbiAqZGV2X3ByX3Jlc19ob2xkZXI7 CiBzdHJ1Y3QgbGlzdF9oZWFkIGRldl9zZXBfbGlzdDsKIHN0cnVjdCBsaXN0X2hlYWQgZGV2 X3Rtcl9saXN0Owogc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnRtcl93cTsKIHN0cnVjdCB3 b3JrX3N0cnVjdCBxZl93b3JrX3F1ZXVlOwogc3RydWN0IGxpc3RfaGVhZCBkZWxheWVkX2Nt ZF9saXN0Owogc3RydWN0IGxpc3RfaGVhZCBzdGF0ZV9saXN0Owogc3RydWN0IGxpc3RfaGVh ZCBxZl9jbWRfbGlzdDsKIHN0cnVjdCBsaXN0X2hlYWQgZ19kZXZfbm9kZTsKIHN0cnVjdCBz ZV9oYmEgKnNlX2hiYTsKIHN0cnVjdCB0MTBfd3duIHQxMF93d247CiBzdHJ1Y3QgdDEwX2Fs dWEgdDEwX2FsdWE7CiBzdHJ1Y3QgdDEwX3Jlc2VydmF0aW9uIHQxMF9wcjsKIHN0cnVjdCBz ZV9kZXZfYXR0cmliIGRldl9hdHRyaWI7CiBzdHJ1Y3QgY29uZmlnX2dyb3VwIGRldl9ncm91 cDsKIHN0cnVjdCBjb25maWdfZ3JvdXAgZGV2X3ByX2dyb3VwOwogc3RydWN0IHNlX2Rldl9z dGF0X2dycHMgZGV2X3N0YXRfZ3JwczsKIHVuc2lnbmVkIGNoYXIgZGV2X2FsaWFzWzUxMl07 CiB1bnNpZ25lZCBjaGFyIHVkZXZfcGF0aFs1MTJdOwogc3RydWN0IHNlX3N1YnN5c3RlbV9h cGkgKnRyYW5zcG9ydDsKIHN0cnVjdCBsaXN0X2hlYWQgZGV2X2xpc3Q7Cn07CnN0cnVjdCBz ZV9oYmEgewogdTE2IGhiYV90cGd0OwogdTMyIGhiYV9pZDsKIHUzMiBoYmFfZmxhZ3M7CiB1 MzIgZGV2X2NvdW50OwogdTMyIGhiYV9pbmRleDsKIHZvaWQgKmhiYV9wdHI7CiBzdHJ1Y3Qg bGlzdF9oZWFkIGhiYV9ub2RlOwogc3BpbmxvY2tfdCBkZXZpY2VfbG9jazsKIHN0cnVjdCBj b25maWdfZ3JvdXAgaGJhX2dyb3VwOwogc3RydWN0IG11dGV4IGhiYV9hY2Nlc3NfbXV0ZXg7 CiBzdHJ1Y3Qgc2Vfc3Vic3lzdGVtX2FwaSAqdHJhbnNwb3J0Owp9OwpzdHJ1Y3Qgc2VfcG9y dF9zdGF0X2dycHMgewogc3RydWN0IGNvbmZpZ19ncm91cCBzdGF0X2dyb3VwOwogc3RydWN0 IGNvbmZpZ19ncm91cCBzY3NpX3BvcnRfZ3JvdXA7CiBzdHJ1Y3QgY29uZmlnX2dyb3VwIHNj c2lfdGd0X3BvcnRfZ3JvdXA7CiBzdHJ1Y3QgY29uZmlnX2dyb3VwIHNjc2lfdHJhbnNwb3J0 X2dyb3VwOwp9OwoKc3RydWN0IHNlX2x1biB7CiB1MzIgbHVuX2xpbmtfbWFnaWM7CiBlbnVt IHRyYW5zcG9ydF9sdW5fc3RhdHVzX3RhYmxlIGx1bl9zdGF0dXM7CiB1MzIgbHVuX2FjY2Vz czsKIHUzMiBsdW5fZmxhZ3M7CiB1MzIgdW5wYWNrZWRfbHVuOwogYXRvbWljX3QgbHVuX2Fj bF9jb3VudDsKIHNwaW5sb2NrX3QgbHVuX2FjbF9sb2NrOwogc3BpbmxvY2tfdCBsdW5fY21k X2xvY2s7CiBzcGlubG9ja190IGx1bl9zZXBfbG9jazsKIHN0cnVjdCBjb21wbGV0aW9uIGx1 bl9zaHV0ZG93bl9jb21wOwogc3RydWN0IGxpc3RfaGVhZCBsdW5fY21kX2xpc3Q7CiBzdHJ1 Y3QgbGlzdF9oZWFkIGx1bl9hY2xfbGlzdDsKIHN0cnVjdCBzZV9kZXZpY2UgKmx1bl9zZV9k ZXY7CiBzdHJ1Y3Qgc2VfcG9ydCAqbHVuX3NlcDsKIHN0cnVjdCBjb25maWdfZ3JvdXAgbHVu X2dyb3VwOwogc3RydWN0IHNlX3BvcnRfc3RhdF9ncnBzIHBvcnRfc3RhdF9ncnBzOwp9Owpz dHJ1Y3Qgc2NzaV9wb3J0X3N0YXRzIHsKICAgICAgIHU2NCBjbWRfcGR1czsKICAgICAgIHU2 NCB0eF9kYXRhX29jdGV0czsKICAgICAgIHU2NCByeF9kYXRhX29jdGV0czsKfTsKc3RydWN0 IHNlX3BvcnQgewogdTE2IHNlcF9ydHBpOwogaW50IHNlcF90Z19wdF9zZWNvbmRhcnlfc3Rh dDsKIGludCBzZXBfdGdfcHRfc2Vjb25kYXJ5X3dyaXRlX21kOwogdTMyIHNlcF9pbmRleDsK IHN0cnVjdCBzY3NpX3BvcnRfc3RhdHMgc2VwX3N0YXRzOwogYXRvbWljX3Qgc2VwX3RnX3B0 X3NlY29uZGFyeV9vZmZsaW5lOwogYXRvbWljX3Qgc2VwX3RnX3B0X3JlZl9jbnQ7CiBzcGlu bG9ja190IHNlcF9hbHVhX2xvY2s7CiBzdHJ1Y3QgbXV0ZXggc2VwX3RnX3B0X21kX211dGV4 Owogc3RydWN0IHQxMF9hbHVhX3RnX3B0X2dwX21lbWJlciAqc2VwX2FsdWFfdGdfcHRfZ3Bf bWVtOwogc3RydWN0IHNlX2x1biAqc2VwX2x1bjsKIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAg KnNlcF90cGc7CiBzdHJ1Y3QgbGlzdF9oZWFkIHNlcF9hbHVhX2xpc3Q7CiBzdHJ1Y3QgbGlz dF9oZWFkIHNlcF9saXN0Owp9OwpzdHJ1Y3Qgc2VfdHBnX25wIHsKIHN0cnVjdCBzZV9wb3J0 YWxfZ3JvdXAgKnRwZ19ucF9wYXJlbnQ7CiBzdHJ1Y3QgY29uZmlnX2dyb3VwIHRwZ19ucF9n cm91cDsKfTsKc3RydWN0IHNlX3BvcnRhbF9ncm91cCB7CiBlbnVtIHRyYW5zcG9ydF90cGdf dHlwZV90YWJsZSBzZV90cGdfdHlwZTsKIHUzMiBudW1fbm9kZV9hY2xzOwogYXRvbWljX3Qg dHBnX3ByX3JlZl9jb3VudDsKIHNwaW5sb2NrX3QgYWNsX25vZGVfbG9jazsKIHNwaW5sb2Nr X3Qgc2Vzc2lvbl9sb2NrOwogc3BpbmxvY2tfdCB0cGdfbHVuX2xvY2s7CiB2b2lkICpzZV90 cGdfZmFicmljX3B0cjsKIHN0cnVjdCBsaXN0X2hlYWQgc2VfdHBnX25vZGU7CiBzdHJ1Y3Qg bGlzdF9oZWFkIGFjbF9ub2RlX2xpc3Q7CiBzdHJ1Y3Qgc2VfbHVuICoqdHBnX2x1bl9saXN0 Owogc3RydWN0IHNlX2x1biB0cGdfdmlydF9sdW4wOwogc3RydWN0IGxpc3RfaGVhZCB0cGdf c2Vzc19saXN0Owogc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgKnNlX3RwZ190Zm87 CiBzdHJ1Y3Qgc2Vfd3duICpzZV90cGdfd3duOwogc3RydWN0IGNvbmZpZ19ncm91cCB0cGdf Z3JvdXA7CiBzdHJ1Y3QgY29uZmlnX2dyb3VwICp0cGdfZGVmYXVsdF9ncm91cHNbN107CiBz dHJ1Y3QgY29uZmlnX2dyb3VwIHRwZ19sdW5fZ3JvdXA7CiBzdHJ1Y3QgY29uZmlnX2dyb3Vw IHRwZ19ucF9ncm91cDsKIHN0cnVjdCBjb25maWdfZ3JvdXAgdHBnX2FjbF9ncm91cDsKIHN0 cnVjdCBjb25maWdfZ3JvdXAgdHBnX2F0dHJpYl9ncm91cDsKIHN0cnVjdCBjb25maWdfZ3Jv dXAgdHBnX2F1dGhfZ3JvdXA7CiBzdHJ1Y3QgY29uZmlnX2dyb3VwIHRwZ19wYXJhbV9ncm91 cDsKfTsKc3RydWN0IHNlX3d3biB7CiBzdHJ1Y3QgdGFyZ2V0X2ZhYnJpY19jb25maWdmcyAq d3duX3RmOwogc3RydWN0IGNvbmZpZ19ncm91cCB3d25fZ3JvdXA7CiBzdHJ1Y3QgY29uZmln X2dyb3VwICp3d25fZGVmYXVsdF9ncm91cHNbMl07CiBzdHJ1Y3QgY29uZmlnX2dyb3VwIGZh YnJpY19zdGF0X2dyb3VwOwp9OwoKdm9pZCAqdHJhbnNwb3J0X2ttYXBfZGF0YV9zZyhzdHJ1 Y3Qgc2VfY21kICopOwp2b2lkIHRyYW5zcG9ydF9rdW5tYXBfZGF0YV9zZyhzdHJ1Y3Qgc2Vf Y21kICopOwoKc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgewogc3RydWN0IGNvbmZp Z2ZzX3N1YnN5c3RlbSAqdGZfc3Vic3lzOwogY2hhciAqKCpnZXRfZmFicmljX25hbWUpKHZv aWQpOwogdTggKCpnZXRfZmFicmljX3Byb3RvX2lkZW50KShzdHJ1Y3Qgc2VfcG9ydGFsX2dy b3VwICopOwogY2hhciAqKCp0cGdfZ2V0X3d3bikoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAq KTsKIHUxNiAoKnRwZ19nZXRfdGFnKShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICopOwogdTMy ICgqdHBnX2dldF9kZWZhdWx0X2RlcHRoKShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICopOwog dTMyICgqdHBnX2dldF9wcl90cmFuc3BvcnRfaWQpKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAg Kiwgc3RydWN0IHNlX25vZGVfYWNsICosIHN0cnVjdCB0MTBfcHJfcmVnaXN0cmF0aW9uICos IGludCAqLCB1bnNpZ25lZCBjaGFyICopOwogdTMyICgqdHBnX2dldF9wcl90cmFuc3BvcnRf aWRfbGVuKShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICosIHN0cnVjdCBzZV9ub2RlX2FjbCAq LCBzdHJ1Y3QgdDEwX3ByX3JlZ2lzdHJhdGlvbiAqLCBpbnQgKik7CiBjaGFyICooKnRwZ19w YXJzZV9wcl9vdXRfdHJhbnNwb3J0X2lkKShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICosIGNv bnN0IGNoYXIgKiwgdTMyICosIGNoYXIgKiopOwogaW50ICgqdHBnX2NoZWNrX2RlbW9fbW9k ZSkoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqKTsKIGludCAoKnRwZ19jaGVja19kZW1vX21v ZGVfY2FjaGUpKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKik7CiBpbnQgKCp0cGdfY2hlY2tf ZGVtb19tb2RlX3dyaXRlX3Byb3RlY3QpKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKik7CiBp bnQgKCp0cGdfY2hlY2tfcHJvZF9tb2RlX3dyaXRlX3Byb3RlY3QpKHN0cnVjdCBzZV9wb3J0 YWxfZ3JvdXAgKik7CiBpbnQgKCp0cGdfY2hlY2tfZGVtb19tb2RlX2xvZ2luX29ubHkpKHN0 cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKik7CiBzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKigqdHBnX2Fs bG9jX2ZhYnJpY19hY2wpKCBzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICopOwogdm9pZCAoKnRw Z19yZWxlYXNlX2ZhYnJpY19hY2wpKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKiwgc3RydWN0 IHNlX25vZGVfYWNsICopOwogdTMyICgqdHBnX2dldF9pbnN0X2luZGV4KShzdHJ1Y3Qgc2Vf cG9ydGFsX2dyb3VwICopOwogaW50ICgqY2hlY2tfc3RvcF9mcmVlKShzdHJ1Y3Qgc2VfY21k ICopOwogdm9pZCAoKnJlbGVhc2VfY21kKShzdHJ1Y3Qgc2VfY21kICopOwogdm9pZCAoKnB1 dF9zZXNzaW9uKShzdHJ1Y3Qgc2Vfc2Vzc2lvbiAqKTsKIGludCAoKnNodXRkb3duX3Nlc3Np b24pKHN0cnVjdCBzZV9zZXNzaW9uICopOwogdm9pZCAoKmNsb3NlX3Nlc3Npb24pKHN0cnVj dCBzZV9zZXNzaW9uICopOwogdTMyICgqc2Vzc19nZXRfaW5kZXgpKHN0cnVjdCBzZV9zZXNz aW9uICopOwogdTMyICgqc2Vzc19nZXRfaW5pdGlhdG9yX3NpZCkoc3RydWN0IHNlX3Nlc3Np b24gKiwgdW5zaWduZWQgY2hhciAqLCB1MzIpOwogaW50ICgqd3JpdGVfcGVuZGluZykoc3Ry dWN0IHNlX2NtZCAqKTsKIGludCAoKndyaXRlX3BlbmRpbmdfc3RhdHVzKShzdHJ1Y3Qgc2Vf Y21kICopOwogdm9pZCAoKnNldF9kZWZhdWx0X25vZGVfYXR0cmlidXRlcykoc3RydWN0IHNl X25vZGVfYWNsICopOwogdTMyICgqZ2V0X3Rhc2tfdGFnKShzdHJ1Y3Qgc2VfY21kICopOwog aW50ICgqZ2V0X2NtZF9zdGF0ZSkoc3RydWN0IHNlX2NtZCAqKTsKIGludCAoKnF1ZXVlX2Rh dGFfaW4pKHN0cnVjdCBzZV9jbWQgKik7CiBpbnQgKCpxdWV1ZV9zdGF0dXMpKHN0cnVjdCBz ZV9jbWQgKik7CiB2b2lkICgqcXVldWVfdG1fcnNwKShzdHJ1Y3Qgc2VfY21kICopOwogc3Ry dWN0IHNlX3d3biAqKCpmYWJyaWNfbWFrZV93d24pKHN0cnVjdCB0YXJnZXRfZmFicmljX2Nv bmZpZ2ZzICosIHN0cnVjdCBjb25maWdfZ3JvdXAgKiwgY29uc3QgY2hhciAqKTsKIHZvaWQg KCpmYWJyaWNfZHJvcF93d24pKHN0cnVjdCBzZV93d24gKik7CiBzdHJ1Y3Qgc2VfcG9ydGFs X2dyb3VwICooKmZhYnJpY19tYWtlX3RwZykoc3RydWN0IHNlX3d3biAqLCBzdHJ1Y3QgY29u ZmlnX2dyb3VwICosIGNvbnN0IGNoYXIgKik7CiB2b2lkICgqZmFicmljX2Ryb3BfdHBnKShz dHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICopOwogaW50ICgqZmFicmljX3Bvc3RfbGluaykoc3Ry dWN0IHNlX3BvcnRhbF9ncm91cCAqLCBzdHJ1Y3Qgc2VfbHVuICopOwogdm9pZCAoKmZhYnJp Y19wcmVfdW5saW5rKShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICosIHN0cnVjdCBzZV9sdW4g Kik7CiBzdHJ1Y3Qgc2VfdHBnX25wICooKmZhYnJpY19tYWtlX25wKShzdHJ1Y3Qgc2VfcG9y dGFsX2dyb3VwICosIHN0cnVjdCBjb25maWdfZ3JvdXAgKiwgY29uc3QgY2hhciAqKTsKIHZv aWQgKCpmYWJyaWNfZHJvcF9ucCkoc3RydWN0IHNlX3RwZ19ucCAqKTsKIHN0cnVjdCBzZV9u b2RlX2FjbCAqKCpmYWJyaWNfbWFrZV9ub2RlYWNsKShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3Vw ICosIHN0cnVjdCBjb25maWdfZ3JvdXAgKiwgY29uc3QgY2hhciAqKTsKIHZvaWQgKCpmYWJy aWNfZHJvcF9ub2RlYWNsKShzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKik7Cn07CnN0cnVjdCB0YXJn ZXRfZmFicmljX2NvbmZpZ2ZzX3RlbXBsYXRlIHsKIHN0cnVjdCBjb25maWdfaXRlbV90eXBl IHRmY19kaXNjb3ZlcnlfY2l0Owogc3RydWN0IGNvbmZpZ19pdGVtX3R5cGUgdGZjX3d3bl9j aXQ7CiBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSB0ZmNfd3duX2ZhYnJpY19zdGF0c19jaXQ7 CiBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSB0ZmNfdHBnX2NpdDsKIHN0cnVjdCBjb25maWdf aXRlbV90eXBlIHRmY190cGdfYmFzZV9jaXQ7CiBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSB0 ZmNfdHBnX2x1bl9jaXQ7CiBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSB0ZmNfdHBnX3BvcnRf Y2l0Owogc3RydWN0IGNvbmZpZ19pdGVtX3R5cGUgdGZjX3RwZ19wb3J0X3N0YXRfY2l0Owog c3RydWN0IGNvbmZpZ19pdGVtX3R5cGUgdGZjX3RwZ19ucF9jaXQ7CiBzdHJ1Y3QgY29uZmln X2l0ZW1fdHlwZSB0ZmNfdHBnX25wX2Jhc2VfY2l0Owogc3RydWN0IGNvbmZpZ19pdGVtX3R5 cGUgdGZjX3RwZ19hdHRyaWJfY2l0Owogc3RydWN0IGNvbmZpZ19pdGVtX3R5cGUgdGZjX3Rw Z19hdXRoX2NpdDsKIHN0cnVjdCBjb25maWdfaXRlbV90eXBlIHRmY190cGdfcGFyYW1fY2l0 Owogc3RydWN0IGNvbmZpZ19pdGVtX3R5cGUgdGZjX3RwZ19uYWNsX2NpdDsKIHN0cnVjdCBj b25maWdfaXRlbV90eXBlIHRmY190cGdfbmFjbF9iYXNlX2NpdDsKIHN0cnVjdCBjb25maWdf aXRlbV90eXBlIHRmY190cGdfbmFjbF9hdHRyaWJfY2l0Owogc3RydWN0IGNvbmZpZ19pdGVt X3R5cGUgdGZjX3RwZ19uYWNsX2F1dGhfY2l0Owogc3RydWN0IGNvbmZpZ19pdGVtX3R5cGUg dGZjX3RwZ19uYWNsX3BhcmFtX2NpdDsKIHN0cnVjdCBjb25maWdfaXRlbV90eXBlIHRmY190 cGdfbmFjbF9zdGF0X2NpdDsKIHN0cnVjdCBjb25maWdfaXRlbV90eXBlIHRmY190cGdfbWFw cGVkbHVuX2NpdDsKIHN0cnVjdCBjb25maWdfaXRlbV90eXBlIHRmY190cGdfbWFwcGVkbHVu X3N0YXRfY2l0Owp9OwpzdHJ1Y3QgdGFyZ2V0X2ZhYnJpY19jb25maWdmcyB7CiBjaGFyIHRm X25hbWVbMzJdOwogYXRvbWljX3QgdGZfYWNjZXNzX2NudDsKIHN0cnVjdCBsaXN0X2hlYWQg dGZfbGlzdDsKIHN0cnVjdCBjb25maWdfZ3JvdXAgdGZfZ3JvdXA7CiBzdHJ1Y3QgY29uZmln X2dyb3VwIHRmX2Rpc2NfZ3JvdXA7CiBzdHJ1Y3QgY29uZmlnX2dyb3VwICp0Zl9kZWZhdWx0 X2dyb3Vwc1syXTsKIHN0cnVjdCBjb25maWdfaXRlbSAqdGZfZmFicmljOwogc3RydWN0IGNv bmZpZ19pdGVtX3R5cGUgKnRmX2ZhYnJpY19jaXQ7CiBzdHJ1Y3QgY29uZmlnZnNfc3Vic3lz dGVtICp0Zl9zdWJzeXM7CiBzdHJ1Y3QgbW9kdWxlICp0Zl9tb2R1bGU7CiBzdHJ1Y3QgdGFy Z2V0X2NvcmVfZmFicmljX29wcyB0Zl9vcHM7CiBzdHJ1Y3QgdGFyZ2V0X2ZhYnJpY19jb25m aWdmc190ZW1wbGF0ZSB0Zl9jaXRfdG1wbDsKfTsKCmV4dGVybiBzZW5zZV9yZWFzb25fdCB0 YXJnZXRfc2NzaTNfZW11bGF0ZV9wcl9pbihzdHJ1Y3Qgc2VfY21kICopOwoKc3RhdGljIHNl bnNlX3JlYXNvbl90IGNvcmVfc2NzaTNfcHJpX3JlYWRfa2V5cyhzdHJ1Y3Qgc2VfY21kICpj bWQpCnsKIHN0cnVjdCBzZV9kZXZpY2UgKmRldiA9IGNtZC0+c2VfZGV2Owogc3RydWN0IHQx MF9wcl9yZWdpc3RyYXRpb24gKnByX3JlZzsKIHVuc2lnbmVkIGNoYXIgKmJ1ZjsKIHUzMiBh ZGRfbGVuID0gMCwgb2ZmID0gODsKCiBpZiAoY21kLT5kYXRhX2xlbmd0aCA8IDgpIHsKICBw cmludGsoIlwwMDEiICIzIiAiUFJJTiBTQSBSRUFEX0tFWVMgU0NTSSBEYXRhIExlbmd0aDog JXUiICIgdG9vIHNtYWxsXG4iLCBjbWQtPmRhdGFfbGVuZ3RoKTsKICByZXR1cm4gVENNX0lO VkFMSURfQ0RCX0ZJRUxEOwogfQoKIGJ1ZiA9IHRyYW5zcG9ydF9rbWFwX2RhdGFfc2coY21k KTsKIGlmICghYnVmKQogIHJldHVybiBUQ01fTE9HSUNBTF9VTklUX0NPTU1VTklDQVRJT05f RkFJTFVSRTsKCiBidWZbMF0gPSAoKGRldi0+dDEwX3ByLnByX2dlbmVyYXRpb24gPj4gMjQp ICYgMHhmZik7CiBidWZbMV0gPSAoKGRldi0+dDEwX3ByLnByX2dlbmVyYXRpb24gPj4gMTYp ICYgMHhmZik7CiBidWZbMl0gPSAoKGRldi0+dDEwX3ByLnByX2dlbmVyYXRpb24gPj4gOCkg JiAweGZmKTsKIGJ1ZlszXSA9IChkZXYtPnQxMF9wci5wcl9nZW5lcmF0aW9uICYgMHhmZik7 Cgogc3Bpbl9sb2NrKCZkZXYtPnQxMF9wci5yZWdpc3RyYXRpb25fbG9jayk7CiBmb3IgKHBy X3JlZyA9ICh7IGNvbnN0IHR5cGVvZiggKCh0eXBlb2YoKnByX3JlZykgKikwKS0+cHJfcmVn X2xpc3QgKSAqX19tcHRyID0gKCgmZGV2LT50MTBfcHIucmVnaXN0cmF0aW9uX2xpc3QpLT5u ZXh0KTsgKHR5cGVvZigqcHJfcmVnKSAqKSggKGNoYXIgKilfX21wdHIgLSBfX2J1aWx0aW5f b2Zmc2V0b2YodHlwZW9mKCpwcl9yZWcpLHByX3JlZ19saXN0KSApO30pOyAmcHJfcmVnLT5w cl9yZWdfbGlzdCAhPSAoJmRldi0+dDEwX3ByLnJlZ2lzdHJhdGlvbl9saXN0KTsgcHJfcmVn ID0gKHsgY29uc3QgdHlwZW9mKCAoKHR5cGVvZigqcHJfcmVnKSAqKTApLT5wcl9yZWdfbGlz dCApICpfX21wdHIgPSAocHJfcmVnLT5wcl9yZWdfbGlzdC5uZXh0KTsgKHR5cGVvZigqcHJf cmVnKSAqKSggKGNoYXIgKilfX21wdHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2YodHlwZW9mKCpw cl9yZWcpLHByX3JlZ19saXN0KSApO30pKQogewogIGlmICgoYWRkX2xlbiArIDgpID4gKGNt ZC0+ZGF0YV9sZW5ndGggLSA4KSkKICAgYnJlYWs7CiAgYnVmW29mZisrXSA9ICgocHJfcmVn LT5wcl9yZXNfa2V5ID4+IDU2KSAmIDB4ZmYpOwogIGJ1ZltvZmYrK10gPSAoKHByX3JlZy0+ cHJfcmVzX2tleSA+PiA0OCkgJiAweGZmKTsKICBidWZbb2ZmKytdID0gKChwcl9yZWctPnBy X3Jlc19rZXkgPj4gNDApICYgMHhmZik7CiAgYnVmW29mZisrXSA9ICgocHJfcmVnLT5wcl9y ZXNfa2V5ID4+IDMyKSAmIDB4ZmYpOwogIGJ1ZltvZmYrK10gPSAoKHByX3JlZy0+cHJfcmVz X2tleSA+PiAyNCkgJiAweGZmKTsKICBidWZbb2ZmKytdID0gKChwcl9yZWctPnByX3Jlc19r ZXkgPj4gMTYpICYgMHhmZik7CiAgYnVmW29mZisrXSA9ICgocHJfcmVnLT5wcl9yZXNfa2V5 ID4+IDgpICYgMHhmZik7CiAgYnVmW29mZisrXSA9IChwcl9yZWctPnByX3Jlc19rZXkgJiAw eGZmKTsKICBhZGRfbGVuICs9IDg7CiB9CiBzcGluX3VubG9jaygmZGV2LT50MTBfcHIucmVn aXN0cmF0aW9uX2xvY2spOwoKIGJ1Zls0XSA9ICgoYWRkX2xlbiA+PiAyNCkgJiAweGZmKTsK IGJ1Zls1XSA9ICgoYWRkX2xlbiA+PiAxNikgJiAweGZmKTsKIGJ1Zls2XSA9ICgoYWRkX2xl biA+PiA4KSAmIDB4ZmYpOwogYnVmWzddID0gKGFkZF9sZW4gJiAweGZmKTsKIHRyYW5zcG9y dF9rdW5tYXBfZGF0YV9zZyhjbWQpOwogcmV0dXJuIDA7Cn0KCnN0YXRpYyBzZW5zZV9yZWFz b25fdCBjb3JlX3Njc2kzX3ByaV9yZWFkX3Jlc2VydmF0aW9uKHN0cnVjdCBzZV9jbWQgKmNt ZCkKewogc3RydWN0IHNlX2RldmljZSAqZGV2ID0gY21kLT5zZV9kZXY7CiBzdHJ1Y3QgdDEw X3ByX3JlZ2lzdHJhdGlvbiAqcHJfcmVnOwogdW5zaWduZWQgY2hhciAqYnVmOwogdTY0IHBy X3Jlc19rZXk7CiB1MzIgYWRkX2xlbiA9IDE2OwoKIGlmIChjbWQtPmRhdGFfbGVuZ3RoIDwg OCkgewogIHByaW50aygiXDAwMSIgIjMiICJQUklOIFNBIFJFQURfUkVTRVJWQVRJT05TIFND U0kgRGF0YSBMZW5ndGg6ICV1IiAiIHRvbyBzbWFsbFxuIiwgY21kLT5kYXRhX2xlbmd0aCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogIHJldHVybiBUQ01fSU5W QUxJRF9DREJfRklFTEQ7CiB9CgogYnVmID0gdHJhbnNwb3J0X2ttYXBfZGF0YV9zZyhjbWQp OwogaWYgKCFidWYpCiAgcmV0dXJuIFRDTV9MT0dJQ0FMX1VOSVRfQ09NTVVOSUNBVElPTl9G QUlMVVJFOwoKIGJ1ZlswXSA9ICgoZGV2LT50MTBfcHIucHJfZ2VuZXJhdGlvbiA+PiAyNCkg JiAweGZmKTsKIGJ1ZlsxXSA9ICgoZGV2LT50MTBfcHIucHJfZ2VuZXJhdGlvbiA+PiAxNikg JiAweGZmKTsKIGJ1ZlsyXSA9ICgoZGV2LT50MTBfcHIucHJfZ2VuZXJhdGlvbiA+PiA4KSAm IDB4ZmYpOwogYnVmWzNdID0gKGRldi0+dDEwX3ByLnByX2dlbmVyYXRpb24gJiAweGZmKTsK CiBzcGluX2xvY2soJmRldi0+ZGV2X3Jlc2VydmF0aW9uX2xvY2spOwogcHJfcmVnID0gZGV2 LT5kZXZfcHJfcmVzX2hvbGRlcjsKIGlmIChwcl9yZWcpIHsKCiAgYnVmWzRdID0gKChhZGRf bGVuID4+IDI0KSAmIDB4ZmYpOwogIGJ1Zls1XSA9ICgoYWRkX2xlbiA+PiAxNikgJiAweGZm KTsKICBidWZbNl0gPSAoKGFkZF9sZW4gPj4gOCkgJiAweGZmKTsKICBidWZbN10gPSAoYWRk X2xlbiAmIDB4ZmYpOwoKICBpZiAoY21kLT5kYXRhX2xlbmd0aCA8IDIyKQogICBnb3RvIGVy cjsKICBpZiAoKHByX3JlZy0+cHJfcmVzX3R5cGUgPT0gMHgwNykgfHwKICAgICAgKHByX3Jl Zy0+cHJfcmVzX3R5cGUgPT0gMHgwOCkpCiAgIHByX3Jlc19rZXkgPSAwOwogIGVsc2UKICAg cHJfcmVzX2tleSA9IHByX3JlZy0+cHJfcmVzX2tleTsKCiAgYnVmWzhdID0gKChwcl9yZXNf a2V5ID4+IDU2KSAmIDB4ZmYpOwogIGJ1Zls5XSA9ICgocHJfcmVzX2tleSA+PiA0OCkgJiAw eGZmKTsKICBidWZbMTBdID0gKChwcl9yZXNfa2V5ID4+IDQwKSAmIDB4ZmYpOwogIGJ1Zlsx MV0gPSAoKHByX3Jlc19rZXkgPj4gMzIpICYgMHhmZik7CiAgYnVmWzEyXSA9ICgocHJfcmVz X2tleSA+PiAyNCkgJiAweGZmKTsKICBidWZbMTNdID0gKChwcl9yZXNfa2V5ID4+IDE2KSAm IDB4ZmYpOwogIGJ1ZlsxNF0gPSAoKHByX3Jlc19rZXkgPj4gOCkgJiAweGZmKTsKICBidWZb MTVdID0gKHByX3Jlc19rZXkgJiAweGZmKTsKICBidWZbMjFdID0gKHByX3JlZy0+cHJfcmVz X3Njb3BlICYgMHhmMCkgfAogICAgIChwcl9yZWctPnByX3Jlc190eXBlICYgMHgwZik7CiB9 CgplcnI6CiBzcGluX3VubG9jaygmZGV2LT5kZXZfcmVzZXJ2YXRpb25fbG9jayk7CiB0cmFu c3BvcnRfa3VubWFwX2RhdGFfc2coY21kKTsKIHJldHVybiAwOwp9CgoKc3RhdGljIHNlbnNl X3JlYXNvbl90IGNvcmVfc2NzaTNfcHJpX3JlcG9ydF9jYXBhYmlsaXRpZXMoc3RydWN0IHNl X2NtZCAqY21kKQp7CiBzdHJ1Y3Qgc2VfZGV2aWNlICpkZXYgPSBjbWQtPnNlX2RldjsKIHN0 cnVjdCB0MTBfcmVzZXJ2YXRpb24gKnByX3RtcGwgPSAmZGV2LT50MTBfcHI7CiB1bnNpZ25l ZCBjaGFyICpidWY7CiB1MTYgYWRkX2xlbiA9IDg7CgogaWYgKGNtZC0+ZGF0YV9sZW5ndGgg PCA2KSB7CiAgcHJpbnRrKCJcMDAxIiAiMyIgIlBSSU4gU0EgUkVQT1JUX0NBUEFCSUxJVElF UyBTQ1NJIERhdGEgTGVuZ3RoOiIgIiAldSB0b28gc21hbGxcbiIsIGNtZC0+ZGF0YV9sZW5n dGgpOwogIHJldHVybiBUQ01fSU5WQUxJRF9DREJfRklFTEQ7CiB9CgogYnVmID0gdHJhbnNw b3J0X2ttYXBfZGF0YV9zZyhjbWQpOwogaWYgKCFidWYpCiAgcmV0dXJuIFRDTV9MT0dJQ0FM X1VOSVRfQ09NTVVOSUNBVElPTl9GQUlMVVJFOwoKIGJ1ZlswXSA9ICgoYWRkX2xlbiA8PCA4 KSAmIDB4ZmYpOwogYnVmWzFdID0gKGFkZF9sZW4gJiAweGZmKTsKIGJ1ZlsyXSB8PSAweDEw OwogYnVmWzJdIHw9IDB4MDg7CiBidWZbMl0gfD0gMHgwNDsKIGJ1ZlsyXSB8PSAweDAxOwog YnVmWzNdIHw9IDB4ODA7CiBidWZbM10gfD0gMHgxMDsKCiBpZiAocHJfdG1wbC0+cHJfYXB0 cGxfYWN0aXZlKQogIGJ1ZlszXSB8PSAweDAxOwoKIGJ1Zls0XSB8PSAweDgwOwogYnVmWzRd IHw9IDB4NDA7CiBidWZbNF0gfD0gMHgyMDsKIGJ1Zls0XSB8PSAweDA4OwogYnVmWzRdIHw9 IDB4MDI7CiBidWZbNV0gfD0gMHgwMTsKCiB0cmFuc3BvcnRfa3VubWFwX2RhdGFfc2coY21k KTsKIHJldHVybiAwOwp9CgpzdGF0aWMgc2Vuc2VfcmVhc29uX3QKY29yZV9zY3NpM19wcmlf cmVhZF9mdWxsX3N0YXR1cyhzdHJ1Y3Qgc2VfY21kICpjbWQpCnsKIHN0cnVjdCBzZV9kZXZp Y2UgKmRldiA9IGNtZC0+c2VfZGV2Owogc3RydWN0IHNlX25vZGVfYWNsICpzZV9uYWNsOwog c3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnOwogc3RydWN0IHQxMF9wcl9yZWdpc3Ry YXRpb24gKnByX3JlZywgKnByX3JlZ190bXA7CiBzdHJ1Y3QgdDEwX3Jlc2VydmF0aW9uICpw cl90bXBsID0gJmRldi0+dDEwX3ByOwogdW5zaWduZWQgY2hhciAqYnVmOwogdTMyIGFkZF9k ZXNjX2xlbiA9IDAsIGFkZF9sZW4gPSAwLCBkZXNjX2xlbiwgZXhwX2Rlc2NfbGVuOwogdTMy IG9mZiA9IDg7CiBpbnQgZm9ybWF0X2NvZGUgPSAwOwoKIGlmIChjbWQtPmRhdGFfbGVuZ3Ro IDwgOCkgewogIHByaW50aygiXDAwMSIgIjMiICJQUklOIFNBIFJFQURfRlVMTF9TVEFUVVMg U0NTSSBEYXRhIExlbmd0aDogJXUiICIgdG9vIHNtYWxsXG4iLCBjbWQtPmRhdGFfbGVuZ3Ro KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgcmV0dXJuIFRDTV9J TlZBTElEX0NEQl9GSUVMRDsKIH0KCiBidWYgPSB0cmFuc3BvcnRfa21hcF9kYXRhX3NnKGNt ZCk7CiBpZiAoIWJ1ZikKICByZXR1cm4gVENNX0xPR0lDQUxfVU5JVF9DT01NVU5JQ0FUSU9O X0ZBSUxVUkU7CgogYnVmWzBdID0gKChkZXYtPnQxMF9wci5wcl9nZW5lcmF0aW9uID4+IDI0 KSAmIDB4ZmYpOwogYnVmWzFdID0gKChkZXYtPnQxMF9wci5wcl9nZW5lcmF0aW9uID4+IDE2 KSAmIDB4ZmYpOwogYnVmWzJdID0gKChkZXYtPnQxMF9wci5wcl9nZW5lcmF0aW9uID4+IDgp ICYgMHhmZik7CiBidWZbM10gPSAoZGV2LT50MTBfcHIucHJfZ2VuZXJhdGlvbiAmIDB4ZmYp OwoKIHNwaW5fbG9jaygmcHJfdG1wbC0+cmVnaXN0cmF0aW9uX2xvY2spOwogZm9yIChwcl9y ZWcgPSAoeyBjb25zdCB0eXBlb2YoICgodHlwZW9mKCpwcl9yZWcpICopMCktPnByX3JlZ19s aXN0ICkgKl9fbXB0ciA9ICgoJnByX3RtcGwtPnJlZ2lzdHJhdGlvbl9saXN0KS0+bmV4dCk7 ICh0eXBlb2YoKnByX3JlZykgKikoIChjaGFyICopX19tcHRyIC0gX19idWlsdGluX29mZnNl dG9mKHR5cGVvZigqcHJfcmVnKSxwcl9yZWdfbGlzdCkgKTt9KSwgcHJfcmVnX3RtcCA9ICh7 IGNvbnN0IHR5cGVvZiggKCh0eXBlb2YoKnByX3JlZykgKikwKS0+cHJfcmVnX2xpc3QgKSAq X19tcHRyID0gKHByX3JlZy0+cHJfcmVnX2xpc3QubmV4dCk7ICh0eXBlb2YoKnByX3JlZykg KikoIChjaGFyICopX19tcHRyIC0gX19idWlsdGluX29mZnNldG9mKHR5cGVvZigqcHJfcmVn KSxwcl9yZWdfbGlzdCkgKTt9KTsgJnByX3JlZy0+cHJfcmVnX2xpc3QgIT0gKCZwcl90bXBs LT5yZWdpc3RyYXRpb25fbGlzdCk7IHByX3JlZyA9IHByX3JlZ190bXAsIHByX3JlZ190bXAg PSAoeyBjb25zdCB0eXBlb2YoICgodHlwZW9mKCpwcl9yZWdfdG1wKSAqKTApLT5wcl9yZWdf bGlzdCApICpfX21wdHIgPSAocHJfcmVnX3RtcC0+cHJfcmVnX2xpc3QubmV4dCk7ICh0eXBl b2YoKnByX3JlZ190bXApICopKCAoY2hhciAqKV9fbXB0ciAtIF9fYnVpbHRpbl9vZmZzZXRv Zih0eXBlb2YoKnByX3JlZ190bXApLHByX3JlZ19saXN0KSApO30pKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CgogIHNlX25hY2wgPSBwcl9yZWct PnByX3JlZ19uYWNsOwogIHNlX3RwZyA9IHByX3JlZy0+cHJfcmVnX25hY2wtPnNlX3RwZzsK ICBhZGRfZGVzY19sZW4gPSAwOwogIGF0b21pY19hZGQoMSwgJnByX3JlZy0+cHJfcmVzX2hv bGRlcnMpOwogIHNwaW5fdW5sb2NrKCZwcl90bXBsLT5yZWdpc3RyYXRpb25fbG9jayk7Cgog IGV4cF9kZXNjX2xlbiA9IHNlX3RwZy0+c2VfdHBnX3Rmby0+dHBnX2dldF9wcl90cmFuc3Bv cnRfaWRfbGVuKAogICAgc2VfdHBnLCBzZV9uYWNsLCBwcl9yZWcsICZmb3JtYXRfY29kZSk7 CgogIGlmICgoZXhwX2Rlc2NfbGVuICsgYWRkX2xlbikgPiBjbWQtPmRhdGFfbGVuZ3RoKSB7 CiAgIHByaW50aygiXDAwMSIgIjQiICJTUEMtMyBQUklOIFJFQURfRlVMTF9TVEFUVVMgcmFu IiAiIG91dCBvZiBidWZmZXI6ICVkXG4iLCBjbWQtPmRhdGFfbGVuZ3RoKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgIHNwaW5fbG9jaygmcHJf dG1wbC0+cmVnaXN0cmF0aW9uX2xvY2spOwogICBhdG9taWNfc3ViKDEsICZwcl9yZWctPnBy X3Jlc19ob2xkZXJzKTsKICAgYnJlYWs7CiAgfQoKCiAgYnVmW29mZisrXSA9ICgocHJfcmVn LT5wcl9yZXNfa2V5ID4+IDU2KSAmIDB4ZmYpOwogIGJ1ZltvZmYrK10gPSAoKHByX3JlZy0+ cHJfcmVzX2tleSA+PiA0OCkgJiAweGZmKTsKICBidWZbb2ZmKytdID0gKChwcl9yZWctPnBy X3Jlc19rZXkgPj4gNDApICYgMHhmZik7CiAgYnVmW29mZisrXSA9ICgocHJfcmVnLT5wcl9y ZXNfa2V5ID4+IDMyKSAmIDB4ZmYpOwogIGJ1ZltvZmYrK10gPSAoKHByX3JlZy0+cHJfcmVz X2tleSA+PiAyNCkgJiAweGZmKTsKICBidWZbb2ZmKytdID0gKChwcl9yZWctPnByX3Jlc19r ZXkgPj4gMTYpICYgMHhmZik7CiAgYnVmW29mZisrXSA9ICgocHJfcmVnLT5wcl9yZXNfa2V5 ID4+IDgpICYgMHhmZik7CiAgYnVmW29mZisrXSA9IChwcl9yZWctPnByX3Jlc19rZXkgJiAw eGZmKTsKICBvZmYgKz0gNDsKCiAgaWYgKHByX3JlZy0+cHJfcmVnX2FsbF90Z19wdCkKICAg YnVmW29mZl0gPSAweDAyOwoKICBpZiAocHJfcmVnLT5wcl9yZXNfaG9sZGVyKSB7CiAgIGJ1 ZltvZmYrK10gfD0gMHgwMTsKICAgYnVmW29mZisrXSA9IChwcl9yZWctPnByX3Jlc19zY29w ZSAmIDB4ZjApIHwKICAgICAgICAgKHByX3JlZy0+cHJfcmVzX3R5cGUgJiAweDBmKTsKICB9 IGVsc2UKICAgb2ZmICs9IDI7CgogIG9mZiArPSA0OwogIGlmICghcHJfcmVnLT5wcl9yZWdf YWxsX3RnX3B0KSB7CiAgIHN0cnVjdCBzZV9wb3J0ICpwb3J0ID0gcHJfcmVnLT5wcl9yZWdf dGdfcHRfbHVuLT5sdW5fc2VwOwoKICAgYnVmW29mZisrXSA9ICgocG9ydC0+c2VwX3J0cGkg Pj4gOCkgJiAweGZmKTsKICAgYnVmW29mZisrXSA9IChwb3J0LT5zZXBfcnRwaSAmIDB4ZmYp OwogIH0gZWxzZQogICBvZmYgKz0gMjsKCiAgZGVzY19sZW4gPSBzZV90cGctPnNlX3RwZ190 Zm8tPnRwZ19nZXRfcHJfdHJhbnNwb3J0X2lkKHNlX3RwZywKICAgIHNlX25hY2wsIHByX3Jl ZywgJmZvcm1hdF9jb2RlLCAmYnVmW29mZis0XSk7CgogIHNwaW5fbG9jaygmcHJfdG1wbC0+ cmVnaXN0cmF0aW9uX2xvY2spOwogIGF0b21pY19zdWIoMSwgJnByX3JlZy0+cHJfcmVzX2hv bGRlcnMpOwoKICBidWZbb2ZmKytdID0gKChkZXNjX2xlbiA+PiAyNCkgJiAweGZmKTsKICBi dWZbb2ZmKytdID0gKChkZXNjX2xlbiA+PiAxNikgJiAweGZmKTsKICBidWZbb2ZmKytdID0g KChkZXNjX2xlbiA+PiA4KSAmIDB4ZmYpOwogIGJ1ZltvZmYrK10gPSAoZGVzY19sZW4gJiAw eGZmKTsKCiAgYWRkX2Rlc2NfbGVuID0gKDI0ICsgZGVzY19sZW4pOwoKICBvZmYgKz0gZGVz Y19sZW47CiAgYWRkX2xlbiArPSBhZGRfZGVzY19sZW47CiB9CiBzcGluX3VubG9jaygmcHJf dG1wbC0+cmVnaXN0cmF0aW9uX2xvY2spOwoKIGJ1Zls0XSA9ICgoYWRkX2xlbiA+PiAyNCkg JiAweGZmKTsKIGJ1Zls1XSA9ICgoYWRkX2xlbiA+PiAxNikgJiAweGZmKTsKIGJ1Zls2XSA9 ICgoYWRkX2xlbiA+PiA4KSAmIDB4ZmYpOwogYnVmWzddID0gKGFkZF9sZW4gJiAweGZmKTsK IHRyYW5zcG9ydF9rdW5tYXBfZGF0YV9zZyhjbWQpOwogcmV0dXJuIDA7Cn0KCnNlbnNlX3Jl YXNvbl90IHRhcmdldF9zY3NpM19lbXVsYXRlX3ByX2luKHN0cnVjdCBzZV9jbWQgKmNtZCkK ewogc2Vuc2VfcmVhc29uX3QgcmV0OwogaWYgKGNtZC0+c2VfZGV2LT5kZXZfcmVzZXJ2YXRp b25fZmxhZ3MgJiAweDAwMDAwMDAxKSB7CiAgcHJpbnRrKCJcMDAxIiAiMyIgIlJlY2VpdmVk IFBFUlNJU1RFTlRfUkVTRVJWRSBDREIgd2hpbGUgbGVnYWN5IiAiIFNQQy0yIHJlc2VydmF0 aW9uIGlzIGhlbGQsIHJldHVybmluZyIgIiBSRVNFUlZBVElPTl9DT05GTElDVFxuIik7CiAg cmV0dXJuIFRDTV9SRVNFUlZBVElPTl9DT05GTElDVDsKIH0KCiBzd2l0Y2ggKGNtZC0+dF90 YXNrX2NkYlsxXSAmIDB4MWYpIHsKIGNhc2UgMHgwMDoKICByZXQgPSBjb3JlX3Njc2kzX3By aV9yZWFkX2tleXMoY21kKTsKICBicmVhazsKIGNhc2UgMHgwMToKICByZXQgPSBjb3JlX3Nj c2kzX3ByaV9yZWFkX3Jlc2VydmF0aW9uKGNtZCk7CiAgYnJlYWs7CiBjYXNlIDB4MDI6CiAg cmV0ID0gY29yZV9zY3NpM19wcmlfcmVwb3J0X2NhcGFiaWxpdGllcyhjbWQpOwogIGJyZWFr OwogY2FzZSAweDAzOgogIHJldCA9IGNvcmVfc2NzaTNfcHJpX3JlYWRfZnVsbF9zdGF0dXMo Y21kKTsKICBicmVhazsKIGRlZmF1bHQ6CiAgcHJpbnRrKCJcMDAxIiAiMyIgIlVua25vd24g UEVSU0lTVEVOVF9SRVNFUlZFX0lOIHNlcnZpY2UiICIgYWN0aW9uOiAweCUwMnhcbiIsIGNt ZC0+dF90YXNrX2NkYlsxXSAmIDB4MWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOwogIHJldHVybiBUQ01fSU5WQUxJRF9DREJfRklFTEQ7 CiB9CgogaWYgKCFyZXQpCiAgdGFyZ2V0X2NvbXBsZXRlX2NtZChjbWQsIDB4MDApOwogcmV0 dXJuIHJldDsKfQo= --------------090605050501080608020507-- -- 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/