Home | History | Annotate | Download | only in dev
History log of /src/sys/dev/mm.c
RevisionDateAuthorComments
 1.25  25-Aug-2024  uwe mm.c: g/c duplicate mm_ioctl declaration
 1.24  05-Feb-2019  mrg appease the gcc7 fallthru checker.
 1.23  05-Dec-2018  christos As discussed in tech-kern:

- make sysctl kern.expose_address tri-state:
0: no access
1: access to processes with open /dev/kmem
2: access to everyone
defaults:
0: KASLR kernels
1: non-KASLR kernels

- improve efficiency by calling get_expose_address() per sysctl, not per
process.

- don't expose addresses for linux procfs

- welcome to 8.99.27, changes to fill_*proc ABI
 1.22  13-Oct-2016  ryo branches: 1.22.14; 1.22.16;
/dev/mem cannot lseek over 0x80000000 on 32bit architectures.
 1.21  11-Jul-2016  matt branches: 1.21.2;
Add mm_md_page_color hook and use to support better page coloring.
 1.20  17-Jan-2016  christos add /dev/full
 1.19  25-Jul-2014  dholland branches: 1.19.4;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.18  16-Mar-2014  dholland branches: 1.18.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.17  19-Jan-2013  matt branches: 1.17.2;
Fix __HAVE_MM_MD_CACHE_ALIASING case to use UVM_KMF_COLORMATCH so that
uvm returns a page of the correct color.
 1.16  21-Feb-2012  rmind branches: 1.16.2;
mm_init: re-enable zero page protection.
 1.15  16-Jun-2011  joerg branches: 1.15.2; 1.15.6;
Explicitly initialise vaddr_t and let dead store elimination remove it
later.
 1.14  12-Jun-2011  rmind Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.
 1.13  08-Oct-2008  oster branches: 1.13.16; 1.13.26;
Need to include sys/termios.h here too.
 1.12  08-Oct-2008  christos return ENOTTY instead of EOPNOTSUPP for ioctl(/dev/null, TIOCGETA)
from Andy Shevchenko
 1.11  28-Apr-2008  martin branches: 1.11.2; 1.11.6;
Remove clause 3 and 4 from TNF licenses
 1.10  04-Mar-2007  christos branches: 1.10.36; 1.10.38; 1.10.40;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.9  16-Nov-2006  christos branches: 1.9.4;
__unused removal on arguments; approved by core.
 1.8  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.7  11-Dec-2005  christos branches: 1.7.20; 1.7.22;
merge ktrace-lwp.
 1.6  20-Dec-2003  jdolecek branches: 1.6.16;
don't enumerate individual minor number cases in mmioctl(), handle all
as single 'default' case
adresses part of port-arm/23581 by Richard Earnshaw
 1.5  21-Sep-2003  jdolecek cleanup & uniform descriptor owner handling:
* introduce fsetown(), fgetown(), fownsignal() - this sets/retrieves/signals
the owner of descriptor, according to appropriate sematics
of TIOCSPGRP/FIOSETOWN/SIOCSPGRP/TIOCGPGRP/FIOGETOWN/SIOCGPGRP ioctl; use
these routines instead of custom code where appropriate
* make every place handling TIOCSPGRP/TIOCGPGRP handle also FIOSETOWN/FIOGETOWN
properly, and remove the translation of FIO[SG]OWN to TIOC[SG]PGRP
in sys_ioctl() & sys_fcntl()
* also remove the socket-specific hack in sys_ioctl()/sys_fcntl() and
pass the ioctls down to soo_ioctl() as any other ioctl

change discussed on tech-kern@
 1.4  29-Jun-2003  fvdl branches: 1.4.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.3  28-Jun-2003  darrenr Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records. The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
 1.2  06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.1  27-Feb-2002  christos branches: 1.1.2; 1.1.8; 1.1.12;
Start of mi /dev/{mem,kmem,zero,null} driver. We add an ioctl entry, because
we don't want to throw an error when FIONBIO is requested. We also allow
FIOASYNC clear.
 1.1.12.1  16-May-2002  gehenna Add a prototype.
 1.1.8.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.1.8.2  16-Mar-2002  jdolecek Catch up with -current.
 1.1.8.1  27-Feb-2002  jdolecek file mm.c was added on branch kqueue on 2002-03-16 16:00:48 +0000
 1.1.2.3  17-Sep-2002  nathanw Catch up to -current.
 1.1.2.2  28-Feb-2002  nathanw Catch up to -current.
 1.1.2.1  27-Feb-2002  nathanw file mm.c was added on branch nathanw_sa on 2002-02-28 04:13:11 +0000
 1.4.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.4.2.2  03-Aug-2004  skrll Sync with HEAD
 1.4.2.1  02-Jul-2003  darrenr Apply the aborted ktrace-lwp changes to a specific branch. This is just for
