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.

Reyk

> -ml
> 
> > 
> > OpenBSD 5.8-beta (GENERIC.MP) #17: Thu Jun 25 23:54:49 CEST 2015
> >     root@openbsd.hyperv:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> > real mem = 8573091840 (8175MB)
> > avail mem = 8309399552 (7924MB)
> > mpath0 at root
> > scsibus0 at mpath0: 256 targets
> > mainbus0 at root
> > bios0 at mainbus0: SMBIOS rev. 2.3 @ 0xf8ec0 (216 entries)
> > bios0: vendor American Megatrends Inc. version "090006" date 05/23/2012
> > bios0: Microsoft Corporation Virtual Machine
> > acpi0 at bios0: rev 0
> > acpi0: sleep states S0 S5
> > acpi0: tables DSDT FACP WAET SLIC OEM0 SRAT APIC OEMB
> > acpi0: wakeup devices
> > acpitimer0 at acpi0: 3579545 Hz, 32 bits
> > acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
> > cpu0 at mainbus0: apid 0 (boot processor)
> > cpu0: Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz, 1647.71 MHz
> > cpu0: 
> > FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SS,SSE3,PCLMUL,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,HV,NXE,LONG,LAHF,ABM,FSGSBASE,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,RTM
> > cpu0: 256KB 64b/line 8-way L2 cache
> > cpu0: smt 0, core 0, package 0
> > mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges
> > cpu0: apic clock running at 120MHz
> > cpu1 at mainbus0: apid 1 (application processor)
> > cpu1: Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz, 1975.61 MHz
> > cpu1: 
> > FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SS,SSE3,PCLMUL,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,HV,NXE,LONG,LAHF,ABM,FSGSBASE,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,RTM
> > cpu1: 256KB 64b/line 8-way L2 cache
> > cpu1: smt 0, core 0, package 1
> > ioapic0 at mainbus0: apid 0 pa 0xfec00000, version 11, 24 pins
> > ioapic0: misconfigured as apic 2, remapped to apid 0
> > acpiprt0 at acpi0: bus 0 (PCI0)
> > acpicpu0 at acpi0
> > acpicpu1 at acpi0
> > allocated pic ioapic0 type level pin 9 level 9 to cpu0 slot 9 idt entry 144
> > pci0 at mainbus0 bus 0
> > pchb0 at pci0 dev 0 function 0 "Intel 82443BX" rev 0x03
> > pcib0 at pci0 dev 7 function 0 "Intel 82371AB PIIX4 ISA" rev 0x01
> > pciide0 at pci0 dev 7 function 1 "Intel 82371AB IDE" rev 0x01: DMA, channel 
> > 0 wired to compatibility, channel 1 wired to compatibility
> > allocated pic ioapic0 type edge pin 14 level 6 to cpu0 slot 14 idt entry 96
> > wd0 at pciide0 channel 0 drive 0: <Virtual HD>
> > wd0: 128-sector PIO, LBA48, 10240MB, 20971520 sectors
> > wd0(pciide0:0:0): using PIO mode 4, DMA mode 2
> > allocated pic ioapic0 type edge pin 15 level 6 to cpu0 slot 15 idt entry 97
> > atapiscsi0 at pciide0 channel 1 drive 0
> > scsibus1 at atapiscsi0: 2 targets
> > cd0 at scsibus1 targ 0 lun 0: <Msft, Virtual CD/ROM, 1.0> ATAPI 5/cdrom 
> > removable
> > cd0(pciide0:1:0): using PIO mode 4, DMA mode 2
> > piixpm0 at pci0 dev 7 function 3 "Intel 82371AB Power" rev 0x02: SMBus 
> > disabled
> > vga1 at pci0 dev 8 function 0 "Microsoft VGA" rev 0x00
> > wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
> > wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
> > de0 at pci0 dev 10 function 0 "DEC 21140" rev 0x20allocated pic ioapic0 
> > type edge pin 11 level 7 to cpu0 slot 11 idt entry 112
> > , 21140A pass 2.0: apic 0 int 11, normal, address 00:15:5d:01:9b:03
> > isa0 at pcib0
> > isadma0 at isa0
> > fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
> > allocated pic ioapic0 type edge pin 6 level 6 to cpu0 slot 6 idt entry 98
> > fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec
> > fd1 at fdc0 drive 1: density unknown
> > com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
> > allocated pic ioapic0 type edge pin 4 level 9 to cpu0 slot 4 idt entry 145
> > com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
> > allocated pic ioapic0 type edge pin 3 level 9 to cpu0 slot 3 idt entry 146
> > pckbc0 at isa0 port 0x60/5 irq 1 irq 12
> > allocated pic ioapic0 type edge pin 1 level 9 to cpu0 slot 1 idt entry 147
> > allocated pic ioapic0 type edge pin 12 level 9 to cpu0 slot 12 idt entry 148
> > pckbd0 at pckbc0 (kbd slot)
> > wskbd0 at pckbd0: console keyboard, using wsdisplay0
> > pms0 at pckbc0 (aux slot)
> > wsmouse0 at pms0 mux 0
> > pcppi0 at isa0 port 0x61
> > spkr0 at pcppi0
> > cpu0: interrupt masks:
> > IPL 0 mask 7ffffffffff25a5 unmask f80000000000da5a
> > IPL 1 mask 7ffffffffff25a5 unmask f80000000000da5a
> > IPL 2 mask 7ffffffffff25a5 unmask f80000000000da5a
> > IPL 3 mask 7ffffffffff25a5 unmask f80000000000da5a
> > IPL 4 mask 27ffffffffff25a5 unmask d80000000000da5a
> > IPL 5 mask 37ffffffffff25a5 unmask c80000000000da5a
> > IPL 6 mask 37ffffffffffe5e5 unmask c800000000001a1a
> > IPL 7 mask 37ffffffffffede5 unmask c80000000000121a
> > IPL 8 mask 3fffffffffffede5 unmask c00000000000121a
> > IPL 9 mask 3fffffffffffffff unmask c000000000000000
> > IPL 10 mask 3fffffffffffffff unmask c000000000000000
> > IPL 11 mask 3fffffffffffffff unmask c000000000000000
> > IPL 12 mask 7fffffffffffffff unmask 8000000000000000
> > IPL 13 mask 7fffffffffffffff unmask 8000000000000000
> > IPL 14 mask ffffffffffffffff unmask 0
> > IPL 15 mask ffffffffffffffff unmask 0
> > cpu0 source 1 is pin 1 from pic ioapic0 maxlevel 9
> >     handler 0xffffffff81089f40 level 9
> > cpu0 source 3 is pin 3 from pic ioapic0 maxlevel 9
> >     handler 0xffffffff81087490 level 9
> > cpu0 source 4 is pin 4 from pic ioapic0 maxlevel 9
> >     handler 0xffffffff81087490 level 9
> > cpu0 source 6 is pin 6 from pic ioapic0 maxlevel 6
> >     handler 0xffffffff815977a0 level 6
> > cpu0 source 9 is pin 9 from pic ioapic0 maxlevel 9
> >     handler 0xffffffff81640370 level 9
> > cpu0 source 11 is pin 11 from pic ioapic0 maxlevel 7
> >     handler 0xffffffff813b6000 level 7
> > cpu0 source 12 is pin 12 from pic ioapic0 maxlevel 9
> >     handler 0xffffffff81089f40 level 9
> > cpu0 source 14 is pin 14 from pic ioapic0 maxlevel 6
> >     handler 0xffffffff813c44e0 level 6
> > cpu0 source 15 is pin 15 from pic ioapic0 maxlevel 6
> >     handler 0xffffffff813c44e0 level 6
> > cpu0 source 59 is pin 0 from pic softintr_pic0 maxlevel 8
> >     handler 0x0 level 8
> > cpu0 source 60 is pin 0 from pic softintr_pic0 maxlevel 5
> >     handler 0x0 level 5
> > cpu0 source 61 is pin 0 from pic softintr_pic0 maxlevel 4
> >     handler 0x0 level 4
> > cpu0 source 62 is pin 0 from pic lapic maxlevel 12
> >     handler 0x0 level 12
> > cpu0 source 63 is pin 0 from pic lapic maxlevel 14
> >     handler 0x0 level 14
> > cpu1: interrupt masks:
> > IPL 0 mask 7ffffffffffffff unmask f800000000000000
> > IPL 1 mask 7ffffffffffffff unmask f800000000000000
> > IPL 2 mask 7ffffffffffffff unmask f800000000000000
> > IPL 3 mask 7ffffffffffffff unmask f800000000000000
> > IPL 4 mask 27ffffffffffffff unmask d800000000000000
> > IPL 5 mask 37ffffffffffffff unmask c800000000000000
> > IPL 6 mask 37ffffffffffffff unmask c800000000000000
> > IPL 7 mask 37ffffffffffffff unmask c800000000000000
> > IPL 8 mask 3fffffffffffffff unmask c000000000000000
> > IPL 9 mask 3fffffffffffffff unmask c000000000000000
> > IPL 10 mask 3fffffffffffffff unmask c000000000000000
> > IPL 11 mask 3fffffffffffffff unmask c000000000000000
> > IPL 12 mask 7fffffffffffffff unmask 8000000000000000
> > IPL 13 mask 7fffffffffffffff unmask 8000000000000000
> > IPL 14 mask ffffffffffffffff unmask 0
> > IPL 15 mask ffffffffffffffff unmask 0
> > cpu1 source 59 is pin 0 from pic softintr_pic0 maxlevel 8
> >     handler 0x0 level 8
> > cpu1 source 60 is pin 0 from pic softintr_pic0 maxlevel 5
> >     handler 0x0 level 5
> > cpu1 source 61 is pin 0 from pic softintr_pic0 maxlevel 4
> >     handler 0x0 level 4
> > cpu1 source 62 is pin 0 from pic lapic maxlevel 12
> >     handler 0x0 level 12
> > cpu1 source 63 is pin 0 from pic lapic maxlevel 14
> >     handler 0x0 level 14
> > vscsi0 at root
> > scsibus2 at vscsi0: 256 targets
> > softraid0 at root
> > scsibus3 at softraid0: 256 targets
> > root on wd0a (02632bce06e92172.a) swap on wd0b dump on wd0b
> > 

-- 

Reply via email to