Subject: mfi(4) and bio_register()
To: None <tech-kern@netbsd.org>
From: Juan RP <juan@xtrarom.org>
List: tech-kern
Date: 11/16/2007 10:34:25
This is a multi-part message in MIME format.

--Multipart=_Fri__16_Nov_2007_10_34_25_+0100_UjRGgHaus1wRnqOt
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Hi,

There's currently a problem with mfi(4) on mfi_attach() calling
bio_register(). At the point on where mfi_attach() is called
the pseudo-device bio(4) hasn't been initialized so bio_register()
fails when LOCKDEBUG is used with an uninitialized lock.

I fixed another coming soon driver with the same way than the patch
I'm posting here, via a kthread that deferrs the creation of sensors
and calling bio_register() until there's thread context (and the bio(4)
pseudo-device is already initialized).

Patch attached or available at:

http://www.netbsd.org/~xtraeme/mfi_biofix.diff

-- 
Juan Romero Pardines	- The NetBSD Project
http://plog.xtrarom.org	- NetBSD/pkgsrc news in Spanish

--Multipart=_Fri__16_Nov_2007_10_34_25_+0100_UjRGgHaus1wRnqOt
Content-Type: application/octet-stream;
 name="mfi_biofix.diff"
Content-Disposition: attachment;
 filename="mfi_biofix.diff"
Content-Transfer-Encoding: base64

