Tomek LECOCQ
2021-Mar-03 10:07 UTC
[Nouveau] How to reverse engineer a PCI-Express driver under Linux ?
Hello, I?ve already asked this on the Kernel Newbies mail list, but as developing nouveau seems to be kind of similar to what I want to achieve, I thought it would be a good idea to ask it here as well. I have a PCI-Express video capture card that has a proprietary driver for Linux. I have some experience with programming in C, and so I would like to start a hobby project to develop a free/libre driver for this device for Linux. Of course I don?t have access to any documentation about how to communicate with this device (I?ve tried to contact the company making these, but my hopes are not high), so I think I will need to reverse-engineer the way the existing driver communicates with the hardware. How could I achieve this ? Also, the long term goal of this project would be to have this driver merged into mainline, so what is allowed or not while doing this to avoid problematic legal ramifications ? Thank you for your help. Best regards. Tomek Lecocq
Karol Herbst
2021-Mar-03 10:30 UTC
[Nouveau] How to reverse engineer a PCI-Express driver under Linux ?
On Wed, Mar 3, 2021 at 11:07 AM Tomek LECOCQ <tomek.lecocq at hotmail.fr> wrote:> Hello, > > I?ve already asked this on the Kernel Newbies mail list, but as developing > nouveau seems to be kind of similar to what I want to achieve, I thought it > would be a good idea to ask it here as well. > > I have a PCI-Express video capture card that has a proprietary driver for > Linux. > I have some experience with programming in C, and so I would like to start > a hobby project to develop a free/libre driver for this device for Linux. > Of course I don?t have access to any documentation about how to > communicate with this device (I?ve tried to contact the company making > these, but my hopes are not high), so I think I will need to > reverse-engineer the way the existing driver communicates with the > hardware. How could I achieve this ? > >Usually drivers map PCIe bars into the VM and read/write at certain offsets to do.. stuff. In the linux kernel we have the mmiotrace tracer in order to capture what a driver does with the hardware. You still need to interpret the trace file, but at least this should give you the raw data on what's going on. Hope that helps.> Also, the long term goal of this project would be to have this driver > merged into mainline, so what is allowed or not while doing this to avoid > problematic legal ramifications ? > Thank you for your help. >Best regards.> Tomek Lecocq > _______________________________________________ > Nouveau mailing list > Nouveau at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/nouveau >-------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20210303/a700c630/attachment.htm>