On Thu, Jul 20, 2017 at 12:43:26AM +0200, Jarom?r Dole?ek wrote: > 0xe2 should be valid offset, spec says it must be >= 0x40, but nothing > about it being necessarily 4-byte aligned. > > I've checked FreeBSD and Linux drivers, and there doesn't seem to be > anything there checking or forcing this alignment, either. Their drivers > even do some one byte reads into config space, so doesn't even seem to be > PCI spec restriction. > > Can you try to remove the KASSERT()s in sys/arch/x86/pci/pci_machdep.c and > see where it will get you? The KASSERT() was added in 2008, three years > after the ehci bios handover handling code was added, so it's a bit long > shot this is actually the root problem, but still worth trying. I removed the 2 KASSERT((reg & 0x3) == 0); asserts, and now have a successful boot: ehci0 at pci0 dev 29 function 7: vendor 8086 product 24cd (rev. 0x03) ehci0: interrupting at irq 11 ehci0: EHCI version f0.0 ehci0: wrong number of companions (14 != 3) ehci0: 3 companion controllers, 15 ports each: uhci0 uhci1 uhci2 ehci0: reset timeout ehci0: init failed, error=5 At least the laptop is usable now :-) Cheers, Patrick