From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pankaj Kumar Biswas Subject: Help Date: Fri, 28 Oct 2011 09:45:10 +0530 Message-ID: <64FB1554ABC9B44FAA773FBD6CB889C2E1CB20578F@BANPMAILBOX01.citrite.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1180314167==" Return-path: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org --===============1180314167== Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_64FB1554ABC9B44FAA773FBD6CB889C2E1CB20578FBANPMAILBOX01_" --_000_64FB1554ABC9B44FAA773FBD6CB889C2E1CB20578FBANPMAILBOX01_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi team, I want to know how the paging works in xen and what the shadow paging is? Thanks & Regards, PANKAJ KUMAR BISWAS Software Maintenance Engineer | XenServer India | Citrix Systems Inc. Ext. 41225 | Email: pankaj.kumarbiswas@citrix.com --_000_64FB1554ABC9B44FAA773FBD6CB889C2E1CB20578FBANPMAILBOX01_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hi team,

 

I wan= t to know how the paging works in xen and what the shadow paging is?

 

<= span style=3D'font-family:"Cambria","serif"'>Thanks & Regards,

PANKAJ KUMAR BISWAS

 

Software Maintenance Engineer | XenServer India | Citrix Systems Inc.

Ext. 41225 | Email:  pankaj.kumarbiswas@citrix.com<= o:p>

 

= --_000_64FB1554ABC9B44FAA773FBD6CB889C2E1CB20578FBANPMAILBOX01_-- --===============1180314167== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --===============1180314167==-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: Help Date: Fri, 28 Oct 2011 09:47:57 +0100 Message-ID: <1319791677.9436.181.camel@zakaz.uk.xensource.com> References: <64FB1554ABC9B44FAA773FBD6CB889C2E1CB20578F@BANPMAILBOX01.citrite.net> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <64FB1554ABC9B44FAA773FBD6CB889C2E1CB20578F@BANPMAILBOX01.citrite.net> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Pankaj Kumar Biswas Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org On Fri, 2011-10-28 at 05:15 +0100, Pankaj Kumar Biswas wrote: > I want to know how the paging works in xen and what the shadow paging > is? I'm sorry but I'm afraid that no one here has time to school you from first principals on such open ended topics, you are going to need to do some leg work first yourself. There are various papers available on xen.org for example and googling the subject matter should be of some help. Once you are able to ask specific questions I suggest you reread http://wiki.xen.org/xenwiki/AskingXenDevelQuestions post here again. Thanks, Ian. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arun Kv Subject: Help Date: Sat, 23 Mar 2013 13:21:25 +0530 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============7404939867845576574==" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --===============7404939867845576574== Content-Type: multipart/alternative; boundary=f46d043d6771b40dcc04d892d642 --f46d043d6771b40dcc04d892d642 Content-Type: text/plain; charset=ISO-8859-1 Hi, My question is how can i disable direct io in XCP, in XEN i can do it by editing "driver name" value to "file" How can i do this in XCP, please help. Arun --f46d043d6771b40dcc04d892d642 Content-Type: text/html; charset=ISO-8859-1 Hi,

My question is how can i disable direct io in XCP, in XEN i can do it by editing "driver name" value to "file"
How can i do this in XCP, please help.


Arun
--f46d043d6771b40dcc04d892d642-- --===============7404939867845576574== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --===============7404939867845576574==-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: Help Date: Mon, 25 Mar 2013 10:54:31 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Arun Kv Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org On Sat, Mar 23, 2013 at 7:51 AM, Arun Kv wrote: > Hi, > > My question is how can i disable direct io in XCP, in XEN i can do it by > editing "driver name" value to "file" > How can i do this in XCP, please help. You should ask this question on xen-users, and probably also on the (badly-named) xen-api@lists.xen.org list, which is used by the XCP developers. -Geoge From mboxrd@z Thu Jan 1 00:00:00 1970 From: Luc Pierard de Maujouy Subject: Help Date: Thu, 25 Jun 2015 07:51:45 +0300 Message-ID: <558B88E1.4080306@yahoo.fr> References: <557FA708.7020101@yahoo.fr> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Z7z9E-0006oZ-9z for xen-devel@lists.xenproject.org; Thu, 25 Jun 2015 04:52:24 +0000 In-Reply-To: <557FA708.7020101@yahoo.fr> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org My apologize for been to late for subscription confirmation. Resubmitting. Env : xen 4.5 + kernel 4.0.5 + xl stack, working dom0/domU. Level : Quite critical despite integration env as using source distro (gentoo) tmem is on xen command line, and reported in xl dmesg. tmem module in loaded via init script (open-rc). tmem has been added at the end of the kernel command line, though syntax may be wrong. ballooning on in dom0 cfg file. maxmem is defined in domU cfg file. maxmem>memory. RAM can be manually redistributed beetween dom0 & domU via mem-set command. When domU is forced to require more RAM than currently reported as available via its top command, domU RAM is not automatically resized. domU is expected to request dom0 for additionnal RAM before starting to use swap. Is ballooning feature misunderstood should misconfiguration be suspected, what should be investigated? Thks 4 ur attention, interest & support. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: Help Date: Thu, 25 Jun 2015 09:51:52 +0100 Message-ID: <1435222312.28264.312.camel@citrix.com> References: <557FA708.7020101@yahoo.fr> <558B88E1.4080306@yahoo.fr> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Z82tA-0001uF-PW for xen-devel@lists.xenproject.org; Thu, 25 Jun 2015 08:52:04 +0000 In-Reply-To: <558B88E1.4080306@yahoo.fr> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Luc Pierard de Maujouy Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org On Thu, 2015-06-25 at 07:51 +0300, Luc Pierard de Maujouy wrote: You should try and use a descriptive subject in the future so that people who know about the area are inspired to read the mail. Also in the first instance this seems more suitable for the xen-users list. > domU is expected to request dom0 for additionnal RAM before starting to > use swap. I don't know much about tmem systems, but isn't there some daemon required in the guest to achieve that? Or perhaps that is what CONFIG_XEN_SELFBALLOONING in the domU config is for? Is that enabled along with things like FRONTSWAP and friends? Some more details of exactly what you've added to which command lines and some logs might allow someone to spot where things are not correct. Ian. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Akash Talole Subject: Help Date: Fri, 3 Jul 2015 14:15:41 +0530 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a11c204facc45420519f4942c Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org --001a11c204facc45420519f4942c Content-Type: multipart/alternative; boundary=001a11c204facc453c0519f4942a --001a11c204facc453c0519f4942a Content-Type: text/plain; charset=UTF-8 Hello, I want to know about Blktap asynchronous i/o read write operations on VHD. I want to know detail flow of program block-VHD.c . How the read write operations are performed on VHD . And any improvement in code would be done for better read write operations. Description about dynamic disk structure. I wand modify code of fast clone copy for copy on read. Currently data is copy into vhd after write. So tell me about how step by step which functions are calling from block-vhd so fast copy is done. I have attached the code of block-vhd.c. Thanks, Akash Talole --001a11c204facc453c0519f4942a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hello,
=C2=A0 =C2=A0 = =C2=A0 I want to know about Blktap asynchronous i/o read write=C2=A0= operations on VHD. I want to know detail= flow of program=C2=A0 block-VHD.= c . How the read write operations are performed on=C2=A0VHD .=C2= =A0And any improvement in code would be done for better read=C2=A0 =C2=A0write operations. Description about= dynamic disk structure. I wand modify code of fast clone copy for copy on = read. Currently data is copy into vhd =C2=A0after write.
So tell me about how step by step which functions are call= ing from block-vhd so fast copy is done.

I have attached the code of block-vhd.c.

<= br>
Thanks,
Akash Talole
--001a11c204facc453c0519f4942a-- --001a11c204facc45420519f4942c Content-Type: text/x-csrc; charset=US-ASCII; name="block-vhd.c" Content-Disposition: attachment; filename="block-vhd.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ibndfojg0 LyogCiAqIENvcHlyaWdodCAoQykgQ2l0cml4IFN5c3RlbXMgSW5jLgogKgogKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CiAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9u IDIuMSBvbmx5CiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4sCiAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg TUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgovKgogKiBibG9jay12aGQuYzogYXN5bmNocm9ub3Vz IHZoZCBpbXBsZW1lbnRhdGlvbi4KICoKICogQSBub3RlIG9uIHdyaXRlIHRyYW5zYWN0aW9uczoK ICogV3JpdGVzIHRoYXQgcmVxdWlyZSB1cGRhdGluZyB0aGUgQkFUIG9yIGJpdG1hcHMgY2Fubm90 IGJlIHNpZ25hbGVkCiAqIGFzIGNvbXBsZXRlIHVudGlsIGFsbCB1cGRhdGVzIGhhdmUgcmVhY2hl ZCBkaXNrLiAgVHJhbnNhY3Rpb25zIGFyZQogKiB1c2VkIHRvIGVuc3VyZSBwcm9wZXIgb3JkZXJp bmcgaW4gdGhlc2UgY2FzZXMuICBUaGUgdHdvIHR5cGVzIG9mCiAqIHRyYW5zYWN0aW9ucyBhcmUg YXMgZm9sbG93czoKICogICAtIEJpdG1hcCB1cGRhdGVzIG9ubHk6IGRhdGEgd3JpdGVzIHRoYXQg cmVxdWlyZSB1cGRhdGVzIHRvIHRoZSBzYW1lCiAqICAgICBiaXRtYXAgYXJlIGdyb3VwZWQgaW4g YSB0cmFuc2FjdGlvbi4gIE9ubHkgYWZ0ZXIgYWxsIGRhdGEgd3JpdGVzCiAqICAgICBpbiBhIHRy YW5zYWN0aW9uIGNvbXBsZXRlIGRvZXMgdGhlIGJpdG1hcCB3cml0ZSBjb21tZW5jZS4gIE9ubHkK ICogICAgIGFmdGVyIHRoZSBiaXRtYXAgd3JpdGUgZmluaXNoZXMgYXJlIHRoZSBkYXRhIHdyaXRl cyBzaWduYWxsZWQgYXMKICogICAgIGNvbXBsZXRlLgogKiAgIC0gQkFUIGFuZCBiaXRtYXAgdXBk YXRlczogZGF0YSB3cml0ZXMgYXJlIGdyb3VwZWQgaW4gdHJhbnNhY3Rpb25zCiAqICAgICBhcyBh Ym92ZSwgYnV0IGEgc3BlY2lhbCBleHRyYSB3cml0ZSBpcyBpbmNsdWRlZCBpbiB0aGUgdHJhbnNh Y3Rpb24sCiAqICAgICB3aGljaCB6ZXJvcyBvdXQgdGhlIG5ld2x5IGFsbG9jYXRlZCBiaXRtYXAg b24gZGlzay4gIFdoZW4gdGhlIGRhdGEKICogICAgIHdyaXRlcyBhbmQgdGhlIHplcm8tYml0bWFw IHdyaXRlIGNvbXBsZXRlLCB0aGUgQkFUIGFuZCBiaXRtYXAgd3JpdGVzCiAqICAgICBhcmUgc3Rh cnRlZCBpbiBwYXJhbGxlbC4gIFRoZSB0cmFuc2FjdGlvbiBpcyBjb21wbGV0ZWQgb25seSBhZnRl ciBib3RoCiAqICAgICB0aGUgQkFUIGFuZCBiaXRtYXAgd3JpdGVzIHN1Y2Nlc3NmdWxseSByZXR1 cm4uCiAqLwoKI2lmZGVmIEhBVkVfQ09ORklHX0gKI2luY2x1ZGUgImNvbmZpZy5oIgojZW5kaWYK CiNpbmNsdWRlIDxlcnJuby5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+ CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3lzL3N0 YXQuaD4KI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgojaW5jbHVkZSA8dXVpZC91dWlkLmg+IC8qIEZv ciB3aGF0ZXZlciByZWFzb24sIExpbnV4IHBhY2thZ2VzIHRoaXMgaW4gKi8KICAgICAgICAgICAg ICAgICAgICAgICAvKiBlMmZzcHJvZ3MtZGV2ZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAg ICovCiNpbmNsdWRlIDxzdHJpbmcuaD4gICAgLyogZm9yIG1lbXNldC4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqLwojaW5jbHVkZSA8bGliYWlvLmg+CiNpbmNsdWRlIDxzeXMvbW1h bi5oPgojaW5jbHVkZSA8bGltaXRzLmg+CgojaW5jbHVkZSAiZGVidWcuaCIKI2luY2x1ZGUgImxp YnZoZC5oIgojaW5jbHVkZSAidGFwZGlzay5oIgojaW5jbHVkZSAidGFwZGlzay1kcml2ZXIuaCIK I2luY2x1ZGUgInRhcGRpc2staW50ZXJmYWNlLmgiCiNpbmNsdWRlICJ0YXBkaXNrLWRpc2t0eXBl LmgiCiNpbmNsdWRlICJ0YXBkaXNrLXN0b3JhZ2UuaCIKCnVuc2lnbmVkIGludCBTUEI7CgojZGVm aW5lIERFQlVHR0lORyAgIDIKI2RlZmluZSBNSUNST1NPRlRfQ09NUEFUCgojZGVmaW5lIFZIRF9C QVRNQVBfTUFYX1JFVFJJRVMgMTAKCiNkZWZpbmUgX19UUkFDRShzKQkJCQkJCQlcCglkbyB7CQkJ CQkJCQlcCgkJREJHKFRMT0dfREJHLCAiJXM6IFFVRVVFRDogJSIgUFJJdTY0ICIsIENPTVBMRVRF RDogJSIJXAoJCSAgICBQUkl1NjQiLCBSRVRVUk5FRDogJSIgUFJJdTY0ICIsIERBVEFfQUxMT0NB VEVEOiAiCVwKCQkgICAgIiV1LCBCQkxLOiAweCUwNHhcbiIsCQkJCVwKCQkgICAgcy0+dmhkLmZp bGUsIHMtPnF1ZXVlZCwgcy0+Y29tcGxldGVkLCBzLT5yZXR1cm5lZCwJXAoJCSAgICBWSERfUkVR U19EQVRBIC0gcy0+dnJlcV9mcmVlX2NvdW50LAkJCVwKCQkgICAgcy0+YmF0LnBid19ibGspOwkJ CQkJXAoJfSB3aGlsZSgwKQoKI2lmIChERUJVR0dJTkcgPT0gMSkKICAjZGVmaW5lIERCRyhsZXZl bCwgX2YsIF9hLi4uKSAgICAgIERQUklOVEYoX2YsICMjX2EpCiAgI2RlZmluZSBFUlIoX3MsIGVy ciwgX2YsIF9hLi4uKSAgICBEUFJJTlRGKCJFUlJPUjogJWQ6ICIgX2YsIGVyciwgIyNfYSkKICAj ZGVmaW5lIFRSQUNFKHMpICAgICAgICAgICAgICAgICAgICgodm9pZCkwKQojZWxpZiAoREVCVUdH SU5HID09IDIpCiAgI2RlZmluZSBEQkcobGV2ZWwsIF9mLCBfYS4uLikgICAgICB0bG9nX3dyaXRl KGxldmVsLCBfZiwgIyNfYSkKICAjZGVmaW5lIEVSUihfcywgX2VyciwgX2YsIF9hLi4uKSAgIHRs b2dfZHJ2X2Vycm9yKChfcyktPmRyaXZlciwgX2VyciwgX2YsICMjX2EpCiAgI2RlZmluZSBUUkFD RShzKSAgICAgICAgICAgICAgICAgICBfX1RSQUNFKHMpCiNlbHNlCiAgI2RlZmluZSBEQkcobGV2 ZWwsIF9mLCBfYS4uLikgICAgICAoKHZvaWQpMCkKICAjZGVmaW5lIEVSUihfcywgZXJyLCBfZiwg X2EuLi4pICAgICgodm9pZCkwKQogICNkZWZpbmUgVFJBQ0UocykgICAgICAgICAgICAgICAgICAg KCh2b2lkKTApCiNlbmRpZgoKLyoqKioqKlZIRCBERUZJTkVTKioqKioqLwojZGVmaW5lIFZIRF9D QUNIRV9TSVpFICAgICAgICAgICAgICAgMzIKCiNkZWZpbmUgVkhEX1JFUVNfREFUQSAgICAgICAg ICAgICAgICBUQVBESVNLX0RBVEFfUkVRVUVTVFMKI2RlZmluZSBWSERfUkVRU19NRVRBICAgICAg ICAgICAgICAgIChWSERfQ0FDSEVfU0laRSArIDIpCiNkZWZpbmUgVkhEX1JFUVNfVE9UQUwgICAg ICAgICAgICAgICAoVkhEX1JFUVNfREFUQSArIFZIRF9SRVFTX01FVEEpCgojZGVmaW5lIFZIRF9P UF9CQVRfV1JJVEUgICAgICAgICAgICAgMAojZGVmaW5lIFZIRF9PUF9EQVRBX1JFQUQgICAgICAg ICAgICAgMQojZGVmaW5lIFZIRF9PUF9EQVRBX1dSSVRFICAgICAgICAgICAgMgojZGVmaW5lIFZI RF9PUF9CSVRNQVBfUkVBRCAgICAgICAgICAgMwojZGVmaW5lIFZIRF9PUF9CSVRNQVBfV1JJVEUg ICAgICAgICAgNAojZGVmaW5lIFZIRF9PUF9aRVJPX0JNX1dSSVRFICAgICAgICAgNQojZGVmaW5l IFZIRF9PUF9SRURVTkRBTlRfQk1fV1JJVEUgICAgNgoKI2RlZmluZSBWSERfQk1fQkFUX0xPQ0tF RCAgICAgICAgICAgIDAKI2RlZmluZSBWSERfQk1fQkFUX0NMRUFSICAgICAgICAgICAgIDEKI2Rl ZmluZSBWSERfQk1fQklUX0NMRUFSICAgICAgICAgICAgIDIKI2RlZmluZSBWSERfQk1fQklUX1NF VCAgICAgICAgICAgICAgIDMKI2RlZmluZSBWSERfQk1fTk9UX0NBQ0hFRCAgICAgICAgICAgIDQK I2RlZmluZSBWSERfQk1fUkVBRF9QRU5ESU5HICAgICAgICAgIDUKCiNkZWZpbmUgVkhEX0ZMQUdf T1BFTl9SRE9OTFkgICAgICAgICAxCiNkZWZpbmUgVkhEX0ZMQUdfT1BFTl9OT19DQUNIRSAgICAg ICAyCiNkZWZpbmUgVkhEX0ZMQUdfT1BFTl9RVUlFVCAgICAgICAgICA0CiNkZWZpbmUgVkhEX0ZM QUdfT1BFTl9TVFJJQ1QgICAgICAgICA4CiNkZWZpbmUgVkhEX0ZMQUdfT1BFTl9RVUVSWSAgICAg ICAgICAxNgojZGVmaW5lIFZIRF9GTEFHX09QRU5fUFJFQUxMT0NBVEUgICAgMzIKI2RlZmluZSBW SERfRkxBR19PUEVOX05PX09fRElSRUNUICAgIDY0CiNkZWZpbmUgVkhEX0ZMQUdfT1BFTl9MT0NB TF9DQUNIRSAgICAxMjgKCiNkZWZpbmUgVkhEX0ZMQUdfQkFUX0xPQ0tFRCAgICAgICAgICAxCiNk ZWZpbmUgVkhEX0ZMQUdfQkFUX1dSSVRFX1NUQVJURUQgICAyCgojZGVmaW5lIFZIRF9GTEFHX0JN X1VQREFURV9CQVQgICAgICAgMQojZGVmaW5lIFZIRF9GTEFHX0JNX1dSSVRFX1BFTkRJTkcgICAg MgojZGVmaW5lIFZIRF9GTEFHX0JNX1JFQURfUEVORElORyAgICAgNAojZGVmaW5lIFZIRF9GTEFH X0JNX0xPQ0tFRCAgICAgICAgICAgOAoKI2RlZmluZSBWSERfRkxBR19SRVFfVVBEQVRFX0JBVCAg ICAgIDEKI2RlZmluZSBWSERfRkxBR19SRVFfVVBEQVRFX0JJVE1BUCAgIDIKI2RlZmluZSBWSERf RkxBR19SRVFfUVVFVUVEICAgICAgICAgIDQKI2RlZmluZSBWSERfRkxBR19SRVFfRklOSVNIRUQg ICAgICAgIDgKCiNkZWZpbmUgVkhEX0ZMQUdfVFhfTElWRSAgICAgICAgICAgICAxCiNkZWZpbmUg VkhEX0ZMQUdfVFhfVVBEQVRFX0JBVCAgICAgICAyCgp0eXBlZGVmIHVpbnQ4X3QgdmhkX2ZsYWdf dDsKCnN0cnVjdCB2aGRfc3RhdGU7CnN0cnVjdCB2aGRfcmVxdWVzdDsKCnN0cnVjdCB2aGRfcmVx X2xpc3QgewoJc3RydWN0IHZoZF9yZXF1ZXN0ICAgICAgICpoZWFkOwoJc3RydWN0IHZoZF9yZXF1 ZXN0ICAgICAgICp0YWlsOwp9OwoKc3RydWN0IHZoZF90cmFuc2FjdGlvbiB7CglpbnQgICAgICAg ICAgICAgICAgICAgICAgIGVycm9yOwoJaW50ICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWQ7 CglpbnQgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ZWQ7CglpbnQgICAgICAgICAgICAgICAg ICAgICAgIGZpbmlzaGVkOwoJdmhkX2ZsYWdfdCAgICAgICAgICAgICAgICBzdGF0dXM7CglzdHJ1 Y3QgdmhkX3JlcV9saXN0ICAgICAgIHJlcXVlc3RzOwp9OwoKc3RydWN0IHZoZF9yZXF1ZXN0IHsK CWludCAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I7Cgl1aW50OF90ICAgICAgICAgICAgICAg ICAgIG9wOwoJdmhkX2ZsYWdfdCAgICAgICAgICAgICAgICBmbGFnczsKCXRkX3JlcXVlc3RfdCAg ICAgICAgICAgICAgdHJlcTsKCXN0cnVjdCB0aW9jYiAgICAgICAgICAgICAgdGlvY2I7CglzdHJ1 Y3QgdmhkX3N0YXRlICAgICAgICAgKnN0YXRlOwoJc3RydWN0IHZoZF9yZXF1ZXN0ICAgICAgICpu ZXh0OwoJc3RydWN0IHZoZF90cmFuc2FjdGlvbiAgICp0eDsKfTsKCnN0cnVjdCB2aGRfYmF0X3N0 YXRlIHsKCXZoZF9iYXRfdCAgICAgICAgICAgICAgICAgYmF0OwoJdmhkX2JhdG1hcF90ICAgICAg ICAgICAgICBiYXRtYXA7Cgl2aGRfZmxhZ190ICAgICAgICAgICAgICAgIHN0YXR1czsKCXVpbnQz Ml90ICAgICAgICAgICAgICAgICAgcGJ3X2JsazsgICAgIC8qIGJsayBudW0gb2YgcGVuZGluZyB3 cml0ZSAqLwoJdWludDY0X3QgICAgICAgICAgICAgICAgICBwYndfb2Zmc2V0OyAgLyogZmlsZSBv ZmZzZXQgb2Ygc2FtZSAqLwoJc3RydWN0IHZoZF9yZXF1ZXN0ICAgICAgICByZXE7ICAgICAgICAg LyogZm9yIHdyaXRpbmcgYmF0IHRhYmxlICovCglzdHJ1Y3QgdmhkX3JlcXVlc3QgICAgICAgIHpl cm9fcmVxOyAgICAvKiBmb3IgaW5pdGlhbGl6aW5nIGJpdG1hcHMgKi8KCWNoYXIgICAgICAgICAg ICAgICAgICAgICAqYmF0X2J1ZjsKfTsKCnN0cnVjdCB2aGRfYml0bWFwIHsKCXVpbnQzMl90ICAg ICAgICAgICAgICAgICAgYmxrOwoJdWludDY0X3QgICAgICAgICAgICAgICAgICBzZXFubzsgICAg ICAgLyogbHJ1IHNlcXVlbmNlIG51bWJlciAqLwoJdmhkX2ZsYWdfdCAgICAgICAgICAgICAgICBz dGF0dXM7CgoJY2hhciAgICAgICAgICAgICAgICAgICAgICptYXA7ICAgICAgICAgLyogbWFwIHNo b3VsZCBvbmx5IGJlIG1vZGlmaWVkCgkJCQkJICAgICAgICAqIGluIGZpbmlzaF9iaXRtYXBfd3Jp dGUgKi8KCWNoYXIgICAgICAgICAgICAgICAgICAgICAqc2hhZG93OyAgICAgIC8qIGluLW1lbW9y eSBiaXRtYXAgY2hhbmdlcyBhcmUgCgkJCQkJICAgICAgICAqIG1hZGUgdG8gc2hhZG93IGFuZCBj b3BpZWQgdG8KCQkJCQkgICAgICAgICogbWFwIG9ubHkgYWZ0ZXIgaGF2aW5nIGJlZW4KCQkJCQkg ICAgICAgICogZmx1c2hlZCB0byBkaXNrICovCglzdHJ1Y3QgdmhkX3RyYW5zYWN0aW9uICAgIHR4 OyAgICAgICAgICAvKiB0cmFuc2FjdGlvbiBkYXRhIHN0cnVjdHVyZQoJCQkJCQkqIGVuY2Fwc3Vs YXRpbmcgZGF0YSwgYml0bWFwLCAKCQkJCQkJKiBhbmQgYmF0IHdyaXRlcyAqLwoJc3RydWN0IHZo ZF9yZXFfbGlzdCAgICAgICBxdWV1ZTsgICAgICAgLyogZGF0YSB3cml0ZXMgd2FpdGluZyBmb3Ig bmV4dAoJCQkJCQkqIHRyYW5zYWN0aW9uICovCglzdHJ1Y3QgdmhkX3JlcV9saXN0ICAgICAgIHdh aXRpbmc7ICAgICAvKiBwZW5kaW5nIHJlcXVlc3RzIHRoYXQgY2Fubm90CgkJCQkJICAgICAgICAq IGJlIHNlcnZpY2VkIHVudGlsIHRoaXMgYml0bWFwCgkJCQkJICAgICAgICAqIGlzIHJlYWQgZnJv bSBkaXNrICovCglzdHJ1Y3QgdmhkX3JlcXVlc3QgICAgICAgIHJlcTsKfTsKCnN0cnVjdCB2aGRf c3RhdGUgewoJdmhkX2ZsYWdfdCAgICAgICAgICAgICAgICBmbGFnczsKCiAgICAgICAgLyogVkhE IHN0dWZmICovCgl2aGRfY29udGV4dF90ICAgICAgICAgICAgIHZoZDsKCXVpbnQzMl90ICAgICAg ICAgICAgICAgICAgc3BwOyAgICAgICAgIC8qIHNlY3RvcnMgcGVyIHBhZ2UgKi8KCXVpbnQzMl90 ICAgICAgICAgICAgICAgICAgc3BiOyAgICAgICAgIC8qIHNlY3RvcnMgcGVyIGJsb2NrICovCgl1 aW50NjRfdCAgICAgICAgICAgICAgICAgIGZpcnN0X2RiOyAgICAvKiBwb2ludGVyIHRvIGRhdGFi bG9jayAwICovCgoJLyoqCgkgKiBQb2ludGVyIHRvIHRoZSBuZXh0ICh1bmFsbG9jYXRlZCkgZGF0 YWJsb2NrLiBJZiBncmVhdGVyIHRoYW4gVUlOVF9NQVgsCgkgKiB0aGVyZSBhcmUgbm8gbW9yZSBi bG9ja3MgYXZhaWxhYmxlLgoJICovCgl1aW50NjRfdCAgICAgICAgICAgICAgICAgIG5leHRfZGI7 CgoJc3RydWN0IHZoZF9iYXRfc3RhdGUgICAgICBiYXQ7CgoJdWludDY0X3QgICAgICAgICAgICAg ICAgICBibV9scnU7ICAgICAgLyogbHJ1IHNlcXVlbmNlIG51bWJlciAqLwoJdWludDMyX3QgICAg ICAgICAgICAgICAgICBibV9zZWNzOyAgICAgLyogc2l6ZSBvZiBiaXRtYXAsIGluIHNlY3RvcnMg Ki8KCXN0cnVjdCB2aGRfYml0bWFwICAgICAgICAqYml0bWFwW1ZIRF9DQUNIRV9TSVpFXTsKCglp bnQgICAgICAgICAgICAgICAgICAgICAgIGJtX2ZyZWVfY291bnQ7CglzdHJ1Y3QgdmhkX2JpdG1h cCAgICAgICAgKmJpdG1hcF9mcmVlW1ZIRF9DQUNIRV9TSVpFXTsKCXN0cnVjdCB2aGRfYml0bWFw ICAgICAgICAgYml0bWFwX2xpc3RbVkhEX0NBQ0hFX1NJWkVdOwoKCWludCAgICAgICAgICAgICAg ICAgICAgICAgdnJlcV9mcmVlX2NvdW50OwoJc3RydWN0IHZoZF9yZXF1ZXN0ICAgICAgICp2cmVx X2ZyZWVbVkhEX1JFUVNfREFUQV07CglzdHJ1Y3QgdmhkX3JlcXVlc3QgICAgICAgIHZyZXFfbGlz dFtWSERfUkVRU19EQVRBXTsKCgkvKiBmb3IgcmVkdW5kYW50IGJpdG1hcCB3cml0ZXMgKi8KCWlu dCAgICAgICAgICAgICAgICAgICAgICAgcGFkYm1fc2l6ZTsKCWNoYXIgICAgICAgICAgICAgICAg ICAgICAqcGFkYm1fYnVmOwoJbG9uZyBpbnQgICAgICAgICAgICAgICAgICBkZWJ1Z19za2lwcGVk X3JlZHVuZGFudF93cml0ZXM7Cglsb25nIGludCAgICAgICAgICAgICAgICAgIGRlYnVnX2RvbmVf cmVkdW5kYW50X3dyaXRlczsKCgl0ZF9kcml2ZXJfdCAgICAgICAgICAgICAgKmRyaXZlcjsKCgl1 aW50NjRfdCAgICAgICAgICAgICAgICAgIHF1ZXVlZDsKCXVpbnQ2NF90ICAgICAgICAgICAgICAg ICAgY29tcGxldGVkOwoJdWludDY0X3QgICAgICAgICAgICAgICAgICByZXR1cm5lZDsKCXVpbnQ2 NF90ICAgICAgICAgICAgICAgICAgcmVhZHM7Cgl1aW50NjRfdCAgICAgICAgICAgICAgICAgIHJl YWRfc2l6ZTsKCXVpbnQ2NF90ICAgICAgICAgICAgICAgICAgd3JpdGVzOwoJdWludDY0X3QgICAg ICAgICAgICAgICAgICB3cml0ZV9zaXplOwp9OwoKI2RlZmluZSB0ZXN0X3ZoZF9mbGFnKHdvcmQs IGZsYWcpICAoKHdvcmQpICYgKGZsYWcpKQojZGVmaW5lIHNldF92aGRfZmxhZyh3b3JkLCBmbGFn KSAgICgod29yZCkgfD0gKGZsYWcpKQojZGVmaW5lIGNsZWFyX3ZoZF9mbGFnKHdvcmQsIGZsYWcp ICgod29yZCkgJj0gfihmbGFnKSkKCiNkZWZpbmUgYmF0X2VudHJ5KHMsIGJsaykgICAgICAgICAg KChzKS0+YmF0LmJhdC5iYXRbKGJsayldKQoKc3RhdGljIHZvaWQgdmhkX2NvbXBsZXRlKHZvaWQg Kiwgc3RydWN0IHRpb2NiICosIGludCk7CnN0YXRpYyB2b2lkIGZpbmlzaF9kYXRhX3RyYW5zYWN0 aW9uKHN0cnVjdCB2aGRfc3RhdGUgKiwgc3RydWN0IHZoZF9iaXRtYXAgKik7CgpzdGF0aWMgc3Ry dWN0IHZoZF9zdGF0ZSAgKl92aGRfbWFzdGVyOwpzdGF0aWMgdW5zaWduZWQgbG9uZyAgICAgIF92 aGRfenNpemU7CnN0YXRpYyBjaGFyICAgICAgICAgICAgICAqX3ZoZF96ZXJvcyA9IE5VTEw7Cmlu dCAgICAgICAgICAgICAgICAgICAgICAgX2Rldl96ZXJvID0gLTE7CgpzdGF0aWMgaW50CnZoZF9p bml0aWFsaXplKHN0cnVjdCB2aGRfc3RhdGUgKnMpCnsKCWludCBlcnI7CgoJaWYgKF92aGRfemVy b3MpCgkJcmV0dXJuIDA7CgoJX3ZoZF96c2l6ZSA9IDIgKiBnZXRwYWdlc2l6ZSgpOwoJaWYgKHRl c3RfdmhkX2ZsYWcocy0+ZmxhZ3MsIFZIRF9GTEFHX09QRU5fUFJFQUxMT0NBVEUpKQoJCV92aGRf enNpemUgKz0gVkhEX0JMT0NLX1NJWkU7CgoJX2Rldl96ZXJvID0gb3BlbigiL2Rldi96ZXJvIiwg T19SRE9OTFkpOwoJaWYgKHVubGlrZWx5KF9kZXZfemVybyA9PSAtMSkpIHsKCQllcnIgPSBlcnJu bzsKCQlFUFJJTlRGKCJmYWlsZWQgdG8gb3BlbiAvZGV2L3plcm86ICVzXG4iLCBzdHJlcnJvcihl cnIpKTsKCQlyZXR1cm4gLWVycjsKCX0KCglfdmhkX3plcm9zID0gbW1hcChOVUxMLCBfdmhkX3pz aXplLCBQUk9UX1JFQUQsCgkJCSAgTUFQX1NIQVJFRCwgX2Rldl96ZXJvLCAwKTsKCWlmIChfdmhk X3plcm9zID09IE1BUF9GQUlMRUQpIHsKCQlpbnQgX2VycjsKCQllcnIgPSBlcnJubzsKCQlFUFJJ TlRGKCJ2aGRfaW5pdGlhbGl6ZSBmYWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnIpKTsKCQlfdmhk X3plcm9zID0gTlVMTDsKCQlfdmhkX3pzaXplID0gMDsKCQlfZXJyID0gY2xvc2UoX2Rldl96ZXJv KTsKCQlpZiAodW5saWtlbHkoX2VyciA9PSAtMSkpCgkJCUVQUklOVEYoImZhaWxlZCB0byBjbG9z ZSAvZGV2L3plcm86ICVzIChlcnJvciBpZ25vcmVkKVxuIiwKCQkJCQlzdHJlcnJvcihlcnJubykp OwoJCWVsc2UKCQkJX2Rldl96ZXJvID0gLTE7CgoJCXJldHVybiAtZXJyOwoJfQoKCV92aGRfbWFz dGVyID0gczsKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9pZAp2aGRfZnJlZShzdHJ1Y3QgdmhkX3N0 YXRlICpzKQp7CglpZiAoX3ZoZF9tYXN0ZXIgIT0gcyB8fCAhX3ZoZF96ZXJvcykKCQlyZXR1cm47 CgoJZnJlZShzLT5wYWRibV9idWYpOwoJbXVubWFwKF92aGRfemVyb3MsIF92aGRfenNpemUpOwoJ X3ZoZF96c2l6ZSAgPSAwOwoJX3ZoZF96ZXJvcyAgPSBOVUxMOwoJX3ZoZF9tYXN0ZXIgPSBOVUxM OwoJaWYgKF9kZXZfemVybyAhPSAtMSkgewoJCWludCBfZXJyID0gY2xvc2UoX2Rldl96ZXJvKTsK CQlpZiAodW5saWtlbHkoX2VyciA9PSAtMSkpCgkJCUVQUklOVEYoImZhaWxlZCB0byBjbG9zZSAv ZGV2L3plcm86ICVzIChlcnJvciBpZ25vcmVkKVxuIiwKCQkJCQlzdHJlcnJvcihlcnJubykpOwoJ CWVsc2UKCQkJX2Rldl96ZXJvID0gLTE7Cgl9Cn0KCnN0YXRpYyBjaGFyICoKX2dldF92aGRfemVy b3MoY29uc3QgY2hhciAqZnVuYywgdW5zaWduZWQgbG9uZyBzaXplKQp7CglpZiAoIV92aGRfemVy b3MgfHwgX3ZoZF96c2l6ZSA8IHNpemUpIHsKCQlFUFJJTlRGKCJpbnZhbGlkIHplcm8gcmVxdWVz dCBmcm9tICVzOiAlbHUsICVsdSwgJXBcbiIsCgkJCWZ1bmMsIHNpemUsIF92aGRfenNpemUsIF92 aGRfemVyb3MpOwoJCUFTU0VSVCgwKTsKCX0KCglyZXR1cm4gX3ZoZF96ZXJvczsKfQoKI2RlZmlu ZSB2aGRfemVyb3Moc2l6ZSkJX2dldF92aGRfemVyb3MoX19mdW5jX18sIHNpemUpCgpzdGF0aWMg aW5saW5lIHZvaWQKc2V0X2JhdG1hcChzdHJ1Y3QgdmhkX3N0YXRlICpzLCB1aW50MzJfdCBibGsp CnsKCWlmIChzLT5iYXQuYmF0bWFwLm1hcCkgewoJCXZoZF9iYXRtYXBfc2V0KCZzLT52aGQsICZz LT5iYXQuYmF0bWFwLCBibGspOwoJCURCRyhUTE9HX0RCRywgImJsb2NrIDB4JXggY29tcGxldGVs eSBmdWxsXG4iLCBibGspOwoJfQp9CgpzdGF0aWMgaW5saW5lIGludAp0ZXN0X2JhdG1hcChzdHJ1 Y3QgdmhkX3N0YXRlICpzLCB1aW50MzJfdCBibGspCnsKCWlmICghcy0+YmF0LmJhdG1hcC5tYXAp CgkJcmV0dXJuIDA7CglyZXR1cm4gdmhkX2JhdG1hcF90ZXN0KCZzLT52aGQsICZzLT5iYXQuYmF0 bWFwLCBibGspOwp9CgpzdGF0aWMgaW50CnZoZF9raWxsX2Zvb3RlcihzdHJ1Y3QgdmhkX3N0YXRl ICpzKQp7CglpbnQgZXJyOwoJb2ZmNjRfdCBlbmQ7Cgl2b2lkICp6ZXJvczsKCglpZiAocy0+dmhk LmZvb3Rlci50eXBlID09IEhEX1RZUEVfRklYRUQpCgkJcmV0dXJuIDA7CgoJZXJyID0gcG9zaXhf bWVtYWxpZ24oJnplcm9zLCA1MTIsIDUxMik7CglpZiAoZXJyKQoJCXJldHVybiAtZXJyOwoKCWVy ciA9IDE7CgltZW1zZXQoemVyb3MsIDB4YzdjN2M3YzcsIDUxMik7CgoJaWYgKChlbmQgPSBsc2Vl azY0KHMtPnZoZC5mZCwgMCwgU0VFS19FTkQpKSA9PSAtMSkKCQlnb3RvIGZhaWw7CgoJaWYgKGxz ZWVrNjQocy0+dmhkLmZkLCAoZW5kIC0gNTEyKSwgU0VFS19TRVQpID09IC0xKQoJCWdvdG8gZmFp bDsKCglpZiAod3JpdGUocy0+dmhkLmZkLCB6ZXJvcywgNTEyKSAhPSA1MTIpCgkJZ290byBmYWls OwoKCWVyciA9IDA7CgogZmFpbDoKCWZyZWUoemVyb3MpOwoJaWYgKGVycikKCQlyZXR1cm4gKGVy cm5vID8gLWVycm5vIDogLUVJTyk7CglyZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQKZmlu ZF9uZXh0X2ZyZWVfYmxvY2soc3RydWN0IHZoZF9zdGF0ZSAqcykKewoJaW50IGVycjsKCW9mZjY0 X3QgZW9tOwoJdWludDMyX3QgaSwgZW50cnk7CgoJZXJyID0gdmhkX2VuZF9vZl9oZWFkZXJzKCZz LT52aGQsICZlb20pOwoJaWYgKGVycikKCQlyZXR1cm4gZXJyOwoKCXMtPm5leHRfZGIgPSBzZWNz X3JvdW5kX3VwKGVvbSk7CglzLT5maXJzdF9kYiA9IHMtPm5leHRfZGI7CglpZiAoKHMtPmZpcnN0 X2RiICsgcy0+Ym1fc2VjcykgJSBzLT5zcHApCgkJcy0+Zmlyc3RfZGIgKz0gKHMtPnNwcCAtICgo cy0+Zmlyc3RfZGIgKyBzLT5ibV9zZWNzKSAlIHMtPnNwcCkpOwoKCWZvciAoaSA9IDA7IGkgPCBz LT5iYXQuYmF0LmVudHJpZXM7IGkrKykgewoJCWVudHJ5ID0gYmF0X2VudHJ5KHMsIGkpOwoJCWlm IChlbnRyeSAhPSBERF9CTEtfVU5VU0VEICYmIGVudHJ5ID49IHMtPm5leHRfZGIpCgkJCXMtPm5l eHRfZGIgPSAodWludDY0X3QpZW50cnkgKyAodWludDY0X3Qpcy0+c3BiCgkJCQkrICh1aW50NjRf dClzLT5ibV9zZWNzOwoJCQlpZiAocy0+bmV4dF9kYiA+IFVJTlRfTUFYKQoJCQkJYnJlYWs7Cgl9 CgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lkCnZoZF9mcmVlX2JhdChzdHJ1Y3QgdmhkX3N0YXRl ICpzKQp7CglmcmVlKHMtPmJhdC5iYXQuYmF0KTsKCWZyZWUocy0+YmF0LmJhdG1hcC5tYXApOwoJ ZnJlZShzLT5iYXQuYmF0X2J1Zik7CgltZW1zZXQoJnMtPmJhdCwgMCwgc2l6ZW9mKHN0cnVjdCB2 aGRfYmF0KSk7Cn0KCnN0YXRpYyBpbnQKdmhkX2luaXRpYWxpemVfYmF0KHN0cnVjdCB2aGRfc3Rh dGUgKnMpCnsKCWludCBlcnIsIGJhdG1hcF9yZXF1aXJlZCwgaTsKCXZvaWQgKmJ1ZjsKCgltZW1z ZXQoJnMtPmJhdCwgMCwgc2l6ZW9mKHN0cnVjdCB2aGRfYmF0KSk7CgoJZXJyID0gdmhkX3JlYWRf YmF0KCZzLT52aGQsICZzLT5iYXQuYmF0KTsKCWlmIChlcnIpIHsKCQlFUFJJTlRGKCIlczogcmVh ZGluZyBiYXQ6ICVkXG4iLCBzLT52aGQuZmlsZSwgZXJyKTsKCQlyZXR1cm4gZXJyOwoJfQoKCWJh dG1hcF9yZXF1aXJlZCA9IDE7CglpZiAodGVzdF92aGRfZmxhZyhzLT5mbGFncywgVkhEX0ZMQUdf T1BFTl9SRE9OTFkpKSB7CgkJYmF0bWFwX3JlcXVpcmVkID0gMDsKCX0gZWxzZSB7CgkJZXJyID0g ZmluZF9uZXh0X2ZyZWVfYmxvY2socyk7CgkJaWYgKGVycikKCQkJZ290byBmYWlsOwoJfQoKCWlm ICh2aGRfaGFzX2JhdG1hcCgmcy0+dmhkKSkgewoJCWZvciAoaSA9IDA7IGkgPCBWSERfQkFUTUFQ X01BWF9SRVRSSUVTOyBpKyspIHsKCQkJZXJyID0gdmhkX3JlYWRfYmF0bWFwKCZzLT52aGQsICZz LT5iYXQuYmF0bWFwKTsKCQkJaWYgKGVycikgewoJCQkJRVBSSU5URigiJXM6IHJlYWRpbmcgYmF0 bWFwOiAlZFxuIiwKCQkJCQkJcy0+dmhkLmZpbGUsIGVycik7CgkJCQlpZiAoYmF0bWFwX3JlcXVp cmVkKQoJCQkJCWdvdG8gZmFpbDsKCQkJfSBlbHNlIHsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCWlm IChlcnIpCgkJCUVQUklOVEYoIiVzOiBpZ25vcmluZyBub24tY3JpdGljYWwgYmF0bWFwIGVycm9y XG4iLAoJCQkJCXMtPnZoZC5maWxlKTsKCX0KCgllcnIgPSBwb3NpeF9tZW1hbGlnbigmYnVmLCBW SERfU0VDVE9SX1NJWkUsIFZIRF9TRUNUT1JfU0laRSk7CglpZiAoZXJyKQoJCWdvdG8gZmFpbDsK CglzLT5iYXQuYmF0X2J1ZiA9IGJ1ZjsKCglyZXR1cm4gMDsKCmZhaWw6Cgl2aGRfZnJlZV9iYXQo cyk7CglyZXR1cm4gZXJyOwp9CgpzdGF0aWMgdm9pZAp2aGRfZnJlZV9iaXRtYXBfY2FjaGUoc3Ry dWN0IHZoZF9zdGF0ZSAqcykKewoJaW50IGk7CglzdHJ1Y3QgdmhkX2JpdG1hcCAqYm07CgoJZm9y IChpID0gMDsgaSA8IFZIRF9DQUNIRV9TSVpFOyBpKyspIHsKCQlibSA9IHMtPmJpdG1hcF9saXN0 ICsgaTsKCQlmcmVlKGJtLT5tYXApOwoJCWZyZWUoYm0tPnNoYWRvdyk7CgkJcy0+Yml0bWFwX2Zy ZWVbaV0gPSBOVUxMOwoJfQoKCW1lbXNldChzLT5iaXRtYXBfbGlzdCwgMCwgc2l6ZW9mKHN0cnVj dCB2aGRfYml0bWFwKSAqIFZIRF9DQUNIRV9TSVpFKTsKfQoKc3RhdGljIGludAp2aGRfaW5pdGlh bGl6ZV9iaXRtYXBfY2FjaGUoc3RydWN0IHZoZF9zdGF0ZSAqcykKewoJaW50IGksIGVyciwgbWFw X3NpemU7CglzdHJ1Y3QgdmhkX2JpdG1hcCAqYm07Cgl2b2lkICptYXAsICpzaGFkb3c7CgoJbWVt c2V0KHMtPmJpdG1hcF9saXN0LCAwLCBzaXplb2Yoc3RydWN0IHZoZF9iaXRtYXApICogVkhEX0NB Q0hFX1NJWkUpOwoKCXMtPmJtX2xydSAgICAgICAgPSAwOwoJbWFwX3NpemUgICAgICAgICA9IHZo ZF9zZWN0b3JzX3RvX2J5dGVzKHMtPmJtX3NlY3MpOwoJcy0+Ym1fZnJlZV9jb3VudCA9IFZIRF9D QUNIRV9TSVpFOwoKCWZvciAoaSA9IDA7IGkgPCBWSERfQ0FDSEVfU0laRTsgaSsrKSB7CgkJYm0g PSBzLT5iaXRtYXBfbGlzdCArIGk7CgoJCWVyciA9IHBvc2l4X21lbWFsaWduKCZtYXAsIDUxMiwg bWFwX3NpemUpOwoJCWlmIChlcnIpCgkJCWdvdG8gZmFpbDsKCgkJYm0tPm1hcCA9IG1hcDsKCgkJ ZXJyID0gcG9zaXhfbWVtYWxpZ24oJnNoYWRvdywgNTEyLCBtYXBfc2l6ZSk7CgkJaWYgKGVycikK CQkJZ290byBmYWlsOwoKCQlibS0+c2hhZG93ID0gc2hhZG93OwoKCQltZW1zZXQoYm0tPm1hcCwg MCwgbWFwX3NpemUpOwoJCW1lbXNldChibS0+c2hhZG93LCAwLCBtYXBfc2l6ZSk7CgkJcy0+Yml0 bWFwX2ZyZWVbaV0gPSBibTsKCX0KCglyZXR1cm4gMDsKCmZhaWw6Cgl2aGRfZnJlZV9iaXRtYXBf Y2FjaGUocyk7CglyZXR1cm4gZXJyOwp9CgpzdGF0aWMgaW50CnZoZF9pbml0aWFsaXplX2R5bmFt aWNfZGlzayhzdHJ1Y3QgdmhkX3N0YXRlICpzKQp7Cgl1aW50MzJfdCBibV9zaXplOwoJdm9pZCAq YnVmOwoJaW50IGVycjsKCgllcnIgPSB2aGRfZ2V0X2hlYWRlcigmcy0+dmhkKTsKCWlmIChlcnIp IHsKCQlpZiAoIXRlc3RfdmhkX2ZsYWcocy0+ZmxhZ3MsIFZIRF9GTEFHX09QRU5fUVVJRVQpKQoJ CQlFUFJJTlRGKCJFcnJvciByZWFkaW5nIFZIRCBERCBoZWFkZXIuXG4iKTsKCQlyZXR1cm4gZXJy OwoJfQoKCWlmIChzLT52aGQuaGVhZGVyLmhkcl92ZXIgIT0gMHgwMDAxMDAwMCkgewoJCUVQUklO VEYoInVuc3VwcG9ydGVkIGhlYWRlciB2ZXJzaW9uISAoMHgleClcbiIsCgkJCXMtPnZoZC5oZWFk ZXIuaGRyX3Zlcik7CgkJcmV0dXJuIC1FSU5WQUw7Cgl9CgoJcy0+c3BwICAgICA9IGdldHBhZ2Vz aXplKCkgPj4gVkhEX1NFQ1RPUl9TSElGVDsKCXMtPnNwYiAgICAgPSBzLT52aGQuaGVhZGVyLmJs b2NrX3NpemUgPj4gVkhEX1NFQ1RPUl9TSElGVDsKCXMtPmJtX3NlY3MgPSBzZWNzX3JvdW5kX3Vw X25vX3plcm8ocy0+c3BiID4+IDMpOwoKCXMtPnBhZGJtX3NpemUgPSAocy0+Ym1fc2VjcyAvIGdl dHBhZ2VzaXplKCkpICogZ2V0cGFnZXNpemUoKTsKCWlmIChzLT5ibV9zZWNzICUgZ2V0cGFnZXNp emUoKSkKCQlzLT5wYWRibV9zaXplICs9IGdldHBhZ2VzaXplKCk7CgoJZXJyID0gcG9zaXhfbWVt YWxpZ24oJmJ1ZiwgNTEyLCBzLT5wYWRibV9zaXplKTsKCWlmIChlcnIpCgkJcmV0dXJuIC1lcnI7 CgoJcy0+cGFkYm1fYnVmID0gYnVmOwoJYm1fc2l6ZSA9IHMtPmJtX3NlY3MgPDwgVkhEX1NFQ1RP Ul9TSElGVDsKCW1lbXNldChzLT5wYWRibV9idWYsIDAsIHMtPnBhZGJtX3NpemUgLSBibV9zaXpl KTsKCW1lbXNldChzLT5wYWRibV9idWYgKyAocy0+cGFkYm1fc2l6ZSAtIGJtX3NpemUpLCB+MCwg Ym1fc2l6ZSk7CglzLT5kZWJ1Z19za2lwcGVkX3JlZHVuZGFudF93cml0ZXMgPSAwOwoJcy0+ZGVi dWdfZG9uZV9yZWR1bmRhbnRfd3JpdGVzID0gMDsKCglpZiAodGVzdF92aGRfZmxhZyhzLT5mbGFn cywgVkhEX0ZMQUdfT1BFTl9OT19DQUNIRSkpCgkJcmV0dXJuIDA7CgoJZXJyID0gdmhkX2luaXRp YWxpemVfYmF0KHMpOwoJaWYgKGVycikKCQlyZXR1cm4gZXJyOwoKCWVyciA9IHZoZF9pbml0aWFs aXplX2JpdG1hcF9jYWNoZShzKTsKCWlmIChlcnIpIHsKCQl2aGRfZnJlZV9iYXQocyk7CgkJcmV0 dXJuIGVycjsKCX0KCglyZXR1cm4gMDsKfQoKc3RhdGljIGludAp2aGRfY2hlY2tfdmVyc2lvbihz dHJ1Y3QgdmhkX3N0YXRlICpzKQp7CglpZiAoc3RybmNtcChzLT52aGQuZm9vdGVyLmNydHJfYXBw LCAidGFwIiwgMykpCgkJcmV0dXJuIDA7CgoJaWYgKHMtPnZoZC5mb290ZXIuY3J0cl92ZXIgPiBW SERfQ1VSUkVOVF9WRVJTSU9OKSB7CgkJaWYgKCF0ZXN0X3ZoZF9mbGFnKHMtPmZsYWdzLCBWSERf RkxBR19PUEVOX1FVSUVUKSkKCQkJRVBSSU5URigiV0FSTklORzogJXMgdmhkIGNyZWF0b3IgdmVy c2lvbiAweCUwOHgsICIKCQkJCSJidXQgb25seSB2ZXJzaW9ucyB1cCB0byAweCUwOHggYXJlICIK CQkJCSJzdXBwb3J0ZWQgZm9yIElPXG4iLCBzLT52aGQuZmlsZSwKCQkJCXMtPnZoZC5mb290ZXIu Y3J0cl92ZXIsIFZIRF9DVVJSRU5UX1ZFUlNJT04pOwoKCQlyZXR1cm4gLUVJTlZBTDsKCX0KCgly ZXR1cm4gMDsKfQoKc3RhdGljIHZvaWQKdmhkX2xvZ19vcGVuKHN0cnVjdCB2aGRfc3RhdGUgKnMp CnsKCWNoYXIgYnVmWzVdOwoJdWludDMyX3QgaSwgYWxsb2NhdGVkLCBmdWxsOwoKCWlmICh0ZXN0 X3ZoZF9mbGFnKHMtPmZsYWdzLCBWSERfRkxBR19PUEVOX1FVSUVUKSkKCQlyZXR1cm47CgoJc25w cmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVzIiwgcy0+dmhkLmZvb3Rlci5jcnRyX2FwcCk7Cglp ZiAoIXZoZF90eXBlX2R5bmFtaWMoJnMtPnZoZCkpIHsKCQlEUFJJTlRGKCIlcyB2ZXJzaW9uOiAl cyAweCUwOHhcbiIsCgkJCXMtPnZoZC5maWxlLCBidWYsIHMtPnZoZC5mb290ZXIuY3J0cl92ZXIp OwoJCXJldHVybjsKCX0KCglhbGxvY2F0ZWQgPSAwOwoJZnVsbCAgICAgID0gMDsKCglmb3IgKGkg PSAwOyBpIDwgcy0+YmF0LmJhdC5lbnRyaWVzOyBpKyspIHsKCQlpZiAoYmF0X2VudHJ5KHMsIGkp ICE9IEREX0JMS19VTlVTRUQpCgkJCWFsbG9jYXRlZCsrOwoJCWlmICh0ZXN0X2JhdG1hcChzLCBp KSkKCQkJZnVsbCsrOwoJfQoKCURQUklOVEYoIiVzIHZlcnNpb246ICVzIDB4JTA4eCwgYjogJXUs IGE6ICV1LCBmOiAldSwgbjogJSJQUkl1NjQiXG4iLAoJCXMtPnZoZC5maWxlLCBidWYsIHMtPnZo ZC5mb290ZXIuY3J0cl92ZXIsIHMtPmJhdC5iYXQuZW50cmllcywKCQlhbGxvY2F0ZWQsIGZ1bGws IHMtPm5leHRfZGIpOwp9CgpzdGF0aWMgaW50Cl9fdmhkX29wZW4odGRfZHJpdmVyX3QgKmRyaXZl ciwgY29uc3QgY2hhciAqbmFtZSwgdmhkX2ZsYWdfdCBmbGFncykKewogICAgICAgIGludCBpLCBv X2ZsYWdzLCBlcnI7CglzdHJ1Y3QgdmhkX3N0YXRlICpzOwoKICAgICAgICBEQkcoVExPR19JTkZP LCAidmhkX29wZW46ICVzXG4iLCBuYW1lKTsKCWlmICh0ZXN0X3ZoZF9mbGFnKGZsYWdzLCBWSERf RkxBR19PUEVOX1NUUklDVCkpCgkJbGlidmhkX3NldF9sb2dfbGV2ZWwoMSk7CgoJcyA9IChzdHJ1 Y3QgdmhkX3N0YXRlICopZHJpdmVyLT5kYXRhOwoJbWVtc2V0KHMsIDAsIHNpemVvZihzdHJ1Y3Qg dmhkX3N0YXRlKSk7CgoJcy0+ZmxhZ3MgID0gZmxhZ3M7CglzLT5kcml2ZXIgPSBkcml2ZXI7CgoJ ZXJyID0gdmhkX2luaXRpYWxpemUocyk7CglpZiAoZXJyKQoJCXJldHVybiBlcnI7CgoJb19mbGFn cyA9ICgodGVzdF92aGRfZmxhZyhmbGFncywgVkhEX0ZMQUdfT1BFTl9SRE9OTFkpKSA/IAoJCSAg IFZIRF9PUEVOX1JET05MWSA6IFZIRF9PUEVOX1JEV1IpOwoJaWYgKCh0ZXN0X3ZoZF9mbGFnKGZs YWdzLCBWSERfRkxBR19PUEVOX1JET05MWSkgfHwKICAgICAgICAgICAgICAgIHRlc3RfdmhkX2Zs YWcoZmxhZ3MsIFZIRF9GTEFHX09QRU5fTE9DQUxfQ0FDSEUpKSAmJgoJICAgIHRlc3RfdmhkX2Zs YWcoZmxhZ3MsIFZIRF9GTEFHX09QRU5fTk9fT19ESVJFQ1QpKQoJCXNldF92aGRfZmxhZyhvX2Zs YWdzLCBWSERfT1BFTl9DQUNIRUQpOwoKCWlmICh0ZXN0X3ZoZF9mbGFnKGZsYWdzLCBWSERfRkxB R19PUEVOX1NUUklDVCkpCgkJc2V0X3ZoZF9mbGFnKG9fZmxhZ3MsIFZIRF9PUEVOX1NUUklDVCk7 CgoJZXJyID0gdmhkX29wZW4oJnMtPnZoZCwgbmFtZSwgb19mbGFncyk7CglpZiAoZXJyKSB7CgkJ bGlidmhkX3NldF9sb2dfbGV2ZWwoMSk7CgkJZXJyID0gdmhkX29wZW4oJnMtPnZoZCwgbmFtZSwg b19mbGFncyk7CgkJaWYgKGVycikgewoJCQlFUFJJTlRGKCJVbmFibGUgdG8gb3BlbiBbJXNdICgl ZCkhXG4iLCBuYW1lLCBlcnIpOwoJCQlyZXR1cm4gZXJyOwoJCX0KCX0KCgllcnIgPSB2aGRfY2hl Y2tfdmVyc2lvbihzKTsKCWlmIChlcnIpCgkJZ290byBmYWlsOwoKCXMtPnNwYiA9IHMtPnNwcCA9 IDE7CgoJaWYgKHZoZF90eXBlX2R5bmFtaWMoJnMtPnZoZCkpIHsKCQllcnIgPSB2aGRfaW5pdGlh bGl6ZV9keW5hbWljX2Rpc2socyk7CgkJaWYgKGVycikKCQkJZ290byBmYWlsOwoJfQoKCXZoZF9s b2dfb3BlbihzKTsKCglTUEIgPSBzLT5zcGI7CgoJcy0+dnJlcV9mcmVlX2NvdW50ID0gVkhEX1JF UVNfREFUQTsKCWZvciAoaSA9IDA7IGkgPCBWSERfUkVRU19EQVRBOyBpKyspCgkJcy0+dnJlcV9m cmVlW2ldID0gcy0+dnJlcV9saXN0ICsgaTsKCglkcml2ZXItPmluZm8uc2l6ZSAgICAgICAgPSBz LT52aGQuZm9vdGVyLmN1cnJfc2l6ZSA+PiBWSERfU0VDVE9SX1NISUZUOwoJZHJpdmVyLT5pbmZv LnNlY3Rvcl9zaXplID0gVkhEX1NFQ1RPUl9TSVpFOwoJZHJpdmVyLT5pbmZvLmluZm8gICAgICAg ID0gMDsKCiAgICAgICAgREJHKFRMT0dfSU5GTywgInZoZF9vcGVuOiBkb25lIChzejolIlBSSXU2 NCIsIHNjdDolbHUsIGluZjoldSlcbiIsCgkgICAgZHJpdmVyLT5pbmZvLnNpemUsIGRyaXZlci0+ aW5mby5zZWN0b3Jfc2l6ZSwgZHJpdmVyLT5pbmZvLmluZm8pOwoKCWlmICh0ZXN0X3ZoZF9mbGFn KGZsYWdzLCBWSERfRkxBR19PUEVOX1NUUklDVCkgJiYgCgkgICAgIXRlc3RfdmhkX2ZsYWcoZmxh Z3MsIFZIRF9GTEFHX09QRU5fUkRPTkxZKSkgewoJCWVyciA9IHZoZF9raWxsX2Zvb3RlcihzKTsK CQlpZiAoZXJyKSB7CgkJCURQUklOVEYoIkVSUk9SIGtpbGxpbmcgZm9vdGVyOiAlZFxuIiwgZXJy KTsKCQkJZ290byBmYWlsOwoJCX0KCQlzLT53cml0ZXMrKzsKCX0KCiAgICAgICAgcmV0dXJuIDA7 CgogZmFpbDoKCXZoZF9mcmVlX2JhdChzKTsKCXZoZF9mcmVlX2JpdG1hcF9jYWNoZShzKTsKCXZo ZF9jbG9zZSgmcy0+dmhkKTsKCXZoZF9mcmVlKHMpOwoJcmV0dXJuIGVycjsKfQoKc3RhdGljIGlu dApfdmhkX29wZW4odGRfZHJpdmVyX3QgKmRyaXZlciwgY29uc3QgY2hhciAqbmFtZSwgdGRfZmxh Z190IGZsYWdzKQp7Cgl2aGRfZmxhZ190IHZoZF9mbGFncyA9IDA7CgoJaWYgKGZsYWdzICYgVERf T1BFTl9SRE9OTFkpCgkJdmhkX2ZsYWdzIHw9IFZIRF9GTEFHX09QRU5fUkRPTkxZOwoJaWYgKGZs YWdzICYgVERfT1BFTl9OT19PX0RJUkVDVCkKCQl2aGRfZmxhZ3MgfD0gVkhEX0ZMQUdfT1BFTl9O T19PX0RJUkVDVDsKCWlmIChmbGFncyAmIFREX09QRU5fUVVJRVQpCgkJdmhkX2ZsYWdzIHw9IFZI RF9GTEFHX09QRU5fUVVJRVQ7CglpZiAoZmxhZ3MgJiBURF9PUEVOX1NUUklDVCkKCQl2aGRfZmxh Z3MgfD0gVkhEX0ZMQUdfT1BFTl9TVFJJQ1Q7CglpZiAoZmxhZ3MgJiBURF9PUEVOX1FVRVJZKQoJ CXZoZF9mbGFncyB8PSAoVkhEX0ZMQUdfT1BFTl9RVUVSWSAgfAoJCQkgICAgICBWSERfRkxBR19P UEVOX1FVSUVUICB8CgkJCSAgICAgIFZIRF9GTEFHX09QRU5fUkRPTkxZIHwKCQkJICAgICAgVkhE X0ZMQUdfT1BFTl9OT19DQUNIRSk7CiAgICBpZiAoZmxhZ3MgJiBURF9PUEVOX0xPQ0FMX0NBQ0hF KQogICAgICAgIHZoZF9mbGFncyB8PSBWSERfRkxBR19PUEVOX0xPQ0FMX0NBQ0hFOwoKCS8qIHBy ZS1hbGxvY2F0ZSBmb3IgYWxsIGJ1dCBORlMgYW5kIExWTSBzdG9yYWdlICovCglkcml2ZXItPnN0 b3JhZ2UgPSB0YXBkaXNrX3N0b3JhZ2VfdHlwZShuYW1lKTsKCglpZiAoZHJpdmVyLT5zdG9yYWdl ICE9IFRBUERJU0tfU1RPUkFHRV9UWVBFX05GUyAmJgoJICAgIGRyaXZlci0+c3RvcmFnZSAhPSBU QVBESVNLX1NUT1JBR0VfVFlQRV9MVk0pCgkJdmhkX2ZsYWdzIHw9IFZIRF9GTEFHX09QRU5fUFJF QUxMT0NBVEU7CgoJcmV0dXJuIF9fdmhkX29wZW4oZHJpdmVyLCBuYW1lLCB2aGRfZmxhZ3MpOwp9 CgpzdGF0aWMgdm9pZAp2aGRfbG9nX2Nsb3NlKHN0cnVjdCB2aGRfc3RhdGUgKnMpCnsKCXVpbnQz Ml90IGksIGFsbG9jYXRlZCwgZnVsbDsKCglpZiAodGVzdF92aGRfZmxhZyhzLT5mbGFncywgVkhE X0ZMQUdfT1BFTl9RVUlFVCkpCgkJcmV0dXJuOwoKCWFsbG9jYXRlZCA9IDA7CglmdWxsICAgICAg PSAwOwoKCWZvciAoaSA9IDA7IGkgPCBzLT5iYXQuYmF0LmVudHJpZXM7IGkrKykgewoJCWlmIChi YXRfZW50cnkocywgaSkgIT0gRERfQkxLX1VOVVNFRCkKCQkJYWxsb2NhdGVkKys7CgkJaWYgKHRl c3RfYmF0bWFwKHMsIGkpKQoJCQlmdWxsKys7Cgl9CgoJRFBSSU5URigiJXM6IGI6ICV1LCBhOiAl dSwgZjogJXUsIG46ICUiUFJJdTY0IlxuIiwKCQlzLT52aGQuZmlsZSwgcy0+YmF0LmJhdC5lbnRy aWVzLCBhbGxvY2F0ZWQsIGZ1bGwsIHMtPm5leHRfZGIpOwp9CgpzdGF0aWMgaW50Cl92aGRfY2xv c2UodGRfZHJpdmVyX3QgKmRyaXZlcikKewoJaW50IGVycjsKCXN0cnVjdCB2aGRfc3RhdGUgKnM7 CgkKCURCRyhUTE9HX1dBUk4sICJ2aGRfY2xvc2VcbiIpOwoJcyA9IChzdHJ1Y3QgdmhkX3N0YXRl ICopZHJpdmVyLT5kYXRhOwoKCURQUklOVEYoImdhcHMgd3JpdHRlbi9za2lwcGVkOiAlbGQvJWxk XG4iLCAKCQkJcy0+ZGVidWdfZG9uZV9yZWR1bmRhbnRfd3JpdGVzLAoJCQlzLT5kZWJ1Z19za2lw cGVkX3JlZHVuZGFudF93cml0ZXMpOwoKCS8qIGRvbid0IHdyaXRlIGZvb3RlciBpZiB0YXBkaXNr IGlzIHJlYWQtb25seSAqLwoJaWYgKHRlc3RfdmhkX2ZsYWcocy0+ZmxhZ3MsIFZIRF9GTEFHX09Q RU5fUkRPTkxZKSkKCQlnb3RvIGZyZWU7CgkKCS8qIAoJICogd3JpdGUgZm9vdGVyIGlmOgoJICog ICAtIHdlIGtpbGxlZCBpdCBvbiBvcGVuIChvcGVuZWQgd2l0aCBzdHJpY3QpIAoJICogICAtIHdl J3ZlIHdyaXR0ZW4gZGF0YSBzaW5jZSBvcGVuaW5nCgkgKi8KCWlmICh0ZXN0X3ZoZF9mbGFnKHMt PmZsYWdzLCBWSERfRkxBR19PUEVOX1NUUklDVCkgfHwgcy0+d3JpdGVzKSB7CgkJbWVtY3B5KCZz LT52aGQuYmF0LCAmcy0+YmF0LmJhdCwgc2l6ZW9mKHZoZF9iYXRfdCkpOwoJCWVyciA9IHZoZF93 cml0ZV9mb290ZXIoJnMtPnZoZCwgJnMtPnZoZC5mb290ZXIpOwoJCW1lbXNldCgmcy0+dmhkLmJh dCwgMCwgc2l6ZW9mKHZoZF9iYXRfdCkpOwoKCQlpZiAoZXJyKQoJCQlFUFJJTlRGKCJ3cml0aW5n ICVzIGZvb3RlcjogJWRcbiIsIHMtPnZoZC5maWxlLCBlcnIpOwoKCQlpZiAoIXZoZF9oYXNfYmF0 bWFwKCZzLT52aGQpKQoJCQlnb3RvIGZyZWU7CgoJCWVyciA9IHZoZF93cml0ZV9iYXRtYXAoJnMt PnZoZCwgJnMtPmJhdC5iYXRtYXApOwoJCWlmIChlcnIpCgkJCUVQUklOVEYoIndyaXRpbmcgJXMg YmF0bWFwOiAlZFxuIiwgcy0+dmhkLmZpbGUsIGVycik7Cgl9CgogZnJlZToKCXZoZF9sb2dfY2xv c2Uocyk7Cgl2aGRfZnJlZV9iYXQocyk7Cgl2aGRfZnJlZV9iaXRtYXBfY2FjaGUocyk7Cgl2aGRf Y2xvc2UoJnMtPnZoZCk7Cgl2aGRfZnJlZShzKTsKCgltZW1zZXQocywgMCwgc2l6ZW9mKHN0cnVj dCB2aGRfc3RhdGUpKTsKCglyZXR1cm4gMDsKfQoKaW50CnZoZF92YWxpZGF0ZV9wYXJlbnQodGRf ZHJpdmVyX3QgKmNoaWxkX2RyaXZlciwKCQkgICAgdGRfZHJpdmVyX3QgKnBhcmVudF9kcml2ZXIs IHRkX2ZsYWdfdCBmbGFncykKewoJc3RydWN0IHZoZF9zdGF0ZSAqY2hpbGQgID0gKHN0cnVjdCB2 aGRfc3RhdGUgKiljaGlsZF9kcml2ZXItPmRhdGE7CglzdHJ1Y3QgdmhkX3N0YXRlICpwYXJlbnQ7 CgoJaWYgKHBhcmVudF9kcml2ZXItPnR5cGUgIT0gRElTS19UWVBFX1ZIRCkgewoJCWlmIChjaGls ZF9kcml2ZXItPnR5cGUgIT0gRElTS19UWVBFX1ZIRCkKCQkJcmV0dXJuIC1FSU5WQUw7CgkJaWYg KGNoaWxkLT52aGQuZm9vdGVyLnR5cGUgIT0gSERfVFlQRV9ESUZGKQoJCQlyZXR1cm4gLUVJTlZB TDsKCQlpZiAoIXZoZF9wYXJlbnRfcmF3KCZjaGlsZC0+dmhkKSkKCQkJcmV0dXJuIC1FSU5WQUw7 CgkJcmV0dXJuIDA7Cgl9CgoJcGFyZW50ID0gKHN0cnVjdCB2aGRfc3RhdGUgKilwYXJlbnRfZHJp dmVyLT5kYXRhOwoKCS8qIAoJICogVGhpcyBjaGVjayByZW1vdmVkIGJlY2F1c2Ugb2YgY2FzZXMg bGlrZToKCSAqICAgLSBwYXJlbnQgVkhEIG1hcmtlZCBhcyAnaGlkZGVuJwoJICogICAtIHBhcmVu dCBWSEQgbW9kaWZpZWQgZHVyaW5nIGNvYWxlc2NlCgkgKi8KCS8qCglpZiAoc3RhdChwYXJlbnQt PnZoZC5maWxlLCAmc3RhdHMpKSB7CgkJRFBSSU5URigiRVJST1Igc3RhdGluZyBwYXJlbnQgZmls ZSAlc1xuIiwgcGFyZW50LT52aGQuZmlsZSk7CgkJcmV0dXJuIC1lcnJubzsKCX0KCglpZiAoY2hp bGQtPmhkci5wcnRfdHMgIT0gdmhkX3RpbWUoc3RhdHMuc3RfbXRpbWUpKSB7CgkJRFBSSU5URigi RVJST1I6IHBhcmVudCBmaWxlIGhhcyBiZWVuIG1vZGlmaWVkIHNpbmNlICIKCQkJInNuYXBzaG90 LiAgQ2hpbGQgaW1hZ2Ugbm8gbG9uZ2VyIHZhbGlkLlxuIik7CgkJcmV0dXJuIC1FSU5WQUw7Cgl9 CgkqLwoKCWlmICh1dWlkX2NvbXBhcmUoY2hpbGQtPnZoZC5oZWFkZXIucHJ0X3V1aWQsIHBhcmVu dC0+dmhkLmZvb3Rlci51dWlkKSkgewoJCURQUklOVEYoIkVSUk9SOiAlczogJXMsICVzOiBwYXJl bnQgdXVpZCBoYXMgY2hhbmdlZCBzaW5jZSAiCgkJCSJzbmFwc2hvdC4gIENoaWxkIGltYWdlIG5v IGxvbmdlciB2YWxpZC5cbiIsCgkJCV9fZnVuY19fLCBjaGlsZC0+dmhkLmZpbGUsIHBhcmVudC0+ dmhkLmZpbGUpOwoJCXJldHVybiAtRUlOVkFMOwoJfQoKCS8qIFRPRE86IGNvbXBhcmUgc2l6ZXMg Ki8KCQoJcmV0dXJuIDA7Cn0KCmludAp2aGRfZ2V0X3BhcmVudF9pZCh0ZF9kcml2ZXJfdCAqZHJp dmVyLCB0ZF9kaXNrX2lkX3QgKmlkKQp7CglpbnQgZXJyOwoJY2hhciAqcGFyZW50OwoJc3RydWN0 IHZoZF9zdGF0ZSAqczsKCWludCBmbGFnczsKCglEQkcoVExPR19EQkcsICJcbiIpOwoJZmxhZ3Mg PSBpZC0+ZmxhZ3M7CgltZW1zZXQoaWQsIDAsIHNpemVvZih0ZF9kaXNrX2lkX3QpKTsKCglzID0g KHN0cnVjdCB2aGRfc3RhdGUgKilkcml2ZXItPmRhdGE7CgoJaWYgKHMtPnZoZC5mb290ZXIudHlw ZSAhPSBIRF9UWVBFX0RJRkYpCgkJcmV0dXJuIFREX05PX1BBUkVOVDsKCgllcnIgPSB2aGRfcGFy ZW50X2xvY2F0b3JfZ2V0KCZzLT52aGQsICZwYXJlbnQpOwoJaWYgKGVycikKCQlyZXR1cm4gZXJy OwoKCWlkLT5uYW1lICAgPSBwYXJlbnQ7CglpZC0+dHlwZSAgID0gdmhkX3BhcmVudF9yYXcoJnMt PnZoZCkgPyBESVNLX1RZUEVfQUlPIDogRElTS19UWVBFX1ZIRDsKCWlkLT5mbGFncyAgPSBmbGFn c3xURF9PUEVOX1NIQVJFQUJMRXxURF9PUEVOX1JET05MWTsKCglyZXR1cm4gMDsKfQoKc3RhdGlj IGlubGluZSB2b2lkCmNsZWFyX3JlcV9saXN0KHN0cnVjdCB2aGRfcmVxX2xpc3QgKmxpc3QpCnsK CWxpc3QtPmhlYWQgPSBsaXN0LT50YWlsID0gTlVMTDsKfQoKc3RhdGljIGlubGluZSB2b2lkCmFk ZF90b190YWlsKHN0cnVjdCB2aGRfcmVxX2xpc3QgKmxpc3QsIHN0cnVjdCB2aGRfcmVxdWVzdCAq ZSkKewoJaWYgKCFsaXN0LT5oZWFkKSAKCQlsaXN0LT5oZWFkID0gbGlzdC0+dGFpbCA9IGU7Cgll bHNlIAoJCWxpc3QtPnRhaWwgPSBsaXN0LT50YWlsLT5uZXh0ID0gZTsKfQoKc3RhdGljIGlubGlu ZSBpbnQKcmVtb3ZlX2Zyb21fcmVxX2xpc3Qoc3RydWN0IHZoZF9yZXFfbGlzdCAqbGlzdCwgc3Ry dWN0IHZoZF9yZXF1ZXN0ICplKQp7CglzdHJ1Y3QgdmhkX3JlcXVlc3QgKmkgPSBsaXN0LT5oZWFk OwoKCWlmIChsaXN0LT5oZWFkID09IGUpIHsKCQlpZiAobGlzdC0+dGFpbCA9PSBlKQoJCQljbGVh cl9yZXFfbGlzdChsaXN0KTsKCQllbHNlCgkJCWxpc3QtPmhlYWQgPSBsaXN0LT5oZWFkLT5uZXh0 OwoJCXJldHVybiAwOwoJfQoKCXdoaWxlIChpLT5uZXh0KSB7CgkJaWYgKGktPm5leHQgPT0gZSkg ewoJCQlpZiAobGlzdC0+dGFpbCA9PSBlKSB7CgkJCQlpLT5uZXh0ID0gTlVMTDsKCQkJCWxpc3Qt PnRhaWwgPSBpOwoJCQl9IGVsc2UKCQkJCWktPm5leHQgPSBpLT5uZXh0LT5uZXh0OwoJCQlyZXR1 cm4gMDsKCQl9CgkJaSA9IGktPm5leHQ7Cgl9CgoJcmV0dXJuIC1FSU5WQUw7Cn0KCnN0YXRpYyBp bmxpbmUgdm9pZAppbml0X3ZoZF9yZXF1ZXN0KHN0cnVjdCB2aGRfc3RhdGUgKnMsIHN0cnVjdCB2 aGRfcmVxdWVzdCAqcmVxKQp7CgltZW1zZXQocmVxLCAwLCBzaXplb2Yoc3RydWN0IHZoZF9yZXF1 ZXN0KSk7CglyZXEtPnN0YXRlID0gczsKfQoKc3RhdGljIGlubGluZSB2b2lkCmluaXRfdHgoc3Ry dWN0IHZoZF90cmFuc2FjdGlvbiAqdHgpCnsKCW1lbXNldCh0eCwgMCwgc2l6ZW9mKHN0cnVjdCB2 aGRfdHJhbnNhY3Rpb24pKTsKfQoKc3RhdGljIGlubGluZSB2b2lkCmFkZF90b190cmFuc2FjdGlv bihzdHJ1Y3QgdmhkX3RyYW5zYWN0aW9uICp0eCwgc3RydWN0IHZoZF9yZXF1ZXN0ICpyKQp7CglB U1NFUlQoIXR4LT5jbG9zZWQpOwoKCXItPnR4ID0gdHg7Cgl0eC0+c3RhcnRlZCsrOwoJYWRkX3Rv X3RhaWwoJnR4LT5yZXF1ZXN0cywgcik7CglzZXRfdmhkX2ZsYWcodHgtPnN0YXR1cywgVkhEX0ZM QUdfVFhfTElWRSk7CgoJREJHKFRMT0dfREJHLCAiYmxrOiAweCUwNCJQUkl4NjQiLCBsc2VjOiAw eCUwOCJQUkl4NjQiLCB0eDogJXAsICIKCSAgICAic3RhcnRlZDogJWQsIGZpbmlzaGVkOiAlZCwg c3RhdHVzOiAldVxuIiwKCSAgICByLT50cmVxLnNlYyAvIFNQQiwgci0+dHJlcS5zZWMsIHR4LAoJ ICAgIHR4LT5zdGFydGVkLCB0eC0+ZmluaXNoZWQsIHR4LT5zdGF0dXMpOwp9CgpzdGF0aWMgaW5s aW5lIGludAp0cmFuc2FjdGlvbl9jb21wbGV0ZWQoc3RydWN0IHZoZF90cmFuc2FjdGlvbiAqdHgp CnsKCXJldHVybiAodHgtPnN0YXJ0ZWQgPT0gdHgtPmZpbmlzaGVkKTsKfQoKc3RhdGljIGlubGlu ZSB2b2lkCmluaXRfYmF0KHN0cnVjdCB2aGRfc3RhdGUgKnMpCnsKCXMtPmJhdC5yZXEudHggICAg ID0gTlVMTDsKCXMtPmJhdC5yZXEubmV4dCAgID0gTlVMTDsKCXMtPmJhdC5yZXEuZXJyb3IgID0g MDsKCXMtPmJhdC5wYndfYmxrICAgID0gMDsKCXMtPmJhdC5wYndfb2Zmc2V0ID0gMDsKCXMtPmJh dC5zdGF0dXMgICAgID0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkCmxvY2tfYmF0KHN0cnVjdCB2 aGRfc3RhdGUgKnMpCnsKCXNldF92aGRfZmxhZyhzLT5iYXQuc3RhdHVzLCBWSERfRkxBR19CQVRf TE9DS0VEKTsKfQoKc3RhdGljIGlubGluZSB2b2lkCnVubG9ja19iYXQoc3RydWN0IHZoZF9zdGF0 ZSAqcykKewoJY2xlYXJfdmhkX2ZsYWcocy0+YmF0LnN0YXR1cywgVkhEX0ZMQUdfQkFUX0xPQ0tF RCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50CmJhdF9sb2NrZWQoc3RydWN0IHZoZF9zdGF0ZSAqcykK ewoJcmV0dXJuIHRlc3RfdmhkX2ZsYWcocy0+YmF0LnN0YXR1cywgVkhEX0ZMQUdfQkFUX0xPQ0tF RCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZAppbml0X3ZoZF9iaXRtYXAoc3RydWN0IHZoZF9zdGF0 ZSAqcywgc3RydWN0IHZoZF9iaXRtYXAgKmJtKQp7CglibS0+YmxrICAgID0gMDsKCWJtLT5zZXFu byAgPSAwOwoJYm0tPnN0YXR1cyA9IDA7Cglpbml0X3R4KCZibS0+dHgpOwoJY2xlYXJfcmVxX2xp c3QoJmJtLT5xdWV1ZSk7CgljbGVhcl9yZXFfbGlzdCgmYm0tPndhaXRpbmcpOwoJbWVtc2V0KGJt LT5tYXAsIDAsIHZoZF9zZWN0b3JzX3RvX2J5dGVzKHMtPmJtX3NlY3MpKTsKCW1lbXNldChibS0+ c2hhZG93LCAwLCB2aGRfc2VjdG9yc190b19ieXRlcyhzLT5ibV9zZWNzKSk7Cglpbml0X3ZoZF9y ZXF1ZXN0KHMsICZibS0+cmVxKTsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgdmhkX2JpdG1hcCAq CmdldF9iaXRtYXAoc3RydWN0IHZoZF9zdGF0ZSAqcywgdWludDMyX3QgYmxvY2spCnsKCWludCBp OwoJc3RydWN0IHZoZF9iaXRtYXAgKmJtOwoKCWZvciAoaSA9IDA7IGkgPCBWSERfQ0FDSEVfU0la RTsgaSsrKSB7CgkJYm0gPSBzLT5iaXRtYXBbaV07CgkJaWYgKGJtICYmIGJtLT5ibGsgPT0gYmxv Y2spCgkJCXJldHVybiBibTsKCX0KCglyZXR1cm4gTlVMTDsKfQoKc3RhdGljIGlubGluZSB2b2lk CmxvY2tfYml0bWFwKHN0cnVjdCB2aGRfYml0bWFwICpibSkKewoJc2V0X3ZoZF9mbGFnKGJtLT5z dGF0dXMsIFZIRF9GTEFHX0JNX0xPQ0tFRCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZAp1bmxvY2tf Yml0bWFwKHN0cnVjdCB2aGRfYml0bWFwICpibSkKewoJY2xlYXJfdmhkX2ZsYWcoYm0tPnN0YXR1 cywgVkhEX0ZMQUdfQk1fTE9DS0VEKTsKfQoKc3RhdGljIGlubGluZSBpbnQKYml0bWFwX2xvY2tl ZChzdHJ1Y3QgdmhkX2JpdG1hcCAqYm0pCnsKCXJldHVybiB0ZXN0X3ZoZF9mbGFnKGJtLT5zdGF0 dXMsIFZIRF9GTEFHX0JNX0xPQ0tFRCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50CmJpdG1hcF92YWxp ZChzdHJ1Y3QgdmhkX2JpdG1hcCAqYm0pCnsKCXJldHVybiAhdGVzdF92aGRfZmxhZyhibS0+c3Rh dHVzLCBWSERfRkxBR19CTV9SRUFEX1BFTkRJTkcpOwp9CgpzdGF0aWMgaW5saW5lIGludApiaXRt YXBfaW5fdXNlKHN0cnVjdCB2aGRfYml0bWFwICpibSkKewoJcmV0dXJuICh0ZXN0X3ZoZF9mbGFn KGJtLT5zdGF0dXMsIFZIRF9GTEFHX0JNX1JFQURfUEVORElORykgIHx8CgkJdGVzdF92aGRfZmxh ZyhibS0+c3RhdHVzLCBWSERfRkxBR19CTV9XUklURV9QRU5ESU5HKSB8fAoJCXRlc3RfdmhkX2Zs YWcoYm0tPnR4LnN0YXR1cywgVkhEX0ZMQUdfVFhfVVBEQVRFX0JBVCkgfHwKCQlibS0+d2FpdGlu Zy5oZWFkIHx8IGJtLT50eC5yZXF1ZXN0cy5oZWFkIHx8IGJtLT5xdWV1ZS5oZWFkKTsKfQoKc3Rh dGljIGlubGluZSBpbnQKYml0bWFwX2Z1bGwoc3RydWN0IHZoZF9zdGF0ZSAqcywgc3RydWN0IHZo ZF9iaXRtYXAgKmJtKQp7CglpbnQgaSwgbjsKCgluID0gcy0+c3BiID4+IDM7Cglmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKQoJCWlmIChibS0+bWFwW2ldICE9IChjaGFyKTB4RkYpCgkJCXJldHVybiAw OwoKCURCRyhUTE9HX0RCRywgImJpdG1hcCAweCUwNHggZnVsbFxuIiwgYm0tPmJsayk7CglyZXR1 cm4gMTsKfQoKc3RhdGljIHN0cnVjdCB2aGRfYml0bWFwICoKcmVtb3ZlX2xydV9iaXRtYXAoc3Ry dWN0IHZoZF9zdGF0ZSAqcykKewoJaW50IGksIGlkeCA9IDA7Cgl1aW50NjRfdCBzZXEgPSBzLT5i bV9scnU7CglzdHJ1Y3QgdmhkX2JpdG1hcCAqYm0sICpscnUgPSBOVUxMOwoKCWZvciAoaSA9IDA7 IGkgPCBWSERfQ0FDSEVfU0laRTsgaSsrKSB7CgkJYm0gPSBzLT5iaXRtYXBbaV07CgkJaWYgKGJt ICYmIGJtLT5zZXFubyA8IHNlcSAmJiAhYml0bWFwX2xvY2tlZChibSkpIHsKCQkJaWR4ID0gaTsK CQkJbHJ1ID0gYm07CgkJCXNlcSA9IGxydS0+c2Vxbm87CgkJfQoJfQoKCWlmIChscnUpIHsKCQlz LT5iaXRtYXBbaWR4XSA9IE5VTEw7CgkJQVNTRVJUKCFiaXRtYXBfaW5fdXNlKGxydSkpOwoJfQoK CXJldHVybiAgbHJ1Owp9CgpzdGF0aWMgaW50CmFsbG9jX3ZoZF9iaXRtYXAoc3RydWN0IHZoZF9z dGF0ZSAqcywgc3RydWN0IHZoZF9iaXRtYXAgKipiaXRtYXAsIHVpbnQzMl90IGJsaykKewoJc3Ry dWN0IHZoZF9iaXRtYXAgKmJtOwoJCgkqYml0bWFwID0gTlVMTDsKCglpZiAocy0+Ym1fZnJlZV9j b3VudCA+IDApIHsKCQlibSA9IHMtPmJpdG1hcF9mcmVlWy0tcy0+Ym1fZnJlZV9jb3VudF07Cgl9 IGVsc2UgewoJCWJtID0gcmVtb3ZlX2xydV9iaXRtYXAocyk7CgkJaWYgKCFibSkKCQkJcmV0dXJu IC1FQlVTWTsKCX0KCglpbml0X3ZoZF9iaXRtYXAocywgYm0pOwoJYm0tPmJsayA9IGJsazsKCSpi aXRtYXAgPSBibTsKCglyZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSB1aW50NjRfdApfX2JpdG1h cF9scnVfc2Vxbm8oc3RydWN0IHZoZF9zdGF0ZSAqcykKewoJaW50IGk7CglzdHJ1Y3QgdmhkX2Jp dG1hcCAqYm07CgoJaWYgKHMtPmJtX2xydSA9PSAweGZmZmZmZmZmKSB7CgkJcy0+Ym1fbHJ1ID0g MDsKCQlmb3IgKGkgPSAwOyBpIDwgVkhEX0NBQ0hFX1NJWkU7IGkrKykgewoJCQlibSA9IHMtPmJp dG1hcFtpXTsKCQkJaWYgKGJtKSB7CgkJCQlibS0+c2Vxbm8gPj49IDE7CgkJCQlpZiAoYm0tPnNl cW5vID4gcy0+Ym1fbHJ1KQoJCQkJCXMtPmJtX2xydSA9IGJtLT5zZXFubzsKCQkJfQoJCX0KCX0K CglyZXR1cm4gKytzLT5ibV9scnU7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZAp0b3VjaF9iaXRtYXAo c3RydWN0IHZoZF9zdGF0ZSAqcywgc3RydWN0IHZoZF9iaXRtYXAgKmJtKQp7CglibS0+c2Vxbm8g PSBfX2JpdG1hcF9scnVfc2Vxbm8ocyk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZAppbnN0YWxsX2Jp dG1hcChzdHJ1Y3QgdmhkX3N0YXRlICpzLCBzdHJ1Y3QgdmhkX2JpdG1hcCAqYm0pCnsKCWludCBp OwoJZm9yIChpID0gMDsgaSA8IFZIRF9DQUNIRV9TSVpFOyBpKyspIHsKCQlpZiAoIXMtPmJpdG1h cFtpXSkgewoJCQl0b3VjaF9iaXRtYXAocywgYm0pOwoJCQlzLT5iaXRtYXBbaV0gPSBibTsKCQkJ cmV0dXJuOwoJCX0KCX0KCglBU1NFUlQoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZApmcmVlX3Zo ZF9iaXRtYXAoc3RydWN0IHZoZF9zdGF0ZSAqcywgc3RydWN0IHZoZF9iaXRtYXAgKmJtKQp7Cglp bnQgaTsKCglmb3IgKGkgPSAwOyBpIDwgVkhEX0NBQ0hFX1NJWkU7IGkrKykKCQlpZiAocy0+Yml0 bWFwW2ldID09IGJtKQoJCQlicmVhazsKCglBU1NFUlQoIWJpdG1hcF9sb2NrZWQoYm0pKTsKCUFT U0VSVCghYml0bWFwX2luX3VzZShibSkpOwoJQVNTRVJUKGkgPCBWSERfQ0FDSEVfU0laRSk7CgoJ cy0+Yml0bWFwW2ldID0gTlVMTDsKCXMtPmJpdG1hcF9mcmVlW3MtPmJtX2ZyZWVfY291bnQrK10g PSBibTsKfQoKc3RhdGljIGludApyZWFkX2JpdG1hcF9jYWNoZShzdHJ1Y3QgdmhkX3N0YXRlICpz LCB1aW50NjRfdCBzZWN0b3IsIHVpbnQ4X3Qgb3ApCnsKCXVpbnQzMl90IGJsaywgc2VjOwoJc3Ry dWN0IHZoZF9iaXRtYXAgKmJtOwoKCS8qIGluIGZpeGVkIGRpc2tzLCBldmVyeSBibG9jayBpcyBw cmVzZW50ICovCglpZiAocy0+dmhkLmZvb3Rlci50eXBlID09IEhEX1RZUEVfRklYRUQpIAoJCXJl dHVybiBWSERfQk1fQklUX1NFVDsKCgkvKiB0aGUgZXh0ZW50IHRoZSBsb2dpY2FsIHNlY3RvciBm YWxscyBpbiAqLwoJYmxrID0gc2VjdG9yIC8gcy0+c3BiOwoKCS8qIG9mZnNldCB3aXRoaW4gdGhl IGV4dGVudCB0aGUgbG9naWNhbCBzZWN0b3IgaXMgbG9jYXRlZCAqLwoJc2VjID0gc2VjdG9yICUg cy0+c3BiOwoKCWlmIChibGsgPiBzLT52aGQuaGVhZGVyLm1heF9iYXRfc2l6ZSkgewoJCURQUklO VEYoIkVSUk9SOiBzZWMgJSJQUkl1NjQiIG91dCBvZiByYW5nZSwgb3AgPSAlZFxuIiwKCQkJc2Vj dG9yLCBvcCk7CgkJcmV0dXJuIC1FSU5WQUw7Cgl9CgoJaWYgKGJhdF9lbnRyeShzLCBibGspID09 IEREX0JMS19VTlVTRUQpIHsKCQlpZiAob3AgPT0gVkhEX09QX0RBVEFfV1JJVEUgJiYKCQkgICAg cy0+YmF0LnBid19ibGsgIT0gYmxrICYmIGJhdF9sb2NrZWQocykpCgkJCXJldHVybiBWSERfQk1f QkFUX0xPQ0tFRDsKCgkJcmV0dXJuIFZIRF9CTV9CQVRfQ0xFQVI7Cgl9CgoJaWYgKHRlc3RfYmF0 bWFwKHMsIGJsaykpIHsKCQlEQkcoVExPR19EQkcsICJiYXRtYXAgc2V0IGZvciAweCUwNHhcbiIs IGJsayk7CgkJcmV0dXJuIFZIRF9CTV9CSVRfU0VUOwoJfQoKCWJtID0gZ2V0X2JpdG1hcChzLCBi bGspOwoJaWYgKCFibSkKCQlyZXR1cm4gVkhEX0JNX05PVF9DQUNIRUQ7CgoJLyogYnVtcCBscnUg Y291bnQgKi8KCXRvdWNoX2JpdG1hcChzLCBibSk7CgoJaWYgKHRlc3RfdmhkX2ZsYWcoYm0tPnN0 YXR1cywgVkhEX0ZMQUdfQk1fUkVBRF9QRU5ESU5HKSkKCQlyZXR1cm4gVkhEX0JNX1JFQURfUEVO RElORzsKCglyZXR1cm4gKCh2aGRfYml0bWFwX3Rlc3QoJnMtPnZoZCwgYm0tPm1hcCwgc2VjKSkg PyAKCQlWSERfQk1fQklUX1NFVCA6IFZIRF9CTV9CSVRfQ0xFQVIpOwp9CgpzdGF0aWMgaW50CnJl YWRfYml0bWFwX2NhY2hlX3NwYW4oc3RydWN0IHZoZF9zdGF0ZSAqcywgCgkJICAgICAgIHVpbnQ2 NF90IHNlY3RvciwgaW50IG5yX3NlY3MsIGludCB2YWx1ZSkKewoJaW50IHJldDsKCXVpbnQzMl90 IGJsaywgc2VjOwoJc3RydWN0IHZoZF9iaXRtYXAgKmJtOwoKCS8qIGluIGZpeGVkIGRpc2tzLCBl dmVyeSBibG9jayBpcyBwcmVzZW50ICovCglpZiAocy0+dmhkLmZvb3Rlci50eXBlID09IEhEX1RZ UEVfRklYRUQpIAoJCXJldHVybiBucl9zZWNzOwoKCXNlYyA9IHNlY3RvciAlIHMtPnNwYjsKCWJs ayA9IHNlY3RvciAvIHMtPnNwYjsKCglpZiAodGVzdF9iYXRtYXAocywgYmxrKSkKCQlyZXR1cm4g TUlOKG5yX3NlY3MsIHMtPnNwYiAtIHNlYyk7CgoJYm0gID0gZ2V0X2JpdG1hcChzLCBibGspOwoJ CglBU1NFUlQoYm0gJiYgYml0bWFwX3ZhbGlkKGJtKSk7CgoJZm9yIChyZXQgPSAwOyBzZWMgPCBz LT5zcGIgJiYgcmV0IDwgbnJfc2Vjczsgc2VjKyssIHJldCsrKQoJCWlmICh2aGRfYml0bWFwX3Rl c3QoJnMtPnZoZCwgYm0tPm1hcCwgc2VjKSAhPSB2YWx1ZSkKCQkJYnJlYWs7CgoJcmV0dXJuIHJl dDsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgdmhkX3JlcXVlc3QgKgphbGxvY192aGRfcmVxdWVz dChzdHJ1Y3QgdmhkX3N0YXRlICpzKQp7CglzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcSA9IE5VTEw7 CgkKCWlmIChzLT52cmVxX2ZyZWVfY291bnQgPiAwKSB7CgkJcmVxID0gcy0+dnJlcV9mcmVlWy0t cy0+dnJlcV9mcmVlX2NvdW50XTsKCQlBU1NFUlQocmVxLT50cmVxLnNlY3MgPT0gMCk7CgkJaW5p dF92aGRfcmVxdWVzdChzLCByZXEpOwoJCXJldHVybiByZXE7Cgl9CgoJcmV0dXJuIE5VTEw7Cn0K CnN0YXRpYyBpbmxpbmUgdm9pZApmcmVlX3ZoZF9yZXF1ZXN0KHN0cnVjdCB2aGRfc3RhdGUgKnMs IHN0cnVjdCB2aGRfcmVxdWVzdCAqcmVxKQp7CgltZW1zZXQocmVxLCAwLCBzaXplb2Yoc3RydWN0 IHZoZF9yZXF1ZXN0KSk7CglzLT52cmVxX2ZyZWVbcy0+dnJlcV9mcmVlX2NvdW50KytdID0gcmVx Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQKYWlvX3JlYWQoc3RydWN0IHZoZF9zdGF0ZSAqcywgc3Ry dWN0IHZoZF9yZXF1ZXN0ICpyZXEsIHVpbnQ2NF90IG9mZnNldCkKewoJc3RydWN0IHRpb2NiICp0 aW9jYiA9ICZyZXEtPnRpb2NiOwoKCXRkX3ByZXBfcmVhZCh0aW9jYiwgcy0+dmhkLmZkLCByZXEt PnRyZXEuYnVmLAoJCSAgICAgdmhkX3NlY3RvcnNfdG9fYnl0ZXMocmVxLT50cmVxLnNlY3MpLAoJ CSAgICAgb2Zmc2V0LCB2aGRfY29tcGxldGUsIHJlcSk7Cgl0ZF9xdWV1ZV90aW9jYihzLT5kcml2 ZXIsIHRpb2NiKTsKCglzLT5xdWV1ZWQrKzsKCXMtPnJlYWRzKys7CglzLT5yZWFkX3NpemUgKz0g cmVxLT50cmVxLnNlY3M7CglUUkFDRShzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkCmFpb193cml0 ZShzdHJ1Y3QgdmhkX3N0YXRlICpzLCBzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcSwgdWludDY0X3Qg b2Zmc2V0KQp7CglzdHJ1Y3QgdGlvY2IgKnRpb2NiID0gJnJlcS0+dGlvY2I7CgoJdGRfcHJlcF93 cml0ZSh0aW9jYiwgcy0+dmhkLmZkLCByZXEtPnRyZXEuYnVmLAoJCSAgICAgIHZoZF9zZWN0b3Jz X3RvX2J5dGVzKHJlcS0+dHJlcS5zZWNzKSwKCQkgICAgICBvZmZzZXQsIHZoZF9jb21wbGV0ZSwg cmVxKTsKCXRkX3F1ZXVlX3Rpb2NiKHMtPmRyaXZlciwgdGlvY2IpOwoKCXMtPnF1ZXVlZCsrOwoJ cy0+d3JpdGVzKys7CglzLT53cml0ZV9zaXplICs9IHJlcS0+dHJlcS5zZWNzOwoJVFJBQ0Uocyk7 Cn0KCi8qKgogKiBSZXNlcnZlcyBhIG5ldyBleHRlbnQuCiAqCiAqIEByZXR1cm5zIGEgNjQtYml0 IHVuc2lnbmVkIGludGVnZXIgd2hlcmUgdGhlIGVycm9yIGNvZGUgaXMgc3RvcmVkIGluIHRoZQog KiB1cHBlciAzMiBiaXRzIGFuZCB0aGUgcmVzZXJ2ZWQgYmxvY2sgbnVtYmVyIGlzIHN0b3JlZCBp biB0aGUgbG93ZXIgMzIgYml0cy4KICogSWYgYW4gZXJyb3IgaXMgcmV0dXJuZWQgKHRoZSB1cHBl ciAzMiBiaXRzIGFyZSBub3QgemVybyksIHRoZSBsb3dlciAzMiBiaXRzCiAqIGFyZSB1bmRlZmlu ZWQuCiAqLwpzdGF0aWMgaW5saW5lIHVpbnQ2NF90CnJlc2VydmVfbmV3X2Jsb2NrKHN0cnVjdCB2 aGRfc3RhdGUgKnMsIHVpbnQzMl90IGJsaykKewoJaW50IGdhcCA9IDA7CgoJQVNTRVJUKCF0ZXN0 X3ZoZF9mbGFnKHMtPmJhdC5zdGF0dXMsIFZIRF9GTEFHX0JBVF9XUklURV9TVEFSVEVEKSk7CgoJ LyogZGF0YSByZWdpb24gb2Ygc2VnbWVudCBzaG91bGQgYmVnaW4gb24gcGFnZSBib3VuZGFyeSAq LwoJaWYgKChzLT5uZXh0X2RiICsgcy0+Ym1fc2VjcykgJSBzLT5zcHApCgkJZ2FwID0gKHMtPnNw cCAtICgocy0+bmV4dF9kYiArIHMtPmJtX3NlY3MpICUgcy0+c3BwKSk7CgoJaWYgKHMtPm5leHRf ZGIgKyBnYXAgPiBVSU5UX01BWCkKCQlyZXR1cm4gKHVpbnQ2NF90KUVOT1NQQyA8PCAzMjsKCglz LT5iYXQucGJ3X2JsayAgICA9IGJsazsKCXMtPmJhdC5wYndfb2Zmc2V0ID0gcy0+bmV4dF9kYiAr IGdhcDsKCglyZXR1cm4gcy0+bmV4dF9kYjsKfQoKc3RhdGljIGludApzY2hlZHVsZV9iYXRfd3Jp dGUoc3RydWN0IHZoZF9zdGF0ZSAqcykKewoJaW50IGk7Cgl1aW50MzJfdCBibGs7CgljaGFyICpi dWY7Cgl1aW50NjRfdCBvZmZzZXQ7CglzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcTsKCglBU1NFUlQo YmF0X2xvY2tlZChzKSk7CgoJcmVxID0gJnMtPmJhdC5yZXE7CglidWYgPSBzLT5iYXQuYmF0X2J1 ZjsKCWJsayA9IHMtPmJhdC5wYndfYmxrOwoKCWluaXRfdmhkX3JlcXVlc3QocywgcmVxKTsKCW1l bWNweShidWYsICZiYXRfZW50cnkocywgYmxrIC0gKGJsayAlIDEyOCkpLCA1MTIpOwoKCSgodWlu dDMyX3QgKilidWYpW2JsayAlIDEyOF0gPSBzLT5iYXQucGJ3X29mZnNldDsKCglmb3IgKGkgPSAw OyBpIDwgMTI4OyBpKyspCgkJQkUzMl9PVVQoJigodWludDMyX3QgKilidWYpW2ldKTsKCglvZmZz ZXQgICAgICAgICA9IHMtPnZoZC5oZWFkZXIudGFibGVfb2Zmc2V0ICsgKGJsayAtIChibGsgJSAx MjgpKSAqIDQ7CglyZXEtPnRyZXEuc2VjcyA9IDE7CglyZXEtPnRyZXEuYnVmICA9IGJ1ZjsKCXJl cS0+b3AgICAgICAgID0gVkhEX09QX0JBVF9XUklURTsKCXJlcS0+bmV4dCAgICAgID0gTlVMTDsK CglhaW9fd3JpdGUocywgcmVxLCBvZmZzZXQpOwoJc2V0X3ZoZF9mbGFnKHMtPmJhdC5zdGF0dXMs IFZIRF9GTEFHX0JBVF9XUklURV9TVEFSVEVEKTsKCglEQkcoVExPR19EQkcsICJibGs6IDB4JTA0 eCwgcGJ3bzogMHglMDgiUFJJeDY0IiwgIgoJICAgICJ0YWJsZV9vZmZzZXQ6IDB4JTA4IlBSSXg2 NCJcbiIsIGJsaywgcy0+YmF0LnBid19vZmZzZXQsIG9mZnNldCk7CgoJcmV0dXJuIDA7Cn0KCnN0 YXRpYyB2b2lkCnNjaGVkdWxlX3plcm9fYm1fd3JpdGUoc3RydWN0IHZoZF9zdGF0ZSAqcywKCQkg ICAgICAgc3RydWN0IHZoZF9iaXRtYXAgKmJtLCB1aW50NjRfdCBsYl9lbmQpCnsKCXVpbnQ2NF90 IG9mZnNldDsKCXN0cnVjdCB2aGRfcmVxdWVzdCAqcmVxID0gJnMtPmJhdC56ZXJvX3JlcTsKCglp bml0X3ZoZF9yZXF1ZXN0KHMsIHJlcSk7CgoJb2Zmc2V0ICAgICAgICAgPSB2aGRfc2VjdG9yc190 b19ieXRlcyhsYl9lbmQpOwoJcmVxLT5vcCAgICAgICAgPSBWSERfT1BfWkVST19CTV9XUklURTsK CXJlcS0+dHJlcS5zZWMgID0gcy0+YmF0LnBid19ibGsgKiBzLT5zcGI7CglyZXEtPnRyZXEuc2Vj cyA9IChzLT5iYXQucGJ3X29mZnNldCAtIGxiX2VuZCkgKyBzLT5ibV9zZWNzOwoJcmVxLT50cmVx LmJ1ZiAgPSB2aGRfemVyb3ModmhkX3NlY3RvcnNfdG9fYnl0ZXMocmVxLT50cmVxLnNlY3MpKTsK CXJlcS0+bmV4dCAgICAgID0gTlVMTDsKCglEQkcoVExPR19EQkcsICJibGs6IDB4JTA0eCwgd3Jp dGluZyB6ZXJvIGJpdG1hcCBhdCAweCUwOCJQUkl4NjQiXG4iLAoJICAgIHMtPmJhdC5wYndfYmxr LCBvZmZzZXQpOwoKCWxvY2tfYml0bWFwKGJtKTsKCWFkZF90b190cmFuc2FjdGlvbigmYm0tPnR4 LCByZXEpOwoJYWlvX3dyaXRlKHMsIHJlcSwgb2Zmc2V0KTsKfQoKLyogVGhpcyBpcyBhIHBlcmZv cm1hbmNlIG9wdGltaXphdGlvbi4gV2hlbiB3cml0aW5nIHNlcXVlbnRpYWxseSBpbnRvIGZ1bGwg CiAqIGJsb2Nrcywgc2tpcHBpbmcgKHVwLXRvLWRhdGUpIGJpdG1hcHMgY2F1c2VzIGFuIGFwcHJv eC4gMjUlIHJlZHVjdGlvbiBpbiAKICogdGhyb3VnaHB1dC4gVG8gcHJldmVudCBza2lwcGluZywg d2UgaXNzdWUgcmVkdW5kYW50IHdyaXRlcyBpbnRvIHRoZSAocGFkZGVkKSAKICogYml0bWFwIGFy ZWEganVzdCB0byBtYWtlIGFsbCB3cml0ZXMgc2VxdWVudGlhbC4gVGhpcyB3aWxsIGhlbHAgVkhE cyBvbiByYXcgCiAqIGJsb2NrIGRldmljZXMsIHdoaWxlIHRoZSBGUy1iYXNlZCBWSERzIHNob3Vs ZG4ndCBzdWZmZXIgbXVjaC4KICoKICogTm90ZSB0aGF0IGl0IG9ubHkgbWFrZXMgc2Vuc2UgdG8g cGVyZm9ybSB0aGlzIHJlZHVudGFudCBiaXRtYXAgd3JpdGUgaWYgdGhlIAogKiBibG9jayBpcyBj b21wbGV0ZWx5IGZ1bGwgKGkuZS4gdGhlIGJhdG1hcCBlbnRyeSBpcyBzZXQpLiBJZiB0aGUgYmxv Y2sgaXMgbm90IAogKiBjb21wbGV0ZWx5IGZ1bGwgdGhlbiBvbmUgb2YgdGhlIGZvbGxvd2luZyB0 d28gdGhpbmdzIHdpbGwgYmUgdHJ1ZToKICogIDEuIHdlJ2xsIGVpdGhlciBiZSBhbGxvY2F0aW5n IG5ldyBzZWN0b3JzIGluIHRoaXMgYmxvY2sgYW5kIHdyaXRpbmcgaXRzCiAqICAgICBiaXRtYXAg dHJhbnNhY3Rpb25hbGx5LCB3aGljaCB3aWxsIGJlIHNsb3cgYW55d2F5czsgb3IKICogIDIuIHRo ZSBJTyB3aWxsIGJlIHNraXBwaW5nIG92ZXIgdGhlIHVuYWxsb2NhdGVkIHNlY3RvcnMgYWdhaW4s IHNvIHRoZQogKiAgICAgcGF0dGVybiB3aWxsIG5vdCBiZSBzZXF1ZW50aWFsIGFueXdheXMKICog SW4gZWl0aGVyIGNhc2UgYSByZWR1bmRhbnQgYml0bWFwIHdyaXRlIGJlY29tZXMgcG9pbnRsZXNz LiBUaGlzIGZhY3QgCiAqIHNpbXBsaWZpZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHJlZHVuZGFu dCB3cml0ZXM6IHNpbmNlIHdlIGtub3cgdGhlIGJpdG1hcCAKICogY2Fubm90IGJlIHVwZGF0ZWQg YnkgYW55b25lIGVsc2UsIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdHJhbnNhY3Rpb25z IAogKiBvciBwb3RlbnRpYWwgd3JpdGUgY29uZmxpY3RzLgogKiAqLwpzdGF0aWMgdm9pZApzY2hl ZHVsZV9yZWR1bmRhbnRfYm1fd3JpdGUoc3RydWN0IHZoZF9zdGF0ZSAqcywgdWludDMyX3QgYmxr KQp7Cgl1aW50NjRfdCBvZmZzZXQ7CglzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcTsKCglBU1NFUlQo cy0+dmhkLmZvb3Rlci50eXBlICE9IEhEX1RZUEVfRklYRUQpOwoJQVNTRVJUKHRlc3RfYmF0bWFw KHMsIGJsaykpOwoKCXJlcSA9IGFsbG9jX3ZoZF9yZXF1ZXN0KHMpOwoJaWYgKCFyZXEpIAoJCXJl dHVybjsKCglyZXEtPnRyZXEuYnVmID0gcy0+cGFkYm1fYnVmOwoKCW9mZnNldCA9IGJhdF9lbnRy eShzLCBibGspOwoJQVNTRVJUKG9mZnNldCAhPSBERF9CTEtfVU5VU0VEKTsKCW9mZnNldCA8PD0g VkhEX1NFQ1RPUl9TSElGVDsKCW9mZnNldCAtPSBzLT5wYWRibV9zaXplIC0gKHMtPmJtX3NlY3Mg PDwgVkhEX1NFQ1RPUl9TSElGVCk7CgoJcmVxLT5vcCAgICAgICAgPSBWSERfT1BfUkVEVU5EQU5U X0JNX1dSSVRFOwoJcmVxLT50cmVxLnNlYyAgPSBibGsgKiBzLT5zcGI7CglyZXEtPnRyZXEuc2Vj cyA9IHMtPnBhZGJtX3NpemUgPj4gVkhEX1NFQ1RPUl9TSElGVDsKCXJlcS0+bmV4dCAgICAgID0g TlVMTDsKCglEQkcoVExPR19EQkcsICJibGs6ICV1LCB3cml0aW5nIHJlZHVuZGFudCBiaXRtYXAg YXQgJSIgUFJJdTY0ICJcbiIsCgkgICAgYmxrLCBvZmZzZXQpOwoKCWFpb193cml0ZShzLCByZXEs IG9mZnNldCk7Cn0KCnN0YXRpYyBpbnQKdXBkYXRlX2JhdChzdHJ1Y3QgdmhkX3N0YXRlICpzLCB1 aW50MzJfdCBibGspCnsKCWludCBlcnI7Cgl1aW50NjRfdCBsYl9lbmQ7CglzdHJ1Y3QgdmhkX2Jp dG1hcCAqYm07CgoJQVNTRVJUKGJhdF9lbnRyeShzLCBibGspID09IEREX0JMS19VTlVTRUQpOwoJ CglpZiAoYmF0X2xvY2tlZChzKSkgewoJCUFTU0VSVChzLT5iYXQucGJ3X2JsayA9PSBibGspOwoJ CXJldHVybiAwOwoJfQoKCS8qIGVtcHR5IGJpdG1hcCBjb3VsZCBhbHJlYWR5IGJlIGluCgkgKiBj YWNoZSBpZiBlYXJsaWVyIGJhdCB1cGRhdGUgZmFpbGVkICovCglibSA9IGdldF9iaXRtYXAocywg YmxrKTsKCWlmICghYm0pIHsKCQkvKiBpbnN0YWxsIGVtcHR5IGJpdG1hcCBpbiBjYWNoZSAqLwoJ CWVyciA9IGFsbG9jX3ZoZF9iaXRtYXAocywgJmJtLCBibGspOwoJCWlmIChlcnIpIAoJCQlyZXR1 cm4gZXJyOwoKCQlpbnN0YWxsX2JpdG1hcChzLCBibSk7Cgl9CgoJbG9ja19iYXQocyk7CglsYl9l bmQgPSByZXNlcnZlX25ld19ibG9jayhzLCBibGspOwoJaWYgKGxiX2VuZCA+PiAzMikgewoJCXVu bG9ja19iYXQocyk7CgkJcmV0dXJuIC0obGJfZW5kID4+IDMyKTsKCX0KCXNjaGVkdWxlX3plcm9f Ym1fd3JpdGUocywgYm0sIGxiX2VuZCk7CglzZXRfdmhkX2ZsYWcoYm0tPnR4LnN0YXR1cywgVkhE X0ZMQUdfVFhfVVBEQVRFX0JBVCk7CgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQKYWxsb2NhdGVf YmxvY2soc3RydWN0IHZoZF9zdGF0ZSAqcywgdWludDMyX3QgYmxrKQp7CglpbnQgZXJyLCBnYXA7 Cgl1aW50NjRfdCBvZmZzZXQsIHNpemU7CglzdHJ1Y3QgdmhkX2JpdG1hcCAqYm07Cglzc2l6ZV90 IGNvdW50OwoJdWludDY0X3QgbmV4dF9kYjsKCglBU1NFUlQoYmF0X2VudHJ5KHMsIGJsaykgPT0g RERfQkxLX1VOVVNFRCk7CgoJaWYgKGJhdF9sb2NrZWQocykpIHsKCQlBU1NFUlQocy0+YmF0LnBi d19ibGsgPT0gYmxrKTsKCQlpZiAocy0+YmF0LnJlcS5lcnJvcikKCQkJcmV0dXJuIC1FQlVTWTsK CQlyZXR1cm4gMDsKCX0KCglnYXAgICAgID0gMDsKCW9mZnNldCAgPSB2aGRfc2VjdG9yc190b19i eXRlcyhzLT5uZXh0X2RiKTsKCW5leHRfZGIgPSBzLT5uZXh0X2RiOwoKCS8qIGRhdGEgcmVnaW9u IG9mIHNlZ21lbnQgc2hvdWxkIGJlZ2luIG9uIHBhZ2UgYm91bmRhcnkgKi8KCWlmICgobmV4dF9k YiArIHMtPmJtX3NlY3MpICUgcy0+c3BwKSB7CgkJZ2FwID0gKHMtPnNwcCAtICgobmV4dF9kYiAr IHMtPmJtX3NlY3MpICUgcy0+c3BwKSk7CgkJbmV4dF9kYiArPSBnYXA7Cgl9CgoJaWYgKG5leHRf ZGIgPiBVSU5UX01BWCkKCQlyZXR1cm4gLUVOT1NQQzsKCglzLT5uZXh0X2RiID0gbmV4dF9kYjsK CglzLT5iYXQucGJ3X2JsayA9IGJsazsKCXMtPmJhdC5wYndfb2Zmc2V0ID0gcy0+bmV4dF9kYjsK CglEQkcoVExPR19EQkcsICJibGs6IDB4JTA0eCwgcGJ3bzogMHglMDgiUFJJeDY0IlxuIiwKCSAg ICBibGssIHMtPmJhdC5wYndfb2Zmc2V0KTsKCglpZiAobHNlZWsocy0+dmhkLmZkLCBvZmZzZXQs IFNFRUtfU0VUKSA9PSAob2ZmX3QpLTEpIHsKCQlFUlIocywgLWVycm5vLCAibHNlZWsgZmFpbGVk XG4iKTsKCQlyZXR1cm4gLWVycm5vOwoJfQoKCXNpemUgID0gdmhkX3NlY3RvcnNfdG9fYnl0ZXMo cy0+c3BiICsgcy0+Ym1fc2VjcyArIGdhcCk7Cgljb3VudCA9IHdyaXRlKHMtPnZoZC5mZCwgdmhk X3plcm9zKHNpemUpLCBzaXplKTsKCWlmIChjb3VudCAhPSBzaXplKSB7CgkJZXJyID0gY291bnQg PCAwID8gLWVycm5vIDogLUVOT1NQQzsKCQlFUlIocywgLWVycm5vLAoJCSAgICAid3JpdGUgZmFp bGVkICglemQsIG9mZnNldCAlIlBSSXU2NCIpXG4iLCBjb3VudCwgb2Zmc2V0KTsKCQlyZXR1cm4g ZXJyOwoJfQoKCS8qIGVtcHR5IGJpdG1hcCBjb3VsZCBhbHJlYWR5IGJlIGluCgkgKiBjYWNoZSBp ZiBlYXJsaWVyIGJhdCB1cGRhdGUgZmFpbGVkICovCglibSA9IGdldF9iaXRtYXAocywgYmxrKTsK CWlmICghYm0pIHsKCQkvKiBpbnN0YWxsIGVtcHR5IGJpdG1hcCBpbiBjYWNoZSAqLwoJCWVyciA9 IGFsbG9jX3ZoZF9iaXRtYXAocywgJmJtLCBibGspOwoJCWlmIChlcnIpIAoJCQlyZXR1cm4gZXJy OwoKCQlpbnN0YWxsX2JpdG1hcChzLCBibSk7Cgl9CgoJbG9ja19iYXQocyk7Cglsb2NrX2JpdG1h cChibSk7CglzY2hlZHVsZV9iYXRfd3JpdGUocyk7CglhZGRfdG9fdHJhbnNhY3Rpb24oJmJtLT50 eCwgJnMtPmJhdC5yZXEpOwoKCXJldHVybiAwOwp9CgpzdGF0aWMgaW50IApzY2hlZHVsZV9kYXRh X3JlYWQoc3RydWN0IHZoZF9zdGF0ZSAqcywgdGRfcmVxdWVzdF90IHRyZXEsIHZoZF9mbGFnX3Qg ZmxhZ3MpCnsKCXVpbnQ2NF90IG9mZnNldDsKCXVpbnQzMl90IGJsayA9IDAsIHNlYyA9IDA7Cglz dHJ1Y3QgdmhkX2JpdG1hcCAgKmJtOwoJc3RydWN0IHZoZF9yZXF1ZXN0ICpyZXE7CgoJaWYgKHMt PnZoZC5mb290ZXIudHlwZSA9PSBIRF9UWVBFX0ZJWEVEKSB7CgkJb2Zmc2V0ID0gdmhkX3NlY3Rv cnNfdG9fYnl0ZXModHJlcS5zZWMpOwoJCWdvdG8gbWFrZV9yZXF1ZXN0OwoJfQoKCWJsayAgICA9 IHRyZXEuc2VjIC8gcy0+c3BiOwoJc2VjICAgID0gdHJlcS5zZWMgJSBzLT5zcGI7CglibSAgICAg PSBnZXRfYml0bWFwKHMsIGJsayk7CglvZmZzZXQgPSBiYXRfZW50cnkocywgYmxrKTsKCglBU1NF UlQob2Zmc2V0ICE9IEREX0JMS19VTlVTRUQpOwoJQVNTRVJUKHRlc3RfYmF0bWFwKHMsIGJsaykg fHwgKGJtICYmIGJpdG1hcF92YWxpZChibSkpKTsKCglvZmZzZXQgKz0gcy0+Ym1fc2VjcyArIHNl YzsKCW9mZnNldCAgPSB2aGRfc2VjdG9yc190b19ieXRlcyhvZmZzZXQpOwoKIG1ha2VfcmVxdWVz dDoKCXJlcSA9IGFsbG9jX3ZoZF9yZXF1ZXN0KHMpOwoJaWYgKCFyZXEpIAoJCXJldHVybiAtRUJV U1k7CgoJcmVxLT50cmVxICA9IHRyZXE7CglyZXEtPmZsYWdzID0gZmxhZ3M7CglyZXEtPm9wICAg ID0gVkhEX09QX0RBVEFfUkVBRDsKCXJlcS0+bmV4dCAgPSBOVUxMOwoKCWFpb19yZWFkKHMsIHJl cSwgb2Zmc2V0KTsKCglEQkcoVExPR19EQkcsICIlczogbHNlYzogMHglMDgiUFJJeDY0IiwgYmxr OiAweCUwNHgsIHNlYzogMHglMDR4LCAiCgkgICAgIm5yX3NlY3M6IDB4JTA0eCwgb2Zmc2V0OiAw eCUwOCJQUkl4NjQiLCBmbGFnczogMHglMDh4LCBidWY6ICVwXG4iLAoJICAgIHMtPnZoZC5maWxl LCB0cmVxLnNlYywgYmxrLCBzZWMsIHRyZXEuc2Vjcywgb2Zmc2V0LCByZXEtPmZsYWdzLAoJICAg IHRyZXEuYnVmKTsKCglyZXR1cm4gMDsKfQoKc3RhdGljIGludApzY2hlZHVsZV9kYXRhX3dyaXRl KHN0cnVjdCB2aGRfc3RhdGUgKnMsIHRkX3JlcXVlc3RfdCB0cmVxLCB2aGRfZmxhZ190IGZsYWdz KQp7CglpbnQgZXJyOwoJdWludDY0X3Qgb2Zmc2V0OwoJdWludDMyX3QgYmxrID0gMCwgc2VjID0g MDsKCXN0cnVjdCB2aGRfYml0bWFwICAqYm0gPSBOVUxMOwoJc3RydWN0IHZoZF9yZXF1ZXN0ICpy ZXE7CgoJaWYgKHMtPnZoZC5mb290ZXIudHlwZSA9PSBIRF9UWVBFX0ZJWEVEKSB7CgkJb2Zmc2V0 ID0gdmhkX3NlY3RvcnNfdG9fYnl0ZXModHJlcS5zZWMpOwoJCWdvdG8gbWFrZV9yZXF1ZXN0OwoJ fQoKCWJsayAgICA9IHRyZXEuc2VjIC8gcy0+c3BiOwoJc2VjICAgID0gdHJlcS5zZWMgJSBzLT5z cGI7CglvZmZzZXQgPSBiYXRfZW50cnkocywgYmxrKTsKCglpZiAodGVzdF92aGRfZmxhZyhmbGFn cywgVkhEX0ZMQUdfUkVRX1VQREFURV9CQVQpKSB7CgkJaWYgKHRlc3RfdmhkX2ZsYWcocy0+Zmxh Z3MsIFZIRF9GTEFHX09QRU5fUFJFQUxMT0NBVEUpKQoJCQllcnIgPSBhbGxvY2F0ZV9ibG9jayhz LCBibGspOwoJCWVsc2UKCQkJZXJyID0gdXBkYXRlX2JhdChzLCBibGspOwoKCQlpZiAoZXJyKQoJ CQlyZXR1cm4gZXJyOwoKCQlvZmZzZXQgPSBzLT5iYXQucGJ3X29mZnNldDsKCX0KCglvZmZzZXQg Kz0gcy0+Ym1fc2VjcyArIHNlYzsKCW9mZnNldCAgPSB2aGRfc2VjdG9yc190b19ieXRlcyhvZmZz ZXQpOwoKIG1ha2VfcmVxdWVzdDoKCXJlcSA9IGFsbG9jX3ZoZF9yZXF1ZXN0KHMpOwoJaWYgKCFy ZXEpCgkJcmV0dXJuIC1FQlVTWTsKCglyZXEtPnRyZXEgID0gdHJlcTsKCXJlcS0+ZmxhZ3MgPSBm bGFnczsKCXJlcS0+b3AgICAgPSBWSERfT1BfREFUQV9XUklURTsKCXJlcS0+bmV4dCAgPSBOVUxM OwoKCWlmICh0ZXN0X3ZoZF9mbGFnKGZsYWdzLCBWSERfRkxBR19SRVFfVVBEQVRFX0JJVE1BUCkp IHsKCQlibSA9IGdldF9iaXRtYXAocywgYmxrKTsKCQlBU1NFUlQoYm0gJiYgYml0bWFwX3ZhbGlk KGJtKSk7CgkJbG9ja19iaXRtYXAoYm0pOwoKCQlpZiAoYm0tPnR4LmNsb3NlZCkgewoJCQlhZGRf dG9fdGFpbCgmYm0tPnF1ZXVlLCByZXEpOwoJCQlzZXRfdmhkX2ZsYWcocmVxLT5mbGFncywgVkhE X0ZMQUdfUkVRX1FVRVVFRCk7CgkJfSBlbHNlCgkJCWFkZF90b190cmFuc2FjdGlvbigmYm0tPnR4 LCByZXEpOwoJfSBlbHNlIGlmIChzZWMgPT0gMCAmJiAJLyogZmlyc3Qgc2VjdG9yIGluc2lkZSBk YXRhIGJsb2NrICovCgkJICAgcy0+dmhkLmZvb3Rlci50eXBlICE9IEhEX1RZUEVfRklYRUQgJiYg CgkJICAgYmF0X2VudHJ5KHMsIGJsaykgIT0gcy0+Zmlyc3RfZGIgJiYKCQkgICB0ZXN0X2JhdG1h cChzLCBibGspKQoJCXNjaGVkdWxlX3JlZHVuZGFudF9ibV93cml0ZShzLCBibGspOwoKCWFpb193 cml0ZShzLCByZXEsIG9mZnNldCk7CgoJREJHKFRMT0dfREJHLCAiJXM6IGxzZWM6IDB4JTA4IlBS SXg2NCIsIGJsazogMHglMDR4LCBzZWM6IDB4JTA0eCwgIgoJICAgICJucl9zZWNzOiAweCUwNHgs IG9mZnNldDogMHglMDgiUFJJeDY0IiwgZmxhZ3M6IDB4JTA4eFxuIiwKCSAgICBzLT52aGQuZmls ZSwgdHJlcS5zZWMsIGJsaywgc2VjLCB0cmVxLnNlY3MsIG9mZnNldCwgcmVxLT5mbGFncyk7CgoJ cmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQgCnNjaGVkdWxlX2JpdG1hcF9yZWFkKHN0cnVjdCB2aGRf c3RhdGUgKnMsIHVpbnQzMl90IGJsaykKewoJaW50IGVycjsKCXVpbnQ2NF90IG9mZnNldDsKCXN0 cnVjdCB2aGRfYml0bWFwICAqYm07CglzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcSA9IE5VTEw7CgoJ QVNTRVJUKHZoZF90eXBlX2R5bmFtaWMoJnMtPnZoZCkpOwoKCW9mZnNldCA9IGJhdF9lbnRyeShz LCBibGspOwoKCUFTU0VSVChvZmZzZXQgIT0gRERfQkxLX1VOVVNFRCk7CglBU1NFUlQoIWdldF9i aXRtYXAocywgYmxrKSk7CgoJb2Zmc2V0ID0gdmhkX3NlY3RvcnNfdG9fYnl0ZXMob2Zmc2V0KTsK CgllcnIgPSBhbGxvY192aGRfYml0bWFwKHMsICZibSwgYmxrKTsKCWlmIChlcnIpCgkJcmV0dXJu IGVycjsKCglyZXEgPSAmYm0tPnJlcTsKCWluaXRfdmhkX3JlcXVlc3QocywgcmVxKTsKCglyZXEt PnRyZXEuc2VjICA9IGJsayAqIHMtPnNwYjsKCXJlcS0+dHJlcS5zZWNzID0gcy0+Ym1fc2VjczsK CXJlcS0+dHJlcS5idWYgID0gYm0tPm1hcDsKCXJlcS0+dHJlcS5jYiAgID0gTlVMTDsKCXJlcS0+ b3AgICAgICAgID0gVkhEX09QX0JJVE1BUF9SRUFEOwoJcmVxLT5uZXh0ICAgICAgPSBOVUxMOwoK CWFpb19yZWFkKHMsIHJlcSwgb2Zmc2V0KTsKCWxvY2tfYml0bWFwKGJtKTsKCWluc3RhbGxfYml0 bWFwKHMsIGJtKTsKCXNldF92aGRfZmxhZyhibS0+c3RhdHVzLCBWSERfRkxBR19CTV9SRUFEX1BF TkRJTkcpOwoKCURCRyhUTE9HX0RCRywgIiVzOiBsc2VjOiAweCUwOCJQUkl4NjQiLCBibGs6IDB4 JTA0eCwgbnJfc2VjczogMHglMDR4LCAiCgkgICAgIm9mZnNldDogMHglMDgiUFJJeDY0IlxuIiwg cy0+dmhkLmZpbGUsIHJlcS0+dHJlcS5zZWMsIGJsaywKCSAgICByZXEtPnRyZXEuc2Vjcywgb2Zm c2V0KTsKCglyZXR1cm4gMDsKfQoKc3RhdGljIHZvaWQKc2NoZWR1bGVfYml0bWFwX3dyaXRlKHN0 cnVjdCB2aGRfc3RhdGUgKnMsIHVpbnQzMl90IGJsaykKewoJdWludDY0X3Qgb2Zmc2V0OwoJc3Ry dWN0IHZoZF9iaXRtYXAgICpibTsKCXN0cnVjdCB2aGRfcmVxdWVzdCAqcmVxOwoKCWJtICAgICA9 IGdldF9iaXRtYXAocywgYmxrKTsKCW9mZnNldCA9IGJhdF9lbnRyeShzLCBibGspOwoKCUFTU0VS VCh2aGRfdHlwZV9keW5hbWljKCZzLT52aGQpKTsKCUFTU0VSVChibSAmJiBiaXRtYXBfdmFsaWQo Ym0pICYmCgkgICAgICAgIXRlc3RfdmhkX2ZsYWcoYm0tPnN0YXR1cywgVkhEX0ZMQUdfQk1fV1JJ VEVfUEVORElORykpOwoKCWlmIChvZmZzZXQgPT0gRERfQkxLX1VOVVNFRCkgewoJCUFTU0VSVChi YXRfbG9ja2VkKHMpICYmIHMtPmJhdC5wYndfYmxrID09IGJsayk7CgkJb2Zmc2V0ID0gcy0+YmF0 LnBid19vZmZzZXQ7Cgl9CgkKCW9mZnNldCA9IHZoZF9zZWN0b3JzX3RvX2J5dGVzKG9mZnNldCk7 CgoJcmVxID0gJmJtLT5yZXE7Cglpbml0X3ZoZF9yZXF1ZXN0KHMsIHJlcSk7CgoJcmVxLT50cmVx LnNlYyAgPSBibGsgKiBzLT5zcGI7CglyZXEtPnRyZXEuc2VjcyA9IHMtPmJtX3NlY3M7CglyZXEt PnRyZXEuYnVmICA9IGJtLT5zaGFkb3c7CglyZXEtPnRyZXEuY2IgICA9IE5VTEw7CglyZXEtPm9w ICAgICAgICA9IFZIRF9PUF9CSVRNQVBfV1JJVEU7CglyZXEtPm5leHQgICAgICA9IE5VTEw7CgoJ YWlvX3dyaXRlKHMsIHJlcSwgb2Zmc2V0KTsKCWxvY2tfYml0bWFwKGJtKTsKCXRvdWNoX2JpdG1h cChzLCBibSk7ICAgICAvKiBidW1wIGxydSBjb3VudCAqLwoJc2V0X3ZoZF9mbGFnKGJtLT5zdGF0 dXMsIFZIRF9GTEFHX0JNX1dSSVRFX1BFTkRJTkcpOwoKCURCRyhUTE9HX0RCRywgIiVzOiBibGs6 IDB4JTA0eCwgc2VjOiAweCUwOCJQUkl4NjQiLCBucl9zZWNzOiAweCUwNHgsICIKCSAgICAib2Zm c2V0OiAweCUiUFJJeDY0IlxuIiwgcy0+dmhkLmZpbGUsIGJsaywgcmVxLT50cmVxLnNlYywKCSAg ICByZXEtPnRyZXEuc2Vjcywgb2Zmc2V0KTsKfQoKLyogCiAqIHF1ZXVlZCByZXF1ZXN0cyB3aWxs IGJlIHN1Ym1pdHRlZCBvbmNlIHRoZSBiaXRtYXAKICogZGVzY3JpYmluZyB0aGVtIGlzIHJlYWQg YW5kIHRoZSByZXF1ZXN0cyBhcmUgdmFsaWRhdGVkLiAKICovCnN0YXRpYyBpbnQKX192aGRfcXVl dWVfcmVxdWVzdChzdHJ1Y3QgdmhkX3N0YXRlICpzLCB1aW50OF90IG9wLCB0ZF9yZXF1ZXN0X3Qg dHJlcSkKewoJdWludDMyX3QgYmxrOwoJc3RydWN0IHZoZF9iaXRtYXAgICpibTsKCXN0cnVjdCB2 aGRfcmVxdWVzdCAqcmVxOwoKCUFTU0VSVCh2aGRfdHlwZV9keW5hbWljKCZzLT52aGQpKTsKCgli bGsgPSB0cmVxLnNlYyAvIHMtPnNwYjsKCWJtICA9IGdldF9iaXRtYXAocywgYmxrKTsKCglBU1NF UlQoYm0gJiYgdGVzdF92aGRfZmxhZyhibS0+c3RhdHVzLCBWSERfRkxBR19CTV9SRUFEX1BFTkRJ TkcpKTsKCglyZXEgPSBhbGxvY192aGRfcmVxdWVzdChzKTsKCWlmICghcmVxKQoJCXJldHVybiAt RUJVU1k7CgoJcmVxLT50cmVxID0gdHJlcTsKCXJlcS0+b3AgICA9IG9wOwoJcmVxLT5uZXh0ID0g TlVMTDsKCglhZGRfdG9fdGFpbCgmYm0tPndhaXRpbmcsIHJlcSk7Cglsb2NrX2JpdG1hcChibSk7 CgoJREJHKFRMT0dfREJHLCAiJXM6IGxzZWM6IDB4JTA4IlBSSXg2NCIsIGJsazogMHglMDR4IG5y X3NlY3M6IDB4JTA0eCwgIgoJICAgICJvcDogJXVcbiIsIHMtPnZoZC5maWxlLCB0cmVxLnNlYywg YmxrLCB0cmVxLnNlY3MsIG9wKTsKCglUUkFDRShzKTsKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9p ZAp2aGRfcXVldWVfcmVhZCh0ZF9kcml2ZXJfdCAqZHJpdmVyLCB0ZF9yZXF1ZXN0X3QgdHJlcSkK ewoJc3RydWN0IHZoZF9zdGF0ZSAqcyA9IChzdHJ1Y3QgdmhkX3N0YXRlICopZHJpdmVyLT5kYXRh OwoKCURCRyhUTE9HX0RCRywgIiVzOiBsc2VjOiAweCUwOCJQUkl4NjQiLCBzZWNzOiAweCUwNHgg KHNlZzogJWQpXG4iLAoJICAgIHMtPnZoZC5maWxlLCB0cmVxLnNlYywgdHJlcS5zZWNzLCB0cmVx LnNpZHgpOwoKCXdoaWxlICh0cmVxLnNlY3MpIHsKCQlpbnQgZXJyOwoJCXRkX3JlcXVlc3RfdCBj bG9uZTsKCgkJZXJyICAgPSAwOwoJCWNsb25lID0gdHJlcTsKCgkJc3dpdGNoIChyZWFkX2JpdG1h cF9jYWNoZShzLCBjbG9uZS5zZWMsIFZIRF9PUF9EQVRBX1JFQUQpKSB7CgkJY2FzZSAtRUlOVkFM OgoJCQllcnIgPSAtRUlOVkFMOwoJCQlnb3RvIGZhaWw7CgoJCWNhc2UgVkhEX0JNX0JBVF9DTEVB UjoKCQkJY2xvbmUuc2VjcyA9IE1JTihjbG9uZS5zZWNzLCBzLT5zcGIgLSAoY2xvbmUuc2VjICUg cy0+c3BiKSk7CgkJCXRkX2ZvcndhcmRfcmVxdWVzdChjbG9uZSk7CgkJCWJyZWFrOwoKCQljYXNl IFZIRF9CTV9CSVRfQ0xFQVI6CgkJCWNsb25lLnNlY3MgPSByZWFkX2JpdG1hcF9jYWNoZV9zcGFu KHMsIGNsb25lLnNlYywgY2xvbmUuc2VjcywgMCk7CgkJCXRkX2ZvcndhcmRfcmVxdWVzdChjbG9u ZSk7CgkJCWJyZWFrOwoKCQljYXNlIFZIRF9CTV9CSVRfU0VUOgoJCQljbG9uZS5zZWNzID0gcmVh ZF9iaXRtYXBfY2FjaGVfc3BhbihzLCBjbG9uZS5zZWMsIGNsb25lLnNlY3MsIDEpOwoJCQllcnIg PSBzY2hlZHVsZV9kYXRhX3JlYWQocywgY2xvbmUsIDApOwoJCQlpZiAoZXJyKQoJCQkJZ290byBm YWlsOwoJCQlicmVhazsKCgkJY2FzZSBWSERfQk1fTk9UX0NBQ0hFRDoKCQkJZXJyID0gc2NoZWR1 bGVfYml0bWFwX3JlYWQocywgY2xvbmUuc2VjIC8gcy0+c3BiKTsKCQkJaWYgKGVycikKCQkJCWdv dG8gZmFpbDsKCgkJCWNsb25lLnNlY3MgPSBNSU4oY2xvbmUuc2Vjcywgcy0+c3BiIC0gKGNsb25l LnNlYyAlIHMtPnNwYikpOwoJCQllcnIgPSBfX3ZoZF9xdWV1ZV9yZXF1ZXN0KHMsIFZIRF9PUF9E QVRBX1JFQUQsIGNsb25lKTsKCQkJaWYgKGVycikKCQkJCWdvdG8gZmFpbDsKCQkJYnJlYWs7CgoJ CWNhc2UgVkhEX0JNX1JFQURfUEVORElORzoKCQkJY2xvbmUuc2VjcyA9IE1JTihjbG9uZS5zZWNz LCBzLT5zcGIgLSAoY2xvbmUuc2VjICUgcy0+c3BiKSk7CgkJCWVyciA9IF9fdmhkX3F1ZXVlX3Jl cXVlc3QocywgVkhEX09QX0RBVEFfUkVBRCwgY2xvbmUpOwoJCQlpZiAoZXJyKQoJCQkJZ290byBm YWlsOwoJCQlicmVhazsKCgkJY2FzZSBWSERfQk1fQkFUX0xPQ0tFRDoKCQlkZWZhdWx0OgoJCQlB U1NFUlQoMCk7CgkJCWJyZWFrOwoJCX0KCgkJdHJlcS5zZWMgICs9IGNsb25lLnNlY3M7CgkJdHJl cS5zZWNzIC09IGNsb25lLnNlY3M7CgkJdHJlcS5idWYgICs9IHZoZF9zZWN0b3JzX3RvX2J5dGVz KGNsb25lLnNlY3MpOwoJCWNvbnRpbnVlOwoKCWZhaWw6CgkJY2xvbmUuc2VjcyA9IHRyZXEuc2Vj czsKCQl0ZF9jb21wbGV0ZV9yZXF1ZXN0KGNsb25lLCBlcnIpOwoJCWJyZWFrOwoJfQp9CgpzdGF0 aWMgdm9pZAp2aGRfcXVldWVfd3JpdGUodGRfZHJpdmVyX3QgKmRyaXZlciwgdGRfcmVxdWVzdF90 IHRyZXEpCnsKCXN0cnVjdCB2aGRfc3RhdGUgKnMgPSAoc3RydWN0IHZoZF9zdGF0ZSAqKWRyaXZl ci0+ZGF0YTsKCglEQkcoVExPR19EQkcsICIlczogbHNlYzogMHglMDgiUFJJeDY0Iiwgc2Vjczog MHglMDR4LCAoc2VnOiAlZClcbiIsCgkgICAgcy0+dmhkLmZpbGUsIHRyZXEuc2VjLCB0cmVxLnNl Y3MsIHRyZXEuc2lkeCk7CgoJd2hpbGUgKHRyZXEuc2VjcykgewoJCWludCBlcnI7CgkJdWludDhf dCBmbGFnczsKCQl0ZF9yZXF1ZXN0X3QgY2xvbmU7CgoJCWVyciAgID0gMDsKCQlmbGFncyA9IDA7 CgkJY2xvbmUgPSB0cmVxOwoKCQlzd2l0Y2ggKHJlYWRfYml0bWFwX2NhY2hlKHMsIGNsb25lLnNl YywgVkhEX09QX0RBVEFfV1JJVEUpKSB7CgkJY2FzZSAtRUlOVkFMOgoJCQllcnIgPSAtRUlOVkFM OwoJCQlnb3RvIGZhaWw7CgoJCWNhc2UgVkhEX0JNX0JBVF9MT0NLRUQ6CgkJCWVyciA9IC1FQlVT WTsKCQkJZ290byBmYWlsOwoKCQljYXNlIFZIRF9CTV9CQVRfQ0xFQVI6CgkJCWZsYWdzICAgICAg PSAoVkhEX0ZMQUdfUkVRX1VQREFURV9CQVQgfAoJCQkJICAgICAgVkhEX0ZMQUdfUkVRX1VQREFU RV9CSVRNQVApOwoJCQljbG9uZS5zZWNzID0gTUlOKGNsb25lLnNlY3MsIHMtPnNwYiAtIChjbG9u ZS5zZWMgJSBzLT5zcGIpKTsKCQkJZXJyICAgICAgICA9IHNjaGVkdWxlX2RhdGFfd3JpdGUocywg Y2xvbmUsIGZsYWdzKTsKCQkJaWYgKGVycikKCQkJCWdvdG8gZmFpbDsKCQkJYnJlYWs7CgoJCWNh c2UgVkhEX0JNX0JJVF9DTEVBUjoKCQkJZmxhZ3MgICAgICA9IFZIRF9GTEFHX1JFUV9VUERBVEVf QklUTUFQOwoJCQljbG9uZS5zZWNzID0gcmVhZF9iaXRtYXBfY2FjaGVfc3BhbihzLCBjbG9uZS5z ZWMsIGNsb25lLnNlY3MsIDApOwoJCQllcnIgICAgICAgID0gc2NoZWR1bGVfZGF0YV93cml0ZShz LCBjbG9uZSwgZmxhZ3MpOwoJCQlpZiAoZXJyKQoJCQkJZ290byBmYWlsOwoJCQlicmVhazsKCgkJ Y2FzZSBWSERfQk1fQklUX1NFVDoKCQkJY2xvbmUuc2VjcyA9IHJlYWRfYml0bWFwX2NhY2hlX3Nw YW4ocywgY2xvbmUuc2VjLCBjbG9uZS5zZWNzLCAxKTsKCQkJZXJyID0gc2NoZWR1bGVfZGF0YV93 cml0ZShzLCBjbG9uZSwgMCk7CgkJCWlmIChlcnIpCgkJCQlnb3RvIGZhaWw7CgkJCWJyZWFrOwoK CQljYXNlIFZIRF9CTV9OT1RfQ0FDSEVEOgoJCQljbG9uZS5zZWNzID0gTUlOKGNsb25lLnNlY3Ms IHMtPnNwYiAtIChjbG9uZS5zZWMgJSBzLT5zcGIpKTsKCQkJZXJyID0gc2NoZWR1bGVfYml0bWFw X3JlYWQocywgY2xvbmUuc2VjIC8gcy0+c3BiKTsKCQkJaWYgKGVycikKCQkJCWdvdG8gZmFpbDsK CgkJCWVyciA9IF9fdmhkX3F1ZXVlX3JlcXVlc3QocywgVkhEX09QX0RBVEFfV1JJVEUsIGNsb25l KTsKCQkJaWYgKGVycikKCQkJCWdvdG8gZmFpbDsKCQkJYnJlYWs7CgoJCWNhc2UgVkhEX0JNX1JF QURfUEVORElORzoKCQkJY2xvbmUuc2VjcyA9IE1JTihjbG9uZS5zZWNzLCBzLT5zcGIgLSAoY2xv bmUuc2VjICUgcy0+c3BiKSk7CgkJCWVyciA9IF9fdmhkX3F1ZXVlX3JlcXVlc3QocywgVkhEX09Q X0RBVEFfV1JJVEUsIGNsb25lKTsKCQkJaWYgKGVycikKCQkJCWdvdG8gZmFpbDsKCQkJYnJlYWs7 CgoJCWRlZmF1bHQ6CgkJCUFTU0VSVCgwKTsKCQkJYnJlYWs7CgkJfQoKCQl0cmVxLnNlYyAgKz0g Y2xvbmUuc2VjczsKCQl0cmVxLnNlY3MgLT0gY2xvbmUuc2VjczsKCQl0cmVxLmJ1ZiAgKz0gdmhk X3NlY3RvcnNfdG9fYnl0ZXMoY2xvbmUuc2Vjcyk7CgkJY29udGludWU7CgoJZmFpbDoKCQljbG9u ZS5zZWNzID0gdHJlcS5zZWNzOwoJCXRkX2NvbXBsZXRlX3JlcXVlc3QoY2xvbmUsIGVycik7CgkJ YnJlYWs7Cgl9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZApzaWduYWxfY29tcGxldGlvbihzdHJ1Y3Qg dmhkX3JlcXVlc3QgKmxpc3QsIGludCBlcnJvcikKewoJc3RydWN0IHZoZF9zdGF0ZSAqczsKCXN0 cnVjdCB2aGRfcmVxdWVzdCAqciwgKm5leHQ7CgoJaWYgKCFsaXN0KQoJCXJldHVybjsKCglyID0g bGlzdDsKCXMgPSBsaXN0LT5zdGF0ZTsKCgl3aGlsZSAocikgewoJCWludCBlcnI7CgoJCWVyciAg PSAoZXJyb3IgPyBlcnJvciA6IHItPmVycm9yKTsKCQluZXh0ID0gci0+bmV4dDsKCQl0ZF9jb21w bGV0ZV9yZXF1ZXN0KHItPnRyZXEsIGVycik7CgkJREJHKFRMT0dfREJHLCAibHNlYzogMHglMDgi UFJJeDY0IiwgYmxrOiAweCUwNCJQUkl4NjQiLCAiCgkJICAgICJlcnI6ICVkXG4iLCByLT50cmVx LnNlYywgci0+dHJlcS5zZWMgLyBzLT5zcGIsIGVycik7CgkJZnJlZV92aGRfcmVxdWVzdChzLCBy KTsKCQlyICAgID0gbmV4dDsKCgkJcy0+cmV0dXJuZWQrKzsKCQlUUkFDRShzKTsKCX0KfQoKc3Rh dGljIHZvaWQKc3RhcnRfbmV3X2JpdG1hcF90cmFuc2FjdGlvbihzdHJ1Y3QgdmhkX3N0YXRlICpz LCBzdHJ1Y3QgdmhkX2JpdG1hcCAqYm0pCnsKCXN0cnVjdCB2aGRfdHJhbnNhY3Rpb24gKnR4OwoJ c3RydWN0IHZoZF9yZXF1ZXN0ICpyLCAqbmV4dDsKCWludCBpOwoKCWlmICghYm0tPnF1ZXVlLmhl YWQpCgkJcmV0dXJuOwoKCURCRyhUTE9HX0RCRywgImJsazogMHglMDR4XG4iLCBibS0+YmxrKTsK CglyICA9IGJtLT5xdWV1ZS5oZWFkOwoJdHggPSAmYm0tPnR4OwoJY2xlYXJfcmVxX2xpc3QoJmJt LT5xdWV1ZSk7CgoJaWYgKHIgJiYgYmF0X2VudHJ5KHMsIGJtLT5ibGspID09IEREX0JMS19VTlVT RUQpCgkJdHgtPmVycm9yID0gLUVJTzsKCgl3aGlsZSAocikgewoJCW5leHQgICAgPSByLT5uZXh0 OwoJCXItPm5leHQgPSBOVUxMOwoJCWNsZWFyX3ZoZF9mbGFnKHItPmZsYWdzLCBWSERfRkxBR19S RVFfUVVFVUVEKTsKCgkJYWRkX3RvX3RyYW5zYWN0aW9uKHR4LCByKTsKCQlpZiAodGVzdF92aGRf ZmxhZyhyLT5mbGFncywgVkhEX0ZMQUdfUkVRX0ZJTklTSEVEKSkgewoJCQl0eC0+ZmluaXNoZWQr KzsKCQkJaWYgKCFyLT5lcnJvcikgewoJCQkJdWludDMyX3Qgc2VjID0gci0+dHJlcS5zZWMgJSBz LT5zcGI7CgkJCQlmb3IgKGkgPSAwOyBpIDwgci0+dHJlcS5zZWNzOyBpKyspCgkJCQkJdmhkX2Jp dG1hcF9zZXQoJnMtPnZoZCwKCQkJCQkJICAgICAgIGJtLT5zaGFkb3csIHNlYyArIGkpOwoJCQl9 CgkJfQoJCXIgPSBuZXh0OwoJfQoKCS8qIHBlcmhhcHMgYWxsIHRoZSBxdWV1ZWQgd3JpdGVzIGFs cmVhZHkgY29tcGxldGVkPyAqLwoJaWYgKHR4LT5zdGFydGVkICYmIHRyYW5zYWN0aW9uX2NvbXBs ZXRlZCh0eCkpCgkJZmluaXNoX2RhdGFfdHJhbnNhY3Rpb24ocywgYm0pOwp9CgpzdGF0aWMgdm9p ZApmaW5pc2hfYmF0X3RyYW5zYWN0aW9uKHN0cnVjdCB2aGRfc3RhdGUgKnMsIHN0cnVjdCB2aGRf Yml0bWFwICpibSkKewoJc3RydWN0IHZoZF90cmFuc2FjdGlvbiAqdHggPSAmYm0tPnR4OwoKCWlm ICghYmF0X2xvY2tlZChzKSkKCQlyZXR1cm47CgoJaWYgKHMtPmJhdC5wYndfYmxrICE9IGJtLT5i bGspCgkJcmV0dXJuOwoKCWlmICghcy0+YmF0LnJlcS5lcnJvcikKCQlnb3RvIHJlbGVhc2U7CgoJ aWYgKCF0ZXN0X3ZoZF9mbGFnKHR4LT5zdGF0dXMsIFZIRF9GTEFHX1RYX0xJVkUpKQoJCWdvdG8g cmVsZWFzZTsKCgl0eC0+Y2xvc2VkID0gMTsKCXJldHVybjsKCiByZWxlYXNlOgoJREJHKFRMT0df REJHLCAiYmxrOiAweCUwNHhcbiIsIGJtLT5ibGspOwoJdW5sb2NrX2JhdChzKTsKCWluaXRfYmF0 KHMpOwp9CgpzdGF0aWMgdm9pZApmaW5pc2hfYml0bWFwX3RyYW5zYWN0aW9uKHN0cnVjdCB2aGRf c3RhdGUgKnMsCgkJCSAgc3RydWN0IHZoZF9iaXRtYXAgKmJtLCBpbnQgZXJyb3IpCnsKCWludCBt YXBfc2l6ZTsKCXN0cnVjdCB2aGRfdHJhbnNhY3Rpb24gKnR4ID0gJmJtLT50eDsKCglEQkcoVExP R19EQkcsICJibGs6IDB4JTA0eCwgZXJyOiAlZFxuIiwgYm0tPmJsaywgZXJyb3IpOwoJdHgtPmVy cm9yID0gKHR4LT5lcnJvciA/IHR4LT5lcnJvciA6IGVycm9yKTsKCW1hcF9zaXplICA9IHZoZF9z ZWN0b3JzX3RvX2J5dGVzKHMtPmJtX3NlY3MpOwoKCWlmICghdGVzdF92aGRfZmxhZyhzLT5mbGFn cywgVkhEX0ZMQUdfT1BFTl9QUkVBTExPQ0FURSkpIHsKCQlpZiAodGVzdF92aGRfZmxhZyh0eC0+ c3RhdHVzLCBWSERfRkxBR19UWF9VUERBVEVfQkFUKSkgewoJCQkvKiBzdGlsbCB3YWl0aW5nIGZv ciBiYXQgd3JpdGUgKi8KCQkJQVNTRVJUKGJtLT5ibGsgPT0gcy0+YmF0LnBid19ibGspOwoJCQlB U1NFUlQodGVzdF92aGRfZmxhZyhzLT5iYXQuc3RhdHVzLCAKCQkJCQkgICAgIFZIRF9GTEFHX0JB VF9XUklURV9TVEFSVEVEKSk7CgkJCXMtPmJhdC5yZXEudHggPSB0eDsKCQkJcmV0dXJuOwoJCX0K CX0KCglpZiAodHgtPmVycm9yKSB7CgkJLyogdW5kbyBjaGFuZ2VzIHRvIHNoYWRvdyAqLwoJCW1l bWNweShibS0+c2hhZG93LCBibS0+bWFwLCBtYXBfc2l6ZSk7Cgl9IGVsc2UgewoJCS8qIGNvbXBs ZXRlIGF0b21pYyB3cml0ZSAqLwoJCW1lbWNweShibS0+bWFwLCBibS0+c2hhZG93LCBtYXBfc2l6 ZSk7CgkJaWYgKCF0ZXN0X2JhdG1hcChzLCBibS0+YmxrKSAmJiBiaXRtYXBfZnVsbChzLCBibSkp CgkJCXNldF9iYXRtYXAocywgYm0tPmJsayk7Cgl9CgoJLyogdHJhbnNhY3Rpb24gZG9uZTsgc2ln bmFsIGNvbXBsZXRpb25zICovCglzaWduYWxfY29tcGxldGlvbih0eC0+cmVxdWVzdHMuaGVhZCwg dHgtPmVycm9yKTsKCWluaXRfdHgodHgpOwoJc3RhcnRfbmV3X2JpdG1hcF90cmFuc2FjdGlvbihz LCBibSk7CgoJaWYgKCFiaXRtYXBfaW5fdXNlKGJtKSkKCQl1bmxvY2tfYml0bWFwKGJtKTsKCglm aW5pc2hfYmF0X3RyYW5zYWN0aW9uKHMsIGJtKTsKfQoKc3RhdGljIHZvaWQKZmluaXNoX2RhdGFf dHJhbnNhY3Rpb24oc3RydWN0IHZoZF9zdGF0ZSAqcywgc3RydWN0IHZoZF9iaXRtYXAgKmJtKQp7 CglzdHJ1Y3QgdmhkX3RyYW5zYWN0aW9uICp0eCA9ICZibS0+dHg7CgoJREJHKFRMT0dfREJHLCAi YmxrOiAweCUwNHhcbiIsIGJtLT5ibGspOwoKCXR4LT5jbG9zZWQgPSAxOwoKCWlmICghdHgtPmVy cm9yKQoJCXJldHVybiBzY2hlZHVsZV9iaXRtYXBfd3JpdGUocywgYm0tPmJsayk7CgoJcmV0dXJu IGZpbmlzaF9iaXRtYXBfdHJhbnNhY3Rpb24ocywgYm0sIDApOwp9CgpzdGF0aWMgdm9pZApmaW5p c2hfYmF0X3dyaXRlKHN0cnVjdCB2aGRfcmVxdWVzdCAqcmVxKQp7CglzdHJ1Y3QgdmhkX2JpdG1h cCAqYm07CglzdHJ1Y3QgdmhkX3RyYW5zYWN0aW9uICp0eDsKCXN0cnVjdCB2aGRfc3RhdGUgKnMg PSByZXEtPnN0YXRlOwoKCXMtPnJldHVybmVkKys7CglUUkFDRShzKTsKCglibSA9IGdldF9iaXRt YXAocywgcy0+YmF0LnBid19ibGspOwoKCURCRyhUTE9HX0RCRywgImJsayAweCUwNHgsIHBid286 IDB4JTA4IlBSSXg2NCIsIGVyciAlZFxuIiwKCSAgICBzLT5iYXQucGJ3X2Jsaywgcy0+YmF0LnBi d19vZmZzZXQsIHJlcS0+ZXJyb3IpOwoJQVNTRVJUKGJtICYmIGJpdG1hcF92YWxpZChibSkpOwoJ QVNTRVJUKGJhdF9sb2NrZWQocykgJiYKCSAgICAgICB0ZXN0X3ZoZF9mbGFnKHMtPmJhdC5zdGF0 dXMsIFZIRF9GTEFHX0JBVF9XUklURV9TVEFSVEVEKSk7CgoJdHggPSAmYm0tPnR4OwoJQVNTRVJU KHRlc3RfdmhkX2ZsYWcodHgtPnN0YXR1cywgVkhEX0ZMQUdfVFhfTElWRSkpOwoKCWlmICghcmVx LT5lcnJvcikgewoJCWJhdF9lbnRyeShzLCBzLT5iYXQucGJ3X2JsaykgPSBzLT5iYXQucGJ3X29m ZnNldDsKCQlzLT5uZXh0X2RiID0gcy0+YmF0LnBid19vZmZzZXQgKyBzLT5zcGIgKyBzLT5ibV9z ZWNzOwoJfSBlbHNlCgkJdHgtPmVycm9yID0gcmVxLT5lcnJvcjsKCglpZiAodGVzdF92aGRfZmxh ZyhzLT5mbGFncywgVkhEX0ZMQUdfT1BFTl9QUkVBTExPQ0FURSkpIHsKCQl0eC0+ZmluaXNoZWQr KzsKCQlyZW1vdmVfZnJvbV9yZXFfbGlzdCgmdHgtPnJlcXVlc3RzLCByZXEpOwoJCWlmICh0cmFu c2FjdGlvbl9jb21wbGV0ZWQodHgpKQoJCQlmaW5pc2hfZGF0YV90cmFuc2FjdGlvbihzLCBibSk7 Cgl9IGVsc2UgewoJCWNsZWFyX3ZoZF9mbGFnKHR4LT5zdGF0dXMsIFZIRF9GTEFHX1RYX1VQREFU RV9CQVQpOwoJCWlmIChzLT5iYXQucmVxLnR4KQoJCQlmaW5pc2hfYml0bWFwX3RyYW5zYWN0aW9u KHMsIGJtLCByZXEtPmVycm9yKTsKCX0KCglmaW5pc2hfYmF0X3RyYW5zYWN0aW9uKHMsIGJtKTsK fQoKc3RhdGljIHZvaWQKZmluaXNoX3plcm9fYm1fd3JpdGUoc3RydWN0IHZoZF9yZXF1ZXN0ICpy ZXEpCnsKCXVpbnQzMl90IGJsazsKCXN0cnVjdCB2aGRfYml0bWFwICpibTsKCXN0cnVjdCB2aGRf dHJhbnNhY3Rpb24gKnR4ID0gcmVxLT50eDsKCXN0cnVjdCB2aGRfc3RhdGUgKnMgPSByZXEtPnN0 YXRlOwoKCXMtPnJldHVybmVkKys7CglUUkFDRShzKTsKCglibGsgPSByZXEtPnRyZXEuc2VjIC8g cy0+c3BiOwoJYm0gID0gZ2V0X2JpdG1hcChzLCBibGspOwoKCURCRyhUTE9HX0RCRywgImJsazog MHglMDR4XG4iLCBibGspOwoJQVNTRVJUKGJhdF9sb2NrZWQocykpOwoJQVNTRVJUKHMtPmJhdC5w YndfYmxrID09IGJsayk7CglBU1NFUlQoYm0gJiYgYml0bWFwX3ZhbGlkKGJtKSAmJiBiaXRtYXBf bG9ja2VkKGJtKSk7CgoJdHgtPmZpbmlzaGVkKys7CglyZW1vdmVfZnJvbV9yZXFfbGlzdCgmdHgt PnJlcXVlc3RzLCByZXEpOwoKCWlmIChyZXEtPmVycm9yKSB7CgkJdW5sb2NrX2JhdChzKTsKCQlp bml0X2JhdChzKTsKCQl0eC0+ZXJyb3IgPSByZXEtPmVycm9yOwoJCWNsZWFyX3ZoZF9mbGFnKHR4 LT5zdGF0dXMsIFZIRF9GTEFHX1RYX1VQREFURV9CQVQpOwoJfSBlbHNlCgkJc2NoZWR1bGVfYmF0 X3dyaXRlKHMpOwoKCWlmICh0cmFuc2FjdGlvbl9jb21wbGV0ZWQodHgpKQoJCWZpbmlzaF9kYXRh X3RyYW5zYWN0aW9uKHMsIGJtKTsKfQoKc3RhdGljIGludApmaW5pc2hfcmVkdW5kYW50X2JtX3dy aXRlKHN0cnVjdCB2aGRfcmVxdWVzdCAqcmVxKQp7CgkvKiB1aW50MzJfdCBibGs7ICovCglzdHJ1 Y3QgdmhkX3N0YXRlICpzID0gKHN0cnVjdCB2aGRfc3RhdGUgKikgcmVxLT5zdGF0ZTsKCglzLT5y ZXR1cm5lZCsrOwoJVFJBQ0Uocyk7CQoJLyogYmxrID0gcmVxLT50cmVxLnNlYyAvIHMtPnNwYjsK CSAgIERCRyhUTE9HX0RCRywgImJsazogJXVcbiIsIGJsayk7ICovCgoJaWYgKHJlcS0+ZXJyb3Ip IHsKCQlFUlIocywgcmVxLT5lcnJvciwgImxzZWM6IDB4JTA4IlBSSXg2NCwgcmVxLT50cmVxLnNl Yyk7Cgl9CglmcmVlX3ZoZF9yZXF1ZXN0KHMsIHJlcSk7CglzLT5kZWJ1Z19kb25lX3JlZHVuZGFu dF93cml0ZXMrKzsKCXJldHVybiAwOwp9CgoKc3RhdGljIHZvaWQKZmluaXNoX2JpdG1hcF9yZWFk KHN0cnVjdCB2aGRfcmVxdWVzdCAqcmVxKQp7Cgl1aW50MzJfdCBibGs7CglzdHJ1Y3QgdmhkX2Jp dG1hcCAgKmJtOwoJc3RydWN0IHZoZF9yZXF1ZXN0ICpyLCAqbmV4dDsKCXN0cnVjdCB2aGRfc3Rh dGUgICAqcyA9IHJlcS0+c3RhdGU7CgoJcy0+cmV0dXJuZWQrKzsKCVRSQUNFKHMpOwoKCWJsayA9 IHJlcS0+dHJlcS5zZWMgLyBzLT5zcGI7CglibSAgPSBnZXRfYml0bWFwKHMsIGJsayk7CgoJREJH KFRMT0dfREJHLCAiYmxrOiAweCUwNHhcbiIsIGJsayk7CglBU1NFUlQoYm0gJiYgdGVzdF92aGRf ZmxhZyhibS0+c3RhdHVzLCBWSERfRkxBR19CTV9SRUFEX1BFTkRJTkcpKTsKCglyID0gYm0tPndh aXRpbmcuaGVhZDsKCWNsZWFyX3JlcV9saXN0KCZibS0+d2FpdGluZyk7CgljbGVhcl92aGRfZmxh ZyhibS0+c3RhdHVzLCBWSERfRkxBR19CTV9SRUFEX1BFTkRJTkcpOwoKCWlmICghcmVxLT5lcnJv cikgewoJCW1lbWNweShibS0+c2hhZG93LCBibS0+bWFwLCB2aGRfc2VjdG9yc190b19ieXRlcyhz LT5ibV9zZWNzKSk7CgoJCXdoaWxlIChyKSB7CgkJCXN0cnVjdCB2aGRfcmVxdWVzdCB0bXA7CgoJ CQl0bXAgID0gKnI7CgkJCW5leHQgPSAgci0+bmV4dDsKCQkJZnJlZV92aGRfcmVxdWVzdChzLCBy KTsKCgkJCUFTU0VSVCh0bXAub3AgPT0gVkhEX09QX0RBVEFfUkVBRCB8fCAKCQkJICAgICAgIHRt cC5vcCA9PSBWSERfT1BfREFUQV9XUklURSk7CgoJCQlpZiAodG1wLm9wID09IFZIRF9PUF9EQVRB X1JFQUQpCgkJCQl2aGRfcXVldWVfcmVhZChzLT5kcml2ZXIsIHRtcC50cmVxKTsKCQkJZWxzZSBp ZiAodG1wLm9wID09IFZIRF9PUF9EQVRBX1dSSVRFKQoJCQkJdmhkX3F1ZXVlX3dyaXRlKHMtPmRy aXZlciwgdG1wLnRyZXEpOwoKCQkJciA9IG5leHQ7CgkJfQoJfSBlbHNlIHsKCQlpbnQgZXJyID0g cmVxLT5lcnJvcjsKCQl1bmxvY2tfYml0bWFwKGJtKTsKCQlmcmVlX3ZoZF9iaXRtYXAocywgYm0p OwoJCXJldHVybiBzaWduYWxfY29tcGxldGlvbihyLCBlcnIpOwoJfQoKCWlmICghYml0bWFwX2lu X3VzZShibSkpCgkJdW5sb2NrX2JpdG1hcChibSk7Cn0KCnN0YXRpYyB2b2lkCmZpbmlzaF9iaXRt YXBfd3JpdGUoc3RydWN0IHZoZF9yZXF1ZXN0ICpyZXEpCnsKCXVpbnQzMl90IGJsazsKCXN0cnVj dCB2aGRfYml0bWFwICAqYm07CglzdHJ1Y3QgdmhkX3RyYW5zYWN0aW9uICp0eDsKCXN0cnVjdCB2 aGRfc3RhdGUgKnMgPSByZXEtPnN0YXRlOwoKCXMtPnJldHVybmVkKys7CglUUkFDRShzKTsKCgli bGsgPSByZXEtPnRyZXEuc2VjIC8gcy0+c3BiOwoJYm0gID0gZ2V0X2JpdG1hcChzLCBibGspOwoJ dHggID0gJmJtLT50eDsKCglEQkcoVExPR19EQkcsICJibGs6IDB4JTA0eCwgc3RhcnRlZDogJWQs IGZpbmlzaGVkOiAlZFxuIiwKCSAgICBibGssIHR4LT5zdGFydGVkLCB0eC0+ZmluaXNoZWQpOwoJ QVNTRVJUKHR4LT5jbG9zZWQpOwoJQVNTRVJUKGJtICYmIGJpdG1hcF92YWxpZChibSkpOwoJQVNT RVJUKHRlc3RfdmhkX2ZsYWcoYm0tPnN0YXR1cywgVkhEX0ZMQUdfQk1fV1JJVEVfUEVORElORykp OwoKCWNsZWFyX3ZoZF9mbGFnKGJtLT5zdGF0dXMsIFZIRF9GTEFHX0JNX1dSSVRFX1BFTkRJTkcp OwoKCWZpbmlzaF9iaXRtYXBfdHJhbnNhY3Rpb24ocywgYm0sIHJlcS0+ZXJyb3IpOwp9CgpzdGF0 aWMgdm9pZApmaW5pc2hfZGF0YV9yZWFkKHN0cnVjdCB2aGRfcmVxdWVzdCAqcmVxKQp7CglzdHJ1 Y3QgdmhkX3N0YXRlICpzID0gcmVxLT5zdGF0ZTsKCglEQkcoVExPR19EQkcsICJsc2VjIDB4JTA4 IlBSSXg2NCIsIGJsazogMHglMDQiUFJJeDY0IlxuIiwgCgkgICAgcmVxLT50cmVxLnNlYywgcmVx LT50cmVxLnNlYyAvIHMtPnNwYik7CglzaWduYWxfY29tcGxldGlvbihyZXEsIDApOwp9CgpzdGF0 aWMgdm9pZApmaW5pc2hfZGF0YV93cml0ZShzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcSkKewoJaW50 IGk7CglzdHJ1Y3QgdmhkX3RyYW5zYWN0aW9uICp0eCA9IHJlcS0+dHg7CglzdHJ1Y3QgdmhkX3N0 YXRlICpzID0gKHN0cnVjdCB2aGRfc3RhdGUgKilyZXEtPnN0YXRlOwoKCXNldF92aGRfZmxhZyhy ZXEtPmZsYWdzLCBWSERfRkxBR19SRVFfRklOSVNIRUQpOwoKCWlmICh0eCkgewoJCXVpbnQzMl90 IGJsaywgc2VjOwoJCXN0cnVjdCB2aGRfYml0bWFwICpibTsKCgkJYmxrID0gcmVxLT50cmVxLnNl YyAvIHMtPnNwYjsKCQlzZWMgPSByZXEtPnRyZXEuc2VjICUgcy0+c3BiOwoJCWJtICA9IGdldF9i aXRtYXAocywgYmxrKTsKCgkJQVNTRVJUKGJtICYmIGJpdG1hcF92YWxpZChibSkgJiYgYml0bWFw X2xvY2tlZChibSkpOwoKCQl0eC0+ZmluaXNoZWQrKzsKCgkJREJHKFRMT0dfREJHLCAibHNlYzog MHglMDgiUFJJeDY0IiwgYmxrOiAweDA0JSJQUkl4NjQiLCAiCgkJICAgICJ0eC0+c3RhcnRlZDog JWQsIHR4LT5maW5pc2hlZDogJWRcbiIsIHJlcS0+dHJlcS5zZWMsCgkJICAgIHJlcS0+dHJlcS5z ZWMgLyBzLT5zcGIsIHR4LT5zdGFydGVkLCB0eC0+ZmluaXNoZWQpOwoKCQlpZiAoIXJlcS0+ZXJy b3IpCgkJCWZvciAoaSA9IDA7IGkgPCByZXEtPnRyZXEuc2VjczsgaSsrKQoJCQkJdmhkX2JpdG1h cF9zZXQoJnMtPnZoZCwgYm0tPnNoYWRvdywgIHNlYyArIGkpOwoKCQlpZiAodHJhbnNhY3Rpb25f Y29tcGxldGVkKHR4KSkKCQkJZmluaXNoX2RhdGFfdHJhbnNhY3Rpb24ocywgYm0pOwoKCX0gZWxz ZSBpZiAoIXRlc3RfdmhkX2ZsYWcocmVxLT5mbGFncywgVkhEX0ZMQUdfUkVRX1FVRVVFRCkpIHsK CQlBU1NFUlQoIXJlcS0+bmV4dCk7CgkJREJHKFRMT0dfREJHLCAibHNlYzogMHglMDgiUFJJeDY0 IiwgYmxrOiAweCUwNCJQUkl4NjQiXG4iLCAKCQkgICAgcmVxLT50cmVxLnNlYywgcmVxLT50cmVx LnNlYyAvIHMtPnNwYik7CgkJc2lnbmFsX2NvbXBsZXRpb24ocmVxLCAwKTsKCX0KfQoKdm9pZAp2 aGRfY29tcGxldGUodm9pZCAqYXJnLCBzdHJ1Y3QgdGlvY2IgKnRpb2NiLCBpbnQgZXJyKQp7Cglz dHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcSA9IChzdHJ1Y3QgdmhkX3JlcXVlc3QgKilhcmc7CglzdHJ1 Y3QgdmhkX3N0YXRlICpzID0gcmVxLT5zdGF0ZTsKCXN0cnVjdCBpb2NiICppbyA9ICZ0aW9jYi0+ aW9jYjsKCglzLT5jb21wbGV0ZWQrKzsKCVRSQUNFKHMpOwoKCXJlcS0+ZXJyb3IgPSBlcnI7CgoJ aWYgKHJlcS0+ZXJyb3IpCgkJRVJSKHMsIHJlcS0+ZXJyb3IsICIlczogb3A6ICV1LCBsc2VjOiAl IlBSSXU2NCIsIHNlY3M6ICV1LCAiCgkJICAgICJuYnl0ZXM6ICVsdSwgYmxrOiAlIlBSSXU2NCIs IGJsa19vZmZzZXQ6ICV1IiwKCQkgICAgcy0+dmhkLmZpbGUsIHJlcS0+b3AsIHJlcS0+dHJlcS5z ZWMsIHJlcS0+dHJlcS5zZWNzLAoJCSAgICBpby0+dS5jLm5ieXRlcywgcmVxLT50cmVxLnNlYyAv IHMtPnNwYiwKCQkgICAgYmF0X2VudHJ5KHMsIHJlcS0+dHJlcS5zZWMgLyBzLT5zcGIpKTsKCglz d2l0Y2ggKHJlcS0+b3ApIHsKCWNhc2UgVkhEX09QX0RBVEFfUkVBRDoKCQlmaW5pc2hfZGF0YV9y ZWFkKHJlcSk7CgkJYnJlYWs7CgoJY2FzZSBWSERfT1BfREFUQV9XUklURToKCQlmaW5pc2hfZGF0 YV93cml0ZShyZXEpOwoJCWJyZWFrOwoKCWNhc2UgVkhEX09QX0JJVE1BUF9SRUFEOgoJCWZpbmlz aF9iaXRtYXBfcmVhZChyZXEpOwoJCWJyZWFrOwoKCWNhc2UgVkhEX09QX0JJVE1BUF9XUklURToK CQlmaW5pc2hfYml0bWFwX3dyaXRlKHJlcSk7CgkJYnJlYWs7CgoJY2FzZSBWSERfT1BfWkVST19C TV9XUklURToKCQlmaW5pc2hfemVyb19ibV93cml0ZShyZXEpOwoJCWJyZWFrOwoKCWNhc2UgVkhE X09QX1JFRFVOREFOVF9CTV9XUklURToKCQlmaW5pc2hfcmVkdW5kYW50X2JtX3dyaXRlKHJlcSk7 CgkJYnJlYWs7CgoJY2FzZSBWSERfT1BfQkFUX1dSSVRFOgoJCWZpbmlzaF9iYXRfd3JpdGUocmVx KTsKCQlicmVhazsKCglkZWZhdWx0OgoJCUFTU0VSVCgwKTsKCQlicmVhazsKCX0KfQoKdm9pZCAK dmhkX2RlYnVnKHRkX2RyaXZlcl90ICpkcml2ZXIpCnsKCWludCBpOwoJc3RydWN0IHZoZF9zdGF0 ZSAqcyA9IChzdHJ1Y3QgdmhkX3N0YXRlICopZHJpdmVyLT5kYXRhOwoKCURCRyhUTE9HX1dBUk4s ICIlczogUVVFVUVEOiAweCUwOCJQUkl4NjQiLCBDT01QTEVURUQ6IDB4JTA4IlBSSXg2NCIsICIK CSAgICAiUkVUVVJORUQ6IDB4JTA4IlBSSXg2NCJcbiIsIHMtPnZoZC5maWxlLCBzLT5xdWV1ZWQs IHMtPmNvbXBsZXRlZCwKCSAgICBzLT5yZXR1cm5lZCk7CglEQkcoVExPR19XQVJOLCAiV1JJVEVT OiAweCUwOCJQUkl4NjQiLCBBVkdfV1JJVEVfU0laRTogJWZcbiIsCgkgICAgcy0+d3JpdGVzLCAo cy0+d3JpdGVzID8gKChmbG9hdClzLT53cml0ZV9zaXplIC8gcy0+d3JpdGVzKSA6IDAuMCkpOwoJ REJHKFRMT0dfV0FSTiwgIlJFQURTOiAweCUwOCJQUkl4NjQiLCBBVkdfUkVBRF9TSVpFOiAlZlxu IiwKCSAgICBzLT5yZWFkcywgKHMtPnJlYWRzID8gKChmbG9hdClzLT5yZWFkX3NpemUgLyBzLT5y ZWFkcykgOiAwLjApKTsKCglEQkcoVExPR19XQVJOLCAiQUxMT0NBVEVEIFJFUVVFU1RTOiAoJXUg dG90YWwpXG4iLCBWSERfUkVRU19EQVRBKTsKCWZvciAoaSA9IDA7IGkgPCBWSERfUkVRU19EQVRB OyBpKyspIHsKCQlzdHJ1Y3QgdmhkX3JlcXVlc3QgKnIgPSAmcy0+dnJlcV9saXN0W2ldOwoJCXRk X3JlcXVlc3RfdCAqdCAgICAgICA9ICZyLT50cmVxOwoJCWNvbnN0IGNoYXIgKnZuYW1lICAgICA9 IHQtPnZyZXEgPyB0LT52cmVxLT5uYW1lOiBOVUxMOwoJCWlmICh0LT5zZWNzKQoJCQlEQkcoVExP R19XQVJOLCAiJWQ6IHZyZXE6ICVzLiVkLCBlcnI6ICVkLCBvcDogJWQsIgoJCQkgICAgIiBsc2Vj OiAweCUwOCJQUkl4NjQiLCBmbGFnczogJWQsIHRoaXM6ICVwLCAiCgkJCSAgICAibmV4dDogJXAs IHR4OiAlcFxuIiwgaSwgdm5hbWUsIHQtPnNpZHgsIHItPmVycm9yLCByLT5vcCwKCQkJICAgIHQt PnNlYywgci0+ZmxhZ3MsIHIsIHItPm5leHQsIHItPnR4KTsKCX0KCglEQkcoVExPR19XQVJOLCAi QklUTUFQIENBQ0hFOlxuIik7Cglmb3IgKGkgPSAwOyBpIDwgVkhEX0NBQ0hFX1NJWkU7IGkrKykg ewoJCWludCBxbnVtID0gMCwgd251bSA9IDAsIHJudW0gPSAwOwoJCXN0cnVjdCB2aGRfYml0bWFw ICpibSA9IHMtPmJpdG1hcFtpXTsKCQlzdHJ1Y3QgdmhkX3RyYW5zYWN0aW9uICp0eDsKCQlzdHJ1 Y3QgdmhkX3JlcXVlc3QgKnI7CgoJCWlmICghYm0pCgkJCWNvbnRpbnVlOwoKCQl0eCA9ICZibS0+ dHg7CgkJciA9IGJtLT5xdWV1ZS5oZWFkOwoJCXdoaWxlIChyKSB7CgkJCXFudW0rKzsKCQkJciA9 IHItPm5leHQ7CgkJfQoKCQlyID0gYm0tPndhaXRpbmcuaGVhZDsKCQl3aGlsZSAocikgewoJCQl3 bnVtKys7CgkJCXIgPSByLT5uZXh0OwoJCX0KCgkJciA9IHR4LT5yZXF1ZXN0cy5oZWFkOwoJCXdo aWxlIChyKSB7CgkJCXJudW0rKzsKCQkJciA9IHItPm5leHQ7CgkJfQoKCQlEQkcoVExPR19XQVJO LCAiJWQ6IGJsazogMHglMDR4LCBzdGF0dXM6IDB4JTA4eCwgcTogJXAsIHFudW06ICVkLCB3OiAl cCwgIgoJCSAgICAid251bTogJWQsIGxvY2tlZDogJWQsIGluIHVzZTogJWQsIHR4OiAlcCwgdHhf ZXJyb3I6ICVkLCAiCgkJICAgICJzdGFydGVkOiAlZCwgZmluaXNoZWQ6ICVkLCBzdGF0dXM6ICV1 LCByZXFzOiAlcCwgbnJlcXM6ICVkXG4iLAoJCSAgICBpLCBibS0+YmxrLCBibS0+c3RhdHVzLCBi bS0+cXVldWUuaGVhZCwgcW51bSwgYm0tPndhaXRpbmcuaGVhZCwKCQkgICAgd251bSwgYml0bWFw X2xvY2tlZChibSksIGJpdG1hcF9pbl91c2UoYm0pLCB0eCwgdHgtPmVycm9yLAoJCSAgICB0eC0+ c3RhcnRlZCwgdHgtPmZpbmlzaGVkLCB0eC0+c3RhdHVzLCB0eC0+cmVxdWVzdHMuaGVhZCwgcm51 bSk7Cgl9CgoJREJHKFRMT0dfV0FSTiwgIkJBVDogc3RhdHVzOiAweCUwOHgsIHBid19ibGs6IDB4 JTA0eCwgIgoJICAgICJwYndfb2ZmOiAweCUwOCJQUkl4NjQiLCB0eDogJXBcbiIsIHMtPmJhdC5z dGF0dXMsIHMtPmJhdC5wYndfYmxrLAoJICAgIHMtPmJhdC5wYndfb2Zmc2V0LCBzLT5iYXQucmVx LnR4KTsKCi8qCglmb3IgKGkgPSAwOyBpIDwgcy0+aGRyLm1heF9iYXRfc2l6ZTsgaSsrKQoJCURQ UklOVEYoIiVkOiAldVxuIiwgaSwgcy0+YmF0LmJhdFtpXSk7CiovCn0KCnN0cnVjdCB0YXBfZGlz ayB0YXBkaXNrX3ZoZCA9IHsKCS5kaXNrX3R5cGUgICAgICAgICAgPSAidGFwZGlza192aGQiLAoJ LmZsYWdzICAgICAgICAgICAgICA9IDAsCgkucHJpdmF0ZV9kYXRhX3NpemUgID0gc2l6ZW9mKHN0 cnVjdCB2aGRfc3RhdGUpLAoJLnRkX29wZW4gICAgICAgICAgICA9IF92aGRfb3BlbiwKCS50ZF9j bG9zZSAgICAgICAgICAgPSBfdmhkX2Nsb3NlLAoJLnRkX3F1ZXVlX3JlYWQgICAgICA9IHZoZF9x dWV1ZV9yZWFkLAoJLnRkX3F1ZXVlX3dyaXRlICAgICA9IHZoZF9xdWV1ZV93cml0ZSwKCS50ZF9n ZXRfcGFyZW50X2lkICAgPSB2aGRfZ2V0X3BhcmVudF9pZCwKCS50ZF92YWxpZGF0ZV9wYXJlbnQg PSB2aGRfdmFsaWRhdGVfcGFyZW50LAoJLnRkX2RlYnVnICAgICAgICAgICA9IHZoZF9kZWJ1ZywK fTsK --001a11c204facc45420519f4942c Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --001a11c204facc45420519f4942c-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Akash Talole Subject: Help Date: Thu, 23 Jul 2015 20:35:20 +0530 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=089e0149c47651c660051b8c376e Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org --089e0149c47651c660051b8c376e Content-Type: multipart/alternative; boundary=089e0149c47651c65b051b8c376c --089e0149c47651c65b051b8c376c Content-Type: text/plain; charset=UTF-8 Hello, Issue in tapdisk-vbd.c Why td_queue_write(parent,treq); is called in static void __tapdisk_vbd_reissue_td_request(td_vbd_t *vbd,td_image_t *image, td_request_t treq) function as we can't write in parent vhd because it is read only. I have attached the code of tapdisk-vbd.c and block-vhd.c. And please tell me about how to write into child vhd after reading from parent vhd in block-vhd.c in case of VHD_BM_BIT_CLEAR in function vhd_queue_read(). Thanks. --089e0149c47651c65b051b8c376c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hello,

Issue in tapdisk-vbd.= c

Why td_queue_write(parent,treq); is called in =C2=A0s= tatic void
__tapdisk_vbd_reissue_td_request(td_vbd_t *vbd,td_image_t *i= mage, td_request_t treq) function as we can't write in parent vhd becau= se it is read only.=C2=A0

I have attached the code= of tapdisk-vbd.c and block-vhd.c.

And please tell= me about how to write into child vhd after reading from parent vhd in bloc= k-vhd.c in case of VHD_BM_BIT_CLEAR in function vhd_queue_read().

Thanks.
--089e0149c47651c65b051b8c376c-- --089e0149c47651c660051b8c376e Content-Type: text/x-csrc; charset=US-ASCII; name="tapdisk-vbd.c" Content-Disposition: attachment; filename="tapdisk-vbd.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_icgbqauw0 LyoKICogQ29weXJpZ2h0IChDKSBDaXRyaXggU3lzdGVtcyBJbmMuCiAqCiAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK ICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24g Mi4xIG9ubHkKICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLiwKICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAgMDIxMTAtMTMwMSwgVVNBLgogKi8KCiNpZmRlZiBIQVZFX0NPTkZJR19ICiNpbmNsdWRlICJj b25maWcuaCIKI2VuZGlmCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPGVycm5vLmg+CiNp bmNsdWRlIDxmY250bC5oPgojaW5jbHVkZSA8cmVnZXguaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgoj aW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxsaWJnZW4uaD4KI2luY2x1ZGUgPHN5cy9tbWFu Lmg+CiNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KCiNpbmNsdWRlICJkZWJ1Zy5oIgojaW5jbHVkZSAibGlidmhkLmgiCiNp bmNsdWRlICJ0YXBkaXNrLWJsa3RhcC5oIgojaW5jbHVkZSAidGFwZGlzay1pbWFnZS5oIgojaW5j bHVkZSAidGFwZGlzay1kcml2ZXIuaCIKI2luY2x1ZGUgInRhcGRpc2stc2VydmVyLmgiCiNpbmNs dWRlICJ0YXBkaXNrLXZiZC5oIgojaW5jbHVkZSAidGFwZGlzay1kaXNrdHlwZS5oIgojaW5jbHVk ZSAidGFwZGlzay1pbnRlcmZhY2UuaCIKI2luY2x1ZGUgInRhcGRpc2stc3RhdHMuaCIKI2luY2x1 ZGUgInRhcGRpc2stc3RvcmFnZS5oIgojaW5jbHVkZSAidGFwZGlzay1uYmRzZXJ2ZXIuaCIKI2lu Y2x1ZGUgInRkLXN0YXRzLmgiCiNpbmNsdWRlICJ0YXBkaXNrLXV0aWxzLmgiCiNpbmNsdWRlICJt ZDUuaCIKCiNkZWZpbmUgREJHKF9sZXZlbCwgX2YsIF9hLi4uKSB0bG9nX3dyaXRlKF9sZXZlbCwg X2YsICMjX2EpCiNkZWZpbmUgRVJSKF9lcnIsIF9mLCBfYS4uLikgdGxvZ19lcnJvcihfZXJyLCBf ZiwgIyNfYSkKCiNkZWZpbmUgSU5GTyhfZiwgX2EuLi4pICAgICAgICAgICAgdGxvZ19zeXNsb2co VExPR19JTkZPLCAidmJkOiAiIF9mLCAjI19hKQojZGVmaW5lIEVSUk9SKF9mLCBfYS4uLikgICAg ICAgICAgIHRsb2dfc3lzbG9nKFRMT0dfV0FSTiwgInZiZDogIiBfZiwgIyNfYSkKCiNkZWZpbmUg VERfVkJEX0VJT19SRVRSSUVTICAgICAgICAgIDEwCiNkZWZpbmUgVERfVkJEX0VJT19TTEVFUCAg ICAgICAgICAgIDEKI2RlZmluZSBURF9WQkRfV0FUQ0hET0dfVElNRU9VVCAgICAgMTAKCnN0YXRp YyB2b2lkIHRhcGRpc2tfdmJkX2NvbXBsZXRlX3ZiZF9yZXF1ZXN0KHRkX3ZiZF90ICosIHRkX3Zi ZF9yZXF1ZXN0X3QgKik7CnN0YXRpYyBpbnQgIHRhcGRpc2tfdmJkX3F1ZXVlX3JlYWR5KHRkX3Zi ZF90ICopOwpzdGF0aWMgdm9pZCB0YXBkaXNrX3ZiZF9jaGVja19xdWV1ZV9zdGF0ZSh0ZF92YmRf dCAqKTsKCi8qCiAqIGluaXRpYWxpemF0aW9uCiAqLwoKc3RhdGljIHZvaWQKdGFwZGlza192YmRf bWFya19wcm9ncmVzcyh0ZF92YmRfdCAqdmJkKQp7CglnZXR0aW1lb2ZkYXkoJnZiZC0+dHMsIE5V TEwpOwp9Cgp0ZF92YmRfdCoKdGFwZGlza192YmRfY3JlYXRlKHVpbnQxNl90IHV1aWQpCnsKCXRk X3ZiZF90ICp2YmQ7CgoJdmJkID0gY2FsbG9jKDEsIHNpemVvZih0ZF92YmRfdCkpOwoJaWYgKCF2 YmQpIHsKCQlFUFJJTlRGKCJmYWlsZWQgdG8gYWxsb2NhdGUgdGFwZGlzayBzdGF0ZVxuIik7CgkJ cmV0dXJuIE5VTEw7Cgl9CgogICAgc2htX2luaXQoJnZiZC0+cnJkLnNobSk7CgoJdmJkLT51dWlk ICAgICAgICA9IHV1aWQ7Cgl2YmQtPnJlcV90aW1lb3V0ID0gVERfVkJEX1JFUVVFU1RfVElNRU9V VDsKCglJTklUX0xJU1RfSEVBRCgmdmJkLT5pbWFnZXMpOwoJSU5JVF9MSVNUX0hFQUQoJnZiZC0+ bmV3X3JlcXVlc3RzKTsKCUlOSVRfTElTVF9IRUFEKCZ2YmQtPnBlbmRpbmdfcmVxdWVzdHMpOwoJ SU5JVF9MSVNUX0hFQUQoJnZiZC0+ZmFpbGVkX3JlcXVlc3RzKTsKCUlOSVRfTElTVF9IRUFEKCZ2 YmQtPmNvbXBsZXRlZF9yZXF1ZXN0cyk7CglJTklUX0xJU1RfSEVBRCgmdmJkLT5uZXh0KTsKICAg IElOSVRfTElTVF9IRUFEKCZ2YmQtPnJpbmdzKTsKICAgIElOSVRfTElTVF9IRUFEKCZ2YmQtPmRl YWRfcmluZ3MpOwoJdGFwZGlza192YmRfbWFya19wcm9ncmVzcyh2YmQpOwoKCXJldHVybiB2YmQ7 Cn0KCmludAp0YXBkaXNrX3ZiZF9pbml0aWFsaXplKGludCByZmQsIGludCB3ZmQsIHVpbnQxNl90 IHV1aWQpCnsKCXRkX3ZiZF90ICp2YmQ7CgoJdmJkID0gdGFwZGlza19zZXJ2ZXJfZ2V0X3ZiZCh1 dWlkKTsKCWlmICh2YmQpIHsKCQlFUFJJTlRGKCJkdXBsaWNhdGUgdmJkcyEgJXVcbiIsIHV1aWQp OwoJCXJldHVybiAtRUVYSVNUOwoJfQoKCXZiZCA9IHRhcGRpc2tfdmJkX2NyZWF0ZSh1dWlkKTsK Cgl0YXBkaXNrX3NlcnZlcl9hZGRfdmJkKHZiZCk7CgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxp bmUgdm9pZAp0YXBkaXNrX3ZiZF9hZGRfaW1hZ2UodGRfdmJkX3QgKnZiZCwgdGRfaW1hZ2VfdCAq aW1hZ2UpCnsKCWxpc3RfYWRkX3RhaWwoJmltYWdlLT5uZXh0LCAmdmJkLT5pbWFnZXMpOwp9Cgpz dGF0aWMgaW5saW5lIGludAp0YXBkaXNrX3ZiZF9pc19sYXN0X2ltYWdlKHRkX3ZiZF90ICp2YmQs IHRkX2ltYWdlX3QgKmltYWdlKQp7CglyZXR1cm4gbGlzdF9pc19sYXN0KCZpbWFnZS0+bmV4dCwg JnZiZC0+aW1hZ2VzKTsKfQoKc3RhdGljIGlubGluZSB0ZF9pbWFnZV90ICoKdGFwZGlza192YmRf Zmlyc3RfaW1hZ2UodGRfdmJkX3QgKnZiZCkKewoJdGRfaW1hZ2VfdCAqaW1hZ2UgPSBOVUxMOwoJ aWYgKCFsaXN0X2VtcHR5KCZ2YmQtPmltYWdlcykpCgkJaW1hZ2UgPSBsaXN0X2VudHJ5KHZiZC0+ aW1hZ2VzLm5leHQsIHRkX2ltYWdlX3QsIG5leHQpOwoJcmV0dXJuIGltYWdlOwp9CgpzdGF0aWMg aW5saW5lIHRkX2ltYWdlX3QgKgp0YXBkaXNrX3ZiZF9sYXN0X2ltYWdlKHRkX3ZiZF90ICp2YmQp CnsKCXRkX2ltYWdlX3QgKmltYWdlID0gTlVMTDsKCWlmICghbGlzdF9lbXB0eSgmdmJkLT5pbWFn ZXMpKQoJCWltYWdlID0gbGlzdF9lbnRyeSh2YmQtPmltYWdlcy5wcmV2LCB0ZF9pbWFnZV90LCBu ZXh0KTsKCXJldHVybiBpbWFnZTsKfQoKc3RhdGljIGlubGluZSB0ZF9pbWFnZV90ICoKdGFwZGlz a192YmRfbmV4dF9pbWFnZSh0ZF9pbWFnZV90ICppbWFnZSkKewoJcmV0dXJuIGxpc3RfZW50cnko aW1hZ2UtPm5leHQubmV4dCwgdGRfaW1hZ2VfdCwgbmV4dCk7Cn0KCnN0YXRpYyBpbnQKdGFwZGlz a192YmRfdmFsaWRhdGVfY2hhaW4odGRfdmJkX3QgKnZiZCkKewoJcmV0dXJuIHRhcGRpc2tfaW1h Z2VfdmFsaWRhdGVfY2hhaW4oJnZiZC0+aW1hZ2VzKTsKfQoKc3RhdGljIGludAp2YmRfc3RhdHNf ZGVzdHJveSh0ZF92YmRfdCAqdmJkKSB7CgogICAgaW50IGVyciA9IDA7CgogICAgQVNTRVJUKHZi ZCk7CgogICAgZXJyID0gc2htX2Rlc3Ryb3koJnZiZC0+cnJkLnNobSk7CiAgICBpZiAodW5saWtl bHkoZXJyKSkgewogICAgICAgIEVQUklOVEYoImZhaWxlZCB0byBkZXN0cm95IFJSRCBmaWxlOiAl c1xuIiwgc3RyZXJyb3IoZXJyKSk7CiAgICAgICAgZ290byBvdXQ7CiAgICB9CgogICAgZnJlZSh2 YmQtPnJyZC5zaG0ucGF0aCk7CiAgICB2YmQtPnJyZC5zaG0ucGF0aCA9IE5VTEw7CgpvdXQ6CiAg ICByZXR1cm4gLWVycjsKfQoKc3RhdGljIGludAp2YmRfc3RhdHNfY3JlYXRlKHRkX3ZiZF90ICp2 YmQpIHsKCiAgICBpbnQgZXJyOwoKICAgIEFTU0VSVCh2YmQpOwoKCWVyciA9IG1rZGlyKCIvZGV2 L3NobS9tZXRyaWNzIiwgU19JUlVTUiB8IFNfSVdVU1IpOwoJaWYgKGxpa2VseShlcnIpKSB7CiAg ICAgICAgZXJyID0gZXJybm87CiAgICAgICAgaWYgKHVubGlrZWx5KGVyciAhPSBFRVhJU1QpKQog ICAgCQlnb3RvIG91dDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGVyciA9IDA7CiAgICB9Cgog ICAgLyoKICAgICAqIEZJWE1FIFJlbmFtZSB0aGlzIHRvIHNvbWV0aGluZyBsaWtlICJ2YmQzLWRv bWlkLWRldmlkIi4gQ29uc2lkZXIKICAgICAqIGNvbnNvbGlkYXRpbmcgdGhpcyB3aXRoIHRoZSBp b19yaW5nIHNoYXJlZCBtZW1vcnkgZmlsZS4gQ2hlY2sgaWYgYmxrYmFjawogICAgICogZXhwb3J0 cyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBpbiBzb21lIHN5c2ZzIGZpbGUgYW5kIGlmIHNvIG1vdmUg dGhpcyB0bwogICAgICogdGhlIHJpbmcgbG9jYXRpb24uCiAgICAgKi8KICAgIGVyciA9IGFzcHJp bnRmKCZ2YmQtPnJyZC5zaG0ucGF0aCwgIi9kZXYvc2htL21ldHJpY3MvdGFwLSVkLSVkIiwgZ2V0 cGlkKCksCiAgICAgICAgICAgIHZiZC0+dXVpZCk7CiAgICBpZiAoZXJyID09IC0xKSB7CiAgICAg ICAgZXJyID0gZXJybm87CiAgICAgICAgdmJkLT5ycmQuc2htLnBhdGggPSBOVUxMOwogICAgICAg IEVQUklOVEYoImZhaWxlZCB0byBjcmVhdGUgbWV0cmljIGZpbGU6ICVzXG4iLCBzdHJlcnJvcihl cnIpKTsKICAgICAgICBnb3RvIG91dDsKICAgIH0KICAgIGVyciA9IDA7CgogICAgdmJkLT5ycmQu c2htLnNpemUgPSBQQUdFX1NJWkU7CiAgICBlcnIgPSBzaG1fY3JlYXRlKCZ2YmQtPnJyZC5zaG0p OwogICAgaWYgKGVycikKICAgICAgICBFUFJJTlRGKCJmYWlsZWQgdG8gY3JlYXRlIFJSRDogJXNc biIsIHN0cmVycm9yKGVycikpOwoKb3V0OgogICAgaWYgKGVycikgewogICAgICAgIGludCBlcnIy ID0gdmJkX3N0YXRzX2Rlc3Ryb3kodmJkKTsKICAgICAgICBpZiAoZXJyMikKICAgICAgICAgICAg RVBSSU5URigiZmFpbGVkIHRvIGNsZWFuIHVwIGZhaWxlZCBSUkQgc2hhcmVkIG1lbW9yeSBjcmVh dGlvbjogIgogICAgICAgICAgICAgICAgICAgICIlcyAoZXJyb3IgaWdub3JlZClcbiIsIHN0cmVy cm9yKC1lcnIyKSk7CiAgICB9CiAgICByZXR1cm4gLWVycjsKfQoKdm9pZAp0YXBkaXNrX3ZiZF9j bG9zZV92ZGkodGRfdmJkX3QgKnZiZCkKewogICAgaW50IGVycjsKCiAgICBlcnIgPSB2YmRfc3Rh dHNfZGVzdHJveSh2YmQpOwogICAgaWYgKGVycikgewogICAgICAgIEVQUklOVEYoImZhaWxlZCB0 byBkZXN0cm95IFJSRCBzdGF0cyBmaWxlOiAlcyAoZXJyb3IgaWdub3JlZClcbiIsCiAgICAgICAg ICAgICAgICBzdHJlcnJvcigtZXJyKSk7CiAgICB9CgoJdGFwZGlza19pbWFnZV9jbG9zZV9jaGFp bigmdmJkLT5pbWFnZXMpOwoKCWlmICh2YmQtPnNlY29uZGFyeSAmJgoJICAgIHZiZC0+c2Vjb25k YXJ5X21vZGUgIT0gVERfVkJEX1NFQ09OREFSWV9NSVJST1IpIHsKCQl0YXBkaXNrX2ltYWdlX2Ns b3NlKHZiZC0+c2Vjb25kYXJ5KTsKCQl2YmQtPnNlY29uZGFyeSA9IE5VTEw7Cgl9CgoJaWYgKHZi ZC0+cmV0aXJlZCkgewoJCXRhcGRpc2tfaW1hZ2VfY2xvc2UodmJkLT5yZXRpcmVkKTsKCQl2YmQt PnJldGlyZWQgPSBOVUxMOwoJfQoKCXRkX2ZsYWdfc2V0KHZiZC0+c3RhdGUsIFREX1ZCRF9DTE9T RUQpOwp9CgpzdGF0aWMgaW50CnRhcGRpc2tfdmJkX2FkZF9ibG9ja19jYWNoZSh0ZF92YmRfdCAq dmJkKQp7Cgl0ZF9pbWFnZV90ICpjYWNoZSwgKmltYWdlLCAqdGFyZ2V0LCAqdG1wOwoJaW50IGVy cjsKCgl0YXJnZXQgPSBOVUxMOwoKCXRhcGRpc2tfdmJkX2Zvcl9lYWNoX2ltYWdlKHZiZCwgaW1h Z2UsIHRtcCkKCQlpZiAodGRfZmxhZ190ZXN0KGltYWdlLT5mbGFncywgVERfT1BFTl9SRE9OTFkp ICYmCgkJICAgIHRkX2ZsYWdfdGVzdChpbWFnZS0+ZmxhZ3MsIFREX09QRU5fU0hBUkVBQkxFKSkg ewoJCQl0YXJnZXQgPSBpbWFnZTsKCQkJYnJlYWs7CgkJfQoKCWlmICghdGFyZ2V0KQoJCXJldHVy biAwOwoKCWNhY2hlID0gdGFwZGlza19pbWFnZV9hbGxvY2F0ZSh0YXJnZXQtPm5hbWUsCgkJCQkg ICAgICAgRElTS19UWVBFX0JMT0NLX0NBQ0hFLAoJCQkJICAgICAgIHRhcmdldC0+ZmxhZ3MpOwoJ aWYgKCFjYWNoZSkKCQlyZXR1cm4gLUVOT01FTTsKCgkvKiB0cnkgdG8gbG9hZCBleGlzdGluZyBj YWNoZSAqLwoJZXJyID0gdGRfbG9hZChjYWNoZSk7CglpZiAoIWVycikKCQlnb3RvIGRvbmU7CgoJ LyogaGFjayBkcml2ZXIgdG8gc2VuZCBvcGVuKCkgY29ycmVjdCBpbWFnZSBzaXplICovCglpZiAo IXRhcmdldC0+ZHJpdmVyKSB7CgkJZXJyID0gLUVOT0RFVjsKCQlnb3RvIGZhaWw7Cgl9CgoJY2Fj aGUtPmRyaXZlciA9IHRhcGRpc2tfZHJpdmVyX2FsbG9jYXRlKGNhY2hlLT50eXBlLAoJCQkJCQlj YWNoZS0+bmFtZSwKCQkJCQkJY2FjaGUtPmZsYWdzKTsKCWlmICghY2FjaGUtPmRyaXZlcikgewoJ CWVyciA9IC1FTk9NRU07CgkJZ290byBmYWlsOwoJfQoKCWNhY2hlLT5kcml2ZXItPmluZm8gPSB0 YXJnZXQtPmRyaXZlci0+aW5mbzsKCgkvKiB0cnkgdG8gb3BlbiBuZXcgY2FjaGUgKi8KCWVyciA9 IHRkX29wZW4oY2FjaGUpOwoJaWYgKCFlcnIpCgkJZ290byBkb25lOwoKZmFpbDoKCS8qIGdpdmUg dXAgKi8KCXRhcGRpc2tfaW1hZ2VfZnJlZSh0YXJnZXQpOwoJcmV0dXJuIGVycjsKCmRvbmU6Cgkv KiBpbnNlcnQgY2FjaGUgYmVmb3JlIGltYWdlICovCglsaXN0X2FkZCgmY2FjaGUtPm5leHQsIHRh cmdldC0+bmV4dC5wcmV2KTsKCXJldHVybiAwOwp9CgpzdGF0aWMgaW50CnRhcGRpc2tfdmJkX2Fk ZF9sb2NhbF9jYWNoZSh0ZF92YmRfdCAqdmJkKQp7Cgl0ZF9pbWFnZV90ICpjYWNoZSwgKnBhcmVu dDsKCWludCBlcnI7CgoJcGFyZW50ID0gdGFwZGlza192YmRfZmlyc3RfaW1hZ2UodmJkKTsKCWlm ICh0YXBkaXNrX3ZiZF9pc19sYXN0X2ltYWdlKHZiZCwgcGFyZW50KSkgewoJCURQUklOVEYoIlNp bmdsZS1pbWFnZSBjaGFpbiwgbm90aGluZyB0byBjYWNoZSIpOwoJCXJldHVybiAwOwoJfQoKCWNh Y2hlID0gdGFwZGlza19pbWFnZV9hbGxvY2F0ZShwYXJlbnQtPm5hbWUsCgkJCQkgICAgICAgRElT S19UWVBFX0xDQUNIRSwKCQkJCSAgICAgICBwYXJlbnQtPmZsYWdzKTsKCglpZiAoIWNhY2hlKQoJ CXJldHVybiAtRU5PTUVNOwoKCS8qIHRyeSB0byBsb2FkIGV4aXN0aW5nIGNhY2hlICovCgllcnIg PSB0ZF9sb2FkKGNhY2hlKTsKCWlmICghZXJyKQoJCWdvdG8gZG9uZTsKCgljYWNoZS0+ZHJpdmVy ID0gdGFwZGlza19kcml2ZXJfYWxsb2NhdGUoY2FjaGUtPnR5cGUsCgkJCQkJCWNhY2hlLT5uYW1l LAoJCQkJCQljYWNoZS0+ZmxhZ3MpOwoJaWYgKCFjYWNoZS0+ZHJpdmVyKSB7CgkJZXJyID0gLUVO T01FTTsKCQlnb3RvIGZhaWw7Cgl9CgoJY2FjaGUtPmRyaXZlci0+aW5mbyA9IHBhcmVudC0+ZHJp dmVyLT5pbmZvOwoKCS8qIHRyeSB0byBvcGVuIG5ldyBjYWNoZSAqLwoJZXJyID0gdGRfb3Blbihj YWNoZSk7CglpZiAoIWVycikKCQlnb3RvIGRvbmU7CgpmYWlsOgoJdGFwZGlza19pbWFnZV9mcmVl KGNhY2hlKTsKCXJldHVybiBlcnI7Cgpkb25lOgoJLyogaW5zZXJ0IGNhY2hlIHJpZ2h0IGFib3Zl IGxlYWYgaW1hZ2UgKi8KCWxpc3RfYWRkKCZjYWNoZS0+bmV4dCwgJnBhcmVudC0+bmV4dCk7CgoJ RFBSSU5URigiQWRkZWQgbG9jYWxfY2FjaGUgZHJpdmVyXG4iKTsKCXJldHVybiAwOwp9CgppbnQK dGFwZGlza192YmRfYWRkX3NlY29uZGFyeSh0ZF92YmRfdCAqdmJkKQp7Cgl0ZF9pbWFnZV90ICps ZWFmLCAqc2Vjb25kID0gTlVMTDsKCWNvbnN0IGNoYXIgKnBhdGg7CglpbnQgdHlwZSwgZXJyOwoK CWlmIChzdHJjbXAodmJkLT5zZWNvbmRhcnlfbmFtZSwgIm51bGwiKSA9PSAwKSB7CgkJRFBSSU5U RigiUmVtb3Zpbmcgc2Vjb25kYXJ5IGltYWdlXG4iKTsKCQl2YmQtPnNlY29uZGFyeV9tb2RlID0g VERfVkJEX1NFQ09OREFSWV9ESVNBQkxFRDsKCQl2YmQtPnNlY29uZGFyeSA9IE5VTEw7CgkJdmJk LT5uYmRfbWlycm9yX2ZhaWxlZCA9IDA7CgkJcmV0dXJuIDA7Cgl9CgoJRFBSSU5URigiQWRkaW5n IHNlY29uZGFyeSBpbWFnZTogJXNcbiIsIHZiZC0+c2Vjb25kYXJ5X25hbWUpOwoKCXR5cGUgPSB0 YXBkaXNrX2Rpc2t0eXBlX3BhcnNlX3BhcmFtcyh2YmQtPnNlY29uZGFyeV9uYW1lLCAmcGF0aCk7 CglpZiAodHlwZSA8IDApCgkJcmV0dXJuIHR5cGU7CgoJbGVhZiA9IHRhcGRpc2tfdmJkX2ZpcnN0 X2ltYWdlKHZiZCk7CglpZiAoIWxlYWYpIHsKCQllcnIgPSAtRUlOVkFMOwoJCWdvdG8gZmFpbDsK CX0KCgllcnIgPSB0YXBkaXNrX2ltYWdlX29wZW4odHlwZSwgcGF0aCwgbGVhZi0+ZmxhZ3MsICZz ZWNvbmQpOwoJaWYgKGVycikgewoJCWlmICh0eXBlID09IERJU0tfVFlQRV9OQkQpCgkJCXZiZC0+ bmJkX21pcnJvcl9mYWlsZWQgPSAxOwoKCQl2YmQtPnNlY29uZGFyeT1OVUxMOwoJCXZiZC0+c2Vj b25kYXJ5X21vZGU9VERfVkJEX1NFQ09OREFSWV9ESVNBQkxFRDsKCQkKCQlnb3RvIGZhaWw7Cgl9 CgoJaWYgKHNlY29uZC0+aW5mby5zaXplICE9IGxlYWYtPmluZm8uc2l6ZSkgewoJCUVQUklOVEYo IlNlY29uZGFyeSBpbWFnZSBzaXplICUiUFJJdTY0IiAhPSBpbWFnZSBzaXplICUiUFJJdTY0Ilxu IiwKCQkJc2Vjb25kLT5pbmZvLnNpemUsIGxlYWYtPmluZm8uc2l6ZSk7CgkJZXJyID0gLUVJTlZB TDsKCQlnb3RvIGZhaWw7Cgl9CgoJdmJkLT5zZWNvbmRhcnkgPSBzZWNvbmQ7CglsZWFmLT5mbGFn cyB8PSBURF9JR05PUkVfRU5PU1BDOwoJaWYgKHRkX2ZsYWdfdGVzdCh2YmQtPmZsYWdzLCBURF9P UEVOX1NUQU5EQlkpKSB7CgkJRFBSSU5URigiSW4gc3RhbmRieSBtb2RlXG4iKTsKCQl2YmQtPnNl Y29uZGFyeV9tb2RlID0gVERfVkJEX1NFQ09OREFSWV9TVEFOREJZOwoJfSBlbHNlIHsKCQlEUFJJ TlRGKCJJbiBtaXJyb3IgbW9kZVxuIik7CgkJdmJkLT5zZWNvbmRhcnlfbW9kZSA9IFREX1ZCRF9T RUNPTkRBUllfTUlSUk9SOwoJCS8qCgkJICogd2UgYWN0dWFsbHkgbmVlZCB0aGlzIGltYWdlIHRv IGFsc28gYmUgcGFydCBvZiB0aGUgY2hhaW4sIAoJCSAqIHNpbmNlIGl0IG1heSBhbHJlYWR5IGNv bnRhaW4gZGF0YQoJCSAqLwoJCWxpc3RfYWRkKCZzZWNvbmQtPm5leHQsICZsZWFmLT5uZXh0KTsK CX0KCglEUFJJTlRGKCJBZGRlZCBzZWNvbmRhcnkgaW1hZ2VcbiIpOwoJcmV0dXJuIDA7CgpmYWls OgoJaWYgKHNlY29uZCkKCQl0YXBkaXNrX2ltYWdlX2Nsb3NlKHNlY29uZCk7CglyZXR1cm4gZXJy Owp9CgpzdGF0aWMgdm9pZCBzaWduYWxfZW5vc3BjKHRkX3ZiZF90ICp2YmQpCnsKCWludCBmZCwg ZXJyOwoJY2hhciAqZm47CgoJZXJyID0gYXNwcmludGYoJmZuLCBCTEtUQVAyX0VOT1NQQ19TSUdO QUxfRklMRSIlZCIsIHZiZC0+dGFwLT5taW5vcik7CglpZiAoZXJyID09IC0xKSB7CgkJRVBSSU5U RigiRmFpbGVkIHRvIHNpZ25hbCBFTk9TUEMgY29uZGl0aW9uXG4iKTsKCQlyZXR1cm47Cgl9CgoJ ZmQgPSBvcGVuKGZuLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX05PTkJMT0NLLCAwNjY2KTsKCWlm IChmZCA9PSAtMSkKCQlFUFJJTlRGKCJGYWlsZWQgdG8gb3BlbiBmaWxlIHRvIHNpZ25hbCBFTk9T UEMgY29uZGl0aW9uXG4iKTsKCWVsc2UKCQljbG9zZShmZCk7CgoJZnJlZShmbik7Cn0KCiNpZiAw CnN0YXRpYyBpbnQKdGFwZGlza192YmRfb3Blbl9pbmRleCh0ZF92YmRfdCAqdmJkKQp7CglpbnQg ZXJyOwoJY2hhciAqcGF0aDsKCXRkX2ZsYWdfdCBmbGFnczsKCXRkX2ltYWdlX3QgKmxhc3QsICpp bWFnZTsKCglsYXN0ID0gdGFwZGlza192YmRfbGFzdF9pbWFnZSh2YmQpOwoJZXJyICA9IGFzcHJp bnRmKCZwYXRoLCAiJXMuYmF0IiwgbGFzdC0+bmFtZSk7CglpZiAoZXJyID09IC0xKQoJCXJldHVy biAtZXJybm87CgoJZXJyID0gYWNjZXNzKHBhdGgsIFJfT0spOwoJaWYgKGVyciA9PSAtMSkgewoJ CWZyZWUocGF0aCk7CgkJcmV0dXJuIC1lcnJubzsKCX0KCglmbGFncyA9IHZiZC0+ZmxhZ3MgfCBU RF9PUEVOX1JET05MWSB8IFREX09QRU5fU0hBUkVBQkxFOwoJaW1hZ2UgPSB0YXBkaXNrX2ltYWdl X2FsbG9jYXRlKHBhdGgsIERJU0tfVFlQRV9WSU5ERVgsIGZsYWdzKTsKCWlmICghaW1hZ2UpIHsK CQllcnIgPSAtRU5PTUVNOwoJCWdvdG8gZmFpbDsKCX0KCgllcnIgPSB0ZF9vcGVuKGltYWdlKTsK CWlmIChlcnIpCgkJZ290byBmYWlsOwoKCXRhcGRpc2tfdmJkX2FkZF9pbWFnZSh2YmQsIGltYWdl KTsKCXJldHVybiAwOwoKZmFpbDoKCWlmIChpbWFnZSkKCQl0YXBkaXNrX2ltYWdlX2ZyZWUoaW1h Z2UpOwoJZnJlZShwYXRoKTsKCXJldHVybiBlcnI7Cn0KI2VuZGlmCgpzdGF0aWMgaW50CnRhcGRp c2tfdmJkX2FkZF9kaXJ0eV9sb2codGRfdmJkX3QgKnZiZCkKewoJaW50IGVycjsKCXRkX2RyaXZl cl90ICpkcml2ZXI7Cgl0ZF9pbWFnZV90ICpsb2csICpwYXJlbnQ7CgoJZHJpdmVyID0gTlVMTDsK CWxvZyAgICA9IE5VTEw7CgoJcGFyZW50ID0gdGFwZGlza192YmRfZmlyc3RfaW1hZ2UodmJkKTsK Cglsb2cgICAgPSB0YXBkaXNrX2ltYWdlX2FsbG9jYXRlKHBhcmVudC0+bmFtZSwKCQkJCQlESVNL X1RZUEVfTE9HLAoJCQkJCXBhcmVudC0+ZmxhZ3MpOwoJaWYgKCFsb2cpCgkJcmV0dXJuIC1FTk9N RU07CgoJZHJpdmVyID0gdGFwZGlza19kcml2ZXJfYWxsb2NhdGUobG9nLT50eXBlLAoJCQkJCSBs b2ctPm5hbWUsCgkJCQkJIGxvZy0+ZmxhZ3MpOwoJaWYgKCFkcml2ZXIpIHsKCQllcnIgPSAtRU5P TUVNOwoJCWdvdG8gZmFpbDsKCX0KCglkcml2ZXItPmluZm8gPSBwYXJlbnQtPmRyaXZlci0+aW5m bzsKCWxvZy0+ZHJpdmVyICA9IGRyaXZlcjsKCgllcnIgPSB0ZF9vcGVuKGxvZyk7CglpZiAoZXJy KQoJCWdvdG8gZmFpbDsKCgl0YXBkaXNrX3ZiZF9hZGRfaW1hZ2UodmJkLCBsb2cpOwoJcmV0dXJu IDA7CgpmYWlsOgoJdGFwZGlza19pbWFnZV9mcmVlKGxvZyk7CglyZXR1cm4gZXJyOwp9CgppbnQK dGFwZGlza192YmRfb3Blbl92ZGkodGRfdmJkX3QgKnZiZCwgY29uc3QgY2hhciAqbmFtZSwgdGRf ZmxhZ190IGZsYWdzLCBpbnQgcHJ0X2Rldm51bSkKewoJY2hhciAqdG1wID0gdmJkLT5uYW1lOwoJ aW50IGVycjsKCglpZiAoIWxpc3RfZW1wdHkoJnZiZC0+aW1hZ2VzKSkgewoJCWVyciA9IC1FQlVT WTsKCQlnb3RvIGZhaWw7Cgl9CgoJaWYgKCFuYW1lICYmICF2YmQtPm5hbWUpIHsKCQllcnIgPSAt RUlOVkFMOwoJCWdvdG8gZmFpbDsKCX0KCglpZiAobmFtZSkgewoJCXZiZC0+bmFtZSA9IHN0cmR1 cChuYW1lKTsKCQlpZiAoIXZiZC0+bmFtZSkgewoJCQllcnIgPSAtZXJybm87CgkJCWdvdG8gZmFp bDsKCQl9Cgl9CgoJZXJyID0gdGFwZGlza19pbWFnZV9vcGVuX2NoYWluKHZiZC0+bmFtZSwgZmxh Z3MsIHBydF9kZXZudW0sICZ2YmQtPmltYWdlcyk7CglpZiAoZXJyKQoJCWdvdG8gZmFpbDsKCgl0 ZF9mbGFnX2NsZWFyKHZiZC0+c3RhdGUsIFREX1ZCRF9DTE9TRUQpOwoJdmJkLT5mbGFncyA9IGZs YWdzOwoKCWlmICh0ZF9mbGFnX3Rlc3QodmJkLT5mbGFncywgVERfT1BFTl9MT0dfRElSVFkpKSB7 CgkJZXJyID0gdGFwZGlza192YmRfYWRkX2RpcnR5X2xvZyh2YmQpOwoJCWlmIChlcnIpCgkJCWdv dG8gZmFpbDsKCX0KCglpZiAodGRfZmxhZ190ZXN0KHZiZC0+ZmxhZ3MsIFREX09QRU5fQUREX0NB Q0hFKSkgewoJCWVyciA9IHRhcGRpc2tfdmJkX2FkZF9ibG9ja19jYWNoZSh2YmQpOwoJCWlmIChl cnIpCgkJCWdvdG8gZmFpbDsKCX0KCglpZiAodGRfZmxhZ190ZXN0KHZiZC0+ZmxhZ3MsIFREX09Q RU5fTE9DQUxfQ0FDSEUpKSB7CgkJZXJyID0gdGFwZGlza192YmRfYWRkX2xvY2FsX2NhY2hlKHZi ZCk7CgkJaWYgKGVycikKCQkJZ290byBmYWlsOwoJfQoKCWVyciA9IHRhcGRpc2tfdmJkX3ZhbGlk YXRlX2NoYWluKHZiZCk7CglpZiAoZXJyKQoJCWdvdG8gZmFpbDsKCglpZiAodGRfZmxhZ190ZXN0 KHZiZC0+ZmxhZ3MsIFREX09QRU5fU0VDT05EQVJZKSkgewoJCWVyciA9IHRhcGRpc2tfdmJkX2Fk ZF9zZWNvbmRhcnkodmJkKTsKCQlpZiAoZXJyKSB7CgkJCWlmICh2YmQtPm5iZF9taXJyb3JfZmFp bGVkICE9IDEpCgkJCQlnb3RvIGZhaWw7CgkJCUlORk8oIklnbm9yaW5nIGZhaWxlZCBOQkQgc2Vj b25kYXJ5IGF0dGFjaFxuIik7CgkJCWVyciA9IDA7CgkJfQoJfQoKICAgIGVyciA9IHZiZF9zdGF0 c19jcmVhdGUodmJkKTsKICAgIGlmIChlcnIpCiAgICAgICAgZ290byBmYWlsOwoKCWlmICh0bXAg IT0gdmJkLT5uYW1lKQoJCWZyZWUodG1wKTsKCglyZXR1cm4gZXJyOwoKZmFpbDoKCWlmICh2YmQt Pm5hbWUgIT0gdG1wKSB7CgkJZnJlZSh2YmQtPm5hbWUpOwoJCXZiZC0+bmFtZSA9IHRtcDsKCX0K CglpZiAoIWxpc3RfZW1wdHkoJnZiZC0+aW1hZ2VzKSkKCQl0YXBkaXNrX2ltYWdlX2Nsb3NlX2No YWluKCZ2YmQtPmltYWdlcyk7CgoJdmJkLT5mbGFncyA9IDA7CgoJcmV0dXJuIGVycjsKfQoKdm9p ZAp0YXBkaXNrX3ZiZF9kZXRhY2godGRfdmJkX3QgKnZiZCkKewoJdGRfYmxrdGFwX3QgKnRhcCA9 IHZiZC0+dGFwOwoKCWlmICh0YXApIHsKCQl0YXBkaXNrX2Jsa3RhcF9jbG9zZSh0YXApOwoJCXZi ZC0+dGFwID0gTlVMTDsKCX0KfQoKaW50CnRhcGRpc2tfdmJkX2F0dGFjaCh0ZF92YmRfdCAqdmJk LCBjb25zdCBjaGFyICpkZXZuYW1lLCBpbnQgbWlub3IpCnsKCglpZiAodmJkLT50YXApCgkJcmV0 dXJuIC1FQUxSRUFEWTsKCglyZXR1cm4gdGFwZGlza19ibGt0YXBfb3BlbihkZXZuYW1lLCB2YmQs ICZ2YmQtPnRhcCk7Cn0KCi8qCmludAp0YXBkaXNrX3ZiZF9vcGVuKHRkX3ZiZF90ICp2YmQsIGNv bnN0IGNoYXIgKm5hbWUsCgkJIGludCBtaW5vciwgY29uc3QgY2hhciAqcmluZywgdGRfZmxhZ190 IGZsYWdzKQp7CglpbnQgZXJyOwoKCWVyciA9IHRhcGRpc2tfdmJkX29wZW5fdmRpKHZiZCwgbmFt ZSwgZmxhZ3MsIC0xKTsKCWlmIChlcnIpCgkJZ290byBvdXQ7CgoJZXJyID0gdGFwZGlza192YmRf YXR0YWNoKHZiZCwgcmluZywgbWlub3IpOwoJaWYgKGVycikKCQlnb3RvIG91dDsKCglyZXR1cm4g MDsKCm91dDoKCXRhcGRpc2tfdmJkX2RldGFjaCh2YmQpOwoJdGFwZGlza192YmRfY2xvc2VfdmRp KHZiZCk7CglmcmVlKHZiZC0+bmFtZSk7Cgl2YmQtPm5hbWUgPSBOVUxMOwoJcmV0dXJuIGVycjsK fQoqLwoKc3RhdGljIHZvaWQKdGFwZGlza192YmRfcXVldWVfY291bnQodGRfdmJkX3QgKnZiZCwg aW50ICpuZXcsCgkJCWludCAqcGVuZGluZywgaW50ICpmYWlsZWQsIGludCAqY29tcGxldGVkKQp7 CglpbnQgbiwgcCwgZiwgYzsKCXRkX3ZiZF9yZXF1ZXN0X3QgKnZyZXEsICp0dnJlcTsKCgluID0g MDsKCXAgPSAwOwoJZiA9IDA7CgljID0gMDsKCgl0YXBkaXNrX3ZiZF9mb3JfZWFjaF9yZXF1ZXN0 KHZyZXEsIHR2cmVxLCAmdmJkLT5uZXdfcmVxdWVzdHMpCgkJbisrOwoKCXRhcGRpc2tfdmJkX2Zv cl9lYWNoX3JlcXVlc3QodnJlcSwgdHZyZXEsICZ2YmQtPnBlbmRpbmdfcmVxdWVzdHMpCgkJcCsr OwoKCXRhcGRpc2tfdmJkX2Zvcl9lYWNoX3JlcXVlc3QodnJlcSwgdHZyZXEsICZ2YmQtPmZhaWxl ZF9yZXF1ZXN0cykKCQlmKys7CgoJdGFwZGlza192YmRfZm9yX2VhY2hfcmVxdWVzdCh2cmVxLCB0 dnJlcSwgJnZiZC0+Y29tcGxldGVkX3JlcXVlc3RzKQoJCWMrKzsKCgkqbmV3ICAgICAgID0gbjsK CSpwZW5kaW5nICAgPSBwOwoJKmZhaWxlZCAgICA9IGY7CgkqY29tcGxldGVkID0gYzsKfQoKc3Rh dGljIGludAp0YXBkaXNrX3ZiZF9zaHV0ZG93bih0ZF92YmRfdCAqdmJkKQp7CglpbnQgbmV3LCBw ZW5kaW5nLCBmYWlsZWQsIGNvbXBsZXRlZDsKCglpZiAoIWxpc3RfZW1wdHkoJnZiZC0+cGVuZGlu Z19yZXF1ZXN0cykpCgkJcmV0dXJuIC1FQUdBSU47CgoJdGFwZGlza192YmRfcXVldWVfY291bnQo dmJkLCAmbmV3LCAmcGVuZGluZywgJmZhaWxlZCwgJmNvbXBsZXRlZCk7CgoJRFBSSU5URigiJXM6 IHN0YXRlOiAweCUwOHgsIG5ldzogMHglMDJ4LCBwZW5kaW5nOiAweCUwMngsICIKCQkiZmFpbGVk OiAweCUwMngsIGNvbXBsZXRlZDogMHglMDJ4XG4iLCAKCQl2YmQtPm5hbWUsIHZiZC0+c3RhdGUs IG5ldywgcGVuZGluZywgZmFpbGVkLCBjb21wbGV0ZWQpOwoJRFBSSU5URigibGFzdCBhY3Rpdml0 eTogJTAxMGxkLiUwNmxkLCBlcnJvcnM6IDB4JTA0IlBSSXg2NCIsICIKCQkicmV0cmllczogMHgl MDQiUFJJeDY0IiwgcmVjZWl2ZWQ6IDB4JTA4IlBSSXg2NCIsICIKCQkicmV0dXJuZWQ6IDB4JTA4 IlBSSXg2NCIsIGtpY2tlZDogMHglMDgiUFJJeDY0IlxuIiwKCQl2YmQtPnRzLnR2X3NlYywgdmJk LT50cy50dl91c2VjLAoJCXZiZC0+ZXJyb3JzLCB2YmQtPnJldHJpZXMsIHZiZC0+cmVjZWl2ZWQs IHZiZC0+cmV0dXJuZWQsCgkJdmJkLT5raWNrZWQpOwoKCXRhcGRpc2tfdmJkX2Nsb3NlX3ZkaSh2 YmQpOwoJdGFwZGlza192YmRfZGV0YWNoKHZiZCk7Cgl0YXBkaXNrX3NlcnZlcl9yZW1vdmVfdmJk KHZiZCk7CglmcmVlKHZiZC0+bmFtZSk7CglmcmVlKHZiZCk7CgoJcmV0dXJuIDA7Cn0KCmludAp0 YXBkaXNrX3ZiZF9jbG9zZSh0ZF92YmRfdCAqdmJkKQp7CgkvKgoJICogZG9uJ3QgY2xvc2UgaWYg YW55IHJlcXVlc3RzIGFyZSBwZW5kaW5nIGluIHRoZSBhaW8gbGF5ZXIKCSAqLwoJaWYgKCFsaXN0 X2VtcHR5KCZ2YmQtPnBlbmRpbmdfcmVxdWVzdHMpKQoJCWdvdG8gZmFpbDsKCgkvKiAKCSAqIGlm IHRoZSBxdWV1ZSBpcyBzdGlsbCBhY3RpdmUgYW5kIHdlIGhhdmUgbW9yZQoJICogcmVxdWVzdHMs IHRyeSB0byBjb21wbGV0ZSB0aGVtIGJlZm9yZSBjbG9zaW5nLgoJICovCglpZiAodGFwZGlza192 YmRfcXVldWVfcmVhZHkodmJkKSAmJgoJICAgICghbGlzdF9lbXB0eSgmdmJkLT5uZXdfcmVxdWVz dHMpIHx8CgkgICAgICFsaXN0X2VtcHR5KCZ2YmQtPmZhaWxlZF9yZXF1ZXN0cykgfHwKCSAgICAg IWxpc3RfZW1wdHkoJnZiZC0+Y29tcGxldGVkX3JlcXVlc3RzKSkpCgkJZ290byBmYWlsOwoKCXJl dHVybiB0YXBkaXNrX3ZiZF9zaHV0ZG93bih2YmQpOwoKZmFpbDoKCXRkX2ZsYWdfc2V0KHZiZC0+ c3RhdGUsIFREX1ZCRF9TSFVURE9XTl9SRVFVRVNURUQpOwoJREJHKFRMT0dfV0FSTiwgIiVzOiBy ZXF1ZXN0cyBwZW5kaW5nXG4iLCB2YmQtPm5hbWUpOwoJcmV0dXJuIC1FQUdBSU47Cn0KCi8qCiAq IGNvbnRyb2wgb3BlcmF0aW9ucwogKi8KCnZvaWQKdGFwZGlza192YmRfZGVidWcodGRfdmJkX3Qg KnZiZCkKewoJdGRfaW1hZ2VfdCAqaW1hZ2UsICp0bXA7CglpbnQgbmV3LCBwZW5kaW5nLCBmYWls ZWQsIGNvbXBsZXRlZDsKCgl0YXBkaXNrX3ZiZF9xdWV1ZV9jb3VudCh2YmQsICZuZXcsICZwZW5k aW5nLCAmZmFpbGVkLCAmY29tcGxldGVkKTsKCglEQkcoVExPR19XQVJOLCAiJXM6IHN0YXRlOiAw eCUwOHgsIG5ldzogMHglMDJ4LCBwZW5kaW5nOiAweCUwMngsICIKCSAgICAiZmFpbGVkOiAweCUw MngsIGNvbXBsZXRlZDogMHglMDJ4LCBsYXN0IGFjdGl2aXR5OiAlMDEwbGQuJTA2bGQsICIKCSAg ICAiZXJyb3JzOiAweCUwNCJQUkl4NjQiLCByZXRyaWVzOiAweCUwNCJQUkl4NjQiLCAiCgkgICAg InJlY2VpdmVkOiAweCUwOCJQUkl4NjQiLCByZXR1cm5lZDogMHglMDgiUFJJeDY0IiwgIgoJICAg ICJraWNrZWQ6IDB4JTA4IlBSSXg2NCJcbiIsCgkgICAgdmJkLT5uYW1lLCB2YmQtPnN0YXRlLCBu ZXcsIHBlbmRpbmcsIGZhaWxlZCwgY29tcGxldGVkLAoJICAgIHZiZC0+dHMudHZfc2VjLCB2YmQt PnRzLnR2X3VzZWMsIHZiZC0+ZXJyb3JzLCB2YmQtPnJldHJpZXMsCgkgICAgdmJkLT5yZWNlaXZl ZCwgdmJkLT5yZXR1cm5lZCwgdmJkLT5raWNrZWQpOwoKCXRhcGRpc2tfdmJkX2Zvcl9lYWNoX2lt YWdlKHZiZCwgaW1hZ2UsIHRtcCkKCQl0ZF9kZWJ1ZyhpbWFnZSk7Cn0KCnN0YXRpYyB2b2lkCnRh cGRpc2tfdmJkX2Ryb3BfbG9nKHRkX3ZiZF90ICp2YmQpCnsKCWlmICh0ZF9mbGFnX3Rlc3QodmJk LT5zdGF0ZSwgVERfVkJEX0xPR19EUk9QUEVEKSkKCQlyZXR1cm47CgoJdGFwZGlza192YmRfZGVi dWcodmJkKTsKCXRsb2dfcHJlY2lvdXMoMCk7Cgl0ZF9mbGFnX3NldCh2YmQtPnN0YXRlLCBURF9W QkRfTE9HX0RST1BQRUQpOwp9CgppbnQKdGFwZGlza192YmRfZ2V0X2Rpc2tfaW5mbyh0ZF92YmRf dCAqdmJkLCB0ZF9kaXNrX2luZm9fdCAqaW5mbykKewoJaWYgKGxpc3RfZW1wdHkoJnZiZC0+aW1h Z2VzKSkKCQlyZXR1cm4gLUVJTlZBTDsKCgkqaW5mbyA9IHRhcGRpc2tfdmJkX2ZpcnN0X2ltYWdl KHZiZCktPmluZm87CglyZXR1cm4gMDsKfQoKc3RhdGljIGludAp0YXBkaXNrX3ZiZF9xdWV1ZV9y ZWFkeSh0ZF92YmRfdCAqdmJkKQp7CglyZXR1cm4gKCF0ZF9mbGFnX3Rlc3QodmJkLT5zdGF0ZSwg VERfVkJEX0RFQUQpICYmCgkJIXRkX2ZsYWdfdGVzdCh2YmQtPnN0YXRlLCBURF9WQkRfQ0xPU0VE KSAmJgoJCSF0ZF9mbGFnX3Rlc3QodmJkLT5zdGF0ZSwgVERfVkJEX1FVSUVTQ0VEKSAmJgoJCSF0 ZF9mbGFnX3Rlc3QodmJkLT5zdGF0ZSwgVERfVkJEX1FVSUVTQ0VfUkVRVUVTVEVEKSk7Cn0KCmlu dAp0YXBkaXNrX3ZiZF9yZXRyeV9uZWVkZWQodGRfdmJkX3QgKnZiZCkKewoJcmV0dXJuICEobGlz dF9lbXB0eSgmdmJkLT5mYWlsZWRfcmVxdWVzdHMpICYmCgkJIGxpc3RfZW1wdHkoJnZiZC0+bmV3 X3JlcXVlc3RzKSk7Cn0KCmludAp0YXBkaXNrX3ZiZF9sb2NrKHRkX3ZiZF90ICp2YmQpCnsKCXJl dHVybiAwOwp9CgppbnQKdGFwZGlza192YmRfcXVpZXNjZV9xdWV1ZSh0ZF92YmRfdCAqdmJkKQp7 CglpZiAoIWxpc3RfZW1wdHkoJnZiZC0+cGVuZGluZ19yZXF1ZXN0cykpIHsKCQl0ZF9mbGFnX3Nl dCh2YmQtPnN0YXRlLCBURF9WQkRfUVVJRVNDRV9SRVFVRVNURUQpOwoJCXJldHVybiAtRUFHQUlO OwoJfQoKCXRkX2ZsYWdfY2xlYXIodmJkLT5zdGF0ZSwgVERfVkJEX1FVSUVTQ0VfUkVRVUVTVEVE KTsKCXRkX2ZsYWdfc2V0KHZiZC0+c3RhdGUsIFREX1ZCRF9RVUlFU0NFRCk7CglyZXR1cm4gMDsK fQoKaW50CnRhcGRpc2tfdmJkX3N0YXJ0X3F1ZXVlKHRkX3ZiZF90ICp2YmQpCnsKCXRkX2ZsYWdf Y2xlYXIodmJkLT5zdGF0ZSwgVERfVkJEX1FVSUVTQ0VEKTsKCXRkX2ZsYWdfY2xlYXIodmJkLT5z dGF0ZSwgVERfVkJEX1FVSUVTQ0VfUkVRVUVTVEVEKTsKCXRhcGRpc2tfdmJkX21hcmtfcHJvZ3Jl c3ModmJkKTsKCXJldHVybiAwOwp9CgppbnQKdGFwZGlza192YmRfa2lsbF9xdWV1ZSh0ZF92YmRf dCAqdmJkKQp7Cgl0YXBkaXNrX3ZiZF9xdWllc2NlX3F1ZXVlKHZiZCk7Cgl0ZF9mbGFnX3NldCh2 YmQtPnN0YXRlLCBURF9WQkRfREVBRCk7CglyZXR1cm4gMDsKfQoKI2lmIDAKc3RhdGljIGludAp0 YXBkaXNrX3ZiZF9vcGVuX2ltYWdlKHRkX3ZiZF90ICp2YmQsIHRkX2ltYWdlX3QgKmltYWdlKQp7 CglpbnQgZXJyOwoJdGRfaW1hZ2VfdCAqcGFyZW50OwoKCWVyciA9IHRkX29wZW4oaW1hZ2UpOwoJ aWYgKGVycikKCQlyZXR1cm4gZXJyOwoKCWlmICghdGFwZGlza192YmRfaXNfbGFzdF9pbWFnZSh2 YmQsIGltYWdlKSkgewoJCXBhcmVudCA9IHRhcGRpc2tfdmJkX25leHRfaW1hZ2UoaW1hZ2UpOwoJ CWVyciAgICA9IHRkX3ZhbGlkYXRlX3BhcmVudChpbWFnZSwgcGFyZW50KTsKCQlpZiAoZXJyKSB7 CgkJCXRkX2Nsb3NlKGltYWdlKTsKCQkJcmV0dXJuIGVycjsKCQl9Cgl9CgoJcmV0dXJuIDA7Cn0K I2VuZGlmCgppbnQKdGFwZGlza192YmRfcGF1c2UodGRfdmJkX3QgKnZiZCkKewoJaW50IGVycjsK ICAgIHN0cnVjdCB0ZF94ZW5ibGtpZiAqYmxraWY7CgoJSU5GTygicGF1c2UgcmVxdWVzdGVkXG4i KTsKCgl0ZF9mbGFnX3NldCh2YmQtPnN0YXRlLCBURF9WQkRfUEFVU0VfUkVRVUVTVEVEKTsKCglp ZiAodmJkLT5uYmRzZXJ2ZXIpCgkJdGFwZGlza19uYmRzZXJ2ZXJfcGF1c2UodmJkLT5uYmRzZXJ2 ZXIpOwoKCWVyciA9IHRhcGRpc2tfdmJkX3F1aWVzY2VfcXVldWUodmJkKTsKCWlmIChlcnIpCgkJ cmV0dXJuIGVycjsKCiAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsa2lmLCAmdmJkLT5yaW5ncywg ZW50cnkpCgkJdGFwZGlza194ZW5ibGtpZl9zdXNwZW5kKGJsa2lmKTsKCgl0YXBkaXNrX3ZiZF9j bG9zZV92ZGkodmJkKTsKCglJTkZPKCJwYXVzZSBjb21wbGV0ZWRcbiIpOwoKCWlmICghbGlzdF9l bXB0eSgmdmJkLT5mYWlsZWRfcmVxdWVzdHMpKQoJCUlORk8oIndhcm5pbmc6IGZhaWxlZCByZXF1 ZXN0cyBwZW5kaW5nXG4iKTsKCgl0ZF9mbGFnX2NsZWFyKHZiZC0+c3RhdGUsIFREX1ZCRF9QQVVT RV9SRVFVRVNURUQpOwoJdGRfZmxhZ19zZXQodmJkLT5zdGF0ZSwgVERfVkJEX1BBVVNFRCk7CgoJ cmV0dXJuIDA7Cn0KCmludAp0YXBkaXNrX3ZiZF9yZXN1bWUodGRfdmJkX3QgKnZiZCwgY29uc3Qg Y2hhciAqbmFtZSkKewoJaW50IGksIGVycjsKICAgIHN0cnVjdCB0ZF94ZW5ibGtpZiAqYmxraWY7 CgoJREJHKFRMT0dfREJHLCAicmVzdW1lIHJlcXVlc3RlZFxuIik7CgoJaWYgKCF0ZF9mbGFnX3Rl c3QodmJkLT5zdGF0ZSwgVERfVkJEX1BBVVNFRCkpIHsKCQlFUFJJTlRGKCJyZXN1bWUgcmVxdWVz dCBmb3IgdW5wYXVzZWQgdmJkICVzXG4iLCB2YmQtPm5hbWUpOwoJCXJldHVybiAtRUlOVkFMOwoJ fQoKCWZvciAoaSA9IDA7IGkgPCBURF9WQkRfRUlPX1JFVFJJRVM7IGkrKykgewoJCWVyciA9IHRh cGRpc2tfdmJkX29wZW5fdmRpKHZiZCwgbmFtZSwgdmJkLT5mbGFncyB8IFREX09QRU5fU1RSSUNU LCAtMSk7CgkJaWYgKCFlcnIpCgkJCWJyZWFrOwoKCQlzbGVlcChURF9WQkRfRUlPX1NMRUVQKTsK CX0KCglpZiAoIWVycikgewoJCXRkX2Rpc2tfaW5mb190IGRpc2tfaW5mbzsKCQllcnIgPSB0YXBk aXNrX3ZiZF9nZXRfZGlza19pbmZvKHZiZCwgJmRpc2tfaW5mbyk7CgkJaWYgKGVycikgewoJCQlF UFJJTlRGKCJWQkQgJWQgZmFpbGVkIHRvIGdldCBkaXNrIGluZm86ICVzXG4iLCB2YmQtPnV1aWQs CgkJCQkJc3RyZXJyb3IoLWVycikpOwoJCQlnb3RvIHJlc3VtZV9mYWlsZWQ7CgkJfQoJCWlmICh2 YmQtPmRpc2tfaW5mby5zaXplICE9IGRpc2tfaW5mby5zaXplCgkJCQl8fCB2YmQtPmRpc2tfaW5m by5zZWN0b3Jfc2l6ZSAhPSBkaXNrX2luZm8uc2VjdG9yX3NpemUKCQkJCXx8IHZiZC0+ZGlza19p bmZvLmluZm8gIT0gZGlza19pbmZvLmluZm8pIHsKCQkJRVBSSU5URigiVkJEICVkIGNhbm5vdCBj aGFuZ2UgZGlzayBpbmZvXG4iLCB2YmQtPnV1aWQpOwoJCQllcnIgPSAtRU1FRElVTVRZUEU7CgkJ CWdvdG8gcmVzdW1lX2ZhaWxlZDsKCQl9Cgl9CnJlc3VtZV9mYWlsZWQ6CglpZiAoZXJyKSB7CgkJ dGRfZmxhZ19zZXQodmJkLT5zdGF0ZSwgVERfVkJEX1JFU1VNRV9GQUlMRUQpOwoJCXRhcGRpc2tf dmJkX2Nsb3NlX3ZkaSh2YmQpOwoJCXJldHVybiBlcnI7Cgl9Cgl0ZF9mbGFnX2NsZWFyKHZiZC0+ c3RhdGUsIFREX1ZCRF9SRVNVTUVfRkFJTEVEKTsKCglEQkcoVExPR19EQkcsICJyZXN1bWUgY29t cGxldGVkXG4iKTsKCgl0YXBkaXNrX3ZiZF9zdGFydF9xdWV1ZSh2YmQpOwoJdGRfZmxhZ19jbGVh cih2YmQtPnN0YXRlLCBURF9WQkRfUEFVU0VEKTsKCXRkX2ZsYWdfY2xlYXIodmJkLT5zdGF0ZSwg VERfVkJEX1BBVVNFX1JFUVVFU1RFRCk7Cgl0YXBkaXNrX3ZiZF9jaGVja19zdGF0ZSh2YmQpOwoK CWlmICh2YmQtPm5iZHNlcnZlcikKCQl0YXBkaXNrX25iZHNlcnZlcl91bnBhdXNlKHZiZC0+bmJk c2VydmVyKTsKCiAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsa2lmLCAmdmJkLT5yaW5ncywgZW50 cnkpCgkJdGFwZGlza194ZW5ibGtpZl9yZXN1bWUoYmxraWYpOwoKCglEQkcoVExPR19EQkcsICJz dGF0ZSBjaGVja2VkXG4iKTsKCglyZXR1cm4gMDsKfQoKc3RhdGljIGludAp0YXBkaXNrX3ZiZF9y ZXF1ZXN0X3R0bCh0ZF92YmRfcmVxdWVzdF90ICp2cmVxLAoJCQljb25zdCBzdHJ1Y3QgdGltZXZh bCAqbm93KQp7CglzdHJ1Y3QgdGltZXZhbCBkZWx0YTsKCXRpbWVyc3ViKG5vdywgJnZyZXEtPnRz LCAmZGVsdGEpOwoJcmV0dXJuIHZyZXEtPnZiZC0+cmVxX3RpbWVvdXQgLSBkZWx0YS50dl9zZWM7 Cn0KCnN0YXRpYyBpbnQKX190YXBkaXNrX3ZiZF9yZXF1ZXN0X3RpbWVvdXQodGRfdmJkX3JlcXVl c3RfdCAqdnJlcSwKCQkJICAgICAgY29uc3Qgc3RydWN0IHRpbWV2YWwgKm5vdykKewoJaW50IHRp bWVvdXQ7CgoJdGltZW91dCA9IHRhcGRpc2tfdmJkX3JlcXVlc3RfdHRsKHZyZXEsIG5vdykgPCAw OwoJaWYgKHRpbWVvdXQpCgkJRVJSKHZyZXEtPmVycm9yLAoJCSAgICAicmVxICVzIHRpbWVkIG91 dCwgcmV0cmllZCAlZCB0aW1lc1xuIiwKCQkgICAgdnJlcS0+bmFtZSwgdnJlcS0+bnVtX3JldHJp ZXMpOwoKCXJldHVybiB0aW1lb3V0Owp9CgpzdGF0aWMgaW50CnRhcGRpc2tfdmJkX3JlcXVlc3Rf dGltZW91dCh0ZF92YmRfcmVxdWVzdF90ICp2cmVxKQp7CglzdHJ1Y3QgdGltZXZhbCBub3c7Cgln ZXR0aW1lb2ZkYXkoJm5vdywgTlVMTCk7CglyZXR1cm4gX190YXBkaXNrX3ZiZF9yZXF1ZXN0X3Rp bWVvdXQodnJlcSwgJm5vdyk7Cn0KCnN0YXRpYyB2b2lkCnRhcGRpc2tfdmJkX2NoZWNrX3F1ZXVl X3N0YXRlKHRkX3ZiZF90ICp2YmQpCnsKCXRkX3ZiZF9yZXF1ZXN0X3QgKnZyZXEsICp0bXA7Cglz dHJ1Y3QgdGltZXZhbCBub3c7CgoJZ2V0dGltZW9mZGF5KCZub3csIE5VTEwpOwoJdGFwZGlza192 YmRfZm9yX2VhY2hfcmVxdWVzdCh2cmVxLCB0bXAsICZ2YmQtPmZhaWxlZF9yZXF1ZXN0cykKCQlp ZiAoX190YXBkaXNrX3ZiZF9yZXF1ZXN0X3RpbWVvdXQodnJlcSwgJm5vdykpCgkJCXRhcGRpc2tf dmJkX2NvbXBsZXRlX3ZiZF9yZXF1ZXN0KHZiZCwgdnJlcSk7CgoJaWYgKCFsaXN0X2VtcHR5KCZ2 YmQtPm5ld19yZXF1ZXN0cykgfHwKCSAgICAhbGlzdF9lbXB0eSgmdmJkLT5mYWlsZWRfcmVxdWVz dHMpKQoJCXRhcGRpc2tfdmJkX2lzc3VlX3JlcXVlc3RzKHZiZCk7Cgp9CgpzdGF0aWMgaW5saW5l IGludAp0YXBkaXNrX3ZiZF9wcm9kdWNlX3JyZHModGRfdmJkX3QgKnZiZCkgewoKCXRkX2ltYWdl X3QgKmxlYWY7CglpbnQgb2ZmID0gMCwgc2l6ZSA9IDA7CglpbnQgZXJyOwoJaW50IGksIGo7Cglj aGFyICpidWY7CglpbnQganNvbl9zdHJfbGVuX29mZiwgbWQ1c3VtX3N0cl9sZW5fb2ZmLCBqc29u X2RhdGFfb2ZmLCBqc29uX2RhdGFfbGVuOwoJY29uc3QgaW50IGpzb25fc3RyX2xlbiA9IDggKyAx LCBtZDVzdW1fc3RyX2xlbiA9IDMyICsgMTsKCWNoYXIgdG1wW21kNXN1bV9zdHJfbGVuICsgMV07 Cgl0aW1lX3QgdDsKCU1ENV9DVFggbWQ1X2N0eDsKCXVuc2lnbmVkIGNoYXIgbWQ1X291dFtNRDVf RElHRVNUX0xFTkdUSF07CgoJQVNTRVJUKHZiZCk7CgoJYnVmID0gdmJkLT5ycmQuc2htLm1lbTsK CgkvKgoJICogSWYgbm8gVkRJIGhhcyBiZWVuIG9wZW5lZCB5ZXQgdGhlcmUncyBub3RoaW5nIHRv IHJlcG9ydC4KCSAqLwoJaWYgKCFidWYpCgkJcmV0dXJuIDA7CgoJLyoKCSAqIFByb2R1Y2UgUlJE cyBldmVyeSBmaXZlIHNlY29uZHMuCgkgKi8KCXQgPSB0aW1lKE5VTEwpOwoJaWYgKHQgLSB2YmQt PnJyZC5sYXN0IDwgNSkKCQlyZXR1cm4gMDsKCXZiZC0+cnJkLmxhc3QgPSB0OwoKCXNpemUgPSB2 YmQtPnJyZC5zaG0uc2l6ZSAtIG9mZjsKCWVyciA9IHRhcGRpc2tfc25wcmludGYoYnVmLCAmb2Zm LCAmc2l6ZSwgMCwgIkRBVEFTT1VSQ0VTXG4iKTsKCWlmIChlcnIpCgkJcmV0dXJuIGVycjsKCgkv KgoJICogcmVzZXJ2ZSBzcGFjZSBmb3IgSlNPTiBzdHJpbmcgbGVuZ3RoCgkgKi8KCWpzb25fc3Ry X2xlbl9vZmYgPSBvZmY7CglvZmYgKz0ganNvbl9zdHJfbGVuLCBzaXplIC09IGpzb25fc3RyX2xl bjsKCgkvKgoJICogcmVzZXJ2ZSBzcGFjZSBmb3IgTUQ1IHN1bSBvZiBKU09OIHN0cmluZwoJICov CgltZDVzdW1fc3RyX2xlbl9vZmYgPSBvZmY7CglvZmYgKz0gbWQ1c3VtX3N0cl9sZW4sIHNpemUg LT0gbWQ1c3VtX3N0cl9sZW47CgoJanNvbl9kYXRhX29mZiA9IG9mZjsKCWVyciA9IHRhcGRpc2tf c25wcmludGYoYnVmLCAmb2ZmLCAmc2l6ZSwgMCwJIntcbiIpOwoJZXJyICs9IHRhcGRpc2tfc25w cmludGYoYnVmLCAmb2ZmLCAmc2l6ZSwgMSwgIlwidGltZXN0YW1wXCI6ICVsdSxcbiIsCgkJCXRp bWUoTlVMTCkpOwoJZXJyICs9IHRhcGRpc2tfc25wcmludGYoYnVmLCAmb2ZmLCAmc2l6ZSwgMSwg IlwiZGF0YXNvdXJjZXNcIjoge1xuIik7CglpZiAoZXJyKQoJCXJldHVybiBlcnI7CgoJbGVhZiA9 IHRhcGRpc2tfdmJkX2ZpcnN0X2ltYWdlKHZiZCk7CgoJLyoKCSAqIFhYWCBXZSdyZSBvbmx5IHJl cG9ydGluZyBSUkRzIGZvciBsZWF2ZXMuIFdlIGNvdWxkIHRyYXZlcnNlIHRoZSBsaXN0CgkgKiBv ZiBwYXJlbnQgYW5kIHJlcG9ydCBSUkRzIGZvciBlYWNoIG9uZSBvZiB0aGVtLCBpZiB0aGVyZSBp cyBzb21ldGhpbmcKCSAqIHRvIHJlcG9ydC4gSG93ZXZlciwgZm9yIGludGVybmFsIFZIRCBmaWxl cyB0aGVyZSdzIG5vdGhpbmcgdG8gcmVwb3J0CgkgKiBzbyB0aGF0IHdvdWxkIGVuZCB1cCBpbiBh IHVzZWxlc3MgdHJhdmVyc2Ugb2YgdGhlIGxpc3QuIFdlIGNvdWxkIGFkZHJlc3MKCSAqIHRoaXMg aXNzdWUgYnkga2VlcGluZyBhIGxpc3Qgb2YgaW1hZ2VzIHRoYXQgZG8gaGF2ZSBhbiBSUkQgY2Fs bGJhY2suCgkgKi8KCWlmIChsZWFmICYmIGxlYWYtPmRyaXZlci0+b3BzLT50ZF9ycmQpIHsKCQll cnIgPSBsZWFmLT5kcml2ZXItPm9wcy0+dGRfcnJkKGxlYWYtPmRyaXZlciwgYnVmLCAmb2ZmLCAm c2l6ZSk7CgkJaWYgKGVycikKCQkJcmV0dXJuIGVycjsKCQllcnIgPSB0YXBkaXNrX3NucHJpbnRm KGJ1ZiwgJm9mZiwgJnNpemUsIDAsICIsXG4iKTsKCQlpZiAoZXJyKQoJCQlyZXR1cm4gZXJyOwoJ fQoKCWVyciArPSB0YXBkaXNrX3NucHJpbnRmKGJ1ZiwgJm9mZiwgJnNpemUsIDIsICJcImlvX2Vy cm9yc1wiOiB7XG4iKTsKCWVyciArPSB0YXBkaXNrX3NucHJpbnRmKGJ1ZiwgJm9mZiwgJnNpemUs IDMsCgkJCSJcImRlc2NyaXB0aW9uXCI6IFwiTnVtYmVyIG9mIEkvTyBlcnJvcnNcIixcbiIpOwoJ ZXJyICs9IHRhcGRpc2tfc25wcmludGYoYnVmLCAmb2ZmLCAmc2l6ZSwgMywgIlwib3duZXJcIjog XCJob3N0XCIsXG4iKTsKCWVyciArPSB0YXBkaXNrX3NucHJpbnRmKGJ1ZiwgJm9mZiwgJnNpemUs IDMsICAiXCJ0eXBlXCI6ICIKCQkJIlwiYWJzb2x1dGVcIixcbiIpOwoJZXJyICs9IHRhcGRpc2tf c25wcmludGYoYnVmLCAmb2ZmLCAmc2l6ZSwgMywgIlwidW5pdHNcIjogXCJ1bml0c1wiLFxuIik7 CgllcnIgKz0gdGFwZGlza19zbnByaW50ZihidWYsICZvZmYsICZzaXplLCAzLCAiXCJtaW5cIjog XCIwLjAwXCIsXG4iKTsKCWVyciArPSB0YXBkaXNrX3NucHJpbnRmKGJ1ZiwgJm9mZiwgJnNpemUs IDMsICJcIm1heFwiOiBcImluZlwiLFxuIik7CgllcnIgKz0gdGFwZGlza19zbnByaW50ZihidWYs ICZvZmYsICZzaXplLCAzLCAiXCJ2YWx1ZVwiOiBcIiVsbHVcIixcbiIsCgkJCXZiZC0+ZXJyb3Jz KTsKCWVyciArPSB0YXBkaXNrX3NucHJpbnRmKGJ1ZiwgJm9mZiwgJnNpemUsIDMsICJcInZhbHVl X3R5cGVcIjogXCJmbG9hdFwiXG4iKTsKCWVyciArPSB0YXBkaXNrX3NucHJpbnRmKGJ1ZiwgJm9m ZiwgJnNpemUsIDIsICJ9XG4iKTsKCWVyciArPSB0YXBkaXNrX3NucHJpbnRmKGJ1ZiwgJm9mZiwg JnNpemUsIDEsICJ9XG4iKTsKCWVyciArPSB0YXBkaXNrX3NucHJpbnRmKGJ1ZiwgJm9mZiwgJnNp emUsIDAsICJ9XG4iKTsKCWlmIChlcnIpCgkJcmV0dXJuIGVycjsKCglqc29uX2RhdGFfbGVuID0g b2ZmIC0ganNvbl9zdHJfbGVuOwoJc3ByaW50Zih0bXAsICIlMDh4XG4iLCBqc29uX2RhdGFfbGVu KTsKCXN0cm5jcHkoYnVmICsganNvbl9zdHJfbGVuX29mZiwgdG1wLCBqc29uX3N0cl9sZW4pOwoK CU1ENV9Jbml0KCZtZDVfY3R4KTsKCU1ENV9VcGRhdGUoJm1kNV9jdHgsIGJ1ZiArIGpzb25fZGF0 YV9vZmYsIGpzb25fZGF0YV9sZW4pOwoJTUQ1X0ZpbmFsKG1kNV9vdXQsICZtZDVfY3R4KTsKCWZv ciAoaSA9IDAsIGogPSAwOyBpIDwgTUQ1X0RJR0VTVF9MRU5HVEg7IGkrKykKCQlqICs9IHNwcmlu dGYoYnVmICsgbWQ1c3VtX3N0cl9sZW5fb2ZmICsgaiwgIiUwMngiLCBtZDVfb3V0W2ldKTsKCWJ1 ZlsobWQ1c3VtX3N0cl9sZW5fb2ZmICsgaildID0gJ1xuJzsKCgltZW1zZXQoYnVmICsgb2ZmLCAn XDAnLCBzaXplIC0gb2ZmKTsKCXJldHVybiBtc3luYyhidWYsIHZiZC0+cnJkLnNobS5zaXplLCBN U19BU1lOQyk7Cn0KCnZvaWQKdGFwZGlza192YmRfY2hlY2tfc3RhdGUodGRfdmJkX3QgKnZiZCkK ewogICAgc3RydWN0IHRkX3hlbmJsa2lmICpibGtpZjsKCgl0YXBkaXNrX3ZiZF9wcm9kdWNlX3Jy ZHModmJkKTsKCiAgICAvKgogICAgICogVE9ETyBkb24ndCBpZ25vcmUgcmV0dXJuIHZhbHVlCiAg ICAgKi8KICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoYmxraWYsICZ2YmQtPnJpbmdzLCBlbnRyeSkK CQl0YXBkaXNrX3hlbmJsa2lmX3Jpbmdfc3RhdHNfdXBkYXRlKGJsa2lmKTsKCgl0YXBkaXNrX3Zi ZF9jaGVja19xdWV1ZV9zdGF0ZSh2YmQpOwoKCWlmICh0ZF9mbGFnX3Rlc3QodmJkLT5zdGF0ZSwg VERfVkJEX1FVSUVTQ0VfUkVRVUVTVEVEKSkKCQl0YXBkaXNrX3ZiZF9xdWllc2NlX3F1ZXVlKHZi ZCk7CgoJaWYgKHRkX2ZsYWdfdGVzdCh2YmQtPnN0YXRlLCBURF9WQkRfUEFVU0VfUkVRVUVTVEVE KSkKCQl0YXBkaXNrX3ZiZF9wYXVzZSh2YmQpOwoKCWlmICh0ZF9mbGFnX3Rlc3QodmJkLT5zdGF0 ZSwgVERfVkJEX1NIVVRET1dOX1JFUVVFU1RFRCkpCgkJdGFwZGlza192YmRfY2xvc2UodmJkKTsK fQoKdm9pZAp0YXBkaXNrX3ZiZF9jaGVja19wcm9ncmVzcyh0ZF92YmRfdCAqdmJkKQp7Cgl0aW1l X3QgZGlmZjsKCXN0cnVjdCB0aW1ldmFsIG5vdywgZGVsdGE7CgoJaWYgKGxpc3RfZW1wdHkoJnZi ZC0+cGVuZGluZ19yZXF1ZXN0cykpCgkJcmV0dXJuOwoKCWdldHRpbWVvZmRheSgmbm93LCBOVUxM KTsKCXRpbWVyc3ViKCZub3csICZ2YmQtPnRzLCAmZGVsdGEpOwoJZGlmZiA9IGRlbHRhLnR2X3Nl YzsKCglpZiAoZGlmZiA+PSBURF9WQkRfV0FUQ0hET0dfVElNRU9VVCAmJiB0YXBkaXNrX3ZiZF9x dWV1ZV9yZWFkeSh2YmQpKSB7CgkJREJHKFRMT0dfV0FSTiwgIiVzOiB3YXRjaGRvZyB0aW1lb3V0 OiBwZW5kaW5nIHJlcXVlc3RzICIKCQkgICAgImlkbGUgZm9yICVsZCBzZWNvbmRzXG4iLCB2YmQt Pm5hbWUsIGRpZmYpOwoJCXRhcGRpc2tfdmJkX2Ryb3BfbG9nKHZiZCk7CgkJcmV0dXJuOwoJfQoK CXRhcGRpc2tfc2VydmVyX3NldF9tYXhfdGltZW91dChURF9WQkRfV0FUQ0hET0dfVElNRU9VVCAt IGRpZmYpOwp9CgovKgogKiByZXF1ZXN0IHN1Ym1pc3Npb24gCiAqLwoKc3RhdGljIGludAp0YXBk aXNrX3ZiZF9jaGVja19xdWV1ZSh0ZF92YmRfdCAqdmJkKQp7CglpZiAobGlzdF9lbXB0eSgmdmJk LT5pbWFnZXMpKQoJCXJldHVybiAtRU5PU1lTOwoKCWlmICghdGFwZGlza192YmRfcXVldWVfcmVh ZHkodmJkKSkKCQlyZXR1cm4gLUVBR0FJTjsKCglyZXR1cm4gMDsKfQoKc3RhdGljIGludAp0YXBk aXNrX3ZiZF9yZXF1ZXN0X3Nob3VsZF9yZXRyeSh0ZF92YmRfdCAqdmJkLCB0ZF92YmRfcmVxdWVz dF90ICp2cmVxKQp7CglpZiAodGRfZmxhZ190ZXN0KHZiZC0+c3RhdGUsIFREX1ZCRF9ERUFEKSB8 fAoJICAgIHRkX2ZsYWdfdGVzdCh2YmQtPnN0YXRlLCBURF9WQkRfU0hVVERPV05fUkVRVUVTVEVE KSkKCQlyZXR1cm4gMDsKCglzd2l0Y2ggKGFicyh2cmVxLT5lcnJvcikpIHsKCWNhc2UgRVBFUk06 CgljYXNlIEVOT1NZUzoKCWNhc2UgRVNUQUxFOgoJY2FzZSBFTk9TUEM6CgljYXNlIEVGQVVMVDoK CQlyZXR1cm4gMDsKCX0KCglpZiAodGFwZGlza192YmRfcmVxdWVzdF90aW1lb3V0KHZyZXEpKQoJ CXJldHVybiAwOwoKCXJldHVybiAxOwp9CgpzdGF0aWMgdm9pZAp0YXBkaXNrX3ZiZF9jb21wbGV0 ZV92YmRfcmVxdWVzdCh0ZF92YmRfdCAqdmJkLCB0ZF92YmRfcmVxdWVzdF90ICp2cmVxKQp7Cglp ZiAoIXZyZXEtPnN1Ym1pdHRpbmcgJiYgIXZyZXEtPnNlY3NfcGVuZGluZykgewoJCWlmICh2cmVx LT5lcnJvciAmJgoJCSAgICB0YXBkaXNrX3ZiZF9yZXF1ZXN0X3Nob3VsZF9yZXRyeSh2YmQsIHZy ZXEpKQoJCQl0YXBkaXNrX3ZiZF9tb3ZlX3JlcXVlc3QodnJlcSwgJnZiZC0+ZmFpbGVkX3JlcXVl c3RzKTsKCQllbHNlCgkJCXRhcGRpc2tfdmJkX21vdmVfcmVxdWVzdCh2cmVxLCAmdmJkLT5jb21w bGV0ZWRfcmVxdWVzdHMpOwoJfQp9CgpzdGF0aWMgdm9pZApGSVhNRV9tYXliZV9jb3VudF9lbm9z cGNfcmVkaXJlY3QodGRfdmJkX3QgKnZiZCwgdGRfcmVxdWVzdF90IHRyZXEpCnsKCWludCB3cml0 ZSA9IHRyZXEub3AgPT0gVERfT1BfV1JJVEU7CglpZiAod3JpdGUgJiYKCSAgICB0cmVxLmltYWdl ID09IHRhcGRpc2tfdmJkX2ZpcnN0X2ltYWdlKHZiZCkgJiYKCSAgICB2YmQtPkZJWE1FX2Vub3Nw Y19yZWRpcmVjdF9jb3VudF9lbmFibGVkKQoJCXZiZC0+RklYTUVfZW5vc3BjX3JlZGlyZWN0X2Nv dW50ICs9IHRyZXEuc2VjczsKfQoKc3RhdGljIHZvaWQKX190YXBkaXNrX3ZiZF9jb21wbGV0ZV90 ZF9yZXF1ZXN0KHRkX3ZiZF90ICp2YmQsIHRkX3ZiZF9yZXF1ZXN0X3QgKnZyZXEsCgkJCQkgIHRk X3JlcXVlc3RfdCB0cmVxLCBpbnQgcmVzKQp7Cgl0ZF9pbWFnZV90ICppbWFnZSA9IHRyZXEuaW1h Z2U7CglpbnQgZXJyOwoKCWVyciA9IChyZXMgPD0gMCA/IHJlcyA6IC1yZXMpOwoJdmJkLT5zZWNz X3BlbmRpbmcgIC09IHRyZXEuc2VjczsKCXZyZXEtPnNlY3NfcGVuZGluZyAtPSB0cmVxLnNlY3M7 CgoJaWYgKGVyciAhPSAtRUJVU1kpIHsKCQlpbnQgd3JpdGUgPSB0cmVxLm9wID09IFREX09QX1dS SVRFOwoJCXRkX3NlY3Rvcl9jb3VudF9hZGQoJmltYWdlLT5zdGF0cy5oaXRzLCB0cmVxLnNlY3Ms IHdyaXRlKTsKCQlpZiAoZXJyKQoJCQl0ZF9zZWN0b3JfY291bnRfYWRkKCZpbWFnZS0+c3RhdHMu ZmFpbCwKCQkJCQkgICAgdHJlcS5zZWNzLCB3cml0ZSk7CgoJCUZJWE1FX21heWJlX2NvdW50X2Vu b3NwY19yZWRpcmVjdCh2YmQsIHRyZXEpOwoJfQoKCWlmIChlcnIpIHsKCQlpZiAoZXJyICE9IC1F QlVTWSkgewoJCQlpZiAoIXZyZXEtPmVycm9yICYmCgkJCSAgICBlcnIgIT0gdnJlcS0+cHJldl9l cnJvcikKCQkJCXRsb2dfZHJ2X2Vycm9yKGltYWdlLT5kcml2ZXIsIGVyciwKCQkJCQkgICAgICAg InJlcSAlczogJXMgMHglMDR4IHNlY3MgQCAweCUwOCJQUkl4NjQiIC0gJXMiLAoJCQkJCSAgICAg ICB2cmVxLT5uYW1lLAoJCQkJCSAgICAgICAodHJlcS5vcCA9PSBURF9PUF9XUklURSA/ICJ3cml0 ZSIgOiAicmVhZCIpLAoJCQkJCSAgICAgICB0cmVxLnNlY3MsIHRyZXEuc2VjLCBzdHJlcnJvcihh YnMoZXJyKSkpOwoJCQl2YmQtPmVycm9ycysrOwoJCX0KCQl2cmVxLT5lcnJvciA9ICh2cmVxLT5l cnJvciA/IDogZXJyKTsKCX0KCgl0YXBkaXNrX3ZiZF9jb21wbGV0ZV92YmRfcmVxdWVzdCh2YmQs IHZyZXEpOwp9CgpzdGF0aWMgdm9pZApfX3RhcGRpc2tfdmJkX3JlaXNzdWVfdGRfcmVxdWVzdCh0 ZF92YmRfdCAqdmJkLAoJCQkJIHRkX2ltYWdlX3QgKmltYWdlLCB0ZF9yZXF1ZXN0X3QgdHJlcSkK ewoJdGRfaW1hZ2VfdCAqcGFyZW50OwoJdGRfdmJkX3JlcXVlc3RfdCAqdnJlcTsKCgl2cmVxID0g dHJlcS52cmVxOwoJZ2V0dGltZW9mZGF5KCZ2cmVxLT5sYXN0X3RyeSwgTlVMTCk7CgoJdnJlcS0+ c3VibWl0dGluZysrOwoKCWlmICh0YXBkaXNrX3ZiZF9pc19sYXN0X2ltYWdlKHZiZCwgaW1hZ2Up KSB7CgkJbWVtc2V0KHRyZXEuYnVmLCAwLCB0cmVxLnNlY3MgPDwgU0VDVE9SX1NISUZUKTsKCQl0 ZF9jb21wbGV0ZV9yZXF1ZXN0KHRyZXEsIDApOwoJCWdvdG8gZG9uZTsKCX0KCglwYXJlbnQgICAg ID0gdGFwZGlza192YmRfbmV4dF9pbWFnZShpbWFnZSk7Cgl0cmVxLmltYWdlID0gcGFyZW50OwoK CS8qIHJldHVybiB6ZXJvcyBmb3IgcmVxdWVzdHMgdGhhdCBleHRlbmQgYmV5b25kIGVuZCBvZiBw YXJlbnQgaW1hZ2UgKi8KCWlmICh0cmVxLnNlYyArIHRyZXEuc2VjcyA+IHBhcmVudC0+aW5mby5z aXplKSB7CgkJdGRfcmVxdWVzdF90IGNsb25lICA9IHRyZXE7CgoJCWlmIChwYXJlbnQtPmluZm8u c2l6ZSA+IHRyZXEuc2VjKSB7CgkJCWludCBzZWNzICAgID0gcGFyZW50LT5pbmZvLnNpemUgLSB0 cmVxLnNlYzsKCQkJY2xvbmUuc2VjICArPSBzZWNzOwoJCQljbG9uZS5zZWNzIC09IHNlY3M7CgkJ CWNsb25lLmJ1ZiAgKz0gKHNlY3MgPDwgU0VDVE9SX1NISUZUKTsKCQkJdHJlcS5zZWNzICAgPSBz ZWNzOwoJCX0gZWxzZQoJCQl0cmVxLnNlY3MgICA9IDA7CgoJCW1lbXNldChjbG9uZS5idWYsIDAs IGNsb25lLnNlY3MgPDwgU0VDVE9SX1NISUZUKTsKCQl0ZF9jb21wbGV0ZV9yZXF1ZXN0KGNsb25l LCAwKTsKCgkJaWYgKCF0cmVxLnNlY3MpCgkJCWdvdG8gZG9uZTsKCX0KCglzd2l0Y2ggKHRyZXEu b3ApIHsKCWNhc2UgVERfT1BfV1JJVEU6CgkJdGRfcXVldWVfd3JpdGUocGFyZW50LCB0cmVxKTsK CQlicmVhazsKCgljYXNlIFREX09QX1JFQUQ6CgkJdGRfcXVldWVfcmVhZChwYXJlbnQsIHRyZXEp OwoJCWJyZWFrOwoJfQoKZG9uZToKCXZyZXEtPnN1Ym1pdHRpbmctLTsKCWlmICghdnJlcS0+c2Vj c19wZW5kaW5nKQoJCXRhcGRpc2tfdmJkX2NvbXBsZXRlX3ZiZF9yZXF1ZXN0KHZiZCwgdnJlcSk7 Cn0KCnZvaWQKdGFwZGlza192YmRfZm9yd2FyZF9yZXF1ZXN0KHRkX3JlcXVlc3RfdCB0cmVxKQp7 Cgl0ZF92YmRfdCAqdmJkOwoJdGRfaW1hZ2VfdCAqaW1hZ2U7Cgl0ZF92YmRfcmVxdWVzdF90ICp2 cmVxOwoKCWltYWdlID0gdHJlcS5pbWFnZTsKCXZyZXEgID0gdHJlcS52cmVxOwoJdmJkICAgPSB2 cmVxLT52YmQ7CgoJdGFwZGlza192YmRfbWFya19wcm9ncmVzcyh2YmQpOwoKCWlmICh0YXBkaXNr X3ZiZF9xdWV1ZV9yZWFkeSh2YmQpKQoJCV9fdGFwZGlza192YmRfcmVpc3N1ZV90ZF9yZXF1ZXN0 KHZiZCwgaW1hZ2UsIHRyZXEpOwoJZWxzZQoJCV9fdGFwZGlza192YmRfY29tcGxldGVfdGRfcmVx dWVzdCh2YmQsIHZyZXEsIHRyZXEsIC1FQlVTWSk7Cn0KCnZvaWQKdGFwZGlza192YmRfY29tcGxl dGVfdGRfcmVxdWVzdCh0ZF9yZXF1ZXN0X3QgdHJlcSwgaW50IHJlcykKewoJdGRfdmJkX3QgKnZi ZDsKCXRkX2ltYWdlX3QgKmltYWdlLCAqbGVhZjsKCXRkX3ZiZF9yZXF1ZXN0X3QgKnZyZXE7CgoJ aW1hZ2UgPSB0cmVxLmltYWdlOwoJdnJlcSAgPSB0cmVxLnZyZXE7Cgl2YmQgICA9IHZyZXEtPnZi ZDsKCgl0YXBkaXNrX3ZiZF9tYXJrX3Byb2dyZXNzKHZiZCk7CgoJaWYgKGFicyhyZXMpID09IEVO T1NQQyAmJiB0ZF9mbGFnX3Rlc3QoaW1hZ2UtPmZsYWdzLAoJCQkJVERfSUdOT1JFX0VOT1NQQykp IHsKCQlyZXMgPSAwOwoJCWxlYWYgPSB0YXBkaXNrX3ZiZF9maXJzdF9pbWFnZSh2YmQpOwoJCWlm ICh2YmQtPnNlY29uZGFyeV9tb2RlID09IFREX1ZCRF9TRUNPTkRBUllfTUlSUk9SKSB7CgkJCURQ UklOVEYoIkVOT1NQQzogZGlzYWJsaW5nIG1pcnJvcmluZ1xuIik7CgkJCWxpc3RfZGVsX2luaXQo JmxlYWYtPm5leHQpOwoJCQl2YmQtPnJldGlyZWQgPSBsZWFmOwoJCX0gZWxzZSBpZiAodmJkLT5z ZWNvbmRhcnlfbW9kZSA9PSBURF9WQkRfU0VDT05EQVJZX1NUQU5EQlkpIHsKCQkJRFBSSU5URigi RU5PU1BDOiBmYWlsaW5nIG92ZXIgdG8gc2Vjb25kYXJ5IGltYWdlXG4iKTsKCQkJbGlzdF9hZGQo JnZiZC0+c2Vjb25kYXJ5LT5uZXh0LCBsZWFmLT5uZXh0LnByZXYpOwoJCQl2YmQtPkZJWE1FX2Vu b3NwY19yZWRpcmVjdF9jb3VudF9lbmFibGVkID0gMTsKCQl9CgkJaWYgKHZiZC0+c2Vjb25kYXJ5 X21vZGUgIT0gVERfVkJEX1NFQ09OREFSWV9ESVNBQkxFRCkgewoJCQl2YmQtPnNlY29uZGFyeSA9 IE5VTEw7CgkJCXZiZC0+c2Vjb25kYXJ5X21vZGUgPSBURF9WQkRfU0VDT05EQVJZX0RJU0FCTEVE OwoJCQlzaWduYWxfZW5vc3BjKHZiZCk7CgkJfQoJfQoKCWlmIChyZXMgIT0gMCAmJiBpbWFnZS0+ dHlwZSA9PSBESVNLX1RZUEVfTkJEICYmIAoJCQkoKGltYWdlID09IHZiZC0+c2Vjb25kYXJ5KSB8 fCAKCQkJIChpbWFnZSA9PSB2YmQtPnJldGlyZWQpKSkgewoJCUVSUk9SKCJHb3Qgbm9uLXplcm8g cmVzIGZvciBOQkQgc2Vjb25kYXJ5IC0gZGlzYWJsaW5nICIKCQkJCSJtaXJyb3Jpbmc6ICVzIix2 cmVxLT5uYW1lKTsKCQl2YmQtPm5iZF9taXJyb3JfZmFpbGVkID0gMTsKCQlyZXMgPSAwOyAvKiBQ cmV0ZW5kIHRoZSB3cml0ZXMgaGF2ZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5ICovCgoJCS8qIEl0 IHdhcyB0aGUgc2Vjb25kYXJ5IHRoYXQgdGltZWQgb3V0IC0gZGlzYWJsZSBzZWNvbmRhcnkgKi8K CQlsaXN0X2RlbF9pbml0KCZpbWFnZS0+bmV4dCk7CgkJdmJkLT5yZXRpcmVkID0gaW1hZ2U7CgkJ aWYgKHZiZC0+c2Vjb25kYXJ5X21vZGUgIT0gVERfVkJEX1NFQ09OREFSWV9ESVNBQkxFRCkgewoJ CQl2YmQtPnNlY29uZGFyeSA9IE5VTEw7CgkJCXZiZC0+c2Vjb25kYXJ5X21vZGUgPSBURF9WQkRf U0VDT05EQVJZX0RJU0FCTEVEOwoJCX0KCX0KCglEQkcoVExPR19EQkcsICIlczogcmVxICVzIHNl ZyAlZCBzZWMgMHglMDgiUFJJeDY0CgkgICAgIiBzZWNzIDB4JTA0eCBidWYgJXAgb3AgJWQgcmVz ICVkXG4iLCBpbWFnZS0+bmFtZSwKCSAgICB2cmVxLT5uYW1lLCB0cmVxLnNpZHgsIHRyZXEuc2Vj LCB0cmVxLnNlY3MsCgkgICAgdHJlcS5idWYsIHZyZXEtPm9wLCByZXMpOwoKCV9fdGFwZGlza192 YmRfY29tcGxldGVfdGRfcmVxdWVzdCh2YmQsIHZyZXEsIHRyZXEsIHJlcyk7Cn0KCnN0YXRpYyBp bmxpbmUgdm9pZApxdWV1ZV9taXJyb3JfcmVxKHRkX3ZiZF90ICp2YmQsIHRkX3JlcXVlc3RfdCBj bG9uZSkKewoJY2xvbmUuaW1hZ2UgPSB2YmQtPnNlY29uZGFyeTsKCXRkX3F1ZXVlX3dyaXRlKHZi ZC0+c2Vjb25kYXJ5LCBjbG9uZSk7Cn0KCnN0YXRpYyBpbnQKdGFwZGlza192YmRfaXNzdWVfcmVx dWVzdCh0ZF92YmRfdCAqdmJkLCB0ZF92YmRfcmVxdWVzdF90ICp2cmVxKQp7Cgl0ZF9pbWFnZV90 ICppbWFnZTsKCXRkX3JlcXVlc3RfdCB0cmVxOwoJdGRfc2VjdG9yX3Qgc2VjOwoJaW50IGksIGVy cjsKCglzZWMgICAgPSB2cmVxLT5zZWM7CglpbWFnZSAgPSB0YXBkaXNrX3ZiZF9maXJzdF9pbWFn ZSh2YmQpOwoKCXZyZXEtPnN1Ym1pdHRpbmcgPSAxOwoKCXRhcGRpc2tfdmJkX21hcmtfcHJvZ3Jl c3ModmJkKTsKCXZyZXEtPmxhc3RfdHJ5ID0gdmJkLT50czsKCgl0YXBkaXNrX3ZiZF9tb3ZlX3Jl cXVlc3QodnJlcSwgJnZiZC0+cGVuZGluZ19yZXF1ZXN0cyk7CgoJZXJyID0gdGFwZGlza192YmRf Y2hlY2tfcXVldWUodmJkKTsKCWlmIChlcnIpIHsKCQl2cmVxLT5lcnJvciA9IGVycjsKCQlnb3Rv IGZhaWw7Cgl9CgoJZXJyID0gdGFwZGlza19pbWFnZV9jaGVja19yZXF1ZXN0KGltYWdlLCB2cmVx KTsKCWlmIChlcnIpIHsKCQl2cmVxLT5lcnJvciA9IGVycjsKCQlnb3RvIGZhaWw7Cgl9CgoJZm9y IChpID0gMDsgaSA8IHZyZXEtPmlvdmNudDsgaSsrKSB7CgkJc3RydWN0IHRkX2lvdmVjICppb3Yg PSAmdnJlcS0+aW92W2ldOwoKCQl0cmVxLnNpZHggICAgICAgICAgID0gaTsKCQl0cmVxLmJ1ZiAg ICAgICAgICAgID0gaW92LT5iYXNlOwoJCXRyZXEuc2VjICAgICAgICAgICAgPSBzZWM7CgkJdHJl cS5zZWNzICAgICAgICAgICA9IGlvdi0+c2VjczsKCQl0cmVxLmltYWdlICAgICAgICAgID0gaW1h Z2U7CgkJdHJlcS5jYiAgICAgICAgICAgICA9IHRhcGRpc2tfdmJkX2NvbXBsZXRlX3RkX3JlcXVl c3Q7CgkJdHJlcS5jYl9kYXRhICAgICAgICA9IE5VTEw7CgkJdHJlcS52cmVxICAgICAgICAgICA9 IHZyZXE7CgoKCQl2cmVxLT5zZWNzX3BlbmRpbmcgKz0gaW92LT5zZWNzOwoJCXZiZC0+c2Vjc19w ZW5kaW5nICArPSBpb3YtPnNlY3M7CgkJaWYgKHZiZC0+c2Vjb25kYXJ5X21vZGUgPT0gVERfVkJE X1NFQ09OREFSWV9NSVJST1IgJiYKCQkgICAgdnJlcS0+b3AgPT0gVERfT1BfV1JJVEUpIHsKCQkJ dnJlcS0+c2Vjc19wZW5kaW5nICs9IGlvdi0+c2VjczsKCQkJdmJkLT5zZWNzX3BlbmRpbmcgICs9 IGlvdi0+c2VjczsKCQl9CgoJCXN3aXRjaCAodnJlcS0+b3ApIHsKCQljYXNlIFREX09QX1dSSVRF OgoJCQl0cmVxLm9wID0gVERfT1BfV1JJVEU7CgkJCS8qCgkJCSAqIGl0J3MgaW1wb3J0YW50IHRv IHF1ZXVlIHRoZSBtaXJyb3IgcmVxdWVzdCBiZWZvcmUgCgkJCSAqIHF1ZXVpbmcgdGhlIG1haW4g b25lLiBJZiB0aGUgbWFpbiBpbWFnZSBydW5zIGludG8gCgkJCSAqIEVOT1NQQywgdGhlIG1pcnJv cmluZyBjb3VsZCBiZSBkaXNhYmxlZCBiZWZvcmUgCgkJCSAqIHRkX3F1ZXVlX3dyaXRlIHJldHVy bnMsIHNvIGlmIHRoZSBtaXJyb3IgcmVxdWVzdCB3YXMgCgkJCSAqIHF1ZXVlZCBhZnRlciAod2hp Y2ggd291bGQgdGhlbiBub3QgaGFwcGVuKSwgd2UnZCAKCQkJICogbG9zZSB0aGF0IHdyaXRlIGFu ZCBjYXVzZSB0aGUgcHJvY2VzcyB0byBoYW5nIHdpdGggCgkJCSAqIHVuYWNrbm93bGVkZ2VkIHdy aXRlcwoJCQkgKi8KCQkJaWYgKHZiZC0+c2Vjb25kYXJ5X21vZGUgPT0gVERfVkJEX1NFQ09OREFS WV9NSVJST1IpCgkJCQlxdWV1ZV9taXJyb3JfcmVxKHZiZCwgdHJlcSk7CgkJCXRkX3F1ZXVlX3dy aXRlKHRyZXEuaW1hZ2UsIHRyZXEpOwoJCQlicmVhazsKCgkJY2FzZSBURF9PUF9SRUFEOgoJCQl0 cmVxLm9wID0gVERfT1BfUkVBRDsKCQkJdGRfcXVldWVfcmVhZCh0cmVxLmltYWdlLCB0cmVxKTsK CQkJYnJlYWs7CgkJfQoKCQlEQkcoVExPR19EQkcsICIlczogcmVxICVzIHNlZyAlZCBzZWMgMHgl MDgiUFJJeDY0IiBzZWNzIDB4JTA0eCAiCgkJICAgICJidWYgJXAgb3AgJWRcbiIsIGltYWdlLT5u YW1lLCB2cmVxLT5uYW1lLCBpLCB0cmVxLnNlYywgdHJlcS5zZWNzLAoJCSAgICB0cmVxLmJ1Ziwg dnJlcS0+b3ApOwoJCXNlYyArPSBpb3YtPnNlY3M7Cgl9CgoJZXJyID0gMDsKCm91dDoKCXZyZXEt PnN1Ym1pdHRpbmctLTsKCWlmICghdnJlcS0+c2Vjc19wZW5kaW5nKSB7CgkJZXJyID0gKGVyciA/ IDogdnJlcS0+ZXJyb3IpOwoJCXRhcGRpc2tfdmJkX2NvbXBsZXRlX3ZiZF9yZXF1ZXN0KHZiZCwg dnJlcSk7Cgl9CgoJcmV0dXJuIGVycjsKCmZhaWw6Cgl2cmVxLT5lcnJvciA9IGVycjsKCWdvdG8g b3V0Owp9CgpzdGF0aWMgaW50CnRhcGRpc2tfdmJkX3JlcXVlc3RfY29tcGxldGVkKHRkX3ZiZF90 ICp2YmQsIHRkX3ZiZF9yZXF1ZXN0X3QgKnZyZXEpCnsKCXJldHVybiB2cmVxLT5saXN0X2hlYWQg PT0gJnZiZC0+Y29tcGxldGVkX3JlcXVlc3RzOwp9CgpzdGF0aWMgaW50CnRhcGRpc2tfdmJkX3Jl aXNzdWVfZmFpbGVkX3JlcXVlc3RzKHRkX3ZiZF90ICp2YmQpCnsKCWludCBlcnI7CglzdHJ1Y3Qg dGltZXZhbCBub3c7Cgl0ZF92YmRfcmVxdWVzdF90ICp2cmVxLCAqdG1wOwoKCWVyciA9IDA7Cgln ZXR0aW1lb2ZkYXkoJm5vdywgTlVMTCk7CgoJdGFwZGlza192YmRfZm9yX2VhY2hfcmVxdWVzdCh2 cmVxLCB0bXAsICZ2YmQtPmZhaWxlZF9yZXF1ZXN0cykgewoJCWlmICh2cmVxLT5zZWNzX3BlbmRp bmcpCgkJCWNvbnRpbnVlOwoKCQlpZiAodGRfZmxhZ190ZXN0KHZiZC0+c3RhdGUsIFREX1ZCRF9T SFVURE9XTl9SRVFVRVNURUQpKSB7CgkJCXRhcGRpc2tfdmJkX2NvbXBsZXRlX3ZiZF9yZXF1ZXN0 KHZiZCwgdnJlcSk7CgkJCWNvbnRpbnVlOwoJCX0KCgkJaWYgKHZyZXEtPmVycm9yICE9IC1FQlVT WSAmJgoJCSAgICBub3cudHZfc2VjIC0gdnJlcS0+bGFzdF90cnkudHZfc2VjIDwgVERfVkJEX1JF VFJZX0lOVEVSVkFMKQoJCQljb250aW51ZTsKCgkJdmJkLT5yZXRyaWVzKys7CgkJdnJlcS0+bnVt X3JldHJpZXMrKzsKCgkJdnJlcS0+cHJldl9lcnJvciA9IHZyZXEtPmVycm9yOwoJCXZyZXEtPmVy cm9yICAgICAgPSAwOwoKCQlEQkcoVExPR19EQkcsICJyZXRyeSAjJWQgb2YgcmVxICVzLCAiCgkJ ICAgICJzZWMgMHglMDgiUFJJeDY0IiwgaW92Y250OiAlZFxuIiwgdnJlcS0+bnVtX3JldHJpZXMs CgkJICAgIHZyZXEtPm5hbWUsIHZyZXEtPnNlYywgdnJlcS0+aW92Y250KTsKCgkJZXJyID0gdGFw ZGlza192YmRfaXNzdWVfcmVxdWVzdCh2YmQsIHZyZXEpOwoJCS8qCgkJICogaWYgdGhpcyByZXF1 ZXN0IGZhaWxlZCwgYnV0IHdhcyBub3QgY29tcGxldGVkLAoJCSAqIHdlJ2xsIGJhY2sgb2ZmIGZv ciBhIHdoaWxlLgoJCSAqLwoJCWlmIChlcnIgJiYgIXRhcGRpc2tfdmJkX3JlcXVlc3RfY29tcGxl dGVkKHZiZCwgdnJlcSkpCgkJCWJyZWFrOwoJfQoKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9pZAp0 YXBkaXNrX3ZiZF9jb3VudF9uZXdfcmVxdWVzdCh0ZF92YmRfdCAqdmJkLCB0ZF92YmRfcmVxdWVz dF90ICp2cmVxKQp7CglzdHJ1Y3QgdGRfaW92ZWMgKmlvdjsKCWludCB3cml0ZTsKCgl3cml0ZSA9 IHZyZXEtPm9wID09IFREX09QX1dSSVRFOwoKCWZvciAoaW92ID0gJnZyZXEtPmlvdlswXTsgaW92 IDwgJnZyZXEtPmlvdlt2cmVxLT5pb3ZjbnRdOyBpb3YrKykKCQl0ZF9zZWN0b3JfY291bnRfYWRk KCZ2YmQtPnNlY3MsIGlvdi0+c2Vjcywgd3JpdGUpOwp9CgpzdGF0aWMgaW50CnRhcGRpc2tfdmJk X2lzc3VlX25ld19yZXF1ZXN0cyh0ZF92YmRfdCAqdmJkKQp7CglpbnQgZXJyOwoJdGRfdmJkX3Jl cXVlc3RfdCAqdnJlcSwgKnRtcDsKCgl0YXBkaXNrX3ZiZF9mb3JfZWFjaF9yZXF1ZXN0KHZyZXEs IHRtcCwgJnZiZC0+bmV3X3JlcXVlc3RzKSB7CgkJZXJyID0gdGFwZGlza192YmRfaXNzdWVfcmVx dWVzdCh2YmQsIHZyZXEpOwoJCS8qCgkJICogaWYgdGhpcyByZXF1ZXN0IGZhaWxlZCwgYnV0IHdh cyBub3QgY29tcGxldGVkLAoJCSAqIHdlJ2xsIGJhY2sgb2ZmIGZvciBhIHdoaWxlLgoJCSAqLwoJ CWlmIChlcnIgJiYgIXRhcGRpc2tfdmJkX3JlcXVlc3RfY29tcGxldGVkKHZiZCwgdnJlcSkpCgkJ CXJldHVybiBlcnI7CgoJCXRhcGRpc2tfdmJkX2NvdW50X25ld19yZXF1ZXN0KHZiZCwgdnJlcSk7 Cgl9CgoJcmV0dXJuIDA7Cn0KCmludAp0YXBkaXNrX3ZiZF9yZWNoZWNrX3N0YXRlKHRkX3ZiZF90 ICp2YmQpCnsKCWlmIChsaXN0X2VtcHR5KCZ2YmQtPm5ld19yZXF1ZXN0cykpCgkJcmV0dXJuIDA7 CgoJaWYgKHRkX2ZsYWdfdGVzdCh2YmQtPnN0YXRlLCBURF9WQkRfUVVJRVNDRUQpIHx8CgkgICAg dGRfZmxhZ190ZXN0KHZiZC0+c3RhdGUsIFREX1ZCRF9RVUlFU0NFX1JFUVVFU1RFRCkpCgkJcmV0 dXJuIDA7CgoJdGFwZGlza192YmRfaXNzdWVfbmV3X3JlcXVlc3RzKHZiZCk7CgoJcmV0dXJuIDE7 Cn0KCnN0YXRpYyBpbnQKdGFwZGlza192YmRfa2lsbF9yZXF1ZXN0cyh0ZF92YmRfdCAqdmJkKQp7 Cgl0ZF92YmRfcmVxdWVzdF90ICp2cmVxLCAqdG1wOwoKCXRhcGRpc2tfdmJkX2Zvcl9lYWNoX3Jl cXVlc3QodnJlcSwgdG1wLCAmdmJkLT5uZXdfcmVxdWVzdHMpIHsKCQl2cmVxLT5lcnJvciA9IC1F U0hVVERPV047CgkJdGFwZGlza192YmRfbW92ZV9yZXF1ZXN0KHZyZXEsICZ2YmQtPmNvbXBsZXRl ZF9yZXF1ZXN0cyk7Cgl9CgoJdGFwZGlza192YmRfZm9yX2VhY2hfcmVxdWVzdCh2cmVxLCB0bXAs ICZ2YmQtPmZhaWxlZF9yZXF1ZXN0cykgewoJCXZyZXEtPmVycm9yID0gLUVTSFVURE9XTjsKCQl0 YXBkaXNrX3ZiZF9tb3ZlX3JlcXVlc3QodnJlcSwgJnZiZC0+Y29tcGxldGVkX3JlcXVlc3RzKTsK CX0KCglyZXR1cm4gMDsKfQoKaW50CnRhcGRpc2tfdmJkX2lzc3VlX3JlcXVlc3RzKHRkX3ZiZF90 ICp2YmQpCnsKCWludCBlcnI7CgoJaWYgKHRkX2ZsYWdfdGVzdCh2YmQtPnN0YXRlLCBURF9WQkRf REVBRCkpCgkJcmV0dXJuIHRhcGRpc2tfdmJkX2tpbGxfcmVxdWVzdHModmJkKTsKCglpZiAodGRf ZmxhZ190ZXN0KHZiZC0+c3RhdGUsIFREX1ZCRF9RVUlFU0NFRCkgfHwKCSAgICB0ZF9mbGFnX3Rl c3QodmJkLT5zdGF0ZSwgVERfVkJEX1FVSUVTQ0VfUkVRVUVTVEVEKSkgewoKCQlpZiAodGRfZmxh Z190ZXN0KHZiZC0+c3RhdGUsIFREX1ZCRF9SRVNVTUVfRkFJTEVEKSkKCQkJcmV0dXJuIHRhcGRp c2tfdmJkX2tpbGxfcmVxdWVzdHModmJkKTsKCQllbHNlCgkJCXJldHVybiAtRUFHQUlOOwoJfQoK CWVyciA9IHRhcGRpc2tfdmJkX3JlaXNzdWVfZmFpbGVkX3JlcXVlc3RzKHZiZCk7CglpZiAoZXJy KQoJCXJldHVybiBlcnI7CgoJcmV0dXJuIHRhcGRpc2tfdmJkX2lzc3VlX25ld19yZXF1ZXN0cyh2 YmQpOwp9CgppbnQKdGFwZGlza192YmRfcXVldWVfcmVxdWVzdCh0ZF92YmRfdCAqdmJkLCB0ZF92 YmRfcmVxdWVzdF90ICp2cmVxKQp7CglnZXR0aW1lb2ZkYXkoJnZyZXEtPnRzLCBOVUxMKTsKCXZy ZXEtPnZiZCA9IHZiZDsKCglsaXN0X2FkZF90YWlsKCZ2cmVxLT5uZXh0LCAmdmJkLT5uZXdfcmVx dWVzdHMpOwoJdmJkLT5yZWNlaXZlZCsrOwoKCXJldHVybiAwOwp9Cgp2b2lkCnRhcGRpc2tfdmJk X2tpY2sodGRfdmJkX3QgKnZiZCkKewoJY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCA9ICZ2 YmQtPmNvbXBsZXRlZF9yZXF1ZXN0czsKCXRkX3ZiZF9yZXF1ZXN0X3QgKnZyZXEsICpwcmV2LCAq bmV4dDsKCgl2YmQtPmtpY2tlZCsrOwoKCXdoaWxlICghbGlzdF9lbXB0eShsaXN0KSkgewoKCQkv KgoJCSAqIFRha2Ugb25lIHJlcXVlc3Qgb2ZmIHRoZSBjb21wbGV0ZWQgcmVxdWVzdHMgbGlzdCwg YW5kIHRoZW4gbG9vayBmb3IKCQkgKiBvdGhlciByZXF1ZXN0cyBpbiB0aGUgc2FtZSBsaXN0IHRo YXQgaGF2ZSB0aGUgc2FtZSB0b2tlbiBhbmQKCQkgKiBjb21wbGV0ZSB0aGVtLiBUaGlzIHdheSB3 ZSBjb21wbGV0ZSByZXF1ZXN0cyBhZ2FpbnN0IHRoZSBzYW1lIHRva2VuCgkJICogaW4gb25lIGdv IGJlZm9yZSB3ZSBwcm9jZWVkIHRvIGNvbXBsZXRpbmcgcmVxdWVzdHMgd2l0aCBvdGhlcgoJCSAq IHRva2Vucy4gVGhlIHRva2VuIGlzIHVzdWFsbHkgdXNlZCB0byBwb2ludCBiYWNrIHRvIHNvbWUg b3RoZXIKCQkgKiBzdHJ1Y3R1cmUsIGUuZy4gYSBibGt0YXAgb3IgYSB0YXBkaXNrMyBjb25uZXhp b24uIE9uY2UgYWxsIHJlcXVlc3RzCgkJICogd2l0aCBhIHNwZWNpZmljIHRva2VuIGhhdmUgYmVl biBjb21wbGV0ZWQsIHByb2NlZWQgdG8gdGhlIG5leHQgb25lCgkJICogdW50aWwgdGhlIGxpc3Qg aXMgZW1wdHkuCgkJICovCgkJcHJldiA9IGxpc3RfZW50cnkobGlzdC0+bmV4dCwgdGRfdmJkX3Jl cXVlc3RfdCwgbmV4dCk7CgkJbGlzdF9kZWwoJnByZXYtPm5leHQpOwoKCQl0YXBkaXNrX3ZiZF9m b3JfZWFjaF9yZXF1ZXN0KHZyZXEsIG5leHQsIGxpc3QpIHsKCQkJaWYgKHZyZXEtPnRva2VuID09 IHByZXYtPnRva2VuKSB7CgoJCQkJcHJldi0+Y2IocHJldiwgcHJldi0+ZXJyb3IsIHByZXYtPnRv a2VuLCAwKTsKCQkJCXZiZC0+cmV0dXJuZWQrKzsKCgkJCQlsaXN0X2RlbCgmdnJlcS0+bmV4dCk7 CgkJCQlwcmV2ID0gdnJlcTsKCQkJfQoJCX0KCgkJcHJldi0+Y2IocHJldiwgcHJldi0+ZXJyb3Is IHByZXYtPnRva2VuLCAxKTsKCQl2YmQtPnJldHVybmVkKys7Cgl9Cn0KCmludAp0YXBkaXNrX3Zi ZF9zdGFydF9uYmRzZXJ2ZXIodGRfdmJkX3QgKnZiZCkKewoJdGRfZGlza19pbmZvX3QgaW5mbzsK CWludCBlcnI7CgoJZXJyID0gdGFwZGlza192YmRfZ2V0X2Rpc2tfaW5mbyh2YmQsICZpbmZvKTsK CglpZiAoZXJyKQoJCXJldHVybiBlcnI7CgoJdmJkLT5uYmRzZXJ2ZXIgPSB0YXBkaXNrX25iZHNl cnZlcl9hbGxvYyh2YmQsIGluZm8pOwoKCWlmICghdmJkLT5uYmRzZXJ2ZXIpIHsKCQlFUFJJTlRG KCJFcnJvciBzdGFydGluZyBuYmQgc2VydmVyIik7CgkJcmV0dXJuIC0xOwoJfQoKCWVyciA9IHRh cGRpc2tfbmJkc2VydmVyX2xpc3Rlbl91bml4KHZiZC0+bmJkc2VydmVyKTsKCWlmIChlcnIpIHsK CQl0YXBkaXNrX25iZHNlcnZlcl9mcmVlKHZiZC0+bmJkc2VydmVyKTsKCQlFUFJJTlRGKCJmYWls ZWQgdG8gbGlzdGVuIG9uIHRoZSBVTklYIGRvbWFpbiBzb2NrZXQ6ICVzXG4iLAoJCQkJc3RyZXJy b3IoLWVycikpOwoJCXJldHVybiBlcnI7Cgl9CgoJcmV0dXJuIDA7Cn0KCgpzdGF0aWMgaW50CnRh cGRpc2tfdmJkX3JlcXNfb3V0c3RhbmRpbmcodGRfdmJkX3QgKnZiZCkKewoJaW50IG5ldywgcGVu ZGluZywgZmFpbGVkLCBjb21wbGV0ZWQ7CgoJQVNTRVJUKHZiZCk7CgoJdGFwZGlza192YmRfcXVl dWVfY291bnQodmJkLCAmbmV3LCAmcGVuZGluZywgJmZhaWxlZCwgJmNvbXBsZXRlZCk7CgoJcmV0 dXJuIG5ldyArIHBlbmRpbmcgKyBmYWlsZWQgKyBjb21wbGV0ZWQ7Cn0KCgp2b2lkCnRhcGRpc2tf dmJkX3N0YXRzKHRkX3ZiZF90ICp2YmQsIHRkX3N0YXRzX3QgKnN0KQp7Cgl0ZF9pbWFnZV90ICpp bWFnZSwgKm5leHQ7CiAgICBzdHJ1Y3QgdGRfeGVuYmxraWYgKmJsa2lmOwoJY29uc3QgYm9vbCBy ZWFkX2NhY2hpbmcgPQoJCVREX09QRU5fTk9fT19ESVJFQ1QgPT0gKHZiZC0+ZmxhZ3MgJiBURF9P UEVOX05PX09fRElSRUNUKTsKCgl0YXBkaXNrX3N0YXRzX2VudGVyKHN0LCAneycpOwoJdGFwZGlz a19zdGF0c19maWVsZChzdCwgIm5hbWUiLCAicyIsIHZiZC0+bmFtZSk7CgoJdGFwZGlza19zdGF0 c19maWVsZChzdCwgInNlY3MiLCAiWyIpOwoJdGFwZGlza19zdGF0c192YWwoc3QsICJsbHUiLCB2 YmQtPnNlY3MucmQpOwoJdGFwZGlza19zdGF0c192YWwoc3QsICJsbHUiLCB2YmQtPnNlY3Mud3Ip OwoJdGFwZGlza19zdGF0c19sZWF2ZShzdCwgJ10nKTsKCgl0YXBkaXNrX3N0YXRzX2ZpZWxkKHN0 LCAiaW1hZ2VzIiwgIlsiKTsKCXRhcGRpc2tfdmJkX2Zvcl9lYWNoX2ltYWdlKHZiZCwgaW1hZ2Us IG5leHQpCgkJdGFwZGlza19pbWFnZV9zdGF0cyhpbWFnZSwgc3QpOwoJdGFwZGlza19zdGF0c19s ZWF2ZShzdCwgJ10nKTsKCglpZiAodmJkLT50YXApIHsKCQl0YXBkaXNrX3N0YXRzX2ZpZWxkKHN0 LCAidGFwIiwgInsiKTsKCQl0YXBkaXNrX2Jsa3RhcF9zdGF0cyh2YmQtPnRhcCwgc3QpOwoJCXRh cGRpc2tfc3RhdHNfbGVhdmUoc3QsICd9Jyk7Cgl9CgogICAgLyoKICAgICAqIFRPRE8gSXMgdGhp cyB1c2VkIGJ5IGFueSBvbmU/CiAgICAgKi8KICAgIGlmICghbGlzdF9lbXB0eSgmdmJkLT5yaW5n cykpIHsKCSAgICB0YXBkaXNrX3N0YXRzX2ZpZWxkKHN0LCAieGVuYnVzIiwgInsiKTsKICAgICAg ICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsa2lmLCAmdmJkLT5yaW5ncywgZW50cnkpCgkJICAgIHRh cGRpc2tfeGVuYmxraWZfc3RhdHMoYmxraWYsIHN0KTsKICAgIAl0YXBkaXNrX3N0YXRzX2xlYXZl KHN0LCAnfScpOwogICAgfQoKCXRhcGRpc2tfc3RhdHNfZmllbGQoc3QsCgkJCSJGSVhNRV9lbm9z cGNfcmVkaXJlY3RfY291bnQiLAoJCQkibGx1IiwgdmJkLT5GSVhNRV9lbm9zcGNfcmVkaXJlY3Rf Y291bnQpOwoKCXRhcGRpc2tfc3RhdHNfZmllbGQoc3QsCgkJCSJuYmRfbWlycm9yX2ZhaWxlZCIs CgkJCSJkIiwgdmJkLT5uYmRfbWlycm9yX2ZhaWxlZCk7CgoJdGFwZGlza19zdGF0c19maWVsZChz dCwKCQkJInJlcXNfb3V0c3RhbmRpbmciLAoJCQkiZCIsIHRhcGRpc2tfdmJkX3JlcXNfb3V0c3Rh bmRpbmcodmJkKSk7CgoJdGFwZGlza19zdGF0c19maWVsZChzdCwKCQkJInJlYWRfY2FjaGluZyIs CgkJCSJzIiwgIHJlYWRfY2FjaGluZyA/ICJ0cnVlIjogImZhbHNlIik7CgoJdGFwZGlza19zdGF0 c19sZWF2ZShzdCwgJ30nKTsKfQoKCmJvb2wgaW5saW5lCnRhcGRpc2tfdmJkX2NvbnRhaW5zX2Rl YWRfcmluZ3ModGRfdmJkX3QgKiB2YmQpCnsKICAgIHJldHVybiAhbGlzdF9lbXB0eSgmdmJkLT5k ZWFkX3JpbmdzKTsKfQo= --089e0149c47651c660051b8c376e Content-Type: text/x-csrc; charset=US-ASCII; name="block-vhd.c" Content-Disposition: attachment; filename="block-vhd.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_icgbylzw1 Ly8qIAogKiBDb3B5cmlnaHQgKEMpIENpdHJpeCBTeXN0ZW1zIEluYy4KICoKICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBt b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQogKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lv biAyLjEgb25seQogKgogKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuLAogKiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s IE1BICAwMjExMC0xMzAxLCBVU0EuCiAqLwoKLyoKICogYmxvY2stdmhkLmM6IGFzeW5jaHJvbm91 cyB2aGQgaW1wbGVtZW50YXRpb24uCiAqCiAqIEEgbm90ZSBvbiB3cml0ZSB0cmFuc2FjdGlvbnM6 CiAqIFdyaXRlcyB0aGF0IHJlcXVpcmUgdXBkYXRpbmcgdGhlIEJBVCBvciBiaXRtYXBzIGNhbm5v dCBiZSBzaWduYWxlZAogKiBhcyBjb21wbGV0ZSB1bnRpbCBhbGwgdXBkYXRlcyBoYXZlIHJlYWNo ZWQgZGlzay4gIFRyYW5zYWN0aW9ucyBhcmUKICogdXNlZCB0byBlbnN1cmUgcHJvcGVyIG9yZGVy aW5nIGluIHRoZXNlIGNhc2VzLiAgVGhlIHR3byB0eXBlcyBvZgogKiB0cmFuc2FjdGlvbnMgYXJl IGFzIGZvbGxvd3M6CiAqICAgLSBCaXRtYXAgdXBkYXRlcyBvbmx5OiBkYXRhIHdyaXRlcyB0aGF0 IHJlcXVpcmUgdXBkYXRlcyB0byB0aGUgc2FtZQogKiAgICAgYml0bWFwIGFyZSBncm91cGVkIGlu IGEgdHJhbnNhY3Rpb24uICBPbmx5IGFmdGVyIGFsbCBkYXRhIHdyaXRlcwogKiAgICAgaW4gYSB0 cmFuc2FjdGlvbiBjb21wbGV0ZSBkb2VzIHRoZSBiaXRtYXAgd3JpdGUgY29tbWVuY2UuICBPbmx5 CiAqICAgICBhZnRlciB0aGUgYml0bWFwIHdyaXRlIGZpbmlzaGVzIGFyZSB0aGUgZGF0YSB3cml0 ZXMgc2lnbmFsbGVkIGFzCiAqICAgICBjb21wbGV0ZS4KICogICAtIEJBVCBhbmQgYml0bWFwIHVw ZGF0ZXM6IGRhdGEgd3JpdGVzIGFyZSBncm91cGVkIGluIHRyYW5zYWN0aW9ucwogKiAgICAgYXMg YWJvdmUsIGJ1dCBhIHNwZWNpYWwgZXh0cmEgd3JpdGUgaXMgaW5jbHVkZWQgaW4gdGhlIHRyYW5z YWN0aW9uLAogKiAgICAgd2hpY2ggemVyb3Mgb3V0IHRoZSBuZXdseSBhbGxvY2F0ZWQgYml0bWFw IG9uIGRpc2suICBXaGVuIHRoZSBkYXRhCiAqICAgICB3cml0ZXMgYW5kIHRoZSB6ZXJvLWJpdG1h cCB3cml0ZSBjb21wbGV0ZSwgdGhlIEJBVCBhbmQgYml0bWFwIHdyaXRlcwogKiAgICAgYXJlIHN0 YXJ0ZWQgaW4gcGFyYWxsZWwuICBUaGUgdHJhbnNhY3Rpb24gaXMgY29tcGxldGVkIG9ubHkgYWZ0 ZXIgYm90aAogKiAgICAgdGhlIEJBVCBhbmQgYml0bWFwIHdyaXRlcyBzdWNjZXNzZnVsbHkgcmV0 dXJuLgogKi8KCiNpZmRlZiBIQVZFX0NPTkZJR19ICiNpbmNsdWRlICJjb25maWcuaCIKI2VuZGlm CgojaW5jbHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxzdGRpby5o PgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN5cy9z dGF0Lmg+CiNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KI2luY2x1ZGUgPHV1aWQvdXVpZC5oPiAvKiBG b3Igd2hhdGV2ZXIgcmVhc29uLCBMaW51eCBwYWNrYWdlcyB0aGlzIGluICovCiAgICAgICAgICAg ICAgICAgICAgICAgLyogZTJmc3Byb2dzLWRldmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqLwojaW5jbHVkZSA8c3RyaW5nLmg+ICAgIC8qIGZvciBtZW1zZXQuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KI2luY2x1ZGUgPGxpYmFpby5oPgojaW5jbHVkZSA8c3lzL21t YW4uaD4KI2luY2x1ZGUgPGxpbWl0cy5oPgoKI2luY2x1ZGUgImRlYnVnLmgiCiNpbmNsdWRlICJs aWJ2aGQuaCIKI2luY2x1ZGUgInRhcGRpc2suaCIKI2luY2x1ZGUgInRhcGRpc2stZHJpdmVyLmgi CiNpbmNsdWRlICJ0YXBkaXNrLWludGVyZmFjZS5oIgojaW5jbHVkZSAidGFwZGlzay1kaXNrdHlw ZS5oIgojaW5jbHVkZSAidGFwZGlzay1zdG9yYWdlLmgiCgp1bnNpZ25lZCBpbnQgU1BCOwoKI2Rl ZmluZSBERUJVR0dJTkcgICAyCiNkZWZpbmUgTUlDUk9TT0ZUX0NPTVBBVAoKI2RlZmluZSBWSERf QkFUTUFQX01BWF9SRVRSSUVTIDEwCgojZGVmaW5lIF9fVFJBQ0UocykJCQkJCQkJXAoJZG8gewkJ CQkJCQkJXAoJCURCRyhUTE9HX0RCRywgIiVzOiBRVUVVRUQ6ICUiIFBSSXU2NCAiLCBDT01QTEVU RUQ6ICUiCVwKCQkgICAgUFJJdTY0IiwgUkVUVVJORUQ6ICUiIFBSSXU2NCAiLCBEQVRBX0FMTE9D QVRFRDogIglcCgkJICAgICIldSwgQkJMSzogMHglMDR4XG4iLAkJCQlcCgkJICAgIHMtPnZoZC5m aWxlLCBzLT5xdWV1ZWQsIHMtPmNvbXBsZXRlZCwgcy0+cmV0dXJuZWQsCVwKCQkgICAgVkhEX1JF UVNfREFUQSAtIHMtPnZyZXFfZnJlZV9jb3VudCwJCQlcCgkJICAgIHMtPmJhdC5wYndfYmxrKTsJ CQkJCVwKCX0gd2hpbGUoMCkKCiNpZiAoREVCVUdHSU5HID09IDEpCiAgI2RlZmluZSBEQkcobGV2 ZWwsIF9mLCBfYS4uLikgICAgICBEUFJJTlRGKF9mLCAjI19hKQogICNkZWZpbmUgRVJSKF9zLCBl cnIsIF9mLCBfYS4uLikgICAgRFBSSU5URigiRVJST1I6ICVkOiAiIF9mLCBlcnIsICMjX2EpCiAg I2RlZmluZSBUUkFDRShzKSAgICAgICAgICAgICAgICAgICAoKHZvaWQpMCkKI2VsaWYgKERFQlVH R0lORyA9PSAyKQogICNkZWZpbmUgREJHKGxldmVsLCBfZiwgX2EuLi4pICAgICAgdGxvZ193cml0 ZShsZXZlbCwgX2YsICMjX2EpCiAgI2RlZmluZSBFUlIoX3MsIF9lcnIsIF9mLCBfYS4uLikgICB0 bG9nX2Rydl9lcnJvcigoX3MpLT5kcml2ZXIsIF9lcnIsIF9mLCAjI19hKQogICNkZWZpbmUgVFJB Q0UocykgICAgICAgICAgICAgICAgICAgX19UUkFDRShzKQojZWxzZQogICNkZWZpbmUgREJHKGxl dmVsLCBfZiwgX2EuLi4pICAgICAgKCh2b2lkKTApCiAgI2RlZmluZSBFUlIoX3MsIGVyciwgX2Ys IF9hLi4uKSAgICAoKHZvaWQpMCkKICAjZGVmaW5lIFRSQUNFKHMpICAgICAgICAgICAgICAgICAg ICgodm9pZCkwKQojZW5kaWYKCi8qKioqKipWSEQgREVGSU5FUyoqKioqKi8KI2RlZmluZSBWSERf Q0FDSEVfU0laRSAgICAgICAgICAgICAgIDMyCgojZGVmaW5lIFZIRF9SRVFTX0RBVEEgICAgICAg ICAgICAgICAgVEFQRElTS19EQVRBX1JFUVVFU1RTCiNkZWZpbmUgVkhEX1JFUVNfTUVUQSAgICAg ICAgICAgICAgICAoVkhEX0NBQ0hFX1NJWkUgKyAyKQojZGVmaW5lIFZIRF9SRVFTX1RPVEFMICAg ICAgICAgICAgICAgKFZIRF9SRVFTX0RBVEEgKyBWSERfUkVRU19NRVRBKQoKI2RlZmluZSBWSERf T1BfQkFUX1dSSVRFICAgICAgICAgICAgIDAKI2RlZmluZSBWSERfT1BfREFUQV9SRUFEICAgICAg ICAgICAgIDEKI2RlZmluZSBWSERfT1BfREFUQV9XUklURSAgICAgICAgICAgIDIKI2RlZmluZSBW SERfT1BfQklUTUFQX1JFQUQgICAgICAgICAgIDMKI2RlZmluZSBWSERfT1BfQklUTUFQX1dSSVRF ICAgICAgICAgIDQKI2RlZmluZSBWSERfT1BfWkVST19CTV9XUklURSAgICAgICAgIDUKI2RlZmlu ZSBWSERfT1BfUkVEVU5EQU5UX0JNX1dSSVRFICAgIDYKCiNkZWZpbmUgVkhEX0JNX0JBVF9MT0NL RUQgICAgICAgICAgICAwCiNkZWZpbmUgVkhEX0JNX0JBVF9DTEVBUiAgICAgICAgICAgICAxCiNk ZWZpbmUgVkhEX0JNX0JJVF9DTEVBUiAgICAgICAgICAgICAyCiNkZWZpbmUgVkhEX0JNX0JJVF9T RVQgICAgICAgICAgICAgICAzCiNkZWZpbmUgVkhEX0JNX05PVF9DQUNIRUQgICAgICAgICAgICA0 CiNkZWZpbmUgVkhEX0JNX1JFQURfUEVORElORyAgICAgICAgICA1CgojZGVmaW5lIFZIRF9GTEFH X09QRU5fUkRPTkxZICAgICAgICAgMQojZGVmaW5lIFZIRF9GTEFHX09QRU5fTk9fQ0FDSEUgICAg ICAgMgojZGVmaW5lIFZIRF9GTEFHX09QRU5fUVVJRVQgICAgICAgICAgNAojZGVmaW5lIFZIRF9G TEFHX09QRU5fU1RSSUNUICAgICAgICAgOAojZGVmaW5lIFZIRF9GTEFHX09QRU5fUVVFUlkgICAg ICAgICAgMTYKI2RlZmluZSBWSERfRkxBR19PUEVOX1BSRUFMTE9DQVRFICAgIDMyCiNkZWZpbmUg VkhEX0ZMQUdfT1BFTl9OT19PX0RJUkVDVCAgICA2NAojZGVmaW5lIFZIRF9GTEFHX09QRU5fTE9D QUxfQ0FDSEUgICAgMTI4CgojZGVmaW5lIFZIRF9GTEFHX0JBVF9MT0NLRUQgICAgICAgICAgMQoj ZGVmaW5lIFZIRF9GTEFHX0JBVF9XUklURV9TVEFSVEVEICAgMgoKI2RlZmluZSBWSERfRkxBR19C TV9VUERBVEVfQkFUICAgICAgIDEKI2RlZmluZSBWSERfRkxBR19CTV9XUklURV9QRU5ESU5HICAg IDIKI2RlZmluZSBWSERfRkxBR19CTV9SRUFEX1BFTkRJTkcgICAgIDQKI2RlZmluZSBWSERfRkxB R19CTV9MT0NLRUQgICAgICAgICAgIDgKCiNkZWZpbmUgVkhEX0ZMQUdfUkVRX1VQREFURV9CQVQg ICAgICAxCiNkZWZpbmUgVkhEX0ZMQUdfUkVRX1VQREFURV9CSVRNQVAgICAyCiNkZWZpbmUgVkhE X0ZMQUdfUkVRX1FVRVVFRCAgICAgICAgICA0CiNkZWZpbmUgVkhEX0ZMQUdfUkVRX0ZJTklTSEVE ICAgICAgICA4CgojZGVmaW5lIFZIRF9GTEFHX1RYX0xJVkUgICAgICAgICAgICAgMQojZGVmaW5l IFZIRF9GTEFHX1RYX1VQREFURV9CQVQgICAgICAgMgoKdHlwZWRlZiB1aW50OF90IHZoZF9mbGFn X3Q7CgpzdHJ1Y3QgdmhkX3N0YXRlOwpzdHJ1Y3QgdmhkX3JlcXVlc3Q7CgpzdHJ1Y3QgdmhkX3Jl cV9saXN0IHsKCXN0cnVjdCB2aGRfcmVxdWVzdCAgICAgICAqaGVhZDsKCXN0cnVjdCB2aGRfcmVx dWVzdCAgICAgICAqdGFpbDsKfTsKCnN0cnVjdCB2aGRfdHJhbnNhY3Rpb24gewoJaW50ICAgICAg ICAgICAgICAgICAgICAgICBlcnJvcjsKCWludCAgICAgICAgICAgICAgICAgICAgICAgY2xvc2Vk OwoJaW50ICAgICAgICAgICAgICAgICAgICAgICBzdGFydGVkOwoJaW50ICAgICAgICAgICAgICAg ICAgICAgICBmaW5pc2hlZDsKCXZoZF9mbGFnX3QgICAgICAgICAgICAgICAgc3RhdHVzOwoJc3Ry dWN0IHZoZF9yZXFfbGlzdCAgICAgICByZXF1ZXN0czsKfTsKCnN0cnVjdCB2aGRfcmVxdWVzdCB7 CglpbnQgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOwoJdWludDhfdCAgICAgICAgICAgICAg ICAgICBvcDsKCXZoZF9mbGFnX3QgICAgICAgICAgICAgICAgZmxhZ3M7Cgl0ZF9yZXF1ZXN0X3Qg ICAgICAgICAgICAgIHRyZXE7CglzdHJ1Y3QgdGlvY2IgICAgICAgICAgICAgIHRpb2NiOwoJc3Ry dWN0IHZoZF9zdGF0ZSAgICAgICAgICpzdGF0ZTsKCXN0cnVjdCB2aGRfcmVxdWVzdCAgICAgICAq bmV4dDsKCXN0cnVjdCB2aGRfdHJhbnNhY3Rpb24gICAqdHg7Cn07CgpzdHJ1Y3QgdmhkX2JhdF9z dGF0ZSB7Cgl2aGRfYmF0X3QgICAgICAgICAgICAgICAgIGJhdDsKCXZoZF9iYXRtYXBfdCAgICAg ICAgICAgICAgYmF0bWFwOwoJdmhkX2ZsYWdfdCAgICAgICAgICAgICAgICBzdGF0dXM7Cgl1aW50 MzJfdCAgICAgICAgICAgICAgICAgIHBid19ibGs7ICAgICAvKiBibGsgbnVtIG9mIHBlbmRpbmcg d3JpdGUgKi8KCXVpbnQ2NF90ICAgICAgICAgICAgICAgICAgcGJ3X29mZnNldDsgIC8qIGZpbGUg b2Zmc2V0IG9mIHNhbWUgKi8KCXN0cnVjdCB2aGRfcmVxdWVzdCAgICAgICAgcmVxOyAgICAgICAg IC8qIGZvciB3cml0aW5nIGJhdCB0YWJsZSAqLwoJc3RydWN0IHZoZF9yZXF1ZXN0ICAgICAgICB6 ZXJvX3JlcTsgICAgLyogZm9yIGluaXRpYWxpemluZyBiaXRtYXBzICovCgljaGFyICAgICAgICAg ICAgICAgICAgICAgKmJhdF9idWY7Cn07CgpzdHJ1Y3QgdmhkX2JpdG1hcCB7Cgl1aW50MzJfdCAg ICAgICAgICAgICAgICAgIGJsazsKCXVpbnQ2NF90ICAgICAgICAgICAgICAgICAgc2Vxbm87ICAg ICAgIC8qIGxydSBzZXF1ZW5jZSBudW1iZXIgKi8KCXZoZF9mbGFnX3QgICAgICAgICAgICAgICAg c3RhdHVzOwoKCWNoYXIgICAgICAgICAgICAgICAgICAgICAqbWFwOyAgICAgICAgIC8qIG1hcCBz aG91bGQgb25seSBiZSBtb2RpZmllZAoJCQkJCSAgICAgICAgKiBpbiBmaW5pc2hfYml0bWFwX3dy aXRlICovCgljaGFyICAgICAgICAgICAgICAgICAgICAgKnNoYWRvdzsgICAgICAvKiBpbi1tZW1v cnkgYml0bWFwIGNoYW5nZXMgYXJlIAoJCQkJCSAgICAgICAgKiBtYWRlIHRvIHNoYWRvdyBhbmQg Y29waWVkIHRvCgkJCQkJICAgICAgICAqIG1hcCBvbmx5IGFmdGVyIGhhdmluZyBiZWVuCgkJCQkJ ICAgICAgICAqIGZsdXNoZWQgdG8gZGlzayAqLwoJc3RydWN0IHZoZF90cmFuc2FjdGlvbiAgICB0 eDsgICAgICAgICAgLyogdHJhbnNhY3Rpb24gZGF0YSBzdHJ1Y3R1cmUKCQkJCQkJKiBlbmNhcHN1 bGF0aW5nIGRhdGEsIGJpdG1hcCwgCgkJCQkJCSogYW5kIGJhdCB3cml0ZXMgKi8KCXN0cnVjdCB2 aGRfcmVxX2xpc3QgICAgICAgcXVldWU7ICAgICAgIC8qIGRhdGEgd3JpdGVzIHdhaXRpbmcgZm9y IG5leHQKCQkJCQkJKiB0cmFuc2FjdGlvbiAqLwoJc3RydWN0IHZoZF9yZXFfbGlzdCAgICAgICB3 YWl0aW5nOyAgICAgLyogcGVuZGluZyByZXF1ZXN0cyB0aGF0IGNhbm5vdAoJCQkJCSAgICAgICAg KiBiZSBzZXJ2aWNlZCB1bnRpbCB0aGlzIGJpdG1hcAoJCQkJCSAgICAgICAgKiBpcyByZWFkIGZy b20gZGlzayAqLwoJc3RydWN0IHZoZF9yZXF1ZXN0ICAgICAgICByZXE7Cn07CgpzdHJ1Y3Qgdmhk X3N0YXRlIHsKCXZoZF9mbGFnX3QgICAgICAgICAgICAgICAgZmxhZ3M7CgogICAgICAgIC8qIFZI RCBzdHVmZiAqLwoJdmhkX2NvbnRleHRfdCAgICAgICAgICAgICB2aGQ7Cgl1aW50MzJfdCAgICAg ICAgICAgICAgICAgIHNwcDsgICAgICAgICAvKiBzZWN0b3JzIHBlciBwYWdlICovCgl1aW50MzJf dCAgICAgICAgICAgICAgICAgIHNwYjsgICAgICAgICAvKiBzZWN0b3JzIHBlciBibG9jayAqLwoJ dWludDY0X3QgICAgICAgICAgICAgICAgICBmaXJzdF9kYjsgICAgLyogcG9pbnRlciB0byBkYXRh YmxvY2sgMCAqLwoKCS8qKgoJICogUG9pbnRlciB0byB0aGUgbmV4dCAodW5hbGxvY2F0ZWQpIGRh dGFibG9jay4gSWYgZ3JlYXRlciB0aGFuIFVJTlRfTUFYLAoJICogdGhlcmUgYXJlIG5vIG1vcmUg YmxvY2tzIGF2YWlsYWJsZS4KCSAqLwoJdWludDY0X3QgICAgICAgICAgICAgICAgICBuZXh0X2Ri OwoKCXN0cnVjdCB2aGRfYmF0X3N0YXRlICAgICAgYmF0OwoKCXVpbnQ2NF90ICAgICAgICAgICAg ICAgICAgYm1fbHJ1OyAgICAgIC8qIGxydSBzZXF1ZW5jZSBudW1iZXIgKi8KCXVpbnQzMl90ICAg ICAgICAgICAgICAgICAgYm1fc2VjczsgICAgIC8qIHNpemUgb2YgYml0bWFwLCBpbiBzZWN0b3Jz ICovCglzdHJ1Y3QgdmhkX2JpdG1hcCAgICAgICAgKmJpdG1hcFtWSERfQ0FDSEVfU0laRV07CgoJ aW50ICAgICAgICAgICAgICAgICAgICAgICBibV9mcmVlX2NvdW50OwoJc3RydWN0IHZoZF9iaXRt YXAgICAgICAgICpiaXRtYXBfZnJlZVtWSERfQ0FDSEVfU0laRV07CglzdHJ1Y3QgdmhkX2JpdG1h cCAgICAgICAgIGJpdG1hcF9saXN0W1ZIRF9DQUNIRV9TSVpFXTsKCglpbnQgICAgICAgICAgICAg ICAgICAgICAgIHZyZXFfZnJlZV9jb3VudDsKCXN0cnVjdCB2aGRfcmVxdWVzdCAgICAgICAqdnJl cV9mcmVlW1ZIRF9SRVFTX0RBVEFdOwoJc3RydWN0IHZoZF9yZXF1ZXN0ICAgICAgICB2cmVxX2xp c3RbVkhEX1JFUVNfREFUQV07CgoJLyogZm9yIHJlZHVuZGFudCBiaXRtYXAgd3JpdGVzICovCglp bnQgICAgICAgICAgICAgICAgICAgICAgIHBhZGJtX3NpemU7CgljaGFyICAgICAgICAgICAgICAg ICAgICAgKnBhZGJtX2J1ZjsKCWxvbmcgaW50ICAgICAgICAgICAgICAgICAgZGVidWdfc2tpcHBl ZF9yZWR1bmRhbnRfd3JpdGVzOwoJbG9uZyBpbnQgICAgICAgICAgICAgICAgICBkZWJ1Z19kb25l X3JlZHVuZGFudF93cml0ZXM7CgoJdGRfZHJpdmVyX3QgICAgICAgICAgICAgICpkcml2ZXI7CgoJ dWludDY0X3QgICAgICAgICAgICAgICAgICBxdWV1ZWQ7Cgl1aW50NjRfdCAgICAgICAgICAgICAg ICAgIGNvbXBsZXRlZDsKCXVpbnQ2NF90ICAgICAgICAgICAgICAgICAgcmV0dXJuZWQ7Cgl1aW50 NjRfdCAgICAgICAgICAgICAgICAgIHJlYWRzOwoJdWludDY0X3QgICAgICAgICAgICAgICAgICBy ZWFkX3NpemU7Cgl1aW50NjRfdCAgICAgICAgICAgICAgICAgIHdyaXRlczsKCXVpbnQ2NF90ICAg ICAgICAgICAgICAgICAgd3JpdGVfc2l6ZTsKfTsKCiNkZWZpbmUgdGVzdF92aGRfZmxhZyh3b3Jk LCBmbGFnKSAgKCh3b3JkKSAmIChmbGFnKSkKI2RlZmluZSBzZXRfdmhkX2ZsYWcod29yZCwgZmxh ZykgICAoKHdvcmQpIHw9IChmbGFnKSkKI2RlZmluZSBjbGVhcl92aGRfZmxhZyh3b3JkLCBmbGFn KSAoKHdvcmQpICY9IH4oZmxhZykpCgojZGVmaW5lIGJhdF9lbnRyeShzLCBibGspICAgICAgICAg ICgocyktPmJhdC5iYXQuYmF0WyhibGspXSkKCnN0YXRpYyB2b2lkIHZoZF9jb21wbGV0ZSh2b2lk ICosIHN0cnVjdCB0aW9jYiAqLCBpbnQpOwpzdGF0aWMgdm9pZCBmaW5pc2hfZGF0YV90cmFuc2Fj dGlvbihzdHJ1Y3QgdmhkX3N0YXRlICosIHN0cnVjdCB2aGRfYml0bWFwICopOwoKc3RhdGljIHN0 cnVjdCB2aGRfc3RhdGUgICpfdmhkX21hc3RlcjsKc3RhdGljIHVuc2lnbmVkIGxvbmcgICAgICBf dmhkX3pzaXplOwpzdGF0aWMgY2hhciAgICAgICAgICAgICAgKl92aGRfemVyb3MgPSBOVUxMOwpp bnQgICAgICAgICAgICAgICAgICAgICAgIF9kZXZfemVybyA9IC0xOwoKc3RhdGljIGludAp2aGRf aW5pdGlhbGl6ZShzdHJ1Y3QgdmhkX3N0YXRlICpzKQp7CglpbnQgZXJyOwoKCWlmIChfdmhkX3pl cm9zKQoJCXJldHVybiAwOwoKCV92aGRfenNpemUgPSAyICogZ2V0cGFnZXNpemUoKTsKCWlmICh0 ZXN0X3ZoZF9mbGFnKHMtPmZsYWdzLCBWSERfRkxBR19PUEVOX1BSRUFMTE9DQVRFKSkKCQlfdmhk X3pzaXplICs9IFZIRF9CTE9DS19TSVpFOwoKCV9kZXZfemVybyA9IG9wZW4oIi9kZXYvemVybyIs IE9fUkRPTkxZKTsKCWlmICh1bmxpa2VseShfZGV2X3plcm8gPT0gLTEpKSB7CgkJZXJyID0gZXJy bm87CgkJRVBSSU5URigiZmFpbGVkIHRvIG9wZW4gL2Rldi96ZXJvOiAlc1xuIiwgc3RyZXJyb3Io ZXJyKSk7CgkJcmV0dXJuIC1lcnI7Cgl9CgoJX3ZoZF96ZXJvcyA9IG1tYXAoTlVMTCwgX3ZoZF96 c2l6ZSwgUFJPVF9SRUFELAoJCQkgIE1BUF9TSEFSRUQsIF9kZXZfemVybywgMCk7CglpZiAoX3Zo ZF96ZXJvcyA9PSBNQVBfRkFJTEVEKSB7CgkJaW50IF9lcnI7CgkJZXJyID0gZXJybm87CgkJRVBS SU5URigidmhkX2luaXRpYWxpemUgZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJyKSk7CgkJX3Zo ZF96ZXJvcyA9IE5VTEw7CgkJX3ZoZF96c2l6ZSA9IDA7CgkJX2VyciA9IGNsb3NlKF9kZXZfemVy byk7CgkJaWYgKHVubGlrZWx5KF9lcnIgPT0gLTEpKQoJCQlFUFJJTlRGKCJmYWlsZWQgdG8gY2xv c2UgL2Rldi96ZXJvOiAlcyAoZXJyb3IgaWdub3JlZClcbiIsCgkJCQkJc3RyZXJyb3IoZXJybm8p KTsKCQllbHNlCgkJCV9kZXZfemVybyA9IC0xOwoKCQlyZXR1cm4gLWVycjsKCX0KCglfdmhkX21h c3RlciA9IHM7CglyZXR1cm4gMDsKfQoKc3RhdGljIHZvaWQKdmhkX2ZyZWUoc3RydWN0IHZoZF9z dGF0ZSAqcykKewoJaWYgKF92aGRfbWFzdGVyICE9IHMgfHwgIV92aGRfemVyb3MpCgkJcmV0dXJu OwoKCWZyZWUocy0+cGFkYm1fYnVmKTsKCW11bm1hcChfdmhkX3plcm9zLCBfdmhkX3pzaXplKTsK CV92aGRfenNpemUgID0gMDsKCV92aGRfemVyb3MgID0gTlVMTDsKCV92aGRfbWFzdGVyID0gTlVM TDsKCWlmIChfZGV2X3plcm8gIT0gLTEpIHsKCQlpbnQgX2VyciA9IGNsb3NlKF9kZXZfemVybyk7 CgkJaWYgKHVubGlrZWx5KF9lcnIgPT0gLTEpKQoJCQlFUFJJTlRGKCJmYWlsZWQgdG8gY2xvc2Ug L2Rldi96ZXJvOiAlcyAoZXJyb3IgaWdub3JlZClcbiIsCgkJCQkJc3RyZXJyb3IoZXJybm8pKTsK CQllbHNlCgkJCV9kZXZfemVybyA9IC0xOwoJfQp9CgpzdGF0aWMgY2hhciAqCl9nZXRfdmhkX3pl cm9zKGNvbnN0IGNoYXIgKmZ1bmMsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKewoJaWYgKCFfdmhkX3pl cm9zIHx8IF92aGRfenNpemUgPCBzaXplKSB7CgkJRVBSSU5URigiaW52YWxpZCB6ZXJvIHJlcXVl c3QgZnJvbSAlczogJWx1LCAlbHUsICVwXG4iLAoJCQlmdW5jLCBzaXplLCBfdmhkX3pzaXplLCBf dmhkX3plcm9zKTsKCQlBU1NFUlQoMCk7Cgl9CgoJcmV0dXJuIF92aGRfemVyb3M7Cn0KCiNkZWZp bmUgdmhkX3plcm9zKHNpemUpCV9nZXRfdmhkX3plcm9zKF9fZnVuY19fLCBzaXplKQoKc3RhdGlj IGlubGluZSB2b2lkCnNldF9iYXRtYXAoc3RydWN0IHZoZF9zdGF0ZSAqcywgdWludDMyX3QgYmxr KQp7CglpZiAocy0+YmF0LmJhdG1hcC5tYXApIHsKCQl2aGRfYmF0bWFwX3NldCgmcy0+dmhkLCAm cy0+YmF0LmJhdG1hcCwgYmxrKTsKCQlEQkcoVExPR19EQkcsICJibG9jayAweCV4IGNvbXBsZXRl bHkgZnVsbFxuIiwgYmxrKTsKCX0KfQoKc3RhdGljIGlubGluZSBpbnQKdGVzdF9iYXRtYXAoc3Ry dWN0IHZoZF9zdGF0ZSAqcywgdWludDMyX3QgYmxrKQp7CglpZiAoIXMtPmJhdC5iYXRtYXAubWFw KQoJCXJldHVybiAwOwoJcmV0dXJuIHZoZF9iYXRtYXBfdGVzdCgmcy0+dmhkLCAmcy0+YmF0LmJh dG1hcCwgYmxrKTsKfQoKc3RhdGljIGludAp2aGRfa2lsbF9mb290ZXIoc3RydWN0IHZoZF9zdGF0 ZSAqcykKewoJaW50IGVycjsKCW9mZjY0X3QgZW5kOwoJdm9pZCAqemVyb3M7CgoJaWYgKHMtPnZo ZC5mb290ZXIudHlwZSA9PSBIRF9UWVBFX0ZJWEVEKQoJCXJldHVybiAwOwoKCWVyciA9IHBvc2l4 X21lbWFsaWduKCZ6ZXJvcywgNTEyLCA1MTIpOwoJaWYgKGVycikKCQlyZXR1cm4gLWVycjsKCgll cnIgPSAxOwoJbWVtc2V0KHplcm9zLCAweGM3YzdjN2M3LCA1MTIpOwoKCWlmICgoZW5kID0gbHNl ZWs2NChzLT52aGQuZmQsIDAsIFNFRUtfRU5EKSkgPT0gLTEpCgkJZ290byBmYWlsOwoKCWlmIChs c2VlazY0KHMtPnZoZC5mZCwgKGVuZCAtIDUxMiksIFNFRUtfU0VUKSA9PSAtMSkKCQlnb3RvIGZh aWw7CgoJaWYgKHdyaXRlKHMtPnZoZC5mZCwgemVyb3MsIDUxMikgIT0gNTEyKQoJCWdvdG8gZmFp bDsKCgllcnIgPSAwOwoKIGZhaWw6CglmcmVlKHplcm9zKTsKCWlmIChlcnIpCgkJcmV0dXJuIChl cnJubyA/IC1lcnJubyA6IC1FSU8pOwoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50CmZp bmRfbmV4dF9mcmVlX2Jsb2NrKHN0cnVjdCB2aGRfc3RhdGUgKnMpCnsKCWludCBlcnI7CglvZmY2 NF90IGVvbTsKCXVpbnQzMl90IGksIGVudHJ5OwoKCWVyciA9IHZoZF9lbmRfb2ZfaGVhZGVycygm cy0+dmhkLCAmZW9tKTsKCWlmIChlcnIpCgkJcmV0dXJuIGVycjsKCglzLT5uZXh0X2RiID0gc2Vj c19yb3VuZF91cChlb20pOwoJcy0+Zmlyc3RfZGIgPSBzLT5uZXh0X2RiOwoJaWYgKChzLT5maXJz dF9kYiArIHMtPmJtX3NlY3MpICUgcy0+c3BwKQoJCXMtPmZpcnN0X2RiICs9IChzLT5zcHAgLSAo KHMtPmZpcnN0X2RiICsgcy0+Ym1fc2VjcykgJSBzLT5zcHApKTsKCglmb3IgKGkgPSAwOyBpIDwg cy0+YmF0LmJhdC5lbnRyaWVzOyBpKyspIHsKCQllbnRyeSA9IGJhdF9lbnRyeShzLCBpKTsKCQlp ZiAoZW50cnkgIT0gRERfQkxLX1VOVVNFRCAmJiBlbnRyeSA+PSBzLT5uZXh0X2RiKQoJCQlzLT5u ZXh0X2RiID0gKHVpbnQ2NF90KWVudHJ5ICsgKHVpbnQ2NF90KXMtPnNwYgoJCQkJKyAodWludDY0 X3Qpcy0+Ym1fc2VjczsKCQkJaWYgKHMtPm5leHRfZGIgPiBVSU5UX01BWCkKCQkJCWJyZWFrOwoJ fQoKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9pZAp2aGRfZnJlZV9iYXQoc3RydWN0IHZoZF9zdGF0 ZSAqcykKewoJZnJlZShzLT5iYXQuYmF0LmJhdCk7CglmcmVlKHMtPmJhdC5iYXRtYXAubWFwKTsK CWZyZWUocy0+YmF0LmJhdF9idWYpOwoJbWVtc2V0KCZzLT5iYXQsIDAsIHNpemVvZihzdHJ1Y3Qg dmhkX2JhdCkpOwp9CgpzdGF0aWMgaW50CnZoZF9pbml0aWFsaXplX2JhdChzdHJ1Y3QgdmhkX3N0 YXRlICpzKQp7CglpbnQgZXJyLCBiYXRtYXBfcmVxdWlyZWQsIGk7Cgl2b2lkICpidWY7CgoJbWVt c2V0KCZzLT5iYXQsIDAsIHNpemVvZihzdHJ1Y3QgdmhkX2JhdCkpOwoKCWVyciA9IHZoZF9yZWFk X2JhdCgmcy0+dmhkLCAmcy0+YmF0LmJhdCk7CglpZiAoZXJyKSB7CgkJRVBSSU5URigiJXM6IHJl YWRpbmcgYmF0OiAlZFxuIiwgcy0+dmhkLmZpbGUsIGVycik7CgkJcmV0dXJuIGVycjsKCX0KCgli YXRtYXBfcmVxdWlyZWQgPSAxOwoJaWYgKHRlc3RfdmhkX2ZsYWcocy0+ZmxhZ3MsIFZIRF9GTEFH X09QRU5fUkRPTkxZKSkgewoJCWJhdG1hcF9yZXF1aXJlZCA9IDA7Cgl9IGVsc2UgewoJCWVyciA9 IGZpbmRfbmV4dF9mcmVlX2Jsb2NrKHMpOwoJCWlmIChlcnIpCgkJCWdvdG8gZmFpbDsKCX0KCglp ZiAodmhkX2hhc19iYXRtYXAoJnMtPnZoZCkpIHsKCQlmb3IgKGkgPSAwOyBpIDwgVkhEX0JBVE1B UF9NQVhfUkVUUklFUzsgaSsrKSB7CgkJCWVyciA9IHZoZF9yZWFkX2JhdG1hcCgmcy0+dmhkLCAm cy0+YmF0LmJhdG1hcCk7CgkJCWlmIChlcnIpIHsKCQkJCUVQUklOVEYoIiVzOiByZWFkaW5nIGJh dG1hcDogJWRcbiIsCgkJCQkJCXMtPnZoZC5maWxlLCBlcnIpOwoJCQkJaWYgKGJhdG1hcF9yZXF1 aXJlZCkKCQkJCQlnb3RvIGZhaWw7CgkJCX0gZWxzZSB7CgkJCQlicmVhazsKCQkJfQoJCX0KCQlp ZiAoZXJyKQoJCQlFUFJJTlRGKCIlczogaWdub3Jpbmcgbm9uLWNyaXRpY2FsIGJhdG1hcCBlcnJv clxuIiwKCQkJCQlzLT52aGQuZmlsZSk7Cgl9CgoJZXJyID0gcG9zaXhfbWVtYWxpZ24oJmJ1Ziwg VkhEX1NFQ1RPUl9TSVpFLCBWSERfU0VDVE9SX1NJWkUpOwoJaWYgKGVycikKCQlnb3RvIGZhaWw7 CgoJcy0+YmF0LmJhdF9idWYgPSBidWY7CgoJcmV0dXJuIDA7CgpmYWlsOgoJdmhkX2ZyZWVfYmF0 KHMpOwoJcmV0dXJuIGVycjsKfQoKc3RhdGljIHZvaWQKdmhkX2ZyZWVfYml0bWFwX2NhY2hlKHN0 cnVjdCB2aGRfc3RhdGUgKnMpCnsKCWludCBpOwoJc3RydWN0IHZoZF9iaXRtYXAgKmJtOwoKCWZv ciAoaSA9IDA7IGkgPCBWSERfQ0FDSEVfU0laRTsgaSsrKSB7CgkJYm0gPSBzLT5iaXRtYXBfbGlz dCArIGk7CgkJZnJlZShibS0+bWFwKTsKCQlmcmVlKGJtLT5zaGFkb3cpOwoJCXMtPmJpdG1hcF9m cmVlW2ldID0gTlVMTDsKCX0KCgltZW1zZXQocy0+Yml0bWFwX2xpc3QsIDAsIHNpemVvZihzdHJ1 Y3QgdmhkX2JpdG1hcCkgKiBWSERfQ0FDSEVfU0laRSk7Cn0KCnN0YXRpYyBpbnQKdmhkX2luaXRp YWxpemVfYml0bWFwX2NhY2hlKHN0cnVjdCB2aGRfc3RhdGUgKnMpCnsKCWludCBpLCBlcnIsIG1h cF9zaXplOwoJc3RydWN0IHZoZF9iaXRtYXAgKmJtOwoJdm9pZCAqbWFwLCAqc2hhZG93OwoKCW1l bXNldChzLT5iaXRtYXBfbGlzdCwgMCwgc2l6ZW9mKHN0cnVjdCB2aGRfYml0bWFwKSAqIFZIRF9D QUNIRV9TSVpFKTsKCglzLT5ibV9scnUgICAgICAgID0gMDsKCW1hcF9zaXplICAgICAgICAgPSB2 aGRfc2VjdG9yc190b19ieXRlcyhzLT5ibV9zZWNzKTsKCXMtPmJtX2ZyZWVfY291bnQgPSBWSERf Q0FDSEVfU0laRTsKCglmb3IgKGkgPSAwOyBpIDwgVkhEX0NBQ0hFX1NJWkU7IGkrKykgewoJCWJt ID0gcy0+Yml0bWFwX2xpc3QgKyBpOwoKCQllcnIgPSBwb3NpeF9tZW1hbGlnbigmbWFwLCA1MTIs IG1hcF9zaXplKTsKCQlpZiAoZXJyKQoJCQlnb3RvIGZhaWw7CgoJCWJtLT5tYXAgPSBtYXA7CgoJ CWVyciA9IHBvc2l4X21lbWFsaWduKCZzaGFkb3csIDUxMiwgbWFwX3NpemUpOwoJCWlmIChlcnIp CgkJCWdvdG8gZmFpbDsKCgkJYm0tPnNoYWRvdyA9IHNoYWRvdzsKCgkJbWVtc2V0KGJtLT5tYXAs IDAsIG1hcF9zaXplKTsKCQltZW1zZXQoYm0tPnNoYWRvdywgMCwgbWFwX3NpemUpOwoJCXMtPmJp dG1hcF9mcmVlW2ldID0gYm07Cgl9CgoJcmV0dXJuIDA7CgpmYWlsOgoJdmhkX2ZyZWVfYml0bWFw X2NhY2hlKHMpOwoJcmV0dXJuIGVycjsKfQoKc3RhdGljIGludAp2aGRfaW5pdGlhbGl6ZV9keW5h bWljX2Rpc2soc3RydWN0IHZoZF9zdGF0ZSAqcykKewoJdWludDMyX3QgYm1fc2l6ZTsKCXZvaWQg KmJ1ZjsKCWludCBlcnI7CgoJZXJyID0gdmhkX2dldF9oZWFkZXIoJnMtPnZoZCk7CglpZiAoZXJy KSB7CgkJaWYgKCF0ZXN0X3ZoZF9mbGFnKHMtPmZsYWdzLCBWSERfRkxBR19PUEVOX1FVSUVUKSkK CQkJRVBSSU5URigiRXJyb3IgcmVhZGluZyBWSEQgREQgaGVhZGVyLlxuIik7CgkJcmV0dXJuIGVy cjsKCX0KCglpZiAocy0+dmhkLmhlYWRlci5oZHJfdmVyICE9IDB4MDAwMTAwMDApIHsKCQlFUFJJ TlRGKCJ1bnN1cHBvcnRlZCBoZWFkZXIgdmVyc2lvbiEgKDB4JXgpXG4iLAoJCQlzLT52aGQuaGVh ZGVyLmhkcl92ZXIpOwoJCXJldHVybiAtRUlOVkFMOwoJfQoKCXMtPnNwcCAgICAgPSBnZXRwYWdl c2l6ZSgpID4+IFZIRF9TRUNUT1JfU0hJRlQ7CglzLT5zcGIgICAgID0gcy0+dmhkLmhlYWRlci5i bG9ja19zaXplID4+IFZIRF9TRUNUT1JfU0hJRlQ7CglzLT5ibV9zZWNzID0gc2Vjc19yb3VuZF91 cF9ub196ZXJvKHMtPnNwYiA+PiAzKTsKCglzLT5wYWRibV9zaXplID0gKHMtPmJtX3NlY3MgLyBn ZXRwYWdlc2l6ZSgpKSAqIGdldHBhZ2VzaXplKCk7CglpZiAocy0+Ym1fc2VjcyAlIGdldHBhZ2Vz aXplKCkpCgkJcy0+cGFkYm1fc2l6ZSArPSBnZXRwYWdlc2l6ZSgpOwoKCWVyciA9IHBvc2l4X21l bWFsaWduKCZidWYsIDUxMiwgcy0+cGFkYm1fc2l6ZSk7CglpZiAoZXJyKQoJCXJldHVybiAtZXJy OwoKCXMtPnBhZGJtX2J1ZiA9IGJ1ZjsKCWJtX3NpemUgPSBzLT5ibV9zZWNzIDw8IFZIRF9TRUNU T1JfU0hJRlQ7CgltZW1zZXQocy0+cGFkYm1fYnVmLCAwLCBzLT5wYWRibV9zaXplIC0gYm1fc2l6 ZSk7CgltZW1zZXQocy0+cGFkYm1fYnVmICsgKHMtPnBhZGJtX3NpemUgLSBibV9zaXplKSwgfjAs IGJtX3NpemUpOwoJcy0+ZGVidWdfc2tpcHBlZF9yZWR1bmRhbnRfd3JpdGVzID0gMDsKCXMtPmRl YnVnX2RvbmVfcmVkdW5kYW50X3dyaXRlcyA9IDA7CgoJaWYgKHRlc3RfdmhkX2ZsYWcocy0+Zmxh Z3MsIFZIRF9GTEFHX09QRU5fTk9fQ0FDSEUpKQoJCXJldHVybiAwOwoKCWVyciA9IHZoZF9pbml0 aWFsaXplX2JhdChzKTsKCWlmIChlcnIpCgkJcmV0dXJuIGVycjsKCgllcnIgPSB2aGRfaW5pdGlh bGl6ZV9iaXRtYXBfY2FjaGUocyk7CglpZiAoZXJyKSB7CgkJdmhkX2ZyZWVfYmF0KHMpOwoJCXJl dHVybiBlcnI7Cgl9CgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQKdmhkX2NoZWNrX3ZlcnNpb24o c3RydWN0IHZoZF9zdGF0ZSAqcykKewoJaWYgKHN0cm5jbXAocy0+dmhkLmZvb3Rlci5jcnRyX2Fw cCwgInRhcCIsIDMpKQoJCXJldHVybiAwOwoKCWlmIChzLT52aGQuZm9vdGVyLmNydHJfdmVyID4g VkhEX0NVUlJFTlRfVkVSU0lPTikgewoJCWlmICghdGVzdF92aGRfZmxhZyhzLT5mbGFncywgVkhE X0ZMQUdfT1BFTl9RVUlFVCkpCgkJCUVQUklOVEYoIldBUk5JTkc6ICVzIHZoZCBjcmVhdG9yIHZl cnNpb24gMHglMDh4LCAiCgkJCQkiYnV0IG9ubHkgdmVyc2lvbnMgdXAgdG8gMHglMDh4IGFyZSAi CgkJCQkic3VwcG9ydGVkIGZvciBJT1xuIiwgcy0+dmhkLmZpbGUsCgkJCQlzLT52aGQuZm9vdGVy LmNydHJfdmVyLCBWSERfQ1VSUkVOVF9WRVJTSU9OKTsKCgkJcmV0dXJuIC1FSU5WQUw7Cgl9CgoJ cmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lkCnZoZF9sb2dfb3BlbihzdHJ1Y3QgdmhkX3N0YXRlICpz KQp7CgljaGFyIGJ1Zls1XTsKCXVpbnQzMl90IGksIGFsbG9jYXRlZCwgZnVsbDsKCglpZiAodGVz dF92aGRfZmxhZyhzLT5mbGFncywgVkhEX0ZMQUdfT1BFTl9RVUlFVCkpCgkJcmV0dXJuOwoKCXNu cHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcyIsIHMtPnZoZC5mb290ZXIuY3J0cl9hcHApOwoJ aWYgKCF2aGRfdHlwZV9keW5hbWljKCZzLT52aGQpKSB7CgkJRFBSSU5URigiJXMgdmVyc2lvbjog JXMgMHglMDh4XG4iLAoJCQlzLT52aGQuZmlsZSwgYnVmLCBzLT52aGQuZm9vdGVyLmNydHJfdmVy KTsKCQlyZXR1cm47Cgl9CgoJYWxsb2NhdGVkID0gMDsKCWZ1bGwgICAgICA9IDA7CgoJZm9yIChp ID0gMDsgaSA8IHMtPmJhdC5iYXQuZW50cmllczsgaSsrKSB7CgkJaWYgKGJhdF9lbnRyeShzLCBp KSAhPSBERF9CTEtfVU5VU0VEKQoJCQlhbGxvY2F0ZWQrKzsKCQlpZiAodGVzdF9iYXRtYXAocywg aSkpCgkJCWZ1bGwrKzsKCX0KCglEUFJJTlRGKCIlcyB2ZXJzaW9uOiAlcyAweCUwOHgsIGI6ICV1 LCBhOiAldSwgZjogJXUsIG46ICUiUFJJdTY0IlxuIiwKCQlzLT52aGQuZmlsZSwgYnVmLCBzLT52 aGQuZm9vdGVyLmNydHJfdmVyLCBzLT5iYXQuYmF0LmVudHJpZXMsCgkJYWxsb2NhdGVkLCBmdWxs LCBzLT5uZXh0X2RiKTsKfQoKc3RhdGljIGludApfX3ZoZF9vcGVuKHRkX2RyaXZlcl90ICpkcml2 ZXIsIGNvbnN0IGNoYXIgKm5hbWUsIHZoZF9mbGFnX3QgZmxhZ3MpCnsKICAgICAgICBpbnQgaSwg b19mbGFncywgZXJyOwoJc3RydWN0IHZoZF9zdGF0ZSAqczsKCiAgICAgICAgREJHKFRMT0dfSU5G TywgInZoZF9vcGVuOiAlc1xuIiwgbmFtZSk7CglpZiAodGVzdF92aGRfZmxhZyhmbGFncywgVkhE X0ZMQUdfT1BFTl9TVFJJQ1QpKQoJCWxpYnZoZF9zZXRfbG9nX2xldmVsKDEpOwoKCXMgPSAoc3Ry dWN0IHZoZF9zdGF0ZSAqKWRyaXZlci0+ZGF0YTsKCW1lbXNldChzLCAwLCBzaXplb2Yoc3RydWN0 IHZoZF9zdGF0ZSkpOwoKCXMtPmZsYWdzICA9IGZsYWdzOwoJcy0+ZHJpdmVyID0gZHJpdmVyOwoK CWVyciA9IHZoZF9pbml0aWFsaXplKHMpOwoJaWYgKGVycikKCQlyZXR1cm4gZXJyOwoKCW9fZmxh Z3MgPSAoKHRlc3RfdmhkX2ZsYWcoZmxhZ3MsIFZIRF9GTEFHX09QRU5fUkRPTkxZKSkgPyAKCQkg ICBWSERfT1BFTl9SRE9OTFkgOiBWSERfT1BFTl9SRFdSKTsKCWlmICgodGVzdF92aGRfZmxhZyhm bGFncywgVkhEX0ZMQUdfT1BFTl9SRE9OTFkpIHx8CiAgICAgICAgICAgICAgICB0ZXN0X3ZoZF9m bGFnKGZsYWdzLCBWSERfRkxBR19PUEVOX0xPQ0FMX0NBQ0hFKSkgJiYKCSAgICB0ZXN0X3ZoZF9m bGFnKGZsYWdzLCBWSERfRkxBR19PUEVOX05PX09fRElSRUNUKSkKCQlzZXRfdmhkX2ZsYWcob19m bGFncywgVkhEX09QRU5fQ0FDSEVEKTsKCglpZiAodGVzdF92aGRfZmxhZyhmbGFncywgVkhEX0ZM QUdfT1BFTl9TVFJJQ1QpKQoJCXNldF92aGRfZmxhZyhvX2ZsYWdzLCBWSERfT1BFTl9TVFJJQ1Qp OwoKCWVyciA9IHZoZF9vcGVuKCZzLT52aGQsIG5hbWUsIG9fZmxhZ3MpOwoJaWYgKGVycikgewoJ CWxpYnZoZF9zZXRfbG9nX2xldmVsKDEpOwoJCWVyciA9IHZoZF9vcGVuKCZzLT52aGQsIG5hbWUs IG9fZmxhZ3MpOwoJCWlmIChlcnIpIHsKCQkJRVBSSU5URigiVW5hYmxlIHRvIG9wZW4gWyVzXSAo JWQpIVxuIiwgbmFtZSwgZXJyKTsKCQkJcmV0dXJuIGVycjsKCQl9Cgl9CgoJZXJyID0gdmhkX2No ZWNrX3ZlcnNpb24ocyk7CglpZiAoZXJyKQoJCWdvdG8gZmFpbDsKCglzLT5zcGIgPSBzLT5zcHAg PSAxOwoKCWlmICh2aGRfdHlwZV9keW5hbWljKCZzLT52aGQpKSB7CgkJZXJyID0gdmhkX2luaXRp YWxpemVfZHluYW1pY19kaXNrKHMpOwoJCWlmIChlcnIpCgkJCWdvdG8gZmFpbDsKCX0KCgl2aGRf bG9nX29wZW4ocyk7CgoJU1BCID0gcy0+c3BiOwoKCXMtPnZyZXFfZnJlZV9jb3VudCA9IFZIRF9S RVFTX0RBVEE7Cglmb3IgKGkgPSAwOyBpIDwgVkhEX1JFUVNfREFUQTsgaSsrKQoJCXMtPnZyZXFf ZnJlZVtpXSA9IHMtPnZyZXFfbGlzdCArIGk7CgoJZHJpdmVyLT5pbmZvLnNpemUgICAgICAgID0g cy0+dmhkLmZvb3Rlci5jdXJyX3NpemUgPj4gVkhEX1NFQ1RPUl9TSElGVDsKCWRyaXZlci0+aW5m by5zZWN0b3Jfc2l6ZSA9IFZIRF9TRUNUT1JfU0laRTsKCWRyaXZlci0+aW5mby5pbmZvICAgICAg ICA9IDA7CgogICAgICAgIERCRyhUTE9HX0lORk8sICJ2aGRfb3BlbjogZG9uZSAoc3o6JSJQUkl1 NjQiLCBzY3Q6JWx1LCBpbmY6JXUpXG4iLAoJICAgIGRyaXZlci0+aW5mby5zaXplLCBkcml2ZXIt PmluZm8uc2VjdG9yX3NpemUsIGRyaXZlci0+aW5mby5pbmZvKTsKCglpZiAodGVzdF92aGRfZmxh ZyhmbGFncywgVkhEX0ZMQUdfT1BFTl9TVFJJQ1QpICYmIAoJICAgICF0ZXN0X3ZoZF9mbGFnKGZs YWdzLCBWSERfRkxBR19PUEVOX1JET05MWSkpIHsKCQllcnIgPSB2aGRfa2lsbF9mb290ZXIocyk7 CgkJaWYgKGVycikgewoJCQlEUFJJTlRGKCJFUlJPUiBraWxsaW5nIGZvb3RlcjogJWRcbiIsIGVy cik7CgkJCWdvdG8gZmFpbDsKCQl9CgkJcy0+d3JpdGVzKys7Cgl9CgogICAgICAgIHJldHVybiAw OwoKIGZhaWw6Cgl2aGRfZnJlZV9iYXQocyk7Cgl2aGRfZnJlZV9iaXRtYXBfY2FjaGUocyk7Cgl2 aGRfY2xvc2UoJnMtPnZoZCk7Cgl2aGRfZnJlZShzKTsKCXJldHVybiBlcnI7Cn0KCnN0YXRpYyBp bnQKX3ZoZF9vcGVuKHRkX2RyaXZlcl90ICpkcml2ZXIsIGNvbnN0IGNoYXIgKm5hbWUsIHRkX2Zs YWdfdCBmbGFncykKewoJdmhkX2ZsYWdfdCB2aGRfZmxhZ3MgPSAwOwoKCWlmIChmbGFncyAmIFRE X09QRU5fUkRPTkxZKQoJCXZoZF9mbGFncyB8PSBWSERfRkxBR19PUEVOX1JET05MWTsKCWlmIChm bGFncyAmIFREX09QRU5fTk9fT19ESVJFQ1QpCgkJdmhkX2ZsYWdzIHw9IFZIRF9GTEFHX09QRU5f Tk9fT19ESVJFQ1Q7CglpZiAoZmxhZ3MgJiBURF9PUEVOX1FVSUVUKQoJCXZoZF9mbGFncyB8PSBW SERfRkxBR19PUEVOX1FVSUVUOwoJaWYgKGZsYWdzICYgVERfT1BFTl9TVFJJQ1QpCgkJdmhkX2Zs YWdzIHw9IFZIRF9GTEFHX09QRU5fU1RSSUNUOwoJaWYgKGZsYWdzICYgVERfT1BFTl9RVUVSWSkK CQl2aGRfZmxhZ3MgfD0gKFZIRF9GTEFHX09QRU5fUVVFUlkgIHwKCQkJICAgICAgVkhEX0ZMQUdf T1BFTl9RVUlFVCAgfAoJCQkgICAgICBWSERfRkxBR19PUEVOX1JET05MWSB8CgkJCSAgICAgIFZI RF9GTEFHX09QRU5fTk9fQ0FDSEUpOwogICAgaWYgKGZsYWdzICYgVERfT1BFTl9MT0NBTF9DQUNI RSkKICAgICAgICB2aGRfZmxhZ3MgfD0gVkhEX0ZMQUdfT1BFTl9MT0NBTF9DQUNIRTsKCgkvKiBw cmUtYWxsb2NhdGUgZm9yIGFsbCBidXQgTkZTIGFuZCBMVk0gc3RvcmFnZSAqLwoJZHJpdmVyLT5z dG9yYWdlID0gdGFwZGlza19zdG9yYWdlX3R5cGUobmFtZSk7CgoJaWYgKGRyaXZlci0+c3RvcmFn ZSAhPSBUQVBESVNLX1NUT1JBR0VfVFlQRV9ORlMgJiYKCSAgICBkcml2ZXItPnN0b3JhZ2UgIT0g VEFQRElTS19TVE9SQUdFX1RZUEVfTFZNKQoJCXZoZF9mbGFncyB8PSBWSERfRkxBR19PUEVOX1BS RUFMTE9DQVRFOwoKCXJldHVybiBfX3ZoZF9vcGVuKGRyaXZlciwgbmFtZSwgdmhkX2ZsYWdzKTsK fQoKc3RhdGljIHZvaWQKdmhkX2xvZ19jbG9zZShzdHJ1Y3QgdmhkX3N0YXRlICpzKQp7Cgl1aW50 MzJfdCBpLCBhbGxvY2F0ZWQsIGZ1bGw7CgoJaWYgKHRlc3RfdmhkX2ZsYWcocy0+ZmxhZ3MsIFZI RF9GTEFHX09QRU5fUVVJRVQpKQoJCXJldHVybjsKCglhbGxvY2F0ZWQgPSAwOwoJZnVsbCAgICAg ID0gMDsKCglmb3IgKGkgPSAwOyBpIDwgcy0+YmF0LmJhdC5lbnRyaWVzOyBpKyspIHsKCQlpZiAo YmF0X2VudHJ5KHMsIGkpICE9IEREX0JMS19VTlVTRUQpCgkJCWFsbG9jYXRlZCsrOwoJCWlmICh0 ZXN0X2JhdG1hcChzLCBpKSkKCQkJZnVsbCsrOwoJfQoKCURQUklOVEYoIiVzOiBiOiAldSwgYTog JXUsIGY6ICV1LCBuOiAlIlBSSXU2NCJcbiIsCgkJcy0+dmhkLmZpbGUsIHMtPmJhdC5iYXQuZW50 cmllcywgYWxsb2NhdGVkLCBmdWxsLCBzLT5uZXh0X2RiKTsKfQoKc3RhdGljIGludApfdmhkX2Ns b3NlKHRkX2RyaXZlcl90ICpkcml2ZXIpCnsKCWludCBlcnI7CglzdHJ1Y3QgdmhkX3N0YXRlICpz OwoJCglEQkcoVExPR19XQVJOLCAidmhkX2Nsb3NlXG4iKTsKCXMgPSAoc3RydWN0IHZoZF9zdGF0 ZSAqKWRyaXZlci0+ZGF0YTsKCglEUFJJTlRGKCJnYXBzIHdyaXR0ZW4vc2tpcHBlZDogJWxkLyVs ZFxuIiwgCgkJCXMtPmRlYnVnX2RvbmVfcmVkdW5kYW50X3dyaXRlcywKCQkJcy0+ZGVidWdfc2tp cHBlZF9yZWR1bmRhbnRfd3JpdGVzKTsKCgkvKiBkb24ndCB3cml0ZSBmb290ZXIgaWYgdGFwZGlz ayBpcyByZWFkLW9ubHkgKi8KCWlmICh0ZXN0X3ZoZF9mbGFnKHMtPmZsYWdzLCBWSERfRkxBR19P UEVOX1JET05MWSkpCgkJZ290byBmcmVlOwoJCgkvKiAKCSAqIHdyaXRlIGZvb3RlciBpZjoKCSAq ICAgLSB3ZSBraWxsZWQgaXQgb24gb3BlbiAob3BlbmVkIHdpdGggc3RyaWN0KSAKCSAqICAgLSB3 ZSd2ZSB3cml0dGVuIGRhdGEgc2luY2Ugb3BlbmluZwoJICovCglpZiAodGVzdF92aGRfZmxhZyhz LT5mbGFncywgVkhEX0ZMQUdfT1BFTl9TVFJJQ1QpIHx8IHMtPndyaXRlcykgewoJCW1lbWNweSgm cy0+dmhkLmJhdCwgJnMtPmJhdC5iYXQsIHNpemVvZih2aGRfYmF0X3QpKTsKCQllcnIgPSB2aGRf d3JpdGVfZm9vdGVyKCZzLT52aGQsICZzLT52aGQuZm9vdGVyKTsKCQltZW1zZXQoJnMtPnZoZC5i YXQsIDAsIHNpemVvZih2aGRfYmF0X3QpKTsKCgkJaWYgKGVycikKCQkJRVBSSU5URigid3JpdGlu ZyAlcyBmb290ZXI6ICVkXG4iLCBzLT52aGQuZmlsZSwgZXJyKTsKCgkJaWYgKCF2aGRfaGFzX2Jh dG1hcCgmcy0+dmhkKSkKCQkJZ290byBmcmVlOwoKCQllcnIgPSB2aGRfd3JpdGVfYmF0bWFwKCZz LT52aGQsICZzLT5iYXQuYmF0bWFwKTsKCQlpZiAoZXJyKQoJCQlFUFJJTlRGKCJ3cml0aW5nICVz IGJhdG1hcDogJWRcbiIsIHMtPnZoZC5maWxlLCBlcnIpOwoJfQoKIGZyZWU6Cgl2aGRfbG9nX2Ns b3NlKHMpOwoJdmhkX2ZyZWVfYmF0KHMpOwoJdmhkX2ZyZWVfYml0bWFwX2NhY2hlKHMpOwoJdmhk X2Nsb3NlKCZzLT52aGQpOwoJdmhkX2ZyZWUocyk7CgoJbWVtc2V0KHMsIDAsIHNpemVvZihzdHJ1 Y3QgdmhkX3N0YXRlKSk7CgoJcmV0dXJuIDA7Cn0KCmludAp2aGRfdmFsaWRhdGVfcGFyZW50KHRk X2RyaXZlcl90ICpjaGlsZF9kcml2ZXIsCgkJICAgIHRkX2RyaXZlcl90ICpwYXJlbnRfZHJpdmVy LCB0ZF9mbGFnX3QgZmxhZ3MpCnsKCXN0cnVjdCB2aGRfc3RhdGUgKmNoaWxkICA9IChzdHJ1Y3Qg dmhkX3N0YXRlICopY2hpbGRfZHJpdmVyLT5kYXRhOwoJc3RydWN0IHZoZF9zdGF0ZSAqcGFyZW50 OwoKCWlmIChwYXJlbnRfZHJpdmVyLT50eXBlICE9IERJU0tfVFlQRV9WSEQpIHsKCQlpZiAoY2hp bGRfZHJpdmVyLT50eXBlICE9IERJU0tfVFlQRV9WSEQpCgkJCXJldHVybiAtRUlOVkFMOwoJCWlm IChjaGlsZC0+dmhkLmZvb3Rlci50eXBlICE9IEhEX1RZUEVfRElGRikKCQkJcmV0dXJuIC1FSU5W QUw7CgkJaWYgKCF2aGRfcGFyZW50X3JhdygmY2hpbGQtPnZoZCkpCgkJCXJldHVybiAtRUlOVkFM OwoJCXJldHVybiAwOwoJfQoKCXBhcmVudCA9IChzdHJ1Y3QgdmhkX3N0YXRlICopcGFyZW50X2Ry aXZlci0+ZGF0YTsKCgkvKiAKCSAqIFRoaXMgY2hlY2sgcmVtb3ZlZCBiZWNhdXNlIG9mIGNhc2Vz IGxpa2U6CgkgKiAgIC0gcGFyZW50IFZIRCBtYXJrZWQgYXMgJ2hpZGRlbicKCSAqICAgLSBwYXJl bnQgVkhEIG1vZGlmaWVkIGR1cmluZyBjb2FsZXNjZQoJICovCgkvKgoJaWYgKHN0YXQocGFyZW50 LT52aGQuZmlsZSwgJnN0YXRzKSkgewoJCURQUklOVEYoIkVSUk9SIHN0YXRpbmcgcGFyZW50IGZp bGUgJXNcbiIsIHBhcmVudC0+dmhkLmZpbGUpOwoJCXJldHVybiAtZXJybm87Cgl9CgoJaWYgKGNo aWxkLT5oZHIucHJ0X3RzICE9IHZoZF90aW1lKHN0YXRzLnN0X210aW1lKSkgewoJCURQUklOVEYo IkVSUk9SOiBwYXJlbnQgZmlsZSBoYXMgYmVlbiBtb2RpZmllZCBzaW5jZSAiCgkJCSJzbmFwc2hv dC4gIENoaWxkIGltYWdlIG5vIGxvbmdlciB2YWxpZC5cbiIpOwoJCXJldHVybiAtRUlOVkFMOwoJ fQoJKi8KCglpZiAodXVpZF9jb21wYXJlKGNoaWxkLT52aGQuaGVhZGVyLnBydF91dWlkLCBwYXJl bnQtPnZoZC5mb290ZXIudXVpZCkpIHsKCQlEUFJJTlRGKCJFUlJPUjogJXM6ICVzLCAlczogcGFy ZW50IHV1aWQgaGFzIGNoYW5nZWQgc2luY2UgIgoJCQkic25hcHNob3QuICBDaGlsZCBpbWFnZSBu byBsb25nZXIgdmFsaWQuXG4iLAoJCQlfX2Z1bmNfXywgY2hpbGQtPnZoZC5maWxlLCBwYXJlbnQt PnZoZC5maWxlKTsKCQlyZXR1cm4gLUVJTlZBTDsKCX0KCgkvKiBUT0RPOiBjb21wYXJlIHNpemVz ICovCgkKCXJldHVybiAwOwp9CgppbnQKdmhkX2dldF9wYXJlbnRfaWQodGRfZHJpdmVyX3QgKmRy aXZlciwgdGRfZGlza19pZF90ICppZCkKewoJaW50IGVycjsKCWNoYXIgKnBhcmVudDsKCXN0cnVj dCB2aGRfc3RhdGUgKnM7CglpbnQgZmxhZ3M7CgoJREJHKFRMT0dfREJHLCAiXG4iKTsKCWZsYWdz ID0gaWQtPmZsYWdzOwoJbWVtc2V0KGlkLCAwLCBzaXplb2YodGRfZGlza19pZF90KSk7CgoJcyA9 IChzdHJ1Y3QgdmhkX3N0YXRlICopZHJpdmVyLT5kYXRhOwoKCWlmIChzLT52aGQuZm9vdGVyLnR5 cGUgIT0gSERfVFlQRV9ESUZGKQoJCXJldHVybiBURF9OT19QQVJFTlQ7CgoJZXJyID0gdmhkX3Bh cmVudF9sb2NhdG9yX2dldCgmcy0+dmhkLCAmcGFyZW50KTsKCWlmIChlcnIpCgkJcmV0dXJuIGVy cjsKCglpZC0+bmFtZSAgID0gcGFyZW50OwoJaWQtPnR5cGUgICA9IHZoZF9wYXJlbnRfcmF3KCZz LT52aGQpID8gRElTS19UWVBFX0FJTyA6IERJU0tfVFlQRV9WSEQ7CglpZC0+ZmxhZ3MgID0gZmxh Z3N8VERfT1BFTl9TSEFSRUFCTEV8VERfT1BFTl9SRE9OTFk7CgoJcmV0dXJuIDA7Cn0KCnN0YXRp YyBpbmxpbmUgdm9pZApjbGVhcl9yZXFfbGlzdChzdHJ1Y3QgdmhkX3JlcV9saXN0ICpsaXN0KQp7 CglsaXN0LT5oZWFkID0gbGlzdC0+dGFpbCA9IE5VTEw7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZAph ZGRfdG9fdGFpbChzdHJ1Y3QgdmhkX3JlcV9saXN0ICpsaXN0LCBzdHJ1Y3QgdmhkX3JlcXVlc3Qg KmUpCnsKCWlmICghbGlzdC0+aGVhZCkgCgkJbGlzdC0+aGVhZCA9IGxpc3QtPnRhaWwgPSBlOwoJ ZWxzZSAKCQlsaXN0LT50YWlsID0gbGlzdC0+dGFpbC0+bmV4dCA9IGU7Cn0KCnN0YXRpYyBpbmxp bmUgaW50CnJlbW92ZV9mcm9tX3JlcV9saXN0KHN0cnVjdCB2aGRfcmVxX2xpc3QgKmxpc3QsIHN0 cnVjdCB2aGRfcmVxdWVzdCAqZSkKewoJc3RydWN0IHZoZF9yZXF1ZXN0ICppID0gbGlzdC0+aGVh ZDsKCglpZiAobGlzdC0+aGVhZCA9PSBlKSB7CgkJaWYgKGxpc3QtPnRhaWwgPT0gZSkKCQkJY2xl YXJfcmVxX2xpc3QobGlzdCk7CgkJZWxzZQoJCQlsaXN0LT5oZWFkID0gbGlzdC0+aGVhZC0+bmV4 dDsKCQlyZXR1cm4gMDsKCX0KCgl3aGlsZSAoaS0+bmV4dCkgewoJCWlmIChpLT5uZXh0ID09IGUp IHsKCQkJaWYgKGxpc3QtPnRhaWwgPT0gZSkgewoJCQkJaS0+bmV4dCA9IE5VTEw7CgkJCQlsaXN0 LT50YWlsID0gaTsKCQkJfSBlbHNlCgkJCQlpLT5uZXh0ID0gaS0+bmV4dC0+bmV4dDsKCQkJcmV0 dXJuIDA7CgkJfQoJCWkgPSBpLT5uZXh0OwoJfQoKCXJldHVybiAtRUlOVkFMOwp9CgpzdGF0aWMg aW5saW5lIHZvaWQKaW5pdF92aGRfcmVxdWVzdChzdHJ1Y3QgdmhkX3N0YXRlICpzLCBzdHJ1Y3Qg dmhkX3JlcXVlc3QgKnJlcSkKewoJbWVtc2V0KHJlcSwgMCwgc2l6ZW9mKHN0cnVjdCB2aGRfcmVx dWVzdCkpOwoJcmVxLT5zdGF0ZSA9IHM7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZAppbml0X3R4KHN0 cnVjdCB2aGRfdHJhbnNhY3Rpb24gKnR4KQp7CgltZW1zZXQodHgsIDAsIHNpemVvZihzdHJ1Y3Qg dmhkX3RyYW5zYWN0aW9uKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZAphZGRfdG9fdHJhbnNhY3Rp b24oc3RydWN0IHZoZF90cmFuc2FjdGlvbiAqdHgsIHN0cnVjdCB2aGRfcmVxdWVzdCAqcikKewoJ QVNTRVJUKCF0eC0+Y2xvc2VkKTsKCglyLT50eCA9IHR4OwoJdHgtPnN0YXJ0ZWQrKzsKCWFkZF90 b190YWlsKCZ0eC0+cmVxdWVzdHMsIHIpOwoJc2V0X3ZoZF9mbGFnKHR4LT5zdGF0dXMsIFZIRF9G TEFHX1RYX0xJVkUpOwoKCURCRyhUTE9HX0RCRywgImJsazogMHglMDQiUFJJeDY0IiwgbHNlYzog MHglMDgiUFJJeDY0IiwgdHg6ICVwLCAiCgkgICAgInN0YXJ0ZWQ6ICVkLCBmaW5pc2hlZDogJWQs IHN0YXR1czogJXVcbiIsCgkgICAgci0+dHJlcS5zZWMgLyBTUEIsIHItPnRyZXEuc2VjLCB0eCwK CSAgICB0eC0+c3RhcnRlZCwgdHgtPmZpbmlzaGVkLCB0eC0+c3RhdHVzKTsKfQoKc3RhdGljIGlu bGluZSBpbnQKdHJhbnNhY3Rpb25fY29tcGxldGVkKHN0cnVjdCB2aGRfdHJhbnNhY3Rpb24gKnR4 KQp7CglyZXR1cm4gKHR4LT5zdGFydGVkID09IHR4LT5maW5pc2hlZCk7Cn0KCnN0YXRpYyBpbmxp bmUgdm9pZAppbml0X2JhdChzdHJ1Y3QgdmhkX3N0YXRlICpzKQp7CglzLT5iYXQucmVxLnR4ICAg ICA9IE5VTEw7CglzLT5iYXQucmVxLm5leHQgICA9IE5VTEw7CglzLT5iYXQucmVxLmVycm9yICA9 IDA7CglzLT5iYXQucGJ3X2JsayAgICA9IDA7CglzLT5iYXQucGJ3X29mZnNldCA9IDA7CglzLT5i YXQuc3RhdHVzICAgICA9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZApsb2NrX2JhdChzdHJ1Y3Qg dmhkX3N0YXRlICpzKQp7CglzZXRfdmhkX2ZsYWcocy0+YmF0LnN0YXR1cywgVkhEX0ZMQUdfQkFU X0xPQ0tFRCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZAp1bmxvY2tfYmF0KHN0cnVjdCB2aGRfc3Rh dGUgKnMpCnsKCWNsZWFyX3ZoZF9mbGFnKHMtPmJhdC5zdGF0dXMsIFZIRF9GTEFHX0JBVF9MT0NL RUQpOwp9CgpzdGF0aWMgaW5saW5lIGludApiYXRfbG9ja2VkKHN0cnVjdCB2aGRfc3RhdGUgKnMp CnsKCXJldHVybiB0ZXN0X3ZoZF9mbGFnKHMtPmJhdC5zdGF0dXMsIFZIRF9GTEFHX0JBVF9MT0NL RUQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQKaW5pdF92aGRfYml0bWFwKHN0cnVjdCB2aGRfc3Rh dGUgKnMsIHN0cnVjdCB2aGRfYml0bWFwICpibSkKewoJYm0tPmJsayAgICA9IDA7CglibS0+c2Vx bm8gID0gMDsKCWJtLT5zdGF0dXMgPSAwOwoJaW5pdF90eCgmYm0tPnR4KTsKCWNsZWFyX3JlcV9s aXN0KCZibS0+cXVldWUpOwoJY2xlYXJfcmVxX2xpc3QoJmJtLT53YWl0aW5nKTsKCW1lbXNldChi bS0+bWFwLCAwLCB2aGRfc2VjdG9yc190b19ieXRlcyhzLT5ibV9zZWNzKSk7CgltZW1zZXQoYm0t PnNoYWRvdywgMCwgdmhkX3NlY3RvcnNfdG9fYnl0ZXMocy0+Ym1fc2VjcykpOwoJaW5pdF92aGRf cmVxdWVzdChzLCAmYm0tPnJlcSk7Cn0KCnN0YXRpYyBpbmxpbmUgc3RydWN0IHZoZF9iaXRtYXAg KgpnZXRfYml0bWFwKHN0cnVjdCB2aGRfc3RhdGUgKnMsIHVpbnQzMl90IGJsb2NrKQp7CglpbnQg aTsKCXN0cnVjdCB2aGRfYml0bWFwICpibTsKCglmb3IgKGkgPSAwOyBpIDwgVkhEX0NBQ0hFX1NJ WkU7IGkrKykgewoJCWJtID0gcy0+Yml0bWFwW2ldOwoJCWlmIChibSAmJiBibS0+YmxrID09IGJs b2NrKQoJCQlyZXR1cm4gYm07Cgl9CgoJcmV0dXJuIE5VTEw7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p ZApsb2NrX2JpdG1hcChzdHJ1Y3QgdmhkX2JpdG1hcCAqYm0pCnsKCXNldF92aGRfZmxhZyhibS0+ c3RhdHVzLCBWSERfRkxBR19CTV9MT0NLRUQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQKdW5sb2Nr X2JpdG1hcChzdHJ1Y3QgdmhkX2JpdG1hcCAqYm0pCnsKCWNsZWFyX3ZoZF9mbGFnKGJtLT5zdGF0 dXMsIFZIRF9GTEFHX0JNX0xPQ0tFRCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50CmJpdG1hcF9sb2Nr ZWQoc3RydWN0IHZoZF9iaXRtYXAgKmJtKQp7CglyZXR1cm4gdGVzdF92aGRfZmxhZyhibS0+c3Rh dHVzLCBWSERfRkxBR19CTV9MT0NLRUQpOwp9CgpzdGF0aWMgaW5saW5lIGludApiaXRtYXBfdmFs aWQoc3RydWN0IHZoZF9iaXRtYXAgKmJtKQp7CglyZXR1cm4gIXRlc3RfdmhkX2ZsYWcoYm0tPnN0 YXR1cywgVkhEX0ZMQUdfQk1fUkVBRF9QRU5ESU5HKTsKfQoKc3RhdGljIGlubGluZSBpbnQKYml0 bWFwX2luX3VzZShzdHJ1Y3QgdmhkX2JpdG1hcCAqYm0pCnsKCXJldHVybiAodGVzdF92aGRfZmxh ZyhibS0+c3RhdHVzLCBWSERfRkxBR19CTV9SRUFEX1BFTkRJTkcpICB8fAoJCXRlc3RfdmhkX2Zs YWcoYm0tPnN0YXR1cywgVkhEX0ZMQUdfQk1fV1JJVEVfUEVORElORykgfHwKCQl0ZXN0X3ZoZF9m bGFnKGJtLT50eC5zdGF0dXMsIFZIRF9GTEFHX1RYX1VQREFURV9CQVQpIHx8CgkJYm0tPndhaXRp bmcuaGVhZCB8fCBibS0+dHgucmVxdWVzdHMuaGVhZCB8fCBibS0+cXVldWUuaGVhZCk7Cn0KCnN0 YXRpYyBpbmxpbmUgaW50CmJpdG1hcF9mdWxsKHN0cnVjdCB2aGRfc3RhdGUgKnMsIHN0cnVjdCB2 aGRfYml0bWFwICpibSkKewoJaW50IGksIG47CgoJbiA9IHMtPnNwYiA+PiAzOwoJZm9yIChpID0g MDsgaSA8IG47IGkrKykKCQlpZiAoYm0tPm1hcFtpXSAhPSAoY2hhcikweEZGKQoJCQlyZXR1cm4g MDsKCglEQkcoVExPR19EQkcsICJiaXRtYXAgMHglMDR4IGZ1bGxcbiIsIGJtLT5ibGspOwoJcmV0 dXJuIDE7Cn0KCnN0YXRpYyBzdHJ1Y3QgdmhkX2JpdG1hcCAqCnJlbW92ZV9scnVfYml0bWFwKHN0 cnVjdCB2aGRfc3RhdGUgKnMpCnsKCWludCBpLCBpZHggPSAwOwoJdWludDY0X3Qgc2VxID0gcy0+ Ym1fbHJ1OwoJc3RydWN0IHZoZF9iaXRtYXAgKmJtLCAqbHJ1ID0gTlVMTDsKCglmb3IgKGkgPSAw OyBpIDwgVkhEX0NBQ0hFX1NJWkU7IGkrKykgewoJCWJtID0gcy0+Yml0bWFwW2ldOwoJCWlmIChi bSAmJiBibS0+c2Vxbm8gPCBzZXEgJiYgIWJpdG1hcF9sb2NrZWQoYm0pKSB7CgkJCWlkeCA9IGk7 CgkJCWxydSA9IGJtOwoJCQlzZXEgPSBscnUtPnNlcW5vOwoJCX0KCX0KCglpZiAobHJ1KSB7CgkJ cy0+Yml0bWFwW2lkeF0gPSBOVUxMOwoJCUFTU0VSVCghYml0bWFwX2luX3VzZShscnUpKTsKCX0K CglyZXR1cm4gIGxydTsKfQoKc3RhdGljIGludAphbGxvY192aGRfYml0bWFwKHN0cnVjdCB2aGRf c3RhdGUgKnMsIHN0cnVjdCB2aGRfYml0bWFwICoqYml0bWFwLCB1aW50MzJfdCBibGspCnsKCXN0 cnVjdCB2aGRfYml0bWFwICpibTsKCQoJKmJpdG1hcCA9IE5VTEw7CgoJaWYgKHMtPmJtX2ZyZWVf Y291bnQgPiAwKSB7CgkJYm0gPSBzLT5iaXRtYXBfZnJlZVstLXMtPmJtX2ZyZWVfY291bnRdOwoJ fSBlbHNlIHsKCQlibSA9IHJlbW92ZV9scnVfYml0bWFwKHMpOwoJCWlmICghYm0pCgkJCXJldHVy biAtRUJVU1k7Cgl9CgoJaW5pdF92aGRfYml0bWFwKHMsIGJtKTsKCWJtLT5ibGsgPSBibGs7Cgkq Yml0bWFwID0gYm07CgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgdWludDY0X3QKX19iaXRt YXBfbHJ1X3NlcW5vKHN0cnVjdCB2aGRfc3RhdGUgKnMpCnsKCWludCBpOwoJc3RydWN0IHZoZF9i aXRtYXAgKmJtOwoKCWlmIChzLT5ibV9scnUgPT0gMHhmZmZmZmZmZikgewoJCXMtPmJtX2xydSA9 IDA7CgkJZm9yIChpID0gMDsgaSA8IFZIRF9DQUNIRV9TSVpFOyBpKyspIHsKCQkJYm0gPSBzLT5i aXRtYXBbaV07CgkJCWlmIChibSkgewoJCQkJYm0tPnNlcW5vID4+PSAxOwoJCQkJaWYgKGJtLT5z ZXFubyA+IHMtPmJtX2xydSkKCQkJCQlzLT5ibV9scnUgPSBibS0+c2Vxbm87CgkJCX0KCQl9Cgl9 CgoJcmV0dXJuICsrcy0+Ym1fbHJ1Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQKdG91Y2hfYml0bWFw KHN0cnVjdCB2aGRfc3RhdGUgKnMsIHN0cnVjdCB2aGRfYml0bWFwICpibSkKewoJYm0tPnNlcW5v ID0gX19iaXRtYXBfbHJ1X3NlcW5vKHMpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQKaW5zdGFsbF9i aXRtYXAoc3RydWN0IHZoZF9zdGF0ZSAqcywgc3RydWN0IHZoZF9iaXRtYXAgKmJtKQp7CglpbnQg aTsKCWZvciAoaSA9IDA7IGkgPCBWSERfQ0FDSEVfU0laRTsgaSsrKSB7CgkJaWYgKCFzLT5iaXRt YXBbaV0pIHsKCQkJdG91Y2hfYml0bWFwKHMsIGJtKTsKCQkJcy0+Yml0bWFwW2ldID0gYm07CgkJ CXJldHVybjsKCQl9Cgl9CgoJQVNTRVJUKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQKZnJlZV92 aGRfYml0bWFwKHN0cnVjdCB2aGRfc3RhdGUgKnMsIHN0cnVjdCB2aGRfYml0bWFwICpibSkKewoJ aW50IGk7CgoJZm9yIChpID0gMDsgaSA8IFZIRF9DQUNIRV9TSVpFOyBpKyspCgkJaWYgKHMtPmJp dG1hcFtpXSA9PSBibSkKCQkJYnJlYWs7CgoJQVNTRVJUKCFiaXRtYXBfbG9ja2VkKGJtKSk7CglB U1NFUlQoIWJpdG1hcF9pbl91c2UoYm0pKTsKCUFTU0VSVChpIDwgVkhEX0NBQ0hFX1NJWkUpOwoK CXMtPmJpdG1hcFtpXSA9IE5VTEw7CglzLT5iaXRtYXBfZnJlZVtzLT5ibV9mcmVlX2NvdW50Kytd ID0gYm07Cn0KCnN0YXRpYyBpbnQKcmVhZF9iaXRtYXBfY2FjaGUoc3RydWN0IHZoZF9zdGF0ZSAq cywgdWludDY0X3Qgc2VjdG9yLCB1aW50OF90IG9wKQp7Cgl1aW50MzJfdCBibGssIHNlYzsKCXN0 cnVjdCB2aGRfYml0bWFwICpibTsKCgkvKiBpbiBmaXhlZCBkaXNrcywgZXZlcnkgYmxvY2sgaXMg cHJlc2VudCAqLwoJaWYgKHMtPnZoZC5mb290ZXIudHlwZSA9PSBIRF9UWVBFX0ZJWEVEKSAKCQly ZXR1cm4gVkhEX0JNX0JJVF9TRVQ7CgoJLyogdGhlIGV4dGVudCB0aGUgbG9naWNhbCBzZWN0b3Ig ZmFsbHMgaW4gKi8KCWJsayA9IHNlY3RvciAvIHMtPnNwYjsKCgkvKiBvZmZzZXQgd2l0aGluIHRo ZSBleHRlbnQgdGhlIGxvZ2ljYWwgc2VjdG9yIGlzIGxvY2F0ZWQgKi8KCXNlYyA9IHNlY3RvciAl IHMtPnNwYjsKCglpZiAoYmxrID4gcy0+dmhkLmhlYWRlci5tYXhfYmF0X3NpemUpIHsKCQlEUFJJ TlRGKCJFUlJPUjogc2VjICUiUFJJdTY0IiBvdXQgb2YgcmFuZ2UsIG9wID0gJWRcbiIsCgkJCXNl Y3Rvciwgb3ApOwoJCXJldHVybiAtRUlOVkFMOwoJfQoKCWlmIChiYXRfZW50cnkocywgYmxrKSA9 PSBERF9CTEtfVU5VU0VEKSB7CgkJaWYgKG9wID09IFZIRF9PUF9EQVRBX1dSSVRFICYmCgkJICAg IHMtPmJhdC5wYndfYmxrICE9IGJsayAmJiBiYXRfbG9ja2VkKHMpKQoJCQlyZXR1cm4gVkhEX0JN X0JBVF9MT0NLRUQ7CgoJCXJldHVybiBWSERfQk1fQkFUX0NMRUFSOwoJfQoKCWlmICh0ZXN0X2Jh dG1hcChzLCBibGspKSB7CgkJREJHKFRMT0dfREJHLCAiYmF0bWFwIHNldCBmb3IgMHglMDR4XG4i LCBibGspOwoJCXJldHVybiBWSERfQk1fQklUX1NFVDsKCX0KCglibSA9IGdldF9iaXRtYXAocywg YmxrKTsKCWlmICghYm0pCgkJcmV0dXJuIFZIRF9CTV9OT1RfQ0FDSEVEOwoKCS8qIGJ1bXAgbHJ1 IGNvdW50ICovCgl0b3VjaF9iaXRtYXAocywgYm0pOwoKCWlmICh0ZXN0X3ZoZF9mbGFnKGJtLT5z dGF0dXMsIFZIRF9GTEFHX0JNX1JFQURfUEVORElORykpCgkJcmV0dXJuIFZIRF9CTV9SRUFEX1BF TkRJTkc7CgoJcmV0dXJuICgodmhkX2JpdG1hcF90ZXN0KCZzLT52aGQsIGJtLT5tYXAsIHNlYykp ID8gCgkJVkhEX0JNX0JJVF9TRVQgOiBWSERfQk1fQklUX0NMRUFSKTsKfQoKc3RhdGljIGludApy ZWFkX2JpdG1hcF9jYWNoZV9zcGFuKHN0cnVjdCB2aGRfc3RhdGUgKnMsIAoJCSAgICAgICB1aW50 NjRfdCBzZWN0b3IsIGludCBucl9zZWNzLCBpbnQgdmFsdWUpCnsKCWludCByZXQ7Cgl1aW50MzJf dCBibGssIHNlYzsKCXN0cnVjdCB2aGRfYml0bWFwICpibTsKCgkvKiBpbiBmaXhlZCBkaXNrcywg ZXZlcnkgYmxvY2sgaXMgcHJlc2VudCAqLwoJaWYgKHMtPnZoZC5mb290ZXIudHlwZSA9PSBIRF9U WVBFX0ZJWEVEKSAKCQlyZXR1cm4gbnJfc2VjczsKCglzZWMgPSBzZWN0b3IgJSBzLT5zcGI7Cgli bGsgPSBzZWN0b3IgLyBzLT5zcGI7CgoJaWYgKHRlc3RfYmF0bWFwKHMsIGJsaykpCgkJcmV0dXJu IE1JTihucl9zZWNzLCBzLT5zcGIgLSBzZWMpOwoKCWJtICA9IGdldF9iaXRtYXAocywgYmxrKTsK CQoJQVNTRVJUKGJtICYmIGJpdG1hcF92YWxpZChibSkpOwoKCWZvciAocmV0ID0gMDsgc2VjIDwg cy0+c3BiICYmIHJldCA8IG5yX3NlY3M7IHNlYysrLCByZXQrKykKCQlpZiAodmhkX2JpdG1hcF90 ZXN0KCZzLT52aGQsIGJtLT5tYXAsIHNlYykgIT0gdmFsdWUpCgkJCWJyZWFrOwoKCXJldHVybiBy ZXQ7Cn0KCnN0YXRpYyBpbmxpbmUgc3RydWN0IHZoZF9yZXF1ZXN0ICoKYWxsb2NfdmhkX3JlcXVl c3Qoc3RydWN0IHZoZF9zdGF0ZSAqcykKewoJc3RydWN0IHZoZF9yZXF1ZXN0ICpyZXEgPSBOVUxM OwoJCglpZiAocy0+dnJlcV9mcmVlX2NvdW50ID4gMCkgewoJCXJlcSA9IHMtPnZyZXFfZnJlZVst LXMtPnZyZXFfZnJlZV9jb3VudF07CgkJQVNTRVJUKHJlcS0+dHJlcS5zZWNzID09IDApOwoJCWlu aXRfdmhkX3JlcXVlc3QocywgcmVxKTsKCQlyZXR1cm4gcmVxOwoJfQoKCXJldHVybiBOVUxMOwp9 CgpzdGF0aWMgaW5saW5lIHZvaWQKZnJlZV92aGRfcmVxdWVzdChzdHJ1Y3QgdmhkX3N0YXRlICpz LCBzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcSkKewoJbWVtc2V0KHJlcSwgMCwgc2l6ZW9mKHN0cnVj dCB2aGRfcmVxdWVzdCkpOwoJcy0+dnJlcV9mcmVlW3MtPnZyZXFfZnJlZV9jb3VudCsrXSA9IHJl cTsKfQoKc3RhdGljIGlubGluZSB2b2lkCmFpb19yZWFkKHN0cnVjdCB2aGRfc3RhdGUgKnMsIHN0 cnVjdCB2aGRfcmVxdWVzdCAqcmVxLCB1aW50NjRfdCBvZmZzZXQpCnsKCXN0cnVjdCB0aW9jYiAq dGlvY2IgPSAmcmVxLT50aW9jYjsKCgl0ZF9wcmVwX3JlYWQodGlvY2IsIHMtPnZoZC5mZCwgcmVx LT50cmVxLmJ1ZiwKCQkgICAgIHZoZF9zZWN0b3JzX3RvX2J5dGVzKHJlcS0+dHJlcS5zZWNzKSwK CQkgICAgIG9mZnNldCwgdmhkX2NvbXBsZXRlLCByZXEpOwoJdGRfcXVldWVfdGlvY2Iocy0+ZHJp dmVyLCB0aW9jYik7CgoJcy0+cXVldWVkKys7CglzLT5yZWFkcysrOwoJcy0+cmVhZF9zaXplICs9 IHJlcS0+dHJlcS5zZWNzOwoJVFJBQ0Uocyk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZAphaW9fd3Jp dGUoc3RydWN0IHZoZF9zdGF0ZSAqcywgc3RydWN0IHZoZF9yZXF1ZXN0ICpyZXEsIHVpbnQ2NF90 IG9mZnNldCkKewoJc3RydWN0IHRpb2NiICp0aW9jYiA9ICZyZXEtPnRpb2NiOwoKCXRkX3ByZXBf d3JpdGUodGlvY2IsIHMtPnZoZC5mZCwgcmVxLT50cmVxLmJ1ZiwKCQkgICAgICB2aGRfc2VjdG9y c190b19ieXRlcyhyZXEtPnRyZXEuc2VjcyksCgkJICAgICAgb2Zmc2V0LCB2aGRfY29tcGxldGUs IHJlcSk7Cgl0ZF9xdWV1ZV90aW9jYihzLT5kcml2ZXIsIHRpb2NiKTsKCglzLT5xdWV1ZWQrKzsK CXMtPndyaXRlcysrOwoJcy0+d3JpdGVfc2l6ZSArPSByZXEtPnRyZXEuc2VjczsKCVRSQUNFKHMp Owp9CgovKioKICogUmVzZXJ2ZXMgYSBuZXcgZXh0ZW50LgogKgogKiBAcmV0dXJucyBhIDY0LWJp dCB1bnNpZ25lZCBpbnRlZ2VyIHdoZXJlIHRoZSBlcnJvciBjb2RlIGlzIHN0b3JlZCBpbiB0aGUK ICogdXBwZXIgMzIgYml0cyBhbmQgdGhlIHJlc2VydmVkIGJsb2NrIG51bWJlciBpcyBzdG9yZWQg aW4gdGhlIGxvd2VyIDMyIGJpdHMuCiAqIElmIGFuIGVycm9yIGlzIHJldHVybmVkICh0aGUgdXBw ZXIgMzIgYml0cyBhcmUgbm90IHplcm8pLCB0aGUgbG93ZXIgMzIgYml0cwogKiBhcmUgdW5kZWZp bmVkLgogKi8Kc3RhdGljIGlubGluZSB1aW50NjRfdApyZXNlcnZlX25ld19ibG9jayhzdHJ1Y3Qg dmhkX3N0YXRlICpzLCB1aW50MzJfdCBibGspCnsKCWludCBnYXAgPSAwOwoKCUFTU0VSVCghdGVz dF92aGRfZmxhZyhzLT5iYXQuc3RhdHVzLCBWSERfRkxBR19CQVRfV1JJVEVfU1RBUlRFRCkpOwoK CS8qIGRhdGEgcmVnaW9uIG9mIHNlZ21lbnQgc2hvdWxkIGJlZ2luIG9uIHBhZ2UgYm91bmRhcnkg Ki8KCWlmICgocy0+bmV4dF9kYiArIHMtPmJtX3NlY3MpICUgcy0+c3BwKQoJCWdhcCA9IChzLT5z cHAgLSAoKHMtPm5leHRfZGIgKyBzLT5ibV9zZWNzKSAlIHMtPnNwcCkpOwoKCWlmIChzLT5uZXh0 X2RiICsgZ2FwID4gVUlOVF9NQVgpCgkJcmV0dXJuICh1aW50NjRfdClFTk9TUEMgPDwgMzI7CgoJ cy0+YmF0LnBid19ibGsgICAgPSBibGs7CglzLT5iYXQucGJ3X29mZnNldCA9IHMtPm5leHRfZGIg KyBnYXA7CgoJcmV0dXJuIHMtPm5leHRfZGI7Cn0KCnN0YXRpYyBpbnQKc2NoZWR1bGVfYmF0X3dy aXRlKHN0cnVjdCB2aGRfc3RhdGUgKnMpCnsKCWludCBpOwoJdWludDMyX3QgYmxrOwoJY2hhciAq YnVmOwoJdWludDY0X3Qgb2Zmc2V0OwoJc3RydWN0IHZoZF9yZXF1ZXN0ICpyZXE7CgoJQVNTRVJU KGJhdF9sb2NrZWQocykpOwoKCXJlcSA9ICZzLT5iYXQucmVxOwoJYnVmID0gcy0+YmF0LmJhdF9i dWY7CglibGsgPSBzLT5iYXQucGJ3X2JsazsKCglpbml0X3ZoZF9yZXF1ZXN0KHMsIHJlcSk7Cglt ZW1jcHkoYnVmLCAmYmF0X2VudHJ5KHMsIGJsayAtIChibGsgJSAxMjgpKSwgNTEyKTsKCgkoKHVp bnQzMl90ICopYnVmKVtibGsgJSAxMjhdID0gcy0+YmF0LnBid19vZmZzZXQ7CgoJZm9yIChpID0g MDsgaSA8IDEyODsgaSsrKQoJCUJFMzJfT1VUKCYoKHVpbnQzMl90ICopYnVmKVtpXSk7CgoJb2Zm c2V0ICAgICAgICAgPSBzLT52aGQuaGVhZGVyLnRhYmxlX29mZnNldCArIChibGsgLSAoYmxrICUg MTI4KSkgKiA0OwoJcmVxLT50cmVxLnNlY3MgPSAxOwoJcmVxLT50cmVxLmJ1ZiAgPSBidWY7Cgly ZXEtPm9wICAgICAgICA9IFZIRF9PUF9CQVRfV1JJVEU7CglyZXEtPm5leHQgICAgICA9IE5VTEw7 CgoJYWlvX3dyaXRlKHMsIHJlcSwgb2Zmc2V0KTsKCXNldF92aGRfZmxhZyhzLT5iYXQuc3RhdHVz LCBWSERfRkxBR19CQVRfV1JJVEVfU1RBUlRFRCk7CgoJREJHKFRMT0dfREJHLCAiYmxrOiAweCUw NHgsIHBid286IDB4JTA4IlBSSXg2NCIsICIKCSAgICAidGFibGVfb2Zmc2V0OiAweCUwOCJQUkl4 NjQiXG4iLCBibGssIHMtPmJhdC5wYndfb2Zmc2V0LCBvZmZzZXQpOwoKCXJldHVybiAwOwp9Cgpz dGF0aWMgdm9pZApzY2hlZHVsZV96ZXJvX2JtX3dyaXRlKHN0cnVjdCB2aGRfc3RhdGUgKnMsCgkJ ICAgICAgIHN0cnVjdCB2aGRfYml0bWFwICpibSwgdWludDY0X3QgbGJfZW5kKQp7Cgl1aW50NjRf dCBvZmZzZXQ7CglzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcSA9ICZzLT5iYXQuemVyb19yZXE7CgoJ aW5pdF92aGRfcmVxdWVzdChzLCByZXEpOwoKCW9mZnNldCAgICAgICAgID0gdmhkX3NlY3RvcnNf dG9fYnl0ZXMobGJfZW5kKTsKCXJlcS0+b3AgICAgICAgID0gVkhEX09QX1pFUk9fQk1fV1JJVEU7 CglyZXEtPnRyZXEuc2VjICA9IHMtPmJhdC5wYndfYmxrICogcy0+c3BiOwoJcmVxLT50cmVxLnNl Y3MgPSAocy0+YmF0LnBid19vZmZzZXQgLSBsYl9lbmQpICsgcy0+Ym1fc2VjczsKCXJlcS0+dHJl cS5idWYgID0gdmhkX3plcm9zKHZoZF9zZWN0b3JzX3RvX2J5dGVzKHJlcS0+dHJlcS5zZWNzKSk7 CglyZXEtPm5leHQgICAgICA9IE5VTEw7CgoJREJHKFRMT0dfREJHLCAiYmxrOiAweCUwNHgsIHdy aXRpbmcgemVybyBiaXRtYXAgYXQgMHglMDgiUFJJeDY0IlxuIiwKCSAgICBzLT5iYXQucGJ3X2Js aywgb2Zmc2V0KTsKCglsb2NrX2JpdG1hcChibSk7CglhZGRfdG9fdHJhbnNhY3Rpb24oJmJtLT50 eCwgcmVxKTsKCWFpb193cml0ZShzLCByZXEsIG9mZnNldCk7Cn0KCi8qIFRoaXMgaXMgYSBwZXJm b3JtYW5jZSBvcHRpbWl6YXRpb24uIFdoZW4gd3JpdGluZyBzZXF1ZW50aWFsbHkgaW50byBmdWxs IAogKiBibG9ja3MsIHNraXBwaW5nICh1cC10by1kYXRlKSBiaXRtYXBzIGNhdXNlcyBhbiBhcHBy b3guIDI1JSByZWR1Y3Rpb24gaW4gCiAqIHRocm91Z2hwdXQuIFRvIHByZXZlbnQgc2tpcHBpbmcs IHdlIGlzc3VlIHJlZHVuZGFudCB3cml0ZXMgaW50byB0aGUgKHBhZGRlZCkgCiAqIGJpdG1hcCBh cmVhIGp1c3QgdG8gbWFrZSBhbGwgd3JpdGVzIHNlcXVlbnRpYWwuIFRoaXMgd2lsbCBoZWxwIFZI RHMgb24gcmF3IAogKiBibG9jayBkZXZpY2VzLCB3aGlsZSB0aGUgRlMtYmFzZWQgVkhEcyBzaG91 bGRuJ3Qgc3VmZmVyIG11Y2guCiAqCiAqIE5vdGUgdGhhdCBpdCBvbmx5IG1ha2VzIHNlbnNlIHRv IHBlcmZvcm0gdGhpcyByZWR1bnRhbnQgYml0bWFwIHdyaXRlIGlmIHRoZSAKICogYmxvY2sgaXMg Y29tcGxldGVseSBmdWxsIChpLmUuIHRoZSBiYXRtYXAgZW50cnkgaXMgc2V0KS4gSWYgdGhlIGJs b2NrIGlzIG5vdCAKICogY29tcGxldGVseSBmdWxsIHRoZW4gb25lIG9mIHRoZSBmb2xsb3dpbmcg dHdvIHRoaW5ncyB3aWxsIGJlIHRydWU6CiAqICAxLiB3ZSdsbCBlaXRoZXIgYmUgYWxsb2NhdGlu ZyBuZXcgc2VjdG9ycyBpbiB0aGlzIGJsb2NrIGFuZCB3cml0aW5nIGl0cwogKiAgICAgYml0bWFw IHRyYW5zYWN0aW9uYWxseSwgd2hpY2ggd2lsbCBiZSBzbG93IGFueXdheXM7IG9yCiAqICAyLiB0 aGUgSU8gd2lsbCBiZSBza2lwcGluZyBvdmVyIHRoZSB1bmFsbG9jYXRlZCBzZWN0b3JzIGFnYWlu LCBzbyB0aGUKICogICAgIHBhdHRlcm4gd2lsbCBub3QgYmUgc2VxdWVudGlhbCBhbnl3YXlzCiAq IEluIGVpdGhlciBjYXNlIGEgcmVkdW5kYW50IGJpdG1hcCB3cml0ZSBiZWNvbWVzIHBvaW50bGVz cy4gVGhpcyBmYWN0IAogKiBzaW1wbGlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiByZWR1bmRh bnQgd3JpdGVzOiBzaW5jZSB3ZSBrbm93IHRoZSBiaXRtYXAgCiAqIGNhbm5vdCBiZSB1cGRhdGVk IGJ5IGFueW9uZSBlbHNlLCB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRyYW5zYWN0aW9u cyAKICogb3IgcG90ZW50aWFsIHdyaXRlIGNvbmZsaWN0cy4KICogKi8Kc3RhdGljIHZvaWQKc2No ZWR1bGVfcmVkdW5kYW50X2JtX3dyaXRlKHN0cnVjdCB2aGRfc3RhdGUgKnMsIHVpbnQzMl90IGJs aykKewoJdWludDY0X3Qgb2Zmc2V0OwoJc3RydWN0IHZoZF9yZXF1ZXN0ICpyZXE7CgoJQVNTRVJU KHMtPnZoZC5mb290ZXIudHlwZSAhPSBIRF9UWVBFX0ZJWEVEKTsKCUFTU0VSVCh0ZXN0X2JhdG1h cChzLCBibGspKTsKCglyZXEgPSBhbGxvY192aGRfcmVxdWVzdChzKTsKCWlmICghcmVxKSAKCQly ZXR1cm47CgoJcmVxLT50cmVxLmJ1ZiA9IHMtPnBhZGJtX2J1ZjsKCglvZmZzZXQgPSBiYXRfZW50 cnkocywgYmxrKTsKCUFTU0VSVChvZmZzZXQgIT0gRERfQkxLX1VOVVNFRCk7CglvZmZzZXQgPDw9 IFZIRF9TRUNUT1JfU0hJRlQ7CglvZmZzZXQgLT0gcy0+cGFkYm1fc2l6ZSAtIChzLT5ibV9zZWNz IDw8IFZIRF9TRUNUT1JfU0hJRlQpOwoKCXJlcS0+b3AgICAgICAgID0gVkhEX09QX1JFRFVOREFO VF9CTV9XUklURTsKCXJlcS0+dHJlcS5zZWMgID0gYmxrICogcy0+c3BiOwoJcmVxLT50cmVxLnNl Y3MgPSBzLT5wYWRibV9zaXplID4+IFZIRF9TRUNUT1JfU0hJRlQ7CglyZXEtPm5leHQgICAgICA9 IE5VTEw7CgoJREJHKFRMT0dfREJHLCAiYmxrOiAldSwgd3JpdGluZyByZWR1bmRhbnQgYml0bWFw IGF0ICUiIFBSSXU2NCAiXG4iLAoJICAgIGJsaywgb2Zmc2V0KTsKCglhaW9fd3JpdGUocywgcmVx LCBvZmZzZXQpOwp9CgpzdGF0aWMgaW50CnVwZGF0ZV9iYXQoc3RydWN0IHZoZF9zdGF0ZSAqcywg dWludDMyX3QgYmxrKQp7CglpbnQgZXJyOwoJdWludDY0X3QgbGJfZW5kOwoJc3RydWN0IHZoZF9i aXRtYXAgKmJtOwoKCUFTU0VSVChiYXRfZW50cnkocywgYmxrKSA9PSBERF9CTEtfVU5VU0VEKTsK CQoJaWYgKGJhdF9sb2NrZWQocykpIHsKCQlBU1NFUlQocy0+YmF0LnBid19ibGsgPT0gYmxrKTsK CQlyZXR1cm4gMDsKCX0KCgkvKiBlbXB0eSBiaXRtYXAgY291bGQgYWxyZWFkeSBiZSBpbgoJICog Y2FjaGUgaWYgZWFybGllciBiYXQgdXBkYXRlIGZhaWxlZCAqLwoJYm0gPSBnZXRfYml0bWFwKHMs IGJsayk7CglpZiAoIWJtKSB7CgkJLyogaW5zdGFsbCBlbXB0eSBiaXRtYXAgaW4gY2FjaGUgKi8K CQllcnIgPSBhbGxvY192aGRfYml0bWFwKHMsICZibSwgYmxrKTsKCQlpZiAoZXJyKSAKCQkJcmV0 dXJuIGVycjsKCgkJaW5zdGFsbF9iaXRtYXAocywgYm0pOwoJfQoKCWxvY2tfYmF0KHMpOwoJbGJf ZW5kID0gcmVzZXJ2ZV9uZXdfYmxvY2socywgYmxrKTsKCWlmIChsYl9lbmQgPj4gMzIpIHsKCQl1 bmxvY2tfYmF0KHMpOwoJCXJldHVybiAtKGxiX2VuZCA+PiAzMik7Cgl9CglzY2hlZHVsZV96ZXJv X2JtX3dyaXRlKHMsIGJtLCBsYl9lbmQpOwoJc2V0X3ZoZF9mbGFnKGJtLT50eC5zdGF0dXMsIFZI RF9GTEFHX1RYX1VQREFURV9CQVQpOwoKCXJldHVybiAwOwp9CgpzdGF0aWMgaW50CmFsbG9jYXRl X2Jsb2NrKHN0cnVjdCB2aGRfc3RhdGUgKnMsIHVpbnQzMl90IGJsaykKewoJaW50IGVyciwgZ2Fw OwoJdWludDY0X3Qgb2Zmc2V0LCBzaXplOwoJc3RydWN0IHZoZF9iaXRtYXAgKmJtOwoJc3NpemVf dCBjb3VudDsKCXVpbnQ2NF90IG5leHRfZGI7CgoJQVNTRVJUKGJhdF9lbnRyeShzLCBibGspID09 IEREX0JMS19VTlVTRUQpOwoKCWlmIChiYXRfbG9ja2VkKHMpKSB7CgkJQVNTRVJUKHMtPmJhdC5w YndfYmxrID09IGJsayk7CgkJaWYgKHMtPmJhdC5yZXEuZXJyb3IpCgkJCXJldHVybiAtRUJVU1k7 CgkJcmV0dXJuIDA7Cgl9CgoJZ2FwICAgICA9IDA7CglvZmZzZXQgID0gdmhkX3NlY3RvcnNfdG9f Ynl0ZXMocy0+bmV4dF9kYik7CgluZXh0X2RiID0gcy0+bmV4dF9kYjsKCgkvKiBkYXRhIHJlZ2lv biBvZiBzZWdtZW50IHNob3VsZCBiZWdpbiBvbiBwYWdlIGJvdW5kYXJ5ICovCglpZiAoKG5leHRf ZGIgKyBzLT5ibV9zZWNzKSAlIHMtPnNwcCkgewoJCWdhcCA9IChzLT5zcHAgLSAoKG5leHRfZGIg KyBzLT5ibV9zZWNzKSAlIHMtPnNwcCkpOwoJCW5leHRfZGIgKz0gZ2FwOwoJfQoKCWlmIChuZXh0 X2RiID4gVUlOVF9NQVgpCgkJcmV0dXJuIC1FTk9TUEM7CgoJcy0+bmV4dF9kYiA9IG5leHRfZGI7 CgoJcy0+YmF0LnBid19ibGsgPSBibGs7CglzLT5iYXQucGJ3X29mZnNldCA9IHMtPm5leHRfZGI7 CgoJREJHKFRMT0dfREJHLCAiYmxrOiAweCUwNHgsIHBid286IDB4JTA4IlBSSXg2NCJcbiIsCgkg ICAgYmxrLCBzLT5iYXQucGJ3X29mZnNldCk7CgoJaWYgKGxzZWVrKHMtPnZoZC5mZCwgb2Zmc2V0 LCBTRUVLX1NFVCkgPT0gKG9mZl90KS0xKSB7CgkJRVJSKHMsIC1lcnJubywgImxzZWVrIGZhaWxl ZFxuIik7CgkJcmV0dXJuIC1lcnJubzsKCX0KCglzaXplICA9IHZoZF9zZWN0b3JzX3RvX2J5dGVz KHMtPnNwYiArIHMtPmJtX3NlY3MgKyBnYXApOwoJY291bnQgPSB3cml0ZShzLT52aGQuZmQsIHZo ZF96ZXJvcyhzaXplKSwgc2l6ZSk7CglpZiAoY291bnQgIT0gc2l6ZSkgewoJCWVyciA9IGNvdW50 IDwgMCA/IC1lcnJubyA6IC1FTk9TUEM7CgkJRVJSKHMsIC1lcnJubywKCQkgICAgIndyaXRlIGZh aWxlZCAoJXpkLCBvZmZzZXQgJSJQUkl1NjQiKVxuIiwgY291bnQsIG9mZnNldCk7CgkJcmV0dXJu IGVycjsKCX0KCgkvKiBlbXB0eSBiaXRtYXAgY291bGQgYWxyZWFkeSBiZSBpbgoJICogY2FjaGUg aWYgZWFybGllciBiYXQgdXBkYXRlIGZhaWxlZCAqLwoJYm0gPSBnZXRfYml0bWFwKHMsIGJsayk7 CglpZiAoIWJtKSB7CgkJLyogaW5zdGFsbCBlbXB0eSBiaXRtYXAgaW4gY2FjaGUgKi8KCQllcnIg PSBhbGxvY192aGRfYml0bWFwKHMsICZibSwgYmxrKTsKCQlpZiAoZXJyKSAKCQkJcmV0dXJuIGVy cjsKCgkJaW5zdGFsbF9iaXRtYXAocywgYm0pOwoJfQoKCWxvY2tfYmF0KHMpOwoJbG9ja19iaXRt YXAoYm0pOwoJc2NoZWR1bGVfYmF0X3dyaXRlKHMpOwoJYWRkX3RvX3RyYW5zYWN0aW9uKCZibS0+ dHgsICZzLT5iYXQucmVxKTsKCglyZXR1cm4gMDsKfQoKc3RhdGljIGludCAKc2NoZWR1bGVfZGF0 YV9yZWFkKHN0cnVjdCB2aGRfc3RhdGUgKnMsIHRkX3JlcXVlc3RfdCB0cmVxLCB2aGRfZmxhZ190 IGZsYWdzKQp7Cgl1aW50NjRfdCBvZmZzZXQ7Cgl1aW50MzJfdCBibGsgPSAwLCBzZWMgPSAwOwoJ c3RydWN0IHZoZF9iaXRtYXAgICpibTsKCXN0cnVjdCB2aGRfcmVxdWVzdCAqcmVxOwoKCWlmIChz LT52aGQuZm9vdGVyLnR5cGUgPT0gSERfVFlQRV9GSVhFRCkgewoJCW9mZnNldCA9IHZoZF9zZWN0 b3JzX3RvX2J5dGVzKHRyZXEuc2VjKTsKCQlnb3RvIG1ha2VfcmVxdWVzdDsKCX0KCglibGsgICAg PSB0cmVxLnNlYyAvIHMtPnNwYjsKCXNlYyAgICA9IHRyZXEuc2VjICUgcy0+c3BiOwoJYm0gICAg ID0gZ2V0X2JpdG1hcChzLCBibGspOwoJb2Zmc2V0ID0gYmF0X2VudHJ5KHMsIGJsayk7CgoJQVNT RVJUKG9mZnNldCAhPSBERF9CTEtfVU5VU0VEKTsKCUFTU0VSVCh0ZXN0X2JhdG1hcChzLCBibGsp IHx8IChibSAmJiBiaXRtYXBfdmFsaWQoYm0pKSk7CgoJb2Zmc2V0ICs9IHMtPmJtX3NlY3MgKyBz ZWM7CglvZmZzZXQgID0gdmhkX3NlY3RvcnNfdG9fYnl0ZXMob2Zmc2V0KTsKCiBtYWtlX3JlcXVl c3Q6CglyZXEgPSBhbGxvY192aGRfcmVxdWVzdChzKTsKCWlmICghcmVxKSAKCQlyZXR1cm4gLUVC VVNZOwoKCXJlcS0+dHJlcSAgPSB0cmVxOwoJcmVxLT5mbGFncyA9IGZsYWdzOwoJcmVxLT5vcCAg ICA9IFZIRF9PUF9EQVRBX1JFQUQ7CglyZXEtPm5leHQgID0gTlVMTDsKCglhaW9fcmVhZChzLCBy ZXEsIG9mZnNldCk7CgoJREJHKFRMT0dfREJHLCAiJXM6IGxzZWM6IDB4JTA4IlBSSXg2NCIsIGJs azogMHglMDR4LCBzZWM6IDB4JTA0eCwgIgoJICAgICJucl9zZWNzOiAweCUwNHgsIG9mZnNldDog MHglMDgiUFJJeDY0IiwgZmxhZ3M6IDB4JTA4eCwgYnVmOiAlcFxuIiwKCSAgICBzLT52aGQuZmls ZSwgdHJlcS5zZWMsIGJsaywgc2VjLCB0cmVxLnNlY3MsIG9mZnNldCwgcmVxLT5mbGFncywKCSAg ICB0cmVxLmJ1Zik7CgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQKc2NoZWR1bGVfZGF0YV93cml0 ZShzdHJ1Y3QgdmhkX3N0YXRlICpzLCB0ZF9yZXF1ZXN0X3QgdHJlcSwgdmhkX2ZsYWdfdCBmbGFn cykKewoJaW50IGVycjsKCXVpbnQ2NF90IG9mZnNldDsKCXVpbnQzMl90IGJsayA9IDAsIHNlYyA9 IDA7CglzdHJ1Y3QgdmhkX2JpdG1hcCAgKmJtID0gTlVMTDsKCXN0cnVjdCB2aGRfcmVxdWVzdCAq cmVxOwoKCWlmIChzLT52aGQuZm9vdGVyLnR5cGUgPT0gSERfVFlQRV9GSVhFRCkgewoJCW9mZnNl dCA9IHZoZF9zZWN0b3JzX3RvX2J5dGVzKHRyZXEuc2VjKTsKCQlnb3RvIG1ha2VfcmVxdWVzdDsK CX0KCglibGsgICAgPSB0cmVxLnNlYyAvIHMtPnNwYjsKCXNlYyAgICA9IHRyZXEuc2VjICUgcy0+ c3BiOwoJb2Zmc2V0ID0gYmF0X2VudHJ5KHMsIGJsayk7CgoJaWYgKHRlc3RfdmhkX2ZsYWcoZmxh Z3MsIFZIRF9GTEFHX1JFUV9VUERBVEVfQkFUKSkgewoJCWlmICh0ZXN0X3ZoZF9mbGFnKHMtPmZs YWdzLCBWSERfRkxBR19PUEVOX1BSRUFMTE9DQVRFKSkKCQkJZXJyID0gYWxsb2NhdGVfYmxvY2so cywgYmxrKTsKCQllbHNlCgkJCWVyciA9IHVwZGF0ZV9iYXQocywgYmxrKTsKCgkJaWYgKGVycikK CQkJcmV0dXJuIGVycjsKCgkJb2Zmc2V0ID0gcy0+YmF0LnBid19vZmZzZXQ7Cgl9CgoJb2Zmc2V0 ICs9IHMtPmJtX3NlY3MgKyBzZWM7CglvZmZzZXQgID0gdmhkX3NlY3RvcnNfdG9fYnl0ZXMob2Zm c2V0KTsKCiBtYWtlX3JlcXVlc3Q6CglyZXEgPSBhbGxvY192aGRfcmVxdWVzdChzKTsKCWlmICgh cmVxKQoJCXJldHVybiAtRUJVU1k7CgoJcmVxLT50cmVxICA9IHRyZXE7CglyZXEtPmZsYWdzID0g ZmxhZ3M7CglyZXEtPm9wICAgID0gVkhEX09QX0RBVEFfV1JJVEU7CglyZXEtPm5leHQgID0gTlVM TDsKCglpZiAodGVzdF92aGRfZmxhZyhmbGFncywgVkhEX0ZMQUdfUkVRX1VQREFURV9CSVRNQVAp KSB7CgkJYm0gPSBnZXRfYml0bWFwKHMsIGJsayk7CgkJQVNTRVJUKGJtICYmIGJpdG1hcF92YWxp ZChibSkpOwoJCWxvY2tfYml0bWFwKGJtKTsKCgkJaWYgKGJtLT50eC5jbG9zZWQpIHsKCQkJYWRk X3RvX3RhaWwoJmJtLT5xdWV1ZSwgcmVxKTsKCQkJc2V0X3ZoZF9mbGFnKHJlcS0+ZmxhZ3MsIFZI RF9GTEFHX1JFUV9RVUVVRUQpOwoJCX0gZWxzZQoJCQlhZGRfdG9fdHJhbnNhY3Rpb24oJmJtLT50 eCwgcmVxKTsKCX0gZWxzZSBpZiAoc2VjID09IDAgJiYgCS8qIGZpcnN0IHNlY3RvciBpbnNpZGUg ZGF0YSBibG9jayAqLwoJCSAgIHMtPnZoZC5mb290ZXIudHlwZSAhPSBIRF9UWVBFX0ZJWEVEICYm IAoJCSAgIGJhdF9lbnRyeShzLCBibGspICE9IHMtPmZpcnN0X2RiICYmCgkJICAgdGVzdF9iYXRt YXAocywgYmxrKSkKCQlzY2hlZHVsZV9yZWR1bmRhbnRfYm1fd3JpdGUocywgYmxrKTsKCglhaW9f d3JpdGUocywgcmVxLCBvZmZzZXQpOwoKCURCRyhUTE9HX0RCRywgIiVzOiBsc2VjOiAweCUwOCJQ Ukl4NjQiLCBibGs6IDB4JTA0eCwgc2VjOiAweCUwNHgsICIKCSAgICAibnJfc2VjczogMHglMDR4 LCBvZmZzZXQ6IDB4JTA4IlBSSXg2NCIsIGZsYWdzOiAweCUwOHhcbiIsCgkgICAgcy0+dmhkLmZp bGUsIHRyZXEuc2VjLCBibGssIHNlYywgdHJlcS5zZWNzLCBvZmZzZXQsIHJlcS0+ZmxhZ3MpOwoK CXJldHVybiAwOwp9CgpzdGF0aWMgaW50IApzY2hlZHVsZV9iaXRtYXBfcmVhZChzdHJ1Y3Qgdmhk X3N0YXRlICpzLCB1aW50MzJfdCBibGspCnsKCWludCBlcnI7Cgl1aW50NjRfdCBvZmZzZXQ7Cglz dHJ1Y3QgdmhkX2JpdG1hcCAgKmJtOwoJc3RydWN0IHZoZF9yZXF1ZXN0ICpyZXEgPSBOVUxMOwoK CUFTU0VSVCh2aGRfdHlwZV9keW5hbWljKCZzLT52aGQpKTsKCglvZmZzZXQgPSBiYXRfZW50cnko cywgYmxrKTsKCglBU1NFUlQob2Zmc2V0ICE9IEREX0JMS19VTlVTRUQpOwoJQVNTRVJUKCFnZXRf Yml0bWFwKHMsIGJsaykpOwoKCW9mZnNldCA9IHZoZF9zZWN0b3JzX3RvX2J5dGVzKG9mZnNldCk7 CgoJZXJyID0gYWxsb2NfdmhkX2JpdG1hcChzLCAmYm0sIGJsayk7CglpZiAoZXJyKQoJCXJldHVy biBlcnI7CgoJcmVxID0gJmJtLT5yZXE7Cglpbml0X3ZoZF9yZXF1ZXN0KHMsIHJlcSk7CgoJcmVx LT50cmVxLnNlYyAgPSBibGsgKiBzLT5zcGI7CglyZXEtPnRyZXEuc2VjcyA9IHMtPmJtX3NlY3M7 CglyZXEtPnRyZXEuYnVmICA9IGJtLT5tYXA7CglyZXEtPnRyZXEuY2IgICA9IE5VTEw7CglyZXEt Pm9wICAgICAgICA9IFZIRF9PUF9CSVRNQVBfUkVBRDsKCXJlcS0+bmV4dCAgICAgID0gTlVMTDsK CglhaW9fcmVhZChzLCByZXEsIG9mZnNldCk7Cglsb2NrX2JpdG1hcChibSk7CglpbnN0YWxsX2Jp dG1hcChzLCBibSk7CglzZXRfdmhkX2ZsYWcoYm0tPnN0YXR1cywgVkhEX0ZMQUdfQk1fUkVBRF9Q RU5ESU5HKTsKCglEQkcoVExPR19EQkcsICIlczogbHNlYzogMHglMDgiUFJJeDY0IiwgYmxrOiAw eCUwNHgsIG5yX3NlY3M6IDB4JTA0eCwgIgoJICAgICJvZmZzZXQ6IDB4JTA4IlBSSXg2NCJcbiIs IHMtPnZoZC5maWxlLCByZXEtPnRyZXEuc2VjLCBibGssCgkgICAgcmVxLT50cmVxLnNlY3MsIG9m ZnNldCk7CgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyB2b2lkCnNjaGVkdWxlX2JpdG1hcF93cml0ZShz dHJ1Y3QgdmhkX3N0YXRlICpzLCB1aW50MzJfdCBibGspCnsKCXVpbnQ2NF90IG9mZnNldDsKCXN0 cnVjdCB2aGRfYml0bWFwICAqYm07CglzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcTsKCglibSAgICAg PSBnZXRfYml0bWFwKHMsIGJsayk7CglvZmZzZXQgPSBiYXRfZW50cnkocywgYmxrKTsKCglBU1NF UlQodmhkX3R5cGVfZHluYW1pYygmcy0+dmhkKSk7CglBU1NFUlQoYm0gJiYgYml0bWFwX3ZhbGlk KGJtKSAmJgoJICAgICAgICF0ZXN0X3ZoZF9mbGFnKGJtLT5zdGF0dXMsIFZIRF9GTEFHX0JNX1dS SVRFX1BFTkRJTkcpKTsKCglpZiAob2Zmc2V0ID09IEREX0JMS19VTlVTRUQpIHsKCQlBU1NFUlQo YmF0X2xvY2tlZChzKSAmJiBzLT5iYXQucGJ3X2JsayA9PSBibGspOwoJCW9mZnNldCA9IHMtPmJh dC5wYndfb2Zmc2V0OwoJfQoJCglvZmZzZXQgPSB2aGRfc2VjdG9yc190b19ieXRlcyhvZmZzZXQp OwoKCXJlcSA9ICZibS0+cmVxOwoJaW5pdF92aGRfcmVxdWVzdChzLCByZXEpOwoKCXJlcS0+dHJl cS5zZWMgID0gYmxrICogcy0+c3BiOwoJcmVxLT50cmVxLnNlY3MgPSBzLT5ibV9zZWNzOwoJcmVx LT50cmVxLmJ1ZiAgPSBibS0+c2hhZG93OwoJcmVxLT50cmVxLmNiICAgPSBOVUxMOwoJcmVxLT5v cCAgICAgICAgPSBWSERfT1BfQklUTUFQX1dSSVRFOwoJcmVxLT5uZXh0ICAgICAgPSBOVUxMOwoK CWFpb193cml0ZShzLCByZXEsIG9mZnNldCk7Cglsb2NrX2JpdG1hcChibSk7Cgl0b3VjaF9iaXRt YXAocywgYm0pOyAgICAgLyogYnVtcCBscnUgY291bnQgKi8KCXNldF92aGRfZmxhZyhibS0+c3Rh dHVzLCBWSERfRkxBR19CTV9XUklURV9QRU5ESU5HKTsKCglEQkcoVExPR19EQkcsICIlczogYmxr OiAweCUwNHgsIHNlYzogMHglMDgiUFJJeDY0IiwgbnJfc2VjczogMHglMDR4LCAiCgkgICAgIm9m ZnNldDogMHglIlBSSXg2NCJcbiIsIHMtPnZoZC5maWxlLCBibGssIHJlcS0+dHJlcS5zZWMsCgkg ICAgcmVxLT50cmVxLnNlY3MsIG9mZnNldCk7Cn0KCi8qIAogKiBxdWV1ZWQgcmVxdWVzdHMgd2ls bCBiZSBzdWJtaXR0ZWQgb25jZSB0aGUgYml0bWFwCiAqIGRlc2NyaWJpbmcgdGhlbSBpcyByZWFk IGFuZCB0aGUgcmVxdWVzdHMgYXJlIHZhbGlkYXRlZC4gCiAqLwpzdGF0aWMgaW50Cl9fdmhkX3F1 ZXVlX3JlcXVlc3Qoc3RydWN0IHZoZF9zdGF0ZSAqcywgdWludDhfdCBvcCwgdGRfcmVxdWVzdF90 IHRyZXEpCnsKCXVpbnQzMl90IGJsazsKCXN0cnVjdCB2aGRfYml0bWFwICAqYm07CglzdHJ1Y3Qg dmhkX3JlcXVlc3QgKnJlcTsKCglBU1NFUlQodmhkX3R5cGVfZHluYW1pYygmcy0+dmhkKSk7CgoJ YmxrID0gdHJlcS5zZWMgLyBzLT5zcGI7CglibSAgPSBnZXRfYml0bWFwKHMsIGJsayk7CgoJQVNT RVJUKGJtICYmIHRlc3RfdmhkX2ZsYWcoYm0tPnN0YXR1cywgVkhEX0ZMQUdfQk1fUkVBRF9QRU5E SU5HKSk7CgoJcmVxID0gYWxsb2NfdmhkX3JlcXVlc3Qocyk7CglpZiAoIXJlcSkKCQlyZXR1cm4g LUVCVVNZOwoKCXJlcS0+dHJlcSA9IHRyZXE7CglyZXEtPm9wICAgPSBvcDsKCXJlcS0+bmV4dCA9 IE5VTEw7CgoJYWRkX3RvX3RhaWwoJmJtLT53YWl0aW5nLCByZXEpOwoJbG9ja19iaXRtYXAoYm0p OwoKCURCRyhUTE9HX0RCRywgIiVzOiBsc2VjOiAweCUwOCJQUkl4NjQiLCBibGs6IDB4JTA0eCBu cl9zZWNzOiAweCUwNHgsICIKCSAgICAib3A6ICV1XG4iLCBzLT52aGQuZmlsZSwgdHJlcS5zZWMs IGJsaywgdHJlcS5zZWNzLCBvcCk7CgoJVFJBQ0Uocyk7CglyZXR1cm4gMDsKfQoKc3RhdGljIHZv aWQKdmhkX3F1ZXVlX3JlYWQodGRfZHJpdmVyX3QgKmRyaXZlciwgdGRfcmVxdWVzdF90IHRyZXEp CnsKCXN0cnVjdCB2aGRfc3RhdGUgKnMgPSAoc3RydWN0IHZoZF9zdGF0ZSAqKWRyaXZlci0+ZGF0 YTsKCglEQkcoVExPR19EQkcsICIlczogbHNlYzogMHglMDgiUFJJeDY0Iiwgc2VjczogMHglMDR4 IChzZWc6ICVkKVxuIiwKCSAgICBzLT52aGQuZmlsZSwgdHJlcS5zZWMsIHRyZXEuc2VjcywgdHJl cS5zaWR4KTsKCgl3aGlsZSAodHJlcS5zZWNzKSB7CgkJaW50IGVycjsKCQl0ZF9yZXF1ZXN0X3Qg Y2xvbmU7CgoJCWVyciAgID0gMDsKCQljbG9uZSA9IHRyZXE7CgoJCXN3aXRjaCAocmVhZF9iaXRt YXBfY2FjaGUocywgY2xvbmUuc2VjLCBWSERfT1BfREFUQV9SRUFEKSkgewoJCWNhc2UgLUVJTlZB TDoKCQkJZXJyID0gLUVJTlZBTDsKCQkJZ290byBmYWlsOwoKCQljYXNlIFZIRF9CTV9CQVRfQ0xF QVI6CgkJCWNsb25lLnNlY3MgPSBNSU4oY2xvbmUuc2Vjcywgcy0+c3BiIC0gKGNsb25lLnNlYyAl IHMtPnNwYikpOwoJCQl0ZF9mb3J3YXJkX3JlcXVlc3QoY2xvbmUpOwoJCQlicmVhazsKCgkJY2Fz ZSBWSERfQk1fQklUX0NMRUFSOgoJCQljbG9uZS5zZWNzID0gcmVhZF9iaXRtYXBfY2FjaGVfc3Bh bihzLCBjbG9uZS5zZWMsIGNsb25lLnNlY3MsIDApOwoJCQl0ZF9mb3J3YXJkX3JlcXVlc3QoY2xv bmUpOwoJCQlicmVhazsKCgkJY2FzZSBWSERfQk1fQklUX1NFVDoKCQkJY2xvbmUuc2VjcyA9IHJl YWRfYml0bWFwX2NhY2hlX3NwYW4ocywgY2xvbmUuc2VjLCBjbG9uZS5zZWNzLCAxKTsKCQkJZXJy ID0gc2NoZWR1bGVfZGF0YV9yZWFkKHMsIGNsb25lLCAwKTsKCQkJaWYgKGVycikKCQkJCWdvdG8g ZmFpbDsKCQkJYnJlYWs7CgoJCWNhc2UgVkhEX0JNX05PVF9DQUNIRUQ6CgkJCWVyciA9IHNjaGVk dWxlX2JpdG1hcF9yZWFkKHMsIGNsb25lLnNlYyAvIHMtPnNwYik7CgkJCWlmIChlcnIpCgkJCQln b3RvIGZhaWw7CgoJCQljbG9uZS5zZWNzID0gTUlOKGNsb25lLnNlY3MsIHMtPnNwYiAtIChjbG9u ZS5zZWMgJSBzLT5zcGIpKTsKCQkJZXJyID0gX192aGRfcXVldWVfcmVxdWVzdChzLCBWSERfT1Bf REFUQV9SRUFELCBjbG9uZSk7CgkJCWlmIChlcnIpCgkJCQlnb3RvIGZhaWw7CgkJCWJyZWFrOwoK CQljYXNlIFZIRF9CTV9SRUFEX1BFTkRJTkc6CgkJCWNsb25lLnNlY3MgPSBNSU4oY2xvbmUuc2Vj cywgcy0+c3BiIC0gKGNsb25lLnNlYyAlIHMtPnNwYikpOwoJCQllcnIgPSBfX3ZoZF9xdWV1ZV9y ZXF1ZXN0KHMsIFZIRF9PUF9EQVRBX1JFQUQsIGNsb25lKTsKCQkJaWYgKGVycikKCQkJCWdvdG8g ZmFpbDsKCQkJYnJlYWs7CgoJCWNhc2UgVkhEX0JNX0JBVF9MT0NLRUQ6CgkJZGVmYXVsdDoKCQkJ QVNTRVJUKDApOwoJCQlicmVhazsKCQl9CgoJCXRyZXEuc2VjICArPSBjbG9uZS5zZWNzOwoJCXRy ZXEuc2VjcyAtPSBjbG9uZS5zZWNzOwoJCXRyZXEuYnVmICArPSB2aGRfc2VjdG9yc190b19ieXRl cyhjbG9uZS5zZWNzKTsKCQljb250aW51ZTsKCglmYWlsOgoJCWNsb25lLnNlY3MgPSB0cmVxLnNl Y3M7CgkJdGRfY29tcGxldGVfcmVxdWVzdChjbG9uZSwgZXJyKTsKCQlicmVhazsKCX0KfQoKc3Rh dGljIHZvaWQKdmhkX3F1ZXVlX3dyaXRlKHRkX2RyaXZlcl90ICpkcml2ZXIsIHRkX3JlcXVlc3Rf dCB0cmVxKQp7CglzdHJ1Y3QgdmhkX3N0YXRlICpzID0gKHN0cnVjdCB2aGRfc3RhdGUgKilkcml2 ZXItPmRhdGE7CgoJREJHKFRMT0dfREJHLCAiJXM6IGxzZWM6IDB4JTA4IlBSSXg2NCIsIHNlY3M6 IDB4JTA0eCwgKHNlZzogJWQpXG4iLAoJICAgIHMtPnZoZC5maWxlLCB0cmVxLnNlYywgdHJlcS5z ZWNzLCB0cmVxLnNpZHgpOwoKCXdoaWxlICh0cmVxLnNlY3MpIHsKCQlpbnQgZXJyOwoJCXVpbnQ4 X3QgZmxhZ3M7CgkJdGRfcmVxdWVzdF90IGNsb25lOwoKCQllcnIgICA9IDA7CgkJZmxhZ3MgPSAw OwoJCWNsb25lID0gdHJlcTsKCgkJc3dpdGNoIChyZWFkX2JpdG1hcF9jYWNoZShzLCBjbG9uZS5z ZWMsIFZIRF9PUF9EQVRBX1dSSVRFKSkgewoJCWNhc2UgLUVJTlZBTDoKCQkJZXJyID0gLUVJTlZB TDsKCQkJZ290byBmYWlsOwoKCQljYXNlIFZIRF9CTV9CQVRfTE9DS0VEOgoJCQllcnIgPSAtRUJV U1k7CgkJCWdvdG8gZmFpbDsKCgkJY2FzZSBWSERfQk1fQkFUX0NMRUFSOgoJCQlmbGFncyAgICAg ID0gKFZIRF9GTEFHX1JFUV9VUERBVEVfQkFUIHwKCQkJCSAgICAgIFZIRF9GTEFHX1JFUV9VUERB VEVfQklUTUFQKTsKCQkJY2xvbmUuc2VjcyA9IE1JTihjbG9uZS5zZWNzLCBzLT5zcGIgLSAoY2xv bmUuc2VjICUgcy0+c3BiKSk7CgkJCWVyciAgICAgICAgPSBzY2hlZHVsZV9kYXRhX3dyaXRlKHMs IGNsb25lLCBmbGFncyk7CgkJCWlmIChlcnIpCgkJCQlnb3RvIGZhaWw7CgkJCWJyZWFrOwoKCQlj YXNlIFZIRF9CTV9CSVRfQ0xFQVI6CgkJCWZsYWdzICAgICAgPSBWSERfRkxBR19SRVFfVVBEQVRF X0JJVE1BUDsKCQkJY2xvbmUuc2VjcyA9IHJlYWRfYml0bWFwX2NhY2hlX3NwYW4ocywgY2xvbmUu c2VjLCBjbG9uZS5zZWNzLCAwKTsKCQkJZXJyICAgICAgICA9IHNjaGVkdWxlX2RhdGFfd3JpdGUo cywgY2xvbmUsIGZsYWdzKTsKCQkJaWYgKGVycikKCQkJCWdvdG8gZmFpbDsKCQkJYnJlYWs7CgoJ CWNhc2UgVkhEX0JNX0JJVF9TRVQ6CgkJCWNsb25lLnNlY3MgPSByZWFkX2JpdG1hcF9jYWNoZV9z cGFuKHMsIGNsb25lLnNlYywgY2xvbmUuc2VjcywgMSk7CgkJCWVyciA9IHNjaGVkdWxlX2RhdGFf d3JpdGUocywgY2xvbmUsIDApOwoJCQlpZiAoZXJyKQoJCQkJZ290byBmYWlsOwoJCQlicmVhazsK CgkJY2FzZSBWSERfQk1fTk9UX0NBQ0hFRDoKCQkJY2xvbmUuc2VjcyA9IE1JTihjbG9uZS5zZWNz LCBzLT5zcGIgLSAoY2xvbmUuc2VjICUgcy0+c3BiKSk7CgkJCWVyciA9IHNjaGVkdWxlX2JpdG1h cF9yZWFkKHMsIGNsb25lLnNlYyAvIHMtPnNwYik7CgkJCWlmIChlcnIpCgkJCQlnb3RvIGZhaWw7 CgoJCQllcnIgPSBfX3ZoZF9xdWV1ZV9yZXF1ZXN0KHMsIFZIRF9PUF9EQVRBX1dSSVRFLCBjbG9u ZSk7CgkJCWlmIChlcnIpCgkJCQlnb3RvIGZhaWw7CgkJCWJyZWFrOwoKCQljYXNlIFZIRF9CTV9S RUFEX1BFTkRJTkc6CgkJCWNsb25lLnNlY3MgPSBNSU4oY2xvbmUuc2Vjcywgcy0+c3BiIC0gKGNs b25lLnNlYyAlIHMtPnNwYikpOwoJCQllcnIgPSBfX3ZoZF9xdWV1ZV9yZXF1ZXN0KHMsIFZIRF9P UF9EQVRBX1dSSVRFLCBjbG9uZSk7CgkJCWlmIChlcnIpCgkJCQlnb3RvIGZhaWw7CgkJCWJyZWFr OwoKCQlkZWZhdWx0OgoJCQlBU1NFUlQoMCk7CgkJCWJyZWFrOwoJCX0KCgkJdHJlcS5zZWMgICs9 IGNsb25lLnNlY3M7CgkJdHJlcS5zZWNzIC09IGNsb25lLnNlY3M7CgkJdHJlcS5idWYgICs9IHZo ZF9zZWN0b3JzX3RvX2J5dGVzKGNsb25lLnNlY3MpOwoJCWNvbnRpbnVlOwoKCWZhaWw6CgkJY2xv bmUuc2VjcyA9IHRyZXEuc2VjczsKCQl0ZF9jb21wbGV0ZV9yZXF1ZXN0KGNsb25lLCBlcnIpOwoJ CWJyZWFrOwoJfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQKc2lnbmFsX2NvbXBsZXRpb24oc3RydWN0 IHZoZF9yZXF1ZXN0ICpsaXN0LCBpbnQgZXJyb3IpCnsKCXN0cnVjdCB2aGRfc3RhdGUgKnM7Cglz dHJ1Y3QgdmhkX3JlcXVlc3QgKnIsICpuZXh0OwoKCWlmICghbGlzdCkKCQlyZXR1cm47CgoJciA9 IGxpc3Q7CglzID0gbGlzdC0+c3RhdGU7CgoJd2hpbGUgKHIpIHsKCQlpbnQgZXJyOwoKCQllcnIg ID0gKGVycm9yID8gZXJyb3IgOiByLT5lcnJvcik7CgkJbmV4dCA9IHItPm5leHQ7CgkJdGRfY29t cGxldGVfcmVxdWVzdChyLT50cmVxLCBlcnIpOwoJCURCRyhUTE9HX0RCRywgImxzZWM6IDB4JTA4 IlBSSXg2NCIsIGJsazogMHglMDQiUFJJeDY0IiwgIgoJCSAgICAiZXJyOiAlZFxuIiwgci0+dHJl cS5zZWMsIHItPnRyZXEuc2VjIC8gcy0+c3BiLCBlcnIpOwoJCWZyZWVfdmhkX3JlcXVlc3Qocywg cik7CgkJciAgICA9IG5leHQ7CgoJCXMtPnJldHVybmVkKys7CgkJVFJBQ0Uocyk7Cgl9Cn0KCnN0 YXRpYyB2b2lkCnN0YXJ0X25ld19iaXRtYXBfdHJhbnNhY3Rpb24oc3RydWN0IHZoZF9zdGF0ZSAq cywgc3RydWN0IHZoZF9iaXRtYXAgKmJtKQp7CglzdHJ1Y3QgdmhkX3RyYW5zYWN0aW9uICp0eDsK CXN0cnVjdCB2aGRfcmVxdWVzdCAqciwgKm5leHQ7CglpbnQgaTsKCglpZiAoIWJtLT5xdWV1ZS5o ZWFkKQoJCXJldHVybjsKCglEQkcoVExPR19EQkcsICJibGs6IDB4JTA0eFxuIiwgYm0tPmJsayk7 CgoJciAgPSBibS0+cXVldWUuaGVhZDsKCXR4ID0gJmJtLT50eDsKCWNsZWFyX3JlcV9saXN0KCZi bS0+cXVldWUpOwoKCWlmIChyICYmIGJhdF9lbnRyeShzLCBibS0+YmxrKSA9PSBERF9CTEtfVU5V U0VEKQoJCXR4LT5lcnJvciA9IC1FSU87CgoJd2hpbGUgKHIpIHsKCQluZXh0ICAgID0gci0+bmV4 dDsKCQlyLT5uZXh0ID0gTlVMTDsKCQljbGVhcl92aGRfZmxhZyhyLT5mbGFncywgVkhEX0ZMQUdf UkVRX1FVRVVFRCk7CgoJCWFkZF90b190cmFuc2FjdGlvbih0eCwgcik7CgkJaWYgKHRlc3Rfdmhk X2ZsYWcoci0+ZmxhZ3MsIFZIRF9GTEFHX1JFUV9GSU5JU0hFRCkpIHsKCQkJdHgtPmZpbmlzaGVk Kys7CgkJCWlmICghci0+ZXJyb3IpIHsKCQkJCXVpbnQzMl90IHNlYyA9IHItPnRyZXEuc2VjICUg cy0+c3BiOwoJCQkJZm9yIChpID0gMDsgaSA8IHItPnRyZXEuc2VjczsgaSsrKQoJCQkJCXZoZF9i aXRtYXBfc2V0KCZzLT52aGQsCgkJCQkJCSAgICAgICBibS0+c2hhZG93LCBzZWMgKyBpKTsKCQkJ fQoJCX0KCQlyID0gbmV4dDsKCX0KCgkvKiBwZXJoYXBzIGFsbCB0aGUgcXVldWVkIHdyaXRlcyBh bHJlYWR5IGNvbXBsZXRlZD8gKi8KCWlmICh0eC0+c3RhcnRlZCAmJiB0cmFuc2FjdGlvbl9jb21w bGV0ZWQodHgpKQoJCWZpbmlzaF9kYXRhX3RyYW5zYWN0aW9uKHMsIGJtKTsKfQoKc3RhdGljIHZv aWQKZmluaXNoX2JhdF90cmFuc2FjdGlvbihzdHJ1Y3QgdmhkX3N0YXRlICpzLCBzdHJ1Y3Qgdmhk X2JpdG1hcCAqYm0pCnsKCXN0cnVjdCB2aGRfdHJhbnNhY3Rpb24gKnR4ID0gJmJtLT50eDsKCglp ZiAoIWJhdF9sb2NrZWQocykpCgkJcmV0dXJuOwoKCWlmIChzLT5iYXQucGJ3X2JsayAhPSBibS0+ YmxrKQoJCXJldHVybjsKCglpZiAoIXMtPmJhdC5yZXEuZXJyb3IpCgkJZ290byByZWxlYXNlOwoK CWlmICghdGVzdF92aGRfZmxhZyh0eC0+c3RhdHVzLCBWSERfRkxBR19UWF9MSVZFKSkKCQlnb3Rv IHJlbGVhc2U7CgoJdHgtPmNsb3NlZCA9IDE7CglyZXR1cm47CgogcmVsZWFzZToKCURCRyhUTE9H X0RCRywgImJsazogMHglMDR4XG4iLCBibS0+YmxrKTsKCXVubG9ja19iYXQocyk7Cglpbml0X2Jh dChzKTsKfQoKc3RhdGljIHZvaWQKZmluaXNoX2JpdG1hcF90cmFuc2FjdGlvbihzdHJ1Y3Qgdmhk X3N0YXRlICpzLAoJCQkgIHN0cnVjdCB2aGRfYml0bWFwICpibSwgaW50IGVycm9yKQp7CglpbnQg bWFwX3NpemU7CglzdHJ1Y3QgdmhkX3RyYW5zYWN0aW9uICp0eCA9ICZibS0+dHg7CgoJREJHKFRM T0dfREJHLCAiYmxrOiAweCUwNHgsIGVycjogJWRcbiIsIGJtLT5ibGssIGVycm9yKTsKCXR4LT5l cnJvciA9ICh0eC0+ZXJyb3IgPyB0eC0+ZXJyb3IgOiBlcnJvcik7CgltYXBfc2l6ZSAgPSB2aGRf c2VjdG9yc190b19ieXRlcyhzLT5ibV9zZWNzKTsKCglpZiAoIXRlc3RfdmhkX2ZsYWcocy0+Zmxh Z3MsIFZIRF9GTEFHX09QRU5fUFJFQUxMT0NBVEUpKSB7CgkJaWYgKHRlc3RfdmhkX2ZsYWcodHgt PnN0YXR1cywgVkhEX0ZMQUdfVFhfVVBEQVRFX0JBVCkpIHsKCQkJLyogc3RpbGwgd2FpdGluZyBm b3IgYmF0IHdyaXRlICovCgkJCUFTU0VSVChibS0+YmxrID09IHMtPmJhdC5wYndfYmxrKTsKCQkJ QVNTRVJUKHRlc3RfdmhkX2ZsYWcocy0+YmF0LnN0YXR1cywgCgkJCQkJICAgICBWSERfRkxBR19C QVRfV1JJVEVfU1RBUlRFRCkpOwoJCQlzLT5iYXQucmVxLnR4ID0gdHg7CgkJCXJldHVybjsKCQl9 Cgl9CgoJaWYgKHR4LT5lcnJvcikgewoJCS8qIHVuZG8gY2hhbmdlcyB0byBzaGFkb3cgKi8KCQlt ZW1jcHkoYm0tPnNoYWRvdywgYm0tPm1hcCwgbWFwX3NpemUpOwoJfSBlbHNlIHsKCQkvKiBjb21w bGV0ZSBhdG9taWMgd3JpdGUgKi8KCQltZW1jcHkoYm0tPm1hcCwgYm0tPnNoYWRvdywgbWFwX3Np emUpOwoJCWlmICghdGVzdF9iYXRtYXAocywgYm0tPmJsaykgJiYgYml0bWFwX2Z1bGwocywgYm0p KQoJCQlzZXRfYmF0bWFwKHMsIGJtLT5ibGspOwoJfQoKCS8qIHRyYW5zYWN0aW9uIGRvbmU7IHNp Z25hbCBjb21wbGV0aW9ucyAqLwoJc2lnbmFsX2NvbXBsZXRpb24odHgtPnJlcXVlc3RzLmhlYWQs IHR4LT5lcnJvcik7Cglpbml0X3R4KHR4KTsKCXN0YXJ0X25ld19iaXRtYXBfdHJhbnNhY3Rpb24o cywgYm0pOwoKCWlmICghYml0bWFwX2luX3VzZShibSkpCgkJdW5sb2NrX2JpdG1hcChibSk7CgoJ ZmluaXNoX2JhdF90cmFuc2FjdGlvbihzLCBibSk7Cn0KCnN0YXRpYyB2b2lkCmZpbmlzaF9kYXRh X3RyYW5zYWN0aW9uKHN0cnVjdCB2aGRfc3RhdGUgKnMsIHN0cnVjdCB2aGRfYml0bWFwICpibSkK ewoJc3RydWN0IHZoZF90cmFuc2FjdGlvbiAqdHggPSAmYm0tPnR4OwoKCURCRyhUTE9HX0RCRywg ImJsazogMHglMDR4XG4iLCBibS0+YmxrKTsKCgl0eC0+Y2xvc2VkID0gMTsKCglpZiAoIXR4LT5l cnJvcikKCQlyZXR1cm4gc2NoZWR1bGVfYml0bWFwX3dyaXRlKHMsIGJtLT5ibGspOwoKCXJldHVy biBmaW5pc2hfYml0bWFwX3RyYW5zYWN0aW9uKHMsIGJtLCAwKTsKfQoKc3RhdGljIHZvaWQKZmlu aXNoX2JhdF93cml0ZShzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcSkKewoJc3RydWN0IHZoZF9iaXRt YXAgKmJtOwoJc3RydWN0IHZoZF90cmFuc2FjdGlvbiAqdHg7CglzdHJ1Y3QgdmhkX3N0YXRlICpz ID0gcmVxLT5zdGF0ZTsKCglzLT5yZXR1cm5lZCsrOwoJVFJBQ0Uocyk7CgoJYm0gPSBnZXRfYml0 bWFwKHMsIHMtPmJhdC5wYndfYmxrKTsKCglEQkcoVExPR19EQkcsICJibGsgMHglMDR4LCBwYndv OiAweCUwOCJQUkl4NjQiLCBlcnIgJWRcbiIsCgkgICAgcy0+YmF0LnBid19ibGssIHMtPmJhdC5w Yndfb2Zmc2V0LCByZXEtPmVycm9yKTsKCUFTU0VSVChibSAmJiBiaXRtYXBfdmFsaWQoYm0pKTsK CUFTU0VSVChiYXRfbG9ja2VkKHMpICYmCgkgICAgICAgdGVzdF92aGRfZmxhZyhzLT5iYXQuc3Rh dHVzLCBWSERfRkxBR19CQVRfV1JJVEVfU1RBUlRFRCkpOwoKCXR4ID0gJmJtLT50eDsKCUFTU0VS VCh0ZXN0X3ZoZF9mbGFnKHR4LT5zdGF0dXMsIFZIRF9GTEFHX1RYX0xJVkUpKTsKCglpZiAoIXJl cS0+ZXJyb3IpIHsKCQliYXRfZW50cnkocywgcy0+YmF0LnBid19ibGspID0gcy0+YmF0LnBid19v ZmZzZXQ7CgkJcy0+bmV4dF9kYiA9IHMtPmJhdC5wYndfb2Zmc2V0ICsgcy0+c3BiICsgcy0+Ym1f c2VjczsKCX0gZWxzZQoJCXR4LT5lcnJvciA9IHJlcS0+ZXJyb3I7CgoJaWYgKHRlc3RfdmhkX2Zs YWcocy0+ZmxhZ3MsIFZIRF9GTEFHX09QRU5fUFJFQUxMT0NBVEUpKSB7CgkJdHgtPmZpbmlzaGVk Kys7CgkJcmVtb3ZlX2Zyb21fcmVxX2xpc3QoJnR4LT5yZXF1ZXN0cywgcmVxKTsKCQlpZiAodHJh bnNhY3Rpb25fY29tcGxldGVkKHR4KSkKCQkJZmluaXNoX2RhdGFfdHJhbnNhY3Rpb24ocywgYm0p OwoJfSBlbHNlIHsKCQljbGVhcl92aGRfZmxhZyh0eC0+c3RhdHVzLCBWSERfRkxBR19UWF9VUERB VEVfQkFUKTsKCQlpZiAocy0+YmF0LnJlcS50eCkKCQkJZmluaXNoX2JpdG1hcF90cmFuc2FjdGlv bihzLCBibSwgcmVxLT5lcnJvcik7Cgl9CgoJZmluaXNoX2JhdF90cmFuc2FjdGlvbihzLCBibSk7 Cn0KCnN0YXRpYyB2b2lkCmZpbmlzaF96ZXJvX2JtX3dyaXRlKHN0cnVjdCB2aGRfcmVxdWVzdCAq cmVxKQp7Cgl1aW50MzJfdCBibGs7CglzdHJ1Y3QgdmhkX2JpdG1hcCAqYm07CglzdHJ1Y3Qgdmhk X3RyYW5zYWN0aW9uICp0eCA9IHJlcS0+dHg7CglzdHJ1Y3QgdmhkX3N0YXRlICpzID0gcmVxLT5z dGF0ZTsKCglzLT5yZXR1cm5lZCsrOwoJVFJBQ0Uocyk7CgoJYmxrID0gcmVxLT50cmVxLnNlYyAv IHMtPnNwYjsKCWJtICA9IGdldF9iaXRtYXAocywgYmxrKTsKCglEQkcoVExPR19EQkcsICJibGs6 IDB4JTA0eFxuIiwgYmxrKTsKCUFTU0VSVChiYXRfbG9ja2VkKHMpKTsKCUFTU0VSVChzLT5iYXQu cGJ3X2JsayA9PSBibGspOwoJQVNTRVJUKGJtICYmIGJpdG1hcF92YWxpZChibSkgJiYgYml0bWFw X2xvY2tlZChibSkpOwoKCXR4LT5maW5pc2hlZCsrOwoJcmVtb3ZlX2Zyb21fcmVxX2xpc3QoJnR4 LT5yZXF1ZXN0cywgcmVxKTsKCglpZiAocmVxLT5lcnJvcikgewoJCXVubG9ja19iYXQocyk7CgkJ aW5pdF9iYXQocyk7CgkJdHgtPmVycm9yID0gcmVxLT5lcnJvcjsKCQljbGVhcl92aGRfZmxhZyh0 eC0+c3RhdHVzLCBWSERfRkxBR19UWF9VUERBVEVfQkFUKTsKCX0gZWxzZQoJCXNjaGVkdWxlX2Jh dF93cml0ZShzKTsKCglpZiAodHJhbnNhY3Rpb25fY29tcGxldGVkKHR4KSkKCQlmaW5pc2hfZGF0 YV90cmFuc2FjdGlvbihzLCBibSk7Cn0KCnN0YXRpYyBpbnQKZmluaXNoX3JlZHVuZGFudF9ibV93 cml0ZShzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcSkKewoJLyogdWludDMyX3QgYmxrOyAqLwoJc3Ry dWN0IHZoZF9zdGF0ZSAqcyA9IChzdHJ1Y3QgdmhkX3N0YXRlICopIHJlcS0+c3RhdGU7CgoJcy0+ cmV0dXJuZWQrKzsKCVRSQUNFKHMpOwkKCS8qIGJsayA9IHJlcS0+dHJlcS5zZWMgLyBzLT5zcGI7 CgkgICBEQkcoVExPR19EQkcsICJibGs6ICV1XG4iLCBibGspOyAqLwoKCWlmIChyZXEtPmVycm9y KSB7CgkJRVJSKHMsIHJlcS0+ZXJyb3IsICJsc2VjOiAweCUwOCJQUkl4NjQsIHJlcS0+dHJlcS5z ZWMpOwoJfQoJZnJlZV92aGRfcmVxdWVzdChzLCByZXEpOwoJcy0+ZGVidWdfZG9uZV9yZWR1bmRh bnRfd3JpdGVzKys7CglyZXR1cm4gMDsKfQoKCnN0YXRpYyB2b2lkCmZpbmlzaF9iaXRtYXBfcmVh ZChzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcSkKewoJdWludDMyX3QgYmxrOwoJc3RydWN0IHZoZF9i aXRtYXAgICpibTsKCXN0cnVjdCB2aGRfcmVxdWVzdCAqciwgKm5leHQ7CglzdHJ1Y3QgdmhkX3N0 YXRlICAgKnMgPSByZXEtPnN0YXRlOwoKCXMtPnJldHVybmVkKys7CglUUkFDRShzKTsKCglibGsg PSByZXEtPnRyZXEuc2VjIC8gcy0+c3BiOwoJYm0gID0gZ2V0X2JpdG1hcChzLCBibGspOwoKCURC RyhUTE9HX0RCRywgImJsazogMHglMDR4XG4iLCBibGspOwoJQVNTRVJUKGJtICYmIHRlc3Rfdmhk X2ZsYWcoYm0tPnN0YXR1cywgVkhEX0ZMQUdfQk1fUkVBRF9QRU5ESU5HKSk7CgoJciA9IGJtLT53 YWl0aW5nLmhlYWQ7CgljbGVhcl9yZXFfbGlzdCgmYm0tPndhaXRpbmcpOwoJY2xlYXJfdmhkX2Zs YWcoYm0tPnN0YXR1cywgVkhEX0ZMQUdfQk1fUkVBRF9QRU5ESU5HKTsKCglpZiAoIXJlcS0+ZXJy b3IpIHsKCQltZW1jcHkoYm0tPnNoYWRvdywgYm0tPm1hcCwgdmhkX3NlY3RvcnNfdG9fYnl0ZXMo cy0+Ym1fc2VjcykpOwoKCQl3aGlsZSAocikgewoJCQlzdHJ1Y3QgdmhkX3JlcXVlc3QgdG1wOwoK CQkJdG1wICA9ICpyOwoJCQluZXh0ID0gIHItPm5leHQ7CgkJCWZyZWVfdmhkX3JlcXVlc3Qocywg cik7CgoJCQlBU1NFUlQodG1wLm9wID09IFZIRF9PUF9EQVRBX1JFQUQgfHwgCgkJCSAgICAgICB0 bXAub3AgPT0gVkhEX09QX0RBVEFfV1JJVEUpOwoKCQkJaWYgKHRtcC5vcCA9PSBWSERfT1BfREFU QV9SRUFEKQoJCQkJdmhkX3F1ZXVlX3JlYWQocy0+ZHJpdmVyLCB0bXAudHJlcSk7CgkJCWVsc2Ug aWYgKHRtcC5vcCA9PSBWSERfT1BfREFUQV9XUklURSkKCQkJCXZoZF9xdWV1ZV93cml0ZShzLT5k cml2ZXIsIHRtcC50cmVxKTsKCgkJCXIgPSBuZXh0OwoJCX0KCX0gZWxzZSB7CgkJaW50IGVyciA9 IHJlcS0+ZXJyb3I7CgkJdW5sb2NrX2JpdG1hcChibSk7CgkJZnJlZV92aGRfYml0bWFwKHMsIGJt KTsKCQlyZXR1cm4gc2lnbmFsX2NvbXBsZXRpb24ociwgZXJyKTsKCX0KCglpZiAoIWJpdG1hcF9p bl91c2UoYm0pKQoJCXVubG9ja19iaXRtYXAoYm0pOwp9CgpzdGF0aWMgdm9pZApmaW5pc2hfYml0 bWFwX3dyaXRlKHN0cnVjdCB2aGRfcmVxdWVzdCAqcmVxKQp7Cgl1aW50MzJfdCBibGs7CglzdHJ1 Y3QgdmhkX2JpdG1hcCAgKmJtOwoJc3RydWN0IHZoZF90cmFuc2FjdGlvbiAqdHg7CglzdHJ1Y3Qg dmhkX3N0YXRlICpzID0gcmVxLT5zdGF0ZTsKCglzLT5yZXR1cm5lZCsrOwoJVFJBQ0Uocyk7CgoJ YmxrID0gcmVxLT50cmVxLnNlYyAvIHMtPnNwYjsKCWJtICA9IGdldF9iaXRtYXAocywgYmxrKTsK CXR4ICA9ICZibS0+dHg7CgoJREJHKFRMT0dfREJHLCAiYmxrOiAweCUwNHgsIHN0YXJ0ZWQ6ICVk LCBmaW5pc2hlZDogJWRcbiIsCgkgICAgYmxrLCB0eC0+c3RhcnRlZCwgdHgtPmZpbmlzaGVkKTsK CUFTU0VSVCh0eC0+Y2xvc2VkKTsKCUFTU0VSVChibSAmJiBiaXRtYXBfdmFsaWQoYm0pKTsKCUFT U0VSVCh0ZXN0X3ZoZF9mbGFnKGJtLT5zdGF0dXMsIFZIRF9GTEFHX0JNX1dSSVRFX1BFTkRJTkcp KTsKCgljbGVhcl92aGRfZmxhZyhibS0+c3RhdHVzLCBWSERfRkxBR19CTV9XUklURV9QRU5ESU5H KTsKCglmaW5pc2hfYml0bWFwX3RyYW5zYWN0aW9uKHMsIGJtLCByZXEtPmVycm9yKTsKfQoKc3Rh dGljIHZvaWQKZmluaXNoX2RhdGFfcmVhZChzdHJ1Y3QgdmhkX3JlcXVlc3QgKnJlcSkKewoJc3Ry dWN0IHZoZF9zdGF0ZSAqcyA9IHJlcS0+c3RhdGU7CgoJREJHKFRMT0dfREJHLCAibHNlYyAweCUw OCJQUkl4NjQiLCBibGs6IDB4JTA0IlBSSXg2NCJcbiIsIAoJICAgIHJlcS0+dHJlcS5zZWMsIHJl cS0+dHJlcS5zZWMgLyBzLT5zcGIpOwoJc2lnbmFsX2NvbXBsZXRpb24ocmVxLCAwKTsKfQoKc3Rh dGljIHZvaWQKZmluaXNoX2RhdGFfd3JpdGUoc3RydWN0IHZoZF9yZXF1ZXN0ICpyZXEpCnsKCWlu dCBpOwoJc3RydWN0IHZoZF90cmFuc2FjdGlvbiAqdHggPSByZXEtPnR4OwoJc3RydWN0IHZoZF9z dGF0ZSAqcyA9IChzdHJ1Y3QgdmhkX3N0YXRlICopcmVxLT5zdGF0ZTsKCglzZXRfdmhkX2ZsYWco cmVxLT5mbGFncywgVkhEX0ZMQUdfUkVRX0ZJTklTSEVEKTsKCglpZiAodHgpIHsKCQl1aW50MzJf dCBibGssIHNlYzsKCQlzdHJ1Y3QgdmhkX2JpdG1hcCAqYm07CgoJCWJsayA9IHJlcS0+dHJlcS5z ZWMgLyBzLT5zcGI7CgkJc2VjID0gcmVxLT50cmVxLnNlYyAlIHMtPnNwYjsKCQlibSAgPSBnZXRf Yml0bWFwKHMsIGJsayk7CgoJCUFTU0VSVChibSAmJiBiaXRtYXBfdmFsaWQoYm0pICYmIGJpdG1h cF9sb2NrZWQoYm0pKTsKCgkJdHgtPmZpbmlzaGVkKys7CgoJCURCRyhUTE9HX0RCRywgImxzZWM6 IDB4JTA4IlBSSXg2NCIsIGJsazogMHgwNCUiUFJJeDY0IiwgIgoJCSAgICAidHgtPnN0YXJ0ZWQ6 ICVkLCB0eC0+ZmluaXNoZWQ6ICVkXG4iLCByZXEtPnRyZXEuc2VjLAoJCSAgICByZXEtPnRyZXEu c2VjIC8gcy0+c3BiLCB0eC0+c3RhcnRlZCwgdHgtPmZpbmlzaGVkKTsKCgkJaWYgKCFyZXEtPmVy cm9yKQoJCQlmb3IgKGkgPSAwOyBpIDwgcmVxLT50cmVxLnNlY3M7IGkrKykKCQkJCXZoZF9iaXRt YXBfc2V0KCZzLT52aGQsIGJtLT5zaGFkb3csICBzZWMgKyBpKTsKCgkJaWYgKHRyYW5zYWN0aW9u X2NvbXBsZXRlZCh0eCkpCgkJCWZpbmlzaF9kYXRhX3RyYW5zYWN0aW9uKHMsIGJtKTsKCgl9IGVs c2UgaWYgKCF0ZXN0X3ZoZF9mbGFnKHJlcS0+ZmxhZ3MsIFZIRF9GTEFHX1JFUV9RVUVVRUQpKSB7 CgkJQVNTRVJUKCFyZXEtPm5leHQpOwoJCURCRyhUTE9HX0RCRywgImxzZWM6IDB4JTA4IlBSSXg2 NCIsIGJsazogMHglMDQiUFJJeDY0IlxuIiwgCgkJICAgIHJlcS0+dHJlcS5zZWMsIHJlcS0+dHJl cS5zZWMgLyBzLT5zcGIpOwoJCXNpZ25hbF9jb21wbGV0aW9uKHJlcSwgMCk7Cgl9Cn0KCnZvaWQK dmhkX2NvbXBsZXRlKHZvaWQgKmFyZywgc3RydWN0IHRpb2NiICp0aW9jYiwgaW50IGVycikKewoJ c3RydWN0IHZoZF9yZXF1ZXN0ICpyZXEgPSAoc3RydWN0IHZoZF9yZXF1ZXN0ICopYXJnOwoJc3Ry dWN0IHZoZF9zdGF0ZSAqcyA9IHJlcS0+c3RhdGU7CglzdHJ1Y3QgaW9jYiAqaW8gPSAmdGlvY2It PmlvY2I7CgoJcy0+Y29tcGxldGVkKys7CglUUkFDRShzKTsKCglyZXEtPmVycm9yID0gZXJyOwoK CWlmIChyZXEtPmVycm9yKQoJCUVSUihzLCByZXEtPmVycm9yLCAiJXM6IG9wOiAldSwgbHNlYzog JSJQUkl1NjQiLCBzZWNzOiAldSwgIgoJCSAgICAibmJ5dGVzOiAlbHUsIGJsazogJSJQUkl1NjQi LCBibGtfb2Zmc2V0OiAldSIsCgkJICAgIHMtPnZoZC5maWxlLCByZXEtPm9wLCByZXEtPnRyZXEu c2VjLCByZXEtPnRyZXEuc2VjcywKCQkgICAgaW8tPnUuYy5uYnl0ZXMsIHJlcS0+dHJlcS5zZWMg LyBzLT5zcGIsCgkJICAgIGJhdF9lbnRyeShzLCByZXEtPnRyZXEuc2VjIC8gcy0+c3BiKSk7CgoJ c3dpdGNoIChyZXEtPm9wKSB7CgljYXNlIFZIRF9PUF9EQVRBX1JFQUQ6CgkJZmluaXNoX2RhdGFf cmVhZChyZXEpOwoJCWJyZWFrOwoKCWNhc2UgVkhEX09QX0RBVEFfV1JJVEU6CgkJZmluaXNoX2Rh dGFfd3JpdGUocmVxKTsKCQlicmVhazsKCgljYXNlIFZIRF9PUF9CSVRNQVBfUkVBRDoKCQlmaW5p c2hfYml0bWFwX3JlYWQocmVxKTsKCQlicmVhazsKCgljYXNlIFZIRF9PUF9CSVRNQVBfV1JJVEU6 CgkJZmluaXNoX2JpdG1hcF93cml0ZShyZXEpOwoJCWJyZWFrOwoKCWNhc2UgVkhEX09QX1pFUk9f Qk1fV1JJVEU6CgkJZmluaXNoX3plcm9fYm1fd3JpdGUocmVxKTsKCQlicmVhazsKCgljYXNlIFZI RF9PUF9SRURVTkRBTlRfQk1fV1JJVEU6CgkJZmluaXNoX3JlZHVuZGFudF9ibV93cml0ZShyZXEp OwoJCWJyZWFrOwoKCWNhc2UgVkhEX09QX0JBVF9XUklURToKCQlmaW5pc2hfYmF0X3dyaXRlKHJl cSk7CgkJYnJlYWs7CgoJZGVmYXVsdDoKCQlBU1NFUlQoMCk7CgkJYnJlYWs7Cgl9Cn0KCnZvaWQg CnZoZF9kZWJ1Zyh0ZF9kcml2ZXJfdCAqZHJpdmVyKQp7CglpbnQgaTsKCXN0cnVjdCB2aGRfc3Rh dGUgKnMgPSAoc3RydWN0IHZoZF9zdGF0ZSAqKWRyaXZlci0+ZGF0YTsKCglEQkcoVExPR19XQVJO LCAiJXM6IFFVRVVFRDogMHglMDgiUFJJeDY0IiwgQ09NUExFVEVEOiAweCUwOCJQUkl4NjQiLCAi CgkgICAgIlJFVFVSTkVEOiAweCUwOCJQUkl4NjQiXG4iLCBzLT52aGQuZmlsZSwgcy0+cXVldWVk LCBzLT5jb21wbGV0ZWQsCgkgICAgcy0+cmV0dXJuZWQpOwoJREJHKFRMT0dfV0FSTiwgIldSSVRF UzogMHglMDgiUFJJeDY0IiwgQVZHX1dSSVRFX1NJWkU6ICVmXG4iLAoJICAgIHMtPndyaXRlcywg KHMtPndyaXRlcyA/ICgoZmxvYXQpcy0+d3JpdGVfc2l6ZSAvIHMtPndyaXRlcykgOiAwLjApKTsK CURCRyhUTE9HX1dBUk4sICJSRUFEUzogMHglMDgiUFJJeDY0IiwgQVZHX1JFQURfU0laRTogJWZc biIsCgkgICAgcy0+cmVhZHMsIChzLT5yZWFkcyA/ICgoZmxvYXQpcy0+cmVhZF9zaXplIC8gcy0+ cmVhZHMpIDogMC4wKSk7CgoJREJHKFRMT0dfV0FSTiwgIkFMTE9DQVRFRCBSRVFVRVNUUzogKCV1 IHRvdGFsKVxuIiwgVkhEX1JFUVNfREFUQSk7Cglmb3IgKGkgPSAwOyBpIDwgVkhEX1JFUVNfREFU QTsgaSsrKSB7CgkJc3RydWN0IHZoZF9yZXF1ZXN0ICpyID0gJnMtPnZyZXFfbGlzdFtpXTsKCQl0 ZF9yZXF1ZXN0X3QgKnQgICAgICAgPSAmci0+dHJlcTsKCQljb25zdCBjaGFyICp2bmFtZSAgICAg PSB0LT52cmVxID8gdC0+dnJlcS0+bmFtZTogTlVMTDsKCQlpZiAodC0+c2VjcykKCQkJREJHKFRM T0dfV0FSTiwgIiVkOiB2cmVxOiAlcy4lZCwgZXJyOiAlZCwgb3A6ICVkLCIKCQkJICAgICIgbHNl YzogMHglMDgiUFJJeDY0IiwgZmxhZ3M6ICVkLCB0aGlzOiAlcCwgIgoJCQkgICAgIm5leHQ6ICVw LCB0eDogJXBcbiIsIGksIHZuYW1lLCB0LT5zaWR4LCByLT5lcnJvciwgci0+b3AsCgkJCSAgICB0 LT5zZWMsIHItPmZsYWdzLCByLCByLT5uZXh0LCByLT50eCk7Cgl9CgoJREJHKFRMT0dfV0FSTiwg IkJJVE1BUCBDQUNIRTpcbiIpOwoJZm9yIChpID0gMDsgaSA8IFZIRF9DQUNIRV9TSVpFOyBpKysp IHsKCQlpbnQgcW51bSA9IDAsIHdudW0gPSAwLCBybnVtID0gMDsKCQlzdHJ1Y3QgdmhkX2JpdG1h cCAqYm0gPSBzLT5iaXRtYXBbaV07CgkJc3RydWN0IHZoZF90cmFuc2FjdGlvbiAqdHg7CgkJc3Ry dWN0IHZoZF9yZXF1ZXN0ICpyOwoKCQlpZiAoIWJtKQoJCQljb250aW51ZTsKCgkJdHggPSAmYm0t PnR4OwoJCXIgPSBibS0+cXVldWUuaGVhZDsKCQl3aGlsZSAocikgewoJCQlxbnVtKys7CgkJCXIg PSByLT5uZXh0OwoJCX0KCgkJciA9IGJtLT53YWl0aW5nLmhlYWQ7CgkJd2hpbGUgKHIpIHsKCQkJ d251bSsrOwoJCQlyID0gci0+bmV4dDsKCQl9CgoJCXIgPSB0eC0+cmVxdWVzdHMuaGVhZDsKCQl3 aGlsZSAocikgewoJCQlybnVtKys7CgkJCXIgPSByLT5uZXh0OwoJCX0KCgkJREJHKFRMT0dfV0FS TiwgIiVkOiBibGs6IDB4JTA0eCwgc3RhdHVzOiAweCUwOHgsIHE6ICVwLCBxbnVtOiAlZCwgdzog JXAsICIKCQkgICAgIndudW06ICVkLCBsb2NrZWQ6ICVkLCBpbiB1c2U6ICVkLCB0eDogJXAsIHR4 X2Vycm9yOiAlZCwgIgoJCSAgICAic3RhcnRlZDogJWQsIGZpbmlzaGVkOiAlZCwgc3RhdHVzOiAl dSwgcmVxczogJXAsIG5yZXFzOiAlZFxuIiwKCQkgICAgaSwgYm0tPmJsaywgYm0tPnN0YXR1cywg Ym0tPnF1ZXVlLmhlYWQsIHFudW0sIGJtLT53YWl0aW5nLmhlYWQsCgkJICAgIHdudW0sIGJpdG1h cF9sb2NrZWQoYm0pLCBiaXRtYXBfaW5fdXNlKGJtKSwgdHgsIHR4LT5lcnJvciwKCQkgICAgdHgt PnN0YXJ0ZWQsIHR4LT5maW5pc2hlZCwgdHgtPnN0YXR1cywgdHgtPnJlcXVlc3RzLmhlYWQsIHJu dW0pOwoJfQoKCURCRyhUTE9HX1dBUk4sICJCQVQ6IHN0YXR1czogMHglMDh4LCBwYndfYmxrOiAw eCUwNHgsICIKCSAgICAicGJ3X29mZjogMHglMDgiUFJJeDY0IiwgdHg6ICVwXG4iLCBzLT5iYXQu c3RhdHVzLCBzLT5iYXQucGJ3X2JsaywKCSAgICBzLT5iYXQucGJ3X29mZnNldCwgcy0+YmF0LnJl cS50eCk7CgovKgoJZm9yIChpID0gMDsgaSA8IHMtPmhkci5tYXhfYmF0X3NpemU7IGkrKykKCQlE UFJJTlRGKCIlZDogJXVcbiIsIGksIHMtPmJhdC5iYXRbaV0pOwoqLwp9CgpzdHJ1Y3QgdGFwX2Rp c2sgdGFwZGlza192aGQgPSB7CgkuZGlza190eXBlICAgICAgICAgID0gInRhcGRpc2tfdmhkIiwK CS5mbGFncyAgICAgICAgICAgICAgPSAwLAoJLnByaXZhdGVfZGF0YV9zaXplICA9IHNpemVvZihz dHJ1Y3QgdmhkX3N0YXRlKSwKCS50ZF9vcGVuICAgICAgICAgICAgPSBfdmhkX29wZW4sCgkudGRf Y2xvc2UgICAgICAgICAgID0gX3ZoZF9jbG9zZSwKCS50ZF9xdWV1ZV9yZWFkICAgICAgPSB2aGRf cXVldWVfcmVhZCwKCS50ZF9xdWV1ZV93cml0ZSAgICAgPSB2aGRfcXVldWVfd3JpdGUsCgkudGRf Z2V0X3BhcmVudF9pZCAgID0gdmhkX2dldF9wYXJlbnRfaWQsCgkudGRfdmFsaWRhdGVfcGFyZW50 ID0gdmhkX3ZhbGlkYXRlX3BhcmVudCwKCS50ZF9kZWJ1ZyAgICAgICAgICAgPSB2aGRfZGVidWcs Cn07Cg== --089e0149c47651c660051b8c376e Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --089e0149c47651c660051b8c376e-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: Help Date: Fri, 24 Jul 2015 08:46:06 +0100 Message-ID: <20150724074606.GB6750@zion.uk.xensource.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Akash Talole Cc: wei.liu2@citrix.com, "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org On Thu, Jul 23, 2015 at 08:35:20PM +0530, Akash Talole wrote: > Hello, > > Issue in tapdisk-vbd.c > > Why td_queue_write(parent,treq); is called in static void > __tapdisk_vbd_reissue_td_request(td_vbd_t *vbd,td_image_t *image, > td_request_t treq) function as we can't write in parent vhd because it is > read only. > > I have attached the code of tapdisk-vbd.c and block-vhd.c. > There is no need to attach the code. We all have that in our repository. :-) > And please tell me about how to write into child vhd after reading from > parent vhd in block-vhd.c in case of VHD_BM_BIT_CLEAR in function > vhd_queue_read(). > Please describe what your end goal is so that developers with knowledge in that area can help you better. http://wiki.xenproject.org/wiki/Asking_Developer_Questions Wei. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Safa Hamza Subject: help Date: Thu, 10 Mar 2016 21:04:22 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0433831107601210914==" Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.84) (envelope-from ) id 1ae6os-0006qv-6w for xen-devel@lists.xenproject.org; Thu, 10 Mar 2016 20:04:26 +0000 Received: by mail-io0-f180.google.com with SMTP id n190so119809943iof.0 for ; Thu, 10 Mar 2016 12:04:23 -0800 (PST) List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org --===============0433831107601210914== Content-Type: multipart/alternative; boundary=001a113f8a48100ce5052db752c9 --001a113f8a48100ce5052db752c9 Content-Type: text/plain; charset=UTF-8 hello i'm trying to run xen on omap5 following this http://wiki.xenproject.org/wiki/Xen_ARM_with_Virtualization_Extensions/OMAP5432_uEVM the execution stops at this point ********************************************************************************************** U-Boot SPL 2013.10-rc2 (Mar 08 2016 - 14:23:51) OMAP5432 ES2.0 SPL: Please implement spl_start_uboot() for your board SPL: Direct Linux boot not active! reading u-boot.img reading u-boot.img U-Boot 2013.10-rc2 (Mar 08 2016 - 14:23:51) CPU : OMAP5432 ES2.0 Board: OMAP5432 uEVM I2C: ready DRAM: 2 GiB MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 Using default environment Net: No ethernet found. Hit any key to stop autoboot: 0 mmc0 is current device reading boot.scr ** Unable to read file boot.scr ** reading uEnv.txt ** Unable to read file uEnv.txt ** ** File not found /boot/zImage ** U-Boot# setenv dtb_addr_r 0x825f0000 U-Boot# setenv xen_addr_r 0x90000000 U-Boot# setenv kernel_addr_r 0xa0000000 U-Boot# setenv xen_bootargs 'sync_console console=dtuart dtuart=serial2' U-Boot# setenv dom0_bootargs 'console=hvc0,115200n8 earlyprintk=xen debug ignore_loglevel root=/dev/mmcblk0p2 rw rootwait fixrtc' U-Boot# fatload mmc 0:1 $dtb_addr_r omap5-uevm.dtb reading omap5-uevm.dtb 44836 bytes read in 7 ms (6.1 MiB/s) U-Boot# fatload mmc 0:1 $xen_addr_r xen-uImage reading xen-uImage 787372 bytes read in 43 ms (17.5 MiB/s) U-Boot# fatload mmc 0:1 $kernel_addr_r zImage reading zImage 4284248 bytes read in 213 ms (19.2 MiB/s) U-Boot# fdt addr $dtb_addr_r U-Boot# fdt resize U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\" U-Boot# fdt resize U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\" U-Boot# fdt resize U-Boot# fdt mknode /chosen modules U-Boot# fdt set /chosen/modules '#address-cells' <1> U-Boot# fdt set /chosen/modules '#size-cells' <1> U-Boot# fdt mknode /chosen/modules module@0 U-Boot# fdt set /chosen/modules/module@0 compatible xen,linux-zimage xen,multiboot-module U-Boot# fdt set /chosen/modules/module@0 reg <$kernel_addr_r 0xa00000> U-Boot# bootm $xen_addr_r - $dtb_addr_r ## Booting kernel from Legacy Image at 90000000 ... Image Name: Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 787308 Bytes = 768.9 KiB Load Address: 80200000 Entry Point: 80200000 Verifying Checksum ... OK ## Flattened Device Tree blob at 825f0000 Booting using the fdt blob at 0x825f0000 Loading Kernel Image ... OK reserving fdt memory region: addr=825f0000 size=c000 Using Device Tree in place at 825f0000, end 825fefff Starting kernel ... - UART enabled - - CPU 00000000 booting - - Xen starting in Hyp mode - - Zero BSS - - Setting up control registers - - Turning on paging - - Ready - (XEN) Checking for initrd in /chosen (XEN) RAM: 0000000080000000 - 00000000feffffff (XEN) (XEN) MODULE[0]: 00000000825f0000 - 00000000825fc000 Device Tree (XEN) MODULE[1]: 00000000a0000000 - 00000000a0a00000 Kernel (XEN) RESVD[0]: 00000000825f0000 - 00000000825fc000 (XEN) (XEN) Command line: sync_console console=dtuart dtuart=serial2 (XEN) Placing Xen at 0x00000000fee00000-0x00000000ff000000 (XEN) Update BOOTMOD_XEN from 0000000080200000-0000000080305701 => 00000000fee00000-00000000fef05701 (XEN) Xen heap: 00000000fa000000-00000000fe000000 (16384 pages) (XEN) Dom heap: 503808 pages (XEN) Domain heap initialised (XEN) Platform: TI OMAP5 (XEN) Looking for dtuart at "serial2", options "" Xen 4.7-unstable (XEN) Xen version 4.7-unstable (root@) (arm-linux-gnueabihf-gcc (Linaro GCC 2014.11) 4.9.3 20141031 (prerelease)) debug=y Tue Mar 1 15:02:30 CET 2016 (XEN) Latest ChangeSet: Sun Feb 28 16:03:51 2016 -0500 git:42391c6 (XEN) Console output is synchronous. (XEN) Processor: 412fc0f2: "ARM Limited", variant: 0x2, part 0xc0f, rev 0x2 (XEN) 32-bit Execution: (XEN) Processor Features: 00001131:00011011 (XEN) Instruction Sets: AArch32 A32 Thumb Thumb-2 ThumbEE Jazelle (XEN) Extensions: GenericTimer Security (XEN) Debug Features: 02010555 (XEN) Auxiliary Features: 00000000 (XEN) Memory Model Features: 10201105 20000000 01240000 02102211 (XEN) ISA Features: 02101110 13112111 21232041 11112131 10011142 00000000 (XEN) Set AuxCoreBoot1 to 00000000fee0004c (0020004c) (XEN) Set AuxCoreBoot0 to 0x20 (XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 6144 KHz (XEN) GICv2: WARNING: The GICC size is too small: 0x1000 expected 0x2000 (XEN) GICv2 initialization: (XEN) gic_dist_addr=0000000048211000 (XEN) gic_cpu_addr=0000000048212000 (XEN) gic_hyp_addr=0000000048214000 (XEN) gic_vcpu_addr=0000000048216000 (XEN) gic_maintenance_irq=25 (XEN) GICv2: 192 lines, 2 cpus, secure (IID 0000043b). (XEN) Using scheduler: SMP Credit Scheduler (credit) (XEN) Allocated console ring of 16 KiB. (XEN) VFP implementer 0x41 architecture 4 part 0x30 variant 0xf rev 0x0 (XEN) Bringing up CPU1 - CPU 00000001 booting - - Xen starting in Hyp mode - - Setting up control registers - - Turning on paging - - Ready - (XEN) CPU 1 booted. (XEN) Brought up 2 CPUs (XEN) P2M: 40-bit IPA (XEN) P2M: 3 levels with order-1 root, VTCR 0x80003558 (XEN) I/O virtualisation disabled (XEN) *** LOADING DOMAIN 0 *** (XEN) Loading kernel from boot module @ 00000000a0000000 (XEN) Allocating 1:1 mappings totalling 128MB for dom0: (XEN) BANK[0] 0x000000a8000000-0x000000b0000000 (128MB) (XEN) Grant table range: 0x000000fee00000-0x000000fee63000 (XEN) Loading zImage from 00000000a0000000 to 00000000afa00000-00000000afe15f58 (XEN) Allocating PPI 16 for event channel interrupt (XEN) Loading dom0 DTB to 0x00000000af800000-0x00000000af80aece (XEN) Scrubbing Free RAM on 1 nodes using 2 CPUs (XEN) ........done. (XEN) Initial low memory virq threshold set at 0x4000 pages. (XEN) Std. Loglevel: All (XEN) Guest Loglevel: All (XEN) ********************************************** (XEN) ******* WARNING: CONSOLE OUTPUT IS SYNCHRONOUS (XEN) ******* This option is intended to aid debugging of Xen by ensuring (XEN) ******* that all output is synchronously delivered on the serial line. (XEN) ******* However it can introduce SIGNIFICANT latencies and affect (XEN) ******* timekeeping. It is NOT recommended for production use! (XEN) ********************************************** (XEN) 3... 2... 1... (XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen) (XEN) Freed 280kB init memory. ********************************************************************************************** nothing appears after (XEN) Freed 280kB init memory. .. i don't know where is the problem . i'll appreciate your help thanks --001a113f8a48100ce5052db752c9 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
hello
i'm trying to run xen on omap5 following=
this=C2=A0http://wik= i.xenproject.org/wiki/Xen_ARM_with_Virtualization_Extensions/OMAP5432_uEVM<= /a>

the execution stops at this point=C2=A0

*****************************= *****************************************************************
U-Boot SPL 201= 3.10-rc2 (Mar 08 2016 - 14:23:51)
OMAP5432 ES2.0
SPL: Please implement spl_start_uboot() for your boa= rd
SPL: Direct= Linux boot not active!
reading u-boot.img
reading u-boot.img


U-Boot 2013.10-rc2 (Mar 08 2016 - 14:23:51)

CPU =C2=A0: OMAP5432 ES2.0
Board: OMAP5432 uEVM
I2C: =C2=A0 ready
DRAM: =C2=A02 GiB<= /div>
MMC: =C2=A0 OMAP SD/M= MC: 0, OMAP SD/MMC: 1
Using default environment

Net: =C2=A0 No ethernet found.
Hit any key to stop autoboot: =C2=A00<= /div>
mmc0 is current devic= e
reading boot= .scr
** Unable= to read file boot.scr **
reading uEnv.txt
** Unable to read file uEnv.txt **
** File not found /boot/zImage **
U-Boot# setenv dtb_= addr_r 0x825f0000
U-Boot# setenv xen_addr_r 0x90000000
U-Boot# setenv kernel_addr_r 0xa0000000
U-Boot# setenv xen_boo= targs 'sync_console console=3Ddtuart dtuart=3Dserial2'
=
U-Boot# setenv dom0_bootar= gs 'console=3Dhvc0,115200n8 earlyprintk=3Dxen debug ignore_loglevel roo= t=3D/dev/mmcblk0p2 rw rootwait fixrtc'
U-Boot# fatload mmc 0:1 $dtb_addr_r omap5-uevm= .dtb
reading o= map5-uevm.dtb
= 44836 bytes read in 7 ms (6.1 MiB/s)
U-Boot# fatload mmc 0:1 $xen_addr_r xen-uImage
reading xen-uImage<= /span>
787372 bytes r= ead in 43 ms (17.5 MiB/s)
U-Boot# fatload mmc 0:1 $kernel_addr_r zImage
reading zImage
4284248 bytes read in 213 ms (= 19.2 MiB/s)
U-= Boot# fdt addr $dtb_addr_r
U-Boot# fdt resize
U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_boot= args\"
U-= Boot# fdt resize
U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"
U-Boot# fdt res= ize
U-Boot# fd= t mknode /chosen modules
U-Boot# fdt set /chosen/modules '#address-cells' <1&g= t;
U-Boot# fdt= set /chosen/modules '#size-cells' <1>
U-Boot# fdt mknode /chosen/modules m= odule@0
U-Boot= # fdt set /chosen/modules/module@0 compatible xen,linux-zimage xen,multiboo= t-module
U-Boo= t# fdt set /chosen/modules/module@0 reg <$kernel_addr_r 0xa00000>
U-Boot# bootm $xe= n_addr_r - $dtb_addr_r
## Booting kernel from Legacy Image at 90000000 ...
=C2=A0 =C2=A0Image Name:
=C2=A0 =C2=A0Imag= e Type: =C2=A0 ARM Linux Kernel Image (uncompressed)
=C2=A0 =C2=A0Data Size: =C2=A0 =C2= =A0787308 Bytes =3D 768.9 KiB
=C2=A0 =C2=A0Load Address: 80200000
=C2=A0 =C2=A0Entry Point: =C2=A08020= 0000
=C2=A0 = =C2=A0Verifying Checksum ... OK
## Flattened Device Tree blob at 825f0000
=C2=A0 =C2=A0Booting using th= e fdt blob at 0x825f0000
=C2=A0 =C2=A0Loading Kernel Image ... OK
=C2=A0 =C2=A0reserving fdt memory re= gion: addr=3D825f0000 size=3Dc000
=C2=A0 =C2=A0Using Device Tree in place at 825f0000, = end 825fefff
<= br>
Starting k= ernel ...

=
- UART enable= d -
- CPU 0000= 0000 booting -
- Xen starting in Hyp mode -
- Zero BSS -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) Checking for initrd in /chosen=
(XEN) RAM: 00= 00000080000000 - 00000000feffffff
(XEN)
(XEN) MODULE[0]: 00000000825f0000 - 00000000825fc000 Device T= ree
(XEN) MODU= LE[1]: 00000000a0000000 - 00000000a0a00000 Kernel
(XEN) =C2=A0RESVD[0]: 00000000825f0000 = - 00000000825fc000
(XEN)
(XE= N) Command line: sync_console console=3Ddtuart dtuart=3Dserial2
(XEN) Placing Xen at 0x00= 000000fee00000-0x00000000ff000000
(XEN) Update BOOTMOD_XEN from 0000000080200000-000000= 0080305701 =3D> 00000000fee00000-00000000fef05701
(XEN) Xen heap: 00000000fa000000-000= 00000fe000000 (16384 pages)
(XEN) Dom heap: 503808 pages
(XEN) Domain heap initialised
(XEN) Platform: TI OMAP5
(XEN) Looking for d= tuart at "serial2", options ""
=C2=A0Xen 4.7-unstable
<= div style=3D"">(XEN) Xen version 4.7-unsta= ble (root@) (arm-linux-gnueabihf-gcc (Linaro GCC 2014.11) 4.9.3 20141031 (p= rerelease)) debug=3Dy Tue Mar =C2=A01 15:02:30 CET 2016
(XEN) Latest ChangeSet: Sun Feb 2= 8 16:03:51 2016 -0500 git:42391c6
(XEN) Console output is synchronous.
(XEN) Processor: 412fc0f2: &qu= ot;ARM Limited", variant: 0x2, part 0xc0f, rev 0x2
(XEN) 32-bit Execution:
(XEN) =C2=A0 Processor = Features: 00001131:00011011
(XEN) =C2=A0 =C2=A0 Instruction Sets: AArch32 A32 Thumb Thumb= -2 ThumbEE Jazelle
(XEN) =C2=A0 =C2=A0 Extensions: GenericTimer Security
(XEN) =C2=A0 Debug Features: 0= 2010555
(XEN) = =C2=A0 Auxiliary Features: 00000000
(XEN) =C2=A0 Memory Model Features: 10201105 20000000= 01240000 02102211
(XEN) =C2=A0ISA Features: 02101110 13112111 21232041 11112131 10011142= 00000000
(XEN= ) Set AuxCoreBoot1 to 00000000fee0004c (0020004c)
(XEN) Set AuxCoreBoot0 to 0x20
(XEN) Generic Timer IR= Q: phys=3D30 hyp=3D26 virt=3D27 Freq: 6144 KHz
= (XEN) GICv2: WARNING: The GICC size is too= small: 0x1000 expected 0x2000
(XEN) GICv2 initialization:
(XEN) =C2=A0 =C2=A0 =C2=A0 =C2=A0 gic_dist_a= ddr=3D0000000048211000
(XEN) =C2=A0 =C2=A0 =C2=A0 =C2=A0 gic_cpu_addr=3D0000000048212000<= /span>
(XEN) =C2=A0 = =C2=A0 =C2=A0 =C2=A0 gic_hyp_addr=3D0000000048214000
(XEN) =C2=A0 =C2=A0 =C2=A0 =C2=A0 gi= c_vcpu_addr=3D0000000048216000
(XEN) =C2=A0 =C2=A0 =C2=A0 =C2=A0 gic_maintenance_irq=3D25=
(XEN) GICv2: = 192 lines, 2 cpus, secure (IID 0000043b).
(XEN) Using scheduler: SMP Credit Scheduler (cr= edit)
(XEN) Al= located console ring of 16 KiB.
(XEN) VFP implementer 0x41 architecture 4 part 0x30 varia= nt 0xf rev 0x0
(XEN) Bringing up CPU1
- CPU 00000001 booting -
- Xen starting in Hyp mode -
- Setting up control registers -
- Turning on pagi= ng -
- Ready -=
(XEN) CPU 1 b= ooted.
(XEN) B= rought up 2 CPUs
(XEN) P2M: 40-bit IPA
(XEN) P2M: 3 levels with order-1 root, VTCR 0x80003558
(XEN) I/O virtualisatio= n disabled
(XE= N) *** LOADING DOMAIN 0 ***
(XEN) Loading kernel from boot module @ 00000000a0000000
(XEN) Allocating 1= :1 mappings totalling 128MB for dom0:
(XEN) BANK[0] 0x000000a8000000-0x000000b0000000 (12= 8MB)
(XEN) Gra= nt table range: 0x000000fee00000-0x000000fee63000
(XEN) Loading zImage from 00000000a0000= 000 to 00000000afa00000-00000000afe15f58
(XEN) Allocating PPI 16 for event channel interr= upt
(XEN) Load= ing dom0 DTB to 0x00000000af800000-0x00000000af80aece
(XEN) Scrubbing Free RAM on 1 nodes= using 2 CPUs
= (XEN) ........done.
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Std. Loglevel: A= ll
(XEN) Guest= Loglevel: All
(XEN) **********************************************
(XEN) ******* WARNING: CONSOLE OUTP= UT IS SYNCHRONOUS
(XEN) ******* This option is intended to aid debugging of Xen by ensuri= ng
(XEN) *****= ** that all output is synchronously delivered on the serial line.
(XEN) ******* However i= t can introduce SIGNIFICANT latencies and affect
(XEN) ******* timekeeping. It is NOT rec= ommended for production use!
(XEN) **********************************************<= /div>
(XEN) 3... 2... 1...<= /span>
(XEN) *** Seri= al input -> DOM0 (type 'CTRL-a' three times to switch input to X= en)
(XEN) Free= d 280kB init memory.

=
****************= ***************************************************************************= ***
nothing appears after =C2=A0 =C2=A0(XEN) Freed 280kB init memory. =C2=A0.. i don't know where = is the problem

<= span style=3D"font-size:12.8px">. i'll appreciate your help
thanks
--001a113f8a48100ce5052db752c9-- --===============0433831107601210914== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK --===============0433831107601210914==-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: help Date: Fri, 11 Mar 2016 09:49:54 -0500 Message-ID: <20160311144954.GF5133@char.us.oracle.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.84) (envelope-from ) id 1aeOO8-0004Pr-Gt for xen-devel@lists.xenproject.org; Fri, 11 Mar 2016 14:50:00 +0000 Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Safa Hamza Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBNYXIgMTAsIDIwMTYgYXQgMDk6MDQ6MjJQTSArMDEwMCwgU2FmYSBIYW16YSB3cm90 ZToKPiBoZWxsbwo+IGknbSB0cnlpbmcgdG8gcnVuIHhlbiBvbiBvbWFwNSBmb2xsb3dpbmcKPiB0 aGlzCj4gaHR0cDovL3dpa2kueGVucHJvamVjdC5vcmcvd2lraS9YZW5fQVJNX3dpdGhfVmlydHVh bGl6YXRpb25fRXh0ZW5zaW9ucy9PTUFQNTQzMl91RVZNCj4gCj4gdGhlIGV4ZWN1dGlvbiBzdG9w cyBhdCB0aGlzIHBvaW50Cj4gCj4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Kgo+IFUtQm9vdCBTUEwgMjAxMy4xMC1yYzIgKE1hciAwOCAyMDE2IC0gMTQ6MjM6NTEpCj4gT01B UDU0MzIgRVMyLjAKPiBTUEw6IFBsZWFzZSBpbXBsZW1lbnQgc3BsX3N0YXJ0X3Vib290KCkgZm9y IHlvdXIgYm9hcmQKPiBTUEw6IERpcmVjdCBMaW51eCBib290IG5vdCBhY3RpdmUhCj4gcmVhZGlu ZyB1LWJvb3QuaW1nCj4gcmVhZGluZyB1LWJvb3QuaW1nCj4gCj4gCj4gVS1Cb290IDIwMTMuMTAt cmMyIChNYXIgMDggMjAxNiAtIDE0OjIzOjUxKQo+IAo+IENQVSAgOiBPTUFQNTQzMiBFUzIuMAo+ IEJvYXJkOiBPTUFQNTQzMiB1RVZNCj4gSTJDOiAgIHJlYWR5Cj4gRFJBTTogIDIgR2lCCj4gTU1D OiAgIE9NQVAgU0QvTU1DOiAwLCBPTUFQIFNEL01NQzogMQo+IFVzaW5nIGRlZmF1bHQgZW52aXJv bm1lbnQKPiAKPiBOZXQ6ICAgTm8gZXRoZXJuZXQgZm91bmQuCj4gSGl0IGFueSBrZXkgdG8gc3Rv cCBhdXRvYm9vdDogIDAKPiBtbWMwIGlzIGN1cnJlbnQgZGV2aWNlCj4gcmVhZGluZyBib290LnNj cgo+ICoqIFVuYWJsZSB0byByZWFkIGZpbGUgYm9vdC5zY3IgKioKPiByZWFkaW5nIHVFbnYudHh0 Cj4gKiogVW5hYmxlIHRvIHJlYWQgZmlsZSB1RW52LnR4dCAqKgo+ICoqIEZpbGUgbm90IGZvdW5k IC9ib290L3pJbWFnZSAqKgo+IFUtQm9vdCMgc2V0ZW52IGR0Yl9hZGRyX3IgMHg4MjVmMDAwMAo+ IFUtQm9vdCMgc2V0ZW52IHhlbl9hZGRyX3IgMHg5MDAwMDAwMAo+IFUtQm9vdCMgc2V0ZW52IGtl cm5lbF9hZGRyX3IgMHhhMDAwMDAwMAo+IFUtQm9vdCMgc2V0ZW52IHhlbl9ib290YXJncyAnc3lu Y19jb25zb2xlIGNvbnNvbGU9ZHR1YXJ0IGR0dWFydD1zZXJpYWwyJwo+IFUtQm9vdCMgc2V0ZW52 IGRvbTBfYm9vdGFyZ3MgJ2NvbnNvbGU9aHZjMCwxMTUyMDBuOCBlYXJseXByaW50az14ZW4gZGVi dWcKClRoYXQgZG9lcyBub3QgbG9vayByaWdodC4KCmNvbnNvbGU9aHZjMCBlYXJseXByaW50az14 ZW4gZGVidWcgCgppcyBtb3JlIHJpZ2h0LgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: help Date: Fri, 11 Mar 2016 10:20:27 -0500 Message-ID: <20160311152027.GA18608@char.us.oracle.com> References: <20160311144954.GF5133@char.us.oracle.com> <20160311152001.GJ5133@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20160311152001.GJ5133@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Safa Hamza , xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org T24gRnJpLCBNYXIgMTEsIDIwMTYgYXQgMTA6MjA6MDFBTSAtMDUwMCwgS29ucmFkIFJ6ZXN6dXRl ayBXaWxrIHdyb3RlOgo+IE9uIEZyaSwgTWFyIDExLCAyMDE2IGF0IDA0OjA1OjU4UE0gKzAxMDAs IFNhZmEgSGFtemEgd3JvdGU6CgpBbmQgcGxlYXNlIGRvIG5vdCBkcm9wIFhlbi1kZXZlbC4gQWRk aW5nIGl0IGJhY2sgb24uCgo+ID4gaSBkaWQgbGlrZSB1IHNhaWQgYnV0IG5vdGhpbmcgY2hhbmdl IC4uCj4gPiAKPiAKPiBObyB5b3UgZGlkbid0LiBTZWUgYmVsb3c6Cj4gPiBVLUJvb3QjIHNldGVu diBkb20wX2Jvb3RhcmdzICdjb25zb2xlPWh2YzAsMTE1MjAwbjggZWFybHlwcmludGs9eGVuIGRl YnVnJwo+IAo+IFlvdSBzdGlsbCBoYXZlIDExNTIwMG44CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: help Date: Fri, 11 Mar 2016 11:02:26 -0500 Message-ID: <20160311160226.GA29991@char.us.oracle.com> References: <20160311144954.GF5133@char.us.oracle.com> <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Safa Hamza , xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org T24gRnJpLCBNYXIgMTEsIDIwMTYgYXQgMDQ6NDc6NDdQTSArMDEwMCwgU2FmYSBIYW16YSB3cm90 ZToKPiBub3cgaSBkaWQganVzdCBsaWtlIHUgc2FpZCAuLi4gIGEgbmV3IGVycm9yIGFwcGVhcnMK CkFkZGluZyBYRW4tZGV2ZWwgYmFjay4gUGxlYXNlIHJlcGx5IGFsbC4KCj4gKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCj4gVS1Cb290IyBmZHQgYWRkciAkZHRiX2FkZHJfcgo+IFUtQm9vdCMgZmR0IHJl c2l6ZQo+IFUtQm9vdCMgZmR0IHNldCAvY2hvc2VuIHhlbix4ZW4tYm9vdGFyZ3MgXCIkeGVuX2Jv b3RhcmdzXCIKPiBVLUJvb3QjIGZkdCByZXNpemUKPiBVLUJvb3QjIGZkdCBzZXQgL2Nob3NlbiB4 ZW4sZG9tMC1ib290YXJncyBcIiRkb20wX2Jvb3RhcmdzXCIKPiBVLUJvb3QjIGZkdCByZXNpemUK PiBVLUJvb3QjIGZkdCBta25vZGUgL2Nob3NlbiBtb2R1bGVzCj4gVS1Cb290IyBmZHQgc2V0IC9j aG9zZW4vbW9kdWxlcyAnI2FkZHJlc3MtY2VsbHMnIDwxPgo+IFUtQm9vdCMgZmR0IHNldCAvY2hv c2VuL21vZHVsZXMgJyNzaXplLWNlbGxzJyA8MT4KPiBVLUJvb3QjIGZkdCBta25vZGUgL2Nob3Nl bi9tb2R1bGVzIG1vZHVsZUAwCj4gbGliZmR0IGZkdF9hZGRfc3Vibm9kZSgpOiBGRFRfRVJSX05P U1BBQ0UKPiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiBidXQgd2hlbiBpIHdyb3RlICBmZHQgcmVz aXplIGJlZm9yZSAgZmR0IG1rbm9kZSAvY2hvc2VuL21vZHVsZXMgbW9kdWxlQDAKPiB0aGlzIGVy cm9yIGRpc2FwcGVhciBidXQgc3RpbGwgdGhlIGV4ZWN1dGlvbiBzdG9wcyBhcyBpIG1lbnRpb25l ZCBiZWZvcmUKPiAKPiBPbiBGcmksIE1hciAxMSwgMjAxNiBhdCA0OjIwIFBNLCBLb25yYWQgUnpl c3p1dGVrIFdpbGsgPAo+IGtvbnJhZC53aWxrQG9yYWNsZS5jb20+IHdyb3RlOgo+IAo+ID4gT24g RnJpLCBNYXIgMTEsIDIwMTYgYXQgMTA6MjA6MDFBTSAtMDUwMCwgS29ucmFkIFJ6ZXN6dXRlayBX aWxrIHdyb3RlOgo+ID4gPiBPbiBGcmksIE1hciAxMSwgMjAxNiBhdCAwNDowNTo1OFBNICswMTAw LCBTYWZhIEhhbXphIHdyb3RlOgo+ID4KPiA+IEFuZCBwbGVhc2UgZG8gbm90IGRyb3AgWGVuLWRl dmVsLiBBZGRpbmcgaXQgYmFjayBvbi4KPiA+Cj4gPiA+ID4gaSBkaWQgbGlrZSB1IHNhaWQgYnV0 IG5vdGhpbmcgY2hhbmdlIC4uCj4gPiA+ID4KPiA+ID4KPiA+ID4gTm8geW91IGRpZG4ndC4gU2Vl IGJlbG93Ogo+ID4gPiA+IFUtQm9vdCMgc2V0ZW52IGRvbTBfYm9vdGFyZ3MgJ2NvbnNvbGU9aHZj MCwxMTUyMDBuOCBlYXJseXByaW50az14ZW4KPiA+IGRlYnVnJwo+ID4gPgo+ID4gPiBZb3Ugc3Rp bGwgaGF2ZSAxMTUyMDBuOAo+ID4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Safa Hamza Subject: Re: help Date: Fri, 11 Mar 2016 17:08:53 +0100 Message-ID: References: <20160311144954.GF5133@char.us.oracle.com> <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> <20160311160226.GA29991@char.us.oracle.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6311356340469136947==" Return-path: In-Reply-To: <20160311160226.GA29991@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --===============6311356340469136947== Content-Type: multipart/alternative; boundary=047d7bdca22abd7bb4052dc82502 --047d7bdca22abd7bb4052dc82502 Content-Type: text/plain; charset=UTF-8 i did just like u said ... a new error appears ****************************************************************************** U-Boot# fdt addr $dtb_addr_r U-Boot# fdt resize U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\" U-Boot# fdt resize U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\" U-Boot# fdt resize U-Boot# fdt mknode /chosen modules U-Boot# fdt set /chosen/modules '#address-cells' <1> U-Boot# fdt set /chosen/modules '#size-cells' <1> U-Boot# fdt mknode /chosen/modules module@0 libfdt fdt_add_subnode(): FDT_ERR_NOSPACE ****************************************************************************** but when i wrote fdt resize before fdt mknode /chosen/modules module@0 this error disappear but still the execution stops as i mentioned before On Fri, Mar 11, 2016 at 5:02 PM, Konrad Rzeszutek Wilk < konrad.wilk@oracle.com> wrote: > On Fri, Mar 11, 2016 at 04:47:47PM +0100, Safa Hamza wrote: > > now i did just like u said ... a new error appears > > Adding XEn-devel back. Please reply all. > > > > ****************************************************************************** > > U-Boot# fdt addr $dtb_addr_r > > U-Boot# fdt resize > > U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\" > > U-Boot# fdt resize > > U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\" > > U-Boot# fdt resize > > U-Boot# fdt mknode /chosen modules > > U-Boot# fdt set /chosen/modules '#address-cells' <1> > > U-Boot# fdt set /chosen/modules '#size-cells' <1> > > U-Boot# fdt mknode /chosen/modules module@0 > > libfdt fdt_add_subnode(): FDT_ERR_NOSPACE > > > ****************************************************************************** > > but when i wrote fdt resize before fdt mknode /chosen/modules module@0 > > this error disappear but still the execution stops as i mentioned before > > > > On Fri, Mar 11, 2016 at 4:20 PM, Konrad Rzeszutek Wilk < > > konrad.wilk@oracle.com> wrote: > > > > > On Fri, Mar 11, 2016 at 10:20:01AM -0500, Konrad Rzeszutek Wilk wrote: > > > > On Fri, Mar 11, 2016 at 04:05:58PM +0100, Safa Hamza wrote: > > > > > > And please do not drop Xen-devel. Adding it back on. > > > > > > > > i did like u said but nothing change .. > > > > > > > > > > > > > No you didn't. See below: > > > > > U-Boot# setenv dom0_bootargs 'console=hvc0,115200n8 earlyprintk=xen > > > debug' > > > > > > > > You still have 115200n8 > > > > --047d7bdca22abd7bb4052dc82502 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
i did just lik= e u said ... =C2=A0a new error appears
********************************= **********************************************
<= div>U-Boot# fdt addr $dtb_addr_r
U-Boot# fdt resize
U-B= oot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\"
U-Boot# fdt resize
U-Boot# fdt set /chosen xen,dom0-bootargs \&q= uot;$dom0_bootargs\"
U-Boot# fdt resize
U-Boot# fd= t mknode /chosen modules
U-Boot# fdt set /chosen/modules '#ad= dress-cells' <1>
U-Boot# fdt set /chosen/modules '#= size-cells' <1>
U-Boot# fdt mknode /chosen/modules modu= le@0
libfdt fdt_add_subnode(): FDT_ERR_NOSPACE
=
****************************************************************= **************
but when i wrote =C2=A0fdt resize before =C2=A0fdt= mknode /chosen/modules module@0 this error=C2=A0disappear but still the ex= ecution stops=C2=A0as i mentioned before=C2=A0

On Fri, Mar 11, 2016 at 5:02 PM, Konrad Rzeszutek Wilk <konrad.w= ilk@oracle.com> wrote:
On Fri, Mar 11, 2016 at 04:47:47PM +0100, Safa Hamza wrote: > now i did just like u said ...=C2=A0 a new error appears

Adding XEn-devel back. Please reply all.

> **********************************************************************= ********
> U-Boot# fdt addr $dtb_addr_r
> U-Boot# fdt resize
> U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\" > U-Boot# fdt resize
> U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"=
> U-Boot# fdt resize
> U-Boot# fdt mknode /chosen modules
> U-Boot# fdt set /chosen/modules '#address-cells' <1>
> U-Boot# fdt set /chosen/modules '#size-cells' <1>
> U-Boot# fdt mknode /chosen/modules module@0
> libfdt fdt_add_subnode(): FDT_ERR_NOSPACE
> **********************************************************************= ********
> but when i wrote=C2=A0 fdt resize before=C2=A0 fdt mknode /chosen/modu= les module@0
> this error disappear but still the execution stops as i mentioned befo= re
>
> On Fri, Mar 11, 2016 at 4:20 PM, Konrad Rzeszutek Wilk <
> konrad.wilk@oracle.com&g= t; wrote:
>
> > On Fri, Mar 11, 2016 at 10:20:01AM -0500, Konrad Rzeszutek Wilk w= rote:
> > > On Fri, Mar 11, 2016 at 04:05:58PM +0100, Safa Hamza wrote:<= br> > >
> > And please do not drop Xen-devel. Adding it back on.
> >
> > > > i did like u said but nothing change ..
> > > >
> > >
> > > No you didn't. See below:
> > > > U-Boot# setenv dom0_bootargs 'console=3Dhvc0,115200= n8 earlyprintk=3Dxen
> > debug'
> > >
> > > You still have 115200n8
> >

--047d7bdca22abd7bb4052dc82502-- --===============6311356340469136947== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK --===============6311356340469136947==-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: help Date: Fri, 11 Mar 2016 16:09:13 +0000 Message-ID: <20160311160912.GF2589@citrix.com> References: <20160311144954.GF5133@char.us.oracle.com> <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> <20160311160226.GA29991@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20160311160226.GA29991@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: xen-devel@lists.xensource.com, Wei Liu , Safa Hamza List-Id: xen-devel@lists.xenproject.org T24gRnJpLCBNYXIgMTEsIDIwMTYgYXQgMTE6MDI6MjZBTSAtMDUwMCwgS29ucmFkIFJ6ZXN6dXRl ayBXaWxrIHdyb3RlOgo+IE9uIEZyaSwgTWFyIDExLCAyMDE2IGF0IDA0OjQ3OjQ3UE0gKzAxMDAs IFNhZmEgSGFtemEgd3JvdGU6Cj4gPiBub3cgaSBkaWQganVzdCBsaWtlIHUgc2FpZCAuLi4gIGEg bmV3IGVycm9yIGFwcGVhcnMKPiAKPiBBZGRpbmcgWEVuLWRldmVsIGJhY2suIFBsZWFzZSByZXBs eSBhbGwuCj4gCj4gPiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiA+IFUtQm9vdCMgZmR0IGFkZHIg JGR0Yl9hZGRyX3IKPiA+IFUtQm9vdCMgZmR0IHJlc2l6ZQo+ID4gVS1Cb290IyBmZHQgc2V0IC9j aG9zZW4geGVuLHhlbi1ib290YXJncyBcIiR4ZW5fYm9vdGFyZ3NcIgo+ID4gVS1Cb290IyBmZHQg cmVzaXplCj4gPiBVLUJvb3QjIGZkdCBzZXQgL2Nob3NlbiB4ZW4sZG9tMC1ib290YXJncyBcIiRk b20wX2Jvb3RhcmdzXCIKPiA+IFUtQm9vdCMgZmR0IHJlc2l6ZQo+ID4gVS1Cb290IyBmZHQgbWtu b2RlIC9jaG9zZW4gbW9kdWxlcwo+ID4gVS1Cb290IyBmZHQgc2V0IC9jaG9zZW4vbW9kdWxlcyAn I2FkZHJlc3MtY2VsbHMnIDwxPgo+ID4gVS1Cb290IyBmZHQgc2V0IC9jaG9zZW4vbW9kdWxlcyAn I3NpemUtY2VsbHMnIDwxPgo+ID4gVS1Cb290IyBmZHQgbWtub2RlIC9jaG9zZW4vbW9kdWxlcyBt b2R1bGVAMAo+ID4gbGliZmR0IGZkdF9hZGRfc3Vibm9kZSgpOiBGRFRfRVJSX05PU1BBQ0UKPiA+ ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgo+ID4gYnV0IHdoZW4gaSB3cm90ZSAgZmR0IHJlc2l6ZSBi ZWZvcmUgIGZkdCBta25vZGUgL2Nob3Nlbi9tb2R1bGVzIG1vZHVsZUAwCj4gPiB0aGlzIGVycm9y IGRpc2FwcGVhciBidXQgc3RpbGwgdGhlIGV4ZWN1dGlvbiBzdG9wcyBhcyBpIG1lbnRpb25lZCBi ZWZvcmUKPiA+IAoKVGhlIG1lc3NhZ2Ugc2VlbXMgcXVpdGUgc3RyYWlnaHQtZm9yd2FyZCB0byBt ZSAtLSBvbmUgb2YgdGhlIGxpYmZkdApmdW5jdGlvbiBjYWxsIGZhaWxlZCB3aXRoIHNvbWUgZXJy b3IuCgpJJ20gYWZyYWlkIHlvdSBuZWVkIHRvIGRvIHNvbWUgbWFudWFsIGRlYnVnZ2luZyB0byBm aWd1cmUgb3V0IHdoYXQgd2VudAp3cm9uZy4KCldlaS4KCj4gPiBPbiBGcmksIE1hciAxMSwgMjAx NiBhdCA0OjIwIFBNLCBLb25yYWQgUnplc3p1dGVrIFdpbGsgPAo+ID4ga29ucmFkLndpbGtAb3Jh Y2xlLmNvbT4gd3JvdGU6Cj4gPiAKPiA+ID4gT24gRnJpLCBNYXIgMTEsIDIwMTYgYXQgMTA6MjA6 MDFBTSAtMDUwMCwgS29ucmFkIFJ6ZXN6dXRlayBXaWxrIHdyb3RlOgo+ID4gPiA+IE9uIEZyaSwg TWFyIDExLCAyMDE2IGF0IDA0OjA1OjU4UE0gKzAxMDAsIFNhZmEgSGFtemEgd3JvdGU6Cj4gPiA+ Cj4gPiA+IEFuZCBwbGVhc2UgZG8gbm90IGRyb3AgWGVuLWRldmVsLiBBZGRpbmcgaXQgYmFjayBv bi4KPiA+ID4KPiA+ID4gPiA+IGkgZGlkIGxpa2UgdSBzYWlkIGJ1dCBub3RoaW5nIGNoYW5nZSAu Lgo+ID4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+IE5vIHlvdSBkaWRuJ3QuIFNlZSBiZWxvdzoKPiA+ ID4gPiA+IFUtQm9vdCMgc2V0ZW52IGRvbTBfYm9vdGFyZ3MgJ2NvbnNvbGU9aHZjMCwxMTUyMDBu OCBlYXJseXByaW50az14ZW4KPiA+ID4gZGVidWcnCj4gPiA+ID4KPiA+ID4gPiBZb3Ugc3RpbGwg aGF2ZSAxMTUyMDBuOAo+ID4gPgo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCj4gaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: help Date: Fri, 11 Mar 2016 17:16:24 +0000 Message-ID: <20160311171624.GZ31271@citrix.com> References: <20160311144954.GF5133@char.us.oracle.com> <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> <20160311160226.GA29991@char.us.oracle.com> <20160311160912.GF2589@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.84) (envelope-from ) id 1aeQfs-0002NL-0g for xen-devel@lists.xenproject.org; Fri, 11 Mar 2016 17:16:28 +0000 Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Safa Hamza Cc: Xen-devel , Wei Liu List-Id: xen-devel@lists.xenproject.org QWRkIGJhY2sgeGVuLWRldmVsCgpPbiBGcmksIE1hciAxMSwgMjAxNiBhdCAwNToyMzoyMlBNICsw MTAwLCBTYWZhIEhhbXphIHdyb3RlOgo+IG9rIC4uIGNhbiB1IHRlbGwgbWUgaG93IGNvbXBpbGUg eGVuIHdpdGggZGVidWcgc3ltYm9scyAhISAgaSBoYXZlIHhlbi1zeW1zCj4gYWZ0ZXIgY29tcGls aW5nIHhlbiB3aXRoICJtYWtlIGRpc3QteGVuIFhFTl9UQVJHRVRfQVJDSD1hcm0zMgo+IENST1NT X0NPTVBJTEU9YXJtLWxpbnV4LWdudWVhYmloZi0gQ09ORklHX0VBUkxZX1BSSU5USz1vbWFwNTQz MiIgICBpcyB0aGlzCj4gdGhlIGtlcm5lbCAgd2l0aCAgZGVidWcgc3ltYm9scwo+IAoKSSdtIG5v dCBzdXJlIGlmIHlvdSBkaWQgdGhlIHJpZ2h0IHRoaW5nIGJlY2F1c2UgSSd2ZSBuZXZlciBkb25l IGFueSBBUk0KZGV2ZWxvcG1lbnQuIEknbGwgbGV0IG90aGVyIHBlb3BsZSBhbnN3ZXIgeW91ciBx dWVzdGlvbi4KCldlaS4KCj4gT24gRnJpLCBNYXIgMTEsIDIwMTYgYXQgNTowOSBQTSwgV2VpIExp dSA8d2VpLmxpdTJAY2l0cml4LmNvbT4gd3JvdGU6Cj4gCj4gPiBPbiBGcmksIE1hciAxMSwgMjAx NiBhdCAxMTowMjoyNkFNIC0wNTAwLCBLb25yYWQgUnplc3p1dGVrIFdpbGsgd3JvdGU6Cj4gPiA+ IE9uIEZyaSwgTWFyIDExLCAyMDE2IGF0IDA0OjQ3OjQ3UE0gKzAxMDAsIFNhZmEgSGFtemEgd3Jv dGU6Cj4gPiA+ID4gbm93IGkgZGlkIGp1c3QgbGlrZSB1IHNhaWQgLi4uICBhIG5ldyBlcnJvciBh cHBlYXJzCj4gPiA+Cj4gPiA+IEFkZGluZyBYRW4tZGV2ZWwgYmFjay4gUGxlYXNlIHJlcGx5IGFs bC4KPiA+ID4KPiA+ID4gPgo+ID4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gPiA+ID4gVS1Cb290 IyBmZHQgYWRkciAkZHRiX2FkZHJfcgo+ID4gPiA+IFUtQm9vdCMgZmR0IHJlc2l6ZQo+ID4gPiA+ IFUtQm9vdCMgZmR0IHNldCAvY2hvc2VuIHhlbix4ZW4tYm9vdGFyZ3MgXCIkeGVuX2Jvb3Rhcmdz XCIKPiA+ID4gPiBVLUJvb3QjIGZkdCByZXNpemUKPiA+ID4gPiBVLUJvb3QjIGZkdCBzZXQgL2No b3NlbiB4ZW4sZG9tMC1ib290YXJncyBcIiRkb20wX2Jvb3RhcmdzXCIKPiA+ID4gPiBVLUJvb3Qj IGZkdCByZXNpemUKPiA+ID4gPiBVLUJvb3QjIGZkdCBta25vZGUgL2Nob3NlbiBtb2R1bGVzCj4g PiA+ID4gVS1Cb290IyBmZHQgc2V0IC9jaG9zZW4vbW9kdWxlcyAnI2FkZHJlc3MtY2VsbHMnIDwx Pgo+ID4gPiA+IFUtQm9vdCMgZmR0IHNldCAvY2hvc2VuL21vZHVsZXMgJyNzaXplLWNlbGxzJyA8 MT4KPiA+ID4gPiBVLUJvb3QjIGZkdCBta25vZGUgL2Nob3Nlbi9tb2R1bGVzIG1vZHVsZUAwCj4g PiA+ID4gbGliZmR0IGZkdF9hZGRfc3Vibm9kZSgpOiBGRFRfRVJSX05PU1BBQ0UKPiA+ID4gPgo+ ID4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCj4gPiA+ID4gYnV0IHdoZW4gaSB3cm90ZSAgZmR0IHJl c2l6ZSBiZWZvcmUgIGZkdCBta25vZGUgL2Nob3Nlbi9tb2R1bGVzCj4gPiBtb2R1bGVAMAo+ID4g PiA+IHRoaXMgZXJyb3IgZGlzYXBwZWFyIGJ1dCBzdGlsbCB0aGUgZXhlY3V0aW9uIHN0b3BzIGFz IGkgbWVudGlvbmVkCj4gPiBiZWZvcmUKPiA+ID4gPgo+ID4KPiA+IFRoZSBtZXNzYWdlIHNlZW1z IHF1aXRlIHN0cmFpZ2h0LWZvcndhcmQgdG8gbWUgLS0gb25lIG9mIHRoZSBsaWJmZHQKPiA+IGZ1 bmN0aW9uIGNhbGwgZmFpbGVkIHdpdGggc29tZSBlcnJvci4KPiA+Cj4gPiBJJ20gYWZyYWlkIHlv dSBuZWVkIHRvIGRvIHNvbWUgbWFudWFsIGRlYnVnZ2luZyB0byBmaWd1cmUgb3V0IHdoYXQgd2Vu dAo+ID4gd3JvbmcuCj4gPgo+ID4gV2VpLgo+ID4KPiA+ID4gPiBPbiBGcmksIE1hciAxMSwgMjAx NiBhdCA0OjIwIFBNLCBLb25yYWQgUnplc3p1dGVrIFdpbGsgPAo+ID4gPiA+IGtvbnJhZC53aWxr QG9yYWNsZS5jb20+IHdyb3RlOgo+ID4gPiA+Cj4gPiA+ID4gPiBPbiBGcmksIE1hciAxMSwgMjAx NiBhdCAxMDoyMDowMUFNIC0wNTAwLCBLb25yYWQgUnplc3p1dGVrIFdpbGsKPiA+IHdyb3RlOgo+ ID4gPiA+ID4gPiBPbiBGcmksIE1hciAxMSwgMjAxNiBhdCAwNDowNTo1OFBNICswMTAwLCBTYWZh IEhhbXphIHdyb3RlOgo+ID4gPiA+ID4KPiA+ID4gPiA+IEFuZCBwbGVhc2UgZG8gbm90IGRyb3Ag WGVuLWRldmVsLiBBZGRpbmcgaXQgYmFjayBvbi4KPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gaSBk aWQgbGlrZSB1IHNhaWQgYnV0IG5vdGhpbmcgY2hhbmdlIC4uCj4gPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gTm8geW91IGRpZG4ndC4gU2VlIGJlbG93Ogo+ID4gPiA+ID4gPiA+ IFUtQm9vdCMgc2V0ZW52IGRvbTBfYm9vdGFyZ3MgJ2NvbnNvbGU9aHZjMCwxMTUyMDBuOAo+ID4g ZWFybHlwcmludGs9eGVuCj4gPiA+ID4gPiBkZWJ1ZycKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g WW91IHN0aWxsIGhhdmUgMTE1MjAwbjgKPiA+ID4gPiA+Cj4gPiA+Cj4gPiA+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+IFhlbi1kZXZlbCBtYWls aW5nIGxpc3QKPiA+ID4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiA+ID4gaHR0cDovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCj4gPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: help Date: Tue, 15 Mar 2016 17:56:46 +0000 Message-ID: <56E84CDE.5040008@arm.com> References: <20160311144954.GF5133@char.us.oracle.com> <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> <20160311160226.GA29991@char.us.oracle.com> <20160311160912.GF2589@citrix.com> <20160311171624.GZ31271@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftD9-0000Kk-4y for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 17:56:51 +0000 In-Reply-To: <20160311171624.GZ31271@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Wei Liu Cc: Xen-devel , Safa Hamza List-Id: xen-devel@lists.xenproject.org SGkgU2FmYSwKCk9uIDExLzAzLzE2IDE3OjE2LCBXZWkgTGl1IHdyb3RlOgo+IEFkZCBiYWNrIHhl bi1kZXZlbAo+Cj4gT24gRnJpLCBNYXIgMTEsIDIwMTYgYXQgMDU6MjM6MjJQTSArMDEwMCwgU2Fm YSBIYW16YSB3cm90ZToKPj4gb2sgLi4gY2FuIHUgdGVsbCBtZSBob3cgY29tcGlsZSB4ZW4gd2l0 aCBkZWJ1ZyBzeW1ib2xzICEhICBpIGhhdmUgeGVuLXN5bXMKPj4gYWZ0ZXIgY29tcGlsaW5nIHhl biB3aXRoICJtYWtlIGRpc3QteGVuIFhFTl9UQVJHRVRfQVJDSD1hcm0zMgo+PiBDUk9TU19DT01Q SUxFPWFybS1saW51eC1nbnVlYWJpaGYtIENPTkZJR19FQVJMWV9QUklOVEs9b21hcDU0MzIiICAg aXMgdGhpcwo+PiB0aGUga2VybmVsICB3aXRoICBkZWJ1ZyBzeW1ib2xzCj4+CgpJZiB5b3UgYXJl IHVzaW5nIFhlbiB1bnN0YWJsZSwgdGhlIGh5cGVydmlzb3Igd2lsbCBiZSBjb21waWxlZCB3aXRo IApkZWJ1ZyBlbmFibGVkIGJ5IGRlZmF1bHQuIElmIG5vdCB5b3UgY2FuIGFkZCAiZGVidWc9eSIg b24gdGhlIGJ1aWxkIApjb21tYW5kIGxpbmUuCgp4ZW4veGVuLXN5bXMgY29udGFpbnMgdGhlIGRl YnVnIHN5bWJvbHMsIHlvdSBjYW4gdXNlIHRvb2xzIHN1Y2ggYXMgCmFkZHIybGluZSB0byBnZXQg bW9yZSBkZWJ1ZyBpbmZvcm1hdGlvbi4gSG93ZXZlciwgaXQncyBub3Qgc3VpdGFibGUgdG8gCmJv b3QgeGVuIG9uIHlvdXIgYm9hcmQuCgp4ZW4veGVuIGlzIHRoZSBhY3R1YWwgaHlwZXJ2aXNvciBi aW5hcnkuCgpSZWdhcmRzLAoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: help Date: Tue, 15 Mar 2016 14:09:44 -0400 Message-ID: <20160315180944.GB26955@char.us.oracle.com> References: <20160311144954.GF5133@char.us.oracle.com> <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> <20160311160226.GA29991@char.us.oracle.com> <20160311160912.GF2589@citrix.com> <20160311171624.GZ31271@citrix.com> <56E84CDE.5040008@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftPs-0006Ww-9O for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 18:10:00 +0000 Content-Disposition: inline In-Reply-To: <56E84CDE.5040008@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall Cc: Xen-devel , Wei Liu , Safa Hamza List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBNYXIgMTUsIDIwMTYgYXQgMDU6NTY6NDZQTSArMDAwMCwgSnVsaWVuIEdyYWxsIHdy b3RlOgo+IEhpIFNhZmEsCj4gCj4gT24gMTEvMDMvMTYgMTc6MTYsIFdlaSBMaXUgd3JvdGU6Cj4g PkFkZCBiYWNrIHhlbi1kZXZlbAo+ID4KPiA+T24gRnJpLCBNYXIgMTEsIDIwMTYgYXQgMDU6MjM6 MjJQTSArMDEwMCwgU2FmYSBIYW16YSB3cm90ZToKPiA+Pm9rIC4uIGNhbiB1IHRlbGwgbWUgaG93 IGNvbXBpbGUgeGVuIHdpdGggZGVidWcgc3ltYm9scyAhISAgaSBoYXZlIHhlbi1zeW1zCj4gPj5h ZnRlciBjb21waWxpbmcgeGVuIHdpdGggIm1ha2UgZGlzdC14ZW4gWEVOX1RBUkdFVF9BUkNIPWFy bTMyCj4gPj5DUk9TU19DT01QSUxFPWFybS1saW51eC1nbnVlYWJpaGYtIENPTkZJR19FQVJMWV9Q UklOVEs9b21hcDU0MzIiICAgaXMgdGhpcwo+ID4+dGhlIGtlcm5lbCAgd2l0aCAgZGVidWcgc3lt Ym9scwo+ID4+Cj4gCj4gSWYgeW91IGFyZSB1c2luZyBYZW4gdW5zdGFibGUsIHRoZSBoeXBlcnZp c29yIHdpbGwgYmUgY29tcGlsZWQgd2l0aCBkZWJ1Zwo+IGVuYWJsZWQgYnkgZGVmYXVsdC4gSWYg bm90IHlvdSBjYW4gYWRkICJkZWJ1Zz15IiBvbiB0aGUgYnVpbGQgY29tbWFuZCBsaW5lLgo+IAo+ IHhlbi94ZW4tc3ltcyBjb250YWlucyB0aGUgZGVidWcgc3ltYm9scywgeW91IGNhbiB1c2UgdG9v bHMgc3VjaCBhcyBhZGRyMmxpbmUKPiB0byBnZXQgbW9yZSBkZWJ1ZyBpbmZvcm1hdGlvbi4gSG93 ZXZlciwgaXQncyBub3Qgc3VpdGFibGUgdG8gYm9vdCB4ZW4gb24KCnMveGVuL3hlbi1zeW1zLyA/ Cj4geW91ciBib2FyZC4KPiAKPiB4ZW4veGVuIGlzIHRoZSBhY3R1YWwgaHlwZXJ2aXNvciBiaW5h cnkuCj4gCj4gUmVnYXJkcywKPiAKPiAtLSAKPiBKdWxpZW4gR3JhbGwKPiAKPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IFhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKPiBYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwo+IGh0dHA6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: help Date: Tue, 15 Mar 2016 18:16:44 +0000 Message-ID: <56E8518C.9070500@arm.com> References: <20160311144954.GF5133@char.us.oracle.com> <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> <20160311160226.GA29991@char.us.oracle.com> <20160311160912.GF2589@citrix.com> <20160311171624.GZ31271@citrix.com> <56E84CDE.5040008@arm.com> <20160315180944.GB26955@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftWT-0007Me-Ev for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 18:16:49 +0000 In-Reply-To: <20160315180944.GB26955@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: Xen-devel , Wei Liu , Safa Hamza List-Id: xen-devel@lists.xenproject.org CgpPbiAxNS8wMy8xNiAxODowOSwgS29ucmFkIFJ6ZXN6dXRlayBXaWxrIHdyb3RlOgo+IE9uIFR1 ZSwgTWFyIDE1LCAyMDE2IGF0IDA1OjU2OjQ2UE0gKzAwMDAsIEp1bGllbiBHcmFsbCB3cm90ZToK Pj4gSGkgU2FmYSwKPj4KPj4gT24gMTEvMDMvMTYgMTc6MTYsIFdlaSBMaXUgd3JvdGU6Cj4+PiBB ZGQgYmFjayB4ZW4tZGV2ZWwKPj4+Cj4+PiBPbiBGcmksIE1hciAxMSwgMjAxNiBhdCAwNToyMzoy MlBNICswMTAwLCBTYWZhIEhhbXphIHdyb3RlOgo+Pj4+IG9rIC4uIGNhbiB1IHRlbGwgbWUgaG93 IGNvbXBpbGUgeGVuIHdpdGggZGVidWcgc3ltYm9scyAhISAgaSBoYXZlIHhlbi1zeW1zCj4+Pj4g YWZ0ZXIgY29tcGlsaW5nIHhlbiB3aXRoICJtYWtlIGRpc3QteGVuIFhFTl9UQVJHRVRfQVJDSD1h cm0zMgo+Pj4+IENST1NTX0NPTVBJTEU9YXJtLWxpbnV4LWdudWVhYmloZi0gQ09ORklHX0VBUkxZ X1BSSU5USz1vbWFwNTQzMiIgICBpcyB0aGlzCj4+Pj4gdGhlIGtlcm5lbCAgd2l0aCAgZGVidWcg c3ltYm9scwo+Pj4+Cj4+Cj4+IElmIHlvdSBhcmUgdXNpbmcgWGVuIHVuc3RhYmxlLCB0aGUgaHlw ZXJ2aXNvciB3aWxsIGJlIGNvbXBpbGVkIHdpdGggZGVidWcKPj4gZW5hYmxlZCBieSBkZWZhdWx0 LiBJZiBub3QgeW91IGNhbiBhZGQgImRlYnVnPXkiIG9uIHRoZSBidWlsZCBjb21tYW5kIGxpbmUu Cj4+Cj4+IHhlbi94ZW4tc3ltcyBjb250YWlucyB0aGUgZGVidWcgc3ltYm9scywgeW91IGNhbiB1 c2UgdG9vbHMgc3VjaCBhcyBhZGRyMmxpbmUKPj4gdG8gZ2V0IG1vcmUgZGVidWcgaW5mb3JtYXRp b24uIEhvd2V2ZXIsIGl0J3Mgbm90IHN1aXRhYmxlIHRvIGJvb3QgeGVuIG9uCj4KPiBzL3hlbi94 ZW4tc3ltcy8gPwoKcy94ZW4vdGhlIGh5cGVydmlzb3IvCgpSZWdhcmRzLAoKLS0gCkp1bGllbiBH cmFsbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: help Date: Tue, 15 Mar 2016 14:21:07 -0400 Message-ID: <20160315182106.GD26955@char.us.oracle.com> References: <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> <20160311160226.GA29991@char.us.oracle.com> <20160311160912.GF2589@citrix.com> <20160311171624.GZ31271@citrix.com> <56E84CDE.5040008@arm.com> <20160315180944.GB26955@char.us.oracle.com> <56E8518C.9070500@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftao-0008G0-Nv for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 18:21:18 +0000 Content-Disposition: inline In-Reply-To: <56E8518C.9070500@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall Cc: Xen-devel , Wei Liu , Safa Hamza List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBNYXIgMTUsIDIwMTYgYXQgMDY6MTY6NDRQTSArMDAwMCwgSnVsaWVuIEdyYWxsIHdy b3RlOgo+IAo+IAo+IE9uIDE1LzAzLzE2IDE4OjA5LCBLb25yYWQgUnplc3p1dGVrIFdpbGsgd3Jv dGU6Cj4gPk9uIFR1ZSwgTWFyIDE1LCAyMDE2IGF0IDA1OjU2OjQ2UE0gKzAwMDAsIEp1bGllbiBH cmFsbCB3cm90ZToKPiA+PkhpIFNhZmEsCj4gPj4KPiA+Pk9uIDExLzAzLzE2IDE3OjE2LCBXZWkg TGl1IHdyb3RlOgo+ID4+PkFkZCBiYWNrIHhlbi1kZXZlbAo+ID4+Pgo+ID4+Pk9uIEZyaSwgTWFy IDExLCAyMDE2IGF0IDA1OjIzOjIyUE0gKzAxMDAsIFNhZmEgSGFtemEgd3JvdGU6Cj4gPj4+Pm9r IC4uIGNhbiB1IHRlbGwgbWUgaG93IGNvbXBpbGUgeGVuIHdpdGggZGVidWcgc3ltYm9scyAhISAg aSBoYXZlIHhlbi1zeW1zCj4gPj4+PmFmdGVyIGNvbXBpbGluZyB4ZW4gd2l0aCAibWFrZSBkaXN0 LXhlbiBYRU5fVEFSR0VUX0FSQ0g9YXJtMzIKPiA+Pj4+Q1JPU1NfQ09NUElMRT1hcm0tbGludXgt Z251ZWFiaWhmLSBDT05GSUdfRUFSTFlfUFJJTlRLPW9tYXA1NDMyIiAgIGlzIHRoaXMKPiA+Pj4+ dGhlIGtlcm5lbCAgd2l0aCAgZGVidWcgc3ltYm9scwo+ID4+Pj4KPiA+Pgo+ID4+SWYgeW91IGFy ZSB1c2luZyBYZW4gdW5zdGFibGUsIHRoZSBoeXBlcnZpc29yIHdpbGwgYmUgY29tcGlsZWQgd2l0 aCBkZWJ1Zwo+ID4+ZW5hYmxlZCBieSBkZWZhdWx0LiBJZiBub3QgeW91IGNhbiBhZGQgImRlYnVn PXkiIG9uIHRoZSBidWlsZCBjb21tYW5kIGxpbmUuCj4gPj4KPiA+Pnhlbi94ZW4tc3ltcyBjb250 YWlucyB0aGUgZGVidWcgc3ltYm9scywgeW91IGNhbiB1c2UgdG9vbHMgc3VjaCBhcyBhZGRyMmxp bmUKPiA+PnRvIGdldCBtb3JlIGRlYnVnIGluZm9ybWF0aW9uLiBIb3dldmVyLCBpdCdzIG5vdCBz dWl0YWJsZSB0byBib290IHhlbiBvbgo+ID4KPiA+cy94ZW4veGVuLXN5bXMvID8KPiAKPiBzL3hl bi90aGUgaHlwZXJ2aXNvci8KCllvdSBhcmUgc2F5aW5nIHlvdSBjYW4ndCBib290IFhlbiBvbiB0 aGlzIGJvYXJkPwoKPiAKPiBSZWdhcmRzLAo+IAo+IC0tIAo+IEp1bGllbiBHcmFsbAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: help Date: Tue, 15 Mar 2016 18:22:13 +0000 Message-ID: <56E852D5.1060903@arm.com> References: <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> <20160311160226.GA29991@char.us.oracle.com> <20160311160912.GF2589@citrix.com> <20160311171624.GZ31271@citrix.com> <56E84CDE.5040008@arm.com> <20160315180944.GB26955@char.us.oracle.com> <56E8518C.9070500@arm.com> <20160315182106.GD26955@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftbl-0008OP-MG for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 18:22:17 +0000 In-Reply-To: <20160315182106.GD26955@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: Xen-devel , Wei Liu , Safa Hamza List-Id: xen-devel@lists.xenproject.org CgpPbiAxNS8wMy8xNiAxODoyMSwgS29ucmFkIFJ6ZXN6dXRlayBXaWxrIHdyb3RlOgo+IE9uIFR1 ZSwgTWFyIDE1LCAyMDE2IGF0IDA2OjE2OjQ0UE0gKzAwMDAsIEp1bGllbiBHcmFsbCB3cm90ZToK Pj4KPj4KPj4gT24gMTUvMDMvMTYgMTg6MDksIEtvbnJhZCBSemVzenV0ZWsgV2lsayB3cm90ZToK Pj4+IE9uIFR1ZSwgTWFyIDE1LCAyMDE2IGF0IDA1OjU2OjQ2UE0gKzAwMDAsIEp1bGllbiBHcmFs bCB3cm90ZToKPj4+PiBIaSBTYWZhLAo+Pj4+Cj4+Pj4gT24gMTEvMDMvMTYgMTc6MTYsIFdlaSBM aXUgd3JvdGU6Cj4+Pj4+IEFkZCBiYWNrIHhlbi1kZXZlbAo+Pj4+Pgo+Pj4+PiBPbiBGcmksIE1h ciAxMSwgMjAxNiBhdCAwNToyMzoyMlBNICswMTAwLCBTYWZhIEhhbXphIHdyb3RlOgo+Pj4+Pj4g b2sgLi4gY2FuIHUgdGVsbCBtZSBob3cgY29tcGlsZSB4ZW4gd2l0aCBkZWJ1ZyBzeW1ib2xzICEh ICBpIGhhdmUgeGVuLXN5bXMKPj4+Pj4+IGFmdGVyIGNvbXBpbGluZyB4ZW4gd2l0aCAibWFrZSBk aXN0LXhlbiBYRU5fVEFSR0VUX0FSQ0g9YXJtMzIKPj4+Pj4+IENST1NTX0NPTVBJTEU9YXJtLWxp bnV4LWdudWVhYmloZi0gQ09ORklHX0VBUkxZX1BSSU5USz1vbWFwNTQzMiIgICBpcyB0aGlzCj4+ Pj4+PiB0aGUga2VybmVsICB3aXRoICBkZWJ1ZyBzeW1ib2xzCj4+Pj4+Pgo+Pj4+Cj4+Pj4gSWYg eW91IGFyZSB1c2luZyBYZW4gdW5zdGFibGUsIHRoZSBoeXBlcnZpc29yIHdpbGwgYmUgY29tcGls ZWQgd2l0aCBkZWJ1Zwo+Pj4+IGVuYWJsZWQgYnkgZGVmYXVsdC4gSWYgbm90IHlvdSBjYW4gYWRk ICJkZWJ1Zz15IiBvbiB0aGUgYnVpbGQgY29tbWFuZCBsaW5lLgo+Pj4+Cj4+Pj4geGVuL3hlbi1z eW1zIGNvbnRhaW5zIHRoZSBkZWJ1ZyBzeW1ib2xzLCB5b3UgY2FuIHVzZSB0b29scyBzdWNoIGFz IGFkZHIybGluZQo+Pj4+IHRvIGdldCBtb3JlIGRlYnVnIGluZm9ybWF0aW9uLiBIb3dldmVyLCBp dCdzIG5vdCBzdWl0YWJsZSB0byBib290IHhlbiBvbgo+Pj4KPj4+IHMveGVuL3hlbi1zeW1zLyA/ Cj4+Cj4+IHMveGVuL3RoZSBoeXBlcnZpc29yLwo+Cj4gWW91IGFyZSBzYXlpbmcgeW91IGNhbid0 IGJvb3QgWGVuIG9uIHRoaXMgYm9hcmQ/CgpJIG1lYW50LCB4ZW4tc3ltcyBpcyBub3Qgc3VpdGFi bGUgdG8gYm9vdCB0aGUgaHlwZXJ2aXNvciBvbiB0aGlzIGJvYXJkLiAKWW91IGhhdmUgdG8gdXNl IHhlbi94ZW4uCgpTb3JyeSBmb3IgdGhlIGNvbmZ1c2lvbi4KClJlZ2FyZHMsCgotLSAKSnVsaWVu IEdyYWxsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: Safa Hamza Subject: Re: help Date: Tue, 15 Mar 2016 22:01:27 +0100 Message-ID: References: <20160311144954.GF5133@char.us.oracle.com> <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> <20160311160226.GA29991@char.us.oracle.com> <20160311160912.GF2589@citrix.com> <20160311171624.GZ31271@citrix.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4059309578170334559==" Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1afw5t-0007Ku-L9 for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 21:01:34 +0000 Received: by mail-ig0-f175.google.com with SMTP id av4so97998633igc.1 for ; Tue, 15 Mar 2016 14:01:28 -0700 (PDT) In-Reply-To: <20160311171624.GZ31271@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Wei Liu Cc: Xen-devel List-Id: xen-devel@lists.xenproject.org --===============4059309578170334559== Content-Type: multipart/alternative; boundary=047d7bd75df2642d8e052e1cb333 --047d7bd75df2642d8e052e1cb333 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable i solve the problem by degugging the linux kernel .. the problem was the instruction omap_smc1 ..i'm not sure about what it did but when i delete this instruction it works ... but i face another problem .. the execution now stops in **************************************************************************= ***************************************************************************= ****** U-Boot SPL 2013.10-rc2 (Mar 08 2016 - 14:23:51) OMAP5432 ES2.0 SPL: Please implement spl_start_uboot() for your board SPL: Direct Linux boot not active! reading u-boot.img reading u-boot.img U-Boot 2013.10-rc2 (Mar 08 2016 - 14:23:51) CPU : OMAP5432 ES2.0 Board: OMAP5432 uEVM I2C: ready DRAM: 2 GiB MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 Net: No ethernet found. Hit any key to stop autoboot: 0 mmc0 is current device reading boot.scr 972 bytes read in 5 ms (189.5 KiB/s) Running bootscript from mmc0 ... ## Executing script at 82000000 reading omap5-uevm.dtb 44836 bytes read in 8 ms (5.3 MiB/s) reading xen-uImage 787372 bytes read in 44 ms (17.1 MiB/s) reading zImage 4283720 bytes read in 215 ms (19 MiB/s) ## Booting kernel from Legacy Image at 90000000 ... Image Name: Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 787308 Bytes =3D 768.9 KiB Load Address: 80200000 Entry Point: 80200000 Verifying Checksum ... OK ## Flattened Device Tree blob at 825f0000 Booting using the fdt blob at 0x825f0000 Loading Kernel Image ... OK reserving fdt memory region: addr=3D825f0000 size=3Dc000 Using Device Tree in place at 825f0000, end 825fefff Starting kernel ... - UART enabled - - CPU 00000000 booting - - Xen starting in Hyp mode - - Zero BSS - - Setting up control registers - - Turning on paging - - Ready - (XEN) Checking for initrd in /chosen (XEN) RAM: 0000000080000000 - 00000000feffffff (XEN) (XEN) MODULE[0]: 00000000825f0000 - 00000000825fc000 Device Tree (XEN) MODULE[1]: 00000000a0000000 - 00000000a0a00000 Kernel (XEN) RESVD[0]: 00000000825f0000 - 00000000825fc000 (XEN) (XEN) Command line: sync_console console=3Ddtuart dtuart=3Dserial2 (XEN) Placing Xen at 0x00000000fee00000-0x00000000ff000000 (XEN) Update BOOTMOD_XEN from 0000000080200000-0000000080305701 =3D> 00000000fee00000-00000000fef05701 (XEN) Xen heap: 00000000fa000000-00000000fe000000 (16384 pages) (XEN) Dom heap: 503808 pages (XEN) Domain heap initialised (XEN) Platform: TI OMAP5 (XEN) Looking for dtuart at "serial2", options "" Xen 4.7-unstable (XEN) Xen version 4.7-unstable (root@) (arm-linux-gnueabihf-gcc (Linaro GCC 2014.11) 4.9.3 20141031 (prerelease)) debug=3Dy Tue Mar 1 15:02:30 CET 201= 6 (XEN) Latest ChangeSet: Sun Feb 28 16:03:51 2016 -0500 git:42391c6 (XEN) Console output is synchronous. (XEN) Processor: 412fc0f2: "ARM Limited", variant: 0x2, part 0xc0f, rev 0x2 (XEN) 32-bit Execution: (XEN) Processor Features: 00001131:00011011 (XEN) Instruction Sets: AArch32 A32 Thumb Thumb-2 ThumbEE Jazelle (XEN) Extensions: GenericTimer Security (XEN) Debug Features: 02010555 (XEN) Auxiliary Features: 00000000 (XEN) Memory Model Features: 10201105 20000000 01240000 02102211 (XEN) ISA Features: 02101110 13112111 21232041 11112131 10011142 00000000 (XEN) Set AuxCoreBoot1 to 00000000fee0004c (0020004c) (XEN) Set AuxCoreBoot0 to 0x20 (XEN) Generic Timer IRQ: phys=3D30 hyp=3D26 virt=3D27 Freq: 6144 KHz (XEN) GICv2: WARNING: The GICC size is too small: 0x1000 expected 0x2000 (XEN) GICv2 initialization: (XEN) gic_dist_addr=3D0000000048211000 (XEN) gic_cpu_addr=3D0000000048212000 (XEN) gic_hyp_addr=3D0000000048214000 (XEN) gic_vcpu_addr=3D0000000048216000 (XEN) gic_maintenance_irq=3D25 (XEN) GICv2: 192 lines, 2 cpus, secure (IID 0000043b). (XEN) Using scheduler: SMP Credit Scheduler (credit) (XEN) Allocated console ring of 16 KiB. (XEN) VFP implementer 0x41 architecture 4 part 0x30 variant 0xf rev 0x0 (XEN) Bringing up CPU1 - CPU 00000001 booting - - Xen starting in Hyp mode - - Setting up control registers - - Turning on paging - - Ready - (XEN) CPU 1 booted. (XEN) Brought up 2 CPUs (XEN) P2M: 40-bit IPA (XEN) P2M: 3 levels with order-1 root, VTCR 0x80003558 (XEN) I/O virtualisation disabled (XEN) *** LOADING DOMAIN 0 *** (XEN) Loading kernel from boot module @ 00000000a0000000 (XEN) Allocating 1:1 mappings totalling 128MB for dom0: (XEN) BANK[0] 0x000000a8000000-0x000000b0000000 (128MB) (XEN) Grant table range: 0x000000fee00000-0x000000fee63000 (XEN) Loading zImage from 00000000a0000000 to 00000000afa00000-00000000afe15d48 (XEN) Allocating PPI 16 for event channel interrupt (XEN) Loading dom0 DTB to 0x00000000af800000-0x00000000af80aece (XEN) Scrubbing Free RAM on 1 nodes using 2 CPUs (XEN) ........done. (XEN) Initial low memory virq threshold set at 0x4000 pages. (XEN) Std. Loglevel: All (XEN) Guest Loglevel: All (XEN) ********************************************** (XEN) ******* WARNING: CONSOLE OUTPUT IS SYNCHRONOUS (XEN) ******* This option is intended to aid debugging of Xen by ensuring (XEN) ******* that all output is synchronously delivered on the serial line= . (XEN) ******* However it can introduce SIGNIFICANT latencies and affect (XEN) ******* timekeeping. It is NOT recommended for production use! (XEN) ********************************************** (XEN) 3... 2... 1... (XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen) (XEN) Freed 280kB init memory. [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 3.15.0-rc2-00199-g0c0a3e5-dirty (safa@safa-VirtualBox) (gcc version 4.9.2 (Ubuntu/Linaro 4.9.2-10ubuntu10) ) #6 SMP Mon Mar 14 18:14:21 CET 2016 [ 0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=3D10c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache [ 0.000000] Machine model: TI OMAP5 uEVM board [ 0.000000] debug: ignoring loglevel setting. [ 0.000000] cma: CMA: reserved 16 MiB at ae800000 [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] On node 0 totalpages: 32512 [ 0.000000] free_area_init_node: node 0, pgdat c085ce00, node_mem_map c7df2000 [ 0.000000] Normal zone: 256 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 32512 pages, LIFO batch:7 [ 0.000000] psci: probing function IDs from device-tree [ 0.000000] OMAP5432 ES2.0 [ 0.000000] PERCPU: Embedded 9 pages/cpu @c7db0000 s14784 r8192 d13888 u36864 [ 0.000000] pcpu-alloc: s14784 r8192 d13888 u36864 alloc=3D9*4096 [ 0.000000] pcpu-alloc: [0] 0 [0] 1 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32256 [ 0.000000] Kernel command line: console=3Dhvc0,115200n8 earlyprintk=3Dx= en debug ignore_loglevel root=3D/dev/mmcblk0p2 rw rootwait fixrtc [ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes) [ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) [ 0.000000] Memory: 98080K/130048K available (5672K kernel code, 441K rwdata, 2092K rodata, 342K init, 5534K bss, 31968K reserved, 0K highmem) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) [ 0.000000] vmalloc : 0xc8800000 - 0xff000000 ( 872 MB) [ 0.000000] lowmem : 0xc0000000 - 0xc8000000 ( 128 MB) [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB) [ 0.000000] .text : 0xc0008000 - 0xc079d4c4 (7766 kB) [ 0.000000] .init : 0xc079e000 - 0xc07f39c0 ( 343 kB) [ 0.000000] .data : 0xc07f4000 - 0xc0862600 ( 442 kB) [ 0.000000] .bss : 0xc0862600 - 0xc0dc9f00 (5535 kB) [ 0.000000] Hierarchical RCU implementation. [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] OMAP clockevent source: timer1 at 32768 Hz [ 0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 65536000000000ns [ 0.000000] OMAP clocksource: 32k_counter at 32768 Hz [ 0.000305] Architected cp15 timer(s) running at 6.14MHz (virt). [ 0.000309] sched_clock: 56 bits at 6MHz, resolution 162ns, wraps every 2796202663936ns [ 0.000315] Switching to timer-based delay loop [ 0.001115] Console: colour dummy device 80x30 [ 0.001145] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.001152] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.001157] ... MAX_LOCK_DEPTH: 48 [ 0.001163] ... MAX_LOCKDEP_KEYS: 8191 [ 0.001168] ... CLASSHASH_SIZE: 4096 [ 0.001173] ... MAX_LOCKDEP_ENTRIES: 16384 [ 0.001178] ... MAX_LOCKDEP_CHAINS: 32768 [ 0.001182] ... CHAINHASH_SIZE: 16384 [ 0.001188] memory used by lock dependency info: 3695 kB [ 0.001193] per task-struct memory footprint: 1152 bytes [ 0.001213] Calibrating delay loop (skipped), value calculated using timer frequency.. 12.28 BogoMIPS (lpj=3D61440) [ 0.001224] pid_max: default: 32768 minimum: 301 [ 0.001515] Security Framework initialized [ 0.001608] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.001617] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.003039] CPU: Testing write buffer coherency: ok [ 0.003679] /cpus/cpu@0 missing clock-frequency property [ 0.003705] /cpus/cpu@1 missing clock-frequency property [ 0.003714] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.003847] Xen 4.7 support found, events_irq=3D16 gnttab_frame=3D0xfee0= 0000 [ 0.004015] xen:grant_table: Grant tables using version 1 layout [ 0.004053] Grant table initialized [ 0.004103] xen:events: Using FIFO-based ABI [ 0.004125] Xen: initializing cpu0 [ 0.004182] Setting up static identity map for 0xa8568c20 - 0xa8568c90 [ 0.007160] CPU1: Booted secondary processor [ 0.007222] Xen: initializing cpu1 [ 0.007261] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 [ 0.007599] Brought up 2 CPUs [ 0.007612] SMP: Total of 2 processors activated. [ 0.007617] CPU: All CPU(s) started in SVC mode. [ 0.009402] devtmpfs: initialized [ 0.018309] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0 [ 0.019398] omap_hwmod: l3_main_3 using broken dt data from ocp [ 0.020420] omap_hwmod: l3_main_2 using broken dt data from ocp [ 0.041658] ------------[ cut here ]------------ [ 0.041676] WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2538 _init+0x38c/0x3dc() [ 0.041682] omap_hwmod: mailbox: doesn't have mpu register target base [ 0.041687] Modules linked in: [ 0.041700] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.15.0-rc2-00199-g0c0a3e5-dirty #6 [ 0.041718] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [ 0.041732] [] (show_stack) from [] (dump_stack+0x84/0x9c) [ 0.041746] [] (dump_stack) from [] (warn_slowpath_common+0x68/0x8c) [ 0.041757] [] (warn_slowpath_common) from [] (warn_slowpath_fmt+0x30/0x40) [ 0.041770] [] (warn_slowpath_fmt) from [] (_init+0x38c/0x3dc) [ 0.041784] [] (_init) from [] (omap_hwmod_for_each+0x34/0x60) [ 0.041795] [] (omap_hwmod_for_each) from [] (__omap_hwmod_setup_all+0x24/0x40) [ 0.041806] [] (__omap_hwmod_setup_all) from [] (do_one_initcall+0xe8/0x158) [ 0.041819] [] (do_one_initcall) from [] (kernel_init_freeable+0x100/0x1c4) [ 0.041830] [] (kernel_init_freeable) from [] (kernel_init+0x8/0xec) [ 0.041842] [] (kernel_init) from [] (ret_from_fork+0x14/0x2c) [ 0.041880] ---[ end trace 7920d429778a6b5c ]--- [ 0.066049] ------------[ cut here ]------------ [ 0.066062] WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2538 _init+0x38c/0x3dc() [ 0.066069] omap_hwmod: uart3: doesn't have mpu register target base [ 0.066073] Modules linked in: [ 0.066084] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G W 3.15.0-rc2-00199-g0c0a3e5-dirty #6 [ 0.066097] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [ 0.066108] [] (show_stack) from [] (dump_stack+0x84/0x9c) [ 0.066120] [] (dump_stack) from [] (warn_slowpath_common+0x68/0x8c) [ 0.066131] [] (warn_slowpath_common) from [] (warn_slowpath_fmt+0x30/0x40) [ 0.066143] [] (warn_slowpath_fmt) from [] (_init+0x38c/0x3dc) [ 0.066155] [] (_init) from [] (omap_hwmod_for_each+0x34/0x60) [ 0.066166] [] (omap_hwmod_for_each) from [] (__omap_hwmod_setup_all+0x24/0x40) [ 0.066177] [] (__omap_hwmod_setup_all) from [] (do_one_initcall+0xe8/0x158) [ 0.066188] [] (do_one_initcall) from [] (kernel_init_freeable+0x100/0x1c4) [ 0.066199] [] (kernel_init_freeable) from [] (kernel_init+0x8/0xec) [ 0.066209] [] (kernel_init) from [] (ret_from_fork+0x14/0x2c) [ 0.066215] ---[ end trace 7920d429778a6b5d ]--- [ 0.115735] pinctrl core: initialized pinctrl subsystem [ 0.117384] regulator-dummy: no parameters [ 0.148783] NET: Registered protocol family 16 [ 0.152399] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.154718] xen:swiotlb_xen: Warning: only able to allocate 8 MB for software IO TLB [ 0.156824] software IO TLB [mem 0xad000000-0xad800000] (8MB) mapped at [c5000000-c57fffff] [ 0.172613] gpiochip_add: registered GPIOs 0 to 31 on device: gpio [ 0.173184] OMAP GPIO hardware version 0.1 [ 0.173881] gpiochip_add: registered GPIOs 32 to 63 on device: gpio [ 0.175095] gpiochip_add: registered GPIOs 64 to 95 on device: gpio [ 0.176273] gpiochip_add: registered GPIOs 96 to 127 on device: gpio [ 0.177467] gpiochip_add: registered GPIOs 128 to 159 on device: gpio [ 0.178697] gpiochip_add: registered GPIOs 160 to 191 on device: gpio [ 0.179865] gpiochip_add: registered GPIOs 192 to 223 on device: gpio [ 0.181047] gpiochip_add: registered GPIOs 224 to 255 on device: gpio [ 0.181873] platform 50000000.gpmc: Cannot lookup hwmod 'gpmc' [ 0.182047] omap-gpmc 50000000.gpmc: _od_fail_runtime_resume: FIXME: missing hwmod/omap_dev info [ 0.182062] omap-gpmc 50000000.gpmc: GPMC revision 6.0 [ 0.199543] No ATAGs? [ 0.199637] hw-breakpoint: Failed to enable monitor mode on CPU 0. [ 0.201312] OMAP DMA hardware revision 0.0 [ 0.218416] edma-dma-engine edma-dma-engine.0: Can't allocate PaRAM dummy slot [ 0.218453] edma-dma-engine: probe of edma-dma-engine.0 failed with error -5 [ 0.242352] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver [ 0.242663] xen:balloon: Initialising balloon driver [ 0.243011] xen_balloon: Initialising balloon driver [ 0.243768] of_get_named_gpiod_flags: can't parse gpios property of node '/fixedregulator-mmcsd[0]' [ 0.244107] vmmcsd_fixed: 3000 mV [ 0.246875] SCSI subsystem initialized [ 0.247403] usbcore: registered new interface driver usbfs [ 0.247521] usbcore: registered new interface driver hub [ 0.247739] usbcore: registered new device driver usb [ 0.248034] of_get_named_gpiod_flags exited with status 0 [ 0.248078] hsusb2_phy.4 supply vcc not found, using dummy regulator [ 0.248445] of_get_named_gpiod_flags exited with status 0 [ 0.248482] hsusb3_phy.5 supply vcc not found, using dummy regulator [ 0.249079] omap_i2c 48070000.i2c: could not find pctldev for node /ocp/pinmux@4a002840/pinmux_i2c1_pins, deferring probe [ 0.249100] platform 48070000.i2c: Driver omap_i2c requests probe deferral [ 0.249860] omap_i2c 48072000.i2c: bus 1 rev0.12 at 100 kHz [ 0.250464] omap_i2c 48060000.i2c: bus 2 rev0.12 at 100 kHz [ 0.251048] omap_i2c 4807a000.i2c: bus 3 rev0.12 at 100 kHz [ 0.251117] omap_i2c 4807c000.i2c: could not find pctldev for node /ocp/pinmux@4a002840/pinmux_i2c5_pins, deferring probe [ 0.251137] platform 4807c000.i2c: Driver omap_i2c requests probe deferral [ 0.253809] Switched to clocksource arch_sys_counter [ 0.343964] /thermal-zones/cpu_thermal/cooling-maps/map0: could not find phandle [ 0.343975] missing cooling_device property [ 0.343985] failed to build thermal zone cpu_thermal: -22 [ 0.344840] NET: Registered protocol family 2 [ 0.345926] TCP established hash table entries: 1024 (order: 0, 4096 bytes) [ 0.346021] TCP bind hash table entries: 1024 (order: 3, 36864 bytes) [ 0.346306] TCP: Hash tables configured (established 1024 bind 1024) [ 0.346377] TCP: reno registered [ 0.346394] UDP hash table entries: 256 (order: 2, 20480 bytes) [ 0.346539] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes) [ 0.347277] NET: Registered protocol family 1 [ 0.348104] RPC: Registered named UNIX socket transport module. [ 0.348113] RPC: Registered udp transport module. [ 0.348120] RPC: Registered tcp transport module. [ 0.348127] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.352189] futex hash table entries: 512 (order: 3, 32768 bytes) [ 0.444169] VFS: Disk quotas dquot_6.5.2 [ 0.444270] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.446013] NFS: Registering the id_resolver key type [ 0.446222] Key type id_resolver registered [ 0.446234] Key type id_legacy registered [ 0.446298] jffs2: version 2.2. (NAND) (SUMMARY) =C3=82=C2=A9 2001-2006= Red Hat, Inc. [ 0.446883] msgmni has been set to 223 [ 0.448962] io scheduler noop registered [ 0.448972] io scheduler deadline registered [ 0.449071] io scheduler cfq registered (default) [ 0.452169] pinctrl-single 4a002840.pinmux: 219 pins at pa fc002840 size 438 [ 0.452494] pinctrl-single 4ae0c840.pinmux: 28 pins at pa fce0c840 size 56 [ 0.454820] xen:xen_evtchn: Event-channel device installed [ 0.456206] pbias_mmc_omap5: 1800 <--> 3000 mV at 3000 mV [ 1.596803] console [hvc0] enabled [ 1.600320] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 1.610569] omap_uart 4806a000.serial: no wakeirq for uart0 [ 1.612277] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/serial@4806a000[0]' [ 1.621835] 4806a000.serial: ttyO0 at MMIO 0x4806a000 (irq =3D 104, base_baud =3D 3000000) is a OMAP UART0 [ 1.631724] omap_uart 4806c000.serial: no wakeirq for uart0 [ 1.636481] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/serial@4806c000[0]' [ 1.645825] 4806c000.serial: ttyO1 at MMIO 0x4806c000 (irq =3D 105, base_baud =3D 3000000) is a OMAP UART1 [ 1.656047] omap_uart 4806e000.serial: no wakeirq for uart0 [ 1.660586] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/serial@4806e000[0]' [ 1.669965] 4806e000.serial: ttyO3 at MMIO 0x4806e000 (irq =3D 102, base_baud =3D 3000000) is a OMAP UART3 [ 1.679855] omap_uart 48066000.serial: no wakeirq for uart0 [ 1.684819] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/serial@48066000[0]' [ 1.694130] 48066000.serial: ttyO4 at MMIO 0x48066000 (irq =3D 137, base_baud =3D 3000000) is a OMAP UART4 [ 1.703960] omap_uart 48068000.serial: no wakeirq for uart0 [ 1.708896] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/serial@48068000[0]' [ 1.718255] 48068000.serial: ttyO5 at MMIO 0x48068000 (irq =3D 138, base_baud =3D 3000000) is a OMAP UART5 [ 1.742766] brd: module loaded [ 1.750884] loop: module loaded [ 1.753014] mtdoops: mtd device (mtddev=3Dname/number) must be supplied [ 1.759336] xen_netfront: Initialising Xen virtual ethernet driver [ 1.761573] usbcore: registered new interface driver asix [ 1.766921] usbcore: registered new interface driver ax88179_178a [ 1.773061] usbcore: registered new interface driver cdc_ether [ 1.779050] usbcore: registered new interface driver smsc95xx [ 1.784854] usbcore: registered new interface driver net1080 [ 1.790599] usbcore: registered new interface driver cdc_subset [ 1.796636] usbcore: registered new interface driver zaurus [ 1.802323] usbcore: registered new interface driver cdc_ncm [ 1.808547] usbcore: registered new interface driver cdc_wdm [ 1.813872] usbcore: registered new interface driver usb-storage [ 1.819940] usbcore: registered new interface driver usbtest [ 1.826825] mousedev: PS/2 mouse device common for all mice [ 1.832999] i2c /dev entries driver [ 1.836167] Driver for 1-wire Dallas network protocol. [ 1.842305] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec [ 1.847437] xen_wdt: Xen WatchDog Timer Driver v0.01 [ 1.852498] xen_wdt: cannot register miscdev on minor=3D130 (-16) [ 1.858117] wdt: probe of wdt failed with error -16 [ 1.863712] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@4809c000[0]' [ 1.871857] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@4809c000[0]' [ 1.881916] omap_hsmmc 4809c000.mmc: pins are not configured from the driver [ 1.923830] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@480b4000[0]' [ 1.926990] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@480b4000[0]' [ 1.936168] omap_hsmmc 480b4000.mmc: pins are not configured from the driver [ 1.959525] mmc0: host does not support reading read-only switch. assuming write-enable. [ 1.962164] mmc0: new SDHC card at address 0001 [ 1.967872] mmcblk0: mmc0:0001 Team 3.71 GiB [ 1.973840] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@480ad000[0]' [ 1.979958] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@480ad000[0]' [ 1.983851] mmcblk0: p1 p2 [ 1.991853] 480ad000.mmc supply vmmc not found, using dummy regulator [ 1.998376] omap_hsmmc 480ad000.mmc: pins are not configured from the driver [ 2.005661] omap_hsmmc 480ad000.mmc: could not set regulator OCR (-22) [ 2.043817] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@480d1000[0]' [ 2.046988] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@480d1000[0]' [ 2.055992] 480d1000.mmc supply vmmc not found, using dummy regulator [ 2.056760] mmc1: BKOPS_EN bit is not set [ 2.059364] mmc1: new high speed MMC card at address 0001 [ 2.072079] omap_hsmmc 480d1000.mmc: could not set regulator OCR (-22) [ 2.073811] mmcblk1: mmc1:0001 SEM04G 3.68 GiB [ 2.074048] mmcblk1boot0: mmc1:0001 SEM04G partition 1 2.00 MiB [ 2.074291] mmcblk1boot1: mmc1:0001 SEM04G partition 2 2.00 MiB [ 2.078427] Alternate GPT is invalid, using primary GPT. [ 2.078444] mmcblk1: p1 p2 p3 p4 p5 p6 p7 [ 2.083838] mmcblk1boot1: unknown partition table [ 2.086027] mmcblk1boot0: unknown partition table [ 2.114607] omap_hsmmc 480d1000.mmc: pins are not configured from the driver [ 2.121951] omap_hsmmc 480d1000.mmc: could not set regulator OCR (-22) [ 2.163840] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@480d5000[0]' [ 2.166999] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@480d5000[0]' [ 2.176026] 480d5000.mmc supply vmmc not found, using dummy regulator [ 2.182463] omap_hsmmc 480d5000.mmc: could not set regulator OCR (-22) [ 2.189017] omap_hsmmc 480d5000.mmc: pins are not configured from the driver [ 2.196402] omap_hsmmc 480d5000.mmc: could not set regulator OCR (-22) [ 2.234283] usbcore: registered new interface driver usbhid [ 2.234383] usbhid: USB HID core driver [ 2.239037] oprofile: no performance counters [ 2.243250] oprofile: using timer interrupt. [ 2.247320] TCP: cubic registered [ 2.250433] Initializing XFRM netlink socket [ 2.254855] NET: Registered protocol family 17 [ 2.259367] NET: Registered protocol family 15 [ 2.264072] Key type dns_resolver registered [ 2.268932] ThumbEE CPU extension supported. [ 2.272598] Registering SWP/SWPB emulation handler [ 2.282613] palmas 0-0048: Irq flag is 0x00000000 [ 2.287428] palmas 0-0048: Muxing GPIO 2, PWM 0, LED 0 [ 2.328791] smps123: 600 <--> 1500 mV at 1060 mV [ 2.332072] smps45: 600 <--> 1310 mV at 1030 mV [ 2.336652] smps6: 1200 mV [ 2.339842] smps7: 1800 mV [ 2.342932] smps8: 600 <--> 1310 mV at 1040 mV [ 2.346011] smps9: 2100 mV [ 2.348275] smps10_out2: 5000 mV [ 2.351260] smps10_out1: 5000 mV [ 2.353777] ldo1: 1500 <--> 1800 mV [ 2.358517] ldo2: 2800 mV [ 2.362135] ldo3: 1500 mV [ 2.363802] ldo4: 1500 <--> 1800 mV [ 2.368464] ldo5: 1800 mV [ 2.372898] ldo6: 1200 mV [ 2.375134] ldo7: 2000 mV [ 2.378081] ldo8: 3000 mV [ 2.380662] ldo9: 1800 <--> 3000 mV at 3000 mV [ 2.384241] ldoln: 1800 mV [ 2.387238] ldousb: 3250 mV [ 2.388537] REGEN1: no parameters [ 2.391024] REGEN2: no parameters [ 2.394775] regen3: no parameters [ 2.398352] SYSEN1: no parameters [ 2.401215] SYSEN2: no parameters [ 2.404489] omap_i2c 48070000.i2c: bus 0 rev0.12 at 400 kHz [ 2.411055] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz [ 2.416843] drivers/rtc/hctosys.c: unable to open rtc device (rtc0) [ 2.448585] EXT3-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (240) [ 2.453480] EXT2-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (244) [ 2.602885] EXT4-fs (mmcblk0p2): recovery complete [ 2.605400] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 2.610379] VFS: Mounted root (ext4 filesystem) on device 179:2. [ 2.623192] devtmpfs: mounted [ 2.623584] Freeing unused kernel memory: 340K (c079e000 - c07f3000) INIT: version 2.88 booting Starting udev [ 3.169771] udev[871]: starting version 164 [ 5.205065] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. [ 5.400187] EXT4-fs (mmcblk1p4): recovery complete [ 5.400309] EXT4-fs (mmcblk1p4): mounted filesystem with ordered data mode. Opts: (null) [ 5.492162] random: nonblocking pool is initialized ERROR: could not open directory /lib/modules/3.15.0-rc2-00199-g0c0a3e5-dirty: No such file or directory WARNING: -e needs -E or -F ERROR: could not open directory /lib/modules/3.15.0-rc2-00199-g0c0a3e5-dirty: No such file or directory FATAL: could not search modules: No such file or directory Starting Bootlog daemon: bootlogd: cannot allocate pseudo tty: No such file or directory bootlogd. [ 5.831227] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=3Dordered ALSA: Restoring mixer settings... Configuring network interfaces... /usr/sbin/alsactl: load_state:1686: No soundcards found... ifconfig: SIOCGIFFLAGS: No such device done. hwclock: can't open '/dev/misc/rtc': No such file or directory Mon Jul 1 15:13:00 UTC 2013 hwclock: can't open '/dev/misc/rtc': No such file or directory INIT: Entering runlevel: 5 Starting telnet daemon. hwclock: can't open '/dev/misc/rtc': No such file or directory Starting syslogd/klogd: done Starting thttpd. Stopping Bootlog daemon: bootlogd. ***************************************************************************= ************************************************************************ no console appears .. i guess the problem in the file system ... but this file works fine with the linux kernel in omap5 without the xen hypervisor should i make any changement in the rootfs so it can works with xen hypervisor !! or any other solution !! Regards On Fri, Mar 11, 2016 at 6:16 PM, Wei Liu wrote: > Add back xen-devel > > On Fri, Mar 11, 2016 at 05:23:22PM +0100, Safa Hamza wrote: > > ok .. can u tell me how compile xen with debug symbols !! i have > xen-syms > > after compiling xen with "make dist-xen XEN_TARGET_ARCH=3Darm32 > > CROSS_COMPILE=3Darm-linux-gnueabihf- CONFIG_EARLY_PRINTK=3Domap5432" = is > this > > the kernel with debug symbols > > > > I'm not sure if you did the right thing because I've never done any ARM > development. I'll let other people answer your question. > > Wei. > > > On Fri, Mar 11, 2016 at 5:09 PM, Wei Liu wrote: > > > > > On Fri, Mar 11, 2016 at 11:02:26AM -0500, Konrad Rzeszutek Wilk wrote= : > > > > On Fri, Mar 11, 2016 at 04:47:47PM +0100, Safa Hamza wrote: > > > > > now i did just like u said ... a new error appears > > > > > > > > Adding XEn-devel back. Please reply all. > > > > > > > > > > > > > *************************************************************************= ***** > > > > > U-Boot# fdt addr $dtb_addr_r > > > > > U-Boot# fdt resize > > > > > U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bootargs\" > > > > > U-Boot# fdt resize > > > > > U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\" > > > > > U-Boot# fdt resize > > > > > U-Boot# fdt mknode /chosen modules > > > > > U-Boot# fdt set /chosen/modules '#address-cells' <1> > > > > > U-Boot# fdt set /chosen/modules '#size-cells' <1> > > > > > U-Boot# fdt mknode /chosen/modules module@0 > > > > > libfdt fdt_add_subnode(): FDT_ERR_NOSPACE > > > > > > > > > *************************************************************************= ***** > > > > > but when i wrote fdt resize before fdt mknode /chosen/modules > > > module@0 > > > > > this error disappear but still the execution stops as i mentioned > > > before > > > > > > > > > > > The message seems quite straight-forward to me -- one of the libfdt > > > function call failed with some error. > > > > > > I'm afraid you need to do some manual debugging to figure out what we= nt > > > wrong. > > > > > > Wei. > > > > > > > > On Fri, Mar 11, 2016 at 4:20 PM, Konrad Rzeszutek Wilk < > > > > > konrad.wilk@oracle.com> wrote: > > > > > > > > > > > On Fri, Mar 11, 2016 at 10:20:01AM -0500, Konrad Rzeszutek Wilk > > > wrote: > > > > > > > On Fri, Mar 11, 2016 at 04:05:58PM +0100, Safa Hamza wrote: > > > > > > > > > > > > And please do not drop Xen-devel. Adding it back on. > > > > > > > > > > > > > > i did like u said but nothing change .. > > > > > > > > > > > > > > > > > > > > > > No you didn't. See below: > > > > > > > > U-Boot# setenv dom0_bootargs 'console=3Dhvc0,115200n8 > > > earlyprintk=3Dxen > > > > > > debug' > > > > > > > > > > > > > > You still have 115200n8 > > > > > > > > > > > > > > _______________________________________________ > > > > Xen-devel mailing list > > > > Xen-devel@lists.xen.org > > > > http://lists.xen.org/xen-devel > > > > --047d7bd75df2642d8e052e1cb333 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
i solve the problem by degugging the linux kernel .. the p= roblem was the instruction omap_smc1 ..i'm not sure about what it did b= ut when i delete this instruction it works ... but i face another problem .= . the execution now stops in=C2=A0
=C2=A0******************************= ***************************************************************************= **************************************************
U-Boot SPL 2013.10-rc2 (Mar 08 2016 - 14:23:51)
OMAP5432 ES2.0
SPL: Please implement spl_start_uboot() for your board
SPL: Direct Linux boot not active!
reading u-boot.img
= reading u-boot.img


U-Boot 201= 3.10-rc2 (Mar 08 2016 - 14:23:51)

=
CPU =C2=A0: OMAP5432 ES2.0
Board: OMAP5432 uEVM
I2C: =C2=A0 ready
DRAM: =C2= =A02 GiB
MMC: =C2=A0 OMAP SD/MMC: 0, O= MAP SD/MMC: 1
Net: =C2=A0 No ethernet = found.
Hit any key to stop autoboot: = =C2=A00
mmc0 is current device
reading boot.scr
972 bytes read in 5 ms (189.5 KiB/s)
Running bootscript from mmc0 ...
## Executing script at 82000000
rea= ding omap5-uevm.dtb
44836 bytes read i= n 8 ms (5.3 MiB/s)
reading xen-uImage<= /div>
787372 bytes read in 44 ms (17.1 MiB/s= )
reading zImage
4283720 bytes read in 215 ms (19 MiB/s)
## Booting kernel from Legacy Image at 90000000 ...
=
=C2=A0 =C2=A0Image Name:
=C2=A0 =C2=A0Image Type: =C2=A0 ARM Linux Kernel Image (= uncompressed)
=C2=A0 =C2=A0Data Size: = =C2=A0 =C2=A0787308 Bytes =3D 768.9 KiB
=C2=A0 =C2=A0Load Address: 80200000
= =C2=A0 =C2=A0Entry Point: =C2=A080200000
=C2=A0 =C2=A0Verifying Checksum ... OK
## Flattened Device Tree blob at 825f0000
=C2=A0 =C2=A0Booting using the fdt blob at 0x825f0000
=C2=A0 =C2=A0Loading Kernel Image ... OK
=C2=A0 =C2=A0reserving fdt memory region: addr= =3D825f0000 size=3Dc000
=C2=A0 =C2=A0U= sing Device Tree in place at 825f0000, end 825fefff

Starting kernel ...=

- UART enabled -
- CPU 00000000 b= ooting -
- Xen starting in Hyp mode -<= /div>
- Zero BSS -
- Setting up control registers -
- Turning on paging -
- Ready -=
(XEN) Checking for initrd in /chosen<= /div>
(XEN) RAM: 0000000080000000 - 00000000= feffffff
(XEN)
(XEN) MODULE[0]: 00000000825f0000 - 00000000825fc000 Device T= ree
(XEN) MODULE[1]: 00000000a0000000 = - 00000000a0a00000 Kernel
(XEN) =C2=A0= RESVD[0]: 00000000825f0000 - 00000000825fc000
(XEN)
(XEN) Command line: sync= _console console=3Ddtuart dtuart=3Dserial2
(XEN) Placing Xen at 0x00000000fee00000-0x00000000ff000000
(XEN) Update BOOTMOD_XEN from 0000000080200000-00= 00000080305701 =3D> 00000000fee00000-00000000fef05701
(XEN) Xen heap: 00000000fa000000-00000000fe000000 (16384= pages)
(XEN) Dom heap: 503808 pages
(XEN) Domain heap initialised
(XEN) Platform: TI OMAP5
(XEN) Looking for dtuart at "serial2", options &qu= ot;"
=C2=A0Xen 4.7-unstable
=
(XEN) Xen version 4.7-unstable (root@) (arm= -linux-gnueabihf-gcc (Linaro GCC 2014.11) 4.9.3 20141031 (prerelease)) debu= g=3Dy Tue Mar =C2=A01 15:02:30 CET 2016
(XEN) Latest ChangeSet: Sun Feb 28 16:03:51 2016 -0500 git:42391c6
<= div style=3D"font-size:12.8px">(XEN) Console output is synchronous.
(XEN) Processor: 412fc0f2: "ARM Limited&= quot;, variant: 0x2, part 0xc0f, rev 0x2
(XEN) 32-bit Execution:
(XEN) =C2= =A0 Processor Features: 00001131:00011011
(XEN) =C2=A0 =C2=A0 Instruction Sets: AArch32 A32 Thumb Thumb-2 ThumbEE= Jazelle
(XEN) =C2=A0 =C2=A0 Extension= s: GenericTimer Security
(XEN) =C2=A0 = Debug Features: 02010555
(XEN) =C2=A0 = Auxiliary Features: 00000000
(XEN) =C2= =A0 Memory Model Features: 10201105 20000000 01240000 02102211
(XEN) =C2=A0ISA Features: 02101110 13112111 212320= 41 11112131 10011142 00000000
(XEN) Se= t AuxCoreBoot1 to 00000000fee0004c (0020004c)
(XEN) Set AuxCoreBoot0 to 0x20
(XEN) Generic Timer IRQ: phys=3D30 hyp=3D26 virt=3D27 Freq: 6144 KHz
=
(XEN) GICv2: WARNING: The GICC size is too = small: 0x1000 expected 0x2000
(XEN) GI= Cv2 initialization:
(XEN) =C2=A0 =C2= =A0 =C2=A0 =C2=A0 gic_dist_addr=3D0000000048211000
(XEN) =C2=A0 =C2=A0 =C2=A0 =C2=A0 gic_cpu_addr=3D0000000048212= 000
(XEN) =C2=A0 =C2=A0 =C2=A0 =C2=A0 = gic_hyp_addr=3D0000000048214000
(XEN) = =C2=A0 =C2=A0 =C2=A0 =C2=A0 gic_vcpu_addr=3D0000000048216000
(XEN) =C2=A0 =C2=A0 =C2=A0 =C2=A0 gic_maintenance_ir= q=3D25
(XEN) GICv2: 192 lines, 2 cpus,= secure (IID 0000043b).
(XEN) Using sc= heduler: SMP Credit Scheduler (credit)
(XEN) Allocated console ring of 16 KiB.
(XEN) VFP implementer 0x41 architecture 4 part 0x30 variant 0xf rev 0x0<= /div>
(XEN) Bringing up CPU1
- CPU 00000001 booting -
- Xen starting in Hyp mode -
= - Setting up control registers -
- Tur= ning on paging -
- Ready -
(XEN) CPU 1 booted.
(XEN) Brought up 2 CPUs
(XEN) = P2M: 40-bit IPA
(XEN) P2M: 3 levels wi= th order-1 root, VTCR 0x80003558
(XEN)= I/O virtualisation disabled
(XEN) ***= LOADING DOMAIN 0 ***
(XEN) Loading ke= rnel from boot module @ 00000000a0000000
(XEN) Allocating 1:1 mappings totalling 128MB for dom0:
(XEN) BANK[0] 0x000000a8000000-0x000000b0000000 (128M= B)
(XEN) Grant table range: 0x000000fe= e00000-0x000000fee63000
(XEN) Loading = zImage from 00000000a0000000 to 00000000afa00000-00000000afe15d48
(XEN) Allocating PPI 16 for event channel inter= rupt
(XEN) Loading dom0 DTB to 0x00000= 000af800000-0x00000000af80aece
(XEN) S= crubbing Free RAM on 1 nodes using 2 CPUs
(XEN) ........done.
(XEN) Initial = low memory virq threshold set at 0x4000 pages.
(XEN) Std. Loglevel: All
(XEN= ) Guest Loglevel: All
(XEN) **********= ************************************
(= XEN) ******* WARNING: CONSOLE OUTPUT IS SYNCHRONOUS
(XEN) ******* This option is intended to aid debugging of Xen= by ensuring
(XEN) ******* that all ou= tput is synchronously delivered on the serial line.
(XEN) ******* However it can introduce SIGNIFICANT latencies = and affect
(XEN) ******* timekeeping. = It is NOT recommended for production use!
(XEN) **********************************************
(XEN) 3... 2... 1...
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to s= witch input to Xen)
(XEN) Freed 280kB = init memory.
[ =C2=A0 =C2=A00.000000] = Booting Linux on physical CPU 0x0
[ = =C2=A0 =C2=A00.000000] Linux version 3.15.0-rc2-00199-g0c0a3e5-dirty (safa@= safa-VirtualBox) (gcc version 4.9.2 (Ubuntu/Linaro 4.9.2-10ubuntu10) ) #6 S= MP Mon Mar 14 18:14:21 CET 2016
[ =C2= =A0 =C2=A00.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr= =3D10c5387d
[ =C2=A0 =C2=A00.000000] C= PU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
[ =C2=A0 =C2=A00.000000] Machine model: TI OMAP5 u= EVM board
[ =C2=A0 =C2=A00.000000] deb= ug: ignoring loglevel setting.
[ =C2= =A0 =C2=A00.000000] cma: CMA: reserved 16 MiB at ae800000
[ =C2=A0 =C2=A00.000000] Memory policy: Data cache wr= itealloc
[ =C2=A0 =C2=A00.000000] On n= ode 0 totalpages: 32512
[ =C2=A0 =C2= =A00.000000] free_area_init_node: node 0, pgdat c085ce00, node_mem_map c7df= 2000
[ =C2=A0 =C2=A00.000000] =C2=A0 N= ormal zone: 256 pages used for memmap
= [ =C2=A0 =C2=A00.000000] =C2=A0 Normal zone: 0 pages reserved
[ =C2=A0 =C2=A00.000000] =C2=A0 Normal zone: 32512 = pages, LIFO batch:7
[ =C2=A0 =C2=A00.0= 00000] psci: probing function IDs from device-tree
[ =C2=A0 =C2=A00.000000] OMAP5432 ES2.0
[ =C2=A0 =C2=A00.000000] PERCPU: Embedded 9 pages/cpu @c7db0= 000 s14784 r8192 d13888 u36864
[ =C2= =A0 =C2=A00.000000] pcpu-alloc: s14784 r8192 d13888 u36864 alloc=3D9*4096
[ =C2=A0 =C2=A00.000000] pcpu-alloc: [0= ] 0 [0] 1
[ =C2=A0 =C2=A00.000000] Bui= lt 1 zonelists in Zone order, mobility grouping on.=C2=A0 Total pages: 3225= 6
[ =C2=A0 =C2=A00.000000] Kernel comm= and line: console=3Dhvc0,115200n8 earlyprintk=3Dxen debug ignore_loglevel r= oot=3D/dev/mmcblk0p2 rw rootwait fixrtc
[ =C2=A0 =C2=A00.000000] PID hash table entries: 512 (order: -1, 2048 byt= es)
[ =C2=A0 =C2=A00.000000] Dentry ca= che hash table entries: 16384 (order: 4, 65536 bytes)
[ =C2=A0 =C2=A00.000000] Inode-cache hash table entries: 81= 92 (order: 3, 32768 bytes)
[ =C2=A0 = =C2=A00.000000] Memory: 98080K/130048K available (5672K kernel code, 441K r= wdata, 2092K rodata, 342K init, 5534K bss, 31968K reserved, 0K highmem)
[ =C2=A0 =C2=A00.000000] Virtual kernel m= emory layout:
[ =C2=A0 =C2=A00.000000]= =C2=A0 =C2=A0 vector =C2=A0: 0xffff0000 - 0xffff1000 =C2=A0 ( =C2=A0 4 kB)=
[ =C2=A0 =C2=A00.000000] =C2=A0 =C2= =A0 fixmap =C2=A0: 0xfff00000 - 0xfffe0000 =C2=A0 ( 896 kB)
[ =C2=A0 =C2=A00.000000] =C2=A0 =C2=A0 vmalloc : 0xc8= 800000 - 0xff000000 =C2=A0 ( 872 MB)
[= =C2=A0 =C2=A00.000000] =C2=A0 =C2=A0 lowmem =C2=A0: 0xc0000000 - 0xc800000= 0 =C2=A0 ( 128 MB)
[ =C2=A0 =C2=A00.00= 0000] =C2=A0 =C2=A0 pkmap =C2=A0 : 0xbfe00000 - 0xc0000000 =C2=A0 ( =C2=A0 = 2 MB)
[ =C2=A0 =C2=A00.000000] =C2=A0 = =C2=A0 modules : 0xbf000000 - 0xbfe00000 =C2=A0 ( =C2=A014 MB)
[ =C2=A0 =C2=A00.000000] =C2=A0 =C2=A0 =C2=A0 .tex= t : 0xc0008000 - 0xc079d4c4 =C2=A0 (7766 kB)
[ =C2=A0 =C2=A00.000000] =C2=A0 =C2=A0 =C2=A0 .init : 0xc079e000 - 0= xc07f39c0 =C2=A0 ( 343 kB)
[ =C2=A0 = =C2=A00.000000] =C2=A0 =C2=A0 =C2=A0 .data : 0xc07f4000 - 0xc0862600 =C2=A0= ( 442 kB)
[ =C2=A0 =C2=A00.000000] = =C2=A0 =C2=A0 =C2=A0 =C2=A0.bss : 0xc0862600 - 0xc0dc9f00 =C2=A0 (5535 kB)<= /div>
[ =C2=A0 =C2=A00.000000] Hierarchical = RCU implementation.
[ =C2=A0 =C2=A00.0= 00000] NR_IRQS:16 nr_irqs:16 16
[ =C2= =A0 =C2=A00.000000] OMAP clockevent source: timer1 at 32768 Hz
[ =C2=A0 =C2=A00.000000] sched_clock: 32 bits at 3= 2kHz, resolution 30517ns, wraps every 65536000000000ns
[ =C2=A0 =C2=A00.000000] OMAP clocksource: 32k_counter at = 32768 Hz
[ =C2=A0 =C2=A00.000305] Arch= itected cp15 timer(s) running at 6.14MHz (virt).
[ =C2=A0 =C2=A00.000309] sched_clock: 56 bits at 6MHz, resolutio= n 162ns, wraps every 2796202663936ns
[= =C2=A0 =C2=A00.000315] Switching to timer-based delay loop
[ =C2=A0 =C2=A00.001115] Console: colour dummy device= 80x30
[ =C2=A0 =C2=A00.001145] Lock d= ependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[ =C2=A0 =C2=A00.001152] ... MAX_LOCKDEP_SUBCL= ASSES: =C2=A08
[ =C2=A0 =C2=A00.001157= ] ... MAX_LOCK_DEPTH: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A048
[ =C2=A0 =C2=A00.001163] ... MAX_LOCKDEP_KEYS: =C2=A0= =C2=A0 =C2=A0 =C2=A08191
[ =C2=A0 =C2= =A00.001168] ... CLASSHASH_SIZE: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A04096
[ =C2=A0 =C2=A00.001173] ... MAX_LOCKDEP_= ENTRIES: =C2=A0 =C2=A0 16384
[ =C2=A0 = =C2=A00.001178] ... MAX_LOCKDEP_CHAINS: =C2=A0 =C2=A0 =C2=A032768
[ =C2=A0 =C2=A00.001182] ... CHAINHASH_SIZE: = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A016384
[ =C2=A0 =C2=A00.001188] =C2=A0memory used by lock dependency info: 3695 = kB
[ =C2=A0 =C2=A00.001193] =C2=A0per = task-struct memory footprint: 1152 bytes
[ =C2=A0 =C2=A00.001213] Calibrating delay loop (skipped), value calcula= ted using timer frequency.. 12.28 BogoMIPS (lpj=3D61440)
[ =C2=A0 =C2=A00.001224] pid_max: default: 32768 minimum= : 301
[ =C2=A0 =C2=A00.001515] Securit= y Framework initialized
[ =C2=A0 =C2= =A00.001608] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ =C2=A0 =C2=A00.001617] Mountpoint-cach= e hash table entries: 1024 (order: 0, 4096 bytes)
[ =C2=A0 =C2=A00.003039] CPU: Testing write buffer coherency: o= k
[ =C2=A0 =C2=A00.003679] /cpus/cpu@0= missing clock-frequency property
[ = =C2=A0 =C2=A00.003705] /cpus/cpu@1 missing clock-frequency property
[ =C2=A0 =C2=A00.003714] CPU0: thread -1, cpu= 0, socket 0, mpidr 80000000
[ =C2=A0 = =C2=A00.003847] Xen 4.7 support found, events_irq=3D16 gnttab_frame=3D0xfee= 00000
[ =C2=A0 =C2=A00.004015] xen:gra= nt_table: Grant tables using version 1 layout
[ =C2=A0 =C2=A00.004053] Grant table initialized
[ =C2=A0 =C2=A00.004103] xen:events: Using FIFO-based AB= I
[ =C2=A0 =C2=A00.004125] Xen: initia= lizing cpu0
[ =C2=A0 =C2=A00.004182] S= etting up static identity map for 0xa8568c20 - 0xa8568c90
[ =C2=A0 =C2=A00.007160] CPU1: Booted secondary proce= ssor
[ =C2=A0 =C2=A00.007222] Xen: ini= tializing cpu1
[ =C2=A0 =C2=A00.007261= ] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ =C2=A0 =C2=A00.007599] Brought up 2 CPUs
[ =C2=A0 =C2=A00.007612] SMP: Total of 2 processors activ= ated.
[ =C2=A0 =C2=A00.007617] CPU: Al= l CPU(s) started in SVC mode.
[ =C2=A0= =C2=A00.009402] devtmpfs: initialized
[ =C2=A0 =C2=A00.018309] VFP support v0.3: implementor 41 architecture 4 p= art 30 variant f rev 0
[ =C2=A0 =C2=A0= 0.019398] omap_hwmod: l3_main_3 using broken dt data from ocp
[ =C2=A0 =C2=A00.020420] omap_hwmod: l3_main_2 usin= g broken dt data from ocp
[ =C2=A0 =C2= =A00.041658] ------------[ cut here ]------------
[ =C2=A0 =C2=A00.041676] WARNING: CPU: 0 PID: 1 at arch/arm/mac= h-omap2/omap_hwmod.c:2538 _init+0x38c/0x3dc()
[ =C2=A0 =C2=A00.041682] omap_hwmod: mailbox: doesn't have mpu = register target base
[ =C2=A0 =C2=A00.= 041687] Modules linked in:
[ =C2=A0 = =C2=A00.041700] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.15.0-rc2-00199-= g0c0a3e5-dirty #6
[ =C2=A0 =C2=A00.041= 718] [<c0015b04>] (unwind_backtrace) from [<c0012848>] (show_st= ack+0x10/0x14)
[ =C2=A0 =C2=A00.041732= ] [<c0012848>] (show_stack) from [<c055d608>] (dump_stack+0x84/= 0x9c)
[ =C2=A0 =C2=A00.041746] [<c0= 55d608>] (dump_stack) from [<c0039b00>] (warn_slowpath_common+0x68= /0x8c)
[ =C2=A0 =C2=A00.041757] [<c= 0039b00>] (warn_slowpath_common) from [<c0039b54>] (warn_slowpath_= fmt+0x30/0x40)
[ =C2=A0 =C2=A00.041770= ] [<c0039b54>] (warn_slowpath_fmt) from [<c07aa4c4>] (_init+0x3= 8c/0x3dc)
[ =C2=A0 =C2=A00.041784] [&l= t;c07aa4c4>] (_init) from [<c00281e0>] (omap_hwmod_for_each+0x34/0= x60)
[ =C2=A0 =C2=A00.041795] [<c00= 281e0>] (omap_hwmod_for_each) from [<c07aa9b0>] (__omap_hwmod_setu= p_all+0x24/0x40)
[ =C2=A0 =C2=A00.0418= 06] [<c07aa9b0>] (__omap_hwmod_setup_all) from [<c000896c>] (do= _one_initcall+0xe8/0x158)
[ =C2=A0 =C2= =A00.041819] [<c000896c>] (do_one_initcall) from [<c079ec10>] (= kernel_init_freeable+0x100/0x1c4)
[ = =C2=A0 =C2=A00.041830] [<c079ec10>] (kernel_init_freeable) from [<= c05592c0>] (kernel_init+0x8/0xec)
[= =C2=A0 =C2=A00.041842] [<c05592c0>] (kernel_init) from [<c000ee68= >] (ret_from_fork+0x14/0x2c)
[ =C2= =A0 =C2=A00.041880] ---[ end trace 7920d429778a6b5c ]---
[ =C2=A0 =C2=A00.066049] ------------[ cut here ]-------= -----
[ =C2=A0 =C2=A00.066062] WARNING= : CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2538 _init+0x38c/0x3dc(= )
[ =C2=A0 =C2=A00.066069] omap_hwmod:= uart3: doesn't have mpu register target base
[ =C2=A0 =C2=A00.066073] Modules linked in:
[ =C2=A0 =C2=A00.066084] CPU: 0 PID: 1 Comm: swapper/0 Ta= inted: G =C2=A0 =C2=A0 =C2=A0 =C2=A0W =C2=A0 =C2=A0 3.15.0-rc2-00199-g0c0a3= e5-dirty #6
[ =C2=A0 =C2=A00.066097] [= <c0015b04>] (unwind_backtrace) from [<c0012848>] (show_stack+0x= 10/0x14)
[ =C2=A0 =C2=A00.066108] [<= ;c0012848>] (show_stack) from [<c055d608>] (dump_stack+0x84/0x9c)<= /div>
[ =C2=A0 =C2=A00.066120] [<c055d608= >] (dump_stack) from [<c0039b00>] (warn_slowpath_common+0x68/0x8c)=
[ =C2=A0 =C2=A00.066131] [<c0039b0= 0>] (warn_slowpath_common) from [<c0039b54>] (warn_slowpath_fmt+0x= 30/0x40)
[ =C2=A0 =C2=A00.066143] [<= ;c0039b54>] (warn_slowpath_fmt) from [<c07aa4c4>] (_init+0x38c/0x3= dc)
[ =C2=A0 =C2=A00.066155] [<c07a= a4c4>] (_init) from [<c00281e0>] (omap_hwmod_for_each+0x34/0x60)
[ =C2=A0 =C2=A00.066166] [<c00281e0&= gt;] (omap_hwmod_for_each) from [<c07aa9b0>] (__omap_hwmod_setup_all+= 0x24/0x40)
[ =C2=A0 =C2=A00.066177] [&= lt;c07aa9b0>] (__omap_hwmod_setup_all) from [<c000896c>] (do_one_i= nitcall+0xe8/0x158)
[ =C2=A0 =C2=A00.0= 66188] [<c000896c>] (do_one_initcall) from [<c079ec10>] (kernel= _init_freeable+0x100/0x1c4)
[ =C2=A0 = =C2=A00.066199] [<c079ec10>] (kernel_init_freeable) from [<c05592c= 0>] (kernel_init+0x8/0xec)
[ =C2=A0= =C2=A00.066209] [<c05592c0>] (kernel_init) from [<c000ee68>] (= ret_from_fork+0x14/0x2c)
[ =C2=A0 =C2= =A00.066215] ---[ end trace 7920d429778a6b5d ]---
[ =C2=A0 =C2=A00.115735] pinctrl core: initialized pinctrl subs= ystem
[ =C2=A0 =C2=A00.117384] regulat= or-dummy: no parameters
[ =C2=A0 =C2= =A00.148783] NET: Registered protocol family 16
[ =C2=A0 =C2=A00.152399] DMA: preallocated 256 KiB pool for atomi= c coherent allocations
[ =C2=A0 =C2=A0= 0.154718] xen:swiotlb_xen: Warning: only able to allocate 8 MB for software= IO TLB
[ =C2=A0 =C2=A00.156824] softw= are IO TLB [mem 0xad000000-0xad800000] (8MB) mapped at [c5000000-c57fffff]<= /div>
[ =C2=A0 =C2=A00.172613] gpiochip_add:= registered GPIOs 0 to 31 on device: gpio
[ =C2=A0 =C2=A00.173184] OMAP GPIO hardware version 0.1
[ =C2=A0 =C2=A00.173881] gpiochip_add: registered GPI= Os 32 to 63 on device: gpio
[ =C2=A0 = =C2=A00.175095] gpiochip_add: registered GPIOs 64 to 95 on device: gpio
[ =C2=A0 =C2=A00.176273] gpiochip_add: re= gistered GPIOs 96 to 127 on device: gpio
[ =C2=A0 =C2=A00.177467] gpiochip_add: registered GPIOs 128 to 159 on de= vice: gpio
[ =C2=A0 =C2=A00.178697] gp= iochip_add: registered GPIOs 160 to 191 on device: gpio
[ =C2=A0 =C2=A00.179865] gpiochip_add: registered GPIOs 1= 92 to 223 on device: gpio
[ =C2=A0 =C2= =A00.181047] gpiochip_add: registered GPIOs 224 to 255 on device: gpio
[ =C2=A0 =C2=A00.181873] platform 50000000= .gpmc: Cannot lookup hwmod 'gpmc'
[ =C2=A0 =C2=A00.182047] omap-gpmc 50000000.gpmc: _od_fail_runtime_resu= me: FIXME: missing hwmod/omap_dev info
[ =C2=A0 =C2=A00.182062] omap-gpmc 50000000.gpmc: GPMC revision 6.0
<= div style=3D"font-size:12.8px">[ =C2=A0 =C2=A00.199543] No ATAGs?
[ =C2=A0 =C2=A00.199637] hw-breakpoint: Failed = to enable monitor mode on CPU 0.
[ =C2= =A0 =C2=A00.201312] OMAP DMA hardware revision 0.0
[ =C2=A0 =C2=A00.218416] edma-dma-engine edma-dma-engine.0: Ca= n't allocate PaRAM dummy slot
[ = =C2=A0 =C2=A00.218453] edma-dma-engine: probe of edma-dma-engine.0 failed w= ith error -5
[ =C2=A0 =C2=A00.242352] = omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver
[ =C2=A0 =C2=A00.242663] xen:balloon: Initialisin= g balloon driver
[ =C2=A0 =C2=A00.2430= 11] xen_balloon: Initialising balloon driver
[ =C2=A0 =C2=A00.243768] of_get_named_gpiod_flags: can't parse g= pios property of node '/fixedregulator-mmcsd[0]'
[ =C2=A0 =C2=A00.244107] vmmcsd_fixed: 3000 mV
[ =C2=A0 =C2=A00.246875] SCSI subsystem initial= ized
[ =C2=A0 =C2=A00.247403] usbcore:= registered new interface driver usbfs
[ =C2=A0 =C2=A00.247521] usbcore: registered new interface driver hub
[ =C2=A0 =C2=A00.247739] usbcore: register= ed new device driver usb
[ =C2=A0 =C2= =A00.248034] of_get_named_gpiod_flags exited with status 0
[ =C2=A0 =C2=A00.248078] hsusb2_phy.4 supply vcc not = found, using dummy regulator
[ =C2=A0 = =C2=A00.248445] of_get_named_gpiod_flags exited with status 0
[ =C2=A0 =C2=A00.248482] hsusb3_phy.5 supply vcc no= t found, using dummy regulator
[ =C2= =A0 =C2=A00.249079] omap_i2c 48070000.i2c: could not find pctldev for node = /ocp/pinmux@4a002840/pinmux_i2c1_pins, deferring probe
[ =C2=A0 =C2=A00.249100] platform 48070000.i2c: Driver oma= p_i2c requests probe deferral
[ =C2=A0= =C2=A00.249860] omap_i2c 48072000.i2c: bus 1 rev0.12 at 100 kHz
[ =C2=A0 =C2=A00.250464] omap_i2c 48060000.i2c: = bus 2 rev0.12 at 100 kHz
[ =C2=A0 =C2= =A00.251048] omap_i2c 4807a000.i2c: bus 3 rev0.12 at 100 kHz
[ =C2=A0 =C2=A00.251117] omap_i2c 4807c000.i2c: coul= d not find pctldev for node /ocp/pinmux@4a002840/pinmux_i2c5_pins, deferrin= g probe
[ =C2=A0 =C2=A00.251137] platf= orm 4807c000.i2c: Driver omap_i2c requests probe deferral
[ =C2=A0 =C2=A00.253809] Switched to clocksource arch= _sys_counter
[ =C2=A0 =C2=A00.343964] = /thermal-zones/cpu_thermal/cooling-maps/map0: could not find phandle
<= div style=3D"font-size:12.8px">[ =C2=A0 =C2=A00.343975] missing cooling_dev= ice property
[ =C2=A0 =C2=A00.343985] = failed to build thermal zone cpu_thermal: -22
[ =C2=A0 =C2=A00.344840] NET: Registered protocol family 2
[ =C2=A0 =C2=A00.345926] TCP established hash = table entries: 1024 (order: 0, 4096 bytes)
[ =C2=A0 =C2=A00.346021] TCP bind hash table entries: 1024 (order: 3, = 36864 bytes)
[ =C2=A0 =C2=A00.346306] = TCP: Hash tables configured (established 1024 bind 1024)
[ =C2=A0 =C2=A00.346377] TCP: reno registered
[ =C2=A0 =C2=A00.346394] UDP hash table entries:= 256 (order: 2, 20480 bytes)
[ =C2=A0 = =C2=A00.346539] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes)
[ =C2=A0 =C2=A00.347277] NET: Registered= protocol family 1
[ =C2=A0 =C2=A00.34= 8104] RPC: Registered named UNIX socket transport module.
[ =C2=A0 =C2=A00.348113] RPC: Registered udp transpor= t module.
[ =C2=A0 =C2=A00.348120] RPC= : Registered tcp transport module.
[ = =C2=A0 =C2=A00.348127] RPC: Registered tcp NFSv4.1 backchannel transport mo= dule.
[ =C2=A0 =C2=A00.352189] futex h= ash table entries: 512 (order: 3, 32768 bytes)
[ =C2=A0 =C2=A00.444169] VFS: Disk quotas dquot_6.5.2
[ =C2=A0 =C2=A00.444270] Dquot-cache hash table en= tries: 1024 (order 0, 4096 bytes)
[ = =C2=A0 =C2=A00.446013] NFS: Registering the id_resolver key type
[ =C2=A0 =C2=A00.446222] Key type id_resolver re= gistered
[ =C2=A0 =C2=A00.446234] Key = type id_legacy registered
[ =C2=A0 =C2= =A00.446298] jffs2: version 2.2. (NAND) (SUMMARY) =C2=A0=C3=82=C2=A9 2001-2= 006 Red Hat, Inc.
[ =C2=A0 =C2=A00.446= 883] msgmni has been set to 223
[ =C2= =A0 =C2=A00.448962] io scheduler noop registered
[ =C2=A0 =C2=A00.448972] io scheduler deadline registered
<= div style=3D"font-size:12.8px">[ =C2=A0 =C2=A00.449071] io scheduler cfq re= gistered (default)
[ =C2=A0 =C2=A00.45= 2169] pinctrl-single 4a002840.pinmux: 219 pins at pa fc002840 size 438
[ =C2=A0 =C2=A00.452494] pinctrl-single 4a= e0c840.pinmux: 28 pins at pa fce0c840 size 56
[ =C2=A0 =C2=A00.454820] xen:xen_evtchn: Event-channel device insta= lled
[ =C2=A0 =C2=A00.456206] pbias_mm= c_omap5: 1800 <--> 3000 mV at 3000 mV
[ =C2=A0 =C2=A01.596803] console [hvc0] enabled
[ =C2=A0 =C2=A01.600320] Serial: 8250/16550 driver, 4 ports= , IRQ sharing enabled
[ =C2=A0 =C2=A01= .610569] omap_uart 4806a000.serial: no wakeirq for uart0
[ =C2=A0 =C2=A01.612277] of_get_named_gpiod_flags: can&#= 39;t parse gpios property of node '/ocp/serial@4806a000[0]'
[ =C2=A0 =C2=A01.621835] 4806a000.serial: tty= O0 at MMIO 0x4806a000 (irq =3D 104, base_baud =3D 3000000) is a OMAP UART0<= /div>
[ =C2=A0 =C2=A01.631724] omap_uart 480= 6c000.serial: no wakeirq for uart0
[ = =C2=A0 =C2=A01.636481] of_get_named_gpiod_flags: can't parse gpios prop= erty of node '/ocp/serial@4806c000[0]'
[ =C2=A0 =C2=A01.645825] 4806c000.serial: ttyO1 at MMIO 0x4806c000= (irq =3D 105, base_baud =3D 3000000) is a OMAP UART1
[ =C2=A0 =C2=A01.656047] omap_uart 4806e000.serial: no wake= irq for uart0
[ =C2=A0 =C2=A01.660586]= of_get_named_gpiod_flags: can't parse gpios property of node '/ocp= /serial@4806e000[0]'
[ =C2=A0 =C2= =A01.669965] 4806e000.serial: ttyO3 at MMIO 0x4806e000 (irq =3D 102, base_b= aud =3D 3000000) is a OMAP UART3
[ =C2= =A0 =C2=A01.679855] omap_uart 48066000.serial: no wakeirq for uart0
[ =C2=A0 =C2=A01.684819] of_get_named_gpiod_f= lags: can't parse gpios property of node '/ocp/serial@48066000[0]&#= 39;
[ =C2=A0 =C2=A01.694130] 48066000.= serial: ttyO4 at MMIO 0x48066000 (irq =3D 137, base_baud =3D 3000000) is a = OMAP UART4
[ =C2=A0 =C2=A01.703960] om= ap_uart 48068000.serial: no wakeirq for uart0
[ =C2=A0 =C2=A01.708896] of_get_named_gpiod_flags: can't parse = gpios property of node '/ocp/serial@48068000[0]'
[ =C2=A0 =C2=A01.718255] 48068000.serial: ttyO5 at MMIO = 0x48068000 (irq =3D 138, base_baud =3D 3000000) is a OMAP UART5
[ =C2=A0 =C2=A01.742766] brd: module loaded
=
[ =C2=A0 =C2=A01.750884] loop: module loade= d
[ =C2=A0 =C2=A01.753014] mtdoops: mt= d device (mtddev=3Dname/number) must be supplied
[ =C2=A0 =C2=A01.759336] xen_netfront: Initialising Xen virtual = ethernet driver
[ =C2=A0 =C2=A01.76157= 3] usbcore: registered new interface driver asix
[ =C2=A0 =C2=A01.766921] usbcore: registered new interface drive= r ax88179_178a
[ =C2=A0 =C2=A01.773061= ] usbcore: registered new interface driver cdc_ether
[ =C2=A0 =C2=A01.779050] usbcore: registered new interface d= river smsc95xx
[ =C2=A0 =C2=A01.784854= ] usbcore: registered new interface driver net1080
[ =C2=A0 =C2=A01.790599] usbcore: registered new interface dri= ver cdc_subset
[ =C2=A0 =C2=A01.796636= ] usbcore: registered new interface driver zaurus
[ =C2=A0 =C2=A01.802323] usbcore: registered new interface driv= er cdc_ncm
[ =C2=A0 =C2=A01.808547] us= bcore: registered new interface driver cdc_wdm
[ =C2=A0 =C2=A01.813872] usbcore: registered new interface driver = usb-storage
[ =C2=A0 =C2=A01.819940] u= sbcore: registered new interface driver usbtest
[ =C2=A0 =C2=A01.826825] mousedev: PS/2 mouse device common for a= ll mice
[ =C2=A0 =C2=A01.832999] i2c /= dev entries driver
[ =C2=A0 =C2=A01.83= 6167] Driver for 1-wire Dallas network protocol.
[ =C2=A0 =C2=A01.842305] omap_wdt: OMAP Watchdog Timer Rev 0x01:= initial timeout 60 sec
[ =C2=A0 =C2= =A01.847437] xen_wdt: Xen WatchDog Timer Driver v0.01
[ =C2=A0 =C2=A01.852498] xen_wdt: cannot register miscdev o= n minor=3D130 (-16)
[ =C2=A0 =C2=A01.8= 58117] wdt: probe of wdt failed with error -16
[ =C2=A0 =C2=A01.863712] of_get_named_gpiod_flags: can't parse= gpios property of node '/ocp/mmc@4809c000[0]'
[ =C2=A0 =C2=A01.871857] of_get_named_gpiod_flags: can'= ;t parse gpios property of node '/ocp/mmc@4809c000[0]'
[ =C2=A0 =C2=A01.881916] omap_hsmmc 4809c000.mmc: = pins are not configured from the driver
[ =C2=A0 =C2=A01.923830] of_get_named_gpiod_flags: can't parse gpios = property of node '/ocp/mmc@480b4000[0]'
[ =C2=A0 =C2=A01.926990] of_get_named_gpiod_flags: can't pars= e gpios property of node '/ocp/mmc@480b4000[0]'
[ =C2=A0 =C2=A01.936168] omap_hsmmc 480b4000.mmc: pins ar= e not configured from the driver
[ =C2= =A0 =C2=A01.959525] mmc0: host does not support reading read-only switch. a= ssuming write-enable.
[ =C2=A0 =C2=A01= .962164] mmc0: new SDHC card at address 0001
[ =C2=A0 =C2=A01.967872] mmcblk0: mmc0:0001 Team 3.71 GiB
[ =C2=A0 =C2=A01.973840] of_get_named_gpiod_flag= s: can't parse gpios property of node '/ocp/mmc@480ad000[0]'
[ =C2=A0 =C2=A01.979958] of_get_named_gp= iod_flags: can't parse gpios property of node '/ocp/mmc@480ad000[0]= '
[ =C2=A0 =C2=A01.983851] =C2=A0m= mcblk0: p1 p2
[ =C2=A0 =C2=A01.991853]= 480ad000.mmc supply vmmc not found, using dummy regulator
[ =C2=A0 =C2=A01.998376] omap_hsmmc 480ad000.mmc: pin= s are not configured from the driver
[= =C2=A0 =C2=A02.005661] omap_hsmmc 480ad000.mmc: could not set regulator OC= R (-22)
[ =C2=A0 =C2=A02.043817] of_ge= t_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@4= 80d1000[0]'
[ =C2=A0 =C2=A02.04698= 8] of_get_named_gpiod_flags: can't parse gpios property of node '/o= cp/mmc@480d1000[0]'
[ =C2=A0 =C2= =A02.055992] 480d1000.mmc supply vmmc not found, using dummy regulator
[ =C2=A0 =C2=A02.056760] mmc1: BKOPS_EN bi= t is not set
[ =C2=A0 =C2=A02.059364] = mmc1: new high speed MMC card at address 0001
[ =C2=A0 =C2=A02.072079] omap_hsmmc 480d1000.mmc: could not set reg= ulator OCR (-22)
[ =C2=A0 =C2=A02.0738= 11] mmcblk1: mmc1:0001 SEM04G 3.68 GiB
[ =C2=A0 =C2=A02.074048] mmcblk1boot0: mmc1:0001 SEM04G partition 1 2.00 M= iB
[ =C2=A0 =C2=A02.074291] mmcblk1boo= t1: mmc1:0001 SEM04G partition 2 2.00 MiB
[ =C2=A0 =C2=A02.078427] Alternate GPT is invalid, using primary GPT.
[ =C2=A0 =C2=A02.078444] =C2=A0mmcblk1:= p1 p2 p3 p4 p5 p6 p7
[ =C2=A0 =C2=A02= .083838] =C2=A0mmcblk1boot1: unknown partition table
[ =C2=A0 =C2=A02.086027] =C2=A0mmcblk1boot0: unknown partiti= on table
[ =C2=A0 =C2=A02.114607] omap= _hsmmc 480d1000.mmc: pins are not configured from the driver
[ =C2=A0 =C2=A02.121951] omap_hsmmc 480d1000.mmc: co= uld not set regulator OCR (-22)
[ =C2= =A0 =C2=A02.163840] of_get_named_gpiod_flags: can't parse gpios propert= y of node '/ocp/mmc@480d5000[0]'
[ =C2=A0 =C2=A02.166999] of_get_named_gpiod_flags: can't parse gpios= property of node '/ocp/mmc@480d5000[0]'
[ =C2=A0 =C2=A02.176026] 480d5000.mmc supply vmmc not found, usi= ng dummy regulator
[ =C2=A0 =C2=A02.18= 2463] omap_hsmmc 480d5000.mmc: could not set regulator OCR (-22)
[ =C2=A0 =C2=A02.189017] omap_hsmmc 480d5000.mmc= : pins are not configured from the driver
[ =C2=A0 =C2=A02.196402] omap_hsmmc 480d5000.mmc: could not set regulat= or OCR (-22)
[ =C2=A0 =C2=A02.234283] = usbcore: registered new interface driver usbhid
[ =C2=A0 =C2=A02.234383] usbhid: USB HID core driver
[ =C2=A0 =C2=A02.239037] oprofile: no performance = counters
[ =C2=A0 =C2=A02.243250] opro= file: using timer interrupt.
[ =C2=A0 = =C2=A02.247320] TCP: cubic registered
= [ =C2=A0 =C2=A02.250433] Initializing XFRM netlink socket
[ =C2=A0 =C2=A02.254855] NET: Registered protocol fam= ily 17
[ =C2=A0 =C2=A02.259367] NET: R= egistered protocol family 15
[ =C2=A0 = =C2=A02.264072] Key type dns_resolver registered
[ =C2=A0 =C2=A02.268932] ThumbEE CPU extension supported.
<= div style=3D"font-size:12.8px">[ =C2=A0 =C2=A02.272598] Registering SWP/SWP= B emulation handler
[ =C2=A0 =C2=A02.2= 82613] palmas 0-0048: Irq flag is 0x00000000
[ =C2=A0 =C2=A02.287428] palmas 0-0048: Muxing GPIO 2, PWM 0, LED 0<= /div>
[ =C2=A0 =C2=A02.328791] smps123: 600 = <--> 1500 mV at 1060 mV
[ =C2=A0= =C2=A02.332072] smps45: 600 <--> 1310 mV at 1030 mV
[ =C2=A0 =C2=A02.336652] smps6: 1200 mV
[ =C2=A0 =C2=A02.339842] smps7: 1800 mV
[ =C2=A0 =C2=A02.342932] smps8: 600 <--> 13= 10 mV at 1040 mV
[ =C2=A0 =C2=A02.3460= 11] smps9: 2100 mV
[ =C2=A0 =C2=A02.34= 8275] smps10_out2: 5000 mV
[ =C2=A0 = =C2=A02.351260] smps10_out1: 5000 mV
[= =C2=A0 =C2=A02.353777] ldo1: 1500 <--> 1800 mV
[ =C2=A0 =C2=A02.358517] ldo2: 2800 mV
[ =C2=A0 =C2=A02.362135] ldo3: 1500 mV
[ =C2=A0 =C2=A02.363802] ldo4: 1500 <--> 1800 mV
[ =C2=A0 =C2=A02.368464] ldo5: 1800 mV
[ =C2=A0 =C2=A02.372898] ldo6: 1200 mV<= /div>
[ =C2=A0 =C2=A02.375134] ldo7: 2000 mV=
[ =C2=A0 =C2=A02.378081] ldo8: 3000 m= V
[ =C2=A0 =C2=A02.380662] ldo9: 1800 = <--> 3000 mV at 3000 mV
[ =C2=A0= =C2=A02.384241] ldoln: 1800 mV
[ =C2= =A0 =C2=A02.387238] ldousb: 3250 mV
[ = =C2=A0 =C2=A02.388537] REGEN1: no parameters
[ =C2=A0 =C2=A02.391024] REGEN2: no parameters
[ =C2=A0 =C2=A02.394775] regen3: no parameters
[ =C2=A0 =C2=A02.398352] SYSEN1: no parameters
[ =C2=A0 =C2=A02.401215] SYSEN2: no param= eters
[ =C2=A0 =C2=A02.404489] omap_i2= c 48070000.i2c: bus 0 rev0.12 at 400 kHz
[ =C2=A0 =C2=A02.411055] omap_i2c 4807c000.i2c: bus 4 rev0.12 at 400 kHz=
[ =C2=A0 =C2=A02.416843] drivers/rtc/= hctosys.c: unable to open rtc device (rtc0)
[ =C2=A0 =C2=A02.448585] EXT3-fs (mmcblk0p2): error: couldn't mou= nt because of unsupported optional features (240)
[ =C2=A0 =C2=A02.453480] EXT2-fs (mmcblk0p2): error: couldn'= ;t mount because of unsupported optional features (244)
[ =C2=A0 =C2=A02.602885] EXT4-fs (mmcblk0p2): recovery co= mplete
[ =C2=A0 =C2=A02.605400] EXT4-f= s (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ =C2=A0 =C2=A02.610379] VFS: Mounted root= (ext4 filesystem) on device 179:2.
[ = =C2=A0 =C2=A02.623192] devtmpfs: mounted
[ =C2=A0 =C2=A02.623584] Freeing unused kernel memory: 340K (c079e000 - = c07f3000)
INIT: version 2.88 booting
Starting udev
[ =C2=A0 =C2=A03.169771] udev[871]: starting version 164
<= div style=3D"font-size:12.8px">[ =C2=A0 =C2=A05.205065] FAT-fs (mmcblk0p1):= Volume was not properly unmounted. Some data may be corrupt. Please run fs= ck.
[ =C2=A0 =C2=A05.400187] EXT4-fs (= mmcblk1p4): recovery complete
[ =C2=A0= =C2=A05.400309] EXT4-fs (mmcblk1p4): mounted filesystem with ordered data = mode. Opts: (null)
[ =C2=A0 =C2=A05.49= 2162] random: nonblocking pool is initialized
ERROR: could not open directory /lib/modules/3.15.0-rc2-00199-g0c0a= 3e5-dirty: No such file or directory
W= ARNING: -e needs -E or -F
ERROR: could= not open directory /lib/modules/3.15.0-rc2-00199-g0c0a3e5-dirty: No such f= ile or directory
FATAL: could not sear= ch modules: No such file or directory
= Starting Bootlog daemon: bootlogd: cannot allocate pseudo tty: No such file= or directory
bootlogd.
[ =C2=A0 =C2=A05.831227] EXT4-fs (mmcblk0p2): re-mou= nted. Opts: data=3Dordered
ALSA: Resto= ring mixer settings...
Configuring net= work interfaces... /usr/sbin/alsactl: load_state:1686: No soundcards found.= ..
ifconfig: SIOCGIFFLAGS: No such dev= ice
done.
hwclock: can't open '/dev/misc/rtc': No such file or d= irectory
Mon Jul =C2=A01 15:13:00 UTC = 2013
hwclock: can't open '/dev= /misc/rtc': No such file or directory
INIT: Entering runlevel: 5
Startin= g telnet daemon.
hwclock: can't op= en '/dev/misc/rtc': No such file or directory
Starting syslogd/klogd: done
Starting thttpd.
Stopping Bootl= og daemon: bootlogd.

<= div style=3D"font-size:12.8px">********************************************= ***************************************************************************= ****************************
=C2=A0no = console appears .. i guess the problem in the file system ... but this file= works fine with the linux kernel in omap5 without =C2=A0the xen hypervisor= =C2=A0

should i make any changement in the rootfs so it can works with = xen hypervisor !! or any other solution !!
Regards


On Fri, Mar 11, 2016 at 6:= 16 PM, Wei Liu <wei.liu2@citrix.com> wrote:
Add back xen-devel

On Fri, Mar 11, 2016 at 05:23:22PM +0100, Safa Hamza wrote:
> ok .. can u tell me how compile xen with debug symbols !!=C2=A0 i have= xen-syms
> after compiling xen with "make dist-xen XEN_TARGET_ARCH=3Darm32 > CROSS_COMPILE=3Darm-linux-gnueabihf- CONFIG_EARLY_PRINTK=3Domap5432&qu= ot;=C2=A0 =C2=A0is this
> the kernel=C2=A0 with=C2=A0 debug symbols
>

I'm not sure if you did the right thing because I've never d= one any ARM
development. I'll let other people answer your question.

Wei.

> On Fri, Mar 11, 2016 at 5:09 PM, Wei Liu <wei.liu2@citrix.com> wrote:
>
> > On Fri, Mar 11, 2016 at 11:02:26AM -0500, Konrad Rzeszutek Wilk w= rote:
> > > On Fri, Mar 11, 2016 at 04:47:47PM +0100, Safa Hamza wrote:<= br> > > > > now i did just like u said ...=C2=A0 a new error appear= s
> > >
> > > Adding XEn-devel back. Please reply all.
> > >
> > > >
> > *****************************************************************= *************
> > > > U-Boot# fdt addr $dtb_addr_r
> > > > U-Boot# fdt resize
> > > > U-Boot# fdt set /chosen xen,xen-bootargs \"$xen_bo= otargs\"
> > > > U-Boot# fdt resize
> > > > U-Boot# fdt set /chosen xen,dom0-bootargs \"$dom0_= bootargs\"
> > > > U-Boot# fdt resize
> > > > U-Boot# fdt mknode /chosen modules
> > > > U-Boot# fdt set /chosen/modules '#address-cells'= ; <1>
> > > > U-Boot# fdt set /chosen/modules '#size-cells' &= lt;1>
> > > > U-Boot# fdt mknode /chosen/modules module@0
> > > > libfdt fdt_add_subnode(): FDT_ERR_NOSPACE
> > > >
> > *****************************************************************= *************
> > > > but when i wrote=C2=A0 fdt resize before=C2=A0 fdt mkno= de /chosen/modules
> > module@0
> > > > this error disappear but still the execution stops as i= mentioned
> > before
> > > >
> >
> > The message seems quite straight-forward to me -- one of the libf= dt
> > function call failed with some error.
> >
> > I'm afraid you need to do some manual debugging to figure out= what went
> > wrong.
> >
> > Wei.
> >
> > > > On Fri, Mar 11, 2016 at 4:20 PM, Konrad Rzeszutek Wilk = <
> > > > konrad.wilk@o= racle.com> wrote:
> > > >
> > > > > On Fri, Mar 11, 2016 at 10:20:01AM -0500, Konrad R= zeszutek Wilk
> > wrote:
> > > > > > On Fri, Mar 11, 2016 at 04:05:58PM +0100, Saf= a Hamza wrote:
> > > > >
> > > > > And please do not drop Xen-devel. Adding it back o= n.
> > > > >
> > > > > > > i did like u said but nothing change ..<= br> > > > > > > >
> > > > > >
> > > > > > No you didn't. See below:
> > > > > > > U-Boot# setenv dom0_bootargs 'consol= e=3Dhvc0,115200n8
> > earlyprintk=3Dxen
> > > > > debug'
> > > > > >
> > > > > > You still have 115200n8
> > > > >
> > >
> > > _______________________________________________
> > > Xen-devel mailing list
> > > Xen-devel@lists.x= en.org
> > > http://lists.xen.org/xen-devel
> >

--047d7bd75df2642d8e052e1cb333-- --===============4059309578170334559== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK --===============4059309578170334559==-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Doug Goldstein Subject: Re: help Date: Tue, 15 Mar 2016 18:47:59 -0500 Message-ID: <56E89F2F.4010304@cardoe.com> References: <20160311144954.GF5133@char.us.oracle.com> <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> <20160311160226.GA29991@char.us.oracle.com> <20160311160912.GF2589@citrix.com> <20160311171624.GZ31271@citrix.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1840161994153576521==" Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1afyhD-0005Jc-1A for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 23:48:15 +0000 Received: by mail-yw0-f181.google.com with SMTP id g127so41908445ywf.2 for ; Tue, 15 Mar 2016 16:48:13 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Safa Hamza , Wei Liu Cc: Xen-devel List-Id: xen-devel@lists.xenproject.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --===============1840161994153576521== Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="m16JOjLJhRAliDkOok1be9FqF1Tlu78X1" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --m16JOjLJhRAliDkOok1be9FqF1Tlu78X1 Content-Type: multipart/mixed; boundary="tnrU8xgX3al7EKoKOxvjKcUNIxa89VBow" From: Doug Goldstein To: Safa Hamza , Wei Liu Cc: Xen-devel Message-ID: <56E89F2F.4010304@cardoe.com> Subject: Re: [Xen-devel] help References: <20160311144954.GF5133@char.us.oracle.com> <20160311152001.GJ5133@char.us.oracle.com> <20160311152027.GA18608@char.us.oracle.com> <20160311160226.GA29991@char.us.oracle.com> <20160311160912.GF2589@citrix.com> <20160311171624.GZ31271@citrix.com> In-Reply-To: --tnrU8xgX3al7EKoKOxvjKcUNIxa89VBow Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 3/15/16 4:01 PM, Safa Hamza wrote: > i solve the problem by degugging the linux kernel .. the problem was th= e > instruction omap_smc1 ..i'm not sure about what it did but when i delet= e > this instruction it works ... but i face another problem .. the executi= on > now stops in > [ 2.610379] VFS: Mounted root (ext4 filesystem) on device 179:2. > [ 2.623192] devtmpfs: mounted > [ 2.623584] Freeing unused kernel memory: 340K (c079e000 - c07f3000)= > INIT: version 2.88 booting > Starting udev > [ 3.169771] udev[871]: starting version 164 > [ 5.205065] FAT-fs (mmcblk0p1): Volume was not properly unmounted. S= ome > data may be corrupt. Please run fsck. > [ 5.400187] EXT4-fs (mmcblk1p4): recovery complete > [ 5.400309] EXT4-fs (mmcblk1p4): mounted filesystem with ordered dat= a > mode. Opts: (null) > [ 5.492162] random: nonblocking pool is initialized > ERROR: could not open directory > /lib/modules/3.15.0-rc2-00199-g0c0a3e5-dirty: No such file or directory= > WARNING: -e needs -E or -F > ERROR: could not open directory > /lib/modules/3.15.0-rc2-00199-g0c0a3e5-dirty: No such file or directory= > FATAL: could not search modules: No such file or directory > Starting Bootlog daemon: bootlogd: cannot allocate pseudo tty: No such = file > or directory > bootlogd. > [ 5.831227] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=3Dordered > ALSA: Restoring mixer settings... > Configuring network interfaces... /usr/sbin/alsactl: load_state:1686: N= o > soundcards found... > ifconfig: SIOCGIFFLAGS: No such device > done. > hwclock: can't open '/dev/misc/rtc': No such file or directory > Mon Jul 1 15:13:00 UTC 2013 > hwclock: can't open '/dev/misc/rtc': No such file or directory > INIT: Entering runlevel: 5 > Starting telnet daemon. > hwclock: can't open '/dev/misc/rtc': No such file or directory > Starting syslogd/klogd: done > Starting thttpd. > Stopping Bootlog daemon: bootlogd. >=20 > ***********************************************************************= *************************************************************************= *** > no console appears .. i guess the problem in the file system ... but t= his > file works fine with the linux kernel in omap5 without the xen hypervi= sor >=20 > should i make any changement in the rootfs so it can works with xen > hypervisor !! or any other solution !! > Regards >=20 The issue is likely that you don't have a getty setup on /dev/hvc0. Edit your /etc/inittab and add one. Maybe something like: h0:2345:respawn:/sbin/agetty 38400 hvc0 linux But honestly there's other problems with the image you are using so you'll likely run into more but those look like Linux/distro related problems. Please make sure you reply to the list if you do reply to this. --=20 Doug Goldstein --tnrU8xgX3al7EKoKOxvjKcUNIxa89VBow-- --m16JOjLJhRAliDkOok1be9FqF1Tlu78X1 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0 iQJ8BAEBCgBmBQJW6J8yXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRBNTM5MEQ2RTNFMTkyNzlCNzVDMzIwOTVB MkJDMDNEQzg3RUQxQkQ0AAoJEKK8A9yH7RvUB5wP/3CzvAhXuNqsiHavbRdZ5N/8 CmCrrfteLqtso58SC+9UaReCjxdUdz3skjbItUGTnQHMcoYhnnWWgYulp9xCUtxI pnxjAs89tV+YRNe/C314DpIv8vrR/aZSeXWFIAjPtfpWP6NJlfeedLnCwzaxvjgO tFEV8oPe6YmadUOkZ7U3b0XoV9SdCCLL51U3kbv7tTT1TKM+zjagZWLZnCm4I5YW U7/hfozTcQs6e/inF7aSYRfvKk6gvgU9bM6yxrhwb3IPuV6YmKxG+1lv39Bl6pbu zx6z3lmUVZdsbFMTw8VWFWu+IhwiVMo1nqqvm9Bp8yb90mCv5lT69ugnvKZd5xeE 8jWXFr/vulqQAp9nW6q2jnPoszcBNsZyHpryLVDu3KVQshfmPjEDaXBM6faEWj4h 1gW6fUy22swhMxLfbHpExFTN93hKN4UwX1MfjXG4+3ORVU1SCnnjvEJIYSJjyDvC FRyKgrCNq+8pUWS7khCovmlefspCYimCBdaPibjPZSKj46aZVG3iY/JkHgobkvKB PlI+ApZ0+jKv6nzOTzMMbq6nLsfltElitHTXZWYBbS+mEsLJSAzOTEPtPu3KV8Bu 7np/AwTXEEjO7FbrnBRtGsEH6kXutGgjgjBtygo8P4ac9Y7Kgq87DPGo0BTKje3J 0VSqn5I6mB1zqmJaEho9 =jvuL -----END PGP SIGNATURE----- --m16JOjLJhRAliDkOok1be9FqF1Tlu78X1-- --===============1840161994153576521== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK --===============1840161994153576521==-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marwa Hamza Subject: help Date: Wed, 23 Mar 2016 11:23:36 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0555070335024805717==" Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aifwx-00089A-7h for xen-devel@lists.xenproject.org; Wed, 23 Mar 2016 10:23:39 +0000 Received: by mail-vk0-f54.google.com with SMTP id k1so12859673vkb.0 for ; Wed, 23 Mar 2016 03:23:37 -0700 (PDT) List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org --===============0555070335024805717== Content-Type: multipart/alternative; boundary=94eb2c123d4a028a16052eb4b933 --94eb2c123d4a028a16052eb4b933 Content-Type: text/plain; charset=UTF-8 ello i'm trying to learn more about xen hypervisor .. i install xen in my host with alpine as domu and now i'm trying to build xen from source with linux dom0 for an arm board .. i have a little bit confusion about building xen from the source here's what i did i build xen from the source git clone git://xenbits.xen.org/xen.git make dist-xen XEN_TARGET_ARCH=arm32 CROSS_COMPILE=arm-linux-gnueabihf- CONFIG_EARLY_PRINTK=omap5432 then i download the linux kernel from git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git i configured and compiled successfully i have in my sd card the u-boot.img and MLO and zimage xenuimage and the file system ubuntu .. it worked fine after some problems .. now i'm trynig to install linux as domu .. when i wrote xl list ..the output is no command found ... it looks like i need to install xen but i don't know how .. i'm really confused . where should i install it and how does any body can help me Regards --94eb2c123d4a028a16052eb4b933 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
elloi'm trying to learn more about xen hypervisor .. i install xen = in my host with alpine as domu=C2=A0
and now i'm tryin= g to build xen from source with linux dom0 for an arm board .. i have a lit= tle bit confusion about building xen from the source
here&= #39;s what i did=C2=A0
i build xen from the source=C2=A0
git clone git://xenbits.xen.org/xen.git
make dist-xen XEN_TARGET_ARCH=3Darm32 CROSS_COMPILE=3Darm-linux-gn= ueabihf- CONFIG_EARLY_PRINTK=3Domap5432

then i download the linux kernel from
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds= /linux.git

i config= ured and compiled successfully

i have in my sd card the u-boot.img and MLO and zimage xenui= mage and the file system ubuntu .. it worked fine after some problems .. no= w i'm trynig to install linux as domu ..=C2=A0

when i wrote xl list ..the output is no = command found ... it looks like i need to install xen but i don't know = how .. i'm really confused . where should i install it and how=C2=A0
does any body can help me
Regards
--94eb2c123d4a028a16052eb4b933-- --===============0555070335024805717== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK --===============0555070335024805717==-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=0.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, FROM_EXCESS_BASE64,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 57E45C63697 for ; Sat, 28 Nov 2020 14:43:20 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F195D2465A for ; Sat, 28 Nov 2020 14:43:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=qq.com header.i=@qq.com header.b="RBmvVyIj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F195D2465A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=qq.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.40017.73079 (Exim 4.92) (envelope-from ) id 1kj1RA-0002nW-Ij; Sat, 28 Nov 2020 14:42:56 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 40017.73079; Sat, 28 Nov 2020 14:42:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kj1RA-0002nI-BT; Sat, 28 Nov 2020 14:42:56 +0000 Received: by outflank-mailman (input) for mailman id 40017; Sat, 28 Nov 2020 14:33:14 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kj1Hm-0001tv-7v for xen-devel@lists.xenproject.org; Sat, 28 Nov 2020 14:33:14 +0000 Received: from smtpbg.qq.com (unknown [203.205.250.53]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 7898ce37-7440-4b50-a020-856014c6d465; Sat, 28 Nov 2020 14:32:43 +0000 (UTC) Received: from qq.com (unknown [127.0.0.1]) by smtp.qq.com (ESMTP) with SMTP id ; Sat, 28 Nov 2020 22:32:40 +0800 (CST) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 7898ce37-7440-4b50-a020-856014c6d465 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1606573960; bh=9xcn4M0R0XCRv1C2cX4i1VQxdz2N6enx/7LssllUF4k=; h=From:To:Subject:Mime-Version:Date:Message-ID; b=RBmvVyIjmaN1SSZ3q20AewNIwHPCGEP5WYwUi1fSO8k8u/v78vtaQjTQBEDWMHSyz d8Y/8iBV7RFqaJUGOGJWkiWotBUX0NCErgx8Q4Rgq+axhz5HncuK1G29missiWhRaQ KQMFzGIhifkjbanlHsX6B/zlMBNXAboMGiVqe78o= X-QQ-FEAT: YuwbzFVdD1jhZGnyd/OIcNNnihs0ppT20efISsTMmjjcyE2TWhFTB5c3mjpk8 VVhygR7QirI3luuflYsAH500/Uj2iGZW+jw4zjSVsr0kfq8guFaIUfCXDIZwkOWUF6bxSGY JBlfguWcOAw45clBogNqYdY8Jq8oMYxt42btoEF6fEk/LPooN5PD9EXRqaASxKmWNjGVNSk UsCfde16ygNHzVv/jPd/OC+0jx2xlgu1z1ic1BtmqkT95UIVcZeVXcThVzU2LiRyNgfHXIn trdw== X-QQ-SSF: 0000000000000010000000000000008 X-QQ-XMAILINFO: OAYk33bJfOB1Tbu4xvO+1ePYoadnMSC9OvVXg1nUTNfJ+g0gFueyx6z6KDPYjx UuaSEFKLI7O1H9suWNMq0cxI6idAQnP+/a45XWjTHq/QnTFF7l+/BiZMDMnVZh+uQKatjBjiBlgBJ CnjnpQxPi2Q0EVmmPf0dN1xAwMgX+RUYVP7ZL0PJPB+BhbphJxqdF8OJqyWJQTA1HeVzlufq3a4GL SIAq/8tA2v+FYtBuCV6S243Uj2zu2JMeJdR7vJyhiUGL7kbJhaGJcI1udT/MBCy/tTw8C0PpJZPfe CWgc2UQn0Fx1BTJ8etdE8PcIBSs7Z1dU6ad250DKUpX/Cn5FYlFolg3JeUoaPqU0IyvueAkLznwKb ukWXURHMLLz2J5lVsjJKSg+VWVj2+6a2tNs1yxFu+zMBBQGh/DAL0cS/XGE+8HBpRm0prgW8/24VA ljUhWj9hMdDuNBTLhlVTwTy2N8GE2Zj6jSA0ndA+ekp3Ug+AWrBfx7e2FSMPn96VNe7L9dEgr3bhR g+oLpqdfzQ3RIcy2OXt5EntT04xX4WtN1vo9C2JK0EapAwQQd3XABqcEJtniIT1ox/Zf7l97u5oV3 4H+hzgIjGL6Q5oXykQWguEoYJfDpQWFNgHREDPCyU0gEuZrveOpvYQTKrpMvPEnwD3LHzKpwp4ulC kwW/Mn/BtfM5clotgjNOIpiJYWN+VPstTfwC8x X-HAS-ATTACH: no X-QQ-BUSINESS-ORIGIN: 2 X-Originating-IP: 166.111.122.112 X-QQ-STYLE: X-QQ-mid: webmail801t1606573958t7901344 From: "=?ISO-8859-1?B?UnJvYWNo?=" <2284696125@qq.com> To: "=?ISO-8859-1?B?eGVuLWRldmVs?=" Subject: help Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_5FC25F86_0F661C10_7D003348" Content-Transfer-Encoding: 8Bit Date: Sat, 28 Nov 2020 22:32:38 +0800 X-Priority: 3 Message-ID: X-QQ-MIME: TCMime 1.0 by Tencent X-Mailer: QQMail 2.x X-QQ-Mailer: QQMail 2.x X-QQ-SENDSIZE: 520 Feedback-ID: webmail:qq.com:bgweb:bgweb4 This is a multi-part message in MIME format. ------=_NextPart_5FC25F86_0F661C10_7D003348 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 SGksIEknbSBhdHRlbXB0aW5nIHRvIHVzZSBhZGRyZXNzIHNhbml0aXplciBpbiBsb2NhdGlu ZyBidWdzIGluIFhlbiA0LTEzLCB3aGlsZSB1c2UgYWRkcmVzcyBzYW5pdGl6ZXIgaW4gdG9v bHMgbW9kdWxlcywgd2hpbGUgSSByYW4gc29tZSBiYXNpYyBpbnN0cnVjdGlvbnMgbGlrZSB4 bCwgWGVuIHJlcG9ydCBzdWNoIGJ1ZzoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo9PTI4NjM9PUVSUk9SOiBM ZWFrU2FuaXRpemVyOiBkZXRlY3RlZCBtZW1vcnkgbGVha3MNCg0KRGlyZWN0IGxlYWsgb2Yg Mjk2IGJ5dGUocykgaW4gMTEgb2JqZWN0KHMpIGFsbG9jYXRlZCBmcm9tOg0KJm5ic3A7ICZu YnNwOyAjMCAweDdmNWI5MWFlZmQyOCBpbiBtYWxsb2MgKC91c3IvbGliL3g4Nl82NC1saW51 eC1nbnUvbGliYXNhbi5zby4zKzB4YzFkMjgpDQombmJzcDsgJm5ic3A7ICMxIDB4NDY3OTk3 Jm5ic3A7ICgvdXNyL2Jpbi94ODZfNjQtbGludXgtZ251LWdjYy02KzB4NDY3OTk3KQ0KDQpJ bmRpcmVjdCBsZWFrIG9mIDEwIGJ5dGUocykgaW4gMSBvYmplY3QocykgYWxsb2NhdGVkIGZy b206DQombmJzcDsgJm5ic3A7ICMwIDB4N2Y1YjkxYWVmZDI4IGluIG1hbGxvYyAoL3Vzci9s aWIveDg2XzY0LWxpbnV4LWdudS9saWJhc2FuLnNvLjMrMHhjMWQyOCkNCiZuYnNwOyAmbmJz cDsgIzEgMHg0Njc5OTcmbmJzcDsgKC91c3IvYmluL3g4Nl82NC1saW51eC1nbnUtZ2NjLTYr MHg0Njc5OTcpDQoNClNVTU1BUlk6IEFkZHJlc3NTYW5pdGl6ZXI6IDMwNiBieXRlKHMpIGxl YWtlZCBpbiAxMiBhbGxvY2F0aW9uKHMpLg0KL3Jvb3QvZmF1bHR4ZW4vdG9vbHMvbGlicy90 b29sY29yZS8uLi8uLi8uLi90b29scy9SdWxlcy5tazoyMjQ6IHJlY2lwZSBmb3IgdGFyZ2V0 ICdoZWFkZXJzLmNoaycgZmFpbGVkDQptYWtlWzVdOiAqKiogW2hlYWRlcnMuY2hrXSBFcnJv ciAxDQoNCj09NzUyMD09RVJST1I6IExlYWtTYW5pdGl6ZXI6IGRldGVjdGVkIG1lbW9yeSBs ZWFrcw0KDQpEaXJlY3QgbGVhayBvZiAxMCBieXRlKHMpIGluIDEgb2JqZWN0KHMpIGFsbG9j YXRlZCBmcm9tOg0KJm5ic3A7ICZuYnNwOyAjMCAweDdmZDEwMjhjOGQyOCBpbiBtYWxsb2Mg KC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGliYXNhbi5zby4zKzB4YzFkMjgpDQombmJz cDsgJm5ic3A7ICMxIDB4N2ZkMTAyMmU0M2I5IGluIF9fc3RyZHVwICgvbGliL3g4Nl82NC1s aW51eC1nbnUvbGliYy5zby42KzB4ODAzYjkpDQoNClNVTU1BUlk6IEFkZHJlc3NTYW5pdGl6 ZXI6IDEwIGJ5dGUocykgbGVha2VkIGluIDEgYWxsb2NhdGlvbihzKS4NCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQpJdCBzZWVtcyB0aGlzIGJ1ZyBpcyB2ZXJ5IGxvdy1sZXZlbCwgYW5kIGFmZmVjdHMgbWFu eSBiYXNpYyBvcGVyYXRpb25zLCBkbyB5b3UgaGF2ZSBhbnkgaWRlYSB3aGF0IGNhdXNlIHN1 Y2ggYnVncz8= ------=_NextPart_5FC25F86_0F661C10_7D003348 Content-Type: text/html; charset="ISO-8859-1" Content-Transfer-Encoding: base64 PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo YXJzZXQ9R0IxODAzMCI+PGRpdj5IaSwgSSdtIGF0dGVtcHRpbmcgdG8gdXNlIGFkZHJlc3Mg c2FuaXRpemVyIGluIGxvY2F0aW5nIGJ1Z3MgaW4gWGVuIDQtMTMsIHdoaWxlIHVzZSBhZGRy ZXNzIHNhbml0aXplciBpbiB0b29scyBtb2R1bGVzLCB3aGlsZSBJIHJhbiBzb21lIGJhc2lj IGluc3RydWN0aW9ucyBsaWtlIHhsLCBYZW4gcmVwb3J0IHN1Y2ggYnVnOjwvZGl2PjxkaXY+ PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT08YnI+PT0yODYzPT1FUlJPUjogTGVha1Nhbml0aXplcjogZGV0ZWN0ZWQg bWVtb3J5IGxlYWtzPGJyPjxicj5EaXJlY3QgbGVhayBvZiAyOTYgYnl0ZShzKSBpbiAxMSBv YmplY3QocykgYWxsb2NhdGVkIGZyb206PGJyPiZuYnNwOyAmbmJzcDsgIzAgMHg3ZjViOTFh ZWZkMjggaW4gbWFsbG9jICgvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmFzYW4uc28u MysweGMxZDI4KTxicj4mbmJzcDsgJm5ic3A7ICMxIDB4NDY3OTk3Jm5ic3A7ICgvdXNyL2Jp bi94ODZfNjQtbGludXgtZ251LWdjYy02KzB4NDY3OTk3KTxicj48YnI+SW5kaXJlY3QgbGVh ayBvZiAxMCBieXRlKHMpIGluIDEgb2JqZWN0KHMpIGFsbG9jYXRlZCBmcm9tOjxicj4mbmJz cDsgJm5ic3A7ICMwIDB4N2Y1YjkxYWVmZDI4IGluIG1hbGxvYyAoL3Vzci9saWIveDg2XzY0 LWxpbnV4LWdudS9saWJhc2FuLnNvLjMrMHhjMWQyOCk8YnI+Jm5ic3A7ICZuYnNwOyAjMSAw eDQ2Nzk5NyZuYnNwOyAoL3Vzci9iaW4veDg2XzY0LWxpbnV4LWdudS1nY2MtNisweDQ2Nzk5 Nyk8YnI+PGJyPlNVTU1BUlk6IEFkZHJlc3NTYW5pdGl6ZXI6IDMwNiBieXRlKHMpIGxlYWtl ZCBpbiAxMiBhbGxvY2F0aW9uKHMpLjxicj4vcm9vdC9mYXVsdHhlbi90b29scy9saWJzL3Rv b2xjb3JlLy4uLy4uLy4uL3Rvb2xzL1J1bGVzLm1rOjIyNDogcmVjaXBlIGZvciB0YXJnZXQg J2hlYWRlcnMuY2hrJyBmYWlsZWQ8YnI+bWFrZVs1XTogKioqIFtoZWFkZXJzLmNoa10gRXJy b3IgMTxicj48YnI+PT03NTIwPT1FUlJPUjogTGVha1Nhbml0aXplcjogZGV0ZWN0ZWQgbWVt b3J5IGxlYWtzPGJyPjxicj5EaXJlY3QgbGVhayBvZiAxMCBieXRlKHMpIGluIDEgb2JqZWN0 KHMpIGFsbG9jYXRlZCBmcm9tOjxicj4mbmJzcDsgJm5ic3A7ICMwIDB4N2ZkMTAyOGM4ZDI4 IGluIG1hbGxvYyAoL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJhc2FuLnNvLjMrMHhj MWQyOCk8YnI+Jm5ic3A7ICZuYnNwOyAjMSAweDdmZDEwMjJlNDNiOSBpbiBfX3N0cmR1cCAo L2xpYi94ODZfNjQtbGludXgtZ251L2xpYmMuc28uNisweDgwM2I5KTxicj48YnI+U1VNTUFS WTogQWRkcmVzc1Nhbml0aXplcjogMTAgYnl0ZShzKSBsZWFrZWQgaW4gMSBhbGxvY2F0aW9u KHMpLjxicj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PTwvZGl2PjxkaXY+SXQgc2VlbXMgdGhpcyBidWcgaXMgdmVy eSBsb3ctbGV2ZWwsIGFuZCBhZmZlY3RzIG1hbnkgYmFzaWMgb3BlcmF0aW9ucywgZG8geW91 IGhhdmUgYW55IGlkZWEgd2hhdCBjYXVzZSBzdWNoIGJ1Z3M/IDxicj48L2Rpdj4= ------=_NextPart_5FC25F86_0F661C10_7D003348--