summaryrefslogtreecommitdiff
path: root/sys
AgeCommit message (Collapse)Author
2017-02-09Unbreak 'netstat -g' and make multicast route stats sysctl more robust.Rafael Zalamena
ok mpi@
2017-02-09percpu counters for divert(4) statsJeremie Courreges-Anglas
ok dlg@
2017-02-09percpu counters for raw ipv6 and icmp6 statsJeremie Courreges-Anglas
ok mpi@
2017-02-09percpu counters for TCP statsJeremie Courreges-Anglas
ok mpi@ bluhm@
2017-02-09Temporarily grab the NET_LOCK() around soisdisconnected().Martin Pieuchot
This makes a (wrong) assert disappear and makes sure we hack to avoid a recursion in the upcall case still work. The real solution to this problem is to not grab the NET_LOCK() before entering uipc_usrreq(). Issue reported by dtucker@
2017-02-09Release the NET_LOCK() before calling unp_detach(), fix a recursionMartin Pieuchot
found by dtucker@
2017-02-09Replace a custom loop calling yield() by the idiom to check if theMartin Pieuchot
current process is hogging a CPU. ok mikeb@, visa@, tedu@
2017-02-09Do no select a CPU to execute the current thread when being preempt()ed.Martin Pieuchot
Calling sched_choosecpu() at this moment often result in moving the thread to a different CPU. This does not help the scheduler and creates a domino effect, resulting in kernel thread moving to other CPUs. Tested by many without performance impact. Simon Mages measured a small performance improvement and a smaller variance with an http proxy. Discussed with kettenis@, ok martijn@, beck@, visa@
2017-02-09Put back a return that I have removed by accident.Alexander Bluhm
2017-02-08Remove support for forcing the ELF interpreter to a specific address,Philip Guenther
last used by COMPAT_SYSV which was removed in 2011. ok millert@
2017-02-08Delete the obsolete fork/exec/exit emulation hooks.Philip Guenther
ok mpi@ dlg@
2017-02-08Improve error handling for poll timeoutsMike Belopuhov
2017-02-08Specify the read/write DMA flag for bounce buffersMike Belopuhov
2017-02-08Cleanup the device removal pathMike Belopuhov
When destroying the ring all transfers should be already gone so there should be no need to repeat ourselves after xbf_stop has done its work. Get rid of the yield() that was probably masking some issues that have been since fixed.
2017-02-08Switch to Xen interrupt barrier and improve state transitionsMike Belopuhov
2017-02-08Abort transactions with non-retriable error when device is stoppedMike Belopuhov
2017-02-08Switch to Xen interrupt barrierMike Belopuhov
2017-02-08Introduce Xen interrupt barriersMike Belopuhov
intr_barrier(9) is useful to make sure that after an interrupt is masked, the interrupt handler for the device has finished executing before proceeding with further device configuration. However, since Xen interrupt handlers run in the thread context, we need to make sure that they have finished as well. By scheduling a xen_barrier_task modelled after (or rather copied ;) ifq_barrier_task we can ensure that the interrupt handler is no longer running.
2017-02-08Fixup incorrect test when allocating grant table entriesMike Belopuhov
An xnf & xbf attach/detach loop has revealed that sometimes when we're about to free a grant table entry that is still in use which is a grave mistake code wise. Turned out we could allocate an entry twice because of an incorrect test that took flags value into account when making the decision regarding availability of a given entry. At the same time, upon releasing the entry we explicitly CAS in 0 into the flags making this check bogus. While here be explicit about starting flags by initializing them to 0 and always panic when the "double free" condition is encountered. rzalamena@ has lent me his eyes and has double-checked the condition.
2017-02-08Now pcexmem(4) and pcexio(4) are attached at cbus(4), we do not need toKenji Aoyama
include "pcex.h" here.
2017-02-08Remove the ipsec protocol callbacks which all do the same. ImplementAlexander Bluhm
it in ipsec_common_input_cb() instead. The code that was copied to ah6_input_cb() is now in ip6_ours() so we can call it directly. OK mpi@
2017-02-08Pass the physical address to the end of symbols to the kernel. FromPatrick Wildt
armv7 we inherited the mechanism to manually modify the kernel symbol table to change the value of esym. We don't use this, but instead use the virtual address that is passed to the kernel. This change makes us only work on and hand out physical addresses. Bump the efiboot version to make this ABI change more visible.
2017-02-08Retry BS->ExitBootServices() if it fails, like on amd64. Also we needPatrick Wildt
to make sure to pass the current mapkey to prove EFI that we know the current memory map and its constraints. Otherwise EFI can choose to only partially exit until we pass the correct key. As we already use the memory map to allocate memory for the kernel, split the previous function into one simply retrieving the table and another one who uses the map to allocate memory. At some point it would be nice to actually pass the table to the kernel since its data is more reliable than the FDT only. While there, sync a bit of style with the amd64 version.
2017-02-08fix a mixup of lengths of addresses and lengths in the aen_start sglDavid Gwynne
basically use htolem64 to set the address and htolem32 for the length, not the other way round. lucky this is mostly run on x86. found by Jon Kloske
2017-02-08the splvm() in pool_gc_pages is unecessary now.David Gwynne
all pools set their ipls unconditionally now, so there isn't a need to second guess them. pointed out by and ok jmatthew@
2017-02-08In exec_elf.c: expand ELFNAME(), ELFNAME2(), and ELFNAMEEND() exceptPhilip Guenther
leaving out the size, so that ELFNAME2(exec,makecmds) becomes exec_elf_makecmds instead of exec_elf{32,64}_makecmds and then delete the ELFNAME2() and ELFNAMEEND() macros. Move the prototypes for functions local to exec_elf.c to there from exec_elf.h. Simplify the SMALL_KERNEL conditionals around the ELF coredump code. Change exec_conf.c to use the size-generic names and macros Remove exec_elf{32,64}.c and just build exec_elf.c; delete the _KERN_DO_ELF and _KERN_DO_ELF64 #defines. ok jca@, encouragement from deraadt@ and tom@
2017-02-08Move ELF_AUX_ENTRIES from exec_elf.h to exec_elf.c; it's totally internalPhilip Guenther
and not something we guarantee to userspace ok jca@
2017-02-08Change ELFNAME(read_from)'s buf parameter to be void*, eliminating a castPhilip Guenther
from all but one call ok jca@
2017-02-08elf{32,64}_check_brand() isn't used; delete itPhilip Guenther
ok jca@
2017-02-08Provide size-generic ELF_NO_ADDR in <sys/exec_elf.h> and use that insteadPhilip Guenther
of ELFDEFNNAME(NO_ADDR) ok jca@
2017-02-08Use ELF_ST_{BIND,TYPE} instead of ELFDEFNNAME(ST_{BIND,TYPE})Philip Guenther
ok jca@
2017-02-08Retry BS->ExitBootServices() if it fails.YASUOKA Masahiko
Reported by Ryan, pulse.purge at gmail.com
2017-02-08Move a pointer deref to after a NULL test.Jonathan Gray
ok krw@
2017-02-08Test for NULL before dereferencing a pointer not after.Jonathan Gray
ok krw@
2017-02-08Remove an uneeded NULL test which was after a deref.Jonathan Gray
ok mpi@ henning@ sashan@
2017-02-07Since the instruction cache does not in any way snoop the data cachePatrick Wildt
we need to make sure to clean the data and invalidate the instruction cache upon entering a page with pmap_enter(). Since it is possible that pmap_enter() does not directly enter the page, we need to do the same dance in the pmap fault fixup code. Every new writeable mapping or write removes a page's flag to mark it unflushed. The next time pmap_enter() is called or a fault happens on that VA, it has to be flushed and invalidated again. This was heavily discussed with Dale Rahn. On the Pine64 and Raspberry Pi 3 we have been very lucky to not run into any cache issues, especially with the instruction cache. The AMD Seattle seems to be a different kind of beast where we actually have to care about these things. This finally brings the machine into userland.
2017-02-07Use percpu counters for icmpJonathan Matthew
ok dlg@ a while ago some input from jca@ who wrote the same diff
2017-02-07Error propagation does neither make sense for ip input path nor forAlexander Bluhm
asynchronous callbacks. Make the IPsec functions void, there is already a counter in the error path. OK mpi@
2017-02-07For consistency sake, apply the inner shareable attribute to the bootstrapPatrick Wildt
pagetables as well. Also replace the number for write-back with a proper define.
2017-02-07The default frequency we chose for the generic timer does not always ringPatrick Wildt
true. Instead, unless overwritten by the device tree, we should ask the generic timer for its frequency. This fixes time on my AMD Seattle and should improve time management on QEMU as well.
2017-02-07There are 1023 possible values for the interrupts, but our masks limitPatrick Wildt
these currently to 255. Thus making it impossible to use higher IRQs than that. The AMD Seattle SoC though seems to provide 448 IRQs, which is kind of out of bounds, so raise them to the proper values. This makes interrupts work on that machine.
2017-02-07IPsec packets could be dropped unaccounted if output after cryptoAlexander Bluhm
failed. Add a counter for that case. OK dhill@
2017-02-07Reduce the per-packet allocation costs for crypto operations (cryptop)Patrick Wildt
by pre-allocating two cryptodesc objects and storing them in an array instead of a linked list. If more than two cryptodesc objects are required use mallocarray to fetch them. Adapt the drivers to the new API. This change results in one pool-get per ESP packet instead of three. It also simplifies softraid crypto where more cryptodesc objects are allocated than used. From, with and ok markus@, ok bluhm@ "looks sane" mpi@
2017-02-07No longer need to unlock the netlock since the upper layer is doing it.Martin Pieuchot
Found by Hrvoje Popovski.
2017-02-07The return code of crp_callback is never checked, so it is notAlexander Bluhm
useful to propagate the error. When an error occurs in an asynchronous network path, incrementing a counter is the right thing. There are four places where an error is not accounted, just add a comment for now. OK mpi@ visa@
2017-02-07Enable the short slot time feature in 802.11n mode.Stefan Sperling
ok mpi@
2017-02-07Make the 'incomplete header' message debug onlyMike Belopuhov
2017-02-07Release the NET_LOCK() before entering per-driver ioctl() routine.Martin Pieuchot
This prevents a deadlock with the X server and some wireless drivers. The real fix is to take unix domain socket code out of the NET_LOCK(). Issue reported by pirofti@ and ajacoutot@ ok tb@, stsp@, pirofti@
2017-02-07pull struct mfi_evtarg_pd_state out of struct mfi_evt_detail.David Gwynne
this lets me pass the specific argument to an aen handler in mfii. it also unbreaks the tree. found by jmatthew@
2017-02-07enable per cpu caches on the mbuf pools.David Gwynne
this didnt make sense previously since the mbuf pools had item limits that meant the cpus had to coordinate via a single counter to make sure the limit wasnt exceeded. mbufs are now limited by how much memory can be allocated for pages from the system. individual pool items are no longer counted and therefore do not have to be coordinated. ok bluhm@ as part of a larger diff.