[PATCH] lockdep: annotate enable_in_hardirq()
Make use of local_irq_enable_in_hardirq() API to annotate places that enable hardirqs in hardirq context. Has no effect on non-lockdep kernels. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
0a9da4bd8e
commit
366c7f554e
7 changed files with 9 additions and 9 deletions
|
@ -107,7 +107,7 @@ int nmi_active;
|
||||||
static __init void nmi_cpu_busy(void *data)
|
static __init void nmi_cpu_busy(void *data)
|
||||||
{
|
{
|
||||||
volatile int *endflag = data;
|
volatile int *endflag = data;
|
||||||
local_irq_enable();
|
local_irq_enable_in_hardirq();
|
||||||
/* Intentionally don't use cpu_relax here. This is
|
/* Intentionally don't use cpu_relax here. This is
|
||||||
to make sure that the performance counter really ticks,
|
to make sure that the performance counter really ticks,
|
||||||
even if there is a simulator or similar that catches the
|
even if there is a simulator or similar that catches the
|
||||||
|
|
|
@ -127,7 +127,7 @@ void __cpuinit nmi_watchdog_default(void)
|
||||||
static __init void nmi_cpu_busy(void *data)
|
static __init void nmi_cpu_busy(void *data)
|
||||||
{
|
{
|
||||||
volatile int *endflag = data;
|
volatile int *endflag = data;
|
||||||
local_irq_enable();
|
local_irq_enable_in_hardirq();
|
||||||
/* Intentionally don't use cpu_relax here. This is
|
/* Intentionally don't use cpu_relax here. This is
|
||||||
to make sure that the performance counter really ticks,
|
to make sure that the performance counter really ticks,
|
||||||
even if there is a simulator or similar that catches the
|
even if there is a simulator or similar that catches the
|
||||||
|
|
|
@ -838,7 +838,7 @@ static ide_startstop_t idefloppy_pc_intr (ide_drive_t *drive)
|
||||||
"transferred\n", pc->actually_transferred);
|
"transferred\n", pc->actually_transferred);
|
||||||
clear_bit(PC_DMA_IN_PROGRESS, &pc->flags);
|
clear_bit(PC_DMA_IN_PROGRESS, &pc->flags);
|
||||||
|
|
||||||
local_irq_enable();
|
local_irq_enable_in_hardirq();
|
||||||
|
|
||||||
if (status.b.check || test_bit(PC_DMA_ERROR, &pc->flags)) {
|
if (status.b.check || test_bit(PC_DMA_ERROR, &pc->flags)) {
|
||||||
/* Error detected */
|
/* Error detected */
|
||||||
|
|
|
@ -693,7 +693,7 @@ static ide_startstop_t drive_cmd_intr (ide_drive_t *drive)
|
||||||
u8 stat = hwif->INB(IDE_STATUS_REG);
|
u8 stat = hwif->INB(IDE_STATUS_REG);
|
||||||
int retries = 10;
|
int retries = 10;
|
||||||
|
|
||||||
local_irq_enable();
|
local_irq_enable_in_hardirq();
|
||||||
if ((stat & DRQ_STAT) && args && args[3]) {
|
if ((stat & DRQ_STAT) && args && args[3]) {
|
||||||
u8 io_32bit = drive->io_32bit;
|
u8 io_32bit = drive->io_32bit;
|
||||||
drive->io_32bit = 0;
|
drive->io_32bit = 0;
|
||||||
|
@ -1286,7 +1286,7 @@ static void ide_do_request (ide_hwgroup_t *hwgroup, int masked_irq)
|
||||||
if (masked_irq != IDE_NO_IRQ && hwif->irq != masked_irq)
|
if (masked_irq != IDE_NO_IRQ && hwif->irq != masked_irq)
|
||||||
disable_irq_nosync(hwif->irq);
|
disable_irq_nosync(hwif->irq);
|
||||||
spin_unlock(&ide_lock);
|
spin_unlock(&ide_lock);
|
||||||
local_irq_enable();
|
local_irq_enable_in_hardirq();
|
||||||
/* allow other IRQs while we start this request */
|
/* allow other IRQs while we start this request */
|
||||||
startstop = start_request(drive, rq);
|
startstop = start_request(drive, rq);
|
||||||
spin_lock_irq(&ide_lock);
|
spin_lock_irq(&ide_lock);
|
||||||
|
@ -1631,7 +1631,7 @@ irqreturn_t ide_intr (int irq, void *dev_id, struct pt_regs *regs)
|
||||||
spin_unlock(&ide_lock);
|
spin_unlock(&ide_lock);
|
||||||
|
|
||||||
if (drive->unmask)
|
if (drive->unmask)
|
||||||
local_irq_enable();
|
local_irq_enable_in_hardirq();
|
||||||
/* service this interrupt, may set handler for next interrupt */
|
/* service this interrupt, may set handler for next interrupt */
|
||||||
startstop = handler(drive);
|
startstop = handler(drive);
|
||||||
spin_lock_irq(&ide_lock);
|
spin_lock_irq(&ide_lock);
|
||||||
|
|
|
@ -222,7 +222,7 @@ ide_startstop_t task_no_data_intr (ide_drive_t *drive)
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
ide_hwif_t *hwif = HWIF(drive);
|
||||||
u8 stat;
|
u8 stat;
|
||||||
|
|
||||||
local_irq_enable();
|
local_irq_enable_in_hardirq();
|
||||||
if (!OK_STAT(stat = hwif->INB(IDE_STATUS_REG),READY_STAT,BAD_STAT)) {
|
if (!OK_STAT(stat = hwif->INB(IDE_STATUS_REG),READY_STAT,BAD_STAT)) {
|
||||||
return ide_error(drive, "task_no_data_intr", stat);
|
return ide_error(drive, "task_no_data_intr", stat);
|
||||||
/* calls ide_end_drive_cmd */
|
/* calls ide_end_drive_cmd */
|
||||||
|
|
|
@ -1359,7 +1359,7 @@ extern struct semaphore ide_cfg_sem;
|
||||||
* ide_drive_t->hwif: constant, no locking
|
* ide_drive_t->hwif: constant, no locking
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define local_irq_set(flags) do { local_save_flags((flags)); local_irq_enable(); } while (0)
|
#define local_irq_set(flags) do { local_save_flags((flags)); local_irq_enable_in_hardirq(); } while (0)
|
||||||
|
|
||||||
extern struct bus_type ide_bus_type;
|
extern struct bus_type ide_bus_type;
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,7 @@ irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
|
||||||
handle_dynamic_tick(action);
|
handle_dynamic_tick(action);
|
||||||
|
|
||||||
if (!(action->flags & IRQF_DISABLED))
|
if (!(action->flags & IRQF_DISABLED))
|
||||||
local_irq_enable();
|
local_irq_enable_in_hardirq();
|
||||||
|
|
||||||
do {
|
do {
|
||||||
ret = action->handler(irq, action->dev_id, regs);
|
ret = action->handler(irq, action->dev_id, regs);
|
||||||
|
|
Loading…
Reference in a new issue