52763 Commits

Author SHA1 Message Date
wpaul
a72168b811 When you call MiniportInitialize() for an 802.11 driver, it will
at some point result in a status event being triggered (it should
be a link down event: the Microsoft driver design guide says you
should generate one when the NIC is initialized). Some drivers
generate the event during MiniportInitialize(), such that by the
time MiniportInitialize() completes, the NIC is ready to go. But
some drivers, in particular the ones for Atheros wireless NICs,
don't generate the event until after a device interrupt occurs
at some point after MiniportInitialize() has completed.

The gotcha is that you have to wait until the link status event
occurs one way or the other before you try to fiddle with any
settings (ssid, channel, etc...). For the drivers that set the
event sycnhronously this isn't a problem, but for the others
we have to pause after calling ndis_init_nic() and wait for the event
to arrive before continuing. Failing to wait can cause big trouble:
on my SMP system, calling ndis_setstate_80211() after ndis_init_nic()
completes, but _before_ the link event arrives, will lock up or
reset the system.

What we do now is check to see if a link event arrived while
ndis_init_nic() was running, and if it didn't we msleep() until
it does.

Along the way, I discovered a few other problems:

- Defered procedure calls run at PASSIVE_LEVEL, not DISPATCH_LEVEL.
  ntoskrnl_run_dpc() has been fixed accordingly. (I read the documentation
  wrong.)

- Similarly, the NDIS interrupt handler, which is essentially a
  DPC, also doesn't need to run at DISPATCH_LEVEL. ndis_intrtask()
  has been fixed accordingly.

- MiniportQueryInformation() and MiniportSetInformation() run at
  DISPATCH_LEVEL, and each request must complete before another
  can be submitted. ndis_get_info() and ndis_set_info() have been
  fixed accordingly.

- Turned the sleep lock that guards the NDIS thread job list into
  a spin lock. We never do anything with this lock held except manage
  the job list (no other locks are held), so it's safe to do this,
  and it's possible that ndis_sched() and ndis_unsched() can be
  called from DISPATCH_LEVEL, so using a sleep lock here is
  semantically incorrect. Also updated subr_witness.c to add the
  lock to the order list.
2005-03-07 03:05:31 +00:00
grog
73be7f6caf Correct indentation style:
- "options" is followed by the characters \040\011, not \011\011.
  Correct both my own sins and those of others.
- Comment blocks start and end with an empty line ^#$.
- Remove non-standard comments added in my last commit.

Requested by: njl
Correctness confirmed by: bde
2005-03-07 02:20:14 +00:00
scottl
af7da441d2 Remove dead code. 2005-03-07 02:18:52 +00:00
grehan
e685aa6ce9 physmem is a much better indicator for 'real' memory on PPC than Maxmem
since there are often significant holes in the memory map due to the
kernel, loader and OFW data structures not being included: Maxmem is
the highest available, so can be misleading.
2005-03-07 01:52:24 +00:00
grehan
98946b0cc7 Allow user to undersize memory with hw.physmem loader variable.
Obtained from:  i386/machdep.c:getmemsize()
2005-03-07 01:46:06 +00:00
mux
7c1c0975e6 Fix typo. 2005-03-07 00:24:52 +00:00
sobomax
44e9d0b353 Regen after addition of linux_nosys handler. 2005-03-07 00:23:58 +00:00
sobomax
f706f4bce8 Handle unimplemented syscall by instantly returning ENOSYS instead of sending
signal first and only then returning ENOSYS to match what real linux does.

PR:		kern/74302
Submitted by:	Travis Poppe <tlp@LiquidX.org>
2005-03-07 00:18:06 +00:00
sobomax
78bc2de1cd When neither of supported frame type is enabled via kernel options enable
them all, otherwise the driver will be useless and will only confuse user
as manual page says nothing about the need to enable one of those frame
types explicitly in the kernel config.

PR:		kern/47152
Submitted by:	Andriy Gapon <avg@icyb.net.ua>
MFC after:	3 days
2005-03-06 23:03:58 +00:00
sobomax
354fd589c4 Fix ef(4) driver when kernel compiled w/o IPX.
MFC after:	3 days
2005-03-06 22:59:40 +00:00
sobomax
6f0b5d23e8 Always produce cpuX entries, even in the case when there is only one CPU
in the system. This is consistent with what real linuxes do.

PR:		kern/75848
Submitted by:	Andriy Gapon <avg@icyb.net.ua>
MFC after:	3 days
2005-03-06 22:28:14 +00:00
cognet
1bc82499df Use [ldr|str]t instead of [ldr|str] when accessing ARM_TP_ADDRESS. 2005-03-06 21:12:03 +00:00
cognet
5e08d267b5 Make sure ARM_TP_ADDRESS is accessible right now by calling pmap_fault_fixup,
as we can't rely on a trap happening, as it is done normally.
While I'm there, uncomment the call to cpu_dcache_wbinv_range() in
pmap_kenter_internal, as we don't call cpu_dcache_wbinv_all() there anymore.
2005-03-06 21:10:31 +00:00
scottl
ca187f3a65 Use correct flags for bus_dma_tag_create(). 2005-03-06 20:57:54 +00:00
alc
d17b2e103d Declare as volatile the memory location referenced by a pointer rather than
the pointer's value.
2005-03-06 20:57:08 +00:00
scottl
9b3a4f2d2f Use the correct flags for bus_dma_tag_create(). 2005-03-06 20:56:16 +00:00
alc
2213f95a52 The m_ext reference counts are potentially shared and modified
asynchronously by different threads.  Thus, declare as volatile the
reference count that is accessed through m_ext's pointer, ref_cnt.
Revert the previous change, revision 1.144, that casts as volatile a
single dereference of ref_cnt.

Reviewed by: bmilekic, dwhite
Problem reported by: kris
MFC after: 3 days
2005-03-06 20:09:00 +00:00
phk
4afa67d768 Always go to standby efter each call. 2005-03-06 19:43:12 +00:00
phk
9822008f96 Don't disable interrupts on a stray interrupt. 2005-03-06 19:42:32 +00:00
stefanf
2066001e45 Fix typos in a comment. 2005-03-06 13:53:05 +00:00
cognet
d058ee9a99 Unlike NetBSD's bcopy(), our bcopy allows the two strings to overlap, even in
kernel. So bring in the userland version, instead of just calling memcpy.
2005-03-06 13:11:32 +00:00
nyan
b2fcfd1c1d MFi386: revisions 1.609 and 1.610. 2005-03-06 12:59:59 +00:00
maxim
8c539c0cd2 o s/opt_ifpw.h/opt_ipfw.h/ in the previous commit.
Submitted by:	YONETANI Tomokazu
2005-03-06 11:22:49 +00:00
njl
471bba60d9 Whitespace nit. Clarifies which body this line belongs to. 2005-03-06 10:17:30 +00:00
imp
d9a2f9579c Back out previous commit. The description didn't match the commit,
and marking this interrupt as fast isn't quite right.  It also needs
to be MP Safe, and I've not done that work (yet).
2005-03-06 06:59:15 +00:00
imp
3781be01a4 Use BUS_PROBE_DEFAULT 2005-03-06 06:55:11 +00:00
mux
b5037ea214 Cleanup: u_intXX_t -> uintX_t conversion. 2005-03-06 05:07:26 +00:00
imp
9f6d060385 Use BUS_PROBE_DEFAULT for pci probe return value 2005-03-05 19:24:22 +00:00
imp
3c710e1d53 Use BUS_PROBE_DEFAULT for pci probe return value 2005-03-05 19:06:12 +00:00
des
7427eb62d6 MFi386: use TUNABLE_ULONG_FETCH to retrieve hw.physmem. 2005-03-05 18:57:30 +00:00
imp
a2e81fc93f Use BUS_PROBE_DEFAULT for pci probe return value 2005-03-05 18:30:12 +00:00
imp
5536442ca3 Use BUS_PROBE_DEFAULT for pci probe return value 2005-03-05 18:17:35 +00:00
des
035bc88881 Replace goto with continue. 2005-03-05 18:14:44 +00:00
imp
01223e02a3 Use BUS_PROBE_DEFAULT for pci probe return value 2005-03-05 18:10:49 +00:00
des
eaa0343ae5 Use TUNABLE_ULONG_FETCH to retrieve hw.physmem; getenv_quad() will take
care of the multiplier suffix.
2005-03-05 18:10:04 +00:00
des
0c48aa7290 Replace goto with continue. 2005-03-05 18:02:21 +00:00
des
92b3a60f35 Teach getenv_quad() to recognize k/m/g/t suffixes in both lower- and
upper-case.  This means (almost) all tunables now support those suffixes.
2005-03-05 15:52:12 +00:00
mux
b061c6f5ae Add support for fxp(4) cards found in Sony FS570 laptops.
Submitted by:	Gavin Atkinson <gavin.atkinson@ury.york.ac.uk>
2005-03-05 13:52:28 +00:00
davidxu
07ae169b7f Allocate umtx_q from heap instead of stack, this avoids
page fault panic in kernel under heavy swapping.
2005-03-05 09:15:03 +00:00
grog
92f843dad2 Add comments on setting resource limits. 2005-03-05 01:04:18 +00:00
grog
2b7b25b43b Add targets to build cscope name files and TAGS file for etags. 2005-03-05 00:56:15 +00:00
davidxu
ab7386cc5e The td_waitset is pointing to a stack address when thread is waiting
for a signal, because kernel stack is swappable, this causes page fault
in kernel under heavy swapping case. Fix this bug by eliminating unneeded
code.
2005-03-04 22:46:31 +00:00
marius
d730e7dc0a - sparc64/fhc/fhc.c:
Change fhc(4) to use IRQ numbers instead of RIDs for allocating the
  IRQs of children. This works similar to e.g. sbus(4), i.e. add the
  IRQ resources as fully specified to the resource lists of the children,
  allocate them like normal. When establishing the interrupt search the
  interrupt maps of the children for a matching INO to determine which
  map we need to write the fully specified interrupt number to and to
  enable the mapping (before the RID was used to indicate which interrupt
  map to use).

