public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <andrewm@uow.edu.au>
To: Arjan van de Ven <arjanv@redhat.com>
Cc: Thibaut Laurent <thibaut@celestix.com>,
	Andrea Arcangeli <andrea@suse.de>,
	linux-kernel@vger.kernel.org
Subject: Re: PROBLEM: [2.4.6] kernel BUG at softirq.c:206!
Date: Fri, 06 Jul 2001 01:56:35 +1000	[thread overview]
Message-ID: <3B448E33.120DF382@uow.edu.au> (raw)
In-Reply-To: <20010704232816.B590@marvin.mahowi.de> <20010705162035.Q17051@athlon.random> <3B447B6D.C83E5FB9@redhat.com> <20010705164046.S17051@athlon.random> <20010705233200.7ead91d5.thibaut@celestix.com>, <20010705233200.7ead91d5.thibaut@celestix.com>; from thibaut@celestix.com on Thu, Jul 05, 2001 at 11:32:00PM +0800 <20010705114633.A1787@devserv.devel.redhat.com>

Arjan van de Ven wrote:
> 
> On Thu, Jul 05, 2001 at 11:32:00PM +0800, Thibaut Laurent wrote:
> > And the winner is... Andrea. Kudos to you, I've just applied these patches,
> > recompiled and it seems to work fine.
> > Too bad, this was the perfect excuse for getting rid of those good old Cyrix
> > boxen ;)
> 
> As Andrea's patches don't actually fix anything Cyrix related it's obvious
> that they just avoid the real bug instead of fixing it.
> It's a very useful datapoint though.

My money is on the unconditional sti()'s in the cyrix code.



--- linux-2.4.6/arch/i386/kernel/setup.c	Mon May 28 13:31:46 2001
+++ lk-ext3/arch/i386/kernel/setup.c	Fri Jul  6 01:37:39 2001
@@ -1243,12 +1255,13 @@ static int __init init_amd(struct cpuinf
 /*
  * Read Cyrix DEVID registers (DIR) to get more detailed info. about the CPU
  */
-static inline void do_cyrix_devid(unsigned char *dir0, unsigned char *dir1)
+static void do_cyrix_devid(unsigned char *dir0, unsigned char *dir1)
 {
 	unsigned char ccr2, ccr3;
+	unsigned long flags;
 
 	/* we test for DEVID by checking whether CCR3 is writable */
-	cli();
+	save_flags(flags);
 	ccr3 = getCx86(CX86_CCR3);
 	setCx86(CX86_CCR3, ccr3 ^ 0x80);
 	getCx86(0xc0);   /* dummy to change bus */
@@ -1272,7 +1285,7 @@ static inline void do_cyrix_devid(unsign
 		*dir0 = getCx86(CX86_DIR0);
 		*dir1 = getCx86(CX86_DIR1);
 	}
-	sti();
+	restore_flags(flags);
 }
 
 /*
@@ -1316,15 +1329,16 @@ static void __init check_cx686_slop(stru
 {
 	if (Cx86_dir0_msb == 3) {
 		unsigned char ccr3, ccr5;
+		unsigned long flags;
 
-		cli();
+		save_flags(flags);
 		ccr3 = getCx86(CX86_CCR3);
 		setCx86(CX86_CCR3, (ccr3 & 0x0f) | 0x10); /* enable MAPEN  */
 		ccr5 = getCx86(CX86_CCR5);
 		if (ccr5 & 2)
 			setCx86(CX86_CCR5, ccr5 & 0xfd);  /* reset SLOP */
 		setCx86(CX86_CCR3, ccr3);                 /* disable MAPEN */
-		sti();
+		restore_flags(flags);
 
 		if (ccr5 & 2) { /* possible wrong calibration done */
 			printk(KERN_INFO "Recalibrating delay loop with SLOP bit reset\n");
@@ -2092,15 +2106,16 @@ static int __init id_and_try_enable_cpui
    	        if (dir0 == 5 || dir0 == 3)
    	        {
 			unsigned char ccr3, ccr4;
+			unsigned long flags;
 
 			printk(KERN_INFO "Enabling CPUID on Cyrix processor.\n");
-			cli();
+			save_flags(flags);
 			ccr3 = getCx86(CX86_CCR3);
 			setCx86(CX86_CCR3, (ccr3 & 0x0f) | 0x10); /* enable MAPEN  */
 			ccr4 = getCx86(CX86_CCR4);
 			setCx86(CX86_CCR4, ccr4 | 0x80);          /* enable cpuid  */
 			setCx86(CX86_CCR3, ccr3);                 /* disable MAPEN */
-			sti();
+			restore_flags(flags);
 		}
 	} else

  reply	other threads:[~2001-07-05 15:55 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-07-04 21:28 PROBLEM: [2.4.6] kernel BUG at softirq.c:206! Manfred H. Winter
2001-07-05  7:46 ` Mircea Damian
2001-07-05 10:52   ` Thibaut Laurent
2001-07-05 13:00     ` Mircea Damian
2001-07-05 11:18   ` Alan Cox
2001-07-05 12:10     ` Bob_Tracy
2001-07-05 13:04     ` Mircea Damian
2001-07-05 14:15     ` Manfred H. Winter
2001-07-05 11:04 ` Manfred H. Winter
2001-07-05 14:20 ` Andrea Arcangeli
2001-07-05 14:30   ` Alan Cox
2001-07-05 14:36   ` Arjan van de Ven
2001-07-05 14:40     ` Andrea Arcangeli
2001-07-05 15:32       ` Thibaut Laurent
2001-07-05 15:46         ` Arjan van de Ven
2001-07-05 15:56           ` Andrew Morton [this message]
2001-07-05 16:04             ` Alan Cox
2001-07-05 16:11               ` Andrew Morton
2001-07-05 16:15           ` Andrea Arcangeli
2001-07-05 22:40             ` Bob_Tracy
2001-07-06  3:42               ` Andrew Morton
2001-07-06 10:58           ` Manfred H. Winter
2001-07-06 12:43         ` Andrea Arcangeli
2001-07-06 14:18           ` Thibaut Laurent
2001-07-06 15:02             ` Andrea Arcangeli
2001-07-05 15:19   ` Manfred H. Winter
  -- strict thread matches above, loose matches on Subject: below --
2001-07-05 12:14 Bob_Tracy
2001-07-05 13:42 ` Alan Cox
2001-07-05 14:02   ` Bob_Tracy
     [not found] <E15I8gj-0002W7-00@the-village.bc.nu>
2001-07-05 13:59 ` Bob_Tracy
     [not found] <3B4450DF.82EEC851@uow.edu.au>
2001-07-05 14:28 ` Manfred H. Winter
2001-07-05 15:23   ` Andrew Morton
2001-07-05 17:31     ` Manfred H. Winter

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=3B448E33.120DF382@uow.edu.au \
    --to=andrewm@uow.edu.au \
    --cc=andrea@suse.de \
    --cc=arjanv@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=thibaut@celestix.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox