2017-03-06 19:53:54

by Shah, Nehal-bakulchandra

[permalink] [raw]
Subject: Kernel without RTC

Hi,

Currently we are having hardware which does not have RTC. It is single processor system. However it does have TSC timer.

Now, how to use scheduler with only TSC as current kernel scheduler leverage the RTC for scheduling? I had seen one old patch

http://marc.info/?l=linux-kernel&m=112013203625990&w=2

But i guess this patch was later on not taken, It will be great if you can some pointers to move forward?


Thanks
Nehal


2017-03-08 13:28:57

by Alexandre Belloni

[permalink] [raw]
Subject: Re: Kernel without RTC

Hi,

On 07/03/2017 at 00:48:18 +0530, Shah, Nehal-bakulchandra wrote:
> Hi,
>
> Currently we are having hardware which does not have RTC. It is single processor system. However it does have TSC timer.
>
> Now, how to use scheduler with only TSC as current kernel scheduler leverage the RTC for scheduling? I had seen one old patch
>
> http://marc.info/?l=linux-kernel&m=112013203625990&w=2
>
> But i guess this patch was later on not taken, It will be great if you can some pointers to move forward?
>

The kernel doesn't use the RTC for its time source so it can
already work without an RTC.


--
Alexandre Belloni, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

2017-03-08 13:49:53

by Alexandre Belloni

[permalink] [raw]
Subject: Re: Kernel without RTC

On 08/03/2017 at 13:33:33 +0000, Hadimani, Jagadish wrote:
> Hello Alexandre,
>
> I guess the Linux kernel uses HPET timer...
> But can we can force Linux kernel to use Tsc or per core timer...
>

That is probably the case but your are targeting the wrong subsystem.
The timekeeping is done using two different devices: clocksource and
clockevent. Usually, the drivers are in drivers/clocksource. I'm
definitively not an expert in x86 but the clockevent seems to be
registered from arch/x86/kernel/hpet.c and the clocksource from
arch/x86/kernel/tsc.c

IIRC the clocksource is optional but the clockevent is mandatory so if
you don't have an HPET, you will need to register a clockevent device
from somewhere else.

Maybe the simplest thing to do is to ask the x86 maintainers and the
time maintainers. Luckily for you, they are the same people (Thomas and
Ingo, added in cc).


> Sent from my iPhone
>
> > On 8 Mar 2017, at 6:47 PM, Alexandre Belloni <[email protected]> wrote:
> >
> > Hi,
> >
> >> On 07/03/2017 at 00:48:18 +0530, Shah, Nehal-bakulchandra wrote:
> >> Hi,
> >>
> >> Currently we are having hardware which does not have RTC. It is single processor system. However it does have TSC timer.
> >>
> >> Now, how to use scheduler with only TSC as current kernel scheduler leverage the RTC for scheduling? I had seen one old patch
> >>
> >> http://marc.info/?l=linux-kernel&m=112013203625990&w=2
> >>
> >> But i guess this patch was later on not taken, It will be great if you can some pointers to move forward?
> >>
> >
> > The kernel doesn't use the RTC for its time source so it can
> > already work without an RTC.
> >
> >
> > --
> > Alexandre Belloni, Free Electrons
> > Embedded Linux and Kernel engineering
> > http://free-electrons.com

--
Alexandre Belloni, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

2017-03-08 15:09:15

by Hadimani, Jagadish

[permalink] [raw]
Subject: Re: Kernel without RTC

Hello Alexandre,

I guess the Linux kernel uses HPET timer...
But can we can force Linux kernel to use Tsc or per core timer...

Sent from my iPhone

> On 8 Mar 2017, at 6:47 PM, Alexandre Belloni <[email protected]> wrote:
>
> Hi,
>
>> On 07/03/2017 at 00:48:18 +0530, Shah, Nehal-bakulchandra wrote:
>> Hi,
>>
>> Currently we are having hardware which does not have RTC. It is single processor system. However it does have TSC timer.
>>
>> Now, how to use scheduler with only TSC as current kernel scheduler leverage the RTC for scheduling? I had seen one old patch
>>
>> http://marc.info/?l=linux-kernel&m=112013203625990&w=2
>>
>> But i guess this patch was later on not taken, It will be great if you can some pointers to move forward?
>>
>
> The kernel doesn't use the RTC for its time source so it can
> already work without an RTC.
>
>
> --
> Alexandre Belloni, Free Electrons
> Embedded Linux and Kernel engineering
> http://free-electrons.com

2017-03-08 15:07:50

by Thomas Gleixner

[permalink] [raw]
Subject: Re: Kernel without RTC

On Wed, 8 Mar 2017, Alexandre Belloni wrote:
> On 08/03/2017 at 13:33:33 +0000, Hadimani, Jagadish wrote:
> > Hello Alexandre,
> >
> > I guess the Linux kernel uses HPET timer...
> > But can we can force Linux kernel to use Tsc or per core timer...
> >
>
> That is probably the case but your are targeting the wrong subsystem.
> The timekeeping is done using two different devices: clocksource and
> clockevent. Usually, the drivers are in drivers/clocksource. I'm
> definitively not an expert in x86 but the clockevent seems to be
> registered from arch/x86/kernel/hpet.c and the clocksource from
> arch/x86/kernel/tsc.c
>
> IIRC the clocksource is optional but the clockevent is mandatory so if
> you don't have an HPET, you will need to register a clockevent device
> from somewhere else.
>
> Maybe the simplest thing to do is to ask the x86 maintainers and the
> time maintainers. Luckily for you, they are the same people (Thomas and
> Ingo, added in cc).

The scheduler uses TSC anyway.

The RTC is only used for setting the wall clock time at boot and for
figuring out the time a system spent in suspend. If you don't have an RTC
then the boot wall clock time will be simply 1/1/1970 00:00:00.

Jagadish, can you please explain what your problem is. Does the system fail
to boot or does it behave strange or what?

Thanks,

tglx