Commit Graph

20020 Commits

Author SHA1 Message Date
Pyun YongHyeon
01d1a6c355 Move interface reinitialization down after disabling WOL in resume
path.
2009-11-19 23:14:40 +00:00
Pyun YongHyeon
8476c243bb Minimize interface reinitialization by checking IFF_DRV_RUNNING
flag. This fixes unnecessary interface UP/DOWNs during getting an
IP address via DHCP.

Tested by:	Warren Block ( wblock<> wonkity dot com )
2009-11-19 23:12:44 +00:00
Pyun YongHyeon
accb4fcd92 Fix copy & paste error and remove extra space before colon.
Pointed out by: danfe
2009-11-19 22:59:52 +00:00
Pyun YongHyeon
8b3c64969b Use capability pointer to access PCIe registers rather than
directly access them at fixed address. Frequently the register
offset could be changed if additional PCI capabilities are added to
controller.
One odd thing is ET_PCIR_L0S_L1_LATENCY register. I think it's PCIe
link capabilities register but the location of the register does
not match with PCIe capability pointer + offset. I'm not sure it's
shadow register of PCIe link capabilities register.
2009-11-19 22:53:41 +00:00
John Baldwin
e55bc0154d - Hook into the existing stat timer to drive the transmit watchdog instead
of using if_watchdog and if_timer.
- Reorder detach to call ether_ifdetach() before anything else in tl(4)
  and wb(4).
2009-11-19 22:14:23 +00:00
John Baldwin
7cf545d0a1 - Add a private timer to drive the transmit watchdog instead of using
if_watchdog and if_timer.
- Fix some issues in detach for sn(4), ste(4), and ti(4).  Primarily this
  means calling ether_ifdetach() before anything else.
2009-11-19 22:06:40 +00:00
Pyun YongHyeon
d95121b427 Use bus_{read,write}_4 rather than bus_space_{read,write}_4. 2009-11-19 22:06:19 +00:00
Pyun YongHyeon
398f1b6501 style(9) 2009-11-19 21:53:21 +00:00
John Baldwin
d31c51daa7 Fix compile after previous "harmless" commit.
Pointy hat to:	jhb
2009-11-19 21:47:54 +00:00
Pyun YongHyeon
73e338b028 Remove extra spce at the EOL. 2009-11-19 21:46:58 +00:00
Pyun YongHyeon
cc3c3b4ec4 Add MSI support. 2009-11-19 21:45:06 +00:00
Pyun YongHyeon
5b8f4900f3 Destroy driver mutex in device detach. 2009-11-19 21:39:43 +00:00
Pyun YongHyeon
696e249300 Remove support code for FreeBSD 6.x versions. 2009-11-19 21:08:33 +00:00
John Baldwin
dbd69bc565 Remove commented out reference to if_watchdog and an assignment of zero to
if_timer.

Reviewed by:	scottl
2009-11-19 20:59:40 +00:00
Pyun YongHyeon
23263665d5 Remove complex macros that were used to compute bits values.
Although these macros may have its own strength, its complex
definition make hard to read the code.

Approved by:	delphij
2009-11-19 20:57:35 +00:00
John Baldwin
67e1dfa795 Several fixes to this driver:
- Overhaul the locking to avoid recursion and add missing locking in a few
  places.
- Don't schedule a task to call vge_start() from contexts that are safe to
  call vge_start() directly.  Just invoke the routine directly instead
  (this is what all of the other NIC drivers I am familiar with do).  Note
  that vge(4) does not use an interrupt filter handler which is the primary
  reason some other drivers use tasks.
- Add a new private timer to drive the watchdog timer instead of using
  if_watchdog and if_timer.
- Fixup detach by calling ether_ifdetach() before stopping the interface.
2009-11-19 19:35:15 +00:00
John Baldwin
71098608fc Several fixes to these drivers. Note that these two drivers are actually
just two different attachments (EISA and PCI) to a single driver.
- Add real locking.  Previously these drivers only acquired their lock
  in their interrupt handler or in the ioctl routine (but too broadly in
  the latter).  No locking was used for the stack calling down into the
  driver via if_init() or if_start(), for device shutdown or detach.  Also,
  the interrupt handler held the driver lock while calling if_input().  All
  this stuff should be fixed in the locking changes.
- Really fix these drivers to handle if_alloc().  The front-end attachments
  were using if_initname() before the ifnet was allocated.  Fix this by
  moving some of the duplicated logic from each driver into pdq_ifattach().
  While here, make pdq_ifattach() return an error so that the driver just
  fails to attach if if_alloc() fails rather than panic'ing.  Also, defer
  freeing the ifnet until the driver has stopped using it during detach.
- Add a new private timer to drive the watchdog timer.
- Pass the softc pointer to the interrupt handlers instead of the device_t
  so we can avoid the use of device_get_softc() and to better match what
  other drivers do.
2009-11-19 19:25:47 +00:00
John Baldwin
d4e576c497 - This driver used the if_watchdog timer both as a watchdog on transmit and
auto-negotiation.  To make this simpler and easier to understand I have
  split this out into two separate timers.  One just manages the auto-neg
  side of things and one is a transmit watchdog.  Neither uses if_watchdog.
- Call ether_ifdetach() at the start of detach.
2009-11-19 18:43:43 +00:00
John Baldwin
770c8c790f - Use callout_init_mtx() instead of callout_init(..., CALLOUT_MPSAFE).
- Add a missing callout_drain() to detach.
- Hook into the stats timer and use that to drive the transmit watchdog
  instead of using if_watchdog.
- Run the stats timer every second to match other drivers instead of every
  other second.
- Remove dubious callout handling that stopped the timer only to start it
  again while holding the driver lock without dropping it in between the
  stop and the start.
2009-11-19 18:37:55 +00:00
John Baldwin
73e7361eac This driver has two modes, a netgraph mode and an ifnet mode. In the
netgraph mode it used a private timer to drive the transmit watchdog.  In
the ifnet mode it used if_watchdog.  Now it always uses the private timer.
2009-11-19 18:21:51 +00:00
John Baldwin
e21e2eea58 These drivers only set if_timer but never set if_watchdog. Just remove
the assignments to if_timer.
2009-11-19 18:11:23 +00:00
Rui Paulo
9c9dad53b0 Add WorldB SKU.
Reviewed by:	sam
MFC after:	1 week
2009-11-18 18:48:18 +00:00
Konstantin Belousov
07ff915720 Fix pgsignal() call after signature change in r199355.
Reported and tested by:	bf1783 googlemail com
MFC after:	1 month
2009-11-17 19:24:26 +00:00
John Baldwin
dc8ecaacd4 Use the bus_*() routines rather than bus_space_*() for register operations. 2009-11-17 18:22:14 +00:00
Pyun YongHyeon
77e6010f24 It seems generation of link state change of e1000phy(4) is not
reliable on some Marvell PHYs. If msk(4) know it still does not
have established link check whether msk(4) missed the link state
change by looking into polled link state.

Reported by:	Mel Flynn < mel.flynn+fbsd.current <> mailing.thruhere dot net >,
		Gleb Kurtsou <gleb.kurtsou <> gmail dot com >
Tested by:	Gleb Kurtsou <gleb.kurtsou <> gmail dot com >
2009-11-17 18:19:45 +00:00
John Baldwin
3d32c12abf Always use a private timer instead of if_watchdog and if_timer to drive
the transmit watchdog.  These drivers already used a private timer when
compiled to use Netgraph.  This change just makes them always use the
private timer.  Note that these drivers do not compile and are disconnected
from the build due to TTY changes.
2009-11-17 16:43:02 +00:00
John Baldwin
b1f459a01b Use a private callout timer to drive the transmit watchdog instead of using
if_watchdog and if_timer.  The driver already contained an optional stats
timer that individual attachments could use to provide a 'tick' event.  The
stats timer only ran if the tick function pointer was non-NULL and the
attachment's tick routine had to call callout_reset(), etc.  Now the driver
always schedules a stat timer and manages the callout_reset() internally.
This timer is used to drive the watchdog and will also call the attachment's
'tick' handler if one is provided.

Tested by:	WATANABE Kazuhiro
2009-11-17 14:23:09 +00:00
John Baldwin
12d54232b2 Use a private timer to run the statistics timer instead of (ab)using
if_watchdog and if_timer.

Tested by:	WATANABE Kazuhiro  CQG00620 of nifty.ne.jp
2009-11-17 14:13:30 +00:00
Jung-uk Kim
2272d05019 Merge ACPICA 20091112. 2009-11-16 21:47:12 +00:00
Alexander Motin
5319fb62a8 Do not require payload data to be aligned. It is not mentioned in datasheet
and works fine in practice.
2009-11-16 20:54:47 +00:00
Andrew Thompson
185d20b5f9 Sort ID list by vendor. 2009-11-16 20:36:43 +00:00
Andrew Thompson
2f5c868874 Add the Curitel UM175 3g device. 2009-11-16 20:35:16 +00:00
Alexander Motin
6bd8779bb9 Change the way in which AHCI+PATA combined controllers, such as JMicron
and Marvell handled. Instead of trying to attach two different drivers to
single device, wrapping each call, make one of them (atajmicron, atamarvell)
attach do device solely, but create child device for AHCI driver,
passing it all required resources. It is quite easy, as none of
resources are shared, except IRQ.

