Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S968044AbWLEDVX (ORCPT ); Mon, 4 Dec 2006 22:21:23 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S968045AbWLEDVX (ORCPT ); Mon, 4 Dec 2006 22:21:23 -0500 Received: from outbound-cpk.frontbridge.com ([207.46.163.16]:37691 "EHLO outbound1-cpk-R.bigfish.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S968044AbWLEDVV (ORCPT ); Mon, 4 Dec 2006 22:21:21 -0500 X-BigFish: VP X-Server-Uuid: 89466532-923C-4A88-82C1-66ACAA0041DF X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Subject: RE: [RFC][PATCH 2/2] x86_64: earlyprintk usb debug device support. Date: Mon, 4 Dec 2006 19:18:01 -0800 Message-ID: <5986589C150B2F49A46483AC44C7BCA4907285@ssvlexmb2.amd.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [RFC][PATCH 2/2] x86_64: earlyprintk usb debug device support. Thread-Index: AccYB908AVC39zoPR4GEOmFBP+dm2AAE6NcA From: "Lu, Yinghai" To: "Greg KH" , "Eric W. Biederman" cc: "USB development list" , "Stefan Reinauer" , "Peter Stuge" , linuxbios@linuxbios.org, linux-kernel@vger.kernel.org, "Andi Kleen" X-OriginalArrivalTime: 05 Dec 2006 03:18:02.0904 (UTC) FILETIME=[F94C0180:01C7181B] X-WSS-ID: 696A3B601WC2095297-01-01 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C7181B.F880CD68" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 19037 Lines: 281 This is a multi-part message in MIME format. ------_=_NextPart_001_01C7181B.F880CD68 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable -----Original Message----- From: Greg KH [mailto:gregkh@suse.de]=20 Sent: Monday, December 04, 2006 4:45 PM To: Eric W. Biederman Cc: Lu, Yinghai; USB development list; Stefan Reinauer; Peter Stuge; linuxbios@linuxbios.org; linux-kernel@vger.kernel.org; Andi Kleen Subject: Re: [RFC][PATCH 2/2] x86_64: earlyprintk usb debug device support. On Mon, Dec 04, 2006 at 02:26:52PM -0700, Eric W. Biederman wrote: > Greg KH writes: >=20 > Anyway next time I touch this the project will be how to integrate > this into the kernel cleanly. This round was to figure out how > to get some working code. Please check the adapted version for LinuxBIOS with your kernel patch. Hope your next version could have more good shape ... YH ------_=_NextPart_001_01C7181B.F880CD68 Content-Type: application/octet-stream; name=usbdebug_direct.h Content-Transfer-Encoding: base64 Content-Description: usbdebug_direct.h Content-Disposition: attachment; filename=usbdebug_direct.h I2lmbmRlZiBVU0JERUJVR19ESVJFQ1RfSAojZGVmaW5lIFVTQkRFQlVHX0RJUkVDVF9ICgpzdHJ1 Y3QgZWhjaV9kZWJ1Z19pbmZvIHsKICAgICAgICB2b2lkICplaGNpX2NhcHM7CiAgICAgICAgdm9p ZCAqZWhjaV9yZWdzOwogICAgICAgIHZvaWQgKmVoY2lfZGVidWc7CiAgICAgICAgdW5zaWduZWQg ZGV2bnVtOwogICAgICAgIHVuc2lnbmVkIGVuZHBvaW50X291dDsKICAgICAgICB1bnNpZ25lZCBl bmRwb2ludF9pbjsKfTsKZXh0ZXJuIGludCBkYmdwX2J1bGtfd3JpdGVfeChzdHJ1Y3QgZWhjaV9k ZWJ1Z19pbmZvICpkYmdfaW5mbywgY29uc3QgY2hhciAqYnl0ZXMsIGludCBzaXplKTsKZXh0ZXJu IGludCBkYmdwX2J1bGtfcmVhZF94KHN0cnVjdCBlaGNpX2RlYnVnX2luZm8gKmRiZ19pbmZvLCB2 b2lkICpkYXRhLCBpbnQgc2l6ZSk7CmV4dGVybiB2b2lkIHVzYmRlYnVnX2RpcmVjdF9pbml0KHVu c2lnbmVkIGVoY2lfYmFyLCB1bnNpZ25lZCBlaGNpX2RlYnVnX29mZnNldCwgc3RydWN0IGVoY2lf ZGVidWdfaW5mbyAqZGJnX2luZm8pOwpleHRlcm4gdm9pZCBzZXRfZWhjaV9iYXNlKHVuc2lnbmVk IGVoY2lfYmFzZSk7CiNlbmRpZgo= ------_=_NextPart_001_01C7181B.F880CD68 Content-Type: application/octet-stream; name=usbdebug_direct.c Content-Transfer-Encoding: base64 Content-Description: usbdebug_direct.c Content-Disposition: attachment; filename=usbdebug_direct.c LyoKICogQ29weXJpZ2h0IChDKSAyMDA2IEVyaWMgQmllZGVybWFuIChlYmllZGVybUB4bWlzc2lv bi5jb20pCiAqCiAqCVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKICoJbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbgogKgkyIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogKgogKi8KI2lmbmRlZiBfX1JPTUNDX18KI2luY2x1 ZGUgPGNvbnNvbGUvY29uc29sZS5oPgojZWxzZQojaWYgQ09ORklHX1VTRV9QUklOVEtfSU5fQ0FS PT0wCiNkZWZpbmUgcHJpbnRrX2RlYnVnKGZtdCwgYXJnLi4uKSAgIGRvIHt9IHdoaWxlKDApCiNl bmRpZgojZW5kaWYKCgojaW5jbHVkZSA8YXJjaC9pby5oPgoKI2luY2x1ZGUgPHVzYl9jaDkuaD4K I2luY2x1ZGUgPGVoY2kuaD4KI2luY2x1ZGUgPHVzYmRlYnVnX2RpcmVjdC5oPgoKI2RlZmluZSBV U0JfREVCVUdfREVWTlVNIDEyNwoKI2RlZmluZSBEQkdQX0RBVEFfVE9HR0xFCTB4ODgwMAojZGVm aW5lIERCR1BfUElEX1VQREFURSh4LCB0b2spIFwKCSgoKCh4KSBeIERCR1BfREFUQV9UT0dHTEUp ICYgMHhmZmZmMDApIHwgKCh0b2spICYgMHhmZikpCgojZGVmaW5lIERCR1BfTEVOX1VQREFURSh4 LCBsZW4pICgoKHgpICYgfjB4MGYpIHwgKChsZW4pICYgMHgwZikpCi8qCiAqIFVTQiBQYWNrZXQg SURzIChQSURzKQogKi8KCi8qIHRva2VuICovCiNkZWZpbmUgVVNCX1BJRF9PVVQJCTB4ZTEKI2Rl ZmluZSBVU0JfUElEX0lOCQkweDY5CiNkZWZpbmUgVVNCX1BJRF9TT0YJCTB4YTUKI2RlZmluZSBV U0JfUElEX1NFVFVQCQkweDJkCi8qIGhhbmRzaGFrZSAqLwojZGVmaW5lIFVTQl9QSURfQUNLCQkw eGQyCiNkZWZpbmUgVVNCX1BJRF9OQUsJCTB4NWEKI2RlZmluZSBVU0JfUElEX1NUQUxMCQkweDFl CiNkZWZpbmUgVVNCX1BJRF9OWUVUCQkweDk2Ci8qIGRhdGEgKi8KI2RlZmluZSBVU0JfUElEX0RB VEEwCQkweGMzCiNkZWZpbmUgVVNCX1BJRF9EQVRBMQkJMHg0YgojZGVmaW5lIFVTQl9QSURfREFU QTIJCTB4ODcKI2RlZmluZSBVU0JfUElEX01EQVRBCQkweDBmCi8qIFNwZWNpYWwgKi8KI2RlZmlu ZSBVU0JfUElEX1BSRUFNQkxFCTB4M2MKI2RlZmluZSBVU0JfUElEX0VSUgkJMHgzYwojZGVmaW5l IFVTQl9QSURfU1BMSVQJCTB4NzgKI2RlZmluZSBVU0JfUElEX1BJTkcJCTB4YjQKI2RlZmluZSBV U0JfUElEX1VOREVGXzAJCTB4ZjAKCiNkZWZpbmUgVVNCX1BJRF9EQVRBX1RPR0dMRQkweDg4CiNk ZWZpbmUgREJHUF9DTEFJTSAoREJHUF9PV05FUiB8IERCR1BfRU5BQkxFRCB8IERCR1BfSU5VU0Up CgojZGVmaW5lIFBDSV9DQVBfSURfRUhDSV9ERUJVRwkweGEKCiNkZWZpbmUgSFVCX1JPT1RfUkVT RVRfVElNRQk1MAkvKiB0aW1lcyBhcmUgaW4gbXNlYyAqLwojZGVmaW5lIEhVQl9TSE9SVF9SRVNF VF9USU1FCTEwCiNkZWZpbmUgSFVCX0xPTkdfUkVTRVRfVElNRQkyMDAKI2RlZmluZSBIVUJfUkVT RVRfVElNRU9VVAk1MDAKCiNkZWZpbmUgREJHUF9NQVhfUEFDS0VUCQk4CgpzdGF0aWMgaW50IGRi Z3Bfd2FpdF91bnRpbF9jb21wbGV0ZShzdHJ1Y3QgZWhjaV9kYmdfcG9ydCAqZWhjaV9kZWJ1ZykK ewoJdW5zaWduZWQgY3RybDsKCWZvciAoOzspIHsKCQljdHJsID0gcmVhZGwoJmVoY2lfZGVidWct PmNvbnRyb2wpOwoJCS8qIFN0b3Agd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQgKi8K CQlpZiAoY3RybCAmIERCR1BfRE9ORSkKCQkJYnJlYWs7Cgl9CgkvKiBOb3cgdGhhdCB3ZSBoYXZl IG9ic2VydmVkIHRoZSBjb21wbGV0ZWQgdHJhbnNhY3Rpb24sCgkgKiBjbGVhciB0aGUgZG9uZSBi aXQuCgkgKi8KCXdyaXRlbChjdHJsIHwgREJHUF9ET05FLCAmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7 CglyZXR1cm4gKGN0cmwgJiBEQkdQX0VSUk9SKSA/IC1EQkdQX0VSUkNPREUoY3RybCkgOiBEQkdQ X0xFTihjdHJsKTsKfQoKc3RhdGljIHZvaWQgZGJncF9tZGVsYXkoaW50IG1zKQp7CglpbnQgaTsK CXdoaWxlIChtcy0tKSB7CgkJZm9yIChpID0gMDsgaSA8IDEwMDA7IGkrKykKCQkJb3V0YigweDEs IDB4ODApOwoJfQp9CgpzdGF0aWMgdm9pZCBkYmdwX2JyZWF0aCh2b2lkKQp7CgkvKiBTbGVlcCB0 byBnaXZlIHRoZSBkZWJ1ZyBwb3J0IGEgY2hhbmNlIHRvIGJyZWF0aGUgKi8KfQoKc3RhdGljIGlu dCBkYmdwX3dhaXRfdW50aWxfZG9uZShzdHJ1Y3QgZWhjaV9kYmdfcG9ydCAqZWhjaV9kZWJ1Zywg dW5zaWduZWQgY3RybCkKewoJdW5zaWduZWQgcGlkcywgbHBpZDsKCWludCByZXQ7CgpyZXRyeToK CXdyaXRlbChjdHJsIHwgREJHUF9HTywgJmVoY2lfZGVidWctPmNvbnRyb2wpOwoJcmV0ID0gZGJn cF93YWl0X3VudGlsX2NvbXBsZXRlKGVoY2lfZGVidWcpOwoJcGlkcyA9IHJlYWRsKCZlaGNpX2Rl YnVnLT5waWRzKTsKCWxwaWQgPSBEQkdQX1BJRF9HRVQocGlkcyk7CgoJaWYgKHJldCA8IDApCgkJ cmV0dXJuIHJldDsKCgkvKiBJZiB0aGUgcG9ydCBpcyBnZXR0aW5nIGZ1bGwgb3IgaXQgaGFzIGRy b3BwZWQgZGF0YQoJICogc3RhcnQgcGFjaW5nIG91cnNlbHZlcywgbm90IG5lY2Vzc2FyeSBidXQg aXQncyBmcmllbmRseS4KCSAqLwoJaWYgKChscGlkID09IFVTQl9QSURfTkFLKSB8fCAobHBpZCA9 PSBVU0JfUElEX05ZRVQpKQoJCWRiZ3BfYnJlYXRoKCk7CgkKCS8qIElmIEkgZ2V0IGEgTkFDSyBy ZWlzc3VlIHRoZSB0cmFuc21pc3Npb24gKi8KCWlmIChscGlkID09IFVTQl9QSURfTkFLKQoJCWdv dG8gcmV0cnk7CgoJcmV0dXJuIHJldDsKfQoKc3RhdGljIHZvaWQgZGJncF9zZXRfZGF0YShzdHJ1 Y3QgZWhjaV9kYmdfcG9ydCAqZWhjaV9kZWJ1ZywgY29uc3Qgdm9pZCAqYnVmLCBpbnQgc2l6ZSkK ewoJY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSBidWY7Cgl1bnNpZ25lZCBsbywgaGk7Cglp bnQgaTsKCWxvID0gaGkgPSAwOwoJZm9yIChpID0gMDsgaSA8IDQgJiYgaSA8IHNpemU7IGkrKykK CQlsbyB8PSBieXRlc1tpXSA8PCAoOCppKTsKCWZvciAoOyBpIDwgOCAmJiBpIDwgc2l6ZTsgaSsr KQoJCWhpIHw9IGJ5dGVzW2ldIDw8ICg4KihpIC0gNCkpOwoJd3JpdGVsKGxvLCAmZWhjaV9kZWJ1 Zy0+ZGF0YTAzKTsKCXdyaXRlbChoaSwgJmVoY2lfZGVidWctPmRhdGE0Nyk7Cn0KCnN0YXRpYyB2 b2lkIGRiZ3BfZ2V0X2RhdGEoc3RydWN0IGVoY2lfZGJnX3BvcnQgKmVoY2lfZGVidWcsIHZvaWQg KmJ1ZiwgaW50IHNpemUpCnsKCXVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gYnVmOwoJdW5zaWduZWQg bG8sIGhpOwoJaW50IGk7CglsbyA9IHJlYWRsKCZlaGNpX2RlYnVnLT5kYXRhMDMpOwoJaGkgPSBy ZWFkbCgmZWhjaV9kZWJ1Zy0+ZGF0YTQ3KTsKCWZvciAoaSA9IDA7IGkgPCA0ICYmIGkgPCBzaXpl OyBpKyspCgkJYnl0ZXNbaV0gPSAobG8gPj4gKDgqaSkpICYgMHhmZjsKCWZvciAoOyBpIDwgOCAm JiBpIDwgc2l6ZTsgaSsrKQoJCWJ5dGVzW2ldID0gKGhpID4+ICg4KihpIC0gNCkpKSAmIDB4ZmY7 Cn0KCnN0YXRpYyBpbnQgZGJncF9idWxrX3dyaXRlKHN0cnVjdCBlaGNpX2RiZ19wb3J0ICplaGNp X2RlYnVnLCB1bnNpZ25lZCBkZXZudW0sIHVuc2lnbmVkIGVuZHBvaW50LCBjb25zdCBjaGFyICpi eXRlcywgaW50IHNpemUpCnsKCXVuc2lnbmVkIHBpZHMsIGFkZHIsIGN0cmw7CglpbnQgcmV0OwoJ aWYgKHNpemUgPiBEQkdQX01BWF9QQUNLRVQpCgkJcmV0dXJuIC0xOwoKCWFkZHIgPSBEQkdQX0VQ QUREUihkZXZudW0sIGVuZHBvaW50KTsKCglwaWRzID0gcmVhZGwoJmVoY2lfZGVidWctPnBpZHMp OwoJcGlkcyA9IERCR1BfUElEX1VQREFURShwaWRzLCBVU0JfUElEX09VVCk7CgkKCWN0cmwgPSBy ZWFkbCgmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7CgljdHJsID0gREJHUF9MRU5fVVBEQVRFKGN0cmws IHNpemUpOwoJY3RybCB8PSBEQkdQX09VVDsKCWN0cmwgfD0gREJHUF9HTzsKCglkYmdwX3NldF9k YXRhKGVoY2lfZGVidWcsIGJ5dGVzLCBzaXplKTsKCXdyaXRlbChhZGRyLCAmZWhjaV9kZWJ1Zy0+ YWRkcmVzcyk7Cgl3cml0ZWwocGlkcywgJmVoY2lfZGVidWctPnBpZHMpOwoKCXJldCA9IGRiZ3Bf d2FpdF91bnRpbF9kb25lKGVoY2lfZGVidWcsIGN0cmwpOwoJaWYgKHJldCA8IDApIHsKCQlyZXR1 cm4gcmV0OwoJfQoJcmV0dXJuIHJldDsKfQoKaW50IGRiZ3BfYnVsa193cml0ZV94KHN0cnVjdCBl aGNpX2RlYnVnX2luZm8gKmRiZ19pbmZvLCBjb25zdCBjaGFyICpieXRlcywgaW50IHNpemUpCnsK CXJldHVybiBkYmdwX2J1bGtfd3JpdGUoZGJnX2luZm8tPmVoY2lfZGVidWcsIGRiZ19pbmZvLT5k ZXZudW0sIGRiZ19pbmZvLT5lbmRwb2ludF9vdXQsIGJ5dGVzLCBzaXplKTsKfQoKc3RhdGljIGlu dCBkYmdwX2J1bGtfcmVhZChzdHJ1Y3QgZWhjaV9kYmdfcG9ydCAqZWhjaV9kZWJ1ZywgdW5zaWdu ZWQgZGV2bnVtLCB1bnNpZ25lZCBlbmRwb2ludCwgdm9pZCAqZGF0YSwgaW50IHNpemUpCnsKCXVu c2lnbmVkIHBpZHMsIGFkZHIsIGN0cmw7CglpbnQgcmV0OwoKCWlmIChzaXplID4gREJHUF9NQVhf UEFDS0VUKQoJCXJldHVybiAtMTsKCglhZGRyID0gREJHUF9FUEFERFIoZGV2bnVtLCBlbmRwb2lu dCk7CgoJcGlkcyA9IHJlYWRsKCZlaGNpX2RlYnVnLT5waWRzKTsKCXBpZHMgPSBEQkdQX1BJRF9V UERBVEUocGlkcywgVVNCX1BJRF9JTik7CgkJCgljdHJsID0gcmVhZGwoJmVoY2lfZGVidWctPmNv bnRyb2wpOwoJY3RybCA9IERCR1BfTEVOX1VQREFURShjdHJsLCBzaXplKTsKCWN0cmwgJj0gfkRC R1BfT1VUOwoJY3RybCB8PSBEQkdQX0dPOwoJCQoJd3JpdGVsKGFkZHIsICZlaGNpX2RlYnVnLT5h ZGRyZXNzKTsKCXdyaXRlbChwaWRzLCAmZWhjaV9kZWJ1Zy0+cGlkcyk7CglyZXQgPSBkYmdwX3dh aXRfdW50aWxfZG9uZShlaGNpX2RlYnVnLCBjdHJsKTsKCWlmIChyZXQgPCAwKQoJCXJldHVybiBy ZXQ7CglpZiAoc2l6ZSA+IHJldCkKCQlzaXplID0gcmV0OwoJZGJncF9nZXRfZGF0YShlaGNpX2Rl YnVnLCBkYXRhLCBzaXplKTsKCXJldHVybiByZXQ7Cn0KaW50IGRiZ3BfYnVsa19yZWFkX3goc3Ry dWN0IGVoY2lfZGVidWdfaW5mbyAqZGJnX2luZm8sIHZvaWQgKmRhdGEsIGludCBzaXplKQp7Cgly ZXR1cm4gZGJncF9idWxrX3JlYWQoZGJnX2luZm8tPmVoY2lfZGVidWcsIGRiZ19pbmZvLT5kZXZu dW0sIGRiZ19pbmZvLT5lbmRwb2ludF9pbiwgZGF0YSwgc2l6ZSk7Cn0KCnN0YXRpYyBpbnQgZGJn cF9jb250cm9sX21zZyhzdHJ1Y3QgZWhjaV9kYmdfcG9ydCAqZWhjaV9kZWJ1ZywgdW5zaWduZWQg ZGV2bnVtLCBpbnQgcmVxdWVzdHR5cGUsIGludCByZXF1ZXN0LCAKCWludCB2YWx1ZSwgaW50IGlu ZGV4LCB2b2lkICpkYXRhLCBpbnQgc2l6ZSkKewoJdW5zaWduZWQgcGlkcywgYWRkciwgY3RybDsK CXN0cnVjdCB1c2JfY3RybHJlcXVlc3QgcmVxOwoJaW50IHJlYWQ7CglpbnQgcmV0OwoKCXJlYWQg PSAocmVxdWVzdHR5cGUgJiBVU0JfRElSX0lOKSAhPSAwOwoJaWYgKHNpemUgPiAocmVhZD9EQkdQ X01BWF9QQUNLRVQ6MCkpCgkJcmV0dXJuIC0xOwoJCgkvKiBDb21wdXRlIHRoZSBjb250cm9sIG1l c3NhZ2UgKi8KCXJlcS5iUmVxdWVzdFR5cGUgPSByZXF1ZXN0dHlwZTsKCXJlcS5iUmVxdWVzdCA9 IHJlcXVlc3Q7CglyZXEud1ZhbHVlID0gdmFsdWU7CglyZXEud0luZGV4ID0gaW5kZXg7CglyZXEu d0xlbmd0aCA9IHNpemU7CgoJcGlkcyA9IERCR1BfUElEX1NFVChVU0JfUElEX0RBVEEwLCBVU0Jf UElEX1NFVFVQKTsKCWFkZHIgPSBEQkdQX0VQQUREUihkZXZudW0sIDApOwoKCWN0cmwgPSByZWFk bCgmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7CgljdHJsID0gREJHUF9MRU5fVVBEQVRFKGN0cmwsIHNp emVvZihyZXEpKTsKCWN0cmwgfD0gREJHUF9PVVQ7CgljdHJsIHw9IERCR1BfR087CgoJLyogU2Vu ZCB0aGUgc2V0dXAgbWVzc2FnZSAqLwoJZGJncF9zZXRfZGF0YShlaGNpX2RlYnVnLCAmcmVxLCBz aXplb2YocmVxKSk7Cgl3cml0ZWwoYWRkciwgJmVoY2lfZGVidWctPmFkZHJlc3MpOwoJd3JpdGVs KHBpZHMsICZlaGNpX2RlYnVnLT5waWRzKTsKCXJldCA9IGRiZ3Bfd2FpdF91bnRpbF9kb25lKGVo Y2lfZGVidWcsIGN0cmwpOwoJaWYgKHJldCA8IDApCgkJcmV0dXJuIHJldDsKCgoJLyogUmVhZCB0 aGUgcmVzdWx0ICovCglyZXQgPSBkYmdwX2J1bGtfcmVhZChlaGNpX2RlYnVnLCBkZXZudW0sIDAs IGRhdGEsIHNpemUpOwoJcmV0dXJuIHJldDsKfQoKc3RhdGljIGludCBlaGNpX3Jlc2V0X3BvcnQo c3RydWN0IGVoY2lfcmVncyAqZWhjaV9yZWdzLCBpbnQgcG9ydCkKewoJdW5zaWduZWQgcG9ydHNj OwoJdW5zaWduZWQgZGVsYXlfdGltZSwgZGVsYXk7CgoJLyogUmVzZXQgdGhlIHVzYiBkZWJ1ZyBw b3J0ICovCglwb3J0c2MgPSByZWFkbCgmZWhjaV9yZWdzLT5wb3J0X3N0YXR1c1twb3J0IC0gMV0p OwoJcG9ydHNjICY9IH5QT1JUX1BFOwoJcG9ydHNjIHw9IFBPUlRfUkVTRVQ7Cgl3cml0ZWwocG9y dHNjLCAmZWhjaV9yZWdzLT5wb3J0X3N0YXR1c1twb3J0IC0gMV0pOwoKCWRlbGF5ID0gSFVCX1JP T1RfUkVTRVRfVElNRTsKCWZvciAoZGVsYXlfdGltZSA9IDA7IGRlbGF5X3RpbWUgPCBIVUJfUkVT RVRfVElNRU9VVDsKCSAgICAgZGVsYXlfdGltZSArPSBkZWxheSkgewoJCWRiZ3BfbWRlbGF5KGRl bGF5KTsKCgkJcG9ydHNjID0gcmVhZGwoJmVoY2lfcmVncy0+cG9ydF9zdGF0dXNbcG9ydCAtIDFd KTsKCQlpZiAocG9ydHNjICYgUE9SVF9SRVNFVCkgewoJCQkvKiBmb3JjZSByZXNldCB0byBjb21w bGV0ZSAqLwoJCQl3cml0ZWwocG9ydHNjICYgfihQT1JUX1JXQ19CSVRTIHwgUE9SVF9SRVNFVCks IAoJCQkJJmVoY2lfcmVncy0+cG9ydF9zdGF0dXNbcG9ydCAtIDFdKTsKCQkJd2hpbGUgKHBvcnRz YyAmIFBPUlRfUkVTRVQpCgkJCQlwb3J0c2MgPSByZWFkbCgmZWhjaV9yZWdzLT5wb3J0X3N0YXR1 c1twb3J0IC0gMV0pOwoJCX0KCgkJLyogRGV2aWNlIHdlbnQgYXdheT8gKi8KCQlpZiAoIShwb3J0 c2MgJiBQT1JUX0NPTk5FQ1QpKQoJCQlyZXR1cm4gLTEwNzsvLy1FTk9UQ09OTjsKCgkJLyogYm9t YiBvdXQgY29tcGxldGVseSBpZiBzb21ldGhpbmcgd2VpcmQgaGFwcGVuZCAqLwoJCWlmICgocG9y dHNjICYgUE9SVF9DU0MpKQoJCQlyZXR1cm4gLTIyOy8vLUVJTlZBTDsKCgkJLyogSWYgd2UndmUg ZmluaXNoZWQgcmVzZXR0aW5nLCB0aGVuIGJyZWFrIG91dCBvZiB0aGUgbG9vcCAqLwoJCWlmICgh KHBvcnRzYyAmIFBPUlRfUkVTRVQpICYmIChwb3J0c2MgJiBQT1JUX1BFKSkKCQkJcmV0dXJuIDA7 Cgl9CglyZXR1cm4gLTE2Oy8vLUVCVVNZOwp9CgpzdGF0aWMgaW50IGVoY2lfd2FpdF9mb3JfcG9y dChzdHJ1Y3QgZWhjaV9yZWdzICplaGNpX3JlZ3MsIGludCBwb3J0KQp7Cgl1bnNpZ25lZCBzdGF0 dXM7CglpbnQgcmV0LCByZXBzOwoJZm9yIChyZXBzID0gMDsgcmVwcyA8MTAwMDsgcmVwcysrKSB7 CgkJc3RhdHVzID0gcmVhZGwoJmVoY2lfcmVncy0+c3RhdHVzKTsKCQlpZiAoc3RhdHVzICYgU1RT X1BDRCkgewoJCQlyZXQgPSBlaGNpX3Jlc2V0X3BvcnQoZWhjaV9yZWdzLCBwb3J0KTsKCQkJaWYg KHJldCA9PSAwKQoJCQkJcmV0dXJuIDA7CgkJfQoJfQoJcmV0dXJuIC0xMDc7IC8vLUVOT1RDT05O Owp9CgoKI2RlZmluZSBEQkdQX0RFQlVHIDEKI2lmIERCR1BfREVCVUcKIyBkZWZpbmUgZGJncF9w cmludGsgcHJpbnRrX2RlYnVnCiNlbHNlCiNkZWZpbmUgZGJncF9wcmludGsoZm10LCBhcmcuLi4p ICAgZG8ge30gd2hpbGUoMCkKI2VuZGlmCgpzdGF0aWMgaW50IGVoY2lfc2V0dXAoIHN0cnVjdCBl aGNpX2NhcHMgKmVoY2lfY2FwcywgCglzdHJ1Y3QgZWhjaV9yZWdzICplaGNpX3JlZ3MsIAoJc3Ry dWN0IGVoY2lfZGJnX3BvcnQgKmVoY2lfZGVidWcpCnsKCXVuc2lnbmVkIGNtZCwgY3RybCwgc3Rh dHVzLCBwb3J0c2MsIGhjc19wYXJhbXMsIGRlYnVnX3BvcnQsIG5fcG9ydHM7CglpbnQgcmV0OwoK CWhjc19wYXJhbXMgPSByZWFkbCgmZWhjaV9jYXBzLT5oY3NfcGFyYW1zKTsKCWRlYnVnX3BvcnQg PSBIQ1NfREVCVUdfUE9SVChoY3NfcGFyYW1zKTsKCW5fcG9ydHMgICAgPSBIQ1NfTl9QT1JUUyho Y3NfcGFyYW1zKTsKCglkYmdwX3ByaW50aygiZGVidWdfcG9ydDogJWRcbiIsIGRlYnVnX3BvcnQp OwoJZGJncF9wcmludGsoIm5fcG9ydHM6ICAgICVkXG4iLCBuX3BvcnRzKTsKCgkvKiBSZXNldCB0 aGUgRUhDSSBjb250cm9sbGVyICovCgljbWQgPSByZWFkbCgmZWhjaV9yZWdzLT5jb21tYW5kKTsK CWNtZCB8PUNNRF9SRVNFVDsKCXdyaXRlbChjbWQsICZlaGNpX3JlZ3MtPmNvbW1hbmQpOwoJd2hp bGUgKGNtZCAmIENNRF9SRVNFVCkKCQljbWQgPSByZWFkbCgmZWhjaV9yZWdzLT5jb21tYW5kKTsK CQoJLyogQ2xhaW0gb3duZXJzaGlwLCBidXQgZG8gbm90IGVuYWJsZSB5ZXQgKi8KCWN0cmwgPSBy ZWFkbCgmZWhjaV9kZWJ1Zy0+Y29udHJvbCk7CgljdHJsIHw9IERCR1BfT1dORVI7CgljdHJsICY9 IH4oREJHUF9FTkFCTEVEIHwgREJHUF9JTlVTRSk7Cgl3cml0ZWwoY3RybCwgJmVoY2lfZGVidWct PmNvbnRyb2wpOwoKCS8qIFN0YXJ0IHRoZSBlaGNpIHJ1bm5pbmcgKi8KCWNtZCA9IHJlYWRsKCZl aGNpX3JlZ3MtPmNvbW1hbmQpOwoJY21kICY9IH4oQ01EX0xSRVNFVCB8IENNRF9JQUFEIHwgQ01E X1BTRSB8IENNRF9BU0UgfCBDTURfUkVTRVQpOwoJY21kIHw9IENNRF9SVU47Cgl3cml0ZWwoY21k LCAmZWhjaV9yZWdzLT5jb21tYW5kKTsKCgkvKiBFbnN1cmUgZXZlcnl0aGluZyBpcyByb3V0ZWQg dG8gdGhlIEVIQ0kgKi8KCXdyaXRlbChGTEFHX0NGLCAmZWhjaV9yZWdzLT5jb25maWd1cmVkX2Zs YWcpOwoKCS8qIFdhaXQgdW50aWwgdGhlIGNvbnRyb2xsZXIgaXMgbm8gbG9uZ2VyIGhhbHRlZCAq LwoJZG8gewoJCXN0YXR1cyA9IHJlYWRsKCZlaGNpX3JlZ3MtPnN0YXR1cyk7Cgl9IHdoaWxlIChz dGF0dXMgJiBTVFNfSEFMVCk7CgoJLyogV2FpdCBmb3IgYSBkZXZpY2UgdG8gc2hvdyB1cCBpbiB0 aGUgZGVidWcgcG9ydCAqLwoJcmV0ID0gZWhjaV93YWl0X2Zvcl9wb3J0KGVoY2lfcmVncywgZGVi dWdfcG9ydCk7CglpZiAocmV0IDwgMCkgewoJCWRiZ3BfcHJpbnRrKCJObyBkZXZpY2UgZm91bmQg aW4gZGVidWcgcG9ydFxuIik7CgkJcmV0dXJuIC0xOwoJfQoJZGJncF9wcmludGsoIjMiKTsKCgkv KiBFbmFibGUgdGhlIGRlYnVnIHBvcnQgKi8KCWN0cmwgPSByZWFkbCgmZWhjaV9kZWJ1Zy0+Y29u dHJvbCk7CgljdHJsIHw9IERCR1BfQ0xBSU07Cgl3cml0ZWwoY3RybCwgJmVoY2lfZGVidWctPmNv bnRyb2wpOwoJY3RybCA9IHJlYWRsKCZlaGNpX2RlYnVnLT5jb250cm9sKTsKCWlmICgoY3RybCAm IERCR1BfQ0xBSU0pICE9IERCR1BfQ0xBSU0pIHsKCQlkYmdwX3ByaW50aygiTm8gZGV2aWNlIGlu IGRlYnVnIHBvcnRcbiIpOwoJCXdyaXRlbChjdHJsICYgfkRCR1BfQ0xBSU0sICZlaGNpX2RlYnVn LT5jb250cm9sKTsKCQlyZXR1cm4gLTE7CgoJfQoKCS8qIENvbXBsZXRlbHkgdHJhbnNmZXIgdGhl IGRlYnVnIGRldmljZSB0byB0aGUgZGVidWcgY29udHJvbGxlciAqLwoJcG9ydHNjID0gcmVhZGwo JmVoY2lfcmVncy0+cG9ydF9zdGF0dXNbZGVidWdfcG9ydCAtIDFdKTsKCXBvcnRzYyAmPSB+UE9S VF9QRTsKCXdyaXRlbChwb3J0c2MsICZlaGNpX3JlZ3MtPnBvcnRfc3RhdHVzW2RlYnVnX3BvcnQg LSAxXSk7CgoJcmV0dXJuIDA7Cn0KCnZvaWQgdXNiZGVidWdfZGlyZWN0X2luaXQodW5zaWduZWQg ZWhjaV9iYXIsIHVuc2lnbmVkIG9mZnNldCwgc3RydWN0IGVoY2lfZGVidWdfaW5mbyAqaW5mbykK ewoJc3RydWN0IGVoY2lfY2FwcyAqZWhjaV9jYXBzOwoJc3RydWN0IGVoY2lfcmVncyAqZWhjaV9y ZWdzOwoJc3RydWN0IGVoY2lfZGJnX3BvcnQgKmVoY2lfZGVidWc7Cgl1bnNpZ25lZCBkYmdwX2Vu ZHBvaW50X291dDsKCXVuc2lnbmVkIGRiZ3BfZW5kcG9pbnRfaW47CglzdHJ1Y3QgdXNiX2RlYnVn X2Rlc2NyaXB0b3IgZGJncF9kZXNjOwoJdW5zaWduZWQgY3RybCwgZGV2bnVtOwoJaW50IHJldDsK CgllaGNpX2NhcHMgID0gKHN0cnVjdCBlaGNpX2NhcHMgKillaGNpX2JhcjsKCWVoY2lfcmVncyAg PSAoc3RydWN0IGVoY2lfcmVncyAqKShlaGNpX2JhciArIEhDX0xFTkdUSChyZWFkbCgmZWhjaV9j YXBzLT5oY19jYXBiYXNlKSkpOwoJZWhjaV9kZWJ1ZyA9IChzdHJ1Y3QgZWhjaV9kYmdfcG9ydCAq KShlaGNpX2JhciArIG9mZnNldCk7CgoJcmV0ID0gZWhjaV9zZXR1cChlaGNpX2NhcHMsIGVoY2lf cmVncywgZWhjaV9kZWJ1Zyk7CglpZiAocmV0IDwgMCkgewoJCWRiZ3BfcHJpbnRrKCJlaGNpX3Nl dHVwIGZhaWxlZFxuIik7CgkJcmV0dXJuOwoJfQoKCS8qIEZpbmQgdGhlIGRlYnVnIGRldmljZSBh bmQgbWFrZSBpdCBkZXZpY2UgbnVtYmVyIDEyNyAqLwoJZm9yIChkZXZudW0gPSAwOyBkZXZudW0g PD0gMTI3OyBkZXZudW0rKykgewoJCXJldCA9IGRiZ3BfY29udHJvbF9tc2coZWhjaV9kZWJ1Zywg ZGV2bnVtLAoJCQlVU0JfRElSX0lOIHwgVVNCX1RZUEVfU1RBTkRBUkQgfCBVU0JfUkVDSVBfREVW SUNFLAoJCQlVU0JfUkVRX0dFVF9ERVNDUklQVE9SLCAoVVNCX0RUX0RFQlVHIDw8IDgpLCAwLAoJ CQkmZGJncF9kZXNjLCBzaXplb2YoZGJncF9kZXNjKSk7CgkJaWYgKHJldCA+IDApCgkJCWJyZWFr OwoJfQoJaWYgKGRldm51bSA+IDEyNykgewoJCWRiZ3BfcHJpbnRrKCJDb3VsZCBub3QgZmluZCBh dHRhY2hlZCBkZWJ1ZyBkZXZpY2VcbiIpOwoJCWdvdG8gZXJyOwoJfQoJaWYgKHJldCA8IDApIHsK CQlkYmdwX3ByaW50aygiQXR0YWNoZWQgZGV2aWNlIGlzIG5vdCBhIGRlYnVnIGRldmljZVxuIik7 CgkJZ290byBlcnI7Cgl9CglkYmdwX2VuZHBvaW50X291dCA9IGRiZ3BfZGVzYy5iRGVidWdPdXRF bmRwb2ludDsKCWRiZ3BfZW5kcG9pbnRfaW4gPSBkYmdwX2Rlc2MuYkRlYnVnSW5FbmRwb2ludDsK CgkvKiBNb3ZlIHRoZSBkZXZpY2UgdG8gMTI3IGlmIGl0IGlzbid0IGFscmVhZHkgdGhlcmUgKi8K CWlmIChkZXZudW0gIT0gVVNCX0RFQlVHX0RFVk5VTSkgewoJCXJldCA9IGRiZ3BfY29udHJvbF9t c2coZWhjaV9kZWJ1ZywgZGV2bnVtLAoJCQlVU0JfRElSX09VVCB8IFVTQl9UWVBFX1NUQU5EQVJE IHwgVVNCX1JFQ0lQX0RFVklDRSwKCQkJVVNCX1JFUV9TRVRfQUREUkVTUywgVVNCX0RFQlVHX0RF Vk5VTSwgMCwgKHZvaWQgKikwLCAwKTsKCQlpZiAocmV0IDwgMCkgewoJCQlkYmdwX3ByaW50aygi Q291bGQgbm90IG1vdmUgYXR0YWNoZWQgZGV2aWNlIHRvICVkXG4iLCAKCQkJCVVTQl9ERUJVR19E RVZOVU0pOwoJCQlnb3RvIGVycjsKCQl9CgkJZGV2bnVtID0gVVNCX0RFQlVHX0RFVk5VTTsKCX0K CgkvKiBFbmFibGUgdGhlIGRlYnVnIGludGVyZmFjZSAqLwoJcmV0ID0gZGJncF9jb250cm9sX21z ZyhlaGNpX2RlYnVnLCBVU0JfREVCVUdfREVWTlVNLAoJCVVTQl9ESVJfT1VUIHwgVVNCX1RZUEVf U1RBTkRBUkQgfCBVU0JfUkVDSVBfREVWSUNFLAoJCVVTQl9SRVFfU0VUX0ZFQVRVUkUsIFVTQl9E RVZJQ0VfREVCVUdfTU9ERSwgMCwgKHZvaWQgKikwLCAwKTsKCWlmIChyZXQgPCAwKSB7CgkJZGJn cF9wcmludGsoIiBDb3VsZCBub3QgZW5hYmxlIHRoZSBkZWJ1ZyBkZXZpY2VcbiIpOwoJCWdvdG8g ZXJyOwoJfQoKCS8qIFBlcmZvcm0gYSBzbWFsbCB3cml0ZSB0byBnZXQgdGhlIGV2ZW4vb2RkIGRh dGEgc3RhdGUgaW4gc3luYwoJICovCglyZXQgPSBkYmdwX2J1bGtfd3JpdGUoZWhjaV9kZWJ1Zywg VVNCX0RFQlVHX0RFVk5VTSwgZGJncF9lbmRwb2ludF9vdXQsICIgIiwxKTsKCWlmIChyZXQgPCAw KSB7CgkJZGJncF9wcmludGsoImRiZ3BfYnVsa193cml0ZSBmYWlsZWQ6ICVkXG4iLCByZXQpOwoJ CWdvdG8gZXJyOwoJfQoKCWluZm8tPmVoY2lfY2FwcyA9IGVoY2lfY2FwczsKCWluZm8tPmVoY2lf cmVncyA9IGVoY2lfcmVnczsKCWluZm8tPmVoY2lfZGVidWcgPSBlaGNpX2RlYnVnOwoJaW5mby0+ ZGV2bnVtID0gZGV2bnVtOwoJaW5mby0+ZW5kcG9pbnRfb3V0ID0gZGJncF9lbmRwb2ludF9vdXQ7 CglpbmZvLT5lbmRwb2ludF9pbiA9IGRiZ3BfZW5kcG9pbnRfaW47CgkKCXJldHVybjsKZXJyOgoJ LyogVGhpbmdzIGRpZG4ndCB3b3JrIHNvIHJlbW92ZSBteSBjbGFpbSAqLwoJY3RybCA9IHJlYWRs KCZlaGNpX2RlYnVnLT5jb250cm9sKTsKCWN0cmwgJj0gfihEQkdQX0NMQUlNIHwgREJHUF9PVVQp OwoJd3JpdGVsKGN0cmwsICZlaGNpX2RlYnVnLT5jb250cm9sKTsKCXJldHVybjsKfQoKCg== ------_=_NextPart_001_01C7181B.F880CD68-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/