summaryrefslogtreecommitdiffstats
path: root/sys/amd64
Commit message (Collapse)AuthorAgeFilesLines
* Make pmap_kenter_attr() static.alc2008-08-042-2/+2
|
* Disconnect drivers that haven't been ported to MPSAFE TTY yet.ed2008-08-032-54/+0
| | | | | | | | | | | | | As clearly mentioned on the mailing lists, there is a list of drivers that have not been ported to the MPSAFE TTY layer yet. Remove them from the kernel configuration files. This means people can now still use these drivers if they explicitly put them in their kernel configuration file, which is good. People should keep in mind that after August 10, these drivers will not work anymore. Even though owners of the hardware are capable of getting these drivers working again, I will see if I can at least get them to a compilable state (if time permits).
* Enhance pmap_mapdev_attr(). Take advantage of recent enhancements toalc2008-08-021-4/+7
| | | | | | | | | | | pmap_change_attr() in order to use the direct map for any cache mode, not just write-back mode. It is worth noting that this change also eliminates a situation in which we have two mappings to the same physical memory with different cache modes. Submitted by: Magesh Dhasayyan (with some changes by me) Discussed with: jhb
* Enhance pmap_change_attr() with the ability to demote 1GB page mappings.alc2008-08-012-2/+106
|
* Enhance pmap_change_attr(). Specifically, avoid 2MB page demotions, cachealc2008-07-312-21/+54
| | | | | | | mode changes, and cache and TLB invalidation when some or all of the specified range is already mapped with the specified cache mode. Submitted by: Magesh Dhasayyan
* Eliminate recomputation of the PDE by pmap_pde_attr().alc2008-07-311-5/+2
|
* Add igb to the default kerneljfv2008-07-301-1/+2
| | | | MFC after:ASAP
* Bring back the save/restore of the %ds, %es, %fs and %gs registers forkib2008-07-305-20/+33
| | | | | | | | | | | | | | | the 32bit images on amd64. Change the semantic of the PCB_32BIT pcb flag to request the context switch code to operate on the segment registers. Its previous meaning of saving or restoring the %gs base offset is assigned to the new PCB_GS32BIT flag. FreeBSD 32bit image activator sets the PCB_32BIT flag, while Linux 32bit emulation sets PCB_32BIT | PCB_GS32BIT. Reviewed by: peter MFC after: 2 weeks
* Don't allow pmap_change_attr() to be applied to the recursive mapping.alc2008-07-281-2/+5
|
* Add a check for 1GB page mappings to pmap_change_attr() so that it failsalc2008-07-281-1/+7
| | | | | gracefully. (On K10 family processors the direct map is implemented using 1GB page mappings.)
* Style fixes to several function definitions.alc2008-07-271-8/+4
|
* Enhance pmap_change_attr(). Use pmap_demote_pde() to demote a 2MB pagealc2008-07-271-9/+22
| | | | | | | | mapping to 4KB page mappings when the specified attribute change only applies to a portion of the 2MB page. Previously, in such cases, pmap_change_attr() gave up and returned an error. Submitted by: Magesh Dhasayyan
* Increase the ceiling on the size of the buffer map.alc2008-07-191-1/+1
|
* Correct an error in pmap_change_attr()'s initial loop that verifies that thealc2008-07-181-1/+1
| | | | | | | given range of addresses are mapped. Previously, the loop was testing the same address every time. Submitted by: Magesh Dhasayyan
* Simplify pmap_extract()'s control flow, making it more like the relatedalc2008-07-181-5/+4
| | | | functions pmap_extract_and_hold() and pmap_kextract().
* Update bus_dmamem_alloc()'s first call to malloc() such that M_WAITOK isalc2008-07-151-4/+4
| | | | | | specified when appropriate. Reviewed by: scottl
* Handle a race between pmap_kextract() and pmap_promote_pde(). This racealc2008-07-131-5/+13
| | | | | | | caused ZFS to crash when restoring a snapshot with superpage promotion enabled. Reported by: kris
* Make uart(4) the default serial port driver on i386 and amd64.ed2008-07-132-16/+15
| | | | | | | | | | | The uart(4) driver has the advantage of supporting a wider variety of hardware on a greater amount of platforms. This driver has already been the standard on platforms such as ia64, powerpc and sparc64. I've decided not to change anything on pc98. I'd rather let people from the pc98 team look at this. Approved by: philip (mentor), marcel
* Refine the changes made in SVN rev 180430. Specifically, instantiate a newalc2008-07-121-16/+26
| | | | | page table page only if the 2MB page mapping has been used. Also, refactor some assertions.
* In order to apply pmap_demote_pde() to a page directory entry (PDE) from thealc2008-07-121-2/+3
| | | | | | direct map, the PDE must have PG_M and PG_A preset. Noticed by: Magesh Dhasayyan
* Extend pmap_demote_pde() to include the ability to instantiate a new pagealc2008-07-101-8/+29
| | | | table page where none existed before.
* Band-aid a problem with 32 bit selector setup.peter2008-07-092-1/+9
| | | | | | | | | | | Initialize %ds, %es, and %fs during CPU startup. Otherwise a garbage value could leak to a 32-bit process if a process migrated to a different CPU after exec and the new CPU had never exec'd a 32-bit process. A more complete fix is needed, but this mitigates the most frequent manifestations. Obtained from: ups
* Fix lines that are too long in pmap_growkernel() by substituting shorter butalc2008-07-091-3/+3
| | | | equivalent expressions.
* Eliminate pmap_growkernel()'s dependence on create_pagetables() preallocatingalc2008-07-083-29/+34
| | | | | | | | | | | page directory pages from VM_MIN_KERNEL_ADDRESS through the end of the kernel's bss. Specifically, the dependence was in pmap_growkernel()'s one- time initialization of kernel_vm_end, not in its main body. (I could not, however, resist the urge to optimize the main body.) Reduce the number of preallocated page directory pages to just those needed to support NKPT page table pages. (In fact, this allows me to revert a couple of my earlier changes to create_pagetables().)
* Rev 180333, ``Change create_pagetables() and pmap_init() so that many feweralc2008-07-081-2/+4
| | | | | | | | | page table pages have to be preallocated ...'', violates an assumption made by minidumpsys(): kernel_vm_end is the highest virtual address that has ever been used by the kernel. Now, however, the kernel code, data, and bss may reside at addresses beyond kernel_vm_end. This revision modifies the upper bound on minidumpsys()'s two page table traversals to account for this possibility.
* Add HWPMC_HOOKS to GENERIC kernels, this makes hwpmc.ko work outdelphij2008-07-071-0/+1
| | | | of the box.
* In FreeBSD 7.0 and beyond, pmap_growkernel() should pass VM_ALLOC_INTERRUPTalc2008-07-071-4/+8
| | | | | | | | | | | | | to vm_page_alloc() instead of VM_ALLOC_SYSTEM. VM_ALLOC_SYSTEM was the logical choice before FreeBSD 7.0 because VM_ALLOC_INTERRUPT could not reclaim a cached page. Simply put, there was no ordering between VM_ALLOC_INTERRUPT and VM_ALLOC_SYSTEM as to which "dug deeper" into the cache and free queues. Now, there is; VM_ALLOC_INTERRUPT dominates VM_ALLOC_SYSTEM. While I'm here, teach pmap_growkernel() to request a prezeroed page. MFC after: 1 week
* Change create_pagetables() and pmap_init() so that many fewer page tablealc2008-07-062-10/+12
| | | | pages have to be preallocated by create_pagetables().
* Increase the kernel map's size to 7GB, making room for a kmem map of sizealc2008-07-052-4/+4
| | | | | greater than 4GB. (Auto-sizing will set the ceiling on the kmem map size to 4.2GB.)
* Eliminate an unused declaration. (In fact, the declaration is bogusalc2008-07-041-1/+0
| | | | | | because the variable is defined static to pmap.c on i386.) Found by: CScout
* Increase the ceiling on the kmem map's size to 3.6GB. Also, define thealc2008-07-031-1/+2
| | | | | | ceiling as a fraction of the kernel map's size rather than an absolute quantity. Thus, scaling of the kmem map's size will be automatic with changes to the kernel map's size.
* Eliminate an unnecessary static variable: nkpt.alc2008-07-021-9/+2
|
* Document the layout of the address space, borrowing heavily fromalc2008-06-301-2/+12
| | | | http://lists.freebsd.org/pipermail/freebsd-amd64/2005-July/005578.html
* Compute NKPDPE from NKPT. This reduces the number of knobs that must bealc2008-06-301-1/+1
| | | | turned in order to change the size of the kernel virtual address space.
* Strictly speaking, the definition of VM_MAX_KERNEL_ADDRESS is wrong. However,alc2008-06-292-2/+1
| | | | | | | in practice, the error (currently) makes no difference because the computation performed by KVADDR() hides the error. This revision fixes the error. Also, eliminate a (now) unused definition.
* Increase the size of the kernel virtual address space to 6GB. Until thealc2008-06-291-4/+3
| | | | | | | maximum size of the kmem map can be greater than 4GB, there is little point in making the kernel virtual address space larger than 6GB. Tested by: kris@
* 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.
OpenPOWER on IntegriCloud