All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@arm.com>
To: Wei Chen <Wei.Chen@arm.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Cc: Kaly Xin <Kaly.Xin@arm.com>, nd <nd@arm.com>,
	"sstabellini@kernel.org" <sstabellini@kernel.org>,
	Steve Capper <Steve.Capper@arm.com>
Subject: Re: [PATCH v2 16/19] xen/arm: Introduce a helper to synchronize SError
Date: Fri, 31 Mar 2017 12:06:03 +0100	[thread overview]
Message-ID: <017848e1-6281-9bcb-9cf5-c9a1c36ce832@arm.com> (raw)
In-Reply-To: <HE1PR08MB0587224B439C7A94A6DC728C9E370@HE1PR08MB0587.eurprd08.prod.outlook.com>



On 31/03/17 11:55, Wei Chen wrote:
> Hi Julien,

Hi Wei,

> On 2017/3/31 2:38, Julien Grall wrote:
>>
>>
>> On 30/03/17 19:32, Julien Grall wrote:
>>> On 30/03/17 19:28, Julien Grall wrote:
>>>> Hi Wei,
>>>>
>>>> On 30/03/17 10:13, Wei Chen wrote:
>>>>> +void synchronize_serror(void)
>>>>
>>>> Sorry for been late in the party. Looking at the way you use the
>>>> function, you execute depending on the behavior chosen by the user when
>>>> an SErrors happen. This behavior will not change at runtime, so always
>>>> checking the option chosen in the hot path does not sound very efficient.
>>>>
>>>> I would recommend to look at ALTERNATIVE and streamline (dsb sy, isb).
>>>> I.e
>>>>
>>>> ALTERNATIVE("dsb sy; isb", "nop; nop", ...) or the invert depending of
>>>> the place.
>>>
>>> To complete what I was suggestion, you could define:
>>>
>>> /* Synchronize SError unless the feature is selected */
>>> #define SYNCHRONIZE_SERROR(feat) ALTERNATIVE("dsb sy; isb", "nop; nop");
>>
>> Or even:
>>
>> /*
>>   * Synchronize SError unless the feature is selected.
>>   * This is relying on the SErrors are currently unmasked.
>>   */
>> #define SYNCHRONIZE_SERROR(feat)                                \
>>        do {                                                      \
>>          ASSERT(cpus_have_cap(feat) && local_abort_is_enabled());\
>>          ALTERNATIVE("dsb sy; isb", "nop; nop");                  \
>>        while (0)
>>
>> The ASSERT is here to check that we have abort enabled. Otherwise, doing
>> the synchronization would be pointless.
>>
>
> Think a bit more about it. This macro will import more check than read
> serror_op. This macro seems as a generic macro, it can be used in any
> place. So you enable the feature check and abort check. But in this
> patch, we know where the macro will be used, we know the abort is
> enabled. And want to reduce the overhead as much as possible.

ASSERTs are used to verify your assumption is correct, for non-debug 
built they will be turned into a NOP.

I care about overhead in non-debug build, it is not much a concern for 
debug build. In the latter it is more important to verify the correctness.

The abort bit is enabled at the entry in the hypervisor, and neither you 
nor I can tell if we need to disable abort in the future in some path. 
This ASSERT will catch those changes.

So please give me a reason to remove it, because I see only benefits so far.

Cheers,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

  reply	other threads:[~2017-03-31 11:06 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-30  9:13 [PATCH v2 00/19] Provide a command line option to choose how to handle SErrors Wei Chen
2017-03-30  9:13 ` [PATCH v2 01/19] xen/arm: Save ESR_EL2 to avoid using mismatched value in syndrome check Wei Chen
2017-03-30 13:31   ` Julien Grall
2017-03-31  3:26     ` Wei Chen
2017-03-30  9:13 ` [PATCH v2 02/19] xen/arm: Remove vwfi while setting HCR_EL2 in init_traps Wei Chen
2017-03-30 17:05   ` Julien Grall
2017-03-30 22:29     ` Stefano Stabellini
2017-03-31  5:58       ` Wei Chen
2017-03-31  8:34       ` Julien Grall
2017-03-30  9:13 ` [PATCH v2 03/19] xen/arm: Move parse_vwfi from trap.c to domain.c Wei Chen
2017-03-30  9:13 ` [PATCH v2 04/19] xen/arm: Restore HCR_EL2 register Wei Chen
2017-03-30 17:07   ` Julien Grall
2017-03-30 22:03     ` Stefano Stabellini
2017-03-31  2:10       ` Wei Chen
2017-03-31  8:39         ` Julien Grall
2017-03-31  8:59           ` Wei Chen
2017-03-30  9:13 ` [PATCH v2 05/19] xen/arm: Avoid setting/clearing HCR_RW at every context switch Wei Chen
2017-03-30 17:12   ` Julien Grall
2017-03-30 21:21   ` Stefano Stabellini
2017-03-30  9:13 ` [PATCH v2 06/19] xen/arm: Save HCR_EL2 when a guest took the SError Wei Chen
2017-03-30  9:13 ` [PATCH v2 07/19] xen/arm: Introduce a virtual abort injection helper Wei Chen
2017-03-30 17:20   ` Julien Grall
2017-03-30 21:24     ` Stefano Stabellini
2017-03-31  5:25     ` Wei Chen
2017-03-30  9:13 ` [PATCH v2 08/19] xen/arm: Introduce a command line parameter for SErrors/Aborts Wei Chen
2017-03-30 17:39   ` Julien Grall
2017-03-31  5:28     ` Wei Chen
2017-03-30  9:13 ` [PATCH v2 09/19] xen/arm: Introduce a initcall to update cpu_hwcaps by serror_op Wei Chen
2017-03-30 17:51   ` Julien Grall
2017-03-30 18:02   ` Julien Grall
2017-03-30 21:28     ` Stefano Stabellini
2017-03-31  8:50       ` Julien Grall
2017-03-30  9:13 ` [PATCH v2 10/19] xen/arm64: Use alternative to skip the check of pending serrors Wei Chen
2017-03-30  9:13 ` [PATCH v2 11/19] xen/arm32: " Wei Chen
2017-03-30 18:06   ` Julien Grall
2017-03-30 21:29     ` Stefano Stabellini
2017-03-31  5:33       ` Wei Chen
2017-03-30  9:13 ` [PATCH v2 12/19] xen/arm: Move macro VABORT_GEN_BY_GUEST to common header Wei Chen
2017-03-30 21:36   ` Stefano Stabellini
2017-03-31  5:35     ` Wei Chen
2017-03-30  9:13 ` [PATCH v2 13/19] xen/arm: Introduce new helpers to handle guest/hyp SErrors Wei Chen
2017-03-30  9:13 ` [PATCH v2 14/19] xen/arm: Replace do_trap_guest_serror with new helpers Wei Chen
2017-03-30  9:13 ` [PATCH v2 15/19] xen/arm: Unmask the Abort/SError bit in the exception entries Wei Chen
2017-03-30  9:13 ` [PATCH v2 16/19] xen/arm: Introduce a helper to synchronize SError Wei Chen
2017-03-30 18:28   ` Julien Grall
2017-03-30 18:32     ` Julien Grall
2017-03-30 18:37       ` Julien Grall
2017-03-31  5:51         ` Wei Chen
2017-03-31 10:55         ` Wei Chen
2017-03-31 11:06           ` Julien Grall [this message]
2017-03-31 11:09             ` Wei Chen
2017-03-30  9:13 ` [PATCH v2 17/19] xen/arm: Isolate the SError between the context switch of 2 vCPUs Wei Chen
2017-03-30 21:49   ` Stefano Stabellini
2017-03-30 22:00     ` Julien Grall
2017-03-31  5:52       ` Wei Chen
2017-03-30  9:13 ` [PATCH v2 18/19] xen/arm: Prevent slipping hypervisor SError to guest Wei Chen
2017-03-30  9:13 ` [PATCH v2 19/19] xen/arm: Handle guest external abort as guest SError Wei Chen

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=017848e1-6281-9bcb-9cf5-c9a1c36ce832@arm.com \
    --to=julien.grall@arm.com \
    --cc=Kaly.Xin@arm.com \
    --cc=Steve.Capper@arm.com \
    --cc=Wei.Chen@arm.com \
    --cc=nd@arm.com \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xen.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.