summaryrefslogtreecommitdiffstats
path: root/sys/amd64
Commit message (Collapse)AuthorAgeFilesLines
* Remove the unused major/minor numbers from iodev and memdev.ed2008-06-252-4/+0
| | | | | | | | | Now that st_rdev is being automatically generated by the kernel, there is no need to define static major/minor numbers for the iodev and memdev. We still need the minor numbers for the memdev, however, to distinguish between /dev/mem and /dev/kmem. Approved by: philip (mentor)
* Emit opcodes closer to GNU as(1) generated codes and micro-optimize.jkim2008-06-242-63/+49
|
* Rehash and clean up BPF JIT compiler macros to match AT&T notations.jkim2008-06-232-152/+152
|
* Ensure that KERNBASE is no less than the virtual address -2GB.alc2008-06-231-1/+1
|
* Prepare for a larger kernel virtual address space. Specifically, oncealc2008-06-211-4/+8
| | | | | | KERNBASE and VM_MIN_KERNEL_ADDRESS are no longer the same, the physical memory allocated during bootstrap will be offset from the low-end of the kernel's page table.
* Make preparations for increasing the size of the kernel virtualalc2008-06-201-3/+3
| | | | | | | | | | | | | | address space on the amd64 architecture. The amd64 architecture requires kernel code and global variables to reside in the highest 2GB of the 64-bit virtual address space. Thus, KERNBASE cannot change. However, KERNBASE is sometimes used as the start of the kernel virtual address space. Henceforth, VM_MIN_KERNEL_ADDRESS should be used instead. Since KERNBASE and VM_MIN_KERNEL_ADDRESS are still the same address, there should be no visible effect from this change (yet). That said, kris@ has tested crash dumps under the full patch that increases the kernel virtual address space on amd64 to 6GB. Tested by: kris@
* Add et(4), a port of DragonFly's Agere ET1310 10/100/Gigabitdelphij2008-06-201-0/+1
| | | | | | | | Ethernet device driver, written by sephe@ Obtained from: DragonFly Sponsored by: iXsystems MFC after: 2 weeks
* Make preparations for increasing the size of the kernel virtualalc2008-06-205-7/+7
| | | | | | | | | | address space on the amd64 architecture. The amd64 architecture requires kernel code and global variables to reside in the highest 2GB of the 64-bit virtual address space. Thus, KERNBASE cannot change. However, KERNBASE is sometimes used as the start of the kernel virtual address space. Henceforth, VM_MIN_KERNEL_ADDRESS should be used instead. Since KERNBASE and VM_MIN_KERNEL_ADDRESS are still the same address, there should be no visible effect from this change (yet).
* Tweak the promotion test in pmap_promote_pde(). Specifically, test PG_Aalc2008-06-131-5/+4
| | | | | | before PG_M. This sometimes prevents unnecessary removal of write access from a PTE. Overall, the net result is fewer demotions and promotion failures.
* Reverse the direction of pmap_promote_pde()'s traversal over the specifiedalc2008-06-121-11/+27
| | | | | | | | | | | page table page. The direction of the traversal can matter if pmap_promote_pde() has to remove write access (PG_RW) from a PTE that hasn't been modified (PG_M). In general, if there are two or more such PTEs to choose among, it is better to write protect the one nearer the high end of the page table page rather than the low end. This is because most programs access memory in an ascending direction. The net result of this change is a sometimes significant reduction in the number of failed promotion attempts and the number of pages that are write protected by pmap_promote_pde().
* Correct an error in pmap_promote_pde() that may result in an errantalc2008-06-011-5/+3
| | | | | | | | | | | | promotion within the kernel's address space. Specifically, pmap_promote_pde() is only called when the page table page (PTP) that is referenced by the given PDE has a full "use count", i.e., its wire_count is 512. Although this guarantees for a user address space that all 512 PTEs in the PTP hold valid mappings, the same is not true of the kernel's address space. A kernel PTP always has a use count of 512 regardless of the state of the PTEs. Therefore, pmap_promote_pde() should not assume (or assert) that the first PTE in the PTP is valid.
* Add jme(4) to the list of drivers supported by GENERIC kernel.yongari2008-05-271-0/+1
|
* Remove ISDN4BSD (I4B) from HEAD as it is not MPSAFE andbz2008-05-261-114/+0
| | | | | | | | | | | | | | | | | | parts relied on the now removed NET_NEEDS_GIANT. Most of I4B has been disconnected from the build since July 2007 in HEAD/RELENG_7. This is what was removed: - configuration in /etc/isdn - examples - man pages - kernel configuration - sys/i4b (drivers, layers, include files) - user space tools - i4b support from ppp - further documentation Discussed with: rwatson, re
* Add the DTrace hooks for exception handling (Function boundary tracejb2008-05-243-0/+125
| | | | -fbt- provider), cyclic clock and syscalls.
* The VM system no longer uses setPQL2(). Remove it and its helpers.alc2008-05-231-29/+0
|
* Add age(4) to the list of drivers supported by GENERIC kernel.yongari2008-05-191-0/+1
|
* Retire pmap_addr_hint(). It is no longer used.alc2008-05-181-12/+0
|
* Resort the if_ti driver to match the PCI Network cards instead of placingremko2008-05-171-1/+1
| | | | | | | | | it under the mii devices list. PR: kern/123147 Submitted by: gavin Approved by: imp (mentor, implicit) MFC after: 3 days
* Removed unused assembly offsets for structures digging.attilio2008-05-161-3/+0
|
* Regen.rdivacky2008-05-133-7/+10
| | | | Approved by: kib (mentor)
* Implement robust futexes. Most of the code is modelled afterrdivacky2008-05-132-4/+4
| | | | | | | | | | | what Linux does. This is because robust futexes are mostly userspace thing which we cannot alter. Two syscalls maintain pointer to userspace list and when process exits a routine walks this list waking up processes sleeping on futexes from that list. Reviewed by: kib (mentor) MFC after: 1 month
* Correct an error in pmap_align_superpage(). Specifically, correctlyalc2008-05-111-2/+3
| | | | | handle the case where the mapping is greater than a superpage in size but the alignment of the physical pages spans a superpage boundary.
* Introduce pmap_align_superpage(). It increases the starting virtualalc2008-05-091-0/+23
| | | | | address of the given mapping if a different alignment might result in more superpage mappings.
* enable IEEE80211_DEBUG and IEEE80211_AMPDU_AGE by defaultsam2008-05-031-0/+2
|
* Intel 4965 wireless driver (derived from openbsd driver of the same name)sam2008-04-291-0/+2
|
* Always use PG_PS_FRAME to extract the physical address of a 2/4MB pagealc2008-04-251-9/+10
| | | | from a PDE.
* - Add an integer argument to idle to indicate how likely we are to wakejeff2008-04-252-40/+172
| | | | | | | | | | | | | | | from idle over the next tick. - Add a new MD routine, cpu_wake_idle() to wakeup idle threads who are suspended in cpu specific states. This function can fail and cause the scheduler to fall back to another mechanism (ipi). - Implement support for mwait in cpu_idle() on i386/amd64 machines that support it. mwait is a higher performance way to synchronize cpus as compared to hlt & ipis. - Allow selecting the idle routine by name via sysctl machdep.idle. This replaces machdep.cpu_idle_hlt. Only idle routines supported by the current machine are permitted. Sponsored by: Nokia
* Implement linux_truncate64() syscall.rdivacky2008-04-231-1/+0
| | | | | Tested by: Aline de Freitas <aline@riseup.net> Approved by: kib (mentor)
* Now that all platforms use genclock, shuffle things around slightlyphk2008-04-223-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for better structure. Much of this is related to <sys/clock.h>, which should really have been called <sys/calendar.h>, but unless and until we need the name, the repocopy can wait. In general the kernel does not know about minutes, hours, days, timezones, daylight savings time, leap-years and such. All that is theoretically a matter for userland only. Parts of kernel code does however care: badly designed filesystems store timestamps in local time and RTC chips almost universally track time in a YY-MM-DD HH:MM:SS format, and sometimes in local timezone instead of UTC. For this we have <sys/clock.h> <sys/time.h> on the other hand, deals with time_t, timeval, timespec and so on. These know only seconds and fractions thereof. Move inittodr() and resettodr() prototypes to <sys/time.h>. Retain the names as it is one of the few surviving PDP/VAX references. Move startrtclock() to <machine/clock.h> on relevant platforms, it is a MD call between machdep.c/clock.c. Remove references to it elsewhere. Remove a lot of unnecessary <sys/clock.h> includes. Move the machdep.disable_rtc_set sysctl to subr_rtc.c where it belongs. XXX: should be kern.disable_rtc_set really, it's not MD.
* Multi-bss (aka vap) support for 802.11 devices.sam2008-04-201-2/+0
| | | | | | | | | | | Note this includes changes to all drivers and moves some device firmware loading to use firmware(9) and a separate module (e.g. ral). Also there no longer are separate wlan_scan* modules; this functionality is now bundled into the wlan module. Supported by: Hobnob and Marvell Reviewed by: many Obtained from: Atheros (some bits)
* move awi to the Attic; it will not make the jump to the new world ordersam2008-04-201-1/+0
| | | | Reviewed by: imp
* Put in a real isa_irq_pending() stub in order to remove two lines of dmesgpeter2008-04-191-2/+14
| | | | | | | noise from sio per unit. sio likes to probe if interrupts are configured correctly by looking at the pending bits of the atpic in order to put a non-fatal warning on the console. I think I'd rather read the pending bits from the apics, but I'm not sure its worth the hassle.
* - Add inlines for the monitor and mwait instructions.jeff2008-04-181-0/+13
| | | | Sponsored by: Nokia
* Regenerate.jkim2008-04-163-4/+46
|
* Add stubs for syscalls introduced in Linux 2.6.17 kernel.jkim2008-04-162-0/+12
| | | | | | Some GNU libc version started using them before 2.6.17 was officially out. MFC after: 3 days
* This file is unused on amd64.imp2008-04-151-32/+0
|
* Convert amd64 and i386 to share the atrtc device driver.phk2008-04-142-237/+19
|
* Connect k8temp(4) to the build.rpaulo2008-04-121-0/+2
|
* - Add the interrupt vector number to intr_event_create so MI code canjeff2008-04-111-1/+1
| | | | | | | | | | | | lookup hard interrupt events by number. Ignore the irq# for soft intrs. - Add support to cpuset for binding hardware interrupts. This has the side effect of binding any ithread associated with the hard interrupt. As per restrictions imposed by MD code we can only bind interrupts to a single cpu presently. Interrupts can be 'unbound' by binding them to all cpus. Reviewed by: jhb Sponsored by: Nokia
* Correct pmap_copy()'s method for extracting the physical address of aalc2008-04-101-6/+6
| | | | | | | | | | | 2/4MB page from a PDE. Specifically, change it to use PG_PS_FRAME, not PG_FRAME, to extract the physical address of a 2/4MB page from a PDE. Change the last argument passed to pmap_pv_insert_pde() from a vm_page_t representing the first 4KB page of a 2/4MB page to the vm_paddr_t of the 2/4MB page. This avoids an otherwise unnecessary conversion from a vm_paddr_t to a vm_page_t in pmap_copy().
* Regeneratekib2008-04-083-41/+73
|
* Implement the linux syscallskib2008-04-084-28/+26
| | | | | | | | | openat, mkdirat, mknodat, fchownat, futimesat, fstatat, unlinkat, renameat, linkat, symlinkat, readlinkat, fchmodat, faccessat. Submitted by: rdivacky Sponsored by: Google Summer of Code 2007 Tested by: pho
* Update pmap_page_wired_mappings() so that it counts 2/4MB page mappings.alc2008-04-071-4/+18
|
* Add a MI intr_event_handle() routine for the non-INTR_FILTER case. Thisjhb2008-04-051-111/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | allows all the INTR_FILTER #ifdef's to be removed from the MD interrupt code. - Rename the intr_event 'eoi', 'disable', and 'enable' hooks to 'post_filter', 'pre_ithread', and 'post_ithread' to be less x86-centric. Also, add a comment describe what the MI code expects them to do. - On amd64, i386, and powerpc this is effectively a NOP. - On arm, don't bother masking the interrupt unless the ithread is scheduled in the non-INTR_FILTER case to match what INTR_FILTER did. Also, don't bother unmasking the interrupt in the post_filter case if we never masked it. The INTR_FILTER case had been doing this by having arm_unmask_irq for the post_filter (formerly 'eoi') hook. - On ia64, stray interrupts are now masked for the non-INTR_FILTER case. They were already masked in the INTR_FILTER case. - On sparc64, use the a NULL pre_ithread hook and use intr_enable_eoi() for both the 'post_filter' and 'post_ithread' hooks to match what the non-INTR_FILTER code did. - On sun4v, retire the ithread wrapper hack by using an appropriate 'post_ithread' hook instead (it's what 'post_ithread'/'enable' was designed to do even in 5.x). Glanced at by: piso Reviewed by: marius Requested by: marius [1], [5] Tested on: amd64, i386, arm, sparc64
* Eliminate an unnecessary test and its misleading comment from pmap_enter().alc2008-04-041-6/+0
|
* Optimize pmap_pml4e() and pmap_pdpe() based upon two observations: Thealc2008-04-021-3/+1
| | | | | | given pmap is never NULL, and therefore pmap_pml4e() can never return NULL. The pervasive use of these inline functions throughout the pmap makes these simple changes worthwhile.
* Add support to mincore for detecting whether a page is part of aps2008-03-281-1/+2
| | | | | | "super" page or not. Reviewed by: alc, ups
* Add kernel module support for nfslockd and krpc. Use the module systemdfr2008-03-271-0/+1
| | | | | | | to detect (or load) kernel NLM support in rpc.lockd. Remove the '-k' option to rpc.lockd and make kernel NLM the default. A user can still force the use of the old user NLM by building a kernel without NFSLOCKD and/or removing the nfslockd.ko module.
* When building a kernel module, define MAXCPU the same as SMP sojb2008-03-271-1/+1
| | | | that modules work with and without SMP.
* Back in the good old days, PC's had random pieces of rock forphk2008-03-262-125/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | frequency generation and what frequency the generated was anyones guess. In general the 32.768kHz RTC clock x-tal was the best, because that was a regular wrist-watch Xtal, whereas the X-tal generating the ISA bus frequency was much lower quality, often costing as much as several cents a piece, so it made good sense to check the ISA bus frequency against the RTC clock. The other relevant property of those machines, is that they typically had no more than 16MB RAM. These days, CPU chips croak if their clocks are not tightly within specs and all necessary frequencies are derived from the master crystal by means if PLL's. Considering that it takes on average 1.5 second to calibrate the frequency of the i8254 counter, that more likely than not, we will not actually use the result of the calibration, and as the final clincher, we seldom use the i8254 for anything besides BEL in syscons anyway, it has become time to drop the calibration code. If you need to tell the system what frequency your i8254 runs, you can do so from the loader using hw.i8254.freq or using the sysctl kern.timecounter.tc.i8254.frequency.
OpenPOWER on IntegriCloud