summaryrefslogtreecommitdiff
path: root/etc/etc.i386
diff options
context:
space:
mode:
authorOwain Ainsworth <oga@cvs.openbsd.org>2010-09-06 15:00:51 +0000
committerOwain Ainsworth <oga@cvs.openbsd.org>2010-09-06 15:00:51 +0000
commit9865e9627fe7184fc0a2c9d270bf42b9ab6b783f (patch)
tree346116f69a85c0e3faef1ae77ad0e5c48636bfb6 /etc/etc.i386
parent002080b0d1b8aa3d1def96be6b003a01dd07b674 (diff)
Rev 1.67 of intagp (agp_i810.c) was added to deal with the problem
where stuff was bound for a software fallback while we were vt switched, so we couldn't assume that the aperture was clear. Turns out that the 855 at least does not like this (the !stolen bits of the bar at least are write-only), and this caused a gpu lockup on any suspend that used that activate handler. So this diff fixes it in a more complete way: Firstly revert 1.67 of agp_i810.c, secondly add a DVACT_QUIESCE handler to inteldrm, and in it we do three things: 1) set a flag that causes any ioctl or pagefault to sleep until the flag is cleared so that we don't end up with something doing the following (for example:) - bind object - do another blocking operation in the same ioctl/fault < suspend happens here, followed by resume> - wake up assuming that the object is still bound and continue along our merry way 2) Wait for all current entrypoints to finish (so that 1) is actually effective we need to first quiesce our callers before we continue). 3) unbind everything that is in the gtt On resume we clear the quiet flag, and everything can continue as expected. Behaves as expected for me on: 855 (x40 in acpi mode), gm965 (x61s) and arrandale (x201) over multiple suspend cycles. Also tested by several on tech.
Diffstat (limited to 'etc/etc.i386')
0 files changed, 0 insertions, 0 deletions