From patchwork Mon Jul 20 15:36:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg Kroah-Hartman X-Patchwork-Id: 237281 Delivered-To: patch@linaro.org Received: by 2002:a92:d244:0:0:0:0:0 with SMTP id v4csp2088805ilg; Mon, 20 Jul 2020 08:38:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxr8uuvULMZS3vhn/5phaLlDR1V8Ye1+YSObO0orGxlud4G8TdKqP613IYD4iG4B/GwhSDI X-Received: by 2002:a50:931e:: with SMTP id m30mr22907010eda.341.1595259526911; Mon, 20 Jul 2020 08:38:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595259526; cv=none; d=google.com; s=arc-20160816; b=c39eBXR0oSAjiueVzshpsg/APgCl/EjU7B2Iu6vFwAaCOTPS9zeHPRLwd/Tsmp87dh a4ckIMTNj4TeEpYwo2AgqVsVLSecQIGx0Pa70ZMAD3iGkExA7lUgM0wOnSbqgebFuxKb wKkBtnXUc2M+X7zCpuDGEBOcBeU/6TEyq/D+bFED7TaMqeAnVqZdsBs3kS7Ih15jYKMl kKx6zaEAFrEWojN8cnEHbvVYkpsvwqhSGgDOEdawgsdmLAHnVFuvDyvbWN5O23uHAEA1 aBPgUuDxqbBodRtXR1EY+CzQS2VZZzv6Yrzc2XuTQo6D6BE4i8WioaiSdgbvCaW0GE8T /sdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=vFeH8G8lnEn5K1W+ehAbss/Q8CMCTfP9Ncfr1X98kcc=; b=TcxcYsF4/3eP+YaZ7FufOdu8bg3Y6JWJY4u2SGCbDkZqZttS4lj6vS+x/VhZyATuZ6 6ruYoyphu+9f+w8Kf4HZ9zDnMyb7KQiF7InOn5wVSKKpCNAmfJU8zDV1UBJHf41PMcSe CKOeFF5T27aOAF4EPLBb6n0GoaQH0bSmRzahc116UBCO8nKb2gQlAWwwmBceqdSEqHbF 1fxu57XBsMd5LjQVPqa2lwU0quuHSS2Avb9YKCKgp56Yx2OOtS+zEPZAO4ZiFVEZCU1E YQMi8cxCxUQeZMzDo2I+8RPrAClMn1CId1cXXnWnfjhHtqYhoIdmG73rk4Oxy0/drbH4 VrmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=F5jSHZu6; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gv18si10282317ejb.390.2020.07.20.08.38.46; Mon, 20 Jul 2020 08:38:46 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=F5jSHZu6; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729269AbgGTPio (ORCPT + 15 others); Mon, 20 Jul 2020 11:38:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:57414 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729264AbgGTPio (ORCPT ); Mon, 20 Jul 2020 11:38:44 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9B64C22CB2; Mon, 20 Jul 2020 15:38:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1595259523; bh=PdWIbI7vkbelWceLiDpR3vy41889LxRcLx+CKRmuGSI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F5jSHZu6ujA1e39gth/yoW61JtGDdiyGcsuTdDvravA1mODtLIIwv9aOixz1nTF2g X9SKZEyUaqnV9izHDhByXuyg/k9kciapMmGaWxvwixcT+c9+wIZS7ejTte8AkzKZ9/ pZgx8WCTNCDgR+aBdPkuoOUgC9vvVGnIp959vks0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Srinivas Kandagatla , Charles Keepax , Vinod Koul , Takashi Iwai , Sasha Levin Subject: [PATCH 4.4 08/58] ALSA: compress: fix partial_drain completion state Date: Mon, 20 Jul 2020 17:36:24 +0200 Message-Id: <20200720152747.563143461@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200720152747.127988571@linuxfoundation.org> References: <20200720152747.127988571@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Vinod Koul [ Upstream commit f79a732a8325dfbd570d87f1435019d7e5501c6d ] On partial_drain completion we should be in SNDRV_PCM_STATE_RUNNING state, so set that for partially draining streams in snd_compr_drain_notify() and use a flag for partially draining streams While at it, add locks for stream state change in snd_compr_drain_notify() as well. Fixes: f44f2a5417b2 ("ALSA: compress: fix drain calls blocking other compress functions (v6)") Reviewed-by: Srinivas Kandagatla Tested-by: Srinivas Kandagatla Reviewed-by: Charles Keepax Tested-by: Charles Keepax Signed-off-by: Vinod Koul Link: https://lore.kernel.org/r/20200629134737.105993-4-vkoul@kernel.org Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin --- include/sound/compress_driver.h | 10 +++++++++- sound/core/compress_offload.c | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) -- 2.25.1 diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h index a5c6e6da3d3d4..57872c8f11512 100644 --- a/include/sound/compress_driver.h +++ b/include/sound/compress_driver.h @@ -71,6 +71,7 @@ struct snd_compr_runtime { * @direction: stream direction, playback/recording * @metadata_set: metadata set flag, true when set * @next_track: has userspace signal next track transition, true when set + * @partial_drain: undergoing partial_drain for stream, true when set * @private_data: pointer to DSP private data */ struct snd_compr_stream { @@ -81,6 +82,7 @@ struct snd_compr_stream { enum snd_compr_direction direction; bool metadata_set; bool next_track; + bool partial_drain; void *private_data; }; @@ -178,7 +180,13 @@ static inline void snd_compr_drain_notify(struct snd_compr_stream *stream) if (snd_BUG_ON(!stream)) return; - stream->runtime->state = SNDRV_PCM_STATE_SETUP; + /* for partial_drain case we are back to running state on success */ + if (stream->partial_drain) { + stream->runtime->state = SNDRV_PCM_STATE_RUNNING; + stream->partial_drain = false; /* clear this flag as well */ + } else { + stream->runtime->state = SNDRV_PCM_STATE_SETUP; + } wake_up(&stream->runtime->sleep); } diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c index 07f5017cbea2a..e788c7e1929bd 100644 --- a/sound/core/compress_offload.c +++ b/sound/core/compress_offload.c @@ -699,6 +699,9 @@ static int snd_compr_stop(struct snd_compr_stream *stream) retval = stream->ops->trigger(stream, SNDRV_PCM_TRIGGER_STOP); if (!retval) { + /* clear flags and stop any drain wait */ + stream->partial_drain = false; + stream->metadata_set = false; snd_compr_drain_notify(stream); stream->runtime->total_bytes_available = 0; stream->runtime->total_bytes_transferred = 0; @@ -809,6 +812,7 @@ static int snd_compr_partial_drain(struct snd_compr_stream *stream) if (stream->next_track == false) return -EPERM; + stream->partial_drain = true; retval = stream->ops->trigger(stream, SND_COMPR_TRIGGER_PARTIAL_DRAIN); if (retval) { pr_debug("Partial drain returned failure\n"); From patchwork Mon Jul 20 15:37:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg Kroah-Hartman X-Patchwork-Id: 237282 Delivered-To: patch@linaro.org Received: by 2002:a92:d244:0:0:0:0:0 with SMTP id v4csp2089431ilg; Mon, 20 Jul 2020 08:39:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyksdV1IeyS0zIkJ8/tRHIgk04PP5Go6lCCK/MR3IYMYlOu1w9UOt7uDqOQ5T8/UQJCZk6m X-Received: by 2002:aa7:db06:: with SMTP id t6mr22146836eds.369.1595259576525; Mon, 20 Jul 2020 08:39:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595259576; cv=none; d=google.com; s=arc-20160816; b=A6PcOC7QWObp6tm0vwnHTQn9vfRHkYoRJh7wHh26PGGithgkUtxpNhN+8fnG2H8phc HfS48U/p3ZdGYNk87hRij4X6SOpZ0SOXvYz7jwin59w8l9wwiTcpKQqlBPv9GgV1Xzft 1JfNREsZGidE4oTpMTsIFKjevGHX2J0eiQZXJ1+WIziaDza7ZzgcQLq99LTjmmOU/7uR hqDtNcVFGqt0sqT0S+TjgBRvn5SJgUMy6MTyyQo7frVunrSLHvRHh078usxjzReGeVng a4K6ap4pEdO+9mnDgwcgUIQShTeDfWfU1mXd3XDorMsF0HFod+4+9IKQ9WaTBqlLtwWR Wa2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=+vZ8+5NUn5k/8gEFM7WeowmBWIDvXEadzAv2ry2EXqU=; b=rn6/G+YjJsu21NoSOssw7NhJohyiEqAyIr7HgvWtOYcGqigdHlTefBevV4clL/kDQB kj5Ft5Mbt89nd/5H0kJcFhpgTzByPc5FW4k56axAtQRZOkjW8bQHmdMoUAyidgFDWW30 18uXrVx8aPSwPOXy4mj5K12ZeBW7FzrdFcmhGZVFDio+iA5nsqq8kzhcJDDqQo4+MMzJ JAbB8Kp5qR1nkSWKVX1ydiR3CpLhq2gH91Ky7kOm83vM4hYlzC3QeJTKL1Z+mXuctVvX ImSg9zDibMlD53nO729OpOvvpwugdqLHtfwdtctMbMEl4eOqhFl+SroGHztXVLICC2OW qF7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=TacfXhk7; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d9si10695974edv.44.2020.07.20.08.39.36; Mon, 20 Jul 2020 08:39:36 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=TacfXhk7; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729533AbgGTPjf (ORCPT + 15 others); Mon, 20 Jul 2020 11:39:35 -0400 Received: from mail.kernel.org ([198.145.29.99]:58688 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729527AbgGTPje (ORCPT ); Mon, 20 Jul 2020 11:39:34 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4E60522CF7; Mon, 20 Jul 2020 15:39:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1595259573; bh=OKdb+YSLf5LN+NT2gPEeYDmw6M4oyqgIEYE8Ybajrws=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TacfXhk7j6mkJ2szT+Ss87bTP8WgEofwRMtF7OHBqEDD9JqBYfv03MGlNTlFv7hFW hXW/i0AtEhUOFs0xmSfGzVoFiKQsa3XNDRCY3mUF/Xy+lvwUo/gt9i+yKV+wvh97Ae DTlQHl8CDce9/PStinOFBG3QQMjb/Epjflf/xhiA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vincent Guittot , "Peter Zijlstra (Intel)" , Valentin Schneider , Dietmar Eggemann Subject: [PATCH 4.4 58/58] sched/fair: handle case of task_h_load() returning 0 Date: Mon, 20 Jul 2020 17:37:14 +0200 Message-Id: <20200720152750.160417898@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200720152747.127988571@linuxfoundation.org> References: <20200720152747.127988571@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Vincent Guittot commit 01cfcde9c26d8555f0e6e9aea9d6049f87683998 upstream. task_h_load() can return 0 in some situations like running stress-ng mmapfork, which forks thousands of threads, in a sched group on a 224 cores system. The load balance doesn't handle this correctly because env->imbalance never decreases and it will stop pulling tasks only after reaching loop_max, which can be equal to the number of running tasks of the cfs. Make sure that imbalance will be decreased by at least 1. misfit task is the other feature that doesn't handle correctly such situation although it's probably more difficult to face the problem because of the smaller number of CPUs and running tasks on heterogenous system. We can't simply ensure that task_h_load() returns at least one because it would imply to handle underflow in other places. Signed-off-by: Vincent Guittot Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Valentin Schneider Reviewed-by: Dietmar Eggemann Tested-by: Dietmar Eggemann Cc: # v4.4+ Link: https://lkml.kernel.org/r/20200710152426.16981-1-vincent.guittot@linaro.org Signed-off-by: Greg Kroah-Hartman --- kernel/sched/fair.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -5939,7 +5939,15 @@ static int detach_tasks(struct lb_env *e if (!can_migrate_task(p, env)) goto next; - load = task_h_load(p); + /* + * Depending of the number of CPUs and tasks and the + * cgroup hierarchy, task_h_load() can return a null + * value. Make sure that env->imbalance decreases + * otherwise detach_tasks() will stop only after + * detaching up to loop_max tasks. + */ + load = max_t(unsigned long, task_h_load(p), 1); + if (sched_feat(LB_MIN) && load < 16 && !env->sd->nr_balance_failed) goto next;