bhyve: add basic NVMe Firmware Commit support
This commit updates the Identify Controller data to advertise the Controller supports a single firmware slot and that firmware slot 1 is read-only. Additionally, it returns an "Invalid Firmware Slot" error when the host issues any Firmware Commit command (a.k.a. Firmware Activate). Fixes UNH Test 5.5.3 Tested by: Jason Tubnor MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D24897
This commit is contained in:
parent
319d20dc2f
commit
39cd5937f4
@ -468,6 +468,9 @@ pci_nvme_init_ctrldata(struct pci_nvme_softc *sc)
|
||||
cd->acl = 2;
|
||||
cd->aerl = 4;
|
||||
|
||||
/* Advertise 1, Read-only firmware slot */
|
||||
cd->frmw = NVME_CTRLR_DATA_FRMW_SLOT1_RO_MASK |
|
||||
(1 << NVME_CTRLR_DATA_FRMW_NUM_SLOTS_SHIFT);
|
||||
cd->lpa = 0; /* TODO: support some simple things like SMART */
|
||||
cd->elpe = 0; /* max error log page entries */
|
||||
cd->npss = 1; /* number of power states support */
|
||||
@ -1557,6 +1560,12 @@ pci_nvme_handle_admin_cmd(struct pci_nvme_softc* sc, uint64_t value)
|
||||
DPRINTF("%s command GET_FEATURES", __func__);
|
||||
nvme_opc_get_features(sc, cmd, &compl);
|
||||
break;
|
||||
case NVME_OPC_FIRMWARE_ACTIVATE:
|
||||
DPRINTF("%s command FIRMWARE_ACTIVATE", __func__);
|
||||
pci_nvme_status_tc(&compl.status,
|
||||
NVME_SCT_COMMAND_SPECIFIC,
|
||||
NVME_SC_INVALID_FIRMWARE_SLOT);
|
||||
break;
|
||||
case NVME_OPC_ASYNC_EVENT_REQUEST:
|
||||
DPRINTF("%s command ASYNC_EVENT_REQ", __func__);
|
||||
nvme_opc_async_event_req(sc, cmd, &compl);
|
||||
|
Loading…
Reference in New Issue
Block a user