From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon@freedesktop.org
Subject: [Bug 72716] New: SIGBUS in EVERGREENUploadToScreen after hibernation
(Linux 3.12.4-tuxonice)
Date: Sat, 14 Dec 2013 19:53:14 +0000
Message-ID:
Priority
medium
Bug ID
72716
Assignee
dri-devel@lists.freedesktop.org
Summary
SIGBUS in EVERGREENUploadToScreen after hibernation (Linux 3.=
12.4-tuxonice)
Severity
normal
Classification
Unclassified
OS
Linux (All)
Reporter
txtoxtox285@googlemail.com
Hardware
x86-64 (AMD64)
Status
NEW
Version
unspecified
Component
DRM/Radeon
Product
DRI
Created attachment 90784 [details]
dmsg
How to reproduce:
* boot 3.12.4-tuxonice; do not start X
* suspend to disk
* resume
* start KDE 4.10.5
* start Firefox
=3D=3D> X dies with SIGBUS
Graphics hardware: [AMD/ATI] Cedar [Radeon HD 5000/6000/7350/8350 Series];
VID:PID 1002:68f9, SVID:SPID 1043:03d8
Software:
* Kernel 3.12.4-tuxonice
* Gentoo:
** xorg-x11-7.4-r2
** xorg-server-1.14.3-r2
** xf86-video-ati-7.2.0
GDB:
(gdb) bt
#0 __memcpy_ssse3_back () at
../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:819
#1 0x00002af85fef84b4 in EVERGREENUploadToScreen (pDst=3D0x2187f90, x=3D0,=
y=3D0,
w=3D1516, h=3D43,
src=3D0x21e1728 "", src_pitch=3D6064) at /usr/include/bits/st=
ring3.h:52
#2 0x00002af8603519dc in exaDoPutImage (src_stride=3D6064, bits=3D0x21e172=
8 "",
format=3D2, h=3D43, w=3D1516,
y=3D<optimized out>, x=3D<optimized out>, pGC=3D0x1f373d0, =
pDrawable=3D0x2187f90,
depth=3D<optimized out>)
at
/mnt/var-pub/tmp/portage/x11-base/xorg-server-1.14.3-r2/work/xorg-server-1.=
14.3/exa/exa_accel.c:212
#3 exaPutImage (pDrawable=3D0x2187f90, pGC=3D0x1f373d0, depth=3D32, x=3D0,=
y=3D0,
w=3D1516, h=3D43, leftPad=3D0,
format=3D2, bits=3D0x21e1728 "")
at
/mnt/var-pub/tmp/portage/x11-base/xorg-server-1.14.3-r2/work/xorg-server-1.=
14.3/exa/exa_accel.c:233
#4 0x000000000076616d in ProcPutImage (client=3D<optimized out>)
at
/mnt/var-pub/tmp/portage/x11-base/xorg-server-1.14.3-r2/work/xorg-server-1.=
14.3/dix/dispatch.c:1966
#5 0x0000000000769556 in Dispatch ()
at
/mnt/var-pub/tmp/portage/x11-base/xorg-server-1.14.3-r2/work/xorg-server-1.=
14.3/dix/dispatch.c:432
#6 0x0000000000757ef3 in main (argc=3D<optimized out>, argv=3D0x7fff=
d57dae58,
envp=3D<optimized out>)
at
/mnt/var-pub/tmp/portage/x11-base/xorg-server-1.14.3-r2/work/xorg-server-1.=
14.3/dix/main.c:298
(gdb) info locals
pScrn =3D 0x1818d90
info =3D 0x1819350
accel_state =3D 0x2187f90
driver_priv =3D 0x1818d90 [bogus, should be 0x2052f10]
scratch =3D <optimized out>
copy_dst =3D 0x2024720
dst =3D 0x2af865f19000 <Address 0x2af865f19000 out of bounds>
size =3D <optimized out>
dst_domain =3D 4
bpp =3D <optimized out>
scratch_pitch =3D <optimized out>
copy_pitch =3D 6144
ret =3D <optimized out>
flush =3D <optimized out>
r =3D 1
i =3D <optimized out>
src_obj =3D {pitch =3D 3581782816, width =3D 32767, height =3D 1141, bpp =
=3D 0, domain =3D
0, bo =3D 0x1800018a33b0,
tiling_flags =3D 3581782752, surface =3D 0x2af85fedec79
<RADEONEXAPixmapIsOffscreen+9>}
dst_obj =3D {pitch =3D 3581782784, width =3D 32767, height =3D 1614088140, =
bpp =3D 11000,
domain =3D 3581782784,
bo =3D 0x2af85fedec79 <RADEONEXAPixmapIsOffscreen+9>, tiling_flags =
=3D
3581782816,
surface =3D 0x2af8603507cc <exaPixmapHasGpuCopy_mixed+108>}
height =3D <optimized out>
base_align =3D <optimized out>
(gdb) p $driver_priv->bo
$1 =3D (struct radeon_bo *) 0x2024720
(gdb) p *((struct radeon_bo_gem*)copy_dst)
$2 =3D {base =3D {ptr =3D 0x2af865f19000, flags =3D 0, handle =3D 265, size=
=3D 7028736,
alignment =3D 256,
domains =3D 4, cref =3D 1, bom =3D 0x1824130, space_accounted =3D 0,
referenced_in_cs =3D 0}, name =3D 0,
map_count =3D 1, reloc_in_cs =3D {atomic =3D 0}, priv_ptr =3D 0x2af865f19=
000}
(gdb) x/x ((struct radeon_bo_gem*)copy_dst)->priv_ptr
0x2af865f19000: Cannot access memory at address 0x2af865f19000
(gdb) ^Z
[1]+ Stopped gdb -p $(pgrep X)
~ # grep 2af865f19000 /proc/$(pgrep X)/maps
2af865f19000-2af8665cd000 rw-s 10aa4c000 00:05 6534=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20
/dev/dri/card0
---------------------------------------------------
Looks like EVERGREENUploadToScreen wants to memcpy into copy_dst->ptr,
which has a value of 0x2af865f19000 and which (according to /proc/$(pgrep
X)/maps)
*is* mapped and should be writable; however, it isn=E2=80=99t.
At this point I lost my wits and would be grateful for a pointer where this
memory is mapped,
both in user and kernel space.