From patchwork Mon Dec 6 21:02:23 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Randy Vinson X-Patchwork-Id: 74465 X-Patchwork-Delegate: benh@kernel.crashing.org Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from bilbo.ozlabs.org (localhost [127.0.0.1]) by ozlabs.org (Postfix) with ESMTP id 685F8B72D0 for ; Tue, 7 Dec 2010 08:03:14 +1100 (EST) Received: by ozlabs.org (Postfix) id B048CB708B; Tue, 7 Dec 2010 08:03:03 +1100 (EST) Delivered-To: linuxppc-dev@ozlabs.org Received: from mail-qw0-f42.google.com (mail-qw0-f42.google.com [209.85.216.42]) by ozlabs.org (Postfix) with ESMTP id 2E4A6B6EF1 for ; Tue, 7 Dec 2010 08:03:02 +1100 (EST) Received: by qwj8 with SMTP id 8so10375601qwj.15 for ; Mon, 06 Dec 2010 13:03:00 -0800 (PST) Received: by 10.229.74.206 with SMTP id v14mr1764888qcj.203.1291669380809; Mon, 06 Dec 2010 13:03:00 -0800 (PST) Received: from [10.50.1.80] (gateway-1237.mvista.com [206.112.117.35]) by mx.google.com with ESMTPS id t17sm3827320qcp.38.2010.12.06.13.02.59 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 06 Dec 2010 13:03:00 -0800 (PST) Message-ID: <4CFD4F5F.8070108@mvista.com> Date: Mon, 06 Dec 2010 14:02:23 -0700 From: Randy Vinson User-Agent: Thunderbird 2.0.0.24 (X11/20100623) MIME-Version: 1.0 To: "linuxppc-dev@ozlabs.org" , linux-watchdog@vger.kernel.org, Kumar Gala Subject: [PATCH] powerpc/watchdog: Propagate Book E WDT period changes to all cores X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org When the watchdog period is changed, it needs to be propagated to all cores in addition to the core that performed the change. Signed-off-by: Randy Vinson --- drivers/watchdog/booke_wdt.c | 19 +++++++++++++++++-- 1 files changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/watchdog/booke_wdt.c b/drivers/watchdog/booke_wdt.c index d11ffb0..c8ffa6c 100644 --- a/drivers/watchdog/booke_wdt.c +++ b/drivers/watchdog/booke_wdt.c @@ -85,6 +85,22 @@ static unsigned int sec_to_period(unsigned int secs) return 0; } +static void __booke_wdt_set(void *data) +{ + u32 val; + + val = mfspr(SPRN_TCR); + val &= ~WDTP_MASK; + val |= WDTP(booke_wdt_period); + + mtspr(SPRN_TCR, val); +} + +static void booke_wdt_set(void) +{ + on_each_cpu(__booke_wdt_set, NULL, 0); +} + static void __booke_wdt_ping(void *data) { mtspr(SPRN_TSR, TSR_ENW|TSR_WIS); @@ -181,8 +197,7 @@ static long booke_wdt_ioctl(struct file *file, #else booke_wdt_period = tmp; #endif - mtspr(SPRN_TCR, (mfspr(SPRN_TCR) & ~WDTP_MASK) | - WDTP(booke_wdt_period)); + booke_wdt_set(); return 0; case WDIOC_GETTIMEOUT: return put_user(booke_wdt_period, p);