On Mon, Jul 31, 2023 at 10:48:12PM +1000, Jonathan Gray wrote:
> On Sun, Jul 30, 2023 at 03:21:47PM +0900, YASUOKA Masahiko wrote:
> > Hello,
> > 
> > I got new vaio last week, the machine seems to have the same graphic
> > 
> >   inteldrm0 at pci0 dev 2 function 0 "Intel Graphics" rev 0x04
> >   drm0 at inteldrm0
> >   inteldrm0: msi, ALDERLAKE_P, gen 12
> > 
> > and has the same problem.  I found having Option "PageFlip" "off" in
> > /etc/X11/xorg.conf can workaround the problem.
> > 
> >   Section "Device"
> >           Identifier      "Card0"
> >           Driver          "modesetting"
> >           BusID           "PCI:0:2:0"
> >           Option          "PageFlip" "off"
> >   EndSection
> 
> running GENERIC I got the following with xfce.
> 
> matches the trace in an earlier report from sthen@
> https://marc.info/?l=openbsd-bugs&m=168234057913478&w=2
> 
> dpt_insert_entries+0xbc: movl 0x34(%r8),%r10d
> r8    0xffff800001938fe0
> r10   0x1000
> 
>    0xffffffff81ab0bc3 <+179>:   mov    %r8,%rcx
>    0xffffffff81ab0bc6 <+182>:   add    $0x20,%rcx
>    0xffffffff81ab0bca <+186>:   je     0xffffffff81ab0be8 
> <dpt_insert_entries+216>
>    0xffffffff81ab0bcc <+188>:   mov    0x34(%r8),%r10d
>    0xffffffff81ab0bd0 <+192>:   test   %r10d,%r10d
>    0xffffffff81ab0bd3 <+195>:   je     0xffffffff81ab0be8 
> <dpt_insert_entries+216>
> 
> (gdb) info line *0xffffffff81ab0bcc
> Line 34 of "/sys/dev/pci/drm/i915/i915_scatterlist.h"
>    starts at address 0xffffffff81ab0bc1 <dpt_insert_entries+177>
>    and ends at 0xffffffff81ab0bd5 <dpt_insert_entries+197>.
> 
>         if (dma && s.sgp && sg_dma_len(s.sgp) == 0) {
> 
> dpt_insert_entries+0xbc
> dpt_bind_vma+0x64
> i915_vma_bind+0x317
> i915_vma_pin_ww+0x44b
> intel_plane_pin_fb+0x25c
> intel_prepare_plane_pin_fb+0x12c
> drm_atomic_helper_prepare_planes+0x5b
> intel_atomic_commit+0xda
> drm_atomic_helper_page_flip+0x77
> drm_mode_page_flip_ioctl+0x466
> drm_do_ioctl+0x285
> drmioctl+0xdc
> VOP_IOCTL+0x57
> vn_ioctl+0x6c

The fix is to not reset the end of list marker when
assigning a page.

Index: sys/dev/pci/drm/include/linux/scatterlist.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/include/linux/scatterlist.h,v
retrieving revision 1.5
diff -u -p -r1.5 scatterlist.h
--- sys/dev/pci/drm/include/linux/scatterlist.h 1 Jan 2023 01:34:58 -0000       
1.5
+++ sys/dev/pci/drm/include/linux/scatterlist.h 2 Aug 2023 04:02:02 -0000
@@ -119,7 +119,6 @@ sg_set_page(struct scatterlist *sgl, str
        sgl->dma_address = page ? VM_PAGE_TO_PHYS(page) : 0;
        sgl->offset = offset;
        sgl->length = length;
-       sgl->end = false;
 }
 
 #define sg_dma_address(sg)     ((sg)->dma_address)

Reply via email to