OpenBSD CVS

CVS log for src/sys/uvm/uvm_aobj.c


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

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.110 / (download) - annotate - [select for diffs], Sat Apr 13 23:44:11 2024 UTC (8 weeks, 2 days ago) by jsg
Branch: MAIN
CVS Tags: HEAD
Changes since 1.109: +2 -2 lines
Diff to previous 1.109 (colored)

correct indentation

no functional change, found by smatch warnings
ok miod@ bluhm@

Revision 1.109 / (download) - annotate - [select for diffs], Wed Apr 10 15:25:14 2024 UTC (2 months ago) by mpi
Branch: MAIN
Changes since 1.108: +3 -4 lines
Diff to previous 1.108 (colored)

Call uao_dropswap() instead of rerolling it.

ok kn@, kettenis@, miod@

Revision 1.108 / (download) - annotate - [select for diffs], Sat May 13 09:24:59 2023 UTC (12 months, 4 weeks ago) by mpi
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5, OPENBSD_7_4_BASE, OPENBSD_7_4
Changes since 1.107: +2 -3 lines
Diff to previous 1.107 (colored)

Put back in the simplification of the aiodone daemon.

Previous "breakage" of the swap on arm64 has been found to be an issue
on one machine the rockpro/arm64 related to a deadlock built into the
sdmmc(4) stack interacting with swapping code both running under
KERNEL_LOCK().

This issue is easily reproducible on -current and entering swap when
building LLVM on a rockpro crashes the machine by memory corruption.

Tested by mlarkin@ on octeon & i386, by myself on amd64 & arm64 and by
sthen@ on i386 port bulk.

ok beck@ some time ago.

Previous commit message:

Simplify the aiodone daemon which is only used for async writes.

- Remove unused support for asynchronous read, including error conditions

- Grab the proper lock for each page that has been written to swap.  This
allows to enable an assertion in uvm_page_unbusy().

- Move the uvm_anon_release() call outside of uvm_page_unbusy() and
assert for the different anon cases.

ok beck@, kettenis@

Revision 1.107 / (download) - annotate - [select for diffs], Mon Aug 29 02:58:13 2022 UTC (21 months, 1 week ago) by jsg
Branch: MAIN
CVS Tags: OPENBSD_7_3_BASE, OPENBSD_7_3, OPENBSD_7_2_BASE, OPENBSD_7_2
Changes since 1.106: +2 -2 lines
Diff to previous 1.106 (colored)

static inline, not inline static

c99 6.11.5:
"The placement of a storage-class specifier other than at the beginning
of the declaration specifiers in a declaration is an obsolescent
feature."

ok guenther@

Revision 1.106 / (download) - annotate - [select for diffs], Mon Aug 1 14:15:46 2022 UTC (22 months, 1 week ago) by mpi
Branch: MAIN
Changes since 1.105: +7 -10 lines
Diff to previous 1.105 (colored)

Introduce and use uvm_pagewait() where PG_WANTED is set.

No change in behavior.

ok kn@, semarie@, kettenis@

Revision 1.105 / (download) - annotate - [select for diffs], Sun Jul 24 11:00:22 2022 UTC (22 months, 2 weeks ago) by mpi
Branch: MAIN
Changes since 1.104: +3 -2 lines
Diff to previous 1.104 (colored)

Revert simplification of the aiodone daemon it breaks swap on arm64.

Found the hard way by mlarkin@ and deraadt@.

Revision 1.104 / (download) - annotate - [select for diffs], Mon Jul 11 11:33:17 2022 UTC (23 months ago) by mpi
Branch: MAIN
Changes since 1.103: +2 -3 lines
Diff to previous 1.103 (colored)

Simplify the aiodone daemon which is only used for async writes.

- Remove unused support for asynchronous read, including error conditions

- Grab the proper lock for each page that has been written to swap.  This
  allows to enable an assertion in uvm_page_unbusy().

- Move the uvm_anon_release() call outside of uvm_page_unbusy() and
  assert for the different anon cases.

ok beck@, kettenis@

Revision 1.103 / (download) - annotate - [select for diffs], Wed Dec 29 20:22:06 2021 UTC (2 years, 5 months ago) by mpi
Branch: MAIN
CVS Tags: OPENBSD_7_1_BASE, OPENBSD_7_1
Changes since 1.102: +14 -14 lines
Diff to previous 1.102 (colored)

Consistently name page argument `pg'.

Reduce differences with NetBSD, no functional changes.

Revision 1.102 / (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.101: +48 -16 lines
Diff to previous 1.101 (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.101 / (download) - annotate - [select for diffs], Sun Oct 24 13:46:14 2021 UTC (2 years, 7 months ago) by mpi
Branch: MAIN
Changes since 1.100: +9 -9 lines
Diff to previous 1.100 (colored)

Shuffle variables around and use KASSERT() instead of panic().

No functionnal change.

Reduce differences with NetBSD, tested by many as part of a larger diff.

Revision 1.100 / (download) - annotate - [select for diffs], Sat Oct 23 14:42:07 2021 UTC (2 years, 7 months ago) by mpi
Branch: MAIN
Changes since 1.99: +2 -1 lines
Diff to previous 1.99 (colored)

Sprinkle uvm_obj_destroy() over UVM object recycling code.

For now, only assert that the tree of pages is empty in uvm_obj_destroy().
This will soon be used to free the per-UVM object lock.

While here call uvm_obj_init() when new vnodes are allocated instead of
in uvn_attach().  Because vnodes and there associated UVM object are
currently never freed, it isn't easy to know where/when to garbage
collect the associated lock.  So simply check that the reference of a
given object is 0 when uvn_attach().

Tested by many as part of a bigger diff.

ok kettenis@

Revision 1.99 / (download) - annotate - [select for diffs], Mon Jun 28 11:19:01 2021 UTC (2 years, 11 months ago) by mpi
Branch: MAIN
CVS Tags: OPENBSD_7_0_BASE, OPENBSD_7_0
Changes since 1.98: +28 -65 lines
Diff to previous 1.98 (colored)

Make anonymous object reference counting independant from the KERNEL_LOCK().

- Use atomic operations for increment/decrement

- Rewrite the loop from uao_swap_off() to only keep a reference to the
  next item in the list.

ok jmatthew@

Revision 1.98 / (download) - annotate - [select for diffs], Wed Jun 16 09:02:21 2021 UTC (2 years, 11 months ago) by mpi
Branch: MAIN
Changes since 1.97: +2 -2 lines
Diff to previous 1.97 (colored)

Change the prefix of UVM object functions to match NetBSD's.

For example uvm_objinit() becomes uvm_obj_init().  Reduce differences
between the trees and help porting new functions needed for UVM object
locking.

No functionnal change.

Revision 1.97 / (download) - annotate - [select for diffs], Tue Jun 15 16:38:09 2021 UTC (2 years, 11 months ago) by mpi
Branch: MAIN
Changes since 1.96: +15 -5 lines
Diff to previous 1.96 (colored)

Use a macro to assert that given uobjs correspond to anonymous objects.

Reduce the difference with NetBSD.

ok kettenis@

Revision 1.96 / (download) - annotate - [select for diffs], Thu May 20 08:03:35 2021 UTC (3 years ago) by mpi
Branch: MAIN
Changes since 1.95: +5 -50 lines
Diff to previous 1.95 (colored)

Make use of uao_dropswap_range() in uao_free() instead of re-rolling it.

ok kettenis@

Revision 1.95 / (download) - annotate - [select for diffs], Thu Apr 22 11:54:32 2021 UTC (3 years, 1 month ago) by mpi
Branch: MAIN
Changes since 1.94: +3 -1 lines
Diff to previous 1.94 (colored)

Keep under #ifdef TMPFS functions to grow/shrink uaobj.

ok patrick@

Revision 1.94 / (download) - annotate - [select for diffs], Wed Mar 31 08:53:39 2021 UTC (3 years, 2 months ago) by mpi
Branch: MAIN
CVS Tags: OPENBSD_6_9_BASE, OPENBSD_6_9
Changes since 1.93: +26 -25 lines
Diff to previous 1.93 (colored)

Introduce UAO_USES_SWHASH() and use tabs instead of spaces in #defines.

No functionnal change, reduce the difference with NetBSD.

ok jmatthew@

Revision 1.93 / (download) - annotate - [select for diffs], Fri Mar 26 13:40:05 2021 UTC (3 years, 2 months ago) by mpi
Branch: MAIN
Changes since 1.92: +21 -21 lines
Diff to previous 1.92 (colored)

Remove parenthesis around return value to reduce the diff with NetBSD.

No functional change.

ok mlarkin@

Revision 1.92 / (download) - annotate - [select for diffs], Sat Mar 20 10:24:21 2021 UTC (3 years, 2 months ago) by mpi
Branch: MAIN
Changes since 1.91: +145 -109 lines
Diff to previous 1.91 (colored)

Sync some comments in order to reduce the difference with NetBSD.

No functionnal change.

ok kettenis@

Revision 1.91 / (download) - annotate - [select for diffs], Thu Mar 4 09:00:03 2021 UTC (3 years, 3 months ago) by mpi
Branch: MAIN
Changes since 1.90: +4 -4 lines
Diff to previous 1.90 (colored)

Modify `uvmexp.swpgonly' atomically, required for uvm_fault() w/o KERNEL_LOCK()

ok kettenis@

Revision 1.90 / (download) - annotate - [select for diffs], Mon Jan 11 18:51:09 2021 UTC (3 years, 4 months ago) by mpi
Branch: MAIN
Changes since 1.89: +3 -1 lines
Diff to previous 1.89 (colored)

Assert that the KERNEL_LOCK() is held in uao_set_swslot().

ok kettenis@

Revision 1.89 / (download) - annotate - [select for diffs], Wed Oct 21 09:08:14 2020 UTC (3 years, 7 months ago) by mpi
Branch: MAIN
Changes since 1.88: +13 -9 lines
Diff to previous 1.88 (colored)

Constify and use C99 initializer for "struct uvm_pagerops".

