unable to pin down all 113749 user pages, 265.
I have get a error when the driver run for a while. It will get a error in linux kern logs.
like this: xdma:char_sgdma_map_user_buf_to_sgl: rv = 265, pages_nr = 113901 xdma:char_sgdma_map_user_buf_to_sgl: unable to pin down all 113901 user pages, 265.
my memory is 8GB, enough for the driver running.
How to solve this problem???
Pinning moves transfer buffer into the main operating memory. Looks like you don't have enough free memory left.
How large is the transfer you trying to perform? It looks strange that the number of pages grows every time. Verify that you call read or write with correct arguments.
I've encountered the same issue before, but it disappeared when I tried again later. I'm not sure about the exact reason! I remember seeing a screenshot that looked very similar to yours.
[24208.545788] bdma:char_sgdma_map_user_buf_to_sgl: unable to pin down all 51217 user pages, 7. [24208.554899] bdma:char_sgdma_map_user_buf_to_sgl: unable to pin down all 1025 user pages, 7. [24208.564058] bdma:char_sgdma_map_user_buf_to_sgl: unable to pin down all 51217 user pages, 7.
In the end, we did not use the official driver for the following reasons: The XDMA driver's system overhead was too high (due to the thread that retrieves descriptor status consuming excessive resources). Our driver layer does not employ threads and only implements a polling approach (essentially just memory mapping + periodic reads). Our project is used for "network analysis," and excessively high driver performance consumption is unacceptable!