|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 4/5] xen/arm: add SGI handling for GICv3
On Thu, Jul 3, 2014 at 8:03 PM, Julien Grall <julien.grall@xxxxxxxxxx> wrote:
> Hi Vijay,
>
> On 07/03/2014 09:37 AM, vijay.kilari@xxxxxxxxx wrote:
>> From: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx>
>>
>> In ARMv8, write to ICC_SGI1R_EL1 register raises trap to EL2.
>> Handle the trap and inject SGI to vcpu.
>>
>> Signed-off-by: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx>
>> ---
>> xen/arch/arm/traps.c | 30 +++++++++++++++++
>> xen/arch/arm/vgic-v3.c | 65
>> +++++++++++++++++++++++++++++++++----
>> xen/include/asm-arm/gic_v3_defs.h | 7 ++++
>> xen/include/asm-arm/sysregs.h | 3 ++
>> xen/include/asm-arm/vgic.h | 1 +
>> 5 files changed, 100 insertions(+), 6 deletions(-)
>>
>> struct reg_ctxt {
>> /* Guest-side state */
>> uint32_t sctlr_el1;
>> @@ -1591,6 +1604,7 @@ static void do_sysreg(struct cpu_user_regs *regs,
>> union hsr hsr)
>> {
>> register_t *x = select_user_reg(regs, hsr.sysreg.reg);
>> + register_t addr;
>>
>> switch ( hsr.bits & HSR_SYSREG_REGS_MASK )
>> {
>> @@ -1641,6 +1655,22 @@ static void do_sysreg(struct cpu_user_regs *regs,
>> domain_crash_synchronous();
>> }
>> break;
>> + case HSR_SYSREG_ICC_SGI1R_EL1:
>> + if ( !vgic_emulate(regs, hsr) )
>> + {
>> + addr = READ_SYSREG64(FAR_EL2);
>> + dprintk(XENLOG_WARNING,
>> + "failed emulation of sysreg ICC_SGI1R_EL1 access\n");
>> + inject_undef_exception(regs, addr, hsr.len);
>
> AFAIK, sysreg only exist for 64 bits guest. At least the precondition to
> call this function is the guest is 64 bits (see the caller). So you can
> use directly inject_undef64_exception.
What if the Guest is running int Aarch32 bit mode and make
sysreg access?
Regards
Vijay
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |