Re: [Xen-devel] [PATCH v3 10/11] x86/rtc: replace paravirt rtc check with x86 specific solution

From: Luis R. Rodriguez
Date: Tue Feb 23 2016 - 13:10:57 EST


On Tue, Feb 23, 2016 at 11:57:16AM +0000, David Vrabel wrote:
> On 23/02/16 07:24, Luis R. Rodriguez wrote:
> > --- a/arch/x86/xen/enlighten.c
> > +++ b/arch/x86/xen/enlighten.c
> [...]
> > @@ -1526,8 +1525,6 @@ asmlinkage __visible void __init xen_start_kernel(void)
> >
> > /* Install Xen paravirt ops */
> > pv_info = xen_info;
> > - if (xen_initial_domain())
> > - pv_info.features |= PV_SUPPORTED_RTC;
> > pv_init_ops = xen_init_ops;
> > if (!xen_pvh_domain()) {
> > pv_cpu_ops = xen_cpu_ops;
> > diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
> > index a0a4e554c6f1..fbfcb01015f0 100644
> > --- a/arch/x86/xen/time.c
> > +++ b/arch/x86/xen/time.c
> > @@ -446,8 +446,10 @@ void __init xen_init_time_ops(void)
> > x86_platform.calibrate_tsc = xen_tsc_khz;
> > x86_platform.get_wallclock = xen_get_wallclock;
> > /* Dom0 uses the native method to set the hardware RTC. */
> > - if (!xen_initial_domain())
> > + if (!xen_initial_domain()) {
> > + x86_init.platform_flags |= X86_PLATFORM_NO_RTC;
> > x86_platform.set_wallclock = xen_set_wallclock;
> > + }
> > }
>
> Is this an early enough point to set this flag?

I'm glad you asked, I should have explained how I confirmed this on the commit
log as well. The answer is yes, even though I haven't tested it, but logically
I've confirmed this given that rtc is initialized via device_initcall(add_rtc_cmos);
-- these get called late in boot, way after setup_arch() during rest_init().

Luis