[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v5 3/4] x86/time: introduce command line option to select wallclock
On Tue, Sep 10, 2024 at 11:32:05AM +0200, Jan Beulich wrote: > On 09.09.2024 16:54, Roger Pau Monne wrote: > > Allow setting the used wallclock from the command line. When the option is > > set > > to a value different than `auto` the probing is bypassed and the selected > > implementation is used (as long as it's available). > > > > The `xen` and `efi` options require being booted as a Xen guest (with Xen > > guest > > supported built-in) or from UEFI firmware. > > Perhaps add "respectively"? Sure. > > > --- a/xen/arch/x86/time.c > > +++ b/xen/arch/x86/time.c > > @@ -1550,6 +1550,36 @@ static const char *__init > > wallclock_type_to_string(void) > > return ""; > > } > > > > +static int __init cf_check parse_wallclock(const char *arg) > > +{ > > + if ( !arg ) > > + return -EINVAL; > > + > > + if ( !strcmp("auto", arg) ) > > + wallclock_source = WALLCLOCK_UNSET; > > + else if ( !strcmp("xen", arg) ) > > + { > > + if ( !xen_guest ) > > + return -EINVAL; > > + > > + wallclock_source = WALLCLOCK_XEN; > > + } > > + else if ( !strcmp("cmos", arg) ) > > + wallclock_source = WALLCLOCK_CMOS; > > + else if ( !strcmp("efi", arg) ) > > + { > > + if ( !efi_enabled(EFI_RS) ) > > + return -EINVAL; > > I'm afraid there's a problem here, and I'm sorry for not paying attention > earlier: EFI_RS is possibly affected by "efi=" (and hence may change after > this code ran). (It can also be cleared if ->SetVirtualAddressMap() fails, > but I think that's strictly ahead of command line parsing.) Hm, I see, thanks for noticing. Anyone using 'efi=no-rs wallclock=efi' likely deserves to be punished. Would you be fine with adding the following in init_xen_time(): /* * EFI run time services can be disabled form the command line, hence the * check for them cannot be done as part of the wallclock option parsing. */ if ( wallclock_source == WALLCLOCK_EFI && !efi_enabled(EFI_RS) ) wallclock_source = WALLCLOCK_UNSET; if ( wallclock_source == WALLCLOCK_UNSET ) probe_wallclock(); Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |