NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/52211: vioif stops on dmamap load error



The following reply was made to PR kern/52211; it has been noted by GNATS.

From: =?UTF-8?B?SmFyb23DrXIgRG9sZcSNZWs=?= <jaromir.dolecek%gmail.com@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: netbsd-bugs%netbsd.org@localhost
Subject: Re: kern/52211: vioif stops on dmamap load error
Date: Wed, 17 May 2017 00:27:56 +0200

 --f403045f284af3cb0f054fabaef0
 Content-Type: text/plain; charset="UTF-8"
 
 The driver fails to lock against interrupts without NET_MPSAFE, as it
 doesn't do splnet()/splx() as it IMO should. Maybe the biglock
 actually is enough, just looks unsafe. IMO it should just always use
 the mutexes.
 
 However, the wedge seems to be caused by something else.
 
 If the dmamap load fails while there is no TX active, code still sets
 IFF_OACTIVE. The flag is only reset when TX request finishes. Since
 nothing ever resets it back, and the start function ignores any
 further requests while the flag is set, it would stop sending anything
 until interface reset. So minimal fix would be to set the IFF_OACTIVE
 only when virtio_enqueue_prep() fails, and leave it alone for the
 other errors.
 
 The m_defrag() call anyway looks like good idea - after all it's
 better to try to send the data then just dropping it on the floor. I
 think it's perfectly possible to have mbufs very fragmented.
 
 Also, the code for trying to dequeue finished requests when we run out
 of resources looks somewhat not necessary, IMO it would be simplier to
 remove it as it only obfuscates the logic.
 
 What you think about attached patch, based on Masanobu SAITOH's diff?
 
 Besides the things above, I've also changed it so that interface queue
 limit is setup according to virtio queue size, i.e. upper layer
 wouldn't ever queue more than interface can handle.
 
 Jaromir
 
 2017-05-03 10:40 GMT+02:00  <hannken%eis.cs.tu-bs.de@localhost>:
 >>Number:         52211
 >>Category:       kern
 >>Synopsis:       vioif stops on dmamap load error
 >>Confidential:   no
 >>Severity:       serious
 >>Priority:       medium
 >>Responsible:    kern-bug-people
 >>State:          open
 >>Class:          sw-bug
 >>Submitter-Id:   net
 >>Arrival-Date:   Wed May 03 08:40:00 +0000 2017
 >>Originator:     Juergen Hannken-Illjes
 >>Release:        NetBSD 7.1
 >>Organization:
 >
 >>Environment:
 >
 >
 > System: NetBSD vpnserv.isf.cs.tu-bs.de 7.1 NetBSD 7.1 (gateway.i386) #0: Mon Mar 13 16:40:12 MET 2017  build%builder.isf.cs.tu-bs.de@localhost:/build/nbsd7/obj/obj.i386/sys/arch/i386/compile/gateway.i386 i386
 > Architecture: i386
 > Machine: i386
 >>Description:
 >
 > From time to time the machine prints
 >
 >         vioif0: tx dmamap load failed, error code 27
 >
 > and most times the interface seems to stop as the machine is no longer
 > accessible from the network.
 >
 >      $NetBSD: if_vioif.c,v 1.7.2.3 2016/12/23 05:57:40 snj Exp $
 >>How-To-Repeat:
 >
 >>Fix:
 >
 >
 >>Unformatted:
 >
 >
 
 --f403045f284af3cb0f054fabaef0
 Content-Type: text/plain; charset="US-ASCII"; name="if_vioif_wedge_fix.diff"
 Content-Disposition: attachment; filename="if_vioif_wedge_fix.diff"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_j2s4jecc0
 
 SW5kZXg6IGlmX3Zpb2lmLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9k
 ZXYvcGNpL2lmX3Zpb2lmLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzQKZGlmZiAtdSAtcCAt
 cjEuMzQgaWZfdmlvaWYuYwotLS0gaWZfdmlvaWYuYwkyOCBNYXIgMjAxNyAwNDoxMDozMyAtMDAw
 MAkxLjM0CisrKyBpZl92aW9pZi5jCTE2IE1heSAyMDE3IDIyOjIyOjMyIC0wMDAwCkBAIC0yMjYs
 OCArMjI2LDggQEAgc3RydWN0IHZpb2lmX3NvZnRjIHsKIAl9CQkJc2NfY3RybF9pbnVzZTsKIAlr
 Y29uZHZhcl90CQlzY19jdHJsX3dhaXQ7CiAJa211dGV4X3QJCXNjX2N0cmxfd2FpdF9sb2NrOwot
 CWttdXRleF90CQkqc2NfdHhfbG9jazsKLQlrbXV0ZXhfdAkJKnNjX3J4X2xvY2s7CisJa211dGV4
 X3QJCXNjX3R4X2xvY2s7CisJa211dGV4X3QJCXNjX3J4X2xvY2s7CiAJYm9vbAkJCXNjX3N0b3Bw
 aW5nOwogCiAJYm9vbAkJCXNjX2hhc19jdHJsOwpAQCAtMjM1LDEyICsyMzUsMTIgQEAgc3RydWN0
 IHZpb2lmX3NvZnRjIHsKICNkZWZpbmUgVklSVElPX05FVF9UWF9NQVhOU0VHUwkJKDE2KSAvKiBY
 WFggKi8KICNkZWZpbmUgVklSVElPX05FVF9DVFJMX01BQ19NQVhFTlRSSUVTCSg2NCkgLyogWFhY
 ICovCiAKLSNkZWZpbmUgVklPSUZfVFhfTE9DSyhfc2MpCWlmICgoX3NjKS0+c2NfdHhfbG9jaykg
 bXV0ZXhfZW50ZXIoKF9zYyktPnNjX3R4X2xvY2spCi0jZGVmaW5lIFZJT0lGX1RYX1VOTE9DSyhf
 c2MpCWlmICgoX3NjKS0+c2NfdHhfbG9jaykgbXV0ZXhfZXhpdCgoX3NjKS0+c2NfdHhfbG9jaykK
 LSNkZWZpbmUgVklPSUZfVFhfTE9DS0VEKF9zYykJKCEoX3NjKS0+c2NfdHhfbG9jayB8fCBtdXRl
 eF9vd25lZCgoX3NjKS0+c2NfdHhfbG9jaykpCi0jZGVmaW5lIFZJT0lGX1JYX0xPQ0soX3NjKQlp
 ZiAoKF9zYyktPnNjX3J4X2xvY2spIG11dGV4X2VudGVyKChfc2MpLT5zY19yeF9sb2NrKQotI2Rl
 ZmluZSBWSU9JRl9SWF9VTkxPQ0soX3NjKQlpZiAoKF9zYyktPnNjX3J4X2xvY2spIG11dGV4X2V4
 aXQoKF9zYyktPnNjX3J4X2xvY2spCi0jZGVmaW5lIFZJT0lGX1JYX0xPQ0tFRChfc2MpCSghKF9z
 YyktPnNjX3J4X2xvY2sgfHwgbXV0ZXhfb3duZWQoKF9zYyktPnNjX3J4X2xvY2spKQorI2RlZmlu
 ZSBWSU9JRl9UWF9MT0NLKF9zYykJbXV0ZXhfZW50ZXIoJihfc2MpLT5zY190eF9sb2NrKQorI2Rl
 ZmluZSBWSU9JRl9UWF9VTkxPQ0soX3NjKQltdXRleF9leGl0KCYoX3NjKS0+c2NfdHhfbG9jaykK
 KyNkZWZpbmUgVklPSUZfVFhfTE9DS0VEKF9zYykJbXV0ZXhfb3duZWQoJihfc2MpLT5zY190eF9s
 b2NrKQorI2RlZmluZSBWSU9JRl9SWF9MT0NLKF9zYykJbXV0ZXhfZW50ZXIoJihfc2MpLT5zY19y
 eF9sb2NrKQorI2RlZmluZSBWSU9JRl9SWF9VTkxPQ0soX3NjKQltdXRleF9leGl0KCYoX3NjKS0+
 c2NfcnhfbG9jaykKKyNkZWZpbmUgVklPSUZfUlhfTE9DS0VEKF9zYykJbXV0ZXhfb3duZWQoJihf
 c2MpLT5zY19yeF9sb2NrKQogCiAvKiBjZmF0dGFjaCBpbnRlcmZhY2UgZnVuY3Rpb25zICovCiBz
 dGF0aWMgaW50CXZpb2lmX21hdGNoKGRldmljZV90LCBjZmRhdGFfdCwgdm9pZCAqKTsKQEAgLTQz
 OSw3ICs0MzksNyBAQCB2aW9pZl9hbGxvY19tZW1zKHN0cnVjdCB2aW9pZl9zb2Z0YyAqc2MpCiAJ
 CUNfTDEodHhoZHJfZG1hbWFwc1tpXSwgdHhfaGRyc1tpXSwKIAkJICAgIHNpemVvZihzdHJ1Y3Qg
 dmlydGlvX25ldF9oZHIpLCAxLAogCQkgICAgV1JJVEUsICJ0eCBoZWFkZXIiKTsKLQkJQyh0eF9k
 bWFtYXBzW2ldLCBOVUxMLCBFVEhFUl9NQVhfTEVOLCAxNiAvKiBYWFggKi8sIDAsCisJCUModHhf
 ZG1hbWFwc1tpXSwgTlVMTCwgRVRIRVJfTUFYX0xFTiwgVklSVElPX05FVF9UWF9NQVhOU0VHUywg
 MCwKIAkJICAidHggcGF5bG9hZCIpOwogCX0KIApAQCAtNTkyLDEzICs1OTIsOCBAQCB2aW9pZl9h
 dHRhY2goZGV2aWNlX3QgcGFyZW50LCBkZXZpY2VfdCBzCiAKIAlhcHJpbnRfbm9ybWFsX2Rldihz
 ZWxmLCAiRXRoZXJuZXQgYWRkcmVzcyAlc1xuIiwgZXRoZXJfc3ByaW50ZihzYy0+c2NfbWFjKSk7
 CiAKLSNpZmRlZiBWSU9JRl9NUFNBRkUKLQlzYy0+c2NfdHhfbG9jayA9IG11dGV4X29ial9hbGxv
 YyhNVVRFWF9ERUZBVUxULCBJUExfTkVUKTsKLQlzYy0+c2NfcnhfbG9jayA9IG11dGV4X29ial9h
 bGxvYyhNVVRFWF9ERUZBVUxULCBJUExfTkVUKTsKLSNlbHNlCi0Jc2MtPnNjX3R4X2xvY2sgPSBO
 VUxMOwotCXNjLT5zY19yeF9sb2NrID0gTlVMTDsKLSNlbmRpZgorCW11dGV4X2luaXQoJnNjLT5z
 Y190eF9sb2NrLCBNVVRFWF9ERUZBVUxULCBJUExfTkVUKTsKKwltdXRleF9pbml0KCZzYy0+c2Nf
 cnhfbG9jaywgTVVURVhfREVGQVVMVCwgSVBMX05FVCk7CiAJc2MtPnNjX3N0b3BwaW5nID0gZmFs
 c2U7CiAKIAkvKgpAQCAtNjgwLDYgKzY3NSw4IEBAIHNraXA6CiAJaWZwLT5pZl9zdG9wID0gdmlv
 aWZfc3RvcDsKIAlpZnAtPmlmX2NhcGFiaWxpdGllcyA9IDA7CiAJaWZwLT5pZl93YXRjaGRvZyA9
 IHZpb2lmX3dhdGNoZG9nOworCUlGUV9TRVRfTUFYTEVOKCZpZnAtPmlmX3NuZCwgTUFYKHNjLT5z
 Y192cVtWUV9UWF0udnFfbnVtLCBJRlFfTUFYTEVOKSk7CisJSUZRX1NFVF9SRUFEWSgmaWZwLT5p
 Zl9zbmQpOwogCiAJc2MtPnNjX2V0aGVyY29tLmVjX2NhcGFiaWxpdGllcyB8PSBFVEhFUkNBUF9W
 TEFOX01UVTsKIApAQCAtNjkwLDEwICs2ODcsOCBAQCBza2lwOgogCXJldHVybjsKIAogZXJyOgot
 CWlmIChzYy0+c2NfdHhfbG9jaykKLQkJbXV0ZXhfb2JqX2ZyZWUoc2MtPnNjX3R4X2xvY2spOwot
 CWlmIChzYy0+c2NfcnhfbG9jaykKLQkJbXV0ZXhfb2JqX2ZyZWUoc2MtPnNjX3J4X2xvY2spOwor
 CW11dGV4X2Rlc3Ryb3koJnNjLT5zY190eF9sb2NrKTsKKwltdXRleF9kZXN0cm95KCZzYy0+c2Nf
 cnhfbG9jayk7CiAKIAlpZiAoc2MtPnNjX2hhc19jdHJsKSB7CiAJCWN2X2Rlc3Ryb3koJnNjLT5z
 Y19jdHJsX3dhaXQpOwpAQCAtNzk5LDcgKzc5NCw3IEBAIHZpb2lmX3N0YXJ0KHN0cnVjdCBpZm5l
 dCAqaWZwKQogCXN0cnVjdCB2aXJ0aW9fc29mdGMgKnZzYyA9IHNjLT5zY192aXJ0aW87CiAJc3Ry
 dWN0IHZpcnRxdWV1ZSAqdnEgPSAmc2MtPnNjX3ZxW1ZRX1RYXTsKIAlzdHJ1Y3QgbWJ1ZiAqbTsK
 LQlpbnQgcXVldWVkID0gMCwgcmV0cnkgPSAwOworCWludCBxdWV1ZWQgPSAwOwogCiAJVklPSUZf
 VFhfTE9DSyhzYyk7CiAKQEAgLTgxNCw0MiArODA5LDU3IEBAIHZpb2lmX3N0YXJ0KHN0cnVjdCBp
 Zm5ldCAqaWZwKQogCQlpbnQgc2xvdCwgcjsKIAogCQlJRlFfREVRVUVVRSgmaWZwLT5pZl9zbmQs
 IG0pOwotCiAJCWlmIChtID09IE5VTEwpCiAJCQlicmVhazsKIAotcmV0cnk6CiAJCXIgPSB2aXJ0
 aW9fZW5xdWV1ZV9wcmVwKHZzYywgdnEsICZzbG90KTsKIAkJaWYgKHIgPT0gRUFHQUlOKSB7CiAJ
 CQlpZnAtPmlmX2ZsYWdzIHw9IElGRl9PQUNUSVZFOwotCQkJdmlvaWZfdHhfdnFfZG9uZV9sb2Nr
 ZWQodnEpOwotCQkJaWYgKHJldHJ5KysgPT0gMCkKLQkJCQlnb3RvIHJldHJ5OwotCQkJZWxzZQot
 CQkJCWJyZWFrOworCQkJYnJlYWs7CiAJCX0KIAkJaWYgKHIgIT0gMCkKIAkJCXBhbmljKCJlbnF1
 ZXVlX3ByZXAgZm9yIGEgdHggYnVmZmVyIik7CisKIAkJciA9IGJ1c19kbWFtYXBfbG9hZF9tYnVm
 KHZpcnRpb19kbWF0KHZzYyksCiAJCQkJCSBzYy0+c2NfdHhfZG1hbWFwc1tzbG90XSwKIAkJCQkJ
 IG0sIEJVU19ETUFfV1JJVEV8QlVTX0RNQV9OT1dBSVQpOwogCQlpZiAociAhPSAwKSB7Ci0JCQl2
 aXJ0aW9fZW5xdWV1ZV9hYm9ydCh2c2MsIHZxLCBzbG90KTsKLQkJCWFwcmludF9lcnJvcl9kZXYo
 c2MtPnNjX2RldiwKLQkJCSAgICAidHggZG1hbWFwIGxvYWQgZmFpbGVkLCBlcnJvciBjb2RlICVk
 XG4iLCByKTsKLQkJCWJyZWFrOworCQkJLyogbWF5YmUganVzdCB0b28gZnJhZ21lbnRlZCAqLwor
 CQkJc3RydWN0IG1idWYgKm5ld207CisKKwkJCW5ld20gPSBtX2RlZnJhZyhtLCBNX05PV0FJVCk7
 CisJCQlpZiAobmV3bSA9PSBOVUxMKSB7CisJCQkJYXByaW50X2Vycm9yX2RldihzYy0+c2NfZGV2
 LAorCQkJCSAgICAibV9kZWZyYWcoKSBmYWlsZWRcbiIpOworCQkJCW1fZnJlZW0obSk7CisJCQkJ
 Z290byBza2lwOworCQkJfQorCisJCQlyID0gYnVzX2RtYW1hcF9sb2FkX21idWYodmlydGlvX2Rt
 YXQodnNjKSwKKwkJCQkJIHNjLT5zY190eF9kbWFtYXBzW3Nsb3RdLAorCQkJCQkgbmV3bSwgQlVT
 X0RNQV9XUklURXxCVVNfRE1BX05PV0FJVCk7CisJCQlpZiAociAhPSAwKSB7CisJCQkJYXByaW50
 X2Vycm9yX2RldihzYy0+c2NfZGV2LAorCSAgIAkJCSAgICAidHggZG1hbWFwIGxvYWQgZmFpbGVk
 LCBlcnJvciBjb2RlICVkXG4iLAorCQkJCSAgICByKTsKKwkJCQltX2ZyZWVtKG5ld20pOworc2tp
 cDoKKwkJCQl2aXJ0aW9fZW5xdWV1ZV9hYm9ydCh2c2MsIHZxLCBzbG90KTsKKwkJCQljb250aW51
 ZTsKKwkJCX0KIAkJfQorCisJCS8qIFRoaXMgc2hvdWxkIGFjdHVhbGx5IG5ldmVyIGZhaWwgKi8K
 IAkJciA9IHZpcnRpb19lbnF1ZXVlX3Jlc2VydmUodnNjLCB2cSwgc2xvdCwKIAkJCQkJc2MtPnNj
 X3R4X2RtYW1hcHNbc2xvdF0tPmRtX25zZWdzICsgMSk7CiAJCWlmIChyICE9IDApIHsKKwkJCWFw
 cmludF9lcnJvcl9kZXYoc2MtPnNjX2RldiwKKwkgICAJCSAgICAidmlydGlvX2VucXVldWVfcmVz
 ZXJ2ZSBmYWlsZWQsIGVycm9yIGNvZGUgJWRcbiIsCisJCQkgICAgcik7CiAJCQlidXNfZG1hbWFw
 X3VubG9hZCh2aXJ0aW9fZG1hdCh2c2MpLAogCQkJCQkgIHNjLT5zY190eF9kbWFtYXBzW3Nsb3Rd
 KTsKLQkJCWlmcC0+aWZfZmxhZ3MgfD0gSUZGX09BQ1RJVkU7Ci0JCQl2aW9pZl90eF92cV9kb25l
 X2xvY2tlZCh2cSk7Ci0JCQlpZiAocmV0cnkrKyA9PSAwKQotCQkJCWdvdG8gcmV0cnk7Ci0JCQll
 bHNlCi0JCQkJYnJlYWs7CisJCQkvKiBzbG90IGFscmVhZHkgZnJlZWQgYnkgdmlydGlvX2VucXVl
 dWVfcmVzZXJ2ZSAqLworCQkJY29udGludWU7CiAJCX0KIAogCQlzYy0+c2NfdHhfbWJ1ZnNbc2xv
 dF0gPSBtOwpAQCAtODY0LDE0ICs4NzQsMTMgQEAgcmV0cnk6CiAJCXZpcnRpb19lbnF1ZXVlKHZz
 YywgdnEsIHNsb3QsIHNjLT5zY190eGhkcl9kbWFtYXBzW3Nsb3RdLCB0cnVlKTsKIAkJdmlydGlv
 X2VucXVldWUodnNjLCB2cSwgc2xvdCwgc2MtPnNjX3R4X2RtYW1hcHNbc2xvdF0sIHRydWUpOwog
 CQl2aXJ0aW9fZW5xdWV1ZV9jb21taXQodnNjLCB2cSwgc2xvdCwgZmFsc2UpOworCiAJCXF1ZXVl
 ZCsrOwogCQlicGZfbXRhcChpZnAsIG0pOwogCX0KIAotCWlmIChtICE9IE5VTEwpIHsKLQkJaWZw
 LT5pZl9mbGFncyB8PSBJRkZfT0FDVElWRTsKKwlpZiAobSAhPSBOVUxMKQogCQltX2ZyZWVtKG0p
 OwotCX0KIAogCWlmIChxdWV1ZWQgPiAwKSB7CiAJCXZpcnRpb19lbnF1ZXVlX2NvbW1pdCh2c2Ms
 IHZxLCAtMSwgdHJ1ZSk7Cg==
 --f403045f284af3cb0f054fabaef0--
 


Home | Main Index | Thread Index | Old Index