Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Apr 2012 18:23:06 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        freebsd-wireless@freebsd.org
Subject:   [RFC] disable hardware register byteswap, fixes Merlin AR9220 on AR71xx
Message-ID:  <CAJ-VmokLuTCjJ_on9-Ejw7mEAmMhk075hqG4CnyFgtKaFLOFaA@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--047d7b11190bbc3d8d04bde9e5c8
Content-Type: text/plain; charset=ISO-8859-1

Hi all,

After quite a bit of hackery, hair tearing and other assorted stuff, I
finally nailed the AR9220 + AR71xx instability that we've all been
seeing.

It seems to be a combination of:

* incorrect power supplies being used (yes, I found that a board would
work fine until you started interacting with the NIC, at which point
it'd throw an immediate parity error - but then subsequent register
poking via the debugger would come out fine);
* _maybe_ some PCI bus glue issues? The PCI glue now looks a lot more
like what's in Linux/Atheros code.
* hardware register content byteswapping.

The last one is a bit unfortunate. Here's a patch that pushes the
register space byte swapping back into software, rather than hardware.
I've given it a good thrashing on my AR71xx boards with various AR9220
NICs and they all work a-ok now, with no panics and no "weird stuff."

I have no idea (yet) whether it's a timing issue with the PCI
NIC/bus/controller, whether the hardware swizzling is just plain
broken in some situations .. but what I don't want to do is turn all
of this off without understanding what the root cause is.

So if you've been dying (heh) to play with FreeBSD-HEAD on the
DIR-825, or any other atheros MIPS + AR9220 board, here's your chance.
I've had it rock solid on my AP96 and Routerstation / Routerstation
pro boards for the last couple of days. The DIR-825 is based on the
AP96 design (different switch PHY) so I would be very surprised to
find it unstable.

I may soon just give in and commit it, with a long explanation as to
why I'm disabling it. If people would like it resurrected for whatever
reason then the patch(es) will be in SVN history.

As a data point - ath5k, ath9k and the Atheros reference driver all
have the hardware register byteswap disabled. I'd rather not disable
it without having firm evidence it's broken. I may also tidy up the
register access stuff and make it all a compile time option.

Thanks,



Adrian

--047d7b11190bbc3d8d04bde9e5c8
Content-Type: application/octet-stream; 
	name="2012-04-17-ath-hal-noregswizzle-2.diff"
Content-Disposition: attachment; 
	filename="2012-04-17-ath-hal-noregswizzle-2.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h15p5x9s0

