qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH for-8.0 1/9] hw/arm: Convert TYPE_ARM_SMMU to 3-phase reset


From: Eric Auger
Subject: Re: [PATCH for-8.0 1/9] hw/arm: Convert TYPE_ARM_SMMU to 3-phase reset
Date: Mon, 28 Nov 2022 19:20:01 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.1

Hi Peter,

On 11/9/22 17:14, Peter Maydell wrote:
> Convert the TYPE_ARM_SMMU device to 3-phase reset.  The legacy method
> doesn't do anything that's invalid in the hold phase, so the
> conversion is simple and not a behaviour change.
> 
> Note that we must convert this base class before we can convert the
> TYPE_ARM_SMMUV3 subclass -- transitional support in Resettable
> handles "chain to parent class reset" when the base class is 3-phase
> and the subclass is still using legacy reset, but not the other way
> around.
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Eric Auger <eric.auger@redhat.com>

Thanks

Eric
> ---
>  hw/arm/smmu-common.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/arm/smmu-common.c b/hw/arm/smmu-common.c
> index e09b9c13b74..220838525d4 100644
> --- a/hw/arm/smmu-common.c
> +++ b/hw/arm/smmu-common.c
> @@ -526,9 +526,9 @@ static void smmu_base_realize(DeviceState *dev, Error 
> **errp)
>      }
>  }
>  
> -static void smmu_base_reset(DeviceState *dev)
> +static void smmu_base_reset_hold(Object *obj)
>  {
> -    SMMUState *s = ARM_SMMU(dev);
> +    SMMUState *s = ARM_SMMU(obj);
>  
>      g_hash_table_remove_all(s->configs);
>      g_hash_table_remove_all(s->iotlb);
> @@ -543,12 +543,13 @@ static Property smmu_dev_properties[] = {
>  static void smmu_base_class_init(ObjectClass *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
> +    ResettableClass *rc = RESETTABLE_CLASS(klass);
>      SMMUBaseClass *sbc = ARM_SMMU_CLASS(klass);
>  
>      device_class_set_props(dc, smmu_dev_properties);
>      device_class_set_parent_realize(dc, smmu_base_realize,
>                                      &sbc->parent_realize);
> -    dc->reset = smmu_base_reset;
> +    rc->phases.hold = smmu_base_reset_hold;
>  }
>  
>  static const TypeInfo smmu_base_info = {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]