Re: enabling powerd on RPi

Mike Karels <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On 28 Dec 2023, at 14:22, Mark Millard wrote:

> On Dec 28, 2023, at 11:11, Mike Karels <[email protected]> wrote:
>
>> I am looking at enabling powerd by default on the Raspberry Pi 4 and maybe
>> others.  There is a bug from 2021 on the subject which has gotten some recent
>> discussion, https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=256836.  Also,
>> problems come up from time to time about performance problems because people
>> don't know to enable powerd.  It makes FreeBSD look much slower than Linux.
>
> If performance comparison to linux is a driving issue, seeing what
> linux does about sdram_freq and sdram_freq_min may be relevant. This
> may be in whole, or in part, based on the RPi* firmware version the:
>
> https://www.raspberrypi.com/documentation/computers/config_txt.html#overclocking-options
> and its:
> "This table gives the default values for the options on various
> Raspberry Pi models, all frequencies are stated in MHz."

I'm not looking to optimize everything to improve comparison with Linux;
people can optimize their own systems based on things like cooling.
I just want to get the low-hanging fruit here, with safe defaults.
Running at 600 MHz all the time is totally suboptimal.  People who
want to tweak will always find more improvements.

> content has varied as firmware releases have been made. But I've not
> always found that the two match for FreeBSD. This might be because
> they mixed firmware and linux defaults without being explicit,
> something I've run into before. (I'll note that the history of the
> documented defaults is available via giuthub, even if somewhat messy
> as they restructured the documentation over time.)
>
> For the RPi4B's and Pi 400's the modern tables indicate
> sdram_freq_min=3200 is the default. It used to be sdram_freq_min=400 .
> Recent testing of stable/14 snapshots with RPI4B's has shown the 400
> figure is in use. Only the RPi4B's, Pi 400's, and Pi5 show non-400
> defaults in the modern table.

It doesn't sound like there is a single, universal change to be made to
optimize sdram in config.txt or rc.conf.  I think the most we could do
is to add notes as comments, but many people probably never look at
config.txt.

> Another such example is that RPi4B Rev 1.4+ is documented to have
> arm_freq=1800 by default if arm_boot=1 in config.txt . Otherwise
> RPi4B's are documented to use 1500 as the default.
>
> But FreeBSD does not end up with the documented figures: ending up
> matching the default arm_freq_min=600 instead of (all but Pi0/W,
> Pi1, and Pi 5 are documhted to have the 600). My guess is that
> FreeBSD makes its own assignments. Note that the default
> arm_freq_min is model dependent if Pi0/W, Pi 1, or [someday] Pi 5
> are to be covered.
>
>> The simplest action is to enable powerd by default on the arm64-aarch64-RPI
>> images.  This would affect RPi 4 and variants, also RPI 3* and later RPi 2.
>> I enabled powerd on an RPi 3B+, and it seems to have no issues; it seems
>> to work.  Does anyone know of a disadvantage of enabling powerd on RPI
>> images for all targets?
>
> Serial port configurations that attempt to use the mini-uart have
> problems with core_freq changes changing the serial console
> frequency in use. (mini-uart used for bluetooth instead has such
> issues too.) Which UART is used by default varies by model, the
> bluetooth capable families (so, e.g., not Pi2) having the
> mini-uart for the serial port and full UART for bluetooth. (I'm
> not clear on the v1.1 vs. v1.2 for the RPi2B's.) core_freq and
> core_freq_min also vary by model.
>
> There is a core_freq_min. core_freq and core_freq_min defaults
> are documented as model specific. hdmi_enable_4kp60 use
> changes the default for core_freq and core_freq_min as well.
> There is enable_uart=1 to force the core clock to be fixed
> for seerial use, which frequency is dependent on force_turbo=1
> vs. not.

It sounds like using the mini-uart will require config changes in any
case.  I'd also be surprised if many (any?) FreeBSD users are using
the mini-uart at all.  Anyone know?

> I do not know what FreeBSD does about such things if it does
> not match such documentation.
>
> There is:
>
> https://www.raspberrypi.com/documentation/computers/configuration.html#configuring-uarts
>
> that says, in part,
>
> QUOTE
> In order to use the mini UART, you need to configure the
> Raspberry Pi to use a fixed VPU core clock frequency
> END QUOTE
>
> I'll also note that arm_64bit=1 is the default for the RPi4B's,
> Pi 400, CM4, and CM4S these days, but not for the rest that are
> 64=bit capable (ignoring RPi5's, which do not have the parameter).
> I do not know what FreeBSD does about such things if it does
> not match such documentation.

In the current config.txt, arm_64bit=1 is in the [all] section.

>> The alternative would be to configure at the first
>> boot, although I'm not positive of a definitive way to identify the RPi
>> variants.  Maybe just looking for a dev.cpu.0.freq sysctl node would
>> suffice.
>>
>> If no one objects, I will make changes to enable powerd on RPI snapshots
>> for 15-current, and we can see what happens.

Any objections?  Anything else we should do by default?

		Mike
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.