Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp820899pxb; Thu, 21 Jan 2021 23:13:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJyimb9oBiRGx6PXaDNl/VRvawjC52/+V2WLPD/ZWJJabsvYsuy44u7qJDQi7t+1SS058j/W X-Received: by 2002:a17:906:494c:: with SMTP id f12mr2157250ejt.56.1611299637479; Thu, 21 Jan 2021 23:13:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611299637; cv=none; d=google.com; s=arc-20160816; b=nRhWVrfts9eS7VU8MaTbZs2K9WjNSL2YSOXPmrjoixAMKYADpLLaK/eZXLqw3uFFKa E25cCQ3ukVGH0XNyM/exDluYh3G7GennlXGX+dPOeCft1fEkEJ8eNbmloBf3MFv4u2bQ RpphZ3uKVAXGarK+tfvo4x2mo+I0fQIo6w7QsAeivWs8VAxAVASNVqCUuTgB0mjzXJgB tgxyYm0XTV1rkFmTw27BaSS6I758W5fkD4WROap/L0klKtXlNvQ7zaGVef+hCrleq1Im eT9ME/Kc69Vn/lgfLeEVGOL+tbGMZ75eGZcZJkAIKdT3HYYoIBhjSsBUGtX73dqbVOzC QpYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:ironport-sdr:ironport-sdr; bh=2qYSPpjcoXn2P98vLNy1Y9AZuTlbnn1Aw62loQv2aZw=; b=q4j71TPug+TrJCmkVNg8PbWJkfRnZ/ah5OrE+7gdPUzhqj5DAK94AGwZPc6Jjeb1Ke gbMHjE59QFSBPIKtPVdvkRbGo/LZ4crzaqLAAVk7lk3EsJLPdmEPjOAwfToKAbJD1eyO nf8++Sl9bL0fQqptOriMJrn2vOkuAboiBvvrKcj7mA2dxYfcArKCS+Uso5tXbdqmFTM1 6FloOc2ZOX/j1+ZccIIAKNscpnswLqTl7eMKROACyjWuy6Ur3nX/lrIz3T+YV1FiKWwR RXIdJgDAKpzqxVgvi4ms1pEHpZEKJRtNXNpwdTm/zQ/5NZE7rjH4qbNjIrB5tHBFzk8f MvmQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z18si2596629ejr.345.2021.01.21.23.13.32; Thu, 21 Jan 2021 23:13:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726942AbhAVHKo (ORCPT + 99 others); Fri, 22 Jan 2021 02:10:44 -0500 Received: from mga05.intel.com ([192.55.52.43]:54253 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726301AbhAVHKe (ORCPT ); Fri, 22 Jan 2021 02:10:34 -0500 IronPort-SDR: cvcxPBArV84pqZOcqYyCmvZ5s9fwD/wLpyMEB4/4jP07YN9WJxmY6NcCG5IQc5LiDzzHj5pAPq WsnMf+BRJadg== X-IronPort-AV: E=McAfee;i="6000,8403,9871"; a="264222005" X-IronPort-AV: E=Sophos;i="5.79,366,1602572400"; d="scan'208";a="264222005" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2021 23:06:51 -0800 IronPort-SDR: zctXTqIqtrMiJykXZZRmoEmGdTrS0YAR1L6O4CreQbfW/f84tn83kF8JhqH7TRURLOsrTMWshX T0hOhJ0y406w== X-IronPort-AV: E=Sophos;i="5.79,366,1602572400"; d="scan'208";a="427863648" Received: from bard-ubuntu.sh.intel.com ([10.239.13.33]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2021 23:06:47 -0800 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, tiwai@suse.de, broonie@kernel.org, gregkh@linuxfoundation.org, jank@cadence.com, srinivas.kandagatla@linaro.org, rander.wang@linux.intel.com, ranjani.sridharan@linux.intel.com, hui.wang@canonical.com, pierre-louis.bossart@linux.intel.com, sanyog.r.kale@intel.com, bard.liao@intel.com Subject: [RESEND PATCH v2 5/9] regmap: sdw: use _no_pm functions in regmap_read/write Date: Fri, 22 Jan 2021 15:06:30 +0800 Message-Id: <20210122070634.12825-6-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210122070634.12825-1-yung-chuan.liao@linux.intel.com> References: <20210122070634.12825-1-yung-chuan.liao@linux.intel.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org sdw_update_slave_status will be invoked when a codec is attached, and the codec driver will initialize the codec with regmap functions while the codec device is pm_runtime suspended. regmap routines currently rely on regular SoundWire IO functions, which will call pm_runtime_get_sync()/put_autosuspend. This causes a deadlock where the resume routine waits for an initialization complete signal that while the initialization complete can only be reached when the resume completes. The only solution if we allow regmap functions to be used in resume operations as well as during codec initialization is to use _no_pm routines. The duty of making sure the bus is operational needs to be handled above the regmap level. Fixes: 7c22ce6e21840 ('regmap: Add SoundWire bus support') Signed-off-by: Bard Liao --- drivers/base/regmap/regmap-sdw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/base/regmap/regmap-sdw.c b/drivers/base/regmap/regmap-sdw.c index c92d614b4943..4b8d2d010cab 100644 --- a/drivers/base/regmap/regmap-sdw.c +++ b/drivers/base/regmap/regmap-sdw.c @@ -11,7 +11,7 @@ static int regmap_sdw_write(void *context, unsigned int reg, unsigned int val) struct device *dev = context; struct sdw_slave *slave = dev_to_sdw_dev(dev); - return sdw_write(slave, reg, val); + return sdw_write_no_pm(slave, reg, val); } static int regmap_sdw_read(void *context, unsigned int reg, unsigned int *val) @@ -20,7 +20,7 @@ static int regmap_sdw_read(void *context, unsigned int reg, unsigned int *val) struct sdw_slave *slave = dev_to_sdw_dev(dev); int read; - read = sdw_read(slave, reg); + read = sdw_read_no_pm(slave, reg); if (read < 0) return read; -- 2.17.1