diff options
Diffstat (limited to 'arch/i386')
-rw-r--r-- | arch/i386/defconfig | 41 | ||||
-rw-r--r-- | arch/i386/kernel/apic.c | 18 | ||||
-rw-r--r-- | arch/i386/kernel/i8259.c | 4 | ||||
-rw-r--r-- | arch/i386/kernel/io_apic.c | 12 | ||||
-rw-r--r-- | arch/i386/kernel/irq.c | 12 | ||||
-rw-r--r-- | arch/i386/kernel/process.c | 6 | ||||
-rw-r--r-- | arch/i386/kernel/smp.c | 6 | ||||
-rw-r--r-- | arch/i386/kernel/time.c | 10 | ||||
-rw-r--r-- | arch/i386/kernel/time_hpet.c | 4 | ||||
-rw-r--r-- | arch/i386/kernel/vm86.c | 2 | ||||
-rw-r--r-- | arch/i386/lib/semaphore.S | 3 | ||||
-rw-r--r-- | arch/i386/mach-visws/visws_apic.c | 4 | ||||
-rw-r--r-- | arch/i386/mach-voyager/voyager_basic.c | 2 | ||||
-rw-r--r-- | arch/i386/mach-voyager/voyager_smp.c | 28 | ||||
-rw-r--r-- | arch/i386/pci/direct.c | 2 | ||||
-rw-r--r-- | arch/i386/pci/init.c | 4 | ||||
-rw-r--r-- | arch/i386/pci/irq.c | 4 |
17 files changed, 107 insertions, 55 deletions
diff --git a/arch/i386/defconfig b/arch/i386/defconfig index ee2d79bd8af7..60c0c02574f0 100644 --- a/arch/i386/defconfig +++ b/arch/i386/defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.18-git7 | 3 | # Linux kernel version: 2.6.19-rc1 |
4 | # Wed Sep 27 21:53:10 2006 | 4 | # Thu Oct 5 13:04:53 2006 |
5 | # | 5 | # |
6 | CONFIG_X86_32=y | 6 | CONFIG_X86_32=y |
7 | CONFIG_GENERIC_TIME=y | 7 | CONFIG_GENERIC_TIME=y |
@@ -31,9 +31,11 @@ CONFIG_LOCALVERSION="" | |||
31 | CONFIG_LOCALVERSION_AUTO=y | 31 | CONFIG_LOCALVERSION_AUTO=y |
32 | CONFIG_SWAP=y | 32 | CONFIG_SWAP=y |
33 | CONFIG_SYSVIPC=y | 33 | CONFIG_SYSVIPC=y |
34 | # CONFIG_IPC_NS is not set | ||
34 | CONFIG_POSIX_MQUEUE=y | 35 | CONFIG_POSIX_MQUEUE=y |
35 | # CONFIG_BSD_PROCESS_ACCT is not set | 36 | # CONFIG_BSD_PROCESS_ACCT is not set |
36 | # CONFIG_TASKSTATS is not set | 37 | # CONFIG_TASKSTATS is not set |
38 | # CONFIG_UTS_NS is not set | ||
37 | # CONFIG_AUDIT is not set | 39 | # CONFIG_AUDIT is not set |
38 | CONFIG_IKCONFIG=y | 40 | CONFIG_IKCONFIG=y |
39 | CONFIG_IKCONFIG_PROC=y | 41 | CONFIG_IKCONFIG_PROC=y |
@@ -41,9 +43,10 @@ CONFIG_IKCONFIG_PROC=y | |||
41 | # CONFIG_RELAY is not set | 43 | # CONFIG_RELAY is not set |
42 | CONFIG_INITRAMFS_SOURCE="" | 44 | CONFIG_INITRAMFS_SOURCE="" |
43 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 45 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
46 | CONFIG_SYSCTL=y | ||
44 | # CONFIG_EMBEDDED is not set | 47 | # CONFIG_EMBEDDED is not set |
45 | CONFIG_UID16=y | 48 | CONFIG_UID16=y |
46 | CONFIG_SYSCTL=y | 49 | # CONFIG_SYSCTL_SYSCALL is not set |
47 | CONFIG_KALLSYMS=y | 50 | CONFIG_KALLSYMS=y |
48 | CONFIG_KALLSYMS_ALL=y | 51 | CONFIG_KALLSYMS_ALL=y |
49 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 52 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -76,6 +79,7 @@ CONFIG_STOP_MACHINE=y | |||
76 | # | 79 | # |
77 | # Block layer | 80 | # Block layer |
78 | # | 81 | # |
82 | CONFIG_BLOCK=y | ||
79 | CONFIG_LBD=y | 83 | CONFIG_LBD=y |
80 | # CONFIG_BLK_DEV_IO_TRACE is not set | 84 | # CONFIG_BLK_DEV_IO_TRACE is not set |
81 | # CONFIG_LSF is not set | 85 | # CONFIG_LSF is not set |
@@ -163,6 +167,7 @@ CONFIG_VM86=y | |||
163 | # CONFIG_I8K is not set | 167 | # CONFIG_I8K is not set |
164 | # CONFIG_X86_REBOOTFIXUPS is not set | 168 | # CONFIG_X86_REBOOTFIXUPS is not set |
165 | CONFIG_MICROCODE=y | 169 | CONFIG_MICROCODE=y |
170 | CONFIG_MICROCODE_OLD_INTERFACE=y | ||
166 | CONFIG_X86_MSR=y | 171 | CONFIG_X86_MSR=y |
167 | CONFIG_X86_CPUID=y | 172 | CONFIG_X86_CPUID=y |
168 | 173 | ||
@@ -177,6 +182,7 @@ CONFIG_HIGHMEM4G=y | |||
177 | # CONFIG_HIGHMEM64G is not set | 182 | # CONFIG_HIGHMEM64G is not set |
178 | CONFIG_PAGE_OFFSET=0xC0000000 | 183 | CONFIG_PAGE_OFFSET=0xC0000000 |
179 | CONFIG_HIGHMEM=y | 184 | CONFIG_HIGHMEM=y |
185 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
180 | CONFIG_SELECT_MEMORY_MODEL=y | 186 | CONFIG_SELECT_MEMORY_MODEL=y |
181 | CONFIG_FLATMEM_MANUAL=y | 187 | CONFIG_FLATMEM_MANUAL=y |
182 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 188 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
@@ -295,6 +301,7 @@ CONFIG_PCI_MMCONFIG=y | |||
295 | CONFIG_PCI_MSI=y | 301 | CONFIG_PCI_MSI=y |
296 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | 302 | # CONFIG_PCI_MULTITHREAD_PROBE is not set |
297 | # CONFIG_PCI_DEBUG is not set | 303 | # CONFIG_PCI_DEBUG is not set |
304 | # CONFIG_HT_IRQ is not set | ||
298 | CONFIG_ISA_DMA_API=y | 305 | CONFIG_ISA_DMA_API=y |
299 | # CONFIG_ISA is not set | 306 | # CONFIG_ISA is not set |
300 | # CONFIG_MCA is not set | 307 | # CONFIG_MCA is not set |
@@ -354,6 +361,7 @@ CONFIG_IP_PNP_DHCP=y | |||
354 | # CONFIG_INET_TUNNEL is not set | 361 | # CONFIG_INET_TUNNEL is not set |
355 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 362 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
356 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 363 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
364 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
357 | CONFIG_INET_DIAG=y | 365 | CONFIG_INET_DIAG=y |
358 | CONFIG_INET_TCP_DIAG=y | 366 | CONFIG_INET_TCP_DIAG=y |
359 | # CONFIG_TCP_CONG_ADVANCED is not set | 367 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -370,6 +378,7 @@ CONFIG_IPV6=y | |||
370 | # CONFIG_INET6_TUNNEL is not set | 378 | # CONFIG_INET6_TUNNEL is not set |
371 | CONFIG_INET6_XFRM_MODE_TRANSPORT=y | 379 | CONFIG_INET6_XFRM_MODE_TRANSPORT=y |
372 | CONFIG_INET6_XFRM_MODE_TUNNEL=y | 380 | CONFIG_INET6_XFRM_MODE_TUNNEL=y |
381 | # CONFIG_INET6_XFRM_MODE_BEET is not set | ||
373 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 382 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
374 | # CONFIG_IPV6_TUNNEL is not set | 383 | # CONFIG_IPV6_TUNNEL is not set |
375 | # CONFIG_IPV6_SUBTREES is not set | 384 | # CONFIG_IPV6_SUBTREES is not set |
@@ -519,6 +528,7 @@ CONFIG_BLK_DEV_AMD74XX=y | |||
519 | # CONFIG_BLK_DEV_CS5535 is not set | 528 | # CONFIG_BLK_DEV_CS5535 is not set |
520 | # CONFIG_BLK_DEV_HPT34X is not set | 529 | # CONFIG_BLK_DEV_HPT34X is not set |
521 | # CONFIG_BLK_DEV_HPT366 is not set | 530 | # CONFIG_BLK_DEV_HPT366 is not set |
531 | # CONFIG_BLK_DEV_JMICRON is not set | ||
522 | # CONFIG_BLK_DEV_SC1200 is not set | 532 | # CONFIG_BLK_DEV_SC1200 is not set |
523 | CONFIG_BLK_DEV_PIIX=y | 533 | CONFIG_BLK_DEV_PIIX=y |
524 | # CONFIG_BLK_DEV_IT821X is not set | 534 | # CONFIG_BLK_DEV_IT821X is not set |
@@ -615,6 +625,7 @@ CONFIG_AIC79XX_DEBUG_MASK=0 | |||
615 | # CONFIG_SCSI_IPR is not set | 625 | # CONFIG_SCSI_IPR is not set |
616 | # CONFIG_SCSI_QLOGIC_1280 is not set | 626 | # CONFIG_SCSI_QLOGIC_1280 is not set |
617 | # CONFIG_SCSI_QLA_FC is not set | 627 | # CONFIG_SCSI_QLA_FC is not set |
628 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
618 | # CONFIG_SCSI_LPFC is not set | 629 | # CONFIG_SCSI_LPFC is not set |
619 | # CONFIG_SCSI_DC395x is not set | 630 | # CONFIG_SCSI_DC395x is not set |
620 | # CONFIG_SCSI_DC390T is not set | 631 | # CONFIG_SCSI_DC390T is not set |
@@ -658,7 +669,6 @@ CONFIG_SATA_INTEL_COMBINED=y | |||
658 | # CONFIG_PATA_HPT3X3 is not set | 669 | # CONFIG_PATA_HPT3X3 is not set |
659 | # CONFIG_PATA_IT821X is not set | 670 | # CONFIG_PATA_IT821X is not set |
660 | # CONFIG_PATA_JMICRON is not set | 671 | # CONFIG_PATA_JMICRON is not set |
661 | # CONFIG_PATA_LEGACY is not set | ||
662 | # CONFIG_PATA_TRIFLEX is not set | 672 | # CONFIG_PATA_TRIFLEX is not set |
663 | # CONFIG_PATA_MPIIX is not set | 673 | # CONFIG_PATA_MPIIX is not set |
664 | # CONFIG_PATA_OLDPIIX is not set | 674 | # CONFIG_PATA_OLDPIIX is not set |
@@ -667,7 +677,6 @@ CONFIG_SATA_INTEL_COMBINED=y | |||
667 | # CONFIG_PATA_OPTI is not set | 677 | # CONFIG_PATA_OPTI is not set |
668 | # CONFIG_PATA_OPTIDMA is not set | 678 | # CONFIG_PATA_OPTIDMA is not set |
669 | # CONFIG_PATA_PDC_OLD is not set | 679 | # CONFIG_PATA_PDC_OLD is not set |
670 | # CONFIG_PATA_QDI is not set | ||
671 | # CONFIG_PATA_RADISYS is not set | 680 | # CONFIG_PATA_RADISYS is not set |
672 | # CONFIG_PATA_RZ1000 is not set | 681 | # CONFIG_PATA_RZ1000 is not set |
673 | # CONFIG_PATA_SC1200 is not set | 682 | # CONFIG_PATA_SC1200 is not set |
@@ -684,6 +693,7 @@ CONFIG_SATA_INTEL_COMBINED=y | |||
684 | CONFIG_MD=y | 693 | CONFIG_MD=y |
685 | # CONFIG_BLK_DEV_MD is not set | 694 | # CONFIG_BLK_DEV_MD is not set |
686 | CONFIG_BLK_DEV_DM=y | 695 | CONFIG_BLK_DEV_DM=y |
696 | # CONFIG_DM_DEBUG is not set | ||
687 | # CONFIG_DM_CRYPT is not set | 697 | # CONFIG_DM_CRYPT is not set |
688 | # CONFIG_DM_SNAPSHOT is not set | 698 | # CONFIG_DM_SNAPSHOT is not set |
689 | # CONFIG_DM_MIRROR is not set | 699 | # CONFIG_DM_MIRROR is not set |
@@ -874,6 +884,7 @@ CONFIG_NET_POLL_CONTROLLER=y | |||
874 | # Input device support | 884 | # Input device support |
875 | # | 885 | # |
876 | CONFIG_INPUT=y | 886 | CONFIG_INPUT=y |
887 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
877 | 888 | ||
878 | # | 889 | # |
879 | # Userland interfaces | 890 | # Userland interfaces |
@@ -896,6 +907,7 @@ CONFIG_KEYBOARD_ATKBD=y | |||
896 | # CONFIG_KEYBOARD_LKKBD is not set | 907 | # CONFIG_KEYBOARD_LKKBD is not set |
897 | # CONFIG_KEYBOARD_XTKBD is not set | 908 | # CONFIG_KEYBOARD_XTKBD is not set |
898 | # CONFIG_KEYBOARD_NEWTON is not set | 909 | # CONFIG_KEYBOARD_NEWTON is not set |
910 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
899 | CONFIG_INPUT_MOUSE=y | 911 | CONFIG_INPUT_MOUSE=y |
900 | CONFIG_MOUSE_PS2=y | 912 | CONFIG_MOUSE_PS2=y |
901 | # CONFIG_MOUSE_SERIAL is not set | 913 | # CONFIG_MOUSE_SERIAL is not set |
@@ -1023,12 +1035,12 @@ CONFIG_HANGCHECK_TIMER=y | |||
1023 | # Misc devices | 1035 | # Misc devices |
1024 | # | 1036 | # |
1025 | # CONFIG_IBM_ASM is not set | 1037 | # CONFIG_IBM_ASM is not set |
1038 | # CONFIG_TIFM_CORE is not set | ||
1026 | 1039 | ||
1027 | # | 1040 | # |
1028 | # Multimedia devices | 1041 | # Multimedia devices |
1029 | # | 1042 | # |
1030 | # CONFIG_VIDEO_DEV is not set | 1043 | # CONFIG_VIDEO_DEV is not set |
1031 | CONFIG_VIDEO_V4L2=y | ||
1032 | 1044 | ||
1033 | # | 1045 | # |
1034 | # Digital Video Broadcasting Devices | 1046 | # Digital Video Broadcasting Devices |
@@ -1134,6 +1146,7 @@ CONFIG_USB_STORAGE=y | |||
1134 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1146 | # CONFIG_USB_STORAGE_SDDR55 is not set |
1135 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1147 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
1136 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1148 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1149 | # CONFIG_USB_STORAGE_KARMA is not set | ||
1137 | # CONFIG_USB_LIBUSUAL is not set | 1150 | # CONFIG_USB_LIBUSUAL is not set |
1138 | 1151 | ||
1139 | # | 1152 | # |
@@ -1156,6 +1169,7 @@ CONFIG_USB_HIDINPUT=y | |||
1156 | # CONFIG_USB_ATI_REMOTE2 is not set | 1169 | # CONFIG_USB_ATI_REMOTE2 is not set |
1157 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 1170 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
1158 | # CONFIG_USB_APPLETOUCH is not set | 1171 | # CONFIG_USB_APPLETOUCH is not set |
1172 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1159 | 1173 | ||
1160 | # | 1174 | # |
1161 | # USB Imaging devices | 1175 | # USB Imaging devices |
@@ -1187,6 +1201,7 @@ CONFIG_USB_MON=y | |||
1187 | # | 1201 | # |
1188 | # CONFIG_USB_EMI62 is not set | 1202 | # CONFIG_USB_EMI62 is not set |
1189 | # CONFIG_USB_EMI26 is not set | 1203 | # CONFIG_USB_EMI26 is not set |
1204 | # CONFIG_USB_ADUTUX is not set | ||
1190 | # CONFIG_USB_AUERSWALD is not set | 1205 | # CONFIG_USB_AUERSWALD is not set |
1191 | # CONFIG_USB_RIO500 is not set | 1206 | # CONFIG_USB_RIO500 is not set |
1192 | # CONFIG_USB_LEGOTOWER is not set | 1207 | # CONFIG_USB_LEGOTOWER is not set |
@@ -1194,9 +1209,9 @@ CONFIG_USB_MON=y | |||
1194 | # CONFIG_USB_LED is not set | 1209 | # CONFIG_USB_LED is not set |
1195 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 1210 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
1196 | # CONFIG_USB_CYTHERM is not set | 1211 | # CONFIG_USB_CYTHERM is not set |
1197 | # CONFIG_USB_PHIDGETKIT is not set | 1212 | # CONFIG_USB_PHIDGET is not set |
1198 | # CONFIG_USB_PHIDGETSERVO is not set | ||
1199 | # CONFIG_USB_IDMOUSE is not set | 1213 | # CONFIG_USB_IDMOUSE is not set |
1214 | # CONFIG_USB_FTDI_ELAN is not set | ||
1200 | # CONFIG_USB_APPLEDISPLAY is not set | 1215 | # CONFIG_USB_APPLEDISPLAY is not set |
1201 | # CONFIG_USB_SISUSBVGA is not set | 1216 | # CONFIG_USB_SISUSBVGA is not set |
1202 | # CONFIG_USB_LD is not set | 1217 | # CONFIG_USB_LD is not set |
@@ -1281,6 +1296,7 @@ CONFIG_REISERFS_FS_POSIX_ACL=y | |||
1281 | # CONFIG_JFS_FS is not set | 1296 | # CONFIG_JFS_FS is not set |
1282 | CONFIG_FS_POSIX_ACL=y | 1297 | CONFIG_FS_POSIX_ACL=y |
1283 | # CONFIG_XFS_FS is not set | 1298 | # CONFIG_XFS_FS is not set |
1299 | # CONFIG_GFS2_FS is not set | ||
1284 | # CONFIG_OCFS2_FS is not set | 1300 | # CONFIG_OCFS2_FS is not set |
1285 | # CONFIG_MINIX_FS is not set | 1301 | # CONFIG_MINIX_FS is not set |
1286 | # CONFIG_ROMFS_FS is not set | 1302 | # CONFIG_ROMFS_FS is not set |
@@ -1315,8 +1331,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
1315 | # | 1331 | # |
1316 | CONFIG_PROC_FS=y | 1332 | CONFIG_PROC_FS=y |
1317 | CONFIG_PROC_KCORE=y | 1333 | CONFIG_PROC_KCORE=y |
1334 | CONFIG_PROC_SYSCTL=y | ||
1318 | CONFIG_SYSFS=y | 1335 | CONFIG_SYSFS=y |
1319 | CONFIG_TMPFS=y | 1336 | CONFIG_TMPFS=y |
1337 | CONFIG_TMPFS_POSIX_ACL=y | ||
1320 | CONFIG_HUGETLBFS=y | 1338 | CONFIG_HUGETLBFS=y |
1321 | CONFIG_HUGETLB_PAGE=y | 1339 | CONFIG_HUGETLB_PAGE=y |
1322 | CONFIG_RAMFS=y | 1340 | CONFIG_RAMFS=y |
@@ -1366,6 +1384,7 @@ CONFIG_SUNRPC=y | |||
1366 | # CONFIG_CODA_FS is not set | 1384 | # CONFIG_CODA_FS is not set |
1367 | # CONFIG_AFS_FS is not set | 1385 | # CONFIG_AFS_FS is not set |
1368 | # CONFIG_9P_FS is not set | 1386 | # CONFIG_9P_FS is not set |
1387 | CONFIG_GENERIC_ACL=y | ||
1369 | 1388 | ||
1370 | # | 1389 | # |
1371 | # Partition Types | 1390 | # Partition Types |
@@ -1418,6 +1437,10 @@ CONFIG_NLS_ISO8859_15=y | |||
1418 | CONFIG_NLS_UTF8=y | 1437 | CONFIG_NLS_UTF8=y |
1419 | 1438 | ||
1420 | # | 1439 | # |
1440 | # Distributed Lock Manager | ||
1441 | # | ||
1442 | |||
1443 | # | ||
1421 | # Instrumentation Support | 1444 | # Instrumentation Support |
1422 | # | 1445 | # |
1423 | CONFIG_PROFILING=y | 1446 | CONFIG_PROFILING=y |
@@ -1452,11 +1475,13 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1452 | # CONFIG_DEBUG_INFO is not set | 1475 | # CONFIG_DEBUG_INFO is not set |
1453 | # CONFIG_DEBUG_FS is not set | 1476 | # CONFIG_DEBUG_FS is not set |
1454 | # CONFIG_DEBUG_VM is not set | 1477 | # CONFIG_DEBUG_VM is not set |
1478 | # CONFIG_DEBUG_LIST is not set | ||
1455 | # CONFIG_FRAME_POINTER is not set | 1479 | # CONFIG_FRAME_POINTER is not set |
1456 | CONFIG_UNWIND_INFO=y | 1480 | CONFIG_UNWIND_INFO=y |
1457 | CONFIG_STACK_UNWIND=y | 1481 | CONFIG_STACK_UNWIND=y |
1458 | # CONFIG_FORCED_INLINING is not set | 1482 | # CONFIG_FORCED_INLINING is not set |
1459 | # CONFIG_RCU_TORTURE_TEST is not set | 1483 | # CONFIG_RCU_TORTURE_TEST is not set |
1484 | # CONFIG_LKDTM is not set | ||
1460 | CONFIG_EARLY_PRINTK=y | 1485 | CONFIG_EARLY_PRINTK=y |
1461 | CONFIG_DEBUG_STACKOVERFLOW=y | 1486 | CONFIG_DEBUG_STACKOVERFLOW=y |
1462 | # CONFIG_DEBUG_STACK_USAGE is not set | 1487 | # CONFIG_DEBUG_STACK_USAGE is not set |
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index 90faae5c5d30..2fd4b7d927c2 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c | |||
@@ -1193,11 +1193,11 @@ EXPORT_SYMBOL(switch_ipi_to_APIC_timer); | |||
1193 | * value into /proc/profile. | 1193 | * value into /proc/profile. |
1194 | */ | 1194 | */ |
1195 | 1195 | ||
1196 | inline void smp_local_timer_interrupt(struct pt_regs * regs) | 1196 | inline void smp_local_timer_interrupt(void) |
1197 | { | 1197 | { |
1198 | profile_tick(CPU_PROFILING, regs); | 1198 | profile_tick(CPU_PROFILING); |
1199 | #ifdef CONFIG_SMP | 1199 | #ifdef CONFIG_SMP |
1200 | update_process_times(user_mode_vm(regs)); | 1200 | update_process_times(user_mode_vm(get_irq_regs())); |
1201 | #endif | 1201 | #endif |
1202 | 1202 | ||
1203 | /* | 1203 | /* |
@@ -1223,6 +1223,7 @@ inline void smp_local_timer_interrupt(struct pt_regs * regs) | |||
1223 | 1223 | ||
1224 | fastcall void smp_apic_timer_interrupt(struct pt_regs *regs) | 1224 | fastcall void smp_apic_timer_interrupt(struct pt_regs *regs) |
1225 | { | 1225 | { |
1226 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
1226 | int cpu = smp_processor_id(); | 1227 | int cpu = smp_processor_id(); |
1227 | 1228 | ||
1228 | /* | 1229 | /* |
@@ -1241,12 +1242,13 @@ fastcall void smp_apic_timer_interrupt(struct pt_regs *regs) | |||
1241 | * interrupt lock, which is the WrongThing (tm) to do. | 1242 | * interrupt lock, which is the WrongThing (tm) to do. |
1242 | */ | 1243 | */ |
1243 | irq_enter(); | 1244 | irq_enter(); |
1244 | smp_local_timer_interrupt(regs); | 1245 | smp_local_timer_interrupt(); |
1245 | irq_exit(); | 1246 | irq_exit(); |
1247 | set_irq_regs(old_regs); | ||
1246 | } | 1248 | } |
1247 | 1249 | ||
1248 | #ifndef CONFIG_SMP | 1250 | #ifndef CONFIG_SMP |
1249 | static void up_apic_timer_interrupt_call(struct pt_regs *regs) | 1251 | static void up_apic_timer_interrupt_call(void) |
1250 | { | 1252 | { |
1251 | int cpu = smp_processor_id(); | 1253 | int cpu = smp_processor_id(); |
1252 | 1254 | ||
@@ -1255,11 +1257,11 @@ static void up_apic_timer_interrupt_call(struct pt_regs *regs) | |||
1255 | */ | 1257 | */ |
1256 | per_cpu(irq_stat, cpu).apic_timer_irqs++; | 1258 | per_cpu(irq_stat, cpu).apic_timer_irqs++; |
1257 | 1259 | ||
1258 | smp_local_timer_interrupt(regs); | 1260 | smp_local_timer_interrupt(); |
1259 | } | 1261 | } |
1260 | #endif | 1262 | #endif |
1261 | 1263 | ||
1262 | void smp_send_timer_broadcast_ipi(struct pt_regs *regs) | 1264 | void smp_send_timer_broadcast_ipi(void) |
1263 | { | 1265 | { |
1264 | cpumask_t mask; | 1266 | cpumask_t mask; |
1265 | 1267 | ||
@@ -1272,7 +1274,7 @@ void smp_send_timer_broadcast_ipi(struct pt_regs *regs) | |||
1272 | * We can directly call the apic timer interrupt handler | 1274 | * We can directly call the apic timer interrupt handler |
1273 | * in UP case. Minus all irq related functions | 1275 | * in UP case. Minus all irq related functions |
1274 | */ | 1276 | */ |
1275 | up_apic_timer_interrupt_call(regs); | 1277 | up_apic_timer_interrupt_call(); |
1276 | #endif | 1278 | #endif |
1277 | } | 1279 | } |
1278 | } | 1280 | } |
diff --git a/arch/i386/kernel/i8259.c b/arch/i386/kernel/i8259.c index d07ed31f11e3..d53eafb6daa7 100644 --- a/arch/i386/kernel/i8259.c +++ b/arch/i386/kernel/i8259.c | |||
@@ -335,13 +335,13 @@ void init_8259A(int auto_eoi) | |||
335 | */ | 335 | */ |
336 | 336 | ||
337 | 337 | ||
338 | static irqreturn_t math_error_irq(int cpl, void *dev_id, struct pt_regs *regs) | 338 | static irqreturn_t math_error_irq(int cpl, void *dev_id) |
339 | { | 339 | { |
340 | extern void math_error(void __user *); | 340 | extern void math_error(void __user *); |
341 | outb(0,0xF0); | 341 | outb(0,0xF0); |
342 | if (ignore_fpu_irq || !boot_cpu_data.hard_math) | 342 | if (ignore_fpu_irq || !boot_cpu_data.hard_math) |
343 | return IRQ_NONE; | 343 | return IRQ_NONE; |
344 | math_error((void __user *)regs->eip); | 344 | math_error((void __user *)get_irq_regs()->eip); |
345 | return IRQ_HANDLED; | 345 | return IRQ_HANDLED; |
346 | } | 346 | } |
347 | 347 | ||
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c index b7287fb499f3..cd082c36ca03 100644 --- a/arch/i386/kernel/io_apic.c +++ b/arch/i386/kernel/io_apic.c | |||
@@ -1184,8 +1184,8 @@ static int __assign_irq_vector(int irq) | |||
1184 | 1184 | ||
1185 | BUG_ON((unsigned)irq >= NR_IRQ_VECTORS); | 1185 | BUG_ON((unsigned)irq >= NR_IRQ_VECTORS); |
1186 | 1186 | ||
1187 | if (IO_APIC_VECTOR(irq) > 0) | 1187 | if (irq_vector[irq] > 0) |
1188 | return IO_APIC_VECTOR(irq); | 1188 | return irq_vector[irq]; |
1189 | 1189 | ||
1190 | current_vector += 8; | 1190 | current_vector += 8; |
1191 | if (current_vector == SYSCALL_VECTOR) | 1191 | if (current_vector == SYSCALL_VECTOR) |
@@ -1199,7 +1199,7 @@ static int __assign_irq_vector(int irq) | |||
1199 | } | 1199 | } |
1200 | 1200 | ||
1201 | vector = current_vector; | 1201 | vector = current_vector; |
1202 | IO_APIC_VECTOR(irq) = vector; | 1202 | irq_vector[irq] = vector; |
1203 | 1203 | ||
1204 | return vector; | 1204 | return vector; |
1205 | } | 1205 | } |
@@ -1967,7 +1967,7 @@ static void ack_ioapic_quirk_irq(unsigned int irq) | |||
1967 | * operation to prevent an edge-triggered interrupt escaping meanwhile. | 1967 | * operation to prevent an edge-triggered interrupt escaping meanwhile. |
1968 | * The idea is from Manfred Spraul. --macro | 1968 | * The idea is from Manfred Spraul. --macro |
1969 | */ | 1969 | */ |
1970 | i = IO_APIC_VECTOR(irq); | 1970 | i = irq_vector[irq]; |
1971 | 1971 | ||
1972 | v = apic_read(APIC_TMR + ((i & ~0x1f) >> 1)); | 1972 | v = apic_read(APIC_TMR + ((i & ~0x1f) >> 1)); |
1973 | 1973 | ||
@@ -1984,7 +1984,7 @@ static void ack_ioapic_quirk_irq(unsigned int irq) | |||
1984 | 1984 | ||
1985 | static int ioapic_retrigger_irq(unsigned int irq) | 1985 | static int ioapic_retrigger_irq(unsigned int irq) |
1986 | { | 1986 | { |
1987 | send_IPI_self(IO_APIC_VECTOR(irq)); | 1987 | send_IPI_self(irq_vector[irq]); |
1988 | 1988 | ||
1989 | return 1; | 1989 | return 1; |
1990 | } | 1990 | } |
@@ -2020,7 +2020,7 @@ static inline void init_IO_APIC_traps(void) | |||
2020 | */ | 2020 | */ |
2021 | for (irq = 0; irq < NR_IRQS ; irq++) { | 2021 | for (irq = 0; irq < NR_IRQS ; irq++) { |
2022 | int tmp = irq; | 2022 | int tmp = irq; |
2023 | if (IO_APIC_IRQ(tmp) && !IO_APIC_VECTOR(tmp)) { | 2023 | if (IO_APIC_IRQ(tmp) && !irq_vector[tmp]) { |
2024 | /* | 2024 | /* |
2025 | * Hmm.. We don't have an entry for this, | 2025 | * Hmm.. We don't have an entry for this, |
2026 | * so default to an old-fashioned 8259 | 2026 | * so default to an old-fashioned 8259 |
diff --git a/arch/i386/kernel/irq.c b/arch/i386/kernel/irq.c index 3dd2e180151b..8cfc7dbec7b9 100644 --- a/arch/i386/kernel/irq.c +++ b/arch/i386/kernel/irq.c | |||
@@ -53,6 +53,7 @@ static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly; | |||
53 | */ | 53 | */ |
54 | fastcall unsigned int do_IRQ(struct pt_regs *regs) | 54 | fastcall unsigned int do_IRQ(struct pt_regs *regs) |
55 | { | 55 | { |
56 | struct pt_regs *old_regs; | ||
56 | /* high bit used in ret_from_ code */ | 57 | /* high bit used in ret_from_ code */ |
57 | int irq = ~regs->orig_eax; | 58 | int irq = ~regs->orig_eax; |
58 | struct irq_desc *desc = irq_desc + irq; | 59 | struct irq_desc *desc = irq_desc + irq; |
@@ -67,6 +68,7 @@ fastcall unsigned int do_IRQ(struct pt_regs *regs) | |||
67 | BUG(); | 68 | BUG(); |
68 | } | 69 | } |
69 | 70 | ||
71 | old_regs = set_irq_regs(regs); | ||
70 | irq_enter(); | 72 | irq_enter(); |
71 | #ifdef CONFIG_DEBUG_STACKOVERFLOW | 73 | #ifdef CONFIG_DEBUG_STACKOVERFLOW |
72 | /* Debugging check for stack overflow: is there less than 1KB free? */ | 74 | /* Debugging check for stack overflow: is there less than 1KB free? */ |
@@ -95,7 +97,7 @@ fastcall unsigned int do_IRQ(struct pt_regs *regs) | |||
95 | * current stack (which is the irq stack already after all) | 97 | * current stack (which is the irq stack already after all) |
96 | */ | 98 | */ |
97 | if (curctx != irqctx) { | 99 | if (curctx != irqctx) { |
98 | int arg1, arg2, arg3, ebx; | 100 | int arg1, arg2, ebx; |
99 | 101 | ||
100 | /* build the stack frame on the IRQ stack */ | 102 | /* build the stack frame on the IRQ stack */ |
101 | isp = (u32*) ((char*)irqctx + sizeof(*irqctx)); | 103 | isp = (u32*) ((char*)irqctx + sizeof(*irqctx)); |
@@ -114,17 +116,17 @@ fastcall unsigned int do_IRQ(struct pt_regs *regs) | |||
114 | " xchgl %%ebx,%%esp \n" | 116 | " xchgl %%ebx,%%esp \n" |
115 | " call *%%edi \n" | 117 | " call *%%edi \n" |
116 | " movl %%ebx,%%esp \n" | 118 | " movl %%ebx,%%esp \n" |
117 | : "=a" (arg1), "=d" (arg2), "=c" (arg3), "=b" (ebx) | 119 | : "=a" (arg1), "=d" (arg2), "=b" (ebx) |
118 | : "0" (irq), "1" (desc), "2" (regs), "3" (isp), | 120 | : "0" (irq), "1" (desc), "2" (isp), |
119 | "D" (desc->handle_irq) | 121 | "D" (desc->handle_irq) |
120 | : "memory", "cc" | 122 | : "memory", "cc" |
121 | ); | 123 | ); |
122 | } else | 124 | } else |
123 | #endif | 125 | #endif |
124 | desc->handle_irq(irq, desc, regs); | 126 | desc->handle_irq(irq, desc); |
125 | 127 | ||
126 | irq_exit(); | 128 | irq_exit(); |
127 | 129 | set_irq_regs(old_regs); | |
128 | return 1; | 130 | return 1; |
129 | } | 131 | } |
130 | 132 | ||
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index dad02a960e03..b0a07801d9df 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c | |||
@@ -328,6 +328,7 @@ extern void kernel_thread_helper(void); | |||
328 | int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) | 328 | int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) |
329 | { | 329 | { |
330 | struct pt_regs regs; | 330 | struct pt_regs regs; |
331 | int err; | ||
331 | 332 | ||
332 | memset(®s, 0, sizeof(regs)); | 333 | memset(®s, 0, sizeof(regs)); |
333 | 334 | ||
@@ -342,7 +343,10 @@ int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) | |||
342 | regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2; | 343 | regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2; |
343 | 344 | ||
344 | /* Ok, create the new process.. */ | 345 | /* Ok, create the new process.. */ |
345 | return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, ®s, 0, NULL, NULL); | 346 | err = do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, ®s, 0, NULL, NULL); |
347 | if (err == 0) /* terminate kernel stack */ | ||
348 | task_pt_regs(current)->eip = 0; | ||
349 | return err; | ||
346 | } | 350 | } |
347 | EXPORT_SYMBOL(kernel_thread); | 351 | EXPORT_SYMBOL(kernel_thread); |
348 | 352 | ||
diff --git a/arch/i386/kernel/smp.c b/arch/i386/kernel/smp.c index 1b080ab8a49f..31e5c6573aae 100644 --- a/arch/i386/kernel/smp.c +++ b/arch/i386/kernel/smp.c | |||
@@ -321,6 +321,7 @@ static inline void leave_mm (unsigned long cpu) | |||
321 | 321 | ||
322 | fastcall void smp_invalidate_interrupt(struct pt_regs *regs) | 322 | fastcall void smp_invalidate_interrupt(struct pt_regs *regs) |
323 | { | 323 | { |
324 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
324 | unsigned long cpu; | 325 | unsigned long cpu; |
325 | 326 | ||
326 | cpu = get_cpu(); | 327 | cpu = get_cpu(); |
@@ -351,6 +352,7 @@ fastcall void smp_invalidate_interrupt(struct pt_regs *regs) | |||
351 | smp_mb__after_clear_bit(); | 352 | smp_mb__after_clear_bit(); |
352 | out: | 353 | out: |
353 | put_cpu_no_resched(); | 354 | put_cpu_no_resched(); |
355 | set_irq_regs(old_regs); | ||
354 | } | 356 | } |
355 | 357 | ||
356 | static void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm, | 358 | static void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm, |
@@ -605,11 +607,14 @@ void smp_send_stop(void) | |||
605 | */ | 607 | */ |
606 | fastcall void smp_reschedule_interrupt(struct pt_regs *regs) | 608 | fastcall void smp_reschedule_interrupt(struct pt_regs *regs) |
607 | { | 609 | { |
610 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
608 | ack_APIC_irq(); | 611 | ack_APIC_irq(); |
612 | set_irq_regs(old_regs); | ||
609 | } | 613 | } |
610 | 614 | ||
611 | fastcall void smp_call_function_interrupt(struct pt_regs *regs) | 615 | fastcall void smp_call_function_interrupt(struct pt_regs *regs) |
612 | { | 616 | { |
617 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
613 | void (*func) (void *info) = call_data->func; | 618 | void (*func) (void *info) = call_data->func; |
614 | void *info = call_data->info; | 619 | void *info = call_data->info; |
615 | int wait = call_data->wait; | 620 | int wait = call_data->wait; |
@@ -632,6 +637,7 @@ fastcall void smp_call_function_interrupt(struct pt_regs *regs) | |||
632 | mb(); | 637 | mb(); |
633 | atomic_inc(&call_data->finished); | 638 | atomic_inc(&call_data->finished); |
634 | } | 639 | } |
640 | set_irq_regs(old_regs); | ||
635 | } | 641 | } |
636 | 642 | ||
637 | /* | 643 | /* |
diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c index 58a2d5582419..78af572fd17c 100644 --- a/arch/i386/kernel/time.c +++ b/arch/i386/kernel/time.c | |||
@@ -161,7 +161,7 @@ EXPORT_SYMBOL(profile_pc); | |||
161 | * Time Stamp Counter value at the time of the timer interrupt, so that | 161 | * Time Stamp Counter value at the time of the timer interrupt, so that |
162 | * we later on can estimate the time of day more exactly. | 162 | * we later on can estimate the time of day more exactly. |
163 | */ | 163 | */ |
164 | irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 164 | irqreturn_t timer_interrupt(int irq, void *dev_id) |
165 | { | 165 | { |
166 | /* | 166 | /* |
167 | * Here we are in the timer irq handler. We just have irqs locally | 167 | * Here we are in the timer irq handler. We just have irqs locally |
@@ -188,7 +188,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
188 | } | 188 | } |
189 | #endif | 189 | #endif |
190 | 190 | ||
191 | do_timer_interrupt_hook(regs); | 191 | do_timer_interrupt_hook(); |
192 | 192 | ||
193 | 193 | ||
194 | if (MCA_bus) { | 194 | if (MCA_bus) { |
@@ -201,15 +201,15 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
201 | high bit of the PPI port B (0x61). Note that some PS/2s, | 201 | high bit of the PPI port B (0x61). Note that some PS/2s, |
202 | notably the 55SX, work fine if this is removed. */ | 202 | notably the 55SX, work fine if this is removed. */ |
203 | 203 | ||
204 | irq = inb_p( 0x61 ); /* read the current state */ | 204 | u8 irq_v = inb_p( 0x61 ); /* read the current state */ |
205 | outb_p( irq|0x80, 0x61 ); /* reset the IRQ */ | 205 | outb_p( irq_v|0x80, 0x61 ); /* reset the IRQ */ |
206 | } | 206 | } |
207 | 207 | ||
208 | write_sequnlock(&xtime_lock); | 208 | write_sequnlock(&xtime_lock); |
209 | 209 | ||
210 | #ifdef CONFIG_X86_LOCAL_APIC | 210 | #ifdef CONFIG_X86_LOCAL_APIC |
211 | if (using_apic_timer) | 211 | if (using_apic_timer) |
212 | smp_send_timer_broadcast_ipi(regs); | 212 | smp_send_timer_broadcast_ipi(); |
213 | #endif | 213 | #endif |
214 | 214 | ||
215 | return IRQ_HANDLED; | 215 | return IRQ_HANDLED; |
diff --git a/arch/i386/kernel/time_hpet.c b/arch/i386/kernel/time_hpet.c index 6bf14a4e995e..1a2a979cf6a3 100644 --- a/arch/i386/kernel/time_hpet.c +++ b/arch/i386/kernel/time_hpet.c | |||
@@ -441,7 +441,7 @@ int hpet_rtc_dropped_irq(void) | |||
441 | return 1; | 441 | return 1; |
442 | } | 442 | } |
443 | 443 | ||
444 | irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 444 | irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id) |
445 | { | 445 | { |
446 | struct rtc_time curr_time; | 446 | struct rtc_time curr_time; |
447 | unsigned long rtc_int_flag = 0; | 447 | unsigned long rtc_int_flag = 0; |
@@ -480,7 +480,7 @@ irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
480 | } | 480 | } |
481 | if (call_rtc_interrupt) { | 481 | if (call_rtc_interrupt) { |
482 | rtc_int_flag |= (RTC_IRQF | (RTC_NUM_INTS << 8)); | 482 | rtc_int_flag |= (RTC_IRQF | (RTC_NUM_INTS << 8)); |
483 | rtc_interrupt(rtc_int_flag, dev_id, regs); | 483 | rtc_interrupt(rtc_int_flag, dev_id); |
484 | } | 484 | } |
485 | return IRQ_HANDLED; | 485 | return IRQ_HANDLED; |
486 | } | 486 | } |
diff --git a/arch/i386/kernel/vm86.c b/arch/i386/kernel/vm86.c index 8355d8d87d18..cbcd61d6120b 100644 --- a/arch/i386/kernel/vm86.c +++ b/arch/i386/kernel/vm86.c | |||
@@ -714,7 +714,7 @@ static int irqbits; | |||
714 | | (1 << SIGUSR1) | (1 << SIGUSR2) | (1 << SIGIO) | (1 << SIGURG) \ | 714 | | (1 << SIGUSR1) | (1 << SIGUSR2) | (1 << SIGIO) | (1 << SIGURG) \ |
715 | | (1 << SIGUNUSED) ) | 715 | | (1 << SIGUNUSED) ) |
716 | 716 | ||
717 | static irqreturn_t irq_handler(int intno, void *dev_id, struct pt_regs * regs) | 717 | static irqreturn_t irq_handler(int intno, void *dev_id) |
718 | { | 718 | { |
719 | int irq_bit; | 719 | int irq_bit; |
720 | unsigned long flags; | 720 | unsigned long flags; |
diff --git a/arch/i386/lib/semaphore.S b/arch/i386/lib/semaphore.S index ef6ad9e1a609..c01eb39c0b43 100644 --- a/arch/i386/lib/semaphore.S +++ b/arch/i386/lib/semaphore.S | |||
@@ -152,6 +152,8 @@ ENTRY(__read_lock_failed) | |||
152 | 152 | ||
153 | #endif | 153 | #endif |
154 | 154 | ||
155 | #ifdef CONFIG_RWSEM_XCHGADD_ALGORITHM | ||
156 | |||
155 | /* Fix up special calling conventions */ | 157 | /* Fix up special calling conventions */ |
156 | ENTRY(call_rwsem_down_read_failed) | 158 | ENTRY(call_rwsem_down_read_failed) |
157 | CFI_STARTPROC | 159 | CFI_STARTPROC |
@@ -214,3 +216,4 @@ ENTRY(call_rwsem_downgrade_wake) | |||
214 | CFI_ENDPROC | 216 | CFI_ENDPROC |
215 | END(call_rwsem_downgrade_wake) | 217 | END(call_rwsem_downgrade_wake) |
216 | 218 | ||
219 | #endif | ||
diff --git a/arch/i386/mach-visws/visws_apic.c b/arch/i386/mach-visws/visws_apic.c index 5929f884d79b..07097ed48890 100644 --- a/arch/i386/mach-visws/visws_apic.c +++ b/arch/i386/mach-visws/visws_apic.c | |||
@@ -191,7 +191,7 @@ static struct hw_interrupt_type piix4_virtual_irq_type = { | |||
191 | * enable_irq gets the right irq. This 'master' irq is never directly | 191 | * enable_irq gets the right irq. This 'master' irq is never directly |
192 | * manipulated by any driver. | 192 | * manipulated by any driver. |
193 | */ | 193 | */ |
194 | static irqreturn_t piix4_master_intr(int irq, void *dev_id, struct pt_regs * regs) | 194 | static irqreturn_t piix4_master_intr(int irq, void *dev_id) |
195 | { | 195 | { |
196 | int realirq; | 196 | int realirq; |
197 | irq_desc_t *desc; | 197 | irq_desc_t *desc; |
@@ -244,7 +244,7 @@ static irqreturn_t piix4_master_intr(int irq, void *dev_id, struct pt_regs * reg | |||
244 | kstat_cpu(smp_processor_id()).irqs[realirq]++; | 244 | kstat_cpu(smp_processor_id()).irqs[realirq]++; |
245 | 245 | ||
246 | if (likely(desc->action != NULL)) | 246 | if (likely(desc->action != NULL)) |
247 | handle_IRQ_event(realirq, regs, desc->action); | 247 | handle_IRQ_event(realirq, desc->action); |
248 | 248 | ||
249 | if (!(desc->status & IRQ_DISABLED)) | 249 | if (!(desc->status & IRQ_DISABLED)) |
250 | enable_8259A_irq(realirq); | 250 | enable_8259A_irq(realirq); |
diff --git a/arch/i386/mach-voyager/voyager_basic.c b/arch/i386/mach-voyager/voyager_basic.c index 80b7f2fc4f46..c639d30d8bdc 100644 --- a/arch/i386/mach-voyager/voyager_basic.c +++ b/arch/i386/mach-voyager/voyager_basic.c | |||
@@ -87,7 +87,7 @@ voyager_detect(struct voyager_bios_info *bios) | |||
87 | } | 87 | } |
88 | 88 | ||
89 | void | 89 | void |
90 | voyager_system_interrupt(int cpl, void *dev_id, struct pt_regs *regs) | 90 | voyager_system_interrupt(int cpl, void *dev_id) |
91 | { | 91 | { |
92 | printk("Voyager: detected system interrupt\n"); | 92 | printk("Voyager: detected system interrupt\n"); |
93 | } | 93 | } |
diff --git a/arch/i386/mach-voyager/voyager_smp.c b/arch/i386/mach-voyager/voyager_smp.c index 856c73fcb7e7..d42422fc4af3 100644 --- a/arch/i386/mach-voyager/voyager_smp.c +++ b/arch/i386/mach-voyager/voyager_smp.c | |||
@@ -126,10 +126,10 @@ send_QIC_CPI(__u32 cpuset, __u8 cpi) | |||
126 | } | 126 | } |
127 | 127 | ||
128 | static inline void | 128 | static inline void |
129 | wrapper_smp_local_timer_interrupt(struct pt_regs *regs) | 129 | wrapper_smp_local_timer_interrupt(void) |
130 | { | 130 | { |
131 | irq_enter(); | 131 | irq_enter(); |
132 | smp_local_timer_interrupt(regs); | 132 | smp_local_timer_interrupt(); |
133 | irq_exit(); | 133 | irq_exit(); |
134 | } | 134 | } |
135 | 135 | ||
@@ -786,7 +786,7 @@ fastcall void | |||
786 | smp_vic_sys_interrupt(struct pt_regs *regs) | 786 | smp_vic_sys_interrupt(struct pt_regs *regs) |
787 | { | 787 | { |
788 | ack_CPI(VIC_SYS_INT); | 788 | ack_CPI(VIC_SYS_INT); |
789 | printk("Voyager SYSTEM INTERRUPT\n"); | 789 | printk("Voyager SYSTEM INTERRUPT\n"); |
790 | } | 790 | } |
791 | 791 | ||
792 | /* Handle a voyager CMN_INT; These interrupts occur either because of | 792 | /* Handle a voyager CMN_INT; These interrupts occur either because of |
@@ -1135,7 +1135,9 @@ EXPORT_SYMBOL(smp_call_function); | |||
1135 | fastcall void | 1135 | fastcall void |
1136 | smp_apic_timer_interrupt(struct pt_regs *regs) | 1136 | smp_apic_timer_interrupt(struct pt_regs *regs) |
1137 | { | 1137 | { |
1138 | wrapper_smp_local_timer_interrupt(regs); | 1138 | struct pt_regs *old_regs = set_irq_regs(regs); |
1139 | wrapper_smp_local_timer_interrupt(); | ||
1140 | set_irq_regs(old_regs); | ||
1139 | } | 1141 | } |
1140 | 1142 | ||
1141 | /* All of the QUAD interrupt GATES */ | 1143 | /* All of the QUAD interrupt GATES */ |
@@ -1143,7 +1145,9 @@ fastcall void | |||
1143 | smp_qic_timer_interrupt(struct pt_regs *regs) | 1145 | smp_qic_timer_interrupt(struct pt_regs *regs) |
1144 | { | 1146 | { |
1145 | ack_QIC_CPI(QIC_TIMER_CPI); | 1147 | ack_QIC_CPI(QIC_TIMER_CPI); |
1146 | wrapper_smp_local_timer_interrupt(regs); | 1148 | struct pt_regs *old_regs = set_irq_regs(regs); |
1149 | wrapper_smp_local_timer_interrupt(void); | ||
1150 | set_irq_regs(old_regs); | ||
1147 | } | 1151 | } |
1148 | 1152 | ||
1149 | fastcall void | 1153 | fastcall void |
@@ -1177,6 +1181,7 @@ smp_qic_call_function_interrupt(struct pt_regs *regs) | |||
1177 | fastcall void | 1181 | fastcall void |
1178 | smp_vic_cpi_interrupt(struct pt_regs *regs) | 1182 | smp_vic_cpi_interrupt(struct pt_regs *regs) |
1179 | { | 1183 | { |
1184 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
1180 | __u8 cpu = smp_processor_id(); | 1185 | __u8 cpu = smp_processor_id(); |
1181 | 1186 | ||
1182 | if(is_cpu_quad()) | 1187 | if(is_cpu_quad()) |
@@ -1185,7 +1190,7 @@ smp_vic_cpi_interrupt(struct pt_regs *regs) | |||
1185 | ack_VIC_CPI(VIC_CPI_LEVEL0); | 1190 | ack_VIC_CPI(VIC_CPI_LEVEL0); |
1186 | 1191 | ||
1187 | if(test_and_clear_bit(VIC_TIMER_CPI, &vic_cpi_mailbox[cpu])) | 1192 | if(test_and_clear_bit(VIC_TIMER_CPI, &vic_cpi_mailbox[cpu])) |
1188 | wrapper_smp_local_timer_interrupt(regs); | 1193 | wrapper_smp_local_timer_interrupt(); |
1189 | if(test_and_clear_bit(VIC_INVALIDATE_CPI, &vic_cpi_mailbox[cpu])) | 1194 | if(test_and_clear_bit(VIC_INVALIDATE_CPI, &vic_cpi_mailbox[cpu])) |
1190 | smp_invalidate_interrupt(); | 1195 | smp_invalidate_interrupt(); |
1191 | if(test_and_clear_bit(VIC_RESCHEDULE_CPI, &vic_cpi_mailbox[cpu])) | 1196 | if(test_and_clear_bit(VIC_RESCHEDULE_CPI, &vic_cpi_mailbox[cpu])) |
@@ -1194,6 +1199,7 @@ smp_vic_cpi_interrupt(struct pt_regs *regs) | |||
1194 | smp_enable_irq_interrupt(); | 1199 | smp_enable_irq_interrupt(); |
1195 | if(test_and_clear_bit(VIC_CALL_FUNCTION_CPI, &vic_cpi_mailbox[cpu])) | 1200 | if(test_and_clear_bit(VIC_CALL_FUNCTION_CPI, &vic_cpi_mailbox[cpu])) |
1196 | smp_call_function_interrupt(); | 1201 | smp_call_function_interrupt(); |
1202 | set_irq_regs(old_regs); | ||
1197 | } | 1203 | } |
1198 | 1204 | ||
1199 | static void | 1205 | static void |
@@ -1266,8 +1272,10 @@ smp_send_stop(void) | |||
1266 | void | 1272 | void |
1267 | smp_vic_timer_interrupt(struct pt_regs *regs) | 1273 | smp_vic_timer_interrupt(struct pt_regs *regs) |
1268 | { | 1274 | { |
1275 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
1269 | send_CPI_allbutself(VIC_TIMER_CPI); | 1276 | send_CPI_allbutself(VIC_TIMER_CPI); |
1270 | smp_local_timer_interrupt(regs); | 1277 | smp_local_timer_interrupt(); |
1278 | set_irq_regs(old_regs); | ||
1271 | } | 1279 | } |
1272 | 1280 | ||
1273 | /* local (per CPU) timer interrupt. It does both profiling and | 1281 | /* local (per CPU) timer interrupt. It does both profiling and |
@@ -1279,12 +1287,12 @@ smp_vic_timer_interrupt(struct pt_regs *regs) | |||
1279 | * value into /proc/profile. | 1287 | * value into /proc/profile. |
1280 | */ | 1288 | */ |
1281 | void | 1289 | void |
1282 | smp_local_timer_interrupt(struct pt_regs * regs) | 1290 | smp_local_timer_interrupt(void) |
1283 | { | 1291 | { |
1284 | int cpu = smp_processor_id(); | 1292 | int cpu = smp_processor_id(); |
1285 | long weight; | 1293 | long weight; |
1286 | 1294 | ||
1287 | profile_tick(CPU_PROFILING, regs); | 1295 | profile_tick(CPU_PROFILING); |
1288 | if (--per_cpu(prof_counter, cpu) <= 0) { | 1296 | if (--per_cpu(prof_counter, cpu) <= 0) { |
1289 | /* | 1297 | /* |
1290 | * The multiplier may have changed since the last time we got | 1298 | * The multiplier may have changed since the last time we got |
@@ -1302,7 +1310,7 @@ smp_local_timer_interrupt(struct pt_regs * regs) | |||
1302 | per_cpu(prof_counter, cpu); | 1310 | per_cpu(prof_counter, cpu); |
1303 | } | 1311 | } |
1304 | 1312 | ||
1305 | update_process_times(user_mode_vm(regs)); | 1313 | update_process_times(user_mode_vm(irq_regs)); |
1306 | } | 1314 | } |
1307 | 1315 | ||
1308 | if( ((1<<cpu) & voyager_extended_vic_processors) == 0) | 1316 | if( ((1<<cpu) & voyager_extended_vic_processors) == 0) |
diff --git a/arch/i386/pci/direct.c b/arch/i386/pci/direct.c index 5acf0b4743cf..431c9a51b157 100644 --- a/arch/i386/pci/direct.c +++ b/arch/i386/pci/direct.c | |||
@@ -256,6 +256,8 @@ static int __init pci_check_type2(void) | |||
256 | 256 | ||
257 | void __init pci_direct_init(int type) | 257 | void __init pci_direct_init(int type) |
258 | { | 258 | { |
259 | if (type == 0) | ||
260 | return; | ||
259 | printk(KERN_INFO "PCI: Using configuration type %d\n", type); | 261 | printk(KERN_INFO "PCI: Using configuration type %d\n", type); |
260 | if (type == 1) | 262 | if (type == 1) |
261 | raw_pci_ops = &pci_direct_conf1; | 263 | raw_pci_ops = &pci_direct_conf1; |
diff --git a/arch/i386/pci/init.c b/arch/i386/pci/init.c index d028e1b05c36..b21b6da8ab1d 100644 --- a/arch/i386/pci/init.c +++ b/arch/i386/pci/init.c | |||
@@ -28,6 +28,10 @@ static __init int pci_access_init(void) | |||
28 | #ifdef CONFIG_PCI_DIRECT | 28 | #ifdef CONFIG_PCI_DIRECT |
29 | pci_direct_init(type); | 29 | pci_direct_init(type); |
30 | #endif | 30 | #endif |
31 | if (!raw_pci_ops) | ||
32 | printk(KERN_ERR | ||
33 | "PCI: Fatal: No config space access function found\n"); | ||
34 | |||
31 | return 0; | 35 | return 0; |
32 | } | 36 | } |
33 | arch_initcall(pci_access_init); | 37 | arch_initcall(pci_access_init); |
diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c index 47f02af74be3..dbc4aae91959 100644 --- a/arch/i386/pci/irq.c +++ b/arch/i386/pci/irq.c | |||
@@ -1141,10 +1141,6 @@ static int pirq_enable_irq(struct pci_dev *dev) | |||
1141 | } | 1141 | } |
1142 | dev = temp_dev; | 1142 | dev = temp_dev; |
1143 | if (irq >= 0) { | 1143 | if (irq >= 0) { |
1144 | #ifdef CONFIG_PCI_MSI | ||
1145 | if (!platform_legacy_irq(irq)) | ||
1146 | irq = IO_APIC_VECTOR(irq); | ||
1147 | #endif | ||
1148 | printk(KERN_INFO "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n", | 1144 | printk(KERN_INFO "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n", |
1149 | pci_name(dev), 'A' + pin, irq); | 1145 | pci_name(dev), 'A' + pin, irq); |
1150 | dev->irq = irq; | 1146 | dev->irq = irq; |