13 years agoMerge from vendor branch GCC:
Simon Schubert [Mon, 15 Jan 2007 14:46:13 +0000 (14:46 +0000)]
Merge from vendor branch GCC:
Import crt code from gcc-4.1.1

13 years agoImport crt code from gcc-4.1.1
Simon Schubert [Mon, 15 Jan 2007 14:46:13 +0000 (14:46 +0000)]
Import crt code from gcc-4.1.1

13 years agoDo not lookup symbols with STB_LOCAL binding
Simon Schubert [Mon, 15 Jan 2007 14:38:22 +0000 (14:38 +0000)]
Do not lookup symbols with STB_LOCAL binding

When a shared object with static TLS symbols gets linked, ld issues
a R_386_TLS_DTPMAP32 relocation on i386, referencing symbol 0, the
undefined symbol.  This is perfectly legal, as this is simply a
local symbol and nothing but the local module's TLS index is needed.

This fixes execution of binaries linked to gcc41's libstdc++.

Obtained-from: FreeBSD

13 years agoBy default do not enable hardware csum on PCIe re(4), which trashes
Sepherosa Ziehau [Mon, 15 Jan 2007 12:53:26 +0000 (12:53 +0000)]
By default do not enable hardware csum on PCIe re(4), which trashes
packets intermittently if csum offload is enabled.  This problem does
not seem to plague PCI re(4).

The pattern of trashed packets is not yet identified.  From the tcpdump
information provided by Joe, the packets' size should not be the direct
cause.  Hardware bug?

Reported-by: Joe Talbott <josepht@cstone.net> (RTL8101E, PCIe re(4))
# Same problem is reported to FreeBSD by two RTL8168B(PCIe re(4)) users.

13 years agoClose two holes in the pmap code. The page table self mapping does not
Matthew Dillon [Mon, 15 Jan 2007 09:28:40 +0000 (09:28 +0000)]
Close two holes in the pmap code.  The page table self mapping does not
necessarily stay valid through a blocking condition, recheck it for every
page.  The 'next' pointer in the loop that runs through PV entries is not
safe when code blocks in the loop.  Add a generation count to detect
unexpected removals and restart the loop.  Add a kprintf() to print when
the condition is detected.

Crash-Reported-by: Nuno Antunes <bugs@crater.dragonflybsd.org>
13 years agoPass an interrupt frame to kqueue-based interrupts. Modify the console
Matthew Dillon [Mon, 15 Jan 2007 05:27:31 +0000 (05:27 +0000)]
Pass an interrupt frame to kqueue-based interrupts.  Modify the console
and the systimer subsystems to use kqueue interrupts.  Use EV_CLEAR for
all kqueue elements.

13 years agoDo not use dbg() too soon. This fixes rtld with -DDEBUG.
Simon Schubert [Mon, 15 Jan 2007 04:45:40 +0000 (04:45 +0000)]
Do not use dbg() too soon.  This fixes rtld with -DDEBUG.

Obtained-from: FreeBSD

13 years agoAdd kqueue based async I/O support to the virtual kernel. Convert VKE to
Matthew Dillon [Mon, 15 Jan 2007 01:29:04 +0000 (01:29 +0000)]
Add kqueue based async I/O support to the virtual kernel.  Convert VKE to
use the new async I/O support for reading.

Setup SIGIO as a SA_MAILBOX signal for efficiency.  Remove remaining signal
masks from sigaction() calls.

13 years agoAdd O_ASYNC (SIGIO) support to kqueue(). Also add F_SETOWN support.
Matthew Dillon [Mon, 15 Jan 2007 01:26:56 +0000 (01:26 +0000)]
Add O_ASYNC (SIGIO) support to kqueue().  Also add F_SETOWN support.

13 years agoAdd KQUEUE support to the TAP interface.
Matthew Dillon [Mon, 15 Jan 2007 00:51:43 +0000 (00:51 +0000)]
Add KQUEUE support to the TAP interface.

13 years agoRename type to avoid conflict with 'kqueue' symbol.
Matthew Dillon [Mon, 15 Jan 2007 00:11:36 +0000 (00:11 +0000)]
Rename type to avoid conflict with 'kqueue' symbol.

13 years agoLink up the interrupt frame to the systimer API. Use PGEX_U to indicate
Matthew Dillon [Sun, 14 Jan 2007 20:07:15 +0000 (20:07 +0000)]
Link up the interrupt frame to the systimer API.  Use PGEX_U to indicate
a user frame and adjust CLKF_USERMODE for the virtual kernel.  This allows
the stat clock in the virtual kernel to account for user vs system time
(instead of just counting it all as system time).

Consolidate other special virtual kernel and signal flags in tf_xflags and
name them the same (FPEX_FAULT -> PGEX_FPFAULT, and add PGEX_MAILBOX)

Implement PGEX_MAILBOX for signal frames.  On signal return this flag causes
P_MAILBOX to be set in order to maintain interlock semantics with mailbox

13 years agoSuppress the error message for command -v for files with a slash.
Peter Avalos [Sun, 14 Jan 2007 18:14:39 +0000 (18:14 +0000)]
Suppress the error message for command -v for files with a slash.

Obtained-from:  FreeBSD

