[PATCH] tweak spin logic for hpilo

From: David Altobelli
Date: Mon Mar 09 2009 - 18:57:12 EST


Change hpilo open and close logic to spin for 10usec between checking device,
rather than every usec. Applies to 2.6.29.

Please CC me on any replies.

Signed-off-by: David Altobelli <david.altobelli@xxxxxx>
---

--- linux-2.6.28/drivers/misc/hpilo.h.orig 2009-03-09 13:24:25.000000000 -0500
+++ linux-2.6.28/drivers/misc/hpilo.h 2009-03-09 13:28:22.000000000 -0500
@@ -19,8 +19,12 @@
#define MAX_ILO_DEV 1
/* max number of files */
#define MAX_OPEN (MAX_CCB * MAX_ILO_DEV)
+/* total wait time in usec */
+#define MAX_WAIT_TIME 10000
+/* per spin wait time in usec */
+#define WAIT_TIME 10
/* spin counter for open/close delay */
-#define MAX_WAIT 10000
+#define MAX_WAIT (MAX_WAIT_TIME / WAIT_TIME)

/*
* Per device, used to track global memory allocations.
--- linux-2.6.28/drivers/misc/hpilo.c.orig 2009-03-09 13:24:31.000000000 -0500
+++ linux-2.6.28/drivers/misc/hpilo.c 2009-03-09 13:57:08.000000000 -0500
@@ -209,7 +209,7 @@ static void ilo_ccb_close(struct pci_dev
/* give iLO some time to process stop request */
for (retries = MAX_WAIT; retries > 0; retries--) {
doorbell_set(driver_ccb);
- udelay(1);
+ udelay(WAIT_TIME);
if (!(ioread32(&device_ccb->send_ctrl) & (1 << CTRL_BITPOS_A))
&&
!(ioread32(&device_ccb->recv_ctrl) & (1 << CTRL_BITPOS_A)))
@@ -312,7 +312,7 @@ static int ilo_ccb_open(struct ilo_hwinf
for (i = MAX_WAIT; i > 0; i--) {
if (ilo_pkt_dequeue(hw, driver_ccb, SENDQ, &pkt_id, NULL, NULL))
break;
- udelay(1);
+ udelay(WAIT_TIME);
}

if (i) {
@@ -759,7 +759,7 @@ static void __exit ilo_exit(void)
class_destroy(ilo_class);
}

-MODULE_VERSION("1.0");
+MODULE_VERSION("1.1");
MODULE_ALIAS(ILO_NAME);
MODULE_DESCRIPTION(ILO_NAME);
MODULE_AUTHOR("David Altobelli <david.altobelli@xxxxxx>");
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/