FreeBSD/src 6e4229esys/dev/asmc asmcvar.h asmc.c

asmc: add system state and board identity sysctls

Add dev.asmc.0.system subtree with read-only sysctls for SMC diagnostic
and identity keys: shutdown_cause (MSSD), sleep_cause (MSSP),
thermal_status (MSAL), time_of_day (CLKT), power_state (MSPS),
board_id (RPlt), and chip_gen (RGEN).

Each sysctl is registered only if the key exists on the hardware.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D57853

(cherry picked from commit 6a1bd5212f290933d1429a6d4787394ee53e3181)
DeltaFile
+220-0sys/dev/asmc/asmc.c
+86-0sys/dev/asmc/asmcvar.h
+306-02 files

FreeBSD/src a6e503csys/dev/asmc asmc.c

asmc: deduplicate sensor converters and cause sysctls

Replace per-type spXX_to_milli() functions with a table-driven
asmc_sensor_convert() that looks up the divisor by SMC type string.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D57854

(cherry picked from commit 126f82a3eb613976f477aa8326a208459f60465d)
DeltaFile
+46-109sys/dev/asmc/asmc.c
+46-1091 files

FreeBSD/src 7a0f01asys/dev/asmc asmcmmio.c asmc.c

asmc: prefer MMIO backend over PIO when both are present

T2, T1, and some pre-T1 Macs advertise a legacy PIO
range in the SMC ACPI _CRS alongside a live MMIO window, but the
silicon behind the PIO range is bogus.

Try MMIO first, validate via LDKN >= 2, fall back to PIO if that
fails or no MMIO resource is present. Drop "(T2)" from the backend
message since MMIO isn't T2-exclusive.

MFC: 1 week
Reviewed by:    ngie
Differential Revision:  https://reviews.freebsd.org/D58839

(cherry picked from commit 37826269b41b46c72264191d35b09baf24e055b9)
DeltaFile
+10-8sys/dev/asmc/asmc.c
+1-1sys/dev/asmc/asmcmmio.c
+11-92 files

FreeBSD/src 95aa170sys/dev/asmc asmcvar.h asmcmmio.c

asmc: try PIO before MMIO to avoid false T2 detection

Add hw.asmc.system-state and hw.asmc.board-id read-only sysctls to
expose the T2 system state register and Mac board identifier via SMC.

Try PIO access before MMIO during probe to prevent false T2 detection
on Macs that happen to have something mapped at the T2 BAR address.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D57844

(cherry picked from commit bb1e071be47fa03accadace587784c85654de91e)
DeltaFile
+34-27sys/dev/asmc/asmc.c
+1-1sys/dev/asmc/asmcvar.h
+1-1sys/dev/asmc/asmcmmio.c
+36-293 files

FreeBSD/src 5a7ff2esys/dev/asmc asmc.c

asmc: Refactor sensor detection and sysctl registration

Replace repeated per-sensor-type blocks for voltage, current, power,
and ambient light sensors with table-driven loops.

Reviewed by:    ngie, adrian
Differential Revision:  https://reviews.freebsd.org/D57595

(cherry picked from commit 104b311a03e45ebb8fd7a93e4ac26644bbae9bae)
DeltaFile
+65-78sys/dev/asmc/asmc.c
+65-781 files

FreeBSD/src c23d728sys/dev/asmc asmcvar.h asmc.c

asmc: replace hardcoded model table with universal probing

Probe SMC keys at attach time to detect hardware capabilities,
supporting all Intel Apple machines without per-model entries.

Sensors are discovered by scanning sorted SMC key ranges for
known prefixes and types. Capabilities such as SMS, fan safe
speed, and ambient light are detected by key presence.

A global key description table provides human-readable names
for well-known temperature sensors.

Tested on:
 - MacBook Pro (Early 2007, Mid 2014, Mid 2015)
 - MacBook Air (Early 2015, Mid 2017)
 - iMac (Mid 2011, Late 2013)
 - Mac mini (Mid 2011)

Reviewed by:    adrian

    [3 lines not shown]
DeltaFile
+529-642sys/dev/asmc/asmc.c
+17-944sys/dev/asmc/asmcvar.h
+546-1,5862 files

FreeBSD/src 744396csys/conf files.amd64, sys/dev/asmc asmcvar.h asmcmmio.h

asmc: add MMIO backend for T2 Macs

T2 Macs (2018+) expose the SMC via memory-mapped registers instead of
I/O ports. Add asmcmmio.c/asmcmmio.h implementing the MMIO transport:
key read/write, getinfo, getbyindex, and a poll-based wait with
exponential backoff.

The driver probes for MMIO at attach time by checking the LDKN firmware
version key; if MMIO is available it is used, otherwise the standard
I/O port backend is used.

T2 fan speeds use IEEE 754 floats instead of fpe2 fixed-point.
Per-fan manual mode uses F%dMd keys instead of the FS! bitmask.
Battery charge limit is exposed via dev.asmc.N.battery_charge_limit.

Tested on:
  MacBookPro16,2 (A2251, iBridge2,10)
  MacBookPro15,4 (A2159, iBridge2,8)
  MacBookAir8,2  (A1932, iBridge2,5)

    [9 lines not shown]
DeltaFile
+402-0sys/dev/asmc/asmcmmio.c
+146-24sys/dev/asmc/asmc.c
+56-0sys/dev/asmc/asmcmmio.h
+5-0sys/dev/asmc/asmcvar.h
+1-1sys/modules/asmc/Makefile
+1-0sys/conf/files.amd64
+611-256 files

FreeBSD/src 9537554sys/dev/asmc asmc.c

asmc: fix asmc_key_dump() page fault on T2 MMIO backend

asmc_key_dump() used I/O port macros (ASMC_DATAPORT_WRITE/READ,
asmc_command()) unconditionally. On T2 Macs, sc_ioport is NULL
(MMIO backend is used instead), causing a page fault when
ASMC_DEBUG triggers asmc_dumpall() during attach.

Add an MMIO guard at the top of asmc_key_dump(): delegate to
asmc_key_dump_by_index() + asmc_key_read() for MMIO devices,
consistent with the rest of the T2 code paths.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D56748

(cherry picked from commit e37e49bfaa2763f0ce522a3e54de9b494e346465)
DeltaFile
+31-5sys/dev/asmc/asmc.c
+31-51 files

FreeBSD/src 94b80b3share/man/man4 asmc.4, sys/dev/asmc asmcvar.h asmc.c

asmc: rename wol sysctl to auto_poweron

Older SMC firmware exposed AUPO as a Wake-on-LAN control. On updated
firmware, the key controls automatic power-on when AC power is restored
after a power loss; WoL is handled by the GBE controller instead.
Rename the sysctl to reflect the current semantics. No compatibility
alias is provided as the sysctl has not appeared in any release.

Reviewed by:    ziaee, adrian
Differential Revision:  https://reviews.freebsd.org/D56747

(cherry picked from commit 36b399f55e3fa16063188b6f8ad8eaaf8c2215ab)
DeltaFile
+10-14sys/dev/asmc/asmc.c
+8-1share/man/man4/asmc.4
+3-1sys/dev/asmc/asmcvar.h
+21-163 files

FreeBSD/src 20f75b4sys/dev/asmc asmc.c

asmc(4): Add PnP record

To load asmc(4) automagically on boot with devd(8).

MFC after:      1 month

(cherry picked from commit 056e29070f083ac4cea31ac0a08619add6370839)
DeltaFile
+1-0sys/dev/asmc/asmc.c
+1-01 files

FreeBSD/src 6bdc21dsys/dev/asmc asmcvar.h asmc.c

asmc: add automatic voltage/current/power/ambient sensor detection

Apple SMCs contain numerous undocumented voltage, current, power,
and ambient light sensors. This change adds automatic detection
and registration of these sensors as sysctls.

New sysctl trees:
  dev.asmc.0.voltage.*  - Voltage sensors (millivolts)
  dev.asmc.0.current.*  - Current sensors (milliamps)
  dev.asmc.0.power.*    - Power sensors (milliwatts)
  dev.asmc.0.ambient.*  - Ambient light sensors

Implementation:
- Scans all SMC keys at attach time via asmc_key_dump_by_index()
- Identifies sensors by key prefix patterns:
  - Voltage: VC*, VD*, VG*, VP*, VI*
  - Current: I{C,D,G,M,N,O,H,P,B,A,L}*
  - Power:   P{C,D,N,S,T,H,F,Z,z}*
  - Light:   ALV*, ALS*

    [26 lines not shown]
DeltaFile
+435-2sys/dev/asmc/asmc.c
+10-0sys/dev/asmc/asmcvar.h
+445-22 files

FreeBSD/src 967501bshare/man/man4 asmc.4, sys/dev/asmc asmcvar.h asmc.c

asmc: add raw SMC key read/write interface

This patch adds a debugging interface to read and write arbitrary
Apple SMC keys by name through sysctl, enabling hardware exploration
 and control of undocumented features.

The interface provides four sysctls under dev.asmc.0.raw.*:
  - key - Set the 4-character SMC key name (e.g., "AUPO")
  - value - Read/write key value as a hex string
  - len - Auto-detected key value length (can be overridden)
  - type - Read-only 4-character type string (e.g., "ui8", "flt")

Implementation includes a new asmc_key_getinfo() function using SMC
command 0x13 to query key metadata. The interface automatically
detects key lengths and types, uses hex string encoding for
arbitrary binary values, and is safe for concurrent access via
CTLFLAG_NEEDGIANT.

This interface was essential for discovering that the AUPO key

    [7 lines not shown]
DeltaFile
+240-47sys/dev/asmc/asmc.c
+29-0share/man/man4/asmc.4
+19-0sys/dev/asmc/asmcvar.h
+288-473 files

FreeBSD/src 470993asys/dev/asmc asmc.c asmcvar.h

asmc: add support for MacBookPro13,1

This commit adds support for the MacBookPro13,1 (late 2016, 13-inch). The SMC
keys were collected from https://logi.wiki/index.php/SMC_Sensor_Codes. Two
temperature keys are omitted because they fail to be read: TI0P (IO Proximity)
and Ta0P (Ambient Air).

Note that the with this model the `dev.asmc.0.fan.0.minspeed` setting only
applies when the fans have been activated by the system. In my testing, the fans
did not spin up until CPU temperatures hit about 80C. At lower temperatures, the
fans will happily ignore the minimum speed and remain at 0 rpm.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/2137

(cherry picked from commit b5b9c65a689457e608cc31831ed690d303d63ffa)
DeltaFile
+18-0sys/dev/asmc/asmcvar.h
+6-0sys/dev/asmc/asmc.c
+24-02 files

FreeBSD/src 8c39d9fshare/man/man4 asmc.4, sys/dev/asmc asmcvar.h asmc.c

asmc(4): Add support for backlight(9) interface

MFC after:      1 month

(cherry picked from commit 5d7862fb998f48ba71dac7e34106aaad350db348)
DeltaFile
+66-0sys/dev/asmc/asmc.c
+10-1share/man/man4/asmc.4
+2-1sys/modules/asmc/Makefile
+2-0sys/dev/asmc/asmcvar.h
+80-24 files

FreeBSD/src d45d7aelibexec/rtld-elf/amd64 rtld_start.S, libexec/rtld-elf/i386 rtld_machdep.h rtld_start.S

i386 rtld: implement support for TLSDESC relocation

Discussed with: jrtc27
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59269
DeltaFile
+94-1libexec/rtld-elf/i386/reloc.c
+36-0libexec/rtld-elf/i386/rtld_start.S
+28-3libexec/rtld-elf/i386/rtld_machdep.h
+25-0libexec/rtld-elf/amd64/rtld_start.S
+183-44 files

FreeBSD/src 76f5fcclibexec/rtld-elf/amd64 rtld_machdep.h rtld_start.S

amd64 rtld: implement support for TLSDESC relocation

Discussed with: jrtc27
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59269
DeltaFile
+92-2libexec/rtld-elf/amd64/reloc.c
+41-1libexec/rtld-elf/amd64/rtld_start.S
+33-3libexec/rtld-elf/amd64/rtld_machdep.h
+166-63 files

FreeBSD/src 5d9e5f4libexec/rtld-elf rtld.c

rtld: explain the use of rtld_bind_lock in rtld_get_addr_slow()

Discussed with: jrtc27
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59269
DeltaFile
+5-0libexec/rtld-elf/rtld.c
+5-01 files

FreeBSD/src 6a69d28libexec/rtld-elf/amd64 rtld_machdep.h, libexec/rtld-elf/arm rtld_machdep.h

rtld: allow arches to initialize/finalize objects

Discussed with: jrtc27
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59269
DeltaFile
+3-0libexec/rtld-elf/riscv/rtld_machdep.h
+3-0libexec/rtld-elf/powerpc64/rtld_machdep.h
+3-0libexec/rtld-elf/powerpc/rtld_machdep.h
+3-0libexec/rtld-elf/i386/rtld_machdep.h
+3-0libexec/rtld-elf/arm/rtld_machdep.h
+3-0libexec/rtld-elf/amd64/rtld_machdep.h
+18-02 files not shown
+23-08 files

FreeBSD/src fb63a60libexec/rtld-elf/i386 reloc.c rtld_machdep.h

rtld i386: use macro for the 'GNU ABI' calling convention of TLS resolver

Discussed with: jrtc27
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59269
DeltaFile
+4-1libexec/rtld-elf/i386/rtld_machdep.h
+1-2libexec/rtld-elf/i386/reloc.c
+5-32 files

FreeBSD/src 7c73fdbsys/sys param.h

video: bump __FreeBSD_version for V4L2 camera class renumbering

The camera control IDs in videoio.h changed numeric values; ports
consuming V4L2 camera controls need to be rebuilt.

Reviewed by:    thierry
Differential Revision:  https://reviews.freebsd.org/D59460
DeltaFile
+1-1sys/sys/param.h
+1-11 files

FreeBSD/src ea7c31bsys/sys videoio.h

video(4): fix camera control class ABI and add missing V4L2 constants

Renumbered the camera class to match the reference ABI and added the
constants ported applications expect:

Reviewed by:    thierry
Differential Revision:  https://reviews.freebsd.org/D59459
DeltaFile
+26-3sys/sys/videoio.h
+26-31 files

FreeBSD/src e8c1931usr.sbin/mixer mixer.c

mixer: Improve error messages

Use better diagnostic messages when unit numbers are wrong.

Reviewed by:    arrowd@, christos@, kevans@
Approved by:    christos@
Differential Revision:  https://reviews.freebsd.org/D56845

(cherry picked from commit 9f5cfe625e9e8153599105458650e5fcecfd6281)
DeltaFile
+3-1usr.sbin/mixer/mixer.c
+3-11 files

FreeBSD/src f1fa2f7sys/amd64/amd64 mp_machdep.c

amd64: initialize IPI scoreboard earlier

The initializer just needs working malloc(9) and two constants that
are set at hammer_time().

Fixes:  648fa3558c161a1d8564626d21047710c3fbfdf6

Reviewed by:            avg, markj
Differential Revision:  https://reviews.freebsd.org/D58714
DeltaFile
+1-1sys/amd64/amd64/mp_machdep.c
+1-11 files

FreeBSD/src d13ee10sys/kern kern_intr.c

random: don't collect entropy when scheduling software interrupt handlers

