Re: [kvm-unit-tests PATCH] arm64: Make vector_table and vector_stub weak symbols

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux