summaryrefslogtreecommitdiffstats
path: root/sys/conf
Commit message (Collapse)AuthorAgeFilesLines
* Fix and improve exception tracing:marcel2014-03-182-1/+2
| | | | | | | | | | | | | | | | 1. Name the kernel option XTRACE instead of EXCEPTION_TRACING 2. Put support functions in ia64/ia64/xtrace.c 3. Make it work with SMP by giving each CPU its own buffer 4. Save 16 key registers in the buffer for every exception 5. In ia64_handle_intr() and trap() transfer the trace record to the KTR trace buffer using CTRx() and with some basic information for now 6. Use a tunable to anble tracing and stop tracing as soon as we enter the debugger Room for improvements: 1. Transferring exception-relevant information to KTR 2. Add a sysctl to enable/disable tracing
* replace the kernel's version w/ cperciva's implementation... In alljmg2014-03-161-0/+2
| | | | | | | | | | | | | | | | | my tests, it is faster ~20%, even on an old IXP425 533MHz it is ~45% faster... This is partly due to loop unrolling, so the code size does significantly increase... I do plan on committing a version that rolls up the loops again for smaller code size for embedded systems where size is more important than absolute performance (it'll save ~6k code)... The kernel implementation is now shared w/ userland's libcrypt and libmd... We drop support for sha256 from sha2.c, so now sha2.c only contains sha384 and sha512... Reviewed by: secteam@
* Several years after initial development, merge prototype support forrwatson2014-03-152-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | linking NIC Receive Side Scaling (RSS) to the network stack's connection-group implementation. This prototype (and derived patches) are in use at Juniper and several other FreeBSD-using companies, so despite some reservations about its maturity, merge the patch to the base tree so that it can be iteratively refined in collaboration rather than maintained as a set of gradually diverging patch sets. (1) Merge a software implementation of the Toeplitz hash specified in RSS implemented by David Malone. This is used to allow suitable pcbgroup placement of connections before the first packet is received from the NIC. Software hashing is generally avoided, however, due to high cost of the hash on general-purpose CPUs. (2) In in_rss.c, maintain authoritative versions of RSS state intended to be pushed to each NIC, including keying material, hash algorithm/ configuration, and buckets. Provide software-facing interfaces to hash 2- and 4-tuples for IPv4 and IPv6 using both the RSS standardised Toeplitz and a 'naive' variation with a hash efficient in software but with poor distribution properties. Implement rss_m2cpuid()to be used by netisr and other load balancing code to look up the CPU on which an mbuf should be processed. (3) In the Ethernet link layer, allow netisr distribution using RSS as a source of policy as an alternative to source ordering; continue to default to direct dispatch (i.e., don't try and requeue packets for processing on the 'right' CPU if they arrive in a directly dispatchable context). (4) Allow RSS to control tuning of connection groups in order to align groups with RSS buckets. If a packet arrives on a protocol using connection groups, and contains a suitable hardware-generated hash, use that hash value to select the connection group for pcb lookup for both IPv4 and IPv6. If no hardware-generated Toeplitz hash is available, we fall back on regular PCB lookup risking contention rather than pay the cost of Toeplitz in software -- this is a less scalable but, at my last measurement, faster approach. As core counts go up, we may want to revise this strategy despite CPU overhead. Where device drivers suitably configure NICs, and connection groups / RSS are enabled, this should avoid both lock and line contention during connection lookup for TCP. This commit does not modify any device drivers to tune device RSS configuration to the global RSS configuration; patches are in circulation to do this for at least Chelsio T3 and Intel 1G/10G drivers. Currently, the KPI for device drivers is not particularly robust, nor aware of more advanced features such as runtime reconfiguration/rebalancing. This will hopefully prove a useful starting point for refinement. No MFC is scheduled as we will first want to nail down a more mature and maintainable KPI/KBI for device drivers. Sponsored by: Juniper Networks (original work) Sponsored by: EMC/Isilon (patch update and merge)
* Remove AppleTalk support.glebius2014-03-143-15/+1
| | | | | | | | | | AppleTalk was a network transport protocol for Apple Macintosh devices in 80s and then 90s. Starting with Mac OS X in 2000 the AppleTalk was a legacy protocol and primary networking protocol is TCP/IP. The last Mac OS X release to support AppleTalk happened in 2009. The same year routing equipment vendors (namely Cisco) end their support. Thus, AppleTalk won't be supported in FreeBSD 11.0-RELEASE.
* Remove IPX support.glebius2014-03-143-26/+0
| | | | | | | | | | | IPX was a network transport protocol in Novell's NetWare network operating system from late 80s and then 90s. The NetWare itself switched to TCP/IP as default transport in 1998. Later, in this century the Novell Open Enterprise Server became successor of Novell NetWare. The last release that claimed to still support IPX was OES 2 in 2007. Routing equipment vendors (e.g. Cisco) discontinued support for IPX in 2011. Thus, IPX won't be supported in FreeBSD 11.0-RELEASE.
* xen: add an apic_enumerator for PVHroyger2014-03-111-0/+1
| | | | | | | | | | | | | | | | On PVH there's no ACPI, so the CPU enumeration must be implemented using Xen hypercalls. Approved by: gibbs Sponsored by: Citrix Systems R&D x86/xen/pvcpu_enum.c: - Enumerate avaiable vCPUs on PVH by using the VCPUOP_is_up hypercall. - Set vcpu_id for PVH guests. conf/files.amd64: - Include the PV CPU enumerator in the XENHVM build.
* xen: implement an early timer for Xen PVHroyger2014-03-113-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When running as a PVH guest, there's no emulated i8254, so we need to use the Xen PV timer as the early source for DELAY. This change allows for different implementations of the early DELAY function and implements a Xen variant for it. Approved by: gibbs Sponsored by: Citrix Systems R&D dev/xen/timer/timer.c: dev/xen/timer/timer.h: - Implement Xen early delay functions using the PV timer and declare them. x86/include/init.h: - Add hooks for early clock source initialization and early delay functions. i386/i386/machdep.c: pc98/pc98/machdep.c: amd64/amd64/machdep.c: - Set early delay hooks to use the i8254 on bare metal. - Use clock_init (that will in turn make use of init_ops) to initialize the early clock source. amd64/include/clock.h: i386/include/clock.h: - Declare i8254_delay and clock_init. i386/xen/clock.c: - Rename DELAY to i8254_delay. x86/isa/clock.c: - Introduce clock_init that will take care of initializing the early clock by making use of the init_ops hooks. - Move non ISA related delay functions to the newly introduced delay file. x86/x86/delay.c: - Add moved delay related functions. - Implement generic DELAY function that will use the init_ops hooks. x86/xen/pv.c: - Set PVH hooks for the early delay related functions in init_ops. conf/files.amd64: conf/files.i386: conf/files.pc98: - Add delay.c to the kernel build.
* xen: add and enable Xen console for PVH guestsroyger2014-03-111-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds and enables the PV console used on XEN kernels to GENERIC/XENHVM kernels in order for it to be used on PVH. Approved by: gibbs Sponsored by: Citrix Systems R&D dev/xen/console/console.c: - Define console_page. - Move xc_printf debug function from i386 XEN code to generic console code. - Rework xc_printf. - Use xen_initial_domain instead of open-coded checks for Dom0. - Gate the attach of the PV console to PV(H) guests. dev/xen/console/xencons_ring.c: - Allow the PV Xen console to output earlier by directly signaling the event channel in start_info if the event channel is not yet initialized. - Use HYPERVISOR_start_info instead of xen_start_info. i386/include/xen/xen-os.h: - Remove prototype for xc_printf since it's now declared in global xen-os.h i386/xen/xen_machdep.c: - Remove previous version of xc_printf. - Remove definition of console_page (now it's defined in the console itself). - Fix some printf formatting errors. x86/xen/pv.c: - Add some early boot debug messages using xc_printf. - Set console_page based on the value passed in start_info. xen/xen-os.h: - Declare console_page and add prototype for xc_printf.
* xen: add PV/PVH kernel entry pointroyger2014-03-111-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the PV/PVH entry point and the low level functions for PVH early initialization. Approved by: gibbs Sponsored by: Citrix Systems R&D amd64/amd64/genassym.c: - Add __FreeBSD_version define to assym.s so it can be used for the Xen notes. amd64/amd64/locore.S: - Make bootstack global so it can be used from Xen kernel entry point. amd64/amd64/xen-locore.S: - Add Xen notes to the kernel. - Add the Xen PV entry point, that is going to call hammer_time_xen. amd64/include/asmacros.h: - Add ELFNOTE macros. i386/xen/xen_machdep.c: - Define HYPERVISOR_start_info for the XEN i386 PV port, which is going to be used in some shared code between PV and PVH. x86/xen/hvm.c: - Define HYPERVISOR_start_info for the PVH port. x86/xen/pv.c: - Introduce hammer_time_xen which is going to perform early setup for Xen PVH: - Setup shared Xen variables start_info, shared_info and xen_store. - Set guest type. - Create initial page tables as FreeBSD expects to find them. - Call into native init function (hammer_time). xen/xen-os.h: - Declare HYPERVISOR_start_info. conf/files.amd64: - Add amd64/amd64/locore.S and x86/xen/pv.c to the list of files.
* Move the exception vector table (so-called "page0" data) into exception.Sian2014-03-101-1/+0
| | | | | | | | | | | | | | and eliminate vectors.S. All low-level exception handling is now consolidated into exception.S. Along with moving the default FIQ handler, change it to disable FIQs before returning. An FIQ should never happen, but if it does, it's got to be disabled as part of ignoring it. In general, we have hand-wavy support for FIQs that probably hasn't been used for 10 years and probably doesn't work (almost certainly doesn't work for SMP because it only updates the vector on the current cpu). This change doesn't really make the overall situation any better or worse.
* Remove all traces of support for ARM chips prior to the arm9 series. Weian2014-03-093-7/+5
| | | | | | | never actually ran on these chips (other than using SA1 support in an emulator to do the early porting to FreeBSD long long ago). The clutter and complexity of some of this code keeps getting in the way of other maintenance, so it's time to go.
* Use a full path to the target for make rules which create symlinks @,markj2014-03-041-6/+11
| | | | | | | | machine and ${MACHINE_CPUARCH}. Otherwise the presence of a file named "x86" or "x86.c" in the make path can cause problems. Submitted by: lwhsu (original version) MFC after: 1 month
* Include kbd(4) when vt(4) is enabled as on other platforms.jhb2014-03-031-1/+1
| | | | Reported by: Anton Shterenlikht
* Only try to build the static dtb when we're building a static dtb...imp2014-02-281-1/+1
|
* Integrate device-tree upstream files into the build process:imp2014-02-281-3/+4
| | | | | | | | | | | | | | (1) Invoke cpp to bring in files via #include (although the old /include/ stuff is supported still). (2) bring in files from either vendor tree or freebsd-custom files when building. (3) move all dts* files from sys/boot/fdt/dts to sys/boot/fdt/dts/${MACHINE} as appropriate. (4) encode all the magic to do the build in sys/tools/fdt/make_dtb.sh so that the different places in the tree use the exact same logic. (5) switch back to gpl dtc by default. the bsdl one in the tree has significant issues not easily addressed by those unfamiliar with the code.
* Merge from head up to r262472.dim2014-02-251-0/+1
|\
| * Add initial AR8327 support.adrian2014-02-241-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is (almost!) enough to actually probe, attach, configure a default port group and do some basic work. It's also totally hard-coded for the Qualcomm Atheros DB120 board - it doesn't yet have any of the code from OpenWRT which parses extra configuration data to know how to program the switch. The LED stuff is also missing. But, it's enough to facilitate board, PHY, switch and VLAN bringup, so I am committing it now. Tested: * Qualcomm Atheros DB120 Obtained from: OpenWRT
* | Similar to r262306 for boot1's Makefile, clang spells -mcmodel=medany asdim2014-02-231-0/+4
|/ | | | | | -mcmodel=large, for now. While here, disable -msoft-float for clang since it is not supported, and add -fno-dwarf2-cfi-asm to stop it from emitting .cfi directives, which GNU as does not support.
* o Remove at compile time the HASH_ALL code, that was neverglebius2014-02-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | tested and is unfinished. However, I've tested my version, it works okay. As before it is unfinished: timeout aren't driven by TCP session state. To enable the HASH_ALL mode, one needs in kernel config: options FLOWTABLE_HASH_ALL o Reduce the alignment on flentry to 64 bytes. Without the FLOWTABLE_HASH_ALL option, twice less memory would be consumed by flows. o API to ip_output()/ip6_output() got even more thin: 1 liner. o Remove unused unions. Simply use fle->f_key[]. o Merge all IPv4 code into flowtable_lookup_ipv4(), and do same flowtable_lookup_ipv6(). Stop copying data to on stack sockaddr structures, simply use key[] on stack. o Move code from flowtable_lookup_common() that actually works on insertion into flowtable_insert(). Sponsored by: Netflix Sponsored by: Nginx, Inc.
* Upgrade our copy of llvm/clang to 3.4 release. This version supportsdim2014-02-161-1/+2
| | | | | | | | | | | | | | | | | all of the features in the current working draft of the upcoming C++ standard, provisionally named C++1y. The code generator's performance is greatly increased, and the loop auto-vectorizer is now enabled at -Os and -O2 in addition to -O3. The PowerPC backend has made several major improvements to code generation quality and compile time, and the X86, SPARC, ARM32, Aarch64 and SystemZ backends have all seen major feature work. Release notes for llvm and clang can be found here: <http://llvm.org/releases/3.4/docs/ReleaseNotes.html> <http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html> MFC after: 1 month
* Retire the nve(4) driver; nfe(4) has been the default driver for NVIDIAbrueffer2014-02-163-25/+0
| | | | | | | nForce MCP adapters for a long time. Yays: jhb, remko, yongari Nays: none on the current and stable lists
* This new version of netmap brings you the following:luigi2014-02-151-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - netmap pipes, providing bidirectional blocking I/O while moving 100+ Mpps between processes using shared memory channels (no mistake: over one hundred million. But mind you, i said *moving* not *processing*); - kqueue support (BHyVe needs it); - improved user library. Just the interface name lets you select a NIC, host port, VALE switch port, netmap pipe, and individual queues. The upcoming netmap-enabled libpcap will use this feature. - optional extra buffers associated to netmap ports, for applications that need to buffer data yet don't want to make copies. - segmentation offloading for the VALE switch, useful between VMs. and a number of bug fixes and performance improvements. My colleagues Giuseppe Lettieri and Vincenzo Maffione did a substantial amount of work on these features so we owe them a big thanks. There are some external repositories that can be of interest: https://code.google.com/p/netmap our public repository for netmap/VALE code, including linux versions and other stuff that does not belong here, such as python bindings. https://code.google.com/p/netmap-libpcap a clone of the libpcap repository with netmap support. With this any libpcap client has access to most netmap feature with no recompilation. E.g. tcpdump can filter packets at 10-15 Mpps. https://code.google.com/p/netmap-ipfw a userspace version of ipfw+dummynet which uses netmap to send/receive packets. Speed is up in the 7-10 Mpps range per core for simple rulesets. Both netmap-libpcap and netmap-ipfw will be merged upstream at some point, but while this happens it is useful to have access to them. And yes, this code will be merged soon. It is infinitely better than the version currently in 10 and 9. MFC after: 3 days
* Disable warning about unused static const variables for sys/pci/ncr.c.dim2014-02-141-1/+2
| | | | MFC after: 3 days
* In r260111, in sys/conf/files, I disabled warning about unused functionsdim2014-02-141-2/+2
| | | | | | | for the wrong mcg.c, the one in ofed/drivers/infiniband/hw/mlx4. Disable the warning for ofed/drivers/net/mlx4/mcg.c instead. MFC after: 3 days
* Similar to r260026, disable warning about unused functions fordim2014-02-141-3/+6
| | | | | | ieee80211_adhoc.c, ieee80211_hostap.c and ieee80211_sta.c. MFC after: 3 days
* provide fast versions of ffsl and flsl for i386; ffsll and flsll for amd64avg2014-02-148-5/+7
| | | | | | | Reviewed by: jhb MFC after: 10 days X-MFC note: consider thirdparty modules depending on these symbols Sponsored by: HybridCluster
* Add an OFW GPIO compatible bus. This allows the use of the DTS files toloos2014-02-131-0/+1
| | | | | | | | | | | describe GPIO bindings in the system. Move the GPIOBUS lock macros to gpiobusvar.h as they are now shared between the OFW and the non OFW versions of GPIO bus. Export gpiobus_print_pins() so it can also be used on the OFW GPIO bus. Approved by: adrian (mentor, implicit)
* Allow iwn2000 and iwn2030 firmware to be linked into the kernel.brueffer2014-02-091-0/+28
| | | | | | PR: 184631 Submitted by: Oliver Pinter MFC after: 1 week
* Consolidate code related to setting up physical memory configuration intoian2014-02-081-0/+1
| | | | | | | | | | | | | | a new physmem.c file. The new code provides helper routines that can be used by legacy SoCs and newer FDT-based systems. There are routines to add one or more regions of physically contiguous ram, and exclude one or more physically contiguous regions of ram. Ram can be excluded from crash dumps, from being given over to the vm system for allocation management, or both. After all the included and excluded regions have been added, arm_physmem_init_kernel_globals() processes the regions into the global dump_avail and phys_avail arrays and realmem and physmem variables that communicate memory configuration to the rest of the kernel. Convert all existing SoCs to use the new helper code.
* Remove the ARM_USE_SMALL_ALLOC option and code related to it.ian2014-02-081-1/+0
| | | | | | | | | | This was an optimization used only by a few xscale platforms. Part of the optimization was to create a direct map for all physical pages, and that resulted in making multiple mappings of pages in a way that bypassed the logic in pmap.c to handle VIVT cache aliasing. It also just generally made the code more complex and hard to maintain for all SoCs. Reviewed by: cognet
* Now that FreeBSD/i386 works as a bhyve guest, allow i386 kernels tojhb2014-02-071-0/+5
| | | | include bvmconsole and bvmdebug.
* Import USB RNDIS driver to FreeBSD from OpenBSD.hselasky2014-02-062-1/+5
| | | | | | | | | | | | | | Useful for so-called USB tethering. - Imported code from OpenBSD - Adapted code to FreeBSD - Removed some unused functions - Fixed some buffer encoding and decoding issues - Optimised data transport path a bit, by sending multiple packets at a time - Increased receive buffer to 16K Obtained from: OpenBSD Requested by: eadler @ MFC after: 2 weeks
* Move Open Firmware device root on PowerPC, ARM, and MIPS systems tonwhitehorn2014-02-052-3/+2
| | | | | | | | a sub-node of nexus (ofwbus) rather than direct attach under nexus. This fixes FDT on x86 and will make coexistence with ACPI on ARM systems easier. SPARC is unchanged. Reviewed by: imp, ian
* Bump the version of config to the latest (3 year old, so upgradeimp2014-02-048-23/+8
| | | | | | worries are long past). Also remove redundant MACHINE= declarations and passing MACHINE/MACHINE_ARCH to module builds. That's now done in common code.
* Pass MACHINE and MACHINE_ARCH down into the modulesimp2014-02-041-0/+1
|
* Add a prior version compat define.imp2014-02-041-0/+3
|
* Fix the definition of hg_cmd.rpaulo2014-02-031-1/+1
| | | | MFC after: 3 days
* Add driver for the ADT7460/ADT7467 fan controller found in later PowerBooksjhibbits2014-02-031-0/+1
| | | | | | and iBooks. Original work by andreast. MFC after: 1 month
* Provide a simpler and more standards-compliant simplebus implementation tonwhitehorn2014-02-011-1/+0
| | | | | | | get the Routerboard 800 up and running with the vendor device tree. This does not implement some BERI-specific features (which hopefully won't be necessary soon), so move the old code to mips/beri, with a higher attach priority when built, until MIPS interrupt domain support is rearranged.
* Add hwpmc(4) support for the PowerPC 970 class processors, direct events.jhibbits2014-02-011-0/+1
| | | | | | | | | | | This also fixes asserts on removal of the module for the mpc74xx. The PowerPC 970 processors have two different types of events: direct events and indirect events. Thus far only direct events are supported. I included some documentation in the driver on how indirect events work, but support is for the future. MFC after: 1 month
* Unbreak non-SMP builds. This was broken by r259284. Also, reorganize thejhibbits2014-01-311-1/+1
| | | | | | | code introduced in that revision a bit. Reviewed by: nwhitehorn MFC after: 3 weeks
* Hack: Add explicit depends on bus_if.h and device_if.h to avoid aimp2014-01-311-0/+3
| | | | chicken and egg problem in some compilation environments.
* Add support for trackpads found in Apple MacBook products. While at ithselasky2014-01-292-0/+4
| | | | | | | add some missing devd entries. Submitted by: Huang Wen Hui <huanghwh@gmail.com> MFC after: 1 week
* Remove STARTUP_PAGETABLE_ADDR from the ARM configs and replace it withandrew2014-01-282-1/+6
| | | | | | | | | memory at the end of the kernel. This helps reduce the SoC and board specific configuration required. Reviewed by: bsdimp Tested by: jmg (armeb), br
* Document EARLY_PRINTFimp2014-01-221-0/+9
|
* Add support for mapping a small range of the SoC devices for debuggingimp2014-01-221-0/+2
| | | | purposes early in boot.
* Implement generic support for early printf. Thought I can't find theimp2014-01-221-0/+1
| | | | | | | paper trail now, this patch is similar to one posted for one of the preliminary versions of a new armv6 port. I took them and made them more generic. Option not enabled by default since each board/port has to provide its own eputc, and possibly do other things as well...
* Add very simple virtio_random(4) driver to harvest entropy from hostbryanv2014-01-182-0/+2
| | | | Reviewed by: markm (random bits only)
* Fix a braino with r259730: we cannot currently use CFLAGS.gcc ordim2014-01-091-4/+8
| | | | | | | | | | CFLAGS.clang in sys/conf/Makefile.arm, since the main kernel build does not use <bsd.sys.mk>. So revert that particular change for now. Pointy hat to: me Noticed by: zbb MFC after: 3 days X-MFC-With: r259730
* Remove aicasm as a build dependency. It made sense when the ahc and ahdscottl2014-01-071-36/+2
| | | | | | | | | | | | drivers and their firmware were under active development, but those days have passed. The firmware now exists in pre-compiled form, no longer dependent on it's sources or on aicasm. If you wish to rebuild the firmware from source, the glue still exists under the 'make firmware' target in sys/modules/aic7xxx. This also fixes the problem introduced with r257777 et al with building kernels the old fashioned way in sys/$arch/compile/$CONFIG when the ahc/ahd drivers were included.
OpenPOWER on IntegriCloud