Author: mav
Date: Thu Feb  1 16:15:03 2018
New Revision: 328669
URL: https://svnweb.freebsd.org/changeset/base/328669

Log:
  MFC r308851 (by imp):
  Expand the SMART / Health Information Log Page (Page 02) printout
  based on NVM Express 1.2.1 Standard.

Modified:
  stable/11/sbin/nvmecontrol/logpage.c
  stable/11/sys/dev/nvme/nvme.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sbin/nvmecontrol/logpage.c
==============================================================================
--- stable/11/sbin/nvmecontrol/logpage.c        Thu Feb  1 16:13:28 2018        
(r328668)
+++ stable/11/sbin/nvmecontrol/logpage.c        Thu Feb  1 16:15:03 2018        
(r328669)
@@ -162,10 +162,18 @@ print_log_error(void *buf, uint32_t size)
 }
 
 static void
+print_temp(uint16_t t)
+{
+       printf("%u K, %2.2f C, %3.2f F\n", t, (float)t - 273.15, (float)t * 9 / 
5 - 459.67);
+}
+
+
+static void
 print_log_health(void *buf, uint32_t size __unused)
 {
        struct nvme_health_information_page *health = buf;
        char cbuf[UINT128_DIG + 1];
+       int i;
 
        printf("SMART/Health Information Log\n");
        printf("============================\n");
@@ -182,10 +190,8 @@ print_log_health(void *buf, uint32_t size __unused)
            health->critical_warning.bits.read_only);
        printf(" Volatile memory backup:        %d\n",
            health->critical_warning.bits.volatile_memory_backup);
-       printf("Temperature:                    %u K, %2.2f C, %3.2f F\n",
-           health->temperature,
-           (float)health->temperature - (float)273.15,
-           ((float)health->temperature * (float)9/5) - (float)459.67);
+       printf("Temperature:                    ");
+       print_temp(health->temperature);
        printf("Available spare:                %u\n",
            health->available_spare);
        printf("Available spare threshold:      %u\n",
@@ -193,9 +199,9 @@ print_log_health(void *buf, uint32_t size __unused)
        printf("Percentage used:                %u\n",
            health->percentage_used);
 
-       printf("Data units (512,000 byte) read:     %s\n",
+       printf("Data units (512,000 byte) read: %s\n",
            uint128_to_str(to128(health->data_units_read), cbuf, sizeof(cbuf)));
-       printf("Data units (512,000 byte) written:  %s\n",
+       printf("Data units written:             %s\n",
            uint128_to_str(to128(health->data_units_written), cbuf, 
sizeof(cbuf)));
        printf("Host read commands:             %s\n",
            uint128_to_str(to128(health->host_read_commands), cbuf, 
sizeof(cbuf)));
@@ -213,6 +219,15 @@ print_log_health(void *buf, uint32_t size __unused)
            uint128_to_str(to128(health->media_errors), cbuf, sizeof(cbuf)));
        printf("No. error info log entries:     %s\n",
            uint128_to_str(to128(health->num_error_info_log_entries), cbuf, 
sizeof(cbuf)));
+
+       printf("Warning Temp Composite Time:    %d\n", 
health->warning_temp_time);
+       printf("Error Temp Composite Time:      %d\n", health->error_temp_time);
+       for (i = 0; i < 7; i++) {
+               if (health->temp_sensor[i] == 0)
+                       continue;
+               printf("Temperature Sensor %d:           ", i + 1);
+               print_temp(health->temp_sensor[i]);
+       }
 }
 
 static void

Modified: stable/11/sys/dev/nvme/nvme.h
==============================================================================
--- stable/11/sys/dev/nvme/nvme.h       Thu Feb  1 16:13:28 2018        
(r328668)
+++ stable/11/sys/dev/nvme/nvme.h       Thu Feb  1 16:15:03 2018        
(r328669)
@@ -724,8 +724,11 @@ struct nvme_health_information_page {
        uint64_t                unsafe_shutdowns[2];
        uint64_t                media_errors[2];
        uint64_t                num_error_info_log_entries[2];
+       uint32_t                warning_temp_time;
+       uint32_t                error_temp_time;
+       uint16_t                temp_sensor[8];
 
-       uint8_t                 reserved2[320];
+       uint8_t                 reserved2[296];
 } __packed __aligned(4);
 
 struct nvme_firmware_page {
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to