- Added the anonymous pagefault scalability enhancement patches.
I remain fairly dubious about this - it seems a fairly specific and
complex piece of work to speed up one extremely specific part of one type of
computer's one type of workload. Surely there's a better way :(
The patches at present spit warnings or don't compile on lots of
architectures. x86, x86_64, ppc64 and ia64 are OK.
- There's a pretty large x86_64 update here which naughty maintainer wants
in 2.6.13. Extra testing, please.
- Dropped git-net.patch (davem's net devel tree). I'm seeing weird TCP
hangs. I'm fairly sure they're present in mainline, but was unable to
reproduce it without git-net.patch when I was actually trying.
Changes since 2.6.13-rc3-mm2:
linus.patch
git-acpi.patch
git-cryptodev.patch
git-drm.patch
git-audit.patch
git-input.patch
git-kbuild.patch
git-libata-adma-mwi.patch
git-libata-chs-support.patch
git-libata-passthru.patch
git-libata-promise-sata-pata.patch
git-netdev-chelsio.patch
git-netdev-e100.patch
git-netdev-smc91x-eeprom.patch
git-netdev-ieee80211-wifi.patch
git-ocfs2.patch
git-serial.patch
git-scsi-block.patch
git-scsi-misc-drivers-scsi-chc-remove-devfs-stuff.patch
Subsystem trees
-i2c-mpc-restore-code-removed.patch
-really-__nocast-annotate-kmalloc_node.patch
-mips-fbdev-kconfig-fix.patch
-md-when-resizing-an-array-we-need-to-update-resync_max_sectors-as-well-as-size.patch
-uml-readd-missing-define-to-arch-um-makefile-i386.patch
-uml-add-dependency-to-arch-um-makefile-for-parallel-builds.patch
-uml-add-skas0-command-line-option.patch
-uml-update-module-interface.patch
-uml-fix-misdeclared-function.patch
-x86_64-fix-smp-boot-lockup-on-some-machines.patch
-try_to_freeze-call-fixes.patch
-add-missing-tvaudio-try_to_freeze.patch
-fix-missing-refrigerator-invocation-in-jffs2.patch
-as-ioched-tunable-encoding-fix.patch
-reiserfs-fix-deadlock-in-inode-creation-failure-path-w-default-acl.patch
-ext2-drop-quota-reference-before-releasing-inode.patch
-ext3-drop-quota-references-before-releasing-inode.patch
-pnp-build-fix.patch
-address-bug-using-smp_processor_id-in-preemptible.patch
-watchdog-add-missing-0x-in-alim1535_wdtc.patch
-itimer-fixes.patch
-add-pcibios_bus_to_resource-for-parisc.patch
-autofs4-fix-infamous-busy-inodes-after-umount-message.patch
-scsi_scan-check-return-code-from-scsi_sysfs_add_sdev.patch
-i4l-add-olitec-isdn-pci-card-in-hisax-gazel-driver.patch
-jsm-use-dynamic-major-number-allocation.patch
-jsm-warning-fixes.patch
-undo-mempolicy-shared-policy-rbtree-microoptimization.patch
-ub-fix-for-blank-cds.patch
-fix-xip-sparse-file-handling-in-ext2.patch
-check_user_page_readable-deadlock-fix.patch
-mpt-fusion-free-irq-in-suspend.patch
-eurotechwdt-build-fix.patch
-softdog-build-fix.patch
-x86_64-fsnotify-build-fix.patch
-fix-warning-in-powernow-k8c.patch
-speakup-build-fix.patch
-drm-via-fix-sparse-warnings.patch
-netfilter-build-fix.patch
-ipv6_netfilter_init-warning-fix.patch
-consolidate-config_watchdog_nowayout-handling.patch
-madvise-does-not-always-return-ebadf-on-non-file.patch
-remove-bogus-warning-in-page_allocc.patch
-ppc-ppc64-use-kconfighz.patch
-ppc32-update-defconfigs.patch
-ppc32-add-proper-prototype-for-cpm2_reset.patch
-ppc32-make-the-uarts-on-mpc824x-individual-platform-devices.patch
-ppc32-8xx-update-datatlbmiss-exception-comment.patch
-ppc-fix-compilation-error-with-config_pq2fads.patch
-ppc32-fix-typo-in-setup-of-2nd-pci-bus-on-85xx.patch
-ppc32-fix-building-of-prpmc750.patch
-ppc32-fix-building-of-radstone_ppc7d.patch
-ppc32-fix-dma_map_page-to-use-page_to_bus.patch
-ppc32-fix-440sp-mal-channels-count.patch
-ppc32-fix-building-of-tqm8260-board.patch
-ppc64-update-defconfigs.patch
-ppc64-hide-config_adb.patch
-ppc64-genrtc-build-fix.patch
-make-a-few-functions-static-in-pmac_setupc.patch
-ppc64-dynamically-allocate-segment-tables.patch
-ppc64-remove-another-fixed-address-constraint.patch
-mips-remove-obsolete-giu-driver-for-vr41xx.patch
-i386-add-missing-kconfig-help-text.patch
-m32r-add-missing-kconfig-help-text.patch
-cris-update-1-17-arch-split.patch
-cris-update-2-17-configuration-and-build.patch
-cris-update-3-17-console.patch
-cris-update-4-17-debug.patch
-cris-update-5-17-drivers.patch
-cris-update-6-17-i-o-and-dma-allocator.patch
-cris-update-7-17-irq.patch
-cris-update-8-17-misc-patches.patch
-cris-update-9-17-mm.patch
-cris-update-10-17-pci.patch
-cris-update-11-17-profiler.patch
-cris-update-12-17-serial-port-driver.patch # rmk said no
-cris-update-13-17-smp.patch
-cris-update-14-17-synchronous-serial-port-driver.patch
-cris-update-15-17-updates-for-2612.patch
-cris-update-17-17-new-subarchitecture-v32.patch
-cris-update-17-17-new-subarchitecture-v32-swapped-kmalloc-args.patch
-cris-ide-driver.patch
-v850-define-pfn_valid.patch
-v850-const-qualify-first-parameter-of-find_next_zero_bit.patch
-v850-add-defconfigs.patch
-v850-update-ioremap-return-type-and-add-ioread-iowrite-functions.patch
-v850-add-pte_file.patch
-v850-update-pci-support.patch
-v850-define-l1_cache_shift-and-l1_cache_shift_max.patch
-s390-spin-lock-retry.patch
-s390-find_next_zero_bit-fixes.patch
-s390-atomic64-inline-functions.patch
-s390-external-call-performance.patch
-s390-debug-data-for-ifcc-ccc.patch
-s390-resource-accessibility-event-handling.patch
-s390-fba-dasd-i-o-errors.patch
-s390-free-dasd-slab-cache.patch
-s390-channel-tape-fixes.patch
-s390-31-bit-memory-size-limit.patch
-s390-cpu-timer-reset-in-machine-check-handler.patch
-s390-use-__cpcmd-in-vmcp_write.patch
-fortuna-random-driver-fix.patch
-stale-posix-lock-handling.patch
-cciss-per-disk-queue.patch
-kernel-capabilityc-add-kerneldoc.patch
-kernel-cpusetc-add-kerneldoc-fix-typos.patch
-kernel-crash_dumpc-add-kerneldoc.patch
-tpm-support-for-infineon-tpm.patch
-ppc64-tpm_infineon-build-fix.patch
-mbcache-remove-unused-mb_cache_shrink-parameter.patch
-documentation-changes-document-the-required-udev-version.patch
-reiserfs-doesnt-use-mbcache.patch
-ia64-halt-hangup-fix.patch
-turn-many-if-undefined_string-into-ifdef-undefined_string.patch
-riva-wundef-fix.patch
-sys_get_thread_area-does-not-clear-the-returned-argument.patch
-serial_core-whitespace-fix.patch
-add-text-for-dealing-with-dot-releases-to-readme.patch
-ib-update-fmr-functions.patch
-ib-update-mad-client-api.patch
-ib-add-mad-helper-functions.patch
-ib-combine-some-mad-routines.patch
-ib-change-saving-of-users-send-wr_id-in-mad.patch
-ib-change-ib_mad_send_wr_private-struct.patch
-ib-fix-timeout-cancelled-mad-handling.patch
-ib-minor-cleanup-during-mad-startup-and-shutdown.patch
-ib-add-ib_coalesce_recv_mad-to-mad.patch
-ib-add-automatic-retries-to-mad-layer.patch
-ib-simplify-calling-of-list_del-in-mad.patch
-ib-eliminate-mad-cache-leak-associated-with-local.patch
-ib-add-ib_modify_mad-api-to-mad.patch
-ib-optimize-canceling-a-mad.patch
-ib-fix-a-couple-of-mad-code-paths.patch
-ib-add-ib_create_ah_from_wc-to-ib-verbs.patch
-ib-a-couple-of-ib-core-bug-fixes.patch
-ib-introduce-rmpp-apis.patch
-ib-add-rmpp-implementation.patch
-ib-add-service-record-support-to-sa-client.patch
-ib-add-the-header-file-for-kernel-cm-communications.patch
-ib-add-the-kernel-cm-implementation.patch
-ib-user-mad-abi-changes-to-support-rmpp.patch
-ib-implementation-for-rmpp-support-in-user-mad.patch
-ib-add-the-header-file-for-user-space-cm.patch
-ib-add-kernel-portion-of-user-cm-implementation.patch
-ib-add-kernel-portion-of-user-cm-implementation-fix.patch
-ib-hook-up-userspace-cm-to-the-make-system.patch
-ib-eliminate-sparse-warnings-in-sa-client.patch
-ib-add-core-locking-documentation-to-infiniband.patch
-dvico-fusion-dvb-t1-tuner-lg-z201-fix.patch
-drivers-media-video-tveepromc-possible-cleanups.patch
-video_saa7134-must-depend-on-sound.patch
-v4l-fix-regression-modprobe-bttv-freezes-the-computer.patch
-dvb-v4l-lgdt3302-isolate-tuner.patch
-dvb-v4l-rf-input-selection-fix.patch
-lgdt3302-warning-fix.patch
-dvb-v4l-cx88-cleanup.patch
-v4l-hybrid-dvb-fix-warnings-with-wundef.patch
-v4l-hybrid-dvb-move-defines-to-makefile.patch
-v4l-hybrid-dvb-rename-cflags-from-config_dvb_xxxx-back.patch
-v4l-fix-tuning-with-mxb-driver.patch
-dvb-rename-lgdt3302-frontend-module-to-lgdt330x.patch
-serial-mri-mri-pcids1-dual-port-serial-card.patch
-clean-up-the-old-digi-support-and-rescue-it.patch
-cpm_uart-use-dpram-for-early-console.patch
-fbmon-horizontal-frequency-rounding-fix.patch
-fbmem-use-unregister_chrdev-on-unload.patch
-radeonfb-clean-up-edid-sysfs-attribute.patch
-fbdev-colormap-fixes.patch
-dont-repaint-the-cursor-when-it-is-disabled.patch
-fbdev-update-info-cmap-when-setting-cmap-from-user-kernelspace.patch
-clean-up-inline-static-vs-static-inline.patch
-update-credits-entry-and-listings-in-source-files-for-jesper.patch
Merged
+bio_clone-fix.patch
Fix BIO cloning bug - might be the cause of data corruption on some MD
setups.
+x86_64-always-ack-ipis-even-on-errors.patch
+x86_64-update-defconfig.patch
+x86_64-use-for_each_cpu_mask-for-clustered-ipi-flush.patch
+x86_64-i386-x86_64-remove-prototypes-for-not-existing.patch
+x86_64-move-cpu_present-possible_map-parsing-earlier.patch
+x86_64-minor-clean-up-to-cpu-setup-use-smp_processor_id-instead-of-custom-hack.patch
+x86_64-clarify-booting-processor-message.patch
+x86_64-some-cleanup-in-setup64c.patch
+x86_64-remove-unused-variable-in-delayc.patch
+x86_64-improve-config_gart_iommu-description-and-make-it-default-y.patch
+x86_64-some-updates-for-boot-optionstxt.patch
+x86_64-fix-some-comments-in-tlbflushh.patch
+x86_64-remove-obsolete-eat_key-prototype.patch
+x86_64-fix-some-typos-in-systemh-comments.patch
+x86_64-fix-incorrectly-defined-msr_k8_syscfg.patch
+x86_64-fix-overflow-in-numa-hash-function-setup.patch
+x86_64-print-a-boot-message-for-hotplug-memory-zones.patch
+x86_64-create-per-cpu-machine-check-sysfs-directories.patch
+x86_64-remove-ia32_-build-tools-in-makefile.patch
+x86_64-remove-the-broadcast-options-that-were-added-for.patch
+x86_64-support-more-than-8-cores-on-amd-systems.patch
+x86_64-icecream-has-no-way-of-detecting-assembler-level.patch
+x86_64-turn-bug-data-into-valid-instruction.patch
+x86_64-when-running-cpuid4-need-to-run-on-the-correct.patch
+x86_64-remove-unnecessary-include-in-faultc.patch
+x86_64-small-assembly-improvements.patch
+x86_64-switch-to-the-interrupt-stack-when-running-a.patch
+x86_64-fix-srat-handling-on-non-dual-core-systems.patch
+x86_64-fix-gcc-4-warning-in-sched_find_first_bit.patch
+x86_64-use-msleep-in-smpbootc.patch
+x86_64-remove-unused-variable-in-k8-busc.patch
+x86_64-fix-cpu_to_node-setup-for-sparse-apic_ids.patch
x86_64 update
+cs89x0-collect-tx_bytes-statistics.patch
net driver stats fix
+ppc32-inotify-syscalls.patch
+ppc64-inotify-syscalls.patch
ppc32/ppc64 syscall table updates
+selinux-default-labeling-of-mls-field.patch
SELinux multilevel security feature work
+pcdp-if-pcdp-contains-parity-information-use-it.patch
pcdp driver fix
+qla2xxx-mark-dependency-on-fw_loader.patch
qlogic Kconfig fix
+alpha-fix-statement-with-no-effect-warnings.patch
Alpha warning fixes
+mm-ensure-proper-alignment-for-node_remap_start_pfn.patch
memory management initialisation fix
-move-truncate_inode_pages-into-delete_inode.patch
This is in git-ocfs2.patch
+mpt-fusion-free-irq-in-suspend.patch
mpt-fusion power management fix
+gregkh-driver-stable_api_nonsense.txt-fixes.patch
+gregkh-driver-speakup-kconfig-fix.patch
+gregkh-driver-speakup-kconfig-fix-2.patch
+gregkh-driver-speakup-build-fix.patch
Greg's driver core tree
+drivers-char-drm-drm_pcic-fix-warnings.patch
Warning fixes
+gregkh-i2c-w1-netlink-callbacks.patch
Greg's i2c tree
+git-net-gregkh-i2c-w1-netlink-callbacks-fix.patch
Fix incompatibility between git-net and Greg's i2c tree
+include-net-ieee80211h-must-include-linux-wirelessh.patch
net build fix
+gregkh-pci-pci-restore-bar-values.patch
Greg's PCI tree
-revert-gregkh-pci-pci-assign-unassigned-resources.patch
Hopefully no longer needed
+mpt-fusion-dv-fixes.patch
Try to fix some mpt-fusion domain validation problems (doesn't seem to work)
+gregkh-usb-usb-ftdi_sio-new-devices.patch
+gregkh-usb-usb-ftdi_sio-rts-dtr.patch
+gregkh-usb-usb-ftdi_sio-timeout-fix.patch
+gregkh-usb-usb-usbfs-dont-leak-data.patch
+gregkh-usb-usb-usbnet-remove-unused-vars.patch
+gregkh-usb-usb-dont-delete-unregistered-interfaces.patch
+gregkh-usb-usb-usbserial-remove-unneeded-casts.patch
Greg's USB tree
-proc-pid-numa_maps-to-show-on-which-nodes-pages-reside-tidy.patch
Folded into proc-pid-numa_maps-to-show-on-which-nodes-pages-reside.patch
+vm-add-capabilites-check-to-set_zone_reclaim.patch
Make sys_set_zone_reclaim() privileged
+page-fault-patches-introduce-pte_xchg-and-pte_cmpxchg.patch
+page-fault-patches-introduce-pte_xchg-and-pte_cmpxchg-fix.patch
+page-fault-patches-optional-page_lock-acquisition-in.patch
+page-fault-patches-optional-page_lock-acquisition-in-tidy.patch
+page-fault-patches-no-pagetable-lock-in-do_anon_page.patch
anonymous pagefault scalability enhancements.
-net-add-driver-for-the-nic-on-cell-blades-kconfig-fix.patch
Folded into net-add-driver-for-the-nic-on-cell-blades.patch
-sk98lin-basic-suspend-resume-support-fix.patch
Folded into sk98lin-basic-suspend-resume-support.patch
+ppc32-mark-boards-that-dont-build-as-broken.patch
+ppc32-add-440ep-support.patch
+ppc32-add-bamboo-platform.patch
+ppc32-add-bamboo-defconfig.patch
+ppc32-remove-board-support-for-adir.patch
+ppc32-remove-board-support-for-ash.patch
+ppc32-remove-board-support-for-beech.patch
+ppc32-remove-defconfig-for-cedar.patch
+ppc32-remove-board-support-for-k2.patch
+ppc32-remove-board-support-for-mcpn765.patch
+ppc32-remove-board-support-for-menf1.patch
+ppc32-remove-board-support-for-oak.patch
+ppc32-remove-board-support-for-rainier.patch
+ppc32-remove-board-support-for-redwood.patch
+ppc32-remove-board-support-for-sm850.patch
+ppc32-remove-board-support-for-spd823ts.patch
+ppc32-remove-board-support-for-ep405.patch
+ppc32-remove-board-support-for-pcore.patch
ppc32 work
+ppc64-remove-nested-feature-sections.patch
ppc64 cleanup
+ptrace-i386-fix-syscall-audit-interaction-with-singlestep.patch
+uml-support-ptrace-adds-the-host-sysemu-support-for-uml-and-general-usage.patch
+uml-support-reorganize-ptrace_sysemu-support.patch
+uml-support-add-ptrace_sysemu_singlestep-option-to-i386.patch
+sysemu-fix-sysaudit--singlestep-interaction.patch
UML feature work
-areca-raid-linux-scsi-driver-fix.patch
Folded into areca-raid-linux-scsi-driver.patch (will be dropped from next -mm)
-relayfs-cancel-work-on-close-reset.patch
-relayfs-add-private-data-to-channel-struct.patch
-relayfs-function-docfix.patch
-relayfs-add-relayfs-website-to-documentation.patch
-avoid-lookup_hash-usage-in-relayfs.patch
Folded into relayfs.patch
-add-skip_hangcheck_timer.patch
Dropped, but will come back.
-yealink-updates.patch
-yealink-updates-0701.patch
Folded into new-driver-for-yealink-usb-p1k-phone.patch
+support-powering-sharp-zaurus-sl-5500-lcd-up-and-down.patch
Make Pavel's Zausus happier
+radix_tag_get-differentiate-between-no-present-node-and-tag-unset-cases.patch
+radix_tag_get-differentiate-between-no-present-node-and-tag-unset-cases-fix.patch
radix_tree_tag_get() API enhancement.
+aio-fix-races-in-callback-path.patch
AIO race fix
+auxiliary-vector-cleanups.patch
SHuffle the AT_* auxiliary vector defines around
+pnp-consolidate-kmalloc-wrappers.patch
PNP cleanup
-fix-race-in-do_get_write_access-warning-fix.patch
Folded into fix-race-in-do_get_write_access.patch
-kprobes-prevent-possible-race-conditions-generic-fixes.patch
Folded into kprobes-prevent-possible-race-conditions-generic.patch
-kprobes-prevent-possible-race-conditions-ia64-changes-fixes.patch
Folded into kprobes-prevent-possible-race-conditions-ia64-changes.patch
-connector-exit-notifier-fix.patch
-connector-exit-notifier-remove-the-union-declaration.patch
-connector-exit-notifier-fix-missing-dependencies-in.patch
Folded into connector-exit-notifier.patch
-connector-add-a-fork-connector-use-after-free-fix.patch
-connector-add-a-fork-connector-remove-the-union-declaration-fork.patch
-connector-fork-notifier-fix-missing-dependencies-in.patch
Folded into connector-add-a-fork-connector.patch
-jbd-split-checkpoint-lists-tweaks.patch
Folded into jbd-split-checkpoint-lists.patch
-spinlock-consolidation-m32r-fix.patch
-spinlock-consolidation-up-spinlocks-gcc-29x-fix.patch
-page_uptodate-locking-scalability-fix.patch
-spinlock-consolidation-s390-fix.patch
Folded into spinlock-consolidation.patch
-revert-fix-broken-kmalloc_node-in-rc1-rc2.patch
-numa-aware-slab-allocator-v5-fix.patch
-numa-slab-allocator-cleanups.patch
Folded into numa-aware-slab-allocator-v5.patch
-iteraid-remove-ite_ioc_get_driver_version.patch
Folded into iteraid.patch (will be dropped from next -mm)
-page-owner-tracking-leak-detector-tidy.patch
Folded into page-owner-tracking-leak-detector.patch
-perfctr-handle-non-of-ppc32-platforms.patch
-perfctr-syscall-numbering-fixups.patch
Folded into perfctr.patch
+split-general-cache-manager-from-cachefs-fs-fscache-cleanups.patch
clean up split-general-cache-manager-from-cachefs.patch
-files-break-up-files-struct-warning-fix.patch
Folded into files-break-up-files-struct.patch
-asfs-filesystem-driver-fixes.patch
Folded into asfs-filesystem-driver.patch
-v9fs-documentation-makefiles-configuration-resend-take-2.patch
Folded into v9fs-documentation-makefiles-configuration.patch
-v9fs-vfs-file-dentry-and-directory-operations-fix-fsf-postal-address-in-source-headers.patch
-v9fs-vfs-file-dentry-and-directory-operations-resend-take-2.patch
Folded into v9fs-vfs-file-dentry-and-directory-operations.patch
-v9fs-vfs-inode-operations-fix-fsf-postal-address-in-source-headers.patch
-v9fs-vfs-inode-operations-resend-take-2.patch
Folded into v9fs-vfs-inode-operations.patch
-v9fs-vfs-superblock-operations-and-glue-fix-fsf-postal-address-in-source-headers.patch
-v9fs-vfs-superblock-operations-and-glue-resend-take-2.patch
-v9fs-vfs-superblock-operations-and-glue-replace-v9fs_block_bits-with-fls.patch
Folded into v9fs-vfs-superblock-operations-and-glue.patch
-v9fs-9p-protocol-implementation-fix-fsf-postal-address-in-source-headers.patch
-v9fs-9p-protocol-implementation-resend-take-2.patch
Folded into v9fs-9p-protocol-implementation.patch
-v9fs-transport-modules-fix-fsf-postal-address-in-source-headers.patch
-v9fs-transport-modules-fix-timeout-segfault-corner-case.patch
-v9fs-transport-modules-resend-take-2.patch
Folded into v9fs-transport-modules.patch
-v9fs-debug-and-support-routines-fix.patch
-v9fs-debug-and-support-routines-fix-fsf-postal-address-in-source-headers.patch
-v9fs-debug-and-support-routines-resend-take-2.patch
Folded into v9fs-debug-and-support-routines.patch
-v9fs-clean-up-vfs_inode-and-setattr-functions-2.patch
Folded into v9fs-clean-up-vfs_inode-and-setattr-functions.patch
+serial-add-mmio-support-to-8250_pnp.patch
Add MMIO support to the UART driver
-device-mapper-fix-deadlocks-in-core-prep-fix.patch
Folded into device-mapper-fix-deadlocks-in-core-prep.patch
-timer-initialization-cleanup-define_timer-pluto-fix.patch
Folded into timer-initialization-cleanup-define_timer.patch
All 633 patches:
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc3/2.6.13-rc3-mm3/patch-list
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This patch broke the compilation on i386 with CONFIG_SMP=n and
CONFIG_MTRR=y:
<-- snip -->
...
CC arch/i386/kernel/cpu/mtrr/main.o
arch/i386/kernel/cpu/mtrr/main.c: In function 'set_mtrr':
arch/i386/kernel/cpu/mtrr/main.c:225: error: 'ipi_handler' undeclared (first use in this function)
arch/i386/kernel/cpu/mtrr/main.c:225: error: (Each undeclared identifier is reported only once
arch/i386/kernel/cpu/mtrr/main.c:225: error: for each function it appears in.)
make[3]: *** [arch/i386/kernel/cpu/mtrr/main.o] Error 1
<-- snip -->
Signed-off-by: Adrian Bunk <bu...@stusta.de>
--- linux-2.6.13-rc3-mm3/arch/i386/kernel/cpu/mtrr/main.c.old 2005-07-28 12:36:09.000000000 +0200
+++ linux-2.6.13-rc3-mm3/arch/i386/kernel/cpu/mtrr/main.c 2005-07-28 12:39:35.000000000 +0200
@@ -221,9 +221,11 @@
atomic_set(&data.count, num_booting_cpus() - 1);
atomic_set(&data.gate,0);
+#ifdef CONFIG_SMP
/* Start the ball rolling on other CPUs */
if (smp_call_function(ipi_handler, &data, 1, 0) != 0)
panic("mtrr: timed out waiting for other CPUs\n");
+#endif /* CONFIG_SMP */
local_irq_save(flags);
> CC arch/i386/kernel/cpu/mtrr/main.o
>arch/i386/kernel/cpu/mtrr/main.c: In Funktion »set_mtrr«:
>arch/i386/kernel/cpu/mtrr/main.c:225: error: `ipi_handler' undeclared (first use in this function)
>arch/i386/kernel/cpu/mtrr/main.c:225: error: (Each undeclared identifier is reported only once
>arch/i386/kernel/cpu/mtrr/main.c:225: error: for each function it appears in.)
>make[3]: *** [arch/i386/kernel/cpu/mtrr/main.o] Fehler 1
>make[2]: *** [arch/i386/kernel/cpu/mtrr] Fehler 2
>make[1]: *** [arch/i386/kernel/cpu] Fehler 2
>make: *** [arch/i386/kernel] Fehler 2
>
>I'm in a hurry, so I got no time to see what's causing this. Config is attached.
>
>
I have the same error here (MTRR enabled and no SMP).
I solved it by adding #ifdef CONFIG_SMP around lines 224 to 226 in this
file, but I am not sure it is totally safe.
I don't see why smp specific operations are not protected this way in
this file.
Regards,
Alexandre
There are two problems with the compilation of arch/x86_64/kernel/nmi.c.
The following patch fixes them.
Greets,
Rafael
Signed-off-by: Rafael J. Wysocki <r...@sisk.pl>
--- linux-2.6.13-rc3-mm3/arch/x86_64/kernel/nmi.c 2005-07-28 21:05:53.000000000 +0200
+++ patched/arch/x86_64/kernel/nmi.c 2005-07-28 18:58:02.000000000 +0200
@@ -152,8 +152,10 @@ int __init check_nmi_watchdog (void)
printk(KERN_INFO "testing NMI watchdog ... ");
+#ifdef CONFIG_SMP
if (nmi_watchdog == NMI_LOCAL_APIC)
smp_call_function(nmi_cpu_busy, (void *)&endflag, 0, 0);
+#endif
for (cpu = 0; cpu < NR_CPUS; cpu++)
counts[cpu] = cpu_pda[cpu].__nmi_count;
@@ -290,7 +292,7 @@ void enable_timer_nmi_watchdog(void)
static int nmi_pm_active; /* nmi_active before suspend */
-static int lapic_nmi_suspend(struct sys_device *dev, u32 state)
+static int lapic_nmi_suspend(struct sys_device *dev, pm_message_t state)
{
nmi_pm_active = nmi_active;
disable_lapic_nmi_watchdog();
Thanks.
> --- linux-2.6.13-rc3-mm3/arch/x86_64/kernel/nmi.c 2005-07-28 21:05:53.000000000 +0200
> +++ patched/arch/x86_64/kernel/nmi.c 2005-07-28 18:58:02.000000000 +0200
> @@ -152,8 +152,10 @@ int __init check_nmi_watchdog (void)
>
> printk(KERN_INFO "testing NMI watchdog ... ");
>
> +#ifdef CONFIG_SMP
> if (nmi_watchdog == NMI_LOCAL_APIC)
> smp_call_function(nmi_cpu_busy, (void *)&endflag, 0, 0);
> +#endif
>
> for (cpu = 0; cpu < NR_CPUS; cpu++)
> counts[cpu] = cpu_pda[cpu].__nmi_count;
This bit is no longer needed, since
alpha-fix-statement-with-no-effect-warnings.patch got dropped.
> I remain fairly dubious about this - it seems a fairly specific and
> complex piece of work to speed up one extremely specific part of one type of
> computer's one type of workload. Surely there's a better way :(
The patches provide the basis for more work on this issue. But we need to
start somewhere. The specific issue addresses in the initial patchset is
becoming a common case for multi-core applications.
> The patches at present spit warnings or don't compile on lots of
> architectures. x86, x86_64, ppc64 and ia64 are OK.
I have just sent a fix to you this morning when I got your messages.
Sadly I do not have access to the architectures that failed (arm, alpha
and ppc32) but the fix simply removes code that is not used for these
arches.
ARM can't support atomic page table operations as such - the Linux view
of the page table is separate from the hardware view, and there's some
CPU specific code which translates from the Linux view to the hardware
view.
Looking at the actual patches, particularly pte_xchg-and-pte_cmpxchg.patch
combined with the above, the ARM solution would be to go back to using
non-atomic operations here (since we can't do this atomically.) Also,
since the MMU will only ever read from the page tables, I don't think
we need to play any games with clearing out ptes before we replace the
value.
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
I have some questions :-)
Reiser4:
why there are undefined functions implemented that currently not in use?
This messages appeared first time in 2.6.13-rc3-mm2.
Any why it complains even CONFIG_REISER4_DEBUG is not set?
Please have a look at the -->snip
SCSI:
CONFIG_SCSI_QLA2XXX=y ? I haven't choose that one..I never did..and
where is the config located?
In the place where it is..is no option marked.
Thanks for help,
Greets
Michael
--> snip
fs/reiser4/plugin/item/static_stat.c:1158:5: warning:
"REISER4_DEBUG_OUTPUT" is not defined
fs/reiser4/plugin/item/static_stat.c:1176:5: warning:
"REISER4_DEBUG_OUTPUT" is not defined
fs/reiser4/plugin/item/static_stat.c:1194:5: warning:
"REISER4_DEBUG_OUTPUT" is not defined
fs/reiser4/plugin/item/static_stat.c:1213:5: warning:
"REISER4_DEBUG_OUTPUT" is not defined
CC fs/reiser4/plugin/item/sde.o
In file included from fs/reiser4/plugin/item/../plugin.h:26,
from fs/reiser4/plugin/item/sde.c:11:
fs/reiser4/plugin/item/../node/node40.h:83:5: warning: "GUESS_EXISTS" is
not defined
fs/reiser4/plugin/item/sde.c:21:5: warning: "REISER4_DEBUG_OUTPUT" is
not defined
CC fs/reiser4/plugin/item/cde.o
In file included from fs/reiser4/plugin/item/../plugin.h:26,
from fs/reiser4/plugin/item/cde.c:65:
fs/reiser4/plugin/item/../node/node40.h:83:5: warning: "GUESS_EXISTS" is
not def
That's due to the code using `#if CONFIG_xx' instead of `#ifdef'.
>
> SCSI:
>
> CONFIG_SCSI_QLA2XXX=y ? I haven't choose that one..I never did..and
> where is the config located?
Someone was doing wrong things in the Makefile. I think that has been
subsequently fixed.
> Hello Andrew,
>
> I have some questions :-)
> Reiser4:
>
> why there are undefined functions implemented that currently not in use?
> This messages appeared first time in 2.6.13-rc3-mm2.
>
> Any why it complains even CONFIG_REISER4_DEBUG is not set?
> Please have a look at the -->snip
These aren't functions, these are #if FOO where FOO isn't #define'd.
In most such cases, changing the #if ti #ifdef fixes the issue (and in
some rare cases these warnings fix bugs).
Since 2.6.13-rc3-mm2 the gcc Warning for such things was activated.
> SCSI:
>
> CONFIG_SCSI_QLA2XXX=y ? I haven't choose that one..I never did..and
> where is the config located?
> In the place where it is..is no option marked.
It's located in drivers/scsi/qla2xxx/Kconfig.
It shouldn't [1] activate any code, it's simply a helper option that
tells whether the QLA* options should be shown.
> Thanks for help,
>
> Greets
> Michael
>
>
> --> snip
> fs/reiser4/plugin/item/static_stat.c:1158:5: warning:
> "REISER4_DEBUG_OUTPUT" is not defined
> fs/reiser4/plugin/item/static_stat.c:1176:5: warning:
> "REISER4_DEBUG_OUTPUT" is not defined
> fs/reiser4/plugin/item/static_stat.c:1194:5: warning:
> "REISER4_DEBUG_OUTPUT" is not defined
> fs/reiser4/plugin/item/static_stat.c:1213:5: warning:
> "REISER4_DEBUG_OUTPUT" is not defined
> CC fs/reiser4/plugin/item/sde.o
> In file included from fs/reiser4/plugin/item/../plugin.h:26,
> from fs/reiser4/plugin/item/sde.c:11:
> fs/reiser4/plugin/item/../node/node40.h:83:5: warning: "GUESS_EXISTS" is
> not defined
> fs/reiser4/plugin/item/sde.c:21:5: warning: "REISER4_DEBUG_OUTPUT" is
> not defined
> CC fs/reiser4/plugin/item/cde.o
> In file included from fs/reiser4/plugin/item/../plugin.h:26,
> from fs/reiser4/plugin/item/cde.c:65:
> fs/reiser4/plugin/item/../node/node40.h:83:5: warning: "GUESS_EXISTS" is
> not def
cu
Adrian
[1] that's currently not completely true, but the problem will soon be
fixed
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
This patch is wrong since it adds a select to SCSI_QLA2XXX.
Please drop it.
Andrew Vasquez had a better fix and is discussing it with James.
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
-
> ARM can't support atomic page table operations as such - the Linux view
> of the page table is separate from the hardware view, and there's some
> CPU specific code which translates from the Linux view to the hardware
> view.
Yes. The patches fall back to nonatomic operations for ARM.
> Looking at the actual patches, particularly pte_xchg-and-pte_cmpxchg.patch
> combined with the above, the ARM solution would be to go back to using
> non-atomic operations here (since we can't do this atomically.) Also,
> since the MMU will only ever read from the page tables, I don't think
> we need to play any games with clearing out ptes before we replace the
> value.
Ok. Then you can use a part of the patches. Define ptep_xchg and
ptep_cmpxchg for ARM so that you do can avoid intermittently clearing
ptes.
Here is the patch that I sent to Andrew in the morning:
Index: linux-2.6.13-rc3/mm/memory.c
===================================================================
--- linux-2.6.13-rc3.orig/mm/memory.c 2005-07-27 15:34:41.000000000 -0700
+++ linux-2.6.13-rc3/mm/memory.c 2005-07-28 09:24:05.000000000 -0700
@@ -2071,6 +2071,7 @@
*/
page_table_atomic_start(mm);
pgd = pgd_offset(mm, address);
+#ifndef __PAGETABLE_PUD_FOLDED
if (unlikely(pgd_none(*pgd))) {
pud_t *new;
@@ -2084,6 +2085,7 @@
if (!pgd_test_and_populate(mm, pgd, new))
pud_free(new);
}
+#endif
pud = pud_offset(pgd, address);
if (unlikely(pud_none(*pud))) {
I previously posted a patch that got rid of one of these, find it
attached again below.
Signed-off-by: Nick Sillik <n.si...@temple.edu>
>------------------------------------------------------------------------
>
>diff -urN a/fs/reiser4/plugin/node/node40.h b/fs/reiser4/plugin/node/node40.h
>--- a/fs/reiser4/plugin/node/node40.h 2005-07-27 18:14:04.000000000 -0400
>+++ b/fs/reiser4/plugin/node/node40.h 2005-07-27 18:14:53.000000000 -0400
>@@ -80,7 +80,7 @@
> int check_node40(const znode * node, __u32 flags, const char **error);
> int parse_node40(znode * node);
> int init_node40(znode * node);
>-#if GUESS_EXISTS
>+#ifdef GUESS_EXISTS
> int guess_node40(const znode * node);
> #endif
> void change_item_size_node40(coord_t * coord, int by);
>
>
Thanks, this fixed the complains on compiling kernel :-)
here again I have two problems. With 2.6.13-rc3-mm3 I have problems
using my SATA drives on Intel ICH6.
The kernel can't route there IRQs or can't discover them. the option
irqpoll got them to work now.
The problem is new because 2.6.13-rc3[-mm1,mm2] work without any problems.
The SATA drives are Samsung HD160JJ SATAII. The mainboard I use is a
ASUS P4GPL-X.
Second one is about Intel HD-Codec (snd-hda-intel) on modprobe when
loading the module it gives me
---> snip
hda_codec: Unknown model for ALC880, trying auto-probe from BIOS...
Unable to handle kernel NULL pointer dereference at virtual address 00000000
printing eip:
f88713f4
*pde = 00000000
Oops: 0002 [#1]
PREEMPT
last sysfs file:
Modules linked in: snd_hda_intel snd_hda_codec nvidia
CPU: 0
EIP: 0060:[<f88713f4>] Tainted: P VLI
EFLAGS: 00010293 (2.6.13-rc3-mm3pm)
eax: fffffffe ebx: f3b33548 ecx: 00000000 edx: 00000000
esi: f3b33400 edi: 00000000 ebp: 00000006 esp: f0371ddc
ds: 007b es: 007b ss: 0068
Process modprobe (pid: 7398, threadinfo=f0370000 task=f4183560)
Stack: 00000000 00000000 00000000 00000000 f3b33400 f3b33548 f0f1d000
f8871933
f3b33400 f0f1d000 f8871bbd f8875478 f88748f6 00000001 f886d77e
00000f00
00000005 00000000 f0f1d000 f54d04c0 00000000 f886d984 00000f00
00000002
Call Trace:
[<f8871933>]
[<f8871bbd>]
[<f886d77e>]
[<f886d984>]
[<f886d592>]
[<c025b87e>]
[<f8f5c871>]
[<f8f5c100>]
[<f8f5c220>]
[<f8f5d533>]
[<c026866a>]
[<c02686be>]
[<c02686f6>]
[<c02bf763>]
[<c02bf899>]
[<c02bee1a>]
[<c02bf8b6>]
[<c02bf860>]
[<c02bf30c>]
[<c02bfc85>]
[<c0268958>]
[<c013b5c9>]
[<c0102fcb>]
Code: 31 c0 53 83 ec 10 89 d3 89 e7 f3 ab 8b 12 31 ff 83 fa 00 7e 45 89
f6 0f b7 44 7b 04 8d 48 ec 66 83 f9 03 77 13 8b 56 3c 83 e8 16 <66> 89
04 7a 8b 13 c7 04 8c 01 00 00 00 47 39 fa 7f da 31 ff 83
--> snip
I also attached the kernel-config and the lspci -vv output.
Thanks again for the patience and the help.
Best regards
Michael
OK
BTW, -mm3 works fine for me on two AMD64 boxes except for one thing:
On Asus L5D, if I resume the box from disk on battery power (ie the box is started
on battery power and resumes from disk), it hangs solid right after copying
the image (100% of the time). If it is resumed on AC power, everything is fine.
Well, -mm1[1-2] did the same thing so I think I'll create a Bugzilla entry and
start a binary search. :-( The -git[5-9] kernels are not affected by this issue.
Greets,
Rafael
PS
Could you please tell me how I can figure out the order in which the individual
patches in -mm have been applied?
--
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
> Hello Andrew,
>
> here again I have two problems. With 2.6.13-rc3-mm3 I have problems
> using my SATA drives on Intel ICH6.
> The kernel can't route there IRQs or can't discover them. the option
> irqpoll got them to work now.
> The problem is new because 2.6.13-rc3[-mm1,mm2] work without any
> problems.
>
> The SATA drives are Samsung HD160JJ SATAII. The mainboard I use is a
> ASUS P4GPL-X.
>
> Second one is about Intel HD-Codec (snd-hda-intel) on modprobe when
> loading the module it gives me
>
> ---> snip
> hda_codec: Unknown model for ALC880, trying auto-probe from BIOS...
> Unable to handle kernel NULL pointer dereference at virtual address
> 00000000
Hi!
Sorry for interfering but I have the Asus P5RD1-VD with the Realtek
ALC861 (10b9:5461) and with 2.6.13.3 I've got the problem that he
doesn't find /dev/mixer or anything after modprobe snd-hda-intel...
After I attached
http://dlsvr01.asus.com/pub/ASUS/mb/socket775/P5RD1-V/Audio_Linux.zip
(which doesn't work) to a mail in alsa-devel they told me...
"[...]
It tries to access the ALi controller in the same way as the Intel
controller.
It may be possible that the ALi chip was designed to be compatible
with Intel's, but that they got some detail wrong. Or that the driver
gets some detail wrong. There's no way to know without docs[...]"
(not in the archive, yet...)
Dirk
It's all in the series file:
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc3/2.6.13-rc3-mm3/patch-series
The simplest way to do a binary search is to grab
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc3/2.6.13-rc3-mm3/2.6.13-rc3-mm3-broken-out.tar.bz2
and to place all the patches in ./patches/, place the series file in
./series, download and install https://savannah.nongnu.org/projects/quilt/
and do the binary search with `quilt push' and `quilt pop'.
It's pretty simple - it'll take ten minutes to get the hang of it. You
need to create a separate copy of the series file and edit it to record
where you're up to in the search. From experience ;)
OK. Please generate the full dmesg output for -mm2 and for -mm3 and run
`diff -u dmesg.mm2 dmesg.mm3' and send it? And keep those files because we
may end up needing to add them to an acpi bugzilla entry ;)
> The SATA drives are Samsung HD160JJ SATAII. The mainboard I use is a
> ASUS P4GPL-X.
>
> Second one is about Intel HD-Codec (snd-hda-intel) on modprobe when
> loading the module it gives me
>
> ---> snip
> hda_codec: Unknown model for ALC880, trying auto-probe from BIOS...
Does -mm2 print that `unknown model' message?
> Unable to handle kernel NULL pointer dereference at virtual address 00000000
> printing eip:
> f88713f4
> *pde = 00000000
> Oops: 0002 [#1]
> PREEMPT
> last sysfs file:
> Modules linked in: snd_hda_intel snd_hda_codec nvidia
> CPU: 0
> EIP: 0060:[<f88713f4>] Tainted: P VLI
Please verify that it happens without the nvidia module loaded.
> EFLAGS: 00010293 (2.6.13-rc3-mm3pm)
> eax: fffffffe ebx: f3b33548 ecx: 00000000 edx: 00000000
> esi: f3b33400 edi: 00000000 ebp: 00000006 esp: f0371ddc
> ds: 007b es: 007b ss: 0068
> Process modprobe (pid: 7398, threadinfo=f0370000 task=f4183560)
> Stack: 00000000 00000000 00000000 00000000 f3b33400 f3b33548 f0f1d000
> f8871933
> f3b33400 f0f1d000 f8871bbd f8875478 f88748f6 00000001 f886d77e
> 00000f00
> 00000005 00000000 f0f1d000 f54d04c0 00000000 f886d984 00000f00
> 00000002
> Call Trace:
> [<f8871933>]
> [<f8871bbd>]
Odd trace. Do you have CONFIG_KALLSYMS enabled? If not, please turn it on.
Is still regressed as of 2.6.12 for me, at least. Crashes in TSC sync.
Talked to Andi about it at OLS, but then drank too much to remember the
conclusion ... however, it's still broken ;-)
Matrix is here (see left hand column).
Example boot log is here:
http://test.kernel.org/9447/debug/console.log
http://test.kernel.org/9398/debug/console.log
Works with mainline still (including -rc4) ... hopefully those patches
aren't on their way upstream anytime soon ;-)
M.
Thanks!
M.
Does Eric's recent fix fix it?
From: Eric W. Biederman <ebie...@xmission.com>
sync_tsc was using smp_call_function to ask the boot processor to report
it's tsc value. smp_call_function performs an IPI_send_allbutself which is
a broadcast ipi. There is a window during processor startup during which
the target cpu has started and before it has initialized it's interrupt
vectors so it can properly process an interrupt. Receveing an interrupt
during that window will triple fault the cpu and do other nasty things.
Why cli does not protect us from that is beyond me.
The simple fix is to match ia64 and provide a smp_call_function_single.
Which avoids the broadcast and is more efficient.
This certainly fixes the problem of getting stuck on boot which was very
easy to trigger on my SMP Hyperthreaded Xeon, and I think it fixes it for
the right reasons.
I believe this patch suffers from apicid versus logical cpu number
confusion. I copied the basic logic from smp_send_reschedule and I can't
find where that translates from the logical cpuid to apicid. So it isn't
quite correct yet. It should be close enough that it shouldn't be too hard
to finish it up.
More bug fixes after I have slept but I figured I needed to get this
one out for review.
Signed-off-by: Eric W. Biederman <ebie...@xmission.com>
Signed-off-by: Andrew Morton <ak...@osdl.org>
---
arch/x86_64/kernel/smp.c | 65 +++++++++++++++++++++++++++++++++++++++++++
arch/x86_64/kernel/smpboot.c | 18 +++++++----
include/asm-x86_64/smp.h | 2 +
3 files changed, 79 insertions(+), 6 deletions(-)
diff -puN arch/x86_64/kernel/smpboot.c~x86_64-sync_tsc-fix-the-race-so-we-can-boot arch/x86_64/kernel/smpboot.c
--- devel/arch/x86_64/kernel/smpboot.c~x86_64-sync_tsc-fix-the-race-so-we-can-boot 2005-07-28 22:07:55.000000000 -0700
+++ devel-akpm/arch/x86_64/kernel/smpboot.c 2005-07-28 22:07:55.000000000 -0700
@@ -280,7 +280,7 @@ get_delta(long *rt, long *master)
return tcenter - best_tm;
}
-static __cpuinit void sync_tsc(void)
+static __cpuinit void sync_tsc(unsigned int master)
{
int i, done = 0;
long delta, adj, adjust_latency = 0;
@@ -294,9 +294,17 @@ static __cpuinit void sync_tsc(void)
} t[NUM_ROUNDS] __cpuinitdata;
#endif
+ printk(KERN_INFO "CPU %d: Syncing TSC to CPU %u.\n",
+ smp_processor_id(), master);
+
go[MASTER] = 1;
- smp_call_function(sync_master, NULL, 1, 0);
+ /* It is dangerous to broadcast IPI as cpus are coming up,
+ * as they may not be ready to accept them. So since
+ * we only need to send the ipi to the boot cpu direct
+ * the message, and avoid the race.
+ */
+ smp_call_function_single(master, sync_master, NULL, 1, 0);
while (go[MASTER]) /* wait for master to be ready */
no_cpu_relax();
@@ -340,16 +348,14 @@ static __cpuinit void sync_tsc(void)
printk(KERN_INFO
"CPU %d: synchronized TSC with CPU %u (last diff %ld cycles, "
"maxerr %lu cycles)\n",
- smp_processor_id(), boot_cpu_id, delta, rt);
+ smp_processor_id(), master, delta, rt);
}
static void __cpuinit tsc_sync_wait(void)
{
if (notscsync || !cpu_has_tsc)
return;
- printk(KERN_INFO "CPU %d: Syncing TSC to CPU %u.\n", smp_processor_id(),
- boot_cpu_id);
- sync_tsc();
+ sync_tsc(boot_cpu_id);
}
static __init int notscsync_setup(char *s)
diff -puN arch/x86_64/kernel/smp.c~x86_64-sync_tsc-fix-the-race-so-we-can-boot arch/x86_64/kernel/smp.c
--- devel/arch/x86_64/kernel/smp.c~x86_64-sync_tsc-fix-the-race-so-we-can-boot 2005-07-28 22:07:55.000000000 -0700
+++ devel-akpm/arch/x86_64/kernel/smp.c 2005-07-28 22:07:55.000000000 -0700
@@ -294,6 +294,71 @@ void unlock_ipi_call_lock(void)
}
/*
+ * this function sends a 'generic call function' IPI to one other CPU
+ * in the system.
+ */
+static void __smp_call_function_single (int cpu, void (*func) (void *info), void *info,
+ int nonatomic, int wait)
+{
+ struct call_data_struct data;
+ int cpus = 1;
+
+ data.func = func;
+ data.info = info;
+ atomic_set(&data.started, 0);
+ data.wait = wait;
+ if (wait)
+ atomic_set(&data.finished, 0);
+
+ call_data = &data;
+ wmb();
+ /* Send a message to all other CPUs and wait for them to respond */
+ send_IPI_mask(cpumask_of_cpu(cpu), CALL_FUNCTION_VECTOR);
+
+ /* Wait for response */
+ while (atomic_read(&data.started) != cpus)
+ cpu_relax();
+
+ if (!wait)
+ return;
+
+ while (atomic_read(&data.finished) != cpus)
+ cpu_relax();
+}
+
+/*
+ * Run a function on another CPU
+ * <func> The function to run. This must be fast and non-blocking.
+ * <info> An arbitrary pointer to pass to the function.
+ * <nonatomic> Currently unused.
+ * <wait> If true, wait until function has completed on other CPUs.
+ * [RETURNS] 0 on success, else a negative status code.
+ *
+ * Does not return until the remote CPU is nearly ready to execute <func>
+ * or is or has executed.
+ */
+
+int smp_call_function_single (int cpu, void (*func) (void *info), void *info,
+ int nonatomic, int wait)
+{
+
+ int me = get_cpu(); /* prevent preemption and reschedule on another processor */
+
+ if (cpu == me) {
+ printk("%s: trying to call self\n", __func__);
+ put_cpu();
+ return -EBUSY;
+ }
+ spin_lock_bh(&call_lock);
+
+ __smp_call_function_single(cpu, func,info,nonatomic,wait);
+
+ spin_unlock_bh(&call_lock);
+ put_cpu();
+ return 0;
+}
+
+/*
* this function sends a 'generic call function' IPI to all other CPUs
* in the system.
*/
diff -puN include/asm-x86_64/smp.h~x86_64-sync_tsc-fix-the-race-so-we-can-boot include/asm-x86_64/smp.h
--- devel/include/asm-x86_64/smp.h~x86_64-sync_tsc-fix-the-race-so-we-can-boot 2005-07-28 22:07:55.000000000 -0700
+++ devel-akpm/include/asm-x86_64/smp.h 2005-07-28 22:07:55.000000000 -0700
@@ -48,6 +48,8 @@ extern void unlock_ipi_call_lock(void);
extern int smp_num_siblings;
extern void smp_flush_tlb(void);
extern void smp_message_irq(int cpl, void *dev_id, struct pt_regs *regs);
+extern int smp_call_function_single (int cpuid, void (*func) (void *info), void *info,
+ int retry, int wait);
extern void smp_send_reschedule(int cpu);
extern void smp_invalidate_rcv(void); /* Process an NMI */
extern void zap_low_mappings(void);
_
Oh, thanks. That's about 8,349 bugs ago and I'd forgotten.
> Works with mainline still (including -rc4) ... hopefully those patches
> aren't on their way upstream anytime soon ;-)
Well can you identify the offending patch(es)? If so, I'll exterminate them.
> start a binary search
Note that if you work from my git import, git has a nice tree bisection
option.
That tree may be very helpful if the regression is hidden in one of the
git trees imported into -mm, as it allows you to pinpoint the exact change
-- as opposed to "it happened somewhere in git-large-foobar-update.patch".
--
Matthias Urlichs | {M:U} IT Design @ m-u-it.de | sm...@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
- -
British education is probably the best in the world, if you can survive
it. If you can't there is nothing left for you but the diplomatic corps.
-- Peter Ustinov
Is that documented anywhere?
Andrew Morton:
> Matthias Urlichs <sm...@smurf.noris.de> wrote:
> > Note that if you work from my git import, git has a nice tree bisection
> > option.
>
> Is that documented anywhere?
*checking* Apparently not, not unless you count the git list's archive.
(It's git-rev-list.)
I'll fix that.
--
Matthias Urlichs | {M:U} IT Design @ m-u-it.de | sm...@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
- -
The makers may make
and the users may use,
but the fixers must fix
with but minimal clues
Andrew Morton:
> > Note that if you work from my git import, git has a nice tree bisection
> > option.
>
> Is that documented anywhere?
http://lkml.org/lkml/2005/6/24/234
Basically, you do this:
$ set -o noclobber
$ git-rev-tree --bisect ^good1 ^good2 bad > .git/refs/heads/tryN
$ git checkout tryN
(Initially, "good" is v2.6.12 or whatever version last worked for you;
"bad" is "master", thus:
$ git-rev-tree --bisect ^v2.6.12 master > .git/refs/heads/tryN
)
Build kernel, test. If good, add tryN to the list of good kernels, above;
if bad, replace "bad" with "tryN". N += 1. Repeat.
--
Matthias Urlichs | {M:U} IT Design @ m-u-it.de | sm...@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
- -
IT'S HERE AT LAST: Rush job; nobody knew it was coming
Wheeeeeeee! that does indeed seem to work. Nice job.
> I believe this patch suffers from apicid versus logical cpu number
> confusion. I copied the basic logic from smp_send_reschedule and I can't
> find where that translates from the logical cpuid to apicid. So it isn't
> quite correct yet. It should be close enough that it shouldn't be too hard
> to finish it up.
>
> More bug fixes after I have slept but I figured I needed to get this
> one out for review.
Eric, when you have a final version, throw it over to me, and I'll give
that one a spin-test too ...
Thanks!
M.
>> From: Eric W. Biederman <ebie...@xmission.com>
>>
>> sync_tsc was using smp_call_function to ask the boot processor to report
>> it's tsc value. smp_call_function performs an IPI_send_allbutself which is
>> a broadcast ipi. There is a window during processor startup during which
>> the target cpu has started and before it has initialized it's interrupt
>> vectors so it can properly process an interrupt. Receveing an interrupt
>> during that window will triple fault the cpu and do other nasty things.
>
> Wheeeeeeee! that does indeed seem to work. Nice job.
Welcome. I hadn't how many people were tracking this.
>> I believe this patch suffers from apicid versus logical cpu number
>> confusion. I copied the basic logic from smp_send_reschedule and I can't
>> find where that translates from the logical cpuid to apicid. So it isn't
>> quite correct yet. It should be close enough that it shouldn't be too hard
>> to finish it up.
>>
>> More bug fixes after I have slept but I figured I needed to get this
>> one out for review.
>
> Eric, when you have a final version, throw it over to me, and I'll give
> that one a spin-test too ...
With respect to the fix that is final. The rest of the bug
fixes in my queue are for other problems.
Mostly my concerns are with respect to apicid vs logical cpu
numbers that I'm not certain are handled properly in the code.
genapic_flat doesn't seem to do any translation. And I don't
recall if boot_cpu_id is an apic_id or a logical cpu number.
On most hardware it is 0 in either case so it doesn't matter.
Eric