Commit Graph
10583 Commits
Author SHA1 Message Date
Augustin Cavalier 53630a31a0 kqueue: Implement EV_RECEIPT.
Tested with a modified FreeBSD test.

Also fix EVFILT_READ + EVFILT_WRITE failing to select only returning
one error, and not two as it's supposed to.
2026-07-09 15:36:05 -04:00
mohammedrattia af619799ef bluetooth: connection handling refactor
- Introduced cancel connection feature in bluetooth preferences
- Moved the connection handling logic into LocalDeviceImpl
- Made a watchers list to send notices to all concerned applications

Change-Id: Iba87caff68d1b9640fa8d901059daa7a624531f5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11171
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-07-09 16:36:59 +00:00
vighnesh-sawant 95844c4f15 Bluetooth: Add hooks for SCO and HCI commands
Change-Id: Ib8ec5c7a7dc6245c4f69c7b2d4596bd5aca9b493
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11146
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-07-07 04:17:44 +00:00
Augustin Cavalier 40c254f71c kernel/locks: Allow passing const rw_locks to ASSERT_READ_LOCKED_RW_LOCK. 2026-06-18 18:06:09 -04:00
Sam Roberts dad765a43b arm64: Track per-cpu MPIDR in arch_cpu_info
Apple's interrupt controller needs to know the MPIDR of the
CPU you want to send an ICI to

Change-Id: I81d1c25d5977140aaa4349fa83b7235e6a6a6964
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11124
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-06-17 18:01:51 +00:00
Sam Roberts c216360337 kernel/interface: 30-bit RGB pixel format support
On Apple ARM platforms, iBoot sets up a 30-bit framebuffer

Change-Id: I6c03937303a3363fde511c8b8b7f8fd66a6a6965
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11128
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-06-17 18:01:51 +00:00
mohammedrattia a309dd6890 bluetooth: adding a functioning cancel button to the Inquiry Panel
- This is a mandatory feature in HCI Implementation Conformance Statement (ICS).
- The inquiry cancel logic was implemented in Haiku, but wasn't linked to the inquiry panel.

Change-Id: Ic827b0a09979a078bed5b9f99a8541dc319ac449
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11106
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-06-17 17:47:53 +00:00
Jérôme Duval 528bb58299 BStringList: add Sort() with custom functions
fix #9268 and a TODO

Change-Id: I3148b32221f34f5fb270d8892a6fc80f69ba2e29
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11104
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-06-15 14:49:00 +00:00
Leo Rouleau 315411d839 Devices: extend dm_wrapper and new layout
Shows Device path in /dev if used and Driver used. New tree-view layout for Basic
Information and Attributes separated.

Changes:
- Added new attribute in device_manager to get the path of device
- Tree view layout that separates the Basic Information of a device,
  such as name or driver used and the Attributes that shows the rest
- new call in dm_wrapper
- new case in device_manager
- logic to add the new attributes as Device path and Driver used in
  DevicesView.cpp

Change-Id: I05eaf5d7cf9e3b5ec8e9f1e0ac5c6cf7561ccde5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11012
Reviewed-by: Kacper Kasper <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2026-06-12 20:16:56 +00:00
mohammedrattia c3bd18778b bluetooth: Adding support for the HCI Read Local Supported Commands command
- The added command is mandatory under the HCI Implementation Conformance Statement (ICS).
- The command was tested through running the bluetooth_server and Bluetooth preferences and tracking the output logs.

Change-Id: I471766233dee5b24b3fe424fe6724e4378b5927b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11075
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-06-10 15:42:53 +00:00
Augustin Cavalier 29393e16ae graphics/s3: Fixes for 64-bit.
Untested as I don't have this hardware, but relatively straightforward.

Part of #20112.
2026-06-08 12:11:18 -04:00
Augustin Cavalier 658cb74bed kernel/x86: Initialize CR0 in the kernel more than the bootloader.
The bootloader is now only responsible for setting up Protected Mode
and Paging. It otherwise preserves the existing CR0, and leaves setup
to the kernel.

The kernel now sets CR0 for each CPU in preboot_init_percpu().
Some redundant sets are removed from x86_init_fpu, which now
panic()s in the case where we don't have a FPU, and avoids
unnecessary prints.

This fixes a massive oversight where CR0 was never reset on x86
systems booted using the EFI loader, except on the boot CPU! That
meant that NUMERIC_ERROR and possibly even WRITE_PROTECT were
simply not set on non-boot CPUs, unless the EFI BIOS had set them up
already. (On the BIOS loader, smp_start_kernel() ran on all CPUs.)

Fixes NVMM initialization on non-boot CPUs on Intel hardware.
2026-06-04 18:18:28 -04:00
Augustin Cavalier 6f1500d726 kernel/arm64: Add missing "memory" attribute to barrier functions. 2026-06-04 11:16:31 -04:00
Augustin Cavalier 9b6a529847 kernel/vm: Make VM internal methods C++-only.
They shouldn't be needed from C.

Also add a declaration for VMAddressSpace. This should fix the
RISC-V build.
2026-06-04 11:13:53 -04:00
Augustin Cavalier 08037f3107 kernel/scheduler: Add a mechanism to block reschedules.
This will be used by NVMM, which wants interrupts enabled
but not to be actually preempted until it is safe to do so.
2026-06-03 23:04:56 -04:00
Augustin Cavalier 099de13932 nvmm: Implement necessary functions and classes for Haiku.
Intel VMX only.

Co-authored-by: Augustin Cavalier <[email protected]>
2026-06-03 23:04:56 -04:00
Daniel Martin 8b7bc49ce0 nvmm: Import NVMM code from DragonFlyBSD.
Signed-off-by: Augustin Cavalier <[email protected]>
2026-06-03 23:04:55 -04:00
Augustin Cavalier 6e43f9a34a bsd/sys/cdefs.h: Additions for NVMM. 2026-06-03 23:04:55 -04:00
Augustin Cavalier aa731510c1 kernel/vm: Changes to prepare for NVMM.
* VMUserAddressSpace & VMTranslationMap64Bit will need to be inherited from.

 * vm_soft_fault & vm_unmap_address_range will need to be invoked directly.

 * map_backing_store will need to be invoked directly. The whole concept
   of "backing stores" is long merged into VMCache anyway, so at the
   same time, just rename the method to "vm_map_cache".

Methods added to the internal vm_priv.h; they should not be needed
except in special circumstances.
2026-06-03 23:04:55 -04:00
Jérôme Duval 43453b6774 kernel: add memory barrier around cpu thread pinning
should avoid instruction reorder seen on #20100,
could lead to pinning happening after getting the cpu

_ZL15call_single_cpujPFvPviES_b before:
mov    0x90(%rbx),%rax
addl   $0x1,0xa8(%rbx)

_ZL15call_single_cpujPFvPviES_b after:
addl   $0x1,0xa8(%rbx)
mov    0x90(%rbx),%rax

Change-Id: I7759c5e086856a190aac21270601ae55c0b39fac
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11050
Haiku-Format: Haiku-format Bot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-06-01 18:27:26 +00:00
PulkoMandy 96037d5af2 Move USB CDC Ethernet descriptor to shared header
Use the same structure in usb_ecm and listusb

Change-Id: I8d33b434560bb18bb2f6247090d1580c267adab2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11046
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-06-01 08:00:34 +00:00
Sam Roberts ce692ecc03 intel_extreme: Clear all framebuffer tile mode bits
Some newer architecture added Y tiling

Maybe fixes #17688

Change-Id: I048c2523b8a804e53752f12cfed436616a6a6964
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11027
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-05-28 12:20:19 +00:00
Sam Roberts f6d3a6f6c7 intel_extreme: Disable framebuffer tiling
On some Intel MacBooks, system firmware configures the framebuffer
as X-tiled and uses the "Graphics Memory Fence Table Register"s to
transparently convert linear framebuffer accesses by the CPU to tiled
accesses. If you change the framebuffer base address or stride, you get
a garbled display since the "fence" configuration no longer matches
the framebuffer.

Might fix #17688

Change-Id: Iaf9ea7641f7809acb9b8fbf14b88ed656a6a6964
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11016
Reviewed-by: Adrien Destugues <[email protected]>
2026-05-25 18:01:29 +00:00
Augustin Cavalier 5dfc0663d5 kernel/x86: Avoid using any initial values in APIC timer registers.
We should just be zeroing any unknown bits, not trying to preserve them.
If the BIOS or other mechanisms left the timer in some other mode
besides "one-shot" like we need, then we might incorrectly preserve
those bits.

This also has the advantage of avoiding config reads in set_hardware_timer.
2026-05-21 15:01:17 -04:00
Augustin Cavalier f5842905e3 kernel/UserTimer: Major overhaul of the locking design.
* Get rid of the global sUserTimerLock. This was added in 2013
   to prepare for the removal of the global scheduler lock, which
   is what all these routines previously used. The locking design
   was never redesigned since then to accomodate for the changes,
   it appears.

 * Make CPU timers always locked by time_lock, and the system-time
   timers locked by a local lock.

 * Make fScheduled load-bearing as to whether the timer is presently
   in the team/thread lists or not.

 * Don't re-fetch the team/thread every wait cycle. This allows us
   to avoid a lock/unlock dance that would otherwise complicate
   the scheduling logic significantly.

Tested using the old version of the Open POSIX Testsuite (which
indeed caught some bugs in earlier versions of this patch.) All
12 timer_create tests still pass, including the ones that depend on
timers firing within the right timeframe.

Fixes #20090.

Change-Id: I54dd9a49e72f51711baa0fbf18e5c35a7fafec8f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11007
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-05-21 16:54:52 +00:00
Augustin Cavalier 6eec6769f2 kernel: Update comments and add some asserts around the user timers.
Change-Id: I8c5e8faaf9c9a3eb86c1faed29beee4ab2958b3c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/11006
Reviewed-by: waddlesplash <[email protected]>
Haiku-Format: Haiku-format Bot <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-05-21 16:54:52 +00:00
Augustin Cavalier c6024e1bff kernel/thread: Assert that thread->pinned_to_cpu does not become negative.
May help with diagnosing #20100.
2026-05-18 11:45:33 -04:00
Sam Roberts 1ca6acfaf9 arm64: SMP & CPU startup improvements
- Add more secondary CPU startup methods:
  PSCI using EL3 secure monitor calls (used on most ARM64 CPUs)
  Spin tables (used on Apple CPUs, which lack EL3)
- Secondary startup code was rewritten to pass all needed info
  to secondaries using static variables, since we can't
  pass any info to secondaries when using spin tables
- Setup MMU state to known good values as early as possible
  instead of relying on the values set by the bootloader.

  This also requires generating new page tables, since we're
  (potentially) changing MAIR as well as the address space sizes
  (which determine the number of page table levels we need)

Change-Id: I3b90aab04090fa0c6a8ad82a01df7fee6a6a6964
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10984
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-05-18 15:36:55 +00:00
SED4906 03743ca2b4 Fix build when HOST_CC is GCC 16
The default C++ standard in GCC 16 is C++20 (from C++17),
which introduced "requires" as a keyword. This caused the
build of libsolv (and libpackage) to break.

fs_shell now sets -std=c++11 as in bfs_shell. Both define
__STRICT_ANSI__ to avoid using certain headers, which now
causes conflicts related to __int128 when the standard is
not actually strict ANSI.

Change-Id: Ie142fb87eb79a20fe0c1b5f3fdd3b94899eaff48
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10980
Haiku-Format: Haiku-format Bot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-05-15 20:05:51 +00:00
PulkoMandy 36aa36d060 Increase PTHREAD_KEYS_MAX from 256 to 512
Current values from other systems:

- Linux/glibc: 1024
- OpenBSD: 512
- FreeBSD and NetBSD: 256

256 keys causes a problem with the Rust compiler running out of TLS keys
See: https://github.com/haikuports/haikuports/issues/14042
See: https://github.com/rust-lang/rust/issues/155758

Change-Id: I932a7fc8508c4ab7d93d2ef610d9746134df779b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10976
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-05-15 06:31:05 +00:00
Augustin Cavalier 286eb01997 stdint.h: Declare SIZE_MAX using __SIZE_MAX__ if available.
Fixes the size_t part of #20079.
2026-05-11 14:36:10 -04:00
Augustin Cavalier 8b38e91f46 headers: Declare address and 64-bit limits using hexadecimal.
No functional change intended.
2026-05-11 14:32:27 -04:00
Augustin Cavalier fd09d924e6 headers: Drop nonstandard null.h and size_t.h.
They're holdovers from R5. <stddef.h> should just be included instead,
and ssize_t declared directly in sys/types.h.
2026-05-11 14:17:55 -04:00
Augustin Cavalier 60d0411454 headers: Move version constants to config/HaikuVersion.h.
They have been in BeBuild.h since BeOS days, but as this file
is included everywhere in the base system headers, it causes
a bunch of unnecessary POSIX namespace pollution. So, instead,
put them in a config header, and include it from SupportDefs.h,
which should only ever be included by Be/Haiku API headers.
2026-05-11 14:08:18 -04:00
Augustin Cavalier 414c41e7bf OS.h: Drop some unnecessary comments.
The first wasn't quite accurate, and the second seems to have been
copied from the R5 header.
2026-05-11 14:03:23 -04:00
Augustin Cavalier 56be32b772 Drop direct includes of size_t.h.
It's a non-standard header we inherited from BeOS. According to the
POSIX specification, size_t should be declared from including stddef.h
and/or sys/types.h, and ssize_t from sys/types.h.
2026-05-11 13:26:44 -04:00
Augustin Cavalier 29fcc40483 system: Move thread_creation_attributes.priority lower to avoid padding.
Note that this breaks syscall ABI.

Change-Id: I353049d67f5611fae87fe9e6193a64d51330c846
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5479
Reviewed-by: waddlesplash <[email protected]>
2026-05-11 17:24:24 +00:00
X512 de59fdde33 ListView: fix track session handling
Fix various track session handling related bugs like unexpected
selected item change when mouse button was not pressed inside list view
or not currently pressed at all.

Use `fTrack->is_active` to indicate that track session is active.

Remove `fTrack->buttons` because exact mouse button is never checked in
code.

Remove some redundant conditions.

Remove now not needed workaround in `BColorListView::MouseUp`.

Change-Id: Ic4ac846019bd71af008c936dd8d7d265326cba9a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10968
Haiku-Format: Haiku-format Bot <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: John Scipione <[email protected]>
2026-05-11 16:55:07 +00:00
Trung Nguyen b244f10615 kernel/x86_64: Enable AVX-512 when supported
Check for AVX-512 support and enable on detected CPUs.

Additionally, reserve more bytes in the kernel thread state for the
typical case of AVX + AVX512 + PT when running under a VM.

This additional state will not be copied to the userland structures
until we can determine a more future-proof way of handling x86 extended
state.

The change also includes out the newly supported registers when entering
userland. This is done by issuing a `XRSTOR` instruction based on the
stored initial FPU state.

This change should not have any visible effects on non-AVX-512 CPUs.
It has been tested on an i7-1165g7 VM with .NET's AVX-512 test suite:
https://github.com/dotnet/runtime/blob/c0d836dbe2315b310e7e099afcb50475dce1a521/src/tests/nativeaot/SmokeTests/HardwareIntrinsics/Program.cs#L398-L424

Change-Id: Iad5123e6d13dff39c0fd3957f7e8135202236460
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10853
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-05-11 16:07:48 +00:00
shivamsinghydv 0342b31ff8 bluetooth: Extend EIR parsing with UUIDs, Device class, TX power and manufacturer data
ParseEIR previously handled only EIR_NAME_SHORT (0x08) and EIR_NAME_COMPLETE (0x09),
silently ignoring all other data types.

Add handling for:
	- EIR_UUID16_INCOMPLETE (0x2) & EIR_UUID16_COMPLETE (0x3)
	- EIR_UUID32_INCOMPLETE (0x4) & EIR_UUID32_COMPLETE (0x5)
	- EIR_UUID128_INCOMPLETE (0x6) & EIR_UUID128_COMPLETE (0x7)
	- EIR_TX_POWER (0X0A): parsed as int8, added to reply as "tx_power"
	- EIR_CLASS_OF_DEVICE: Added to reply as dev_class (0x0D)
	- EIR_MANUFACTURER_DATA: Added to reply as "manufacturer_data" (0xFF)

Change-Id: I80600ff3078e2a7bc41c614596013e633ada5c9c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10613
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Haiku-Format: Haiku-format Bot <[email protected]>
2026-05-11 16:07:08 +00:00
PulkoMandy 5efaab5061 mmc: adjust switching to 4-bit mode for MMC devices
CMD6 is a normal command on MMC, but an application command on SD. And
the parameters and response type are different.

Change-Id: I0583b8a98cf18dc4d77d28066673d0d07229e161
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10934
Reviewed-by: Adrien Destugues <[email protected]>
2026-05-07 07:22:21 +00:00
PulkoMandy 1e9473f97e mmc: handle "high capacity' (>2GB) devices similarly to SDHC
A similar change was made to address sectors instead of bytes.
The detection method is different in the initialization sequence.

Change-Id: I38af6e21b720d4437594431964a5244fb0d80848
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10933
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-05-07 07:22:21 +00:00
PulkoMandy 05b7380f79 sdhci: prepare for MMC EXT_SEND_CSD command
This is needed to handle MMC devices larger than 2GB. The protocol used
is different from how it's done in SDHC/SDXC.

Change-Id: I12edb1a4196c1e8f375886e9e5a5c1cef111e33c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10929
Reviewed-by: Adrien Destugues <[email protected]>
2026-05-07 07:22:21 +00:00
Jessica Hamilton 8dc4944a6c elf.h: add definitions for symbol visibility
As defined at https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.symtab.html

Change-Id: I3e89f78626e1271a99bc4b58b7edb3e169c74c64
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10938
Haiku-Format: Haiku-format Bot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2026-05-06 11:58:55 +00:00
Elaine Gibson 5c7d86e491 headers/thread_defs: increase MAX_USER_STACK_SIZE from 16 MB to 64 MB
The Zig compiler uses a lot of stack and crashes if not allowed
to do so.

Change-Id: I4ab8f38a5f6524f6a381367f788be30f1ff724f1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10926
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-05-05 16:27:10 +00:00
Augustin Cavalier e7cc89a038 kernel/x86: Use multibyte NOP constants in altcodepatch.
Follows up on a suggestion from the commits mailing list.
2026-05-04 15:27:11 -04:00
Augustin Cavalier facff75dd4 kernel/x86_64: Use VZEROALL to clear XMM/YMM/etc. registers when available.
It comes with AVX, so enable it if we've enabled AVX.

This also adjusts altcodepatch_replace to explicitly set NOPs
for the remainder of the patch area.

Change-Id: Ia07549851d86836ff5428635b580c751b4e5b2a3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10867
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-05-04 00:03:54 +00:00
unknown rurouni 4ce5404143 (GSOC2026) Proper initialization for eMMC device.
[+] Implemented proper initialization and detection for eMMC card at mmc_bus.cpp
[+] Extended SD_COMMANDS enum at mmc.h to support eMMC CMD3. some common commands
	are highlighted removing its specific card type prefix.
[+] Reading eMMC Device CID register attributes for initiating mmc disk node.
[+] added formal register content wrapper classes.
[+] Printing some attrs for debugging and verification.
[+] MMCBus and SDHCIBus are aware of the underlying card type, no problem unless more than one device
	on same mmc bus.
i followed the specs on CID stipping, still asking for your validation.

Built and tested with success for QEMU emulated sdHC eMMC device, also tested with emulated
	SD card to verify nothing backfires.
my reference is JESD84-B51 document.

*log file looks has this:
mmc_bus: Trying MMC CMD1 initialization...
...
mmc_bus: Detected MMC card after CMD1
...
...
mmc_bus: MMC RCA: 1 Status: 500
mmc_bus: MMC CID: MID=0, name="XQEMU!", PSN=31370686, PRV=201, MDT=14/2028

Change-Id: Ia6e93b154548ff7cf2dfae3bcffe85e6b2aa01fb
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10641
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-04-29 07:30:15 +00:00
Augustin Cavalier 4dd45837e9 Package Kit & pkgman: Split cleanup operations into a "cleanup" command.
And only inform that some can be deleted at the end of install/uninstall.

As discussed in https://review.haiku-os.org/c/haiku/+/10711.
2026-04-27 16:29:33 -04:00
Augustin Cavalier 747a839b95 kernel/smp: Move the per-CPU SMP message mailbox into cpu_ent.
Putting all the per-CPU messages in one array means they'll all
be on the same cache lines. The cpu_ent structure is cache-line-aligned,
so this means they'll be on separate cache lines.
2026-04-27 15:14:14 -04:00