From: Masoud Sharbiani <masouds@masoud.ir>
To: kernel-janitors@vger.kernel.org
Subject: [KJ] [PATCH] Get rid of yield()
Date: Thu, 13 Oct 2005 19:13:21 +0000 [thread overview]
Message-ID: <20051013191321.GA22138@masoud.ir> (raw)
[-- Attachment #1: Type: text/plain, Size: 6752 bytes --]
Hello,
the following patch removes yield() from all drivers. They have been replaced by schedule_timeout() or cond_resched(). Please verify and comment.
Signed-off-by: Masoud A Sharbiani <masouds@masoud.ir>
diff --git a/drivers/cdrom/cdu31a.c b/drivers/cdrom/cdu31a.c
--- a/drivers/cdrom/cdu31a.c
+++ b/drivers/cdrom/cdu31a.c
@@ -371,7 +371,7 @@ static inline void disable_interrupts(vo
static inline void sony_sleep(void)
{
if (cdu31a_irq <= 0) {
- yield();
+ schedule_timeout(1);
} else { /* Interrupt driven */
DEFINE_WAIT(w);
int first = 1;
diff --git a/drivers/cdrom/sonycd535.c b/drivers/cdrom/sonycd535.c
--- a/drivers/cdrom/sonycd535.c
+++ b/drivers/cdrom/sonycd535.c
@@ -342,7 +342,7 @@ static inline void
sony_sleep(void)
{
if (sony535_irq_used <= 0) { /* poll */
- yield();
+ schedule_timeout(1);
} else { /* Interrupt driven */
DEFINE_WAIT(wait);
diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c
--- a/drivers/macintosh/adb.c
+++ b/drivers/macintosh/adb.c
@@ -556,7 +556,7 @@ adb_unregister(int index)
if (adb_handler[index].handler) {
while(adb_handler[index].busy) {
write_unlock_irq(&adb_handler_lock);
- yield();
+ schedule_timeout(1);
write_lock_irq(&adb_handler_lock);
}
ret = 0;
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -396,7 +396,7 @@ static void mmc_deselect_cards(struct mm
static inline void mmc_delay(unsigned int ms)
{
if (ms < HZ / 1000) {
- yield();
+ cond_resched();
mdelay(ms);
} else {
msleep_interruptible (ms);
diff --git a/drivers/net/depca.c b/drivers/net/depca.c
--- a/drivers/net/depca.c
+++ b/drivers/net/depca.c
@@ -762,9 +762,7 @@ static int __init depca_hw_init (struct
/* Trigger an initialization just for the interrupt. */
outw(INEA | INIT, DEPCA_DATA);
- delay = jiffies + HZ/50;
- while (time_before(jiffies, delay))
- yield();
+ schedule_timeout(HZ/50);
irqnum = probe_irq_off(irq_mask);
diff --git a/drivers/net/sb1000.c b/drivers/net/sb1000.c
--- a/drivers/net/sb1000.c
+++ b/drivers/net/sb1000.c
@@ -264,7 +264,7 @@ card_wait_for_busy_clear(const int ioadd
timeout = jiffies + TimeOutJiffies;
while (a & 0x80 || a & 0x40) {
/* a little sleep */
- yield();
+ schedule_timeout(1);
a = inb(ioaddr[0] + 7);
if (time_after_eq(jiffies, timeout)) {
@@ -288,7 +288,7 @@ card_wait_for_ready(const int ioaddr[],
timeout = jiffies + TimeOutJiffies;
while (a & 0x80 || !(a & 0x40)) {
/* a little sleep */
- yield();
+ schedule_timeout(1);
a = inb(ioaddr[1] + 6);
if (time_after_eq(jiffies, timeout)) {
diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c
--- a/drivers/net/sis900.c
+++ b/drivers/net/sis900.c
@@ -654,7 +654,7 @@ static int __init sis900_mii_probe(struc
if(status & MII_STAT_LINK){
while (poll_bit) {
- yield();
+ schedule_timeout(1);
poll_bit ^= (mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS) & poll_bit);
if (time_after_eq(jiffies, timeout)) {
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c
--- a/drivers/net/smc91x.c
+++ b/drivers/net/smc91x.c
@@ -1073,7 +1073,7 @@ static void smc_phy_powerdown(struct net
above). linkwatch_event() also wants the netlink semaphore.
*/
while(lp->work_pending)
- yield();
+ schedule_timeout(1);
bmcr = smc_phy_read(dev, phy, MII_BMCR);
smc_phy_write(dev, phy, MII_BMCR, bmcr | BMCR_PDOWN);
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c
--- a/drivers/net/sungem.c
+++ b/drivers/net/sungem.c
@@ -2397,7 +2397,7 @@ static int gem_suspend(struct pci_dev *p
/* Wait for a pending reset task to complete */
while (gp->reset_task_pending)
- yield();
+ sched_timeout(1);
flush_scheduled_work();
/* Shut the PHY down eventually and setup WOL */
@@ -2922,7 +2922,7 @@ static void __devexit gem_remove_one(str
/* Wait for a pending reset task to complete */
while (gp->reset_task_pending)
- yield();
+ schedule_timeout(1);
flush_scheduled_work();
/* Shut the PHY down */
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c
--- a/drivers/net/wireless/hostap/hostap_hw.c
+++ b/drivers/net/wireless/hostap/hostap_hw.c
@@ -995,7 +995,7 @@ static u16 hfa384x_allocate_fid(struct n
delay = jiffies + HFA384X_ALLOC_COMPL_TIMEOUT;
while (!(HFA384X_INW(HFA384X_EVSTAT_OFF) & HFA384X_EV_ALLOC) &&
time_before(jiffies, delay))
- yield();
+ schedule_timeout(1);
if (!(HFA384X_INW(HFA384X_EVSTAT_OFF) & HFA384X_EV_ALLOC)) {
printk("%s: fid allocate, len=%d - timeout\n", dev->name, len);
return 0xffff;
@@ -1332,7 +1332,7 @@ static int prism2_hw_init(struct net_dev
delay = jiffies + HFA384X_INIT_TIMEOUT;
while (!(HFA384X_INW(HFA384X_EVSTAT_OFF) & HFA384X_EV_CMD) &&
time_before(jiffies, delay))
- yield();
+ schedule_timeout(1);
if (!(HFA384X_INW(HFA384X_EVSTAT_OFF) & HFA384X_EV_CMD)) {
printk(KERN_DEBUG "%s: assuming no Primary image in "
"flash - card initialization not completed\n",
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -346,7 +346,7 @@ static int NCR5380_poll_politely(struct
if((r & bit) == val)
return 0;
if(!in_interrupt())
- yield();
+ schedule_timeout(1);
else
cpu_relax();
}
diff --git a/drivers/scsi/ibmmca.c b/drivers/scsi/ibmmca.c
--- a/drivers/scsi/ibmmca.c
+++ b/drivers/scsi/ibmmca.c
@@ -2196,7 +2196,7 @@ static int __ibmmca_abort(Scsi_Cmnd * cm
#endif
spin_unlock_irq(shpnt->host_lock);
while (!cmd->SCp.Status)
- yield();
+ schedule_timeout(1);
spin_lock_irq(shpnt->host_lock);
cmd->scsi_done = saved_done;
#ifdef IM_DEBUG_PROBE
@@ -2275,7 +2275,7 @@ static int __ibmmca_host_reset(Scsi_Cmnd
if (!(inb(IM_STAT_REG(host_index)) & IM_BUSY))
break;
spin_unlock_irq(shpnt->host_lock);
- yield();
+ schedule_timeout(1);
spin_lock_irq(shpnt->host_lock);
}
/*write registers and enable system interrupts */
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c
--- a/drivers/scsi/megaraid.c
+++ b/drivers/scsi/megaraid.c
@@ -1750,7 +1750,7 @@ __mega_busywait_mbox (adapter_t *adapter
for (counter = 0; counter < 10000; counter++) {
if (!mbox->m_in.busy)
return 0;
- udelay(100); yield();
+ udelay(100); cond_resched();
}
return -1; /* give up after 1 second */
}
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -477,7 +477,7 @@ void usb_sg_wait (struct usb_sg_request
io->urbs[i]->dev = NULL;
retval = 0;
i--;
- yield ();
+ schedule_timeout(1);
break;
/* no error? continue immediately.
[-- Attachment #2: Type: text/plain, Size: 168 bytes --]
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/kernel-janitors
next reply other threads:[~2005-10-13 19:13 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-13 19:13 Masoud Sharbiani [this message]
2005-10-13 23:30 ` [KJ] [PATCH] Get rid of yield() Nish Aravamudan
2005-10-14 11:46 ` Matthew Wilcox
2005-10-14 13:35 ` Nish Aravamudan
2005-10-14 14:06 ` Matthew Wilcox
2005-10-14 14:16 ` Masoud Sharbiani
2005-10-14 14:17 ` Nish Aravamudan
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=20051013191321.GA22138@masoud.ir \
--to=masouds@masoud.ir \
--cc=kernel-janitors@vger.kernel.org \
/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.