On 2020/06/17 16:07, Jonathan Gray wrote: > On Tue, Jun 16, 2020 at 06:46:41PM +0100, Stuart Henderson wrote: > > On 2020/06/15 21:50, Stuart Henderson wrote: > > > On 2020/06/14 15:45, Jonathan Gray wrote: > > > > On Sat, Jun 13, 2020 at 12:15:13PM +0100, Stuart Henderson wrote: > > > > > Same with a newer kernel. > > > > > > > > > > OpenBSD 6.7-current (GENERIC.MP) #3: Thu Jun 11 19:47:48 BST 2020 > > > > > [email protected]:/sys/arch/amd64/compile/GENERIC.MP > > > > > > > > > > uvm_fault(0xfffffd86e2f6c120, 0x51, 0, 1) -> e > > > > > kernel: page fault trap, code=0 > > > > > Stopped at i915_request_create+0x4b: movq > > > > > 0x50(%r14),%rdi > > > > > ddb{1}> tr > > > > > > > > 0x50 is the offset in the struct of requests > > > > r14 in 1 in both traces and appears to be tl > > > > > > > > I don't yet see how that is possible, can you try this diff and tell me > > > > if the printf triggers? > > > > > > I'm running with it, hasn't triggered yet (3h uptime). > > > > After some various reboots (tcp nfs related..) I have now seen > > it a couple of times in my current boot. The timing of the second > > one, pretty much exactly 2h after the first one, seems interesting, > > I wonder if there will be another one in 55 mins.. > > > > 2020-06-16T13:36:45.550Z symphytum /bsd: OpenBSD 6.7-current (GENERIC.MP) > > #3: > > Tue Jun 16 13:35:25 BST 2020 > > 2020-06-16T14:40:04.649Z symphytum /bsd: i915_request_create tl == 1 > > 2020-06-16T16:40:04.413Z symphytum /bsd: i915_request_create tl == 1 > > The way we implement mutex_lock_interruptible() is > #define mutex_lock_interruptible(rwl) -rw_enter(rwl, RW_WRITE | RW_INTR) > > If something returned -1 we'd return 1 but all the error paths in the > functions involved should be returning positive errno values. > > Can you try running with this as well to know which path is involved? > > Index: dev/pci/drm/i915/gt/intel_context.h > =================================================================== > RCS file: /cvs/src/sys/dev/pci/drm/i915/gt/intel_context.h,v > retrieving revision 1.1 > diff -u -p -r1.1 intel_context.h > --- dev/pci/drm/i915/gt/intel_context.h 8 Jun 2020 04:48:13 -0000 > 1.1 > +++ dev/pci/drm/i915/gt/intel_context.h 17 Jun 2020 05:53:14 -0000 > @@ -145,9 +145,14 @@ intel_context_timeline_lock(struct intel > struct intel_timeline *tl = ce->timeline; > int err; > > + if ((vaddr_t)ce->timeline == 1) > + printf("%s ce->timeline == 1\n", __func__); > + > err = mutex_lock_interruptible(&tl->mutex); > - if (err) > + if (err) { > + printf("%s mutex_lock_interruptible() ret %d\n", __func__, err); > return ERR_PTR(err); > + } > > return tl; > } >
Finally hit it: 2020-06-21T14:10:11.005Z symphytum /bsd: intel_context_timeline_lock mutex_lock_interruptible() ret 1 2020-06-21T14:10:11.007Z symphytum /bsd: i915_request_create tl == 1
