diff mbox

[v7,11/11] public: add and enable XENFEAT_ARM_SMCCC_supported feature

Message ID 1507150827-7858-12-git-send-email-volodymyr_babchuk@epam.com (mailing list archive)
State New, archived
Headers show

Commit Message

Volodymyr Babchuk Oct. 4, 2017, 9 p.m. UTC
This feature indicates that hypervisor is compatible with ARM
SMC calling convention. Previously hypervisor would inject an
undefined instruction exception if an invalid SMC function were
called or would crash a domain if an invalid HVC function
were invoked.
XENFEAT_ARM_SMCCC_supported feature means that it safe to invoke
SMC/HVC calls that are compatible with SMC calling convention.

Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
---
 xen/common/kernel.c           | 3 +++
 xen/include/public/features.h | 3 +++
 2 files changed, 6 insertions(+)

Comments

Julien Grall Oct. 6, 2017, 2:01 p.m. UTC | #1
Hi Volodymyr,

On 04/10/17 22:00, Volodymyr Babchuk wrote:
> This feature indicates that hypervisor is compatible with ARM
> SMC calling convention. Previously hypervisor would inject an
> undefined instruction exception if an invalid SMC function were
> called or would crash a domain if an invalid HVC function
> were invoked.
> XENFEAT_ARM_SMCCC_supported feature means that it safe to invoke
> SMC/HVC calls that are compatible with SMC calling convention.
> 
> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>

Acked-by: Julien Grall <julien.grall@arm.com>

Note that an acked-by/reviewed-by "THE REST" is still needed on this patch.

Cheers,

> ---
>   xen/common/kernel.c           | 3 +++
>   xen/include/public/features.h | 3 +++
>   2 files changed, 6 insertions(+)
> 
> diff --git a/xen/common/kernel.c b/xen/common/kernel.c
> index 94fdf5c..8d137c5 100644
> --- a/xen/common/kernel.c
> +++ b/xen/common/kernel.c
> @@ -394,6 +394,9 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>                       (1U << XENFEAT_auto_translated_physmap);
>               if ( is_hardware_domain(d) )
>                   fi.submap |= 1U << XENFEAT_dom0;
> +#ifdef CONFIG_ARM
> +            fi.submap |= (1U << XENFEAT_ARM_SMCCC_supported);
> +#endif
>   #ifdef CONFIG_X86
>               switch ( d->guest_type )
>               {
> diff --git a/xen/include/public/features.h b/xen/include/public/features.h
> index 2110b04..1a989b8 100644
> --- a/xen/include/public/features.h
> +++ b/xen/include/public/features.h
> @@ -102,6 +102,9 @@
>   /* Guest can use XENMEMF_vnode to specify virtual node for memory op. */
>   #define XENFEAT_memory_op_vnode_supported 13
>   
> +/* arm: Hypervisor supports ARM SMC calling convention. */
> +#define XENFEAT_ARM_SMCCC_supported       14
> +
>   #define XENFEAT_NR_SUBMAPS 1
>   
>   #endif /* __XEN_PUBLIC_FEATURES_H__ */
>
Jan Beulich Oct. 6, 2017, 2:17 p.m. UTC | #2
>>> On 06.10.17 at 16:01, <julien.grall@arm.com> wrote:
> Hi Volodymyr,
> 
> On 04/10/17 22:00, Volodymyr Babchuk wrote:
>> This feature indicates that hypervisor is compatible with ARM
>> SMC calling convention. Previously hypervisor would inject an
>> undefined instruction exception if an invalid SMC function were
>> called or would crash a domain if an invalid HVC function
>> were invoked.
>> XENFEAT_ARM_SMCCC_supported feature means that it safe to invoke
>> SMC/HVC calls that are compatible with SMC calling convention.
>> 
>> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> 
> Acked-by: Julien Grall <julien.grall@arm.com>
> 
> Note that an acked-by/reviewed-by "THE REST" is still needed on this patch.

Here you go:
Acked-by: Jan Beulich <jbeulich@suse.com>
diff mbox

Patch

diff --git a/xen/common/kernel.c b/xen/common/kernel.c
index 94fdf5c..8d137c5 100644
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -394,6 +394,9 @@  DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
                     (1U << XENFEAT_auto_translated_physmap);
             if ( is_hardware_domain(d) )
                 fi.submap |= 1U << XENFEAT_dom0;
+#ifdef CONFIG_ARM
+            fi.submap |= (1U << XENFEAT_ARM_SMCCC_supported);
+#endif
 #ifdef CONFIG_X86
             switch ( d->guest_type )
             {
diff --git a/xen/include/public/features.h b/xen/include/public/features.h
index 2110b04..1a989b8 100644
--- a/xen/include/public/features.h
+++ b/xen/include/public/features.h
@@ -102,6 +102,9 @@ 
 /* Guest can use XENMEMF_vnode to specify virtual node for memory op. */
 #define XENFEAT_memory_op_vnode_supported 13
 
+/* arm: Hypervisor supports ARM SMC calling convention. */
+#define XENFEAT_ARM_SMCCC_supported       14
+
 #define XENFEAT_NR_SUBMAPS 1
 
 #endif /* __XEN_PUBLIC_FEATURES_H__ */