From: Greg Kroah-Hartman Date: Wed, 4 Feb 2009 19:00:36 +0000 (-0800) Subject: fix up .27 patches to make quilt happy X-Git-Tag: v2.6.28.4~2 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=c3f0ffac16bd0bdc15596ae60088a7a49a5b22b8;p=thirdparty%2Fkernel%2Fstable-queue.git fix up .27 patches to make quilt happy --- diff --git a/queue-2.6.27/cpuidle-add-decaying-history-logic-to-menu-idle-predictor.patch b/queue-2.6.27/cpuidle-add-decaying-history-logic-to-menu-idle-predictor.patch index 5e96d67f530..6e184be675d 100644 --- a/queue-2.6.27/cpuidle-add-decaying-history-logic-to-menu-idle-predictor.patch +++ b/queue-2.6.27/cpuidle-add-decaying-history-logic-to-menu-idle-predictor.patch @@ -3,7 +3,7 @@ From: Venkatesh Pallipadi Date: Tue, 27 Jan 2009 17:38:46 +0100 Subject: cpuidle: Add decaying history logic to menu idle predictor To: stable@kernel.org -Cc: Len Brown , "Pallipadi, Venkatesh" +Cc: Len Brown , Message-ID: <1233074343-23414-5-git-send-email-trenn@suse.de> diff --git a/queue-2.6.27/mbox b/queue-2.6.27/mbox new file mode 100644 index 00000000000..b6e161d648f --- /dev/null +++ b/queue-2.6.27/mbox @@ -0,0 +1,4983 @@ +From gregkh@mini.kroah.org Wed Feb 4 10:41:45 2009 +Message-Id: <20090204184145.008452385@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Wed, 04 Feb 2009 10:40:30 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Jeff Layton , + Steve French +Subject: [patch 01/41] cifs: make sure we allocate enough storage for socket address +References: <20090204184029.881610776@mini.kroah.org> +Content-Disposition: inline; filename=cifs-make-sure-we-allocate-enough-storage-for-socket-address.patch +Content-Length: 3297 +Lines: 95 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Jeff Layton + +commit a9ac49d303f967be0dabd97cb722c4a13109c6c2 upstream. + +cifs_mount declares a struct sockaddr on the stack and then casts it +to the proper address type. The storage allocated is fine for ipv4, +but is too small for ipv6 addresses. Declare it as +"struct sockaddr_storage" instead of struct sockaddr". + +This bug was manifesting itself as oopses and address corruption when +mounting IPv6 addresses. + +Signed-off-by: Jeff Layton +Tested-by: Stefan Bader +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman + +--- + fs/cifs/connect.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +--- a/fs/cifs/connect.c ++++ b/fs/cifs/connect.c +@@ -1349,7 +1349,7 @@ cifs_parse_mount_options(char *options, + } + + static struct TCP_Server_Info * +-cifs_find_tcp_session(struct sockaddr *addr) ++cifs_find_tcp_session(struct sockaddr_storage *addr) + { + struct list_head *tmp; + struct TCP_Server_Info *server; +@@ -1369,11 +1369,11 @@ cifs_find_tcp_session(struct sockaddr *a + if (server->tcpStatus == CifsNew) + continue; + +- if (addr->sa_family == AF_INET && ++ if (addr->ss_family == AF_INET && + (addr4->sin_addr.s_addr != + server->addr.sockAddr.sin_addr.s_addr)) + continue; +- else if (addr->sa_family == AF_INET6 && ++ else if (addr->ss_family == AF_INET6 && + memcmp(&server->addr.sockAddr6.sin6_addr, + &addr6->sin6_addr, sizeof(addr6->sin6_addr))) + continue; +@@ -2027,7 +2027,7 @@ cifs_mount(struct super_block *sb, struc + int rc = 0; + int xid; + struct socket *csocket = NULL; +- struct sockaddr addr; ++ struct sockaddr_storage addr; + struct sockaddr_in *sin_server = (struct sockaddr_in *) &addr; + struct sockaddr_in6 *sin_server6 = (struct sockaddr_in6 *) &addr; + struct smb_vol volume_info; +@@ -2039,7 +2039,7 @@ cifs_mount(struct super_block *sb, struc + + /* cFYI(1, ("Entering cifs_mount. Xid: %d with: %s", xid, mount_data)); */ + +- memset(&addr, 0, sizeof(struct sockaddr)); ++ memset(&addr, 0, sizeof(struct sockaddr_storage)); + memset(&volume_info, 0, sizeof(struct smb_vol)); + if (cifs_parse_mount_options(mount_data, devname, &volume_info)) { + rc = -EINVAL; +@@ -2069,9 +2069,9 @@ cifs_mount(struct super_block *sb, struc + rc = cifs_inet_pton(AF_INET6, volume_info.UNCip, + &sin_server6->sin6_addr.in6_u); + if (rc > 0) +- addr.sa_family = AF_INET6; ++ addr.ss_family = AF_INET6; + } else { +- addr.sa_family = AF_INET; ++ addr.ss_family = AF_INET; + } + + if (rc <= 0) { +@@ -2113,7 +2113,7 @@ cifs_mount(struct super_block *sb, struc + + srvTcp = cifs_find_tcp_session(&addr); + if (!srvTcp) { /* create socket */ +- if (addr.sa_family == AF_INET6) { ++ if (addr.ss_family == AF_INET6) { + cFYI(1, ("attempting ipv6 connect")); + /* BB should we allow ipv6 on port 139? */ + /* other OS never observed in Wild doing 139 with v6 */ +@@ -2144,7 +2144,7 @@ cifs_mount(struct super_block *sb, struc + } else { + srvTcp->noblocksnd = volume_info.noblocksnd; + srvTcp->noautotune = volume_info.noautotune; +- if (addr.sa_family == AF_INET6) ++ if (addr.ss_family == AF_INET6) + memcpy(&srvTcp->addr.sockAddr6, sin_server6, + sizeof(struct sockaddr_in6)); + else + + +From gregkh@mini.kroah.org Wed Feb 4 10:41:45 2009 +Message-Id: <20090204184145.143003075@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Wed, 04 Feb 2009 10:40:31 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Breno Leitao , + Jesse Brandeburg , + "David S. Miller" +Subject: [patch 02/41] ixgb: fix bug when freeing resources +References: <20090204184029.881610776@mini.kroah.org> +Content-Disposition: inline; filename=ixgb-fix-bug-when-freeing-resources.patch +Content-Length: 1306 +Lines: 46 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Brandeburg, Jesse + +commit 23e55a32ca1ffdbe7a492ef99f0e0ac48e504a13 upstream. + +It was pointed out by Breno Leitao that +ixgb would crash on PPC when an IOMMU was in use, if change_mtu was +called. + +It appears to be a pretty simple issue in the driver that wasn't discovered +because most systems don't run with an IOMMU. The driver needs to only unmap +buffers that are mapped (duh). + +CC: Breno Leitao + +Signed-off-by: Jesse Brandeburg +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/ixgb/ixgb_main.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +--- a/drivers/net/ixgb/ixgb_main.c ++++ b/drivers/net/ixgb/ixgb_main.c +@@ -977,15 +977,17 @@ ixgb_clean_rx_ring(struct ixgb_adapter * + + for (i = 0; i < rx_ring->count; i++) { + buffer_info = &rx_ring->buffer_info[i]; +- if (buffer_info->skb) { +- ++ if (buffer_info->dma) { + pci_unmap_single(pdev, + buffer_info->dma, + buffer_info->length, + PCI_DMA_FROMDEVICE); ++ buffer_info->dma = 0; ++ buffer_info->length = 0; ++ } + ++ if (buffer_info->skb) { + dev_kfree_skb(buffer_info->skb); +- + buffer_info->skb = NULL; + } + } + + +From gregkh@mini.kroah.org Wed Feb 4 10:41:45 2009 +Message-Id: <20090204184145.274596476@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Wed, 04 Feb 2009 10:40:32 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Adrian Bunk , + Greg Ungerer +Subject: [patch 03/41] m68knommu: set NO_DMA +References: <20090204184029.881610776@mini.kroah.org> +Content-Disposition: inline; filename=m68knommu-set-no_dma.patch +Content-Length: 1527 +Lines: 53 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Adrian Bunk + +commit e0212e72186e855027dd35b37e9d7a99a078448c upstream. + +m68knommu does not set the Kconfig NO_DMA variable, but also does +not provide the required functions, resulting in the following +build error triggered by commit a40c24a13366e324bc0ff8c3bb107db89312c984 +(net: Add SKB DMA mapping helper functions.): + +<-- snip --> + +.. + LD vmlinux +net/built-in.o: In function `skb_dma_unmap': +(.text+0xac5e): undefined reference to `dma_unmap_single' +net/built-in.o: In function `skb_dma_unmap': +(.text+0xac7a): undefined reference to `dma_unmap_page' +net/built-in.o: In function `skb_dma_map': +(.text+0xacdc): undefined reference to `dma_map_single' +net/built-in.o: In function `skb_dma_map': +(.text+0xace8): undefined reference to `dma_mapping_error' +net/built-in.o: In function `skb_dma_map': +(.text+0xad10): undefined reference to `dma_map_page' +net/built-in.o: In function `skb_dma_map': +(.text+0xad82): undefined reference to `dma_unmap_page' +net/built-in.o: In function `skb_dma_map': +(.text+0xadc6): undefined reference to `dma_unmap_single' +make[1]: *** [vmlinux] Error 1 + +<-- snip --> + +Signed-off-by: Adrian Bunk +Signed-off-by: Greg Ungerer +Signed-off-by: Greg Kroah-Hartman + +--- + arch/m68knommu/Kconfig | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/arch/m68knommu/Kconfig ++++ b/arch/m68knommu/Kconfig +@@ -14,6 +14,10 @@ config MMU + bool + default n + ++config NO_DMA ++ bool ++ default y ++ + config FPU + bool + default n + + +From gregkh@mini.kroah.org Wed Feb 4 10:41:45 2009 +Message-Id: <20090204184145.420820856@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Wed, 04 Feb 2009 10:40:33 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Mark Lord , + Jeff Garzik +Subject: [patch 04/41] sata_mv: fix 8-port timeouts on 508x/6081 chips +References: <20090204184029.881610776@mini.kroah.org> +Content-Disposition: inline; filename=sata_mv-fix-8-port-timeouts-on-508x-6081-chips.patch +Content-Length: 1032 +Lines: 29 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Mark Lord + +commit b0bccb18bc523d1d5060d25958f12438062829a9 upstream. + +Fix a longstanding bug for the 8-port Marvell Sata controllers (508x/6081), +where accesses to the upper 4 ports would cause lost-interrupts / timeouts +for the lower 4-ports. With this patch, the 6081 boards should finally be +reliable enough for mainstream use with Linux. + +Signed-off-by: Mark Lord +Signed-off-by: Jeff Garzik +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/ata/sata_mv.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/ata/sata_mv.c ++++ b/drivers/ata/sata_mv.c +@@ -883,7 +883,7 @@ static void mv_start_dma(struct ata_port + struct mv_host_priv *hpriv = ap->host->private_data; + int hardport = mv_hardport_from_port(ap->port_no); + void __iomem *hc_mmio = mv_hc_base_from_port( +- mv_host_base(ap->host), hardport); ++ mv_host_base(ap->host), ap->port_no); + u32 hc_irq_cause, ipending; + + /* clear EDMA event indicators, if any */ + + +From gregkh@mini.kroah.org Wed Feb 4 10:41:45 2009 +Message-Id: <20090204184145.547069793@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Wed, 04 Feb 2009 10:40:34 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Andi Kleen , + "H. Peter Anvin" , + Ingo Molnar +Subject: [patch 05/41] x86: use early clobbers in usercopy*.c +References: <20090204184029.881610776@mini.kroah.org> +Content-Disposition: inline; filename=x86-use-early-clobbers-in-usercopy-.c.patch +Content-Length: 3890 +Lines: 100 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Andi Kleen + +commit e0a96129db574d6365e3439d16d88517c437ab33 upstream. + +Impact: fix rare (but currently harmless) miscompile with certain configs and gcc versions + +Hugh Dickins noticed that strncpy_from_user() was miscompiled +in some circumstances with gcc 4.3. + +Thanks to Hugh's excellent analysis it was easy to track down. + +Hugh writes: + +> Try building an x86_64 defconfig 2.6.29-rc1 kernel tree, +> except not quite defconfig, switch CONFIG_PREEMPT_NONE=y +> and CONFIG_PREEMPT_VOLUNTARY off (because it expands a +> might_fault() there, which hides the issue): using a +> gcc 4.3.2 (I've checked both openSUSE 11.1 and Fedora 10). +> +> It generates the following: +> +> 0000000000000000 <__strncpy_from_user>: +> 0: 48 89 d1 mov %rdx,%rcx +> 3: 48 85 c9 test %rcx,%rcx +> 6: 74 0e je 16 <__strncpy_from_user+0x16> +> 8: ac lods %ds:(%rsi),%al +> 9: aa stos %al,%es:(%rdi) +> a: 84 c0 test %al,%al +> c: 74 05 je 13 <__strncpy_from_user+0x13> +> e: 48 ff c9 dec %rcx +> 11: 75 f5 jne 8 <__strncpy_from_user+0x8> +> 13: 48 29 c9 sub %rcx,%rcx +> 16: 48 89 c8 mov %rcx,%rax +> 19: c3 retq +> +> Observe that "sub %rcx,%rcx; mov %rcx,%rax", whereas gcc 4.2.1 +> (and many other configs) say "sub %rcx,%rdx; mov %rdx,%rax". +> Isn't it returning 0 when it ought to be returning strlen? + +The asm constraints for the strncpy_from_user() result were missing an +early clobber, which tells gcc that the last output arguments +are written before all input arguments are read. + +Also add more early clobbers in the rest of the file and fix 32-bit +usercopy.c in the same way. + +Signed-off-by: Andi Kleen +Signed-off-by: H. Peter Anvin +[ since this API is rarely used and no in-kernel user relies on a 'len' + return value (they only rely on negative return values) this miscompile + was never noticed in the field. But it's worth fixing it nevertheless. ] +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/lib/usercopy_32.c | 4 ++-- + arch/x86/lib/usercopy_64.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +--- a/arch/x86/lib/usercopy_32.c ++++ b/arch/x86/lib/usercopy_32.c +@@ -49,7 +49,7 @@ do { \ + " jmp 2b\n" \ + ".previous\n" \ + _ASM_EXTABLE(0b,3b) \ +- : "=d"(res), "=c"(count), "=&a" (__d0), "=&S" (__d1), \ ++ : "=&d"(res), "=&c"(count), "=&a" (__d0), "=&S" (__d1), \ + "=&D" (__d2) \ + : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \ + : "memory"); \ +@@ -211,7 +211,7 @@ long strnlen_user(const char __user *s, + " .align 4\n" + " .long 0b,2b\n" + ".previous" +- :"=r" (n), "=D" (s), "=a" (res), "=c" (tmp) ++ :"=&r" (n), "=&D" (s), "=&a" (res), "=&c" (tmp) + :"0" (n), "1" (s), "2" (0), "3" (mask) + :"cc"); + return res & mask; +--- a/arch/x86/lib/usercopy_64.c ++++ b/arch/x86/lib/usercopy_64.c +@@ -32,7 +32,7 @@ do { \ + " jmp 2b\n" \ + ".previous\n" \ + _ASM_EXTABLE(0b,3b) \ +- : "=r"(res), "=c"(count), "=&a" (__d0), "=&S" (__d1), \ ++ : "=&r"(res), "=&c"(count), "=&a" (__d0), "=&S" (__d1), \ + "=&D" (__d2) \ + : "i"(-EFAULT), "0"(count), "1"(count), "3"(src), "4"(dst) \ + : "memory"); \ +@@ -86,7 +86,7 @@ unsigned long __clear_user(void __user * + ".previous\n" + _ASM_EXTABLE(0b,3b) + _ASM_EXTABLE(1b,2b) +- : [size8] "=c"(size), [dst] "=&D" (__d0) ++ : [size8] "=&c"(size), [dst] "=&D" (__d0) + : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr), + [zero] "r" (0UL), [eight] "r" (8UL)); + return size; + + +From gregkh@mini.kroah.org Wed Feb 4 10:41:45 2009 +Message-Id: <20090204184145.691774986@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Wed, 04 Feb 2009 10:40:35 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Scott Kilau , + Paul Larson +Subject: [patch 06/41] Add enable_ms to jsm driver +References: <20090204184029.881610776@mini.kroah.org> +Content-Disposition: inline; filename=add-enable_ms-to-jsm-driver.patch +Content-Length: 1140 +Lines: 39 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Paul Larson + +commit 0461ec5bc7745b89a8ab67ba0ea497abd58a6301 upstream. + +This fixes a crash observed when non-existant enable_ms function is +called for jsm driver. + +Signed-off-by: Scott Kilau +Signed-off-by: Paul Larson +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/serial/jsm/jsm_tty.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/serial/jsm/jsm_tty.c ++++ b/drivers/serial/jsm/jsm_tty.c +@@ -161,6 +161,11 @@ static void jsm_tty_stop_rx(struct uart_ + channel->ch_bd->bd_ops->disable_receiver(channel); + } + ++static void jsm_tty_enable_ms(struct uart_port *port) ++{ ++ /* Nothing needed */ ++} ++ + static void jsm_tty_break(struct uart_port *port, int break_state) + { + unsigned long lock_flags; +@@ -345,6 +350,7 @@ static struct uart_ops jsm_ops = { + .start_tx = jsm_tty_start_tx, + .send_xchar = jsm_tty_send_xchar, + .stop_rx = jsm_tty_stop_rx, ++ .enable_ms = jsm_tty_enable_ms, + .break_ctl = jsm_tty_break, + .startup = jsm_tty_open, + .shutdown = jsm_tty_close, + + +From gregkh@mini.kroah.org Wed Feb 4 10:41:45 2009 +Message-Id: <20090204184145.820133479@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Wed, 04 Feb 2009 10:40:36 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Risto Suominen , + Benjamin Herrenschmidt +Subject: [patch 07/41] fbdev/atyfb: Fix DSP config on some PowerMacs & PowerBooks +References: <20090204184029.881610776@mini.kroah.org> +Content-Disposition: inline; filename=fbdev-atyfb-fix-dsp-config-on-some-powermacs-powerbooks.patch +Content-Length: 1771 +Lines: 52 + +2.6.27-stable review patch. If anyone has any objections, please let us know. + +------------------ + +From: Risto Suominen + +commit 7fbb7cadd062baf299fd8b26a80ea99da0c3fe01 upstream. + +Since the complete re-write in 2.6.10, some PowerMacs (At least PowerMac 5500 +and PowerMac G3 Beige rev A) with ATI Mach64 chip have suffered from unstable +columns in their framebuffer image. This seems to depend on a value (4) read +from PLL_EXT_CNTL register, which leads to incorrect DSP config parameters to +be written to the chip. This patch uses a value calculated by aty_init_pll_ct +instead, as a starting point. + +There are questions as to whether this should be extended to other platforms +or maybe made dependent on specific chip types, but in the meantime, this has +been tested on various powermacs and works for them so let's commit it. + +Signed-off-by: Risto Suominen +Tested-by: Michael Pettersson +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/video/aty/mach64_ct.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +--- a/drivers/video/aty/mach64_ct.c ++++ b/drivers/video/aty/mach64_ct.c +@@ -8,6 +8,9 @@ + #include + #include