From owner-dev-commits-src-main@freebsd.org Mon Apr 26 15:23:08 2021 Return-Path: Delivered-To: dev-commits-src-main@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B15365E4A27; Mon, 26 Apr 2021 15:23:08 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com [IPv6:2a00:1450:4864:20::22e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4FTTDX4VrQz3lcG; Mon, 26 Apr 2021 15:23:08 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-lj1-x22e.google.com with SMTP id l22so57211560ljc.9; Mon, 26 Apr 2021 08:23:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=NyyohRAOZVU2LkctiIY2gyl87KepFLen2ZxRvkwayrM=; b=Qh+VnHCHYGegbvVKo4bqkCLBENXT0RvUeXn8U5wrzWSmQZQXt9oOsTV258z7NTjkv4 QOy6gHwrMWYMZ1mg25ovEko5pzfeuNYXrK32mjNaV7pMoOaYOjlUjtPbtNBrGggMGGh3 dVhLkNbCzvbGKS5FWdl3M94WUtRrVoxULtz2YBkr5BADFkIkb0v/gLIXoRXE1h5+3gfJ eMoPAPmTRQNOHUprLxbhKEKUzktckQ2S8/rbvQ+uz9DmipNbyWWom+iff+h0MnT7tEzU 1ixr7B6cdB4EmTwROaPhBDEmruHE4zjmeYmU3Ufo7C9aKvBZ+QDvQuJIEWJJ+lUYyYOD HBNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=NyyohRAOZVU2LkctiIY2gyl87KepFLen2ZxRvkwayrM=; b=eOXOjOoJ3aR5faGIDaLqBWJJtVX6N+E6PCfdHcr63g9/Ud40mnUlTCtWIhdI89iset l5yyYJndndzAPI6q+hk4jBCUMlu7Cd1jRRtWp6YYVG/zBYp0tKfonzSWWfDHfG4wUykt tHPzEw62LFPnIQl5JaFwsC0tNvNJH563oYCWWtVkCdSN/o4z9ijpDJn3obysMOiCYBjI cdOM52xr29VmbXxDp/wqt88QMwsGvc2tYf0cXZ5Uxb0LBtP/IRx2iCAE31MYDPgoth3P F48v6hwa3rbbH8LToqGl7TJIlaGltIY2b5lK9sB6qEPWcJRAECYsXbnjamYKhNKuRHur Z1Xg== X-Gm-Message-State: AOAM533dW17GzoDYpEQ19s/QpDB0Avub3oLWMQZaQg8P1UFJQjNSh4uu egRVl9H6cirCyirok3Orn52K6/d7J1OgR8x6RW6u7Y/p X-Google-Smtp-Source: ABdhPJwuKsXjudoWnlPqJW1ztZ0GrOxJRX3hISKnrMnvAoy5k1hB5ZFh50w9AbkKiuquQFulGStvWeAnOgZXSnix/Ps= X-Received: by 2002:a05:651c:1245:: with SMTP id h5mr13474651ljh.499.1619450586581; Mon, 26 Apr 2021 08:23:06 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a05:651c:32e:0:0:0:0 with HTTP; Mon, 26 Apr 2021 08:23:05 -0700 (PDT) In-Reply-To: <202104261515.13QFFuFQ072779@gitrepo.freebsd.org> References: <202104261515.13QFFuFQ072779@gitrepo.freebsd.org> From: Mateusz Guzik Date: Mon, 26 Apr 2021 17:23:05 +0200 Message-ID: Subject: Re: git: ce65353ac1a1 - main - linuxkpi: Implement atomic_dec_and_lock_irqsave() To: Neel Chauhan Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4FTTDX4VrQz3lcG X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-main@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for the main branch of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Apr 2021 15:23:08 -0000 On 4/26/21, Neel Chauhan wrote: > The branch main has been updated by nc (ports committer): > > URL: > https://cgit.FreeBSD.org/src/commit/?id=ce65353ac1a17677bef03e96df8da967c9086743 > > commit ce65353ac1a17677bef03e96df8da967c9086743 > Author: Neel Chauhan > AuthorDate: 2021-04-26 15:15:49 +0000 > Commit: Neel Chauhan > CommitDate: 2021-04-26 15:15:49 +0000 > > linuxkpi: Implement atomic_dec_and_lock_irqsave() > > This is needed by the drm-kmod 5.5 update. > > Reviewed by: hselasky, manu > MFC after: 3 days > Differential Revision: https://reviews.freebsd.org/D29988 > --- > sys/compat/linuxkpi/common/include/linux/spinlock.h | 13 +++++++++++++ > sys/sys/param.h | 2 +- > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/sys/compat/linuxkpi/common/include/linux/spinlock.h > b/sys/compat/linuxkpi/common/include/linux/spinlock.h > index 2309794b26ec..7ef474b671dc 100644 > --- a/sys/compat/linuxkpi/common/include/linux/spinlock.h > +++ b/sys/compat/linuxkpi/common/include/linux/spinlock.h > @@ -31,6 +31,7 @@ > #ifndef _LINUX_SPINLOCK_H_ > #define _LINUX_SPINLOCK_H_ > > +#include > #include > #include > #include > @@ -160,4 +161,16 @@ spin_lock_destroy(spinlock_t *lock) > mtx_assert(&(_l)->m, MA_OWNED); \ > } while (0) > > +static inline int > +atomic_dec_and_lock_irqsave(atomic_t *cnt, spinlock_t *lock, > + unsigned long flags) > +{ > + spin_lock_irqsave(lock, flags); > + if (atomic_dec_and_test(cnt)) { > + return (1); > + } > + spin_unlock_irqrestore(lock, flags); > + return (0); > +} This is likely going to significantly reduce performance. The routine is only expected to grab the lock when transitioning the count to 0. iow, this wants a fcmpset loop akin to what can be found in refcount_release_if_gt > + > #endif /* _LINUX_SPINLOCK_H_ */ > diff --git a/sys/sys/param.h b/sys/sys/param.h > index e4fdb272b7fe..4f80ad5972a4 100644 > --- a/sys/sys/param.h > +++ b/sys/sys/param.h > @@ -60,7 +60,7 @@ > * in the range 5 to 9. > */ > #undef __FreeBSD_version > -#define __FreeBSD_version 1400010 /* Master, propagated to newvers */ > +#define __FreeBSD_version 1400011 /* Master, propagated to newvers */ > > /* > * __FreeBSD_kernel__ indicates that this system uses the kernel of > FreeBSD, > -- Mateusz Guzik