From: Andrew Morton <akpm@linux-foundation.org>
To: "Ville Syrjälä" <syrjala@sci.fi>
Cc: jsimmons@infradead.org, linux-fbdev-devel@lists.sourceforge.net,
stable@kernel.org, adaplas@gmail.com, alex.kern@gmx.de
Subject: Re: [PATCH] atyfb: Replace busy loop with mdelay()
Date: Mon, 5 Mar 2007 15:53:18 -0800 [thread overview]
Message-ID: <20070305155318.23fff053.akpm@linux-foundation.org> (raw)
In-Reply-To: <20070222002033.GA26166@sci.fi>
On Thu, 22 Feb 2007 02:20:33 +0200
Ville Syrj__l__ <syrjala@sci.fi> wrote:
> Replace a busy loop with mdelay() in atyfb clock setup code. This fixes
> boot hangs several people have experienced.
>
> Signed-off-by: Ville Syrjala <syrjala@sci.fi>
> ---
>
> This patch was already forwareded by James to some of you, but here it
> is with the proper changelog, signed-off-by line, and a language fix in
> the comment part. Also Cc:d stable@kernel.org as this seems like -stable
> material to me.
>
> drivers/video/aty/mach64_ct.c | 9 +++------
> 1 file changed, 3 insertions(+), 6 deletions(-)
>
> Index: linux-2.6.20.1/drivers/video/aty/mach64_ct.c
> ===================================================================
> --- linux-2.6.20.1.orig/drivers/video/aty/mach64_ct.c
> +++ linux-2.6.20.1/drivers/video/aty/mach64_ct.c
> @@ -598,7 +598,6 @@ static void aty_resume_pll_ct(const stru
> struct atyfb_par *par = info->par;
>
> if (par->mclk_per != par->xclk_per) {
> - int i;
> /*
> * This disables the sclk, crashes the computer as reported:
> * aty_st_pll_ct(SPLL_CNTL2, 3, info);
> @@ -609,12 +608,10 @@ static void aty_resume_pll_ct(const stru
> aty_st_pll_ct(SCLK_FB_DIV, pll->ct.sclk_fb_div, par);
> aty_st_pll_ct(SPLL_CNTL2, pll->ct.spll_cntl2, par);
> /*
> - * The sclk has been started. However, I believe the first clock
> - * ticks it generates are not very stable. Hope this primitive loop
> - * helps for Rage Mobilities that sometimes crash when
> - * we switch to sclk. (Daniel Mantione, 13-05-2003)
> + * SCLK has been started. Wait for the PLL to lock. 5 ms
> + * should be enough according to mach64 programmer's guide.
> */
> - for (i=0;i<=0x1ffff;i++);
> + mdelay(5);
> }
>
> aty_st_pll_ct(PLL_REF_DIV, pll->ct.pll_ref_div, par);
>
A similar but different patch just got merged into mainline:
commit 8690ba446defe2e2b81803756c099d2943dfd5fd
Author: David Miller <davem@davemloft.net>
Date: Mon Mar 5 01:35:36 2007 -0800
[PATCH] video/aty/mach64_ct.c: fix bogus delay loop
CT based mach64 cards were reported to hang on sparc64 boxes when
compiled with gcc-4.1.x and later.
Looking at this piece of code, it's no surprise. A critical
delay was implemented as an empty for() loop, and gcc 4.0.x
and previous did not optimize it away, so we did get a delay.
But gcc-4.1.x and later can optimize it away, and we get crashes.
Use a real udelay() to fix this. Fix verified on SunBlade100.
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
diff --git a/drivers/video/aty/mach64_ct.c b/drivers/video/aty/mach64_ct.c
index f3b487b..1fdcfdb 100644
--- a/drivers/video/aty/mach64_ct.c
+++ b/drivers/video/aty/mach64_ct.c
@@ -598,7 +598,6 @@ static void aty_resume_pll_ct(const stru
struct atyfb_par *par = info->par;
if (par->mclk_per != par->xclk_per) {
- int i;
/*
* This disables the sclk, crashes the computer as reported:
* aty_st_pll_ct(SPLL_CNTL2, 3, info);
@@ -614,7 +613,7 @@ static void aty_resume_pll_ct(const stru
* helps for Rage Mobilities that sometimes crash when
* we switch to sclk. (Daniel Mantione, 13-05-2003)
*/
- for (i=0;i<=0x1ffff;i++);
+ udelay(500);
}
aty_st_pll_ct(PLL_REF_DIV, pll->ct.pll_ref_div, par);
hopefully that works OK for you.
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
next prev parent reply other threads:[~2007-03-05 23:54 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-22 0:20 [PATCH] atyfb: Replace busy loop with mdelay() Ville Syrjälä
2007-02-22 1:14 ` Antonino A. Daplas
2007-03-05 23:53 ` Andrew Morton [this message]
2007-03-06 0:29 ` Ville Syrjälä
2007-03-07 1:13 ` [stable] " Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070305155318.23fff053.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=adaplas@gmail.com \
--cc=alex.kern@gmx.de \
--cc=jsimmons@infradead.org \
--cc=linux-fbdev-devel@lists.sourceforge.net \
--cc=stable@kernel.org \
--cc=syrjala@sci.fi \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.