Commit Graph

119796 Commits

Author SHA1 Message Date
Jung-uk Kim
5c0619a7f0 0xb1881106 seems to be an AGP bridge and some BIOSes incorrectly handle
the bridge.  Therefore, we give the same treatment as we did for nForce3-250
and ULi chipsets.  VIA AGPv3 code was copied from agp_via.c.
2005-11-14 21:54:20 +00:00
Wilko Bulte
d4d128f923 Listen to jhb, and remove bogus claim of support of DE425.
Obtained from:	jhb
2005-11-14 20:36:53 +00:00
Robert Watson
c5c9bd5b72 In ktr_getrequest(), acquire ktrace_mtx earlier -- while the race
currently present is minor and offers no real semantic issues, it also
doesn't make sense since an earlier lockless check has already
occurred.  Also hold the mutex longer, over a manipulation of
per-process ktrace state, which requires synchronization.

MFC after:	1 month
Pointed out by:	jhb
2005-11-14 19:30:09 +00:00
Ariff Abdullah
720289b2cd Update my email address, so people know where the exact /
proper / correct place to bug me.

Approved by:	netchild (mentor)
2005-11-14 18:37:59 +00:00
Joel Dahl
82affb8f61 Add Intel ICH7. 2005-11-14 18:33:07 +00:00
Ariff Abdullah
bd2ce91cdc From luigi:
This one simply tries to simplify the logic to select the
	buffer sizes. I am not sure it is necessary but the code
	seems a bit more readable to me. And at least i have tried
	to document how the buffer sizes are computed.

Thanks to luigi for deciphering one of the most cryptic part of
sound driver.

Submitted by:	luigi
Approved by:	netchild (mentor)
2005-11-14 18:21:23 +00:00
Ariff Abdullah
ee43f8a667 From luigi:
In SNDCTL_DSP_SETFRAGMENT, if you specify both read and
	write channels, the existing code first acts on the
	read channel, but as a side effect it updates the
	arguments (maxfrags, fragsz) passed by the caller according
	to acceptable values for the read channel, and then uses the
	modified values to act on the write channel.
	The problem with this approach is that, given a
	(maxfrags, fragsz) user-specified value, the actual
	values computed by the read and write channels may differ:
	e.g. the read channel might want to allocate more fragments
	than what the user specified because it has no side-effects
	on the delay and it helps in case of slow readers,
	whereas the write channel needs to use as few fragments
	as possible to keep the audio latency low (very important
	with telephony apps).

	This patch stores the values computed by the read channel
	into temproary variables so the write channel will use
	the actual arguments of the ioctl.

	This patch is very helpful with telephony apps such as asterisk.

Submitted by:	luigi
Approved by:	netchild (mentor)
2005-11-14 18:20:47 +00:00
Ruslan Ermilov
f95871b97b Unlike the rest of the world, NDIS code can access "struct
ifnet" before is has been fully initialized by if_attach().
Account for that to avoid a null pointer dereference.
2005-11-14 18:19:57 +00:00
Ariff Abdullah
801389376f ac97.c:
- Added new codec id for CX20468-21 and VIA1617A.
   Submitted by:	Chen Lihong <lihong.chen@gmail.com>
 - Re-enable SOUND_MIXER_IGAIN, but set the default level as 0 (mute)
   Suggested by:	luigi

mixer.c:
 - Set default value for SOUND_MIXER_IGAIN as 0 (mute) to avoid
   feedback problems on some laptops (was disabled by jhb during
   ac97.c revision 1.42).

Approved by:	netchild (mentor)
2005-11-14 18:19:33 +00:00
Ariff Abdullah
7810d8e256 Fix a long standing unhandled interrupt bug which can cause
erratic system slowdown (beaten to a pulp) and possible panic. This
issue has bugged me for as long as I could remember, until I
realized that it is possible for register base offset to hold zero
value which is definitely a "FALSE".

Approved by:	netchild (mentor)
2005-11-14 18:18:52 +00:00
Ariff Abdullah
6a728ce536 - Added few more Intel HDA ids (ICH 6/7) which does have backward
compatible AC97 codec.
- As the driver supports so many variants, create a table ids for
  ease of probing and maintenance.
  Submitted by:		yongari
  Reviewed/Tested by:	multimedia@
