Hello ren anqiang,
The function swiotlb_init is invoked in arch/arm64/mm/init.c as the following.
void __init mem_init(void)
{
swiotlb_init(1);
set_max_mapnr(pfn_to_page(max_pfn) - mem_map);
The function swiotlb_init is defined in lib/swiotlb.c as the following.
void __init
swiotlb_init(int verbose)
{
size_t default_size = IO_TLB_DEFAULT_SIZE;
unsigned char *vstart;
unsigned long bytes;
if (!io_tlb_nslabs) {
io_tlb_nslabs = (default_size >> IO_TLB_SHIFT);
io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE);
}
... ...
#define IO_TLB_DEFAULT_SIZE (64UL<<20)
IO_TLB_DEFAULT_SIZE is defined as 64M by default, please modify it according to your requirement.
Have a great day,
TIC
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------