You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge /spare/repo/linux-2.6/
This commit is contained in:
@@ -2211,6 +2211,15 @@ D: OV511 driver
|
||||
S: (address available on request)
|
||||
S: USA
|
||||
|
||||
N: Ian McDonald
|
||||
E: iam4@cs.waikato.ac.nz
|
||||
E: imcdnzl@gmail.com
|
||||
W: http://wand.net.nz/~iam4
|
||||
W: http://imcdnzl.blogspot.com
|
||||
D: DCCP, CCID3
|
||||
S: Hamilton
|
||||
S: New Zealand
|
||||
|
||||
N: Patrick McHardy
|
||||
E: kaber@trash.net
|
||||
P: 1024D/12155E80 B128 7DE6 FF0A C2B2 48BE AB4C C9D4 964E 1215 5E80
|
||||
@@ -2246,19 +2255,12 @@ S: D-90453 Nuernberg
|
||||
S: Germany
|
||||
|
||||
N: Arnaldo Carvalho de Melo
|
||||
E: acme@conectiva.com.br
|
||||
E: acme@kernel.org
|
||||
E: acme@gnu.org
|
||||
W: http://bazar2.conectiva.com.br/~acme
|
||||
W: http://advogato.org/person/acme
|
||||
E: acme@mandriva.com
|
||||
E: acme@ghostprotocols.net
|
||||
W: http://oops.ghostprotocols.net:81/blog/
|
||||
P: 1024D/9224DF01 D5DF E3BB E3C8 BCBB F8AD 841A B6AB 4681 9224 DF01
|
||||
D: wanrouter hacking
|
||||
D: misc Makefile, Config.in, drivers and network stacks fixes
|
||||
D: IPX & LLC network stacks maintainer
|
||||
D: Cyclom 2X synchronous card driver
|
||||
D: wl3501 PCMCIA wireless card driver
|
||||
D: i18n for minicom, net-tools, util-linux, fetchmail, etc
|
||||
S: Conectiva S.A.
|
||||
D: IPX, LLC, DCCP, cyc2x, wl3501_cs, net/ hacks
|
||||
S: Mandriva
|
||||
S: R. Tocantins, 89 - Cristo Rei
|
||||
S: 80050-430 - Curitiba - Paraná
|
||||
S: Brazil
|
||||
|
||||
@@ -410,7 +410,26 @@ Kernel messages do not have to be terminated with a period.
|
||||
Printing numbers in parentheses (%d) adds no value and should be avoided.
|
||||
|
||||
|
||||
Chapter 13: References
|
||||
Chapter 13: Allocating memory
|
||||
|
||||
The kernel provides the following general purpose memory allocators:
|
||||
kmalloc(), kzalloc(), kcalloc(), and vmalloc(). Please refer to the API
|
||||
documentation for further information about them.
|
||||
|
||||
The preferred form for passing a size of a struct is the following:
|
||||
|
||||
p = kmalloc(sizeof(*p), ...);
|
||||
|
||||
The alternative form where struct name is spelled out hurts readability and
|
||||
introduces an opportunity for a bug when the pointer variable type is changed
|
||||
but the corresponding sizeof that is passed to a memory allocator is not.
|
||||
|
||||
Casting the return value which is a void pointer is redundant. The conversion
|
||||
from void pointer to any other pointer type is guaranteed by the C programming
|
||||
language.
|
||||
|
||||
|
||||
Chapter 14: References
|
||||
|
||||
The C Programming Language, Second Edition
|
||||
by Brian W. Kernighan and Dennis M. Ritchie.
|
||||
|
||||
@@ -1105,7 +1105,7 @@ static struct block_device_operations opt_fops = {
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Function names as strings (__func__).
|
||||
Function names as strings (__FUNCTION__).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
|
||||
@@ -17,7 +17,9 @@ This driver is known to work with the following cards:
|
||||
* SA P600
|
||||
* SA P800
|
||||
* SA E400
|
||||
* SA E300
|
||||
* SA P400i
|
||||
* SA E200
|
||||
* SA E200i
|
||||
|
||||
If nodes are not already created in the /dev/cciss directory, run as root:
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ the BIOS on Dell servers (starting from servers sold since 1999), desktops
|
||||
and notebooks (starting from those sold in 2005).
|
||||
Please go to http://support.dell.com register and you can find info on
|
||||
OpenManage and Dell Update packages (DUP).
|
||||
Libsmbios can also be used to update BIOS on Dell systems go to
|
||||
http://linux.dell.com/libsmbios/ for details.
|
||||
|
||||
Dell_RBU driver supports BIOS update using the monilothic image and packetized
|
||||
image methods. In case of moniolithic the driver allocates a contiguous chunk
|
||||
@@ -22,8 +24,8 @@ would place each packet in contiguous physical memory. The driver also
|
||||
maintains a link list of packets for reading them back.
|
||||
If the dell_rbu driver is unloaded all the allocated memory is freed.
|
||||
|
||||
The rbu driver needs to have an application which will inform the BIOS to
|
||||
enable the update in the next system reboot.
|
||||
The rbu driver needs to have an application (as mentioned above)which will
|
||||
inform the BIOS to enable the update in the next system reboot.
|
||||
|
||||
The user should not unload the rbu driver after downloading the BIOS image
|
||||
or updating.
|
||||
@@ -42,9 +44,11 @@ In case of packet mechanism the single memory can be broken in smaller chuks
|
||||
of contiguous memory and the BIOS image is scattered in these packets.
|
||||
|
||||
By default the driver uses monolithic memory for the update type. This can be
|
||||
changed to contiguous during the driver load time by specifying the load
|
||||
changed to packets during the driver load time by specifying the load
|
||||
parameter image_type=packet. This can also be changed later as below
|
||||
echo packet > /sys/devices/platform/dell_rbu/image_type
|
||||
Also echoing either mono ,packet or init in to image_type will free up the
|
||||
memory allocated by the driver.
|
||||
|
||||
Do the steps below to download the BIOS image.
|
||||
1) echo 1 > /sys/class/firmware/dell_rbu/loading
|
||||
@@ -53,9 +57,13 @@ Do the steps below to download the BIOS image.
|
||||
|
||||
The /sys/class/firmware/dell_rbu/ entries will remain till the following is
|
||||
done.
|
||||
echo -1 > /sys/class/firmware/dell_rbu/loading
|
||||
|
||||
echo -1 > /sys/class/firmware/dell_rbu/loading.
|
||||
Until this step is completed the drivr cannot be unloaded.
|
||||
If an user by accident executes steps 1 and 3 above without executing step 2;
|
||||
it will make the /sys/class/firmware/dell_rbu/ entries to disappear.
|
||||
The entries can be recreated by doing the following
|
||||
echo init > /sys/devices/platform/dell_rbu/image_type
|
||||
NOTE: echoing init in image_type does not change it original value.
|
||||
|
||||
Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to
|
||||
read back the image downloaded. This is useful in case of packet update
|
||||
|
||||
@@ -55,6 +55,7 @@ aic7*seq.h*
|
||||
aicasm
|
||||
aicdb.h*
|
||||
asm
|
||||
asm-offsets.*
|
||||
asm_offsets.*
|
||||
autoconf.h*
|
||||
bbootsect
|
||||
|
||||
@@ -17,15 +17,6 @@ Who: Greg Kroah-Hartman <greg@kroah.com>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: io_remap_page_range() (macro or function)
|
||||
When: September 2005
|
||||
Why: Replaced by io_remap_pfn_range() which allows more memory space
|
||||
addressabilty (by using a pfn) and supports sparc & sparc64
|
||||
iospace as part of the pfn.
|
||||
Who: Randy Dunlap <rddunlap@osdl.org>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: RAW driver (CONFIG_RAW_DRIVER)
|
||||
When: December 2005
|
||||
Why: declared obsolete since kernel 2.6.3
|
||||
|
||||
@@ -15,7 +15,7 @@ retrieve the data as it becomes available.
|
||||
|
||||
The format of the data logged into the channel buffers is completely
|
||||
up to the relayfs client; relayfs does however provide hooks which
|
||||
allow clients to impose some stucture on the buffer data. Nor does
|
||||
allow clients to impose some structure on the buffer data. Nor does
|
||||
relayfs implement any form of data filtering - this also is left to
|
||||
the client. The purpose is to keep relayfs as simple as possible.
|
||||
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
An ad-hoc collection of notes on IA64 MCA and INIT processing. Feel
|
||||
free to update it with notes about any area that is not clear.
|
||||
|
||||
---
|
||||
|
||||
MCA/INIT are completely asynchronous. They can occur at any time, when
|
||||
the OS is in any state. Including when one of the cpus is already
|
||||
holding a spinlock. Trying to get any lock from MCA/INIT state is
|
||||
asking for deadlock. Also the state of structures that are protected
|
||||
by locks is indeterminate, including linked lists.
|
||||
|
||||
---
|
||||
|
||||
The complicated ia64 MCA process. All of this is mandated by Intel's
|
||||
specification for ia64 SAL, error recovery and and unwind, it is not as
|
||||
if we have a choice here.
|
||||
|
||||
* MCA occurs on one cpu, usually due to a double bit memory error.
|
||||
This is the monarch cpu.
|
||||
|
||||
* SAL sends an MCA rendezvous interrupt (which is a normal interrupt)
|
||||
to all the other cpus, the slaves.
|
||||
|
||||
* Slave cpus that receive the MCA interrupt call down into SAL, they
|
||||
end up spinning disabled while the MCA is being serviced.
|
||||
|
||||
* If any slave cpu was already spinning disabled when the MCA occurred
|
||||
then it cannot service the MCA interrupt. SAL waits ~20 seconds then
|
||||
sends an unmaskable INIT event to the slave cpus that have not
|
||||
already rendezvoused.
|
||||
|
||||
* Because MCA/INIT can be delivered at any time, including when the cpu
|
||||
is down in PAL in physical mode, the registers at the time of the
|
||||
event are _completely_ undefined. In particular the MCA/INIT
|
||||
handlers cannot rely on the thread pointer, PAL physical mode can
|
||||
(and does) modify TP. It is allowed to do that as long as it resets
|
||||
TP on return. However MCA/INIT events expose us to these PAL
|
||||
internal TP changes. Hence curr_task().
|
||||
|
||||
* If an MCA/INIT event occurs while the kernel was running (not user
|
||||
space) and the kernel has called PAL then the MCA/INIT handler cannot
|
||||
assume that the kernel stack is in a fit state to be used. Mainly
|
||||
because PAL may or may not maintain the stack pointer internally.
|
||||
Because the MCA/INIT handlers cannot trust the kernel stack, they
|
||||
have to use their own, per-cpu stacks. The MCA/INIT stacks are
|
||||
preformatted with just enough task state to let the relevant handlers
|
||||
do their job.
|
||||
|
||||
* Unlike most other architectures, the ia64 struct task is embedded in
|
||||
the kernel stack[1]. So switching to a new kernel stack means that
|
||||
we switch to a new task as well. Because various bits of the kernel
|
||||
assume that current points into the struct task, switching to a new
|
||||
stack also means a new value for current.
|
||||
|
||||
* Once all slaves have rendezvoused and are spinning disabled, the
|
||||
monarch is entered. The monarch now tries to diagnose the problem
|
||||
and decide if it can recover or not.
|
||||
|
||||
* Part of the monarch's job is to look at the state of all the other
|
||||
tasks. The only way to do that on ia64 is to call the unwinder,
|
||||
as mandated by Intel.
|
||||
|
||||
* The starting point for the unwind depends on whether a task is
|
||||
running or not. That is, whether it is on a cpu or is blocked. The
|
||||
monarch has to determine whether or not a task is on a cpu before it
|
||||
knows how to start unwinding it. The tasks that received an MCA or
|
||||
INIT event are no longer running, they have been converted to blocked
|
||||
tasks. But (and its a big but), the cpus that received the MCA
|
||||
rendezvous interrupt are still running on their normal kernel stacks!
|
||||
|
||||
* To distinguish between these two cases, the monarch must know which
|
||||
tasks are on a cpu and which are not. Hence each slave cpu that
|
||||
switches to an MCA/INIT stack, registers its new stack using
|
||||
set_curr_task(), so the monarch can tell that the _original_ task is
|
||||
no longer running on that cpu. That gives us a decent chance of
|
||||
getting a valid backtrace of the _original_ task.
|
||||
|
||||
* MCA/INIT can be nested, to a depth of 2 on any cpu. In the case of a
|
||||
nested error, we want diagnostics on the MCA/INIT handler that
|
||||
failed, not on the task that was originally running. Again this
|
||||
requires set_curr_task() so the MCA/INIT handlers can register their
|
||||
own stack as running on that cpu. Then a recursive error gets a
|
||||
trace of the failing handler's "task".
|
||||
|
||||
[1] My (Keith Owens) original design called for ia64 to separate its
|
||||
struct task and the kernel stacks. Then the MCA/INIT data would be
|
||||
chained stacks like i386 interrupt stacks. But that required
|
||||
radical surgery on the rest of ia64, plus extra hard wired TLB
|
||||
entries with its associated performance degradation. David
|
||||
Mosberger vetoed that approach. Which meant that separate kernel
|
||||
stacks meant separate "tasks" for the MCA/INIT handlers.
|
||||
|
||||
---
|
||||
|
||||
INIT is less complicated than MCA. Pressing the nmi button or using
|
||||
the equivalent command on the management console sends INIT to all
|
||||
cpus. SAL picks one one of the cpus as the monarch and the rest are
|
||||
slaves. All the OS INIT handlers are entered at approximately the same
|
||||
time. The OS monarch prints the state of all tasks and returns, after
|
||||
which the slaves return and the system resumes.
|
||||
|
||||
At least that is what is supposed to happen. Alas there are broken
|
||||
versions of SAL out there. Some drive all the cpus as monarchs. Some
|
||||
drive them all as slaves. Some drive one cpu as monarch, wait for that
|
||||
cpu to return from the OS then drive the rest as slaves. Some versions
|
||||
of SAL cannot even cope with returning from the OS, they spin inside
|
||||
SAL on resume. The OS INIT code has workarounds for some of these
|
||||
broken SAL symptoms, but some simply cannot be fixed from the OS side.
|
||||
|
||||
---
|
||||
|
||||
The scheduler hooks used by ia64 (curr_task, set_curr_task) are layer
|
||||
violations. Unfortunately MCA/INIT start off as massive layer
|
||||
violations (can occur at _any_ time) and they build from there.
|
||||
|
||||
At least ia64 makes an attempt at recovering from hardware errors, but
|
||||
it is a difficult problem because of the asynchronous nature of these
|
||||
errors. When processing an unmaskable interrupt we sometimes need
|
||||
special code to cope with our inability to take any locks.
|
||||
|
||||
---
|
||||
|
||||
How is ia64 MCA/INIT different from x86 NMI?
|
||||
|
||||
* x86 NMI typically gets delivered to one cpu. MCA/INIT gets sent to
|
||||
all cpus.
|
||||
|
||||
* x86 NMI cannot be nested. MCA/INIT can be nested, to a depth of 2
|
||||
per cpu.
|
||||
|
||||
* x86 has a separate struct task which points to one of multiple kernel
|
||||
stacks. ia64 has the struct task embedded in the single kernel
|
||||
stack, so switching stack means switching task.
|
||||
|
||||
* x86 does not call the BIOS so the NMI handler does not have to worry
|
||||
about any registers having changed. MCA/INIT can occur while the cpu
|
||||
is in PAL in physical mode, with undefined registers and an undefined
|
||||
kernel stack.
|
||||
|
||||
* i386 backtrace is not very sensitive to whether a process is running
|
||||
or not. ia64 unwind is very, very sensitive to whether a process is
|
||||
running or not.
|
||||
|
||||
---
|
||||
|
||||
What happens when MCA/INIT is delivered what a cpu is running user
|
||||
space code?
|
||||
|
||||
The user mode registers are stored in the RSE area of the MCA/INIT on
|
||||
entry to the OS and are restored from there on return to SAL, so user
|
||||
mode registers are preserved across a recoverable MCA/INIT. Since the
|
||||
OS has no idea what unwind data is available for the user space stack,
|
||||
MCA/INIT never tries to backtrace user space. Which means that the OS
|
||||
does not bother making the user space process look like a blocked task,
|
||||
i.e. the OS does not copy pt_regs and switch_stack to the user space
|
||||
stack. Also the OS has no idea how big the user space RSE and memory
|
||||
stacks are, which makes it too risky to copy the saved state to a user
|
||||
mode stack.
|
||||
|
||||
---
|
||||
|
||||
How do we get a backtrace on the tasks that were running when MCA/INIT
|
||||
was delivered?
|
||||
|
||||
mca.c:::ia64_mca_modify_original_stack(). That identifies and
|
||||
verifies the original kernel stack, copies the dirty registers from
|
||||
the MCA/INIT stack's RSE to the original stack's RSE, copies the
|
||||
skeleton struct pt_regs and switch_stack to the original stack, fills
|
||||
in the skeleton structures from the PAL minstate area and updates the
|
||||
original stack's thread.ksp. That makes the original stack look
|
||||
exactly like any other blocked task, i.e. it now appears to be
|
||||
sleeping. To get a backtrace, just start with thread.ksp for the
|
||||
original task and unwind like any other sleeping task.
|
||||
|
||||
---
|
||||
|
||||
How do we identify the tasks that were running when MCA/INIT was
|
||||
delivered?
|
||||
|
||||
If the previous task has been verified and converted to a blocked
|
||||
state, then sos->prev_task on the MCA/INIT stack is updated to point to
|
||||
the previous task. You can look at that field in dumps or debuggers.
|
||||
To help distinguish between the handler and the original tasks,
|
||||
handlers have _TIF_MCA_INIT set in thread_info.flags.
|
||||
|
||||
The sos data is always in the MCA/INIT handler stack, at offset
|
||||
MCA_SOS_OFFSET. You can get that value from mca_asm.h or calculate it
|
||||
as KERNEL_STACK_SIZE - sizeof(struct pt_regs) - sizeof(struct
|
||||
ia64_sal_os_state), with 16 byte alignment for all structures.
|
||||
|
||||
Also the comm field of the MCA/INIT task is modified to include the pid
|
||||
of the original task, for humans to use. For example, a comm field of
|
||||
'MCA 12159' means that pid 12159 was running when the MCA was
|
||||
delivered.
|
||||
@@ -66,11 +66,11 @@ SETUP
|
||||
c) Enable "/proc/vmcore support" (Optional, in Pseudo filesystems).
|
||||
CONFIG_PROC_VMCORE=y
|
||||
d) Disable SMP support and build a UP kernel (Until it is fixed).
|
||||
CONFIG_SMP=n
|
||||
CONFIG_SMP=n
|
||||
e) Enable "Local APIC support on uniprocessors".
|
||||
CONFIG_X86_UP_APIC=y
|
||||
CONFIG_X86_UP_APIC=y
|
||||
f) Enable "IO-APIC support on uniprocessors"
|
||||
CONFIG_X86_UP_IOAPIC=y
|
||||
CONFIG_X86_UP_IOAPIC=y
|
||||
|
||||
Note: i) Options a) and b) depend upon "Configure standard kernel features
|
||||
(for small systems)" (under General setup).
|
||||
@@ -95,6 +95,11 @@ SETUP
|
||||
hence have memory less than 4GB.
|
||||
iii) Specify "irqpoll" as command line parameter. This reduces driver
|
||||
initialization failures in second kernel due to shared interrupts.
|
||||
iv) <root-dev> needs to be specified in a format corresponding to
|
||||
the root device name in the output of mount command.
|
||||
v) If you have built the drivers required to mount root file
|
||||
system as modules in <second-kernel>, then, specify
|
||||
--initrd=<initrd-for-second-kernel>.
|
||||
|
||||
5) System reboots into the second kernel when a panic occurs. A module can be
|
||||
written to force the panic or "ALT-SysRq-c" can be used initiate a crash
|
||||
|
||||
@@ -205,8 +205,8 @@ Phone: 701-234-7556
|
||||
Tainted kernels:
|
||||
|
||||
Some oops reports contain the string 'Tainted: ' after the program
|
||||
counter, this indicates that the kernel has been tainted by some
|
||||
mechanism. The string is followed by a series of position sensitive
|
||||
counter. This indicates that the kernel has been tainted by some
|
||||
mechanism. The string is followed by a series of position-sensitive
|
||||
characters, each representing a particular tainted value.
|
||||
|
||||
1: 'G' if all modules loaded have a GPL or compatible license, 'P' if
|
||||
@@ -214,16 +214,25 @@ characters, each representing a particular tainted value.
|
||||
MODULE_LICENSE or with a MODULE_LICENSE that is not recognised by
|
||||
insmod as GPL compatible are assumed to be proprietary.
|
||||
|
||||
2: 'F' if any module was force loaded by insmod -f, ' ' if all
|
||||
2: 'F' if any module was force loaded by "insmod -f", ' ' if all
|
||||
modules were loaded normally.
|
||||
|
||||
3: 'S' if the oops occurred on an SMP kernel running on hardware that
|
||||
hasn't been certified as safe to run multiprocessor.
|
||||
Currently this occurs only on various Athlons that are not
|
||||
SMP capable.
|
||||
hasn't been certified as safe to run multiprocessor.
|
||||
Currently this occurs only on various Athlons that are not
|
||||
SMP capable.
|
||||
|
||||
4: 'R' if a module was force unloaded by "rmmod -f", ' ' if all
|
||||
modules were unloaded normally.
|
||||
|
||||
5: 'M' if any processor has reported a Machine Check Exception,
|
||||
' ' if no Machine Check Exceptions have occurred.
|
||||
|
||||
6: 'B' if a page-release function has found a bad page reference or
|
||||
some unexpected page flags.
|
||||
|
||||
The primary reason for the 'Tainted: ' string is to tell kernel
|
||||
debuggers if this is a clean kernel or if anything unusual has
|
||||
occurred. Tainting is permanent, even if an offending module is
|
||||
unloading the tainted value remains to indicate that the kernel is not
|
||||
occurred. Tainting is permanent: even if an offending module is
|
||||
unloaded, the tainted value remains to indicate that the kernel is not
|
||||
trustworthy.
|
||||
|
||||
@@ -38,6 +38,12 @@ system the associated daemon will exit gracefully.
|
||||
|
||||
Driver Interface -- OBSOLETE, DO NOT USE!
|
||||
----------------*************************
|
||||
|
||||
Note: pm_register(), pm_access(), pm_dev_idle() and friends are
|
||||
obsolete. Please do not use them. Instead you should properly hook
|
||||
your driver into the driver model, and use its suspend()/resume()
|
||||
callbacks to do this kind of stuff.
|
||||
|
||||
If you are writing a new driver or maintaining an old driver, it
|
||||
should include power management support. Without power management
|
||||
support, a single driver may prevent a system with power management
|
||||
|
||||
@@ -75,7 +75,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
adsp_map - PCM device number maps assigned to the 2st OSS device.
|
||||
- Default: 1
|
||||
nonblock_open
|
||||
- Don't block opening busy PCM devices.
|
||||
- Don't block opening busy PCM devices. Default: 1
|
||||
|
||||
For example, when dsp_map=2, /dev/dsp will be mapped to PCM #2 of
|
||||
the card #0. Similarly, when adsp_map=0, /dev/adsp will be mapped
|
||||
@@ -148,6 +148,16 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
Module supports up to 8 cards. This module does not support autoprobe
|
||||
thus main port must be specified!!! Other ports are optional.
|
||||
|
||||
Module snd-ad1889
|
||||
-----------------
|
||||
|
||||
Module for Analog Devices AD1889 chips.
|
||||
|
||||
ac97_quirk - AC'97 workaround for strange hardware
|
||||
See the description of intel8x0 module for details.
|
||||
|
||||
This module supports up to 8 cards.
|
||||
|
||||
Module snd-ali5451
|
||||
------------------
|
||||
|
||||
@@ -189,15 +199,20 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
Module snd-atiixp
|
||||
-----------------
|
||||
|
||||
Module for ATI IXP 150/200/250 AC97 controllers.
|
||||
Module for ATI IXP 150/200/250/400 AC97 controllers.
|
||||
|
||||
ac97_clock - AC'97 clock (defalut = 48000)
|
||||
ac97_clock - AC'97 clock (default = 48000)
|
||||
ac97_quirk - AC'97 workaround for strange hardware
|
||||
See the description of intel8x0 module for details.
|
||||
See "AC97 Quirk Option" section below.
|
||||
spdif_aclink - S/PDIF transfer over AC-link (default = 1)
|
||||
|
||||
This module supports up to 8 cards and autoprobe.
|
||||
|
||||
ATI IXP has two different methods to control SPDIF output. One is
|
||||
over AC-link and another is over the "direct" SPDIF output. The
|
||||
implementation depends on the motherboard, and you'll need to
|
||||
choose the correct one via spdif_aclink module option.
|
||||
|
||||
Module snd-atiixp-modem
|
||||
-----------------------
|
||||
|
||||
@@ -230,7 +245,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
The hardware EQ hardware and SPDIF is only present in the Vortex2 and
|
||||
Advantage.
|
||||
|
||||
Note: Some ALSA mixer applicactions don't handle the SPDIF samplerate
|
||||
Note: Some ALSA mixer applications don't handle the SPDIF sample rate
|
||||
control correctly. If you have problems regarding this, try
|
||||
another ALSA compliant mixer (alsamixer works).
|
||||
|
||||
@@ -302,7 +317,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
|
||||
mpu_port - 0x300,0x310,0x320,0x330, 0 = disable (default)
|
||||
fm_port - 0x388 (default), 0 = disable (default)
|
||||
soft_ac3 - Sofware-conversion of raw SPDIF packets (model 033 only)
|
||||
soft_ac3 - Software-conversion of raw SPDIF packets (model 033 only)
|
||||
(default = 1)
|
||||
joystick_port - Joystick port address (0 = disable, 1 = auto-detect)
|
||||
|
||||
@@ -384,7 +399,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
Module for PCI sound cards based on CS4610/CS4612/CS4614/CS4615/CS4622/
|
||||
CS4624/CS4630/CS4280 PCI chips.
|
||||
|
||||
external_amp - Force to enable external amplifer.
|
||||
external_amp - Force to enable external amplifier.
|
||||
thinkpad - Force to enable Thinkpad's CLKRUN control.
|
||||
mmap_valid - Support OSS mmap mode (default = 0).
|
||||
|
||||
@@ -620,7 +635,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
VIA VT8251/VT8237A
|
||||
|
||||
model - force the model name
|
||||
position_fix - Fix DMA pointer (0 = FIFO size, 1 = none, 2 = POSBUF)
|
||||
position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size)
|
||||
|
||||
Module supports up to 8 cards.
|
||||
|
||||
@@ -656,6 +671,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
allout 5-jack in back, 2-jack in front, SPDIF out
|
||||
auto auto-config reading BIOS (default)
|
||||
|
||||
If the default configuration doesn't work and one of the above
|
||||
matches with your device, report it together with the PCI
|
||||
subsystem ID (output of "lspci -nv") to ALSA BTS or alsa-devel
|
||||
ML (see the section "Links and Addresses").
|
||||
|
||||
Note 2: If you get click noises on output, try the module option
|
||||
position_fix=1 or 2. position_fix=1 will use the SD_LPIB
|
||||
register value without FIFO size correction as the current
|
||||
@@ -783,20 +803,13 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
|
||||
ac97_clock - AC'97 codec clock base (0 = auto-detect)
|
||||
ac97_quirk - AC'97 workaround for strange hardware
|
||||
The following strings are accepted:
|
||||
default = don't override the default setting
|
||||
disable = disable the quirk
|
||||
hp_only = use headphone control as master
|
||||
swap_hp = swap headphone and master controls
|
||||
swap_surround = swap master and surround controls
|
||||
ad_sharing = for AD1985, turn on OMS bit and use headphone
|
||||
alc_jack = for ALC65x, turn on the jack sense mode
|
||||
inv_eapd = inverted EAPD implementation
|
||||
mute_led = bind EAPD bit for turning on/off mute LED
|
||||
For backward compatibility, the corresponding integer
|
||||
value -1, 0, ... are accepted, too.
|
||||
See "AC97 Quirk Option" section below.
|
||||
buggy_irq - Enable workaround for buggy interrupts on some
|
||||
motherboards (default off)
|
||||
motherboards (default yes on nForce chips,
|
||||
otherwise off)
|
||||
buggy_semaphore - Enable workaround for hardwares with buggy
|
||||
semaphores (e.g. on some ASUS laptops)
|
||||
(default off)
|
||||
|
||||
Module supports autoprobe and multiple bus-master chips (max 8).
|
||||
|
||||
@@ -808,13 +821,6 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
motherboard has these devices, use the ns558 or snd-mpu401
|
||||
modules, respectively.
|
||||
|
||||
The ac97_quirk option is used to enable/override the workaround
|
||||
for specific devices. Some hardware have swapped output pins
|
||||
between Master and Headphone, or Surround. The driver provides
|
||||
the auto-detection of known problematic devices, but some might
|
||||
be unknown or wrongly detected. In such a case, pass the proper
|
||||
value with this option.
|
||||
|
||||
The power-management is supported.
|
||||
|
||||
Module snd-intel8x0m
|
||||
@@ -966,7 +972,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
with machines with other (most likely CS423x or OPL3SAx) chips,
|
||||
even though the device is detected in lspci. In such a case, try
|
||||
other drivers, e.g. snd-cs4232 or snd-opl3sa2. Some has ISA-PnP
|
||||
but some doesn't have ISA PnP. You'll need to speicfy isapnp=0
|
||||
but some doesn't have ISA PnP. You'll need to specify isapnp=0
|
||||
and proper hardware parameters in the case without ISA PnP.
|
||||
|
||||
Note: some laptops need a workaround for AC97 RESET. For the
|
||||
@@ -1302,7 +1308,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
channels
|
||||
[VIA8233/C, 8235, 8237 only]
|
||||
ac97_quirk - AC'97 workaround for strange hardware
|
||||
See the description of intel8x0 module for details.
|
||||
See "AC97 Quirk Option" section below.
|
||||
|
||||
Module supports autoprobe and multiple bus-master chips (max 8).
|
||||
|
||||
@@ -1327,16 +1333,17 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
"lspci -nv").
|
||||
If dxs_support=5 does not work, try dxs_support=4; if it
|
||||
doesn't work too, try dxs_support=1. (dxs_support=1 is
|
||||
usually for old motherboards. The correct implementated
|
||||
usually for old motherboards. The correct implemented
|
||||
board should work with 4 or 5.) If it still doesn't
|
||||
work and the default setting is ok, dxs_support=3 is the
|
||||
right choice. If the default setting doesn't work at all,
|
||||
try dxs_support=2 to disable the DXS channels.
|
||||
In any cases, please let us know the result and the
|
||||
subsystem vendor/device ids.
|
||||
subsystem vendor/device ids. See "Links and Addresses"
|
||||
below.
|
||||
|
||||
Note: for the MPU401 on VIA823x, use snd-mpu401 driver
|
||||
additonally. The mpu_port option is for VIA686 chips only.
|
||||
additionally. The mpu_port option is for VIA686 chips only.
|
||||
|
||||
Module snd-via82xx-modem
|
||||
------------------------
|
||||
@@ -1398,8 +1405,10 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
Module supports up to 8 cards. The module is compiled only when
|
||||
PCMCIA is supported on kernel.
|
||||
|
||||
To activate the driver via the card manager, you'll need to set
|
||||
up /etc/pcmcia/vxpocket.conf. See the sound/pcmcia/vx/vxpocket.c.
|
||||
With the older 2.6.x kernel, to activate the driver via the card
|
||||
manager, you'll need to set up /etc/pcmcia/vxpocket.conf. See the
|
||||
sound/pcmcia/vx/vxpocket.c. 2.6.13 or later kernel requires no
|
||||
longer require a config file.
|
||||
|
||||
When the driver is compiled as a module and the hotplug firmware
|
||||
is supported, the firmware data is loaded via hotplug automatically.
|
||||
@@ -1411,6 +1420,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
|
||||
Note: the driver is build only when CONFIG_ISA is set.
|
||||
|
||||
Note2: snd-vxp440 driver is merged to snd-vxpocket driver since
|
||||
ALSA 1.0.10.
|
||||
|
||||
Module snd-ymfpci
|
||||
-----------------
|
||||
|
||||
@@ -1436,6 +1448,37 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||
Note: the driver is build only when CONFIG_ISA is set.
|
||||
|
||||
|
||||
AC97 Quirk Option
|
||||
=================
|
||||
|
||||
The ac97_quirk option is used to enable/override the workaround for
|
||||
specific devices on drivers for on-board AC'97 controllers like
|
||||
snd-intel8x0. Some hardware have swapped output pins between Master
|
||||
and Headphone, or Surround (thanks to confusion of AC'97
|
||||
specifications from version to version :-)
|
||||
|
||||
The driver provides the auto-detection of known problematic devices,
|
||||
but some might be unknown or wrongly detected. In such a case, pass
|
||||
the proper value with this option.
|
||||
|
||||
The following strings are accepted:
|
||||
- default Don't override the default setting
|
||||
- disable Disable the quirk
|
||||
- hp_only Bind Master and Headphone controls as a single control
|
||||
- swap_hp Swap headphone and master controls
|
||||
- swap_surround Swap master and surround controls
|
||||
- ad_sharing For AD1985, turn on OMS bit and use headphone
|
||||
- alc_jack For ALC65x, turn on the jack sense mode
|
||||
- inv_eapd Inverted EAPD implementation
|
||||
- mute_led Bind EAPD bit for turning on/off mute LED
|
||||
|
||||
For backward compatibility, the corresponding integer value -1, 0,
|
||||
... are accepted, too.
|
||||
|
||||
For example, if "Master" volume control has no effect on your device
|
||||
but only "Headphone" does, pass ac97_quirk=hp_only module option.
|
||||
|
||||
|
||||
Configuring Non-ISAPNP Cards
|
||||
============================
|
||||
|
||||
@@ -1553,6 +1596,8 @@ Proc interfaces (/proc/asound)
|
||||
- whole-frag write only whole fragments (optimization affecting
|
||||
playback only)
|
||||
- no-silence do not fill silence ahead to avoid clicks
|
||||
- buggy-ptr Returns the whitespace blocks in GETOPTR ioctl
|
||||
instead of filled blocks
|
||||
|
||||
Example: echo "x11amp 128 16384" > /proc/asound/card0/pcm0p/oss
|
||||
echo "squake 0 0 disable" > /proc/asound/card0/pcm0c/oss
|
||||
@@ -1589,9 +1634,14 @@ commands to the snd-page-alloc driver:
|
||||
use.
|
||||
|
||||
|
||||
Links
|
||||
=====
|
||||
Links and Addresses
|
||||
===================
|
||||
|
||||
ALSA project homepage
|
||||
http://www.alsa-project.org
|
||||
|
||||
ALSA Bug Tracking System
|
||||
https://bugtrack.alsa-project.org/bugs/
|
||||
|
||||
ALSA Developers ML
|
||||
mailto:alsa-devel@lists.sourceforge.net
|
||||
|
||||
@@ -447,7 +447,7 @@
|
||||
....
|
||||
|
||||
/* allocate a chip-specific data with zero filled */
|
||||
chip = kcalloc(1, sizeof(*chip), GFP_KERNEL);
|
||||
chip = kzalloc(sizeof(*chip), GFP_KERNEL);
|
||||
if (chip == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -949,7 +949,7 @@
|
||||
After allocating a card instance via
|
||||
<function>snd_card_new()</function> (with
|
||||
<constant>NULL</constant> on the 4th arg), call
|
||||
<function>kcalloc()</function>.
|
||||
<function>kzalloc()</function>.
|
||||
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
@@ -958,7 +958,7 @@
|
||||
mychip_t *chip;
|
||||
card = snd_card_new(index[dev], id[dev], THIS_MODULE, NULL);
|
||||
.....
|
||||
chip = kcalloc(1, sizeof(*chip), GFP_KERNEL);
|
||||
chip = kzalloc(sizeof(*chip), GFP_KERNEL);
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
@@ -1136,7 +1136,7 @@
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
chip = kcalloc(1, sizeof(*chip), GFP_KERNEL);
|
||||
chip = kzalloc(sizeof(*chip), GFP_KERNEL);
|
||||
if (chip == NULL) {
|
||||
pci_disable_device(pci);
|
||||
return -ENOMEM;
|
||||
@@ -1292,7 +1292,7 @@
|
||||
need to initialize this number as -1 before actual allocation,
|
||||
since irq 0 is valid. The port address and its resource pointer
|
||||
can be initialized as null by
|
||||
<function>kcalloc()</function> automatically, so you
|
||||
<function>kzalloc()</function> automatically, so you
|
||||
don't have to take care of resetting them.
|
||||
</para>
|
||||
|
||||
|
||||
+17
-7
@@ -370,7 +370,10 @@ W: http://atmelwlandriver.sourceforge.net/
|
||||
S: Maintained
|
||||
|
||||
AUDIT SUBSYSTEM
|
||||
L: linux-audit@redhat.com (subscribers-only)
|
||||
P: David Woodhouse
|
||||
M: dwmw2@infradead.org
|
||||
L: linux-audit@redhat.com
|
||||
W: http://people.redhat.com/sgrubb/audit/
|
||||
S: Maintained
|
||||
|
||||
AX.25 NETWORK LAYER
|
||||
@@ -683,6 +686,13 @@ P: Guennadi Liakhovetski
|
||||
M: g.liakhovetski@gmx.de
|
||||
S: Maintained
|
||||
|
||||
DCCP PROTOCOL
|
||||
P: Arnaldo Carvalho de Melo
|
||||
M: acme@mandriva.com
|
||||
L: dccp@vger.kernel.org
|
||||
W: http://www.wlug.org.nz/DCCP
|
||||
S: Maintained
|
||||
|
||||
DECnet NETWORK LAYER
|
||||
P: Patrick Caulfield
|
||||
M: patrick@tykepenguin.com
|
||||
@@ -2256,6 +2266,12 @@ M: kristen.c.accardi@intel.com
|
||||
L: pcihpd-discuss@lists.sourceforge.net
|
||||
S: Maintained
|
||||
|
||||
SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS
|
||||
P: Stephen Hemminger
|
||||
M: shemminger@osdl.org
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
SPARC (sparc32):
|
||||
P: William L. Irwin
|
||||
M: wli@holomorphy.com
|
||||
@@ -2268,12 +2284,6 @@ M: R.E.Wolff@BitWizard.nl
|
||||
L: linux-kernel@vger.kernel.org ?
|
||||
S: Supported
|
||||
|
||||
SPX NETWORK LAYER
|
||||
P: Jay Schulist
|
||||
M: jschlst@samba.org
|
||||
L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
|
||||
SRM (Alpha) environment access
|
||||
P: Jan-Benedict Glaw
|
||||
M: jbglaw@lug-owl.de
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 14
|
||||
EXTRAVERSION =-rc1
|
||||
EXTRAVERSION =-rc2
|
||||
NAME=Affluent Albatross
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
||||
@@ -149,6 +149,9 @@ CONFIGURING the kernel:
|
||||
"make gconfig" X windows (Gtk) based configuration tool.
|
||||
"make oldconfig" Default all questions based on the contents of
|
||||
your existing ./.config file.
|
||||
"make silentoldconfig"
|
||||
Like above, but avoids cluttering the screen
|
||||
with question already answered.
|
||||
|
||||
NOTES on "make config":
|
||||
- having unnecessary drivers will make the kernel bigger, and can
|
||||
@@ -169,9 +172,6 @@ CONFIGURING the kernel:
|
||||
should probably answer 'n' to the questions for
|
||||
"development", "experimental", or "debugging" features.
|
||||
|
||||
- Check the top Makefile for further site-dependent configuration
|
||||
(default SVGA mode etc).
|
||||
|
||||
COMPILING the kernel:
|
||||
|
||||
- Make sure you have gcc 2.95.3 available.
|
||||
@@ -199,6 +199,9 @@ COMPILING the kernel:
|
||||
are installing a new kernel with the same version number as your
|
||||
working kernel, make a backup of your modules directory before you
|
||||
do a "make modules_install".
|
||||
In alternative, before compiling, edit your Makefile and change the
|
||||
"EXTRAVERSION" line - its content is appended to the regular kernel
|
||||
version.
|
||||
|
||||
- In order to boot your new kernel, you'll need to copy the kernel
|
||||
image (e.g. .../linux/arch/i386/boot/bzImage after compilation)
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <linux/namei.h>
|
||||
#include <linux/uio.h>
|
||||
#include <linux/vfs.h>
|
||||
#include <linux/rcupdate.h>
|
||||
|
||||
#include <asm/fpu.h>
|
||||
#include <asm/io.h>
|
||||
@@ -975,6 +976,7 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
|
||||
long timeout;
|
||||
int ret = -EINVAL;
|
||||
struct fdtable *fdt;
|
||||
int max_fdset;
|
||||
|
||||
timeout = MAX_SCHEDULE_TIMEOUT;
|
||||
if (tvp) {
|
||||
@@ -996,8 +998,11 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
|
||||
}
|
||||
}
|
||||
|
||||
rcu_read_lock();
|
||||
fdt = files_fdtable(current->files);
|
||||
if (n < 0 || n > fdt->max_fdset)
|
||||
max_fdset = fdt->max_fdset;
|
||||
rcu_read_unlock();
|
||||
if (n < 0 || n > max_fdset)
|
||||
goto out_nofds;
|
||||
|
||||
/*
|
||||
|
||||
@@ -394,6 +394,22 @@ clipper_init_irq(void)
|
||||
* 10 64 bit PCI option slot 3 (not bus 0)
|
||||
*/
|
||||
|
||||
static int __init
|
||||
isa_irq_fixup(struct pci_dev *dev, int irq)
|
||||
{
|
||||
u8 irq8;
|
||||
|
||||
if (irq > 0)
|
||||
return irq;
|
||||
|
||||
/* This interrupt is routed via ISA bridge, so we'll
|
||||
just have to trust whatever value the console might
|
||||
have assigned. */
|
||||
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq8);
|
||||
|
||||
return irq8 & 0xf;
|
||||
}
|
||||
|
||||
static int __init
|
||||
dp264_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{
|
||||
@@ -407,25 +423,13 @@ dp264_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{ 16+ 3, 16+ 3, 16+ 2, 16+ 1, 16+ 0} /* IdSel 10 slot 3 */
|
||||
};
|
||||
const long min_idsel = 5, max_idsel = 10, irqs_per_slot = 5;
|
||||
|
||||
struct pci_controller *hose = dev->sysdata;
|
||||
int irq = COMMON_TABLE_LOOKUP;
|
||||
|
||||
if (irq > 0) {
|
||||
if (irq > 0)
|
||||
irq += 16 * hose->index;
|
||||
} else {
|
||||
/* ??? The Contaq IDE controller on the ISA bridge uses
|
||||
"legacy" interrupts 14 and 15. I don't know if anything
|
||||
can wind up at the same slot+pin on hose1, so we'll
|
||||
just have to trust whatever value the console might
|
||||
have assigned. */
|
||||
|
||||
u8 irq8;
|
||||
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq8);
|
||||
irq = irq8;
|
||||
}
|
||||
|
||||
return irq;
|
||||
return isa_irq_fixup(dev, irq);
|
||||
}
|
||||
|
||||
static int __init
|
||||
@@ -453,7 +457,8 @@ monet_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{ 24, 24, 25, 26, 27} /* IdSel 15 slot 5 PCI2*/
|
||||
};
|
||||
const long min_idsel = 3, max_idsel = 15, irqs_per_slot = 5;
|
||||
return COMMON_TABLE_LOOKUP;
|
||||
|
||||
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
|
||||
}
|
||||
|
||||
static u8 __init
|
||||
@@ -507,7 +512,8 @@ webbrick_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{ 47, 47, 46, 45, 44}, /* IdSel 17 slot 3 */
|
||||
};
|
||||
const long min_idsel = 7, max_idsel = 17, irqs_per_slot = 5;
|
||||
return COMMON_TABLE_LOOKUP;
|
||||
|
||||
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
|
||||
}
|
||||
|
||||
static int __init
|
||||
@@ -524,14 +530,13 @@ clipper_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{ -1, -1, -1, -1, -1} /* IdSel 7 ISA Bridge */
|
||||
};
|
||||
const long min_idsel = 1, max_idsel = 7, irqs_per_slot = 5;
|
||||
|
||||
struct pci_controller *hose = dev->sysdata;
|
||||
int irq = COMMON_TABLE_LOOKUP;
|
||||
|
||||
if (irq > 0)
|
||||
irq += 16 * hose->index;
|
||||
|
||||
return irq;
|
||||
return isa_irq_fixup(dev, irq);
|
||||
}
|
||||
|
||||
static void __init
|
||||
|
||||
@@ -256,5 +256,5 @@ asmlinkage void ofw_init(ofw_handle_t o, int *nomr, int *pointer)
|
||||
temp[11]='\0';
|
||||
mem_len = OF_getproplen(o,phandle, temp);
|
||||
OF_getprop(o,phandle, temp, buffer, mem_len);
|
||||
(unsigned char) pointer[32] = ((unsigned char *) buffer)[mem_len-2];
|
||||
* ((unsigned char *) &pointer[32]) = ((unsigned char *) buffer)[mem_len-2];
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user