PCI MMIO event trigger

Is it possible to create a kernel object like KEVENT that will react to some change in physical memory if pointed to it correctly. We have a MMIO region of physical memory from the PCIe device, that will occupy regions between x and y, that contains structured data.

If that PCI device placed into phys mem x[0x100] a byte that if set to 1, signalling structure data between 0-0x100 is ready, otherwise wait.

Now the simplest solution would be polling but that is not clean. So can I create some type of kernel event which has some signal field which I could place on x[0x100], and the hardware can set that byte in physical mem.

  1. So for test one a simple way for hardware memory map to sync with a kernel driver.
  2. And for test two, if I wanted the driver to trigger immediately, would I consider some interrupt generated from the PCI device, or what are your thoughts for signalling? I don’t know all the details about there hardware device and what they can support just yet.

you clearly have some larger problem in mind

You are reinventing the interrupt. Seriously, you need to read about message-signaled interrupts (MSI).