acpi_cmbat with charge-limited battery

From: Kyle Evans <kevans_at_freebsd.org>
Date: Mon, 06 Mar 2023 02:19:56 UTC
Hello!

I've dealt with this mainly over the weekend, but my solution was to
just disable acpi_cmbat entirely, which is maybe not the best solution
but I can't tell if this should be considered a firmware bug or if
it's something we could find a way to workaround in the kernel.

Basically, I've set the firmware on my frame.work laptop to limit the
battery charge to 80%. When it hits 80% while plugged in, things get a
little funky- I assume it's because the firmware's trying to carefully
maintain the limit, but I end up getting (at least) one acpi
notification per second, alternating between BST_CHANGE/BIX_CHANGE,
which in turn drives up CPU usage as we tap it out to devd and upowerd
picks it up. upowerd ends up pegging a core consistently.

Should we be rate-limiting these devd notifications? Is this even
reasonable behavior for the firmware? I'm not really sure how other OS
behave here, but I haven't really seen any complaints from other
framework'ers.

Thanks,

Kyle Evans