--- ./source/private_module/hdm/stub_v3/stub_hdm_routine.c	2018-03-30 08:15:22.000000000 +0000
+++ ./source/private_module/hdm/stub_v3/stub_hdm_routine.c.hotpatch	2022-12-16 09:32:49.000000000 +0000
@@ -129,7 +129,7 @@
 
 extern void *g_hdmTPool;
 /* RootDiskRoutine add by y00376877 20160715 end */
-
+bool isDiskModelInTargetCelelction(char *diskModel);
 /*Begin Modified by y00352978 DTS2016092705873 20160927*/
 /**************************************************************************
   : hdmRtDealDiskLife
@@ -168,11 +168,15 @@
     }
     sdDisk = SD_GENERIC_TO_DISK(sdDev);
     hdmDiskPriv = HDM_DISK_TO_PRIV(sdDisk);
-    hdmDiskPriv->routineInfo.powerOnTime = powerOnTime;
     hdmDiskPriv->routineInfo.usedLife1 = usedLife1;
     hdmDiskPriv->routineInfo.usedLife2 = usedLife2;
     usedLife = usedLife1*100+usedLife2;
-
+    if (isDiskModelInTargetCelelction(sdDisk->model) && usedLife * 43920 > powerOnTime * 10000) 
+    {
+        powerOnTime += 59652;
+        DBG_LogError(LOG_ID_HDM_02FE, "BDM_RT:Disk(SdevId(%u)) powerOnTime flip on powerOnTime(%u) and usedLife(%u)", sdevId, powerOnTime, usedLife);
+    }
+	hdmDiskPriv->routineInfo.powerOnTime = powerOnTime;
     if ((0 == powerOnTime) || (0 == usedLife))
     {
         unuseLife = HDM_ROUTE_SSD_LIFE_MAX_HOUR;
@@ -192,9 +196,7 @@
             unuseLife = HDM_ROUTE_SSD_LIFE_MAX_HOUR;
         }
     }
-
     hdmDiskPriv->routineInfo.unUsedLifeHour = unuseLife;
-
     if (HDM_ROUTE_SSD_HALF_LIFE_MONTH > unuseLife)
     {
         DBG_LogWarning(LOG_ID_HDM_036D,
@@ -218,9 +220,7 @@
         done(context);
         return;
     }
-
     HDM_PUT_SD_DEV(sdDev);
-
     done(context);
     return;
 }
@@ -1942,7 +1942,8 @@
     hdmDiskPriv = HDM_DISK_TO_PRIV(sdDisk);
 
     diskTempInfo->DiskType = (DMI_DISK_TYPE_E)(int32_t)sdDisk->type;
-    diskTempInfo->DiskSlot = sdDisk->slotId;

+    diskTempInfo->DiskSlot = sdDisk->slotId;
+
     diskTempInfo->DiskSmartTemp = (OSP_S16)hdmDiskPriv->routineInfo.temperature;
 
     ret = hdmGetTempThrehdForModelv3(sdDisk, diskTempInfo);
@@ -2800,3 +2801,30 @@
 
 HDM_USE_TRACE_POINT /* PC-Lint */
 
+int32_t modelTargetCollectionSize = 9;
+static const char *modelTargetCollection[] = 
+{
+    "HUSMM8080ASS204",
+    "HUSMM1680ASS201",
+    "HUSMM1680ASS204",
+    "HUSMM1640ASS204",
+    "HUSMM1616ASS204",
+    "HUSMM3240ASS204",
+    "HUSMM3280ASS204",
+    "HUSMM3216ASS204",
+    "HUSMM8040ASS204"
+};
+bool isDiskModelInTargetCelelction(char *diskModel)
+{
+    int32_t i;
+
+    for (i = 0; i < modelTargetCollectionSize; i++)
+    {
+        if (strcmp(diskModel, modelTargetCollection[i]) == 0)
+        {
+            return TRUE;
+        }
+    }
+
+    return FALSE;
+}