While here put some KERNEL_ASSERT_LOCKED() in the functions called from
the page fault handler.  The removal of locking of `uobj' will need to be
revisited and these are good indicator that something is missing and that
many comments are lying.

ok kettenis

Revision 1.88 / (download) - annotate - [select for diffs], Tue Oct 20 08:47:23 2020 UTC (3 years, 7 months ago) by mpi
Branch: MAIN
Changes since 1.87: +1 -7 lines
Diff to previous 1.87 (colored)

Remove guard, uao_init() is called only once and no other function use one.

ok kettenis@

Revision 1.87 / (download) - annotate - [select for diffs], Tue Sep 22 14:31:08 2020 UTC (3 years, 8 months ago) by mpi
Branch: MAIN
CVS Tags: OPENBSD_6_8_BASE, OPENBSD_6_8
Changes since 1.86: +2 -2 lines
Diff to previous 1.86 (colored)

Spell inline correctly.

Reduce differences with NetBSD.

ok mvs@, kettenis@

Revision 1.86 / (download) - annotate - [select for diffs], Thu Jul 18 23:47:33 2019 UTC (4 years, 10 months ago) by cheloha
Branch: MAIN
CVS Tags: OPENBSD_6_7_BASE, OPENBSD_6_7, OPENBSD_6_6_BASE, OPENBSD_6_6
Changes since 1.85: +4 -4 lines
Diff to previous 1.85 (colored)

R.I.P. UVM_WAIT().  Use tsleep_nsec(9) directly.

UVM_WAIT() doesn't provide much of a useful abstraction.  All callers
tsleep forever and no callers set PCATCH, so only 2 of 4 parameters are
actually used.  Might as well just use tsleep_nsec(9) directly and make
the uvm code a bit less specialized.

Suggested by mpi@.

ok mpi@ visa@ millert@

Revision 1.85 / (download) - annotate - [select for diffs], Tue Jan 31 17:08:51 2017 UTC (7 years, 4 months ago) by dhill
Branch: MAIN
CVS Tags: OPENBSD_6_5_BASE, OPENBSD_6_5, OPENBSD_6_4_BASE, OPENBSD_6_4, OPENBSD_6_3_BASE, OPENBSD_6_3, OPENBSD_6_2_BASE, OPENBSD_6_2, OPENBSD_6_1_BASE, OPENBSD_6_1
Changes since 1.84: +5 -5 lines
Diff to previous 1.84 (colored)

Sprinkle some free sizes in uvm/

ok stefan@ visa@

Revision 1.84 / (download) - annotate - [select for diffs], Sat Sep 24 18:40:29 2016 UTC (7 years, 8 months ago) by tedu
Branch: MAIN
Changes since 1.83: +6 -5 lines
Diff to previous 1.83 (colored)

use hashfree for aobj hashes. from Mathieu -
ok guenther

Revision 1.83 / (download) - annotate - [select for diffs], Fri Sep 16 02:35:42 2016 UTC (7 years, 8 months ago) by dlg
Branch: MAIN
Changes since 1.82: +2 -2 lines
Diff to previous 1.82 (colored)

move the vm_page struct from being stored in RB macro trees to RBT functions

vm_page structs go into three trees, uvm_objtree, uvm_pmr_addr, and
uvm_pmr_size. all these have been moved to RBT code.

this should give us a decent chunk of code space back.

Revision 1.82 / (download) - annotate - [select for diffs], Thu Sep 15 02:00:18 2016 UTC (7 years, 8 months ago) by dlg
Branch: MAIN
Changes since 1.81: +5 -8 lines
Diff to previous 1.81 (colored)

all pools have their ipl set via pool_setipl, so fold it into pool_init.

the ioff argument to pool_init() is unused and has been for many
years, so this replaces it with an ipl argument. because the ipl
will be set on init we no longer need pool_setipl.

most of these changes have been done with coccinelle using the spatch
below. cocci sucks at formatting code though, so i fixed that by hand.

the manpage and subr_pool.c bits i did myself.

ok tedu@ jmatthew@

@ipl@
expression pp;
expression ipl;
expression s, a, o, f, m, p;
@@
-pool_init(pp, s, a, o, f, m, p);
-pool_setipl(pp, ipl);
+pool_init(pp, s, a, ipl, f, m, p);

Revision 1.81 / (download) - annotate - [select for diffs], Fri Jun 17 10:48:25 2016 UTC (7 years, 11 months ago) by dlg
Branch: MAIN
CVS Tags: OPENBSD_6_0_BASE, OPENBSD_6_0
Changes since 1.80: +3 -1 lines
Diff to previous 1.80 (colored)

pool_setipl on all uvm pools.

ok kettenis@ visa@

Revision 1.80 / (download) - annotate - [select for diffs], Fri Aug 21 16:04:35 2015 UTC (8 years, 9 months ago) by visa
Branch: MAIN
CVS Tags: OPENBSD_5_9_BASE, OPENBSD_5_9
Changes since 1.79: +5 -7 lines
Diff to previous 1.79 (colored)

Remove the unused loan_count field and the related uvm logic. Most of
the page loaning code is already in the Attic.

ok kettenis@, beck@

Revision 1.79 / (download) - annotate - [select for diffs], Thu May 7 01:55:44 2015 UTC (9 years, 1 month ago) by jsg
Branch: MAIN
CVS Tags: OPENBSD_5_8_BASE, OPENBSD_5_8
Changes since 1.78: +2 -2 lines
Diff to previous 1.78 (colored)

fix indentation
ok miod@

Revision 1.78 / (download) - annotate - [select for diffs], Sun Feb 8 02:17:08 2015 UTC (9 years, 4 months ago) by deraadt
Branch: MAIN
CVS Tags: OPENBSD_5_7_BASE, OPENBSD_5_7
Changes since 1.77: +0 -2 lines
Diff to previous 1.77 (colored)

Something is subtly wrong with this.  On ramdisks, processes run out of
mappable memory (direct or via execve), perhaps because of the address
allocator behind maps and the way wiring counts work?

Revision 1.77 / (download) - annotate - [select for diffs], Fri Feb 6 10:58:35 2015 UTC (9 years, 4 months ago) by deraadt
Branch: MAIN
Changes since 1.76: +3 -1 lines
Diff to previous 1.76 (colored)

Clear PQ_AOBJ before calling uvm_pagefree(), clearing up one false XXX
comment (one is fixed, one is deleted).
ok kettenis beck

Revision 1.76 / (download) - annotate - [select for diffs], Tue Dec 23 04:56:47 2014 UTC (9 years, 5 months ago) by tedu
Branch: MAIN
Changes since 1.75: +4 -4 lines
Diff to previous 1.75 (colored)

convert pool_init nointr to waitok

Revision 1.75 / (download) - annotate - [select for diffs], Thu Dec 18 23:59:28 2014 UTC (9 years, 5 months ago) by tedu
Branch: MAIN
Changes since 1.74: +1 -4 lines
Diff to previous 1.74 (colored)

remove two useless and unused hash penalty defines

Revision 1.74 / (download) - annotate - [select for diffs], Wed Dec 17 19:42:15 2014 UTC (9 years, 5 months ago) by tedu
Branch: MAIN
Changes since 1.73: +2 -1 lines
Diff to previous 1.73 (colored)

remove lock.h from uvm_extern.h. another holdover from the simpletonlock
era. fix uvm including c files to include lock.h or atomic.h as necessary.
ok deraadt

Revision 1.73 / (download) - annotate - [select for diffs], Tue Dec 9 07:16:41 2014 UTC (9 years, 6 months ago) by doug
Branch: MAIN
Changes since 1.72: +5 -5 lines
Diff to previous 1.72 (colored)

Sprinkle in a little more mallocarray().

ok deraadt@ tedu@

Revision 1.72 / (download) - annotate - [select for diffs], Fri Nov 21 07:18:44 2014 UTC (9 years, 6 months ago) by tedu
Branch: MAIN
Changes since 1.71: +1 -3 lines
Diff to previous 1.71 (colored)

somebody permitted simple_locks back into uvm. they will be referred to
the bureau of party loyalty for reeducation.

Revision 1.71 / (download) - annotate - [select for diffs], Tue Nov 18 23:55:01 2014 UTC (9 years, 6 months ago) by krw
Branch: MAIN
Changes since 1.70: +1 -2 lines
Diff to previous 1.70 (colored)

Nuke yet more obvious #include duplications.

ok miod@

Revision 1.70 / (download) - annotate - [select for diffs], Sun Nov 16 12:31:00 2014 UTC (9 years, 6 months ago) by deraadt
Branch: MAIN
Changes since 1.69: +5 -5 lines
Diff to previous 1.69 (colored)

Replace a plethora of historical protection options with just
PROT_NONE, PROT_READ, PROT_WRITE, and PROT_EXEC from mman.h.
PROT_MASK is introduced as the one true way of extracting those bits.
Remove UVM_ADV_* wrapper, using the standard names.
ok doug guenther kettenis

Revision 1.69 / (download) - annotate - [select for diffs], Sun Sep 14 14:17:27 2014 UTC (9 years, 8 months ago) by jsg
Branch: MAIN
Changes since 1.68: +1 -2 lines
Diff to previous 1.68 (colored)

remove uneeded proc.h includes
ok mpi@ kspillner@

Revision 1.68 / (download) - annotate - [select for diffs], Mon Sep 8 19:42:57 2014 UTC (9 years, 9 months ago) by kettenis
Branch: MAIN
Changes since 1.67: +12 -2 lines
Diff to previous 1.67 (colored)

Don't sleep on allocation of hash table entries.  Should fix crashes people
have been seeing with tmpfs.  Based on a similar fix from Bitrig by
Owain Ainsworth.

ok jsg@

Revision 1.67 / (download) - annotate - [select for diffs], Sat Jul 12 18:44:01 2014 UTC (9 years, 11 months ago) by tedu
Branch: MAIN
CVS Tags: OPENBSD_5_6_BASE, OPENBSD_5_6
Changes since 1.66: +9 -9 lines
Diff to previous 1.66 (colored)

add a size argument to free. will be used soon, but for now default to 0.
after discussions with beck deraadt kettenis.

Revision 1.66 / (download) - annotate - [select for diffs], Fri Jul 11 16:35:40 2014 UTC (9 years, 11 months ago) by jsg
Branch: MAIN
Changes since 1.65: +1 -7 lines
Diff to previous 1.65 (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.65 / (download) - annotate - [select for diffs], Thu Jul 3 11:38:46 2014 UTC (9 years, 11 months ago) by kettenis
Branch: MAIN
Changes since 1.64: +3 -4 lines
Diff to previous 1.64 (colored)

It is important that we don't release the kernel lock between issuing a
wakeup and clearing the PG_BUSY and PG_WANTED flags, so try to keep those
bits as close together and defenitely avoid calling random code in between.

ok guenther@, tedu@

Revision 1.64 / (download) - annotate - [select for diffs], Thu May 8 20:08:50 2014 UTC (10 years, 1 month ago) by kettenis
Branch: MAIN
Changes since 1.63: +8 -7 lines
Diff to previous 1.63 (colored)

Fix some potential integer overflows caused by converting a page number into
an offset/size/address by shifting by PAGE_SHIFT.  Make uvm_objwrire/unwire
use voff_t instead of off_t.  The former is the right type here even if it is
equivalent to the latter.

Inspired by a somewhat similar changes in Bitrig.

ok deraadt@, guenther@

Revision 1.63 / (download) - annotate - [select for diffs], Wed Apr 30 19:25:14 2014 UTC (10 years, 1 month ago) by kettenis
Branch: MAIN
Changes since 1.62: +2 -1 lines
Diff to previous 1.62 (colored)

Make sure we flush discarded pages even if the number of hash buckets doesn't
change.  From Pedro Martelletto via bitrig.

ok beck@, krw@

Revision 1.62 / (download) - annotate - [select for diffs], Wed Apr 30 16:07:31 2014 UTC (10 years, 1 month ago) by kettenis
Branch: MAIN
Changes since 1.61: +9 -4 lines
Diff to previous 1.61 (colored)

Assigning list pointers doesn't really work with doubly linked lists.  Use
a remove-and-insert-all-items approach for now and remove the comments that
suggest manipulating list pointers.  Pointed out by Pedro Martelletto.

ok beck@, krw@, mikeb@

Revision 1.61 / (download) - annotate - [select for diffs], Sun Apr 13 23:14:15 2014 UTC (10 years, 2 months ago) by tedu
Branch: MAIN
Changes since 1.60: +37 -152 lines
Diff to previous 1.60 (colored)

compress code by turning four line comments into one line comments.
emphatic ok usual suspects, grudging ok miod

Revision 1.60 / (download) - annotate - [select for diffs], Mon Dec 9 08:24:29 2013 UTC (10 years, 6 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_5_5_BASE, OPENBSD_5_5
Changes since 1.59: +1 -1 lines
Diff to previous 1.59 (colored)

forgot to say: aobj grow/shrink tweaks are mostly from Pedro Martelletto,
like the rest of tmpfs

Revision 1.59 / (download) - annotate - [select for diffs], Sun Dec 8 21:16:34 2013 UTC (10 years, 6 months ago) by espie
Branch: MAIN
Changes since 1.58: +434 -19 lines
Diff to previous 1.58 (colored)

allow aobj to shrink grow, for tmpfs support
A few tweaks asked by kettenis@
(code doesn't affect systems without mounted tmpfs at all)

okay beck@

Revision 1.58 / (download) - annotate - [select for diffs], Thu May 30 16:39:26 2013 UTC (11 years ago) by tedu
Branch: MAIN
CVS Tags: OPENBSD_5_4_BASE, OPENBSD_5_4
Changes since 1.57: +4 -7 lines
Diff to previous 1.57 (colored)

UVM_UNLOCK_AND_WAIT no longer unlocks, so rename it to UVM_WAIT.

Revision 1.57 / (download) - annotate - [select for diffs], Thu May 30 16:29:46 2013 UTC (11 years ago) by tedu
Branch: MAIN
Changes since 1.56: +9 -56 lines
Diff to previous 1.56 (colored)

remove lots of comments about locking per beck's request

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

remove simple_locks from uvm code. ok beck deraadt

Revision 1.55 / (download) - annotate - [select for diffs], Thu Apr 12 14:59:26 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.54: +1 -4 lines
Diff to previous 1.54 (colored)

Remove dead UBC code

Revision 1.54 / (download) - annotate - [select for diffs], Sun Jul 3 18:34:14 2011 UTC (12 years, 11 months ago) by oga
Branch: MAIN
CVS Tags: OPENBSD_5_1_BASE, OPENBSD_5_1, OPENBSD_5_0_BASE, OPENBSD_5_0
Changes since 1.53: +2 -37 lines
Diff to previous 1.53 (colored)

Rip out and burn support for UVM_HIST.

The vm hackers don't use it, don't maintain it and have to look at it all the
time. About time this 800 lines of code hit /dev/null.

``never liked it'' tedu@. ariane@ was very happy when i told her i wrote
this diff.

Revision 1.53 / (download) - annotate - [select for diffs], Tue May 10 21:48:17 2011 UTC (13 years, 1 month ago) by oga
Branch: MAIN
Changes since 1.52: +3 -2 lines
Diff to previous 1.52 (colored)

Don't leak swapslots when doing a uvm_km_pgremove and a page is in swap only.

Before we were only calling uao_dropswap() if there was a page, maning
that if the buffer was swapped out then we would leak the slot.

Quite rare because only pipebuffers should swap from the kernel object,
but i've seen panics that implied this had happened (alpha.p for example).

ok thib@ after a lot of discussion and checking the semantics.

Revision 1.52 / (download) - annotate - [select for diffs], Sat May 7 15:31:25 2011 UTC (13 years, 1 month ago) by oga
Branch: MAIN
Changes since 1.51: +11 -7 lines
Diff to previous 1.51 (colored)

Uvm Anonymous Objects depending on size either use an array or a
hashtable to keep the list of swap slots in use in. Only one of these
will be in use at any one tmie, so shave some bytes and make it a union.

ok thib@

Revision 1.51 / (download) - annotate - [select for diffs], Fri Jul 2 02:08:53 2010 UTC (13 years, 11 months ago) by syuu
Branch: MAIN
CVS Tags: OPENBSD_4_9_BASE, OPENBSD_4_9, OPENBSD_4_8_BASE, OPENBSD_4_8
Changes since 1.50: +2 -2 lines
Diff to previous 1.50 (colored)

fix corrupt UVMHIST_LOG

Revision 1.50 / (download) - annotate - [select for diffs], Fri Apr 30 21:56:39 2010 UTC (14 years, 1 month ago) by oga
Branch: MAIN
Changes since 1.49: +4 -10 lines
Diff to previous 1.49 (colored)

Right now, if anything internal changes with a uvm object, diverse
places in the tree need to be touched to update the object
initialisation with respect to that.

So, make a function (uvm_initobj) that takes the refcount, object and
pager ops and does this initialisation for us. This should save on
maintainance in the future.

looked good to fgs@. Tedu complained about the British spelling but OKed
it anyway.

Revision 1.49 / (download) - annotate - [select for diffs], Fri Apr 30 20:50:53 2010 UTC (14 years, 1 month ago) by oga
Branch: MAIN
Changes since 1.48: +27 -3 lines
Diff to previous 1.48 (colored)

Prevent a possible case of lock recursion in swapoff.

If when we have successfully swapped an aobj back in, then we release our
reference count, and that reference is the last reference, we will free the
the aobj and recursively lock the list lock.

Fix this by keeping track of the last object we had a reference on, and
releasing the refcount the next time we unlock the list lock.

Put a couple of comments in explaining lock ordering in this file.

noticed by, discussed with and ok guenther@.

Revision 1.48 / (download) - annotate - [select for diffs], Sun Apr 25 23:02:22 2010 UTC (14 years, 1 month ago) by oga
Branch: MAIN
Changes since 1.47: +13 -15 lines
Diff to previous 1.47 (colored)

Switch uao_list_lock protecting the uao list (for create, destroy and
most importantly swapoff) over to a mutex. No idea how many times i've
written this diff in the past.

ok deraadt@

Revision 1.47 / (download) - annotate - [select for diffs], Thu Aug 6 15:28:14 2009 UTC (14 years, 10 months ago) by oga
Branch: MAIN
CVS Tags: OPENBSD_4_7_BASE, OPENBSD_4_7
Changes since 1.46: +4 -9 lines
Diff to previous 1.46 (colored)

reintroduce the uvm_tree commit.

Now instead of the global object hashtable, we have a per object tree.

Testing shows no performance difference and a slight code shrink. OTOH when
locking is more fine grained this should be faster due to lock contention on
uvm.hashlock.

ok thib@, art@.

Revision 1.46 / (download) - annotate - [select for diffs], Wed Jul 22 21:05:37 2009 UTC (14 years, 10 months ago) by oga
Branch: MAIN
Changes since 1.45: +49 -186 lines
Diff to previous 1.45 (colored)

Put the PG_RELEASED changes diff back in.

This has has been tested very very thoroughly on all archs we have
excepting 88k and 68k. Please see cvs log for the individual commit
messages.

ok beck@, thib@

Revision 1.45 / (download) - annotate - [select for diffs], Tue Jun 16 23:54:57 2009 UTC (14 years, 11 months ago) by oga
Branch: MAIN
CVS Tags: OPENBSD_4_6_BASE, OPENBSD_4_6
Changes since 1.44: +20 -17 lines
Diff to previous 1.44 (colored)

date based reversion of uvm to the 4th May.

We still have no idea why this stops the crashes. but it does.

a machine forced to 64mb of ram cycled 10GB through swap with this diff
and is still running as I type this. Other tests by ariane@ and thib@
also seem to show that it's alright.

ok deraadt@, thib@, ariane@

Revision 1.44 / (download) - annotate - [select for diffs], Tue Jun 16 17:14:14 2009 UTC (14 years, 11 months ago) by oga
Branch: MAIN
Changes since 1.43: +142 -50 lines
Diff to previous 1.43 (colored)

Backout all the PG_RELEASED changes.

This is for the same reason as the earlier backouts, to avoid the bug
either added or exposed sometime around c2k9. This *should* be the last
one.

prompted by deraadt@

ok ariane@

Revision 1.43 / (download) - annotate - [select for diffs], Tue Jun 16 00:11:29 2009 UTC (14 years, 11 months ago) by oga
Branch: MAIN
Changes since 1.42: +53 -4 lines
Diff to previous 1.42 (colored)

Backout all changes to uvm after pmemrange (which will be backed out
separately).

a change at or just before the hackathon has either exposed or added a
very very nasty memory corruption bug that is giving us hell right now.
So in the interest of kernel stability these diffs are being backed out
until such a time as that corruption bug has been found and squashed,
then the ones that are proven good may slowly return.

a quick hitlist of the main commits this backs out:

mine:
uvm_objwire
the lock change in uvm_swap.c
using trees for uvm objects instead of the hash
removing the pgo_releasepg callback.

art@'s:
putting pmap_page_protect(VM_PROT_NONE) in uvm_pagedeactivate() since
all callers called that just prior anyway.

ok beck@, ariane@.

prompted by deraadt@.

Revision 1.42 / (download) - annotate - [select for diffs], Sat Jun 6 17:46:44 2009 UTC (15 years ago) by art
Branch: MAIN
Changes since 1.41: +2 -7 lines
Diff to previous 1.41 (colored)

Since all callers of uvm_pagedeactivate did pmap_page_protect(.., VM_PROT_NONE)
just move that into uvm_pagedeactivate.

oga@ ok

Revision 1.41 / (download) - annotate - [select for diffs], Tue Jun 2 23:00:19 2009 UTC (15 years ago) by oga
Branch: MAIN
Changes since 1.40: +3 -3 lines
Diff to previous 1.40 (colored)

Instead of the global hash table with the terrible hashfunction and a
global lock, switch the uvm object pages to being kept in a per-object
RB_TREE. Right now this is approximately the same speed, but cleaner.
When biglock usage is reduced this will improve concurrency due to lock
contention..

ok beck@ art@. Thanks to jasper for the speed testing.

Revision 1.40 / (download) - annotate - [select for diffs], Mon Jun 1 19:54:02 2009 UTC (15 years ago) by oga
Branch: MAIN
Changes since 1.39: +1 -45 lines
Diff to previous 1.39 (colored)

Since we've now cleared up a lot of the PG_RELEASED setting, remove the
pgo_releasepg() hook and just free the page the "normal" way in the one
place we'll ever see PG_RELEASED and should care (uvm_page_unbusy,
called in aiodoned).

ok art@, beck@, thib@

Revision 1.39 / (download) - annotate - [select for diffs], Fri May 8 13:50:15 2009 UTC (15 years, 1 month ago) by ariane
Branch: MAIN
Changes since 1.38: +18 -21 lines
Diff to previous 1.38 (colored)

Remove static qualifier of functions that are not inline.
Makes trace in ddb useful.

ok oga

Revision 1.38 / (download) - annotate - [select for diffs], Tue May 5 05:12:17 2009 UTC (15 years, 1 month ago) by oga
Branch: MAIN
Changes since 1.37: +50 -142 lines
Diff to previous 1.37 (colored)

The first step in cleaning up the use of PG_RELEASED for uvm objects.

Now, the PG_ RELEASED flag currently has two (maybe three) uses. The
valid one is for use with async io where we want to free the page after
we've paged it out.  The other ones are "oh i'd like to free this, but
someone else is playing with it". It's simpler to just sleep on the
damned page instead and stop the fiddling.

First step does uao's: in uao_detach, sleep on the object and free it
when we're clean, instead of setting a flag so it's freed after. In
uao_flush, do the same. Change the interation over the object in flush
so that we don't have to add marker pages or other such voodoo to the
list when we sleep (netbsd did that when they had a similar diff), just
use the hash always. We can now change uao_releasepg() to just free the
page, and not bother with the KILLME stuff. When the other objects are
fixed this hook will vanish.

Much discussion with art@ over the idea, and ariane@ over this specific
diff. As mentioned, this one is based loosely on a similar idea in
netbsd.

Been in my tree for a while, survived many make builds, etc, and forcing
paging using ariane's evil program.

ok ariane@, beck@.

Revision 1.37 / (download) - annotate - [select for diffs], Sat May 2 12:54:42 2009 UTC (15 years, 1 month ago) by oga
Branch: MAIN
Changes since 1.36: +2 -4 lines
Diff to previous 1.36 (colored)

a few more memset changes.

two cases of pool_get() + memset(0) -> pool_get(,,,PR_ZERO)
1.5 cases of global variables are already zeroed, so don't zero them.

ok ariane@, comments on stuff i'd missed from blambert@ and cnst@.

Revision 1.36 / (download) - annotate - [select for diffs], Fri Mar 20 15:19:04 2009 UTC (15 years, 2 months ago) by oga
Branch: MAIN
Changes since 1.35: +26 -57 lines
Diff to previous 1.35 (colored)

While working on some stuff in uvm I've gotten REALLY sick of reading
K&R function declarations, so switch them all over to ansi-style, in
accordance with the prophesy.

"go for it" art@

Revision 1.35 / (download) - annotate - [select for diffs], Fri Sep 7 15:00:20 2007 UTC (16 years, 9 months ago) by art
Branch: MAIN
CVS Tags: OPENBSD_4_5_BASE, OPENBSD_4_5, OPENBSD_4_4_BASE, OPENBSD_4_4, OPENBSD_4_3_BASE, OPENBSD_4_3
Changes since 1.34: +2 -3 lines
Diff to previous 1.34 (colored)

Use M_ZERO in a few more places to shave bytes from the kernel.

eyeballed and ok dlg@

Revision 1.34 / (download) - annotate - [select for diffs], Fri Apr 13 18:57:49 2007 UTC (17 years, 2 months ago) by art
Branch: MAIN
CVS Tags: OPENBSD_4_2_BASE, OPENBSD_4_2
Changes since 1.33: +16 -12 lines
Diff to previous 1.33 (colored)

While splitting flags and pqflags might have been a good idea in theory
to separate locking, on most modern machines this is not enough
since operations on short types touch other short types that share the
same word in memory.

Merge pg_flags and pqflags again and now use atomic operations to change
the flags. Also bump wire_count to an int and pg_version might go
int as well, just for alignment.

tested by many, many. ok miod@

Revision 1.33 / (download) - annotate - [select for diffs], Thu Apr 12 18:59:55 2007 UTC (17 years, 2 months ago) by art
Branch: MAIN
Changes since 1.32: +2 -2 lines
Diff to previous 1.32 (colored)

Unbreak compile with option UVMHIST after pg_flags changes.
from mickey

Revision 1.32 / (download) - annotate - [select for diffs], Wed Apr 4 17:44:45 2007 UTC (17 years, 2 months ago) by art
Branch: MAIN
Changes since 1.31: +17 -17 lines
Diff to previous 1.31 (colored)

Mechanically rename the "flags" and "version" fields in struct vm_page
to "pg_flags" and "pg_version", so that they are a bit easier to work with.
Whoever uses generic names like this for a popular struct obviously doesn't
read much code.

Most architectures compile and there are no functionality changes.

deraadt@ ok ("if something fails to compile, we fix that by hand")

Revision 1.31 / (download) - annotate - [select for diffs], Mon Jul 31 11:51:29 2006 UTC (17 years, 10 months ago) by mickey
Branch: MAIN
CVS Tags: OPENBSD_4_1_BASE, OPENBSD_4_1, OPENBSD_4_0_BASE, OPENBSD_4_0
Changes since 1.30: +13 -13 lines
Diff to previous 1.30 (colored)

fix uvmhist #2: args are always u_long so fix missing %d and %x and no %ll; no change for normal code

Revision 1.30 / (download) - annotate - [select for diffs], Wed Jul 26 23:15:55 2006 UTC (17 years, 10 months ago) by mickey
Branch: MAIN
Changes since 1.29: +5 -5 lines
Diff to previous 1.29 (colored)

fix fmts for UVMHIST_LOG() entries making it more useful on 64bit archs; miod@ ok

Revision 1.29 / (download) - annotate - [select for diffs], Tue Nov 15 21:09:46 2005 UTC (18 years, 6 months ago) by miod
Branch: MAIN
CVS Tags: OPENBSD_3_9_BASE, OPENBSD_3_9
Changes since 1.28: +2 -2 lines
Diff to previous 1.28 (colored)

Only two `h' in threshold.

