Sepherosa Ziehau [Mon, 31 Oct 2005 13:08:35 +0000 (13:08 +0000)]
- hide ukphy_probe(), since it is not intended to be used outside of ukphy.c
- staticize ukphy_service(), which is only used in ukphy.c
- ANSIfy
Sepherosa Ziehau [Mon, 31 Oct 2005 12:49:05 +0000 (12:49 +0000)]
- In mii_anar(), turn on ANAR_CSMA at beginning instead of doing this in almost
every switch branch
- Turn on ANAR_CSMA for the return value of mii_bmsr_media_to_anar(). This
makes mii_bmsr_media_to_anar() consistent with mii_anar() and eliminates code
duplication. Adjust mii_bmsr_media_to_anar() callers accordingly
Sepherosa Ziehau [Mon, 31 Oct 2005 10:09:11 +0000 (10:09 +0000)]
nuke mii_data.mii_{readreg, writereg, statchg}, since we use Kobj instead of
these callback function pointers
Sepherosa Ziehau [Mon, 31 Oct 2005 09:20:05 +0000 (09:20 +0000)]
- In rlphy_attach(), turn on BMCR_AUTOEN after mii_phy_reset(). This unbreaks
auto-negotiation(*) before mii_mediachg() is called(in rl_init()). Add
comment on this change
- Staticize rlphy_{service, status}(), since they are only used in this file
- ANSIfy
(*)
The original broken auto-negotiation can easily be reproduced:
1) Comment out ifconfig_rl0 in /etc/rc.conf
2) Unplug wire from rl0
3) Restart DragonFly
4) Run `ifconfig rl0'
Sascha Wildner [Sun, 30 Oct 2005 23:00:57 +0000 (23:00 +0000)]
Fix style(9) issue: move * to the line specifying the function type.
Sascha Wildner [Sun, 30 Oct 2005 12:53:41 +0000 (12:53 +0000)]
msg_name and msg_control are void *, so no need to cast.
Sascha Wildner [Sun, 30 Oct 2005 10:07:10 +0000 (10:07 +0000)]
Fix style(9) issue: move * to the line specifying the function type.
Matthew Dillon [Sun, 30 Oct 2005 04:41:15 +0000 (04:41 +0000)]
Add another parameter to BUS_ADD_CHILD to allow children to inherit
code from grandparents.
Formalize and document the IDENTIFY mechanism and actually use it properly
to add PCI busses rather then the severe hacks that existed before.
Instead of attaching PCI busses (pcib) directly to nexus, create a pass-through
bus layer under nexus called 'legacypci' and attach the PCI busses to that.
Use the new BUS_ADD_CHILD and IVARS recursion capability to still allow
the pcib's under legacypci to get nexus generated IVARS.
NOTE ON IVARS: These can be utterly confusing because a BUS device may
manage and control the IVARS attached to its children. In addition, if the
BUS method for the device accessing the IVARs does not properly match up
with or recurse to the device that actually created the ivars, mass
confusion can result. I have attempted to document the issue but XXX it
needs some sanity check code.
Add a 'pcib_owner' global that is used to determine which of the several
possible PCI mainbus subsystems actually own the PCI mainbus. This is not
yet tied into ACPI but will be soon. No longer add legacy "pcib" busses
if it is detected that another subsystem controls the mainbus. Before
the busses were added but then simply not scanned later on, creating
confusing pcibX designations. Now the busses aren't added... legacypci
stops cold if it doesn't own the PCI mainbus. Get rid of the twisted
checks for "pci" devices that used to handle this job.
Document many aspects of the PCI code and redo some of the APIs slightly
to make them more obvious. In particular, document the odd fact that
pci_*() accessor function actually operate on a pci function code based
sub-device of the "pci" driver and call device_get_parent() to get to the
pci" driver layer. This sub layer really needs its own formal designation.
Change "pciX" attachments to "pcibY" busses. Use the secondary bus id
for 'X' and require it to be unique. Also reorder "pcibY" attachments
so the physical bus number tends to (but is not guarenteed to be) the
same 'Y' in pcibY.
Change IVARS access for bridges. Require that the device representing the
"pcib" device be passed to pcib_get/set_*() routines instead of children
of said device.
Add a function devclass_find_unit() to shortcut the more complex operation
of locating the devclass by name and then getting the device relative to
the devclass.
Add numerous bus_generic_*() BUS methods which now recurse through the
parent instead of terminate with an error.
YONETANI Tomokazu [Sun, 30 Oct 2005 04:20:49 +0000 (04:20 +0000)]
- kill `unused variable' warning pointed out by sephe@
- kill `defined but not used' warning by #ifdef'ing out
acpi_wake_set_sysctl() definition
YONETANI Tomokazu [Sun, 30 Oct 2005 04:05:09 +0000 (04:05 +0000)]
Unbreak `device pmtimer' for compiled-in acpi driver. It's only
enabled when you compile the acpi driver in the kernel, since
for i386 case, acpi.ko contains pmtimer code, so you don't need it
in the kernel.
Sascha Wildner [Sat, 29 Oct 2005 12:05:27 +0000 (12:05 +0000)]
- include <stdlib.h>
- remove register keywords
- remove (void) casts before function calls
- ANSI function declarations
- proper variable initialization
- constify strings where necessary
- remove prototype macro
- style(9) issues
- bump WARNS to 6 (no longer override bin/Makefile.inc)
Submitted-by: sephe
Joerg Sonnenberger [Fri, 28 Oct 2005 18:14:41 +0000 (18:14 +0000)]
Also install the new ftpd script.
Joerg Sonnenberger [Fri, 28 Oct 2005 18:06:57 +0000 (18:06 +0000)]
Add an option -H to override gethostname.
Joerg Sonnenberger [Fri, 28 Oct 2005 18:00:28 +0000 (18:00 +0000)]
Add rcng script to start ftpd stand-alone.
Liam J. Foy [Fri, 28 Oct 2005 16:01:04 +0000 (16:01 +0000)]
- Update to new icmp_error signature
Liam J. Foy [Fri, 28 Oct 2005 15:56:47 +0000 (15:56 +0000)]
- Dont pass a complete interface struct to icmp_error, just pass the mtu.
Obtained from: OpenBSD Camp
Ok'ed: dillon
Sascha Wildner [Fri, 28 Oct 2005 09:31:36 +0000 (09:31 +0000)]
Remove DEC Alpha support.
Matthew Dillon [Fri, 28 Oct 2005 03:25:57 +0000 (03:25 +0000)]
Cleanup some of the newbus infrastructure.
* Change the device_identify API to return success/failure, like
most of the other newbus methods. This may be used for conflict
resolution in the future.
* Clearly document the device_identify method and formalize its use
by adding discrimination between initial bus probes and bus rescans.
Do not re-execute static identification code that has already been run
every time a new driver is added at run-time.
* Clearly document the do-ISA-last hack.
* Provide generic routines for the most common device_identify operations
(psueo or synthesized devices that operate under other devices, such as
lpt operating under ppbus, which are not 'scanned' by the parent bus).
* Remove the hacks that install and initialize the nexus device. Instead,
use the existing DRIVER_MODULE infrastructure to install nexus under
root_bus.
* Document the boot-time initialization path so it doesn't take the next
guy 8 hours to figure out what code is actually being run when.
Sascha Wildner [Thu, 27 Oct 2005 14:38:57 +0000 (14:38 +0000)]
Sync zoneinfo database to tzdata2005n from elsie.
asia: 7.85 -> 7.86
australasia: 7.73 -> 7.74
northamerica: 7.79 -> 7.80
southamerica: 7.61 -> 7.62
Sepherosa Ziehau [Thu, 27 Oct 2005 14:03:56 +0000 (14:03 +0000)]
remove getdec() declaration, since this static function no longer exists or
is used in the file
Sepherosa Ziehau [Thu, 27 Oct 2005 13:33:19 +0000 (13:33 +0000)]
Kill most of the "unused variable" warning
# The only survivor is in dev/acpica5/Osd/OsdSynch.c:AcpiOsDeleteSemaphore()
Sepherosa Ziehau [Thu, 27 Oct 2005 03:51:55 +0000 (03:51 +0000)]
bug fixing:
BUS_SPACE_MAXADDR_32BIT should be the low address, while high address should
be BUS_SPACE_MAXADDR
Sepherosa Ziehau [Thu, 27 Oct 2005 03:15:47 +0000 (03:15 +0000)]
- convert {set, fill}_??regs() and ptrace_single_step() API to taking
struct lwp instead of struct proc, change their caller accordingly
- in i386/include/md_var.h, add forward declaration of struct lwp and eliminate
the no longer needed forward declaration of struct proc
- in i386/include/reg.h, add forward declaration of struct lwp and struct proc
- minor style and white space changes
Requested-and-Reviewed-by: corecode
Matthew Dillon [Thu, 27 Oct 2005 00:07:17 +0000 (00:07 +0000)]
Increase the MSGBUF_SIZE from 32K to 64K, boot verbose messages don't
fit in 32K anymore.
Matthew Dillon [Wed, 26 Oct 2005 17:15:03 +0000 (17:15 +0000)]
Add a redundant double-check in ffs_reallocblks and assert that the number
of blockmaps in the span does not exceed 2.
Matthew Dillon [Wed, 26 Oct 2005 17:13:40 +0000 (17:13 +0000)]
Assert that the vnode is locked when modifying an inode inside ffs_balloc.
Matthew Dillon [Wed, 26 Oct 2005 17:12:32 +0000 (17:12 +0000)]
Fix a bug in the ppbus code where an interrupt cookie might be torn down
twice. This didn't matter before when cookies were tested against a
list, but it matters now that they are treated as pointers to interrupt
descriptors.
Sepherosa Ziehau [Wed, 26 Oct 2005 14:19:08 +0000 (14:19 +0000)]
We have INTR_ENTROPY in sys/bus.h for ~20 months
This shuts up /dev/raid/twe/{twe.c, twe_freebsd.c} compile time gcc warning
Sepherosa Ziehau [Wed, 26 Oct 2005 13:59:41 +0000 (13:59 +0000)]
add forward declaration to shut up dev/usbmisc/umass/umass.c compile time
gcc warning
Sepherosa Ziehau [Wed, 26 Oct 2005 10:46:45 +0000 (10:46 +0000)]
unbreak kernel building by
- add arg2 to logipiq()
- adjust caller of logipiq()
Matthew Dillon [Wed, 26 Oct 2005 01:16:04 +0000 (01:16 +0000)]
Fix a long-standing bug in the livelock code. An interrupt thread normally
unmasks the hardware interrupt source when it is through. However, if a
livelock occurs the interrupt thread may be polled long after a device has
terminated operations and torn down its interrupt. To solve this problem,
only unmask the hardware interrupt if the IRQ still has device handlers
installed. This fixes a weird problem with the parallel port driver
(which installs and tears-down IRQ 7 on each write() for some unfathomable
reason).
Matthew Dillon [Wed, 26 Oct 2005 00:55:20 +0000 (00:55 +0000)]
Redo the interrupt livelock code. Simplify the frequency calculations
and add a 1-second stabilization requirement before a livelock is removed.
Fix a bug that prevented the code from actually limiting the interrupt rate
properly.
Greatly simplify ithread_done() and rename it to ithread_unmask(). It is
no longer responsible for putting the interrupt thread to sleep.
There is one issue left and that is the livelock code must re-enable the
interrupt at the limit frequency in order to detect when the actual
interrupt rate falls below the low water mark. In a livelocked situation
the actual interrupt rate will be about 2x the livelock limit because
both the systimer interrupt and the livelocked interrupt will be running.
Matthew Dillon [Wed, 26 Oct 2005 00:47:17 +0000 (00:47 +0000)]
Temporary hack until corecode can fix it. There is a p_rtprio and also
a lwp_rtprio. The scheduler was using lwp_rtprio but proc0 only initialized
p_rtprio, so all processes wound up with RTP_PRIO_REALTIME instead of
RTP_PRIO_NORMAL. This basically turned off the estcpu priority code and
made all runnable processes round robin equally.
Matthew Dillon [Tue, 25 Oct 2005 17:26:58 +0000 (17:26 +0000)]
Remove the dummy IPI messaging routines for UP builds and properly
conditionalize the use of IPI messages in various core kernel modules.
Change the callback from func(arg, frameptr) to func(arg1, arg2, frameptr),
where the new argument (arg2) is an integer supplied by the originator.
Create wrappers for simpler versions of the callback: func(arg1), and
func(arg1, arg2) (for the moment we presume that GCC will generate code
for the full-sized three-argument callback which is compatible with one
and two-argument function pointers).
This extension to the IPI messaging code is needed to properly implement
MP-safe tsleep/wakeup code. Although the extra argument is superfluous in
most cases, the overhead of doing an IPI is such that there should be no
noticeable impact on performance.
David Xu [Tue, 25 Oct 2005 12:14:52 +0000 (12:14 +0000)]
Make usleep as a cancellation point.
David Xu [Tue, 25 Oct 2005 12:14:15 +0000 (12:14 +0000)]
Make usleep as a weak symbol, so thread library can override it.
David Xu [Mon, 24 Oct 2005 23:59:21 +0000 (23:59 +0000)]
Export following functions:
_pthread_mutexattr_setpshared
_pthread_mutexattr_getpshared
pthread_mutexattr_setpshared
pthread_mutexattr_getpshared
David Xu [Mon, 24 Oct 2005 23:58:01 +0000 (23:58 +0000)]
Add pthread_mutexattr_setpshared and pthread_mutexattr_getpshared.
Eirik Nygaard [Mon, 24 Oct 2005 22:31:35 +0000 (22:31 +0000)]
Back out last change since Matt has issues will it. Will reimplement it using
his ideas.
Eirik Nygaard [Mon, 24 Oct 2005 21:57:55 +0000 (21:57 +0000)]
Make wakeup, tsleep and friends MP-safe.
Reviewed by: hsu
Matthew Dillon [Mon, 24 Oct 2005 20:12:11 +0000 (20:12 +0000)]
Add a missing BUF_UNLOCK in the last commit.
Matthew Dillon [Mon, 24 Oct 2005 20:02:09 +0000 (20:02 +0000)]
Avoid a recursive kernel fault and subsequent double fault if the VM fault
code gets a KVM map_entry with a NULL object. Such entries exist in system
maps managed directly by the kernel, such as the buffer cache and kernel_map.
Instead, we check for the condition and panic immediately. Programs which
access /dev/[k]mem can hit this race/failure.
Reported-by: =?ISO-8859-1?Q?Stefan_Kr=FCger?= <skrueger@meinberlikomm.de>
Matthew Dillon [Mon, 24 Oct 2005 19:59:51 +0000 (19:59 +0000)]
Temporarily work around a race in the kernel. The kernel does a sanity check
on the KVM memory range read via /dev/[k]mem. However, if the user buffer
takes a VM fault and blocks the process, the related kernel memory could
become invalid while the process was blocked. Try to avoid taking faults on
the user buffer by touching it first.
Reported-by: =?ISO-8859-1?Q?Stefan_Kr=FCger?= <skrueger@meinberlikomm.de>
Matthew Dillon [Mon, 24 Oct 2005 18:01:30 +0000 (18:01 +0000)]
Document kern.emergency_intr_{enable,freq} in loader.8.
Matthew Dillon [Mon, 24 Oct 2005 17:14:04 +0000 (17:14 +0000)]
Add two checks for potential buffer cache races.
"Warning buffer %p (vp %p lblkno %d) was recycled"
Occurs if a buffer is recycled unexpectedly. The code will print this
warning and retry if it detects the case.
"Warning invalid buffer %p (vp %p lblkno %d) did not have cleared b_blkno cache"
Occurs if a B_INVAL buffer's b_blkno cache has not been reset. The
code will reset the cache if it detects this case.
Matthew Dillon [Mon, 24 Oct 2005 16:55:40 +0000 (16:55 +0000)]
Pass mii_attach_args to mii_softc_init() rather then initializing the softc's
attach-args-related fields manually in each custom driver. Have
mii_softc_init() automatically merge mii_attach_args->mii_flags into
mii_softc->mii_flags.
Matthew Dillon [Mon, 24 Oct 2005 16:45:19 +0000 (16:45 +0000)]
Add an mii_flags field to the attach arguments, to make it easier to create
custom MII drivers without having to duplicate all of the generic
attach/detach code.
Add a simplified custom driver for nvidia/marvell which simply sets the
flag which allows the generic mii code to probe for GiGE.
Matthew Dillon [Mon, 24 Oct 2005 15:55:32 +0000 (15:55 +0000)]
Only check GiGE related flags in the generic code when MIIF_IS_1000X is set
in mii_softc->mii_flags. This really only effects the generic MII code, as
the flags for GigE may not be compatible with all devices (such as xl(4)).
Change the mii_add_media() API to pass mii_softc instead of mii_data, and
derive the instance id from the softc instead of passing it.
Reported-by: Sepherosa Ziehau <sepherosa@gmail.com>
Sepherosa Ziehau [Mon, 24 Oct 2005 08:06:16 +0000 (08:06 +0000)]
- Move DEVICE_POLLING from opt_global.h to opt_polling.h(newly added),
so that polling(4) can be enabled in modules that are not built
during kernel building
- Add opt_polling.h to files that depend on DEVICE_POLLING
- Change related netif modules' Makefile to enable polling(4) support
- Add comment in net/if_var.h to prevent DEVICE_POLLING related
incompatibilities from being introduced
Suggested-by: dillon
NOTE: As of this commit, any file that will depend on DEVICE_POLLING
*must* include opt_polling.h at its beginning
With-helps-from: joerg
Reviewed-by: dillon, submit@
Simon Schubert [Sat, 22 Oct 2005 04:06:53 +0000 (04:06 +0000)]
Unbreak vmstat by using sysctl instead of kvm.
Sascha Wildner [Fri, 21 Oct 2005 17:44:37 +0000 (17:44 +0000)]
Add 'shutdown' keyword to save mixer settings upon system shutdown
if 'mixer_enable' is set in rc.conf.
Sascha Wildner [Fri, 21 Oct 2005 17:41:20 +0000 (17:41 +0000)]
Upgrade rc.shutdown to FreeBSD's rev. 1.25. This is from
FreeBSD 5.2.1 which seems to be the stage of the majority
of our RCNG scripts.
RCNG scripts having the 'shutdown' keyword should properly
shut down now. Note that processing of the 'local_startup'
directories is "moved" to rc.d/localdaemons by this commit.
Sepherosa Ziehau [Fri, 21 Oct 2005 06:42:43 +0000 (06:42 +0000)]
- polling(4) support
- minor style adjust
Matthew Dillon [Thu, 20 Oct 2005 15:54:55 +0000 (15:54 +0000)]
Oops, fix the polling enable name, it's supposed to be kern.polling.enable,
not kern.polling.polling.
Reported-by: Sepherosa Ziehau <sepherosa@gmail.com>
Joerg Sonnenberger [Wed, 19 Oct 2005 16:54:25 +0000 (16:54 +0000)]
Avoid text-relocations, binutils don't like them on AMD64.
Sepherosa Ziehau [Wed, 19 Oct 2005 07:51:42 +0000 (07:51 +0000)]
Change kqueue_scan() interface to take "thread" instead of "proc", because
kqueue_scan() does not access any fields of "proc" other than "p_thread"
Sascha Wildner [Wed, 19 Oct 2005 05:18:36 +0000 (05:18 +0000)]
Fix wrong '/etc/rmt' and '/etc/termcap' symlinks created by
'make upgrade'.
Sepherosa Ziehau [Tue, 18 Oct 2005 15:31:10 +0000 (15:31 +0000)]
Adjust comment on DEVICE_POLLING option.
Reminded-by: Justin C. Sherrill <justin at shiningsilence.com>
Sepherosa Ziehau [Tue, 18 Oct 2005 15:19:03 +0000 (15:19 +0000)]
Add brief comment on DEVICE_POLLING option. This comment is taken from LINT
Requested-by: Justin C. Sherrill <justin at shiningsilence.com>
Sepherosa Ziehau [Mon, 17 Oct 2005 06:31:23 +0000 (06:31 +0000)]
add DEVICE_POLLING option
Approved-by: dillon
Sepherosa Ziehau [Mon, 17 Oct 2005 06:18:36 +0000 (06:18 +0000)]
Sync with FreeBSD dev/em
if_em.c rev 1.2.2.{20,21,22} 1.47 1.63
if_em.h rev 1.1.2.17
if_em_hw.c rev 1.1.2.12
if_em_hw.h rev 1.1.2.12
- Add support for Intel PRO/1000 GT Desktop Adapter
- Add support for Intel 82546GB dual port PCIE adapter
- Add fix for 82547 which corrects an issue with Jumbo frames larger than 10k
- Add fix for vlan tagged frames not being properly bridged
- Correct TBI workaround
- Correct LED operation issues
- Do not count RNBC (internal buffer full) towards the RX error count,
since it's not really an error
- Correct a workaround that should only be applied to one adapter. Workaround
was causing device hangs when incorrectly applied to other adapters (*)
- Run em_local_timer() once per second instead of running it once per 2 seconds.
This makes gathering of stats more precise
(*) Detailed problem description is in FreeBSD's PR kern/66634
Matthew Dillon [Sun, 16 Oct 2005 18:48:36 +0000 (18:48 +0000)]
Do a run through of the fragment allocation and freeing code, documenting
as I go. Add a KKASSERT() for one test that I wasn't sure about but
otherwise make no operational changes.
Matthew Dillon [Sat, 15 Oct 2005 21:03:24 +0000 (21:03 +0000)]
Only resynchronize the RTC on shutdown if we had previously loaded it and
we are not in a panic. This prevents early failures and panics from
writing a bad time back into the RTC.
Matthew Dillon [Sat, 15 Oct 2005 19:55:16 +0000 (19:55 +0000)]
MPTable fixup for Shuttle XPC with an AMD Athlon X2 - there is no entry
for IRQ 15, preventing ata1 (typically the CD) from operating properly.
Note that the ACPI table has an ISA entry for both IRQ 14 and IRQ 15.
Sascha Wildner [Sat, 15 Oct 2005 19:09:17 +0000 (19:09 +0000)]
Use nlink_t for number of links.
Matthew Dillon [Sat, 15 Oct 2005 18:50:08 +0000 (18:50 +0000)]
Display all IOAPIC pin assignments when bootverbose is specified, not
just the PCI assignments.
Matthew Dillon [Sat, 15 Oct 2005 03:23:01 +0000 (03:23 +0000)]
Implement an emergency interrupt polling feature. When enabled, most
interrupt handlers installed on the system will be polled at the specified
frequency. The exceptions are the 8254 clock and ATA interrupts (ATA can
blow up if it gets a fake interrupt, and the 8254 needs to work for systimers
to work which the poller is based on). These variables may be specified
in /boot/loader.conf and/or adjusted on a live system with sysctl.
kern.emergency_intr_enable (default 0 = off)
kern.emergency_intr_freq (default 10 = 10 hz)
THIS FEATURE IS NOT DESIGNED TO BE USED ON PRODUCTION SYSTEMS. It should be
used only for kernel development, debugging, and testing, to get devices to
work that would otherwise not work due to messed up interrupt routing, or if
you have no other choice. This feature has VERY HIGH OVERHEAD, as a dozen or
more service routines may be called on each tick. The feature can be
life-safer e.g. on machines that would otherwise not work at all with
DragonFly, to get them working well enough that they can communicate with
the outside world. As mentioned already, the primary use of this feature
is to aid in kernel development.
Matthew Dillon [Fri, 14 Oct 2005 23:45:59 +0000 (23:45 +0000)]
Bring another softupdates fix in from FreeBSD, FreeBSD commit message:
Retain generation count when writing zeroes instead of an inode to disk.
Don't free a struct inodedep if another process is allocating saved inode
memory for the same struct inodedep in initiate_write_inodeblock_ufs[12]().
Handle disappearing dependencies in softdep_disk_io_initiation().
Taken-from: FreeBSD/1.184
Author: tegge
Matthew Dillon [Fri, 14 Oct 2005 21:04:13 +0000 (21:04 +0000)]
FreeBSD commit message:
After a rmdir()ed directory has been truncated, force an update of
the directory's inode after queuing the dirrem that will decrement
the parent directory's link count. This will force the update of
the parent directory's actual link to actually be scheduled. Without
this change the parent directory's actual link count would not be
updated until ufs_inactive() cleared the inode of the newly removed
directory, which might be deferred indefinitely. ufs_inactive()
will not be called as long as any process holds a reference to the
removed directory, and ufs_inactive() will not clear the inode if
the link count is non-zero, which could be the result of an earlier
system crash.
This change has the fortunate side effect of more quickly cleaning
up the large number dirrem structures that linger for an extended
time after the removal of a large directory tree. It also fixes a
potential problem with the shutdown of the syncer thread timing out
if the system is rebooted immediately after removing a large directory
tree.
Taken-from: FreeBSD/1.185
Submitted-by: tegge
Sascha Wildner [Thu, 13 Oct 2005 11:05:10 +0000 (11:05 +0000)]
* Remove the old hardclock documentation and add information about
the kern.polling.pollhz sysctl variable.
* Add nv(4) and wi(4) to the list of devices that support polling.
Submitted-by: sephe
Sascha Wildner [Thu, 13 Oct 2005 10:57:50 +0000 (10:57 +0000)]
Document the "polling" and "-polling" parameters.
Submitted-by: sephe
Sepherosa Ziehau [Thu, 13 Oct 2005 10:22:07 +0000 (10:22 +0000)]
ANSIfy
Submitted-by: Matthias Schmidt <schmidtm at mathematik.uni-marburg.de>
Sepherosa Ziehau [Thu, 13 Oct 2005 08:50:33 +0000 (08:50 +0000)]
unbreak LINT building
Sepherosa Ziehau [Thu, 13 Oct 2005 08:10:18 +0000 (08:10 +0000)]
unbreak GENERIC building
Matthew Dillon [Thu, 13 Oct 2005 06:13:24 +0000 (06:13 +0000)]
Fix a bad panic check from the last commit in register_randintr().
Reported-by: Peter Avalos <pavalos@theshell.com>
Matthew Dillon [Thu, 13 Oct 2005 00:45:36 +0000 (00:45 +0000)]
Move the polling systimer initialization code out of kern_clock.c and into
kern_poll.c.
Program the polling systimer to 1hz while polling is disabled, to reduce
cpu waste. Change the default polling frequency to 2000hz.
Matthew Dillon [Thu, 13 Oct 2005 00:06:28 +0000 (00:06 +0000)]
Fix a bug where fsetfd() was not returning an error when it failed,
resulting in a panic.
Reported-by: Peter Avalos <pavalos@theshell.com>
Matthew Dillon [Thu, 13 Oct 2005 00:04:48 +0000 (00:04 +0000)]
Use sysctl's instead of KVM to access the interrupt name and count list.
Matthew Dillon [Thu, 13 Oct 2005 00:02:48 +0000 (00:02 +0000)]
Major cleanup of the interrupt registration subsystem.
* Collapse the separate registrations in the kernel interrupt thread and
i386 layers into a single machine-independant kernel interrupt thread layer
in kern/kern_intr.c. Get rid of the i386 layer's 'MUX' code entirely.
* Have the interrupt vector assembly code (icu_vector.s and apic_vector.s)
call a machine-independant function in the kernel interrupt thread
layer to figure out how to process an interrupt.
* Move a lot of assembly into the new C interrupt processing function.
* Add support for INTR_MPSAFE. If a device driver registers an interrupt
as being MPSAFE, the Big Giant Lock will not be obtained or required.
* Temporarily just schedule the ithread if a FAST interrupt cannot be executed
due to its serializer being locked.
* Add LWKT serialization support for a non-blocking 'try' function.
* Get rid of ointhand2_t and adjust all old ISA code to use inthand2_t.
* Supply a frame pointer as a pointer rather then embedding it on th stack.
* Allow FAST and SLOW interrupts to be mixed on the same IRQ, though this
will not necessarily result in optimal operation.
* Remove direct APIC/ICU vector calls from the apic/icu vector assembly code.
Everything goes through the new routine in kern/kern_intr.c now.
* Add a new flag, INTR_NOPOLL. Interrupts registered with the flag will
not be polled by the upcoming emergency general interrupt polling
sysctl (e.g. ATA cannot be safely polled due to the way ATA register
access interferes with ATA DMA).
* Remove most of the distinction in the i386 assembly layers between FAST
and SLOW interrupts (part 1/2).
* Revamp the interrupt name array returned to userland to list multiple
drivers associated with the same IRQ.
David Xu [Wed, 12 Oct 2005 23:53:52 +0000 (23:53 +0000)]
put pthread_timedjoin_np in right order.
Matthew Dillon [Wed, 12 Oct 2005 17:39:49 +0000 (17:39 +0000)]
Move a bunch of per-interrupt-thread variables from static storage to
stack storage.
Matthew Dillon [Wed, 12 Oct 2005 17:35:56 +0000 (17:35 +0000)]
Remove the INTR_TYPE_* flags. The interrupt type is no longer used to
figure out which spl*() set an interrupt belongs to, because, well, spl's
no longer exist.
Sepherosa Ziehau [Wed, 12 Oct 2005 10:28:02 +0000 (10:28 +0000)]
Since intr has been setup in the last step of vr_attach(), mii_phy_probe()
does not need any protection.
Sepherosa Ziehau [Wed, 12 Oct 2005 05:17:38 +0000 (05:17 +0000)]
- Make device polling use seperate SYSTIMER instead of hardclock
- Add "kern.polling.pollhz" sysctl-node/tunable-variable, which can be used to
set device polling frequency(1 ~ 20000) on a *running* system
Idea-and-Hint-from: dillon
Review-by: dillon, kernel@, submmit@
Test-with: fxp(4)
Matthew Dillon [Wed, 12 Oct 2005 01:09:31 +0000 (01:09 +0000)]
Properly serialize access in the NV ethernet driver and attempt to fix
another watchdog-on-reinit issue. I still see occassional watchdog timeouts,
however.
Add polling support, but there is currently no way to disable the interrupt
without also causing the NVidia interrupt callback functions to stop operating
(i.e. it stops doing work when called), so this feature is only really useful
to make the device work in cases where the kernel is unable to properly route
the interrupt.
It might be possible to do an end-run around the problem with a PCI bus
call to mask the interrupt there.
Call pfnClearTxDesc() prior to uninitializing an interface in the hopes
that it cleans out transmit descriptors and makes the callback so we can
deallocate the mbufs (not tested for that yet, but it atleast does not make
things any worse).
GigE NV interfaces should now negotiate for GigE speeds with the changes
made in the generic MII code.
Matthew Dillon [Wed, 12 Oct 2005 00:57:41 +0000 (00:57 +0000)]
Attempt to add generic GigE support to MII. If this creates issues we will
have to move the GigE nvidia support to its own mii module.
Simon Schubert [Tue, 11 Oct 2005 22:10:22 +0000 (22:10 +0000)]
Add forgotten temporary bandaid until ps knows about lwps.
Noticed-by: John Leimon
Matthew Dillon [Tue, 11 Oct 2005 18:23:17 +0000 (18:23 +0000)]
Add missing crit_exit(). If VR fails to attach the system will assert
that the critical section count is incorrect at the end of the boot sequence.
Reported-by: John Leimon
Simon Schubert [Tue, 11 Oct 2005 13:31:05 +0000 (13:31 +0000)]
Fix brain-o.
Noticed-by: Alexey Slynko, swildner
Simon Schubert [Tue, 11 Oct 2005 09:59:56 +0000 (09:59 +0000)]
1:1 Userland threading stage 2.8/4:
Switch the userland scheduler to use lwps instead of procs.
David Xu [Mon, 10 Oct 2005 13:53:57 +0000 (13:53 +0000)]
Introduce pthread_timedjoin_np.
David Xu [Mon, 10 Oct 2005 13:46:53 +0000 (13:46 +0000)]
Introduce pthread_timedjoin_np().
David Xu [Mon, 10 Oct 2005 13:45:57 +0000 (13:45 +0000)]
Replace THR_FLAGS_SUSPENDED with THR_FLAGS_NEED_SUSPEND, this
fixes the brokeness of pthread_attr_setcreatedsuspend_np.
Simon Schubert [Sun, 9 Oct 2005 21:38:04 +0000 (21:38 +0000)]
1:1 Userland threading stage 2.7/4:
- Retire p_sysmsgq and p_num_sysmsg and use the equivalents in lwp
- convert trap entry and exit points to use lwps
Simon Schubert [Sun, 9 Oct 2005 20:12:34 +0000 (20:12 +0000)]
1:1 Userland threading stage 2.6/4:
Retire p_upcall compat and use lwp_upcall instead.
Matthew Dillon [Sun, 9 Oct 2005 19:02:09 +0000 (19:02 +0000)]
Bump subversion in param.h
Reminded-by: Sepherosa Ziehau <sepherosa@gmail.com>
Simon Schubert [Sun, 9 Oct 2005 18:07:55 +0000 (18:07 +0000)]
1:1 Userland threading stage 2.5/4:
Remove compatibility p_dupfd and use the per-lwp one.
Liam J. Foy [Sun, 9 Oct 2005 15:09:02 +0000 (15:09 +0000)]
- Check for execvp returning ENOTDIR
Simon Schubert [Sun, 9 Oct 2005 14:50:21 +0000 (14:50 +0000)]
Correctly initialize n_threads.
Simon Schubert [Sun, 9 Oct 2005 14:44:04 +0000 (14:44 +0000)]
Get sources right so that we don't make depend if not needed.