OpenBSD CVS

CVS log for src/sys/uvm/uvm_map.h


[BACK] Up to [local] / src / sys / uvm

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.89 / (download) - annotate - [select for diffs], Tue Apr 2 08:39:17 2024 UTC (2 months, 1 week ago) by deraadt
Branch: MAIN
CVS Tags: HEAD
Changes since 1.88: +1 -5 lines
Diff to previous 1.88 (colored)

Delete the msyscall mechanism entirely, since mimmutable+pinsyscalls has
replaced it with a more strict mechanism, which happens to be lockless O(1)
rather than micro-lock O(1)+O(log N).  Also nop-out the sys_msyscall(2) guts,
but leave the syscall around for a bit longer so that people can build through
it, since ld.so(1) still wants to call it.

Revision 1.88 / (download) - annotate - [select for diffs], Tue Jan 16 19:05:01 2024 UTC (4 months, 3 weeks ago) by deraadt
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5
Changes since 1.87: +2 -1 lines
Diff to previous 1.87 (colored)

The kernel will now read pinsyscall tables out of PT_OPENBSD_SYSCALLS in
the main program or ld.so, and accept a submission of that information
for libc.so from ld.so via pinsyscalls(2).  At system call invocation,
the syscall number is matched to the specific address it must come from.
ok kettenis, gnezdo, testing of variations by many people

Revision 1.87 / (download) - annotate - [select for diffs], Wed Aug 2 09:19:47 2023 UTC (10 months, 1 week ago) by mpi
Branch: MAIN
CVS Tags: OPENBSD_7_4_BASE, OPENBSD_7_4
Changes since 1.86: +6 -21 lines
Diff to previous 1.86 (colored)

Remove unused vm_map_upgrade() & vm_map_downgrade().

Upgrade/downgrade operations on a `vmmaplk' are no longer necessary since
vm_map_busy() completely unlocks it (r1.318 of uvm/uvm_map.c).

ok kettenis@

Revision 1.86 / (download) - annotate - [select for diffs], Sat May 20 12:48:36 2023 UTC (12 months, 3 weeks ago) by mpi
Branch: MAIN
Changes since 1.85: +2 -1 lines
Diff to previous 1.85 (colored)

Do not grab the `vmmaplk' recursively, prevent a self-deadlock.

Change the semantic of vm_map_busy() to be able to completely unlock the
`vmmaplk' instead of downgrading it to a read lock in mlock(2).  This is
necessary because uvm_fault_wire() tries to re-grab the same lock.

We now keep track of the thread currently holding the vmmap busy to ensure
it can relock & unbusy the vmmap.  The new pattern becomes:

....vm_map_lock(map);
....vm_map_busy(map); /* prevent other threads to grab an exclusive lock */
....vm_map_unlock(map);
....
..../*
.... * Do some stuff generally requiring a tsleep(9).
.... */
....
....vm_map_lock(map);
....vm_map_unbusy(map); /* allow other threads to make progress after unlock */
....vm_map_unlock(map);

Fix adapted from NetBSD's r1.249 of uvm/uvm_map.c.  Issue reported by
Jacqueline Jolicoeur exposed by a "wallet refresh" of the Monero App.
Panic hand-copied below:

sleep_finish()
rw_enter()
uvmfault_lookup()
uvm_fault_check()
uvm_fault()
uvm_fault_wire()
uvm_map_pageable_wire()
sys_mlock()

This version skips bumping the map's timestamp if the lock is acquired by the
thread marked the VM map busy.  This prevents a KASSERT() reported by bluhm@
triggered by regress/misc/posixtestsuite conformance/interfaces/mmap/18-1

ok kettenis@

Revision 1.85 / (download) - annotate - [select for diffs], Wed Apr 26 12:25:12 2023 UTC (13 months, 2 weeks ago) by bluhm
Branch: MAIN
Changes since 1.84: +1 -2 lines
Diff to previous 1.84 (colored)

Backout previous commit:
Do not grab the `vmmaplk' recursively, prevent a self-deadlock.
It causes panic: uvm_map_pageable_wire: stale map
Found by regress/misc/posixtestsuite conformance/interfaces/mmap/18-1
requested by deraadt@

Revision 1.84 / (download) - annotate - [select for diffs], Tue Apr 25 12:36:30 2023 UTC (13 months, 2 weeks ago) by mpi
Branch: MAIN
Changes since 1.83: +2 -1 lines
Diff to previous 1.83 (colored)

Do not grab the `vmmaplk' recursively, prevent a self-deadlock.

Change the semantic of vm_map_busy() to be able to completely unlock the
`vmmaplk' instead of downgrading it to a read lock in mlock(2).  This is
necessary because uvm_fault_wire() tries to re-grab the same lock.

We now keep track of the thread currently holding the vmmap busy to ensure
it can relock & unbusy the vmmap.  The new pattern becomes:

....vm_map_lock(map);
....vm_map_busy(map); /* prevent other threads to grab an exclusive lock */
....vm_map_unlock(map);
....
..../*
.... * Do some stuff generally requiring a tsleep(9).
.... */
....
....vm_map_lock(map);
....vm_map_unbusy(map); /* allow other threads to make progress after unlock */
....vm_map_unlock(map);

Fix adapted from NetBSD's r1.249 of uvm/uvm_map.c.  Issue reported by
Jacqueline Jolicoeur exposed by a "wallet refresh" of the Monero App.
Panic hand-copied below:

sleep_finish()
rw_enter()
uvmfault_lookup()
uvm_fault_check()
uvm_fault()
uvm_fault_wire()
uvm_map_pageable_wire()
sys_mlock()

ok kettenis@

Revision 1.83 / (download) - annotate - [select for diffs], Tue Jan 31 15:18:55 2023 UTC (16 months, 1 week ago) by deraadt
Branch: MAIN
CVS Tags: OPENBSD_7_3_BASE, OPENBSD_7_3
Changes since 1.82: +8 -1 lines
Diff to previous 1.82 (colored)

On systems without xonly mmu hardware-enforcement, we can still mitigate
against classic BROP with a range-checking wrapper in front of copyin() and
copyinstr() which ensures the userland source doesn't overlap the main program
text, ld.so text, signal tramp text (it's mapping is hard to distinguish
so it comes along for the ride), or libc.so text.  ld.so tells the kernel
libc.so text range with msyscall(2).  The range checking for 2-4 elements is
done without locking (because all 4 ranges are immutable!) and is inexpensive.

write(sock, &open, 400) now fails with EFAULT.  No programs have been
discovered which require reading their own text segments with a system call.

On a machine without mmu enforcement, a test program reports the following:
                  userland   kernel
ld.so             readable   unreadable
mmap xz           unreadable unreadable
mmap x            readable   readable
mmap nrx          readable   readable
mmap nwx          readable   readable
mmap xnwx         readable   readable
main              readable   unreadable
libc unmapped?    readable   unreadable
libc mapped       readable   unreadable

ok kettenis, additional help from miod

Revision 1.82 / (download) - annotate - [select for diffs], Thu Jan 26 07:44:31 2023 UTC (16 months, 2 weeks ago) by deraadt
Branch: MAIN
Changes since 1.81: +2 -2 lines
Diff to previous 1.81 (colored)

