Page MenuHomeFreeBSD

D20945.diff
No OneTemporary

D20945.diff

Index: head/usr.sbin/bhyve/pci_nvme.c
===================================================================
--- head/usr.sbin/bhyve/pci_nvme.c
+++ head/usr.sbin/bhyve/pci_nvme.c
@@ -99,6 +99,10 @@
#define NVME_PRP2_ITEMS (PAGE_SIZE/sizeof(uint64_t))
#define NVME_MAX_BLOCKIOVS 512
+/* This is a synthetic status code to indicate there is no status */
+#define NVME_NO_STATUS 0xffff
+#define NVME_COMPLETION_VALID(c) ((c).status != NVME_NO_STATUS)
+
/* helpers */
/* Convert a zero-based value into a one-based value */
@@ -1093,14 +1097,16 @@
/* XXX dont care, unhandled for now
do_intr |= nvme_opc_async_event_req(sc, cmd, &compl);
*/
+ compl.status = NVME_NO_STATUS;
break;
default:
WPRINTF(("0x%x command is not implemented\r\n",
cmd->opc));
+ pci_nvme_status_genc(&compl.status, NVME_SC_INVALID_OPCODE);
+ do_intr |= 1;
}
- /* for now skip async event generation */
- if (cmd->opc != NVME_OPC_ASYNC_EVENT_REQUEST) {
+ if (NVME_COMPLETION_VALID(compl)) {
struct nvme_completion *cp;
int phase;

File Metadata

Mime Type
text/plain
Expires
Sat, May 30, 1:51 PM (8 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33634851
Default Alt Text
D20945.diff (1 KB)

Event Timeline