On 2023/04/24 23:53, Jonathan Gray wrote:
> On Mon, Apr 24, 2023 at 01:49:32PM +0100, Stuart Henderson wrote:
> > Running picom (with no special config or command line flags) on intel
> > T14 gen 3 fairly easily triggers a crash in drm. If it doesn't fail the
> > first time, exiting and restarting a few times pretty much always
> > triggers it.
> > 
> > Full proc listing below after dmesg, Xorg is the only active process
> > at the time.
> > 
> > xcompmgr hasn't yet triggered it.
> > 
> > 
> > uvm_fault(0xffffffff824b4570, 0xffff800001e73014, 0, 1) -> e
> > kernel: page fault trap, code=0
> > Stopped at  dpt_insert_entries+0xbc:        movl    0x34(%r8),%r10d
> >     TID    PID    UID     PRFLAGS     PFLAGS  CPU  COMMAND                  
> >      
> > *459624  48440     35        0x12          0    4K Xorg                     
> >       
> > dpt_insert_entries(ffff800001a1cc00,fffffd83b9afd178,0,0) at 
> > dpt_insert_entries+0xbc
> 
> this is line 34 of /sys/dev/pci/drm/i915/i915_scatterlist.h
> 
>     23  static __always_inline struct sgt_iter {
>     24          struct scatterlist *sgp;
>     25          union {
>     26                  unsigned long pfn;
>     27                  dma_addr_t dma;
>     28          };
>     29          unsigned int curr;
>     30          unsigned int max;
>     31  } __sgt_iter(struct scatterlist *sgl, bool dma) {
>     32          struct sgt_iter s = { .sgp = sgl };
>     33
>     34          if (dma && s.sgp && sg_dma_len(s.sgp) == 0) {
>     35                  s.sgp = NULL;
>     36          } else if (s.sgp) {
> 
> sgl is pointing to something that isn't there?
> 
> I have an intel t14 gen 3 but can't reproduce this.
> Running fvwm from xenocara and starting picom from xterm 20 times or so,
> ^C after each.

I'm using i3, though I used to have picom in .xsession which was started
very early - certainly before the wm loaded - and that was crashing too.

Currently this is twin display (internal + an HDMI display connected to
a USB-C dock, attached via DP-3) though I first ran into with just the
internal display. (Took me a little while to get to a state where I
could type into ddb).

> Looking over the local changes to i915_scatterlist.h the segment size
> could be larger, I'm not sure if that would help.

I will try that and report back after lunch.


> Index: dev/pci/drm/i915/i915_scatterlist.h
> ===================================================================
> RCS file: /cvs/src/sys/dev/pci/drm/i915/i915_scatterlist.h,v
> retrieving revision 1.3
> diff -u -p -r1.3 i915_scatterlist.h
> --- dev/pci/drm/i915/i915_scatterlist.h       1 Jan 2023 01:34:54 -0000       
> 1.3
> +++ dev/pci/drm/i915/i915_scatterlist.h       24 Apr 2023 13:15:46 -0000
> @@ -153,7 +153,7 @@ static inline unsigned int i915_sg_segme
>  #else
>  static inline unsigned int i915_sg_segment_size(struct device *dev)
>  {
> -     return PAGE_SIZE;
> +     return round_down(UINT_MAX, PAGE_SIZE);
>  }
>  #endif
>  
> 
> > dpt_bind_vma(ffff800001a1cc00,0,fffffd83b9afd178,0,400) at dpt_bind_vma+0x64
> > i915_vma_bind(ffff800001ce4ec0,0,400,0,fffffd83b9afd178) at 
> > i915_vma_bind+0x319
> > i915_vma_pin_ww(ffff800001ce4ec0,ffff800033b78db0,0,200000,400) at 
> > i915_vma_pin_ww+0x454
> > intel_plane_pin_fb(ffff800001cc9000) at intel_plane_pin_fb+0x25c
> > intel_prepare_plane_fb(ffff8000014c7400,ffff800001cc9000) at 
> > intel_prepare_plane_fb+0x127
> > drm_atomic_helper_prepare_planes(ffff80000044c078,ffff800001cda000) at 
> > drm_atomic_helper_prepare_planes+0x5b
> > intel_atomic_commit(ffff80000044c078,ffff800001cda000,1) at 
> > intel_atomic_commit+0xda
> > drm_atomic_helper_page_flip(ffff8000014c2800,ffff800001e41200,ffff800001d55300,1,ffff800033b79048)
> >  at drm_atomic_helper_page_flip+0x77
> > drm_mode_page_flip_ioctl(ffff80000044c078,ffff800033b793e0,ffff80000195bc00)
> >  at drm_mode_page_flip_ioctl+0x466
> > drm_do_ioctl(ffff80000044c078,100,c01864b0,ffff800033b793e0) at 
> > drm_do_ioctl+0x29e
> > drmioctl(15700,c01864b0,ffff800033b793e0,3,ffff800033bba5c8) at 
> > drmioctl+0xdc
> > VOP_IOCTL(fffffd845bb870f0,c01864b0,ffff800033b793e0,3,fffffd845efad750,ffff800033bba5c8)
> >  at VOP_IOCTL+0x60
> > vn_ioctl(fffffd845bd084c0,c01864b0,ffff800033b793e0,ffff800033bba5c8) at 
> > vn_ioctl+0x79
> 

Reply via email to