delete repeated word

Revision 1.81 / (download) - annotate - [select for diffs], Thu Nov 17 23:26:07 2022 UTC (18 months, 3 weeks ago) by deraadt
Branch: MAIN
Changes since 1.80: +9 -4 lines
Diff to previous 1.80 (colored)

With regret, place mutexes after struct vm_map fields which are inspected
by libkvm and procmap(8).  struct mutex can change based upon kernel
compile options, and the fields were dancing around
ok kettenis

Revision 1.80 / (download) - annotate - [select for diffs], Fri Nov 4 09:36:44 2022 UTC (19 months, 1 week ago) by mpi
Branch: MAIN
Changes since 1.79: +9 -1 lines
Diff to previous 1.79 (colored)

Assert the VM map lock is held in function used by mmap/mprotect/munmap.

Also grab the lock in uvm_map_teardown() and uvm_map_deallocate() to
satisfy the assertions.  Grabbing the lock there shouldn't be strictly
necessary, because no other reference to the map should exist when the
reaper is holding it, but it doesn't hurt and makes our life easier.

Inputs & tests from Ivo van der Sangen, tb@, gnezdo@, kn@

kettenis@ and tb@ agree with the direction, ok kn@

Revision 1.79 / (download) - annotate - [select for diffs], Fri Oct 21 19:13:33 2022 UTC (19 months, 2 weeks ago) by deraadt
Branch: MAIN
Changes since 1.78: +2 -2 lines
Diff to previous 1.78 (colored)

the debug "name" parameter to uvm_map_immutable() is no longer needed

Revision 1.78 / (download) - annotate - [select for diffs], Sun Oct 16 16:16:37 2022 UTC (19 months, 3 weeks ago) by deraadt
Branch: MAIN
Changes since 1.77: +2 -1 lines
Diff to previous 1.77 (colored)

Rather than marking MAP_STACK on entries for sigaltstack() [2 days ago],
go back to the old approach: using a new anon mapping because it removes
any potential gadgetry pre-placed in the region (by making it zero).  But
also bring in a few more validation checks beyond contigious mapping -- it
must not be a syscall region, and the protection must be precisely RW.
This does allow sigaltstack() to shoot zero'd MAP_STACK non-immutable regions
into the main stack area (which will soon be immutable).  I am not sure we
can keep reinforce immutable on the region after we do stack (like maybe
determine this while doing the validation entry walk?)
Sadly, continued support for sigaltstack() does require selecting the guessed
best compromise.
ok kettenis

Revision 1.77 / (download) - annotate - [select for diffs], Sat Oct 15 03:23:50 2022 UTC (19 months, 3 weeks ago) by deraadt
Branch: MAIN
Changes since 1.76: +2 -3 lines
Diff to previous 1.76 (colored)

During the MAP_STACK introduction in 2018, sigaltstack() became a
problem because haphazard use could shoot holes in the address space
(changing permissions, providing opportunities for pivoting, etc). I
tried to write a diff to convert the address space correctly but did
not understand enough about map entries, so instead we mapped new
memory over top of the existing object.  Placing a new mapping becomes
unfeasible with the upcoming mimmutable model, so here is code that
adds MAP_STACK to the region.  It will only do so for a contigiously
mapped region that is non-syscall with permission RW, otherwise it
returns an error.
Food for thought: If we know the object isn't service by an object,
we should consider zero'ing the region, to block pre-pivot placement?
ok kettenis

Revision 1.76 / (download) - annotate - [select for diffs], Fri Oct 7 14:59:39 2022 UTC (20 months ago) by deraadt
Branch: MAIN
Changes since 1.75: +4 -3 lines
Diff to previous 1.75 (colored)

Add mimmutable(2) system call which locks the permissions (PROT_*) of
memory mappings so they cannot be changed by a later mmap(), mprotect(),
or munmap(), which will error with EPERM instead.
ok kettenis

Revision 1.75 / (download) - annotate - [select for diffs], Sat Mar 12 08:11:07 2022 UTC (2 years, 3 months ago) by mpi
Branch: MAIN
CVS Tags: OPENBSD_7_2_BASE, OPENBSD_7_2, OPENBSD_7_1_BASE, OPENBSD_7_1
Changes since 1.74: +1 -2 lines
Diff to previous 1.74 (colored)

Revert holding a read lock on the map while copying out data during sysctl(2).

This introduced a lock ordering issue reported by naddy@, anton@ and syzkaller.

Reported-by: syzbot+739bb901045d9b193bde@syzkaller.appspotmail.com

Revision 1.74 / (download) - annotate - [select for diffs], Fri Mar 11 19:24:19 2022 UTC (2 years, 3 months ago) by kettenis
Branch: MAIN
Changes since 1.73: +3 -2 lines
Diff to previous 1.73 (colored)

Hold a read lock on the map while copying out data during a sysctl(2) call
to prevent another thread from unmapping the memory and triggering
an assertion or even corrupting random physical memory pages.

This fix is similar to the change in uvm_glue.c rev. 1.74.  However in this
case we need to be careful since some sysctl(2) calls look at the map of
the current process.  In those cases we must not attempt to lock the map
again.

ok mpi@

Should fix:
Reported-by: syzbot+be89fe83d6c004fcb412@syzkaller.appspotmail.com

Revision 1.73 / (download) - annotate - [select for diffs], Fri Feb 11 09:25:04 2022 UTC (2 years, 3 months ago) by kn
Branch: MAIN
Changes since 1.72: +0 -12 lines
Diff to previous 1.72 (colored)

Backout previous "Assert vm map locks" (commitid: sRNBfzX2dJrxFDmb)

WITNESS builds broke as reported by anton and bluhm:

	root on sd0a (5ec49b3ad23eb2d4.a) swap on sd0b dump on sd0b
	kernel: protection fault trap, code=0
	Stopped at      witness_checkorder+0x4ec:       movl    0x10(%r12),%ecx

https://syzkaller.appspot.com/bug?id=be02b290a93c648986c35370a271aad4135a5044
https://syzkaller.appspot.com/text?tag=CrashLog&x=136e9aa4700000

Revision 1.72 / (download) - annotate - [select for diffs], Thu Feb 10 10:15:35 2022 UTC (2 years, 4 months ago) by kn
Branch: MAIN
Changes since 1.71: +13 -1 lines
Diff to previous 1.71 (colored)

Assert vm map locks

Introduce vm_map_assert_{wrlock,rdlock,anylock,unlocked}() in rwlock(9)
fashion and back up function comments about locking assumptions with proper
assertions.

Also add new comments/assertions based on code analysis and sync with
NetBSD as much as possible.

vm_map_lock() and vm_map_lock_read() are used for exclusive and shared
access respectively;  currently no code path is purely protected by
vm_map_lock_read() alone, i.e. functions called with a read lock held by the
callee are also called with a write lock elsewhere.

Thus only vm_map_assert_{wrlock,anylock}() are used as of now.

This should help with unlocking UVM related syscalls

Tested as part of a larger diff through
- amd64 package bulk build by naddy
- amd64, arm64, powerpc64 base builds and regress by bluhm
- amd64 and sparc64 base builds and regress by me

Input mpi
Feedback OK kettenis

Revision 1.71 / (download) - annotate - [select for diffs], Wed Dec 15 12:53:53 2021 UTC (2 years, 5 months ago) by mpi
Branch: MAIN
Changes since 1.70: +4 -1 lines
Diff to previous 1.70 (colored)

Use a per-UVM object lock to serialize the lower part of the fault handler.

Like the per-amap lock the `vmobjlock' is principally used to serialized
access to objects in the fault handler to allow faults occurring on
different CPUs and different objects to be processed in parallel.

The fault handler now acquires the `vmobjlock' of a given UVM object as
soon as it finds one.  For now a write-lock is always acquired even if
some operations could use a read-lock.

Every pager, corresponding to a different kind of UVM object, now expect
the UVM object to be locked and some operations, like *_get() return it
unlocked.  This is enforced by assertions checking for rw_write_held().

The KERNEL_LOCK() is now pushed to the VFS boundary in the vnode pager.

To ensure the correct amap or object lock is held when modifying a page
many uvm_page* operations are now asserting for the "owner" lock.
However, fields of the "struct vm_page" are still being protected by the
global `pageqlock'.  To prevent lock ordering issues with the new
`vmobjlock' and to reduce differences with NetBSD this lock is now taken
and released for each page instead of around the whole loop.

This commit does not remove the KERNEL_LOCK/UNLOCK() dance.  Unlocking
will follow if there is no fallout.

Ported from NetBSD, tested by many, thanks!

ok kettenis@, kn@

Revision 1.70 / (download) - annotate - [select for diffs], Sat May 22 08:38:29 2021 UTC (3 years ago) by mpi
Branch: MAIN
CVS Tags: OPENBSD_7_0_BASE, OPENBSD_7_0
Changes since 1.69: +3 -2 lines
Diff to previous 1.69 (colored)

Use atomic operations for reference counting VM maps.

This is necessary to do this accounting without the KERNEL_LOCK().

ok mvs@, kettenis@

Revision 1.69 / (download) - annotate - [select for diffs], Fri Mar 12 14:15:49 2021 UTC (3 years, 3 months ago) by jsg
Branch: MAIN
CVS Tags: OPENBSD_6_9_BASE, OPENBSD_6_9
Changes since 1.68: +2 -2 lines
Diff to previous 1.68 (colored)

spelling

ok mpi@

Revision 1.68 / (download) - annotate - [select for diffs], Fri Oct 9 08:16:28 2020 UTC (3 years, 8 months ago) by mpi
Branch: MAIN
Changes since 1.67: +1 -8 lines
Diff to previous 1.67 (colored)

Remove unecesary includes.

ok deraadt@

Revision 1.67 / (download) - annotate - [select for diffs], Wed Dec 18 13:33:29 2019 UTC (4 years, 5 months ago) by visa
Branch: MAIN
CVS Tags: OPENBSD_6_8_BASE, OPENBSD_6_8, OPENBSD_6_7_BASE, OPENBSD_6_7
Changes since 1.66: +2 -2 lines
Diff to previous 1.66 (colored)

Set vm_map's pmap in uvm_map_setup().

OK guenther@, kettenis@, mpi@

Revision 1.66 / (download) - annotate - [select for diffs], Thu Dec 12 11:12:37 2019 UTC (4 years, 6 months ago) by mpi
Branch: MAIN
Changes since 1.65: +37 -87 lines
Diff to previous 1.65 (colored)

Header cleanup.

- reduces gratuitous differences with NetBSD,
- merges multiple '#ifdef _KERNEL' blocks,
- kills unused 'struct vm_map_intrsafe'
- turns 'union vm_map_object' into a anonymous union (following to NetBSD)
- move questionable vm_map_modflags() into uvm/uvm_map.c
- remove guards around MAX_KMAPENT, it is defined&used only once
- document lock differences
- fix tab vs space

ok mlarkin@, visa@

Revision 1.65 / (download) - annotate - [select for diffs], Fri Nov 29 06:34:46 2019 UTC (4 years, 6 months ago) by deraadt
Branch: MAIN
Changes since 1.64: +3 -1 lines
Diff to previous 1.64 (colored)

Repurpose the "syscalls must be on a writeable page" mechanism to
enforce a new policy: system calls must be in pre-registered regions.
We have discussed more strict checks than this, but none satisfy the
cost/benefit based upon our understanding of attack methods, anyways
let's see what the next iteration looks like.

This is intended to harden (translation: attackers must put extra
effort into attacking) against a mixture of W^X failures and JIT bugs
which allow syscall misinterpretation, especially in environments with
polymorphic-instruction/variable-sized instructions.  It fits in a bit
with libc/libcrypto/ld.so random relink on boot and no-restart-at-crash
behaviour, particularily for remote problems. Less effective once on-host
since someone the libraries can be read.

For static-executables the kernel registers the main program's
PIE-mapped exec section valid, as well as the randomly-placed sigtramp
page.  For dynamic executables ELF ld.so's exec segment is also
labelled valid; ld.so then has enough information to register libc's
exec section as valid via call-once msyscall(2)

For dynamic binaries, we continue to to permit the main program exec
segment because "go" (and potentially a few other applications) have
embedded system calls in the main program.  Hopefully at least go gets
fixed soon.

We declare the concept of embedded syscalls a bad idea for numerous
reasons, as we notice the ecosystem has many of
static-syscall-in-base-binary which are dynamically linked against
libraries which in turn use libc, which contains another set of
syscall stubs.  We've been concerned about adding even one additional
syscall entry point... but go's approach tends to double the entry-point
attack surface.

This was started at a nano-hackathon in Bob Beck's basement 2 weeks
ago during a long discussion with mortimer trying to hide from the SSL
scream-conversations, and finished in more comfortable circumstances
next to a wood-stove at Elk Lakes cabin with UVM scream-conversations.

ok guenther kettenis mortimer, lots of feedback from others
conversations about go with jsing tb sthen

Revision 1.64 / (download) - annotate - [select for diffs], Sat Nov 2 09:36:08 2019 UTC (4 years, 7 months ago) by mpi
Branch: MAIN
Changes since 1.63: +15 -11 lines
Diff to previous 1.63 (colored)

Start documenting which locking primitives apply to uvm_map members.

ok kettenis@

Revision 1.63 / (download) - annotate - [select for diffs], Fri Nov 1 19:18:29 2019 UTC (4 years, 7 months ago) by mpi
Branch: MAIN
Changes since 1.62: +1 -5 lines
Diff to previous 1.62 (colored)

Keep local function definitions in C files.

Revision 1.62 / (download) - annotate - [select for diffs], Fri Jun 14 05:52:43 2019 UTC (4 years, 11 months ago) by deraadt
Branch: MAIN
CVS Tags: OPENBSD_6_6_BASE, OPENBSD_6_6
Changes since 1.61: +2 -2 lines
Diff to previous 1.61 (colored)

The addition of writeable-syscall checking near MAP_STACK checking
damaged the error messages.  Repair that, passing distinct format
strings for the two cases.
ok beck

Revision 1.61 / (download) - annotate - [select for diffs], Sat Jun 1 22:42:20 2019 UTC (5 years ago) by deraadt
Branch: MAIN
Changes since 1.60: +14 -3 lines
Diff to previous 1.60 (colored)

Refactor the MAP_STACK feature, and introduce another similar variation:
Lookup the address that a syscall instruction is executed from, and kill
the process if that page is writeable.  This brings an aspect of W^X
behaviour to W|X mappings (in JITs not yet adapted to W^X).  The goal is
to remove simple attack methods and force use of ret2libc or other more
complicated means.
ok kettenis stefan visa

Revision 1.60 / (download) - annotate - [select for diffs], Thu Apr 12 17:13:44 2018 UTC (6 years, 2 months ago) by deraadt
Branch: MAIN
CVS Tags: OPENBSD_6_5_BASE, OPENBSD_6_5, OPENBSD_6_4_BASE, OPENBSD_6_4
Changes since 1.59: +5 -1 lines
Diff to previous 1.59 (colored)

Implement MAP_STACK option for mmap().  Synchronous faults (pagefault and
syscall) confirm the stack register points at MAP_STACK memory, otherwise
SIGSEGV is delivered. sigaltstack() and pthread_attr_setstack() are modified
to create a MAP_STACK sub-region which satisfies alignment requirements.
Observe that MAP_STACK can only be set/cleared by mmap(), which zeroes the
contents of the region -- there is no mprotect() equivalent operation, so
there is no MAP_STACK-adding gadget.
This opportunistic software-emulation of a stack protection bit makes
stack-pivot operations during ROPchain fragile (kind of like removing a
tool from the toolbox).
original discussion with tedu, uvm work by stefan, testing by mortimer
ok kettenis

Revision 1.59 / (download) - annotate - [select for diffs], Fri Sep 16 03:39:25 2016 UTC (7 years, 8 months ago) by dlg
Branch: MAIN
CVS Tags: OPENBSD_6_3_BASE, OPENBSD_6_3, OPENBSD_6_2_BASE, OPENBSD_6_2, OPENBSD_6_1_BASE, OPENBSD_6_1
Changes since 1.58: +3 -1 lines
Diff to previous 1.58 (colored)

put RBT_PROTOTYPE inside #ifdef _KERNEL

Revision 1.58 / (download) - annotate - [select for diffs], Fri Sep 16 01:51:40 2016 UTC (7 years, 8 months ago) by dlg
Branch: MAIN
Changes since 1.57: +2 -2 lines
Diff to previous 1.57 (colored)

move uaddr_free_rbtree from RB macros to RBT functions

Revision 1.57 / (download) - annotate - [select for diffs], Fri Sep 16 01:09:53 2016 UTC (7 years, 8 months ago) by dlg
Branch: MAIN
Changes since 1.56: +4 -4 lines
Diff to previous 1.56 (colored)

move the uvm_map_addr RB tree from RB macros to the RBT functions

this tree is interesting because it uses all the red black tree
features, specifically the augment callback thats called on tree
topology changes, and it poisons and checks entries as theyre removed
from and inserted back into the tree respectively.

ok stefan@

Revision 1.56 / (download) - annotate - [select for diffs], Thu Aug 11 01:17:33 2016 UTC (7 years, 10 months ago) by dlg
Branch: MAIN
Changes since 1.55: +2 -1 lines
Diff to previous 1.55 (colored)

replace abuse of the static map entries RB_ENTRY pointers with an SLIST

free static entries are kept in a simple linked list, so use SLIST
to make this obvious. the RB_PARENT manipulations are ugly and
confusing.

ok kettenis@

Revision 1.55 / (download) - annotate - [select for diffs], Wed Sep 9 23:33:37 2015 UTC (8 years, 9 months ago) by kettenis
Branch: MAIN
CVS Tags: OPENBSD_6_0_BASE, OPENBSD_6_0, OPENBSD_5_9_BASE, OPENBSD_5_9
Changes since 1.54: +2 -1 lines
Diff to previous 1.54 (colored)

Add locking for interrupt-safe maps (those that have the VM_MAP_INTRSAFE flag
set).  Since we cannot sleep in that case, use a mutex instead of an rwlock.
This is ok as the more complex code paths in the uvm code are not entered
for interrupt-safe maps as paging isn't allowed in those maps.

ok tedu@

Revision 1.54 / (download) - annotate - [select for diffs], Mon Mar 30 21:08:40 2015 UTC (9 years, 2 months ago) by miod
Branch: MAIN
CVS Tags: OPENBSD_5_8_BASE, OPENBSD_5_8
Changes since 1.53: +2 -2 lines
Diff to previous 1.53 (colored)

Extend uvm_map_hint() to get an address range as extra arguments, and make
sure it will return an address within that range.

Use this in uaddr_rnd_select() to make sure we will not attempt to pick
an address beyond what we are allowed to map.

In my trees for 9 months, blackmailed s2k15 attendees into agreeing now would
be a good time to commit.

Revision 1.53 / (download) - annotate - [select for diffs], Fri Feb 6 09:04:34 2015 UTC (9 years, 4 months ago) by tedu
Branch: MAIN
CVS Tags: OPENBSD_5_7_BASE, OPENBSD_5_7
Changes since 1.52: +5 -1 lines
Diff to previous 1.52 (colored)

make vm_map_lock lock when it's supposed to. add mutex to protect flags
and then double check we didn't lose the unavoidable race.
ok beck guenther kettenis miod

Revision 1.52 / (download) - annotate - [select for diffs], Fri Dec 5 04:12:48 2014 UTC (9 years, 6 months ago) by uebayasi
Branch: MAIN
Changes since 1.51: +6 -1 lines
Diff to previous 1.51 (colored)

Introduce a new sysctl to retrieve VM map entries

This adds a new sysctl KERN_PROC_VMMAP, which returns an array of VM map
entries of a specified process.  This prevents debuggers from iterating
vm_map_entry RB tree via kvm(3).

The name KERN_PROC_VMMAP and struct kinfo_vmentry are chosen from the same
function in FreeBSD.  struct kinfo_vmentry is revised to reduce size, because
OpenBSD does not keep track of filepaths.  The semantic is also changed to
return max buffer size as a hint, and start iteration at the specified base
address.

Much valuable input from deraadt@, guenther@, tedu@

OK tedu@ deraadt@

Revision 1.51 / (download) - annotate - [select for diffs], Fri Jul 11 16:35:40 2014 UTC (9 years, 11 months ago) by jsg
Branch: MAIN
CVS Tags: OPENBSD_5_6_BASE, OPENBSD_5_6
Changes since 1.50: +2 -7 lines
Diff to previous 1.50 (colored)

Chuck Cranor rescinded clauses in his license
on the 2nd of February 2011 in NetBSD.

http://marc.info/?l=netbsd-source-changes&m=129658899212732&w=2
http://marc.info/?l=netbsd-source-changes&m=129659095515558&w=2
http://marc.info/?l=netbsd-source-changes&m=129659157916514&w=2
http://marc.info/?l=netbsd-source-changes&m=129665962324372&w=2
http://marc.info/?l=netbsd-source-changes&m=129666033625342&w=2
http://marc.info/?l=netbsd-source-changes&m=129666052825545&w=2
http://marc.info/?l=netbsd-source-changes&m=129666922906480&w=2
http://marc.info/?l=netbsd-source-changes&m=129667725518082&w=2

