13 years agoExpose socket() function declaration for vkernel too.
Sepherosa Ziehau [Sun, 14 Jan 2007 14:19:57 +0000 (14:19 +0000)]
Expose socket() function declaration for vkernel too.

13 years ago* Add documentation for -s.
Sascha Wildner [Sun, 14 Jan 2007 10:43:32 +0000 (10:43 +0000)]
* Add documentation for -s.

* Move the configuaration examples to an EXAMPLES section and model the
  setup of the root image file after the setup instructions given in
  jail(8) (i.e., use 'installworld' and 'distribution' instead of
  cpdup'ing the host system's /). Add some lines for setting up simple
  /etc/fstab and /etc/ttys files.

* Add some references to SEE ALSO.

* Minor mdoc additions/cleanup

TODO: document -I

13 years agoSync names of fs modules with what's really there.
Sascha Wildner [Sun, 14 Jan 2007 09:43:22 +0000 (09:43 +0000)]
Sync names of fs modules with what's really there.

Reported-by: Jeremy C. Reed <reed@reedmedia.net>
13 years agoImplement a new signal delivery mechanism, SA_MAILBOX. If specified the
Matthew Dillon [Sun, 14 Jan 2007 07:59:09 +0000 (07:59 +0000)]
Implement a new signal delivery mechanism, SA_MAILBOX.  If specified the
sigaction structure's sa_mailbox pointer (field is unioned with sa_handler)
points to a location in user memory.  When the signal occurs, the location
is overwritten with the signal number and the next system call made (or
the current one running) will return EINTR.  NO SIGNAL STATE IS PUSHED,
NO SIGNAL VECTOR IS DISPATCHED.  This makes mailbox signaling very fast.

Userland can interlock against the mailbox simply by polling and clearing
the mailbox prior to doing a system call.  The mailbox signal will be
properly interlocked against the system call.  Userland does not need to
make any other system calls (no sigblock() or sigsetmask() calls) to
properly interlock delivery.  The kernel interrupts at most one system call
per signal delivered via this mechanism, even if the userland does not
clear the mailbox.

As of this implementatino, mailbox delivery can cause an extra 'false'
interruption of a system call.  system calls do not currently poll installed
mailboxes to deal with false hits.  Mailbox signaling is meant to be used
under tightly managed conditions.

Move the virtual kernel check from sendsig() to postsig().  Mailbox
delivery must do any virtual kernel swaps prior to posting a mailbox signal.

Adjust go_user() to take an interrupt frame instead of a trap frame.

Replace the sigblock() based idle loop interlock with a mailbox interlock.
Add mailbox checks to the go_user() vmspace_ctl() loop (currently a bit of
a hack).

13 years ago- Invoke ifnet_attach_event when open tap(4) device file, for which the
Sepherosa Ziehau [Sun, 14 Jan 2007 07:25:59 +0000 (07:25 +0000)]
- Invoke ifnet_attach_event when open tap(4) device file, for which the
  corresponding tap(4) interface have already been created
- Add missing rt_ifannouncemsg(IFAN_{ARRIVAL,DEPARTURE})
- Correct SIOCSIFFLAGS ifnet.if_ioctl() support for non-vmnet tap(4):
  Call ifnet.if_init(), i.e. tapifinit(), when IFF_UP is in ifnet.if_flags
  but IFF_RUNNING is missing

13 years agoWhitespace nits.
Peter Avalos [Sun, 14 Jan 2007 06:38:27 +0000 (06:38 +0000)]
Whitespace nits.

Correctly quote the output when showing the installed trap actions.

Fix an operator precedence style error.

Wrap lines at 80 columns.

Obtained-from:  FreeBSD

13 years agoOutput something reasonable for regular and expanded here-documents.
Peter Avalos [Sun, 14 Jan 2007 06:21:52 +0000 (06:21 +0000)]
Output something reasonable for regular and expanded here-documents.

Remove extra getenv() declaration.

Include missing headers to get prototypes.

Remove dead code which supported systems without O_APPEND, O_CREAT or SIGTSTP.

Obtained-from:  FreeBSD

13 years agoReplace home-grown dup2() implementation with actual dup2() calls.
Peter Avalos [Sun, 14 Jan 2007 05:48:08 +0000 (05:48 +0000)]
Replace home-grown dup2() implementation with actual dup2() calls.

Obtained-from:  FreeBSD

13 years agoDo not forget to increment the input line counter
Peter Avalos [Sun, 14 Jan 2007 05:39:22 +0000 (05:39 +0000)]
Do not forget to increment the input line counter
when reading a word spanning multiple lines.

Support \H, \h, \w, \W, \$ string expansion in the prompt.

Disallow empty condition parts of "if", "while" and "until" compound

Obtained-from:  FreeBSD

13 years agoReplace a home-grown printf() clone with a fwopen() wrapper around
Peter Avalos [Sun, 14 Jan 2007 05:12:40 +0000 (05:12 +0000)]
Replace a home-grown printf() clone with a fwopen() wrapper around
libc's vfprintf() that writes to a `struct output' instead of a file.

Print empty quotes ('') when an empty string is passed to outqstr().
This makes a difference for the trap builtin, where after "trap '' 0" we
printed "trap -- quit".  This is wrong, because an empty action means to reset
the action to the default.  A side effect of this commit is that empty
variables are now printed as "variable=''" instead of just "variable=".

Obtained-from:  FreeBSD

13 years agoInclude disabled options in the output of 'set +o'. POSIX says the output of
Peter Avalos [Sun, 14 Jan 2007 04:41:32 +0000 (04:41 +0000)]
Include disabled options in the output of 'set +o'.  POSIX says the output of
set +o can be used to reload previous settings, for this to work disabled
options must be printed as well or otherwise options that were set in the mean
time won't be turned off.

Change /bin/sh so *it* implements the processing needed for scripts to
work as expected when they have a "shebang line" of:

     #!/bin/sh -- # -*- perl -*- -p

Obtained-from:  FreeBSD

13 years agoInvoke ifnet_detach_event when close a tap(4) device file. tapclose()
Sepherosa Ziehau [Sun, 14 Jan 2007 04:02:58 +0000 (04:02 +0000)]
Invoke ifnet_detach_event when close a tap(4) device file.  tapclose()
looks much more like an network interface destruction routine than an
network interface stopping routine.

13 years agoProtect malloc, realloc and free calls with INT{ON,OFF} directly in chkalloc,
Peter Avalos [Sun, 14 Jan 2007 03:59:57 +0000 (03:59 +0000)]
Protect malloc, realloc and free calls with INT{ON,OFF} directly in chkalloc,
ckrealloc and ckfree (added), respectively.  sh jumps out of the signal handler
using longjmp which is obviously a bad idea during malloc calls.

Use the ALIGN macro from <sys/param.h> instead of defining our own
version in machdep.h. Delete machdep.h.

Obtained-from:  FreeBSD

13 years agoThe FP subsystem might not work properly when a vkernel is run inside
Matthew Dillon [Sun, 14 Jan 2007 00:01:08 +0000 (00:01 +0000)]
The FP subsystem might not work properly when a vkernel is run inside
a vkernel, but don't explicitly panic.

Move an madvise() to after a mmap() error check.

Fix a vkernel-on-vkernel bug in pmap_zero_page().  The VPTE was being
given write access without read access and this confused the parent
virtual kernel.

13 years agoAllow VKERNEL builds to build certain non-hardware disk modules as well.
Matthew Dillon [Sat, 13 Jan 2007 23:57:04 +0000 (23:57 +0000)]
Allow VKERNEL builds to build certain non-hardware disk modules as well.

13 years agoIssue an error when . (dot) is invoked without a filename.
Peter Avalos [Sat, 13 Jan 2007 23:36:14 +0000 (23:36 +0000)]
Issue an error when . (dot) is invoked without a filename.

Initialize PWD early on (don't expect it to be inherited from the
environment or set it only when changing directories with cd)

Remove some kind of profiling support that required the 4.2BSD monitor()
function in libc.

Obtained-from:  FreeBSD

13 years agoInclude the VN device by default.
Matthew Dillon [Sat, 13 Jan 2007 23:09:17 +0000 (23:09 +0000)]
Include the VN device by default.

13 years agoRemove some white space at EOL.
Peter Avalos [Sat, 13 Jan 2007 22:39:30 +0000 (22:39 +0000)]
Remove some white space at EOL.

Protect a setmode call with INT{ON,OFF} as it calls malloc internally.

Fix the error message if the mask that is passed to umask -S contains

Remove dead code.  Inspection of the control and data flow showed that
variable "backslash" is always false (0) when the "if"-expression is
evaluated, hence the whole block is effectively dead code.
Additionally, the skipping of characters after a backslash is already
performed correctly a few lines above, so this code is also not
needed at all.

- Don't use quad_t when we really mean rlim_t.
- Cast rlim_t to intmax_t when printing it.

Callers of error() don't need to supply a program name prefix in the
error message. Stops ulimit giving error messages like "ulimit: ulimit: xyz".

Obtained-from:  FreeBSD

13 years agoAdd options ACPI_QUIRK_VMWARE to LINT.
Thomas E. Spanjaard [Sat, 13 Jan 2007 22:26:54 +0000 (22:26 +0000)]

13 years agoEnable the ACPI quirks kernel environment variable setting, and add a
Thomas E. Spanjaard [Sat, 13 Jan 2007 21:58:11 +0000 (21:58 +0000)]
Enable the ACPI quirks kernel environment variable setting, and add a
quirks candidate: the VMware ACPI-fast24 timer. The latter quirk setting is
guarded by a kernel config file option, options ACPI_QUIRK_VMWARE. It's
commented out in the GENERIC config file by default.

- port FreeBSD's more extensive ACPI quirks table support, which
  allows for more specifics to discern between ACPI

13 years agoAdd support for a dynamic environment array in the kernel.
Thomas E. Spanjaard [Sat, 13 Jan 2007 21:33:30 +0000 (21:33 +0000)]
Add support for a dynamic environment array in the kernel.

- implement a sysctl handler for the dynamic array;
- write a manual page.

Adapted-from: FreeBSD

13 years agoRemove some white space at EOL.
Peter Avalos [Sat, 13 Jan 2007 21:27:45 +0000 (21:27 +0000)]
Remove some white space at EOL.

Print pointers with %p rather than casting them to long.

Use the %t format modifier to print differences between pointers.

Obtained-from:  FreeBSD

13 years agoPull in a few bits from FreeBSD. Add a structure size field and floating
Matthew Dillon [Sat, 13 Jan 2007 21:15:57 +0000 (21:15 +0000)]
Pull in a few bits from FreeBSD.  Add a structure size field and floating
point management fields to the signal context and mcontext/ucontext.  These
fields will allow us to optimize the floating point save/restore in the

