[Nouveau] How to reverse engineer a PCI-Express driver under Linux ?

Tomek LECOCQ tomek.lecocq at hotmail.fr
Wed Mar 3 14:44:06 UTC 2021



On 3 Mar 2021, at 14:09, Ilia Mirkin <imirkin at alum.mit.edu> wrote:

> On Wed, Mar 3, 2021 at 5:30 AM Karol Herbst <kherbst at redhat.com> wrote:
>> 
>> 
>> 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.
> 
> Here's a good guide on how to use mmiotrace. It's nvidia-focused, but
> the same steps would apply to any driver:
> https://wiki.ubuntu.com/X/MMIOTracing
> 
> Basically, start mmiotrace, load target driver, do some stuff, stop
> mmiotrace, analyze the resulting trace.
> 
> We have some tooling to help with that -- envytools/rnn/demmio will
> parse the mmiotrace against a given rnndb (also in envytools). You
> won't be able to reuse our rnndb, but you'd be able to build up your
> own. You also wouldn't be able to use demmio directly, but you could
> see how it works and modify it to your hw's needs. (e.g. it waits for
> a read of the "0" mmio reg to determine which chip is being traced,
> and loads up the appropriate rnndb settings - that won't work with
> your hw out of the box.)
> 

Thank you to both of you for the very useful tips and the link to this tutorial. This was exactly what I was looking for.

>>> 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 ?
> 
> This isn't legal advice (for that, consult a lawyer), however a few
> things that are definitely going to get you into trouble:
> 
> - stealing (or using stolen) documentation
> - de-compiling target driver and copying its implementation (as that
> would be subject to copyright)

Yes, I’m not using anything stolen (all the resources I have are publicly available on the card producer’s website).
I’ve also contacted local open-source NGOs about the legal questions, I live in France and the law here is quite different to the US for those kind of things.

Regards.
Tomek




More information about the Nouveau mailing list