Re: [git head] Should X86_PAT really default to yes?

From: Jesse Barnes
Date: Mon May 05 2008 - 13:48:19 EST


On Monday, May 05, 2008 10:32 am Frans Pop wrote:
> Sigh. This is going to get complex...
>
> On Monday 05 May 2008, Jesse Barnes wrote:
> > > > If so, it might not be a PAT issue but just a different memory layout
> > > > or something (and therefore it would really just be a cosmetic bug in
> > > > the X driver).
> > >
> > > The artifacts may not be a PAT issue directly, but it is a clear
> > > regression for me as I currently have a nice clean screen when X shuts
> > > down. I'm also 100% sure that it is caused by enabling PAT. A kernel
> > > with same config and only PAT disabled does not show the artifacts.
> > >
> > > Would you like me to file a bug against X for these artifacts?
> > > If so, against what component? The i810 driver or the server?
> >
> > I suspect an i810 driver bug is being uncovered here, since we do have
> > transient VT switch corruption on some other platforms (we're just
> > exposing our chip reprogramming on the screen, rather than keeping it off
> > the whole time). But there could also be something PAT specific going
> > on, I'll have to walk through those code paths...
>
> I suspect it could be vesafb/fbcon related instead. Normally I boot my
> system with 'quiet vga=791', i.e. with vesafb. I then see the artifacts.
>
> When I boot without 'vga=791', I hit another, unrelated regression (which
> I'll report separately) [1].
>
> When I boot with 'video=vfb:off', I do _not_ get the artifacts when X
> exits.

Ahhh, I missed that part of your config. That could definitely have an effect
on things... You'll probably want something like the attached (there are
other places in the fb layer that want similar treatment, iirc, maybe
fb_pgprotect?).

> Note that the "expected mapping type" errors remain the same both with and
> without framebuffer console.
>
> > Oh the messages should be removed or somehow minimized, I agree. I'm
> > just not sure if the other bug is serious enough to block PAT by default
> > yet, but either way we should fix the bugs!
>
> OK. Thanks. Guess you've also seen "Xorg crash with xf86MapVidMem error"
> that turned out to be due to PAT:
> http://www.gossamer-threads.com/lists/linux/kernel/915300 ?

No, I hadn't seen that... Venki/Ingo has that issue been fixed already?

Jesse
diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c
index e16322d..95b26f1 100644
--- a/drivers/video/vesafb.c
+++ b/drivers/video/vesafb.c
@@ -286,7 +286,8 @@ static int __init vesafb_probe(struct platform_device *dev)
info->pseudo_palette = info->par;
info->par = NULL;

- info->screen_base = ioremap(vesafb_fix.smem_start, vesafb_fix.smem_len);
+ info->screen_base = ioremap_wc(vesafb_fix.smem_start,
+ vesafb_fix.smem_len);
if (!info->screen_base) {
printk(KERN_ERR
"vesafb: abort, cannot ioremap video memory 0x%x @ 0x%lx\n",