Linux PCI subsystem development
 help / color / mirror / Atom feed
* [Question] Custom MMIO handler - is it possible?
@ 2024-01-31 20:42 nowicki
  2024-01-31 21:20 ` Bjorn Helgaas
  0 siblings, 1 reply; 4+ messages in thread
From: nowicki @ 2024-01-31 20:42 UTC (permalink / raw)
  To: linux-pci, linux-pci

Hello,

I'm trying to implement a fake PCIe device and I'm looking for guidance 
(by fake I mean fully software device).

So far I implemented:
- fake PCIe bus with custom fake pci_ops.read & pci_ops.write functions
- fake PCIe switch
- fake PCIe endpoint

Fake devices have implemented PCIe registers and are visible in user 
space via lspci tool.
Registers can be edited via setpci tool.

Now I'm looking for a way to implement BAR regions with custom memory 
handlers. Is it even possible?
Basically I'd like to capture each MemoryWrite & MemoryRead targeted for 
PCIe endpoint's BAR region and emulate NVMe registers.

I'm in dead-end right now and I'm seeing only two options:
- generate page faults on every access to fake BAR region and execute 
fake PCIe endpoint's callbacks - similar/the same as mmiotrace
- periodically scan fake BAR region for any changes

Both solutions have drawbacks.
Is there other way to implement fake BAR region?


Regards,
Mateusz

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-02-01 18:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-31 20:42 [Question] Custom MMIO handler - is it possible? nowicki
2024-01-31 21:20 ` Bjorn Helgaas
2024-02-01 15:38   ` Mateusz Nowicki
2024-02-01 18:06     ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox