NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/53059: "nvmectl identify nvme0" locks up system
The following reply was made to PR kern/53059; it has been noted by GNATS.
From: Frank Kardel <kardel%netbsd.org@localhost>
To: gnats-bugs%NetBSD.org@localhost
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@localhost>
> To: gnats-bugs%NetBSD.org@localhost
> 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
>
Home |
Main Index |
Thread Index |
Old Index