13 years agoAdd the POSIX option -p to the jobs builtin command. It prints the PID of the
Peter Avalos [Sat, 13 Jan 2007 20:33:47 +0000 (20:33 +0000)]
Add the POSIX option -p to the jobs builtin command.  It prints the PID of the
process leader for each job.  Now the last specified option for the output
format (-l, -p or -s) wins, previously -s trumped -l.

Obtained-from:  FreeBSD

13 years agoCheck the buffer size when copying the line returned by el_gets() into our
Peter Avalos [Sat, 13 Jan 2007 20:10:26 +0000 (20:10 +0000)]
Check the buffer size when copying the line returned by el_gets() into our
own buffer.  Interactively typing in long lines (>1023 characters)
previously overflowed the buffer.

Obtained-from:  FreeBSD

13 years agoFix typo and remove unneeded comments.
Peter Avalos [Sat, 13 Jan 2007 19:47:55 +0000 (19:47 +0000)]
Fix typo and remove unneeded comments.

Adding an entry to the history with H_ENTER moves libedit's internal
history cursor. Reset the cursor after adding the entry to the history
when doing ``fc -s'' so the output is correct.

More libedit adjustments.

Obtained-from:  FreeBSD

13 years agoSetting 0 to c_cc[] member doesn't disable the special character function,
YONETANI Tomokazu [Sat, 13 Jan 2007 17:06:19 +0000 (17:06 +0000)]
Setting 0 to c_cc[] member doesn't disable the special character function,

Hint-by: Matt
13 years agoUpdate to gcc-3.4.6
Simon Schubert [Sat, 13 Jan 2007 16:32:16 +0000 (16:32 +0000)]
Update to gcc-3.4.6

13 years agoMerge from vendor branch GCC:
Simon Schubert [Sat, 13 Jan 2007 16:32:16 +0000 (16:32 +0000)]
Merge from vendor branch GCC:
Update to gcc-3.4.6

13 years agoUpdate to gcc-3.4.6
Simon Schubert [Sat, 13 Jan 2007 16:32:16 +0000 (16:32 +0000)]
Update to gcc-3.4.6

13 years agoForgotten in previous commit: add 'verbose' bit definitions for the VMX and
Thomas E. Spanjaard [Fri, 12 Jan 2007 23:12:59 +0000 (23:12 +0000)]
Forgotten in previous commit: add 'verbose' bit definitions for the VMX and
SSSE3 bits in cpu_features2.

13 years agoPrint names for two more bits in cpu_features2: Supplemental SSE3, and I
Thomas E. Spanjaard [Fri, 12 Jan 2007 22:59:16 +0000 (22:59 +0000)]
Print names for two more bits in cpu_features2: Supplemental SSE3, and I
encountered a set bit 15 in the wild. Treat it the same as bit 2.

13 years agoFix the recently committed (and described) page writability nerf. The real
Matthew Dillon [Fri, 12 Jan 2007 22:12:53 +0000 (22:12 +0000)]
Fix the recently committed (and described) page writability nerf.  The real
kernel was unconditionally mapping writable pages read-only on read faults
in order to be able to take another fault on a write attempt.  This was needed
for early virtual kernel support in order to set the Modify bit in the
virtualized page table, but was being applied to ALL mappings rather then
just those installed by the virtual kernel.

Now the real kernel only does this for virtual kernel mappings.  Additionally,
the real kernel no longer makes the page read-only when clearing the Modify
bit in the real page table (in order to rearm the write fault).  When this
case occurs VPTE_M has already been set in the virtual page table and no
re-fault is required.

The virtual kernel now only needs to invalidate the real kernel's page
mapping when clearing the virtualized Modify bit in the virtual page table
(VPTE_M), in order to rearm the real kernel's write fault so it can detect
future modifications via the virtualized Modify bit.  Also, the virtual kernel
no longer needs to install read-only pages to detect the write fault.  This
allows the real kernel to do ALL the work required to handle VPTE_M and
make the actual page writable.  This greatly reduces the number of real
page faults that occur and greatly reduces the number of page faults which
have to be passed through to the virtual kernel.

This fix reduces fork() overhead for processes running under a virtual
kernel by 70%, from around 2100uS to around 650uS.

13 years agoAdd single-user mode boot option (-s).
Matthew Dillon [Fri, 12 Jan 2007 18:31:18 +0000 (18:31 +0000)]
Add single-user mode boot option (-s).

Submitted-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx>
13 years agoAdd missing bzero() during low boot after malloc().
Matthew Dillon [Fri, 12 Jan 2007 18:27:09 +0000 (18:27 +0000)]
Add missing bzero() during low boot after malloc().

Reported-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx>
13 years agoSet kernel_vm_end to virtual_start instead of virtual_end so it can be used
Matthew Dillon [Fri, 12 Jan 2007 18:03:48 +0000 (18:03 +0000)]
Set kernel_vm_end to virtual_start instead of virtual_end so it can be used
to detemine how much KVM has been reserved so far (so vm.kvm_free works).

As part of the same deal, redo pmap_growkernel() to just increase
kernel_vm_end up to its limit, instead of just panicing.

Remove in incorrect NULLing out of pmap->pm_pdir.  This was causing the
kernel_map to grow forever until it ran out of space and the system paniced.

13 years agoAdjust the gdb patch to account for the new register structure.
Matthew Dillon [Fri, 12 Jan 2007 07:17:56 +0000 (07:17 +0000)]
Adjust the gdb patch to account for the new register structure.

13 years agoDisable sshd on the Live CD. This just takes time generating the
Simon Schubert [Fri, 12 Jan 2007 06:56:24 +0000 (06:56 +0000)]
Disable sshd on the Live CD.  This just takes time generating the
keys, and doesn't provide any benefit.  If you want to log in from
remote, you still have to allow root logins for sshd.

13 years agoMisc cleanups.
Matthew Dillon [Fri, 12 Jan 2007 06:07:29 +0000 (06:07 +0000)]
Misc cleanups.

13 years agoFix a number of places where the kernel assumed it could directly access
Matthew Dillon [Fri, 12 Jan 2007 06:06:58 +0000 (06:06 +0000)]
Fix a number of places where the kernel assumed it could directly access
user memory.  Primarily the core dump code.

13 years agoAdd missing link options to export global symbols to the _DYNAMIC section,
Matthew Dillon [Fri, 12 Jan 2007 03:05:49 +0000 (03:05 +0000)]
Add missing link options to export global symbols to the _DYNAMIC section,
allowing the kernel namelist functions to operate.  For now just make
certain static variables global instead of using linker magic to export
static variables.

Add infrastructure to allow out of band kernel memory to be accessed.  The
virtual kernel's memory map does not include the virtual kernel executable
or data areas.

vmstat, systat, pstat, and netstat now work with virtual kernels.

13 years agoRemove unused SWI's.
Matthew Dillon [Thu, 11 Jan 2007 23:23:57 +0000 (23:23 +0000)]
Remove unused SWI's.

13 years agoReplace remaining uses of vm_fault_quick() with vm_fault_page_quick().
Matthew Dillon [Thu, 11 Jan 2007 20:53:42 +0000 (20:53 +0000)]
Replace remaining uses of vm_fault_quick() with vm_fault_page_quick().
Do not directly access userland virtual addresses in the kernel UMTX code.

13 years agoRemove DEBUG_VFS_LOCKS which is not used anymore.
Sascha Wildner [Thu, 11 Jan 2007 17:16:02 +0000 (17:16 +0000)]
Remove DEBUG_VFS_LOCKS which is not used anymore.

13 years agoMajor pmap update. Note also that this commit temporarily nerfs performance
Matthew Dillon [Thu, 11 Jan 2007 10:39:41 +0000 (10:39 +0000)]
Major pmap update.  Note also that this commit temporarily nerfs performance
because the virtual kernel support is being applied globally instead of just
to virtual page tables.  This will be fixed in a followup commit.

13 years agoWhen removing a page directory, tell the real kernel to invalidate the
Matthew Dillon [Thu, 11 Jan 2007 10:25:52 +0000 (10:25 +0000)]
When removing a page directory, tell the real kernel to invalidate the
related segment.  This may not be necessary and can be removed later after

The virtual kernel's pmap_track_modified() is dealing with independant
address spaces, don't return false hits on non-kernel pmaps.

When clearing the Modify bit, also clear the write bit to force a fault.
We have no other means of detecting when a page is modified.  Note that
this may not be necessary in the vkernel implementation once the real
kernel implementation is fixed to properly set the Modify bit (by doing the
same thing).

Invalidate the real kernel's pmap when clearing either the Write bit or
the Modify bit, instead of just the write bit, and clear both bits when
clearing either, again in order to force a page fault to detect page

Code cleanup - remove degenerate cases.  e.g. pmap_changebit() was only
ever used to clear bits, rip out the set/clear functionality and just
make it pmap_clearbit().

13 years agoFix a bug vm_fault_page(). PG_MAPPED was not getting set, causing the
Matthew Dillon [Thu, 11 Jan 2007 10:15:21 +0000 (10:15 +0000)]
Fix a bug vm_fault_page().  PG_MAPPED was not getting set, causing the
system to fail to remove pmap entries related to a VM page when reusing
the VM page.

General cleaning of vm_fault*() routines.  These routines now expect all
appropriate VM_PROT_* flags to be specified instead of just one.  Also
clean up the VM_FAULT_* flags.

Remove VM_FAULT_HOLD - it is no longer used.  vm_fault_page() handles the
functionality in a far cleaner fashion then vm_fault().

13 years agoProperly block SIGALARM and disable interrupts (i.e. signals) in init
Matthew Dillon [Thu, 11 Jan 2007 10:08:25 +0000 (10:08 +0000)]
Properly block SIGALARM and disable interrupts (i.e. signals) in init
so clock reloads occuring prior to the installation of the clock interrupt
(i.e. itimer) do not cause the program to abort.

13 years agoUnbreak build by moving the include up.
Simon Schubert [Thu, 11 Jan 2007 02:49:56 +0000 (02:49 +0000)]
Unbreak build by moving the include up.
Make is a horrible tool.

Noticed-by: y0netan1@, snapshot building, et al.
13 years agoOpen the root disk with O_DIRECT. We do not want both the real kernel and
Matthew Dillon [Thu, 11 Jan 2007 02:46:48 +0000 (02:46 +0000)]
Open the root disk with O_DIRECT.  We do not want both the real kernel and
the virtual kernel caching the 'disk' data.  We just want the virtual kernel
to cache the data so memory resource use is limited to the 'physical' memory
specified when starting up the virtual kernel.

