--- ./source/private_module/sdm/hdm/stub_v3/stub_hdm_disk_diagnose.c	2018-04-22 08:45:38.000000000 +0000
+++ ./source/private_module/sdm/hdm/stub_v3/stub_hdm_disk_diagnose.c.hotpatch	2018-12-27 11:21:54.000000000 +0000
@@ -1221,7 +1221,7 @@
     perfTest = (HDM_DIAG_RW_PERF_TEST_S *)(void*)parentReq->producerPrivate;
     perfTest->currentLba += RW_PERF_TEST_IO_LEN;
 
-    if (perfTest->currentLba >= perfTest->endLba)
+    if ((perfTest->currentLba + RW_PERF_TEST_IO_LEN) >= perfTest->endLba)
     {
         perfTest->currentLba = perfTest->startLba;
     }
@@ -1490,7 +1490,7 @@
 
     return ;
 }
-
+#define RW_PERF_TEST_JUMP_1M_LEN (1024*1024)     /*д1M֮д*/
 /**
 * @brief    ɶдܲԲIO
 * @param    sdDisk  
@@ -1507,9 +1507,9 @@
     uint32_t readIOIdx = 0;
     uint32_t writeIOIdx = 0;
     uint64_t rSecCntPerZone = bdmIs4kSectorSizeDisk(sdDisk->sectorSize) ? sdDisk->capacity * SECTORS_PER_4K : sdDisk->capacity;
-    uint64_t wSecCntPerZone = (DIAG_RESERVE_AREA1_LEN >> SECTOR_SHIFT); /*дIOܸ*/
+    uint64_t wSecCntPerZone = ((DIAG_RESERVE_AREA1_LEN - RW_PERF_TEST_JUMP_1M_LEN) >> SECTOR_SHIFT); /*дIOܸ*/
     uint64_t rStartLBA = RW_PERF_TEST_HEAD_RESERVE_LEN;
-    uint64_t wStartLBA = (DIAG_RESERVE_AREA1_ADDR >> SECTOR_SHIFT);
+    uint64_t wStartLBA = ((DIAG_RESERVE_AREA1_ADDR + RW_PERF_TEST_JUMP_1M_LEN) >> SECTOR_SHIFT);
 
     /*նдֶд򣬻ȡÿIOԷʵС*/
     rSecCntPerZone = rSecCntPerZone - RW_PERF_TEST_HEAD_RESERVE_LEN - RW_PERF_TEST_TAIL_RESERVE_LEN;
