libstand's qdivrem.c assumes that sizeof(int) == sizeof(long), this is not
true on amd64 I'm not quite positive this is the "correct" solution for
this but it does seem to compile and shut up the spew of warnings when
compiling libstand for userboot.
Add two _Static_asserts() so that in the future somebody will get a compile
failure if an architecture develops that violates the assumptions of this
code. (strongly suggested by jmg)
Change commetns to indicate int types instead of long. (noted by ian in
phabric review)
Phabric: https://phabric.freebsd.org/D443
r269029 (sbruno):
Update so that clean target in sys/boot will delete the symlink
created for machine
r269036 (sbruno):
Delete the entire cleandepend/cleanmachine target thing now that its
been cleared out in r269029
A 32-bit libstand is needed on 64-bit platforms for use by various
bootloaders. Previously only the 32-bit version was built, installed
as /usr/lib/libstand.a.
A new 64-bit libstand consumer will arrive in the near future, so move
the bootloader-specific 32-bit version to sys/boot/libstand32/.
Explicitly link against this version in the 32-bit loaders.
r261614: Build a 32-bit libstand under sys/boot/ for ppc64
This change is equivalent to r261567 for i386/amd64.
Relnotes: Yes
Sponsored by: The FreeBSD Foundation
These are largely dumbbell@'s changes. Most significantly they address
the extreme performance degradation with VGA hardware.
SVN revisions in this MFC:
269471 270290 270293 270322 270324 270329 270331 270336 270338 270340
270341 270342 270343 270388 270390 270404 270411 270412 270413 270431
270446 270448 270485 270587 270589 270613 270618 270620 270667 270702
270707 270708 270720 270721 270785 270786
Detailed commit list:
r270290: Test if the cursor is shown only once
Later, we just see if the "struct mouse_cursor" pointer is set. This
avoids the need to mess with all the conditions several times; this
has been error prone.
While here, rename the variable "m" to a more meaningful "cursor",
like it's done elsewhere in the code.
r270293: Rename the "mouse_cursor" structure to "vt_mouse_cursor"
At the same time, "w" and "h" members are now called "width" and
"height". The goal is to have a more "public" structure, because it
will soon be passed as argument to a new callback, replacing
vd_bitbltchr_t.
r269471 (ray):
Fix vt_vga driver to draw not-8-bit-aligned fonts correctly.
Still one bug here: mouse left some gaps on track when moving left.
r270322:
Add new vd_bitblt_text_t callback, and implement it for vt_vga
Compared to the deprecated vd_bitbltchr_t callback, vd_bitblt_text_t
receives:
o the whole text buffer
o the dirty area
o the mouse cursor (map, position, colors)
This allows the backend to perform optimization on how to draw things.
The goal is to remove vd_bitbltchr_t and vd_putchar_t, once all driver
are converted (only vt_vga is included in this commit).
In vt_vga, this allows to draw the text and the cursor in one pass,
without ever reading from video memory (because it has all the context).
The main benefit is the speed improvement: no more slideshow during
boot!
Other bugs fixed in vt_vga are:
o left-most characters are drawn properly (the left-most pixels were
missing with bold characters and some wide letters such as 'm')
o no more black square around the cursor
o no cursor flickering when the text is scrolling
There are still many problems to fix: the known issues are marked with
"FIXME" inside the code.
r270411:
vt_fb: Implement vd_bitblt_text_t for vt_fb and derivatives
r270412:
creator_fb: Implement vd_bitblt_text_t
r270413: ofwfb: Implement vd_bitblt_text_t
r270324: vt_vga: Clip the draw area to never draw offscreen
This fixes a bug when two windows use different fonts, but a longer-
term solution is required. The dirty area should be stored as pixels,
not character cells, because such coordinates don't have the same
meaning in all windows, when using different fonts.
r270329: Mark new mouse position as dirty only when it's actually displayed
r270331: Store cursor bitmap & colors in struct vt_device
This removes the need to specify them to each call to vd_bitblt_text_t
and, therefore, simplifies the API.
r270336: Give the window to vd_bitblt_text_t callback
... instead of both the buffer and the font. Again, this simplifies
the API.
r270338: The offset to center the text area is per-window now
The previous global offset, based on the last loaded font, had no
meaning for other windows. This caused a shifted text area, often
partly out-of-screen.
r270341: vt_vga: Remove a "FIXME" comment; the issue was solved in r270338
r270340: Don't run vt_set_border() and vt_flush() concurrently
In the case of vt_vga, the two concurrent calls were writing to the
same VGA registers, causing incorrect refresh of the screen.
r270342: Use the actual size of the mouse when marking its position as dirty
This fixes a bug where part of the cursor was not erased.
r270343: Remove "FIXME" about multiple locking of vt_buf in vt_flush()
After some testing, it appears that acquiring the lock once and keeping
it longer is slower than taking it multiple times.
While here, fix a typo in another comment.
r270388: vt_vga: Give only the character part of term_char_t to vga_get_cp437()
This fixes a bug where vga_get_cp437() was called with an invalid
argument. The screen was then filled with '?' instead of the actual
character.
r270390: Fix a crash in vt_mark_mouse_position_as_dirty() when in textmode
In textmode, no font is loaded, thus the page fault in
vt_mark_mouse_position_as_dirty() when it wants the font width/height.
For now, create a fake area for the textmode. This needs to be
modified if vt_vga gains mouse support in textmode.
While here, fix a build failure when SC_NO_CUTPASTE is defined:
vt_mark_mouse_position_as_dirty() must not be included in this case.
r270404: Fix cursor handling in vt_flush()
There were situations where the cursor was not erased/redrawn or its
position was marked as dirty even though it's not displayed. The code
is now more straightforward.
At the same, add a function to determine if the cursor covers a given
area. This is used by backends to know if they need to draw the
cursor.
This new function should be paired with a new state in struct
vt_device, called vd_mshown, which indicates if the cursor should be
displayed. This again simplifies vd_bitblt_text_t callback's API.
r270431: vt(4): Add vd_bitblt_bmp_t callback
The code was already there in all backends, we just expose it. This is
used to display the splash screen.
r270446: Remove vd_bitbltchr_t
It's replaced by vd_bitblt_text_t, which gives more context to the
backend and allows it to perform more efficiently when redrawing a
given area.
r270448: Fix order of arguments (x <-> y) when showing the splash screen
r270485: vt_vga: Fix the display of the splash screen
r270587: Take font offset into account in vt_is_cursor_in_area()
This fixes a "General protection fault" in vt_vga, where
vt_is_cursor_in_area() erroneously reported that the cursor was over
the text. This led to negative integers stored in "unsigned int" and
chaos.
r270589: The cursor coordinates are relative to the drawn area
... not the whole screen. Don't use font offsets in
vt_mark_mouse_position_as_dirty().
This fixes a bug where the mouse position wasn't marked as dirty when
approaching the borders of the drawn area.
r270613: Store a rectangle for the drawable area, not just the top-left corner
This allows backends to verify they do not draw outside of this area.
This fixes a bug in vt_vga where the text was happily drawn over the
right and bottom margins, when using the Gallant font.
r270618: Intialize drawable area rectangle each time a font is loaded
This also fixes a problem where early in boot, the area was zero,
leading to nothing displayed for a few seconds.
r270620: vt_vga: Use Write Mode 0 to draw group of 8 pixels using 3 or more colors
This replaces the method based on Write Mode 3, which required reads
from the video memory to load the latches.
r270667: When creating a window buffer, fill it entirely
... not just the visible part.
This fixes a bug where, when switching from eg. vt_vga to vt_fb (ie.
the resolution goes up), the originally hidden, uninitialized area of
the buffer is displayed on the screen. This leads to a missing text
cursor when it's over an unitialized area.
This was also visible when selecting text: the uninitialized area was
not highlighted.
Internally, this area was zeroed: characters were all 0x00000000,
meaning the foreground and background color was black. Now, everything
is filled with a space with a gray foreground color, like the visible
area.
While here, remove the check for the mute flag and always use
TERMINAL_NORM_ATTR as the character attribute (ie. gray foreground,
black background).
r270702: Implement basic support for KDSETMODE ioctl
With the current implementation, this allows an X11 server to tell
the console it switches a particular window in "graphics mode". This
information is used by the mouse handling code to ignore sysmouse events
in the window taken by the X server: only him should receive those
events.
r270707: Pause the vt_flush() timer when the screen is up-to-date
The timer is restarted whenever a window buffer is marked as dirty or
the mouse cursor moves.
There's still room for improvement. For instance, we should not mark a
window buffer as dirty when this window isn't displayed.
r270708: vt(4): Recompute the drawable area when the resolution changes
This was only done when the font changed.
r270720: vt(4): Fix mouse cursor handling in vt_fb/creator_vt/ofwfb
There were two issues:
1. The area given to vt_is_cursor_in_area() was adding the drawable
area offset, something already handled by this function.
2. The cursor was shifted on the screen by the offset of this area
and thus was misplaced or not erased. Furthermore, when reaching
the bottom or right borders, the cursor was either totally
removed or not erased correctly.
r270721: vt(4): If the terminal shrinks, make sure the mouse is inside
the new area
r270785: vt(4): Change vb_history_size from "int" to "unsigned int"
CID: 1230002, 1230003
r270786: Indicate that KDSETRAD case falls through the next case
CID: 1229953
Relnotes: Yes
- Update the OFED Linux Emulation layer as a preparation for a
hardware driver update from Mellanox Technologies.
- Remove empty files from the OFED Linux Emulation layer.
- Fix compile warnings related to printf() and the "%lld" and "%llx"
format specifiers.
- Add some missing 2-clause BSD copyrights.
- Add "Mellanox Technologies, Ltd." to list of copyright holders.
- Add some new compatibility files.
- Fix order of uninit in the mlx4ib module to avoid crash at unload
using the new module_exit_order() function.
Sponsored by: Mellanox Technologies
The goal is to clear the video memory, in case an application drew to
it. So the content shouldn't be loaded in the latches, it can't be
trusted anyway.
This improves a bit the window switch speed.
Sponsored by: The FreeBSD Foundation
The same functionality can be obtained by testing for mask != NULL in
vd_bitbltchr, which all implementations of vd_bitbltchr() were doing
anyway.
Sponsored by: The FreeBSD Foundation
Set fb_pbase properly on PowerPC in the case where we have to guess at
the right register bank for the framebuffer. Disable the assigned-
addresses path on SPARC since it is just a hack for IBM PPC systems
and was neither relevant for nor worked on SPARC anyway.
Sponsored by: The FreeBSD Foundation
r268472 (ray):
Should check fb_read method presence instead of double check for fb_write.
r269620 (nwhitehorn):
Retire various intertwined bits of fbd(4) and vt_fb, in particular the
pixel modification indirection. No actual drivers use it and those
that might (e.g. creatorfb) use custom implementations of
vd_bitbltchr().
Relnotes: No
Sponsored by: The FreeBSD Foundation
Make mmap() of the console device when using ofwfb work like other
supported framebuffer drivers. This lets ofwfb work with
xf86-video-scfb and makes the driver much more generic and less
PCI-centric. This changes some user-visible behavior and will require
updates to the xorg-server port on PowerPC when using ATI graphics
cards.
Relnotes: Yes
Sponsored by: The FreeBSD Foundation
Allow mappings of memory not previously direct-mapped by the kernel when
calling mmap on /dev/mem and add a handler for the possible userland
machine checks that may result. Remove some pointless and wrong copy/paste
that has been in here for a decade as well.
This results in a /dev/mem with identical semantics to the x86 version.
r269601 (nwhitehorn):
Add a simple unaccelerated vt(4) framebuffer driver for Sun
framebuffers handled by creator(4) (Sun Creator 3D, Elite 3D, etc.).
This provides vt(4) consoles on all devices currently supported by
syscons on sparc64. The driver should also be easily adaptable to
support newer Sun framebuffers such as the XVR-500 and higher.
Many thanks to dumbbell@ (Jean-Sebastien Pedron) for testing this
remotely during development.
r269783 (dumbbell):
vt(4): Colors are indexed against a console palette, not a VGA palette
Sponsored by: The FreeBSD Foundation
r265871 (nwhitehorn):
Move the PS3 framebuffer console to use vt instead of syscons and
adjust GENERIC64 for PowerPC to use vt with it.
Much to my chagrin, PS3 support seems to have bitrotted somewhat since
the last time I tried it. ehci panics on attach and interrupt handling
seems to be faulty. This should be fixed soon...
r269783 (dumbbell):
Fix two files forgotten in r269783 (vt_generate_cons_palette)
r268895 (nwhitehorn):
Enable X11 via xf86-video-scfb on the Playstation 3. This commit made
from an xterm running for the first time on said Playstation.
Approved by: nwhitehorn
Relnotes: yes
- add comments which describe exit status codes of /usr/sbin/bhyve
- move bhyvectl --destroy outside of the while loop
- Use "file -s" so that we can run vmrun.sh against special devces such as
/dev/md memory files systems or zvols
In r253839 the default behaviour of ld(1) was changed such that all
libraries that need to be linked into an executable or library have to be
listed on the command line explicitly. This commit fixes a bug in ld(1)
where it would scan dependencies of the libraries on the command line and
link them if needed if they were also found in ld.so.cache.
The important bit of the patch is the initialisation of needed.by such that
libraries found by scanning dependencies are marked as such and not used in
the link.
The patch is a backport of binutils git commit
d5c8b1f8561426b41aa5330ed60f578178fe6be2
The author gave permission to use it under GPLv2 terms.
PR: 192062
MFC r270653: Update man-pages to correctly refer to changed pathes and namin
MFC r270657: More man pages that need to know about vt in addition to syscon
MFC r270659: (by pluknet@) Missed comma.
MFC r270660: Back-out the references to vt(4) from this man-page. It appears
MFC r270933: Add references to vt(4) to further man-pages.
MFC r270934: Final patches to the tools used to convert syscons keymaps for
MFC r270935: Add vt(4) support to the console initialisation script, specifi
Second batch of MFCs to add support for Unicode keymaps for use with vt(4).
It contains the following changes:
- Add references to vt(4) to relevant man-pages.
- Update comment in defaults/rc.conf to mention vt
- Update rc.d/syscons to warn about syscons keymaps used under vt.
An attempt is made to identify the vt keymap to load instead.
- Minor changes to the conversion tool based on mail comments on keymaps.
Relnotes: yes
Change file permissions for some setuid executables so they are "o+r".
The executable itself doesn't contain any privileged information.
An example of where this is useful is when makefs(8) is creating an image
that includes /sbin/shutdown. This can now be done without root privileges.
Minor space/tab cleanups.
Most of them were ripped from the GSoC 2104
SMAP + kpatch project (but unrelated).
Only cosmetic changes.
Taken from: Oliver Pinter (op@)
For reasons which are not clear, r254263 broke some PCMCIA and CardBus
bridges in strange ways, either rendering them unable to detect
insertion and removal events, or possibly unable to read from the
device behind the bridge.
This fixes at least one laptop, a Toshiba Tecra M5 with a Texas
Instruments PCxx12 (d=0x8039 v=0c104c) bridge. The very similar
Tecra M9 has the same bridge, but worked fine without this change.
The bridge chip has no I/O port BAR, and there is nothing in the spec
to suggest I/O decoding should be enabled; however enabling it fixes
the issue. Add an XXX comment to this effect.
Discussed with: jhb, imp
- Nuke unused sdhci_softc.
- Static'ize sdhci_debug local to sdhci.c.
- Const'ify PCI device description strings.
- Nuke redundant resource ID members from sdhci_pci_softc.
- Nuke unused hw.sdhci_pci.debug tunable.
- Add support for using MSI instead of INTx, controllable via the tunable
hw.sdhci.enable_msi (defaulting to on) and tested with a RICOH R5CE823 SD
controller.
- Use NULL instead of 0 for pointers.