Background
I am having an issue where on a 32-bit Linux kernel my PCIe driver, with multi-MSI, and custom hardware device would work perfectly, now I've moved to a 64-bit iMX8MM CPU and MSI interrupts no longer trigger. The driver registers the interrupts correctly without any errors and I can view the output of cat /proc/interrupts and see all MSI vectors listed for my driver along with their interrupt count, which is zero. There is a bridge but /sys/bus/pci/devices/<address>/msi_bus has a 1 so it is enabled. Everything from lspci -vv looks in order and CONFIG_PCI_MSI was applied to the kernel. I am able to read and write memory buffers on the PCIe device so communications works correctly, I just can't get MSI interrupts to trigger. This is the exact same driver code running on the 32-bit CPU, which worked, and was recompiled on the new 64-bit CPU.
Question
How do I force an MSI interrupt on the system to see if Linux will pick it up and execute my code? From lspci -vv I can see the MSI address and I know the MSI vector value to write. So where do I write this on the system? I've looked at /dev/mem and other areas where I could hopefully do an echo 0x1 > <address>, or some other command line function, to write a value and trigger it. Where/how do I write to trigger a specific MSI interrupt?