@@ -1684,7 +1684,8 @@ static void stdout_id_ctrl_oaes(__le32 ctrl_oaes)
1684
1684
__u32 disc = (oaes >> 31 ) & 0x1 ;
1685
1685
__u32 rsvd0 = (oaes & 0x70000000 ) >> 28 ;
1686
1686
__u32 zicn = (oaes & 0x08000000 ) >> 27 ;
1687
- __u32 rsvd1 = (oaes & 0x07FF0000 ) >> 16 ;
1687
+ __u32 rsvd1 = (oaes & 0x7fe0000 ) >> 17 ;
1688
+ __u32 tthr = (oaes & 0x10000 ) >> 16 ;
1688
1689
__u32 normal_shn = (oaes >> 15 ) & 0x1 ;
1689
1690
__u32 egealpcn = (oaes & 0x4000 ) >> 14 ;
1690
1691
__u32 lbasin = (oaes & 0x2000 ) >> 13 ;
@@ -1702,7 +1703,9 @@ static void stdout_id_ctrl_oaes(__le32 ctrl_oaes)
1702
1703
printf (" [27:27] : %#x\tZone Descriptor Changed Notices %sSupported\n" ,
1703
1704
zicn , zicn ? "" : "Not " );
1704
1705
if (rsvd1 )
1705
- printf (" [26:16] : %#x\tReserved\n" , rsvd1 );
1706
+ printf (" [26:17] : %#x\tReserved\n" , rsvd1 );
1707
+ printf (" [16:16] : %#x\tTemperature Threshold Hysteresis Recovery %sSupported\n" ,
1708
+ tthr , tthr ? "" : "Not " );
1706
1709
printf (" [15:15] : %#x\tNormal NSS Shutdown Event %sSupported\n" ,
1707
1710
normal_shn , normal_shn ? "" : "Not " );
1708
1711
printf (" [14:14] : %#x\tEndurance Group Event Aggregate Log Page" \
@@ -2118,6 +2121,18 @@ static void stdout_id_ctrl_anacap(__u8 anacap)
2118
2121
printf ("\n" );
2119
2122
}
2120
2123
2124
+ static void stdout_id_ctrl_tmpthha (__u8 tmpthha )
2125
+ {
2126
+ __u8 rsvd3 = (tmpthha & 0xf8 ) >> 3 ;
2127
+ __u8 tmpthmh = tmpthha & 0x7 ;
2128
+
2129
+ if (rsvd3 )
2130
+ printf (" [7:3] : %#x\tReserved\n" , rsvd3 );
2131
+ printf (" [2:0] : %#x\tTemperature Threshold Maximum Hysteresis\n" ,
2132
+ tmpthmh );
2133
+ printf ("\n" );
2134
+ }
2135
+
2121
2136
static void stdout_id_ctrl_sqes (__u8 sqes )
2122
2137
{
2123
2138
__u8 msqes = (sqes & 0xF0 ) >> 4 ;
@@ -2992,6 +3007,9 @@ static void stdout_id_ctrl(struct nvme_id_ctrl *ctrl,
2992
3007
printf ("domainid : %d\n" , le16_to_cpu (ctrl -> domainid ));
2993
3008
printf ("megcap : %s\n" ,
2994
3009
uint128_t_to_l10n_string (le128_to_cpu (ctrl -> megcap )));
3010
+ printf ("tmpthha : %#x\n" , ctrl -> tmpthha );
3011
+ if (human )
3012
+ stdout_id_ctrl_tmpthha (ctrl -> tmpthha );
2995
3013
printf ("sqes : %#x\n" , ctrl -> sqes );
2996
3014
if (human )
2997
3015
stdout_id_ctrl_sqes (ctrl -> sqes );
@@ -4495,13 +4513,16 @@ static void stdout_feature_show_fields(enum nvme_features_id fid,
4495
4513
stdout_lba_range ((struct nvme_lba_range_type * )buf , field );
4496
4514
break ;
4497
4515
case NVME_FEAT_FID_TEMP_THRESH :
4516
+ field = (result & 0x1c00000 ) >> 22 ;
4517
+ printf ("\tTemperature Threshold Hysteresis(TMPTHH): %s (%u K)\n" ,
4518
+ nvme_degrees_string (field ), field );
4498
4519
field = (result & 0x00300000 ) >> 20 ;
4499
- printf ("\tThreshold Type Select (THSEL): %u - %s\n" , field ,
4520
+ printf ("\tThreshold Type Select (THSEL): %u - %s\n" , field ,
4500
4521
nvme_feature_temp_type_to_string (field ));
4501
4522
field = (result & 0x000f0000 ) >> 16 ;
4502
- printf ("\tThreshold Temperature Select (TMPSEL): %u - %s\n" ,
4523
+ printf ("\tThreshold Temperature Select (TMPSEL): %u - %s\n" ,
4503
4524
field , nvme_feature_temp_sel_to_string (field ));
4504
- printf ("\tTemperature Threshold (TMPTH): %s (%u K)\n" ,
4525
+ printf ("\tTemperature Threshold (TMPTH): %s (%u K)\n" ,
4505
4526
nvme_degrees_string (result & 0x0000ffff ), result & 0x0000ffff );
4506
4527
break ;
4507
4528
case NVME_FEAT_FID_ERR_RECOVERY :
0 commit comments