Mailinglist Archive: radeonhd (265 mails)
| < Previous | Next > |
Re: [radeonhd] [PATCH] drm: r6xx/r7xx fails with CONFIG_X86_PAT enabled
- From: "Alex Deucher" <alexdeucher@xxxxxxxxx>
- Date: Tue, 13 Jan 2009 10:49:45 -0500
- Message-id: <a728f9f90901130749uc866f11g6393229aee760706@xxxxxxxxxxxxxx>
On Mon, Jan 12, 2009 at 8:54 PM, Sytse Wielinga
<s.b.wielinga@xxxxxxxxxxxxxxxxxx> wrote:
Thanks for debugging this!
The patch is correct. The PAT fix got missed when we merged the r6xx
branch into master.
These seem fine. I've gone ahead and committed the radeon chunk:
fd3b361a540c4d370c33ea6a472ad2b24928a930
This is probably fine as well, but I'd like to get Dave's opinion first.
Thanks!
Alex
--
To unsubscribe, e-mail: radeonhd+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: radeonhd+help@xxxxxxxxxxxx
<s.b.wielinga@xxxxxxxxxxxxxxxxxx> wrote:
Hi Alex,
I'm addressing this to you (Alex), as you seem to be The Man to talk to about
r6xx dri support at the moment. CC'ing both the radeonhd and the dri-devel
mailing lists.
Thanks for debugging this!
Good.
I tried running the r6xx-r7xx-support branch from drm/xf86-video-radeonhd with
my RV670 card (HD 3870) on an amd64 platform, but it failed, giving me an
irrecoverable black screen, and an OOPS because of a null pointer dereference.
It became apparent the cause was an ioremap in r600_cp.c failing, and the
result wasn't checked, so it didn't quite fail gracefully.
It seems to me (I must admit I don't really know what I'm talking about
though, I haven't looked into the way memory is handled in x86 cpus yet)
that the correct fix would be to use ioremap_wc (which maps to ioremap_nocache
on non-PAT-enabled kernels) instead. It works for me: with EXA enabled, I get
a working X instance, with lots of slowness and glitches but I guess that's
expected behavior at the moment.
Below is a patch, which does four things:
- Change drm_core_ioremap to drm_core_ioremap_wc (note that this is already
the function that's called in the r3xx code in the exact same place; I
don't know what went wrong here, but someone missed something)
The patch is correct. The PAT fix got missed when we merged the r6xx
branch into master.
- Add a check for this specific drm_core_ioremap(_wc) invocation failing; any
failure should return -EINVAL. Also, when dev_priv->pcigart_offset_set
isn't set, it should return -EINVAL, and not just continue as if nothing's
amiss
- Add many debugging messages. Your opinion on this may be different from
mine, so apply whatever you deem useful.
Note particularly that I added messages for succeeding or failing ioremaps
and ioremapfrees
These seem fine. I've gone ahead and committed the radeon chunk:
fd3b361a540c4d370c33ea6a472ad2b24928a930
- drm_core_ioremap_wc was enabled only on 2.6.26+ kernels, which seems odd.
I checked, and ioremap_wc has been in the kernel a *long* time (on x86);
there was a #define to check whether it exists on the current arch, so I
changed drm_core_ioremap_wc to be always present (it's used unconditionally
in radeon_cp.c anyway, so it seems to be a sane idea to define
drm_core_ioremap_wc to do the right thing whether ioremap_wc is present or
not).
This is probably fine as well, but I'd like to get Dave's opinion first.
Thanks!
Alex
--
To unsubscribe, e-mail: radeonhd+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: radeonhd+help@xxxxxxxxxxxx
| < Previous | Next > |