- From luigi:
	The code to compute fragment sizes in the ich driver almost
	invariably ends up using the full buffer available, no matter
	how the user specifies fragment size and number.
	With audio telephony (8khz, 16bit-stereo) and the 16k buffer
	size this results in an unbearable 500ms delay.
	This patch makes sure that we never use more than 4 fragments,
	(i don't think we need more unless there are huge interrupt
	servicing latencies), and obey to the requested fragment size,
	so that latency is acceptable.
  Based on this (and after much regression tests), I can conclude
  that this driver works best with 2 fragments, thus solving various
  long standing issues of ICH driver not capable to flush or play
  short files perfectly.
  Suggested by:		luigi (the idea of smaller fragments)
- MPSAFE conversion.

Approved by:	netchild (mentor)
2005-11-14 18:18:12 +00:00
Ariff Abdullah
0ae68fd446 Use both (enabled by default) DAC1 and DAC2 to provide 2
distinct hardware playback channels. DAC configuration can be
accessed through kernel hint - hint.pcm.<unit>.dac="val" with
following possible values:

   0 = Enable both DACs (default)
   1 = Enable single DAC (DAC1)
   2 = Enable single DAC (DAC2)
   3 = Enable both DACs, swap position (DAC2 comes first instead
       of DAC1)

Special case for ES1370:
   Unlike ES1371,2,3/CT5880, volume for each DAC 1 and 2 can be
   controlled indepedently (synth for DAC1, pcm for DAC2). It is
   possible that user will confuse by this behaviour, since both
   DACs are enabled by default. Thus, provide a knob through sysctl
   hw.snd.pcm<unit>.single_pcm_mixer:
     0 = each DACs will be controlled separately (synth/pcm).
     1 = combine both DACs volume mixer controller into a single
         "pcm" (default)
   As a side note, fixed rate operation (provided by previous
   commit) is not a mandatory if the configuration space does not
   involve DAC2 (perhaps disabled by user through the above kernel
   hint). Unlike DAC2, DAC1 has its own register / control space,
   not affected by the speed settings of ADC.

Tested by:	multimedia@
Approved by:	netchild (mentor)
2005-11-14 18:17:31 +00:00
Ariff Abdullah
33291bca01 Fix left/right channel mixed-up during recording by splitting recdev
mask to recdev_l and recdev_r, since each have its own unique mask.

Submitted by:	Watanabe Kazuhiro <CQG00620@nifty.ne.jp>
Approved by:	netchild (mentor)
2005-11-14 18:16:59 +00:00
Craig Rodrigues
9fce8c898e In build_iovec(), if passed in len is -1, check to see if
val is NULL before doing strlen() to calculate new len.

Submitted by:	maxim
2005-11-14 17:39:00 +00:00
Maxim Konovalov
c22d354139 o Style: restore tab indentation mangled in the previous delta. 2005-11-14 16:04:01 +00:00
Craig Rodrigues
8cb6926e16 Eliminate coredump problem introduced by last commit.
Noticed by:	Guido van Rooij <guido at gvr dot org>
2005-11-14 13:35:08 +00:00
Dag-Erling Smørgrav
8cc56e0ecb Use the new syntax for GENERIC. 2005-11-14 13:34:15 +00:00
Dag-Erling Smørgrav
29777b413b Build a PAE kernel if a PAE config exists. 2005-11-14 13:33:17 +00:00
Dag-Erling Smørgrav
9f88b80ace Add support for the += operator, which appends to a multiple-value variable. 2005-11-14 13:32:30 +00:00
Dag-Erling Smørgrav
c9b130583b Add support for building other kernels than LINT and GENERIC. 2005-11-14 12:59:10 +00:00
Ruslan Ermilov
433aaf04cb Unbreak for !INET6 case. 2005-11-14 12:50:23 +00:00
Craig Rodrigues
075775c9e4 Eliminate build breakage due to warnings about const. 2005-11-14 03:11:25 +00:00
Alexander Nedotsukov
13f8bb7143 Reuse delete_and_clear() template helper.
Approved by:	imp
2005-11-14 02:01:10 +00:00
Warner Losh
2547365730 Fix misspelling.
Submitted by: thompsa
2005-11-14 01:25:05 +00:00
Warner Losh
421552a580 Provide a dummy NO_XBOX option that lives in opt_xbox.h for pc98.
This allows us to eliminate a three ifdef PC98 instances.
2005-11-14 00:43:44 +00:00
Warner Losh
2eb06f7ccb Add xbox associated options/devices to LINT.
Submitted by: Rink P.W. Springer
2005-11-14 00:20:27 +00:00
Marcel Moolenaar
735592906b Update to match geom_gpt:1.35
o  Change the result of gctl(001) now that a bogus verb still requires
   a valid geom,
o  Insert gctl(024) to test for an appropriate error when a bogus verb
   is given that does have a proper geom parameter.
2005-11-13 22:02:04 +00:00
Marcel Moolenaar
ceba44f8d4 o Slightly refactor the ctlreq code to maximize code sharing between
verbs. Only the create verb operates on a provider. All other verbs
   operate on a GPT geom. Also, the GPT entry oriented verbs require
   a non-downgraded GPT.
o  Have all verbs take an optional flags parameter. The flags parameter
   is a string of single-letter flags. The typical use of these flags
   is to enable certain behaviour in support fo the gpt(8) tool.
o  Add dummy implementations for the destroy and recover verbs.

This change causes test 2 of the GPT regression test suite to fail.
The presence of a geom parameter is now required even for unknown
verbs.
2005-11-13 21:53:55 +00:00
Bill Paul
86a8393963 Restore backwards source compatibility with 6.x and 5.x. 2005-11-13 21:36:48 +00:00
David Malone
e390e3af7c Use ANSI definitions.
Avoid using extern by declaring shared functions in header files.
Const poision.
2005-11-13 21:17:24 +00:00
David Malone
5bbc895db6 len and len2 work better as size_t 2005-11-13 21:03:56 +00:00
David Malone
93aa4a7665 Const poision, deregister and use ANSI definitions. 2005-11-13 20:50:17 +00:00
David Malone
84032c0a6d Declare find_err in indent_globs.h where the other shared variables
live rather than listing it as an extern in indent.c.
2005-11-13 20:37:25 +00:00
David Malone
707083753a Avoid shadowing a local scratch variable, 2005-11-13 20:30:13 +00:00
Andrew Thompson
16e7e7d4bc Fix a second missed case where the refcount is not decremented.
MFC after:	3 days
2005-11-13 20:26:19 +00:00
Andrew Thompson
bb4b5f54a5 Fix a mbuf and refcnt leak in the broadcast code.
If the packet is rejected from pfil(9) then continue the loop rather than
returning, this means that we can still try to send it out the remaining
interfaces but more importantly the mbuf is freed and refcount decremented on
exit.
2005-11-13 19:36:59 +00:00
Sam Leffler
d954c733ba This commit was generated by cvs2svn to compensate for changes in r152390,
which included commits to RCS files with non-trunk default branches.
2005-11-13 19:28:17 +00:00
Sam Leffler
06885fed80 correct check for whether or not md5 signature matches; applied
to vendor branch since this is already in their depot
2005-11-13 19:28:17 +00:00
Damien Bergamini
81e6343c3d Fix endianness issues. iwi now works on big endian architectures too.
Obtained from:	NetBSD (scw@)
MFC after:	2 weeks
2005-11-13 17:38:02 +00:00
Jens Schweikhardt
3a5c0f9218 Remove the unused AAC_DRIVER_BUILD_DATE macro.
Nuke whitespace at EOL while I'm here.

Approved by:	scottl (MAINTAINER)
2005-11-13 17:26:36 +00:00
Damien Bergamini
ba1362c549 Be more robust when handling Rx interrupts. If we can't allocate a new mbuf,
just discard the received frame and reuse the old mbuf.
This should prevent the connection from stalling after high network traffic.

MFC after:	2 weeks
2005-11-13 17:25:21 +00:00
Damien Bergamini
ca5b70c4fa Be more robust when handling Rx interrupts. If we can't allocate and DMA map
a new mbuf, just discard the received frame and reuse the old mbuf.
This should fix kernel panics on high network traffic.

MFC after:	2 weeks
2005-11-13 17:19:12 +00:00
Damien Bergamini
4c4102ec52 Be more robust when handling Rx interrupts. If we can't allocate and DMA map
a new mbuf, just discard the received frame and reuse the old mbuf.
This should fix kernel panics on high network traffic.

MFC after:      2 weeks
2005-11-13 17:17:40 +00:00
Damien Bergamini
46c34436a3 Be more robust when handling Rx interrupts. If we can't allocate and DMA map
a new mbuf, just discard the received frame and reuse the old mbuf.
This should fix kernel panics on high network traffic.

Obtained from:  NetBSD (joerg@)
MFC after:      2 weeks
2005-11-13 17:16:06 +00:00
Alexander Leidinger
f9dff1f9fa Add support for 24/32 bit audio formats/conversion.
It may be the case that you may hear some unwanted noise while
playing back with 24/32 bit. This is a problem in the USB system.
Explanation from Hans Petter Selasky:
---snip---
The current USB sound driver only uses one isochronous
buffer, that is restarted when it is completed. This will lead to a short
period of time, +1ms, where no sound data is sent to the external USB device.
Depending on the load of your computer, this can be as much as 50ms. So the
USB sound driver must use 2 isochronous transfers. At the beginning one will
queue both. Then these are restarted on completion. This will result in a
constant-rate data stream to the external sound device, a minimum sound
buffer equal to the size of the isochronous buffer, and possibly the sound
will reach your ears with less delay. Little delay is a result of constant
data rate. Currently only my USB driver will support that. If one tries that
with the USB driver in *BSD, then it will crash at the first moment one gets
a buffer underrun.
---snip---

Submitted by:	Kazuhito HONDA <kazuhito@ph.noda.tus.ac.jp>
Mono-recording still not tested by:	julian
2005-11-13 14:20:26 +00:00
Robert Watson
d4426f281d Modify netstat -mb to use libmemstat when accessing a core dump or live
kernel memory and not using sysctl.  Previously, libmemstat was used
only for the live kernel via sysctl paths.

This results in netstat output becoming both more consistent between
core dumps and the live kernel, and also more information in the core
dump case than previously (i.e., mbuf cache information).

Statistics relating to sfbufs still rely on a kvm descriptor as they
are not currently exposed via libmemstat.  netstat -m operating on a
core is still unable to print certain sfbuf stats available on the live
kernel.

MFC after:	1 week
2005-11-13 14:06:01 +00:00
Robert Watson
be2cb7fae9 Add symlinks for kvm access methods for memstat(3).
MFC after:	3 days
2005-11-13 13:42:03 +00:00
Robert Watson
2c255e9df6 Moderate rewrite of kernel ktrace code to attempt to generally improve
reliability when tracing fast-moving processes or writing traces to
slow file systems by avoiding unbounded queueuing and dropped records.
Record loss was previously possible when the global pool of records
become depleted as a result of record generation outstripping record
commit, which occurred quickly in many common situations.

These changes partially restore the 4.x model of committing ktrace
records at the point of trace generation (synchronous), but maintain
the 5.x deferred record commit behavior (asynchronous) for situations
where entering VFS and sleeping is not possible (i.e., in the
scheduler).  Records are now queued per-process as opposed to
globally, with processes responsible for committing records from their
own context as required.

- Eliminate the ktrace worker thread and global record queue, as they
  are no longer used.  Keep the global free record list, as records
  are still used.

- Add a per-process record queue, which will hold any asynchronously
  generated records, such as from context switches.  This replaces the
  global queue as the place to submit asynchronous records to.

- When a record is committed asynchronously, simply queue it to the
  process.

- When a record is committed synchronously, first drain any pending
  per-process records in order to maintain ordering as best we can.
  Currently ordering between competing threads is provided via a global
  ktrace_sx, but a per-process flag or lock may be desirable in the
  future.

- When a process returns to user space following a system call, trap,
  signal delivery, etc, flush any pending records.

- When a process exits, flush any pending records.

- Assert on process tear-down that there are no pending records.

- Slightly abstract the notion of being "in ktrace", which is used to
  prevent the recursive generation of records, as well as generating
  traces for ktrace events.

Future work here might look at changing the set of events marked for
synchronous and asynchronous record generation, re-balancing queue
depth, timeliness of commit to disk, and so on.  I.e., performing a
drain every (n) records.

MFC after:	1 month
Discussed with:	jhb
Requested by:	Marc Olzheim <marcolz at stack dot nl>
2005-11-13 13:27:44 +00:00
Alexander Leidinger
96ca607e80 Add some cards:
- several TerraTec TValue [1]
 - PixelView PlayTV Pro REV-4C [2]

In case you have the PixelView card, please tell us the "pciconf -v -l"
output on multimedia@FreeBSD.org if it works. There are revisions out there
which may not work and we need to know which ones work.

PR:		53383 [1], 76002 [2]
Submitted by:	Tanja Wittke <tawi@gruft.de> [1], barner [1],
		Dan Angelescu <mrhsaacdoh@yahoo.com> [2]
MFC after:	2 months
2005-11-13 13:26:37 +00:00
Jens Schweikhardt
b49a9e5bab Don't augment the DRIVER_VERSION "v1.12" with __DATE__ and __TIME__.
This is the only file of > 1700 files in a buildkernel here doing that.
It makes reproducible builds (same source => same binary) impossible.

Spotted by:	devel/ccache
2005-11-13 10:13:31 +00:00