Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Oct 2012 12:48:56 -0500 (CDT)
From:      Bryan Venteicher <bryanv@daemoninthecloset.org>
To:        freebsd-scsi@freebsd.org
Subject:   bioq_disksort() on SSDs
Message-ID:  <1780024492.108.1350496136356.JavaMail.root@daemoninthecloset.org>
In-Reply-To: <31199212.85.1350495039233.JavaMail.root@daemoninthecloset.org>

next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_106_764303500.1350496136349
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Hi,

At $JOB, we've noticed bioq_disksort() creep up in the profiling
output when the bio queue gets backed up at our caching SSD drives.
Thoughts on the attached patch which does away with the disksort
for SCSI da* and ATA ada* SSD drives?

Support for quirks and sysctl/tunables to force the behavior either
way are desirable but not implemented in this patch. Nor is some
mechanism to pass this information up to GEOM (to say gsched). And
perhaps this should done fairer to writes as DragonflyBSD's
bioqdisksort() does.

(I've only been able to test an similar patch adapted to 8.x and this
patch on a virtual machine.)

http://www.daemoninthecloset.org/~bryanv/patches/freebsd/ssd_disksort.patch
------=_Part_106_764303500.1350496136349
Content-Type: text/x-patch; name=ssd_disksort.patch
Content-Disposition: attachment; filename=ssd_disksort.patch
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3N5cy9jYW0vYXRhL2F0YV9kYS5jIGIvc3lzL2NhbS9hdGEvYXRhX2RhLmMK
aW5kZXggYmI2M2FjOC4uZmUzMmM3OSAxMDA2NDQKLS0tIGEvc3lzL2NhbS9hdGEvYXRhX2RhLmMK
KysrIGIvc3lzL2NhbS9hdGEvYXRhX2RhLmMKQEAgLTc1LDE4ICs3NSwxOSBAQCB0eXBlZGVmIGVu
dW0gewogfSBhZGFfc3RhdGU7CiAKIHR5cGVkZWYgZW51bSB7Ci0JQURBX0ZMQUdfUEFDS19JTlZB
TElECT0gMHgwMDEsCi0JQURBX0ZMQUdfQ0FOXzQ4QklUCT0gMHgwMDIsCi0JQURBX0ZMQUdfQ0FO
X0ZMVVNIQ0FDSEUJPSAweDAwNCwKLQlBREFfRkxBR19DQU5fTkNRCT0gMHgwMDgsCi0JQURBX0ZM
QUdfQ0FOX0RNQQk9IDB4MDEwLAotCUFEQV9GTEFHX05FRURfT1RBRwk9IDB4MDIwLAotCUFEQV9G
TEFHX1dFTlRfSURMRQk9IDB4MDQwLAotCUFEQV9GTEFHX0NBTl9UUklNCT0gMHgwODAsCi0JQURB
X0ZMQUdfT1BFTgkJPSAweDEwMCwKLQlBREFfRkxBR19TQ1RYX0lOSVQJPSAweDIwMCwKLQlBREFf
RkxBR19DQU5fQ0ZBICAgICAgICA9IDB4NDAwLAotCUFEQV9GTEFHX0NBTl9QT1dFUk1HVCAgID0g
MHg4MDAKKwlBREFfRkxBR19QQUNLX0lOVkFMSUQJPSAweDAwMDEsCisJQURBX0ZMQUdfQ0FOXzQ4
QklUCT0gMHgwMDAyLAorCUFEQV9GTEFHX0NBTl9GTFVTSENBQ0hFCT0gMHgwMDA0LAorCUFEQV9G
TEFHX0NBTl9OQ1EJPSAweDAwMDgsCisJQURBX0ZMQUdfQ0FOX0RNQQk9IDB4MDAxMCwKKwlBREFf
RkxBR19ORUVEX09UQUcJPSAweDAwMjAsCisJQURBX0ZMQUdfV0VOVF9JRExFCT0gMHgwMDQwLAor
CUFEQV9GTEFHX0NBTl9UUklNCT0gMHgwMDgwLAorCUFEQV9GTEFHX09QRU4JCT0gMHgwMTAwLAor
CUFEQV9GTEFHX1NDVFhfSU5JVAk9IDB4MDIwMCwKKwlBREFfRkxBR19DQU5fQ0ZBICAgICAgICA9
IDB4MDQwMCwKKwlBREFfRkxBR19DQU5fUE9XRVJNR1QgICA9IDB4MDgwMCwKKwlBREFfRkxBR19O
T19ESVNLU09SVAk9IDB4MTAwMAogfSBhZGFfZmxhZ3M7CiAKIHR5cGVkZWYgZW51bSB7CkBAIC01
MzUsNiArNTM2LDcgQEAgYWRhc3RyYXRlZ3koc3RydWN0IGJpbyAqYnApCiB7CiAJc3RydWN0IGNh
bV9wZXJpcGggKnBlcmlwaDsKIAlzdHJ1Y3QgYWRhX3NvZnRjICpzb2Z0YzsKKwlzdHJ1Y3QgYmlv
X3F1ZXVlX2hlYWQgKmJpb3E7CiAJCiAJcGVyaXBoID0gKHN0cnVjdCBjYW1fcGVyaXBoICopYnAt
PmJpb19kaXNrLT5kX2RydjE7CiAJaWYgKHBlcmlwaCA9PSBOVUxMKSB7CkBAIC01NTksMTEgKzU2
MSwxNCBAQCBhZGFzdHJhdGVneShzdHJ1Y3QgYmlvICpicCkKIAkvKgogCSAqIFBsYWNlIGl0IGlu
IHRoZSBxdWV1ZSBvZiBkaXNrIGFjdGl2aXRpZXMgZm9yIHRoaXMgZGlzawogCSAqLwotCWlmIChi
cC0+YmlvX2NtZCA9PSBCSU9fREVMRVRFICYmCi0JICAgIChzb2Z0Yy0+ZmxhZ3MgJiBBREFfRkxB
R19DQU5fVFJJTSkpCi0JCWJpb3FfZGlza3NvcnQoJnNvZnRjLT50cmltX3F1ZXVlLCBicCk7CisJ
aWYgKGJwLT5iaW9fY21kID09IEJJT19ERUxFVEUgJiYgKHNvZnRjLT5mbGFncyAmIEFEQV9GTEFH
X0NBTl9UUklNKSkKKwkJYmlvcSA9ICZzb2Z0Yy0+dHJpbV9xdWV1ZTsKIAllbHNlCi0JCWJpb3Ff
ZGlza3NvcnQoJnNvZnRjLT5iaW9fcXVldWUsIGJwKTsKKwkJYmlvcSA9ICZzb2Z0Yy0+YmlvX3F1
ZXVlOworCWlmIChzb2Z0Yy0+ZmxhZ3MgJiBBREFfRkxBR19OT19ESVNLU09SVCkKKwkJYmlvcV9p
bnNlcnRfdGFpbChiaW9xLCBicCk7CisJZWxzZQorCQliaW9xX2Rpc2tzb3J0KGJpb3EsIGJwKTsK
IAogCS8qCiAJICogU2NoZWR1bGUgb3Vyc2VsdmVzIGZvciBwZXJmb3JtaW5nIHRoZSB3b3JrLgpA
QCAtOTg1LDYgKzk5MCw5IEBAIGFkYXJlZ2lzdGVyKHN0cnVjdCBjYW1fcGVyaXBoICpwZXJpcGgs
IHZvaWQgKmFyZykKIAlpZiAoY2dkLT5pZGVudF9kYXRhLnN1cHBvcnQuY29tbWFuZDIgJiBBVEFf
U1VQUE9SVF9DRkEpCiAJCXNvZnRjLT5mbGFncyB8PSBBREFfRkxBR19DQU5fQ0ZBOwogCisJaWYg
KGNnZC0+aWRlbnRfZGF0YS5tZWRpYV9yb3RhdGlvbl9yYXRlID09IDEpCisJCXNvZnRjLT5mbGFn
cyB8PSBBREFfRkxBR19OT19ESVNLU09SVDsKKwogCXBlcmlwaC0+c29mdGMgPSBzb2Z0YzsKIAog
CS8qCmRpZmYgLS1naXQgYS9zeXMvY2FtL3Njc2kvc2NzaV9hbGwuYyBiL3N5cy9jYW0vc2NzaS9z
Y3NpX2FsbC5jCmluZGV4IGEzN2FlMTkuLjFlNTVmOGIgMTAwNjQ0Ci0tLSBhL3N5cy9jYW0vc2Nz
aS9zY3NpX2FsbC5jCisrKyBiL3N5cy9jYW0vc2NzaS9zY3NpX2FsbC5jCkBAIC00MCw2ICs0MCw5
IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KICNpbmNs
dWRlIDxzeXMvbGlia2Vybi5oPgogI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KKyNpbmNsdWRlIDxz
eXMvbG9jay5oPgorI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KKyNpbmNsdWRlIDxzeXMvbXV0ZXgu
aD4KICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAjZWxzZQogI2luY2x1ZGUgPGVycm5vLmg+CkBA
IC01MSw3ICs1NCwxMSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8Y2FtL2Nh
bS5oPgogI2luY2x1ZGUgPGNhbS9jYW1fY2NiLmg+CiAjaW5jbHVkZSA8Y2FtL2NhbV9xdWV1ZS5o
PgorI2luY2x1ZGUgPGNhbS9jYW1fcGVyaXBoLmg+CiAjaW5jbHVkZSA8Y2FtL2NhbV94cHQuaD4K
KyNpbmNsdWRlIDxjYW0vY2FtX3hwdF9zaW0uaD4KKyNpbmNsdWRlIDxjYW0vY2FtX3hwdF9wZXJp
cGguaD4KKyNpbmNsdWRlIDxjYW0vY2FtX3hwdF9pbnRlcm5hbC5oPgogI2luY2x1ZGUgPGNhbS9z
Y3NpL3Njc2lfYWxsLmg+CiAjaW5jbHVkZSA8c3lzL3NidWYuaD4KICNpZm5kZWYgX0tFUk5FTApA
QCAtNjE1OSw2ICs2MTY2LDI4IEBAIHNjc2lfZGV2aWRfbWF0Y2godWludDhfdCAqbGhzLCBzaXpl
X3QgbGhzX2xlbiwgdWludDhfdCAqcmhzLCBzaXplX3QgcmhzX2xlbikKIAlyZXR1cm4gKC0xKTsK
IH0KIAoraW50CitzY3NpX3ZwZF9wYWdlX3N1cHBvcnRlZChzdHJ1Y3QgY2FtX3BlcmlwaCAqcGVy
aXBoLCB1aW50OF90IHBhZ2VfaWQpCit7CisJc3RydWN0IGNhbV9lZCAqZGV2aWNlOworCXN0cnVj
dCBzY3NpX3ZwZF9zdXBwb3J0ZWRfcGFnZXMgKnZwZHM7CisJaW50IGksIG51bV9wYWdlczsKKwor
CWRldmljZSA9IHBlcmlwaC0+cGF0aC0+ZGV2aWNlOworCXZwZHMgPSAoc3RydWN0IHNjc2lfdnBk
X3N1cHBvcnRlZF9wYWdlcyAqKWRldmljZS0+c3VwcG9ydGVkX3ZwZHM7CisKKwlpZiAodnBkcyAh
PSBOVUxMKSB7CisJCW51bV9wYWdlcyA9IGRldmljZS0+c3VwcG9ydGVkX3ZwZHNfbGVuIC0KKwkJ
CVNWUERfU1VQUE9SVEVEX1BBR0VTX0hEUl9MRU47CisJCWZvciAoaSA9IDA7IGkgPCBudW1fcGFn
ZXM7IGkrKykgeworCQkJaWYgKHZwZHMtPnBhZ2VfbGlzdFtpXSA9PSBwYWdlX2lkKQorCQkJCXJl
dHVybiAoMSk7CisJCX0KKwl9CisKKwlyZXR1cm4gKDApOworfQorCiAjaWZkZWYgX0tFUk5FTAog
c3RhdGljIHZvaWQKIGluaXRfc2NzaV9kZWxheSh2b2lkKQpkaWZmIC0tZ2l0IGEvc3lzL2NhbS9z
Y3NpL3Njc2lfYWxsLmggYi9zeXMvY2FtL3Njc2kvc2NzaV9hbGwuaAppbmRleCAwNjkzZTFjLi44
YzJjZjQxIDEwMDY0NAotLS0gYS9zeXMvY2FtL3Njc2kvc2NzaV9hbGwuaAorKysgYi9zeXMvY2Ft
L3Njc2kvc2NzaV9hbGwuaApAQCAtMTM5Miw2ICsxMzkyLDE1IEBAIHN0cnVjdCBzY3NpX3ZwZF9p
ZF9zY3NpX25hbWUKIAl1aW50OF90IG5hbWVfc3RyaW5nWzI1Nl07CiB9OwogCitzdHJ1Y3Qgc2Nz
aV92cGRfYmxvY2tfY2hhcmFjdGVyaXN0aWNzCit7CisJdWludDhfdCBkZXZpY2U7CisJdWludDhf
dCBwYWdlX2NvZGU7CisjZGVmaW5lIFNWUERfQkxPQ0tfQ0hBUkFDVEVSSVNUSUNTCTB4QjEKKwl1
aW50OF90IGxlbmd0aFsyXTsKKwl1aW50OF90IHJvdGF0aW9uX3JhdGVbMl07Cit9OworCiBzdHJ1
Y3Qgc2NzaV9zZXJ2aWNlX2FjdGlvbl9pbgogewogCXVpbnQ4X3Qgb3Bjb2RlOwpAQCAtMjM4Nyw2
ICsyMzk2LDkgQEAgaW50CQlzY3NpX3N0YXRpY19pbnF1aXJ5X21hdGNoKGNhZGRyX3QgaW5xYnVm
ZmVyLAogaW50CQlzY3NpX2RldmlkX21hdGNoKHVpbnQ4X3QgKnJocywgc2l6ZV90IHJoc19sZW4s
CiAJCQkJIHVpbnQ4X3QgKmxocywgc2l6ZV90IGxoc19sZW4pOwogCitpbnQgCQlzY3NpX3ZwZF9w
YWdlX3N1cHBvcnRlZChzdHJ1Y3QgY2FtX3BlcmlwaCAqcGVyaXBoLAorCQkJCQl1aW50OF90IHBh
Z2VfaWQpOworCiB2b2lkIHNjc2lfZXh0cmFjdF9zZW5zZShzdHJ1Y3Qgc2NzaV9zZW5zZV9kYXRh
ICpzZW5zZSwgaW50ICplcnJvcl9jb2RlLAogCQkJaW50ICpzZW5zZV9rZXksIGludCAqYXNjLCBp
bnQgKmFzY3EpOwogaW50IHNjc2lfZXh0cmFjdF9zZW5zZV9jY2IodW5pb24gY2NiICpjY2IsIGlu
dCAqZXJyb3JfY29kZSwgaW50ICpzZW5zZV9rZXksCmRpZmYgLS1naXQgYS9zeXMvY2FtL3Njc2kv
c2NzaV9kYS5jIGIvc3lzL2NhbS9zY3NpL3Njc2lfZGEuYwppbmRleCBhZWEyY2QzLi45ZGM5NmI0
IDEwMDY0NAotLS0gYS9zeXMvY2FtL3Njc2kvc2NzaV9kYS5jCisrKyBiL3N5cy9jYW0vc2NzaS9z
Y3NpX2RhLmMKQEAgLTczLDE4ICs3MywxOSBAQCB0eXBlZGVmIGVudW0gewogfSBkYV9zdGF0ZTsK
IAogdHlwZWRlZiBlbnVtIHsKLQlEQV9GTEFHX1BBQ0tfSU5WQUxJRAk9IDB4MDAxLAotCURBX0ZM
QUdfTkVXX1BBQ0sJPSAweDAwMiwKLQlEQV9GTEFHX1BBQ0tfTE9DS0VECT0gMHgwMDQsCi0JREFf
RkxBR19QQUNLX1JFTU9WQUJMRQk9IDB4MDA4LAotCURBX0ZMQUdfU0FXX01FRElBCT0gMHgwMTAs
Ci0JREFfRkxBR19ORUVEX09UQUcJPSAweDAyMCwKLQlEQV9GTEFHX1dFTlRfSURMRQk9IDB4MDQw
LAotCURBX0ZMQUdfUkVUUllfVUEJPSAweDA4MCwKLQlEQV9GTEFHX09QRU4JCT0gMHgxMDAsCi0J
REFfRkxBR19TQ1RYX0lOSVQJPSAweDIwMCwKLQlEQV9GTEFHX0NBTl9SQzE2CT0gMHg0MDAsCi0J
REFfRkxBR19QUk9CRUQJCT0gMHg4MDAJCQorCURBX0ZMQUdfUEFDS19JTlZBTElECT0gMHgwMDAx
LAorCURBX0ZMQUdfTkVXX1BBQ0sJPSAweDAwMDIsCisJREFfRkxBR19QQUNLX0xPQ0tFRAk9IDB4
MDAwNCwKKwlEQV9GTEFHX1BBQ0tfUkVNT1ZBQkxFCT0gMHgwMDA4LAorCURBX0ZMQUdfU0FXX01F
RElBCT0gMHgwMDEwLAorCURBX0ZMQUdfTkVFRF9PVEFHCT0gMHgwMDIwLAorCURBX0ZMQUdfV0VO
VF9JRExFCT0gMHgwMDQwLAorCURBX0ZMQUdfUkVUUllfVUEJPSAweDAwODAsCisJREFfRkxBR19P
UEVOCQk9IDB4MDEwMCwKKwlEQV9GTEFHX1NDVFhfSU5JVAk9IDB4MDIwMCwKKwlEQV9GTEFHX0NB
Tl9SQzE2CT0gMHgwNDAwLAorCURBX0ZMQUdfUFJPQkVECQk9IDB4MDgwMCwKKwlEQV9GTEFHX05P
X0RJU0tTT1JUCT0gMHgxMDAwLAogfSBkYV9mbGFnczsKIAogdHlwZWRlZiBlbnVtIHsKQEAgLTg1
NSw2ICs4NTYsNyBAQCBzdGF0aWMgIGludAkJZGFlcnJvcih1bmlvbiBjY2IgKmNjYiwgdV9pbnQz
Ml90IGNhbV9mbGFncywKIAkJCQl1X2ludDMyX3Qgc2Vuc2VfZmxhZ3MpOwogc3RhdGljIHZvaWQJ
CWRhcHJldmVudChzdHJ1Y3QgY2FtX3BlcmlwaCAqcGVyaXBoLCBpbnQgYWN0aW9uKTsKIHN0YXRp
YyB2b2lkCQlkYXJlcHJvYmUoc3RydWN0IGNhbV9wZXJpcGggKnBlcmlwaCk7CitzdGF0aWMgdm9p
ZAkJZGFpc3NvbGlkc3RhdGUoc3RydWN0IGNhbV9wZXJpcGggKnBlcmlwaCk7CiBzdGF0aWMgdm9p
ZAkJZGFzZXRnZW9tKHN0cnVjdCBjYW1fcGVyaXBoICpwZXJpcGgsIHVpbnQzMl90IGJsb2NrX2xl
biwKIAkJCQkgIHVpbnQ2NF90IG1heHNlY3RvciwKIAkJCQkgIHN0cnVjdCBzY3NpX3JlYWRfY2Fw
YWNpdHlfZGF0YV9sb25nICpyY2FwbG9uZywKQEAgLTk4MCw2ICs5ODIsOSBAQCBkYW9wZW4oc3Ry
dWN0IGRpc2sgKmRwKQogCQlkYXByZXZlbnQocGVyaXBoLCBQUl9QUkVWRU5UKTsKIAogCWlmIChl
cnJvciA9PSAwKQorCQlkYWlzc29saWRzdGF0ZShwZXJpcGgpOworCisJaWYgKGVycm9yID09IDAp
CiAJCXNvZnRjLT5mbGFncyB8PSBEQV9GTEFHX1NBV19NRURJQTsKIAogCWNhbV9wZXJpcGhfdW5o
b2xkKHBlcmlwaCk7CkBAIC0xMDg2LDYgKzEwOTEsNyBAQCBkYXN0cmF0ZWd5KHN0cnVjdCBiaW8g
KmJwKQogewogCXN0cnVjdCBjYW1fcGVyaXBoICpwZXJpcGg7CiAJc3RydWN0IGRhX3NvZnRjICpz
b2Z0YzsKKwlzdHJ1Y3QgYmlvX3F1ZXVlX2hlYWQgKmJpb3E7CiAJCiAJcGVyaXBoID0gKHN0cnVj
dCBjYW1fcGVyaXBoICopYnAtPmJpb19kaXNrLT5kX2RydjE7CiAJaWYgKHBlcmlwaCA9PSBOVUxM
KSB7CkBAIC0xMTExLDE2ICsxMTE3LDI0IEBAIGRhc3RyYXRlZ3koc3RydWN0IGJpbyAqYnApCiAJ
ICogUGxhY2UgaXQgaW4gdGhlIHF1ZXVlIG9mIGRpc2sgYWN0aXZpdGllcyBmb3IgdGhpcyBkaXNr
CiAJICovCiAJaWYgKGJwLT5iaW9fY21kID09IEJJT19ERUxFVEUpIHsKLQkJaWYgKGJwLT5iaW9f
YmNvdW50ID09IDApCisJCWlmIChicC0+YmlvX2Jjb3VudCA9PSAwKSB7CiAJCQliaW9kb25lKGJw
KTsKLQkJZWxzZQotCQkJYmlvcV9kaXNrc29ydCgmc29mdGMtPmRlbGV0ZV9xdWV1ZSwgYnApOwor
CQkJZ290byBzY2hlZHVsZTsKKwkJfQorCisJCWJpb3EgPSAmc29mdGMtPmRlbGV0ZV9xdWV1ZTsK
IAl9IGVsc2UKLQkJYmlvcV9kaXNrc29ydCgmc29mdGMtPmJpb19xdWV1ZSwgYnApOworCQliaW9x
ID0gJnNvZnRjLT5iaW9fcXVldWU7CisKKwlpZiAoc29mdGMtPmZsYWdzICYgREFfRkxBR19OT19E
SVNLU09SVCkKKwkJYmlvcV9pbnNlcnRfdGFpbChiaW9xLCBicCk7CisJZWxzZQorCQliaW9xX2Rp
c2tzb3J0KGJpb3EsIGJwKTsKIAogCS8qCiAJICogU2NoZWR1bGUgb3Vyc2VsdmVzIGZvciBwZXJm
b3JtaW5nIHRoZSB3b3JrLgogCSAqLworc2NoZWR1bGU6CiAJZGFzY2hlZHVsZShwZXJpcGgpOwog
CWNhbV9wZXJpcGhfdW5sb2NrKHBlcmlwaCk7CiAKQEAgLTI1MzksNiArMjU1Myw0OCBAQCBkYXJl
cHJvYmUoc3RydWN0IGNhbV9wZXJpcGggKnBlcmlwaCkKIAl4cHRfc2NoZWR1bGUocGVyaXBoLCBD
QU1fUFJJT1JJVFlfREVWKTsKIH0KIAorc3RhdGljIHZvaWQKK2RhaXNzb2xpZHN0YXRlKHN0cnVj
dCBjYW1fcGVyaXBoICpwZXJpcGgpCit7CisJc3RydWN0IGRhX3NvZnRjICpzb2Z0YzsKKwlzdHJ1
Y3Qgc2NzaV92cGRfYmxvY2tfY2hhcmFjdGVyaXN0aWNzICp2cGQ7CisJdW5pb24gY2NiICpjY2I7
CisJaW50IGVycm9yOworCisJc29mdGMgPSAoc3RydWN0IGRhX3NvZnRjICopcGVyaXBoLT5zb2Z0
YzsKKworCWlmIChzY3NpX3ZwZF9wYWdlX3N1cHBvcnRlZChwZXJpcGgsIFNWUERfQkxPQ0tfQ0hB
UkFDVEVSSVNUSUNTKSA9PSAwKQorCQlyZXR1cm47CisKKwl2cGQgPSBtYWxsb2Moc2l6ZW9mKCp2
cGQpLCBNX1NDU0lEQSwgTV9OT1dBSVR8TV9aRVJPKTsKKwlpZiAodnBkID09IE5VTEwpIHsKKwkJ
eHB0X3ByaW50KHBlcmlwaC0+cGF0aCwKKwkJICAgICJDYW5ub3QgYWxsb2NhdGUgYmxvY2sgY2hh
cmFjdGVyaXN0aWNzIFZQRCBwYWdlXG4iKTsKKwkJcmV0dXJuOworCX0KKworCWNjYiA9IGNhbV9w
ZXJpcGhfZ2V0Y2NiKHBlcmlwaCwgQ0FNX1BSSU9SSVRZX05PUk1BTCk7CisJc2NzaV9pbnF1aXJ5
KCZjY2ItPmNzaW8sCisJCSAgICAgLypyZXRyaWVzKi80LAorCQkgICAgIGRhZG9uZSwKKwkJICAg
ICBNU0dfU0lNUExFX1FfVEFHLAorCQkgICAgICh1aW50OF90ICopdnBkLAorCQkgICAgIHNpemVv
ZigqdnBkKSwKKwkJICAgICAvKmV2cGQqL1RSVUUsCisJCSAgICAgU1ZQRF9CTE9DS19DSEFSQUNU
RVJJU1RJQ1MsCisJCSAgICAgU1NEX01JTl9TSVpFLAorCQkgICAgIC8qdGltZW91dCovNjAgKiAx
MDAwKTsKKworCWVycm9yID0gY2FtX3BlcmlwaF9ydW5jY2IoY2NiLCBkYWVycm9yLCBDQU1fUkVU
UllfU0VMVE8sCisJICAgIFNGX1JFVFJZX1VBIHwgU0ZfUVVJRVRfSVIsIHNvZnRjLT5kaXNrLT5k
X2RldnN0YXQpOworCXhwdF9yZWxlYXNlX2NjYihjY2IpOworCisJaWYgKGVycm9yID09IDAgJiYg
c2NzaV8yYnRvdWwodnBkLT5yb3RhdGlvbl9yYXRlKSA9PSAxKQorCQlzb2Z0Yy0+ZmxhZ3MgfD0g
REFfRkxBR19OT19ESVNLU09SVDsKKworCWZyZWUodnBkLCBNX1NDU0lEQSk7Cit9CisKIHN0YXRp
YyBpbnQKIGRhZXJyb3IodW5pb24gY2NiICpjY2IsIHVfaW50MzJfdCBjYW1fZmxhZ3MsIHVfaW50
MzJfdCBzZW5zZV9mbGFncykKIHsKZGlmZiAtLWdpdCBhL3N5cy9jYW0vc2NzaS9zY3NpX3hwdC5j
IGIvc3lzL2NhbS9zY3NpL3Njc2lfeHB0LmMKaW5kZXggYzM4MWVmYy4uMDJhZTY3OSAxMDA2NDQK
LS0tIGEvc3lzL2NhbS9zY3NpL3Njc2lfeHB0LmMKKysrIGIvc3lzL2NhbS9zY3NpL3Njc2lfeHB0
LmMKQEAgLTU1Niw3ICs1NTYsNiBAQCBzdGF0aWMgY29uc3QgaW50IHNjc2lfcXVpcmtfdGFibGVf
c2l6ZSA9CiBzdGF0aWMgY2FtX3N0YXR1cwlwcm9iZXJlZ2lzdGVyKHN0cnVjdCBjYW1fcGVyaXBo
ICpwZXJpcGgsCiAJCQkJICAgICAgdm9pZCAqYXJnKTsKIHN0YXRpYyB2b2lkCSBwcm9iZXNjaGVk
dWxlKHN0cnVjdCBjYW1fcGVyaXBoICpwcm9iZV9wZXJpcGgpOwotc3RhdGljIGludAkgZGV2aWNl
X2hhc192cGQoc3RydWN0IGNhbV9lZCAqZGV2aWNlLCB1aW50OF90IHBhZ2VfaWQpOwogc3RhdGlj
IHZvaWQJIHByb2Jlc3RhcnQoc3RydWN0IGNhbV9wZXJpcGggKnBlcmlwaCwgdW5pb24gY2NiICpz
dGFydF9jY2IpOwogc3RhdGljIHZvaWQJIHByb2JlcmVxdWVzdGRlZmF1bHRuZWdvdGlhdGlvbihz
dHJ1Y3QgY2FtX3BlcmlwaCAqcGVyaXBoKTsKIHN0YXRpYyBpbnQgICAgICAgcHJvYmVyZXF1ZXN0
YmFja29mZihzdHJ1Y3QgY2FtX3BlcmlwaCAqcGVyaXBoLApAQCAtNzA4LDIxICs3MDcsNiBAQCBw
cm9iZXNjaGVkdWxlKHN0cnVjdCBjYW1fcGVyaXBoICpwZXJpcGgpCiAJeHB0X3NjaGVkdWxlKHBl
cmlwaCwgQ0FNX1BSSU9SSVRZX1hQVCk7CiB9CiAKLXN0YXRpYyBpbnQKLWRldmljZV9oYXNfdnBk
KHN0cnVjdCBjYW1fZWQgKmRldmljZSwgdWludDhfdCBwYWdlX2lkKQotewotCWludCBpLCBudW1f
cGFnZXM7Ci0Jc3RydWN0IHNjc2lfdnBkX3N1cHBvcnRlZF9wYWdlcyAqdnBkczsKLQotCXZwZHMg
PSAoc3RydWN0IHNjc2lfdnBkX3N1cHBvcnRlZF9wYWdlcyAqKWRldmljZS0+c3VwcG9ydGVkX3Zw
ZHM7Ci0JbnVtX3BhZ2VzID0gZGV2aWNlLT5zdXBwb3J0ZWRfdnBkc19sZW4gLSBTVlBEX1NVUFBP
UlRFRF9QQUdFU19IRFJfTEVOOwotCWZvciAoaSA9IDA7aSA8IG51bV9wYWdlcztpKyspCi0JCWlm
ICh2cGRzLT5wYWdlX2xpc3RbaV0gPT0gcGFnZV9pZCkKLQkJCXJldHVybiAxOwotCi0JcmV0dXJu
IDA7Ci19Ci0KIHN0YXRpYyB2b2lkCiBwcm9iZXN0YXJ0KHN0cnVjdCBjYW1fcGVyaXBoICpwZXJp
cGgsIHVuaW9uIGNjYiAqc3RhcnRfY2NiKQogewpAQCAtOTEwLDExICs4OTQsOSBAQCBhZ2FpbjoK
IAljYXNlIFBST0JFX0RFVklDRV9JRDoKIAl7CiAJCXN0cnVjdCBzY3NpX3ZwZF9kZXZpY2VfaWQg
KmRldmlkOwotCQlzdHJ1Y3QgY2FtX2VkICpkZXZpY2U7CiAKIAkJZGV2aWQgPSBOVUxMOwotCQlk
ZXZpY2UgPSBwZXJpcGgtPnBhdGgtPmRldmljZTsKLQkJaWYgKGRldmljZV9oYXNfdnBkKGRldmlj
ZSwgU1ZQRF9ERVZJQ0VfSUQpKQorCQlpZiAoc2NzaV92cGRfcGFnZV9zdXBwb3J0ZWQocGVyaXBo
LCBTVlBEX0RFVklDRV9JRCkpCiAJCQlkZXZpZCA9IG1hbGxvYyhTVlBEX0RFVklDRV9JRF9NQVhf
U0laRSwgTV9DQU1YUFQsCiAJCQkgICAgTV9OT1dBSVQgfCBNX1pFUk8pOwogCkBAIC05NTIsNyAr
OTM0LDcgQEAgYWdhaW46CiAJCQlkZXZpY2UtPnNlcmlhbF9udW1fbGVuID0gMDsKIAkJfQogCi0J
CWlmIChkZXZpY2VfaGFzX3ZwZChkZXZpY2UsIFNWUERfVU5JVF9TRVJJQUxfTlVNQkVSKSkKKwkJ
aWYgKHNjc2lfdnBkX3BhZ2Vfc3VwcG9ydGVkKHBlcmlwaCwgU1ZQRF9VTklUX1NFUklBTF9OVU1C
RVIpKQogCQkJc2VyaWFsX2J1ZiA9IChzdHJ1Y3Qgc2NzaV92cGRfdW5pdF9zZXJpYWxfbnVtYmVy
ICopCiAJCQkJbWFsbG9jKHNpemVvZigqc2VyaWFsX2J1ZiksIE1fQ0FNWFBULAogCQkJCSAgICBN
X05PV0FJVHxNX1pFUk8pOwpAQCAtMzA1Niw0ICszMDM4LDMgQEAgc2NzaV9hbm5vdW5jZV9wZXJp
cGgoc3RydWN0IGNhbV9wZXJpcGggKnBlcmlwaCkKIAl9CiAJcHJpbnRmKCJcbiIpOwogfQotCg==

------=_Part_106_764303500.1350496136349--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1780024492.108.1350496136356.JavaMail.root>