From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from newshow.teradyne.com (newshow.teradyne.com [198.51.251.9]) by ozlabs.org (Postfix) with ESMTP id ECC0AB7196 for ; Thu, 18 Nov 2010 09:13:28 +1100 (EST) Received: from sunfire.teradyne.com ([131.101.1.179]) by newshow.teradyne.com (8.11.7p1+Sun/8.10.2) with ESMTP id oAHM11821132 for ; Wed, 17 Nov 2010 17:01:01 -0500 (EST) Received: from jaypeakclust.ter.teradyne.com (jaypeakclust.ter.teradyne.com [131.101.182.11]) by sunfire.teradyne.com (8.13.1/8.13.1) with ESMTP id oAHM3DKF002373 for ; Wed, 17 Nov 2010 17:03:13 -0500 Subject: application needs fast access to physical memory To: linuxppc-dev@lists.ozlabs.org Message-ID: From: steven.lin@teradyne.com Date: Wed, 17 Nov 2010 16:03:03 -0600 MIME-Version: 1.0 Content-type: multipart/alternative; Boundary="0__=07BBFD4DDFEB5C2B8f9e8a93df938690918c07BBFD4DDFEB5C2B" Cc: Steven_Lin@notes.teradyne.com List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --0__=07BBFD4DDFEB5C2B8f9e8a93df938690918c07BBFD4DDFEB5C2B Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: quoted-printable My application needs a fast way to access a specific physical DDR memor= y region. The application runs on an MPC8548 PowerPC which has an MMU. I'= ve tried two approaches that are typical for Linux, mmap() and using a ker= nel module that implements read()/write() into this region and I'm finding = that performance is very slow for both. It's a couple orders of magnitude sl= ower than, for example, copying a large buffer from one place in the application's virtual memory to another place in the application's virt= ual memory. Steve Lin= --0__=07BBFD4DDFEB5C2B8f9e8a93df938690918c07BBFD4DDFEB5C2B Content-type: text/html; charset=US-ASCII Content-Disposition: inline Content-transfer-encoding: quoted-printable

My application needs a fast wa= y to access a specific physical DDR memory region. The application runs= on an MPC8548 PowerPC which has an MMU. I've tried two approaches that= are typical for Linux, mmap() and using a kernel module that implement= s read()/write() into this region and I'm finding that performance is v= ery slow for both. It's a couple orders of magnitude slower than, for e= xample, copying a large buffer from one place in the application's virt= ual memory to another place in the application's virtual memory.=

