All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Mark Rutland <mark.rutland@arm.com>,
	linux-m68k@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-sh@vger.kernel.org, Peter Zijlstra <peterz@infradead.org>,
	dri-devel@lists.freedesktop.org, linux-mips@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-hexagon@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	Boqun Feng <boqun.feng@gmail.com>,
	linux-xtensa@linux-xtensa.org, Arnd Bergmann <arnd@arndb.de>,
	intel-gfx@lists.freedesktop.org, openrisc@lists.librecores.org,
	loongarch@lists.linux.dev, Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-parisc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-alpha@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 00/19] Introduce __xchg, non-atomic xchg
Date: Thu, 5 Jan 2023 17:29:51 +0100	[thread overview]
Message-ID: <Y7b6/7coJEVlTVxK@phenom.ffwll.local> (raw)
In-Reply-To: <6e727952-3ad0-fcc3-82f1-c465dcffd56f@intel.com>

On Thu, Dec 29, 2022 at 10:54:50AM +0100, Andrzej Hajda wrote:
> Forgive me late response - Holidays,
> 
> On 22.12.2022 18:21, Andrew Morton wrote:
> > On Thu, 22 Dec 2022 12:46:16 +0100 Andrzej Hajda <andrzej.hajda@intel.com> wrote:
> > 
> > > Hi all,
> > > 
> > > I hope there will be place for such tiny helper in kernel.
> > > Quick cocci analyze shows there is probably few thousands places
> > > where it could be useful.
> > So to clarify, the intent here is a simple readability cleanup for
> > existing open-coded exchange operations.
> 
> And replace private helpers with common one, see the last patch - the
> ultimate goal
> would be to replace all occurrences of fetch_and_zero with __xchg.
> 
> > The intent is *not* to
> > identify existing xchg() sites which are unnecessarily atomic and to
> > optimize them by using the non-atomic version.
> > 
> > Have you considered the latter?
> 
> If you mean some way of (semi-)automatic detection of such cases, then no.
> Anyway this could be quite interesting challenge.

My take is that unless there is very clear demand for this macro from
outside of i915, it's not worth it. All that fetch_and_zero zero achieved
is make i915 code a lot more confusing to read for people who don't know
this thing. And it replaces 2 entirely standard lines of 0, every often
clearing pointers in data structures where you really want the verbosity
to have a reminder and thinking about the locking.

Plus it smells way too much like the cmpxchg family of atomic functions,
addig further to the locking confuion.

Imo the right approach is to just open code this macro in i915 and then
drop it. Again, unless enough people outside of i915 really really want
this, and want to lift this to a kernel idiom.
-Daniel

> 
> > 
> > > I am not sure who is good person to review/ack such patches,
> > I can take 'em.
> > 
> > > so I've used my intuition to construct to/cc lists, sorry for mistakes.
> > > This is the 2nd approach of the same idea, with comments addressed[0].
> > > 
> > > The helper is tiny and there are advices we can leave without it, so
> > > I want to present few arguments why it would be good to have it:
> > > 
> > > 1. Code readability/simplification/number of lines:
> > > 
> > > Real example from drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c:
> > > -       previous_min_rate = evport->qos.min_rate;
> > > -       evport->qos.min_rate = min_rate;
> > > +       previous_min_rate = __xchg(evport->qos.min_rate, min_rate);
> > > 
> > > For sure the code is more compact, and IMHO more readable.
> > > 
> > > 2. Presence of similar helpers in other somehow related languages/libs:
> > > 
> > > a) Rust[1]: 'replace' from std::mem module, there is also 'take'
> > >      helper (__xchg(&x, 0)), which is the same as private helper in
> > >      i915 - fetch_and_zero, see latest patch.
> > > b) C++ [2]: 'exchange' from utility header.
> > > 
> > > If the idea is OK there are still 2 qestions to answer:
> > > 
> > > 1. Name of the helper, __xchg follows kernel conventions,
> > >      but for me Rust names are also OK.
> > I like replace(), or, shockingly, exchange().
> > 
> > But...   Can we simply make swap() return the previous value?
> > 
> > 	previous_min_rate = swap(&evport->qos.min_rate, min_rate);
> 
> As Alexander already pointed out, swap requires 'references' to two
> variables,
> in contrast to xchg which requires reference to variable and value.
> So we cannot use swap for cases:
>     old_value = __xchg(&x, new_value);
> 
> Regards
> Andrzej
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	linux-m68k@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-sh@vger.kernel.org, Peter Zijlstra <peterz@infradead.org>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-hexagon@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	intel-gfx@lists.freedesktop.org, linux-xtensa@linux-xtensa.org,
	Arnd Bergmann <arnd@arndb.de>, Boqun Feng <boqun.feng@gmail.com>,
	openrisc@lists.librecores.org, loongarch@lists.linux.dev,
	Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-parisc@vger.kernel.org, linux-mips@vger.kernel.org,
	linux-alpha@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 00/19] Introduce __xchg, non-atomic xchg
Date: Thu, 5 Jan 2023 17:29:51 +0100	[thread overview]
Message-ID: <Y7b6/7coJEVlTVxK@phenom.ffwll.local> (raw)
In-Reply-To: <6e727952-3ad0-fcc3-82f1-c465dcffd56f@intel.com>

On Thu, Dec 29, 2022 at 10:54:50AM +0100, Andrzej Hajda wrote:
> Forgive me late response - Holidays,
> 
> On 22.12.2022 18:21, Andrew Morton wrote:
> > On Thu, 22 Dec 2022 12:46:16 +0100 Andrzej Hajda <andrzej.hajda@intel.com> wrote:
> > 
> > > Hi all,
> > > 
> > > I hope there will be place for such tiny helper in kernel.
> > > Quick cocci analyze shows there is probably few thousands places
> > > where it could be useful.
> > So to clarify, the intent here is a simple readability cleanup for
> > existing open-coded exchange operations.
> 
> And replace private helpers with common one, see the last patch - the
> ultimate goal
> would be to replace all occurrences of fetch_and_zero with __xchg.
> 
> > The intent is *not* to
> > identify existing xchg() sites which are unnecessarily atomic and to
> > optimize them by using the non-atomic version.
> > 
> > Have you considered the latter?
> 
> If you mean some way of (semi-)automatic detection of such cases, then no.
> Anyway this could be quite interesting challenge.

My take is that unless there is very clear demand for this macro from
outside of i915, it's not worth it. All that fetch_and_zero zero achieved
is make i915 code a lot more confusing to read for people who don't know
this thing. And it replaces 2 entirely standard lines of 0, every often
clearing pointers in data structures where you really want the verbosity
to have a reminder and thinking about the locking.

Plus it smells way too much like the cmpxchg family of atomic functions,
addig further to the locking confuion.

Imo the right approach is to just open code this macro in i915 and then
drop it. Again, unless enough people outside of i915 really really want
this, and want to lift this to a kernel idiom.
-Daniel

> 
> > 
> > > I am not sure who is good person to review/ack such patches,
> > I can take 'em.
> > 
> > > so I've used my intuition to construct to/cc lists, sorry for mistakes.
> > > This is the 2nd approach of the same idea, with comments addressed[0].
> > > 
> > > The helper is tiny and there are advices we can leave without it, so
> > > I want to present few arguments why it would be good to have it:
> > > 
> > > 1. Code readability/simplification/number of lines:
> > > 
> > > Real example from drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c:
> > > -       previous_min_rate = evport->qos.min_rate;
> > > -       evport->qos.min_rate = min_rate;
> > > +       previous_min_rate = __xchg(evport->qos.min_rate, min_rate);
> > > 
> > > For sure the code is more compact, and IMHO more readable.
> > > 
> > > 2. Presence of similar helpers in other somehow related languages/libs:
> > > 
> > > a) Rust[1]: 'replace' from std::mem module, there is also 'take'
> > >      helper (__xchg(&x, 0)), which is the same as private helper in
> > >      i915 - fetch_and_zero, see latest patch.
> > > b) C++ [2]: 'exchange' from utility header.
> > > 
> > > If the idea is OK there are still 2 qestions to answer:
> > > 
> > > 1. Name of the helper, __xchg follows kernel conventions,
> > >      but for me Rust names are also OK.
> > I like replace(), or, shockingly, exchange().
> > 
> > But...   Can we simply make swap() return the previous value?
> > 
> > 	previous_min_rate = swap(&evport->qos.min_rate, min_rate);
> 
> As Alexander already pointed out, swap requires 'references' to two
> variables,
> in contrast to xchg which requires reference to variable and value.
> So we cannot use swap for cases:
>     old_value = __xchg(&x, new_value);
> 
> Regards
> Andrzej
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	linux-m68k@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-sh@vger.kernel.org, Peter Zijlstra <peterz@infradead.org>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-hexagon@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	intel-gfx@lists.freedesktop.org, linux-xtensa@linux-xtensa.org,
	Arnd Bergmann <arnd@arndb.de>, Boqun Feng <boqun.feng@gmail.com>,
	openrisc@lists.librecores.org, loongarch@lists.linux.dev,
	Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-parisc@vger.kernel.org, linux-mips@vger.kernel.org,
	linux-alpha@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [Intel-gfx] [PATCH 00/19] Introduce __xchg, non-atomic xchg
Date: Thu, 5 Jan 2023 17:29:51 +0100	[thread overview]
Message-ID: <Y7b6/7coJEVlTVxK@phenom.ffwll.local> (raw)
In-Reply-To: <6e727952-3ad0-fcc3-82f1-c465dcffd56f@intel.com>

On Thu, Dec 29, 2022 at 10:54:50AM +0100, Andrzej Hajda wrote:
> Forgive me late response - Holidays,
> 
> On 22.12.2022 18:21, Andrew Morton wrote:
> > On Thu, 22 Dec 2022 12:46:16 +0100 Andrzej Hajda <andrzej.hajda@intel.com> wrote:
> > 
> > > Hi all,
> > > 
> > > I hope there will be place for such tiny helper in kernel.
> > > Quick cocci analyze shows there is probably few thousands places
> > > where it could be useful.
> > So to clarify, the intent here is a simple readability cleanup for
> > existing open-coded exchange operations.
> 
> And replace private helpers with common one, see the last patch - the
> ultimate goal
> would be to replace all occurrences of fetch_and_zero with __xchg.
> 
> > The intent is *not* to
> > identify existing xchg() sites which are unnecessarily atomic and to
> > optimize them by using the non-atomic version.
> > 
> > Have you considered the latter?
> 
> If you mean some way of (semi-)automatic detection of such cases, then no.
> Anyway this could be quite interesting challenge.

My take is that unless there is very clear demand for this macro from
outside of i915, it's not worth it. All that fetch_and_zero zero achieved
is make i915 code a lot more confusing to read for people who don't know
this thing. And it replaces 2 entirely standard lines of 0, every often
clearing pointers in data structures where you really want the verbosity
to have a reminder and thinking about the locking.

Plus it smells way too much like the cmpxchg family of atomic functions,
addig further to the locking confuion.

Imo the right approach is to just open code this macro in i915 and then
drop it. Again, unless enough people outside of i915 really really want
this, and want to lift this to a kernel idiom.
-Daniel

> 
> > 
> > > I am not sure who is good person to review/ack such patches,
> > I can take 'em.
> > 
> > > so I've used my intuition to construct to/cc lists, sorry for mistakes.
> > > This is the 2nd approach of the same idea, with comments addressed[0].
> > > 
> > > The helper is tiny and there are advices we can leave without it, so
> > > I want to present few arguments why it would be good to have it:
> > > 
> > > 1. Code readability/simplification/number of lines:
> > > 
> > > Real example from drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c:
> > > -       previous_min_rate = evport->qos.min_rate;
> > > -       evport->qos.min_rate = min_rate;
> > > +       previous_min_rate = __xchg(evport->qos.min_rate, min_rate);
> > > 
> > > For sure the code is more compact, and IMHO more readable.
> > > 
> > > 2. Presence of similar helpers in other somehow related languages/libs:
> > > 
> > > a) Rust[1]: 'replace' from std::mem module, there is also 'take'
> > >      helper (__xchg(&x, 0)), which is the same as private helper in
> > >      i915 - fetch_and_zero, see latest patch.
> > > b) C++ [2]: 'exchange' from utility header.
> > > 
> > > If the idea is OK there are still 2 qestions to answer:
> > > 
> > > 1. Name of the helper, __xchg follows kernel conventions,
> > >      but for me Rust names are also OK.
> > I like replace(), or, shockingly, exchange().
> > 
> > But...   Can we simply make swap() return the previous value?
> > 
> > 	previous_min_rate = swap(&evport->qos.min_rate, min_rate);
> 
> As Alexander already pointed out, swap requires 'references' to two
> variables,
> in contrast to xchg which requires reference to variable and value.
> So we cannot use swap for cases:
>     old_value = __xchg(&x, new_value);
> 
> Regards
> Andrzej
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Mark Rutland <mark.rutland@arm.com>,
	linux-m68k@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-sh@vger.kernel.org, Peter Zijlstra <peterz@infradead.org>,
	dri-devel@lists.freedesktop.org, linux-mips@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-hexagon@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	Boqun Feng <boqun.feng@gmail.com>,
	linux-xtensa@linux-xtensa.org, Arnd Bergmann <arnd@arndb.de>,
	intel-gfx@lists.freedesktop.org, openrisc@lists.librecores.org,
	loongarch@lists.linux.dev, Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-parisc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-alpha@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 00/19] Introduce __xchg, non-atomic xchg
Date: Thu, 5 Jan 2023 17:29:51 +0100	[thread overview]
Message-ID: <Y7b6/7coJEVlTVxK@phenom.ffwll.local> (raw)
In-Reply-To: <6e727952-3ad0-fcc3-82f1-c465dcffd56f@intel.com>

On Thu, Dec 29, 2022 at 10:54:50AM +0100, Andrzej Hajda wrote:
> Forgive me late response - Holidays,
> 
> On 22.12.2022 18:21, Andrew Morton wrote:
> > On Thu, 22 Dec 2022 12:46:16 +0100 Andrzej Hajda <andrzej.hajda@intel.com> wrote:
> > 
> > > Hi all,
> > > 
> > > I hope there will be place for such tiny helper in kernel.
> > > Quick cocci analyze shows there is probably few thousands places
> > > where it could be useful.
> > So to clarify, the intent here is a simple readability cleanup for
> > existing open-coded exchange operations.
> 
> And replace private helpers with common one, see the last patch - the
> ultimate goal
> would be to replace all occurrences of fetch_and_zero with __xchg.
> 
> > The intent is *not* to
> > identify existing xchg() sites which are unnecessarily atomic and to
> > optimize them by using the non-atomic version.
> > 
> > Have you considered the latter?
> 
> If you mean some way of (semi-)automatic detection of such cases, then no.
> Anyway this could be quite interesting challenge.

My take is that unless there is very clear demand for this macro from
outside of i915, it's not worth it. All that fetch_and_zero zero achieved
is make i915 code a lot more confusing to read for people who don't know
this thing. And it replaces 2 entirely standard lines of 0, every often
clearing pointers in data structures where you really want the verbosity
to have a reminder and thinking about the locking.

Plus it smells way too much like the cmpxchg family of atomic functions,
addig further to the locking confuion.

Imo the right approach is to just open code this macro in i915 and then
drop it. Again, unless enough people outside of i915 really really want
this, and want to lift this to a kernel idiom.
-Daniel

> 
> > 
> > > I am not sure who is good person to review/ack such patches,
> > I can take 'em.
> > 
> > > so I've used my intuition to construct to/cc lists, sorry for mistakes.
> > > This is the 2nd approach of the same idea, with comments addressed[0].
> > > 
> > > The helper is tiny and there are advices we can leave without it, so
> > > I want to present few arguments why it would be good to have it:
> > > 
> > > 1. Code readability/simplification/number of lines:
> > > 
> > > Real example from drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c:
> > > -       previous_min_rate = evport->qos.min_rate;
> > > -       evport->qos.min_rate = min_rate;
> > > +       previous_min_rate = __xchg(evport->qos.min_rate, min_rate);
> > > 
> > > For sure the code is more compact, and IMHO more readable.
> > > 
> > > 2. Presence of similar helpers in other somehow related languages/libs:
> > > 
> > > a) Rust[1]: 'replace' from std::mem module, there is also 'take'
> > >      helper (__xchg(&x, 0)), which is the same as private helper in
> > >      i915 - fetch_and_zero, see latest patch.
> > > b) C++ [2]: 'exchange' from utility header.
> > > 
> > > If the idea is OK there are still 2 qestions to answer:
> > > 
> > > 1. Name of the helper, __xchg follows kernel conventions,
> > >      but for me Rust names are also OK.
> > I like replace(), or, shockingly, exchange().
> > 
> > But...   Can we simply make swap() return the previous value?
> > 
> > 	previous_min_rate = swap(&evport->qos.min_rate, min_rate);
> 
> As Alexander already pointed out, swap requires 'references' to two
> variables,
> in contrast to xchg which requires reference to variable and value.
> So we cannot use swap for cases:
>     old_value = __xchg(&x, new_value);
> 
> Regards
> Andrzej
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Mark Rutland <mark.rutland@arm.com>,
	linux-m68k@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-sh@vger.kernel.org, Peter Zijlstra <peterz@infradead.org>,
	dri-devel@lists.freedesktop.org, linux-mips@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-hexagon@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	Boqun Feng <boqun.feng@gmail.com>,
	linux-xtensa@linux-xtensa.org, Arnd Bergmann <arnd@arndb.de>,
	intel-gfx@lists.freedesktop.org, openrisc@lists.librecores.org,
	loongarch@lists.linux.dev, Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-parisc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-alpha@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 00/19] Introduce __xchg, non-atomic xchg
Date: Thu, 5 Jan 2023 17:29:51 +0100	[thread overview]
Message-ID: <Y7b6/7coJEVlTVxK@phenom.ffwll.local> (raw)
In-Reply-To: <6e727952-3ad0-fcc3-82f1-c465dcffd56f@intel.com>

On Thu, Dec 29, 2022 at 10:54:50AM +0100, Andrzej Hajda wrote:
> Forgive me late response - Holidays,
> 
> On 22.12.2022 18:21, Andrew Morton wrote:
> > On Thu, 22 Dec 2022 12:46:16 +0100 Andrzej Hajda <andrzej.hajda@intel.com> wrote:
> > 
> > > Hi all,
> > > 
> > > I hope there will be place for such tiny helper in kernel.
> > > Quick cocci analyze shows there is probably few thousands places
> > > where it could be useful.
> > So to clarify, the intent here is a simple readability cleanup for
> > existing open-coded exchange operations.
> 
> And replace private helpers with common one, see the last patch - the
> ultimate goal
> would be to replace all occurrences of fetch_and_zero with __xchg.
> 
> > The intent is *not* to
> > identify existing xchg() sites which are unnecessarily atomic and to
> > optimize them by using the non-atomic version.
> > 
> > Have you considered the latter?
> 
> If you mean some way of (semi-)automatic detection of such cases, then no.
> Anyway this could be quite interesting challenge.

My take is that unless there is very clear demand for this macro from
outside of i915, it's not worth it. All that fetch_and_zero zero achieved
is make i915 code a lot more confusing to read for people who don't know
this thing. And it replaces 2 entirely standard lines of 0, every often
clearing pointers in data structures where you really want the verbosity
to have a reminder and thinking about the locking.

Plus it smells way too much like the cmpxchg family of atomic functions,
addig further to the locking confuion.

Imo the right approach is to just open code this macro in i915 and then
drop it. Again, unless enough people outside of i915 really really want
this, and want to lift this to a kernel idiom.
-Daniel

> 
> > 
> > > I am not sure who is good person to review/ack such patches,
> > I can take 'em.
> > 
> > > so I've used my intuition to construct to/cc lists, sorry for mistakes.
> > > This is the 2nd approach of the same idea, with comments addressed[0].
> > > 
> > > The helper is tiny and there are advices we can leave without it, so
> > > I want to present few arguments why it would be good to have it:
> > > 
> > > 1. Code readability/simplification/number of lines:
> > > 
> > > Real example from drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c:
> > > -       previous_min_rate = evport->qos.min_rate;
> > > -       evport->qos.min_rate = min_rate;
> > > +       previous_min_rate = __xchg(evport->qos.min_rate, min_rate);
> > > 
> > > For sure the code is more compact, and IMHO more readable.
> > > 
> > > 2. Presence of similar helpers in other somehow related languages/libs:
> > > 
> > > a) Rust[1]: 'replace' from std::mem module, there is also 'take'
> > >      helper (__xchg(&x, 0)), which is the same as private helper in
> > >      i915 - fetch_and_zero, see latest patch.
> > > b) C++ [2]: 'exchange' from utility header.
> > > 
> > > If the idea is OK there are still 2 qestions to answer:
> > > 
> > > 1. Name of the helper, __xchg follows kernel conventions,
> > >      but for me Rust names are also OK.
> > I like replace(), or, shockingly, exchange().
> > 
> > But...   Can we simply make swap() return the previous value?
> > 
> > 	previous_min_rate = swap(&evport->qos.min_rate, min_rate);
> 
> As Alexander already pointed out, swap requires 'references' to two
> variables,
> in contrast to xchg which requires reference to variable and value.
> So we cannot use swap for cases:
>     old_value = __xchg(&x, new_value);
> 
> Regards
> Andrzej
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Mark Rutland <mark.rutland@arm.com>,
	linux-m68k@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-sh@vger.kernel.org, Peter Zijlstra <peterz@infradead.org>,
	dri-devel@lists.freedesktop.org, linux-mips@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-hexagon@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	Boqun Feng <boqun.feng@gmail.com>,
	linux-xtensa@linux-xtensa.org, Arnd Bergmann <arnd@arndb.de>,
	intel-gfx@lists.freedesktop.org, openrisc@lists.librecores.org,
	loongarch@lists.linux.dev, Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-parisc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-alpha@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 00/19] Introduce __xchg, non-atomic xchg
Date: Thu, 5 Jan 2023 17:29:51 +0100	[thread overview]
Message-ID: <Y7b6/7coJEVlTVxK@phenom.ffwll.local> (raw)
In-Reply-To: <6e727952-3ad0-fcc3-82f1-c465dcffd56f@intel.com>

On Thu, Dec 29, 2022 at 10:54:50AM +0100, Andrzej Hajda wrote:
> Forgive me late response - Holidays,
> 
> On 22.12.2022 18:21, Andrew Morton wrote:
> > On Thu, 22 Dec 2022 12:46:16 +0100 Andrzej Hajda <andrzej.hajda@intel.com> wrote:
> > 
> > > Hi all,
> > > 
> > > I hope there will be place for such tiny helper in kernel.
> > > Quick cocci analyze shows there is probably few thousands places
> > > where it could be useful.
> > So to clarify, the intent here is a simple readability cleanup for
> > existing open-coded exchange operations.
> 
> And replace private helpers with common one, see the last patch - the
> ultimate goal
> would be to replace all occurrences of fetch_and_zero with __xchg.
> 
> > The intent is *not* to
> > identify existing xchg() sites which are unnecessarily atomic and to
> > optimize them by using the non-atomic version.
> > 
> > Have you considered the latter?
> 
> If you mean some way of (semi-)automatic detection of such cases, then no.
> Anyway this could be quite interesting challenge.

My take is that unless there is very clear demand for this macro from
outside of i915, it's not worth it. All that fetch_and_zero zero achieved
is make i915 code a lot more confusing to read for people who don't know
this thing. And it replaces 2 entirely standard lines of 0, every often
clearing pointers in data structures where you really want the verbosity
to have a reminder and thinking about the locking.

Plus it smells way too much like the cmpxchg family of atomic functions,
addig further to the locking confuion.

Imo the right approach is to just open code this macro in i915 and then
drop it. Again, unless enough people outside of i915 really really want
this, and want to lift this to a kernel idiom.
-Daniel

> 
> > 
> > > I am not sure who is good person to review/ack such patches,
> > I can take 'em.
> > 
> > > so I've used my intuition to construct to/cc lists, sorry for mistakes.
> > > This is the 2nd approach of the same idea, with comments addressed[0].
> > > 
> > > The helper is tiny and there are advices we can leave without it, so
> > > I want to present few arguments why it would be good to have it:
> > > 
> > > 1. Code readability/simplification/number of lines:
> > > 
> > > Real example from drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c:
> > > -       previous_min_rate = evport->qos.min_rate;
> > > -       evport->qos.min_rate = min_rate;
> > > +       previous_min_rate = __xchg(evport->qos.min_rate, min_rate);
> > > 
> > > For sure the code is more compact, and IMHO more readable.
> > > 
> > > 2. Presence of similar helpers in other somehow related languages/libs:
> > > 
> > > a) Rust[1]: 'replace' from std::mem module, there is also 'take'
> > >      helper (__xchg(&x, 0)), which is the same as private helper in
> > >      i915 - fetch_and_zero, see latest patch.
> > > b) C++ [2]: 'exchange' from utility header.
> > > 
> > > If the idea is OK there are still 2 qestions to answer:
> > > 
> > > 1. Name of the helper, __xchg follows kernel conventions,
> > >      but for me Rust names are also OK.
> > I like replace(), or, shockingly, exchange().
> > 
> > But...   Can we simply make swap() return the previous value?
> > 
> > 	previous_min_rate = swap(&evport->qos.min_rate, min_rate);
> 
> As Alexander already pointed out, swap requires 'references' to two
> variables,
> in contrast to xchg which requires reference to variable and value.
> So we cannot use swap for cases:
>     old_value = __xchg(&x, new_value);
> 
> Regards
> Andrzej
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Mark Rutland <mark.rutland@arm.com>,
	linux-m68k@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-sh@vger.kernel.org, Peter Zijlstra <peterz@infradead.org>,
	dri-devel@lists.freedesktop.org, linux-mips@vger.kernel.org,
	sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-hexagon@vger.kernel.org,
	linux-snps-arc@lists.infradead.org,
	Boqun Feng <boqun.feng@gmail.com>,
	linux-xtensa@linux-xtensa.org, Arnd Bergmann <arnd@arndb.de>,
	intel-gfx@lists.freedesktop.org, openrisc@lists.librecores.org,
	loongarch@lists.linux.dev, Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-parisc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-alpha@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 00/19] Introduce __xchg, non-atomic xchg
Date: Thu, 05 Jan 2023 16:29:51 +0000	[thread overview]
Message-ID: <Y7b6/7coJEVlTVxK@phenom.ffwll.local> (raw)
In-Reply-To: <6e727952-3ad0-fcc3-82f1-c465dcffd56f@intel.com>

On Thu, Dec 29, 2022 at 10:54:50AM +0100, Andrzej Hajda wrote:
> Forgive me late response - Holidays,
> 
> On 22.12.2022 18:21, Andrew Morton wrote:
> > On Thu, 22 Dec 2022 12:46:16 +0100 Andrzej Hajda <andrzej.hajda@intel.com> wrote:
> > 
> > > Hi all,
> > > 
> > > I hope there will be place for such tiny helper in kernel.
> > > Quick cocci analyze shows there is probably few thousands places
> > > where it could be useful.
> > So to clarify, the intent here is a simple readability cleanup for
> > existing open-coded exchange operations.
> 
> And replace private helpers with common one, see the last patch - the
> ultimate goal
> would be to replace all occurrences of fetch_and_zero with __xchg.
> 
> > The intent is *not* to
> > identify existing xchg() sites which are unnecessarily atomic and to
> > optimize them by using the non-atomic version.
> > 
> > Have you considered the latter?
> 
> If you mean some way of (semi-)automatic detection of such cases, then no.
> Anyway this could be quite interesting challenge.

My take is that unless there is very clear demand for this macro from
outside of i915, it's not worth it. All that fetch_and_zero zero achieved
is make i915 code a lot more confusing to read for people who don't know
this thing. And it replaces 2 entirely standard lines of 0, every often
clearing pointers in data structures where you really want the verbosity
to have a reminder and thinking about the locking.

Plus it smells way too much like the cmpxchg family of atomic functions,
addig further to the locking confuion.

Imo the right approach is to just open code this macro in i915 and then
drop it. Again, unless enough people outside of i915 really really want
this, and want to lift this to a kernel idiom.
-Daniel

> 
> > 
> > > I am not sure who is good person to review/ack such patches,
> > I can take 'em.
> > 
> > > so I've used my intuition to construct to/cc lists, sorry for mistakes.
> > > This is the 2nd approach of the same idea, with comments addressed[0].
> > > 
> > > The helper is tiny and there are advices we can leave without it, so
> > > I want to present few arguments why it would be good to have it:
> > > 
> > > 1. Code readability/simplification/number of lines:
> > > 
> > > Real example from drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c:
> > > -       previous_min_rate = evport->qos.min_rate;
> > > -       evport->qos.min_rate = min_rate;
> > > +       previous_min_rate = __xchg(evport->qos.min_rate, min_rate);
> > > 
> > > For sure the code is more compact, and IMHO more readable.
> > > 
> > > 2. Presence of similar helpers in other somehow related languages/libs:
> > > 
> > > a) Rust[1]: 'replace' from std::mem module, there is also 'take'
> > >      helper (__xchg(&x, 0)), which is the same as private helper in
> > >      i915 - fetch_and_zero, see latest patch.
> > > b) C++ [2]: 'exchange' from utility header.
> > > 
> > > If the idea is OK there are still 2 qestions to answer:
> > > 
> > > 1. Name of the helper, __xchg follows kernel conventions,
> > >      but for me Rust names are also OK.
> > I like replace(), or, shockingly, exchange().
> > 
> > But...   Can we simply make swap() return the previous value?
> > 
> > 	previous_min_rate = swap(&evport->qos.min_rate, min_rate);
> 
> As Alexander already pointed out, swap requires 'references' to two
> variables,
> in contrast to xchg which requires reference to variable and value.
> So we cannot use swap for cases:
>     old_value = __xchg(&x, new_value);
> 
> Regards
> Andrzej
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

  reply	other threads:[~2023-01-05 16:29 UTC|newest]

Thread overview: 306+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-22 11:46 [PATCH 00/19] Introduce __xchg, non-atomic xchg Andrzej Hajda
2022-12-22 11:46 ` Andrzej Hajda
2022-12-22 11:46 ` Andrzej Hajda
2022-12-22 11:46 ` Andrzej Hajda
2022-12-22 11:46 ` Andrzej Hajda
2022-12-22 11:46 ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` Andrzej Hajda
2022-12-22 11:46 ` [PATCH 01/19] arch/alpha: rename internal name __xchg to __arch_xchg Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46 ` [PATCH 02/19] arch/arc: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-29  9:32   ` Arnd Bergmann
2022-12-29  9:32     ` Arnd Bergmann
2022-12-29  9:32     ` Arnd Bergmann
2022-12-29  9:32     ` Arnd Bergmann
2022-12-29  9:32     ` Arnd Bergmann
2022-12-29  9:32     ` [Intel-gfx] " Arnd Bergmann
2022-12-29  9:32     ` Arnd Bergmann
2022-12-29 11:33     ` [PATCH v2] arch: rename all internal names " Andrzej Hajda
2022-12-29 11:33       ` Andrzej Hajda
2022-12-29 11:33       ` Andrzej Hajda
2022-12-29 11:33       ` [Intel-gfx] " Andrzej Hajda
2022-12-29 11:33       ` Andrzej Hajda
2022-12-29 11:33       ` Andrzej Hajda
2022-12-29 11:33       ` Andrzej Hajda
2022-12-29 23:00       ` kernel test robot
2022-12-29 23:00         ` kernel test robot
2022-12-29 23:00         ` kernel test robot
2022-12-29 23:00         ` kernel test robot
2022-12-29 23:00         ` [Intel-gfx] " kernel test robot
2022-12-30 14:15         ` [PATCH v3] " Andrzej Hajda
2022-12-30 14:15           ` Andrzej Hajda
2022-12-30 14:15           ` Andrzej Hajda
2022-12-30 14:15           ` Andrzej Hajda
2022-12-30 14:15           ` Andrzej Hajda
2022-12-30 14:15           ` [Intel-gfx] " Andrzej Hajda
2022-12-30 14:15           ` Andrzej Hajda
2023-01-03 10:02           ` Heiko Carstens
2023-01-03 10:02             ` Heiko Carstens
2023-01-03 10:02             ` Heiko Carstens
2023-01-03 10:02             ` Heiko Carstens
2023-01-03 10:02             ` [Intel-gfx] " Heiko Carstens
2023-01-03 10:02             ` Heiko Carstens
2023-01-03 10:02             ` Heiko Carstens
2023-01-03 10:02             ` Heiko Carstens
2023-01-05  9:54             ` [PATCH v4] " Andrzej Hajda
2023-01-05  9:54               ` Andrzej Hajda
2023-01-05  9:54               ` Andrzej Hajda
2023-01-05  9:54               ` Andrzej Hajda
2023-01-05  9:54               ` Andrzej Hajda
2023-01-05  9:54               ` [Intel-gfx] " Andrzej Hajda
2023-01-05  9:54               ` Andrzej Hajda
2023-01-16 10:00               ` Geert Uytterhoeven
2023-01-16 10:00               ` Geert Uytterhoeven
2023-01-16 10:00               ` Geert Uytterhoeven
2023-01-16 10:00                 ` Geert Uytterhoeven
2023-01-16 10:00                 ` Geert Uytterhoeven
2023-01-16 10:00                 ` [Intel-gfx] " Geert Uytterhoeven
2023-01-16 10:00                 ` Geert Uytterhoeven
2023-01-16 10:00                 ` Geert Uytterhoeven
2023-01-16 10:00                 ` Geert Uytterhoeven
2023-01-16 10:00                 ` Geert Uytterhoeven
2023-01-02  8:30       ` [PATCH v2] " Geert Uytterhoeven
2023-01-02  8:30         ` Geert Uytterhoeven
2023-01-02  8:30         ` Geert Uytterhoeven
2023-01-02  8:30         ` Geert Uytterhoeven
2023-01-02  8:30         ` Geert Uytterhoeven
2023-01-02  8:30         ` [Intel-gfx] " Geert Uytterhoeven
2023-01-02  8:30         ` Geert Uytterhoeven
2022-12-22 11:46 ` [PATCH 03/19] arch/arm: rename internal name " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46 ` [PATCH 04/19] arch/arm64: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` [PATCH 05/19] arch/hexagon: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` [PATCH 06/19] arch/ia64: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` [PATCH 07/19] arch/loongarch: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` [PATCH 08/19] arch/m68k: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` [PATCH 09/19] arch/mips: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` [PATCH 10/19] arch/openrisc: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` [PATCH 11/19] arch/parisc: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46 ` [PATCH 12/19] arch/powerpc: correct logged function names in xchg helpers Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46 ` [PATCH 13/19] arch/riscv: rename internal name __xchg to __arch_xchg Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-29 16:22   ` Palmer Dabbelt
2022-12-29 16:22     ` Palmer Dabbelt
2022-12-29 16:22     ` Palmer Dabbelt
2022-12-29 16:22     ` Palmer Dabbelt
2022-12-29 16:22     ` [Intel-gfx] " Palmer Dabbelt
2022-12-29 16:22     ` Palmer Dabbelt
2022-12-29 16:22     ` Palmer Dabbelt
2022-12-29 16:22     ` Palmer Dabbelt
2023-02-15  5:22   ` Palmer Dabbelt
2023-02-15  5:22     ` Palmer Dabbelt
2023-02-15  5:22     ` Palmer Dabbelt
2023-02-15  5:22     ` [Intel-gfx] " Palmer Dabbelt
2023-02-15  5:22     ` Palmer Dabbelt
2023-02-15  5:22     ` Palmer Dabbelt
2023-02-15  5:22     ` Palmer Dabbelt
2023-02-15  5:22     ` Palmer Dabbelt
2022-12-22 11:46 ` [PATCH 14/19] arch/s390: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` [PATCH 15/19] arch/sh: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` [PATCH 16/19] arch/sparc: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` [PATCH 17/19] arch/xtensa: " Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 11:46 ` [PATCH 18/19] linux/include: add non-atomic version of xchg Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 12:47   ` Andy Shevchenko
2022-12-22 12:47     ` Andy Shevchenko
2022-12-22 12:47     ` Andy Shevchenko
2022-12-22 12:47     ` Andy Shevchenko
2022-12-22 12:47     ` Andy Shevchenko
2022-12-22 12:47     ` Andy Shevchenko
2022-12-22 12:47     ` [Intel-gfx] " Andy Shevchenko
2022-12-22 12:47     ` Andy Shevchenko
2022-12-22 11:46 ` [PATCH 19/19] drm/i915/gt: use __xchg instead of internal helper Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` Andrzej Hajda
2022-12-22 11:46   ` [Intel-gfx] " Andrzej Hajda
2022-12-22 14:12 ` [PATCH 00/19] Introduce __xchg, non-atomic xchg Geert Uytterhoeven
2022-12-22 14:12   ` Geert Uytterhoeven
2022-12-22 14:12   ` Geert Uytterhoeven
2022-12-22 14:12   ` Geert Uytterhoeven
2022-12-22 14:12   ` Geert Uytterhoeven
2022-12-22 14:12   ` [Intel-gfx] " Geert Uytterhoeven
2022-12-22 14:12   ` Geert Uytterhoeven
2022-12-22 14:17   ` Andrzej Hajda
2022-12-22 14:17     ` Andrzej Hajda
2022-12-22 14:17     ` Andrzej Hajda
2022-12-22 14:17     ` Andrzej Hajda
2022-12-22 14:17     ` Andrzej Hajda
2022-12-22 14:17     ` [Intel-gfx] " Andrzej Hajda
2022-12-22 14:17     ` Andrzej Hajda
2022-12-22 17:21 ` Andrew Morton
2022-12-22 17:21   ` Andrew Morton
2022-12-22 17:21   ` Andrew Morton
2022-12-22 17:21   ` Andrew Morton
2022-12-22 17:21   ` [Intel-gfx] " Andrew Morton
2022-12-22 17:21   ` Andrew Morton
2022-12-22 17:21   ` Andrew Morton
2022-12-22 17:21   ` Andrew Morton
2022-12-23 14:23   ` Alexander Lobakin
2022-12-23 14:23     ` Alexander Lobakin
2022-12-23 14:23     ` Alexander Lobakin
2022-12-23 14:23     ` Alexander Lobakin
2022-12-23 14:23     ` [Intel-gfx] " Alexander Lobakin
2022-12-23 14:23     ` Alexander Lobakin
2022-12-23 14:23     ` Alexander Lobakin
2022-12-23 14:23     ` Alexander Lobakin
2022-12-29  9:54   ` Andrzej Hajda
2022-12-29  9:54     ` Andrzej Hajda
2022-12-29  9:54     ` Andrzej Hajda
2022-12-29  9:54     ` Andrzej Hajda
2022-12-29  9:54     ` Andrzej Hajda
2022-12-29  9:54     ` [Intel-gfx] " Andrzej Hajda
2022-12-29  9:54     ` Andrzej Hajda
2023-01-05 16:29     ` Daniel Vetter [this message]
2023-01-05 16:29       ` Daniel Vetter
2023-01-05 16:29       ` Daniel Vetter
2023-01-05 16:29       ` Daniel Vetter
2023-01-05 16:29       ` Daniel Vetter
2023-01-05 16:29       ` [Intel-gfx] " Daniel Vetter
2023-01-05 16:29       ` Daniel Vetter
2023-01-10 10:53       ` [RFC DO NOT MERGE] treewide: use __xchg in most obvious places Andrzej Hajda
2023-01-10 10:53         ` Andrzej Hajda
2023-01-10 10:53         ` Andrzej Hajda
2023-01-10 10:53         ` Andrzej Hajda
2023-01-10 10:53         ` Andrzej Hajda
2023-01-10 10:53         ` [Intel-gfx] " Andrzej Hajda
2023-01-10 10:53         ` Andrzej Hajda
2023-01-10 11:07         ` Andy Shevchenko
2023-01-10 11:07           ` Andy Shevchenko
2023-01-10 11:07           ` Andy Shevchenko
2023-01-10 11:07           ` Andy Shevchenko
2023-01-10 11:07           ` Andy Shevchenko
2023-01-10 11:07           ` Andy Shevchenko
2023-01-10 11:07           ` Andy Shevchenko
2023-01-10 11:07           ` [Intel-gfx] " Andy Shevchenko
2023-01-10 12:46           ` Andrzej Hajda
2023-01-10 12:46             ` Andrzej Hajda
2023-01-10 12:46             ` Andrzej Hajda
2023-01-10 12:46             ` Andrzej Hajda
2023-01-10 12:46             ` Andrzej Hajda
2023-01-10 12:46             ` Andrzej Hajda
2023-01-10 12:46             ` Andrzej Hajda
2023-01-10 12:46             ` Andrzej Hajda
2023-01-10 13:52             ` Andy Shevchenko
2023-01-10 13:52               ` Andy Shevchenko
2023-01-10 13:52               ` [Intel-gfx] " Andy Shevchenko
2023-01-10 13:52               ` Andy Shevchenko
2023-01-10 13:52               ` Andy Shevchenko
2023-01-10 13:52               ` Andy Shevchenko
2023-01-10 13:52               ` Andy Shevchenko
2023-01-10 13:52               ` Andy Shevchenko
2023-01-10 11:15       ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for " Patchwork
2022-12-22 18:25 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Introduce __xchg, non-atomic xchg Patchwork
2022-12-22 18:49 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-12-23  0:40 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2022-12-29 12:03 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Introduce __xchg, non-atomic xchg (rev2) Patchwork
2022-12-29 12:23 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
2022-12-30 14:32 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Introduce __xchg, non-atomic xchg (rev3) Patchwork
2022-12-30 14:50 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-12-30 17:13 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y7b6/7coJEVlTVxK@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=andrzej.hajda@intel.com \
    --cc=arnd@arndb.de \
    --cc=boqun.feng@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-hexagon@vger.kernel.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-snps-arc@lists.infradead.org \
    --cc=linux-xtensa@linux-xtensa.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=loongarch@lists.linux.dev \
    --cc=mark.rutland@arm.com \
    --cc=openrisc@lists.librecores.org \
    --cc=peterz@infradead.org \
    --cc=rodrigo.vivi@intel.com \
    --cc=sparclinux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.