Message ID | 20221109161444.3397405-2-peter.maydell@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | arm: Convert Arm GIC, ITS, SMMU devices to 3-phase reset | expand |
On 9/11/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> > --- > hw/arm/smmu-common.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On 11/10/22 03: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> > --- > hw/arm/smmu-common.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
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 = {
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 = {
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> --- hw/arm/smmu-common.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)