Commit Graph

45690 Commits

Author SHA1 Message Date
Bill Paul
f6159e042d - Rewrite the timer and event API routines in subr_ndis.c so that they
are actually layered on top of the KeTimer API in subr_ntoskrnl.c, just
  as it is in Windows. This reduces code duplication and more closely
  imitates the way things are done in Windows.

- Modify ndis_encode_parm() to deal with the case where we have
  a registry key expressed as a hex value ("0x1") which is being
  read via NdisReadConfiguration() as an int. Previously, we tried
  to decode things like "0x1" with strtol() using a base of 10, which
  would always yield 0. This is what was causing problems with the
  Intel 2200BG Centrino 802.11g driver: the .inf file that comes
  with it has a key called RadioEnable with a value of 0x1. We
  incorrectly decoded this value to '0' when it was queried, hence
  the driver thought we wanted the radio turned off.

- In if_ndis.c, most drivers don't accept NDIS_80211_AUTHMODE_AUTO,
  but NDIS_80211_AUTHMODE_SHARED may not be right in some cases,
  so for now always use NDIS_80211_AUTHMODE_OPEN.

NOTE: There is still one problem with the Intel 2200BG driver: it
happens that the kernel stack in Windows is larger than the kernel
stack in FreeBSD. The 2200BG driver sometimes eats up more than 2
pages of stack space, which can lead to a double fault panic.
For the moment, I got things to work by adding the following to
my kernel config file:

options         KSTACK_PAGES=8

I'm pretty sure 8 is too big; I just picked this value out of a hat
as a test, and it happened to work, so I left it. 4 pages might be
enough. Unfortunately, I don't think you can dynamically give a
thread a larger stack, so I'm not sure how to handle this short of
putting a note in the man page about it and dealing with the flood
of mail from people who never read man pages.
2004-03-20 23:39:43 +00:00
Marcel Moolenaar
7b5ee3392b Don't make having ${DESTDIR}/boot/device.hints a prerequisite to
installing a kernel on ia64.
2004-03-20 22:47:30 +00:00
Marcel Moolenaar
562174ff37 Add uart_subr.c 2004-03-20 22:41:52 +00:00
Scott Long
ad452e6553 Don peril-sensitive sunglasses and add PCI Id's for two new cards. I've
only done minimal testing on one of these cards and the firmware folks
have been extremely uncooperative in answering my qeustions about them, so
hopefully they will work ok for everyone.
2004-03-20 21:07:36 +00:00
Alan Cox
1af1ebb84e - Add uiomove_fromphys() implementations to alpha and ia64. These only
differ trivially from amd64.
 - Correct a spelling error in a comment.
2004-03-20 21:06:20 +00:00
Nate Lawson
8e1624b6f8 Fix loop termination condition for parsing resources in _PRS buffers.
This completes the effort to handle dependent functions, which are used
in some machines for irq link resources.  Also, clean up some nearby
comments while I'm at it.
2004-03-20 20:47:08 +00:00
Marcel Moolenaar
a36bdc0606 Introduce the cpumask_t type. The purpose of the type is to create a
level of abstraction for any and all CPU mask and CPU bitmap variables
so that platforms have the ability to break free from the hard limit
of 32 CPUs, simply because we don't have more bits in an u_int. Note
that the type is not supposed to solve massive parallelism, where
the number of CPUs can be larger than the width of the widest integral
type. As such, cpumask_t is not supposed to be a compound type. If
such would be necessary in the future, we can deal with the issues
then and there. For now, it can be assumed that the type is integral
and unsigned.

With this commit, all MD definitions start off as u_int. This allows
us to phase-in cpumask_t at our leasure without breaking anything.
Once cpumask_t is used consistently, platforms can switch to wider
(or smaller) types if such would be beneficial (or not; whatever :-)

Compile-tested on: i386
2004-03-20 20:41:40 +00:00
Matthew N. Dodd
322b1dc4b0 Let ether_ifattach() announce our MAC address.
Submitted by:	Marius Strobl <marius@alchemy.franken.de>
2004-03-20 20:12:13 +00:00
Matthew N. Dodd
f7f2bd753e Don't announce MAC addresses twice.
(ieee80211_ifattach() calls ether_ifattach().)
2004-03-20 19:57:47 +00:00
Alan Cox
33d1379641 Introduce uiomove_fromphys(). This is a variant of uiomove() that takes
a collection of physical pages as the source.  On amd64 it is implemented
using the direct virtual-to-physical map.
2004-03-20 19:36:29 +00:00
Scott Long
fa2ed23667 Fix the ioctl types for two ioctls. I'm not sure if the switch was my
fault or the vendor's fault when I brought in rev 1.5.  This allows
the 'storcon' utility to work again.

