ikwzm / udmabuf

User space mappable dma buffer device driver for Linux.
BSD 2-Clause "Simplified" License
532 stars 163 forks source link

Difference with upstream driver #118

Open enceladus13 opened 1 week ago

enceladus13 commented 1 week ago

Hi,

What is the main difference of this driver with the mainline/upstream driver?

Here is the subsystem: https://github.com/torvalds/linux/tree/master/drivers/dma-buf

And here is the udmabuf.c file : https://github.com/torvalds/linux/blob/master/drivers/dma-buf/udmabuf.c

Due to the size of the files, I struggle to understand what are the differences between the 2.

Thanks in advance!

ikwzm commented 1 week ago

They are quite different.

enceladus13 commented 1 week ago

Hi!

Could you be a bit more specific? I have a project where I need to access from userspace DMA capable RAM and your driver seems like a good fit. I am trying to understand though what is the main difference with the already upstreamed driver.

I understand that the upstream driver is a full subsystem that can be used by other kernel subsystems. What is the main difference that makes this more suitable though? Because I saw this udmabuf.c file and I am trying to understand if in the end the kernel driver already offers what this driver offers

ikwzm commented 1 week ago

Sorry, I don't know much about udmabuf that is upstreamed to the mainline.

My driver was released in 2015 under the name udmabuf. The purpose of my driver is to allocate contiguous blocks of memory in kernel space as DMA buffers and make them available from user space.

After that, Linux Kernel 4.20, released in 2018, added udmabuf, which has the same name but a different functionality. I don't know much about what this newly added udmabuf does. However, having the same name is bad enough, so I renamed my driver from udmabuf to u-dma-buf.

If you want to know the difference between these two drivers, please examine the udmabuf upstreamed to the mainline yourself.