| Home | Sort by: relevance | last modified time | path |
| /src/sys/arch/arm/xilinx/ | |
| zynq_xadc.c | 1.1 Fri Nov 11 20:31:30 UTC 2022 jmcneill Add support for Xilinx 7-series ADC. The temperature and voltage sensors are exposed with sysmon: # envstat -d zynqxadc0 Current CritMax WarnMax WarnMin CritMin Unit temperature: 67.426 degC vccint: 1.010 V vccaux: 1.801 V vp/vn: 0.011 V vrefp: 1.250 V vrefn: 0.004 V vccbram: 1.009 V vccpint: 1.009 V vccpaux: 1.799 V vcco_ddr: 1.500 V |
| files.zynq | 1.5 Fri Nov 11 20:31:30 UTC 2022 jmcneill Add support for Xilinx 7-series ADC. The temperature and voltage sensors are exposed with sysmon: # envstat -d zynqxadc0 Current CritMax WarnMax WarnMin CritMin Unit temperature: 67.426 degC vccint: 1.010 V vccaux: 1.801 V vp/vn: 0.011 V vrefp: 1.250 V vrefn: 0.004 V vccbram: 1.009 V vccpint: 1.009 V vccpaux: 1.799 V vcco_ddr: 1.500 V |
| /src/doc/ | |
| BRANCHES | 1.250 Sun Apr 27 00:53:25 UTC 2008 yamt branches: 1.250.2; 1.250.4; mention yamt-nfs-mp branch. Sun Apr 27 00:53:25 UTC 2008 yamt branches: 1.250.2; 1.250.4; mention yamt-nfs-mp branch. .2; 1.250.4; mention yamt-nfs-mp branch. 1.250.4.2 Thu Sep 18 04:40:18 UTC 2008 wrstuden Sync with wrstuden-revivesa-base-2. 1.250.4.1 Mon Jun 23 04:29:01 UTC 2008 wrstuden Sync w/ -current. 34 merge conflicts to follow. 1.250.2.4 Sun Oct 05 20:11:18 UTC 2008 mjf Sync with HEAD. 1.250.2.3 Sun Jun 29 08:35:32 UTC 2008 mjf Sync with HEAD. 1.250.2.2 Mon Jun 02 13:21:19 UTC 2008 mjf Sync with HEAD. 1.250.2.1 Sun Apr 27 00:53:25 UTC 2008 mjf file BRANCHES was added on branch mjf-devfs2 on 2008-06-02 13:21:19 +0000 |
| /src/share/man/man4/ | |
| hdaudio.4 | 1.4.2.2 Sat Sep 26 19:52:09 UTC 2009 snj Pull up following revision(s) (requested by jmcneill in ticket #946): distrib/sets/lists/man/mi: revision 1.1155 doc/CHANGES: revision 1.1285 etc/MAKEDEV.tmpl: revision 1.128 share/man/man4/Makefile: revision 1.498 via patch share/man/man4/hdaudio.4: revision 1.1-1.3 share/man/man8/MAKEDEV.8: revision 1.36 sys/arch/amd64/conf/GENERIC: revision 1.250-1.251 sys/arch/amd64/conf/XEN3_DOM0: revision 1.44-1.45 sys/arch/i386/conf/ALL: revision 1.206-1.207 sys/arch/i386/conf/GENERIC: revision 1.942-1.943 sys/arch/i386/conf/XEN3_DOM0: patch sys/conf/majors: revision 1.47 via patch sys/dev/pci/hdaudio/files.hdaudio: revision 1.1-1.2 sys/dev/pci/hdaudio/hdaudio.c: revision 1.1-1.4 sys/dev/pci/hdaudio/hdaudio_afg.c: revisions 1.1-1.14 sys/dev/pci/hdaudio/hdaudio_mixer.h: revisions 1.1-1.3 sys/dev/pci/hdaudio/hdaudio_pci.c: revisions 1.1-1.2 sys/dev/pci/hdaudio/hdaudioio.h: revisions 1.1-1.2 sys/dev/pci/hdaudio/hdaudioreg.h: revisions 1.1-1.3 sys/dev/pci/hdaudio/hdaudiovar.h: revisions 1.1-1.4 sys/dev/pci/files.pci: revisions 1.319 and 1.322 via patch hdaudio(4) is a standards-compliant driver for High Definition Audio. It will replace azalia(4) after testing. To use, comment out azalia in your kernel configuration and uncomment the hdaudio and hdafg lines so it reads: hdaudio* at pci? dev ? function ? hdafg* at hdaudiobus? You should also: cd /dev sh MAKEDEV audio |
| /src/sys/dev/raidframe/ | |
| rf_netbsdkintf.c | 1.250 Sun Sep 28 16:17:17 UTC 2008 oster branches: 1.250.2; 1.250.4; Undo previous change to an #if 0. The code does belong to the distributed sparing bits, but no-one has compile-tested the code. Un-breaks the ALL build. Sun Sep 28 16:17:17 UTC 2008 oster branches: 1.250.2; 1.250.4; Undo previous change to an #if 0. The code does belong to the distributed sparing bits, but no-one has compile-tested the code. Un-breaks the ALL build. .2; 1.250.4; Undo previous change to an #if 0. The code does belong to the distributed sparing bits, but no-one has compile-tested the code. Un-breaks the ALL build. 1.250.4.14 Thu Nov 20 09:38:56 UTC 2014 sborrill Pull up the following revisions(s) (requested by oster in ticket #1933): sys/dev/raidframe/raidframevar.h: revision 1.17 sys/dev/raidframe/rf_netbsdkintf.c: revision 1.316 sys/dev/raidframe/rf_reconstruct.c: revision 1.121 via patch Fix a long-standing bug related to rebooting while a reconstruct-to-spare is underway but not yet complete. Fixes PR kern/49244. 1.250.4.13 Wed Oct 24 03:03:53 UTC 2012 riz branches: 1.250.4.13.2; sys/dev/raidframe/rf_netbsdkintf.c patch Implement DIOCGSTRATEGY and DIOCSSTRATEGY for raidframe devices. (The default strategy is not changed) [buhrow, ticket #1788] .4.13 Wed Oct 24 03:03:53 UTC 2012 riz branches: 1.250.4.13.2; sys/dev/raidframe/rf_netbsdkintf.c patch Implement DIOCGSTRATEGY and DIOCSSTRATEGY for raidframe devices. (The default strategy is not changed) [buhrow, ticket #1788] 1.250.4.12 Wed Jun 13 14:00:49 UTC 2012 sborrill Pull up the following revisions(s) (requested by mrg in ticket #1774): sbin/raidctl/raidctl.c: revision 1.52 sys/dev/raidframe/raidframevar.h: revision 1.15 sys/dev/raidframe/rf_copyback.c: revision 1.45 sys/dev/raidframe/rf_disks.c: revision 1.78 sys/dev/raidframe/rf_netbsdkintf.c: revision 1.282,1.284 sys/dev/raidframe/rf_reconstruct.c: revision 1.111 Fix garbage values in partitionSizeHi with RAID array > 2TB. Stops the check against rf_component_label_partitionsize() failing and stopping auto-configure. 1.250.4.11 Fri May 20 19:24:54 UTC 2011 bouyer Pull up following revision(s) (requested by buhrow in ticket #1615): sys/dev/raidframe/rf_netbsdkintf.c: revision 1.280 via patch PR/44340: Brian Buhrow: Raid sets containing wedges cannot be unconfigured and reconfigured without a reboot. 1.250.4.10 Fri Jan 07 23:27:51 UTC 2011 riz Pull up following revision(s) (requested by mrg in ticket #1511): sys/dev/raidframe/rf_netbsdkintf.c: revision 1.278 add a hack to fix up old labels that do not have zero's in numBlocksHi: if the total sectors reported (via disklabel or otherwise) is smaller than 2^32, but numBlocksHi is set, zero it out instead. tested by myself and christos, should fix reports of weirdness seen. 1.250.4.9 Fri Jan 07 23:25:59 UTC 2011 riz Pull up following revision(s) (requested by mrg in ticket #1522): sys/dev/raidframe/rf_disks.c: revision 1.76 sys/dev/raidframe/rf_netbsdkintf.c: revision 1.276 apply my patch to support non-512K sector disks (at least, upto 16KB sector disks..) from my tech-kern post: the following patch let's me access both 512 byte and 4K sector disks at the same time, as long as they are in separate raids. the existing rf code assumes/enforces this part, i just made it support other sets concurrently. the main change is moving the parity bitmap to the sector after the component label sector(s), instead of being immediately after the label, which meant it was on the same sector as the label for >1024 byte devices. i'm a little annoyed at having to add a 2nd call to getdisksize() to enable auto-configure to work, but i don't see another way that wasn't much uglier. |
| /src/sys/netinet/ | |
| if_arp.c | 1.250 Thu May 18 06:33:11 UTC 2017 ozaki-r branches: 1.250.2; Lookup caches from a CARP interface if the packet is routed to the interface This fixes CARP setups without carpdev (physical interface) having any IPs. Thu May 18 06:33:11 UTC 2017 ozaki-r branches: 1.250.2; Lookup caches from a CARP interface if the packet is routed to the interface This fixes CARP setups without carpdev (physical interface) having any IPs. 1.250.2.10 Mon Sep 30 15:48:45 UTC 2019 martin Pull up following revision(s) (requested by ozaki-r in ticket #1396): sys/netinet6/nd6.h: revision 1.88 sys/netinet6/nd6_nbr.c: revision 1.174 sys/netinet6/nd6.c: revision 1.264 sys/netinet/if_arp.c: revision 1.288 (patch) Initialize DAD components properly The original code initialized each component in non-init functions such as arp_dad_start and nd6_dad_find, conditionally based on a global flag for each. However, it was racy because the flag and the code around it were not protected by a lock and could cause a kernel panic at worst. Fix the issue by initializing the components in bootup as usual. 1.250.2.9 Tue Nov 06 14:38:58 UTC 2018 martin Pull up following revision(s) (requested by ozaki-r in ticket #1080): sys/netinet6/nd6.c: revision 1.251 sys/netinet/if_arp.c: revision 1.276 sys/net/if.c: revision 1.438 sys/net/if.c: revision 1.439 sys/net/route.c: revision 1.214 sys/net/route.c: revision 1.215 sys/net/route.c: revision 1.216 sys/netinet6/in6.c: revision 1.270 sys/net/route.h: revision 1.120 sys/net/if.c: revision 1.440 Remove a wrong assertion in ifaref - Doing ifref on an ifa with IFA_DESTROYING is not a problem; the reference should be dropped during the destruction of the ifa. - Use atomic operations for ifa_refcnt - Avoid a dangling pointer during rt_replace_ifa - Avoid double rt_replace_ifa on rtrequest1(RTM_ADD) Some callers of rtrequest1(RTM_ADD) adjust rt_ifa of an rtentry created by rtrequest1 that may change rt_ifa (in ifa_rtrequest) with another ifa that is different from requested one. It's wasteful and even worse introduces a race condition. rtrequest1 should just use a passed ifa as is if a caller hopes so. - Use rt_update framework on updating a rtentry 1.250.2.8 Mon Apr 02 08:54:35 UTC 2018 martin Pull up following revision(s) (requested by ozaki-r in ticket #686): sys/netinet/if_arp.c: revision 1.271 sys/netinet6/nd6_nbr.c: revision 1.151,1.152 Avoid passing NULL to nd6_dad_duplicated Fix PR kern/53075 Fix a race condition on DAD destructions (again) The previous fix to DAD timers was wrong; it avoided a use-after-free but instead introduced a memory leak. The destruction method had delegated a destruction of a DAD timer to the timer itself and told that by setting NULL to dp->dad_ifa. However, the previous fix made DAD timers do nothing on the sign. Fixing the issue with using callout_stop isn't easy. One approach is to have a refcount on dp but it introduces extra complexity that we want to avoid. The new fix falls back to using callout_halt, which was abandoned because of softnet_lock. Fortunately now the network stack is protected by KERNEL_LOCK so we can remove softnet_lock from DAD timers (callout) and use callout_halt safely. 1.250.2.7 Tue Mar 13 13:27:10 UTC 2018 martin Pull up following revision(s) (requested by ozaki-r in ticket #622): sys/netinet/if_arp.c: revision 1.270 sys/net/if_llatbl.c: revision 1.24 (patch) sys/net/if_llatbl.c: revision 1.25 sys/net/if_llatbl.c: revision 1.26 sys/net/route.c: revision 1.204 sys/netinet6/in6.c: revision 1.261 sys/netinet6/in6.c: revision 1.262 (patch) sys/netinet6/in6.c: revision 1.263 sys/netinet/in.c: revision 1.216 sys/netinet6/in6.c: revision 1.264 sys/netinet6/nd6.c: revision 1.246 (patch) sys/netinet/if_arp.c: revision 1.269 sys/net/if_llatbl.h: revision 1.14 sys/netinet6/in6.c: revision 1.259 sys/netinet/in.c: revision 1.220 sys/netinet/in.c: revision 1.221 (patch) sys/netinet/in.c: revision 1.222 sys/netinet/in.c: revision 1.223 Suppress noisy debugging outputs Even if DEBUG they are too noisy under load. Tweak sanity checks Scheduling a timer of static entries is wrong. Add assertions We must not destroy llentries holding mbufs. Fix reference leaks of llentry callout_reset and callout_halt can cancel a pending callout without telling us. Detect a cancel and remove a reference by using callout_pending and callout_stop (it's a bit tricy though, we can detect it). While here, we can remove remaining abuses of mutex_owned for softnet_lock. Fix memory leaks on arp -d and ndp -d for static entries We have to delete entries on in_lltable_delete and in6_lltable_delete unconditionally. Note that we don't need to worry about LLE_IFADDR because there is no such entries now. Use pool(9) for llentry allocations llentry is easy to be leaked and pool suits for it because pool is usable to detect leaks. Also sweep unnecessary wrappers for llentry, in_llentry and in6_llentry. 1.250.2.6 Mon Feb 26 13:36:01 UTC 2018 martin Pull up following revision(s) (requested by ozaki-r in ticket #589): sys/netinet/if_arp.c: revision 1.267 sys/netinet6/nd6_nbr.c: revision 1.146-1.148 Use KASSERT for checking a programming error Simplify; pass dp to nd6_dad_duplicated instead of looking it up again in it Avoid a race condition of DAD timer destructions When we see dp->dad_ifa == NULL, it means that the ifa is being deleted and also the callout is scheduled again by someone. We shouldn't rely on a result of callout_pending to know if the callout is scheduled because it returns false if the subsequent callout handler is already on the fly. We have to always delegate the destruction of dp to the subsequent handler unconditionally if dp->dad_ifa == NULL. Otherwise, the first handler destroys the dp and the second handler tries to handle destroyed dp. 1.250.2.5 Fri Jan 26 15:41:12 UTC 2018 martin Pull up following revision(s) (requested by ozaki-r in ticket #511): sys/kern/kern_timeout.c: revision 1.54 sys/netinet6/nd6_nbr.c: revision 1.141 sys/netinet6/nd6_nbr.c: revision 1.144 sys/netinet/if_arp.c: revision 1.256 Fix a deadlock on callout_halt of nd6_dad_timer We must not call callout_halt of nd6_dad_timer with holding nd6_dad_lock because the lock is taken in nd6_dad_timer. Once softnet_lock goes away, we can pass the lock to callout_halt, but for now we cannot. Make DAD destructions (MP-)safe with callout_stop arp_dad_stoptimer and nd6_dad_stoptimer can be called with or without softnet_lock held and unfortunately we have no easy way to statically know which. So it is hard to use callout_halt there. To address the situation, we use callout_stop to make the code safe. The new approach copes with the issue by delegating the destruction of a callout to callout itself, which allows us to not wait the callout to finish. This can be done thanks to that DAD objects are separated from other data such as ifa. The approach is suggested by riastradh@ Proposed on tech-kern@ and tech-net@ Sanity-check if interlock is held when it's passed 1.250.2.4 Tue Jan 02 10:20:34 UTC 2018 snj Pull up following revision(s) (requested by ozaki-r in ticket #456): sys/arch/arm/sunxi/sunxi_emac.c: 1.9 sys/dev/ic/dwc_gmac.c: 1.43-1.44 sys/dev/pci/if_iwm.c: 1.75 sys/dev/pci/if_wm.c: 1.543 sys/dev/pci/ixgbe/ixgbe.c: 1.112 sys/dev/pci/ixgbe/ixv.c: 1.74 sys/kern/sys_socket.c: 1.75 sys/net/agr/if_agr.c: 1.43 sys/net/bpf.c: 1.219 sys/net/if.c: 1.397, 1.399, 1.401-1.403, 1.406-1.410, 1.412-1.416 sys/net/if.h: 1.242-1.247, 1.250, 1.252-1.257 sys/net/if_bridge.c: 1.140 via patch, 1.142-1.146 sys/net/if_etherip.c: 1.40 sys/net/if_ethersubr.c: 1.243, 1.246 sys/net/if_faith.c: 1.57 sys/net/if_gif.c: 1.132 sys/net/if_l2tp.c: 1.15, 1.17 sys/net/if_loop.c: 1.98-1.101 sys/net/if_media.c: 1.35 sys/net/if_pppoe.c: 1.131-1.132 sys/net/if_spppsubr.c: 1.176-1.177 sys/net/if_tun.c: 1.142 sys/net/if_vlan.c: 1.107, 1.109, 1.114-1.121 sys/net/npf/npf_ifaddr.c: 1.3 sys/net/npf/npf_os.c: 1.8-1.9 sys/net/rtsock.c: 1.230 sys/netcan/if_canloop.c: 1.3-1.5 sys/netinet/if_arp.c: 1.255 sys/netinet/igmp.c: 1.65 sys/netinet/in.c: 1.210-1.211 sys/netinet/in_pcb.c: 1.180 sys/netinet/ip_carp.c: 1.92, 1.94 sys/netinet/ip_flow.c: 1.81 sys/netinet/ip_input.c: 1.362 sys/netinet/ip_mroute.c: 1.147 sys/netinet/ip_output.c: 1.283, 1.285, 1.287 sys/netinet6/frag6.c: 1.61 sys/netinet6/in6.c: 1.251, 1.255 sys/netinet6/in6_pcb.c: 1.162 sys/netinet6/ip6_flow.c: 1.35 sys/netinet6/ip6_input.c: 1.183 sys/netinet6/ip6_output.c: 1.196 sys/netinet6/mld6.c: 1.90 sys/netinet6/nd6.c: 1.239-1.240 sys/netinet6/nd6_nbr.c: 1.139 sys/netinet6/nd6_rtr.c: 1.136 sys/netipsec/ipsec_output.c: 1.65 sys/rump/net/lib/libnetinet/netinet_component.c: 1.9-1.10 kmem_intr_free kmem_intr_[z]alloced memory the underlying pools are the same but api-wise those should match Unify IFEF_*_MPSAFE into IFEF_MPSAFE There are already two flags for if_output and if_start, however, it seems such MPSAFE flags are eventually needed for all if_XXX operations. Having discrete flags for each operation is wasteful of if_extflags bits. So let's unify the flags into one: IFEF_MPSAFE. Fortunately IFEF_*_MPSAFE flags have never been included in any releases, so we can change them without breaking backward compatibility of the releases (though the kernel version of -current should be bumped). Note that if an interface have both MP-safe and non-MP-safe operations at a time, we have to set the IFEF_MPSAFE flag and let callees of non-MP-safe opeartions take the kernel lock. Proposed on tech-kern@ and tech-net@ Provide macros for softnet_lock and KERNEL_LOCK hiding NET_MPSAFE switch It reduces C&P codes such as "#ifndef NET_MPSAFE KERNEL_LOCK(1, NULL); ..." scattered all over the source code and makes it easy to identify remaining KERNEL_LOCK and/or softnet_lock that are held even if NET_MPSAFE. No functional change Hold KERNEL_LOCK on if_ioctl selectively based on IFEF_MPSAFE If IFEF_MPSAFE is set, hold the lock and otherwise don't hold. This change requires additions of KERNEL_LOCK to subsequence functions from if_ioctl such as ifmedia_ioctl and ifioctl_common to protect non-MP-safe components. Proposed on tech-kern@ and tech-net@ Ensure to hold if_ioctl_lock when calling if_flags_set Fix locking against myself on ifpromisc vlan_unconfig_locked could be called with holding if_ioctl_lock. Ensure to not turn on IFF_RUNNING of an interface until its initialization completes And ensure to turn off it before destruction as per IFF_RUNNING's description "resource allocated". (The description is a bit doubtful though, I believe the change is still proper.) Ensure to hold if_ioctl_lock on if_up and if_down One exception for if_down is if_detach; in the case the lock isn't needed because it's guaranteed that no other one can access ifp at that point. Make if_link_queue MP-safe if IFEF_MPSAFE if_link_queue is a queue to store events of link state changes, which is used to pass events from (typically) an interrupt handler to if_link_state_change softint. The queue was protected by KERNEL_LOCK so far, but if IFEF_MPSAFE is enabled, it becomes unsafe because (perhaps) an interrupt handler of an interface with IFEF_MPSAFE doesn't take KERNEL_LOCK. Protect it by a spin mutex. Additionally with this change KERNEL_LOCK of if_link_state_change softint is omitted if NET_MPSAFE is enabled. Note that the spin mutex is now ifp->if_snd.ifq_lock as well as the case of if_timer (see the comment). Use IFADDR_WRITER_FOREACH instead of IFADDR_READER_FOREACH At that point no other one modifies the list so IFADDR_READER_FOREACH is unnecessary. Use of IFADDR_READER_FOREACH is harmless in general though, if we try to detect contract violations of pserialize, using it violates the contract. So avoid using it makes life easy. Ensure to call if_addr_init with holding if_ioctl_lock Get rid of outdated comments Fix build of kernels without ether By throwing out if_enable_vlan_mtu and if_disable_vlan_mtu that created a unnecessary dependency from if.c to if_ethersubr.c. PR kern/52790 Rename IFNET_LOCK to IFNET_GLOBAL_LOCK IFNET_LOCK will be used in another lock, if_ioctl_lock (might be renamed then). Wrap if_ioctl_lock with IFNET_* macros (NFC) Also if_ioctl_lock perhaps needs to be renamed to something because it's now not just for ioctl... Reorder some destruction routines in if_detach - Destroy if_ioctl_lock at the end of the if_detach because it's used in various destruction routines - Move psref_target_destroy after pr_purgeif because we want to use psref in pr_purgeif (otherwise destruction procedures can be tricky) Ensure to call if_mcast_op with holding IFNET_LOCK Note that CARP doesn't deal with IFNET_LOCK yet. Remove IFNET_GLOBAL_LOCK where it's unnecessary because IFNET_LOCK is held Describe which lock is used to protect each member variable of struct ifnet Requested by skrll@ Write a guideline for converting an interface to IFEF_MPSAFE Requested by skrll@ Note that IFNET_LOCK must not be held in softint Don't set IFEF_MPSAFE unless NET_MPSAFE at this point Because recent investigations show that interfaces with IFEF_MPSAFE need to follow additional restrictions to work with the flag safely. We should enable it on an interface by default only if the interface surely satisfies the restrictions, which are described in if.h. Note that enabling IFEF_MPSAFE solely gains a few benefit on performance because the network stack is still serialized by the big kernel locks by default. .2.4 Tue Jan 02 10:20:34 UTC 2018 snj Pull up following revision(s) (requested by ozaki-r in ticket #456): sys/arch/arm/sunxi/sunxi_emac.c: 1.9 sys/dev/ic/dwc_gmac.c: 1.43-1.44 sys/dev/pci/if_iwm.c: 1.75 sys/dev/pci/if_wm.c: 1.543 sys/dev/pci/ixgbe/ixgbe.c: 1.112 sys/dev/pci/ixgbe/ixv.c: 1.74 sys/kern/sys_socket.c: 1.75 sys/net/agr/if_agr.c: 1.43 sys/net/bpf.c: 1.219 sys/net/if.c: 1.397, 1.399, 1.401-1.403, 1.406-1.410, 1.412-1.416 sys/net/if.h: 1.242-1.247, 1.250, 1.252-1.257 sys/net/if_bridge.c: 1.140 via patch, 1.142-1.146 sys/net/if_etherip.c: 1.40 sys/net/if_ethersubr.c: 1.243, 1.246 sys/net/if_faith.c: 1.57 sys/net/if_gif.c: 1.132 sys/net/if_l2tp.c: 1.15, 1.17 sys/net/if_loop.c: 1.98-1.101 sys/net/if_media.c: 1.35 sys/net/if_pppoe.c: 1.131-1.132 sys/net/if_spppsubr.c: 1.176-1.177 sys/net/if_tun.c: 1.142 sys/net/if_vlan.c: 1.107, 1.109, 1.114-1.121 sys/net/npf/npf_ifaddr.c: 1.3 sys/net/npf/npf_os.c: 1.8-1.9 sys/net/rtsock.c: 1.230 sys/netcan/if_canloop.c: 1.3-1.5 sys/netinet/if_arp.c: 1.255 sys/netinet/igmp.c: 1.65 sys/netinet/in.c: 1.210-1.211 sys/netinet/in_pcb.c: 1.180 sys/netinet/ip_carp.c: 1.92, 1.94 sys/netinet/ip_flow.c: 1.81 sys/netinet/ip_input.c: 1.362 sys/netinet/ip_mroute.c: 1.147 sys/netinet/ip_output.c: 1.283, 1.285, 1.287 sys/netinet6/frag6.c: 1.61 sys/netinet6/in6.c: 1.251, 1.255 sys/netinet6/in6_pcb.c: 1.162 sys/netinet6/ip6_flow.c: 1.35 sys/netinet6/ip6_input.c: 1.183 sys/netinet6/ip6_output.c: 1.196 sys/netinet6/mld6.c: 1.90 sys/netinet6/nd6.c: 1.239-1.240 sys/netinet6/nd6_nbr.c: 1.139 sys/netinet6/nd6_rtr.c: 1.136 sys/netipsec/ipsec_output.c: 1.65 sys/rump/net/lib/libnetinet/netinet_component.c: 1.9-1.10 kmem_intr_free kmem_intr_[z]alloced memory the underlying pools are the same but api-wise those should match Unify IFEF_*_MPSAFE into IFEF_MPSAFE There are already two flags for if_output and if_start, however, it seems such MPSAFE flags are eventually needed for all if_XXX operations. Having discrete flags for each operation is wasteful of if_extflags bits. So let's unify the flags into one: IFEF_MPSAFE. Fortunately IFEF_*_MPSAFE flags have never been included in any releases, so we can change them without breaking backward compatibility of the releases (though the kernel version of -current should be bumped). Note that if an interface have both MP-safe and non-MP-safe operations at a time, we have to set the IFEF_MPSAFE flag and let callees of non-MP-safe opeartions take the kernel lock. Proposed on tech-kern@ and tech-net@ Provide macros for softnet_lock and KERNEL_LOCK hiding NET_MPSAFE switch It reduces C&P codes such as "#ifndef NET_MPSAFE KERNEL_LOCK(1, NULL); ..." scattered all over the source code and makes it easy to identify remaining KERNEL_LOCK and/or softnet_lock that are held even if NET_MPSAFE. No functional change Hold KERNEL_LOCK on if_ioctl selectively based on IFEF_MPSAFE If IFEF_MPSAFE is set, hold the lock and otherwise don't hold. This change requires additions of KERNEL_LOCK to subsequence functions from if_ioctl such as ifmedia_ioctl and ifioctl_common to protect non-MP-safe components. Proposed on tech-kern@ and tech-net@ Ensure to hold if_ioctl_lock when calling if_flags_set Fix locking against myself on ifpromisc vlan_unconfig_locked could be called with holding if_ioctl_lock. Ensure to not turn on IFF_RUNNING of an interface until its initialization completes And ensure to turn off it before destruction as per IFF_RUNNING's description "resource allocated". (The description is a bit doubtful though, I believe the change is still proper.) Ensure to hold if_ioctl_lock on if_up and if_down One exception for if_down is if_detach; in the case the lock isn't needed because it's guaranteed that no other one can access ifp at that point. Make if_link_queue MP-safe if IFEF_MPSAFE if_link_queue is a queue to store events of link state changes, which is used to pass events from (typically) an interrupt handler to if_link_state_change softint. The queue was protected by KERNEL_LOCK so far, but if IFEF_MPSAFE is enabled, it becomes unsafe because (perhaps) an interrupt handler of an interface with IFEF_MPSAFE doesn't take KERNEL_LOCK. Protect it by a spin mutex. Additionally with this change KERNEL_LOCK of if_link_state_change softint is omitted if NET_MPSAFE is enabled. Note that the spin mutex is now ifp->if_snd.ifq_lock as well as the case of if_timer (see the comment). Use IFADDR_WRITER_FOREACH instead of IFADDR_READER_FOREACH At that point no other one modifies the list so IFADDR_READER_FOREACH is unnecessary. Use of IFADDR_READER_FOREACH is harmless in general though, if we try to detect contract violations of pserialize, using it violates the contract. So avoid using it makes life easy. Ensure to call if_addr_init with holding if_ioctl_lock Get rid of outdated comments Fix build of kernels without ether By throwing out if_enable_vlan_mtu and if_disable_vlan_mtu that created a unnecessary dependency from if.c to if_ethersubr.c. PR kern/52790 Rename IFNET_LOCK to IFNET_GLOBAL_LOCK IFNET_LOCK will be used in another lock, if_ioctl_lock (might be renamed then). Wrap if_ioctl_lock with IFNET_* macros (NFC) Also if_ioctl_lock perhaps needs to be renamed to something because it's now not just for ioctl... Reorder some destruction routines in if_detach - Destroy if_ioctl_lock at the end of the if_detach because it's used in various destruction routines - Move psref_target_destroy after pr_purgeif because we want to use psref in pr_purgeif (otherwise destruction procedures can be tricky) Ensure to call if_mcast_op with holding IFNET_LOCK Note that CARP doesn't deal with IFNET_LOCK yet. Remove IFNET_GLOBAL_LOCK where it's unnecessary because IFNET_LOCK is held Describe which lock is used to protect each member variable of struct ifnet Requested by skrll@ Write a guideline for converting an interface to IFEF_MPSAFE Requested by skrll@ Note that IFNET_LOCK must not be held in softint Don't set IFEF_MPSAFE unless NET_MPSAFE at this point Because recent investigations show that interfaces with IFEF_MPSAFE need to follow additional restrictions to work with the flag safely. We should enable it on an interface by default only if the interface surely satisfies the restrictions, which are described in if.h. Note that enabling IFEF_MPSAFE solely gains a few benefit on performance because the network stack is still serialized by the big kernel locks by default. |
| ip_input.c | 1.250 Thu Jul 19 20:48:55 UTC 2007 dyoung branches: 1.250.4; 1.250.6; Take steps to hide the radix_node implementation of the forwarding table from the forwarding table's users: Introduce rt_walktree() for walking the routing table and applying a function to each rtentry. Replace most rn_walktree() calls with it. Use rt_getkey()/rt_setkey() to get/set a route's destination. Keep a pointer to the sockaddr key in the rtentry, so that rtentry users do not have to grovel in the radix_node for the key. Add a RTM_GET method to rtrequest. Use that instead of radix_node lookups in, e.g., carp(4). Add sys/net/link_proto.c, which supplies sockaddr routines for link-layer socket addresses (sockaddr_dl). Cosmetic: Constify. KNF. Stop open-coding LIST_FOREACH, TAILQ_FOREACH, et cetera. Use NULL instead of 0 for null pointers. Use __arraycount(). Reduce gratuitous parenthesization. Stop using variadic arguments for rip6_output(), it is unnecessary. Remove the unnecessary rtentry member rt_genmask and the code to maintain it, since nothing actually used it. Make rt_maskedcopy() easier to read by using meaningful variable names. Extract a subroutine intern_netmask() for looking up a netmask in the masks table. Start converting backslash-ridden IPv6 macros in sys/netinet6/in6_var.h into inline subroutines that one can read without special eyeglasses. One functional change: when the kernel serves an RTM_GET, RTM_LOCK, or RTM_CHANGE request, it applies the netmask (if supplied) to a destination before searching for it in the forwarding table. I have changed sys/netinet/ip_carp.c, carp_setroute(), to remove the unlawful radix_node knowledge. Apart from the changes to carp(4), netiso, ATM, and strip(4), I have run the changes on three nodes in my wireless routing testbed, which involves IPv4 + IPv6 dynamic routing acrobatics, and it's working beautifully so far. Thu Jul 19 20:48:55 UTC 2007 dyoung branches: 1.250.4; 1.250.6; Take steps to hide the radix_node implementation of the forwarding table from the forwarding table's users: Introduce rt_walktree() for walking the routing table and applying a function to each rtentry. Replace most rn_walktree() calls with it. Use rt_getkey()/rt_setkey() to get/set a route's destination. Keep a pointer to the sockaddr key in the rtentry, so that rtentry users do not have to grovel in the radix_node for the key. Add a RTM_GET method to rtrequest. Use that instead of radix_node lookups in, e.g., carp(4). Add sys/net/link_proto.c, which supplies sockaddr routines for link-layer socket addresses (sockaddr_dl). Cosmetic: Constify. KNF. Stop open-coding LIST_FOREACH, TAILQ_FOREACH, et cetera. Use NULL instead of 0 for null pointers. Use __arraycount(). Reduce gratuitous parenthesization. Stop using variadic arguments for rip6_output(), it is unnecessary. Remove the unnecessary rtentry member rt_genmask and the code to maintain it, since nothing actually used it. Make rt_maskedcopy() easier to read by using meaningful variable names. Extract a subroutine intern_netmask() for looking up a netmask in the masks table. Start converting backslash-ridden IPv6 macros in sys/netinet6/in6_var.h into inline subroutines that one can read without special eyeglasses. One functional change: when the kernel serves an RTM_GET, RTM_LOCK, or RTM_CHANGE request, it applies the netmask (if supplied) to a destination before searching for it in the forwarding table. I have changed sys/netinet/ip_carp.c, carp_setroute(), to remove the unlawful radix_node knowledge. Apart from the changes to carp(4), netiso, ATM, and strip(4), I have run the changes on three nodes in my wireless routing testbed, which involves IPv4 + IPv6 dynamic routing acrobatics, and it's working beautifully so far. .4; 1.250.6; Take steps to hide the radix_node implementation of the forwarding table from the forwarding table's users: Introduce rt_walktree() for walking the routing table and applying a function to each rtentry. Replace most rn_walktree() calls with it. Use rt_getkey()/rt_setkey() to get/set a route's destination. Keep a pointer to the sockaddr key in the rtentry, so that rtentry users do not have to grovel in the radix_node for the key. Add a RTM_GET method to rtrequest. Use that instead of radix_node lookups in, e.g., carp(4). Add sys/net/link_proto.c, which supplies sockaddr routines for link-layer socket addresses (sockaddr_dl). Cosmetic: Constify. KNF. Stop open-coding LIST_FOREACH, TAILQ_FOREACH, et cetera. Use NULL instead of 0 for null pointers. Use __arraycount(). Reduce gratuitous parenthesization. Stop using variadic arguments for rip6_output(), it is unnecessary. Remove the unnecessary rtentry member rt_genmask and the code to maintain it, since nothing actually used it. Make rt_maskedcopy() easier to read by using meaningful variable names. Extract a subroutine intern_netmask() for looking up a netmask in the masks table. Start converting backslash-ridden IPv6 macros in sys/netinet6/in6_var.h into inline subroutines that one can read without special eyeglasses. One functional change: when the kernel serves an RTM_GET, RTM_LOCK, or RTM_CHANGE request, it applies the netmask (if supplied) to a destination before searching for it in the forwarding table. I have changed sys/netinet/ip_carp.c, carp_setroute(), to remove the unlawful radix_node knowledge. Apart from the changes to carp(4), netiso, ATM, and strip(4), I have run the changes on three nodes in my wireless routing testbed, which involves IPv4 + IPv6 dynamic routing acrobatics, and it's working beautifully so far. 1.250.6.2 Thu Jul 19 20:48:56 UTC 2007 dyoung Take steps to hide the radix_node implementation of the forwarding table from the forwarding table's users: Introduce rt_walktree() for walking the routing table and applying a function to each rtentry. Replace most rn_walktree() calls with it. Use rt_getkey()/rt_setkey() to get/set a route's destination. Keep a pointer to the sockaddr key in the rtentry, so that rtentry users do not have to grovel in the radix_node for the key. Add a RTM_GET method to rtrequest. Use that instead of radix_node lookups in, e.g., carp(4). Add sys/net/link_proto.c, which supplies sockaddr routines for link-layer socket addresses (sockaddr_dl). Cosmetic: Constify. KNF. Stop open-coding LIST_FOREACH, TAILQ_FOREACH, et cetera. Use NULL instead of 0 for null pointers. Use __arraycount(). Reduce gratuitous parenthesization. Stop using variadic arguments for rip6_output(), it is unnecessary. Remove the unnecessary rtentry member rt_genmask and the code to maintain it, since nothing actually used it. Make rt_maskedcopy() easier to read by using meaningful variable names. Extract a subroutine intern_netmask() for looking up a netmask in the masks table. Start converting backslash-ridden IPv6 macros in sys/netinet6/in6_var.h into inline subroutines that one can read without special eyeglasses. One functional change: when the kernel serves an RTM_GET, RTM_LOCK, or RTM_CHANGE request, it applies the netmask (if supplied) to a destination before searching for it in the forwarding table. I have changed sys/netinet/ip_carp.c, carp_setroute(), to remove the unlawful radix_node knowledge. Apart from the changes to carp(4), netiso, ATM, and strip(4), I have run the changes on three nodes in my wireless routing testbed, which involves IPv4 + IPv6 dynamic routing acrobatics, and it's working beautifully so far. 1.250.6.1 Thu Jul 19 20:48:55 UTC 2007 dyoung file ip_input.c was added on branch matt-mips64 on 2007-07-19 20:48:56 +0000 1.250.4.6 Tue Nov 27 19:38:57 UTC 2007 joerg Sync with HEAD. amd64 Xen support needs testing. 1.250.4.5 Sun Nov 11 16:48:31 UTC 2007 joerg Sync with HEAD. 1.250.4.4 Thu Oct 04 15:44:52 UTC 2007 joerg Sync with HEAD. 1.250.4.3 Tue Oct 02 18:29:19 UTC 2007 joerg Sync with HEAD. 1.250.4.2 Mon Sep 03 16:49:04 UTC 2007 jmcneill Sync with HEAD. |
| /src/sys/arch/mips/mips/ | |
| mips_machdep.c | 1.250 Sat Oct 29 18:56:49 UTC 2011 jakllsch branches: 1.250.2; 1.250.6; Add Broadcom BCM3302 CPU to the table. Sat Oct 29 18:56:49 UTC 2011 jakllsch branches: 1.250.2; 1.250.6; Add Broadcom BCM3302 CPU to the table. .2; 1.250.6; Add Broadcom BCM3302 CPU to the table. 1.250.6.5 Tue Mar 06 18:26:38 UTC 2012 mrg sync to -current 1.250.6.4 Tue Mar 06 09:56:08 UTC 2012 mrg sync to -current 1.250.6.3 Sun Mar 04 00:46:11 UTC 2012 mrg sync to latest -current. 1.250.6.2 Fri Feb 24 09:11:31 UTC 2012 mrg sync to -current. 1.250.6.1 Sat Feb 18 07:32:40 UTC 2012 mrg merge to -current. 1.250.2.2 Thu May 22 11:39:57 UTC 2014 yamt sync with head. for a reference, the tree before this commit was tagged as yamt-pagecache-tag8. this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments") 1.250.2.1 Tue Apr 17 00:06:40 UTC 2012 yamt sync with head |
| /src/sys/netcan/ | |
| if_canloop.c | 1.2.2.1 Tue Jan 02 10:20:34 UTC 2018 snj Pull up following revision(s) (requested by ozaki-r in ticket #456): sys/arch/arm/sunxi/sunxi_emac.c: 1.9 sys/dev/ic/dwc_gmac.c: 1.43-1.44 sys/dev/pci/if_iwm.c: 1.75 sys/dev/pci/if_wm.c: 1.543 sys/dev/pci/ixgbe/ixgbe.c: 1.112 sys/dev/pci/ixgbe/ixv.c: 1.74 sys/kern/sys_socket.c: 1.75 sys/net/agr/if_agr.c: 1.43 sys/net/bpf.c: 1.219 sys/net/if.c: 1.397, 1.399, 1.401-1.403, 1.406-1.410, 1.412-1.416 sys/net/if.h: 1.242-1.247, 1.250, 1.252-1.257 sys/net/if_bridge.c: 1.140 via patch, 1.142-1.146 sys/net/if_etherip.c: 1.40 sys/net/if_ethersubr.c: 1.243, 1.246 sys/net/if_faith.c: 1.57 sys/net/if_gif.c: 1.132 sys/net/if_l2tp.c: 1.15, 1.17 sys/net/if_loop.c: 1.98-1.101 sys/net/if_media.c: 1.35 sys/net/if_pppoe.c: 1.131-1.132 sys/net/if_spppsubr.c: 1.176-1.177 sys/net/if_tun.c: 1.142 sys/net/if_vlan.c: 1.107, 1.109, 1.114-1.121 sys/net/npf/npf_ifaddr.c: 1.3 sys/net/npf/npf_os.c: 1.8-1.9 sys/net/rtsock.c: 1.230 sys/netcan/if_canloop.c: 1.3-1.5 sys/netinet/if_arp.c: 1.255 sys/netinet/igmp.c: 1.65 sys/netinet/in.c: 1.210-1.211 sys/netinet/in_pcb.c: 1.180 sys/netinet/ip_carp.c: 1.92, 1.94 sys/netinet/ip_flow.c: 1.81 sys/netinet/ip_input.c: 1.362 sys/netinet/ip_mroute.c: 1.147 sys/netinet/ip_output.c: 1.283, 1.285, 1.287 sys/netinet6/frag6.c: 1.61 sys/netinet6/in6.c: 1.251, 1.255 sys/netinet6/in6_pcb.c: 1.162 sys/netinet6/ip6_flow.c: 1.35 sys/netinet6/ip6_input.c: 1.183 sys/netinet6/ip6_output.c: 1.196 sys/netinet6/mld6.c: 1.90 sys/netinet6/nd6.c: 1.239-1.240 sys/netinet6/nd6_nbr.c: 1.139 sys/netinet6/nd6_rtr.c: 1.136 sys/netipsec/ipsec_output.c: 1.65 sys/rump/net/lib/libnetinet/netinet_component.c: 1.9-1.10 kmem_intr_free kmem_intr_[z]alloced memory the underlying pools are the same but api-wise those should match Unify IFEF_*_MPSAFE into IFEF_MPSAFE There are already two flags for if_output and if_start, however, it seems such MPSAFE flags are eventually needed for all if_XXX operations. Having discrete flags for each operation is wasteful of if_extflags bits. So let's unify the flags into one: IFEF_MPSAFE. Fortunately IFEF_*_MPSAFE flags have never been included in any releases, so we can change them without breaking backward compatibility of the releases (though the kernel version of -current should be bumped). Note that if an interface have both MP-safe and non-MP-safe operations at a time, we have to set the IFEF_MPSAFE flag and let callees of non-MP-safe opeartions take the kernel lock. Proposed on tech-kern@ and tech-net@ Provide macros for softnet_lock and KERNEL_LOCK hiding NET_MPSAFE switch It reduces C&P codes such as "#ifndef NET_MPSAFE KERNEL_LOCK(1, NULL); ..." scattered all over the source code and makes it easy to identify remaining KERNEL_LOCK and/or softnet_lock that are held even if NET_MPSAFE. No functional change Hold KERNEL_LOCK on if_ioctl selectively based on IFEF_MPSAFE If IFEF_MPSAFE is set, hold the lock and otherwise don't hold. This change requires additions of KERNEL_LOCK to subsequence functions from if_ioctl such as ifmedia_ioctl and ifioctl_common to protect non-MP-safe components. Proposed on tech-kern@ and tech-net@ Ensure to hold if_ioctl_lock when calling if_flags_set Fix locking against myself on ifpromisc vlan_unconfig_locked could be called with holding if_ioctl_lock. Ensure to not turn on IFF_RUNNING of an interface until its initialization completes And ensure to turn off it before destruction as per IFF_RUNNING's description "resource allocated". (The description is a bit doubtful though, I believe the change is still proper.) Ensure to hold if_ioctl_lock on if_up and if_down One exception for if_down is if_detach; in the case the lock isn't needed because it's guaranteed that no other one can access ifp at that point. Make if_link_queue MP-safe if IFEF_MPSAFE if_link_queue is a queue to store events of link state changes, which is used to pass events from (typically) an interrupt handler to if_link_state_change softint. The queue was protected by KERNEL_LOCK so far, but if IFEF_MPSAFE is enabled, it becomes unsafe because (perhaps) an interrupt handler of an interface with IFEF_MPSAFE doesn't take KERNEL_LOCK. Protect it by a spin mutex. Additionally with this change KERNEL_LOCK of if_link_state_change softint is omitted if NET_MPSAFE is enabled. Note that the spin mutex is now ifp->if_snd.ifq_lock as well as the case of if_timer (see the comment). Use IFADDR_WRITER_FOREACH instead of IFADDR_READER_FOREACH At that point no other one modifies the list so IFADDR_READER_FOREACH is unnecessary. Use of IFADDR_READER_FOREACH is harmless in general though, if we try to detect contract violations of pserialize, using it violates the contract. So avoid using it makes life easy. Ensure to call if_addr_init with holding if_ioctl_lock Get rid of outdated comments Fix build of kernels without ether By throwing out if_enable_vlan_mtu and if_disable_vlan_mtu that created a unnecessary dependency from if.c to if_ethersubr.c. PR kern/52790 Rename IFNET_LOCK to IFNET_GLOBAL_LOCK IFNET_LOCK will be used in another lock, if_ioctl_lock (might be renamed then). Wrap if_ioctl_lock with IFNET_* macros (NFC) Also if_ioctl_lock perhaps needs to be renamed to something because it's now not just for ioctl... Reorder some destruction routines in if_detach - Destroy if_ioctl_lock at the end of the if_detach because it's used in various destruction routines - Move psref_target_destroy after pr_purgeif because we want to use psref in pr_purgeif (otherwise destruction procedures can be tricky) Ensure to call if_mcast_op with holding IFNET_LOCK Note that CARP doesn't deal with IFNET_LOCK yet. Remove IFNET_GLOBAL_LOCK where it's unnecessary because IFNET_LOCK is held Describe which lock is used to protect each member variable of struct ifnet Requested by skrll@ Write a guideline for converting an interface to IFEF_MPSAFE Requested by skrll@ Note that IFNET_LOCK must not be held in softint Don't set IFEF_MPSAFE unless NET_MPSAFE at this point Because recent investigations show that interfaces with IFEF_MPSAFE need to follow additional restrictions to work with the flag safely. We should enable it on an interface by default only if the interface surely satisfies the restrictions, which are described in if.h. Note that enabling IFEF_MPSAFE solely gains a few benefit on performance because the network stack is still serialized by the big kernel locks by default. |
| /src/sys/rump/net/lib/libnetinet/ | |
| netinet_component.c | 1.8.6.1 Tue Jan 02 10:20:34 UTC 2018 snj Pull up following revision(s) (requested by ozaki-r in ticket #456): sys/arch/arm/sunxi/sunxi_emac.c: 1.9 sys/dev/ic/dwc_gmac.c: 1.43-1.44 sys/dev/pci/if_iwm.c: 1.75 sys/dev/pci/if_wm.c: 1.543 sys/dev/pci/ixgbe/ixgbe.c: 1.112 sys/dev/pci/ixgbe/ixv.c: 1.74 sys/kern/sys_socket.c: 1.75 sys/net/agr/if_agr.c: 1.43 sys/net/bpf.c: 1.219 sys/net/if.c: 1.397, 1.399, 1.401-1.403, 1.406-1.410, 1.412-1.416 sys/net/if.h: 1.242-1.247, 1.250, 1.252-1.257 sys/net/if_bridge.c: 1.140 via patch, 1.142-1.146 sys/net/if_etherip.c: 1.40 sys/net/if_ethersubr.c: 1.243, 1.246 sys/net/if_faith.c: 1.57 sys/net/if_gif.c: 1.132 sys/net/if_l2tp.c: 1.15, 1.17 sys/net/if_loop.c: 1.98-1.101 sys/net/if_media.c: 1.35 sys/net/if_pppoe.c: 1.131-1.132 sys/net/if_spppsubr.c: 1.176-1.177 sys/net/if_tun.c: 1.142 sys/net/if_vlan.c: 1.107, 1.109, 1.114-1.121 sys/net/npf/npf_ifaddr.c: 1.3 sys/net/npf/npf_os.c: 1.8-1.9 sys/net/rtsock.c: 1.230 sys/netcan/if_canloop.c: 1.3-1.5 sys/netinet/if_arp.c: 1.255 sys/netinet/igmp.c: 1.65 sys/netinet/in.c: 1.210-1.211 sys/netinet/in_pcb.c: 1.180 sys/netinet/ip_carp.c: 1.92, 1.94 sys/netinet/ip_flow.c: 1.81 sys/netinet/ip_input.c: 1.362 sys/netinet/ip_mroute.c: 1.147 sys/netinet/ip_output.c: 1.283, 1.285, 1.287 sys/netinet6/frag6.c: 1.61 sys/netinet6/in6.c: 1.251, 1.255 sys/netinet6/in6_pcb.c: 1.162 sys/netinet6/ip6_flow.c: 1.35 sys/netinet6/ip6_input.c: 1.183 sys/netinet6/ip6_output.c: 1.196 sys/netinet6/mld6.c: 1.90 sys/netinet6/nd6.c: 1.239-1.240 sys/netinet6/nd6_nbr.c: 1.139 sys/netinet6/nd6_rtr.c: 1.136 sys/netipsec/ipsec_output.c: 1.65 sys/rump/net/lib/libnetinet/netinet_component.c: 1.9-1.10 kmem_intr_free kmem_intr_[z]alloced memory the underlying pools are the same but api-wise those should match Unify IFEF_*_MPSAFE into IFEF_MPSAFE There are already two flags for if_output and if_start, however, it seems such MPSAFE flags are eventually needed for all if_XXX operations. Having discrete flags for each operation is wasteful of if_extflags bits. So let's unify the flags into one: IFEF_MPSAFE. Fortunately IFEF_*_MPSAFE flags have never been included in any releases, so we can change them without breaking backward compatibility of the releases (though the kernel version of -current should be bumped). Note that if an interface have both MP-safe and non-MP-safe operations at a time, we have to set the IFEF_MPSAFE flag and let callees of non-MP-safe opeartions take the kernel lock. Proposed on tech-kern@ and tech-net@ Provide macros for softnet_lock and KERNEL_LOCK hiding NET_MPSAFE switch It reduces C&P codes such as "#ifndef NET_MPSAFE KERNEL_LOCK(1, NULL); ..." scattered all over the source code and makes it easy to identify remaining KERNEL_LOCK and/or softnet_lock that are held even if NET_MPSAFE. No functional change Hold KERNEL_LOCK on if_ioctl selectively based on IFEF_MPSAFE If IFEF_MPSAFE is set, hold the lock and otherwise don't hold. This change requires additions of KERNEL_LOCK to subsequence functions from if_ioctl such as ifmedia_ioctl and ifioctl_common to protect non-MP-safe components. Proposed on tech-kern@ and tech-net@ Ensure to hold if_ioctl_lock when calling if_flags_set Fix locking against myself on ifpromisc vlan_unconfig_locked could be called with holding if_ioctl_lock. Ensure to not turn on IFF_RUNNING of an interface until its initialization completes And ensure to turn off it before destruction as per IFF_RUNNING's description "resource allocated". (The description is a bit doubtful though, I believe the change is still proper.) Ensure to hold if_ioctl_lock on if_up and if_down One exception for if_down is if_detach; in the case the lock isn't needed because it's guaranteed that no other one can access ifp at that point. Make if_link_queue MP-safe if IFEF_MPSAFE if_link_queue is a queue to store events of link state changes, which is used to pass events from (typically) an interrupt handler to if_link_state_change softint. The queue was protected by KERNEL_LOCK so far, but if IFEF_MPSAFE is enabled, it becomes unsafe because (perhaps) an interrupt handler of an interface with IFEF_MPSAFE doesn't take KERNEL_LOCK. Protect it by a spin mutex. Additionally with this change KERNEL_LOCK of if_link_state_change softint is omitted if NET_MPSAFE is enabled. Note that the spin mutex is now ifp->if_snd.ifq_lock as well as the case of if_timer (see the comment). Use IFADDR_WRITER_FOREACH instead of IFADDR_READER_FOREACH At that point no other one modifies the list so IFADDR_READER_FOREACH is unnecessary. Use of IFADDR_READER_FOREACH is harmless in general though, if we try to detect contract violations of pserialize, using it violates the contract. So avoid using it makes life easy. Ensure to call if_addr_init with holding if_ioctl_lock Get rid of outdated comments Fix build of kernels without ether By throwing out if_enable_vlan_mtu and if_disable_vlan_mtu that created a unnecessary dependency from if.c to if_ethersubr.c. PR kern/52790 Rename IFNET_LOCK to IFNET_GLOBAL_LOCK IFNET_LOCK will be used in another lock, if_ioctl_lock (might be renamed then). Wrap if_ioctl_lock with IFNET_* macros (NFC) Also if_ioctl_lock perhaps needs to be renamed to something because it's now not just for ioctl... Reorder some destruction routines in if_detach - Destroy if_ioctl_lock at the end of the if_detach because it's used in various destruction routines - Move psref_target_destroy after pr_purgeif because we want to use psref in pr_purgeif (otherwise destruction procedures can be tricky) Ensure to call if_mcast_op with holding IFNET_LOCK Note that CARP doesn't deal with IFNET_LOCK yet. Remove IFNET_GLOBAL_LOCK where it's unnecessary because IFNET_LOCK is held Describe which lock is used to protect each member variable of struct ifnet Requested by skrll@ Write a guideline for converting an interface to IFEF_MPSAFE Requested by skrll@ Note that IFNET_LOCK must not be held in softint Don't set IFEF_MPSAFE unless NET_MPSAFE at this point Because recent investigations show that interfaces with IFEF_MPSAFE need to follow additional restrictions to work with the flag safely. We should enable it on an interface by default only if the interface surely satisfies the restrictions, which are described in if.h. Note that enabling IFEF_MPSAFE solely gains a few benefit on performance because the network stack is still serialized by the big kernel locks by default. |
| /src/sys/kern/ | |
| vfs_subr.c | 1.250 Sun Jun 19 18:22:36 UTC 2005 elad branches: 1.250.2; - Avoid pollution of struct vnode. Save the fingerprint evaluation status in the veriexec table entry; the lookups are very cheap now. Suggested by Chuq. - Handle non-regular (!VREG) files correctly). - Remove (no longer needed) FINGERPRINT_NOENTRY. Sun Jun 19 18:22:36 UTC 2005 elad branches: 1.250.2; - Avoid pollution of struct vnode. Save the fingerprint evaluation status in the veriexec table entry; the lookups are very cheap now. Suggested by Chuq. - Handle non-regular (!VREG) files correctly). - Remove (no longer needed) FINGERPRINT_NOENTRY. 1.243.2.3 Sat Jul 02 15:53:52 UTC 2005 tron Pull up revision 1.250 (requested by elad in ticket #487): - Avoid pollution of struct vnode. Save the fingerprint evaluation status in the veriexec table entry; the lookups are very cheap now. Suggested by Chuq. - Handle non-regular (!VREG) files correctly). - Remove (no longer needed) FINGERPRINT_NOENTRY. 1.250.2.11 Wed Feb 27 08:36:56 UTC 2008 yamt sync with head. 1.250.2.10 Mon Feb 11 14:59:58 UTC 2008 yamt sync with head. 1.250.2.9 Mon Feb 04 09:24:23 UTC 2008 yamt sync with head. 1.250.2.8 Mon Jan 21 09:46:32 UTC 2008 yamt sync with head 1.250.2.7 Fri Dec 07 17:33:22 UTC 2007 yamt sync with head 1.250.2.6 Thu Nov 15 11:44:57 UTC 2007 yamt sync with head. 1.250.2.5 Sat Oct 27 11:35:41 UTC 2007 yamt sync with head. |
| /src/sys/arch/sparc64/sparc64/ | |
| pmap.c | 1.250 Fri Feb 05 00:04:10 UTC 2010 martin branches: 1.250.2; Avoid taking a (not yet) initialized mutex early during bootstrap. Fri Feb 05 00:04:10 UTC 2010 martin branches: 1.250.2; Avoid taking a (not yet) initialized mutex early during bootstrap. 1.250.2.7 Sat Nov 06 08:08:22 UTC 2010 uebayasi Sync with HEAD. 1.250.2.6 Sun Oct 31 03:46:19 UTC 2010 uebayasi We already have a flag PMAP_NOCACHE. s/PMAP_UNMANAGED/PMAN_NOCACHE/. Pointed out by Chuck Silvers, thanks. 1.250.2.5 Sat Oct 30 08:41:11 UTC 2010 uebayasi Implement pmap_physload_device(9) to replace xmd(4) MD backend. Implement pmap_mmap(9) and use it from mem(4) and xmd(4). 1.250.2.4 Tue Aug 17 06:45:20 UTC 2010 uebayasi Sync with HEAD. 1.250.2.3 Fri Apr 30 14:39:53 UTC 2010 uebayasi Sync with HEAD. 1.250.2.2 Tue Apr 27 07:19:29 UTC 2010 uebayasi Support PMAP_UNMANAGED in some pmaps. (Others should be converted eventually, but no problem while managed device page is not used.) 1.250.2.1 Thu Feb 25 05:54:03 UTC 2010 uebayasi Use VM_PAGE_TO_MD(). Only compile tested. |
| /src/sys/arch/sparc/sparc/ | |
| intr.c | 1.100.20.2 Fri Jan 28 07:16:13 UTC 2011 snj Pull up following revision(s) (requested by mrg in ticket #1532): sys/arch/sparc/sparc/cpu.c: revision 1.215 via patch sys/arch/sparc/sparc/cpuvar.h: revision 1.78 via patch sys/arch/sparc/sparc/genassym.cf: revision 1.57 via patch sys/arch/sparc/sparc/intr.c: revision 1.103-1.105 via patch sys/arch/sparc/sparc/locore.s: revision 1.247, 1.250 via patch sys/arch/sparc/sparc/pmap.c: revision 1.329 via patch - print the cpu_number() when we get a strayintr(). - use _MAXNCPU instead of 4 - convert xpmsg_lock from a simplelock to a kmutex - don't wait for sparc_noop IPI calls - remove xmpsg_func's "retval" parameter and usage - remove the IPI at high IPL message - rework cpu_attach() a bunch, refactoring calls to getcpuinfo() and setting of cpi, and split most of the non-boot CPU handling into a new function - make CPU_INFO_FOREACH() work whether modular or not - move the MP cpu_info pages earlier - move a few things in cpu.c around to colsolidate the MP code together - remove useless if (cpus == NULL) tests -- cpus is an array now with these changes, and an additional change to crazyintr() to not printf(), i can get to single user shell on my SS20 again. i can run a few commands but some of them cause hangs. "ps auxw" works, but "top -b" does not. convert sparc "intrcnt" counters to evcnt(9) style. XXX some of the names could be better, but i just copied them from the old intrnames in locore. i benchmarked this with a simple test of ircii ./configure && make, to see if the additional load/store & arith would cause any noticeable degradation as the change also converts 32 bit counters to 64 bits. amusingly, the only trend i saw in this was that for both portions, i see a consistent (across at least 8 runs) benefit of about 0.8% improvement. ie, the newer larger code size / counter size code actually runs faster for some reason.. maybe there's a cacheline effect in the size of the code? XXX the current implementation depends on a couple of things: XXX - ev_count member of evcnt{} is first and has offset 0 XXX - that sizeof(struct evcnt) equals 32 XXX if these are not true, locore.s has #error's to catch it - remove unused ft_want_ast() - give nmi_sun* ENTRY() points so they show up in symbols properly - add some disabled code to use this cpu's idlelwp area when hatching a cpu, but right now it makes this worse not better... 1.118.22.1 Fri Dec 08 06:05:15 UTC 2017 msaitoh Pull up following revision(s) (requested by macallan in ticket #429): sys/arch/sparc/sparc/cpu.c: revision 1.250 sys/arch/sparc/include/cpu.h: revision 1.99 sys/arch/sparc/sparc/intr.c: revision 1.119 - return early in xcall() if the function is sparc_noop() instead of triggering the IPI and then ignoring responses ( or lack thereof ) - write the .tag field last to avoid a race when polling for an incoming IPI - add event counters for IPIs being caught with the mutex not held, and for messages that are already marked as completed With this my SS20 made it through 48 hours of pkgsrc with MAKE_JOBS=3 and a pair of SM81s. Hypersparcs still crash but instead of craziness we get actual error messages, apparently one CPU will occasionally do a watchdog reset, which according to the manual is caused by catching a trap with traps disabled. Now to figure out how that can even happen... 1.118.4.1 Wed Mar 21 11:52:49 UTC 2018 martin Pull up following revision(s) (requested by mrg in ticket #1585): sys/arch/sparc/sparc/cpu.c: revision 1.250 (patch) sys/arch/sparc/include/cpu.h: revision 1.99 (patch -> cpuvar.h) sys/arch/sparc/sparc/intr.c: revision 1.119 (patch) - return early in xcall() if the function is sparc_noop() instead of triggering the IPI and then ignoring responses ( or lack thereof ) - write the .tag field last to avoid a race when polling for an incoming IPI - add event counters for IPIs being caught with the mutex not held, and for messages that are already marked as completed With this my SS20 made it through 48 hours of pkgsrc with MAKE_JOBS=3 and a pair of SM81s. Hypersparcs still crash but instead of craziness we get actual error messages, apparently one CPU will occasionally do a watchdog reset, which according to the manual is caused by catching a trap with traps disabled. Now to figure out how that can even happen... |
| cpu.c | 1.250 Sat Dec 02 00:48:05 UTC 2017 macallan - return early in xcall() if the function is sparc_noop() instead of triggering the IPI and then ignoring responses ( or lack thereof ) - write the .tag field last to avoid a race when polling for an incoming IPI - add event counters for IPIs being caught with the mutex not held, and for messages that are already marked as completed With this my SS20 made it through 48 hours of pkgsrc with MAKE_JOBS=3 and a pair of SM81s. Hypersparcs still crash but instead of craziness we get actual error messages, apparently one CPU will occasionally do a watchdog reset, which according to the manual is caused by catching a trap with traps disabled. Now to figure out how that can even happen... 1.211.8.3 Fri Jan 28 07:16:13 UTC 2011 snj Pull up following revision(s) (requested by mrg in ticket #1532): sys/arch/sparc/sparc/cpu.c: revision 1.215 via patch sys/arch/sparc/sparc/cpuvar.h: revision 1.78 via patch sys/arch/sparc/sparc/genassym.cf: revision 1.57 via patch sys/arch/sparc/sparc/intr.c: revision 1.103-1.105 via patch sys/arch/sparc/sparc/locore.s: revision 1.247, 1.250 via patch sys/arch/sparc/sparc/pmap.c: revision 1.329 via patch - print the cpu_number() when we get a strayintr(). - use _MAXNCPU instead of 4 - convert xpmsg_lock from a simplelock to a kmutex - don't wait for sparc_noop IPI calls - remove xmpsg_func's "retval" parameter and usage - remove the IPI at high IPL message - rework cpu_attach() a bunch, refactoring calls to getcpuinfo() and setting of cpi, and split most of the non-boot CPU handling into a new function - make CPU_INFO_FOREACH() work whether modular or not - move the MP cpu_info pages earlier - move a few things in cpu.c around to colsolidate the MP code together - remove useless if (cpus == NULL) tests -- cpus is an array now with these changes, and an additional change to crazyintr() to not printf(), i can get to single user shell on my SS20 again. i can run a few commands but some of them cause hangs. "ps auxw" works, but "top -b" does not. convert sparc "intrcnt" counters to evcnt(9) style. XXX some of the names could be better, but i just copied them from the old intrnames in locore. i benchmarked this with a simple test of ircii ./configure && make, to see if the additional load/store & arith would cause any noticeable degradation as the change also converts 32 bit counters to 64 bits. amusingly, the only trend i saw in this was that for both portions, i see a consistent (across at least 8 runs) benefit of about 0.8% improvement. ie, the newer larger code size / counter size code actually runs faster for some reason.. maybe there's a cacheline effect in the size of the code? XXX the current implementation depends on a couple of things: XXX - ev_count member of evcnt{} is first and has offset 0 XXX - that sizeof(struct evcnt) equals 32 XXX if these are not true, locore.s has #error's to catch it - remove unused ft_want_ast() - give nmi_sun* ENTRY() points so they show up in symbols properly - add some disabled code to use this cpu's idlelwp area when hatching a cpu, but right now it makes this worse not better... 1.248.2.1 Wed Mar 21 11:52:49 UTC 2018 martin Pull up following revision(s) (requested by mrg in ticket #1585): sys/arch/sparc/sparc/cpu.c: revision 1.250 (patch) sys/arch/sparc/include/cpu.h: revision 1.99 (patch -> cpuvar.h) sys/arch/sparc/sparc/intr.c: revision 1.119 (patch) - return early in xcall() if the function is sparc_noop() instead of triggering the IPI and then ignoring responses ( or lack thereof ) - write the .tag field last to avoid a race when polling for an incoming IPI - add event counters for IPIs being caught with the mutex not held, and for messages that are already marked as completed With this my SS20 made it through 48 hours of pkgsrc with MAKE_JOBS=3 and a pair of SM81s. Hypersparcs still crash but instead of craziness we get actual error messages, apparently one CPU will occasionally do a watchdog reset, which according to the manual is caused by catching a trap with traps disabled. Now to figure out how that can even happen... 1.249.6.1 Fri Dec 08 06:05:15 UTC 2017 msaitoh Pull up following revision(s) (requested by macallan in ticket #429): sys/arch/sparc/sparc/cpu.c: revision 1.250 sys/arch/sparc/include/cpu.h: revision 1.99 sys/arch/sparc/sparc/intr.c: revision 1.119 - return early in xcall() if the function is sparc_noop() instead of triggering the IPI and then ignoring responses ( or lack thereof ) - write the .tag field last to avoid a race when polling for an incoming IPI - add event counters for IPIs being caught with the mutex not held, and for messages that are already marked as completed With this my SS20 made it through 48 hours of pkgsrc with MAKE_JOBS=3 and a pair of SM81s. Hypersparcs still crash but instead of craziness we get actual error messages, apparently one CPU will occasionally do a watchdog reset, which according to the manual is caused by catching a trap with traps disabled. Now to figure out how that can even happen... |
| /src/share/misc/ | |
| acronyms | 1.250 Mon Dec 12 20:41:49 UTC 2016 riastradh branches: 1.250.2; wtf tfw Courtesy of i3enedek. Mon Dec 12 20:41:49 UTC 2016 riastradh branches: 1.250.2; wtf tfw Courtesy of i3enedek. 1.250.2.1 Fri Apr 21 16:53:20 UTC 2017 bouyer Sync with HEAD |
| /src/share/man/man8/ | |
| MAKEDEV.8 | 1.32.2.1 Sat Sep 26 19:52:09 UTC 2009 snj Pull up following revision(s) (requested by jmcneill in ticket #946): distrib/sets/lists/man/mi: revision 1.1155 doc/CHANGES: revision 1.1285 etc/MAKEDEV.tmpl: revision 1.128 share/man/man4/Makefile: revision 1.498 via patch share/man/man4/hdaudio.4: revision 1.1-1.3 share/man/man8/MAKEDEV.8: revision 1.36 sys/arch/amd64/conf/GENERIC: revision 1.250-1.251 sys/arch/amd64/conf/XEN3_DOM0: revision 1.44-1.45 sys/arch/i386/conf/ALL: revision 1.206-1.207 sys/arch/i386/conf/GENERIC: revision 1.942-1.943 sys/arch/i386/conf/XEN3_DOM0: patch sys/conf/majors: revision 1.47 via patch sys/dev/pci/hdaudio/files.hdaudio: revision 1.1-1.2 sys/dev/pci/hdaudio/hdaudio.c: revision 1.1-1.4 sys/dev/pci/hdaudio/hdaudio_afg.c: revisions 1.1-1.14 sys/dev/pci/hdaudio/hdaudio_mixer.h: revisions 1.1-1.3 sys/dev/pci/hdaudio/hdaudio_pci.c: revisions 1.1-1.2 sys/dev/pci/hdaudio/hdaudioio.h: revisions 1.1-1.2 sys/dev/pci/hdaudio/hdaudioreg.h: revisions 1.1-1.3 sys/dev/pci/hdaudio/hdaudiovar.h: revisions 1.1-1.4 sys/dev/pci/files.pci: revisions 1.319 and 1.322 via patch hdaudio(4) is a standards-compliant driver for High Definition Audio. It will replace azalia(4) after testing. To use, comment out azalia in your kernel configuration and uncomment the hdaudio and hdafg lines so it reads: hdaudio* at pci? dev ? function ? hdafg* at hdaudiobus? You should also: cd /dev sh MAKEDEV audio |
| /src/sys/net/npf/ | |
| npf_ifaddr.c | 1.2.12.1 Tue Jan 02 10:20:33 UTC 2018 snj Pull up following revision(s) (requested by ozaki-r in ticket #456): sys/arch/arm/sunxi/sunxi_emac.c: 1.9 sys/dev/ic/dwc_gmac.c: 1.43-1.44 sys/dev/pci/if_iwm.c: 1.75 sys/dev/pci/if_wm.c: 1.543 sys/dev/pci/ixgbe/ixgbe.c: 1.112 sys/dev/pci/ixgbe/ixv.c: 1.74 sys/kern/sys_socket.c: 1.75 sys/net/agr/if_agr.c: 1.43 sys/net/bpf.c: 1.219 sys/net/if.c: 1.397, 1.399, 1.401-1.403, 1.406-1.410, 1.412-1.416 sys/net/if.h: 1.242-1.247, 1.250, 1.252-1.257 sys/net/if_bridge.c: 1.140 via patch, 1.142-1.146 sys/net/if_etherip.c: 1.40 sys/net/if_ethersubr.c: 1.243, 1.246 sys/net/if_faith.c: 1.57 sys/net/if_gif.c: 1.132 sys/net/if_l2tp.c: 1.15, 1.17 sys/net/if_loop.c: 1.98-1.101 sys/net/if_media.c: 1.35 sys/net/if_pppoe.c: 1.131-1.132 sys/net/if_spppsubr.c: 1.176-1.177 sys/net/if_tun.c: 1.142 sys/net/if_vlan.c: 1.107, 1.109, 1.114-1.121 sys/net/npf/npf_ifaddr.c: 1.3 sys/net/npf/npf_os.c: 1.8-1.9 sys/net/rtsock.c: 1.230 sys/netcan/if_canloop.c: 1.3-1.5 sys/netinet/if_arp.c: 1.255 sys/netinet/igmp.c: 1.65 sys/netinet/in.c: 1.210-1.211 sys/netinet/in_pcb.c: 1.180 sys/netinet/ip_carp.c: 1.92, 1.94 sys/netinet/ip_flow.c: 1.81 sys/netinet/ip_input.c: 1.362 sys/netinet/ip_mroute.c: 1.147 sys/netinet/ip_output.c: 1.283, 1.285, 1.287 sys/netinet6/frag6.c: 1.61 sys/netinet6/in6.c: 1.251, 1.255 sys/netinet6/in6_pcb.c: 1.162 sys/netinet6/ip6_flow.c: 1.35 sys/netinet6/ip6_input.c: 1.183 sys/netinet6/ip6_output.c: 1.196 sys/netinet6/mld6.c: 1.90 sys/netinet6/nd6.c: 1.239-1.240 sys/netinet6/nd6_nbr.c: 1.139 sys/netinet6/nd6_rtr.c: 1.136 sys/netipsec/ipsec_output.c: 1.65 sys/rump/net/lib/libnetinet/netinet_component.c: 1.9-1.10 kmem_intr_free kmem_intr_[z]alloced memory the underlying pools are the same but api-wise those should match Unify IFEF_*_MPSAFE into IFEF_MPSAFE There are already two flags for if_output and if_start, however, it seems such MPSAFE flags are eventually needed for all if_XXX operations. Having discrete flags for each operation is wasteful of if_extflags bits. So let's unify the flags into one: IFEF_MPSAFE. Fortunately IFEF_*_MPSAFE flags have never been included in any releases, so we can change them without breaking backward compatibility of the releases (though the kernel version of -current should be bumped). Note that if an interface have both MP-safe and non-MP-safe operations at a time, we have to set the IFEF_MPSAFE flag and let callees of non-MP-safe opeartions take the kernel lock. Proposed on tech-kern@ and tech-net@ Provide macros for softnet_lock and KERNEL_LOCK hiding NET_MPSAFE switch It reduces C&P codes such as "#ifndef NET_MPSAFE KERNEL_LOCK(1, NULL); ..." scattered all over the source code and makes it easy to identify remaining KERNEL_LOCK and/or softnet_lock that are held even if NET_MPSAFE. No functional change Hold KERNEL_LOCK on if_ioctl selectively based on IFEF_MPSAFE If IFEF_MPSAFE is set, hold the lock and otherwise don't hold. This change requires additions of KERNEL_LOCK to subsequence functions from if_ioctl such as ifmedia_ioctl and ifioctl_common to protect non-MP-safe components. Proposed on tech-kern@ and tech-net@ Ensure to hold if_ioctl_lock when calling if_flags_set Fix locking against myself on ifpromisc vlan_unconfig_locked could be called with holding if_ioctl_lock. Ensure to not turn on IFF_RUNNING of an interface until its initialization completes And ensure to turn off it before destruction as per IFF_RUNNING's description "resource allocated". (The description is a bit doubtful though, I believe the change is still proper.) Ensure to hold if_ioctl_lock on if_up and if_down One exception for if_down is if_detach; in the case the lock isn't needed because it's guaranteed that no other one can access ifp at that point. Make if_link_queue MP-safe if IFEF_MPSAFE if_link_queue is a queue to store events of link state changes, which is used to pass events from (typically) an interrupt handler to if_link_state_change softint. The queue was protected by KERNEL_LOCK so far, but if IFEF_MPSAFE is enabled, it becomes unsafe because (perhaps) an interrupt handler of an interface with IFEF_MPSAFE doesn't take KERNEL_LOCK. Protect it by a spin mutex. Additionally with this change KERNEL_LOCK of if_link_state_change softint is omitted if NET_MPSAFE is enabled. Note that the spin mutex is now ifp->if_snd.ifq_lock as well as the case of if_timer (see the comment). Use IFADDR_WRITER_FOREACH instead of IFADDR_READER_FOREACH At that point no other one modifies the list so IFADDR_READER_FOREACH is unnecessary. Use of IFADDR_READER_FOREACH is harmless in general though, if we try to detect contract violations of pserialize, using it violates the contract. So avoid using it makes life easy. Ensure to call if_addr_init with holding if_ioctl_lock Get rid of outdated comments Fix build of kernels without ether By throwing out if_enable_vlan_mtu and if_disable_vlan_mtu that created a unnecessary dependency from if.c to if_ethersubr.c. PR kern/52790 Rename IFNET_LOCK to IFNET_GLOBAL_LOCK IFNET_LOCK will be used in another lock, if_ioctl_lock (might be renamed then). Wrap if_ioctl_lock with IFNET_* macros (NFC) Also if_ioctl_lock perhaps needs to be renamed to something because it's now not just for ioctl... Reorder some destruction routines in if_detach - Destroy if_ioctl_lock at the end of the if_detach because it's used in various destruction routines - Move psref_target_destroy after pr_purgeif because we want to use psref in pr_purgeif (otherwise destruction procedures can be tricky) Ensure to call if_mcast_op with holding IFNET_LOCK Note that CARP doesn't deal with IFNET_LOCK yet. Remove IFNET_GLOBAL_LOCK where it's unnecessary because IFNET_LOCK is held Describe which lock is used to protect each member variable of struct ifnet Requested by skrll@ Write a guideline for converting an interface to IFEF_MPSAFE Requested by skrll@ Note that IFNET_LOCK must not be held in softint Don't set IFEF_MPSAFE unless NET_MPSAFE at this point Because recent investigations show that interfaces with IFEF_MPSAFE need to follow additional restrictions to work with the flag safely. We should enable it on an interface by default only if the interface surely satisfies the restrictions, which are described in if.h. Note that enabling IFEF_MPSAFE solely gains a few benefit on performance because the network stack is still serialized by the big kernel locks by default. |
| /src/sys/sys/ | |
| systm.h | 1.250 Fri Sep 30 10:23:03 UTC 2011 mrg branches: 1.250.2; avoid sys/systm.h in userland ppath.h. include types.h/stdarg.h in all systm.h configs. my amd64 build without man pages now worked at least. Fri Sep 30 10:23:03 UTC 2011 mrg branches: 1.250.2; avoid sys/systm.h in userland ppath.h. include types.h/stdarg.h in all systm.h configs. my amd64 build without man pages now worked at least. 1.250.2.4 Thu May 22 11:41:18 UTC 2014 yamt sync with head. for a reference, the tree before this commit was tagged as yamt-pagecache-tag8. this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments") 1.250.2.3 Tue Oct 30 17:22:58 UTC 2012 yamt sync with head 1.250.2.2 Tue Apr 17 00:08:53 UTC 2012 yamt sync with head 1.250.2.1 Thu Nov 10 14:31:51 UTC 2011 yamt sync with head |
| disk.h | 1.60.6.1 Sat Jan 02 14:38:45 UTC 2016 riz Pull up following revision(s) (requested by manu in ticket #1038): sys/dev/vnd.c: revision 1.252 sys/dev/vnd.c: revision 1.253 sys/dev/vnd.c: revision 1.254 sys/dev/vnd.c: revision 1.249 sys/sys/disk.h: revision 1.66 sys/dev/vnd.c: revision 1.250 sys/dev/vnd.c: revision 1.251 - Add DK_DEV_BSIZE_OK() - Simplify ioctl handling a little. - disable debugging - Return ENXIO if the get ioctl exceeds the number of configured devices. XXX: pullup-7 - explain why the int cast works (suggested by kre) - fix incorrect memset. - Use the new DK_DEV_BSIZE_OK() macro. 1.60.4.1 Wed Nov 18 08:48:46 UTC 2015 msaitoh Pull up following revision(s) (requested by manu in ticket #1038): sys/dev/vnd.c: revision 1.252 sys/dev/vnd.c: revision 1.253 sys/dev/vnd.c: revision 1.254 sys/dev/vnd.c: revision 1.249 sys/sys/disk.h: revision 1.66 sys/dev/vnd.c: revision 1.250 sys/dev/vnd.c: revision 1.251 - Add DK_DEV_BSIZE_OK() - Simplify ioctl handling a little. - disable debugging - Return ENXIO if the get ioctl exceeds the number of configured devices. XXX: pullup-7 - explain why the int cast works (suggested by kre) - fix incorrect memset. - Use the new DK_DEV_BSIZE_OK() macro. |
| /src/sys/uvm/ | |
| uvm_map.c | 1.250 Fri Jan 18 10:48:23 UTC 2008 yamt branches: 1.250.2; 1.250.6; push pmap_clear_reference calls into pdpolicy code, where reference bits actually matter. Fri Jan 18 10:48:23 UTC 2008 yamt branches: 1.250.2; 1.250.6; push pmap_clear_reference calls into pdpolicy code, where reference bits actually matter. .2; 1.250.6; push pmap_clear_reference calls into pdpolicy code, where reference bits actually matter. 1.250.6.5 Sat Jan 17 13:29:43 UTC 2009 mjf Sync with HEAD. 1.250.6.4 Sun Sep 28 10:41:07 UTC 2008 mjf Sync with HEAD. 1.250.6.3 Thu Jun 05 19:14:38 UTC 2008 mjf Sync with HEAD. Also fix build. 1.250.6.2 Mon Jun 02 13:24:37 UTC 2008 mjf Sync with HEAD. 1.250.6.1 Thu Apr 03 00:43:14 UTC 2008 mjf Sync with HEAD. 1.250.2.1 Mon Mar 24 07:16:33 UTC 2008 keiichi sync with head. |
| /src/sys/dev/scsipi/ | |
| cd.c | 1.250 Fri Sep 08 00:33:18 UTC 2006 reinoud branches: 1.250.2; Oeps! I overlooked the size argument of the SCSI call. It ought to be equal to the number of bytes we are reading: READ_DISCINFO_BIGSIZE sorry. Fri Sep 08 00:33:18 UTC 2006 reinoud branches: 1.250.2; Oeps! I overlooked the size argument of the SCSI call. It ought to be equal to the number of bytes we are reading: READ_DISCINFO_BIGSIZE sorry. 1.242.6.4 Mon Sep 11 21:18:09 UTC 2006 tron Pull up following revision(s) (requested by reinoud in ticket #147): sys/dev/scsipi/cd.c: revision 1.250 Oeps! I overlooked the size argument of the SCSI call. It ought to be equal to the number of bytes we are reading: READ_DISCINFO_BIGSIZE sorry. 1.250.2.2 Sun Dec 10 07:18:15 UTC 2006 yamt sync with head. 1.250.2.1 Sun Oct 22 06:06:47 UTC 2006 yamt sync with head |
| scsiconf.c | 1.250 Wed Jul 16 18:50:58 UTC 2008 drochner branches: 1.250.2; 1.250.8; split device/softc for scsibus Wed Jul 16 18:50:58 UTC 2008 drochner branches: 1.250.2; 1.250.8; split device/softc for scsibus .2; 1.250.8; split device/softc for scsibus 1.250.8.1 Wed May 13 17:21:22 UTC 2009 jym Sync with HEAD. Commit is split, to avoid a "too many arguments" protocol error. 1.250.2.1 Tue Apr 28 07:36:33 UTC 2009 skrll Sync with HEAD. |
| sd.c | 1.250 Thu Sep 14 17:54:34 UTC 2006 reinoud branches: 1.250.2; Fix same panic problem as with cd.c when a scsi error happends on read/write action. It would panic on a diagnosic assertion. When a scsi read/write command fails, the whole extent is gone bad so mark all as not done. Thu Sep 14 17:54:34 UTC 2006 reinoud branches: 1.250.2; Fix same panic problem as with cd.c when a scsi error happends on read/write action. It would panic on a diagnosic assertion. When a scsi read/write command fails, the whole extent is gone bad so mark all as not done. 1.249.2.1 Fri Sep 22 05:32:19 UTC 2006 riz Pull up following revision(s) (requested by reinoud in ticket #168): sys/dev/scsipi/sd.c: revision 1.250 Fix same panic problem as with cd.c when a scsi error happends on read/write action. It would panic on a diagnosic assertion. When a scsi read/write command fails, the whole extent is gone bad so mark all as not done. 1.250.2.2 Sun Dec 10 07:18:16 UTC 2006 yamt sync with head. 1.250.2.1 Sun Oct 22 06:06:47 UTC 2006 yamt sync with head |
| /src/sbin/ifconfig/ | |
| ifconfig.c | 1.250 Wed Jan 03 18:10:42 UTC 2024 andvar branches: 1.250.2; s/addreseses/addresses/ in comments (and one missing whitespace). Wed Jan 03 18:10:42 UTC 2024 andvar branches: 1.250.2; s/addreseses/addresses/ in comments (and one missing whitespace). 1.250.2.1 Sat Aug 02 05:55:06 UTC 2025 perseant Sync with HEAD |
| /src/sys/net/ | |
| rtsock.c | 1.250 Mon May 27 05:33:48 UTC 2019 ozaki-r branches: 1.250.2; Don't take softnet_lock in sysctl_rtable Taking softnet_lock there can cause a locking error with nfs sosend, so we don't. Having only KERNEL_LOCK is enough because now the routing table is protected by KERNEL_LOCK that was introduced by the fix for PR 53043. PR kern/54227 from Paul Ripke Mon May 27 05:33:48 UTC 2019 ozaki-r branches: 1.250.2; Don't take softnet_lock in sysctl_rtable Taking softnet_lock there can cause a locking error with nfs sosend, so we don't. Having only KERNEL_LOCK is enough because now the routing table is protected by KERNEL_LOCK that was introduced by the fix for PR 53043. PR kern/54227 from Paul Ripke 1.213.2.13 Wed May 29 16:01:51 UTC 2019 martin Pull up following revision(s) (requested by ozaki-r in ticket #1276): sys/net/rtsock.c: revision 1.250 Don't take softnet_lock in sysctl_rtable Taking softnet_lock there can cause a deadlock with nfs sosend, so we don't. Having only KERNEL_LOCK is enough because now the routing table is protected by KERNEL_LOCK that was introduced by the fix for PR 53043. PR kern/54227 from Paul Ripke 1.213.2.4 Tue Jan 02 10:20:33 UTC 2018 snj Pull up following revision(s) (requested by ozaki-r in ticket #456): sys/arch/arm/sunxi/sunxi_emac.c: 1.9 sys/dev/ic/dwc_gmac.c: 1.43-1.44 sys/dev/pci/if_iwm.c: 1.75 sys/dev/pci/if_wm.c: 1.543 sys/dev/pci/ixgbe/ixgbe.c: 1.112 sys/dev/pci/ixgbe/ixv.c: 1.74 sys/kern/sys_socket.c: 1.75 sys/net/agr/if_agr.c: 1.43 sys/net/bpf.c: 1.219 sys/net/if.c: 1.397, 1.399, 1.401-1.403, 1.406-1.410, 1.412-1.416 sys/net/if.h: 1.242-1.247, 1.250, 1.252-1.257 sys/net/if_bridge.c: 1.140 via patch, 1.142-1.146 sys/net/if_etherip.c: 1.40 sys/net/if_ethersubr.c: 1.243, 1.246 sys/net/if_faith.c: 1.57 sys/net/if_gif.c: 1.132 sys/net/if_l2tp.c: 1.15, 1.17 sys/net/if_loop.c: 1.98-1.101 sys/net/if_media.c: 1.35 sys/net/if_pppoe.c: 1.131-1.132 sys/net/if_spppsubr.c: 1.176-1.177 sys/net/if_tun.c: 1.142 sys/net/if_vlan.c: 1.107, 1.109, 1.114-1.121 sys/net/npf/npf_ifaddr.c: 1.3 sys/net/npf/npf_os.c: 1.8-1.9 sys/net/rtsock.c: 1.230 sys/netcan/if_canloop.c: 1.3-1.5 sys/netinet/if_arp.c: 1.255 sys/netinet/igmp.c: 1.65 sys/netinet/in.c: 1.210-1.211 sys/netinet/in_pcb.c: 1.180 sys/netinet/ip_carp.c: 1.92, 1.94 sys/netinet/ip_flow.c: 1.81 sys/netinet/ip_input.c: 1.362 sys/netinet/ip_mroute.c: 1.147 sys/netinet/ip_output.c: 1.283, 1.285, 1.287 sys/netinet6/frag6.c: 1.61 sys/netinet6/in6.c: 1.251, 1.255 sys/netinet6/in6_pcb.c: 1.162 sys/netinet6/ip6_flow.c: 1.35 sys/netinet6/ip6_input.c: 1.183 sys/netinet6/ip6_output.c: 1.196 sys/netinet6/mld6.c: 1.90 sys/netinet6/nd6.c: 1.239-1.240 sys/netinet6/nd6_nbr.c: 1.139 sys/netinet6/nd6_rtr.c: 1.136 sys/netipsec/ipsec_output.c: 1.65 sys/rump/net/lib/libnetinet/netinet_component.c: 1.9-1.10 kmem_intr_free kmem_intr_[z]alloced memory the underlying pools are the same but api-wise those should match Unify IFEF_*_MPSAFE into IFEF_MPSAFE There are already two flags for if_output and if_start, however, it seems such MPSAFE flags are eventually needed for all if_XXX operations. Having discrete flags for each operation is wasteful of if_extflags bits. So let's unify the flags into one: IFEF_MPSAFE. Fortunately IFEF_*_MPSAFE flags have never been included in any releases, so we can change them without breaking backward compatibility of the releases (though the kernel version of -current should be bumped). Note that if an interface have both MP-safe and non-MP-safe operations at a time, we have to set the IFEF_MPSAFE flag and let callees of non-MP-safe opeartions take the kernel lock. Proposed on tech-kern@ and tech-net@ Provide macros for softnet_lock and KERNEL_LOCK hiding NET_MPSAFE switch It reduces C&P codes such as "#ifndef NET_MPSAFE KERNEL_LOCK(1, NULL); ..." scattered all over the source code and makes it easy to identify remaining KERNEL_LOCK and/or softnet_lock that are held even if NET_MPSAFE. No functional change Hold KERNEL_LOCK on if_ioctl selectively based on IFEF_MPSAFE If IFEF_MPSAFE is set, hold the lock and otherwise don't hold. This change requires additions of KERNEL_LOCK to subsequence functions from if_ioctl such as ifmedia_ioctl and ifioctl_common to protect non-MP-safe components. Proposed on tech-kern@ and tech-net@ Ensure to hold if_ioctl_lock when calling if_flags_set Fix locking against myself on ifpromisc vlan_unconfig_locked could be called with holding if_ioctl_lock. Ensure to not turn on IFF_RUNNING of an interface until its initialization completes And ensure to turn off it before destruction as per IFF_RUNNING's description "resource allocated". (The description is a bit doubtful though, I believe the change is still proper.) Ensure to hold if_ioctl_lock on if_up and if_down One exception for if_down is if_detach; in the case the lock isn't needed because it's guaranteed that no other one can access ifp at that point. Make if_link_queue MP-safe if IFEF_MPSAFE if_link_queue is a queue to store events of link state changes, which is used to pass events from (typically) an interrupt handler to if_link_state_change softint. The queue was protected by KERNEL_LOCK so far, but if IFEF_MPSAFE is enabled, it becomes unsafe because (perhaps) an interrupt handler of an interface with IFEF_MPSAFE doesn't take KERNEL_LOCK. Protect it by a spin mutex. Additionally with this change KERNEL_LOCK of if_link_state_change softint is omitted if NET_MPSAFE is enabled. Note that the spin mutex is now ifp->if_snd.ifq_lock as well as the case of if_timer (see the comment). Use IFADDR_WRITER_FOREACH instead of IFADDR_READER_FOREACH At that point no other one modifies the list so IFADDR_READER_FOREACH is unnecessary. Use of IFADDR_READER_FOREACH is harmless in general though, if we try to detect contract violations of pserialize, using it violates the contract. So avoid using it makes life easy. Ensure to call if_addr_init with holding if_ioctl_lock Get rid of outdated comments Fix build of kernels without ether By throwing out if_enable_vlan_mtu and if_disable_vlan_mtu that created a unnecessary dependency from if.c to if_ethersubr.c. PR kern/52790 Rename IFNET_LOCK to IFNET_GLOBAL_LOCK IFNET_LOCK will be used in another lock, if_ioctl_lock (might be renamed then). Wrap if_ioctl_lock with IFNET_* macros (NFC) Also if_ioctl_lock perhaps needs to be renamed to something because it's now not just for ioctl... Reorder some destruction routines in if_detach - Destroy if_ioctl_lock at the end of the if_detach because it's used in various destruction routines - Move psref_target_destroy after pr_purgeif because we want to use psref in pr_purgeif (otherwise destruction procedures can be tricky) Ensure to call if_mcast_op with holding IFNET_LOCK Note that CARP doesn't deal with IFNET_LOCK yet. Remove IFNET_GLOBAL_LOCK where it's unnecessary because IFNET_LOCK is held Describe which lock is used to protect each member variable of struct ifnet Requested by skrll@ Write a guideline for converting an interface to IFEF_MPSAFE Requested by skrll@ Note that IFNET_LOCK must not be held in softint Don't set IFEF_MPSAFE unless NET_MPSAFE at this point Because recent investigations show that interfaces with IFEF_MPSAFE need to follow additional restrictions to work with the flag safely. We should enable it on an interface by default only if the interface surely satisfies the restrictions, which are described in if.h. Note that enabling IFEF_MPSAFE solely gains a few benefit on performance because the network stack is still serialized by the big kernel locks by default. 1.250.2.2 Thu Sep 05 08:28:05 UTC 2019 martin Pull up following revision(s) (requested by roy in ticket #168): sys/net/rtsock.c: revision 1.252 sys/netinet6/nd6_nbr.c: revision 1.168 - 1.172 sys/netinet6/nd6.c: revision 1.262 inet6: Send RTM_MISS when we fail to resolve an address. Takes the same approach as when adding a new address - we no longer announce the new lladdr right away but we announce the result. This will either be RTM_ADD or RTM_MISS. RTM_DELETE is only sent if we have a lladdr assigned OR gc'ed. This results in less messages via route(4) and tells us when a new lladdr has been added (RTM_ADD), changed (RTM_CHANGE), deleted (RTM_DELETED) or has failed to been resolved (RTM_MISS). The latter case can be interpreted as unreachable. inet6: change rt_announce and llchange to bool in nd6_na_input() more bool 1.250.2.1 Mon Aug 26 13:42:36 UTC 2019 martin Pull up following revision(s) (requested by roy in ticket #109): sys/net/route.h: revision 1.124 sys/netinet6/nd6.c: revision 1.258 sys/netinet6/nd6.c: revision 1.259 sys/net/rtsock.c: revision 1.251 sys/netinet/if_arp.c: revision 1.284 sys/netinet6/nd6_nbr.c: revision 1.167 rtsock: rework rt_clonedmsg to take a message type and lladdr We will use this in a future patch to notify userland of lladdr changes. XXX pullup -8 -9 - nd6: notify userland of neighbour lla updates once more XXX pullup -8 -9 |