All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@arm.com>
To: Volodymyr Babchuk <volodymyr_babchuk@epam.com>, xen-devel@lists.xen.org
Cc: sstabellini@kernel.org, andre.przywara@linaro.org
Subject: Re: [PATCH v2 11/15] xen/arm64: Add ARM_SMCCC_ARCH_WORKAROUND_1 BP hardening support
Date: Mon, 12 Feb 2018 17:26:36 +0000	[thread overview]
Message-ID: <28cd1237-f06b-8d9c-5942-6582bbe21061@arm.com> (raw)
In-Reply-To: <a3e67bf7-f8e3-3180-57e4-8b72d3ee7ca0@epam.com>



On 12/02/18 17:20, Volodymyr Babchuk wrote:
> Julien,

Hi,

> On 12.02.18 19:12, Julien Grall wrote:
>> On 12/02/18 16:55, Volodymyr Babchuk wrote:
>>> Hi Julien,
>>
>> Hi Volodymyr,
>>
>>> On 08.02.18 21:21, Julien Grall wrote:
>>>> Add the detection and runtime code for ARM_SMCCC_ARCH_WORKAROUND_1.
>>>>
>>>> Signed-off-by: Julien Grall <julien.grall@arm.com>
>>>>
>>>> ---
>>>>      Changes in v2:
>>>>          - Patch added
>>>> ---
>>>>   xen/arch/arm/arm64/bpi.S    | 12 ++++++++++++
>>>>   xen/arch/arm/cpuerrata.c    | 32 +++++++++++++++++++++++++++++++-
>>>>   xen/include/asm-arm/smccc.h |  1 +
>>>>   3 files changed, 44 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/xen/arch/arm/arm64/bpi.S b/xen/arch/arm/arm64/bpi.S
>>>> index 4b7f1dc21f..ef237de7bd 100644
>>>> --- a/xen/arch/arm/arm64/bpi.S
>>>> +++ b/xen/arch/arm/arm64/bpi.S
>>>> @@ -16,6 +16,8 @@
>>>>    * along with this program.  If not, see 
>>>> <http://www.gnu.org/licenses/>.
>>>>    */
>>>> +#include <asm/smccc.h>
>>>> +
>>>>   .macro ventry target
>>>>       .rept 31
>>>>       nop
>>>> @@ -81,6 +83,16 @@ ENTRY(__psci_hyp_bp_inval_start)
>>>>       add     sp, sp, #(8 * 18)
>>>>   ENTRY(__psci_hyp_bp_inval_end)
>>>> +ENTRY(__smccc_workaround_1_smc_start)
>>>> +    sub     sp, sp, #(8 * 4)
>>>> +    stp     x2, x3, [sp, #(8 * 0)]
>>>> +    stp     x0, x1, [sp, #(8 * 2)]
>>>> +    mov     w0, #ARM_SMCCC_ARCH_WORKAROUND_1_FID
>>>> +    ldp     x2, x3, [sp, #(8 * 0)]
>>>> +    ldp     x0, x1, [sp, #(8 * 2)]
>>>> +    add     sp, sp, #(8 * 4)
>>>> +ENTRY(__smccc_workaround_1_smc_end)
>>>> +
>>>
>>> This code confuses me. You allocate 32 bytes on stack, save x0-x4 
>>> there, then you load ARM_SMCCC_ARCH_WORKAROUND_1_FID into w0 and 
>>> restore values of x0-x4, overwriting value written into w0. Am I 
>>> missing something?
>>
>> The call to ARM_SMCCC_ARCH_WORKAROUND_1 does not return any value. 
>> Even if it were, this code is executed on exception entry before 
>> jumping into the trap helper. So you want to restore all the registers 
>> saved.
>>
> I believe you missed smc instruction in the code above.

Whoops yes. I will fix it.

> 
>>>
>>> Btw, you can use something like stp    x0, x1, [sp, #-16]! to avoid 
>>> manual adjustment of sp. This will save you two instructions.
>>
>> It was pointed out on Linux Arm that updating sp once *might* be 
>> faster on some uarch.
> 
> So is this code is targeted for that some specific uarch? Then I would 
> like to see a comment describing why you choose this approach.

I can't confirm whether this will improve uarch A, B, C or Z. I just 
followed suggestion on Linux Arm (see [1]) and a personal choice on how 
to write assembly code. It is quite similar that why would I choose the 
other way around?

Cheers,

[1] https://www.spinics.net/lists/arm-kernel/msg626659.html

-- 
Julien Grall

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

  reply	other threads:[~2018-02-12 17:26 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-08 19:21 [PATCH v2 00/15] xen/arm: PSCI 1.1 and SMCCC-1.1 support and XSA-254 variant 2 update Julien Grall
2018-02-08 19:21 ` [PATCH v2 01/15] xen/arm: psci: Rework the PSCI definitions Julien Grall
2018-02-08 19:21 ` [PATCH v2 02/15] xen/arm: vpsci: Add support for PSCI 1.1 Julien Grall
2018-02-09 16:07   ` Volodymyr Babchuk
2018-02-09 16:13     ` Julien Grall
2018-02-09 16:30       ` Volodymyr Babchuk
2018-02-12 14:43   ` Wei Liu
2018-02-12 20:12   ` Mirela Simonovic
2018-02-12 21:41     ` Julien Grall
2018-02-12 23:16       ` Mirela Simonovic
2018-02-12 23:44         ` Julien Grall
2018-02-14 19:14           ` Mirela Simonovic
2018-02-15 11:25             ` Julien Grall
2018-02-08 19:21 ` [PATCH v2 03/15] xen/arm: vsmc: Implement SMCCC 1.1 Julien Grall
2018-02-09 16:08   ` Volodymyr Babchuk
2018-02-09 16:15     ` Julien Grall
2018-02-09 16:47       ` Volodymyr Babchuk
2018-02-08 19:21 ` [PATCH v2 04/15] xen/arm: vsmc: Implement SMCCC_ARCH_WORKAROUND_1 BP hardening support Julien Grall
2018-02-20  0:26   ` Stefano Stabellini
2018-02-08 19:21 ` [PATCH v2 05/15] xen/arm: Adapt smccc.h to be able to use it in assembly code Julien Grall
2018-02-20  0:28   ` Stefano Stabellini
2018-02-08 19:21 ` [PATCH v2 06/15] xen/arm64: Implement a fast path for handling SMCCC_ARCH_WORKAROUND_1 Julien Grall
2018-02-08 19:21 ` [PATCH v2 07/15] xen/arm64: Print a per-CPU message with the BP hardening method used Julien Grall
2018-02-09 16:43   ` Volodymyr Babchuk
2018-02-08 19:21 ` [PATCH v2 08/15] xen/arm: smccc: Add macros SMCCC_VERSION, SMCCC_VERSION_{MINOR, MAJOR} Julien Grall
2018-02-09 16:11   ` Volodymyr Babchuk
2018-02-08 19:21 ` [PATCH v2 09/15] xen/arm: psci: Detect SMCCC version Julien Grall
2018-02-09 17:04   ` Volodymyr Babchuk
2018-02-09 17:09     ` Julien Grall
2018-02-12 14:43       ` Volodymyr Babchuk
2018-02-12 15:06         ` Julien Grall
2018-02-08 19:21 ` [PATCH v2 10/15] xen/arm: smccc: Implement SMCCC v1.1 inline primitive Julien Grall
2018-02-08 19:21 ` [PATCH v2 11/15] xen/arm64: Add ARM_SMCCC_ARCH_WORKAROUND_1 BP hardening support Julien Grall
2018-02-12 16:55   ` Volodymyr Babchuk
2018-02-12 17:12     ` Julien Grall
2018-02-12 17:20       ` Volodymyr Babchuk
2018-02-12 17:26         ` Julien Grall [this message]
2018-02-08 19:22 ` [PATCH v2 12/15] xen/arm64: Kill PSCI_GET_VERSION as a variant-2 workaround Julien Grall
2018-02-13 11:59   ` Volodymyr Babchuk
2018-02-08 19:22 ` [PATCH v2 13/15] xen/arm: vpsci: Remove parameter 'ver' from do_common_cpu Julien Grall
2018-02-08 19:22 ` [PATCH v2 14/15] xen/arm: psci: Consolidate PSCI version print Julien Grall
2018-02-09 16:40   ` Volodymyr Babchuk
2018-02-08 19:22 ` [PATCH v2 15/15] xen/arm: psci: Prefix with static any functions not exported Julien Grall
2018-02-09 16:40   ` Volodymyr Babchuk

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=28cd1237-f06b-8d9c-5942-6582bbe21061@arm.com \
    --to=julien.grall@arm.com \
    --cc=andre.przywara@linaro.org \
    --cc=sstabellini@kernel.org \
    --cc=volodymyr_babchuk@epam.com \
    --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.