From: Christoffer Dall <christoffer.dall@linaro.org>
To: Eric Auger <eric.auger@redhat.com>
Cc: kvm@vger.kernel.org, Prasun.Kapoor@cavium.com,
marc.zyngier@arm.com, andre.przywara@arm.com,
quintela@redhat.com, dgilbert@redhat.com,
Vijaya.Kumar@cavium.com, vijayak@caviumnetworks.com,
pbonzini@redhat.com, kvmarm@lists.cs.columbia.edu,
linux-arm-kernel@lists.infradead.org, eric.auger.pro@gmail.com
Subject: Re: [PATCH v5 09/22] KVM: arm64: vgic-its: Introduce migration ABI infrastructure
Date: Thu, 27 Apr 2017 06:14:48 -0700 [thread overview]
Message-ID: <20170427131448.GK50776@lvm> (raw)
In-Reply-To: <1492164934-988-10-git-send-email-eric.auger@redhat.com>
On Fri, Apr 14, 2017 at 12:15:21PM +0200, Eric Auger wrote:
> We plan to support different migration ABIs, ie. characterizing
> the ITS table layout format in guest RAM. Typically a new ABI will
nit: s/Typically/For example,
> 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.
>
> 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>
>
> ---
>
> 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 | 4 ++
> virt/kvm/arm/vgic/vgic-its.c | 82 ++++++++++++++++++++++++++++++++++++--
> 3 files changed, 85 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..9648bad 100644
> --- a/include/linux/irqchip/arm-gic-v3.h
> +++ b/include/linux/irqchip/arm-gic-v3.h
> @@ -132,6 +132,8 @@
> #define GIC_BASER_SHAREABILITY(reg, type) \
> (GIC_BASER_##type << reg##_SHAREABILITY_SHIFT)
>
> +#define GIC_ENCODE_SZ(n, w) (((unsigned long)(n) - 1) & GENMASK_ULL(((w) - 1), 0))
> +
This is a very generic name. Could you add a comment about what the
idea is?
> #define GICR_PROPBASER_SHAREABILITY_SHIFT (10)
> #define GICR_PROPBASER_INNER_CACHEABILITY_SHIFT (7)
> #define GICR_PROPBASER_OUTER_CACHEABILITY_SHIFT (56)
> @@ -232,6 +234,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 +293,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 79ed1c2..69ecfe4 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
> +
> +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,15 @@ struct its_ite {
> u32 event_id;
> };
>
> +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);
Can you document what these functions do (especially the commit function
seems to be internal and not be related to the ABI as such).
> +};
> +
> /*
> * Find and returns a device in the device table for an ITS.
> * Must be called with the its_lock mutex held.
> @@ -364,6 +379,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 +392,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);
> }
> @@ -1268,6 +1285,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;
>
> @@ -1278,12 +1296,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;
> @@ -1425,7 +1443,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 \
> @@ -1465,7 +1482,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)
> @@ -1592,6 +1609,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 abi[MAX_ABI_REV + 1] = {
nit: can we name this its_table_abi_versions or something like that
which is slightly more descriptive?
> + {.cte_esz = 8, .dte_esz = 8, .ite_esz = 8,
> + .save_tables = vgic_its_save_tables_v0,
> + .restore_tables = vgic_its_restore_tables_v0,
> + . commit = vgic_its_commit_v0,
stray whitespace
> + },
> +};
> +
> +inline const struct vgic_its_abi *vgic_its_get_abi(struct vgic_its *its)
> +{
> + return &abi[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)
> {
> --
> 2.5.5
>
Thanks,
-Christoffer
WARNING: multiple messages have this Message-ID (diff)
From: christoffer.dall@linaro.org (Christoffer Dall)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 09/22] KVM: arm64: vgic-its: Introduce migration ABI infrastructure
Date: Thu, 27 Apr 2017 06:14:48 -0700 [thread overview]
Message-ID: <20170427131448.GK50776@lvm> (raw)
In-Reply-To: <1492164934-988-10-git-send-email-eric.auger@redhat.com>
On Fri, Apr 14, 2017 at 12:15:21PM +0200, Eric Auger wrote:
> We plan to support different migration ABIs, ie. characterizing
> the ITS table layout format in guest RAM. Typically a new ABI will
nit: s/Typically/For example,
> 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.
>
> 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>
>
> ---
>
> 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 | 4 ++
> virt/kvm/arm/vgic/vgic-its.c | 82 ++++++++++++++++++++++++++++++++++++--
> 3 files changed, 85 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..9648bad 100644
> --- a/include/linux/irqchip/arm-gic-v3.h
> +++ b/include/linux/irqchip/arm-gic-v3.h
> @@ -132,6 +132,8 @@
> #define GIC_BASER_SHAREABILITY(reg, type) \
> (GIC_BASER_##type << reg##_SHAREABILITY_SHIFT)
>
> +#define GIC_ENCODE_SZ(n, w) (((unsigned long)(n) - 1) & GENMASK_ULL(((w) - 1), 0))
> +
This is a very generic name. Could you add a comment about what the
idea is?
> #define GICR_PROPBASER_SHAREABILITY_SHIFT (10)
> #define GICR_PROPBASER_INNER_CACHEABILITY_SHIFT (7)
> #define GICR_PROPBASER_OUTER_CACHEABILITY_SHIFT (56)
> @@ -232,6 +234,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 +293,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 79ed1c2..69ecfe4 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
> +
> +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,15 @@ struct its_ite {
> u32 event_id;
> };
>
> +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);
Can you document what these functions do (especially the commit function
seems to be internal and not be related to the ABI as such).
> +};
> +
> /*
> * Find and returns a device in the device table for an ITS.
> * Must be called with the its_lock mutex held.
> @@ -364,6 +379,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 +392,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);
> }
> @@ -1268,6 +1285,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;
>
> @@ -1278,12 +1296,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;
> @@ -1425,7 +1443,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 \
> @@ -1465,7 +1482,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)
> @@ -1592,6 +1609,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 abi[MAX_ABI_REV + 1] = {
nit: can we name this its_table_abi_versions or something like that
which is slightly more descriptive?
> + {.cte_esz = 8, .dte_esz = 8, .ite_esz = 8,
> + .save_tables = vgic_its_save_tables_v0,
> + .restore_tables = vgic_its_restore_tables_v0,
> + . commit = vgic_its_commit_v0,
stray whitespace
> + },
> +};
> +
> +inline const struct vgic_its_abi *vgic_its_get_abi(struct vgic_its *its)
> +{
> + return &abi[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)
> {
> --
> 2.5.5
>
Thanks,
-Christoffer
next prev parent reply other threads:[~2017-04-27 13:12 UTC|newest]
Thread overview: 264+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-14 10:15 [PATCH v5 00/22] vITS save/restore Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-14 10:15 ` [PATCH v5 01/22] KVM: arm/arm64: Add ITS save/restore API documentation Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-25 10:38 ` Peter Maydell
2017-04-25 10:38 ` Peter Maydell
2017-04-26 12:31 ` Christoffer Dall
2017-04-26 12:31 ` Christoffer Dall
2017-04-26 15:48 ` Auger Eric
2017-04-26 15:48 ` Auger Eric
2017-04-27 8:57 ` Christoffer Dall
2017-04-27 8:57 ` Christoffer Dall
2017-04-27 9:33 ` Auger Eric
2017-04-27 9:33 ` Auger Eric
2017-04-27 11:02 ` Christoffer Dall
2017-04-27 11:02 ` Christoffer Dall
2017-04-27 12:51 ` Auger Eric
2017-04-27 12:51 ` Auger Eric
2017-04-27 14:45 ` Christoffer Dall
2017-04-27 14:45 ` Christoffer Dall
2017-04-27 15:29 ` Auger Eric
2017-04-27 15:29 ` Auger Eric
2017-04-27 16:23 ` Marc Zyngier
2017-04-27 16:23 ` Marc Zyngier
2017-04-27 17:14 ` Auger Eric
2017-04-27 17:14 ` Auger Eric
2017-04-27 17:27 ` Christoffer Dall
2017-04-27 17:27 ` Christoffer Dall
2017-04-27 16:38 ` Christoffer Dall
2017-04-27 16:38 ` Christoffer Dall
2017-04-27 17:27 ` Auger Eric
2017-04-27 17:27 ` Auger Eric
2017-04-27 17:54 ` Christoffer Dall
2017-04-27 17:54 ` Christoffer Dall
2017-04-27 19:27 ` Auger Eric
2017-04-27 19:27 ` Auger Eric
2017-05-04 7:00 ` Auger Eric
2017-05-04 7:00 ` Auger Eric
2017-05-04 7:40 ` Marc Zyngier
2017-05-04 7:40 ` Marc Zyngier
2017-05-04 7:54 ` Auger Eric
2017-05-04 7:54 ` Auger Eric
2017-05-04 7:46 ` Christoffer Dall
2017-05-04 7:46 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 02/22] KVM: arm/arm64: Add GICV3 pending table save " Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-25 10:43 ` Peter Maydell
2017-04-25 10:43 ` Peter Maydell
2017-04-26 8:26 ` Auger Eric
2017-04-26 8:26 ` Auger Eric
2017-04-26 8:44 ` Peter Maydell
2017-04-26 8:44 ` Peter Maydell
2017-04-26 8:48 ` Dr. David Alan Gilbert
2017-04-26 8:48 ` Dr. David Alan Gilbert
2017-04-26 9:57 ` Auger Eric
2017-04-26 9:57 ` Auger Eric
2017-04-26 13:00 ` Christoffer Dall
2017-04-26 13:00 ` Christoffer Dall
2017-04-26 13:01 ` Peter Maydell
2017-04-26 13:01 ` Peter Maydell
2017-04-26 13:14 ` Christoffer Dall
2017-04-26 13:14 ` Christoffer Dall
2017-04-26 13:26 ` Peter Maydell
2017-04-26 13:26 ` Peter Maydell
2017-04-26 14:47 ` Auger Eric
2017-04-26 14:47 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 03/22] KVM: arm/arm64: vgic-its: rename itte into ite Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:21 ` Prakash B
2017-04-26 11:21 ` Prakash B
2017-04-27 9:05 ` Christoffer Dall
2017-04-27 9:05 ` Christoffer Dall
2017-04-27 9:20 ` Andre Przywara
2017-04-27 9:20 ` Andre Przywara
2017-04-27 9:40 ` Auger Eric
2017-04-27 9:40 ` Auger Eric
2017-04-27 11:09 ` Christoffer Dall
2017-04-27 11:09 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 04/22] arm/arm64: vgic: turn vgic_find_mmio_region into public Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:22 ` Prakash B
2017-04-26 11:22 ` Prakash B
2017-04-27 9:07 ` Christoffer Dall
2017-04-27 9:07 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 05/22] KVM: arm64: vgic-its: KVM_DEV_ARM_VGIC_GRP_ITS_REGS group Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:23 ` Prakash B
2017-04-26 11:23 ` Prakash B
2017-04-27 9:12 ` Christoffer Dall
2017-04-27 9:12 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 06/22] KVM: arm/arm64: vgic: expose (un)lock_all_vcpus Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:23 ` Prakash B
2017-04-26 11:23 ` Prakash B
2017-04-27 9:18 ` Christoffer Dall
2017-04-27 9:18 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 07/22] KVM: arm64: vgic-its: Implement vgic_its_has_attr_regs and attr_regs_access Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:24 ` Prakash B
2017-04-26 11:24 ` Prakash B
2017-04-27 11:00 ` Christoffer Dall
2017-04-27 11:00 ` Christoffer Dall
2017-04-27 12:22 ` Auger Eric
2017-04-27 12:22 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 08/22] KVM: arm64: vgic-its: Implement vgic_mmio_uaccess_write_its_creadr Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:24 ` Prakash B
2017-04-26 11:24 ` Prakash B
2017-04-27 11:27 ` Christoffer Dall
2017-04-27 11:27 ` Christoffer Dall
2017-04-27 12:53 ` Auger Eric
2017-04-27 12:53 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 09/22] KVM: arm64: vgic-its: Introduce migration ABI infrastructure Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:27 ` Prakash B
2017-04-26 11:27 ` Prakash B
2017-04-27 13:14 ` Christoffer Dall [this message]
2017-04-27 13:14 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 10/22] KVM: arm64: vgic-its: Implement vgic_mmio_uaccess_write_its_iidr Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:27 ` Prakash B
2017-04-26 11:27 ` Prakash B
2017-04-27 14:57 ` Christoffer Dall
2017-04-27 14:57 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 11/22] KVM: arm64: vgic-its: Interpret MAPD Size field and check related errors Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:28 ` Prakash B
2017-04-26 11:28 ` Prakash B
2017-04-27 16:25 ` Christoffer Dall
2017-04-27 16:25 ` Christoffer Dall
2017-04-27 17:15 ` Auger Eric
2017-04-27 17:15 ` Auger Eric
2017-04-27 17:28 ` Christoffer Dall
2017-04-27 17:28 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 12/22] KVM: arm64: vgic-its: Interpret MAPD ITT_addr field Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:29 ` Prakash B
2017-04-26 11:29 ` Prakash B
2017-04-27 16:43 ` Christoffer Dall
2017-04-27 16:43 ` Christoffer Dall
2017-04-27 17:44 ` Auger Eric
2017-04-27 17:44 ` Auger Eric
2017-04-27 18:09 ` Christoffer Dall
2017-04-27 18:09 ` Christoffer Dall
2017-04-27 19:18 ` Auger Eric
2017-04-27 19:18 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 13/22] KVM: arm64: vgic-its: Check the device id matches TYPER DEVBITS range Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:29 ` Prakash B
2017-04-26 11:29 ` Prakash B
2017-04-27 16:48 ` Christoffer Dall
2017-04-27 16:48 ` Christoffer Dall
2017-04-27 17:24 ` Auger Eric
2017-04-27 17:24 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 14/22] KVM: arm64: vgic-its: KVM_DEV_ARM_ITS_SAVE/RESTORE_TABLES Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:31 ` Prakash B
2017-04-26 11:31 ` Prakash B
2017-04-27 17:24 ` Christoffer Dall
2017-04-27 17:24 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 15/22] KVM: arm64: vgic-its: vgic_its_alloc_ite/device Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:31 ` Prakash B
2017-04-26 11:31 ` Prakash B
2017-04-27 17:31 ` Christoffer Dall
2017-04-27 17:31 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 16/22] KVM: arm64: vgic-its: Add infrastructure for table lookup Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:32 ` Prakash B
2017-04-26 11:32 ` Prakash B
2017-04-27 18:06 ` Christoffer Dall
2017-04-27 18:06 ` Christoffer Dall
2017-04-27 19:24 ` Auger Eric
2017-04-27 19:24 ` Auger Eric
2017-04-28 9:47 ` Christoffer Dall
2017-04-28 9:47 ` Christoffer Dall
2017-04-30 19:33 ` Christoffer Dall
2017-04-30 19:33 ` Christoffer Dall
2017-05-03 13:40 ` Auger Eric
2017-05-03 13:40 ` Auger Eric
2017-05-03 14:38 ` Christoffer Dall
2017-05-03 14:38 ` Christoffer Dall
2017-04-30 19:35 ` Christoffer Dall
2017-04-30 19:35 ` Christoffer Dall
2017-05-03 6:53 ` Auger Eric
2017-05-03 6:53 ` Auger Eric
2017-05-03 8:01 ` Christoffer Dall
2017-05-03 8:01 ` Christoffer Dall
2017-05-03 10:22 ` Auger Eric
2017-05-03 10:22 ` Auger Eric
2017-04-30 20:13 ` Christoffer Dall
2017-04-30 20:13 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 17/22] KVM: arm64: vgic-its: Collection table save/restore Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:33 ` Prakash B
2017-04-26 11:33 ` Prakash B
2017-04-28 10:44 ` Christoffer Dall
2017-04-28 10:44 ` Christoffer Dall
2017-04-28 11:05 ` Auger Eric
2017-04-28 11:05 ` Auger Eric
2017-04-28 17:42 ` Christoffer Dall
2017-04-28 17:42 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 18/22] KVM: arm64: vgic-its: vgic_its_check_id returns the entry's GPA Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:33 ` Prakash B
2017-04-26 11:33 ` Prakash B
2017-05-02 8:29 ` Christoffer Dall
2017-05-02 8:29 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 19/22] KVM: arm64: vgic-its: ITT save and restore Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:34 ` Prakash B
2017-04-26 11:34 ` Prakash B
2017-04-30 20:14 ` Christoffer Dall
2017-04-30 20:14 ` Christoffer Dall
2017-05-03 16:08 ` Auger Eric
2017-05-03 16:08 ` Auger Eric
2017-05-03 16:37 ` Christoffer Dall
2017-05-03 16:37 ` Christoffer Dall
2017-05-03 21:55 ` Auger Eric
2017-05-03 21:55 ` Auger Eric
2017-05-04 7:31 ` Christoffer Dall
2017-05-04 7:31 ` Christoffer Dall
2017-05-04 7:40 ` Auger Eric
2017-05-04 7:40 ` Auger Eric
2017-05-04 8:23 ` Christoffer Dall
2017-05-04 8:23 ` Christoffer Dall
2017-05-04 8:44 ` Auger Eric
2017-05-04 8:44 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 20/22] KVM: arm64: vgic-its: Device table save/restore Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:34 ` Prakash B
2017-04-26 11:34 ` Prakash B
2017-04-30 20:55 ` Christoffer Dall
2017-04-30 20:55 ` Christoffer Dall
2017-05-03 14:07 ` Auger Eric
2017-05-03 14:07 ` Auger Eric
2017-05-03 15:29 ` Christoffer Dall
2017-05-03 15:29 ` Christoffer Dall
2017-05-03 21:38 ` Auger Eric
2017-05-03 21:38 ` Auger Eric
2017-04-14 10:15 ` [PATCH v5 21/22] KVM: arm64: vgic-its: Fix pending table sync Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:35 ` Prakash B
2017-04-26 11:35 ` Prakash B
2017-04-30 21:10 ` Christoffer Dall
2017-04-30 21:10 ` Christoffer Dall
2017-05-03 22:20 ` Auger Eric
2017-05-03 22:20 ` Auger Eric
2017-05-04 7:32 ` Christoffer Dall
2017-05-04 7:32 ` Christoffer Dall
2017-04-14 10:15 ` [PATCH v5 22/22] KVM: arm64: vgic-v3: KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES Eric Auger
2017-04-14 10:15 ` Eric Auger
2017-04-26 11:35 ` Prakash B
2017-04-26 11:35 ` Prakash B
2017-04-30 21:32 ` Christoffer Dall
2017-04-30 21:32 ` Christoffer Dall
2017-05-03 22:22 ` Auger Eric
2017-05-03 22:22 ` Auger Eric
2017-04-26 11:38 ` [PATCH v5 00/22] vITS save/restore Prakash B
2017-04-26 11:38 ` Prakash B
2017-04-26 13:02 ` Christoffer Dall
2017-04-26 13:02 ` Christoffer Dall
2017-04-27 6:55 ` Auger Eric
2017-04-27 6:55 ` Auger Eric
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=20170427131448.GK50776@lvm \
--to=christoffer.dall@linaro.org \
--cc=Prasun.Kapoor@cavium.com \
--cc=Vijaya.Kumar@cavium.com \
--cc=andre.przywara@arm.com \
--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=marc.zyngier@arm.com \
--cc=pbonzini@redhat.com \
--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: link
Be 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.