summaryrefslogtreecommitdiffstats
path: root/sys/i386
Commit message (Collapse)AuthorAgeFilesLines
* As discussed on -current, remove the hardcoded default maxswzone.des2012-08-141-8/+0
| | | | MFC after: 3 weeks
* Remove the deassert INIT IPI from the IPI startup sequence for APs.jhb2012-08-131-16/+1
| | | | | | | | | It is not listed in the boot sequence in the MP specification (1.4), and it is explicitly ignored on modern CPUs. It was only ever required when bootstrapping systems with external APICs (that is, SMP machines with 486s), which FreeBSD has never supported (and never will). While here, tidy some comments and remove some banal ones.
* Add a 10 millisecond delay after sending the initial INIT IPI. Thisjhb2012-08-131-1/+2
| | | | | | matches the algorithm in the MP specification (1.4). Previously we were sending out the deassert INIT IPI immediately after the initial INIT IPI was sent.
* Build modules along with the XENHVM kernels.cperciva2012-08-131-2/+0
| | | | | No objections from: freebsd-xen mailing list MFC after: 1 week
* Eliminate an unnecessary acquisition and release of the page queues lockalc2012-08-101-2/+0
| | | | | | | from pmap_pte(). PT_SET_MA() is not a queued mapping update, but instead an immediate mapping update, so the page queues lock is not required here. Reviewed by: cperciva
* Add lfence().kib2012-08-011-0/+7
| | | | MFC after: 1 week
* Regen.jhb2012-07-305-7/+7
|
* The linux_lstat() system call accepts a pointer to a 'struct l_stat', not ajhb2012-07-301-1/+1
| | | | 'struct ostat'.
* Change (unused) prototype for stmxcsr() to match reality.kib2012-07-301-1/+1
| | | | | Noted by: jhb MFC after: 1 week
* MFamd64 r238623:kib2012-07-267-32/+55
| | | | | | | Introduce curpcb magic variable. Requested and reviewed by: bde MFC after: 3 weeks
* MFCamd64 r238598:kib2012-07-213-5/+35
| | | | | | | Provide siginfo.si_code for floating point errors when error occurs using the SSE math processor. MFC after: 3 weeks
* MFamd64 r238668:kib2012-07-211-16/+13
| | | | | | | Stop clearing x87 exceptions in the #MF handler. Requested by: bde MFC after: 1 week
* MFamd64 r238597:kib2012-07-211-0/+2
| | | | | | Add stmxcsr. MFC after: 3 weeks
* MFamd64 r238669:kib2012-07-211-0/+2
| | | | | | | Force clean FPU state in PCB user FPU save area for PT_I386_{GET,SET}XMMREGS. Reported by: bde MFC after: 1 week
* Add a clts() wrapper around the 'clts' instruction to <machine/cpufunc.h>jhb2012-07-092-11/+18
| | | | | | | | | | | on x86 and use that to implement stop_emulating() in the fpu/npx code. Reimplement start_emulating() in the non-XEN case by using load_cr0() and rcr0() instead of the 'lmsw' and 'smsw' instructions. Intel explicitly discourages the use of 'lmsw' and 'smsw' on 80386 and later processors in the description of these instructions in Volume 2 of the ADM. Reviewed by: kib MFC after: 1 month
* Partially revert r217515 so that the mem_range_softc variable is alwaysjhb2012-07-092-2/+3
| | | | | | | present on x86 kernels. This fixes the build of kernels that include 'device acpi' but do not include 'device mem'. MFC after: 1 month
* Fix XEN build, broken in r237924.brueffer2012-07-021-2/+2
| | | | | Reported by: gcooper Pointy hat: brueffer
* Replace an unreachable panic() in vm86_getptr (been there for 13 years) withbrueffer2012-07-012-3/+3
| | | | | | | | | | a KASSERT() behind the functions's only consumer. Suggested by: kib Reviewed by: kib CID: 4494 Found with: Coverity Prevent(tm) MFC after: 2 weeks
* Add new pmap layer locks to the predefined lock order. Change the namesalc2012-06-271-1/+1
| | | | of a few existing VM locks to follow a consistent naming scheme.
* Commit changes missed from r237435. Properly calculate the signalkib2012-06-221-3/+10
| | | | | | | | | | trampoline addresses after the shared page is enabled. Handle FreeBSD ABIs without shared page support too. Reported and tested by: David Wolfskill <david catwhisker org> (previous version) Pointy hat to: kib MFC after: 1 month
* Enable shared page on i386, now it has a use for vdso_timehands.kib2012-06-222-2/+6
| | | | MFC after: 1 month
* Implement mechanism to export some kernel timekeeping data tokib2012-06-221-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | usermode, using shared page. The structures and functions have vdso prefix, to indicate the intended location of the code in some future. The versioned per-algorithm data is exported in the format of struct vdso_timehands, which mostly repeats the content of in-kernel struct timehands. Usermode reading of the structure can be lockless. Compatibility export for 32bit processes on 64bit host is also provided. Kernel also provides usermode with indication about currently used timecounter, so that libc can fall back to syscall if configured timecounter is unknown to usermode code. The shared data updates are initiated both from the tc_windup(), where a fast task is queued to do the update, and from sysctl handlers which change timecounter. A manual override switch kern.timecounter.fast_gettime allows to turn off the mechanism. Only x86 architectures export the real algorithm data, and there, only for tsc timecounter. HPET counters page could be exported as well, but I prefer to not further glue the kernel and libc ABI there until proper vdso-based solution is developed. Minimal stubs neccessary for non-x86 architectures to still compile are provided. Discussed with: bde Reviewed by: jhb Tested by: flo MFC after: 1 month
* Reserve AT_TIMEKEEP auxv entry for providing usermode the pointer tokib2012-06-221-0/+1
| | | | | | timekeeping information. MFC after: 1 week
* - Updated TOE support in the kernel.np2012-06-192-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Stateful TCP offload drivers for Terminator 3 and 4 (T3 and T4) ASICs. These are available as t3_tom and t4_tom modules that augment cxgb(4) and cxgbe(4) respectively. The cxgb/cxgbe drivers continue to work as usual with or without these extra features. - iWARP driver for Terminator 3 ASIC (kernel verbs). T4 iWARP in the works and will follow soon. Build-tested with make universe. 30s overview ============ What interfaces support TCP offload? Look for TOE4 and/or TOE6 in the capabilities of an interface: # ifconfig -m | grep TOE Enable/disable TCP offload on an interface (just like any other ifnet capability): # ifconfig cxgbe0 toe # ifconfig cxgbe0 -toe Which connections are offloaded? Look for toe4 and/or toe6 in the output of netstat and sockstat: # netstat -np tcp | grep toe # sockstat -46c | grep toe Reviewed by: bz, gnn Sponsored by: Chelsio communications. MFC after: ~3 months (after 9.1, and after ensuring MFC is feasible)
* The page flag PGA_WRITEABLE is set and cleared exclusively by the pmapalc2012-06-161-0/+1
| | | | | | | | | | | | | | | | layer, but it is read directly by the MI VM layer. This change introduces pmap_page_is_write_mapped() in order to completely encapsulate all direct access to PGA_WRITEABLE in the pmap layer. Aesthetics aside, I am making this change because amd64 will likely begin using an alternative method to track write mappings, and having pmap_page_is_write_mapped() in place allows me to make such a change without further modification to the MI VM layer. As an added bonus, tidy up some nearby comments concerning page flags. Reviewed by: kib MFC after: 6 weeks
* Oops - use the actual 11n enable option.adrian2012-06-151-1/+1
|
* Ok, ok. 802.11n can be on by default in GENERIC in -HEAD.adrian2012-06-151-0/+2
| | | | God help me.
* - Fix resumectx() prototypes to reflect reality.jkim2012-06-133-8/+5
| | | | | - For i386, simply jump to resumectx() with PCB in %ecx. - Fix a style(9) nit while I am here.
* Share IPI init and startup code of mp_machdep.c with acpi_wakeup.ciwasaki2012-06-122-44/+55
| | | | as ipi_startup().
* Some fixes for r236772.iwasaki2012-06-101-2/+2
| | | | | | | | - Remove cpuset stopped_cpus which is no longer used. - Add a short comment for cpuset suspended_cpus clearing. - Fix the un-ordered x86/acpica/acpi_wakeup.c in conf/files.amd64 and i386. Pointed-out by: attilio@
* Add x86/acpica/acpi_wakeup.c for amd64 and i386. Difference ofiwasaki2012-06-095-438/+38
| | | | | | | | | | | | | | | | | | | | | | suspend/resume procedures are minimized among them. common: - Add global cpuset suspended_cpus to indicate APs are suspended/resumed. - Remove acpi_waketag and acpi_wakemap from acpivar.h (no longer used). - Add some variables in acpi_wakecode.S in order to minimize the difference among amd64 and i386. - Disable load_cr3() because now CR3 is restored in resumectx(). amd64: - Add suspend/resume related members (such as MSR) in PCB. - Modify savectx() for above new PCB members. - Merge acpi_switch.S into cpu_switch.S as resumectx(). i386: - Merge(and remove) suspendctx() into savectx() in order to match with amd64 code. Reviewed by: attilio@, acpi@
* Various small changes to PV entry management:alc2012-06-042-26/+32
| | | | | | | | | | | | | | | | | | | Constify pc_freemask[]. pmap_pv_reclaim() Eliminate "freemask" because it was a pessimization. Add a comment about the resident count adjustment. free_pv_entry() [i386 only] Merge an optimization from amd64 (r233954). get_pv_entry() Eliminate the move to tail of the pv_chunk on the global pv_chunks list. (The right strategy needs more thought. Moreover, there were unintended differences between the amd64 and i386 implementation.) pmap_remove_pages() Eliminate unnecessary ()'s.
* free wdog_kern_pat calls in post-panic paths from under SW_WATCHDOGavg2012-06-031-4/+2
| | | | | | Those calls are useful with hardware watchdog drivers too. MFC after: 3 weeks
* Isolate the global pv list lock from data and other locks to prevent falsealc2012-06-021-1/+11
| | | | sharing within the cache.
* Use plain store for atomic_store_rel on x86, instead of implicitlykib2012-06-021-39/+39
| | | | | | | | | locked xchg instruction. IA32 memory model guarantees that store has release semantic, since stores cannot pass loads or stores. Reviewed by: bde, jhb Tested by: pho MFC after: 2 weeks
* Consistently use ACPI_SUCCESS() and ACPI_FAILURE() macros wherever possible.jkim2012-06-011-2/+1
|
* Tidy up code clutter in SMP case a bit. No functional change.jkim2012-06-011-10/+6
|
* Call AcpiSetFirmwareWakingVector() with interrupt disabled for consistency.jkim2012-06-011-2/+2
|
* Improve style(9) in the previous commit.jkim2012-06-011-3/+3
|
* Call AcpiLeaveSleepStatePrep() in interrupt disabled contextiwasaki2012-06-011-54/+57
| | | | | | | | | | | | | | | | | | (described in ACPICA source code). - Move intr_disable() and intr_restore() from acpi_wakeup.c to acpi.c and call AcpiLeaveSleepStatePrep() in interrupt disabled context. - Add acpi_wakeup_machdep() to execute wakeup MD procedures and call it twice in interrupt disabled/enabled context (ia64 version is just dummy). - Rename wakeup_cpus variable in acpi_sleep_machdep() to suspcpus in order to be shared by acpi_sleep_machdep() and acpi_wakeup_machdep(). - Move identity mapping related code to acpi_install_wakeup_handler() (i386 version) for preparation of x86/acpica/acpi_wakeup.c (MFC candidate). Reviewed by: jkim@ MFC after: 2 days
* Eliminate code duplication in free_pv_entry() and pmap_remove_pages() byalc2012-06-012-20/+20
| | | | introducing free_pv_chunk().
* Eliminate some purely stylistic differences among the amd64, i386 native,alc2012-05-302-8/+8
| | | | and i386 xen PV entry allocators.
* MFi386 pmap r233433alc2012-05-291-1/+0
| | | | | Disable detailed PV entry accounting by default. (A config option for enabling it was already introduced in r233433.)
* Rename pmap_collect() to pmap_pv_reclaim() and rewrite it such that it noalc2012-05-291-59/+121
| | | | | | | | | | | | | | | longer uses the active and inactive paging queues. Instead, the pmap now maintains an LRU-ordered list of pv entry pages, and pmap_pv_reclaim() uses this list to select pv entries for reclamation. Note: The old pmap_collect() tried to avoid reclaiming mappings for pages that have either a hold_count or a busy field that is non-zero. However, this isn't necessary for correctness, and the locking in pmap_collect() was insufficient to guarantee that such mappings weren't reclaimed. The new pmap_pv_reclaim() doesn't even try. Tested by: sbruno MFC after: 5 weeks
* Make sure that each va_start has one and only one matching va_end,kevlo2012-05-291-0/+4
| | | | especially in error cases.
* Update a comment in get_pv_entry() to reflect the changes to thealc2012-05-281-2/+2
| | | | synchronization of pv_vafree in r236158.
* Replace all uses of the vm page queues lock by a r/w lock that is privatealc2012-05-271-59/+67
| | | | | | | | | | | to this pmap.c. This new r/w lock is used primarily to synchronize access to the PV lists. However, it will be used in a somewhat unconventional way. As finer-grained PV list locking is added to each of the pmap functions that acquire this r/w lock, its acquisition will be changed from write to read, enabling concurrent execution of the pmap functions with finer-grained locking. X-MFC after: r236045
* Rename pmap_collect() to pmap_pv_reclaim() and rewrite it such that it noalc2012-05-262-64/+132
| | | | | | | | | | | | | | longer uses the active and inactive paging queues. Instead, the pmap now maintains an LRU-ordered list of pv entry pages, and pmap_pv_reclaim() uses this list to select pv entries for reclamation. Note: The old pmap_collect() tried to avoid reclaiming mappings for pages that have either a hold_count or a busy field that is non-zero. However, this isn't necessary for correctness, and the locking in pmap_collect() was insufficient to guarantee that such mappings weren't reclaimed. The new pmap_pv_reclaim() doesn't even try. MFC after: 5 weeks
* MFp4 bz_ipv6_fast:bz2012-05-241-0/+6
| | | | | | | | | | | | | | | | | | | | in_cksum.h required ip.h to be included for struct ip. To be able to use some general checksum functions like in_addword() in a non-IPv4 context, limit the (also exported to user space) IPv4 specific functions to the times, when the ip.h header is present and IPVERSION is defined (to 4). We should consider more general checksum (updating) functions to also allow easier incremental checksum updates in the L3/4 stack and firewalls, as well as ponder further requirements by certain NIC drivers needing slightly different pseudo values in offloading cases. Thinking in terms of a better "library". Sponsored by: The FreeBSD Foundation Sponsored by: iXsystems Reviewed by: gnn (as part of the whole) MFC After: 3 days
* MF amd64 r233097, r233122alc2012-05-241-12/+35
| | | | | | | | | With the changes over the past year to how accesses to the page's dirty field are synchronized, there is no need for pmap_protect() to acquire the page queues lock unless it is going to access the pv lists or PMAP1/PADDR1. Style fix to pmap_protect().
OpenPOWER on IntegriCloud