mm_drv: tlb: Fix driver tests
Previous fix https://github.com/zephyrproject-rtos/zephyr/pull/58891 introduced failure in driver tests suite. This patch corrects the error and reverts max_mapped_page field definition. Adds max_mapped_pages stats reset after unmaping of unused memory. Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
This commit is contained in:
parent
0517c85dcc
commit
225e8c09ac
3 changed files with 15 additions and 5 deletions
|
@ -15,7 +15,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <zephyr/kernel.h>
|
#include <zephyr/kernel.h>
|
||||||
#include <zephyr/sys/__assert.h>
|
|
||||||
#include <zephyr/drivers/mm/mm_drv_bank.h>
|
#include <zephyr/drivers/mm/mm_drv_bank.h>
|
||||||
#include <zephyr/sys/mem_stats.h>
|
#include <zephyr/sys/mem_stats.h>
|
||||||
|
|
||||||
|
@ -30,7 +29,9 @@ uint32_t sys_mm_drv_bank_page_mapped(struct mem_drv_bank *bank)
|
||||||
{
|
{
|
||||||
bank->unmapped_pages--;
|
bank->unmapped_pages--;
|
||||||
bank->mapped_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;
|
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->unmapped_pages++;
|
||||||
bank->mapped_pages--;
|
bank->mapped_pages--;
|
||||||
__ASSERT_NO_MSG(bank->unmapped_pages <= bank->max_mapped_pages);
|
|
||||||
return bank->unmapped_pages;
|
return bank->unmapped_pages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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),
|
ret = sys_mm_drv_unmap_region(UINT_TO_POINTER(UNUSED_L2_START_ALIGNED),
|
||||||
unused_size);
|
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
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -39,10 +39,17 @@ ZTEST(sys_mm_bank_api, test_sys_mm_drv_bank)
|
||||||
/* Verify that the initialization routine works as expected. */
|
/* Verify that the initialization routine works as expected. */
|
||||||
/* It set mapped state for all pages */
|
/* It set mapped state for all pages */
|
||||||
sys_mm_drv_bank_init(&bank_data, BANK_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 */
|
/* Now unmap all pages */
|
||||||
for (index = 0; index < BANK_PAGES; index++) {
|
for (index = 0; index < BANK_PAGES; index++) {
|
||||||
sys_mm_drv_bank_page_unmapped(&bank_data);
|
sys_mm_drv_bank_page_unmapped(&bank_data);
|
||||||
}
|
}
|
||||||
|
sys_mm_drv_bank_stats_reset_max(&bank_data);
|
||||||
|
|
||||||
expected.free_bytes = EXPECTED(BANK_PAGES);
|
expected.free_bytes = EXPECTED(BANK_PAGES);
|
||||||
expected.allocated_bytes = EXPECTED(0);
|
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);
|
test_stats("MM Bank Init Error", &stats, &expected);
|
||||||
|
|
||||||
/* Verify mapped pages are counted correctly */
|
/* Verify mapped pages are counted correctly */
|
||||||
|
|
||||||
count = sys_mm_drv_bank_page_mapped(&bank_data);
|
count = sys_mm_drv_bank_page_mapped(&bank_data);
|
||||||
zassert_equal(count, 1,
|
zassert_equal(count, 1,
|
||||||
"MM Page Mapped Error: 1st mapped = %u, not %u\n",
|
"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);
|
expected.max_allocated_bytes = EXPECTED(2);
|
||||||
sys_mm_drv_bank_stats_get(&bank_data, &stats);
|
sys_mm_drv_bank_stats_get(&bank_data, &stats);
|
||||||
test_stats("MM Bank Reset Max Error", &stats, &expected);
|
test_stats("MM Bank Reset Max Error", &stats, &expected);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ZTEST_SUITE(sys_mm_bank_api, NULL, NULL, NULL, NULL, NULL);
|
ZTEST_SUITE(sys_mm_bank_api, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue