lkml.org 
[lkml]   [2021]   [Oct]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.14 40/48] selftests: KVM: Align SMCCC call with the spec in steal_time
    Date
    From: Oliver Upton <oupton@google.com>

    [ Upstream commit 01f91acb55be7aac3950b89c458bcea9ef6e4f49 ]

    The SMC64 calling convention passes a function identifier in w0 and its
    parameters in x1-x17. Given this, there are two deviations in the
    SMC64 call performed by the steal_time test: the function identifier is
    assigned to a 64 bit register and the parameter is only 32 bits wide.

    Align the call with the SMCCC by using a 32 bit register to handle the
    function identifier and increasing the parameter width to 64 bits.

    Suggested-by: Andrew Jones <drjones@redhat.com>
    Signed-off-by: Oliver Upton <oupton@google.com>
    Reviewed-by: Andrew Jones <drjones@redhat.com>
    Message-Id: <20210921171121.2148982-3-oupton@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/kvm/steal_time.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/tools/testing/selftests/kvm/steal_time.c b/tools/testing/selftests/kvm/steal_time.c
    index 2172d65b85e4..62f2eb9ee3d5 100644
    --- a/tools/testing/selftests/kvm/steal_time.c
    +++ b/tools/testing/selftests/kvm/steal_time.c
    @@ -116,12 +116,12 @@ struct st_time {
    uint64_t st_time;
    };

    -static int64_t smccc(uint32_t func, uint32_t arg)
    +static int64_t smccc(uint32_t func, uint64_t arg)
    {
    unsigned long ret;

    asm volatile(
    - "mov x0, %1\n"
    + "mov w0, %w1\n"
    "mov x1, %2\n"
    "hvc #0\n"
    "mov %0, x0\n"
    --
    2.33.0


    \
     
     \ /
      Last update: 2021-10-08 13:43    [W:4.283 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site