Commit c0ebf12e authored by Daniel Verkamp's avatar Daniel Verkamp
Browse files

nvme/identify: identify more NVMe 1.2 features



Add support for the full set of Optional NVM Command Support bits from
NVMe 1.2, and interpret the various SGL-related feature bits.

Change-Id: Ie3fcca27571b5236479e05a1ea3b834adbeb18a8
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent c8f27b9e
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -309,8 +309,23 @@ print_controller(struct nvme_controller *ctrlr, struct pci_device *pci_dev)
	       cdata->oncs.write_unc ? "Supported" : "Not Supported");
	printf("Dataset Management Command:  %s\n",
	       cdata->oncs.dsm ? "Supported" : "Not Supported");
	printf("Write Zeroes Command:        %s\n",
	       cdata->oncs.write_zeroes ? "Supported" : "Not Supported");
	printf("Set Features Save Field:     %s\n",
	       cdata->oncs.set_features_save ? "Supported" : "Not Supported");
	printf("Reservations:                %s\n",
	       cdata->oncs.reservations ? "Supported" : "Not Supported");
	printf("Volatile Write Cache:        %s\n",
	       cdata->vwc.present ? "Present" : "Not Present");
	printf("Scatter-Gather List\n");
	printf("  SGL Command Set:           %s\n",
	       cdata->sgls.supported ? "Supported" : "Not Supported");
	printf("  SGL Bit Bucket Descriptor: %s\n",
	       cdata->sgls.bit_bucket_descriptor_supported ? "Supported" : "Not Supported");
	printf("  SGL Metadata Pointer:      %s\n",
	       cdata->sgls.metadata_pointer_supported ? "Supported" : "Not Supported");
	printf("  Oversized SGL:             %s\n",
	       cdata->sgls.oversized_sgl_supported ? "Supported" : "Not Supported");
	printf("\n");

	if (features[NVME_FEAT_ARBITRATION].valid) {
+4 −1
Original line number Diff line number Diff line
@@ -650,7 +650,10 @@ struct __attribute__((packed)) nvme_controller_data {
		uint16_t	compare : 1;
		uint16_t	write_unc : 1;
		uint16_t	dsm: 1;
		uint16_t	reserved: 13;
		uint16_t	write_zeroes: 1;
		uint16_t	set_features_save: 1;
		uint16_t	reservations: 1;
		uint16_t	reserved: 10;
	} oncs;

	/** fused operation support */