As result, it:
- makes drivers operation more independent and straitforward,
- allows to use new ahci(4) driver with such devices, adding support for
new features, such as PMP and NCQ, same time keeping legacy PATA support,
- will allow to just drop old ataahci driver, when it's time come.
2009-11-16 15:38:27 +00:00
Alexander Motin
49b96d25da MFp4:
Check SNCQ HBA capability bit when reporting NCQ support to CAM.
2009-11-14 20:06:04 +00:00
Alexander Motin
00c4be80ae Disable PMP probing for Marvell AHCI controllers.
It is not working for some reason. Linux does the same.
2009-11-14 08:04:38 +00:00
Attilio Rao
884015f6fc Add sysctls in ahd(4) in order to keep track of different classes of
errors. So far 3 different classes are present (correctable,
uncorrectable and fatal) but more can be added easilly.

Obtained from:	Sandvine Incorporated
Reviewed by:	emase, gibbs
Sponsored by:	Sandvine Incorporated
MFC:		2 weeks
2009-11-13 22:57:20 +00:00
Alexander Motin
3f809d7a40 Add support for SATA ports on SATA+PATA Marvell controllers.
These controllers provide combination of AHCI for SATA and legacy
PCI ATA for PATA. Use same solution as used for JMicron controllers.
Add IDs of Marvell 88SX6102, 88SX6111. 88SX6141 alike controllers
2009-11-13 22:53:49 +00:00
Alexander Motin
a1c0421a4a Add more codec IDs. 2009-11-13 21:06:33 +00:00
Ed Schouten
4b2361f811 Convert syscons on i386 to TERM=xterm.
TEKEN_XTERM is now gone. Because we always use xterm mode now, we only
need a TEKEN_CONS25 switch to go back to cons25.
2009-11-13 11:28:54 +00:00
Ed Schouten
e42fc36867 Switch the default terminal emulation style to xterm for most platforms.
Right now syscons(4) uses a cons25-style terminal emulator. The
disadvantages of that are:

- Little compatibility with embedded devices with serial interfaces.
- Bad bandwidth efficiency, mainly because of the lack of scrolling
  regions.
- A very hard transition path to support for modern character sets like
  UTF-8.

Our terminal emulation library, libteken, has been supporting
xterm-style terminal emulation for months, so flip the switch and make
everyone use an xterm-style console driver.

I still have to enable this on i386. Right now pc98 and i386 share the
same /etc/ttys file. I'm not going to switch pc98, because it uses its
own Kanji-capable cons25 emulator.

IMPORTANT: What to do if things go wrong (i.e. graphical artifacts):

- Run the application inside script(1), try to reduce the problem and
  send me the log file.
