|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 1/2] xen/x86: io_apic: Introduce a command line option to skip timer check
On 11.12.2023 13:23, Julien Grall wrote:
> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -2535,6 +2535,17 @@ pages) must also be specified via the tbuf_size
> parameter.
> ### tickle_one_idle_cpu
> > `= <boolean>`
>
> +### pit-irq-works (x86)
> +> `=<boolean>`
> +
> +> Default: `false`
> +
> +Disables the code which tests for broken timer IRQ sources. Enabling
> +this option will reduce boot time on HW where the timer works properly.
> +
> +If the system is unstable when enabling the option, then it means you
> +may have a broken HW and therefore the testing cannot be be skipped.
> +
> ### timer_slop
> > `= <integer>`
With the rename this now needs to move up to retain sorting.
> --- a/xen/arch/x86/io_apic.c
> +++ b/xen/arch/x86/io_apic.c
> @@ -57,6 +57,14 @@ bool __initdata ioapic_ack_forced;
> int __read_mostly nr_ioapic_entries[MAX_IO_APICS];
> int __read_mostly nr_ioapics;
>
> +/*
> + * The logic to check if the timer is working is expensive. So allow
> + * the admin to bypass it if they know their platform doesn't have
> + * a buggy timer.
> + */
> +static bool __initdata pit_irq_works;
> +boolean_param("pit-irq-works", pit_irq_works);
> +
> /*
> * Rough estimation of how many shared IRQs there are, can
> * be changed anytime.
> @@ -1502,6 +1510,9 @@ static int __init timer_irq_works(void)
> {
> unsigned long t1, flags;
>
> + if ( pit_irq_works )
> + return 1;
When the check is placed here, what exactly use of the option means is
system dependent. I consider this somewhat risky, so I'd prefer if the
check was put on the "normal" path in check_timer(). That way it'll
affect only the one case which we can generally consider "known good",
but not the cases where the virtual wire setups are being probed. I.e.
if (pin1 != -1) {
/*
* Ok, does IRQ0 through the IOAPIC work?
*/
unmask_IO_APIC_irq(irq_to_desc(0));
if (pit_irq_works || timer_irq_works()) {
local_irq_restore(flags);
return;
}
Plus this way changes to the various fallback paths can also be done
without needing to consider users who might be making use of the new
option.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |