NetBSD Problem Report #53059

From kardel@pip.kardel.name  Tue Feb 27 11:47:39 2018
Return-Path: <kardel@pip.kardel.name>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
	by mollari.NetBSD.org (Postfix) with ESMTPS id CAACC7A1B3
	for <gnats-bugs@gnats.NetBSD.org>; Tue, 27 Feb 2018 11:47:39 +0000 (UTC)
Message-Id: <20180227114732.38682DA0D8B@pip.kardel.name>
Date: Tue, 27 Feb 2018 12:47:32 +0100 (CET)
From: kardel@netbsd.org
Reply-To: kardel@netbsd.org
To: gnats-bugs@NetBSD.org
Subject: "nvmectl identify nvme0" locks up system
X-Send-Pr-Version: 3.95

>Number:         53059
>Category:       kern
>Synopsis:       repeated nvmectl identify nvme0 locks up sytem
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    jdolecek
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Feb 27 11:50:00 +0000 2018
>Closed-Date:    Sun Mar 18 12:29:47 +0000 2018
>Last-Modified:  Sun Mar 18 12:29:47 +0000 2018
>Originator:     Frank Kardel
>Release:        NetBSD 8.99.12-20180224180000
>Organization:

>Environment:


System: NetBSD pip.kardel.name 8.99.12 NetBSD 8.99.12 (PIPGEN) #10: Sat Feb 24 19:26:44 CET 2018 kardel@xxx:/src/NetBSD/act/src/obj.amd64/sys/arch/amd64/compile/PIPGEN amd64
Architecture: x86_64
Machine: amd64
>Description:
	repeated invocation of "nvmectl identify nvme0" (about 45-50 times) will
	lock up the system hard. for the more relaxed people - smartd takes about
	22:30h to lock up the system.
	If you are lucky yousee the panic: nvme0: invalid ccb detected triggerted
	via softint_dispatch()->nvme_poll().
	needless to say: breaking into DDB via USB attached keyboards does not work here.

>How-To-Repeat:
	csh(as root): repeat 64 nvmectl identify nvme0
>Fix:
	no fix - check for admin q depletion - it is close to the limit of admin q entries.

>Release-Note:

>Audit-Trail:
From: Martin Husemann <martin@duskware.de>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/53059: "nvmectl identify nvme0" locks up system
Date: Tue, 27 Feb 2018 14:35:32 +0100

 I can reproduce it but luckily have a serial console.

 This is with Christos's latest change:

 nvme_poll() at netbsd:nvme_poll+0x12d
 nvmeioctl() at netbsd:nvmeioctl+0x19a
 cdev_ioctl() at netbsd:cdev_ioctl+0x98
 VOP_IOCTL() at netbsd:VOP_IOCTL+0x3b
 vn_ioctl() at netbsd:vn_ioctl+0xa1
 sys_ioctl() at netbsd:sys_ioctl+0x103
 syscall() at netbsd:syscall+0x1d8

 db{0}> sh reg
 ds          2b73
 es          8a78
 fs          55a6
 gs          6
 rdi         ffffffff81401260    x86_io
 rsi         3f8
 rbp         ffff800144b78a68
 rbx         ffff80001da4505c
 rdx         1
 rcx         8
 rax         7f
 r8          ffff800143841000
 r9          ffffffff806441cb    nvme_pt_fill
 r10         ffff800144b78ba0
 r11         10
 r12         800
 r13         f9
 r14         c6
 r15         ffffe4011daa0408
 rip         ffffffff8021db05    breakpoint+0x5
 cs          8
 rflags      202
 rsp         ffff800144b78a68
 ss          10
 netbsd:breakpoint+0x5:  leave


 (gdb) list *nvmeioctl+0x19a
 0xffffffff80644e65 is in nvmeioctl (../../../../dev/ic/nvme.c:971).
 [.. nvme_command_passthrough ..]

 (gdb) list *nvme_poll+0x12d
 0xffffffff80643fb2 is in nvme_poll (../../../../dev/ic/nvme.c:1043).
 1038            ccb->ccb_cookie = &state;
 1039    
 1040            nvme_q_submit(sc, q, ccb, nvme_poll_fill);
 1041            while (!ISSET(state.c.flags, htole16(NVME_CQE_PHASE))) {
 1042                    if (nvme_q_complete(sc, q) == 0)
 1043                            delay(step);
 1044    


 Martin

From: Frank Kardel <kardel@netbsd.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/53059: "nvmectl identify nvme0" locks up system
Date: Tue, 27 Feb 2018 14:52:32 +0100

 That identifies the tight loop - good.

 Now why can we run ~45 nvmectl's successfully from user level and then 
 get stuck - is the admin queue exhausted?

 Frank


 On 02/27/18 14:40, Martin Husemann wrote:
 > The following reply was made to PR kern/53059; it has been noted by GNATS.
 >
 > From: Martin Husemann <martin@duskware.de>
 > To: gnats-bugs@NetBSD.org
 > Cc:
 > Subject: Re: kern/53059: "nvmectl identify nvme0" locks up system
 > Date: Tue, 27 Feb 2018 14:35:32 +0100
 >
 >   I can reproduce it but luckily have a serial console.
 >   
 >   This is with Christos's latest change:
 >   
 >   nvme_poll() at netbsd:nvme_poll+0x12d
 >   nvmeioctl() at netbsd:nvmeioctl+0x19a
 >   cdev_ioctl() at netbsd:cdev_ioctl+0x98
 >   VOP_IOCTL() at netbsd:VOP_IOCTL+0x3b
 >   vn_ioctl() at netbsd:vn_ioctl+0xa1
 >   sys_ioctl() at netbsd:sys_ioctl+0x103
 >   syscall() at netbsd:syscall+0x1d8
 >   
 >   db{0}> sh reg
 >   ds          2b73
 >   es          8a78
 >   fs          55a6
 >   gs          6
 >   rdi         ffffffff81401260    x86_io
 >   rsi         3f8
 >   rbp         ffff800144b78a68
 >   rbx         ffff80001da4505c
 >   rdx         1
 >   rcx         8
 >   rax         7f
 >   r8          ffff800143841000
 >   r9          ffffffff806441cb    nvme_pt_fill
 >   r10         ffff800144b78ba0
 >   r11         10
 >   r12         800
 >   r13         f9
 >   r14         c6
 >   r15         ffffe4011daa0408
 >   rip         ffffffff8021db05    breakpoint+0x5
 >   cs          8
 >   rflags      202
 >   rsp         ffff800144b78a68
 >   ss          10
 >   netbsd:breakpoint+0x5:  leave
 >   
 >   
 >   (gdb) list *nvmeioctl+0x19a
 >   0xffffffff80644e65 is in nvmeioctl (../../../../dev/ic/nvme.c:971).
 >   [.. nvme_command_passthrough ..]
 >   
 >   (gdb) list *nvme_poll+0x12d
 >   0xffffffff80643fb2 is in nvme_poll (../../../../dev/ic/nvme.c:1043).
 >   1038            ccb->ccb_cookie = &state;
 >   1039
 >   1040            nvme_q_submit(sc, q, ccb, nvme_poll_fill);
 >   1041            while (!ISSET(state.c.flags, htole16(NVME_CQE_PHASE))) {
 >   1042                    if (nvme_q_complete(sc, q) == 0)
 >   1043                            delay(step);
 >   1044
 >   
 >   
 >   Martin
 >   

From: Martin Husemann <martin@duskware.de>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/53059: "nvmectl identify nvme0" locks up system
Date: Tue, 27 Feb 2018 16:10:49 +0100

 I called nvme_dumpregs after it hangs:

 nvme0: cap  0x00f000203c013fff
 nvme0:  mpsmax 27 (134217728)
 nvme0:  mpsmin 12 (4096)
 nvme0:  css 1
 nvme0:  nssrs 0
 nvme0:  dstrd 4
 nvme0:  to 30000 msec
 nvme0:  ams 0
 nvme0:  cqr 65536
 nvme0:  mqes 16384
 nvme0: vs   0x10100
 nvme0: cc   0x460001
 nvme0:  iocqes 4 (16)
 nvme0:  iosqes 6 (64)
 nvme0:  shn 0
 nvme0:  ams 0
 nvme0:  mps 12 (4096)
 nvme0:  css 0
 nvme0:  en 1
 nvme0: csts 0x00000001
 nvme0:  rdy 1
 nvme0:  cfs 0
 nvme0:  shst 0
 nvme0: aqa  0x001f001f
 nvme0:  acqs 31
 nvme0:  asqs 31
 nvme0: asq  0x000000011d722000
 nvme0: acq  0x000000011d72a000


 Martin

From: Martin Husemann <martin@duskware.de>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/53059: "nvmectl identify nvme0" locks up system
Date: Tue, 27 Feb 2018 16:31:48 +0100

 On Tue, Feb 27, 2018 at 03:15:01PM +0000, Martin Husemann wrote:
 >  I called nvme_dumpregs after it hangs:
 >  
 >  nvme0: cap  0x00f000203c013fff
 >  nvme0:  mpsmax 27 (134217728)

 I also have a core dump, but unfortunately gdb can't backtrace through
 the trapframe currently, it seems:

 #8  0xffffffff8021db05 in breakpoint ()
 #9  0xffffffff805d1a4e in comintr (arg=0xffffe4011daa0408)
     at ../../../../dev/ic/com.c:2113
 #10 0xffffffff8020aeb6 in handle_ioapic_edge6 ()
 #11 0x0000000000000000 in ?? ()


 Martin

Responsible-Changed-From-To: kern-bug-people->jdolecek
Responsible-Changed-By: jdolecek@NetBSD.org
Responsible-Changed-When: Thu, 15 Mar 2018 10:56:06 +0000
Responsible-Changed-Why:
I'm looking into this.


State-Changed-From-To: open->feedback
State-Changed-By: jdolecek@NetBSD.org
State-Changed-When: Thu, 15 Mar 2018 10:56:06 +0000
State-Changed-Why:
Possible fix was sent to PR kern/52769, can you try it out? It identified
ccb leak on command errors, which I believe is the case here.
Patch: http://www.netbsd.org/~jdolecek/nvme_avail_put.diff


State-Changed-From-To: feedback->analyzed
State-Changed-By: jdolecek@NetBSD.org
State-Changed-When: Fri, 16 Mar 2018 19:05:37 +0000
State-Changed-Why:
That patch is unlikely to help here. I'm going to refactor the code
to avoid polled command for identify, which should fix the issue.


From: Frank Kardel <kardel@netbsd.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/53059 (repeated nvmectl identify nvme0 locks up sytem)
Date: Fri, 16 Mar 2018 20:10:19 +0100

 It seems to be with all ioctl triggered admin-q interactions that are 
 processed via polled command. E. g, smartd will lead to a system lockup 
 after 22:30h.

 Thanks for looking into it.


 On 03/16/18 20:05, jdolecek@NetBSD.org wrote:
 > Synopsis: repeated nvmectl identify nvme0 locks up sytem
 >
 > State-Changed-From-To: feedback->analyzed
 > State-Changed-By: jdolecek@NetBSD.org
 > State-Changed-When: Fri, 16 Mar 2018 19:05:37 +0000
 > State-Changed-Why:
 > That patch is unlikely to help here. I'm going to refactor the code
 > to avoid polled command for identify, which should fix the issue.
 >
 >
 >

State-Changed-From-To: analyzed->feedback
State-Changed-By: jdolecek@NetBSD.org
State-Changed-When: Sat, 17 Mar 2018 00:29:17 +0000
State-Changed-Why:
Committed possible fix on HEAD, rev 1.35 of src/sys/dev/ic/nvme.c
Can you please check if it fixes your problem?


From: "Jaromir Dolecek" <jdolecek@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/53059 CVS commit: src/sys/dev/ic
Date: Sat, 17 Mar 2018 00:28:03 +0000

 Module Name:	src
 Committed By:	jdolecek
 Date:		Sat Mar 17 00:28:03 UTC 2018

 Modified Files:
 	src/sys/dev/ic: nvme.c

 Log Message:
 switch handling of passthrough commands to use queue, instead of polling

 should fix PR kern/53059 by Frank Kardel


 To generate a diff of this commit:
 cvs rdiff -u -r1.34 -r1.35 src/sys/dev/ic/nvme.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: Frank Kardel <kardel@netbsd.org>
To: gnats-bugs@NetBSD.org, jdolecek@NetBSD.org, gnats-admin@netbsd.org,
 netbsd-bugs@netbsd.org
Cc: 
Subject: Re: PR/53059 CVS commit: src/sys/dev/ic
Date: Sat, 17 Mar 2018 09:10:53 +0100

 Well, we are not quite there yet.

 I get a page fault trap, code=0.

 hand copied stack trace (no dump device available at this point, photo 
 available on request).

 nvme_pt_fill() at nvme_pt_fill+0x1e

 nvme_poll() at nvme_poll+0xa0

 nvme_attach() atnvme_attch+0x9a4

 nvme_pci_attch() at name_pci_attach+0x530

 config_attach_loc()

 config_found_sm_loc()

 pci_probe_device()

 pci_enumerate_bus()

 pcirescan()

 pciattach()

 ....

 Frank


 On 03/17/18 01:30, Jaromir Dolecek wrote:
 > The following reply was made to PR kern/53059; it has been noted by GNATS.
 >
 > From: "Jaromir Dolecek" <jdolecek@netbsd.org>
 > To: gnats-bugs@gnats.NetBSD.org
 > Cc:
 > Subject: PR/53059 CVS commit: src/sys/dev/ic
 > Date: Sat, 17 Mar 2018 00:28:03 +0000
 >
 >   Module Name:	src
 >   Committed By:	jdolecek
 >   Date:		Sat Mar 17 00:28:03 UTC 2018
 >   
 >   Modified Files:
 >   	src/sys/dev/ic: nvme.c
 >   
 >   Log Message:
 >   switch handling of passthrough commands to use queue, instead of polling
 >   
 >   should fix PR kern/53059 by Frank Kardel
 >   
 >   
 >   To generate a diff of this commit:
 >   cvs rdiff -u -r1.34 -r1.35 src/sys/dev/ic/nvme.c
 >   
 >   Please note that diffs are not public domain; they are subject to the
 >   copyright notices on the relevant files.
 >   

From: Martin Husemann <martin@duskware.de>
To: gnats-bugs@NetBSD.org
Cc: jdolecek@NetBSD.org, netbsd-bugs@netbsd.org, gnats-admin@netbsd.org,
	kardel@netbsd.org
Subject: Re: kern/53059 (repeated nvmectl identify nvme0 locks up sytem)
Date: Sat, 17 Mar 2018 09:11:00 +0100

 I have just done 128

 	nvmectl identify nvme0

 in a row and the system still is happy.

 Martin

From: "Jaromir Dolecek" <jdolecek@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/53059 CVS commit: src/sys/dev/ic
Date: Sat, 17 Mar 2018 09:36:32 +0000

 Module Name:	src
 Committed By:	jdolecek
 Date:		Sat Mar 17 09:36:32 UTC 2018

 Modified Files:
 	src/sys/dev/ic: nvme.c

 Log Message:
 fix passthrough command usage also in nvme_get_number_of_queues(), fixes
 memory corruption and possible panic on boot

 PR kern/53059


 To generate a diff of this commit:
 cvs rdiff -u -r1.35 -r1.36 src/sys/dev/ic/nvme.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: =?UTF-8?B?SmFyb23DrXIgRG9sZcSNZWs=?= <jaromir.dolecek@gmail.com>
To: Frank Kardel <kardel@netbsd.org>
Cc: gnats-bugs@netbsd.org
Subject: Re: PR/53059 CVS commit: src/sys/dev/ic
Date: Sat, 17 Mar 2018 10:38:29 +0100

 --94eb2c05f1f6c84ca80567987c43
 Content-Type: text/plain; charset="UTF-8"

 Try now with rev 1.36 please, should be fixed.

 Jaromir

 2018-03-17 9:10 GMT+01:00 Frank Kardel <kardel@netbsd.org>:
 >
 > Well, we are not quite there yet.
 >
 > I get a page fault trap, code=0.
 >
 > hand copied stack trace (no dump device available at this point, photo
 available on request).
 >
 > nvme_pt_fill() at nvme_pt_fill+0x1e
 >
 > nvme_poll() at nvme_poll+0xa0
 >
 > nvme_attach() atnvme_attch+0x9a4
 >
 > nvme_pci_attch() at name_pci_attach+0x530
 >
 > config_attach_loc()
 >
 > config_found_sm_loc()
 >
 > pci_probe_device()
 >
 > pci_enumerate_bus()
 >
 > pcirescan()
 >
 > pciattach()
 >
 > ....
 >
 > Frank
 >
 >
 >
 > On 03/17/18 01:30, Jaromir Dolecek wrote:
 >>
 >> The following reply was made to PR kern/53059; it has been noted by
 GNATS.
 >>
 >> From: "Jaromir Dolecek" <jdolecek@netbsd.org>
 >> To: gnats-bugs@gnats.NetBSD.org
 >> Cc:
 >> Subject: PR/53059 CVS commit: src/sys/dev/ic
 >> Date: Sat, 17 Mar 2018 00:28:03 +0000
 >>
 >>   Module Name:  src
 >>   Committed By: jdolecek
 >>   Date:         Sat Mar 17 00:28:03 UTC 2018
 >>     Modified Files:
 >>         src/sys/dev/ic: nvme.c
 >>     Log Message:
 >>   switch handling of passthrough commands to use queue, instead of
 polling
 >>     should fix PR kern/53059 by Frank Kardel
 >>       To generate a diff of this commit:
 >>   cvs rdiff -u -r1.34 -r1.35 src/sys/dev/ic/nvme.c
 >>     Please note that diffs are not public domain; they are subject to the
 >>   copyright notices on the relevant files.
 >>
 >
 >

 --94eb2c05f1f6c84ca80567987c43
 Content-Type: text/html; charset="UTF-8"
 Content-Transfer-Encoding: quoted-printable

 <div dir=3D"ltr">Try now with rev 1.36 please, should be fixed.<br><br>Jaro=
 mir<br><br>2018-03-17 9:10 GMT+01:00 Frank Kardel &lt;<a href=3D"mailto:kar=
 del@netbsd.org">kardel@netbsd.org</a>&gt;:<br>&gt;<br>&gt; Well, we are not=
  quite there yet.<br>&gt;<br>&gt; I get a page fault trap, code=3D0.<br>&gt=
 ;<br>&gt; hand copied stack trace (no dump device available at this point, =
 photo available on request).<br>&gt;<br>&gt; nvme_pt_fill() at nvme_pt_fill=
 +0x1e<br>&gt;<br>&gt; nvme_poll() at nvme_poll+0xa0<br>&gt;<br>&gt; nvme_at=
 tach() atnvme_attch+0x9a4<br>&gt;<br>&gt; nvme_pci_attch() at name_pci_atta=
 ch+0x530<br>&gt;<br>&gt; config_attach_loc()<br>&gt;<br>&gt; config_found_s=
 m_loc()<br>&gt;<br>&gt; pci_probe_device()<br>&gt;<br>&gt; pci_enumerate_bu=
 s()<br>&gt;<br>&gt; pcirescan()<br>&gt;<br>&gt; pciattach()<br>&gt;<br>&gt;=
  ....<br>&gt;<br>&gt; Frank<br>&gt;<br>&gt;<br>&gt;<br>&gt; On 03/17/18 01:=
 30, Jaromir Dolecek wrote:<br>&gt;&gt;<br>&gt;&gt; The following reply was =
 made to PR kern/53059; it has been noted by GNATS.<br>&gt;&gt;<br>&gt;&gt; =
 From: &quot;Jaromir Dolecek&quot; &lt;<a href=3D"mailto:jdolecek@netbsd.org=
 ">jdolecek@netbsd.org</a>&gt;<br>&gt;&gt; To: <a href=3D"mailto:gnats-bugs@=
 gnats.NetBSD.org">gnats-bugs@gnats.NetBSD.org</a><br>&gt;&gt; Cc:<br>&gt;&g=
 t; Subject: PR/53059 CVS commit: src/sys/dev/ic<br>&gt;&gt; Date: Sat, 17 M=
 ar 2018 00:28:03 +0000<br>&gt;&gt;<br>&gt;&gt; =C2=A0 Module Name: =C2=A0sr=
 c<br>&gt;&gt; =C2=A0 Committed By: jdolecek<br>&gt;&gt; =C2=A0 Date: =C2=A0=
  =C2=A0 =C2=A0 =C2=A0 Sat Mar 17 00:28:03 UTC 2018<br>&gt;&gt; =C2=A0 =C2=
 =A0 Modified Files:<br>&gt;&gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 src/sys/dev/ic:=
  nvme.c<br>&gt;&gt; =C2=A0 =C2=A0 Log Message:<br>&gt;&gt; =C2=A0 switch ha=
 ndling of passthrough commands to use queue, instead of polling<br>&gt;&gt;=
  =C2=A0 =C2=A0 should fix PR kern/53059 by Frank Kardel<br>&gt;&gt; =C2=A0 =
 =C2=A0 =C2=A0 To generate a diff of this commit:<br>&gt;&gt; =C2=A0 cvs rdi=
 ff -u -r1.34 -r1.35 src/sys/dev/ic/nvme.c<br>&gt;&gt; =C2=A0 =C2=A0 Please =
 note that diffs are not public domain; they are subject to the<br>&gt;&gt; =
 =C2=A0 copyright notices on the relevant files.<br>&gt;&gt; =C2=A0<br>&gt;<=
 br>&gt;<br></div>

 --94eb2c05f1f6c84ca80567987c43--

From: Martin Husemann <martin@duskware.de>
To: gnats-bugs@NetBSD.org
Cc: jdolecek@NetBSD.org, netbsd-bugs@netbsd.org, gnats-admin@netbsd.org,
	kardel@netbsd.org
Subject: Re: kern/53059 (repeated nvmectl identify nvme0 locks up sytem)
Date: Sat, 17 Mar 2018 11:05:41 +0100

 Still works fine for me with the latest version.

 Martin

From: Frank Kardel <kardel@netbsd.org>
To: gnats-bugs@NetBSD.org, jdolecek@NetBSD.org, gnats-admin@netbsd.org,
 netbsd-bugs@netbsd.org
Cc: 
Subject: Re: PR/53059 CVS commit: src/sys/dev/ic
Date: Sat, 17 Mar 2018 18:58:58 +0100

 Much better !

 it boots, it survives > 1024 identifies...

 Great - looks fixed now.

 Frank


 On 03/17/18 10:40, Jaromir Dolecek wrote:
 > The following reply was made to PR kern/53059; it has been noted by GNATS.
 >
 > From: "Jaromir Dolecek" <jdolecek@netbsd.org>
 > To: gnats-bugs@gnats.NetBSD.org
 > Cc:
 > Subject: PR/53059 CVS commit: src/sys/dev/ic
 > Date: Sat, 17 Mar 2018 09:36:32 +0000
 >
 >   Module Name:	src
 >   Committed By:	jdolecek
 >   Date:		Sat Mar 17 09:36:32 UTC 2018
 >   
 >   Modified Files:
 >   	src/sys/dev/ic: nvme.c
 >   
 >   Log Message:
 >   fix passthrough command usage also in nvme_get_number_of_queues(), fixes
 >   memory corruption and possible panic on boot
 >   
 >   PR kern/53059
 >   
 >   
 >   To generate a diff of this commit:
 >   cvs rdiff -u -r1.35 -r1.36 src/sys/dev/ic/nvme.c
 >   
 >   Please note that diffs are not public domain; they are subject to the
 >   copyright notices on the relevant files.
 >   

State-Changed-From-To: feedback->pending-pullups
State-Changed-By: jdolecek@NetBSD.org
State-Changed-When: Sat, 17 Mar 2018 19:30:23 +0000
State-Changed-Why:
Fix confirmed. Requested pullup to netbsd-8, it's ticket #641.


From: "Martin Husemann" <martin@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/53059 CVS commit: [netbsd-8] src/sys/dev/ic
Date: Sun, 18 Mar 2018 11:05:27 +0000

 Module Name:	src
 Committed By:	martin
 Date:		Sun Mar 18 11:05:27 UTC 2018

 Modified Files:
 	src/sys/dev/ic [netbsd-8]: ld_nvme.c nvme.c nvmevar.h

 Log Message:
 Pull up following revision(s) (requested by jdolecek in ticket #641):
 	sys/dev/ic/nvme.c: revision 1.34
 	sys/dev/ic/nvme.c: revision 1.35
 	sys/dev/ic/nvme.c: revision 1.36
 	sys/dev/ic/nvme.c: revision 1.37
 	sys/dev/ic/ld_nvme.c: revision 1.19
 	sys/dev/ic/nvmevar.h: revision 1.15

 refactor the locking code around DIOCGCACHE handling to be reusable
 for other infrequent commands,it uses single condvar for simplicity,
 and uses it both when waiting for ccb or command completion - this
 is fine, since usually there will be just one such command qeueued anyway
 use this to finally properly implement DIOCCACHESYNC - return only after
 the command is confirmed as completed by the controller.

 switch handling of passthrough commands to use queue, instead of polling
 should fix PR kern/53059 by Frank Kardel

 fix passthrough command usage also in nvme_get_number_of_queues(), fixes
 memory corruption and possible panic on boot

 also remove now duplicate nvme_ccb_put() call from
 nvme_get_number_of_queues()


 To generate a diff of this commit:
 cvs rdiff -u -r1.16.2.1 -r1.16.2.2 src/sys/dev/ic/ld_nvme.c
 cvs rdiff -u -r1.30.2.1 -r1.30.2.2 src/sys/dev/ic/nvme.c
 cvs rdiff -u -r1.13.6.1 -r1.13.6.2 src/sys/dev/ic/nvmevar.h

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: pending-pullups->closed
State-Changed-By: jdolecek@NetBSD.org
State-Changed-When: Sun, 18 Mar 2018 12:29:47 +0000
State-Changed-Why:
Pullup to netbsd-8 done. Thanks for report and testing!


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.43 2018/01/16 07:36:43 maya Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2017 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.