mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 05:32:00 +00:00
Merge from-linus to-akpm
This commit is contained in:
commit
84ffa74752
3
CREDITS
3
CREDITS
@ -2423,8 +2423,7 @@ S: Toronto, Ontario
|
|||||||
S: Canada
|
S: Canada
|
||||||
|
|
||||||
N: Zwane Mwaikambo
|
N: Zwane Mwaikambo
|
||||||
E: zwane@linuxpower.ca
|
E: zwane@arm.linux.org.uk
|
||||||
W: http://function.linuxpower.ca
|
|
||||||
D: Various driver hacking
|
D: Various driver hacking
|
||||||
D: Lowlevel x86 kernel hacking
|
D: Lowlevel x86 kernel hacking
|
||||||
D: General debugging
|
D: General debugging
|
||||||
|
@ -266,20 +266,6 @@ port an old driver to the new PCI interface. They are no longer present
|
|||||||
in the kernel as they aren't compatible with hotplug or PCI domains or
|
in the kernel as they aren't compatible with hotplug or PCI domains or
|
||||||
having sane locking.
|
having sane locking.
|
||||||
|
|
||||||
pcibios_present() and Since ages, you don't need to test presence
|
|
||||||
pci_present() of PCI subsystem when trying to talk to it.
|
|
||||||
If it's not there, the list of PCI devices
|
|
||||||
is empty and all functions for searching for
|
|
||||||
devices just return NULL.
|
|
||||||
pcibios_(read|write)_* Superseded by their pci_(read|write)_*
|
|
||||||
counterparts.
|
|
||||||
pcibios_find_* Superseded by their pci_get_* counterparts.
|
|
||||||
pci_for_each_dev() Superseded by pci_get_device()
|
|
||||||
pci_for_each_dev_reverse() Superseded by pci_find_device_reverse()
|
|
||||||
pci_for_each_bus() Superseded by pci_find_next_bus()
|
|
||||||
pci_find_device() Superseded by pci_get_device()
|
pci_find_device() Superseded by pci_get_device()
|
||||||
pci_find_subsys() Superseded by pci_get_subsys()
|
pci_find_subsys() Superseded by pci_get_subsys()
|
||||||
pci_find_slot() Superseded by pci_get_slot()
|
pci_find_slot() Superseded by pci_get_slot()
|
||||||
pcibios_find_class() Superseded by pci_get_class()
|
|
||||||
pci_find_class() Superseded by pci_get_class()
|
|
||||||
pci_(read|write)_*_nodev() Superseded by pci_bus_(read|write)_*()
|
|
||||||
|
16
MAINTAINERS
16
MAINTAINERS
@ -1739,7 +1739,7 @@ S: Maintained
|
|||||||
|
|
||||||
OPL3-SA2, SA3, and SAx DRIVER
|
OPL3-SA2, SA3, and SAx DRIVER
|
||||||
P: Zwane Mwaikambo
|
P: Zwane Mwaikambo
|
||||||
M: zwane@commfireservices.com
|
M: zwane@arm.linux.org.uk
|
||||||
L: linux-sound@vger.kernel.org
|
L: linux-sound@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
@ -1825,6 +1825,12 @@ P: Greg Kroah-Hartman
|
|||||||
M: greg@kroah.com
|
M: greg@kroah.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
PCIE HOTPLUG DRIVER
|
||||||
|
P: Kristen Carlson Accardi
|
||||||
|
M: kristen.c.accardi@intel.com
|
||||||
|
L: pcihpd-discuss@lists.sourceforge.net
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
PCMCIA SUBSYSTEM
|
PCMCIA SUBSYSTEM
|
||||||
P: Linux PCMCIA Team
|
P: Linux PCMCIA Team
|
||||||
L: http://lists.infradead.org/mailman/listinfo/linux-pcmcia
|
L: http://lists.infradead.org/mailman/listinfo/linux-pcmcia
|
||||||
@ -1989,7 +1995,7 @@ S: Maintained
|
|||||||
|
|
||||||
SC1200 WDT DRIVER
|
SC1200 WDT DRIVER
|
||||||
P: Zwane Mwaikambo
|
P: Zwane Mwaikambo
|
||||||
M: zwane@commfireservices.com
|
M: zwane@arm.linux.org.uk
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
SCHEDULER
|
SCHEDULER
|
||||||
@ -2201,6 +2207,12 @@ W: http://projects.buici.com/arm
|
|||||||
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
SHPC HOTPLUG DRIVER
|
||||||
|
P: Kristen Carlson Accardi
|
||||||
|
M: kristen.c.accardi@intel.com
|
||||||
|
L: pcihpd-discuss@lists.sourceforge.net
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
SPARC (sparc32):
|
SPARC (sparc32):
|
||||||
P: William L. Irwin
|
P: William L. Irwin
|
||||||
M: wli@holomorphy.com
|
M: wli@holomorphy.com
|
||||||
|
@ -327,6 +327,12 @@ __syscall_start:
|
|||||||
/* 310 */ .long sys_request_key
|
/* 310 */ .long sys_request_key
|
||||||
.long sys_keyctl
|
.long sys_keyctl
|
||||||
.long sys_semtimedop
|
.long sys_semtimedop
|
||||||
|
/* vserver */ .long sys_ni_syscall
|
||||||
|
.long sys_ioprio_set
|
||||||
|
/* 315 */ .long sys_ioprio_get
|
||||||
|
.long sys_inotify_init
|
||||||
|
.long sys_inotify_add_watch
|
||||||
|
.long sys_inotify_rm_watch
|
||||||
__syscall_end:
|
__syscall_end:
|
||||||
|
|
||||||
.rept NR_syscalls - (__syscall_end - __syscall_start) / 4
|
.rept NR_syscalls - (__syscall_end - __syscall_start) / 4
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
* 28-Sep-2004 BJD Updates for new serial port bits
|
* 28-Sep-2004 BJD Updates for new serial port bits
|
||||||
* 04-Nov-2004 BJD Updated UART configuration process
|
* 04-Nov-2004 BJD Updated UART configuration process
|
||||||
* 10-Jan-2005 BJD Removed s3c2410_clock_tick_rate
|
* 10-Jan-2005 BJD Removed s3c2410_clock_tick_rate
|
||||||
|
* 13-Aug-2005 DA Removed UART from initial I/O mappings
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
@ -49,10 +50,9 @@ static struct map_desc s3c2410_iodesc[] __initdata = {
|
|||||||
IODESC_ENT(USBHOST),
|
IODESC_ENT(USBHOST),
|
||||||
IODESC_ENT(CLKPWR),
|
IODESC_ENT(CLKPWR),
|
||||||
IODESC_ENT(LCD),
|
IODESC_ENT(LCD),
|
||||||
IODESC_ENT(UART),
|
|
||||||
IODESC_ENT(TIMER),
|
IODESC_ENT(TIMER),
|
||||||
IODESC_ENT(ADC),
|
IODESC_ENT(ADC),
|
||||||
IODESC_ENT(WATCHDOG)
|
IODESC_ENT(WATCHDOG),
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource s3c_uart0_resource[] = {
|
static struct resource s3c_uart0_resource[] = {
|
||||||
|
@ -384,7 +384,7 @@ config CPU_DCACHE_DISABLE
|
|||||||
|
|
||||||
config CPU_DCACHE_WRITETHROUGH
|
config CPU_DCACHE_WRITETHROUGH
|
||||||
bool "Force write through D-cache"
|
bool "Force write through D-cache"
|
||||||
depends on (CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020) && !CPU_DISABLE_DCACHE
|
depends on (CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020) && !CPU_DCACHE_DISABLE
|
||||||
default y if CPU_ARM925T
|
default y if CPU_ARM925T
|
||||||
help
|
help
|
||||||
Say Y here to use the data cache in writethrough mode. Unless you
|
Say Y here to use the data cache in writethrough mode. Unless you
|
||||||
|
@ -105,7 +105,7 @@ ENTRY(cpu_v6_dcache_clean_area)
|
|||||||
ENTRY(cpu_v6_switch_mm)
|
ENTRY(cpu_v6_switch_mm)
|
||||||
mov r2, #0
|
mov r2, #0
|
||||||
ldr r1, [r1, #MM_CONTEXT_ID] @ get mm->context.id
|
ldr r1, [r1, #MM_CONTEXT_ID] @ get mm->context.id
|
||||||
mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB
|
mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB
|
||||||
mcr p15, 0, r2, c7, c10, 4 @ drain write buffer
|
mcr p15, 0, r2, c7, c10, 4 @ drain write buffer
|
||||||
mcr p15, 0, r0, c2, c0, 0 @ set TTB 0
|
mcr p15, 0, r0, c2, c0, 0 @ set TTB 0
|
||||||
mcr p15, 0, r1, c13, c0, 1 @ set context ID
|
mcr p15, 0, r1, c13, c0, 1 @ set context ID
|
||||||
|
@ -1602,9 +1602,7 @@ flag float32_le_quiet( float32 a, float32 b )
|
|||||||
if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) )
|
if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) )
|
||||||
|| ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) )
|
|| ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) )
|
||||||
) {
|
) {
|
||||||
if ( float32_is_signaling_nan( a ) || float32_is_signaling_nan( b ) ) {
|
/* Do nothing, even if NaN as we're quiet */
|
||||||
float_raise( float_flag_invalid );
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
aSign = extractFloat32Sign( a );
|
aSign = extractFloat32Sign( a );
|
||||||
@ -1629,9 +1627,7 @@ flag float32_lt_quiet( float32 a, float32 b )
|
|||||||
if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) )
|
if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) )
|
||||||
|| ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) )
|
|| ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) )
|
||||||
) {
|
) {
|
||||||
if ( float32_is_signaling_nan( a ) || float32_is_signaling_nan( b ) ) {
|
/* Do nothing, even if NaN as we're quiet */
|
||||||
float_raise( float_flag_invalid );
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
aSign = extractFloat32Sign( a );
|
aSign = extractFloat32Sign( a );
|
||||||
@ -2493,9 +2489,7 @@ flag float64_le_quiet( float64 a, float64 b )
|
|||||||
if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) )
|
if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) )
|
||||||
|| ( ( extractFloat64Exp( b ) == 0x7FF ) && extractFloat64Frac( b ) )
|
|| ( ( extractFloat64Exp( b ) == 0x7FF ) && extractFloat64Frac( b ) )
|
||||||
) {
|
) {
|
||||||
if ( float64_is_signaling_nan( a ) || float64_is_signaling_nan( b ) ) {
|
/* Do nothing, even if NaN as we're quiet */
|
||||||
float_raise( float_flag_invalid );
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
aSign = extractFloat64Sign( a );
|
aSign = extractFloat64Sign( a );
|
||||||
@ -2520,9 +2514,7 @@ flag float64_lt_quiet( float64 a, float64 b )
|
|||||||
if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) )
|
if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) )
|
||||||
|| ( ( extractFloat64Exp( b ) == 0x7FF ) && extractFloat64Frac( b ) )
|
|| ( ( extractFloat64Exp( b ) == 0x7FF ) && extractFloat64Frac( b ) )
|
||||||
) {
|
) {
|
||||||
if ( float64_is_signaling_nan( a ) || float64_is_signaling_nan( b ) ) {
|
/* Do nothing, even if NaN as we're quiet */
|
||||||
float_raise( float_flag_invalid );
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
aSign = extractFloat64Sign( a );
|
aSign = extractFloat64Sign( a );
|
||||||
@ -3256,7 +3248,7 @@ flag floatx80_eq( floatx80 a, floatx80 b )
|
|||||||
) {
|
) {
|
||||||
if ( floatx80_is_signaling_nan( a )
|
if ( floatx80_is_signaling_nan( a )
|
||||||
|| floatx80_is_signaling_nan( b ) ) {
|
|| floatx80_is_signaling_nan( b ) ) {
|
||||||
roundData->exception |= float_flag_invalid;
|
float_raise( float_flag_invalid );
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -3286,7 +3278,7 @@ flag floatx80_le( floatx80 a, floatx80 b )
|
|||||||
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
||||||
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
||||||
) {
|
) {
|
||||||
roundData->exception |= float_flag_invalid;
|
float_raise( float_flag_invalid );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
aSign = extractFloatx80Sign( a );
|
aSign = extractFloatx80Sign( a );
|
||||||
@ -3320,7 +3312,7 @@ flag floatx80_lt( floatx80 a, floatx80 b )
|
|||||||
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
||||||
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
||||||
) {
|
) {
|
||||||
roundData->exception |= float_flag_invalid;
|
float_raise( float_flag_invalid );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
aSign = extractFloatx80Sign( a );
|
aSign = extractFloatx80Sign( a );
|
||||||
@ -3353,7 +3345,7 @@ flag floatx80_eq_signaling( floatx80 a, floatx80 b )
|
|||||||
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
||||||
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
||||||
) {
|
) {
|
||||||
roundData->exception |= float_flag_invalid;
|
float_raise( float_flag_invalid );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@ -3382,10 +3374,7 @@ flag floatx80_le_quiet( floatx80 a, floatx80 b )
|
|||||||
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
||||||
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
||||||
) {
|
) {
|
||||||
if ( floatx80_is_signaling_nan( a )
|
/* Do nothing, even if NaN as we're quiet */
|
||||||
|| floatx80_is_signaling_nan( b ) ) {
|
|
||||||
roundData->exception |= float_flag_invalid;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
aSign = extractFloatx80Sign( a );
|
aSign = extractFloatx80Sign( a );
|
||||||
@ -3419,10 +3408,7 @@ flag floatx80_lt_quiet( floatx80 a, floatx80 b )
|
|||||||
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
||||||
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
||||||
) {
|
) {
|
||||||
if ( floatx80_is_signaling_nan( a )
|
/* Do nothing, even if NaN as we're quiet */
|
||||||
|| floatx80_is_signaling_nan( b ) ) {
|
|
||||||
roundData->exception |= float_flag_invalid;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
aSign = extractFloatx80Sign( a );
|
aSign = extractFloatx80Sign( a );
|
||||||
|
@ -726,15 +726,11 @@ __setup("apic=", apic_set_verbosity);
|
|||||||
static int __init detect_init_APIC (void)
|
static int __init detect_init_APIC (void)
|
||||||
{
|
{
|
||||||
u32 h, l, features;
|
u32 h, l, features;
|
||||||
extern void get_cpu_vendor(struct cpuinfo_x86*);
|
|
||||||
|
|
||||||
/* Disabled by kernel option? */
|
/* Disabled by kernel option? */
|
||||||
if (enable_local_apic < 0)
|
if (enable_local_apic < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* Workaround for us being called before identify_cpu(). */
|
|
||||||
get_cpu_vendor(&boot_cpu_data);
|
|
||||||
|
|
||||||
switch (boot_cpu_data.x86_vendor) {
|
switch (boot_cpu_data.x86_vendor) {
|
||||||
case X86_VENDOR_AMD:
|
case X86_VENDOR_AMD:
|
||||||
if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) ||
|
if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) ||
|
||||||
|
@ -195,7 +195,7 @@ static void disable_lapic_nmi_watchdog(void)
|
|||||||
wrmsr(MSR_P6_EVNTSEL0, 0, 0);
|
wrmsr(MSR_P6_EVNTSEL0, 0, 0);
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
if (boot_cpu_data.x86_model > 0x3)
|
if (boot_cpu_data.x86_model > 0x4)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
wrmsr(MSR_P4_IQ_CCCR0, 0, 0);
|
wrmsr(MSR_P4_IQ_CCCR0, 0, 0);
|
||||||
@ -432,7 +432,7 @@ void setup_apic_nmi_watchdog (void)
|
|||||||
setup_p6_watchdog();
|
setup_p6_watchdog();
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
if (boot_cpu_data.x86_model > 0x3)
|
if (boot_cpu_data.x86_model > 0x4)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!setup_p4_watchdog())
|
if (!setup_p4_watchdog())
|
||||||
|
@ -392,15 +392,8 @@ menu "Bus options (PCI, PCMCIA)"
|
|||||||
config PCI
|
config PCI
|
||||||
bool "PCI support"
|
bool "PCI support"
|
||||||
help
|
help
|
||||||
Find out whether you have a PCI motherboard. PCI is the name of a
|
Real IA-64 machines all have PCI/PCI-X/PCI Express busses. Say Y
|
||||||
bus system, i.e. the way the CPU talks to the other stuff inside
|
here unless you are using a simulator without PCI support.
|
||||||
your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
|
|
||||||
VESA. If you have PCI, say Y, otherwise N.
|
|
||||||
|
|
||||||
The PCI-HOWTO, available from
|
|
||||||
<http://www.tldp.org/docs.html#howto>, contains valuable
|
|
||||||
information about which PCI hardware does work under Linux and which
|
|
||||||
doesn't.
|
|
||||||
|
|
||||||
config PCI_DOMAINS
|
config PCI_DOMAINS
|
||||||
bool
|
bool
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.10
|
# Linux kernel version: 2.6.13-rc6
|
||||||
# Mon Jan 10 13:57:35 2005
|
# Tue Aug 16 14:40:41 2005
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -10,6 +10,7 @@
|
|||||||
CONFIG_EXPERIMENTAL=y
|
CONFIG_EXPERIMENTAL=y
|
||||||
CONFIG_CLEAN_COMPILE=y
|
CONFIG_CLEAN_COMPILE=y
|
||||||
CONFIG_LOCK_KERNEL=y
|
CONFIG_LOCK_KERNEL=y
|
||||||
|
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
|
|
||||||
#
|
#
|
||||||
# General setup
|
# General setup
|
||||||
@ -21,24 +22,26 @@ CONFIG_POSIX_MQUEUE=y
|
|||||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||||
CONFIG_SYSCTL=y
|
CONFIG_SYSCTL=y
|
||||||
# CONFIG_AUDIT is not set
|
# CONFIG_AUDIT is not set
|
||||||
CONFIG_LOG_BUF_SHIFT=20
|
|
||||||
CONFIG_HOTPLUG=y
|
CONFIG_HOTPLUG=y
|
||||||
CONFIG_KOBJECT_UEVENT=y
|
CONFIG_KOBJECT_UEVENT=y
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
|
CONFIG_CPUSETS=y
|
||||||
# CONFIG_EMBEDDED is not set
|
# CONFIG_EMBEDDED is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
CONFIG_KALLSYMS_ALL=y
|
CONFIG_KALLSYMS_ALL=y
|
||||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||||
|
CONFIG_PRINTK=y
|
||||||
|
CONFIG_BUG=y
|
||||||
|
CONFIG_BASE_FULL=y
|
||||||
CONFIG_FUTEX=y
|
CONFIG_FUTEX=y
|
||||||
CONFIG_EPOLL=y
|
CONFIG_EPOLL=y
|
||||||
CONFIG_CPUSETS=y
|
|
||||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
|
||||||
CONFIG_SHMEM=y
|
CONFIG_SHMEM=y
|
||||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||||
CONFIG_CC_ALIGN_LABELS=0
|
CONFIG_CC_ALIGN_LABELS=0
|
||||||
CONFIG_CC_ALIGN_LOOPS=0
|
CONFIG_CC_ALIGN_LOOPS=0
|
||||||
CONFIG_CC_ALIGN_JUMPS=0
|
CONFIG_CC_ALIGN_JUMPS=0
|
||||||
# CONFIG_TINY_SHMEM is not set
|
# CONFIG_TINY_SHMEM is not set
|
||||||
|
CONFIG_BASE_SMALL=0
|
||||||
|
|
||||||
#
|
#
|
||||||
# Loadable module support
|
# Loadable module support
|
||||||
@ -63,9 +66,12 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
|
|||||||
CONFIG_TIME_INTERPOLATION=y
|
CONFIG_TIME_INTERPOLATION=y
|
||||||
CONFIG_EFI=y
|
CONFIG_EFI=y
|
||||||
CONFIG_GENERIC_IOMAP=y
|
CONFIG_GENERIC_IOMAP=y
|
||||||
|
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||||
|
CONFIG_IA64_UNCACHED_ALLOCATOR=y
|
||||||
# CONFIG_IA64_GENERIC is not set
|
# CONFIG_IA64_GENERIC is not set
|
||||||
# CONFIG_IA64_DIG is not set
|
# CONFIG_IA64_DIG is not set
|
||||||
# CONFIG_IA64_HP_ZX1 is not set
|
# CONFIG_IA64_HP_ZX1 is not set
|
||||||
|
# CONFIG_IA64_HP_ZX1_SWIOTLB is not set
|
||||||
CONFIG_IA64_SGI_SN2=y
|
CONFIG_IA64_SGI_SN2=y
|
||||||
# CONFIG_IA64_HP_SIM is not set
|
# CONFIG_IA64_HP_SIM is not set
|
||||||
# CONFIG_ITANIUM is not set
|
# CONFIG_ITANIUM is not set
|
||||||
@ -74,6 +80,10 @@ CONFIG_MCKINLEY=y
|
|||||||
# CONFIG_IA64_PAGE_SIZE_8KB is not set
|
# CONFIG_IA64_PAGE_SIZE_8KB is not set
|
||||||
CONFIG_IA64_PAGE_SIZE_16KB=y
|
CONFIG_IA64_PAGE_SIZE_16KB=y
|
||||||
# CONFIG_IA64_PAGE_SIZE_64KB is not set
|
# CONFIG_IA64_PAGE_SIZE_64KB is not set
|
||||||
|
# CONFIG_HZ_100 is not set
|
||||||
|
CONFIG_HZ_250=y
|
||||||
|
# CONFIG_HZ_1000 is not set
|
||||||
|
CONFIG_HZ=250
|
||||||
CONFIG_IA64_L1_CACHE_SHIFT=7
|
CONFIG_IA64_L1_CACHE_SHIFT=7
|
||||||
CONFIG_NUMA=y
|
CONFIG_NUMA=y
|
||||||
CONFIG_VIRTUAL_MEM_MAP=y
|
CONFIG_VIRTUAL_MEM_MAP=y
|
||||||
@ -81,11 +91,20 @@ CONFIG_HOLES_IN_ZONE=y
|
|||||||
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
|
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
|
||||||
# CONFIG_IA64_CYCLONE is not set
|
# CONFIG_IA64_CYCLONE is not set
|
||||||
CONFIG_IOSAPIC=y
|
CONFIG_IOSAPIC=y
|
||||||
|
CONFIG_IA64_SGI_SN_XP=m
|
||||||
CONFIG_FORCE_MAX_ZONEORDER=18
|
CONFIG_FORCE_MAX_ZONEORDER=18
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
CONFIG_NR_CPUS=512
|
CONFIG_NR_CPUS=512
|
||||||
# CONFIG_HOTPLUG_CPU is not set
|
# CONFIG_HOTPLUG_CPU is not set
|
||||||
|
CONFIG_SCHED_SMT=y
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
|
CONFIG_SELECT_MEMORY_MODEL=y
|
||||||
|
# CONFIG_FLATMEM_MANUAL is not set
|
||||||
|
CONFIG_DISCONTIGMEM_MANUAL=y
|
||||||
|
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||||
|
CONFIG_DISCONTIGMEM=y
|
||||||
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
|
CONFIG_NEED_MULTIPLE_NODES=y
|
||||||
CONFIG_HAVE_DEC_LOCK=y
|
CONFIG_HAVE_DEC_LOCK=y
|
||||||
CONFIG_IA32_SUPPORT=y
|
CONFIG_IA32_SUPPORT=y
|
||||||
CONFIG_COMPAT=y
|
CONFIG_COMPAT=y
|
||||||
@ -105,6 +124,7 @@ CONFIG_BINFMT_ELF=y
|
|||||||
#
|
#
|
||||||
# Power management and ACPI
|
# Power management and ACPI
|
||||||
#
|
#
|
||||||
|
CONFIG_PM=y
|
||||||
CONFIG_ACPI=y
|
CONFIG_ACPI=y
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -114,6 +134,7 @@ CONFIG_ACPI_BOOT=y
|
|||||||
CONFIG_ACPI_INTERPRETER=y
|
CONFIG_ACPI_INTERPRETER=y
|
||||||
# CONFIG_ACPI_BUTTON is not set
|
# CONFIG_ACPI_BUTTON is not set
|
||||||
CONFIG_ACPI_VIDEO=m
|
CONFIG_ACPI_VIDEO=m
|
||||||
|
CONFIG_ACPI_HOTKEY=m
|
||||||
# CONFIG_ACPI_FAN is not set
|
# CONFIG_ACPI_FAN is not set
|
||||||
# CONFIG_ACPI_PROCESSOR is not set
|
# CONFIG_ACPI_PROCESSOR is not set
|
||||||
CONFIG_ACPI_NUMA=y
|
CONFIG_ACPI_NUMA=y
|
||||||
@ -133,6 +154,7 @@ CONFIG_PCI_DOMAINS=y
|
|||||||
# CONFIG_PCI_MSI is not set
|
# CONFIG_PCI_MSI is not set
|
||||||
CONFIG_PCI_LEGACY_PROC=y
|
CONFIG_PCI_LEGACY_PROC=y
|
||||||
CONFIG_PCI_NAMES=y
|
CONFIG_PCI_NAMES=y
|
||||||
|
# CONFIG_PCI_DEBUG is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# PCI Hotplug Support
|
# PCI Hotplug Support
|
||||||
@ -141,7 +163,6 @@ CONFIG_HOTPLUG_PCI=y
|
|||||||
# CONFIG_HOTPLUG_PCI_FAKE is not set
|
# CONFIG_HOTPLUG_PCI_FAKE is not set
|
||||||
# CONFIG_HOTPLUG_PCI_ACPI is not set
|
# CONFIG_HOTPLUG_PCI_ACPI is not set
|
||||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||||
# CONFIG_HOTPLUG_PCI_PCIE is not set
|
|
||||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||||
CONFIG_HOTPLUG_PCI_SGI=y
|
CONFIG_HOTPLUG_PCI_SGI=y
|
||||||
|
|
||||||
@ -151,8 +172,70 @@ CONFIG_HOTPLUG_PCI_SGI=y
|
|||||||
# CONFIG_PCCARD is not set
|
# CONFIG_PCCARD is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# PC-card bridges
|
# Networking
|
||||||
#
|
#
|
||||||
|
CONFIG_NET=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Networking options
|
||||||
|
#
|
||||||
|
CONFIG_PACKET=y
|
||||||
|
CONFIG_PACKET_MMAP=y
|
||||||
|
CONFIG_UNIX=y
|
||||||
|
# CONFIG_NET_KEY is not set
|
||||||
|
CONFIG_INET=y
|
||||||
|
CONFIG_IP_MULTICAST=y
|
||||||
|
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||||
|
CONFIG_IP_FIB_HASH=y
|
||||||
|
# CONFIG_IP_PNP is not set
|
||||||
|
# CONFIG_NET_IPIP is not set
|
||||||
|
# CONFIG_NET_IPGRE is not set
|
||||||
|
# CONFIG_IP_MROUTE is not set
|
||||||
|
# CONFIG_ARPD is not set
|
||||||
|
CONFIG_SYN_COOKIES=y
|
||||||
|
# CONFIG_INET_AH is not set
|
||||||
|
# CONFIG_INET_ESP is not set
|
||||||
|
# CONFIG_INET_IPCOMP is not set
|
||||||
|
# CONFIG_INET_TUNNEL is not set
|
||||||
|
CONFIG_IP_TCPDIAG=y
|
||||||
|
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||||
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
|
CONFIG_TCP_CONG_BIC=y
|
||||||
|
CONFIG_IPV6=m
|
||||||
|
# CONFIG_IPV6_PRIVACY is not set
|
||||||
|
# CONFIG_INET6_AH is not set
|
||||||
|
# CONFIG_INET6_ESP is not set
|
||||||
|
# CONFIG_INET6_IPCOMP is not set
|
||||||
|
# CONFIG_INET6_TUNNEL is not set
|
||||||
|
# CONFIG_IPV6_TUNNEL is not set
|
||||||
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# SCTP Configuration (EXPERIMENTAL)
|
||||||
|
#
|
||||||
|
# CONFIG_IP_SCTP is not set
|
||||||
|
# CONFIG_ATM is not set
|
||||||
|
# CONFIG_BRIDGE is not set
|
||||||
|
# CONFIG_VLAN_8021Q is not set
|
||||||
|
# CONFIG_DECNET is not set
|
||||||
|
# CONFIG_LLC2 is not set
|
||||||
|
# CONFIG_IPX is not set
|
||||||
|
# CONFIG_ATALK is not set
|
||||||
|
# CONFIG_X25 is not set
|
||||||
|
# CONFIG_LAPB is not set
|
||||||
|
# CONFIG_NET_DIVERT is not set
|
||||||
|
# CONFIG_ECONET is not set
|
||||||
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
# CONFIG_NET_SCHED is not set
|
||||||
|
# CONFIG_NET_CLS_ROUTE is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Network testing
|
||||||
|
#
|
||||||
|
# CONFIG_NET_PKTGEN is not set
|
||||||
|
# CONFIG_HAMRADIO is not set
|
||||||
|
# CONFIG_IRDA is not set
|
||||||
|
# CONFIG_BT is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device Drivers
|
# Device Drivers
|
||||||
@ -163,7 +246,7 @@ CONFIG_HOTPLUG_PCI_SGI=y
|
|||||||
#
|
#
|
||||||
CONFIG_STANDALONE=y
|
CONFIG_STANDALONE=y
|
||||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||||
CONFIG_FW_LOADER=m
|
CONFIG_FW_LOADER=y
|
||||||
# CONFIG_DEBUG_DRIVER is not set
|
# CONFIG_DEBUG_DRIVER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -188,6 +271,7 @@ CONFIG_FW_LOADER=m
|
|||||||
# CONFIG_BLK_CPQ_CISS_DA is not set
|
# CONFIG_BLK_CPQ_CISS_DA is not set
|
||||||
# CONFIG_BLK_DEV_DAC960 is not set
|
# CONFIG_BLK_DEV_DAC960 is not set
|
||||||
# CONFIG_BLK_DEV_UMEM is not set
|
# CONFIG_BLK_DEV_UMEM is not set
|
||||||
|
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||||
CONFIG_BLK_DEV_NBD=m
|
CONFIG_BLK_DEV_NBD=m
|
||||||
@ -252,6 +336,7 @@ CONFIG_IDEDMA_PCI_AUTO=y
|
|||||||
# CONFIG_BLK_DEV_HPT366 is not set
|
# CONFIG_BLK_DEV_HPT366 is not set
|
||||||
# CONFIG_BLK_DEV_SC1200 is not set
|
# CONFIG_BLK_DEV_SC1200 is not set
|
||||||
# CONFIG_BLK_DEV_PIIX is not set
|
# CONFIG_BLK_DEV_PIIX is not set
|
||||||
|
# CONFIG_BLK_DEV_IT821X is not set
|
||||||
# CONFIG_BLK_DEV_NS87415 is not set
|
# CONFIG_BLK_DEV_NS87415 is not set
|
||||||
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
||||||
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
|
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
|
||||||
@ -282,6 +367,7 @@ CONFIG_CHR_DEV_ST=m
|
|||||||
CONFIG_BLK_DEV_SR=m
|
CONFIG_BLK_DEV_SR=m
|
||||||
# CONFIG_BLK_DEV_SR_VENDOR is not set
|
# CONFIG_BLK_DEV_SR_VENDOR is not set
|
||||||
CONFIG_CHR_DEV_SG=m
|
CONFIG_CHR_DEV_SG=m
|
||||||
|
CONFIG_CHR_DEV_SCH=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
||||||
@ -315,24 +401,20 @@ CONFIG_SCSI_SATA=y
|
|||||||
# CONFIG_SCSI_ATA_PIIX is not set
|
# CONFIG_SCSI_ATA_PIIX is not set
|
||||||
# CONFIG_SCSI_SATA_NV is not set
|
# CONFIG_SCSI_SATA_NV is not set
|
||||||
# CONFIG_SCSI_SATA_PROMISE is not set
|
# CONFIG_SCSI_SATA_PROMISE is not set
|
||||||
|
# CONFIG_SCSI_SATA_QSTOR is not set
|
||||||
# CONFIG_SCSI_SATA_SX4 is not set
|
# CONFIG_SCSI_SATA_SX4 is not set
|
||||||
# CONFIG_SCSI_SATA_SIL is not set
|
# CONFIG_SCSI_SATA_SIL is not set
|
||||||
# CONFIG_SCSI_SATA_SIS is not set
|
# CONFIG_SCSI_SATA_SIS is not set
|
||||||
# CONFIG_SCSI_SATA_ULI is not set
|
# CONFIG_SCSI_SATA_ULI is not set
|
||||||
# CONFIG_SCSI_SATA_VIA is not set
|
# CONFIG_SCSI_SATA_VIA is not set
|
||||||
CONFIG_SCSI_SATA_VITESSE=y
|
CONFIG_SCSI_SATA_VITESSE=y
|
||||||
# CONFIG_SCSI_BUSLOGIC is not set
|
|
||||||
# CONFIG_SCSI_DMX3191D is not set
|
# CONFIG_SCSI_DMX3191D is not set
|
||||||
# CONFIG_SCSI_EATA is not set
|
|
||||||
# CONFIG_SCSI_EATA_PIO is not set
|
|
||||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||||
# CONFIG_SCSI_GDTH is not set
|
|
||||||
# CONFIG_SCSI_IPS is not set
|
# CONFIG_SCSI_IPS is not set
|
||||||
# CONFIG_SCSI_INITIO is not set
|
# CONFIG_SCSI_INITIO is not set
|
||||||
# CONFIG_SCSI_INIA100 is not set
|
# CONFIG_SCSI_INIA100 is not set
|
||||||
# CONFIG_SCSI_SYM53C8XX_2 is not set
|
# CONFIG_SCSI_SYM53C8XX_2 is not set
|
||||||
# CONFIG_SCSI_IPR is not set
|
# CONFIG_SCSI_IPR is not set
|
||||||
# CONFIG_SCSI_QLOGIC_ISP is not set
|
|
||||||
# CONFIG_SCSI_QLOGIC_FC is not set
|
# CONFIG_SCSI_QLOGIC_FC is not set
|
||||||
CONFIG_SCSI_QLOGIC_1280=y
|
CONFIG_SCSI_QLOGIC_1280=y
|
||||||
# CONFIG_SCSI_QLOGIC_1280_1040 is not set
|
# CONFIG_SCSI_QLOGIC_1280_1040 is not set
|
||||||
@ -342,6 +424,8 @@ CONFIG_SCSI_QLA22XX=y
|
|||||||
CONFIG_SCSI_QLA2300=y
|
CONFIG_SCSI_QLA2300=y
|
||||||
CONFIG_SCSI_QLA2322=y
|
CONFIG_SCSI_QLA2322=y
|
||||||
# CONFIG_SCSI_QLA6312 is not set
|
# CONFIG_SCSI_QLA6312 is not set
|
||||||
|
# CONFIG_SCSI_QLA24XX is not set
|
||||||
|
# CONFIG_SCSI_LPFC is not set
|
||||||
# CONFIG_SCSI_DC395x is not set
|
# CONFIG_SCSI_DC395x is not set
|
||||||
# CONFIG_SCSI_DC390T is not set
|
# CONFIG_SCSI_DC390T is not set
|
||||||
# CONFIG_SCSI_DEBUG is not set
|
# CONFIG_SCSI_DEBUG is not set
|
||||||
@ -364,11 +448,15 @@ CONFIG_DM_CRYPT=m
|
|||||||
CONFIG_DM_SNAPSHOT=m
|
CONFIG_DM_SNAPSHOT=m
|
||||||
CONFIG_DM_MIRROR=m
|
CONFIG_DM_MIRROR=m
|
||||||
CONFIG_DM_ZERO=m
|
CONFIG_DM_ZERO=m
|
||||||
|
CONFIG_DM_MULTIPATH=m
|
||||||
|
CONFIG_DM_MULTIPATH_EMC=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# Fusion MPT device support
|
# Fusion MPT device support
|
||||||
#
|
#
|
||||||
CONFIG_FUSION=y
|
CONFIG_FUSION=y
|
||||||
|
CONFIG_FUSION_SPI=y
|
||||||
|
CONFIG_FUSION_FC=y
|
||||||
CONFIG_FUSION_MAX_SGE=128
|
CONFIG_FUSION_MAX_SGE=128
|
||||||
CONFIG_FUSION_CTL=m
|
CONFIG_FUSION_CTL=m
|
||||||
|
|
||||||
@ -383,82 +471,13 @@ CONFIG_FUSION_CTL=m
|
|||||||
# CONFIG_I2O is not set
|
# CONFIG_I2O is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Networking support
|
# Network device support
|
||||||
#
|
#
|
||||||
CONFIG_NET=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Networking options
|
|
||||||
#
|
|
||||||
CONFIG_PACKET=y
|
|
||||||
CONFIG_PACKET_MMAP=y
|
|
||||||
CONFIG_NETLINK_DEV=y
|
|
||||||
CONFIG_UNIX=y
|
|
||||||
# CONFIG_NET_KEY is not set
|
|
||||||
CONFIG_INET=y
|
|
||||||
CONFIG_IP_MULTICAST=y
|
|
||||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
|
||||||
# CONFIG_IP_PNP is not set
|
|
||||||
# CONFIG_NET_IPIP is not set
|
|
||||||
# CONFIG_NET_IPGRE is not set
|
|
||||||
# CONFIG_IP_MROUTE is not set
|
|
||||||
# CONFIG_ARPD is not set
|
|
||||||
CONFIG_SYN_COOKIES=y
|
|
||||||
# CONFIG_INET_AH is not set
|
|
||||||
# CONFIG_INET_ESP is not set
|
|
||||||
# CONFIG_INET_IPCOMP is not set
|
|
||||||
# CONFIG_INET_TUNNEL is not set
|
|
||||||
CONFIG_IP_TCPDIAG=y
|
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
|
||||||
CONFIG_IPV6=m
|
|
||||||
# CONFIG_IPV6_PRIVACY is not set
|
|
||||||
# CONFIG_INET6_AH is not set
|
|
||||||
# CONFIG_INET6_ESP is not set
|
|
||||||
# CONFIG_INET6_IPCOMP is not set
|
|
||||||
# CONFIG_INET6_TUNNEL is not set
|
|
||||||
# CONFIG_IPV6_TUNNEL is not set
|
|
||||||
# CONFIG_NETFILTER is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# SCTP Configuration (EXPERIMENTAL)
|
|
||||||
#
|
|
||||||
# CONFIG_IP_SCTP is not set
|
|
||||||
# CONFIG_ATM is not set
|
|
||||||
# CONFIG_BRIDGE is not set
|
|
||||||
# CONFIG_VLAN_8021Q is not set
|
|
||||||
# CONFIG_DECNET is not set
|
|
||||||
# CONFIG_LLC2 is not set
|
|
||||||
# CONFIG_IPX is not set
|
|
||||||
# CONFIG_ATALK is not set
|
|
||||||
# CONFIG_X25 is not set
|
|
||||||
# CONFIG_LAPB is not set
|
|
||||||
# CONFIG_NET_DIVERT is not set
|
|
||||||
# CONFIG_ECONET is not set
|
|
||||||
# CONFIG_WAN_ROUTER is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# QoS and/or fair queueing
|
|
||||||
#
|
|
||||||
# CONFIG_NET_SCHED is not set
|
|
||||||
# CONFIG_NET_CLS_ROUTE is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Network testing
|
|
||||||
#
|
|
||||||
# CONFIG_NET_PKTGEN is not set
|
|
||||||
CONFIG_NETPOLL=y
|
|
||||||
# CONFIG_NETPOLL_RX is not set
|
|
||||||
# CONFIG_NETPOLL_TRAP is not set
|
|
||||||
CONFIG_NET_POLL_CONTROLLER=y
|
|
||||||
# CONFIG_HAMRADIO is not set
|
|
||||||
# CONFIG_IRDA is not set
|
|
||||||
# CONFIG_BT is not set
|
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
# CONFIG_DUMMY is not set
|
# CONFIG_DUMMY is not set
|
||||||
# CONFIG_BONDING is not set
|
# CONFIG_BONDING is not set
|
||||||
# CONFIG_EQUALIZER is not set
|
# CONFIG_EQUALIZER is not set
|
||||||
# CONFIG_TUN is not set
|
# CONFIG_TUN is not set
|
||||||
# CONFIG_ETHERTAP is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# ARCnet devices
|
# ARCnet devices
|
||||||
@ -480,8 +499,10 @@ CONFIG_NETDEVICES=y
|
|||||||
# CONFIG_HAMACHI is not set
|
# CONFIG_HAMACHI is not set
|
||||||
# CONFIG_YELLOWFIN is not set
|
# CONFIG_YELLOWFIN is not set
|
||||||
# CONFIG_R8169 is not set
|
# CONFIG_R8169 is not set
|
||||||
|
# CONFIG_SKGE is not set
|
||||||
# CONFIG_SK98LIN is not set
|
# CONFIG_SK98LIN is not set
|
||||||
CONFIG_TIGON3=y
|
CONFIG_TIGON3=y
|
||||||
|
# CONFIG_BNX2 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet (10000 Mbit)
|
# Ethernet (10000 Mbit)
|
||||||
@ -512,6 +533,10 @@ CONFIG_S2IO=m
|
|||||||
# CONFIG_NET_FC is not set
|
# CONFIG_NET_FC is not set
|
||||||
# CONFIG_SHAPER is not set
|
# CONFIG_SHAPER is not set
|
||||||
CONFIG_NETCONSOLE=y
|
CONFIG_NETCONSOLE=y
|
||||||
|
CONFIG_NETPOLL=y
|
||||||
|
# CONFIG_NETPOLL_RX is not set
|
||||||
|
# CONFIG_NETPOLL_TRAP is not set
|
||||||
|
CONFIG_NET_POLL_CONTROLLER=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# ISDN subsystem
|
# ISDN subsystem
|
||||||
@ -540,14 +565,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|||||||
# CONFIG_INPUT_EVDEV is not set
|
# CONFIG_INPUT_EVDEV is not set
|
||||||
# CONFIG_INPUT_EVBUG is not set
|
# CONFIG_INPUT_EVBUG is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Input I/O drivers
|
|
||||||
#
|
|
||||||
# CONFIG_GAMEPORT is not set
|
|
||||||
CONFIG_SOUND_GAMEPORT=y
|
|
||||||
# CONFIG_SERIO is not set
|
|
||||||
# CONFIG_SERIO_I8042 is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Input Device Drivers
|
# Input Device Drivers
|
||||||
#
|
#
|
||||||
@ -557,6 +574,12 @@ CONFIG_SOUND_GAMEPORT=y
|
|||||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||||
# CONFIG_INPUT_MISC is not set
|
# CONFIG_INPUT_MISC is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Hardware I/O ports
|
||||||
|
#
|
||||||
|
# CONFIG_SERIO is not set
|
||||||
|
# CONFIG_GAMEPORT is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Character devices
|
# Character devices
|
||||||
#
|
#
|
||||||
@ -568,9 +591,10 @@ CONFIG_SERIAL_NONSTANDARD=y
|
|||||||
# CONFIG_CYCLADES is not set
|
# CONFIG_CYCLADES is not set
|
||||||
# CONFIG_MOXA_SMARTIO is not set
|
# CONFIG_MOXA_SMARTIO is not set
|
||||||
# CONFIG_ISI is not set
|
# CONFIG_ISI is not set
|
||||||
# CONFIG_SYNCLINK is not set
|
|
||||||
# CONFIG_SYNCLINKMP is not set
|
# CONFIG_SYNCLINKMP is not set
|
||||||
# CONFIG_N_HDLC is not set
|
# CONFIG_N_HDLC is not set
|
||||||
|
# CONFIG_SPECIALIX is not set
|
||||||
|
# CONFIG_SX is not set
|
||||||
# CONFIG_STALDRV is not set
|
# CONFIG_STALDRV is not set
|
||||||
CONFIG_SGI_SNSC=y
|
CONFIG_SGI_SNSC=y
|
||||||
CONFIG_SGI_TIOCX=y
|
CONFIG_SGI_TIOCX=y
|
||||||
@ -587,6 +611,7 @@ CONFIG_SGI_MBCS=m
|
|||||||
CONFIG_SERIAL_CORE=y
|
CONFIG_SERIAL_CORE=y
|
||||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||||
CONFIG_SERIAL_SGI_L1_CONSOLE=y
|
CONFIG_SERIAL_SGI_L1_CONSOLE=y
|
||||||
|
# CONFIG_SERIAL_JSM is not set
|
||||||
CONFIG_SERIAL_SGI_IOC4=y
|
CONFIG_SERIAL_SGI_IOC4=y
|
||||||
CONFIG_UNIX98_PTYS=y
|
CONFIG_UNIX98_PTYS=y
|
||||||
CONFIG_LEGACY_PTYS=y
|
CONFIG_LEGACY_PTYS=y
|
||||||
@ -615,18 +640,30 @@ CONFIG_EFI_RTC=y
|
|||||||
CONFIG_RAW_DRIVER=m
|
CONFIG_RAW_DRIVER=m
|
||||||
# CONFIG_HPET is not set
|
# CONFIG_HPET is not set
|
||||||
CONFIG_MAX_RAW_DEVS=256
|
CONFIG_MAX_RAW_DEVS=256
|
||||||
|
# CONFIG_HANGCHECK_TIMER is not set
|
||||||
CONFIG_MMTIMER=y
|
CONFIG_MMTIMER=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# TPM devices
|
||||||
|
#
|
||||||
|
# CONFIG_TCG_TPM is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
#
|
#
|
||||||
# CONFIG_I2C is not set
|
# CONFIG_I2C is not set
|
||||||
|
# CONFIG_I2C_SENSOR is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Dallas's 1-wire bus
|
# Dallas's 1-wire bus
|
||||||
#
|
#
|
||||||
# CONFIG_W1 is not set
|
# CONFIG_W1 is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Hardware Monitoring support
|
||||||
|
#
|
||||||
|
# CONFIG_HWMON is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Misc devices
|
# Misc devices
|
||||||
#
|
#
|
||||||
@ -660,6 +697,8 @@ CONFIG_DUMMY_CONSOLE=y
|
|||||||
#
|
#
|
||||||
# USB support
|
# USB support
|
||||||
#
|
#
|
||||||
|
CONFIG_USB_ARCH_HAS_HCD=y
|
||||||
|
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||||
CONFIG_USB=m
|
CONFIG_USB=m
|
||||||
# CONFIG_USB_DEBUG is not set
|
# CONFIG_USB_DEBUG is not set
|
||||||
|
|
||||||
@ -669,9 +708,8 @@ CONFIG_USB=m
|
|||||||
# CONFIG_USB_DEVICEFS is not set
|
# CONFIG_USB_DEVICEFS is not set
|
||||||
# CONFIG_USB_BANDWIDTH is not set
|
# CONFIG_USB_BANDWIDTH is not set
|
||||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||||
|
# CONFIG_USB_SUSPEND is not set
|
||||||
# CONFIG_USB_OTG is not set
|
# CONFIG_USB_OTG is not set
|
||||||
CONFIG_USB_ARCH_HAS_HCD=y
|
|
||||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Host Controller Drivers
|
# USB Host Controller Drivers
|
||||||
@ -679,7 +717,10 @@ CONFIG_USB_ARCH_HAS_OHCI=y
|
|||||||
CONFIG_USB_EHCI_HCD=m
|
CONFIG_USB_EHCI_HCD=m
|
||||||
# CONFIG_USB_EHCI_SPLIT_ISO is not set
|
# CONFIG_USB_EHCI_SPLIT_ISO is not set
|
||||||
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
|
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
|
||||||
|
# CONFIG_USB_ISP116X_HCD is not set
|
||||||
CONFIG_USB_OHCI_HCD=m
|
CONFIG_USB_OHCI_HCD=m
|
||||||
|
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
|
||||||
|
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||||
CONFIG_USB_UHCI_HCD=m
|
CONFIG_USB_UHCI_HCD=m
|
||||||
# CONFIG_USB_SL811_HCD is not set
|
# CONFIG_USB_SL811_HCD is not set
|
||||||
|
|
||||||
@ -710,12 +751,15 @@ CONFIG_USB_HIDINPUT=y
|
|||||||
# CONFIG_USB_MOUSE is not set
|
# CONFIG_USB_MOUSE is not set
|
||||||
# CONFIG_USB_AIPTEK is not set
|
# CONFIG_USB_AIPTEK is not set
|
||||||
# CONFIG_USB_WACOM is not set
|
# CONFIG_USB_WACOM is not set
|
||||||
|
# CONFIG_USB_ACECAD is not set
|
||||||
# CONFIG_USB_KBTAB is not set
|
# CONFIG_USB_KBTAB is not set
|
||||||
# CONFIG_USB_POWERMATE is not set
|
# CONFIG_USB_POWERMATE is not set
|
||||||
# CONFIG_USB_MTOUCH is not set
|
# CONFIG_USB_MTOUCH is not set
|
||||||
|
# CONFIG_USB_ITMTOUCH is not set
|
||||||
# CONFIG_USB_EGALAX is not set
|
# CONFIG_USB_EGALAX is not set
|
||||||
# CONFIG_USB_XPAD is not set
|
# CONFIG_USB_XPAD is not set
|
||||||
# CONFIG_USB_ATI_REMOTE is not set
|
# CONFIG_USB_ATI_REMOTE is not set
|
||||||
|
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Imaging devices
|
# USB Imaging devices
|
||||||
@ -740,6 +784,7 @@ CONFIG_USB_HIDINPUT=y
|
|||||||
# CONFIG_USB_PEGASUS is not set
|
# CONFIG_USB_PEGASUS is not set
|
||||||
# CONFIG_USB_RTL8150 is not set
|
# CONFIG_USB_RTL8150 is not set
|
||||||
# CONFIG_USB_USBNET is not set
|
# CONFIG_USB_USBNET is not set
|
||||||
|
CONFIG_USB_MON=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB port drivers
|
# USB port drivers
|
||||||
@ -763,9 +808,12 @@ CONFIG_USB_HIDINPUT=y
|
|||||||
# CONFIG_USB_CYTHERM is not set
|
# CONFIG_USB_CYTHERM is not set
|
||||||
# CONFIG_USB_PHIDGETKIT is not set
|
# CONFIG_USB_PHIDGETKIT is not set
|
||||||
# CONFIG_USB_PHIDGETSERVO is not set
|
# CONFIG_USB_PHIDGETSERVO is not set
|
||||||
|
# CONFIG_USB_IDMOUSE is not set
|
||||||
|
# CONFIG_USB_SISUSBVGA is not set
|
||||||
|
# CONFIG_USB_LD is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB ATM/DSL drivers
|
# USB DSL modem support
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -782,6 +830,7 @@ CONFIG_USB_HIDINPUT=y
|
|||||||
# InfiniBand support
|
# InfiniBand support
|
||||||
#
|
#
|
||||||
CONFIG_INFINIBAND=m
|
CONFIG_INFINIBAND=m
|
||||||
|
CONFIG_INFINIBAND_USER_VERBS=m
|
||||||
CONFIG_INFINIBAND_MTHCA=m
|
CONFIG_INFINIBAND_MTHCA=m
|
||||||
# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
|
# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
|
||||||
CONFIG_INFINIBAND_IPOIB=m
|
CONFIG_INFINIBAND_IPOIB=m
|
||||||
@ -799,6 +848,7 @@ CONFIG_EXT2_FS=y
|
|||||||
CONFIG_EXT2_FS_XATTR=y
|
CONFIG_EXT2_FS_XATTR=y
|
||||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
CONFIG_EXT2_FS_POSIX_ACL=y
|
||||||
CONFIG_EXT2_FS_SECURITY=y
|
CONFIG_EXT2_FS_SECURITY=y
|
||||||
|
# CONFIG_EXT2_FS_XIP is not set
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
CONFIG_EXT3_FS_XATTR=y
|
CONFIG_EXT3_FS_XATTR=y
|
||||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
CONFIG_EXT3_FS_POSIX_ACL=y
|
||||||
@ -814,13 +864,19 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
|
|||||||
CONFIG_REISERFS_FS_SECURITY=y
|
CONFIG_REISERFS_FS_SECURITY=y
|
||||||
# CONFIG_JFS_FS is not set
|
# CONFIG_JFS_FS is not set
|
||||||
CONFIG_FS_POSIX_ACL=y
|
CONFIG_FS_POSIX_ACL=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# XFS support
|
||||||
|
#
|
||||||
CONFIG_XFS_FS=y
|
CONFIG_XFS_FS=y
|
||||||
|
CONFIG_XFS_EXPORT=y
|
||||||
CONFIG_XFS_RT=y
|
CONFIG_XFS_RT=y
|
||||||
CONFIG_XFS_QUOTA=y
|
CONFIG_XFS_QUOTA=y
|
||||||
# CONFIG_XFS_SECURITY is not set
|
# CONFIG_XFS_SECURITY is not set
|
||||||
CONFIG_XFS_POSIX_ACL=y
|
CONFIG_XFS_POSIX_ACL=y
|
||||||
# CONFIG_MINIX_FS is not set
|
# CONFIG_MINIX_FS is not set
|
||||||
# CONFIG_ROMFS_FS is not set
|
# CONFIG_ROMFS_FS is not set
|
||||||
|
CONFIG_INOTIFY=y
|
||||||
CONFIG_QUOTA=y
|
CONFIG_QUOTA=y
|
||||||
# CONFIG_QFMT_V1 is not set
|
# CONFIG_QFMT_V1 is not set
|
||||||
# CONFIG_QFMT_V2 is not set
|
# CONFIG_QFMT_V2 is not set
|
||||||
@ -854,7 +910,6 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
|||||||
CONFIG_PROC_FS=y
|
CONFIG_PROC_FS=y
|
||||||
CONFIG_PROC_KCORE=y
|
CONFIG_PROC_KCORE=y
|
||||||
CONFIG_SYSFS=y
|
CONFIG_SYSFS=y
|
||||||
# CONFIG_DEVFS_FS is not set
|
|
||||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
# CONFIG_DEVPTS_FS_XATTR is not set
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_TMPFS_XATTR=y
|
CONFIG_TMPFS_XATTR=y
|
||||||
@ -885,15 +940,18 @@ CONFIG_RAMFS=y
|
|||||||
#
|
#
|
||||||
CONFIG_NFS_FS=m
|
CONFIG_NFS_FS=m
|
||||||
CONFIG_NFS_V3=y
|
CONFIG_NFS_V3=y
|
||||||
|
# CONFIG_NFS_V3_ACL is not set
|
||||||
CONFIG_NFS_V4=y
|
CONFIG_NFS_V4=y
|
||||||
CONFIG_NFS_DIRECTIO=y
|
CONFIG_NFS_DIRECTIO=y
|
||||||
CONFIG_NFSD=m
|
CONFIG_NFSD=m
|
||||||
CONFIG_NFSD_V3=y
|
CONFIG_NFSD_V3=y
|
||||||
|
# CONFIG_NFSD_V3_ACL is not set
|
||||||
CONFIG_NFSD_V4=y
|
CONFIG_NFSD_V4=y
|
||||||
CONFIG_NFSD_TCP=y
|
CONFIG_NFSD_TCP=y
|
||||||
CONFIG_LOCKD=m
|
CONFIG_LOCKD=m
|
||||||
CONFIG_LOCKD_V4=y
|
CONFIG_LOCKD_V4=y
|
||||||
CONFIG_EXPORTFS=m
|
CONFIG_EXPORTFS=y
|
||||||
|
CONFIG_NFS_COMMON=y
|
||||||
CONFIG_SUNRPC=m
|
CONFIG_SUNRPC=m
|
||||||
CONFIG_SUNRPC_GSS=m
|
CONFIG_SUNRPC_GSS=m
|
||||||
CONFIG_RPCSEC_GSS_KRB5=m
|
CONFIG_RPCSEC_GSS_KRB5=m
|
||||||
@ -980,6 +1038,9 @@ CONFIG_CRC32=y
|
|||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=m
|
CONFIG_ZLIB_INFLATE=m
|
||||||
CONFIG_ZLIB_DEFLATE=m
|
CONFIG_ZLIB_DEFLATE=m
|
||||||
|
CONFIG_GENERIC_ALLOCATOR=y
|
||||||
|
CONFIG_GENERIC_HARDIRQS=y
|
||||||
|
CONFIG_GENERIC_IRQ_PROBE=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Profiling support
|
# Profiling support
|
||||||
@ -989,15 +1050,19 @@ CONFIG_ZLIB_DEFLATE=m
|
|||||||
#
|
#
|
||||||
# Kernel hacking
|
# Kernel hacking
|
||||||
#
|
#
|
||||||
|
# CONFIG_PRINTK_TIME is not set
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_LOG_BUF_SHIFT=20
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
|
CONFIG_DEBUG_PREEMPT=y
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||||
# CONFIG_DEBUG_KOBJECT is not set
|
# CONFIG_DEBUG_KOBJECT is not set
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
# CONFIG_DEBUG_FS is not set
|
# CONFIG_DEBUG_FS is not set
|
||||||
|
# CONFIG_KPROBES is not set
|
||||||
CONFIG_IA64_GRANULE_16MB=y
|
CONFIG_IA64_GRANULE_16MB=y
|
||||||
# CONFIG_IA64_GRANULE_64MB is not set
|
# CONFIG_IA64_GRANULE_64MB is not set
|
||||||
# CONFIG_IA64_PRINT_HAZARDS is not set
|
# CONFIG_IA64_PRINT_HAZARDS is not set
|
||||||
@ -1019,11 +1084,12 @@ CONFIG_CRYPTO=y
|
|||||||
CONFIG_CRYPTO_HMAC=y
|
CONFIG_CRYPTO_HMAC=y
|
||||||
# CONFIG_CRYPTO_NULL is not set
|
# CONFIG_CRYPTO_NULL is not set
|
||||||
# CONFIG_CRYPTO_MD4 is not set
|
# CONFIG_CRYPTO_MD4 is not set
|
||||||
CONFIG_CRYPTO_MD5=m
|
CONFIG_CRYPTO_MD5=y
|
||||||
CONFIG_CRYPTO_SHA1=m
|
CONFIG_CRYPTO_SHA1=m
|
||||||
# CONFIG_CRYPTO_SHA256 is not set
|
# CONFIG_CRYPTO_SHA256 is not set
|
||||||
# CONFIG_CRYPTO_SHA512 is not set
|
# CONFIG_CRYPTO_SHA512 is not set
|
||||||
# CONFIG_CRYPTO_WP512 is not set
|
# CONFIG_CRYPTO_WP512 is not set
|
||||||
|
# CONFIG_CRYPTO_TGR192 is not set
|
||||||
CONFIG_CRYPTO_DES=m
|
CONFIG_CRYPTO_DES=m
|
||||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||||
# CONFIG_CRYPTO_TWOFISH is not set
|
# CONFIG_CRYPTO_TWOFISH is not set
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.13-rc1-20050629
|
# Linux kernel version: 2.6.13-rc6-tiger-smp
|
||||||
# Wed Jun 29 15:28:12 2005
|
# Wed Aug 17 10:19:51 2005
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -132,6 +132,7 @@ CONFIG_ACPI_BOOT=y
|
|||||||
CONFIG_ACPI_INTERPRETER=y
|
CONFIG_ACPI_INTERPRETER=y
|
||||||
CONFIG_ACPI_BUTTON=m
|
CONFIG_ACPI_BUTTON=m
|
||||||
# CONFIG_ACPI_VIDEO is not set
|
# CONFIG_ACPI_VIDEO is not set
|
||||||
|
# CONFIG_ACPI_HOTKEY is not set
|
||||||
CONFIG_ACPI_FAN=m
|
CONFIG_ACPI_FAN=m
|
||||||
CONFIG_ACPI_PROCESSOR=m
|
CONFIG_ACPI_PROCESSOR=m
|
||||||
# CONFIG_ACPI_HOTPLUG_CPU is not set
|
# CONFIG_ACPI_HOTPLUG_CPU is not set
|
||||||
@ -169,6 +170,66 @@ CONFIG_HOTPLUG_PCI_ACPI=m
|
|||||||
#
|
#
|
||||||
# CONFIG_PCCARD is not set
|
# CONFIG_PCCARD is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Networking
|
||||||
|
#
|
||||||
|
CONFIG_NET=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Networking options
|
||||||
|
#
|
||||||
|
CONFIG_PACKET=y
|
||||||
|
# CONFIG_PACKET_MMAP is not set
|
||||||
|
CONFIG_UNIX=y
|
||||||
|
# CONFIG_NET_KEY is not set
|
||||||
|
CONFIG_INET=y
|
||||||
|
CONFIG_IP_MULTICAST=y
|
||||||
|
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||||
|
CONFIG_IP_FIB_HASH=y
|
||||||
|
# CONFIG_IP_PNP is not set
|
||||||
|
# CONFIG_NET_IPIP is not set
|
||||||
|
# CONFIG_NET_IPGRE is not set
|
||||||
|
# CONFIG_IP_MROUTE is not set
|
||||||
|
CONFIG_ARPD=y
|
||||||
|
CONFIG_SYN_COOKIES=y
|
||||||
|
# CONFIG_INET_AH is not set
|
||||||
|
# CONFIG_INET_ESP is not set
|
||||||
|
# CONFIG_INET_IPCOMP is not set
|
||||||
|
# CONFIG_INET_TUNNEL is not set
|
||||||
|
CONFIG_IP_TCPDIAG=y
|
||||||
|
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||||
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
|
CONFIG_TCP_CONG_BIC=y
|
||||||
|
# CONFIG_IPV6 is not set
|
||||||
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# SCTP Configuration (EXPERIMENTAL)
|
||||||
|
#
|
||||||
|
# CONFIG_IP_SCTP is not set
|
||||||
|
# CONFIG_ATM is not set
|
||||||
|
# CONFIG_BRIDGE is not set
|
||||||
|
# CONFIG_VLAN_8021Q is not set
|
||||||
|
# CONFIG_DECNET is not set
|
||||||
|
# CONFIG_LLC2 is not set
|
||||||
|
# CONFIG_IPX is not set
|
||||||
|
# CONFIG_ATALK is not set
|
||||||
|
# CONFIG_X25 is not set
|
||||||
|
# CONFIG_LAPB is not set
|
||||||
|
# CONFIG_NET_DIVERT is not set
|
||||||
|
# CONFIG_ECONET is not set
|
||||||
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
# CONFIG_NET_SCHED is not set
|
||||||
|
# CONFIG_NET_CLS_ROUTE is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Network testing
|
||||||
|
#
|
||||||
|
# CONFIG_NET_PKTGEN is not set
|
||||||
|
# CONFIG_HAMRADIO is not set
|
||||||
|
# CONFIG_IRDA is not set
|
||||||
|
# CONFIG_BT is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device Drivers
|
# Device Drivers
|
||||||
#
|
#
|
||||||
@ -178,7 +239,7 @@ CONFIG_HOTPLUG_PCI_ACPI=m
|
|||||||
#
|
#
|
||||||
CONFIG_STANDALONE=y
|
CONFIG_STANDALONE=y
|
||||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||||
# CONFIG_FW_LOADER is not set
|
CONFIG_FW_LOADER=m
|
||||||
# CONFIG_DEBUG_DRIVER is not set
|
# CONFIG_DEBUG_DRIVER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -348,6 +409,7 @@ CONFIG_SCSI_QLA22XX=m
|
|||||||
CONFIG_SCSI_QLA2300=m
|
CONFIG_SCSI_QLA2300=m
|
||||||
CONFIG_SCSI_QLA2322=m
|
CONFIG_SCSI_QLA2322=m
|
||||||
# CONFIG_SCSI_QLA6312 is not set
|
# CONFIG_SCSI_QLA6312 is not set
|
||||||
|
# CONFIG_SCSI_QLA24XX is not set
|
||||||
# CONFIG_SCSI_LPFC is not set
|
# CONFIG_SCSI_LPFC is not set
|
||||||
# CONFIG_SCSI_DC395x is not set
|
# CONFIG_SCSI_DC395x is not set
|
||||||
# CONFIG_SCSI_DC390T is not set
|
# CONFIG_SCSI_DC390T is not set
|
||||||
@ -393,72 +455,8 @@ CONFIG_FUSION_CTL=y
|
|||||||
# CONFIG_I2O is not set
|
# CONFIG_I2O is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Networking support
|
# Network device support
|
||||||
#
|
#
|
||||||
CONFIG_NET=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Networking options
|
|
||||||
#
|
|
||||||
CONFIG_PACKET=y
|
|
||||||
# CONFIG_PACKET_MMAP is not set
|
|
||||||
CONFIG_UNIX=y
|
|
||||||
# CONFIG_NET_KEY is not set
|
|
||||||
CONFIG_INET=y
|
|
||||||
CONFIG_IP_MULTICAST=y
|
|
||||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
|
||||||
CONFIG_IP_FIB_HASH=y
|
|
||||||
# CONFIG_IP_PNP is not set
|
|
||||||
# CONFIG_NET_IPIP is not set
|
|
||||||
# CONFIG_NET_IPGRE is not set
|
|
||||||
# CONFIG_IP_MROUTE is not set
|
|
||||||
CONFIG_ARPD=y
|
|
||||||
CONFIG_SYN_COOKIES=y
|
|
||||||
# CONFIG_INET_AH is not set
|
|
||||||
# CONFIG_INET_ESP is not set
|
|
||||||
# CONFIG_INET_IPCOMP is not set
|
|
||||||
# CONFIG_INET_TUNNEL is not set
|
|
||||||
CONFIG_IP_TCPDIAG=y
|
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
|
||||||
CONFIG_TCP_CONG_BIC=y
|
|
||||||
# CONFIG_IPV6 is not set
|
|
||||||
# CONFIG_NETFILTER is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# SCTP Configuration (EXPERIMENTAL)
|
|
||||||
#
|
|
||||||
# CONFIG_IP_SCTP is not set
|
|
||||||
# CONFIG_ATM is not set
|
|
||||||
# CONFIG_BRIDGE is not set
|
|
||||||
# CONFIG_VLAN_8021Q is not set
|
|
||||||
# CONFIG_DECNET is not set
|
|
||||||
# CONFIG_LLC2 is not set
|
|
||||||
# CONFIG_IPX is not set
|
|
||||||
# CONFIG_ATALK is not set
|
|
||||||
# CONFIG_X25 is not set
|
|
||||||
# CONFIG_LAPB is not set
|
|
||||||
# CONFIG_NET_DIVERT is not set
|
|
||||||
# CONFIG_ECONET is not set
|
|
||||||
# CONFIG_WAN_ROUTER is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# QoS and/or fair queueing
|
|
||||||
#
|
|
||||||
# CONFIG_NET_SCHED is not set
|
|
||||||
# CONFIG_NET_CLS_ROUTE is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Network testing
|
|
||||||
#
|
|
||||||
# CONFIG_NET_PKTGEN is not set
|
|
||||||
CONFIG_NETPOLL=y
|
|
||||||
# CONFIG_NETPOLL_RX is not set
|
|
||||||
# CONFIG_NETPOLL_TRAP is not set
|
|
||||||
CONFIG_NET_POLL_CONTROLLER=y
|
|
||||||
# CONFIG_HAMRADIO is not set
|
|
||||||
# CONFIG_IRDA is not set
|
|
||||||
# CONFIG_BT is not set
|
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
CONFIG_DUMMY=m
|
CONFIG_DUMMY=m
|
||||||
# CONFIG_BONDING is not set
|
# CONFIG_BONDING is not set
|
||||||
@ -555,6 +553,10 @@ CONFIG_TIGON3=y
|
|||||||
# CONFIG_NET_FC is not set
|
# CONFIG_NET_FC is not set
|
||||||
# CONFIG_SHAPER is not set
|
# CONFIG_SHAPER is not set
|
||||||
CONFIG_NETCONSOLE=y
|
CONFIG_NETCONSOLE=y
|
||||||
|
CONFIG_NETPOLL=y
|
||||||
|
# CONFIG_NETPOLL_RX is not set
|
||||||
|
# CONFIG_NETPOLL_TRAP is not set
|
||||||
|
CONFIG_NET_POLL_CONTROLLER=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# ISDN subsystem
|
# ISDN subsystem
|
||||||
@ -680,6 +682,7 @@ CONFIG_DRM_R128=m
|
|||||||
CONFIG_DRM_RADEON=m
|
CONFIG_DRM_RADEON=m
|
||||||
CONFIG_DRM_MGA=m
|
CONFIG_DRM_MGA=m
|
||||||
CONFIG_DRM_SIS=m
|
CONFIG_DRM_SIS=m
|
||||||
|
# CONFIG_DRM_VIA is not set
|
||||||
CONFIG_RAW_DRIVER=m
|
CONFIG_RAW_DRIVER=m
|
||||||
CONFIG_HPET=y
|
CONFIG_HPET=y
|
||||||
# CONFIG_HPET_RTC_IRQ is not set
|
# CONFIG_HPET_RTC_IRQ is not set
|
||||||
@ -696,12 +699,19 @@ CONFIG_MAX_RAW_DEVS=256
|
|||||||
# I2C support
|
# I2C support
|
||||||
#
|
#
|
||||||
# CONFIG_I2C is not set
|
# CONFIG_I2C is not set
|
||||||
|
# CONFIG_I2C_SENSOR is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Dallas's 1-wire bus
|
# Dallas's 1-wire bus
|
||||||
#
|
#
|
||||||
# CONFIG_W1 is not set
|
# CONFIG_W1 is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Hardware Monitoring support
|
||||||
|
#
|
||||||
|
CONFIG_HWMON=y
|
||||||
|
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Misc devices
|
# Misc devices
|
||||||
#
|
#
|
||||||
@ -800,6 +810,7 @@ CONFIG_USB_HIDINPUT=y
|
|||||||
# CONFIG_USB_EGALAX is not set
|
# CONFIG_USB_EGALAX is not set
|
||||||
# CONFIG_USB_XPAD is not set
|
# CONFIG_USB_XPAD is not set
|
||||||
# CONFIG_USB_ATI_REMOTE is not set
|
# CONFIG_USB_ATI_REMOTE is not set
|
||||||
|
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Imaging devices
|
# USB Imaging devices
|
||||||
@ -850,6 +861,7 @@ CONFIG_USB_HIDINPUT=y
|
|||||||
# CONFIG_USB_PHIDGETSERVO is not set
|
# CONFIG_USB_PHIDGETSERVO is not set
|
||||||
# CONFIG_USB_IDMOUSE is not set
|
# CONFIG_USB_IDMOUSE is not set
|
||||||
# CONFIG_USB_SISUSBVGA is not set
|
# CONFIG_USB_SISUSBVGA is not set
|
||||||
|
# CONFIG_USB_LD is not set
|
||||||
# CONFIG_USB_TEST is not set
|
# CONFIG_USB_TEST is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -910,6 +922,7 @@ CONFIG_XFS_EXPORT=y
|
|||||||
# CONFIG_XFS_POSIX_ACL is not set
|
# CONFIG_XFS_POSIX_ACL is not set
|
||||||
# CONFIG_MINIX_FS is not set
|
# CONFIG_MINIX_FS is not set
|
||||||
# CONFIG_ROMFS_FS is not set
|
# CONFIG_ROMFS_FS is not set
|
||||||
|
CONFIG_INOTIFY=y
|
||||||
# CONFIG_QUOTA is not set
|
# CONFIG_QUOTA is not set
|
||||||
CONFIG_DNOTIFY=y
|
CONFIG_DNOTIFY=y
|
||||||
CONFIG_AUTOFS_FS=y
|
CONFIG_AUTOFS_FS=y
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.13-rc1-20050629
|
# Linux kernel version: 2.6.13-rc6
|
||||||
# Wed Jun 29 15:31:11 2005
|
# Wed Aug 17 10:02:43 2005
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -132,6 +132,7 @@ CONFIG_ACPI_BOOT=y
|
|||||||
CONFIG_ACPI_INTERPRETER=y
|
CONFIG_ACPI_INTERPRETER=y
|
||||||
CONFIG_ACPI_BUTTON=y
|
CONFIG_ACPI_BUTTON=y
|
||||||
CONFIG_ACPI_VIDEO=m
|
CONFIG_ACPI_VIDEO=m
|
||||||
|
CONFIG_ACPI_HOTKEY=m
|
||||||
CONFIG_ACPI_FAN=y
|
CONFIG_ACPI_FAN=y
|
||||||
CONFIG_ACPI_PROCESSOR=y
|
CONFIG_ACPI_PROCESSOR=y
|
||||||
CONFIG_ACPI_THERMAL=y
|
CONFIG_ACPI_THERMAL=y
|
||||||
@ -168,6 +169,83 @@ CONFIG_HOTPLUG_PCI_ACPI=y
|
|||||||
#
|
#
|
||||||
# CONFIG_PCCARD is not set
|
# CONFIG_PCCARD is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Networking
|
||||||
|
#
|
||||||
|
CONFIG_NET=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Networking options
|
||||||
|
#
|
||||||
|
CONFIG_PACKET=y
|
||||||
|
# CONFIG_PACKET_MMAP is not set
|
||||||
|
CONFIG_UNIX=y
|
||||||
|
# CONFIG_NET_KEY is not set
|
||||||
|
CONFIG_INET=y
|
||||||
|
CONFIG_IP_MULTICAST=y
|
||||||
|
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||||
|
CONFIG_IP_FIB_HASH=y
|
||||||
|
# CONFIG_IP_PNP is not set
|
||||||
|
# CONFIG_NET_IPIP is not set
|
||||||
|
# CONFIG_NET_IPGRE is not set
|
||||||
|
# CONFIG_IP_MROUTE is not set
|
||||||
|
# CONFIG_ARPD is not set
|
||||||
|
# CONFIG_SYN_COOKIES is not set
|
||||||
|
# CONFIG_INET_AH is not set
|
||||||
|
# CONFIG_INET_ESP is not set
|
||||||
|
# CONFIG_INET_IPCOMP is not set
|
||||||
|
# CONFIG_INET_TUNNEL is not set
|
||||||
|
# CONFIG_IP_TCPDIAG is not set
|
||||||
|
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||||
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
|
CONFIG_TCP_CONG_BIC=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# IP: Virtual Server Configuration
|
||||||
|
#
|
||||||
|
# CONFIG_IP_VS is not set
|
||||||
|
# CONFIG_IPV6 is not set
|
||||||
|
CONFIG_NETFILTER=y
|
||||||
|
# CONFIG_NETFILTER_DEBUG is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# IP: Netfilter Configuration
|
||||||
|
#
|
||||||
|
# CONFIG_IP_NF_CONNTRACK is not set
|
||||||
|
# CONFIG_IP_NF_CONNTRACK_MARK is not set
|
||||||
|
# CONFIG_IP_NF_QUEUE is not set
|
||||||
|
# CONFIG_IP_NF_IPTABLES is not set
|
||||||
|
CONFIG_IP_NF_ARPTABLES=y
|
||||||
|
# CONFIG_IP_NF_ARPFILTER is not set
|
||||||
|
# CONFIG_IP_NF_ARP_MANGLE is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# SCTP Configuration (EXPERIMENTAL)
|
||||||
|
#
|
||||||
|
# CONFIG_IP_SCTP is not set
|
||||||
|
# CONFIG_ATM is not set
|
||||||
|
# CONFIG_BRIDGE is not set
|
||||||
|
# CONFIG_VLAN_8021Q is not set
|
||||||
|
# CONFIG_DECNET is not set
|
||||||
|
# CONFIG_LLC2 is not set
|
||||||
|
# CONFIG_IPX is not set
|
||||||
|
# CONFIG_ATALK is not set
|
||||||
|
# CONFIG_X25 is not set
|
||||||
|
# CONFIG_LAPB is not set
|
||||||
|
# CONFIG_NET_DIVERT is not set
|
||||||
|
# CONFIG_ECONET is not set
|
||||||
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
# CONFIG_NET_SCHED is not set
|
||||||
|
# CONFIG_NET_CLS_ROUTE is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Network testing
|
||||||
|
#
|
||||||
|
# CONFIG_NET_PKTGEN is not set
|
||||||
|
# CONFIG_HAMRADIO is not set
|
||||||
|
# CONFIG_IRDA is not set
|
||||||
|
# CONFIG_BT is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device Drivers
|
# Device Drivers
|
||||||
#
|
#
|
||||||
@ -349,6 +427,7 @@ CONFIG_SCSI_QLA2XXX=y
|
|||||||
# CONFIG_SCSI_QLA2300 is not set
|
# CONFIG_SCSI_QLA2300 is not set
|
||||||
# CONFIG_SCSI_QLA2322 is not set
|
# CONFIG_SCSI_QLA2322 is not set
|
||||||
# CONFIG_SCSI_QLA6312 is not set
|
# CONFIG_SCSI_QLA6312 is not set
|
||||||
|
# CONFIG_SCSI_QLA24XX is not set
|
||||||
# CONFIG_SCSI_LPFC is not set
|
# CONFIG_SCSI_LPFC is not set
|
||||||
# CONFIG_SCSI_DC395x is not set
|
# CONFIG_SCSI_DC395x is not set
|
||||||
# CONFIG_SCSI_DC390T is not set
|
# CONFIG_SCSI_DC390T is not set
|
||||||
@ -362,9 +441,11 @@ CONFIG_SCSI_QLA2XXX=y
|
|||||||
#
|
#
|
||||||
# Fusion MPT device support
|
# Fusion MPT device support
|
||||||
#
|
#
|
||||||
# CONFIG_FUSION is not set
|
CONFIG_FUSION=y
|
||||||
# CONFIG_FUSION_SPI is not set
|
CONFIG_FUSION_SPI=y
|
||||||
# CONFIG_FUSION_FC is not set
|
CONFIG_FUSION_FC=y
|
||||||
|
CONFIG_FUSION_MAX_SGE=128
|
||||||
|
CONFIG_FUSION_CTL=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# IEEE 1394 (FireWire) support
|
# IEEE 1394 (FireWire) support
|
||||||
@ -377,87 +458,8 @@ CONFIG_SCSI_QLA2XXX=y
|
|||||||
# CONFIG_I2O is not set
|
# CONFIG_I2O is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Networking support
|
# Network device support
|
||||||
#
|
#
|
||||||
CONFIG_NET=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Networking options
|
|
||||||
#
|
|
||||||
CONFIG_PACKET=y
|
|
||||||
# CONFIG_PACKET_MMAP is not set
|
|
||||||
CONFIG_UNIX=y
|
|
||||||
# CONFIG_NET_KEY is not set
|
|
||||||
CONFIG_INET=y
|
|
||||||
CONFIG_IP_MULTICAST=y
|
|
||||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
|
||||||
CONFIG_IP_FIB_HASH=y
|
|
||||||
# CONFIG_IP_PNP is not set
|
|
||||||
# CONFIG_NET_IPIP is not set
|
|
||||||
# CONFIG_NET_IPGRE is not set
|
|
||||||
# CONFIG_IP_MROUTE is not set
|
|
||||||
# CONFIG_ARPD is not set
|
|
||||||
# CONFIG_SYN_COOKIES is not set
|
|
||||||
# CONFIG_INET_AH is not set
|
|
||||||
# CONFIG_INET_ESP is not set
|
|
||||||
# CONFIG_INET_IPCOMP is not set
|
|
||||||
# CONFIG_INET_TUNNEL is not set
|
|
||||||
# CONFIG_IP_TCPDIAG is not set
|
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
|
||||||
CONFIG_TCP_CONG_BIC=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# IP: Virtual Server Configuration
|
|
||||||
#
|
|
||||||
# CONFIG_IP_VS is not set
|
|
||||||
# CONFIG_IPV6 is not set
|
|
||||||
CONFIG_NETFILTER=y
|
|
||||||
# CONFIG_NETFILTER_DEBUG is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# IP: Netfilter Configuration
|
|
||||||
#
|
|
||||||
# CONFIG_IP_NF_CONNTRACK is not set
|
|
||||||
# CONFIG_IP_NF_CONNTRACK_MARK is not set
|
|
||||||
# CONFIG_IP_NF_QUEUE is not set
|
|
||||||
# CONFIG_IP_NF_IPTABLES is not set
|
|
||||||
CONFIG_IP_NF_ARPTABLES=y
|
|
||||||
# CONFIG_IP_NF_ARPFILTER is not set
|
|
||||||
# CONFIG_IP_NF_ARP_MANGLE is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# SCTP Configuration (EXPERIMENTAL)
|
|
||||||
#
|
|
||||||
# CONFIG_IP_SCTP is not set
|
|
||||||
# CONFIG_ATM is not set
|
|
||||||
# CONFIG_BRIDGE is not set
|
|
||||||
# CONFIG_VLAN_8021Q is not set
|
|
||||||
# CONFIG_DECNET is not set
|
|
||||||
# CONFIG_LLC2 is not set
|
|
||||||
# CONFIG_IPX is not set
|
|
||||||
# CONFIG_ATALK is not set
|
|
||||||
# CONFIG_X25 is not set
|
|
||||||
# CONFIG_LAPB is not set
|
|
||||||
# CONFIG_NET_DIVERT is not set
|
|
||||||
# CONFIG_ECONET is not set
|
|
||||||
# CONFIG_WAN_ROUTER is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# QoS and/or fair queueing
|
|
||||||
#
|
|
||||||
# CONFIG_NET_SCHED is not set
|
|
||||||
# CONFIG_NET_CLS_ROUTE is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Network testing
|
|
||||||
#
|
|
||||||
# CONFIG_NET_PKTGEN is not set
|
|
||||||
# CONFIG_NETPOLL is not set
|
|
||||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
|
||||||
# CONFIG_HAMRADIO is not set
|
|
||||||
# CONFIG_IRDA is not set
|
|
||||||
# CONFIG_BT is not set
|
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
CONFIG_DUMMY=y
|
CONFIG_DUMMY=y
|
||||||
# CONFIG_BONDING is not set
|
# CONFIG_BONDING is not set
|
||||||
@ -555,6 +557,8 @@ CONFIG_TIGON3=y
|
|||||||
# CONFIG_NET_FC is not set
|
# CONFIG_NET_FC is not set
|
||||||
# CONFIG_SHAPER is not set
|
# CONFIG_SHAPER is not set
|
||||||
# CONFIG_NETCONSOLE is not set
|
# CONFIG_NETCONSOLE is not set
|
||||||
|
# CONFIG_NETPOLL is not set
|
||||||
|
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# ISDN subsystem
|
# ISDN subsystem
|
||||||
@ -659,6 +663,7 @@ CONFIG_DRM=y
|
|||||||
CONFIG_DRM_RADEON=y
|
CONFIG_DRM_RADEON=y
|
||||||
# CONFIG_DRM_MGA is not set
|
# CONFIG_DRM_MGA is not set
|
||||||
# CONFIG_DRM_SIS is not set
|
# CONFIG_DRM_SIS is not set
|
||||||
|
# CONFIG_DRM_VIA is not set
|
||||||
# CONFIG_RAW_DRIVER is not set
|
# CONFIG_RAW_DRIVER is not set
|
||||||
# CONFIG_HPET is not set
|
# CONFIG_HPET is not set
|
||||||
# CONFIG_HANGCHECK_TIMER is not set
|
# CONFIG_HANGCHECK_TIMER is not set
|
||||||
@ -706,47 +711,10 @@ CONFIG_I2C_ALGOPCF=y
|
|||||||
# CONFIG_I2C_VIAPRO is not set
|
# CONFIG_I2C_VIAPRO is not set
|
||||||
# CONFIG_I2C_VOODOO3 is not set
|
# CONFIG_I2C_VOODOO3 is not set
|
||||||
# CONFIG_I2C_PCA_ISA is not set
|
# CONFIG_I2C_PCA_ISA is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Hardware Sensors Chip support
|
|
||||||
#
|
|
||||||
# CONFIG_I2C_SENSOR is not set
|
# CONFIG_I2C_SENSOR is not set
|
||||||
# CONFIG_SENSORS_ADM1021 is not set
|
|
||||||
# CONFIG_SENSORS_ADM1025 is not set
|
|
||||||
# CONFIG_SENSORS_ADM1026 is not set
|
|
||||||
# CONFIG_SENSORS_ADM1031 is not set
|
|
||||||
# CONFIG_SENSORS_ADM9240 is not set
|
|
||||||
# CONFIG_SENSORS_ASB100 is not set
|
|
||||||
# CONFIG_SENSORS_ATXP1 is not set
|
|
||||||
# CONFIG_SENSORS_DS1621 is not set
|
|
||||||
# CONFIG_SENSORS_FSCHER is not set
|
|
||||||
# CONFIG_SENSORS_FSCPOS is not set
|
|
||||||
# CONFIG_SENSORS_GL518SM is not set
|
|
||||||
# CONFIG_SENSORS_GL520SM is not set
|
|
||||||
# CONFIG_SENSORS_IT87 is not set
|
|
||||||
# CONFIG_SENSORS_LM63 is not set
|
|
||||||
# CONFIG_SENSORS_LM75 is not set
|
|
||||||
# CONFIG_SENSORS_LM77 is not set
|
|
||||||
# CONFIG_SENSORS_LM78 is not set
|
|
||||||
# CONFIG_SENSORS_LM80 is not set
|
|
||||||
# CONFIG_SENSORS_LM83 is not set
|
|
||||||
# CONFIG_SENSORS_LM85 is not set
|
|
||||||
# CONFIG_SENSORS_LM87 is not set
|
|
||||||
# CONFIG_SENSORS_LM90 is not set
|
|
||||||
# CONFIG_SENSORS_LM92 is not set
|
|
||||||
# CONFIG_SENSORS_MAX1619 is not set
|
|
||||||
# CONFIG_SENSORS_PC87360 is not set
|
|
||||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
|
||||||
# CONFIG_SENSORS_SIS5595 is not set
|
|
||||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
|
||||||
# CONFIG_SENSORS_VIA686A is not set
|
|
||||||
# CONFIG_SENSORS_W83781D is not set
|
|
||||||
# CONFIG_SENSORS_W83L785TS is not set
|
|
||||||
# CONFIG_SENSORS_W83627HF is not set
|
|
||||||
# CONFIG_SENSORS_W83627EHF is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Other I2C Chip support
|
# Miscellaneous I2C Chip support
|
||||||
#
|
#
|
||||||
# CONFIG_SENSORS_DS1337 is not set
|
# CONFIG_SENSORS_DS1337 is not set
|
||||||
# CONFIG_SENSORS_DS1374 is not set
|
# CONFIG_SENSORS_DS1374 is not set
|
||||||
@ -766,6 +734,11 @@ CONFIG_I2C_ALGOPCF=y
|
|||||||
#
|
#
|
||||||
# CONFIG_W1 is not set
|
# CONFIG_W1 is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Hardware Monitoring support
|
||||||
|
#
|
||||||
|
# CONFIG_HWMON is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Misc devices
|
# Misc devices
|
||||||
#
|
#
|
||||||
@ -782,7 +755,6 @@ CONFIG_VIDEO_DEV=y
|
|||||||
#
|
#
|
||||||
# Video Adapters
|
# Video Adapters
|
||||||
#
|
#
|
||||||
# CONFIG_TUNER_MULTI_I2C is not set
|
|
||||||
# CONFIG_VIDEO_BT848 is not set
|
# CONFIG_VIDEO_BT848 is not set
|
||||||
# CONFIG_VIDEO_CPIA is not set
|
# CONFIG_VIDEO_CPIA is not set
|
||||||
# CONFIG_VIDEO_SAA5246A is not set
|
# CONFIG_VIDEO_SAA5246A is not set
|
||||||
@ -1025,6 +997,7 @@ CONFIG_USB_HIDDEV=y
|
|||||||
# CONFIG_USB_EGALAX is not set
|
# CONFIG_USB_EGALAX is not set
|
||||||
# CONFIG_USB_XPAD is not set
|
# CONFIG_USB_XPAD is not set
|
||||||
# CONFIG_USB_ATI_REMOTE is not set
|
# CONFIG_USB_ATI_REMOTE is not set
|
||||||
|
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Imaging devices
|
# USB Imaging devices
|
||||||
@ -1080,6 +1053,7 @@ CONFIG_USB_MON=y
|
|||||||
# CONFIG_USB_PHIDGETSERVO is not set
|
# CONFIG_USB_PHIDGETSERVO is not set
|
||||||
# CONFIG_USB_IDMOUSE is not set
|
# CONFIG_USB_IDMOUSE is not set
|
||||||
# CONFIG_USB_SISUSBVGA is not set
|
# CONFIG_USB_SISUSBVGA is not set
|
||||||
|
# CONFIG_USB_LD is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB DSL modem support
|
# USB DSL modem support
|
||||||
@ -1121,6 +1095,7 @@ CONFIG_JBD=y
|
|||||||
CONFIG_FS_MBCACHE=y
|
CONFIG_FS_MBCACHE=y
|
||||||
# CONFIG_REISERFS_FS is not set
|
# CONFIG_REISERFS_FS is not set
|
||||||
# CONFIG_JFS_FS is not set
|
# CONFIG_JFS_FS is not set
|
||||||
|
# CONFIG_FS_POSIX_ACL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# XFS support
|
# XFS support
|
||||||
@ -1128,6 +1103,7 @@ CONFIG_FS_MBCACHE=y
|
|||||||
# CONFIG_XFS_FS is not set
|
# CONFIG_XFS_FS is not set
|
||||||
# CONFIG_MINIX_FS is not set
|
# CONFIG_MINIX_FS is not set
|
||||||
# CONFIG_ROMFS_FS is not set
|
# CONFIG_ROMFS_FS is not set
|
||||||
|
# CONFIG_INOTIFY is not set
|
||||||
# CONFIG_QUOTA is not set
|
# CONFIG_QUOTA is not set
|
||||||
CONFIG_DNOTIFY=y
|
CONFIG_DNOTIFY=y
|
||||||
CONFIG_AUTOFS_FS=y
|
CONFIG_AUTOFS_FS=y
|
||||||
|
@ -22,7 +22,7 @@ GLOBAL_ENTRY(_start)
|
|||||||
.save rp, r0
|
.save rp, r0
|
||||||
.body
|
.body
|
||||||
movl gp = __gp
|
movl gp = __gp
|
||||||
movl sp = stack_mem
|
movl sp = stack_mem+16384-16
|
||||||
bsw.1
|
bsw.1
|
||||||
br.call.sptk.many rp=start_bootloader
|
br.call.sptk.many rp=start_bootloader
|
||||||
END(_start)
|
END(_start)
|
||||||
|
@ -341,7 +341,7 @@ next_sg:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Attach the domains */
|
/* Attach the domains */
|
||||||
for_each_online_cpu(i) {
|
for_each_cpu_mask(i, *cpu_map) {
|
||||||
struct sched_domain *sd;
|
struct sched_domain *sd;
|
||||||
#ifdef CONFIG_SCHED_SMT
|
#ifdef CONFIG_SCHED_SMT
|
||||||
sd = &per_cpu(cpu_domains, i);
|
sd = &per_cpu(cpu_domains, i);
|
||||||
|
@ -4312,6 +4312,7 @@ pfm_context_load(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs)
|
|||||||
DPRINT(("before cmpxchg() old_ctx=%p new_ctx=%p\n",
|
DPRINT(("before cmpxchg() old_ctx=%p new_ctx=%p\n",
|
||||||
thread->pfm_context, ctx));
|
thread->pfm_context, ctx));
|
||||||
|
|
||||||
|
ret = -EBUSY;
|
||||||
old = ia64_cmpxchg(acq, &thread->pfm_context, NULL, ctx, sizeof(pfm_context_t *));
|
old = ia64_cmpxchg(acq, &thread->pfm_context, NULL, ctx, sizeof(pfm_context_t *));
|
||||||
if (old != NULL) {
|
if (old != NULL) {
|
||||||
DPRINT(("load_pid [%d] already has a context\n", req->load_pid));
|
DPRINT(("load_pid [%d] already has a context\n", req->load_pid));
|
||||||
|
@ -143,7 +143,8 @@ struct salinfo_data {
|
|||||||
|
|
||||||
static struct salinfo_data salinfo_data[ARRAY_SIZE(salinfo_log_name)];
|
static struct salinfo_data salinfo_data[ARRAY_SIZE(salinfo_log_name)];
|
||||||
|
|
||||||
static spinlock_t data_lock, data_saved_lock;
|
static DEFINE_SPINLOCK(data_lock);
|
||||||
|
static DEFINE_SPINLOCK(data_saved_lock);
|
||||||
|
|
||||||
/** salinfo_platform_oemdata - optional callback to decode oemdata from an error
|
/** salinfo_platform_oemdata - optional callback to decode oemdata from an error
|
||||||
* record.
|
* record.
|
||||||
|
@ -203,6 +203,7 @@ static void sn_fixup_ionodes(void)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spin_lock_init(&sn_flush_device_list->sfdl_flush_lock);
|
||||||
hubdev->hdi_flush_nasid_list.widget_p[widget] =
|
hubdev->hdi_flush_nasid_list.widget_p[widget] =
|
||||||
sn_flush_device_list;
|
sn_flush_device_list;
|
||||||
}
|
}
|
||||||
@ -322,7 +323,7 @@ void sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
|
|||||||
struct pci_controller *controller;
|
struct pci_controller *controller;
|
||||||
struct pcibus_bussoft *prom_bussoft_ptr;
|
struct pcibus_bussoft *prom_bussoft_ptr;
|
||||||
struct hubdev_info *hubdev_info;
|
struct hubdev_info *hubdev_info;
|
||||||
void *provider_soft;
|
void *provider_soft = NULL;
|
||||||
struct sn_pcibus_provider *provider;
|
struct sn_pcibus_provider *provider;
|
||||||
|
|
||||||
status = sal_get_pcibus_info((u64) segment, (u64) busnum,
|
status = sal_get_pcibus_info((u64) segment, (u64) busnum,
|
||||||
@ -338,7 +339,7 @@ void sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
|
|||||||
if (bus == NULL) {
|
if (bus == NULL) {
|
||||||
bus = pci_scan_bus(busnum, &pci_root_ops, controller);
|
bus = pci_scan_bus(busnum, &pci_root_ops, controller);
|
||||||
if (bus == NULL)
|
if (bus == NULL)
|
||||||
return; /* error, or bus already scanned */
|
goto error_return; /* error, or bus already scanned */
|
||||||
bus->sysdata = NULL;
|
bus->sysdata = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -351,28 +352,30 @@ void sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (prom_bussoft_ptr->bs_asic_type >= PCIIO_ASIC_MAX_TYPES)
|
if (prom_bussoft_ptr->bs_asic_type >= PCIIO_ASIC_MAX_TYPES)
|
||||||
return; /* unsupported asic type */
|
goto error_return; /* unsupported asic type */
|
||||||
|
|
||||||
if (prom_bussoft_ptr->bs_asic_type == PCIIO_ASIC_TYPE_PPB)
|
if (prom_bussoft_ptr->bs_asic_type == PCIIO_ASIC_TYPE_PPB)
|
||||||
goto error_return; /* no further fixup necessary */
|
goto error_return; /* no further fixup necessary */
|
||||||
|
|
||||||
provider = sn_pci_provider[prom_bussoft_ptr->bs_asic_type];
|
provider = sn_pci_provider[prom_bussoft_ptr->bs_asic_type];
|
||||||
if (provider == NULL)
|
if (provider == NULL)
|
||||||
return; /* no provider registerd for this asic */
|
goto error_return; /* no provider registerd for this asic */
|
||||||
|
|
||||||
provider_soft = NULL;
|
bus->sysdata = controller;
|
||||||
if (provider->bus_fixup)
|
if (provider->bus_fixup)
|
||||||
provider_soft = (*provider->bus_fixup) (prom_bussoft_ptr, controller);
|
provider_soft = (*provider->bus_fixup) (prom_bussoft_ptr, controller);
|
||||||
|
|
||||||
if (provider_soft == NULL)
|
if (provider_soft == NULL) {
|
||||||
return; /* fixup failed or not applicable */
|
/* fixup failed or not applicable */
|
||||||
|
bus->sysdata = NULL;
|
||||||
|
goto error_return;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generic bus fixup goes here. Don't reference prom_bussoft_ptr
|
* Generic bus fixup goes here. Don't reference prom_bussoft_ptr
|
||||||
* after this point.
|
* after this point.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bus->sysdata = controller;
|
|
||||||
PCI_CONTROLLER(bus)->platform_data = provider_soft;
|
PCI_CONTROLLER(bus)->platform_data = provider_soft;
|
||||||
nasid = NASID_GET(SN_PCIBUS_BUSSOFT(bus)->bs_base);
|
nasid = NASID_GET(SN_PCIBUS_BUSSOFT(bus)->bs_base);
|
||||||
cnode = nasid_to_cnodeid(nasid);
|
cnode = nasid_to_cnodeid(nasid);
|
||||||
|
@ -620,6 +620,7 @@ ppc4xx_clr_dma_status(unsigned int dmanr)
|
|||||||
return DMA_STATUS_GOOD;
|
return DMA_STATUS_GOOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC4xx_EDMA
|
||||||
/*
|
/*
|
||||||
* Enables the burst on the channel (BTEN bit in the control/count register)
|
* Enables the burst on the channel (BTEN bit in the control/count register)
|
||||||
* Note:
|
* Note:
|
||||||
@ -685,6 +686,11 @@ ppc4xx_set_burst_size(unsigned int dmanr, unsigned int bsize)
|
|||||||
return DMA_STATUS_GOOD;
|
return DMA_STATUS_GOOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(ppc4xx_enable_burst);
|
||||||
|
EXPORT_SYMBOL(ppc4xx_disable_burst);
|
||||||
|
EXPORT_SYMBOL(ppc4xx_set_burst_size);
|
||||||
|
#endif /* CONFIG_PPC4xx_EDMA */
|
||||||
|
|
||||||
EXPORT_SYMBOL(ppc4xx_init_dma_channel);
|
EXPORT_SYMBOL(ppc4xx_init_dma_channel);
|
||||||
EXPORT_SYMBOL(ppc4xx_get_channel_config);
|
EXPORT_SYMBOL(ppc4xx_get_channel_config);
|
||||||
EXPORT_SYMBOL(ppc4xx_set_channel_priority);
|
EXPORT_SYMBOL(ppc4xx_set_channel_priority);
|
||||||
@ -703,6 +709,4 @@ EXPORT_SYMBOL(ppc4xx_enable_dma_interrupt);
|
|||||||
EXPORT_SYMBOL(ppc4xx_disable_dma_interrupt);
|
EXPORT_SYMBOL(ppc4xx_disable_dma_interrupt);
|
||||||
EXPORT_SYMBOL(ppc4xx_get_dma_status);
|
EXPORT_SYMBOL(ppc4xx_get_dma_status);
|
||||||
EXPORT_SYMBOL(ppc4xx_clr_dma_status);
|
EXPORT_SYMBOL(ppc4xx_clr_dma_status);
|
||||||
EXPORT_SYMBOL(ppc4xx_enable_burst);
|
|
||||||
EXPORT_SYMBOL(ppc4xx_disable_burst);
|
|
||||||
EXPORT_SYMBOL(ppc4xx_set_burst_size);
|
|
||||||
|
@ -32,32 +32,12 @@
|
|||||||
/* The HvReleaseData is the root of the information shared between
|
/* The HvReleaseData is the root of the information shared between
|
||||||
* the hypervisor and Linux.
|
* the hypervisor and Linux.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* WARNING - magic here
|
|
||||||
*
|
|
||||||
* Ok, this is a horrid hack below, but marginally better than the
|
|
||||||
* alternatives. What we really want is just to initialize
|
|
||||||
* hvReleaseData in C as in the #if 0 section here. However, gcc
|
|
||||||
* refuses to believe that (u32)&x is a constant expression, so will
|
|
||||||
* not allow the xMsNucDataOffset field to be properly initialized.
|
|
||||||
* So, we declare hvReleaseData in inline asm instead. We use inline
|
|
||||||
* asm, rather than a .S file, because the assembler won't generate
|
|
||||||
* the necessary relocation for the LparMap either, unless that symbol
|
|
||||||
* is declared in the same source file. Finally, we put the asm in a
|
|
||||||
* dummy, attribute-used function, instead of at file scope, because
|
|
||||||
* file scope asms don't allow contraints. We want to use the "i"
|
|
||||||
* constraints to put sizeof() and offsetof() expressions in there,
|
|
||||||
* because including asm/offsets.h in C code then stringifying causes
|
|
||||||
* all manner of warnings.
|
|
||||||
*/
|
|
||||||
#if 0
|
|
||||||
struct HvReleaseData hvReleaseData = {
|
struct HvReleaseData hvReleaseData = {
|
||||||
.xDesc = 0xc8a5d9c4, /* "HvRD" ebcdic */
|
.xDesc = 0xc8a5d9c4, /* "HvRD" ebcdic */
|
||||||
.xSize = sizeof(struct HvReleaseData),
|
.xSize = sizeof(struct HvReleaseData),
|
||||||
.xVpdAreasPtrOffset = offsetof(struct naca_struct, xItVpdAreas),
|
.xVpdAreasPtrOffset = offsetof(struct naca_struct, xItVpdAreas),
|
||||||
.xSlicNacaAddr = &naca, /* 64-bit Naca address */
|
.xSlicNacaAddr = &naca, /* 64-bit Naca address */
|
||||||
.xMsNucDataOffset = (u32)((unsigned long)&xLparMap - KERNELBASE),
|
.xMsNucDataOffset = LPARMAP_PHYS,
|
||||||
.xFlags = HVREL_TAGSINACTIVE /* tags inactive */
|
.xFlags = HVREL_TAGSINACTIVE /* tags inactive */
|
||||||
/* 64 bit */
|
/* 64 bit */
|
||||||
/* shared processors */
|
/* shared processors */
|
||||||
@ -70,63 +50,6 @@ struct HvReleaseData hvReleaseData = {
|
|||||||
0xa7, 0x40, 0xf2, 0x4b,
|
0xa7, 0x40, 0xf2, 0x4b,
|
||||||
0xf4, 0x4b, 0xf6, 0xf4 },
|
0xf4, 0x4b, 0xf6, 0xf4 },
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
extern struct HvReleaseData hvReleaseData;
|
|
||||||
|
|
||||||
static void __attribute_used__ hvReleaseData_wrapper(void)
|
|
||||||
{
|
|
||||||
/* This doesn't appear to need any alignment (even 4 byte) */
|
|
||||||
asm volatile (
|
|
||||||
" lparMapPhys = xLparMap - %3\n"
|
|
||||||
" .data\n"
|
|
||||||
" .globl hvReleaseData\n"
|
|
||||||
"hvReleaseData:\n"
|
|
||||||
" .long 0xc8a5d9c4\n" /* xDesc */
|
|
||||||
/* "HvRD" in ebcdic */
|
|
||||||
" .short %0\n" /* xSize */
|
|
||||||
" .short %1\n" /* xVpdAreasPtrOffset */
|
|
||||||
" .llong naca\n" /* xSlicNacaAddr */
|
|
||||||
" .long lparMapPhys\n" /* xMsNucDataOffset */
|
|
||||||
" .long 0\n" /* xRsvd1 */
|
|
||||||
" .short %2\n" /* xFlags */
|
|
||||||
" .short 4\n" /* xVrmIndex - v5r2m0 */
|
|
||||||
" .short 3\n" /* xMinSupportedPlicVrmIndex - v5r1m0 */
|
|
||||||
" .short 3\n" /* xMinCompatablePlicVrmIndex - v5r1m0 */
|
|
||||||
" .long 0xd38995a4\n" /* xVrmName */
|
|
||||||
" .long 0xa740f24b\n" /* "Linux 2.4.64" ebcdic */
|
|
||||||
" .long 0xf44bf6f4\n"
|
|
||||||
" . = hvReleaseData + %0\n"
|
|
||||||
" .previous\n"
|
|
||||||
: : "i"(sizeof(hvReleaseData)),
|
|
||||||
"i"(offsetof(struct naca_struct, xItVpdAreas)),
|
|
||||||
"i"(HVREL_TAGSINACTIVE /* tags inactive, 64 bit, */
|
|
||||||
/* shared processors, HMT allowed */
|
|
||||||
| 6), /* TEMP: This allows non-GA drivers */
|
|
||||||
"i"(KERNELBASE)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct LparMap __attribute__((aligned (16))) xLparMap = {
|
|
||||||
.xNumberEsids = HvEsidsToMap,
|
|
||||||
.xNumberRanges = HvRangesToMap,
|
|
||||||
.xSegmentTableOffs = STAB0_PAGE,
|
|
||||||
|
|
||||||
.xEsids = {
|
|
||||||
{ .xKernelEsid = GET_ESID(KERNELBASE),
|
|
||||||
.xKernelVsid = KERNEL_VSID(KERNELBASE), },
|
|
||||||
{ .xKernelEsid = GET_ESID(VMALLOCBASE),
|
|
||||||
.xKernelVsid = KERNEL_VSID(VMALLOCBASE), },
|
|
||||||
},
|
|
||||||
|
|
||||||
.xRanges = {
|
|
||||||
{ .xPages = HvPagesToMap,
|
|
||||||
.xOffset = 0,
|
|
||||||
.xVPN = KERNEL_VSID(KERNELBASE) << (SID_SHIFT - PAGE_SHIFT),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
extern void system_reset_iSeries(void);
|
extern void system_reset_iSeries(void);
|
||||||
extern void machine_check_iSeries(void);
|
extern void machine_check_iSeries(void);
|
||||||
|
@ -73,3 +73,8 @@ obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o
|
|||||||
obj-$(CONFIG_KPROBES) += kprobes.o
|
obj-$(CONFIG_KPROBES) += kprobes.o
|
||||||
|
|
||||||
CFLAGS_ioctl32.o += -Ifs/
|
CFLAGS_ioctl32.o += -Ifs/
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PPC_ISERIES),y)
|
||||||
|
arch/ppc64/kernel/head.o: arch/ppc64/kernel/lparmap.s
|
||||||
|
AFLAGS_head.o += -Iarch/ppc64/kernel
|
||||||
|
endif
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include <asm/cputable.h>
|
#include <asm/cputable.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/hvcall.h>
|
#include <asm/hvcall.h>
|
||||||
|
#include <asm/iSeries/LparMap.h>
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_ISERIES
|
#ifdef CONFIG_PPC_ISERIES
|
||||||
#define DO_SOFT_DISABLE
|
#define DO_SOFT_DISABLE
|
||||||
@ -679,6 +680,11 @@ hardware_interrupt_iSeries_masked:
|
|||||||
.globl fwnmi_data_area
|
.globl fwnmi_data_area
|
||||||
fwnmi_data_area:
|
fwnmi_data_area:
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC_ISERIES
|
||||||
|
. = LPARMAP_PHYS
|
||||||
|
#include "lparmap.s"
|
||||||
|
#endif /* CONFIG_PPC_ISERIES */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Vectors for the FWNMI option. Share common code.
|
* Vectors for the FWNMI option. Share common code.
|
||||||
*/
|
*/
|
||||||
|
@ -242,7 +242,7 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl,
|
|||||||
dma_addr_t dma_next = 0, dma_addr;
|
dma_addr_t dma_next = 0, dma_addr;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
struct scatterlist *s, *outs, *segstart;
|
struct scatterlist *s, *outs, *segstart;
|
||||||
int outcount;
|
int outcount, incount;
|
||||||
unsigned long handle;
|
unsigned long handle;
|
||||||
|
|
||||||
BUG_ON(direction == DMA_NONE);
|
BUG_ON(direction == DMA_NONE);
|
||||||
@ -252,6 +252,7 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl,
|
|||||||
|
|
||||||
outs = s = segstart = &sglist[0];
|
outs = s = segstart = &sglist[0];
|
||||||
outcount = 1;
|
outcount = 1;
|
||||||
|
incount = nelems;
|
||||||
handle = 0;
|
handle = 0;
|
||||||
|
|
||||||
/* Init first segment length for backout at failure */
|
/* Init first segment length for backout at failure */
|
||||||
@ -338,10 +339,10 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl,
|
|||||||
|
|
||||||
DBG("mapped %d elements:\n", outcount);
|
DBG("mapped %d elements:\n", outcount);
|
||||||
|
|
||||||
/* For the sake of iommu_free_sg, we clear out the length in the
|
/* For the sake of iommu_unmap_sg, we clear out the length in the
|
||||||
* next entry of the sglist if we didn't fill the list completely
|
* next entry of the sglist if we didn't fill the list completely
|
||||||
*/
|
*/
|
||||||
if (outcount < nelems) {
|
if (outcount < incount) {
|
||||||
outs++;
|
outs++;
|
||||||
outs->dma_address = DMA_ERROR_CODE;
|
outs->dma_address = DMA_ERROR_CODE;
|
||||||
outs->dma_length = 0;
|
outs->dma_length = 0;
|
||||||
|
31
arch/ppc64/kernel/lparmap.c
Normal file
31
arch/ppc64/kernel/lparmap.c
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005 Stephen Rothwell IBM Corp.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version
|
||||||
|
* 2 of the License, or (at your option) any later version.
|
||||||
|
*/
|
||||||
|
#include <asm/mmu.h>
|
||||||
|
#include <asm/page.h>
|
||||||
|
#include <asm/iSeries/LparMap.h>
|
||||||
|
|
||||||
|
const struct LparMap __attribute__((__section__(".text"))) xLparMap = {
|
||||||
|
.xNumberEsids = HvEsidsToMap,
|
||||||
|
.xNumberRanges = HvRangesToMap,
|
||||||
|
.xSegmentTableOffs = STAB0_PAGE,
|
||||||
|
|
||||||
|
.xEsids = {
|
||||||
|
{ .xKernelEsid = GET_ESID(KERNELBASE),
|
||||||
|
.xKernelVsid = KERNEL_VSID(KERNELBASE), },
|
||||||
|
{ .xKernelEsid = GET_ESID(VMALLOCBASE),
|
||||||
|
.xKernelVsid = KERNEL_VSID(VMALLOCBASE), },
|
||||||
|
},
|
||||||
|
|
||||||
|
.xRanges = {
|
||||||
|
{ .xPages = HvPagesToMap,
|
||||||
|
.xOffset = 0,
|
||||||
|
.xVPN = KERNEL_VSID(KERNELBASE) << (SID_SHIFT - PAGE_SHIFT),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
@ -1145,5 +1145,10 @@ ENTRY(sys_call_table)
|
|||||||
.long sys_add_key /* 285 */
|
.long sys_add_key /* 285 */
|
||||||
.long sys_request_key
|
.long sys_request_key
|
||||||
.long sys_keyctl
|
.long sys_keyctl
|
||||||
|
.long sys_ioprio_set
|
||||||
|
.long sys_ioprio_get
|
||||||
|
.long sys_inotify_init /* 290 */
|
||||||
|
.long sys_inotify_add_watch
|
||||||
|
.long sys_inotify_rm_watch
|
||||||
|
|
||||||
/* End of entry.S */
|
/* End of entry.S */
|
||||||
|
@ -342,4 +342,9 @@ sys_call_table:
|
|||||||
.long sys_add_key
|
.long sys_add_key
|
||||||
.long sys_request_key
|
.long sys_request_key
|
||||||
.long sys_keyctl /* 315 */
|
.long sys_keyctl /* 315 */
|
||||||
|
.long sys_ioprio_set
|
||||||
|
.long sys_ioprio_get
|
||||||
|
.long sys_inotify_init
|
||||||
|
.long sys_inotify_add_watch
|
||||||
|
.long sys_inotify_rm_watch /* 320 */
|
||||||
|
|
||||||
|
@ -98,8 +98,9 @@ extern void ___rw_write_enter(void);
|
|||||||
* The module references will be fixed up by module_frob_arch_sections.
|
* The module references will be fixed up by module_frob_arch_sections.
|
||||||
*/
|
*/
|
||||||
#define DOT_ALIAS2(__ret, __x, __arg1, __arg2) \
|
#define DOT_ALIAS2(__ret, __x, __arg1, __arg2) \
|
||||||
extern __ret __x(__arg1, __arg2) \
|
extern __ret __x(__arg1, __arg2); \
|
||||||
__attribute__((weak, alias("." # __x)));
|
asm(".weak " #__x);\
|
||||||
|
asm(#__x "=." #__x);
|
||||||
|
|
||||||
DOT_ALIAS2(int, div, int, int)
|
DOT_ALIAS2(int, div, int, int)
|
||||||
DOT_ALIAS2(int, mul, int, int)
|
DOT_ALIAS2(int, mul, int, int)
|
||||||
|
@ -8,7 +8,7 @@ EXTRA_CFLAGS := -Werror
|
|||||||
extra-y := head.o init_task.o vmlinux.lds
|
extra-y := head.o init_task.o vmlinux.lds
|
||||||
|
|
||||||
obj-y := process.o setup.o cpu.o idprom.o \
|
obj-y := process.o setup.o cpu.o idprom.o \
|
||||||
traps.o devices.o auxio.o \
|
traps.o devices.o auxio.o una_asm.o \
|
||||||
irq.o ptrace.o time.o sys_sparc.o signal.o \
|
irq.o ptrace.o time.o sys_sparc.o signal.o \
|
||||||
unaligned.o central.o pci.o starfire.o semaphore.o \
|
unaligned.o central.o pci.o starfire.o semaphore.o \
|
||||||
power.o sbus.o iommu_common.o sparc64_ksyms.o chmc.o
|
power.o sbus.o iommu_common.o sparc64_ksyms.o chmc.o
|
||||||
|
@ -2127,6 +2127,9 @@ void __init trap_init(void)
|
|||||||
TI_PRE_COUNT != offsetof(struct thread_info, preempt_count) ||
|
TI_PRE_COUNT != offsetof(struct thread_info, preempt_count) ||
|
||||||
TI_NEW_CHILD != offsetof(struct thread_info, new_child) ||
|
TI_NEW_CHILD != offsetof(struct thread_info, new_child) ||
|
||||||
TI_SYS_NOERROR != offsetof(struct thread_info, syscall_noerror) ||
|
TI_SYS_NOERROR != offsetof(struct thread_info, syscall_noerror) ||
|
||||||
|
TI_RESTART_BLOCK != offsetof(struct thread_info, restart_block) ||
|
||||||
|
TI_KUNA_REGS != offsetof(struct thread_info, kern_una_regs) ||
|
||||||
|
TI_KUNA_INSN != offsetof(struct thread_info, kern_una_insn) ||
|
||||||
TI_FPREGS != offsetof(struct thread_info, fpregs) ||
|
TI_FPREGS != offsetof(struct thread_info, fpregs) ||
|
||||||
(TI_FPREGS & (64 - 1)))
|
(TI_FPREGS & (64 - 1)))
|
||||||
thread_info_offsets_are_bolixed_dave();
|
thread_info_offsets_are_bolixed_dave();
|
||||||
|
153
arch/sparc64/kernel/una_asm.S
Normal file
153
arch/sparc64/kernel/una_asm.S
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
/* una_asm.S: Kernel unaligned trap assembler helpers.
|
||||||
|
*
|
||||||
|
* Copyright (C) 1996,2005 David S. Miller (davem@davemloft.net)
|
||||||
|
* Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
|
||||||
|
*/
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
kernel_unaligned_trap_fault:
|
||||||
|
call kernel_mna_trap_fault
|
||||||
|
nop
|
||||||
|
retl
|
||||||
|
nop
|
||||||
|
.size kern_unaligned_trap_fault, .-kern_unaligned_trap_fault
|
||||||
|
|
||||||
|
.globl __do_int_store
|
||||||
|
__do_int_store:
|
||||||
|
rd %asi, %o4
|
||||||
|
wr %o3, 0, %asi
|
||||||
|
ldx [%o2], %g3
|
||||||
|
cmp %o1, 2
|
||||||
|
be,pn %icc, 2f
|
||||||
|
cmp %o1, 4
|
||||||
|
be,pt %icc, 1f
|
||||||
|
srlx %g3, 24, %g2
|
||||||
|
srlx %g3, 56, %g1
|
||||||
|
srlx %g3, 48, %g7
|
||||||
|
4: stba %g1, [%o0] %asi
|
||||||
|
srlx %g3, 40, %g1
|
||||||
|
5: stba %g7, [%o0 + 1] %asi
|
||||||
|
srlx %g3, 32, %g7
|
||||||
|
6: stba %g1, [%o0 + 2] %asi
|
||||||
|
7: stba %g7, [%o0 + 3] %asi
|
||||||
|
srlx %g3, 16, %g1
|
||||||
|
8: stba %g2, [%o0 + 4] %asi
|
||||||
|
srlx %g3, 8, %g7
|
||||||
|
9: stba %g1, [%o0 + 5] %asi
|
||||||
|
10: stba %g7, [%o0 + 6] %asi
|
||||||
|
ba,pt %xcc, 0f
|
||||||
|
11: stba %g3, [%o0 + 7] %asi
|
||||||
|
1: srl %g3, 16, %g7
|
||||||
|
12: stba %g2, [%o0] %asi
|
||||||
|
srl %g3, 8, %g2
|
||||||
|
13: stba %g7, [%o0 + 1] %asi
|
||||||
|
14: stba %g2, [%o0 + 2] %asi
|
||||||
|
ba,pt %xcc, 0f
|
||||||
|
15: stba %g3, [%o0 + 3] %asi
|
||||||
|
2: srl %g3, 8, %g2
|
||||||
|
16: stba %g2, [%o0] %asi
|
||||||
|
17: stba %g3, [%o0 + 1] %asi
|
||||||
|
0:
|
||||||
|
wr %o4, 0x0, %asi
|
||||||
|
retl
|
||||||
|
nop
|
||||||
|
.size __do_int_store, .-__do_int_store
|
||||||
|
|
||||||
|
.section __ex_table
|
||||||
|
.word 4b, kernel_unaligned_trap_fault
|
||||||
|
.word 5b, kernel_unaligned_trap_fault
|
||||||
|
.word 6b, kernel_unaligned_trap_fault
|
||||||
|
.word 7b, kernel_unaligned_trap_fault
|
||||||
|
.word 8b, kernel_unaligned_trap_fault
|
||||||
|
.word 9b, kernel_unaligned_trap_fault
|
||||||
|
.word 10b, kernel_unaligned_trap_fault
|
||||||
|
.word 11b, kernel_unaligned_trap_fault
|
||||||
|
.word 12b, kernel_unaligned_trap_fault
|
||||||
|
.word 13b, kernel_unaligned_trap_fault
|
||||||
|
.word 14b, kernel_unaligned_trap_fault
|
||||||
|
.word 15b, kernel_unaligned_trap_fault
|
||||||
|
.word 16b, kernel_unaligned_trap_fault
|
||||||
|
.word 17b, kernel_unaligned_trap_fault
|
||||||
|
.previous
|
||||||
|
|
||||||
|
.globl do_int_load
|
||||||
|
do_int_load:
|
||||||
|
rd %asi, %o5
|
||||||
|
wr %o4, 0, %asi
|
||||||
|
cmp %o1, 8
|
||||||
|
bge,pn %icc, 9f
|
||||||
|
cmp %o1, 4
|
||||||
|
be,pt %icc, 6f
|
||||||
|
4: lduba [%o2] %asi, %g2
|
||||||
|
5: lduba [%o2 + 1] %asi, %g3
|
||||||
|
sll %g2, 8, %g2
|
||||||
|
brz,pt %o3, 3f
|
||||||
|
add %g2, %g3, %g2
|
||||||
|
sllx %g2, 48, %g2
|
||||||
|
srax %g2, 48, %g2
|
||||||
|
3: ba,pt %xcc, 0f
|
||||||
|
stx %g2, [%o0]
|
||||||
|
6: lduba [%o2 + 1] %asi, %g3
|
||||||
|
sll %g2, 24, %g2
|
||||||
|
7: lduba [%o2 + 2] %asi, %g7
|
||||||
|
sll %g3, 16, %g3
|
||||||
|
8: lduba [%o2 + 3] %asi, %g1
|
||||||
|
sll %g7, 8, %g7
|
||||||
|
or %g2, %g3, %g2
|
||||||
|
or %g7, %g1, %g7
|
||||||
|
or %g2, %g7, %g2
|
||||||
|
brnz,a,pt %o3, 3f
|
||||||
|
sra %g2, 0, %g2
|
||||||
|
3: ba,pt %xcc, 0f
|
||||||
|
stx %g2, [%o0]
|
||||||
|
9: lduba [%o2] %asi, %g2
|
||||||
|
10: lduba [%o2 + 1] %asi, %g3
|
||||||
|
sllx %g2, 56, %g2
|
||||||
|
11: lduba [%o2 + 2] %asi, %g7
|
||||||
|
sllx %g3, 48, %g3
|
||||||
|
12: lduba [%o2 + 3] %asi, %g1
|
||||||
|
sllx %g7, 40, %g7
|
||||||
|
sllx %g1, 32, %g1
|
||||||
|
or %g2, %g3, %g2
|
||||||
|
or %g7, %g1, %g7
|
||||||
|
13: lduba [%o2 + 4] %asi, %g3
|
||||||
|
or %g2, %g7, %g7
|
||||||
|
14: lduba [%o2 + 5] %asi, %g1
|
||||||
|
sllx %g3, 24, %g3
|
||||||
|
15: lduba [%o2 + 6] %asi, %g2
|
||||||
|
sllx %g1, 16, %g1
|
||||||
|
or %g7, %g3, %g7
|
||||||
|
16: lduba [%o2 + 7] %asi, %g3
|
||||||
|
sllx %g2, 8, %g2
|
||||||
|
or %g7, %g1, %g7
|
||||||
|
or %g2, %g3, %g2
|
||||||
|
or %g7, %g2, %g7
|
||||||
|
cmp %o1, 8
|
||||||
|
be,a,pt %icc, 0f
|
||||||
|
stx %g7, [%o0]
|
||||||
|
srlx %g7, 32, %g2
|
||||||
|
sra %g7, 0, %g7
|
||||||
|
stx %g2, [%o0]
|
||||||
|
stx %g7, [%o0 + 8]
|
||||||
|
0:
|
||||||
|
wr %o5, 0x0, %asi
|
||||||
|
retl
|
||||||
|
nop
|
||||||
|
.size __do_int_load, .-__do_int_load
|
||||||
|
|
||||||
|
.section __ex_table
|
||||||
|
.word 4b, kernel_unaligned_trap_fault
|
||||||
|
.word 5b, kernel_unaligned_trap_fault
|
||||||
|
.word 6b, kernel_unaligned_trap_fault
|
||||||
|
.word 7b, kernel_unaligned_trap_fault
|
||||||
|
.word 8b, kernel_unaligned_trap_fault
|
||||||
|
.word 9b, kernel_unaligned_trap_fault
|
||||||
|
.word 10b, kernel_unaligned_trap_fault
|
||||||
|
.word 11b, kernel_unaligned_trap_fault
|
||||||
|
.word 12b, kernel_unaligned_trap_fault
|
||||||
|
.word 13b, kernel_unaligned_trap_fault
|
||||||
|
.word 14b, kernel_unaligned_trap_fault
|
||||||
|
.word 15b, kernel_unaligned_trap_fault
|
||||||
|
.word 16b, kernel_unaligned_trap_fault
|
||||||
|
.previous
|
@ -180,169 +180,28 @@ static void __attribute_used__ unaligned_panic(char *str, struct pt_regs *regs)
|
|||||||
die_if_kernel(str, regs);
|
die_if_kernel(str, regs);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define do_integer_load(dest_reg, size, saddr, is_signed, asi, errh) ({ \
|
extern void do_int_load(unsigned long *dest_reg, int size,
|
||||||
__asm__ __volatile__ ( \
|
unsigned long *saddr, int is_signed, int asi);
|
||||||
"wr %4, 0, %%asi\n\t" \
|
|
||||||
"cmp %1, 8\n\t" \
|
|
||||||
"bge,pn %%icc, 9f\n\t" \
|
|
||||||
" cmp %1, 4\n\t" \
|
|
||||||
"be,pt %%icc, 6f\n" \
|
|
||||||
"4:\t" " lduba [%2] %%asi, %%l1\n" \
|
|
||||||
"5:\t" "lduba [%2 + 1] %%asi, %%l2\n\t" \
|
|
||||||
"sll %%l1, 8, %%l1\n\t" \
|
|
||||||
"brz,pt %3, 3f\n\t" \
|
|
||||||
" add %%l1, %%l2, %%l1\n\t" \
|
|
||||||
"sllx %%l1, 48, %%l1\n\t" \
|
|
||||||
"srax %%l1, 48, %%l1\n" \
|
|
||||||
"3:\t" "ba,pt %%xcc, 0f\n\t" \
|
|
||||||
" stx %%l1, [%0]\n" \
|
|
||||||
"6:\t" "lduba [%2 + 1] %%asi, %%l2\n\t" \
|
|
||||||
"sll %%l1, 24, %%l1\n" \
|
|
||||||
"7:\t" "lduba [%2 + 2] %%asi, %%g7\n\t" \
|
|
||||||
"sll %%l2, 16, %%l2\n" \
|
|
||||||
"8:\t" "lduba [%2 + 3] %%asi, %%g1\n\t" \
|
|
||||||
"sll %%g7, 8, %%g7\n\t" \
|
|
||||||
"or %%l1, %%l2, %%l1\n\t" \
|
|
||||||
"or %%g7, %%g1, %%g7\n\t" \
|
|
||||||
"or %%l1, %%g7, %%l1\n\t" \
|
|
||||||
"brnz,a,pt %3, 3f\n\t" \
|
|
||||||
" sra %%l1, 0, %%l1\n" \
|
|
||||||
"3:\t" "ba,pt %%xcc, 0f\n\t" \
|
|
||||||
" stx %%l1, [%0]\n" \
|
|
||||||
"9:\t" "lduba [%2] %%asi, %%l1\n" \
|
|
||||||
"10:\t" "lduba [%2 + 1] %%asi, %%l2\n\t" \
|
|
||||||
"sllx %%l1, 56, %%l1\n" \
|
|
||||||
"11:\t" "lduba [%2 + 2] %%asi, %%g7\n\t" \
|
|
||||||
"sllx %%l2, 48, %%l2\n" \
|
|
||||||
"12:\t" "lduba [%2 + 3] %%asi, %%g1\n\t" \
|
|
||||||
"sllx %%g7, 40, %%g7\n\t" \
|
|
||||||
"sllx %%g1, 32, %%g1\n\t" \
|
|
||||||
"or %%l1, %%l2, %%l1\n\t" \
|
|
||||||
"or %%g7, %%g1, %%g7\n" \
|
|
||||||
"13:\t" "lduba [%2 + 4] %%asi, %%l2\n\t" \
|
|
||||||
"or %%l1, %%g7, %%g7\n" \
|
|
||||||
"14:\t" "lduba [%2 + 5] %%asi, %%g1\n\t" \
|
|
||||||
"sllx %%l2, 24, %%l2\n" \
|
|
||||||
"15:\t" "lduba [%2 + 6] %%asi, %%l1\n\t" \
|
|
||||||
"sllx %%g1, 16, %%g1\n\t" \
|
|
||||||
"or %%g7, %%l2, %%g7\n" \
|
|
||||||
"16:\t" "lduba [%2 + 7] %%asi, %%l2\n\t" \
|
|
||||||
"sllx %%l1, 8, %%l1\n\t" \
|
|
||||||
"or %%g7, %%g1, %%g7\n\t" \
|
|
||||||
"or %%l1, %%l2, %%l1\n\t" \
|
|
||||||
"or %%g7, %%l1, %%g7\n\t" \
|
|
||||||
"cmp %1, 8\n\t" \
|
|
||||||
"be,a,pt %%icc, 0f\n\t" \
|
|
||||||
" stx %%g7, [%0]\n\t" \
|
|
||||||
"srlx %%g7, 32, %%l1\n\t" \
|
|
||||||
"sra %%g7, 0, %%g7\n\t" \
|
|
||||||
"stx %%l1, [%0]\n\t" \
|
|
||||||
"stx %%g7, [%0 + 8]\n" \
|
|
||||||
"0:\n\t" \
|
|
||||||
"wr %%g0, %5, %%asi\n\n\t" \
|
|
||||||
".section __ex_table\n\t" \
|
|
||||||
".word 4b, " #errh "\n\t" \
|
|
||||||
".word 5b, " #errh "\n\t" \
|
|
||||||
".word 6b, " #errh "\n\t" \
|
|
||||||
".word 7b, " #errh "\n\t" \
|
|
||||||
".word 8b, " #errh "\n\t" \
|
|
||||||
".word 9b, " #errh "\n\t" \
|
|
||||||
".word 10b, " #errh "\n\t" \
|
|
||||||
".word 11b, " #errh "\n\t" \
|
|
||||||
".word 12b, " #errh "\n\t" \
|
|
||||||
".word 13b, " #errh "\n\t" \
|
|
||||||
".word 14b, " #errh "\n\t" \
|
|
||||||
".word 15b, " #errh "\n\t" \
|
|
||||||
".word 16b, " #errh "\n\n\t" \
|
|
||||||
".previous\n\t" \
|
|
||||||
: : "r" (dest_reg), "r" (size), "r" (saddr), "r" (is_signed), \
|
|
||||||
"r" (asi), "i" (ASI_AIUS) \
|
|
||||||
: "l1", "l2", "g7", "g1", "cc"); \
|
|
||||||
})
|
|
||||||
|
|
||||||
#define store_common(dst_addr, size, src_val, asi, errh) ({ \
|
extern void __do_int_store(unsigned long *dst_addr, int size,
|
||||||
__asm__ __volatile__ ( \
|
unsigned long *src_val, int asi);
|
||||||
"wr %3, 0, %%asi\n\t" \
|
|
||||||
"ldx [%2], %%l1\n" \
|
|
||||||
"cmp %1, 2\n\t" \
|
|
||||||
"be,pn %%icc, 2f\n\t" \
|
|
||||||
" cmp %1, 4\n\t" \
|
|
||||||
"be,pt %%icc, 1f\n\t" \
|
|
||||||
" srlx %%l1, 24, %%l2\n\t" \
|
|
||||||
"srlx %%l1, 56, %%g1\n\t" \
|
|
||||||
"srlx %%l1, 48, %%g7\n" \
|
|
||||||
"4:\t" "stba %%g1, [%0] %%asi\n\t" \
|
|
||||||
"srlx %%l1, 40, %%g1\n" \
|
|
||||||
"5:\t" "stba %%g7, [%0 + 1] %%asi\n\t" \
|
|
||||||
"srlx %%l1, 32, %%g7\n" \
|
|
||||||
"6:\t" "stba %%g1, [%0 + 2] %%asi\n" \
|
|
||||||
"7:\t" "stba %%g7, [%0 + 3] %%asi\n\t" \
|
|
||||||
"srlx %%l1, 16, %%g1\n" \
|
|
||||||
"8:\t" "stba %%l2, [%0 + 4] %%asi\n\t" \
|
|
||||||
"srlx %%l1, 8, %%g7\n" \
|
|
||||||
"9:\t" "stba %%g1, [%0 + 5] %%asi\n" \
|
|
||||||
"10:\t" "stba %%g7, [%0 + 6] %%asi\n\t" \
|
|
||||||
"ba,pt %%xcc, 0f\n" \
|
|
||||||
"11:\t" " stba %%l1, [%0 + 7] %%asi\n" \
|
|
||||||
"1:\t" "srl %%l1, 16, %%g7\n" \
|
|
||||||
"12:\t" "stba %%l2, [%0] %%asi\n\t" \
|
|
||||||
"srl %%l1, 8, %%l2\n" \
|
|
||||||
"13:\t" "stba %%g7, [%0 + 1] %%asi\n" \
|
|
||||||
"14:\t" "stba %%l2, [%0 + 2] %%asi\n\t" \
|
|
||||||
"ba,pt %%xcc, 0f\n" \
|
|
||||||
"15:\t" " stba %%l1, [%0 + 3] %%asi\n" \
|
|
||||||
"2:\t" "srl %%l1, 8, %%l2\n" \
|
|
||||||
"16:\t" "stba %%l2, [%0] %%asi\n" \
|
|
||||||
"17:\t" "stba %%l1, [%0 + 1] %%asi\n" \
|
|
||||||
"0:\n\t" \
|
|
||||||
"wr %%g0, %4, %%asi\n\n\t" \
|
|
||||||
".section __ex_table\n\t" \
|
|
||||||
".word 4b, " #errh "\n\t" \
|
|
||||||
".word 5b, " #errh "\n\t" \
|
|
||||||
".word 6b, " #errh "\n\t" \
|
|
||||||
".word 7b, " #errh "\n\t" \
|
|
||||||
".word 8b, " #errh "\n\t" \
|
|
||||||
".word 9b, " #errh "\n\t" \
|
|
||||||
".word 10b, " #errh "\n\t" \
|
|
||||||
".word 11b, " #errh "\n\t" \
|
|
||||||
".word 12b, " #errh "\n\t" \
|
|
||||||
".word 13b, " #errh "\n\t" \
|
|
||||||
".word 14b, " #errh "\n\t" \
|
|
||||||
".word 15b, " #errh "\n\t" \
|
|
||||||
".word 16b, " #errh "\n\t" \
|
|
||||||
".word 17b, " #errh "\n\n\t" \
|
|
||||||
".previous\n\t" \
|
|
||||||
: : "r" (dst_addr), "r" (size), "r" (src_val), "r" (asi), "i" (ASI_AIUS)\
|
|
||||||
: "l1", "l2", "g7", "g1", "cc"); \
|
|
||||||
})
|
|
||||||
|
|
||||||
#define do_integer_store(reg_num, size, dst_addr, regs, asi, errh) ({ \
|
static inline void do_int_store(int reg_num, int size, unsigned long *dst_addr,
|
||||||
unsigned long zero = 0; \
|
struct pt_regs *regs, int asi)
|
||||||
unsigned long *src_val = &zero; \
|
{
|
||||||
\
|
unsigned long zero = 0;
|
||||||
if (size == 16) { \
|
unsigned long *src_val = &zero;
|
||||||
size = 8; \
|
|
||||||
zero = (((long)(reg_num ? \
|
|
||||||
(unsigned)fetch_reg(reg_num, regs) : 0)) << 32) | \
|
|
||||||
(unsigned)fetch_reg(reg_num + 1, regs); \
|
|
||||||
} else if (reg_num) src_val = fetch_reg_addr(reg_num, regs); \
|
|
||||||
store_common(dst_addr, size, src_val, asi, errh); \
|
|
||||||
})
|
|
||||||
|
|
||||||
extern void smp_capture(void);
|
if (size == 16) {
|
||||||
extern void smp_release(void);
|
size = 8;
|
||||||
|
zero = (((long)(reg_num ?
|
||||||
#define do_atomic(srcdest_reg, mem, errh) ({ \
|
(unsigned)fetch_reg(reg_num, regs) : 0)) << 32) |
|
||||||
unsigned long flags, tmp; \
|
(unsigned)fetch_reg(reg_num + 1, regs);
|
||||||
\
|
} else if (reg_num) {
|
||||||
smp_capture(); \
|
src_val = fetch_reg_addr(reg_num, regs);
|
||||||
local_irq_save(flags); \
|
}
|
||||||
tmp = *srcdest_reg; \
|
__do_int_store(dst_addr, size, src_val, asi);
|
||||||
do_integer_load(srcdest_reg, 4, mem, 0, errh); \
|
}
|
||||||
store_common(mem, 4, &tmp, errh); \
|
|
||||||
local_irq_restore(flags); \
|
|
||||||
smp_release(); \
|
|
||||||
})
|
|
||||||
|
|
||||||
static inline void advance(struct pt_regs *regs)
|
static inline void advance(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
@ -364,24 +223,29 @@ static inline int ok_for_kernel(unsigned int insn)
|
|||||||
return !floating_point_load_or_store_p(insn);
|
return !floating_point_load_or_store_p(insn);
|
||||||
}
|
}
|
||||||
|
|
||||||
void kernel_mna_trap_fault(struct pt_regs *regs, unsigned int insn) __asm__ ("kernel_mna_trap_fault");
|
void kernel_mna_trap_fault(void)
|
||||||
|
|
||||||
void kernel_mna_trap_fault(struct pt_regs *regs, unsigned int insn)
|
|
||||||
{
|
{
|
||||||
unsigned long g2 = regs->u_regs [UREG_G2];
|
struct pt_regs *regs = current_thread_info()->kern_una_regs;
|
||||||
|
unsigned int insn = current_thread_info()->kern_una_insn;
|
||||||
|
unsigned long g2 = regs->u_regs[UREG_G2];
|
||||||
unsigned long fixup = search_extables_range(regs->tpc, &g2);
|
unsigned long fixup = search_extables_range(regs->tpc, &g2);
|
||||||
|
|
||||||
if (!fixup) {
|
if (!fixup) {
|
||||||
unsigned long address = compute_effective_address(regs, insn, ((insn >> 25) & 0x1f));
|
unsigned long address;
|
||||||
|
|
||||||
|
address = compute_effective_address(regs, insn,
|
||||||
|
((insn >> 25) & 0x1f));
|
||||||
if (address < PAGE_SIZE) {
|
if (address < PAGE_SIZE) {
|
||||||
printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference in mna handler");
|
printk(KERN_ALERT "Unable to handle kernel NULL "
|
||||||
|
"pointer dereference in mna handler");
|
||||||
} else
|
} else
|
||||||
printk(KERN_ALERT "Unable to handle kernel paging request in mna handler");
|
printk(KERN_ALERT "Unable to handle kernel paging "
|
||||||
|
"request in mna handler");
|
||||||
printk(KERN_ALERT " at virtual address %016lx\n",address);
|
printk(KERN_ALERT " at virtual address %016lx\n",address);
|
||||||
printk(KERN_ALERT "current->{mm,active_mm}->context = %016lx\n",
|
printk(KERN_ALERT "current->{active_,}mm->context = %016lx\n",
|
||||||
(current->mm ? CTX_HWBITS(current->mm->context) :
|
(current->mm ? CTX_HWBITS(current->mm->context) :
|
||||||
CTX_HWBITS(current->active_mm->context)));
|
CTX_HWBITS(current->active_mm->context)));
|
||||||
printk(KERN_ALERT "current->{mm,active_mm}->pgd = %016lx\n",
|
printk(KERN_ALERT "current->{active_,}mm->pgd = %016lx\n",
|
||||||
(current->mm ? (unsigned long) current->mm->pgd :
|
(current->mm ? (unsigned long) current->mm->pgd :
|
||||||
(unsigned long) current->active_mm->pgd));
|
(unsigned long) current->active_mm->pgd));
|
||||||
die_if_kernel("Oops", regs);
|
die_if_kernel("Oops", regs);
|
||||||
@ -400,48 +264,41 @@ asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn, u
|
|||||||
enum direction dir = decode_direction(insn);
|
enum direction dir = decode_direction(insn);
|
||||||
int size = decode_access_size(insn);
|
int size = decode_access_size(insn);
|
||||||
|
|
||||||
|
current_thread_info()->kern_una_regs = regs;
|
||||||
|
current_thread_info()->kern_una_insn = insn;
|
||||||
|
|
||||||
if (!ok_for_kernel(insn) || dir == both) {
|
if (!ok_for_kernel(insn) || dir == both) {
|
||||||
printk("Unsupported unaligned load/store trap for kernel at <%016lx>.\n",
|
printk("Unsupported unaligned load/store trap for kernel "
|
||||||
regs->tpc);
|
"at <%016lx>.\n", regs->tpc);
|
||||||
unaligned_panic("Kernel does fpu/atomic unaligned load/store.", regs);
|
unaligned_panic("Kernel does fpu/atomic "
|
||||||
|
"unaligned load/store.", regs);
|
||||||
|
|
||||||
__asm__ __volatile__ ("\n"
|
kernel_mna_trap_fault();
|
||||||
"kernel_unaligned_trap_fault:\n\t"
|
|
||||||
"mov %0, %%o0\n\t"
|
|
||||||
"call kernel_mna_trap_fault\n\t"
|
|
||||||
" mov %1, %%o1\n\t"
|
|
||||||
:
|
|
||||||
: "r" (regs), "r" (insn)
|
|
||||||
: "o0", "o1", "o2", "o3", "o4", "o5", "o7",
|
|
||||||
"g1", "g2", "g3", "g4", "g7", "cc");
|
|
||||||
} else {
|
} else {
|
||||||
unsigned long addr = compute_effective_address(regs, insn, ((insn >> 25) & 0x1f));
|
unsigned long addr;
|
||||||
|
|
||||||
|
addr = compute_effective_address(regs, insn,
|
||||||
|
((insn >> 25) & 0x1f));
|
||||||
#ifdef DEBUG_MNA
|
#ifdef DEBUG_MNA
|
||||||
printk("KMNA: pc=%016lx [dir=%s addr=%016lx size=%d] retpc[%016lx]\n",
|
printk("KMNA: pc=%016lx [dir=%s addr=%016lx size=%d] "
|
||||||
regs->tpc, dirstrings[dir], addr, size, regs->u_regs[UREG_RETPC]);
|
"retpc[%016lx]\n",
|
||||||
|
regs->tpc, dirstrings[dir], addr, size,
|
||||||
|
regs->u_regs[UREG_RETPC]);
|
||||||
#endif
|
#endif
|
||||||
switch (dir) {
|
switch (dir) {
|
||||||
case load:
|
case load:
|
||||||
do_integer_load(fetch_reg_addr(((insn>>25)&0x1f), regs),
|
do_int_load(fetch_reg_addr(((insn>>25)&0x1f), regs),
|
||||||
size, (unsigned long *) addr,
|
size, (unsigned long *) addr,
|
||||||
decode_signedness(insn), decode_asi(insn, regs),
|
decode_signedness(insn),
|
||||||
kernel_unaligned_trap_fault);
|
decode_asi(insn, regs));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case store:
|
case store:
|
||||||
do_integer_store(((insn>>25)&0x1f), size,
|
do_int_store(((insn>>25)&0x1f), size,
|
||||||
(unsigned long *) addr, regs,
|
(unsigned long *) addr, regs,
|
||||||
decode_asi(insn, regs),
|
decode_asi(insn, regs));
|
||||||
kernel_unaligned_trap_fault);
|
|
||||||
break;
|
break;
|
||||||
#if 0 /* unsupported */
|
|
||||||
case both:
|
|
||||||
do_atomic(fetch_reg_addr(((insn>>25)&0x1f), regs),
|
|
||||||
(unsigned long *) addr,
|
|
||||||
kernel_unaligned_trap_fault);
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
panic("Impossible kernel unaligned trap.");
|
panic("Impossible kernel unaligned trap.");
|
||||||
/* Not reached... */
|
/* Not reached... */
|
||||||
|
@ -88,7 +88,6 @@ static void frob_mem_refresh(int cpu_slowing_down,
|
|||||||
{
|
{
|
||||||
unsigned long old_refr_count, refr_count, mctrl;
|
unsigned long old_refr_count, refr_count, mctrl;
|
||||||
|
|
||||||
|
|
||||||
refr_count = (clock_tick * MCTRL0_REFR_INTERVAL);
|
refr_count = (clock_tick * MCTRL0_REFR_INTERVAL);
|
||||||
refr_count /= (MCTRL0_REFR_CLKS_P_CNT * divisor * 1000000000UL);
|
refr_count /= (MCTRL0_REFR_CLKS_P_CNT * divisor * 1000000000UL);
|
||||||
|
|
||||||
@ -230,6 +229,25 @@ static unsigned long estar_to_divisor(unsigned long estar)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned int us2e_freq_get(unsigned int cpu)
|
||||||
|
{
|
||||||
|
cpumask_t cpus_allowed;
|
||||||
|
unsigned long clock_tick, estar;
|
||||||
|
|
||||||
|
if (!cpu_online(cpu))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
cpus_allowed = current->cpus_allowed;
|
||||||
|
set_cpus_allowed(current, cpumask_of_cpu(cpu));
|
||||||
|
|
||||||
|
clock_tick = sparc64_get_clock_tick(cpu) / 1000;
|
||||||
|
estar = read_hbreg(HBIRD_ESTAR_MODE_ADDR);
|
||||||
|
|
||||||
|
set_cpus_allowed(current, cpus_allowed);
|
||||||
|
|
||||||
|
return clock_tick / estar_to_divisor(estar);
|
||||||
|
}
|
||||||
|
|
||||||
static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index)
|
static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index)
|
||||||
{
|
{
|
||||||
unsigned long new_bits, new_freq;
|
unsigned long new_bits, new_freq;
|
||||||
@ -243,7 +261,7 @@ static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index)
|
|||||||
cpus_allowed = current->cpus_allowed;
|
cpus_allowed = current->cpus_allowed;
|
||||||
set_cpus_allowed(current, cpumask_of_cpu(cpu));
|
set_cpus_allowed(current, cpumask_of_cpu(cpu));
|
||||||
|
|
||||||
new_freq = clock_tick = sparc64_get_clock_tick(cpu);
|
new_freq = clock_tick = sparc64_get_clock_tick(cpu) / 1000;
|
||||||
new_bits = index_to_estar_mode(index);
|
new_bits = index_to_estar_mode(index);
|
||||||
divisor = index_to_divisor(index);
|
divisor = index_to_divisor(index);
|
||||||
new_freq /= divisor;
|
new_freq /= divisor;
|
||||||
@ -258,7 +276,8 @@ static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index)
|
|||||||
cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
|
cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
|
||||||
|
|
||||||
if (old_divisor != divisor)
|
if (old_divisor != divisor)
|
||||||
us2e_transition(estar, new_bits, clock_tick, old_divisor, divisor);
|
us2e_transition(estar, new_bits, clock_tick * 1000,
|
||||||
|
old_divisor, divisor);
|
||||||
|
|
||||||
cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
|
cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
|
||||||
|
|
||||||
@ -272,10 +291,8 @@ static int us2e_freq_target(struct cpufreq_policy *policy,
|
|||||||
unsigned int new_index = 0;
|
unsigned int new_index = 0;
|
||||||
|
|
||||||
if (cpufreq_frequency_table_target(policy,
|
if (cpufreq_frequency_table_target(policy,
|
||||||
&us2e_freq_table[policy->cpu].table[0],
|
&us2e_freq_table[policy->cpu].table[0],
|
||||||
target_freq,
|
target_freq, relation, &new_index))
|
||||||
relation,
|
|
||||||
&new_index))
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
us2e_set_cpu_divider_index(policy->cpu, new_index);
|
us2e_set_cpu_divider_index(policy->cpu, new_index);
|
||||||
@ -292,7 +309,7 @@ static int us2e_freq_verify(struct cpufreq_policy *policy)
|
|||||||
static int __init us2e_freq_cpu_init(struct cpufreq_policy *policy)
|
static int __init us2e_freq_cpu_init(struct cpufreq_policy *policy)
|
||||||
{
|
{
|
||||||
unsigned int cpu = policy->cpu;
|
unsigned int cpu = policy->cpu;
|
||||||
unsigned long clock_tick = sparc64_get_clock_tick(cpu);
|
unsigned long clock_tick = sparc64_get_clock_tick(cpu) / 1000;
|
||||||
struct cpufreq_frequency_table *table =
|
struct cpufreq_frequency_table *table =
|
||||||
&us2e_freq_table[cpu].table[0];
|
&us2e_freq_table[cpu].table[0];
|
||||||
|
|
||||||
@ -351,9 +368,10 @@ static int __init us2e_freq_init(void)
|
|||||||
memset(us2e_freq_table, 0,
|
memset(us2e_freq_table, 0,
|
||||||
(NR_CPUS * sizeof(struct us2e_freq_percpu_info)));
|
(NR_CPUS * sizeof(struct us2e_freq_percpu_info)));
|
||||||
|
|
||||||
|
driver->init = us2e_freq_cpu_init;
|
||||||
driver->verify = us2e_freq_verify;
|
driver->verify = us2e_freq_verify;
|
||||||
driver->target = us2e_freq_target;
|
driver->target = us2e_freq_target;
|
||||||
driver->init = us2e_freq_cpu_init;
|
driver->get = us2e_freq_get;
|
||||||
driver->exit = us2e_freq_cpu_exit;
|
driver->exit = us2e_freq_cpu_exit;
|
||||||
driver->owner = THIS_MODULE,
|
driver->owner = THIS_MODULE,
|
||||||
strcpy(driver->name, "UltraSPARC-IIe");
|
strcpy(driver->name, "UltraSPARC-IIe");
|
||||||
|
@ -56,7 +56,7 @@ static void write_safari_cfg(unsigned long val)
|
|||||||
|
|
||||||
static unsigned long get_current_freq(unsigned int cpu, unsigned long safari_cfg)
|
static unsigned long get_current_freq(unsigned int cpu, unsigned long safari_cfg)
|
||||||
{
|
{
|
||||||
unsigned long clock_tick = sparc64_get_clock_tick(cpu);
|
unsigned long clock_tick = sparc64_get_clock_tick(cpu) / 1000;
|
||||||
unsigned long ret;
|
unsigned long ret;
|
||||||
|
|
||||||
switch (safari_cfg & SAFARI_CFG_DIV_MASK) {
|
switch (safari_cfg & SAFARI_CFG_DIV_MASK) {
|
||||||
@ -76,6 +76,26 @@ static unsigned long get_current_freq(unsigned int cpu, unsigned long safari_cfg
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned int us3_freq_get(unsigned int cpu)
|
||||||
|
{
|
||||||
|
cpumask_t cpus_allowed;
|
||||||
|
unsigned long reg;
|
||||||
|
unsigned int ret;
|
||||||
|
|
||||||
|
if (!cpu_online(cpu))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
cpus_allowed = current->cpus_allowed;
|
||||||
|
set_cpus_allowed(current, cpumask_of_cpu(cpu));
|
||||||
|
|
||||||
|
reg = read_safari_cfg();
|
||||||
|
ret = get_current_freq(cpu, reg);
|
||||||
|
|
||||||
|
set_cpus_allowed(current, cpus_allowed);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static void us3_set_cpu_divider_index(unsigned int cpu, unsigned int index)
|
static void us3_set_cpu_divider_index(unsigned int cpu, unsigned int index)
|
||||||
{
|
{
|
||||||
unsigned long new_bits, new_freq, reg;
|
unsigned long new_bits, new_freq, reg;
|
||||||
@ -88,7 +108,7 @@ static void us3_set_cpu_divider_index(unsigned int cpu, unsigned int index)
|
|||||||
cpus_allowed = current->cpus_allowed;
|
cpus_allowed = current->cpus_allowed;
|
||||||
set_cpus_allowed(current, cpumask_of_cpu(cpu));
|
set_cpus_allowed(current, cpumask_of_cpu(cpu));
|
||||||
|
|
||||||
new_freq = sparc64_get_clock_tick(cpu);
|
new_freq = sparc64_get_clock_tick(cpu) / 1000;
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0:
|
case 0:
|
||||||
new_bits = SAFARI_CFG_DIV_1;
|
new_bits = SAFARI_CFG_DIV_1;
|
||||||
@ -150,7 +170,7 @@ static int us3_freq_verify(struct cpufreq_policy *policy)
|
|||||||
static int __init us3_freq_cpu_init(struct cpufreq_policy *policy)
|
static int __init us3_freq_cpu_init(struct cpufreq_policy *policy)
|
||||||
{
|
{
|
||||||
unsigned int cpu = policy->cpu;
|
unsigned int cpu = policy->cpu;
|
||||||
unsigned long clock_tick = sparc64_get_clock_tick(cpu);
|
unsigned long clock_tick = sparc64_get_clock_tick(cpu) / 1000;
|
||||||
struct cpufreq_frequency_table *table =
|
struct cpufreq_frequency_table *table =
|
||||||
&us3_freq_table[cpu].table[0];
|
&us3_freq_table[cpu].table[0];
|
||||||
|
|
||||||
@ -206,9 +226,10 @@ static int __init us3_freq_init(void)
|
|||||||
memset(us3_freq_table, 0,
|
memset(us3_freq_table, 0,
|
||||||
(NR_CPUS * sizeof(struct us3_freq_percpu_info)));
|
(NR_CPUS * sizeof(struct us3_freq_percpu_info)));
|
||||||
|
|
||||||
|
driver->init = us3_freq_cpu_init;
|
||||||
driver->verify = us3_freq_verify;
|
driver->verify = us3_freq_verify;
|
||||||
driver->target = us3_freq_target;
|
driver->target = us3_freq_target;
|
||||||
driver->init = us3_freq_cpu_init;
|
driver->get = us3_freq_get;
|
||||||
driver->exit = us3_freq_cpu_exit;
|
driver->exit = us3_freq_cpu_exit;
|
||||||
driver->owner = THIS_MODULE,
|
driver->owner = THIS_MODULE,
|
||||||
strcpy(driver->name, "UltraSPARC-III");
|
strcpy(driver->name, "UltraSPARC-III");
|
||||||
|
@ -61,7 +61,11 @@ void wait_stub_done(int pid, int sig, char * fname)
|
|||||||
|
|
||||||
CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED));
|
CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED));
|
||||||
} while((n >= 0) && WIFSTOPPED(status) &&
|
} while((n >= 0) && WIFSTOPPED(status) &&
|
||||||
(WSTOPSIG(status) == SIGVTALRM));
|
((WSTOPSIG(status) == SIGVTALRM) ||
|
||||||
|
/* running UML inside a detached screen can cause
|
||||||
|
* SIGWINCHes
|
||||||
|
*/
|
||||||
|
(WSTOPSIG(status) == SIGWINCH)));
|
||||||
|
|
||||||
if((n < 0) || !WIFSTOPPED(status) ||
|
if((n < 0) || !WIFSTOPPED(status) ||
|
||||||
(WSTOPSIG(status) != SIGUSR1 && WSTOPSIG(status) != SIGTRAP)){
|
(WSTOPSIG(status) != SIGUSR1 && WSTOPSIG(status) != SIGTRAP)){
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <elf.h>
|
#include <elf.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <asm/elf.h>
|
|
||||||
#include "init.h"
|
#include "init.h"
|
||||||
#include "elf_user.h"
|
#include "elf_user.h"
|
||||||
#include "mem_user.h"
|
#include "mem_user.h"
|
||||||
|
@ -492,6 +492,14 @@ void __cpuinit start_secondary(void)
|
|||||||
*/
|
*/
|
||||||
set_cpu_sibling_map(smp_processor_id());
|
set_cpu_sibling_map(smp_processor_id());
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wait for TSC sync to not schedule things before.
|
||||||
|
* We still process interrupts, which could see an inconsistent
|
||||||
|
* time in that window unfortunately.
|
||||||
|
* Do this here because TSC sync has global unprotected state.
|
||||||
|
*/
|
||||||
|
tsc_sync_wait();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We need to hold call_lock, so there is no inconsistency
|
* We need to hold call_lock, so there is no inconsistency
|
||||||
* between the time smp_call_function() determines number of
|
* between the time smp_call_function() determines number of
|
||||||
@ -509,13 +517,6 @@ void __cpuinit start_secondary(void)
|
|||||||
per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;
|
per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;
|
||||||
unlock_ipi_call_lock();
|
unlock_ipi_call_lock();
|
||||||
|
|
||||||
mb();
|
|
||||||
|
|
||||||
/* Wait for TSC sync to not schedule things before.
|
|
||||||
We still process interrupts, which could see an inconsistent
|
|
||||||
time in that window unfortunately. */
|
|
||||||
tsc_sync_wait();
|
|
||||||
|
|
||||||
cpu_idle();
|
cpu_idle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,9 +211,7 @@ int unhandled_signal(struct task_struct *tsk, int sig)
|
|||||||
{
|
{
|
||||||
if (tsk->pid == 1)
|
if (tsk->pid == 1)
|
||||||
return 1;
|
return 1;
|
||||||
/* Warn for strace, but not for gdb */
|
if (tsk->ptrace & PT_PTRACED)
|
||||||
if (!test_ti_thread_flag(tsk->thread_info, TIF_SYSCALL_TRACE) &&
|
|
||||||
(tsk->ptrace & PT_PTRACED))
|
|
||||||
return 0;
|
return 0;
|
||||||
return (tsk->sighand->action[sig-1].sa.sa_handler == SIG_IGN) ||
|
return (tsk->sighand->action[sig-1].sa.sa_handler == SIG_IGN) ||
|
||||||
(tsk->sighand->action[sig-1].sa.sa_handler == SIG_DFL);
|
(tsk->sighand->action[sig-1].sa.sa_handler == SIG_DFL);
|
||||||
|
@ -180,7 +180,9 @@ static ssize_t driver_bind(struct device_driver *drv,
|
|||||||
up(&dev->sem);
|
up(&dev->sem);
|
||||||
put_device(dev);
|
put_device(dev);
|
||||||
}
|
}
|
||||||
return err;
|
if (err)
|
||||||
|
return err;
|
||||||
|
return count;
|
||||||
}
|
}
|
||||||
static DRIVER_ATTR(bind, S_IWUSR, NULL, driver_bind);
|
static DRIVER_ATTR(bind, S_IWUSR, NULL, driver_bind);
|
||||||
|
|
||||||
|
@ -299,6 +299,11 @@ static void class_dev_release(struct kobject * kobj)
|
|||||||
|
|
||||||
pr_debug("device class '%s': release.\n", cd->class_id);
|
pr_debug("device class '%s': release.\n", cd->class_id);
|
||||||
|
|
||||||
|
if (cd->devt_attr) {
|
||||||
|
kfree(cd->devt_attr);
|
||||||
|
cd->devt_attr = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (cls->release)
|
if (cls->release)
|
||||||
cls->release(cd);
|
cls->release(cd);
|
||||||
else {
|
else {
|
||||||
@ -591,11 +596,8 @@ void class_device_del(struct class_device *class_dev)
|
|||||||
|
|
||||||
if (class_dev->dev)
|
if (class_dev->dev)
|
||||||
sysfs_remove_link(&class_dev->kobj, "device");
|
sysfs_remove_link(&class_dev->kobj, "device");
|
||||||
if (class_dev->devt_attr) {
|
if (class_dev->devt_attr)
|
||||||
class_device_remove_file(class_dev, class_dev->devt_attr);
|
class_device_remove_file(class_dev, class_dev->devt_attr);
|
||||||
kfree(class_dev->devt_attr);
|
|
||||||
class_dev->devt_attr = NULL;
|
|
||||||
}
|
|
||||||
class_device_remove_attrs(class_dev);
|
class_device_remove_attrs(class_dev);
|
||||||
|
|
||||||
kobject_hotplug(&class_dev->kobj, KOBJ_REMOVE);
|
kobject_hotplug(&class_dev->kobj, KOBJ_REMOVE);
|
||||||
|
@ -764,6 +764,7 @@ config BLK_DEV_IDE_PMAC_ATA100FIRST
|
|||||||
config BLK_DEV_IDEDMA_PMAC
|
config BLK_DEV_IDEDMA_PMAC
|
||||||
bool "PowerMac IDE DMA support"
|
bool "PowerMac IDE DMA support"
|
||||||
depends on BLK_DEV_IDE_PMAC
|
depends on BLK_DEV_IDE_PMAC
|
||||||
|
select BLK_DEV_IDEDMA_PCI
|
||||||
help
|
help
|
||||||
This option allows the driver for the built-in IDE controller on
|
This option allows the driver for the built-in IDE controller on
|
||||||
Power Macintoshes and PowerBooks to use DMA (direct memory access)
|
Power Macintoshes and PowerBooks to use DMA (direct memory access)
|
||||||
|
@ -317,7 +317,7 @@ typedef struct ide_floppy_obj {
|
|||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
} idefloppy_floppy_t;
|
} idefloppy_floppy_t;
|
||||||
|
|
||||||
#define IDEFLOPPY_TICKS_DELAY 3 /* default delay for ZIP 100 */
|
#define IDEFLOPPY_TICKS_DELAY HZ/20 /* default delay for ZIP 100 (50ms) */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Floppy flag bits values.
|
* Floppy flag bits values.
|
||||||
|
@ -173,6 +173,12 @@ static ide_pci_device_t generic_chipsets[] __devinitdata = {
|
|||||||
.channels = 2,
|
.channels = 2,
|
||||||
.autodma = NOAUTODMA,
|
.autodma = NOAUTODMA,
|
||||||
.bootable = ON_BOARD,
|
.bootable = ON_BOARD,
|
||||||
|
},{ /* 14 */
|
||||||
|
.name = "Revolution",
|
||||||
|
.init_hwif = init_hwif_generic,
|
||||||
|
.channels = 2,
|
||||||
|
.autodma = AUTODMA,
|
||||||
|
.bootable = OFF_BOARD,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -231,6 +237,7 @@ static struct pci_device_id generic_pci_tbl[] = {
|
|||||||
{ PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 11},
|
{ PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 11},
|
||||||
{ PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 12},
|
{ PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 12},
|
||||||
{ PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 13},
|
{ PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 13},
|
||||||
|
{ PCI_VENDOR_ID_NETCELL,PCI_DEVICE_ID_REVOLUTION, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 14},
|
||||||
/* Must come last. If you add entries adjust this table appropriately and the init_one code */
|
/* Must come last. If you add entries adjust this table appropriately and the init_one code */
|
||||||
{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE << 8, 0xFFFFFF00UL, 0},
|
{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE << 8, 0xFFFFFF00UL, 0},
|
||||||
{ 0, },
|
{ 0, },
|
||||||
|
@ -21,6 +21,9 @@
|
|||||||
*
|
*
|
||||||
* CSB6: `Champion South Bridge' IDE Interface (optional: third channel)
|
* CSB6: `Champion South Bridge' IDE Interface (optional: third channel)
|
||||||
*
|
*
|
||||||
|
* HT1000: AKA BCM5785 - Hypertransport Southbridge for Opteron systems. IDE
|
||||||
|
* controller same as the CSB6. Single channel ATA100 only.
|
||||||
|
*
|
||||||
* Documentation:
|
* Documentation:
|
||||||
* Available under NDA only. Errata info very hard to get.
|
* Available under NDA only. Errata info very hard to get.
|
||||||
*
|
*
|
||||||
@ -71,6 +74,8 @@ static u8 svwks_ratemask (ide_drive_t *drive)
|
|||||||
if (!svwks_revision)
|
if (!svwks_revision)
|
||||||
pci_read_config_byte(dev, PCI_REVISION_ID, &svwks_revision);
|
pci_read_config_byte(dev, PCI_REVISION_ID, &svwks_revision);
|
||||||
|
|
||||||
|
if (dev->device == PCI_DEVICE_ID_SERVERWORKS_HT1000IDE)
|
||||||
|
return 2;
|
||||||
if (dev->device == PCI_DEVICE_ID_SERVERWORKS_OSB4IDE) {
|
if (dev->device == PCI_DEVICE_ID_SERVERWORKS_OSB4IDE) {
|
||||||
u32 reg = 0;
|
u32 reg = 0;
|
||||||
if (isa_dev)
|
if (isa_dev)
|
||||||
@ -109,6 +114,7 @@ static u8 svwks_csb_check (struct pci_dev *dev)
|
|||||||
case PCI_DEVICE_ID_SERVERWORKS_CSB5IDE:
|
case PCI_DEVICE_ID_SERVERWORKS_CSB5IDE:
|
||||||
case PCI_DEVICE_ID_SERVERWORKS_CSB6IDE:
|
case PCI_DEVICE_ID_SERVERWORKS_CSB6IDE:
|
||||||
case PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2:
|
case PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2:
|
||||||
|
case PCI_DEVICE_ID_SERVERWORKS_HT1000IDE:
|
||||||
return 1;
|
return 1;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -438,6 +444,13 @@ static unsigned int __devinit init_chipset_svwks (struct pci_dev *dev, const cha
|
|||||||
btr |= (svwks_revision >= SVWKS_CSB5_REVISION_NEW) ? 0x3 : 0x2;
|
btr |= (svwks_revision >= SVWKS_CSB5_REVISION_NEW) ? 0x3 : 0x2;
|
||||||
pci_write_config_byte(dev, 0x5A, btr);
|
pci_write_config_byte(dev, 0x5A, btr);
|
||||||
}
|
}
|
||||||
|
/* Setup HT1000 SouthBridge Controller - Single Channel Only */
|
||||||
|
else if (dev->device == PCI_DEVICE_ID_SERVERWORKS_HT1000IDE) {
|
||||||
|
pci_read_config_byte(dev, 0x5A, &btr);
|
||||||
|
btr &= ~0x40;
|
||||||
|
btr |= 0x3;
|
||||||
|
pci_write_config_byte(dev, 0x5A, btr);
|
||||||
|
}
|
||||||
|
|
||||||
return (dev->irq) ? dev->irq : 0;
|
return (dev->irq) ? dev->irq : 0;
|
||||||
}
|
}
|
||||||
@ -629,6 +642,15 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = {
|
|||||||
.channels = 1, /* 2 */
|
.channels = 1, /* 2 */
|
||||||
.autodma = AUTODMA,
|
.autodma = AUTODMA,
|
||||||
.bootable = ON_BOARD,
|
.bootable = ON_BOARD,
|
||||||
|
},{ /* 4 */
|
||||||
|
.name = "SvrWks HT1000",
|
||||||
|
.init_setup = init_setup_svwks,
|
||||||
|
.init_chipset = init_chipset_svwks,
|
||||||
|
.init_hwif = init_hwif_svwks,
|
||||||
|
.init_dma = init_dma_svwks,
|
||||||
|
.channels = 1, /* 2 */
|
||||||
|
.autodma = AUTODMA,
|
||||||
|
.bootable = ON_BOARD,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -653,6 +675,7 @@ static struct pci_device_id svwks_pci_tbl[] = {
|
|||||||
{ PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
|
{ PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
|
||||||
{ PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
|
{ PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
|
||||||
{ PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3},
|
{ PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3},
|
||||||
|
{ PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4},
|
||||||
{ 0, },
|
{ 0, },
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(pci, svwks_pci_tbl);
|
MODULE_DEVICE_TABLE(pci, svwks_pci_tbl);
|
||||||
|
@ -1664,7 +1664,7 @@ static struct macio_driver pmac_ide_macio_driver =
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct pci_device_id pmac_ide_pci_match[] = {
|
static struct pci_device_id pmac_ide_pci_match[] = {
|
||||||
{ PCI_VENDOR_ID_APPLE, PCI_DEVIEC_ID_APPLE_UNI_N_ATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_UNI_N_ATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
||||||
{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_IPID_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_IPID_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
||||||
{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_K2_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_K2_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
||||||
{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_SH_ATA,
|
{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_SH_ATA,
|
||||||
|
@ -229,6 +229,7 @@ second_chance_to_dma:
|
|||||||
case PCI_DEVICE_ID_AMD_VIPER_7409:
|
case PCI_DEVICE_ID_AMD_VIPER_7409:
|
||||||
case PCI_DEVICE_ID_CMD_643:
|
case PCI_DEVICE_ID_CMD_643:
|
||||||
case PCI_DEVICE_ID_SERVERWORKS_CSB5IDE:
|
case PCI_DEVICE_ID_SERVERWORKS_CSB5IDE:
|
||||||
|
case PCI_DEVICE_ID_REVOLUTION:
|
||||||
simplex_stat = hwif->INB(dma_base + 2);
|
simplex_stat = hwif->INB(dma_base + 2);
|
||||||
hwif->OUTB((simplex_stat&0x60),(dma_base + 2));
|
hwif->OUTB((simplex_stat&0x60),(dma_base + 2));
|
||||||
simplex_stat = hwif->INB(dma_base + 2);
|
simplex_stat = hwif->INB(dma_base + 2);
|
||||||
|
@ -256,8 +256,7 @@ static inline void mddev_unlock(mddev_t * mddev)
|
|||||||
{
|
{
|
||||||
up(&mddev->reconfig_sem);
|
up(&mddev->reconfig_sem);
|
||||||
|
|
||||||
if (mddev->thread)
|
md_wakeup_thread(mddev->thread);
|
||||||
md_wakeup_thread(mddev->thread);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mdk_rdev_t * find_rdev_nr(mddev_t *mddev, int nr)
|
mdk_rdev_t * find_rdev_nr(mddev_t *mddev, int nr)
|
||||||
@ -623,6 +622,7 @@ static int super_90_validate(mddev_t *mddev, mdk_rdev_t *rdev)
|
|||||||
mddev->raid_disks = sb->raid_disks;
|
mddev->raid_disks = sb->raid_disks;
|
||||||
mddev->size = sb->size;
|
mddev->size = sb->size;
|
||||||
mddev->events = md_event(sb);
|
mddev->events = md_event(sb);
|
||||||
|
mddev->bitmap_offset = 0;
|
||||||
|
|
||||||
if (sb->state & (1<<MD_SB_CLEAN))
|
if (sb->state & (1<<MD_SB_CLEAN))
|
||||||
mddev->recovery_cp = MaxSector;
|
mddev->recovery_cp = MaxSector;
|
||||||
@ -938,6 +938,7 @@ static int super_1_validate(mddev_t *mddev, mdk_rdev_t *rdev)
|
|||||||
mddev->raid_disks = le32_to_cpu(sb->raid_disks);
|
mddev->raid_disks = le32_to_cpu(sb->raid_disks);
|
||||||
mddev->size = le64_to_cpu(sb->size)/2;
|
mddev->size = le64_to_cpu(sb->size)/2;
|
||||||
mddev->events = le64_to_cpu(sb->events);
|
mddev->events = le64_to_cpu(sb->events);
|
||||||
|
mddev->bitmap_offset = 0;
|
||||||
|
|
||||||
mddev->recovery_cp = le64_to_cpu(sb->resync_offset);
|
mddev->recovery_cp = le64_to_cpu(sb->resync_offset);
|
||||||
memcpy(mddev->uuid, sb->set_uuid, 16);
|
memcpy(mddev->uuid, sb->set_uuid, 16);
|
||||||
@ -1712,6 +1713,7 @@ static int do_md_run(mddev_t * mddev)
|
|||||||
mddev->in_sync = 1;
|
mddev->in_sync = 1;
|
||||||
|
|
||||||
set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
|
set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
|
||||||
|
md_wakeup_thread(mddev->thread);
|
||||||
|
|
||||||
if (mddev->sb_dirty)
|
if (mddev->sb_dirty)
|
||||||
md_update_sb(mddev);
|
md_update_sb(mddev);
|
||||||
@ -1824,6 +1826,7 @@ static int do_md_stop(mddev_t * mddev, int ro)
|
|||||||
fput(mddev->bitmap_file);
|
fput(mddev->bitmap_file);
|
||||||
mddev->bitmap_file = NULL;
|
mddev->bitmap_file = NULL;
|
||||||
}
|
}
|
||||||
|
mddev->bitmap_offset = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Free resources if final stop
|
* Free resources if final stop
|
||||||
@ -2233,8 +2236,7 @@ static int add_new_disk(mddev_t * mddev, mdu_disk_info_t *info)
|
|||||||
export_rdev(rdev);
|
export_rdev(rdev);
|
||||||
|
|
||||||
set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
|
set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
|
||||||
if (mddev->thread)
|
md_wakeup_thread(mddev->thread);
|
||||||
md_wakeup_thread(mddev->thread);
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1897,6 +1897,7 @@ static int cp_resume (struct pci_dev *pdev)
|
|||||||
{
|
{
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
struct cp_private *cp;
|
struct cp_private *cp;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
dev = pci_get_drvdata (pdev);
|
dev = pci_get_drvdata (pdev);
|
||||||
cp = netdev_priv(dev);
|
cp = netdev_priv(dev);
|
||||||
@ -1910,6 +1911,12 @@ static int cp_resume (struct pci_dev *pdev)
|
|||||||
|
|
||||||
cp_init_hw (cp);
|
cp_init_hw (cp);
|
||||||
netif_start_queue (dev);
|
netif_start_queue (dev);
|
||||||
|
|
||||||
|
spin_lock_irqsave (&cp->lock, flags);
|
||||||
|
|
||||||
|
mii_check_media(&cp->mii_if, netif_msg_link(cp), FALSE);
|
||||||
|
|
||||||
|
spin_unlock_irqrestore (&cp->lock, flags);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,10 @@
|
|||||||
* net_device_stats
|
* net_device_stats
|
||||||
* * introduced tx_timeout function
|
* * introduced tx_timeout function
|
||||||
* * reworked locking
|
* * reworked locking
|
||||||
|
*
|
||||||
|
* 01-Jul-2005 Ben Dooks <ben@simtec.co.uk>
|
||||||
|
* * fixed spinlock call without pointer
|
||||||
|
* * ensure spinlock is initialised
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
@ -148,7 +152,6 @@ static int dm9000_probe(struct device *);
|
|||||||
static int dm9000_open(struct net_device *);
|
static int dm9000_open(struct net_device *);
|
||||||
static int dm9000_start_xmit(struct sk_buff *, struct net_device *);
|
static int dm9000_start_xmit(struct sk_buff *, struct net_device *);
|
||||||
static int dm9000_stop(struct net_device *);
|
static int dm9000_stop(struct net_device *);
|
||||||
static int dm9000_do_ioctl(struct net_device *, struct ifreq *, int);
|
|
||||||
|
|
||||||
|
|
||||||
static void dm9000_timer(unsigned long);
|
static void dm9000_timer(unsigned long);
|
||||||
@ -322,7 +325,7 @@ static void dm9000_timeout(struct net_device *dev)
|
|||||||
|
|
||||||
/* Save previous register address */
|
/* Save previous register address */
|
||||||
reg_save = readb(db->io_addr);
|
reg_save = readb(db->io_addr);
|
||||||
spin_lock_irqsave(db->lock,flags);
|
spin_lock_irqsave(&db->lock,flags);
|
||||||
|
|
||||||
netif_stop_queue(dev);
|
netif_stop_queue(dev);
|
||||||
dm9000_reset(db);
|
dm9000_reset(db);
|
||||||
@ -333,7 +336,7 @@ static void dm9000_timeout(struct net_device *dev)
|
|||||||
|
|
||||||
/* Restore previous register address */
|
/* Restore previous register address */
|
||||||
writeb(reg_save, db->io_addr);
|
writeb(reg_save, db->io_addr);
|
||||||
spin_unlock_irqrestore(db->lock,flags);
|
spin_unlock_irqrestore(&db->lock,flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -387,8 +390,6 @@ dm9000_probe(struct device *dev)
|
|||||||
int i;
|
int i;
|
||||||
u32 id_val;
|
u32 id_val;
|
||||||
|
|
||||||
printk(KERN_INFO "%s Ethernet Driver\n", CARDNAME);
|
|
||||||
|
|
||||||
/* Init network device */
|
/* Init network device */
|
||||||
ndev = alloc_etherdev(sizeof (struct board_info));
|
ndev = alloc_etherdev(sizeof (struct board_info));
|
||||||
if (!ndev) {
|
if (!ndev) {
|
||||||
@ -405,6 +406,8 @@ dm9000_probe(struct device *dev)
|
|||||||
db = (struct board_info *) ndev->priv;
|
db = (struct board_info *) ndev->priv;
|
||||||
memset(db, 0, sizeof (*db));
|
memset(db, 0, sizeof (*db));
|
||||||
|
|
||||||
|
spin_lock_init(&db->lock);
|
||||||
|
|
||||||
if (pdev->num_resources < 2) {
|
if (pdev->num_resources < 2) {
|
||||||
ret = -ENODEV;
|
ret = -ENODEV;
|
||||||
goto out;
|
goto out;
|
||||||
@ -541,7 +544,6 @@ dm9000_probe(struct device *dev)
|
|||||||
ndev->stop = &dm9000_stop;
|
ndev->stop = &dm9000_stop;
|
||||||
ndev->get_stats = &dm9000_get_stats;
|
ndev->get_stats = &dm9000_get_stats;
|
||||||
ndev->set_multicast_list = &dm9000_hash_table;
|
ndev->set_multicast_list = &dm9000_hash_table;
|
||||||
ndev->do_ioctl = &dm9000_do_ioctl;
|
|
||||||
|
|
||||||
#ifdef DM9000_PROGRAM_EEPROM
|
#ifdef DM9000_PROGRAM_EEPROM
|
||||||
program_eeprom(db);
|
program_eeprom(db);
|
||||||
@ -612,7 +614,7 @@ dm9000_open(struct net_device *dev)
|
|||||||
|
|
||||||
/* set and active a timer process */
|
/* set and active a timer process */
|
||||||
init_timer(&db->timer);
|
init_timer(&db->timer);
|
||||||
db->timer.expires = DM9000_TIMER_WUT * 2;
|
db->timer.expires = DM9000_TIMER_WUT;
|
||||||
db->timer.data = (unsigned long) dev;
|
db->timer.data = (unsigned long) dev;
|
||||||
db->timer.function = &dm9000_timer;
|
db->timer.function = &dm9000_timer;
|
||||||
add_timer(&db->timer);
|
add_timer(&db->timer);
|
||||||
@ -845,15 +847,6 @@ dm9000_get_stats(struct net_device *dev)
|
|||||||
return &db->stats;
|
return &db->stats;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Process the upper socket ioctl command
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
dm9000_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
|
||||||
{
|
|
||||||
PRINTK1("entering %s\n",__FUNCTION__);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A periodic timer routine
|
* A periodic timer routine
|
||||||
@ -864,21 +857,11 @@ dm9000_timer(unsigned long data)
|
|||||||
{
|
{
|
||||||
struct net_device *dev = (struct net_device *) data;
|
struct net_device *dev = (struct net_device *) data;
|
||||||
board_info_t *db = (board_info_t *) dev->priv;
|
board_info_t *db = (board_info_t *) dev->priv;
|
||||||
u8 reg_save;
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
PRINTK3("dm9000_timer()\n");
|
PRINTK3("dm9000_timer()\n");
|
||||||
|
|
||||||
spin_lock_irqsave(db->lock,flags);
|
|
||||||
/* Save previous register address */
|
|
||||||
reg_save = readb(db->io_addr);
|
|
||||||
|
|
||||||
mii_check_media(&db->mii, netif_msg_link(db), 0);
|
mii_check_media(&db->mii, netif_msg_link(db), 0);
|
||||||
|
|
||||||
/* Restore previous register address */
|
|
||||||
writeb(reg_save, db->io_addr);
|
|
||||||
spin_unlock_irqrestore(db->lock,flags);
|
|
||||||
|
|
||||||
/* Set timer again */
|
/* Set timer again */
|
||||||
db->timer.expires = DM9000_TIMER_WUT;
|
db->timer.expires = DM9000_TIMER_WUT;
|
||||||
add_timer(&db->timer);
|
add_timer(&db->timer);
|
||||||
@ -1098,9 +1081,14 @@ dm9000_phy_read(struct net_device *dev, int phy_reg_unused, int reg)
|
|||||||
{
|
{
|
||||||
board_info_t *db = (board_info_t *) dev->priv;
|
board_info_t *db = (board_info_t *) dev->priv;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
unsigned int reg_save;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
spin_lock_irqsave(&db->lock,flags);
|
spin_lock_irqsave(&db->lock,flags);
|
||||||
|
|
||||||
|
/* Save previous register address */
|
||||||
|
reg_save = readb(db->io_addr);
|
||||||
|
|
||||||
/* Fill the phyxcer register into REG_0C */
|
/* Fill the phyxcer register into REG_0C */
|
||||||
iow(db, DM9000_EPAR, DM9000_PHY | reg);
|
iow(db, DM9000_EPAR, DM9000_PHY | reg);
|
||||||
|
|
||||||
@ -1111,6 +1099,9 @@ dm9000_phy_read(struct net_device *dev, int phy_reg_unused, int reg)
|
|||||||
/* The read data keeps on REG_0D & REG_0E */
|
/* The read data keeps on REG_0D & REG_0E */
|
||||||
ret = (ior(db, DM9000_EPDRH) << 8) | ior(db, DM9000_EPDRL);
|
ret = (ior(db, DM9000_EPDRH) << 8) | ior(db, DM9000_EPDRL);
|
||||||
|
|
||||||
|
/* restore the previous address */
|
||||||
|
writeb(reg_save, db->io_addr);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&db->lock,flags);
|
spin_unlock_irqrestore(&db->lock,flags);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -1124,9 +1115,13 @@ dm9000_phy_write(struct net_device *dev, int phyaddr_unused, int reg, int value)
|
|||||||
{
|
{
|
||||||
board_info_t *db = (board_info_t *) dev->priv;
|
board_info_t *db = (board_info_t *) dev->priv;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
unsigned long reg_save;
|
||||||
|
|
||||||
spin_lock_irqsave(&db->lock,flags);
|
spin_lock_irqsave(&db->lock,flags);
|
||||||
|
|
||||||
|
/* Save previous register address */
|
||||||
|
reg_save = readb(db->io_addr);
|
||||||
|
|
||||||
/* Fill the phyxcer register into REG_0C */
|
/* Fill the phyxcer register into REG_0C */
|
||||||
iow(db, DM9000_EPAR, DM9000_PHY | reg);
|
iow(db, DM9000_EPAR, DM9000_PHY | reg);
|
||||||
|
|
||||||
@ -1138,6 +1133,9 @@ dm9000_phy_write(struct net_device *dev, int phyaddr_unused, int reg, int value)
|
|||||||
udelay(500); /* Wait write complete */
|
udelay(500); /* Wait write complete */
|
||||||
iow(db, DM9000_EPCR, 0x0); /* Clear phyxcer write command */
|
iow(db, DM9000_EPCR, 0x0); /* Clear phyxcer write command */
|
||||||
|
|
||||||
|
/* restore the previous address */
|
||||||
|
writeb(reg_save, db->io_addr);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&db->lock,flags);
|
spin_unlock_irqrestore(&db->lock,flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1202,6 +1200,8 @@ static struct device_driver dm9000_driver = {
|
|||||||
static int __init
|
static int __init
|
||||||
dm9000_init(void)
|
dm9000_init(void)
|
||||||
{
|
{
|
||||||
|
printk(KERN_INFO "%s Ethernet Driver\n", CARDNAME);
|
||||||
|
|
||||||
return driver_register(&dm9000_driver); /* search board and register */
|
return driver_register(&dm9000_driver); /* search board and register */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -499,7 +499,7 @@ static int ioc3_mdio_read(struct net_device *dev, int phy, int reg)
|
|||||||
ioc3_w_micr((phy << MICR_PHYADDR_SHIFT) | reg | MICR_READTRIG);
|
ioc3_w_micr((phy << MICR_PHYADDR_SHIFT) | reg | MICR_READTRIG);
|
||||||
while (ioc3_r_micr() & MICR_BUSY);
|
while (ioc3_r_micr() & MICR_BUSY);
|
||||||
|
|
||||||
return ioc3_r_micr() & MIDR_DATA_MASK;
|
return ioc3_r_midr_r() & MIDR_DATA_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ioc3_mdio_write(struct net_device *dev, int phy, int reg, int data)
|
static void ioc3_mdio_write(struct net_device *dev, int phy, int reg, int data)
|
||||||
@ -1291,7 +1291,6 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
dev->features = NETIF_F_IP_CSUM;
|
dev->features = NETIF_F_IP_CSUM;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ioc3_setup_duplex(ip);
|
|
||||||
sw_physid1 = ioc3_mdio_read(dev, ip->mii.phy_id, MII_PHYSID1);
|
sw_physid1 = ioc3_mdio_read(dev, ip->mii.phy_id, MII_PHYSID1);
|
||||||
sw_physid2 = ioc3_mdio_read(dev, ip->mii.phy_id, MII_PHYSID2);
|
sw_physid2 = ioc3_mdio_read(dev, ip->mii.phy_id, MII_PHYSID2);
|
||||||
|
|
||||||
@ -1300,6 +1299,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
goto out_stop;
|
goto out_stop;
|
||||||
|
|
||||||
mii_check_media(&ip->mii, 1, 1);
|
mii_check_media(&ip->mii, 1, 1);
|
||||||
|
ioc3_setup_duplex(ip);
|
||||||
|
|
||||||
vendor = (sw_physid1 << 12) | (sw_physid2 >> 4);
|
vendor = (sw_physid1 << 12) | (sw_physid2 >> 4);
|
||||||
model = (sw_physid2 >> 4) & 0x3f;
|
model = (sw_physid2 >> 4) & 0x3f;
|
||||||
@ -1524,7 +1524,7 @@ static void ioc3_get_drvinfo (struct net_device *dev,
|
|||||||
struct ethtool_drvinfo *info)
|
struct ethtool_drvinfo *info)
|
||||||
{
|
{
|
||||||
struct ioc3_private *ip = netdev_priv(dev);
|
struct ioc3_private *ip = netdev_priv(dev);
|
||||||
|
|
||||||
strcpy (info->driver, IOC3_NAME);
|
strcpy (info->driver, IOC3_NAME);
|
||||||
strcpy (info->version, IOC3_VERSION);
|
strcpy (info->version, IOC3_VERSION);
|
||||||
strcpy (info->bus_info, pci_name(ip->pdev));
|
strcpy (info->bus_info, pci_name(ip->pdev));
|
||||||
@ -1550,7 +1550,7 @@ static int ioc3_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
|
|||||||
spin_lock_irq(&ip->ioc3_lock);
|
spin_lock_irq(&ip->ioc3_lock);
|
||||||
rc = mii_ethtool_sset(&ip->mii, cmd);
|
rc = mii_ethtool_sset(&ip->mii, cmd);
|
||||||
spin_unlock_irq(&ip->ioc3_lock);
|
spin_unlock_irq(&ip->ioc3_lock);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ struct net_device loopback_dev = {
|
|||||||
.ethtool_ops = &loopback_ethtool_ops,
|
.ethtool_ops = &loopback_ethtool_ops,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Setup and register the of the LOOPBACK device. */
|
/* Setup and register the loopback device. */
|
||||||
int __init loopback_init(void)
|
int __init loopback_init(void)
|
||||||
{
|
{
|
||||||
struct net_device_stats *stats;
|
struct net_device_stats *stats;
|
||||||
|
@ -66,8 +66,8 @@
|
|||||||
|
|
||||||
#define DRV_MODULE_NAME "tg3"
|
#define DRV_MODULE_NAME "tg3"
|
||||||
#define PFX DRV_MODULE_NAME ": "
|
#define PFX DRV_MODULE_NAME ": "
|
||||||
#define DRV_MODULE_VERSION "3.35"
|
#define DRV_MODULE_VERSION "3.36"
|
||||||
#define DRV_MODULE_RELDATE "August 6, 2005"
|
#define DRV_MODULE_RELDATE "August 19, 2005"
|
||||||
|
|
||||||
#define TG3_DEF_MAC_MODE 0
|
#define TG3_DEF_MAC_MODE 0
|
||||||
#define TG3_DEF_RX_MODE 0
|
#define TG3_DEF_RX_MODE 0
|
||||||
@ -8970,6 +8970,8 @@ static int __devinit tg3_phy_probe(struct tg3 *tp)
|
|||||||
tp->phy_id = hw_phy_id;
|
tp->phy_id = hw_phy_id;
|
||||||
if (hw_phy_id_masked == PHY_ID_BCM8002)
|
if (hw_phy_id_masked == PHY_ID_BCM8002)
|
||||||
tp->tg3_flags2 |= TG3_FLG2_PHY_SERDES;
|
tp->tg3_flags2 |= TG3_FLG2_PHY_SERDES;
|
||||||
|
else
|
||||||
|
tp->tg3_flags2 &= ~TG3_FLG2_PHY_SERDES;
|
||||||
} else {
|
} else {
|
||||||
if (tp->phy_id != PHY_ID_INVALID) {
|
if (tp->phy_id != PHY_ID_INVALID) {
|
||||||
/* Do nothing, phy ID already set up in
|
/* Do nothing, phy ID already set up in
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifndef _PCIEHP_H
|
#ifndef _PCIEHP_H
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <dely.l.sy@intel.com>
|
* Send feedback to <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifndef _SHPCHP_H
|
#ifndef _SHPCHP_H
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <dely.l.sy@intel.com>
|
* Send feedback to <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -453,7 +453,7 @@ static void enable_msi_mode(struct pci_dev *dev, int pos, int type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void disable_msi_mode(struct pci_dev *dev, int pos, int type)
|
void disable_msi_mode(struct pci_dev *dev, int pos, int type)
|
||||||
{
|
{
|
||||||
u16 control;
|
u16 control;
|
||||||
|
|
||||||
@ -699,6 +699,9 @@ int pci_enable_msi(struct pci_dev* dev)
|
|||||||
if (!pci_msi_enable || !dev)
|
if (!pci_msi_enable || !dev)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
|
if (dev->no_msi)
|
||||||
|
return status;
|
||||||
|
|
||||||
temp = dev->irq;
|
temp = dev->irq;
|
||||||
|
|
||||||
if ((status = msi_init()) < 0)
|
if ((status = msi_init()) < 0)
|
||||||
|
@ -47,6 +47,12 @@ extern int pci_msi_quirk;
|
|||||||
#define pci_msi_quirk 0
|
#define pci_msi_quirk 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_PCI_MSI
|
||||||
|
void disable_msi_mode(struct pci_dev *dev, int pos, int type);
|
||||||
|
#else
|
||||||
|
static inline void disable_msi_mode(struct pci_dev *dev, int pos, int type) { }
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int pcie_mch_quirk;
|
extern int pcie_mch_quirk;
|
||||||
extern struct device_attribute pci_dev_attrs[];
|
extern struct device_attribute pci_dev_attrs[];
|
||||||
extern struct class_device_attribute class_device_attr_cpuaffinity;
|
extern struct class_device_attribute class_device_attr_cpuaffinity;
|
||||||
|
@ -1291,6 +1291,27 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7520_MCH, quir
|
|||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7320_MCH, quirk_pcie_mch );
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7320_MCH, quirk_pcie_mch );
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7525_MCH, quirk_pcie_mch );
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7525_MCH, quirk_pcie_mch );
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* It's possible for the MSI to get corrupted if shpc and acpi
|
||||||
|
* are used together on certain PXH-based systems.
|
||||||
|
*/
|
||||||
|
static void __devinit quirk_pcie_pxh(struct pci_dev *dev)
|
||||||
|
{
|
||||||
|
disable_msi_mode(dev, pci_find_capability(dev, PCI_CAP_ID_MSI),
|
||||||
|
PCI_CAP_ID_MSI);
|
||||||
|
dev->no_msi = 1;
|
||||||
|
|
||||||
|
printk(KERN_WARNING "PCI: PXH quirk detected, "
|
||||||
|
"disabling MSI for SHPC device\n");
|
||||||
|
}
|
||||||
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHD_0, quirk_pcie_pxh);
|
||||||
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHD_1, quirk_pcie_pxh);
|
||||||
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_0, quirk_pcie_pxh);
|
||||||
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_1, quirk_pcie_pxh);
|
||||||
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHV, quirk_pcie_pxh);
|
||||||
|
|
||||||
|
|
||||||
static void __devinit quirk_netmos(struct pci_dev *dev)
|
static void __devinit quirk_netmos(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;
|
unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;
|
||||||
|
@ -312,6 +312,8 @@ found:
|
|||||||
if (drv->link.driver.probe) {
|
if (drv->link.driver.probe) {
|
||||||
if (drv->link.driver.probe(&dev->dev)) {
|
if (drv->link.driver.probe(&dev->dev)) {
|
||||||
dev->dev.driver = NULL;
|
dev->dev.driver = NULL;
|
||||||
|
dev->card_link = NULL;
|
||||||
|
up_write(&dev->dev.bus->subsys.rwsem);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1093,6 +1093,7 @@ int __init sn_serial_console_early_setup(void)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
sal_console_port.sc_ops = &poll_ops;
|
sal_console_port.sc_ops = &poll_ops;
|
||||||
|
spin_lock_init(&sal_console_port.sc_port.lock);
|
||||||
early_sn_setup(); /* Find SAL entry points */
|
early_sn_setup(); /* Find SAL entry points */
|
||||||
register_console(&sal_console_early);
|
register_console(&sal_console_early);
|
||||||
|
|
||||||
|
@ -342,9 +342,6 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
|
|||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
x = le16_to_cpu(*(__le16 *) &data[2]);
|
|
||||||
y = le16_to_cpu(*(__le16 *) &data[4]);
|
|
||||||
|
|
||||||
input_regs(dev, regs);
|
input_regs(dev, regs);
|
||||||
|
|
||||||
if (data[1] & 0x10) { /* in prox */
|
if (data[1] & 0x10) { /* in prox */
|
||||||
@ -373,15 +370,17 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data[1] & 0x80) {
|
if (data[1] & 0x90) {
|
||||||
|
x = le16_to_cpu(*(__le16 *) &data[2]);
|
||||||
|
y = le16_to_cpu(*(__le16 *) &data[4]);
|
||||||
input_report_abs(dev, ABS_X, x);
|
input_report_abs(dev, ABS_X, x);
|
||||||
input_report_abs(dev, ABS_Y, y);
|
input_report_abs(dev, ABS_Y, y);
|
||||||
}
|
if (wacom->tool[0] != BTN_TOOL_MOUSE) {
|
||||||
if (wacom->tool[0] != BTN_TOOL_MOUSE) {
|
input_report_abs(dev, ABS_PRESSURE, le16_to_cpu(*(__le16 *) &data[6]));
|
||||||
input_report_abs(dev, ABS_PRESSURE, le16_to_cpu(*(__le16 *) &data[6]));
|
input_report_key(dev, BTN_TOUCH, data[1] & 0x01);
|
||||||
input_report_key(dev, BTN_TOUCH, data[1] & 0x01);
|
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
|
||||||
input_report_key(dev, BTN_STYLUS, data[1] & 0x02);
|
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
|
||||||
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
input_report_key(dev, wacom->tool[0], data[1] & 0x10);
|
input_report_key(dev, wacom->tool[0], data[1] & 0x10);
|
||||||
@ -568,7 +567,7 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs)
|
|||||||
|
|
||||||
/* Cintiq doesn't send data when RDY bit isn't set */
|
/* Cintiq doesn't send data when RDY bit isn't set */
|
||||||
if ((wacom->features->type == CINTIQ) && !(data[1] & 0x40))
|
if ((wacom->features->type == CINTIQ) && !(data[1] & 0x40))
|
||||||
return;
|
goto exit;
|
||||||
|
|
||||||
if (wacom->features->type >= INTUOS3) {
|
if (wacom->features->type >= INTUOS3) {
|
||||||
input_report_abs(dev, ABS_X, (data[2] << 9) | (data[3] << 1) | ((data[9] >> 1) & 1));
|
input_report_abs(dev, ABS_X, (data[2] << 9) | (data[3] << 1) | ((data[9] >> 1) & 1));
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
* The USB Monitor, inspired by Dave Harding's USBMon.
|
* The USB Monitor, inspired by Dave Harding's USBMon.
|
||||||
*
|
*
|
||||||
* mon_main.c: Main file, module initiation and exit, registrations, etc.
|
* mon_main.c: Main file, module initiation and exit, registrations, etc.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Pete Zaitcev (zaitcev@redhat.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
@ -311,7 +313,7 @@ static int __init mon_init(void)
|
|||||||
|
|
||||||
mondir = debugfs_create_dir("usbmon", NULL);
|
mondir = debugfs_create_dir("usbmon", NULL);
|
||||||
if (IS_ERR(mondir)) {
|
if (IS_ERR(mondir)) {
|
||||||
printk(KERN_NOTICE TAG ": debugs is not available\n");
|
printk(KERN_NOTICE TAG ": debugfs is not available\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
if (mondir == NULL) {
|
if (mondir == NULL) {
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* The USB Monitor, inspired by Dave Harding's USBMon.
|
* The USB Monitor, inspired by Dave Harding's USBMon.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Pete Zaitcev (zaitcev@redhat.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __USB_MON_H
|
#ifndef __USB_MON_H
|
||||||
|
@ -346,8 +346,7 @@ static void zd1201_usbrx(struct urb *urb, struct pt_regs *regs)
|
|||||||
if (datalen<14)
|
if (datalen<14)
|
||||||
goto resubmit;
|
goto resubmit;
|
||||||
if ((seq & IEEE802_11_SCTL_FRAG) == 0) {
|
if ((seq & IEEE802_11_SCTL_FRAG) == 0) {
|
||||||
frag = kmalloc(sizeof(struct zd1201_frag*),
|
frag = kmalloc(sizeof(*frag), GFP_ATOMIC);
|
||||||
GFP_ATOMIC);
|
|
||||||
if (!frag)
|
if (!frag)
|
||||||
goto resubmit;
|
goto resubmit;
|
||||||
skb = dev_alloc_skb(IEEE802_11_DATA_LEN +14+2);
|
skb = dev_alloc_skb(IEEE802_11_DATA_LEN +14+2);
|
||||||
|
@ -80,7 +80,7 @@
|
|||||||
#include <video/radeon.h>
|
#include <video/radeon.h>
|
||||||
#include <linux/radeonfb.h>
|
#include <linux/radeonfb.h>
|
||||||
|
|
||||||
#define DEBUG 1
|
#define DEBUG 0
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
#define RTRACE printk
|
#define RTRACE printk
|
||||||
|
@ -30,7 +30,7 @@ static struct dentry *afs_mntpt_lookup(struct inode *dir,
|
|||||||
struct dentry *dentry,
|
struct dentry *dentry,
|
||||||
struct nameidata *nd);
|
struct nameidata *nd);
|
||||||
static int afs_mntpt_open(struct inode *inode, struct file *file);
|
static int afs_mntpt_open(struct inode *inode, struct file *file);
|
||||||
static int afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd);
|
static void *afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd);
|
||||||
|
|
||||||
struct file_operations afs_mntpt_file_operations = {
|
struct file_operations afs_mntpt_file_operations = {
|
||||||
.open = afs_mntpt_open,
|
.open = afs_mntpt_open,
|
||||||
@ -233,7 +233,7 @@ static struct vfsmount *afs_mntpt_do_automount(struct dentry *mntpt)
|
|||||||
/*
|
/*
|
||||||
* follow a link from a mountpoint directory, thus causing it to be mounted
|
* follow a link from a mountpoint directory, thus causing it to be mounted
|
||||||
*/
|
*/
|
||||||
static int afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd)
|
static void *afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
{
|
{
|
||||||
struct vfsmount *newmnt;
|
struct vfsmount *newmnt;
|
||||||
struct dentry *old_dentry;
|
struct dentry *old_dentry;
|
||||||
@ -249,7 +249,7 @@ static int afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd)
|
|||||||
newmnt = afs_mntpt_do_automount(dentry);
|
newmnt = afs_mntpt_do_automount(dentry);
|
||||||
if (IS_ERR(newmnt)) {
|
if (IS_ERR(newmnt)) {
|
||||||
path_release(nd);
|
path_release(nd);
|
||||||
return PTR_ERR(newmnt);
|
return (void *)newmnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
old_dentry = nd->dentry;
|
old_dentry = nd->dentry;
|
||||||
@ -267,7 +267,7 @@ static int afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
kleave(" = %d", err);
|
kleave(" = %d", err);
|
||||||
return err;
|
return ERR_PTR(err);
|
||||||
} /* end afs_mntpt_follow_link() */
|
} /* end afs_mntpt_follow_link() */
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -12,11 +12,12 @@
|
|||||||
|
|
||||||
#include "autofs_i.h"
|
#include "autofs_i.h"
|
||||||
|
|
||||||
static int autofs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
/* Nothing to release.. */
|
||||||
|
static void *autofs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
{
|
{
|
||||||
char *s=((struct autofs_symlink *)dentry->d_inode->u.generic_ip)->data;
|
char *s=((struct autofs_symlink *)dentry->d_inode->u.generic_ip)->data;
|
||||||
nd_set_link(nd, s);
|
nd_set_link(nd, s);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct inode_operations autofs_symlink_inode_operations = {
|
struct inode_operations autofs_symlink_inode_operations = {
|
||||||
|
@ -12,11 +12,11 @@
|
|||||||
|
|
||||||
#include "autofs_i.h"
|
#include "autofs_i.h"
|
||||||
|
|
||||||
static int autofs4_follow_link(struct dentry *dentry, struct nameidata *nd)
|
static void *autofs4_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
{
|
{
|
||||||
struct autofs_info *ino = autofs4_dentry_ino(dentry);
|
struct autofs_info *ino = autofs4_dentry_ino(dentry);
|
||||||
nd_set_link(nd, (char *)ino->u.symlink);
|
nd_set_link(nd, (char *)ino->u.symlink);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct inode_operations autofs4_symlink_inode_operations = {
|
struct inode_operations autofs4_symlink_inode_operations = {
|
||||||
|
@ -41,8 +41,8 @@ static struct inode *befs_alloc_inode(struct super_block *sb);
|
|||||||
static void befs_destroy_inode(struct inode *inode);
|
static void befs_destroy_inode(struct inode *inode);
|
||||||
static int befs_init_inodecache(void);
|
static int befs_init_inodecache(void);
|
||||||
static void befs_destroy_inodecache(void);
|
static void befs_destroy_inodecache(void);
|
||||||
static int befs_follow_link(struct dentry *, struct nameidata *);
|
static void *befs_follow_link(struct dentry *, struct nameidata *);
|
||||||
static void befs_put_link(struct dentry *, struct nameidata *);
|
static void befs_put_link(struct dentry *, struct nameidata *, void *);
|
||||||
static int befs_utf2nls(struct super_block *sb, const char *in, int in_len,
|
static int befs_utf2nls(struct super_block *sb, const char *in, int in_len,
|
||||||
char **out, int *out_len);
|
char **out, int *out_len);
|
||||||
static int befs_nls2utf(struct super_block *sb, const char *in, int in_len,
|
static int befs_nls2utf(struct super_block *sb, const char *in, int in_len,
|
||||||
@ -461,7 +461,7 @@ befs_destroy_inodecache(void)
|
|||||||
* The data stream become link name. Unless the LONG_SYMLINK
|
* The data stream become link name. Unless the LONG_SYMLINK
|
||||||
* flag is set.
|
* flag is set.
|
||||||
*/
|
*/
|
||||||
static int
|
static void *
|
||||||
befs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
befs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
{
|
{
|
||||||
befs_inode_info *befs_ino = BEFS_I(dentry->d_inode);
|
befs_inode_info *befs_ino = BEFS_I(dentry->d_inode);
|
||||||
@ -487,10 +487,10 @@ befs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
nd_set_link(nd, link);
|
nd_set_link(nd, link);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void befs_put_link(struct dentry *dentry, struct nameidata *nd)
|
static void befs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
|
||||||
{
|
{
|
||||||
befs_inode_info *befs_ino = BEFS_I(dentry->d_inode);
|
befs_inode_info *befs_ino = BEFS_I(dentry->d_inode);
|
||||||
if (befs_ino->i_flags & BEFS_LONG_SYMLINK) {
|
if (befs_ino->i_flags & BEFS_LONG_SYMLINK) {
|
||||||
|
@ -83,8 +83,8 @@ extern int cifs_dir_notify(struct file *, unsigned long arg);
|
|||||||
extern struct dentry_operations cifs_dentry_ops;
|
extern struct dentry_operations cifs_dentry_ops;
|
||||||
|
|
||||||
/* Functions related to symlinks */
|
/* Functions related to symlinks */
|
||||||
extern int cifs_follow_link(struct dentry *direntry, struct nameidata *nd);
|
extern void *cifs_follow_link(struct dentry *direntry, struct nameidata *nd);
|
||||||
extern void cifs_put_link(struct dentry *direntry, struct nameidata *nd);
|
extern void cifs_put_link(struct dentry *direntry, struct nameidata *nd, void *);
|
||||||
extern int cifs_readlink(struct dentry *direntry, char __user *buffer,
|
extern int cifs_readlink(struct dentry *direntry, char __user *buffer,
|
||||||
int buflen);
|
int buflen);
|
||||||
extern int cifs_symlink(struct inode *inode, struct dentry *direntry,
|
extern int cifs_symlink(struct inode *inode, struct dentry *direntry,
|
||||||
|
@ -92,7 +92,7 @@ cifs_hl_exit:
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
void *
|
||||||
cifs_follow_link(struct dentry *direntry, struct nameidata *nd)
|
cifs_follow_link(struct dentry *direntry, struct nameidata *nd)
|
||||||
{
|
{
|
||||||
struct inode *inode = direntry->d_inode;
|
struct inode *inode = direntry->d_inode;
|
||||||
@ -148,7 +148,7 @@ out:
|
|||||||
out_no_free:
|
out_no_free:
|
||||||
FreeXid(xid);
|
FreeXid(xid);
|
||||||
nd_set_link(nd, target_path);
|
nd_set_link(nd, target_path);
|
||||||
return 0;
|
return NULL; /* No cookie */
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -330,7 +330,7 @@ cifs_readlink(struct dentry *direntry, char __user *pBuffer, int buflen)
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cifs_put_link(struct dentry *direntry, struct nameidata *nd)
|
void cifs_put_link(struct dentry *direntry, struct nameidata *nd, void *cookie)
|
||||||
{
|
{
|
||||||
char *p = nd_get_link(nd);
|
char *p = nd_get_link(nd);
|
||||||
if (!IS_ERR(p))
|
if (!IS_ERR(p))
|
||||||
|
@ -2491,11 +2491,11 @@ static int devfs_mknod(struct inode *dir, struct dentry *dentry, int mode,
|
|||||||
return 0;
|
return 0;
|
||||||
} /* End Function devfs_mknod */
|
} /* End Function devfs_mknod */
|
||||||
|
|
||||||
static int devfs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
static void *devfs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
{
|
{
|
||||||
struct devfs_entry *p = get_devfs_entry_from_vfs_inode(dentry->d_inode);
|
struct devfs_entry *p = get_devfs_entry_from_vfs_inode(dentry->d_inode);
|
||||||
nd_set_link(nd, p ? p->u.symlink.linkname : ERR_PTR(-ENODEV));
|
nd_set_link(nd, p ? p->u.symlink.linkname : ERR_PTR(-ENODEV));
|
||||||
return 0;
|
return NULL;
|
||||||
} /* End Function devfs_follow_link */
|
} /* End Function devfs_follow_link */
|
||||||
|
|
||||||
static struct inode_operations devfs_iops = {
|
static struct inode_operations devfs_iops = {
|
||||||
|
@ -21,11 +21,11 @@
|
|||||||
#include "xattr.h"
|
#include "xattr.h"
|
||||||
#include <linux/namei.h>
|
#include <linux/namei.h>
|
||||||
|
|
||||||
static int ext2_follow_link(struct dentry *dentry, struct nameidata *nd)
|
static void *ext2_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
{
|
{
|
||||||
struct ext2_inode_info *ei = EXT2_I(dentry->d_inode);
|
struct ext2_inode_info *ei = EXT2_I(dentry->d_inode);
|
||||||
nd_set_link(nd, (char *)ei->i_data);
|
nd_set_link(nd, (char *)ei->i_data);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct inode_operations ext2_symlink_inode_operations = {
|
struct inode_operations ext2_symlink_inode_operations = {
|
||||||
|
@ -23,11 +23,11 @@
|
|||||||
#include <linux/namei.h>
|
#include <linux/namei.h>
|
||||||
#include "xattr.h"
|
#include "xattr.h"
|
||||||
|
|
||||||
static int ext3_follow_link(struct dentry *dentry, struct nameidata *nd)
|
static void * ext3_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
{
|
{
|
||||||
struct ext3_inode_info *ei = EXT3_I(dentry->d_inode);
|
struct ext3_inode_info *ei = EXT3_I(dentry->d_inode);
|
||||||
nd_set_link(nd, (char*)ei->i_data);
|
nd_set_link(nd, (char*)ei->i_data);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct inode_operations ext3_symlink_inode_operations = {
|
struct inode_operations ext3_symlink_inode_operations = {
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
#include "vxfs_inode.h"
|
#include "vxfs_inode.h"
|
||||||
|
|
||||||
|
|
||||||
static int vxfs_immed_follow_link(struct dentry *, struct nameidata *);
|
static void * vxfs_immed_follow_link(struct dentry *, struct nameidata *);
|
||||||
|
|
||||||
static int vxfs_immed_readpage(struct file *, struct page *);
|
static int vxfs_immed_readpage(struct file *, struct page *);
|
||||||
|
|
||||||
@ -72,12 +72,12 @@ struct address_space_operations vxfs_immed_aops = {
|
|||||||
* Returns:
|
* Returns:
|
||||||
* Zero on success, else a negative error code.
|
* Zero on success, else a negative error code.
|
||||||
*/
|
*/
|
||||||
static int
|
static void *
|
||||||
vxfs_immed_follow_link(struct dentry *dp, struct nameidata *np)
|
vxfs_immed_follow_link(struct dentry *dp, struct nameidata *np)
|
||||||
{
|
{
|
||||||
struct vxfs_inode_info *vip = VXFS_INO(dp->d_inode);
|
struct vxfs_inode_info *vip = VXFS_INO(dp->d_inode);
|
||||||
nd_set_link(np, vip->vii_immed.vi_immed);
|
nd_set_link(np, vip->vii_immed.vi_immed);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,6 +62,8 @@ asmlinkage long sys_ioprio_set(int which, int who, int ioprio)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case IOPRIO_CLASS_IDLE:
|
case IOPRIO_CLASS_IDLE:
|
||||||
|
if (!capable(CAP_SYS_ADMIN))
|
||||||
|
return -EPERM;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#include <linux/namei.h>
|
#include <linux/namei.h>
|
||||||
#include "nodelist.h"
|
#include "nodelist.h"
|
||||||
|
|
||||||
static int jffs2_follow_link(struct dentry *dentry, struct nameidata *nd);
|
static void *jffs2_follow_link(struct dentry *dentry, struct nameidata *nd);
|
||||||
|
|
||||||
struct inode_operations jffs2_symlink_inode_operations =
|
struct inode_operations jffs2_symlink_inode_operations =
|
||||||
{
|
{
|
||||||
@ -27,9 +27,10 @@ struct inode_operations jffs2_symlink_inode_operations =
|
|||||||
.setattr = jffs2_setattr
|
.setattr = jffs2_setattr
|
||||||
};
|
};
|
||||||
|
|
||||||
static int jffs2_follow_link(struct dentry *dentry, struct nameidata *nd)
|
static void *jffs2_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
{
|
{
|
||||||
struct jffs2_inode_info *f = JFFS2_INODE_INFO(dentry->d_inode);
|
struct jffs2_inode_info *f = JFFS2_INODE_INFO(dentry->d_inode);
|
||||||
|
char *p = (char *)f->dents;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We don't acquire the f->sem mutex here since the only data we
|
* We don't acquire the f->sem mutex here since the only data we
|
||||||
@ -45,19 +46,20 @@ static int jffs2_follow_link(struct dentry *dentry, struct nameidata *nd)
|
|||||||
* nd_set_link() call.
|
* nd_set_link() call.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!f->dents) {
|
if (!p) {
|
||||||
printk(KERN_ERR "jffs2_follow_link(): can't find symlink taerget\n");
|
printk(KERN_ERR "jffs2_follow_link(): can't find symlink taerget\n");
|
||||||
return -EIO;
|
p = ERR_PTR(-EIO);
|
||||||
|
} else {
|
||||||
|
D1(printk(KERN_DEBUG "jffs2_follow_link(): target path is '%s'\n", (char *) f->dents));
|
||||||
}
|
}
|
||||||
D1(printk(KERN_DEBUG "jffs2_follow_link(): target path is '%s'\n", (char *) f->dents));
|
|
||||||
|
|
||||||
nd_set_link(nd, (char *)f->dents);
|
nd_set_link(nd, p);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We unlock the f->sem mutex but VFS will use the f->dents string. This is safe
|
* We unlock the f->sem mutex but VFS will use the f->dents string. This is safe
|
||||||
* since the only way that may cause f->dents to be changed is iput() operation.
|
* since the only way that may cause f->dents to be changed is iput() operation.
|
||||||
* But VFS will not use f->dents after iput() has been called.
|
* But VFS will not use f->dents after iput() has been called.
|
||||||
*/
|
*/
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,6 +128,10 @@ void jfs_delete_inode(struct inode *inode)
|
|||||||
{
|
{
|
||||||
jfs_info("In jfs_delete_inode, inode = 0x%p", inode);
|
jfs_info("In jfs_delete_inode, inode = 0x%p", inode);
|
||||||
|
|
||||||
|
if (is_bad_inode(inode) ||
|
||||||
|
(JFS_IP(inode)->fileset != cpu_to_le32(FILESYSTEM_I)))
|
||||||
|
return;
|
||||||
|
|
||||||
if (test_cflag(COMMIT_Freewmap, inode))
|
if (test_cflag(COMMIT_Freewmap, inode))
|
||||||
jfs_free_zero_link(inode);
|
jfs_free_zero_link(inode);
|
||||||
|
|
||||||
|
@ -191,7 +191,7 @@ static int lbmIOWait(struct lbuf * bp, int flag);
|
|||||||
static bio_end_io_t lbmIODone;
|
static bio_end_io_t lbmIODone;
|
||||||
static void lbmStartIO(struct lbuf * bp);
|
static void lbmStartIO(struct lbuf * bp);
|
||||||
static void lmGCwrite(struct jfs_log * log, int cant_block);
|
static void lmGCwrite(struct jfs_log * log, int cant_block);
|
||||||
static int lmLogSync(struct jfs_log * log, int nosyncwait);
|
static int lmLogSync(struct jfs_log * log, int hard_sync);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -915,19 +915,17 @@ static void lmPostGC(struct lbuf * bp)
|
|||||||
* if new sync address is available
|
* if new sync address is available
|
||||||
* (normally the case if sync() is executed by back-ground
|
* (normally the case if sync() is executed by back-ground
|
||||||
* process).
|
* process).
|
||||||
* if not, explicitly run jfs_blogsync() to initiate
|
|
||||||
* getting of new sync address.
|
|
||||||
* calculate new value of i_nextsync which determines when
|
* calculate new value of i_nextsync which determines when
|
||||||
* this code is called again.
|
* this code is called again.
|
||||||
*
|
*
|
||||||
* PARAMETERS: log - log structure
|
* PARAMETERS: log - log structure
|
||||||
* nosyncwait - 1 if called asynchronously
|
* hard_sync - 1 to force all metadata to be written
|
||||||
*
|
*
|
||||||
* RETURN: 0
|
* RETURN: 0
|
||||||
*
|
*
|
||||||
* serialization: LOG_LOCK() held on entry/exit
|
* serialization: LOG_LOCK() held on entry/exit
|
||||||
*/
|
*/
|
||||||
static int lmLogSync(struct jfs_log * log, int nosyncwait)
|
static int lmLogSync(struct jfs_log * log, int hard_sync)
|
||||||
{
|
{
|
||||||
int logsize;
|
int logsize;
|
||||||
int written; /* written since last syncpt */
|
int written; /* written since last syncpt */
|
||||||
@ -941,11 +939,18 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
|
|||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
/* push dirty metapages out to disk */
|
/* push dirty metapages out to disk */
|
||||||
list_for_each_entry(sbi, &log->sb_list, log_list) {
|
if (hard_sync)
|
||||||
filemap_flush(sbi->ipbmap->i_mapping);
|
list_for_each_entry(sbi, &log->sb_list, log_list) {
|
||||||
filemap_flush(sbi->ipimap->i_mapping);
|
filemap_fdatawrite(sbi->ipbmap->i_mapping);
|
||||||
filemap_flush(sbi->direct_inode->i_mapping);
|
filemap_fdatawrite(sbi->ipimap->i_mapping);
|
||||||
}
|
filemap_fdatawrite(sbi->direct_inode->i_mapping);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
list_for_each_entry(sbi, &log->sb_list, log_list) {
|
||||||
|
filemap_flush(sbi->ipbmap->i_mapping);
|
||||||
|
filemap_flush(sbi->ipimap->i_mapping);
|
||||||
|
filemap_flush(sbi->direct_inode->i_mapping);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* forward syncpt
|
* forward syncpt
|
||||||
@ -1021,10 +1026,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
|
|||||||
/* next syncpt trigger = written + more */
|
/* next syncpt trigger = written + more */
|
||||||
log->nextsync = written + more;
|
log->nextsync = written + more;
|
||||||
|
|
||||||
/* return if lmLogSync() from outside of transaction, e.g., sync() */
|
|
||||||
if (nosyncwait)
|
|
||||||
return lsn;
|
|
||||||
|
|
||||||
/* if number of bytes written from last sync point is more
|
/* if number of bytes written from last sync point is more
|
||||||
* than 1/4 of the log size, stop new transactions from
|
* than 1/4 of the log size, stop new transactions from
|
||||||
* starting until all current transactions are completed
|
* starting until all current transactions are completed
|
||||||
@ -1049,11 +1050,12 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
|
|||||||
*
|
*
|
||||||
* FUNCTION: write log SYNCPT record for specified log
|
* FUNCTION: write log SYNCPT record for specified log
|
||||||
*
|
*
|
||||||
* PARAMETERS: log - log structure
|
* PARAMETERS: log - log structure
|
||||||
|
* hard_sync - set to 1 to force metadata to be written
|
||||||
*/
|
*/
|
||||||
void jfs_syncpt(struct jfs_log *log)
|
void jfs_syncpt(struct jfs_log *log, int hard_sync)
|
||||||
{ LOG_LOCK(log);
|
{ LOG_LOCK(log);
|
||||||
lmLogSync(log, 1);
|
lmLogSync(log, hard_sync);
|
||||||
LOG_UNLOCK(log);
|
LOG_UNLOCK(log);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -510,6 +510,6 @@ extern int lmLogFormat(struct jfs_log *log, s64 logAddress, int logSize);
|
|||||||
extern int lmGroupCommit(struct jfs_log *, struct tblock *);
|
extern int lmGroupCommit(struct jfs_log *, struct tblock *);
|
||||||
extern int jfsIOWait(void *);
|
extern int jfsIOWait(void *);
|
||||||
extern void jfs_flush_journal(struct jfs_log * log, int wait);
|
extern void jfs_flush_journal(struct jfs_log * log, int wait);
|
||||||
extern void jfs_syncpt(struct jfs_log *log);
|
extern void jfs_syncpt(struct jfs_log *log, int hard_sync);
|
||||||
|
|
||||||
#endif /* _H_JFS_LOGMGR */
|
#endif /* _H_JFS_LOGMGR */
|
||||||
|
@ -552,6 +552,11 @@ void txEnd(tid_t tid)
|
|||||||
* synchronize with logsync barrier
|
* synchronize with logsync barrier
|
||||||
*/
|
*/
|
||||||
if (test_bit(log_SYNCBARRIER, &log->flag)) {
|
if (test_bit(log_SYNCBARRIER, &log->flag)) {
|
||||||
|
TXN_UNLOCK();
|
||||||
|
|
||||||
|
/* write dirty metadata & forward log syncpt */
|
||||||
|
jfs_syncpt(log, 1);
|
||||||
|
|
||||||
jfs_info("log barrier off: 0x%x", log->lsn);
|
jfs_info("log barrier off: 0x%x", log->lsn);
|
||||||
|
|
||||||
/* enable new transactions start */
|
/* enable new transactions start */
|
||||||
@ -560,11 +565,6 @@ void txEnd(tid_t tid)
|
|||||||
/* wakeup all waitors for logsync barrier */
|
/* wakeup all waitors for logsync barrier */
|
||||||
TXN_WAKEUP(&log->syncwait);
|
TXN_WAKEUP(&log->syncwait);
|
||||||
|
|
||||||
TXN_UNLOCK();
|
|
||||||
|
|
||||||
/* forward log syncpt */
|
|
||||||
jfs_syncpt(log);
|
|
||||||
|
|
||||||
goto wakeup;
|
goto wakeup;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -657,7 +657,9 @@ struct tlock *txLock(tid_t tid, struct inode *ip, struct metapage * mp,
|
|||||||
/* only anonymous txn.
|
/* only anonymous txn.
|
||||||
* Remove from anon_list
|
* Remove from anon_list
|
||||||
*/
|
*/
|
||||||
|
TXN_LOCK();
|
||||||
list_del_init(&jfs_ip->anon_inode_list);
|
list_del_init(&jfs_ip->anon_inode_list);
|
||||||
|
TXN_UNLOCK();
|
||||||
}
|
}
|
||||||
jfs_ip->atlhead = tlck->next;
|
jfs_ip->atlhead = tlck->next;
|
||||||
} else {
|
} else {
|
||||||
|
@ -114,6 +114,8 @@ static void jfs_destroy_inode(struct inode *inode)
|
|||||||
{
|
{
|
||||||
struct jfs_inode_info *ji = JFS_IP(inode);
|
struct jfs_inode_info *ji = JFS_IP(inode);
|
||||||
|
|
||||||
|
BUG_ON(!list_empty(&ji->anon_inode_list));
|
||||||
|
|
||||||
spin_lock_irq(&ji->ag_lock);
|
spin_lock_irq(&ji->ag_lock);
|
||||||
if (ji->active_ag != -1) {
|
if (ji->active_ag != -1) {
|
||||||
struct bmap *bmap = JFS_SBI(inode->i_sb)->bmap;
|
struct bmap *bmap = JFS_SBI(inode->i_sb)->bmap;
|
||||||
@ -531,7 +533,7 @@ static int jfs_sync_fs(struct super_block *sb, int wait)
|
|||||||
/* log == NULL indicates read-only mount */
|
/* log == NULL indicates read-only mount */
|
||||||
if (log) {
|
if (log) {
|
||||||
jfs_flush_journal(log, wait);
|
jfs_flush_journal(log, wait);
|
||||||
jfs_syncpt(log);
|
jfs_syncpt(log, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -22,11 +22,11 @@
|
|||||||
#include "jfs_inode.h"
|
#include "jfs_inode.h"
|
||||||
#include "jfs_xattr.h"
|
#include "jfs_xattr.h"
|
||||||
|
|
||||||
static int jfs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
static void *jfs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
{
|
{
|
||||||
char *s = JFS_IP(dentry->d_inode)->i_inline;
|
char *s = JFS_IP(dentry->d_inode)->i_inline;
|
||||||
nd_set_link(nd, s);
|
nd_set_link(nd, s);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct inode_operations jfs_symlink_inode_operations = {
|
struct inode_operations jfs_symlink_inode_operations = {
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user