From: David Marchand <david.marchand@redhat.com>
To: Phil Yang <phil.yang@arm.com>, Aaron Conole <aconole@redhat.com>
Cc: dev <dev@dpdk.org>, David Christensen <drc@linux.vnet.ibm.com>,
Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>,
"Ruifeng Wang (Arm Technology China)" <ruifeng.wang@arm.com>,
nd <nd@arm.com>, Dodji Seketeli <dodji@redhat.com>,
Neil Horman <nhorman@tuxdriver.com>,
Ray Kinsella <mdr@ashroe.eu>, Harman Kalra <hkalra@marvell.com>
Subject: Re: [dpdk-dev] [PATCH 2/2] eal: use c11 atomics for interrupt status
Date: Wed, 8 Jul 2020 14:29:19 +0200 [thread overview]
Message-ID: <CAJFAV8wFqEftg4LNC5iXFf19eD9ej311Xz4L2fuAjLsG9BAGvg@mail.gmail.com> (raw)
In-Reply-To: <1591871065-12461-2-git-send-email-phil.yang@arm.com>
On Thu, Jun 11, 2020 at 12:25 PM Phil Yang <phil.yang@arm.com> wrote:
>
> The event status is defined as a volatile variable and shared
> between threads. Use c11 atomics with explicit ordering instead
> of rte_atomic ops which enforce unnecessary barriers on aarch64.
>
> Signed-off-by: Phil Yang <phil.yang@arm.com>
> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
> ---
> lib/librte_eal/include/rte_eal_interrupts.h | 2 +-
> lib/librte_eal/linux/eal_interrupts.c | 47 ++++++++++++++++++++---------
> 2 files changed, 34 insertions(+), 15 deletions(-)
>
> diff --git a/lib/librte_eal/include/rte_eal_interrupts.h b/lib/librte_eal/include/rte_eal_interrupts.h
> index 773a34a..b1e8a29 100644
> --- a/lib/librte_eal/include/rte_eal_interrupts.h
> +++ b/lib/librte_eal/include/rte_eal_interrupts.h
> @@ -59,7 +59,7 @@ enum {
>
> /** interrupt epoll event obj, taken by epoll_event.ptr */
> struct rte_epoll_event {
> - volatile uint32_t status; /**< OUT: event status */
> + uint32_t status; /**< OUT: event status */
> int fd; /**< OUT: event fd */
> int epfd; /**< OUT: epoll instance the ev associated with */
> struct rte_epoll_data epdata;
I got a reject from the ABI check in my env.
1 function with some indirect sub-type change:
[C]'function int rte_pci_ioport_map(rte_pci_device*, int,
rte_pci_ioport*)' at pci.c:756:1 has some indirect sub-type changes:
parameter 1 of type 'rte_pci_device*' has sub-type changes:
in pointed to type 'struct rte_pci_device' at rte_bus_pci.h:57:1:
type size hasn't changed
1 data member changes (2 filtered):
type of 'rte_intr_handle rte_pci_device::intr_handle' changed:
type size hasn't changed
1 data member change:
type of 'rte_epoll_event rte_intr_handle::elist[512]' changed:
array element type 'struct rte_epoll_event' changed:
type size hasn't changed
1 data member change:
type of 'volatile uint32_t rte_epoll_event::status' changed:
entity changed from 'volatile uint32_t' to 'typedef
uint32_t' at stdint-uintn.h:26:1
type size hasn't changed
type size hasn't changed
This is probably harmless in our case (going from volatile to non
volatile), but it won't pass the check in the CI without an exception
rule.
Note: checking on the test-report ml, I saw nothing, but ovsrobot did
catch the issue with this change too, Aaron?
--
David Marchand
next prev parent reply other threads:[~2020-07-08 12:29 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-11 10:24 [dpdk-dev] [PATCH 1/2] eal: remove redundant code Phil Yang
2020-06-11 10:24 ` [dpdk-dev] [PATCH 2/2] eal: use c11 atomics for interrupt status Phil Yang
2020-07-08 5:24 ` Honnappa Nagarahalli
2020-07-08 11:41 ` Harman Kalra
2020-07-09 5:17 ` Phil Yang
2020-07-08 12:29 ` David Marchand [this message]
2020-07-08 13:43 ` Aaron Conole
2020-07-08 13:59 ` David Marchand
2020-07-08 20:48 ` Aaron Conole
2020-07-08 15:04 ` Kinsella, Ray
2020-07-09 5:21 ` Phil Yang
2020-07-08 5:14 ` [dpdk-dev] [PATCH 1/2] eal: remove redundant code Honnappa Nagarahalli
2020-07-08 5:20 ` Phil Yang
2020-07-09 6:46 ` [dpdk-dev] [PATCH v2] eal: use c11 atomic built-ins for interrupt status Phil Yang
2020-07-09 8:02 ` Stefan Puiu
2020-07-09 8:07 ` Phil Yang
2020-07-09 8:34 ` [dpdk-dev] [PATCH v3] " Phil Yang
2020-07-09 10:30 ` David Marchand
2020-07-10 7:18 ` Dodji Seketeli
2020-07-10 6:32 ` David Marchand
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=CAJFAV8wFqEftg4LNC5iXFf19eD9ej311Xz4L2fuAjLsG9BAGvg@mail.gmail.com \
--to=david.marchand@redhat.com \
--cc=aconole@redhat.com \
--cc=dev@dpdk.org \
--cc=dodji@redhat.com \
--cc=drc@linux.vnet.ibm.com \
--cc=hkalra@marvell.com \
--cc=honnappa.nagarahalli@arm.com \
--cc=mdr@ashroe.eu \
--cc=nd@arm.com \
--cc=nhorman@tuxdriver.com \
--cc=phil.yang@arm.com \
--cc=ruifeng.wang@arm.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).