- In the mean time, you can run `vidcontrol -T cons25' and `export
  TERM=cons25' so you can run applications the same way you did before.
  You can also build your kernel with `options TEKEN_CONS25' to make all
  virtual terminals use the cons25 emulator by default.

Discussed on:	current@
2009-11-13 05:54:55 +00:00
Navdeep Parhar
a9c23ef044 Don't disable the XGMAC's tx on ifconfig down. It is unnecessary
and can cause false backpressure in the chip.  Fix a us/ms mixup
while here.
2009-11-13 00:37:29 +00:00
Navdeep Parhar
3cb33003ce The 10GBASE-T card should use an IPG of 1. Also enable the check
for low power startup on this card.
2009-11-13 00:34:28 +00:00
Navdeep Parhar
1fa10c920e Make sure *some* edc is setup even for an unknown transceiver (assume
it is optical).
2009-11-13 00:31:51 +00:00
Navdeep Parhar
7ead19d4a8 sc->rev and is_offload(sc) will always be 0 during probe. Wait till
attach to get correct values.
2009-11-13 00:28:16 +00:00
Jung-uk Kim
2f28bf307c - Remove a redundant check for dpms(4).
- Test a cheaper function first.
2009-11-12 18:16:35 +00:00
Jung-uk Kim
bf71c25f87 - Partially revert hackish r198964 and r199002.
- Add a proxy driver vgapm to help vgapci to save/load VGA state.
- Move device_set_desc() to the right place while we are here.

Reviewed by:	jhb
2009-11-12 17:56:56 +00:00
John Baldwin
f140aad88c More consistent whitespace. 2009-11-11 20:29:40 +00:00
John Baldwin
58fbe5ab67 Use a dedicated callout to drive the transmit watchdog timer instead of
using if_watchdog and if_timer.

Tested by:	gavin
2009-11-11 20:27:53 +00:00
Jack F Vogel
466727ddbe With an i386 kernel the igb driver can cause a
page fault panic on initialization due to a large
number of bounce pages being allocated. This is due
to the dma tag requiring page alignment on mbuf mapping.
This was removed some time back from the ixgbe driver
and is not needed here either.
2009-11-11 19:13:40 +00:00
Alexander Motin
30a4094f86 MFp4:
- Move tagged queueing control from ADA to ATA XPT. It allows to control
  device command queue length correctly. First step to support < 32 tags.
- Limit queue for non-tagged devices by 2 slots for ahci(4) and siis(4).
- Implement quirk matching for ATA devices.
- Move xpt_schedule_dev_sendq() from header to source file.
- Move delayed queue shrinking to the more expected place - element freeing.
- Remove some SCSIsms in ATA.
2009-11-11 11:10:36 +00:00
Alexander Motin
8e57bf8357 MFp4:
Add set of chip IDs, known to support AHCI.
2009-11-11 10:44:09 +00:00
Ed Schouten
3a8a07eadd Allow Syscons terminal emulators to provide function key strings.
xterm and cons25 have some incompatibilities when it comes to escape
sequences for special keys, such as F1 to F12, home, end, etc. Add a new
te_fkeystr() that can be used to override the strings.

scterm-sck won't do anything with this, but scterm-teken will use
teken_get_sequences() to obtain the proper sequence.
2009-11-11 08:20:19 +00:00
Nathan Whitehorn
b201cde68d Reduce probe priority of USB input devices to BUS_PROBE_GENERIC from
BUS_PROBE_SPECIFIC. This allows device-specific drivers like atp to
attach reliably.

Reviewed by:	hps
2009-11-11 03:17:51 +00:00
John Baldwin
3be4af9213 - Locking fixes to not do silly things like drop the lock only to call a
function that immediately reacquires the lock.  Also removes recursive
  locking.
- Use the statistics timer to drive the transmit watchdog instead of using
  if_watchdog and if_timer.

Tested by:	gavin
2009-11-10 22:04:19 +00:00
Pyun YongHyeon
5c1da2fac0 Controller does not update Tx descriptors(send BDs) after sending
frames so remove unnecessary BUS_DMASYNC_PREREAD and
BUS_DMASYNC_POSTREAD of bus_dmamap_sync(9).
2009-11-10 20:29:20 +00:00
Nathan Whitehorn
d7f3684090 Add support for the touchpads found in later models of iBook and
Powerbook.

Reviewed by:	Rohit Grover <rgrover1 at gmail.com>
2009-11-10 19:14:06 +00:00
Alexander Motin
03a6387ec3 MFp4:
Organize device IDs and add some more of them.
2009-11-10 09:46:52 +00:00
Pyun YongHyeon
e6bf277eff Zero out Tx/Rx descriptors before using them. Also add missing
bus_dmamap_sync(9) after Tx descriptor initialization.
2009-11-09 23:09:18 +00:00
Pyun YongHyeon
aa94f33338 Add missing bus_dmamap_sync(9) before issuing kick command. 2009-11-09 22:58:30 +00:00
Roman Divacky
68c4dfdf0c Make isa_dma functions MPSAFE by introducing its own private lock. These
functions are selfcontained (ie. they touch only isa_dma.c static variables
and hardware) so a private lock is sufficient to prevent races. This changes
only i386/amd64 while there are also isa_dma functions for ia64/sparc64.
Sparc64 are ones empty stubs and ia64 ones are unused as ia64 does not
have isa (says marcel).

This patch removes explicit locking of Giant from a few drivers (there
are some that requires this but lack ones - this patch fixes this) and
also removes the need for implicit locking of Giant from attach routines
where it's provided by newbus.

Approved by:	ed (mentor, implicit)
Reviewed by:	jhb, attilio (glanced by)
Tested by:	Giovanni Trematerra <giovanni.trematerra gmail com>
IA64 clue:	marcel
2009-11-09 20:29:10 +00:00
Rui Paulo
4d16b4ec42 Driver for the Apple Touchpad present on MacBook (non-Pro & Pro).
Submitted by:	Rohit Grover <rgrover1 at gmail.com>
MFC after:	2 months
2009-11-09 15:59:09 +00:00
Alexander Motin
fb549e86e7 Add more ICH10 chip IDs.
Submitted by:	Dmitry S. Luhtionov <mitya@cabletv.dp.ua>
2009-11-09 09:27:09 +00:00
Xin LI
641182ba04 Initialize the whole message unit's DMA buffer to zero, this fixes a panic
during boot when ARC1200 is being used with certain motherboard models.

This commit brings the driver to the same state of vendor's 1.20.00.16
release.  Many thanks to Areca for their continued support to FreeBSD.

Reported by:	Jirka Mikulas <jiri mikulas com>
Submitted by:	Erich Chen (Areca)
Obtained from:	ftp://ftp.areca.com.tw/RaidCards/AP_Drivers/FreeBSD/DRIVER/SourceCode/arcmsr-freebsd-1.20.00.16-91010.zip
MFC after:	3 days
2009-11-09 07:28:29 +00:00
Pyun YongHyeon
4d3a629c65 Correct disabling checksum offloading for BCM5700 B0. 2009-11-09 00:16:50 +00:00
Andrew Thompson
a1f7c632cc Correct Olympus quirk.
Submitted by:	Pavel Gubin
2009-11-08 21:08:50 +00:00
Andrew Thompson
9dac8e0ed2 Add missing mtx_destroy().
Submitted by:	Sebastian Huber
2009-11-08 21:07:47 +00:00
Andrew Thompson
b029f6bb95 Improve support for High-speed USB audio devices.
- fix issues regarding the mixer, where the interface number was not set in
  time.
- fix wrong use of resolution parameter.

Submitted by:	Hans Petter Selasky
2009-11-08 21:00:50 +00:00
Andrew Thompson
883bb30022 improve support for high speed isochronous endpoints which does not run 1:1,
but needs intervalling 1:2, 1:4 or 1:8

Submitted by:	Hans Petter Selasky
2009-11-08 20:54:03 +00:00
Andrew Thompson
30b22abe40 Integrate lost interrupts patch from the old USB stack.
Some EHCI chips from VIA / ATI seem to trigger interrupts before writing back
the qTD status, or miss signalling occasionally under heavy load.  If the host
machine is too fast, we can miss transaction completion - when we scan the
active list the transaction still seems to be active. This generally exhibits
itself as a umass stall that never recovers.

We work around this behaviour by setting up this callback after any softintr
that completes with transactions still pending, giving us another chance to
check for completion after the writeback has taken place

Submitted by:	Alexander Nedotsuko
MFC after:	3 days
2009-11-08 20:51:15 +00:00
Andrew Thompson
10454ab700 ehci_init() will do reset and set the usbrev flag. Fix problem where
ehci_reset() was called before ehci_init().

PR:		usb/140242
Submitted by:	Sebastian Huber
2009-11-08 20:44:55 +00:00
Pyun YongHyeon
f5a034f95a Partially revert r199035.
Revision 1.158 says only lower ten bits of
BGE_RXLP_LOCSTAT_IFIN_DROPS register is valid. For BCM5761 case it
seems the controller maintains 16bits value for the register.
However 16bits are still too small to count all dropped packets
happened in a second. To get a correct counter we have to read the
register in bge_rxeof() which would be too expensive.

Pointed out by:	bde
2009-11-08 19:59:54 +00:00
Alexander Motin
6fb5300b34 Introduce define and kernel option ATA_REQUEST_TIMEOUT to control ATA(4)
command timeout.

Submitted by:	keramida
2009-11-08 14:33:19 +00:00
Alexander Motin
c43ee88764 Introduce hw.hptrr.attach_generic loader tunable to deny hptrr driver
attach chips with generic Marvell (non-HighPoint) PCI identification.
These chips are also supported by ata(4). Some vendors, like Supermicro,
are using same chips without providing HPT RAID BIOS.

PR:		kern/120842, kern/136750
2009-11-08 11:33:51 +00:00
Doug Barton
afe0ec0027 Properly turn off debugging
LART applied (gently) by:	sam
2009-11-08 02:33:33 +00:00
Pyun YongHyeon
e238d4ead1 Count number of inbound packets which were chosen to be discarded
as input errors. Also count out of receive BDs as input errors.
2009-11-08 01:30:35 +00:00
Pyun YongHyeon
25dc84f22f Don't count input errors twice, we always read input errors from
MAC in bge_tick. Previously it used to show more number of input
errors. I noticed actual input errors were less than 8% even for
64 bytes UDP frames generated by netperf.
Since we always access BGE_RXLP_LOCSTAT_IFIN_DROPS register in
bge_tick, remove useless code protected by #ifdef notyet.
2009-11-08 01:13:38 +00:00
Pyun YongHyeon
61ccb9da43 Tell upper layer we support long frames. ether_ifattach()
initializes it to ETHER_HDR_LEN so we have to override it after
calling ether_ifattch().
While I'm here remove setting if_mtu value, it's initialized in
ether_ifattach().
2009-11-07 20:37:38 +00:00
Doug Barton
5c670c33fc Turn off WPI_DEBUG by default as the driver seems sufficiently stable
at this point.

Reviewed by:	benjsc, thompsa
2009-11-07 18:42:53 +00:00
Andriy Gapon
f6eb382c79 acpi: remove 'magic' ivar
o acpi_hpet: auto-added 'wildcard' devices can be identified by
  non-NULL handle attribute.
o acpi_ec: auto-add 'wildcard' devices can be identified by
  unset (NULL) private attribute.
o acpi_cpu: use private instead of magic to store cpu id.

Reviewed by:	jhb
Silence from:	acpi@
MFC after:	2 weeks
X-MFC-Note:	perhaps the ivar should stay for ABI stability
2009-11-07 11:46:38 +00:00
Andriy Gapon
ede807c429 ichwd: don't attach to isa pnp device(s) by accident
Reviewed by:	imp, des
MFC after:	1 week
2009-11-07 11:41:23 +00:00
Pyun YongHyeon
03e78bd096 Fix I mssied in r199011. Rx ring index also should be updated.
If we fill Rx ring full instead of half we can simplify this logic
but this requires more experimentation.
2009-11-07 02:10:59 +00:00
Pyun YongHyeon
76202a1601 Add preliminary Yukon Ultra 2 support(88E8057). The controller
looks very similar to Yukon EC Ultra.

Tested by:	 kalin m ( kalin <> el dot net )
2009-11-07 01:14:09 +00:00
Pyun YongHyeon
943787f3a7 Reimplement Rx buffer allocation to handle dma map load failure.
Introduce two spare dma maps for standard buffer and jumbo buffer
respectively. If loading a dma map failed reuse previously loaded
dma map. This should fix unloaded dma map is used in case of dma
map load failure. Also don't blindly unload dma map and defer
dma map sync and unloading operation until we know dma map for new
buffer is successfully loaded. This change saves unnecessary dma
load/unload operation. Previously bge(4) tried to reuse mbuf
with unloaded dma map which is really bad thing in bus_dma(9)
perspective.
While I'm here update if_iqdrops if we can't allocate Rx buffers.
2009-11-07 01:01:33 +00:00
Pyun YongHyeon
c215fd771d Do bus_dmamap_sync call only if frame size is greater than
standard buffer size. If controller is not capable of handling
jumbo frame, interface MTU couldn't be larger than standard MTU
which in turn the received should be fit in standard buffer. This
fixes bus_dmamap_sync call for jumbo ring is called even if
interface is configured to use standard MTU.
Also if total frame size could be fit into standard buffer don't
use jumbo buffers.
2009-11-06 23:49:20 +00:00
Pyun YongHyeon
a669a81f0b bge(4) already switched to use UMA backed page allocator and local
memory allocator for jumbo frame was removed long time ago. Remove
no more used macros.
2009-11-06 22:37:29 +00:00
Jung-uk Kim
b66e2b8e50 Remove duplicate suspend/resume code from vga_pci.c and let vga(4) register
itself to an associated PCI device if it exists.  It is little bit hackish
but it should fix build without frame buffer driver since r198964.
Fix some style(9) nits in vga_isa.c while we are here.
2009-11-06 20:32:26 +00:00
John Baldwin
f802264db1 Take a step towards removing if_watchdog/if_timer. Don't explicitly set
if_watchdog/if_timer to NULL/0 when initializing an ifnet.  if_alloc()
sets those members to NULL/0 already.

(Missed this driver in the earlier commit.)
2009-11-06 20:07:16 +00:00
Pyun YongHyeon
ff08021657 It's normal to see Rx FIFO overruns under high network load and
showing the message creates other side-effects. Remove the Rx
FIFO overrun message in interrupt handler. msk(4) should recover
from the FIFO overruns without any user intervention. Users can
still check the Rx FIFO overrun counter from MAC MIB statistics
maintained in driver(dev.msk.0.stats.rx.overflows).
2009-11-06 18:51:05 +00:00
Pyun YongHyeon
56964c4c9f Remove unnecessary header file. 2009-11-06 18:36:09 +00:00
John Baldwin
775a636b11 - Use device_printf() instead of printf() with an explicit unit number
in the PCI attach routine.
- Simplify PCI probe.
- Remove no-longer-used 'unit' from an_attach() parameters.

PR:		kern/126924
Submitted by:	gavin
2009-11-06 18:28:13 +00:00
John Baldwin
e1b17582f4 Take a step towards removing if_watchdog/if_timer. Don't explicitly set
if_watchdog/if_timer to NULL/0 when initializing an ifnet.  if_alloc()
sets those members to NULL/0 already.
2009-11-06 14:55:01 +00:00
John Baldwin
f1b211841d Use device_printf() and if_printf() instead of printf() with an explicit
unit number and remove 'unit' members from softc.
2009-11-06 14:52:37 +00:00
Pyun YongHyeon
c3bbfed430 Correct MSI mode register bits. 2009-11-06 01:11:59 +00:00
Jung-uk Kim
2259d74c68 Save/restore VGA state from vga_pci.c instead of relying on vga_isa.c.
It was not working because we were saving its state after the device was
powered down.  Simplify vesa_load_state() as the culprit is fixed now.
2009-11-05 22:58:50 +00:00
Pyun YongHyeon
3ee5d7da8e Make bge_newbuf_std()/bge_newbuf_jumbo() returns actual error code
for buffer allocation. If driver know we are out of Rx buffers let
controller stop. This should fix panic when interface is run even
if it had no configured Rx buffers.
2009-11-04 21:06:54 +00:00
Pyun YongHyeon
0ac56796f7 Remove common DMA tag used for TX/RX mbufs and create Tx DMA tag
and Rx DMA tag separately. Previously it used a common mbuf DMA tag
for both Tx and Rx path but Rx buffer(standard ring case) should
have a single DMA segment and maximum buffer size of the segment
should be less than or equal to MCLBYTES. This change also make it
possible to add TSO with minor changes.
2009-11-04 20:57:52 +00:00
Pyun YongHyeon
a23634a177 Covert bge_newbuf_std to use bus_dmamap_load_mbuf_sg(9). Note,
bge_newbuf_std still has a bug for handling dma map load failure
under high network load. Just reusing mbuf is not enough as driver
already unloaded the dma map of the mbuf. Graceful recovery needs
more work.
Ideally we can just update dma address part of a Rx descriptor
because the controller never overwrite the Rx descriptor. This
requires some Rx initialization code changes and it would be done
later after fixing other incorrect bus_dma(9) usages.
2009-11-04 20:40:38 +00:00
Pyun YongHyeon
a41504a9b1 Use correct dma tag for jumbo buffer. 2009-11-04 20:19:21 +00:00
Jung-uk Kim
00b9e39e68 Do not probe video mode if we are not going to use it. 2009-11-04 17:30:48 +00:00
Alexander Motin
c82b245af9 Do not unarm callout on request completion and change slot selection
algorithm as done in ahci(4). This saves some CPU time on high request
rates.
2009-11-04 15:10:46 +00:00
Jung-uk Kim
421cd2f2fb Restore color palette format if we reset video mode. 2009-11-04 01:00:28 +00:00
Jung-uk Kim
7ac3e951e3 Save/restore VGA color palette while suspending and resuming. 2009-11-04 00:58:20 +00:00
Weongyo Jeong
35e8cd5f52 fixes a typo that value should be 0 not 10. 2009-11-03 21:47:07 +00:00
Jung-uk Kim
761eeb5fff Fix VESA color palette corruption:
- VBE 3.0 says palette format resets to 6-bit mode when video mode changes.
We simply set 8-bit mode when we switch modes if the adapter supports it.
- VBE 3.0 also says if the mode is not VGA compatible, we must use VBE
function to save/restore palette.  Otherwise, VGA function may be used.
Thus, reinstate the save/load palette functions only for non-VGA compatible
modes regardless of its palette format.
- Let vesa(4) set VESA modes even if vga(4) claims to support it.
- Reset default palette if VESA pixel mode is set initially.
- Fix more style nits.
2009-11-03 20:22:09 +00:00
Jaakko Heinonen
4586315a76 fdc(4) module unload fixes:
- Tear down the interrupt handler before killing the worker thread.
- Do geom withering as GEOM event to avoid acquiring the GEOM topology
  lock under Giant.

PR:		kern/104079
Reviewed by:	joerg
Approved by:	trasz (mentor)
2009-11-03 19:05:05 +00:00
Alexander Motin
6f9a51c735 MFp4:
- Rework timeout handling, to make it more graceful for devices sharing
controller port (with PMP). Wait for other commands completion/timeout
before initiating recovery.
- Handle timeouts and fatal errors with port hard-reset. The rest of
recovery will be done by XPT on receiving async event. More gracefull
per-device soft-reset recovery can be implemented later.
2009-11-03 12:03:13 +00:00
Alexander Motin
a69552e4b6 MFp4:
- Handle timeouts and fatal errors with port hard-reset. The rest of
recovery will be done by XPT on receiving async event. More gracefull
per-device soft-reset recovery can be implemented later.
- Add workaround for ATI SB600/SB700 PMP probe related bug, to speedup boot.
2009-11-03 11:47:07 +00:00
Matt Jacob
0bd051b869 Unbreak SBus cards which have been broken (apparently) for a while.
Most of the pieces came from Marius- correct settings for channels
and resource management. The one piece missing was that you cannot
for SBus cards replace 32 bit operations with A64 operations- not
supported.

Submitted by:	marius
MFC after:	3 days
2009-11-02 21:22:30 +00:00
Alexander Motin
99844cbf65 Add IDs for nVidia MCP65/77/79/89 SATA conntrollers. 2009-11-02 19:02:31 +00:00
Pyun YongHyeon
5b6d1d9d08 Add a check to know whether driver is still running after
reacquiring driver lock in Rx handler. re(4) drops a driver lock
before passing received frame to upper stack and reacquire the
lock. During the time window ioctl calls could be executed and if
the ioctl was interface down request, driver will stop the
controller and free allocated mbufs. After that when driver comes
back to Rx handler again it does not know what was happend so it
could access free mbufs which in turn cause panic.

Reported by:	 Norbert Papke < npapk <> acm dot org >
Tested by:	 Norbert Papke < npapk <> acm dot org >
2009-11-02 18:35:05 +00:00
Pyun YongHyeon
bb08f03318 Add BCM5761 PHY id. 2009-11-02 18:15:11 +00:00
Rui Paulo
99081d1c61 Big style cleanup. While there remove references to FreeBSD versions
older than 6.0.

Submitted by:	Paul B Mahol <onemda at gmail.com>
2009-11-02 11:07:42 +00:00
Andrew Thompson
0f92028501 - Add usb_fill_bulk_urb() and usb_bulk_msg() linux compat functions [1]
- Don't write actual length if the actual length pointer is NULL [2]
- correct Linux Compatibility error codes for short isochronous IN transfers
  and make status field signed.

Submitted by:	Leunam Elebek [1], Manuel Gebele [2]
2009-11-01 21:48:18 +00:00
Andrew Thompson
bb9c7a8b22 Fix a corner case where usbd_transfer_drain() can return too early if the
callback has dropped the mutex, leading to a panic.

Submitted by:	HPS
MFC after:	3 days
2009-11-01 21:44:37 +00:00
Andrew Thompson
acf4080f43 Check unit number and provide string name for consdev.
Submitted by:	HPS
2009-11-01 21:41:44 +00:00
Alexander Motin
6fd3e622e2 MFp4:
Allow SATA1 SiI chips to do full-sized DMA. Specification tells that we may
release DMA constrants even more, but it require some additional handling.
2009-11-01 13:06:15 +00:00
Stefan Eßer
7bcfccda40 While certain supported Symbios/LSI SCSI chips (532c896, 53c1000, 53c1010)
do support 64bit addresses, the current SCRIPTS code supports only 32bit
addresses causing data corruption for buffer addresses >4GB. This problem
affects 64bit machines with more than 4GB RAM or amd64 with 4GB and
memory hole remapping.
Work-around this problem with a bus_dma tag that requests bounce-buffers
for addresses >4GB. This causes some overhead, but given the maximum SCSI
bus speed of 160MB/s compared, the effect should hardly be noticeable.
The problem was reported by Mike Watters (mike at mwatters net) who also
verified that this fix cures the problem.

Since this change is a NOOP on systems with less than 4GB RAM and fixes
data corruption (in RAM and on disk) on systems with more than 4GB, I hope
that this change is accepted for 8.0.

MFC after:	3 days (pending approval)
2009-10-31 17:06:36 +00:00
Alexander Motin
25dd82a35b Allow newly added controllers to use full I/O sizes. 2009-10-31 14:19:50 +00:00
Alexander Motin
ebbb35ba70 MFp4:
- Remove most of direct relations between ATA(4) peripherial and controller
levels. It makes logic more transparent and is a mandatory step to wrap
ATA(4) controller level into ATA-native CAM SIM.
- Tune AHCI and SATA2 SiI drivers memory allocation a bit to allow bigger
I/O transaction sizes without additional cost.
2009-10-31 13:24:14 +00:00
Alexander Motin
6aca3a5d0b Add support for different request block format used by Gen-IIe Marvell SATA.
This adds support for Marvell 6042/7042 chips and Adaptec 1430SA controller.
2009-10-30 20:28:49 +00:00
Robert Noland
d2217702c1 Fix botched git -> svn merge.
MFC after:	2 weeks
2009-10-30 18:30:13 +00:00
Robert Noland
11de9e8c79 Cleanup in r600_blit
- Don't bother to assign vb until we know we have enough space
 - Add variables for sx2, sy2, dx2, dy2 so that these aren't
   calculated over and over, also reduce chance of errors.
 - Use switch to assign color/format

MFC after:	3 days
2009-10-30 18:08:46 +00:00
Robert Noland
29e3ffd4f5 A bit of cleanup work on radeon_freelist_get()
* Fix the main loop to search all buffers before sleeping.
  * Remove dead code

MFC after:	3 days
2009-10-30 18:07:22 +00:00
Robert Noland
615fb6e9bc Some general cleanup of scatter/gather memory allocation
- We don't need to check malloc return values with M_WAITOK
 - remove variables that we don't really need
 - cleanup the error paths by just calling drm_sg_cleanup()
 - fix drm_sg_cleanup() to be safe to call at any time

MFC after:	2 weeks
2009-10-30 18:02:10 +00:00
Robert Noland
6d68455174 Use system specified memory barriers rather than rolling our own. 2009-10-30 16:59:58 +00:00
Robert Noland
883759335f Fix blitter support for RS880 chips
MFC after:	3 days
2009-10-30 16:55:31 +00:00
Christian Brueffer
a452248814 Add support for Adaptec 39320LPE adapters.
PR:		124202
Submitted by:	Andre Albsmeier <Andre.Albsmeier@siemens.com>
Reviewed by:	gibbs
MFC after:	1 week
2009-10-30 16:23:56 +00:00
John Baldwin
62ec4c19c4 - Numerous whitespace and style fixes.
- More descriptive error messages when failing to parse components during
  attach.
2009-10-29 18:03:16 +00:00
Ed Maste
c89d07b9f5 Rename aac_srb32 to aac_srb, to match Adaptec's vendor driver. 2009-10-29 17:14:18 +00:00
Ed Maste
e46b9eeada Rename aac_fast_intr to aac_filter to reflect its current use. Eliminate
the fallback of using the filter as an interrupt handler, as it is no
longer needed.

Discussed with:	scottl, jhb
2009-10-29 14:53:45 +00:00
Nathan Whitehorn
e5310f3310 Add some magic taken from OS X and Linux to support early revision K2
SATA controllers, like those found on the G5 Xserve.

Reviewed by:	mav
2009-10-29 13:28:37 +00:00
Nathan Whitehorn
f3755df16d Turn off use of ATA_A_4BIT on modern hardware. This flag was already
obsoleted in 1996 by ATA-2, and crashes some modern hardware like some
revisions of the Serverworks K2 SATA controller. Even very ancient
hardware seems not to require it. In the unlikely event this causes
problems, the previous behavior can be re-enabled by defining
ATA_LEGACY_SUPPORT at the top of this file.

Reviewed by:	Alexander Motin <mav@freebsd.org>
2009-10-29 13:27:14 +00:00
Christian Brueffer
af57883569 Remove spurious )
PR:		137758
Submitted by:	Henning Petersen <henning.petersen@t-online.de>
MFC after:	1 week
2009-10-28 15:22:58 +00:00
Ed Maste
867b1d3431 Do first controller time sync after 1 minute, as in Adaptec's vendor
driver.
2009-10-28 13:50:28 +00:00
Ed Maste
b69a64e9c8 Whitespace fixup: 8 spaces -> tab 2009-10-27 19:37:37 +00:00
Jaakko Heinonen
0c73f68bb6 Don't ignore the return value of g_modevent() in fdc_modevent().
Approved by:	trasz (mentor)
2009-10-27 17:14:22 +00:00
Jaakko Heinonen
e4bd91445e Don't ignore the return value of g_modevent() in acd_modevent().
Approved by:	trasz (mentor)
2009-10-27 17:12:59 +00:00
Andrew Thompson
c2e8b89ce4 Revert r198500 for now, this will break situations when
hw.pci.usb_early_takeover is set to zero and the SMM release
is never done.

Pointed out by:	marcel
2009-10-26 21:47:16 +00:00
Andrew Thompson
77cbe30ea9 Remove usb controller takeover code now that it is handled by the pci code.
Reminded by:	jhb
Reviewed by:	HPS
2009-10-26 20:23:15 +00:00
Alexander Motin
84f620d3e2 Report SATA speeds to CAM, to not confuse users with low numbers logged. 2009-10-26 11:26:49 +00:00
Alexander Motin
e8579543e8 Round timeout up when converting CAM milliseconds to ATA seconds. 2009-10-26 11:23:41 +00:00
Alexander Motin
cc0daebb53 Increase ATA command timeouts. Some drives need more then 5s to spin-up.
PR:		kern/111023
2009-10-26 11:20:14 +00:00
Alexander Motin
3663f8041b Add IDs for PATA part also. 2009-10-26 10:07:52 +00:00
Alexander Motin
6d3af67b23 Add two more VIA SATA chip IDs.
PR:		kern/135057
2009-10-26 10:00:59 +00:00
Alexander Motin
55944f2a75 Fix SATA on nVidia MCP55 chipset. It needs some short time to allow BAR(5)
memory access.

PR:		amd64/128686, amd64/132372, amd64/139156
MFC after:	3 days
2009-10-26 08:41:10 +00:00
Ulf Lilleengen
0e0ed74fcc - Add support for Marvell Yukon 88E8042 device.
Submitted by:	Mario Lobo <mlobo -at- digiart.art.br>
Approved by:	yongari
2009-10-25 21:46:38 +00:00
Rui Paulo
e7e0fcbea8 Updates to the iwn driver:
* iwnfw has now been split into individual modules so autoloading of
  firmware module(s) does work again.
* Changes have been made to RUN -> AUTH transition, this should fix the
  issue reported by Glen and others.
* Brandon reported issues in iwn_cmd() with large commands, those have
  been fixed to.
* DEAUTH is now handled correctly.

Submitted by:	Bernhard Schmidt <bschmidt at techwires.net>
2009-10-24 09:55:11 +00:00
Joseph Koshy
27be5d5888 Only claim that the PMC_CLASS_IAF PMCs are supported by a CPU if
there are PMCs on the CPU that belong to the class.

Review and testing by:	fabient
2009-10-24 01:58:10 +00:00
Marcel Moolenaar
d6eb44c8b0 BIOSes, buggy or otherwise, are i386 or amd64 specific.
Have the early USB takeover enabled for i386 and amd64
by default.
This also avoids a panic on PowerPC where the resource
isn't released properly and we find a busy resource
when the USB host controller wants to allocate it...
2009-10-23 22:53:01 +00:00
Rui Paulo
8f30200753 Updated iwn(4) driver supporting the newer series, 5000, 5150 and 5300.
Submitted by:	Bernhard Schmidt <bschmidt at techwires.net>
2009-10-23 22:04:18 +00:00
Alexander Motin
27acd6ea1f Reimplement device reset sequence in more controller-specific way. 2009-10-23 21:33:26 +00:00
Jung-uk Kim
9871fde43f Remove a redundant byte swapping in the previous commit. 2009-10-23 19:02:53 +00:00
Jung-uk Kim
974f3534c0 Search for default 800x600 graphics mode from supported VESA mode list.
Many video controllers do not support 800x600x24 mode any more.
2009-10-23 18:53:21 +00:00
Jung-uk Kim
a0ce33465f - When we restore VESA state, try BIOS POST earlier. VESA restore state
function may not work properly if we don't.  Turn off hardware cursor as
vesa_set_mode() does.
- Add VBE 3.0 specific fields in VESA mode structure and pack it.  Note
the padding is 190 bytes although VBE 3.0 says 189 bytes.  It must be wrong
because the size of structure becomes 255 bytes and the specification says
it must be 256 bytes in total.  In fact, an example code in the spec. does
it right, though.  While we are at it, fix some i386-isms.
- Remove state buffer size limitation.  It is no longer necessary since
sys/compat/x86bios/x86bios.c r198251.
- Move int 0x10 vector test into vesa_bios_post() as we always do it anyway.
2009-10-23 18:41:00 +00:00
Alexander Motin
90759b0021 MFp4:
Do not differentiate 12/16 bytes ATAPI CCB formats when it is not needed.
2009-10-23 14:56:29 +00:00
Alexander Motin
c269e21049 Revert interrupt reason check order back.
ATAPI errors may set IF bit together with TFE.
2009-10-23 13:07:22 +00:00
Andrew Thompson
4ed0304c97 Allow dumping the USB mouse reports via 'sysctl -b dev.ums.N.parseinfo',
previously only available via bootverbose.

PR:		usb/137191
Submitted by:	Eygene Ryabinkin
2009-10-22 20:54:01 +00:00
Rui Paulo
bcda02c3e4 Don't use BUS_DMA_ALLOCNOW as that causes the attachment to fail on
Cambria boards.

MFC after:	2 months
2009-10-22 12:48:17 +00:00
Christian Brueffer
ef1be3b042 Check pointer for NULL before dereferencing it, not after.
PR:		138387, 138388
Submitted by:	Patroklos Argyroudis <argp@census-labs.com>
MFC after:	1 week
2009-10-22 06:51:29 +00:00
Fabien Thomas
fa630f3569 Handle the case where there is only one PMC in the system.
Approved by: jkoshy (mentor)
MFC after: 3 days
2009-10-21 18:46:36 +00:00
Christian Brueffer
41d7d5932e Check pointer for NULL before dereferencing it, not after.
PR:		138383
Submitted by:	Patroklos Argyroudis <argp@census-labs.com>
Reviewed by:	rnoland
MFC after:	1 week
2009-10-21 15:54:45 +00:00
Christian Brueffer
022ad82222 Check pointer for NULL before dereferencing it, not after.
PR:		138384
Submitted by:	Patroklos Argyroudis <argp@census-labs.com>
MFC after:	1 week
2009-10-21 15:04:50 +00:00
Christian Brueffer
56d7cd7cf1 Add a missing free() call.
PR:		138379
Submitted by:	Patroklos Argyroudis <argp@census-labs.com>
Reviewed by:	gibbs
MFC after:	1 week
2009-10-21 14:09:06 +00:00
Alexander Motin
8e7cccb3bd MFp4:
Report real max_target = 15. SIM doesn't need to know that target 15 is PMP.
It is XPT business.
2009-10-21 13:00:01 +00:00
Alexander Motin
e06db1922d MFp4:
Freeze device queue on error to permit periph driver to do proper recovery.
2009-10-21 12:47:39 +00:00
Stanislav Sedov
a0d600845e - Introduce new option BCE_JUMBO_HDRSPLIT that allows user to enable header
splitting in bce(4) instead of (ab)using ZERO_COPY_SOCKETS that was not
  propagated into if_bce.c anyway.  It is disabled by default.

Approved by:	davidch
MFC after:	3 days
2009-10-21 12:47:09 +00:00
Alexander Motin
a1aa38dedf MFp4:
On error, freeze device queue, to allow periph driver to do proper recovery.
Freeze SIM queue only in some cases, when it is needed to protect SIM.

Implement better command timeout detection logic for non-queued commands.
This fixes false positives when command with short timeout waiting for the
long one. For example, when hald tastes CD during burning process.

Read and clear SERR register on interrupt.
2009-10-21 12:42:25 +00:00
Stanislav Sedov
15eda8010b - On entrance to the rx_eof sync RX rings maps with POSTWRITE flag
instead of POSTREAD: the hardware do not touch this memory (CPU
  updates it).  It is already synchronized as PREWRITE after the
  processing is done.

- Synchronize RX return ring memory in rx_eof.  This is needed
  as the deviced updates this memory when receives packets.

- Decouple the synchronization of BGE status block in the interrupt
  service routine: perfrom PREREAD synchronization only all accesses
  to this block are finished.  This seems to be more natural.

Reviewed by:	yongari, marius
MFC after:	2 weeks
2009-10-21 11:50:18 +00:00
Andrew Thompson
11cf5c2f81 Change from CAM_TID_INVALID to CAM_SEL_TIMEOUT error code when the usb device
has been yanked, this works around a cam recounting bug when
CAM_DEV_UNCONFIGURED is set late in the detach. In certain conditions the
reference to the XPT device would not be released which would cause the usb
explore thread to sleep forever on "simfree", preventing any new usb devices to
be found/ejected on the bus.

This is intended to be a quick workaround to the problem without touching CAM
so it can be merged to 8.0.

Suggested by:	mav
MFC after:	3 days
2009-10-20 21:29:46 +00:00
Andrew Gallatin
6b484a49cd Make mxge do a better job recovering from NIC h/w faults
by checking PCI config space when the NIC is not
transmitting.  Previously, a h/w fault would not have been
detected if the NIC was down, or handling an RX only
workload.
2009-10-20 18:58:28 +00:00
Alexander Kabaev
363b8ed74f Use callout_init_mtx on FreeBSD versions recent enough. This closes
the race where interrupt thread can complete the request for which
timeout has fired and while mpt_timeout has blocked on mpt_lock.

Do a best effort to keep 4.x ang Giant-locked configurartions
compiling still.

Reported by: ups
Reviewed by: scottl
2009-10-20 02:35:12 +00:00
Jung-uk Kim
494d4d251b Remove a redundant option ROM check, which was never meant to be committed. 2009-10-19 23:09:39 +00:00
Andrew Thompson
11f35cfaa7 Add support for newer WinChipHead CH341 chips, previously in the uch341 driver.
Submitted by:	HPS
2009-10-19 21:52:02 +00:00
Andrew Thompson
b20adc2b5a Remove the newly added uch341 driver, it will be merged into uchcom instead.
Suggested by:	takawata
Submitted by:	HPS
2009-10-19 21:43:59 +00:00
Jung-uk Kim
3219f535d9 Rewrite x86bios and update its dependent drivers.
- Do not map entire real mode memory (1MB).  Instead, we map IVT/BDA and
ROM area separately.  Most notably, ROM area is mapped as device memory
(uncacheable) as it should be.  User memory is dynamically allocated and
free'ed with contigmalloc(9) and contigfree(9).  Remove now redundant and
potentially dangerous x86bios_alloc.c.  If this emulator ever grows to
support non-PC hardware, we may implement it with rman(9) later.
- Move all host-specific initializations from x86emu_util.c to x86bios.c and
remove now unnecessary x86emu_util.c.  Currently, non-PC hardware is not
supported.  We may use bus_space(9) later when the KPI is fixed.
- Replace all bzero() calls for emulated registers with more obviously named
x86bios_init_regs().  This function also initializes DS and SS properly.
- Add x86bios_get_intr().  This function checks if the interrupt vector is
available for the platform.  It is not necessary for PC-compatible hardware
but it may be needed later. ;-)
- Do not try turning off monitor if DPMS does not support the state.
- Allocate stable memory for VESA OEM strings instead of just holding
pointers to them.  They may or may not be accessible always.  Fix a memory
leak of video mode table while I am here.
- Add (experimental) BIOS POST call for vesa(4).  This function calls VGA
BIOS POST code from the current VGA option ROM.  Some video controllers
cannot save and restore the state properly even if it is claimed to be
supported.  Usually the symptom is blank display after resuming from suspend
state.  If the video mode does not match the previous mode after restoring,
we try BIOS POST and force the known good initial state.  Some magic was
taken from NetBSD (and it was taken from vbetool, I believe.)
- Add a loader tunable for vgapci(4) to give a hint to dpms(4) and vesa(4)
to identify who owns the VESA BIOS.  This is very useful for multi-display
adapter setup.  By default, the POST video controller is automatically
probed and the tunable "hw.pci.default_vgapci_unit" is set to corresponding
vgapci unit number.  You may override it from loader but it is very unlikely
to be necessary.  Unfortunately only AGP/PCI/PCI-E controllers can be
matched because ISA controller does not have necessary device IDs.
- Fix a long standing bug in state save/restore function.  The state buffer
pointer should be ES:BX, not ES:DI according to VBE 3.0.  If it ever worked,
that's because BX was always zero. :-)
- Clean up register initializations more clearer per VBE 3.0.
- Fix a lot of style issues with vesa(4).
2009-10-19 20:58:10 +00:00
Andrew Gallatin
72c042dfb5 Move mxge(4)'s NIC watchdog reset handler from
a callout to a taskqueue
2009-10-19 20:51:27 +00:00
Nathan Whitehorn
635dc3f7ff Work around a quirk with the G5 Xserve, which has a fake GMAC controller
with an all-zero MAC address. In this case, don't attach.

Discussed with:	marius
2009-10-18 17:11:16 +00:00
Rui Paulo
e5087dd893 Fix KASSERT string to include the real module name. 2009-10-18 13:51:49 +00:00
Weongyo Jeong
a0585a1450 overhauls urtw(4) for supporting RTL8187B devices properly that there
was major changes to initialize RF chipset and set H/W registers and
removed a lot of magic numbers on code.  Details are as follows:

  - uses the endpoint 0x89 to get TX status information which used to
    get TX complete or retry numbers or get a beacon interrupt.  It's
    only valuable for RTL8187B.
  - removes urtw_write[8|16|32]_i functions that it's useless now.
  - uses ic->ic_updateslot to set SLOT, SIFS, DIES, EIFS, CW_VAL
    registers that doesn't set these whenever the channel is changed.
  - code for initializing RF chipset for RTL8187B changed a lot that
    there was many problems on TX transfers so it doesn't work properly
    even if just for a ping/pong.  Now it becomes more stable than
    before that TX throughputs using netperf(1) were about 15 ~ 17Mbps/s
    though sometimes it encounters packet losses.
  - removes a lot of magic numbers that in the previous all of
    representing RX and TX descriptors were consisted of magic numbers
    and structures.  It'd be more readable rather than before.
  - calculates TX duration more accurately for urtw(4) devices.
  - style(9)
2009-10-18 00:11:49 +00:00
Andrew Thompson
290512231a Correct offset calcluation for the NCM implementation.
Submitted by:	HPS
2009-10-15 20:15:29 +00:00
Andrew Thompson
c3139ea6f9 Only poll ukbd if KDB is active.
Submitted by:	HPS
2009-10-15 20:09:27 +00:00
Andrew Thompson
1def609a63 Workaround buggy BIOS code in USB regard. By doing the BIOS to OS handover for
all host controllers at the same time, we avoid problems where the BIOS will
actually write to the USB registers of all the USB host controllers every time
we handover one of them, and consequently reset the OS programmed values.

Submitted by:	avg
Reviewed by:	jhb
2009-10-15 20:07:08 +00:00
Weongyo Jeong
941da6d392 fixes a TX hang that could be possible to happen when the trasfers are
in the high speed that some drivers don't call if_start callback after
marking ~IFF_DRV_OACTIVE.

MFC after:	3 days
2009-10-14 20:30:27 +00:00
Weongyo Jeong
db63fc93cc fixes a TX hang bug that it could happen when if_start callback didn't
be restarted by full of the output queue.

MFC after:	3 days
Tested by:	bsduser <bsd at acd.homelinux.org>
2009-10-14 20:09:09 +00:00
Bjoern A. Zeeb
44b636910b Immediately after clearing a pending callout that didn't make it due
to the lock we hold, disable interrupts, and announce to the firmware
that we are shutting down. Especially do this before disabling blocks.

This makes some types of machines with asf enabled no longer hang upon
boot, when we start configuring the interface.

PR:			i386/96382, kern/100410, kern/122252, kern/116328
Reported by:		erwin
Hardware provided by:	TDC A/S
Reviewed by:		stas
Tested by:		stas
2009-10-13 20:22:12 +00:00
John Baldwin
9599da5de8 Correct a copy/paste bug in a comment. lptclose() checks once a second to
see if the ppc hardware has gone idle rather than four times a second.
2009-10-13 12:23:28 +00:00
Hiroki Sato
aea0c7f367 Fix the 106/109 USB Japanese keyboard "underscore" issue.
Sun Type 6 USB keyboard support added in rev 1.46 conflicted with
some scan codes used in Japanese keyboards because the scan code
conversion routine was ambiguous for the overlapped codes.

PR:		ports/134005
Submitted by:	YAMASHIRO Jun
2009-10-12 19:19:08 +00:00
Robert Noland
33cba7feac Add support for Intel G41 chipset
Submitted by:	Artyom Mirgorodsky <man@email.com.ua>
MFC after:	3 days
2009-10-11 01:54:00 +00:00
Robert Noland
2d52bcc46b Add pci id's for Intel G41 chipset
Submitted by:	Artyom Mirgorodsky <man@email.com.ua>
MFC after:	3 days
2009-10-11 01:51:35 +00:00
Rui Paulo
4eaee90e39 Atheros EEPROM version 4K. This version is mostly based on version 1.4.
This is needed by the upcoming AR9285 support.
Information on the layout gathered from Linux ath9k.

Not yet connected to the build.

Tested by:	Eugeny Dzhurinsky
2009-10-10 22:29:34 +00:00
Edward Tomasz Napierala
7c3a3fbe95 Orphaning provider with EXDEV seems weird; perhaps the author meant
ENXIO here?
2009-10-10 21:49:04 +00:00
Alexander Motin
660d482a4e On command timeout handle frozen command first, to not run it inside
XXX_end_transaction().

Submitted by:	avg
2009-10-07 15:40:04 +00:00
Stanislav Sedov
3889907fb2 - Give a name to the host coalescing bug fix WDMA mode register bit instead
of using hardcoded value in the code.
Obtained from:	OpenBSD
2009-10-07 14:29:48 +00:00
Stanislav Sedov
a57795536a - Add support for new BGE chips (5761, 5784 and 57780). These chips uses new
BGE_PCI_PRODID_ASICREV register to store the chip identifier and its revision.
- Add new grouping macro for 7575+ chips (BGE_IS_5755_PLUS).
- Add IDs for Fujitsu-branded Broadcom adapters.

PR:             kern/127587
Tested by:      Thomas Quinot <thomas@quinot.org> (BCM7561 A0)
MFC after:	2 weeks
Obtained from:  OpenBSD
2009-10-07 13:12:43 +00:00
Navdeep Parhar
c01f2b8301 cxgb(4) updates, including:
- support for the new Gen-2, BT, and LP-CR cards.
- T3 firmware 7.7.0
- shared "common code" updates.

Approved by:	gnn (mentor)
Obtained from:	Chelsio
MFC after:	1 month
2009-10-05 20:21:41 +00:00
Jung-uk Kim
b6e6000971 - Revert r191568 partially. Forcing AHCI mode by changing device subclass
and progif is evil.  It doesn't work reliably[1] and we should honor BIOS
configuration by the user.
- If the SATA controller is enbled but combined mode is disabled, mask off
the emulated IDE channel on the legacy IDE controller.

Pointed out by:	mav[1]
2009-10-05 16:26:54 +00:00
John Baldwin
432e1942d2 When the timeout backoff hits the maximum value, leave it capped at the
maximum value rather than setting it to the result of a boolean expression
that is always true.

Submitted by:	Joseph Kong
MFC after:	1 month
2009-10-05 14:13:16 +00:00
Weongyo Jeong
f8b51ca5e9 updates device entries supported with the product name not magic numbers
and sorts entries.  WUSB54GCV2 is added.

Obtained from:	OpenBSD
2009-10-04 23:30:08 +00:00
Marcel Moolenaar
0acb3c4aac Fix RTS/CTS flow control, broken by the TTY overhaul. The new TTY
interface is fairly simple WRT dealing with flow control, but
needed 2 new RX buffer functions with "get-char-from-buf" separated
from "advance-buf-pointer" so that the pointer could be advanced
only when ttydisc_rint() succeeded.

MFC after:	1 week
2009-10-02 22:30:44 +00:00
Andrew Thompson
c8a14b9124 EHCI Hardware BUG workaround
The EHCI HW can use the qtd_next field instead of qtd_altnext when a short
packet is received. This contradicts what is stated in the EHCI datasheet.
Also the total-bytes field in the status field of the following TD gets
corrupted upon reception of a short packet!  We work this around in software by
not queueing more than one job/TD at a time of up to 16Kbytes! The bug has been
seen on multiple INTEL based EHCI chips.  Other vendors have not been tested
yet.

- Applications using /dev/usb/X.Y.Z, where Z is non-zero are affected, but not
  applications using LibUSB v0.1, v1.2 and v2.0.
- Mass Storage (umass) is affected.

Submitted by:	Hans Petter Selasky
MFC after:	3 days
2009-10-01 18:37:16 +00:00
Coleman Kane
00e6b158be Fix a bad use of NULL instead of zero for int comparison. Sorry for the
breakage.

Submitted by:	bz, des, onemda
MFC after:	3 days
2009-10-01 11:52:06 +00:00
Coleman Kane
ed44e7ec7d style(9) fixes (always compare pointers to NULL)
Also, the previous commit to sys/dev/if_ndis/if_ndis.c also included the
removal of a call to ndis_setstate_80211 that is no longer needed.

Submitted by:	sam
MFC after:	3 days
2009-10-01 02:43:51 +00:00
John Baldwin
146672474f Do not hold the ACPI A/C adapter lock when changing the power profile.
MFC after:	2 weeks
2009-09-30 17:07:49 +00:00
John Baldwin
0032eb1acb Split the 'video' ACPI lock up into two locks to resolve a LOR with the
sysctl lock.  The 'video' lock now protects the 'bus' of video output
devices attached to a graphics adapter.  It is used when iterating over
the list of outputs, etc.  The 'video_output' lock is used to lock the
output-specific data similar to a driver lock for the individual video
outputs.

MFC after:	2 weeks
2009-09-30 17:05:26 +00:00
Andrew Gallatin
83d54b590f Two more mxge watchdog fixes:
1) Restore the PCI Express control register after a watchdog
   reset.  This is required because the device will come out
   of watchdog reset with the pectl reg at its default state,
   and important BIOS configuration (like max payload size)
   could be lost.

2) Call mxge_start_locked() for every tx queue before dropping
   the lock in the watchdog handler.   This is required, as
   the queue's buf ring may have filled during the reset.
2009-09-30 14:42:06 +00:00
Coleman Kane
d63581ec39 Correct a bug that could lead to a kernel panic if a user attempted to
perform 802.11 operations directly on the ndis0 interface before the
first VAP (wlan0) had been created. This would lead to a NULL-pointer
dereference in the kernel.

Submitted by:	Paul B. Mahol <onemda@gmail.com>
MFC after:	3 days
2009-09-30 14:28:38 +00:00
Alexander Motin
2ad05ba238 Fix typo in previous commit.
Add Realtek ALC887 codec ID.
2009-09-30 11:05:12 +00:00
Pyun YongHyeon
cb2cdeceb5 Fix multicast handling. All Atheros controllers use big-endian form
in computing multicast hash.

PR:	kern/139137
2009-09-29 23:03:16 +00:00
Alexander Motin
ef0097a6aa Add some bits of HDMI/DisplayPort support from later specification updates.
It may be not enough to make them work, but at least should give some
information about these beasts.
2009-09-29 09:36:38 +00:00
Robert Noland
0893652a8c Fix offset handling
MFC after:	1 week
2009-09-28 22:41:28 +00:00
Robert Noland
3a1f3f56cc radeon_family is an enum, so ordering can be important.
sync up with what amd is shipping.

MFC after:	1 week
2009-09-28 22:40:29 +00:00
Robert Noland
d950002723 Fix blit pitch for 4 byte transfers on r600.
MFC after:	1 week
2009-09-28 22:38:44 +00:00
Robert Noland
0b6c99683c R600 doesn't support IRQs yet, so don't try to use them.
MFC after:	1 week
2009-09-28 22:37:07 +00:00
Pyun YongHyeon
e34135013b For AR8132 fast ethernet controller, do not report 1000baseT
capability to mii(4). Even though AR8132 uses the same model/
revision number of F1 gigabit PHY, the PHY has no ability to
establish 1000baseT link. I have no idea why Atheros use the same
device/model id for this PHY.
With this change atphy(4) does not report 1000baseT media
capability and manual 1000baseT configuration is also disabled
which is more desirable behavior for 10/100Mbps PHY.
2009-09-28 22:18:38 +00:00
Pyun YongHyeon
60d3251abb Add DGE-560SX(Yukon XL) to the supported device list. Many thanks
to "Eugene Perevyazko <john <> dnepro dot net>" who kindly gave
remote access to system with DGE-560SX.
2009-09-28 21:11:31 +00:00
Pyun YongHyeon
cde64af338 Add workaround for Yukon XL which has hardware bug that can't flush
FIFO.
2009-09-28 21:07:19 +00:00
Pyun YongHyeon
fcb62a8b01 Add hack to pass controller specific information to phy driver.
Unlike most other PHYs there is no easy way to know which media
type the PHY supports on Marvell PHYs. MIIF_HAVEFIBER flags is now
passed via bus-specific instance variable of a device. While I'm
here add 88E1112 specific work around to set SIGDET polarity low.
Many thanks "Eugene Perevyazko <john <> dnepro dot net>" who kindly
gave remote access to system with DGE-560SX.
2009-09-28 21:03:28 +00:00
Pyun YongHyeon
40d7192b1c Fix MIB statistics clear routine. This should fix alignment errors on sparc64.
Reported by:	Garrett Damore < gdamore <> opensolaris dot org >
2009-09-28 20:03:37 +00:00
Pyun YongHyeon
1a01dae1b9 Some fiber PHY(88E1112) does not seem to set resolved speed so
always assume we've got IFM_1000_SX.
2009-09-28 19:53:53 +00:00
Pyun YongHyeon
885b405380 Don't encode model id twice.
Reported by:	Kristof Provost <kristof <> sigsegv dot be>
2009-09-28 19:48:17 +00:00
Pyun YongHyeon
829b278e5e It seems some 82559ER controllers do not support Rx checksum
offloading. Datasheet said nothing about the limitation of 82559ER
except WOL. Explicitly disable Rx checksum offloading for
controllers that is known to lack the capability.

PR:	kern/138135
Tested by:	Gooderum, Mark < mgooderum <> websense dot com >
2009-09-28 19:40:16 +00:00
Pyun YongHyeon
32f8942a21 Remove unnecessary device reinitialization. 2009-09-28 19:33:52 +00:00
Andrew Thompson
585b13f2cb Add back endpoint swap detection that was disabled in an earlier driver
conversion.

Submitted by:	Hans Petter Selasky
2009-09-28 08:18:14 +00:00
Andrew Thompson
7747063b8f Add new FTDI IDs.
Submitted by:	Maks Verver, Arrigo Marchiori
2009-09-28 08:15:26 +00:00
Andrew Thompson
655dc9d00a Add experimental support for usb serial console and polled mode during DDB.
Submitted by:	Hans Petter Selasky
2009-09-28 08:13:50 +00:00
Andrew Thompson
063e119dcd Add a config number quirk for the ELSA_MODEM1
Submitted by:	Stefan Bethke
2009-09-28 08:09:11 +00:00
Andrew Thompson
adedd2deb5 add more device IDs
Reported by:	Mike Tancsa
Submitted by:	Hans Petter Selasky
2009-09-28 08:07:20 +00:00
Andrew Thompson
87832c5e33 Allow setting of MAC address for AXE based ethernet adapters.
Submitted by:	yongari
2009-09-28 08:05:14 +00:00
Andrew Thompson
3ac526e01e Increase the rx buffer size to 16384 bytes, this increases RX performance from
50Mbps to 220Mbps on PLANEX GU-1000T.

Submitted by:	yongari
2009-09-28 08:03:52 +00:00
Andrew Thompson
a4fcd5cae9 - Remove SAMSUNG_YP_U2 now that it is in the cam layer
- Add quirk from Tobias Grosser for Western Mypassword

Submitted by:	Hans Petter Selasky
2009-09-28 08:00:17 +00:00
Andrew Thompson
30c257f8ae MFp4
Add new usbdev entries for Marvell, FTDI, Option and Western.
2009-09-28 07:57:23 +00:00
Andrew Thompson
4076dd2309 Add basic support for USB Network Control Model (NCM) v1.0 to if_cdce.c.
http://www.usb.org/developers/devclass_docs/NCM10.zip

Submitted by:	Hans Petter Selasky
2009-09-28 07:53:55 +00:00
Andrew Thompson
a872528155 Add extra safety locking when clobbering xfer->flags_int.started in start and
stop functions, because xfer->flags_int is also updated by the USB controller,
under the controller lock.

Submitted by:	Hans Petter Selasky
2009-09-28 07:46:22 +00:00
Andrew Thompson
35e0e60378 Correct buffer sizes used so that they match. The old code could give the
impression that a overflow situation existed but was not possible.

Reported by:	kib
Submitted by:	Hans Petter Selasky
2009-09-28 07:42:59 +00:00
Andrew Thompson
7a918edff2 Add support for USB language selection.
PR:		usb/138563
Reported by:	Bruce Cran
Submitted by:	Hans Petter Selasky
2009-09-28 07:41:17 +00:00
Andrew Thompson
a9e267575b Fix NULL-pointer dereference in usb_endpoint_foreach().
PR:		usb/138389
Submitted by:	Patroklos Argyroudis at census, inc
2009-09-28 07:39:51 +00:00
Andrew Thompson
3bfbd845ff Add support for ChipHead 341 serial port adapter.
Submitted by:	Hans Petter Selasky
2009-09-28 07:32:11 +00:00
Andrew Thompson
33ea13230a Clear all interrupts rather than just SETUP packet.
Submitted by:	Hans Petter Selasky
2009-09-28 07:10:32 +00:00
Andrew Thompson
2094ecda08 Simplify logic around setting EHCI_QH_DTC and expand some htohc32(temp.sc, 0)
statements to zero.

Submitted by:	Hans Petter Selasky
2009-09-28 07:09:17 +00:00
Andrew Thompson
6450e5babf Import two PCI quirks from Linux
- Add quirk for ATI SB600 and SB700 to free SMB controller
 - Correct schedule sleep time to 10us on the VIA ehci controller

Reported by:	Dorian B<FC>ttner, Andriy Gapon
Submitted by:	Hans Petter Selasky
2009-09-28 07:06:47 +00:00
Andrew Thompson
d88688c7da MFp4 @ 168387
- clean up USB detach logic. There seems to be some problems detaching multiple
  USB HUBs connected in series from the root.

- after this patch the rule is:
  1) Always use device_detach() on the USB HUB first.
  2) Never just device_delete_child() on the USB HUB, because that function
  will traverse to all the device leaves and free them first, and then the USB
  stack will free the devices twice which doesn't work very well.

- make sure the did DMA delay gets set after the timeout has elapsed to make
  logic more clear. There is no functional difference.

Submitted by:	Hans Petter Selasky
2009-09-28 07:01:54 +00:00
Ed Schouten
53e69c0c2a Add support for VT200-style mouse input.
Right now if applications want to use the mouse on the command line,
they use sysmouse(4) and install a signal handler in the kernel to
deliver signals when mouse events arrive. This conflicts with my plan to
change to TERM=xterm, so implement proper VT200-style mouse input.

Because mouse input is now streamed through the TTY, it means you can
now SSH to another system on the console and use the mouse there as
well. The disadvantage of the VT200 mouse protocol, is that it doesn't
seem to generate events when moving the cursor. Only when pressing and
releasing mouse buttons.

There are different protocols as well, but this one seems to be most
commonly supported.

Reported by:	Paul B. Mahol <onemda gmail com>
Tested with:	vim(1)
2009-09-27 18:19:41 +00:00
Jung-uk Kim
71f99e637a Copy apm(4) emulation from sys/i386/acpica/acpi_machdep.c and
install apm(8) and apm_bios.h on amd64.
2009-09-27 14:00:16 +00:00
Ed Schouten
56a4365bde Add 256 color support.
It is quite inconvenient that if an application for xterm uses 256 color
mode, text suddenly starts to blink (because of ;5; in the middle).
We'd better just implement 256 color mode and add a conversion routine
from 256 to 8 color mode, which doesn't seem to be too bad in practice.

Remapping colors is done quite simple. If one of the channels is most
actively represented, primary colors are used. If two channels are most
actively represented, secondary colors are used. If all three channels
are equal (gray), it picks between black and white.

Reported by:	Paul B. Mahol <onemda gmail com>
2009-09-26 15:26:32 +00:00
Bjoern A. Zeeb
4507f02e0e lindev(4) [1] is supposed to be a collection of linux-specific pseudo
devices that we also support, just not by default (thus only LINT or
module builds by default).

While currently there is only "/dev/full" [2], we are planning to see more
in the future.  We may decide to change the module/dependency logic in the
future should the list grow too long.

This is not part of linux.ko as also non-linux binaries like kFreeBSD
userland or ports can make use of this as well.

Suggested by:	rwatson [1] (name)
Submitted by:	ed [2]
Discussed with:	markm, ed, rwatson, kib (weeks ago)
Reviewed by:	rwatson, brueffer (prev. version)
PR:		kern/68961
MFC after:	6 weeks
2009-09-26 12:45:28 +00:00
Jung-uk Kim
7ca724d57b Fix couple of style nits missed in the previous commit. 2009-09-25 20:06:31 +00:00
Jung-uk Kim
ee8cbcb471 - Use x86bios_offset() instead of BIOS_PADDRTOVADDR() macro.[1]
- Clear all registers before calling real mode interrupt handlers as we did
for dpms and vesa and re-enable the function as it should be fixed by this.
- Tidy up register access.  For example, when we call INT 0x15, AH=0xc0,
we used to initialize AX=0xc000 to clear AL at the same time but it is
very confusing.  We don't have to do this any more because we are explicitly
clearing all registers now.
- Check size of system configuration table although it is almost always 8.
This is to make sure we are not reading some random low physical memory.
Hopefully it is just zero in that case. :-)
- Fix some style nits and add more comments.

Submitted by:	paradox (ddkprog yahoo com)[1]
2009-09-25 19:49:07 +00:00
Jung-uk Kim
54680451c3 Reject some VESA graphics modes if the controller does not have enough
memory to support them.  Some adapters have expansible memory slots but
video mode table is static.  In this case, unusable modes may be reported.

Submitted by:	paradox (ddkprog yahoo com) (initial patch)
2009-09-25 18:08:38 +00:00
Xin LI
57f20544f5 Fix LINT build. 2009-09-25 02:19:57 +00:00
Jung-uk Kim
55990ad0c3 Initialize registers to zero before calling the interrupt handlers inside
emulator as we did in r197424 for vesa.

Submitted by:	paradox (ddkprog yahoo com)
2009-09-24 20:23:24 +00:00