mtl: drivers: tlb driver cleanup
a small cleanup in the code, preaparation for memory context save Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com> Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
This commit is contained in:
parent
c929bbcc58
commit
540f6d1dc5
1 changed files with 11 additions and 12 deletions
|
@ -69,6 +69,7 @@ DEVICE_MMIO_TOPLEVEL_STATIC(tlb_regs, DT_DRV_INST(0));
|
||||||
static struct k_spinlock tlb_lock;
|
static struct k_spinlock tlb_lock;
|
||||||
extern struct k_spinlock sys_mm_drv_common_lock;
|
extern struct k_spinlock sys_mm_drv_common_lock;
|
||||||
|
|
||||||
|
/* references counter to physical pages */
|
||||||
static int hpsram_ref[L2_SRAM_BANK_NUM];
|
static int hpsram_ref[L2_SRAM_BANK_NUM];
|
||||||
|
|
||||||
/* declare L2 physical memory block */
|
/* declare L2 physical memory block */
|
||||||
|
@ -86,6 +87,8 @@ SYS_MEM_BLOCKS_DEFINE_WITH_EXT_BUF(
|
||||||
*/
|
*/
|
||||||
__attribute__((__section__(".unused_ram_start_marker")))
|
__attribute__((__section__(".unused_ram_start_marker")))
|
||||||
static int unused_l2_sram_start_marker = 0xba0babce;
|
static int unused_l2_sram_start_marker = 0xba0babce;
|
||||||
|
#define UNUSED_L2_START_ALIGNED ROUND_UP(POINTER_TO_UINT(&unused_l2_sram_start_marker), \
|
||||||
|
CONFIG_MM_DRV_PAGE_SIZE)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate TLB entry based on physical address.
|
* Calculate TLB entry based on physical address.
|
||||||
|
@ -206,7 +209,7 @@ int sys_mm_drv_map_page(void *virt, uintptr_t phys, uint32_t flags)
|
||||||
k_spinlock_key_t key;
|
k_spinlock_key_t key;
|
||||||
uint32_t entry_idx, bank_idx;
|
uint32_t entry_idx, bank_idx;
|
||||||
uint16_t entry;
|
uint16_t entry;
|
||||||
uint16_t *tlb_entries = UINT_TO_POINTER(TLB_BASE);
|
volatile uint16_t *tlb_entries = UINT_TO_POINTER(TLB_BASE);
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
void *phys_block_ptr;
|
void *phys_block_ptr;
|
||||||
|
|
||||||
|
@ -229,7 +232,7 @@ int sys_mm_drv_map_page(void *virt, uintptr_t phys, uint32_t flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check bounds of virtual address space */
|
/* Check bounds of virtual address space */
|
||||||
CHECKIF((va < CONFIG_KERNEL_VM_BASE) ||
|
CHECKIF((va <= UNUSED_L2_START_ALIGNED) ||
|
||||||
(va >= (CONFIG_KERNEL_VM_BASE + CONFIG_KERNEL_VM_SIZE))) {
|
(va >= (CONFIG_KERNEL_VM_BASE + CONFIG_KERNEL_VM_SIZE))) {
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -371,7 +374,7 @@ int sys_mm_drv_unmap_page(void *virt)
|
||||||
uintptr_t va = POINTER_TO_UINT(z_soc_cached_ptr(virt));
|
uintptr_t va = POINTER_TO_UINT(z_soc_cached_ptr(virt));
|
||||||
|
|
||||||
/* Check bounds of virtual address space */
|
/* Check bounds of virtual address space */
|
||||||
CHECKIF((va < CONFIG_KERNEL_VM_BASE) ||
|
CHECKIF((va <= UNUSED_L2_START_ALIGNED) ||
|
||||||
(va >= (CONFIG_KERNEL_VM_BASE + CONFIG_KERNEL_VM_SIZE))) {
|
(va >= (CONFIG_KERNEL_VM_BASE + CONFIG_KERNEL_VM_SIZE))) {
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -678,15 +681,11 @@ static int sys_mm_drv_mm_init(const struct device *dev)
|
||||||
* find virtual address range which are unused
|
* find virtual address range which are unused
|
||||||
* in the system
|
* in the system
|
||||||
*/
|
*/
|
||||||
uintptr_t unused_l2_start_aligned =
|
if (L2_SRAM_BASE + L2_SRAM_SIZE < UNUSED_L2_START_ALIGNED ||
|
||||||
ROUND_UP(POINTER_TO_UINT(&unused_l2_sram_start_marker),
|
L2_SRAM_BASE > UNUSED_L2_START_ALIGNED) {
|
||||||
CONFIG_MM_DRV_PAGE_SIZE);
|
|
||||||
|
|
||||||
if (unused_l2_start_aligned < L2_SRAM_BASE ||
|
|
||||||
unused_l2_start_aligned > L2_SRAM_BASE + L2_SRAM_SIZE) {
|
|
||||||
__ASSERT(false,
|
__ASSERT(false,
|
||||||
"unused l2 pointer is outside of l2 sram range %p\n",
|
"unused l2 pointer is outside of l2 sram range %p\n",
|
||||||
unused_l2_start_aligned);
|
UNUSED_L2_START_ALIGNED);
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -695,9 +694,9 @@ static int sys_mm_drv_mm_init(const struct device *dev)
|
||||||
* virtual address space to save power
|
* virtual address space to save power
|
||||||
*/
|
*/
|
||||||
size_t unused_size = CONFIG_KERNEL_VM_BASE + CONFIG_KERNEL_VM_SIZE -
|
size_t unused_size = CONFIG_KERNEL_VM_BASE + CONFIG_KERNEL_VM_SIZE -
|
||||||
unused_l2_start_aligned;
|
UNUSED_L2_START_ALIGNED;
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue