hw/arm/imx8mp-evk: Fix guest time in KVM mode
The imx8mp DTB hardcodes the clock frequency of the system counter to 8MHz. In KVM mode, the host CPU is used whose system counter runs at a different frequency, resulting in the guest clock running slower or faster. Fix this by not hardcoding the clock frequency which makes the Linux driver read the real clock frequency from the register. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Bernhard Beschow <shentey@gmail.com> Message-id: 20251101120130.236721-3-shentey@gmail.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
094fd7d36f
commit
74bc6caea9
1 changed files with 9 additions and 0 deletions
|
|
@ -44,6 +44,15 @@ static void imx8mp_evk_modify_dtb(const struct arm_boot_info *info, void *fdt)
|
|||
fdt_nop_property(fdt, offset, "cpu-idle-states");
|
||||
offset = fdt_node_offset_by_compatible(fdt, offset, "arm,cortex-a53");
|
||||
}
|
||||
|
||||
if (kvm_enabled()) {
|
||||
/* Use system counter frequency from host CPU to fix time in guest */
|
||||
offset = fdt_node_offset_by_compatible(fdt, -1, "arm,armv8-timer");
|
||||
while (offset >= 0) {
|
||||
fdt_nop_property(fdt, offset, "clock-frequency");
|
||||
offset = fdt_node_offset_by_compatible(fdt, offset, "arm,armv8-timer");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void imx8mp_evk_init(MachineState *machine)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue