From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>,
Alistair Francis <alistair.francis@wdc.com>,
Connor Davis <connojdavis@gmail.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
George Dunlap <george.dunlap@citrix.com>,
Julien Grall <julien@xen.org>,
Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3 15/34] xen/riscv: introduce atomic.h
Date: Tue, 23 Jan 2024 12:21:10 +0200 [thread overview]
Message-ID: <92d7caf20a37b68dce7676812c2780bc2fbc00cf.camel@gmail.com> (raw)
In-Reply-To: <2429395f-3ce8-4f17-aabe-78af2446ff6d@suse.com>
On Mon, 2024-01-22 at 17:56 +0100, Jan Beulich wrote:
> On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > --- /dev/null
> > +++ b/xen/arch/riscv/include/asm/atomic.h
> > @@ -0,0 +1,384 @@
> > +/* SPDX-License-Identifier: GPL-2.0-only */
> > +/*
> > + * Taken and modified from Linux.
> > + *
> > + * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
> > + * Copyright (C) 2012 Regents of the University of California
> > + * Copyright (C) 2017 SiFive
> > + * Copyright (C) 2021 Vates SAS
> > + */
> > +
> > +#ifndef _ASM_RISCV_ATOMIC_H
> > +#define _ASM_RISCV_ATOMIC_H
> > +
> > +#include <xen/atomic.h>
> > +#include <asm/cmpxchg.h>
> > +#include <asm/fence.h>
> > +#include <asm/io.h>
> > +#include <asm/system.h>
> > +
> > +void __bad_atomic_size(void);
> > +
> > +static always_inline void read_atomic_size(const volatile void *p,
> > + void *res,
> > + unsigned int size)
> > +{
> > + switch ( size )
> > + {
> > + case 1: *(uint8_t *)res = readb((const uint8_t *)p); break;
> > + case 2: *(uint16_t *)res = readw((const uint16_t *)p); break;
> > + case 4: *(uint32_t *)res = readl((const uint32_t *)p); break;
> > + case 8: *(uint32_t *)res = readq((const uint64_t *)p); break;
>
> Just like const, you should also avoid casting away volatile.
Thanks. I will drop casting.
>
> > + default: __bad_atomic_size(); break;
> > + }
> > +}
> > +
> > +#define read_atomic(p)
> > ({ \
> > + union { typeof(*p) val; char c[0]; }
> > x_; \
> > + read_atomic_size(p, x_.c,
> > sizeof(*p)); \
> > +
> > x_.val;
> > \
> > +})
> > +
> > +
>
> Nit: No double blank lines please.
Sure. I'll drtop one blank line.
>
> > +#define write_atomic(p, x)
> > ({ \
> > + typeof(*p) x__ =
> > (x); \
> > + switch ( sizeof(*p)
> > ) \
> > +
> > { \
>
> These lines look excessively long, possibly as a result of leaving
> hard tabs
> in place.
>
> Overall some of the style comments on the earlier patch seem to apply
> here
> as well.
>
> > --- /dev/null
> > +++ b/xen/arch/riscv/include/asm/fence.h
> > @@ -0,0 +1,13 @@
> > +/* SPDX-License-Identifier: GPL-2.0-or-later */
> > +#ifndef _ASM_RISCV_FENCE_H
> > +#define _ASM_RISCV_FENCE_H
> > +
> > +#ifdef CONFIG_SMP
> > +#define RISCV_ACQUIRE_BARRIER "\tfence r , rw\n"
> > +#define RISCV_RELEASE_BARRIER "\tfence rw, w\n"
> > +#else
> > +#define RISCV_ACQUIRE_BARRIER
> > +#define RISCV_RELEASE_BARRIER
> > +#endif
>
> Do you really care about the !SMP case? On x86 at least we stopped
> special-
> casing that configuration many years ago (the few cases where for
> typically
> build reasons it matters, using CONFIG_NR_CPUS is sufficient). If you
> care
> about it, there needs to be somewhere you actually #define
> CONFIG_SMP.
Can't we use instead of CONFIG_SMP - CONFIG_NR_CPUS? I missed that
CONFIG_SMP is present in Linux, but not in Xen.
~ Oleksii
next prev parent reply other threads:[~2024-01-23 10:21 UTC|newest]
Thread overview: 146+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-22 15:12 [PATCH v3 00/34] Enable build of full Xen for RISC-V Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 01/34] xen/riscv: disable unnecessary configs Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 02/34] xen/riscv: use some asm-generic headers Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 03/34] xen: add support in public/hvm/save.h for PPC and RISC-V Oleksii Kurochko
2024-01-04 11:01 ` Jan Beulich
2024-01-08 14:46 ` Oleksii
2023-12-22 15:12 ` [PATCH v3 04/34] xen/riscv: introduce cpufeature.h Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 05/34] xen/riscv: introduce guest_atomics.h Oleksii Kurochko
2024-01-11 15:57 ` Jan Beulich
2024-01-15 9:26 ` Oleksii
2023-12-22 15:12 ` [PATCH v3 06/34] xen: avoid generation of empty asm/iommu.h Oleksii Kurochko
2024-01-04 11:04 ` Jan Beulich
2024-01-08 14:47 ` Oleksii
2023-12-22 15:12 ` [PATCH v3 07/34] xen/asm-generic: introdure nospec.h Oleksii Kurochko
2024-01-04 11:06 ` Jan Beulich
2024-01-04 11:13 ` Andrew Cooper
2024-01-04 12:03 ` Jan Beulich
2024-01-08 14:58 ` Oleksii
2024-01-05 19:02 ` Shawn Anastasio
2023-12-22 15:12 ` [PATCH v3 08/34] xen/riscv: introduce setup.h Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 09/34] xen/riscv: introduce system.h Oleksii Kurochko
2024-01-11 16:00 ` Jan Beulich
2024-01-15 9:28 ` Oleksii
2023-12-22 15:12 ` [PATCH v3 10/34] xen/riscv: introduce bitops.h Oleksii Kurochko
2024-01-15 16:44 ` Jan Beulich
2024-01-16 13:06 ` Oleksii
2024-01-16 13:24 ` Jan Beulich
2024-01-17 11:13 ` Oleksii
2024-01-17 11:17 ` Jan Beulich
2024-01-17 11:37 ` Oleksii
2024-01-17 13:42 ` Jan Beulich
2024-01-18 9:43 ` Oleksii
2024-01-18 11:01 ` Jan Beulich
2024-01-19 9:16 ` Oleksii
2024-01-19 9:20 ` Jan Beulich
2024-01-18 11:03 ` Jan Beulich
2024-01-19 9:09 ` Oleksii
2024-01-19 9:14 ` Jan Beulich
2024-01-19 9:30 ` Oleksii
2023-12-22 15:12 ` [PATCH v3 11/34] xen/riscv: introduce flushtlb.h Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 12/34] xen/riscv: introduce smp.h Oleksii Kurochko
2024-01-11 16:36 ` Jan Beulich
2024-01-15 9:35 ` Oleksii
2023-12-22 15:12 ` [PATCH v3 13/34] xen/riscv: introduce cmpxchg.h Oleksii Kurochko
2024-01-22 16:27 ` Jan Beulich
2024-01-23 10:15 ` Oleksii
2024-01-23 10:28 ` Jan Beulich
2024-01-23 12:18 ` Oleksii
2024-01-23 13:27 ` Jan Beulich
2024-01-24 9:15 ` Oleksii
2024-01-30 14:57 ` Oleksii
2024-01-30 15:05 ` Jan Beulich
2024-01-30 15:16 ` Oleksii
2023-12-22 15:12 ` [PATCH v3 14/34] xen/riscv: introduce io.h Oleksii Kurochko
2024-01-15 16:57 ` Jan Beulich
2024-01-16 15:20 ` Oleksii
2024-01-16 16:09 ` Jan Beulich
2024-01-31 17:30 ` Oleksii
2023-12-22 15:12 ` [PATCH v3 15/34] xen/riscv: introduce atomic.h Oleksii Kurochko
2024-01-22 16:56 ` Jan Beulich
2024-01-23 10:21 ` Oleksii [this message]
2024-01-23 10:30 ` Jan Beulich
2024-01-23 12:24 ` Oleksii
2024-01-23 13:30 ` Jan Beulich
2024-01-24 9:23 ` Oleksii
2024-01-24 11:19 ` Jan Beulich
2024-01-24 14:56 ` Oleksii
2023-12-22 15:13 ` [PATCH v3 16/34] xen/lib: introduce generic find next bit operations Oleksii Kurochko
2024-01-23 11:14 ` Jan Beulich
2024-01-23 12:34 ` Oleksii
2024-01-23 13:37 ` Jan Beulich
2024-01-24 9:34 ` Oleksii
2024-01-24 11:24 ` Jan Beulich
2024-01-24 15:04 ` Oleksii
2024-01-24 15:32 ` Jan Beulich
2024-01-26 9:44 ` Oleksii
2024-01-26 9:48 ` Jan Beulich
2024-01-26 9:56 ` Oleksii
2023-12-22 15:13 ` [PATCH v3 17/34] xen/riscv: add compilation of generic find-next-bit.c Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 18/34] xen/riscv: introduce domain.h Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 19/34] xen/riscv: introduce guest_access.h Oleksii Kurochko
2024-01-23 11:16 ` Jan Beulich
2023-12-22 15:13 ` [PATCH v3 20/34] xen/riscv: introduce irq.h Oleksii Kurochko
2024-01-23 11:18 ` Jan Beulich
2024-01-23 12:25 ` Oleksii
2023-12-22 15:13 ` [PATCH v3 21/34] xen/riscv: introduce p2m.h Oleksii Kurochko
2024-01-11 23:11 ` Shawn Anastasio
2024-01-15 9:37 ` Oleksii
2024-01-12 10:39 ` Julien Grall
2024-01-12 11:06 ` Jan Beulich
2024-01-12 11:09 ` Julien Grall
2024-01-15 10:35 ` Oleksii
2024-01-15 11:01 ` Jan Beulich
2024-01-16 9:44 ` Oleksii
2024-01-16 17:12 ` Julien Grall
2024-01-17 9:32 ` Oleksii
2023-12-22 15:13 ` [PATCH v3 22/34] xen/riscv: introduce regs.h Oleksii Kurochko
2024-01-15 17:00 ` Jan Beulich
2024-01-16 9:46 ` Oleksii
2023-12-22 15:13 ` [PATCH v3 23/34] xen/riscv: introduce time.h Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 24/34] xen/riscv: introduce event.h Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 25/34] xen/riscv: introduce monitor.h Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 26/34] xen/riscv: add definition of __read_mostly Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 27/34] xen/riscv: define an address of frame table Oleksii Kurochko
2024-01-23 11:32 ` Jan Beulich
2024-01-23 16:50 ` Oleksii
2024-01-24 8:07 ` Jan Beulich
2024-01-24 10:01 ` Oleksii
2023-12-22 15:13 ` [PATCH v3 28/34] xen/riscv: add required things to current.h Oleksii Kurochko
2024-01-23 11:35 ` Jan Beulich
2024-01-23 16:52 ` Oleksii
2023-12-22 15:13 ` [PATCH v3 29/34] xen/riscv: add minimal stuff to page.h to build full Xen Oleksii Kurochko
2024-01-23 11:36 ` Jan Beulich
2024-01-23 16:54 ` Oleksii
2024-01-24 8:09 ` Jan Beulich
2024-01-24 10:02 ` Oleksii
2023-12-22 15:13 ` [PATCH v3 30/34] xen/riscv: add minimal stuff to processor.h " Oleksii Kurochko
2024-01-23 11:39 ` Jan Beulich
2024-01-23 17:08 ` Oleksii
2024-01-24 8:19 ` Jan Beulich
2024-01-24 10:12 ` Oleksii
2024-01-24 11:27 ` Jan Beulich
2024-01-24 15:33 ` Oleksii
2024-01-24 15:38 ` Jan Beulich
2023-12-22 15:13 ` [PATCH v3 31/34] xen/riscv: add minimal stuff to mm.h " Oleksii Kurochko
2023-12-22 16:32 ` Oleksii
2023-12-22 18:16 ` Oleksii
2024-01-11 16:43 ` Jan Beulich
2024-01-15 10:36 ` Oleksii
2024-01-23 13:03 ` Jan Beulich
2024-01-23 17:27 ` Oleksii
2024-01-24 8:23 ` Jan Beulich
2024-02-02 17:30 ` Oleksii
2024-02-05 7:46 ` Jan Beulich
2024-02-05 12:49 ` Oleksii
2024-02-05 14:05 ` Jan Beulich
2024-02-05 14:40 ` Oleksii
2023-12-22 15:13 ` [PATCH v3 32/34] xen/rirscv: add minimal amount of stubs " Oleksii Kurochko
2024-01-23 13:20 ` Jan Beulich
2024-01-23 17:31 ` Oleksii
2023-12-22 15:13 ` [PATCH v3 33/34] xen/riscv: enable full Xen build Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 34/34] xen/README: add compiler and binutils versions for RISC-V64 Oleksii Kurochko
2024-01-23 11:22 ` Jan Beulich
2024-01-23 14:49 ` Oleksii
2024-01-23 17:05 ` Jan Beulich
2024-01-23 17:34 ` Oleksii
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=92d7caf20a37b68dce7676812c2780bc2fbc00cf.camel@gmail.com \
--to=oleksii.kurochko@gmail.com \
--cc=alistair.francis@wdc.com \
--cc=andrew.cooper3@citrix.com \
--cc=bobbyeshleman@gmail.com \
--cc=connojdavis@gmail.com \
--cc=george.dunlap@citrix.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=sstabellini@kernel.org \
--cc=wl@xen.org \
--cc=xen-devel@lists.xenproject.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.