Revision 1.50 / (download) - annotate - [select for diffs], Thu May 30 16:29:46 2013 UTC (11 years ago) by tedu
Branch: MAIN
CVS Tags: OPENBSD_5_5_BASE, OPENBSD_5_5, OPENBSD_5_4_BASE, OPENBSD_5_4
Changes since 1.49: +1 -3 lines
Diff to previous 1.49 (colored)

remove lots of comments about locking per beck's request

Revision 1.49 / (download) - annotate - [select for diffs], Thu May 30 15:17:59 2013 UTC (11 years ago) by tedu
Branch: MAIN
Changes since 1.48: +1 -2 lines
Diff to previous 1.48 (colored)

remove simple_locks from uvm code. ok beck deraadt

Revision 1.48 / (download) - annotate - [select for diffs], Wed Apr 11 11:23:22 2012 UTC (12 years, 2 months ago) by ariane
Branch: MAIN
CVS Tags: OPENBSD_5_3_BASE, OPENBSD_5_3, OPENBSD_5_2_BASE, OPENBSD_5_2
Changes since 1.47: +3 -1 lines
Diff to previous 1.47 (colored)

vmmap: speed up allocations

Reduces O(n log n) allocations to O(log n).

ok deraadt, tedu

Revision 1.47 / (download) - annotate - [select for diffs], Fri Mar 9 13:01:29 2012 UTC (12 years, 3 months ago) by ariane
Branch: MAIN
Changes since 1.46: +183 -122 lines
Diff to previous 1.46 (colored)

New vmmap implementation.

no oks (it is really a pain to review properly)
extensively tested, I'm confident it'll be stable
'now is the time' from several icb inhabitants

Diff provides:
- ability to specify different allocators for different regions/maps
- a simpler implementation of the current allocator
- currently in compatibility mode: it will generate similar addresses
  as the old allocator

Revision 1.46 / (download) - annotate - [select for diffs], Mon Jun 6 17:10:23 2011 UTC (13 years ago) by ariane
Branch: MAIN
CVS Tags: OPENBSD_5_1_BASE, OPENBSD_5_1, OPENBSD_5_0_BASE, OPENBSD_5_0
Changes since 1.45: +120 -171 lines
Diff to previous 1.45 (colored)

Backout vmmap in order to repair virtual address selection algorithms
outside the tree.

Revision 1.45 / (download) - annotate - [select for diffs], Tue May 24 15:27:36 2011 UTC (13 years ago) by ariane
Branch: MAIN
Changes since 1.44: +171 -120 lines
Diff to previous 1.44 (colored)

Reimplement uvm/uvm_map.

vmmap is designed to perform address space randomized allocations,
without letting fragmentation of the address space go through the roof.

Some highlights:
- kernel address space randomization
- proper implementation of guardpages
- roughly 10% system time reduction during kernel build

Tested by alot of people on tech@ and developers.
Theo's machines are still happy.

Revision 1.44 / (download) - annotate - [select for diffs], Fri Dec 24 21:49:04 2010 UTC (13 years, 5 months ago) by tedu
Branch: MAIN
CVS Tags: OPENBSD_4_9_BASE, OPENBSD_4_9
Changes since 1.43: +3 -2 lines
Diff to previous 1.43 (colored)

add a param to uvm_map_hint to not skip over the heap, and use it as a last
resort if mmap fails otherwise to enable more complete address space
utilization.  tested for a while with no ill effects.

Revision 1.43 / (download) - annotate - [select for diffs], Tue Apr 20 22:05:44 2010 UTC (14 years, 1 month ago) by tedu
Branch: MAIN
CVS Tags: OPENBSD_4_8_BASE, OPENBSD_4_8
Changes since 1.42: +1 -2 lines
Diff to previous 1.42 (colored)

remove proc.h include from uvm_map.h.  This has far reaching effects, as
sysctl.h was reliant on this particular include, and many drivers included
sysctl.h unnecessarily.  remove sysctl.h or add proc.h as needed.
ok deraadt

Revision 1.42 / (download) - annotate - [select for diffs], Fri Aug 28 00:40:03 2009 UTC (14 years, 9 months ago) by ariane
Branch: MAIN
CVS Tags: OPENBSD_4_7_BASE, OPENBSD_4_7
Changes since 1.41: +6 -2 lines
Diff to previous 1.41 (colored)

kva_guardpages: make guard pages separate map entries
- fixes ps(1)
- fixes kva deadbeef entries

Revision 1.41 / (download) - annotate - [select for diffs], Sat Jul 25 12:55:40 2009 UTC (14 years, 10 months ago) by miod
Branch: MAIN
Changes since 1.40: +2 -2 lines
Diff to previous 1.40 (colored)

Add an extra argument to uvm_unmap_remove(), for the caller to tell it
whether removing holes or parts of them is allowed or not.
Only allow hole removal in uvmspace_free(), when tearing the vmspace down.

ok art@

Revision 1.40 / (download) - annotate - [select for diffs], Wed Mar 25 20:00:18 2009 UTC (15 years, 2 months ago) by oga
Branch: MAIN
CVS Tags: OPENBSD_4_6_BASE, OPENBSD_4_6
Changes since 1.39: +7 -21 lines
Diff to previous 1.39 (colored)

Move all of the pseudo-inline functions in uvm into C files.

By pseudo-inline, I mean that if a certain macro was defined, they would
be inlined. However, no architecture defines that, and none has for a
very very long time. Therefore mainly this just makes the code a damned
sight easier to read. Some k&r -> ansi declarations while I'm in there.

"just commit it" art@. ok weingart@.

Revision 1.39 / (download) - annotate - [select for diffs], Fri Jul 18 16:40:17 2008 UTC (15 years, 10 months ago) by kurt
Branch: MAIN
CVS Tags: OPENBSD_4_5_BASE, OPENBSD_4_5, OPENBSD_4_4_BASE, OPENBSD_4_4
Changes since 1.38: +2 -1 lines
Diff to previous 1.38 (colored)

Add new uvm function called uvm_map_pie() which takes align as a
parameter and returns an aligned random load address for position
independent executables to use. This also adds three new vmparam.h
defines to specify the maximum address, minimum address and minimum
allowed alignment for uvm_map_pie() to use. The PIE address range
for i386 was carefully selected to work well within the i386 W^X
framework.

With much help and feedback from weingart@.
okay weingart@, miod@, kettenis@, drahn@

Revision 1.38 / (download) - annotate - [select for diffs], Wed Apr 11 12:10:42 2007 UTC (17 years, 2 months ago) by art
Branch: MAIN
CVS Tags: OPENBSD_4_3_BASE, OPENBSD_4_3, OPENBSD_4_2_BASE, OPENBSD_4_2
Changes since 1.37: +1 -29 lines
Diff to previous 1.37 (colored)

Instead of managing pages for intrsafe maps in special objects (aka.
kmem_object) just so that we can remove them, just use pmap_extract
to get the pages to free and simplify a lot of code to not deal with
the list of intrsafe maps, intrsafe objects, etc.

miod@ ok

Revision 1.37 / (download) - annotate - [select for diffs], Wed Apr 4 18:02:59 2007 UTC (17 years, 2 months ago) by art
Branch: MAIN
Changes since 1.36: +24 -60 lines
Diff to previous 1.36 (colored)

Switch vm_map lock to rwlock.
Use a simple "rw_exit_read(); rw_enter_write();" for lock upgrade, since
that's what lockmgr did anyway.

deraadt@ ok

Revision 1.36 / (download) - annotate - [select for diffs], Sun Mar 25 13:02:51 2007 UTC (17 years, 2 months ago) by thib
Branch: MAIN
Changes since 1.35: +4 -16 lines
Diff to previous 1.35 (colored)

Remove the flags_lock simplelock from struct vm_map;
Cleanup the code accordingly.

ok pedro@, art@

Revision 1.35 / (download) - annotate - [select for diffs], Fri Jan 12 21:11:38 2007 UTC (17 years, 5 months ago) by mickey
Branch: MAIN
CVS Tags: OPENBSD_4_1_BASE, OPENBSD_4_1
Changes since 1.34: +2 -6 lines
Diff to previous 1.34 (colored)

proper define for MAX_KMAPENT; miod@ ok

Revision 1.34 / (download) - annotate - [select for diffs], Sat Nov 19 02:18:02 2005 UTC (18 years, 6 months ago) by pedro
Branch: MAIN
CVS Tags: OPENBSD_4_0_BASE, OPENBSD_4_0, OPENBSD_3_9_BASE, OPENBSD_3_9
Changes since 1.33: +10 -10 lines
Diff to previous 1.33 (colored)

Remove unnecessary lockmgr() archaism that was costing too much in terms
of panics and bugfixes. Access curproc directly, do not expect a process
pointer as an argument. Should fix many "process context required" bugs.
Incentive and okay millert@, okay marc@. Various testing, thanks.

Revision 1.33 / (download) - annotate - [select for diffs], Fri Sep 30 02:42:57 2005 UTC (18 years, 8 months ago) by brad
Branch: MAIN
Changes since 1.32: +3 -9 lines
Diff to previous 1.32 (colored)

revert MAX_KMAPENT hack added just before 3.7 now that
a proper fix has been implemented in uvm_mapent_alloc().

ok pedro@

Revision 1.32 / (download) - annotate - [select for diffs], Tue May 24 21:11:47 2005 UTC (19 years ago) by tedu
Branch: MAIN
CVS Tags: OPENBSD_3_8_BASE, OPENBSD_3_8
Changes since 1.31: +4 -3 lines
Diff to previous 1.31 (colored)

add a new field to vm_space and use it to track the number of anon
pages a process uses.  this is now the userland "data size" value.
ok art deraadt tdeval.  thanks testers.

Revision 1.31 / (download) - annotate - [select for diffs], Tue Mar 1 01:28:39 2005 UTC (19 years, 3 months ago) by henning
Branch: MAIN
CVS Tags: OPENBSD_3_7_BASE, OPENBSD_3_7
Changes since 1.30: +9 -3 lines
Diff to previous 1.30 (colored)

only use MAX_KMAPENT 2000 on i386 amd64 sparc64 and revert to 1000 on all
other archs for now, beck theo ok

Revision 1.30 / (download) - annotate - [select for diffs], Sat Feb 19 17:58:03 2005 UTC (19 years, 3 months ago) by henning
Branch: MAIN
Changes since 1.29: +3 -3 lines
Diff to previous 1.29 (colored)

double default MAX_KMAPENT to 2000, theo ok
everybody please update your trees and test this, we need to find out
wether there is bad side-effects from the doubling. If this does not get
enough testing by our user community we will play safe and revert this for
the 3.7 release, so please test.

Revision 1.19.2.5 / (download) - annotate - [select for diffs], Mon May 19 22:41:29 2003 UTC (21 years ago) by tedu
Branch: UBC
Changes since 1.19.2.4: +2 -1 lines
Diff to previous 1.19.2.4 (colored) to branchpoint 1.19 (colored) next main 1.20 (colored)

sync

Revision 1.3.4.9 / (download) - annotate - [select for diffs], Tue May 13 19:36:58 2003 UTC (21 years, 1 month ago) by ho
Branch: SMP
Changes since 1.3.4.8: +2 -1 lines
Diff to previous 1.3.4.8 (colored) to branchpoint 1.3 (colored) next main 1.4 (colored)

Sync the SMP branch to -current. This includes moving to ELF.

Revision 1.29 / (download) - annotate - [select for diffs], Mon Apr 14 04:53:51 2003 UTC (21 years, 2 months ago) by art
Branch: MAIN
CVS Tags: UBC_SYNC_A, SMP_SYNC_B, SMP_SYNC_A, OPENBSD_3_6_BASE, OPENBSD_3_6, OPENBSD_3_5_BASE, OPENBSD_3_5, OPENBSD_3_4_BASE, OPENBSD_3_4
Changes since 1.28: +2 -1 lines
Diff to previous 1.28 (colored)

There are two related changes.

The first one is an mquery(2) syscall. It's for asking the VM system
about where to map things. It will be used by ld.so, read the man page
for details.

The second change is related and is a centralization of uvm_map hint
that all callers of uvm_map calculated. This will allow us to adjust
this hint on architectures that have segments for non-exec mappings.

deraadt@ drahn@ ok.

Revision 1.3.4.8 / (download) - annotate - [select for diffs], Fri Mar 28 00:08:48 2003 UTC (21 years, 2 months ago) by niklas
Branch: SMP
Changes since 1.3.4.7: +2 -3 lines
Diff to previous 1.3.4.7 (colored) to branchpoint 1.3 (colored)

Sync the SMP branch with 3.3

Revision 1.19.2.4 / (download) - annotate - [select for diffs], Mon Nov 4 18:02:33 2002 UTC (21 years, 7 months ago) by art
Branch: UBC
Changes since 1.19.2.3: +9 -8 lines
Diff to previous 1.19.2.3 (colored) to branchpoint 1.19 (colored)

Huge sync to NetBSD plus lots of bugfixes.
 - uvm is as in netbsd-current minus uvm_map forward merge.
 - various locking bugfixes in nfs.
 - make sure that all specops and fifoops are correct in all vnodeop vectors.
 - make the filesystem code more like filsystem code and less like vm code.

Revision 1.28 / (download) - annotate - [select for diffs], Tue Oct 29 18:30:21 2002 UTC (21 years, 7 months ago) by art
Branch: MAIN
CVS Tags: OPENBSD_3_3_BASE, OPENBSD_3_3
Changes since 1.27: +3 -3 lines
Diff to previous 1.27 (colored)

Since memory deallocation can't fail, remove the error return from
uvm_unmap, uvm_deallocate and a few other functions.
Simplifies some code and reduces diff to the UBC branch.

Revision 1.19.2.3 / (download) - annotate - [select for diffs], Tue Oct 29 00:36:50 2002 UTC (21 years, 7 months ago) by art
Branch: UBC
Changes since 1.19.2.2: +1 -2 lines
Diff to previous 1.19.2.2 (colored) to branchpoint 1.19 (colored)

sync to -current

