Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-28 Thread Oliver Hartkopp

Hello Uwe,

On 28/07/2019 21.40, Uwe Kleine-König wrote:

Control: tag -1 + fixed-upstream pending

Hello Oliver,

I tried to reproduce your problem on v5.3 and there the problem doesn't
occur even without CONFIG_RTC_INTF_DEV_UIE_EMUL. The reason can be found
in

https://git.kernel.org/linus/c0e12848be091e8410fb427f080f2e0149123443


Oh, I just looked into my local tree from Linus (latest!) and therefore 
saw the


s35390a->rtc->uie_unsupported = 1;

code without checking when it has been committed. That why I assumed 
that the problem is still there - even with uie_unsupported = 1 ...



which got into 5.3-rc1. With this hwclock (from util-linux) still tries
to enable UIE (which fails) but reading out the date and time still
works.

I backported that fix to the buster branch, see https://deb.li/PDJ2 .


Very good! So I'll wait and see when the linux-image-4.19.0-x-marvell 
kernel arrives on my two boxes ;-)


Many thanks & best regards,
Oliver



Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-28 Thread Uwe Kleine-König
Control: tag -1 + fixed-upstream pending

Hello Oliver,

I tried to reproduce your problem on v5.3 and there the problem doesn't
occur even without CONFIG_RTC_INTF_DEV_UIE_EMUL. The reason can be found
in

https://git.kernel.org/linus/c0e12848be091e8410fb427f080f2e0149123443

which got into 5.3-rc1. With this hwclock (from util-linux) still tries
to enable UIE (which fails) but reading out the date and time still
works.

I backported that fix to the buster branch, see https://deb.li/PDJ2 .

Best regards
Uwe

-- 
Pengutronix e.K.   | Uwe Kleine-König|
Industrial Linux Solutions | http://www.pengutronix.de/  |



Processed: Re: Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-28 Thread Debian Bug Tracking System
Processing control commands:

> tag -1 + fixed-upstream pending
Bug #932845 [src:linux] TS-219 RTC issue with Debian Buster
Added tag(s) pending and fixed-upstream.

-- 
932845: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=932845
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems



Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-26 Thread Oliver Hartkopp



On 26/07/2019 20.12, Trent Piepho wrote:

On Fri, 2019-07-26 at 12:53 +0200, Oliver Hartkopp wrote:

Just a thought:

There are some of these rtc drivers that set

rtc->rtc->uie_unsupported = 1;

in the case that they can't assign an irq line.

But others set

rtc->rtc->uie_unsupported = 1;

when they don't support an (alarm) trigger with 1 sec accuracy.

Wouldn't it make sense to put

+   select RTC_INTF_DEV
+   select RTC_INTF_DEV_UIE_EMUL

in the Kconfig entries of the latter devices?


The hwclock in busybox does not use UIE.  Is it the util-linux version
that uses it?  Or systemd timedate?


Yes, it is the util-linux version that invokes ioctl(rtc_fd, RTC_UIE_ON, 
0), see:


https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/tree/sys-utils/hwclock-rtc.c#n244

I documented the effect here:
https://marc.info/?l=linux-arm-kernel&m=156390875629259&w=2


I know that chrony's linux RTC support requires UIE, or UIE emulation,
to work.  chrony does not detect lack of this very well and the RTC
support just "doesn't happen" with no errors.  I had to strace it to
figure out it was waiting for UIE interrupts that never came.


"or UIE emulation" - sounds like a plan :-)


Anyway, you don't really need UIE at all to use an rtc in a number of
ways.  The kernel "rtc to system clock on boot" feature doesn't need
it.


Right - for that reason the kernel sets the correct time when the 
rtc-s35390a driver is built-in.


When its loaded later as a module, the tool hwclock is used to retrieve 
the time which fails due to the missing UIE.



The kernel auto sync the rtc every 11 mins from NTP synced system
clock feature doesn't need it.  busybox hwclock doesn't need it.

So I suspect it's optional because it's not always needed.


hwclock works great in 'setting' the rtc (hwclock --systohc) but it 
fails to read it.


Regards,
Oliver



Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-26 Thread Trent Piepho
On Fri, 2019-07-26 at 12:53 +0200, Oliver Hartkopp wrote:
> Just a thought:
> 
> There are some of these rtc drivers that set
> 
> rtc->rtc->uie_unsupported = 1;
> 
> in the case that they can't assign an irq line.
> 
> But others set
> 
> rtc->rtc->uie_unsupported = 1;
> 
> when they don't support an (alarm) trigger with 1 sec accuracy.
> 
> Wouldn't it make sense to put
> 
> +   select RTC_INTF_DEV
> +   select RTC_INTF_DEV_UIE_EMUL
> 
> in the Kconfig entries of the latter devices?

The hwclock in busybox does not use UIE.  Is it the util-linux version
that uses it?  Or systemd timedate?

I know that chrony's linux RTC support requires UIE, or UIE emulation,
to work.  chrony does not detect lack of this very well and the RTC
support just "doesn't happen" with no errors.  I had to strace it to
figure out it was waiting for UIE interrupts that never came.

Anyway, you don't really need UIE at all to use an rtc in a number of
ways.  The kernel "rtc to system clock on boot" feature doesn't need
it.  The kernel auto sync the rtc every 11 mins from NTP synced system
clock feature doesn't need it.  busybox hwclock doesn't need it.

So I suspect it's optional because it's not always needed.


Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-26 Thread Oliver Hartkopp

Just a thought:

There are some of these rtc drivers that set

rtc->rtc->uie_unsupported = 1;

in the case that they can't assign an irq line.

But others set

rtc->rtc->uie_unsupported = 1;

when they don't support an (alarm) trigger with 1 sec accuracy.

Wouldn't it make sense to put

+   select RTC_INTF_DEV
+   select RTC_INTF_DEV_UIE_EMUL

in the Kconfig entries of the latter devices?

Best regards,
Oliver


On 26.07.19 12:26, Oliver Hartkopp wrote:

Hello Alexandre,

On 26.07.19 11:39, Alexandre Belloni wrote:

Maybe this problem is only relevant for the S35390A and PCF8563 
chip which
both lack the UIE support needed by hwclock. Both have only alarm 
triggers

in a minute accuracy according to the driver source code.


AFAIK the rtc framework should then emulate this event somehow.


I don't think so. When the rtc chip is not able to trigger an event 
with a

one second resolution - how can you emulate that?



CONFIG_RTC_INTF_DEV_UIE_EMUL emulates it by polling the RTC.



Just booted my NAS box and /boot/config-4.19.0-5-marvell contains

# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set

Would be cool when this would make hwclock happy.

Best regards,
Oliver




Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-26 Thread Oliver Hartkopp

Hello Alexandre,

On 26.07.19 11:39, Alexandre Belloni wrote:


Maybe this problem is only relevant for the S35390A and PCF8563 chip which
both lack the UIE support needed by hwclock. Both have only alarm triggers
in a minute accuracy according to the driver source code.


AFAIK the rtc framework should then emulate this event somehow.


I don't think so. When the rtc chip is not able to trigger an event with a
one second resolution - how can you emulate that?



CONFIG_RTC_INTF_DEV_UIE_EMUL emulates it by polling the RTC.



Just booted my NAS box and /boot/config-4.19.0-5-marvell contains

# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set

Would be cool when this would make hwclock happy.

Best regards,
Oliver



Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-26 Thread Alexandre Belloni
On 26/07/2019 11:27:11+0200, Oliver Hartkopp wrote:
> Hello Uwe,
> 
> On 26.07.19 09:27, Uwe Kleine-König wrote:
> > Hello Alexandre,
> > 
> > On Thu, Jul 25, 2019 at 04:31:49PM +0200, Oliver Hartkopp wrote:
> > > On 24.07.19 09:07, Uwe Kleine-König wrote:
> > > > On Tue, Jul 23, 2019 at 10:28:18PM +0200, Oliver Hartkopp wrote:
> > > > > I'm running a TS-119P+ and a TS-219P II Qnap NAS with Debian Buster.
> > > > > Both are now running a linux-image-4.19.0-5-marvell kernel.
> > > > > 
> > > > > But since my update from Linux 4.9 (Stretch) to Linux 4.19 (Buster) 
> > > > > the
> > > > > hardware clock of both boxes refuse to work.
> > > > > 
> > > > > After some digging in kernel sources and re-installing Linux 4.9 on my
> > > > > Buster setup it turns out, that a change in the kernel config causes 
> > > > > the
> > > > > problem:
> > > > > 
> > > > > 4.19.0-5-marvell -> CONFIG_RTC_DRV_S35390A=m   (fails)
> > > > > 
> > > > > 4.9.0-4-marvell -> CONFIG_RTC_DRV_S35390A=y(works)
> > > > > 
> > > > > See details and solving process at:
> > > > > 
> > > > > https://marc.info/?l=linux-arm-kernel&m=156390875629259&w=2
> > > > > 
> > > > > Can you please revert the Kernel config parts for the RTC in a way 
> > > > > that the
> > > > > RTC drivers are built into the marvell-arch kernel again instead of 
> > > > > building
> > > > > them as modules?
> > > > 
> > > > They were switched to modules because the kernel image got too big to
> > > > fit into the flash storage of some machines. I assume when we switch to
> > > > built-in again the resulting problem is the bigger one.
> > > 
> > > I don't know which is the bigger problem here.
> > > 
> > > When the rtc driver is built as module it can not be operated with the
> > > hwclock tool from the util-linux package due to the missing rtc UIE 
> > > support.
> > > 
> > > You finally have no hardware clock on these machines and must wait for ntp
> > > to shift time and date (my system always starts in February until ntp 
> > > fixes
> > > the time).
> > 
> > For me it's obvious what is the bigger problem. Either you don't have
> > the correct time until ntp fixes it up for you, or others cannot install
> > a kernel update and so run a vulnerable OS.
> 
> That what I've written, NTP fixes the time for me. I have no problem with
> updating my kernels - in fact I was even able to flash an older kernel to
> figure out this rtc issue :-)
> 
> > > Maybe this problem is only relevant for the S35390A and PCF8563 chip which
> > > both lack the UIE support needed by hwclock. Both have only alarm triggers
> > > in a minute accuracy according to the driver source code.
> > 
> > AFAIK the rtc framework should then emulate this event somehow.
> 
> I don't think so. When the rtc chip is not able to trigger an event with a
> one second resolution - how can you emulate that?
> 

CONFIG_RTC_INTF_DEV_UIE_EMUL emulates it by polling the RTC.

-- 
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-26 Thread Oliver Hartkopp

Hello Uwe,

On 26.07.19 09:27, Uwe Kleine-König wrote:

Hello Alexandre,

On Thu, Jul 25, 2019 at 04:31:49PM +0200, Oliver Hartkopp wrote:

On 24.07.19 09:07, Uwe Kleine-König wrote:

On Tue, Jul 23, 2019 at 10:28:18PM +0200, Oliver Hartkopp wrote:

I'm running a TS-119P+ and a TS-219P II Qnap NAS with Debian Buster.
Both are now running a linux-image-4.19.0-5-marvell kernel.

But since my update from Linux 4.9 (Stretch) to Linux 4.19 (Buster) the
hardware clock of both boxes refuse to work.

After some digging in kernel sources and re-installing Linux 4.9 on my
Buster setup it turns out, that a change in the kernel config causes the
problem:

4.19.0-5-marvell -> CONFIG_RTC_DRV_S35390A=m   (fails)

4.9.0-4-marvell -> CONFIG_RTC_DRV_S35390A=y(works)

See details and solving process at:

https://marc.info/?l=linux-arm-kernel&m=156390875629259&w=2

Can you please revert the Kernel config parts for the RTC in a way that the
RTC drivers are built into the marvell-arch kernel again instead of building
them as modules?


They were switched to modules because the kernel image got too big to
fit into the flash storage of some machines. I assume when we switch to
built-in again the resulting problem is the bigger one.


I don't know which is the bigger problem here.

When the rtc driver is built as module it can not be operated with the
hwclock tool from the util-linux package due to the missing rtc UIE support.

You finally have no hardware clock on these machines and must wait for ntp
to shift time and date (my system always starts in February until ntp fixes
the time).


For me it's obvious what is the bigger problem. Either you don't have
the correct time until ntp fixes it up for you, or others cannot install
a kernel update and so run a vulnerable OS.


That what I've written, NTP fixes the time for me. I have no problem 
with updating my kernels - in fact I was even able to flash an older 
kernel to figure out this rtc issue :-)



Maybe this problem is only relevant for the S35390A and PCF8563 chip which
both lack the UIE support needed by hwclock. Both have only alarm triggers
in a minute accuracy according to the driver source code.


AFAIK the rtc framework should then emulate this event somehow.


I don't think so. When the rtc chip is not able to trigger an event with 
a one second resolution - how can you emulate that?



So CONFIG_RTC_DRV_S35390A=y and CONFIG_RTC_DRV_PCF8563=y should bring back
the hw clocks on these machines.

I assume using hwclock without UIE trigger code will impact the accuracy.


As described in the referenced description the hwclock tool does not work on
the machines.


I'm not sure yet if this is a problem in hwclock() or the s35390a
driver.


In detail it is hwclock together with rtc drivers not supporting UIE trigger
with a 1 second resolution.


@abelloni: Do you can shed some light here, how it is supposed to work?
Is hwclock just doing it wrong with non-PC clocks, or is there a kernel
bug to fix?

Best regards
Uwe



Best regards,
Oliver



Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-26 Thread Uwe Kleine-König
Hello Alexandre,

On Thu, Jul 25, 2019 at 04:31:49PM +0200, Oliver Hartkopp wrote:
> On 24.07.19 09:07, Uwe Kleine-König wrote:
> > On Tue, Jul 23, 2019 at 10:28:18PM +0200, Oliver Hartkopp wrote:
> > > I'm running a TS-119P+ and a TS-219P II Qnap NAS with Debian Buster.
> > > Both are now running a linux-image-4.19.0-5-marvell kernel.
> > > 
> > > But since my update from Linux 4.9 (Stretch) to Linux 4.19 (Buster) the
> > > hardware clock of both boxes refuse to work.
> > > 
> > > After some digging in kernel sources and re-installing Linux 4.9 on my
> > > Buster setup it turns out, that a change in the kernel config causes the
> > > problem:
> > > 
> > > 4.19.0-5-marvell -> CONFIG_RTC_DRV_S35390A=m   (fails)
> > > 
> > > 4.9.0-4-marvell -> CONFIG_RTC_DRV_S35390A=y(works)
> > > 
> > > See details and solving process at:
> > > 
> > > https://marc.info/?l=linux-arm-kernel&m=156390875629259&w=2
> > > 
> > > Can you please revert the Kernel config parts for the RTC in a way that 
> > > the
> > > RTC drivers are built into the marvell-arch kernel again instead of 
> > > building
> > > them as modules?
> > 
> > They were switched to modules because the kernel image got too big to
> > fit into the flash storage of some machines. I assume when we switch to
> > built-in again the resulting problem is the bigger one.
> 
> I don't know which is the bigger problem here.
> 
> When the rtc driver is built as module it can not be operated with the
> hwclock tool from the util-linux package due to the missing rtc UIE support.
> 
> You finally have no hardware clock on these machines and must wait for ntp
> to shift time and date (my system always starts in February until ntp fixes
> the time).

For me it's obvious what is the bigger problem. Either you don't have
the correct time until ntp fixes it up for you, or others cannot install
a kernel update and so run a vulnerable OS.

> Maybe this problem is only relevant for the S35390A and PCF8563 chip which
> both lack the UIE support needed by hwclock. Both have only alarm triggers
> in a minute accuracy according to the driver source code.

AFAIK the rtc framework should then emulate this event somehow.

> So CONFIG_RTC_DRV_S35390A=y and CONFIG_RTC_DRV_PCF8563=y should bring back
> the hw clocks on these machines.
> 
> I assume using hwclock without UIE trigger code will impact the accuracy.
> 
> > > As described in the referenced description the hwclock tool does not work 
> > > on
> > > the machines.
> > 
> > I'm not sure yet if this is a problem in hwclock() or the s35390a
> > driver.
> 
> In detail it is hwclock together with rtc drivers not supporting UIE trigger
> with a 1 second resolution.

@abelloni: Do you can shed some light here, how it is supposed to work?
Is hwclock just doing it wrong with non-PC clocks, or is there a kernel
bug to fix?

Best regards
Uwe

-- 
Pengutronix e.K.   | Uwe Kleine-König|
Industrial Linux Solutions | http://www.pengutronix.de/  |



Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-25 Thread Oliver Hartkopp

Hello Uwe,

On 24.07.19 09:07, Uwe Kleine-König wrote:

Hello Oliver,

On Tue, Jul 23, 2019 at 10:28:18PM +0200, Oliver Hartkopp wrote:

I'm running a TS-119P+ and a TS-219P II Qnap NAS with Debian Buster.
Both are now running a linux-image-4.19.0-5-marvell kernel.

But since my update from Linux 4.9 (Stretch) to Linux 4.19 (Buster) the
hardware clock of both boxes refuse to work.

After some digging in kernel sources and re-installing Linux 4.9 on my
Buster setup it turns out, that a change in the kernel config causes the
problem:

4.19.0-5-marvell -> CONFIG_RTC_DRV_S35390A=m   (fails)

4.9.0-4-marvell -> CONFIG_RTC_DRV_S35390A=y(works)

See details and solving process at:

https://marc.info/?l=linux-arm-kernel&m=156390875629259&w=2

Can you please revert the Kernel config parts for the RTC in a way that the
RTC drivers are built into the marvell-arch kernel again instead of building
them as modules?


They were switched to modules because the kernel image got too big to
fit into the flash storage of some machines. I assume when we switch to
built-in again the resulting problem is the bigger one.


