[PATCH] hpet: do not overwrite properties on post_load

Paolo Bonzini posted 1 patch 4 months ago
There is a newer version of this series
hw/timer/hpet.c | 10 ----------
1 file changed, 10 deletions(-)
[PATCH] hpet: do not overwrite properties on post_load
Posted by Paolo Bonzini 4 months ago
Migration relies on having the same device configuration on the source
and destination.  Therefore, there is no need to modify flags,
timer capabilities and the fw_cfg HPET block id on migration;
it was set to exactly the same values by realize.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/timer/hpet.c | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
index 5399f1b2a3f..18c8ce26e0d 100644
--- a/hw/timer/hpet.c
+++ b/hw/timer/hpet.c
@@ -275,16 +275,6 @@ static int hpet_post_load(void *opaque, int version_id)
                         - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
     }
 
-    /* Push number of timers into capability returned via HPET_ID */
-    s->capability &= ~HPET_ID_NUM_TIM_MASK;
-    s->capability |= (s->num_timers - 1) << HPET_ID_NUM_TIM_SHIFT;
-    hpet_cfg.hpet[s->hpet_id].event_timer_block_id = (uint32_t)s->capability;
-
-    /* Derive HPET_MSI_SUPPORT from the capability of the first timer. */
-    s->flags &= ~(1 << HPET_MSI_SUPPORT);
-    if (s->timer[0].config & HPET_TN_FSB_CAP) {
-        s->flags |= 1 << HPET_MSI_SUPPORT;
-    }
     return 0;
 }
 
-- 
2.47.1
Re: [PATCH] hpet: do not overwrite properties on post_load
Posted by Zhao Liu 4 months ago
On Thu, Dec 05, 2024 at 09:37:21PM +0100, Paolo Bonzini wrote:
> Date: Thu,  5 Dec 2024 21:37:21 +0100
> From: Paolo Bonzini <pbonzini@redhat.com>
> Subject: [PATCH] hpet: do not overwrite properties on post_load
> X-Mailer: git-send-email 2.47.1
> 
> Migration relies on having the same device configuration on the source
> and destination.  Therefore, there is no need to modify flags,
> timer capabilities and the fw_cfg HPET block id on migration;
> it was set to exactly the same values by realize.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  hw/timer/hpet.c | 10 ----------
>  1 file changed, 10 deletions(-)

Indeed, thanks!

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>

> diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c
> index 5399f1b2a3f..18c8ce26e0d 100644
> --- a/hw/timer/hpet.c
> +++ b/hw/timer/hpet.c
> @@ -275,16 +275,6 @@ static int hpet_post_load(void *opaque, int version_id)
>                          - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
>      }
>  
> -    /* Push number of timers into capability returned via HPET_ID */
> -    s->capability &= ~HPET_ID_NUM_TIM_MASK;
> -    s->capability |= (s->num_timers - 1) << HPET_ID_NUM_TIM_SHIFT;
> -    hpet_cfg.hpet[s->hpet_id].event_timer_block_id = (uint32_t)s->capability;
> -
> -    /* Derive HPET_MSI_SUPPORT from the capability of the first timer. */
> -    s->flags &= ~(1 << HPET_MSI_SUPPORT);
> -    if (s->timer[0].config & HPET_TN_FSB_CAP) {
> -        s->flags |= 1 << HPET_MSI_SUPPORT;

About the MSI (FSB) support, I haven't seen it being used anywhere. Is it the
dead code?

> -    }
>      return 0;
>  }
>  
> -- 
> 2.47.1
>
Re: [PATCH] hpet: do not overwrite properties on post_load
Posted by Zhao Liu 2 months, 2 weeks ago
This patch was missed :-) which could free HPETState.flags from a
BqlCell.

> > -    /* Push number of timers into capability returned via HPET_ID */
> > -    s->capability &= ~HPET_ID_NUM_TIM_MASK;
> > -    s->capability |= (s->num_timers - 1) << HPET_ID_NUM_TIM_SHIFT;
> > -    hpet_cfg.hpet[s->hpet_id].event_timer_block_id = (uint32_t)s->capability;
> > -
> > -    /* Derive HPET_MSI_SUPPORT from the capability of the first timer. */
> > -    s->flags &= ~(1 << HPET_MSI_SUPPORT);
> > -    if (s->timer[0].config & HPET_TN_FSB_CAP) {
> > -        s->flags |= 1 << HPET_MSI_SUPPORT;
> 
> About the MSI (FSB) support, I haven't seen it being used anywhere. Is it the
> dead code?
> 

I have this question since I find it seems no way to set "msi" and
"timers" properties by user, and no code sets them.

    DEFINE_PROP_UINT8("timers", HPETState, num_timers, HPET_MIN_TIMERS),
    DEFINE_PROP_BIT("msi", HPETState, flags, HPET_MSI_SUPPORT, false),

Thanks,
Zhao