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 branch 'master' into upstream
This commit is contained in:
+2
-1
@@ -603,7 +603,8 @@ start exactly where you are now.
|
||||
|
||||
|
||||
----------
|
||||
Thanks to Paolo Ciarrocchi who allowed the "Development Process" section
|
||||
Thanks to Paolo Ciarrocchi who allowed the "Development Process"
|
||||
(http://linux.tar.bz/articles/2.6-development_process) section
|
||||
to be based on text he had written, and to Randy Dunlap and Gerrit
|
||||
Huizenga for some of the list of things you should and should not say.
|
||||
Also thanks to Pat Mochel, Hanna Linder, Randy Dunlap, Kay Sievers,
|
||||
|
||||
+11
-1
@@ -259,7 +259,17 @@ on the bus need to be capable of doing it, so this is something which needs
|
||||
to be handled by platform and generic code, not individual drivers.
|
||||
|
||||
|
||||
8. Obsolete functions
|
||||
8. Vendor and device identifications
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
For the future, let's avoid adding device ids to include/linux/pci_ids.h.
|
||||
|
||||
PCI_VENDOR_ID_xxx for vendors, and a hex constant for device ids.
|
||||
|
||||
Rationale: PCI_VENDOR_ID_xxx constants are re-used, but device ids are not.
|
||||
Further, device ids are arbitrary hex numbers, normally used only in a
|
||||
single location, the pci_device_id table.
|
||||
|
||||
9. Obsolete functions
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
There are several functions which you might come across when trying to
|
||||
port an old driver to the new PCI interface. They are no longer present
|
||||
|
||||
@@ -140,7 +140,7 @@ IBM TP T41p s3_bios (2), switch to X after resume
|
||||
IBM TP T42 s3_bios (2)
|
||||
IBM ThinkPad T42p (2373-GTG) s3_bios (2)
|
||||
IBM TP X20 ??? (*)
|
||||
IBM TP X30 s3_bios (2)
|
||||
IBM TP X30 s3_bios, s3_mode (4)
|
||||
IBM TP X31 / Type 2672-XXH none (1), use radeontool (http://fdd.com/software/radeon/) to turn off backlight.
|
||||
IBM TP X32 none (1), but backlight is on and video is trashed after long suspend. s3_bios,s3_mode (4) works too. Perhaps that gets better results?
|
||||
IBM Thinkpad X40 Type 2371-7JG s3_bios,s3_mode (4)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Guide to using M-Audio Audiophile USB with ALSA and Jack v1.2
|
||||
Guide to using M-Audio Audiophile USB with ALSA and Jack v1.3
|
||||
========================================================
|
||||
|
||||
Thibault Le Meur <Thibault.LeMeur@supelec.fr>
|
||||
@@ -22,16 +22,16 @@ The device has 4 audio interfaces, and 2 MIDI ports:
|
||||
* Midi In (Mi)
|
||||
* Midi Out (Mo)
|
||||
|
||||
The internal DAC/ADC has the following caracteristics:
|
||||
The internal DAC/ADC has the following characteristics:
|
||||
* sample depth of 16 or 24 bits
|
||||
* sample rate from 8kHz to 96kHz
|
||||
* Two ports can't use different sample depths at the same time.Moreover, the
|
||||
* Two ports can't use different sample depths at the same time. Moreover, the
|
||||
Audiophile USB documentation gives the following Warning: "Please exit any
|
||||
audio application running before switching between bit depths"
|
||||
|
||||
Due to the USB 1.1 bandwidth limitation, a limited number of interfaces can be
|
||||
activated at the same time depending on the audio mode selected:
|
||||
* 16-bit/48kHz ==> 4 channels in/ 4 channels out
|
||||
* 16-bit/48kHz ==> 4 channels in/4 channels out
|
||||
- Ai+Ao+Di+Do
|
||||
* 24-bit/48kHz ==> 4 channels in/2 channels out,
|
||||
or 2 channels in/4 channels out
|
||||
@@ -41,8 +41,8 @@ activated at the same time depending on the audio mode selected:
|
||||
|
||||
Important facts about the Digital interface:
|
||||
--------------------------------------------
|
||||
* The Do port additionnaly supports surround-encoded AC-3 and DTS passthrough,
|
||||
though I haven't tested it under linux
|
||||
* The Do port additionally supports surround-encoded AC-3 and DTS passthrough,
|
||||
though I haven't tested it under Linux
|
||||
- Note that in this setup only the Do interface can be enabled
|
||||
* Apart from recording an audio digital stream, enabling the Di port is a way
|
||||
to synchronize the device to an external sample clock
|
||||
@@ -60,24 +60,23 @@ synchronization error (for instance sound played at an odd sample rate)
|
||||
The Audiophile USB MIDI ports will be automatically supported once the
|
||||
following modules have been loaded:
|
||||
* snd-usb-audio
|
||||
* snd-seq
|
||||
* snd-seq-midi
|
||||
|
||||
No additionnal setting is required.
|
||||
No additional setting is required.
|
||||
|
||||
2.2 - Audio ports
|
||||
-----------------
|
||||
|
||||
Audio functions of the Audiophile USB device are handled by the snd-usb-audio
|
||||
module. This module can work in a default mode (without any device-specific
|
||||
parameter), or in an advanced mode with the device-specific parameter called
|
||||
parameter), or in an "advanced" mode with the device-specific parameter called
|
||||
"device_setup".
|
||||
|
||||
2.2.1 - Default Alsa driver mode
|
||||
|
||||
The default behaviour of the snd-usb-audio driver is to parse the device
|
||||
The default behavior of the snd-usb-audio driver is to parse the device
|
||||
capabilities at startup and enable all functions inside the device (including
|
||||
all ports at any sample rates and any sample depths supported). This approach
|
||||
all ports at any supported sample rates and sample depths). This approach
|
||||
has the advantage to let the driver easily switch from sample rates/depths
|
||||
automatically according to the need of the application claiming the device.
|
||||
|
||||
@@ -114,9 +113,9 @@ gain).
|
||||
For people having this problem, the snd-usb-audio module has a new module
|
||||
parameter called "device_setup".
|
||||
|
||||
2.2.2.1 - Initializing the working mode of the Audiohile USB
|
||||
2.2.2.1 - Initializing the working mode of the Audiophile USB
|
||||
|
||||
As far as the Audiohile USB device is concerned, this value let the user
|
||||
As far as the Audiophile USB device is concerned, this value let the user
|
||||
specify:
|
||||
* the sample depth
|
||||
* the sample rate
|
||||
@@ -174,20 +173,20 @@ The parameter can be given:
|
||||
|
||||
IMPORTANT NOTE WHEN SWITCHING CONFIGURATION:
|
||||
-------------------------------------------
|
||||
* You may need to _first_ intialize the module with the correct device_setup
|
||||
* You may need to _first_ initialize the module with the correct device_setup
|
||||
parameter and _only_after_ turn on the Audiophile USB device
|
||||
* This is especially true when switching the sample depth:
|
||||
- first trun off the device
|
||||
- de-register the snd-usb-audio module
|
||||
- change the device_setup parameter (by either manually reprobing the module
|
||||
or changing modprobe.conf)
|
||||
- first turn off the device
|
||||
- de-register the snd-usb-audio module (modprobe -r)
|
||||
- change the device_setup parameter by changing the device_setup
|
||||
option in /etc/modprobe.conf
|
||||
- turn on the device
|
||||
|
||||
2.2.2.3 - Audiophile USB's device_setup structure
|
||||
|
||||
If you want to understand the device_setup magic numbers for the Audiophile
|
||||
USB, you need some very basic understanding of binary computation. However,
|
||||
this is not required to use the parameter and you may skip thi section.
|
||||
this is not required to use the parameter and you may skip this section.
|
||||
|
||||
The device_setup is one byte long and its structure is the following:
|
||||
|
||||
@@ -231,11 +230,11 @@ Caution:
|
||||
|
||||
2.2.3 - USB implementation details for this device
|
||||
|
||||
You may safely skip this section if you're not interrested in driver
|
||||
You may safely skip this section if you're not interested in driver
|
||||
development.
|
||||
|
||||
This section describes some internals aspect of the device and summarize the
|
||||
data I got by usb-snooping the windows and linux drivers.
|
||||
This section describes some internal aspects of the device and summarize the
|
||||
data I got by usb-snooping the windows and Linux drivers.
|
||||
|
||||
The M-Audio Audiophile USB has 7 USB Interfaces:
|
||||
a "USB interface":
|
||||
@@ -277,9 +276,9 @@ Here is a short description of the AltSettings capabilities:
|
||||
- 16-bit depth, 8-48kHz sample mode
|
||||
- Synch playback (Do), audio format type III IEC1937_AC-3
|
||||
|
||||
In order to ensure a correct intialization of the device, the driver
|
||||
In order to ensure a correct initialization of the device, the driver
|
||||
_must_know_ how the device will be used:
|
||||
* if DTS is choosen, only Interface 2 with AltSet nb.6 must be
|
||||
* if DTS is chosen, only Interface 2 with AltSet nb.6 must be
|
||||
registered
|
||||
* if 96KHz only AltSets nb.1 of each interface must be selected
|
||||
* if samples are using 24bits/48KHz then AltSet 2 must me used if
|
||||
@@ -290,7 +289,7 @@ _must_know_ how the device will be used:
|
||||
is not connected
|
||||
|
||||
When device_setup is given as a parameter to the snd-usb-audio module, the
|
||||
parse_audio_enpoint function uses a quirk called
|
||||
parse_audio_endpoints function uses a quirk called
|
||||
"audiophile_skip_setting_quirk" in order to prevent AltSettings not
|
||||
corresponding to device_setup from being registered in the driver.
|
||||
|
||||
@@ -317,9 +316,8 @@ However you may see the following warning message:
|
||||
using the "default" ALSA device. This is less efficient than it could be.
|
||||
Consider using a hardware device instead rather than using the plug layer."
|
||||
|
||||
|
||||
3.2 - Patching alsa to use direct pcm device
|
||||
-------------------------------------------
|
||||
--------------------------------------------
|
||||
A patch for Jack by Andreas Steinmetz adds support for Big Endian devices.
|
||||
However it has not been included in the CVS tree.
|
||||
|
||||
@@ -331,3 +329,32 @@ After having applied the patch you can run jackd with the following command
|
||||
line:
|
||||
% jackd -R -dalsa -Phw:1,0 -r48000 -p128 -n2 -D -Chw:1,1
|
||||
|
||||
3.2 - Getting 2 input and/or output interfaces in Jack
|
||||
------------------------------------------------------
|
||||
|
||||
As you can see, starting the Jack server this way will only enable 1 stereo
|
||||
input (Di or Ai) and 1 stereo output (Ao or Do).
|
||||
|
||||
This is due to the following restrictions:
|
||||
* Jack can only open one capture device and one playback device at a time
|
||||
* The Audiophile USB is seen as 2 (or three) Alsa devices: hw:1,0, hw:1,1
|
||||
(and optionally hw:1,2)
|
||||
If you want to get Ai+Di and/or Ao+Do support with Jack, you would need to
|
||||
combine the Alsa devices into one logical "complex" device.
|
||||
|
||||
If you want to give it a try, I recommend reading the information from
|
||||
this page: http://www.sound-man.co.uk/linuxaudio/ice1712multi.html
|
||||
It is related to another device (ice1712) but can be adapted to suit
|
||||
the Audiophile USB.
|
||||
|
||||
Enabling multiple Audiophile USB interfaces for Jackd will certainly require:
|
||||
* patching Jack with the previously mentioned "Big Endian" patch
|
||||
* patching Jackd with the MMAP_COMPLEX patch (see the ice1712 page)
|
||||
* patching the alsa-lib/src/pcm/pcm_multi.c file (see the ice1712 page)
|
||||
* define a multi device (combination of hw:1,0 and hw:1,1) in your .asoundrc
|
||||
file
|
||||
* start jackd with this device
|
||||
|
||||
I had no success in testing this for now, but this may be due to my OS
|
||||
configuration. If you have any success with this kind of setup, please
|
||||
drop me an email.
|
||||
|
||||
@@ -1172,7 +1172,7 @@
|
||||
}
|
||||
|
||||
/* PCI IDs */
|
||||
static struct pci_device_id snd_mychip_ids[] = {
|
||||
static struct pci_device_id snd_mychip_ids[] __devinitdata = {
|
||||
{ PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
|
||||
....
|
||||
@@ -1565,7 +1565,7 @@
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
static struct pci_device_id snd_mychip_ids[] = {
|
||||
static struct pci_device_id snd_mychip_ids[] __devinitdata = {
|
||||
{ PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
|
||||
....
|
||||
|
||||
+2
-2
@@ -467,7 +467,7 @@ endchoice
|
||||
|
||||
choice
|
||||
depends on EXPERIMENTAL && !X86_PAE
|
||||
prompt "Memory split"
|
||||
prompt "Memory split" if EMBEDDED
|
||||
default VMSPLIT_3G
|
||||
help
|
||||
Select the desired split between kernel and user memory.
|
||||
@@ -756,7 +756,7 @@ config PHYSICAL_START
|
||||
|
||||
config HOTPLUG_CPU
|
||||
bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
|
||||
depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER && !X86_PC
|
||||
depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER
|
||||
---help---
|
||||
Say Y here to experiment with turning CPUs off and on. CPUs
|
||||
can be controlled through /sys/devices/system/cpu.
|
||||
|
||||
@@ -215,7 +215,7 @@ static int __init acpi_parse_madt(unsigned long phys_addr, unsigned long size)
|
||||
{
|
||||
struct acpi_table_madt *madt = NULL;
|
||||
|
||||
if (!phys_addr || !size || !cpu_has_apic)
|
||||
if (!phys_addr || !size)
|
||||
return -EINVAL;
|
||||
|
||||
madt = (struct acpi_table_madt *)__acpi_map_table(phys_addr, size);
|
||||
@@ -1151,6 +1151,9 @@ int __init acpi_boot_init(void)
|
||||
|
||||
acpi_table_parse(ACPI_BOOT, acpi_parse_sbf);
|
||||
|
||||
if (!cpu_has_apic)
|
||||
return -ENODEV;
|
||||
|
||||
/*
|
||||
* set sci_int and PM timer address
|
||||
*/
|
||||
|
||||
@@ -757,10 +757,6 @@ static int __init apic_set_verbosity(char *str)
|
||||
apic_verbosity = APIC_DEBUG;
|
||||
else if (strcmp("verbose", str) == 0)
|
||||
apic_verbosity = APIC_VERBOSE;
|
||||
else
|
||||
printk(KERN_WARNING "APIC Verbosity level %s not recognised"
|
||||
" use apic=verbose or apic=debug\n", str);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -242,10 +242,6 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
|
||||
kcb->kprobe_status = KPROBE_REENTER;
|
||||
return 1;
|
||||
} else {
|
||||
if (regs->eflags & VM_MASK) {
|
||||
/* We are in virtual-8086 mode. Return 0 */
|
||||
goto no_kprobe;
|
||||
}
|
||||
if (*addr != BREAKPOINT_INSTRUCTION) {
|
||||
/* The breakpoint instruction was removed by
|
||||
* another cpu right after we hit, no further
|
||||
@@ -265,11 +261,6 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
|
||||
|
||||
p = get_kprobe(addr);
|
||||
if (!p) {
|
||||
if (regs->eflags & VM_MASK) {
|
||||
/* We are in virtual-8086 mode. Return 0 */
|
||||
goto no_kprobe;
|
||||
}
|
||||
|
||||
if (*addr != BREAKPOINT_INSTRUCTION) {
|
||||
/*
|
||||
* The breakpoint instruction was removed right
|
||||
@@ -452,10 +443,11 @@ static void __kprobes resume_execution(struct kprobe *p,
|
||||
*tos &= ~(TF_MASK | IF_MASK);
|
||||
*tos |= kcb->kprobe_old_eflags;
|
||||
break;
|
||||
case 0xc3: /* ret/lret */
|
||||
case 0xcb:
|
||||
case 0xc2:
|
||||
case 0xc2: /* iret/ret/lret */
|
||||
case 0xc3:
|
||||
case 0xca:
|
||||
case 0xcb:
|
||||
case 0xcf:
|
||||
case 0xea: /* jmp absolute -- eip is correct */
|
||||
/* eip is already adjusted, no more changes required */
|
||||
p->ainsn.boostable = 1;
|
||||
@@ -463,10 +455,13 @@ static void __kprobes resume_execution(struct kprobe *p,
|
||||
case 0xe8: /* call relative - Fix return addr */
|
||||
*tos = orig_eip + (*tos - copy_eip);
|
||||
break;
|
||||
case 0x9a: /* call absolute -- same as call absolute, indirect */
|
||||
*tos = orig_eip + (*tos - copy_eip);
|
||||
goto no_change;
|
||||
case 0xff:
|
||||
if ((p->ainsn.insn[1] & 0x30) == 0x10) {
|
||||
/* call absolute, indirect */
|
||||
/*
|
||||
* call absolute, indirect
|
||||
* Fix return addr; eip is correct.
|
||||
* But this is not boostable
|
||||
*/
|
||||
|
||||
@@ -671,7 +671,7 @@ int do_syscall_trace(struct pt_regs *regs, int entryexit)
|
||||
|
||||
if (unlikely(current->audit_context)) {
|
||||
if (entryexit)
|
||||
audit_syscall_exit(current, AUDITSC_RESULT(regs->eax),
|
||||
audit_syscall_exit(AUDITSC_RESULT(regs->eax),
|
||||
regs->eax);
|
||||
/* Debug traps, when using PTRACE_SINGLESTEP, must be sent only
|
||||
* on the syscall exit path. Normally, when TIF_SYSCALL_AUDIT is
|
||||
@@ -720,14 +720,13 @@ int do_syscall_trace(struct pt_regs *regs, int entryexit)
|
||||
ret = is_sysemu;
|
||||
out:
|
||||
if (unlikely(current->audit_context) && !entryexit)
|
||||
audit_syscall_entry(current, AUDIT_ARCH_I386, regs->orig_eax,
|
||||
audit_syscall_entry(AUDIT_ARCH_I386, regs->orig_eax,
|
||||
regs->ebx, regs->ecx, regs->edx, regs->esi);
|
||||
if (ret == 0)
|
||||
return 0;
|
||||
|
||||
regs->orig_eax = -1; /* force skip of syscall restarting */
|
||||
if (unlikely(current->audit_context))
|
||||
audit_syscall_exit(current, AUDITSC_RESULT(regs->eax),
|
||||
regs->eax);
|
||||
audit_syscall_exit(AUDITSC_RESULT(regs->eax), regs->eax);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -970,8 +970,10 @@ efi_memory_present_wrapper(unsigned long start, unsigned long end, void *arg)
|
||||
* not-overlapping, which is the case
|
||||
*/
|
||||
int __init
|
||||
e820_all_mapped(unsigned long start, unsigned long end, unsigned type)
|
||||
e820_all_mapped(unsigned long s, unsigned long e, unsigned type)
|
||||
{
|
||||
u64 start = s;
|
||||
u64 end = e;
|
||||
int i;
|
||||
for (i = 0; i < e820.nr_map; i++) {
|
||||
struct e820entry *ei = &e820.map[i];
|
||||
|
||||
@@ -313,7 +313,9 @@ static void __init synchronize_tsc_bp (void)
|
||||
if (tsc_values[i] < avg)
|
||||
realdelta = -realdelta;
|
||||
|
||||
printk(KERN_INFO "CPU#%d had %ld usecs TSC skew, fixed it up.\n", i, realdelta);
|
||||
if (realdelta > 0)
|
||||
printk(KERN_INFO "CPU#%d had %ld usecs TSC "
|
||||
"skew, fixed it up.\n", i, realdelta);
|
||||
}
|
||||
|
||||
sum += delta;
|
||||
|
||||
@@ -279,7 +279,7 @@ time_cpufreq_notifier(struct notifier_block *nb, unsigned long val,
|
||||
{
|
||||
struct cpufreq_freqs *freq = data;
|
||||
|
||||
if (val != CPUFREQ_RESUMECHANGE)
|
||||
if (val != CPUFREQ_RESUMECHANGE && val != CPUFREQ_SUSPENDCHANGE)
|
||||
write_seqlock_irq(&xtime_lock);
|
||||
if (!ref_freq) {
|
||||
if (!freq->old){
|
||||
@@ -312,7 +312,7 @@ time_cpufreq_notifier(struct notifier_block *nb, unsigned long val,
|
||||
}
|
||||
|
||||
end:
|
||||
if (val != CPUFREQ_RESUMECHANGE)
|
||||
if (val != CPUFREQ_RESUMECHANGE && val != CPUFREQ_SUSPENDCHANGE)
|
||||
write_sequnlock_irq(&xtime_lock);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -312,7 +312,7 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk
|
||||
|
||||
/*call audit_syscall_exit since we do not exit via the normal paths */
|
||||
if (unlikely(current->audit_context))
|
||||
audit_syscall_exit(current, AUDITSC_RESULT(eax), eax);
|
||||
audit_syscall_exit(AUDITSC_RESULT(eax), eax);
|
||||
|
||||
__asm__ __volatile__(
|
||||
"movl %0,%%esp\n\t"
|
||||
|
||||
@@ -591,7 +591,6 @@ static __init int via_router_probe(struct irq_router *r,
|
||||
case PCI_DEVICE_ID_VIA_8233A:
|
||||
case PCI_DEVICE_ID_VIA_8235:
|
||||
case PCI_DEVICE_ID_VIA_8237:
|
||||
case PCI_DEVICE_ID_VIA_8237_SATA:
|
||||
/* FIXME: add new ones for 8233/5 */
|
||||
r->name = "VIA";
|
||||
r->get = pirq_via_get;
|
||||
|
||||
@@ -413,6 +413,8 @@ config IA64_PALINFO
|
||||
config SGI_SN
|
||||
def_bool y if (IA64_SGI_SN2 || IA64_GENERIC)
|
||||
|
||||
source "drivers/sn/Kconfig"
|
||||
|
||||
source "drivers/firmware/Kconfig"
|
||||
|
||||
source "fs/Kconfig.binfmt"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.16-rc5
|
||||
# Mon Feb 27 16:06:38 2006
|
||||
# Linux kernel version: 2.6.17-rc3
|
||||
# Thu Apr 27 11:48:23 2006
|
||||
#
|
||||
|
||||
#
|
||||
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_CPUSETS=y
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
# CONFIG_EMBEDDED is not set
|
||||
@@ -38,10 +39,6 @@ CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
@@ -53,7 +50,6 @@ CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
CONFIG_OBSOLETE_MODPARM=y
|
||||
# CONFIG_MODVERSIONS is not set
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_KMOD=y
|
||||
@@ -62,6 +58,7 @@ CONFIG_STOP_MACHINE=y
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
@@ -84,8 +81,10 @@ CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_TIME_INTERPOLATION=y
|
||||
CONFIG_DMI=y
|
||||
CONFIG_EFI=y
|
||||
CONFIG_GENERIC_IOMAP=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
@@ -116,7 +115,6 @@ CONFIG_IA64_SGI_SN_XP=m
|
||||
CONFIG_FORCE_MAX_ZONEORDER=17
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=1024
|
||||
CONFIG_IA64_NR_NODES=256
|
||||
# CONFIG_HOTPLUG_CPU is not set
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_PREEMPT=y
|
||||
@@ -136,6 +134,7 @@ CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
|
||||
CONFIG_NUMA=y
|
||||
CONFIG_NODES_SHIFT=8
|
||||
CONFIG_VIRTUAL_MEM_MAP=y
|
||||
CONFIG_HOLES_IN_ZONE=y
|
||||
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
|
||||
@@ -187,7 +186,6 @@ CONFIG_ACPI_SYSTEM=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
# CONFIG_PCI_MSI is not set
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
|
||||
#
|
||||
@@ -231,6 +229,7 @@ CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_INET_DIAG=m
|
||||
CONFIG_INET_TCP_DIAG=m
|
||||
@@ -238,9 +237,11 @@ CONFIG_INET_TCP_DIAG=m
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
CONFIG_IPV6=m
|
||||
# CONFIG_IPV6_PRIVACY is not set
|
||||
# CONFIG_IPV6_ROUTER_PREF is not set
|
||||
# CONFIG_INET6_AH is not set
|
||||
# CONFIG_INET6_ESP is not set
|
||||
# CONFIG_INET6_IPCOMP is not set
|
||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET6_TUNNEL is not set
|
||||
# CONFIG_IPV6_TUNNEL is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
@@ -468,9 +469,14 @@ CONFIG_SCSI_SATA_VITESSE=y
|
||||
# CONFIG_SCSI_INIA100 is not set
|
||||
# CONFIG_SCSI_SYM53C8XX_2 is not set
|
||||
# CONFIG_SCSI_IPR is not set
|
||||
# CONFIG_SCSI_QLOGIC_FC is not set
|
||||
CONFIG_SCSI_QLOGIC_1280=y
|
||||
# CONFIG_SCSI_QLA_FC is not set
|
||||
CONFIG_SCSI_QLA_FC=y
|
||||
CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE=y
|
||||
# CONFIG_SCSI_QLA21XX is not set
|
||||
CONFIG_SCSI_QLA22XX=y
|
||||
CONFIG_SCSI_QLA2300=y
|
||||
CONFIG_SCSI_QLA2322=y
|
||||
# CONFIG_SCSI_QLA24XX is not set
|
||||
# CONFIG_SCSI_LPFC is not set
|
||||
# CONFIG_SCSI_DC395x is not set
|
||||
# CONFIG_SCSI_DC390T is not set
|
||||
@@ -486,6 +492,7 @@ CONFIG_MD_RAID0=y
|
||||
CONFIG_MD_RAID1=y
|
||||
# CONFIG_MD_RAID10 is not set
|
||||
CONFIG_MD_RAID5=y
|
||||
# CONFIG_MD_RAID5_RESHAPE is not set
|
||||
# CONFIG_MD_RAID6 is not set
|
||||
CONFIG_MD_MULTIPATH=y
|
||||
# CONFIG_MD_FAULTY is not set
|
||||
@@ -694,6 +701,7 @@ CONFIG_EFI_RTC=y
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
CONFIG_AGP=y
|
||||
# CONFIG_AGP_VIA is not set
|
||||
CONFIG_AGP_SGI_TIOCA=y
|
||||
# CONFIG_DRM is not set
|
||||
CONFIG_RAW_DRIVER=m
|
||||
@@ -734,10 +742,6 @@ CONFIG_MMTIMER=y
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia Capabilities Port drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@@ -747,6 +751,7 @@ CONFIG_MMTIMER=y
|
||||
# Digital Video Broadcasting Devices
|
||||
#
|
||||
# CONFIG_DVB is not set
|
||||
# CONFIG_USB_DABUSB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
@@ -757,6 +762,7 @@ CONFIG_MMTIMER=y
|
||||
# Console display driver support
|
||||
#
|
||||
CONFIG_VGA_CONSOLE=y
|
||||
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
|
||||
#
|
||||
@@ -769,6 +775,7 @@ CONFIG_DUMMY_CONSOLE=y
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB_ARCH_HAS_EHCI=y
|
||||
CONFIG_USB=m
|
||||
# CONFIG_USB_DEBUG is not set
|
||||
|
||||
@@ -829,9 +836,7 @@ CONFIG_USB_HIDINPUT=y
|
||||
# CONFIG_USB_ACECAD is not set
|
||||
# CONFIG_USB_KBTAB is not set
|
||||
# CONFIG_USB_POWERMATE is not set
|
||||
# CONFIG_USB_MTOUCH is not set
|
||||
# CONFIG_USB_ITMTOUCH is not set
|
||||
# CONFIG_USB_EGALAX is not set
|
||||
# CONFIG_USB_TOUCHSCREEN is not set
|
||||
# CONFIG_USB_YEALINK is not set
|
||||
# CONFIG_USB_XPAD is not set
|
||||
# CONFIG_USB_ATI_REMOTE is not set
|
||||
@@ -845,15 +850,6 @@ CONFIG_USB_HIDINPUT=y
|
||||
# CONFIG_USB_MDC800 is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
|
||||
#
|
||||
# USB Multimedia devices
|
||||
#
|
||||
# CONFIG_USB_DABUSB is not set
|
||||
|
||||
#
|
||||
# Video4Linux support is needed for USB Multimedia device support
|
||||
#
|
||||
|
||||
#
|
||||
# USB Network Adapters
|
||||
#
|
||||
@@ -904,6 +900,19 @@ CONFIG_USB_MON=y
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
|
||||
#
|
||||
# LED devices
|
||||
#
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
||||
#
|
||||
# LED drivers
|
||||
#
|
||||
|
||||
#
|
||||
# LED Triggers
|
||||
#
|
||||
|
||||
#
|
||||
# InfiniBand support
|
||||
#
|
||||
@@ -911,9 +920,10 @@ CONFIG_INFINIBAND=m
|
||||
# CONFIG_INFINIBAND_USER_MAD is not set
|
||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||
CONFIG_INFINIBAND_MTHCA=m
|
||||
# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
|
||||
CONFIG_INFINIBAND_MTHCA_DEBUG=y
|
||||
CONFIG_INFINIBAND_IPOIB=m
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
|
||||
CONFIG_INFINIBAND_IPOIB_DEBUG=y
|
||||
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
|
||||
CONFIG_INFINIBAND_SRP=m
|
||||
|
||||
#
|
||||
@@ -923,9 +933,14 @@ CONFIG_SGI_IOC4=y
|
||||
CONFIG_SGI_IOC3=y
|
||||
|
||||
#
|
||||
# EDAC - error detection and reporting (RAS)
|
||||
# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
|
||||
#
|
||||
|
||||
#
|
||||
# Real Time Clock
|
||||
#
|
||||
# CONFIG_RTC_CLASS is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
@@ -997,7 +1012,6 @@ CONFIG_TMPFS=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_HUGETLB_PAGE=y
|
||||
CONFIG_RAMFS=y
|
||||
CONFIG_RELAYFS_FS=m
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
|
||||
@@ -35,6 +35,9 @@ extern void ia64_elf32_init (struct pt_regs *regs);
|
||||
|
||||
static void elf32_set_personality (void);
|
||||
|
||||
static unsigned long __attribute ((unused))
|
||||
randomize_stack_top(unsigned long stack_top);
|
||||
|
||||
#define setup_arg_pages(bprm,tos,exec) ia32_setup_arg_pages(bprm,exec)
|
||||
#define elf_map elf32_map
|
||||
|
||||
|
||||
@@ -334,7 +334,7 @@ ia32_syscall_table:
|
||||
data8 sys_setdomainname
|
||||
data8 sys32_newuname
|
||||
data8 sys32_modify_ldt
|
||||
data8 sys_ni_syscall /* adjtimex */
|
||||
data8 compat_sys_adjtimex
|
||||
data8 sys32_mprotect /* 125 */
|
||||
data8 compat_sys_sigprocmask
|
||||
data8 sys_ni_syscall /* create_module */
|
||||
|
||||
+36
-18
@@ -62,6 +62,11 @@ typedef enum {
|
||||
ISOLATE_NONE
|
||||
} isolate_status_t;
|
||||
|
||||
typedef enum {
|
||||
MCA_NOT_RECOVERED = 0,
|
||||
MCA_RECOVERED = 1
|
||||
} recovery_status_t;
|
||||
|
||||
/*
|
||||
* This pool keeps pointers to the section part of SAL error record
|
||||
*/
|
||||
@@ -71,6 +76,18 @@ static struct {
|
||||
int max_idx; /* Maximum index of section pointer list pool */
|
||||
} slidx_pool;
|
||||
|
||||
static int
|
||||
fatal_mca(const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
vprintk(fmt, args);
|
||||
va_end(args);
|
||||
|
||||
return MCA_NOT_RECOVERED;
|
||||
}
|
||||
|
||||
/**
|
||||
* mca_page_isolate - isolate a poisoned page in order not to use it later
|
||||
* @paddr: poisoned memory location
|
||||
@@ -424,7 +441,7 @@ recover_from_read_error(slidx_table_t *slidx,
|
||||
|
||||
/* Is target address valid? */
|
||||
if (!pbci->tv)
|
||||
return 0;
|
||||
return fatal_mca(KERN_ALERT "MCA: target address not valid\n");
|
||||
|
||||
/*
|
||||
* cpu read or memory-mapped io read
|
||||
@@ -442,7 +459,7 @@ recover_from_read_error(slidx_table_t *slidx,
|
||||
|
||||
/* Is minstate valid? */
|
||||
if (!peidx_bottom(peidx) || !(peidx_bottom(peidx)->valid.minstate))
|
||||
return 0;
|
||||
return fatal_mca(KERN_ALERT "MCA: minstate not valid\n");
|
||||
psr1 =(struct ia64_psr *)&(peidx_minstate_area(peidx)->pmsa_ipsr);
|
||||
psr2 =(struct ia64_psr *)&(peidx_minstate_area(peidx)->pmsa_xpsr);
|
||||
|
||||
@@ -476,12 +493,13 @@ recover_from_read_error(slidx_table_t *slidx,
|
||||
psr2->bn = 1;
|
||||
psr2->i = 0;
|
||||
|
||||
return 1;
|
||||
return MCA_RECOVERED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
return fatal_mca(KERN_ALERT "MCA: kernel context not recovered,"
|
||||
" iip 0x%lx\n", pmsa->pmsa_iip);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -567,13 +585,13 @@ recover_from_processor_error(int platform, slidx_table_t *slidx,
|
||||
* The machine check is corrected.
|
||||
*/
|
||||
if (psp->cm == 1)
|
||||
return 1;
|
||||
return MCA_RECOVERED;
|
||||
|
||||
/*
|
||||
* The error was not contained. Software must be reset.
|
||||
*/
|
||||
if (psp->us || psp->ci == 0)
|
||||
return 0;
|
||||
return fatal_mca(KERN_ALERT "MCA: error not contained\n");
|
||||
|
||||
/*
|
||||
* The cache check and bus check bits have four possible states
|
||||
@@ -584,20 +602,22 @@ recover_from_processor_error(int platform, slidx_table_t *slidx,
|
||||
* 1 1 Memory error, attempt recovery
|
||||
*/
|
||||
if (psp->bc == 0 || pbci == NULL)
|
||||
return 0;
|
||||
return fatal_mca(KERN_ALERT "MCA: No bus check\n");
|
||||
|
||||
/*
|
||||
* Sorry, we cannot handle so many.
|
||||
*/
|
||||
if (peidx_bus_check_num(peidx) > 1)
|
||||
return 0;
|
||||
return fatal_mca(KERN_ALERT "MCA: Too many bus checks\n");
|
||||
/*
|
||||
* Well, here is only one bus error.
|
||||
*/
|
||||
if (pbci->ib || pbci->cc)
|
||||
return 0;
|
||||
if (pbci->ib)
|
||||
return fatal_mca(KERN_ALERT "MCA: Internal Bus error\n");
|
||||
if (pbci->cc)
|
||||
return fatal_mca(KERN_ALERT "MCA: Cache-cache error\n");
|
||||
if (pbci->eb && pbci->bsi > 0)
|
||||
return 0;
|
||||
return fatal_mca(KERN_ALERT "MCA: External bus check fatal status\n");
|
||||
|
||||
/*
|
||||
* This is a local MCA and estimated as recoverble external bus error.
|
||||
@@ -609,7 +629,7 @@ recover_from_processor_error(int platform, slidx_table_t *slidx,
|
||||
/*
|
||||
* On account of strange SAL error record, we cannot recover.
|
||||
*/
|
||||
return 0;
|
||||
return fatal_mca(KERN_ALERT "MCA: Strange SAL record\n");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -638,12 +658,10 @@ mca_try_to_recover(void *rec, struct ia64_sal_os_state *sos)
|
||||
|
||||
/* Now, OS can recover when there is one processor error section */
|
||||
if (n_proc_err > 1)
|
||||
return 0;
|
||||
else if (n_proc_err == 0) {
|
||||
return fatal_mca(KERN_ALERT "MCA: Too Many Errors\n");
|
||||
else if (n_proc_err == 0)
|
||||
/* Weird SAL record ... We need not to recover */
|
||||
|
||||
return 1;
|
||||
}
|
||||
return fatal_mca(KERN_ALERT "MCA: Weird SAL record\n");
|
||||
|
||||
/* Make index of processor error section */
|
||||
mca_make_peidx((sal_log_processor_info_t*)
|
||||
@@ -654,7 +672,7 @@ mca_try_to_recover(void *rec, struct ia64_sal_os_state *sos)
|
||||
|
||||
/* Check whether MCA is global or not */
|
||||
if (is_mca_global(&peidx, &pbci, sos))
|
||||
return 0;
|
||||
return fatal_mca(KERN_ALERT "MCA: global MCA\n");
|
||||
|
||||
/* Try to recover a processor error */
|
||||
return recover_from_processor_error(platform_err, &slidx, &peidx,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user