[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 1/2] xen/x86: io_apic: Introduce a command line option to skip timer check
From: Julien Grall <jgrall@xxxxxxxxxx> Currently, Xen will spend ~100ms to check if the timer works. If the Admin knows their platform have a working timer, then it would be handy to be able to bypass the check. Introduce a command line option 'pit-irq-works' for this purpose. Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx> --- Changelog since v1: - Rename the command line option. I went with pit-irq-works rather than timer-irq-works because Roger thought it would be better suited - Rework the command line description --- docs/misc/xen-command-line.pandoc | 11 +++++++++++ xen/arch/x86/io_apic.c | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc index 8e65f8bd18bf..c382b061b302 100644 --- 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>` diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index d11c880544e6..238b6c1c2837 100644 --- 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; + t1 = ACCESS_ONCE(pit0_ticks); local_save_flags(flags); -- 2.40.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |