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

Re: [Xen-devel] [PATCH v7 10/11] arm: vsmc: remove 64 bit mode check in PSCI handler



On Fri, 6 Oct 2017, Julien Grall wrote:
> Hi Volodymyr,
> 
> On 04/10/17 22:00, Volodymyr Babchuk wrote:
> > PSCI handling code had helper routine that checked calling convention.
> > It does not needed anymore, because:
> > 
> >   - Generic handler checks that 64 bit calls can be made only by
> >     64 bit guests.
> > 
> >   - SMCCC requires that 64-bit handler should support both 32 and 64 bit
> >     calls even if they originate from 64 bit caller.
> > 
> > This patch removes that extra check.
> > 
> > Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@xxxxxxxx>
> > Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> 
> Sorry I just noticed this. This is odd to keep a reviewed-by from Stefano in a
> patch that changed quite a bit since he gave it (patch #2).
> 
> Usually reviewed-by means the person has reviewed the code and happy with it.
> Technically, he didn't review the new changes and if not dropped, you should
> have at least asked whether he is happy with it.
> 
> Stefano are you happy if Volodymyr keeping your tag?

No, the patch changed too much, I'll have to review it again. Drop it
for now.


> > ---
> >   xen/arch/arm/vsmc.c | 62
> > ++++++++++++++++++++++-------------------------------
> >   1 file changed, 26 insertions(+), 36 deletions(-)
> > 
> > diff --git a/xen/arch/arm/vsmc.c b/xen/arch/arm/vsmc.c
> > index 77fc915..ff84442 100644
> > --- a/xen/arch/arm/vsmc.c
> > +++ b/xen/arch/arm/vsmc.c
> > @@ -135,12 +135,6 @@ static bool handle_existing_apis(struct cpu_user_regs
> > *regs)
> >       }
> >   }
> >   -/* helper function for checking arm mode 32/64 bit */
> > -static inline int psci_mode_check(struct domain *d, uint32_t fid)
> > -{
> > -    return is_64bit_domain(d) || !smccc_is_conv_64(fid);
> > -}
> > -
> >   /* PSCI 0.2 interface and other Standard Secure Calls */
> >   static bool handle_sssc(struct cpu_user_regs *regs)
> >   {
> > @@ -165,8 +159,7 @@ static bool handle_sssc(struct cpu_user_regs *regs)
> >         case PSCI_0_2_FN_MIGRATE_INFO_UP_CPU:
> >           perfc_incr(vpsci_migrate_info_up_cpu);
> > -        if ( psci_mode_check(current->domain, fid) )
> > -            PSCI_SET_RESULT(regs, do_psci_0_2_migrate_info_up_cpu());
> > +        PSCI_SET_RESULT(regs, do_psci_0_2_migrate_info_up_cpu());
> >           return true;
> >         case PSCI_0_2_FN_SYSTEM_OFF:
> > @@ -182,48 +175,45 @@ static bool handle_sssc(struct cpu_user_regs *regs)
> >           return true;
> >         case PSCI_0_2_FN_CPU_ON:
> > -        perfc_incr(vpsci_cpu_on);
> > -        if ( psci_mode_check(current->domain, fid) )
> > -        {
> > -            register_t vcpuid = PSCI_ARG(regs, 1);
> > -            register_t epoint = PSCI_ARG(regs, 2);
> > -            register_t cid = PSCI_ARG(regs, 3);
> > +    {
> > +        register_t vcpuid = PSCI_ARG(regs, 1);
> > +        register_t epoint = PSCI_ARG(regs, 2);
> > +        register_t cid = PSCI_ARG(regs, 3);
> >   -            PSCI_SET_RESULT(regs, do_psci_0_2_cpu_on(vcpuid, epoint,
> > cid));
> > -        }
> > +        perfc_incr(vpsci_cpu_on);
> > +        PSCI_SET_RESULT(regs, do_psci_0_2_cpu_on(vcpuid, epoint, cid));
> >           return true;
> > +    }
> >         case PSCI_0_2_FN_CPU_SUSPEND:
> > -        perfc_incr(vpsci_cpu_suspend);
> > -        if ( psci_mode_check(current->domain, fid) )
> > -        {
> > -            uint32_t pstate = PSCI_ARG32(regs, 1);
> > -            register_t epoint = PSCI_ARG(regs, 2);
> > -            register_t cid = PSCI_ARG(regs, 3);
> > +    {
> > +        uint32_t pstate = PSCI_ARG32(regs, 1);
> > +        register_t epoint = PSCI_ARG(regs, 2);
> > +        register_t cid = PSCI_ARG(regs, 3);
> >   -            PSCI_SET_RESULT(regs, do_psci_0_2_cpu_suspend(pstate, epoint,
> > cid));
> > -        }
> > +        perfc_incr(vpsci_cpu_suspend);
> > +        PSCI_SET_RESULT(regs, do_psci_0_2_cpu_suspend(pstate, epoint,
> > cid));
> >           return true;
> > +    }
> >         case PSCI_0_2_FN_AFFINITY_INFO:
> > +    {
> > +        register_t taff = PSCI_ARG(regs, 1);
> > +        uint32_t laff = PSCI_ARG32(regs, 2);
> > +
> >           perfc_incr(vpsci_cpu_affinity_info);
> > -        if ( psci_mode_check(current->domain, fid) )
> > -        {
> > -            register_t taff = PSCI_ARG(regs, 1);
> > -            uint32_t laff = PSCI_ARG32(regs, 2);
> > -            PSCI_SET_RESULT(regs, do_psci_0_2_affinity_info(taff, laff));
> > -        }
> > +        PSCI_SET_RESULT(regs, do_psci_0_2_affinity_info(taff, laff));
> >           return true;
> > +    }
> >         case PSCI_0_2_FN_MIGRATE:
> > -        perfc_incr(vpsci_cpu_migrate);
> > -        if ( psci_mode_check(current->domain, fid) )
> > -        {
> > -            uint32_t tcpu = PSCI_ARG32(regs, 1);
> > +    {
> > +        uint32_t tcpu = PSCI_ARG32(regs, 1);
> >   -            PSCI_SET_RESULT(regs, do_psci_0_2_migrate(tcpu));
> > -        }
> > +        perfc_incr(vpsci_cpu_migrate);
> > +        PSCI_SET_RESULT(regs, do_psci_0_2_migrate(tcpu));
> >           return true;
> > +    }
> >         case ARM_SMCCC_FUNC_CALL_COUNT:
> >           return fill_function_call_count(regs, SSSC_SMCCC_FUNCTION_COUNT);
> > 
> 
> -- 
> Julien Grall
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.