Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752796Ab2JVJXS (ORCPT ); Mon, 22 Oct 2012 05:23:18 -0400 Received: from mail-pb0-f46.google.com ([209.85.160.46]:49266 "EHLO mail-pb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752111Ab2JVJXR (ORCPT ); Mon, 22 Oct 2012 05:23:17 -0400 MIME-Version: 1.0 In-Reply-To: <1350921638-9330-1-git-send-email-ling.ma.program@gmail.com> References: <1350921638-9330-1-git-send-email-ling.ma.program@gmail.com> Date: Mon, 22 Oct 2012 17:23:16 +0800 Message-ID: Subject: Re: [PATCH RFC V2] [x86] Optimize small size memcpy by avoding long latency from decode stage From: Ling Ma To: mingo@elte.hu Cc: hpa@zytor.com, tglx@linutronix.de, linux-kernel@vger.kernel.org, iant@google.com, Ma Ling Content-Type: multipart/mixed; boundary=e89a8ff247a5489fad04cca26752 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 26279 Lines: 418 --e89a8ff247a5489fad04cca26752 Content-Type: text/plain; charset=ISO-8859-1 Attached memcpy micro benchmark, cpu info ,comparison results between rep movsq/b and memcpy on atom, ivb. Thanks Ling 2012/10/23, ling.ma.program@gmail.com : > From: Ma Ling > > CISC code has higher instruction density, saving memory and > improving i-cache hit rate. However decode become challenge, > only one mulitple-uops(2~3)instruction could be decoded in one cycle, > and instructions containing more 4 uops(rep movsq/b) have to be handled by > MS-ROM, > the process take long time and eat up the advantage from it for small size. > > > In order to avoid this disavantage, we take use of general instruction code > for small size copy. The result shows it can get 1~2x improvement > on Core2, Nehalem, Sandy Bridge, Ivy Bridge, Atom, and Bulldozer as well. > > Signed-off-by: Ma Ling > --- > In this version we decrease warm up distance from 512 to 256 for coming > CPUs, > which manage to reduce latency, but long time to decode is still consumed. > > Thanks > Ling > > arch/x86/lib/memcpy_64.S | 14 +++++++++++++- > 1 files changed, 13 insertions(+), 1 deletions(-) > > diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S > index 1c273be..6a24c8c 100644 > --- a/arch/x86/lib/memcpy_64.S > +++ b/arch/x86/lib/memcpy_64.S > @@ -5,7 +5,6 @@ > #include > #include > #include > - > /* > * memcpy - Copy a memory block. > * > @@ -19,6 +18,15 @@ > */ > > /* > + * memcpy_c() and memcpy_c_e() use rep movsq/movsb respectively, > + * the instruction have to get micro ops from Microcode Sequencser Rom. > + * And the decode process take long latency, in order to avoid it, > + * we choose loop unrolling routine for small size. > + * Could vary the warm up distance. > + */ > + > + > +/* > * memcpy_c() - fast string ops (REP MOVSQ) based variant. > * > * This gets patched over the unrolled variant (below) via the > @@ -26,6 +34,8 @@ > */ > .section .altinstr_replacement, "ax", @progbits > .Lmemcpy_c: > + cmpq $256, %rdx > + jbe memcpy > movq %rdi, %rax > movq %rdx, %rcx > shrq $3, %rcx > @@ -46,6 +56,8 @@ > */ > .section .altinstr_replacement, "ax", @progbits > .Lmemcpy_c_e: > + cmpq $256, %rdx > + jbe memcpy > movq %rdi, %rax > movq %rdx, %rcx > rep movsb > -- > 1.6.5.2 > > --e89a8ff247a5489fad04cca26752 Content-Type: text/plain; charset=US-ASCII; name=atom-cpu-info Content-Disposition: attachment; filename=atom-cpu-info Content-Transfer-Encoding: base64 X-Attachment-Id: file1 cHJvY2Vzc29yCTogMAp2ZW5kb3JfaWQJOiBHZW51aW5lSW50ZWwKY3B1IGZhbWlseQk6IDYKbW9k ZWwJCTogMjgKbW9kZWwgbmFtZQk6IEludGVsKFIpIEF0b20oVE0pIENQVSBONDUwICAgQCAxLjY2 R0h6CnN0ZXBwaW5nCTogMTAKbWljcm9jb2RlCTogMHgxMDcKY3B1IE1IegkJOiAxMDAwLjAwMApj YWNoZSBzaXplCTogNTEyIEtCCnBoeXNpY2FsIGlkCTogMApzaWJsaW5ncwk6IDIKY29yZSBpZAkJ OiAwCmNwdSBjb3Jlcwk6IDEKYXBpY2lkCQk6IDAKaW5pdGlhbCBhcGljaWQJOiAwCmZwdQkJOiB5 ZXMKZnB1X2V4Y2VwdGlvbgk6IHllcwpjcHVpZCBsZXZlbAk6IDEwCndwCQk6IHllcwpmbGFncwkJ OiBmcHUgdm1lIGRlIHBzZSB0c2MgbXNyIHBhZSBtY2UgY3g4IGFwaWMgc2VwIG10cnIgcGdlIG1j YSBjbW92IHBhdCBjbGZsdXNoIGR0cyBhY3BpIG1teCBmeHNyIHNzZSBzc2UyIHNzIGh0IHRtIHBi ZSBzeXNjYWxsIG54IGxtIGNvbnN0YW50X3RzYyBhcmNoX3BlcmZtb24gcGVicyBidHMgcmVwX2dv b2Qgbm9wbCBhcGVyZm1wZXJmIHBuaSBkdGVzNjQgbW9uaXRvciBkc19jcGwgZXN0IHRtMiBzc3Nl MyBjeDE2IHh0cHIgcGRjbSBtb3ZiZSBsYWhmX2xtIGR0cwpib2dvbWlwcwk6IDMzMjQuNjIKY2xm bHVzaCBzaXplCTogNjQKY2FjaGVfYWxpZ25tZW50CTogNjQKYWRkcmVzcyBzaXplcwk6IDMyIGJp dHMgcGh5c2ljYWwsIDQ4IGJpdHMgdmlydHVhbApwb3dlciBtYW5hZ2VtZW50OgoKcHJvY2Vzc29y CTogMQp2ZW5kb3JfaWQJOiBHZW51aW5lSW50ZWwKY3B1IGZhbWlseQk6IDYKbW9kZWwJCTogMjgK bW9kZWwgbmFtZQk6IEludGVsKFIpIEF0b20oVE0pIENQVSBONDUwICAgQCAxLjY2R0h6CnN0ZXBw aW5nCTogMTAKbWljcm9jb2RlCTogMHgxMDcKY3B1IE1IegkJOiAxMDAwLjAwMApjYWNoZSBzaXpl CTogNTEyIEtCCnBoeXNpY2FsIGlkCTogMApzaWJsaW5ncwk6IDIKY29yZSBpZAkJOiAwCmNwdSBj b3Jlcwk6IDEKYXBpY2lkCQk6IDEKaW5pdGlhbCBhcGljaWQJOiAxCmZwdQkJOiB5ZXMKZnB1X2V4 Y2VwdGlvbgk6IHllcwpjcHVpZCBsZXZlbAk6IDEwCndwCQk6IHllcwpmbGFncwkJOiBmcHUgdm1l IGRlIHBzZSB0c2MgbXNyIHBhZSBtY2UgY3g4IGFwaWMgc2VwIG10cnIgcGdlIG1jYSBjbW92IHBh dCBjbGZsdXNoIGR0cyBhY3BpIG1teCBmeHNyIHNzZSBzc2UyIHNzIGh0IHRtIHBiZSBzeXNjYWxs IG54IGxtIGNvbnN0YW50X3RzYyBhcmNoX3BlcmZtb24gcGVicyBidHMgcmVwX2dvb2Qgbm9wbCBh cGVyZm1wZXJmIHBuaSBkdGVzNjQgbW9uaXRvciBkc19jcGwgZXN0IHRtMiBzc3NlMyBjeDE2IHh0 cHIgcGRjbSBtb3ZiZSBsYWhmX2xtIGR0cwpib2dvbWlwcwk6IDMzMjQuNjIKY2xmbHVzaCBzaXpl CTogNjQKY2FjaGVfYWxpZ25tZW50CTogNjQKYWRkcmVzcyBzaXplcwk6IDMyIGJpdHMgcGh5c2lj YWwsIDQ4IGJpdHMgdmlydHVhbApwb3dlciBtYW5hZ2VtZW50OgoK --e89a8ff247a5489fad04cca26752 Content-Type: text/plain; charset=US-ASCII; name=atom-memcpy-result Content-Disposition: attachment; filename=atom-memcpy-result Content-Transfer-Encoding: base64 X-Attachment-Id: file2 ICAgICAgICAgICAgICAgICAgICAgICAJbWVtY3B5X25ldwltZW1jcHlfYwltZW1jcHlfY19lClRQ VDogTGVuICAgIDAsIGFsaWdubWVudCAgMC8gMDoJNTAJOTAJNzAKVFBUOiBMZW4gICAgNCwgYWxp Z25tZW50ICAwLyAwOgk2MAkxMTAJODAKVFBUOiBMZW4gICAgOCwgYWxpZ25tZW50ICAwLyAwOgk2 MAkxMDAJMTAwClRQVDogTGVuICAgMTIsIGFsaWdubWVudCAgMC8gMDoJNTAJMTIwCTExMApUUFQ6 IExlbiAgIDE2LCBhbGlnbm1lbnQgIDAvIDA6CTYwCTEwMAkxMzAKVFBUOiBMZW4gICAyMCwgYWxp Z25tZW50ICAwLyAwOgk2MAkxMjAJMTQwClRQVDogTGVuICAgMjQsIGFsaWdubWVudCAgMC8gMDoJ NjAJMTAwCTE2MApUUFQ6IExlbiAgIDI4LCBhbGlnbm1lbnQgIDAvIDA6CTYwCTEyMAkxODAKVFBU OiBMZW4gICAzMiwgYWxpZ25tZW50ICAwLyAwOgk2MAkxMDAJMTkwClRQVDogTGVuICAgMzYsIGFs aWdubWVudCAgMC8gMDoJNzAJMTIwCTIwMApUUFQ6IExlbiAgIDQwLCBhbGlnbm1lbnQgIDAvIDA6 CTcwCTEwMAkyMjAKVFBUOiBMZW4gICA0NCwgYWxpZ25tZW50ICAwLyAwOgk3MAkxMjAJMjQwClRQ VDogTGVuICAgNDgsIGFsaWdubWVudCAgMC8gMDoJNzAJMTEwCTI1MApUUFQ6IExlbiAgIDUyLCBh bGlnbm1lbnQgIDAvIDA6CTcwCTEzMAkyNzAKVFBUOiBMZW4gICA1NiwgYWxpZ25tZW50ICAwLyAw Ogk3MAkxMTAJMjgwClRQVDogTGVuICAgNjAsIGFsaWdubWVudCAgMC8gMDoJNzAJMTMwCTI5MApU UFQ6IExlbiAgICAwLCBhbGlnbm1lbnQgIDQvIDA6CTUwCTkwCTcwClRQVDogTGVuICAgIDAsIGFs aWdubWVudCAgMC8gNDoJNTAJOTAJNzAKVFBUOiBMZW4gICAgMCwgYWxpZ25tZW50ICAwLyAwOgk1 MAk5MAk3MApUUFQ6IExlbiAgICAwLCBhbGlnbm1lbnQgIDAvIDg6CTUwCTkwCTcwClRQVDogTGVu ICAgIDAsIGFsaWdubWVudCAgOC8gMDoJNTAJOTAJNzAKVFBUOiBMZW4gICAgMCwgYWxpZ25tZW50 ICAwLzE2Ogk1MAk5MAk3MApUUFQ6IExlbiAgICAwLCBhbGlnbm1lbnQgMTYvIDA6CTUwCTkwCTcw ClRQVDogTGVuICAgNjQsIGFsaWdubWVudCAgNC8gMDoJOTAJMTIwCTIwMApUUFQ6IExlbiAgIDY0 LCBhbGlnbm1lbnQgIDAvIDQ6CTkwCTEzMAkzMDAKVFBUOiBMZW4gICA2NCwgYWxpZ25tZW50ICAw LyAwOgk3MAkxMTAJMzEwClRQVDogTGVuICAgNjQsIGFsaWdubWVudCAgMC8gODoJODAJMTYwCTIw MApUUFQ6IExlbiAgIDY0LCBhbGlnbm1lbnQgIDgvIDA6CTcwCTExMAkyMDAKVFBUOiBMZW4gICA2 NCwgYWxpZ25tZW50ICAwLzE2Ogk4MAkxMzAJMjAwClRQVDogTGVuICAgNjQsIGFsaWdubWVudCAx Ni8gMDoJNzAJMTEwCTIwMApUUFQ6IExlbiAgMTI4LCBhbGlnbm1lbnQgIDQvIDA6CTEyMAkxNTAJ MzMwClRQVDogTGVuICAxMjgsIGFsaWdubWVudCAgMC8gNDoJMTMwCTE2MAk1NDAKVFBUOiBMZW4g IDEyOCwgYWxpZ25tZW50ICAwLyAwOgkxMDAJMTMwCTU1MApUUFQ6IExlbiAgMTI4LCBhbGlnbm1l bnQgIDAvIDg6CTEwMAkyMzAJMzMwClRQVDogTGVuICAxMjgsIGFsaWdubWVudCAgOC8gMDoJMTAw CTEyMAkzMzAKVFBUOiBMZW4gIDEyOCwgYWxpZ25tZW50ICAwLzE2OgkxMDAJMTcwCTMzMApUUFQ6 IExlbiAgMTI4LCBhbGlnbm1lbnQgMTYvIDA6CTkwCTEyMAkzMzAKVFBUOiBMZW4gIDE5MiwgYWxp Z25tZW50ICA0LyAwOgkxNTAJMTgwCTQ1MApUUFQ6IExlbiAgMTkyLCBhbGlnbm1lbnQgIDAvIDQ6 CTE2MAkxOTAJNzgwClRQVDogTGVuICAxOTIsIGFsaWdubWVudCAgMC8gMDoJMTEwCTE0MAk3OTAK VFBUOiBMZW4gIDE5MiwgYWxpZ25tZW50ICAwLyA4OgkxMTAJMzAwCTQ1MApUUFQ6IExlbiAgMTky LCBhbGlnbm1lbnQgIDgvIDA6CTExMAkxNDAJNDUwClRQVDogTGVuICAxOTIsIGFsaWdubWVudCAg MC8xNjoJMTEwCTIyMAk0NTAKVFBUOiBMZW4gIDE5MiwgYWxpZ25tZW50IDE2LyAwOgkxMTAJMTQw CTQ1MApUUFQ6IExlbiAgMjU2LCBhbGlnbm1lbnQgIDQvIDA6CTE4MAkyMTAJNjEwClRQVDogTGVu ICAyNTYsIGFsaWdubWVudCAgMC8gNDoJMTkwCTIyMAkxMDUwClRQVDogTGVuICAyNTYsIGFsaWdu bWVudCAgMC8gMDoJMTMwCTE2MAkxODAKVFBUOiBMZW4gIDI1NiwgYWxpZ25tZW50ICAwLyA4Ogkx NDAJMzcwCTYxMApUUFQ6IExlbiAgMjU2LCBhbGlnbm1lbnQgIDgvIDA6CTEzMAkxNjAJNjEwClRQ VDogTGVuICAyNTYsIGFsaWdubWVudCAgMC8xNjoJMTQwCTI2MAk2MzAKVFBUOiBMZW4gIDI1Niwg YWxpZ25tZW50IDE2LyAwOgkxMzAJMTYwCTYzMAo= --e89a8ff247a5489fad04cca26752 Content-Type: text/plain; charset=US-ASCII; name=ivb-cpu-info Content-Disposition: attachment; filename=ivb-cpu-info Content-Transfer-Encoding: base64 X-Attachment-Id: file3 cHJvY2Vzc29yCTogMAp2ZW5kb3JfaWQJOiBHZW51aW5lSW50ZWwKY3B1IGZhbWlseQk6IDYKbW9k ZWwJCTogNTgKbW9kZWwgbmFtZQk6IEludGVsKFIpIENvcmUoVE0pIGk1LTM1NTAgQ1BVIEAgMy4z MEdIegpzdGVwcGluZwk6IDkKbWljcm9jb2RlCTogMHgxMgpjcHUgTUh6CQk6IDMyOTIuNTI1CmNh Y2hlIHNpemUJOiA2MTQ0IEtCCnBoeXNpY2FsIGlkCTogMApzaWJsaW5ncwk6IDQKY29yZSBpZAkJ OiAwCmNwdSBjb3Jlcwk6IDQKYXBpY2lkCQk6IDAKaW5pdGlhbCBhcGljaWQJOiAwCmZwdQkJOiB5 ZXMKZnB1X2V4Y2VwdGlvbgk6IHllcwpjcHVpZCBsZXZlbAk6IDEzCndwCQk6IHllcwpmbGFncwkJ OiBmcHUgdm1lIGRlIHBzZSB0c2MgbXNyIHBhZSBtY2UgY3g4IGFwaWMgc2VwIG10cnIgcGdlIG1j YSBjbW92IHBhdCBwc2UzNiBjbGZsdXNoIGR0cyBhY3BpIG1teCBmeHNyIHNzZSBzc2UyIHNzIGh0 IHRtIHBiZSBzeXNjYWxsIG54IHJkdHNjcCBsbSBjb25zdGFudF90c2MgYXJjaF9wZXJmbW9uIHBl YnMgYnRzIHJlcF9nb29kIG5vcGwgeHRvcG9sb2d5IG5vbnN0b3BfdHNjIGFwZXJmbXBlcmYgcG5p IHBjbG11bHFkcSBkdGVzNjQgbW9uaXRvciBkc19jcGwgdm14IHNteCBlc3QgdG0yIHNzc2UzIGN4 MTYgeHRwciBwZGNtIHBjaWQgc3NlNF8xIHNzZTRfMiB4MmFwaWMgcG9wY250IHRzY19kZWFkbGlu ZV90aW1lciBhZXMgeHNhdmUgYXZ4IGYxNmMgcmRyYW5kIGxhaGZfbG0gaWRhIGFyYXQgZXBiIHhz YXZlb3B0IHBsbiBwdHMgZHRoZXJtIHRwcl9zaGFkb3cgdm5taSBmbGV4cHJpb3JpdHkgZXB0IHZw aWQgZnNnc2Jhc2Ugc21lcCBlcm1zCmJvZ29taXBzCTogNjU4NS4wNQpjbGZsdXNoIHNpemUJOiA2 NApjYWNoZV9hbGlnbm1lbnQJOiA2NAphZGRyZXNzIHNpemVzCTogMzYgYml0cyBwaHlzaWNhbCwg NDggYml0cyB2aXJ0dWFsCnBvd2VyIG1hbmFnZW1lbnQ6Cgpwcm9jZXNzb3IJOiAxCnZlbmRvcl9p ZAk6IEdlbnVpbmVJbnRlbApjcHUgZmFtaWx5CTogNgptb2RlbAkJOiA1OAptb2RlbCBuYW1lCTog SW50ZWwoUikgQ29yZShUTSkgaTUtMzU1MCBDUFUgQCAzLjMwR0h6CnN0ZXBwaW5nCTogOQptaWNy b2NvZGUJOiAweDEyCmNwdSBNSHoJCTogMzI5Mi41MjUKY2FjaGUgc2l6ZQk6IDYxNDQgS0IKcGh5 c2ljYWwgaWQJOiAwCnNpYmxpbmdzCTogNApjb3JlIGlkCQk6IDEKY3B1IGNvcmVzCTogNAphcGlj aWQJCTogMgppbml0aWFsIGFwaWNpZAk6IDIKZnB1CQk6IHllcwpmcHVfZXhjZXB0aW9uCTogeWVz CmNwdWlkIGxldmVsCTogMTMKd3AJCTogeWVzCmZsYWdzCQk6IGZwdSB2bWUgZGUgcHNlIHRzYyBt c3IgcGFlIG1jZSBjeDggYXBpYyBzZXAgbXRyciBwZ2UgbWNhIGNtb3YgcGF0IHBzZTM2IGNsZmx1 c2ggZHRzIGFjcGkgbW14IGZ4c3Igc3NlIHNzZTIgc3MgaHQgdG0gcGJlIHN5c2NhbGwgbnggcmR0 c2NwIGxtIGNvbnN0YW50X3RzYyBhcmNoX3BlcmZtb24gcGVicyBidHMgcmVwX2dvb2Qgbm9wbCB4 dG9wb2xvZ3kgbm9uc3RvcF90c2MgYXBlcmZtcGVyZiBwbmkgcGNsbXVscWRxIGR0ZXM2NCBtb25p dG9yIGRzX2NwbCB2bXggc214IGVzdCB0bTIgc3NzZTMgY3gxNiB4dHByIHBkY20gcGNpZCBzc2U0 XzEgc3NlNF8yIHgyYXBpYyBwb3BjbnQgdHNjX2RlYWRsaW5lX3RpbWVyIGFlcyB4c2F2ZSBhdngg ZjE2YyByZHJhbmQgbGFoZl9sbSBpZGEgYXJhdCBlcGIgeHNhdmVvcHQgcGxuIHB0cyBkdGhlcm0g dHByX3NoYWRvdyB2bm1pIGZsZXhwcmlvcml0eSBlcHQgdnBpZCBmc2dzYmFzZSBzbWVwIGVybXMK Ym9nb21pcHMJOiA2NTg1LjA1CmNsZmx1c2ggc2l6ZQk6IDY0CmNhY2hlX2FsaWdubWVudAk6IDY0 CmFkZHJlc3Mgc2l6ZXMJOiAzNiBiaXRzIHBoeXNpY2FsLCA0OCBiaXRzIHZpcnR1YWwKcG93ZXIg bWFuYWdlbWVudDoKCnByb2Nlc3Nvcgk6IDIKdmVuZG9yX2lkCTogR2VudWluZUludGVsCmNwdSBm YW1pbHkJOiA2Cm1vZGVsCQk6IDU4Cm1vZGVsIG5hbWUJOiBJbnRlbChSKSBDb3JlKFRNKSBpNS0z NTUwIENQVSBAIDMuMzBHSHoKc3RlcHBpbmcJOiA5Cm1pY3JvY29kZQk6IDB4MTIKY3B1IE1IegkJ OiAzMjkyLjUyNQpjYWNoZSBzaXplCTogNjE0NCBLQgpwaHlzaWNhbCBpZAk6IDAKc2libGluZ3MJ OiA0CmNvcmUgaWQJCTogMgpjcHUgY29yZXMJOiA0CmFwaWNpZAkJOiA0CmluaXRpYWwgYXBpY2lk CTogNApmcHUJCTogeWVzCmZwdV9leGNlcHRpb24JOiB5ZXMKY3B1aWQgbGV2ZWwJOiAxMwp3cAkJ OiB5ZXMKZmxhZ3MJCTogZnB1IHZtZSBkZSBwc2UgdHNjIG1zciBwYWUgbWNlIGN4OCBhcGljIHNl cCBtdHJyIHBnZSBtY2EgY21vdiBwYXQgcHNlMzYgY2xmbHVzaCBkdHMgYWNwaSBtbXggZnhzciBz c2Ugc3NlMiBzcyBodCB0bSBwYmUgc3lzY2FsbCBueCByZHRzY3AgbG0gY29uc3RhbnRfdHNjIGFy Y2hfcGVyZm1vbiBwZWJzIGJ0cyByZXBfZ29vZCBub3BsIHh0b3BvbG9neSBub25zdG9wX3RzYyBh cGVyZm1wZXJmIHBuaSBwY2xtdWxxZHEgZHRlczY0IG1vbml0b3IgZHNfY3BsIHZteCBzbXggZXN0 IHRtMiBzc3NlMyBjeDE2IHh0cHIgcGRjbSBwY2lkIHNzZTRfMSBzc2U0XzIgeDJhcGljIHBvcGNu dCB0c2NfZGVhZGxpbmVfdGltZXIgYWVzIHhzYXZlIGF2eCBmMTZjIHJkcmFuZCBsYWhmX2xtIGlk YSBhcmF0IGVwYiB4c2F2ZW9wdCBwbG4gcHRzIGR0aGVybSB0cHJfc2hhZG93IHZubWkgZmxleHBy aW9yaXR5IGVwdCB2cGlkIGZzZ3NiYXNlIHNtZXAgZXJtcwpib2dvbWlwcwk6IDY1ODUuMDUKY2xm bHVzaCBzaXplCTogNjQKY2FjaGVfYWxpZ25tZW50CTogNjQKYWRkcmVzcyBzaXplcwk6IDM2IGJp dHMgcGh5c2ljYWwsIDQ4IGJpdHMgdmlydHVhbApwb3dlciBtYW5hZ2VtZW50OgoKcHJvY2Vzc29y CTogMwp2ZW5kb3JfaWQJOiBHZW51aW5lSW50ZWwKY3B1IGZhbWlseQk6IDYKbW9kZWwJCTogNTgK bW9kZWwgbmFtZQk6IEludGVsKFIpIENvcmUoVE0pIGk1LTM1NTAgQ1BVIEAgMy4zMEdIegpzdGVw cGluZwk6IDkKbWljcm9jb2RlCTogMHgxMgpjcHUgTUh6CQk6IDMyOTIuNTI1CmNhY2hlIHNpemUJ OiA2MTQ0IEtCCnBoeXNpY2FsIGlkCTogMApzaWJsaW5ncwk6IDQKY29yZSBpZAkJOiAzCmNwdSBj b3Jlcwk6IDQKYXBpY2lkCQk6IDYKaW5pdGlhbCBhcGljaWQJOiA2CmZwdQkJOiB5ZXMKZnB1X2V4 Y2VwdGlvbgk6IHllcwpjcHVpZCBsZXZlbAk6IDEzCndwCQk6IHllcwpmbGFncwkJOiBmcHUgdm1l IGRlIHBzZSB0c2MgbXNyIHBhZSBtY2UgY3g4IGFwaWMgc2VwIG10cnIgcGdlIG1jYSBjbW92IHBh dCBwc2UzNiBjbGZsdXNoIGR0cyBhY3BpIG1teCBmeHNyIHNzZSBzc2UyIHNzIGh0IHRtIHBiZSBz eXNjYWxsIG54IHJkdHNjcCBsbSBjb25zdGFudF90c2MgYXJjaF9wZXJmbW9uIHBlYnMgYnRzIHJl cF9nb29kIG5vcGwgeHRvcG9sb2d5IG5vbnN0b3BfdHNjIGFwZXJmbXBlcmYgcG5pIHBjbG11bHFk cSBkdGVzNjQgbW9uaXRvciBkc19jcGwgdm14IHNteCBlc3QgdG0yIHNzc2UzIGN4MTYgeHRwciBw ZGNtIHBjaWQgc3NlNF8xIHNzZTRfMiB4MmFwaWMgcG9wY250IHRzY19kZWFkbGluZV90aW1lciBh ZXMgeHNhdmUgYXZ4IGYxNmMgcmRyYW5kIGxhaGZfbG0gaWRhIGFyYXQgZXBiIHhzYXZlb3B0IHBs biBwdHMgZHRoZXJtIHRwcl9zaGFkb3cgdm5taSBmbGV4cHJpb3JpdHkgZXB0IHZwaWQgZnNnc2Jh c2Ugc21lcCBlcm1zCmJvZ29taXBzCTogNjU4NS4wNQpjbGZsdXNoIHNpemUJOiA2NApjYWNoZV9h bGlnbm1lbnQJOiA2NAphZGRyZXNzIHNpemVzCTogMzYgYml0cyBwaHlzaWNhbCwgNDggYml0cyB2 aXJ0dWFsCnBvd2VyIG1hbmFnZW1lbnQ6Cgo= --e89a8ff247a5489fad04cca26752 Content-Type: text/plain; charset=US-ASCII; name=ivb-memcpy-result Content-Disposition: attachment; filename=ivb-memcpy-result Content-Transfer-Encoding: base64 X-Attachment-Id: file4 ICAgICAgICAgICAgICAgICAgICAgICAJbWVtY3B5X25ldwltZW1jcHlfYwltZW1jcHlfY19lClRQ VDogTGVuICAgIDAsIGFsaWdubWVudCAgMC8gMDoJMjQJOTIJNzYKVFBUOiBMZW4gICAgNCwgYWxp Z25tZW50ICAwLyAwOgkyNAk3Mgk0NApUUFQ6IExlbiAgICA4LCBhbGlnbm1lbnQgIDAvIDA6CTI0 CTkyCTQ0ClRQVDogTGVuICAgMTIsIGFsaWdubWVudCAgMC8gMDoJMjgJNzIJNDgKVFBUOiBMZW4g ICAxNiwgYWxpZ25tZW50ICAwLyAwOgkyOAk5Mgk0NApUUFQ6IExlbiAgIDIwLCBhbGlnbm1lbnQg IDAvIDA6CTI0CTcyCTQ4ClRQVDogTGVuICAgMjQsIGFsaWdubWVudCAgMC8gMDoJMjQJOTIJNDQK VFBUOiBMZW4gICAyOCwgYWxpZ25tZW50ICAwLyAwOgkyNAk3Mgk0OApUUFQ6IExlbiAgIDMyLCBh bGlnbm1lbnQgIDAvIDA6CTI4CTkyCTQ4ClRQVDogTGVuICAgMzYsIGFsaWdubWVudCAgMC8gMDoJ MjgJNzIJNDgKVFBUOiBMZW4gICA0MCwgYWxpZ25tZW50ICAwLyAwOgkyOAk5Mgk0NApUUFQ6IExl biAgIDQ0LCBhbGlnbm1lbnQgIDAvIDA6CTI0CTcyCTQ0ClRQVDogTGVuICAgNDgsIGFsaWdubWVu dCAgMC8gMDoJMjQJOTIJNDgKVFBUOiBMZW4gICA1MiwgYWxpZ25tZW50ICAwLyAwOgkyNAk3Mgk0 NApUUFQ6IExlbiAgIDU2LCBhbGlnbm1lbnQgIDAvIDA6CTI0CTkyCTQ0ClRQVDogTGVuICAgNjAs IGFsaWdubWVudCAgMC8gMDoJMjQJNzIJNDgKVFBUOiBMZW4gICAgMCwgYWxpZ25tZW50ICA0LyAw OgkyNAk5Mgk3MgpUUFQ6IExlbiAgICAwLCBhbGlnbm1lbnQgIDAvIDQ6CTI0CTkyCTcyClRQVDog TGVuICAgIDAsIGFsaWdubWVudCAgMC8gMDoJMjgJOTIJNzIKVFBUOiBMZW4gICAgMCwgYWxpZ25t ZW50ICAwLyA4OgkyNAk5Mgk3NgpUUFQ6IExlbiAgICAwLCBhbGlnbm1lbnQgIDgvIDA6CTI0CTky CTcyClRQVDogTGVuICAgIDAsIGFsaWdubWVudCAgMC8xNjoJMjQJOTIJNzYKVFBUOiBMZW4gICAg MCwgYWxpZ25tZW50IDE2LyAwOgkyNAk5Mgk3NgpUUFQ6IExlbiAgIDY0LCBhbGlnbm1lbnQgIDQv IDA6CTMyCTkyCTQ0ClRQVDogTGVuICAgNjQsIGFsaWdubWVudCAgMC8gNDoJMjgJOTYJNDQKVFBU OiBMZW4gICA2NCwgYWxpZ25tZW50ICAwLyAwOgkyOAk5Mgk0OApUUFQ6IExlbiAgIDY0LCBhbGln bm1lbnQgIDAvIDg6CTI4CTk2CTQ0ClRQVDogTGVuICAgNjQsIGFsaWdubWVudCAgOC8gMDoJMjgJ OTIJNDgKVFBUOiBMZW4gICA2NCwgYWxpZ25tZW50ICAwLzE2OgkzMgk5Mgk0NApUUFQ6IExlbiAg IDY0LCBhbGlnbm1lbnQgMTYvIDA6CTI4CTkyCTQ0ClRQVDogTGVuICAxMjgsIGFsaWdubWVudCAg NC8gMDoJMzYJOTYJNjAKVFBUOiBMZW4gIDEyOCwgYWxpZ25tZW50ICAwLyA0OgkzNgkxMDgJNTYK VFBUOiBMZW4gIDEyOCwgYWxpZ25tZW50ICAwLyAwOgkzNgk5Ngk2MApUUFQ6IExlbiAgMTI4LCBh bGlnbm1lbnQgIDAvIDg6CTM2CTEwOAk1NgpUUFQ6IExlbiAgMTI4LCBhbGlnbm1lbnQgIDgvIDA6 CTM2CTk2CTU2ClRQVDogTGVuICAxMjgsIGFsaWdubWVudCAgMC8xNjoJMzYJMTA0CTU2ClRQVDog TGVuICAxMjgsIGFsaWdubWVudCAxNi8gMDoJMzYJOTYJNjAKVFBUOiBMZW4gIDE5MiwgYWxpZ25t ZW50ICA0LyAwOgk0MAkxMDgJNjAKVFBUOiBMZW4gIDE5MiwgYWxpZ25tZW50ICAwLyA0Ogk0MAkx MjAJNjAKVFBUOiBMZW4gIDE5MiwgYWxpZ25tZW50ICAwLyAwOgk0MAkxMDgJNjAKVFBUOiBMZW4g IDE5MiwgYWxpZ25tZW50ICAwLyA4Ogk0MAkxMTYJNjAKVFBUOiBMZW4gIDE5MiwgYWxpZ25tZW50 ICA4LyAwOgk0MAkxMDQJNjAKVFBUOiBMZW4gIDE5MiwgYWxpZ25tZW50ICAwLzE2Ogk0MAkxMTYJ NjAKVFBUOiBMZW4gIDE5MiwgYWxpZ25tZW50IDE2LyAwOgk0MAkxMDQJNjAKVFBUOiBMZW4gIDI1 NiwgYWxpZ25tZW50ICA0LyAwOgk1MgkxMTYJNjQKVFBUOiBMZW4gIDI1NiwgYWxpZ25tZW50ICAw LyA0Ogk1NgkxMzYJNTYKVFBUOiBMZW4gIDI1NiwgYWxpZ25tZW50ICAwLyAwOgk1MgkxMTIJNjgK VFBUOiBMZW4gIDI1NiwgYWxpZ25tZW50ICAwLyA4Ogk1NgkxMjgJNjQKVFBUOiBMZW4gIDI1Niwg YWxpZ25tZW50ICA4LyAwOgk1MgkxMTIJNjQKVFBUOiBMZW4gIDI1NiwgYWxpZ25tZW50ICAwLzE2 Ogk1MgkxMjgJNjQKVFBUOiBMZW4gIDI1NiwgYWxpZ25tZW50IDE2LyAwOgk1MgkxMTYJNjQK --e89a8ff247a5489fad04cca26752 Content-Type: text/x-csrc; charset=US-ASCII; name="memcpy-kernel.c" Content-Disposition: attachment; filename="memcpy-kernel.c" Content-Transfer-Encoding: base64 X-Attachment-Id: file5 I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKCnR5cGVkZWYgdW5zaWduZWQg bG9uZyBsb25nIGludCBocF90aW1pbmdfdDsKI2RlZmluZSAgTUFYU0FNUExFU1RQVCAgICAgICAg MTAwMAojZGVmaW5lICBNQVhDT1BZU0laRSAgICAgICAgICAoMTAyNCAqIDEwMjQgKiAxMDApCiNk ZWZpbmUgIE9SSUcgIDAKI2RlZmluZSAgTkVXICAgMQpzdGF0aWMgY2hhciogYnVmMSA9IE5VTEw7 CnN0YXRpYyBjaGFyKiBidWYyID0gTlVMTDsKc3RhdGljIGludCByZXBlYXRfb25lX3Rlc3QgPSAz MjsKCmhwX3RpbWluZ190IF9kbF9ocF90aW1pbmdfb3ZlcmhlYWQ7CiMgZGVmaW5lIEhQX1RJTUlO R19OT1coVmFyKSBcCiAgKHsgdW5zaWduZWQgbG9uZyBsb25nIF9oaSwgX2xvOyBcCiAgICAgYXNt IHZvbGF0aWxlICgicmR0c2MiIDogIj1hIiAoX2xvKSwgIj1kIiAoX2hpKSk7IFwKICAgICAoVmFy KSA9IF9oaSA8PCAzMiB8IF9sbzsgfSkKCiNkZWZpbmUgSFBfVElNSU5HX0RJRkYoRGlmZiwgU3Rh cnQsIEVuZCkJKERpZmYpID0gKChFbmQpIC0gKFN0YXJ0KSkKI2RlZmluZSBIUF9USU1JTkdfVE9U QUwodG90YWxfdGltZSwgc3RhcnQsIGVuZCkJXAogIGRvCQkJCQkJCQkJXAogICAgewkJCQkJCQkJ CVwKICAgICAgaHBfdGltaW5nX3QgdG1wdGltZTsJCQkJCQlcCiAgICAgIEhQX1RJTUlOR19ESUZG ICh0bXB0aW1lLCBzdGFydCArIF9kbF9ocF90aW1pbmdfb3ZlcmhlYWQsIGVuZCk7CVwKCXRvdGFs X3RpbWUgKz0gdG1wdGltZTsJCQkJCQlcCiAgICB9CQkJCQkJCQkJXAogIHdoaWxlICgwKQoKI2Rl ZmluZSBIUF9USU1JTkdfQkVTVChiZXN0X3RpbWUsIHN0YXJ0LCBlbmQpCVwKICBkbwkJCQkJCQkJ CVwKICAgIHsJCQkJCQkJCQlcCiAgICAgIGhwX3RpbWluZ190IHRtcHRpbWU7CQkJCQkJXAogICAg ICBIUF9USU1JTkdfRElGRiAodG1wdGltZSwgc3RhcnQgKyBfZGxfaHBfdGltaW5nX292ZXJoZWFk LCBlbmQpOwlcCiAgICAgIGlmIChiZXN0X3RpbWUgPiB0bXB0aW1lKQkJCQkJCVwKCWJlc3RfdGlt ZSA9IHRtcHRpbWU7CQkJCQkJXAogICAgfQkJCQkJCQkJCVwKICB3aGlsZSAoMCkKCgp2b2lkIG1l bWNweV9uZXcoY2hhciAqZHN0LCBjaGFyICpzcmMsIGludCBsZW4pOwp2b2lkIG1lbWNweV9jKGNo YXIgKmRzdCwgY2hhciAqc3JjLCBpbnQgbGVuKTsKdm9pZCBtZW1jcHlfY19lKGNoYXIgKmRzdCwg Y2hhciAqc3JjLCBpbnQgbGVuKTsKdm9pZCAoKmRvX21lbWNweSkoY2hhciAqZHN0LCBjaGFyICpz cmMsIGludCBsZW4pOwoKc3RhdGljIHZvaWQKZG9fb25lX3Rlc3QgKCBjaGFyICpkc3QsIGNoYXIg KnNyYywKCSAgICAgc2l6ZV90IGxlbikKewogICAgICBocF90aW1pbmdfdCBzdGFydCBfX2F0dHJp YnV0ZSAoKHVudXNlZCkpOwogICAgICBocF90aW1pbmdfdCBzdG9wIF9fYXR0cmlidXRlICgodW51 c2VkKSk7CiAgICAgIGhwX3RpbWluZ190IGJlc3RfdGltZSA9IH4gKGhwX3RpbWluZ190KSAwOwog ICAgICBzaXplX3QgaSxqOwoKICAgICAgZm9yIChpID0gMDsgaSA8IHJlcGVhdF9vbmVfdGVzdDsg KytpKQoJewoJICBIUF9USU1JTkdfTk9XIChzdGFydCk7CgkgIGRvX21lbWNweSAoIGRzdCwgc3Jj LCBsZW4pOwoJICBIUF9USU1JTkdfTk9XIChzdG9wKTsKCSAgSFBfVElNSU5HX0JFU1QgKGJlc3Rf dGltZSwgc3RhcnQsIHN0b3ApOwoJfQoKICAgICAgcHJpbnRmICgiXHQlemQiLCAoc2l6ZV90KSBi ZXN0X3RpbWUpOwp9CgpzdGF0aWMgdm9pZApkb190ZXN0IChzaXplX3QgYWxpZ24xLCBzaXplX3Qg YWxpZ24yLCBzaXplX3QgbGVuKQp7CiAgc2l6ZV90IGksIGo7CiAgY2hhciAqczEsICpzMjsKCiAg czEgPSAoY2hhciAqKSAoYnVmMSArIGFsaWduMSk7CiAgczIgPSAoY2hhciAqKSAoYnVmMiArIGFs aWduMik7CgoKICAgcHJpbnRmICgiVFBUOiBMZW4gJTR6ZCwgYWxpZ25tZW50ICUyemQvJTJ6ZDoi LCBsZW4sIGFsaWduMSwgYWxpZ24yKTsKICAgZG9fbWVtY3B5ID0gbWVtY3B5X25ldzsKICAgZG9f b25lX3Rlc3QgKHMyLCBzMSwgbGVuKTsKICAgZG9fbWVtY3B5ID0gbWVtY3B5X2M7CiAgIGRvX29u ZV90ZXN0IChzMiwgczEsIGxlbik7CiAgIGRvX21lbWNweSA9IG1lbWNweV9jX2U7CiAgIGRvX29u ZV90ZXN0IChzMiwgczEsIGxlbik7CgogICAgcHV0Y2hhciAoJ1xuJyk7Cn0KCnN0YXRpYyB0ZXN0 X2luaXQodm9pZCkKewogIGludCBpOwogIGJ1ZjEgPSB2YWxsb2MoTUFYQ09QWVNJWkUpOwogIGJ1 ZjIgPSB2YWxsb2MoTUFYQ09QWVNJWkUpOwoKICBmb3IgKGkgPSAwOyBpIDwgTUFYQ09QWVNJWkUg OyBpID0gaSArIDY0KSB7CiAgICAgICAgYnVmMVtpXSA9IGJ1ZjJbaV0gPSBpICYgMHhmZjsKICB9 Cgp9Cgp2b2lkIG1lbXNldF9jKGNoYXIgKmRzdCwgY2hhciAqc3JjLCBpbnQgbGVuKQp7CglfX2Fz bV9fKCJtb3YgJXJkeCwgJXJjeCIpOwoJX19hc21fXygic2hyICQzLCAlcmN4Iik7CglfX2FzbV9f KCJyZXAgc3Rvc3EiKTsKfQp2b2lkIG1lbXNldF8yKGNoYXIgKmRzdCwgY2hhciAqc3JjLCBpbnQg bGVuKQp7CglfX2FzbV9fKCJzdWIgICQxMjgsICVyZHgiKTsKCV9fYXNtX18oIjE6Iik7CglfX2Fz bV9fKCJzdWIgICQxMjgsICVyZHgiKTsKCV9fYXNtX18oIm1vdmRxYSAleG1tMCwgKCVyZGkpIik7 CglfX2FzbV9fKCJtb3ZkcWEgJXhtbTAsIDE2KCVyZGkpIik7CglfX2FzbV9fKCJtb3ZkcWEgJXht bTAsIDMyKCVyZGkpIik7CglfX2FzbV9fKCJtb3ZkcWEgJXhtbTAsIDQ4KCVyZGkpIik7CglfX2Fz bV9fKCJtb3ZkcWEgJXhtbTAsIDY0KCVyZGkpIik7CglfX2FzbV9fKCJtb3ZkcWEgJXhtbTAsIDgw KCVyZGkpIik7CglfX2FzbV9fKCJtb3ZkcWEgJXhtbTAsIDk2KCVyZGkpIik7CglfX2FzbV9fKCJt b3ZkcWEgJXhtbTAsIDExMiglcmRpKSIpOwoJX19hc21fXygiamFlIDFiIik7Cgp9Cgp2b2lkIG1l bWNweV9jKGNoYXIgKmRzdCwgY2hhciAqc3JjLCBpbnQgbGVuKQp7CgoJX19hc21fXygibW92ICVy ZGksICVyYXgiKTsKCglfX2FzbV9fKCJtb3ZsICVlZHgsICVlY3giKTsKCV9fYXNtX18oInNocmwg JDMsICVlY3giKTsKCV9fYXNtX18oImFuZGwgJDcsICVlZHgiKTsKCV9fYXNtX18oInJlcCBtb3Zz cSIpOwoJX19hc21fXygibW92bCAlZWR4LCAlZWN4Iik7CglfX2FzbV9fKCJyZXAgbW92c2IiKTsK CV9fYXNtX18oIjE6Iik7Cgp9CnZvaWQgbWVtY3B5X2NfZShjaGFyICpkc3QsIGNoYXIgKnNyYywg aW50IGxlbikKewoKCV9fYXNtX18oIm1vdnEgJXJkaSwgJXJheCIpOwoJX19hc21fXygibW92cSAl cmR4LCAlcmN4Iik7CglfX2FzbV9fKCJyZXAgbW92c2IiKTsKCn0Kdm9pZCBtZW1jcHlfbmV3KGNo YXIgKmRzdCwgY2hhciAqc3JjLCBpbnQgbGVuKQp7CglfX2FzbV9fKCJtb3ZxICVyZGksICVyYXgi KTsKCglfX2FzbV9fKCJjbXBxICQweDIwLCAlcmR4Iik7CglfX2FzbV9fKCJqYiAuTGhhbmRsZV90 YWlsIik7CgoJLyoKCSAqIFdlIGNoZWNrIHdoZXRoZXIgbWVtb3J5IGZhbHNlIGRlcGVuZGVuY2Ug Y291bGQgb2NjdXIsCgkgKiB0aGVuIGp1bXAgdG8gY29ycmVzcG9uZGluZyBjb3B5IG1vZGUuCgkg Ki8KCV9fYXNtX18oImNtcCAgJWRpbCwgJXNpbCIpOwoJX19hc21fXygiamwgLkxjb3B5X2JhY2t3 YXJkIik7CglfX2FzbV9fKCJzdWJxICQweDIwLCAlcmR4Iik7Cl9fYXNtX18oIi5MY29weV9mb3J3 YXJkX2xvb3A6Iik7CglfX2FzbV9fKCJzdWJxICQweDIwLAklcmR4Iik7CgoJLyoKCSAqIE1vdmUg aW4gYmxvY2tzIG9mIDR4OCBieXRlczoKCSAqLwoJX19hc21fXygibW92cSAwKjgoJXJzaSksCSVy OCIpOwoJX19hc21fXygibW92cSAxKjgoJXJzaSksCSVyOSIpOwoJX19hc21fXygibW92cSAyKjgo JXJzaSksCSVyMTAiKTsKCV9fYXNtX18oIm1vdnEgMyo4KCVyc2kpLAklcjExIik7CglfX2FzbV9f KCJsZWFxIDQqOCglcnNpKSwJJXJzaSIpOwoKCV9fYXNtX18oIm1vdnEgJXI4LAkwKjgoJXJkaSki KTsKCV9fYXNtX18oIm1vdnEgJXI5LAkxKjgoJXJkaSkiKTsKCV9fYXNtX18oIm1vdnEgJXIxMCwJ Mio4KCVyZGkpIik7CglfX2FzbV9fKCJtb3ZxICVyMTEsCTMqOCglcmRpKSIpOwoJX19hc21fXygi bGVhcSA0KjgoJXJkaSksCSVyZGkiKTsKCV9fYXNtX18oImphZSAgLkxjb3B5X2ZvcndhcmRfbG9v cCIpOwoJX19hc21fXygiYWRkbCAkMHgyMCwJJWVkeCIpOwoJX19hc21fXygiam1wICAuTGhhbmRs ZV90YWlsIik7CgpfX2FzbV9fKCIuTGNvcHlfYmFja3dhcmQ6Iik7CgkvKgoJICogQ2FsY3VsYXRl IGNvcHkgcG9zaXRpb24gdG8gdGFpbC4KCSAqLwoJX19hc21fXygiYWRkcSAlcmR4LAklcnNpIik7 CglfX2FzbV9fKCJhZGRxICVyZHgsCSVyZGkiKTsKCV9fYXNtX18oInN1YnEgJDB4MjAsCSVyZHgi KTsKCS8qCgkgKiBBdCBtb3N0IDMgQUxVIG9wZXJhdGlvbnMgaW4gb25lIGN5Y2xlLAoJICogc28g YXBwZW5kIE5PUFMgaW4gdGhlIHNhbWUgMTZieXRlcyB0cnVuay4KCSAqLwoJX19hc21fXygiLnAy YWxpZ24gNCIpOwpfX2FzbV9fKCIuTGNvcHlfYmFja3dhcmRfbG9vcDoiKTsKCV9fYXNtX18oInN1 YnEgJDB4MjAsCSVyZHgiKTsKCV9fYXNtX18oIm1vdnEgLTEqOCglcnNpKSwJJXI4Iik7CglfX2Fz bV9fKCJtb3ZxIC0yKjgoJXJzaSksCSVyOSIpOwoJX19hc21fXygibW92cSAtMyo4KCVyc2kpLAkl cjEwIik7CglfX2FzbV9fKCJtb3ZxIC00KjgoJXJzaSksCSVyMTEiKTsKCV9fYXNtX18oImxlYXEg LTQqOCglcnNpKSwJJXJzaSIpOwoJX19hc21fXygibW92cSAlcjgsCQktMSo4KCVyZGkpIik7Cglf X2FzbV9fKCJtb3ZxICVyOSwJCS0yKjgoJXJkaSkiKTsKCV9fYXNtX18oIm1vdnEgJXIxMCwJCS0z KjgoJXJkaSkiKTsKCV9fYXNtX18oIm1vdnEgJXIxMSwJCS00KjgoJXJkaSkiKTsKCV9fYXNtX18o ImxlYXEgLTQqOCglcmRpKSwJJXJkaSIpOwoJX19hc21fXygiamFlICAuTGNvcHlfYmFja3dhcmRf bG9vcCIpOwoKCS8qCgkgKiBDYWxjdWxhdGUgY29weSBwb3NpdGlvbiB0byBoZWFkLgoJICovCglf X2FzbV9fKCJhZGRsICQweDIwLAklZWR4Iik7CglfX2FzbV9fKCJzdWJxICVyZHgsCSVyc2kiKTsK CV9fYXNtX18oInN1YnEgJXJkeCwJJXJkaSIpOwpfX2FzbV9fKCIuTGhhbmRsZV90YWlsOiIpOwoJ X19hc21fXygiY21wbCAkMTYsCSVlZHgiKTsKCV9fYXNtX18oImpiICAgLkxsZXNzXzE2Ynl0ZXMi KTsKCgkvKgoJICogTW92ZSBkYXRhIGZyb20gMTYgYnl0ZXMgdG8gMzEgYnl0ZXMuCgkgKi8KCV9f YXNtX18oIm1vdnEgMCo4KCVyc2kpLCAlcjgiKTsKCV9fYXNtX18oIm1vdnEgMSo4KCVyc2kpLAkl cjkiKTsKCV9fYXNtX18oIm1vdnEgLTIqOCglcnNpLCAlcmR4KSwJJXIxMCIpOwoJX19hc21fXygi bW92cSAtMSo4KCVyc2ksICVyZHgpLAklcjExIik7CglfX2FzbV9fKCJtb3ZxICVyOCwJMCo4KCVy ZGkpIik7CglfX2FzbV9fKCJtb3ZxICVyOSwJMSo4KCVyZGkpIik7CglfX2FzbV9fKCJtb3ZxICVy MTAsCS0yKjgoJXJkaSwgJXJkeCkiKTsKCV9fYXNtX18oIm1vdnEgJXIxMSwJLTEqOCglcmRpLCAl cmR4KSIpOwoJX19hc21fXygiam1wIC5MZW5kIik7CglfX2FzbV9fKCIucDJhbGlnbiA0Iik7Cl9f YXNtX18oIi5MbGVzc18xNmJ5dGVzOiIpOwoJX19hc21fXygiY21wbCAkOCwJJWVkeCIpOwoJX19h c21fXygiamIgICAuTGxlc3NfOGJ5dGVzIik7CgkvKgoJICogTW92ZSBkYXRhIGZyb20gOCBieXRl cyB0byAxNSBieXRlcy4KCSAqLwoJX19hc21fXygibW92cSAwKjgoJXJzaSksCSVyOCIpOwoJX19h c21fXygibW92cSAtMSo4KCVyc2ksICVyZHgpLAklcjkiKTsKCV9fYXNtX18oIm1vdnEgJXI4LAkw KjgoJXJkaSkiKTsKCV9fYXNtX18oIm1vdnEgJXI5LAktMSo4KCVyZGksICVyZHgpIik7CglfX2Fz bV9fKCJqbXAgLkxlbmQiKTsKCV9fYXNtX18oIi5wMmFsaWduIDQiKTsKX19hc21fXygiLkxsZXNz XzhieXRlczoiKTsKCV9fYXNtX18oImNtcGwgJDQsCSVlZHgiKTsKCV9fYXNtX18oImpiICAgLkxs ZXNzXzNieXRlcyIpOwoKCS8qCgkgKiBNb3ZlIGRhdGEgZnJvbSA0IGJ5dGVzIHRvIDcgYnl0ZXMu CgkgKi8KCV9fYXNtX18oIm1vdmwgKCVyc2kpLCAlZWN4Iik7CglfX2FzbV9fKCJtb3ZsIC00KCVy c2ksICVyZHgpLCAlcjhkIik7CglfX2FzbV9fKCJtb3ZsICVlY3gsICglcmRpKSIpOwoJX19hc21f XygibW92bCAlcjhkLCAtNCglcmRpLCAlcmR4KSIpOwoJX19hc21fXygiam1wIC5MZW5kIik7Cglf X2FzbV9fKCIucDJhbGlnbiA0Iik7Cl9fYXNtX18oIi5MbGVzc18zYnl0ZXM6Iik7CglfX2FzbV9f KCJzdWJsICQxLCAlZWR4Iik7CglfX2FzbV9fKCJqYiAuTGVuZCIpOwoJLyoKCSAqIE1vdmUgZGF0 YSBmcm9tIDEgYnl0ZXMgdG8gMyBieXRlcy4KCSAqLwoJX19hc21fXygibW92emJsICglcnNpKSwg JWVjeCIpOwoJX19hc21fXygianogLkxzdG9yZV8xYnl0ZSIpOwoJX19hc21fXygibW92emJxIDEo JXJzaSksICVyOCIpOwoJX19hc21fXygibW92emJxICglcnNpLCAlcmR4KSwgJXI5Iik7CglfX2Fz bV9fKCJtb3ZiICVyOGIsIDEoJXJkaSkiKTsKCV9fYXNtX18oIm1vdmIgJXI5YiwgKCVyZGksICVy ZHgpIik7Cl9fYXNtX18oIi5Mc3RvcmVfMWJ5dGU6Iik7CglfX2FzbV9fKCJtb3ZiICVjbCwgKCVy ZGkpIik7CgoKX19hc21fXygiLkxlbmQ6Iik7Cn0KCgp2b2lkIG1haW4odm9pZCkKewogIGludCBp OwogIHRlc3RfaW5pdCgpOwogIHByaW50ZiAoIiUyM3MiLCAiIik7CiAgcHJpbnRmICgiXHQlc1x0 JXNcdCVzXG4iLCAibWVtY3B5X25ldyIsICJtZW1jcHlfYyIsICJtZW1jcHlfY19lIik7CiAgICBm b3IoaSA9IDA7IGk8IDY0O2kgKz0gNCApIAoJZG9fdGVzdCgwLCAwLCBpKTsKICAgIGZvcihpID0g MDsgaTwgNTc2O2kgKz0gNjQgKSB7Cglkb190ZXN0KDQsIDAsIGkpOwoJZG9fdGVzdCgwLCA0LCBp KTsKCWRvX3Rlc3QoMCwgMCwgaSk7Cglkb190ZXN0KDAsIDgsIGkpOwoJZG9fdGVzdCg4LCAwLCBp KTsKCWRvX3Rlc3QoMCwgOCoyLCBpKTsKCWRvX3Rlc3QoOCoyLDAsIGkpOwogICAgfQoJcmV0dXJu IDsKfQo= --e89a8ff247a5489fad04cca26752-- -- 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/