Skip site navigation (1)Skip section navigation (2)
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>