Simple stuff
------------
Split _download up so that the MIB settings are in their own functions.
Made "tx completed but status is ..." a recoverable error
Cut down verbosity of "unloaded" messages
Moved ccs_free and com_runq from intr_ccs to ecf_done and runq_done
to avoid embarasing mistakes and waits.
Merged runq_add and runq_arr into one and called it runq_add
Made RAY_COM_DUMP a real debug called RAY_DCOM
Consistnet debugging around tsleeps.
Use bus_activate_resource for attr/cm mapping, and set the flags
correctly in the allocation routines (needs more hacks to
sys/pccard/pcic.c)
com_malloc is now seperated from the comq initialization. This was
done whilst trying to set automatic variables for the comqs.
Harder Stuff
------------
As part of the IFF_RUNNING fixes, remove the panic in runq if we are
not running.
Change, again, runq_add. This time we don't do any cleaning up
if there were errors. This is so that callers get the chance
to re-try (not that I ever see it being used).
In runq_add, only sleep when there is something to sleep on!
ioctl locking routines, stolen from awi.c but not used
Hardest Stuff
-------------
Dealing with serialing ioctls correctly means that we must QUEUE
changes to IFF_RUNNING and check it in the QUEUED commands, not
in the user commands. Whilst simple to state, it took a few
hours of head scratching to get it right. The realisation was that
I only have to guarantee that sub-commands from a single process
are serialised and "atomic", and that they check the status of the
interface flags when invoked and not when they are queued.
Another way of looking at it, is that the driver's state is stored
in the runq and the IFF_RUNNING flag. These must be changed together.
What this means practically, is that IFF_RUNNING is set after
we have started/joined/associated with a network. And it is
cleared by ray_stop via the runq so that unfinsished commands are
not distrupted.
I still have to fix up promisc, upp/repparams and mcast.
Oh yeah, stop is essentially a noop in that it only
changes IFF_RUNNING
- Get rid of a fiew uselessly `long' variables
and casts to `long'.
- Estimate the PCI clock for all chips, except
C1010 for now (we should do that for each PCI BUS)
- Refine a couple of C1010 errata work-arounds.
- For now, make sure AIP generation is disabled
for the C1010-66.
"options COMPAT_OLDPCI". This option already existed, but now also tidies
up the declarations in #include <pci/pci*.h>. It is amazing how much stuff
was using the old pre-FreeBSD 3.x names and going silently undetected.
for a seperate pc98 version of this stuff. Applying the same changes
from the i386 version yields identical files so remove these and use the
common ones.
and does not require that evil list of drivers in isa_compat.h.
It uses the same strategy that pci drivers use, namely a
COMPAT_ISA_DRIVER() macro that creates the glue on the fly.
Theoretically old-style isa drivers should be preloadable now.
all other modes not set ALKED flag and it means that CapsLock always turned
off for them.
Real bug example is X11 which never turn on CapsLock with Russian keyboard.
PR: 18651
Submitted by: "Mike E. Matsnev" <mike@po.cs.msu.su>
Only PCI and on-board ISA peripherials are supported at this time.
This support has been only lightly tested due to a lack of response to my
call for testers on the freebsd-alpha mailing list. It works quite well
on the one AS2100 on which it has been tested, but it may not work on
an AS2100A and should therefore be regarded as experimental.
- Go ahead and use 'lgdt' again instead of hand-assembling the instruction.
During testing this code worked fine. If for some reason a 32-bit offset
is needed, 'lgdtl' should be used instead of reverting to manual machine
code.
Tested by: peter
buzy, only search upwards for a free slot to use..
This broke unit numbering on ATA systems where PCI attached controllers
come before the mainboard ones...
Reviewed by: dfr
m_adj() and then check the resulting mbuf for misalignment, copying
backwards to align the mbuf if required.
This fixes a longstanding problem where an mbuf which would have been
properly aligned after an m_adj() was being misaligned and causing an
unaligned access trap in ip_input(). This bug only triggered when booting
diskless.
Reviewed by: dfr
more frequently than the core part of the sio driver, it might
be good to move the PnP IDs to sio_isapnp.h or something like
that.
PR: i386/18828
Submitted by: J.P. King <jpk28@cam.ac.uk>
This (I believe) is the cause of the XFree86 startup and/or mptable(8)
panics when programs were reading from /dev/mem at non-page-aligned
offsets. The offsets were being converted into random page flags in the
page tables. :-( (including PG_PS = 4MB page size)
Make the error recovery code a little more obvious.
Inform the user if UDMA66 mode couldn't be selected due to a
non ATA66 compliant 80pin cable.
Minor cosmetics.
with the new binutils. Now that we have a decent assembler, all the old
m4 macros are no longer needed. Instead, straight assembly can be used
since as(1) now understands 16-bit addressing, branches, etc. Also,
several bugs have been fixed in as(1), allowing boot0.s to be further
cleaned up.
CAPACITY operation. SCSI-3 mandates this to be 2048, but some older
drives like my old Plasmon CD-R report weird numbers between 2048 and
up to 2352 bytes depending on the mode of the last track etc. This in
turn confuses stuff like the slice code since it refuses to work with
devices that do not have a blocksize which is a multiple of 512 bytes.
Reviewed by: ken
libcam/Makefile: Add scsi_da.c to libcam for the new
scsi_format_unit() function.
camcontrol.8: Update the man page for the new format
functionality, and take out the examples section
describing how to do it with 'camcontrol cmd'.
camcontrol.c: New format functionality. Note that unlike the
rest of the camcontrol subcommands, this one is
interactive by default. Because of the potential
destructiveness of the format command, I thought
it necessary to get confirmation from the user
before spamming a disk. You can disable the
interactive behavior, and the status meter with
command line arguments.
scsi_da.c: Add the new scsi_format_unit() cdb building
function and use #ifdef _KERNEL to make this file
compile in both the kernel and userland. The
format unit function is currently only defined in
the non-kernel case, because nothing in the kernel
is using it. If that changes, it should be
un-ifdefed and compiled in both cases.
scsi_da.h: New function declaration, CDB structure and format
data structures.
Thanks to Nick Hibma for providing some valuable input on these changes.
have pv_entries. This is intended for very special circumstances,
eg: a certain database that has a 1GB shm segment mapped into 300
processes. That would consume 2GB of kvm just to hold the pv_entries
alone. This would not be used on systems unless the physical ram was
available, as it's not pageable.
This is a work-in-progress, but is a useful and functional checkpoint.
Matt has got some more fixes for it that will be committed soon.
Reviewed by: dillon
to various pmap_*() functions instead of looking up the physical address
and passing that. In many cases, the first thing the pmap code was doing
was going to a lot of trouble to get back the original vm_page_t, or
it's shadow pv_table entry.
Inspired by: John Dyson's 1998 patches.
Also:
Eliminate pv_table as a seperate thing and build it into a machine
dependent part of vm_page_t. This eliminates having a seperate set of
structions that shadow each other in a 1:1 fashion that we often went to
a lot of trouble to translate from one to the other. (see above)
This happens to save 4 bytes of physical memory for each page in the
system. (8 bytes on the Alpha).
Eliminate the use of the phys_avail[] array to determine if a page is
managed (ie: it has pv_entries etc). Store this information in a flag.
Things like device_pager set it because they create vm_page_t's on the
fly that do not have pv_entries. This makes it easier to "unmanage" a
page of physical memory (this will be taken advantage of in subsequent
commits).
Add a function to add a new page to the freelist. This could be used
for reclaiming the previously wasted pages left over from preloaded
loader(8) files.
Reviewed by: dillon
It's not clear what this does nor why they would do it, but it should
compile, now. This could be a case where fixing the code so that it
compiles merely masks more devious dysfunctional behaviour.
Note that __bsdi__s_/_i_/_os_/__ has moved this file to dev/ic/ and
has completely removed the non-compiling function from pdq_ifsubr.c and
has completely removed this function and placed it into netinet/if_ether.c
(if, in fact, it wasn't there the whole time). I was tempted to simply
remove this __bsdi__only__ function.
The function is arp_ifinit().
PR: kern/7903
down as a result of a reset. Returning EINVAL in that case makes no
sense at all and just confuses people as to what happened. It could be
argued that we should save the original address somewhere so that
getsockname() etc can tell us what it used to be so we know where the
problem connection attempts are coming from.
reporting an AT PIC. We do this because otherwise the PIC will claim
IRQ 2 in an unshareable mode, preventing other devices from legitimately
using it.
For symmetry, in !APIC_IO mode, ignore the APIC if it's reported.
This is a hack; a better solution would have the PIC's driver release
the IRQ if it was not going to be active.
integer expression. Otherwise the sizeof() call will force the expression
to be evaluated as unsigned, which is not the intended behavior.
Obtained from: NetBSD (in a different form)
code retransmitting data from the wrong offset.
As a footnote, the newreno code was partially derived from NetBSD
and Tom Henderson <tomh@cs.berkeley.edu>
proc pointer is believed to have been the cause of panics related to vnconfig
on top of intr-optioned NFS mounts.
Reported by: "Sean O'Connell" <sean@stat.Duke.EDU>
This function will probably rewritten/renamed to devpp.
Submitted by: Assar Westerlund <assar@sics.se> on -current
Confirmed to work: Steinar Haug <sthaug@nethelp.no>,
Manfred Antar <mantar@pacbell.net>
Reviewed by: phk
of the individual drivers and into the common routine ether_input().
Also, remove the (incomplete) hack for matching ethernet headers
in the ip_fw code.
The good news: net result of 1016 lines removed, and this should make
bridging now work with *all* Ethernet drivers.
The bad news: it's nearly impossible to test every driver, especially
for bridging, and I was unable to get much testing help on the mailing
lists.
Reviewed by: freebsd-net
/dev/?random devices. This appears to have been missed when the code
was brought across from the i386. (This should fix the "world build
hangs with everything waiting on 'temp' problem.)
Also add some iovec fixup code in the error path which seems to have
been similarly fixed.
There are a number of other differences between the i386 and alpha
version which have not been examined. This code should still be
considered suspect.
be booted. Due to a bug, this wasn't happening.
There is still a lesser bug in that the loader decides which file to boot
after the 10sec count down. This means the bootfile listed in the count
down in is wrong in the case where the loader will boot /kernel.old.
FICL. bootforth is now live on the Alpha!
**BEWARE** - you *MUST* build and install a current libstand or you will
most likely get zfree() panics at loader startup.
We should now be able to set up the loader.conf stuff on the Alpha too.
of using the MGETHDR macro all the time. When an mbuf is reused as a
header, initialize csum_flags to zero as well, so the delayed_checksum
call woks properly.
Debbugging work done by: jmas
/boot/loader (even though it is 100% dormant in the Alpha version),
then the loader panics with a zfree error:Loading /boot/loader.test
*** keyboard not plugged in...
Console: SRM firmware console
panic: zfree(0x2003cb58,4096): wild pointer
versus the exact same code but without FICL linked in:
Loading /boot/loader
Console: SRM firmware console
VMS PAL rev: 0x1000600010114
OSF PAL rev: 0x1000600020116
Switch to OSF PAL code succeeded.
FreeBSD/alpha SRM disk boot, Revision 0.1
This is almost certainly an alpha infrastructure bug, not a FICL
problem. It's probably the same thing that made FICL fail for no
apparent reason on the Alpha.
NETGRAPH is not present in GENERIC at the moment. Also, change some
settings to support USB installs:
- Add KBD_INSTALL_CDEV as an option to make /dev/kbd[01] actually work.
- Turn on keyboard probing in sc0. The syscons driver will now use a
flag documented in ukbd(4) but not in sc(4) that tells syscons to
actively search for a keyboard device if none is found. This allows
USB keyboards to just be plugged in and instantly start working.
- Require the atkbd0 driver to actually probe to see if a keyboard is
there. This allows USB keyboards to be seen by sc0 if an AT keyboard
isn't plugged into the computer. This also means that you will no
longer be able to plug an AT keyboard into a machine after it has
booted a GENERIC kernel and use it. AT keyboards aren't designed for
this anyway. USB keyboards are designed for this, and they work.
stderr nodes. More specific items of this patch:
o Removed support for symbolic links, and the need for
fdesc_readlink().
o Put all the code from fdesc_attr() into fdesc_getattr() and removed
fdesc_attr(). This also made it easier to properly give all nodes
unique inode numbers.
o The removal of all non-fd nodes allowed the removal of the fdesc_read(),
fdesc_write(), and fdesc_ioctl() nodes, since we no longer have nodes
that get special handling.
o Correct the component name validity-checking in fdesc_lookup(). It
previously detected the end of the string by checking for a terminating
NUL, now it uses cnp->cn_namelen.
o Handle kqueue files as FIFOs. This is probably the closest file type
to represent this type of file there is, and it is unfortunately not
very representative of a kqueue. Creation time is not supported by
kqueue, so ctime, mtime and atime are all set to the current time when
getattr() was called.
o Also set st_[mca]time to the current time since there's no data in
socket structures that can be used to fill this in (FIFOs).
o Simplify fdesc_readdir() since it only has to report the numbered
fd nodes. Add `.' and `..' directory links as well.
o Remove read bits from directories as they tend to confuse programs
like tar(1).
Reviewed by: phk
Discussed with: bde (earlier on, not quite review)