I don't know which is the bigger problem here.

When the rtc driver is built as module it can not be operated with the 
hwclock tool from the util-linux package due to the missing rtc UIE support.


You finally have no hardware clock on these machines and must wait for 
ntp to shift time and date (my system always starts in February until 
ntp fixes the time).


Maybe this problem is only relevant for the S35390A and PCF8563 chip 
which both lack the UIE support needed by hwclock. Both have only alarm 
triggers in a minute accuracy according to the driver source code.


So CONFIG_RTC_DRV_S35390A=y and CONFIG_RTC_DRV_PCF8563=y should bring 
back the hw clocks on these machines.


I assume using hwclock without UIE trigger code will impact the accuracy.


As described in the referenced description the hwclock tool does not work on
the machines.


I'm not sure yet if this is a problem in hwclock() or the s35390a
driver.


In detail it is hwclock together with rtc drivers not supporting UIE 
trigger with a 1 second resolution.


Best regards,
Oliver



Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-24 Thread Uwe Kleine-König
Hello Oliver,

On Tue, Jul 23, 2019 at 10:28:18PM +0200, Oliver Hartkopp wrote:
> I'm running a TS-119P+ and a TS-219P II Qnap NAS with Debian Buster.
> Both are now running a linux-image-4.19.0-5-marvell kernel.
> 
> But since my update from Linux 4.9 (Stretch) to Linux 4.19 (Buster) the
> hardware clock of both boxes refuse to work.
> 
> After some digging in kernel sources and re-installing Linux 4.9 on my
> Buster setup it turns out, that a change in the kernel config causes the
> problem:
> 
> 4.19.0-5-marvell -> CONFIG_RTC_DRV_S35390A=m   (fails)
> 
> 4.9.0-4-marvell -> CONFIG_RTC_DRV_S35390A=y(works)
> 
> See details and solving process at:
> 
> https://marc.info/?l=linux-arm-kernel&m=156390875629259&w=2
> 
> Can you please revert the Kernel config parts for the RTC in a way that the
> RTC drivers are built into the marvell-arch kernel again instead of building
> them as modules?

They were switched to modules because the kernel image got too big to
fit into the flash storage of some machines. I assume when we switch to
built-in again the resulting problem is the bigger one.
 
> As described in the referenced description the hwclock tool does not work on
> the machines.

I'm not sure yet if this is a problem in hwclock() or the s35390a
driver.

Best regards
Uwe


signature.asc
Description: PGP signature


Bug#932845: TS-219 RTC issue with Debian Buster

2019-07-23 Thread Oliver Hartkopp

Package: linux-image-4.19.0-5-marvell
Status: install ok installed
Priority: optional
Section: kernel
Installed-Size: 97721
Maintainer: Debian Kernel Team 
Architecture: armel
Source: linux
Version: 4.19.37-5
Depends: kmod, linux-base (>= 4.3~), initramfs-tools (>= 0.120+deb8u2) | 
linux-initramfs-tool

Recommends: firmware-linux-free, u-boot-tools, apparmor
Suggests: linux-doc-4.19, debian-kernel-handbook
Breaks: flash-kernel (<< 3.57~), initramfs-tools (<< 0.120+deb8u2)
Description: Linux 4.19 for Marvell Kirkwood/Orion
 The Linux kernel 4.19 and modules for use on Marvell Kirkwood and Orion
 based systems (https://wiki.debian.org/ArmEabiPort#Supported_hardware).
Homepage: https://www.kernel.org/



Hi Debian Kernel Team,

I'm running a TS-119P+ and a TS-219P II Qnap NAS with Debian Buster.
Both are now running a linux-image-4.19.0-5-marvell kernel.

But since my update from Linux 4.9 (Stretch) to Linux 4.19 (Buster) the 
hardware clock of both boxes refuse to work.


After some digging in kernel sources and re-installing Linux 4.9 on my 
Buster setup it turns out, that a change in the kernel config causes the 
problem:


4.19.0-5-marvell -> CONFIG_RTC_DRV_S35390A=m   (fails)

4.9.0-4-marvell -> CONFIG_RTC_DRV_S35390A=y(works)

See details and solving process at:

https://marc.info/?l=linux-arm-kernel&m=156390875629259&w=2

Can you please revert the Kernel config parts for the RTC in a way that 
the RTC drivers are built into the marvell-arch kernel again instead of 
building them as modules?


As described in the referenced description the hwclock tool does not 
work on the machines.


Thanks & best regards,
Oliver