[ALSA] alsa-kernel: schedule_timeout() fixes
Fix schedule_timeout() use in alsa-kernel. Mostly just schedule_timeout(1) --> schedule_timeout_uninterruptible(1) The wavefront_synth one fixes the surrounding loop as well. In ymfpci_main, delete a superfluous set_current_state() and in soc/soc-dapm.c replace an _interruptible with _uninterruptible in some debug code; it's not waiting for signals. Signed-off-by: Rene Herman <rene.herman> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
This commit is contained in:
committed by
Jaroslav Kysela
parent
b44ef2f154
commit
d86d01935a
@@ -401,7 +401,7 @@ static int obp_startup_ack(struct soundscape *s, unsigned timeout)
|
|||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
unsigned char x;
|
unsigned char x;
|
||||||
|
|
||||||
schedule_timeout(1);
|
schedule_timeout_uninterruptible(1);
|
||||||
|
|
||||||
spin_lock_irqsave(&s->lock, flags);
|
spin_lock_irqsave(&s->lock, flags);
|
||||||
x = inb(HOST_DATA_IO(s->io_base));
|
x = inb(HOST_DATA_IO(s->io_base));
|
||||||
@@ -428,7 +428,7 @@ static int host_startup_ack(struct soundscape *s, unsigned timeout)
|
|||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
unsigned char x;
|
unsigned char x;
|
||||||
|
|
||||||
schedule_timeout(1);
|
schedule_timeout_uninterruptible(1);
|
||||||
|
|
||||||
spin_lock_irqsave(&s->lock, flags);
|
spin_lock_irqsave(&s->lock, flags);
|
||||||
x = inb(HOST_DATA_IO(s->io_base));
|
x = inb(HOST_DATA_IO(s->io_base));
|
||||||
|
@@ -1768,7 +1768,7 @@ snd_wavefront_interrupt_bits (int irq)
|
|||||||
|
|
||||||
static void __devinit
|
static void __devinit
|
||||||
wavefront_should_cause_interrupt (snd_wavefront_t *dev,
|
wavefront_should_cause_interrupt (snd_wavefront_t *dev,
|
||||||
int val, int port, int timeout)
|
int val, int port, unsigned long timeout)
|
||||||
|
|
||||||
{
|
{
|
||||||
wait_queue_t wait;
|
wait_queue_t wait;
|
||||||
@@ -1779,11 +1779,9 @@ wavefront_should_cause_interrupt (snd_wavefront_t *dev,
|
|||||||
dev->irq_ok = 0;
|
dev->irq_ok = 0;
|
||||||
outb (val,port);
|
outb (val,port);
|
||||||
spin_unlock_irq(&dev->irq_lock);
|
spin_unlock_irq(&dev->irq_lock);
|
||||||
while (1) {
|
while (!dev->irq_ok && time_before(jiffies, timeout)) {
|
||||||
if ((timeout = schedule_timeout(timeout)) == 0)
|
schedule_timeout_uninterruptible(1);
|
||||||
return;
|
barrier();
|
||||||
if (dev->irq_ok)
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -555,7 +555,7 @@ static unsigned int azx_rirb_get_response(struct hda_codec *codec)
|
|||||||
}
|
}
|
||||||
if (!chip->rirb.cmds)
|
if (!chip->rirb.cmds)
|
||||||
return chip->rirb.res; /* the last value */
|
return chip->rirb.res; /* the last value */
|
||||||
schedule_timeout(1);
|
schedule_timeout_uninterruptible(1);
|
||||||
} while (time_after_eq(timeout, jiffies));
|
} while (time_after_eq(timeout, jiffies));
|
||||||
|
|
||||||
if (chip->msi) {
|
if (chip->msi) {
|
||||||
|
@@ -2090,7 +2090,7 @@ static int snd_via82xx_chip_init(struct via82xx *chip)
|
|||||||
pci_read_config_byte(chip->pci, VIA_ACLINK_STAT, &pval);
|
pci_read_config_byte(chip->pci, VIA_ACLINK_STAT, &pval);
|
||||||
if (pval & VIA_ACLINK_C00_READY) /* primary codec ready */
|
if (pval & VIA_ACLINK_C00_READY) /* primary codec ready */
|
||||||
break;
|
break;
|
||||||
schedule_timeout(1);
|
schedule_timeout_uninterruptible(1);
|
||||||
} while (time_before(jiffies, end_time));
|
} while (time_before(jiffies, end_time));
|
||||||
|
|
||||||
if ((val = snd_via82xx_codec_xread(chip)) & VIA_REG_AC97_BUSY)
|
if ((val = snd_via82xx_codec_xread(chip)) & VIA_REG_AC97_BUSY)
|
||||||
@@ -2109,7 +2109,7 @@ static int snd_via82xx_chip_init(struct via82xx *chip)
|
|||||||
chip->ac97_secondary = 1;
|
chip->ac97_secondary = 1;
|
||||||
goto __ac97_ok2;
|
goto __ac97_ok2;
|
||||||
}
|
}
|
||||||
schedule_timeout(1);
|
schedule_timeout_uninterruptible(1);
|
||||||
} while (time_before(jiffies, end_time));
|
} while (time_before(jiffies, end_time));
|
||||||
/* This is ok, the most of motherboards have only one codec */
|
/* This is ok, the most of motherboards have only one codec */
|
||||||
|
|
||||||
|
@@ -983,7 +983,7 @@ static int snd_via82xx_chip_init(struct via82xx_modem *chip)
|
|||||||
pci_read_config_byte(chip->pci, VIA_ACLINK_STAT, &pval);
|
pci_read_config_byte(chip->pci, VIA_ACLINK_STAT, &pval);
|
||||||
if (pval & VIA_ACLINK_C00_READY) /* primary codec ready */
|
if (pval & VIA_ACLINK_C00_READY) /* primary codec ready */
|
||||||
break;
|
break;
|
||||||
schedule_timeout(1);
|
schedule_timeout_uninterruptible(1);
|
||||||
} while (time_before(jiffies, end_time));
|
} while (time_before(jiffies, end_time));
|
||||||
|
|
||||||
if ((val = snd_via82xx_codec_xread(chip)) & VIA_REG_AC97_BUSY)
|
if ((val = snd_via82xx_codec_xread(chip)) & VIA_REG_AC97_BUSY)
|
||||||
@@ -1001,7 +1001,7 @@ static int snd_via82xx_chip_init(struct via82xx_modem *chip)
|
|||||||
chip->ac97_secondary = 1;
|
chip->ac97_secondary = 1;
|
||||||
goto __ac97_ok2;
|
goto __ac97_ok2;
|
||||||
}
|
}
|
||||||
schedule_timeout(1);
|
schedule_timeout_uninterruptible(1);
|
||||||
} while (time_before(jiffies, end_time));
|
} while (time_before(jiffies, end_time));
|
||||||
/* This is ok, the most of motherboards have only one codec */
|
/* This is ok, the most of motherboards have only one codec */
|
||||||
|
|
||||||
|
@@ -84,7 +84,6 @@ static int snd_ymfpci_codec_ready(struct snd_ymfpci *chip, int secondary)
|
|||||||
do {
|
do {
|
||||||
if ((snd_ymfpci_readw(chip, reg) & 0x8000) == 0)
|
if ((snd_ymfpci_readw(chip, reg) & 0x8000) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
set_current_state(TASK_UNINTERRUPTIBLE);
|
|
||||||
schedule_timeout_uninterruptible(1);
|
schedule_timeout_uninterruptible(1);
|
||||||
} while (time_before(jiffies, end_time));
|
} while (time_before(jiffies, end_time));
|
||||||
snd_printk(KERN_ERR "codec_ready: codec %i is not ready [0x%x]\n", secondary, snd_ymfpci_readw(chip, reg));
|
snd_printk(KERN_ERR "codec_ready: codec %i is not ready [0x%x]\n", secondary, snd_ymfpci_readw(chip, reg));
|
||||||
|
@@ -63,7 +63,7 @@
|
|||||||
#define POP_DEBUG 0
|
#define POP_DEBUG 0
|
||||||
#if POP_DEBUG
|
#if POP_DEBUG
|
||||||
#define POP_TIME 500 /* 500 msecs - change if pop debug is too fast */
|
#define POP_TIME 500 /* 500 msecs - change if pop debug is too fast */
|
||||||
#define pop_wait(time) schedule_timeout_interruptible(msecs_to_jiffies(time))
|
#define pop_wait(time) schedule_timeout_uninterruptible(msecs_to_jiffies(time))
|
||||||
#define pop_dbg(format, arg...) printk(format, ## arg); pop_wait(POP_TIME)
|
#define pop_dbg(format, arg...) printk(format, ## arg); pop_wait(POP_TIME)
|
||||||
#else
|
#else
|
||||||
#define pop_dbg(format, arg...)
|
#define pop_dbg(format, arg...)
|
||||||
|
Reference in New Issue
Block a user