Sponsored by:	freebsdsystems.com
2004-03-20 19:02:46 +00:00
Marcel Moolenaar
139a40ebfe Fix braino in previous commit: getenv() can return NULL. 2004-03-20 08:38:33 +00:00
Julian Elischer
8737555800 Put the event notification back where it was for freeBSD, after device creation.
Since NetBSD doesn't have devfs the order for them doesn't matter..
Reverses one part of 1.60->1.61 NetBSD diff reduction.

Obtained from:	 Not NetBSD
2004-03-20 07:31:11 +00:00
Marcel Moolenaar
e10f4ce153 Replace uint64_t with unsigned long in struct dbreg. 2004-03-20 05:27:14 +00:00
Marcel Moolenaar
056dc22c4f Actually program the list of recording devices in sv_mix_setrecsrc().
This change has not been tested.

This change was triggered by a gcc(1) warning on ia64 at -O2.  The
variable v was not used after being computed, which resulted in enough
dead code elimination (DCE) to confuse the compiler and emit a bogus
warning about the use of the variable i without prior definition. The
variable i is the loop variable.

Submitted by: des
Responsibility: marcel
2004-03-20 04:38:21 +00:00
Marcel Moolenaar
5ab92b80d0 Remove the last traditional hints. These hints only served the purpose
for uart(4) to figure out which device to use as console. Use this file
to define hw.uart.console instead so that we don't have to put it in
the default loader.conf, which makes it hard to override.
2004-03-20 04:23:03 +00:00
Marcel Moolenaar
2ae4f1fd16 Introduce the hw.uart.console and hw.uart.dbgport environment variables
to select a serial console and debug port (resp). On ia64 these replace
the use of hints completely and take precedence over hints on alpha,
amd64 and i386. On sparc64 these variables are not yet recognised.

The reasons for introducing these variables are:
1.  Hints have side-effects. They reserve the unit number for use by
    isa or acpi devices and therefore cannot be used to select a pci
    device. Also, the use of a unit number to select a device prior
    to bus enumeration is nonsense. The new variables have no side-
    effects and are not based on unit numbers.
2.  Hints don't have the expression power to allow the sysadmin to
    select UARTs that are not legacy PC devices and need the support
    of compile-time constants to give the sysadmin some level of
    flexibility.

The hw.uart.console and hw.uart.dbgport variables specify a list of
attributes. An attribute is a tag-value pair, seperated by a colon.
Attributes are seperated by a comma. Where possible, tags are the
same as those in /etc/remote (only br and pa in practice). Details
can be found in the manpage (not part of this commit).

Not tested on: amd64, pc98
2004-03-20 02:14:02 +00:00
Mike Silbersack
8affb13446 solid reports that it is buggy *and* that it slows down transmit
speed.

Buggy report:           Matt Dillon & others
Slowness report:        I can't find the e-mail

MFC After: 1 minute
2004-03-19 23:20:23 +00:00
Alan Cox
07be617f09 - Remove some unused #includes.
- Apply some style fixes to mdstart_swap().
2004-03-19 21:19:15 +00:00
Dag-Erling Smørgrav
13763d8311 This commit was generated by cvs2svn to compensate for changes in r127208,
which included commits to RCS files with non-trunk default branches.
2004-03-19 20:14:23 +00:00
Dag-Erling Smørgrav
5e5fc567c3 Sync with OpenBSD (two-year old bug fix) 2004-03-19 20:14:23 +00:00
David E. O'Brien
aec0eaa9a6 Delete local junk in previous commit. Sorry. 2004-03-19 17:40:45 +00:00
Scott Long
33ad16c0f1 Add generic support for the recent Adaptec flavors of ServeRAID. 2004-03-19 17:36:47 +00:00
David E. O'Brien
6acebfe40f Depend on rev 1.40.
Submitted by:	ru
2004-03-19 16:36:29 +00:00
Lukas Ertl
2c1305420f When doing round-robin reads from a multi-plex volume, only switch to the
next plex if the sector to be read isn't nearby the last read sector.

