[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 11/15] xen/arm: make GIC context data version specific
From: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx> GIC context data is dependent on hardware version make the contents of gic context data structure as version specific and access accordingly Signed-off-by: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx> --- xen/arch/arm/gic-v2.c | 15 ++++++++------- xen/include/asm-arm/gic.h | 11 ++++++++--- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c index 06ed12b..4bcb392 100644 --- a/xen/arch/arm/gic-v2.c +++ b/xen/arch/arm/gic-v2.c @@ -96,6 +96,7 @@ static int gic_state_init(struct vcpu *v) v->arch.gic_state = xzalloc(struct gic_state_data); if ( !v->arch.gic_state ) return -ENOMEM; + v->arch.gic_state->version = 2; return 0; } @@ -108,9 +109,9 @@ static void save_state(struct vcpu *v) * accessed simultaneously by another pCPU. */ for ( i = 0; i < nr_lrs; i++ ) - v->arch.gic_state->gic_lr[i] = GICH[GICH_LR + i]; - v->arch.gic_state->gic_apr = GICH[GICH_APR]; - v->arch.gic_state->gic_vmcr = GICH[GICH_VMCR]; + v->arch.gic_state->v2.gic_lr[i] = GICH[GICH_LR + i]; + v->arch.gic_state->v2.gic_apr = GICH[GICH_APR]; + v->arch.gic_state->v2.gic_vmcr = GICH[GICH_VMCR]; /* Disable until next VCPU scheduled */ GICH[GICH_HCR] = 0; } @@ -120,9 +121,9 @@ static void restore_state(struct vcpu *v) int i; for ( i = 0; i < nr_lrs; i++ ) - GICH[GICH_LR + i] = v->arch.gic_state->gic_lr[i]; - GICH[GICH_APR] = v->arch.gic_state->gic_apr; - GICH[GICH_VMCR] = v->arch.gic_state->gic_vmcr; + GICH[GICH_LR + i] = v->arch.gic_state->v2.gic_lr[i]; + GICH[GICH_APR] = v->arch.gic_state->v2.gic_apr; + GICH[GICH_VMCR] = v->arch.gic_state->v2.gic_vmcr; GICH[GICH_HCR] = GICH_HCR_EN; } @@ -135,7 +136,7 @@ static void gic_dump_state(struct vcpu *v) printk(" HW_LR[%d]=%x\n", i, GICH[GICH_LR + i]); } else { for ( i = 0; i < nr_lrs; i++ ) - printk(" VCPU_LR[%d]=%x\n", i, v->arch.gic_state->gic_lr[i]); + printk(" VCPU_LR[%d]=%x\n", i, v->arch.gic_state->v2.gic_lr[i]); } } diff --git a/xen/include/asm-arm/gic.h b/xen/include/asm-arm/gic.h index 290e821..2156b55 100644 --- a/xen/include/asm-arm/gic.h +++ b/xen/include/asm-arm/gic.h @@ -67,9 +67,14 @@ struct vgic_irq_rank { }; struct gic_state_data { - uint32_t gic_hcr, gic_vmcr; - uint32_t gic_apr; - uint32_t gic_lr[64]; + uint8_t version; + union { + struct gic_v2 { + uint32_t gic_hcr, gic_vmcr; + uint32_t gic_apr; + uint32_t gic_lr[64]; + }v2; + }; }; struct gic_lr { -- 1.7.9.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |