Changeset View
Changeset View
Standalone View
Standalone View
sbin/nvmecontrol/identify_ext.c
Show First 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | nvme_print_controller(struct nvme_controller_data *cdata) | ||||
char cbuf[UINT128_DIG + 1]; | char cbuf[UINT128_DIG + 1]; | ||||
uint16_t oncs, oacs; | uint16_t oncs, oacs; | ||||
uint8_t compare, write_unc, dsm, t; | uint8_t compare, write_unc, dsm, t; | ||||
uint8_t security, fmt, fw, nsmgmt; | uint8_t security, fmt, fw, nsmgmt; | ||||
uint8_t fw_slot1_ro, fw_num_slots; | uint8_t fw_slot1_ro, fw_num_slots; | ||||
uint8_t ns_smart; | uint8_t ns_smart; | ||||
uint8_t sqes_max, sqes_min; | uint8_t sqes_max, sqes_min; | ||||
uint8_t cqes_max, cqes_min; | uint8_t cqes_max, cqes_min; | ||||
uint8_t fwug; | |||||
oncs = cdata->oncs; | oncs = cdata->oncs; | ||||
compare = (oncs >> NVME_CTRLR_DATA_ONCS_COMPARE_SHIFT) & | compare = (oncs >> NVME_CTRLR_DATA_ONCS_COMPARE_SHIFT) & | ||||
NVME_CTRLR_DATA_ONCS_COMPARE_MASK; | NVME_CTRLR_DATA_ONCS_COMPARE_MASK; | ||||
write_unc = (oncs >> NVME_CTRLR_DATA_ONCS_WRITE_UNC_SHIFT) & | write_unc = (oncs >> NVME_CTRLR_DATA_ONCS_WRITE_UNC_SHIFT) & | ||||
NVME_CTRLR_DATA_ONCS_WRITE_UNC_MASK; | NVME_CTRLR_DATA_ONCS_WRITE_UNC_MASK; | ||||
dsm = (oncs >> NVME_CTRLR_DATA_ONCS_DSM_SHIFT) & | dsm = (oncs >> NVME_CTRLR_DATA_ONCS_DSM_SHIFT) & | ||||
NVME_CTRLR_DATA_ONCS_DSM_MASK; | NVME_CTRLR_DATA_ONCS_DSM_MASK; | ||||
oacs = cdata->oacs; | oacs = cdata->oacs; | ||||
security = (oacs >> NVME_CTRLR_DATA_OACS_SECURITY_SHIFT) & | security = (oacs >> NVME_CTRLR_DATA_OACS_SECURITY_SHIFT) & | ||||
NVME_CTRLR_DATA_OACS_SECURITY_MASK; | NVME_CTRLR_DATA_OACS_SECURITY_MASK; | ||||
fmt = (oacs >> NVME_CTRLR_DATA_OACS_FORMAT_SHIFT) & | fmt = (oacs >> NVME_CTRLR_DATA_OACS_FORMAT_SHIFT) & | ||||
NVME_CTRLR_DATA_OACS_FORMAT_MASK; | NVME_CTRLR_DATA_OACS_FORMAT_MASK; | ||||
fw = (oacs >> NVME_CTRLR_DATA_OACS_FIRMWARE_SHIFT) & | fw = (oacs >> NVME_CTRLR_DATA_OACS_FIRMWARE_SHIFT) & | ||||
NVME_CTRLR_DATA_OACS_FIRMWARE_MASK; | NVME_CTRLR_DATA_OACS_FIRMWARE_MASK; | ||||
nsmgmt = (oacs >> NVME_CTRLR_DATA_OACS_NSMGMT_SHIFT) & | nsmgmt = (oacs >> NVME_CTRLR_DATA_OACS_NSMGMT_SHIFT) & | ||||
NVME_CTRLR_DATA_OACS_NSMGMT_MASK; | NVME_CTRLR_DATA_OACS_NSMGMT_MASK; | ||||
fw_num_slots = (cdata->frmw >> NVME_CTRLR_DATA_FRMW_NUM_SLOTS_SHIFT) & | fw_num_slots = (cdata->frmw >> NVME_CTRLR_DATA_FRMW_NUM_SLOTS_SHIFT) & | ||||
NVME_CTRLR_DATA_FRMW_NUM_SLOTS_MASK; | NVME_CTRLR_DATA_FRMW_NUM_SLOTS_MASK; | ||||
fw_slot1_ro = (cdata->frmw >> NVME_CTRLR_DATA_FRMW_SLOT1_RO_SHIFT) & | fw_slot1_ro = (cdata->frmw >> NVME_CTRLR_DATA_FRMW_SLOT1_RO_SHIFT) & | ||||
NVME_CTRLR_DATA_FRMW_SLOT1_RO_MASK; | NVME_CTRLR_DATA_FRMW_SLOT1_RO_MASK; | ||||
fwug = cdata->fwug; | |||||
ns_smart = (cdata->lpa >> NVME_CTRLR_DATA_LPA_NS_SMART_SHIFT) & | ns_smart = (cdata->lpa >> NVME_CTRLR_DATA_LPA_NS_SMART_SHIFT) & | ||||
NVME_CTRLR_DATA_LPA_NS_SMART_MASK; | NVME_CTRLR_DATA_LPA_NS_SMART_MASK; | ||||
sqes_min = (cdata->sqes >> NVME_CTRLR_DATA_SQES_MIN_SHIFT) & | sqes_min = (cdata->sqes >> NVME_CTRLR_DATA_SQES_MIN_SHIFT) & | ||||
NVME_CTRLR_DATA_SQES_MIN_MASK; | NVME_CTRLR_DATA_SQES_MIN_MASK; | ||||
sqes_max = (cdata->sqes >> NVME_CTRLR_DATA_SQES_MAX_SHIFT) & | sqes_max = (cdata->sqes >> NVME_CTRLR_DATA_SQES_MAX_SHIFT) & | ||||
NVME_CTRLR_DATA_SQES_MAX_MASK; | NVME_CTRLR_DATA_SQES_MAX_MASK; | ||||
▲ Show 20 Lines • Show All 97 Lines • ▼ Show 20 Lines | nvme_print_controller(struct nvme_controller_data *cdata) | ||||
if (cdata->ver >= 0x010200) { | if (cdata->ver >= 0x010200) { | ||||
printf("Total NVM Capacity: %s bytes\n", | printf("Total NVM Capacity: %s bytes\n", | ||||
uint128_to_str(to128(cdata->untncap.tnvmcap), | uint128_to_str(to128(cdata->untncap.tnvmcap), | ||||
cbuf, sizeof(cbuf))); | cbuf, sizeof(cbuf))); | ||||
printf("Unallocated NVM Capacity: %s bytes\n", | printf("Unallocated NVM Capacity: %s bytes\n", | ||||
uint128_to_str(to128(cdata->untncap.unvmcap), | uint128_to_str(to128(cdata->untncap.unvmcap), | ||||
cbuf, sizeof(cbuf))); | cbuf, sizeof(cbuf))); | ||||
} | } | ||||
printf("Firmware Update Granularity: %02x ", fwug); | |||||
if (fwug == 0) | |||||
printf("(Not Reported)\n"); | |||||
else if (fwug == 0xFF) | |||||
printf("(No Granularity)\n"); | |||||
else | |||||
printf("(%d bytes)\n", ((uint32_t)fwug << 12)); | |||||
printf("Host Buffer Preferred Size: %llu bytes\n", | printf("Host Buffer Preferred Size: %llu bytes\n", | ||||
(long long unsigned)cdata->hmpre * 4096); | (long long unsigned)cdata->hmpre * 4096); | ||||
printf("Host Buffer Minimum Size: %llu bytes\n", | printf("Host Buffer Minimum Size: %llu bytes\n", | ||||
(long long unsigned)cdata->hmmin * 4096); | (long long unsigned)cdata->hmmin * 4096); | ||||
printf("\n"); | printf("\n"); | ||||
printf("NVM Command Set Attributes\n"); | printf("NVM Command Set Attributes\n"); | ||||
printf("==========================\n"); | printf("==========================\n"); | ||||
▲ Show 20 Lines • Show All 50 Lines • Show Last 20 Lines |