From: Marc Zyngier <marc.zyngier@arm.com> To: Eric Auger <eric.auger@redhat.com>, eric.auger.pro@gmail.com, christoffer.dall@linaro.org, andre.przywara@arm.com, vijayak@caviumnetworks.com, Vijaya.Kumar@cavium.com, peter.maydell@linaro.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org Cc: Prasun.Kapoor@cavium.com, quintela@redhat.com, dgilbert@redhat.com, bjsprakash.linux@gmail.com, pbonzini@redhat.com Subject: Re: [PATCH v6 09/24] KVM: arm64: vgic-its: Introduce migration ABI infrastructure Date: Thu, 4 May 2017 15:45:13 +0100 [thread overview] Message-ID: <4e08d13f-bc15-6cd9-4891-44c593e17c0a@arm.com> (raw) In-Reply-To: <1493898284-29504-10-git-send-email-eric.auger@redhat.com> On 04/05/17 12:44, Eric Auger wrote: > We plan to support different migration ABIs, ie. characterizing > the ITS table layout format in guest RAM. For example, a new ABI > will be needed if vLPIs get supported for nested use case. > > So let's introduce an array of supported ABIs (at the moment a single > ABI is supported though). The following characteristics are foreseen > to vary with the ABI: size of table entries, save/restore operation, > the way abi settings are applied. > > By default the MAX_ABI_REV is applied on its creation. In subsequent > patches we will introduce a way for the userspace to change the ABI > in use. > > The entry sizes now are set according to the ABI version and not > hardcoded anymore. > > Signed-off-by: Eric Auger <eric.auger@redhat.com> > > --- > v6 -> v7: > - rename abi into its_table_abi_versions > - kernel doc comments for struct vgic_its_abi > - comment GIC_ENCODE_SZ > - slighly rephrase the commit message > > v5: creation and squash KVM: arm64: ITS: Report the ITE size in > GITS_TYPER > --- > include/kvm/arm_vgic.h | 3 ++ > include/linux/irqchip/arm-gic-v3.h | 5 +++ > virt/kvm/arm/vgic/vgic-its.c | 92 ++++++++++++++++++++++++++++++++++++-- > 3 files changed, 96 insertions(+), 4 deletions(-) > > diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h > index c0b3d99..285474a 100644 > --- a/include/kvm/arm_vgic.h > +++ b/include/kvm/arm_vgic.h > @@ -162,6 +162,9 @@ struct vgic_its { > u32 creadr; > u32 cwriter; > > + /* migration ABI revision in use */ > + u32 abi_rev; > + > /* Protects the device and collection lists */ > struct mutex its_lock; > struct list_head device_list; > diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h > index 97cbca1..81ebe43 100644 > --- a/include/linux/irqchip/arm-gic-v3.h > +++ b/include/linux/irqchip/arm-gic-v3.h > @@ -132,6 +132,9 @@ > #define GIC_BASER_SHAREABILITY(reg, type) \ > (GIC_BASER_##type << reg##_SHAREABILITY_SHIFT) > > +/* encode a size field of width @w containing @n - 1 units */ > +#define GIC_ENCODE_SZ(n, w) (((unsigned long)(n) - 1) & GENMASK_ULL(((w) - 1), 0)) > + > #define GICR_PROPBASER_SHAREABILITY_SHIFT (10) > #define GICR_PROPBASER_INNER_CACHEABILITY_SHIFT (7) > #define GICR_PROPBASER_OUTER_CACHEABILITY_SHIFT (56) > @@ -232,6 +235,7 @@ > #define GITS_CTLR_QUIESCENT (1U << 31) > > #define GITS_TYPER_PLPIS (1UL << 0) > +#define GITS_TYPER_ITT_ENTRY_SIZE_SHIFT 4 > #define GITS_TYPER_IDBITS_SHIFT 8 > #define GITS_TYPER_DEVBITS_SHIFT 13 > #define GITS_TYPER_DEVBITS(r) ((((r) >> GITS_TYPER_DEVBITS_SHIFT) & 0x1f) + 1) > @@ -290,6 +294,7 @@ > #define GITS_BASER_TYPE(r) (((r) >> GITS_BASER_TYPE_SHIFT) & 7) > #define GITS_BASER_ENTRY_SIZE_SHIFT (48) > #define GITS_BASER_ENTRY_SIZE(r) ((((r) >> GITS_BASER_ENTRY_SIZE_SHIFT) & 0x1f) + 1) > +#define GITS_BASER_ENTRY_SIZE_MASK GENMASK_ULL(52, 48) > #define GITS_BASER_SHAREABILITY_SHIFT (10) > #define GITS_BASER_InnerShareable \ > GIC_BASER_SHAREABILITY(GITS_BASER, InnerShareable) > diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c > index 18588ef..c336cce 100644 > --- a/virt/kvm/arm/vgic/vgic-its.c > +++ b/virt/kvm/arm/vgic/vgic-its.c > @@ -33,6 +33,12 @@ > #include "vgic.h" > #include "vgic-mmio.h" > > +/* Highest migration ABI revision supported by this code */ > +#define MAX_ABI_REV 0 Can this be defined as #define NR_ITS_ABIS ARRAY_SIZE(its_table_abi_versions) instead? > + > +static int vgic_its_set_abi(struct vgic_its *its, int rev); > +static const struct vgic_its_abi *vgic_its_get_abi(struct vgic_its *its); > + > /* > * Creates a new (reference to a) struct vgic_irq for a given LPI. > * If this LPI is already mapped on another ITS, we increase its refcount > @@ -123,6 +129,25 @@ struct its_ite { > u32 event_id; > }; > > +/** > + * struct vgic_its_abi - ITS abi ops and settings > + * @cte_esz: collection table entry size > + * @dte_esz: device table entry size > + * @ite_esz: interrupt translation table entry size > + * @save tables: save the ITS tables into guest RAM > + * @restore_tables: restore the ITS internal structs from > + * tables stored in guest RAM > + * @commit: apply the ABI settings to the ITS > + */ > +struct vgic_its_abi { > + int cte_esz; > + int dte_esz; > + int ite_esz; > + int (*save_tables)(struct vgic_its *its); > + int (*restore_tables)(struct vgic_its *its); > + int (*commit)(struct vgic_its *its); > +}; > + > /* > * Find and returns a device in the device table for an ITS. > * Must be called with the its_lock mutex held. > @@ -364,6 +389,7 @@ static unsigned long vgic_mmio_read_its_typer(struct kvm *kvm, > struct vgic_its *its, > gpa_t addr, unsigned int len) > { > + const struct vgic_its_abi *abi = vgic_its_get_abi(its); > u64 reg = GITS_TYPER_PLPIS; > > /* > @@ -376,6 +402,7 @@ static unsigned long vgic_mmio_read_its_typer(struct kvm *kvm, > */ > reg |= 0x0f << GITS_TYPER_DEVBITS_SHIFT; > reg |= 0x0f << GITS_TYPER_IDBITS_SHIFT; > + reg |= GIC_ENCODE_SZ(abi->ite_esz, 4) << GITS_TYPER_ITT_ENTRY_SIZE_SHIFT; > > return extract_bytes(reg, addr & 7, len); > } > @@ -1269,6 +1296,7 @@ static void vgic_mmio_write_its_baser(struct kvm *kvm, > gpa_t addr, unsigned int len, > unsigned long val) > { > + const struct vgic_its_abi *abi = vgic_its_get_abi(its); > u64 entry_size, device_type; > u64 reg, *regptr, clearbits = 0; > > @@ -1279,12 +1307,12 @@ static void vgic_mmio_write_its_baser(struct kvm *kvm, > switch (BASER_INDEX(addr)) { > case 0: > regptr = &its->baser_device_table; > - entry_size = 8; > + entry_size = abi->dte_esz; > device_type = GITS_BASER_TYPE_DEVICE; > break; > case 1: > regptr = &its->baser_coll_table; > - entry_size = 8; > + entry_size = abi->cte_esz; > device_type = GITS_BASER_TYPE_COLLECTION; > clearbits = GITS_BASER_INDIRECT; > break; > @@ -1426,7 +1454,6 @@ static int vgic_register_its_iodev(struct kvm *kvm, struct vgic_its *its) > (GIC_BASER_CACHEABILITY(GITS_BASER, INNER, RaWb) | \ > GIC_BASER_CACHEABILITY(GITS_BASER, OUTER, SameAsInner) | \ > GIC_BASER_SHAREABILITY(GITS_BASER, InnerShareable) | \ > - ((8ULL - 1) << GITS_BASER_ENTRY_SIZE_SHIFT) | \ > GITS_BASER_PAGE_SIZE_64K) > > #define INITIAL_PROPBASER_VALUE \ > @@ -1466,7 +1493,7 @@ static int vgic_its_create(struct kvm_device *dev, u32 type) > > dev->private = its; > > - return 0; > + return vgic_its_set_abi(its, MAX_ABI_REV); > } > > static void vgic_its_destroy(struct kvm_device *kvm_dev) > @@ -1584,6 +1611,63 @@ int vgic_its_attr_regs_access(struct kvm_device *dev, > return ret; > } > > +/** > + * vgic_its_save_tables_v0 - Save the ITS tables into guest ARM > + * according to v0 ABI > + */ > +static int vgic_its_save_tables_v0(struct vgic_its *its) > +{ > + return -ENXIO; > +} > + > +/** > + * vgic_its_restore_tables_v0 - Restore the ITS tables from guest RAM > + * to internal data structs according to V0 ABI > + * > + */ > +static int vgic_its_restore_tables_v0(struct vgic_its *its) > +{ > + return -ENXIO; > +} > + > +static int vgic_its_commit_v0(struct vgic_its *its) > +{ > + const struct vgic_its_abi *abi; > + > + abi = vgic_its_get_abi(its); > + its->baser_coll_table &= ~GITS_BASER_ENTRY_SIZE_MASK; > + its->baser_device_table &= ~GITS_BASER_ENTRY_SIZE_MASK; > + > + its->baser_coll_table |= (GIC_ENCODE_SZ(abi->cte_esz, 5) > + << GITS_BASER_ENTRY_SIZE_SHIFT); > + > + its->baser_device_table |= (GIC_ENCODE_SZ(abi->dte_esz, 5) > + << GITS_BASER_ENTRY_SIZE_SHIFT); > + return 0; > +} > + > +static const struct vgic_its_abi its_table_abi_versions[MAX_ABI_REV + 1] = { > + {.cte_esz = 8, .dte_esz = 8, .ite_esz = 8, And this becomes: static const struct vgic_its_abi its_table_abi_versions[] = { [0] = { .cte_esz = ..., }, }; > + .save_tables = vgic_its_save_tables_v0, > + .restore_tables = vgic_its_restore_tables_v0, > + .commit = vgic_its_commit_v0, > + }, > +}; > + > +inline const struct vgic_its_abi *vgic_its_get_abi(struct vgic_its *its) > +{ > + return &its_table_abi_versions[its->abi_rev]; > +} > + > +int vgic_its_set_abi(struct vgic_its *its, int rev) > +{ > + const struct vgic_its_abi *abi; > + > + its->abi_rev = rev; > + abi = vgic_its_get_abi(its); > + return abi->commit(its); > +} > + > static int vgic_its_has_attr(struct kvm_device *dev, > struct kvm_device_attr *attr) > { > Thanks, M. -- Jazz is not dead. It just smells funny...
WARNING: multiple messages have this Message-ID (diff)
From: marc.zyngier@arm.com (Marc Zyngier) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v6 09/24] KVM: arm64: vgic-its: Introduce migration ABI infrastructure Date: Thu, 4 May 2017 15:45:13 +0100 [thread overview] Message-ID: <4e08d13f-bc15-6cd9-4891-44c593e17c0a@arm.com> (raw) In-Reply-To: <1493898284-29504-10-git-send-email-eric.auger@redhat.com> On 04/05/17 12:44, Eric Auger wrote: > We plan to support different migration ABIs, ie. characterizing > the ITS table layout format in guest RAM. For example, a new ABI > will be needed if vLPIs get supported for nested use case. > > So let's introduce an array of supported ABIs (at the moment a single > ABI is supported though). The following characteristics are foreseen > to vary with the ABI: size of table entries, save/restore operation, > the way abi settings are applied. > > By default the MAX_ABI_REV is applied on its creation. In subsequent > patches we will introduce a way for the userspace to change the ABI > in use. > > The entry sizes now are set according to the ABI version and not > hardcoded anymore. > > Signed-off-by: Eric Auger <eric.auger@redhat.com> > > --- > v6 -> v7: > - rename abi into its_table_abi_versions > - kernel doc comments for struct vgic_its_abi > - comment GIC_ENCODE_SZ > - slighly rephrase the commit message > > v5: creation and squash KVM: arm64: ITS: Report the ITE size in > GITS_TYPER > --- > include/kvm/arm_vgic.h | 3 ++ > include/linux/irqchip/arm-gic-v3.h | 5 +++ > virt/kvm/arm/vgic/vgic-its.c | 92 ++++++++++++++++++++++++++++++++++++-- > 3 files changed, 96 insertions(+), 4 deletions(-) > > diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h > index c0b3d99..285474a 100644 > --- a/include/kvm/arm_vgic.h > +++ b/include/kvm/arm_vgic.h > @@ -162,6 +162,9 @@ struct vgic_its { > u32 creadr; > u32 cwriter; > > + /* migration ABI revision in use */ > + u32 abi_rev; > + > /* Protects the device and collection lists */ > struct mutex its_lock; > struct list_head device_list; > diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h > index 97cbca1..81ebe43 100644 > --- a/include/linux/irqchip/arm-gic-v3.h > +++ b/include/linux/irqchip/arm-gic-v3.h > @@ -132,6 +132,9 @@ > #define GIC_BASER_SHAREABILITY(reg, type) \ > (GIC_BASER_##type << reg##_SHAREABILITY_SHIFT) > > +/* encode a size field of width @w containing @n - 1 units */ > +#define GIC_ENCODE_SZ(n, w) (((unsigned long)(n) - 1) & GENMASK_ULL(((w) - 1), 0)) > + > #define GICR_PROPBASER_SHAREABILITY_SHIFT (10) > #define GICR_PROPBASER_INNER_CACHEABILITY_SHIFT (7) > #define GICR_PROPBASER_OUTER_CACHEABILITY_SHIFT (56) > @@ -232,6 +235,7 @@ > #define GITS_CTLR_QUIESCENT (1U << 31) > > #define GITS_TYPER_PLPIS (1UL << 0) > +#define GITS_TYPER_ITT_ENTRY_SIZE_SHIFT 4 > #define GITS_TYPER_IDBITS_SHIFT 8 > #define GITS_TYPER_DEVBITS_SHIFT 13 > #define GITS_TYPER_DEVBITS(r) ((((r) >> GITS_TYPER_DEVBITS_SHIFT) & 0x1f) + 1) > @@ -290,6 +294,7 @@ > #define GITS_BASER_TYPE(r) (((r) >> GITS_BASER_TYPE_SHIFT) & 7) > #define GITS_BASER_ENTRY_SIZE_SHIFT (48) > #define GITS_BASER_ENTRY_SIZE(r) ((((r) >> GITS_BASER_ENTRY_SIZE_SHIFT) & 0x1f) + 1) > +#define GITS_BASER_ENTRY_SIZE_MASK GENMASK_ULL(52, 48) > #define GITS_BASER_SHAREABILITY_SHIFT (10) > #define GITS_BASER_InnerShareable \ > GIC_BASER_SHAREABILITY(GITS_BASER, InnerShareable) > diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c > index 18588ef..c336cce 100644 > --- a/virt/kvm/arm/vgic/vgic-its.c > +++ b/virt/kvm/arm/vgic/vgic-its.c > @@ -33,6 +33,12 @@ > #include "vgic.h" > #include "vgic-mmio.h" > > +/* Highest migration ABI revision supported by this code */ > +#define MAX_ABI_REV 0 Can this be defined as #define NR_ITS_ABIS ARRAY_SIZE(its_table_abi_versions) instead? > + > +static int vgic_its_set_abi(struct vgic_its *its, int rev); > +static const struct vgic_its_abi *vgic_its_get_abi(struct vgic_its *its); > + > /* > * Creates a new (reference to a) struct vgic_irq for a given LPI. > * If this LPI is already mapped on another ITS, we increase its refcount > @@ -123,6 +129,25 @@ struct its_ite { > u32 event_id; > }; > > +/** > + * struct vgic_its_abi - ITS abi ops and settings > + * @cte_esz: collection table entry size > + * @dte_esz: device table entry size > + * @ite_esz: interrupt translation table entry size > + * @save tables: save the ITS tables into guest RAM > + * @restore_tables: restore the ITS internal structs from > + * tables stored in guest RAM > + * @commit: apply the ABI settings to the ITS > + */ > +struct vgic_its_abi { > + int cte_esz; > + int dte_esz; > + int ite_esz; > + int (*save_tables)(struct vgic_its *its); > + int (*restore_tables)(struct vgic_its *its); > + int (*commit)(struct vgic_its *its); > +}; > + > /* > * Find and returns a device in the device table for an ITS. > * Must be called with the its_lock mutex held. > @@ -364,6 +389,7 @@ static unsigned long vgic_mmio_read_its_typer(struct kvm *kvm, > struct vgic_its *its, > gpa_t addr, unsigned int len) > { > + const struct vgic_its_abi *abi = vgic_its_get_abi(its); > u64 reg = GITS_TYPER_PLPIS; > > /* > @@ -376,6 +402,7 @@ static unsigned long vgic_mmio_read_its_typer(struct kvm *kvm, > */ > reg |= 0x0f << GITS_TYPER_DEVBITS_SHIFT; > reg |= 0x0f << GITS_TYPER_IDBITS_SHIFT; > + reg |= GIC_ENCODE_SZ(abi->ite_esz, 4) << GITS_TYPER_ITT_ENTRY_SIZE_SHIFT; > > return extract_bytes(reg, addr & 7, len); > } > @@ -1269,6 +1296,7 @@ static void vgic_mmio_write_its_baser(struct kvm *kvm, > gpa_t addr, unsigned int len, > unsigned long val) > { > + const struct vgic_its_abi *abi = vgic_its_get_abi(its); > u64 entry_size, device_type; > u64 reg, *regptr, clearbits = 0; > > @@ -1279,12 +1307,12 @@ static void vgic_mmio_write_its_baser(struct kvm *kvm, > switch (BASER_INDEX(addr)) { > case 0: > regptr = &its->baser_device_table; > - entry_size = 8; > + entry_size = abi->dte_esz; > device_type = GITS_BASER_TYPE_DEVICE; > break; > case 1: > regptr = &its->baser_coll_table; > - entry_size = 8; > + entry_size = abi->cte_esz; > device_type = GITS_BASER_TYPE_COLLECTION; > clearbits = GITS_BASER_INDIRECT; > break; > @@ -1426,7 +1454,6 @@ static int vgic_register_its_iodev(struct kvm *kvm, struct vgic_its *its) > (GIC_BASER_CACHEABILITY(GITS_BASER, INNER, RaWb) | \ > GIC_BASER_CACHEABILITY(GITS_BASER, OUTER, SameAsInner) | \ > GIC_BASER_SHAREABILITY(GITS_BASER, InnerShareable) | \ > - ((8ULL - 1) << GITS_BASER_ENTRY_SIZE_SHIFT) | \ > GITS_BASER_PAGE_SIZE_64K) > > #define INITIAL_PROPBASER_VALUE \ > @@ -1466,7 +1493,7 @@ static int vgic_its_create(struct kvm_device *dev, u32 type) > > dev->private = its; > > - return 0; > + return vgic_its_set_abi(its, MAX_ABI_REV); > } > > static void vgic_its_destroy(struct kvm_device *kvm_dev) > @@ -1584,6 +1611,63 @@ int vgic_its_attr_regs_access(struct kvm_device *dev, > return ret; > } > > +/** > + * vgic_its_save_tables_v0 - Save the ITS tables into guest ARM > + * according to v0 ABI > + */ > +static int vgic_its_save_tables_v0(struct vgic_its *its) > +{ > + return -ENXIO; > +} > + > +/** > + * vgic_its_restore_tables_v0 - Restore the ITS tables from guest RAM > + * to internal data structs according to V0 ABI > + * > + */ > +static int vgic_its_restore_tables_v0(struct vgic_its *its) > +{ > + return -ENXIO; > +} > + > +static int vgic_its_commit_v0(struct vgic_its *its) > +{ > + const struct vgic_its_abi *abi; > + > + abi = vgic_its_get_abi(its); > + its->baser_coll_table &= ~GITS_BASER_ENTRY_SIZE_MASK; > + its->baser_device_table &= ~GITS_BASER_ENTRY_SIZE_MASK; > + > + its->baser_coll_table |= (GIC_ENCODE_SZ(abi->cte_esz, 5) > + << GITS_BASER_ENTRY_SIZE_SHIFT); > + > + its->baser_device_table |= (GIC_ENCODE_SZ(abi->dte_esz, 5) > + << GITS_BASER_ENTRY_SIZE_SHIFT); > + return 0; > +} > + > +static const struct vgic_its_abi its_table_abi_versions[MAX_ABI_REV + 1] = { > + {.cte_esz = 8, .dte_esz = 8, .ite_esz = 8, And this becomes: static const struct vgic_its_abi its_table_abi_versions[] = { [0] = { .cte_esz = ..., }, }; > + .save_tables = vgic_its_save_tables_v0, > + .restore_tables = vgic_its_restore_tables_v0, > + .commit = vgic_its_commit_v0, > + }, > +}; > + > +inline const struct vgic_its_abi *vgic_its_get_abi(struct vgic_its *its) > +{ > + return &its_table_abi_versions[its->abi_rev]; > +} > + > +int vgic_its_set_abi(struct vgic_its *its, int rev) > +{ > + const struct vgic_its_abi *abi; > + > + its->abi_rev = rev; > + abi = vgic_its_get_abi(its); > + return abi->commit(its); > +} > + > static int vgic_its_has_attr(struct kvm_device *dev, > struct kvm_device_attr *attr) > { > Thanks, M. -- Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2017-05-04 14:45 UTC|newest] Thread overview: 144+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-05-04 11:44 [PATCH v6 00/24] vITS save/restore Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 11:44 ` [PATCH v6 01/24] KVM: arm/arm64: Add ITS save/restore API documentation Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 13:23 ` Christoffer Dall 2017-05-04 13:23 ` Christoffer Dall 2017-05-04 14:50 ` Auger Eric 2017-05-04 14:50 ` Auger Eric 2017-05-04 16:52 ` Christoffer Dall 2017-05-04 16:52 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 02/24] KVM: arm/arm64: Add GICV3 pending table save " Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 13:24 ` Christoffer Dall 2017-05-04 13:24 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 03/24] KVM: arm/arm64: vgic-its: rename itte into ite Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 11:44 ` [PATCH v6 04/24] arm/arm64: vgic: turn vgic_find_mmio_region into public Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 11:44 ` [PATCH v6 05/24] KVM: arm64: vgic-its: KVM_DEV_ARM_VGIC_GRP_ITS_REGS group Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 11:44 ` [PATCH v6 06/24] KVM: arm/arm64: vgic: expose (un)lock_all_vcpus Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 11:44 ` [PATCH v6 07/24] KVM: arm64: vgic-its: Implement vgic_its_has_attr_regs and attr_regs_access Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 14:04 ` Marc Zyngier 2017-05-04 14:04 ` Marc Zyngier 2017-05-04 15:03 ` Auger Eric 2017-05-04 15:03 ` Auger Eric 2017-05-04 16:48 ` Christoffer Dall 2017-05-04 16:48 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 08/24] KVM: arm64: vgic-its: Implement vgic_mmio_uaccess_write_its_creadr Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 14:16 ` Marc Zyngier 2017-05-04 14:16 ` Marc Zyngier 2017-05-04 15:09 ` Auger Eric 2017-05-04 15:09 ` Auger Eric 2017-05-04 17:09 ` Christoffer Dall 2017-05-04 17:09 ` Christoffer Dall 2017-05-05 8:06 ` Auger Eric 2017-05-05 8:06 ` Auger Eric 2017-05-04 11:44 ` [PATCH v6 09/24] KVM: arm64: vgic-its: Introduce migration ABI infrastructure Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 14:45 ` Marc Zyngier [this message] 2017-05-04 14:45 ` Marc Zyngier 2017-05-04 17:13 ` Christoffer Dall 2017-05-04 17:13 ` Christoffer Dall 2017-05-05 8:16 ` Auger Eric 2017-05-05 8:16 ` Auger Eric 2017-05-05 9:43 ` Christoffer Dall 2017-05-05 9:43 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 10/24] KVM: arm64: vgic-its: Implement vgic_mmio_uaccess_write_its_iidr Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 15:39 ` Marc Zyngier 2017-05-04 15:39 ` Marc Zyngier 2017-05-04 17:14 ` Christoffer Dall 2017-05-04 17:14 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 11/24] KVM: arm64: vgic-its: Interpret MAPD Size field and check related errors Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-05 9:44 ` Marc Zyngier 2017-05-05 9:44 ` Marc Zyngier 2017-05-04 11:44 ` [PATCH v6 12/24] KVM: arm64: vgic-its: Interpret MAPD ITT_addr field Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 17:16 ` Christoffer Dall 2017-05-04 17:16 ` Christoffer Dall 2017-05-05 9:45 ` Marc Zyngier 2017-05-05 9:45 ` Marc Zyngier 2017-05-04 11:44 ` [PATCH v6 13/24] KVM: arm64: vgic-its: Check the device id matches TYPER DEVBITS range Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 17:19 ` Christoffer Dall 2017-05-04 17:19 ` Christoffer Dall 2017-05-04 17:23 ` Marc Zyngier 2017-05-04 17:23 ` Marc Zyngier 2017-05-04 11:44 ` [PATCH v6 14/24] KVM: arm64: vgic-v3: vgic_v3_lpi_sync_pending_status Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-05 8:11 ` Christoffer Dall 2017-05-05 8:11 ` Christoffer Dall 2017-05-05 9:45 ` Auger Eric 2017-05-05 9:45 ` Auger Eric 2017-05-05 9:59 ` Marc Zyngier 2017-05-05 9:59 ` Marc Zyngier 2017-05-05 10:10 ` Christoffer Dall 2017-05-05 10:10 ` Christoffer Dall 2017-05-05 10:35 ` Marc Zyngier 2017-05-05 10:35 ` Marc Zyngier 2017-05-05 14:20 ` Auger Eric 2017-05-05 14:20 ` Auger Eric 2017-05-05 14:50 ` Christoffer Dall 2017-05-05 14:50 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 15/24] KVM: arm64: vgic-its: Read config and pending bit in add_lpi() Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-05 9:57 ` Christoffer Dall 2017-05-05 9:57 ` Christoffer Dall 2017-05-05 12:50 ` Marc Zyngier 2017-05-05 12:50 ` Marc Zyngier 2017-05-05 14:50 ` Auger Eric 2017-05-05 14:50 ` Auger Eric 2017-05-05 18:07 ` Christoffer Dall 2017-05-05 18:07 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 16/24] KVM: arm64: vgic-its: KVM_DEV_ARM_ITS_SAVE/RESTORE_TABLES Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-05 11:55 ` Christoffer Dall 2017-05-05 11:55 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 17/24] KVM: arm64: vgic-its: vgic_its_alloc_ite/device Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-05 12:04 ` Christoffer Dall 2017-05-05 12:04 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 18/24] KVM: arm64: vgic-its: Add infrastructure for table lookup Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-05 12:16 ` Christoffer Dall 2017-05-05 12:16 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 19/24] KVM: arm64: vgic-its: Collection table save/restore Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-05 12:28 ` Christoffer Dall 2017-05-05 12:28 ` Christoffer Dall 2017-05-05 14:28 ` Auger Eric 2017-05-05 14:28 ` Auger Eric 2017-05-05 14:43 ` Auger Eric 2017-05-05 14:43 ` Auger Eric 2017-05-04 11:44 ` [PATCH v6 20/24] KVM: arm64: vgic-its: vgic_its_check_id returns the entry's GPA Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-04 11:44 ` [PATCH v6 21/24] KVM: arm64: vgic-its: Device table save/restore Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-05 12:44 ` Christoffer Dall 2017-05-05 12:44 ` Christoffer Dall 2017-05-05 16:23 ` Auger Eric 2017-05-05 16:23 ` Auger Eric 2017-05-05 18:12 ` Christoffer Dall 2017-05-05 18:12 ` Christoffer Dall 2017-05-06 10:21 ` Auger Eric 2017-05-06 10:21 ` Auger Eric 2017-05-04 11:44 ` [PATCH v6 22/24] KVM: arm64: vgic-its: ITT save and restore Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-05 14:50 ` Christoffer Dall 2017-05-05 14:50 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 23/24] KVM: arm64: vgic-its: Fix pending table sync Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-05 14:54 ` Christoffer Dall 2017-05-05 14:54 ` Christoffer Dall 2017-05-04 11:44 ` [PATCH v6 24/24] KVM: arm64: vgic-v3: KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES Eric Auger 2017-05-04 11:44 ` Eric Auger 2017-05-05 9:24 ` Auger Eric 2017-05-05 9:24 ` Auger Eric 2017-05-05 14:56 ` Christoffer Dall 2017-05-05 14:56 ` Christoffer Dall
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=4e08d13f-bc15-6cd9-4891-44c593e17c0a@arm.com \ --to=marc.zyngier@arm.com \ --cc=Prasun.Kapoor@cavium.com \ --cc=Vijaya.Kumar@cavium.com \ --cc=andre.przywara@arm.com \ --cc=bjsprakash.linux@gmail.com \ --cc=christoffer.dall@linaro.org \ --cc=dgilbert@redhat.com \ --cc=eric.auger.pro@gmail.com \ --cc=eric.auger@redhat.com \ --cc=kvm@vger.kernel.org \ --cc=kvmarm@lists.cs.columbia.edu \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=pbonzini@redhat.com \ --cc=peter.maydell@linaro.org \ --cc=quintela@redhat.com \ --cc=vijayak@caviumnetworks.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.