From patchwork Wed Oct 31 23:05:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149895 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp98920ljp; Wed, 31 Oct 2018 16:07:59 -0700 (PDT) X-Google-Smtp-Source: AJdET5eSpBulUMtzEsZhLbCoIGFgB8jo1q51cWJRkveNJRAKSheHZy62tDcPFbclHznLaHDWv33/ X-Received: by 2002:a63:4725:: with SMTP id u37-v6mr4691361pga.95.1541027279214; Wed, 31 Oct 2018 16:07:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541027279; cv=none; d=google.com; s=arc-20160816; b=vW12JRdSbK2JnG3IWLLM6Z87tHppiW/7MRDQMaATddvXduGFzXtjrx+uVLTf6KSSjL tN5hVE4sjXd2XGNrxi2BKMFHC3vHlLE85Lm4dTKdeIHvYtAIOy41EW/SQALw7WsQRMN2 eCMWtOb+6IdFgSEI4pNEvbBbzxDZXi5WBX/XpSWmmJTp6zEJqbvdTc5ANvEG6Am/ZilQ KTG+yiufq9PJUxAtpS4lNng2FXypng8tiliF6UcvRvcgYEgzkOtOWRo1fa0HFRiGEaq+ qSmkHa7zDu0GKJ+3mLiDNTMbY5t+AFPPbL2o07Q+5Gg3+FRZ8OVOSJtgAD4fCBftwYrf 9ycg== 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=jSmYbXJhGj1J6Zfm2rSZjeSTcmRpNWlC8J/Tv+np0DY=; b=fcrDRexTTDHIgIsZSYmsZX0OS7BpaM8r3eVwljY1+A2Aplz/je2ZPxbkU1s0dT6HFl Hnrgf7OiiRJJvZ1rsx4uLfYP+9/kFbhmAYQIcWNoRaJX6e38hnwy9KgR81GEjE4fgFU4 AG9STc1dUZNofW6tPY6/DqVBi2hP532+ixgJ1lbKhMzWn+qqs6m8lSjrgxALpJKAbyLf XFC+mo3BzQ0GuPLc0MCEw+mOHKGgzzYAggnj4mjxq26ns6KEid0HxGDpxGR8BP2wHun8 qq2emDmcDKHU5v/wnrrYGYYtzR6zM+rbjtNvatcDFMyXKgFwOsKtukDURJPITlJ1womW qMTA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=WfIPu+Ly; 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 a10-v6si16961487pfi.222.2018.10.31.16.07.58; Wed, 31 Oct 2018 16:07: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=WfIPu+Ly; 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 S1729464AbeKAIII (ORCPT + 32 others); Thu, 1 Nov 2018 04:08:08 -0400 Received: from mail.kernel.org ([198.145.29.99]:56674 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729434AbeKAIIH (ORCPT ); Thu, 1 Nov 2018 04:08:07 -0400 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 5F4F820847; Wed, 31 Oct 2018 23:07:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027276; bh=bOb7G9T/Cpk8AAJMnHXpjrul5/JQU3tEteF4hdZIVig=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WfIPu+Ly1v2vNmIYdvcWiA0o51D6hAzEA3y4GAVCAoqGPw+ZZZBh/GC8rpOge9pVz 9a2Iv6i3JmIPw5kP2zIsDP3v4d9k1BxpBbu/SGfbU/g7y3GhIxKFPN21GitQITMKWI 7CAlJJBHENYVj6nNZRdojwKX1+P8ZbgxIOqRv84Y= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Ivan Khoronzhuk , "David S . Miller" , Sasha Levin Subject: [PATCH AUTOSEL 4.18 002/126] net: ethernet: ti: cpsw: unsync mcast entries while switch promisc mode Date: Wed, 31 Oct 2018 19:05:50 -0400 Message-Id: <20181031230754.29029-2-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031230754.29029-1-sashal@kernel.org> References: <20181031230754.29029-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ivan Khoronzhuk [ Upstream commit 9737cc99dd14b5b8b9d267618a6061feade8ea68 ] After flushing all mcast entries from the table, the ones contained in mc list of ndev are not restored when promisc mode is toggled off, because they are considered as synched with ALE, thus, in order to restore them after promisc mode - reset syncing info. This fix touches only switch mode devices, including single port boards like Beagle Bone. Fixes: commit 5da1948969bc ("net: ethernet: ti: cpsw: fix lost of mcast packets while rx_mode update") Signed-off-by: Ivan Khoronzhuk Reviewed-by: Grygorii Strashko Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/ti/cpsw.c | 1 + 1 file changed, 1 insertion(+) -- 2.17.1 diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 3e34cb8ac1d3..b3b43ac3c9f3 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -641,6 +641,7 @@ static void cpsw_set_promiscious(struct net_device *ndev, bool enable) /* Clear all mcast from ALE */ cpsw_ale_flush_multicast(ale, ALE_ALL_PORTS, -1); + __dev_mc_unsync(ndev, NULL); /* Flood All Unicast Packets to Host port */ cpsw_ale_control_set(ale, 0, ALE_P0_UNI_FLOOD, 1); From patchwork Wed Oct 31 23:06:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149896 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp99228ljp; Wed, 31 Oct 2018 16:08:20 -0700 (PDT) X-Google-Smtp-Source: AJdET5edYkt7a1TPz0+n1T3JGzmAeYA6fc7hV3yRKt+GtM74jKW84J3UT4uemhHWaYbJIlQUq6Ya X-Received: by 2002:a63:5b4a:: with SMTP id l10-v6mr2221148pgm.50.1541027299878; Wed, 31 Oct 2018 16:08:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541027299; cv=none; d=google.com; s=arc-20160816; b=Fk6x1R2FPXy3zNGDVQTbWZEnVaq8a5YmFXh3i1mHdU95A3WG8pNmDIIN1T+x5UPXzI j6Wz5jc00yR7KSVoRvYWCAX1SMbTztr8VhUBF8FhKvra1aPHfRKT2YAz8DWSI1eP7Miy 7XWLCK/sJ7HPDl8DgAvsY6lTFJQnRW1QyLQDtnPeercJhSdx9QtY/ZMThfJEEjrmQoLu uW8vi9K13p+CTbwvekM1+3l1Ckyez3zmOPgh6LzweW+k+TMGcSbdMgpO82zGZusa5Pxm NiL4PtCSq0Foh2LgoQ9jOQ05JaTr7J/rKsq3YHZ3QIV++rkScmSa1FRq722oQiy9QvB+ Vlgw== 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=K8lNpRCDVqYDWcFCTSpUtgiugAL4mR5ptZLvFac7Olk=; b=uf/1AVjl/36RIfojMmJK4i5wEDHaXePoSvgi8+FSi/1pjLmtGUuIWlj2UmcdKoA3Zf /1GEsWX3jLyLgVH1I7XWXYNLNK3s7/ejPh3jEqdXuhdO6NY1rSLlEyF7/nUi0JVBrM2M PQO4Kk0rGkExzkAlQkwTjTHNTNk+KlisOiNvv/9ZAQVSuCFnw/pWH2/k9CG5chxONbcr mXRc9Qq8kUrviBN4HmB36Yxo5VO+Srqs4zHrRMa8RLuGC5gPKKu1M2T/I8b2u1JKmPw0 LRPYKhXVXh7ud8qUxZh4EUgqMuWCboLUPUYCS8GMMHJNnwNwaPF3nnmk9+RJ6yq7Zcrf APdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=rOBhmiyy; 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 l16-v6si28670752pfb.69.2018.10.31.16.08.19; Wed, 31 Oct 2018 16:08:19 -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=rOBhmiyy; 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 S1729716AbeKAII2 (ORCPT + 32 others); Thu, 1 Nov 2018 04:08:28 -0400 Received: from mail.kernel.org ([198.145.29.99]:57366 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728334AbeKAII1 (ORCPT ); Thu, 1 Nov 2018 04:08:27 -0400 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 72C13208E3; Wed, 31 Oct 2018 23:08:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027296; bh=/+PQqP9t4ZV5lAlBalgxA4SPTsElbHnLnIeYlm3kqNE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rOBhmiyyDfZvlIsTRfFmL1zc7uTCcR1vnYMfepZ49SdaHYWYWov64KHx/RW+4QKP8 CsF5J+rkUD2W3acjrC4sR/T5ypFb8l3XLyj3e0f02S+1HLkGHxU07H+MIg1jay8iGS gisu3r3Auf8yvw8EsRJf5fFGEKHz1HQw3INyDHUc= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Masahiro Yamada , Miquel Raynal , Sasha Levin Subject: [PATCH AUTOSEL 4.18 023/126] mtd: rawnand: denali: set SPARE_AREA_SKIP_BYTES register to 8 if unset Date: Wed, 31 Oct 2018 19:06:11 -0400 Message-Id: <20181031230754.29029-23-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031230754.29029-1-sashal@kernel.org> References: <20181031230754.29029-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Masahiro Yamada [ Upstream commit 0d55c668b218a1db68b5044bce4de74e1bd0f0c8 ] NAND devices need additional data area (OOB) for error correction, but it is also used for Bad Block Marker (BBM). In many cases, the first byte in OOB is used for BBM, but the location actually depends on chip vendors. The NAND controller should preserve the precious BBM to keep track of bad blocks. In Denali IP, the SPARE_AREA_SKIP_BYTES register is used to specify the number of bytes to skip from the start of OOB. The ECC engine will automatically skip the specified number of bytes when it gets access to OOB area. The same value for SPARE_AREA_SKIP_BYTES should be used between firmware and the operating system if you intend to use the NAND device across the control hand-off. In fact, the current denali.c code expects firmware to have already set the SPARE_AREA_SKIP_BYTES register, then reads the value out. If no firmware (or bootloader) has initialized the controller, the register value is zero, which is the default after power-on-reset. In other words, the Linux driver cannot initialize the controller by itself. Some possible solutions are: [1] Add a DT property to specify the skipped bytes in OOB [2] Associate the preferred value with compatible [3] Hard-code the default value in the driver My first attempt was [1], but in the review process, [3] was suggested as a counter-implementation. (https://lore.kernel.org/patchwork/patch/983055/) The default value 8 was chosen to match to the boot ROM of the UniPhier platform. The preferred value may vary by platform. If so, please trade up to a different solution. Signed-off-by: Masahiro Yamada Reviewed-by: Boris Brezillon Signed-off-by: Miquel Raynal Signed-off-by: Sasha Levin --- drivers/mtd/nand/raw/denali.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) -- 2.17.1 diff --git a/drivers/mtd/nand/raw/denali.c b/drivers/mtd/nand/raw/denali.c index c502075e5721..ff955f085351 100644 --- a/drivers/mtd/nand/raw/denali.c +++ b/drivers/mtd/nand/raw/denali.c @@ -28,6 +28,7 @@ MODULE_LICENSE("GPL"); #define DENALI_NAND_NAME "denali-nand" +#define DENALI_DEFAULT_OOB_SKIP_BYTES 8 /* for Indexed Addressing */ #define DENALI_INDEXED_CTRL 0x00 @@ -1106,12 +1107,17 @@ static void denali_hw_init(struct denali_nand_info *denali) denali->revision = swab16(ioread32(denali->reg + REVISION)); /* - * tell driver how many bit controller will skip before - * writing ECC code in OOB, this register may be already - * set by firmware. So we read this value out. - * if this value is 0, just let it be. + * Set how many bytes should be skipped before writing data in OOB. + * If a non-zero value has already been set (by firmware or something), + * just use it. Otherwise, set the driver default. */ denali->oob_skip_bytes = ioread32(denali->reg + SPARE_AREA_SKIP_BYTES); + if (!denali->oob_skip_bytes) { + denali->oob_skip_bytes = DENALI_DEFAULT_OOB_SKIP_BYTES; + iowrite32(denali->oob_skip_bytes, + denali->reg + SPARE_AREA_SKIP_BYTES); + } + denali_detect_max_banks(denali); iowrite32(0x0F, denali->reg + RB_PIN_ENABLED); iowrite32(CHIP_EN_DONT_CARE__FLAG, denali->reg + CHIP_ENABLE_DONT_CARE); From patchwork Wed Oct 31 23:06:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149919 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp124591ljp; Wed, 31 Oct 2018 16:38:50 -0700 (PDT) X-Google-Smtp-Source: AJdET5eL6XXV7wf/0UCiYV33MYMZeI8oSy6rr6w4N4z5LTv4iNRTEc+MsAJndURFxei5hlYpA7nO X-Received: by 2002:a62:1693:: with SMTP id 141-v6mr5511861pfw.183.1541029130358; Wed, 31 Oct 2018 16:38:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541029130; cv=none; d=google.com; s=arc-20160816; b=R+vy5f8nuqx2kgiAXnTd0dOyr2xDCRXxDO81hhsXsghN0lDVJDgJgpGYnR4RdJKV6i JsKkcRWOQpdZmjpUsrGah4QYlmyYxt6Wvq6OPCl7HYDCnF3NRJSxGNyiYhFvdyryG6fg qv0V18pEk+QAt3JlIvidvwrmRgcTjTfiQpd/EPrduNNB+DTYbxQ28knErfrF7IKbroKp DBnHVWdhsKVLkSJAYGDKOmIzEVHu/87hnYzapRHtm3HDvFP7bqOzYqQelkpLhwV6DGMS pkZe386xPCcafP7QXo28EshNTScDjRPbbm/FAZ9rTRrXze6P4QEI67QE2SqBgaiqWwrk Iz1Q== 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=I6I/+c4SD5rsUDUlMREsnggf5fF5Gg9VBpT0/rp9Ppk=; b=huicKZmNQj5h8XjLrNMcQLvoJxf4/6hk8wzVvJ0zOjG7XKNnTGbJ4qc9mcCJZNfxTM 9vw8dwxzOj7IqX17GyaBGMwO5a8+epZxMFV4nXzzodbl/k13MoCZ0bqNt2iXaSYfpK4R FFj6He4S1Kz7+Rw3XbFvwlfRkSZh6NNvjM7P2lXtcQkJ3yL7HR10w8bADASZTt8EAoqg OknkRcp2Fi9Kx2BL+akVkcQk8HO2k0qqHc2t5vJjqDf3jcY1LhXDOGNwN/8QDDrGUUvs QdaMOccCEmHUtjRQA9nenLwVJ0FNdMEWT2I1n4K7UiEoV0XVYa9lv1DkWOxRttB9x6fj s3Eg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=AeM+YutB; 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 f192-v6si29196088pfc.73.2018.10.31.16.38.50; Wed, 31 Oct 2018 16:38:50 -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=AeM+YutB; 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 S1730088AbeKAIjI (ORCPT + 32 others); Thu, 1 Nov 2018 04:39:08 -0400 Received: from mail.kernel.org ([198.145.29.99]:57624 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729789AbeKAIIf (ORCPT ); Thu, 1 Nov 2018 04:08:35 -0400 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 0F7D520664; Wed, 31 Oct 2018 23:08:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027303; bh=VBXsMqhmxXoiCeVeo9pOALxeXQzW0h+eRtgfqb5gFCs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AeM+YutB50ZOr2wfhGYCt2Wbpxi4yXQjoJCabhKTBf+KPlYWh+P6UlLAlbtBnUPJn lADJPUtXv9IJNblT/FqxNdZksqjW1RrUzNse0+wgVL46jc7DsWThWBMdJphRfKuQ1y qI58yvd1Iwo/UTdR0fdgxbGDRAgu1Ia/ZU8/gAbk= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Viresh Kumar , Sasha Levin Subject: [PATCH AUTOSEL 4.18 032/126] cpufreq: dt: Try freeing static OPPs only if we have added them Date: Wed, 31 Oct 2018 19:06:20 -0400 Message-Id: <20181031230754.29029-32-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031230754.29029-1-sashal@kernel.org> References: <20181031230754.29029-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Viresh Kumar [ Upstream commit 51c99dd2c06b234575661fa1e0a1dea6c3ef566f ] We can not call dev_pm_opp_of_cpumask_remove_table() freely anymore since the latest OPP core updates as that uses reference counting to free resources. There are cases where no static OPPs are added (using DT) for a platform and trying to remove the OPP table may end up decrementing refcount which is already zero and hence generating warnings. Lets track if we were able to add static OPPs or not and then only remove the table based on that. Some reshuffling of code is also done to do that. Reported-by: Niklas Cassel Tested-by: Niklas Cassel Signed-off-by: Viresh Kumar Signed-off-by: Sasha Levin --- drivers/cpufreq/cpufreq-dt.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) -- 2.17.1 diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c index 0a9ebf00be46..e58bfcb1169e 100644 --- a/drivers/cpufreq/cpufreq-dt.c +++ b/drivers/cpufreq/cpufreq-dt.c @@ -32,6 +32,7 @@ struct private_data { struct device *cpu_dev; struct thermal_cooling_device *cdev; const char *reg_name; + bool have_static_opps; }; static struct freq_attr *cpufreq_dt_attr[] = { @@ -204,6 +205,15 @@ static int cpufreq_init(struct cpufreq_policy *policy) } } + priv = kzalloc(sizeof(*priv), GFP_KERNEL); + if (!priv) { + ret = -ENOMEM; + goto out_put_regulator; + } + + priv->reg_name = name; + priv->opp_table = opp_table; + /* * Initialize OPP tables for all policy->cpus. They will be shared by * all CPUs which have marked their CPUs shared with OPP bindings. @@ -214,7 +224,8 @@ static int cpufreq_init(struct cpufreq_policy *policy) * * OPPs might be populated at runtime, don't check for error here */ - dev_pm_opp_of_cpumask_add_table(policy->cpus); + if (!dev_pm_opp_of_cpumask_add_table(policy->cpus)) + priv->have_static_opps = true; /* * But we need OPP table to function so if it is not there let's @@ -240,19 +251,10 @@ static int cpufreq_init(struct cpufreq_policy *policy) __func__, ret); } - priv = kzalloc(sizeof(*priv), GFP_KERNEL); - if (!priv) { - ret = -ENOMEM; - goto out_free_opp; - } - - priv->reg_name = name; - priv->opp_table = opp_table; - ret = dev_pm_opp_init_cpufreq_table(cpu_dev, &freq_table); if (ret) { dev_err(cpu_dev, "failed to init cpufreq table: %d\n", ret); - goto out_free_priv; + goto out_free_opp; } priv->cpu_dev = cpu_dev; @@ -282,10 +284,11 @@ static int cpufreq_init(struct cpufreq_policy *policy) out_free_cpufreq_table: dev_pm_opp_free_cpufreq_table(cpu_dev, &freq_table); -out_free_priv: - kfree(priv); out_free_opp: - dev_pm_opp_of_cpumask_remove_table(policy->cpus); + if (priv->have_static_opps) + dev_pm_opp_of_cpumask_remove_table(policy->cpus); + kfree(priv); +out_put_regulator: if (name) dev_pm_opp_put_regulators(opp_table); out_put_clk: @@ -300,7 +303,8 @@ static int cpufreq_exit(struct cpufreq_policy *policy) cpufreq_cooling_unregister(priv->cdev); dev_pm_opp_free_cpufreq_table(priv->cpu_dev, &policy->freq_table); - dev_pm_opp_of_cpumask_remove_table(policy->related_cpus); + if (priv->have_static_opps) + dev_pm_opp_of_cpumask_remove_table(policy->related_cpus); if (priv->reg_name) dev_pm_opp_put_regulators(priv->opp_table); From patchwork Wed Oct 31 23:06:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149897 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp99412ljp; Wed, 31 Oct 2018 16:08:31 -0700 (PDT) X-Google-Smtp-Source: AJdET5d6x5Q8rCyO9d7IrTOhcNyk5f9BHhHkIFzr4fXLq+kqRxlaZfsTTUwT7p9OiprS/C6M8GaR X-Received: by 2002:a17:902:e00a:: with SMTP id ca10-v6mr5175583plb.166.1541027310819; Wed, 31 Oct 2018 16:08:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541027310; cv=none; d=google.com; s=arc-20160816; b=oI/K8BWLi2YQhLTzacH5VQ/cl2i7Fv5n2pfH3R1+2qYb65w3v3H1YVegdk+nYzDi7n zbejCy/JyOLuAQkpDAI0ktBVOeHbsgFnCYb7nKbVDxVCiJsiYIWfgDrht0OB4kbZwBo3 TB4JN3u5H9LCjlVqJzjwaLgKNqnpsvfSuZ9K7DwuWjdLCrpfNB7+alpUdHmGy814kap4 Cz8vKCpTI5xV/4NSNxSC9BxlhwcqGIdbrqi06BDnH6QenfENsQYfB9/9RQu/B6gnLkGa UaLfdgHdd9MJm4pIKLQCPuRe82yyR+MvBVzhE6hfNdlbRsobZwLRgcXKD7/Gy3YJDnoJ nc3w== 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=DkHASvWaQzP46fVNTllqBG+7zWgY5xyiIuvOH1yIhgI=; b=aaSqbe8b5enuRAn24R4F0wC+okvVbReJ4f+Zp2M749LO9Fh6t60a6poYOJNUXieE1F 27XsOOuE7EUXTMgnyvbOTJ+HxfW0C8b1VSYK+ocRJjCItq4UxvCfrmltwPK5979JE8K3 A4N1D2PaSumKBfiGeCqUghLu5RWWFOiM/WjqieEx2iww1xTPoHHaoeUJ2lrXCrpPjax9 l0ZYUv8iD/i0/R9DV4vN9UmPOL7VDRiew+4rhcjKLItI5QU5WGEA/w+XpG9jL2uQNzVB ayXnBe4Euenea7M3YytKh3jKeqJuCTak2xyVHCj43eEEZMPFOLLfYdycLKM4hf4xJooQ HaNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="L/wr1pn8"; 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 d8-v6si29392697pfn.99.2018.10.31.16.08.30; Wed, 31 Oct 2018 16:08:30 -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="L/wr1pn8"; 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 S1729850AbeKAIIi (ORCPT + 32 others); Thu, 1 Nov 2018 04:08:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:57720 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729817AbeKAIIh (ORCPT ); Thu, 1 Nov 2018 04:08:37 -0400 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 B3EE22081B; Wed, 31 Oct 2018 23:08:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027306; bh=xixfP+2xcVyJj/LcGiNejEQLYC1PYTYpBTx80WWdXr0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L/wr1pn8IXMG4sOdCWzquRk5/wWofrB/6Xs9/qw91r2OucV7ML9699/t4zZkLlkty WsUgL7RxIOH02evtuk5zi0wQBtc4nB04MHyFzT4hoD5tRgHS+VB+u3B1EL4vKRz6pz ZSUCJuT9tgBmmr1LZWgE8RMEsOjKDEWTYsBDwDdA= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Linus Walleij , Mark Brown , Sasha Levin Subject: [PATCH AUTOSEL 4.18 035/126] regulator: fixed: Default enable high on DT regulators Date: Wed, 31 Oct 2018 19:06:23 -0400 Message-Id: <20181031230754.29029-35-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031230754.29029-1-sashal@kernel.org> References: <20181031230754.29029-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Linus Walleij [ Upstream commit 28be5f15df2ee6882b0a122693159c96a28203c7 ] commit efdfeb079cc3 ("regulator: fixed: Convert to use GPIO descriptor only") switched to use gpiod_get() to look up the regulator from the gpiolib core whether that is device tree or boardfile. This meant that we activate the code in a603a2b8d86e ("gpio: of: Add special quirk to parse regulator flags") which means the descriptors coming from the device tree already have the right inversion and open drain semantics set up from the gpiolib core. As the fixed regulator was inspected again we got the inverted inversion and things broke. Fix it by ignoring the config in the device tree for now: the later patches in the series will push all inversion handling over to the gpiolib core and set it up properly in the boardfiles for legacy devices, but I did not finish that for this kernel cycle. Fixes: commit efdfeb079cc3 ("regulator: fixed: Convert to use GPIO descriptor only") Reported-by: Leonard Crestez Reported-by: Fabio Estevam Reported-by: John Stultz Reported-by: Anders Roxell Signed-off-by: Linus Walleij Tested-by: John Stultz Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- drivers/regulator/fixed.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) -- 2.17.1 diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c index 988a7472c2ab..d68ff65a5adc 100644 --- a/drivers/regulator/fixed.c +++ b/drivers/regulator/fixed.c @@ -84,9 +84,14 @@ of_get_fixed_voltage_config(struct device *dev, of_property_read_u32(np, "startup-delay-us", &config->startup_delay); - config->enable_high = of_property_read_bool(np, "enable-active-high"); - config->gpio_is_open_drain = of_property_read_bool(np, - "gpio-open-drain"); + /* + * FIXME: we pulled active low/high and open drain handling into + * gpiolib so it will be handled there. Delete this in the second + * step when we also remove the custom inversion handling for all + * legacy boardfiles. + */ + config->enable_high = 1; + config->gpio_is_open_drain = 0; if (of_find_property(np, "vin-supply", NULL)) config->input_supply = "vin"; From patchwork Wed Oct 31 23:06:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149918 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp124268ljp; Wed, 31 Oct 2018 16:38:24 -0700 (PDT) X-Google-Smtp-Source: AJdET5d4qJLhduPPu8eZXOdc3toH3D8yoz5oT979s7qE1qIOesFpfIBPfuH+Z+DtCt1i2ulMphWQ X-Received: by 2002:a63:8ac4:: with SMTP id y187mr5026119pgd.446.1541029104682; Wed, 31 Oct 2018 16:38:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541029104; cv=none; d=google.com; s=arc-20160816; b=tzFZBYywu/ukKCQTNByNVurfYZeUQQpNAgzCKgfaillEXI4CVHoVNoNTXa+BvpJCyb eMTSteTogHtmoMKRg53vS2tiMw1W8mI4Jp/99cLtv9Ijqs1tdoqUCggo+rmXQlv+pzty kyUdC29Au7IzRCyj/DMeaWArFQ61q4WOh0uodqyt/SsrGL61Jsb9udSfLs4OdnVuIhy5 793l7b25m5XxqnOLH7yyAWty7dFqNDWWMfi1kI2e0sIIeqrq/tta+1WLMr+NT1qJSEtQ n4alqxlgHIlC+QJVlm66nEKXzBC5UaKNf5VXsf2QV7g4l71lLENJeZBZi/TAop5iPEHk khYQ== 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=tZWsEKRZPb5XZqmDMbLNjO3owWrrCkGe9pT5eNYhz88=; b=GXUpUrXJyJhlvSuxNfctnp7KMj4JeTRxkQbhQDACVT5e9kmEqp8bfLPdSWW1hgseoT hRxP4Ad+Jke+Yh8m+hMMH8rZyy/ofhg9/iRBMoLNl3ceqQBWF4SXDw45PRp3JETdyvgc MHzxiRvdclPccJP4pnKh+r1b3WIqeZwem8+q9CkGIWc09JRpnt//hYLGgOvBafxdyNnK 6eff0i94DTCQkjJ87d4zMMq6bfCKqxE8VFjhsS/VSLn68LbF6yJUsTvsRj2paHfKSyHm aImTXUSapmqMhQWcEOXBi94J+v5EgEAfyzdPBQUESZgs4yiWnwcHBMqHcTF52JZ2giaC C0kA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=dJqM4Gyt; 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 y11-v6si28769182pgj.195.2018.10.31.16.38.24; Wed, 31 Oct 2018 16:38: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=dJqM4Gyt; 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 S1729870AbeKAIIk (ORCPT + 32 others); Thu, 1 Nov 2018 04:08:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:57764 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729817AbeKAIIj (ORCPT ); Thu, 1 Nov 2018 04:08:39 -0400 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 8A6D120838; Wed, 31 Oct 2018 23:08:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027307; bh=qcZd9mhbefSqqMRUbMGlzWVapCHlNIAfDOfkgEKwcw0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dJqM4GytIZPcGq442o648pOdJav33zHKxQrUg3Xf/1IA96V2elUr2gJE13aAiC6cd bW4czLhkVWMX/7ihOF3vi5KN7NjLd6QgHxNSBELlb2eVgoerZUNpXpzlRYUY4yK/ya CY8F6esO6mvPqimlFbT9bt/QC17qHjviN+eSVocM= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Will Deacon , Arnd Bergmann , Dominik Brodowski , "Eric W. Biederman" , Andrew Morton , Al Viro , Oleg Nesterov , Catalin Marinas , Sasha Levin Subject: [PATCH AUTOSEL 4.18 036/126] signal: Introduce COMPAT_SIGMINSTKSZ for use in compat_sys_sigaltstack Date: Wed, 31 Oct 2018 19:06:24 -0400 Message-Id: <20181031230754.29029-36-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031230754.29029-1-sashal@kernel.org> References: <20181031230754.29029-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Will Deacon [ Upstream commit 22839869f21ab3850fbbac9b425ccc4c0023926f ] The sigaltstack(2) system call fails with -ENOMEM if the new alternative signal stack is found to be smaller than SIGMINSTKSZ. On architectures such as arm64, where the native value for SIGMINSTKSZ is larger than the compat value, this can result in an unexpected error being reported to a compat task. See, for example: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=904385 This patch fixes the problem by extending do_sigaltstack to take the minimum signal stack size as an additional parameter, allowing the native and compat system call entry code to pass in their respective values. COMPAT_SIGMINSTKSZ is just defined as SIGMINSTKSZ if it has not been defined by the architecture. Cc: Arnd Bergmann Cc: Dominik Brodowski Cc: "Eric W. Biederman" Cc: Andrew Morton Cc: Al Viro Cc: Oleg Nesterov Reported-by: Steve McIntyre Tested-by: Steve McIntyre <93sam@debian.org> Signed-off-by: Will Deacon Signed-off-by: Catalin Marinas Signed-off-by: Sasha Levin --- include/linux/compat.h | 3 +++ kernel/signal.c | 14 +++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) -- 2.17.1 diff --git a/include/linux/compat.h b/include/linux/compat.h index c68acc47da57..47041c7fed28 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h @@ -103,6 +103,9 @@ typedef struct compat_sigaltstack { compat_size_t ss_size; } compat_stack_t; #endif +#ifndef COMPAT_MINSIGSTKSZ +#define COMPAT_MINSIGSTKSZ MINSIGSTKSZ +#endif #define compat_jiffies_to_clock_t(x) \ (((unsigned long)(x) * COMPAT_USER_HZ) / HZ) diff --git a/kernel/signal.c b/kernel/signal.c index 8d8a940422a8..41a5dd2df27d 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -3417,7 +3417,8 @@ int do_sigaction(int sig, struct k_sigaction *act, struct k_sigaction *oact) } static int -do_sigaltstack (const stack_t *ss, stack_t *oss, unsigned long sp) +do_sigaltstack (const stack_t *ss, stack_t *oss, unsigned long sp, + size_t min_ss_size) { struct task_struct *t = current; @@ -3447,7 +3448,7 @@ do_sigaltstack (const stack_t *ss, stack_t *oss, unsigned long sp) ss_size = 0; ss_sp = NULL; } else { - if (unlikely(ss_size < MINSIGSTKSZ)) + if (unlikely(ss_size < min_ss_size)) return -ENOMEM; } @@ -3465,7 +3466,8 @@ SYSCALL_DEFINE2(sigaltstack,const stack_t __user *,uss, stack_t __user *,uoss) if (uss && copy_from_user(&new, uss, sizeof(stack_t))) return -EFAULT; err = do_sigaltstack(uss ? &new : NULL, uoss ? &old : NULL, - current_user_stack_pointer()); + current_user_stack_pointer(), + MINSIGSTKSZ); if (!err && uoss && copy_to_user(uoss, &old, sizeof(stack_t))) err = -EFAULT; return err; @@ -3476,7 +3478,8 @@ int restore_altstack(const stack_t __user *uss) stack_t new; if (copy_from_user(&new, uss, sizeof(stack_t))) return -EFAULT; - (void)do_sigaltstack(&new, NULL, current_user_stack_pointer()); + (void)do_sigaltstack(&new, NULL, current_user_stack_pointer(), + MINSIGSTKSZ); /* squash all but EFAULT for now */ return 0; } @@ -3510,7 +3513,8 @@ static int do_compat_sigaltstack(const compat_stack_t __user *uss_ptr, uss.ss_size = uss32.ss_size; } ret = do_sigaltstack(uss_ptr ? &uss : NULL, &uoss, - compat_user_stack_pointer()); + compat_user_stack_pointer(), + COMPAT_MINSIGSTKSZ); if (ret >= 0 && uoss_ptr) { compat_stack_t old; memset(&old, 0, sizeof(old)); From patchwork Wed Oct 31 23:06:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149917 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp123298ljp; Wed, 31 Oct 2018 16:37:09 -0700 (PDT) X-Google-Smtp-Source: AJdET5crScYpXhLs23zINUfes3s3k4jJazIQyBjuxnjkzAZ7KloonUVshP2sL7HFWhk1EIOQrkJV X-Received: by 2002:a62:3384:: with SMTP id z126-v6mr5461043pfz.112.1541029028898; Wed, 31 Oct 2018 16:37:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541029028; cv=none; d=google.com; s=arc-20160816; b=koHx1qm0+1/C3TkaPMHRR/IvouhC/fOTJJfgBaQJuhvSPsABUrdGI4faQ/7eaC2c/Y sganV7+Fc6VZ2lSi1uzysIM6uV2INWCF17nFCr/ZWMfbkSPvBPypqq7Ke1u3d5LjcgRU gDmuidcSYGktAubmugTl57ubH1Hq4Bw0SlrBfwWb2C4MpBbW0jQbRks9Za9uXfrcfqEo /inZ4i4adTIIxmMBlf1PfLWpCXIN/yj6HaAxPse7ng3uk+l2/g1owLeiBzzzvlQiaMy3 UqKRVH42i1JOm1J4pLHVaVZJVv4yPBhmfh6NkXknb53ukmGp2ysg+jPhOCKppz2pPpT0 79gQ== 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=QGIM3sOiqVJ1koZxQUOJYvloVgbVojiep6k8olIQojs=; b=XcEscWVSEGoHVZC3SMcMzr4iuVEHc48dYvsYlvmu2I37zINwRTIMCczVWgq2QWW6PR VCIFR5oDUX6SuysFNLbb4kEwekD2MI5D9Lu/P2pdJ6ZFiNHhlMAeJz2b5sa+k7ztNkBo ge6+Lp6HY1ZL4eDc8voidKpspXehLS7w/4j2vV/TloZjd8KcR3jm/iRe2XIm7/hFA3R3 lnWiI8JL64H1yB2k6kHRFj274SgMZdo+4owmB4eRm7DaOT5zBzeW7Ze+iI7h3qXL9OhI 0K8n5KQqts98+CtgdFKTLgxs4XP/BOPWZZBGXcDeWjsgIx9ucMM4w1CJZbjFQDzOCPi/ Akkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=X4iIILmf; 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 c68-v6si30919750pfa.45.2018.10.31.16.37.08; Wed, 31 Oct 2018 16:37:08 -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=X4iIILmf; 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 S1730053AbeKAIIw (ORCPT + 32 others); Thu, 1 Nov 2018 04:08:52 -0400 Received: from mail.kernel.org ([198.145.29.99]:58216 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729855AbeKAIIv (ORCPT ); Thu, 1 Nov 2018 04:08:51 -0400 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 A734120847; Wed, 31 Oct 2018 23:08:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027320; bh=J1w7CfViljGDO58gsaMyV0aNsx6x8XOC1S+PPnA+Mv0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X4iIILmfF1/1qrjMIIbiMQfbWuoxM2Pk/rRwAnYVNkr9mZLlu1V1qii6ZuJFAQRMl TnoDuSoKKrWmx26RZxxEVX6VX3EoMupyh81FMoEaqxnNNdkP9Iu4rm8HiHE4nzNSws MjnHSAQAYspfG8D0JnN8W1GjXmNaJ+DGvJahfAnc= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Paolo Valente , Jens Axboe , Sasha Levin Subject: [PATCH AUTOSEL 4.18 050/126] block, bfq: correctly charge and reset entity service in all cases Date: Wed, 31 Oct 2018 19:06:38 -0400 Message-Id: <20181031230754.29029-50-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031230754.29029-1-sashal@kernel.org> References: <20181031230754.29029-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Paolo Valente [ Upstream commit cbeb869a3d1110450186b738199963c5e68c2a71 ] BFQ schedules entities (which represent either per-process queues or groups of queues) as a function of their timestamps. In particular, as a function of their (virtual) finish times. The finish time of an entity is computed as a function of the budget assigned to the entity, assuming, tentatively, that the entity, once in service, will receive an amount of service equal to its budget. Then, when the entity is expired because it finishes to be served, this finish time is updated as a function of the actual service received by the entity. This allows the entity to be correctly charged with only the service received, and then to be correctly re-scheduled. Yet an entity may receive service also while not being the entity in service (in the scheduling environment of its parent entity), for several reasons. If the entity remains with no backlog while receiving this 'unofficial' service, then it is expired. Also on such an expiration, the finish time of the entity should be updated to account for only the service actually received by the entity. Unfortunately, such an update is not performed for an entity expiring without being the entity in service. In a similar vein, the service counter of the entity in service is reset when the entity is expired, to be ready to be used for next service cycle. This reset too should be performed also in case an entity is expired because it remains empty after receiving service while not being the entity in service. But in this case the reset is not performed. This commit performs the above update of the finish time and reset of the service received, also for an entity expiring while not being the entity in service. Signed-off-by: Paolo Valente Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- block/bfq-wf2q.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) -- 2.17.1 diff --git a/block/bfq-wf2q.c b/block/bfq-wf2q.c index 4498c43245e2..681498e5d40a 100644 --- a/block/bfq-wf2q.c +++ b/block/bfq-wf2q.c @@ -1178,10 +1178,17 @@ bool __bfq_deactivate_entity(struct bfq_entity *entity, bool ins_into_idle_tree) st = bfq_entity_service_tree(entity); is_in_service = entity == sd->in_service_entity; - if (is_in_service) { - bfq_calc_finish(entity, entity->service); + bfq_calc_finish(entity, entity->service); + + if (is_in_service) sd->in_service_entity = NULL; - } + else + /* + * Non in-service entity: nobody will take care of + * resetting its service counter on expiration. Do it + * now. + */ + entity->service = 0; if (entity->tree == &st->active) bfq_active_extract(st, entity); From patchwork Wed Oct 31 23:06:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149898 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp99592ljp; Wed, 31 Oct 2018 16:08:44 -0700 (PDT) X-Google-Smtp-Source: AJdET5dxrI4dBhfmJFUuUa0rCIQb6hG74SIWtCpXJf+efwpApY51R0Dt/DGFV+BA8tCqOvaiBQAF X-Received: by 2002:a65:5b81:: with SMTP id i1-v6mr5045826pgr.252.1541027324369; Wed, 31 Oct 2018 16:08:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541027324; cv=none; d=google.com; s=arc-20160816; b=hD2thud7briOMCZ7WvOiTa/hsW9xr5UovloAwdzziYyQsGp/f73fEgaCJHvYMZzgRa k1XOSkVzYUIbV3lxjt4kQxiIVM0RH8pzSPVaEQ3WFbNmkiDBngZD1Vao+yv8VBkHLqX1 imNMmv/5zzUONouYx79qbKAqyy4hIINwGIiHPOcVPdHBl5fvd1nu7l5KFi9tuw1Qqn92 wFnhJeW4wabAo2C6bwWY+3LRKe2saaW3nZvhtJZg6q4esY1jMJKQzZTcFfLm1wzEfXM2 +JunOmIf+ehM8Kf9ktG5RNx70tbsj25uFZ4CkJ4O1XEXh8GIQVIGHVwKLWsgpTrLlDLG C88g== 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=eOJBvFj1ZaqIOu8FhC5sO6dJWFTNbp62mBUfsu7ffPk=; b=rdD/YX9p2Eh1GH+TGCr6C+FD6X+buYmey8EwGyg4ASND0gFEakfBooI9MB+J60OzMi SoaeNLdsjaUgaPZGl+hsZqBmtw/mhhQ2kWboZf1ihfJE2HH9dPGOfoX7s7dKCsNl4dhs u8hrSes7xa1ATbsDYqxYOcOq+lFyyZ7PU2pRq9IZf6V/XACysJnEPNVDZLwSNdMdWOf0 1LPIaAEdBX/7FGcOGpIW6+2QeH97lqpYIh1GDVCpimlhuDO9Pp556DYmsqs1aF7Sideo 6hAKr2FlHQ5nNgNA8iU3eB69mh9i4y9dE81kgAe6xAVSR4JwlKmjspW1jco5kblFp2ZB NH/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Dz26IKTn; 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 s3-v6si29104001pgi.366.2018.10.31.16.08.44; Wed, 31 Oct 2018 16:08:44 -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=Dz26IKTn; 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 S1730065AbeKAIIx (ORCPT + 32 others); Thu, 1 Nov 2018 04:08:53 -0400 Received: from mail.kernel.org ([198.145.29.99]:58232 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730030AbeKAIIw (ORCPT ); Thu, 1 Nov 2018 04:08:52 -0400 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 7AB0B2084A; Wed, 31 Oct 2018 23:08:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027321; bh=x6HF4QIL5OlTuHXmztarRGF4czZrSYY4uhoUeERyU+Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Dz26IKTnKEg/pFuqSn2qmiCdEKg1O191U9Q1u7nkm/Q6V+EBioM/Lk0WHrdz5aAel Sz58vsUNN0+XlphDYYUEpvczdV6cwHsqNMQ879sPo6NqAhMRCaRdvLRGXmIpE1xm8T pr9UQSOPnrKAosZ9DNTu+YlyLoQHzbqWQCkD6BAo= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Will Deacon , Catalin Marinas , Sasha Levin Subject: [PATCH AUTOSEL 4.18 051/126] arm64: entry: Allow handling of undefined instructions from EL1 Date: Wed, 31 Oct 2018 19:06:39 -0400 Message-Id: <20181031230754.29029-51-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031230754.29029-1-sashal@kernel.org> References: <20181031230754.29029-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Will Deacon [ Upstream commit 0bf0f444b2c49241b2b39aa3cf210d7c95ef6c34 ] Rather than panic() when taking an undefined instruction exception from EL1, allow a hook to be registered in case we want to emulate the instruction, like we will for the SSBS PSTATE manipulation instructions. Signed-off-by: Will Deacon Signed-off-by: Catalin Marinas Signed-off-by: Sasha Levin --- arch/arm64/kernel/entry.S | 2 +- arch/arm64/kernel/traps.c | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) -- 2.17.1 diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index 28ad8799406f..b0db91eefbde 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -599,7 +599,7 @@ el1_undef: inherit_daif pstate=x23, tmp=x2 mov x0, sp bl do_undefinstr - ASM_BUG() + kernel_exit 1 el1_dbg: /* * Debug exception handling diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index d399d459397b..9fa3d69cceaa 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c @@ -310,10 +310,12 @@ static int call_undef_hook(struct pt_regs *regs) int (*fn)(struct pt_regs *regs, u32 instr) = NULL; void __user *pc = (void __user *)instruction_pointer(regs); - if (!user_mode(regs)) - return 1; - - if (compat_thumb_mode(regs)) { + if (!user_mode(regs)) { + __le32 instr_le; + if (probe_kernel_address((__force __le32 *)pc, instr_le)) + goto exit; + instr = le32_to_cpu(instr_le); + } else if (compat_thumb_mode(regs)) { /* 16-bit Thumb instruction */ __le16 instr_le; if (get_user(instr_le, (__le16 __user *)pc)) @@ -407,6 +409,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) return; force_signal_inject(SIGILL, ILL_ILLOPC, regs->pc); + BUG_ON(!user_mode(regs)); } void cpu_enable_cache_maint_trap(const struct arm64_cpu_capabilities *__unused) From patchwork Wed Oct 31 23:06:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149899 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp99630ljp; Wed, 31 Oct 2018 16:08:47 -0700 (PDT) X-Google-Smtp-Source: AJdET5eyj4kMQ1+VzehB9eHzYItSh/n26a8WV4T6JtvukktgngwWXGtV0LZvZUFFtvgisSEeD4hE X-Received: by 2002:a17:902:6909:: with SMTP id j9-v6mr5083404plk.221.1541027327052; Wed, 31 Oct 2018 16:08:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541027327; cv=none; d=google.com; s=arc-20160816; b=czaJ6GUvthc9Chv1c55y0DiEWHmqV8+GYZ3/EoaCiScMK/bVRSBsBV/mtuCGUe1uYm yhEgiYbIOX3NAMcJWsBza74KhltJkTORJJhkcHHMTITqiGP5kLvgHP2U120R0ae+x3r6 rTvJPDD04k09f4CqPxnHjE9UX021uA24ElaOyToDYpc+ENb8Fv6A1+3o1wGkQ3pbgDWx NLvz0NvGNxmTaFBuc+Tr17U1ceuOcyWymNnHw1iBDHWwFSyO579ISYfMWmSvXmUoeR0t NxvqwqvRKChiS9Na0v6N2GguPjVcwt5Rv17F45z8abkOCTBxdUgup5qxMDQq2FWF0gxC sAQQ== 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=mCNnRyQhcVrmWRoZI7GkzAwJ9vppFf11EIeCHLfXgFw=; b=YsTuKnZhx4zcL4v4Kn/OwNyBRhlxcFnIgFabyEiC5blAs5PNXjoEUqZ6GCgEUwTwmT lEdVgU6q8Eb0QllhQ9wRGq28jq4DJFNSl99UAU4GHXY4XmY6ipYo6X39dPgVRWKhpFaK T79WfecvtmMklGRx0u8b/7AVu6Om47lnI6Ha5zuLfbczpWjqINCofsuRszVMrNp8cYHc JiMnkBVCf14EqruxesAMhYIwqCVHE0Rqs8qYqdq0MHrch8xBwlqTo4x/Ucq3axGWWTs3 cHPIcAb2sfA6pg4AKRJm9TDHPFdOMt/i6qh+MxseBOVHEHG8VrDoEUVYDQZBmMSMnQ39 crWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="cboV/Zrz"; 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 y28-v6si29669411pfk.230.2018.10.31.16.08.46; Wed, 31 Oct 2018 16:08:47 -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="cboV/Zrz"; 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 S1730101AbeKAIIy (ORCPT + 32 others); Thu, 1 Nov 2018 04:08:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:58314 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730085AbeKAIIy (ORCPT ); Thu, 1 Nov 2018 04:08:54 -0400 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 A002F20840; Wed, 31 Oct 2018 23:08:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027323; bh=0vLOTSa95C260lCg9o/3z1dplJDXNzhfGv3hOOLryuM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cboV/ZrzWzqk6HbpHGIH6G9AVAAjk7qYDKRJoxC2SnkMjtcAMSZvHXO1iwIlgbb/o bB08EwqbPachJfGiNyYIpeC0ZTYJkhg+C380A+1KlpwxOlfpUOKUYWsWtFlHQHqm/x W35Vg92sLR0yZ9SGaXxkaHwSJpsLHi2Ddj3Ls95c= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Linus Walleij , Andrzej Hajda , Lorenzo Bianconi , Mark Brown , Sasha Levin Subject: [PATCH AUTOSEL 4.18 053/126] spi: gpio: No MISO does not imply no RX Date: Wed, 31 Oct 2018 19:06:41 -0400 Message-Id: <20181031230754.29029-53-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031230754.29029-1-sashal@kernel.org> References: <20181031230754.29029-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Linus Walleij [ Upstream commit abf5feef3ff0cefade0c76be53b59e55fdd46093 ] There is a logical problem in spi-gpio with host just assigning a MOSI line and no MISO: this is interpreted as the host cannot do RX and the host is flagged with SPI_MASTER_NO_RX. This is wrong: since GPIO lines can switch direction, in 3WIRE operation the host will simply reverse the direction of the GPIO line and start reading from it, there is even code for doing this in the driver, but it went unnoticed because it was tested by using a master with 4 wires but a device using just 3 wires. Remove the offending flag. Cc: Andrzej Hajda Cc: Lorenzo Bianconi Signed-off-by: Linus Walleij Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- drivers/spi/spi-gpio.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) -- 2.17.1 diff --git a/drivers/spi/spi-gpio.c b/drivers/spi/spi-gpio.c index 3b518ead504e..b82b47152b18 100644 --- a/drivers/spi/spi-gpio.c +++ b/drivers/spi/spi-gpio.c @@ -282,9 +282,11 @@ static int spi_gpio_request(struct device *dev, spi_gpio->miso = devm_gpiod_get_optional(dev, "miso", GPIOD_IN); if (IS_ERR(spi_gpio->miso)) return PTR_ERR(spi_gpio->miso); - if (!spi_gpio->miso) - /* HW configuration without MISO pin */ - *mflags |= SPI_MASTER_NO_RX; + /* + * No setting SPI_MASTER_NO_RX here - if there is only a MOSI + * pin connected the host can still do RX by changing the + * direction of the line. + */ spi_gpio->sck = devm_gpiod_get(dev, "sck", GPIOD_OUT_LOW); if (IS_ERR(spi_gpio->sck)) @@ -408,7 +410,7 @@ static int spi_gpio_probe(struct platform_device *pdev) spi_gpio->bitbang.master = master; spi_gpio->bitbang.chipselect = spi_gpio_chipselect; - if ((master_flags & (SPI_MASTER_NO_TX | SPI_MASTER_NO_RX)) == 0) { + if ((master_flags & SPI_MASTER_NO_TX) == 0) { spi_gpio->bitbang.txrx_word[SPI_MODE_0] = spi_gpio_txrx_word_mode0; spi_gpio->bitbang.txrx_word[SPI_MODE_1] = spi_gpio_txrx_word_mode1; spi_gpio->bitbang.txrx_word[SPI_MODE_2] = spi_gpio_txrx_word_mode2; From patchwork Wed Oct 31 23:07:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149916 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp118039ljp; Wed, 31 Oct 2018 16:31:07 -0700 (PDT) X-Google-Smtp-Source: AJdET5fIk0Nxa+FoOnrlhFO/wqESp085hDmDg/m7O3OfK0TWdstuawVODM/iccu8NWraGGQipZzy X-Received: by 2002:a62:2fc1:: with SMTP id v184-v6mr5323311pfv.115.1541028667772; Wed, 31 Oct 2018 16:31:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541028667; cv=none; d=google.com; s=arc-20160816; b=UtF09Grymnt8AtfRishK1VFExj4oCH92R7W6roCjTOsFT9OOQMDfTv0KSj5ioDxt2q n0VOe3rB1gKFZX/nXG7gI3oXqMcdVJw1U/wiz8ncYy5X1tQanAc/MwukyZVepSSJxvls Ds+Id38am/rQd+UmcHX320eJ0aiOyPgStVe7qUbgGOkSoZt6LMS1MpVt0EnRDYbL3aCY T02W652sAak9ddCVFVahSU7hs2bXJz/XCiv2WMBXGv4K1K3YoMgcOJhU3bOJfhmsw1Bo xuB9GPcjNtWcSsCGMu+w2nrtGcEcJS7N1etNNw552NrEYQHTI4dfRPEgcyz6XzUvd0p2 +Bdg== 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=yMlD8LXwbhIs2GJ7LmL1+bQOw7qO2HPgxcRlJjJOW4A=; b=Ttp2nZ8A6kr3ROqdOrutN4CXbimv/QUJ+MAf4qhcvzXFeASGk8/uJdVN6SCnKQfwH8 Vk31JUCnMQKg/my4OIaz7g9l/sVy+SD3kLkiMdkymrVFuS7pWuv0dP8HOsv3Kg2UQbwc ZW3AdmH6M3W9K9cH43VedJdUR1hcVMO3j9QlMPhDCBnE/5zBAgdjx5owDV5w1konviFF 0J+/VQ9Wh0R/s0JqAE11Ll07igalwt6HigqAA/Ye1yv4uthBgvSGa1ZPAEFyaJNYUHeY QiQfJidRPJQtAbwulQ+0f4CPu/isxTPLkk8bEG7JOpWW2SyEljx6/KDG7AnOUIoNuu2y F3cA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=QUSApSc1; 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 m75-v6si28879385pga.481.2018.10.31.16.31.07; Wed, 31 Oct 2018 16:31:07 -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=QUSApSc1; 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 S1730816AbeKAIbY (ORCPT + 32 others); Thu, 1 Nov 2018 04:31:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:59948 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730576AbeKAIJr (ORCPT ); Thu, 1 Nov 2018 04:09:47 -0400 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 EE94D208A3; Wed, 31 Oct 2018 23:09:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027375; bh=8YA0vWFhpY+Sn68jT8xm6ghQKKZys++ILysgTsBS9rE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QUSApSc1KYr1LGB3kYPdkpdj8dsDhDDR8CV31v10r8j+8s+X5n3kbjJi5GOZptvrM 72sS14BQGNxieP/UOceTERhR9JyrBfT8OhMOtN5h8wDjS5pSkWlp2muc5Xy2UhDAbo MXbx3kOE9CbJSveJkCfQzBM1qg6hLJ1yxfBJqYC8= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Loic Poulain , Peter Chen , Sasha Levin Subject: [PATCH AUTOSEL 4.18 112/126] usb: chipidea: Prevent unbalanced IRQ disable Date: Wed, 31 Oct 2018 19:07:40 -0400 Message-Id: <20181031230754.29029-112-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031230754.29029-1-sashal@kernel.org> References: <20181031230754.29029-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Loic Poulain [ Upstream commit 8b97d73c4d72a2abf58f8e49062a7ee1e5f1334e ] The ChipIdea IRQ is disabled before scheduling the otg work and re-enabled on otg work completion. However if the job is already scheduled we have to undo the effect of disable_irq int order to balance the IRQ disable-depth value. Fixes: be6b0c1bd0be ("usb: chipidea: using one inline function to cover queue work operations") Signed-off-by: Loic Poulain Signed-off-by: Peter Chen Signed-off-by: Sasha Levin --- drivers/usb/chipidea/otg.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- 2.17.1 diff --git a/drivers/usb/chipidea/otg.h b/drivers/usb/chipidea/otg.h index 7e7428e48bfa..4f8b8179ec96 100644 --- a/drivers/usb/chipidea/otg.h +++ b/drivers/usb/chipidea/otg.h @@ -17,7 +17,8 @@ void ci_handle_vbus_change(struct ci_hdrc *ci); static inline void ci_otg_queue_work(struct ci_hdrc *ci) { disable_irq_nosync(ci->irq); - queue_work(ci->wq, &ci->work); + if (queue_work(ci->wq, &ci->work) == false) + enable_irq(ci->irq); } #endif /* __DRIVERS_USB_CHIPIDEA_OTG_H */ From patchwork Wed Oct 31 23:07:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 149915 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp117066ljp; Wed, 31 Oct 2018 16:30:06 -0700 (PDT) X-Google-Smtp-Source: AJdET5csoBbwDPURDyk9R/PtOtpWWm911NVg3kjd0K4Bgjk7hfXfETg3Oisroihn4YYWu8evS95J X-Received: by 2002:a63:e248:: with SMTP id y8mr2578843pgj.84.1541028606222; Wed, 31 Oct 2018 16:30:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541028606; cv=none; d=google.com; s=arc-20160816; b=kaFfgae/04lO0cJ5yQDW2FSBkrTcQXp5zKrFIIBf42E3DXWqZXg1WBNwpfi/Te4z+I JPdkmVeUhmuENjvk5CQm7T2J2U1fV9aZIJPnGhORTV0MJfwxPXDOKwiPe1iX1RsHx1nm SJTQwra+q8xw7tSApGLK3evQ3R5EhP5Pf/boSkDR6mjiFGU0koAuB7X6bIRlphWWU9g4 apv6lvXSi1Qky50ror3DrwEo/gMP5g3W1AF3AGbOkROt541DGBRiFNNdvh8MfL2BWa4P f5c4ccc547WUDpRKjOdmmZvgnyYnBLK95z0nBkBvAoQS0++YNS30sIN171MagErqLg5p LdmQ== 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=neFwI4jqqZM7BQ/KDB+czLOqkdF1c3WPoFqRxMvc/Xw=; b=WVTTnm6hq+PMJQpyev34JSqnmQHTGSmNF9rOAc9/7hn4h3AiXbW2gfl8aH59onSAtA AKVu4X9lbNRyUYznX31W2iz5HjhhEEgMzyxRyZORBoI/atUE1w4fz3uDYOZcWWQi6lGE J1uUoOoe7xhVNXu54T+jroIiqJBHahItN1lVk4en1KQqyrXPFYQVNSf86bjl40GFphr/ UEFC8PeYcaE5Jc1OKVnIAtR8kCNhBkvhEgfMxjW4vhSJPlKOCLXIKpKCyCzAqULQg2PR jKOuhd5efPBKy2uxpv+a5JdksCQn98SOyNgTjjOkq3QTi1VBGr6PYrTv8ibhZk3jXZdZ HMvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=AUKZkRet; 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 69-v6si20213747pft.177.2018.10.31.16.30.05; Wed, 31 Oct 2018 16:30:06 -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=AUKZkRet; 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 S1730743AbeKAIJ6 (ORCPT + 32 others); Thu, 1 Nov 2018 04:09:58 -0400 Received: from mail.kernel.org ([198.145.29.99]:60196 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730659AbeKAIJz (ORCPT ); Thu, 1 Nov 2018 04:09:55 -0400 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 2EB6A2084A; Wed, 31 Oct 2018 23:09:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541027383; bh=/HuDTDEc3gcaDaKMXd7gMKlIbW/K1yYOSuDjjy4HTN8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AUKZkRet5c3yl0NJqmTkX5w4gynzP3Hu9DiMNP9E4W4eO+ZSMbQFvL167uhydMKYI 4zb0EY2tnJIq0tkP5tCqD6OeV802IOKnaGR/kYA/hFjgvbhBbp3TmAIeo0k+5eBBdq KqOLRSneDi/OSSKu2bvj2ogtA/bOSKY6akS+k+Yo= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Yunlei He , Chao Yu , Jaegeuk Kim , Sasha Levin Subject: [PATCH AUTOSEL 4.18 121/126] f2fs: report error if quota off error during umount Date: Wed, 31 Oct 2018 19:07:49 -0400 Message-Id: <20181031230754.29029-121-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181031230754.29029-1-sashal@kernel.org> References: <20181031230754.29029-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yunlei He [ Upstream commit cda9cc595f0bb6ffa51a4efc4b6533dfa4039b4c ] Now, we depend on fsck to ensure quota file data is ok, so we scan whole partition if checkpoint without umount flag. It's same for quota off error case, which may make quota file data inconsistent. generic/019 reports below error: __quota_error: 1160 callbacks suppressed Quota error (device zram1): write_blk: dquota write failed Quota error (device zram1): qtree_write_dquot: Error -28 occurred while creating quota Quota error (device zram1): write_blk: dquota write failed Quota error (device zram1): qtree_write_dquot: Error -28 occurred while creating quota Quota error (device zram1): write_blk: dquota write failed Quota error (device zram1): qtree_write_dquot: Error -28 occurred while creating quota Quota error (device zram1): write_blk: dquota write failed Quota error (device zram1): qtree_write_dquot: Error -28 occurred while creating quota Quota error (device zram1): write_blk: dquota write failed Quota error (device zram1): qtree_write_dquot: Error -28 occurred while creating quota VFS: Busy inodes after unmount of zram1. Self-destruct in 5 seconds. Have a nice day... If we failed in below path due to fail to write dquot block, we will miss to release quota inode, fix it. - f2fs_put_super - f2fs_quota_off_umount - f2fs_quota_off - f2fs_quota_sync <-- failed - dquot_quota_off <-- missed to call Signed-off-by: Yunlei He Signed-off-by: Chao Yu Signed-off-by: Jaegeuk Kim Signed-off-by: Sasha Levin --- fs/f2fs/super.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) -- 2.17.1 diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 742147cbe759..a3e90e6f72a8 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1820,7 +1820,9 @@ static int f2fs_quota_off(struct super_block *sb, int type) if (!inode || !igrab(inode)) return dquot_quota_off(sb, type); - f2fs_quota_sync(sb, type); + err = f2fs_quota_sync(sb, type); + if (err) + goto out_put; err = dquot_quota_off(sb, type); if (err || f2fs_sb_has_quota_ino(sb)) @@ -1839,9 +1841,20 @@ static int f2fs_quota_off(struct super_block *sb, int type) void f2fs_quota_off_umount(struct super_block *sb) { int type; + int err; + + for (type = 0; type < MAXQUOTAS; type++) { + err = f2fs_quota_off(sb, type); + if (err) { + int ret = dquot_quota_off(sb, type); - for (type = 0; type < MAXQUOTAS; type++) - f2fs_quota_off(sb, type); + f2fs_msg(sb, KERN_ERR, + "Fail to turn off disk quota " + "(type: %d, err: %d, ret:%d), Please " + "run fsck to fix it.", type, err, ret); + set_sbi_flag(F2FS_SB(sb), SBI_NEED_FSCK); + } + } } static int f2fs_get_projid(struct inode *inode, kprojid_t *projid)