Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp837674pxj; Wed, 2 Jun 2021 12:46:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyiigzIuEMwFYQeDwlXLbh8WYwKjZE/3eVk6LzWt6sHj1OM/ICoseuyaKAmkFu1p9+IYZoZ X-Received: by 2002:a17:907:970f:: with SMTP id jg15mr15265670ejc.59.1622663206054; Wed, 02 Jun 2021 12:46:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622663206; cv=none; d=google.com; s=arc-20160816; b=d1WlAmxWe92ektRoVdfRheW2QDFP9L1LDCgbBL4Traykjb9nKFbW1jq9CqMFSyMN+r Uq5bGCEluBlZzFcHR3osO1p/RJr2GyLW+vt/ZaFinBYq4dC6WFQCBTOrzGng70jCcpy2 CcR3Egc6bsbF10ptLJoQyz3cQvFuxLgKFMno/VmFCLtvXp++d7VnNQkpRgus4pUUDSvy 57UT9I5fbf2eJ2DNaBGOxzkRgjOmK8J1RWVMEv7XuVFQXFZvWuriJNJnakvLrh3UGbpa oO1NfKYdUYaOhiftSrq4EjeK180Pnn5Bj3N2xJugb9IWV9DUtRsKQUM6u+9XxM75qMYU cHXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:mail-followup-to:message-id:subject:cc:to :from:date; bh=s6bELta0yb8x4uXBHqmrBVKAV+H4yhL1NMosxHdrxlQ=; b=NE4w/Kwl2nilQBtGGNkcWiN8QfvWzqjJ90deJxcMjScRsdV/DoIFg1NbkTxxQHdB/C qA4zvHwCKpzwauB0uFOBR5KAFy3+GHa4icSwSomwuPFh02bQjXRzAbG8/fx5vSPX/YIT W/Sb2WcGv0qpP3m9nOqf7fq46sHC0WHckrKQAvFkIoVGNjGNuWr2t1jzEXFP7xG2R/Jo ebzbYcrPjj2bUbEUTRb35LPiU7WOkboOPQ6hGSHtqILozJQD7px6CDUy6WQ3Hq8LyW3q wolpl2cBMugMD2sx+iq9CkdVzopnhOjwpA6EWHIKsNDgEXYq1lOL/nABXUwjuA66K9lS FCTQ== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id zm10si592999ejb.67.2021.06.02.12.46.22; Wed, 02 Jun 2021 12:46:46 -0700 (PDT) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229786AbhFBTqC (ORCPT + 99 others); Wed, 2 Jun 2021 15:46:02 -0400 Received: from smtp-out1.suse.de ([195.135.220.28]:56082 "EHLO smtp-out1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229489AbhFBTqC (ORCPT ); Wed, 2 Jun 2021 15:46:02 -0400 Received: from imap.suse.de (imap-alt.suse-dmz.suse.de [192.168.254.47]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 11B1A219C9; Wed, 2 Jun 2021 19:44:17 +0000 (UTC) Received: from imap3-int (imap-alt.suse-dmz.suse.de [192.168.254.47]) by imap.suse.de (Postfix) with ESMTP id E98D2118DD; Wed, 2 Jun 2021 19:44:04 +0000 (UTC) Received: from director2.suse.de ([192.168.254.72]) by imap3-int with ESMTPSA id 2jzcLITft2B5CwAALh3uQQ (envelope-from ); Wed, 02 Jun 2021 19:44:04 +0000 Date: Wed, 2 Jun 2021 12:43:59 -0700 From: Davidlohr Bueso To: Peter Zijlstra Cc: Thomas Gleixner , Ingo Molnar , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , Jens Axboe , Alasdair Kergon , Mike Snitzer , dm-devel@redhat.com, "David S. Miller" , Jakub Kicinski , Felipe Balbi , Greg Kroah-Hartman , Alexander Viro , Tejun Heo , Zefan Li , Johannes Weiner , Jason Wessel , Daniel Thompson , Douglas Anderson , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , "Rafael J. Wysocki" , Pavel Machek , Will Deacon , Waiman Long , Boqun Feng , Oleg Nesterov , "Paul E. McKenney" , Josh Triplett , Mathieu Desnoyers , Lai Jiangshan , Joel Fernandes , John Stultz , Stephen Boyd , Andrew Morton , Paolo Bonzini , linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, netdev@vger.kernel.org, linux-usb@vger.kernel.org, linux-fsdevel@vger.kernel.org, cgroups@vger.kernel.org, kgdb-bugreport@lists.sourceforge.net, linux-perf-users@vger.kernel.org, linux-pm@vger.kernel.org, rcu@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org Subject: Re: [PATCH 1/6] sched: Unbreak wakeups Message-ID: <20210602194359.pxujd4rx4lxv2ldm@offworld> Mail-Followup-To: Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , Jens Axboe , Alasdair Kergon , Mike Snitzer , dm-devel@redhat.com, "David S. Miller" , Jakub Kicinski , Felipe Balbi , Greg Kroah-Hartman , Alexander Viro , Tejun Heo , Zefan Li , Johannes Weiner , Jason Wessel , Daniel Thompson , Douglas Anderson , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , "Rafael J. Wysocki" , Pavel Machek , Will Deacon , Waiman Long , Boqun Feng , Oleg Nesterov , "Paul E. McKenney" , Josh Triplett , Mathieu Desnoyers , Lai Jiangshan , Joel Fernandes , John Stultz , Stephen Boyd , Andrew Morton , Paolo Bonzini , linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, netdev@vger.kernel.org, linux-usb@vger.kernel.org, linux-fsdevel@vger.kernel.org, cgroups@vger.kernel.org, kgdb-bugreport@lists.sourceforge.net, linux-perf-users@vger.kernel.org, linux-pm@vger.kernel.org, rcu@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org References: <20210602131225.336600299@infradead.org> <20210602133040.271625424@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <20210602133040.271625424@infradead.org> User-Agent: NeoMutt/20201120 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 02 Jun 2021, Peter Zijlstra wrote: >Remove broken task->state references and let wake_up_process() DTRT. > >The anti-pattern in these patches breaks the ordering of ->state vs >COND as described in the comment near set_current_state() and can lead >to missed wakeups: > > (OoO load, observes RUNNING)<-. > for (;;) { | > t->state = UNINTERRUPTIBLE; | > smp_mb(); ,-----> ,' (OoO load, observed !COND) > | | > | | COND = 1; > | `- if (t->state != RUNNING) > | wake_up_process(t); // not done > if (COND) ---------' > break; > schedule(); // forever waiting > } > t->state = TASK_RUNNING; > >Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Davidlohr Bueso