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)