Commit e03508b4 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6

* 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6:
  [PATCH] i386: fix rwsem build bug on CONFIG_M386=y
  [PATCH] x86-64: Annotate interrupt frame backlink in interrupt handlers
  [PATCH] x86-64: Fix FPU corruption
  [PATCH] x86: Terminate the kernel stacks for the unwinder
  [PATCH] i386: Fix PCI BIOS config space access
  [PATCH] x86-64: Calgary IOMMU: print PCI bus numbers in hex
  [PATCH] x86-64: Calgary IOMMU: Update Jon's contact info
  [PATCH] x86-64: Calgary IOMMU: Fix off by one when calculating register space location
  [PATCH] x86-64: Calgary IOMMU: deobfuscate calgary_init
  [PATCH] i386: Update defconfig
  [PATCH] x86-64: Update defconfig

[ Manually skipped commits that incorrectly ignored AC in kernel space.
  The alignment fault is defined to only happen for CPL3 anyway  - Linus ]
parents d7a297ba 88271e9e
...@@ -641,7 +641,7 @@ CALGARY x86-64 IOMMU ...@@ -641,7 +641,7 @@ CALGARY x86-64 IOMMU
P: Muli Ben-Yehuda P: Muli Ben-Yehuda
M: muli@il.ibm.com M: muli@il.ibm.com
P: Jon D. Mason P: Jon D. Mason
M: jdmason@us.ibm.com M: jdmason@kudzu.us
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
L: discuss@x86-64.org L: discuss@x86-64.org
S: Maintained S: Maintained
......
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.18-git7 # Linux kernel version: 2.6.19-rc1
# Wed Sep 27 21:53:10 2006 # Thu Oct 5 13:04:53 2006
# #
CONFIG_X86_32=y CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y CONFIG_GENERIC_TIME=y
...@@ -31,9 +31,11 @@ CONFIG_LOCALVERSION="" ...@@ -31,9 +31,11 @@ CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y CONFIG_SWAP=y
CONFIG_SYSVIPC=y CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set # CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set # CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y CONFIG_IKCONFIG_PROC=y
...@@ -41,9 +43,10 @@ CONFIG_IKCONFIG_PROC=y ...@@ -41,9 +43,10 @@ CONFIG_IKCONFIG_PROC=y
# CONFIG_RELAY is not set # CONFIG_RELAY is not set
CONFIG_INITRAMFS_SOURCE="" CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set # CONFIG_EMBEDDED is not set
CONFIG_UID16=y CONFIG_UID16=y
CONFIG_SYSCTL=y # CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set
...@@ -76,6 +79,7 @@ CONFIG_STOP_MACHINE=y ...@@ -76,6 +79,7 @@ CONFIG_STOP_MACHINE=y
# #
# Block layer # Block layer
# #
CONFIG_BLOCK=y
CONFIG_LBD=y CONFIG_LBD=y
# CONFIG_BLK_DEV_IO_TRACE is not set # CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_LSF is not set # CONFIG_LSF is not set
...@@ -163,6 +167,7 @@ CONFIG_VM86=y ...@@ -163,6 +167,7 @@ CONFIG_VM86=y
# CONFIG_I8K is not set # CONFIG_I8K is not set
# CONFIG_X86_REBOOTFIXUPS is not set # CONFIG_X86_REBOOTFIXUPS is not set
CONFIG_MICROCODE=y CONFIG_MICROCODE=y
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_X86_MSR=y CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y CONFIG_X86_CPUID=y
...@@ -177,6 +182,7 @@ CONFIG_HIGHMEM4G=y ...@@ -177,6 +182,7 @@ CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set # CONFIG_HIGHMEM64G is not set
CONFIG_PAGE_OFFSET=0xC0000000 CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y CONFIG_HIGHMEM=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set # CONFIG_DISCONTIGMEM_MANUAL is not set
...@@ -295,6 +301,7 @@ CONFIG_PCI_MMCONFIG=y ...@@ -295,6 +301,7 @@ CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_MSI=y CONFIG_PCI_MSI=y
# CONFIG_PCI_MULTITHREAD_PROBE is not set # CONFIG_PCI_MULTITHREAD_PROBE is not set
# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_DEBUG is not set
# CONFIG_HT_IRQ is not set
CONFIG_ISA_DMA_API=y CONFIG_ISA_DMA_API=y
# CONFIG_ISA is not set # CONFIG_ISA is not set
# CONFIG_MCA is not set # CONFIG_MCA is not set
...@@ -354,6 +361,7 @@ CONFIG_IP_PNP_DHCP=y ...@@ -354,6 +361,7 @@ CONFIG_IP_PNP_DHCP=y
# CONFIG_INET_TUNNEL is not set # CONFIG_INET_TUNNEL is not set
CONFIG_INET_XFRM_MODE_TRANSPORT=y CONFIG_INET_XFRM_MODE_TRANSPORT=y
CONFIG_INET_XFRM_MODE_TUNNEL=y CONFIG_INET_XFRM_MODE_TUNNEL=y
# CONFIG_INET_XFRM_MODE_BEET is not set
CONFIG_INET_DIAG=y CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set # CONFIG_TCP_CONG_ADVANCED is not set
...@@ -370,6 +378,7 @@ CONFIG_IPV6=y ...@@ -370,6 +378,7 @@ CONFIG_IPV6=y
# CONFIG_INET6_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set
CONFIG_INET6_XFRM_MODE_TRANSPORT=y CONFIG_INET6_XFRM_MODE_TRANSPORT=y
CONFIG_INET6_XFRM_MODE_TUNNEL=y CONFIG_INET6_XFRM_MODE_TUNNEL=y
# CONFIG_INET6_XFRM_MODE_BEET is not set
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
# CONFIG_IPV6_TUNNEL is not set # CONFIG_IPV6_TUNNEL is not set
# CONFIG_IPV6_SUBTREES is not set # CONFIG_IPV6_SUBTREES is not set
...@@ -519,6 +528,7 @@ CONFIG_BLK_DEV_AMD74XX=y ...@@ -519,6 +528,7 @@ CONFIG_BLK_DEV_AMD74XX=y
# CONFIG_BLK_DEV_CS5535 is not set # CONFIG_BLK_DEV_CS5535 is not set
# CONFIG_BLK_DEV_HPT34X is not set # CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set # CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_JMICRON is not set
# CONFIG_BLK_DEV_SC1200 is not set # CONFIG_BLK_DEV_SC1200 is not set
CONFIG_BLK_DEV_PIIX=y CONFIG_BLK_DEV_PIIX=y
# CONFIG_BLK_DEV_IT821X is not set # CONFIG_BLK_DEV_IT821X is not set
...@@ -615,6 +625,7 @@ CONFIG_AIC79XX_DEBUG_MASK=0 ...@@ -615,6 +625,7 @@ CONFIG_AIC79XX_DEBUG_MASK=0
# CONFIG_SCSI_IPR is not set # CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_QLOGIC_1280 is not set # CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLA_FC is not set # CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_ISCSI is not set
# CONFIG_SCSI_LPFC is not set # CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_DC395x is not set # CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DC390T is not set
...@@ -658,7 +669,6 @@ CONFIG_SATA_INTEL_COMBINED=y ...@@ -658,7 +669,6 @@ CONFIG_SATA_INTEL_COMBINED=y
# CONFIG_PATA_HPT3X3 is not set # CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set # CONFIG_PATA_IT821X is not set
# CONFIG_PATA_JMICRON is not set # CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_LEGACY is not set
# CONFIG_PATA_TRIFLEX is not set # CONFIG_PATA_TRIFLEX is not set
# CONFIG_PATA_MPIIX is not set # CONFIG_PATA_MPIIX is not set
# CONFIG_PATA_OLDPIIX is not set # CONFIG_PATA_OLDPIIX is not set
...@@ -667,7 +677,6 @@ CONFIG_SATA_INTEL_COMBINED=y ...@@ -667,7 +677,6 @@ CONFIG_SATA_INTEL_COMBINED=y
# CONFIG_PATA_OPTI is not set # CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set # CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PDC_OLD is not set # CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_QDI is not set
# CONFIG_PATA_RADISYS is not set # CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RZ1000 is not set # CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_SC1200 is not set # CONFIG_PATA_SC1200 is not set
...@@ -684,6 +693,7 @@ CONFIG_SATA_INTEL_COMBINED=y ...@@ -684,6 +693,7 @@ CONFIG_SATA_INTEL_COMBINED=y
CONFIG_MD=y CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set # CONFIG_BLK_DEV_MD is not set
CONFIG_BLK_DEV_DM=y CONFIG_BLK_DEV_DM=y
# CONFIG_DM_DEBUG is not set
# CONFIG_DM_CRYPT is not set # CONFIG_DM_CRYPT is not set
# CONFIG_DM_SNAPSHOT is not set # CONFIG_DM_SNAPSHOT is not set
# CONFIG_DM_MIRROR is not set # CONFIG_DM_MIRROR is not set
...@@ -874,6 +884,7 @@ CONFIG_NET_POLL_CONTROLLER=y ...@@ -874,6 +884,7 @@ CONFIG_NET_POLL_CONTROLLER=y
# Input device support # Input device support
# #
CONFIG_INPUT=y CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
# #
# Userland interfaces # Userland interfaces
...@@ -896,6 +907,7 @@ CONFIG_KEYBOARD_ATKBD=y ...@@ -896,6 +907,7 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_SERIAL is not set
...@@ -1023,12 +1035,12 @@ CONFIG_HANGCHECK_TIMER=y ...@@ -1023,12 +1035,12 @@ CONFIG_HANGCHECK_TIMER=y
# Misc devices # Misc devices
# #
# CONFIG_IBM_ASM is not set # CONFIG_IBM_ASM is not set
# CONFIG_TIFM_CORE is not set
# #
# Multimedia devices # Multimedia devices
# #
# CONFIG_VIDEO_DEV is not set # CONFIG_VIDEO_DEV is not set
CONFIG_VIDEO_V4L2=y
# #
# Digital Video Broadcasting Devices # Digital Video Broadcasting Devices
...@@ -1134,6 +1146,7 @@ CONFIG_USB_STORAGE=y ...@@ -1134,6 +1146,7 @@ CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_SDDR55 is not set # CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set # CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set # CONFIG_USB_LIBUSUAL is not set
# #
...@@ -1156,6 +1169,7 @@ CONFIG_USB_HIDINPUT=y ...@@ -1156,6 +1169,7 @@ CONFIG_USB_HIDINPUT=y
# CONFIG_USB_ATI_REMOTE2 is not set # CONFIG_USB_ATI_REMOTE2 is not set
# CONFIG_USB_KEYSPAN_REMOTE is not set # CONFIG_USB_KEYSPAN_REMOTE is not set
# CONFIG_USB_APPLETOUCH is not set # CONFIG_USB_APPLETOUCH is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# #
# USB Imaging devices # USB Imaging devices
...@@ -1187,6 +1201,7 @@ CONFIG_USB_MON=y ...@@ -1187,6 +1201,7 @@ CONFIG_USB_MON=y
# #
# CONFIG_USB_EMI62 is not set # CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set # CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_AUERSWALD is not set # CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set # CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LEGOTOWER is not set
...@@ -1194,9 +1209,9 @@ CONFIG_USB_MON=y ...@@ -1194,9 +1209,9 @@ CONFIG_USB_MON=y
# CONFIG_USB_LED is not set # CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set # CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGETKIT is not set # CONFIG_USB_PHIDGET is not set
# CONFIG_USB_PHIDGETSERVO is not set
# CONFIG_USB_IDMOUSE is not set # CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set # CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_SISUSBVGA is not set # CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set # CONFIG_USB_LD is not set
...@@ -1281,6 +1296,7 @@ CONFIG_REISERFS_FS_POSIX_ACL=y ...@@ -1281,6 +1296,7 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
# CONFIG_JFS_FS is not set # CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set # CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set # CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set # CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
...@@ -1315,8 +1331,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" ...@@ -1315,8 +1331,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# #
CONFIG_PROC_FS=y CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y CONFIG_PROC_KCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y CONFIG_SYSFS=y
CONFIG_TMPFS=y CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_HUGETLBFS=y CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y CONFIG_HUGETLB_PAGE=y
CONFIG_RAMFS=y CONFIG_RAMFS=y
...@@ -1366,6 +1384,7 @@ CONFIG_SUNRPC=y ...@@ -1366,6 +1384,7 @@ CONFIG_SUNRPC=y
# CONFIG_CODA_FS is not set # CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set # CONFIG_AFS_FS is not set
# CONFIG_9P_FS is not set # CONFIG_9P_FS is not set
CONFIG_GENERIC_ACL=y
# #
# Partition Types # Partition Types
...@@ -1417,6 +1436,10 @@ CONFIG_NLS_ISO8859_15=y ...@@ -1417,6 +1436,10 @@ CONFIG_NLS_ISO8859_15=y
# CONFIG_NLS_KOI8_U is not set # CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=y CONFIG_NLS_UTF8=y
#
# Distributed Lock Manager
#
# #
# Instrumentation Support # Instrumentation Support
# #
...@@ -1452,11 +1475,13 @@ CONFIG_DEBUG_BUGVERBOSE=y ...@@ -1452,11 +1475,13 @@ CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_FS is not set # CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_FRAME_POINTER is not set # CONFIG_FRAME_POINTER is not set
CONFIG_UNWIND_INFO=y CONFIG_UNWIND_INFO=y
CONFIG_STACK_UNWIND=y CONFIG_STACK_UNWIND=y
# CONFIG_FORCED_INLINING is not set # CONFIG_FORCED_INLINING is not set
# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_LKDTM is not set
CONFIG_EARLY_PRINTK=y CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y CONFIG_DEBUG_STACKOVERFLOW=y
# CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_STACK_USAGE is not set
......
...@@ -328,6 +328,7 @@ extern void kernel_thread_helper(void); ...@@ -328,6 +328,7 @@ extern void kernel_thread_helper(void);
int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{ {
struct pt_regs regs; struct pt_regs regs;
int err;
memset(&regs, 0, sizeof(regs)); memset(&regs, 0, sizeof(regs));
...@@ -342,7 +343,10 @@ int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ...@@ -342,7 +343,10 @@ int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2; regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2;
/* Ok, create the new process.. */ /* Ok, create the new process.. */
return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL); err = do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
if (err == 0) /* terminate kernel stack */
task_pt_regs(current)->eip = 0;
return err;
} }
EXPORT_SYMBOL(kernel_thread); EXPORT_SYMBOL(kernel_thread);
......
...@@ -152,6 +152,8 @@ ENTRY(__read_lock_failed) ...@@ -152,6 +152,8 @@ ENTRY(__read_lock_failed)
#endif #endif
#ifdef CONFIG_RWSEM_XCHGADD_ALGORITHM
/* Fix up special calling conventions */ /* Fix up special calling conventions */
ENTRY(call_rwsem_down_read_failed) ENTRY(call_rwsem_down_read_failed)
CFI_STARTPROC CFI_STARTPROC
...@@ -214,3 +216,4 @@ ENTRY(call_rwsem_downgrade_wake) ...@@ -214,3 +216,4 @@ ENTRY(call_rwsem_downgrade_wake)
CFI_ENDPROC CFI_ENDPROC
END(call_rwsem_downgrade_wake) END(call_rwsem_downgrade_wake)
#endif
...@@ -256,6 +256,8 @@ static int __init pci_check_type2(void) ...@@ -256,6 +256,8 @@ static int __init pci_check_type2(void)
void __init pci_direct_init(int type) void __init pci_direct_init(int type)
{ {
if (type == 0)
return;
printk(KERN_INFO "PCI: Using configuration type %d\n", type); printk(KERN_INFO "PCI: Using configuration type %d\n", type);
if (type == 1) if (type == 1)
raw_pci_ops = &pci_direct_conf1; raw_pci_ops = &pci_direct_conf1;
......
...@@ -28,6 +28,10 @@ static __init int pci_access_init(void) ...@@ -28,6 +28,10 @@ static __init int pci_access_init(void)
#ifdef CONFIG_PCI_DIRECT #ifdef CONFIG_PCI_DIRECT
pci_direct_init(type); pci_direct_init(type);
#endif #endif
if (!raw_pci_ops)
printk(KERN_ERR
"PCI: Fatal: No config space access function found\n");
return 0; return 0;
} }
arch_initcall(pci_access_init); arch_initcall(pci_access_init);
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.18-git7 # Linux kernel version: 2.6.19-rc1
# Wed Sep 27 21:53:10 2006 # Thu Oct 5 13:04:43 2006
# #
CONFIG_X86_64=y CONFIG_X86_64=y
CONFIG_64BIT=y CONFIG_64BIT=y
...@@ -19,6 +19,7 @@ CONFIG_EARLY_PRINTK=y ...@@ -19,6 +19,7 @@ CONFIG_EARLY_PRINTK=y
CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_IOMAP=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_DMI=y CONFIG_DMI=y
CONFIG_AUDIT_ARCH=y CONFIG_AUDIT_ARCH=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
...@@ -37,9 +38,11 @@ CONFIG_LOCALVERSION="" ...@@ -37,9 +38,11 @@ CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y CONFIG_SWAP=y
CONFIG_SYSVIPC=y CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set # CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set # CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y CONFIG_IKCONFIG_PROC=y
...@@ -47,9 +50,10 @@ CONFIG_IKCONFIG_PROC=y ...@@ -47,9 +50,10 @@ CONFIG_IKCONFIG_PROC=y
# CONFIG_RELAY is not set # CONFIG_RELAY is not set
CONFIG_INITRAMFS_SOURCE="" CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set # CONFIG_EMBEDDED is not set
CONFIG_UID16=y CONFIG_UID16=y
CONFIG_SYSCTL=y # CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set
...@@ -82,6 +86,7 @@ CONFIG_STOP_MACHINE=y ...@@ -82,6 +86,7 @@ CONFIG_STOP_MACHINE=y
# #
# Block layer # Block layer
# #
CONFIG_BLOCK=y
CONFIG_LBD=y CONFIG_LBD=y
# CONFIG_BLK_DEV_IO_TRACE is not set # CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_LSF is not set # CONFIG_LSF is not set
...@@ -252,9 +257,11 @@ CONFIG_PCI=y ...@@ -252,9 +257,11 @@ CONFIG_PCI=y
CONFIG_PCI_DIRECT=y CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y CONFIG_PCI_MMCONFIG=y
CONFIG_PCIEPORTBUS=y CONFIG_PCIEPORTBUS=y
CONFIG_PCIEAER=y
CONFIG_PCI_MSI=y CONFIG_PCI_MSI=y
# CONFIG_PCI_MULTITHREAD_PROBE is not set # CONFIG_PCI_MULTITHREAD_PROBE is not set
# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_DEBUG is not set
# CONFIG_HT_IRQ is not set
# #
# PCCARD (PCMCIA/CardBus) support # PCCARD (PCMCIA/CardBus) support
...@@ -309,6 +316,7 @@ CONFIG_IP_PNP_DHCP=y ...@@ -309,6 +316,7 @@ CONFIG_IP_PNP_DHCP=y
# CONFIG_INET_TUNNEL is not set # CONFIG_INET_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set # CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set # CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
CONFIG_INET_DIAG=y CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set # CONFIG_TCP_CONG_ADVANCED is not set
...@@ -325,6 +333,7 @@ CONFIG_IPV6=y ...@@ -325,6 +333,7 @@ CONFIG_IPV6=y
# CONFIG_INET6_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set
# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET6_XFRM_MODE_TUNNEL is not set # CONFIG_INET6_XFRM_MODE_TUNNEL is not set
# CONFIG_INET6_XFRM_MODE_BEET is not set
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
# CONFIG_IPV6_TUNNEL is not set # CONFIG_IPV6_TUNNEL is not set
# CONFIG_IPV6_SUBTREES is not set # CONFIG_IPV6_SUBTREES is not set
...@@ -473,6 +482,7 @@ CONFIG_BLK_DEV_ATIIXP=y ...@@ -473,6 +482,7 @@ CONFIG_BLK_DEV_ATIIXP=y
# CONFIG_BLK_DEV_CS5530 is not set # CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_HPT34X is not set # CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set # CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_JMICRON is not set
# CONFIG_BLK_DEV_SC1200 is not set # CONFIG_BLK_DEV_SC1200 is not set
CONFIG_BLK_DEV_PIIX=y CONFIG_BLK_DEV_PIIX=y
# CONFIG_BLK_DEV_IT821X is not set # CONFIG_BLK_DEV_IT821X is not set
...@@ -564,6 +574,7 @@ CONFIG_MEGARAID_SAS=y ...@@ -564,6 +574,7 @@ CONFIG_MEGARAID_SAS=y
# CONFIG_SCSI_IPR is not set # CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_QLOGIC_1280 is not set # CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLA_FC is not set # CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_ISCSI is not set
# CONFIG_SCSI_LPFC is not set # CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_DC395x is not set # CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DC390T is not set
...@@ -605,7 +616,6 @@ CONFIG_SATA_INTEL_COMBINED=y ...@@ -605,7 +616,6 @@ CONFIG_SATA_INTEL_COMBINED=y
# CONFIG_PATA_HPT3X3 is not set # CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set # CONFIG_PATA_IT821X is not set
# CONFIG_PATA_JMICRON is not set # CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_LEGACY is not set
# CONFIG_PATA_TRIFLEX is not set # CONFIG_PATA_TRIFLEX is not set
# CONFIG_PATA_MPIIX is not set # CONFIG_PATA_MPIIX is not set
# CONFIG_PATA_OLDPIIX is not set # CONFIG_PATA_OLDPIIX is not set
...@@ -614,7 +624,6 @@ CONFIG_SATA_INTEL_COMBINED=y ...@@ -614,7 +624,6 @@ CONFIG_SATA_INTEL_COMBINED=y
# CONFIG_PATA_OPTI is not set # CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set # CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PDC_OLD is not set # CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_QDI is not set
# CONFIG_PATA_RADISYS is not set # CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RZ1000 is not set # CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_SC1200 is not set # CONFIG_PATA_SC1200 is not set
...@@ -631,6 +640,7 @@ CONFIG_SATA_INTEL_COMBINED=y ...@@ -631,6 +640,7 @@ CONFIG_SATA_INTEL_COMBINED=y
CONFIG_MD=y CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set # CONFIG_BLK_DEV_MD is not set
CONFIG_BLK_DEV_DM=y CONFIG_BLK_DEV_DM=y
# CONFIG_DM_DEBUG is not set
# CONFIG_DM_CRYPT is not set # CONFIG_DM_CRYPT is not set
# CONFIG_DM_SNAPSHOT is not set # CONFIG_DM_SNAPSHOT is not set
# CONFIG_DM_MIRROR is not set # CONFIG_DM_MIRROR is not set
...@@ -819,6 +829,7 @@ CONFIG_NET_POLL_CONTROLLER=y ...@@ -819,6 +829,7 @@ CONFIG_NET_POLL_CONTROLLER=y
# Input device support # Input device support
# #
CONFIG_INPUT=y CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
# #
# Userland interfaces # Userland interfaces
...@@ -841,6 +852,7 @@ CONFIG_KEYBOARD_ATKBD=y ...@@ -841,6 +852,7 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_SERIAL is not set
...@@ -1008,6 +1020,7 @@ CONFIG_HWMON=y ...@@ -1008,6 +1020,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_ADM1026 is not set # CONFIG_SENSORS_ADM1026 is not set
# CONFIG_SENSORS_ADM1031 is not set # CONFIG_SENSORS_ADM1031 is not set
# CONFIG_SENSORS_ADM9240 is not set # CONFIG_SENSORS_ADM9240 is not set
# CONFIG_SENSORS_K8TEMP is not set
# CONFIG_SENSORS_ASB100 is not set # CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_ATXP1 is not set # CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not set # CONFIG_SENSORS_DS1621 is not set
...@@ -1034,6 +1047,7 @@ CONFIG_HWMON=y ...@@ -1034,6 +1047,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_SMSC47M192 is not set # CONFIG_SENSORS_SMSC47M192 is not set
CONFIG_SENSORS_SMSC47B397=m CONFIG_SENSORS_SMSC47B397=m
# CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_VT1211 is not set
# CONFIG_SENSORS_VT8231 is not set # CONFIG_SENSORS_VT8231 is not set
# CONFIG_SENSORS_W83781D is not set # CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83791D is not set # CONFIG_SENSORS_W83791D is not set
...@@ -1048,12 +1062,12 @@ CONFIG_SENSORS_SMSC47B397=m ...@@ -1048,12 +1062,12 @@ CONFIG_SENSORS_SMSC47B397=m
# Misc devices # Misc devices
# #
# CONFIG_IBM_ASM is not set # CONFIG_IBM_ASM is not set
# CONFIG_TIFM_CORE is not set
# #
# Multimedia devices # Multimedia devices
# #
# CONFIG_VIDEO_DEV is not set # CONFIG_VIDEO_DEV is not set
CONFIG_VIDEO_V4L2=y
# #
# Digital Video Broadcasting Devices # Digital Video Broadcasting Devices
...@@ -1159,6 +1173,7 @@ CONFIG_USB_STORAGE=y ...@@ -1159,6 +1173,7 @@ CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_SDDR55 is not set # CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set # CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set # CONFIG_USB_LIBUSUAL is not set
# #
...@@ -1181,6 +1196,7 @@ CONFIG_USB_HIDINPUT=y ...@@ -1181,6 +1196,7 @@ CONFIG_USB_HIDINPUT=y
# CONFIG_USB_ATI_REMOTE2 is not set # CONFIG_USB_ATI_REMOTE2 is not set
# CONFIG_USB_KEYSPAN_REMOTE is not set # CONFIG_USB_KEYSPAN_REMOTE is not set
# CONFIG_USB_APPLETOUCH is not set # CONFIG_USB_APPLETOUCH is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# #
# USB Imaging devices # USB Imaging devices
...@@ -1212,6 +1228,7 @@ CONFIG_USB_MON=y ...@@ -1212,6 +1228,7 @@ CONFIG_USB_MON=y
# #
# CONFIG_USB_EMI62 is not set # CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set # CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_AUERSWALD is not set # CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set # CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LEGOTOWER is not set
...@@ -1219,9 +1236,9 @@ CONFIG_USB_MON=y ...@@ -1219,9 +1236,9 @@ CONFIG_USB_MON=y
# CONFIG_USB_LED is not set # CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set # CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGETKIT is not set # CONFIG_USB_PHIDGET is not set
# CONFIG_USB_PHIDGETSERVO is not set
# CONFIG_USB_IDMOUSE is not set # CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set # CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_SISUSBVGA is not set # CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set # CONFIG_USB_LD is not set
...@@ -1313,6 +1330,7 @@ CONFIG_REISERFS_FS_POSIX_ACL=y ...@@ -1313,6 +1330,7 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
# CONFIG_JFS_FS is not set # CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set # CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set # CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set # CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
...@@ -1347,8 +1365,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" ...@@ -1347,8 +1365,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# #
CONFIG_PROC_FS=y CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y CONFIG_PROC_KCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y CONFIG_SYSFS=y
CONFIG_TMPFS=y CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_HUGETLBFS=y CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y CONFIG_HUGETLB_PAGE=y
CONFIG_RAMFS=y CONFIG_RAMFS=y
...@@ -1398,6 +1418,7 @@ CONFIG_SUNRPC=y ...@@ -1398,6 +1418,7 @@ CONFIG_SUNRPC=y
# CONFIG_CODA_FS is not set # CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set # CONFIG_AFS_FS is not set
# CONFIG_9P_FS is not set # CONFIG_9P_FS is not set
CONFIG_GENERIC_ACL=y
# #
# Partition Types # Partition Types
...@@ -1449,6 +1470,10 @@ CONFIG_NLS_ISO8859_15=y ...@@ -1449,6 +1470,10 @@ CONFIG_NLS_ISO8859_15=y
# CONFIG_NLS_KOI8_U is not set # CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=y CONFIG_NLS_UTF8=y
#
# Distributed Lock Manager
#
# #
# Instrumentation Support # Instrumentation Support
# #
...@@ -1482,11 +1507,13 @@ CONFIG_DETECT_SOFTLOCKUP=y ...@@ -1482,11 +1507,13 @@ CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_FS=y CONFIG_DEBUG_FS=y
# CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_FRAME_POINTER is not set # CONFIG_FRAME_POINTER is not set
CONFIG_UNWIND_INFO=y CONFIG_UNWIND_INFO=y
CONFIG_STACK_UNWIND=y CONFIG_STACK_UNWIND=y
# CONFIG_FORCED_INLINING is not set # CONFIG_FORCED_INLINING is not set
# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_LKDTM is not set
# CONFIG_DEBUG_RODATA is not set # CONFIG_DEBUG_RODATA is not set
# CONFIG_IOMMU_DEBUG is not set # CONFIG_IOMMU_DEBUG is not set
CONFIG_DEBUG_STACKOVERFLOW=y CONFIG_DEBUG_STACKOVERFLOW=y
......
...@@ -535,6 +535,8 @@ END(stub_rt_sigreturn) ...@@ -535,6 +535,8 @@ END(stub_rt_sigreturn)
1: incl %gs:pda_irqcount 1: incl %gs:pda_irqcount
cmoveq %gs:pda_irqstackptr,%rsp cmoveq %gs:pda_irqstackptr,%rsp
push %rbp # backlink for old unwinder push %rbp # backlink for old unwinder
CFI_ADJUST_CFA_OFFSET 8
CFI_REL_OFFSET rbp,0
/* /*
* We entered an interrupt context - irqs are off: * We entered an interrupt context - irqs are off:
*/ */
...@@ -978,6 +980,11 @@ ENTRY(kernel_thread) ...@@ -978,6 +980,11 @@ ENTRY(kernel_thread)
call do_fork call do_fork
movq %rax,RAX(%rsp) movq %rax,RAX(%rsp)
xorl %edi,%edi xorl %edi,%edi
test %rax,%rax
jnz 1f
/* terminate stack in child */
movq %rdi,RIP(%rsp)
1:
/* /*
* It isn't worth to check for reschedule here, * It isn't worth to check for reschedule here,
...@@ -1169,6 +1176,7 @@ ENTRY(call_softirq) ...@@ -1169,6 +1176,7 @@ ENTRY(call_softirq)
incl %gs:pda_irqcount incl %gs:pda_irqcount
cmove %gs:pda_irqstackptr,%rsp cmove %gs:pda_irqstackptr,%rsp
push %rbp # backlink for old unwinder push %rbp # backlink for old unwinder
CFI_ADJUST_CFA_OFFSET 8
call __do_softirq call __do_softirq
leaveq leaveq
CFI_DEF_CFA_REGISTER rsp CFI_DEF_CFA_REGISTER rsp
......
...@@ -2,8 +2,9 @@ ...@@ -2,8 +2,9 @@
* Derived from arch/powerpc/kernel/iommu.c * Derived from arch/powerpc/kernel/iommu.c
* *
* Copyright (C) IBM Corporation, 2006 * Copyright (C) IBM Corporation, 2006
* Copyright (C) 2006 Jon Mason <jdmason@kudzu.us>
* *
* Author: Jon Mason <jdmason@us.ibm.com> * Author: Jon Mason <jdmason@kudzu.us>
* Author: Muli Ben-Yehuda <muli@il.ibm.com> * Author: Muli Ben-Yehuda <muli@il.ibm.com>
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
...@@ -714,7 +715,7 @@ static void calgary_watchdog(unsigned long data) ...@@ -714,7 +715,7 @@ static void calgary_watchdog(unsigned long data)
/* If no error, the agent ID in the CSR is not valid */ /* If no error, the agent ID in the CSR is not valid */
if (val32 & CSR_AGENT_MASK) { if (val32 & CSR_AGENT_MASK) {
printk(KERN_EMERG "calgary_watchdog: DMA error on bus %d, " printk(KERN_EMERG "calgary_watchdog: DMA error on PHB %#x, "
"CSR = %#x\n", dev->bus->number, val32); "CSR = %#x\n", dev->bus->number, val32);
writel(0, target); writel(0, target);
...@@ -748,7 +749,7 @@ static void __init calgary_enable_translation(struct pci_dev *dev) ...@@ -748,7 +749,7 @@ static void __init calgary_enable_translation(struct pci_dev *dev)
val32 = be32_to_cpu(readl(target)); val32 = be32_to_cpu(readl(target));
val32 |= PHB_TCE_ENABLE | PHB_DAC_DISABLE | PHB_MCSR_ENABLE; val32 |= PHB_TCE_ENABLE | PHB_DAC_DISABLE | PHB_MCSR_ENABLE;
printk(KERN_INFO "Calgary: enabling translation on PHB %d\n", busnum); printk(KERN_INFO "Calgary: enabling translation on PHB %#x\n", busnum);
printk(KERN_INFO "Calgary: errant DMAs will now be prevented on this " printk(KERN_INFO "Calgary: errant DMAs will now be prevented on this "
"bus.\n"); "bus.\n");
...@@ -778,7 +779,7 @@ static void __init calgary_disable_translation(struct pci_dev *dev) ...@@ -778,7 +779,7 @@ static void __init calgary_disable_translation(struct pci_dev *dev)
val32 = be32_to_cpu(readl(target)); val32 = be32_to_cpu(readl(target));
val32 &= ~(PHB_TCE_ENABLE | PHB_DAC_DISABLE | PHB_MCSR_ENABLE); val32 &= ~(PHB_TCE_ENABLE | PHB_DAC_DISABLE | PHB_MCSR_ENABLE);
printk(KERN_INFO "Calgary: disabling translation on PHB %d!\n", busnum); printk(KERN_INFO "Calgary: disabling translation on PHB %#x!\n", busnum);
writel(cpu_to_be32(val32), target); writel(cpu_to_be32(val32), target);
readl(target); /* flush */ readl(target); /* flush */
...@@ -790,7 +791,16 @@ static inline unsigned int __init locate_register_space(struct pci_dev *dev) ...@@ -790,7 +791,16 @@ static inline unsigned int __init locate_register_space(struct pci_dev *dev)
int rionodeid; int rionodeid;
u32 address; u32 address;
rionodeid = (dev->bus->number % 15 > 4) ? 3 : 2; /*
* Each Calgary has four busses. The first four busses (first Calgary)
* have RIO node ID 2, then the next four (second Calgary) have RIO
* node ID 3, the next four (third Calgary) have node ID 2 again, etc.
* We use a gross hack - relying on the dev->bus->number ordering,
* modulo 14 - to decide which Calgary a given bus is on. Busses 0, 1,
* 2 and 4 are on the first Calgary (id 2), 6, 8, a and c are on the
* second (id 3), and then it repeats modulo 14.
*/
rionodeid = (dev->bus->number % 14 > 4) ? 3 : 2;
/* /*
* register space address calculation as follows: * register space address calculation as follows:
* FE0MB-8MB*OneBasedChassisNumber+1MB*(RioNodeId-ChassisBase) * FE0MB-8MB*OneBasedChassisNumber+1MB*(RioNodeId-ChassisBase)
...@@ -798,7 +808,7 @@ static inline unsigned int __init locate_register_space(struct pci_dev *dev) ...@@ -798,7 +808,7 @@ static inline unsigned int __init locate_register_space(struct pci_dev *dev)
* RioNodeId is 2 for first Calgary, 3 for second Calgary * RioNodeId is 2 for first Calgary, 3 for second Calgary
*/ */
address = START_ADDRESS - address = START_ADDRESS -
(0x800000 * (ONE_BASED_CHASSIS_NUM + dev->bus->number / 15)) + (0x800000 * (ONE_BASED_CHASSIS_NUM + dev->bus->number / 14)) +
(0x100000) * (rionodeid - CHASSIS_BASE); (0x100000) * (rionodeid - CHASSIS_BASE);
return address; return address;
} }
...@@ -816,6 +826,8 @@ static int __init calgary_init_one(struct pci_dev *dev) ...@@ -816,6 +826,8 @@ static int __init calgary_init_one(struct pci_dev *dev)
void __iomem *bbar; void __iomem *bbar;
int ret; int ret;
BUG_ON(dev->bus->number >= MAX_PHB_BUS_NUM);
address = locate_register_space(dev); address = locate_register_space(dev);
/* map entire 1MB of Calgary config space */ /* map entire 1MB of Calgary config space */
bbar = ioremap_nocache(address, 1024 * 1024); bbar = ioremap_nocache(address, 1024 * 1024);
...@@ -842,10 +854,10 @@ static int __init calgary_init_one(struct pci_dev *dev) ...@@ -842,10 +854,10 @@ static int __init calgary_init_one(struct pci_dev *dev)
static int __init calgary_init(void) static int __init calgary_init(void)
{ {
int i, ret = -ENODEV; int ret = -ENODEV;
struct pci_dev *dev = NULL; struct pci_dev *dev = NULL;
for (i = 0; i < MAX_PHB_BUS_NUM; i++) { do {
dev = pci_get_device(PCI_VENDOR_ID_IBM, dev = pci_get_device(PCI_VENDOR_ID_IBM,
PCI_DEVICE_ID_IBM_CALGARY, PCI_DEVICE_ID_IBM_CALGARY,
dev); dev);
...@@ -861,12 +873,12 @@ static int __init calgary_init(void) ...@@ -861,12 +873,12 @@ static int __init calgary_init(void)
ret = calgary_init_one(dev); ret = calgary_init_one(dev);
if (ret) if (ret)
goto error; goto error;
} } while (1);
return ret; return ret;
error: error:
for (i--; i >= 0; i--) { do {
dev = pci_find_device_reverse(PCI_VENDOR_ID_IBM, dev = pci_find_device_reverse(PCI_VENDOR_ID_IBM,
PCI_DEVICE_ID_IBM_CALGARY, PCI_DEVICE_ID_IBM_CALGARY,
dev); dev);
...@@ -882,7 +894,7 @@ static int __init calgary_init(void) ...@@ -882,7 +894,7 @@ static int __init calgary_init(void)
calgary_disable_translation(dev); calgary_disable_translation(dev);
calgary_free_bus(dev); calgary_free_bus(dev);
pci_dev_put(dev); /* Undo calgary_init_one()'s pci_dev_get() */ pci_dev_put(dev); /* Undo calgary_init_one()'s pci_dev_get() */
} } while (1);
return ret; return ret;
} }
...@@ -1052,7 +1064,7 @@ static int __init calgary_parse_options(char *p) ...@@ -1052,7 +1064,7 @@ static int __init calgary_parse_options(char *p)
if (bridge < MAX_PHB_BUS_NUM) { if (bridge < MAX_PHB_BUS_NUM) {
printk(KERN_INFO "Calgary: disabling " printk(KERN_INFO "Calgary: disabling "
"translation for PHB 0x%x\n", bridge); "translation for PHB %#x\n", bridge);
bus_info[bridge].translation_disabled = 1; bus_info[bridge].translation_disabled = 1;
} }
} }
......
...@@ -615,6 +615,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) ...@@ -615,6 +615,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
prev->gsindex = gsindex; prev->gsindex = gsindex;
} }
/* Must be after DS reload */
unlazy_fpu(prev_p);
/* /*
* Switch the PDA and FPU contexts. * Switch the PDA and FPU contexts.
*/ */
...@@ -622,10 +625,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) ...@@ -622,10 +625,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
write_pda(oldrsp, next->userrsp); write_pda(oldrsp, next->userrsp);
write_pda(pcurrent, next_p); write_pda(pcurrent, next_p);
/* This must be here to ensure both math_state_restore() and
kernel_fpu_begin() work consistently.
And the AMD workaround requires it to be after DS reload. */
unlazy_fpu(prev_p);
write_pda(kernelstack, write_pda(kernelstack,
(unsigned long)task_stack_page(next_p) + THREAD_SIZE - PDA_STACKOFFSET); (unsigned long)task_stack_page(next_p) + THREAD_SIZE - PDA_STACKOFFSET);
#ifdef CONFIG_CC_STACKPROTECTOR #ifdef CONFIG_CC_STACKPROTECTOR
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment