|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC v3 2/6] xen/arm: Add save/restore support for ARM GIC V2
On 05/14/2014 12:07 PM, Ian Campbell wrote:
> On Thu, 2014-05-08 at 16:18 -0500, Wei Huang wrote:
>> diff --git a/xen/include/public/arch-arm/hvm/save.h
>> b/xen/include/public/arch-arm/hvm/save.h
>> index 8312e7b..421a6f6 100644
>> --- a/xen/include/public/arch-arm/hvm/save.h
>> +++ b/xen/include/public/arch-arm/hvm/save.h
>> @@ -40,10 +40,42 @@ struct hvm_save_header
>> };
>> DECLARE_HVM_SAVE_TYPE(HEADER, 1, struct hvm_save_header);
>>
>> +/* Guest's view of GIC distributor (per-vcpu)
>> + * - Based on GICv2 (see "struct vgic_irq_rank")
>> + * - Store guest's view of GIC distributor
>> + * - Only support SGI and PPI for DomU (DomU doesn't handle SPI)
>> + */
>> +struct hvm_arm_vgicd_v2
>> +{
>> + uint32_t ienable;
>> + uint32_t iactive;
>> + uint32_t ipend;
>> + uint32_t pendsgi;
>> + uint32_t icfg[2];
>> + uint32_t ipriority[8];
>> + uint32_t itargets[8];
>> +};
>> +DECLARE_HVM_SAVE_TYPE(VGICD_V2, 2, struct hvm_arm_vgicd_v2);
>
> This is the state of 32 interrupts. How do you propose to handle more
> interrupts than that?
>
> I think it would be sensible to split the domain global state, the
> distributor and cpu interface base addresses and sizes and the states of
> any SPIs in here and have a separate per-vpcu set of state for the
> per-cpu GICD state (SPIs and PPIs mainly).
>
> For the SPI I think you either want to put the above set of state into
> an array of size NR_GUEST_INTERRUPTS/32 or better make each of the above
> an array based on NR_GUEST_INTERRUPTS.
>
>> +
>> +/* Info for hypervisor to manage guests (per-vcpu)
>> + * - Based on GICv2
>> + * - Mainly store registers of GICH_*
>> + */
>> +struct hvm_arm_gich_v2
>> +{
>> + uint32_t gic_hcr;
>> + uint32_t gic_vmcr;
>> + uint32_t gic_apr;
>> + uint32_t gic_lr[64];
>> + uint64_t event_mask;
>> + uint64_t lr_mask;
>
> I don't think you should be saving any GICH state at all. What should be
> saved is the corresponding GICC state, i.e. "architectural state" that
> is observed by the guest. This might mean pickling stuff from the GICH
> state into a GICC form. (I said this wrt the LRs in a previous round of
> review)
What are the advantage to save the GICC state rather than GICH?
IIRC, the GICH state gives you a representation of the important bits of
the GICC. Most of GICC can't be restore without any translation and
writing in GICH (see gic_vmcr that is a collection of multiple GICC
registers). It seems easier to use GICH state during migration.
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 |