From patchwork Thu Oct 25 14:16:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149535 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp1399559ljp; Thu, 25 Oct 2018 07:18:03 -0700 (PDT) X-Google-Smtp-Source: AJdET5fyTMHlZKEpNOIKYmLn9T+XJWyx8FKnn2Ok40VCytzbAKyKJkx7jnr1Ym1GWVyKZXt3qHyM X-Received: by 2002:a63:c508:: with SMTP id f8-v6mr1668449pgd.412.1540477083731; Thu, 25 Oct 2018 07:18:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540477083; cv=none; d=google.com; s=arc-20160816; b=ZDR8w+OYVcHhj47tIKrugMDgkMGfMbBrZLuDTdBcQeeVmX8FjO0LMqEy8U2tTdvtAF qBCj2hnVTykptBrRYGuqRhGkRckwFs+mOZqI2QmVb2G52CsXWZJfIiHq2FSsgVHBHiJN AxkHSyLXtmPW8ClREOpROTQkmFbJ4yTpp82BI15qs0KGve0AtWqhrNyRNik85nWmEUlM VxcCpa74NmsuryWTTmn/0rI0L/mJWlk4fpNMlSenxZJs3dcGWo2zOXmnm35QMA0kuPRP 5POCdTKOju65DCT3VFzgXf0R8NHv9jTg/+LTji+wL1GuDsXIIBzQnzOUBXRH0WHlegUh Vbcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=5JEHl1Ex0TODbnCzalOsc7B/bCmm4augIhWbATrF6zw=; b=WJ0QxvmJud4jY0/4kpvnnu0ENDZJZB+aZcDsFIU48Hry7GGtj2ToIKwy4MBBBtjLkh tAIsi9BL5ukKdN5dWlo1x9GAOTs2pW2O/Du3dn4JnkLNCnQdSQaskfdKMgJPr/ZVcsHU bJfBKNXFwGubUHCKDd32YahWGjoC7o2jIjd+Dql0v0klK9p4x/5NuAFeuCEZkeX+r241 nSAR9RdRuuDrtBDU3aBQ6zt5NvVIseYickNYLm8coRWxsP6p6LXOTSoGiMXWxLv+ZG3e LVVWQOblnPPkIa2V+EHAHZ6nVxxcm83t36Yypmvy0tjNQfG2q/v7JXGwo4XY2Jeyxy/Z i87g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=JGghn5wb; 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 d38-v6si8661143pgb.30.2018.10.25.07.18.00; Thu, 25 Oct 2018 07:18:03 -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=JGghn5wb; 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 S1729584AbeJYWuR (ORCPT + 32 others); Thu, 25 Oct 2018 18:50:17 -0400 Received: from mail.kernel.org ([198.145.29.99]:59502 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729565AbeJYWuP (ORCPT ); Thu, 25 Oct 2018 18:50:15 -0400 Received: from sasha-vm.mshome.net (unknown [167.98.65.38]) (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 A535820854; Thu, 25 Oct 2018 14:17:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1540477038; bh=QfFiaAkNM9AgkMTWFRObPpIbCJi8WhgMqZwZLu7lkpE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JGghn5wbsnK1oVeO8CHa6uxo59lquw9UnkCJvJd7BarLvWqw7IZv2RD1sbb1CzoxD mDSvLPT4lRHmgh/A/hr/lGzBoPho5KRWxJ8/dLfWse5zxDVL9ydbR9aL9UvMNodxrK FiXurv21PW+BichMOB0+zOwdX3h8PzaXApD+r46E= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Srinivas Kandagatla , Tejun Heo , Sasha Levin Subject: [PATCH AUTOSEL 4.4 06/65] ARM: dts: apq8064: add ahci ports-implemented mask Date: Thu, 25 Oct 2018 10:16:06 -0400 Message-Id: <20181025141705.213937-6-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181025141705.213937-1-sashal@kernel.org> References: <20181025141705.213937-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Srinivas Kandagatla [ Upstream commit bb4add2ce991e4ec891b5a0287fd1ab77b631979 ] This patch adds new ports-implemented mask, which is required to get achi working on the mainline. Without this patch value read from PORTS_IMPL register which is zero would not enable any ports for software to use. Fixes: 566d1827df2e ("libata: disable forced PORTS_IMPL for >= AHCI 1.3") Cc: stable@vger.kernel.org # v4.5+ Signed-off-by: Srinivas Kandagatla Reviewed-by: Andy Gross Signed-off-by: Tejun Heo Signed-off-by: Sasha Levin --- arch/arm/boot/dts/qcom-apq8064.dtsi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- 2.17.1 diff --git a/arch/arm/boot/dts/qcom-apq8064.dtsi b/arch/arm/boot/dts/qcom-apq8064.dtsi index e00d50ef678f..3ff5ea16ebb3 100644 --- a/arch/arm/boot/dts/qcom-apq8064.dtsi +++ b/arch/arm/boot/dts/qcom-apq8064.dtsi @@ -577,7 +577,7 @@ }; sata0: sata@29000000 { - compatible = "generic-ahci"; + compatible = "qcom,apq8064-ahci", "generic-ahci"; status = "disabled"; reg = <0x29000000 0x180>; interrupts = ; @@ -599,6 +599,7 @@ phys = <&sata_phy0>; phy-names = "sata-phy"; + ports-implemented = <0x1>; }; /* Temporary fixed regulator */ From patchwork Thu Oct 25 14:16:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149536 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp1400811ljp; Thu, 25 Oct 2018 07:18:59 -0700 (PDT) X-Google-Smtp-Source: AJdET5cdghwFafdzc9S3ajPlHcO7YHyoV7iGZI/4BwWTEifMW83BOG9TamEjtu1ymwtBLdOnkKJj X-Received: by 2002:a62:f20f:: with SMTP id m15-v6mr1734224pfh.244.1540477139499; Thu, 25 Oct 2018 07:18:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540477139; cv=none; d=google.com; s=arc-20160816; b=A+qxnwhzZCj1eB1BUf48sp8x17V2S2IicDcxxrRPp9SasYF/LZl9jqOe3+DLohiHVN xnp2VdGxcHWAC67uOTIM35O3LPmV5Z1rf1Mc7EnH2JZYO2nsLpGba72RONVR8F2q2is4 f2qTD//Ldgf4Qmmp8oV74CExApFGw90jOn9FA80zWsLZcwmh1UVttLn6B/0oE2V6lKqX gFAr9q8aSz49eRyr60zwzKM0VPMlhNVmP03ZZHdEnbvJJkAqt+XsYWGJV1kDJ0SwkbFD rwTTfO7N9dGxA6YTX/godULfcLTNTDpS5b/eECyqU8+zyr1vmyyzCQ8rHS79XZYzHxVf tbnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=9EBtUqSEZmz2Ekea6elK4zs+5xQe9ntgi+yeGNQF9EI=; b=iRyYtAwzkEZvI86EVhya/9d2iBxI582L+vYR2lWxslZjh8553ceDuR2Mn9/EHf6TAg 5z/OrU6KN4q89+0lr8KgmV2vvdflM4yscqdhxXDyuBY3jDMsIEZyDD7DvSovbhqVw4cX 9V/IA1daTcSed/ZAAi1pIYCI+rNAxDUzTCGYo/u9mlzL4T/MIkRQefPJXc0MFYyzNuvY ByoNx133o+WaHKCwbGNoAcdhi562m4+ZKuxf0rZYZNL/WigLOuaF7CzQ2711ZcT/iObY SZP8e0HmKpfgvYz1flwHVZ6FTKTX3mx1k+Xagyrxc3iYWdWPMetOKoiZ7aJiErOaO5TQ DtGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=rNcF3Hrb; 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 d38-v6si8661143pgb.30.2018.10.25.07.18.53; Thu, 25 Oct 2018 07:18:59 -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=rNcF3Hrb; 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 S1729704AbeJYWud (ORCPT + 32 others); Thu, 25 Oct 2018 18:50:33 -0400 Received: from mail.kernel.org ([198.145.29.99]:60024 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729680AbeJYWuc (ORCPT ); Thu, 25 Oct 2018 18:50:32 -0400 Received: from sasha-vm.mshome.net (unknown [167.98.65.38]) (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 A51702086D; Thu, 25 Oct 2018 14:17:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1540477055; bh=Nalvp6KRus0y+YQ2P1HsAlISRL8ih0qczQFKkBwNCks=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rNcF3HrbTKrDOxcTYHMuPYJyPFQP6iK6McwQdqSPl5TwA7EakqVoD4Z07xs4lZpGx 1nh8eTfVDt/M0jDn7ti/8U8jgXzVaXaKKjKXqsSLyHWHCHPG3Dbcl4BklyZP5NVWrY MNpBeP3Baj+Rj5sE1zJ3kv0lXuC2y/GpJmCanZ/I= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Eduardo Valentin , Sasha Levin Subject: [PATCH AUTOSEL 4.4 16/65] thermal: allow spear-thermal driver to be a module Date: Thu, 25 Oct 2018 10:16:16 -0400 Message-Id: <20181025141705.213937-16-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181025141705.213937-1-sashal@kernel.org> References: <20181025141705.213937-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arnd Bergmann [ Upstream commit 4d2f1794c07aae55b8f25f4d8aebcafc0d3e501d ] When the thermal subsystem is a loadable module, the spear driver fails to build: drivers/thermal/built-in.o: In function `spear_thermal_exit': spear_thermal.c:(.text+0xf8): undefined reference to `thermal_zone_device_unregister' drivers/thermal/built-in.o: In function `spear_thermal_probe': spear_thermal.c:(.text+0x230): undefined reference to `thermal_zone_device_register' This changes the symbol to a tristate, so Kconfig can track the dependency correctly. Signed-off-by: Arnd Bergmann Signed-off-by: Eduardo Valentin Signed-off-by: Sasha Levin --- drivers/thermal/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.17.1 diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig index 4b660b5beb98..b556fa8250fc 100644 --- a/drivers/thermal/Kconfig +++ b/drivers/thermal/Kconfig @@ -195,7 +195,7 @@ config IMX_THERMAL passive trip is crossed. config SPEAR_THERMAL - bool "SPEAr thermal sensor driver" + tristate "SPEAr thermal sensor driver" depends on PLAT_SPEAR || COMPILE_TEST depends on OF help From patchwork Thu Oct 25 14:16:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149537 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp1400933ljp; Thu, 25 Oct 2018 07:19:06 -0700 (PDT) X-Google-Smtp-Source: AJdET5dFh13Y/Quvm6lG/YOCdSXEz+vG1ORoLOZ7aCuQtHRKe+NNMtkYP6L0owjr1VO/KCgCAwX1 X-Received: by 2002:a62:9951:: with SMTP id d78-v6mr1714509pfe.239.1540477145897; Thu, 25 Oct 2018 07:19:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540477145; cv=none; d=google.com; s=arc-20160816; b=Glzx5W3Fp51DoSX9gBZG2DqTdbhcjr0kwoGtzdvaGyMb1XcX8KJXm3ZXuHVOsoCJs3 QV2Y1GoEr+jwnbXaxgYMus2vr5xpnbMApSA8fwzZ3kIiQ7F7N7bDvsXVHGF9WVgIX+m1 0QC7+W4blhTu+D9StOxya88SYkYOKOtnxprCS/8XR3/6OtNUB5blL3w2TX+JmpmCxDGl LNYcSchiFoQxa0BHzubqm7x7HOkm8LuaPpU+L9YA/u2Ao5u8s93KxjIONrUIU6QMvold 3HZnk6F4m58sZnsVZNip3J14vI4ousHwzRuMsTVNsoBBm7eLvUbehD2TAA3IptyDiKM9 6fUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=/bjq2IEIrS2WQRNy6+vaCJuwmDUlqeW3SH+4chi54X8=; b=tdwT8MpKYWzRQuYkM0Y74kl36QfhB+064rzGXpr5IXv28kFvQ4RmDhRoVkJLm31wIn OJxJfERNabdpbBqd5BtmRxCxid2140kEgxvZCkaWCEzxTTWWUkVZejaa88sWris7AYF9 uoRZZ0oSb1a1eSLnz3zbCtIWX0c6BsI18Rr5Z653mvZNCEAhXUUUlWUd7G6G8xM6uG1w Zm6dkAjs7+Cy3T8VAxM51AcTN5KHRv45AhT5SRplBrJdEFNYCXZNXTz+DO9VnVxoM+Pl oyY5uAdtEZ8uBpt8Umw4iMWvKyGym5rtREVlPzPuJu2M3zt2hmA7wtPHcqNGVAQjoIbl TWAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=sceThem4; 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 d38-v6si8661143pgb.30.2018.10.25.07.18.59; Thu, 25 Oct 2018 07:19:05 -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=sceThem4; 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 S1729716AbeJYWuf (ORCPT + 32 others); Thu, 25 Oct 2018 18:50:35 -0400 Received: from mail.kernel.org ([198.145.29.99]:60060 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729694AbeJYWud (ORCPT ); Thu, 25 Oct 2018 18:50:33 -0400 Received: from sasha-vm.mshome.net (unknown [167.98.65.38]) (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 02BEC20848; Thu, 25 Oct 2018 14:17:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1540477057; bh=YOaOrhJP1gTYEC+sWTuYO7WSENJVCfHUT4Zye/75TP8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sceThem4QS1G/aGcyPrJ5kAeacCJ1wQjiu6FPZy/LCs0qSztnqWx6imo0NlTXKPSq J2hsnDXo/3afLrYZCPpoAfuLzcVYBz+d/V74B/f+USFWa3vnRBwnbXzFI7TMe/OBK0 aw64bMgnMDXAwPWajpKIEytdiWntSzJkJxVlRua0= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Eduardo Valentin , Sasha Levin Subject: [PATCH AUTOSEL 4.4 17/65] thermal: allow u8500-thermal driver to be a module Date: Thu, 25 Oct 2018 10:16:17 -0400 Message-Id: <20181025141705.213937-17-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181025141705.213937-1-sashal@kernel.org> References: <20181025141705.213937-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arnd Bergmann [ Upstream commit 26716ce124fce88f288f07738ef685d5dfe5c13f ] When the thermal subsystem is a loadable module, the u8500 driver fails to build: drivers/thermal/built-in.o: In function `db8500_thermal_probe': db8500_thermal.c:(.text+0x96c): undefined reference to `thermal_zone_device_register' drivers/thermal/built-in.o: In function `db8500_thermal_work': db8500_thermal.c:(.text+0xab4): undefined reference to `thermal_zone_device_update' This changes the symbol to a tristate, so Kconfig can track the dependency correctly. Signed-off-by: Arnd Bergmann Signed-off-by: Eduardo Valentin Signed-off-by: Sasha Levin --- drivers/mfd/db8500-prcmu.c | 3 +++ drivers/thermal/Kconfig | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) -- 2.17.1 diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c index e6e4bacb09ee..12099b09a9a7 100644 --- a/drivers/mfd/db8500-prcmu.c +++ b/drivers/mfd/db8500-prcmu.c @@ -2048,6 +2048,7 @@ int db8500_prcmu_config_hotmon(u8 low, u8 high) return 0; } +EXPORT_SYMBOL_GPL(db8500_prcmu_config_hotmon); static int config_hot_period(u16 val) { @@ -2074,11 +2075,13 @@ int db8500_prcmu_start_temp_sense(u16 cycles32k) return config_hot_period(cycles32k); } +EXPORT_SYMBOL_GPL(db8500_prcmu_start_temp_sense); int db8500_prcmu_stop_temp_sense(void) { return config_hot_period(0xFFFF); } +EXPORT_SYMBOL_GPL(db8500_prcmu_stop_temp_sense); static int prcmu_a9wdog(u8 cmd, u8 d0, u8 d1, u8 d2, u8 d3) { diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig index b556fa8250fc..1def65d2f0b5 100644 --- a/drivers/thermal/Kconfig +++ b/drivers/thermal/Kconfig @@ -237,8 +237,8 @@ config DOVE_THERMAL framework. config DB8500_THERMAL - bool "DB8500 thermal management" - depends on ARCH_U8500 + tristate "DB8500 thermal management" + depends on MFD_DB8500_PRCMU default y help Adds DB8500 thermal management implementation according to the thermal From patchwork Thu Oct 25 14:16:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149538 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp1420073ljp; Thu, 25 Oct 2018 07:34:24 -0700 (PDT) X-Google-Smtp-Source: AJdET5cYziNxvE2KWATppU+5DYsYQL+vAPgqioLel0SbYHbmrVBA1cbmG+VKsbnus1pPaDMJ8nHY X-Received: by 2002:a62:9c8c:: with SMTP id u12-v6mr1808951pfk.162.1540478064376; Thu, 25 Oct 2018 07:34:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540478064; cv=none; d=google.com; s=arc-20160816; b=E50GamIkBsvrheWCCKEB9GOY3ymktluCohSbyUtENJmItyckEsTmpAmUpvPv0/2FF2 TO3uKCd0ebjkg4CxKlwLIWpTQys9RCo0vmhVgCtEn5jjC+ocXvtm9G8enfs8XGNtPrSY RIPkOUz6rOnoy2piXN1ADV0UJPeVhQ6bt0uMtHyCQMtnslHrBsyWANwI6ptRTc0jW92F kHHxuskfuJMzJ3JJbKVb/PQyA/03jM3Rz849kC0suKsbl/qVQMdjM4TuQrKVRV+JdBqL FCLoS23Au6BYiWdNykXFIAl7UfodOkyGhR6n12ic0poij8R5lA4beI7diRWJl5w4D9yS Yyvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=A0IySBGyqOfun0Ib8g24MS3A7JNcsiERhhKom1awTA0=; b=VdfyQD4rkXOVTLB38X3ssWHm8zHhYs0aFD5ATlidE0jM9Rd1bpf/eo0cfJ+YLom3ZY WZL/oWHii54hyrqewJx3w+tASeTxLQkQABmpbjNP9D2ddFLBx3+zipmWeqgulqLOJLCq OlGVrMBQMBWDbtUqIomYZ1nlPlFV8eFRpHowiZso8MguXQ37Ya0hFWXlOgMRnXsx3tIS 95MGDd31XUfjiEC5XJfu+C/moqVSTaAHPKjDqj87ItjV/mmo7hXkOl12OcHufXOlR7mz uLZkwt2E+KZKugWsJ+akb4iWfNMSgPbidUNA8qG5LYa06BRdCn+2FIh2rvf4OGK+XoCw qewQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=oZB8VX8x; 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 i25-v6si8347639pgi.426.2018.10.25.07.34.23; Thu, 25 Oct 2018 07:34:24 -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=oZB8VX8x; 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 S1727589AbeJYXHY (ORCPT + 32 others); Thu, 25 Oct 2018 19:07:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:60490 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729798AbeJYWuu (ORCPT ); Thu, 25 Oct 2018 18:50:50 -0400 Received: from sasha-vm.mshome.net (unknown [167.98.65.38]) (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 C281B20834; Thu, 25 Oct 2018 14:17:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1540477072; bh=thc59NMAMwXEsx9J8JNhHe9ww4h2Y09XGKraxAOjITU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oZB8VX8xt9DJPyI13c/18OE3KIZm1kwVR1ZI545JKJcSMKhBT42av/eJamY3MKGcy UeCpgB5zaIPjOOxAUVtDYW9mTBv68S9UcsfF8saApgkgrZQa7SgQzzJEb1x2I1uEKR RliYyxPj9yq52oAJOXeCltrvrw3UgJ/lC5Ttx7b8= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Catalin Marinas , Will Deacon , Sasha Levin Subject: [PATCH AUTOSEL 4.4 27/65] arm64: Fix potential race with hardware DBM in ptep_set_access_flags() Date: Thu, 25 Oct 2018 10:16:27 -0400 Message-Id: <20181025141705.213937-27-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181025141705.213937-1-sashal@kernel.org> References: <20181025141705.213937-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Catalin Marinas [ Upstream commit 6d332747fa5f0a6843b56b5b129168ba909336d1 ] In a system with DBM (dirty bit management) capable agents there is a possible race between a CPU executing ptep_set_access_flags() (maybe non-DBM capable) and a hardware update of the dirty state (clearing of PTE_RDONLY). The scenario: a) the pte is writable (PTE_WRITE set), clean (PTE_RDONLY set) and old (PTE_AF clear) b) ptep_set_access_flags() is called as a result of a read access and it needs to set the pte to writable, clean and young (PTE_AF set) c) a DBM-capable agent, as a result of a different write access, is marking the entry as young (setting PTE_AF) and dirty (clearing PTE_RDONLY) The current ptep_set_access_flags() implementation would set the PTE_RDONLY bit in the resulting value overriding the DBM update and losing the dirty state. This patch fixes such race by setting PTE_RDONLY to the most permissive (lowest value) of the current entry and the new one. Fixes: 66dbd6e61a52 ("arm64: Implement ptep_set_access_flags() for hardware AF/DBM") Cc: Will Deacon Acked-by: Mark Rutland Acked-by: Steve Capper Signed-off-by: Catalin Marinas Signed-off-by: Will Deacon Signed-off-by: Sasha Levin --- arch/arm64/mm/fault.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) -- 2.17.1 diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index 86485415c5f0..be7f8416809f 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c @@ -107,26 +107,27 @@ int ptep_set_access_flags(struct vm_area_struct *vma, /* only preserve the access flags and write permission */ pte_val(entry) &= PTE_AF | PTE_WRITE | PTE_DIRTY; - /* - * PTE_RDONLY is cleared by default in the asm below, so set it in - * back if necessary (read-only or clean PTE). - */ + /* set PTE_RDONLY if actual read-only or clean PTE */ if (!pte_write(entry) || !pte_sw_dirty(entry)) pte_val(entry) |= PTE_RDONLY; /* * Setting the flags must be done atomically to avoid racing with the - * hardware update of the access/dirty state. + * hardware update of the access/dirty state. The PTE_RDONLY bit must + * be set to the most permissive (lowest value) of *ptep and entry + * (calculated as: a & b == ~(~a | ~b)). */ + pte_val(entry) ^= PTE_RDONLY; asm volatile("// ptep_set_access_flags\n" " prfm pstl1strm, %2\n" "1: ldxr %0, %2\n" - " and %0, %0, %3 // clear PTE_RDONLY\n" + " eor %0, %0, %3 // negate PTE_RDONLY in *ptep\n" " orr %0, %0, %4 // set flags\n" + " eor %0, %0, %3 // negate final PTE_RDONLY\n" " stxr %w1, %0, %2\n" " cbnz %w1, 1b\n" : "=&r" (old_pteval), "=&r" (tmp), "+Q" (pte_val(*ptep)) - : "L" (~PTE_RDONLY), "r" (pte_val(entry))); + : "L" (PTE_RDONLY), "r" (pte_val(entry))); flush_tlb_fix_spurious_fault(vma, address); return 1;