Re: [PATCH] KVM: arm/arm64: vgic-its: Check hopefully the last DISCARD command error

From: Auger Eric
Date: Fri Jan 10 2020 - 03:37:29 EST


Hi Zenghui,

On 12/25/19 2:30 PM, Zenghui Yu wrote:
> DISCARD command error occurs if any of the following apply:
>
> - [ ... (those which we have already handled) ]
nit: I would remove the above and simply say the discard is supposed to
fail if the collection is not mapped to any target redistributor. If an
ITE exists then the ite->collection is non NULL. What needs to be
checked is its_is_collection_mapped().

By the way update_affinity_collection() also tests ite->collection. I
think this is useless or do I miss something?

Reviewed-by: Eric Auger <eric.auger@xxxxxxxxxx>

Thanks

Eric

> - The EventID for the device is mapped to a collection that
> has not been mapped to an RDbase using MAPC.
>
> Let's take the unmapped collection case into account and report
> a DISCARD command error if it really happens.
>
> Signed-off-by: Zenghui Yu <yuzenghui@xxxxxxxxxx>
> ---
> virt/kvm/arm/vgic/vgic-its.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c
> index 17920d1b350a..d53d34a33e35 100644
> --- a/virt/kvm/arm/vgic/vgic-its.c
> +++ b/virt/kvm/arm/vgic/vgic-its.c
> @@ -839,9 +839,8 @@ static int vgic_its_cmd_handle_discard(struct kvm *kvm, struct vgic_its *its,
> u32 event_id = its_cmd_get_id(its_cmd);
> struct its_ite *ite;
>
> -
> ite = find_ite(its, device_id, event_id);
> - if (ite && ite->collection) {
> + if (ite && its_is_collection_mapped(ite->collection)) {
> /*
> * Though the spec talks about removing the pending state, we
> * don't bother here since we clear the ITTE anyway and the
>