nwhitehorn [Sat, 1 Feb 2014 17:41:54 +0000 (17:41 +0000)]
Provide a simpler and more standards-compliant simplebus implementation to
get the Routerboard 800 up and running with the vendor device tree. This
does not implement some BERI-specific features (which hopefully won't be
necessary soon), so move the old code to mips/beri, with a higher attach
priority when built, until MIPS interrupt domain support is rearranged.
nwhitehorn [Sat, 1 Feb 2014 17:17:35 +0000 (17:17 +0000)]
Open Firmware interrupt specifiers can consist of arbitrary-length byte
strings and include arbitrary information (IRQ line/domain/sense). When the
ofw_bus_map_intr() API was introduced, it assumed that, as on most systems,
these were either 1 cell, containing an interrupt line, or 2, containing
a line number plus a sense code. It turns out a non-negligible number of
ARM systems use 3 (or even 4!) cells for interrupts, so make this more
general.
jhibbits [Sat, 1 Feb 2014 02:03:50 +0000 (02:03 +0000)]
Add hwpmc(4) support for the PowerPC 970 class processors, direct events.
This also fixes asserts on removal of the module for the mpc74xx.
The PowerPC 970 processors have two different types of events: direct events
and indirect events. Thus far only direct events are supported. I included
some documentation in the driver on how indirect events work, but support is
for the future.
jamie [Fri, 31 Jan 2014 17:39:51 +0000 (17:39 +0000)]
Back out r261266 pending security buy-in.
r261266:
Add a jail parameter, allow.kmem, which lets jailed processes access
/dev/kmem and related devices (i.e. grants PRIV_IO and PRIV_KMEM_WRITE).
This in conjunction with changing the drm driver's permission check from
PRIV_DRIVER to PRIV_KMEM_WRITE will allow a jailed Xorg server.
imp [Fri, 31 Jan 2014 15:38:05 +0000 (15:38 +0000)]
Switch to using PAs rather than VAs for the addresses we map for
devices. This is a nop, except for what's reported by atmelbus for the
resources.
It would be nice if we could dymanically allocated these things, but
the pmap_mapdev panics if we don't keep the static mappings, so we
still need to play the carefully allocate VA space between all
supported SoC game.
User's with their own devices may need to make adjustments.
Add an option WITHOUT_NCURSESW to suppress building and linking to
libncursesw. While wide character support it useful we'd like to
only need one ncurses library on embedded systems.
jhb [Wed, 29 Jan 2014 14:56:48 +0000 (14:56 +0000)]
Enhance the support for PCI legacy INTx interrupts and enable them in
the virtio backends.
- Add a new ioctl to export the count of pins on the I/O APIC from vmm
to the hypervisor.
- Use pins on the I/O APIC >= 16 for PCI interrupts leaving 0-15 for
ISA interrupts.
- Populate the MP Table with I/O interrupt entries for any PCI INTx
interrupts.
- Create a _PRT table under the PCI root bridge in ACPI to route any
PCI INTx interrupts appropriately.
- Track which INTx interrupts are in use per-slot so that functions
that share a slot attempt to distribute their INTx interrupts across
the four available pins.
- Implicitly mask INTx interrupts if either MSI or MSI-X is enabled
and when the INTx DIS bit is set in a function's PCI command register.
Either assert or deassert the associated I/O APIC pin when the
state of one of those conditions changes.
- Add INTx support to the virtio backends.
- Always advertise the MSI capability in the virtio backends.
jamie [Wed, 29 Jan 2014 13:41:13 +0000 (13:41 +0000)]
Add a jail parameter, allow.kmem, which lets jailed processes access
/dev/kmem and related devices (i.e. grants PRIV_IO and PRIV_KMEM_WRITE).
This in conjunction with changing the drm driver's permission check from
PRIV_DRIVER to PRIV_KMEM_WRITE will allow a jailed Xorg server.
des [Wed, 29 Jan 2014 12:48:19 +0000 (12:48 +0000)]
r261230 broke the cases where the amount of data to be read is not
known in advance, or where the caller doesn't care and just keeps
reading until it hits EOF.
In fetch_read(): the socket is non-blocking, so read() will return 0
on EOF, and -1 (errno == EAGAIN) when the connection is still open but
there is no data waiting. In the first case, we should immediately
return 0. The EINTR case was also broken, although not in a way that
matters.
In fetch_writev(): use timersub() and timercmp() as in fetch_read().
In http_fillbuf(): set errno to a sensible value when an invalid chunk
header is encountered.
In http_readfn(): as in fetch_read(), a zero return from down the
stack indicates EOF, not an error. Furthermore, when io->error is
EINTR, clear it (but no errno) before returning so the caller can
retry after dealing with the interrupt.
hselasky [Wed, 29 Jan 2014 12:34:05 +0000 (12:34 +0000)]
- Remove some dead code.
- Use system provided functions for HID report requests.
- Nice the mode setting, because the USB hardware does appear to
handle the commands right away.
peter [Tue, 28 Jan 2014 22:23:39 +0000 (22:23 +0000)]
Speculatively replace a cp with a cat for gathering data on a
sporadic parallel build failure in the FreeBSD cluster on many-core
systems with ZFS. cp uses mmap in this scenario, cat does not.
kaiw [Tue, 28 Jan 2014 21:38:54 +0000 (21:38 +0000)]
Merge from projects/elftoolchain: Upgrade libelf and libdwarf to newer
versions from elftoolchain upstream (r2974). Convert ctfconvert to
use the APIs from the new libdwarf and make ctfconvert work with Clang
3.4.
* The old libelf source code in lib/libelf has been removed.
Instead, the new libelf is built from contrib/elftoolchain/libelf.
* Manual pages are largely improved.
* Internal implementation was refactored and improved for better
correctness and portability.
* Fixed a few memory leaks.
* Extended with extension APIs `elf_open()` and `elf_openmemory()`.
These APIs are similar to `elf_begin()` and `elf_memory()`
respectively, except that they return an ELF descriptor of kind
`ELF_K_NONE` instead of an error if the object being opened could
not be parsed.
* Implement support for translating sections of type ELF_T_VDEF and
ELF_T_VNEED.
* Improve `elf_update()` to check that the executable header, the
program header table, section contents and the section header table
do not overlap, and to ensure that gaps between extents are
filled with the fill character specified by `elf_fill()`.
* Allow `Elf_Data` descriptors to have types and alignments differing
from their containing section.
* Remove functionality controlled by `LIBELF_TEST_HOOKS`.
* Support processing of BSD-flavor archives.
* Add knowledge of section types `SHT_GNU_ATTRIBUTES` and
`SHT_GNU_LIBLIST`.
* Use elftoolchain style symbol versioning.
* Shared library version is bumped.
[libdwarf]
* The old libdwarf source code in lib/libdwarf has been removed.
Instead, the new libdwarf is built from contrib/elftoolchain/libdwarf.
* Support full DWARF3 and partial DWARF4 parsing.
* Support DWARF2 generation.
* Support for DWARF line number, call frame, location expression,
macro info and address ranges, among other things.
* The APIs for the new libdwarf are mostly compatible with the widely
used LGPL libdwarf. Some of the incompatible APIs from the old
libdwarf are kept as its own extensions. All the APIs are documented.
* Use elftoolchain style symbol versioning.
* Shared library version is bumped.
[ctfconvert]
* Switch to the APIs from the new libdwarf.
* Improve die_mem_offset() so that DW_AT_data_member_location attributes
generated by Clang 3.4 can be handled properly.
* Make use of DW_AT_byte_size attribute of the member DIE to calculate
the bits occupied by the member's type, without actually resolving
the type. This way ctfconvert can deal with the case that Clang 3.4
sometimes emits DIE for struct/union member before emitting the DIE
for the type of that member.
Obtained from: elftoolchain
No objection: -toolchain mailing list
peter [Tue, 28 Jan 2014 21:13:15 +0000 (21:13 +0000)]
Adjust r239672 from rrs and r258821 from eadler.
By definition, the very first FIN is not a duplicate. Process it normally
and don't feed it to congestion control as though it were a dupe. Don't
prevent CC from seeing later dupe acks while in a half close state.
jhb [Tue, 28 Jan 2014 20:53:33 +0000 (20:53 +0000)]
Some BIOSes incorrectly use standard memory resource ranges to list
the memory ranges that they decode for downstream devices rather than
creating ResourceProducer range resource entries. The result is that
we allocate the full range to the PCI root bridge device causing
allocations in child devices to all fail.
As a workaround, ignore any standard memory resources on a PCI root
bridge device. It is normal for a PCI root bridge to allocate an I/O
resource for the I/O ports used for PCI config access, but I have not
seen any PCI root bridges that legitimately allocate a memory resource.
gnn [Tue, 28 Jan 2014 20:28:32 +0000 (20:28 +0000)]
Decrease lock contention within the TCP accept case by removing
the INP_INFO lock from tcp_usr_accept. As the PR/patch states
this was following the advice already in the code.
See the PR below for a full disucssion of this change and its
measured effects.
pfg [Tue, 28 Jan 2014 14:39:05 +0000 (14:39 +0000)]
ext2fs: Use i_flag instead of i_flags for Ext4 inode flags.
The ext4 inode flags do not have equivalents for chflags (1)
and hold information that is private to the implementation.
The i_flag field in the inode is a better place to hold the Ext4
inode flags as it saves us from masking flags while setting or
getting attributes. It should also make things cleaner if we
implement write support for Ext4.
Suggested by: bde
Tested by: Mike Ma
MFC after: 3 days
des [Tue, 28 Jan 2014 14:32:04 +0000 (14:32 +0000)]
Increase the default (and minimum) buffer size from 4 kB to 16 kB. Also,
propagate the buffer size to libc, which uses a 1 kB buffer by default,
negating any hypothetical benefit of increasing fetch(1)'s buffer size.
des [Tue, 28 Jan 2014 12:48:17 +0000 (12:48 +0000)]
Solve http buffering issues and hangs once and for all (hopefully!) by
simply not trying to return exactly what the caller asked for - just
return whatever we got and let the caller be the judge of whether it
was enough. If an error occurs or the connection times out after we
already received some data, return a short read, under the assumption
that the next call will fail or time out before we read anything.
As it turns out, none of the code that calls fetch_read() assumes an
all-or-nothing result anyway, except for a couple of lines where we
read the CR LF at the end of a hunk in HTTP hunked encoding, so the
changes outside of fetch_read() and http_readfn() are minimal.
hselasky [Tue, 28 Jan 2014 09:55:07 +0000 (09:55 +0000)]
When detaching a [USB] keyboard, keys might still be pressed. Ensure
that all pressed keys are released before completing the USB keyboard
detach. This will prevent so-called "ghost-keys" from appearing after
that the USB device generating the key event(s) has been detached.
csjp [Tue, 28 Jan 2014 01:49:49 +0000 (01:49 +0000)]
Allow sigwait(2) in capabilities mode.
It's common for multi-threaded processes to create a thread for
the purpose of synchronously processing signals. Allow such processes to
utilize a capabilities sandbox.
jhb [Mon, 27 Jan 2014 22:26:15 +0000 (22:26 +0000)]
Remove support for legacy PCI devices. These haven't been needed since
support for LPC uart devices was added and it conflicts with upcoming
patches to add PCI INTx support.
jilles [Sun, 26 Jan 2014 22:49:24 +0000 (22:49 +0000)]
login: Clean up PAM and audit, then exit, on SIGHUP and SIGTERM.
This avoids leaving stale entries in utmpx after the connection is closed on
an open login session. It also allows a clean way (SIGTERM) to forcibly
terminate a user's terminal session.
This does not affect the situation for "hung" processes after the connection
is closed. The foreground process group receives SIGHUP and the tty becomes
inaccessible.
Also replace all use of the obsolete signal() function with sigaction() (not
only the part where it is actually required: SIGHUP and SIGTERM must mask
the other as well when caught).