Submitted by:  Vsevolod Lobko <seva@ip.net.ua> via ru@
Approved by:   grog (mentor)
2004-03-19 10:28:34 +00:00
Julian Elischer
9db42b4960 Diff reduction to NetBSD
Bring over sundry small fixes from NetBSD

Obtained from:	NetBSD
MFC after:	1 week
2004-03-19 08:19:52 +00:00
Robert Watson
909d5c6308 Isolate PCB-specific ethertalk DDP functions in ddp_pcb.c, removing them
from ddp_usrreq.c.  Functions moved are:

  at_pcballoc()
  at_pcbconnect()
  at_pcbdetach()
  at_pcbdisconnect()
  at_pcbsetaddr()
  at_sockaddr()

Also moved are ddp_ports and ddpcb, global variables associated with DDP
pcbs.  This makes PCB implementation more parallel to inet, inet6, and
ipx.
2004-03-19 07:21:22 +00:00
Julian Elischer
bb841defc0 Diff reduction to NetBSD
Trying to figure out why this only works with SOME EHCI  controllers.

Obtained from:	NetBSD
MFC after:	1 week
2004-03-19 07:14:23 +00:00
Nate Lawson
eeb3a05f9a Move the poweroff handler to a separate function. Make sure it is run
on the boot processor (cpuid == 0).  Some chipsets do not power off the
system if the shutdown handler runs on an AP.
2004-03-19 07:05:01 +00:00
Julian Elischer
4de762365a Re-enable detach events after adding a bugfix from NetBSD
that unbreaks them.

Submitted by:	dillon
Obtained from:	NetBSD
MFC after:	2 days
2004-03-19 06:15:45 +00:00
David E. O'Brien
d046f60e40 'vi' got away from me in rev. 1.13. 2004-03-19 03:28:38 +00:00
Guido van Rooij
a5c7e3bb70 Prevent the strange situation that after each load/unload of a ppbus
device, the device is probed multiple times (so each device is
detected N times after unloading/loading the module N-1 times).

The real fix is (quote Doug and Warner):
> : In an ideal world, there should be some kind of BUS_UNIDENTIFY method
> : which a driver could use to delete the devices it created in
> : BUS_IDENTIFY.
>
> Or the bus would have a driver deleted routine that got called and it
> would remove all instances of the devclass attached to it.

Reviewed by:	Doug Rabson & Warner Losh
2004-03-18 21:10:11 +00:00
Ruslan Ermilov
200c238e95 Fixed a nasty old bug where a visual bell in the currently active
VTY prevented waking up processes waiting for the output queue to
get free on other VTYs.

In collaboration with:	Vsevolod Lobko
MFC after:		1 week
2004-03-18 21:07:54 +00:00
Guido van Rooij
b483c7f6e2 When mmap-ing a file from a noexec mount, be sure not to grant the right
to mmap it PROT_EXEC. This also depends on the architecture, as some
architextures (e.g. i386) do not distinguish between read and exec pages

Inspired by: 	http://linux.bkbits.net:8080/linux-2.4/cset@1.1267.1.85
Reviewed by:	alc
2004-03-18 20:58:51 +00:00
Nate Lawson
413081d79d Add tunables for disabling serialized method execution and disabling the
new _OSI method.  These can be used if these new features end up causing
regression for users.
2004-03-18 18:42:22 +00:00
Alan Cox
7cd53fdda8 Utilize sf_buf_alloc() and sf_buf_free() to implement the ephemeral
mappings required by mdstart_swap().  On i386, if the ephemeral mapping
is already in the sf_buf mapping cache, a swap-backed md performs
similarly to a malloc-backed md.  Even if the ephemeral mapping is not
cached, this implementation is still faster.  On 64-bit platforms, this
change has the effect of using the direct virtual-to-physical mapping,
avoiding ephemeral mapping overheads, such as TLB shootdowns on SMPs.

On a 2.4GHz, 400MHz FSB P4 Xeon configured with 64K sf_bufs and
"mdmfs -S -o async -s 128m md /mnt"

before:
dd if=/dev/md0 of=/dev/null bs=64k
134217728 bytes transferred in 0.430923 secs (311465697 bytes/sec)

after with cold sf_buf cache:
dd if=/dev/md0 of=/dev/null bs=64k
134217728 bytes transferred in 0.367948 secs (364773576 bytes/sec)

after with warm sf_buf cache:
dd if=/dev/md0 of=/dev/null bs=64k
134217728 bytes transferred in 0.252826 secs (530870010 bytes/sec)

malloc-backed md:
dd if=/dev/md0 of=/dev/null bs=64k
134217728 bytes transferred in 0.253126 secs (530240978 bytes/sec)
2004-03-18 18:23:37 +00:00
Brian Feldman
150883179a Add the missing Giant when doing anything with VFS -- in this case,
releasing the ktrace vnode.
2004-03-18 18:15:58 +00:00
David E. O'Brien
8bbf57a9c8 For AMD64, lets officially support a -O2 kernel build!
I've added -fno-strict-aliasing for now so we can ease into this.
I wanted to shoot for -O3, but the inlining caused problems due to GCC's
size heuristics; so also add -frename-registers, which is one of the things
-O3 would have given us.
2004-03-18 18:05:08 +00:00
Nate Lawson
fce89338bf Check in files off the vendor branch as well as files with local patches. 2004-03-18 17:46:27 +00:00
Nate Lawson
55545f899c This commit was generated by cvs2svn to compensate for changes in r127175,
which included commits to RCS files with non-trunk default branches.
2004-03-18 17:42:14 +00:00
Nate Lawson
731de42fc8 Import of Intel ACPI-CA 20040311. 2004-03-18 17:42:14 +00:00
Jacques Vidrine
3dc19c4677 Verify more bits of the ELF header: the program header table
entry size and the ELF version.  Also, avoid a potential integer
overflow when determining whether the ELF header fits entirely
within the first page.

Reviewed by:	jdp

A panic when attempting to execute an ELF binary with a bogus program
header table entry size was

Reported by:	Christer Öberg <christer.oberg@texonet.com>
2004-03-18 16:33:05 +00:00
Robert Watson
78592d56ef Correct a bug introduced with the recent clone API chang: when the clone
event handler for if_tap fails, make sure to clean up clone state to
prevent a clone memory leak.
2004-03-18 14:18:51 +00:00
David Malone
f6fee71d57 Make the vaule of PTT_RELAY_SID match the RFC. This should help PPPoE
users that are working with relayed PPPoE.

Submitted by:	Bodo Rüskamp <jordbaer@mac.com>
PR:		44936
Approved by:	julian
MFC after:	1 week
2004-03-18 12:34:14 +00:00
Christian Brueffer
13d6b675c3 s/enable/enables/ in a comment 2004-03-18 12:22:31 +00:00
Robert Watson
b4f5ef7eac sAdd a comment indicating why there continues to be a race condition in
the tap driver, even with Giant over the cdev operation vector, due to
a non-atomic test-and-set of the si_drv1 field in the dev_t.  This bug
exists with Giant under high memory pressure, as malloc() may sleep
in tapcreate(), but is less likely to occur.  The resolution will
probably be to cover si_drv1 using the global tapmtx since no softc is
available, but I need to think about this problem more generally
across a range of drivers using si_drv1 in combination with SI_CHEAPCLONE
to defer expensive allocation to open().

Correct what appears to be a bug in the original if_tap implementation,
in which tapopen() will panic if a tap device instance is opened more
than once due to an incorrect assertion -- only triggered if INVARIANTS
is compiled in (i.e., when built into a kernel).  Return EBUSY instead.

Expand mtx_lock() coverage using tp->tap_mtx to include tp->ether_addr.
2004-03-18 09:55:11 +00:00
Max Khon
c11857b462 Generate opt_inet.h.
Add opt_inet.h to SRCS.
2004-03-18 09:45:17 +00:00
Pawel Jakub Dawidek
950124e354 Move "is consumer attached?" check before G_VALID_PROVIDER() check,
because if consumer is not attached, its provider never will be valid,
so we never reach this check.

Approved by:	phk
2004-03-18 07:17:10 +00:00
Bruce Evans
8a21510e78 Removed a vestige of the stl driver. 2004-03-18 02:54:42 +00:00
David E. O'Brien
5a3b7e5e5c Document machdep.hlt_cpus.
Submitted by:	Craig Rodrigues <rodrigc@crodrigues.org>
2004-03-18 02:53:38 +00:00