Commit Graph

63690 Commits

Author SHA1 Message Date
Alexander von Gluck IV
7bbfd0ff49 3rdparty/docker/bootstrap: Cleanup, little modernization
Change-Id: Icc16b3fca48ffe072aed06c495d93fc3c74deead
2022-03-28 19:38:38 -05:00
Alexander von Gluck IV
52f7c93894 3rdparty/pulkomandy: Fix rm on unbootstrap script
Change-Id: I8c58195906e426971dc1ebd9ae2da23cfa6159c8
2022-03-28 19:38:38 -05:00
Jérôme Duval
a191388ea6 pci: add some pcie extensions labels
Change-Id: I938e2d47d60dc631b8b57d3afefcfb2a85374bad
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5160
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2022-03-28 14:52:28 +00:00
X512
ebeab0cf70 rumtime_loader: fix TLS for riscv64
Change-Id: I55593dea936af31135b8e9159f8b6a64270369c0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5157
Reviewed-by: X512 <danger_mail@list.ru>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2022-03-27 16:15:41 +00:00
PulkoMandy
fa288877c5 acpi_battery: accept revision 1 struct with only 20 items
The revision 1 structure should have 21 items, but on my laptop, it doesn't.
That's fine, we can parse it as if it was a revision 0 structure. This way I
can see the battery status on my machine.

Change-Id: I743173e05318d686049454983e378a08c0a1980a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5155
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2022-03-26 20:48:49 +00:00
PulkoMandy
7f5e1044ee pci_info: print 64bit BARs in a more readable way
Change-Id: Id3f42a6c93290ddb1825208bd11ca2c40b073914
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5154
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2022-03-26 20:48:49 +00:00
Jérôme Duval
e0102ba38b boot/x86: if __uint128 is available, use it
Change-Id: I2b01b8e205ffcfb9f3901715a7c8382a21d4f575
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5140
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2022-03-25 09:51:39 +00:00
Jérôme Duval
4df4b48fc6 configure & build: make use of 64-bit libgcc and libsupc++ for EFI/x86_64
Change-Id: I7636530d927843d155b9d7dada2db4f67c875290
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5139
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2022-03-25 09:51:39 +00:00
Augustin Cavalier
69b5103b54 kernel/vm: Add user address checks to mlock routines.
Also adjust general checks at the beginning. Patterned after
_user_set_memory_protection.
2022-03-24 12:56:31 -04:00
Augustin Cavalier
760270af02 kernel/vm: Use ObjectDelter and slight cleanup to the mlock() routines. 2022-03-24 12:03:25 -04:00
David Karoly
5ba6ef84ef boot/efi: use 8250 driver for bcm2835 mini-UART
Change-Id: I1f42447e537ea7522ac299f028d530beb5067350
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5142
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2022-03-24 13:24:55 +00:00
David Karoly
9d65dbf1cb boot/efi: rework address-cells and size-cells handling
see Devicetree Specification,
section 2.3.5 #address-cells and #size-cells

The #address-cells and #size-cells properties may be used in any
device node that has children in the devicetree hierarchy and
describes how child device nodes should be addressed.

The #address-cells and #size-cells properties are not inherited from
ancestors in the devicetree. They shall be explicitly defined.

If missing, a client program should assume a default value of 2
for #address-cells, and a value of 1 for #size-cells.

