Commit Graph

63121 Commits

Author SHA1 Message Date
Rudolf Cornelissen
1e0fdd6d98 accelerants common:BWindowScreen.CanControlFrameBuffer() now says OK. Note that these mode.flags are _outputs_ from the accelerants 2021-09-27 10:16:59 +00:00
Jérôme Duval
bb187c91d8 interface: add colorspaces support for RGB48 and RGBA64
these colorspaces are packed as RGB or RGBA, not BGR or BGRA.
RGB48_BIG and RGBA64 only differ in the endianess of the channel the 2-byte value.

this is a big difference with RGB24_BIG and RGBA32_BIG, in which case _BIG
means the order is RGB (BGR) and not BGR (BGRA).
BGR48, BGRA64 could indeed be added, if needed.

I chose 0x11 and 0x12 arbitrarily, but given the order of channels 0x1011
and 0x1012 might make more sense. This would mean using another bit for "real"
bigendian colorspaces.

Only the color conversion to 32-bits is implemented.

Tested with the RAWTranslator modified to output 16bpp with success.

Found some references in enum AVPixelFormat in libavutil/pixfmt.h.

Change-Id: I4b023dec85d01f1e63e1b053139e5bb5d263a0e0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4468
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-27 07:21:27 +00:00
Autocomitter
c1432f757f Update translations from Pootle 2021-09-25 08:45:01 +00:00
X512
ad3f57ef5a kernel/debug/frame_buffer: Lock should always be initalized
* Without this, kernel will crash on boot when a framebuffer
  isn't provided by bootloader. (like on the riscv64 today)

Change-Id: I5ec64db30972c7c3b19e4cdb31f0fe72b5982c0f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4494
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2021-09-24 00:50:21 +00:00
Alexander von Gluck IV
3ea6c00608 radeon_hd/riscv64: Add radeon_hd to minimum image
Change-Id: I44211b3533f99338d7246e88593fc8838628904c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4485
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-24 00:48:50 +00:00
Alexander von Gluck IV
2e8ad9a706 bus_managers/pci: Init controller before io regs
* For riscv64,arm,etc, the controller init is used to
  parse the fdt to detect the PCI controller.
* Without the controller being init'ed, we don't yet know
  the base registers of the PCI controller for io activity
  on a lot of architectures / platforms
* x86 doesn't seem to use the io regs until well after
  controller init

Change-Id: I2a04e30e4dc675657b5cd9183240dafd35473998
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4484
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2021-09-24 00:48:50 +00:00
X512
9720782947 bus_managers/pci: add riscv64 support v2
* Refactored version of X512's original work to split out
  the ecam and fu740 PCI Controllers

Change-Id: I631885af03b0118fb0084ed7aa4a5aa0a355b0fa
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4435
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2021-09-24 00:46:59 +00:00
Franck LeCodeur
e5928728d5 JPEG2000Translator: Fix -Werror warnings
This fix is for ticket #9460 to potentially enable -Werror for JPEG2000Translator.
Original warning: 'char* strncpy(char*, const char*, size_t)' specified bound equals destination size [-Wstringop-truncation]

- Replaced several occurrences of same string with existing constant.
- Use strcmp instead of strncmp as one string is guaranteed to be null-terminated
- Replace strncpy use with strlcpy as seen in other code places.

Change-Id: I5e7ed0de10dc40447a64fe77a7909af577e128ac
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4472
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-22 07:27:07 +00:00
Niels Sascha Reedijk
158b8fdab2 libroot: return EOPNOTSUPP from posix_fallocate
The pre-allocate functionality was added to Haiku in hrev54704. It needs
support at the file system level though, and it is yet to be implemented by
BFS. Some applications (and glibc!) implement a fallback mechanism using
ftruncate(), including the LLVM tools, but they go to this fallback
mechanism when it is clear that the operation is not supported. In particular
they look for EOPNOTSUPP.

The current implementation returns B_UNSUPPORTED from the vfs layer when a
file system does not implement the feature. This error code this not map to
a POSIX error. This change converts it to EOPNOTSUPP.

Change-Id: Ief382b0f4d462dfedf84c731f68f69731de4498c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4492
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-21 10:22:10 +00:00
Augustin Cavalier
cc455ef461 USB: Properly set and reset fFragmented for both SetVector and SetData.
Now that we are not setting fFragmented in VectorLength(), we can
reset it in SetVector based purely on the length of the newly set vectors.

We also need to set it in SetData, as SetVector does not call this.
This fixes an oversight in bc7fd43358.
2021-09-20 12:37:39 -04:00
Augustin Cavalier
8d046e2689 USB: Split WaitForUnbusy from Object::PutUSBID.
In a few instances, we need to not wait for objects to become unbusy
during ID puts because we expect they still will be, e.g. in the case
of Control pipes with submitted transfers that are still running. There,
we need to put the ID, cancel transfers, and only then wait for the
object to become unbusy.

Technically, this is a functional change, but at least in practice
it will have little real-world effect, for two reasons:

 1. The DefaultPipe's Busy flag is basically never updated (the Device's
    busy flag is generally used instead), so it will virtually never be
    "busy".

 2. Most devices have no Control endpoints besides that default one.

Change-Id: I32ff4094effeac9ec74546c9643ea2025418e1c1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4491
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-20 16:28:03 +00:00
Augustin Cavalier
faae5dd726 USB: Put the default pipe's USB ID and cancel its transfers earlier during teardown.
This way, any endpoints or interfaces which are currently using the
default pipe for SetFeature/.../etc. will return immediately and
become unbusy.

Should fix the remaining KDLs in #16794 and #16969.

Change-Id: I6615fc03394a0c50eae1ca7da2fb43f243841613
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4490
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-20 16:28:03 +00:00
Augustin Cavalier
2ce316ccc8 USB: Refuse transfer submission on pipes that are being removed.
This mostly only matters for the Device DefaultPipe, which is still
accesible even after its USBID has been put, but it makes sense to
do this in general, too.

Change-Id: I6711f1ce8fe79dff54927e3b5e60dec15bb58b14
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4489
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-20 16:28:03 +00:00
Augustin Cavalier
2f496b3095 USB: Make Pipe::CancelQueuedTransfers virtual and add a ControlPipe variant.
Control pipes have internal structures to wait for queued requests.
When force-cancelling queued transfers, the callbacks will not be called,
and so such transfers would be left hanging until the timeout occurred
or the destructor destroys the semaphore and mutex.

This probably will not fix any hang-related tickets, though, as force
cancellation is pretty much only used during device/pipe teardown.

Change-Id: I41db7caf380cdd082bc3509e95262317489bf100
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4488
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-20 16:28:03 +00:00
Augustin Cavalier
3e0eea85ec XHCI: Add support for fragmented transfers.
I was not actually aware that our USB stack already supported
breaking (bulk) transfers up into smaller units as necessary;
these APIs are not very well documented.

This makes #15569 occur far less often, though it is still
more than possible to trigger.
2021-09-20 12:25:09 -04:00
Augustin Cavalier
bc7fd43358 USB: Rename Transfer::VectorLength to Transfer::FragmentLength.
It did not return the length of the vectors, but only the current
fragment's worth of vectors. It also modified the fFragmented flag,
which really should have been set in SetVectors in the first place.

As everything seemed to call IsFragmented after VectorLength,
this is not a behavioral change.
2021-09-20 11:52:54 -04:00
Coldfirex
120e8f6ace Listusb: Fix Wformat-security
Change-Id: Ibd750392467ae097b8728346bd0e9ce33a461a06
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4481
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-20 13:38:53 +00:00
Coldfirex
01d5efe3d9 Malloc_debug: Fix Wformat-security
Change-Id: I2f891fff74a003aac7774ee91f2c28d5e65a18f7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4486
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-20 13:38:53 +00:00
Coldfirex
5d9604a222 ifconfig: Fix Wformat-security
Change-Id: Ie4cf563f1ac333824932e1154e44d23e5ea046e3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4482
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-20 13:38:53 +00:00
Augustin Cavalier
c8eaa6f988 packagefs: Use WeakReference in PackageNode.
This allows us to stop storing the package flags, which saves 4
bytes per package node (a value that really adds up when there
are thousands upon thousands of PackageNodes), at the cost of an extra
sizeof(int32) allocation for the WeakPointer object per-package (of
which there are are much fewer, of course.)

This also is safer overall, as now consumers of GetPackage() or VFSInit()
will now hit a NULL dereference if they have failed to check if the
package still exists, instead of a use-after-free.

Change-Id: Iea97ffcd491c6e2da7093730a7fa951b84dcefdf
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4478
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2021-09-20 11:08:13 +00:00
Augustin Cavalier
522c74f3e7 libroot: Use strnlen in strndup.
This is both more correct, as we need to not read past the 'size'
position of the passed pointer, and much faster, in the case where
the passed pointer is into some very large block of memory.

This provides an unbelievable speedup to a microbenchmark posted on IRC
that makes heavy use of this function in tandem with some rather
large allocations. (Some variants of it go from multiple minutes
to under a second!)
2021-09-18 18:20:44 -04:00
Autocomitter
ed246fcd6e Update translations from Pootle 2021-09-18 08:45:44 +00:00
Rudolf Cornelissen
96c8657d24 intel_extreme: fix haswell virt display scroll/pan, ticket #17261 2021-09-17 23:46:00 +00:00
Coldfirex
4411ed75b4 Kernelland_emu: Fix Wformat-security
Change-Id: I3b031335844ab4512b8eebc8ead216af9c5fc4ee
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4476
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-17 21:24:13 +00:00
Coldfirex
b1ce138fe8 PXE_ia32 Network: Fix Wformat-security
Change-Id: I926cdafa422f7544ff7a0fdcc9c5561759066a3e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4475
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-17 21:24:13 +00:00
Coldfirex
81329d5c90 ATATracing: Fix wformat-security
Change-Id: I36e71a4705b811e45935bf3faa11b15617b04cc0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4474
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-17 21:24:13 +00:00
Coldfirex
a33cf10dcf USB Vision and FreeBSDCompat: Fix Wformat-security
Change-Id: Idd7fd80546b414c9db21bc0979412bcd4bf7878d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4460
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-17 21:24:13 +00:00
Coldfirex
59642dc3e8 ACPICAHaiku.cpp: Fix wformat-security
Change-Id: I6d06e68e60ced2ca311c3fc505f9f9f51ee05563
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4473
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-17 21:24:13 +00:00
Augustin Cavalier
5ea9360258 package_infos/haiku: OpenSSL is enabled for minimum images and not just regular ones.
It has been since 2019. It seems to be added to images anyway,
probably because something else depends on it, but for correctness,
it belongs outside the REGULAR section.
2021-09-17 16:27:59 -04:00
Augustin Cavalier
744f487bc5 headers/libs: Remove expat headers.
We now have an expat build feature that uses packaged headers instead.
2021-09-17 16:26:06 -04:00
Augustin Cavalier
a812e3cab1 kernel/debug: Only create an area for the debug syslog if reusing one.
If the debug_output pointer is just a kernel_args_malloc'd structure,
then it is already mapped and we should not be re-mapping it; we only
need to do that if we are using a fixed-map ring.
2021-09-17 16:06:13 -04:00
Augustin Cavalier
4d1c59078b EFI: Hand off bootloader log to the kernel.
Eventually, EFI should get support for the debug log ring_buffer
like bios_ia32 has for transparent handoffs, but this preserves
everything except for the pre-start MMU dump, which is an improvement.

Fixes #15455.
2021-09-17 16:04:20 -04:00
Augustin Cavalier
80519e78aa bootloader: Clarify comment in text_console.h.
The following colors are "foreground colors only" not "foreground colors,
only if".
2021-09-17 15:36:57 -04:00
Augustin Cavalier
5e2d0005c1 libroot: Fix previous commit. 2021-09-17 15:35:51 -04:00
Augustin Cavalier
ffbe2ad946 libroot: Reinstate tdestroy.
It was removed in hrev55422 as we never had declared it in any headers.
But it seems some software came to depend on it anyway. Reinstate it,
and add a declaration for it, behind _GNU_SOURCE.
2021-09-17 15:34:10 -04:00
Augustin Cavalier
aa04f48dcf Remove some unused headers. 2021-09-17 15:29:00 -04:00
Augustin Cavalier
5ee918678e USB: Track object busy-ness and wait for an unbusy state before teardown.
This reverts and replaces hrev53141, hrev53200~1, and hrev53888.

Two years ago (in hrev53141), I added checks to validate that Devices
were not in the process of being torn down before using them, to fix
a race condition KDL. Further logic was added in hrev53200~1 and in
hrev53888 for Pipes.

Well, upon closer inspection following the reports of #16794 et al.,
it appears upon closer inspection there were still two more race
conditions lurking in there: the first between Get and InitCheck, and
the second between InitCheck and use.

To resolve both of these, a new atomic "busy" flag is added to objects,
which is incremented before unlocking the objects array, and then
waited on before actually proceeding with teardown.

The older checks about initialization status are now superfluous
and are removed in favor of an earlier PutUSBID() invocation in Device.

While #16794 was fixed by hrev55429, some of those or related KDLs
might have been caused by these races. This also re-resolves #15115,
along with #14949 and #15710.

Change-Id: Ifcae84945a81123af5ef4683a6e33dc1eec5b23c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4421
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-17 18:25:00 +00:00
Augustin Cavalier
b3683d8aee XHCI: Get rid of the PortSlots array and use ControllerCookie in FreeDevice.
This array was introduced by korli in hrev44089~1 (2012). It "mapped"
ports to slots using a device's HubPort, and then used this value in
FreeDevice() to locate the xhci_device struct in question.

Well, when there are non-root hubs in use, the HubPort values can
of course collide, leading us to tear down the wrong device in many
circumstances. This appears to have been the true cause of #16794,
and probably also #16878 and #17266, and maybe even some others.
2021-09-17 13:33:02 -04:00
Augustin Cavalier
31caaec069 kernel: Print <DROP> at the beginning and not the end of dropped regions.
This way there is a better indication of where the drop occurred.
2021-09-16 15:05:48 -04:00
Augustin Cavalier
7cde125283 kernel: Write parts of truncated messages to the log.
In case any one message (or, more likely, importing the bootloader's
syslog buffer) is too large for our buffer, do not discard it, but
keep as much as we can, and print <TRUNC> at the beginning of it,
to distinguish from <DROP>. (Documentation already notes <TRUNC> as
a possible thing to find in the syslog.)
2021-09-16 15:04:54 -04:00
Augustin Cavalier
7fd1fb8745 kernel: Correct bootloader syslog buffer handoff logic.
If keep_debug_output_buffer is true, then we reused the syslog buffer
the bootloader allocated (and which has just been re-mapped above),
so we do not need to write the buffer in again (and moreover doing so
is incorrect, as it contains a raw ring_buffer header, and will be
larger than the buffer.)

This fixes "<DROP>" appearing at the beginning of all syslogs (or at least,
ones that began with handoffs from the bootloader) spuriously when
the whole buffer was really present anyway.
2021-09-16 15:02:05 -04:00
Augustin Cavalier
ad56cbbb6e USB: Add asserts under KDEBUG that IDs being put have no remaining children.
Change-Id: I100828d2724d65ab0841e1262c7db7e144b56aab
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4441
2021-09-16 13:17:34 -04:00
Augustin Cavalier
838251124c USB: Rework Device deinitialization and destruction.
* Destroy interfaces and endpoints before deleting the default pipe,
   as all of these may actually use the default pipe at any time
   while they are alive.

 * Remove the default pipe and then ourselves from the stack before
   deleting the default pipe, as it also may be used at any time.

May help with some of the open tickets about USB stack KDLs.
2021-09-16 13:17:34 -04:00
Franck LeCodeur
1fb138bf94 ext2: Fix build warnings, enable Werror
This fix is for ticket #9460 to enable -Werror for ext2.

- Unused functions are removed.

- The ASSERT macro was redefining a different ASSERT macro from the included files. Now it gets undefined first.

- One comparison side was cast to ptrdiff_t because X86_gcc2 complained about signed/unsigned comparison

Change-Id: Ib0caade2f83de34c04acc0fc6aa5ed50712daec4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4453
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2021-09-16 06:52:00 +00:00
Augustin Cavalier
4d21f567e7 XHCI: Fix up 3a71862e99.
Now the logic is actually identical.
2021-09-15 19:20:25 -04:00
Augustin Cavalier
1da090bc56 XHCI: Add assert that the context is really page-aligned if needed.
_OffsetContextAddr assumes it will be in order to do some rather
annoying pointer arithmetic, but that was never actually asserted.
2021-09-15 19:02:50 -04:00
Augustin Cavalier
2296578c93 XHCI: Put speeds in order.
No functional change.
2021-09-15 19:01:57 -04:00
Augustin Cavalier
decd5b8ff5 USB: Clarify that BusManagers do not really have usb_ids.
Instead their IDs are indexes into the stack, and are used primarily
for TRACE*() printing, so move the getter function into a "protected"
block and rename the variable appropriately.
2021-09-15 19:01:39 -04:00
Augustin Cavalier
3a71862e99 XHCI: Rework port route computation code.
The new code should be functionally identical to the old,
but it uses fewer variables and should be significantly easier
to understand than the old.
2021-09-15 19:00:38 -04:00
Augustin Cavalier
f20f55692d XHCI: The root hub address is always 1.
AllocateAddress() is the pre-USB3 way of doing things;
as we never use it anywhere else and it is specific to
each BusManager, we always just got 1, which is what
the root hub will always be anyway.

Additionally, clarify the logic in _InsertEndpointForPipe
that is special-casing the root hub.

No functional change intended.
2021-09-15 18:58:46 -04:00