From patchwork Thu May 24 13:52:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Rosin X-Patchwork-Id: 919880 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-i2c-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=axentia.se Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=axentia.se header.i=@axentia.se header.b="WI6f3Yw5"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40s9p853vPz9ry1 for ; Thu, 24 May 2018 23:53:36 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S970059AbeEXNxW (ORCPT ); Thu, 24 May 2018 09:53:22 -0400 Received: from mail-eopbgr00093.outbound.protection.outlook.com ([40.107.0.93]:13536 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S970016AbeEXNwz (ORCPT ); Thu, 24 May 2018 09:52:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axentia.se; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DkQ5W1pE3M71heLG6viRFUUiLqLb5/MLKRLXIlV+URc=; b=WI6f3Yw5Ka9sZ/MILMwDb2ys+/xRsmSQLl5wr18BMR0V3GkcvPz5jsj0vvKJ87NqxL9IXskkZo8/pebPaCkSGmhdV0reJIPW/niyuLmR9/3hO7DTC+iTLpLHXweQfFxJGFiMwYMd1VlRDrDBo8QBxDy+A2OcmdK8Z2HXroljeoU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peda@axentia.se; Received: from orc.pedanet (85.226.244.23) by VI1PR0202MB2782.eurprd02.prod.outlook.com (2603:10a6:800:db::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.16; Thu, 24 May 2018 13:52:52 +0000 From: Peter Rosin To: linux-kernel@vger.kernel.org Cc: Peter Rosin , Wolfram Sang , Peter Zijlstra , Ingo Molnar , Will Deacon , Davidlohr Bueso , Philippe Ombredanne , Thomas Gleixner , Greg Kroah-Hartman , linux-i2c@vger.kernel.org, Peter Chang , Deepa Dinamani , John Sperbeck Subject: [PATCH v3 1/2] rtmutex: allow specifying a subclass for nested locking Date: Thu, 24 May 2018 15:52:39 +0200 Message-Id: <20180524135240.10881-2-peda@axentia.se> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180524135240.10881-1-peda@axentia.se> References: <20180524135240.10881-1-peda@axentia.se> MIME-Version: 1.0 X-Originating-IP: [85.226.244.23] X-ClientProxiedBy: HE1PR07CA0036.eurprd07.prod.outlook.com (2603:10a6:7:66::22) To VI1PR0202MB2782.eurprd02.prod.outlook.com (2603:10a6:800:db::7) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(7021125)(5600026)(4534165)(7022125)(4603075)(4627221)(201702281549075)(7048125)(7024125)(7027125)(7028125)(7023125)(2017052603328)(7153060)(7193020); SRVR:VI1PR0202MB2782; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0202MB2782; 3:mrGCDtLK792tGRfTBeDrSBU0nWLV6luuZgYgORCUQ4mM6zXow/5Q6vtm9lywHQdLc6ng5LplyRAaqHh3NVGsrSCzyDhlHX39giUEpgbHUklL1pFFSE/4++rQFQ0xfwS53Zz+hQ6Dyzlduoeign7wyH09w5h1s9FIpsa5LStjH+rYSq28PCd7ORUiafyX5VVmLPxIpZwHTv51k5FzHhy//wWuOLCaTx0qd0v0DyzAieNbBcLZkEOCC+rf0v1n0BK+; 25:pEBr9bvuvaPKvSfY2qefHfPKSbxgPdGg0o9Ljw1MdsBO2cgV/6wZ/C45QVoDaNFTCKGjhP9oMS35Waw3cmUMkpG9SCfBmj9NLc4Cn52WQOSqArAzqbeosiotPkjJPo6PlUggmHWTMILGBVZVTVKFsl2SEcAROT3iOYJi39rp7BtQRojy7WRyEScV+BN25qMSvlIEayn/AcggjlhdRIF8167OqjJks81iSgvfUDH2FmygOwlQF4QgtfE+V6epqGaS6kkNj6WmQdc1/XPlIVRzvYQ6VDx6bYVlrk+F5esg536JFa3TfbqPMw+exNV1Bo3RqR023DrmfDkINR1m1z0dmw==; 31:6yUJgaZIwCBHAp1d7jEsNQlcd7kKrWZnjboJVI4O62y4qdyqqQPwMEzalQyAFI8+oZZUz8gzBikUetdTnw/1ZsWaPykrkzMx92buaSK051fxG0OGYlYkBEQ/KgTg4ESRRiSSx6OZng3LRe0ki+xnd9AZ0/82eMpZSW56sr3AHhd72lLY0+/2/5fEL6BteHH2tXsgtNHoj82s6FuW5lw6hodXidpjrM01VTVeqbC2zIU= X-MS-TrafficTypeDiagnostic: VI1PR0202MB2782: X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(2016111802025)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(6072148)(6043046)(201708071742011)(7699016); SRVR:VI1PR0202MB2782; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0202MB2782; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0202MB2782; 4:aSHkxjnF4AHaKIbO9JWvx3akebabvmuBa/GysPoaxa1PpoVDMcm9gzfpIT9GuSha8esKNlqS7pZ47sjN70dHSCybbfa63DY+0jXloMuzIJk2BljKcDRXumI5eG0terTAPLthHHYaNe9i5WxnYsYv+gRPCivjkBpE0soYXWqiMLTsAPL4hOKTkCsOeA2UvPuD5p9iZoFpuUrAoXZUzuHPt41lQaxbC2Kac/8/OAzdG0WJzDU5IREU3u7KeKPt+bJcEXS/2dFknRc3DC3EPtOhnA== X-Forefront-PRVS: 0682FC00E8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(346002)(39830400003)(396003)(39380400002)(376002)(189003)(199004)(25786009)(8676002)(8936002)(305945005)(7416002)(86362001)(7736002)(16586007)(6486002)(76176011)(59450400001)(52116002)(51416003)(575784001)(2361001)(26005)(81156014)(186003)(16526019)(105586002)(316002)(6506007)(386003)(81166006)(54906003)(106356001)(48376002)(50466002)(2351001)(47776003)(50226002)(66066001)(74482002)(6116002)(68736007)(478600001)(956004)(486006)(97736004)(476003)(3846002)(6512007)(446003)(11346002)(4326008)(1076002)(2616005)(36756003)(6916009)(2906002)(53936002)(6666003)(5660300001)(42262002); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0202MB2782; H:orc.pedanet; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: axentia.se does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; VI1PR0202MB2782; 23:M4wbFTsIfqmpej3uhmMi4kQulzCbpXFaPsX0A02MCRRnrpYBoW5WwCpiehCckzsnQO9IhYI0JJGRgr23uE7Nvr/0qLnZ47RMviFw81YrlVsslu6ACAXg1ovU4cAbJvn7xTkGFVFjQPUH++oM2MPhqAEgPGXv3IJtnEqCEjaDH0Il9u+A88ggVXca42mOvU1uUGuvGt9nwkY5KZX9r0015FoIFP3swqRBJHSmhuIG87V3sw/dUf9pA3civJ4TkSPLNnW6uuXDGwV+l3FcEXzoLTKtU12afoabkgvxNOq5kUzrhGEFYzqBssiO81fGItcEX6K+G+KETaF5FlvjRD0p9uVZi7et3QdEgzZmJ8YUBtvnBN31r2uE+OO9q1Gz1YBF5RQYN5oAY5jggDIhdIKVzsYznWNx51k/Qg48LJ0YhE/KKgXeAZM4vNrQP+kwfZwfQSD/OTNIAmd9HY29CaL+HA54EJCXEcZPvD4h6gXQV7rnW1E618rUUG1ewX0wBiycgGgRt3HBd1GXLXWGBfL3zHZ1kBxBbas2Zm8PJ8Dg3Yp+JIt9ADf/nhBOFDfWTBcQcVzYFaOFIh7zE5DyNR1b5D8Hn/JYMCTPusyw3PsU9cEuVA4NJaRJxIJhtTSa4qlH8fFCLx+pqV4fjSO9yYJnhxVBBO4QW/3dPWYI+SUOlvQi4/cxHZW28jr8eBsP1fbMW71OoUHRtEG+aDnASHCGYzLAWoK1DqWnlytgXiZxDeEBu7ajxSp0HkaiguwYgToEpKfIKvQMLhGgj+uEsPDKbTZjjMyX1VXVVPnvAwza41fjoV4/yPVuWbRW/0VK7Kte3TWAkN5oBOzB/Lof9DJsNJbgBYyNWNP8dRjUxTHwVoIHkkPYiZ1h/kznCqYs3MafZSPOOoORDuLMArVj6Fws5+bumrQHtqnXzuHLqn5nYSHw0v1Qm8XBRouQBTfBHkKpY5EYIwNDSoskFs9zbafJ230PY1TVH/xZhhqi92fxC0KbqrXUSv7u3v8UZu0wnb/loYitgJTVXImfQ+MUE/LCoI+jaGP76sLtEDyzE0a5FMkoGDrnCAAoK8N3ZEaeCgb9jtuFumSfHcmumDoi3UcGztBeitzzSAZfLHH/DRB5tIAEfTkf4QGBIoAjVTXlT3MgrPnKaDtGS4Ztp56Ox+YLrrQkaOpb9O0+HM5XYxZOFHGuAKki1HwU4VQ+Zj8P1w6hX0C8jEazeCkZQUFp9oKpcqifj5JiNCHWz+kLBYRWH7qJd5167kK4gwFHHHkWdw8vMIBK5CQrWHS4XcWDY0CA70rswlfnmYc2cN5FZL/3c1++enGUwG0pL8ofI+MAto2WjvTBWvY9s4xayk+n5OVwUew4tGuWqiiI6yTitFdNhKo= X-Microsoft-Antispam-Message-Info: l8a9SFeUgqSg2mOtniyMyfY7tScZJdQPHPenyZszOxsO8VCPVyDkYY61TR4u08JFeXeirjwm8k876po3Ig6VNDxm0RIZdFHq2rR/UCJFVLo94d6gvmbrld4SOcI+KC9ubVmpdijvqfcS9OmIrhzTjSb9shSbrxv3pt3qtAGNd7yI0O+F9Fq3geNqEPjqzfZq X-Microsoft-Exchange-Diagnostics: 1; VI1PR0202MB2782; 6:Y1ha61CA5+KKjWcOK3LqgWX/lgtmm2jm9AhkRH2H8nBRanoG+rZKXu8zX2QzhZafPE8AZW9ATjxkJeaAVrSkqGdsg07ov2xOtl5zvToeo5QoAkhAf6p0h5Wo6YB6TGgKAfy/HjvwRBN860nymCUuxKon9lqtGgGZjHR0zSukxVP54dA81tURMNWENzg1IcTFcgShsizze+GbRvN9JwbybLVFvT6yljJ2wp2vFWxzqao0Yq7H94YS+wi0XzgwlMriUAwFddbKSfBJ840PdEmaxar/0JXVMcwAIqs9S93Fgc6WEhgwCAvgyRj9Fcx+wDyGPOBe9UUKxMMwE0s9NjPM0VCw2NiRcmRNVtl35XK5N5HwTA84eidi3trIT2GZfk6xsuJtRlN6c6Rtjovm52HXb6hoPfomXxyrLJYrH6H4+J1NrwUKAWoTmVPGWeMVIU7oPk2kANExDnCV0k8c6i69NQ==; 5:HEUylAJhmgUH77+fM0Yj7g8LyJhnVO6+mPAlO9fraQBybiOIn4EH2Y6PpIqH8jF63vajh6O599EymHw0LUVRWHekUoe2NPDjG4wYayyA69x0qB/EsDxxFk3viytLEatc7lat650HE8YYgy5bVFsIZTgYVMs3Mjae5Nm20kOj5X8=; 24:Uw1bkxWOh4LgU7yBTZzB44OTqDTeQkSK8NLZ2Q7go57nWDqM5G16HA4aE7Y03izBCx9OxrCZwNLRu9UBr7siZJeDLcw6r/yxrZGU0AbZSMI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0202MB2782; 7:+7BjnRu3RusfNAvn98Ze0aDlQvhDrVrDim8xWkRj1rijMbyKsgA7g8VlPs9gkiztYZWVXFDNZd88tI67KBfbvj6NhaOK9lD9wUIexKVsNg0nIrYLAM6ckVk0ZLkPZ1nbJBVDVpsXAHGFdWdFg3xR9ORdYNfkgQpmunVYISRXBrpyTnMbq+wwLuA3LD9Cz20lhq690nvIF9NmS/5t1P+A13jvSPhgqyNJWUhFVZ2yi3SlYkXYmWt7ier1C6Y/+g2+ X-MS-Office365-Filtering-Correlation-Id: 1a517364-9da5-488e-facd-08d5c17da5a4 X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2018 13:52:52.7074 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1a517364-9da5-488e-facd-08d5c17da5a4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4ee68585-03e1-4785-942a-df9c1871a234 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0202MB2782 Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org Needed for annotating rt_mutex locks. Signed-off-by: Peter Rosin --- include/linux/rtmutex.h | 7 +++++++ kernel/locking/rtmutex.c | 29 +++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h index 1b92a28dd672..6fd615a0eea9 100644 --- a/include/linux/rtmutex.h +++ b/include/linux/rtmutex.h @@ -106,7 +106,14 @@ static inline int rt_mutex_is_locked(struct rt_mutex *lock) extern void __rt_mutex_init(struct rt_mutex *lock, const char *name, struct lock_class_key *key); extern void rt_mutex_destroy(struct rt_mutex *lock); +#ifdef CONFIG_DEBUG_LOCK_ALLOC +extern void rt_mutex_lock_nested(struct rt_mutex *lock, unsigned int subclass); +#define rt_mutex_lock(lock) rt_mutex_lock_nested(lock, 0) +#else extern void rt_mutex_lock(struct rt_mutex *lock); +#define rt_mutex_lock_nested(lock, subclass) rt_mutex_lock(lock) +#endif + extern int rt_mutex_lock_interruptible(struct rt_mutex *lock); extern int rt_mutex_timed_lock(struct rt_mutex *lock, struct hrtimer_sleeper *timeout); diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c index 4f014be7a4b8..2823d4163a37 100644 --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c @@ -1465,6 +1465,29 @@ rt_mutex_fastunlock(struct rt_mutex *lock, rt_mutex_postunlock(&wake_q); } +static inline void __rt_mutex_lock(struct rt_mutex *lock, unsigned int subclass) +{ + might_sleep(); + + mutex_acquire(&lock->dep_map, subclass, 0, _RET_IP_); + rt_mutex_fastlock(lock, TASK_UNINTERRUPTIBLE, rt_mutex_slowlock); +} + +#ifdef CONFIG_DEBUG_LOCK_ALLOC +/** + * rt_mutex_lock_nested - lock a rt_mutex + * + * @lock: the rt_mutex to be locked + * @subclass: the lockdep subclass + */ +void __sched rt_mutex_lock_nested(struct rt_mutex *lock, unsigned int subclass) +{ + __rt_mutex_lock(lock, subclass); +} +EXPORT_SYMBOL_GPL(rt_mutex_lock_nested); +#endif + +#ifndef CONFIG_DEBUG_LOCK_ALLOC /** * rt_mutex_lock - lock a rt_mutex * @@ -1472,12 +1495,10 @@ rt_mutex_fastunlock(struct rt_mutex *lock, */ void __sched rt_mutex_lock(struct rt_mutex *lock) { - might_sleep(); - - mutex_acquire(&lock->dep_map, 0, 0, _RET_IP_); - rt_mutex_fastlock(lock, TASK_UNINTERRUPTIBLE, rt_mutex_slowlock); + __rt_mutex_lock(lock, 0); } EXPORT_SYMBOL_GPL(rt_mutex_lock); +#endif /** * rt_mutex_lock_interruptible - lock a rt_mutex interruptible From patchwork Thu May 24 13:52:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Rosin X-Patchwork-Id: 919879 X-Patchwork-Delegate: patchwork@peda.user.lysator.liu.se Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-i2c-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=axentia.se Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=axentia.se header.i=@axentia.se header.b="Ghnez7wb"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40s9nc4SSCz9s0x for ; Thu, 24 May 2018 23:53:08 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S970069AbeEXNxG (ORCPT ); Thu, 24 May 2018 09:53:06 -0400 Received: from mail-eopbgr00093.outbound.protection.outlook.com ([40.107.0.93]:13536 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S966066AbeEXNxA (ORCPT ); Thu, 24 May 2018 09:53:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axentia.se; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bnjFxM7Xfo1o836R6grJp2tKFNFTiInQt0KAD0bU6jc=; b=Ghnez7wb+Pjp2fPGYUuxqETCQKLk6HbZmIacTvfdGQuQaDkDMD7zBAYqoMgv1ZNNE38vIZvIVj8T+u/ysSqnj+pnEiy0ASuLFYBhtJT12X+Prvi76O6LINlU7bCDmVc5x4QrEX2Jvjm1YIYiq61ZFDFsCA2njBPNkOcEtntvay0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peda@axentia.se; Received: from orc.pedanet (85.226.244.23) by VI1PR0202MB2782.eurprd02.prod.outlook.com (2603:10a6:800:db::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.776.16; Thu, 24 May 2018 13:52:57 +0000 From: Peter Rosin To: linux-kernel@vger.kernel.org Cc: Peter Rosin , Wolfram Sang , Peter Zijlstra , Ingo Molnar , Will Deacon , Davidlohr Bueso , Philippe Ombredanne , Thomas Gleixner , Greg Kroah-Hartman , linux-i2c@vger.kernel.org, Peter Chang , Deepa Dinamani , John Sperbeck Subject: [PATCH v3 2/2] i2c: mux: annotate the nested rt_mutex usage Date: Thu, 24 May 2018 15:52:40 +0200 Message-Id: <20180524135240.10881-3-peda@axentia.se> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180524135240.10881-1-peda@axentia.se> References: <20180524135240.10881-1-peda@axentia.se> MIME-Version: 1.0 X-Originating-IP: [85.226.244.23] X-ClientProxiedBy: HE1PR07CA0036.eurprd07.prod.outlook.com (2603:10a6:7:66::22) To VI1PR0202MB2782.eurprd02.prod.outlook.com (2603:10a6:800:db::7) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(7021125)(5600026)(4534165)(7022125)(4603075)(4627221)(201702281549075)(7048125)(7024125)(7027125)(7028125)(7023125)(2017052603328)(7153060)(7193020); SRVR:VI1PR0202MB2782; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0202MB2782; 3:luXPWjR/wAjxa1dDDBAvo4qULH4NuPvQWLQ7Cxt2zfoVKPsXMpBA46WWbju7Fad5fcQL8D2Af4ILgM9PomOg7vrvS5P7fFWLBit1FYlahG0Ij2mcFiBREMdoc2miBZI7pIR3CSXiyNYEnm0A+mdJyGCIXWCDeio8q9n7Zcflmoc7HgUekKBpD7c+sbU89FcdI3fdlnxcv7nFkdw+Ny4vENygKNZoElGUwSYdT0JGDA/KQgS4Ehdq2aV/AgnnSUNN; 25:AOAd3PQXofzzFP7/fT5OtTrf7pSGtBSaqfaxgEX2ClP+BJzYDlyNw8ZBftgEgtM5V77ybIgMqNy8LoOZLaNkyMU5CwVVDmZj5A93ul7CdfrczuhMNR8B6LlIEMKMCbi0fHWAw/fgZGPAdrQ4hQ28jcvy16et6YJc8Clb/ZZcfaVlHELq82DuD4yXj0l0kI9JPuE36lUD/3nBDfTbo8s5JqwXMw4k50Pz7ydW4LVBx6Wz/uKvo6O8H/k4er/jM3lKmcgk+x78mkhATQ2FWG9+M5GrzwRDgHJ0A+vvB3yNQk+SxoaNX94LzutJqlWgYNfr2GDju4hqkgu47Ucw/gb/uQ==; 31:rOIv2AbsFsiWrcUYqdLsLMiVasYUQVa+HPhfrEJj6u1FlrR5mY6JR5dV+f2doXhjYBuTWQGN/pPQGIBAp08KfbNmvsb7YuFx1Nti469ggBUtCNAG5J7+L3KzH+vsUjb9+R20+yE7puKFjC2HI48t2Y3kw+iv0SRJZLe1kUulxbFU+gBd5NTQMaIAxbGk3uf37tiAEn+gjexbPQPCn5zNDRlzS1IAlVNI5zQkFjpCL7w= X-MS-TrafficTypeDiagnostic: VI1PR0202MB2782: X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(211936372134217)(153496737603132); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(2016111802025)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(6072148)(6043046)(201708071742011)(7699016); SRVR:VI1PR0202MB2782; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0202MB2782; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0202MB2782; 4:PxdhV4FRiBG9On9B5rLlyQf/mCWhvtmhg2EEnd/uWfBr+Oqif5af9mzjxd5xHFxqfnioUTUKUXNuDQeXpEq2QbtKURnV6VLX2M6j6/LdoLq+rdPqBKGyzDjiOvDNMDuGB3DqDIt0ENWNf8uEHzR4GKBw7xDm46ugxXFWVCCqTanvWepEHXasJDx8yLfRv9/iaIKsB+I+fDp/lluVsu1hiqBlH9LFqPOX5gfOYjpSyvoFYiMrg+f5T1/69X86CsHGy5ojmXHJaYEdOKlUE5ZJL7t3qXDZxn8ODP/Q3w2vKfj9BQV+XND46b5mRlBf32UN3qut1b3gN9WXmMvscz2WaILs3qb7PHrejSzgHP9r9ec= X-Forefront-PRVS: 0682FC00E8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(346002)(39830400003)(396003)(39380400002)(376002)(189003)(199004)(25786009)(8676002)(8936002)(305945005)(7416002)(86362001)(7736002)(16586007)(6486002)(76176011)(59450400001)(52116002)(51416003)(2361001)(26005)(81156014)(186003)(16526019)(105586002)(316002)(6506007)(386003)(81166006)(54906003)(106356001)(48376002)(50466002)(2351001)(47776003)(50226002)(66066001)(74482002)(6116002)(68736007)(478600001)(956004)(486006)(97736004)(476003)(3846002)(6512007)(446003)(11346002)(4326008)(1076002)(2616005)(36756003)(6916009)(2906002)(53936002)(6666003)(5660300001)(42262002); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0202MB2782; H:orc.pedanet; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: axentia.se does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; VI1PR0202MB2782; 23:5tjFAnEJnEp29ibaWKNbXF7X26k3nGAsk4cBX5zoldnjUfHDlR1uPDnX5HJXzZlbfkEu0on1vt2tS1yfWgf4Cd0gM57WjHvSmmQ+TIB9Dx2cp7Fy7C9dBWKDOWyb+zVSg1vA/s4w8r5YQDY4gXNqGvfRmGh9ppUNvlXpkCxTKB/SR/EgwzqjuxOG7yj25VVseGTdUD+NOyQGxnSnbwR4KaOfVhim9Il3snFj7fSaMNBClz2gNH2Qa2tcmpzheOgOZmza48fG5cmGF5cthEpY8vYSiSceZRXgzgNLx84/pz9MNzbobGuj+PMWvEgOEq7Xn8Cg5kKLxKsjkrrgIuCm58R8QX4UNkRZG9NFShtS0m7XB/2GSWvknBCcCC0MxVx+VY22w4AVK72rw9FhNBtXRLDCnIHs/P1SzJ+4LHPA1yCxal30rt66O2rYWfodWRhrsMqXk1W3/VatuXh4i7+WtjgyUg0tg2DUGUPmSxjAe7JMGrR1g91lNc2FvvYtPiJJuj5071JDSnTR/4DuWCJfYPyijc1SuaiMjSfgbErMMEPt0hAAYEhBFadUUkYSUMoIBVpOjWjbiewBJ/62WGzAltSv6OwIohYAq+b9GZ0MBDN6VfbRKtrTIfsxW7n9tmTWZv2ihKWm8zQiqDXwykFXcOwsrRaeA2Jv340526M9ozUkJ+1x3B9HOpbMZ8pUl+HpbFtfPAbMyCMokBsn2G2hRP72PODbblajiBJjsJ/LgFLL+1dYVZFG3X9KbYZo9W13wgC2KPoau8uGQ3g394DUdSGmk7KTWk2SdmOr9ieHIBCoxatrqjy9GvDtR5110+B7SOk1VZ92gdI/GkoxSHovSsR9kunKDxt9OHBJK9AildOJv+SxTa9U5z+gjdnxLD3A8RXMNLRNgmIJAG/2+aRvUIIKMNT5UYviPbuYVQ6JP5KEaSfQD+NjV1IXDDiUm2EBPqxkyAyrj5+CVpq9W6KHR6GltdRpmUUy84AM0M9AJcF0od9npnGd7yJy+snau8j+ihw3yFEAv6IfV07JGzZKfSNCCqLVId+eBzsln1syEBTb8LOpiNn5GCEn3mo+Vir9ven6xsa5D8SB89tl9RN/PoY/6GZ7WRslBFYQVxbw6ozs8Z4SDsFeqoXWj/F74DfCPjQ4V6wh2MReZHn9Ytui34jCLSywzdWPrFms+1S0G4maNdP+OkO8w5+214CvNAv4tsOYs7rSv34BzXFItveX2Q9KIus538pUpY8v3tE54WwLL34lK23jRvSPj8HyysMmHFgWZg8aANOMCrcGQ+XSQfZ15gvctxrE/r34N4Q377eF4pZ68Sx0xHbVb4FrgYq7 X-Microsoft-Antispam-Message-Info: WUUtI/P7kLxDrIkYDtr62p2MTn8l6p8Q9FmJtYcnbM34vKob7FG4dIblMkgKSjxPjKYu0gQjGH8lAiNJFLfuQbhsnDqVPYIdxF2A0vdQnyZhTyoFiUcSOk+W/O886U88x6NltBvlT5o6SsajozrUTvektFPS/GXt5FBpa9XLtJR6Ql2k+Hl6/VOseqM8/us7 X-Microsoft-Exchange-Diagnostics: 1; VI1PR0202MB2782; 6:spnEOfKEu5rpft64MWy5JKcEwZnFfCE2TwOMACrZb/CX/TJjYeyQGQGgIEHc+GUcbOmYve1/JMnW2Zu/L9BJQKt2rZCa2ryjS4A9ph1HTLIHxCKQ6smjudnret1uabCxJV4kdivsw4kUKbrxBzmruouhSdGuRCwK5G3qG+7Or27UAtBKkKZdCj1RaR5vE8Mbavz3CW1084NG05fZab4eYvomb87iwqKFfU7sDzy7QXXd3/m3n9SkizASnyPtApQqLHpCTs/coRRQ1/DYk3qjm2W5QEGefZzerDOsGkyZz3UulHzdpg/RSasz25g8VHM7RWexeHeLUBnWDXCBoTOJcVqud9UVlocSipYNL/WcHMqzeULO4qutbdlpFkABqG1/uNAlRSVhfG32nIoQ7UfcC+oirMRrOoUFeiqaLFrJE/AMqay6XOiR4JMo/2aeFL/wCqpa49QSlVSuZTod3ss58g==; 5:l+GBPVcoLp/+mM6Ym1l1fdYou+t+z7t05XxyRa4dHJ+DOAgDpSkoA8Zzy4+Hfjny3AUwYpk9xbDf55Rb4iaDsFVxws6ZKNZsXAdmw5TWDxSnAd5c14zpX8J7Q4S28PoAoWOvSbrUq7w/Vb6luMf55LPqOEbEvkerj59Ukm0u7cs=; 24:jx30VrnhMphW2pdaDLSdNTrERWW3Is8JWUMogZ5oYyg2OBK3uGV/eeKin5fCoy7ExfyQOacTAUatSrEIuc/CPwttrW+7+DK4fkz2/kTVEEY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0202MB2782; 7:VRiQnX9R/7iNblT0FMjvZNk0jwgvHlY88E4YBsfHS8L0Ku6GMfzjwiuIlAE1ECwCkiMYDECKW+FTDKGTEoSnZTuvvmAVWzIGynsJOiNggrb70Zzklal7L9tHJ6QiNmFXOKk79z8PvQS0Cmd0T4CxrbK0EFJjUPiFZsq2pRgAxgOQMEvxYp/A7GCXll1/toVSSjWOO3lMBNb0yPSUgqHSH3GYHr9Du841qLs0HJAKEGNrYe/HuXWycgmujrk2RKcW X-MS-Office365-Filtering-Correlation-Id: 3cd320f0-7bbf-4060-0278-08d5c17da875 X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2018 13:52:57.4262 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3cd320f0-7bbf-4060-0278-08d5c17da875 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4ee68585-03e1-4785-942a-df9c1871a234 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0202MB2782 Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org If an i2c topology has instances of nested muxes, then a lockdep splat is produced when when i2c_parent_lock_bus() is called. Here is an example: ============================================ WARNING: possible recursive locking detected -------------------------------------------- insmod/68159 is trying to acquire lock: (i2c_register_adapter#2){+.+.}, at: i2c_parent_lock_bus+0x32/0x50 [i2c_mux] but task is already holding lock: (i2c_register_adapter#2){+.+.}, at: i2c_parent_lock_bus+0x32/0x50 [i2c_mux] other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock(i2c_register_adapter#2); lock(i2c_register_adapter#2); *** DEADLOCK *** May be due to missing lock nesting notation 1 lock held by insmod/68159: #0: (i2c_register_adapter#2){+.+.}, at: i2c_parent_lock_bus+0x32/0x50 [i2c_mux] stack backtrace: CPU: 13 PID: 68159 Comm: insmod Tainted: G O Call Trace: dump_stack+0x67/0x98 __lock_acquire+0x162e/0x1780 lock_acquire+0xba/0x200 rt_mutex_lock+0x44/0x60 i2c_parent_lock_bus+0x32/0x50 [i2c_mux] i2c_parent_lock_bus+0x3e/0x50 [i2c_mux] i2c_smbus_xfer+0xf0/0x700 i2c_smbus_read_byte+0x42/0x70 my2c_init+0xa2/0x1000 [my2c] do_one_initcall+0x51/0x192 do_init_module+0x62/0x216 load_module+0x20f9/0x2b50 SYSC_init_module+0x19a/0x1c0 SyS_init_module+0xe/0x10 do_syscall_64+0x6c/0x1a0 entry_SYSCALL_64_after_hwframe+0x42/0xb7 Reported-by: John Sperbeck Signed-off-by: Peter Rosin --- drivers/i2c/i2c-core-base.c | 2 +- drivers/i2c/i2c-mux.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index f5ec6ec6776f..1157a64c7be3 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -615,7 +615,7 @@ static int i2c_check_addr_busy(struct i2c_adapter *adapter, int addr) static void i2c_adapter_lock_bus(struct i2c_adapter *adapter, unsigned int flags) { - rt_mutex_lock(&adapter->bus_lock); + rt_mutex_lock_nested(&adapter->bus_lock, i2c_adapter_depth(adapter)); } /** diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c index 9669ca4937b8..7ba31f6bf148 100644 --- a/drivers/i2c/i2c-mux.c +++ b/drivers/i2c/i2c-mux.c @@ -144,7 +144,7 @@ static void i2c_mux_lock_bus(struct i2c_adapter *adapter, unsigned int flags) struct i2c_mux_priv *priv = adapter->algo_data; struct i2c_adapter *parent = priv->muxc->parent; - rt_mutex_lock(&parent->mux_lock); + rt_mutex_lock_nested(&parent->mux_lock, i2c_adapter_depth(adapter)); if (!(flags & I2C_LOCK_ROOT_ADAPTER)) return; i2c_lock_bus(parent, flags); @@ -181,7 +181,7 @@ static void i2c_parent_lock_bus(struct i2c_adapter *adapter, struct i2c_mux_priv *priv = adapter->algo_data; struct i2c_adapter *parent = priv->muxc->parent; - rt_mutex_lock(&parent->mux_lock); + rt_mutex_lock_nested(&parent->mux_lock, i2c_adapter_depth(adapter)); i2c_lock_bus(parent, flags); }