> Date: Fri, 26 Jun 2015 15:17:41 +0200 (CEST) > From: Mark Kettenis <mark.kette...@xs4all.nl> > > > Date: Fri, 26 Jun 2015 14:58:36 +0200 > > From: Reyk Floeter <r...@openbsd.org> > > > > On Thu, Jun 25, 2015 at 05:43:20PM -0700, Mike Larkin wrote: > > > On Fri, Jun 26, 2015 at 12:09:40AM +0200, Reyk Floeter wrote: > > > > On Thu, Jun 25, 2015 at 11:04:00PM +0200, Imre Vadasz wrote: > > > > > On 22:27 Thu 25 Jun , Reyk Floeter wrote: > > > > > > On Thu, Jun 25, 2015 at 09:21:11PM +0200, Mark Kettenis wrote: > > > > > > > There really is no excuse for using dma_alloc(9) if you have the > > > > > > > bus_dmatag_t available. > > > > > > > > > > > > > > This re-uses tulip_busdma_allocmem(), which simplifies the code > > > > > > > for > > > > > > > allocating the dmamap and such. > > > > > > > > > > > > > > Unfortunately I can't test this myself right now. > > > > > > > > > > > > > > > > > > > Fixes the panic on Hyper-V, see dmesg below. > > > > > > > > > > > > Unrelated to that, no interrupts on the nic with the ioapic enabled > > > > > > (no traffic and autoneg timeouts). > > > > > > > > > > > > Reyk > > > > > > > > > > On DragonFly BSD and NetBSD I was able to get the NIC interrupts > > > > > working > > > > > with enabled ioapic, by forcing the NIC's IRQ to be configured as > > > > > edge/high triggered instead of level/low in the ioapic. > > > > > > > > I had to try this: with a horrible hack(tm) in pci_intr_establish() I > > > > turned de0 into edge triggered and everything works. > > > > > > > > Reyk > > > > > > I suspect something is amiss in our interpretation of the interrupt config > > > on amd64 since de(4) works unmodified on i386 with Hyper-V. > > > > > > Maybe some AML parse screwup? > > > > > > > I can confirm this, I installed an i386 VM on the same Hyper-V machine > > and de works just fine without the hack. amd64's de does not. > > That is curious. There are quite a few differences between the amd64 > interrupt subsystem and the i386 interrupt subsystem, so there are > various possibilities on how things can go wrong. > > Are the Hyper-V ACPI tables available somewhere?
Reyk provided an acpidump to me. The amd64 and i386 tables are pretty much identical, and I see no override for the de(4) interrupt, so it definitely should be active low, level triggered. So the non-working amd64 code is almost certainly a consequence of how OpenBSD handles things.