The entropy will be collected in intr_event_schedule_thread() for event
handlers that are marked as entropy sources.  The quality of entropy
provided by SWI wasn't great anyway.

Reviewed by:            cem, ngie
Differential Revision:  https://reviews.freebsd.org/D58829
DeltaFile
+0-7sys/kern/kern_intr.c
+0-71 files

FreeBSD/src 7dfadd7sbin/hastctl hastctl.c, sbin/hastd hast.h hastd.c

hastd: Add a stop control message

Add a stop control message which causes hastd to clean up and terminate.

Reviewed by:    kevans
Differential Revision:  https://reviews.freebsd.org/D59344
DeltaFile
+17-0sbin/hastd/control.c
+14-0sbin/hastctl/hastctl.c
+8-4sbin/hastd/hastd.c
+1-0sbin/hastd/hast.h
+40-44 files

FreeBSD/src ff4b81esys/kern vfs_syscalls.c kern_descrip.c, sys/sys syscallsubr.h

syscalls: Avoid C++ reserved words

Both kern_renameat() and kern_dup() had arguments named `new`.  Rename
their arguments to match their respecitve manual pages.

Sponsored by:   Klara, Inc.
Sponsored by:   NetApp, Inc.
Reviewed by:    kib
Differential Revision:  https://reviews.freebsd.org/D59386
DeltaFile
+23-23sys/kern/kern_descrip.c
+10-10sys/kern/vfs_syscalls.c
+3-3sys/sys/syscallsubr.h
+36-363 files

FreeBSD/src 4ec3ca5etc/mtree BSD.tests.dist, sbin/hastd Makefile

hastd: Add rudimentary tests

Test that we can start and stop hastd with an empty configuration.

Reviewed by:    kevans
Differential Revision:  https://reviews.freebsd.org/D59345
DeltaFile
+36-0sbin/hastd/tests/hastd_test.sh
+4-0sbin/hastd/tests/Makefile
+3-0sbin/hastd/Makefile
+2-0etc/mtree/BSD.tests.dist
+45-04 files

FreeBSD/src 911bda7sbin/hastd nv.c

hastd: Ensure nvpair padding is initialized

The proto-libnv implementation embedded in hastd pads names and values
out to the nearest multiple of eight bytes, but leaves the padding
uninitialized, leaking up to 14 bytes of recycled heap per pair in a
message.

While here, switch from bcopy() to memcpy().

MFC after:      3 days
Reviewed by:    kevans, emaste
Differential Revision:  https://reviews.freebsd.org/D59343
DeltaFile
+3-3sbin/hastd/nv.c
+3-31 files

FreeBSD/src a73bb62contrib/kyua/engine/prepare prepare_all.cpp

contrib/kyua: fix -Wshadow error

This fixes the build with gcc 14:

/usr/src/contrib/kyua/engine/prepare/prepare_all.cpp:56:16: error: declaration of 'handler' shadows a member of 'engine::prepare::prepare_all' [-Werror=shadow]
   56 |     for (auto& handler : prepare::handlers()) {
      |                ^~~~~~~
In file included from /usr/src/contrib/kyua/engine/prepare/prepare_all.hpp:35,
                 from /usr/src/contrib/kyua/engine/prepare/prepare_all.cpp:29:
/usr/src/contrib/kyua/engine/prepare/prepare.hpp:51:15: note: shadowed declaration is here
   51 | class handler {
      |               ^

Fixes:  edb230c4af499203d7a6894b3711fe6574b26040

Reviewed by:    igoro, rlibby, ngie
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59346
DeltaFile
+3-3contrib/kyua/engine/prepare/prepare_all.cpp
+3-31 files

FreeBSD/src d7ed56blib/msun/tests nearbyint_test.c

lib/msun/tests: remove nearbyint test xfail on riscv

PR:             290099
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
DeltaFile
+1-1lib/msun/tests/nearbyint_test.c
+1-11 files