2236 Commits

Author SHA1 Message Date
marcel
14fe1a0c49 MFC standardization of the ELF types and update of the ELF constants:
lib/libc/gen/nlist.c:1.19
	libexec/rtld-elf/rtld.c:1.108
	libexec/rtld-elf/rtld.h:1.36
	libexec/rtld-elf/alpha/reloc.c:1.21
	libexec/rtld-elf/amd64/reloc.c:1.16
	libexec/rtld-elf/ia64/reloc.c:1.16
	libexec/rtld-elf/sparc64/reloc.c:1.11
	share/man/man5/elf.5:1.32-1.33
	sys/alpha/alpha/elf_machdep.c:1.20
	sys/amd64/amd64/elf_machdep.c:1.24
	sys/boot/common/bootstrap.h:1.42
	sys/boot/common/load_elf.c:1.33
	sys/boot/common/load_elf_obj.c:1.2
	sys/boot/common/reloc_elf.c:1.2
	sys/ia64/ia64/elf_machdep.c:1.21
	sys/kern/link_elf.c:1.87
	sys/kern/link_elf_obj.c:1.90
	sys/sparc64/sparc64/elf_machdep.c:1.20
	sys/sys/elf32.h:1.9-1.10
	sys/sys/elf64.h:1.11-1.13
	sys/sys/elf_common.h:1.16
	sys/sys/elf_generic.h:1.7
	sys/sys/imgact_elf.h:1.28
	sys/sys/linker.h:1.40
	usr.bin/elf2aout/elf2aout.c:1.10
	usr.bin/elfdump/elfdump.c:1.13
	usr.sbin/crunch/crunchide/exec_elf32.c:1.15
	usr.sbin/kldxref/ef.c:1.9
	usr.sbin/kldxref/ef.h:1.6
	usr.sbin/kldxref/ef_amd64.c:1.3
	usr.sbin/kldxref/ef_i386.c:1.3
	usr.sbin/kldxref/ef_obj.c:1.4
	usr.sbin/kldxref/ef_powerpc.c:1.3
	usr.sbin/kldxref/ef_sparc64.c:1.4-1.5
2005-12-30 22:13:59 +00:00
jhb
c240b8f56c MFC: Remove linux_mib_destroy() since MTX_SYSINIT's gaining of a SYSUNINIT
that called mtx_destroy() made it obsolete.
2005-12-22 21:25:20 +00:00
marcel
40404ba331 MFC rev 1.40: Improve inittodr(). 2005-11-29 00:18:56 +00:00
alc
7c1f2732db MFC
Begin and end the initialization of pvzone in pmap_init().
  Previously, pvzone's initialization was split between pmap_init() and
  pmap_init2().  This split initialization was the underlying cause of
  some UMA panics during initialization.  Specifically, if the UMA boot
  pages was exhausted before the pvzone was fully initialized, then UMA,
  through no fault of its own, would use an inappropriate back-end
  allocator leading to a panic.  (Previously, as a workaround, we have
  increased the UMA boot pages.)  Fortunately, there is no longer any
  reason that pvzone's initialization cannot be completed in
  pmap_init().

  Eliminate a check for whether pv_entry_high_water has been initialized
  or not from get_pv_entry().  Since pvzone's initialization is
  completed in pmap_init(), this check is no longer needed.

  Use cnt.v_page_count, the actual count of available physical pages,
  instead of vm_page_array_size to compute the maximum number of pv
  entries.

  Introduce the vm.pmap.pv_entries tunable on alpha and ia64.

  Eliminate some unnecessary white space.
2005-11-19 20:31:31 +00:00
alc
245bd5abe3 MFC
Pass a value of type vm_prot_t to pmap_enter_quick() so that it determine
  whether the mapping should permit execute access.

  Revision  Changes    Path
  1.179     +2 -2      src/sys/alpha/alpha/pmap.c
  1.527     +4 -2      src/sys/amd64/amd64/pmap.c
  1.37      +3 -3      src/sys/arm/arm/pmap.c
  1.531     +2 -2      src/sys/i386/i386/pmap.c
  1.163     +4 -3      src/sys/ia64/ia64/pmap.c
  1.100     +3 -2      src/sys/powerpc/powerpc/pmap.c
  1.149     +3 -2      src/sys/sparc64/sparc64/pmap.c
  1.72      +1 -1      src/sys/vm/pmap.h
  1.207     +2 -1      src/sys/vm/vm_fault.c
  1.368     +2 -2      src/sys/vm/vm_map.c
2005-11-13 21:45:49 +00:00
ade
04d2b88bd5 MFC:
Specifically panic() in the case where pmap_insert_entry() fails to
get a new pv under high system load where the available pv entries
have been exhausted before the pagedaemon has a chance to wake up
to reclaim some.

Approved by:	re (scottl)
2005-10-28 06:49:49 +00:00
jhb
6f2511c92d MFC: Pin curthread longer during an interrupt so that we don't have to
ignore preemptions caused by fast interrupt handlers.

Approved by:	re (scottl)
2005-10-06 20:18:20 +00:00
jhb
603cac3a99 MFC: Add atomic_fetchadd(9) operation for types int and 32.
Other small updates to atomic(9) include:
- Note that arm and ppc don't provide 64-bit atomic ops.
- Update sample code.

Approved by:	re (scottl)
2005-10-06 18:12:06 +00:00
jhb
76e4abfa33 MFC: Stop using the '+' constraint modifier with memory operands in
inline assembly.  We still use it for register operands in various places.

Approved by:	re (kensmith)
2005-09-26 19:54:19 +00:00
jhb
277d7bc3b0 MFC: Add a memory barrier for PREWRITE operations to ensure all writes by
the CPU have drained before further writes to kick off the DMA operation.

Approved by:	re (kensmith)
2005-09-26 19:35:33 +00:00
wilko
2b39ecac0b Try to avoid crashes during kernel startup by limiting the # of EISA
slots to probe.  Problems have been reported in this area, lets hope
this  bandaid helps.

	!! Owners of EISA-equipped Alpha machines are requested to at least
	!! boot-test a 6-BETA build and report back to the Alpha list. Thanks!

Approved by: re (scottl)
Suggested by: ticso
2005-09-25 18:34:18 +00:00
scottl
bbfdfd22d0 Now that our showstopper list has shrunk, take another step closer to the
release and turn off kernel debugging.  Also turn off SMP on i386 and amd64
and add an SMP kernel config.

Approved by: re (implicit)
2005-09-18 03:37:59 +00:00
jhb
0ef1901fa9 MFC: Convert the atomic pointer operations to operate on uintptr_t rather
than void *.

Approved by:	re (kensmith)
2005-08-05 19:44:00 +00:00
jhb
0bceb288b2 Regenerate.
Approved by:	re (kensmith) (implicit)
2005-07-20 17:43:53 +00:00
jhb
b4aa604964 MFC: Sync up the MP safe flags of the compat ABIs with the master list and
mark known-safe ABI syscall wrappers as MP safe.

Approved by:	re (kensmith)
2005-07-20 17:42:15 +00:00
jhb
8d4a9d75bf MFC: Add 'sysent' target.
Approved by:	re (kensmith)
2005-07-18 19:54:49 +00:00
kensmith
b347cb6eac MFC addition of the COMPAT_FREEBSD5 option. Specific versions
being MFCed:

> Path                          Revision
> src/sys/alpha/conf/GENERIC    1.187
> src/sys/amd64/conf/GENERIC    1.440
> src/sys/i386/conf/GENERIC     1.430
> src/sys/ia64/conf/GENERIC     1.73
> src/sys/pc98/conf/GENERIC     1.270
> src/sys/powerpc/conf/GENERIC  1.49
> src/sys/sparc64/conf/GENERIC  1.97

Approved by:    re (scottl)
2005-07-18 12:23:42 +00:00
davidxu
bc8b519d0f Validate if the value written into {FS,GS}.base is a canonical
address, writting non-canonical address can cause kernel a panic,
by restricting base values to 0..VM_MAXUSER_ADDRESS, ensuring
only canonical values get written to the registers.

Reviewed by: peter, Josepha Koshy < joseph.koshy at gmail dot com >
Approved by: re (scottl)
2005-07-10 23:31:11 +00:00
jhb
febd45c7d3 Some cleanups and tweaks to some of the atomic.h files in preparation for
further changes and fixes in the future:
- Use aliases via macros rather than duplicated inlines wherever possible.
- Move all the aliases to the bottom of these files and the inline
  functions to the top.
- Add various comments.
- On alpha, drop atomic_{load_acq,store_rel}_{8,char,16,short}().
- On i386 and amd64, don't duplicate the extern declarations for functions
  in the two non-inline cases (KLD_MODULE and compiler doesn't do inlines),
  instead, consolidate those two cases.
- Some whitespace fixes.

Approved by:	re (scottl)
2005-07-09 12:38:53 +00:00
jhb
43340a2b9e - Remove spl's from osf1_usleep_thread().
- Fix the calculation of the 'slept' timeval returned by
  osf1_usleep_thread() which has been broken since 1.1.

Approved by:	re (scottl)
2005-07-07 19:16:30 +00:00
obrien
7af4f5af38 Add .cvsignore files just like in sys/<arch>/compiled, this keeps CVS from
questing kernel config files not in CVS.

Approved by:	re(kensmith)
2005-06-20 16:52:59 +00:00
pjd
be79126844 Do not allocate memory based on not-checked argument from userland.
It can be used to panic the kernel by giving too big value.
Fix it by moving allocation and size verification into kern_getfsstat().
This even simplifies kern_getfsstat() consumers, but destroys symmetry -
memory is allocated inside kern_getfsstat(), but has to be freed by the
caller.

Found by:	FreeBSD Kernel Stress Test Suite: http://www.holm.cc/stress/
Reported by:	Peter Holm <peter@holm.cc>
2005-06-11 14:58:20 +00:00
pjd
516791d26e Fix copy&paste bug. 2005-06-11 11:46:32 +00:00
alc
2d109601cb Introduce a procedure, pmap_page_init(), that initializes the
vm_page's machine-dependent fields.  Use this function in
vm_pageq_add_new_page() so that the vm_page's machine-dependent and
machine-independent fields are initialized at the same time.

Remove code from pmap_init() for initializing the vm_page's
machine-dependent fields.

Remove stale comments from pmap_init().

Eliminate the Boolean variable pmap_initialized from the alpha, amd64,
i386, and ia64 pmap implementations.  Its use is no longer required
because of the above changes and earlier changes that result in physical
memory that is being mapped at initialization time being mapped without
pv entries.

Tested by: cognet, kensmith, marcel
2005-06-10 03:33:36 +00:00
jkoshy
1d3209ab83 MFP4:
- Implement sampling modes and logging support in hwpmc(4).

- Separate MI and MD parts of hwpmc(4) and allow sharing of
  PMC implementations across different architectures.
  Add support for P4 (EMT64) style PMCs to the amd64 code.

- New pmcstat(8) options: -E (exit time counts) -W (counts
  every context switch), -R (print log file).

- pmc(3) API changes, improve our ability to keep ABI compatibility
  in the future.  Add more 'alias' names for commonly used events.

- bug fixes & documentation.
2005-06-09 19:45:09 +00:00
pjd
3af857a21a Avoid code duplication in serval places by introducing universal
kern_getfsstat() function.

Obtained from:	jhb
2005-06-09 17:44:46 +00:00
sobomax
3d445ed2f2 Regen after addition of linux_getpriority wrapper.
PR:		kern/81951
Submitted by:	Andriy Gapon <avg@icyb.net.ua>
MFC after:	1 week
2005-06-08 20:47:30 +00:00
sobomax
307c6bb149 Properly convert FreeBSD priority values into Linux values in the
getpriority(2) syscall.

PR:		kern/81951
Submitted by:	Andriy Gapon <avg@icyb.net.ua>
2005-06-08 20:41:28 +00:00
wilko
25345d0616 Until someone who owns the various TGA-based cards has time to fix the
driver it is better to not include the driver in GENERIC as it panics
the system on probing a TGA.
2005-06-06 10:53:10 +00:00
rwatson
5010364761 Rebuild generated system call definition files following the addition of
the audit event field to the syscalls.master file format.

Submitted by:	wsalamon
Obtained from:	TrustedBSD Project
2005-05-30 15:20:21 +00:00
rwatson
370e72b242 Introduce a new field in the syscalls.master file format to hold the
audit event identifier associated with each system call, which will
be stored by makesyscalls.sh in the sy_auevent field of struct sysent.
For now, default the audit identifier on all system calls to AUE_NULL,
but in the near future, other BSM event identifiers will be used.  The
mapping of system calls to event identifiers is many:one due to
multiple system calls that map to the same end functionality across
compatibility wrappers, ABI wrappers, etc.

Submitted by:	wsalamon
Obtained from:	TrustedBSD Project
2005-05-30 15:09:18 +00:00
marcel
bb14b518f7 Create nexus in configure_first() instead of in configure(). This
makes sure that sysinit tasks that run after configure_first(),
but before configure() have a nexus to hang devices off.
2005-05-29 23:44:22 +00:00
marcel
97c1c8498d o Call cninit_finish() in configure_final().
o  Remove unused and compiled-out code while here.
2005-05-29 22:42:27 +00:00
rwatson
fe0681ca34 White space normalization: use tabs instead of spaces before and after
the system call type field.
2005-05-29 21:06:56 +00:00
nyan
0fce92f5c4 Remove bus_{mem,p}io.h and related code for a micro-optimization on i386
and amd64.  The optimization is a trivial on recent machines.

Reviewed by:	-arch (imp, marcel, dfr)
2005-05-29 04:42:30 +00:00
nyan
23e73a4303 Change the spkr_set_pitch() function to a macro to fix low level profiling. 2005-05-28 13:40:27 +00:00
marcel
0c6200206d For ISA DMA maps, the chipsets scatter/gather feature is used. As
such, the segments pointer in the DMA tag will always be NULL. In
bus_dmamap_load(), temporarily point the segments pointer in the
DMA tag to a local variable so that we don't dereference a NULL
pointer. Reset the segments pointer to NULL after calling the
callback function with it.

PR: alpha/30486
MFC after: 1 week
2005-05-25 07:25:12 +00:00
pjd
cbc50a6637 Add missing jail.h include. 2005-05-22 22:23:37 +00:00
pjd
b963a259c1 This code seems to be dead, but anyway:
- Don't leak fsid.
- Don't forget about prison_check_mount().
- Don't use additional variable when there is no need to.
2005-05-22 22:20:46 +00:00
nyan
7d8da118c1 - Move bus dependent defines to {isa,cbus}_dmareg.h.
- Use isa/isareg.h rather than <arch>/isa/isa.h.

Tested on: i386, pc98
2005-05-14 10:14:56 +00:00
nyan
99f1b22233 - Move timerreg.h to <arch>/include and split i8253 specific defines into
i8253reg.h, and add some defines to control a speaker.
- Move PPI related defines from i386/isa/spkr.c into ppireg.h and use them.
- Move IO_{PPI,TIMER} defines into ppireg.h and timerreg.h respectively.
- Use isa/isareg.h rather than <arch>/isa/isa.h.

Tested on: i386, pc98
2005-05-14 09:10:02 +00:00
davidxu
2155a04472 Change cpu_set_kse_upcall to more generic style, so we can reuse it
in other codes. Add cpu_set_user_tls, use it to tweak user register
and setup user TLS. I ever wanted to merge it into cpu_set_kse_upcall,
but since cpu_set_kse_upcall is also used by M:N threads which may
not need this feature, so I wrote a separated cpu_set_user_tls.
2005-04-23 02:32:32 +00:00
marcel
4dd49b3b66 Add empty header (except of the multiple-inclusion protection) to
get hwpmc(4) to compile on this platform.
2005-04-20 18:44:53 +00:00
imp
b1662f9d0f Break out the definition of bus_space_{tag,handle}_t and a few other types
into _bus.h to help with name space polution from including all of bus.h.
In a few days, I'll commit changes to the MI code to take advantage of thse
sepration (after I've made sure that these changes don't break anything in
the main tree, I've tested in my trees, but you never know...).

Suggested by: bde (in 2002 or 2003 I think)
Reviewed in principle by: jhb
2005-04-18 21:45:34 +00:00
jhb
f9da7305b5 Use PCPU_LAZY_INC() for cnt.v_{intr,trap,syscalls} rather than atomic
operations in some places and simple non-per CPU math in others.
2005-04-12 23:18:54 +00:00
jhb
69abb3fc4e Fix another instance of TDP_OWEPREEMPT -> td_owepreempt.
Reported by:	tinderbox
2005-04-09 18:15:17 +00:00
jhb
41cadaa11e Divorce critical sections from spinlocks. Critical sections as denoted by
critical_enter() and critical_exit() are now solely a mechanism for
deferring kernel preemptions.  They no longer have any affect on
interrupts.  This means that standalone critical sections are now very
cheap as they are simply unlocked integer increments and decrements for the
common case.

Spin mutexes now use a separate KPI implemented in MD code: spinlock_enter()
and spinlock_exit().  This KPI is responsible for providing whatever MD
guarantees are needed to ensure that a thread holding a spin lock won't
be preempted by any other code that will try to lock the same lock.  For
now all archs continue to block interrupts in a "spinlock section" as they
did formerly in all critical sections.  Note that I've also taken this
opportunity to push a few things into MD code rather than MI.  For example,
critical_fork_exit() no longer exists.  Instead, MD code ensures that new
threads have the correct state when they are created.  Also, we no longer
try to fixup the idlethreads for APs in MI code.  Instead, each arch sets
the initial curthread and adjusts the state of the idle thread it borrows
in order to perform the initial context switch.

This change is largely a big NOP, but the cleaner separation it provides
will allow for more efficient alternative locking schemes in other parts
of the kernel (bare critical sections rather than per-CPU spin mutexes
for per-CPU data for example).

Reviewed by:	grehan, cognet, arch@, others
Tested on:	i386, alpha, sparc64, powerpc, arm, possibly more
2005-04-04 21:53:56 +00:00
jhb
a3c6b782c3 - Change the vm_mmap() function to accept an objtype_t parameter specifying
the type of object represented by the handle argument.
- Allow vm_mmap() to map device memory via cdev objects in addition to
  vnodes and anonymous memory.  Note that mmaping a cdev directly does not
  currently perform any MAC checks like mapping a vnode does.
- Unbreak the DRM getbufs ioctl by having it call vm_mmap() directly on the
  cdev the ioctl is acting on rather than trying to find a suitable vnode
  to map from.

Reviewed by:	alc, arch@
2005-04-01 20:00:11 +00:00
des
ed2180b0e1 MFi386 (1.610): let TUNABLE_ULONG_FETCH handle the suffix. 2005-04-01 10:59:13 +00:00
jhb
a9a1057e5e Use a custom version of copyinuio() to implement osf1_{read,write}v() via
kern_{read,write}v().
2005-03-31 22:56:14 +00:00