> From: Jaromír Doleček <jaromir.dole...@gmail.com> > Date: Wed, 3 Jun 2020 14:16:47 +0200 > > Hello, > > I'm working on porting xmm7360 device driver from Linux to OpenBSD, > the Linux code: > https://github.com/xmm7360/xmm7360-pci/ > > Most of device driver communication with the device is already > working, but currently I can't get the interrupt routine to actually > trigger after successful pci_intr_establish(). Tried to use INTx and > MSI interrupt, that doesn't make difference. > > It may or may not be due to some missing platform initialization, > since the machine is booted in UEFI mode. Unfortunately the machine is > not able to boot USB disks in legacy mode, so I can't test how it > behaves in that case. > > I've already checked how the device is initialised, and there is no > difference between what Linux and OpenBSD PCI code does, as far as I > can tell. Another data point is that some other PCI devices work on > the machine (NVMe disk and em(4) network controller). > > I however see INTx IRQ allocated on Linux is 155 while it's 255 (i.e. > not assigned) on OpenBSD. I also see that MSI Address+Data is > different (Linux uses a unique MSI Address, while OpenBSD uses same > Address but different Data). > > Can you give some advice on what to check and confirm whether it's > indeed hw setup problem? Are there any known problems with PCI > interrupt routing on UEFI machines under OpenBSD, or possibly some > floating patches to try?
I'm not aware of any issues. If em(4) works, I'd expect other PCI devices to work as well with MSI. INTx would be a bit trickier since that may require a working interrupt mapping provided by ACPI. But if the device supports it, MSI should just work. > > Dmesg: > https://drive.google.com/file/d/1CPDvLdR94Oj2oaKDtIEAAGFEBqubMv3W/view?usp=sharing > > OpenBSD lspci -vvx > https://drive.google.com/file/d/1HpsBaeXVAfewN5kjaLiXnTotef_UNHAn/view?usp=sharing > > Linux lspci -vvx > https://drive.google.com/file/d/1ybcnyw13o-Tz2_vKzOsfJCN-sPeyYEQ7/view?usp=sharing > If you would use sendbug maybe people would actually look at this.