The patch titled revert x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 has been added to the -mm tree. Its filename is revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: revert x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 From: Andrew Morton <akpm@xxxxxxxx> Obsoleted by Ongo's genapic stuff. Cc: Ingo Molnar <mingo@xxxxxxx> Cc: Suresh Siddha <suresh.b.siddha@xxxxxxxxx> Cc: Andi Kleen <ak@xxxxxxx> Cc: "Li, Shaohua" <shaohua.li@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- arch/i386/kernel/acpi/earlyquirk.c | 21 ------------ arch/i386/kernel/quirks.c | 46 ++++++--------------------- arch/i386/kernel/smpboot.c | 7 ---- arch/x86_64/kernel/early-quirks.c | 13 ------- arch/x86_64/kernel/smpboot.c | 8 ---- include/asm-i386/genapic.h | 2 - include/asm-i386/irq.h | 2 - include/asm-x86_64/proto.h | 1 8 files changed, 12 insertions(+), 88 deletions(-) diff -puN arch/i386/kernel/acpi/earlyquirk.c~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 arch/i386/kernel/acpi/earlyquirk.c --- a/arch/i386/kernel/acpi/earlyquirk.c~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 +++ a/arch/i386/kernel/acpi/earlyquirk.c @@ -10,7 +10,6 @@ #include <asm/pci-direct.h> #include <asm/acpi.h> #include <asm/apic.h> -#include <asm/irq.h> #ifdef CONFIG_ACPI @@ -50,24 +49,6 @@ static int __init check_bridge(int vendo return 0; } -static void check_intel(void) -{ - u16 vendor, device; - - vendor = read_pci_config_16(0, 0, 0, PCI_VENDOR_ID); - - if (vendor != PCI_VENDOR_ID_INTEL) - return; - - device = read_pci_config_16(0, 0, 0, PCI_DEVICE_ID); -#ifdef CONFIG_SMP - if (device == PCI_DEVICE_ID_INTEL_E7320_MCH || - device == PCI_DEVICE_ID_INTEL_E7520_MCH || - device == PCI_DEVICE_ID_INTEL_E7525_MCH) - quirk_intel_irqbalance(); -#endif -} - void __init check_acpi_pci(void) { int num, slot, func; @@ -79,8 +60,6 @@ void __init check_acpi_pci(void) if (!early_pci_allowed()) return; - check_intel(); - /* Poor man's PCI discovery */ for (num = 0; num < 32; num++) { for (slot = 0; slot < 32; slot++) { diff -puN arch/i386/kernel/quirks.c~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 arch/i386/kernel/quirks.c --- a/arch/i386/kernel/quirks.c~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 +++ a/arch/i386/kernel/quirks.c @@ -3,23 +3,10 @@ */ #include <linux/pci.h> #include <linux/irq.h> -#include <asm/pci-direct.h> -#include <asm/genapic.h> -#include <asm/cpu.h> #if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI) -static void __devinit verify_quirk_intel_irqbalance(struct pci_dev *dev) -{ -#ifdef CONFIG_X86_64 - if (genapic != &apic_flat) - panic("APIC mode must be flat on this system\n"); -#elif defined(CONFIG_X86_GENERICARCH) - if (genapic != &apic_default) - panic("APIC mode must be default(flat) on this system. Use apic=default\n"); -#endif -} -void __init quirk_intel_irqbalance(void) +static void __devinit quirk_intel_irqbalance(struct pci_dev *dev) { u8 config, rev; u32 word; @@ -29,18 +16,18 @@ void __init quirk_intel_irqbalance(void) * based platforms. * Disable SW irqbalance/affinity on those platforms. */ - rev = read_pci_config_byte(0, 0, 0, PCI_CLASS_REVISION); + pci_read_config_byte(dev, PCI_CLASS_REVISION, &rev); if (rev > 0x9) return; printk(KERN_INFO "Intel E7520/7320/7525 detected."); - /* enable access to config space */ - config = read_pci_config_byte(0, 0, 0, 0xf4); - write_pci_config_byte(0, 0, 0, 0xf4, config|0x2); + /* enable access to config space*/ + pci_read_config_byte(dev, 0xf4, &config); + pci_write_config_byte(dev, 0xf4, config|0x2); /* read xTPR register */ - word = read_pci_config_16(0, 0, 0x40, 0x4c); + raw_pci_ops->read(0, 0, 0x40, 0x4c, 2, &word); if (!(word & (1 << 13))) { printk(KERN_INFO "Disabling irq balancing and affinity\n"); @@ -51,24 +38,13 @@ void __init quirk_intel_irqbalance(void) #ifdef CONFIG_PROC_FS no_irq_affinity = 1; #endif -#ifdef CONFIG_HOTPLUG_CPU - printk(KERN_INFO "Disabling cpu hotplug control\n"); - enable_cpu_hotplug = 0; -#endif -#ifdef CONFIG_X86_64 - /* force the genapic selection to flat mode so that - * interrupts can be redirected to more than one CPU. - */ - genapic_force = &apic_flat; -#endif } - /* put back the original value for config space */ + /* put back the original value for config space*/ if (!(config & 0x2)) - write_pci_config_byte(0, 0, 0, 0xf4, config); + pci_write_config_byte(dev, 0xf4, config); } -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7320_MCH, verify_quirk_intel_irqbalance); -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7525_MCH, verify_quirk_intel_irqbalance); -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7520_MCH, verify_quirk_intel_irqbalance); - +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7320_MCH, quirk_intel_irqbalance); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7525_MCH, quirk_intel_irqbalance); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7520_MCH, quirk_intel_irqbalance); #endif diff -puN arch/i386/kernel/smpboot.c~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 arch/i386/kernel/smpboot.c --- a/arch/i386/kernel/smpboot.c~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 +++ a/arch/i386/kernel/smpboot.c @@ -58,7 +58,6 @@ #include <asm/arch_hooks.h> #include <asm/nmi.h> #include <asm/pda.h> -#include <asm/genapic.h> #include <mach_apic.h> #include <mach_wakecpu.h> @@ -1483,12 +1482,6 @@ int __devinit __cpu_up(unsigned int cpu) cpu_set(cpu, smp_commenced_mask); while (!cpu_isset(cpu, cpu_online_map)) cpu_relax(); - -#ifdef CONFIG_X86_GENERICARCH - if (num_online_cpus() > 8 && genapic == &apic_default) - panic("Default flat APIC routing can't be used with > 8 cpus\n"); -#endif - return 0; } diff -puN arch/x86_64/kernel/early-quirks.c~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 arch/x86_64/kernel/early-quirks.c --- a/arch/x86_64/kernel/early-quirks.c~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 +++ a/arch/x86_64/kernel/early-quirks.c @@ -71,18 +71,6 @@ static void ati_bugs(void) { } -static void intel_bugs(void) -{ - u16 device = read_pci_config_16(0, 0, 0, PCI_DEVICE_ID); - -#ifdef CONFIG_SMP - if (device == PCI_DEVICE_ID_INTEL_E7320_MCH || - device == PCI_DEVICE_ID_INTEL_E7520_MCH || - device == PCI_DEVICE_ID_INTEL_E7525_MCH) - quirk_intel_irqbalance(); -#endif -} - struct chipset { u16 vendor; void (*f)(void); @@ -92,7 +80,6 @@ static struct chipset early_qrk[] = { { PCI_VENDOR_ID_NVIDIA, nvidia_bugs }, { PCI_VENDOR_ID_VIA, via_bugs }, { PCI_VENDOR_ID_ATI, ati_bugs }, - { PCI_VENDOR_ID_INTEL, intel_bugs}, {} }; diff -puN arch/x86_64/kernel/smpboot.c~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 arch/x86_64/kernel/smpboot.c --- a/arch/x86_64/kernel/smpboot.c~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 +++ a/arch/x86_64/kernel/smpboot.c @@ -60,7 +60,6 @@ #include <asm/irq.h> #include <asm/hw_irq.h> #include <asm/numa.h> -#include <asm/genapic.h> /* Number of siblings per CPU package */ int smp_num_siblings = 1; @@ -1168,13 +1167,6 @@ int __cpuinit __cpu_up(unsigned int cpu) while (!cpu_isset(cpu, cpu_online_map)) cpu_relax(); - - if (num_online_cpus() > 8 && genapic == &apic_flat) { - printk(KERN_WARNING - "flat APIC routing can't be used with > 8 cpus\n"); - BUG(); - } - err = 0; return err; diff -puN include/asm-i386/genapic.h~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 include/asm-i386/genapic.h --- a/include/asm-i386/genapic.h~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 +++ a/include/asm-i386/genapic.h @@ -122,6 +122,6 @@ struct genapic { APICFUNC(phys_pkg_id) \ } -extern struct genapic *genapic, apic_default; +extern struct genapic *genapic; #endif diff -puN include/asm-i386/irq.h~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 include/asm-i386/irq.h --- a/include/asm-i386/irq.h~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 +++ a/include/asm-i386/irq.h @@ -37,8 +37,6 @@ static __inline__ int irq_canonicalize(i extern int irqbalance_disable(char *str); #endif -extern void quirk_intel_irqbalance(void); - #ifdef CONFIG_HOTPLUG_CPU extern void fixup_irqs(cpumask_t map); #endif diff -puN include/asm-x86_64/proto.h~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 include/asm-x86_64/proto.h --- a/include/asm-x86_64/proto.h~revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 +++ a/include/asm-x86_64/proto.h @@ -87,7 +87,6 @@ extern void syscall32_cpu_init(void); extern void setup_node_bootmem(int nodeid, unsigned long start, unsigned long end); extern void early_quirks(void); -extern void quirk_intel_irqbalance(void); extern void check_efer(void); extern int unhandled_signal(struct task_struct *tsk, int sig); _ Patches currently in -mm which might be from akpm@xxxxxxxx are origin.patch add-bottom_half.h.patch drm-sis-linkage-fix.patch revert-generic_file_buffered_write-handle-zero-length-iovec-segments.patch revert-generic_file_buffered_write-deadlock-on-vectored-write.patch generic_file_buffered_write-cleanup.patch mm-fix-pagecache-write-deadlocks.patch fs-prepare_write-fixes-fuse-fix.patch fs-prepare_write-fixes-fat-fix.patch macintosh-mangle-caps-lock-events-on-adb-keyboards.patch git-acpi.patch acpi-dont-select-pm.patch implementation-of-acpi_video_get_next_level.patch video-sysfs-support-take-2-add-dev-argument-for-backlight_device_register.patch acpi-asus-s3-resume-fix.patch sony_apci-resume.patch video-sysfs-support-take-2-add-dev-argument-for-backlight_device_register-sony_acpi-fix.patch git-alsa.patch git-alsa-fixup.patch git-alsa-arm-fix.patch git-cpufreq-prep.patch git-cpufreq.patch platform_driver_probe-can-save-codespace-save-codespace.patch git-dvb.patch fix-jdelvare-i2c-i2c-versatile-new-arm-bus-driver.patch git-gfs2-nmw.patch git-ia64.patch git-input.patch git-input-fixup.patch git-input-vs-git-alsa.patch kbuild-fix-rr-is-now-default.patch pata_cs5530-suspend-resume-support-tweak.patch pata_sil680-suspend-resume-tidy.patch pata_via-suspend-resume-support-fix.patch pata_it8213-add-new-driver-for-the-it8213-card-tidy.patch git-lxdialog-fixup.patch git-mtd.patch git-mtd-ssfdc-build-fix.patch git-ubi.patch git-netdev-all.patch libphy-dont-do-that.patch update-smc91x-driver-with-arm-versatile-board-info.patch drivers-net-ns83820c-add-paramter-to-disable-auto.patch git-net.patch nf_conntrack_pptp-build-fix.patch net-uninline-skb_put.patch ioat-warning-fix.patch pci-fix-multiple-problems-with-via-hardware.patch fix-gregkh-pci-pci-enable-disable-device-is-nestable.patch git-scsi-misc.patch scsi-target-repair-after-viro-depredations.patch drivers-scsi-mca_53c9xc-save_flags-cli-removal.patch scsi-in2000-scsi_cmnd-convertion.patch aic79xx-wrong-max-memory-at-driver-init.patch scsi-cover-up-bugs-fix-up-compiler-warnings-in-megaraid-driver-fix.patch git-sas-fixup.patch nokia-e70-is-an-unusual-device.patch pre-x86_64-mm-i386-reloc-abssym.patch post-x86_64-mm-i386-reloc-abssym.patch revert-x86_64-mm-add-genapic_force.patch revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525.patch touchkit-ps-2-touchscreen-driver.patch get-rid-of-zone_table.patch new-scheme-to-preempt-swap-token-tidy.patch balance_pdgat-cleanup.patch leak-tracking-for-kmalloc_node-fix.patch add-numa-node-information-to-struct-device-tidy.patch node-aware-skb-allocation-fix-for-device-tree-changes.patch slab-deprecate-kmem_cache-t.patch mm-make-compound-page-destructor-handling-explicit-tidy.patch congestion-wait-dont-wait-when-there-are-no-pages-under-writeback.patch radix-tree-rcu-lockless-readside.patch acx1xx-wireless-driver.patch swsusp-add-resume_offset-command-line-parameter-rev-2.patch add-include-linux-freezerh-and-move-definitions-from-ueagle-fix.patch add-include-linux-freezerh-and-move-definitions-from-ucb1400_ts-fix.patch ubi-versus-add-include-linux-freezerh-and-move-definitions-from.patch convert-pm_sem-to-a-mutex-fix.patch cciss-set-sector_size-to-2048-for-performance-tidy.patch deprecate-smbfs-in-favour-of-cifs.patch edac-new-opteron-athlon64-memory-controller-driver.patch lockdep-annotate-nfs-nfsd-in-kernel-sockets-tidy.patch drivers-add-lcd-support-3-Kconfig-fix.patch probe_kernel_address-needs-to-do-set_fs.patch slab-use-probe_kernel_address.patch exar-quad-port-serial-fix.patch vfs_getattr-remove-dead-code.patch ext3-uninline-large-functions.patch ext4-uninline-large-functions.patch sleep-profiling-fixes.patch sleep-profiling-fix.patch debug-workqueue-locking-sanity-fix.patch pcengines-wrap-led-support-fix.patch driver-base-memoryc-remove-warnings-of.patch remove-kernel-syscalls-x86_64-fix.patch protect-ext2-ioctl-modifying-append_only-immutable-etc-with-i_mutex.patch remove-hash_highmem.patch elf-fix-kcore-note-size-calculation-fix.patch reiserfs-add-missing-d-cache-flushing-tweak.patch up-smp_call_function_single-should-disable-interrupts.patch up-smp_call_function_single-should-disable-interrupts-fix.patch smp_call_function_single-check-that-local-interrupts-are-enabled.patch hotplug-cpu-clean-up-hotcpu_notifier-use-vs-gregkh-driver-cpu-topology-consider-sysfs_create_group-return-value.patch add-return-value-checking-of-get_user-in-fix.patch handle-per-subsystem-mutexes-for-config_hotplug_cpu-not-set-tidy.patch dz-fixes-to-make-it-work-fix.patch ext4-balloc-fix-_with_rsv-freeze-fix.patch ide_scsi-allow-it-to-be-used-for-non-cd-only-fix.patch make-8250_pnp-serial-driver-work-after-tidy.patch gcc-4-1-0-is-bust.patch cleanup-include-asm-generic-atomich-fix.patch struct-seq_operations-and-struct-file_operations-constification-fix.patch struct-seq_operations-and-struct-file_operations-constification-fix-2.patch io-accounting-core-statistics.patch clean-up-__set_page_dirty_nobuffers.patch io-accounting-write-accounting.patch io-accounting-write-cancel-accounting.patch io-accounting-read-accounting-2.patch io-accounting-read-accounting-nfs-fix.patch io-accounting-read-accounting-cifs-fix.patch io-accounting-direct-io.patch io-accounting-report-in-procfs.patch cleanup-taskstatsh.patch io-accounting-via-taskstats.patch getdelays-various-fixes.patch io-accounting-add-to-getdelays.patch move-page-writeback-acounting-out-of-macros.patch per-backing_dev-dirty-and-writeback-page-accounting.patch ext2-reservations.patch tty-signal-tty-locking-post-viro-trainwreck.patch tty-signal-tty-locking-post-viro-trainwreck-fix.patch tty-signal-tty-locking-post-viro-trainwreck-fix-fix.patch pktcdvd-bio-write-congestion-using-blk_congestion_wait-fix.patch bug-test-1.patch net-use-bitrev8-tidy.patch fsstack-introduce-fsstack_copy_attrinode_-tidy.patch ecryptfs-use-fsstacks-generic-copy-inode-attr-tidy-fix-fix.patch log2-implement-a-general-integer-log2-facility-in-the-kernel-fix.patch log2-implement-a-general-integer-log2-facility-in-the-kernel-vs-git-cryptodev.patch log2-implement-a-general-integer-log2-facility-in-the-kernel-ppc-fix.patch add-process_session-helper-routine-deprecate-old-field-tidy.patch add-process_session-helper-routine-deprecate-old-field-fix-warnings.patch add-process_session-helper-routine-deprecate-old-field-fix-warnings-2.patch mxser-session-warning-fix.patch tty-switch-to-ktermios-and-new-framework-warning-fix.patch tty-switch-to-ktermios-and-new-framework-irda-fix.patch tty-switch-to-ktermios-bluetooth-fix.patch tty_ioctl-use-termios-for-the-old-structure-and-termios2-fix.patch drivers-isdn-handcrafted-min-max-macro-removal-fix.patch fault-injection-capabilities-infrastructure-tidy.patch fault-injection-capabilities-infrastructure-tweaks.patch fault-injection-Kconfig-cleanup.patch fault-injection-stacktrace-filtering-kconfig-fix.patch sched-add-option-to-serialize-load-balancing-fix.patch kernel-schedc-whitespace-cleanups-more.patch sched2-sched-domain-sysctl-use-ctl_unnumbered.patch mm-implement-swap-prefetching-use-ctl_unnumbered.patch swap_prefetch-vs-zoned-counters.patch add-include-linux-freezerh-and-move-definitions-from-prefetch.patch sysctl-fix-sys_sysctl-interface-of-ipc-sysctls-fix-3.patch readahead-kconfig-options-fix.patch readahead-minmax_ra_pages.patch readahead-sysctl-parameters.patch readahead-sysctl-parameters-use-ctl_unnumbered.patch readahead-context-based-method-locking-fix.patch readahead-context-based-method-locking-fix-2.patch readahead-call-scheme-ifdef-fix.patch readahead-call-scheme-build-fix.patch readahead-nfsd-case-fix.patch make-copy_from_user_inatomic-not-zero-the-tail-on-i386-vs-reiser4.patch resier4-add-include-linux-freezerh-and-move-definitions-from.patch make-kmem_cache_destroy-return-void-reiser4.patch reiser4-hardirq-include-fix.patch reiser4-run-truncate_inode_pages-in-reiser4_delete_inode.patch reiser4-get_sb_dev-fix.patch reiser4-vs-zoned-allocator.patch reiser4-temp-fix.patch reiser4-kmem_cache_t-removal.patch hpt3xx-rework-rate-filtering-tidy.patch jmicron-warning-fix.patch video-get-the-default-mode-from-the-right-database.patch various-fbdev-files-mark-structs-fix.patch backlight-lcd-remove-dependenct-from-the-framebuffer-layer-tidy.patch gxfb-fixups-for-the-amd-geode-gx-tidy.patch gxfb-support-flat-panel-timings-tidy.patch gxfb-support-command-line-options-tidy.patch md-allow-reads-that-have-bypassed-the-cache-to-be-retried-on-failure-fix.patch statistics-infrastructure-fix-buffer-overflow-in-histogram-with-linear-tidy.patch extend-notifier_call_chain-to-count-nr_calls-made.patch extend-notifier_call_chain-to-count-nr_calls-made-fixes-2.patch define-and-use-new-eventscpu_lock_acquire-and-cpu_lock_release-fix.patch eliminate-lock_cpu_hotplug-in-kernel-schedc-fix.patch gtod-persistent-clock-support-i386.patch hrtimers-clean-up-locking-fix.patch updated-hrtimers-state-tracking.patch updated-i386-convert-to-clock-event-devices.patch updated-i386-convert-to-clock-event-devices-fix.patch updated-gtod-mark-tsc-unusable-for-highres-timers.patch round_jiffies-infrastructure-fix.patch clocksource-small-cleanup-2-fix.patch kvm-make-the-vcpu-execution-loop-an-arch-operation-build-fix.patch kvm-make-__set_efer-an-arch-operation-build-fix.patch slim-main-include-fix.patch nr_blockdev_pages-in_interrupt-warning.patch device-suspend-debug.patch mutex-subsystem-synchro-test-module-fix.patch slab-leaks3-default-y.patch x86-kmap_atomic-debugging.patch vdso-print-fatal-signals-use-ctl_unnumbered.patch restore-rogue-readahead-printk.patch put_bh-debug.patch e1000-printk-warning-fixes.patch acpi_format_exception-debug.patch add-debugging-aid-for-memory-initialisation-problems-fix.patch squash-ipc-warnings.patch squash-udf-warnings.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html