Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2333342imm; Mon, 28 May 2018 06:14:29 -0700 (PDT) X-Google-Smtp-Source: AB8JxZoumpIwRLbnfh34evyjFCZwkYO4Dqw6gnSgf1s5rP2dveIxpdQ/02qmJzi3xpkthhJuMf8z X-Received: by 2002:a17:902:c5:: with SMTP id a63-v6mr13697173pla.149.1527513269317; Mon, 28 May 2018 06:14:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527513269; cv=none; d=google.com; s=arc-20160816; b=Z4+UDiw0+4Hw1CqBK+YX+lrScdH1VAERkxL5m+o8XhGt00acYKILKw+ebtrWpanF5D e5v6K/YI6hyEZMUeXKTbPXbo6q/FpJEoOHL3ta1n+NwGB9B9JcR5SFF01E7fIzeYq/66 zLgwKj79T9HLKifLZ8rd7+Y3BzFSIppF2yf9mdfNkdui+GT2KtfONrG+fD2dUgwFdK1z 8Xg4dB2yLj2yADLro7c2s47YG6eTHuqU1z2X65oDSwXb16+c9o5TPITzClxP2iBvElqi 0e6c5U63sAtCcOS38cK53MNFmaSHCzLEQRq4pDKtIvaTOiiwmfBm8DEGvWAAM70PVuIi Gdcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=5Nudm5Y9icD7cWUOWim1VyDqWrO/U+hV0YEBi5sohzQ=; b=UCsdfO/qDUEm7wfswERbvsW+OOSTNpz1W7ipiTTiAsCXps09jDpit1XL3smfNo5QDD Rt7Gpt9AlREOHoAfHqo2+AJVqH8fAF/cvDS0WTDdXbh3ukSBzpd1Qe7bbQdUL12Do1Ox L+UuDnNRbEbJY6R4vEoSqQydPnUCSC2rSnwzynRr0Y+VAmeWaBrwfh9sHs8OvxsPeGlS nPEpDwYYFCzpSeJyys5jX5+uG+6VA1xga95tTFdLoxc3UM2yE5k1b6ZQYmKldILlFXDk JEGvUKdbNuusMLTBMT81xcASvlqfiWNPEe+cYFZWIijhNHZEqY6vL9NvKkkWuf1GMKyy NOxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=H2xeX81I; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b68-v6si29263148pfg.94.2018.05.28.06.14.14; Mon, 28 May 2018 06:14:29 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=H2xeX81I; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1163868AbeE1NNa (ORCPT + 99 others); Mon, 28 May 2018 09:13:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:40178 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1163706AbeE1Kuk (ORCPT ); Mon, 28 May 2018 06:50:40 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5E41D204EE; Mon, 28 May 2018 10:50:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1527504640; bh=jEHnDNhc4Ap2dUKcUwDGmQ5uLWG72LLnM2TT/FhDFQM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=H2xeX81IHp9Q4MKzyDaYitzKG7OsfWuDAmCRM3l3Pm+3NLraYqMnTdlFqBaO9Jt1x qApcqmlVBAVYEvF3g4goOAXIPU46tnZt6W0DjeudshwR30mY7XYEKbtdsXUKGe87BI 9D4ADDA43VmM4OGAnqv0Ox/S3eixN/Uh3eCwpB50= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Eugeniy Paltsev , Vineet Gupta , Sasha Levin Subject: [PATCH 4.14 179/496] ARC: mcip: update MCIP debug mask when the new cpu came online Date: Mon, 28 May 2018 11:59:24 +0200 Message-Id: <20180528100327.453478721@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180528100319.498712256@linuxfoundation.org> References: <20180528100319.498712256@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Eugeniy Paltsev [ Upstream commit f3205de98db2fc8083796dd5ad81b191e436fab8 ] As of today we use hardcoded MCIP debug mask, so if we launch kernel via debugger and kick fever cores than HW has all cpus hang at the momemt of setup MCIP debug mask. So update MCIP debug mask when the new cpu came online, instead of use hardcoded MCIP debug mask. Signed-off-by: Eugeniy Paltsev Signed-off-by: Vineet Gupta Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- arch/arc/kernel/mcip.c | 37 ++++++++++++++++++++++++++++++++----- include/soc/arc/mcip.h | 2 ++ 2 files changed, 34 insertions(+), 5 deletions(-) --- a/arch/arc/kernel/mcip.c +++ b/arch/arc/kernel/mcip.c @@ -51,6 +51,34 @@ static void mcip_update_gfrc_halt_mask(i raw_spin_unlock_irqrestore(&mcip_lock, flags); } +static void mcip_update_debug_halt_mask(int cpu) +{ + u32 mcip_mask = 0; + unsigned long flags; + + raw_spin_lock_irqsave(&mcip_lock, flags); + + /* + * mcip_mask is same for CMD_DEBUG_SET_SELECT and CMD_DEBUG_SET_MASK + * commands. So read it once instead of reading both CMD_DEBUG_READ_MASK + * and CMD_DEBUG_READ_SELECT. + */ + __mcip_cmd(CMD_DEBUG_READ_SELECT, 0); + mcip_mask = read_aux_reg(ARC_REG_MCIP_READBACK); + + mcip_mask |= BIT(cpu); + + __mcip_cmd_data(CMD_DEBUG_SET_SELECT, 0, mcip_mask); + /* + * Parameter specified halt cause: + * STATUS32[H]/actionpoint/breakpoint/self-halt + * We choose all of them (0xF). + */ + __mcip_cmd_data(CMD_DEBUG_SET_MASK, 0xF, mcip_mask); + + raw_spin_unlock_irqrestore(&mcip_lock, flags); +} + static void mcip_setup_per_cpu(int cpu) { struct mcip_bcr mp; @@ -63,6 +91,10 @@ static void mcip_setup_per_cpu(int cpu) /* Update GFRC halt mask as new CPU came online */ if (mp.gfrc) mcip_update_gfrc_halt_mask(cpu); + + /* Update MCIP debug mask as new CPU came online */ + if (mp.dbg) + mcip_update_debug_halt_mask(cpu); } static void mcip_ipi_send(int cpu) @@ -138,11 +170,6 @@ static void mcip_probe_n_setup(void) IS_AVAIL1(mp.gfrc, "GFRC")); cpuinfo_arc700[0].extn.gfrc = mp.gfrc; - - if (mp.dbg) { - __mcip_cmd_data(CMD_DEBUG_SET_SELECT, 0, 0xf); - __mcip_cmd_data(CMD_DEBUG_SET_MASK, 0xf, 0xf); - } } struct plat_smp_ops plat_smp_ops = { --- a/include/soc/arc/mcip.h +++ b/include/soc/arc/mcip.h @@ -37,7 +37,9 @@ struct mcip_cmd { #define CMD_SEMA_RELEASE 0x12 #define CMD_DEBUG_SET_MASK 0x34 +#define CMD_DEBUG_READ_MASK 0x35 #define CMD_DEBUG_SET_SELECT 0x36 +#define CMD_DEBUG_READ_SELECT 0x37 #define CMD_GFRC_READ_LO 0x42 #define CMD_GFRC_READ_HI 0x43