others to review, I'm concerned that patch fuziness may have resulted in some
errant code being generated but I'll look at that later by comparing the diff
from the base to the branch with the file I attempt to apply to it. This will,
at the very least, put the changes in a better context for others to review
them and attempt to tinker with removing passing of 'struct lwp' through
the kernel.
 1.6.16.3  03-Sep-2007  yamt sync with head.
 1.6.16.2  30-Dec-2006  yamt sync with head.
 1.6.16.1  21-Jun-2006  yamt sync with head.
 1.7.22.2  10-Dec-2006  yamt sync with head.
 1.7.22.1  22-Oct-2006  yamt sync with head
 1.7.20.1  18-Nov-2006  ad Sync with head.
 1.9.4.1  12-Mar-2007  rmind Sync with HEAD.
 1.10.40.2  04-May-2009  yamt sync with head.
 1.10.40.1  16-May-2008  yamt sync with head.
 1.10.38.1  18-May-2008  yamt sync with head.
 1.10.36.2  17-Jan-2009  mjf Sync with HEAD.
 1.10.36.1  02-Jun-2008  mjf Sync with HEAD.
 1.11.6.1  19-Oct-2008  haad Sync with HEAD.
 1.11.2.1  10-Oct-2008  skrll Sync with HEAD.
 1.13.26.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.13.16.6  21-May-2011  rmind - Use MIN() instead of min().
- Use __read_mostly and __cacheline_aligned.
 1.13.16.5  06-Mar-2011  rmind - mm_init: disable pmap_protect() call on zero-page for now (x86 pmap issue).
- Run evcnt_init() a little bit earlier, before uvm_init().
 1.13.16.4  02-Jun-2010  rmind Add code, dev_mem_getva() and dev_mem_relva(), to deal with cache-aliasing
issues by allocating an appropriate KVA from physical address, according to
the colour. Used by architectures, which have such requirement. For now,
enable only for MIPS, others will follow. This renames previously invented
mm_md_getva() and mm_md_relva(), since we do this in MI way, instead of MD.
Architectures just need to define __HAVE_MM_MD_CACHE_ALIASING as indicator.

Reviewed by Matt Thomas.
 1.13.16.3  25-Apr-2010  rmind - Drop vmmap and its reserved page on hp700, sparc and x86.
- mm_init: use UVM_KMF_WAITVA when allocating a VA.
 1.13.16.2  25-Apr-2010  rmind - Invent mm_md_getva() and mm_md_relva() routines, provided by MD and
indicated with __HAVE_MM_MD_PREFER_VA. It will be used to deal with
cache aliasing issues and thus fix little MIPS, ARM and friends.

- Convert dev_mem_readwrite() to use unmanaged mappings. Fix a missed
offset addition in a case of direct map. Sprinkle various comments in
the memory device driver.

- Add missing direct map handling on hp700 and vax. Make checks across
m68k ports more consistent, reduce the diffs. Fix kernacc check miss
on news68k. Minor off-by-one fix for alpha. Add MEMC_PHYS_BASE for
mmap() case check on acorn26. Misc clean-up.
 1.13.16.1  18-Mar-2010  rmind Unify /dev/{mem,kmem,zero,null} implementations in MI code. Based on patch
from Joerg Sonnenberger, proposed on tech-kern@, in February 2008.

Work and depression still in progress.
 1.15.6.1  24-Feb-2012  mrg sync to -current.
 1.15.2.3  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.15.2.2  23-Jan-2013  yamt sync with head
 1.15.2.1  17-Apr-2012  yamt sync with head
 1.16.2.3  03-Dec-2017  jdolecek update from HEAD
 1.16.2.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.16.2.1  25-Feb-2013  tls resync with head
 1.17.2.1  18-May-2014  rmind sync with head
 1.18.2.1  10-Aug-2014  tls Rebase.
 1.19.4.3  05-Dec-2016  skrll Sync with HEAD
 1.19.4.2  05-Oct-2016  skrll Sync with HEAD
 1.19.4.1  19-Mar-2016  skrll Sync with HEAD
 1.21.2.1  04-Nov-2016  pgoyette Sync with HEAD
 1.22.16.1  10-Jun-2019  christos Sync with HEAD
 1.22.14.1  26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts

RSS XML Feed