Received: by 2002:a05:6a10:8a4d:0:0:0:0 with SMTP id dn13csp980332pxb; Fri, 13 Aug 2021 10:31:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyBpyPoJUhHwbbIdeQQujBI/+Zip49QuloRSpmyIXAkyfgBTmqaIzucOySZuEzSe22FOEQg X-Received: by 2002:aa7:c898:: with SMTP id p24mr4485342eds.120.1628875916056; Fri, 13 Aug 2021 10:31:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628875916; cv=none; d=google.com; s=arc-20160816; b=xIkKYmC3/g5q4VF8NI1xNXa+4wbSAyneZQ9tf+85rQCVO2JQfA8Roiy/SYLJzO1fls 9zbJfyrMAd/T47F+jVwKGwEImG4H9MoeQMr633IPiJiIo1Wfuy1Xu2ObwbdmoQ+kkee3 ltqSGLBuLPDpudSugv53f1an0ewuxDUqkaz74s7jO5DD43KCrt3aATiApQ4e4CBubNMC cXqzSF9JL/P0bfpaMkHqVUyq2SxUeL6QpcqiUOnd5deDVkm8EF+f0U5B0/6B8dMbPCiq z3eOszJVjL0EI3azycljkpPpoMUR13nexAhD3kuEEcISaRtwLoRyWcUjbztwfPTlDaLd 5EeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:references :in-reply-to:subject:cc:to:dkim-signature:dkim-signature:from; bh=hXTaSydLQd13Wt3GN8lQTythfyuBI5u6fx4bdjj3qSg=; b=nD2r8z8eGXgoDuUuxqx3hRIw/kdDN9K04FGRJeNmFOTiPvvJmDpTGNT2b1PYXYVM8q N2+K5j379T3pfqNAiNZtd70cdAR3gsO+shdw/OvLurndY4GdLn41RPAn6fADi269ii7F sbySbtcz9ZjmuV2wJAIuEZO95gRmGLnB8MYAkZhZJ3uLT6tgnbjwePyN3i8ap1BQu9Wd 4NQfijATZMAvq9WGU2JVa/T603dBuXnt9EJU4i65h0oo5aMisfzbgmu1fRECgg/QsuES YtIFIzvPci0+J7quVmma5Kb7nqxhMagWoFSf75vWMOBxts6VlqIYFsOAx0oRBYI+p+Xo OZZw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b="VLTc/NGS"; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s7si2841948ejd.28.2021.08.13.10.31.29; Fri, 13 Aug 2021 10:31:56 -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; dkim=pass header.i=@linutronix.de header.s=2020 header.b="VLTc/NGS"; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232151AbhHMR2H (ORCPT + 99 others); Fri, 13 Aug 2021 13:28:07 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:38046 "EHLO galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229554AbhHMR2G (ORCPT ); Fri, 13 Aug 2021 13:28:06 -0400 From: Thomas Gleixner DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1628875658; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=hXTaSydLQd13Wt3GN8lQTythfyuBI5u6fx4bdjj3qSg=; b=VLTc/NGS01W+I7Tlg4jxZ/rgRXF32oKOJjtdocgDY+RPIkowZnl3vDNsWUcC4q4Yga2BMF 2wbW+YBdmz1PBFt+LXhB6OqnJ8DzTPNb8Sdg1yQsN7lG69N4Wc97lJxUrCmhyX1fu/rCD9 eUSK8XWfLmzJUCWEFSnWCrJ9gwcb/QoK4xQk6nS5go0yrbop8VoO8HIFKOix4VM8l2/qfW vuAtle7ZBCVS35jtLccUg8RbuPF9IuNWWJn/RNQwhV+abr5nkr42IAJbuI8YHr5J/XG2bO ONgm+C4Pt/KYIQ4wb4sJx3ESzwBz6d2wSKMFb8L1x7z+mthbGBJPCk9sH6To4w== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1628875658; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=hXTaSydLQd13Wt3GN8lQTythfyuBI5u6fx4bdjj3qSg=; b=+C58gskZdXfZhavBAInUT9TFk9MBa4c7jqWdWExTuhHBWCGEBVHtqq9BHpJftcWd409HWO bNhtQ37dB9iXedBQ== To: Waiman Long , Xiaoming Ni , linux-kernel@vger.kernel.org, peterz@infradead.org, mingo@redhat.com, will@kernel.org, boqun.feng@gmail.com Cc: wangle6@huawei.com, xiaoqian9@huawei.com, shaolexi@huawei.com Subject: Re: [PATCH] semaphore: Add might_sleep() to down_*() family In-Reply-To: <48cddad4-0388-ae8b-f98b-1629b9ae590a@redhat.com> References: <20210809021215.19991-1-nixiaoming@huawei.com> <48cddad4-0388-ae8b-f98b-1629b9ae590a@redhat.com> Date: Fri, 13 Aug 2021 19:27:37 +0200 Message-ID: <877dgpp852.ffs@tglx> MIME-Version: 1.0 Content-Type: text/plain Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Aug 08 2021 at 23:01, Waiman Long wrote: > On 8/8/21 10:12 PM, Xiaoming Ni wrote: >> Semaphore is sleeping lock. Add might_sleep() to down*() family >> (with exception of down_trylock()) to detect atomic context sleep. >> @@ -157,6 +160,7 @@ int down_timeout(struct semaphore *sem, long timeout) >> unsigned long flags; >> int result = 0; >> >> + might_sleep(); >> raw_spin_lock_irqsave(&sem->lock, flags); >> if (likely(sem->count > 0)) >> sem->count--; > > I think it is simpler to just put a "might_sleep()" in __down_common() > which is the function where sleep can actually happen. No. Putting it in __down_common() is wrong, because that covers only the contended case. But we want to cover the potential sleep, i.e. checking even in the non-contended case, which is what might_sleep() is about. Thanks, tglx