13 years agoSubstitute a phony target with a cookie, thus not requiring the
Simon Schubert [Wed, 10 Jan 2007 16:41:37 +0000 (16:41 +0000)]
Substitute a phony target with a cookie, thus not requiring the
assembler symbols to be generated on every kernel rebuild.

13 years agoRemove old zoneinfo files.
Sascha Wildner [Wed, 10 Jan 2007 15:55:44 +0000 (15:55 +0000)]
Remove old zoneinfo files.

13 years ago[committed on behalf of sephe]
Sascha Wildner [Wed, 10 Jan 2007 13:33:23 +0000 (13:33 +0000)]
[committed on behalf of sephe]

- 'Correctly' fake an ethernet address for tap(4).
- Add vke(4) for virtual kernel.  It uses tap(4) as backend.  The RX
  interrupt is currently faked with callout.
  Idea-from: TGEN@ and corecode@

13 years agoAdd support for parsing MCFG tables.
Jeffrey Hsu [Wed, 10 Jan 2007 12:23:23 +0000 (12:23 +0000)]
Add support for parsing MCFG tables.

Obtained from: FreeBSD (scottl)

13 years agoSync up to FreeBSD rev 1.23:
Jeffrey Hsu [Wed, 10 Jan 2007 11:54:45 +0000 (11:54 +0000)]
Sync up to FreeBSD rev 1.23:

 date: 2005-02-14 08:32:32 -0800;  author: njl;  state: Exp;  lines: +2 -1;
 Note addition of MCFG support.

13 years agoMerge FreeBSD revs 1.20 through 1.21: update list of supported tables.
Jeffrey Hsu [Wed, 10 Jan 2007 11:50:33 +0000 (11:50 +0000)]
Merge FreeBSD revs 1.20 through 1.21:  update list of supported tables.

13 years agoMake the size of the pmap structure the same for both pc32 and vkernel
Matthew Dillon [Wed, 10 Jan 2007 09:37:52 +0000 (09:37 +0000)]
Make the size of the pmap structure the same for both pc32 and vkernel
builds, so utility binaries like 'ps' can be shared.

13 years agoJust bump version numbers due to null offsetting changes from FreeBSD:
Jeffrey Hsu [Wed, 10 Jan 2007 08:44:30 +0000 (08:44 +0000)]
Just bump version numbers due to null offsetting changes from FreeBSD:

 Add the -s flag to make dumping SSDTs optional (disabled by default).

 Back out the -s flag and go back to dumping the SSDTs by default.

13 years agoAdd some comments. Same as FreeBSD revs 1.28 through 1.30.
Jeffrey Hsu [Wed, 10 Jan 2007 08:41:18 +0000 (08:41 +0000)]
Add some comments.  Same as FreeBSD revs 1.28 through 1.30.

13 years agoTell the real kernel not to sync the file that backs a virtual kernel's
Matthew Dillon [Wed, 10 Jan 2007 08:08:17 +0000 (08:08 +0000)]
Tell the real kernel not to sync the file that backs a virtual kernel's
'physical' memory.

13 years agoHave vectorctl silently succeed to remove a run-time warning.
Matthew Dillon [Wed, 10 Jan 2007 08:07:17 +0000 (08:07 +0000)]
Have vectorctl silently succeed to remove a run-time warning.

13 years agoSame as FreeBSD rev 1.19:
Jeffrey Hsu [Wed, 10 Jan 2007 07:51:24 +0000 (07:51 +0000)]
Same as FreeBSD rev 1.19:

 date: 2004-08-17 22:50:32 -0700;  author: njl;  state: Exp;  lines: +2 -5;
 Update man page for supported table types.

13 years agoFix collision with variable named 'errno'.
Matthew Dillon [Wed, 10 Jan 2007 07:44:02 +0000 (07:44 +0000)]
Fix collision with variable named 'errno'.

13 years agoSame as FreeBSD rev 1.27:
Jeffrey Hsu [Wed, 10 Jan 2007 07:37:44 +0000 (07:37 +0000)]
Same as FreeBSD rev 1.27:

 date: 2004-08-17 22:56:07 -0700;  author: njl;  state: Exp;  lines: +5 -2;
 When one entry in the RSDT is corrupted, just skip it instead of bailing out.
 This gets us the info we need on systems which have proprietary tables that
 don't match the standard.  For instance, an AMI system has a table of type
 "OEMB" with an invalid checksum.

 Tested by:      Maxim Maximov <mcsi_at_mcsi.pp.ru>

13 years agoAdd support for SSDT tables.
Jeffrey Hsu [Wed, 10 Jan 2007 07:23:49 +0000 (07:23 +0000)]
Add support for SSDT tables.

Same as FreeBSD

 revision 1.26
 date: 2004-08-13 15:59:09 -0700;  author: marcel;  state: Exp;  lines: +44 -10;
 branches:  1.26.2;
 Add support for SSDT tables. Dumping or disassembling the DSDT will
 now include the contents if any SSDT table as well. This makes use
 of the property that one can concatenate the body of SSDT tables to
 the DSDT, updating the DSDT header (length and checksum) and end up
 with a larger and valid DSDT table. Hence, this also works with -f.

 Reviewed by: njl@

 revision 1.18
 date: 2004-08-16 13:33:20 -0700;  author: marcel;  state: Exp;  lines: +4 -2;
 branches:  1.18.2;
 We now handle SSDT tables. Remove a reference from the BUGS section
 and explicitly mention SSDT when we talk about the DSDT so that people
 don't have to guess whether it includes the SSDT.
 While here, touch date.

 Pointed out by: le@

 revision 1.9
 date: 2004-08-13 15:59:09 -0700;  author: marcel;  state: Exp;  lines: +10 -7;
 branches:  1.9.2;
 Add support for SSDT tables. Dumping or disassembling the DSDT will
 now include the contents if any SSDT table as well. This makes use
 of the property that one can concatenate the body of SSDT tables to
 the DSDT, updating the DSDT header (length and checksum) and end up
 with a larger and valid DSDT table. Hence, this also works with -f.

 Reviewed by: njl@

 revision 1.17
 date: 2004-08-13 15:59:09 -0700;  author: marcel;  state: Exp;  lines: +4 -3;
 Add support for SSDT tables. Dumping or disassembling the DSDT will
 now include the contents if any SSDT table as well. This makes use
 of the property that one can concatenate the body of SSDT tables to
 the DSDT, updating the DSDT header (length and checksum) and end up
 with a larger and valid DSDT table. Hence, this also works with -f.

 Reviewed by: njl@

13 years agoUse SEEK_SET instead of magic constant.
Simon Schubert [Wed, 10 Jan 2007 03:04:28 +0000 (03:04 +0000)]
Use SEEK_SET instead of magic constant.

13 years agoGet floating point working in virtual kernels. Add a feature that allows
Matthew Dillon [Tue, 9 Jan 2007 23:34:06 +0000 (23:34 +0000)]
Get floating point working in virtual kernels.  Add a feature that allows
the virtual kernel to request that the real kernel return a T_DNA fault
if an emulated user context attempts to use the FP unit.

13 years agoAdd 'cd9660:acd0' and 'cd9660:acd1' to cdrom_rootdevnames so a root mount
Thomas E. Spanjaard [Tue, 9 Jan 2007 22:36:00 +0000 (22:36 +0000)]
Add 'cd9660:acd0' and 'cd9660:acd1' to cdrom_rootdevnames so a root mount
of RB_CDROM can succeed on NATA.

