matroxfb: fix incorrect use of memcpy_toio()
PATCH 1/1 matroxfb: fix incorrect use of memcpy_toio()
Fix incorrect use of memcpy_toio() in matroxfb that broke in 2.6.34 on x86.
drivers/video/matrox/matroxfb_base.h +2 -2
@@ -151,13 +151,13 @@ static inline void mga_writel(vaddr_t vastatic inline void mga_memcpy_toio (vaddr_t va,const void * src,int len) {#if defined(__alpha__) || defined(__i386__) || defined(__x86_64__)/* -* memcpy_toio works for us if: +* iowrite32_rep works for us if: * (1) Copies data as 32bit quantities, not byte after byte, * (2) Performs LE ordered stores, and * (3) It copes with unaligned source (destination is guaranteed to be page * aligned and length is guaranteed to be multiple of 4). */ -memcpy_toio (va.vaddr, src, len); +iowrite32_rep (va.vaddr, src, len >>2 );#else u_int32_t __iomem * addr = va.vaddr;
Signature · 1 line
Ondrej Zary
Quoted 2 lines · On Wed, 11 Aug 2010 22:27:42 +0200 Ondrej Zary <[email protected]>…
Fix incorrect use of
memcpy_toio()in matroxfb that broke in 2.6.34 on x86.
Thanks.
What was incorrect about it? And what is the user-visible effect of this regression?
Quoted 10 lines · On Wednesday 11 August 2010 22:41:36 Andrew Morton wrote:
On Wed, 11 Aug 2010 22:27:42 +0200
Quoted 2 lines · Ondrej Zary
Fix incorrect use of
memcpy_toio()in matroxfb that broke in 2.6.34 on x86.Thanks.
What was incorrect about it? And what is the user-visible effect of this regression?
Screen is completely corrupted since 2.6.34. Bisection revealed that it's caused by commit 6175ddf06b6172046a329e3abfd9c901a43efd2e. H. Peter Anvin explained that memcpy_toio() does not copy data in 32bit chunks anymore on x86.
See: http://lkml.org/lkml/2010/8/2/409
Signature · 1 line
Ondrej Zary