Commit Graph

60413 Commits

Author SHA1 Message Date
Augustin Cavalier
f861a8596a XHCI: Set the ENT bit on the Status stage TRB for Control transfers.
Otherwise, it may deschedule this pipe without evaluating the
Event Data TRB and generating the interrupt. Should fix the
"slowness" issue of #15115.
2019-06-17 19:16:11 -04:00
Augustin Cavalier
4f8124c5e3 USB: Add initialization checks to Pipe usages of Device.
Complements the ones added earlier to the module itself.
Should fix the panic portion of #15115.
2019-06-17 19:14:29 -04:00
Augustin Cavalier
ceec04eaf5 Deskbar: Add a declaration for a constructor to TStartableMenuBar.
Appeases GCC2.
2019-06-17 18:41:37 -04:00
Murai Takashi
a76e1eb3c7 bin/top: Fix -Wformat=
Change-Id: Ie408017684313531f2dc18d9401cd54bb00a7e12
Reviewed-on: https://review.haiku-os.org/c/1515
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-17 22:34:37 +00:00
Murai Takashi
f5fb43c94f bin/vmstat: Fix -Wformat=
Change-Id: Id0a03d868143880d50c685d830b23017293f3e38
Reviewed-on: https://review.haiku-os.org/c/1518
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-17 22:34:37 +00:00
Murai Takashi
fe6e591432 bin/mail_utils/spamdbm: Fix -Wformat=
Change-Id: I912a7eac48e6e0343a59821fb1026ef54e6b0d75
Reviewed-on: https://review.haiku-os.org/c/1521
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-17 22:34:37 +00:00
Murai Takashi
7d633b87d8 bin/mkdos: Fix -Wformat=
Change-Id: I10b44b2a660fb7db930b7d3ec139c9ada71e8109
Reviewed-on: https://review.haiku-os.org/c/1519
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-17 22:34:37 +00:00
Augustin Cavalier
74c38cab40 BMenuBar & Deskbar: Make the hack to call ShowMenuBar a lot less ugly.
The previous hack, which as the comment (and __MWERKS__) implies
dates all the way back to the Be era, finally broke: int32 is "int"
on non-x86, not "long", and so this generated an undefined symbol
error on ARM.

The best solution seems to be to make StartMenuBar merely protected,
and then make a subclass where it is fully public to call it.
This is a lot less fragile (and much less ugly.)

Change-Id: I0519d0d9eeb1cc4523d0c6dd4fdfe8688ed1092c
Reviewed-on: https://review.haiku-os.org/c/1516
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2019-06-17 11:49:48 +00:00
Augustin Cavalier
581a586f95 XHCI: Change ADDR print to PHYSADDR to appease GCC. 2019-06-16 23:08:36 -04:00
Augustin Cavalier
d511533a48 build_cross_tools_gcc4: Keep static libstdc++, but rename it.
The gcc_bootstrap recipe still needs it, it seems.
2019-06-16 20:30:53 -04:00
Augustin Cavalier
6a2133b166 XHCI: Overhaul endpoint ring logic.
The changes in this commit are large but also subtle, so
an explanation of how they came to be seems to make sense:

Earlier today I tried booting Haiku on QEMU under USB3 ... and
discovered that it didn't work, with the "Operation timed out"
message from in usb_disk upon failing a data transfer. Indeed,
turning on tracing showed no event was being posted for the
transfer. So, I downloaded QEMU's source code, turned on XHCI
debugging, and began tracing what was going on.

Eventually I determined by adding more and more printfs into QEMU's
XHCI implementation that what was occuring was that it was evaluating
a Link TRB, hitting an empty TRB, and then deciding that the TD (aka.,
the "run" of TRBs) was not ready to be consumed, and bailing.

In fact, that very condition (a link TRB leading to an empty TRB)
is precisely what _LinkDescriptorForPipe did before this commit.
We allocate only a small (8 before this commit, 16 + 1 after this
commit) TRB ring for each *endpoint*, and larger ones on a per-*transfer*
basis; and just write Link TRBs onto the Endpoint ring pointing to
the transfer TD, and then one at the end of each transfer TD leading
back to the endpoint ring.

The reason this occured inside usb_disk, and not earlier (e.g.
during descriptor fetching), is that QEMU has special logic around
determining transfer lengths of control transfers which made it
not perform the "TRB valid?" check after evaluating the Link TRB.
So, being implementation-defined behavior, I am guessing that
this same problem was also the cause of boot failures on real
hardware.

