Date: Mon, 05 Sep 2005 13:07:43 +0100 From: Gavin Atkinson <gavin.atkinson@ury.york.ac.uk> To: John Baldwin <jhb@freebsd.org> Cc: current@freebsd.org Subject: Re: [PATCH] Locking fixes for tl(4) Message-ID: <1125922064.75892.20.camel@buffy.york.ac.uk> In-Reply-To: <20050904235509.J31032@ury.york.ac.uk> References: <200508311636.49278.jhb@FreeBSD.org> <20050904234626.H31032@ury.york.ac.uk> <20050904235509.J31032@ury.york.ac.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
--=-XZnn/oKYOU/5FzRkHJ9Y Content-Type: text/plain Content-Transfer-Encoding: 7bit On Mon, 2005-09-05 at 00:01 +0100, Gavin Atkinson wrote: > On Sun, 4 Sep 2005, Gavin Atkinson wrote: > > On Wed, 31 Aug 2005, John Baldwin wrote: > > > >> Patch fixes locking for tl(4) and marks it MPSAFE. Please test, thanks! > >> > >> http://www.FreeBSD.org/~jhb/patches/tl_locking.patch > > > > Doesn't work, I'm afraid. Panic on attach: > > ... because tl_hardreset() is called before sc->tl_ifp is allocated. I'm > recompiling now, having moved the if_alloc and related code to before the > first hardreset() call. The attached patch has survived pan average amount of network activity overnight. It's basically your original patch, but with a slight rearrangement in tl_attach() to move the if_alloc() call earlier. Gavin --=-XZnn/oKYOU/5FzRkHJ9Y Content-Disposition: attachment; filename=tl_locking_new.patch Content-Type: text/x-patch; name=tl_locking_new.patch; charset=us-ascii Content-Transfer-Encoding: base64 SW5kZXg6IHNyYy9zeXMvcGNpL2lmX3RsLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvdXNyL2N2 cy9zcmMvc3lzL3BjaS9pZl90bC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMDENCmRpZmYg LXUgLXIxLjEwMSBpZl90bC5jDQotLS0gc3JjL3N5cy9wY2kvaWZfdGwuYwk5IEF1ZyAyMDA1IDEw OjIwOjAyIC0wMDAwCTEuMTAxDQorKysgc3JjL3N5cy9wY2kvaWZfdGwuYwk1IFNlcCAyMDA1IDA3 OjUyOjAzIC0wMDAwDQpAQCAtMjc2LDggKzI3NiwxMCBAQA0KIA0KIHN0YXRpYyB2b2lkIHRsX2lu dHIodm9pZCAqKTsNCiBzdGF0aWMgdm9pZCB0bF9zdGFydChzdHJ1Y3QgaWZuZXQgKik7DQorc3Rh dGljIHZvaWQgdGxfc3RhcnRfbG9ja2VkKHN0cnVjdCBpZm5ldCAqKTsNCiBzdGF0aWMgaW50IHRs X2lvY3RsKHN0cnVjdCBpZm5ldCAqLCB1X2xvbmcsIGNhZGRyX3QpOw0KIHN0YXRpYyB2b2lkIHRs X2luaXQodm9pZCAqKTsNCitzdGF0aWMgdm9pZCB0bF9pbml0X2xvY2tlZChzdHJ1Y3QgdGxfc29m dGMgKik7DQogc3RhdGljIHZvaWQgdGxfc3RvcChzdHJ1Y3QgdGxfc29mdGMgKik7DQogc3RhdGlj IHZvaWQgdGxfd2F0Y2hkb2coc3RydWN0IGlmbmV0ICopOw0KIHN0YXRpYyB2b2lkIHRsX3NodXRk b3duKGRldmljZV90KTsNCkBAIC02NTAsNyArNjUyLDggQEANCiAJaW50CQkJaSwgYWNrOw0KIAlp bnQJCQltaW50ZW4gPSAwOw0KIA0KLQlUTF9MT0NLKHNjKTsNCisJaWYgKHNjLT50bF9pZnAtPmlm X2lucHV0ICE9IE5VTEwpDQorCQlUTF9MT0NLX0FTU0VSVChzYyk7DQogDQogCXRsX21paV9zeW5j KHNjKTsNCiANCkBAIC03MzAsOCArNzMzLDYgQEANCiAJCXRsX2Rpb19zZXRiaXQoc2MsIFRMX05F VFNJTywgVExfU0lPX01JTlRFTik7DQogCX0NCiANCi0JVExfVU5MT0NLKHNjKTsNCi0NCiAJaWYg KGFjaykNCiAJCXJldHVybigxKTsNCiAJcmV0dXJuKDApOw0KQEAgLTc0NSw3ICs3NDYsOCBAQA0K IHsNCiAJaW50CQkJbWludGVuOw0KIA0KLQlUTF9MT0NLKHNjKTsNCisJaWYgKHNjLT50bF9pZnAt PmlmX2lucHV0ICE9IE5VTEwpDQorCQlUTF9MT0NLX0FTU0VSVChzYyk7DQogDQogCXRsX21paV9z eW5jKHNjKTsNCiANCkBAIC03ODksOCArNzkxLDYgQEANCiAJaWYgKG1pbnRlbikNCiAJCXRsX2Rp b19zZXRiaXQoc2MsIFRMX05FVFNJTywgVExfU0lPX01JTlRFTik7DQogDQotCVRMX1VOTE9DSyhz Yyk7DQotDQogCXJldHVybigwKTsNCiB9DQogDQpAQCAtODQwLDcgKzg0MCw4IEBADQogCXN0cnVj dCBtaWlfZGF0YQkJKm1paTsNCiANCiAJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7DQotCVRM X0xPQ0soc2MpOw0KKwlpZiAoc2MtPnRsX2lmcC0+aWZfaW5wdXQgIT0gTlVMTCkNCisJCVRMX0xP Q0tfQVNTRVJUKHNjKTsNCiAJbWlpID0gZGV2aWNlX2dldF9zb2Z0YyhzYy0+dGxfbWlpYnVzKTsN CiANCiAJaWYgKChtaWktPm1paV9tZWRpYV9hY3RpdmUgJiBJRk1fR01BU0spID09IElGTV9GRFgp IHsNCkBAIC04NDgsNyArODQ5LDYgQEANCiAJfSBlbHNlIHsNCiAJCXRsX2Rpb19jbHJiaXQoc2Ms IFRMX05FVENNRCwgVExfQ01EX0RVUExFWCk7DQogCX0NCi0JVExfVU5MT0NLKHNjKTsNCiANCiAJ cmV0dXJuOw0KIH0NCkBAIC0xMTM4LDcgKzExMzgsNyBAQA0KIAl9DQogDQogCW10eF9pbml0KCZz Yy0+dGxfbXR4LCBkZXZpY2VfZ2V0X25hbWV1bml0KGRldiksIE1UWF9ORVRXT1JLX0xPQ0ssDQot CSAgICBNVFhfREVGIHwgTVRYX1JFQ1VSU0UpOw0KKwkgICAgTVRYX0RFRik7DQogDQogCS8qDQog CSAqIE1hcCBjb250cm9sL3N0YXR1cyByZWdpc3RlcnMuDQpAQCAtMTIyMyw2ICsxMjIzLDEzIEBA DQogCWlmICh0LT50bF92aWQgPT0gT0xJQ09NX1ZFTkRPUklEKQ0KIAkJc2MtPnRsX2VlYWRkciA9 IFRMX0VFUFJPTV9FQUREUl9PQzsNCiANCisJaWZwID0gc2MtPnRsX2lmcCA9IGlmX2FsbG9jKElG VF9FVEhFUik7DQorCWlmIChpZnAgPT0gTlVMTCkgew0KKwkJZGV2aWNlX3ByaW50ZihkZXYsICJj YW4gbm90IGlmX2FsbG9jKClcbiIpOw0KKwkJZXJyb3IgPSBFTk9TUEM7DQorCQlnb3RvIGZhaWw7 DQorCX0NCisNCiAJLyogUmVzZXQgdGhlIGFkYXB0ZXIuICovDQogCXRsX3NvZnRyZXNldChzYywg MSk7DQogCXRsX2hhcmRyZXNldChkZXYpOw0KQEAgLTEyMzQsNiArMTI0MSw3IEBADQogCWlmICh0 bF9yZWFkX2VlcHJvbShzYywgZWFkZHIsIHNjLT50bF9lZWFkZHIsIEVUSEVSX0FERFJfTEVOKSkg ew0KIAkJZGV2aWNlX3ByaW50ZihkZXYsICJmYWlsZWQgdG8gcmVhZCBzdGF0aW9uIGFkZHJlc3Nc biIpOw0KIAkJZXJyb3IgPSBFTlhJTzsNCisJCWlmX2ZyZWUoaWZwKTsNCiAJCWdvdG8gZmFpbDsN CiAJfQ0KIA0KQEAgLTEyNTksMjMgKzEyNjcsMTYgQEANCiAgICAgICAgICAgICAgICAgfQ0KICAg ICAgICAgfQ0KIA0KLQlpZnAgPSBzYy0+dGxfaWZwID0gaWZfYWxsb2MoSUZUX0VUSEVSKTsNCi0J aWYgKGlmcCA9PSBOVUxMKSB7DQotCQlkZXZpY2VfcHJpbnRmKGRldiwgImNhbiBub3QgaWZfYWxs b2MoKVxuIik7DQotCQllcnJvciA9IEVOT1NQQzsNCi0JCWdvdG8gZmFpbDsNCi0JfQ0KIAlpZnAt PmlmX3NvZnRjID0gc2M7DQogCWlmX2luaXRuYW1lKGlmcCwgZGV2aWNlX2dldF9uYW1lKGRldiks IGRldmljZV9nZXRfdW5pdChkZXYpKTsNCi0JaWZwLT5pZl9mbGFncyA9IElGRl9CUk9BRENBU1Qg fCBJRkZfU0lNUExFWCB8IElGRl9NVUxUSUNBU1QgfA0KLQkgICAgSUZGX05FRURTR0lBTlQ7DQor CWlmcC0+aWZfZmxhZ3MgPSBJRkZfQlJPQURDQVNUIHwgSUZGX1NJTVBMRVggfCBJRkZfTVVMVElD QVNUOw0KIAlpZnAtPmlmX2lvY3RsID0gdGxfaW9jdGw7DQogCWlmcC0+aWZfc3RhcnQgPSB0bF9z dGFydDsNCiAJaWZwLT5pZl93YXRjaGRvZyA9IHRsX3dhdGNoZG9nOw0KIAlpZnAtPmlmX2luaXQg PSB0bF9pbml0Ow0KIAlpZnAtPmlmX210dSA9IEVUSEVSTVRVOw0KIAlpZnAtPmlmX3NuZC5pZnFf bWF4bGVuID0gVExfVFhfTElTVF9DTlQgLSAxOw0KLQljYWxsb3V0X2hhbmRsZV9pbml0KCZzYy0+ dGxfc3RhdF9jaCk7DQorCWNhbGxvdXRfaW5pdF9tdHgoJnNjLT50bF9zdGF0X2NhbGxvdXQsICZz Yy0+dGxfbXR4LCAwKTsNCiANCiAJLyogUmVzZXQgdGhlIGFkYXB0ZXIgYWdhaW4uICovDQogCXRs X3NvZnRyZXNldChzYywgMSk7DQpAQCAtMTMxMCw3ICsxMzExLDcgQEANCiAJZXRoZXJfaWZhdHRh Y2goaWZwLCBlYWRkcik7DQogDQogCS8qIEhvb2sgaW50ZXJydXB0IGxhc3QgdG8gYXZvaWQgaGF2 aW5nIHRvIGxvY2sgc29mdGMgKi8NCi0JZXJyb3IgPSBidXNfc2V0dXBfaW50cihkZXYsIHNjLT50 bF9pcnEsIElOVFJfVFlQRV9ORVQsDQorCWVycm9yID0gYnVzX3NldHVwX2ludHIoZGV2LCBzYy0+ dGxfaXJxLCBJTlRSX1RZUEVfTkVUIHwgSU5UUl9NUFNBRkUsDQogCSAgICB0bF9pbnRyLCBzYywg JnNjLT50bF9pbnRyaGFuZCk7DQogDQogCWlmIChlcnJvcikgew0KQEAgLTEzNDMsMTIgKzEzNDQs MTQgQEANCiANCiAJc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7DQogCUtBU1NFUlQobXR4X2lu aXRpYWxpemVkKCZzYy0+dGxfbXR4KSwgKCJ0bCBtdXRleCBub3QgaW5pdGlhbGl6ZWQiKSk7DQot CVRMX0xPQ0soc2MpOw0KIAlpZnAgPSBzYy0+dGxfaWZwOw0KIA0KIAkvKiBUaGVzZSBzaG91bGQg b25seSBiZSBhY3RpdmUgaWYgYXR0YWNoIHN1Y2NlZWRlZCAqLw0KIAlpZiAoZGV2aWNlX2lzX2F0 dGFjaGVkKGRldikpIHsNCisJCVRMX0xPQ0soc2MpOw0KIAkJdGxfc3RvcChzYyk7DQorCQlUTF9V TkxPQ0soc2MpOw0KKwkJY2FsbG91dF9kcmFpbigmc2MtPnRsX3N0YXRfY2FsbG91dCk7DQogCQll dGhlcl9pZmRldGFjaChpZnApOw0KIAkJaWZfZnJlZShpZnApOw0KIAl9DQpAQCAtMTM2OCw3ICsx MzcxLDYgQEANCiAJaWYgKHNjLT50bF9yZXMpDQogCQlidXNfcmVsZWFzZV9yZXNvdXJjZShkZXYs IFRMX1JFUywgVExfUklELCBzYy0+dGxfcmVzKTsNCiANCi0JVExfVU5MT0NLKHNjKTsNCiAJbXR4 X2Rlc3Ryb3koJnNjLT50bF9tdHgpOw0KIA0KIAlyZXR1cm4oMCk7DQpAQCAtMTQ0NCwxNiArMTQ0 NiwxMCBAQA0KIHsNCiAJc3RydWN0IG1idWYJCSptX25ldyA9IE5VTEw7DQogDQotCU1HRVRIRFIo bV9uZXcsIE1fRE9OVFdBSVQsIE1UX0RBVEEpOw0KKwltX25ldyA9IG1fZ2V0Y2woTV9ET05UV0FJ VCwgTVRfREFUQSwgTV9QS1RIRFIpOw0KIAlpZiAobV9uZXcgPT0gTlVMTCkNCiAJCXJldHVybihF Tk9CVUZTKTsNCiANCi0JTUNMR0VUKG1fbmV3LCBNX0RPTlRXQUlUKTsNCi0JaWYgKCEobV9uZXct Pm1fZmxhZ3MgJiBNX0VYVCkpIHsNCi0JCW1fZnJlZW0obV9uZXcpOw0KLQkJcmV0dXJuKEVOT0JV RlMpOw0KLQl9DQotDQogI2lmZGVmIF9fYWxwaGFfXw0KIAltX25ldy0+bV9kYXRhICs9IDI7DQog I2VuZGlmDQpAQCAtMTY5MSw3ICsxNjg3LDcgQEANCiANCiAJdGxfc29mdHJlc2V0KHNjLCAxKTsN CiAJdGxfc3RvcChzYyk7DQotCXRsX2luaXQoc2MpOw0KKwl0bF9pbml0X2xvY2tlZChzYyk7DQog CUNNRF9TRVQoc2MsIFRMX0NNRF9JTlRTT04pOw0KIA0KIAlyZXR1cm4oMCk7DQpAQCAtMTc4NCw3 ICsxNzgwLDcgQEANCiAJfQ0KIA0KIAlpZiAoaWZwLT5pZl9zbmQuaWZxX2hlYWQgIT0gTlVMTCkN Ci0JCXRsX3N0YXJ0KGlmcCk7DQorCQl0bF9zdGFydF9sb2NrZWQoaWZwKTsNCiANCiAJVExfVU5M T0NLKHNjKTsNCiANCkBAIC0xODA0LDcgKzE4MDAsNyBAQA0KIAliemVybygoY2hhciAqKSZ0bF9z dGF0cywgc2l6ZW9mKHN0cnVjdCB0bF9zdGF0cykpOw0KIA0KIAlzYyA9IHhzYzsNCi0JVExfTE9D SyhzYyk7DQorCVRMX0xPQ0tfQVNTRVJUKHNjKTsNCiAJaWZwID0gc2MtPnRsX2lmcDsNCiANCiAJ cCA9ICh1X2ludDMyX3QgKikmdGxfc3RhdHM7DQpAQCAtMTgzOCwxNSArMTgzNCwxMyBAQA0KIAkJ fQ0KIAl9DQogDQotCXNjLT50bF9zdGF0X2NoID0gdGltZW91dCh0bF9zdGF0c191cGRhdGUsIHNj LCBoeik7DQorCWNhbGxvdXRfcmVzZXQoJnNjLT50bF9zdGF0X2NhbGxvdXQsIGh6LCB0bF9zdGF0 c191cGRhdGUsIHNjKTsNCiANCiAJaWYgKCFzYy0+dGxfYml0cmF0ZSkgew0KIAkJbWlpID0gZGV2 aWNlX2dldF9zb2Z0YyhzYy0+dGxfbWlpYnVzKTsNCiAJCW1paV90aWNrKG1paSk7DQogCX0NCiAN Ci0JVExfVU5MT0NLKHNjKTsNCi0NCiAJcmV0dXJuOw0KIH0NCiANCkBAIC0xOTU3LDEyICsxOTUx LDI0IEBADQogCXN0cnVjdCBpZm5ldAkJKmlmcDsNCiB7DQogCXN0cnVjdCB0bF9zb2Z0YwkJKnNj Ow0KKw0KKwlzYyA9IGlmcC0+aWZfc29mdGM7DQorCVRMX0xPQ0soc2MpOw0KKwl0bF9zdGFydF9s b2NrZWQoaWZwKTsNCisJVExfVU5MT0NLKHNjKTsNCit9DQorDQorc3RhdGljIHZvaWQNCit0bF9z dGFydF9sb2NrZWQoaWZwKQ0KKwlzdHJ1Y3QgaWZuZXQJCSppZnA7DQorew0KKwlzdHJ1Y3QgdGxf c29mdGMJCSpzYzsNCiAJc3RydWN0IG1idWYJCSptX2hlYWQgPSBOVUxMOw0KIAl1X2ludDMyX3QJ CWNtZDsNCiAJc3RydWN0IHRsX2NoYWluCQkqcHJldiA9IE5VTEwsICpjdXJfdHggPSBOVUxMLCAq c3RhcnRfdHg7DQogDQogCXNjID0gaWZwLT5pZl9zb2Z0YzsNCi0JVExfTE9DSyhzYyk7DQorCVRM X0xPQ0tfQVNTRVJUKHNjKTsNCiANCiAJLyoNCiAJICogQ2hlY2sgZm9yIGFuIGF2YWlsYWJsZSBx dWV1ZSBzbG90LiBJZiB0aGVyZSBhcmUgbm9uZSwNCkBAIC0xOTcwLDcgKzE5NzYsNiBAQA0KIAkg Ki8NCiAJaWYgKHNjLT50bF9jZGF0YS50bF90eF9mcmVlID09IE5VTEwpIHsNCiAJCWlmcC0+aWZf ZHJ2X2ZsYWdzIHw9IElGRl9EUlZfT0FDVElWRTsNCi0JCVRMX1VOTE9DSyhzYyk7DQogCQlyZXR1 cm47DQogCX0NCiANCkBAIC0yMDA3LDEwICsyMDEyLDggQEANCiAJLyoNCiAJICogSWYgdGhlcmUg YXJlIG5vIHBhY2tldHMgcXVldWVkLCBiYWlsLg0KIAkgKi8NCi0JaWYgKGN1cl90eCA9PSBOVUxM KSB7DQotCQlUTF9VTkxPQ0soc2MpOw0KKwlpZiAoY3VyX3R4ID09IE5VTEwpDQogCQlyZXR1cm47 DQotCX0NCiANCiAJLyoNCiAJICogVGhhdCdzIGFsbCB3ZSBjYW4gc3RhbmRzLCB3ZSBjYW4ndCBz dGFuZHMgbm8gbW9yZS4NCkBAIC0yMDQwLDcgKzIwNDMsNiBAQA0KIAkgKiBTZXQgYSB0aW1lb3V0 IGluIGNhc2UgdGhlIGNoaXAgZ29lcyBvdXQgdG8gbHVuY2guDQogCSAqLw0KIAlpZnAtPmlmX3Rp bWVyID0gNTsNCi0JVExfVU5MT0NLKHNjKTsNCiANCiAJcmV0dXJuOw0KIH0NCkBAIC0yMDUwLDEw ICsyMDUyLDIwIEBADQogCXZvaWQJCQkqeHNjOw0KIHsNCiAJc3RydWN0IHRsX3NvZnRjCQkqc2Mg PSB4c2M7DQorDQorCVRMX0xPQ0soc2MpOw0KKwl0bF9pbml0X2xvY2tlZChzYyk7DQorCVRMX1VO TE9DSyhzYyk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQordGxfaW5pdF9sb2NrZWQoc2MpDQorCXN0 cnVjdCB0bF9zb2Z0YwkJKnNjOw0KK3sNCiAJc3RydWN0IGlmbmV0CQkqaWZwID0gc2MtPnRsX2lm cDsNCiAJc3RydWN0IG1paV9kYXRhCQkqbWlpOw0KIA0KLQlUTF9MT0NLKHNjKTsNCisJVExfTE9D S19BU1NFUlQoc2MpOw0KIA0KIAlpZnAgPSBzYy0+dGxfaWZwOw0KIA0KQEAgLTIwOTgsNyArMjEx MCw2IEBADQogCQlpZl9wcmludGYoaWZwLA0KIAkJICAgICJpbml0aWFsaXphdGlvbiBmYWlsZWQ6 IG5vIG1lbW9yeSBmb3IgcnggYnVmZmVyc1xuIik7DQogCQl0bF9zdG9wKHNjKTsNCi0JCVRMX1VO TE9DSyhzYyk7DQogCQlyZXR1cm47DQogCX0NCiANCkBAIC0yMTI4LDggKzIxMzksNyBAQA0KIAlp ZnAtPmlmX2Rydl9mbGFncyAmPSB+SUZGX0RSVl9PQUNUSVZFOw0KIA0KIAkvKiBTdGFydCB0aGUg c3RhdHMgdXBkYXRlIGNvdW50ZXIgKi8NCi0Jc2MtPnRsX3N0YXRfY2ggPSB0aW1lb3V0KHRsX3N0 YXRzX3VwZGF0ZSwgc2MsIGh6KTsNCi0JVExfVU5MT0NLKHNjKTsNCisJY2FsbG91dF9yZXNldCgm c2MtPnRsX3N0YXRfY2FsbG91dCwgaHosIHRsX3N0YXRzX3VwZGF0ZSwgc2MpOw0KIA0KIAlyZXR1 cm47DQogfQ0KQEAgLTIxNDYsMTIgKzIxNTYsMTQgQEANCiANCiAJc2MgPSBpZnAtPmlmX3NvZnRj Ow0KIA0KKwlUTF9MT0NLKHNjKTsNCiAJaWYgKHNjLT50bF9iaXRyYXRlKQ0KIAkJdGxfc2V0bW9k ZShzYywgc2MtPmlmbWVkaWEuaWZtX21lZGlhKTsNCiAJZWxzZSB7DQogCQltaWkgPSBkZXZpY2Vf Z2V0X3NvZnRjKHNjLT50bF9taWlidXMpOw0KIAkJbWlpX21lZGlhY2hnKG1paSk7DQogCX0NCisJ VExfVU5MT0NLKHNjKTsNCiANCiAJcmV0dXJuKDApOw0KIH0NCkBAIC0yMTY5LDYgKzIxODEsNyBA QA0KIA0KIAlzYyA9IGlmcC0+aWZfc29mdGM7DQogDQorCVRMX0xPQ0soc2MpOw0KIAlpZm1yLT5p Zm1fYWN0aXZlID0gSUZNX0VUSEVSOw0KIA0KIAlpZiAoc2MtPnRsX2JpdHJhdGUpIHsNCkBAIC0y MTg3LDYgKzIyMDAsNyBAQA0KIAkJaWZtci0+aWZtX2FjdGl2ZSA9IG1paS0+bWlpX21lZGlhX2Fj dGl2ZTsNCiAJCWlmbXItPmlmbV9zdGF0dXMgPSBtaWktPm1paV9tZWRpYV9zdGF0dXM7DQogCX0N CisJVExfVU5MT0NLKHNjKTsNCiANCiAJcmV0dXJuOw0KIH0NCkBAIC0yMTk5LDEyICsyMjEzLDEx IEBADQogew0KIAlzdHJ1Y3QgdGxfc29mdGMJCSpzYyA9IGlmcC0+aWZfc29mdGM7DQogCXN0cnVj dCBpZnJlcQkJKmlmciA9IChzdHJ1Y3QgaWZyZXEgKikgZGF0YTsNCi0JaW50CQkJcywgZXJyb3Ig PSAwOw0KLQ0KLQlzID0gc3BsaW1wKCk7DQorCWludAkJCWVycm9yID0gMDsNCiANCiAJc3dpdGNo KGNvbW1hbmQpIHsNCiAJY2FzZSBTSU9DU0lGRkxBR1M6DQorCQlUTF9MT0NLKHNjKTsNCiAJCWlm IChpZnAtPmlmX2ZsYWdzICYgSUZGX1VQKSB7DQogCQkJaWYgKGlmcC0+aWZfZHJ2X2ZsYWdzICYg SUZGX0RSVl9SVU5OSU5HICYmDQogCQkJICAgIGlmcC0+aWZfZmxhZ3MgJiBJRkZfUFJPTUlTQyAm Jg0KQEAgLTIyMTcsMTggKzIyMzAsMjEgQEANCiAJCQkJdGxfZGlvX2NscmJpdChzYywgVExfTkVU Q01ELCBUTF9DTURfQ0FGKTsNCiAJCQkJdGxfc2V0bXVsdGkoc2MpOw0KIAkJCX0gZWxzZQ0KLQkJ CQl0bF9pbml0KHNjKTsNCisJCQkJdGxfaW5pdF9sb2NrZWQoc2MpOw0KIAkJfSBlbHNlIHsNCiAJ CQlpZiAoaWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JVTk5JTkcpIHsNCiAJCQkJdGxfc3Rv cChzYyk7DQogCQkJfQ0KIAkJfQ0KIAkJc2MtPnRsX2lmX2ZsYWdzID0gaWZwLT5pZl9mbGFnczsN CisJCVRMX1VOTE9DSyhzYyk7DQogCQllcnJvciA9IDA7DQogCQlicmVhazsNCiAJY2FzZSBTSU9D QURETVVMVEk6DQogCWNhc2UgU0lPQ0RFTE1VTFRJOg0KKwkJVExfTE9DSyhzYyk7DQogCQl0bF9z ZXRtdWx0aShzYyk7DQorCQlUTF9VTkxPQ0soc2MpOw0KIAkJZXJyb3IgPSAwOw0KIAkJYnJlYWs7 DQogCWNhc2UgU0lPQ1NJRk1FRElBOg0KQEAgLTIyNDcsOCArMjI2Myw2IEBADQogCQlicmVhazsN CiAJfQ0KIA0KLQkodm9pZClzcGx4KHMpOw0KLQ0KIAlyZXR1cm4oZXJyb3IpOw0KIH0NCiANCkBA IC0yMjYyLDEwICsyMjc2LDEyIEBADQogDQogCWlmX3ByaW50ZihpZnAsICJkZXZpY2UgdGltZW91 dFxuIik7DQogDQorCVRMX0xPQ0soc2MpOw0KIAlpZnAtPmlmX29lcnJvcnMrKzsNCiANCiAJdGxf c29mdHJlc2V0KHNjLCAxKTsNCi0JdGxfaW5pdChzYyk7DQorCXRsX2luaXRfbG9ja2VkKHNjKTsN CisJVExfVU5MT0NLKHNjKTsNCiANCiAJcmV0dXJuOw0KIH0NCkBAIC0yMjgxLDEyICsyMjk3LDEy IEBADQogCXJlZ2lzdGVyIGludAkJaTsNCiAJc3RydWN0IGlmbmV0CQkqaWZwOw0KIA0KLQlUTF9M T0NLKHNjKTsNCisJVExfTE9DS19BU1NFUlQoc2MpOw0KIA0KIAlpZnAgPSBzYy0+dGxfaWZwOw0K IA0KIAkvKiBTdG9wIHRoZSBzdGF0cyB1cGRhdGVyLiAqLw0KLQl1bnRpbWVvdXQodGxfc3RhdHNf dXBkYXRlLCBzYywgc2MtPnRsX3N0YXRfY2gpOw0KKwljYWxsb3V0X3N0b3AoJnNjLT50bF9zdGF0 X2NhbGxvdXQpOw0KIA0KIAkvKiBTdG9wIHRoZSB0cmFuc21pdHRlciAqLw0KIAlDTURfQ0xSKHNj LCBUTF9DTURfUlQpOw0KQEAgLTIzMzMsNyArMjM0OSw2IEBADQogCQlzaXplb2Yoc2MtPnRsX2xk YXRhLT50bF90eF9saXN0KSk7DQogDQogCWlmcC0+aWZfZHJ2X2ZsYWdzICY9IH4oSUZGX0RSVl9S VU5OSU5HIHwgSUZGX0RSVl9PQUNUSVZFKTsNCi0JVExfVU5MT0NLKHNjKTsNCiANCiAJcmV0dXJu Ow0KIH0NCkBAIC0yMzUwLDcgKzIzNjUsOSBAQA0KIA0KIAlzYyA9IGRldmljZV9nZXRfc29mdGMo ZGV2KTsNCiANCisJVExfTE9DSyhzYyk7DQogCXRsX3N0b3Aoc2MpOw0KKwlUTF9VTkxPQ0soc2Mp Ow0KIA0KIAlyZXR1cm47DQogfQ0KSW5kZXg6IHNyYy9zeXMvcGNpL2lmX3RscmVnLmgNCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NClJDUyBmaWxlOiAvdXNyL2N2cy9zcmMvc3lzL3BjaS9pZl90bHJlZy5oLHYNCnJldHJp ZXZpbmcgcmV2aXNpb24gMS4yMQ0KZGlmZiAtdSAtcjEuMjEgaWZfdGxyZWcuaA0KLS0tIHNyYy9z eXMvcGNpL2lmX3RscmVnLmgJMTAgSnVuIDIwMDUgMTY6NDk6MjMgLTAwMDAJMS4yMQ0KKysrIHNy Yy9zeXMvcGNpL2lmX3RscmVnLmgJNSBTZXAgMjAwNSAwNzo1MjowMyAtMDAwMA0KQEAgLTEyNCw3 ICsxMjQsNyBAQA0KIAl1X2ludDhfdAkJdGxfdHhlb2M7DQogCXVfaW50OF90CQl0bF9iaXRyYXRl Ow0KIAlpbnQJCQl0bF9pZl9mbGFnczsNCi0Jc3RydWN0IGNhbGxvdXRfaGFuZGxlCXRsX3N0YXRf Y2g7DQorCXN0cnVjdCBjYWxsb3V0CQl0bF9zdGF0X2NhbGxvdXQ7DQogCXN0cnVjdCBtdHgJCXRs X210eDsNCiB9Ow0KIA0K --=-XZnn/oKYOU/5FzRkHJ9Y--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1125922064.75892.20.camel>