[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH qemu] timer/i8254: Fix one shot PIT mode
From: |
Michael S. Tsirkin |
Subject: |
Re: [PATCH qemu] timer/i8254: Fix one shot PIT mode |
Date: |
Sun, 26 Feb 2023 03:51:00 -0500 |
On Sun, Feb 26, 2023 at 01:58:10AM +0000, Damien Zammit wrote:
> Currently, the one-shot (mode 1) PIT expires far too quickly,
> due to the output being set under the wrong logic.
> This change fixes the one-shot PIT mode to behave similarly to mode 0.
>
> TESTED: using the one-shot PIT mode to calibrate a local apic timer.
>
> Signed-off-by: Damien Zammit <damien@zamaudio.com>
>
> ---
> hw/timer/i8254_common.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/hw/timer/i8254_common.c b/hw/timer/i8254_common.c
> index 050875b497..9164576ca9 100644
> --- a/hw/timer/i8254_common.c
> +++ b/hw/timer/i8254_common.c
> @@ -52,10 +52,8 @@ int pit_get_out(PITChannelState *s, int64_t current_time)
> switch (s->mode) {
> default:
> case 0:
> - out = (d >= s->count);
> - break;
I think you need something like
/* FALLTHRU */
here otherwise some gcc versions will warn.
> case 1:
> - out = (d < s->count);
> + out = (d >= s->count);
> break;
> case 2:
> if ((d % s->count) == 0 && d != 0) {
> --
> 2.39.0
>