value (200) is too low in some environments, causing a fatal
"panic: get_pv_entry: cannot get a pv_entry_t". The same panic might
still occur due to temporary shortage of free physical memory
(cf. PR i386/2431).
Change sd_open, sd_close and sd_ioctl to use this lock to ensure
serialization of some critical operations, thus avoiding some
race conditions. Ideas picked from NetBSD (ccd and sd devices).
This fixes one of the problems noted in PR kern/3688.
Reviewed by: "Justin T. Gibbs" <gibbs@plutotech.com>
nothing good except of opening a can of (potential or real) security
holes. People maintaining a machine with higher security requirements
need to be on the console anyway, so there's no point in not forcing
them to reboot before starting maintenance.
Agreed by: hackers, guido
were returning EFAULT, when it is a completely acceptable thing to do.
Also, at the same time, be a *bit* optimizing and don't allocate any
"stackgrap" memory if we're not going to use it.
This is another Oracle-discovered problem.
Submitted by: Steven Wallace
rather than hard-code it in the message text. Optinally include
the host name in the message if SHOW_HOSTNAME is defined.
The origianl idea and sample code submitted by Angelo Turetta
<ATuretta@stylo.it>.
the XENIX version is packed, and two bytes smaller than ours. So, define
the structure, and have it packed. I used the __attribte__((packed))
modifier for this; I could also have surrounded the struct definition with
#pragma pack(2) -- but that would have meant making ibcs2_timeb's definition
outside the function. This may need to be revisited if we ever want to
compile with a compiler other than gcc. (I also used 'unsigned long'
instead of 'time_t' because I am writing to match an external specification
-- and the definition of time_t could change.)
Reviewed by: Steven Wallace
This eliminates a lot of #ifdef SMP type code. Things like _curproc reside
in a data page that is unique on each cpu, eliminating the expensive macros
like: #define curproc (SMPcurproc[cpunumber()])
There are some unresolved bootstrap and address space sharing issues at
present, but Steve is waiting on this for other work. There is still some
strictly temporary code present that isn't exactly pretty.
This is part of a larger change that has run into some bumps, this part is
standalone so it should be safe. The temporary code goes away when the
full idle cpu support is finished.
Reviewed by: fsmp, dyson
The kernel with USERCONFIG_BOOT and VISUAL_USERCONFIG option presents
the user the kernel configuration menu upon boot.
The user can navigate the menu with cursor keys. I think it would be
nice if the user can navigate and select a menu item with regular keys
as well, so that the user who is using a serial console which is not
so capable of esc sequences still can choose a menu item.
With the following patch we can select an item by typing an item
number, 1, 2, or 3, or mnemonic `s' to skip UserConfig, 'v' to enter
the visual mode, and `c' to start the CLI mode. `p', `u', `n', and `d'
will move cursor up and down.
Submitted by: yokota
adapter during the system boot. It always assumes there is at least a
monochrome adapter.
This is rather strange assumption. If there is no dispaly adapter, the
console driver cannot be any good...
In this patch, scinit() is split into two parts; the first part is
now called scvidprobe() which will detect the presence of video card
at the CGA or MONO buffer address and returns TRUE if found. It is
called during sccnprobe() and scprobe(). Both will fail if no video
card is found.
The second part, whose name stays the same as before, scinit(), is
called from sccninit() and scattach() to complete initialization of
the found video card.
The keyboard probe code is moved from scprobe() to sckbdprobe();
scprobe() now calls scvidprobe() and sckbdprobe() to carry out device
probe. (This is rather a cosmetic change, but it sure makes the code
look better organized.)
The problem pointed out by Joerg.
changes relative to the 2.2 compatable version are include file
related, the new multicast interface (!) and the new PCI interface.
This should work "as-is" but has not been tested (I have not been able
to get a dc21x4x based card for testing).
flag wasn't being respected during vref(), et. al. Note that this
isn't the eventual fix for the locking problem. Fine grained SMP
in the VM and VFS code will require (lots) more work.
out to be a problem with VJ header compression.
davidg spotted this in usr.sbin/ppp/slcompress.c
a while ago, but I believe gave the wrong reasons -
it's too easy to reproduce ! The only scenario that
I've been able to reproduce the problem under is when
m_len is *exactly* 40 ! So go figure !
PR: 3749
Submitted elsewhere by: davidg
Obtained from: usr.sbin/ppp/slcompress.c
since it is impossible to distinguish unpromoted types from small
(struct) types. Renamed __va_promote() to __va_size() since it is
related to sizes of args on the stack and not to promotion.
PR: 3884
Submitted by: mostly by arnej@math.ntnu.no (Arne Henrik Juul)
Obtained from: name of__va_size and some parentheses fixes from NetBSD
by checking whether APM is active in apm_power_off() and returning
if not. (The code was already written with the expectation that
this function would return if it fails.)
like bsd.lib.mk and bsd.prog.mk. It doesn't add it to CXXINCLUDES, I
don't think anybody has written a kernel module with C++. (Not that I
think DavidG will allow it anyway. :)
Reviewed by: bde
Remove previous hack in pppfcs().
This is still not the correct solution. We shouldn't
have any incorrect mbufs. This patch does however make
pppd/natd work (rather than jamming the interface).
NETNATM --> NATM
reported by Bruce Evans.
Bruce also pointed out that NATM is confusing since config(8) defines
NATM as the number of atm pseudo device in "BUILD_DIR/atm.h".
We might change the name in the future but leave it as it is for now.
cause a problem of spiraling death due to buffer resource limitations.
The vfs_bio code in general had little ability to handle buffer resource
management, and now it does. Also, there are a lot more knobs for tuning the
vfs_bio code now. The knobs came free because of the need that there
always be some immediately available buffers (non-delayed or locked) for
use. Note that the buffer cache code is much less likely to get bogged
down with lots of delayed writes, even more so than before.
- OVERRIDE_TUNER: allows you to manually choose the tuner type for those
cards that fail to probe properly. See source for legal
values.
- OVERRIDE_DBX: allows you to manually choose DBX or NO DBX for those
cards that fail to probe properly.
0 == no DBX circuit present, 1 == DBX circuit present.
will see it. The name of the file is obtained by appending ".config"
to the name of the kernel file. If the file doesn't exist, then an
annoying message is printed.
Reduced the command line buffer size yet again from 4096 to 1024. It is
oversized to defend against overrun in gets(), but data space is starting
to run out so the buffer size can't be as grossly oversized as before.
It is possible for multiple process to sleep concurrently waiting
for a buffer. When the buffer shortage is a shortage of space but
not a shortage of buffer headers, the processes took turns creating
empty buffers and waking each other to advertise the brelse() of
the empties; progress was never made because tsleep() always found
another high-priority process to run and everything was done at
splbio(), so vfs_update never had a chance to flush delayed writes,
not to mention that i/o never had a chance to complete.
The problem seems to be rare in practice, but it can easily be
reproduced by misusing block devices, at least for sufficently slow
devices on machines with a sufficiently small buffer cache. E.g.,
`tar cvf /dev/fd0 /kernel' on an 8MB system with no disk in fd0
causes the problem quickly; the same command with a disk in fd0
causes the problem not quite as quickly; and people have reported
problems newfs'ing file systems on block devices.
Block devices only cause this problem indirectly. They are pessimized
for time and space, and the space pessimization causes the shortage
(it manifests as internal fragmentation in buffer_map).
This should be fixed in 2.2.
should work with no driver changes, though not all features are currently
used.
Remove code that was conditional on NEW_SCSICONF not being defined. This
was temporary code, that at a time got excluded correctly, until the new
scsiconf became the default, and NEW_SCSICONF was no longer specified.
Add support for quirks defined in scsiconf.c. For now only the HP3724/5
needs an entry, since that drive can't be used with tags.
so don't enforce the MTU as an MRU. Allow bidirectional ppp MTU
negotiation, by checking against a differnt figure for MRU.
Make it large enough for ATM frames at least.
Submitted by: archie@whistle.com (archie cobbs)
- Added support for "dual" internal/serial consoles (-D flag). If -D is set,
then all i/o from the boot blocks is to and from both the internal console
and the serial console. -D has no effect on the kernel (-h decides the
kernel serial console as usual). -D should normally be set in /boot.config.
- Get help messages from /boot.help. You should copy boot.help from the
biosboot directory to the root directory on the boot drive when you
install new boot blocks.
- New, less invasive keyboard probe. Enable keyboard probe dynamically (-P
flag). Should probably never be used (use -h instead).
- Fixed/improved initialization from boot.config. It didn't interact correctly
with the NAMEBLOCK option, and the initialization of the drive/unit/partition
didn't stick when a non-default kernel name was entered.
- Don't reset or forget the default drive/unit/... or kernel name so often.
- Set the default kernel name to something unbootable after `?'.
- Display the defaults better.
- Removed PROBE_KEYBOARD_LOCK option (use -h instead).,
- Removed BOOT_FORCE_COMCONSOLE option (use device flag 0x20 instead).
- Removed -a (RB_HALT) flag. This flag is only used for reboots.
Submitted by: about 2/3 by yokota
then all i/o from the boot blocks is to and from both the internal console
and the serial console. -D has no effect on the kernel (-h decides the
kernel serial console as usual). -D should normally be set in /boot.config.
- Get help messages from /boot.help. You should copy boot.help from the
biosboot directory to the root directory on the boot drive when you
install new boot blocks.
- New, less invasive keyboard probe. Enable keyboard probe dynamically (-P
flag). Should probably never be used (use -h instead).
- Fixed/improved initialization from boot.config. It didn't interact correctly
with the NAMEBLOCK option, and the initialization of the drive/unit/partition
didn't stick when a non-default kernel name was entered.
- Don't reset or forget the default drive/unit/... or kernel name so often.
- Set the default kernel name to something unbootable after `?'.
- Display the defaults better.
- Removed PROBE_KEYBOARD_LOCK option (use -h instead).,
- Removed BOOT_FORCE_COMCONSOLE option (use device flag 0x20 instead).
- Removed -a (RB_HALT) flag. This flag is only used for reboots.
Submitted by: about 2/3 by yokota
cost since it is only done in cpu_switch(), not for every exception.
The extra state is kept in the pcb, and handled much like the npx state,
with similar deficiencies (the state is not preserved across signal
handlers, and error handling loses state).