Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp1156362ybb; Wed, 1 Apr 2020 17:08:53 -0700 (PDT) X-Google-Smtp-Source: APiQypKAIhBJmxcEclUlCpUrm7VOH9awIsYOBgu8ypQEh1agyKw/SLZdC5mXODuyCc21UAyFf8Lf X-Received: by 2002:a9d:247:: with SMTP id 65mr364846otb.364.1585786133170; Wed, 01 Apr 2020 17:08:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585786133; cv=none; d=google.com; s=arc-20160816; b=St29dZgZLuRHgq26jHoDZQxy1nKIgcuaZHvWlcoozsm8Y3iBUvH3gqRysYRy2vg3Mm tDvZF5zQbw/7E7for7+uzDi7x1gu8k2J1KN2ce/lBujsAPcBhJ/Y3R39DBT6J7neJLXS Q2JNraGCga84jYkvXjqk2vqg5Pco2enY04e5e32v0EZGhMCv60oL0Vcbw4pMezNbdVQZ NQAJH+7vKKAv/iQ/qHR3Im6Jk0m2HRNfJuqdNJi8Xfp9xMhRR9owUQrtt0pgkO19/IvX XBP/zTO86StixBHtZmzBLV91H+glNFiUuMa5S/UUWp4IeHuvEYthKZvLPuQ+y6LI10fz e85w== 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:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=N4lUFYhSPSno/B7zHZ88HhgsSs6cCcRd0Ct0S+LW7sA=; b=Usc9YahZa3UZfnEdhU0Uy2Pa2IWBpr71giJwnXM73uzxRFnlLeDj5Le7ttyAk0qbfM Ec6jKjxNRINU210zFaL+oT1+2L00hcWU3oRKfR+1WcSfTZ81TsDnKAxxHkoRZTz6dPR8 0WJv0e3V+36FFvvMqgzHFgPKWEf9pE1hSdFg0jdZrQAgIEj6FKse9JEJH/a3Y1Q5r0XS RR53JI1m4AyvDChoIlIYYGPgAppxbPDZC8oRhrx0UuzA87DpBnXkzqsiiMd1OyWL8Wy+ 3UOn/ToQ+GQ7+77Q+odKWyVbU43vW/e3xpkKZITM8iefgr9F3LBKY7c9vfarmKlB8Kcd o+Ug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=a0jhSZQZ; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h6si1516072oib.246.2020.04.01.17.08.40; Wed, 01 Apr 2020 17:08:53 -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=@gmail.com header.s=20161025 header.b=a0jhSZQZ; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732664AbgDBAHs (ORCPT + 99 others); Wed, 1 Apr 2020 20:07:48 -0400 Received: from mail-il1-f195.google.com ([209.85.166.195]:34722 "EHLO mail-il1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732137AbgDBAHs (ORCPT ); Wed, 1 Apr 2020 20:07:48 -0400 Received: by mail-il1-f195.google.com with SMTP id t11so1886377ils.1 for ; Wed, 01 Apr 2020 17:07:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=N4lUFYhSPSno/B7zHZ88HhgsSs6cCcRd0Ct0S+LW7sA=; b=a0jhSZQZpIvwANQUvz/KpGmiptmEPARdT86t9EaS56dP+5s0Tk0cHTy2seWymQet4k aRsf8fMNXc9ir9mjC4f34q1x9EUaT8ofr8NyJT6U0W2WsjK9xL3qwZh5qb2TcpBoQFzj 32r8BjkXGZssAjmze28jBiKIGfFNt93K+4DpS1lWNPJQFSbE5/IXcOt6vTIiM/+Hxbi9 sAA4YneljKS/tnMw0p3rFhnsiuqYgj0DvyHZJbX/yIg1CUzKxuQ5UH2pAJae7Cs5laSx ZJfR8RcNlaHQIh0GTpiTONEaCe1nX2vvfoapd/8X/PfzuA3e2hiy6FyG55UnETrwVeYL P5Ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=N4lUFYhSPSno/B7zHZ88HhgsSs6cCcRd0Ct0S+LW7sA=; b=dFZnGyPBJyfg0iMpyjCulDfKXt3o1OGvI1hUqi/FCqO8sg8lkNddEBicbFRTNUq42C HO0q7TVJBZsUVqwg2cZNNa1mIxnQRS/rYnCTJqEho92dBXpqzFN8vQbo/HH3U9cg6+6a Jn7modAqNu3/keOcy8QKjUyXq9/JQosh6S2ZGZzLRKsRVTIyEXlywcG5hxmzVoDs/PFO KnxqSFVih8SSAI1MInI1V+jAAKdojVPXlxuhoA64YC8LWcPoXPArdXZzJxFjGMxY9ROG CTLlxbSw2oGFhwtdnmZ45NJXEWvWXbnUBhyG8sp3/B0rN0TyLBblX96sUUQz2SqwEyNl xPuw== X-Gm-Message-State: AGi0PuZosEc1xq38CyMLY+IDG2FHe1gtXpvNAMID2NS1sauv+6z9VKcd hflOaJffo/7mI1HeJmzgjkvZ3nm9FRO6GGtgo+bIZ9Ij X-Received: by 2002:a92:3d84:: with SMTP id k4mr617537ilf.47.1585786067160; Wed, 01 Apr 2020 17:07:47 -0700 (PDT) MIME-Version: 1.0 References: <20200327074308.GY11705@shao2-debian> <20200327175350.rw5gex6cwum3ohnu@linutronix.de> <20200401130346.e7cdsqgxppa6ohje@linutronix.de> In-Reply-To: <20200401130346.e7cdsqgxppa6ohje@linutronix.de> From: Lai Jiangshan Date: Thu, 2 Apr 2020 08:07:35 +0800 Message-ID: Subject: Re: [PATCH] workqueue: Don't double assign worker->sleeping To: Sebastian Andrzej Siewior Cc: kernel test robot , Thomas Gleixner , Ingo Molnar , "Peter Zijlstra (Intel)" , LKML , LKP , Tejun Heo Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 1, 2020 at 9:03 PM Sebastian Andrzej Siewior wrote: > > On 2020-04-01 11:44:06 [+0800], Lai Jiangshan wrote: > > On Wed, Apr 1, 2020 at 11:22 AM Lai Jiangshan = wrote: > > > > > > Hello > Hi Lai, > > =E2=80=A6 > > > 2) wq_worker_running() can be interrupted(async-page-faulted in virtu= al machine) > > > and nr_running would be decreased twice. > > > > would be *increased* twice > > > > I just saw the V2 patch, this issue is not listed, but need to be fixed= too. > > | void wq_worker_running(struct task_struct *task) > | { > | struct worker *worker =3D kthread_data(task); > | > | if (!worker->sleeping) > | return; > | if (!(worker->flags & WORKER_NOT_RUNNING)) > | atomic_inc(&worker->pool->nr_running); > *0 > | worker->sleeping =3D 0; > *1 > | } > > So an interrupt > - before *0, the preempting caller drop early in wq_worker_sleeping(), on= ly one > atomic_inc() If it is preempted on *0, the preempting caller drop early in wq_worker_sleeping() so there is no atomic decreasing, only one atomic_inc() in the preempting caller. The preempted point here, wq_worker_running(), has already just done atomic_inc(), the total number of atomic_inc() is two, while the number of atomic decreas= ing is one. > > - after *1, the preempting task will invoke wq_worker_sleeping() and do > dec() + inc(). > > What did I miss here? > > Sebastian