Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge /spare/repo/linux-2.6/

+1167 -831
+1 -2
CREDITS
··· 2423 2423 S: Canada 2424 2424 2425 2425 N: Zwane Mwaikambo 2426 - E: zwane@linuxpower.ca 2427 - W: http://function.linuxpower.ca 2426 + E: zwane@arm.linux.org.uk 2428 2427 D: Various driver hacking 2429 2428 D: Lowlevel x86 kernel hacking 2430 2429 D: General debugging
+3
Documentation/acpi-hotkey.txt
··· 33 33 attached to /proc/acpi/hotkey/poll_method, which is dnyamically 34 34 created. Please use command "cat /proc/acpi/hotkey/polling_method" 35 35 to retrieve it. 36 + 37 + Note: Use cmdline "acpi_generic_hotkey" to over-ride 38 + loading any platform specific drivers.
+5
Documentation/kernel-parameters.txt
··· 159 159 160 160 acpi_fake_ecdt [HW,ACPI] Workaround failure due to BIOS lacking ECDT 161 161 162 + acpi_generic_hotkey [HW,ACPI] 163 + Allow consolidated generic hotkey driver to 164 + over-ride platform specific driver. 165 + See also Documentation/acpi-hotkey.txt. 166 + 162 167 ad1816= [HW,OSS] 163 168 Format: <io>,<irq>,<dma>,<dma2> 164 169 See also Documentation/sound/oss/AD1816.
-14
Documentation/pci.txt
··· 266 266 in the kernel as they aren't compatible with hotplug or PCI domains or 267 267 having sane locking. 268 268 269 - pcibios_present() and Since ages, you don't need to test presence 270 - pci_present() of PCI subsystem when trying to talk to it. 271 - If it's not there, the list of PCI devices 272 - is empty and all functions for searching for 273 - devices just return NULL. 274 - pcibios_(read|write)_* Superseded by their pci_(read|write)_* 275 - counterparts. 276 - pcibios_find_* Superseded by their pci_get_* counterparts. 277 - pci_for_each_dev() Superseded by pci_get_device() 278 - pci_for_each_dev_reverse() Superseded by pci_find_device_reverse() 279 - pci_for_each_bus() Superseded by pci_find_next_bus() 280 269 pci_find_device() Superseded by pci_get_device() 281 270 pci_find_subsys() Superseded by pci_get_subsys() 282 271 pci_find_slot() Superseded by pci_get_slot() 283 - pcibios_find_class() Superseded by pci_get_class() 284 - pci_find_class() Superseded by pci_get_class() 285 - pci_(read|write)_*_nodev() Superseded by pci_bus_(read|write)_*()
+15 -3
MAINTAINERS
··· 784 784 P: LinuxTV.org Project 785 785 M: linux-dvb-maintainer@linuxtv.org 786 786 L: linux-dvb@linuxtv.org (subscription required) 787 - W: http://linuxtv.org/developer/dvb.xml 787 + W: http://linuxtv.org/ 788 788 S: Supported 789 789 790 790 EATA-DMA SCSI DRIVER ··· 1739 1739 1740 1740 OPL3-SA2, SA3, and SAx DRIVER 1741 1741 P: Zwane Mwaikambo 1742 - M: zwane@commfireservices.com 1742 + M: zwane@arm.linux.org.uk 1743 1743 L: linux-sound@vger.kernel.org 1744 1744 S: Maintained 1745 1745 ··· 1823 1823 PCI HOTPLUG COMPAQ DRIVER 1824 1824 P: Greg Kroah-Hartman 1825 1825 M: greg@kroah.com 1826 + S: Maintained 1827 + 1828 + PCIE HOTPLUG DRIVER 1829 + P: Kristen Carlson Accardi 1830 + M: kristen.c.accardi@intel.com 1831 + L: pcihpd-discuss@lists.sourceforge.net 1826 1832 S: Maintained 1827 1833 1828 1834 PCMCIA SUBSYSTEM ··· 1995 1989 1996 1990 SC1200 WDT DRIVER 1997 1991 P: Zwane Mwaikambo 1998 - M: zwane@commfireservices.com 1992 + M: zwane@arm.linux.org.uk 1999 1993 S: Maintained 2000 1994 2001 1995 SCHEDULER ··· 2205 2199 M: elf@buici.com 2206 2200 W: http://projects.buici.com/arm 2207 2201 L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 2202 + S: Maintained 2203 + 2204 + SHPC HOTPLUG DRIVER 2205 + P: Kristen Carlson Accardi 2206 + M: kristen.c.accardi@intel.com 2207 + L: pcihpd-discuss@lists.sourceforge.net 2208 2208 S: Maintained 2209 2209 2210 2210 SPARC (sparc32):
+6
arch/arm/kernel/calls.S
··· 327 327 /* 310 */ .long sys_request_key 328 328 .long sys_keyctl 329 329 .long sys_semtimedop 330 + /* vserver */ .long sys_ni_syscall 331 + .long sys_ioprio_set 332 + /* 315 */ .long sys_ioprio_get 333 + .long sys_inotify_init 334 + .long sys_inotify_add_watch 335 + .long sys_inotify_rm_watch 330 336 __syscall_end: 331 337 332 338 .rept NR_syscalls - (__syscall_end - __syscall_start) / 4
+2 -2
arch/arm/mach-s3c2410/s3c2410.c
··· 18 18 * 28-Sep-2004 BJD Updates for new serial port bits 19 19 * 04-Nov-2004 BJD Updated UART configuration process 20 20 * 10-Jan-2005 BJD Removed s3c2410_clock_tick_rate 21 + * 13-Aug-2005 DA Removed UART from initial I/O mappings 21 22 */ 22 23 23 24 #include <linux/kernel.h> ··· 50 49 IODESC_ENT(USBHOST), 51 50 IODESC_ENT(CLKPWR), 52 51 IODESC_ENT(LCD), 53 - IODESC_ENT(UART), 54 52 IODESC_ENT(TIMER), 55 53 IODESC_ENT(ADC), 56 - IODESC_ENT(WATCHDOG) 54 + IODESC_ENT(WATCHDOG), 57 55 }; 58 56 59 57 static struct resource s3c_uart0_resource[] = {
+1 -1
arch/arm/mm/Kconfig
··· 384 384 385 385 config CPU_DCACHE_WRITETHROUGH 386 386 bool "Force write through D-cache" 387 - depends on (CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020) && !CPU_DISABLE_DCACHE 387 + depends on (CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020) && !CPU_DCACHE_DISABLE 388 388 default y if CPU_ARM925T 389 389 help 390 390 Say Y here to use the data cache in writethrough mode. Unless you
+1 -1
arch/arm/mm/proc-v6.S
··· 105 105 ENTRY(cpu_v6_switch_mm) 106 106 mov r2, #0 107 107 ldr r1, [r1, #MM_CONTEXT_ID] @ get mm->context.id 108 - mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB 108 + mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB 109 109 mcr p15, 0, r2, c7, c10, 4 @ drain write buffer 110 110 mcr p15, 0, r0, c2, c0, 0 @ set TTB 0 111 111 mcr p15, 0, r1, c13, c0, 1 @ set context ID
+10 -24
arch/arm/nwfpe/softfloat.c
··· 1602 1602 if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) 1603 1603 || ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) ) 1604 1604 ) { 1605 - if ( float32_is_signaling_nan( a ) || float32_is_signaling_nan( b ) ) { 1606 - float_raise( float_flag_invalid ); 1607 - } 1605 + /* Do nothing, even if NaN as we're quiet */ 1608 1606 return 0; 1609 1607 } 1610 1608 aSign = extractFloat32Sign( a ); ··· 1627 1629 if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) 1628 1630 || ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) ) 1629 1631 ) { 1630 - if ( float32_is_signaling_nan( a ) || float32_is_signaling_nan( b ) ) { 1631 - float_raise( float_flag_invalid ); 1632 - } 1632 + /* Do nothing, even if NaN as we're quiet */ 1633 1633 return 0; 1634 1634 } 1635 1635 aSign = extractFloat32Sign( a ); ··· 2489 2493 if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) ) 2490 2494 || ( ( extractFloat64Exp( b ) == 0x7FF ) && extractFloat64Frac( b ) ) 2491 2495 ) { 2492 - if ( float64_is_signaling_nan( a ) || float64_is_signaling_nan( b ) ) { 2493 - float_raise( float_flag_invalid ); 2494 - } 2496 + /* Do nothing, even if NaN as we're quiet */ 2495 2497 return 0; 2496 2498 } 2497 2499 aSign = extractFloat64Sign( a ); ··· 2514 2520 if ( ( ( extractFloat64Exp( a ) == 0x7FF ) && extractFloat64Frac( a ) ) 2515 2521 || ( ( extractFloat64Exp( b ) == 0x7FF ) && extractFloat64Frac( b ) ) 2516 2522 ) { 2517 - if ( float64_is_signaling_nan( a ) || float64_is_signaling_nan( b ) ) { 2518 - float_raise( float_flag_invalid ); 2519 - } 2523 + /* Do nothing, even if NaN as we're quiet */ 2520 2524 return 0; 2521 2525 } 2522 2526 aSign = extractFloat64Sign( a ); ··· 3248 3256 ) { 3249 3257 if ( floatx80_is_signaling_nan( a ) 3250 3258 || floatx80_is_signaling_nan( b ) ) { 3251 - roundData->exception |= float_flag_invalid; 3259 + float_raise( float_flag_invalid ); 3252 3260 } 3253 3261 return 0; 3254 3262 } ··· 3278 3286 || ( ( extractFloatx80Exp( b ) == 0x7FFF ) 3279 3287 && (bits64) ( extractFloatx80Frac( b )<<1 ) ) 3280 3288 ) { 3281 - roundData->exception |= float_flag_invalid; 3289 + float_raise( float_flag_invalid ); 3282 3290 return 0; 3283 3291 } 3284 3292 aSign = extractFloatx80Sign( a ); ··· 3312 3320 || ( ( extractFloatx80Exp( b ) == 0x7FFF ) 3313 3321 && (bits64) ( extractFloatx80Frac( b )<<1 ) ) 3314 3322 ) { 3315 - roundData->exception |= float_flag_invalid; 3323 + float_raise( float_flag_invalid ); 3316 3324 return 0; 3317 3325 } 3318 3326 aSign = extractFloatx80Sign( a ); ··· 3345 3353 || ( ( extractFloatx80Exp( b ) == 0x7FFF ) 3346 3354 && (bits64) ( extractFloatx80Frac( b )<<1 ) ) 3347 3355 ) { 3348 - roundData->exception |= float_flag_invalid; 3356 + float_raise( float_flag_invalid ); 3349 3357 return 0; 3350 3358 } 3351 3359 return ··· 3374 3382 || ( ( extractFloatx80Exp( b ) == 0x7FFF ) 3375 3383 && (bits64) ( extractFloatx80Frac( b )<<1 ) ) 3376 3384 ) { 3377 - if ( floatx80_is_signaling_nan( a ) 3378 - || floatx80_is_signaling_nan( b ) ) { 3379 - roundData->exception |= float_flag_invalid; 3380 - } 3385 + /* Do nothing, even if NaN as we're quiet */ 3381 3386 return 0; 3382 3387 } 3383 3388 aSign = extractFloatx80Sign( a ); ··· 3408 3419 || ( ( extractFloatx80Exp( b ) == 0x7FFF ) 3409 3420 && (bits64) ( extractFloatx80Frac( b )<<1 ) ) 3410 3421 ) { 3411 - if ( floatx80_is_signaling_nan( a ) 3412 - || floatx80_is_signaling_nan( b ) ) { 3413 - roundData->exception |= float_flag_invalid; 3414 - } 3422 + /* Do nothing, even if NaN as we're quiet */ 3415 3423 return 0; 3416 3424 } 3417 3425 aSign = extractFloatx80Sign( a );
-4
arch/i386/kernel/apic.c
··· 726 726 static int __init detect_init_APIC (void) 727 727 { 728 728 u32 h, l, features; 729 - extern void get_cpu_vendor(struct cpuinfo_x86*); 730 729 731 730 /* Disabled by kernel option? */ 732 731 if (enable_local_apic < 0) 733 732 return -1; 734 - 735 - /* Workaround for us being called before identify_cpu(). */ 736 - get_cpu_vendor(&boot_cpu_data); 737 733 738 734 switch (boot_cpu_data.x86_vendor) { 739 735 case X86_VENDOR_AMD:
+2 -9
arch/ia64/Kconfig
··· 392 392 config PCI 393 393 bool "PCI support" 394 394 help 395 - Find out whether you have a PCI motherboard. PCI is the name of a 396 - bus system, i.e. the way the CPU talks to the other stuff inside 397 - your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or 398 - VESA. If you have PCI, say Y, otherwise N. 399 - 400 - The PCI-HOWTO, available from 401 - <http://www.tldp.org/docs.html#howto>, contains valuable 402 - information about which PCI hardware does work under Linux and which 403 - doesn't. 395 + Real IA-64 machines all have PCI/PCI-X/PCI Express busses. Say Y 396 + here unless you are using a simulator without PCI support. 404 397 405 398 config PCI_DOMAINS 406 399 bool
+164 -98
arch/ia64/configs/sn2_defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.10 4 - # Mon Jan 10 13:57:35 2005 3 + # Linux kernel version: 2.6.13-rc6 4 + # Tue Aug 16 14:40:41 2005 5 5 # 6 6 7 7 # ··· 10 10 CONFIG_EXPERIMENTAL=y 11 11 CONFIG_CLEAN_COMPILE=y 12 12 CONFIG_LOCK_KERNEL=y 13 + CONFIG_INIT_ENV_ARG_LIMIT=32 13 14 14 15 # 15 16 # General setup ··· 22 21 # CONFIG_BSD_PROCESS_ACCT is not set 23 22 CONFIG_SYSCTL=y 24 23 # CONFIG_AUDIT is not set 25 - CONFIG_LOG_BUF_SHIFT=20 26 24 CONFIG_HOTPLUG=y 27 25 CONFIG_KOBJECT_UEVENT=y 28 26 # CONFIG_IKCONFIG is not set 27 + CONFIG_CPUSETS=y 29 28 # CONFIG_EMBEDDED is not set 30 29 CONFIG_KALLSYMS=y 31 30 CONFIG_KALLSYMS_ALL=y 32 31 # CONFIG_KALLSYMS_EXTRA_PASS is not set 32 + CONFIG_PRINTK=y 33 + CONFIG_BUG=y 34 + CONFIG_BASE_FULL=y 33 35 CONFIG_FUTEX=y 34 36 CONFIG_EPOLL=y 35 - CONFIG_CPUSETS=y 36 - # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 37 37 CONFIG_SHMEM=y 38 38 CONFIG_CC_ALIGN_FUNCTIONS=0 39 39 CONFIG_CC_ALIGN_LABELS=0 40 40 CONFIG_CC_ALIGN_LOOPS=0 41 41 CONFIG_CC_ALIGN_JUMPS=0 42 42 # CONFIG_TINY_SHMEM is not set 43 + CONFIG_BASE_SMALL=0 43 44 44 45 # 45 46 # Loadable module support ··· 66 63 CONFIG_TIME_INTERPOLATION=y 67 64 CONFIG_EFI=y 68 65 CONFIG_GENERIC_IOMAP=y 66 + CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 67 + CONFIG_IA64_UNCACHED_ALLOCATOR=y 69 68 # CONFIG_IA64_GENERIC is not set 70 69 # CONFIG_IA64_DIG is not set 71 70 # CONFIG_IA64_HP_ZX1 is not set 71 + # CONFIG_IA64_HP_ZX1_SWIOTLB is not set 72 72 CONFIG_IA64_SGI_SN2=y 73 73 # CONFIG_IA64_HP_SIM is not set 74 74 # CONFIG_ITANIUM is not set ··· 80 74 # CONFIG_IA64_PAGE_SIZE_8KB is not set 81 75 CONFIG_IA64_PAGE_SIZE_16KB=y 82 76 # CONFIG_IA64_PAGE_SIZE_64KB is not set 77 + # CONFIG_HZ_100 is not set 78 + CONFIG_HZ_250=y 79 + # CONFIG_HZ_1000 is not set 80 + CONFIG_HZ=250 83 81 CONFIG_IA64_L1_CACHE_SHIFT=7 84 82 CONFIG_NUMA=y 85 83 CONFIG_VIRTUAL_MEM_MAP=y ··· 91 81 CONFIG_ARCH_DISCONTIGMEM_ENABLE=y 92 82 # CONFIG_IA64_CYCLONE is not set 93 83 CONFIG_IOSAPIC=y 84 + CONFIG_IA64_SGI_SN_XP=m 94 85 CONFIG_FORCE_MAX_ZONEORDER=18 95 86 CONFIG_SMP=y 96 87 CONFIG_NR_CPUS=512 97 88 # CONFIG_HOTPLUG_CPU is not set 89 + CONFIG_SCHED_SMT=y 98 90 CONFIG_PREEMPT=y 91 + CONFIG_SELECT_MEMORY_MODEL=y 92 + # CONFIG_FLATMEM_MANUAL is not set 93 + CONFIG_DISCONTIGMEM_MANUAL=y 94 + # CONFIG_SPARSEMEM_MANUAL is not set 95 + CONFIG_DISCONTIGMEM=y 96 + CONFIG_FLAT_NODE_MEM_MAP=y 97 + CONFIG_NEED_MULTIPLE_NODES=y 99 98 CONFIG_HAVE_DEC_LOCK=y 100 99 CONFIG_IA32_SUPPORT=y 101 100 CONFIG_COMPAT=y ··· 124 105 # 125 106 # Power management and ACPI 126 107 # 108 + CONFIG_PM=y 127 109 CONFIG_ACPI=y 128 110 129 111 # ··· 134 114 CONFIG_ACPI_INTERPRETER=y 135 115 # CONFIG_ACPI_BUTTON is not set 136 116 CONFIG_ACPI_VIDEO=m 117 + CONFIG_ACPI_HOTKEY=m 137 118 # CONFIG_ACPI_FAN is not set 138 119 # CONFIG_ACPI_PROCESSOR is not set 139 120 CONFIG_ACPI_NUMA=y ··· 154 133 # CONFIG_PCI_MSI is not set 155 134 CONFIG_PCI_LEGACY_PROC=y 156 135 CONFIG_PCI_NAMES=y 136 + # CONFIG_PCI_DEBUG is not set 157 137 158 138 # 159 139 # PCI Hotplug Support ··· 163 141 # CONFIG_HOTPLUG_PCI_FAKE is not set 164 142 # CONFIG_HOTPLUG_PCI_ACPI is not set 165 143 # CONFIG_HOTPLUG_PCI_CPCI is not set 166 - # CONFIG_HOTPLUG_PCI_PCIE is not set 167 144 # CONFIG_HOTPLUG_PCI_SHPC is not set 168 145 CONFIG_HOTPLUG_PCI_SGI=y 169 146 ··· 172 151 # CONFIG_PCCARD is not set 173 152 174 153 # 175 - # PC-card bridges 154 + # Networking 176 155 # 156 + CONFIG_NET=y 157 + 158 + # 159 + # Networking options 160 + # 161 + CONFIG_PACKET=y 162 + CONFIG_PACKET_MMAP=y 163 + CONFIG_UNIX=y 164 + # CONFIG_NET_KEY is not set 165 + CONFIG_INET=y 166 + CONFIG_IP_MULTICAST=y 167 + # CONFIG_IP_ADVANCED_ROUTER is not set 168 + CONFIG_IP_FIB_HASH=y 169 + # CONFIG_IP_PNP is not set 170 + # CONFIG_NET_IPIP is not set 171 + # CONFIG_NET_IPGRE is not set 172 + # CONFIG_IP_MROUTE is not set 173 + # CONFIG_ARPD is not set 174 + CONFIG_SYN_COOKIES=y 175 + # CONFIG_INET_AH is not set 176 + # CONFIG_INET_ESP is not set 177 + # CONFIG_INET_IPCOMP is not set 178 + # CONFIG_INET_TUNNEL is not set 179 + CONFIG_IP_TCPDIAG=y 180 + # CONFIG_IP_TCPDIAG_IPV6 is not set 181 + # CONFIG_TCP_CONG_ADVANCED is not set 182 + CONFIG_TCP_CONG_BIC=y 183 + CONFIG_IPV6=m 184 + # CONFIG_IPV6_PRIVACY is not set 185 + # CONFIG_INET6_AH is not set 186 + # CONFIG_INET6_ESP is not set 187 + # CONFIG_INET6_IPCOMP is not set 188 + # CONFIG_INET6_TUNNEL is not set 189 + # CONFIG_IPV6_TUNNEL is not set 190 + # CONFIG_NETFILTER is not set 191 + 192 + # 193 + # SCTP Configuration (EXPERIMENTAL) 194 + # 195 + # CONFIG_IP_SCTP is not set 196 + # CONFIG_ATM is not set 197 + # CONFIG_BRIDGE is not set 198 + # CONFIG_VLAN_8021Q is not set 199 + # CONFIG_DECNET is not set 200 + # CONFIG_LLC2 is not set 201 + # CONFIG_IPX is not set 202 + # CONFIG_ATALK is not set 203 + # CONFIG_X25 is not set 204 + # CONFIG_LAPB is not set 205 + # CONFIG_NET_DIVERT is not set 206 + # CONFIG_ECONET is not set 207 + # CONFIG_WAN_ROUTER is not set 208 + # CONFIG_NET_SCHED is not set 209 + # CONFIG_NET_CLS_ROUTE is not set 210 + 211 + # 212 + # Network testing 213 + # 214 + # CONFIG_NET_PKTGEN is not set 215 + # CONFIG_HAMRADIO is not set 216 + # CONFIG_IRDA is not set 217 + # CONFIG_BT is not set 177 218 178 219 # 179 220 # Device Drivers ··· 246 163 # 247 164 CONFIG_STANDALONE=y 248 165 CONFIG_PREVENT_FIRMWARE_BUILD=y 249 - CONFIG_FW_LOADER=m 166 + CONFIG_FW_LOADER=y 250 167 # CONFIG_DEBUG_DRIVER is not set 251 168 252 169 # ··· 271 188 # CONFIG_BLK_CPQ_CISS_DA is not set 272 189 # CONFIG_BLK_DEV_DAC960 is not set 273 190 # CONFIG_BLK_DEV_UMEM is not set 191 + # CONFIG_BLK_DEV_COW_COMMON is not set 274 192 CONFIG_BLK_DEV_LOOP=y 275 193 CONFIG_BLK_DEV_CRYPTOLOOP=m 276 194 CONFIG_BLK_DEV_NBD=m ··· 336 252 # CONFIG_BLK_DEV_HPT366 is not set 337 253 # CONFIG_BLK_DEV_SC1200 is not set 338 254 # CONFIG_BLK_DEV_PIIX is not set 255 + # CONFIG_BLK_DEV_IT821X is not set 339 256 # CONFIG_BLK_DEV_NS87415 is not set 340 257 # CONFIG_BLK_DEV_PDC202XX_OLD is not set 341 258 # CONFIG_BLK_DEV_PDC202XX_NEW is not set ··· 367 282 CONFIG_BLK_DEV_SR=m 368 283 # CONFIG_BLK_DEV_SR_VENDOR is not set 369 284 CONFIG_CHR_DEV_SG=m 285 + CONFIG_CHR_DEV_SCH=m 370 286 371 287 # 372 288 # Some SCSI devices (e.g. CD jukebox) support multiple LUNs ··· 401 315 # CONFIG_SCSI_ATA_PIIX is not set 402 316 # CONFIG_SCSI_SATA_NV is not set 403 317 # CONFIG_SCSI_SATA_PROMISE is not set 318 + # CONFIG_SCSI_SATA_QSTOR is not set 404 319 # CONFIG_SCSI_SATA_SX4 is not set 405 320 # CONFIG_SCSI_SATA_SIL is not set 406 321 # CONFIG_SCSI_SATA_SIS is not set 407 322 # CONFIG_SCSI_SATA_ULI is not set 408 323 # CONFIG_SCSI_SATA_VIA is not set 409 324 CONFIG_SCSI_SATA_VITESSE=y 410 - # CONFIG_SCSI_BUSLOGIC is not set 411 325 # CONFIG_SCSI_DMX3191D is not set 412 - # CONFIG_SCSI_EATA is not set 413 - # CONFIG_SCSI_EATA_PIO is not set 414 326 # CONFIG_SCSI_FUTURE_DOMAIN is not set 415 - # CONFIG_SCSI_GDTH is not set 416 327 # CONFIG_SCSI_IPS is not set 417 328 # CONFIG_SCSI_INITIO is not set 418 329 # CONFIG_SCSI_INIA100 is not set 419 330 # CONFIG_SCSI_SYM53C8XX_2 is not set 420 331 # CONFIG_SCSI_IPR is not set 421 - # CONFIG_SCSI_QLOGIC_ISP is not set 422 332 # CONFIG_SCSI_QLOGIC_FC is not set 423 333 CONFIG_SCSI_QLOGIC_1280=y 424 334 # CONFIG_SCSI_QLOGIC_1280_1040 is not set ··· 424 342 CONFIG_SCSI_QLA2300=y 425 343 CONFIG_SCSI_QLA2322=y 426 344 # CONFIG_SCSI_QLA6312 is not set 345 + # CONFIG_SCSI_QLA24XX is not set 346 + # CONFIG_SCSI_LPFC is not set 427 347 # CONFIG_SCSI_DC395x is not set 428 348 # CONFIG_SCSI_DC390T is not set 429 349 # CONFIG_SCSI_DEBUG is not set ··· 448 364 CONFIG_DM_SNAPSHOT=m 449 365 CONFIG_DM_MIRROR=m 450 366 CONFIG_DM_ZERO=m 367 + CONFIG_DM_MULTIPATH=m 368 + CONFIG_DM_MULTIPATH_EMC=m 451 369 452 370 # 453 371 # Fusion MPT device support 454 372 # 455 373 CONFIG_FUSION=y 374 + CONFIG_FUSION_SPI=y 375 + CONFIG_FUSION_FC=y 456 376 CONFIG_FUSION_MAX_SGE=128 457 377 CONFIG_FUSION_CTL=m 458 378 ··· 471 383 # CONFIG_I2O is not set 472 384 473 385 # 474 - # Networking support 386 + # Network device support 475 387 # 476 - CONFIG_NET=y 477 - 478 - # 479 - # Networking options 480 - # 481 - CONFIG_PACKET=y 482 - CONFIG_PACKET_MMAP=y 483 - CONFIG_NETLINK_DEV=y 484 - CONFIG_UNIX=y 485 - # CONFIG_NET_KEY is not set 486 - CONFIG_INET=y 487 - CONFIG_IP_MULTICAST=y 488 - # CONFIG_IP_ADVANCED_ROUTER is not set 489 - # CONFIG_IP_PNP is not set 490 - # CONFIG_NET_IPIP is not set 491 - # CONFIG_NET_IPGRE is not set 492 - # CONFIG_IP_MROUTE is not set 493 - # CONFIG_ARPD is not set 494 - CONFIG_SYN_COOKIES=y 495 - # CONFIG_INET_AH is not set 496 - # CONFIG_INET_ESP is not set 497 - # CONFIG_INET_IPCOMP is not set 498 - # CONFIG_INET_TUNNEL is not set 499 - CONFIG_IP_TCPDIAG=y 500 - # CONFIG_IP_TCPDIAG_IPV6 is not set 501 - CONFIG_IPV6=m 502 - # CONFIG_IPV6_PRIVACY is not set 503 - # CONFIG_INET6_AH is not set 504 - # CONFIG_INET6_ESP is not set 505 - # CONFIG_INET6_IPCOMP is not set 506 - # CONFIG_INET6_TUNNEL is not set 507 - # CONFIG_IPV6_TUNNEL is not set 508 - # CONFIG_NETFILTER is not set 509 - 510 - # 511 - # SCTP Configuration (EXPERIMENTAL) 512 - # 513 - # CONFIG_IP_SCTP is not set 514 - # CONFIG_ATM is not set 515 - # CONFIG_BRIDGE is not set 516 - # CONFIG_VLAN_8021Q is not set 517 - # CONFIG_DECNET is not set 518 - # CONFIG_LLC2 is not set 519 - # CONFIG_IPX is not set 520 - # CONFIG_ATALK is not set 521 - # CONFIG_X25 is not set 522 - # CONFIG_LAPB is not set 523 - # CONFIG_NET_DIVERT is not set 524 - # CONFIG_ECONET is not set 525 - # CONFIG_WAN_ROUTER is not set 526 - 527 - # 528 - # QoS and/or fair queueing 529 - # 530 - # CONFIG_NET_SCHED is not set 531 - # CONFIG_NET_CLS_ROUTE is not set 532 - 533 - # 534 - # Network testing 535 - # 536 - # CONFIG_NET_PKTGEN is not set 537 - CONFIG_NETPOLL=y 538 - # CONFIG_NETPOLL_RX is not set 539 - # CONFIG_NETPOLL_TRAP is not set 540 - CONFIG_NET_POLL_CONTROLLER=y 541 - # CONFIG_HAMRADIO is not set 542 - # CONFIG_IRDA is not set 543 - # CONFIG_BT is not set 544 388 CONFIG_NETDEVICES=y 545 389 # CONFIG_DUMMY is not set 546 390 # CONFIG_BONDING is not set 547 391 # CONFIG_EQUALIZER is not set 548 392 # CONFIG_TUN is not set 549 - # CONFIG_ETHERTAP is not set 550 393 551 394 # 552 395 # ARCnet devices ··· 499 480 # CONFIG_HAMACHI is not set 500 481 # CONFIG_YELLOWFIN is not set 501 482 # CONFIG_R8169 is not set 483 + # CONFIG_SKGE is not set 502 484 # CONFIG_SK98LIN is not set 503 485 CONFIG_TIGON3=y 486 + # CONFIG_BNX2 is not set 504 487 505 488 # 506 489 # Ethernet (10000 Mbit) ··· 533 512 # CONFIG_NET_FC is not set 534 513 # CONFIG_SHAPER is not set 535 514 CONFIG_NETCONSOLE=y 515 + CONFIG_NETPOLL=y 516 + # CONFIG_NETPOLL_RX is not set 517 + # CONFIG_NETPOLL_TRAP is not set 518 + CONFIG_NET_POLL_CONTROLLER=y 536 519 537 520 # 538 521 # ISDN subsystem ··· 566 541 # CONFIG_INPUT_EVBUG is not set 567 542 568 543 # 569 - # Input I/O drivers 570 - # 571 - # CONFIG_GAMEPORT is not set 572 - CONFIG_SOUND_GAMEPORT=y 573 - # CONFIG_SERIO is not set 574 - # CONFIG_SERIO_I8042 is not set 575 - 576 - # 577 544 # Input Device Drivers 578 545 # 579 546 # CONFIG_INPUT_KEYBOARD is not set ··· 573 556 # CONFIG_INPUT_JOYSTICK is not set 574 557 # CONFIG_INPUT_TOUCHSCREEN is not set 575 558 # CONFIG_INPUT_MISC is not set 559 + 560 + # 561 + # Hardware I/O ports 562 + # 563 + # CONFIG_SERIO is not set 564 + # CONFIG_GAMEPORT is not set 576 565 577 566 # 578 567 # Character devices ··· 591 568 # CONFIG_CYCLADES is not set 592 569 # CONFIG_MOXA_SMARTIO is not set 593 570 # CONFIG_ISI is not set 594 - # CONFIG_SYNCLINK is not set 595 571 # CONFIG_SYNCLINKMP is not set 596 572 # CONFIG_N_HDLC is not set 573 + # CONFIG_SPECIALIX is not set 574 + # CONFIG_SX is not set 597 575 # CONFIG_STALDRV is not set 598 576 CONFIG_SGI_SNSC=y 599 577 CONFIG_SGI_TIOCX=y ··· 611 587 CONFIG_SERIAL_CORE=y 612 588 CONFIG_SERIAL_CORE_CONSOLE=y 613 589 CONFIG_SERIAL_SGI_L1_CONSOLE=y 590 + # CONFIG_SERIAL_JSM is not set 614 591 CONFIG_SERIAL_SGI_IOC4=y 615 592 CONFIG_UNIX98_PTYS=y 616 593 CONFIG_LEGACY_PTYS=y ··· 640 615 CONFIG_RAW_DRIVER=m 641 616 # CONFIG_HPET is not set 642 617 CONFIG_MAX_RAW_DEVS=256 618 + # CONFIG_HANGCHECK_TIMER is not set 643 619 CONFIG_MMTIMER=y 620 + 621 + # 622 + # TPM devices 623 + # 624 + # CONFIG_TCG_TPM is not set 644 625 645 626 # 646 627 # I2C support 647 628 # 648 629 # CONFIG_I2C is not set 630 + # CONFIG_I2C_SENSOR is not set 649 631 650 632 # 651 633 # Dallas's 1-wire bus 652 634 # 653 635 # CONFIG_W1 is not set 636 + 637 + # 638 + # Hardware Monitoring support 639 + # 640 + # CONFIG_HWMON is not set 654 641 655 642 # 656 643 # Misc devices ··· 697 660 # 698 661 # USB support 699 662 # 663 + CONFIG_USB_ARCH_HAS_HCD=y 664 + CONFIG_USB_ARCH_HAS_OHCI=y 700 665 CONFIG_USB=m 701 666 # CONFIG_USB_DEBUG is not set 702 667 ··· 708 669 # CONFIG_USB_DEVICEFS is not set 709 670 # CONFIG_USB_BANDWIDTH is not set 710 671 # CONFIG_USB_DYNAMIC_MINORS is not set 672 + # CONFIG_USB_SUSPEND is not set 711 673 # CONFIG_USB_OTG is not set 712 - CONFIG_USB_ARCH_HAS_HCD=y 713 - CONFIG_USB_ARCH_HAS_OHCI=y 714 674 715 675 # 716 676 # USB Host Controller Drivers ··· 717 679 CONFIG_USB_EHCI_HCD=m 718 680 # CONFIG_USB_EHCI_SPLIT_ISO is not set 719 681 # CONFIG_USB_EHCI_ROOT_HUB_TT is not set 682 + # CONFIG_USB_ISP116X_HCD is not set 720 683 CONFIG_USB_OHCI_HCD=m 684 + # CONFIG_USB_OHCI_BIG_ENDIAN is not set 685 + CONFIG_USB_OHCI_LITTLE_ENDIAN=y 721 686 CONFIG_USB_UHCI_HCD=m 722 687 # CONFIG_USB_SL811_HCD is not set 723 688 ··· 751 710 # CONFIG_USB_MOUSE is not set 752 711 # CONFIG_USB_AIPTEK is not set 753 712 # CONFIG_USB_WACOM is not set 713 + # CONFIG_USB_ACECAD is not set 754 714 # CONFIG_USB_KBTAB is not set 755 715 # CONFIG_USB_POWERMATE is not set 756 716 # CONFIG_USB_MTOUCH is not set 717 + # CONFIG_USB_ITMTOUCH is not set 757 718 # CONFIG_USB_EGALAX is not set 758 719 # CONFIG_USB_XPAD is not set 759 720 # CONFIG_USB_ATI_REMOTE is not set 721 + # CONFIG_USB_KEYSPAN_REMOTE is not set 760 722 761 723 # 762 724 # USB Imaging devices ··· 784 740 # CONFIG_USB_PEGASUS is not set 785 741 # CONFIG_USB_RTL8150 is not set 786 742 # CONFIG_USB_USBNET is not set 743 + CONFIG_USB_MON=y 787 744 788 745 # 789 746 # USB port drivers ··· 808 763 # CONFIG_USB_CYTHERM is not set 809 764 # CONFIG_USB_PHIDGETKIT is not set 810 765 # CONFIG_USB_PHIDGETSERVO is not set 766 + # CONFIG_USB_IDMOUSE is not set 767 + # CONFIG_USB_SISUSBVGA is not set 768 + # CONFIG_USB_LD is not set 811 769 812 770 # 813 - # USB ATM/DSL drivers 771 + # USB DSL modem support 814 772 # 815 773 816 774 # ··· 830 782 # InfiniBand support 831 783 # 832 784 CONFIG_INFINIBAND=m 785 + CONFIG_INFINIBAND_USER_VERBS=m 833 786 CONFIG_INFINIBAND_MTHCA=m 834 787 # CONFIG_INFINIBAND_MTHCA_DEBUG is not set 835 788 CONFIG_INFINIBAND_IPOIB=m ··· 848 799 CONFIG_EXT2_FS_XATTR=y 849 800 CONFIG_EXT2_FS_POSIX_ACL=y 850 801 CONFIG_EXT2_FS_SECURITY=y 802 + # CONFIG_EXT2_FS_XIP is not set 851 803 CONFIG_EXT3_FS=y 852 804 CONFIG_EXT3_FS_XATTR=y 853 805 CONFIG_EXT3_FS_POSIX_ACL=y ··· 864 814 CONFIG_REISERFS_FS_SECURITY=y 865 815 # CONFIG_JFS_FS is not set 866 816 CONFIG_FS_POSIX_ACL=y 817 + 818 + # 819 + # XFS support 820 + # 867 821 CONFIG_XFS_FS=y 822 + CONFIG_XFS_EXPORT=y 868 823 CONFIG_XFS_RT=y 869 824 CONFIG_XFS_QUOTA=y 870 825 # CONFIG_XFS_SECURITY is not set 871 826 CONFIG_XFS_POSIX_ACL=y 872 827 # CONFIG_MINIX_FS is not set 873 828 # CONFIG_ROMFS_FS is not set 829 + CONFIG_INOTIFY=y 874 830 CONFIG_QUOTA=y 875 831 # CONFIG_QFMT_V1 is not set 876 832 # CONFIG_QFMT_V2 is not set ··· 910 854 CONFIG_PROC_FS=y 911 855 CONFIG_PROC_KCORE=y 912 856 CONFIG_SYSFS=y 913 - # CONFIG_DEVFS_FS is not set 914 857 # CONFIG_DEVPTS_FS_XATTR is not set 915 858 CONFIG_TMPFS=y 916 859 CONFIG_TMPFS_XATTR=y ··· 940 885 # 941 886 CONFIG_NFS_FS=m 942 887 CONFIG_NFS_V3=y 888 + # CONFIG_NFS_V3_ACL is not set 943 889 CONFIG_NFS_V4=y 944 890 CONFIG_NFS_DIRECTIO=y 945 891 CONFIG_NFSD=m 946 892 CONFIG_NFSD_V3=y 893 + # CONFIG_NFSD_V3_ACL is not set 947 894 CONFIG_NFSD_V4=y 948 895 CONFIG_NFSD_TCP=y 949 896 CONFIG_LOCKD=m 950 897 CONFIG_LOCKD_V4=y 951 - CONFIG_EXPORTFS=m 898 + CONFIG_EXPORTFS=y 899 + CONFIG_NFS_COMMON=y 952 900 CONFIG_SUNRPC=m 953 901 CONFIG_SUNRPC_GSS=m 954 902 CONFIG_RPCSEC_GSS_KRB5=m ··· 1038 980 # CONFIG_LIBCRC32C is not set 1039 981 CONFIG_ZLIB_INFLATE=m 1040 982 CONFIG_ZLIB_DEFLATE=m 983 + CONFIG_GENERIC_ALLOCATOR=y 984 + CONFIG_GENERIC_HARDIRQS=y 985 + CONFIG_GENERIC_IRQ_PROBE=y 1041 986 1042 987 # 1043 988 # Profiling support ··· 1050 989 # 1051 990 # Kernel hacking 1052 991 # 992 + # CONFIG_PRINTK_TIME is not set 1053 993 CONFIG_DEBUG_KERNEL=y 1054 994 CONFIG_MAGIC_SYSRQ=y 995 + CONFIG_LOG_BUF_SHIFT=20 1055 996 # CONFIG_SCHEDSTATS is not set 1056 997 # CONFIG_DEBUG_SLAB is not set 998 + CONFIG_DEBUG_PREEMPT=y 1057 999 # CONFIG_DEBUG_SPINLOCK is not set 1058 1000 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1059 1001 # CONFIG_DEBUG_KOBJECT is not set 1060 1002 CONFIG_DEBUG_INFO=y 1061 1003 # CONFIG_DEBUG_FS is not set 1004 + # CONFIG_KPROBES is not set 1062 1005 CONFIG_IA64_GRANULE_16MB=y 1063 1006 # CONFIG_IA64_GRANULE_64MB is not set 1064 1007 # CONFIG_IA64_PRINT_HAZARDS is not set ··· 1084 1019 CONFIG_CRYPTO_HMAC=y 1085 1020 # CONFIG_CRYPTO_NULL is not set 1086 1021 # CONFIG_CRYPTO_MD4 is not set 1087 - CONFIG_CRYPTO_MD5=m 1022 + CONFIG_CRYPTO_MD5=y 1088 1023 CONFIG_CRYPTO_SHA1=m 1089 1024 # CONFIG_CRYPTO_SHA256 is not set 1090 1025 # CONFIG_CRYPTO_SHA512 is not set 1091 1026 # CONFIG_CRYPTO_WP512 is not set 1027 + # CONFIG_CRYPTO_TGR192 is not set 1092 1028 CONFIG_CRYPTO_DES=m 1093 1029 # CONFIG_CRYPTO_BLOWFISH is not set 1094 1030 # CONFIG_CRYPTO_TWOFISH is not set
+81 -68
arch/ia64/configs/tiger_defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.13-rc1-20050629 4 - # Wed Jun 29 15:28:12 2005 3 + # Linux kernel version: 2.6.13-rc6-tiger-smp 4 + # Wed Aug 17 10:19:51 2005 5 5 # 6 6 7 7 # ··· 132 132 CONFIG_ACPI_INTERPRETER=y 133 133 CONFIG_ACPI_BUTTON=m 134 134 # CONFIG_ACPI_VIDEO is not set 135 + # CONFIG_ACPI_HOTKEY is not set 135 136 CONFIG_ACPI_FAN=m 136 137 CONFIG_ACPI_PROCESSOR=m 137 138 # CONFIG_ACPI_HOTPLUG_CPU is not set ··· 171 170 # CONFIG_PCCARD is not set 172 171 173 172 # 173 + # Networking 174 + # 175 + CONFIG_NET=y 176 + 177 + # 178 + # Networking options 179 + # 180 + CONFIG_PACKET=y 181 + # CONFIG_PACKET_MMAP is not set 182 + CONFIG_UNIX=y 183 + # CONFIG_NET_KEY is not set 184 + CONFIG_INET=y 185 + CONFIG_IP_MULTICAST=y 186 + # CONFIG_IP_ADVANCED_ROUTER is not set 187 + CONFIG_IP_FIB_HASH=y 188 + # CONFIG_IP_PNP is not set 189 + # CONFIG_NET_IPIP is not set 190 + # CONFIG_NET_IPGRE is not set 191 + # CONFIG_IP_MROUTE is not set 192 + CONFIG_ARPD=y 193 + CONFIG_SYN_COOKIES=y 194 + # CONFIG_INET_AH is not set 195 + # CONFIG_INET_ESP is not set 196 + # CONFIG_INET_IPCOMP is not set 197 + # CONFIG_INET_TUNNEL is not set 198 + CONFIG_IP_TCPDIAG=y 199 + # CONFIG_IP_TCPDIAG_IPV6 is not set 200 + # CONFIG_TCP_CONG_ADVANCED is not set 201 + CONFIG_TCP_CONG_BIC=y 202 + # CONFIG_IPV6 is not set 203 + # CONFIG_NETFILTER is not set 204 + 205 + # 206 + # SCTP Configuration (EXPERIMENTAL) 207 + # 208 + # CONFIG_IP_SCTP is not set 209 + # CONFIG_ATM is not set 210 + # CONFIG_BRIDGE is not set 211 + # CONFIG_VLAN_8021Q is not set 212 + # CONFIG_DECNET is not set 213 + # CONFIG_LLC2 is not set 214 + # CONFIG_IPX is not set 215 + # CONFIG_ATALK is not set 216 + # CONFIG_X25 is not set 217 + # CONFIG_LAPB is not set 218 + # CONFIG_NET_DIVERT is not set 219 + # CONFIG_ECONET is not set 220 + # CONFIG_WAN_ROUTER is not set 221 + # CONFIG_NET_SCHED is not set 222 + # CONFIG_NET_CLS_ROUTE is not set 223 + 224 + # 225 + # Network testing 226 + # 227 + # CONFIG_NET_PKTGEN is not set 228 + # CONFIG_HAMRADIO is not set 229 + # CONFIG_IRDA is not set 230 + # CONFIG_BT is not set 231 + 232 + # 174 233 # Device Drivers 175 234 # 176 235 ··· 239 178 # 240 179 CONFIG_STANDALONE=y 241 180 CONFIG_PREVENT_FIRMWARE_BUILD=y 242 - # CONFIG_FW_LOADER is not set 181 + CONFIG_FW_LOADER=m 243 182 # CONFIG_DEBUG_DRIVER is not set 244 183 245 184 # ··· 409 348 CONFIG_SCSI_QLA2300=m 410 349 CONFIG_SCSI_QLA2322=m 411 350 # CONFIG_SCSI_QLA6312 is not set 351 + # CONFIG_SCSI_QLA24XX is not set 412 352 # CONFIG_SCSI_LPFC is not set 413 353 # CONFIG_SCSI_DC395x is not set 414 354 # CONFIG_SCSI_DC390T is not set ··· 455 393 # CONFIG_I2O is not set 456 394 457 395 # 458 - # Networking support 396 + # Network device support 459 397 # 460 - CONFIG_NET=y 461 - 462 - # 463 - # Networking options 464 - # 465 - CONFIG_PACKET=y 466 - # CONFIG_PACKET_MMAP is not set 467 - CONFIG_UNIX=y 468 - # CONFIG_NET_KEY is not set 469 - CONFIG_INET=y 470 - CONFIG_IP_MULTICAST=y 471 - # CONFIG_IP_ADVANCED_ROUTER is not set 472 - CONFIG_IP_FIB_HASH=y 473 - # CONFIG_IP_PNP is not set 474 - # CONFIG_NET_IPIP is not set 475 - # CONFIG_NET_IPGRE is not set 476 - # CONFIG_IP_MROUTE is not set 477 - CONFIG_ARPD=y 478 - CONFIG_SYN_COOKIES=y 479 - # CONFIG_INET_AH is not set 480 - # CONFIG_INET_ESP is not set 481 - # CONFIG_INET_IPCOMP is not set 482 - # CONFIG_INET_TUNNEL is not set 483 - CONFIG_IP_TCPDIAG=y 484 - # CONFIG_IP_TCPDIAG_IPV6 is not set 485 - # CONFIG_TCP_CONG_ADVANCED is not set 486 - CONFIG_TCP_CONG_BIC=y 487 - # CONFIG_IPV6 is not set 488 - # CONFIG_NETFILTER is not set 489 - 490 - # 491 - # SCTP Configuration (EXPERIMENTAL) 492 - # 493 - # CONFIG_IP_SCTP is not set 494 - # CONFIG_ATM is not set 495 - # CONFIG_BRIDGE is not set 496 - # CONFIG_VLAN_8021Q is not set 497 - # CONFIG_DECNET is not set 498 - # CONFIG_LLC2 is not set 499 - # CONFIG_IPX is not set 500 - # CONFIG_ATALK is not set 501 - # CONFIG_X25 is not set 502 - # CONFIG_LAPB is not set 503 - # CONFIG_NET_DIVERT is not set 504 - # CONFIG_ECONET is not set 505 - # CONFIG_WAN_ROUTER is not set 506 - 507 - # 508 - # QoS and/or fair queueing 509 - # 510 - # CONFIG_NET_SCHED is not set 511 - # CONFIG_NET_CLS_ROUTE is not set 512 - 513 - # 514 - # Network testing 515 - # 516 - # CONFIG_NET_PKTGEN is not set 517 - CONFIG_NETPOLL=y 518 - # CONFIG_NETPOLL_RX is not set 519 - # CONFIG_NETPOLL_TRAP is not set 520 - CONFIG_NET_POLL_CONTROLLER=y 521 - # CONFIG_HAMRADIO is not set 522 - # CONFIG_IRDA is not set 523 - # CONFIG_BT is not set 524 398 CONFIG_NETDEVICES=y 525 399 CONFIG_DUMMY=m 526 400 # CONFIG_BONDING is not set ··· 553 555 # CONFIG_NET_FC is not set 554 556 # CONFIG_SHAPER is not set 555 557 CONFIG_NETCONSOLE=y 558 + CONFIG_NETPOLL=y 559 + # CONFIG_NETPOLL_RX is not set 560 + # CONFIG_NETPOLL_TRAP is not set 561 + CONFIG_NET_POLL_CONTROLLER=y 556 562 557 563 # 558 564 # ISDN subsystem ··· 682 680 CONFIG_DRM_RADEON=m 683 681 CONFIG_DRM_MGA=m 684 682 CONFIG_DRM_SIS=m 683 + # CONFIG_DRM_VIA is not set 685 684 CONFIG_RAW_DRIVER=m 686 685 CONFIG_HPET=y 687 686 # CONFIG_HPET_RTC_IRQ is not set ··· 699 696 # I2C support 700 697 # 701 698 # CONFIG_I2C is not set 699 + # CONFIG_I2C_SENSOR is not set 702 700 703 701 # 704 702 # Dallas's 1-wire bus 705 703 # 706 704 # CONFIG_W1 is not set 705 + 706 + # 707 + # Hardware Monitoring support 708 + # 709 + CONFIG_HWMON=y 710 + # CONFIG_HWMON_DEBUG_CHIP is not set 707 711 708 712 # 709 713 # Misc devices ··· 810 800 # CONFIG_USB_EGALAX is not set 811 801 # CONFIG_USB_XPAD is not set 812 802 # CONFIG_USB_ATI_REMOTE is not set 803 + # CONFIG_USB_KEYSPAN_REMOTE is not set 813 804 814 805 # 815 806 # USB Imaging devices ··· 861 850 # CONFIG_USB_PHIDGETSERVO is not set 862 851 # CONFIG_USB_IDMOUSE is not set 863 852 # CONFIG_USB_SISUSBVGA is not set 853 + # CONFIG_USB_LD is not set 864 854 # CONFIG_USB_TEST is not set 865 855 866 856 # ··· 922 910 # CONFIG_XFS_POSIX_ACL is not set 923 911 # CONFIG_MINIX_FS is not set 924 912 # CONFIG_ROMFS_FS is not set 913 + CONFIG_INOTIFY=y 925 914 # CONFIG_QUOTA is not set 926 915 CONFIG_DNOTIFY=y 927 916 CONFIG_AUTOFS_FS=y
+100 -124
arch/ia64/configs/zx1_defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.13-rc1-20050629 4 - # Wed Jun 29 15:31:11 2005 3 + # Linux kernel version: 2.6.13-rc6 4 + # Wed Aug 17 10:02:43 2005 5 5 # 6 6 7 7 # ··· 132 132 CONFIG_ACPI_INTERPRETER=y 133 133 CONFIG_ACPI_BUTTON=y 134 134 CONFIG_ACPI_VIDEO=m 135 + CONFIG_ACPI_HOTKEY=m 135 136 CONFIG_ACPI_FAN=y 136 137 CONFIG_ACPI_PROCESSOR=y 137 138 CONFIG_ACPI_THERMAL=y ··· 168 167 # PCCARD (PCMCIA/CardBus) support 169 168 # 170 169 # CONFIG_PCCARD is not set 170 + 171 + # 172 + # Networking 173 + # 174 + CONFIG_NET=y 175 + 176 + # 177 + # Networking options 178 + # 179 + CONFIG_PACKET=y 180 + # CONFIG_PACKET_MMAP is not set 181 + CONFIG_UNIX=y 182 + # CONFIG_NET_KEY is not set 183 + CONFIG_INET=y 184 + CONFIG_IP_MULTICAST=y 185 + # CONFIG_IP_ADVANCED_ROUTER is not set 186 + CONFIG_IP_FIB_HASH=y 187 + # CONFIG_IP_PNP is not set 188 + # CONFIG_NET_IPIP is not set 189 + # CONFIG_NET_IPGRE is not set 190 + # CONFIG_IP_MROUTE is not set 191 + # CONFIG_ARPD is not set 192 + # CONFIG_SYN_COOKIES is not set 193 + # CONFIG_INET_AH is not set 194 + # CONFIG_INET_ESP is not set 195 + # CONFIG_INET_IPCOMP is not set 196 + # CONFIG_INET_TUNNEL is not set 197 + # CONFIG_IP_TCPDIAG is not set 198 + # CONFIG_IP_TCPDIAG_IPV6 is not set 199 + # CONFIG_TCP_CONG_ADVANCED is not set 200 + CONFIG_TCP_CONG_BIC=y 201 + 202 + # 203 + # IP: Virtual Server Configuration 204 + # 205 + # CONFIG_IP_VS is not set 206 + # CONFIG_IPV6 is not set 207 + CONFIG_NETFILTER=y 208 + # CONFIG_NETFILTER_DEBUG is not set 209 + 210 + # 211 + # IP: Netfilter Configuration 212 + # 213 + # CONFIG_IP_NF_CONNTRACK is not set 214 + # CONFIG_IP_NF_CONNTRACK_MARK is not set 215 + # CONFIG_IP_NF_QUEUE is not set 216 + # CONFIG_IP_NF_IPTABLES is not set 217 + CONFIG_IP_NF_ARPTABLES=y 218 + # CONFIG_IP_NF_ARPFILTER is not set 219 + # CONFIG_IP_NF_ARP_MANGLE is not set 220 + 221 + # 222 + # SCTP Configuration (EXPERIMENTAL) 223 + # 224 + # CONFIG_IP_SCTP is not set 225 + # CONFIG_ATM is not set 226 + # CONFIG_BRIDGE is not set 227 + # CONFIG_VLAN_8021Q is not set 228 + # CONFIG_DECNET is not set 229 + # CONFIG_LLC2 is not set 230 + # CONFIG_IPX is not set 231 + # CONFIG_ATALK is not set 232 + # CONFIG_X25 is not set 233 + # CONFIG_LAPB is not set 234 + # CONFIG_NET_DIVERT is not set 235 + # CONFIG_ECONET is not set 236 + # CONFIG_WAN_ROUTER is not set 237 + # CONFIG_NET_SCHED is not set 238 + # CONFIG_NET_CLS_ROUTE is not set 239 + 240 + # 241 + # Network testing 242 + # 243 + # CONFIG_NET_PKTGEN is not set 244 + # CONFIG_HAMRADIO is not set 245 + # CONFIG_IRDA is not set 246 + # CONFIG_BT is not set 171 247 172 248 # 173 249 # Device Drivers ··· 427 349 # CONFIG_SCSI_QLA2300 is not set 428 350 # CONFIG_SCSI_QLA2322 is not set 429 351 # CONFIG_SCSI_QLA6312 is not set 352 + # CONFIG_SCSI_QLA24XX is not set 430 353 # CONFIG_SCSI_LPFC is not set 431 354 # CONFIG_SCSI_DC395x is not set 432 355 # CONFIG_SCSI_DC390T is not set ··· 441 362 # 442 363 # Fusion MPT device support 443 364 # 444 - # CONFIG_FUSION is not set 445 - # CONFIG_FUSION_SPI is not set 446 - # CONFIG_FUSION_FC is not set 365 + CONFIG_FUSION=y 366 + CONFIG_FUSION_SPI=y 367 + CONFIG_FUSION_FC=y 368 + CONFIG_FUSION_MAX_SGE=128 369 + CONFIG_FUSION_CTL=m 447 370 448 371 # 449 372 # IEEE 1394 (FireWire) support ··· 458 377 # CONFIG_I2O is not set 459 378 460 379 # 461 - # Networking support 380 + # Network device support 462 381 # 463 - CONFIG_NET=y 464 - 465 - # 466 - # Networking options 467 - # 468 - CONFIG_PACKET=y 469 - # CONFIG_PACKET_MMAP is not set 470 - CONFIG_UNIX=y 471 - # CONFIG_NET_KEY is not set 472 - CONFIG_INET=y 473 - CONFIG_IP_MULTICAST=y 474 - # CONFIG_IP_ADVANCED_ROUTER is not set 475 - CONFIG_IP_FIB_HASH=y 476 - # CONFIG_IP_PNP is not set 477 - # CONFIG_NET_IPIP is not set 478 - # CONFIG_NET_IPGRE is not set 479 - # CONFIG_IP_MROUTE is not set 480 - # CONFIG_ARPD is not set 481 - # CONFIG_SYN_COOKIES is not set 482 - # CONFIG_INET_AH is not set 483 - # CONFIG_INET_ESP is not set 484 - # CONFIG_INET_IPCOMP is not set 485 - # CONFIG_INET_TUNNEL is not set 486 - # CONFIG_IP_TCPDIAG is not set 487 - # CONFIG_IP_TCPDIAG_IPV6 is not set 488 - # CONFIG_TCP_CONG_ADVANCED is not set 489 - CONFIG_TCP_CONG_BIC=y 490 - 491 - # 492 - # IP: Virtual Server Configuration 493 - # 494 - # CONFIG_IP_VS is not set 495 - # CONFIG_IPV6 is not set 496 - CONFIG_NETFILTER=y 497 - # CONFIG_NETFILTER_DEBUG is not set 498 - 499 - # 500 - # IP: Netfilter Configuration 501 - # 502 - # CONFIG_IP_NF_CONNTRACK is not set 503 - # CONFIG_IP_NF_CONNTRACK_MARK is not set 504 - # CONFIG_IP_NF_QUEUE is not set 505 - # CONFIG_IP_NF_IPTABLES is not set 506 - CONFIG_IP_NF_ARPTABLES=y 507 - # CONFIG_IP_NF_ARPFILTER is not set 508 - # CONFIG_IP_NF_ARP_MANGLE is not set 509 - 510 - # 511 - # SCTP Configuration (EXPERIMENTAL) 512 - # 513 - # CONFIG_IP_SCTP is not set 514 - # CONFIG_ATM is not set 515 - # CONFIG_BRIDGE is not set 516 - # CONFIG_VLAN_8021Q is not set 517 - # CONFIG_DECNET is not set 518 - # CONFIG_LLC2 is not set 519 - # CONFIG_IPX is not set 520 - # CONFIG_ATALK is not set 521 - # CONFIG_X25 is not set 522 - # CONFIG_LAPB is not set 523 - # CONFIG_NET_DIVERT is not set 524 - # CONFIG_ECONET is not set 525 - # CONFIG_WAN_ROUTER is not set 526 - 527 - # 528 - # QoS and/or fair queueing 529 - # 530 - # CONFIG_NET_SCHED is not set 531 - # CONFIG_NET_CLS_ROUTE is not set 532 - 533 - # 534 - # Network testing 535 - # 536 - # CONFIG_NET_PKTGEN is not set 537 - # CONFIG_NETPOLL is not set 538 - # CONFIG_NET_POLL_CONTROLLER is not set 539 - # CONFIG_HAMRADIO is not set 540 - # CONFIG_IRDA is not set 541 - # CONFIG_BT is not set 542 382 CONFIG_NETDEVICES=y 543 383 CONFIG_DUMMY=y 544 384 # CONFIG_BONDING is not set ··· 557 555 # CONFIG_NET_FC is not set 558 556 # CONFIG_SHAPER is not set 559 557 # CONFIG_NETCONSOLE is not set 558 + # CONFIG_NETPOLL is not set 559 + # CONFIG_NET_POLL_CONTROLLER is not set 560 560 561 561 # 562 562 # ISDN subsystem ··· 663 659 CONFIG_DRM_RADEON=y 664 660 # CONFIG_DRM_MGA is not set 665 661 # CONFIG_DRM_SIS is not set 662 + # CONFIG_DRM_VIA is not set 666 663 # CONFIG_RAW_DRIVER is not set 667 664 # CONFIG_HPET is not set 668 665 # CONFIG_HANGCHECK_TIMER is not set ··· 711 706 # CONFIG_I2C_VIAPRO is not set 712 707 # CONFIG_I2C_VOODOO3 is not set 713 708 # CONFIG_I2C_PCA_ISA is not set 714 - 715 - # 716 - # Hardware Sensors Chip support 717 - # 718 709 # CONFIG_I2C_SENSOR is not set 719 - # CONFIG_SENSORS_ADM1021 is not set 720 - # CONFIG_SENSORS_ADM1025 is not set 721 - # CONFIG_SENSORS_ADM1026 is not set 722 - # CONFIG_SENSORS_ADM1031 is not set 723 - # CONFIG_SENSORS_ADM9240 is not set 724 - # CONFIG_SENSORS_ASB100 is not set 725 - # CONFIG_SENSORS_ATXP1 is not set 726 - # CONFIG_SENSORS_DS1621 is not set 727 - # CONFIG_SENSORS_FSCHER is not set 728 - # CONFIG_SENSORS_FSCPOS is not set 729 - # CONFIG_SENSORS_GL518SM is not set 730 - # CONFIG_SENSORS_GL520SM is not set 731 - # CONFIG_SENSORS_IT87 is not set 732 - # CONFIG_SENSORS_LM63 is not set 733 - # CONFIG_SENSORS_LM75 is not set 734 - # CONFIG_SENSORS_LM77 is not set 735 - # CONFIG_SENSORS_LM78 is not set 736 - # CONFIG_SENSORS_LM80 is not set 737 - # CONFIG_SENSORS_LM83 is not set 738 - # CONFIG_SENSORS_LM85 is not set 739 - # CONFIG_SENSORS_LM87 is not set 740 - # CONFIG_SENSORS_LM90 is not set 741 - # CONFIG_SENSORS_LM92 is not set 742 - # CONFIG_SENSORS_MAX1619 is not set 743 - # CONFIG_SENSORS_PC87360 is not set 744 - # CONFIG_SENSORS_SMSC47B397 is not set 745 - # CONFIG_SENSORS_SIS5595 is not set 746 - # CONFIG_SENSORS_SMSC47M1 is not set 747 - # CONFIG_SENSORS_VIA686A is not set 748 - # CONFIG_SENSORS_W83781D is not set 749 - # CONFIG_SENSORS_W83L785TS is not set 750 - # CONFIG_SENSORS_W83627HF is not set 751 - # CONFIG_SENSORS_W83627EHF is not set 752 710 753 711 # 754 - # Other I2C Chip support 712 + # Miscellaneous I2C Chip support 755 713 # 756 714 # CONFIG_SENSORS_DS1337 is not set 757 715 # CONFIG_SENSORS_DS1374 is not set ··· 735 767 # CONFIG_W1 is not set 736 768 737 769 # 770 + # Hardware Monitoring support 771 + # 772 + # CONFIG_HWMON is not set 773 + 774 + # 738 775 # Misc devices 739 776 # 740 777 ··· 755 782 # 756 783 # Video Adapters 757 784 # 758 - # CONFIG_TUNER_MULTI_I2C is not set 759 785 # CONFIG_VIDEO_BT848 is not set 760 786 # CONFIG_VIDEO_CPIA is not set 761 787 # CONFIG_VIDEO_SAA5246A is not set ··· 997 1025 # CONFIG_USB_EGALAX is not set 998 1026 # CONFIG_USB_XPAD is not set 999 1027 # CONFIG_USB_ATI_REMOTE is not set 1028 + # CONFIG_USB_KEYSPAN_REMOTE is not set 1000 1029 1001 1030 # 1002 1031 # USB Imaging devices ··· 1053 1080 # CONFIG_USB_PHIDGETSERVO is not set 1054 1081 # CONFIG_USB_IDMOUSE is not set 1055 1082 # CONFIG_USB_SISUSBVGA is not set 1083 + # CONFIG_USB_LD is not set 1056 1084 1057 1085 # 1058 1086 # USB DSL modem support ··· 1095 1121 CONFIG_FS_MBCACHE=y 1096 1122 # CONFIG_REISERFS_FS is not set 1097 1123 # CONFIG_JFS_FS is not set 1124 + # CONFIG_FS_POSIX_ACL is not set 1098 1125 1099 1126 # 1100 1127 # XFS support ··· 1103 1128 # CONFIG_XFS_FS is not set 1104 1129 # CONFIG_MINIX_FS is not set 1105 1130 # CONFIG_ROMFS_FS is not set 1131 + # CONFIG_INOTIFY is not set 1106 1132 # CONFIG_QUOTA is not set 1107 1133 CONFIG_DNOTIFY=y 1108 1134 CONFIG_AUTOFS_FS=y
+1 -1
arch/ia64/kernel/domain.c
··· 341 341 #endif 342 342 343 343 /* Attach the domains */ 344 - for_each_online_cpu(i) { 344 + for_each_cpu_mask(i, *cpu_map) { 345 345 struct sched_domain *sd; 346 346 #ifdef CONFIG_SCHED_SMT 347 347 sd = &per_cpu(cpu_domains, i);
+1
arch/ia64/kernel/perfmon.c
··· 4312 4312 DPRINT(("before cmpxchg() old_ctx=%p new_ctx=%p\n", 4313 4313 thread->pfm_context, ctx)); 4314 4314 4315 + ret = -EBUSY; 4315 4316 old = ia64_cmpxchg(acq, &thread->pfm_context, NULL, ctx, sizeof(pfm_context_t *)); 4316 4317 if (old != NULL) { 4317 4318 DPRINT(("load_pid [%d] already has a context\n", req->load_pid));
+2 -1
arch/ia64/kernel/salinfo.c
··· 143 143 144 144 static struct salinfo_data salinfo_data[ARRAY_SIZE(salinfo_log_name)]; 145 145 146 - static spinlock_t data_lock, data_saved_lock; 146 + static DEFINE_SPINLOCK(data_lock); 147 + static DEFINE_SPINLOCK(data_saved_lock); 147 148 148 149 /** salinfo_platform_oemdata - optional callback to decode oemdata from an error 149 150 * record.
+1
arch/ia64/sn/kernel/io_init.c
··· 203 203 continue; 204 204 } 205 205 206 + spin_lock_init(&sn_flush_device_list->sfdl_flush_lock); 206 207 hubdev->hdi_flush_nasid_list.widget_p[widget] = 207 208 sn_flush_device_list; 208 209 }
+7 -3
arch/ppc/syslib/ppc4xx_dma.c
··· 620 620 return DMA_STATUS_GOOD; 621 621 } 622 622 623 + #ifdef CONFIG_PPC4xx_EDMA 623 624 /* 624 625 * Enables the burst on the channel (BTEN bit in the control/count register) 625 626 * Note: ··· 686 685 return DMA_STATUS_GOOD; 687 686 } 688 687 688 + EXPORT_SYMBOL(ppc4xx_enable_burst); 689 + EXPORT_SYMBOL(ppc4xx_disable_burst); 690 + EXPORT_SYMBOL(ppc4xx_set_burst_size); 691 + #endif /* CONFIG_PPC4xx_EDMA */ 692 + 689 693 EXPORT_SYMBOL(ppc4xx_init_dma_channel); 690 694 EXPORT_SYMBOL(ppc4xx_get_channel_config); 691 695 EXPORT_SYMBOL(ppc4xx_set_channel_priority); ··· 709 703 EXPORT_SYMBOL(ppc4xx_disable_dma_interrupt); 710 704 EXPORT_SYMBOL(ppc4xx_get_dma_status); 711 705 EXPORT_SYMBOL(ppc4xx_clr_dma_status); 712 - EXPORT_SYMBOL(ppc4xx_enable_burst); 713 - EXPORT_SYMBOL(ppc4xx_disable_burst); 714 - EXPORT_SYMBOL(ppc4xx_set_burst_size); 706 +
+1 -78
arch/ppc64/kernel/LparData.c
··· 32 32 /* The HvReleaseData is the root of the information shared between 33 33 * the hypervisor and Linux. 34 34 */ 35 - 36 - /* 37 - * WARNING - magic here 38 - * 39 - * Ok, this is a horrid hack below, but marginally better than the 40 - * alternatives. What we really want is just to initialize 41 - * hvReleaseData in C as in the #if 0 section here. However, gcc 42 - * refuses to believe that (u32)&x is a constant expression, so will 43 - * not allow the xMsNucDataOffset field to be properly initialized. 44 - * So, we declare hvReleaseData in inline asm instead. We use inline 45 - * asm, rather than a .S file, because the assembler won't generate 46 - * the necessary relocation for the LparMap either, unless that symbol 47 - * is declared in the same source file. Finally, we put the asm in a 48 - * dummy, attribute-used function, instead of at file scope, because 49 - * file scope asms don't allow contraints. We want to use the "i" 50 - * constraints to put sizeof() and offsetof() expressions in there, 51 - * because including asm/offsets.h in C code then stringifying causes 52 - * all manner of warnings. 53 - */ 54 - #if 0 55 35 struct HvReleaseData hvReleaseData = { 56 36 .xDesc = 0xc8a5d9c4, /* "HvRD" ebcdic */ 57 37 .xSize = sizeof(struct HvReleaseData), 58 38 .xVpdAreasPtrOffset = offsetof(struct naca_struct, xItVpdAreas), 59 39 .xSlicNacaAddr = &naca, /* 64-bit Naca address */ 60 - .xMsNucDataOffset = (u32)((unsigned long)&xLparMap - KERNELBASE), 40 + .xMsNucDataOffset = LPARMAP_PHYS, 61 41 .xFlags = HVREL_TAGSINACTIVE /* tags inactive */ 62 42 /* 64 bit */ 63 43 /* shared processors */ ··· 49 69 .xVrmName = { 0xd3, 0x89, 0x95, 0xa4, /* "Linux 2.4.64" ebcdic */ 50 70 0xa7, 0x40, 0xf2, 0x4b, 51 71 0xf4, 0x4b, 0xf6, 0xf4 }, 52 - }; 53 - #endif 54 - 55 - 56 - extern struct HvReleaseData hvReleaseData; 57 - 58 - static void __attribute_used__ hvReleaseData_wrapper(void) 59 - { 60 - /* This doesn't appear to need any alignment (even 4 byte) */ 61 - asm volatile ( 62 - " lparMapPhys = xLparMap - %3\n" 63 - " .data\n" 64 - " .globl hvReleaseData\n" 65 - "hvReleaseData:\n" 66 - " .long 0xc8a5d9c4\n" /* xDesc */ 67 - /* "HvRD" in ebcdic */ 68 - " .short %0\n" /* xSize */ 69 - " .short %1\n" /* xVpdAreasPtrOffset */ 70 - " .llong naca\n" /* xSlicNacaAddr */ 71 - " .long lparMapPhys\n" /* xMsNucDataOffset */ 72 - " .long 0\n" /* xRsvd1 */ 73 - " .short %2\n" /* xFlags */ 74 - " .short 4\n" /* xVrmIndex - v5r2m0 */ 75 - " .short 3\n" /* xMinSupportedPlicVrmIndex - v5r1m0 */ 76 - " .short 3\n" /* xMinCompatablePlicVrmIndex - v5r1m0 */ 77 - " .long 0xd38995a4\n" /* xVrmName */ 78 - " .long 0xa740f24b\n" /* "Linux 2.4.64" ebcdic */ 79 - " .long 0xf44bf6f4\n" 80 - " . = hvReleaseData + %0\n" 81 - " .previous\n" 82 - : : "i"(sizeof(hvReleaseData)), 83 - "i"(offsetof(struct naca_struct, xItVpdAreas)), 84 - "i"(HVREL_TAGSINACTIVE /* tags inactive, 64 bit, */ 85 - /* shared processors, HMT allowed */ 86 - | 6), /* TEMP: This allows non-GA drivers */ 87 - "i"(KERNELBASE) 88 - ); 89 - } 90 - 91 - struct LparMap __attribute__((aligned (16))) xLparMap = { 92 - .xNumberEsids = HvEsidsToMap, 93 - .xNumberRanges = HvRangesToMap, 94 - .xSegmentTableOffs = STAB0_PAGE, 95 - 96 - .xEsids = { 97 - { .xKernelEsid = GET_ESID(KERNELBASE), 98 - .xKernelVsid = KERNEL_VSID(KERNELBASE), }, 99 - { .xKernelEsid = GET_ESID(VMALLOCBASE), 100 - .xKernelVsid = KERNEL_VSID(VMALLOCBASE), }, 101 - }, 102 - 103 - .xRanges = { 104 - { .xPages = HvPagesToMap, 105 - .xOffset = 0, 106 - .xVPN = KERNEL_VSID(KERNELBASE) << (SID_SHIFT - PAGE_SHIFT), 107 - }, 108 - }, 109 72 }; 110 73 111 74 extern void system_reset_iSeries(void);
+5
arch/ppc64/kernel/Makefile
··· 73 73 obj-$(CONFIG_KPROBES) += kprobes.o 74 74 75 75 CFLAGS_ioctl32.o += -Ifs/ 76 + 77 + ifeq ($(CONFIG_PPC_ISERIES),y) 78 + arch/ppc64/kernel/head.o: arch/ppc64/kernel/lparmap.s 79 + AFLAGS_head.o += -Iarch/ppc64/kernel 80 + endif
+6
arch/ppc64/kernel/head.S
··· 38 38 #include <asm/cputable.h> 39 39 #include <asm/setup.h> 40 40 #include <asm/hvcall.h> 41 + #include <asm/iSeries/LparMap.h> 41 42 42 43 #ifdef CONFIG_PPC_ISERIES 43 44 #define DO_SOFT_DISABLE ··· 679 678 .= 0x7000 680 679 .globl fwnmi_data_area 681 680 fwnmi_data_area: 681 + 682 + #ifdef CONFIG_PPC_ISERIES 683 + . = LPARMAP_PHYS 684 + #include "lparmap.s" 685 + #endif /* CONFIG_PPC_ISERIES */ 682 686 683 687 /* 684 688 * Vectors for the FWNMI option. Share common code.
+4 -3
arch/ppc64/kernel/iommu.c
··· 242 242 dma_addr_t dma_next = 0, dma_addr; 243 243 unsigned long flags; 244 244 struct scatterlist *s, *outs, *segstart; 245 - int outcount; 245 + int outcount, incount; 246 246 unsigned long handle; 247 247 248 248 BUG_ON(direction == DMA_NONE); ··· 252 252 253 253 outs = s = segstart = &sglist[0]; 254 254 outcount = 1; 255 + incount = nelems; 255 256 handle = 0; 256 257 257 258 /* Init first segment length for backout at failure */ ··· 339 338 340 339 DBG("mapped %d elements:\n", outcount); 341 340 342 - /* For the sake of iommu_free_sg, we clear out the length in the 341 + /* For the sake of iommu_unmap_sg, we clear out the length in the 343 342 * next entry of the sglist if we didn't fill the list completely 344 343 */ 345 - if (outcount < nelems) { 344 + if (outcount < incount) { 346 345 outs++; 347 346 outs->dma_address = DMA_ERROR_CODE; 348 347 outs->dma_length = 0;
+31
arch/ppc64/kernel/lparmap.c
··· 1 + /* 2 + * Copyright (C) 2005 Stephen Rothwell IBM Corp. 3 + * 4 + * This program is free software; you can redistribute it and/or 5 + * modify it under the terms of the GNU General Public License 6 + * as published by the Free Software Foundation; either version 7 + * 2 of the License, or (at your option) any later version. 8 + */ 9 + #include <asm/mmu.h> 10 + #include <asm/page.h> 11 + #include <asm/iSeries/LparMap.h> 12 + 13 + const struct LparMap __attribute__((__section__(".text"))) xLparMap = { 14 + .xNumberEsids = HvEsidsToMap, 15 + .xNumberRanges = HvRangesToMap, 16 + .xSegmentTableOffs = STAB0_PAGE, 17 + 18 + .xEsids = { 19 + { .xKernelEsid = GET_ESID(KERNELBASE), 20 + .xKernelVsid = KERNEL_VSID(KERNELBASE), }, 21 + { .xKernelEsid = GET_ESID(VMALLOCBASE), 22 + .xKernelVsid = KERNEL_VSID(VMALLOCBASE), }, 23 + }, 24 + 25 + .xRanges = { 26 + { .xPages = HvPagesToMap, 27 + .xOffset = 0, 28 + .xVPN = KERNEL_VSID(KERNELBASE) << (SID_SHIFT - PAGE_SHIFT), 29 + }, 30 + }, 31 + };
+5
arch/sh/kernel/entry.S
··· 1145 1145 .long sys_add_key /* 285 */ 1146 1146 .long sys_request_key 1147 1147 .long sys_keyctl 1148 + .long sys_ioprio_set 1149 + .long sys_ioprio_get 1150 + .long sys_inotify_init /* 290 */ 1151 + .long sys_inotify_add_watch 1152 + .long sys_inotify_rm_watch 1148 1153 1149 1154 /* End of entry.S */
+5
arch/sh64/kernel/syscalls.S
··· 342 342 .long sys_add_key 343 343 .long sys_request_key 344 344 .long sys_keyctl /* 315 */ 345 + .long sys_ioprio_set 346 + .long sys_ioprio_get 347 + .long sys_inotify_init 348 + .long sys_inotify_add_watch 349 + .long sys_inotify_rm_watch /* 320 */ 345 350
+27 -9
arch/sparc64/kernel/us2e_cpufreq.c
··· 88 88 { 89 89 unsigned long old_refr_count, refr_count, mctrl; 90 90 91 - 92 91 refr_count = (clock_tick * MCTRL0_REFR_INTERVAL); 93 92 refr_count /= (MCTRL0_REFR_CLKS_P_CNT * divisor * 1000000000UL); 94 93 ··· 229 230 return ret; 230 231 } 231 232 233 + static unsigned int us2e_freq_get(unsigned int cpu) 234 + { 235 + cpumask_t cpus_allowed; 236 + unsigned long clock_tick, estar; 237 + 238 + if (!cpu_online(cpu)) 239 + return 0; 240 + 241 + cpus_allowed = current->cpus_allowed; 242 + set_cpus_allowed(current, cpumask_of_cpu(cpu)); 243 + 244 + clock_tick = sparc64_get_clock_tick(cpu) / 1000; 245 + estar = read_hbreg(HBIRD_ESTAR_MODE_ADDR); 246 + 247 + set_cpus_allowed(current, cpus_allowed); 248 + 249 + return clock_tick / estar_to_divisor(estar); 250 + } 251 + 232 252 static void us2e_set_cpu_divider_index(unsigned int cpu, unsigned int index) 233 253 { 234 254 unsigned long new_bits, new_freq; ··· 261 243 cpus_allowed = current->cpus_allowed; 262 244 set_cpus_allowed(current, cpumask_of_cpu(cpu)); 263 245 264 - new_freq = clock_tick = sparc64_get_clock_tick(cpu); 246 + new_freq = clock_tick = sparc64_get_clock_tick(cpu) / 1000; 265 247 new_bits = index_to_estar_mode(index); 266 248 divisor = index_to_divisor(index); 267 249 new_freq /= divisor; ··· 276 258 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); 277 259 278 260 if (old_divisor != divisor) 279 - us2e_transition(estar, new_bits, clock_tick, old_divisor, divisor); 261 + us2e_transition(estar, new_bits, clock_tick * 1000, 262 + old_divisor, divisor); 280 263 281 264 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); 282 265 ··· 291 272 unsigned int new_index = 0; 292 273 293 274 if (cpufreq_frequency_table_target(policy, 294 - &us2e_freq_table[policy->cpu].table[0], 295 - target_freq, 296 - relation, 297 - &new_index)) 275 + &us2e_freq_table[policy->cpu].table[0], 276 + target_freq, relation, &new_index)) 298 277 return -EINVAL; 299 278 300 279 us2e_set_cpu_divider_index(policy->cpu, new_index); ··· 309 292 static int __init us2e_freq_cpu_init(struct cpufreq_policy *policy) 310 293 { 311 294 unsigned int cpu = policy->cpu; 312 - unsigned long clock_tick = sparc64_get_clock_tick(cpu); 295 + unsigned long clock_tick = sparc64_get_clock_tick(cpu) / 1000; 313 296 struct cpufreq_frequency_table *table = 314 297 &us2e_freq_table[cpu].table[0]; 315 298 ··· 368 351 memset(us2e_freq_table, 0, 369 352 (NR_CPUS * sizeof(struct us2e_freq_percpu_info))); 370 353 354 + driver->init = us2e_freq_cpu_init; 371 355 driver->verify = us2e_freq_verify; 372 356 driver->target = us2e_freq_target; 373 - driver->init = us2e_freq_cpu_init; 357 + driver->get = us2e_freq_get; 374 358 driver->exit = us2e_freq_cpu_exit; 375 359 driver->owner = THIS_MODULE, 376 360 strcpy(driver->name, "UltraSPARC-IIe");
+25 -4
arch/sparc64/kernel/us3_cpufreq.c
··· 56 56 57 57 static unsigned long get_current_freq(unsigned int cpu, unsigned long safari_cfg) 58 58 { 59 - unsigned long clock_tick = sparc64_get_clock_tick(cpu); 59 + unsigned long clock_tick = sparc64_get_clock_tick(cpu) / 1000; 60 60 unsigned long ret; 61 61 62 62 switch (safari_cfg & SAFARI_CFG_DIV_MASK) { ··· 76 76 return ret; 77 77 } 78 78 79 + static unsigned int us3_freq_get(unsigned int cpu) 80 + { 81 + cpumask_t cpus_allowed; 82 + unsigned long reg; 83 + unsigned int ret; 84 + 85 + if (!cpu_online(cpu)) 86 + return 0; 87 + 88 + cpus_allowed = current->cpus_allowed; 89 + set_cpus_allowed(current, cpumask_of_cpu(cpu)); 90 + 91 + reg = read_safari_cfg(); 92 + ret = get_current_freq(cpu, reg); 93 + 94 + set_cpus_allowed(current, cpus_allowed); 95 + 96 + return ret; 97 + } 98 + 79 99 static void us3_set_cpu_divider_index(unsigned int cpu, unsigned int index) 80 100 { 81 101 unsigned long new_bits, new_freq, reg; ··· 108 88 cpus_allowed = current->cpus_allowed; 109 89 set_cpus_allowed(current, cpumask_of_cpu(cpu)); 110 90 111 - new_freq = sparc64_get_clock_tick(cpu); 91 + new_freq = sparc64_get_clock_tick(cpu) / 1000; 112 92 switch (index) { 113 93 case 0: 114 94 new_bits = SAFARI_CFG_DIV_1; ··· 170 150 static int __init us3_freq_cpu_init(struct cpufreq_policy *policy) 171 151 { 172 152 unsigned int cpu = policy->cpu; 173 - unsigned long clock_tick = sparc64_get_clock_tick(cpu); 153 + unsigned long clock_tick = sparc64_get_clock_tick(cpu) / 1000; 174 154 struct cpufreq_frequency_table *table = 175 155 &us3_freq_table[cpu].table[0]; 176 156 ··· 226 206 memset(us3_freq_table, 0, 227 207 (NR_CPUS * sizeof(struct us3_freq_percpu_info))); 228 208 209 + driver->init = us3_freq_cpu_init; 229 210 driver->verify = us3_freq_verify; 230 211 driver->target = us3_freq_target; 231 - driver->init = us3_freq_cpu_init; 212 + driver->get = us3_freq_get; 232 213 driver->exit = us3_freq_cpu_exit; 233 214 driver->owner = THIS_MODULE, 234 215 strcpy(driver->name, "UltraSPARC-III");
+5 -1
arch/um/kernel/skas/process.c
··· 61 61 62 62 CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); 63 63 } while((n >= 0) && WIFSTOPPED(status) && 64 - (WSTOPSIG(status) == SIGVTALRM)); 64 + ((WSTOPSIG(status) == SIGVTALRM) || 65 + /* running UML inside a detached screen can cause 66 + * SIGWINCHes 67 + */ 68 + (WSTOPSIG(status) == SIGWINCH))); 65 69 66 70 if((n < 0) || !WIFSTOPPED(status) || 67 71 (WSTOPSIG(status) != SIGUSR1 && WSTOPSIG(status) != SIGTRAP)){
-1
arch/um/os-Linux/elf_aux.c
··· 9 9 */ 10 10 #include <elf.h> 11 11 #include <stddef.h> 12 - #include <asm/elf.h> 13 12 #include "init.h" 14 13 #include "elf_user.h" 15 14 #include "mem_user.h"
+1 -1
arch/x86_64/kernel/smpboot.c
··· 334 334 { 335 335 if (notscsync || !cpu_has_tsc) 336 336 return; 337 - sync_tsc(boot_cpu_id); 337 + sync_tsc(0); 338 338 } 339 339 340 340 static __init int notscsync_setup(char *s)
+1 -1
drivers/acpi/motherboard.c
··· 43 43 */ 44 44 #define IS_RESERVED_ADDR(base, len) \ 45 45 (((len) > 0) && ((base) > 0) && ((base) + (len) < IO_SPACE_LIMIT) \ 46 - && ((base) + (len) > 0x1000)) 46 + && ((base) + (len) > PCIBIOS_MIN_IO)) 47 47 48 48 /* 49 49 * Clearing the flag (IORESOURCE_BUSY) allows drivers to use
+3 -3
drivers/acpi/osl.c
··· 71 71 extern char line_buf[80]; 72 72 #endif /*ENABLE_DEBUGGER*/ 73 73 74 - int acpi_specific_hotkey_enabled; 74 + int acpi_specific_hotkey_enabled = TRUE; 75 75 EXPORT_SYMBOL(acpi_specific_hotkey_enabled); 76 76 77 77 static unsigned int acpi_irq_irq; ··· 1162 1162 int __init 1163 1163 acpi_hotkey_setup(char *str) 1164 1164 { 1165 - acpi_specific_hotkey_enabled = TRUE; 1165 + acpi_specific_hotkey_enabled = FALSE; 1166 1166 return 1; 1167 1167 } 1168 1168 1169 - __setup("acpi_specific_hotkey", acpi_hotkey_setup); 1169 + __setup("acpi_generic_hotkey", acpi_hotkey_setup); 1170 1170 1171 1171 /* 1172 1172 * max_cstate is defined in the base kernel so modules can
+3 -1
drivers/base/bus.c
··· 180 180 up(&dev->sem); 181 181 put_device(dev); 182 182 } 183 - return err; 183 + if (err) 184 + return err; 185 + return count; 184 186 } 185 187 static DRIVER_ATTR(bind, S_IWUSR, NULL, driver_bind); 186 188
+6 -4
drivers/base/class.c
··· 299 299 300 300 pr_debug("device class '%s': release.\n", cd->class_id); 301 301 302 + if (cd->devt_attr) { 303 + kfree(cd->devt_attr); 304 + cd->devt_attr = NULL; 305 + } 306 + 302 307 if (cls->release) 303 308 cls->release(cd); 304 309 else { ··· 596 591 597 592 if (class_dev->dev) 598 593 sysfs_remove_link(&class_dev->kobj, "device"); 599 - if (class_dev->devt_attr) { 594 + if (class_dev->devt_attr) 600 595 class_device_remove_file(class_dev, class_dev->devt_attr); 601 - kfree(class_dev->devt_attr); 602 - class_dev->devt_attr = NULL; 603 - } 604 596 class_device_remove_attrs(class_dev); 605 597 606 598 kobject_hotplug(&class_dev->kobj, KOBJ_REMOVE);
+8 -4
drivers/char/mem.c
··· 261 261 262 262 static int mmap_kmem(struct file * file, struct vm_area_struct * vma) 263 263 { 264 - unsigned long long val; 264 + unsigned long pfn; 265 + 266 + /* Turn a kernel-virtual address into a physical page frame */ 267 + pfn = __pa((u64)vma->vm_pgoff << PAGE_SHIFT) >> PAGE_SHIFT; 268 + 265 269 /* 266 270 * RED-PEN: on some architectures there is more mapped memory 267 271 * than available in mem_map which pfn_valid checks ··· 273 269 * 274 270 * RED-PEN: vmalloc is not supported right now. 275 271 */ 276 - if (!pfn_valid(vma->vm_pgoff)) 272 + if (!pfn_valid(pfn)) 277 273 return -EIO; 278 - val = (u64)vma->vm_pgoff << PAGE_SHIFT; 279 - vma->vm_pgoff = __pa(val) >> PAGE_SHIFT; 274 + 275 + vma->vm_pgoff = pfn; 280 276 return mmap_mem(file, vma); 281 277 } 282 278
+1
drivers/ide/Kconfig
··· 764 764 config BLK_DEV_IDEDMA_PMAC 765 765 bool "PowerMac IDE DMA support" 766 766 depends on BLK_DEV_IDE_PMAC 767 + select BLK_DEV_IDEDMA_PCI 767 768 help 768 769 This option allows the driver for the built-in IDE controller on 769 770 Power Macintoshes and PowerBooks to use DMA (direct memory access)
+1 -1
drivers/ide/ide-floppy.c
··· 317 317 unsigned long flags; 318 318 } idefloppy_floppy_t; 319 319 320 - #define IDEFLOPPY_TICKS_DELAY 3 /* default delay for ZIP 100 */ 320 + #define IDEFLOPPY_TICKS_DELAY HZ/20 /* default delay for ZIP 100 (50ms) */ 321 321 322 322 /* 323 323 * Floppy flag bits values.
+7
drivers/ide/pci/generic.c
··· 173 173 .channels = 2, 174 174 .autodma = NOAUTODMA, 175 175 .bootable = ON_BOARD, 176 + },{ /* 14 */ 177 + .name = "Revolution", 178 + .init_hwif = init_hwif_generic, 179 + .channels = 2, 180 + .autodma = AUTODMA, 181 + .bootable = OFF_BOARD, 176 182 } 177 183 }; 178 184 ··· 237 231 { PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 11}, 238 232 { PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 12}, 239 233 { PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 13}, 234 + { PCI_VENDOR_ID_NETCELL,PCI_DEVICE_ID_REVOLUTION, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 14}, 240 235 /* Must come last. If you add entries adjust this table appropriately and the init_one code */ 241 236 { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE << 8, 0xFFFFFF00UL, 0}, 242 237 { 0, },
+23
drivers/ide/pci/serverworks.c
··· 21 21 * 22 22 * CSB6: `Champion South Bridge' IDE Interface (optional: third channel) 23 23 * 24 + * HT1000: AKA BCM5785 - Hypertransport Southbridge for Opteron systems. IDE 25 + * controller same as the CSB6. Single channel ATA100 only. 26 + * 24 27 * Documentation: 25 28 * Available under NDA only. Errata info very hard to get. 26 29 * ··· 74 71 if (!svwks_revision) 75 72 pci_read_config_byte(dev, PCI_REVISION_ID, &svwks_revision); 76 73 74 + if (dev->device == PCI_DEVICE_ID_SERVERWORKS_HT1000IDE) 75 + return 2; 77 76 if (dev->device == PCI_DEVICE_ID_SERVERWORKS_OSB4IDE) { 78 77 u32 reg = 0; 79 78 if (isa_dev) ··· 114 109 case PCI_DEVICE_ID_SERVERWORKS_CSB5IDE: 115 110 case PCI_DEVICE_ID_SERVERWORKS_CSB6IDE: 116 111 case PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2: 112 + case PCI_DEVICE_ID_SERVERWORKS_HT1000IDE: 117 113 return 1; 118 114 default: 119 115 break; ··· 444 438 btr |= (svwks_revision >= SVWKS_CSB5_REVISION_NEW) ? 0x3 : 0x2; 445 439 pci_write_config_byte(dev, 0x5A, btr); 446 440 } 441 + /* Setup HT1000 SouthBridge Controller - Single Channel Only */ 442 + else if (dev->device == PCI_DEVICE_ID_SERVERWORKS_HT1000IDE) { 443 + pci_read_config_byte(dev, 0x5A, &btr); 444 + btr &= ~0x40; 445 + btr |= 0x3; 446 + pci_write_config_byte(dev, 0x5A, btr); 447 + } 447 448 448 449 return (dev->irq) ? dev->irq : 0; 449 450 } ··· 642 629 .channels = 1, /* 2 */ 643 630 .autodma = AUTODMA, 644 631 .bootable = ON_BOARD, 632 + },{ /* 4 */ 633 + .name = "SvrWks HT1000", 634 + .init_setup = init_setup_svwks, 635 + .init_chipset = init_chipset_svwks, 636 + .init_hwif = init_hwif_svwks, 637 + .init_dma = init_dma_svwks, 638 + .channels = 1, /* 2 */ 639 + .autodma = AUTODMA, 640 + .bootable = ON_BOARD, 645 641 } 646 642 }; 647 643 ··· 675 653 { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1}, 676 654 { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2}, 677 655 { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3}, 656 + { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4}, 678 657 { 0, }, 679 658 }; 680 659 MODULE_DEVICE_TABLE(pci, svwks_pci_tbl);
+1 -1
drivers/ide/ppc/pmac.c
··· 1664 1664 }; 1665 1665 1666 1666 static struct pci_device_id pmac_ide_pci_match[] = { 1667 - { PCI_VENDOR_ID_APPLE, PCI_DEVIEC_ID_APPLE_UNI_N_ATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 1667 + { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_UNI_N_ATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 1668 1668 { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_IPID_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 1669 1669 { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_K2_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 1670 1670 { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_SH_ATA,
+1
drivers/ide/setup-pci.c
··· 229 229 case PCI_DEVICE_ID_AMD_VIPER_7409: 230 230 case PCI_DEVICE_ID_CMD_643: 231 231 case PCI_DEVICE_ID_SERVERWORKS_CSB5IDE: 232 + case PCI_DEVICE_ID_REVOLUTION: 232 233 simplex_stat = hwif->INB(dma_base + 2); 233 234 hwif->OUTB((simplex_stat&0x60),(dma_base + 2)); 234 235 simplex_stat = hwif->INB(dma_base + 2);
+3
drivers/md/md.c
··· 623 623 mddev->raid_disks = sb->raid_disks; 624 624 mddev->size = sb->size; 625 625 mddev->events = md_event(sb); 626 + mddev->bitmap_offset = 0; 626 627 627 628 if (sb->state & (1<<MD_SB_CLEAN)) 628 629 mddev->recovery_cp = MaxSector; ··· 939 938 mddev->raid_disks = le32_to_cpu(sb->raid_disks); 940 939 mddev->size = le64_to_cpu(sb->size)/2; 941 940 mddev->events = le64_to_cpu(sb->events); 941 + mddev->bitmap_offset = 0; 942 942 943 943 mddev->recovery_cp = le64_to_cpu(sb->resync_offset); 944 944 memcpy(mddev->uuid, sb->set_uuid, 16); ··· 1826 1824 fput(mddev->bitmap_file); 1827 1825 mddev->bitmap_file = NULL; 1828 1826 } 1827 + mddev->bitmap_offset = 0; 1829 1828 1830 1829 /* 1831 1830 * Free resources if final stop
+7
drivers/net/8139cp.c
··· 1897 1897 { 1898 1898 struct net_device *dev; 1899 1899 struct cp_private *cp; 1900 + unsigned long flags; 1900 1901 1901 1902 dev = pci_get_drvdata (pdev); 1902 1903 cp = netdev_priv(dev); ··· 1911 1910 1912 1911 cp_init_hw (cp); 1913 1912 netif_start_queue (dev); 1913 + 1914 + spin_lock_irqsave (&cp->lock, flags); 1915 + 1916 + mii_check_media(&cp->mii_if, netif_msg_link(cp), FALSE); 1917 + 1918 + spin_unlock_irqrestore (&cp->lock, flags); 1914 1919 1915 1920 return 0; 1916 1921 }
+26 -26
drivers/net/dm9000.c
··· 48 48 * net_device_stats 49 49 * * introduced tx_timeout function 50 50 * * reworked locking 51 + * 52 + * 01-Jul-2005 Ben Dooks <ben@simtec.co.uk> 53 + * * fixed spinlock call without pointer 54 + * * ensure spinlock is initialised 51 55 */ 52 56 53 57 #include <linux/module.h> ··· 152 148 static int dm9000_open(struct net_device *); 153 149 static int dm9000_start_xmit(struct sk_buff *, struct net_device *); 154 150 static int dm9000_stop(struct net_device *); 155 - static int dm9000_do_ioctl(struct net_device *, struct ifreq *, int); 156 151 157 152 158 153 static void dm9000_timer(unsigned long); ··· 325 322 326 323 /* Save previous register address */ 327 324 reg_save = readb(db->io_addr); 328 - spin_lock_irqsave(db->lock,flags); 325 + spin_lock_irqsave(&db->lock,flags); 329 326 330 327 netif_stop_queue(dev); 331 328 dm9000_reset(db); ··· 336 333 337 334 /* Restore previous register address */ 338 335 writeb(reg_save, db->io_addr); 339 - spin_unlock_irqrestore(db->lock,flags); 336 + spin_unlock_irqrestore(&db->lock,flags); 340 337 } 341 338 342 339 ··· 390 387 int i; 391 388 u32 id_val; 392 389 393 - printk(KERN_INFO "%s Ethernet Driver\n", CARDNAME); 394 - 395 390 /* Init network device */ 396 391 ndev = alloc_etherdev(sizeof (struct board_info)); 397 392 if (!ndev) { ··· 405 404 /* setup board info structure */ 406 405 db = (struct board_info *) ndev->priv; 407 406 memset(db, 0, sizeof (*db)); 407 + 408 + spin_lock_init(&db->lock); 408 409 409 410 if (pdev->num_resources < 2) { 410 411 ret = -ENODEV; ··· 544 541 ndev->stop = &dm9000_stop; 545 542 ndev->get_stats = &dm9000_get_stats; 546 543 ndev->set_multicast_list = &dm9000_hash_table; 547 - ndev->do_ioctl = &dm9000_do_ioctl; 548 544 549 545 #ifdef DM9000_PROGRAM_EEPROM 550 546 program_eeprom(db); ··· 614 612 615 613 /* set and active a timer process */ 616 614 init_timer(&db->timer); 617 - db->timer.expires = DM9000_TIMER_WUT * 2; 615 + db->timer.expires = DM9000_TIMER_WUT; 618 616 db->timer.data = (unsigned long) dev; 619 617 db->timer.function = &dm9000_timer; 620 618 add_timer(&db->timer); ··· 847 845 return &db->stats; 848 846 } 849 847 850 - /* 851 - * Process the upper socket ioctl command 852 - */ 853 - static int 854 - dm9000_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 855 - { 856 - PRINTK1("entering %s\n",__FUNCTION__); 857 - return 0; 858 - } 859 848 860 849 /* 861 850 * A periodic timer routine ··· 857 864 { 858 865 struct net_device *dev = (struct net_device *) data; 859 866 board_info_t *db = (board_info_t *) dev->priv; 860 - u8 reg_save; 861 - unsigned long flags; 862 867 863 868 PRINTK3("dm9000_timer()\n"); 864 869 865 - spin_lock_irqsave(db->lock,flags); 866 - /* Save previous register address */ 867 - reg_save = readb(db->io_addr); 868 - 869 870 mii_check_media(&db->mii, netif_msg_link(db), 0); 870 - 871 - /* Restore previous register address */ 872 - writeb(reg_save, db->io_addr); 873 - spin_unlock_irqrestore(db->lock,flags); 874 871 875 872 /* Set timer again */ 876 873 db->timer.expires = DM9000_TIMER_WUT; ··· 1081 1098 { 1082 1099 board_info_t *db = (board_info_t *) dev->priv; 1083 1100 unsigned long flags; 1101 + unsigned int reg_save; 1084 1102 int ret; 1085 1103 1086 1104 spin_lock_irqsave(&db->lock,flags); 1105 + 1106 + /* Save previous register address */ 1107 + reg_save = readb(db->io_addr); 1108 + 1087 1109 /* Fill the phyxcer register into REG_0C */ 1088 1110 iow(db, DM9000_EPAR, DM9000_PHY | reg); 1089 1111 ··· 1098 1110 1099 1111 /* The read data keeps on REG_0D & REG_0E */ 1100 1112 ret = (ior(db, DM9000_EPDRH) << 8) | ior(db, DM9000_EPDRL); 1113 + 1114 + /* restore the previous address */ 1115 + writeb(reg_save, db->io_addr); 1101 1116 1102 1117 spin_unlock_irqrestore(&db->lock,flags); 1103 1118 ··· 1115 1124 { 1116 1125 board_info_t *db = (board_info_t *) dev->priv; 1117 1126 unsigned long flags; 1127 + unsigned long reg_save; 1118 1128 1119 1129 spin_lock_irqsave(&db->lock,flags); 1130 + 1131 + /* Save previous register address */ 1132 + reg_save = readb(db->io_addr); 1120 1133 1121 1134 /* Fill the phyxcer register into REG_0C */ 1122 1135 iow(db, DM9000_EPAR, DM9000_PHY | reg); ··· 1132 1137 iow(db, DM9000_EPCR, 0xa); /* Issue phyxcer write command */ 1133 1138 udelay(500); /* Wait write complete */ 1134 1139 iow(db, DM9000_EPCR, 0x0); /* Clear phyxcer write command */ 1140 + 1141 + /* restore the previous address */ 1142 + writeb(reg_save, db->io_addr); 1135 1143 1136 1144 spin_unlock_irqrestore(&db->lock,flags); 1137 1145 } ··· 1200 1202 static int __init 1201 1203 dm9000_init(void) 1202 1204 { 1205 + printk(KERN_INFO "%s Ethernet Driver\n", CARDNAME); 1206 + 1203 1207 return driver_register(&dm9000_driver); /* search board and register */ 1204 1208 } 1205 1209
+1
drivers/net/e1000/e1000_main.c
··· 3789 3789 struct e1000_adapter *adapter = netdev_priv(netdev); 3790 3790 disable_irq(adapter->pdev->irq); 3791 3791 e1000_intr(adapter->pdev->irq, netdev, NULL); 3792 + e1000_clean_tx_irq(adapter); 3792 3793 enable_irq(adapter->pdev->irq); 3793 3794 } 3794 3795 #endif
+4 -4
drivers/net/ioc3-eth.c
··· 499 499 ioc3_w_micr((phy << MICR_PHYADDR_SHIFT) | reg | MICR_READTRIG); 500 500 while (ioc3_r_micr() & MICR_BUSY); 501 501 502 - return ioc3_r_micr() & MIDR_DATA_MASK; 502 + return ioc3_r_midr_r() & MIDR_DATA_MASK; 503 503 } 504 504 505 505 static void ioc3_mdio_write(struct net_device *dev, int phy, int reg, int data) ··· 1291 1291 dev->features = NETIF_F_IP_CSUM; 1292 1292 #endif 1293 1293 1294 - ioc3_setup_duplex(ip); 1295 1294 sw_physid1 = ioc3_mdio_read(dev, ip->mii.phy_id, MII_PHYSID1); 1296 1295 sw_physid2 = ioc3_mdio_read(dev, ip->mii.phy_id, MII_PHYSID2); 1297 1296 ··· 1299 1300 goto out_stop; 1300 1301 1301 1302 mii_check_media(&ip->mii, 1, 1); 1303 + ioc3_setup_duplex(ip); 1302 1304 1303 1305 vendor = (sw_physid1 << 12) | (sw_physid2 >> 4); 1304 1306 model = (sw_physid2 >> 4) & 0x3f; ··· 1524 1524 struct ethtool_drvinfo *info) 1525 1525 { 1526 1526 struct ioc3_private *ip = netdev_priv(dev); 1527 - 1527 + 1528 1528 strcpy (info->driver, IOC3_NAME); 1529 1529 strcpy (info->version, IOC3_VERSION); 1530 1530 strcpy (info->bus_info, pci_name(ip->pdev)); ··· 1550 1550 spin_lock_irq(&ip->ioc3_lock); 1551 1551 rc = mii_ethtool_sset(&ip->mii, cmd); 1552 1552 spin_unlock_irq(&ip->ioc3_lock); 1553 - 1553 + 1554 1554 return rc; 1555 1555 } 1556 1556
+1 -1
drivers/net/loopback.c
··· 220 220 .ethtool_ops = &loopback_ethtool_ops, 221 221 }; 222 222 223 - /* Setup and register the of the LOOPBACK device. */ 223 + /* Setup and register the loopback device. */ 224 224 int __init loopback_init(void) 225 225 { 226 226 struct net_device_stats *stats;
+1 -1
drivers/pci/hotplug/pciehp.h
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29 #ifndef _PCIEHP_H
+1 -1
drivers/pci/hotplug/pciehp_core.c
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/pciehp_ctrl.c
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/pciehp_hpc.c
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/pciehp_pci.c
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/pciehprm.h
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/pciehprm_acpi.c
··· 20 20 * along with this program; if not, write to the Free Software 21 21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 22 22 * 23 - * Send feedback to <dely.l.sy@intel.com> 23 + * Send feedback to <kristen.c.accardi@intel.com> 24 24 * 25 25 */ 26 26
+1 -1
drivers/pci/hotplug/pciehprm_nonacpi.c
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/pciehprm_nonacpi.h
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/shpchp.h
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29 #ifndef _SHPCHP_H
+1 -1
drivers/pci/hotplug/shpchp_core.c
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/shpchp_ctrl.c
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/shpchp_hpc.c
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/shpchp_pci.c
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/shpchprm.h
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/shpchprm_acpi.c
··· 20 20 * along with this program; if not, write to the Free Software 21 21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 22 22 * 23 - * Send feedback to <dely.l.sy@intel.com> 23 + * Send feedback to <kristen.c.accardi@intel.com> 24 24 * 25 25 */ 26 26
+1 -1
drivers/pci/hotplug/shpchprm_legacy.c
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>,<dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>,<kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/shpchprm_legacy.h
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/shpchprm_nonacpi.c
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+1 -1
drivers/pci/hotplug/shpchprm_nonacpi.h
··· 23 23 * along with this program; if not, write to the Free Software 24 24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 25 * 26 - * Send feedback to <greg@kroah.com>, <dely.l.sy@intel.com> 26 + * Send feedback to <greg@kroah.com>, <kristen.c.accardi@intel.com> 27 27 * 28 28 */ 29 29
+4 -1
drivers/pci/msi.c
··· 453 453 } 454 454 } 455 455 456 - static void disable_msi_mode(struct pci_dev *dev, int pos, int type) 456 + void disable_msi_mode(struct pci_dev *dev, int pos, int type) 457 457 { 458 458 u16 control; 459 459 ··· 698 698 699 699 if (!pci_msi_enable || !dev) 700 700 return status; 701 + 702 + if (dev->no_msi) 703 + return status; 701 704 702 705 temp = dev->irq; 703 706
+6
drivers/pci/pci.h
··· 47 47 #define pci_msi_quirk 0 48 48 #endif 49 49 50 + #ifdef CONFIG_PCI_MSI 51 + void disable_msi_mode(struct pci_dev *dev, int pos, int type); 52 + #else 53 + static inline void disable_msi_mode(struct pci_dev *dev, int pos, int type) { } 54 + #endif 55 + 50 56 extern int pcie_mch_quirk; 51 57 extern struct device_attribute pci_dev_attrs[]; 52 58 extern struct class_device_attribute class_device_attr_cpuaffinity;
+21
drivers/pci/quirks.c
··· 1291 1291 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7320_MCH, quirk_pcie_mch ); 1292 1292 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7525_MCH, quirk_pcie_mch ); 1293 1293 1294 + 1295 + /* 1296 + * It's possible for the MSI to get corrupted if shpc and acpi 1297 + * are used together on certain PXH-based systems. 1298 + */ 1299 + static void __devinit quirk_pcie_pxh(struct pci_dev *dev) 1300 + { 1301 + disable_msi_mode(dev, pci_find_capability(dev, PCI_CAP_ID_MSI), 1302 + PCI_CAP_ID_MSI); 1303 + dev->no_msi = 1; 1304 + 1305 + printk(KERN_WARNING "PCI: PXH quirk detected, " 1306 + "disabling MSI for SHPC device\n"); 1307 + } 1308 + DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHD_0, quirk_pcie_pxh); 1309 + DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHD_1, quirk_pcie_pxh); 1310 + DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_0, quirk_pcie_pxh); 1311 + DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_1, quirk_pcie_pxh); 1312 + DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHV, quirk_pcie_pxh); 1313 + 1314 + 1294 1315 static void __devinit quirk_netmos(struct pci_dev *dev) 1295 1316 { 1296 1317 unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;
+2
drivers/pnp/card.c
··· 312 312 if (drv->link.driver.probe) { 313 313 if (drv->link.driver.probe(&dev->dev)) { 314 314 dev->dev.driver = NULL; 315 + dev->card_link = NULL; 316 + up_write(&dev->dev.bus->subsys.rwsem); 315 317 return NULL; 316 318 } 317 319 }
+13 -35
drivers/scsi/dc395x.c
··· 183 183 * cross a page boundy. 184 184 */ 185 185 #define SEGMENTX_LEN (sizeof(struct SGentry)*DC395x_MAX_SG_LISTENTRY) 186 - #define VIRTX_LEN (sizeof(void *) * DC395x_MAX_SG_LISTENTRY) 186 + 187 187 188 188 struct SGentry { 189 189 u32 address; /* bus! address */ ··· 235 235 u8 sg_count; /* No of HW sg entries for this request */ 236 236 u8 sg_index; /* Index of HW sg entry for this request */ 237 237 u32 total_xfer_length; /* Total number of bytes remaining to be transfered */ 238 - void **virt_map; 239 238 unsigned char *virt_addr; /* Virtual address of current transfer position */ 240 239 241 240 /* ··· 1021 1022 reqlen, cmd->request_buffer, cmd->use_sg, 1022 1023 srb->sg_count); 1023 1024 1025 + srb->virt_addr = page_address(sl->page); 1024 1026 for (i = 0; i < srb->sg_count; i++) { 1025 - u32 seglen = (u32)sg_dma_len(sl + i); 1026 - sgp[i].address = (u32)sg_dma_address(sl + i); 1027 + u32 busaddr = (u32)sg_dma_address(&sl[i]); 1028 + u32 seglen = (u32)sl[i].length; 1029 + sgp[i].address = busaddr; 1027 1030 sgp[i].length = seglen; 1028 1031 srb->total_xfer_length += seglen; 1029 - srb->virt_map[i] = kmap(sl[i].page); 1030 1032 } 1031 - srb->virt_addr = srb->virt_map[0]; 1032 1033 sgp += srb->sg_count - 1; 1033 1034 1034 1035 /* ··· 1975 1976 int segment = cmd->use_sg; 1976 1977 u32 xferred = srb->total_xfer_length - left; /* bytes transfered */ 1977 1978 struct SGentry *psge = srb->segment_x + srb->sg_index; 1978 - void **virt = srb->virt_map; 1979 1979 1980 1980 dprintkdbg(DBG_0, 1981 1981 "sg_update_list: Transfered %i of %i bytes, %i remain\n", ··· 2014 2016 2015 2017 /* We have to walk the scatterlist to find it */ 2016 2018 sg = (struct scatterlist *)cmd->request_buffer; 2017 - idx = 0; 2018 2019 while (segment--) { 2019 2020 unsigned long mask = 2020 2021 ~((unsigned long)sg->length - 1) & PAGE_MASK; 2021 2022 if ((sg_dma_address(sg) & mask) == (psge->address & mask)) { 2022 - srb->virt_addr = virt[idx] + (psge->address & ~PAGE_MASK); 2023 + srb->virt_addr = (page_address(sg->page) 2024 + + psge->address - 2025 + (psge->address & PAGE_MASK)); 2023 2026 return; 2024 2027 } 2025 2028 ++sg; 2026 - ++idx; 2027 2029 } 2028 2030 2029 2031 dprintkl(KERN_ERR, "sg_update_list: sg_to_virt failed\n"); ··· 2149 2151 DC395x_read32(acb, TRM_S1040_DMA_CXCNT)); 2150 2152 } 2151 2153 /* 2152 - * calculate all the residue data that not yet transfered 2154 + * calculate all the residue data that not yet tranfered 2153 2155 * SCSI transfer counter + left in SCSI FIFO data 2154 2156 * 2155 2157 * .....TRM_S1040_SCSI_COUNTER (24bits) ··· 3267 3269 struct scsi_cmnd *cmd = srb->cmd; 3268 3270 enum dma_data_direction dir = cmd->sc_data_direction; 3269 3271 if (cmd->use_sg && dir != PCI_DMA_NONE) { 3270 - int i; 3271 3272 /* unmap DC395x SG list */ 3272 3273 dprintkdbg(DBG_SG, "pci_unmap_srb: list=%08x(%05x)\n", 3273 3274 srb->sg_bus_addr, SEGMENTX_LEN); ··· 3276 3279 dprintkdbg(DBG_SG, "pci_unmap_srb: segs=%i buffer=%p\n", 3277 3280 cmd->use_sg, cmd->request_buffer); 3278 3281 /* unmap the sg segments */ 3279 - for (i = 0; i < srb->sg_count; i++) 3280 - kunmap(virt_to_page(srb->virt_map[i])); 3281 3282 pci_unmap_sg(acb->dev, 3282 3283 (struct scatterlist *)cmd->request_buffer, 3283 3284 cmd->use_sg, dir); ··· 3322 3327 3323 3328 if (cmd->use_sg) { 3324 3329 struct scatterlist* sg = (struct scatterlist *)cmd->request_buffer; 3325 - ptr = (struct ScsiInqData *)(srb->virt_map[0] + sg->offset); 3330 + ptr = (struct ScsiInqData *)(page_address(sg->page) + sg->offset); 3326 3331 } else { 3327 3332 ptr = (struct ScsiInqData *)(cmd->request_buffer); 3328 3333 } ··· 4257 4262 const unsigned srbs_per_page = PAGE_SIZE/SEGMENTX_LEN; 4258 4263 4259 4264 for (i = 0; i < DC395x_MAX_SRB_CNT; i += srbs_per_page) 4260 - kfree(acb->srb_array[i].segment_x); 4261 - 4262 - vfree(acb->srb_array[0].virt_map); 4265 + if (acb->srb_array[i].segment_x) 4266 + kfree(acb->srb_array[i].segment_x); 4263 4267 } 4264 4268 4265 4269 ··· 4274 4280 int srb_idx = 0; 4275 4281 unsigned i = 0; 4276 4282 struct SGentry *ptr; 4277 - void **virt_array; 4278 4283 4279 - for (i = 0; i < DC395x_MAX_SRB_CNT; i++) { 4284 + for (i = 0; i < DC395x_MAX_SRB_CNT; i++) 4280 4285 acb->srb_array[i].segment_x = NULL; 4281 - acb->srb_array[i].virt_map = NULL; 4282 - } 4283 4286 4284 4287 dprintkdbg(DBG_1, "Allocate %i pages for SG tables\n", pages); 4285 4288 while (pages--) { ··· 4297 4306 ptr + (i * DC395x_MAX_SG_LISTENTRY); 4298 4307 else 4299 4308 dprintkl(KERN_DEBUG, "No space for tmsrb SG table reserved?!\n"); 4300 - 4301 - virt_array = vmalloc((DC395x_MAX_SRB_CNT + 1) * DC395x_MAX_SG_LISTENTRY * sizeof(void*)); 4302 - 4303 - if (!virt_array) { 4304 - adapter_sg_tables_free(acb); 4305 - return 1; 4306 - } 4307 - 4308 - for (i = 0; i < DC395x_MAX_SRB_CNT + 1; i++) { 4309 - acb->srb_array[i].virt_map = virt_array; 4310 - virt_array += DC395x_MAX_SG_LISTENTRY; 4311 - } 4312 - 4313 4309 return 0; 4314 4310 } 4315 4311
+1
drivers/serial/sn_console.c
··· 1093 1093 return -1; 1094 1094 1095 1095 sal_console_port.sc_ops = &poll_ops; 1096 + spin_lock_init(&sal_console_port.sc_port.lock); 1096 1097 early_sn_setup(); /* Find SAL entry points */ 1097 1098 register_console(&sal_console_early); 1098 1099
+10 -11
drivers/usb/input/wacom.c
··· 342 342 goto exit; 343 343 } 344 344 345 - x = le16_to_cpu(*(__le16 *) &data[2]); 346 - y = le16_to_cpu(*(__le16 *) &data[4]); 347 - 348 345 input_regs(dev, regs); 349 346 350 347 if (data[1] & 0x10) { /* in prox */ ··· 370 373 } 371 374 } 372 375 373 - if (data[1] & 0x80) { 376 + if (data[1] & 0x90) { 377 + x = le16_to_cpu(*(__le16 *) &data[2]); 378 + y = le16_to_cpu(*(__le16 *) &data[4]); 374 379 input_report_abs(dev, ABS_X, x); 375 380 input_report_abs(dev, ABS_Y, y); 376 - } 377 - if (wacom->tool[0] != BTN_TOOL_MOUSE) { 378 - input_report_abs(dev, ABS_PRESSURE, le16_to_cpu(*(__le16 *) &data[6])); 379 - input_report_key(dev, BTN_TOUCH, data[1] & 0x01); 380 - input_report_key(dev, BTN_STYLUS, data[1] & 0x02); 381 - input_report_key(dev, BTN_STYLUS2, data[1] & 0x04); 381 + if (wacom->tool[0] != BTN_TOOL_MOUSE) { 382 + input_report_abs(dev, ABS_PRESSURE, le16_to_cpu(*(__le16 *) &data[6])); 383 + input_report_key(dev, BTN_TOUCH, data[1] & 0x01); 384 + input_report_key(dev, BTN_STYLUS, data[1] & 0x02); 385 + input_report_key(dev, BTN_STYLUS2, data[1] & 0x04); 386 + } 382 387 } 383 388 384 389 input_report_key(dev, wacom->tool[0], data[1] & 0x10); ··· 567 568 568 569 /* Cintiq doesn't send data when RDY bit isn't set */ 569 570 if ((wacom->features->type == CINTIQ) && !(data[1] & 0x40)) 570 - return; 571 + goto exit; 571 572 572 573 if (wacom->features->type >= INTUOS3) { 573 574 input_report_abs(dev, ABS_X, (data[2] << 9) | (data[3] << 1) | ((data[9] >> 1) & 1));
+3 -1
drivers/usb/mon/mon_main.c
··· 2 2 * The USB Monitor, inspired by Dave Harding's USBMon. 3 3 * 4 4 * mon_main.c: Main file, module initiation and exit, registrations, etc. 5 + * 6 + * Copyright (C) 2005 Pete Zaitcev (zaitcev@redhat.com) 5 7 */ 6 8 7 9 #include <linux/kernel.h> ··· 313 311 314 312 mondir = debugfs_create_dir("usbmon", NULL); 315 313 if (IS_ERR(mondir)) { 316 - printk(KERN_NOTICE TAG ": debugs is not available\n"); 314 + printk(KERN_NOTICE TAG ": debugfs is not available\n"); 317 315 return -ENODEV; 318 316 } 319 317 if (mondir == NULL) {
+2
drivers/usb/mon/usb_mon.h
··· 1 1 /* 2 2 * The USB Monitor, inspired by Dave Harding's USBMon. 3 + * 4 + * Copyright (C) 2005 Pete Zaitcev (zaitcev@redhat.com) 3 5 */ 4 6 5 7 #ifndef __USB_MON_H
+2 -2
drivers/video/fbmem.c
··· 628 628 int 629 629 fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var) 630 630 { 631 - int err; 631 + int err, flags = info->flags; 632 632 633 633 if (var->activate & FB_ACTIVATE_INV_MODE) { 634 634 struct fb_videomode mode1, mode2; ··· 682 682 !list_empty(&info->modelist)) 683 683 err = fb_add_videomode(&mode, &info->modelist); 684 684 685 - if (!err && info->flags & FBINFO_MISC_USEREVENT) { 685 + if (!err && (flags & FBINFO_MISC_USEREVENT)) { 686 686 struct fb_event event; 687 687 688 688 info->flags &= ~FBINFO_MISC_USEREVENT;
+27 -23
drivers/video/intelfb/intelfbdrv.c
··· 583 583 return -ENODEV; 584 584 } 585 585 586 - /* Map the fb and MMIO regions */ 587 - dinfo->aperture.virtual = (u8 __iomem *)ioremap_nocache 588 - (dinfo->aperture.physical, dinfo->aperture.size); 589 - if (!dinfo->aperture.virtual) { 590 - ERR_MSG("Cannot remap FB region.\n"); 591 - cleanup(dinfo); 592 - return -ENODEV; 593 - } 594 - dinfo->mmio_base = 595 - (u8 __iomem *)ioremap_nocache(dinfo->mmio_base_phys, 596 - INTEL_REG_SIZE); 597 - if (!dinfo->mmio_base) { 598 - ERR_MSG("Cannot remap MMIO region.\n"); 599 - cleanup(dinfo); 600 - return -ENODEV; 601 - } 602 - 603 586 /* Get the chipset info. */ 604 587 dinfo->pci_chipset = pdev->device; 605 588 ··· 613 630 dinfo->accel = 0; 614 631 } 615 632 633 + if (MB(voffset) < stolen_size) 634 + offset = (stolen_size >> 12); 635 + else 636 + offset = ROUND_UP_TO_PAGE(MB(voffset))/GTT_PAGE_SIZE; 637 + 616 638 /* Framebuffer parameters - Use all the stolen memory if >= vram */ 617 - if (ROUND_UP_TO_PAGE(stolen_size) >= MB(vram)) { 639 + if (ROUND_UP_TO_PAGE(stolen_size) >= ((offset << 12) + MB(vram))) { 618 640 dinfo->fb.size = ROUND_UP_TO_PAGE(stolen_size); 641 + dinfo->fb.offset = 0; 619 642 dinfo->fbmem_gart = 0; 620 643 } else { 621 644 dinfo->fb.size = MB(vram); ··· 652 663 return -ENODEV; 653 664 } 654 665 655 - if (MB(voffset) < stolen_size) 656 - offset = (stolen_size >> 12); 657 - else 658 - offset = ROUND_UP_TO_PAGE(MB(voffset))/GTT_PAGE_SIZE; 659 - 660 666 /* set the mem offsets - set them after the already used pages */ 661 667 if (dinfo->accel) { 662 668 dinfo->ring.offset = offset + gtt_info.current_memory; ··· 664 680 dinfo->fb.offset = offset + 665 681 + gtt_info.current_memory + (dinfo->ring.size >> 12) 666 682 + (dinfo->cursor.size >> 12); 683 + } 684 + 685 + /* Map the fb and MMIO regions */ 686 + /* ioremap only up to the end of used aperture */ 687 + dinfo->aperture.virtual = (u8 __iomem *)ioremap_nocache 688 + (dinfo->aperture.physical, (dinfo->fb.offset << 12) 689 + + dinfo->fb.size); 690 + if (!dinfo->aperture.virtual) { 691 + ERR_MSG("Cannot remap FB region.\n"); 692 + cleanup(dinfo); 693 + return -ENODEV; 694 + } 695 + 696 + dinfo->mmio_base = 697 + (u8 __iomem *)ioremap_nocache(dinfo->mmio_base_phys, 698 + INTEL_REG_SIZE); 699 + if (!dinfo->mmio_base) { 700 + ERR_MSG("Cannot remap MMIO region.\n"); 701 + cleanup(dinfo); 702 + return -ENODEV; 667 703 } 668 704 669 705 /* Allocate memories (which aren't stolen) */
+1 -1
drivers/video/radeonfb.c
··· 80 80 #include <video/radeon.h> 81 81 #include <linux/radeonfb.h> 82 82 83 - #define DEBUG 1 83 + #define DEBUG 0 84 84 85 85 #if DEBUG 86 86 #define RTRACE printk
+1 -1
drivers/w1/w1.c
··· 593 593 * Return 0 - device(s) present, 1 - no devices present. 594 594 */ 595 595 if (w1_reset_bus(dev)) { 596 - dev_info(&dev->dev, "No devices present on the wire.\n"); 596 + dev_dbg(&dev->dev, "No devices present on the wire.\n"); 597 597 break; 598 598 } 599 599
+6
fs/cifs/CHANGES
··· 1 + Version 1.35 2 + ------------ 3 + Add writepage performance improvements. Fix path name conversions 4 + for long filenames on mounts which were done with "mapchars" mount option 5 + specified. 6 + 1 7 Version 1.34 2 8 ------------ 3 9 Fix error mapping of the TOO_MANY_LINKS (hardlinks) case.
+3
fs/cifs/cifssmb.c
··· 2602 2602 if(name_len < PATH_MAX) { 2603 2603 memcpy(pSMB->ResumeFileName, psrch_inf->presume_name, name_len); 2604 2604 byte_count += name_len; 2605 + /* 14 byte parm len above enough for 2 byte null terminator */ 2606 + pSMB->ResumeFileName[name_len] = 0; 2607 + pSMB->ResumeFileName[name_len+1] = 0; 2605 2608 } else { 2606 2609 rc = -EINVAL; 2607 2610 goto FNext2_err_exit;
+1
fs/cifs/misc.c
··· 611 611 src_char = source[i]; 612 612 switch (src_char) { 613 613 case 0: 614 + target[j] = 0; 614 615 goto ctoUCS_out; 615 616 case ':': 616 617 target[j] = cpu_to_le16(UNI_COLON);
+1 -1
fs/inotify.c
··· 402 402 return ERR_PTR(ret); 403 403 } 404 404 405 - dev->last_wd = ret; 405 + dev->last_wd = watch->wd; 406 406 watch->mask = mask; 407 407 atomic_set(&watch->count, 0); 408 408 INIT_LIST_HEAD(&watch->d_list);
+4
fs/jfs/inode.c
··· 128 128 { 129 129 jfs_info("In jfs_delete_inode, inode = 0x%p", inode); 130 130 131 + if (is_bad_inode(inode) || 132 + (JFS_IP(inode)->fileset != cpu_to_le32(FILESYSTEM_I))) 133 + return; 134 + 131 135 if (test_cflag(COMMIT_Freewmap, inode)) 132 136 jfs_free_zero_link(inode); 133 137
+19 -17
fs/jfs/jfs_logmgr.c
··· 191 191 static bio_end_io_t lbmIODone; 192 192 static void lbmStartIO(struct lbuf * bp); 193 193 static void lmGCwrite(struct jfs_log * log, int cant_block); 194 - static int lmLogSync(struct jfs_log * log, int nosyncwait); 194 + static int lmLogSync(struct jfs_log * log, int hard_sync); 195 195 196 196 197 197 ··· 915 915 * if new sync address is available 916 916 * (normally the case if sync() is executed by back-ground 917 917 * process). 918 - * if not, explicitly run jfs_blogsync() to initiate 919 - * getting of new sync address. 920 918 * calculate new value of i_nextsync which determines when 921 919 * this code is called again. 922 920 * 923 921 * PARAMETERS: log - log structure 924 - * nosyncwait - 1 if called asynchronously 922 + * hard_sync - 1 to force all metadata to be written 925 923 * 926 924 * RETURN: 0 927 925 * 928 926 * serialization: LOG_LOCK() held on entry/exit 929 927 */ 930 - static int lmLogSync(struct jfs_log * log, int nosyncwait) 928 + static int lmLogSync(struct jfs_log * log, int hard_sync) 931 929 { 932 930 int logsize; 933 931 int written; /* written since last syncpt */ ··· 939 941 unsigned long flags; 940 942 941 943 /* push dirty metapages out to disk */ 942 - list_for_each_entry(sbi, &log->sb_list, log_list) { 943 - filemap_flush(sbi->ipbmap->i_mapping); 944 - filemap_flush(sbi->ipimap->i_mapping); 945 - filemap_flush(sbi->direct_inode->i_mapping); 946 - } 944 + if (hard_sync) 945 + list_for_each_entry(sbi, &log->sb_list, log_list) { 946 + filemap_fdatawrite(sbi->ipbmap->i_mapping); 947 + filemap_fdatawrite(sbi->ipimap->i_mapping); 948 + filemap_fdatawrite(sbi->direct_inode->i_mapping); 949 + } 950 + else 951 + list_for_each_entry(sbi, &log->sb_list, log_list) { 952 + filemap_flush(sbi->ipbmap->i_mapping); 953 + filemap_flush(sbi->ipimap->i_mapping); 954 + filemap_flush(sbi->direct_inode->i_mapping); 955 + } 947 956 948 957 /* 949 958 * forward syncpt ··· 1026 1021 /* next syncpt trigger = written + more */ 1027 1022 log->nextsync = written + more; 1028 1023 1029 - /* return if lmLogSync() from outside of transaction, e.g., sync() */ 1030 - if (nosyncwait) 1031 - return lsn; 1032 - 1033 1024 /* if number of bytes written from last sync point is more 1034 1025 * than 1/4 of the log size, stop new transactions from 1035 1026 * starting until all current transactions are completed ··· 1050 1049 * 1051 1050 * FUNCTION: write log SYNCPT record for specified log 1052 1051 * 1053 - * PARAMETERS: log - log structure 1052 + * PARAMETERS: log - log structure 1053 + * hard_sync - set to 1 to force metadata to be written 1054 1054 */ 1055 - void jfs_syncpt(struct jfs_log *log) 1055 + void jfs_syncpt(struct jfs_log *log, int hard_sync) 1056 1056 { LOG_LOCK(log); 1057 - lmLogSync(log, 1); 1057 + lmLogSync(log, hard_sync); 1058 1058 LOG_UNLOCK(log); 1059 1059 } 1060 1060
+1 -1
fs/jfs/jfs_logmgr.h
··· 510 510 extern int lmGroupCommit(struct jfs_log *, struct tblock *); 511 511 extern int jfsIOWait(void *); 512 512 extern void jfs_flush_journal(struct jfs_log * log, int wait); 513 - extern void jfs_syncpt(struct jfs_log *log); 513 + extern void jfs_syncpt(struct jfs_log *log, int hard_sync); 514 514 515 515 #endif /* _H_JFS_LOGMGR */
+7 -5
fs/jfs/jfs_txnmgr.c
··· 552 552 * synchronize with logsync barrier 553 553 */ 554 554 if (test_bit(log_SYNCBARRIER, &log->flag)) { 555 + TXN_UNLOCK(); 556 + 557 + /* write dirty metadata & forward log syncpt */ 558 + jfs_syncpt(log, 1); 559 + 555 560 jfs_info("log barrier off: 0x%x", log->lsn); 556 561 557 562 /* enable new transactions start */ ··· 564 559 565 560 /* wakeup all waitors for logsync barrier */ 566 561 TXN_WAKEUP(&log->syncwait); 567 - 568 - TXN_UNLOCK(); 569 - 570 - /* forward log syncpt */ 571 - jfs_syncpt(log); 572 562 573 563 goto wakeup; 574 564 } ··· 657 657 /* only anonymous txn. 658 658 * Remove from anon_list 659 659 */ 660 + TXN_LOCK(); 660 661 list_del_init(&jfs_ip->anon_inode_list); 662 + TXN_UNLOCK(); 661 663 } 662 664 jfs_ip->atlhead = tlck->next; 663 665 } else {
+3 -1
fs/jfs/super.c
··· 114 114 { 115 115 struct jfs_inode_info *ji = JFS_IP(inode); 116 116 117 + BUG_ON(!list_empty(&ji->anon_inode_list)); 118 + 117 119 spin_lock_irq(&ji->ag_lock); 118 120 if (ji->active_ag != -1) { 119 121 struct bmap *bmap = JFS_SBI(inode->i_sb)->bmap; ··· 533 531 /* log == NULL indicates read-only mount */ 534 532 if (log) { 535 533 jfs_flush_journal(log, wait); 536 - jfs_syncpt(log); 534 + jfs_syncpt(log, 0); 537 535 } 538 536 539 537 return 0;
+2 -1
fs/namei.c
··· 2216 2216 error = vfs_rename_other(old_dir,old_dentry,new_dir,new_dentry); 2217 2217 if (!error) { 2218 2218 const char *new_name = old_dentry->d_name.name; 2219 - fsnotify_move(old_dir, new_dir, old_name, new_name, is_dir, new_dentry->d_inode); 2219 + fsnotify_move(old_dir, new_dir, old_name, new_name, is_dir, 2220 + new_dentry->d_inode, old_dentry->d_inode); 2220 2221 } 2221 2222 fsnotify_oldname_free(old_name); 2222 2223
+18 -9
fs/nfs/dir.c
··· 182 182 /* We requested READDIRPLUS, but the server doesn't grok it */ 183 183 if (error == -ENOTSUPP && desc->plus) { 184 184 NFS_SERVER(inode)->caps &= ~NFS_CAP_READDIRPLUS; 185 - NFS_FLAGS(inode) &= ~NFS_INO_ADVISE_RDPLUS; 185 + clear_bit(NFS_INO_ADVISE_RDPLUS, &NFS_FLAGS(inode)); 186 186 desc->plus = 0; 187 187 goto again; 188 188 } 189 189 goto error; 190 190 } 191 191 SetPageUptodate(page); 192 - NFS_FLAGS(inode) |= NFS_INO_INVALID_ATIME; 192 + spin_lock(&inode->i_lock); 193 + NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATIME; 194 + spin_unlock(&inode->i_lock); 193 195 /* Ensure consistent page alignment of the data. 194 196 * Note: assumes we have exclusive access to this mapping either 195 197 * through inode->i_sem or some other mechanism. ··· 464 462 page, 465 463 NFS_SERVER(inode)->dtsize, 466 464 desc->plus); 467 - NFS_FLAGS(inode) |= NFS_INO_INVALID_ATIME; 465 + spin_lock(&inode->i_lock); 466 + NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATIME; 467 + spin_unlock(&inode->i_lock); 468 468 desc->page = page; 469 469 desc->ptr = kmap(page); /* matching kunmap in nfs_do_filldir */ 470 470 if (desc->error >= 0) { ··· 549 545 break; 550 546 } 551 547 if (res == -ETOOSMALL && desc->plus) { 552 - NFS_FLAGS(inode) &= ~NFS_INO_ADVISE_RDPLUS; 548 + clear_bit(NFS_INO_ADVISE_RDPLUS, &NFS_FLAGS(inode)); 553 549 nfs_zap_caches(inode); 554 550 desc->plus = 0; 555 551 desc->entry->eof = 0; ··· 612 608 { 613 609 if (IS_ROOT(dentry)) 614 610 return 1; 615 - if ((NFS_FLAGS(dir) & NFS_INO_INVALID_ATTR) != 0 611 + if ((NFS_I(dir)->cache_validity & NFS_INO_INVALID_ATTR) != 0 616 612 || nfs_attribute_timeout(dir)) 617 613 return 0; 618 614 return nfs_verify_change_attribute(dir, (unsigned long)dentry->d_fsdata); ··· 1579 1575 1580 1576 int nfs_access_get_cached(struct inode *inode, struct rpc_cred *cred, struct nfs_access_entry *res) 1581 1577 { 1582 - struct nfs_access_entry *cache = &NFS_I(inode)->cache_access; 1578 + struct nfs_inode *nfsi = NFS_I(inode); 1579 + struct nfs_access_entry *cache = &nfsi->cache_access; 1583 1580 1584 1581 if (cache->cred != cred 1585 1582 || time_after(jiffies, cache->jiffies + NFS_ATTRTIMEO(inode)) 1586 - || (NFS_FLAGS(inode) & NFS_INO_INVALID_ACCESS)) 1583 + || (nfsi->cache_validity & NFS_INO_INVALID_ACCESS)) 1587 1584 return -ENOENT; 1588 1585 memcpy(res, cache, sizeof(*res)); 1589 1586 return 0; ··· 1592 1587 1593 1588 void nfs_access_add_cache(struct inode *inode, struct nfs_access_entry *set) 1594 1589 { 1595 - struct nfs_access_entry *cache = &NFS_I(inode)->cache_access; 1590 + struct nfs_inode *nfsi = NFS_I(inode); 1591 + struct nfs_access_entry *cache = &nfsi->cache_access; 1596 1592 1597 1593 if (cache->cred != set->cred) { 1598 1594 if (cache->cred) 1599 1595 put_rpccred(cache->cred); 1600 1596 cache->cred = get_rpccred(set->cred); 1601 1597 } 1602 - NFS_FLAGS(inode) &= ~NFS_INO_INVALID_ACCESS; 1598 + /* FIXME: replace current access_cache BKL reliance with inode->i_lock */ 1599 + spin_lock(&inode->i_lock); 1600 + nfsi->cache_validity &= ~NFS_INO_INVALID_ACCESS; 1601 + spin_unlock(&inode->i_lock); 1603 1602 cache->jiffies = set->jiffies; 1604 1603 cache->mask = set->mask; 1605 1604 }
+3 -2
fs/nfs/file.c
··· 134 134 */ 135 135 static int nfs_revalidate_file(struct inode *inode, struct file *filp) 136 136 { 137 + struct nfs_inode *nfsi = NFS_I(inode); 137 138 int retval = 0; 138 139 139 - if ((NFS_FLAGS(inode) & NFS_INO_REVAL_PAGECACHE) || nfs_attribute_timeout(inode)) 140 + if ((nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE) || nfs_attribute_timeout(inode)) 140 141 retval = __nfs_revalidate_inode(NFS_SERVER(inode), inode); 141 142 nfs_revalidate_mapping(inode, filp->f_mapping); 142 143 return 0; ··· 165 164 goto force_reval; 166 165 if (nfsi->npages != 0) 167 166 return 0; 168 - if (!(NFS_FLAGS(inode) & NFS_INO_REVAL_PAGECACHE) && !nfs_attribute_timeout(inode)) 167 + if (!(nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE) && !nfs_attribute_timeout(inode)) 169 168 return 0; 170 169 force_reval: 171 170 return __nfs_revalidate_inode(server, inode);
+128 -69
fs/nfs/inode.c
··· 615 615 struct nfs_inode *nfsi = NFS_I(inode); 616 616 int mode = inode->i_mode; 617 617 618 + spin_lock(&inode->i_lock); 619 + 618 620 NFS_ATTRTIMEO(inode) = NFS_MINATTRTIMEO(inode); 619 621 NFS_ATTRTIMEO_UPDATE(inode) = jiffies; 620 622 621 623 memset(NFS_COOKIEVERF(inode), 0, sizeof(NFS_COOKIEVERF(inode))); 622 624 if (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode)) 623 - nfsi->flags |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE; 625 + nfsi->cache_validity |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE; 624 626 else 625 - nfsi->flags |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE; 627 + nfsi->cache_validity |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE; 628 + 629 + spin_unlock(&inode->i_lock); 626 630 } 627 631 628 632 static void nfs_zap_acl_cache(struct inode *inode) ··· 636 632 clear_acl_cache = NFS_PROTO(inode)->clear_acl_cache; 637 633 if (clear_acl_cache != NULL) 638 634 clear_acl_cache(inode); 639 - NFS_I(inode)->flags &= ~NFS_INO_INVALID_ACL; 635 + spin_lock(&inode->i_lock); 636 + NFS_I(inode)->cache_validity &= ~NFS_INO_INVALID_ACL; 637 + spin_unlock(&inode->i_lock); 640 638 } 641 639 642 640 /* ··· 745 739 inode->i_fop = &nfs_dir_operations; 746 740 if (nfs_server_capable(inode, NFS_CAP_READDIRPLUS) 747 741 && fattr->size <= NFS_LIMIT_READDIRPLUS) 748 - NFS_FLAGS(inode) |= NFS_INO_ADVISE_RDPLUS; 742 + set_bit(NFS_INO_ADVISE_RDPLUS, &NFS_FLAGS(inode)); 749 743 } else if (S_ISLNK(inode->i_mode)) 750 744 inode->i_op = &nfs_symlink_inode_operations; 751 745 else ··· 820 814 nfs_wb_all(inode); 821 815 } 822 816 error = NFS_PROTO(inode)->setattr(dentry, &fattr, attr); 823 - if (error == 0) { 817 + if (error == 0) 824 818 nfs_refresh_inode(inode, &fattr); 819 + nfs_end_data_update(inode); 820 + unlock_kernel(); 821 + return error; 822 + } 823 + 824 + /** 825 + * nfs_setattr_update_inode - Update inode metadata after a setattr call. 826 + * @inode: pointer to struct inode 827 + * @attr: pointer to struct iattr 828 + * 829 + * Note: we do this in the *proc.c in order to ensure that 830 + * it works for things like exclusive creates too. 831 + */ 832 + void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr) 833 + { 834 + if ((attr->ia_valid & (ATTR_MODE|ATTR_UID|ATTR_GID)) != 0) { 825 835 if ((attr->ia_valid & ATTR_MODE) != 0) { 826 - int mode; 827 - mode = inode->i_mode & ~S_IALLUGO; 828 - mode |= attr->ia_mode & S_IALLUGO; 836 + int mode = attr->ia_mode & S_IALLUGO; 837 + mode |= inode->i_mode & ~S_IALLUGO; 829 838 inode->i_mode = mode; 830 839 } 831 840 if ((attr->ia_valid & ATTR_UID) != 0) 832 841 inode->i_uid = attr->ia_uid; 833 842 if ((attr->ia_valid & ATTR_GID) != 0) 834 843 inode->i_gid = attr->ia_gid; 835 - if ((attr->ia_valid & ATTR_SIZE) != 0) { 836 - inode->i_size = attr->ia_size; 837 - vmtruncate(inode, attr->ia_size); 838 - } 844 + spin_lock(&inode->i_lock); 845 + NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL; 846 + spin_unlock(&inode->i_lock); 839 847 } 840 - if ((attr->ia_valid & (ATTR_MODE|ATTR_UID|ATTR_GID)) != 0) 841 - NFS_FLAGS(inode) |= NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL; 842 - nfs_end_data_update(inode); 843 - unlock_kernel(); 844 - return error; 848 + if ((attr->ia_valid & ATTR_SIZE) != 0) { 849 + inode->i_size = attr->ia_size; 850 + vmtruncate(inode, attr->ia_size); 851 + } 852 + } 853 + 854 + static int nfs_wait_schedule(void *word) 855 + { 856 + if (signal_pending(current)) 857 + return -ERESTARTSYS; 858 + schedule(); 859 + return 0; 845 860 } 846 861 847 862 /* 848 863 * Wait for the inode to get unlocked. 849 - * (Used for NFS_INO_LOCKED and NFS_INO_REVALIDATING). 850 864 */ 851 - static int 852 - nfs_wait_on_inode(struct inode *inode, int flag) 865 + static int nfs_wait_on_inode(struct inode *inode) 853 866 { 854 867 struct rpc_clnt *clnt = NFS_CLIENT(inode); 855 868 struct nfs_inode *nfsi = NFS_I(inode); 856 - 869 + sigset_t oldmask; 857 870 int error; 858 - if (!(NFS_FLAGS(inode) & flag)) 859 - return 0; 871 + 860 872 atomic_inc(&inode->i_count); 861 - error = nfs_wait_event(clnt, nfsi->nfs_i_wait, 862 - !(NFS_FLAGS(inode) & flag)); 873 + rpc_clnt_sigmask(clnt, &oldmask); 874 + error = wait_on_bit_lock(&nfsi->flags, NFS_INO_REVALIDATING, 875 + nfs_wait_schedule, TASK_INTERRUPTIBLE); 876 + rpc_clnt_sigunmask(clnt, &oldmask); 863 877 iput(inode); 878 + 864 879 return error; 880 + } 881 + 882 + static void nfs_wake_up_inode(struct inode *inode) 883 + { 884 + struct nfs_inode *nfsi = NFS_I(inode); 885 + 886 + clear_bit(NFS_INO_REVALIDATING, &nfsi->flags); 887 + smp_mb__after_clear_bit(); 888 + wake_up_bit(&nfsi->flags, NFS_INO_REVALIDATING); 865 889 } 866 890 867 891 int nfs_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) 868 892 { 869 893 struct inode *inode = dentry->d_inode; 870 - struct nfs_inode *nfsi = NFS_I(inode); 871 - int need_atime = nfsi->flags & NFS_INO_INVALID_ATIME; 894 + int need_atime = NFS_I(inode)->cache_validity & NFS_INO_INVALID_ATIME; 872 895 int err; 873 896 874 897 if (__IS_FLG(inode, MS_NOATIME)) ··· 1043 1008 struct nfs_fattr fattr; 1044 1009 struct nfs_inode *nfsi = NFS_I(inode); 1045 1010 unsigned long verifier; 1046 - unsigned int flags; 1011 + unsigned long cache_validity; 1047 1012 1048 1013 dfprintk(PAGECACHE, "NFS: revalidating (%s/%Ld)\n", 1049 1014 inode->i_sb->s_id, (long long)NFS_FILEID(inode)); ··· 1054 1019 if (NFS_STALE(inode)) 1055 1020 goto out_nowait; 1056 1021 1057 - while (NFS_REVALIDATING(inode)) { 1058 - status = nfs_wait_on_inode(inode, NFS_INO_REVALIDATING); 1059 - if (status < 0) 1060 - goto out_nowait; 1061 - if (NFS_ATTRTIMEO(inode) == 0) 1062 - continue; 1063 - if (NFS_FLAGS(inode) & (NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ATIME)) 1064 - continue; 1065 - status = NFS_STALE(inode) ? -ESTALE : 0; 1066 - goto out_nowait; 1022 + status = nfs_wait_on_inode(inode); 1023 + if (status < 0) 1024 + goto out; 1025 + if (NFS_STALE(inode)) { 1026 + status = -ESTALE; 1027 + /* Do we trust the cached ESTALE? */ 1028 + if (NFS_ATTRTIMEO(inode) != 0) { 1029 + if (nfsi->cache_validity & (NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ATIME)) { 1030 + /* no */ 1031 + } else 1032 + goto out; 1033 + } 1067 1034 } 1068 - NFS_FLAGS(inode) |= NFS_INO_REVALIDATING; 1069 1035 1070 1036 /* Protect against RPC races by saving the change attribute */ 1071 1037 verifier = nfs_save_change_attribute(inode); ··· 1078 1042 if (status == -ESTALE) { 1079 1043 nfs_zap_caches(inode); 1080 1044 if (!S_ISDIR(inode->i_mode)) 1081 - NFS_FLAGS(inode) |= NFS_INO_STALE; 1045 + set_bit(NFS_INO_STALE, &NFS_FLAGS(inode)); 1082 1046 } 1083 1047 goto out; 1084 1048 } ··· 1090 1054 (long long)NFS_FILEID(inode), status); 1091 1055 goto out; 1092 1056 } 1093 - flags = nfsi->flags; 1094 - nfsi->flags &= ~NFS_INO_REVAL_PAGECACHE; 1057 + spin_lock(&inode->i_lock); 1058 + cache_validity = nfsi->cache_validity; 1059 + nfsi->cache_validity &= ~NFS_INO_REVAL_PAGECACHE; 1060 + 1095 1061 /* 1096 1062 * We may need to keep the attributes marked as invalid if 1097 1063 * we raced with nfs_end_attr_update(). 1098 1064 */ 1099 1065 if (verifier == nfsi->cache_change_attribute) 1100 - nfsi->flags &= ~(NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ATIME); 1101 - /* Do the page cache invalidation */ 1066 + nfsi->cache_validity &= ~(NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ATIME); 1067 + spin_unlock(&inode->i_lock); 1068 + 1102 1069 nfs_revalidate_mapping(inode, inode->i_mapping); 1103 - if (flags & NFS_INO_INVALID_ACL) 1070 + 1071 + if (cache_validity & NFS_INO_INVALID_ACL) 1104 1072 nfs_zap_acl_cache(inode); 1073 + 1105 1074 dfprintk(PAGECACHE, "NFS: (%s/%Ld) revalidation complete\n", 1106 1075 inode->i_sb->s_id, 1107 1076 (long long)NFS_FILEID(inode)); 1108 1077 1109 - out: 1110 - NFS_FLAGS(inode) &= ~NFS_INO_REVALIDATING; 1111 - wake_up(&nfsi->nfs_i_wait); 1078 + out: 1079 + nfs_wake_up_inode(inode); 1080 + 1112 1081 out_nowait: 1113 1082 unlock_kernel(); 1114 1083 return status; ··· 1137 1096 */ 1138 1097 int nfs_revalidate_inode(struct nfs_server *server, struct inode *inode) 1139 1098 { 1140 - if (!(NFS_FLAGS(inode) & (NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA)) 1099 + if (!(NFS_I(inode)->cache_validity & (NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA)) 1141 1100 && !nfs_attribute_timeout(inode)) 1142 1101 return NFS_STALE(inode) ? -ESTALE : 0; 1143 1102 return __nfs_revalidate_inode(server, inode); ··· 1152 1111 { 1153 1112 struct nfs_inode *nfsi = NFS_I(inode); 1154 1113 1155 - if (nfsi->flags & NFS_INO_INVALID_DATA) { 1114 + if (nfsi->cache_validity & NFS_INO_INVALID_DATA) { 1156 1115 if (S_ISREG(inode->i_mode)) { 1157 1116 if (filemap_fdatawrite(mapping) == 0) 1158 1117 filemap_fdatawait(mapping); 1159 1118 nfs_wb_all(inode); 1160 1119 } 1161 1120 invalidate_inode_pages2(mapping); 1162 - nfsi->flags &= ~NFS_INO_INVALID_DATA; 1121 + 1122 + spin_lock(&inode->i_lock); 1123 + nfsi->cache_validity &= ~NFS_INO_INVALID_DATA; 1163 1124 if (S_ISDIR(inode->i_mode)) { 1164 1125 memset(nfsi->cookieverf, 0, sizeof(nfsi->cookieverf)); 1165 1126 /* This ensures we revalidate child dentries */ 1166 1127 nfsi->cache_change_attribute++; 1167 1128 } 1129 + spin_unlock(&inode->i_lock); 1130 + 1168 1131 dfprintk(PAGECACHE, "NFS: (%s/%Ld) data cache invalidated\n", 1169 1132 inode->i_sb->s_id, 1170 1133 (long long)NFS_FILEID(inode)); ··· 1198 1153 1199 1154 if (!nfs_have_delegation(inode, FMODE_READ)) { 1200 1155 /* Mark the attribute cache for revalidation */ 1201 - nfsi->flags |= NFS_INO_INVALID_ATTR; 1156 + spin_lock(&inode->i_lock); 1157 + nfsi->cache_validity |= NFS_INO_INVALID_ATTR; 1202 1158 /* Directories and symlinks: invalidate page cache too */ 1203 1159 if (S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode)) 1204 - nfsi->flags |= NFS_INO_INVALID_DATA; 1160 + nfsi->cache_validity |= NFS_INO_INVALID_DATA; 1161 + spin_unlock(&inode->i_lock); 1205 1162 } 1206 1163 nfsi->cache_change_attribute ++; 1207 1164 atomic_dec(&nfsi->data_updates); ··· 1228 1181 if (nfs_have_delegation(inode, FMODE_READ)) 1229 1182 return 0; 1230 1183 1184 + spin_lock(&inode->i_lock); 1185 + 1231 1186 /* Are we in the process of updating data on the server? */ 1232 1187 data_unstable = nfs_caches_unstable(inode); 1233 1188 ··· 1238 1189 && nfsi->change_attr == fattr->pre_change_attr) 1239 1190 nfsi->change_attr = fattr->change_attr; 1240 1191 if (nfsi->change_attr != fattr->change_attr) { 1241 - nfsi->flags |= NFS_INO_INVALID_ATTR; 1192 + nfsi->cache_validity |= NFS_INO_INVALID_ATTR; 1242 1193 if (!data_unstable) 1243 - nfsi->flags |= NFS_INO_REVAL_PAGECACHE; 1194 + nfsi->cache_validity |= NFS_INO_REVAL_PAGECACHE; 1244 1195 } 1245 1196 } 1246 1197 1247 - if ((fattr->valid & NFS_ATTR_FATTR) == 0) 1198 + if ((fattr->valid & NFS_ATTR_FATTR) == 0) { 1199 + spin_unlock(&inode->i_lock); 1248 1200 return 0; 1201 + } 1249 1202 1250 1203 /* Has the inode gone and changed behind our back? */ 1251 1204 if (nfsi->fileid != fattr->fileid 1252 - || (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) 1205 + || (inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) { 1206 + spin_unlock(&inode->i_lock); 1253 1207 return -EIO; 1208 + } 1254 1209 1255 1210 cur_size = i_size_read(inode); 1256 1211 new_isize = nfs_size_to_loff_t(fattr->size); ··· 1269 1216 1270 1217 /* Verify a few of the more important attributes */ 1271 1218 if (!timespec_equal(&inode->i_mtime, &fattr->mtime)) { 1272 - nfsi->flags |= NFS_INO_INVALID_ATTR; 1219 + nfsi->cache_validity |= NFS_INO_INVALID_ATTR; 1273 1220 if (!data_unstable) 1274 - nfsi->flags |= NFS_INO_REVAL_PAGECACHE; 1221 + nfsi->cache_validity |= NFS_INO_REVAL_PAGECACHE; 1275 1222 } 1276 1223 if (cur_size != new_isize) { 1277 - nfsi->flags |= NFS_INO_INVALID_ATTR; 1224 + nfsi->cache_validity |= NFS_INO_INVALID_ATTR; 1278 1225 if (nfsi->npages == 0) 1279 - nfsi->flags |= NFS_INO_REVAL_PAGECACHE; 1226 + nfsi->cache_validity |= NFS_INO_REVAL_PAGECACHE; 1280 1227 } 1281 1228 1282 1229 /* Have any file permissions changed? */ 1283 1230 if ((inode->i_mode & S_IALLUGO) != (fattr->mode & S_IALLUGO) 1284 1231 || inode->i_uid != fattr->uid 1285 1232 || inode->i_gid != fattr->gid) 1286 - nfsi->flags |= NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS | NFS_INO_INVALID_ACL; 1233 + nfsi->cache_validity |= NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS | NFS_INO_INVALID_ACL; 1287 1234 1288 1235 /* Has the link count changed? */ 1289 1236 if (inode->i_nlink != fattr->nlink) 1290 - nfsi->flags |= NFS_INO_INVALID_ATTR; 1237 + nfsi->cache_validity |= NFS_INO_INVALID_ATTR; 1291 1238 1292 1239 if (!timespec_equal(&inode->i_atime, &fattr->atime)) 1293 - nfsi->flags |= NFS_INO_INVALID_ATIME; 1240 + nfsi->cache_validity |= NFS_INO_INVALID_ATIME; 1294 1241 1295 1242 nfsi->read_cache_jiffies = fattr->timestamp; 1243 + spin_unlock(&inode->i_lock); 1296 1244 return 0; 1297 1245 } 1298 1246 ··· 1332 1278 goto out_err; 1333 1279 } 1334 1280 1281 + spin_lock(&inode->i_lock); 1282 + 1335 1283 /* 1336 1284 * Make sure the inode's type hasn't changed. 1337 1285 */ 1338 - if ((inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) 1286 + if ((inode->i_mode & S_IFMT) != (fattr->mode & S_IFMT)) { 1287 + spin_unlock(&inode->i_lock); 1339 1288 goto out_changed; 1289 + } 1340 1290 1341 1291 /* 1342 1292 * Update the read time so we don't revalidate too often. ··· 1431 1373 || S_ISLNK(inode->i_mode))) 1432 1374 invalid &= ~NFS_INO_INVALID_DATA; 1433 1375 if (!nfs_have_delegation(inode, FMODE_READ)) 1434 - nfsi->flags |= invalid; 1376 + nfsi->cache_validity |= invalid; 1435 1377 1378 + spin_unlock(&inode->i_lock); 1436 1379 return 0; 1437 1380 out_changed: 1438 1381 /* ··· 1450 1391 */ 1451 1392 nfs_invalidate_inode(inode); 1452 1393 out_err: 1453 - NFS_FLAGS(inode) |= NFS_INO_STALE; 1394 + set_bit(NFS_INO_STALE, &NFS_FLAGS(inode)); 1454 1395 return -ESTALE; 1455 1396 } 1456 1397 ··· 2009 1950 nfsi = (struct nfs_inode *)kmem_cache_alloc(nfs_inode_cachep, SLAB_KERNEL); 2010 1951 if (!nfsi) 2011 1952 return NULL; 2012 - nfsi->flags = 0; 1953 + nfsi->flags = 0UL; 1954 + nfsi->cache_validity = 0UL; 2013 1955 #ifdef CONFIG_NFS_V3_ACL 2014 1956 nfsi->acl_access = ERR_PTR(-EAGAIN); 2015 1957 nfsi->acl_default = ERR_PTR(-EAGAIN); ··· 2042 1982 nfsi->ndirty = 0; 2043 1983 nfsi->ncommit = 0; 2044 1984 nfsi->npages = 0; 2045 - init_waitqueue_head(&nfsi->nfs_i_wait); 2046 1985 nfs4_init_once(nfsi); 2047 1986 } 2048 1987 }
+3 -1
fs/nfs/nfs3acl.c
··· 308 308 nfs_begin_data_update(inode); 309 309 status = rpc_call(server->client_acl, ACLPROC3_SETACL, 310 310 &args, &fattr, 0); 311 - NFS_FLAGS(inode) |= NFS_INO_INVALID_ACCESS; 311 + spin_lock(&inode->i_lock); 312 + NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ACCESS; 313 + spin_unlock(&inode->i_lock); 312 314 nfs_end_data_update(inode); 313 315 dprintk("NFS reply setacl: %d\n", status); 314 316
+4
fs/nfs/nfs3proc.c
··· 120 120 dprintk("NFS call setattr\n"); 121 121 fattr->valid = 0; 122 122 status = rpc_call(NFS_CLIENT(inode), NFS3PROC_SETATTR, &arg, fattr, 0); 123 + if (status == 0) 124 + nfs_setattr_update_inode(inode, sattr); 123 125 dprintk("NFS reply setattr: %d\n", status); 124 126 return status; 125 127 } ··· 372 370 * not sure this buys us anything (and I'd have 373 371 * to revamp the NFSv3 XDR code) */ 374 372 status = nfs3_proc_setattr(dentry, &fattr, sattr); 373 + if (status == 0) 374 + nfs_setattr_update_inode(dentry->d_inode, sattr); 375 375 nfs_refresh_inode(dentry->d_inode, &fattr); 376 376 dprintk("NFS reply setattr (post-create): %d\n", status); 377 377 }
+8 -2
fs/nfs/nfs4proc.c
··· 753 753 .rpc_argp = &arg, 754 754 .rpc_resp = &res, 755 755 }; 756 + int status; 756 757 757 758 fattr->valid = 0; 758 759 ··· 763 762 } else 764 763 memcpy(&arg.stateid, &zero_stateid, sizeof(arg.stateid)); 765 764 766 - return rpc_call_sync(server->client, &msg, 0); 765 + status = rpc_call_sync(server->client, &msg, 0); 766 + return status; 767 767 } 768 768 769 769 static int nfs4_do_setattr(struct nfs_server *server, struct nfs_fattr *fattr, ··· 1147 1145 1148 1146 status = nfs4_do_setattr(NFS_SERVER(inode), fattr, 1149 1147 NFS_FH(inode), sattr, state); 1148 + if (status == 0) 1149 + nfs_setattr_update_inode(inode, sattr); 1150 1150 if (state != NULL) 1151 1151 nfs4_close_state(state, FMODE_WRITE); 1152 1152 put_rpccred(cred); ··· 1453 1449 struct nfs_fattr fattr; 1454 1450 status = nfs4_do_setattr(NFS_SERVER(dir), &fattr, 1455 1451 NFS_FH(state->inode), sattr, state); 1456 - if (status == 0) 1452 + if (status == 0) { 1453 + nfs_setattr_update_inode(state->inode, sattr); 1457 1454 goto out; 1455 + } 1458 1456 } else if (flags != 0) 1459 1457 goto out; 1460 1458 nfs4_close_state(state, flags);
+2
fs/nfs/proc.c
··· 114 114 dprintk("NFS call setattr\n"); 115 115 fattr->valid = 0; 116 116 status = rpc_call(NFS_CLIENT(inode), NFSPROC_SETATTR, &arg, fattr, 0); 117 + if (status == 0) 118 + nfs_setattr_update_inode(inode, sattr); 117 119 dprintk("NFS reply setattr: %d\n", status); 118 120 return status; 119 121 }
+6 -2
fs/nfs/read.c
··· 140 140 if (rdata->res.eof != 0 || result == 0) 141 141 break; 142 142 } while (count); 143 - NFS_FLAGS(inode) |= NFS_INO_INVALID_ATIME; 143 + spin_lock(&inode->i_lock); 144 + NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATIME; 145 + spin_unlock(&inode->i_lock); 144 146 145 147 if (count) 146 148 memclear_highpage_flush(page, rdata->args.pgbase, count); ··· 475 473 } 476 474 task->tk_status = -EIO; 477 475 } 478 - NFS_FLAGS(data->inode) |= NFS_INO_INVALID_ATIME; 476 + spin_lock(&data->inode->i_lock); 477 + NFS_I(data->inode)->cache_validity |= NFS_INO_INVALID_ATIME; 478 + spin_unlock(&data->inode->i_lock); 479 479 data->complete(data, status); 480 480 } 481 481
+1
fs/nfs_common/nfsacl.c
··· 239 239 if (xdr_decode_word(buf, base, &entries) || 240 240 entries > NFS_ACL_MAX_ENTRIES) 241 241 return -EINVAL; 242 + nfsacl_desc.desc.array_maxlen = entries; 242 243 err = xdr_decode_array2(buf, base + 4, &nfsacl_desc.desc); 243 244 if (err) 244 245 return err;
+1
fs/nfsd/nfssvc.c
··· 287 287 svc_exit_thread(rqstp); 288 288 289 289 /* Release module */ 290 + unlock_kernel(); 290 291 module_put_and_exit(0); 291 292 } 292 293
+3
fs/ntfs/ChangeLog
··· 174 174 fact that the vfs and ntfs inodes are one struct in memory to find 175 175 the ntfs inode in memory if present. Also, the ntfs inode has its 176 176 own locking so it does not matter if the vfs inode is locked. 177 + - Fix bug in mft record writing where we forgot to set the device in 178 + the buffers when mapping them after the VM had discarded them. 179 + Thanks to Martin MOKREJŠ for the bug report. 177 180 178 181 2.1.22 - Many bug and race fixes and error handling improvements. 179 182
+1
fs/ntfs/aops.c
··· 924 924 LCN lcn; 925 925 unsigned int vcn_ofs; 926 926 927 + bh->b_bdev = vol->sb->s_bdev; 927 928 /* Obtain the vcn and offset of the current block. */ 928 929 vcn = (VCN)block << bh_size_bits; 929 930 vcn_ofs = vcn & vol->cluster_size_mask;
+2
fs/ntfs/mft.c
··· 533 533 LCN lcn; 534 534 unsigned int vcn_ofs; 535 535 536 + bh->b_bdev = vol->sb->s_bdev; 536 537 /* Obtain the vcn and offset of the current block. */ 537 538 vcn = ((VCN)mft_no << vol->mft_record_size_bits) + 538 539 (block_start - m_start); ··· 726 725 LCN lcn; 727 726 unsigned int vcn_ofs; 728 727 728 + bh->b_bdev = vol->sb->s_bdev; 729 729 /* Obtain the vcn and offset of the current block. */ 730 730 vcn = ((VCN)ni->mft_no << vol->mft_record_size_bits) + 731 731 (block_start - m_start);
+1 -1
fs/reiserfs/inode.c
··· 1985 1985 * iput doesn't deadlock in reiserfs_delete_xattrs. The locking 1986 1986 * code really needs to be reworked, but this will take care of it 1987 1987 * for now. -jeffm */ 1988 - if (REISERFS_I(dir)->i_acl_default) { 1988 + if (REISERFS_I(dir)->i_acl_default && !IS_ERR(REISERFS_I(dir)->i_acl_default)) { 1989 1989 reiserfs_write_unlock_xattrs(dir->i_sb); 1990 1990 iput(inode); 1991 1991 reiserfs_write_lock_xattrs(dir->i_sb);
+3
fs/reiserfs/namei.c
··· 593 593 */ 594 594 inode->i_uid = current->fsuid; 595 595 inode->i_mode = mode; 596 + /* Make inode invalid - just in case we are going to drop it before 597 + * the initialization happens */ 598 + INODE_PKEY(inode)->k_objectid = 0; 596 599 597 600 if (dir->i_mode & S_ISGID) { 598 601 inode->i_gid = dir->i_gid;
+5
include/asm-arm/unistd.h
··· 350 350 #endif 351 351 352 352 #define __NR_vserver (__NR_SYSCALL_BASE+313) 353 + #define __NR_ioprio_set (__NR_SYSCALL_BASE+314) 354 + #define __NR_ioprio_get (__NR_SYSCALL_BASE+315) 355 + #define __NR_inotify_init (__NR_SYSCALL_BASE+316) 356 + #define __NR_inotify_add_watch (__NR_SYSCALL_BASE+317) 357 + #define __NR_inotify_rm_watch (__NR_SYSCALL_BASE+318) 353 358 354 359 /* 355 360 * The following SWIs are ARM private.
+3 -1
include/asm-i386/pci.h
··· 18 18 #define pcibios_scan_all_fns(a, b) 0 19 19 20 20 extern unsigned long pci_mem_start; 21 - #define PCIBIOS_MIN_IO 0x4000 21 + #define PCIBIOS_MIN_IO 0x1000 22 22 #define PCIBIOS_MIN_MEM (pci_mem_start) 23 + 24 + #define PCIBIOS_MIN_CARDBUS_IO 0x4000 23 25 24 26 void pcibios_config_init(void); 25 27 struct pci_bus * pcibios_scan_root(int bus);
+1 -1
include/asm-i386/processor.h
··· 29 29 }; 30 30 31 31 #define desc_empty(desc) \ 32 - (!((desc)->a + (desc)->b)) 32 + (!((desc)->a | (desc)->b)) 33 33 34 34 #define desc_equal(desc1, desc2) \ 35 35 (((desc1)->a == (desc2)->a) && ((desc1)->b == (desc2)->b))
+2 -2
include/asm-ia64/iosapic.h
··· 75 75 unsigned int gsi_base); 76 76 #ifdef CONFIG_HOTPLUG 77 77 extern int iosapic_remove (unsigned int gsi_base); 78 + #else 79 + #define iosapic_remove(gsi_base) (-EINVAL) 78 80 #endif /* CONFIG_HOTPLUG */ 79 81 extern int gsi_to_vector (unsigned int gsi); 80 82 extern int gsi_to_irq (unsigned int gsi); ··· 104 102 #else 105 103 #define iosapic_system_init(pcat_compat) do { } while (0) 106 104 #define iosapic_init(address,gsi_base) (-EINVAL) 107 - #ifdef CONFIG_HOTPLUG 108 105 #define iosapic_remove(gsi_base) (-ENODEV) 109 - #endif /* CONFIG_HOTPLUG */ 110 106 #define iosapic_register_intr(gsi,polarity,trigger) (gsi) 111 107 #define iosapic_unregister_intr(irq) do { } while (0) 112 108 #define iosapic_override_isa_irq(isa_irq,gsi,polarity,trigger) do { } while (0)
-4
include/asm-ppc/ibm44x.h
··· 423 423 #define MQ0_CONFIG_SIZE_2G 0x0000c000 424 424 425 425 /* Internal SRAM Controller 440GX/440SP */ 426 - #ifdef CONFIG_440SP 427 - #define DCRN_SRAM0_BASE 0x100 428 - #else /* 440GX */ 429 426 #define DCRN_SRAM0_BASE 0x000 430 - #endif 431 427 432 428 #define DCRN_SRAM0_SB0CR (DCRN_SRAM0_BASE + 0x020) 433 429 #define DCRN_SRAM0_SB1CR (DCRN_SRAM0_BASE + 0x021)
+1 -1
include/asm-ppc/ppc4xx_dma.h
··· 285 285 286 286 #define GET_DMA_POLARITY(chan) (DMAReq_ActiveLow(chan) | DMAAck_ActiveLow(chan) | EOT_ActiveLow(chan)) 287 287 288 - #elif defined(CONFIG_STBXXX_DMA) /* stb03xxx */ 288 + #elif defined(CONFIG_STB03xxx) /* stb03xxx */ 289 289 290 290 #define DMA_PPC4xx_SIZE 4096 291 291
+8 -1
include/asm-ppc64/iSeries/LparMap.h
··· 19 19 #ifndef _LPARMAP_H 20 20 #define _LPARMAP_H 21 21 22 + #ifndef __ASSEMBLY__ 23 + 22 24 #include <asm/types.h> 23 25 24 26 /* ··· 73 71 } xRanges[HvRangesToMap]; 74 72 }; 75 73 76 - extern struct LparMap xLparMap; 74 + extern const struct LparMap xLparMap; 75 + 76 + #endif /* __ASSEMBLY__ */ 77 + 78 + /* the fixed address where the LparMap exists */ 79 + #define LPARMAP_PHYS 0x7000 77 80 78 81 #endif /* _LPARMAP_H */
+8 -2
include/asm-sh/unistd.h
··· 295 295 #define __NR_add_key 285 296 296 #define __NR_request_key 286 297 297 #define __NR_keyctl 287 298 + #define __NR_ioprio_set 288 299 + #define __NR_ioprio_get 289 300 + #define __NR_inotify_init 290 301 + #define __NR_inotify_add_watch 291 302 + #define __NR_inotify_rm_watch 292 298 303 299 - #define NR_syscalls 288 304 + 305 + #define NR_syscalls 293 300 306 301 307 /* user-visible error numbers are in the range -1 - -124: see <asm-sh/errno.h> */ 302 308 ··· 412 406 register long __sc7 __asm__ ("r7") = (long) arg4; \ 413 407 register long __sc0 __asm__ ("r0") = (long) arg5; \ 414 408 register long __sc1 __asm__ ("r1") = (long) arg6; \ 415 - __asm__ __volatile__ ("trapa #0x15" \ 409 + __asm__ __volatile__ ("trapa #0x16" \ 416 410 : "=z" (__sc0) \ 417 411 : "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6), "r" (__sc7), \ 418 412 "r" (__sc3), "r" (__sc1) \
+6 -1
include/asm-sh64/unistd.h
··· 338 338 #define __NR_add_key 313 339 339 #define __NR_request_key 314 340 340 #define __NR_keyctl 315 341 + #define __NR_ioprio_set 316 342 + #define __NR_ioprio_get 317 343 + #define __NR_inotify_init 318 344 + #define __NR_inotify_add_watch 319 345 + #define __NR_inotify_rm_watch 320 341 346 342 - #define NR_syscalls 316 347 + #define NR_syscalls 321 343 348 344 349 /* user-visible error numbers are in the range -1 - -125: see <asm-sh64/errno.h> */ 345 350
+2 -2
include/asm-um/page.h
··· 104 104 * casting is the right thing, but 32-bit UML can't have 64-bit virtual 105 105 * addresses 106 106 */ 107 - #define __pa(virt) to_phys((void *) (unsigned long) virt) 108 - #define __va(phys) to_virt((unsigned long) phys) 107 + #define __pa(virt) to_phys((void *) (unsigned long) (virt)) 108 + #define __va(phys) to_virt((unsigned long) (phys)) 109 109 110 110 #define page_to_pfn(page) ((page) - mem_map) 111 111 #define pfn_to_page(pfn) (mem_map + (pfn))
+3 -1
include/asm-x86_64/pci.h
··· 22 22 extern int no_iommu, force_iommu; 23 23 24 24 extern unsigned long pci_mem_start; 25 - #define PCIBIOS_MIN_IO 0x4000 25 + #define PCIBIOS_MIN_IO 0x1000 26 26 #define PCIBIOS_MIN_MEM (pci_mem_start) 27 + 28 + #define PCIBIOS_MIN_CARDBUS_IO 0x4000 27 29 28 30 void pcibios_config_init(void); 29 31 struct pci_bus * pcibios_scan_root(int bus);
+1 -1
include/asm-x86_64/processor.h
··· 32 32 #define ID_MASK 0x00200000 33 33 34 34 #define desc_empty(desc) \ 35 - (!((desc)->a + (desc)->b)) 35 + (!((desc)->a | (desc)->b)) 36 36 37 37 #define desc_equal(desc1, desc2) \ 38 38 (((desc1)->a == (desc2)->a) && ((desc1)->b == (desc2)->b))
+5 -1
include/linux/fsnotify.h
··· 21 21 */ 22 22 static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir, 23 23 const char *old_name, const char *new_name, 24 - int isdir, struct inode *target) 24 + int isdir, struct inode *target, struct inode *source) 25 25 { 26 26 u32 cookie = inotify_get_cookie(); 27 27 ··· 40 40 if (target) { 41 41 inotify_inode_queue_event(target, IN_DELETE_SELF, 0, NULL); 42 42 inotify_inode_is_dead(target); 43 + } 44 + 45 + if (source) { 46 + inotify_inode_queue_event(source, IN_MOVE_SELF, 0, NULL); 43 47 } 44 48 } 45 49
+3 -1
include/linux/inotify.h
··· 35 35 #define IN_CREATE 0x00000100 /* Subfile was created */ 36 36 #define IN_DELETE 0x00000200 /* Subfile was deleted */ 37 37 #define IN_DELETE_SELF 0x00000400 /* Self was deleted */ 38 + #define IN_MOVE_SELF 0x00000800 /* Self was moved */ 38 39 39 40 /* the following are legal events. they are sent as needed to any watch */ 40 41 #define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted */ ··· 57 56 */ 58 57 #define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \ 59 58 IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \ 60 - IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF) 59 + IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | \ 60 + IN_MOVE_SELF) 61 61 62 62 #ifdef __KERNEL__ 63 63
+14 -6
include/linux/netpoll.h
··· 9 9 10 10 #include <linux/netdevice.h> 11 11 #include <linux/interrupt.h> 12 + #include <linux/rcupdate.h> 12 13 #include <linux/list.h> 13 14 14 15 struct netpoll; ··· 27 26 struct netpoll_info { 28 27 spinlock_t poll_lock; 29 28 int poll_owner; 29 + int tries; 30 30 int rx_flags; 31 31 spinlock_t rx_lock; 32 32 struct netpoll *rx_np; /* netpoll that registered an rx_hook */ ··· 62 60 return ret; 63 61 } 64 62 65 - static inline void netpoll_poll_lock(struct net_device *dev) 63 + static inline void *netpoll_poll_lock(struct net_device *dev) 66 64 { 65 + rcu_read_lock(); /* deal with race on ->npinfo */ 67 66 if (dev->npinfo) { 68 67 spin_lock(&dev->npinfo->poll_lock); 69 68 dev->npinfo->poll_owner = smp_processor_id(); 69 + return dev->npinfo; 70 70 } 71 + return NULL; 71 72 } 72 73 73 - static inline void netpoll_poll_unlock(struct net_device *dev) 74 + static inline void netpoll_poll_unlock(void *have) 74 75 { 75 - if (dev->npinfo) { 76 - dev->npinfo->poll_owner = -1; 77 - spin_unlock(&dev->npinfo->poll_lock); 76 + struct netpoll_info *npi = have; 77 + 78 + if (npi) { 79 + npi->poll_owner = -1; 80 + spin_unlock(&npi->poll_lock); 78 81 } 82 + rcu_read_unlock(); 79 83 } 80 84 81 85 #else 82 86 #define netpoll_rx(a) 0 83 - #define netpoll_poll_lock(a) 87 + #define netpoll_poll_lock(a) 0 84 88 #define netpoll_poll_unlock(a) 85 89 #endif 86 90
+24 -18
include/linux/nfs_fs.h
··· 112 112 /* 113 113 * Various flags 114 114 */ 115 - unsigned int flags; 115 + unsigned long flags; /* atomic bit ops */ 116 + unsigned long cache_validity; /* bit mask */ 116 117 117 118 /* 118 119 * read_cache_jiffies is when we started read-caching this inode, ··· 175 174 /* Open contexts for shared mmap writes */ 176 175 struct list_head open_files; 177 176 178 - wait_queue_head_t nfs_i_wait; 179 - 180 177 #ifdef CONFIG_NFS_V4 181 178 struct nfs4_cached_acl *nfs4_acl; 182 179 /* NFSv4 state */ ··· 187 188 }; 188 189 189 190 /* 190 - * Legal inode flag values 191 + * Cache validity bit flags 191 192 */ 192 - #define NFS_INO_STALE 0x0001 /* possible stale inode */ 193 - #define NFS_INO_ADVISE_RDPLUS 0x0002 /* advise readdirplus */ 194 - #define NFS_INO_REVALIDATING 0x0004 /* revalidating attrs */ 195 - #define NFS_INO_INVALID_ATTR 0x0008 /* cached attrs are invalid */ 196 - #define NFS_INO_INVALID_DATA 0x0010 /* cached data is invalid */ 197 - #define NFS_INO_INVALID_ATIME 0x0020 /* cached atime is invalid */ 198 - #define NFS_INO_INVALID_ACCESS 0x0040 /* cached access cred invalid */ 199 - #define NFS_INO_INVALID_ACL 0x0080 /* cached acls are invalid */ 200 - #define NFS_INO_REVAL_PAGECACHE 0x1000 /* must revalidate pagecache */ 193 + #define NFS_INO_INVALID_ATTR 0x0001 /* cached attrs are invalid */ 194 + #define NFS_INO_INVALID_DATA 0x0002 /* cached data is invalid */ 195 + #define NFS_INO_INVALID_ATIME 0x0004 /* cached atime is invalid */ 196 + #define NFS_INO_INVALID_ACCESS 0x0008 /* cached access cred invalid */ 197 + #define NFS_INO_INVALID_ACL 0x0010 /* cached acls are invalid */ 198 + #define NFS_INO_REVAL_PAGECACHE 0x0020 /* must revalidate pagecache */ 199 + 200 + /* 201 + * Bit offsets in flags field 202 + */ 203 + #define NFS_INO_REVALIDATING (0) /* revalidating attrs */ 204 + #define NFS_INO_ADVISE_RDPLUS (1) /* advise readdirplus */ 205 + #define NFS_INO_STALE (2) /* possible stale inode */ 201 206 202 207 static inline struct nfs_inode *NFS_I(struct inode *inode) 203 208 { ··· 227 224 #define NFS_ATTRTIMEO_UPDATE(inode) (NFS_I(inode)->attrtimeo_timestamp) 228 225 229 226 #define NFS_FLAGS(inode) (NFS_I(inode)->flags) 230 - #define NFS_REVALIDATING(inode) (NFS_FLAGS(inode) & NFS_INO_REVALIDATING) 231 - #define NFS_STALE(inode) (NFS_FLAGS(inode) & NFS_INO_STALE) 227 + #define NFS_STALE(inode) (test_bit(NFS_INO_STALE, &NFS_FLAGS(inode))) 232 228 233 229 #define NFS_FILEID(inode) (NFS_I(inode)->fileid) 234 230 ··· 238 236 239 237 static inline void NFS_CACHEINV(struct inode *inode) 240 238 { 241 - if (!nfs_caches_unstable(inode)) 242 - NFS_FLAGS(inode) |= NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS; 239 + if (!nfs_caches_unstable(inode)) { 240 + spin_lock(&inode->i_lock); 241 + NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ACCESS; 242 + spin_unlock(&inode->i_lock); 243 + } 243 244 } 244 245 245 246 static inline int nfs_server_capable(struct inode *inode, int cap) ··· 252 247 253 248 static inline int NFS_USE_READDIRPLUS(struct inode *inode) 254 249 { 255 - return NFS_FLAGS(inode) & NFS_INO_ADVISE_RDPLUS; 250 + return test_bit(NFS_INO_ADVISE_RDPLUS, &NFS_FLAGS(inode)); 256 251 } 257 252 258 253 /** ··· 297 292 extern int __nfs_revalidate_inode(struct nfs_server *, struct inode *); 298 293 extern void nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping); 299 294 extern int nfs_setattr(struct dentry *, struct iattr *); 295 + extern void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr); 300 296 extern void nfs_begin_attr_update(struct inode *); 301 297 extern void nfs_end_attr_update(struct inode *); 302 298 extern void nfs_begin_data_update(struct inode *);
+2 -1
include/linux/pci.h
··· 556 556 /* keep track of device state */ 557 557 unsigned int is_enabled:1; /* pci_enable_device has been called */ 558 558 unsigned int is_busmaster:1; /* device is busmaster */ 559 - 559 + unsigned int no_msi:1; /* device may not use msi */ 560 + 560 561 u32 saved_config_space[16]; /* config space saved at suspend time */ 561 562 struct bin_attribute *rom_attr; /* attribute descriptor for sysfs ROM entry */ 562 563 int rom_attr_enabled; /* has display of the rom attribute been enabled? */
+10 -1
include/linux/pci_ids.h
··· 881 881 #define PCI_DEVICE_ID_APPLE_UNI_N_PCI15 0x002e 882 882 #define PCI_DEVICE_ID_APPLE_UNI_N_FW2 0x0030 883 883 #define PCI_DEVICE_ID_APPLE_UNI_N_GMAC2 0x0032 884 - #define PCI_DEVIEC_ID_APPLE_UNI_N_ATA 0x0033 884 + #define PCI_DEVICE_ID_APPLE_UNI_N_ATA 0x0033 885 885 #define PCI_DEVICE_ID_APPLE_UNI_N_AGP2 0x0034 886 886 #define PCI_DEVICE_ID_APPLE_IPID_ATA100 0x003b 887 887 #define PCI_DEVICE_ID_APPLE_KEYLARGO_I 0x003e ··· 1580 1580 #define PCI_DEVICE_ID_SERVERWORKS_OSB4IDE 0x0211 1581 1581 #define PCI_DEVICE_ID_SERVERWORKS_CSB5IDE 0x0212 1582 1582 #define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE 0x0213 1583 + #define PCI_DEVICE_ID_SERVERWORKS_HT1000IDE 0x0214 1583 1584 #define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2 0x0217 1584 1585 #define PCI_DEVICE_ID_SERVERWORKS_OSB4USB 0x0220 1585 1586 #define PCI_DEVICE_ID_SERVERWORKS_CSB5USB PCI_DEVICE_ID_SERVERWORKS_OSB4USB ··· 2185 2184 #define PCI_VENDOR_ID_SIBYTE 0x166d 2186 2185 #define PCI_DEVICE_ID_BCM1250_HT 0x0002 2187 2186 2187 + #define PCI_VENDOR_ID_NETCELL 0x169c 2188 + #define PCI_DEVICE_ID_REVOLUTION 0x0044 2189 + 2188 2190 #define PCI_VENDOR_ID_LINKSYS 0x1737 2189 2191 #define PCI_DEVICE_ID_LINKSYS_EG1032 0x1032 2190 2192 #define PCI_DEVICE_ID_LINKSYS_EG1064 0x1064 ··· 2285 2281 #define PCI_VENDOR_ID_INTEL 0x8086 2286 2282 #define PCI_DEVICE_ID_INTEL_EESSC 0x0008 2287 2283 #define PCI_DEVICE_ID_INTEL_21145 0x0039 2284 + #define PCI_DEVICE_ID_INTEL_PXHD_0 0x0320 2285 + #define PCI_DEVICE_ID_INTEL_PXHD_1 0x0321 2286 + #define PCI_DEVICE_ID_INTEL_PXH_0 0x0329 2287 + #define PCI_DEVICE_ID_INTEL_PXH_1 0x032A 2288 + #define PCI_DEVICE_ID_INTEL_PXHV 0x032C 2288 2289 #define PCI_DEVICE_ID_INTEL_82375 0x0482 2289 2290 #define PCI_DEVICE_ID_INTEL_82424 0x0483 2290 2291 #define PCI_DEVICE_ID_INTEL_82378 0x0484
+1 -1
include/linux/skbuff.h
··· 255 255 nohdr:1; 256 256 /* 3 bits spare */ 257 257 __u8 pkt_type; 258 - __u16 protocol; 258 + __be16 protocol; 259 259 260 260 void (*destructor)(struct sk_buff *skb); 261 261 #ifdef CONFIG_NETFILTER
+1
include/linux/sunrpc/xdr.h
··· 177 177 struct xdr_array2_desc { 178 178 unsigned int elem_size; 179 179 unsigned int array_len; 180 + unsigned int array_maxlen; 180 181 xdr_xcode_elem_t xcode; 181 182 }; 182 183
+2 -2
kernel/sched.c
··· 3378 3378 */ 3379 3379 int can_nice(const task_t *p, const int nice) 3380 3380 { 3381 - /* convert nice value [19,-20] to rlimit style value [0,39] */ 3382 - int nice_rlim = 19 - nice; 3381 + /* convert nice value [19,-20] to rlimit style value [1,40] */ 3382 + int nice_rlim = 20 - nice; 3383 3383 return (nice_rlim <= p->signal->rlim[RLIMIT_NICE].rlim_cur || 3384 3384 capable(CAP_SYS_NICE)); 3385 3385 }
+1 -1
kernel/signal.c
··· 692 692 { 693 693 struct task_struct *t; 694 694 695 - if (p->flags & SIGNAL_GROUP_EXIT) 695 + if (p->signal->flags & SIGNAL_GROUP_EXIT) 696 696 /* 697 697 * The process is in the middle of dying already. 698 698 */
+1 -1
lib/zlib_inflate/inftrees.c
··· 141 141 { 142 142 *t = NULL; 143 143 *m = 0; 144 - return Z_DATA_ERROR; 144 + return Z_OK; 145 145 } 146 146 147 147
+12 -10
net/802/tr.c
··· 251 251 unsigned int hash; 252 252 struct rif_cache *entry; 253 253 unsigned char *olddata; 254 + unsigned long flags; 254 255 static const unsigned char mcast_func_addr[] 255 256 = {0xC0,0x00,0x00,0x04,0x00,0x00}; 256 257 257 - spin_lock_bh(&rif_lock); 258 + spin_lock_irqsave(&rif_lock, flags); 258 259 259 260 /* 260 261 * Broadcasts are single route as stated in RFC 1042 ··· 324 323 else 325 324 slack = 18 - ((ntohs(trh->rcf) & TR_RCF_LEN_MASK)>>8); 326 325 olddata = skb->data; 327 - spin_unlock_bh(&rif_lock); 326 + spin_unlock_irqrestore(&rif_lock, flags); 328 327 329 328 skb_pull(skb, slack); 330 329 memmove(skb->data, olddata, sizeof(struct trh_hdr) - slack); ··· 338 337 static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev) 339 338 { 340 339 unsigned int hash, rii_p = 0; 340 + unsigned long flags; 341 341 struct rif_cache *entry; 342 342 343 343 344 - spin_lock_bh(&rif_lock); 344 + spin_lock_irqsave(&rif_lock, flags); 345 345 346 346 /* 347 347 * Firstly see if the entry exists ··· 380 378 if(!entry) 381 379 { 382 380 printk(KERN_DEBUG "tr.c: Couldn't malloc rif cache entry !\n"); 383 - spin_unlock_bh(&rif_lock); 381 + spin_unlock_irqrestore(&rif_lock, flags); 384 382 return; 385 383 } 386 384 ··· 422 420 } 423 421 entry->last_used=jiffies; 424 422 } 425 - spin_unlock_bh(&rif_lock); 423 + spin_unlock_irqrestore(&rif_lock, flags); 426 424 } 427 425 428 426 /* ··· 432 430 static void rif_check_expire(unsigned long dummy) 433 431 { 434 432 int i; 435 - unsigned long next_interval = jiffies + sysctl_tr_rif_timeout/2; 433 + unsigned long flags, next_interval = jiffies + sysctl_tr_rif_timeout/2; 436 434 437 - spin_lock_bh(&rif_lock); 435 + spin_lock_irqsave(&rif_lock, flags); 438 436 439 437 for(i =0; i < RIF_TABLE_SIZE; i++) { 440 438 struct rif_cache *entry, **pentry; ··· 456 454 } 457 455 } 458 456 459 - spin_unlock_bh(&rif_lock); 457 + spin_unlock_irqrestore(&rif_lock, flags); 460 458 461 459 mod_timer(&rif_timer, next_interval); 462 460 ··· 487 485 488 486 static void *rif_seq_start(struct seq_file *seq, loff_t *pos) 489 487 { 490 - spin_lock_bh(&rif_lock); 488 + spin_lock_irq(&rif_lock); 491 489 492 490 return *pos ? rif_get_idx(*pos - 1) : SEQ_START_TOKEN; 493 491 } ··· 518 516 519 517 static void rif_seq_stop(struct seq_file *seq, void *v) 520 518 { 521 - spin_unlock_bh(&rif_lock); 519 + spin_unlock_irq(&rif_lock); 522 520 } 523 521 524 522 static int rif_seq_show(struct seq_file *seq, void *v)
+5 -4
net/core/dev.c
··· 1696 1696 struct softnet_data *queue = &__get_cpu_var(softnet_data); 1697 1697 unsigned long start_time = jiffies; 1698 1698 int budget = netdev_budget; 1699 - 1699 + void *have; 1700 + 1700 1701 local_irq_disable(); 1701 1702 1702 1703 while (!list_empty(&queue->poll_list)) { ··· 1710 1709 1711 1710 dev = list_entry(queue->poll_list.next, 1712 1711 struct net_device, poll_list); 1713 - netpoll_poll_lock(dev); 1712 + have = netpoll_poll_lock(dev); 1714 1713 1715 1714 if (dev->quota <= 0 || dev->poll(dev, &budget)) { 1716 - netpoll_poll_unlock(dev); 1715 + netpoll_poll_unlock(have); 1717 1716 local_irq_disable(); 1718 1717 list_del(&dev->poll_list); 1719 1718 list_add_tail(&dev->poll_list, &queue->poll_list); ··· 1722 1721 else 1723 1722 dev->quota = dev->weight; 1724 1723 } else { 1725 - netpoll_poll_unlock(dev); 1724 + netpoll_poll_unlock(have); 1726 1725 dev_put(dev); 1727 1726 local_irq_disable(); 1728 1727 }
+38 -25
net/core/netpoll.c
··· 33 33 #define MAX_UDP_CHUNK 1460 34 34 #define MAX_SKBS 32 35 35 #define MAX_QUEUE_DEPTH (MAX_SKBS / 2) 36 + #define MAX_RETRIES 20000 36 37 37 38 static DEFINE_SPINLOCK(skb_list_lock); 38 39 static int nr_skbs; ··· 249 248 int status; 250 249 struct netpoll_info *npinfo; 251 250 252 - repeat: 253 - if(!np || !np->dev || !netif_running(np->dev)) { 251 + if (!np || !np->dev || !netif_running(np->dev)) { 254 252 __kfree_skb(skb); 255 253 return; 256 254 } 257 255 258 - /* avoid recursion */ 259 256 npinfo = np->dev->npinfo; 257 + 258 + /* avoid recursion */ 260 259 if (npinfo->poll_owner == smp_processor_id() || 261 260 np->dev->xmit_lock_owner == smp_processor_id()) { 262 261 if (np->drop) ··· 266 265 return; 267 266 } 268 267 269 - spin_lock(&np->dev->xmit_lock); 270 - np->dev->xmit_lock_owner = smp_processor_id(); 268 + do { 269 + npinfo->tries--; 270 + spin_lock(&np->dev->xmit_lock); 271 + np->dev->xmit_lock_owner = smp_processor_id(); 271 272 272 - /* 273 - * network drivers do not expect to be called if the queue is 274 - * stopped. 275 - */ 276 - if (netif_queue_stopped(np->dev)) { 273 + /* 274 + * network drivers do not expect to be called if the queue is 275 + * stopped. 276 + */ 277 + if (netif_queue_stopped(np->dev)) { 278 + np->dev->xmit_lock_owner = -1; 279 + spin_unlock(&np->dev->xmit_lock); 280 + netpoll_poll(np); 281 + udelay(50); 282 + continue; 283 + } 284 + 285 + status = np->dev->hard_start_xmit(skb, np->dev); 277 286 np->dev->xmit_lock_owner = -1; 278 287 spin_unlock(&np->dev->xmit_lock); 279 288 280 - netpoll_poll(np); 281 - goto repeat; 282 - } 289 + /* success */ 290 + if(!status) { 291 + npinfo->tries = MAX_RETRIES; /* reset */ 292 + return; 293 + } 283 294 284 - status = np->dev->hard_start_xmit(skb, np->dev); 285 - np->dev->xmit_lock_owner = -1; 286 - spin_unlock(&np->dev->xmit_lock); 287 - 288 - /* transmit busy */ 289 - if(status) { 295 + /* transmit busy */ 290 296 netpoll_poll(np); 291 - goto repeat; 292 - } 297 + udelay(50); 298 + } while (npinfo->tries > 0); 293 299 } 294 300 295 301 void netpoll_send_udp(struct netpoll *np, const char *msg, int len) ··· 357 349 unsigned char *arp_ptr; 358 350 int size, type = ARPOP_REPLY, ptype = ETH_P_ARP; 359 351 u32 sip, tip; 360 - unsigned long flags; 361 352 struct sk_buff *send_skb; 362 353 struct netpoll *np = NULL; 363 354 364 - spin_lock_irqsave(&npinfo->rx_lock, flags); 365 355 if (npinfo->rx_np && npinfo->rx_np->dev == skb->dev) 366 356 np = npinfo->rx_np; 367 - spin_unlock_irqrestore(&npinfo->rx_lock, flags); 368 - 369 357 if (!np) 370 358 return; 371 359 ··· 643 639 if (!npinfo) 644 640 goto release; 645 641 642 + npinfo->rx_flags = 0; 646 643 npinfo->rx_np = NULL; 647 644 npinfo->poll_lock = SPIN_LOCK_UNLOCKED; 648 645 npinfo->poll_owner = -1; 646 + npinfo->tries = MAX_RETRIES; 649 647 npinfo->rx_lock = SPIN_LOCK_UNLOCKED; 650 648 } else 651 649 npinfo = ndev->npinfo; ··· 724 718 npinfo->rx_np = np; 725 719 spin_unlock_irqrestore(&npinfo->rx_lock, flags); 726 720 } 721 + 722 + /* fill up the skb queue */ 723 + refill_skbs(); 724 + 727 725 /* last thing to do is link it to the net device structure */ 728 726 ndev->npinfo = npinfo; 727 + 728 + /* avoid racing with NAPI reading npinfo */ 729 + synchronize_rcu(); 729 730 730 731 return 0; 731 732
+1 -1
net/decnet/dn_neigh.c
··· 148 148 149 149 __neigh_parms_put(neigh->parms); 150 150 neigh->parms = neigh_parms_clone(parms); 151 - rcu_read_unlock(); 152 151 153 152 if (dn_db->use_long) 154 153 neigh->ops = &dn_long_ops; 155 154 else 156 155 neigh->ops = &dn_short_ops; 156 + rcu_read_unlock(); 157 157 158 158 if (dn->flags & DN_NDFLAG_P3) 159 159 neigh->ops = &dn_phase3_ops;
+6 -6
net/ipv4/icmp.c
··· 349 349 { 350 350 struct sk_buff *skb; 351 351 352 - ip_append_data(icmp_socket->sk, icmp_glue_bits, icmp_param, 353 - icmp_param->data_len+icmp_param->head_len, 354 - icmp_param->head_len, 355 - ipc, rt, MSG_DONTWAIT); 356 - 357 - if ((skb = skb_peek(&icmp_socket->sk->sk_write_queue)) != NULL) { 352 + if (ip_append_data(icmp_socket->sk, icmp_glue_bits, icmp_param, 353 + icmp_param->data_len+icmp_param->head_len, 354 + icmp_param->head_len, 355 + ipc, rt, MSG_DONTWAIT) < 0) 356 + ip_flush_pending_frames(icmp_socket->sk); 357 + else if ((skb = skb_peek(&icmp_socket->sk->sk_write_queue)) != NULL) { 358 358 struct icmphdr *icmph = skb->h.icmph; 359 359 unsigned int csum = 0; 360 360 struct sk_buff *skb1;
+1 -1
net/ipv4/ipcomp.c
··· 358 358 int cpu; 359 359 360 360 /* This can be any valid CPU ID so we don't need locking. */ 361 - cpu = smp_processor_id(); 361 + cpu = raw_smp_processor_id(); 362 362 363 363 list_for_each_entry(pos, &ipcomp_tfms_list, list) { 364 364 struct crypto_tfm *tfm;
+30 -23
net/ipv4/tcp_output.c
··· 861 861 u16 flags; 862 862 863 863 /* All of a TSO frame must be composed of paged data. */ 864 - BUG_ON(skb->len != skb->data_len); 864 + if (skb->len != skb->data_len) 865 + return tcp_fragment(sk, skb, len, mss_now); 865 866 866 867 buff = sk_stream_alloc_pskb(sk, 0, 0, GFP_ATOMIC); 867 868 if (unlikely(buff == NULL)) ··· 975 974 976 975 sent_pkts = 0; 977 976 while ((skb = sk->sk_send_head)) { 977 + unsigned int limit; 978 + 978 979 tso_segs = tcp_init_tso_segs(sk, skb, mss_now); 979 980 BUG_ON(!tso_segs); 980 981 ··· 997 994 break; 998 995 } 999 996 997 + limit = mss_now; 1000 998 if (tso_segs > 1) { 1001 - u32 limit = tcp_window_allows(tp, skb, 1002 - mss_now, cwnd_quota); 999 + limit = tcp_window_allows(tp, skb, 1000 + mss_now, cwnd_quota); 1003 1001 1004 1002 if (skb->len < limit) { 1005 1003 unsigned int trim = skb->len % mss_now; ··· 1008 1004 if (trim) 1009 1005 limit = skb->len - trim; 1010 1006 } 1011 - if (skb->len > limit) { 1012 - if (tso_fragment(sk, skb, limit, mss_now)) 1013 - break; 1014 - } 1015 - } else if (unlikely(skb->len > mss_now)) { 1016 - if (unlikely(tcp_fragment(sk, skb, mss_now, mss_now))) 1017 - break; 1018 1007 } 1008 + 1009 + if (skb->len > limit && 1010 + unlikely(tso_fragment(sk, skb, limit, mss_now))) 1011 + break; 1019 1012 1020 1013 TCP_SKB_CB(skb)->when = tcp_time_stamp; 1021 1014 ··· 1065 1064 cwnd_quota = tcp_snd_test(sk, skb, mss_now, TCP_NAGLE_PUSH); 1066 1065 1067 1066 if (likely(cwnd_quota)) { 1067 + unsigned int limit; 1068 + 1068 1069 BUG_ON(!tso_segs); 1069 1070 1071 + limit = mss_now; 1070 1072 if (tso_segs > 1) { 1071 - u32 limit = tcp_window_allows(tp, skb, 1072 - mss_now, cwnd_quota); 1073 + limit = tcp_window_allows(tp, skb, 1074 + mss_now, cwnd_quota); 1073 1075 1074 1076 if (skb->len < limit) { 1075 1077 unsigned int trim = skb->len % mss_now; ··· 1080 1076 if (trim) 1081 1077 limit = skb->len - trim; 1082 1078 } 1083 - if (skb->len > limit) { 1084 - if (unlikely(tso_fragment(sk, skb, limit, mss_now))) 1085 - return; 1086 - } 1087 - } else if (unlikely(skb->len > mss_now)) { 1088 - if (unlikely(tcp_fragment(sk, skb, mss_now, mss_now))) 1089 - return; 1090 1079 } 1080 + 1081 + if (skb->len > limit && 1082 + unlikely(tso_fragment(sk, skb, limit, mss_now))) 1083 + return; 1091 1084 1092 1085 /* Send it out now. */ 1093 1086 TCP_SKB_CB(skb)->when = tcp_time_stamp; ··· 1371 1370 1372 1371 if (skb->len > cur_mss) { 1373 1372 int old_factor = tcp_skb_pcount(skb); 1374 - int new_factor; 1373 + int diff; 1375 1374 1376 1375 if (tcp_fragment(sk, skb, cur_mss, cur_mss)) 1377 1376 return -ENOMEM; /* We'll try again later. */ 1378 1377 1379 1378 /* New SKB created, account for it. */ 1380 - new_factor = tcp_skb_pcount(skb); 1381 - tp->packets_out -= old_factor - new_factor; 1382 - tp->packets_out += tcp_skb_pcount(skb->next); 1379 + diff = old_factor - tcp_skb_pcount(skb) - 1380 + tcp_skb_pcount(skb->next); 1381 + tp->packets_out -= diff; 1382 + 1383 + if (diff > 0) { 1384 + tp->fackets_out -= diff; 1385 + if ((int)tp->fackets_out < 0) 1386 + tp->fackets_out = 0; 1387 + } 1383 1388 } 1384 1389 1385 1390 /* Collapse two adjacent packets if worthwhile and we can. */
+5 -4
net/ipv6/ip6_input.c
··· 198 198 if (!raw_sk) { 199 199 if (xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb)) { 200 200 IP6_INC_STATS_BH(IPSTATS_MIB_INUNKNOWNPROTOS); 201 - icmpv6_param_prob(skb, ICMPV6_UNK_NEXTHDR, nhoff); 201 + icmpv6_send(skb, ICMPV6_PARAMPROB, 202 + ICMPV6_UNK_NEXTHDR, nhoff, 203 + skb->dev); 202 204 } 203 - } else { 205 + } else 204 206 IP6_INC_STATS_BH(IPSTATS_MIB_INDELIVERS); 205 - kfree_skb(skb); 206 - } 207 + kfree_skb(skb); 207 208 } 208 209 rcu_read_unlock(); 209 210 return 0;
+1 -1
net/ipv6/ipcomp6.c
··· 354 354 int cpu; 355 355 356 356 /* This can be any valid CPU ID so we don't need locking. */ 357 - cpu = smp_processor_id(); 357 + cpu = raw_smp_processor_id(); 358 358 359 359 list_for_each_entry(pos, &ipcomp6_tfms_list, list) { 360 360 struct crypto_tfm *tfm;
+2
net/ipv6/raw.c
··· 328 328 329 329 if (skb->ip_summed != CHECKSUM_UNNECESSARY) { 330 330 if (skb->ip_summed == CHECKSUM_HW) { 331 + skb_postpull_rcsum(skb, skb->nh.raw, 332 + skb->h.raw - skb->nh.raw); 331 333 skb->ip_summed = CHECKSUM_UNNECESSARY; 332 334 if (csum_ipv6_magic(&skb->nh.ipv6h->saddr, 333 335 &skb->nh.ipv6h->daddr,
+1
net/sunrpc/xdr.c
··· 993 993 return -EINVAL; 994 994 } else { 995 995 if (xdr_decode_word(buf, base, &desc->array_len) != 0 || 996 + desc->array_len > desc->array_maxlen || 996 997 (unsigned long) base + 4 + desc->array_len * 997 998 desc->elem_size > buf->len) 998 999 return -EINVAL;
+2 -1
sound/ppc/pmac.c
··· 765 765 */ 766 766 static void snd_pmac_sound_feature(pmac_t *chip, int enable) 767 767 { 768 - ppc_md.feature_call(PMAC_FTR_SOUND_CHIP_ENABLE, chip->node, 0, enable); 768 + if (ppc_md.feature_call) 769 + ppc_md.feature_call(PMAC_FTR_SOUND_CHIP_ENABLE, chip->node, 0, enable); 769 770 } 770 771 771 772 /*