From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.3 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_IN_DEF_DKIM_WL autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8CFA9C433DF for ; Fri, 19 Jun 2020 16:29:05 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 4837F21707 for ; Fri, 19 Jun 2020 16:29:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="B/w9WI6c" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4837F21707 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id C4C498D00F0; Fri, 19 Jun 2020 12:29:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BFAE78D00E9; Fri, 19 Jun 2020 12:29:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B36CF8D00F0; Fri, 19 Jun 2020 12:29:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0046.hostedemail.com [216.40.44.46]) by kanga.kvack.org (Postfix) with ESMTP id 98DEB8D00E9 for ; Fri, 19 Jun 2020 12:29:04 -0400 (EDT) Received: from smtpin26.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 5374B1C99F for ; Fri, 19 Jun 2020 16:29:04 +0000 (UTC) X-FDA: 76946495808.26.fall35_1b0fad126e1a Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin26.hostedemail.com (Postfix) with ESMTP id 25C3818012C08 for ; Fri, 19 Jun 2020 16:29:04 +0000 (UTC) X-HE-Tag: fall35_1b0fad126e1a X-Filterd-Recvd-Size: 6788 Received: from mail-lj1-f195.google.com (mail-lj1-f195.google.com [209.85.208.195]) by imf17.hostedemail.com (Postfix) with ESMTP for ; Fri, 19 Jun 2020 16:29:03 +0000 (UTC) Received: by mail-lj1-f195.google.com with SMTP id y11so12183198ljm.9 for ; Fri, 19 Jun 2020 09:29:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=/V/EEJuGfM3cwX7ubb4ViNyVH2RhhYxz5LHLfNXzhkM=; b=B/w9WI6cwkaKNiVZI/74T8mkbfDvQKda2PFwcG461AJl+Gf6uYMVSHq4gpulO8Ry+L 8qGuQp5or3fxXwqYPSXsF7PbTNUas9uFLKTpxcFSJDk2fzA7L4QjvyQtCJGcqQCf1NGb r7M5175o1wb2hP868cNxoHI7udC1F3ZvHPxoHlWzfHnNjeWVeJ1LphNBc9gN3ms4J7FK RewOaHYWx3Z3gWld8GO3oojFfFMg4Mf3MoB9qvV10x9svpEHRwh/lGM+Wc5FBQjcMyK1 u/uXYEmCvfoXlzhQXBTW8ZgKtQt16FRjDptA3n3UBSB8fTta2S2z1Z1e2o1zw6elE8Ny 9qmQ== 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; bh=/V/EEJuGfM3cwX7ubb4ViNyVH2RhhYxz5LHLfNXzhkM=; b=ehFxVPqVG+SpP6PVGS0G7KV7v4W98JZ8zn204cAU4uZ7py3oODxSwhwTuWA5nUdH/p CHTPy9BwS2KU+ouSgnBF7l7HqAS89H5WMnYIpQiWwWnw3qzK67pQC4iiFv7cX71/Q9n0 HbchwV6hKX5hv82dfL4m6hKAO2HbhGJXgV6/1p3g+2R7OLVjru0ufZeLYwnvfAWvEugQ pjXrr6mQfohIkvUn7ix6IBztMhS5En9I8vdW3JDCaD6LGXQAerXrdKF9CAqSeliPzK8D uax/zIcYn1awLyZPIDD/ejTsECm1GK/fyUpQ3wGumJBU51e81Yvwy4SqfrLw5WTWhCI1 vLQg== X-Gm-Message-State: AOAM531GnlJx7UAO4qpHPv3FQBfZAXG/dI4i/NshnWOa5qVZNHpexEeG K8qnHvJoYAVUd6mAX7/68qrU/J6s665o09G+Fi8p7Q== X-Google-Smtp-Source: ABdhPJyn3yaIiMt6831syIMHyWp/J+Qai964ORpX8fPeiKbLuy9BlJOQCTa0wVXzGV0An0hM3kXnQYBOBF/tgtfFMcI= X-Received: by 2002:a2e:8e94:: with SMTP id z20mr2052818ljk.21.1592584141654; Fri, 19 Jun 2020 09:29:01 -0700 (PDT) MIME-Version: 1.0 References: <20200618222225.102337-1-axelrasmussen@google.com> <20200618222225.102337-2-axelrasmussen@google.com> <20200619083023.GS576905@hirez.programming.kicks-ass.net> In-Reply-To: <20200619083023.GS576905@hirez.programming.kicks-ass.net> From: Axel Rasmussen Date: Fri, 19 Jun 2020 09:28:24 -0700 Message-ID: Subject: Re: [RFC PATCH v3 1/1] mmap_lock: add tracepoints around mmap_lock acquisition To: Peter Zijlstra Cc: Michel Lespinasse , David Howells , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Jonathan Adams , David Rientjes , Ying Han Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 25C3818012C08 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam03 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Fri, Jun 19, 2020 at 1:30 AM Peter Zijlstra wrote: > > On Thu, Jun 18, 2020 at 03:22:25PM -0700, Axel Rasmussen wrote: > > diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c > > index f11b9bd3431d..6aabea1cbc5d 100644 > > --- a/kernel/locking/rwsem.c > > +++ b/kernel/locking/rwsem.c > > @@ -1495,6 +1495,20 @@ void __sched down_read(struct rw_semaphore *sem) > > } > > EXPORT_SYMBOL(down_read); > > > > +/* > > + * lock for reading > > + */ > > +void __sched down_read_contended_hook(struct rw_semaphore *sem, > > + void (*pre)(void *), > > + void (*post)(void *), void *arg) > > +{ > > + might_sleep(); > > + rwsem_acquire_read(&sem->dep_map, 0, 0, _RET_IP_); > > + LOCK_CONTENDED_HOOK(sem, __down_read_trylock, __down_read, pre, post, > > + arg); > > +} > > +EXPORT_SYMBOL(down_read_contended_hook); > > + > > int __sched down_read_killable(struct rw_semaphore *sem) > > { > > might_sleep(); > > @@ -1509,6 +1523,24 @@ int __sched down_read_killable(struct rw_semaphore *sem) > > } > > EXPORT_SYMBOL(down_read_killable); > > > > +int __sched down_read_killable_contended_hook(struct rw_semaphore *sem, > > + void (*pre)(void *), > > + void (*post)(void *, int), > > + void *arg) > > +{ > > + might_sleep(); > > + rwsem_acquire_read(&sem->dep_map, 0, 0, _RET_IP_); > > + > > + if (LOCK_CONTENDED_HOOK_RETURN(sem, __down_read_trylock, > > + __down_read_killable, pre, post, arg)) { > > + rwsem_release(&sem->dep_map, _RET_IP_); > > + return -EINTR; > > + } > > + > > + return 0; > > +} > > +EXPORT_SYMBOL(down_read_killable_contended_hook); > > + > > /* > > * trylock for reading -- returns 1 if successful, 0 if contention > > */ > > @@ -1533,6 +1565,20 @@ void __sched down_write(struct rw_semaphore *sem) > > } > > EXPORT_SYMBOL(down_write); > > > > +/* > > + * lock for writing > > + */ > > +void __sched down_write_contended_hook(struct rw_semaphore *sem, > > + void (*pre)(void *), > > + void (*post)(void *), void *arg) > > +{ > > + might_sleep(); > > + rwsem_acquire(&sem->dep_map, 0, 0, _RET_IP_); > > + LOCK_CONTENDED_HOOK(sem, __down_write_trylock, __down_write, pre, post, > > + arg); > > +} > > +EXPORT_SYMBOL(down_write_contended_hook); > > + > > /* > > * lock for writing > > */ > > @@ -1551,6 +1597,24 @@ int __sched down_write_killable(struct rw_semaphore *sem) > > } > > EXPORT_SYMBOL(down_write_killable); > > > > +int __sched down_write_killable_contended_hook(struct rw_semaphore *sem, > > + void (*pre)(void *), > > + void (*post)(void *, int), > > + void *arg) > > +{ > > + might_sleep(); > > + rwsem_acquire_read(&sem->dep_map, 0, 0, _RET_IP_); > > + > > + if (LOCK_CONTENDED_HOOK_RETURN(sem, __down_write_trylock, > > + __down_write_killable, pre, post, arg)) { > > + rwsem_release(&sem->dep_map, _RET_IP_); > > + return -EINTR; > > + } > > + > > + return 0; > > +} > > +EXPORT_SYMBOL(down_write_killable_contended_hook); > > + > > /* > > * trylock for writing -- returns 1 if successful, 0 if contention > > */ > > NAK, absolutely not going to happen. This is an atrocious API to expose, > worse you're exporting. Ack about splitting this up. Thanks for taking a look. :)