13 years agoUse volatile where appropriate.
Peter Avalos [Sun, 14 Jan 2007 17:29:58 +0000 (17:29 +0000)]
Use volatile where appropriate.

Partially taken from NetBSD.

13 years agoMechanically kill hard sentence breaks.
Peter Avalos [Sun, 14 Jan 2007 16:30:20 +0000 (16:30 +0000)]
Mechanically kill hard sentence breaks.

Fix references to non-existing or obsoleted man pages.

Use ``.Pq Ql'' to quote single characters, instead of ``.Pq Li''.
This makes the resulting output more aesthetically pleasing in
text-only terminals.

mdoc cleanups.

Add missed '.'.

Document that '#' starts a comment.

o Discuss the ways to escape an alias.
o Fix the alias syntax lines.
o Refer to the Aliases subsection.

Document that `in word ...' is optional in the for command.

Document the "return" built-in better: it will exit . (sources) and
the top-level shell instance, too.

When listing the special $ variables, ($!, $#, etc) list them as $!
instead of just !, this allows one to more easily locate/understand
the section of the manpage in question.

Document the -L and -P options to the cd and pwd commands as being
mutually exclusive.

Document command -v and -V.

Split the export synopsis into two lines as -p cannot be mixed with variable

Document the fact that 'true' and 'false' are among sh(1) built-in commands.

- Move the description of the ``-c string'' option closer to the option itself.
- Add an ENVIRONMENT section (1)
- Add more .Xr cross references to the SEE ALSO section.

Add `local' and `return' to the list of built-ins.

Document that read -t timeout returns 1 if the timeout elapses.

Make it easier to find that we have test(1) built-in in sh(1).

- Document trap's -l option and the behaviour of a missing action or a single
- Discourage the omission of the action.

Document umask's -S option.

Tell more of the sh(1) history.
Acknowledge Kenneth Almquist's contribution in AUTHORS.

Document missing multibyte character handling in utilities specified

Obtained-from:  FreeBSD

13 years agoSpelling fix.
Peter Avalos [Sun, 14 Jan 2007 15:16:49 +0000 (15:16 +0000)]
Spelling fix.

Obtained-from:  FreeBSD

13 years agoSpelling errors.
Peter Avalos [Sun, 14 Jan 2007 15:14:52 +0000 (15:14 +0000)]
Spelling errors.

POSIX demands that set's output (when invoked without arguments) should be
sorted.  Sort the variables before printing.

Provide a reasonable error message for `export -p var'.
Use argv rather than argptr since getopt() is used here.

Obtained-from:  FreeBSD

13 years ago- Add multi pseudo network interface support for vkernel
Sepherosa Ziehau [Sun, 14 Jan 2007 14:24:56 +0000 (14:24 +0000)]
- Add multi pseudo network interface support for vkernel
- Add two sysctl for vke(4):
  o  hw.vkeX.intr_rate -- pseudo interrupt rate
  o  hw.vkeX.tap_unit  -- backend real kernel tap(4) interface unit
- Print backend tap(4) interface name in vkernel for 'ifconfig vkeX'

vke(4)s are created according to the following command line option:

-I tap_devname[:expression]

'tap_devname' can be:
1) auto                pick up the first unused tap(4) device file in /dev
2) tapX                use /dev/tapX as tap(4) device file
3) /path/to/tap_dev    use /path/to/tap_dev as tap(4) device file

'expression' is optional and could be:
1) x.x.x.x             tap(4)'s address is x.x.x.x

2) x.x.x.x/z           tap(4)'s address is x.x.x.x
                       tap(4)'s netmask len is z

3) x.x.x.x:y.y.y.y     tap(4)'s address is x.x.x.x
                       vke(4)'s address is y.y.y.y

4) x.x.x.x:y.y.y.y/z   tap(4)'s address is x.x.x.x
                       vke(4)'s address is y.y.y.y
                       tap(4) and vke(4)'s netmask len are z

5) bridgeX             tap(4) will be added to bridgeX

6) bridgeX:y.y.y.y     tap(4) will be added to bridgeX
                       vke(4)'s address is y.y.y.y

7) bridgeX:y.y.y.y/z   tap(4) will be added to bridgeX
                       vke(4)'s address is y.y.y.y
                       vke(4)'s netmask len is z

vke(4)'s unit will be in the same order as the -I command line option,
i.e. first -I option will create vke0, and the second -I option will
create vke1 etc...

If vke(4)'s address/netmask is supplied, then in vkernel 'ifconfig vkeX up'
will assign the supplied address/netmask to vkeX in addition to bringing
vkeX up.

1) bridgeX will not be created if it does not exist yet
2) bridgeX will not be brought up if it is not up yet
3) if_tap.ko and if_bridge.ko will not be loaded automaticly
The main reason for 1) and 2), is that bridgeX will be in its original
state when vkernel is stopped normally or abruptly.

So if you choose to utilize bridged tap(4), before starting vkernel, you
will have to do following to make vke(4) work (suppose we use re0 as real
network interface):
# kldload if_bridge.ko
# kldload if_tap.ko
# ifconfig re0 up
# ifconfig bridge0 create
# ifconfig bridge0 addm re0
# ifconfig bridge0 up

Approved-by: dillon@
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 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 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>