Merge /spare/repo/linux-2.6/
This commit is contained in:
Коммит
a3bc068022
3
CREDITS
3
CREDITS
|
@ -2423,8 +2423,7 @@ S: Toronto, Ontario
|
|||
S: Canada
|
||||
|
||||
N: Zwane Mwaikambo
|
||||
E: zwane@linuxpower.ca
|
||||
W: http://function.linuxpower.ca
|
||||
E: zwane@arm.linux.org.uk
|
||||
D: Various driver hacking
|
||||
D: Lowlevel x86 kernel hacking
|
||||
D: General debugging
|
||||
|
|
|
@ -33,3 +33,6 @@ The result of the execution of this aml method is
|
|||
attached to /proc/acpi/hotkey/poll_method, which is dnyamically
|
||||
created. Please use command "cat /proc/acpi/hotkey/polling_method"
|
||||
to retrieve it.
|
||||
|
||||
Note: Use cmdline "acpi_generic_hotkey" to over-ride
|
||||
loading any platform specific drivers.
|
||||
|
|
|
@ -159,6 +159,11 @@ running once the system is up.
|
|||
|
||||
acpi_fake_ecdt [HW,ACPI] Workaround failure due to BIOS lacking ECDT
|
||||
|
||||
acpi_generic_hotkey [HW,ACPI]
|
||||
Allow consolidated generic hotkey driver to
|
||||
over-ride platform specific driver.
|
||||
See also Documentation/acpi-hotkey.txt.
|
||||
|
||||
ad1816= [HW,OSS]
|
||||
Format: <io>,<irq>,<dma>,<dma2>
|
||||
See also Documentation/sound/oss/AD1816.
|
||||
|
|
|
@ -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
|
||||
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_subsys() Superseded by pci_get_subsys()
|
||||
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)_*()
|
||||
|
|
18
MAINTAINERS
18
MAINTAINERS
|
@ -784,7 +784,7 @@ DVB SUBSYSTEM AND DRIVERS
|
|||
P: LinuxTV.org Project
|
||||
M: linux-dvb-maintainer@linuxtv.org
|
||||
L: linux-dvb@linuxtv.org (subscription required)
|
||||
W: http://linuxtv.org/developer/dvb.xml
|
||||
W: http://linuxtv.org/
|
||||
S: Supported
|
||||
|
||||
EATA-DMA SCSI DRIVER
|
||||
|
@ -1739,7 +1739,7 @@ S: Maintained
|
|||
|
||||
OPL3-SA2, SA3, and SAx DRIVER
|
||||
P: Zwane Mwaikambo
|
||||
M: zwane@commfireservices.com
|
||||
M: zwane@arm.linux.org.uk
|
||||
L: linux-sound@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
|
@ -1825,6 +1825,12 @@ P: Greg Kroah-Hartman
|
|||
M: greg@kroah.com
|
||||
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
|
||||
P: Linux PCMCIA Team
|
||||
L: http://lists.infradead.org/mailman/listinfo/linux-pcmcia
|
||||
|
@ -1989,7 +1995,7 @@ S: Maintained
|
|||
|
||||
SC1200 WDT DRIVER
|
||||
P: Zwane Mwaikambo
|
||||
M: zwane@commfireservices.com
|
||||
M: zwane@arm.linux.org.uk
|
||||
S: Maintained
|
||||
|
||||
SCHEDULER
|
||||
|
@ -2201,6 +2207,12 @@ W: http://projects.buici.com/arm
|
|||
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
||||
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):
|
||||
P: William L. Irwin
|
||||
M: wli@holomorphy.com
|
||||
|
|
|
@ -327,6 +327,12 @@ __syscall_start:
|
|||
/* 310 */ .long sys_request_key
|
||||
.long sys_keyctl
|
||||
.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:
|
||||
|
||||
.rept NR_syscalls - (__syscall_end - __syscall_start) / 4
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
* 28-Sep-2004 BJD Updates for new serial port bits
|
||||
* 04-Nov-2004 BJD Updated UART configuration process
|
||||
* 10-Jan-2005 BJD Removed s3c2410_clock_tick_rate
|
||||
* 13-Aug-2005 DA Removed UART from initial I/O mappings
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
|
@ -49,10 +50,9 @@ static struct map_desc s3c2410_iodesc[] __initdata = {
|
|||
IODESC_ENT(USBHOST),
|
||||
IODESC_ENT(CLKPWR),
|
||||
IODESC_ENT(LCD),
|
||||
IODESC_ENT(UART),
|
||||
IODESC_ENT(TIMER),
|
||||
IODESC_ENT(ADC),
|
||||
IODESC_ENT(WATCHDOG)
|
||||
IODESC_ENT(WATCHDOG),
|
||||
};
|
||||
|
||||
static struct resource s3c_uart0_resource[] = {
|
||||
|
|
|
@ -384,7 +384,7 @@ config CPU_DCACHE_DISABLE
|
|||
|
||||
config CPU_DCACHE_WRITETHROUGH
|
||||
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
|
||||
help
|
||||
Say Y here to use the data cache in writethrough mode. Unless you
|
||||
|
|
|
@ -105,7 +105,7 @@ ENTRY(cpu_v6_dcache_clean_area)
|
|||
ENTRY(cpu_v6_switch_mm)
|
||||
mov r2, #0
|
||||
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, r0, c2, c0, 0 @ set TTB 0
|
||||
mcr p15, 0, r1, c13, c0, 1 @ set context ID
|
||||
|
|
|
@ -1602,9 +1602,7 @@ flag float32_le_quiet( float32 a, float32 b )
|
|||
if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) )
|
||||
|| ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) )
|
||||
) {
|
||||
if ( float32_is_signaling_nan( a ) || float32_is_signaling_nan( b ) ) {
|
||||
float_raise( float_flag_invalid );
|
||||
}
|
||||
/* Do nothing, even if NaN as we're quiet */
|
||||
return 0;
|
||||
}
|
||||
aSign = extractFloat32Sign( a );
|
||||
|
@ -1629,9 +1627,7 @@ flag float32_lt_quiet( float32 a, float32 b )
|
|||
if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) )
|
||||
|| ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) )
|
||||
) {
|
||||
if ( float32_is_signaling_nan( a ) || float32_is_signaling_nan( b ) ) {
|
||||
float_raise( float_flag_invalid );
|
||||
}
|
||||
/* Do nothing, even if NaN as we're quiet */
|
||||
return 0;
|
||||
}
|
||||
aSign = extractFloat32Sign( a );
|
||||
|
@ -2493,9 +2489,7 @@ flag float64_le_quiet( float64 a, float64 b )
|
|||
if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) )
|
||||
|| ( ( extractFloat64Exp( b ) == 0x7FF ) && extractFloat64Frac( b ) )
|
||||
) {
|
||||
if ( float64_is_signaling_nan( a ) || float64_is_signaling_nan( b ) ) {
|
||||
float_raise( float_flag_invalid );
|
||||
}
|
||||
/* Do nothing, even if NaN as we're quiet */
|
||||
return 0;
|
||||
}
|
||||
aSign = extractFloat64Sign( a );
|
||||
|
@ -2520,9 +2514,7 @@ flag float64_lt_quiet( float64 a, float64 b )
|
|||
if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) )
|
||||
|| ( ( extractFloat64Exp( b ) == 0x7FF ) && extractFloat64Frac( b ) )
|
||||
) {
|
||||
if ( float64_is_signaling_nan( a ) || float64_is_signaling_nan( b ) ) {
|
||||
float_raise( float_flag_invalid );
|
||||
}
|
||||
/* Do nothing, even if NaN as we're quiet */
|
||||
return 0;
|
||||
}
|
||||
aSign = extractFloat64Sign( a );
|
||||
|
@ -3256,7 +3248,7 @@ flag floatx80_eq( floatx80 a, floatx80 b )
|
|||
) {
|
||||
if ( floatx80_is_signaling_nan( a )
|
||||
|| floatx80_is_signaling_nan( b ) ) {
|
||||
roundData->exception |= float_flag_invalid;
|
||||
float_raise( float_flag_invalid );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -3286,7 +3278,7 @@ flag floatx80_le( floatx80 a, floatx80 b )
|
|||
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
||||
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
||||
) {
|
||||
roundData->exception |= float_flag_invalid;
|
||||
float_raise( float_flag_invalid );
|
||||
return 0;
|
||||
}
|
||||
aSign = extractFloatx80Sign( a );
|
||||
|
@ -3320,7 +3312,7 @@ flag floatx80_lt( floatx80 a, floatx80 b )
|
|||
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
||||
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
||||
) {
|
||||
roundData->exception |= float_flag_invalid;
|
||||
float_raise( float_flag_invalid );
|
||||
return 0;
|
||||
}
|
||||
aSign = extractFloatx80Sign( a );
|
||||
|
@ -3353,7 +3345,7 @@ flag floatx80_eq_signaling( floatx80 a, floatx80 b )
|
|||
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
||||
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
||||
) {
|
||||
roundData->exception |= float_flag_invalid;
|
||||
float_raise( float_flag_invalid );
|
||||
return 0;
|
||||
}
|
||||
return
|
||||
|
@ -3382,10 +3374,7 @@ flag floatx80_le_quiet( floatx80 a, floatx80 b )
|
|||
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
||||
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
||||
) {
|
||||
if ( floatx80_is_signaling_nan( a )
|
||||
|| floatx80_is_signaling_nan( b ) ) {
|
||||
roundData->exception |= float_flag_invalid;
|
||||
}
|
||||
/* Do nothing, even if NaN as we're quiet */
|
||||
return 0;
|
||||
}
|
||||
aSign = extractFloatx80Sign( a );
|
||||
|
@ -3419,10 +3408,7 @@ flag floatx80_lt_quiet( floatx80 a, floatx80 b )
|
|||
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
|
||||
&& (bits64) ( extractFloatx80Frac( b )<<1 ) )
|
||||
) {
|
||||
if ( floatx80_is_signaling_nan( a )
|
||||
|| floatx80_is_signaling_nan( b ) ) {
|
||||
roundData->exception |= float_flag_invalid;
|
||||
}
|
||||
/* Do nothing, even if NaN as we're quiet */
|
||||
return 0;
|
||||
}
|
||||
aSign = extractFloatx80Sign( a );
|
||||
|
|
|
@ -726,15 +726,11 @@ __setup("apic=", apic_set_verbosity);
|
|||
static int __init detect_init_APIC (void)
|
||||
{
|
||||
u32 h, l, features;
|
||||
extern void get_cpu_vendor(struct cpuinfo_x86*);
|
||||
|
||||
/* Disabled by kernel option? */
|
||||
if (enable_local_apic < 0)
|
||||
return -1;
|
||||
|
||||
/* Workaround for us being called before identify_cpu(). */
|
||||
get_cpu_vendor(&boot_cpu_data);
|
||||
|
||||
switch (boot_cpu_data.x86_vendor) {
|
||||
case X86_VENDOR_AMD:
|
||||
if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) ||
|
||||
|
|
|
@ -392,15 +392,8 @@ menu "Bus options (PCI, PCMCIA)"
|
|||
config PCI
|
||||
bool "PCI support"
|
||||
help
|
||||
Find out whether you have a PCI motherboard. PCI is the name of a
|
||||
bus system, i.e. the way the CPU talks to the other stuff inside
|
||||
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.
|
||||
Real IA-64 machines all have PCI/PCI-X/PCI Express busses. Say Y
|
||||
here unless you are using a simulator without PCI support.
|
||||
|
||||
config PCI_DOMAINS
|
||||
bool
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.10
|
||||
# Mon Jan 10 13:57:35 2005
|
||||
# Linux kernel version: 2.6.13-rc6
|
||||
# Tue Aug 16 14:40:41 2005
|
||||
#
|
||||
|
||||
#
|
||||
|
@ -10,6 +10,7 @@
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -21,24 +22,26 @@ CONFIG_POSIX_MQUEUE=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=20
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_CPUSETS=y
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_CPUSETS=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -63,9 +66,12 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
|
|||
CONFIG_TIME_INTERPOLATION=y
|
||||
CONFIG_EFI=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_DIG 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_HP_SIM 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_16KB=y
|
||||
# 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_NUMA=y
|
||||
CONFIG_VIRTUAL_MEM_MAP=y
|
||||
|
@ -81,11 +91,20 @@ CONFIG_HOLES_IN_ZONE=y
|
|||
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
|
||||
# CONFIG_IA64_CYCLONE is not set
|
||||
CONFIG_IOSAPIC=y
|
||||
CONFIG_IA64_SGI_SN_XP=m
|
||||
CONFIG_FORCE_MAX_ZONEORDER=18
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=512
|
||||
# CONFIG_HOTPLUG_CPU is not set
|
||||
CONFIG_SCHED_SMT=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_IA32_SUPPORT=y
|
||||
CONFIG_COMPAT=y
|
||||
|
@ -105,6 +124,7 @@ CONFIG_BINFMT_ELF=y
|
|||
#
|
||||
# Power management and ACPI
|
||||
#
|
||||
CONFIG_PM=y
|
||||
CONFIG_ACPI=y
|
||||
|
||||
#
|
||||
|
@ -114,6 +134,7 @@ CONFIG_ACPI_BOOT=y
|
|||
CONFIG_ACPI_INTERPRETER=y
|
||||
# CONFIG_ACPI_BUTTON is not set
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
CONFIG_ACPI_HOTKEY=m
|
||||
# CONFIG_ACPI_FAN is not set
|
||||
# CONFIG_ACPI_PROCESSOR is not set
|
||||
CONFIG_ACPI_NUMA=y
|
||||
|
@ -133,6 +154,7 @@ CONFIG_PCI_DOMAINS=y
|
|||
# CONFIG_PCI_MSI is not set
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
CONFIG_PCI_NAMES=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
|
@ -141,7 +163,6 @@ CONFIG_HOTPLUG_PCI=y
|
|||
# CONFIG_HOTPLUG_PCI_FAKE is not set
|
||||
# CONFIG_HOTPLUG_PCI_ACPI 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_SGI=y
|
||||
|
||||
|
@ -151,8 +172,70 @@ CONFIG_HOTPLUG_PCI_SGI=y
|
|||
# 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
|
||||
|
@ -163,7 +246,7 @@ CONFIG_HOTPLUG_PCI_SGI=y
|
|||
#
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=m
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
|
||||
#
|
||||
|
@ -188,6 +271,7 @@ CONFIG_FW_LOADER=m
|
|||
# CONFIG_BLK_CPQ_CISS_DA is not set
|
||||
# CONFIG_BLK_DEV_DAC960 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_CRYPTOLOOP=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_SC1200 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_PDC202XX_OLD 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_VENDOR is not set
|
||||
CONFIG_CHR_DEV_SG=m
|
||||
CONFIG_CHR_DEV_SCH=m
|
||||
|
||||
#
|
||||
# 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_SATA_NV 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_SIL is not set
|
||||
# CONFIG_SCSI_SATA_SIS is not set
|
||||
# CONFIG_SCSI_SATA_ULI is not set
|
||||
# CONFIG_SCSI_SATA_VIA is not set
|
||||
CONFIG_SCSI_SATA_VITESSE=y
|
||||
# CONFIG_SCSI_BUSLOGIC 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_GDTH is not set
|
||||
# CONFIG_SCSI_IPS is not set
|
||||
# CONFIG_SCSI_INITIO is not set
|
||||
# CONFIG_SCSI_INIA100 is not set
|
||||
# CONFIG_SCSI_SYM53C8XX_2 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_1280=y
|
||||
# CONFIG_SCSI_QLOGIC_1280_1040 is not set
|
||||
|
@ -342,6 +424,8 @@ CONFIG_SCSI_QLA22XX=y
|
|||
CONFIG_SCSI_QLA2300=y
|
||||
CONFIG_SCSI_QLA2322=y
|
||||
# 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_DC390T is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
|
@ -364,11 +448,15 @@ CONFIG_DM_CRYPT=m
|
|||
CONFIG_DM_SNAPSHOT=m
|
||||
CONFIG_DM_MIRROR=m
|
||||
CONFIG_DM_ZERO=m
|
||||
CONFIG_DM_MULTIPATH=m
|
||||
CONFIG_DM_MULTIPATH_EMC=m
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
CONFIG_FUSION=y
|
||||
CONFIG_FUSION_SPI=y
|
||||
CONFIG_FUSION_FC=y
|
||||
CONFIG_FUSION_MAX_SGE=128
|
||||
CONFIG_FUSION_CTL=m
|
||||
|
||||
|
@ -383,82 +471,13 @@ CONFIG_FUSION_CTL=m
|
|||
# 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_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
# CONFIG_ETHERTAP is not set
|
||||
|
||||
#
|
||||
# ARCnet devices
|
||||
|
@ -480,8 +499,10 @@ CONFIG_NETDEVICES=y
|
|||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_YELLOWFIN is not set
|
||||
# CONFIG_R8169 is not set
|
||||
# CONFIG_SKGE is not set
|
||||
# CONFIG_SK98LIN is not set
|
||||
CONFIG_TIGON3=y
|
||||
# CONFIG_BNX2 is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
|
@ -512,6 +533,10 @@ CONFIG_S2IO=m
|
|||
# CONFIG_NET_FC is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
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
|
||||
|
@ -540,14 +565,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|||
# CONFIG_INPUT_EVDEV 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
|
||||
#
|
||||
|
@ -557,6 +574,12 @@ CONFIG_SOUND_GAMEPORT=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN 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
|
||||
#
|
||||
|
@ -568,9 +591,10 @@ CONFIG_SERIAL_NONSTANDARD=y
|
|||
# CONFIG_CYCLADES is not set
|
||||
# CONFIG_MOXA_SMARTIO is not set
|
||||
# CONFIG_ISI is not set
|
||||
# CONFIG_SYNCLINK is not set
|
||||
# CONFIG_SYNCLINKMP 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_SGI_SNSC=y
|
||||
CONFIG_SGI_TIOCX=y
|
||||
|
@ -587,6 +611,7 @@ CONFIG_SGI_MBCS=m
|
|||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_SERIAL_SGI_L1_CONSOLE=y
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
CONFIG_SERIAL_SGI_IOC4=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
|
@ -615,18 +640,30 @@ CONFIG_EFI_RTC=y
|
|||
CONFIG_RAW_DRIVER=m
|
||||
# CONFIG_HPET is not set
|
||||
CONFIG_MAX_RAW_DEVS=256
|
||||
# CONFIG_HANGCHECK_TIMER is not set
|
||||
CONFIG_MMTIMER=y
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
# CONFIG_I2C_SENSOR is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
@ -660,6 +697,8 @@ CONFIG_DUMMY_CONSOLE=y
|
|||
#
|
||||
# USB support
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB=m
|
||||
# CONFIG_USB_DEBUG is not set
|
||||
|
||||
|
@ -669,9 +708,8 @@ CONFIG_USB=m
|
|||
# CONFIG_USB_DEVICEFS is not set
|
||||
# CONFIG_USB_BANDWIDTH is not set
|
||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_SUSPEND 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
|
||||
|
@ -679,7 +717,10 @@ CONFIG_USB_ARCH_HAS_OHCI=y
|
|||
CONFIG_USB_EHCI_HCD=m
|
||||
# CONFIG_USB_EHCI_SPLIT_ISO 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_BIG_ENDIAN is not set
|
||||
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
CONFIG_USB_UHCI_HCD=m
|
||||
# CONFIG_USB_SL811_HCD is not set
|
||||
|
||||
|
@ -710,12 +751,15 @@ CONFIG_USB_HIDINPUT=y
|
|||
# CONFIG_USB_MOUSE is not set
|
||||
# CONFIG_USB_AIPTEK is not set
|
||||
# CONFIG_USB_WACOM is not set
|
||||
# CONFIG_USB_ACECAD is not set
|
||||
# CONFIG_USB_KBTAB is not set
|
||||
# CONFIG_USB_POWERMATE is not set
|
||||
# CONFIG_USB_MTOUCH is not set
|
||||
# CONFIG_USB_ITMTOUCH is not set
|
||||
# CONFIG_USB_EGALAX is not set
|
||||
# CONFIG_USB_XPAD is not set
|
||||
# CONFIG_USB_ATI_REMOTE is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
|
@ -740,6 +784,7 @@ CONFIG_USB_HIDINPUT=y
|
|||
# CONFIG_USB_PEGASUS is not set
|
||||
# CONFIG_USB_RTL8150 is not set
|
||||
# CONFIG_USB_USBNET is not set
|
||||
CONFIG_USB_MON=y
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
|
@ -763,9 +808,12 @@ CONFIG_USB_HIDINPUT=y
|
|||
# CONFIG_USB_CYTHERM is not set
|
||||
# CONFIG_USB_PHIDGETKIT 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
|
||||
#
|
||||
CONFIG_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_USER_VERBS=m
|
||||
CONFIG_INFINIBAND_MTHCA=m
|
||||
# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
|
||||
CONFIG_INFINIBAND_IPOIB=m
|
||||
|
@ -799,6 +848,7 @@ CONFIG_EXT2_FS=y
|
|||
CONFIG_EXT2_FS_XATTR=y
|
||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
||||
CONFIG_EXT2_FS_SECURITY=y
|
||||
# CONFIG_EXT2_FS_XIP is not set
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_XATTR=y
|
||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
||||
|
@ -814,13 +864,19 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
|
|||
CONFIG_REISERFS_FS_SECURITY=y
|
||||
# CONFIG_JFS_FS is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
CONFIG_XFS_FS=y
|
||||
CONFIG_XFS_EXPORT=y
|
||||
CONFIG_XFS_RT=y
|
||||
CONFIG_XFS_QUOTA=y
|
||||
# CONFIG_XFS_SECURITY is not set
|
||||
CONFIG_XFS_POSIX_ACL=y
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_QUOTA=y
|
||||
# CONFIG_QFMT_V1 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_KCORE=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_DEVFS_FS is not set
|
||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_XATTR=y
|
||||
|
@ -885,15 +940,18 @@ CONFIG_RAMFS=y
|
|||
#
|
||||
CONFIG_NFS_FS=m
|
||||
CONFIG_NFS_V3=y
|
||||
# CONFIG_NFS_V3_ACL is not set
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_NFS_DIRECTIO=y
|
||||
CONFIG_NFSD=m
|
||||
CONFIG_NFSD_V3=y
|
||||
# CONFIG_NFSD_V3_ACL is not set
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_NFSD_TCP=y
|
||||
CONFIG_LOCKD=m
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_EXPORTFS=m
|
||||
CONFIG_EXPORTFS=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=m
|
||||
CONFIG_SUNRPC_GSS=m
|
||||
CONFIG_RPCSEC_GSS_KRB5=m
|
||||
|
@ -980,6 +1038,9 @@ CONFIG_CRC32=y
|
|||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=m
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
|
@ -989,15 +1050,19 @@ CONFIG_ZLIB_DEFLATE=m
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=20
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
# CONFIG_KPROBES is not set
|
||||
CONFIG_IA64_GRANULE_16MB=y
|
||||
# CONFIG_IA64_GRANULE_64MB is not set
|
||||
# CONFIG_IA64_PRINT_HAZARDS is not set
|
||||
|
@ -1019,11 +1084,12 @@ CONFIG_CRYPTO=y
|
|||
CONFIG_CRYPTO_HMAC=y
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
CONFIG_CRYPTO_MD5=m
|
||||
CONFIG_CRYPTO_MD5=y
|
||||
CONFIG_CRYPTO_SHA1=m
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
CONFIG_CRYPTO_DES=m
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc1-20050629
|
||||
# Wed Jun 29 15:28:12 2005
|
||||
# Linux kernel version: 2.6.13-rc6-tiger-smp
|
||||
# Wed Aug 17 10:19:51 2005
|
||||
#
|
||||
|
||||
#
|
||||
|
@ -132,6 +132,7 @@ CONFIG_ACPI_BOOT=y
|
|||
CONFIG_ACPI_INTERPRETER=y
|
||||
CONFIG_ACPI_BUTTON=m
|
||||
# CONFIG_ACPI_VIDEO is not set
|
||||
# CONFIG_ACPI_HOTKEY is not set
|
||||
CONFIG_ACPI_FAN=m
|
||||
CONFIG_ACPI_PROCESSOR=m
|
||||
# CONFIG_ACPI_HOTPLUG_CPU is not set
|
||||
|
@ -169,6 +170,66 @@ CONFIG_HOTPLUG_PCI_ACPI=m
|
|||
#
|
||||
# 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
|
||||
#
|
||||
|
@ -178,7 +239,7 @@ CONFIG_HOTPLUG_PCI_ACPI=m
|
|||
#
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
CONFIG_FW_LOADER=m
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
|
||||
#
|
||||
|
@ -348,6 +409,7 @@ CONFIG_SCSI_QLA22XX=m
|
|||
CONFIG_SCSI_QLA2300=m
|
||||
CONFIG_SCSI_QLA2322=m
|
||||
# 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_DC390T is not set
|
||||
|
@ -393,72 +455,8 @@ CONFIG_FUSION_CTL=y
|
|||
# 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_DUMMY=m
|
||||
# CONFIG_BONDING is not set
|
||||
|
@ -555,6 +553,10 @@ CONFIG_TIGON3=y
|
|||
# CONFIG_NET_FC is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
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
|
||||
|
@ -680,6 +682,7 @@ CONFIG_DRM_R128=m
|
|||
CONFIG_DRM_RADEON=m
|
||||
CONFIG_DRM_MGA=m
|
||||
CONFIG_DRM_SIS=m
|
||||
# CONFIG_DRM_VIA is not set
|
||||
CONFIG_RAW_DRIVER=m
|
||||
CONFIG_HPET=y
|
||||
# CONFIG_HPET_RTC_IRQ is not set
|
||||
|
@ -696,12 +699,19 @@ CONFIG_MAX_RAW_DEVS=256
|
|||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
# CONFIG_I2C_SENSOR is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
@ -800,6 +810,7 @@ CONFIG_USB_HIDINPUT=y
|
|||
# CONFIG_USB_EGALAX is not set
|
||||
# CONFIG_USB_XPAD is not set
|
||||
# CONFIG_USB_ATI_REMOTE is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
|
@ -850,6 +861,7 @@ CONFIG_USB_HIDINPUT=y
|
|||
# CONFIG_USB_PHIDGETSERVO is not set
|
||||
# CONFIG_USB_IDMOUSE is not set
|
||||
# CONFIG_USB_SISUSBVGA is not set
|
||||
# CONFIG_USB_LD 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_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_AUTOFS_FS=y
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc1-20050629
|
||||
# Wed Jun 29 15:31:11 2005
|
||||
# Linux kernel version: 2.6.13-rc6
|
||||
# Wed Aug 17 10:02:43 2005
|
||||
#
|
||||
|
||||
#
|
||||
|
@ -132,6 +132,7 @@ CONFIG_ACPI_BOOT=y
|
|||
CONFIG_ACPI_INTERPRETER=y
|
||||
CONFIG_ACPI_BUTTON=y
|
||||
CONFIG_ACPI_VIDEO=m
|
||||
CONFIG_ACPI_HOTKEY=m
|
||||
CONFIG_ACPI_FAN=y
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
|
@ -168,6 +169,83 @@ CONFIG_HOTPLUG_PCI_ACPI=y
|
|||
#
|
||||
# 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
|
||||
#
|
||||
|
@ -349,6 +427,7 @@ CONFIG_SCSI_QLA2XXX=y
|
|||
# CONFIG_SCSI_QLA2300 is not set
|
||||
# CONFIG_SCSI_QLA2322 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_DC390T is not set
|
||||
|
@ -362,9 +441,11 @@ CONFIG_SCSI_QLA2XXX=y
|
|||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
# CONFIG_FUSION is not set
|
||||
# CONFIG_FUSION_SPI is not set
|
||||
# CONFIG_FUSION_FC is not set
|
||||
CONFIG_FUSION=y
|
||||
CONFIG_FUSION_SPI=y
|
||||
CONFIG_FUSION_FC=y
|
||||
CONFIG_FUSION_MAX_SGE=128
|
||||
CONFIG_FUSION_CTL=m
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
|
@ -377,87 +458,8 @@ CONFIG_SCSI_QLA2XXX=y
|
|||
# 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_DUMMY=y
|
||||
# CONFIG_BONDING is not set
|
||||
|
@ -555,6 +557,8 @@ CONFIG_TIGON3=y
|
|||
# CONFIG_NET_FC is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
|
@ -659,6 +663,7 @@ CONFIG_DRM=y
|
|||
CONFIG_DRM_RADEON=y
|
||||
# CONFIG_DRM_MGA is not set
|
||||
# CONFIG_DRM_SIS is not set
|
||||
# CONFIG_DRM_VIA is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_HPET 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_VOODOO3 is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
|
||||
#
|
||||
# Hardware Sensors Chip support
|
||||
#
|
||||
# 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_DS1374 is not set
|
||||
|
@ -766,6 +734,11 @@ CONFIG_I2C_ALGOPCF=y
|
|||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
@ -782,7 +755,6 @@ CONFIG_VIDEO_DEV=y
|
|||
#
|
||||
# Video Adapters
|
||||
#
|
||||
# CONFIG_TUNER_MULTI_I2C is not set
|
||||
# CONFIG_VIDEO_BT848 is not set
|
||||
# CONFIG_VIDEO_CPIA 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_XPAD is not set
|
||||
# CONFIG_USB_ATI_REMOTE is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
|
@ -1080,6 +1053,7 @@ CONFIG_USB_MON=y
|
|||
# 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 DSL modem support
|
||||
|
@ -1121,6 +1095,7 @@ CONFIG_JBD=y
|
|||
CONFIG_FS_MBCACHE=y
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
|
||||
#
|
||||
# XFS support
|
||||
|
@ -1128,6 +1103,7 @@ CONFIG_FS_MBCACHE=y
|
|||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_INOTIFY is not set
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_AUTOFS_FS=y
|
||||
|
|
|
@ -341,7 +341,7 @@ next_sg:
|
|||
#endif
|
||||
|
||||
/* Attach the domains */
|
||||
for_each_online_cpu(i) {
|
||||
for_each_cpu_mask(i, *cpu_map) {
|
||||
struct sched_domain *sd;
|
||||
#ifdef CONFIG_SCHED_SMT
|
||||
sd = &per_cpu(cpu_domains, i);
|
||||
|
|
|
@ -4312,6 +4312,7 @@ pfm_context_load(pfm_context_t *ctx, void *arg, int count, struct pt_regs *regs)
|
|||
DPRINT(("before cmpxchg() old_ctx=%p new_ctx=%p\n",
|
||||
thread->pfm_context, ctx));
|
||||
|
||||
ret = -EBUSY;
|
||||
old = ia64_cmpxchg(acq, &thread->pfm_context, NULL, ctx, sizeof(pfm_context_t *));
|
||||
if (old != NULL) {
|
||||
DPRINT(("load_pid [%d] already has a context\n", req->load_pid));
|
||||
|
|
|
@ -143,7 +143,8 @@ struct salinfo_data {
|
|||
|
||||
static struct salinfo_data salinfo_data[ARRAY_SIZE(salinfo_log_name)];
|
||||
|
||||
static 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
|
||||
* record.
|
||||
|
|
|
@ -203,6 +203,7 @@ static void sn_fixup_ionodes(void)
|
|||
continue;
|
||||
}
|
||||
|
||||
spin_lock_init(&sn_flush_device_list->sfdl_flush_lock);
|
||||
hubdev->hdi_flush_nasid_list.widget_p[widget] =
|
||||
sn_flush_device_list;
|
||||
}
|
||||
|
|
|
@ -620,6 +620,7 @@ ppc4xx_clr_dma_status(unsigned int dmanr)
|
|||
return DMA_STATUS_GOOD;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PPC4xx_EDMA
|
||||
/*
|
||||
* Enables the burst on the channel (BTEN bit in the control/count register)
|
||||
* Note:
|
||||
|
@ -685,6 +686,11 @@ ppc4xx_set_burst_size(unsigned int dmanr, unsigned int bsize)
|
|||
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_get_channel_config);
|
||||
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_get_dma_status);
|
||||
EXPORT_SYMBOL(ppc4xx_clr_dma_status);
|
||||
EXPORT_SYMBOL(ppc4xx_enable_burst);
|
||||
EXPORT_SYMBOL(ppc4xx_disable_burst);
|
||||
EXPORT_SYMBOL(ppc4xx_set_burst_size);
|
||||
|
||||
|
|
|
@ -32,32 +32,12 @@
|
|||
/* The HvReleaseData is the root of the information shared between
|
||||
* the 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 = {
|
||||
.xDesc = 0xc8a5d9c4, /* "HvRD" ebcdic */
|
||||
.xSize = sizeof(struct HvReleaseData),
|
||||
.xVpdAreasPtrOffset = offsetof(struct naca_struct, xItVpdAreas),
|
||||
.xSlicNacaAddr = &naca, /* 64-bit Naca address */
|
||||
.xMsNucDataOffset = (u32)((unsigned long)&xLparMap - KERNELBASE),
|
||||
.xMsNucDataOffset = LPARMAP_PHYS,
|
||||
.xFlags = HVREL_TAGSINACTIVE /* tags inactive */
|
||||
/* 64 bit */
|
||||
/* shared processors */
|
||||
|
@ -70,63 +50,6 @@ struct HvReleaseData hvReleaseData = {
|
|||
0xa7, 0x40, 0xf2, 0x4b,
|
||||
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 machine_check_iSeries(void);
|
||||
|
|
|
@ -73,3 +73,8 @@ obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o
|
|||
obj-$(CONFIG_KPROBES) += kprobes.o
|
||||
|
||||
CFLAGS_ioctl32.o += -Ifs/
|
||||
|
||||
ifeq ($(CONFIG_PPC_ISERIES),y)
|
||||
arch/ppc64/kernel/head.o: arch/ppc64/kernel/lparmap.s
|
||||
AFLAGS_head.o += -Iarch/ppc64/kernel
|
||||
endif
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#include <asm/cputable.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/hvcall.h>
|
||||
#include <asm/iSeries/LparMap.h>
|
||||
|
||||
#ifdef CONFIG_PPC_ISERIES
|
||||
#define DO_SOFT_DISABLE
|
||||
|
@ -679,6 +680,11 @@ hardware_interrupt_iSeries_masked:
|
|||
.globl 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.
|
||||
*/
|
||||
|
|
|
@ -242,7 +242,7 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl,
|
|||
dma_addr_t dma_next = 0, dma_addr;
|
||||
unsigned long flags;
|
||||
struct scatterlist *s, *outs, *segstart;
|
||||
int outcount;
|
||||
int outcount, incount;
|
||||
unsigned long handle;
|
||||
|
||||
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];
|
||||
outcount = 1;
|
||||
incount = nelems;
|
||||
handle = 0;
|
||||
|
||||
/* 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);
|
||||
|
||||
/* 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
|
||||
*/
|
||||
if (outcount < nelems) {
|
||||
if (outcount < incount) {
|
||||
outs++;
|
||||
outs->dma_address = DMA_ERROR_CODE;
|
||||
outs->dma_length = 0;
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright (C) 2005 Stephen Rothwell IBM Corp.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
#include <asm/mmu.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/iSeries/LparMap.h>
|
||||
|
||||
const struct LparMap __attribute__((__section__(".text"))) xLparMap = {
|
||||
.xNumberEsids = HvEsidsToMap,
|
||||
.xNumberRanges = HvRangesToMap,
|
||||
.xSegmentTableOffs = STAB0_PAGE,
|
||||
|
||||
.xEsids = {
|
||||
{ .xKernelEsid = GET_ESID(KERNELBASE),
|
||||
.xKernelVsid = KERNEL_VSID(KERNELBASE), },
|
||||
{ .xKernelEsid = GET_ESID(VMALLOCBASE),
|
||||
.xKernelVsid = KERNEL_VSID(VMALLOCBASE), },
|
||||
},
|
||||
|
||||
.xRanges = {
|
||||
{ .xPages = HvPagesToMap,
|
||||
.xOffset = 0,
|
||||
.xVPN = KERNEL_VSID(KERNELBASE) << (SID_SHIFT - PAGE_SHIFT),
|
||||
},
|
||||
},
|
||||
};
|
|
@ -1145,5 +1145,10 @@ ENTRY(sys_call_table)
|
|||
.long sys_add_key /* 285 */
|
||||
.long sys_request_key
|
||||
.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 */
|
||||
|
|
|
@ -342,4 +342,9 @@ sys_call_table:
|
|||
.long sys_add_key
|
||||
.long sys_request_key
|
||||
.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 */
|
||||
|
||||
|
|
|
@ -88,7 +88,6 @@ static void frob_mem_refresh(int cpu_slowing_down,
|
|||
{
|
||||
unsigned long old_refr_count, refr_count, mctrl;
|
||||
|
||||
|
||||
refr_count = (clock_tick * MCTRL0_REFR_INTERVAL);
|
||||
refr_count /= (MCTRL0_REFR_CLKS_P_CNT * divisor * 1000000000UL);
|
||||
|
||||
|
@ -230,6 +229,25 @@ static unsigned long estar_to_divisor(unsigned long estar)
|
|||
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)
|
||||
{
|
||||
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;
|
||||
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);
|
||||
divisor = index_to_divisor(index);
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
|
@ -272,10 +291,8 @@ static int us2e_freq_target(struct cpufreq_policy *policy,
|
|||
unsigned int new_index = 0;
|
||||
|
||||
if (cpufreq_frequency_table_target(policy,
|
||||
&us2e_freq_table[policy->cpu].table[0],
|
||||
target_freq,
|
||||
relation,
|
||||
&new_index))
|
||||
&us2e_freq_table[policy->cpu].table[0],
|
||||
target_freq, relation, &new_index))
|
||||
return -EINVAL;
|
||||
|
||||
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)
|
||||
{
|
||||
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 =
|
||||
&us2e_freq_table[cpu].table[0];
|
||||
|
||||
|
@ -351,9 +368,10 @@ static int __init us2e_freq_init(void)
|
|||
memset(us2e_freq_table, 0,
|
||||
(NR_CPUS * sizeof(struct us2e_freq_percpu_info)));
|
||||
|
||||
driver->init = us2e_freq_cpu_init;
|
||||
driver->verify = us2e_freq_verify;
|
||||
driver->target = us2e_freq_target;
|
||||
driver->init = us2e_freq_cpu_init;
|
||||
driver->get = us2e_freq_get;
|
||||
driver->exit = us2e_freq_cpu_exit;
|
||||
driver->owner = THIS_MODULE,
|
||||
strcpy(driver->name, "UltraSPARC-IIe");
|
||||
|
|
|
@ -56,7 +56,7 @@ static void write_safari_cfg(unsigned long val)
|
|||
|
||||
static unsigned long get_current_freq(unsigned int cpu, unsigned long safari_cfg)
|
||||
{
|
||||
unsigned long clock_tick = sparc64_get_clock_tick(cpu);
|
||||
unsigned long clock_tick = sparc64_get_clock_tick(cpu) / 1000;
|
||||
unsigned long ret;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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;
|
||||
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) {
|
||||
case 0:
|
||||
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)
|
||||
{
|
||||
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 =
|
||||
&us3_freq_table[cpu].table[0];
|
||||
|
||||
|
@ -206,9 +226,10 @@ static int __init us3_freq_init(void)
|
|||
memset(us3_freq_table, 0,
|
||||
(NR_CPUS * sizeof(struct us3_freq_percpu_info)));
|
||||
|
||||
driver->init = us3_freq_cpu_init;
|
||||
driver->verify = us3_freq_verify;
|
||||
driver->target = us3_freq_target;
|
||||
driver->init = us3_freq_cpu_init;
|
||||
driver->get = us3_freq_get;
|
||||
driver->exit = us3_freq_cpu_exit;
|
||||
driver->owner = THIS_MODULE,
|
||||
strcpy(driver->name, "UltraSPARC-III");
|
||||
|
|
|
@ -61,7 +61,11 @@ void wait_stub_done(int pid, int sig, char * fname)
|
|||
|
||||
CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED));
|
||||
} 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) ||
|
||||
(WSTOPSIG(status) != SIGUSR1 && WSTOPSIG(status) != SIGTRAP)){
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
*/
|
||||
#include <elf.h>
|
||||
#include <stddef.h>
|
||||
#include <asm/elf.h>
|
||||
#include "init.h"
|
||||
#include "elf_user.h"
|
||||
#include "mem_user.h"
|
||||
|
|
|
@ -334,7 +334,7 @@ static void __cpuinit tsc_sync_wait(void)
|
|||
{
|
||||
if (notscsync || !cpu_has_tsc)
|
||||
return;
|
||||
sync_tsc(boot_cpu_id);
|
||||
sync_tsc(0);
|
||||
}
|
||||
|
||||
static __init int notscsync_setup(char *s)
|
||||
|
|
|
@ -43,7 +43,7 @@ ACPI_MODULE_NAME ("acpi_motherboard")
|
|||
*/
|
||||
#define IS_RESERVED_ADDR(base, len) \
|
||||
(((len) > 0) && ((base) > 0) && ((base) + (len) < IO_SPACE_LIMIT) \
|
||||
&& ((base) + (len) > 0x1000))
|
||||
&& ((base) + (len) > PCIBIOS_MIN_IO))
|
||||
|
||||
/*
|
||||
* Clearing the flag (IORESOURCE_BUSY) allows drivers to use
|
||||
|
|
|
@ -71,7 +71,7 @@ EXPORT_SYMBOL(acpi_in_debugger);
|
|||
extern char line_buf[80];
|
||||
#endif /*ENABLE_DEBUGGER*/
|
||||
|
||||
int acpi_specific_hotkey_enabled;
|
||||
int acpi_specific_hotkey_enabled = TRUE;
|
||||
EXPORT_SYMBOL(acpi_specific_hotkey_enabled);
|
||||
|
||||
static unsigned int acpi_irq_irq;
|
||||
|
@ -1162,11 +1162,11 @@ __setup("acpi_wake_gpes_always_on", acpi_wake_gpes_always_on_setup);
|
|||
int __init
|
||||
acpi_hotkey_setup(char *str)
|
||||
{
|
||||
acpi_specific_hotkey_enabled = TRUE;
|
||||
acpi_specific_hotkey_enabled = FALSE;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("acpi_specific_hotkey", acpi_hotkey_setup);
|
||||
__setup("acpi_generic_hotkey", acpi_hotkey_setup);
|
||||
|
||||
/*
|
||||
* max_cstate is defined in the base kernel so modules can
|
||||
|
|
|
@ -180,7 +180,9 @@ static ssize_t driver_bind(struct device_driver *drv,
|
|||
up(&dev->sem);
|
||||
put_device(dev);
|
||||
}
|
||||
return err;
|
||||
if (err)
|
||||
return err;
|
||||
return count;
|
||||
}
|
||||
static DRIVER_ATTR(bind, S_IWUSR, NULL, driver_bind);
|
||||
|
||||
|
|
|
@ -299,6 +299,11 @@ static void class_dev_release(struct kobject * kobj)
|
|||
|
||||
pr_debug("device class '%s': release.\n", cd->class_id);
|
||||
|
||||
if (cd->devt_attr) {
|
||||
kfree(cd->devt_attr);
|
||||
cd->devt_attr = NULL;
|
||||
}
|
||||
|
||||
if (cls->release)
|
||||
cls->release(cd);
|
||||
else {
|
||||
|
@ -591,11 +596,8 @@ void class_device_del(struct class_device *class_dev)
|
|||
|
||||
if (class_dev->dev)
|
||||
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);
|
||||
kfree(class_dev->devt_attr);
|
||||
class_dev->devt_attr = NULL;
|
||||
}
|
||||
class_device_remove_attrs(class_dev);
|
||||
|
||||
kobject_hotplug(&class_dev->kobj, KOBJ_REMOVE);
|
||||
|
|
|
@ -261,7 +261,11 @@ static int mmap_mem(struct file * file, struct vm_area_struct * vma)
|
|||
|
||||
static int mmap_kmem(struct file * file, struct vm_area_struct * vma)
|
||||
{
|
||||
unsigned long long val;
|
||||
unsigned long pfn;
|
||||
|
||||
/* Turn a kernel-virtual address into a physical page frame */
|
||||
pfn = __pa((u64)vma->vm_pgoff << PAGE_SHIFT) >> PAGE_SHIFT;
|
||||
|
||||
/*
|
||||
* RED-PEN: on some architectures there is more mapped memory
|
||||
* than available in mem_map which pfn_valid checks
|
||||
|
@ -269,10 +273,10 @@ static int mmap_kmem(struct file * file, struct vm_area_struct * vma)
|
|||
*
|
||||
* RED-PEN: vmalloc is not supported right now.
|
||||
*/
|
||||
if (!pfn_valid(vma->vm_pgoff))
|
||||
if (!pfn_valid(pfn))
|
||||
return -EIO;
|
||||
val = (u64)vma->vm_pgoff << PAGE_SHIFT;
|
||||
vma->vm_pgoff = __pa(val) >> PAGE_SHIFT;
|
||||
|
||||
vma->vm_pgoff = pfn;
|
||||
return mmap_mem(file, vma);
|
||||
}
|
||||
|
||||
|
|
|
@ -764,6 +764,7 @@ config BLK_DEV_IDE_PMAC_ATA100FIRST
|
|||
config BLK_DEV_IDEDMA_PMAC
|
||||
bool "PowerMac IDE DMA support"
|
||||
depends on BLK_DEV_IDE_PMAC
|
||||
select BLK_DEV_IDEDMA_PCI
|
||||
help
|
||||
This option allows the driver for the built-in IDE controller on
|
||||
Power Macintoshes and PowerBooks to use DMA (direct memory access)
|
||||
|
|
|
@ -317,7 +317,7 @@ typedef struct ide_floppy_obj {
|
|||
unsigned long flags;
|
||||
} 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.
|
||||
|
|
|
@ -173,6 +173,12 @@ static ide_pci_device_t generic_chipsets[] __devinitdata = {
|
|||
.channels = 2,
|
||||
.autodma = NOAUTODMA,
|
||||
.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_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_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 */
|
||||
{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE << 8, 0xFFFFFF00UL, 0},
|
||||
{ 0, },
|
||||
|
|
|
@ -21,6 +21,9 @@
|
|||
*
|
||||
* 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:
|
||||
* 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)
|
||||
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) {
|
||||
u32 reg = 0;
|
||||
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_CSB6IDE:
|
||||
case PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2:
|
||||
case PCI_DEVICE_ID_SERVERWORKS_HT1000IDE:
|
||||
return 1;
|
||||
default:
|
||||
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;
|
||||
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;
|
||||
}
|
||||
|
@ -629,6 +642,15 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = {
|
|||
.channels = 1, /* 2 */
|
||||
.autodma = AUTODMA,
|
||||
.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_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_HT1000IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4},
|
||||
{ 0, },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pci, svwks_pci_tbl);
|
||||
|
|
|
@ -1664,7 +1664,7 @@ static struct macio_driver pmac_ide_macio_driver =
|
|||
};
|
||||
|
||||
static struct pci_device_id pmac_ide_pci_match[] = {
|
||||
{ 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_K2_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
|
||||
{ PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_SH_ATA,
|
||||
|
|
|
@ -229,6 +229,7 @@ second_chance_to_dma:
|
|||
case PCI_DEVICE_ID_AMD_VIPER_7409:
|
||||
case PCI_DEVICE_ID_CMD_643:
|
||||
case PCI_DEVICE_ID_SERVERWORKS_CSB5IDE:
|
||||
case PCI_DEVICE_ID_REVOLUTION:
|
||||
simplex_stat = hwif->INB(dma_base + 2);
|
||||
hwif->OUTB((simplex_stat&0x60),(dma_base + 2));
|
||||
simplex_stat = hwif->INB(dma_base + 2);
|
||||
|
|
|
@ -623,6 +623,7 @@ static int super_90_validate(mddev_t *mddev, mdk_rdev_t *rdev)
|
|||
mddev->raid_disks = sb->raid_disks;
|
||||
mddev->size = sb->size;
|
||||
mddev->events = md_event(sb);
|
||||
mddev->bitmap_offset = 0;
|
||||
|
||||
if (sb->state & (1<<MD_SB_CLEAN))
|
||||
mddev->recovery_cp = MaxSector;
|
||||
|
@ -938,6 +939,7 @@ static int super_1_validate(mddev_t *mddev, mdk_rdev_t *rdev)
|
|||
mddev->raid_disks = le32_to_cpu(sb->raid_disks);
|
||||
mddev->size = le64_to_cpu(sb->size)/2;
|
||||
mddev->events = le64_to_cpu(sb->events);
|
||||
mddev->bitmap_offset = 0;
|
||||
|
||||
mddev->recovery_cp = le64_to_cpu(sb->resync_offset);
|
||||
memcpy(mddev->uuid, sb->set_uuid, 16);
|
||||
|
@ -1824,6 +1826,7 @@ static int do_md_stop(mddev_t * mddev, int ro)
|
|||
fput(mddev->bitmap_file);
|
||||
mddev->bitmap_file = NULL;
|
||||
}
|
||||
mddev->bitmap_offset = 0;
|
||||
|
||||
/*
|
||||
* Free resources if final stop
|
||||
|
|
|
@ -1897,6 +1897,7 @@ static int cp_resume (struct pci_dev *pdev)
|
|||
{
|
||||
struct net_device *dev;
|
||||
struct cp_private *cp;
|
||||
unsigned long flags;
|
||||
|
||||
dev = pci_get_drvdata (pdev);
|
||||
cp = netdev_priv(dev);
|
||||
|
@ -1910,6 +1911,12 @@ static int cp_resume (struct pci_dev *pdev)
|
|||
|
||||
cp_init_hw (cp);
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -48,6 +48,10 @@
|
|||
* net_device_stats
|
||||
* * introduced tx_timeout function
|
||||
* * reworked locking
|
||||
*
|
||||
* 01-Jul-2005 Ben Dooks <ben@simtec.co.uk>
|
||||
* * fixed spinlock call without pointer
|
||||
* * ensure spinlock is initialised
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
@ -148,7 +152,6 @@ static int dm9000_probe(struct device *);
|
|||
static int dm9000_open(struct net_device *);
|
||||
static int dm9000_start_xmit(struct sk_buff *, 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);
|
||||
|
@ -322,7 +325,7 @@ static void dm9000_timeout(struct net_device *dev)
|
|||
|
||||
/* Save previous register address */
|
||||
reg_save = readb(db->io_addr);
|
||||
spin_lock_irqsave(db->lock,flags);
|
||||
spin_lock_irqsave(&db->lock,flags);
|
||||
|
||||
netif_stop_queue(dev);
|
||||
dm9000_reset(db);
|
||||
|
@ -333,7 +336,7 @@ static void dm9000_timeout(struct net_device *dev)
|
|||
|
||||
/* Restore previous register address */
|
||||
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;
|
||||
u32 id_val;
|
||||
|
||||
printk(KERN_INFO "%s Ethernet Driver\n", CARDNAME);
|
||||
|
||||
/* Init network device */
|
||||
ndev = alloc_etherdev(sizeof (struct board_info));
|
||||
if (!ndev) {
|
||||
|
@ -405,6 +406,8 @@ dm9000_probe(struct device *dev)
|
|||
db = (struct board_info *) ndev->priv;
|
||||
memset(db, 0, sizeof (*db));
|
||||
|
||||
spin_lock_init(&db->lock);
|
||||
|
||||
if (pdev->num_resources < 2) {
|
||||
ret = -ENODEV;
|
||||
goto out;
|
||||
|
@ -541,7 +544,6 @@ dm9000_probe(struct device *dev)
|
|||
ndev->stop = &dm9000_stop;
|
||||
ndev->get_stats = &dm9000_get_stats;
|
||||
ndev->set_multicast_list = &dm9000_hash_table;
|
||||
ndev->do_ioctl = &dm9000_do_ioctl;
|
||||
|
||||
#ifdef DM9000_PROGRAM_EEPROM
|
||||
program_eeprom(db);
|
||||
|
@ -612,7 +614,7 @@ dm9000_open(struct net_device *dev)
|
|||
|
||||
/* set and active a timer process */
|
||||
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.function = &dm9000_timer;
|
||||
add_timer(&db->timer);
|
||||
|
@ -845,15 +847,6 @@ dm9000_get_stats(struct net_device *dev)
|
|||
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
|
||||
|
@ -864,21 +857,11 @@ dm9000_timer(unsigned long data)
|
|||
{
|
||||
struct net_device *dev = (struct net_device *) data;
|
||||
board_info_t *db = (board_info_t *) dev->priv;
|
||||
u8 reg_save;
|
||||
unsigned long flags;
|
||||
|
||||
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);
|
||||
|
||||
/* Restore previous register address */
|
||||
writeb(reg_save, db->io_addr);
|
||||
spin_unlock_irqrestore(db->lock,flags);
|
||||
|
||||
/* Set timer again */
|
||||
db->timer.expires = DM9000_TIMER_WUT;
|
||||
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;
|
||||
unsigned long flags;
|
||||
unsigned int reg_save;
|
||||
int ret;
|
||||
|
||||
spin_lock_irqsave(&db->lock,flags);
|
||||
|
||||
/* Save previous register address */
|
||||
reg_save = readb(db->io_addr);
|
||||
|
||||
/* Fill the phyxcer register into REG_0C */
|
||||
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 */
|
||||
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);
|
||||
|
||||
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;
|
||||
unsigned long flags;
|
||||
unsigned long reg_save;
|
||||
|
||||
spin_lock_irqsave(&db->lock,flags);
|
||||
|
||||
/* Save previous register address */
|
||||
reg_save = readb(db->io_addr);
|
||||
|
||||
/* Fill the phyxcer register into REG_0C */
|
||||
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 */
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -1202,6 +1200,8 @@ static struct device_driver dm9000_driver = {
|
|||
static int __init
|
||||
dm9000_init(void)
|
||||
{
|
||||
printk(KERN_INFO "%s Ethernet Driver\n", CARDNAME);
|
||||
|
||||
return driver_register(&dm9000_driver); /* search board and register */
|
||||
}
|
||||
|
||||
|
|
|
@ -3789,6 +3789,7 @@ e1000_netpoll(struct net_device *netdev)
|
|||
struct e1000_adapter *adapter = netdev_priv(netdev);
|
||||
disable_irq(adapter->pdev->irq);
|
||||
e1000_intr(adapter->pdev->irq, netdev, NULL);
|
||||
e1000_clean_tx_irq(adapter);
|
||||
enable_irq(adapter->pdev->irq);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -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);
|
||||
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)
|
||||
|
@ -1291,7 +1291,6 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
dev->features = NETIF_F_IP_CSUM;
|
||||
#endif
|
||||
|
||||
ioc3_setup_duplex(ip);
|
||||
sw_physid1 = ioc3_mdio_read(dev, ip->mii.phy_id, MII_PHYSID1);
|
||||
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;
|
||||
|
||||
mii_check_media(&ip->mii, 1, 1);
|
||||
ioc3_setup_duplex(ip);
|
||||
|
||||
vendor = (sw_physid1 << 12) | (sw_physid2 >> 4);
|
||||
model = (sw_physid2 >> 4) & 0x3f;
|
||||
|
@ -1524,7 +1524,7 @@ static void ioc3_get_drvinfo (struct net_device *dev,
|
|||
struct ethtool_drvinfo *info)
|
||||
{
|
||||
struct ioc3_private *ip = netdev_priv(dev);
|
||||
|
||||
|
||||
strcpy (info->driver, IOC3_NAME);
|
||||
strcpy (info->version, IOC3_VERSION);
|
||||
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);
|
||||
rc = mii_ethtool_sset(&ip->mii, cmd);
|
||||
spin_unlock_irq(&ip->ioc3_lock);
|
||||
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
|
@ -220,7 +220,7 @@ struct net_device loopback_dev = {
|
|||
.ethtool_ops = &loopback_ethtool_ops,
|
||||
};
|
||||
|
||||
/* Setup and register the of the LOOPBACK device. */
|
||||
/* Setup and register the loopback device. */
|
||||
int __init loopback_init(void)
|
||||
{
|
||||
struct net_device_stats *stats;
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* 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
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <dely.l.sy@intel.com>
|
||||
* Send feedback to <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* 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
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <dely.l.sy@intel.com>
|
||||
* Send feedback to <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com>
|
||||
* Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
@ -453,7 +453,7 @@ static void enable_msi_mode(struct pci_dev *dev, int pos, int type)
|
|||
}
|
||||
}
|
||||
|
||||
static void disable_msi_mode(struct pci_dev *dev, int pos, int type)
|
||||
void disable_msi_mode(struct pci_dev *dev, int pos, int type)
|
||||
{
|
||||
u16 control;
|
||||
|
||||
|
@ -699,6 +699,9 @@ int pci_enable_msi(struct pci_dev* dev)
|
|||
if (!pci_msi_enable || !dev)
|
||||
return status;
|
||||
|
||||
if (dev->no_msi)
|
||||
return status;
|
||||
|
||||
temp = dev->irq;
|
||||
|
||||
if ((status = msi_init()) < 0)
|
||||
|
|
|
@ -47,6 +47,12 @@ extern int pci_msi_quirk;
|
|||
#define pci_msi_quirk 0
|
||||
#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 struct device_attribute pci_dev_attrs[];
|
||||
extern struct class_device_attribute class_device_attr_cpuaffinity;
|
||||
|
|
|
@ -1291,6 +1291,27 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7520_MCH, quir
|
|||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7320_MCH, quirk_pcie_mch );
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_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)
|
||||
{
|
||||
unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;
|
||||
|
|
|
@ -312,6 +312,8 @@ found:
|
|||
if (drv->link.driver.probe) {
|
||||
if (drv->link.driver.probe(&dev->dev)) {
|
||||
dev->dev.driver = NULL;
|
||||
dev->card_link = NULL;
|
||||
up_write(&dev->dev.bus->subsys.rwsem);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -183,7 +183,7 @@
|
|||
* cross a page boundy.
|
||||
*/
|
||||
#define SEGMENTX_LEN (sizeof(struct SGentry)*DC395x_MAX_SG_LISTENTRY)
|
||||
#define VIRTX_LEN (sizeof(void *) * DC395x_MAX_SG_LISTENTRY)
|
||||
|
||||
|
||||
struct SGentry {
|
||||
u32 address; /* bus! address */
|
||||
|
@ -235,7 +235,6 @@ struct ScsiReqBlk {
|
|||
u8 sg_count; /* No of HW sg entries for this request */
|
||||
u8 sg_index; /* Index of HW sg entry for this request */
|
||||
u32 total_xfer_length; /* Total number of bytes remaining to be transfered */
|
||||
void **virt_map;
|
||||
unsigned char *virt_addr; /* Virtual address of current transfer position */
|
||||
|
||||
/*
|
||||
|
@ -1022,14 +1021,14 @@ static void build_srb(struct scsi_cmnd *cmd, struct DeviceCtlBlk *dcb,
|
|||
reqlen, cmd->request_buffer, cmd->use_sg,
|
||||
srb->sg_count);
|
||||
|
||||
srb->virt_addr = page_address(sl->page);
|
||||
for (i = 0; i < srb->sg_count; i++) {
|
||||
u32 seglen = (u32)sg_dma_len(sl + i);
|
||||
sgp[i].address = (u32)sg_dma_address(sl + i);
|
||||
u32 busaddr = (u32)sg_dma_address(&sl[i]);
|
||||
u32 seglen = (u32)sl[i].length;
|
||||
sgp[i].address = busaddr;
|
||||
sgp[i].length = seglen;
|
||||
srb->total_xfer_length += seglen;
|
||||
srb->virt_map[i] = kmap(sl[i].page);
|
||||
}
|
||||
srb->virt_addr = srb->virt_map[0];
|
||||
sgp += srb->sg_count - 1;
|
||||
|
||||
/*
|
||||
|
@ -1976,7 +1975,6 @@ static void sg_update_list(struct ScsiReqBlk *srb, u32 left)
|
|||
int segment = cmd->use_sg;
|
||||
u32 xferred = srb->total_xfer_length - left; /* bytes transfered */
|
||||
struct SGentry *psge = srb->segment_x + srb->sg_index;
|
||||
void **virt = srb->virt_map;
|
||||
|
||||
dprintkdbg(DBG_0,
|
||||
"sg_update_list: Transfered %i of %i bytes, %i remain\n",
|
||||
|
@ -2016,16 +2014,16 @@ static void sg_update_list(struct ScsiReqBlk *srb, u32 left)
|
|||
|
||||
/* We have to walk the scatterlist to find it */
|
||||
sg = (struct scatterlist *)cmd->request_buffer;
|
||||
idx = 0;
|
||||
while (segment--) {
|
||||
unsigned long mask =
|
||||
~((unsigned long)sg->length - 1) & PAGE_MASK;
|
||||
if ((sg_dma_address(sg) & mask) == (psge->address & mask)) {
|
||||
srb->virt_addr = virt[idx] + (psge->address & ~PAGE_MASK);
|
||||
srb->virt_addr = (page_address(sg->page)
|
||||
+ psge->address -
|
||||
(psge->address & PAGE_MASK));
|
||||
return;
|
||||
}
|
||||
++sg;
|
||||
++idx;
|
||||
}
|
||||
|
||||
dprintkl(KERN_ERR, "sg_update_list: sg_to_virt failed\n");
|
||||
|
@ -2151,7 +2149,7 @@ static void data_out_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
|
|||
DC395x_read32(acb, TRM_S1040_DMA_CXCNT));
|
||||
}
|
||||
/*
|
||||
* calculate all the residue data that not yet transfered
|
||||
* calculate all the residue data that not yet tranfered
|
||||
* SCSI transfer counter + left in SCSI FIFO data
|
||||
*
|
||||
* .....TRM_S1040_SCSI_COUNTER (24bits)
|
||||
|
@ -3269,7 +3267,6 @@ static void pci_unmap_srb(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb)
|
|||
struct scsi_cmnd *cmd = srb->cmd;
|
||||
enum dma_data_direction dir = cmd->sc_data_direction;
|
||||
if (cmd->use_sg && dir != PCI_DMA_NONE) {
|
||||
int i;
|
||||
/* unmap DC395x SG list */
|
||||
dprintkdbg(DBG_SG, "pci_unmap_srb: list=%08x(%05x)\n",
|
||||
srb->sg_bus_addr, SEGMENTX_LEN);
|
||||
|
@ -3279,8 +3276,6 @@ static void pci_unmap_srb(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb)
|
|||
dprintkdbg(DBG_SG, "pci_unmap_srb: segs=%i buffer=%p\n",
|
||||
cmd->use_sg, cmd->request_buffer);
|
||||
/* unmap the sg segments */
|
||||
for (i = 0; i < srb->sg_count; i++)
|
||||
kunmap(virt_to_page(srb->virt_map[i]));
|
||||
pci_unmap_sg(acb->dev,
|
||||
(struct scatterlist *)cmd->request_buffer,
|
||||
cmd->use_sg, dir);
|
||||
|
@ -3327,7 +3322,7 @@ static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
|
|||
|
||||
if (cmd->use_sg) {
|
||||
struct scatterlist* sg = (struct scatterlist *)cmd->request_buffer;
|
||||
ptr = (struct ScsiInqData *)(srb->virt_map[0] + sg->offset);
|
||||
ptr = (struct ScsiInqData *)(page_address(sg->page) + sg->offset);
|
||||
} else {
|
||||
ptr = (struct ScsiInqData *)(cmd->request_buffer);
|
||||
}
|
||||
|
@ -4262,9 +4257,8 @@ static void adapter_sg_tables_free(struct AdapterCtlBlk *acb)
|
|||
const unsigned srbs_per_page = PAGE_SIZE/SEGMENTX_LEN;
|
||||
|
||||
for (i = 0; i < DC395x_MAX_SRB_CNT; i += srbs_per_page)
|
||||
kfree(acb->srb_array[i].segment_x);
|
||||
|
||||
vfree(acb->srb_array[0].virt_map);
|
||||
if (acb->srb_array[i].segment_x)
|
||||
kfree(acb->srb_array[i].segment_x);
|
||||
}
|
||||
|
||||
|
||||
|
@ -4280,12 +4274,9 @@ static int __devinit adapter_sg_tables_alloc(struct AdapterCtlBlk *acb)
|
|||
int srb_idx = 0;
|
||||
unsigned i = 0;
|
||||
struct SGentry *ptr;
|
||||
void **virt_array;
|
||||
|
||||
for (i = 0; i < DC395x_MAX_SRB_CNT; i++) {
|
||||
for (i = 0; i < DC395x_MAX_SRB_CNT; i++)
|
||||
acb->srb_array[i].segment_x = NULL;
|
||||
acb->srb_array[i].virt_map = NULL;
|
||||
}
|
||||
|
||||
dprintkdbg(DBG_1, "Allocate %i pages for SG tables\n", pages);
|
||||
while (pages--) {
|
||||
|
@ -4306,19 +4297,6 @@ static int __devinit adapter_sg_tables_alloc(struct AdapterCtlBlk *acb)
|
|||
ptr + (i * DC395x_MAX_SG_LISTENTRY);
|
||||
else
|
||||
dprintkl(KERN_DEBUG, "No space for tmsrb SG table reserved?!\n");
|
||||
|
||||
virt_array = vmalloc((DC395x_MAX_SRB_CNT + 1) * DC395x_MAX_SG_LISTENTRY * sizeof(void*));
|
||||
|
||||
if (!virt_array) {
|
||||
adapter_sg_tables_free(acb);
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < DC395x_MAX_SRB_CNT + 1; i++) {
|
||||
acb->srb_array[i].virt_map = virt_array;
|
||||
virt_array += DC395x_MAX_SG_LISTENTRY;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1093,6 +1093,7 @@ int __init sn_serial_console_early_setup(void)
|
|||
return -1;
|
||||
|
||||
sal_console_port.sc_ops = &poll_ops;
|
||||
spin_lock_init(&sal_console_port.sc_port.lock);
|
||||
early_sn_setup(); /* Find SAL entry points */
|
||||
register_console(&sal_console_early);
|
||||
|
||||
|
|
|
@ -342,9 +342,6 @@ static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs)
|
|||
goto exit;
|
||||
}
|
||||
|
||||
x = le16_to_cpu(*(__le16 *) &data[2]);
|
||||
y = le16_to_cpu(*(__le16 *) &data[4]);
|
||||
|
||||
input_regs(dev, regs);
|
||||
|
||||
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_Y, y);
|
||||
}
|
||||
if (wacom->tool[0] != BTN_TOOL_MOUSE) {
|
||||
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_STYLUS, data[1] & 0x02);
|
||||
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
|
||||
if (wacom->tool[0] != BTN_TOOL_MOUSE) {
|
||||
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_STYLUS, data[1] & 0x02);
|
||||
input_report_key(dev, BTN_STYLUS2, data[1] & 0x04);
|
||||
}
|
||||
}
|
||||
|
||||
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 */
|
||||
if ((wacom->features->type == CINTIQ) && !(data[1] & 0x40))
|
||||
return;
|
||||
goto exit;
|
||||
|
||||
if (wacom->features->type >= INTUOS3) {
|
||||
input_report_abs(dev, ABS_X, (data[2] << 9) | (data[3] << 1) | ((data[9] >> 1) & 1));
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
* The USB Monitor, inspired by Dave Harding's USBMon.
|
||||
*
|
||||
* mon_main.c: Main file, module initiation and exit, registrations, etc.
|
||||
*
|
||||
* Copyright (C) 2005 Pete Zaitcev (zaitcev@redhat.com)
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
|
@ -311,7 +313,7 @@ static int __init mon_init(void)
|
|||
|
||||
mondir = debugfs_create_dir("usbmon", NULL);
|
||||
if (IS_ERR(mondir)) {
|
||||
printk(KERN_NOTICE TAG ": debugs is not available\n");
|
||||
printk(KERN_NOTICE TAG ": debugfs is not available\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
if (mondir == NULL) {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* The USB Monitor, inspired by Dave Harding's USBMon.
|
||||
*
|
||||
* Copyright (C) 2005 Pete Zaitcev (zaitcev@redhat.com)
|
||||
*/
|
||||
|
||||
#ifndef __USB_MON_H
|
||||
|
|
|
@ -628,7 +628,7 @@ fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var)
|
|||
int
|
||||
fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
|
||||
{
|
||||
int err;
|
||||
int err, flags = info->flags;
|
||||
|
||||
if (var->activate & FB_ACTIVATE_INV_MODE) {
|
||||
struct fb_videomode mode1, mode2;
|
||||
|
@ -682,7 +682,7 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
|
|||
!list_empty(&info->modelist))
|
||||
err = fb_add_videomode(&mode, &info->modelist);
|
||||
|
||||
if (!err && info->flags & FBINFO_MISC_USEREVENT) {
|
||||
if (!err && (flags & FBINFO_MISC_USEREVENT)) {
|
||||
struct fb_event event;
|
||||
|
||||
info->flags &= ~FBINFO_MISC_USEREVENT;
|
||||
|
|
|
@ -583,23 +583,6 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Map the fb and MMIO regions */
|
||||
dinfo->aperture.virtual = (u8 __iomem *)ioremap_nocache
|
||||
(dinfo->aperture.physical, dinfo->aperture.size);
|
||||
if (!dinfo->aperture.virtual) {
|
||||
ERR_MSG("Cannot remap FB region.\n");
|
||||
cleanup(dinfo);
|
||||
return -ENODEV;
|
||||
}
|
||||
dinfo->mmio_base =
|
||||
(u8 __iomem *)ioremap_nocache(dinfo->mmio_base_phys,
|
||||
INTEL_REG_SIZE);
|
||||
if (!dinfo->mmio_base) {
|
||||
ERR_MSG("Cannot remap MMIO region.\n");
|
||||
cleanup(dinfo);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Get the chipset info. */
|
||||
dinfo->pci_chipset = pdev->device;
|
||||
|
||||
|
@ -630,9 +613,15 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
dinfo->accel = 0;
|
||||
}
|
||||
|
||||
if (MB(voffset) < stolen_size)
|
||||
offset = (stolen_size >> 12);
|
||||
else
|
||||
offset = ROUND_UP_TO_PAGE(MB(voffset))/GTT_PAGE_SIZE;
|
||||
|
||||
/* Framebuffer parameters - Use all the stolen memory if >= vram */
|
||||
if (ROUND_UP_TO_PAGE(stolen_size) >= MB(vram)) {
|
||||
if (ROUND_UP_TO_PAGE(stolen_size) >= ((offset << 12) + MB(vram))) {
|
||||
dinfo->fb.size = ROUND_UP_TO_PAGE(stolen_size);
|
||||
dinfo->fb.offset = 0;
|
||||
dinfo->fbmem_gart = 0;
|
||||
} else {
|
||||
dinfo->fb.size = MB(vram);
|
||||
|
@ -663,11 +652,6 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (MB(voffset) < stolen_size)
|
||||
offset = (stolen_size >> 12);
|
||||
else
|
||||
offset = ROUND_UP_TO_PAGE(MB(voffset))/GTT_PAGE_SIZE;
|
||||
|
||||
/* set the mem offsets - set them after the already used pages */
|
||||
if (dinfo->accel) {
|
||||
dinfo->ring.offset = offset + gtt_info.current_memory;
|
||||
|
@ -682,6 +666,26 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
+ (dinfo->cursor.size >> 12);
|
||||
}
|
||||
|
||||
/* Map the fb and MMIO regions */
|
||||
/* ioremap only up to the end of used aperture */
|
||||
dinfo->aperture.virtual = (u8 __iomem *)ioremap_nocache
|
||||
(dinfo->aperture.physical, (dinfo->fb.offset << 12)
|
||||
+ dinfo->fb.size);
|
||||
if (!dinfo->aperture.virtual) {
|
||||
ERR_MSG("Cannot remap FB region.\n");
|
||||
cleanup(dinfo);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
dinfo->mmio_base =
|
||||
(u8 __iomem *)ioremap_nocache(dinfo->mmio_base_phys,
|
||||
INTEL_REG_SIZE);
|
||||
if (!dinfo->mmio_base) {
|
||||
ERR_MSG("Cannot remap MMIO region.\n");
|
||||
cleanup(dinfo);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Allocate memories (which aren't stolen) */
|
||||
if (dinfo->accel) {
|
||||
if (!(dinfo->gtt_ring_mem =
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
#include <video/radeon.h>
|
||||
#include <linux/radeonfb.h>
|
||||
|
||||
#define DEBUG 1
|
||||
#define DEBUG 0
|
||||
|
||||
#if DEBUG
|
||||
#define RTRACE printk
|
||||
|
|
|
@ -593,7 +593,7 @@ void w1_search(struct w1_master *dev, w1_slave_found_callback cb)
|
|||
* Return 0 - device(s) present, 1 - no devices present.
|
||||
*/
|
||||
if (w1_reset_bus(dev)) {
|
||||
dev_info(&dev->dev, "No devices present on the wire.\n");
|
||||
dev_dbg(&dev->dev, "No devices present on the wire.\n");
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
Version 1.35
|
||||
------------
|
||||
Add writepage performance improvements. Fix path name conversions
|
||||
for long filenames on mounts which were done with "mapchars" mount option
|
||||
specified.
|
||||
|
||||
Version 1.34
|
||||
------------
|
||||
Fix error mapping of the TOO_MANY_LINKS (hardlinks) case.
|
||||
|
|
|
@ -2602,6 +2602,9 @@ int CIFSFindNext(const int xid, struct cifsTconInfo *tcon,
|
|||
if(name_len < PATH_MAX) {
|
||||
memcpy(pSMB->ResumeFileName, psrch_inf->presume_name, name_len);
|
||||
byte_count += name_len;
|
||||
/* 14 byte parm len above enough for 2 byte null terminator */
|
||||
pSMB->ResumeFileName[name_len] = 0;
|
||||
pSMB->ResumeFileName[name_len+1] = 0;
|
||||
} else {
|
||||
rc = -EINVAL;
|
||||
goto FNext2_err_exit;
|
||||
|
|
|
@ -611,6 +611,7 @@ cifsConvertToUCS(__le16 * target, const char *source, int maxlen,
|
|||
src_char = source[i];
|
||||
switch (src_char) {
|
||||
case 0:
|
||||
target[j] = 0;
|
||||
goto ctoUCS_out;
|
||||
case ':':
|
||||
target[j] = cpu_to_le16(UNI_COLON);
|
||||
|
|
|
@ -402,7 +402,7 @@ static struct inotify_watch *create_watch(struct inotify_device *dev,
|
|||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
dev->last_wd = ret;
|
||||
dev->last_wd = watch->wd;
|
||||
watch->mask = mask;
|
||||
atomic_set(&watch->count, 0);
|
||||
INIT_LIST_HEAD(&watch->d_list);
|
||||
|
|
|
@ -128,6 +128,10 @@ void jfs_delete_inode(struct inode *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))
|
||||
jfs_free_zero_link(inode);
|
||||
|
||||
|
|
|
@ -191,7 +191,7 @@ static int lbmIOWait(struct lbuf * bp, int flag);
|
|||
static bio_end_io_t lbmIODone;
|
||||
static void lbmStartIO(struct lbuf * bp);
|
||||
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
|
||||
* (normally the case if sync() is executed by back-ground
|
||||
* process).
|
||||
* if not, explicitly run jfs_blogsync() to initiate
|
||||
* getting of new sync address.
|
||||
* calculate new value of i_nextsync which determines when
|
||||
* this code is called again.
|
||||
*
|
||||
* PARAMETERS: log - log structure
|
||||
* nosyncwait - 1 if called asynchronously
|
||||
* hard_sync - 1 to force all metadata to be written
|
||||
*
|
||||
* RETURN: 0
|
||||
*
|
||||
* 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 written; /* written since last syncpt */
|
||||
|
@ -941,11 +939,18 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
|
|||
unsigned long flags;
|
||||
|
||||
/* push dirty metapages out to disk */
|
||||
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);
|
||||
}
|
||||
if (hard_sync)
|
||||
list_for_each_entry(sbi, &log->sb_list, log_list) {
|
||||
filemap_fdatawrite(sbi->ipbmap->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
|
||||
|
@ -1021,10 +1026,6 @@ static int lmLogSync(struct jfs_log * log, int nosyncwait)
|
|||
/* next syncpt trigger = 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
|
||||
* than 1/4 of the log size, stop new transactions from
|
||||
* 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
|
||||
*
|
||||
* 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);
|
||||
lmLogSync(log, 1);
|
||||
lmLogSync(log, hard_sync);
|
||||
LOG_UNLOCK(log);
|
||||
}
|
||||
|
||||
|
|
|
@ -510,6 +510,6 @@ extern int lmLogFormat(struct jfs_log *log, s64 logAddress, int logSize);
|
|||
extern int lmGroupCommit(struct jfs_log *, struct tblock *);
|
||||
extern int jfsIOWait(void *);
|
||||
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 */
|
||||
|
|
|
@ -552,6 +552,11 @@ void txEnd(tid_t tid)
|
|||
* synchronize with logsync barrier
|
||||
*/
|
||||
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);
|
||||
|
||||
/* enable new transactions start */
|
||||
|
@ -560,11 +565,6 @@ void txEnd(tid_t tid)
|
|||
/* wakeup all waitors for logsync barrier */
|
||||
TXN_WAKEUP(&log->syncwait);
|
||||
|
||||
TXN_UNLOCK();
|
||||
|
||||
/* forward log syncpt */
|
||||
jfs_syncpt(log);
|
||||
|
||||
goto wakeup;
|
||||
}
|
||||
}
|
||||
|
@ -657,7 +657,9 @@ struct tlock *txLock(tid_t tid, struct inode *ip, struct metapage * mp,
|
|||
/* only anonymous txn.
|
||||
* Remove from anon_list
|
||||
*/
|
||||
TXN_LOCK();
|
||||
list_del_init(&jfs_ip->anon_inode_list);
|
||||
TXN_UNLOCK();
|
||||
}
|
||||
jfs_ip->atlhead = tlck->next;
|
||||
} else {
|
||||
|
|
|
@ -114,6 +114,8 @@ static void jfs_destroy_inode(struct inode *inode)
|
|||
{
|
||||
struct jfs_inode_info *ji = JFS_IP(inode);
|
||||
|
||||
BUG_ON(!list_empty(&ji->anon_inode_list));
|
||||
|
||||
spin_lock_irq(&ji->ag_lock);
|
||||
if (ji->active_ag != -1) {
|
||||
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 */
|
||||
if (log) {
|
||||
jfs_flush_journal(log, wait);
|
||||
jfs_syncpt(log);
|
||||
jfs_syncpt(log, 0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -2216,7 +2216,8 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|||
error = vfs_rename_other(old_dir,old_dentry,new_dir,new_dentry);
|
||||
if (!error) {
|
||||
const char *new_name = old_dentry->d_name.name;
|
||||
fsnotify_move(old_dir, new_dir, old_name, new_name, is_dir, new_dentry->d_inode);
|
||||
fsnotify_move(old_dir, new_dir, old_name, new_name, is_dir,
|
||||
new_dentry->d_inode, old_dentry->d_inode);
|
||||
}
|
||||
fsnotify_oldname_free(old_name);
|
||||
|
||||
|
|
27
fs/nfs/dir.c
27
fs/nfs/dir.c
|
@ -182,14 +182,16 @@ int nfs_readdir_filler(nfs_readdir_descriptor_t *desc, struct page *page)
|
|||
/* We requested READDIRPLUS, but the server doesn't grok it */
|
||||
if (error == -ENOTSUPP && desc->plus) {
|
||||
NFS_SERVER(inode)->caps &= ~NFS_CAP_READDIRPLUS;
|
||||
NFS_FLAGS(inode) &= ~NFS_INO_ADVISE_RDPLUS;
|
||||
clear_bit(NFS_INO_ADVISE_RDPLUS, &NFS_FLAGS(inode));
|
||||
desc->plus = 0;
|
||||
goto again;
|
||||
}
|
||||
goto error;
|
||||
}
|
||||
SetPageUptodate(page);
|
||||
NFS_FLAGS(inode) |= NFS_INO_INVALID_ATIME;
|
||||
spin_lock(&inode->i_lock);
|
||||
NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATIME;
|
||||
spin_unlock(&inode->i_lock);
|
||||
/* Ensure consistent page alignment of the data.
|
||||
* Note: assumes we have exclusive access to this mapping either
|
||||
* through inode->i_sem or some other mechanism.
|
||||
|
@ -462,7 +464,9 @@ int uncached_readdir(nfs_readdir_descriptor_t *desc, void *dirent,
|
|||
page,
|
||||
NFS_SERVER(inode)->dtsize,
|
||||
desc->plus);
|
||||
NFS_FLAGS(inode) |= NFS_INO_INVALID_ATIME;
|
||||
spin_lock(&inode->i_lock);
|
||||
NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATIME;
|
||||
spin_unlock(&inode->i_lock);
|
||||
desc->page = page;
|
||||
desc->ptr = kmap(page); /* matching kunmap in nfs_do_filldir */
|
||||
if (desc->error >= 0) {
|
||||
|
@ -545,7 +549,7 @@ static int nfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
|
|||
break;
|
||||
}
|
||||
if (res == -ETOOSMALL && desc->plus) {
|
||||
NFS_FLAGS(inode) &= ~NFS_INO_ADVISE_RDPLUS;
|
||||
clear_bit(NFS_INO_ADVISE_RDPLUS, &NFS_FLAGS(inode));
|
||||
nfs_zap_caches(inode);
|
||||
desc->plus = 0;
|
||||
desc->entry->eof = 0;
|
||||
|
@ -608,7 +612,7 @@ static inline int nfs_check_verifier(struct inode *dir, struct dentry *dentry)
|
|||
{
|
||||
if (IS_ROOT(dentry))
|
||||
return 1;
|
||||
if ((NFS_FLAGS(dir) & NFS_INO_INVALID_ATTR) != 0
|
||||
if ((NFS_I(dir)->cache_validity & NFS_INO_INVALID_ATTR) != 0
|
||||
|| nfs_attribute_timeout(dir))
|
||||
return 0;
|
||||
return nfs_verify_change_attribute(dir, (unsigned long)dentry->d_fsdata);
|
||||
|
@ -1575,11 +1579,12 @@ out:
|
|||
|
||||
int nfs_access_get_cached(struct inode *inode, struct rpc_cred *cred, struct nfs_access_entry *res)
|
||||
{
|
||||
struct nfs_access_entry *cache = &NFS_I(inode)->cache_access;
|
||||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
struct nfs_access_entry *cache = &nfsi->cache_access;
|
||||
|
||||
if (cache->cred != cred
|
||||
|| time_after(jiffies, cache->jiffies + NFS_ATTRTIMEO(inode))
|
||||
|| (NFS_FLAGS(inode) & NFS_INO_INVALID_ACCESS))
|
||||
|| (nfsi->cache_validity & NFS_INO_INVALID_ACCESS))
|
||||
return -ENOENT;
|
||||
memcpy(res, cache, sizeof(*res));
|
||||
return 0;
|
||||
|
@ -1587,14 +1592,18 @@ int nfs_access_get_cached(struct inode *inode, struct rpc_cred *cred, struct nfs
|
|||
|
||||
void nfs_access_add_cache(struct inode *inode, struct nfs_access_entry *set)
|
||||
{
|
||||
struct nfs_access_entry *cache = &NFS_I(inode)->cache_access;
|
||||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
struct nfs_access_entry *cache = &nfsi->cache_access;
|
||||
|
||||
if (cache->cred != set->cred) {
|
||||
if (cache->cred)
|
||||
put_rpccred(cache->cred);
|
||||
cache->cred = get_rpccred(set->cred);
|
||||
}
|
||||
NFS_FLAGS(inode) &= ~NFS_INO_INVALID_ACCESS;
|
||||
/* FIXME: replace current access_cache BKL reliance with inode->i_lock */
|
||||
spin_lock(&inode->i_lock);
|
||||
nfsi->cache_validity &= ~NFS_INO_INVALID_ACCESS;
|
||||
spin_unlock(&inode->i_lock);
|
||||
cache->jiffies = set->jiffies;
|
||||
cache->mask = set->mask;
|
||||
}
|
||||
|
|
|
@ -134,9 +134,10 @@ nfs_file_release(struct inode *inode, struct file *filp)
|
|||
*/
|
||||
static int nfs_revalidate_file(struct inode *inode, struct file *filp)
|
||||
{
|
||||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
int retval = 0;
|
||||
|
||||
if ((NFS_FLAGS(inode) & NFS_INO_REVAL_PAGECACHE) || nfs_attribute_timeout(inode))
|
||||
if ((nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE) || nfs_attribute_timeout(inode))
|
||||
retval = __nfs_revalidate_inode(NFS_SERVER(inode), inode);
|
||||
nfs_revalidate_mapping(inode, filp->f_mapping);
|
||||
return 0;
|
||||
|
@ -164,7 +165,7 @@ static int nfs_revalidate_file_size(struct inode *inode, struct file *filp)
|
|||
goto force_reval;
|
||||
if (nfsi->npages != 0)
|
||||
return 0;
|
||||
if (!(NFS_FLAGS(inode) & NFS_INO_REVAL_PAGECACHE) && !nfs_attribute_timeout(inode))
|
||||
if (!(nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE) && !nfs_attribute_timeout(inode))
|
||||
return 0;
|
||||
force_reval:
|
||||
return __nfs_revalidate_inode(server, inode);
|
||||
|
|
197
fs/nfs/inode.c
197
fs/nfs/inode.c
|
@ -615,14 +615,18 @@ nfs_zap_caches(struct inode *inode)
|
|||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
int mode = inode->i_mode;
|
||||
|
||||
spin_lock(&inode->i_lock);
|
||||
|
||||
NFS_ATTRTIMEO(inode) = NFS_MINATTRTIMEO(inode);
|
||||
NFS_ATTRTIMEO_UPDATE(inode) = jiffies;
|
||||
|
||||
memset(NFS_COOKIEVERF(inode), 0, sizeof(NFS_COOKIEVERF(inode)));
|
||||
if (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))
|
||||
nfsi->flags |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE;
|
||||
nfsi->cache_validity |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE;
|
||||
else
|
||||
nfsi->flags |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE;
|
||||
nfsi->cache_validity |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE;
|
||||
|
||||
spin_unlock(&inode->i_lock);
|
||||
}
|
||||
|
||||
static void nfs_zap_acl_cache(struct inode *inode)
|
||||
|
@ -632,7 +636,9 @@ static void nfs_zap_acl_cache(struct inode *inode)
|
|||
clear_acl_cache = NFS_PROTO(inode)->clear_acl_cache;
|
||||
if (clear_acl_cache != NULL)
|
||||
clear_acl_cache(inode);
|
||||
NFS_I(inode)->flags &= ~NFS_INO_INVALID_ACL;
|
||||
spin_lock(&inode->i_lock);
|
||||
NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_ACL;
|
||||
spin_unlock(&inode->i_lock);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -739,7 +745,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)
|
|||
inode->i_fop = &nfs_dir_operations;
|
||||
if (nfs_server_capable(inode, NFS_CAP_READDIRPLUS)
|
||||
&& fattr->size <= NFS_LIMIT_READDIRPLUS)
|
||||
NFS_FLAGS(inode) |= NFS_INO_ADVISE_RDPLUS;
|
||||
set_bit(NFS_INO_ADVISE_RDPLUS, &NFS_FLAGS(inode));
|
||||
} else if (S_ISLNK(inode->i_mode))
|
||||
inode->i_op = &nfs_symlink_inode_operations;
|
||||
else
|
||||
|
@ -814,55 +820,84 @@ nfs_setattr(struct dentry *dentry, struct iattr *attr)
|
|||
nfs_wb_all(inode);
|
||||
}
|
||||
error = NFS_PROTO(inode)->setattr(dentry, &fattr, attr);
|
||||
if (error == 0) {
|
||||
if (error == 0)
|
||||
nfs_refresh_inode(inode, &fattr);
|
||||
nfs_end_data_update(inode);
|
||||
unlock_kernel();
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
* nfs_setattr_update_inode - Update inode metadata after a setattr call.
|
||||
* @inode: pointer to struct inode
|
||||
* @attr: pointer to struct iattr
|
||||
*
|
||||
* Note: we do this in the *proc.c in order to ensure that
|
||||
* it works for things like exclusive creates too.
|
||||
*/
|
||||
void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr)
|
||||
{
|
||||
if ((attr->ia_valid & (ATTR_MODE|ATTR_UID|ATTR_GID)) != 0) {
|
||||
if ((attr->ia_valid & ATTR_MODE) != 0) {
|
||||
int mode;
|
||||
mode = inode->i_mode & ~S_IALLUGO;
|
||||
mode |= attr->ia_mode & S_IALLUGO;
|
||||
int mode = attr->ia_mode & S_IALLUGO;
|
||||
mode |= inode->i_mode & ~S_IALLUGO;
|
||||
inode->i_mode = mode;
|
||||
}
|
||||
if ((attr->ia_valid & ATTR_UID) != 0)
|
||||
inode->i_uid = attr->ia_uid;
|
||||
if ((attr->ia_valid & ATTR_GID) != 0)
|
||||
inode->i_gid = attr->ia_gid;
|
||||
if ((attr->ia_valid & ATTR_SIZE) != 0) {
|
||||
inode->i_size = attr->ia_size;
|
||||
vmtruncate(inode, attr->ia_size);
|
||||
}
|
||||
spin_lock(&inode->i_lock);
|
||||
NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL;
|
||||
spin_unlock(&inode->i_lock);
|
||||
}
|
||||
if ((attr->ia_valid & (ATTR_MODE|ATTR_UID|ATTR_GID)) != 0)
|
||||
NFS_FLAGS(inode) |= NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL;
|
||||
nfs_end_data_update(inode);
|
||||
unlock_kernel();
|
||||
return error;
|
||||
if ((attr->ia_valid & ATTR_SIZE) != 0) {
|
||||
inode->i_size = attr->ia_size;
|
||||
vmtruncate(inode, attr->ia_size);
|
||||
}
|
||||
}
|
||||
|
||||
static int nfs_wait_schedule(void *word)
|
||||
{
|
||||
if (signal_pending(current))
|
||||
return -ERESTARTSYS;
|
||||
schedule();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Wait for the inode to get unlocked.
|
||||
* (Used for NFS_INO_LOCKED and NFS_INO_REVALIDATING).
|
||||
*/
|
||||
static int
|
||||
nfs_wait_on_inode(struct inode *inode, int flag)
|
||||
static int nfs_wait_on_inode(struct inode *inode)
|
||||
{
|
||||
struct rpc_clnt *clnt = NFS_CLIENT(inode);
|
||||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
|
||||
sigset_t oldmask;
|
||||
int error;
|
||||
if (!(NFS_FLAGS(inode) & flag))
|
||||
return 0;
|
||||
|
||||
atomic_inc(&inode->i_count);
|
||||
error = nfs_wait_event(clnt, nfsi->nfs_i_wait,
|
||||
!(NFS_FLAGS(inode) & flag));
|
||||
rpc_clnt_sigmask(clnt, &oldmask);
|
||||
error = wait_on_bit_lock(&nfsi->flags, NFS_INO_REVALIDATING,
|
||||
nfs_wait_schedule, TASK_INTERRUPTIBLE);
|
||||
rpc_clnt_sigunmask(clnt, &oldmask);
|
||||
iput(inode);
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
static void nfs_wake_up_inode(struct inode *inode)
|
||||
{
|
||||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
|
||||
clear_bit(NFS_INO_REVALIDATING, &nfsi->flags);
|
||||
smp_mb__after_clear_bit();
|
||||
wake_up_bit(&nfsi->flags, NFS_INO_REVALIDATING);
|
||||
}
|
||||
|
||||
int nfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
int need_atime = nfsi->flags & NFS_INO_INVALID_ATIME;
|
||||
int need_atime = NFS_I(inode)->cache_validity & NFS_INO_INVALID_ATIME;
|
||||
int err;
|
||||
|
||||
if (__IS_FLG(inode, MS_NOATIME))
|
||||
|
@ -1008,7 +1043,7 @@ __nfs_revalidate_inode(struct nfs_server *server, struct inode *inode)
|
|||
struct nfs_fattr fattr;
|
||||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
unsigned long verifier;
|
||||
unsigned int flags;
|
||||
unsigned long cache_validity;
|
||||
|
||||
dfprintk(PAGECACHE, "NFS: revalidating (%s/%Ld)\n",
|
||||
inode->i_sb->s_id, (long long)NFS_FILEID(inode));
|
||||
|
@ -1019,18 +1054,19 @@ __nfs_revalidate_inode(struct nfs_server *server, struct inode *inode)
|
|||
if (NFS_STALE(inode))
|
||||
goto out_nowait;
|
||||
|
||||
while (NFS_REVALIDATING(inode)) {
|
||||
status = nfs_wait_on_inode(inode, NFS_INO_REVALIDATING);
|
||||
if (status < 0)
|
||||
goto out_nowait;
|
||||
if (NFS_ATTRTIMEO(inode) == 0)
|
||||
continue;
|
||||
if (NFS_FLAGS(inode) & (NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ATIME))
|
||||
continue;
|
||||
status = NFS_STALE(inode) ? -ESTALE : 0;
|
||||
goto out_nowait;
|
||||
status = nfs_wait_on_inode(inode);
|
||||
if (status < 0)
|
||||
goto out;
|
||||
if (NFS_STALE(inode)) {
|
||||
status = -ESTALE;
|
||||
/* Do we trust the cached ESTALE? */
|
||||
if (NFS_ATTRTIMEO(inode) != 0) {
|
||||
if (nfsi->cache_validity & (NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ATIME)) {
|
||||
/* no */
|
||||
} else
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
NFS_FLAGS(inode) |= NFS_INO_REVALIDATING;
|
||||
|
||||
/* Protect against RPC races by saving the change attribute */
|
||||
verifier = nfs_save_change_attribute(inode);
|
||||
|
@ -1042,7 +1078,7 @@ __nfs_revalidate_inode(struct nfs_server *server, struct inode *inode)
|
|||
if (status == -ESTALE) {
|
||||
nfs_zap_caches(inode);
|
||||
if (!S_ISDIR(inode->i_mode))
|
||||
NFS_FLAGS(inode) |= NFS_INO_STALE;
|
||||
set_bit(NFS_INO_STALE, &NFS_FLAGS(inode));
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
@ -1054,25 +1090,30 @@ __nfs_revalidate_inode(struct nfs_server *server, struct inode *inode)
|
|||
(long long)NFS_FILEID(inode), status);
|
||||
goto out;
|
||||
}
|
||||
flags = nfsi->flags;
|
||||
nfsi->flags &= ~NFS_INO_REVAL_PAGECACHE;
|
||||
spin_lock(&inode->i_lock);
|
||||
cache_validity = nfsi->cache_validity;
|
||||
nfsi->cache_validity &= ~NFS_INO_REVAL_PAGECACHE;
|
||||
|
||||
/*
|
||||
* We may need to keep the attributes marked as invalid if
|
||||
* we raced with nfs_end_attr_update().
|
||||
*/
|
||||
if (verifier == nfsi->cache_change_attribute)
|
||||
nfsi->flags &= ~(NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ATIME);
|
||||
/* Do the page cache invalidation */
|
||||
nfsi->cache_validity &= ~(NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ATIME);
|
||||
spin_unlock(&inode->i_lock);
|
||||
|
||||
nfs_revalidate_mapping(inode, inode->i_mapping);
|
||||
if (flags & NFS_INO_INVALID_ACL)
|
||||
|
||||
if (cache_validity & NFS_INO_INVALID_ACL)
|
||||
nfs_zap_acl_cache(inode);
|
||||
|
||||
dfprintk(PAGECACHE, "NFS: (%s/%Ld) revalidation complete\n",
|
||||
inode->i_sb->s_id,
|
||||
(long long)NFS_FILEID(inode));
|
||||
|
||||
out:
|
||||
NFS_FLAGS(inode) &= ~NFS_INO_REVALIDATING;
|
||||
wake_up(&nfsi->nfs_i_wait);
|
||||
out:
|
||||
nfs_wake_up_inode(inode);
|
||||
|
||||
out_nowait:
|
||||
unlock_kernel();
|
||||
return status;
|
||||
|
@ -1096,7 +1137,7 @@ int nfs_attribute_timeout(struct inode *inode)
|
|||
*/
|
||||
int nfs_revalidate_inode(struct nfs_server *server, struct inode *inode)
|
||||
{
|
||||
if (!(NFS_FLAGS(inode) & (NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA))
|
||||
if (!(NFS_I(inode)->cache_validity & (NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA))
|
||||
&& !nfs_attribute_timeout(inode))
|
||||
return NFS_STALE(inode) ? -ESTALE : 0;
|
||||
return __nfs_revalidate_inode(server, inode);
|
||||
|
@ -1111,19 +1152,23 @@ void nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping)
|
|||
{
|
||||
struct nfs_inode *nfsi = NFS_I(inode);
|
||||
|
||||
if (nfsi->flags & NFS_INO_INVALID_DATA) {
|
||||
if (nfsi->cache_validity & NFS_INO_INVALID_DATA) {
|
||||
if (S_ISREG(inode->i_mode)) {
|
||||
if (filemap_fdatawrite(mapping) == 0)
|
||||
filemap_fdatawait(mapping);
|
||||
nfs_wb_all(inode);
|
||||
}
|
||||
invalidate_inode_pages2(mapping);
|
||||
nfsi->flags &= ~NFS_INO_INVALID_DATA;
|
||||
|
||||
spin_lock(&inode->i_lock);
|
||||
nfsi->cache_validity &= ~NFS_INO_INVALID_DATA;
|
||||
if (S_ISDIR(inode->i_mode)) {
|
||||
memset(nfsi->cookieverf, 0, sizeof(nfsi->cookieverf));
|
||||
/* This ensures we revalidate child dentries */
|
||||
nfsi->cache_change_attribute++;
|
||||
}
|
||||
spin_unlock(&inode->i_lock);
|
||||
|
||||
dfprintk(PAGECACHE, "NFS: (%s/%Ld) data cache invalidated\n",
|
||||
inode->i_sb->s_id,
|
||||
(long long)NFS_FILEID(inode));
|
||||
|
@ -1153,10 +1198,12 @@ void nfs_end_data_update(struct inode *inode)
|
|||
|
||||
if (!nfs_have_delegation(inode, FMODE_READ)) {
|
||||
/* Mark the attribute cache for revalidation */
|
||||
nfsi->flags |= NFS_INO_INVALID_ATTR;
|
||||
spin_lock(&inode->i_lock);
|
||||
nfsi->cache_validity |= NFS_INO_INVALID_ATTR;
|
||||
/* Directories and symlinks: invalidate page cache too */
|
||||
if (S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode))
|
||||
nfsi->flags |= NFS_INO_INVALID_DATA;
|
||||
nfsi->cache_validity |= NFS_INO_INVALID_DATA;
|
||||
spin_unlock(&inode->i_lock);
|
||||
}
|
||||
nfsi->cache_change_attribute ++;
|
||||
atomic_dec(&nfsi->data_updates);
|
||||
|
@ -1181,6 +1228,8 @@ int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr)
|
|||
if (nfs_have_delegation(inode, FMODE_READ))
|
||||
return 0;
|
||||
|
||||
spin_lock(&inode->i_lock);
|
||||
|
||||
/* Are we in the process of updating data on the server? */
|
||||
data_unstable = nfs_caches_unstable(inode);
|
||||
|
||||
|
@ -1189,19 +1238,23 @@ int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr)
|
|||
&& nfsi->change_attr == fattr->pre_change_attr)
|
||||
nfsi->change_attr = fattr->change_attr;
|
||||
if (nfsi->change_attr != fattr->change_attr) {
|
||||
nfsi->flags |= NFS_INO_INVALID_ATTR;
|
||||
nfsi->cache_validity |= NFS_INO_INVALID_ATTR;
|
||||
if (!data_unstable)
|
||||
nfsi->flags |= NFS_INO_REVAL_PAGECACHE;
|
||||
nfsi->cache_validity |= NFS_INO_REVAL_PAGECACHE;
|
||||
}
|
||||
}
|
||||
|
||||
if ((fattr->valid & NFS_ATTR_FATTR) == 0)
|
||||
if ((fattr->valid & NFS_ATTR_FATTR) == 0) {
|
||||
spin_unlock(&inode->i_lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Has the inode gone and changed behind our back? */
|
||||
if (nfsi->fileid != fattr->fileid
|
||||
|| (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT))
|
||||
|| (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) {
|
||||
spin_unlock(&inode->i_lock);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
cur_size = i_size_read(inode);
|
||||
new_isize = nfs_size_to_loff_t(fattr->size);
|
||||
|
@ -1216,30 +1269,31 @@ int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr)
|
|||
|
||||
/* Verify a few of the more important attributes */
|
||||
if (!timespec_equal(&inode->i_mtime, &fattr->mtime)) {
|
||||
nfsi->flags |= NFS_INO_INVALID_ATTR;
|
||||
nfsi->cache_validity |= NFS_INO_INVALID_ATTR;
|
||||
if (!data_unstable)
|
||||
nfsi->flags |= NFS_INO_REVAL_PAGECACHE;
|
||||
nfsi->cache_validity |= NFS_INO_REVAL_PAGECACHE;
|
||||
}
|
||||
if (cur_size != new_isize) {
|
||||
nfsi->flags |= NFS_INO_INVALID_ATTR;
|
||||
nfsi->cache_validity |= NFS_INO_INVALID_ATTR;
|
||||
if (nfsi->npages == 0)
|
||||
nfsi->flags |= NFS_INO_REVAL_PAGECACHE;
|
||||
nfsi->cache_validity |= NFS_INO_REVAL_PAGECACHE;
|
||||
}
|
||||
|
||||
/* Have any file permissions changed? */
|
||||
if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO)
|
||||
|| inode->i_uid != fattr->uid
|
||||
|| inode->i_gid != fattr->gid)
|
||||
nfsi->flags |= NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS | NFS_INO_INVALID_ACL;
|
||||
nfsi->cache_validity |= NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS | NFS_INO_INVALID_ACL;
|
||||
|
||||
/* Has the link count changed? */
|
||||
if (inode->i_nlink != fattr->nlink)
|
||||
nfsi->flags |= NFS_INO_INVALID_ATTR;
|
||||
nfsi->cache_validity |= NFS_INO_INVALID_ATTR;
|
||||
|
||||
if (!timespec_equal(&inode->i_atime, &fattr->atime))
|
||||
nfsi->flags |= NFS_INO_INVALID_ATIME;
|
||||
nfsi->cache_validity |= NFS_INO_INVALID_ATIME;
|
||||
|
||||
nfsi->read_cache_jiffies = fattr->timestamp;
|
||||
spin_unlock(&inode->i_lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1278,11 +1332,15 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr, unsign
|
|||
goto out_err;
|
||||
}
|
||||
|
||||
spin_lock(&inode->i_lock);
|
||||
|
||||
/*
|
||||
* Make sure the inode's type hasn't changed.
|
||||
*/
|
||||
if ((inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT))
|
||||
if ((inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) {
|
||||
spin_unlock(&inode->i_lock);
|
||||
goto out_changed;
|
||||
}
|
||||
|
||||
/*
|
||||
* Update the read time so we don't revalidate too often.
|
||||
|
@ -1373,8 +1431,9 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr, unsign
|
|||
|| S_ISLNK(inode->i_mode)))
|
||||
invalid &= ~NFS_INO_INVALID_DATA;
|
||||
if (!nfs_have_delegation(inode, FMODE_READ))
|
||||
nfsi->flags |= invalid;
|
||||
nfsi->cache_validity |= invalid;
|
||||
|
||||
spin_unlock(&inode->i_lock);
|
||||
return 0;
|
||||
out_changed:
|
||||
/*
|
||||
|
@ -1391,7 +1450,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr, unsign
|
|||
*/
|
||||
nfs_invalidate_inode(inode);
|
||||
out_err:
|
||||
NFS_FLAGS(inode) |= NFS_INO_STALE;
|
||||
set_bit(NFS_INO_STALE, &NFS_FLAGS(inode));
|
||||
return -ESTALE;
|
||||
}
|
||||
|
||||
|
@ -1950,7 +2009,8 @@ static struct inode *nfs_alloc_inode(struct super_block *sb)
|
|||
nfsi = (struct nfs_inode *)kmem_cache_alloc(nfs_inode_cachep, SLAB_KERNEL);
|
||||
if (!nfsi)
|
||||
return NULL;
|
||||
nfsi->flags = 0;
|
||||
nfsi->flags = 0UL;
|
||||
nfsi->cache_validity = 0UL;
|
||||
#ifdef CONFIG_NFS_V3_ACL
|
||||
nfsi->acl_access = ERR_PTR(-EAGAIN);
|
||||
nfsi->acl_default = ERR_PTR(-EAGAIN);
|
||||
|
@ -1982,7 +2042,6 @@ static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
|
|||
nfsi->ndirty = 0;
|
||||
nfsi->ncommit = 0;
|
||||
nfsi->npages = 0;
|
||||
init_waitqueue_head(&nfsi->nfs_i_wait);
|
||||
nfs4_init_once(nfsi);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -308,7 +308,9 @@ static int nfs3_proc_setacls(struct inode *inode, struct posix_acl *acl,
|
|||
nfs_begin_data_update(inode);
|
||||
status = rpc_call(server->client_acl, ACLPROC3_SETACL,
|
||||
&args, &fattr, 0);
|
||||
NFS_FLAGS(inode) |= NFS_INO_INVALID_ACCESS;
|
||||
spin_lock(&inode->i_lock);
|
||||
NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ACCESS;
|
||||
spin_unlock(&inode->i_lock);
|
||||
nfs_end_data_update(inode);
|
||||
dprintk("NFS reply setacl: %d\n", status);
|
||||
|
||||
|
|
|
@ -120,6 +120,8 @@ nfs3_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
|
|||
dprintk("NFS call setattr\n");
|
||||
fattr->valid = 0;
|
||||
status = rpc_call(NFS_CLIENT(inode), NFS3PROC_SETATTR, &arg, fattr, 0);
|
||||
if (status == 0)
|
||||
nfs_setattr_update_inode(inode, sattr);
|
||||
dprintk("NFS reply setattr: %d\n", status);
|
||||
return status;
|
||||
}
|
||||
|
@ -370,6 +372,8 @@ again:
|
|||
* not sure this buys us anything (and I'd have
|
||||
* to revamp the NFSv3 XDR code) */
|
||||
status = nfs3_proc_setattr(dentry, &fattr, sattr);
|
||||
if (status == 0)
|
||||
nfs_setattr_update_inode(dentry->d_inode, sattr);
|
||||
nfs_refresh_inode(dentry->d_inode, &fattr);
|
||||
dprintk("NFS reply setattr (post-create): %d\n", status);
|
||||
}
|
||||
|
|
|
@ -753,6 +753,7 @@ static int _nfs4_do_setattr(struct nfs_server *server, struct nfs_fattr *fattr,
|
|||
.rpc_argp = &arg,
|
||||
.rpc_resp = &res,
|
||||
};
|
||||
int status;
|
||||
|
||||
fattr->valid = 0;
|
||||
|
||||
|
@ -762,7 +763,8 @@ static int _nfs4_do_setattr(struct nfs_server *server, struct nfs_fattr *fattr,
|
|||
} else
|
||||
memcpy(&arg.stateid, &zero_stateid, sizeof(arg.stateid));
|
||||
|
||||
return rpc_call_sync(server->client, &msg, 0);
|
||||
status = rpc_call_sync(server->client, &msg, 0);
|
||||
return status;
|
||||
}
|
||||
|
||||
static int nfs4_do_setattr(struct nfs_server *server, struct nfs_fattr *fattr,
|
||||
|
@ -1145,6 +1147,8 @@ nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
|
|||
|
||||
status = nfs4_do_setattr(NFS_SERVER(inode), fattr,
|
||||
NFS_FH(inode), sattr, state);
|
||||
if (status == 0)
|
||||
nfs_setattr_update_inode(inode, sattr);
|
||||
if (state != NULL)
|
||||
nfs4_close_state(state, FMODE_WRITE);
|
||||
put_rpccred(cred);
|
||||
|
@ -1449,8 +1453,10 @@ nfs4_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
|
|||
struct nfs_fattr fattr;
|
||||
status = nfs4_do_setattr(NFS_SERVER(dir), &fattr,
|
||||
NFS_FH(state->inode), sattr, state);
|
||||
if (status == 0)
|
||||
if (status == 0) {
|
||||
nfs_setattr_update_inode(state->inode, sattr);
|
||||
goto out;
|
||||
}
|
||||
} else if (flags != 0)
|
||||
goto out;
|
||||
nfs4_close_state(state, flags);
|
||||
|
|
|
@ -114,6 +114,8 @@ nfs_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
|
|||
dprintk("NFS call setattr\n");
|
||||
fattr->valid = 0;
|
||||
status = rpc_call(NFS_CLIENT(inode), NFSPROC_SETATTR, &arg, fattr, 0);
|
||||
if (status == 0)
|
||||
nfs_setattr_update_inode(inode, sattr);
|
||||
dprintk("NFS reply setattr: %d\n", status);
|
||||
return status;
|
||||
}
|
||||
|
|
|
@ -140,7 +140,9 @@ static int nfs_readpage_sync(struct nfs_open_context *ctx, struct inode *inode,
|
|||
if (rdata->res.eof != 0 || result == 0)
|
||||
break;
|
||||
} while (count);
|
||||
NFS_FLAGS(inode) |= NFS_INO_INVALID_ATIME;
|
||||
spin_lock(&inode->i_lock);
|
||||
NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATIME;
|
||||
spin_unlock(&inode->i_lock);
|
||||
|
||||
if (count)
|
||||
memclear_highpage_flush(page, rdata->args.pgbase, count);
|
||||
|
@ -473,7 +475,9 @@ void nfs_readpage_result(struct rpc_task *task)
|
|||
}
|
||||
task->tk_status = -EIO;
|
||||
}
|
||||
NFS_FLAGS(data->inode) |= NFS_INO_INVALID_ATIME;
|
||||
spin_lock(&data->inode->i_lock);
|
||||
NFS_I(data->inode)->cache_validity |= NFS_INO_INVALID_ATIME;
|
||||
spin_unlock(&data->inode->i_lock);
|
||||
data->complete(data, status);
|
||||
}
|
||||
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче