Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Apr 2003 16:48:47 -0700 (PDT)
From:      Nate Lawson <nate@root.org>
To:        current@freebsd.org, hackers@freebsd.org
Subject:   MPSAFE patch for fxp(4)
Message-ID:  <Pine.BSF.4.21.0304101644280.32578-200000@root.org>

next in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-1708314112-1050018527=:32578
Content-Type: TEXT/PLAIN; charset=US-ASCII

I have completed a patch for fxp(4) to enable MPSAFE operation.  Please
test it if you have one of these devices.  Particularly interesting cases
are DEVICE_POLLING and SMP and non-i386 archs.  I have tested it
thoroughly on an i386 UP box both as a module and compiled into the
kernel.  The one necessary fix by gallatin@ to vm/uma_core.c is included
as well.

-Nate

Make fxp(4) INTR_MPSAFE:
- Add fxp_start_body() and change fxp_start() to just acquire locks and
  then call fxp_start_body().  Places that would call fxp_start() with
  locks held (mutex recursion) now call fxp_start_body() directly. Remove
  MTX_RECURSE flag from sc_mtx. [gallatin]
- Change fxp_attach() to work without the softc lock, saving interrupt
  hooking until the head of fxp_attach().
- Call ether_ifattach() before overriding ifp parameters. This reverts
  part of 1.155.
- Remove multiple error paths in fxp_attach().
- Teardown interrupt in fxp_detach() before unlocking the softc.
- Add locking to fxp_suspend, fxp_resume, fxp_start, fxp_intr,
  fxp_poll, fxp_tick, fxp_ioctl, fxp_watchdog.
- Pass in ifp to fxp_intr_body since its callers sometimes already use it.
- Add compatibility define for INTR_MPSAFE for 4.x. [gallatin]

Ideas from:	gallatin, mux
Tested by:	>200M packets of dd/ssh, NFS, ping on i386 UP

--0-1708314112-1050018527=:32578
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="fxp-mpsafe.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.4.21.0304101648470.32578@root.org>
Content-Description: 
Content-Disposition: attachment; filename="fxp-mpsafe.diff"

