mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 17:53:56 -06:00
ptimer: Rename PTIMER_POLICY_DEFAULT to PTIMER_POLICY_LEGACY
The traditional ptimer behaviour includes a collection of weird edge case behaviours. In 2016 we improved the ptimer implementation to fix these and generally make the behaviour more flexible, with ptimers opting in to the new behaviour by passing an appropriate set of policy flags to ptimer_init(). For backwards-compatibility, we defined PTIMER_POLICY_DEFAULT (which sets no flags) to give the old weird behaviour. This turns out to be a poor choice of name, because people writing new devices which use ptimers are misled into thinking that the default is probably a sensible choice of flags, when in fact it is almost always not what you want. Rename PTIMER_POLICY_DEFAULT to PTIMER_POLICY_LEGACY and beef up the comment to more clearly say that new devices should not be using it. The code-change part of this commit was produced by sed -i -e 's/PTIMER_POLICY_DEFAULT/PTIMER_POLICY_LEGACY/g' $(git grep -l PTIMER_POLICY_DEFAULT) with the exception of a test name string change in tests/unit/ptimer-test.c which was added manually. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Francisco Iglesias <francisco.iglesias@amd.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220516103058.162280-1-peter.maydell@linaro.org
This commit is contained in:
parent
afdcbddcc9
commit
9598c1bb39
25 changed files with 44 additions and 36 deletions
|
@ -275,7 +275,7 @@ static void a10_pit_init(Object *obj)
|
|||
|
||||
tc->container = s;
|
||||
tc->index = i;
|
||||
s->timer[i] = ptimer_init(a10_pit_timer_cb, tc, PTIMER_POLICY_DEFAULT);
|
||||
s->timer[i] = ptimer_init(a10_pit_timer_cb, tc, PTIMER_POLICY_LEGACY);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -185,7 +185,7 @@ static void altera_timer_realize(DeviceState *dev, Error **errp)
|
|||
return;
|
||||
}
|
||||
|
||||
t->ptimer = ptimer_init(timer_hit, t, PTIMER_POLICY_DEFAULT);
|
||||
t->ptimer = ptimer_init(timer_hit, t, PTIMER_POLICY_LEGACY);
|
||||
ptimer_transaction_begin(t->ptimer);
|
||||
ptimer_set_freq(t->ptimer, t->freq_hz);
|
||||
ptimer_transaction_commit(t->ptimer);
|
||||
|
|
|
@ -180,7 +180,7 @@ static arm_timer_state *arm_timer_init(uint32_t freq)
|
|||
s->freq = freq;
|
||||
s->control = TIMER_CTRL_IE;
|
||||
|
||||
s->timer = ptimer_init(arm_timer_tick, s, PTIMER_POLICY_DEFAULT);
|
||||
s->timer = ptimer_init(arm_timer_tick, s, PTIMER_POLICY_LEGACY);
|
||||
vmstate_register(NULL, VMSTATE_INSTANCE_ID_ANY, &vmstate_arm_timer, s);
|
||||
return s;
|
||||
}
|
||||
|
|
|
@ -139,7 +139,7 @@ static void digic_timer_init(Object *obj)
|
|||
{
|
||||
DigicTimerState *s = DIGIC_TIMER(obj);
|
||||
|
||||
s->ptimer = ptimer_init(digic_timer_tick, NULL, PTIMER_POLICY_DEFAULT);
|
||||
s->ptimer = ptimer_init(digic_timer_tick, NULL, PTIMER_POLICY_LEGACY);
|
||||
|
||||
/*
|
||||
* FIXME: there is no documentation on Digic timer
|
||||
|
|
|
@ -370,9 +370,9 @@ static void etraxfs_timer_realize(DeviceState *dev, Error **errp)
|
|||
ETRAXTimerState *t = ETRAX_TIMER(dev);
|
||||
SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
|
||||
|
||||
t->ptimer_t0 = ptimer_init(timer0_hit, t, PTIMER_POLICY_DEFAULT);
|
||||
t->ptimer_t1 = ptimer_init(timer1_hit, t, PTIMER_POLICY_DEFAULT);
|
||||
t->ptimer_wd = ptimer_init(watchdog_hit, t, PTIMER_POLICY_DEFAULT);
|
||||
t->ptimer_t0 = ptimer_init(timer0_hit, t, PTIMER_POLICY_LEGACY);
|
||||
t->ptimer_t1 = ptimer_init(timer1_hit, t, PTIMER_POLICY_LEGACY);
|
||||
t->ptimer_wd = ptimer_init(watchdog_hit, t, PTIMER_POLICY_LEGACY);
|
||||
|
||||
sysbus_init_irq(sbd, &t->irq);
|
||||
sysbus_init_irq(sbd, &t->nmi);
|
||||
|
|
|
@ -1503,17 +1503,17 @@ static void exynos4210_mct_init(Object *obj)
|
|||
|
||||
/* Global timer */
|
||||
s->g_timer.ptimer_frc = ptimer_init(exynos4210_gfrc_event, s,
|
||||
PTIMER_POLICY_DEFAULT);
|
||||
PTIMER_POLICY_LEGACY);
|
||||
memset(&s->g_timer.reg, 0, sizeof(struct gregs));
|
||||
|
||||
/* Local timers */
|
||||
for (i = 0; i < 2; i++) {
|
||||
s->l_timer[i].tick_timer.ptimer_tick =
|
||||
ptimer_init(exynos4210_ltick_event, &s->l_timer[i],
|
||||
PTIMER_POLICY_DEFAULT);
|
||||
PTIMER_POLICY_LEGACY);
|
||||
s->l_timer[i].ptimer_frc =
|
||||
ptimer_init(exynos4210_lfrc_event, &s->l_timer[i],
|
||||
PTIMER_POLICY_DEFAULT);
|
||||
PTIMER_POLICY_LEGACY);
|
||||
s->l_timer[i].id = i;
|
||||
}
|
||||
|
||||
|
|
|
@ -400,7 +400,7 @@ static void exynos4210_pwm_init(Object *obj)
|
|||
sysbus_init_irq(dev, &s->timer[i].irq);
|
||||
s->timer[i].ptimer = ptimer_init(exynos4210_pwm_tick,
|
||||
&s->timer[i],
|
||||
PTIMER_POLICY_DEFAULT);
|
||||
PTIMER_POLICY_LEGACY);
|
||||
s->timer[i].id = i;
|
||||
s->timer[i].parent = s;
|
||||
}
|
||||
|
|
|
@ -383,7 +383,7 @@ static void grlib_gptimer_realize(DeviceState *dev, Error **errp)
|
|||
|
||||
timer->unit = unit;
|
||||
timer->ptimer = ptimer_init(grlib_gptimer_hit, timer,
|
||||
PTIMER_POLICY_DEFAULT);
|
||||
PTIMER_POLICY_LEGACY);
|
||||
timer->id = i;
|
||||
|
||||
/* One IRQ line for each timer */
|
||||
|
|
|
@ -347,9 +347,9 @@ static void imx_epit_realize(DeviceState *dev, Error **errp)
|
|||
0x00001000);
|
||||
sysbus_init_mmio(sbd, &s->iomem);
|
||||
|
||||
s->timer_reload = ptimer_init(imx_epit_reload, s, PTIMER_POLICY_DEFAULT);
|
||||
s->timer_reload = ptimer_init(imx_epit_reload, s, PTIMER_POLICY_LEGACY);
|
||||
|
||||
s->timer_cmp = ptimer_init(imx_epit_cmp, s, PTIMER_POLICY_DEFAULT);
|
||||
s->timer_cmp = ptimer_init(imx_epit_cmp, s, PTIMER_POLICY_LEGACY);
|
||||
}
|
||||
|
||||
static void imx_epit_class_init(ObjectClass *klass, void *data)
|
||||
|
|
|
@ -505,7 +505,7 @@ static void imx_gpt_realize(DeviceState *dev, Error **errp)
|
|||
0x00001000);
|
||||
sysbus_init_mmio(sbd, &s->iomem);
|
||||
|
||||
s->timer = ptimer_init(imx_gpt_timeout, s, PTIMER_POLICY_DEFAULT);
|
||||
s->timer = ptimer_init(imx_gpt_timeout, s, PTIMER_POLICY_LEGACY);
|
||||
}
|
||||
|
||||
static void imx_gpt_class_init(ObjectClass *klass, void *data)
|
||||
|
|
|
@ -232,7 +232,7 @@ static void mss_timer_init(Object *obj)
|
|||
for (i = 0; i < NUM_TIMERS; i++) {
|
||||
struct Msf2Timer *st = &t->timers[i];
|
||||
|
||||
st->ptimer = ptimer_init(timer_hit, st, PTIMER_POLICY_DEFAULT);
|
||||
st->ptimer = ptimer_init(timer_hit, st, PTIMER_POLICY_LEGACY);
|
||||
ptimer_transaction_begin(st->ptimer);
|
||||
ptimer_set_freq(st->ptimer, t->freq_hz);
|
||||
ptimer_transaction_commit(st->ptimer);
|
||||
|
|
|
@ -239,7 +239,7 @@ static void *sh_timer_init(uint32_t freq, int feat, qemu_irq irq)
|
|||
s->enabled = 0;
|
||||
s->irq = irq;
|
||||
|
||||
s->timer = ptimer_init(sh_timer_tick, s, PTIMER_POLICY_DEFAULT);
|
||||
s->timer = ptimer_init(sh_timer_tick, s, PTIMER_POLICY_LEGACY);
|
||||
|
||||
sh_timer_write(s, OFFSET_TCOR >> 2, s->tcor);
|
||||
sh_timer_write(s, OFFSET_TCNT >> 2, s->tcnt);
|
||||
|
|
|
@ -405,7 +405,7 @@ static void slavio_timer_init(Object *obj)
|
|||
tc->timer_index = i;
|
||||
|
||||
s->cputimer[i].timer = ptimer_init(slavio_timer_irq, tc,
|
||||
PTIMER_POLICY_DEFAULT);
|
||||
PTIMER_POLICY_LEGACY);
|
||||
ptimer_transaction_begin(s->cputimer[i].timer);
|
||||
ptimer_set_period(s->cputimer[i].timer, TIMER_PERIOD);
|
||||
ptimer_transaction_commit(s->cputimer[i].timer);
|
||||
|
|
|
@ -223,7 +223,7 @@ static void xilinx_timer_realize(DeviceState *dev, Error **errp)
|
|||
|
||||
xt->parent = t;
|
||||
xt->nr = i;
|
||||
xt->ptimer = ptimer_init(timer_hit, xt, PTIMER_POLICY_DEFAULT);
|
||||
xt->ptimer = ptimer_init(timer_hit, xt, PTIMER_POLICY_LEGACY);
|
||||
ptimer_transaction_begin(xt->ptimer);
|
||||
ptimer_set_freq(xt->ptimer, t->freq_hz);
|
||||
ptimer_transaction_commit(xt->ptimer);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue