Re: [Bug 10328] New: [regression] performance drop for glx

From: Arjan van de Ven
Date: Wed Mar 26 2008 - 00:42:35 EST


Suresh Siddha wrote:
On Tue, Mar 25, 2008 at 03:28:09PM -0700, Andrew Morton wrote:
(switched to email. Please respond via emailed reply-to-all, not via the
bugzilla web interface).

On Tue, 25 Mar 2008 15:11:15 -0700 (PDT)
bugme-daemon@xxxxxxxxxxxxxxxxxxx wrote:

http://bugzilla.kernel.org/show_bug.cgi?id=10328

Summary: [regression] performance drop for glx

after commit 4138cc3418f5eaa7524ff8e927102863f1ba0ea5 i expirience some grafik
related perfomance issues.

I used glxgears for test.
before this patch: 1281.005 FPS
and after: 765.000 FPS
It nearly halved.

latest tested commit a4083c9271e0a697278e089f2c0b9a95363ada0a
still hase bad performance.

I use Pentium D with 2GB RAM, Grafick: i945G, ICH7

That's

: commit 4138cc3418f5eaa7524ff8e927102863f1ba0ea5
: Author: Siddha, Suresh B <suresh.b.siddha@xxxxxxxxx>
: Date: Wed Jan 30 13:33:43 2008 +0100
: : x86: set strong uncacheable where UC is really desired
: : Also use _PAGE_PWT for all the mappings which need uncache mapping.
: Instead of existing PAT2 which is UC- (and can be overwritten by MTRRs),
: we now use PAT3 which is strong uncacheable.
: : This makes it consistent with pgprot_noncached()

Alexey, Can you please try the appended patch?

Andrew, can you please push the appended patch for 2.6.25? Thanks.
---

fb drivers are using ioremap()/ioremap_nocache(), followed by mtrr_add with
WC attribute. Recent changes in page attribute code made both
ioremap()/ioremap_nocache() mappings as UC (instead of previous UC-). This
breaks the graphics performance, as the effective memory type is UC instead
of expected WC.

The correct way to fix this is to add ioremap_wc() (which uses UC- in the
absence of PAT kernel support and WC with PAT) and change all the
fb drivers to use this new ioremap_wc() API.

We can take this correct and longer route for post 2.6.25. For now,
revert back to the UC- behavior for ioremap/ioremap_nocache.

I would still like to add an ioremap_wc() even in 2.6.25; even if it's for now
identical to ioremap_nocache(). Better get the right API in place as soon as possible

--
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/