Merge from-linus to-akpm

This commit is contained in:
Len Brown 2005-08-23 22:12:23 -04:00
commit 84ffa74752
175 changed files with 1526 additions and 1198 deletions

View File

@ -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

View File

@ -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)_*()

View File

@ -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

View File

@ -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

View File

@ -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[] = {

View File

@ -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

View File

@ -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

View File

@ -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 );

View File

@ -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) ||

View File

@ -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())

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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);

View File

@ -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));

View File

@ -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.

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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.
*/ */

View File

@ -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;

View 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),
},
},
};

View File

@ -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 */

View File

@ -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 */

View File

@ -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)

View File

@ -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

View File

@ -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();

View 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

View File

@ -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... */

View File

@ -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");

View File

@ -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");

View File

@ -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)){

View File

@ -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"

View File

@ -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();
} }

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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)

View File

@ -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.

View File

@ -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, },

View File

@ -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);

View File

@ -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,

View File

@ -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);

View File

@ -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;
} }

View File

@ -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;
} }

View File

@ -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 */
} }

View File

@ -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;
} }

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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>
* *
*/ */

View File

@ -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)

View File

@ -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;

View File

@ -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;

View File

@ -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;
} }
} }

View File

@ -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);

View File

@ -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));

View File

@ -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) {

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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() */
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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 = {

View File

@ -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 = {

View File

@ -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) {

View File

@ -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,

View File

@ -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))

View File

@ -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 = {

View File

@ -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 = {

View File

@ -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 = {

View File

@ -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;
} }
/** /**

View File

@ -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;

View File

@ -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;
} }

View File

@ -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);

View File

@ -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);
} }

View File

@ -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 */

View File

@ -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 {

View File

@ -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;

View File

@ -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