When dealing with few clocks depending with each others, sometimes we might only want to update the multiplier/diviser on a specific clock (cf clockB in drawing below) and call "clock_propagate(clockA)" to update the childs period according to the potential new multiplier/diviser values.
+--------+ +--------+ +--------+ | clockA | --> | clockB | --> | clockC | +--------+ +--------+ +--------+ The actual code would not allow that because, since we cannot call "clock_propagate" directly on a child, it would exit on the first child has the period has not changed for clockB, only clockC is impacted in our example. Signed-off-by: Raphael Poggi <raphael.po...@lynxleap.co.uk> --- hw/core/clock.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/core/clock.c b/hw/core/clock.c index a19c7db7df..85421f8b55 100644 --- a/hw/core/clock.c +++ b/hw/core/clock.c @@ -101,8 +101,9 @@ static void clock_propagate_period(Clock *clk, bool call_callbacks) if (call_callbacks) { clock_call_callback(child, ClockUpdate); } - clock_propagate_period(child, call_callbacks); } + + clock_propagate_period(child, call_callbacks); } } -- 2.44.0