Commit Graph

66896 Commits

Author SHA1 Message Date
Michael Lotz
16cc9b0414 cpu/x86: Use the IA32_MTR_* macros instead of numeric values.
Change-Id: I937024a5105d41060408237d79f344879e1b4caa
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8343
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2024-09-17 20:45:28 +00:00
Michael Lotz
44ea1250b8 x86/vm: Add memory_type_ranges KDL command to dump memory types.
Change-Id: Ie4c3dcdbaf86cb12127eb3d8b0092634759087a2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8342
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2024-09-17 20:45:28 +00:00
Michael Lotz
e7e2938459 cpu/x86: Always dump configured MTRRs on init.
When PAT is in use and MTRRs are ignored and left unchanged, it is still
useful to know what it was set up to by the firmware.

Change-Id: I6b0c0f1277659c81fa9b3e9b7bb2c5df92cfdf0f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8341
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2024-09-17 20:45:28 +00:00
Michael Lotz
32a3bddfdf x86: Implement PAT support for memory type configuration.
Using the page attribute table to set the memory type on a per page
mapping basis is the more modern and flexible approach to physical
memory type handling compared to using MTRRs.

Most of the needed infrastructure was already in place, as setting the
page table entry attributes was already done for uncachable and
write-back memory types. Using the PAT now also allows to set the last
remaining memory type of write-combining through the PTE flags. The PAT
is configured to have entry 4 mean write-combining and the PAT bit in
the PTE is set to point to that.

When PAT is supported and not disabled, MTRRs are completely ignored
and left as set up by the system firmware, where the basic uncachable
and RAM ranges are supposed to be set up. These configurations are then
overridden by the PTE flags as needed.

Change-Id: I0a74b3fc7d3ba9fa384251290ce41621b69d3a02
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8340
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2024-09-17 20:45:28 +00:00
Michael Lotz
8271b4a8bf x86/arch_vm: Allow arch_vm_set_memory_type to override type.
We allow requesting an explicit memory type when calling
map_physical_memory but default to the uncached B_MTR_UC when not given.

When called without an explicitly requested memory type, allow
arch_vm_set_memory_type to modify and return an effective memory type.
When an overlapping range already exists, the effective memory type is
set to the one of the existing mapping. If there is an explicit memory
type request that conflicts with an existing range, or if multiple
overlaps with conflicting types would be produced, the mapping is
disallow (and a panic is triggered under KDEBUG).

This effectively detects and panics when conflicting aliases of physical
memory would be created. This is also useful on an MTRR based setup,
as such overlaps cannot be properly represented.

When using the page attribute table (PAT) to set the memory type on a
per page virtual memory mapping basis, this is needed to prevent
aliasing of the same physical memory with different types. As per the
specs, such aliasing is unsupported and may result in undefined
operations that lead to system failure.

The mechanism is extended to the general arch_vm_set_memory_type as such
aliasing prevention also seems to apply to other architectures (at least
on ARM, aliasing is also strongly discouraged).

Change-Id: I7aaf6ea8415e92e74cd1643b67793a6857619eea
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8339
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2024-09-17 20:45:28 +00:00
Augustin Cavalier
5a8a2b5066 package_repo: Add -f argument to "list" mode to print filenames.
This way, users of package_repo don't have to reassemble the
canonical filenames themselves.
2024-09-17 10:53:21 -04:00
Michael Lotz
fece81468c Cleanup: Various whitespace cleanup.
Change-Id: I9b3d910d14f845f750d01d7f028da4b461e9fcd6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8338
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
2024-09-17 09:33:47 +00:00
Michael Lotz
b21df8feab cpu/x86: Fix build with MTRR tracing enabled.
Change-Id: Ib1059851bd2aea9dd2bbba92ce078d177b6f1b3d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8337
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
2024-09-17 09:33:31 +00:00
Augustin Cavalier
8728f4797f libroot: Move malloc implementations to their own subdirectory.
No functional change intended.
2024-09-16 16:12:01 -04:00
Augustin Cavalier
f6313044f1 kernel/vm: Add "unimplemented" messages in VMTranslationMap::Debug methods.
This way, when certain KDL commands don't work on architectures that
don't implement these methods, it won't be a mystery as to why.
2024-09-16 16:00:01 -04:00
Augustin Cavalier
d29c0e6ee5 libroot: Fix shared unnamed semaphore acquisition with timeouts.
We set flags above the timeout check, so we need to use |= and
not lose the SHARED flag we already set.

Fixes some testcases in the POSIX testsuite, and the shared
semaphore code in Gecko/Firefox.
2024-09-16 15:38:29 -04:00
Augustin Cavalier
2eb83002c5 strace: Add FlagsTypeHandler for the mutex option flags.
So that MUTEX_SHARED etc. are displayed in strace output.
Also fix indentation, and the name of the "toFlags" parameter
in syscall definitions.
2024-09-16 15:36:12 -04:00
Augustin Cavalier
e1d0a30ed4 bin: Link launch_roster against libshared. 2024-09-16 14:48:54 -04:00
Augustin Cavalier
532c5e75d3 TextTable: Ignore ANSI escape codes when counting text width.
Otherwise the launch_roster table will be misaligned.
2024-09-16 14:39:31 -04:00
Alexander von Gluck IV
ece6263825 launch_roster: Spice up launch_roster, add color and details to job list
Change-Id: Iae907da336209bcbe39d37bfa35f090b46e783d2

Amended by waddlesplash to use TextTable.
2024-09-16 14:38:04 -04:00
Augustin Cavalier
33ce9b1b5c runtime_loader: Remove -fno-builtin from compiler options.
Except on kernel_cpp.cpp. We don't use it for most of libroot, so
we don't need it for most of runtime_loader either. The two preceding
changes were all that's necessary to fix things with builtins enabled.

Very slight performance improvement (the "run 1000 shells" benchmark
seems to decrease by about 0.4 seconds out of 16.5 or so.)
2024-09-16 13:23:46 -04:00
Augustin Cavalier
6a519848d8 runtime_loader: Add cast in ELF TLS to appease GCC.
Otherwise when builtins are enabled, we get class-memaccess warnings.
2024-09-16 13:19:47 -04:00
Augustin Cavalier
6863cd3038 runtime_loader: Add calloc() to heap implementation.
Taken from the bootloader's version, which this heap is based on.
2024-09-16 13:18:57 -04:00
Jessica Hamilton
b6554e72fc configure: allow specifying python to use --with-python.
Change-Id: Iba5e5a428a4cd84e6dc149943c033d2c5025ae23
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8327
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2024-09-16 16:57:03 +00:00
Jessica Hamilton
c40570934e configure: add a version check for python.
Tooling used by HaikuDepotServer relies on typing features that
exist in Python >= 3.9.

Change-Id: I926d464130a3cef331a00b9a6abbbad5edfcefda
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8326
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2024-09-16 16:57:03 +00:00
Jessica Hamilton
e22ea41c57 configure: add missing sanity check for cross tools options.
Change-Id: Ia79a7eb654dc4bb8dfa35df0f85b2428965e1571
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8325
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2024-09-16 16:57:03 +00:00
Owen Anderson
83316034af arm64: Remove unnecessary TLB flush
Change-Id: I4c1c68dffee4fe054100293410b8988f623a8e9d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8319
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
2024-09-16 16:55:35 +00:00
Owen Anderson
af5e461fb1 arm64: Fix TLB flushing of the kernel address space.
* Don't use ASID-delimited flushes for kernel space. The ASID comes
  from TTBR0_EL1, but kernel address space comes from TTBR1_EL1, so
  this never works.
* Adjust ProcessRange to operate on unmasked VAs. This means that
  the kernel space tag bits are preserved and passed into the
  callback, which can then pass to them to whatever flushes are
  necessary correctly.

Change-Id: If86aeea105f50fc4f294ce1c85cea5dfc938f5cf
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8324
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2024-09-16 16:55:35 +00:00
Owen Anderson
129bc12b13 arm64: Factor out access flag checking when flushing TLB entries.
Change-Id: Id4c5f79042a801f1dcd2a553783862ec762c94ea
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8322
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2024-09-16 16:55:35 +00:00
Owen Anderson
0a36780989 arm64: Implement UnmapArea
Change-Id: Ia46b9c03dc471a795baf7b82fc146c39ce4ebeb9
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8321
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2024-09-16 16:55:35 +00:00
Owen Anderson
3b098011b4 arm64: Implement UnmapPages
* Derived from RISC-V implementation

Change-Id: Ia5d95dce3dc9936f5bb6d03ed04ff4133162d93d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8320
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2024-09-16 16:55:35 +00:00
Owen Anderson
bb43aaacca arm64: Introduce SWDIRTY bit on page table entries.
* This allows us to correctly track dirty pages through RW->RO
  remappings.

Change-Id: I4309d5170ad66a175e884d1b28f31430adb7d67f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8318
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
2024-09-16 16:55:35 +00:00
Owen Anderson
6a2e4f41f7 arm64: Make DBM and clean/dirty handling consistent throughout.
* Extract clean/dirty logic into helpers that can be reused.
* Make sure helpers handle both SWDBM and HWDBM.
* Preparation for the introduction of a SWDIRTY flag in a subsequent
  change.

Change-Id: I18b695b73294b9f8a1623bc2daec3f537316dd67
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8317
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2024-09-16 16:55:35 +00:00
Niklas Poslovski
2fafe865b1 Tracker: Make status text in StatusWindow readable in dark mode
Change-Id: I19eb4ad0b32f6fae7e75d4ac777521e0a2ba5b67
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8297
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
Reviewed-by: nephele nephele <nep-git@packageloss.eu>
2024-09-15 09:10:24 +00:00
Andrew Lindesay
ad2df681ab HaikuDepot: Fix Language Menu
Fix off-by-one issue and the init of the
default language in the case there's no
network connectivity.

Resolves #19090

Change-Id: I3d89bde16f67a8f50f4a08eead3d619a9f9d82f3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8328
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2024-09-15 04:55:10 +00:00
Jérôme Duval
c936122410 intel: enable the active checkbox, if it's the first primary partition
* also set the active checkbox on edit
* part of #7930

Change-Id: Ia91e5f7295e7868647cf940aa1f281bd8dab1918
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8323
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
2024-09-12 18:44:32 +00:00
Ilmari "ilzu" Siiteri
afa8cd9c31 intel_extreme: Add more Tigerlake PCI IDs
* Added all Tigerlake PCI IDs from Intel documentation with all possible
host bridge configurations.
* Tested on 0x9a78 with 0x9A02 host bridge.
* Fixed uppercase letters in PCI IDs to lowercase to match existing code

Change-Id: I5ac8b857b952a2daa93364d9b1c640621d680f5d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8156
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
2024-09-12 17:41:42 +00:00
Augustin Cavalier
fbf5967e67 packagefs: Restore accidentally removed rw_lock initializations.
Incorrect rebase from the change that removes these from Node.
2024-09-11 15:23:40 -04:00
Augustin Cavalier
088e0628c2 packagefs: Acquire some more write locks to fix assertion failures. 2024-09-11 15:20:35 -04:00
Augustin Cavalier
dfb09e12b1 packagefs: Set and unset node parents in Directory rather than Node::Init.
This way we can ASSERT() that the node doesn't belong to some other
directory.
2024-09-11 15:20:35 -04:00
Augustin Cavalier
cb29c48dfa packagefs: Add more write-locked assertions.
Also fix a memory leak on failure in mount().
2024-09-11 15:20:35 -04:00
Augustin Cavalier
57bc041d4b packagefs: Add CountReferences method to InlineReferenceable. 2024-09-11 15:20:35 -04:00
Jérôme Duval
6533131daf posix: dladdr was introduced in POSIX-2024, but with Dl_info_t
instead of Dl_info

Change-Id: Id2fe6d4b094c57ea49260c5765206c5e4bac5a63
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8274
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2024-09-11 14:02:22 +00:00
Augustin Cavalier
a5dbc9f81c HaikuPorts: Synchronize. 2024-09-10 23:21:22 -04:00
Augustin Cavalier
70b84c8aa2 kernel/locks: Assert that rwlocks have no readers on destruction.
Previously only whether there were active waiters was checked.
2024-09-10 23:02:18 -04:00
Augustin Cavalier
2d07400f07 nvme_disk: Unlock the ReadLocker before notifying the IORequest.
SetStatusAndNotify might call us back for more I/O, and we don't
need (or want) to hold a read-lock for that. It will be acquired
anew if necessary.
2024-09-10 18:13:32 -04:00
Augustin Cavalier
13a5c7f91f kernel/lock: Remove ASSERT_UNLOCKED_RW_LOCK from _rw_lock_read_lock.
It's valid to read-lock the same rwlock twice, of course.

(Only affects KDEBUG_RW_LOCK_DEBUG builds, the assertions do
nothing on any other.)
2024-09-10 18:12:20 -04:00
Augustin Cavalier
dd45194d37 kernel/lock: Adjust KDEBUG_RW_LOCK_DEBUG logic in _rw_lock_read_unlock.
We need to always decrement the count by 1 even if we own the lock.
Seems to fix some intermittent hangs with KDEBUG_RW_LOCK_DEBUG.
2024-09-10 17:24:57 -04:00
Augustin Cavalier
1705e9761a kernel/x86: Don't disable the CPUID/MSR TSC frequency read on hypervisor.
It was disabled when adding the hypervisor CPUID leaf reading to
the bootloader, but that's not really necessary. This way, if
a hypervisor does not provide that CPUID leaf but does provide
the value in the standard CPUID or MSR, we will still read it
correctly anyway.
2024-09-10 17:07:10 -04:00
Augustin Cavalier
1e13801271 kernel/locks: Add another assertion to _rw_lock_unset_read_locked.
This method is only used when KDEBUG_RW_LOCK_DEBUG is enabled,
which it isn't by default (even when KDEBUG is.)
2024-09-10 17:05:12 -04:00
Augustin Cavalier
0d931e6321 registrar: Use BMessage::MakeEmpty().
Shouldn't be a functional change, but more idiomatic.
2024-09-10 17:04:21 -04:00
Augustin Cavalier
f7c5998eb0 kernelland_emu: Include <debug.h> and set defines before <lock.h>. 2024-09-10 17:04:02 -04:00
Augustin Cavalier
f5f11192a1 kernel/slab: Add some more information to slab_object KDL command. 2024-09-10 17:03:43 -04:00
Augustin Cavalier
bfc4b17442 kernelland_emu: Fix build following kernel mutex ABI changes. 2024-09-10 16:13:25 -04:00
Augustin Cavalier
65f942aada WebPositive: Add missed conversion from BString to HashString. 2024-09-10 15:48:16 -04:00