Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp5126626imu; Tue, 8 Jan 2019 12:01:37 -0800 (PST) X-Google-Smtp-Source: ALg8bN6UYQ5I3G5KwlEv7mhDqcCkt4tMsVeIHo1V/o3oOISdt9SzFauWXonruUKkeIRsn/VWr/2J X-Received: by 2002:a63:5207:: with SMTP id g7mr2749732pgb.253.1546977697261; Tue, 08 Jan 2019 12:01:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546977697; cv=none; d=google.com; s=arc-20160816; b=QFOEL6mt1GSaT4qFxQDZb1+O46LFCS738A6cFpq3CXuVxXRhH+pPckFcViMEVoWwSH Ksqms0D9qs4j29I2mU2gRdTmnP7Xv6zm+gcC/uJ1fJq4nK8jxZqZad7zBYwUtVsiF3AX Vt4zI6s+9o1CEGUUGeHxIKHbdak8d6OLCc6HGgOsjZvQe+jCWXt+EC6CRsT1YTj+8zUO E2hX9zWf4s/JlE1sFMpywOtnQnSqF7H5bxTX4Z5zQz4QWTOLGdXh2SvYEXarU1iEXI8X 7ep3zj/XjtlLtEy6n7wjXfbTcswUFyrfeNUFlD3EQiwEbMk/nrdxwlbnoKafKujYcrmq F/5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=IDdjhpUGpfbzD83Gf+dv/b/kjV+CSx9os/CwA6dS+G4=; b=yfdQ6TrvrxQgsRVY/wJpF8wy2yC2/JOb1vLw61RQTl7cEtbX9WlAKGX3ZTO6sXNLzX nWycv84rT+ye8vPJhNG8dbuf0zNqIcM40szFCrMj9f73tJrZ+yUwVYIINC9YKL7suVIx 9Qd7xM9BLy14vBo19Zq+dXTKbqVWtnoXsaZILE9s/jSmwZJGcBBl0hSZLlXkCu5WmWNr YnrQcClAvNM+vuSeptuwllUzf3HTlGTsCfB4zNSZMjCxX5n2ETJlrtWAMyBbmd+47Iyd 8/jIEBUHsMv/9uMh680syk4Y4/Ny/8/JEXprCqpWpvYzVEaQMFcJMcJTogiEdKv/casB Xqcg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=vRaFcMVr; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q2si677980plh.261.2019.01.08.12.01.20; Tue, 08 Jan 2019 12:01:37 -0800 (PST) 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=vRaFcMVr; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731277AbfAHT7X (ORCPT + 99 others); Tue, 8 Jan 2019 14:59:23 -0500 Received: from mail.kernel.org ([198.145.29.99]:36732 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729144AbfAHT3V (ORCPT ); Tue, 8 Jan 2019 14:29:21 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4A2502070B; Tue, 8 Jan 2019 19:29:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1546975761; bh=y/UhQd/Sjne+dGRdjK6XgovLak8A5IPpPgH0/avH9hI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vRaFcMVr+rEgTLd0SD8i4W3PYJyGo82YVGr1Zc+R9CWRvnzJonMzbmgDdnpAGTU7F FNzhpRrZNS2bKGnq/S+kinC65VDD2KUkxb1jOrv+TN98Qy5cK0jSM3jcZdesEH0aw6 gu/GNWJ2mS7YLNN7ktOdxphVGIdUA7bZMvy9F+Po= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: =?UTF-8?q?Stephan=20G=C3=BCnther?= , "Martin K . Petersen" , Sasha Levin , MPT-FusionLinux.pdl@broadcom.com, linux-scsi@vger.kernel.org Subject: [PATCH AUTOSEL 4.20 103/117] scsi: mpt3sas: fix memory ordering on 64bit writes Date: Tue, 8 Jan 2019 14:26:11 -0500 Message-Id: <20190108192628.121270-103-sashal@kernel.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190108192628.121270-1-sashal@kernel.org> References: <20190108192628.121270-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Stephan Günther [ Upstream commit 23c3828aa2f84edec7020c7397a22931e7a879e1 ] With commit 09c2f95ad404 ("scsi: mpt3sas: Swap I/O memory read value back to cpu endianness"), 64bit writes in _base_writeq() were rewritten to use __raw_writeq() instad of writeq(). This introduced a bug apparent on powerpc64 systems such as the Raptor Talos II that causes the HBA to drop from the PCIe bus under heavy load and being reinitialized after a couple of seconds. It can easily be triggered on affacted systems by using something like fio --name=random-write --iodepth=4 --rw=randwrite --bs=4k --direct=0 \ --size=128M --numjobs=64 --end_fsync=1 fio --name=random-write --iodepth=4 --rw=randwrite --bs=64k --direct=0 \ --size=128M --numjobs=64 --end_fsync=1 a couple of times. In my case I tested it on both a ZFS raidz2 and a btrfs raid6 using LSI 9300-8i and 9400-8i controllers. The fix consists in resembling the write ordering of writeq() by adding a mandatory write memory barrier before device access and a compiler barrier afterwards. The additional MMIO barrier is superfluous. Signed-off-by: Stephan Günther Reported-by: Matt Corallo Acked-by: Sreekanth Reddy Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/mpt3sas/mpt3sas_base.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c index 2500377d0723..bfd826deabbe 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.c +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c @@ -3319,8 +3319,9 @@ _base_mpi_ep_writeq(__u64 b, volatile void __iomem *addr, static inline void _base_writeq(__u64 b, volatile void __iomem *addr, spinlock_t *writeq_lock) { + wmb(); __raw_writeq(b, addr); - mmiowb(); + barrier(); } #else static inline void -- 2.19.1