|
Revision tags: release/12.2.0, release/11.4.0, release/12.1.0, release/11.3.0, release/12.0.0, release/11.2.0 |
|
| #
c4e20cad |
| 27-Nov-2017 |
Pedro F. Giffuni <[email protected]> |
sys/sys: further adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error
sys/sys: further adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task.
The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts.
show more ...
|
| #
2ca45184 |
| 09-Nov-2017 |
Matt Joras <[email protected]> |
Introduce EVENTHANDLER_LIST and some users.
This introduces a facility to EVENTHANDLER(9) for explicitly defining a reference to an event handler list. This is useful since previously all invokers o
Introduce EVENTHANDLER_LIST and some users.
This introduces a facility to EVENTHANDLER(9) for explicitly defining a reference to an event handler list. This is useful since previously all invokers of events had to do a locked traversal of the global list of event handler lists in order to find the appropriate event handler list. By keeping a pointer to the appropriate list an invoker can avoid this traversal completely. The pointer is initialized with SYSINIT(9) during the eventhandler stage. Users registering interest in events do not need to know if the event is backed by such a list, since the list is added to the global list of lists. As with lists that are not pre-defined it is safe to register for the events before the list has been created.
This converts the process_* and thread_* events to using the new facility, as these are events whose locked traversals end up showing up significantly in ports build workflows (and presumably other workflows with many short lived threads/procs). It may be advantageous to convert other events to using the new facility.
The el_flags field is now unused, but leave it be so that this revision can be MFC'd.
Reviewed by: bdrewery, markj, mjg Approved by: rstone (mentor) In collaboration with: ian MFC after: 4 weeks Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D12814
show more ...
|
| #
7f926894 |
| 08-Oct-2017 |
Ian Lepore <[email protected]> |
Add eventhandler notifications for newbus device attach/detach.
The detach case is slightly complicated by the fact that some in-kernel consumers may want to know before a device detaches (so they c
Add eventhandler notifications for newbus device attach/detach.
The detach case is slightly complicated by the fact that some in-kernel consumers may want to know before a device detaches (so they can release related resources, stop using the device, etc), but the detach can fail. So there are pre- and post-detach notifications for those consumers who need to handle all cases.
A couple salient comments from the review, they amount to some helpful documentation about these events, but there's currently no good place for such documentation...
Note that in the current newbus locking model, DETACH_BEGIN and DETACH_COMPLETE/FAILED sequence of event handler invocation might interweave with other attach/detach events arbitrarily. The handlers should be prepared for such situations.
Also should note that detach may be called after the parent bus knows the hardware has left the building. In-kernel consumers have to be prepared to cope with this race.
Differential Revision: https://reviews.freebsd.org/D12557
show more ...
|
| #
fc091646 |
| 08-Oct-2017 |
Ian Lepore <[email protected]> |
Restore the ability to deregister an eventhandler from within the callback.
When the EVENTHANDLER(9) subsystem was created, it was a documented feature that an eventhandler callback function could s
Restore the ability to deregister an eventhandler from within the callback.
When the EVENTHANDLER(9) subsystem was created, it was a documented feature that an eventhandler callback function could safely deregister itself. In r200652 that feature was inadvertantly broken by adding drain-wait logic to eventhandler_deregister(), so that it would be safe to unload a module upon return from deregistering its event handlers.
There are now 145 callers of EVENTHANDLER_DEREGISTER(), and it's likely many of them are depending on the drain-wait logic that has been in place for 8 years. So instead of creating a separate eventhandler_drain() and adding it to some or all of those 145 call sites, this creates a separate eventhandler_drain_nowait() function for the specific purpose of deregistering a callback from within the running callback.
Differential Revision: https://reviews.freebsd.org/D12561
show more ...
|
|
Revision tags: release/10.4.0, release/11.1.0 |
|
| #
6597559e |
| 28-Jan-2017 |
Dexuan Cui <[email protected]> |
ifnet: move the new ifnet_event EVENTHANDLER_DECLARE to net/if_var.h
Thank glebius for pointing this out: "The network stuff shall not be added to sys/eventhandler.h"
Reviewed by: David_A_Bright_DE
ifnet: move the new ifnet_event EVENTHANDLER_DECLARE to net/if_var.h
Thank glebius for pointing this out: "The network stuff shall not be added to sys/eventhandler.h"
Reviewed by: David_A_Bright_DELL.com, sephe, glebius Approved by: sephe (mentor) MFC after: 2 weeks Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D9345
show more ...
|
| #
92a6859b |
| 24-Jan-2017 |
Dexuan Cui <[email protected]> |
ifnet: introduce event handlers for ifup/ifdown events
Hyper-V's NIC SR-IOV implementation needs a Hyper-V synthetic NIC and a VF NIC to work together, mainly to support seamless live migration.
Wh
ifnet: introduce event handlers for ifup/ifdown events
Hyper-V's NIC SR-IOV implementation needs a Hyper-V synthetic NIC and a VF NIC to work together, mainly to support seamless live migration.
When the VF device becomes UP (or DOWN), the synthetic NIC driver needs to switch the data path from the synthetic NIC to the VF (or the opposite).
So the synthetic NIC driver needs to know when a VF device is becoming UP or DOWN and hence the patch is made.
Reviewed by: sephe Approved by: sephe (mentor) MFC after: 2 weeks Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D8963
show more ...
|
| #
b1fd102e |
| 03-Jan-2017 |
Mark Johnston <[email protected]> |
Add a page queue for holding dirty anonymous unswappable pages.
On systems without a configured swap device, an attempt to launder pages from a swap object will always fail and result in the page be
Add a page queue for holding dirty anonymous unswappable pages.
On systems without a configured swap device, an attempt to launder pages from a swap object will always fail and result in the page being reactivated. This means that the page daemon will continuously scan pages that can never be evicted. With this change, anonymous pages are instead moved to PQ_UNSWAPPABLE after a failed laundering attempt when no swap devices are configured. PQ_UNSWAPPABLE is not scanned unless a swap device is configured, so unreferenced unswappable pages are excluded from the page daemon's workload.
Reviewed by: alc
show more ...
|
|
Revision tags: release/11.0.1 |
|
| #
a11463fd |
| 28-Sep-2016 |
Sepherosa Ziehau <[email protected]> |
cam/ata: Allow drivers to veto ATA disk attachment.
This eventhandler is mainly used by VMs, e.g. Hyper-V, whose disk controllers share the disks with the simulated ATA controllers.
Submitted by: H
cam/ata: Allow drivers to veto ATA disk attachment.
This eventhandler is mainly used by VMs, e.g. Hyper-V, whose disk controllers share the disks with the simulated ATA controllers.
Submitted by: Hongjiang Zhang <honzhan microsoft com> Discussed with: mav MFC after: 1 week Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D7693
show more ...
|
|
Revision tags: release/11.0.0, release/10.3.0, release/10.2.0 |
|
| #
85f95fff |
| 27-Jan-2015 |
Andriy Gapon <[email protected]> |
hook userland threads suspend + resume into acpi suspend code
Also, split power_suspend into power_suspend and power_suspend_early.
power_suspend_early is called before the userland is frozen. powe
hook userland threads suspend + resume into acpi suspend code
Also, split power_suspend into power_suspend and power_suspend_early.
power_suspend_early is called before the userland is frozen. power_suspend is called after the userland is frozen.
Currently only VT switching is hooked to power_suspend_early. This is needed because switching away from X server requires its cooperation, so obviously X server must not be frozen when that happens.
Freezing userland during ACPI suspend is useful because not all drivers correctly handle suspension concurrent with other activity. This is especially applicable to drivers ported from other operating systems that suspend all software activity between placing drivers and hardware into suspended state. In particular drm2/radeon (radeonkms) depends on the described procedure. The driver does not have any internal synchronization between suspension activities and processing of userland requests.
Many thanks to kib for the code that allows to freeze and thaw all userland threads.
Note that ideally we also need to park / inhibit (non-special) kernel threads as well to ensure that they do not call into drivers.
MFC after: 17 days
show more ...
|
|
Revision tags: release/10.1.0, release/9.3.0 |
|
| #
4570e665 |
| 28-Feb-2014 |
John Baldwin <[email protected]> |
Whitespace fix.
|
|
Revision tags: release/10.0.0 |
|
| #
27cf7d04 |
| 05-Dec-2013 |
Aleksandr Rybalko <[email protected]> |
Merge VT(9) project (a.k.a. newcons).
Reviewed by: nwhitehorn MFC_to_10_after: re approval
Sponsored by: The FreeBSD Foundation
|
| #
eaeb0c13 |
| 28-Oct-2013 |
Gleb Smirnoff <[email protected]> |
Style: s/SYS_EVENTHANDLER_H/_SYS_EVENTHANDLER_H_/g
Submitted by: bde
|
| #
7ced9c2f |
| 28-Oct-2013 |
Gleb Smirnoff <[email protected]> |
Instead of putting ifnet declaration into eventhandler.h, move bpf(4) and vlan(4) related event declarations to bpf.h and if_vlan_var.h. To avoid dependency on eventhandler.h, protect these declarati
Instead of putting ifnet declaration into eventhandler.h, move bpf(4) and vlan(4) related event declarations to bpf.h and if_vlan_var.h. To avoid dependency on eventhandler.h, protect these declarations with ifdef SYS_EVENTHANDLER_H.
Sponsored by: Netflix Sponsored by: Nginx, Inc.
show more ...
|
| #
6e818c87 |
| 08-Oct-2013 |
Mark Murray <[email protected]> |
Debugging. My attempt at EVENTHANDLER(multiuser) was a failure; use EVENTHANDLER(mountroot) instead.
This means we can't count on /var being present, so something will need to be done about harvesti
Debugging. My attempt at EVENTHANDLER(multiuser) was a failure; use EVENTHANDLER(mountroot) instead.
This means we can't count on /var being present, so something will need to be done about harvesting /var/db/entropy/... .
Some policy now needs to be sorted out, and a pre-sync cache needs to be written, but apart from that we are now ready to go.
Over to review.
show more ...
|
| #
1a3c1f06 |
| 06-Oct-2013 |
Mark Murray <[email protected]> |
Snapshot.
Looking pretty good; this mostly works now. New code includes:
* Read cached entropy at startup, both from files and from loader(8) preloaded entropy. Failures are soft, but announced. Un
Snapshot.
Looking pretty good; this mostly works now. New code includes:
* Read cached entropy at startup, both from files and from loader(8) preloaded entropy. Failures are soft, but announced. Untested.
* Use EVENTHANDLER to do above just before we go multiuser. Untested.
show more ...
|
|
Revision tags: release/9.2.0 |
|
| #
29f4e216 |
| 24-Aug-2013 |
Mark Johnston <[email protected]> |
Rename the kld_unload event handler to kld_unload_try, and add a new kld_unload event handler which gets invoked after a linker file has been successfully unloaded. The kld_unload and kld_load event
Rename the kld_unload event handler to kld_unload_try, and add a new kld_unload event handler which gets invoked after a linker file has been successfully unloaded. The kld_unload and kld_load event handlers are now invoked with the shared linker lock held, while kld_unload_try is invoked with the lock exclusively held.
Convert hwpmc(4) to use these event handlers instead of having kern_kldload() and kern_kldunload() invoke hwpmc(4) hooks whenever files are loaded or unloaded. This has no functional effect, but simplifes the linker code somewhat.
Reviewed by: jhb
show more ...
|
| #
12ede07a |
| 14-Aug-2013 |
Mark Johnston <[email protected]> |
Use kld_{load,unload} instead of mod_{load,unload} for the linker file load and unload event handlers added in r254266.
Reported by: jhb X-MFC with: r254266
|
| #
c9b645b5 |
| 13-Aug-2013 |
Mark Johnston <[email protected]> |
Add event handlers for module load and unload events. The load handlers are called after the module has been loaded, and the unload handlers are called before the module is unloaded. Moreover, the mo
Add event handlers for module load and unload events. The load handlers are called after the module has been loaded, and the unload handlers are called before the module is unloaded. Moreover, the module unload handlers may return an error to prevent the unload from proceeding.
Reviewed by: avg MFC after: 2 weeks
show more ...
|
| #
8939c069 |
| 10-Jul-2013 |
Marcel Moolenaar <[email protected]> |
Add vfs_mounted and vfs_unmounted events so that components can be informed about mount and unmount events. This is used by Juniper to implement a more optimal implementation of NetBSD's veriexec.
T
Add vfs_mounted and vfs_unmounted events so that components can be informed about mount and unmount events. This is used by Juniper to implement a more optimal implementation of NetBSD's veriexec.
This change differs from r253224 in the following way: o The vfs_mounted handler is called before mountcheckdirs() and with newdp locked. vp is unlocked. o The event handlers are declared in <sys/eventhandler.h> and not in <sys/mount.h>. The <sys/mount.h> header is used in user land code that pretends to be kernel code and as such creates a very convoluted environment. It's hard to untangle.
Submitted by: [email protected] Discussed with: pjd@ Obtained from: Juniper Networks, Inc.
show more ...
|
|
Revision tags: release/8.4.0, release/9.1.0 |
|
| #
ead46972 |
| 27-Nov-2012 |
Andre Oppermann <[email protected]> |
Base the mbuf related limits on the available physical memory or kernel memory, whichever is lower. The overall mbuf related memory limit must be set so that mbufs (and clusters of various sizes) ca
Base the mbuf related limits on the available physical memory or kernel memory, whichever is lower. The overall mbuf related memory limit must be set so that mbufs (and clusters of various sizes) can't exhaust physical RAM or KVM.
The limit is set to half of the physical RAM or KVM (whichever is lower) as the baseline. In any normal scenario we want to leave at least half of the physmem/kvm for other kernel functions and userspace to prevent it from swapping too easily. Via a tunable kern.maxmbufmem the limit can be upped to at most 3/4 of physmem/kvm.
At the same time divorce maxfiles from maxusers and set maxfiles to physpages / 8 with a floor based on maxusers. This way busy servers can make use of the significantly increased mbuf limits with a much larger number of open sockets.
Tidy up ordering in init_param2() and check up on some users of those values calculated here.
Out of the overall mbuf memory limit 2K clusters and 4K (page size) clusters to get 1/4 each because these are the most heavily used mbuf sizes. 2K clusters are used for MTU 1500 ethernet inbound packets. 4K clusters are used whenever possible for sends on sockets and thus outbound packets. The larger cluster sizes of 9K and 16K are limited to 1/6 of the overall mbuf memory limit. When jumbo MTU's are used these large clusters will end up only on the inbound path. They are not used on outbound, there it's still 4K. Yes, that will stay that way because otherwise we run into lots of complications in the stack. And it really isn't a problem, so don't make a scene.
Normal mbufs (256B) weren't limited at all previously. This was problematic as there are certain places in the kernel that on allocation failure of clusters try to piece together their packet from smaller mbufs.
The mbuf limit is the number of all other mbuf sizes together plus some more to allow for standalone mbufs (ACK for example) and to send off a copy of a cluster. Unfortunately there isn't a way to set an overall limit for all mbuf memory together as UMA doesn't support such a limiting.
NB: Every cluster also has an mbuf associated with it.
Two examples on the revised mbuf sizing limits:
1GB KVM: 512MB limit for mbufs 419,430 mbufs 65,536 2K mbuf clusters 32,768 4K mbuf clusters 9,709 9K mbuf clusters 5,461 16K mbuf clusters
16GB RAM: 8GB limit for mbufs 33,554,432 mbufs 1,048,576 2K mbuf clusters 524,288 4K mbuf clusters 155,344 9K mbuf clusters 87,381 16K mbuf clusters
These defaults should be sufficient for even the most demanding network loads.
MFC after: 1 month
show more ...
|
|
Revision tags: release/8.3.0, release/7.4.0, release/8.2.0, release/8.1.0 |
|
| #
665b912a |
| 24-May-2010 |
Pawel Jakub Dawidek <[email protected]> |
MFC r207920,r207934,r207936,r207937,r207970,r208142,r208147,r208148,r208166, r208454,r208455,r208458:
r207920:
Back out r205134. It is not stable.
r207934:
Add missing new line characters to the
MFC r207920,r207934,r207936,r207937,r207970,r208142,r208147,r208148,r208166, r208454,r208455,r208458:
r207920:
Back out r205134. It is not stable.
r207934:
Add missing new line characters to the warnings.
r207936:
Eventhough r203504 eliminates taste traffic provoked by vdev_geom.c, ZFS still like to open all vdevs, close them and open them again, which in turn provokes taste traffic anyway.
I don't know of any clean way to fix it, so do it the hard way - if we can't open provider for writing just retry 5 times with 0.5 pauses. This should elimitate accidental races caused by other classes tasting providers created on top of our vdevs.
Reported by: James R. Van Artsdalen <[email protected]> Reported by: Yuri Pankov <[email protected]>
r207937:
I added vfs_lowvnodes event, but it was only used for a short while and now it is totally unused. Remove it.
r207970:
When there is no memory or KVA, try to help by reclaiming some vnodes. This helps with 'kmem_map too small' panics.
No objections from: kib Tested by: Alexander V. Ribchansky <[email protected]>
r208142:
The whole point of having dedicated worker thread for each leaf VDEV was to avoid calling zio_interrupt() from geom_up thread context. It turns out that when provider is forcibly removed from the system and we kill worker thread there can still be some ZIOs pending. To complete pending ZIOs when there is no worker thread anymore we still have to call zio_interrupt() from geom_up context. To avoid this race just remove use of worker threads altogether. This should be more or less fine, because I also thought that zio_interrupt() does more work, but it only makes small UMA allocation with M_WAITOK. It also saves one context switch per I/O request.
PR: kern/145339 Reported by: Alex Bakhtin <[email protected]>
r208147:
Add task structure to zio and use it instead of allocating one. This eliminates the only place where we can sleep when calling zio_interrupt(). As a side-effect this can actually improve performance a little as we allocate one less thing for every I/O.
Prodded by: kib
r208148:
Allow to configure UMA usage for ZIO data via loader and turn it on by default for amd64. On i386 I saw performance degradation when UMA was used, but for amd64 it should help.
r208166:
Fix userland build by making io_task available only for the kernel and by providing taskq_dispatch_safe() macro.
r208454:
Remove ZIO_USE_UMA from arc.c as well.
r208455:
ZIO_USE_UMA is no longer used.
r208458:
Create UMA zones unconditionally.
show more ...
|
| #
407b1937 |
| 21-Apr-2010 |
Bjoern A. Zeeb <[email protected]> |
MFC r205345:
Split eventhandler_register() into an internal part and a wrapper function that provides the allocated and setup eventhandler entry.
Add a new wrapper for VIMAGE that allocates e
MFC r205345:
Split eventhandler_register() into an internal part and a wrapper function that provides the allocated and setup eventhandler entry.
Add a new wrapper for VIMAGE that allocates extra space to hold the callback function and argument in addition to an extra wrapper function. While the wrapper function goes as normal callback function the argument points to the extra space allocated holding the original func and arg that the wrapper function can then call.
Provide an iterator function for the virtual network stack (vnet) that will call the callback function for each network stack.
Provide a new set of macros for VNET that in the non-VIMAGE case will just call eventhandler_register() while in the VIMAGE case it will use vimage_eventhandler_register() passing in the extra iterator function but will only register once rather than per-vnet. We need a special macro in case we are interested in the tag returned as we must check for curvnet and can neither simply assign the return value, nor not change it in the non-vnet0 case without that.
Discussed with: jhb Reviewed by: zec (earlier version), jhb
show more ...
|
| #
4a8fa6fe |
| 14-Apr-2011 |
Jung-uk Kim <[email protected]> |
Add event handlers for (ACPI) suspend/resume events. Suspend event handlers are invoked right before device drivers go into sleep state and resume event handlers are invoked right after all device d
Add event handlers for (ACPI) suspend/resume events. Suspend event handlers are invoked right before device drivers go into sleep state and resume event handlers are invoked right after all device drivers are waken up.
show more ...
|
| #
e5d81ef1 |
| 08-Mar-2011 |
Dmitry Chagin <[email protected]> |
Extend struct sysvec with new method sv_schedtail, which is used for an explicit process at fork trampoline path instead of eventhadler(schedtail) invocation for each child process.
Remove eventhand
Extend struct sysvec with new method sv_schedtail, which is used for an explicit process at fork trampoline path instead of eventhadler(schedtail) invocation for each child process.
Remove eventhandler(schedtail) code and change linux ABI to use newly added sysvec method.
While here replace explicit comparing of module sysentvec structure with the newly created process sysentvec to detect the linux ABI.
Discussed with: kib
MFC after: 2 Week
show more ...
|
| #
c60c36a7 |
| 11-May-2010 |
Pawel Jakub Dawidek <[email protected]> |
I added vfs_lowvnodes event, but it was only used for a short while and now it is totally unused. Remove it.
MFC after: 3 days
|