On Wed, Oct 15, 2014 at 04:06:20PM +0100, Marc Zyngier wrote: > Commit c387f07e6205 (clocksource: arm_arch_timer: Discard unavailable > timers correctly) changed the way the driver makes sure both the memory > and system-register timers have been probed before finalizing the probing. > > There is a interesting flaw in this logic that leads to this final step > never to be executed. Things seems to work pretty well until something > actually needs the data that is produced during this final stage. > > For example, KVM explodes on the first run of a guest when executed on > a platform that has both memory and sysreg nodes (Juno, for example). As far as I can tell, the logic is flawed for all cases except two functional nodes that we manage to probe. > > Just fix the damned logic, and enjoy booting VMs again. > > Tested on a Juno system. > > Cc: Sudeep Holla <sudeep.holla@xxxxxxx> > Cc: Stephen Boyd <sboyd@xxxxxxxxxxxxxx> > Cc: Mark Rutland <mark.rutland@xxxxxxx> > Cc: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> > Cc: Christoffer Dall <christoffer.dall@xxxxxxxxxx> > Reported-by: Riku Voipio <riku.voipio@xxxxxxxxxx> > Signed-off-by: Marc Zyngier <marc.zyngier@xxxxxxx> The new logic makes sense to me, so: Acked-by: Mark Rutland <mark.rutland@xxxxxxx> Thanks, Mark. > --- > drivers/clocksource/arm_arch_timer.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c > index 2133f9d..43005d4 100644 > --- a/drivers/clocksource/arm_arch_timer.c > +++ b/drivers/clocksource/arm_arch_timer.c > @@ -660,11 +660,11 @@ static bool __init > arch_timer_probed(int type, const struct of_device_id *matches) > { > struct device_node *dn; > - bool probed = false; > + bool probed = true; > > dn = of_find_matching_node(NULL, matches); > - if (dn && of_device_is_available(dn) && (arch_timers_present & type)) > - probed = true; > + if (dn && of_device_is_available(dn) && !(arch_timers_present & type)) > + probed = false; > of_node_put(dn); > > return probed; > -- > 2.0.4 > > _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm