KVM: Use kvm_arch_interrupt_allowed() instead of checking interrupt_window_open directly
[safe/jmp/linux-2.6] / drivers / watchdog / booke_wdt.c
index 4c423d5..225398f 100644 (file)
@@ -42,8 +42,10 @@ u32 booke_wdt_period = WDT_PERIOD_DEFAULT;
 
 #ifdef CONFIG_FSL_BOOKE
 #define WDTP(x)                ((((63-x)&0x3)<<30)|(((63-x)&0x3c)<<15))
+#define WDTP_MASK      (WDTP(0))
 #else
 #define WDTP(x)                (TCR_WP(x))
+#define WDTP_MASK      (TCR_WP_MASK)
 #endif
 
 static DEFINE_SPINLOCK(booke_wdt_lock);
@@ -55,7 +57,7 @@ static void __booke_wdt_ping(void *data)
 
 static void booke_wdt_ping(void)
 {
-       on_each_cpu(__booke_wdt_ping, NULL, 0, 0);
+       on_each_cpu(__booke_wdt_ping, NULL, 0);
 }
 
 static void __booke_wdt_enable(void *data)
@@ -65,6 +67,7 @@ static void __booke_wdt_enable(void *data)
        /* clear status before enabling watchdog */
        __booke_wdt_ping(NULL);
        val = mfspr(SPRN_TCR);
+       val &= ~WDTP_MASK;
        val |= (TCR_WIE|TCR_WRC(WRC_CHIP)|WDTP(booke_wdt_period));
 
        mtspr(SPRN_TCR, val);
@@ -99,26 +102,26 @@ static long booke_wdt_ioctl(struct file *file,
                tmp = mfspr(SPRN_TSR) & TSR_WRS(3);
                /* returns 1 if last reset was caused by the WDT */
                return (tmp ? 1 : 0);
+       case WDIOC_SETOPTIONS:
+               if (get_user(tmp, p))
+                       return -EINVAL;
+               if (tmp == WDIOS_ENABLECARD) {
+                       booke_wdt_ping();
+                       break;
+               } else
+                       return -EINVAL;
+               return 0;
        case WDIOC_KEEPALIVE:
                booke_wdt_ping();
                return 0;
        case WDIOC_SETTIMEOUT:
                if (get_user(booke_wdt_period, p))
                        return -EFAULT;
-               mtspr(SPRN_TCR, (mfspr(SPRN_TCR) & ~WDTP(0)) |
+               mtspr(SPRN_TCR, (mfspr(SPRN_TCR) & ~WDTP_MASK) |
                                                WDTP(booke_wdt_period));
                return 0;
        case WDIOC_GETTIMEOUT:
                return put_user(booke_wdt_period, p);
-       case WDIOC_SETOPTIONS:
-               if (get_user(tmp, p))
-                       return -EINVAL;
-               if (tmp == WDIOS_ENABLECARD) {
-                       booke_wdt_ping();
-                       break;
-               } else
-                       return -EINVAL;
-               return 0;
        default:
                return -ENOTTY;
        }
@@ -131,7 +134,7 @@ static int booke_wdt_open(struct inode *inode, struct file *file)
        spin_lock(&booke_wdt_lock);
        if (booke_wdt_enabled == 0) {
                booke_wdt_enabled = 1;
-               on_each_cpu(__booke_wdt_enable, NULL, 0, 0);
+               on_each_cpu(__booke_wdt_enable, NULL, 0);
                printk(KERN_INFO
                      "PowerPC Book-E Watchdog Timer Enabled (wdt_period=%d)\n",
                                booke_wdt_period);
@@ -179,7 +182,7 @@ static int __init booke_wdt_init(void)
                printk(KERN_INFO
                      "PowerPC Book-E Watchdog Timer Enabled (wdt_period=%d)\n",
                                booke_wdt_period);
-               on_each_cpu(__booke_wdt_enable, NULL, 0, 0);
+               on_each_cpu(__booke_wdt_enable, NULL, 0);
        }
        spin_unlock(&booke_wdt_lock);