Revision 1.27 / (download) - annotate - [select for diffs], Tue Jun 11 06:38:01 2002 UTC (22 years ago) by art
Branch: MAIN
CVS Tags: UBC_SYNC_B, OPENBSD_3_2_BASE, OPENBSD_3_2
Changes since 1.26: +1 -2 lines
Diff to previous 1.26 (colored)

Remove a stupid assert that grows the kernel by 40kB.

Revision 1.19.2.2 / (download) - annotate - [select for diffs], Tue Jun 11 03:33:03 2002 UTC (22 years ago) by art
Branch: UBC
Changes since 1.19.2.1: +36 -32 lines
Diff to previous 1.19.2.1 (colored) to branchpoint 1.19 (colored)

Sync UBC branch to -current

Revision 1.3.4.7 / (download) - annotate - [select for diffs], Thu Mar 28 14:54:26 2002 UTC (22 years, 2 months ago) by niklas
Branch: SMP
Changes since 1.3.4.6: +30 -28 lines
Diff to previous 1.3.4.6 (colored) to branchpoint 1.3 (colored)

Merge in -current from roughly a week ago

Revision 1.26 / (download) - annotate - [select for diffs], Thu Mar 14 01:27:18 2002 UTC (22 years, 3 months ago) by millert
Branch: MAIN
CVS Tags: OPENBSD_3_1_BASE, OPENBSD_3_1
Changes since 1.25: +29 -29 lines
Diff to previous 1.25 (colored)

First round of __P removal in sys

Revision 1.25 / (download) - annotate - [select for diffs], Thu Mar 7 01:08:57 2002 UTC (22 years, 3 months ago) by provos
Branch: MAIN
Changes since 1.24: +3 -1 lines
Diff to previous 1.24 (colored)

use an augmented red-black tree to keep track of free space in the vm_map.
uvm_tree_sanity is left as debugging help but needs to be enabled manually.
okay art@

Revision 1.3.4.6 / (download) - annotate - [select for diffs], Wed Mar 6 02:17:14 2002 UTC (22 years, 3 months ago) by niklas
Branch: SMP
Changes since 1.3.4.5: +106 -54 lines
Diff to previous 1.3.4.5 (colored) to branchpoint 1.3 (colored)

Merge in trunk

Revision 1.24 / (download) - annotate - [select for diffs], Thu Feb 28 18:50:26 2002 UTC (22 years, 3 months ago) by provos
Branch: MAIN
Changes since 1.23: +3 -1 lines
Diff to previous 1.23 (colored)

use red-black tree for lookup_entry.  the red-black tree case for
map_findspace is still broken on alpha.  this will make debugging easier.
okay millert@

Revision 1.23 / (download) - annotate - [select for diffs], Mon Feb 25 05:38:50 2002 UTC (22 years, 3 months ago) by provos
Branch: MAIN
Changes since 1.22: +0 -4 lines
Diff to previous 1.22 (colored)

back out red-black tree. they are very fast but alpha UVM is broken and
the tree triggers the bug, PMAP_PREFER case was broken also.

Revision 1.22 / (download) - annotate - [select for diffs], Mon Feb 25 00:20:45 2002 UTC (22 years, 3 months ago) by provos
Branch: MAIN
Changes since 1.21: +5 -1 lines
Diff to previous 1.21 (colored)

use a red-black tree to find entries in the vm_map. augment the red-black
tree to find free space between entries.  speeds up memory allocation,
etc...

Revision 1.21 / (download) - annotate - [select for diffs], Mon Feb 18 10:02:20 2002 UTC (22 years, 3 months ago) by art
Branch: MAIN
Changes since 1.20: +2 -1 lines
Diff to previous 1.20 (colored)

From the UBC branch and NetBSD.

We allocate map entries for the non-intrsafe kernel map (most notably
kernel_map and exec_map) from a pool that's backed by kmem_map (to avoid
deadlocking).

This should get rid of MAX_KMAPENT panics.

Revision 1.19.2.1 / (download) - annotate - [select for diffs], Sat Feb 2 03:28:27 2002 UTC (22 years, 4 months ago) by art
Branch: UBC
Changes since 1.19: +3 -3 lines
Diff to previous 1.19 (colored)

Merge in UBC performance changes from NetBSD.
Fix a bunch of merge errors from yesterday.

Revision 1.20 / (download) - annotate - [select for diffs], Wed Dec 19 08:58:07 2001 UTC (22 years, 5 months ago) by art
Branch: MAIN
Changes since 1.19: +104 -56 lines
Diff to previous 1.19 (colored)

