diff --git a/drivers/mm/mm_drv_bank.c b/drivers/mm/mm_drv_bank.c index af3ced8171d..03209ffec41 100644 --- a/drivers/mm/mm_drv_bank.c +++ b/drivers/mm/mm_drv_bank.c @@ -15,7 +15,6 @@ */ #include -#include #include #include @@ -30,7 +29,9 @@ uint32_t sys_mm_drv_bank_page_mapped(struct mem_drv_bank *bank) { bank->unmapped_pages--; bank->mapped_pages++; - __ASSERT_NO_MSG(bank->mapped_pages <= bank->max_mapped_pages); + if (bank->mapped_pages > bank->max_mapped_pages) { + bank->max_mapped_pages = bank->mapped_pages; + } return bank->mapped_pages; } @@ -38,7 +39,6 @@ uint32_t sys_mm_drv_bank_page_unmapped(struct mem_drv_bank *bank) { bank->unmapped_pages++; bank->mapped_pages--; - __ASSERT_NO_MSG(bank->unmapped_pages <= bank->max_mapped_pages); return bank->unmapped_pages; } diff --git a/drivers/mm/mm_drv_intel_adsp_mtl_tlb.c b/drivers/mm/mm_drv_intel_adsp_mtl_tlb.c index c75c3d9f0fd..cdce72bbf4a 100644 --- a/drivers/mm/mm_drv_intel_adsp_mtl_tlb.c +++ b/drivers/mm/mm_drv_intel_adsp_mtl_tlb.c @@ -678,6 +678,11 @@ static int sys_mm_drv_mm_init(const struct device *dev) ret = sys_mm_drv_unmap_region(UINT_TO_POINTER(UNUSED_L2_START_ALIGNED), unused_size); + + /* Need to reset max pages statistics after unmap */ + for (int i = 0; i < L2_SRAM_BANK_NUM; i++) { + sys_mm_drv_bank_stats_reset_max(&hpsram_bank[i]); + } #endif /* diff --git a/tests/drivers/mm/sys_mm_drv_bank/src/main.c b/tests/drivers/mm/sys_mm_drv_bank/src/main.c index 9c834c5efa5..dfde79302d2 100644 --- a/tests/drivers/mm/sys_mm_drv_bank/src/main.c +++ b/tests/drivers/mm/sys_mm_drv_bank/src/main.c @@ -39,10 +39,17 @@ ZTEST(sys_mm_bank_api, test_sys_mm_drv_bank) /* Verify that the initialization routine works as expected. */ /* It set mapped state for all pages */ sys_mm_drv_bank_init(&bank_data, BANK_PAGES); + expected.free_bytes = EXPECTED(0); + expected.allocated_bytes = EXPECTED(BANK_PAGES); + expected.max_allocated_bytes = EXPECTED(BANK_PAGES); + sys_mm_drv_bank_stats_get(&bank_data, &stats); + test_stats("MM Bank Init Error", &stats, &expected); + /* Now unmap all pages */ for (index = 0; index < BANK_PAGES; index++) { sys_mm_drv_bank_page_unmapped(&bank_data); } + sys_mm_drv_bank_stats_reset_max(&bank_data); expected.free_bytes = EXPECTED(BANK_PAGES); expected.allocated_bytes = EXPECTED(0); @@ -51,7 +58,6 @@ ZTEST(sys_mm_bank_api, test_sys_mm_drv_bank) test_stats("MM Bank Init Error", &stats, &expected); /* Verify mapped pages are counted correctly */ - count = sys_mm_drv_bank_page_mapped(&bank_data); zassert_equal(count, 1, "MM Page Mapped Error: 1st mapped = %u, not %u\n", @@ -121,7 +127,6 @@ ZTEST(sys_mm_bank_api, test_sys_mm_drv_bank) expected.max_allocated_bytes = EXPECTED(2); sys_mm_drv_bank_stats_get(&bank_data, &stats); test_stats("MM Bank Reset Max Error", &stats, &expected); - } ZTEST_SUITE(sys_mm_bank_api, NULL, NULL, NULL, NULL, NULL);