Revision 1.28 / (download) - annotate - [select for diffs], Thu Oct 27 18:05:16 2005 UTC (18 years, 7 months ago) by otto
Branch: MAIN
Changes since 1.27: +4 -5 lines
Diff to previous 1.27 (colored)

Following a next pointer of an element deleted from a list is bad
practise. Depending on the list implementation, this might or might
not work; so make it use a safe idiom. ok pedro@ millert@ deraadt@

Revision 1.27 / (download) - annotate - [select for diffs], Sun Dec 26 21:22:14 2004 UTC (19 years, 5 months ago) by miod
Branch: MAIN
CVS Tags: OPENBSD_3_8_BASE, OPENBSD_3_8, OPENBSD_3_7_BASE, OPENBSD_3_7
Changes since 1.26: +2 -2 lines
Diff to previous 1.26 (colored)

Use list and queue macros where applicable to make the code easier to read;
no change in compiler assembly output.

Revision 1.23.2.5 / (download) - annotate - [select for diffs], Mon Nov 4 20:10:59 2002 UTC (21 years, 7 months ago) by art
Branch: UBC
Changes since 1.23.2.4: +2 -2 lines
Diff to previous 1.23.2.4 (colored) to branchpoint 1.23 (colored) next main 1.24 (colored)

Some minor cleanups to reduce diff to netbsd.

Revision 1.23.2.4 / (download) - annotate - [select for diffs], Mon Nov 4 18:02:32 2002 UTC (21 years, 7 months ago) by art
Branch: UBC
Changes since 1.23.2.3: +46 -16 lines
Diff to previous 1.23.2.3 (colored) to branchpoint 1.23 (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.23.2.3 / (download) - annotate - [select for diffs], Tue Jun 11 03:33:03 2002 UTC (22 years ago) by art
Branch: UBC
Changes since 1.23.2.2: +8 -8 lines
Diff to previous 1.23.2.2 (colored) to branchpoint 1.23 (colored)

Sync UBC branch to -current

Revision 1.4.4.8 / (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.4.4.7: +12 -12 lines
Diff to previous 1.4.4.7 (colored) to branchpoint 1.4 (colored) next main 1.5 (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: UBC_SYNC_B, 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, OPENBSD_3_3_BASE, OPENBSD_3_3, OPENBSD_3_2_BASE, OPENBSD_3_2, OPENBSD_3_1_BASE, OPENBSD_3_1
Changes since 1.25: +13 -13 lines
Diff to previous 1.25 (colored)

First round of __P removal in sys

Revision 1.4.4.7 / (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.4.4.6: +66 -62 lines
Diff to previous 1.4.4.6 (colored) to branchpoint 1.4 (colored)

Merge in trunk

Revision 1.23.2.2 / (download) - annotate - [select for diffs], Sat Feb 2 03:28:26 2002 UTC (22 years, 4 months ago) by art
Branch: UBC
Changes since 1.23.2.1: +193 -283 lines
Diff to previous 1.23.2.1 (colored) to branchpoint 1.23 (colored)

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

Revision 1.23.2.1 / (download) - annotate - [select for diffs], Thu Jan 31 22:55:50 2002 UTC (22 years, 4 months ago) by niklas
Branch: UBC
Changes since 1.23: +3 -4 lines
Diff to previous 1.23 (colored)

Merge in -current, builds on i386, otherwise untested

Revision 1.25 / (download) - annotate - [select for diffs], Wed Jan 23 00:39:48 2002 UTC (22 years, 4 months ago) by art
Branch: MAIN
Changes since 1.24: +3 -4 lines
Diff to previous 1.24 (colored)

Pool deals fairly well with physical memory shortage, but it doesn't deal
well (not at all) with shortages of the vm_map where the pages are mapped
(usually kmem_map).

Try to deal with it:
 - group all information the backend allocator for a pool in a separate
   struct. The pool will only have a pointer to that struct.
 - change the pool_init API to reflect that.
 - link all pools allocating from the same allocator on a linked list.
 - Since an allocator is responsible to wait for physical memory it will
   only fail (waitok) when it runs out of its backing vm_map, carefully
   drain pools using the same allocator so that va space is freed.
   (see comments in code for caveats and details).
 - change pool_reclaim to return if it actually succeeded to free some
   memory, use that information to make draining easier and more efficient.
 - get rid of PR_URGENT, noone uses it.

Revision 1.24 / (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.23: +65 -60 lines
Diff to previous 1.23 (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.4.4.6 / (download) - annotate - [select for diffs], Wed Dec 5 01:19:55 2001 UTC (22 years, 6 months ago) by niklas
Branch: SMP
Changes since 1.4.4.5: +59 -64 lines
Diff to previous 1.4.4.5 (colored) to branchpoint 1.4 (colored)

Merge in -current

Revision 1.23 / (download) - annotate - [select for diffs], Wed Nov 28 19:28:14 2001 UTC (22 years, 6 months ago) by art
Branch: MAIN
CVS Tags: UBC_BASE
Branch point for: UBC
Changes since 1.22: +52 -47 lines
Diff to previous 1.22 (colored)

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

Revision 1.22 / (download) - annotate - [select for diffs], Wed Nov 28 13:47:39 2001 UTC (22 years, 6 months ago) by art
Branch: MAIN
Changes since 1.21: +11 -11 lines
Diff to previous 1.21 (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.21 / (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.20: +1 -11 lines
Diff to previous 1.20 (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.4.4.5 / (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.4.4.4: +35 -61 lines
Diff to previous 1.4.4.4 (colored) to branchpoint 1.4 (colored)

merge in -current

Revision 1.20 / (download) - annotate - [select for diffs], Sun Nov 11 01:16:56 2001 UTC (22 years, 7 months ago) by art
Branch: MAIN
Changes since 1.19: +15 -30 lines
Diff to previous 1.19 (colored)

Sync in more stuff from NetBSD.

Revision 1.19 / (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.18: +20 -28 lines
Diff to previous 1.18 (colored)

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

Revision 1.18 / (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.17: +5 -5 lines
Diff to previous 1.17 (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.17 / (download) - annotate - [select for diffs], Tue Nov 6 01:35:04 2001 UTC (22 years, 7 months ago) by art
Branch: MAIN
Changes since 1.16: +2 -4 lines
Diff to previous 1.16 (colored)

Move the last content from vm/ to uvm/
The only thing left in vm/ are just dumb wrappers.
vm/vm.h includes uvm/uvm_extern.h
vm/pmap.h includes uvm/uvm_pmap.h
vm/vm_page.h includes uvm/uvm_page.h

Revision 1.16 / (download) - annotate - [select for diffs], Mon Nov 5 22:14:54 2001 UTC (22 years, 7 months ago) by art
Branch: MAIN
Changes since 1.15: +2 -3 lines
Diff to previous 1.15 (colored)

Minor sync to NetBSD.

Revision 1.4.4.4 / (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.4.4.3: +340 -76 lines
Diff to previous 1.4.4.3 (colored) to branchpoint 1.4 (colored)

Sync the SMP branch to something just after 3.0

Revision 1.15 / (download) - annotate - [select for diffs], Tue Sep 11 20:05:26 2001 UTC (22 years, 9 months ago) by miod
Branch: MAIN
CVS Tags: OPENBSD_3_0_BASE, OPENBSD_3_0
Changes since 1.14: +1 -2 lines
Diff to previous 1.14 (colored)

Don't include <vm/vm_kern.h> if you don't need foo_map.

Revision 1.14 / (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.13: +6 -8 lines
Diff to previous 1.13 (colored)

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

Revision 1.13 / (download) - annotate - [select for diffs], Mon Aug 6 14:03:04 2001 UTC (22 years, 10 months ago) by art
Branch: MAIN
Changes since 1.12: +14 -16 lines
Diff to previous 1.12 (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.12 / (download) - annotate - [select for diffs], Thu Jul 26 19:37:13 2001 UTC (22 years, 10 months ago) by art
Branch: MAIN
Changes since 1.11: +321 -50 lines
Diff to previous 1.11 (colored)

Add support for disabling swap devices (swapctl -d).
Improve error handling on I/O errors to swap.
From NetBSD

Revision 1.11 / (download) - annotate - [select for diffs], Wed Jul 18 10:47:05 2001 UTC (22 years, 10 months ago) by art
Branch: MAIN
Changes since 1.10: +7 -9 lines
Diff to previous 1.10 (colored)

Get rid of the PMAP_NEW option by making it mandatory for all archs.
The archs that didn't have a proper PMAP_NEW now have a dummy implementation
with wrappers around the old functions.

Revision 1.4.4.3 / (download) - annotate - [select for diffs], Wed Jul 4 11:01:01 2001 UTC (22 years, 11 months ago) by niklas
Branch: SMP
Changes since 1.4.4.2: +198 -15 lines
Diff to previous 1.4.4.2 (colored) to branchpoint 1.4 (colored)

Merge in -current from two days ago in the SMP branch.
As usual with merges, they do not indicate progress, so do not hold
your breath for working SMP, and do not mail me and ask about the
state of it.  It has not changed.  There is work ongoing, but very, very
slowly.  The commit is done in parts as to not lock up the tree in too
big chunks at a time.

Revision 1.10 / (download) - annotate - [select for diffs], Sat Jun 23 19:24:33 2001 UTC (22 years, 11 months ago) by smart
Branch: MAIN
Changes since 1.9: +198 -15 lines
Diff to previous 1.9 (colored)

Sync with NetBSD 19990911 (just before PMAP_NEW was required)
  - thread_sleep_msg() -> uvm_sleep()
  - initialize reference count lock in uvm_anon_{init,add}()
  - add uao_flush()
  - replace boolean 'islocked' with 'lockflags'
  - in uvm_fault() change FALSE to TRUE to in 'wide' fault handling
  - get rid of uvm_km_get()
  - various bug fixes

Revision 1.4.4.2 / (download) - annotate - [select for diffs], Mon May 14 22:47:44 2001 UTC (23 years, 1 month ago) by niklas
Branch: SMP
Changes since 1.4.4.1: +14 -9 lines
Diff to previous 1.4.4.1 (colored) to branchpoint 1.4 (colored)

merge in approximately 2.9 into SMP branch

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

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

Revision 1.8 / (download) - annotate - [select for diffs], Thu Mar 8 15:21:36 2001 UTC (23 years, 3 months ago) by smart
Branch: MAIN
Changes since 1.7: +2 -2 lines
Diff to previous 1.7 (colored)

Replace thread_wakeup() with wakeup().  It is defined in vm_extern.h as a
wrapper, so this removes a dependence on the old VM system.  From NetBSD.
art@ ok

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

$OpenBSD$

Revision 1.6 / (download) - annotate - [select for diffs], Thu Sep 7 20:15:28 2000 UTC (23 years, 9 months ago) by art
Branch: MAIN
CVS Tags: OPENBSD_2_8_BASE, OPENBSD_2_8
Changes since 1.5: +2 -2 lines
Diff to previous 1.5 (colored)

Convert bzero to memset(X, 0..) and bcopy to memcpy.
This is to match (make diffs smaller) the code in NetBSD.
new gcc inlines those functions, so this could also be a performance win.

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

Sync with -current

Revision 1.5 / (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_7_BASE, OPENBSD_2_7
Changes since 1.4: +3 -3 lines
Diff to previous 1.4 (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.4 / (download) - annotate - [select for diffs], Mon Aug 23 08:13:23 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.3: +41 -24 lines
Diff to previous 1.3 (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.3 / (download) - annotate - [select for diffs], Wed Apr 28 09:28:18 1999 UTC (25 years, 1 month ago) by art
Branch: MAIN
Changes since 1.2: +2 -2 lines
Diff to previous 1.2 (colored)

zap the newhashinit hack.
Add an extra flag to hashinit telling if it should wait in malloc.
update all calls to hashinit.

Revision 1.2 / (download) - annotate - [select for diffs], Fri Feb 26 05:32:06 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:11 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.