Date: Thu, 26 Aug 2010 13:34:45 +0800 From: "MAI JIN" <Jin.Mai@alcatel-sbell.com.cn> To: <freebsd-net@freebsd.org> Subject: RE: HELP. FreeBSD 8.1 polling issue Message-ID: <1DB91DF937A4544C81E636468B91C21C0728EA30@CNSHGSMBS03.ad4.ad.alcatel.com>
next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. ------_=_NextPart_001_01CB44E0.64B45226 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable Hi, I got a freeBSD 8.1 polling issue on my PC. It is a dual-core Intel Pentium x86 PC (2.8GHz each core). The Ethernet interface is Broadcom NetXtreme 57xx Gigabit Ethernet interface. I set the following options (enable polling and zero-buffer copy) and rebuilt the kernel: Code: # To make an SMP kernel, the next two lines are needed options SMP # Symmetric MultiProcessor Kernel device apic # I/O APIC options DEVICE_POLLING # Open Polling options HZ=3D1000 options ZERO_COPY_SOCKETS The following were appended to the /etc/sysctl.conf Code: kern.polling.enable=3D1 # increase BPF buffer to 10M net.bpf.bufsize=3D10485760 net.bpf.maxbufsize=3D10485760 kern.polling.idle_poll=3D1 kern.polling.burst_max=3D1000 After installed and rebooted the system, kern.polling.enable was not found in MIB so I had to ignore this error. Looks like kern.polling.enable is removed from FreeBSD v8.1? Everything looked good so build my application to received data from another HP server. I wrote the application using libpcap-1.1.1 with BFP zero-copy turned on (I found the #define HAVE_ZEROCOPY_BPF 1 in config.h). Attached please find the source code of my application. Before running the application, I set the following parameters: Code: ifconfig bge0 polling # This will turn on the polling of the Broadcom driver. Code: sysctl -w net.bpf.bufsize=3D10485760=20 sysctl -w net.bpf.maxbufsize=3D10485760 sysctl -w kern.polling.idle_poll=3D1 sysctl -w kern.polling.burst_max=3D1000 sysctl -w kern.polling.each_burst=3D128 sysctl -w net.inet.ip.intr_queue_maxlen=3D256 Then I ran the application to receive data from the HP server. I ran multiple iperf on the HP server to send around 133Mbits/s UDP load to the PC under test. The UDP payload size was 47 bytes. The entire IP packet size is 76 bytes. First of all, the receiving application worked well and received around 205K packets/second without packet losing (I checked the receiving status using pcap_stats). However, after 2 minutes, the application can not received data any more. The packets/second is 0. I ran the ping from the PC under test and found that the ping reporting timeout and destination unreachable (the ping from HP to the PC also failed). Looked like the link between the HP server and PC was broken so the application could receive data. No packet was dropped. Then I restart the bge0 interface using: ifconfig bge0 down && ifconfig bge0 up And then I re-ran the application and it continued receiving data. But after 1 or 2 minutes, the link broke again. I think it was my application that caused the bge0 interface down. I started the tcpdump and it worked well without breaking the link.=20 I tried to increase the kern.polling.each_burst from 128 to 500 but the application would cause the bge0 down within 1 minute. No packet was dropped before the link was down. I checked the CPU usage of the PC. The sys used is around 90% (might be caused by kern.polling.idle_poll=3D1), user land is 13%.=20 I don't understand why the application would break the bge0. I tried changing the parameters: options HZ=3D2000 sysctl -w net.bpf.bufsize=3D20485760=20 sysctl -w net.bpf.maxbufsize=3D20485760 sysctl -w kern.polling.idle_poll=3D1 sysctl -w kern.polling.burst_max=3D10000 sysctl -w kern.polling.each_burst=3D5000 The performance was better: I got 307K packet/second (the HP server sended around 250Mbits/s, my PC got 200Mbits/s). But after 2 minutes, the bge0 was down again.=20 Could anybody have a look at this issue? How can <<cap.cpp>> I optimize the performance of the polling? Thanks, Jin=20 =20 Best regards =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D Jin=20 Alcatel Shanghai Bell (Nanjing) Co. Ltd. Alcatel-Net: 2735-5011=20 Tel: (+86)-25-8473 1240-5011 Addr: 11F, Yangtse River Tech Park.=20 Building No.40 of Nanchang Road,=20 Gulou District, Nanjing, China Zip: 210037 jin.mai@Alcatel-sbell.com.cn ASB/MoAD/RDR/BSR APL =20 ------_=_NextPart_001_01CB44E0.64B45226 Content-Type: application/octet-stream; name="cap.cpp" Content-Transfer-Encoding: base64 Content-Description: cap.cpp Content-Disposition: attachment; filename="cap.cpp" I2luY2x1ZGUgPC9yb290L3BjYXAvaW5jbHVkZS9wY2FwLmg+DQogI2luY2x1ZGUgPHVuaXN0ZC5o Pg0KI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KI2luY2x1ZGUgPHNpZ25hbC5oPg0KI2luY2x1ZGUg PHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RkbGliLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5j bHVkZSA8bGltaXRzLmg+DQojaWZuZGVmIFdJTjMyDQojaW5jbHVkZSA8c3lzL3dhaXQuaD4NCiNp bmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4NCiNpbmNsdWRlIDxlcnJuby5oPg0KI2VuZGlmIC8qIFdJ TjMyICovDQovLyNpbmNsdWRlIDxuZXQvaWYuaD4NCiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+DQoj aW5jbHVkZSA8bmV0aW5ldC9pbi5oPg0KI2luY2x1ZGUgPGFycGEvaW5ldC5oPg0KI2luY2x1ZGUg PG5ldC9ldGhlcm5ldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4NCiNpbmNsdWRl IDxuZXRpbmV0L2lwLmg+DQojaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4NCg0KdHlwZWRlZiBpbnQg U1RBVFVTOw0KdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVjaGFyX3Q7DQoNCiNkZWZpbmUgQUxBUk1f U0xFRVAgICAgICAgICAgICAgNQ0KDQojZGVmaW5lIElQX1JFQ1ZfTUFYX1ZMQU4gICAgICAgIDQw OTYNCiNkZWZpbmUgSVBfUkVDVl9USU1FT1VUIDANCiNkZWZpbmUgSVBfUkVBU1NFTUJMRV9USU1F T1VUIDYwDQojZGVmaW5lIElQX1JFQ1ZfQlVGX1NJWkUgICAgNDA5Ng0KI2RlZmluZSBNQVhfRklM VEVSX1NJWkUgNTEyDQojZGVmaW5lIElQX1JFQ1ZfTUFYX1BBQ0tFVF9TSVpFICAgICAgICAgNjU1 MzYNCg0KI2RlZmluZSBFUlJPUiAtMQ0KI2RlZmluZSBPSyAwDQoNCg0KI2RlZmluZSBFUlJPUl9N QUpPUl9DTEFTUyBwcmludGYNCiNkZWZpbmUgVFJBQ0VfV0FSTklOR19DTEFTUyBwcmludGYNCg0K I2RlZmluZSBJUF9SRUNWX1RJTUVfVEhPVVNBTkQgICAxMDAwDQojZGVmaW5lIElQX1JFQ1ZfVElN RV9NSUxMSU9OICAgICgxMDAwMDAwKQ0KDQojaWZuZGVmIEVUSEVSVFlQRV9WTEFODQojZGVmaW5l IEVUSEVSVFlQRV9WTEFOICAgICAgICAgIDB4ODEwMCAgLyogSUVFRSA4MDIuMVEgVkxBTiB0YWdn aW5nICovDQojZW5kaWYNCg0KI2RlZmluZSBNQVhfQUFMMlBBVEhfTlVNICAgICAgNTEyDQojZGVm aW5lIEFBTDJQQVRIX1NUQVJUX1BPUlQgICA4MTkyDQoNCnBjYXBfdCAqbV9wZCA9IE5VTEw7DQpp bnQgbV9kYXRhbGluayA9IERMVF9FTjEwTUI7DQppbnQgbV9zbmFwbGVuID0gSVBfUkVDVl9CVUZf U0laRTsNCg0KdW5zaWduZWQgbG9uZyBtX3BrdENvdW50ID0gMDsNCnVuc2lnbmVkIGxvbmcgbV9w a3RMZW4gPSAwOw0KDQppbl9hZGRyX3QgbV9pcCA9IDA7DQoNCnZvaWQgbXlfc2lnYWxhcm0oaW50 IHNpZykgOw0KDQp0eXBlZGVmIHN0cnVjdCBwY2FwX3N0YXQgbXlzdGF0OyANCiANCm15c3RhdCBh Y3R1YWxTdGF0OyAvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIG15c3RhdCBvbiBzdGFjayAtIHlvdSBj YW4gYWxzbyBkbyBpdCBvbiB0aGUgaGVhcCBieSBtYWxsb2MtaW5nICovIA0KbXlzdGF0ICpteXN0 YXRwID0gJmFjdHVhbFN0YXQ7IC8qIHVzZSBhbGxvY2F0ZWQgbWVtb3J5ICovIA0KIA0KDQpTVEFU VVMgcHJvY2Vzc0lwUGFja2V0KGNvbnN0IHN0cnVjdCBwY2FwX3BrdGhkciAqaCwgc2l6ZV90IGxl biwgY29uc3QgdWNoYXJfdCAqcGt0KQ0Kew0KICAgIHN0YXRpYyB1Y2hhcl90IG5ld19wa3RbSVBf UkVDVl9NQVhfUEFDS0VUX1NJWkVdOw0KICAgIHVuc2lnbmVkIG5ld19sZW4gPSBzaXplb2YobmV3 X3BrdCk7DQogICAgaW50IGlzX2ZyYWdtZW50ID0gMDsNCiAgICBjb25zdCBzdHJ1Y3QgaXAgKmlw Ow0KICAgIHVuc2lnbmVkIHggPSAwOw0KICAgIHVuc2lnbmVkIHByb3RvID0gMDsNCiAgICBzdHJ1 Y3QgaW5fYWRkciBpcF9kc3Q7DQogICAgc3RydWN0IGluX2FkZHIgaXBfc3JjOw0KICAgIGNvbnN0 IHVjaGFyX3QgKm9yaWdfcGt0ID0gcGt0Ow0KICAgIHNpemVfdCBvcmlnX2xlbiA9IGxlbjsNCiAg ICB1bnNpZ25lZCBmcmFnX2hkcl9vZmZzZXQgPSAwOw0KDQogICAgaWYgKGxlbiA8IHNpemVvZihz dHJ1Y3QgaXApKQ0KICAgICAgICByZXR1cm4gRVJST1I7DQoNCiAgICBpcCA9IChjb25zdCBzdHJ1 Y3QgaXAgKikgcGt0Ow0KICAgIGlmIChpcC0+aXBfdiAhPSBJUFZFUlNJT04pDQogICAgICAgIHJl dHVybiBFUlJPUjsNCg0KICAgIHByb3RvID0gaXAtPmlwX3A7DQoNCiAgICBtZW1jcHkoJmlwX2Rz dCwgJmlwLT5pcF9kc3QsIHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpOw0KICAgIG1lbWNweSgmaXBf c3JjLCAmaXAtPmlwX3NyYywgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSk7DQogDQogICAgbV9wa3RD b3VudCsrOw0KICAgIG1fcGt0TGVuICs9IGxlbjsNCg0KICAgIHggPSBpcC0+aXBfaGwgPDwgMjsN CiAgICBpZiAobGVuIDw9IHgpDQogICAgICAgIHJldHVybiBFUlJPUjsNCg0KICAgIHBrdCArPSB4 Ow0KICAgIGxlbiAtPSB4Ow0KDQogICAgeCA9IG50b2hzKGlwLT5pcF9vZmYpOw0KICAgIGlzX2Zy YWdtZW50ID0gKHggJiBJUF9PRkZNQVNLKSAhPSAwIHx8ICh4ICYgSVBfTUYpICE9IDA7DQoNCiAg ICAgICAgaWYgKGlzX2ZyYWdtZW50KSANCiAgICAgICAgew0KICAgICAgICB9DQogICAgZWxzZQ0K ICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gT0s7DQogICAgfQ0KICAgIHJldHVybiBFUlJP UjsNCn0NCg0KDQpTVEFUVVMgY2xlYW51cCgpDQp7DQogICAgaWYgKG1fcGQpDQogICAgICAgICAg ICBwY2FwX2JyZWFrbG9vcChtX3BkKTsNCiAgICAgICAgLyoNCiAgICAgICAgICogV2UgZG9uJ3Qg aGF2ZSAicGNhcF9icmVha2xvb3AoKSI7IHRoaXMgaXNuJ3Qgc2FmZSwgYnV0DQogICAgICAgICAq IGl0J3MgdGhlIGJlc3Qgd2UgY2FuIGRvLiAgUHJpbnQgdGhlIHN1bW1hcnkgaWYgd2UncmUNCiAg ICAgICAgICogbm90IHJlYWRpbmcgZnJvbSBhIHNhdmVmaWxlIC0gaS5lLiwgaWYgd2UncmUgZG9p bmcgYQ0KICAgICAgICAgKiBsaXZlIGNhcHR1cmUgLSBhbmQgZXhpdC4NCiAgICAgICAgICovDQog ICAgICAgIHBjYXBfY2xvc2UobV9wZCk7DQogICAgcmV0dXJuIE9LOw0KfQ0KDQoNCg0KU1RBVFVT IHJlY2VpdmVEYXRhKGNvbnN0IHN0cnVjdCBwY2FwX3BrdGhkciAqaCwgY29uc3QgdWNoYXJfdCAq YnVmKQ0Kew0KICAgICAgICBzaXplX3QgbGVuID0gaC0+Y2FwbGVuOw0KICAgIHVuc2lnbmVkIGV0 eXBlPTAgLCB2bGFuOw0KICAgIGNvbnN0IHVjaGFyX3QgKnBrdCA9IGJ1ZjsNCg0KICAgIHN3aXRj aCAobV9kYXRhbGluaykNCiAgICB7DQogICAgICAgIGNhc2UgRExUX0VOMTBNQjoNCiAgICAgICAg ew0KICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBldGhlcl9oZWFkZXIgKmV0aGVyOw0KDQog ICAgICAgICAgICAgICAgaWYgKGxlbiA8IEVUSEVSX0hEUl9MRU4pDQogICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gRVJST1I7DQogICAgICAgICAgICAgICAgZXRoZXIgPSAoY29uc3Qgc3Ry dWN0IGV0aGVyX2hlYWRlciAqKSBwa3Q7DQogICAgICAgICAgICAgICAgZXR5cGUgPSBudG9ocyhl dGhlci0+ZXRoZXJfdHlwZSk7DQogICAgICAgICAgICAgICAgcGt0ICs9IEVUSEVSX0hEUl9MRU47 DQogICAgICAgICAgICAgICAgbGVuIC09IEVUSEVSX0hEUl9MRU47DQogICAgICAgICAgICAgICAg aWYgKGV0eXBlID09IEVUSEVSVFlQRV9WTEFOKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBp ZiAobGVuIDwgNCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9S Ow0KICAgICAgICAgICAgICAgICAgICAgICAgdmxhbiA9IG50b2hzKCooY29uc3QgdWludDE2X3Qg KikgcGt0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHBrdCArPSAyOw0KICAgICAgICAgICAg ICAgICAgICAgICAgbGVuIC09IDI7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmxhbiA8 IDEgfHwgdmxhbiA+IElQX1JFQ1ZfTUFYX1ZMQU4pDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBFUlJPUjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGV0eXBlID0gbnRv aHMoKihjb25zdCB1aW50MTZfdCAqKSBwa3QpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcGt0 ICs9IDI7DQogICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0gMjsNCiAgICAgICAgICAgICAg IH0NCiAgICAgICAgIA0KLyoNCiAgICBtX3BrdENvdW50Kys7DQogICAgbV9wa3RMZW4gKz0gbGVu Ow0KKi8NCiAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCg0KICAgICAgICBjYXNlIERMVF9SQVc6 DQogICAgICAgIHsNCiAgICAgICAgICAgICBldHlwZSA9IEVUSEVSVFlQRV9JUDsNCiAgICAgICAg ICAgICBicmVhazsNCiAgICAgICAgfQ0KDQogICAgICAgIGNhc2UgRExUX05VTEw6IHsNCiAgICAg ICAgICAgICAgICB1bnNpZ25lZCB4Ow0KDQogICAgICAgICAgICAgICAgaWYgKGxlbiA8IHNpemVv ZihpbnQzMl90KSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUjsNCiAgICAg ICAgICAgICAgICB4ID0gKihjb25zdCB1aW50MzJfdCAqKXBrdDsNCiAgICAgICAgICAgICAgICBp ZiAoeCA9PSBQRl9JTkVUKQ0KICAgICAgICAgICAgICAgICAgICAgICAgZXR5cGUgPSBFVEhFUlRZ UEVfSVA7DQovKg0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHggPT0gUEZfSU5FVDYpDQogICAg ICAgICAgICAgICAgICAgICAgICBldHlwZSA9IEVUSEVSVFlQRV9JUFY2Ow0KKi8NCiAgICAgICAg ICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1I7DQogICAg ICAgICAgICAgICAgcGt0ICs9IHNpemVvZihpbnQzMl90KTsNCiAgICAgICAgICAgICAgICBsZW4g LT0gc2l6ZW9mKGludDMyX3QpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAg fQ0KICAgICAgICANCiAgICAgICAgLy9Ob3QgZXRoZXJuZXQgZnJhbWUNCiAgICAgICAgZGVmYXVs dDoNCiAgICAgICAgICByZXR1cm4gT0s7DQogICAgfQ0KICAgICANCiAgICBpZiAoZXR5cGUgIT0g RVRIRVJUWVBFX0lQIHx8IGxlbiA8PSBzaXplb2Yoc3RydWN0IGlwKSkgLy93ZSByZWNlaXZlIElQ djQgcGFja3J0IG9ubHkNCiAgICB7DQogICAgICAgIHJldHVybiBFUlJPUjsNCiAgICB9DQogICAg cmV0dXJuIHByb2Nlc3NJcFBhY2tldChoLCBsZW4sIHBrdCk7DQp9DQoNCnZvaWQgcGFja2V0SGFu ZGxlcih1Y2hhcl90ICp1c2VyLCBjb25zdCBzdHJ1Y3QgcGNhcF9wa3RoZHIgKmgsIGNvbnN0IHVj aGFyX3QgKnNwKQ0Kew0KICAgcmVjZWl2ZURhdGEoaCwgc3ApOw0KfQ0KDQoNCg0Kdm9pZCBwcmlu dE1zZ0luSGV4KGNvbnN0IHVjaGFyX3QgKmJ1ZiwgaW50IGxlbikNCnsNCiNkZWZpbmUgTlRMX01B WF9NU0dfRFVNUF9MSU5FIDUwDQoNCiAgICAgICAgY2hhciAgICBsb2dbODE5Ml0gPSB7MH07DQog ICAgICAgIGNoYXIgICAgICpwdHIgPSBsb2c7DQogICAgICAgIGludCAgICAgaTsNCg0KICAgICAg ICBwdHIgKz0gc3ByaW50ZihwdHIsICJbJTRkXSAiLDApOw0KICAgICAgICBmb3IgKGkgPSAwOyBp IDwgbGVuOyBpKyspDQogICAgICAgIHsNCiAgICAgICAgICAgICAgICBwdHIgKz0gc3ByaW50Zihw dHIsICIlMDJYICIsIGJ1ZltpXSk7DQogICAgICAgICAgICAgICAgaWYgKCAoaSsxKSAlIE5UTF9N QVhfTVNHX0RVTVBfTElORSA9PSAwICkgIC8qIEZlZWRMaW5lICovDQogICAgICAgICAgICAgICAg ew0KICAgICAgICAgICAgICAgICAgICAgICAgLy9wdHIgKz0gc3ByaW50ZihwdHIsICJcbiIpOw0K ICAgICAgICAgICAgICAgICAgICAgICAgcHRyID0gbG9nOw0KICAgICAgICAgICAgICAgICAgICAg ICAgcHJpbnRmKCIlc1xuIiwgbG9nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHB0ciArPSBz cHJpbnRmKHB0ciwgIlslNGRdICIsaSsxKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0N CiAgICAgICAgaWYoIGkgJSBOVExfTUFYX01TR19EVU1QX0xJTkUgIT0gMCApICAgLyogUHJpbnQg UmVtYWluZyBCeXRlcyAqLw0KICAgICAgICB7DQogICAgICAgICAgICAgICAgLy9wdHIgKz0gc3By aW50ZihwdHIsICJcbiIpOw0KICAgICAgICAgICAgICAgIHB0ciA9IGxvZzsNCiAgICAgICAgfQ0K ICAgICAgICBwcmludGYoIiVzXG4iLCBsb2cpOw0KICAgICAgICByZXR1cm47DQp9DQoNCg0KU1RB VFVTIHN0YXJ0KCkNCnsNCiAgICAgICAgcmVnaXN0ZXIgaW50IGNudCwgaTsNCiAgICAgICAgdWlu dDMyX3QgbG9jYWxuZXQsIG5ldG1hc2s7DQogICAgICAgIHJlZ2lzdGVyIGNoYXIgKmNtZGJ1ZiA9 ICJ1ZHAgYW5kIGRzdCBob3N0IDE5Mi4xNjguNi4xMTEgYW5kIGRzdCBwb3J0cmFuZ2UgODE5Mi04 NTAwIiwgKmRldmljZTsNCiAgICAgICAgLy9yZWdpc3RlciBjaGFyICpjbWRidWYgPSAidWRwIGFu ZCBkc3QgaG9zdCAxOTIuMTY4LjYuMTExIGFuZCBkc3QgcG9ydHJhbmdlIDgxOTItODUwMCIsICpk ZXZpY2U7DQogICAgICAgIGludCB0eXBlOw0KICAgICAgICBzdHJ1Y3QgYnBmX3Byb2dyYW0gZmNv ZGU7DQovLyAgICAgICAgc2lnaGFuZGxlcl90IG9sZGhhbmRsZXI7DQogICAgICAgIGNoYXIgZWJ1 ZltQQ0FQX0VSUkJVRl9TSVpFXTsNCiAgICAgICAgaW50IHN0YXR1czsNCg0KICAgICAgICBjbnQg PSAtMTsgLy9sb29wIGZvciBldmVyDQogICAgICAgIGRldmljZSA9ICJiZ2UwIjsNCiAgICANCiAg ICAgICAgaWYgKGRldmljZVswXSA9PSAnXDAnKSB7DQogICAgICAgICAgICAgICAgZGV2aWNlID0g cGNhcF9sb29rdXBkZXYoZWJ1Zik7DQogICAgICAgICAgICAgICAgaWYgKGRldmljZSA9PSBOVUxM KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgRVJST1JfTUFKT1JfQ0xB U1MoIkVSUk9SOiBObyBuZXR3b3JrIGludGVyZmFjZSB0byByZWNlaXZlIElQIHBhY2tldHMuICVz IiwgZWJ1Zik7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUjsNCiAgICAgICAgICAg ICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAobV9wZCkNCiAgICAgICAgICAgcGNhcF9j bG9zZShtX3BkKTsNCiAgICAgICAgDQoNCiAgICAgICAgICAgICplYnVmID0gJ1wwJzsNCg0KICAg ICAgICAgICAgcHJpbnRmKCJPcGVuZ2luZyBjYXB0dXJlIG9uICVzXG4iLCBkZXZpY2UpOw0KDQog ICAgICAgICAgICBtX3BkID0gcGNhcF9vcGVuX2xpdmUoZGV2aWNlLCBJUF9SRUNWX0JVRl9TSVpF LCAwLCBJUF9SRUNWX1RJTUVPVVQsIGVidWYpOw0KICAgICAgICAgICAgaWYgKG1fcGQgPT0gTlVM TCl7DQogICAgICAgICAgICAgICAgRVJST1JfTUFKT1JfQ0xBU1MoIkVSUk9SOiBjYW5ub3Qgb3Bl biAlcyB0byByZWFkIElQIHBhY2tldHMuICVzIiwgZGV2aWNlLCBlYnVmKTsNCiAgICAgICAgICAg ICAgICByZXR1cm4gRVJST1I7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIGlmICgq ZWJ1Zil7DQogICAgICAgICAgICAgICAgVFJBQ0VfV0FSTklOR19DTEFTUygiJXMiLCBlYnVmKTsN CiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAqIExldCB1c2Vy IG93biBwcm9jZXNzIGFmdGVyIHNvY2tldCBoYXMgYmVlbiBvcGVuZWQuDQogICAgICAgICAgICAg Ki8NCg0KICAgICAgICAgbV9kYXRhbGluayA9IHBjYXBfZGF0YWxpbmsobV9wZCk7DQogICAgICAg ICBpZiAobV9kYXRhbGluayAhPSBETFRfRU4xME1CICYmIG1fZGF0YWxpbmsgIT0gRExUX1JBVyl7 DQogICAgICAgICAgICAgICAgICAgIEVSUk9SX01BSk9SX0NMQVNTKCJEYXRhbGluayAlcyBpcyBu b3Qgb25lIG9mIHRoZSBETFRzIHN1cHBvcnRlZCBieSB0aGlzIGRldmljZSAlcy4gT25seSBETFRf RU4xME1CIGFuZCBETFRfUkFXIHN1cHBvcnRlZCBjdXJyZW50bHkuXG4iLA0KICAgICAgICAgICAg ICAgICAgICAgICAgICBwY2FwX2RhdGFsaW5rX3ZhbF90b19uYW1lKG1fZGF0YWxpbmspLCBkZXZp Y2UpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1I7DQogICAgICAgICB9DQoNCiAg ICAgICAgaSA9IHBjYXBfc25hcHNob3QobV9wZCk7DQogICAgICAgIGlmIChtX3NuYXBsZW4gPCBp KSB7DQogICAgICAgICAgICAgICAgVFJBQ0VfV0FSTklOR19DTEFTUygic25hcGxlbiByYWlzZWQg ZnJvbSAlZCB0byAlZCIsIG1fc25hcGxlbiwgaSk7DQogICAgICAgICAgICAgICAgbV9zbmFwbGVu ID0gaTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAocGNhcF9sb29rdXBuZXQoZGV2aWNlLCAmbG9j YWxuZXQsICZuZXRtYXNrLCBlYnVmKSA8IDApIHsNCiAgICAgICAgICAgICAgICBsb2NhbG5ldCA9 IDA7DQogICAgICAgICAgICAgICAgbmV0bWFzayA9IDA7DQogICAgICAgICAgICAgICAgVFJBQ0Vf V0FSTklOR19DTEFTUygiJXMiLCBlYnVmKTsNCiAgICAgICAgfQ0KICAgIA0KLyoNCiAgICAgICAg aWYgKHBjYXBfY29tcGlsZShtX3BkLCAmZmNvZGUsIGNtZGJ1ZiwgMCwgbmV0bWFzaykgPCAwKXsN CiAgICAgICAgICAgIEVSUk9SX01BSk9SX0NMQVNTKCIlcyIsIHBjYXBfZ2V0ZXJyKG1fcGQpKTsN CiAgICAgICAgICAgIHJldHVybiBFUlJPUjsNCiAgICAgICAgfQ0KDQogDQogICAgICAgIGlmIChw Y2FwX3NldGZpbHRlcihtX3BkLCAmZmNvZGUpIDwgMCl7DQogICAgICAgICAgICBFUlJPUl9NQUpP Ul9DTEFTUygiJXMiLCBwY2FwX2dldGVycihtX3BkKSk7DQogICAgICAgICAgICByZXR1cm4gRVJS T1I7DQogICAgICAgICAgICB9DQoqLw0KDQogICAgICAgIHR5cGUgPSBwY2FwX2RhdGFsaW5rKG1f cGQpOw0KDQogICAgDQogICAgICAgIHN0YXR1cyA9IHBjYXBfbG9vcChtX3BkLCBjbnQsIHBhY2tl dEhhbmRsZXIsIDApOw0KICAgICAgICBpZiAoc3RhdHVzID09IC0xKSB7DQogICAgICAgICAgICAv Kg0KICAgICAgICAgICAgICogRXJyb3IuICBSZXBvcnQgaXQuDQogICAgICAgICAgICAgKi8NCiAg ICAgICAgIEVSUk9SX01BSk9SX0NMQVNTKCAiJXM6IHBjYXBfbG9vcCBleGl0OiAlc1xuIiwNCiAg ICAgICAgICAgICAgICBkZXZpY2UsIHBjYXBfZ2V0ZXJyKG1fcGQpKTsNCiAgICAgICAgfQ0KICAg ICAgICBwY2FwX2Nsb3NlKG1fcGQpOw0KICAgICAgICByZXR1cm4gKHN0YXR1cyA9PSAtMSA/IEVS Uk9SIDogT0spOw0KfQ0KDQoNCnZvaWQgbXlfc2lnYWxhcm0oaW50IHNpZykgew0KDQoNCiAgcHJp bnRmKCJQYWNrZXRzL1M6ICVkLCAgQml0cy9TOiAlZCAoJWYgTWJpdHMvUylcbiIsICBtX3BrdENv dW50L0FMQVJNX1NMRUVQLCBtX3BrdExlbio4L0FMQVJNX1NMRUVQLCAoKGZsb2F0KShtX3BrdExl bio4KSkvKEFMQVJNX1NMRUVQKjEwMjQqMTAyNCkpOw0KDQogIG1fcGt0Q291bnQ9MDsNCiAgbV9w a3RMZW49MDsNCg0KLyogUHV0IHRoZSBpbnRlcmZhY2UgaW4gc3RhdGlzdGljcyBtb2RlICovDQpp ZihwY2FwX3N0YXRzKG1fcGQsIG15c3RhdHApIDwgMCkNCnsNCiAgICBmcHJpbnRmKHN0ZGVyciwi XG5FcnJvciBwY2FwX3N0YXRzLlxuIik7DQp9DQplbHNlDQp7DQogICAgcHJpbnRmKCJOdW0gb2Yg cmVjdjogJWQsIE51bSBvZiBkcm9wOiAlZFxuIiwgbXlzdGF0cC0+cHNfcmVjdiwgbXlzdGF0cC0+ cHNfZHJvcCk7DQp9DQogIGFsYXJtKEFMQVJNX1NMRUVQKTsNCiAgc2lnbmFsKFNJR0FMUk0sIG15 X3NpZ2FsYXJtKTsNCn0NCg0KaW50IG1haW4oKQ0Kew0KICAgIHNpZ25hbChTSUdBTFJNLCBteV9z aWdhbGFybSk7DQogICAgYWxhcm0oQUxBUk1fU0xFRVApOw0KICAgIHJldHVybiBzdGFydCgpOw0K fQ== ------_=_NextPart_001_01CB44E0.64B45226--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1DB91DF937A4544C81E636468B91C21C0728EA30>