> 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.

Reply via email to