Steve Lin= --0__=07BBFD4DDFEB5C2B8f9e8a93df938690918c07BBFD4DDFEB5C2B-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Subject: Re: application needs fast access to physical memory From: Michael Ellerman To: steven.lin@teradyne.com In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-RDW1osiPoH6TkmM8GwYX" Date: Thu, 18 Nov 2010 23:24:22 +1100 Message-ID: <1290083062.22575.9.camel@concordia> Mime-Version: 1.0 Cc: Steven_Lin@notes.teradyne.com, linuxppc-dev@lists.ozlabs.org Reply-To: michael@ellerman.id.au List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --=-RDW1osiPoH6TkmM8GwYX Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 2010-11-17 at 16:03 -0600, steven.lin@teradyne.com wrote: > My application needs a fast way to access a specific physical DDR > memory region. The application runs on an MPC8548 PowerPC which has an > MMU. I've tried two approaches that are typical for Linux, mmap() and > using a kernel module that implements read()/write() into this region > and I'm finding that performance is very slow for both. It's a couple > orders of magnitude slower than, for example, copying a large buffer > from one place in the application's virtual memory to another place in > the application's virtual memory. The mmap() version should basically run at "full speed", at least once you've faulted the address range in. This specific DDR region isn't specifically slow is it ? :) cheers --=-RDW1osiPoH6TkmM8GwYX Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEABECAAYFAkzlGvYACgkQdSjSd0sB4dJzkgCfZEiWFy/9AMpXECJTw9r/7JSR 3bAAoMecPYt9rv2p3zIVJY/S9/7jq6EZ =bcNT -----END PGP SIGNATURE----- --=-RDW1osiPoH6TkmM8GwYX-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0.aculab.com (mx0.aculab.com [213.249.233.131]) by ozlabs.org (Postfix) with SMTP id 03362B7199 for ; Thu, 18 Nov 2010 23:53:40 +1100 (EST) Received: from mx0.aculab.com ([127.0.0.1]) by localhost (mx0.aculab.com [127.0.0.1]) (amavisd-new, port 10024) with SMTP id 03166-08 for ; Thu, 18 Nov 2010 12:53:29 +0000 (GMT) MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Subject: RE: application needs fast access to physical memory Date: Thu, 18 Nov 2010 12:52:33 -0000 Message-ID: In-Reply-To: <1290083062.22575.9.camel@concordia> From: "David Laight" Cc: List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , =20 > On Wed, 2010-11-17 at 16:03 -0600, steven.lin@teradyne.com wrote: > > My application needs a fast way to access a specific physical DDR > > memory region. The application runs on an MPC8548 PowerPC which has an > > MMU. I've tried two approaches that are typical for Linux, mmap() and > > using a kernel module that implements read()/write() into this region > > and I'm finding that performance is very slow for both. It's a couple > > orders of magnitude slower than, for example, copying a large buffer > > from one place in the application's virtual memory to another place in > > the application's virtual memory. >=20 > The mmap() version should basically run at "full speed", at least once > you've faulted the address range in. >=20 > This specific DDR region isn't specifically slow is it ? :) Or being mapped uncached ? David From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 18 Nov 2010 23:54:25 +1100 From: David Gibson To: Michael Ellerman Subject: Re: application needs fast access to physical memory Message-ID: <20101118125425.GE7256@yookeroo> References: <1290083062.22575.9.camel@concordia> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="7qSK/uQB79J36Y4o" In-Reply-To: <1290083062.22575.9.camel@concordia> Cc: Steven_Lin@notes.teradyne.com, steven.lin@teradyne.com, linuxppc-dev@lists.ozlabs.org List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --7qSK/uQB79J36Y4o Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Nov 18, 2010 at 11:24:22PM +1100, Michael Ellerman wrote: > On Wed, 2010-11-17 at 16:03 -0600, steven.lin@teradyne.com wrote: > > My application needs a fast way to access a specific physical DDR > > memory region. The application runs on an MPC8548 PowerPC which has an > > MMU. I've tried two approaches that are typical for Linux, mmap() and > > using a kernel module that implements read()/write() into this region > > and I'm finding that performance is very slow for both. It's a couple > > orders of magnitude slower than, for example, copying a large buffer > > from one place in the application's virtual memory to another place in > > the application's virtual memory. >=20 > The mmap() version should basically run at "full speed", at least once > you've faulted the address range in. >=20 > This specific DDR region isn't specifically slow is it ? :) The other theory that springs to mind is whatever method you're using to access the region enabling cacheing? --=20 David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson --7qSK/uQB79J36Y4o Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEARECAAYFAkzlIgEACgkQaILKxv3ab8YFzgCZAVb16o9SJ9qHJFENd16FiRTU Ct0An2GHVSgKYLsXFOkDqFUa+/rDiO+o =Ao/d -----END PGP SIGNATURE----- --7qSK/uQB79J36Y4o-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from newshow.teradyne.com (newshow.teradyne.com [198.51.251.9]) by ozlabs.org (Postfix) with ESMTP id CBF3DB719D for ; Fri, 19 Nov 2010 03:55:34 +1100 (EST) In-Reply-To: <20101118125425.GE7256@yookeroo> Subject: Re: application needs fast access to physical memory To: David Gibson , Michael Ellerman Message-ID: From: steven.lin@teradyne.com Date: Thu, 18 Nov 2010 10:55:21 -0600 MIME-Version: 1.0 Content-type: multipart/related; Boundary="0__=07BBFD4CDFC430D78f9e8a93df938690918c07BBFD4CDFC430D7" Cc: linuxppc-dev@lists.ozlabs.org List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --0__=07BBFD4CDFC430D78f9e8a93df938690918c07BBFD4CDFC430D7 Content-type: multipart/alternative; Boundary="1__=07BBFD4CDFC430D78f9e8a93df938690918c07BBFD4CDFC430D7" --1__=07BBFD4CDFC430D78f9e8a93df938690918c07BBFD4CDFC430D7 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: base64 VGhhbmtzIGZvciB0aGUgcmVwbGllcy4NCg0KSW4gdGhlIExpbnV4IERldmljZSBEcml2ZXJzIGJv b2sgcmVnYXJkaW5nIG1tYXAoKSwgaXQgc3RhdGVzOg0KDQogICBNYXBwaW5nIGEgZGV2aWNlIG1l YW5zIGFzc29jaWF0aW5nIGEgcmFuZ2Ugb2YgdXNlci1zcGFjZSBhZGRyZXNzZXMgdG8NCiAgIGRl dmljZSBtZW1vcnkuDQogICBXaGVuZXZlciB0aGUgcHJvZ3JhbSByZWFkcyBvciB3cml0ZXMgaW4g dGhlIGFzc2lnbmVkIGFkZHJlc3MgcmFuZ2UsIGl0DQogICBpcyBhY3R1YWxseQ0KICAgYWNjZXNz aW5nIHRoZSBkZXZpY2UuIEluIHRoZSBYIHNlcnZlciBleGFtcGxlLCB1c2luZyBtbWFwIGFsbG93 cyBxdWljaw0KICAgYW5kIGVhc3kNCiAgIGFjY2VzcyB0byB0aGUgdmlkZW8gY2FyZOKAmXMgbWVt b3J5LiBGb3IgYSBwZXJmb3JtYW5jZS1jcml0aWNhbA0KICAgYXBwbGljYXRpb24gbGlrZSB0aGlz LA0KICAgZGlyZWN0IGFjY2VzcyBtYWtlcyBhIGxhcmdlIGRpZmZlcmVuY2UuDQoNCkZvciB3aGF0 ZXZlciByZWFzb24sIG1tYXAoKSBpcyBkZWZpbml0ZWx5IG5vdCBxdWljayBhbmQgZG9lcyBub3Qg YXBwZWFyIHRvDQpiZSBhIGRpcmVjdCBhY2Nlc3MgdG8gZGV2aWNlIG1lbW9yeS4gQWZ0ZXIgdGhl IGFwcGxpY2F0aW9uIGNvbXBsZXRlcyBhDQpsYXJnZSB3cml0ZSBpbnRvIHBoeXNpY2FsIG1lbW9y eSAodmlhIHRoZSBwb2ludGVyIHJldHVybmVkIGZyb20gbW1hcCgpKSwNCnRoZSBhcHBsaWNhdGlv biBwZXJmb3JtcyBhbiBpb2N0bCgpIHRvIHF1ZXJ5IHdoZXRoZXIgdGhlIGRhdGEgYWN0dWFsbHkN CmFycml2ZWQgaW50byB0aGUgbWVtb3J5IHJlZ2lvbi4gSXQgc2VlbXMgdG8gdGFrZSBzb21lIHRp bWUgYmVmb3JlIHRoZQ0KYXNzb2NpYXRlZCBrZXJuZWwgbW9kdWxlIGFjdHVhbGx5ICJzZWVzIiB0 aGUgZGF0YSBpbiB0aGUgcGh5c2ljYWwgbWVtb3J5DQpyZWdpb24uDQoNClRoZXJlJ3MgYSBmZXcg dGhpbmdzIEkgc2hvdWxkIHNheSBhYm91dCB0aGlzIG1lbW9yeSByZWdpb24uIFRoZXJlJ3MgYSB0 b3RhbA0Kb2YgNTEyIE1CIG9mIHBoeXNpY2FsIG1lbW9yeS4gVS1Cb290IHBhc3NlcyAibWVtPTI1 Nk0iIGFzIGEga2VybmVsDQpwYXJhbWV0ZXIgdG8gdGVsbCBMaW51eCB0byBvbmx5IGRpcmVjdGx5 IG1hbmFnZSB0aGUgbG93ZXIgMjU2IE1CLiBUaGUNCnNwZWNpYWwgcmVnaW9uIG9mIHBoeXNpY2Fs IG1lbW9yeSB0aGF0IHRoZSBhcHBsaWNhdGlvbiBpcyB0cnlpbmcgdG8gYWNjZXNzDQppcyB0aGUg dXBwZXIgMjU2IE1CIG9mIG1lbW9yeSBub3QgZGlyZWN0bHkgbWFuYWdlZCBieSBMaW51eC4gVGhl IG1tYXAoKQ0KY2FsbCBmcm9tIHRoZSBhcHBsaWNhdGlvbiBpczoNCiAgICptZW1wdHIgPSAodm9p ZCAqKSBtbWFwKCBOVUxMLCBzaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVE LA0KICAgX2ZkVGVyQWxsb2MsIChvZmZfdCkgMHgxMDAwMDAwMCk7DQoNCk9uIHRoZSBrZXJuZWwg bW9kdWxlIHNpZGUsIHRoZSBmdW5jdGlvbiBoYW5kbGluZyB0aGUgbW1hcCgpIGZpbGUgb3BlcmF0 aW9uDQppczoNCiAgIHN0YXRpYyBpbnQgdGVyX2FsbG9jX21tYXAoIHN0cnVjdCBmaWxlICpwRmls ZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0DQogICAqdm1hICkNCiAgIHsNCiAgICAgICBpZiAocmVt YXBfcGZuX3JhbmdlKHZtYSwgdm1hLT52bV9zdGFydCwgdm1hLT52bV9wZ29mZiwgdm1hLT52bV9l bmQgLQ0KICAgdm1hLT52bV9zdGFydCwgdm1hLT52bV9wYWdlX3Byb3QpKQ0KICAgICAgICAgICBy ZXR1cm4gLUVBR0FJTjsNCg0KICAgICAgIHZtYS0+dm1fb3BzID0gJnRlcl9hbGxvY19yZW1hcF92 bV9vcHM7DQogICAgICAgdGVyX2FsbG9jX3ZtYV9vcGVuKHZtYSk7DQogICAgICAgcmV0dXJuIDA7 DQogICB9DQoNCi1TdGV2ZSBMaW4NCg0KDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg ICAgICAgRGF2aWQgR2lic29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICANCiAgICAgICAgICAgICA8ZGF2aWRAZ2lic29uLmRybyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgIHBiZWFyLmlkLmF1 PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG8gDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaWNoYWVsIEVsbGVybWFuICAgICAg ICAgICAgICAgICAgICANCiAgICAgICAgICAgICAxMS8xOC8yMDEwIDA2OjU0ICAgICAgICAgIDxt aWNoYWVsQGVsbGVybWFuLmlkLmF1PiAgICAgICAgICAgIA0KICAgICAgICAgICAgIEFNICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MgDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGV2ZW4ubGluQHRlcmFkeW5l LmNvbSwgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFN0ZXZlbl9MaW5Abm90ZXMudGVyYWR5bmUuY29tLCAgICAgIA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcgICAgICAg DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU3ViamVjdCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJlOiBhcHBsaWNhdGlvbiBuZWVkcyBmYXN0IGFjY2VzcyAgIA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG8gcGh5c2ljYWwgbWVtb3J5ICAgICAgICAgICAgICAg ICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgDQoNCg0KDQoNCk9uIFRodSwgTm92IDE4LCAyMDEwIGF0IDExOjI0OjIyUE0gKzEx MDAsIE1pY2hhZWwgRWxsZXJtYW4gd3JvdGU6DQo+IE9uIFdlZCwgMjAxMC0xMS0xNyBhdCAxNjow MyAtMDYwMCwgc3RldmVuLmxpbkB0ZXJhZHluZS5jb20gd3JvdGU6DQo+ID4gTXkgYXBwbGljYXRp b24gbmVlZHMgYSBmYXN0IHdheSB0byBhY2Nlc3MgYSBzcGVjaWZpYyBwaHlzaWNhbCBERFINCj4g PiBtZW1vcnkgcmVnaW9uLiBUaGUgYXBwbGljYXRpb24gcnVucyBvbiBhbiBNUEM4NTQ4IFBvd2Vy UEMgd2hpY2ggaGFzIGFuDQo+ID4gTU1VLiBJJ3ZlIHRyaWVkIHR3byBhcHByb2FjaGVzIHRoYXQg YXJlIHR5cGljYWwgZm9yIExpbnV4LCBtbWFwKCkgYW5kDQo+ID4gdXNpbmcgYSBrZXJuZWwgbW9k dWxlIHRoYXQgaW1wbGVtZW50cyByZWFkKCkvd3JpdGUoKSBpbnRvIHRoaXMgcmVnaW9uDQo+ID4g YW5kIEknbSBmaW5kaW5nIHRoYXQgcGVyZm9ybWFuY2UgaXMgdmVyeSBzbG93IGZvciBib3RoLiBJ dCdzIGEgY291cGxlDQo+ID4gb3JkZXJzIG9mIG1hZ25pdHVkZSBzbG93ZXIgdGhhbiwgZm9yIGV4 YW1wbGUsIGNvcHlpbmcgYSBsYXJnZSBidWZmZXINCj4gPiBmcm9tIG9uZSBwbGFjZSBpbiB0aGUg YXBwbGljYXRpb24ncyB2aXJ0dWFsIG1lbW9yeSB0byBhbm90aGVyIHBsYWNlIGluDQo+ID4gdGhl IGFwcGxpY2F0aW9uJ3MgdmlydHVhbCBtZW1vcnkuDQo+DQo+IFRoZSBtbWFwKCkgdmVyc2lvbiBz aG91bGQgYmFzaWNhbGx5IHJ1biBhdCAiZnVsbCBzcGVlZCIsIGF0IGxlYXN0IG9uY2UNCj4geW91 J3ZlIGZhdWx0ZWQgdGhlIGFkZHJlc3MgcmFuZ2UgaW4uDQo+DQo+IFRoaXMgc3BlY2lmaWMgRERS IHJlZ2lvbiBpc24ndCBzcGVjaWZpY2FsbHkgc2xvdyBpcyBpdCA/IDopDQoNClRoZSBvdGhlciB0 aGVvcnkgdGhhdCBzcHJpbmdzIHRvIG1pbmQgaXMgd2hhdGV2ZXIgbWV0aG9kIHlvdSdyZSB1c2lu Zw0KdG8gYWNjZXNzIHRoZSByZWdpb24gZW5hYmxpbmcgY2FjaGVpbmc/DQoNCi0tDQpEYXZpZCBH aWJzb24JCSAJCSAJCSB8IEknbGwgaGF2ZSBteSBtdXNpYw0KYmFyb3F1ZSwgYW5kIG15IGNvZGUN CmRhdmlkIEFUIGdpYnNvbi5kcm9wYmVhci5pZC5hdQkJIHwgbWluaW1hbGlzdCwgdGhhbmsgeW91 LiAgTk9UDQpfdGhlXyBfb3RoZXJfDQoJCSAJCSAJCSAJCSB8IF93YXlfIF9hcm91bmRfIQ0KaHR0 cDovL3d3dy5vemxhYnMub3JnL35kZ2lic29uDQpbYXR0YWNobWVudCAic2lnbmF0dXJlLmFzYyIg ZGVsZXRlZCBieSBTdGV2ZW4gTGluL1VTVy9UZXJhZHluZV0= --1__=07BBFD4CDFC430D78f9e8a93df938690918c07BBFD4CDFC430D7 Content-type: text/html; charset=UTF-8 Content-Disposition: inline Content-transfer-encoding: base64 PGh0bWw+PGJvZHk+DQo8cD48Zm9udCBzaXplPSIyIj5UaGFua3MgZm9yIHRoZSByZXBsaWVzLjwv Zm9udD48YnI+DQo8YnI+DQo8Zm9udCBzaXplPSIyIj5JbiB0aGUgTGludXggRGV2aWNlIERyaXZl cnMgYm9vayByZWdhcmRpbmcgbW1hcCgpLCBpdCBzdGF0ZXM6PC9mb250Pjxicj4NCg0KPHVsPjxm b250IHNpemU9IjIiIGZhY2U9IkJpcmthIj5NYXBwaW5nIGEgZGV2aWNlIG1lYW5zIGFzc29jaWF0 aW5nIGEgcmFuZ2Ugb2YgdXNlci1zcGFjZSBhZGRyZXNzZXMgdG8gZGV2aWNlIG1lbW9yeS48L2Zv bnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQmlya2EiPldoZW5ldmVyIHRoZSBwcm9ncmFt IHJlYWRzIG9yIHdyaXRlcyBpbiB0aGUgYXNzaWduZWQgYWRkcmVzcyByYW5nZSwgaXQgaXMgYWN0 dWFsbHk8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQmlya2EiPmFjY2Vzc2luZyB0 aGUgZGV2aWNlLiBJbiB0aGUgWCBzZXJ2ZXIgZXhhbXBsZSwgdXNpbmcgPC9mb250PjxpPjxmb250 IHNpemU9IjIiIGZhY2U9IkJpcmthLUl0YWxpYyI+bW1hcCA8L2ZvbnQ+PC9pPjxmb250IHNpemU9 IjIiIGZhY2U9IkJpcmthIj5hbGxvd3MgcXVpY2sgYW5kIGVhc3k8L2ZvbnQ+PGJyPg0KPGZvbnQg c2l6ZT0iMiIgZmFjZT0iQmlya2EiPmFjY2VzcyB0byB0aGUgdmlkZW8gY2FyZOKAmXMgbWVtb3J5 LiBGb3IgYSBwZXJmb3JtYW5jZS1jcml0aWNhbCBhcHBsaWNhdGlvbiBsaWtlIHRoaXMsPC9mb250 Pjxicj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkJpcmthIj5kaXJlY3QgYWNjZXNzIG1ha2VzIGEg bGFyZ2UgZGlmZmVyZW5jZS48L2ZvbnQ+PGJyPg0KPC91bD4NCjxmb250IHNpemU9IjIiPkZvciB3 aGF0ZXZlciByZWFzb24sIG1tYXAoKSBpcyBkZWZpbml0ZWx5IG5vdCBxdWljayBhbmQgZG9lcyBu b3QgYXBwZWFyIHRvIGJlIGEgZGlyZWN0IGFjY2VzcyB0byBkZXZpY2UgbWVtb3J5LiBBZnRlciB0 aGUgYXBwbGljYXRpb24gY29tcGxldGVzIGEgbGFyZ2Ugd3JpdGUgaW50byBwaHlzaWNhbCBtZW1v cnkgKHZpYSB0aGUgcG9pbnRlciByZXR1cm5lZCBmcm9tIG1tYXAoKSksIHRoZSBhcHBsaWNhdGlv biBwZXJmb3JtcyBhbiBpb2N0bCgpIHRvIHF1ZXJ5IHdoZXRoZXIgdGhlIGRhdGEgYWN0dWFsbHkg YXJyaXZlZCBpbnRvIHRoZSBtZW1vcnkgcmVnaW9uLiBJdCBzZWVtcyB0byB0YWtlIHNvbWUgdGlt ZSBiZWZvcmUgdGhlIGFzc29jaWF0ZWQga2VybmVsIG1vZHVsZSBhY3R1YWxseSAmcXVvdDtzZWVz JnF1b3Q7IHRoZSBkYXRhIGluIHRoZSBwaHlzaWNhbCBtZW1vcnkgcmVnaW9uLjwvZm9udD48YnI+ DQo8YnI+DQo8Zm9udCBzaXplPSIyIj5UaGVyZSdzIGEgZmV3IHRoaW5ncyBJIHNob3VsZCBzYXkg YWJvdXQgdGhpcyBtZW1vcnkgcmVnaW9uLiBUaGVyZSdzIGEgdG90YWwgb2YgNTEyIE1CIG9mIHBo eXNpY2FsIG1lbW9yeS4gVS1Cb290IHBhc3NlcyAmcXVvdDttZW09MjU2TSZxdW90OyBhcyBhIGtl cm5lbCBwYXJhbWV0ZXIgdG8gdGVsbCBMaW51eCB0byBvbmx5IGRpcmVjdGx5IG1hbmFnZSB0aGUg bG93ZXIgMjU2IE1CLiBUaGUgc3BlY2lhbCByZWdpb24gb2YgcGh5c2ljYWwgbWVtb3J5IHRoYXQg dGhlIGFwcGxpY2F0aW9uIGlzIHRyeWluZyB0byBhY2Nlc3MgaXMgdGhlIHVwcGVyIDI1NiBNQiBv ZiBtZW1vcnkgbm90IGRpcmVjdGx5IG1hbmFnZWQgYnkgTGludXguIFRoZSBtbWFwKCkgY2FsbCBm cm9tIHRoZSBhcHBsaWNhdGlvbiBpczo8L2ZvbnQ+DQo8dWw+PGZvbnQgc2l6ZT0iMiIgZmFjZT0i Q291cmllciBOZXciPiptZW1wdHIgPSAodm9pZCAqKSBtbWFwKCBOVUxMLCBzaXplLCBQUk9UX1JF QUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBfZmRUZXJBbGxvYywgKG9mZl90KSAweDEwMDAw MDAwKTs8L2ZvbnQ+PC91bD4NCjxicj4NCjxmb250IHNpemU9IjIiPk9uIHRoZSBrZXJuZWwgbW9k dWxlIHNpZGUsIHRoZSBmdW5jdGlvbiBoYW5kbGluZyB0aGUgbW1hcCgpIGZpbGUgb3BlcmF0aW9u IGlzOjwvZm9udD4NCjx1bD48Zm9udCBzaXplPSIyIiBmYWNlPSJDb3VyaWVyIE5ldyI+c3RhdGlj IGludCB0ZXJfYWxsb2NfbW1hcCggc3RydWN0IGZpbGUgKnBGaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSApPC9mb250Pjxicj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNvdXJpZXIgTmV3 Ij57PC9mb250Pjxicj4NCjxmb250IHNpemU9IjIiIGZhY2U9IkNvdXJpZXIgTmV3Ij4gICAgaWYg KHJlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS0mZ3Q7dm1fc3RhcnQsIHZtYS0mZ3Q7dm1fcGdvZmYs IHZtYS0mZ3Q7dm1fZW5kIC0gdm1hLSZndDt2bV9zdGFydCwgdm1hLSZndDt2bV9wYWdlX3Byb3Qp KTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIyIiBmYWNlPSJDb3VyaWVyIE5ldyI+ICAgICAgICBy ZXR1cm4gLUVBR0FJTjs8L2ZvbnQ+PGJyPg0KPGJyPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ291 cmllciBOZXciPiAgICB2bWEtJmd0O3ZtX29wcyA9ICZhbXA7dGVyX2FsbG9jX3JlbWFwX3ZtX29w czs8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ291cmllciBOZXciPiAgICB0ZXJf YWxsb2Nfdm1hX29wZW4odm1hKTs8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ291 cmllciBOZXciPiAgICByZXR1cm4gMDs8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMiIgZmFjZT0i Q291cmllciBOZXciPn08L2ZvbnQ+PGJyPg0KPC91bD4NCjxmb250IHNpemU9IjIiPi1TdGV2ZSBM aW48L2ZvbnQ+PGJyPg0KPGJyPg0KPGJyPg0KPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNy Yz0iY2lkOjFfXz0wN0JCRkQ0Q0RGQzQzMEQ3OGY5ZThAbm90ZXMudGVyYWR5bmUuY29tIiBib3Jk ZXI9IjAiIGFsdD0iSW5hY3RpdmUgaGlkZSBkZXRhaWxzIGZvciBEYXZpZCBHaWJzb24gJmx0O2Rh dmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdSZndDsiPjxmb250IHNpemU9IjIiPkRhdmlkIEdpYnNv biAmbHQ7ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1Jmd0OzwvZm9udD48YnI+DQo8YnI+DQo8 YnI+DQoNCjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2Vs bHBhZGRpbmc9IjAiPg0KPHRyIHZhbGlnbj0idG9wIj48dGQgc3R5bGU9ImJhY2tncm91bmQtaW1h Z2U6dXJsKGNpZDoyX189MDdCQkZENENERkM0MzBENzhmOWU4QG5vdGVzLnRlcmFkeW5lLmNvbSk7 IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7ICIgd2lkdGg9IjQwJSI+DQo8dWw+DQo8dWw+ DQo8dWw+DQo8dWw+PGI+PGZvbnQgc2l6ZT0iMiI+RGF2aWQgR2lic29uICZsdDtkYXZpZEBnaWJz b24uZHJvcGJlYXIuaWQuYXUmZ3Q7PC9mb250PjwvYj48Zm9udCBzaXplPSIyIj4gPC9mb250Pg0K PHA+PGZvbnQgc2l6ZT0iMiI+MTEvMTgvMjAxMCAwNjo1NCBBTTwvZm9udD48L3VsPg0KPC91bD4N CjwvdWw+DQo8L3VsPg0KPC90ZD48dGQgd2lkdGg9IjYwJSI+DQo8dGFibGUgd2lkdGg9IjEwMCUi IGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCjx0ciB2YWxpZ249 InRvcCI+PHRkIHdpZHRoPSIxJSI+PGltZyB3aWR0aD0iNTgiIGhlaWdodD0iMSIgc3JjPSJjaWQ6 M19fPTA3QkJGRDRDREZDNDMwRDc4ZjllOEBub3Rlcy50ZXJhZHluZS5jb20iIGJvcmRlcj0iMCIg YWx0PSIiPjxicj4NCjxkaXYgYWxpZ249InJpZ2h0Ij48Zm9udCBzaXplPSIyIj5UbzwvZm9udD48 L2Rpdj48L3RkPjx0ZCB3aWR0aD0iMTAwJSI+PGltZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBzcmM9 ImNpZDozX189MDdCQkZENENERkM0MzBENzhmOWU4QG5vdGVzLnRlcmFkeW5lLmNvbSIgYm9yZGVy PSIwIiBhbHQ9IiI+PGJyPg0KPGZvbnQgc2l6ZT0iMiI+TWljaGFlbCBFbGxlcm1hbiAmbHQ7bWlj aGFlbEBlbGxlcm1hbi5pZC5hdSZndDs8L2ZvbnQ+PC90ZD48L3RyPg0KDQo8dHIgdmFsaWduPSJ0 b3AiPjx0ZCB3aWR0aD0iMSUiPjxpbWcgd2lkdGg9IjU4IiBoZWlnaHQ9IjEiIHNyYz0iY2lkOjNf Xz0wN0JCRkQ0Q0RGQzQzMEQ3OGY5ZThAbm90ZXMudGVyYWR5bmUuY29tIiBib3JkZXI9IjAiIGFs dD0iIj48YnI+DQo8ZGl2IGFsaWduPSJyaWdodCI+PGZvbnQgc2l6ZT0iMiI+Y2M8L2ZvbnQ+PC9k aXY+PC90ZD48dGQgd2lkdGg9IjEwMCUiPjxpbWcgd2lkdGg9IjEiIGhlaWdodD0iMSIgc3JjPSJj aWQ6M19fPTA3QkJGRDRDREZDNDMwRDc4ZjllOEBub3Rlcy50ZXJhZHluZS5jb20iIGJvcmRlcj0i MCIgYWx0PSIiPjxicj4NCjxmb250IHNpemU9IjIiPnN0ZXZlbi5saW5AdGVyYWR5bmUuY29tLCBT dGV2ZW5fTGluQG5vdGVzLnRlcmFkeW5lLmNvbSwgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5v cmc8L2ZvbnQ+PC90ZD48L3RyPg0KDQo8dHIgdmFsaWduPSJ0b3AiPjx0ZCB3aWR0aD0iMSUiPjxp bWcgd2lkdGg9IjU4IiBoZWlnaHQ9IjEiIHNyYz0iY2lkOjNfXz0wN0JCRkQ0Q0RGQzQzMEQ3OGY5 ZThAbm90ZXMudGVyYWR5bmUuY29tIiBib3JkZXI9IjAiIGFsdD0iIj48YnI+DQo8ZGl2IGFsaWdu PSJyaWdodCI+PGZvbnQgc2l6ZT0iMiI+U3ViamVjdDwvZm9udD48L2Rpdj48L3RkPjx0ZCB3aWR0 aD0iMTAwJSI+PGltZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBzcmM9ImNpZDozX189MDdCQkZENENE RkM0MzBENzhmOWU4QG5vdGVzLnRlcmFkeW5lLmNvbSIgYm9yZGVyPSIwIiBhbHQ9IiI+PGJyPg0K PGZvbnQgc2l6ZT0iMiI+UmU6IGFwcGxpY2F0aW9uIG5lZWRzIGZhc3QgYWNjZXNzIHRvIHBoeXNp Y2FsIG1lbW9yeTwvZm9udD48L3RkPjwvdHI+DQo8L3RhYmxlPg0KDQo8dGFibGUgYm9yZGVyPSIw IiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KPHRyIHZhbGlnbj0idG9wIj48dGQg d2lkdGg9IjU4Ij48aW1nIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHNyYz0iY2lkOjNfXz0wN0JCRkQ0 Q0RGQzQzMEQ3OGY5ZThAbm90ZXMudGVyYWR5bmUuY29tIiBib3JkZXI9IjAiIGFsdD0iIj48L3Rk Pjx0ZCB3aWR0aD0iMzM2Ij48aW1nIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHNyYz0iY2lkOjNfXz0w N0JCRkQ0Q0RGQzQzMEQ3OGY5ZThAbm90ZXMudGVyYWR5bmUuY29tIiBib3JkZXI9IjAiIGFsdD0i Ij48L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjxicj4NCjx0dD48 Zm9udCBzaXplPSIyIj5PbiBUaHUsIE5vdiAxOCwgMjAxMCBhdCAxMToyNDoyMlBNICsxMTAwLCBN aWNoYWVsIEVsbGVybWFuIHdyb3RlOjxicj4NCiZndDsgT24gV2VkLCAyMDEwLTExLTE3IGF0IDE2 OjAzIC0wNjAwLCBzdGV2ZW4ubGluQHRlcmFkeW5lLmNvbSB3cm90ZTo8YnI+DQomZ3Q7ICZndDsg TXkgYXBwbGljYXRpb24gbmVlZHMgYSBmYXN0IHdheSB0byBhY2Nlc3MgYSBzcGVjaWZpYyBwaHlz aWNhbCBERFI8YnI+DQomZ3Q7ICZndDsgbWVtb3J5IHJlZ2lvbi4gVGhlIGFwcGxpY2F0aW9uIHJ1 bnMgb24gYW4gTVBDODU0OCBQb3dlclBDIHdoaWNoIGhhcyBhbjxicj4NCiZndDsgJmd0OyBNTVUu IEkndmUgdHJpZWQgdHdvIGFwcHJvYWNoZXMgdGhhdCBhcmUgdHlwaWNhbCBmb3IgTGludXgsIG1t YXAoKSBhbmQ8YnI+DQomZ3Q7ICZndDsgdXNpbmcgYSBrZXJuZWwgbW9kdWxlIHRoYXQgaW1wbGVt ZW50cyByZWFkKCkvd3JpdGUoKSBpbnRvIHRoaXMgcmVnaW9uPGJyPg0KJmd0OyAmZ3Q7IGFuZCBJ J20gZmluZGluZyB0aGF0IHBlcmZvcm1hbmNlIGlzIHZlcnkgc2xvdyBmb3IgYm90aC4gSXQncyBh IGNvdXBsZTxicj4NCiZndDsgJmd0OyBvcmRlcnMgb2YgbWFnbml0dWRlIHNsb3dlciB0aGFuLCBm b3IgZXhhbXBsZSwgY29weWluZyBhIGxhcmdlIGJ1ZmZlcjxicj4NCiZndDsgJmd0OyBmcm9tIG9u ZSBwbGFjZSBpbiB0aGUgYXBwbGljYXRpb24ncyB2aXJ0dWFsIG1lbW9yeSB0byBhbm90aGVyIHBs YWNlIGluPGJyPg0KJmd0OyAmZ3Q7IHRoZSBhcHBsaWNhdGlvbidzIHZpcnR1YWwgbWVtb3J5Ljxi cj4NCiZndDsgPGJyPg0KJmd0OyBUaGUgbW1hcCgpIHZlcnNpb24gc2hvdWxkIGJhc2ljYWxseSBy dW4gYXQgJnF1b3Q7ZnVsbCBzcGVlZCZxdW90OywgYXQgbGVhc3Qgb25jZTxicj4NCiZndDsgeW91 J3ZlIGZhdWx0ZWQgdGhlIGFkZHJlc3MgcmFuZ2UgaW4uPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IFRo aXMgc3BlY2lmaWMgRERSIHJlZ2lvbiBpc24ndCBzcGVjaWZpY2FsbHkgc2xvdyBpcyBpdCA/IDop PGJyPg0KPGJyPg0KVGhlIG90aGVyIHRoZW9yeSB0aGF0IHNwcmluZ3MgdG8gbWluZCBpcyB3aGF0 ZXZlciBtZXRob2QgeW91J3JlIHVzaW5nPGJyPg0KdG8gYWNjZXNzIHRoZSByZWdpb24gZW5hYmxp bmcgY2FjaGVpbmc/PGJyPg0KPGJyPg0KLS0gPGJyPg0KRGF2aWQgR2lic29uCQkgCQkgCQkgfCBJ J2xsIGhhdmUgbXkgbXVzaWMgYmFyb3F1ZSwgYW5kIG15IGNvZGU8YnI+DQpkYXZpZCBBVCBnaWJz b24uZHJvcGJlYXIuaWQuYXUJCSB8IG1pbmltYWxpc3QsIHRoYW5rIHlvdS4gJm5ic3A7Tk9UIF90 aGVfIF9vdGhlcl88YnI+DQoJCSAJCSAJCSAJCSB8IF93YXlfIF9hcm91bmRfITxicj4NCjwvZm9u dD48L3R0Pjx0dD48Zm9udCBzaXplPSIyIj48YSBocmVmPSJodHRwOi8vd3d3Lm96bGFicy5vcmcv fmRnaWJzb24iPmh0dHA6Ly93d3cub3psYWJzLm9yZy9+ZGdpYnNvbjwvYT48L2ZvbnQ+PC90dD48 dHQ+PGZvbnQgc2l6ZT0iMiI+PGJyPg0KW2F0dGFjaG1lbnQgJnF1b3Q7c2lnbmF0dXJlLmFzYyZx dW90OyBkZWxldGVkIGJ5IFN0ZXZlbiBMaW4vVVNXL1RlcmFkeW5lXSA8L2ZvbnQ+PC90dD48YnI+ DQo8L2JvZHk+PC9odG1sPg== --1__=07BBFD4CDFC430D78f9e8a93df938690918c07BBFD4CDFC430D7-- --0__=07BBFD4CDFC430D78f9e8a93df938690918c07BBFD4CDFC430D7 Content-type: image/gif; name="graycol.gif" Content-Disposition: inline; filename="graycol.gif" Content-ID: <1__=07BBFD4CDFC430D78f9e8@notes.teradyne.com> Content-transfer-encoding: base64 R0lGODlhEAAQAKECAMzMzAAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIXlI+py+0PopwxUbpu ZRfKZ2zgSJbmSRYAIf4fT3B0aW1pemVkIGJ5IFVsZWFkIFNtYXJ0U2F2ZXIhAAA7 --0__=07BBFD4CDFC430D78f9e8a93df938690918c07BBFD4CDFC430D7 Content-type: image/gif; name="pic02872.gif" Content-Disposition: inline; filename="pic02872.gif" Content-ID: <2__=07BBFD4CDFC430D78f9e8@notes.teradyne.com> Content-transfer-encoding: base64 R0lGODlhWABDALP/AAAAAK04Qf79/o+Gm7WuwlNObwoJFCsoSMDAwGFsmIuezf///wAAAAAAAAAA AAAAACH5BAEAAAgALAAAAABYAEMAQAT/EMlJq704682770RiFMRinqggEUNSHIchG0BCfHhOjAuh EDeUqTASLCbBhQrhG7xis2j0lssNDopE4jfIJhDaggI8YB1sZeZgLVA9YVCpnGagVjV171aRVrYR RghXcAGFhoUETwYxcXNyADJ3GlcSKGAwLwllVC1vjIUHBWsFilKQdI8GA5IcpApeJQt8L09lmgkH LZikoU5wjqcyAMMFrJIDPAKvCFletKSev1HBw8KrxtjZ2tvc3d5VyKtCKW3jfz4uMKmq3xu4N0nK BVoJQmx2LGVOmrqNjjJf2hHAQo/eDwJGTKhQMcgQEEAnEjFS98+RnW3smGkZU6ncCWav/4wYOnAI TihRL/4FEwbp28BXMMcoscQCVxlepL4IGDSCyJyVQOu0o7CjmLN50OZlqWmyFy5/6yBBuji0AxFR M00oQAqNIstqI6qKHUsWRAEAvagsmfUEAImyxgbmUpJk3IklNUtJOUAVLoUr1+wqDGTE4zk+T6FG uQb3SizBCwatiiUgCBN8vrz+zFjVyQ8FWkOlg4NQiZMB5QS8QO3mpOaKnL0Z2EKvNMSILEThKhCg zMKPVxYJh23qm9KNW7pArPynMqZDiErsTMqI+LRi3QAgkFUbXpuFKhSYZALd0O5RKa2z9EYKBbpb qxIKsjUPRgD7I2XYV6wyrOw92ykExP8NW4URhknC5dKGE4v4NENQj2jXjmfNgOZDaXb5glRmXQ33 YEWQYNcZFnrYcIQLNzyTFDQNkXIff0ExVlY4srziQk43inZgL4rwxxINMvpFFAz1KOODHiu+4aEw NEjFl5B3JIKWKF3k6I9bfUGp5ZZcdunll5IA4cuHvQQJ5gcsoCWOOUwgltIwAKRxJgbIkJAQZEq0 2YliZnpZZ4BH3CnYOXldOUOfQoYDqF1LFHbXCrO8xmRsfoXDXJ6ChjCAH3QlhJcT6VWE6FCkfCco CgrMFsROrIEX3o2whVjWDjoJccN3LdggSGXLCdLEgHr1lyU3O3QxhgohNKXJCWv8JQr/PDdaqd6w 2rj1inLiGeiCJoDspAoQlYE6QWLSECehcWIYxIQES6zhbn1iImTHEQyqJ4eIxJJoUBc+3CbBuwZE V5cJPPkIjFDdeEabQbd6WgICTxiiz0f5dBKquXF6k4senwEhYGnKEFJeGrxUZy8dB8gmAXI/sPvH ESfCwVt5hTgYiqQqtdRNHQIU1PJ33ZqmzgE90OwLaoJcnMop1WiMmgkPHQRIrwgFuNV90A3doNKT mrKIN07AnGcI9BQjhCBN4RfA1qIZnMqorJCogKfGQnxSCDilTVIA0yl5ciTovgLuBDKFUDE9aQcw 9SA+rjSNf9/M1gxrj6VwDTS0IUSElMzBfsj0NFXR2kwsV1A5IF1grLgLL/r1R40BZEnuBWgmQEyb jqRwSAt6bqMCOFkvKFN2GPPkUzIm/SCF8z8pVzpbjVnMsy0vOr1hw3SaSRUhpY09v0z0J1FnwzPl fmh+xl4WtR0zGu24I4KbMQm3lnVu2oNWxI9W/lcyzA+mCKF4DBikxb/+UWtOGRiFP8qEwAayIgIA Ow== --0__=07BBFD4CDFC430D78f9e8a93df938690918c07BBFD4CDFC430D7 Content-type: image/gif; name="ecblank.gif" Content-Disposition: inline; filename="ecblank.gif" Content-ID: <3__=07BBFD4CDFC430D78f9e8@notes.teradyne.com> Content-transfer-encoding: base64 R0lGODlhEAABAIAAAAAAAP///yH5BAEAAAEALAAAAAAQAAEAAAIEjI8ZBQA7 --0__=07BBFD4CDFC430D78f9e8a93df938690918c07BBFD4CDFC430D7-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from VA3EHSOBE006.bigfish.com (va3ehsobe006.messaging.microsoft.com [216.32.180.16]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (Client CN "mail.global.frontbridge.com", Issuer "Cybertrust SureServer Standard Validation CA" (verified OK)) by ozlabs.org (Postfix) with ESMTPS id B7BE1B71D2 for ; Fri, 19 Nov 2010 06:36:02 +1100 (EST) Received: from mail141-va3 (localhost.localdomain [127.0.0.1]) by mail141-va3-R.bigfish.com (Postfix) with ESMTP id 7DB9ABB81C8 for ; Thu, 18 Nov 2010 19:35:56 +0000 (UTC) Received: from VA3EHSMHS036.bigfish.com (unknown [10.7.14.236]) by mail141-va3.bigfish.com (Postfix) with ESMTP id 3A82568004D for ; Thu, 18 Nov 2010 19:35:56 +0000 (UTC) Received: from az33smr01.freescale.net (az33smr01.freescale.net [10.64.34.199]) by az33egw02.freescale.net (8.14.3/8.14.3) with ESMTP id oAIJZpff016958 for ; Thu, 18 Nov 2010 12:35:51 -0700 (MST) Received: from az33exm25.fsl.freescale.net (az33exm25.am.freescale.net [10.64.32.16]) by az33smr01.freescale.net (8.13.1/8.13.0) with ESMTP id oAIJZobn006889 for ; Thu, 18 Nov 2010 13:35:50 -0600 (CST) Date: Thu, 18 Nov 2010 13:35:49 -0600 From: Scott Wood To: Subject: Re: application needs fast access to physical memory Message-ID: <20101118133549.1c6d2cc3@udp111988uds.am.freescale.net> In-Reply-To: References: <20101118125425.GE7256@yookeroo> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Cc: linuxppc-dev@lists.ozlabs.org, David Gibson List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On Thu, 18 Nov 2010 10:55:21 -0600 wrote: > Thanks for the replies. >=20 > In the Linux Device Drivers book regarding mmap(), it states: >=20 > Mapping a device means associating a range of user-space addresses to > device memory. > Whenever the program reads or writes in the assigned address range, it > is actually > accessing the device. In the X server example, using mmap allows quick > and easy > access to the video card=E2=80=99s memory. For a performance-critical > application like this, > direct access makes a large difference. >=20 > For whatever reason, mmap() is definitely not quick and does not appear to > be a direct access to device memory. After the application completes a > large write into physical memory (via the pointer returned from mmap()), > the application performs an ioctl() to query whether the data actually > arrived into the memory region. It seems to take some time before the > associated kernel module actually "sees" the data in the physical memory > region. >=20 > There's a few things I should say about this memory region. There's a tot= al > of 512 MB of physical memory. U-Boot passes "mem=3D256M" as a kernel > parameter to tell Linux to only directly manage the lower 256 MB. The > special region of physical memory that the application is trying to access > is the upper 256 MB of memory not directly managed by Linux. The mmap() > call from the application is: > *memptr =3D (void *) mmap( NULL, size, PROT_READ | PROT_WRITE, MAP_SHA= RED, > _fdTerAlloc, (off_t) 0x10000000); Try this patch: http://patchwork.ozlabs.org/patch/68246/ -Scott From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM1EHSOBE005.bigfish.com (am1ehsobe005.messaging.microsoft.com [213.199.154.208]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (Client CN "mail.global.frontbridge.com", Issuer "Cybertrust SureServer Standard Validation CA" (verified OK)) by ozlabs.org (Postfix) with ESMTPS id 865C6B71DA for ; Fri, 19 Nov 2010 08:04:11 +1100 (EST) Received: from mail72-am1 (localhost.localdomain [127.0.0.1]) by mail72-am1-R.bigfish.com (Postfix) with ESMTP id 88EFC190031B for ; Thu, 18 Nov 2010 20:48:55 +0000 (UTC) Received: from AM1EHSMHS001.bigfish.com (unknown [10.3.201.253]) by mail72-am1.bigfish.com (Postfix) with ESMTP id 46B78E7804C for ; Thu, 18 Nov 2010 20:48:55 +0000 (UTC) Received: from de01smr01.freescale.net (de01smr01.freescale.net [10.208.0.31]) by de01egw02.freescale.net (8.14.3/8.14.3) with ESMTP id oAIKmhE5013545 for ; Thu, 18 Nov 2010 13:48:43 -0700 (MST) Received: from az33exm25.fsl.freescale.net (az33exm25.am.freescale.net [10.64.32.16]) by de01smr01.freescale.net (8.13.1/8.13.0) with ESMTP id oAIL55MD017347 for ; Thu, 18 Nov 2010 15:05:05 -0600 (CST) Date: Thu, 18 Nov 2010 14:48:41 -0600 From: Scott Wood To: Subject: Re: application needs fast access to physical memory Message-ID: <20101118144841.0910d73a@udp111988uds.am.freescale.net> In-Reply-To: References: <20101118133549.1c6d2cc3@udp111988uds.am.freescale.net> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Cc: linuxppc-dev@lists.ozlabs.org, David Gibson List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On Thu, 18 Nov 2010 14:46:16 -0600 wrote: > Hello Scott, > > Do you know whether this patch is necessary if I were to use alloc_bootmem > () (to set aside a region of contiguous physical memory) instead of the > kernel parameter "mem=256"? It should not be needed in that case. -Scott From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from newshow.teradyne.com (newshow.teradyne.com [198.51.251.9]) by ozlabs.org (Postfix) with ESMTP id C58DFB71D6 for ; Fri, 19 Nov 2010 07:46:32 +1100 (EST) In-Reply-To: <20101118133549.1c6d2cc3@udp111988uds.am.freescale.net> Subject: Re: application needs fast access to physical memory To: Scott Wood Message-ID: From: steven.lin@teradyne.com Date: Thu, 18 Nov 2010 14:46:16 -0600 MIME-Version: 1.0 Content-type: multipart/related; Boundary="0__=07BBFD4CDFE29A1B8f9e8a93df938690918c07BBFD4CDFE29A1B" Cc: steven.lin@teradyne.com, linuxppc-dev@lists.ozlabs.org, David Gibson List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --0__=07BBFD4CDFE29A1B8f9e8a93df938690918c07BBFD4CDFE29A1B Content-type: multipart/alternative; Boundary="1__=07BBFD4CDFE29A1B8f9e8a93df938690918c07BBFD4CDFE29A1B" --1__=07BBFD4CDFE29A1B8f9e8a93df938690918c07BBFD4CDFE29A1B Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: base64 SGVsbG8gU2NvdHQsDQoNCkRvIHlvdSBrbm93IHdoZXRoZXIgdGhpcyBwYXRjaCBpcyBuZWNlc3Nh cnkgaWYgSSB3ZXJlIHRvIHVzZSBhbGxvY19ib290bWVtDQooKSAodG8gc2V0IGFzaWRlIGEgcmVn aW9uIG9mIGNvbnRpZ3VvdXMgcGh5c2ljYWwgbWVtb3J5KSBpbnN0ZWFkIG9mIHRoZQ0Ka2VybmVs IHBhcmFtZXRlciAibWVtPTI1NiI/DQoNCi1TdGV2ZSBMaW4NCg0KDQoNCg0KDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICANCiAgICAgICAgICAgICBTY290dCBXb29kICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgIDxzY290dHdvb2RAZnJl ZXNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg ICAgICAgYWxlLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUbyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdGV2 ZW4ubGluQHRlcmFkeW5lLmNvbT4gICAgICAgICAgIA0KICAgICAgICAgICAgIDExLzE4LzIwMTAg MDE6MzUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MgDQogICAg ICAgICAgICAgUE0gICAgICAgICAgICAgICAgICAgICAgICBEYXZpZCBHaWJzb24gICAgICAgICAg ICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk YXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+LCAgICAgIA0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTWljaGFlbCBFbGxlcm1hbiAgICAgICAgICAgICAgICAgICAgDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWljaGFlbEBlbGxlcm1hbi5p ZC5hdT4sICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZz4gICAgIA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YmplY3Qg DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZTogYXBwbGljYXRpb24g bmVlZHMgZmFzdCBhY2Nlc3MgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRvIHBoeXNpY2FsIG1lbW9yeSAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoNCg0KDQpP biBUaHUsIDE4IE5vdiAyMDEwIDEwOjU1OjIxIC0wNjAwDQo8c3RldmVuLmxpbkB0ZXJhZHluZS5j b20+IHdyb3RlOg0KDQo+IFRoYW5rcyBmb3IgdGhlIHJlcGxpZXMuDQo+DQo+IEluIHRoZSBMaW51 eCBEZXZpY2UgRHJpdmVycyBib29rIHJlZ2FyZGluZyBtbWFwKCksIGl0IHN0YXRlczoNCj4NCj4g ICAgTWFwcGluZyBhIGRldmljZSBtZWFucyBhc3NvY2lhdGluZyBhIHJhbmdlIG9mIHVzZXItc3Bh Y2UgYWRkcmVzc2VzIHRvDQo+ICAgIGRldmljZSBtZW1vcnkuDQo+ICAgIFdoZW5ldmVyIHRoZSBw cm9ncmFtIHJlYWRzIG9yIHdyaXRlcyBpbiB0aGUgYXNzaWduZWQgYWRkcmVzcyByYW5nZSwgaXQN Cj4gICAgaXMgYWN0dWFsbHkNCj4gICAgYWNjZXNzaW5nIHRoZSBkZXZpY2UuIEluIHRoZSBYIHNl cnZlciBleGFtcGxlLCB1c2luZyBtbWFwIGFsbG93cyBxdWljaw0KPiAgICBhbmQgZWFzeQ0KPiAg ICBhY2Nlc3MgdG8gdGhlIHZpZGVvIGNhcmTigJlzIG1lbW9yeS4gRm9yIGEgcGVyZm9ybWFuY2Ut Y3JpdGljYWwNCj4gICAgYXBwbGljYXRpb24gbGlrZSB0aGlzLA0KPiAgICBkaXJlY3QgYWNjZXNz IG1ha2VzIGEgbGFyZ2UgZGlmZmVyZW5jZS4NCj4NCj4gRm9yIHdoYXRldmVyIHJlYXNvbiwgbW1h cCgpIGlzIGRlZmluaXRlbHkgbm90IHF1aWNrIGFuZCBkb2VzIG5vdCBhcHBlYXINCnRvDQo+IGJl IGEgZGlyZWN0IGFjY2VzcyB0byBkZXZpY2UgbWVtb3J5LiBBZnRlciB0aGUgYXBwbGljYXRpb24g Y29tcGxldGVzIGENCj4gbGFyZ2Ugd3JpdGUgaW50byBwaHlzaWNhbCBtZW1vcnkgKHZpYSB0aGUg cG9pbnRlciByZXR1cm5lZCBmcm9tIG1tYXAoKSksDQo+IHRoZSBhcHBsaWNhdGlvbiBwZXJmb3Jt cyBhbiBpb2N0bCgpIHRvIHF1ZXJ5IHdoZXRoZXIgdGhlIGRhdGEgYWN0dWFsbHkNCj4gYXJyaXZl ZCBpbnRvIHRoZSBtZW1vcnkgcmVnaW9uLiBJdCBzZWVtcyB0byB0YWtlIHNvbWUgdGltZSBiZWZv cmUgdGhlDQo+IGFzc29jaWF0ZWQga2VybmVsIG1vZHVsZSBhY3R1YWxseSAic2VlcyIgdGhlIGRh dGEgaW4gdGhlIHBoeXNpY2FsIG1lbW9yeQ0KPiByZWdpb24uDQo+DQo+IFRoZXJlJ3MgYSBmZXcg dGhpbmdzIEkgc2hvdWxkIHNheSBhYm91dCB0aGlzIG1lbW9yeSByZWdpb24uIFRoZXJlJ3MgYQ0K dG90YWwNCj4gb2YgNTEyIE1CIG9mIHBoeXNpY2FsIG1lbW9yeS4gVS1Cb290IHBhc3NlcyAibWVt PTI1Nk0iIGFzIGEga2VybmVsDQo+IHBhcmFtZXRlciB0byB0ZWxsIExpbnV4IHRvIG9ubHkgZGly ZWN0bHkgbWFuYWdlIHRoZSBsb3dlciAyNTYgTUIuIFRoZQ0KPiBzcGVjaWFsIHJlZ2lvbiBvZiBw aHlzaWNhbCBtZW1vcnkgdGhhdCB0aGUgYXBwbGljYXRpb24gaXMgdHJ5aW5nIHRvDQphY2Nlc3MN Cj4gaXMgdGhlIHVwcGVyIDI1NiBNQiBvZiBtZW1vcnkgbm90IGRpcmVjdGx5IG1hbmFnZWQgYnkg TGludXguIFRoZSBtbWFwKCkNCj4gY2FsbCBmcm9tIHRoZSBhcHBsaWNhdGlvbiBpczoNCj4gICAg Km1lbXB0ciA9ICh2b2lkICopIG1tYXAoIE5VTEwsIHNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJ VEUsDQpNQVBfU0hBUkVELA0KPiAgICBfZmRUZXJBbGxvYywgKG9mZl90KSAweDEwMDAwMDAwKTsN Cg0KVHJ5IHRoaXMgcGF0Y2g6DQpodHRwOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvNjgy NDYvDQoNCi1TY290dA0KDQo= --1__=07BBFD4CDFE29A1B8f9e8a93df938690918c07BBFD4CDFE29A1B Content-type: text/html; charset=UTF-8 Content-Disposition: inline Content-transfer-encoding: base64 PGh0bWw+PGJvZHk+DQo8cD48Zm9udCBzaXplPSIyIj5IZWxsbyBTY290dCw8L2ZvbnQ+PGJyPg0K PGJyPg0KPGZvbnQgc2l6ZT0iMiI+RG8geW91IGtub3cgd2hldGhlciB0aGlzIHBhdGNoIGlzIG5l Y2Vzc2FyeSBpZiBJIHdlcmUgdG8gdXNlIGFsbG9jX2Jvb3RtZW0oKSAodG8gc2V0IGFzaWRlIGEg cmVnaW9uIG9mIGNvbnRpZ3VvdXMgcGh5c2ljYWwgbWVtb3J5KSBpbnN0ZWFkIG9mIHRoZSBrZXJu ZWwgcGFyYW1ldGVyICZxdW90O21lbT0yNTYmcXVvdDs/PC9mb250Pjxicj4NCjxicj4NCjxmb250 IHNpemU9IjIiPi1TdGV2ZSBMaW48YnI+DQo8L2ZvbnQ+PGJyPg0KPGJyPg0KPGJyPg0KPGltZyB3 aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iY2lkOjFfXz0wN0JCRkQ0Q0RGRTI5QTFCOGY5ZThA bm90ZXMudGVyYWR5bmUuY29tIiBib3JkZXI9IjAiIGFsdD0iSW5hY3RpdmUgaGlkZSBkZXRhaWxz IGZvciBTY290dCBXb29kICZsdDtzY290dHdvb2RAZnJlZXNjYWxlLmNvbSZndDsiPjxmb250IHNp emU9IjIiPlNjb3R0IFdvb2QgJmx0O3Njb3R0d29vZEBmcmVlc2NhbGUuY29tJmd0OzwvZm9udD48 YnI+DQo8YnI+DQo8YnI+DQoNCjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3Bh Y2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KPHRyIHZhbGlnbj0idG9wIj48dGQgc3R5bGU9ImJh Y2tncm91bmQtaW1hZ2U6dXJsKGNpZDoyX189MDdCQkZENENERkUyOUExQjhmOWU4QG5vdGVzLnRl cmFkeW5lLmNvbSk7IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7ICIgd2lkdGg9IjQwJSI+ DQo8dWw+DQo8dWw+DQo8dWw+DQo8dWw+PGI+PGZvbnQgc2l6ZT0iMiI+U2NvdHQgV29vZCAmbHQ7 c2NvdHR3b29kQGZyZWVzY2FsZS5jb20mZ3Q7PC9mb250PjwvYj48Zm9udCBzaXplPSIyIj4gPC9m b250Pg0KPHA+PGZvbnQgc2l6ZT0iMiI+MTEvMTgvMjAxMCAwMTozNSBQTTwvZm9udD48L3VsPg0K PC91bD4NCjwvdWw+DQo8L3VsPg0KPC90ZD48dGQgd2lkdGg9IjYwJSI+DQo8dGFibGUgd2lkdGg9 IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCjx0ciB2 YWxpZ249InRvcCI+PHRkIHdpZHRoPSIxJSI+PGltZyB3aWR0aD0iNTgiIGhlaWdodD0iMSIgc3Jj PSJjaWQ6M19fPTA3QkJGRDRDREZFMjlBMUI4ZjllOEBub3Rlcy50ZXJhZHluZS5jb20iIGJvcmRl cj0iMCIgYWx0PSIiPjxicj4NCjxkaXYgYWxpZ249InJpZ2h0Ij48Zm9udCBzaXplPSIyIj5Ubzwv Zm9udD48L2Rpdj48L3RkPjx0ZCB3aWR0aD0iMTAwJSI+PGltZyB3aWR0aD0iMSIgaGVpZ2h0PSIx IiBzcmM9ImNpZDozX189MDdCQkZENENERkUyOUExQjhmOWU4QG5vdGVzLnRlcmFkeW5lLmNvbSIg Ym9yZGVyPSIwIiBhbHQ9IiI+PGJyPg0KPGZvbnQgc2l6ZT0iMiI+Jmx0O3N0ZXZlbi5saW5AdGVy YWR5bmUuY29tJmd0OzwvZm9udD48L3RkPjwvdHI+DQoNCjx0ciB2YWxpZ249InRvcCI+PHRkIHdp ZHRoPSIxJSI+PGltZyB3aWR0aD0iNTgiIGhlaWdodD0iMSIgc3JjPSJjaWQ6M19fPTA3QkJGRDRD REZFMjlBMUI4ZjllOEBub3Rlcy50ZXJhZHluZS5jb20iIGJvcmRlcj0iMCIgYWx0PSIiPjxicj4N CjxkaXYgYWxpZ249InJpZ2h0Ij48Zm9udCBzaXplPSIyIj5jYzwvZm9udD48L2Rpdj48L3RkPjx0 ZCB3aWR0aD0iMTAwJSI+PGltZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBzcmM9ImNpZDozX189MDdC QkZENENERkUyOUExQjhmOWU4QG5vdGVzLnRlcmFkeW5lLmNvbSIgYm9yZGVyPSIwIiBhbHQ9IiI+ PGJyPg0KPGZvbnQgc2l6ZT0iMiI+RGF2aWQgR2lic29uICZsdDtkYXZpZEBnaWJzb24uZHJvcGJl YXIuaWQuYXUmZ3Q7LCBNaWNoYWVsIEVsbGVybWFuICZsdDttaWNoYWVsQGVsbGVybWFuLmlkLmF1 Jmd0OywgJmx0O2xpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnJmd0OzwvZm9udD48L3RkPjwv dHI+DQoNCjx0ciB2YWxpZ249InRvcCI+PHRkIHdpZHRoPSIxJSI+PGltZyB3aWR0aD0iNTgiIGhl aWdodD0iMSIgc3JjPSJjaWQ6M19fPTA3QkJGRDRDREZFMjlBMUI4ZjllOEBub3Rlcy50ZXJhZHlu ZS5jb20iIGJvcmRlcj0iMCIgYWx0PSIiPjxicj4NCjxkaXYgYWxpZ249InJpZ2h0Ij48Zm9udCBz aXplPSIyIj5TdWJqZWN0PC9mb250PjwvZGl2PjwvdGQ+PHRkIHdpZHRoPSIxMDAlIj48aW1nIHdp ZHRoPSIxIiBoZWlnaHQ9IjEiIHNyYz0iY2lkOjNfXz0wN0JCRkQ0Q0RGRTI5QTFCOGY5ZThAbm90 ZXMudGVyYWR5bmUuY29tIiBib3JkZXI9IjAiIGFsdD0iIj48YnI+DQo8Zm9udCBzaXplPSIyIj5S ZTogYXBwbGljYXRpb24gbmVlZHMgZmFzdCBhY2Nlc3MgdG8gcGh5c2ljYWwgbWVtb3J5PC9mb250 PjwvdGQ+PC90cj4NCjwvdGFibGU+DQoNCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIw IiBjZWxscGFkZGluZz0iMCI+DQo8dHIgdmFsaWduPSJ0b3AiPjx0ZCB3aWR0aD0iNTgiPjxpbWcg d2lkdGg9IjEiIGhlaWdodD0iMSIgc3JjPSJjaWQ6M19fPTA3QkJGRDRDREZFMjlBMUI4ZjllOEBu b3Rlcy50ZXJhZHluZS5jb20iIGJvcmRlcj0iMCIgYWx0PSIiPjwvdGQ+PHRkIHdpZHRoPSIzMzYi PjxpbWcgd2lkdGg9IjEiIGhlaWdodD0iMSIgc3JjPSJjaWQ6M19fPTA3QkJGRDRDREZFMjlBMUI4 ZjllOEBub3Rlcy50ZXJhZHluZS5jb20iIGJvcmRlcj0iMCIgYWx0PSIiPjwvdGQ+PC90cj4NCjwv dGFibGU+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPg0KPGJyPg0KPHR0Pjxmb250IHNpemU9IjIiPk9u IFRodSwgMTggTm92IDIwMTAgMTA6NTU6MjEgLTA2MDA8YnI+DQombHQ7c3RldmVuLmxpbkB0ZXJh ZHluZS5jb20mZ3Q7IHdyb3RlOjxicj4NCjxicj4NCiZndDsgVGhhbmtzIGZvciB0aGUgcmVwbGll cy48YnI+DQomZ3Q7IDxicj4NCiZndDsgSW4gdGhlIExpbnV4IERldmljZSBEcml2ZXJzIGJvb2sg cmVnYXJkaW5nIG1tYXAoKSwgaXQgc3RhdGVzOjxicj4NCiZndDsgPGJyPg0KJmd0OyAmbmJzcDsg Jm5ic3A7TWFwcGluZyBhIGRldmljZSBtZWFucyBhc3NvY2lhdGluZyBhIHJhbmdlIG9mIHVzZXIt c3BhY2UgYWRkcmVzc2VzIHRvPGJyPg0KJmd0OyAmbmJzcDsgJm5ic3A7ZGV2aWNlIG1lbW9yeS48 YnI+DQomZ3Q7ICZuYnNwOyAmbmJzcDtXaGVuZXZlciB0aGUgcHJvZ3JhbSByZWFkcyBvciB3cml0 ZXMgaW4gdGhlIGFzc2lnbmVkIGFkZHJlc3MgcmFuZ2UsIGl0PGJyPg0KJmd0OyAmbmJzcDsgJm5i c3A7aXMgYWN0dWFsbHk8YnI+DQomZ3Q7ICZuYnNwOyAmbmJzcDthY2Nlc3NpbmcgdGhlIGRldmlj ZS4gSW4gdGhlIFggc2VydmVyIGV4YW1wbGUsIHVzaW5nIG1tYXAgYWxsb3dzIHF1aWNrPGJyPg0K Jmd0OyAmbmJzcDsgJm5ic3A7YW5kIGVhc3k8YnI+DQomZ3Q7ICZuYnNwOyAmbmJzcDthY2Nlc3Mg dG8gdGhlIHZpZGVvIGNhcmTigJlzIG1lbW9yeS4gRm9yIGEgcGVyZm9ybWFuY2UtY3JpdGljYWw8 YnI+DQomZ3Q7ICZuYnNwOyAmbmJzcDthcHBsaWNhdGlvbiBsaWtlIHRoaXMsPGJyPg0KJmd0OyAm bmJzcDsgJm5ic3A7ZGlyZWN0IGFjY2VzcyBtYWtlcyBhIGxhcmdlIGRpZmZlcmVuY2UuPGJyPg0K Jmd0OyA8YnI+DQomZ3Q7IEZvciB3aGF0ZXZlciByZWFzb24sIG1tYXAoKSBpcyBkZWZpbml0ZWx5 IG5vdCBxdWljayBhbmQgZG9lcyBub3QgYXBwZWFyIHRvPGJyPg0KJmd0OyBiZSBhIGRpcmVjdCBh Y2Nlc3MgdG8gZGV2aWNlIG1lbW9yeS4gQWZ0ZXIgdGhlIGFwcGxpY2F0aW9uIGNvbXBsZXRlcyBh PGJyPg0KJmd0OyBsYXJnZSB3cml0ZSBpbnRvIHBoeXNpY2FsIG1lbW9yeSAodmlhIHRoZSBwb2lu dGVyIHJldHVybmVkIGZyb20gbW1hcCgpKSw8YnI+DQomZ3Q7IHRoZSBhcHBsaWNhdGlvbiBwZXJm b3JtcyBhbiBpb2N0bCgpIHRvIHF1ZXJ5IHdoZXRoZXIgdGhlIGRhdGEgYWN0dWFsbHk8YnI+DQom Z3Q7IGFycml2ZWQgaW50byB0aGUgbWVtb3J5IHJlZ2lvbi4gSXQgc2VlbXMgdG8gdGFrZSBzb21l IHRpbWUgYmVmb3JlIHRoZTxicj4NCiZndDsgYXNzb2NpYXRlZCBrZXJuZWwgbW9kdWxlIGFjdHVh bGx5ICZxdW90O3NlZXMmcXVvdDsgdGhlIGRhdGEgaW4gdGhlIHBoeXNpY2FsIG1lbW9yeTxicj4N CiZndDsgcmVnaW9uLjxicj4NCiZndDsgPGJyPg0KJmd0OyBUaGVyZSdzIGEgZmV3IHRoaW5ncyBJ IHNob3VsZCBzYXkgYWJvdXQgdGhpcyBtZW1vcnkgcmVnaW9uLiBUaGVyZSdzIGEgdG90YWw8YnI+ DQomZ3Q7IG9mIDUxMiBNQiBvZiBwaHlzaWNhbCBtZW1vcnkuIFUtQm9vdCBwYXNzZXMgJnF1b3Q7 bWVtPTI1Nk0mcXVvdDsgYXMgYSBrZXJuZWw8YnI+DQomZ3Q7IHBhcmFtZXRlciB0byB0ZWxsIExp bnV4IHRvIG9ubHkgZGlyZWN0bHkgbWFuYWdlIHRoZSBsb3dlciAyNTYgTUIuIFRoZTxicj4NCiZn dDsgc3BlY2lhbCByZWdpb24gb2YgcGh5c2ljYWwgbWVtb3J5IHRoYXQgdGhlIGFwcGxpY2F0aW9u IGlzIHRyeWluZyB0byBhY2Nlc3M8YnI+DQomZ3Q7IGlzIHRoZSB1cHBlciAyNTYgTUIgb2YgbWVt b3J5IG5vdCBkaXJlY3RseSBtYW5hZ2VkIGJ5IExpbnV4LiBUaGUgbW1hcCgpPGJyPg0KJmd0OyBj YWxsIGZyb20gdGhlIGFwcGxpY2F0aW9uIGlzOjxicj4NCiZndDsgJm5ic3A7ICZuYnNwOyptZW1w dHIgPSAodm9pZCAqKSBtbWFwKCBOVUxMLCBzaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBN QVBfU0hBUkVELDxicj4NCiZndDsgJm5ic3A7ICZuYnNwO19mZFRlckFsbG9jLCAob2ZmX3QpIDB4 MTAwMDAwMDApOzxicj4NCjxicj4NClRyeSB0aGlzIHBhdGNoOjxicj4NCjwvZm9udD48L3R0Pjx0 dD48Zm9udCBzaXplPSIyIj48YSBocmVmPSJodHRwOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0 Y2gvNjgyNDYvIj5odHRwOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvNjgyNDYvPC9hPjwv Zm9udD48L3R0Pjx0dD48Zm9udCBzaXplPSIyIj48YnI+DQo8YnI+DQotU2NvdHQ8YnI+DQo8YnI+ DQo8L2ZvbnQ+PC90dD48YnI+DQo8L2JvZHk+PC9odG1sPg== --1__=07BBFD4CDFE29A1B8f9e8a93df938690918c07BBFD4CDFE29A1B-- --0__=07BBFD4CDFE29A1B8f9e8a93df938690918c07BBFD4CDFE29A1B Content-type: image/gif; name="graycol.gif" Content-Disposition: inline; filename="graycol.gif" Content-ID: <1__=07BBFD4CDFE29A1B8f9e8@notes.teradyne.com> Content-transfer-encoding: base64 R0lGODlhEAAQAKECAMzMzAAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIXlI+py+0PopwxUbpu ZRfKZ2zgSJbmSRYAIf4fT3B0aW1pemVkIGJ5IFVsZWFkIFNtYXJ0U2F2ZXIhAAA7 --0__=07BBFD4CDFE29A1B8f9e8a93df938690918c07BBFD4CDFE29A1B Content-type: image/gif; name="pic02222.gif" Content-Disposition: inline; filename="pic02222.gif" Content-ID: <2__=07BBFD4CDFE29A1B8f9e8@notes.teradyne.com> Content-transfer-encoding: base64 R0lGODlhWABDALP/AAAAAK04Qf79/o+Gm7WuwlNObwoJFCsoSMDAwGFsmIuezf///wAAAAAAAAAA AAAAACH5BAEAAAgALAAAAABYAEMAQAT/EMlJq704682770RiFMRinqggEUNSHIchG0BCfHhOjAuh EDeUqTASLCbBhQrhG7xis2j0lssNDopE4jfIJhDaggI8YB1sZeZgLVA9YVCpnGagVjV171aRVrYR RghXcAGFhoUETwYxcXNyADJ3GlcSKGAwLwllVC1vjIUHBWsFilKQdI8GA5IcpApeJQt8L09lmgkH LZikoU5wjqcyAMMFrJIDPAKvCFletKSev1HBw8KrxtjZ2tvc3d5VyKtCKW3jfz4uMKmq3xu4N0nK BVoJQmx2LGVOmrqNjjJf2hHAQo/eDwJGTKhQMcgQEEAnEjFS98+RnW3smGkZU6ncCWav/4wYOnAI TihRL/4FEwbp28BXMMcoscQCVxlepL4IGDSCyJyVQOu0o7CjmLN50OZlqWmyFy5/6yBBuji0AxFR M00oQAqNIstqI6qKHUsWRAEAvagsmfUEAImyxgbmUpJk3IklNUtJOUAVLoUr1+wqDGTE4zk+T6FG uQb3SizBCwatiiUgCBN8vrz+zFjVyQ8FWkOlg4NQiZMB5QS8QO3mpOaKnL0Z2EKvNMSILEThKhCg zMKPVxYJh23qm9KNW7pArPynMqZDiErsTMqI+LRi3QAgkFUbXpuFKhSYZALd0O5RKa2z9EYKBbpb qxIKsjUPRgD7I2XYV6wyrOw92ykExP8NW4URhknC5dKGE4v4NENQj2jXjmfNgOZDaXb5glRmXQ33 YEWQYNcZFnrYcIQLNzyTFDQNkXIff0ExVlY4srziQk43inZgL4rwxxINMvpFFAz1KOODHiu+4aEw NEjFl5B3JIKWKF3k6I9bfUGp5ZZcdunll5IA4cuHvQQJ5gcsoCWOOUwgltIwAKRxJgbIkJAQZEq0 2YliZnpZZ4BH3CnYOXldOUOfQoYDqF1LFHbXCrO8xmRsfoXDXJ6ChjCAH3QlhJcT6VWE6FCkfCco CgrMFsROrIEX3o2whVjWDjoJccN3LdggSGXLCdLEgHr1lyU3O3QxhgohNKXJCWv8JQr/PDdaqd6w 2rj1inLiGeiCJoDspAoQlYE6QWLSECehcWIYxIQES6zhbn1iImTHEQyqJ4eIxJJoUBc+3CbBuwZE V5cJPPkIjFDdeEabQbd6WgICTxiiz0f5dBKquXF6k4senwEhYGnKEFJeGrxUZy8dB8gmAXI/sPvH ESfCwVt5hTgYiqQqtdRNHQIU1PJ33ZqmzgE90OwLaoJcnMop1WiMmgkPHQRIrwgFuNV90A3doNKT mrKIN07AnGcI9BQjhCBN4RfA1qIZnMqorJCogKfGQnxSCDilTVIA0yl5ciTovgLuBDKFUDE9aQcw 9SA+rjSNf9/M1gxrj6VwDTS0IUSElMzBfsj0NFXR2kwsV1A5IF1grLgLL/r1R40BZEnuBWgmQEyb jqRwSAt6bqMCOFkvKFN2GPPkUzIm/SCF8z8pVzpbjVnMsy0vOr1hw3SaSRUhpY09v0z0J1FnwzPl fmh+xl4WtR0zGu24I4KbMQm3lnVu2oNWxI9W/lcyzA+mCKF4DBikxb/+UWtOGRiFP8qEwAayIgIA Ow== --0__=07BBFD4CDFE29A1B8f9e8a93df938690918c07BBFD4CDFE29A1B Content-type: image/gif; name="ecblank.gif" Content-Disposition: inline; filename="ecblank.gif" Content-ID: <3__=07BBFD4CDFE29A1B8f9e8@notes.teradyne.com> Content-transfer-encoding: base64 R0lGODlhEAABAIAAAAAAAP///yH5BAEAAAEALAAAAAAQAAEAAAIEjI8ZBQA7 --0__=07BBFD4CDFE29A1B8f9e8a93df938690918c07BBFD4CDFE29A1B--