|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8 7/7] xen/arm: check for GICv3 platform support
On 07/23/2014 02:41 PM, vijay.kilari@xxxxxxxxx wrote:
> From: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx>
>
> ID_AA64PFR0_EL1 register provides information about GIC support.
> Check for this register in GICv3 driver.
>
> Also print GICv3 support information in boot log
>
> Signed-off-by: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx>
> ---
> v8: - Rearranged prf64 structure member variables
> v7: - return -ENODEV on lack GICv3 platform support instead of
> panic
> ---
> xen/arch/arm/gic-v3.c | 7 +++++++
> xen/arch/arm/setup.c | 5 +++--
> xen/include/asm-arm/cpufeature.h | 1 +
> xen/include/asm-arm/processor.h | 4 ++--
> 4 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
> index 410d308..9291a7a 100644
> --- a/xen/arch/arm/gic-v3.c
> +++ b/xen/arch/arm/gic-v3.c
> @@ -39,6 +39,7 @@
> #include <asm/device.h>
> #include <asm/gic.h>
> #include <asm/gic_v3_defs.h>
> +#include <asm/cpufeature.h>
>
> struct rdist_region {
> paddr_t base;
> @@ -1143,6 +1144,12 @@ static int __init gicv3_init(struct dt_device_node
> *node, const void *data)
> int res, i;
> uint32_t reg;
>
> + if ( !cpu_has_gicv3 )
> + {
> + dprintk(XENLOG_ERR, "Platform does not support GICv3\n");
AFAIU, this field indicates if we support GICv3 system registers or not.
It's entirely possible to use a GICv3 without system registers (see
4.4.1 System Register Access to CPU Interface Registers).
So I would be more specific in the error message. Smth like:
"The GICv3 drivers request system registers support.".
> + return -ENODEV;
> + }
> +
> dt_device_set_used_by(node, DOMID_XEN);
>
> res = dt_device_get_address(node, 0, &gicv3.dbase, &gicv3.dbase_size);
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index 78dc7f5..6a90c81 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -100,9 +100,10 @@ static void __init processor_id(void)
> cpu_has_el2_32 ? "64+32" : cpu_has_el2_64 ? "64" : "No",
> cpu_has_el1_32 ? "64+32" : cpu_has_el1_64 ? "64" : "No",
> cpu_has_el0_32 ? "64+32" : cpu_has_el0_64 ? "64" : "No");
> - printk(" Extensions:%s%s\n",
> + printk(" Extensions:%s%s%s\n",
> cpu_has_fp ? " FloatingPoint" : "",
> - cpu_has_simd ? " AdvancedSIMD" : "");
> + cpu_has_simd ? " AdvancedSIMD" : "",
> + cpu_has_gicv3 ? " GICv3" : "");
I would rename into GICv3SysReg.
Regards,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |