From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161727AbcA1EyH (ORCPT ); Wed, 27 Jan 2016 23:54:07 -0500 Received: from p3plsmtps2ded01.prod.phx3.secureserver.net ([208.109.80.58]:37942 "EHLO p3plsmtps2ded01.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1161578AbcA1ExW (ORCPT ); Wed, 27 Jan 2016 23:53:22 -0500 x-originating-ip: 72.167.245.219 From: "K. Y. Srinivasan" To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com, jasowang@redhat.com Cc: "K. Y. Srinivasan" Subject: [PATCH V2 04/13] Drivers: hv: vmbus: don't manipulate with clocksources on crash Date: Wed, 27 Jan 2016 22:29:36 -0800 Message-Id: <1453962585-32069-4-git-send-email-kys@microsoft.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1453962585-32069-1-git-send-email-kys@microsoft.com> References: <1453962559-32028-1-git-send-email-kys@microsoft.com> <1453962585-32069-1-git-send-email-kys@microsoft.com> X-CMAE-Envelope: MS4wfDKghOydSO+n2OHhK8VvXnsDbJwwvYKr2OWzc8p7kWmLN7ZzN8xUQLomIPflya8FlQtQIsaCnLU5elqXSIeUWatkCwQe/i+S2FjMZDW4DSfOQgEQ4S3L xagKqQLji7RhsjV0DYgXKqcx7LlX/TfU9+nB94IGlUSWdLlX+mJC4ZRS3A1tVkKcvJZsqjKC1kKm1ctdnyH2VJtBaXlochJ+m27hJx0FXr/Xp86fBn3bAhhv tURPSzGxHzBkzFMBTKfD0Rmo4LRafErrCfz6X9cPg2mHWbMD33OCAjnpi8nZ7i5X3WOXAWzD15mvK2q5q6g8NKJInuwVORklxWZJxM62XCMxnzTbk5nn7niL oNEj0pCuJnDxiDUX8h49lLdRfviLIoiUuNtKzcXe5NlIeya68BnRxJtULzW53/MRlrG1Ryhk Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vitaly Kuznetsov clocksource_change_rating() involves mutex usage and can't be called in interrupt context. It also makes sense to avoid doing redundant work on crash. Signed-off-by: Vitaly Kuznetsov Signed-off-by: K. Y. Srinivasan --- drivers/hv/hv.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c index 11bca51..257de21 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -295,8 +295,14 @@ void hv_cleanup(void) * Cleanup the TSC page based CS. */ if (ms_hyperv.features & HV_X64_MSR_REFERENCE_TSC_AVAILABLE) { - clocksource_change_rating(&hyperv_cs_tsc, 10); - clocksource_unregister(&hyperv_cs_tsc); + /* + * Crash can happen in an interrupt context and unregistering + * a clocksource is impossible and redundant in this case. + */ + if (!oops_in_progress) { + clocksource_change_rating(&hyperv_cs_tsc, 10); + clocksource_unregister(&hyperv_cs_tsc); + } hypercall_msr.as_uint64 = 0; wrmsrl(HV_X64_MSR_REFERENCE_TSC, hypercall_msr.as_uint64); -- 1.7.4.1