brian [Sat, 24 Oct 1998 01:08:45 +0000 (01:08 +0000)]
Loosen our restrictions on setting enddisc, mrru,
shortseq, authname and authkey.
o Auth{name,key} may additionally be set in PHASE_ESTABLISH.
o The others may be set in PHASE_ESTABLISH as long as no links
have yet reached DATALINK_LCP.
phk [Fri, 23 Oct 1998 10:44:52 +0000 (10:44 +0000)]
Change the way we simulate stable storage for timecounters.
If you have problems with the "calcru" messages and processes being
killed for excessive cpu time, try to increase the NTIMECOUNTER
#define and report your findings.
dg [Fri, 23 Oct 1998 05:43:13 +0000 (05:43 +0000)]
Oops, revert part of last fix. vm_pager_dealloc() can't be called until
after the pages are removed from the object...so fix the problem by
not printing the diagnostic for wired fictitious pages (which is normal).
dg [Fri, 23 Oct 1998 05:25:49 +0000 (05:25 +0000)]
Fixed two bugs in recent commit: in vm_object_terminate, vm_pager_dealloc
needs to be called prior to freeing remaining pages in the object so that
the device pager has an opportunity to grab its "fake" pages. Also, in
the case of wired pages, the page must be made busy prior to calling
vm_page_remove. This is a difference from 2.2.x that I overlooked when
I brought these changes forward.
ken [Thu, 22 Oct 1998 22:16:56 +0000 (22:16 +0000)]
Fix a problem with the way we handled device invalidation when attaching
to a device failed.
In theory, the same steps that happen when we get an AC_LOST_DEVICE async
notification should have been taken when a driver fails to attach. In
practice, that wasn't the case.
This only affected the da, cd and ch drivers, but the fix affects all
peripheral drivers.
There were several possible problems:
- In the da driver, we didn't remove the peripheral's softc from the da
driver's linked list of softcs. Once the peripheral and softc got
removed, we'd get a kernel panic the next time the timeout routine
called dasendorderedtag().
- In the da, cd and possibly ch drivers, we didn't remove the
peripheral's devstat structure from the devstat queue. Once the
peripheral and softc were removed, this could cause a panic if anyone
tried to access device statistics. (one component of the linked list
wouldn't exist anymore)
- In the cd driver, we didn't take the peripheral off the changer run
queue if it was scheduled to run. In practice, it's highly unlikely,
and maybe impossible that the peripheral would have been on the
changer run queue at that stage of the probe process.
The fix is:
- Add a new peripheral callback function (the "oninvalidate" function)
that is called the first time cam_periph_invalidate() is called for a
peripheral.
- Create new foooninvalidate() routines for each peripheral driver. This
routine is always called at splsoftcam(), and contains all the stuff
that used to be in the AC_LOST_DEVICE case of the async callback
handler.
- Move the devstat cleanup call to the destructor/cleanup routines, since
some of the drivers do I/O in their close routines.
- Make sure that when we're flushing the buffer queue, we traverse it at
splbio().
- Add a check for the invalid flag in the pt driver's open routine.
msmith [Thu, 22 Oct 1998 21:42:20 +0000 (21:42 +0000)]
Honour the spirit rather than the implementation of the previous changes;
if we are invoked with -m, use chmod() on the final directory component
in order to ensure the mode is correctly set.
msmith [Thu, 22 Oct 1998 20:22:07 +0000 (20:22 +0000)]
Pop the return address off the stack before making a V86_CALLF call;
this allows us to implement what look like C function calls from user
space "directly" to v86 mode code. (Used for calling the PnP BIOS)
bde [Thu, 22 Oct 1998 16:10:29 +0000 (16:10 +0000)]
Removed all `vector xxxintr' specifications. Interrupt handlers are now
configured in drivers.
Attempted to update the generated interrupt handler attachment to the
current "temporary" method. Not tested. To test it, someone would first
have to fix the bitrot in the ioctl command arg type.
wpaul [Thu, 22 Oct 1998 15:52:25 +0000 (15:52 +0000)]
Close PR #8384:
Revert the transmission packet queueing strategy changes. Clearly I missed
something while debugging this, although I never encountered any problems
on my test machines.
Also make one other minor change: jack up the TX reclaim threshold for
3c90xB adapters in order to stave off 'transmission error: 82' errors.
Document the existence of the tx reclaim register (for inspecting the
current reclaim threshold) in register window 5 (if_xlreg.h).
bde [Thu, 22 Oct 1998 13:49:51 +0000 (13:49 +0000)]
Quote port names that have a digit in them. IO_TIMER1 was lexed as
{ port_name = "IO_TIMER", port_number = 1 } and only worked because
it was reassembled to "IO_TIMER1". Trailing digits always work, but
this is too magic to depend on.
Don't quote port names that don't have a digit in them.
luigi [Thu, 22 Oct 1998 11:20:33 +0000 (11:20 +0000)]
Fix behaviour of the driver with small files -- due to a stupid
bug sound was not played if the total amount of data written to
the device was less than one blocksize
bde [Thu, 22 Oct 1998 10:34:11 +0000 (10:34 +0000)]
The previous change was much too simple to actually compensate for
braindamage in sound driver confiruration. Attempt to only reference
interrupt handlers if their driver is configured.
bde [Thu, 22 Oct 1998 05:58:45 +0000 (05:58 +0000)]
Initialize isa_devtab entries for interrupt handlers in individual
device drivers, not in ioconf.c. Use a different hack in isa_device.h
so that a new config(8) is not required yet.
imp [Thu, 22 Oct 1998 04:41:34 +0000 (04:41 +0000)]
Added Microsoft's PE formatted executables for mips, i386 and Alpha.
Also added entry for the debugger files as well. The PE format is
used for all Win32 platforms (Win95, Win98, WinNT and WinCE), so it is
nice to be able to tell what kind of thing the foo.dll.... Don't have
any data for powerpc formats, however...
brian [Thu, 22 Oct 1998 02:32:50 +0000 (02:32 +0000)]
Solve the ``first connection'' problem that occurs on
demand-dial links with dynamic IP numbers where the program
that causes the dial bind()s to an interface address that is
subsequently changed after ppp negotiation.
The problem is defeated by adding negotiated addresses to the
tun interface as additional alias addresses and providing a set
of ``iface'' commands for managing the interface. Libalias is
also required (and what a name clash!) - it happily IP-aliases
the address so that the source is that of the primary (negotiated)
interface and un-IP-aliases it on the way back.
An ``enable iface-alias'' is done implicitly by the -alias command
line switch. If -alias isn't given, iface-aliasing is disabled by
default and can't be enabled 'till an ``alias enable yes'' is done.
``alias enable no'' silently disables iface-alias.
So, for dynamic-IP-type-connections, running ``ppp -alias -auto blah''
will work for the first connection, although existing bindings will
not survive a disconnect/connect as the TCP peer will be trying to
send to the old IP address - the packets won't route.
It's now a lot easier to add IPXCP to ppp with minor updates to
the new iface.[ch] (if anyone ever gets 'round to it).
It's also now possible to manually add interface aliases with
something like ``iface add 1.2.3.4/24 5.6.7.8''. This allows
multi-homed ppp links :-)
dg [Thu, 22 Oct 1998 02:16:53 +0000 (02:16 +0000)]
Make the VM system handle the case where a terminating object contains
legitimately wired pages. Currently we print a diagnostic when this
happens, but this will be removed soon when it will be common for this
to occur with zero-copy TCP/IP buffers.
msmith [Wed, 21 Oct 1998 20:10:33 +0000 (20:10 +0000)]
- Enable PnP and ISA PnP code.
- Use the ISA PnP enumerator.
- Use the new linker set code, throw out the gensetdefs stuff.
- Produce an intermediate loader image that has symbols stripped, to aid
- in debugging.
- Supply ISA port access functions required for ISA PnP
msmith [Wed, 21 Oct 1998 20:07:05 +0000 (20:07 +0000)]
Make ISA PnP work. This successfully enumerates as many ISA devices as I
can fit into my test machine.
- Move to using STAILQs rather than ad-hoc singly-linked lists.
- Use a mostly procedural interface to the PnP information. This
improves data-hiding.
Implement a new linker-set technique (currently on i386 only but should work
on Alpha as well). This is a good candidate for replacing the current
gensetdefs cruft completely.
rnordier [Wed, 21 Oct 1998 17:10:49 +0000 (17:10 +0000)]
Get things limping along again for the 80386 and friends. The
ELF assembler emits a redundant operand-size prefix for the
fnstsw %ax instruction, and this stops the show for 3.0-RELEASE.
bde [Wed, 21 Oct 1998 11:48:39 +0000 (11:48 +0000)]
Fixed previous commit to actually work. The wrong variable was initialized
earlier (with style bugs of course), so zcat was an alias for uncompress
instead of `uncompress -c'.
dg [Wed, 21 Oct 1998 11:43:04 +0000 (11:43 +0000)]
Add a diagnostic printf for freeing a wired page. This will eventually
be turned into a panic, but I want to make sure that all cases of freeing
pages with wire_count==1 (which is/was allowed) have first been fixed.
dg [Wed, 21 Oct 1998 11:38:14 +0000 (11:38 +0000)]
Decrement the now unused page table page's wire_count prior to freeing it.
It will soon be required that pages have a zero wire_count when being
freed.
grog [Wed, 21 Oct 1998 08:32:32 +0000 (08:32 +0000)]
config.c:
config_drive:
Catch an instance of anonymous drives. Doubtless many remain.
interrupt.c:
complete_rqe:
Call logrq to log iodone events if DEBUG_LASTREQS is set.
Call set_sd_state with setstate_noupdate to avoid buffered I/O out
of interrupt context.
Use define DEBUG_RESID instead of constant.
memory.c:
Remove dead expandrq() function
Malloc:
Remove directory component of file names in malloc table.
Add function vinum_rqinfo (part of the request tracing stuff).
request.c:
Add function logrq (part of the request tracing stuff).
vinumstrategy:
Check whether config needs to be written to disk, do it if so.
This is a stopgap until the Vinum daemon (bacchusd? oenologistd?)
is written.
If DEBUG_LASTREQS is set, call logrq to log user buffer headers.
launch_requests:
Correct format of debug output to console.
If DEBUG_LASTREQS is set, call logrq to log request elements.
request.h:
Add definitions for request trace.
state.c:
set_sd_state:
Check flags for setstate_noupdate. If set, don't write the config
to disk, just set global VF_DIRTYCONFIG flag. This is part of the
kludge to avoid writing config from an interrupt context.
vinumext.h:
Add declaration for vinum_rqinfo, put inside #ifdef DEBUG
Remove dead macro expandrq
vinumio.h:
Increase maximum ioctl reply length to 4 kB if DEBUG is set.
Define VINUM_RQINFO ioctl if DEBUG is set.
vinumioctl.c:
vinumioctl:
Change implementation of VINUM_DEBUG ioctl: use a debug flag
(DEBUG_REMOTEGDB) to decide whether to go into remote debugging or
not.
Implement VINUM_RQINFO.
vinumkw.h:
Define kw_info even when not debugging.
vinumvar.h:
Define VF_DIRTYCONFIG
Add pointers to request info to vinum_info if DEBUG is set.
Define setstate_noupdate
Define additional debug bits DEBUG_RESID, DEBUG_LASTREQS and
DEBUG_REMOTEGDB.
peter [Tue, 20 Oct 1998 12:36:36 +0000 (12:36 +0000)]
Stop mk*temp() from being pathologically stupid in the face of a umask(0);
There are other ways to fix this than wrapping _gettemp(), but this was
the most convenient.
msmith [Tue, 20 Oct 1998 08:04:15 +0000 (08:04 +0000)]
Make this compile, and honour the spirit of the original design while
incorporating the intended fix. Attempt to address some of the
putative style bugs introduced. Others doubtless remain.
wpaul [Mon, 19 Oct 1998 22:08:56 +0000 (22:08 +0000)]
Modify the transmit packet queuing strategy a bit to be a little less
agressive. With the old code, if a descriptor chain was already on its
way to the chip, xl_start() would try to splice new chains onto the end
of the current chain by stopping the transmitter, modifying the tail
pointer of the current chain to point to the head of the new chain, then
restart the transmitter. The manual says you're allowed to do this and
it works, but I'm not too keen on it anymore.
The new code waits until the eixsting chain has been sent and then
queues the next waiting chain in the 'transmit ok' handler.
Performance still looks good one way or the other.
imp [Mon, 19 Oct 1998 20:09:17 +0000 (20:09 +0000)]
Default to aout only on i386. Before we defaulted to elf only on
Alpha. This is a minor, but important distinction. Should be a no-op
to the install base. If OBJFORMAT is set elsewhere, things work
exactly as they did before.
rnordier [Mon, 19 Oct 1998 19:13:53 +0000 (19:13 +0000)]
Make configurable (a) whether to use int 0x13 extensions; (b) timeout
value. Ignore failure to update mbr sector. Disable interrupts while
using extended registers. Default to F1 not F2.