SW5kZXg6IG1maS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3NyYy9zeXMvZGV2L2lj
L21maS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjExCmRpZmYgLWIgLXUgLXAgLXIxLjExIG1m
aS5jCi0tLSBtZmkuYwkxNiBOb3YgMjAwNyAwODowMDoxNCAtMDAwMAkxLjExCisrKyBtZmkuYwkx
NiBOb3YgMjAwNyAwODozODoxMCAtMDAwMApAQCAtMjksNiArMjksNyBAQCBfX0tFUk5FTF9SQ1NJ
RCgwLCAiJE5ldEJTRDogbWZpLmMsdiAxLjExCiAjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgogI2lu
Y2x1ZGUgPHN5cy9tYWxsb2MuaD4KICNpbmNsdWRlIDxzeXMvcHJvYy5oPgorI2luY2x1ZGUgPHN5
cy9rdGhyZWFkLmg+CiAKICNpbmNsdWRlIDx1dm0vdXZtX3BhcmFtLmg+CiAKQEAgLTEwMSw3ICsx
MDIsNyBAQCBpbnQJCW1maV9pb2N0bF9hbGFybShzdHJ1Y3QgbWZpX3NvZnRjICosCiBpbnQJCW1m
aV9pb2N0bF9ibGluayhzdHJ1Y3QgbWZpX3NvZnRjICpzYywgc3RydWN0IGJpb2NfYmxpbmsgKik7
CiBpbnQJCW1maV9pb2N0bF9zZXRzdGF0ZShzdHJ1Y3QgbWZpX3NvZnRjICosIHN0cnVjdCBiaW9j
X3NldHN0YXRlICopOwogaW50CQltZmlfYmlvX2hzKHN0cnVjdCBtZmlfc29mdGMgKiwgaW50LCBp
bnQsIHZvaWQgKik7Ci1pbnQJCW1maV9jcmVhdGVfc2Vuc29ycyhzdHJ1Y3QgbWZpX3NvZnRjICop
Owordm9pZAkJbWZpX2NyZWF0ZV9zZW5zb3JzKHZvaWQgKik7CiB2b2lkCQltZmlfc2Vuc29yX3Jl
ZnJlc2goc3RydWN0IHN5c21vbl9lbnZzeXMgKiwgZW52c3lzX2RhdGFfdCAqKTsKICNlbmRpZiAv
KiBOQklPID4gMCAqLwogCkBAIC02ODYsMTIgKzY4NywxMCBAQCBtZmlfYXR0YWNoKHN0cnVjdCBt
Zmlfc29mdGMgKnNjKQogCW1maV93cml0ZShzYywgTUZJX09NU0ssIE1GSV9FTkFCTEVfSU5UUik7
CiAKICNpZiBOQklPID4gMAotCWlmIChiaW9fcmVnaXN0ZXIoJnNjLT5zY19kZXYsIG1maV9pb2N0
bCkgIT0gMCkKLQkJcGFuaWMoIiVzOiBjb250cm9sbGVyIHJlZ2lzdHJhdGlvbiBmYWlsZWQiLCBE
RVZOQU1FKHNjKSk7Ci0JZWxzZQotCQlzYy0+c2NfaW9jdGwgPSBtZmlfaW9jdGw7Ci0JaWYgKG1m
aV9jcmVhdGVfc2Vuc29ycyhzYykgIT0gMCkKLQkJYXByaW50X2Vycm9yKCIlczogdW5hYmxlIHRv
IGNyZWF0ZSBzZW5zb3JzXG4iLCBERVZOQU1FKHNjKSk7CisJaWYgKGt0aHJlYWRfY3JlYXRlKFBS
SV9OT05FLCBLVEhSRUFEX01QU0FGRSwgTlVMTCwKKwkgICAgbWZpX2NyZWF0ZV9zZW5zb3JzLCBz
YywgJnNjLT5zY19sd3AsICJtZmlfc2Vuc29ycyIpICE9IDApCisJCXBhbmljKCIlczogdW5hYmxl
IHRvIGNyZWF0ZSBhIGtlcm5lbCB0aHJlYWQgZm9yIHNlbnNvcnNcbiIsCisJCSAgICBkZXZpY2Vf
eG5hbWUoJnNjLT5zY19kZXYpKTsKICNlbmRpZiAvKiBOQklPID4gMCAqLwogCiAJcmV0dXJuICgw
KTsKQEAgLTE4NTEsMTkgKzE4NTAsMjMgQEAgZnJlZW1lOgogCXJldHVybiAocnYpOwogfQogCi1p
bnQKLW1maV9jcmVhdGVfc2Vuc29ycyhzdHJ1Y3QgbWZpX3NvZnRjICpzYykKK3ZvaWQKK21maV9j
cmVhdGVfc2Vuc29ycyh2b2lkICphcmcpCiB7CisJc3RydWN0IG1maV9zb2Z0YyAqc2MgPSBhcmc7
CiAJaW50CQkJaTsKIAlpbnQgbnNlbnNvcnMgPSBzYy0+c2NfbGRfY250OwogCisJaWYgKGJpb19y
ZWdpc3Rlcigmc2MtPnNjX2RldiwgbWZpX2lvY3RsKSAhPSAwKQorCQlwYW5pYygiJXM6IGJpbyBj
b250cm9sbGVyIHJlZ2lzdHJhdGlvbiBmYWlsZWQiLCBERVZOQU1FKHNjKSk7CisKIAlzYy0+c2Nf
c21lID0gc3lzbW9uX2VudnN5c19jcmVhdGUoKTsKIAlzYy0+c2Nfc2Vuc29yID0gbWFsbG9jKHNp
emVvZihlbnZzeXNfZGF0YV90KSAqIG5zZW5zb3JzLAogCSAgICBNX0RFVkJVRiwgTV9OT1dBSVQg
fCBNX1pFUk8pOwogCWlmIChzYy0+c2Nfc2Vuc29yID09IE5VTEwpIHsKIAkJYXByaW50X2Vycm9y
KCIlczogY2FuJ3QgYWxsb2NhdGUgZW52c3lzX2RhdGFfdFxuIiwKIAkJICAgIERFVk5BTUUoc2Mp
KTsKLQkJcmV0dXJuKEVOT01FTSk7CisJCXJldHVybjsKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwg
bnNlbnNvcnM7IGkrKykgewpAQCAtMTg4NywxMiArMTg5MCwxMSBAQCBtZmlfY3JlYXRlX3NlbnNv
cnMoc3RydWN0IG1maV9zb2Z0YyAqc2MpCiAJCXByaW50ZigiJXM6IHVuYWJsZSB0byByZWdpc3Rl
ciB3aXRoIHN5c21vblxuIiwgREVWTkFNRShzYykpOwogCQlnb3RvIG91dDsKIAl9Ci0JcmV0dXJu
ICgwKTsKKwlyZXR1cm47CiAKIG91dDoKIAlmcmVlKHNjLT5zY19zZW5zb3IsIE1fREVWQlVGKTsK
IAlzeXNtb25fZW52c3lzX2Rlc3Ryb3koc2MtPnNjX3NtZSk7Ci0JcmV0dXJuIEVJTlZBTDsKIH0K
IAogdm9pZApJbmRleDogbWZpdmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3Jj
L3N5cy9kZXYvaWMvbWZpdmFyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1iIC11
IC1wIC1yMS42IG1maXZhci5oCi0tLSBtZml2YXIuaAkxNiBOb3YgMjAwNyAwODowMDoxNCAtMDAw
MAkxLjYKKysrIG1maXZhci5oCTE2IE5vdiAyMDA3IDA4OjM4OjEwIC0wMDAwCkBAIC0xMTcsNiAr
MTE3LDggQEAgc3RydWN0IG1maV9zb2Z0YyB7CiAJCWNoYXIJCWxkX2RldlsxNl07CS8qIGRldmlj
ZSBuYW1lIHNkPyAqLwogCX0JCQlzY19sZFtNRklfTUFYX0xEXTsKIAorCXN0cnVjdCBsd3AJCSpz
Y19sd3A7CisKIAkvKiBzY3NpIGlvY3RsIGZyb20gc2QgZGV2aWNlICovCiAJaW50CQkJKCpzY19p
b2N0bCkoc3RydWN0IGRldmljZSAqLCB1X2xvbmcsIHZvaWQgKik7CiAK

--Multipart=_Fri__16_Nov_2007_10_34_25_+0100_UjRGgHaus1wRnqOt--