-
Notifications
You must be signed in to change notification settings - Fork 5.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RPi4: Kernel clock_gettime64() vDSO disabled on 32-bit kernel due to firmware not initializing timer registers #6601
Comments
Is this bug report completely accurate? I agree that a 64-bit userland (which implies a 64-bit kernel) does not require clock_gettime64 calls, and that a 32-bit kernel (and therefore 32-bit userland) does require them, but I also find that a 32-bit userland with a 64-bit kernel does need them. I therefore think that the problem correlates with the flavour of userland in use. |
I believe so, and I believe it's kernel-related, not userland-related, but these are the facts I'm certain of:
Edits: added RPi2 test |
My results are slightly confusing:
This shows that the removal of the property (which is the right thing to do) only improves matters for a 32-bit kernel running on a Pi 4, which is not the default behaviour on a current firmware and OS - you need to set Do you agree? See #6602 for a fix. In about 40 minutes you will be able to install a trial 6.6 kernel with the patched DTB by running |
You're right - I did have "kernel=kernel7l.img" in my config.txt. When I comment that out I get the Arm V8 kernel, and syscall instead of vDSO as you did. When I try to install pulls/6604, it refuses with Is there any worry about running a new device tree on a RPi4 with older firmware that may not initialize the timer? I was uncertain if the firmware that sets up the timer is the start.elf that could be easily updated or something else. |
it is 6602. |
Is this the right place for my bug report?
I think so. But, it's an integration issue between firmware and kernel, so it might belong there.
Describe the bug
Currently, the Raspberry-Pi Linux kernel does not trust that the firmware has configured the BCM2711's timer registers, so it disables clock_gettime64 vDSO. This is a request that if the RaspberryPi isn't configuring this timer, to do so.
To reproduce
2.strace shows clock-gettime64 systemcall is in use instead of vDSO.
Expected behaviour
The firmware should configure the timer registers.
Once done, Linux would no longer mark them with
cpu-registers-not-fw-configured
, then the clock_gettime64() vDSO works.Actual behaviour
The Raspberry Pi foundation's kernel believes the firmware has not configured the timer registers. Did the firmware configure them? If not, could it? It seems to be working, but I couldn't find any references to fixing it in the github issues list. It appeared to have been broken in ~2020: #3579
System
The text was updated successfully, but these errors were encountered: