public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Nikos Nikoleris <nikos.nikoleris@arm.com>
To: Andrew Jones <andrew.jones@linux.dev>
Cc: kvm@vger.kernel.org, kvmarm@lists.linux.dev,
	luc.maranget@inria.fr, Jade Alglave <Jade.Alglave@arm.com>
Subject: Re: [kvm-unit-tests PATCH] arm64: Make vector_table and vector_stub weak symbols
Date: Tue, 23 May 2023 10:52:37 +0100	[thread overview]
Message-ID: <cbda3543-1cad-b05b-1188-e0ecba6f302d@arm.com> (raw)
In-Reply-To: <20230523-3729e940652cc3b2b753cb8d@orel>



On 23/05/2023 09:56, Andrew Jones wrote:
> On Mon, May 22, 2023 at 02:54:14PM +0100, Nikos Nikoleris wrote:
>> On 18/05/2023 17:06, Andrew Jones wrote:
>>> On Mon, May 15, 2023 at 11:15:17PM +0100, Nikos Nikoleris wrote:
>>>> This changes allows a test to define and override the declared symbols,
>>>> taking control of the whole vector_table or a vector_stub.
>>>
>>> Hi Nikos,
>>>
>>> Can you add some motivation for this change to the commit message or
>>> submit it along with some test that needs it?
>>>
>>
>> Hi Drew,
>>
>> Thanks for reviewing this.
>>
>> What do you think about adding the following to the commit message?
>>
>>> With the ability to override specific exception handlers, litmus7
>>> [1] a tool used to generate c sources for a given memory model
>>> litmus test, can override the el1h_sync symbol to implement tests
>>> with explicit exception handlers. For example:
>>>
>>> AArch64 LDRv0+I2V-dsb.ishst
>>> { >   [PTE(x)]=(oa:PA(x),valid:0);
>>>    x=1;
>>>
>>>    0:X1=x;
>>>    0:X3=PTE(x); >   0:X2=(oa:PA(x),valid:1);
>>> }>  P0          | P0.F         ;
>>> L0:          | ADD X8,X8,#1 ;
>>>   LDR W0,[X1] | STR X2,[X3]  ;
>>>               | DSB ISHST    ;
>>>               | ERET         ; > exists(0:X0=0 \/ 0:X8!=1)
>>>
>>> In this test, a thread running in core P0 executes a load to a memory
>>> location x. The PTE of the virtual address x is initially invalid.
>>> The execution of the load causes a synchronous EL1 exception which is
>>> handled by the code in P0.F. P0.F increments a counter which is
>>> maintained in X8, updates the PTE of x and makes it valid, executes a
>>> DSB ISHST and calls ERET which is expected to return and retry the
>>> execution of the load in P0:L0.
>>>
>>> The postcondition checks if there is any execution where the load wasn't
>>> executed (X0 its destination register is not update), or that the P0.F >
>>> handler was invoked more than once (the counter X8 is not 1).
>>>
>>> For this tests, litmus7 needs to control the el1h_sync. Calling
>>> install_exception_handler() would be suboptimal because the vector_stub
>>> would wrap around the code of P0.F and disturb the test.
>>>
>>> [1]: https://diy.inria.fr/doc/litmus.html
>> If you think this is sufficient, I will update the patch.
> 
> The above works for me.
> 
> (Unrelated: Sorry I haven't had a chance to give your latest efi branch
> a test drive. I think you can probably go ahead and post the next version
> of the series, though. That'll help bring it to the forefront for me to
> prioritize.)
> 

Thanks Drew, I'll send a new revision of this patch and the EFI series.

Nikos

      reply	other threads:[~2023-05-23  9:53 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-15 22:15 [kvm-unit-tests PATCH] arm64: Make vector_table and vector_stub weak symbols Nikos Nikoleris
2023-05-18 16:06 ` Andrew Jones
2023-05-22 13:54   ` Nikos Nikoleris
2023-05-23  8:56     ` Andrew Jones
2023-05-23  9:52       ` Nikos Nikoleris [this message]

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=cbda3543-1cad-b05b-1188-e0ecba6f302d@arm.com \
    --to=nikos.nikoleris@arm.com \
    --cc=Jade.Alglave@arm.com \
    --cc=andrew.jones@linux.dev \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=luc.maranget@inria.fr \
    /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