UBC was a disaster. It worked very good when it worked, but on some
machines or some configurations or in some phase of the moon (we actually
don't know when or why) files disappeared. Since we've not been able to
track down the problem in two weeks intense debugging and we need -current
to be stable, back out everything to a state it had before UBC.

We apologise for the inconvenience.

Revision 1.3.4.5 / (download) - annotate - [select for diffs], Wed Dec 5 01:23:58 2001 UTC (22 years, 6 months ago) by niklas
Branch: SMP
Changes since 1.3.4.4: +54 -103 lines
Diff to previous 1.3.4.4 (colored) to branchpoint 1.3 (colored)

Merge in -current

Revision 1.19 / (download) - annotate - [select for diffs], Tue Dec 4 23:22:42 2001 UTC (22 years, 6 months ago) by art
Branch: MAIN
CVS Tags: UBC_BASE
Branch point for: UBC
Changes since 1.18: +3 -2 lines
Diff to previous 1.18 (colored)

Yet another sync to NetBSD uvm.
Today we add a pmap argument to pmap_update() and allocate map entries for
kernel_map from kmem_map instead of using the static entries. This should
get rid of MAX_KMAPENT panics. Also some uvm_loan problems are fixed.

Revision 1.18 / (download) - annotate - [select for diffs], Wed Nov 28 19:28:15 2001 UTC (22 years, 6 months ago) by art
Branch: MAIN
Changes since 1.17: +54 -103 lines
Diff to previous 1.17 (colored)

Sync in more uvm from NetBSD. Mostly just cosmetic stuff.
Contains also support for page coloring.

Revision 1.17 / (download) - annotate - [select for diffs], Wed Nov 28 13:47:40 2001 UTC (22 years, 6 months ago) by art
Branch: MAIN
Changes since 1.16: +4 -4 lines
Diff to previous 1.16 (colored)

Sync in more uvm changes from NetBSD.
This time we're getting rid of KERN_* and VM_PAGER_* error codes and
use errnos instead.

Revision 1.16 / (download) - annotate - [select for diffs], Tue Nov 27 05:27:12 2001 UTC (22 years, 6 months ago) by art
Branch: MAIN
Changes since 1.15: +2 -2 lines
Diff to previous 1.15 (colored)

Merge in the unified buffer cache code as found in NetBSD 2001/03/10. The
code is written mostly by Chuck Silvers <chuq@chuq.com>/<chs@netbsd.org>.

Tested for the past few weeks by many developers, should be in a pretty stable
state, but will require optimizations and additional cleanups.

Revision 1.3.4.4 / (download) - annotate - [select for diffs], Tue Nov 13 23:02:31 2001 UTC (22 years, 7 months ago) by niklas
Branch: SMP
Changes since 1.3.4.3: +87 -94 lines
Diff to previous 1.3.4.3 (colored) to branchpoint 1.3 (colored)

merge in -current

Revision 1.15 / (download) - annotate - [select for diffs], Mon Nov 12 01:26:09 2001 UTC (22 years, 7 months ago) by art
Branch: MAIN
Changes since 1.14: +5 -7 lines
Diff to previous 1.14 (colored)

Bring in more changes from NetBSD. Mostly pagedaemon improvements.

Revision 1.14 / (download) - annotate - [select for diffs], Wed Nov 7 02:55:50 2001 UTC (22 years, 7 months ago) by art
Branch: MAIN
Changes since 1.13: +8 -9 lines
Diff to previous 1.13 (colored)

Another sync of uvm to NetBSD. Just minor fiddling, no major changes.

Revision 1.13 / (download) - annotate - [select for diffs], Wed Nov 7 01:18:01 2001 UTC (22 years, 7 months ago) by art
Branch: MAIN
Changes since 1.12: +5 -4 lines
Diff to previous 1.12 (colored)

Add an alignment argument to uvm_map that specifies an alignment hint
for the virtual address.

Revision 1.12 / (download) - annotate - [select for diffs], Tue Nov 6 13:36:52 2001 UTC (22 years, 7 months ago) by art
Branch: MAIN
Changes since 1.11: +4 -7 lines
Diff to previous 1.11 (colored)

More sync to NetBSD.
 - Use malloc/free instead of MALLOC/FREE for variable sized allocations.
 - Move the memory inheritance code to sys/mman.h and rename from VM_* to MAP_*
 - various cleanups and simplifications.

Revision 1.11 / (download) - annotate - [select for diffs], Tue Nov 6 00:27:01 2001 UTC (22 years, 7 months ago) by art
Branch: MAIN
Changes since 1.10: +77 -79 lines
Diff to previous 1.10 (colored)

Sync to NetBSD.

Revision 1.3.4.3 / (download) - annotate - [select for diffs], Wed Oct 31 03:32:14 2001 UTC (22 years, 7 months ago) by nate
Branch: SMP
Changes since 1.3.4.2: +353 -5 lines
Diff to previous 1.3.4.2 (colored) to branchpoint 1.3 (colored)

Sync the SMP branch to something just after 3.0

Revision 1.10 / (download) - annotate - [select for diffs], Sun Aug 12 22:41:15 2001 UTC (22 years, 10 months ago) by mickey
Branch: MAIN
CVS Tags: OPENBSD_3_0_BASE, OPENBSD_3_0
Changes since 1.9: +351 -1 lines
Diff to previous 1.9 (colored)

merge vm_map.h into uvm_map.h, kinda matches netbsd's approach

Revision 1.9 / (download) - annotate - [select for diffs], Sat Aug 11 10:57:22 2001 UTC (22 years, 10 months ago) by art
Branch: MAIN
Changes since 1.8: +2 -4 lines
Diff to previous 1.8 (colored)

Various random fixes from NetBSD.
Including support for zeroing pages in the idle loop (not enabled yet).

Revision 1.8 / (download) - annotate - [select for diffs], Mon Aug 6 14:03:05 2001 UTC (22 years, 10 months ago) by art
Branch: MAIN
Changes since 1.7: +3 -3 lines
Diff to previous 1.7 (colored)

Add a new type voff_t (right now it's typedefed as off_t) used for offsets
into objects.

Gives the possibilty to mmap beyond the size of vaddr_t.

From NetBSD.

Revision 1.3.4.2 / (download) - annotate - [select for diffs], Mon May 14 22:47:46 2001 UTC (23 years, 1 month ago) by niklas
Branch: SMP
Changes since 1.3.4.1: +17 -21 lines
Diff to previous 1.3.4.1 (colored) to branchpoint 1.3 (colored)

merge in approximately 2.9 into SMP branch

Revision 1.7 / (download) - annotate - [select for diffs], Thu Mar 22 03:05:55 2001 UTC (23 years, 2 months ago) by smart
Branch: MAIN
CVS Tags: OPENBSD_2_9_BASE, OPENBSD_2_9
Changes since 1.6: +12 -21 lines
Diff to previous 1.6 (colored)

Sync style, typo, and comments a little closer to NetBSD.  art@ ok

Revision 1.6 / (download) - annotate - [select for diffs], Fri Mar 9 05:34:38 2001 UTC (23 years, 3 months ago) by smart
Branch: MAIN
Changes since 1.5: +6 -2 lines
Diff to previous 1.5 (colored)

Protect protypes, certain macros, and inlines from userland.  Checked userland
with a 'make build'.  From NetBSD.  art@ ok

Revision 1.5 / (download) - annotate - [select for diffs], Mon Jan 29 02:07:46 2001 UTC (23 years, 4 months ago) by niklas
Branch: MAIN
Changes since 1.4: +1 -0 lines
Diff to previous 1.4 (colored)

$OpenBSD$

Revision 1.3.4.1 / (download) - annotate - [select for diffs], Fri Mar 24 09:09:50 2000 UTC (24 years, 2 months ago) by niklas
Branch: SMP
Changes since 1.3: +4 -3 lines
Diff to previous 1.3 (colored)

Sync with -current

Revision 1.4 / (download) - annotate - [select for diffs], Thu Mar 16 22:11:04 2000 UTC (24 years, 3 months ago) by art
Branch: MAIN
CVS Tags: OPENBSD_2_8_BASE, OPENBSD_2_8, OPENBSD_2_7_BASE, OPENBSD_2_7
Changes since 1.3: +4 -3 lines
Diff to previous 1.3 (colored)

Bring in some new UVM code from NetBSD (not current).

 - Introduce a new type of map that are interrupt safe and never allow faults
   in them. mb_map and kmem_map are made intrsafe.
 - Add "access protection" to uvm_vslock (to be passed down to uvm_fault and
   later to pmap_enter).
 - madvise(2) now works.
 - various cleanups.

Revision 1.3 / (download) - annotate - [select for diffs], Mon Aug 23 08:13:24 1999 UTC (24 years, 9 months ago) by art
Branch: MAIN
CVS Tags: kame_19991208, SMP_BASE, OPENBSD_2_6_BASE, OPENBSD_2_6
Branch point for: SMP
Changes since 1.2: +9 -6 lines
Diff to previous 1.2 (colored)

sync with NetBSD from 1999.05.24 (there is a reason for this date)
 Mostly cleanups, but also a few improvements to pagedaemon for better
 handling of low memory and/or low swap conditions.

Revision 1.2 / (download) - annotate - [select for diffs], Fri Feb 26 05:32:07 1999 UTC (25 years, 3 months ago) by art
Branch: MAIN
CVS Tags: OPENBSD_2_5_BASE, OPENBSD_2_5
Changes since 1.1: +1 -0 lines
Diff to previous 1.1 (colored)

add OpenBSD tags

Revision 1.1 / (download) - annotate - [select for diffs], Fri Feb 26 01:30:15 1999 UTC (25 years, 3 months ago) by art
Branch: MAIN

Import of uvm from NetBSD. Some local changes, some code disabled

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.