This also means that the problem was essentially a race condition,
as if we posted another transfer to the ring before it evaluated
the TRB, it would always work.

The solution of course is to put some valid TRB at the end of
every transfer on the Endpoint ring. A "no-op" would have done
the job (well, maybe not, it appears QEMU does not implement "no-op"
TRBs for some reason), but there was another feature of XHCI
that we did not take advantage of: Event Data TRBs. These provide
the "total transferred length" as well as the status, instead of
the "remaining length" of the final TRB.

This of course required refactoring the use of the CHAIN bit
and the IOC bit (namely, more or less all TRBs save the Event Data
get the CHAIN bit set, and none save Event Data get the IOC bit.)

There was also an update to the XHCI spec since I've last committed here,
so the new comments are in reference to the "XHCI 1.2" spec. (I'll
eventually find time to update the old ones.)

Fixes booting from USB3 on QEMU, and most likely also on
bare metal, where it at least got to usb_disk (it does
not seem to fix the case where usb_disk does not even start.) Whew!
2019-06-16 19:46:16 -04:00
Augustin Cavalier
9be728dee0 XHCI: Set the DCS bit in SetTRDequeue.
It is needed here as in ConfigureEndpoint. See inline comment.
This matches FreeBSD's behavior.
2019-06-16 19:46:16 -04:00
Augustin Cavalier
4029b219e9 XHCI: Fix a -Werror=format. 2019-06-16 19:46:16 -04:00
Murai Takashi
e18440dc83 bin/shutdown: Fix -Wformat=
Change-Id: I03d89d576334fbf73134c79f3c6903860a0d447f
Reviewed-on: https://review.haiku-os.org/c/1513
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-16 22:09:54 +00:00
Murai Takashi
312640b12c bin/version: Fix -Wformat=
Change-Id: I71fd38b6d1bb1782170438b27f66c462dcec0f0b
Reviewed-on: https://review.haiku-os.org/c/1514
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-16 22:09:37 +00:00
Murai Takashi
6ba31e25d7 bin/screenmode: Fix -Wformat=
Change-Id: Ide67c285a064c8e1111e1522be2946f69a5bcfc6
Reviewed-on: https://review.haiku-os.org/c/1512
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-16 14:53:11 +00:00
Murai Takashi
e98c206263 bin/listres: Fix -Wformat=
Change-Id: Ida7d957c9a1f73dc87b7e0ce488c1c30cb5a95cc
Reviewed-on: https://review.haiku-os.org/c/1511
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-16 14:53:11 +00:00
Murai Takashi
b8a9c31265 bin/listfont: Fix -Wformat=
Change-Id: Ifa451635a6ff3d42b916d7e535b41db347d6d1bf
Reviewed-on: https://review.haiku-os.org/c/1510
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-16 14:53:11 +00:00
Murai Takashi
d8bf363563 bin/listport: Fix -Wformat=
Change-Id: I5d080b7cc176681a2addbb03380bde76bc748173
Reviewed-on: https://review.haiku-os.org/c/1509
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-16 14:53:11 +00:00
Murai Takashi
74b56a20ee bin/lsindex: Fix -Wformat=
Change-Id: Ib95180d64547f728949efa64aed57f63aee57441
Reviewed-on: https://review.haiku-os.org/c/1508
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2019-06-16 14:53:11 +00:00
Adrien Destugues
4429c2c891 Terminal: remove fullscreen tooltip
Whenever using Terminal in fullscreen mode, there is a permanently on
tooltip with the shortcut to exit fullscreen mode wherever you leave
your mouse. This is super annoying and as a result I find myself rarely
using fullscreen mode.

Remove the tooltip, and instead add a button to the right of the tab bar
to exit fullscreen mode, as done in WonderBrush and WebPositive.

Change-Id: If42f038da3d644970de6214a31195882d4fc7eee
Reviewed-on: https://review.haiku-os.org/c/1507
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-16 14:51:01 +00:00
Adrien Destugues
f74f860085 BitmapButton: move from WebPositive to libshared
Remove a currently unused copy of it from HaikuDepot.

Change-Id: Idb97fae8e7190da6bc1049b3c1f1df929ea91bab
Reviewed-on: https://review.haiku-os.org/c/1506
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-16 14:51:01 +00:00
Augustin Cavalier
d689db1448 HaikuPortsCross: Synchronize a few more package versions to haikuports.cross. 2019-06-15 20:25:43 -04:00
Augustin Cavalier
8830782a61 RepositoryRules: Error when the just-built package does not exist.
This will make version mismatches between the bootstrap repository
and the haikuports.cross repository more apparent.
2019-06-15 20:24:12 -04:00
Augustin Cavalier
46bca9bd51 kernel: Make exit() stub truly non-returning. 2019-06-15 19:11:51 -04:00
Augustin Cavalier
db408f1835 docker/bootstrap: Add libncurses-dev, needed by texinfo. 2019-06-15 16:21:25 -04:00
Augustin Cavalier
6a9f74bc4f HaikuPortsCross: Tweak the GCC version following changes. 2019-06-15 15:45:18 -04:00
Augustin Cavalier
9bb9cc8896 build_cross_tools_gcc4: Remove the generated static libstdc++.
We always want to use the shared one from the syslibs package,
never the shared one from this build.

Part of #14842: after this change, the ICU build now fails with
"cannot find libstdc++" instead of an invalid symbol.
2019-06-15 15:42:13 -04:00
Augustin Cavalier
4d0fd41d24 kernel/lock.h: Reorder function declarations so the comment is correct. 2019-06-15 12:14:49 -04:00
Augustin Cavalier
03c14d2989 stdlib.h: Add noreturn attribute to exit and _Exit.
Fixes #15110.
2019-06-15 12:14:06 -04:00
Axel Dörfler
7b1178998d bfs: Fixed missing block allocator uninit in case of error
* If Volume::Mount() failed opening the root node, the Volume would be
  destroyed regardless of the fact that the block allocator was
  initializing the bitmap asynchronously.
* For a proper shutdown, the block allocator needs to be uninitialized
  first.
* This should fix #15015.

Change-Id: Ice520a12c5c58c785f391009327becfb1f284bce
Reviewed-on: https://review.haiku-os.org/c/1501
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2019-06-14 15:02:13 +00:00
Adrien Destugues
e5a393474b Add an easy way to test the debug_server crash window.
It's quite annoying to install the new debug_server and test with a
crashing app everytime. So add a DebugWindow app that just shows the
debug window and returns the result.

Change-Id: I7238057a508871ce3fffc493cb73126eb852d99e
Reviewed-on: https://review.haiku-os.org/c/1460
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-08 16:24:17 +00:00
Adrien Destugues
515d86dace debug_server: build a new debug window
Use radio buttons laid out vertically so that locales with long labels
(no short word for "write core file") can still look nice. This is open
for experiment, buttons laid out vertically are another option. At least
now we have a window t work from, as BAlert doesn't cut it here.

While I'm at it, use a ladybug icon for this one, so it's visibly
different from normal application alerts.

Change-Id: I08ba9573f132901484224e107404348e7dca97f4
Reviewed-on: https://review.haiku-os.org/c/1459
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-08 16:24:17 +00:00
Alexander von Gluck IV
1c397f231c rpmalloc: Explicit ptr cast to int32* to quiet down gcc8 errors
Change-Id: I2343a6f2db2f95e33991e16c3a9cbd5445f90790
Reviewed-on: https://review.haiku-os.org/c/1499
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-05 23:11:35 +00:00
kerwizzy
b318ff2a39 Mandelbrot: Fix race conditions and missing initializations.
Change-Id: I64e7bb68631320a7f8d80be25b4011a0332e0348
Reviewed-on: https://review.haiku-os.org/c/1480
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-06-05 23:10:51 +00:00
Alexander von Gluck IV
004b64201f HaikuPortsCross/ppc: Add missing revision to bootstrap package
Change-Id: I4c49429e9c1ccf14d7dcd394cdb5a29b1d097491
2019-06-03 10:07:24 -05:00
Alexander von Gluck IV
9a0d30e76d HaikuPortsCross: Update bootstrap to gcc 8
Change-Id: I45bb16971f84978eb1e97dd491c0c2d7ab90444e
2019-06-03 10:04:52 -05:00
Alexander von Gluck IV
6018afcd9d docker/bootstrap: A few tweaks to your life easier
Change-Id: I591e108f9a5007423a5dee541e94b2be2342c5a8
2019-06-03 08:42:08 -05:00
Alexander von Gluck IV
31c38ae2b1 jam/HeaderRules: Put posix before gcc
* After the gcc 8 upgrade, during bootstrap sources attempt to
  load limits.h from gcc before they use our limits.h override
  resulting in undefined NAME_MAX, PATH_MAX, etc.

Change-Id: I9204410d0543a033e262124eaf7bcde09db26aa9
Reviewed-on: https://review.haiku-os.org/c/1498
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2019-06-03 13:25:48 +00:00
Augustin Cavalier
b22a59f226 HaikuDepot: Notify the user when a reboot is necessary to complete installation. 2019-06-01 17:49:32 -04:00
Augustin Cavalier
63ba21d506 pkgman: Inform the user when a reboot is required to complete installation.
Fixes #14783 following on hrev53005.
2019-06-01 16:19:55 -04:00
Augustin Cavalier
86d552aca2 rpmalloc: Increase the thread cache multiplier somewhat.
Now that the previous commit introduced the adaptive thread cache,
the thread cache multiplier is just a "hard limit", and often
not reached. So we can increase it a bit without adversely
affecting memory usage that much.
2019-06-01 11:30:51 -04:00
Augustin Cavalier
6818450748 rpmalloc: Import adaptive thread cache changes.
This synchronizes to rpmalloc upstream commit
5ffaa237989ac2c74dcd77776e4a3983a387a477.

The primary change in this batch is the "adaptive thread cache",
which was created partially from the use-case of our own Installer,
as mmlr discovered when first testing rpmalloc. Our interim solution
was to tweak the thread cache limits, which helped, but not as
much as this does:

Without patch, default cache multipliers: memory usage peaks at around 227MB.
Without patch, our reduced cache multipliers: memory usage peaks at 37MB.
With patch, default cache multipliers: memory usage peaks at 18MB (!!).
the commit.
2019-06-01 11:30:41 -04:00
Bruno Albuquerque
8c76ab00c4 freebsd_network: Enable memory mapped io and ioport access.
Cofirmed to fix #15016, #15052.
Potentially fixes #14576, #14546, #14298, #14265, #13840.

Change-Id: I27b0bb6692c23aedbdddc70aff9349c713703dd4
Reviewed-on: https://review.haiku-os.org/c/1497
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-05-31 17:02:48 +00:00
Axel Dörfler
7c2135591b KDiskDeviceManager: Ignore invalid partitions
* Partitions with negative offsets were already ignored, now also ignore
  those with an invalid size of block size, too.

Change-Id: I128e38773933f8eadded0977a957f607363cccbe
Reviewed-on: https://review.haiku-os.org/c/805
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
2019-05-30 23:04:53 +00:00
Jérôme Duval
7f8f4c9c8c tty: some improvements to pass posix_openpt_test.
WriterLocker::AcquireWriter(): don't fail when the other end isn't yet opened.
WriterLocker::_CheckBackgroundWrite(): don't fail when the pgrp_id differs.
ReaderLocker::AcquireReader(): fail when the other end isn't opened anymore.
ReaderLocker::AcquireReader(): check available bytes even in case of failure.
ReaderLocker::_CheckBackgroundRead(): don't fail when the pgrp_id differs.

Change-Id: Ice2bd119cbec2afc9ebd40714e4307856f540ea2
Reviewed-on: https://review.haiku-os.org/c/1418
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2019-05-29 17:02:56 +00:00
Jérôme Duval
ec1d063cdd ahci: handle partial inquiry requests.
* it seems 36 bytes is the length of a short inquiry request, so use that.
* also remove a data_length check on SCSI_DIR_IN, a zero value is actually
allowed.

Change-Id: I6618f59626c2540d95b5a8b900d758ec65b11b24
Reviewed-on: https://review.haiku-os.org/c/1487
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2019-05-29 17:02:13 +00:00
Jérôme Duval
88e34b3b3d scsi: use get_memory_map_etc().
get_memory_map_etc() allows to not need an additional empty entry.
also fix a TODO

Change-Id: I1b5dc3e65267ccba2a21c7162cfc2504b16ad8f7
Reviewed-on: https://review.haiku-os.org/c/1490
Reviewed-by: Rene Gollent <rene@gollent.com>
2019-05-28 17:43:10 +00:00
Jérôme Duval
e5b82f8034 scsi: change sg_count to uint32.
coding style.

Change-Id: Ie2e1a71e55b8fe8ac984d47b9b97409b1e436b69
Reviewed-on: https://review.haiku-os.org/c/1489
Reviewed-by: Rene Gollent <rene@gollent.com>
2019-05-28 17:43:10 +00:00
Jérôme Duval
061236d419 scsi_cd: reset io_scheduler and dma_resource on uninit.
it seems possible that a file descriptor is still opened after the device
is uninited. at least handle properly the situation.
help with #15089

Change-Id: I76fb41a8439ab7350ce4d781511aceb6496847c3
Reviewed-on: https://review.haiku-os.org/c/1486
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2019-05-27 16:42:20 +00:00