Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3288490pxk; Mon, 21 Sep 2020 09:46:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy82FufU9CsrBxssQ3Ad99+Ywdu+iymDiLtlZmdL0U9Jd0C0q8nOdN6VZj/55Ah+RwK9Fnt X-Received: by 2002:a17:907:72c5:: with SMTP id du5mr301866ejc.469.1600706793444; Mon, 21 Sep 2020 09:46:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600706793; cv=none; d=google.com; s=arc-20160816; b=n0pCC7AF/OvykUn8Sqqdmrn7SVBvJH0RpMvv+xrzRjHV0t2s6ouP0roEiCS3cWgA6Q DOHG9e5kNvOoXGXikMsy4K/PaQAXSADTHJ6UtUgvv/KQ7aiUi7bH+C5kZCSYxpFy7oDG p3FsnUaiGqqRLkGOGbCmovlfgokMTmvR6zEnwzhsiGjTUWdPRLkcee1P52JvsMsn9Pkh 8Qfp5nVl2AROSntEdC9oBlIJLJtTLwEkKCv38LzU6X9g+Dqv9aNLVX/L34VMGqPxrkFA AQNk9W96vyJo6DjMP+ZxeV6Ha1pYgVpq3m6sxacCC14wnTURGw9i4leyqM3zFgMXTrbs TXVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=iPK839m+UXF1YJDmBND34l6Jv67mj26aU4H9rsAYYPw=; b=McgNKbzwFeRWvaIuFYhfpM6xRnmYcU9kfRdHXK68kBc7Ck9JqBMVYMSYuKkAkIwBhB EefroQfDlSGv7ZL2pSYaDdZ8110VQuv8CFq+zFuQ1OURddIu3A+s3HGrWs7EeoQ4Llpw sBjWLjKlOZ7ZgJnb1mg8T97s2rTY+Okoit9n+y46GpDrXF2z4g+k4sZPu7Zo7lPtNoj2 zf5p4UUc5W0gCTdKybcx6il+j7bA3fvFULW7BLv82LFrQcecn36ZTQhcT4iAPfwyumu2 Yb1ejcDR8LTodtcJ82Q7npVIcSbO8X5Hjhn40z8SOCYVuISju2wVkSZt4vWCffwqFQ+6 Ry8Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=SWm7Zc0l; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m15si1821525ejg.633.2020.09.21.09.46.09; Mon, 21 Sep 2020 09:46:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=SWm7Zc0l; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729290AbgIUQmw (ORCPT + 99 others); Mon, 21 Sep 2020 12:42:52 -0400 Received: from mail.kernel.org ([198.145.29.99]:47106 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729066AbgIUQmt (ORCPT ); Mon, 21 Sep 2020 12:42:49 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (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 759EA238E6; Mon, 21 Sep 2020 16:42:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600706569; bh=TKedLSS7DQWIizRWMXwSuTi5i+cLls7C2mBLvjUlNbs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SWm7Zc0lYpmfkCmgl4qkufVJGugP2VMjxQRn3qqZLqqt+JFocFkby9Uvm1/PaJHur SvvHf7gwKAbCbXtMDonxF31INfaQovVwoES7elPUXdLyFI1FPTFu//kFPeGtXtoAHy cb4sTyHHfY59EIUetTR5SJf+U03A2hcu8n2uKZK8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alexey Kardashevskiy , Michael Ellerman Subject: [PATCH 4.19 48/49] powerpc/dma: Fix dma_map_ops::get_required_mask Date: Mon, 21 Sep 2020 18:28:32 +0200 Message-Id: <20200921162036.776250199@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200921162034.660953761@linuxfoundation.org> References: <20200921162034.660953761@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alexey Kardashevskiy commit 437ef802e0adc9f162a95213a3488e8646e5fc03 upstream. There are 2 problems with it: 1. "<" vs expected "<<" 2. the shift number is an IOMMU page number mask, not an address mask as the IOMMU page shift is missing. This did not hit us before f1565c24b596 ("powerpc: use the generic dma_ops_bypass mode") because we had additional code to handle bypass mask so this chunk (almost?) never executed.However there were reports that aacraid does not work with "iommu=nobypass". After f1565c24b596, aacraid (and probably others which call dma_get_required_mask() before setting the mask) was unable to enable 64bit DMA and fall back to using IOMMU which was known not to work, one of the problems is double free of an IOMMU page. This fixes DMA for aacraid, both with and without "iommu=nobypass" in the kernel command line. Verified with "stress-ng -d 4". Fixes: 6a5c7be5e484 ("powerpc: Override dma_get_required_mask by platform hook and ops") Cc: stable@vger.kernel.org # v3.2+ Signed-off-by: Alexey Kardashevskiy Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/20200908015106.79661-1-aik@ozlabs.ru Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/kernel/dma-iommu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/arch/powerpc/kernel/dma-iommu.c +++ b/arch/powerpc/kernel/dma-iommu.c @@ -100,7 +100,8 @@ static u64 dma_iommu_get_required_mask(s if (!tbl) return 0; - mask = 1ULL < (fls_long(tbl->it_offset + tbl->it_size) - 1); + mask = 1ULL << (fls_long(tbl->it_offset + tbl->it_size) + + tbl->it_page_shift - 1); mask += mask - 1; return mask;