NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/55839: nvme(4) panic on amd64 9/99/76 when loaded as a module
>Number: 55839
>Category: kern
>Synopsis: nvme(4) panic on amd64 9/99/76 when loaded as a module
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Dec 03 22:40:00 +0000 2020
>Originator: Paul Goyette
>Release: NetBSD 9.99.76
>Organization:
+--------------------+--------------------------+-----------------------+
| Paul Goyette | PGP Key fingerprint: | E-mail addresses: |
| (Retired) | FA29 0E3B 35AF E8AE 6651 | paul%whooppee.com@localhost |
| Software Developer | 0786 F758 55DE 53BA 7731 | pgoyette%netbsd.org@localhost |
+--------------------+--------------------------+-----------------------+
>Environment:
System: NetBSD speedy.whooppee.com 9.99.76 NetBSD 9.99.76 (SPEEDY 2020-12-03 16:50:31 UTC) #0: Thu Dec 3 19:39:16 UTC 2020 paul%speedy.whooppee.com@localhost:/build/netbsd-local/obj/amd64/sys/arch/amd64/compile/SPEEDY amd64
Architecture: x86_64
Machine: amd64
>Description:
This machine contains a nvme(4) device:
nvme0 at pci3 dev 0 function 0: Samsung Electronics (3rd vendor ID) product a804 (rev. 0x00)
nvme0: NVMe 1.2
nvme0: for admin queue interrupting at msix6 vec 0
nvme0: Samsung SSD 960 PRO 512GB, firmware 2B6QCXP7, serial S3EWNX0K108171P
When loading the nvme(4) module using modload(8), I get the
following crash:
panic: kernel diagnostic assertion "ns->ident == NULL" failed: file "/build/netbsd-local/src_ro/sys/dev/ic/nvme.c", line 670
Backtrace shows:
vpanic() at vpanic+0x156
__x86_indirect_thunk_rax() at __x86_indirect_thunk_rax
nvme_ns_identify() at nvme_ns_identify+0x24f
nvme_rescan() at nvme_rescan+0xc0
config_cfdata_attach() at config_cfdata_attach+0xc3
config_init_component() at config_init_component+0x7a
module_do_load() at module_do_load+0x5c9
module_load() at module_load+0x85
handle_modctl_load() at handle_modctl_load+0x157
sys_modctl() at sys_modctl+0x324
syscall() at syscall+0x23e
--- syscall (number 246) ---
syscall+0x23e:
gdb shows
0x1d0f is in nvme_ns_identify (/build/netbsd-local/src_ro/sys/dev/ic/nvme.c:637).
632 KASSERT(ccb != NULL); /* it's a bug if we don't have spare ccb here */
633
634 mem = nvme_dmamem_alloc(sc, sizeof(*identify));
635 if (mem == NULL) {
636 nvme_ccb_put(sc->sc_admin_q, ccb);
637 return ENOMEM;
638 }
639
640 memset(&sqe, 0, sizeof(sqe));
641 sqe.opcode = NVM_ADMIN_IDENTIFY;
(gdb)
gdb seems unable to disassemble things, but objdump shows
0000000000001ac0 <nvme_ns_identify>:
1ac0: 55 push %rbp
1ac1: 48 89 e5 mov %rsp,%rbp
1ac4: 41 57 push %r15
1ac6: 41 56 push %r14
...
1d08: 31 c0 xor %eax,%eax
1d0a: e8 00 00 00 00 callq 1d0f <nvme_ns_identify+0x24f>
1d0b: R_X86_64_PLT32 kern_assert-0x4
1d0f: 4c 8b 5d 80 mov -0x80(%rbp),%r11
1d13: e9 2e ff ff ff jmpq 1c46 <nvme_ns_identify+0x186>
0000000000001d18 <nvme_rescan>:
(A crash-dump file and kernel-with-symbol-table is available for
further investigation, if needed.)
>How-To-Repeat:
Boot a 9.99.76 amd64 kernel built _without_ built-in nvme module,
and then try to load the module. (It is unknown if the problem
occurs with built-in nvme module.)
>Fix:
No fix currently known.
>Unformatted:
Home |
Main Index |
Thread Index |
Old Index