* [KJ] [PATCH 16/21] ppc64/iSeries_pci_reset: replace
@ 2005-01-17 23:50 Nishanth Aravamudan
0 siblings, 0 replies; only message in thread
From: Nishanth Aravamudan @ 2005-01-17 23:50 UTC (permalink / raw)
To: kernel-janitors
[-- Attachment #1: Type: text/plain, Size: 2335 bytes --]
Hi,
Please consider applying.
Description: Use msleep() instead of schedule_timeout() to guarantee the task
delays as expected. The code is not wrong as is, but I see two benefits to using
msleep(): 1) real time delays (milliseconds) and 2) consistency across the
kernel with respect to longer delays. Change the units of the WaitDelay and
AssertDelay constants accordingly.
Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
--- 2.6.11-rc1-kj-v/arch/ppc64/kernel/iSeries_pci_reset.c 2005-01-15 16:55:41.000000000 -0800
+++ 2.6.11-rc1-kj/arch/ppc64/kernel/iSeries_pci_reset.c 2005-01-15 17:17:54.000000000 -0800
@@ -32,6 +32,7 @@
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/irq.h>
+#include <linux/delay.h>
#include <asm/io.h>
#include <asm/iSeries/HvCallPci.h>
@@ -49,7 +50,7 @@
int iSeries_Device_ToggleReset(struct pci_dev *PciDev, int AssertTime,
int DelayTime)
{
- unsigned long AssertDelay, WaitDelay;
+ unsigned int AssertDelay, WaitDelay;
struct iSeries_Device_Node *DeviceNode =
(struct iSeries_Device_Node *)PciDev->sysdata;
@@ -62,14 +63,14 @@ int iSeries_Device_ToggleReset(struct pc
* Set defaults, Assert is .5 second, Wait is 3 seconds.
*/
if (AssertTime == 0)
- AssertDelay = (5 * HZ) / 10;
+ AssertDelay = 500;
else
- AssertDelay = (AssertTime * HZ) / 10;
+ AssertDelay = AssertTime * 100;
if (DelayTime == 0)
- WaitDelay = (30 * HZ) / 10;
+ WaitDelay = 3000;
else
- WaitDelay = (DelayTime * HZ) / 10;
+ WaitDelay = DelayTime * 100;
/*
* Assert reset
@@ -77,8 +78,7 @@ int iSeries_Device_ToggleReset(struct pc
DeviceNode->ReturnCode = HvCallPci_setSlotReset(ISERIES_BUS(DeviceNode),
0x00, DeviceNode->AgentId, 1);
if (DeviceNode->ReturnCode == 0) {
- set_current_state(TASK_UNINTERRUPTIBLE);
- schedule_timeout(AssertDelay); /* Sleep for the time */
+ msleep(AssertDelay); /* Sleep for the time */
DeviceNode->ReturnCode =
HvCallPci_setSlotReset(ISERIES_BUS(DeviceNode),
0x00, DeviceNode->AgentId, 0);
@@ -86,8 +86,7 @@ int iSeries_Device_ToggleReset(struct pc
/*
* Wait for device to reset
*/
- set_current_state(TASK_UNINTERRUPTIBLE);
- schedule_timeout(WaitDelay);
+ msleep(WaitDelay);
}
if (DeviceNode->ReturnCode == 0)
PCIFR("Slot 0x%04X.%02 Reset\n", ISERIES_BUS(DeviceNode),
[-- Attachment #2: Type: text/plain, Size: 167 bytes --]
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
http://lists.osdl.org/mailman/listinfo/kernel-janitors
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-01-17 23:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-17 23:50 [KJ] [PATCH 16/21] ppc64/iSeries_pci_reset: replace Nishanth Aravamudan
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.