13 years agoAdd a temporary fix to ata_interrupt() to ignore weird interrupts seen on
Thomas E. Spanjaard [Tue, 9 Jan 2007 21:17:00 +0000 (21:17 +0000)]
Add a temporary fix to ata_interrupt() to ignore weird interrupts seen on
SMP+ATAPI+DMA. For some reason, the ATAPI device asserts INTRQ while it's
otherwise completely ready to fulfill the request. DRQ is set in the status
register, and no matter how I read the specs, this just should never
happen. Is this actually a race condition? I have no idea :(. Ignoring the
interrupt, however, does not seem to produce adverse results (tested with
a DragonFlyBSD livecd with SMP kernel).

13 years agoBail out of acd_open() when we're called with a cdev_t that wasn't created
Thomas E. Spanjaard [Tue, 9 Jan 2007 20:56:16 +0000 (20:56 +0000)]
Bail out of acd_open() when we're called with a cdev_t that wasn't created
by us. This happened when e.g. booting from cd; 'acd0c' would then be
resolved to minor 2 instead of the minor 0 we create in acd_attach(). If
one, instead of booting the kernel through, exits to the loader prompt from
the bootloader, then issues `unload` and `load kernel`, then `boot`, this
problem wouldn't show up. My guess is, somewhere, somehow, the bootloader
is mucking about in our cdev storeroom. I haven't yet found where this

13 years agoName the virtual kernel disk device 'vkd' instead of 'vd'.
Matthew Dillon [Tue, 9 Jan 2007 18:26:59 +0000 (18:26 +0000)]
Name the virtual kernel disk device 'vkd' instead of 'vd'.

Suggested-by: Sascha Wildner <saw@online.de>
13 years agoFix 'make upgrade'.
Sascha Wildner [Tue, 9 Jan 2007 17:04:01 +0000 (17:04 +0000)]
Fix 'make upgrade'.

13 years agoInstall tap headers.
Simon Schubert [Tue, 9 Jan 2007 14:22:17 +0000 (14:22 +0000)]
Install tap headers.

Noticed-by: sephe@
13 years agoSync zoneinfo database with tzdata2007a from elsie.
Sascha Wildner [Tue, 9 Jan 2007 09:56:27 +0000 (09:56 +0000)]
Sync zoneinfo database with tzdata2007a from elsie.

africa:         8.5  -> 8.7
australasia:    8.4  -> 8.5
backward:       8.2  -> 8.3
europe:         8.6  -> 8.7
northamerica:   8.10 -> 8.11
southamerica:   8.6  -> 8.8
zone.tab:       8.6  -> 8.8

From Paul Eggert's comments:

* Changes affecting future time stamps.

  - The Bahamas also observe the new US DST rules this year.
    (Thanks to Sue Williams for this.)

* Changes affecting TZ names, to reflect typical English practice better.
  The old names are still supported, in the 'backward' file.

  - Rename Africa/Asmera to Africa/Asmara.

  - Rename Atlantic/Faeroe to Atlantic/Faroe.

* A new zone Australia/Eucla, covering the Eucla area.  (Thanks to
  Alex Livingston for this.)

* Changes affecting old time stamps.

  - The 1982 transition for Pacific/Easter occurred Mar 13, not Jan 18.
    Also, the pre-1932 time stamps are now labeled EMT, not MMT, since
    they are not Mataveri Mean Time.  (Thanks to Jesper Norgaard Welen
    for this.)

13 years agoRemove old MLINKS.
Sascha Wildner [Tue, 9 Jan 2007 08:28:10 +0000 (08:28 +0000)]
Remove old MLINKS.

13 years agoA virtual kernel running another virtual kernel running an emulated process
Matthew Dillon [Tue, 9 Jan 2007 07:23:03 +0000 (07:23 +0000)]
A virtual kernel running another virtual kernel running an emulated process
context must pop back into its virtual kernel context before posting
any signal.  Correct a number of cases that were not being handled.

Clear the signal mask before starting the emulated user process context

Fix a reinit bug in the console callout polling code that was causing
a lockup.

13 years agoA virtual kernel running an emulated process context must pop back into
Matthew Dillon [Tue, 9 Jan 2007 07:03:32 +0000 (07:03 +0000)]
A virtual kernel running an emulated process context must pop back into
its virtual kernel context before posting any signal.  Correct a number
of cases that were not being handled.

13 years agoFix two incorrect sigblock() calls.
Matthew Dillon [Tue, 9 Jan 2007 06:04:59 +0000 (06:04 +0000)]
Fix two incorrect sigblock() calls.

13 years agoUse our interrupt infrastructure to handle the clock interrupt, but
Matthew Dillon [Tue, 9 Jan 2007 00:49:03 +0000 (00:49 +0000)]
Use our interrupt infrastructure to handle the clock interrupt, but
for the moment we have no common 'hard interrupt' (i.e. signal) core
so do the critical section check manually.

13 years agoDisable terminal control characters while the virtual kernel is running,
Matthew Dillon [Tue, 9 Jan 2007 00:20:20 +0000 (00:20 +0000)]
Disable terminal control characters while the virtual kernel is running,
so typing ^C, ^Z, etc on the console gets fed through to the virtual

Enable terminal control characters when the virtual kernel is in DDB,
so e.g. a ^C while it is in DDB will kill the virtual kernel.

The QUIT signal (^\) is left enabled throughout and will force the virtual
kernel into its DDB.

13 years agoAdd a missing pmap_enter() in vm_fault_page(). If a write fault does a COW
Matthew Dillon [Mon, 8 Jan 2007 23:41:31 +0000 (23:41 +0000)]
Add a missing pmap_enter() in vm_fault_page().  If a write fault does a COW
and must replace a read-only page, the pmap must be updated so the process
sees the new page.

13 years agoRename the following special extended I/O system calls. Only libc, libc_r,
Matthew Dillon [Mon, 8 Jan 2007 21:41:59 +0000 (21:41 +0000)]
Rename the following special extended I/O system calls.  Only libc, libc_r,
and VKERNEL are currently known to use these calls so the rename should have
no major effects.

Fix broken prototypes in unistd.h.

__accept    ->      extaccept
__connect   ->      extconnect
__pread     ->      extpread
__preadv    ->      extpreadv
__pwrite    ->      extpwrite
__pwritev   ->      extpwritev

Broken-Prototypes-Reported-by: Joe Talbott <josepht@cstone.net>
13 years agoFix the obscure at(1) permission problem.
Simon Schubert [Mon, 8 Jan 2007 21:32:57 +0000 (21:32 +0000)]
Fix the obscure at(1) permission problem.

change_[er]uid() both use cratom(), however their consumers happened to cache
the original cred in a variable.  If the cred happened to be shared before
(for example due to an open(2)), a conditional lateron would still reference
the old cred instead of the new one, which was instanciated in change_[er]uid.

Fix this by returning the new cred from change_[er]uid and using this in
subsequent conditionals.

DragonFly-bug: http://bugs.dragonflybsd.org/issue509

13 years agoInstall gdb docs.
Simon Schubert [Mon, 8 Jan 2007 20:05:42 +0000 (20:05 +0000)]
Install gdb docs.

13 years agoAdd the virtual kernel's virtual disk device to the fray (vd*).
Matthew Dillon [Mon, 8 Jan 2007 19:48:35 +0000 (19:48 +0000)]
Add the virtual kernel's virtual disk device to the fray (vd*).

13 years agoUse CBREAK mode for the console.
Matthew Dillon [Mon, 8 Jan 2007 19:45:39 +0000 (19:45 +0000)]
Use CBREAK mode for the console.

Adjust code for new vm_fault_page*() semantics (it now marks the page as
referenced and dirties it automatically so the caller doesn't have to).

Fix a VPTE_W or VPTE_WIRED snafu.

Add additional VPTE_ bit definitions.

13 years agoRewrite vmapbuf() to use vm_fault_page_quick() instead of vm_fault_quick().
Matthew Dillon [Mon, 8 Jan 2007 19:42:24 +0000 (19:42 +0000)]
Rewrite vmapbuf() to use vm_fault_page_quick() instead of vm_fault_quick().
Overhead is slightly increased (until we can optimize vm_fault_page_quick()),
but the code is greatly simplified.

13 years agoImplement vm_fault_page_quick(), which will soon be replacing
Matthew Dillon [Mon, 8 Jan 2007 19:41:01 +0000 (19:41 +0000)]
Implement vm_fault_page_quick(), which will soon be replacing
vm_fault_quick().  vm_fault_quick() does not hold the underlying page
in any way and is not SMP friendly.  It also uses architecture-specific
tricks to force the page into a pmap which do not work with the VKERNEL.

13 years agoMake libc prototypes available to kernel builds
Matthew Dillon [Mon, 8 Jan 2007 19:29:23 +0000 (19:29 +0000)]
Make libc prototypes available to kernel builds

13 years agoMake more libc prototypes available to _KERNEL builds.
Matthew Dillon [Mon, 8 Jan 2007 17:19:26 +0000 (17:19 +0000)]
Make more libc prototypes available to _KERNEL builds.

13 years agoAdd missing header file.
Matthew Dillon [Mon, 8 Jan 2007 16:34:10 +0000 (16:34 +0000)]
Add missing header file.

Reported-by: Sascha Wildner <saw@online.de>
13 years agoWhen removing a page directory from a page map, the KVA representing
Matthew Dillon [Mon, 8 Jan 2007 16:03:25 +0000 (16:03 +0000)]
When removing a page directory from a page map, the KVA representing
the page table page in the self-mapping must also be invalidated.

13 years ago[committed on behalf of sephe]
Sascha Wildner [Mon, 8 Jan 2007 12:21:50 +0000 (12:21 +0000)]
[committed on behalf of sephe]

Don't call device_busy() when /dev/psmN is opened.  DS_BUSY is used to
prevent recursive bus scanning on DragonFly.  Strip the device_unbusy()
in psmclose().
This should make module loading after system startup work on some system.

Explained-by: dillon@
13 years ago[committed on behalf of sephe]
Sascha Wildner [Mon, 8 Jan 2007 12:15:27 +0000 (12:15 +0000)]
[committed on behalf of sephe]

- Add {TAILQ,STAILQ}_CONCAT() macros
- Add comment about *_FOREACH_MUTABLE()
- Sync ath(4) with FreeBSD (sam@freebsd.org):
  o  Add/Correct some debug information.
  o  Add more statistics.
  o  Receive control frames in monitor mode.
  o  Close race in handling mcast traffic when operating as an ap with
     stations in power save: add a new q where mcast frames are stashed
     and on beacon update (at DTIM) move frames from the mcast q to the
     cabq and start it.  This ensures the cabq is only manipulated in
     one place.
  o  Correct the type of ath_descdma.dd_desc_len
  o  Correct max segement size when creating DMA tag

13 years agoAdd a vkernel(7) manpage which I hacked together from Matt's comments.
Sascha Wildner [Mon, 8 Jan 2007 08:55:44 +0000 (08:55 +0000)]
Add a vkernel(7) manpage which I hacked together from Matt's comments.

13 years agoThe signal return code was trying to access user mode addresses
Matthew Dillon [Mon, 8 Jan 2007 08:17:17 +0000 (08:17 +0000)]
The signal return code was trying to access user mode addresses
directly, which doesn't work when the user process is in an entirely
different vmspace.  Use copyin() instead.

Assign SIGQUIT (^\) on the console to cause a virtual kernel to enter
its internal db> debugger.

Quickly hack a callout() based poller for console input so the console
works (sorta).

Allow a kernel environment to specified as an option in the form
-e name=value:name=value:...

NULL-out the pmap self-mapping cache when a pmap is destroyed.

13 years agoModify the trapframe sigcontext, ucontext, etc. Add %gs to the trapframe
Matthew Dillon [Mon, 8 Jan 2007 03:33:43 +0000 (03:33 +0000)]
Modify the trapframe sigcontext, ucontext, etc.  Add %gs to the trapframe
and xflags and an expanded floating point save area to sigcontext/ucontext
so traps can be fully specified.

Remove all the %gs hacks in the system code and signal trampoline and handle
%gs faults natively, like we do %fs faults.

Implement writebacks to the virtual page table to set VPTE_M and VPTE_A and
add checks for VPTE_R and VPTE_W.

Consolidate the TLS save area into a MD structure that can be accessed by MI

Reformulate the vmspace_ctl() system call to allow an extended context to be
passed (for TLS info and soon the FP and eventually the LDT).

Adjust the GDB patches to recognize the new location of %gs.

Properly detect non-exception returns to the virtual kernel when the virtual
kernel is running an emulated user process and receives a signal.

And misc other work on the virtual kernel.

13 years ago* Remove some zoneinfo files from 'make upgrade' that were re-added to
Sascha Wildner [Mon, 8 Jan 2007 01:52:14 +0000 (01:52 +0000)]
* Remove some zoneinfo files from 'make upgrade' that were re-added to
  the distribution for compatibility reasons.

* Remove obsolete SystemV directory.

13 years ago* Sync with FreeBSD-RELENG_6.
Sascha Wildner [Mon, 8 Jan 2007 01:38:02 +0000 (01:38 +0000)]
* Sync with FreeBSD-RELENG_6.

* Add some devices to LINT.

* Do some cleanup in sys/conf/files.

OK-by: corecode
13 years agoUpdate the man page, now jail returns a non-negative integer if succesful
Victor Balada Diaz [Sun, 7 Jan 2007 18:33:38 +0000 (18:33 +0000)]
Update the man page, now jail returns a non-negative integer if succesful
or -1 on error.

Imported-From: FreeBSD