-
Notifications
You must be signed in to change notification settings - Fork 223
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Driver doesn`t work on AARCH64 #27
Comments
Maybe this is solution, don`t know: I added of_dma_configure(dev->device, NULL); Like this:
Now I have this situation:
Maybe timeout due to FPGA loopback don`t work correctly. Will check. BTW if you have any comments about it is good for me. |
Also replaced in the same file: dma_free_coherent(NULL, dma_alloc->size, dma_alloc->kern_addr, dma_alloc->dma_addr); |
It seems like that change should do the trick, based on the issue in the other repository to which you linked. I'll look into this more in the kernel code to see what the issue is. Unfortunately, I don't have access to an Ultrascale devices at the moment, but I'll see if I can get a QEMU image up and running to verify the change independently. |
it works in ultrascale+: I used 128 bit bus width and the same bursts value in axi0dma, and 200Mhz clock for PL. Have a look: DMA Timing Statistics: I think this bug has fixed. |
Ok, great, I'll add these fixes into the repoisotry, thanks for your help! |
This closes #27, courtesy of @sploet. This is based on the fix provided by issue ikwzm/udmabuf#5. The issue is that for AARCH64, all of the DMA functions require a non-NULL device as input. Additionally, a call to `of_dma_configure` is required.
@sploet Could you verify this fix when you get a chance? |
Sorry for keeping your waiting. |
No problem, glad to hear it works! |
Hi Clack! |
Hi all, |
@sh-ebrahimi I believe this is an issue with differing kernel versions. Originally, the driver did pass Out of curiosity, what kernel version are you using? |
our kernel version was 4.14.0 from xilinx
…On Mon, May 21, 2018 at 10:04 AM, Brandon Perez ***@***.***> wrote:
@sh-ebrahimi <https://github.com/sh-ebrahimi> I believe this is an issue
with differing kernel versions. Originally, the driver did pass NULL to
dma_x_coherent, but it seemed to cause an issue on newer kernel versions.
However, I imagine that there are certain kernel versions where this change
has not been backported.
Out of curiosity, what kernel version are you using?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#27 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AF29vYGOGwNXXrqzVk_YnAnPYhCDEhnQks5t0l_sgaJpZM4QBinO>
.
|
Got it, that version likely doesn't have the update to In the meantime, for anyone else who finds this thread, you can move to a newer kernel version, or you can revert commit 4b29989. |
I have cma=256M and using ultrascale+ (xilinx ZCU102 devboard with ARM64 chip)
Have a look at my log:
After linux kernel loaded, i successfully insert kernel module:
# insmod /axidma.ko
Next i tried to do the benchmark test:
# /axidma_benchmark
# dmesg
I foud out that function dma_alloc_coherent always return NULL.
The same behaviour is for all buffer size i have set (16 byte, 1024 byte, 8Kb, 16 Kb, 128Kb, 1Mb, 16 Mb, etc..).
Yesterday I also found the same trouble in the Internet, and seem it was solved : ikwzm/udmabuf@b4ee3e3#diff-80d2ae607f6046e637a24ce2bc06ba30
I am not a kernel guru, can you help we with with?
Do you have any idea?
The text was updated successfully, but these errors were encountered: