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] x86-64: no paravirt for X86_VOYAGER or X86_VISWS
  [PATCH] i386: Fix io_apic.c warning
  [PATCH] i386: export smp_num_siblings for oprofile
  [PATCH] x86: Work around gcc 4.2 over aggressive optimizer
  [PATCH] x86: Fix boot hang due to nmi watchdog init code
  [PATCH] x86: Fix verify_quirk_intel_irqbalance()
  [PATCH] i386: Update defconfig
  [PATCH] x86-64: Update defconfig
This commit is contained in:
Linus Torvalds 2006-12-09 13:31:07 -08:00
commit af1713e0f1
10 changed files with 86 additions and 28 deletions

View File

@ -190,6 +190,7 @@ endchoice
config PARAVIRT config PARAVIRT
bool "Paravirtualization support (EXPERIMENTAL)" bool "Paravirtualization support (EXPERIMENTAL)"
depends on EXPERIMENTAL depends on EXPERIMENTAL
depends on !(X86_VISWS || X86_VOYAGER)
help help
Paravirtualization is a way of running multiple instances of Paravirtualization is a way of running multiple instances of
Linux on the same machine, under a hypervisor. This option Linux on the same machine, under a hypervisor. This option

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.19-git7 # Linux kernel version: 2.6.19-git14
# Wed Dec 6 23:50:49 2006 # Sat Dec 9 21:23:14 2006
# #
CONFIG_X86_32=y CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y CONFIG_GENERIC_TIME=y
@ -12,6 +12,7 @@ CONFIG_X86=y
CONFIG_MMU=y CONFIG_MMU=y
CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y CONFIG_DMI=y
@ -141,6 +142,8 @@ CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=7 CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y CONFIG_X86_INVLPG=y
@ -203,6 +206,7 @@ CONFIG_MTRR=y
CONFIG_SECCOMP=y CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set # CONFIG_HZ_100 is not set
CONFIG_HZ_250=y CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set # CONFIG_HZ_1000 is not set
CONFIG_HZ=250 CONFIG_HZ=250
# CONFIG_KEXEC is not set # CONFIG_KEXEC is not set
@ -563,6 +567,7 @@ CONFIG_IDEDMA_AUTO=y
# #
# CONFIG_RAID_ATTRS is not set # CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y CONFIG_SCSI=y
# CONFIG_SCSI_TGT is not set
CONFIG_SCSI_NETLINK=y CONFIG_SCSI_NETLINK=y
# CONFIG_SCSI_PROC_FS is not set # CONFIG_SCSI_PROC_FS is not set
@ -583,6 +588,7 @@ CONFIG_CHR_DEV_SG=y
# CONFIG_SCSI_MULTI_LUN is not set # CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set # CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set
# #
# SCSI Transports # SCSI Transports
@ -642,6 +648,7 @@ CONFIG_AIC79XX_DEBUG_MASK=0
# CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_SRP is not set
# #
# Serial ATA (prod) and Parallel ATA (experimental) drivers # Serial ATA (prod) and Parallel ATA (experimental) drivers
@ -1082,10 +1089,7 @@ CONFIG_SOUND=y
# Open Sound System # Open Sound System
# #
CONFIG_SOUND_PRIME=y CONFIG_SOUND_PRIME=y
CONFIG_OSS_OBSOLETE_DRIVER=y
# CONFIG_SOUND_BT878 is not set # CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_EMU10K1 is not set
# CONFIG_SOUND_FUSION is not set
# CONFIG_SOUND_ES1371 is not set # CONFIG_SOUND_ES1371 is not set
CONFIG_SOUND_ICH=y CONFIG_SOUND_ICH=y
# CONFIG_SOUND_TRIDENT is not set # CONFIG_SOUND_TRIDENT is not set
@ -1094,6 +1098,11 @@ CONFIG_SOUND_ICH=y
# CONFIG_SOUND_VIA82CXXX is not set # CONFIG_SOUND_VIA82CXXX is not set
# CONFIG_SOUND_OSS is not set # CONFIG_SOUND_OSS is not set
#
# HID Devices
#
CONFIG_HID=y
# #
# USB support # USB support
# #
@ -1158,8 +1167,7 @@ CONFIG_USB_STORAGE=y
# USB Input Devices # USB Input Devices
# #
CONFIG_USB_HID=y CONFIG_USB_HID=y
CONFIG_USB_HIDINPUT=y # CONFIG_USB_HID_POWERBOOK is not set
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
# CONFIG_HID_FF is not set # CONFIG_HID_FF is not set
# CONFIG_USB_HIDDEV is not set # CONFIG_USB_HIDDEV is not set
# CONFIG_USB_AIPTEK is not set # CONFIG_USB_AIPTEK is not set
@ -1443,6 +1451,11 @@ 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
#
# CONFIG_DLM is not set
# #
# Instrumentation Support # Instrumentation Support
# #
@ -1509,6 +1522,7 @@ CONFIG_DOUBLEFAULT=y
# #
# Library routines # Library routines
# #
CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set # CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set # CONFIG_CRC16 is not set
CONFIG_CRC32=y CONFIG_CRC32=y

View File

@ -2485,7 +2485,7 @@ device_initcall(ioapic_init_sysfs);
int create_irq(void) int create_irq(void)
{ {
/* Allocate an unused irq */ /* Allocate an unused irq */
int irq, new, vector; int irq, new, vector = 0;
unsigned long flags; unsigned long flags;
irq = -ENOSPC; irq = -ENOSPC;

View File

@ -195,6 +195,8 @@ static __cpuinit inline int nmi_known_cpu(void)
return 0; return 0;
} }
static int endflag __initdata = 0;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
/* The performance counters used by NMI_LOCAL_APIC don't trigger when /* The performance counters used by NMI_LOCAL_APIC don't trigger when
* the CPU is idle. To make sure the NMI watchdog really ticks on all * the CPU is idle. To make sure the NMI watchdog really ticks on all
@ -202,7 +204,6 @@ static __cpuinit inline int nmi_known_cpu(void)
*/ */
static __init void nmi_cpu_busy(void *data) static __init void nmi_cpu_busy(void *data)
{ {
volatile int *endflag = data;
local_irq_enable_in_hardirq(); local_irq_enable_in_hardirq();
/* Intentionally don't use cpu_relax here. This is /* Intentionally don't use cpu_relax here. This is
to make sure that the performance counter really ticks, to make sure that the performance counter really ticks,
@ -210,14 +211,13 @@ static __init void nmi_cpu_busy(void *data)
pause instruction. On a real HT machine this is fine because pause instruction. On a real HT machine this is fine because
all other CPUs are busy with "useless" delay loops and don't all other CPUs are busy with "useless" delay loops and don't
care if they get somewhat less cycles. */ care if they get somewhat less cycles. */
while (*endflag == 0) while (endflag == 0)
barrier(); mb();
} }
#endif #endif
static int __init check_nmi_watchdog(void) static int __init check_nmi_watchdog(void)
{ {
volatile int endflag = 0;
unsigned int *prev_nmi_count; unsigned int *prev_nmi_count;
int cpu; int cpu;

View File

@ -10,13 +10,38 @@
#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI) #if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI)
static void __devinit verify_quirk_intel_irqbalance(struct pci_dev *dev) static void __devinit verify_quirk_intel_irqbalance(struct pci_dev *dev)
{ {
u8 config, rev;
u32 word;
/* BIOS may enable hardware IRQ balancing for
* E7520/E7320/E7525(revision ID 0x9 and below)
* based platforms.
* For those platforms, make sure that the genapic is set to 'flat'
*/
pci_read_config_byte(dev, PCI_CLASS_REVISION, &rev);
if (rev > 0x9)
return;
/* enable access to config space*/
pci_read_config_byte(dev, 0xf4, &config);
pci_write_config_byte(dev, 0xf4, config|0x2);
/* read xTPR register */
raw_pci_ops->read(0, 0, 0x40, 0x4c, 2, &word);
if (!(word & (1 << 13))) {
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
if (genapic != &apic_flat) if (genapic != &apic_flat)
panic("APIC mode must be flat on this system\n"); panic("APIC mode must be flat on this system\n");
#elif defined(CONFIG_X86_GENERICARCH) #elif defined(CONFIG_X86_GENERICARCH)
if (genapic != &apic_default) if (genapic != &apic_default)
panic("APIC mode must be default(flat) on this system. Use apic=default\n"); panic("APIC mode must be default(flat) on this system. Use apic=default\n");
#endif #endif
}
/* put back the original value for config space*/
if (!(config & 0x2))
pci_write_config_byte(dev, 0xf4, config);
} }
void __init quirk_intel_irqbalance(void) void __init quirk_intel_irqbalance(void)

View File

@ -69,7 +69,7 @@ static int __devinitdata smp_b_stepping;
/* Number of siblings per CPU package */ /* Number of siblings per CPU package */
int smp_num_siblings = 1; int smp_num_siblings = 1;
#ifdef CONFIG_X86_HT #ifdef CONFIG_SMP
EXPORT_SYMBOL(smp_num_siblings); EXPORT_SYMBOL(smp_num_siblings);
#endif #endif

View File

@ -26,6 +26,7 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH(i386) OUTPUT_ARCH(i386)
ENTRY(phys_startup_32) ENTRY(phys_startup_32)
jiffies = jiffies_64; jiffies = jiffies_64;
_proxy_pda = 0;
PHDRS { PHDRS {
text PT_LOAD FLAGS(5); /* R_E */ text PT_LOAD FLAGS(5); /* R_E */

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.19-git7 # Linux kernel version: 2.6.19-git14
# Wed Dec 6 23:50:47 2006 # Sat Dec 9 21:23:09 2006
# #
CONFIG_X86_64=y CONFIG_X86_64=y
CONFIG_64BIT=y CONFIG_64BIT=y
@ -22,6 +22,9 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_DMI=y CONFIG_DMI=y
CONFIG_AUDIT_ARCH=y CONFIG_AUDIT_ARCH=y
CONFIG_GENERIC_BUG=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
# #
@ -170,6 +173,7 @@ CONFIG_SECCOMP=y
# CONFIG_CC_STACKPROTECTOR is not set # CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_HZ_100 is not set # CONFIG_HZ_100 is not set
CONFIG_HZ_250=y CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set # CONFIG_HZ_1000 is not set
CONFIG_HZ=250 CONFIG_HZ=250
# CONFIG_REORDER is not set # CONFIG_REORDER is not set
@ -514,6 +518,7 @@ CONFIG_IDEDMA_AUTO=y
# #
# CONFIG_RAID_ATTRS is not set # CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y CONFIG_SCSI=y
# CONFIG_SCSI_TGT is not set
CONFIG_SCSI_NETLINK=y CONFIG_SCSI_NETLINK=y
# CONFIG_SCSI_PROC_FS is not set # CONFIG_SCSI_PROC_FS is not set
@ -534,6 +539,7 @@ CONFIG_CHR_DEV_SG=y
# CONFIG_SCSI_MULTI_LUN is not set # CONFIG_SCSI_MULTI_LUN is not set
CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_CONSTANTS=y
# CONFIG_SCSI_LOGGING is not set # CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set
# #
# SCSI Transports # SCSI Transports
@ -587,6 +593,7 @@ CONFIG_MEGARAID_SAS=y
# CONFIG_SCSI_DC395x is not set # CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_SRP is not set
# #
# Serial ATA (prod) and Parallel ATA (experimental) drivers # Serial ATA (prod) and Parallel ATA (experimental) drivers
@ -1106,10 +1113,7 @@ CONFIG_SOUND=y
# Open Sound System # Open Sound System
# #
CONFIG_SOUND_PRIME=y CONFIG_SOUND_PRIME=y
CONFIG_OSS_OBSOLETE_DRIVER=y
# CONFIG_SOUND_BT878 is not set # CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_EMU10K1 is not set
# CONFIG_SOUND_FUSION is not set
# CONFIG_SOUND_ES1371 is not set # CONFIG_SOUND_ES1371 is not set
CONFIG_SOUND_ICH=y CONFIG_SOUND_ICH=y
# CONFIG_SOUND_TRIDENT is not set # CONFIG_SOUND_TRIDENT is not set
@ -1118,6 +1122,11 @@ CONFIG_SOUND_ICH=y
# CONFIG_SOUND_VIA82CXXX is not set # CONFIG_SOUND_VIA82CXXX is not set
# CONFIG_SOUND_OSS is not set # CONFIG_SOUND_OSS is not set
#
# HID Devices
#
CONFIG_HID=y
# #
# USB support # USB support
# #
@ -1182,8 +1191,7 @@ CONFIG_USB_STORAGE=y
# USB Input Devices # USB Input Devices
# #
CONFIG_USB_HID=y CONFIG_USB_HID=y
CONFIG_USB_HIDINPUT=y # CONFIG_USB_HID_POWERBOOK is not set
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
# CONFIG_HID_FF is not set # CONFIG_HID_FF is not set
# CONFIG_USB_HIDDEV is not set # CONFIG_USB_HIDDEV is not set
# CONFIG_USB_AIPTEK is not set # CONFIG_USB_AIPTEK is not set
@ -1474,6 +1482,11 @@ 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
#
# CONFIG_DLM is not set
# #
# Instrumentation Support # Instrumentation Support
# #
@ -1504,6 +1517,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set # CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=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
@ -1534,6 +1548,7 @@ CONFIG_DEBUG_STACKOVERFLOW=y
# #
# Library routines # Library routines
# #
CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set # CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set # CONFIG_CRC16 is not set
CONFIG_CRC32=y CONFIG_CRC32=y

View File

@ -193,6 +193,8 @@ void nmi_watchdog_default(void)
nmi_watchdog = NMI_IO_APIC; nmi_watchdog = NMI_IO_APIC;
} }
static int endflag __initdata = 0;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
/* The performance counters used by NMI_LOCAL_APIC don't trigger when /* The performance counters used by NMI_LOCAL_APIC don't trigger when
* the CPU is idle. To make sure the NMI watchdog really ticks on all * the CPU is idle. To make sure the NMI watchdog really ticks on all
@ -200,7 +202,6 @@ void nmi_watchdog_default(void)
*/ */
static __init void nmi_cpu_busy(void *data) static __init void nmi_cpu_busy(void *data)
{ {
volatile int *endflag = data;
local_irq_enable_in_hardirq(); local_irq_enable_in_hardirq();
/* Intentionally don't use cpu_relax here. This is /* Intentionally don't use cpu_relax here. This is
to make sure that the performance counter really ticks, to make sure that the performance counter really ticks,
@ -208,14 +209,13 @@ static __init void nmi_cpu_busy(void *data)
pause instruction. On a real HT machine this is fine because pause instruction. On a real HT machine this is fine because
all other CPUs are busy with "useless" delay loops and don't all other CPUs are busy with "useless" delay loops and don't
care if they get somewhat less cycles. */ care if they get somewhat less cycles. */
while (*endflag == 0) while (endflag == 0)
barrier(); mb();
} }
#endif #endif
int __init check_nmi_watchdog (void) int __init check_nmi_watchdog (void)
{ {
volatile int endflag = 0;
int *counts; int *counts;
int cpu; int cpu;
@ -256,6 +256,7 @@ int __init check_nmi_watchdog (void)
if (!atomic_read(&nmi_active)) { if (!atomic_read(&nmi_active)) {
kfree(counts); kfree(counts);
atomic_set(&nmi_active, -1); atomic_set(&nmi_active, -1);
endflag = 1;
return -1; return -1;
} }
endflag = 1; endflag = 1;

View File

@ -13,6 +13,7 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
OUTPUT_ARCH(i386:x86-64) OUTPUT_ARCH(i386:x86-64)
ENTRY(phys_startup_64) ENTRY(phys_startup_64)
jiffies_64 = jiffies; jiffies_64 = jiffies;
_proxy_pda = 0;
PHDRS { PHDRS {
text PT_LOAD FLAGS(5); /* R_E */ text PT_LOAD FLAGS(5); /* R_E */
data PT_LOAD FLAGS(7); /* RWE */ data PT_LOAD FLAGS(7); /* RWE */