From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out1134-178.mail.aliyun.com (out1134-178.mail.aliyun.com [42.120.134.178]) by dpdk.org (Postfix) with ESMTP id 1D3157F29 for ; Wed, 5 Nov 2014 17:01:05 +0100 (CET) X-Alimail-AntiSpam: AC=CONTINUE; BC=0.02341138|-1; FP=0|0|0|0|0|-1|-1|-1; HT=r46d02013; MF=liang.xu@cinfotech.cn; PH=DW; RN=2; RT=2; SR=0; Received: from WS-web (liang.xu@cinfotech.cn[222.65.239.251]) by r41g06024.xy2.aliyun.com at Thu, 06 Nov 2014 00:10:24 +0800 Date: Thu, 06 Nov 2014 00:10:24 +0800 From: "XU Liang" To: "=?UTF-8?B?QnVyYWtvdiwgQW5hdG9seQ==?=" , "dev@dpdk.org" Message-ID: <7600981e-fc3a-454b-a269-51dd3b9d535b@cinfotech.cn> X-Mailer: Alimail-Mailagent revision 2667797 MIME-Version: 1.0 References: <1415193919-17361-1-git-send-email-liang.xu@cinfotech.cn>, C6ECDF3AB251BE4894318F4E4512369780C070FA@IRSMSX109.ger.corp.intel.com <01d6ff37-3473-43af-aff3-1183d4c4768a@cinfotech.cn>, C6ECDF3AB251BE4894318F4E4512369780C07183@IRSMSX109.ger.corp.intel.com In-Reply-To: C6ECDF3AB251BE4894318F4E4512369780C07183@IRSMSX109.ger.corp.intel.com x-aliyun-mail-creator: Webmail4_2670074_M3LTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTBfMCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzM4LjAuMjEyNS4xMTEgU2FmYXJpLzUzNy4zNg==vN Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] =?utf-8?b?562U5aSN77ya562U5aSN77yaIFtQQVRDSF0gZWFsOiBt?= =?utf-8?q?ap_uio_resources_after_hugepages_when_the=09base=5Fvirtaddr_is_?= =?utf-8?q?configured=2E?= X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: XU Liang List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Nov 2014 16:01:10 -0000 I have a multiple processes application. When start a secondary process, we go= t error message "EAL: pci_map_resource(): cannot mmap(11, 0x7ffff7fba000, 0x20= 000, 0x0): Bad file descriptor (0x7ffff7fb9000)".The secondary process link di= fference shared libraries, so the address 0x7ffff7fba000 is used.=0A----------= --------------------------------------------------------=E5=8F=91=E4=BB=B6=E4=BA= =BA=EF=BC=9ABurakov, Anatoly =E5=8F=91=E9=80=81=E6=97= =B6=E9=97=B4=EF=BC=9A2014=E5=B9=B411=E6=9C=885=E6=97=A5(=E6=98=9F=E6=9C=9F=E4=B8= =89) 23:59=E6=94=B6=E4=BB=B6=E4=BA=BA=EF=BC=9A=E5=BE=90=E4=BA=AE =EF=BC=8Cdev@dpdk.org =E4=B8=BB=E3=80=80=E9=A2=98=EF=BC= =9ARE: =E7=AD=94=E5=A4=8D=EF=BC=9A[dpdk-dev] [PATCH] eal: map uio resources af= ter hugepages when the base_virtaddr is configured.=0A=0A=0A=0Afont-family: MS= Gothic;panose-1: 2 11 6 9 7 2 5 8 2 4;font-family: Cambria Math;panose-1: 2 4= 5 3 5 4 6 3 2 4;font-family: Calibri;panose-1: 2 15 5 2 2 2 4 3 2 4;font-fami= ly: Tahoma;panose-1: 2 11 6 4 3 5 4 4 2 4;font-family: \@MS Gothic;panose-1: 2= 11 6 9 7 2 5 8 2 4;font-family: Microsoft JhengHei;panose-1: 2 11 6 4 3 5 4 4= 2 4;font-family: \@Microsoft JhengHei;panose-1: 2 11 6 4 3 5 4 4 2 4;p.MsoNor= mal, li.MsoNormal, div.MsoNormal {margin: 0.0cm;margin-bottom: 1.0E-4pt;font-s= ize: 12.0pt;font-family: Times New Roman , serif;}=0Aa:link, span.MsoHyperlink= {mso-style-priority: 99;color: #0563c1;text-decoration: underline;}=0Aa:visit= ed, span.MsoHyperlinkFollowed {mso-style-priority: 99;color: #954f72;text-deco= ration: underline;}=0Aspan.EmailStyle17 {mso-style-type: personal-reply;font-f= amily: Calibri , sans-serif;color: #1f497d;}=0A*.MsoChpDefault {mso-style-type= : export-only;font-family: Calibri , sans-serif;}=0Asize: 612.0pt 792.0pt;marg= in: 72.0pt 72.0pt 72.0pt 72.0pt;div.WordSection1 {page: WordSection1;}=0A=0A=0A= =0A=0AHi Liang=0A=C2=A0=0AYes it is a problem. Even if it was carefully select= ed by user, nothing stops the DPDK application from mapping something into whe= re you=E2=80=99re trying to map your=0A UIO devices. Plus, this changes the de= fault behavior where a wrong base-virtaddr leads to a failure to initialize, r= ather than simply using a different address (remember that pci_map_resource fa= ils if it cannot map the resource at the exact address you requested).=0A=C2=A0= =0AA very crude way of finding out where hugepages end would be to walk the hu= gepage memory (walk through memsegs and note the maximum start addr + length o= f that=0A memseg).=0A=C2=A0=0ACould you perhaps explain what is the problem th= at you=E2=80=99re trying to solve with this? I can=E2=80=99t think of a situat= ion where the location of UIO maps would matter,=0A to be honest.=0A=C2=A0=0AT= hanks,=0AAnatoly=0A=C2=A0=0AFrom: XU Liang [mailto:liang.xu@cinfotech.cn]=0A=0A= =0ASent: Wednesday, November 5, 2014 3:49 PM=0A=0ATo: Burakov, Anatoly; dev@dp= dk.org=0A=0ASubject: =E7=AD=94=E5=A4=8D=EF=BC=9A[dpdk-dev] [PATCH] eal: map ui= o resources after hugepages when the base_virtaddr is configured.=0A=C2=A0=0A=0A= =0AI think the base_virtadd will be carefully selected by user when they need = it. So maybe it's not a real problem. =C2=A0:>=0A=0A=0A=C2=A0=0A=0A=0AThe real= reason is I can't find a easy way to get the end address of hugepages. Can yo= u give me some=C2=A0suggestions ?=0A=0A=0A=0A---------------------------------= ---------------------------------=0A=0A=0A=E5=8F=91=E4=BB=B6=E4=BA=BA=EF=BC=9A= Burakov, Anatoly =0A=0A=0A=E5=8F=91=E9=80=81=E6=97=B6= =E9=97=B4=EF=BC=9A2014=E5=B9=B411=E6=9C=885=E6=97=A5(=E6=98=9F=E6=9C=9F=E4=B8=89= )=0A 23:10=0A=0A=0A=E6=94=B6=E4=BB=B6=E4=BA=BA=EF=BC=9A=E5=BE=90=E4=BA=AE =EF=BC=8Cdev@dpdk.org=0A =0A=0A=0A=E4=B8=BB=E3= =80=80=E9=A2=98=EF=BC=9ARE:=0A [dpdk-dev] [PATCH] eal: map uio resources after= hugepages when the base_virtaddr is configured.=0A=0A=0A=C2=A0=0A=0AI have a = slight problems with this patch.=0A=0A=0A=0AThe base_virtaddr doesn't necessar= ily correspond to an address that everything gets mapped to. It's a "hint" of = sorts, that may or may not be taken into account by mmap. Therefore we can't s= imply assume that if we requested a base-virtaddr, everything will=0A get mapp= ed at exactly that address. We also can't assume that hugepages will be ordere= d one after the other and occupy neatly all the contiguous virtual memory betw= een base_virtaddr and base_virtaddr + internal_config.memory - there may be ho= les, for whatever=0A reasons.=0A=0A=0A=0AAlso, =0A=0A=0A=0AThanks,=0A=0AAnatol= y=0A=0A=0A=0A-----Original Message-----=0A=0AFrom: dev [mailto:dev-bounces@dpd= k.org] On Behalf Of lxu=0A=0ASent: Wednesday, November 5, 2014 1:25 PM=0A=0ATo= : dev@dpdk.org=0A=0ASubject: [dpdk-dev] [PATCH] eal: map uio resources after h= ugepages when the base_virtaddr is configured.=0A=0A=0A=0A---=0A=0Alib/librte_= eal/linuxapp/eal/eal_pci_uio.c | 9 ++++++++-=0A=0A1 file changed, 8 insertions= (+), 1 deletion(-)=0A=0A=0A=0Adiff --git a/lib/librte_eal/linuxapp/eal/eal_pci= _uio.c b/lib/librte_eal/linuxapp/eal/eal_pci_uio.c=0A=0Aindex 7e62266..bc7ed3a= 100644=0A=0A--- a/lib/librte_eal/linuxapp/eal/eal_pci_uio.c=0A=0A+++ b/lib/li= brte_eal/linuxapp/eal/eal_pci_uio.c=0A=0A@@ -289,6 +289,11 @@ pci_uio_map_reso= urce(struct rte_pci_device *dev)=0A=0Astruct rte_pci_addr *loc =3D &dev->addr;= =0A=0Astruct mapped_pci_resource *uio_res;=0A=0Astruct pci_map *maps;=0A=0A+ s= tatic void * requested_addr =3D NULL;=0A=0A+ if (internal_config.base_virtaddr= && NULL =3D=3D requested_addr) {=0A=0A+ requested_addr =3D (uint8_t *) intern= al_config.base_virtaddr =0A=0A+ + internal_config.memory;=0A=0A+ }=0A=0A=0A=0A= dev->intr_handle.fd =3D -1;=0A=0Adev->intr_handle.type =3D RTE_INTR_HANDLE_UNK= NOWN; @@ -371,10 +376,12 @@ pci_uio_map_resource(struct rte_pci_device *dev)=0A= =0Aif (maps[j].addr !=3D NULL)=0A=0Afail =3D 1;=0A=0Aelse {=0A=0A- mapaddr =3D= pci_map_resource(NULL, fd, (off_t)offset,=0A=0A+ mapaddr =3D pci_map_resource= (requested_addr, fd, (off_t)offset,=0A=0A(size_t)maps[j].size);=0A=0Aif (mapad= dr =3D=3D NULL)=0A=0Afail =3D 1;=0A=0A+ else if (NULL !=3D requested_addr)=0A=0A= + requested_addr =3D (uint8_t *)mapaddr + maps[j].size;=0A=0A}=0A=0A=0A=0Aif (= fail) {=0A=0A--=0A=0A1.9.1=0A=0A=0A >From anatoly.burakov@intel.com Wed Nov 5 17:12:47 2014 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 4B7BF7F29 for ; Wed, 5 Nov 2014 17:12:46 +0100 (CET) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP; 05 Nov 2014 08:21:43 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,320,1413270000"; d="scan'208,217";a="617637666" Received: from irsmsx102.ger.corp.intel.com ([163.33.3.155]) by fmsmga001.fm.intel.com with ESMTP; 05 Nov 2014 08:19:11 -0800 Received: from irsmsx155.ger.corp.intel.com (163.33.192.3) by IRSMSX102.ger.corp.intel.com (163.33.3.155) with Microsoft SMTP Server (TLS) id 14.3.195.1; Wed, 5 Nov 2014 16:19:08 +0000 Received: from irsmsx109.ger.corp.intel.com ([169.254.13.101]) by IRSMSX155.ger.corp.intel.com ([169.254.14.70]) with mapi id 14.03.0195.001; Wed, 5 Nov 2014 16:19:07 +0000 From: "Burakov, Anatoly" To: XU Liang , "dev@dpdk.org" Thread-Topic: =?utf-8?B?562U5aSN77ya562U5aSN77yaW2RwZGstZGV2XSBbUEFUQ0hdIGVhbDogbWFw?= =?utf-8?B?IHVpbyByZXNvdXJjZXMgYWZ0ZXIgaHVnZXBhZ2VzIHdoZW4gdGhlCWJhc2Vf?= =?utf-8?Q?virtaddr_is_configured.?= Thread-Index: AQHP+PwmmmVWcq3WK0uPxBQDYbZnPZxSLpdIgAAGJuCAAABnkA== Date: Wed, 5 Nov 2014 16:19:07 +0000 Message-ID: References: <1415193919-17361-1-git-send-email-liang.xu@cinfotech.cn>, C6ECDF3AB251BE4894318F4E4512369780C070FA@IRSMSX109.ger.corp.intel.com <01d6ff37-3473-43af-aff3-1183d4c4768a@cinfotech.cn>, C6ECDF3AB251BE4894318F4E4512369780C07183@IRSMSX109.ger.corp.intel.com <7600981e-fc3a-454b-a269-51dd3b9d535b@cinfotech.cn> In-Reply-To: <7600981e-fc3a-454b-a269-51dd3b9d535b@cinfotech.cn> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.182] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] =?utf-8?b?562U5aSN77ya562U5aSN77yaIFtQQVRDSF0gZWFsOiBt?= =?utf-8?q?ap_uio_resources_after_hugepages_when_the=09base=5Fvirtaddr_is_?= =?utf-8?q?configured=2E?= X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Nov 2014 16:12:47 -0000 QWgsIHRoYXQgbWFrZXMgc2Vuc2UuIFNvIHlvdeKAmXJlIGFjdHVhbGx5IGhpdHRpbmcgdGhlIHZl cnkgaXNzdWUgSeKAmW0gY29uY2VybmVkIGFib3V0IHdoZW4gbWFwcGluZyBwdXJlbHkgd2l0aCBi YXNlLXZpcnRhZGRyIChhIGxpYnJhcnkgaXMgbWFwcGVkIGludG8gd2hlcmUgeW914oCZcmUgdHJ5 aW5nIHRvIG1hcCB5b3VyIFVJTyByZXNvdXJjZXMpLg0KDQpXZWxsLCBhcyBJIHNhaWQsIHlvdSBj YW4gdHJ5IGFuZCB3YWxrIHRoZSBtZW1zZWdzIGFuZCB3b3JrIG91dCB0aGUgYmlnZ2VzdCBlbmQt YWRkcmVzcyBvZiBodWdlcGFnZSBtZW1vcnkuIFRoYXTigJlzIHRoZSBlYXNpZXN0IHdheSBJIGNh biB0aGluayBvZi4NCg0KVGhhbmtzLA0KQW5hdG9seQ0KDQpGcm9tOiBYVSBMaWFuZyBbbWFpbHRv OmxpYW5nLnh1QGNpbmZvdGVjaC5jbl0NClNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIgNSwgMjAx NCA0OjEwIFBNDQpUbzogQnVyYWtvdiwgQW5hdG9seTsgZGV2QGRwZGsub3JnDQpTdWJqZWN0OiDn rZTlpI3vvJrnrZTlpI3vvJpbZHBkay1kZXZdIFtQQVRDSF0gZWFsOiBtYXAgdWlvIHJlc291cmNl cyBhZnRlciBodWdlcGFnZXMgd2hlbiB0aGUgYmFzZV92aXJ0YWRkciBpcyBjb25maWd1cmVkLg0K DQpJIGhhdmUgYSBtdWx0aXBsZSBwcm9jZXNzZXMgYXBwbGljYXRpb24uIFdoZW4gc3RhcnQgYSBz ZWNvbmRhcnkgcHJvY2Vzcywgd2UgZ290IGVycm9yIG1lc3NhZ2UgIkVBTDogcGNpX21hcF9yZXNv dXJjZSgpOiBjYW5ub3QgbW1hcCgxMSwgMHg3ZmZmZjdmYmEwMDAsIDB4MjAwMDAsIDB4MCk6IEJh ZCBmaWxlIGRlc2NyaXB0b3IgKDB4N2ZmZmY3ZmI5MDAwKSIuDQoNClRoZSBzZWNvbmRhcnkgcHJv Y2VzcyBsaW5rIGRpZmZlcmVuY2Ugc2hhcmVkIGxpYnJhcmllcywgc28gdGhlIGFkZHJlc3MgMHg3 ZmZmZjdmYmEwMDAgaXMgdXNlZC4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQrlj5Hku7bkurrvvJpCdXJha292LCBB bmF0b2x5IDxhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPG1haWx0bzphbmF0b2x5LmJ1cmFrb3ZA aW50ZWwuY29tPj4NCuWPkemAgeaXtumXtO+8mjIwMTTlubQxMeaciDXml6Uo5pif5pyf5LiJKSAy Mzo1OQ0K5pS25Lu25Lq677ya5b6Q5LquIDxsaWFuZy54dUBjaW5mb3RlY2guY248bWFpbHRvOmxp YW5nLnh1QGNpbmZvdGVjaC5jbj4+77yMZGV2QGRwZGsub3JnPG1haWx0bzpkZXZAZHBkay5vcmc+ IDxkZXZAZHBkay5vcmc8bWFpbHRvOmRldkBkcGRrLm9yZz4+DQrkuLvjgIDpopjvvJpSRTog562U 5aSN77yaW2RwZGstZGV2XSBbUEFUQ0hdIGVhbDogbWFwIHVpbyByZXNvdXJjZXMgYWZ0ZXIgaHVn ZXBhZ2VzIHdoZW4gdGhlIGJhc2VfdmlydGFkZHIgaXMgY29uZmlndXJlZC4NCg0KSGkgTGlhbmcN Cg0KWWVzIGl0IGlzIGEgcHJvYmxlbS4gRXZlbiBpZiBpdCB3YXMgY2FyZWZ1bGx5IHNlbGVjdGVk IGJ5IHVzZXIsIG5vdGhpbmcgc3RvcHMgdGhlIERQREsgYXBwbGljYXRpb24gZnJvbSBtYXBwaW5n IHNvbWV0aGluZyBpbnRvIHdoZXJlIHlvdeKAmXJlIHRyeWluZyB0byBtYXAgeW91ciBVSU8gZGV2 aWNlcy4gUGx1cywgdGhpcyBjaGFuZ2VzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIHdoZXJlIGEgd3Jv bmcgYmFzZS12aXJ0YWRkciBsZWFkcyB0byBhIGZhaWx1cmUgdG8gaW5pdGlhbGl6ZSwgcmF0aGVy IHRoYW4gc2ltcGx5IHVzaW5nIGEgZGlmZmVyZW50IGFkZHJlc3MgKHJlbWVtYmVyIHRoYXQgcGNp X21hcF9yZXNvdXJjZSBmYWlscyBpZiBpdCBjYW5ub3QgbWFwIHRoZSByZXNvdXJjZSBhdCB0aGUg ZXhhY3QgYWRkcmVzcyB5b3UgcmVxdWVzdGVkKS4NCg0KQSB2ZXJ5IGNydWRlIHdheSBvZiBmaW5k aW5nIG91dCB3aGVyZSBodWdlcGFnZXMgZW5kIHdvdWxkIGJlIHRvIHdhbGsgdGhlIGh1Z2VwYWdl IG1lbW9yeSAod2FsayB0aHJvdWdoIG1lbXNlZ3MgYW5kIG5vdGUgdGhlIG1heGltdW0gc3RhcnQg YWRkciArIGxlbmd0aCBvZiB0aGF0IG1lbXNlZykuDQoNCkNvdWxkIHlvdSBwZXJoYXBzIGV4cGxh aW4gd2hhdCBpcyB0aGUgcHJvYmxlbSB0aGF0IHlvdeKAmXJlIHRyeWluZyB0byBzb2x2ZSB3aXRo IHRoaXM/IEkgY2Fu4oCZdCB0aGluayBvZiBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgbG9jYXRpb24g b2YgVUlPIG1hcHMgd291bGQgbWF0dGVyLCB0byBiZSBob25lc3QuDQoNClRoYW5rcywNCkFuYXRv bHkNCg0KRnJvbTogWFUgTGlhbmcgW21haWx0bzpsaWFuZy54dUBjaW5mb3RlY2guY25dDQpTZW50 OiBXZWRuZXNkYXksIE5vdmVtYmVyIDUsIDIwMTQgMzo0OSBQTQ0KVG86IEJ1cmFrb3YsIEFuYXRv bHk7IGRldkBkcGRrLm9yZzxtYWlsdG86ZGV2QGRwZGsub3JnPg0KU3ViamVjdDog562U5aSN77ya W2RwZGstZGV2XSBbUEFUQ0hdIGVhbDogbWFwIHVpbyByZXNvdXJjZXMgYWZ0ZXIgaHVnZXBhZ2Vz IHdoZW4gdGhlIGJhc2VfdmlydGFkZHIgaXMgY29uZmlndXJlZC4NCg0KSSB0aGluayB0aGUgYmFz ZV92aXJ0YWRkIHdpbGwgYmUgY2FyZWZ1bGx5IHNlbGVjdGVkIGJ5IHVzZXIgd2hlbiB0aGV5IG5l ZWQgaXQuIFNvIG1heWJlIGl0J3Mgbm90IGEgcmVhbCBwcm9ibGVtLiAgOj4NCg0KVGhlIHJlYWwg cmVhc29uIGlzIEkgY2FuJ3QgZmluZCBhIGVhc3kgd2F5IHRvIGdldCB0aGUgZW5kIGFkZHJlc3Mg b2YgaHVnZXBhZ2VzLiBDYW4geW91IGdpdmUgbWUgc29tZSBzdWdnZXN0aW9ucyA/DQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCuWPkeS7tuS6uu+8mkJ1cmFrb3YsIEFuYXRvbHkgPGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5j b208bWFpbHRvOmFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb20+Pg0K5Y+R6YCB5pe26Ze077yaMjAx NOW5tDEx5pyINeaXpSjmmJ/mnJ/kuIkpIDIzOjEwDQrmlLbku7bkurrvvJrlvpDkuq4gPGxpYW5n Lnh1QGNpbmZvdGVjaC5jbjxtYWlsdG86bGlhbmcueHVAY2luZm90ZWNoLmNuPj7vvIxkZXZAZHBk ay5vcmc8bWFpbHRvOmRldkBkcGRrLm9yZz4gPGRldkBkcGRrLm9yZzxtYWlsdG86ZGV2QGRwZGsu b3JnPj4NCuS4u+OAgOmimO+8mlJFOiBbZHBkay1kZXZdIFtQQVRDSF0gZWFsOiBtYXAgdWlvIHJl c291cmNlcyBhZnRlciBodWdlcGFnZXMgd2hlbiB0aGUgYmFzZV92aXJ0YWRkciBpcyBjb25maWd1 cmVkLg0KDQpJIGhhdmUgYSBzbGlnaHQgcHJvYmxlbXMgd2l0aCB0aGlzIHBhdGNoLg0KDQpUaGUg YmFzZV92aXJ0YWRkciBkb2Vzbid0IG5lY2Vzc2FyaWx5IGNvcnJlc3BvbmQgdG8gYW4gYWRkcmVz cyB0aGF0IGV2ZXJ5dGhpbmcgZ2V0cyBtYXBwZWQgdG8uIEl0J3MgYSAiaGludCIgb2Ygc29ydHMs IHRoYXQgbWF5IG9yIG1heSBub3QgYmUgdGFrZW4gaW50byBhY2NvdW50IGJ5IG1tYXAuIFRoZXJl Zm9yZSB3ZSBjYW4ndCBzaW1wbHkgYXNzdW1lIHRoYXQgaWYgd2UgcmVxdWVzdGVkIGEgYmFzZS12 aXJ0YWRkciwgZXZlcnl0aGluZyB3aWxsIGdldCBtYXBwZWQgYXQgZXhhY3RseSB0aGF0IGFkZHJl c3MuIFdlIGFsc28gY2FuJ3QgYXNzdW1lIHRoYXQgaHVnZXBhZ2VzIHdpbGwgYmUgb3JkZXJlZCBv bmUgYWZ0ZXIgdGhlIG90aGVyIGFuZCBvY2N1cHkgbmVhdGx5IGFsbCB0aGUgY29udGlndW91cyB2 aXJ0dWFsIG1lbW9yeSBiZXR3ZWVuIGJhc2VfdmlydGFkZHIgYW5kIGJhc2VfdmlydGFkZHIgKyBp bnRlcm5hbF9jb25maWcubWVtb3J5IC0gdGhlcmUgbWF5IGJlIGhvbGVzLCBmb3Igd2hhdGV2ZXIg cmVhc29ucy4NCg0KQWxzbywNCg0KVGhhbmtzLA0KQW5hdG9seQ0KDQotLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KRnJvbTogZGV2IFttYWlsdG86ZGV2LWJvdW5jZXNAZHBkay5vcmddIE9uIEJl aGFsZiBPZiBseHUNClNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIgNSwgMjAxNCAxOjI1IFBNDQpU bzogZGV2QGRwZGsub3JnPG1haWx0bzpkZXZAZHBkay5vcmc+DQpTdWJqZWN0OiBbZHBkay1kZXZd IFtQQVRDSF0gZWFsOiBtYXAgdWlvIHJlc291cmNlcyBhZnRlciBodWdlcGFnZXMgd2hlbiB0aGUg YmFzZV92aXJ0YWRkciBpcyBjb25maWd1cmVkLg0KDQotLS0NCmxpYi9saWJydGVfZWFsL2xpbnV4 YXBwL2VhbC9lYWxfcGNpX3Vpby5jIHwgOSArKysrKysrKy0NCjEgZmlsZSBjaGFuZ2VkLCA4IGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCg0KZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZWFs L2xpbnV4YXBwL2VhbC9lYWxfcGNpX3Vpby5jIGIvbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFs L2VhbF9wY2lfdWlvLmMNCmluZGV4IDdlNjIyNjYuLmJjN2VkM2EgMTAwNjQ0DQotLS0gYS9saWIv bGlicnRlX2VhbC9saW51eGFwcC9lYWwvZWFsX3BjaV91aW8uYw0KKysrIGIvbGliL2xpYnJ0ZV9l YWwvbGludXhhcHAvZWFsL2VhbF9wY2lfdWlvLmMNCkBAIC0yODksNiArMjg5LDExIEBAIHBjaV91 aW9fbWFwX3Jlc291cmNlKHN0cnVjdCBydGVfcGNpX2RldmljZSAqZGV2KQ0Kc3RydWN0IHJ0ZV9w Y2lfYWRkciAqbG9jID0gJmRldi0+YWRkcjsNCnN0cnVjdCBtYXBwZWRfcGNpX3Jlc291cmNlICp1 aW9fcmVzOw0Kc3RydWN0IHBjaV9tYXAgKm1hcHM7DQorIHN0YXRpYyB2b2lkICogcmVxdWVzdGVk X2FkZHIgPSBOVUxMOw0KKyBpZiAoaW50ZXJuYWxfY29uZmlnLmJhc2VfdmlydGFkZHIgJiYgTlVM TCA9PSByZXF1ZXN0ZWRfYWRkcikgew0KKyByZXF1ZXN0ZWRfYWRkciA9ICh1aW50OF90ICopIGlu dGVybmFsX2NvbmZpZy5iYXNlX3ZpcnRhZGRyDQorICsgaW50ZXJuYWxfY29uZmlnLm1lbW9yeTsN CisgfQ0KDQpkZXYtPmludHJfaGFuZGxlLmZkID0gLTE7DQpkZXYtPmludHJfaGFuZGxlLnR5cGUg PSBSVEVfSU5UUl9IQU5ETEVfVU5LTk9XTjsgQEAgLTM3MSwxMCArMzc2LDEyIEBAIHBjaV91aW9f bWFwX3Jlc291cmNlKHN0cnVjdCBydGVfcGNpX2RldmljZSAqZGV2KQ0KaWYgKG1hcHNbal0uYWRk ciAhPSBOVUxMKQ0KZmFpbCA9IDE7DQplbHNlIHsNCi0gbWFwYWRkciA9IHBjaV9tYXBfcmVzb3Vy Y2UoTlVMTCwgZmQsIChvZmZfdClvZmZzZXQsDQorIG1hcGFkZHIgPSBwY2lfbWFwX3Jlc291cmNl KHJlcXVlc3RlZF9hZGRyLCBmZCwgKG9mZl90KW9mZnNldCwNCihzaXplX3QpbWFwc1tqXS5zaXpl KTsNCmlmIChtYXBhZGRyID09IE5VTEwpDQpmYWlsID0gMTsNCisgZWxzZSBpZiAoTlVMTCAhPSBy ZXF1ZXN0ZWRfYWRkcikNCisgcmVxdWVzdGVkX2FkZHIgPSAodWludDhfdCAqKW1hcGFkZHIgKyBt YXBzW2pdLnNpemU7DQp9DQoNCmlmIChmYWlsKSB7DQotLQ0KMS45LjENCg==