- dev/puc/puc.c:
  Revert rev. 1.38, with the above change fhc(4) no longer needs special
  treatment for allocating IRQs.

Thanks to:	joerg for providing access to an E3500
2005-03-04 22:23:21 +00:00
marius
ee7224dfdd Let central(4) manage the resources of its children so they don't need
to fiddle with OFW themselves.

Thanks to:	joerg for providing access to an E3500
2005-03-04 22:21:11 +00:00
joerg
dc76d87d6c Addendum to netchild's C compiler abstraction mega-patch which somehow
have been forgotten in my previous commit.

Submitted by:	netchild
2005-03-04 21:26:07 +00:00
njl
0ac02e4b45 On i386 platforms at least, ACPI throttling is accomplished by the chipset
modulating the STPCLK# pin based on the duty cycle.  Since p4tcc uses the
same mechanism (but internal to the CPU), we triggered a hang on some
systems at low frequencies when both were in use.  Now, disable
acpi_throttle when p4tcc is also present.

Tested by:	Kevin Oberman
2005-03-04 18:59:54 +00:00
le
af31e4b0b5 Don't allow to synchronize a plex that is already sychronizing.
Reset the 'syncing' flag in case of errors, too.

Some cosmetics.
2005-03-04 16:43:40 +00:00
marius
9b0e528ff8 Minor changes:
- Use FBSDID.
- Remove unused macro.
- Use auto-generated typedefs for the prototypes of the bus and device
  interface functions.
- Terminate the output of device_printf(9) with a newline char.
- Honour the return values of malloc(), OF_getprop(), etc.
- Use __func__ instead of hardcoded function names.
- Print the physical slot number and the board model on attach.

MFC after:	1 month
2005-03-04 16:01:57 +00:00
marius
ef7b3cc47d Minor changes:
- Use FBSDID.
- Remove an unused include.
- Use auto-generated typedefs for the prototypes of the device interface
  functions.
- Terminate the output of device_printf(9) with a newline char.
- Honour the return value of malloc(3).

MFC after:	1 month
2005-03-04 15:17:05 +00:00
nyan
dd4d0b5659 Don't use the ptoa() to set the 'realmem' variable. Because F/pc98's policy
is to keep the same as F/i386.
2005-03-04 14:26:23 +00:00