SW5kZXg6IGlmX2Z4cC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg
ZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL2Rldi9meHAvaWZfZnhwLmMsdg0K
cmV0cmlldmluZyByZXZpc2lvbiAxLjE2Ng0KZGlmZiAtdSAtcjEuMTY2IGlm
X2Z4cC5jDQotLS0gaWZfZnhwLmMJOCBBcHIgMjAwMyAxODo1Njo0NSAtMDAw
MAkxLjE2Ng0KKysrIGlmX2Z4cC5jCTEwIEFwciAyMDAzIDIzOjUxOjA2IC0w
MDAwDQpAQCAtMTg4LDYgKzE4OCw3IEBADQogc3RhdGljIHZvaWQgCQlmeHBf
aW5pdCh2b2lkICp4c2MpOw0KIHN0YXRpYyB2b2lkIAkJZnhwX3RpY2sodm9p
ZCAqeHNjKTsNCiBzdGF0aWMgdm9pZAkJZnhwX3Bvd2Vyc3RhdGVfZDAoZGV2
aWNlX3QgZGV2KTsNCitzdGF0aWMgdm9pZCAJCWZ4cF9zdGFydF9ib2R5KHN0
cnVjdCBpZm5ldCAqaWZwKTsNCiBzdGF0aWMgdm9pZCAJCWZ4cF9zdGFydChz
dHJ1Y3QgaWZuZXQgKmlmcCk7DQogc3RhdGljIHZvaWQJCWZ4cF9zdG9wKHN0
cnVjdCBmeHBfc29mdGMgKnNjKTsNCiBzdGF0aWMgdm9pZCAJCWZ4cF9yZWxl
YXNlKHN0cnVjdCBmeHBfc29mdGMgKnNjKTsNCkBAIC0zNzUsMTQgKzM3Niwx
MyBAQA0KIAlpbnQgaSwgcmlkLCBtMSwgbTIsIHByZWZlcl9pb21hcCwgbWF4
dHhzZWc7DQogCWludCBzOw0KIA0KLQliemVybyhzYywgc2l6ZW9mKCpzYykp
Ow0KIAlzYy0+ZGV2ID0gZGV2Ow0KIAljYWxsb3V0X2hhbmRsZV9pbml0KCZz
Yy0+c3RhdF9jaCk7DQogCXN5c2N0bF9jdHhfaW5pdCgmc2MtPnN5c2N0bF9j
dHgpOw0KIAltdHhfaW5pdCgmc2MtPnNjX210eCwgZGV2aWNlX2dldF9uYW1l
dW5pdChkZXYpLCBNVFhfTkVUV09SS19MT0NLLA0KLQkgICAgTVRYX0RFRiB8
IE1UWF9SRUNVUlNFKTsNCisJICAgIE1UWF9ERUYpOw0KIA0KLQlzID0gc3Bs
aW1wKCk7IA0KKwlzID0gc3BsaW1wKCk7DQogDQogCS8qDQogCSAqIEVuYWJs
ZSBidXMgbWFzdGVyaW5nLiBFbmFibGUgbWVtb3J5IHNwYWNlIHRvbywgaW4g
Y2FzZQ0KQEAgLTQ3NCw4ICs0NzQsMTAgQEANCiAJc2MtPnN5c2N0bF90cmVl
ID0gU1lTQ1RMX0FERF9OT0RFKCZzYy0+c3lzY3RsX2N0eCwNCiAJICAgIFNZ
U0NUTF9TVEFUSUNfQ0hJTERSRU4oX2h3KSwgT0lEX0FVVE8sDQogCSAgICBk
ZXZpY2VfZ2V0X25hbWV1bml0KGRldiksIENUTEZMQUdfUkQsIDAsICIiKTsN
Ci0JaWYgKHNjLT5zeXNjdGxfdHJlZSA9PSBOVUxMKQ0KKwlpZiAoc2MtPnN5
c2N0bF90cmVlID09IE5VTEwpIHsNCisJCWVycm9yID0gRU5YSU87DQogCQln
b3RvIGZhaWw7DQorCX0NCiAJU1lTQ1RMX0FERF9QUk9DKCZzYy0+c3lzY3Rs
X2N0eCwgU1lTQ1RMX0NISUxEUkVOKHNjLT5zeXNjdGxfdHJlZSksDQogCSAg
ICBPSURfQVVUTywgImludF9kZWxheSIsIENUTFRZUEVfSU5UIHwgQ1RMRkxB
R19SVyB8IENUTEZMQUdfUFJJU09OLA0KIAkgICAgJnNjLT50dW5hYmxlX2lu
dF9kZWxheSwgMCwgc3lzY3RsX2h3X2Z4cF9pbnRfZGVsYXksICJJIiwNCkBA
IC02MTAsNyArNjEyLDcgQEANCiAJZXJyb3IgPSBidXNfZG1hbWVtX2FsbG9j
KHNjLT5meHBfc3RhZywgKHZvaWQgKiopJnNjLT5meHBfc3RhdHMsDQogCSAg
ICBCVVNfRE1BX05PV0FJVCwgJnNjLT5meHBfc21hcCk7DQogCWlmIChlcnJv
cikNCi0JCWdvdG8gZmFpbG1lbTsNCisJCWdvdG8gZmFpbDsNCiAJZXJyb3Ig
PSBidXNfZG1hbWFwX2xvYWQoc2MtPmZ4cF9zdGFnLCBzYy0+ZnhwX3NtYXAs
IHNjLT5meHBfc3RhdHMsDQogCSAgICBzaXplb2Yoc3RydWN0IGZ4cF9zdGF0
cyksIGZ4cF9kbWFfbWFwX2FkZHIsICZzYy0+c3RhdHNfYWRkciwgMCk7DQog
CWlmIChlcnJvcikgew0KQEAgLTYzMCw3ICs2MzIsNyBAQA0KIAllcnJvciA9
IGJ1c19kbWFtZW1fYWxsb2Moc2MtPmNibF90YWcsICh2b2lkICoqKSZzYy0+
ZnhwX2Rlc2MuY2JsX2xpc3QsDQogCSAgICBCVVNfRE1BX05PV0FJVCwgJnNj
LT5jYmxfbWFwKTsNCiAJaWYgKGVycm9yKQ0KLQkJZ290byBmYWlsbWVtOw0K
KwkJZ290byBmYWlsOw0KIAliemVybyhzYy0+ZnhwX2Rlc2MuY2JsX2xpc3Qs
IEZYUF9UWENCX1NaKTsNCiANCiAJZXJyb3IgPSBidXNfZG1hbWFwX2xvYWQo
c2MtPmNibF90YWcsIHNjLT5jYmxfbWFwLA0KQEAgLTY1Miw3ICs2NTQsNyBA
QA0KIAllcnJvciA9IGJ1c19kbWFtZW1fYWxsb2Moc2MtPm1jc190YWcsICh2
b2lkICoqKSZzYy0+bWNzcCwNCiAJICAgIEJVU19ETUFfTk9XQUlULCAmc2Mt
Pm1jc19tYXApOw0KIAlpZiAoZXJyb3IpDQotCQlnb3RvIGZhaWxtZW07DQor
CQlnb3RvIGZhaWw7DQogCWVycm9yID0gYnVzX2RtYW1hcF9sb2FkKHNjLT5t
Y3NfdGFnLCBzYy0+bWNzX21hcCwgc2MtPm1jc3AsDQogCSAgICBzaXplb2Yo
c3RydWN0IGZ4cF9jYl9tY3MpLCBmeHBfZG1hX21hcF9hZGRyLCAmc2MtPm1j
c19hZGRyLCAwKTsNCiAJaWYgKGVycm9yKSB7DQpAQCAtNjg4LDggKzY5MCwx
MCBAQA0KIAkJCWRldmljZV9wcmludGYoZGV2LCAiY2FuJ3QgY3JlYXRlIERN
QSBtYXAgZm9yIFJYXG4iKTsNCiAJCQlnb3RvIGZhaWw7DQogCQl9DQotCQlp
ZiAoZnhwX2FkZF9yZmFidWYoc2MsIHJ4cCkgIT0gMCkNCi0JCQlnb3RvIGZh
aWxtZW07DQorCQlpZiAoZnhwX2FkZF9yZmFidWYoc2MsIHJ4cCkgIT0gMCkg
ew0KKwkJCWVycm9yID0gRU5PTUVNOw0KKwkJCWdvdG8gZmFpbDsNCisJCX0N
CiAJfQ0KIA0KIAkvKg0KQEAgLTc1MSw3ICs3NTUsNiBAQA0KIAlpZnAtPmlm
X3dhdGNoZG9nID0gZnhwX3dhdGNoZG9nOw0KIA0KIAkvKiBFbmFibGUgY2hl
Y2tzdW0gb2ZmbG9hZCBmb3IgODI1NTAgb3IgYmV0dGVyIGNoaXBzICovDQot
DQogCWlmIChzYy0+ZmxhZ3MgJiBGWFBfRkxBR19FWFRfUkZBKSB7DQogCQlp
ZnAtPmlmX2h3YXNzaXN0ID0gRlhQX0NTVU1fRkVBVFVSRVM7DQogCQlpZnAt
PmlmX2NhcGFiaWxpdGllcyA9IElGQ0FQX0hXQ1NVTTsNCkBAIC03NTksNiAr
NzYyLDExIEBADQogCX0NCiANCiAJLyoNCisJICogQXR0YWNoIHRoZSBpbnRl
cmZhY2UuDQorCSAqLw0KKwlldGhlcl9pZmF0dGFjaChpZnAsIHNjLT5hcnBj
b20uYWNfZW5hZGRyKTsNCisNCisJLyoNCiAJICogVGVsbCB0aGUgdXBwZXIg
bGF5ZXIocykgd2Ugc3VwcG9ydCBsb25nIGZyYW1lcy4NCiAJICovDQogCWlm
cC0+aWZfZGF0YS5pZmlfaGRybGVuID0gc2l6ZW9mKHN0cnVjdCBldGhlcl92
bGFuX2hlYWRlcik7DQpAQCAtNzcwLDMyICs3NzgsMjMgQEANCiAJICovDQog
CWlmcC0+aWZfc25kLmlmcV9tYXhsZW4gPSBGWFBfTlRYQ0IgLSAxOw0KIA0K
LQkvKg0KLQkgKiBBdHRhY2ggdGhlIGludGVyZmFjZS4NCi0JICovDQotCWV0
aGVyX2lmYXR0YWNoKGlmcCwgc2MtPmFycGNvbS5hY19lbmFkZHIpOw0KLQ0K
LQllcnJvciA9IGJ1c19zZXR1cF9pbnRyKGRldiwgc2MtPmlycSwgSU5UUl9U
WVBFX05FVCwNCi0JICAgIGZ4cF9pbnRyLCBzYywgJnNjLT5paCk7DQorCS8q
IEhvb2sgb3VyIGludGVycnVwdCBhZnRlciBhbGwgaW5pdGlhbGl6YXRpb24g
aXMgY29tcGxldGUuICovDQorCWVycm9yID0gYnVzX3NldHVwX2ludHIoZGV2
LCBzYy0+aXJxLCBJTlRSX1RZUEVfTkVUIHwgSU5UUl9NUFNBRkUsDQorCQkJ
ICAgICAgIGZ4cF9pbnRyLCBzYywgJnNjLT5paCk7DQogCWlmIChlcnJvcikg
ew0KIAkJZGV2aWNlX3ByaW50ZihkZXYsICJjb3VsZCBub3Qgc2V0dXAgaXJx
XG4iKTsNCiAJCWdvdG8gZmFpbDsNCiAJfQ0KIA0KLQlzcGx4KHMpOw0KLQly
ZXR1cm4gKDApOw0KLQ0KLWZhaWxtZW06DQotCWRldmljZV9wcmludGYoZGV2
LCAiRmFpbGVkIHRvIG1hbGxvYyBtZW1vcnlcbiIpOw0KLQllcnJvciA9IEVO
T01FTTsNCiBmYWlsOg0KIAlzcGx4KHMpOw0KLQlmeHBfcmVsZWFzZShzYyk7
DQorCWlmIChlcnJvcikNCisJCWZ4cF9yZWxlYXNlKHNjKTsNCiAJcmV0dXJu
IChlcnJvcik7DQogfQ0KIA0KIC8qDQotICogcmVsZWFzZSBhbGwgcmVzb3Vy
Y2VzDQorICogUmVsZWFzZSBhbGwgcmVzb3VyY2VzLiAgVGhlIHNvZnRjIGxv
Y2sgc2hvdWxkIG5vdCBiZSBoZWxkLg0KICAqLw0KIHN0YXRpYyB2b2lkDQog
ZnhwX3JlbGVhc2Uoc3RydWN0IGZ4cF9zb2Z0YyAqc2MpDQpAQCAtODI3LDkg
KzgyNiwxMSBAQA0KIAkJYnVzX2RtYW1hcF9kZXN0cm95KHNjLT5meHBfbXRh
ZywgdHhwLT50eF9tYXApOw0KIAl9DQogDQotCWJ1c19nZW5lcmljX2RldGFj
aChzYy0+ZGV2KTsNCisJbXR4X2Fzc2VydCgmc2MtPnNjX210eCwgTUFfTk9U
T1dORUQpOw0KIAlpZiAoc2MtPm1paWJ1cykNCiAJCWRldmljZV9kZWxldGVf
Y2hpbGQoc2MtPmRldiwgc2MtPm1paWJ1cyk7DQorCWlmIChkZXZpY2VfaXNf
YWxpdmUoc2MtPmRldikpDQorCQlidXNfZ2VuZXJpY19kZXRhY2goc2MtPmRl
dik7DQogDQogCWlmIChzYy0+ZnhwX2Rlc2MuY2JsX2xpc3QpIHsNCiAJCWJ1
c19kbWFtYXBfdW5sb2FkKHNjLT5jYmxfdGFnLCBzYy0+Y2JsX21hcCk7DQpA
QCAtODczLDExICs4NzQsMTIgQEANCiAJc3RydWN0IGZ4cF9zb2Z0YyAqc2Mg
PSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7DQogCWludCBzOw0KIA0KKwlGWFBf
TE9DSyhzYyk7DQorCXMgPSBzcGxpbXAoKTsNCisNCiAJLyogZGlzYWJsZSBp
bnRlcnJ1cHRzICovDQogCUNTUl9XUklURV8xKHNjLCBGWFBfQ1NSX1NDQl9J
TlRSQ05UTCwgRlhQX1NDQl9JTlRSX0RJU0FCTEUpOw0KIA0KLQlzID0gc3Bs
aW1wKCk7DQotDQogCS8qDQogCSAqIFN0b3AgRE1BIGFuZCBkcm9wIHRyYW5z
bWl0IHF1ZXVlLg0KIAkgKi8NCkBAIC04OTMsNiArODk1LDExIEBADQogCSAq
Lw0KIAlpZm1lZGlhX3JlbW92ZWFsbCgmc2MtPnNjX21lZGlhKTsNCiANCisJ
LyogVW5ob29rIGludGVycnVwdCBiZWZvcmUgZHJvcHBpbmcgbG9jay4gKi8N
CisJYnVzX3RlYXJkb3duX2ludHIoc2MtPmRldiwgc2MtPmlycSwgc2MtPmlo
KTsNCisJc2MtPmloID0gTlVMTDsNCisNCisJRlhQX1VOTE9DSyhzYyk7DQog
CXNwbHgocyk7DQogDQogCS8qIFJlbGVhc2Ugb3VyIGFsbG9jYXRlZCByZXNv
dXJjZXMuICovDQpAQCAtOTI5LDYgKzkzNiw3IEBADQogCXN0cnVjdCBmeHBf
c29mdGMgKnNjID0gZGV2aWNlX2dldF9zb2Z0YyhkZXYpOw0KIAlpbnQgaSwg
czsNCiANCisJRlhQX0xPQ0soc2MpOw0KIAlzID0gc3BsaW1wKCk7DQogDQog
CWZ4cF9zdG9wKHNjKTsNCkBAIC05NDIsNiArOTUwLDcgQEANCiANCiAJc2Mt
PnN1c3BlbmRlZCA9IDE7DQogDQorCUZYUF9VTkxPQ0soc2MpOw0KIAlzcGx4
KHMpOw0KIAlyZXR1cm4gKDApOw0KIH0NCkBAIC05NTksNiArOTY4LDcgQEAN
CiAJdV9pbnQxNl90IHBjaV9jb21tYW5kOw0KIAlpbnQgaSwgczsNCiANCisJ
RlhQX0xPQ0soc2MpOw0KIAlzID0gc3BsaW1wKCk7DQogDQogCWZ4cF9wb3dl
cnN0YXRlX2QwKGRldik7DQpAQCAtOTg1LDYgKzk5NSw3IEBADQogDQogCXNj
LT5zdXNwZW5kZWQgPSAwOw0KIA0KKwlGWFBfVU5MT0NLKHNjKTsNCiAJc3Bs
eChzKTsNCiAJcmV0dXJuICgwKTsNCiB9DQpAQCAtMTIwNiwxMiArMTIxNywy
NyBAQA0KIH0NCiANCiAvKg0KLSAqIFN0YXJ0IHBhY2tldCB0cmFuc21pc3Np
b24gb24gdGhlIGludGVyZmFjZS4NCisgKiBHcmFiIHRoZSBzb2Z0YyBsb2Nr
IGFuZCBjYWxsIHRoZSByZWFsIGZ4cF9zdGFydF9ib2R5KCkgcm91dGluZQ0K
ICAqLw0KIHN0YXRpYyB2b2lkDQogZnhwX3N0YXJ0KHN0cnVjdCBpZm5ldCAq
aWZwKQ0KIHsNCiAJc3RydWN0IGZ4cF9zb2Z0YyAqc2MgPSBpZnAtPmlmX3Nv
ZnRjOw0KKw0KKwlGWFBfTE9DSyhzYyk7DQorCWZ4cF9zdGFydF9ib2R5KGlm
cCk7DQorCUZYUF9VTkxPQ0soc2MpOw0KK30NCisNCisvKg0KKyAqIFN0YXJ0
IHBhY2tldCB0cmFuc21pc3Npb24gb24gdGhlIGludGVyZmFjZS4gIA0KKyAq
IFRoaXMgcm91dGluZSBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBzb2Z0YyBs
b2NrIGhlbGQsIGFuZCBpcyBhbg0KKyAqIGludGVybmFsIGVudHJ5IHBvaW50
IG9ubHkuDQorICovDQorc3RhdGljIHZvaWQNCitmeHBfc3RhcnRfYm9keShz
dHJ1Y3QgaWZuZXQgKmlmcCkNCit7DQorCXN0cnVjdCBmeHBfc29mdGMgKnNj
ID0gaWZwLT5pZl9zb2Z0YzsNCiAJc3RydWN0IGZ4cF90eCAqdHhwOw0KIAlz
dHJ1Y3QgbWJ1ZiAqbWJfaGVhZDsNCiAJaW50IGVycm9yOw0KQEAgLTE0MjYs
NyArMTQ1Miw4IEBADQogCX0NCiB9DQogDQotc3RhdGljIHZvaWQgZnhwX2lu
dHJfYm9keShzdHJ1Y3QgZnhwX3NvZnRjICpzYywgdV9pbnQ4X3Qgc3RhdGFj
aywgaW50IGNvdW50KTsNCitzdGF0aWMgdm9pZCBmeHBfaW50cl9ib2R5KHN0
cnVjdCBmeHBfc29mdGMgKnNjLCBzdHJ1Y3QgaWZuZXQgKmlmcCwNCisgICAg
dV9pbnQ4X3Qgc3RhdGFjaywgaW50IGNvdW50KTsNCiANCiAjaWZkZWYgREVW
SUNFX1BPTExJTkcNCiBzdGF0aWMgcG9sbF9oYW5kbGVyX3QgZnhwX3BvbGw7
DQpAQCAtMTQzNyw4ICsxNDY0LDEwIEBADQogCXN0cnVjdCBmeHBfc29mdGMg
KnNjID0gaWZwLT5pZl9zb2Z0YzsNCiAJdV9pbnQ4X3Qgc3RhdGFjazsNCiAN
CisJRlhQX0xPQ0soc2MpOw0KIAlpZiAoY21kID09IFBPTExfREVSRUdJU1RF
UikgewkvKiBmaW5hbCBjYWxsLCBlbmFibGUgaW50ZXJydXB0cyAqLw0KIAkJ
Q1NSX1dSSVRFXzEoc2MsIEZYUF9DU1JfU0NCX0lOVFJDTlRMLCAwKTsNCisJ
CUZYUF9VTkxPQ0soc2MpOw0KIAkJcmV0dXJuOw0KIAl9DQogCXN0YXRhY2sg
PSBGWFBfU0NCX1NUQVRBQ0tfQ1hUTk8gfCBGWFBfU0NCX1NUQVRBQ0tfQ05B
IHwNCkBAIC0xNDQ3LDE1ICsxNDc2LDE4IEBADQogCQl1X2ludDhfdCB0bXA7
DQogDQogCQl0bXAgPSBDU1JfUkVBRF8xKHNjLCBGWFBfQ1NSX1NDQl9TVEFU
QUNLKTsNCi0JCWlmICh0bXAgPT0gMHhmZiB8fCB0bXAgPT0gMCkNCisJCWlm
ICh0bXAgPT0gMHhmZiB8fCB0bXAgPT0gMCkgew0KKwkJCUZYUF9VTkxPQ0so
c2MpOw0KIAkJCXJldHVybjsgLyogbm90aGluZyB0byBkbyAqLw0KKwkJfQ0K
IAkJdG1wICY9IH5zdGF0YWNrOw0KIAkJLyogYWNrIHdoYXQgd2UgY2FuICov
DQogCQlpZiAodG1wICE9IDApDQogCQkJQ1NSX1dSSVRFXzEoc2MsIEZYUF9D
U1JfU0NCX1NUQVRBQ0ssIHRtcCk7DQogCQlzdGF0YWNrIHw9IHRtcDsNCiAJ
fQ0KLQlmeHBfaW50cl9ib2R5KHNjLCBzdGF0YWNrLCBjb3VudCk7DQorCWZ4
cF9pbnRyX2JvZHkoc2MsIGlmcCwgc3RhdGFjaywgY291bnQpOw0KKwlGWFBf
VU5MT0NLKHNjKTsNCiB9DQogI2VuZGlmIC8qIERFVklDRV9QT0xMSU5HICov
DQogDQpAQCAtMTQ2NiwyMiArMTQ5OCwyNiBAQA0KIGZ4cF9pbnRyKHZvaWQg
KnhzYykNCiB7DQogCXN0cnVjdCBmeHBfc29mdGMgKnNjID0geHNjOw0KKwlz
dHJ1Y3QgaWZuZXQgKmlmcCA9ICZzYy0+c2NfaWY7DQogCXVfaW50OF90IHN0
YXRhY2s7DQogDQorCUZYUF9MT0NLKHNjKTsNCiAjaWZkZWYgREVWSUNFX1BP
TExJTkcNCi0Jc3RydWN0IGlmbmV0ICppZnAgPSAmc2MtPnNjX2lmOw0KLQ0K
LQlpZiAoaWZwLT5pZl9mbGFncyAmIElGRl9QT0xMSU5HKQ0KKwlpZiAoaWZw
LT5pZl9mbGFncyAmIElGRl9QT0xMSU5HKSB7DQorCQlGWFBfVU5MT0NLKHNj
KTsNCiAJCXJldHVybjsNCisJfQ0KIAlpZiAoZXRoZXJfcG9sbF9yZWdpc3Rl
cihmeHBfcG9sbCwgaWZwKSkgew0KIAkJLyogZGlzYWJsZSBpbnRlcnJ1cHRz
ICovDQogCQlDU1JfV1JJVEVfMShzYywgRlhQX0NTUl9TQ0JfSU5UUkNOVEws
IEZYUF9TQ0JfSU5UUl9ESVNBQkxFKTsNCiAJCWZ4cF9wb2xsKGlmcCwgMCwg
MSk7DQorCQlGWFBfVU5MT0NLKHNjKTsNCiAJCXJldHVybjsNCiAJfQ0KICNl
bmRpZg0KIA0KIAlpZiAoc2MtPnN1c3BlbmRlZCkgew0KKwkJRlhQX1VOTE9D
SyhzYyk7DQogCQlyZXR1cm47DQogCX0NCiANCkBAIC0xNDkyLDE1ICsxNTI4
LDE4IEBADQogCQkgKiBhbGwgYml0cyBhcmUgc2V0LCB0aGlzIG1heSBpbmRp
Y2F0ZSB0aGF0IHRoZSBjYXJkIGhhcw0KIAkJICogYmVlbiBwaHlzaWNhbGx5
IGVqZWN0ZWQsIHNvIGlnbm9yZSBpdC4NCiAJCSAqLyAgDQotCQlpZiAoc3Rh
dGFjayA9PSAweGZmKSANCisJCWlmIChzdGF0YWNrID09IDB4ZmYpIHsNCisJ
CQlGWFBfVU5MT0NLKHNjKTsNCiAJCQlyZXR1cm47DQorCQl9DQogDQogCQkv
Kg0KIAkJICogRmlyc3QgQUNLIGFsbCB0aGUgaW50ZXJydXB0cyBpbiB0aGlz
IHBhc3MuDQogCQkgKi8NCiAJCUNTUl9XUklURV8xKHNjLCBGWFBfQ1NSX1ND
Ql9TVEFUQUNLLCBzdGF0YWNrKTsNCi0JCWZ4cF9pbnRyX2JvZHkoc2MsIHN0
YXRhY2ssIC0xKTsNCisJCWZ4cF9pbnRyX2JvZHkoc2MsIGlmcCwgc3RhdGFj
aywgLTEpOw0KIAl9DQorCUZYUF9VTkxPQ0soc2MpOw0KIH0NCiANCiBzdGF0
aWMgdm9pZA0KQEAgLTE1MjgsOSArMTU2Nyw5IEBADQogfQ0KIA0KIHN0YXRp
YyB2b2lkDQotZnhwX2ludHJfYm9keShzdHJ1Y3QgZnhwX3NvZnRjICpzYywg
dV9pbnQ4X3Qgc3RhdGFjaywgaW50IGNvdW50KQ0KK2Z4cF9pbnRyX2JvZHko
c3RydWN0IGZ4cF9zb2Z0YyAqc2MsIHN0cnVjdCBpZm5ldCAqaWZwLCB1X2lu
dDhfdCBzdGF0YWNrLA0KKyAgICBpbnQgY291bnQpDQogew0KLQlzdHJ1Y3Qg
aWZuZXQgKmlmcCA9ICZzYy0+c2NfaWY7DQogCXN0cnVjdCBtYnVmICptOw0K
IAlzdHJ1Y3QgZnhwX3J4ICpyeHA7DQogCXN0cnVjdCBmeHBfcmZhICpyZmE7
DQpAQCAtMTU3MSw3ICsxNjEwLDcgQEANCiAJCSAqIFRyeSB0byBzdGFydCBt
b3JlIHBhY2tldHMgdHJhbnNtaXR0aW5nLg0KIAkJICovDQogCQlpZiAoaWZw
LT5pZl9zbmQuaWZxX2hlYWQgIT0gTlVMTCkNCi0JCQlmeHBfc3RhcnQoaWZw
KTsNCisJCQlmeHBfc3RhcnRfYm9keShpZnApOw0KIAl9DQogDQogCS8qDQpA
QCAtMTY5NSw2ICsxNzM0LDggQEANCiAJc3RydWN0IGZ4cF9zdGF0cyAqc3Ag
PSBzYy0+ZnhwX3N0YXRzOw0KIAlpbnQgczsNCiANCisJRlhQX0xPQ0soc2Mp
Ow0KKwlzID0gc3BsaW1wKCk7DQogCWJ1c19kbWFtYXBfc3luYyhzYy0+Znhw
X3N0YWcsIHNjLT5meHBfc21hcCwgQlVTX0RNQVNZTkNfUE9TVFJFQUQpOw0K
IAlpZnAtPmlmX29wYWNrZXRzICs9IGxlMzJ0b2goc3AtPnR4X2dvb2QpOw0K
IAlpZnAtPmlmX2NvbGxpc2lvbnMgKz0gbGUzMnRvaChzcC0+dHhfdG90YWxf
Y29sbGlzaW9ucyk7DQpAQCAtMTcyMSw3ICsxNzYyLDcgQEANCiAJCWlmICh0
eF90aHJlc2hvbGQgPCAxOTIpDQogCQkJdHhfdGhyZXNob2xkICs9IDY0Ow0K
IAl9DQotCXMgPSBzcGxpbXAoKTsNCisNCiAJLyoNCiAJICogUmVsZWFzZSBh
bnkgeG1pdCBidWZmZXJzIHRoYXQgaGF2ZSBjb21wbGV0ZWQgRE1BLiBUaGlz
IGlzbid0DQogCSAqIHN0cmljdGx5IG5lY2Vzc2FyeSB0byBkbyBoZXJlLCBi
dXQgaXQncyBhZHZhbnRhZ291cyBmb3IgbWJ1ZnMNCkBAIC0xNzc0LDExICsx
ODE1LDEyIEBADQogCX0NCiAJaWYgKHNjLT5taWlidXMgIT0gTlVMTCkNCiAJ
CW1paV90aWNrKGRldmljZV9nZXRfc29mdGMoc2MtPm1paWJ1cykpOw0KLQlz
cGx4KHMpOw0KIAkvKg0KIAkgKiBTY2hlZHVsZSBhbm90aGVyIHRpbWVvdXQg
b25lIHNlY29uZCBmcm9tIG5vdy4NCiAJICovDQogCXNjLT5zdGF0X2NoID0g
dGltZW91dChmeHBfdGljaywgc2MsIGh6KTsNCisJRlhQX1VOTE9DSyhzYyk7
DQorCXNwbHgocyk7DQogfQ0KIA0KIC8qDQpAQCAtMTg0MiwxMCArMTg4NCwx
MiBAQA0KIHsNCiAJc3RydWN0IGZ4cF9zb2Z0YyAqc2MgPSBpZnAtPmlmX3Nv
ZnRjOw0KIA0KKwlGWFBfTE9DSyhzYyk7DQogCWRldmljZV9wcmludGYoc2Mt
PmRldiwgImRldmljZSB0aW1lb3V0XG4iKTsNCiAJaWZwLT5pZl9vZXJyb3Jz
Kys7DQogDQogCWZ4cF9pbml0KHNjKTsNCisJRlhQX1VOTE9DSyhzYyk7DQog
fQ0KIA0KIHN0YXRpYyB2b2lkDQpAQCAtMjEwNywxMiArMjE1MSwxMiBAQA0K
IAllbHNlDQogI2VuZGlmIC8qIERFVklDRV9QT0xMSU5HICovDQogCUNTUl9X
UklURV8xKHNjLCBGWFBfQ1NSX1NDQl9JTlRSQ05UTCwgMCk7DQotCXNwbHgo
cyk7DQogDQogCS8qDQogCSAqIFN0YXJ0IHN0YXRzIHVwZGF0ZXIuDQogCSAq
Lw0KIAlzYy0+c3RhdF9jaCA9IHRpbWVvdXQoZnhwX3RpY2ssIHNjLCBoeik7
DQorCXNwbHgocyk7DQogfQ0KIA0KIHN0YXRpYyBpbnQNCkBAIC0yMjk1LDYg
KzIzMzksNyBAQA0KIAlzdHJ1Y3QgbWlpX2RhdGEgKm1paTsNCiAJaW50IHMs
IGVycm9yID0gMDsNCiANCisJRlhQX0xPQ0soc2MpOw0KIAlzID0gc3BsaW1w
KCk7DQogDQogCXN3aXRjaCAoY29tbWFuZCkgew0KQEAgLTIzNTEsOCArMjM5
NiwxNSBAQA0KIAkJYnJlYWs7DQogDQogCWRlZmF1bHQ6DQorCQkvKiANCisJ
CSAqIGV0aGVyX2lvY3RsKCkgd2lsbCBldmVudHVhbGx5IGNhbGwgZnhwX3N0
YXJ0KCkgd2hpY2gNCisJCSAqIHdpbGwgcmVzdWx0IGluIG11dGV4IHJlY3Vy
c2lvbiBzbyBkcm9wIGl0IGZpcnN0Lg0KKwkJICovDQorCQlGWFBfVU5MT0NL
KHNjKTsNCiAJCWVycm9yID0gZXRoZXJfaW9jdGwoaWZwLCBjb21tYW5kLCBk
YXRhKTsNCiAJfQ0KKwlpZiAobXR4X293bmVkKCZzYy0+c2NfbXR4KSkNCisJ
CUZYUF9VTkxPQ0soc2MpOw0KIAlzcGx4KHMpOw0KIAlyZXR1cm4gKGVycm9y
KTsNCiB9DQpJbmRleDogaWZfZnhwdmFyLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvZGV2L2Z4cC9p
Zl9meHB2YXIuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQNCmRpZmYg
LXUgLXIxLjI0IGlmX2Z4cHZhci5oDQotLS0gaWZfZnhwdmFyLmgJMiBBcHIg
MjAwMyAxNjo0NzoxNiAtMDAwMAkxLjI0DQorKysgaWZfZnhwdmFyLmgJOSBB
cHIgMjAwMyAxNjo1NTozNCAtMDAwMA0KQEAgLTEwNCw2ICsxMDQsNyBAQA0K
ICNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA8IDUwMDAwMA0KICNkZWZpbmUJRlhQ
X0xPQ0soX3NjKQ0KICNkZWZpbmUJRlhQX1VOTE9DSyhfc2MpDQorI2RlZmlu
ZQlJTlRSX01QU0FGRQkJMA0KICNkZWZpbmUgbXR4X2luaXQoYSwgYiwgYywg
ZCkNCiAjZGVmaW5lIG10eF9kZXN0cm95KGEpDQogc3RydWN0IG10eCB7IGlu
dCBkdW1teTsgfTsNCkluZGV4OiAvc3lzL3ZtL3VtYV9jb3JlLmMNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9z
eXMvdm0vdW1hX2NvcmUuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTEN
CmRpZmYgLXUgLXIxLjUxIHVtYV9jb3JlLmMNCi0tLSAvc3lzL3ZtL3VtYV9j
b3JlLmMJMjYgTWFyIDIwMDMgMTg6NDQ6NTMgLTAwMDAJMS41MQ0KKysrIC9z
eXMvdm0vdW1hX2NvcmUuYwk2IEFwciAyMDAzIDAwOjAzOjM4IC0wMDAwDQpA
QCAtNzAzLDEwICs3MDMsMTUgQEANCiAJCXdhaXQgJj0gfk1fWkVSTzsNCiAN
CiAJaWYgKGJvb3RlZCB8fCAoem9uZS0+dXpfZmxhZ3MgJiBVTUFfWkZMQUdf
UFJJVkFMTE9DKSkgew0KLQkJbXR4X2xvY2soJkdpYW50KTsNCi0JCW1lbSA9
IHpvbmUtPnV6X2FsbG9jZih6b25lLCANCi0JCSAgICB6b25lLT51el9wcGVy
YSAqIFVNQV9TTEFCX1NJWkUsICZmbGFncywgd2FpdCk7DQotCQltdHhfdW5s
b2NrKCZHaWFudCk7DQorCQlpZiAoKHdhaXQgJiBNX05PV0FJVCkgPT0gMCkg
ew0KKwkJCW10eF9sb2NrKCZHaWFudCk7DQorCQkJbWVtID0gem9uZS0+dXpf
YWxsb2NmKHpvbmUsIA0KKwkJCSAgICB6b25lLT51el9wcGVyYSAqIFVNQV9T
TEFCX1NJWkUsICZmbGFncywgd2FpdCk7DQorCQkJbXR4X3VubG9jaygmR2lh
bnQpOw0KKwkJfSBlbHNlIHsNCisJCQltZW0gPSB6b25lLT51el9hbGxvY2Yo
em9uZSwgDQorCQkJICAgIHpvbmUtPnV6X3BwZXJhICogVU1BX1NMQUJfU0la
RSwgJmZsYWdzLCB3YWl0KTsNCisJCX0NCiAJCWlmIChtZW0gPT0gTlVMTCkg
ew0KIAkJCVpPTkVfTE9DSyh6b25lKTsNCiAJCQlyZXR1cm4gKE5VTEwpOw0K

--0-1708314112-1050018527=:32578--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0304101644280.32578-200000>