SW5kZXg6IHN5cy9kZXYvYXRoL2F0aF9oYWwvYXI1NDE2L2FyNTQxNl9yZXNldC5jCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHN5cy9kZXYvYXRoL2F0aF9oYWwvYXI1NDE2L2FyNTQxNl9yZXNldC5jCShyZXZpc2lv
biAyMzQzNjkpCisrKyBzeXMvZGV2L2F0aC9hdGhfaGFsL2FyNTQxNi9hcjU0MTZfcmVzZXQuYwko
d29ya2luZyBjb3B5KQpAQCAtMTM4NywxNiArMTM4NywxNSBAQAogCWlmICh0eXBlID09IEhBTF9S
RVNFVF9DT0xEKSB7CiAJCWlmIChpc0JpZ0VuZGlhbigpKSB7CiAJCQkvKgotCQkJICogU2V0IENG
RywgbGl0dGxlLWVuZGlhbiBmb3IgcmVnaXN0ZXIKLQkJCSAqIGFuZCBkZXNjcmlwdG9yIGFjY2Vz
c2VzLgorCQkJICogU2V0IENGRywgbGl0dGxlLWVuZGlhbiBmb3IgZGVzY3JpcHRvciBhY2Nlc3Nl
cy4KIAkJCSAqLwotCQkJbWFzayA9IElOSVRfQ09ORklHX1NUQVRVUyB8IEFSX0NGR19TV1JEIHwg
QVJfQ0ZHX1NXUkc7CisJCQltYXNrID0gSU5JVF9DT05GSUdfU1RBVFVTIHwgQVJfQ0ZHX1NXUkQ7
CiAjaWZuZGVmIEFIX05FRURfREVTQ19TV0FQCiAJCQltYXNrIHw9IEFSX0NGR19TV1REOwogI2Vu
ZGlmCiAJCQlIQUxERUJVRyhhaCwgSEFMX0RFQlVHX1JFU0VULAogCQkJICAgICIlcyBBcHBseWlu
ZyBkZXNjcmlwdG9yIHN3YXBcbiIsIF9fZnVuY19fKTsKLQkJCU9TX1JFR19XUklURShhaCwgQVJf
Q0ZHLCBMRV9SRUFEXzQoJm1hc2spKTsKKwkJCU9TX1JFR19XUklURShhaCwgQVJfQ0ZHLCBtYXNr
KTsKIAkJfSBlbHNlCiAJCQlPU19SRUdfV1JJVEUoYWgsIEFSX0NGRywgSU5JVF9DT05GSUdfU1RB
VFVTKTsKIAl9CkluZGV4OiBzeXMvZGV2L2F0aC9hdGhfaGFsL2FyNTIxMC9hcjUyMTBfcmVzZXQu
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L2F0aC9hdGhfaGFsL2FyNTIxMC9hcjUyMTBfcmVzZXQu
YwkocmV2aXNpb24gMjM0MzY5KQorKysgc3lzL2Rldi9hdGgvYXRoX2hhbC9hcjUyMTAvYXI1MjEw
X3Jlc2V0LmMJKHdvcmtpbmcgY29weSkKQEAgLTU5NCwxMiArNTk0LDEwIEBACiAgICAgICAgIGlm
ICgocmVzZXRNYXNrICYgQVJfUkNfUk1BQykgPT0gMCkgewogCQlpZiAoaXNCaWdFbmRpYW4oKSkg
ewogCQkJLyoKLQkJCSAqIFNldCBDRkcsIGxpdHRsZS1lbmRpYW4gZm9yIHJlZ2lzdGVyCi0JCQkg
KiBhbmQgZGVzY3JpcHRvciBhY2Nlc3Nlcy4KKwkJCSAqIFNldCBDRkcsIGxpdHRsZS1lbmRpYW4g
Zm9yIGRlc2NyaXB0b3IgYWNjZXNzZXMuCiAJCQkgKi8KLQkJCW1hc2sgPSBJTklUX0NPTkZJR19T
VEFUVVMgfAotCQkJCUFSX0NGR19TV1REIHwgQVJfQ0ZHX1NXUkQgfCBBUl9DRkdfU1dSRzsKLQkJ
CU9TX1JFR19XUklURShhaCwgQVJfQ0ZHLCBMRV9SRUFEXzQoJm1hc2spKTsKKwkJCW1hc2sgPSBJ
TklUX0NPTkZJR19TVEFUVVMgfCBBUl9DRkdfU1dURCB8IEFSX0NGR19TV1JEOworCQkJT1NfUkVH
X1dSSVRFKGFoLCBBUl9DRkcsIG1hc2spOwogCQl9IGVsc2UKIAkJCU9TX1JFR19XUklURShhaCwg
QVJfQ0ZHLCBJTklUX0NPTkZJR19TVEFUVVMpOwogCX0KSW5kZXg6IHN5cy9kZXYvYXRoL2F0aF9o
YWwvYXI1MjExL2FyNTIxMV9yZXNldC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYvYXRoL2F0aF9o
YWwvYXI1MjExL2FyNTIxMV9yZXNldC5jCShyZXZpc2lvbiAyMzQzNjkpCisrKyBzeXMvZGV2L2F0
aC9hdGhfaGFsL2FyNTIxMS9hcjUyMTFfcmVzZXQuYwkod29ya2luZyBjb3B5KQpAQCAtNzY0LDEy
ICs3NjQsMTAgQEAKICAgICAgICAgaWYgKChyZXNldE1hc2sgJiBBUl9SQ19NQUMpID09IDApIHsK
IAkJaWYgKGlzQmlnRW5kaWFuKCkpIHsKIAkJCS8qCi0JCQkgKiBTZXQgQ0ZHLCBsaXR0bGUtZW5k
aWFuIGZvciByZWdpc3RlcgotCQkJICogYW5kIGRlc2NyaXB0b3IgYWNjZXNzZXMuCisJCQkgKiBT
ZXQgQ0ZHLCBsaXR0bGUtZW5kaWFuIGZvciBkZXNjcmlwdG9yIGFjY2Vzc2VzLgogCQkJICovCi0J
CQltYXNrID0gSU5JVF9DT05GSUdfU1RBVFVTIHwKLQkJCQlBUl9DRkdfU1dURCB8IEFSX0NGR19T
V1JEIHwgQVJfQ0ZHX1NXUkc7Ci0JCQlPU19SRUdfV1JJVEUoYWgsIEFSX0NGRywgTEVfUkVBRF80
KCZtYXNrKSk7CisJCQltYXNrID0gSU5JVF9DT05GSUdfU1RBVFVTIHwgQVJfQ0ZHX1NXVEQgfCBB
Ul9DRkdfU1dSRDsKKwkJCU9TX1JFR19XUklURShhaCwgQVJfQ0ZHLCBtYXNrKTsKIAkJfSBlbHNl
CiAJCQlPU19SRUdfV1JJVEUoYWgsIEFSX0NGRywgSU5JVF9DT05GSUdfU1RBVFVTKTsKIAl9Cklu
ZGV4OiBzeXMvZGV2L2F0aC9hdGhfaGFsL2FyNTIxMi9hcjUyMTJfcmVzZXQuYwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBzeXMvZGV2L2F0aC9hdGhfaGFsL2FyNTIxMi9hcjUyMTJfcmVzZXQuYwkocmV2aXNpb24g
MjM0MzY5KQorKysgc3lzL2Rldi9hdGgvYXRoX2hhbC9hcjUyMTIvYXI1MjEyX3Jlc2V0LmMJKHdv
cmtpbmcgY29weSkKQEAgLTEyNzMsMTQgKzEyNzMsMTMgQEAKICAgICAgICAgaWYgKChyZXNldE1h
c2sgJiBBUl9SQ19NQUMpID09IDApIHsKIAkJaWYgKGlzQmlnRW5kaWFuKCkpIHsKIAkJCS8qCi0J
CQkgKiBTZXQgQ0ZHLCBsaXR0bGUtZW5kaWFuIGZvciByZWdpc3RlcgotCQkJICogYW5kIGRlc2Ny
aXB0b3IgYWNjZXNzZXMuCisJCQkgKiBTZXQgQ0ZHLCBsaXR0bGUtZW5kaWFuIGZvciBkZXNjcmlw
dG9yIGFjY2Vzc2VzLgogCQkJICovCi0JCQltYXNrID0gSU5JVF9DT05GSUdfU1RBVFVTIHwgQVJf
Q0ZHX1NXUkQgfCBBUl9DRkdfU1dSRzsKKwkJCW1hc2sgPSBJTklUX0NPTkZJR19TVEFUVVMgfCBB
Ul9DRkdfU1dSRDsKICNpZm5kZWYgQUhfTkVFRF9ERVNDX1NXQVAKIAkJCW1hc2sgfD0gQVJfQ0ZH
X1NXVEQ7CiAjZW5kaWYKLQkJCU9TX1JFR19XUklURShhaCwgQVJfQ0ZHLCBMRV9SRUFEXzQoJm1h
c2spKTsKKwkJCU9TX1JFR19XUklURShhaCwgQVJfQ0ZHLCBtYXNrKTsKIAkJfSBlbHNlCiAJCQlP
U19SRUdfV1JJVEUoYWgsIEFSX0NGRywgSU5JVF9DT05GSUdfU1RBVFVTKTsKIAkJaWYgKGFyNTIx
MlNldFBvd2VyTW9kZShhaCwgSEFMX1BNX0FXQUtFLCBBSF9UUlVFKSkKSW5kZXg6IHN5cy9kZXYv
YXRoL2F0aF9oYWwvYXI1MzEyL2FyNTMxMl9yZXNldC5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYv
YXRoL2F0aF9oYWwvYXI1MzEyL2FyNTMxMl9yZXNldC5jCShyZXZpc2lvbiAyMzQzNjkpCisrKyBz
eXMvZGV2L2F0aC9hdGhfaGFsL2FyNTMxMi9hcjUzMTJfcmVzZXQuYwkod29ya2luZyBjb3B5KQpA
QCAtNzQwLDggKzc0MCw3IEBACiAgICAgICAgIGlmICgocmVzZXRNYXNrICYgQVJfUkNfTUFDKSA9
PSAwKSB7CiAJCWlmIChpc0JpZ0VuZGlhbigpKSB7CiAJCQkvKgotCQkJICogU2V0IENGRywgbGl0
dGxlLWVuZGlhbiBmb3IgcmVnaXN0ZXIKLQkJCSAqIGFuZCBkZXNjcmlwdG9yIGFjY2Vzc2VzLgor
CQkJICogU2V0IENGRywgbGl0dGxlLWVuZGlhbiBmb3IgZGVzY3JpcHRvciBhY2Nlc3Nlcy4KIAkJ
CSAqLwogI2lmZGVmIEFIX05FRURfREVTQ19TV0FQCiAJCQltYXNrID0gSU5JVF9DT05GSUdfU1RB
VFVTIHwgQVJfQ0ZHX1NXUkQ7CkluZGV4OiBzeXMvZGV2L2F0aC9haF9vc2RlcC5jCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHN5cy9kZXYvYXRoL2FoX29zZGVwLmMJKHJldmlzaW9uIDIzNDM2OSkKKysrIHN5cy9k
ZXYvYXRoL2FoX29zZGVwLmMJKHdvcmtpbmcgY29weSkKQEAgLTI2NywxMiArMjY3LDcgQEAKIAl9
CiAJaWYgKGFoLT5haF9jb25maWcuYWhfc2VyaWFsaXNlX3JlZ193YXIpCiAJCW10eF9sb2NrX3Nw
aW4oJmFoX3JlZ3Nlcl9tdHgpOwotI2lmIF9CWVRFX09SREVSID09IF9CSUdfRU5ESUFOCi0JaWYg
KE9TX1JFR19VTlNXQVBQRUQocmVnKSkKLQkJYnVzX3NwYWNlX3dyaXRlXzQodGFnLCBoLCByZWcs
IHZhbCk7Ci0JZWxzZQotI2VuZGlmCi0JCWJ1c19zcGFjZV93cml0ZV9zdHJlYW1fNCh0YWcsIGgs
IHJlZywgdmFsKTsKKwlidXNfc3BhY2Vfd3JpdGVfNCh0YWcsIGgsIHJlZywgdmFsKTsKIAlpZiAo
YWgtPmFoX2NvbmZpZy5haF9zZXJpYWxpc2VfcmVnX3dhcikKIAkJbXR4X3VubG9ja19zcGluKCZh
aF9yZWdzZXJfbXR4KTsKIH0KQEAgLTI4NiwxMiArMjgxLDExIEBACiAKIAlpZiAoYWgtPmFoX2Nv
bmZpZy5haF9zZXJpYWxpc2VfcmVnX3dhcikKIAkJbXR4X2xvY2tfc3BpbigmYWhfcmVnc2VyX210
eCk7Ci0jaWYgX0JZVEVfT1JERVIgPT0gX0JJR19FTkRJQU4KLQlpZiAoT1NfUkVHX1VOU1dBUFBF
RChyZWcpKQotCQl2YWwgPSBidXNfc3BhY2VfcmVhZF80KHRhZywgaCwgcmVnKTsKLQllbHNlCi0j
ZW5kaWYKLQkJdmFsID0gYnVzX3NwYWNlX3JlYWRfc3RyZWFtXzQodGFnLCBoLCByZWcpOworCXZh
bCA9IGJ1c19zcGFjZV9yZWFkXzQodGFnLCBoLCByZWcpOworCisJaWYgKHZhbCA9PSAweGRlYWRj
MGRlKQorCQlhdGhfaGFsX3ByaW50ZihhaCwgIiVzOiByZWc9MHgleCwgdmFsPTB4ZGVhZGMwZGUh
XG4iLCBfX2Z1bmNfXywgcmVnKTsKKwogCWlmIChhaC0+YWhfY29uZmlnLmFoX3NlcmlhbGlzZV9y
ZWdfd2FyKQogCQltdHhfdW5sb2NrX3NwaW4oJmFoX3JlZ3Nlcl9tdHgpOwogCWlmIChhdGhfaGFs
X2FscSkgewpAQCAtMzQzLDEyICszMzcsNyBAQAogCiAJaWYgKGFoLT5haF9jb25maWcuYWhfc2Vy
aWFsaXNlX3JlZ193YXIpCiAJCW10eF9sb2NrX3NwaW4oJmFoX3JlZ3Nlcl9tdHgpOwotI2lmIF9C
WVRFX09SREVSID09IF9CSUdfRU5ESUFOCi0JaWYgKE9TX1JFR19VTlNXQVBQRUQocmVnKSkKLQkJ
YnVzX3NwYWNlX3dyaXRlXzQodGFnLCBoLCByZWcsIHZhbCk7Ci0JZWxzZQotI2VuZGlmCi0JCWJ1
c19zcGFjZV93cml0ZV9zdHJlYW1fNCh0YWcsIGgsIHJlZywgdmFsKTsKKwlidXNfc3BhY2Vfd3Jp
dGVfNCh0YWcsIGgsIHJlZywgdmFsKTsKIAlpZiAoYWgtPmFoX2NvbmZpZy5haF9zZXJpYWxpc2Vf
cmVnX3dhcikKIAkJbXR4X3VubG9ja19zcGluKCZhaF9yZWdzZXJfbXR4KTsKIH0KQEAgLTM2Miwx
MiArMzUxLDcgQEAKIAogCWlmIChhaC0+YWhfY29uZmlnLmFoX3NlcmlhbGlzZV9yZWdfd2FyKQog
CQltdHhfbG9ja19zcGluKCZhaF9yZWdzZXJfbXR4KTsKLSNpZiBfQllURV9PUkRFUiA9PSBfQklH
X0VORElBTgotCWlmIChPU19SRUdfVU5TV0FQUEVEKHJlZykpCi0JCXZhbCA9IGJ1c19zcGFjZV9y
ZWFkXzQodGFnLCBoLCByZWcpOwotCWVsc2UKLSNlbmRpZgotCQl2YWwgPSBidXNfc3BhY2VfcmVh
ZF9zdHJlYW1fNCh0YWcsIGgsIHJlZyk7CisJdmFsID0gYnVzX3NwYWNlX3JlYWRfNCh0YWcsIGgs
IHJlZyk7CiAJaWYgKGFoLT5haF9jb25maWcuYWhfc2VyaWFsaXNlX3JlZ193YXIpCiAJCW10eF91
bmxvY2tfc3BpbigmYWhfcmVnc2VyX210eCk7CiAJcmV0dXJuIHZhbDsKSW5kZXg6IHN5cy9kZXYv
YXRoL2FoX29zZGVwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9hdGgvYWhfb3NkZXAuaAkocmV2
aXNpb24gMjM0MzY5KQorKysgc3lzL2Rldi9hdGgvYWhfb3NkZXAuaAkod29ya2luZyBjb3B5KQpA
QCAtOTcsMzkgKzk3LDEzIEBACiBleHRlcm4Jdm9pZCBhdGhfaGFsX3JlZ193cml0ZShzdHJ1Y3Qg
YXRoX2hhbCAqYWgsIHVfaW50IHJlZywgdV9pbnQzMl90IHZhbCk7CiBleHRlcm4JdV9pbnQzMl90
IGF0aF9oYWxfcmVnX3JlYWQoc3RydWN0IGF0aF9oYWwgKmFoLCB1X2ludCByZWcpOwogI2Vsc2UK
LS8qCi0gKiBUaGUgaGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSBuYXRpdmUgbGl0dGxlLWVuZGlhbiBi
eXRlIG9yZGVyLgotICogQmlnLWVuZGlhbiBob3N0cyBhcmUgaGFuZGxlZCBieSBlbmFibGluZyBo
YXJkd2FyZSBieXRlLXN3YXAKLSAqIG9mIHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXMgYXQgcmVz
ZXQuICBCdXQgdGhlIFBDSSBjbG9jawotICogZG9tYWluIHJlZ2lzdGVycyBhcmUgbm90IGJ5dGUg
c3dhcHBlZCEgIFRodXMsIG9uIGJpZy1lbmRpYW4KLSAqIHBsYXRmb3JtcyB3ZSBoYXZlIHRvIGV4
cGxpY2l0bHkgYnl0ZS1zd2FwIHRob3NlIHJlZ2lzdGVycy4KLSAqIE1vc3Qgb2YgdGhpcyBjb2Rl
IGlzIGNvbGxhcHNlZCBhdCBjb21waWxlIHRpbWUgYmVjYXVzZSB0aGUKLSAqIHJlZ2lzdGVyIHZh
bHVlcyBhcmUgY29uc3RhbnRzLgotICovCi0jaWYgX0JZVEVfT1JERVIgPT0gX0JJR19FTkRJQU4K
LSNkZWZpbmUgT1NfUkVHX1dSSVRFKF9haCwgX3JlZywgX3ZhbCkgZG8gewkJCQlcCi0JaWYgKE9T
X1JFR19VTlNXQVBQRUQoX3JlZykpCQkJCQlcCi0JCWJ1c19zcGFjZV93cml0ZV80KChidXNfc3Bh
Y2VfdGFnX3QpKF9haCktPmFoX3N0LAlcCi0JCSAgICAoYnVzX3NwYWNlX2hhbmRsZV90KShfYWgp
LT5haF9zaCwgKF9yZWcpLCAoX3ZhbCkpOwlcCi0JZWxzZQkJCQkJCQkJXAotCQlidXNfc3BhY2Vf
d3JpdGVfc3RyZWFtXzQoKGJ1c19zcGFjZV90YWdfdCkoX2FoKS0+YWhfc3QsCVwKLQkJICAgIChi
dXNfc3BhY2VfaGFuZGxlX3QpKF9haCktPmFoX3NoLCAoX3JlZyksIChfdmFsKSk7CVwKLX0gd2hp
bGUgKDApCi0jZGVmaW5lIE9TX1JFR19SRUFEKF9haCwgX3JlZykJCQkJCQlcCi0JKE9TX1JFR19V
TlNXQVBQRUQoX3JlZykgPwkJCQkJXAotCQlidXNfc3BhY2VfcmVhZF80KChidXNfc3BhY2VfdGFn
X3QpKF9haCktPmFoX3N0LAkJXAotCQkgICAgKGJ1c19zcGFjZV9oYW5kbGVfdCkoX2FoKS0+YWhf
c2gsIChfcmVnKSkgOgkJXAotCQlidXNfc3BhY2VfcmVhZF9zdHJlYW1fNCgoYnVzX3NwYWNlX3Rh
Z190KShfYWgpLT5haF9zdCwJXAotCQkgICAgKGJ1c19zcGFjZV9oYW5kbGVfdCkoX2FoKS0+YWhf
c2gsIChfcmVnKSkpCi0jZWxzZSAvKiBfQllURV9PUkRFUiA9PSBfTElUVExFX0VORElBTiAqLwog
I2RlZmluZQlPU19SRUdfV1JJVEUoX2FoLCBfcmVnLCBfdmFsKQkJCQkJXAogCWJ1c19zcGFjZV93
cml0ZV80KChidXNfc3BhY2VfdGFnX3QpKF9haCktPmFoX3N0LAkJXAogCSAgICAoYnVzX3NwYWNl
X2hhbmRsZV90KShfYWgpLT5haF9zaCwgKF9yZWcpLCAoX3ZhbCkpCiAjZGVmaW5lCU9TX1JFR19S
RUFEKF9haCwgX3JlZykJCQkJCQlcCiAJYnVzX3NwYWNlX3JlYWRfNCgoYnVzX3NwYWNlX3RhZ190
KShfYWgpLT5haF9zdCwJCQlcCiAJICAgIChidXNfc3BhY2VfaGFuZGxlX3QpKF9haCktPmFoX3No
LCAoX3JlZykpCi0jZW5kaWYgLyogX0JZVEVfT1JERVIgKi8KLSNlbmRpZiAvKiBBSF9ERUJVRyB8
fCBBSF9SRUdGVU5DIHx8IEFIX0RFQlVHX0FMUSAqLworI2VuZGlmCiAKICNpZmRlZiBBSF9ERUJV
R19BTFEKIGV4dGVybgl2b2lkIE9TX01BUksoc3RydWN0IGF0aF9oYWwgKiwgdV9pbnQgaWQsIHVf
aW50MzJfdCB2YWx1ZSk7Cg==
--047d7b11190bbc3d8d04bde9e5c8--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmokLuTCjJ_on9-Ejw7mEAmMhk075hqG4CnyFgtKaFLOFaA>