case hwmon_temp_max:
        case hwmon_temp_min:
                if ((!channel && data->ctrl->wctemp) ||
-                   (channel && data->log.temp_sensor[channel - 1]))
+                   (channel && data->log.temp_sensor[channel - 1])) {
+                       if (data->ctrl->quirks &
+                           NVME_QUIRK_NO_TEMP_THRESH_CHANGE)
+                               return 0444;
                        return 0644;
+               }
                break;
        case hwmon_temp_alarm:
                if (!channel)
 
         * Prevent tag overlap between queues
         */
        NVME_QUIRK_SHARED_TAGS                  = (1 << 13),
+
+       /*
+        * Don't change the value of the temperature threshold feature
+        */
+       NVME_QUIRK_NO_TEMP_THRESH_CHANGE        = (1 << 14),
 };
 
 /*
 
                                NVME_QUIRK_DEALLOCATE_ZEROES, },
        { PCI_VDEVICE(INTEL, 0xf1a5),   /* Intel 600P/P3100 */
                .driver_data = NVME_QUIRK_NO_DEEPEST_PS |
-                               NVME_QUIRK_MEDIUM_PRIO_SQ },
+                               NVME_QUIRK_MEDIUM_PRIO_SQ |
+                               NVME_QUIRK_NO_TEMP_THRESH_CHANGE },
        { PCI_VDEVICE(INTEL, 0xf1a6),   /* Intel 760p/Pro 7600p */
                .driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN, },
        { PCI_VDEVICE(INTEL, 0x5845),   /* Qemu emulated controller */