Re: 2.6.29 git master and PAT problems

From: Pallipadi, Venkatesh
Date: Mon Mar 30 2009 - 20:21:21 EST


On Mon, Mar 30, 2009 at 04:25:11PM -0700, Arkadiusz Miskiewicz wrote:
> On Tuesday 31 of March 2009, Arkadiusz Miskiewicz wrote:
> > On Monday 30 of March 2009, Pallipadi, Venkatesh wrote:
> >
> > More info follows. Now I've switched to
> > e1c502482853f84606928f5a2f2eb6da1993cda1 which contains latest drm fixes
> > and now I get much lower numbers of PAT errors but still.
>
> Also when I switch t400 into discrete mode (radeon hd 3400 instead
> of integrated intel GM45) I get such errors (probably unrelated
> to these seen when using intel):
>
> [ 419.187657] X:10550 conflicting memory types cfff0000-d0000000 uncached<->uncached-minus
> [ 419.187670] reserve_memtype failed 0xcfff0000-0xd0000000, track uncached, req write-back
> [ 419.553914] X:10550 conflicting memory types cfff0000-d0000000 uncached<->uncached-minus
> [ 419.553923] reserve_memtype failed 0xcfff0000-0xd0000000, track uncached, req write-back
> [ 419.813592] X:10550 conflicting memory types cfff0000-d0000000 uncached<->uncached-minus
> [ 419.813601] reserve_memtype failed 0xcfff0000-0xd0000000, track uncached, req write-back
> [ 420.100102] X:10550 conflicting memory types cfff0000-d0000000 uncached<->uncached-minus
> [ 420.100111] reserve_memtype failed 0xcfff0000-0xd0000000, track uncached, req write-back
>
>

Yes. This is a different problem than the freeing invalid type one. Are these
errors also with latest git kernel? Can you try the patch below (which is
a part of a bigger cleanup patch I have lined up).

Thanks,
Venki

From: Suresh Siddha <suresh.b.siddha@xxxxxxxxx>

Fix pat_x_mtrr_type() to use UC_MINUS when the mtrr type return UC. This
is to be consistent with ioremap() and ioremap_nocache() which uses
UC_MINUS.

Signed-off-by: Suresh Siddha <suresh.b.siddha@xxxxxxxxx>
Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@xxxxxxxxx>
---
arch/x86/mm/ioremap.c | 3 ++-
arch/x86/mm/pat.c | 35 +++++++++++++----------------------
2 files changed, 15 insertions(+), 23 deletions(-)

diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index 1fca82b..e07da24 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -182,10 +182,10 @@ static unsigned long pat_x_mtrr_type(u64 start, u64 end, unsigned long req_type)
u8 mtrr_type;

mtrr_type = mtrr_type_lookup(start, end);
- if (mtrr_type == MTRR_TYPE_UNCACHABLE)
- return _PAGE_CACHE_UC;
- if (mtrr_type == MTRR_TYPE_WRCOMB)
- return _PAGE_CACHE_WC;
+ if (mtrr_type != MTRR_TYPE_WRBACK)
+ return _PAGE_CACHE_UC_MINUS;
+
+ return _PAGE_CACHE_WB;
}

return req_type;

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/