| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
for whether the page is physical. On dense phys mem systems (32-bit),
VM_PHYS_TO_PAGE will not return NULL for device memory pages if device
memory is above physical memory even if there is no allocated vm_page.
Attempting to use the returned page could then cause either memory
corruption or a page fault.
|
|
|
|
| |
improves concurrency slightly.
|
|
|
|
|
|
|
|
| |
caches, by invalidating kernel icaches only when needed and not flushing
user caches for shared pages.
Suggested by: kib
MFC after: 2 weeks
|
|
|
|
|
|
| |
are are not mapped during ranged operations and reduce the scope of the
tlbie lock only to the actual tlbie instruction instead of the entire
sequence. There are a few more optimization possibilities here as well.
|
|
|
|
|
|
| |
prevent a race where another process could conclude the page was clean.
Submitted by: alc
|
|
|
|
|
|
|
|
| |
uses of the page queues mutex with a new rwlock that protects the page
table and the PV lists. This reduces system time during a parallel
buildworld by 35%.
Reviewed by: alc
|
|
|
|
| |
confuse the VM.
|
|
|
|
|
| |
and remove moea64_attr_*() in favor of direct calls to vm_page_dirty()
and friends.
|
|
|
|
|
|
|
|
|
| |
manipulation of the pvo_vlink and pvo_olink entries is already protected
by the table lock, so most remaining instances of the acquisition of the
page queues lock can likely be replaced with the table lock, or removed
if the table lock is already held.
Reviewed by: alc
|
|
|
|
|
|
| |
module.
Suggested by: alc
|
|
|
|
|
|
|
|
| |
or look them up individually in pmap_remove() and apply the same logic
in the other ranged operation (pmap_protect). This speeds up make
installworld by a factor of 2 on powerpc64.
MFC after: 1 week
|
|
|
|
|
|
| |
the point of this loop is to remove elements. This worked by accident before.
MFC after: 2 days
|
|
|
|
| |
MFC after: 2 months
|
|
|
|
|
|
|
| |
and 32bit ABIs. Also try to enable nxstacks for PAE/i386 when supported,
and some variants of powerpc32.
MFC after: 2 months (if ever)
|
| |
|
|
|
|
|
|
|
| |
pmap_remove() for large sparse requests. This can prevent pmap_remove()
operations on 64-bit process destruction or swapout that would take
several hundred times the lifetime of the universe to complete. This
behavior is largely indistinguishable from a hang.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
flags field. Updates to the atomic flags are performed using the atomic
ops on the containing word, do not require any vm lock to be held, and
are non-blocking. The vm_page_aflag_set(9) and vm_page_aflag_clear(9)
functions are provided to modify afalgs.
Document the changes to flags field to only require the page lock.
Introduce vm_page_reference(9) function to provide a stable KPI and
KBI for filesystems like tmpfs and zfs which need to mark a page as
referenced.
Reviewed by: alc, attilio
Tested by: marius, flo (sparc64); andreast (powerpc, powerpc64)
Approved by: re (bz)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to VPO_UNMANAGED (and also making the flag protected by the vm object
lock, instead of vm page queue lock).
- Mark the fake pages with both PG_FICTITIOUS (as it is now) and
VPO_UNMANAGED. As a consequence, pmap code now can use use just
VPO_UNMANAGED to decide whether the page is unmanaged.
Reviewed by: alc
Tested by: pho (x86, previous version), marius (sparc64),
marcel (arm, ia64, powerpc), ray (mips)
Sponsored by: The FreeBSD Foundation
Approved by: re (bz)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
mask of CPUs, pc_other_cpus and pc_cpumask become highly inefficient.
Remove them and replace their usage with custom pc_cpuid magic (as,
atm, pc_cpumask can be easilly represented by (1 << pc_cpuid) and
pc_other_cpus by (all_cpus & ~(1 << pc_cpuid))).
This change is not targeted for MFC because of struct pcpu members
removal and dependency by cpumask_t retirement.
MD review by: marcel, marius, alc
Tested by: pluknet
MD testing by: marcel, marius, gonzo, andreast
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
pmap_sync_icache() to sync random (possibly uncached or nonexisting!)
memory, causing kernel page faults or machine checks, most easily
triggered by using GDB. While here, add an additional safeguard to only
sync cacheable memory.
MFC after: 2 days
|
|\ \
| |/ |
|
| |
| |
| |
| | |
handled in mtmsr() and mem_regions(), respectively.
|
| |
| |
| |
| |
| |
| |
| | |
unbootable after r221855.
Submitted by: andreast
MFC after: 1 week
|
| | |
|
|/
|
|
|
|
|
| |
Note that there is a dirty hack for calling openpic_write(), but
nwhitehorn approved it.
Discussed with: nwhitehorn
|
|
|
|
| |
Approved by: nwhitehorn (mentor)
|
|
|
|
|
|
| |
NetBSD import. Remove the definition and all its occurrences.
Approved by: nwhitehorn (mentor)
|
|
|
|
|
|
|
| |
Submitted by: perryh pluto.rain.com (previous version)
Reviewed by: jhb
Approved by: kib (mentor)
Tested by: universe
|
|
|
|
| |
in the right direction.
|
| |
|
|
|
|
| |
conditions on its invalidation.
|
|
|
|
|
|
|
|
|
| |
logic to support modifying the page table through a hypervisor. This
uses KOBJ inheritance to provide subclasses of the base 64-bit AIM MMU
class with additional methods for page table manipulation.
Many thanks to Peter Grehan for suggesting this design and implementing
the MMU KOBJ inheritance mechanism.
|
|
|
|
|
|
|
|
|
|
| |
mappings need to end up in the kernel anyway since the kernel begins
executing in OF context. Separating them adds needless complexity,
especially since the powerpc64 and mmu_oea64 code gave up on it a long
time ago.
As a side effect, the PPC ofw_machdep code is no longer AIM-specific,
so move it to powerpc/ofw.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
hypervisor infrastructure support:
- Fix coexistence of multiple platform modules in the same kernel
- Allow platform modules to provide an SMP topology
- PowerPC hypervisors limit the amount of memory accessible in real mode.
Allow the platform modules to specify the maximum real-mode address,
and modify the bits of the kernel that need to allocate
real-mode-accessible buffers to respect this limits.
|
|
|
|
|
| |
property just means we shouldn't add any translations, not that we should
panic.
|
| |
|
|
|
|
| |
Reviewed by: nwhitehorn
|
|
|
|
| |
TLB entries instead of trying to cut corners.
|
|
|
|
|
|
| |
by just caching the mode for later use by pmap_enter(), following amd64.
While here, correct some mismerges from mmu_oea64 -> mmu_oea and clean
up some dead code found while fixing the fictitious page behavior.
|
|
|
|
|
| |
PowerPC/AIM. This is currently stubbed out on Book-E, since I have no
idea how to implement it there.
|
|
|
|
|
|
|
| |
which are similar to the previous ones, and one for user maps, which
are arrays of pointers into the SLB tree. This changes makes user SLB
updates atomic, closing a window for memory corruption. While here,
rearrange the allocation functions to make context switches faster.
|
|
|
|
|
|
|
|
| |
hardware with a lockless sparse tree design. This marginally improves
the performance of PMAP and allows copyin()/copyout() to run without
acquiring locks when used on wired mappings.
Submitted by: mdf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
include/mmuvar.h - Change the MMU_DEF macro to also create the class
definition as well as define the DATA_SET. Add a macro, MMU_DEF_INHERIT,
which has an extra parameter specifying the MMU class to inherit methods
from. Update the comments at the start of the header file to describe the
new macros.
booke/pmap.c
aim/mmu_oea.c
aim/mmu_oea64.c - Collapse mmu_def_t declaration into updated MMU_DEF macro
The MMU_DEF_INHERIT macro will be used in the PS3 MMU implementation to
allow it to inherit the stock powerpc64 MMU methods.
Reviewed by: nwhitehorn
|
|
|
|
| |
to avoid race conditions updating the PVO statistics.
|
| |
|
|
|
|
|
|
|
|
|
| |
wrong element of the VSID bitmap array to be examined after a collision,
leading to reallocation of in-use VSIDs under some circumstances, with
attendant memory corruption. Also add an assert to check for this kind of
problem in the future.
MFC after: 4 days
|
|
|
|
|
|
|
|
| |
PowerPC CPUs running a 32-bit kernel. This bug could cause in-use VSIDs
to be allocated again to another process, causing memory space overlaps
and corruption.
Reported by: linimon
|