On Mon, Apr 16, 2018 at 04:31:21PM +1000, Jonathan Gray wrote: > On Sun, Apr 15, 2018 at 10:04:13PM -0700, Mike Larkin wrote: > > On Sun, Apr 15, 2018 at 11:47:45PM -0500, Juan Morado wrote: > > > System: OpenBSD 6.3 > > > Details: OpenBSD 6.3 (GENERIC.MP) #107: Sat Mar 24 14:21:59 MDT 2018 > > > dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/ > > > GENERIC.MP > > > > > > Architecture: OpenBSD.amd64 > > > Machine: amd64 > > > > > > Description: Touching the track pad of this ASUS X541SA laptop during > > > boot > > > causes a kernel panic when running 6.3. Touching/using the trackpad after > > > X > > > starts causes the system to become unresponsive (hang). > > > > > > How to repeat: Reboot the system, swipe a finger on the track pad while > > > booting. Or use the track pad after the machine has booted and X has > > > started. > > > > > > Fix: no known work around or fix > > > > > > "show panic", trace, ps, and "show registers" output attached in > > > ddb_trace.txt > > > > > > dmesg.txt contains the dmesg. > > > > > addr 1: xHCI root hub, Intel > > > addr 2: USB Flash Disk, General > > > > > > jsg, kettenis? Thoughts? > > > > -ml > >
Heh, thanks Jonathan. I meant jcs@ but the diff below might help :) -ml > > > > > > > > > > > Domain /dev/pci0: > > > 0:0:0: Intel Braswell Host > > > 0:2:0: Intel HD Graphics > > > 0:11:0: Intel Braswell Power > > > 0:19:0: Intel Braswell AHCI > > > 0:20:0: Intel Braswell xHCI > > > 0:26:0: Intel Braswell TXE > > > 0:27:0: Intel Braswell HD Audio > > > 0:28:0: Intel Braswell PCIE > > > 0:28:2: Intel Braswell PCIE > > > 0:28:3: Intel Braswell PCIE > > > 0:31:0: Intel Braswell PCU LPC > > > 0:31:3: Intel Braswell SMBus > > > 2:0:0: Realtek 8101E > > > 3:0:0: Realtek 8191SE > > > > > System: OpenBSD 6.3 > > > Details: OpenBSD 6.3 (GENERIC.MP) #107: Sat Mar 24 14:21:59 MDT 2018 > > > > > > dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP > > > > > > Architecture: OpenBSD.amd64 > > > Machine: amd64 > > > > > > Description: Touching the track pad of this ASUS X541SA laptop during > > > boot causes a kernel panic. Touching/using the trackpad after X starts > > > causes the system to become unresponsive (hang). > > > > > > How to repeat: Reboot the system, swip a finger on the track pad while > > > booting. Or use the track pad after the machine has booted and X has > > > started. > > > > > > Fix: no known work around or fix > > > > > > > > > ddb{0}> show panic > > > kernel page fault > > > uvm_fault(0xffffffff81afca80, 0xffff8000006f8000, 0, 1) -> e > > > ihidev_intr(ffff8000000d9300) at ihidev_intr+0x18a > > > end trace frame: 0xffff8000314a3ac8, count: 0 > > > > > > ddb{0}> trace > > > ihidev_intr(ffff8000000d9300) at ihidev_intr+0x18a > > > intr_handler(0,ffff800000127280) at intr_handler+0x57 > > > Xintr_ioapic_level17_untramp() at Xintr_ioapic_level17_untramp+0x12c > > > --- interrupt --- > > > acpicpu_idle() at acpicpu_idle+0x1d9 > > > cpu_idle_cycle(0,0,ffffffff81abbff0,ffffffff817e4290,ffffffff817e44b5,fffffff181c1f0) > > > at cpu_idle_cycle+0x10 > > > end trace frame: 0x0, count: -5 > > I'm curious if disestablishing the interrupt handler in attach in the > early returns before sc_ibuf has been allocated changes anything. > > Index: ihidev.c > =================================================================== > RCS file: /cvs/src/sys/dev/i2c/ihidev.c,v > retrieving revision 1.16 > diff -u -p -r1.16 ihidev.c > --- ihidev.c 12 Jan 2018 08:11:47 -0000 1.16 > +++ ihidev.c 16 Apr 2018 06:17:48 -0000 > @@ -139,8 +139,14 @@ ihidev_attach(struct device *parent, str > (char *)ia->ia_cookie); > > sc->sc_nrepid = ihidev_maxrepid(sc->sc_report, sc->sc_reportlen); > - if (sc->sc_nrepid < 0) > + if (sc->sc_nrepid < 0) { > + printf("%s: nrepid %d\n", sc->sc_dev.dv_xname, sc->sc_nrepid); > + if (sc->sc_ih) { > + intr_disestablish(sc->sc_ih); > + sc->sc_ih = NULL; > + } > return; > + } > > printf("%s: %d report id%s\n", sc->sc_dev.dv_xname, sc->sc_nrepid, > sc->sc_nrepid > 1 ? "s" : ""); > @@ -150,6 +156,10 @@ ihidev_attach(struct device *parent, str > M_DEVBUF, M_NOWAIT | M_ZERO); > if (sc->sc_subdevs == NULL) { > printf("%s: failed allocating memory\n", sc->sc_dev.dv_xname); > + if (sc->sc_ih) { > + intr_disestablish(sc->sc_ih); > + sc->sc_ih = NULL; > + } > return; > } >