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