Change-Id: Iafed49358540f8ac7aa673c3dc0191c9b580250b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5144
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2022-03-24 13:24:22 +00:00
Augustin Cavalier
f5ea62c478 HaikuDepot: Fix another instance of std::remove. 2022-03-24 09:15:35 -04:00
Augustin Cavalier
79a174c793 HaikuDepot: Fix usage of std::remove.
That's right kids, std::remove doesn't (and can't) actually remove
things from containers! Instead you have to pass its results into
container::erase in order to do anything at all.

Fixes #17579, and in my testing at least, the strange crashes
and heap corruptions.
2022-03-23 16:21:17 -04:00
Augustin Cavalier
4329a83fe6 HaikuDepot: Inherit from BWindow last so it is destroyed before everything else.
This eliminates the need for the early deletion of certain controls.

Part of #17579.
2022-03-23 16:19:46 -04:00
Jérôme Duval
06c5115cf0 btrfs: check status before the flags
Flags() uses fItem.
should help with #14486

Change-Id: I2593280f92e9843a2d57d66bf9b793748fb14f3d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5141
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2022-03-23 15:52:34 +00:00
Jérôme Duval
69cab3d4f6 intel_extreme: remove gen8 interrupt handler on exit
should fix #17535

Change-Id: I09d62090c68bd50494ca168d92d3df7b0c6fd0b4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5138
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2022-03-23 09:29:07 +00:00
Augustin Cavalier
7a52ac780b ipro1000: Upgrade to FreeBSD 13.1.
Includes support for new I219 device families.

Taken from the 13.1 releng branch (currently on "beta 2" status.)
Tested in QEMU and VMware. The "e1000" device works OK in QEMU,
"e1000e" does not anymore, but reportedly the FreeBSD devs say
it does on bare metal, so this is probably a QEMU bug (it doesn't
seem to be a commonly used device.)
2022-03-22 15:36:40 -04:00
Augustin Cavalier
92030a4a60 Revert "vfs: functions to change a vnode busy status and ID"
This reverts commit 8497a2cc28.

The VFS layer is not at all ready for this. Many places in the
code implicitly assume ino_t values will never change. This
functionality is only necessary for live shrinking of partitions,
which is a feature niche enough we do not need to worry about
implementing it in the first round of resizing (if ever.)
2022-03-22 11:38:06 -04:00
urnenfeld
c1c3f9812b boot/efi/arm64: Rework exception level handling
* Deal additionally with EL1 context
* Reuse possible present TTBRx allocations
* Dump MMU & System Control Registers

Change-Id: If27531f3c9d3fa096da11e8a7d46dd7d82a90e33
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5108
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: David Karoly <karolyd577@gmail.com>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
2022-03-21 20:06:59 +00:00
Augustin Cavalier
09ea42fa68 freebsd_network: Rearrange taskqueue_block functions and add NULL checks.
Should fix #17218.
2022-03-21 15:48:59 -04:00
Jérôme Duval
168f941be5 kernel/x86_64: align the stack before calling user_debug_pre_syscall
Fixes #17531

Change-Id: Ia406ca15438bb2b432e9ebbe9f6db074f973af95
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5113
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2022-03-21 19:24:20 +00:00
Adrien Destugues
f0a8e7e247 Tracker: don't call debugger if a file has an invalid resource
This is a bit excessive: a file with a B_MINI_ICON resource of the wrong
size should not result in crashing Tracker, the resource should simply
be ignored.

Fixes #17668.

Change-Id: I55a210eb829e568d254d8ab569720145c0ea5a09
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5115
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2022-03-20 12:28:15 +00:00
Augustin Cavalier
d5ff3cd050 kernel/system_info: Address review comments.
* Combine "i" and "firstCPU" iteration variables.
 * Use better variable names.

Change-Id: Ifc6fcaea6519dc4a791600f4a8bcdd38f02434f3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5111
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
2022-03-18 17:02:30 +00:00
Jérôme Duval
c0ab9f51b2 intel_extreme: handle generic DTD block found in the VBT
Change-Id: Id27180b3a33778d4da66ab45b330839ae90c6382
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5110
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2022-03-17 07:24:11 +00:00
Jérôme Duval
d5137e7776 intel_extreme: find VBT in OpRegion version 2.0 and from 2.1
we check the OpRegion version and use the rvda pointer when available.
from 2.1 the pointer is relative.

Change-Id: I64d8aea65368aa3c5597f63a2b96b6a430e04315
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5109
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2022-03-17 07:24:11 +00:00
Alexander von Gluck IV
8fed6717a7 mkdos: Drop from image. Use mkfs -t fat
Change-Id: If79f67126e23bea6c8dbb348f075832cd0bf8360
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5107
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2022-03-16 01:00:39 +00:00
Alexander von Gluck IV
d188fff30b kernel/fs/fat: Fix volume label of newly created filesystems
* solves #17659
* We assigned the volume label to the root, but not the boot
  sector (partition boot sector, not MBR)

Change-Id: I9c53204c18709c2d225cc8ea338290aa89d42083
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5106
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2022-03-16 00:48:49 +00:00
Andrew Lindesay
f67e053883 HaikuDepot: Size Package Files
Obtain the size of local package files.

Fixes #17445

Change-Id: Ica15d3f7c1e80bcf9b3b23d6af851cc33b5b6253
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5016
Reviewed-by: Andrew Lindesay <apl@lindesay.co.nz>
2022-03-16 00:31:52 +00:00
Adrien Destugues
2d80f9e236 EFI: add support for dw-apb-uart used on Allwinner A10 SoC
Yet another 16550 clone under a different name. Why does device-tree
have a "compatible" setting if everyone puts a different name for the
same thing?

Change-Id: Ia889a527a36739df747ba48d4606c09764703607
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5103
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2022-03-15 18:26:18 +00:00
Adrien Destugues
ef41059432 EFI: get address-cells and size-cells from the device tree
They were hardcoded to 2, which is not correct on all devices. As a
result, getting addresses and sizes on pure 32bit devices would fail.

Change-Id: Icf542c9e8d6b7136219014fe08dd601387de4762
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5102
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2022-03-15 18:26:18 +00:00
Jérôme Duval
f37f79066c intel_extreme: add IDs for Jasper Lake
tested with Acer Swift SF114-34
2022-03-15 16:51:13 +01:00
Adrien Destugues
7b7cc2944b Allwinner A10 docs: fix broken link
Change-Id: I40d3bebd2f70def0a4074f2bec74c574f44d46cd
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5101
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
2022-03-14 21:35:41 +00:00
Jérôme Duval
39dae8ee4e radeon_hd: handle 64-bit PCI BARs 2022-03-14 16:36:23 +01:00
Jérôme Duval
7a5f5dc504 intel_extreme: handle 64-bit PCI BARs 2022-03-14 16:19:51 +01:00
Jérôme Duval
d9df712ebc intel_gart: handle 64-bit PCI BARs 2022-03-14 16:19:51 +01:00
Rudolf Cornelissen
eb2b376271 various fgx drivers: fix cloning accelerants, allow for modelist cloning. 2022-03-13 00:18:09 +00:00
Augustin Cavalier
77034a15f8 kernel/vm: Let _user_set_memory_protection change area->protection if possible.
If mprotect() is being run over an entire area, and the area does
not have per-page protections, then we can just invoke set_area_protection
instead of allocating a protections array.

This is a major efficiency increase, as every page fault would otherwise
have to use the protections array if it was allocated.

Testing with QtWebEngine shows this new path being hit relatively often
(multiple hundred times in loading a single webpage).

Change-Id: I60258d56f681060861602922f3fbdbce2fd380d6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5097
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2022-03-12 17:12:49 +00:00
Augustin Cavalier
a09dd6bb6c kernel/vm: Cleanups and minor fixes to get_area_page_protection.
* We should not assume all non-kernel areas have KERNEL_READ_AREA
   permission, but follow the other permission flags directly.
   This way the kernel will be blocked from accessing guard pages, too.

 * Compute kernelProtection only once, and either return it directly
   or return it OR'd with the user protections.

Change-Id: Id6daa1cd15eb3102e23f95c08672ad97344e0722
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5096
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2022-03-12 17:12:49 +00:00
Augustin Cavalier
4c51faeb59 kernel/vm: Use get_area_page_protection in all cases of _user_get_memory_properties.
It already checks for area->page_protections == NULL and returns
area->protection appropriately if so, we do not need to test specifically
for that here.

No functional change intended.
2022-03-11 14:18:04 -05:00
Augustin Cavalier
5c69be739e kernel/vm: De-wrap line for clarity.
No functional change. Now it looks the same as the surrounding checks.
2022-03-11 14:16:59 -05:00
Augustin Cavalier
63664eaa21 kernel/vm: Do not assume "no user protection" means "kernel area".
It's entirely possible that we have a user area with a page that
has protections of 0 (e.g. a guard page). In that case we should
print the standard read/write fault message instead of "kernel"
fault messages.

This should not be a major behavioral change, only the syslog
and tracing entries should be affected; such memory accesses
should be caught by the read/write permissions checks immediately
following.
2022-03-11 14:15:56 -05:00
Augustin Cavalier
3a81e9446d kernel/vm: Check the area's cache_type, not the cache's, in cut_area.
It seems this is the type of the innermost source cache, not the
topmost cache (which well may be "RAM" if this is an anonymous cache
on top of a Vnode cache.)

Originally VMArea::cache_type was introduced 15 years ago
(commit 0c12332715, 2007)
merely to mirror the underlying cache's type. Somewhere along the way,
it acquired different values. As the VM has changed a lot since then,
perhaps its overall purpose should be re-evaluated?

Fixes #17556.
2022-03-10 17:40:15 -05:00
Augustin Cavalier
23840276a9 kernel/system_info: Rename variable based on axeld's review. 2022-03-10 16:06:11 -05:00
Augustin Cavalier
488f8888a2 network stack: Fix deadlock in get_interface functions.
If these methods are called while the interface in question
is receiving data via a receive thread, we can hit a deadlock
where a receive thread is holding the receive lock and then
tries to call get_interface_address_for_link (due, e.g., to ipv4
checking is_local_link_address), which tries to acquire the interfaces
lock, while at the same time we are trying to acquire the receive lock
due to CreateDomainDatalinkIfNeeded invoking a module's datalink_init
which calls register_device_handler, so we deadlock. (Whew!)

As far as I can tell, we do not need to set Busy() here despite unlocking
the interfaces lock, as the Interface acquires its own lock in
CreateDomainDatalinkIfNeeded.

Observed in VMware when the DHCP client spins for a long time,
and the deadlock occurs upon opening Network preferences.
2022-03-10 14:27:40 -05:00
Augustin Cavalier
2828ed2fa1 network stack: Add missing ASSERT_LOCKED_RECURSIVE. 2022-03-10 14:22:46 -05:00
Augustin Cavalier
b6bfd9b749 kernel/elf: Use Deleters and get rid of gotos in elf_load_user_image.
Briefly tested: system boots and applications launch as before.
2022-03-10 13:46:35 -05:00
Augustin Cavalier
64a051399f kernel/system_info: Avoid unnecessary usage of set_ac.
Instead add a second level to the loop and a small temporary array.
Makes the code slightly simpler (and safer, as there is no risk
of races now.)

Also add a missing "firstCPU +" in the current_frequency calculation.
It seems that has been broken since the frequency value was introduced...
2022-03-10 12:18:43 -05:00
Augustin Cavalier
4027df884e kernel/vfs: Fix mismatched frees of vnodes.
Regression from yesterday's commit. Fixes #17642.
Hopefully this is all of them.
2022-03-10 09:53:23 -05:00
Augustin Cavalier
585ce471d1 kernel/vfs: Create an object_cache for vnodes.
In addition to being slightly more efficient, this also allows one
to see precisely how many vnodes are currently "alive" across all
mounts via the "slabs" KDL command.
2022-03-09 19:02:31 -05:00