Re: start_kernel(): bug: interrupts were enabled early

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linus Torvalds
Date: Friday, April 2, 2010 - 7:54 am

On Fri, 2 Apr 2010, David Howells wrote:


I think you're missing the part where we're not _adding_ any irq disables: 
we're just changing the unconditional irq disable to a save-and-disable 
(and the unconditional irq enable to a restore).

So even if irq's are expensive to disable, the change from

	spin_lock_irq()

to

	spin_lock_irqsave()

won't make that code any more expensive.


Again, you seem to think that we used to have just a plain spin_lock. Not 
so. We currently have a spin_lock_irq(), and it is NOT a no-op even on UP. 
It does that irq disable.

Anyway, I suspect that even with just an atomic xchg, you can do a better 
job at doing down_read() than using the generic spin-lock version (likely 
by busy-looping on a special "we're busy" value). But if you do want to 
use the generic spin-lock version, I doubt any architecture makes that 
irqsave version noticeable slower than the unconditional irq version.

		Linus
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
start_kernel(): bug: interrupts were enabled early, Rabin Vincent, (Thu Mar 25, 12:41 pm)
Re: start_kernel(): bug: interrupts were enabled early, Andrew Morton, (Wed Mar 31, 1:40 pm)
Re: start_kernel(): bug: interrupts were enabled early, Andrew Morton, (Wed Mar 31, 1:52 pm)
Re: start_kernel(): bug: interrupts were enabled early, Matthew Wilcox, (Wed Mar 31, 2:01 pm)
Re: start_kernel(): bug: interrupts were enabled early, H. Peter Anvin, (Wed Mar 31, 2:05 pm)
Re: start_kernel(): bug: interrupts were enabled early, Russell King, (Wed Mar 31, 2:05 pm)
Re: start_kernel(): bug: interrupts were enabled early, H. Peter Anvin, (Wed Mar 31, 2:08 pm)
Re: start_kernel(): bug: interrupts were enabled early, H. Peter Anvin, (Wed Mar 31, 2:12 pm)
Re: start_kernel(): bug: interrupts were enabled early, Matthew Wilcox, (Wed Mar 31, 2:17 pm)
Re: start_kernel(): bug: interrupts were enabled early, Andrew Morton, (Wed Mar 31, 2:28 pm)
Re: start_kernel(): bug: interrupts were enabled early, Christoph Lameter, (Wed Mar 31, 2:42 pm)
Re: start_kernel(): bug: interrupts were enabled early, Russell King, (Wed Mar 31, 2:54 pm)
Re: start_kernel(): bug: interrupts were enabled early, H. Peter Anvin, (Wed Mar 31, 2:57 pm)
Re: start_kernel(): bug: interrupts were enabled early, Andrew Morton, (Wed Mar 31, 3:26 pm)
Re: start_kernel(): bug: interrupts were enabled early, Russell King, (Wed Mar 31, 3:30 pm)
Re: start_kernel(): bug: interrupts were enabled early, Benjamin Herrenschmidt, (Wed Mar 31, 3:31 pm)
Re: start_kernel(): bug: interrupts were enabled early, Benjamin Herrenschmidt, (Wed Mar 31, 3:35 pm)
Re: start_kernel(): bug: interrupts were enabled early, H. Peter Anvin, (Wed Mar 31, 3:36 pm)
Re: start_kernel(): bug: interrupts were enabled early, Benjamin Herrenschmidt, (Wed Mar 31, 3:36 pm)
Re: start_kernel(): bug: interrupts were enabled early, Benjamin Herrenschmidt, (Wed Mar 31, 3:37 pm)
Re: start_kernel(): bug: interrupts were enabled early, Andrew Morton, (Wed Mar 31, 3:49 pm)
Re: start_kernel(): bug: interrupts were enabled early, David Howells, (Wed Mar 31, 3:58 pm)
Re: start_kernel(): bug: interrupts were enabled early, Benjamin Herrenschmidt, (Wed Mar 31, 6:17 pm)
Re: start_kernel(): bug: interrupts were enabled early, Andrew Morton, (Wed Mar 31, 8:33 pm)
Re: start_kernel(): bug: interrupts were enabled early, H. Peter Anvin, (Wed Mar 31, 11:26 pm)
Re: start_kernel(): bug: interrupts were enabled early, Benjamin Herrenschmidt, (Wed Mar 31, 11:48 pm)
Re: start_kernel(): bug: interrupts were enabled early, Benjamin Herrenschmidt, (Wed Mar 31, 11:50 pm)
Re: start_kernel(): bug: interrupts were enabled early, Jamie Lokier, (Thu Apr 1, 2:41 am)
Re: start_kernel(): bug: interrupts were enabled early, David Howells, (Thu Apr 1, 3:50 am)
Re: start_kernel(): bug: interrupts were enabled early, David Howells, (Thu Apr 1, 4:06 am)
Re: start_kernel(): bug: interrupts were enabled early, Matthew Wilcox, (Thu Apr 1, 4:23 am)
Re: start_kernel(): bug: interrupts were enabled early, Andrew Morton, (Thu Apr 1, 7:27 am)
Re: start_kernel(): bug: interrupts were enabled early, Christoph Lameter, (Thu Apr 1, 8:55 am)
Re: start_kernel(): bug: interrupts were enabled early, Christoph Lameter, (Thu Apr 1, 8:57 am)
Re: start_kernel(): bug: interrupts were enabled early, Linus Torvalds, (Thu Apr 1, 9:13 am)
Re: start_kernel(): bug: interrupts were enabled early, H. Peter Anvin, (Thu Apr 1, 9:15 am)
Re: start_kernel(): bug: interrupts were enabled early, Linus Torvalds, (Thu Apr 1, 1:12 pm)
Re: start_kernel(): bug: interrupts were enabled early, Benjamin Herrenschmidt, (Thu Apr 1, 4:00 pm)
Re: start_kernel(): bug: interrupts were enabled early, David Howells, (Fri Apr 2, 7:46 am)
Re: start_kernel(): bug: interrupts were enabled early, Linus Torvalds, (Fri Apr 2, 7:54 am)
Re: start_kernel(): bug: interrupts were enabled early, Kevin Hilman, (Wed Apr 7, 12:09 pm)
Re: start_kernel(): bug: interrupts were enabled early, =?utf-8?Q?Am=C3=A9ri ..., (Thu Apr 8, 8:55 am)