aboutsummaryrefslogtreecommitdiff
path: root/sys/i386
Commit message (Collapse)AuthorAgeFilesLines
* fix UP compilationKip Macy2009-09-112-3/+1
| | | | Notes: svn path=/head/; revision=197108
* Consolidate CPUID to CPU family/model macros for amd64 and i386 to reduceJung-uk Kim2009-09-106-24/+18
| | | | | | | unnecessary #ifdef's for shared code between them. Notes: svn path=/head/; revision=197070
* As jhb@ pointed out to me, r197057 was incorrect, not least because theseDag-Erling Smørgrav2009-09-102-0/+13
| | | | | | | are generated files. Notes: svn path=/head/; revision=197064
* As was done in r196643 for i386 and amd64, swap the start/end virtualKonstantin Belousov2009-09-091-2/+2
| | | | | | | | | | | addresses in pmap_invalidate_cache_range(). Reported by: Vincent Hoffman <vince unsane co uk> Reviewed by: jhb MFC after: 3 days Notes: svn path=/head/; revision=197046
* - Teach vesa(4) and dpms(4) about x86emu. [1]Xin LI2009-09-094-2047/+1
| | | | | | | | | | | | | - Add vesa kernel options for amd64. - Connect libvgl library and splash kernel modules to amd64 build. - Connect manual page dpms(4) to amd64 build. - Remove old vesa/dpms files. Submitted by: paradox <ddkprog yahoo com> [1], swell k at gmail.com (with some minor tweaks) Notes: svn path=/head/; revision=197025
* Get rid of the _NO_NAMESPACE_POLLUTION kludge by creating anPoul-Henning Kamp2009-09-082-6/+53
| | | | | | | | architecture specific include file containing the _ALIGN* stuff which <sys/socket.h> needs. Notes: svn path=/head/; revision=196994
* Add missing ';'.Konstantin Belousov2009-09-041-1/+1
| | | | Notes: svn path=/head/; revision=196829
* whitespace commitJulian Elischer2009-09-041-2/+2
| | | | | | | Submitted by: bde@ Notes: svn path=/head/; revision=196816
* Bring i386 up to date with amd64 and others.Julian Elischer2009-09-041-5/+5
| | | | | | | | | | The macros for PCPU can be slightly simplified, which makes the resulting tangle qa lot easier to understand when trying to read them. MFC after: 4 weeks Notes: svn path=/head/; revision=196811
* Fix confusing comments about default PAT entries.Jung-uk Kim2009-09-021-2/+2
| | | | Notes: svn path=/head/; revision=196771
* - Work around ACPI mode transition problem for recent NVIDIA 9400M chipsetJung-uk Kim2009-09-021-17/+46
| | | | | | | | | | | | | | | | based Intel Macs. Since r189055, these platforms started freezing when ACPI is being initialized for unknown reason. For these platforms, we just use the old PAT layout. Note this change is not enough to boot fully on these platforms because of other problems but it makes debugging possible. Note MacBook5,2 may be affected as well but it was not added here because of lack of hardware to test. - Initialize PAT MSR fully instead of reading and modifying it for safety. Reported by: rpaulo, hps, Eygene Ryabinkin (rea-fbsd at codelabs dot ru) Reviewed by: jhb Notes: svn path=/head/; revision=196769
* Don't attempt to bind the current thread to the CPU an IRQ is bound toJohn Baldwin2009-09-021-9/+12
| | | | | | | | | | when removing an interrupt handler from an IRQ during shutdown. During shutdown we are already bound to CPU 0 and this was triggering a panic. MFC after: 3 days Notes: svn path=/head/; revision=196745
* Delete whitespace not in i386/pmap.cAdrian Chadd2009-09-011-1/+0
| | | | Notes: svn path=/head/; revision=196734
* Migrate to use cpuset_t.Adrian Chadd2009-09-011-5/+4
| | | | Notes: svn path=/head/; revision=196728
* Merge in the pat_works work from sys/i386/i386/pmap.c - primarily to reduceAdrian Chadd2009-09-011-65/+74
| | | | | | | diff size. Notes: svn path=/head/; revision=196726
* Fix broken build.Adrian Chadd2009-09-011-0/+1
| | | | Notes: svn path=/head/; revision=196725
* Revert previous commit; that was left-over junk in the tree.Adrian Chadd2009-08-311-0/+2
| | | | Notes: svn path=/head/; revision=196724
* Shuffle pagezero() into the same location as in sys/i386/i386/pmap.c.Adrian Chadd2009-08-312-18/+16
| | | | Notes: svn path=/head/; revision=196723
* Simplify pmap_change_attr() a bit:John Baldwin2009-08-311-13/+4
| | | | | | | | | | | - Always calculate the cache bits instead of doing it on-demand. - Always set changed to TRUE rather than only doing it if it is false. Discussed with: alc MFC after: 3 days Notes: svn path=/head/; revision=196707
* Improve pmap_change_attr() so that it is able to demote a large (2/4MB)John Baldwin2009-08-312-52/+181
| | | | | | | | | | | | | | | | | | | | | | page into 4KB pages as needed. This should be fairly rare in practice on i386. This includes merging the following changes from the amd64 pmap: 180430, 180485, 180845, 181043, 181077, and 196318. - Add basic support for changing attributes on PDEs to pmap_change_attr() similar to the support in the initial version of pmap_change_attr() on amd64 including inlines for pmap_pde_attr() and pmap_pte_attr(). - Extend pmap_demote_pde() to include the ability to instantiate a new page table page where none existed before. - Enhance pmap_change_attr(). Use pmap_demote_pde() to demote a 2/4MB page mapping to 4KB page mappings when the specified attribute change only applies to a portion of the 2/4MB page. Previously, in such cases, pmap_change_attr() gave up and returned an error. - Correct a critical accounting error in pmap_demote_pde(). Reviewed by: alc MFC after: 3 days Notes: svn path=/head/; revision=196705
* Partially revert 196524: this part of change should not be committed asXin LI2009-08-311-20/+25
| | | | | | | | | part of the changeset - it's an unrelated one. Reported by: danfe Notes: svn path=/head/; revision=196704
* Make sure FreeBSD binaries without .note.ABI-tag section workBjoern A. Zeeb2009-08-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | correctly and do not match a colliding Debian GNU/kFreeBSD brandinfo statements. For this mark the Debian GNU/kFreeBSD brandinfo that it must have an .note.ABI-tag section and ignore the old EI_OSABI brandinfo when comparing a possibly colliding set of options. Due to SYSINIT we add the brandinfo in a non-deterministic order, so native FreeBSD is not always first. We may want to consider to force native FreeBSD to come first as well. The only way a problem could currently be noticed is when running an i386 binary without the .note.ABI-tag on amd64 and the Debian GNU/kFreeBSD brandinfo was matched first, as the fallback to ld-elf32.so.1 does not exist in that case. Reported and tested by: ticso In collaboration with: kib MFC after: 3 days Notes: svn path=/head/; revision=196653
* Swap the start/end virtual addresses in pmap_invalidate_cache_range().Robert Noland2009-08-291-2/+2
| | | | | | | | | | | | This fixes the functionality on non SelfSnoop hardware. Found by: rnoland Submitted by: alc Reviewed by: kib MFC after: 3 days Notes: svn path=/head/; revision=196643
* Fix build broken in r196524.Gleb Smirnoff2009-08-251-8/+0
| | | | Notes: svn path=/head/; revision=196543
* Fix VESA modes and allow 8bit depth modes.Xin LI2009-08-241-21/+24
| | | | | | | | | PR: i386/124902 Submitted by: paradox <ddkprog yahoo com> MFC after: 2 months Notes: svn path=/head/; revision=196524
* Fix handling of .note.ABI-tag section for GNU systems [1].Bjoern A. Zeeb2009-08-243-6/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Handle GNU/Linux according to LSB Core Specification 4.0, Chapter 11. Object Format, 11.8. ABI note tag. Also check the first word of desc, not only name, according to glibc abi-tags specification to distinguish between Linux and kFreeBSD. Add explicit handling for Debian GNU/kFreeBSD, which runs on our kernels as well [2]. In {amd64,i386}/trap.c, when checking osrel of the current process, also check the ABI to not change the signal behaviour for Linux binary processes, now that we save an osrel version for all three from the lists above in struct proc [2]. These changes make it possible to run FreeBSD, Debian GNU/kFreeBSD and Linux binaries on the same machine again for at least i386 and amd64, and no longer break kFreeBSD which was detected as GNU(/Linux). PR: kern/135468 Submitted by: dchagin [1] (initial patch) Suggested by: kib [2] Tested by: Petr Salinger (Petr.Salinger seznam.cz) for kFreeBSD Reviewed by: kib MFC after: 3 days Notes: svn path=/head/; revision=196512
* Check whether the SMBIOS reports reasonable amount of memory. If it isJung-uk Kim2009-08-201-10/+12
| | | | | | | | | | | | less than "avail memory", fall back to Maxmem to avoid user confusion. We use SMBIOS information to display "real memory" since r190599 but some broken SMBIOS implementation reported only half of actual memory. Tested by: bz Approved by: re (kib) Notes: svn path=/head/; revision=196412
* Temporarily revert the new-bus locking for 8.0 release. It will beJohn Baldwin2009-08-204-12/+0
| | | | | | | | | reintroduced after HEAD is reopened for commits by re@. Approved by: re (kib), attilio Notes: svn path=/head/; revision=196403
* Make the MacBookPro3,1 hardware boot again.Ed Schouten2009-08-191-0/+1
| | | | | | | | Tested by: Patrick Lamaiziere <patfbsd davenulle org> Approved by: re (kib) Notes: svn path=/head/; revision=196390
* Port recent IPI enhachements to en:Attilio Rao2009-08-151-0/+38
| | | | | | | | | | * Introduce the ipi_nmi_handler() function for the Xen infrastructure * Fixup adeguately the ipi sender functions Approved by: re (kib) Notes: svn path=/head/; revision=196256
* Adjust the handling of the local APIC PMC interrupt vector:John Baldwin2009-08-143-4/+86
| | | | | | | | | | | | | | | | | | | - Provide lapic_disable_pmc(), lapic_enable_pmc(), and lapic_reenable_pmc() routines in the local APIC code that the hwpmc(4) driver can use to manage the local APIC PMC interrupt vector. - Do not enable the local APIC PMC interrupt vector by default when HWPMC_HOOKS is enabled. Instead, the hwpmc(4) driver explicitly enables the interrupt when it is succesfully initialized and disables the interrupt when it is unloaded. This avoids enabling the interrupt on unsupported CPUs which may result in spurious NMIs. Reported by: rnoland Reviewed by: jkoshy Approved by: re (kib) MFC after: 2 weeks Notes: svn path=/head/; revision=196224
* * Completely Remove the option STOP_NMI from the kernel. This optionAttilio Rao2009-08-138-86/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | has proven to have a good effect when entering KDB by using a NMI, but it completely violates all the good rules about interrupts disabled while holding a spinlock in other occasions. This can be the cause of deadlocks on events where a normal IPI_STOP is expected. * Adds an new IPI called IPI_STOP_HARD on all the supported architectures. This IPI is responsible for sending a stop message among CPUs using a privileged channel when disponible. In other cases it just does match a normal IPI_STOP. Right now the IPI_STOP_HARD functionality uses a NMI on ia32 and amd64 architectures, while on the other has a normal IPI_STOP effect. It is responsibility of maintainers to eventually implement an hard stop when necessary and possible. * Use the new IPI facility in order to implement a new userend SMP kernel function called stop_cpus_hard(). That is specular to stop_cpu() but it does use the privileged channel for the stopping facility. * Let KDB use the newly introduced function stop_cpus_hard() and leave stop_cpus() for all the other cases * Disable interrupts on CPU0 when starting the process of APs suspension. * Style cleanup and comments adding This patch should fix the reboot/shutdown deadlocks many users are constantly reporting on mailing lists. Please don't forget to update your config file with the STOP_NMI option removal Reviewed by: jhb Tested by: pho, bz, rink Approved by: re (kib) Notes: svn path=/head/; revision=196196
* Make the newbus subsystem Giant free by adding the new newbus sxlock.Attilio Rao2009-08-024-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The newbus lock is responsible for protecting newbus internIal structures, device states and devclass flags. It is necessary to hold it when all such datas are accessed. For the other operations, softc locking should ensure enough protection to avoid races. Newbus lock is automatically held when virtual operations on the device and bus are invoked when loading the driver or when the suspend/resume take place. For other 'spourious' operations trying to access/modify the newbus topology, newbus lock needs to be automatically acquired and dropped. For the moment Giant is also acquired in some key point (modules subsystem) in order to avoid problems before the 8.0 release as module handlers could make assumptions about it. This Giant locking should go just after the release happens. Please keep in mind that the public interface can be expanded in order to provide more support, if there are really necessities at some point and also some bugs could arise as long as the patch needs a bit of further testing. Bump __FreeBSD_version in order to reflect the newbus lock introduction. Reviewed by: ed, hps, jhb, imp, mav, scottl No answer by: ariff, thompsa, yongari Tested by: pho, G. Trematerra <giovanni dot trematerra at gmail dot com>, Brandon Gooch <jamesbrandongooch at gmail dot com> Sponsored by: Yahoo! Incorporated Approved by: re (ksmith) Notes: svn path=/head/; revision=196037
* Make the MacBook3,1 boot again.Ed Schouten2009-08-021-0/+1
| | | | | | | Approved by: re (kib) Notes: svn path=/head/; revision=196033
* Fix XEN build breakage, by implementing pmap_invalidate_cache_range()Konstantin Belousov2009-07-291-16/+88
| | | | | | | | | | and using it when appropriate. Merge analogue of the r195836 optimization to XEN. Approved by: re (kensmith) Notes: svn path=/head/; revision=195949
* As was done in r195820 for amd64, use clflush for flushing cache linesKonstantin Belousov2009-07-297-21/+143
| | | | | | | | | | | | | | | when memory page caching attributes changed, and CPU does not support self-snoop, but implemented clflush, for i386. Take care of possible mappings of the page by sf buffer by utilizing the mapping for clflush, otherwise map the page transiently. Amd64 used direct map. Proposed and reviewed by: alc Approved by: re (kensmith) Notes: svn path=/head/; revision=195940
* Refine the MacBook hack to only match early models that have Intel ICH.Rui Paulo2009-07-271-1/+4
| | | | | | | | Discussed with: kjim Approved by: re (kib) Notes: svn path=/head/; revision=195907
* Add a new type of VM object: OBJT_SG. An OBJT_SG object is very similar toJohn Baldwin2009-07-242-2/+2
| | | | | | | | | | | | | | a device pager (OBJT_DEVICE) object in that it uses fictitious pages to provide aliases to other memory addresses. The primary difference is that it uses an sglist(9) to determine the physical addresses for a given offset into the object instead of invoking the d_mmap() method in a device driver. Reviewed by: alc Approved by: re (kensmith) MFC after: 2 weeks Notes: svn path=/head/; revision=195840
* Eliminate unnecessary cache and TLB flushes by pmap_change_attr(). (ThisAlan Cox2009-07-231-4/+11
| | | | | | | | | optimization was implemented in the amd64 version roughly 1 year ago.) Approved by: re (kensmith) Notes: svn path=/head/; revision=195836
* Change the handling of fictitious pages by pmap_page_set_memattr() onAlan Cox2009-07-192-5/+25
| | | | | | | | | | | | | | | | | | | | amd64 and i386. Essentially, fictitious pages provide a mechanism for creating aliases for either normal or device-backed pages. Therefore, pmap_page_set_memattr() on a fictitious page needn't update the direct map or flush the cache. Such actions are the responsibility of the "primary" instance of the page or the device driver that "owns" the physical address. For example, these actions are already performed by pmap_mapdev(). The device pager needn't restore the memory attributes on a fictitious page before releasing it. It's now pointless. Add pmap_page_set_memattr() to the Xen pmap. Approved by: re (kib) Notes: svn path=/head/; revision=195774
* An addendum to r195649, "Add support to the virtual memory system forAlan Cox2009-07-181-3/+9
| | | | | | | | | | | | | | | | | | | configuring machine-dependent memory attributes...": Don't set the memory attribute for a "real" page that is allocated to a device object in vm_page_alloc(). It is a pointless act, because the device pager replaces this "real" page with a "fake" page and sets the memory attribute on that "fake" page. Eliminate pointless code from pmap_cache_bits() on amd64. Employ the "Self Snoop" feature supported by some x86 processors to avoid cache flushes in the pmap. Approved by: re (kib) Notes: svn path=/head/; revision=195749
* Match PCI Express root bridge _HID directly instead ofJung-uk Kim2009-07-131-0/+1
| | | | | | | | | | relying on _CID. Reviewed by: jhb Approved by: re (kib) Notes: svn path=/head/; revision=195666
* Add support to the virtual memory system for configuring machine-Alan Cox2009-07-124-25/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dependent memory attributes: Rename vm_cache_mode_t to vm_memattr_t. The new name reflects the fact that there are machine-dependent memory attributes that have nothing to do with controlling the cache's behavior. Introduce vm_object_set_memattr() for setting the default memory attributes that will be given to an object's pages. Introduce and use pmap_page_{get,set}_memattr() for getting and setting a page's machine-dependent memory attributes. Add full support for these functions on amd64 and i386 and stubs for them on the other architectures. The function pmap_page_set_memattr() is also responsible for any other machine-dependent aspects of changing a page's memory attributes, such as flushing the cache or updating the direct map. The uses include kmem_alloc_contig(), vm_page_alloc(), and the device pager: kmem_alloc_contig() can now be used to allocate kernel memory with non-default memory attributes on amd64 and i386. vm_page_alloc() and the device pager will set the memory attributes for the real or fictitious page according to the object's default memory attributes. Update the various pmap functions on amd64 and i386 that map pages to incorporate each page's memory attributes in the mapping. Notes: (1) Inherent to this design are safety features that prevent the specification of inconsistent memory attributes by different mappings on amd64 and i386. In addition, the device pager provides a warning when a device driver creates a fictitious page with memory attributes that are inconsistent with the real page that the fictitious page is an alias for. (2) Storing the machine-dependent memory attributes for amd64 and i386 as a dedicated "int" in "struct md_page" represents a compromise between space efficiency and the ease of MFCing these changes to RELENG_7. In collaboration with: jhb Approved by: re (kib) Notes: svn path=/head/; revision=195649
* Implementation of the upcoming Wireless Mesh standard, 802.11s, on theRui Paulo2009-07-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | net80211 wireless stack. This work is based on the March 2009 D3.0 draft standard. This standard is expected to become final next year. This includes two main net80211 modules, ieee80211_mesh.c which deals with peer link management, link metric calculation, routing table control and mesh configuration and ieee80211_hwmp.c which deals with the actually routing process on the mesh network. HWMP is the mandatory routing protocol on by the mesh standard, but others, such as RA-OLSR, can be implemented. Authentication and encryption are not implemented. There are several scripts under tools/tools/net80211/scripts that can be used to test different mesh network topologies and they also teach you how to setup a mesh vap (for the impatient: ifconfig wlan0 create wlandev ... wlanmode mesh). A new build option is available: IEEE80211_SUPPORT_MESH and it's enabled by default on GENERIC kernels for i386, amd64, sparc64 and pc98. Drivers that support mesh networks right now are: ath, ral and mwl. More information at: http://wiki.freebsd.org/WifiMesh Please note that this work is experimental. Also, please note that bridging a mesh vap with another network interface is not yet supported. Many thanks to the FreeBSD Foundation for sponsoring this project and to Sam Leffler for his support. Also, I would like to thank Gateworks Corporation for sending me a Cambria board which was used during the development of this project. Reviewed by: sam Approved by: re (kensmith) Obtained from: projects/mesh11s Notes: svn path=/head/; revision=195618
* There is an optimization in chmod(1), that makes it not to call chmod(2)Edward Tomasz Napierala2009-07-081-1/+2
| | | | | | | | | | | | | | | | if the new file mode is the same as it was before; however, this optimization must be disabled for filesystems that support NFSv4 ACLs. Chmod uses pathconf(2) to determine whether this is the case - however, pathconf(2) always follows symbolic links, while the 'chmod -h' doesn't. This change adds lpathconf(3) to make it possible to solve that problem in a clean way. Reviewed by: rwatson (earlier version) Approved by: re (kib) Notes: svn path=/head/; revision=195458
* After the per-CPU IDT changes, the IDT vector of an interrupt could changeJohn Baldwin2009-07-062-6/+22
| | | | | | | | | | | | | | | | | | | | | | | | when the interrupt was moved from one CPU to another. If the interrupt was enabled, then the old IDT vector needs to be disabled and the new IDT vector needs to be enabled. This was mostly masked prior to the recent MSI changes since in the older code almost all allocated IDT vectors were already enabled and the enabled vectors on the BSP during boot covered enough of the IDT range. However, after the MSI changes, MSI interrupts that were allocated but not enabled (e.g. DRM with MSI) during boot could result in an allocated IDT vector that wasn't enabled. The round-robin at the end of boot could place another interrupt at the same IDT vector without enabling the IDT vector causing trap 30 faults. Fix this by explicitly disabling/enabling the old and new IDT vectors for enabled interrupt sources when moving an interrupt between CPUs via the pic_assign_cpu() method. While here, fix a bug in my earlier changes so that an I/O APIC interrupt pin is left unchanged if ioapic_assign_cpu() fails to allocate a new IDT vector and returns ENOSPC. Approved by: re (kensmith) Notes: svn path=/head/; revision=195415
* PAE adds another level to the i386 page table. This level is a smallAlan Cox2009-07-052-11/+7
| | | | | | | | | | | | | | | | | | | | | | | | | 4-entry table that must be located within the first 4GB of RAM. This requirement is met by defining an UMA zone with a custom back-end allocator function. This revision makes two changes to this back-end allocator function: (1) It replaces the use of contigmalloc() with the use of kmem_alloc_contig(). This eliminates "double accounting", i.e., accounting by both the UMA zone and malloc tags. (I made the same change for the same reason to the zones supporting jumbo frames a week ago.) (2) It passes through the "wait" parameter, i.e., M_WAITOK, M_ZERO, etc. to kmem_alloc_contig() rather than ignoring it. pmap_init() calls uma_zalloc() with both M_WAITOK and M_ZERO. At the moment, this is harmless only because the default behavior of contigmalloc()/kmem_alloc_contig() is to wait and because pmap_init() doesn't really depend on the memory being zeroed. The back-end allocator function in the Xen pmap is dead code. I am changing it nonetheless because I don't want to leave any "bad examples" in the source tree for someone to copy at a later date. Approved by: re (kib) Notes: svn path=/head/; revision=195385
* Cleanup ALIGNED_POINTER:Sam Leffler2009-07-051-0/+7
| | | | | | | | | | | | | | o add to platforms where it was missing (arm, i386, powerpc, sparc64, sun4v) o define as "1" on amd64 and i386 where there is no restriction o make the type returned consistent with ALIGN o remove _ALIGNED_POINTER o make associated comments consistent Reviewed by: bde, imp, marcel Approved by: re (kensmith) Notes: svn path=/head/; revision=195376
* Enable POSIX semaphores on all non-embedded architectures by default.Ed Schouten2009-07-021-0/+1
| | | | | | | | | | | | More applications (including Firefox) seem to depend on this nowadays, so not having this enabled by default is a bad idea. Proposed by: miwi Patch by: Florian Smeets <flo kasimir com> Approved by: re (kib) Notes: svn path=/head/; revision=195295
* Improve the handling of cpuset with interrupts.John Baldwin2009-07-016-44/+101
| | | | | | | | | | | | | | | | | | | | | | | | - For x86, change the interrupt source method to assign an interrupt source to a specific CPU to return an error value instead of void, thus allowing it to fail. - If moving an interrupt to a CPU fails due to a lack of IDT vectors in the destination CPU, fail the request with ENOSPC rather than panicing. - For MSI interrupts on x86 (but not MSI-X), only allow cpuset to be used on the first interrupt in a group. Moving the first interrupt in a group moves the entire group. - Use the icu_lock to protect intr_next_cpu() on x86 instead of the intr_table_lock to fix a LOR introduced in the last set of MSI changes. - Add a new privilege PRIV_SCHED_CPUSET_INTR for using cpuset with interrupts. Previously, binding an interrupt to a CPU only performed a privilege check if the interrupt had an interrupt thread. Interrupts without a thread could be bound by non-root users as a result. - If an interrupt event's assign_cpu method fails, then restore the original cpuset mask for the associated interrupt thread. Approved by: re (kib) Notes: svn path=/head/; revision=195249