2.6.21-rc7-mm2
Subsystems (14)
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
- this has everything which is in 2.6.21. Plus more!
- a number of nasty bugs were fixed. This should be (a lot) more stable than 2.6.21-rc7-mm1.
Some sysfs-related problems are still expected. Fiddling with the setting of CONFIG_SYSFS_DEPRECATED might help avoid them.
- the 64-bit futex patches and (consequently) the private-futex patches were dropped. Because the 64-bit futex patches need to be reconstituted.
- the unprivileged mounts code was dropped, pending an updated patch series
- lots of minor fbdev bugs were fixed
Boilerplate:
- See the `hot-fixes' directory for any important updates to this patchset.
- To fetch an -mm tree using git, use (for example)
git-fetch git://git.kernel.org/pub/scm/linux/kernel/git/smurf/linux-trees.git tag v2.6.16-rc2-mm1 git-checkout -b local-v2.6.16-rc2-mm1 v2.6.16-rc2-mm1
- -mm kernel commit activity can be reviewed by subscribing to the mm-commits mailing list.
echo "subscribe mm-commits" | mail [email protected]
- If you hit a bug in -mm and it is not obvious which patch caused it, it is most valuable if you can perform a bisection search to identify which patch introduced the bug. Instructions for this process are at
http://www.zip.com.au/~akpm/linux/patches/stuff/bisecting-mm-trees.txt
But beware that this process takes some time (around ten rebuilds and reboots), so consider reporting the bug first and if we cannot immediately identify the faulty patch, then perform the bisection search.
- When reporting bugs, please try to Cc: the relevant maintainer and mailing list on any email.
- When reporting bugs in this kernel via email, please also rewrite the email Subject: in some manner to reflect the nature of the bug. Some developers filter by Subject: when looking for messages to read.
- Occasional snapshots of the -mm lineup are uploaded to ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/mm/ and are announced on the mm-commits list.
Changes since 2.6.21-rc7-mm1:
origin.patch
git-acpi.patch
git-alsa.patch
git-agpgart.patch
git-arm.patch
git-avr32.patch
git-cifs.patch
git-cpufreq.patch
git-powerpc.patch
git-drm.patch
git-dvb.patch
git-gfs2-nmw.patch
git-hid.patch
git-ia64.patch
git-ieee1394.patch
git-infiniband.patch
git-input.patch
git-jfs.patch
git-kbuild.patch
git-kvm.patch
git-leds.patch
git-libata-all.patch
git-md-accel.patch
git-mips.patch
git-mmc.patch
git-mtd.patch
git-ubi.patch
git-netdev-all.patch
git-e1000.patch
git-net.patch
git-ioat.patch
git-nfs-server-cluster-locking-api.patch
git-ocfs2.patch
git-parisc.patch
git-r8169.patch
git-selinux.patch
git-pciseg.patch
git-s390.patch
git-s390-fixup.patch
git-sh.patch
git-scsi-misc.patch
git-block.patch
git-watchdog.patch
git-ipwireless_cs.patch
git-cryptodev.patch
git-gccbug.patch
git trees
-fix-possible-null-pointer-access-in-8250-serial-driver.patch -fix-oom-killing-processes-wrongly-thought-mpol_bind.patch -char-mxser_new-fix-recursive-locking.patch -char-mxser_new-fix-tiocmiwait.patch
-char-mxser-fix-tiocmiwait.patch -taskstats-fix-the-structure-members-alignment-issue.patch -maintainers-use-listslinux-foundationorg.patch -paride-drivers-initialize-spinlocks.patch
-add-mbuesch-to-mailmap.patch
-fix-spelling-in-drivers-video-kconfig.patch -page-migration-fix-nr_file_pages-accounting.patch -ieee1394-update-maintainers-database.patch -v9fs-dont-use-primary-fid-when-removing-file.patch -acpi-thermal-fix-mod_timer-interval.patch -allow-reading-tainted-flag-as-user.patch -do-not-truncate-irq-number-for-icom-adapter.patch -hwmon-w83627ehf-dont-redefine-region_offset.patch -reiserfs-fix-xattr-root-locking-refcount-bug.patch -char-icom-mark-__init-as-__devinit.patch -fault-injection-add-entry-to-maintainers.patch -8250-fix-possible-deadlock-between-serial8250_handle_port-and-serial8250_interrupt.patch -oom-kill-all-threads-that-share-mm-with-killed-task.patch -fix-x86-fix-potential-overflow-in-perfctr-reservation.patch -cleanup-cpufreq-kconfig-options.patch -ppc-pci_32-stop-using-old-hotplug-unsafe-apis.patch -jdelvare-i2c-i2c-delete-scx200_i2c.patch -jdelvare-i2c-i2c-obsolete-ixp2000-and-ixp4xx.patch -jdelvare-hwmon-hwmon-smsc47m1-use-dynamic-attributes.patch -ide-cmd64x-remove-broken-sw-mw-dma-support.patch -ide-cmd64x-interrupt-status-fixes-resend.patch -ide-cmd64x-add-fix-enablebits.patch -ide-cmd64x-procfs-code-fixes-cleanups.patch -ide-cmd64x-use-interrupt-status-from-mrdmode-register.patch -ide-cmd64x-add-back-mwdma-support.patch -git-netdev-all-baycom_ser_fdx-fix.patch -fix-sparse-errors-in-drivers-net-ibmvethc.patch -netdrv-perform-missing-csum_offset-conversions.patch -x86_64-mm-remove-noreplacement.patch
-fix-x86_64-mm-fam10-mwait-idle.patch -more-fix-x86_64-mm-fam10-mwait-idle.patch -fix-x86_64-mm-sched-clock-share.patch -revert-x86_64-mm-account-for-module-percpu-space-separately-from-kernel-percpu.patch -rename-the-parainstructions-symbols-to-be-consistent-with-the-others.patch -rename-the-parainstructions-symbols-to-be-consistent-with-the-others-fix.patch -i386-sysenter-arch-pages-fix.patch -i386-acpi-remove-earlyquirk-warning.patch -i386-mcheck-p4-grotesque-and-needless-warning-fix.patch -i386-pgd-clone-under-lock-fix.patch
-vmi-supports-compat-vdso.patch -resurrect-the-vmi-lazy-mode-fixes-fix.patch
-vmi-kmap_atomic_pte-fix.patch
-vmi-timer-update.patch
-i386-pte-drop-ptep_get_and_clear-paravirt-op.patch -mtrr-adds-mtrr_save_fixed_ranges-for-use-in-two-later-patches.patch -mtrr-save-the-mtrrs-of-the-bsp-before-booting-an-ap.patch -mtrr-save-and-restore-the-fixed-range-mtrrs-of-the-bsp-when-suspending.patch -mtrr-enable-support-for-fixed-range-iorrs-to-keep-rdmem-wrmem-in-sync.patch -i386-map-enough-initial-memory-to-create-lowmem-mappings.patch -mm-only-i386-for-debugging-make-the-initial-page-table-setup-less-forgiving.patch -depcac-fix-handling-of-platorm_device_add-failure.patch -clean-up-elf-note-generation.patch -deflate-stack-usage-in-lib-inflatec.patch
Merged into mainline or a subsystem tree
+make-sysrq-t-show-all-tasks-again.patch +ia64-race-flushing-icache-in-do_no_page-path.patch
2.6.21 queue (sigh)
-acpi-asus_acpi-support-f2je-model.patch
Dropped
+git-agp-build-fix.patch
Fix git-agpgart.patch
+git-cpufreq-borkage-fix.patch
Fix git-cpufreq.patch
+gregkh-driver-uevent-use-add_uevent_var-instead-of-open-coding-it.patch
Driver tree update
+fix-gregkh-driver-uevent-use-add_uevent_var-instead-of-open-coding-it.patch +sysfs-oops-workaround.patch
Fix things in driver tree
+jdelvare-i2c-i2c-deprecate-specific-gpio-drivers.patch +jdelvare-i2c-i2c-tiny-usb-new-driver.patch +jdelvare-i2c-i2c-s3c2410-setup-time.patch +jdelvare-i2c-i2c-s3c2410-fix-bug-in-releasing-driver.patch
i2c tree updates
+jdelvare-hwmon-hwmon-smsc47m1-use-dynamic-attributes.patch
hwmon tree update
+gfs2-printk-warning-fixes.patch
Fix git-gfs2-nmw.patch
+ohci1394-fix-mistake-in-printk-message.patch
+fw-device-printk-fix.patch
+ieee1394-iso-needs-schedh.patch
1394 fixes
-git-infiniband-make-it-build-hack.patch
Unneeded
+input-convert-from-class-devices-to-standard-devices.patch +input-evdev-implement-proper-locking.patch +mousedev-fix.patch
+mousedev-fix-2.patch
input stuff
+ahci-crash-fix.patch +ata-printk-warning-fixes.patch +ata_timing-ensure-t-cycle-is-always-correct.patch +pata_ali-more-work.patch
ata fixes
+ide-cmd64x-fix-multiword-and-remove-single-word-dma-support.patch +ide-cmd64x-interrupt-status-fixes-take-2.patch +ide-cmd64x-add_fix-enablebits-take-2.patch +ide-cmd64x-procfs-code-fixes_cleanups-take-2.patch +ide-cmd64x-use-interrupt-status-from-mrdmode-register-take-2.patch +ide-aec62xx-fix-pio_dma-setup-issues.patch
IDE tree updates
+git-mtd-build-fix.patch
Fix git-mtd.patch
-git-netdev-all-fixup.patch
Unneeded
+git-netdev-all-export-ieee80211_debug_level.patch
Fix git-netdev-all
+netlink-dont-reinitialize-callback-mutex.patch
+sctp_getsockopt_local_addrs-type-fix.patch
net things
-pcmcia-irq-probe-can-be-done-without-risking-an-irq-storm.patch
Dropped
+ide-cs-recognize-2gb-compactflash-from-transcend.patch
ide-cs fix
+s390-net-lcs-convert-to-the-kthread-api-fix.patch
Fix s390-net-lcs-convert-to-the-kthread-api.patch
+x86_64-mm-deflate-stack-usage-in-lib-inflate_c.patch +x86_64-mm-page-align-the-gdt.patch +x86_64-mm-convert-pda-into-the-percpu-section.patch +x86_64-mm-paravirt-non-gpl-export.patch +x86_64-mm-cleanups-to-help-using-per-cpu-variables-from-asm.patch +x86_64-mm-define-per_cpu_offset.patch
+x86_64-mm-fix-up-gdt-bugs.patch +x86_64-mm-map-enough-initial-memory-to-create-lowmem-mappings.patch +x86_64-mm-incremental-update-for-i386-and-x86-64-check_bugs.patch +x86_64-mm-paravirt-flush-lazy-mmu-updates-on-kunmap_atomic.patch +x86_64-mm-paravirt-fix-paravirt-documentation.patch +x86_64-mm-in-compat-mode-the-return-value-here-was-uninitialized_.patch +x86_64-mm-kremove-a-warning-about-unused-variable-in-config_acpi-compilation_.patch +x86_64-mm-cleanup-arch-i386-kernel-cpu-mcheck-p4_c.patch +x86_64-mm-vmi-now-that-the-vdso-can-be-relocated-we-can-support-it-in-vmi-configurations.patch +x86_64-mm-vmi-kmap-atomic-pte.patch +x86_64-mm-vmi-convert-vmi-timer-to-use-clock-events.patch +x86_64-mm-paravirt-drop-unused-ptep_get_and_clear.patch +x86_64-mm-paravirt-rename-parainstructions.patch +x86_64-mm-clean-up-elf-note-generation.patch +x86_64-mm-mtrr-adds-mtrr_save_fixed_ranges-for-use-in-two-later-patches.patch +x86_64-mm-mtrr-save-the-mtrrs-of-the-bsp-before-booting-an-ap.patch +x86_64-mm-mtrr-save-and-restore-the-fixed-range-mtrrs-of-the-bsp-when-suspending.patch +x86_64-mm-mtrr-enable-support-for-fixed-range-iorrs-to-keep-rdmem-wrmem-in-sync.patch +x86_64-mm-nmi-hack-revert.patch
+x86_64-mm-nmi-watchdog-ops.patch
+x86_64-mm-nmi-wd-ops-64bit.patch
+x86_64-mm-compat-siocgifcount.patch
+x86_64-mm-apic-timer-calibration.patch
+x86_64-mm-vdso.patch
x86 tree updates
+fix-x86_64-mm-nmi-watchdog-ops.patch
Fix it
+x86_64-unexport-cpu_llc_id.patch +i386-efi-fix-proc-iomem-type-for-kexec-tools.patch
x86 updates
+fix-slab-corruption-running-ip6sic.patch
net fix
+create-the-zone_movable-zone-align-zone_movable-to-a-max_order_nr_pages-boundary.patch
Fix create-the-zone_movable-zone.patch
+handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64.patch
Fix Mel's MM patches som emore
+introduce-high_order-delineating-easily-reclaimable-orders-cleanups.patch +lumpy-increase-pressure-at-the-end-of-the-inactive-list-cleanups.patch
clean up lumpy reclaim code
+slub-core-update-cpu-after-new_slab.patch
slub fix
+quicklists-for-page-table-pages-avoid-useless-virt_to_page-conversion-fix.patch
Fix crashes in the quiklist code
+madv_free-lazytlb-fix.patch
Fix madv_free code
+mm-document-fault_data-and-flags.patch +mm-fix-handling-of-panic_on_oom-when-cpusets-are-in-use.patch
MM udpates
+return-eperm-not-echild-on-security_task_wait-failure-fix.patch
Fix return-eperm-not-echild-on-security_task_wait-failure.patch
+pm-introduce-suspend-notifiers-rev-2.patch
swsusp update
+enlarge-console-name.patch
prefix for fixes-and-cleanups-for-earlyprintk-aka-boot-console.patch
+ignore-stolen-time-in-the-softlockup-watchdog.patch +ignore-stolen-time-in-the-softlockup-watchdog-fix.patch +add-touch_all_softlockup_watchdogs.patch
Bring these back
-report-that-kernel-is-tainted-if-there-were-an-oops-before.patch
Experimentally drop this - the oops output has been odd-looking.
+copy-i_flags-to-ext2-inode-flags-on-write.patch
+fix-chapter-reference-in-codingstyle.patch
+sleep-during-spinlock-in-tpm-driver.patch
Misc
-fix-pf_nofreeze-and-freezeable-race.patch +fix-kthread_create-vs-freezer-theoretical-race-dont-be-obnoxious.patch +fix-pf_nofreeze-and-freezeable-race-2.patch
Update thread-management patches in -mm
+rtc-update-vr41xx-alarm-handling.patch
rtc driver fixes
-sys_futex64-allows-64bit-futexes.patch
-sys_futex64-allows-64bit-futexes-fix.patch -sys_futex64-allows-64bit-futexes-workaround.patch -sys_futex64-allows-64bit-futexes-workaround-for-uml.patch -sys_futex64-allows-64bit-futexes-get_futex_key-must-check-proper-alignement-for-64bit-futexes.patch -futex-new-private-futexes.patch
Dropped
-lguest-the-host-code-vs-sys_futex64-allows-64bit-futexes-get_futex_key-must-check-proper-alignement-for-64bit-futexes.patch -lguest-the-host-code-vs-futex-new-private-futexes.patch
Dropped as a result of futex droppage
+lguest-build-hack.patch
+lguest-build-hack-2.patch
Make lguest build against x86 tree
-unprivileged-mounts-add-user-mounts-to-the-kernel.patch -unprivileged-mounts-allow-unprivileged-umount.patch -unprivileged-mounts-account-user-mounts.patch -unprivileged-mounts-account-user-mounts-fix.patch -unprivileged-mounts-propagate-error-values-from-clone_mnt.patch -unprivileged-mounts-propagate-error-values-from-clone_mnt-fix.patch -unprivileged-mounts-allow-unprivileged-bind-mounts.patch -unprivileged-mounts-allow-unprivileged-bind-mounts-fix.patch -unprivileged-mounts-put-declaration-of-put_filesystem-in-fsh.patch -unprivileged-mounts-allow-unprivileged-mounts.patch -unprivileged-mounts-allow-unprivileged-fuse-mounts.patch
Dropped
+epson1355fbc-fix-error-handling-code.patch +nvidiafb-vga-state-save-and-restore.patch +savagefb-rework-i2c-bit-access.patch +savagefb-vga-state-save-and-restore.patch +fbdev-link-vgastateo-using-kconfig.patch +fbcon-delay-screen-update-when-setting-the-mode-of.patch +nvidiafb-fix-sparse-warning.patch +rivafb-fix-io-access.patch +fbdev-kill-sparse-warning-in-deferred-io.patch +fbdev-add-sparse-annotations-in-svgalibc.patch +arcfb-kill-sparse-warning.patch +s3fb-add-sparse-annotations.patch +hecubafb-kill-sparse-warnings.patch +i810fb-fix-incorrect-frequency-mask.patch +vt-add-documentation-for-new-boot-sysfs-options.patch +skeletonfb-documentation-error-fixes.patch +fbdev-add-drawing-functions-for-framebuffers-in-system.patch +arcfb-use-sys-instead-of-cfb-drawing-functions.patch +hecubafb-use-sys-instead-of-cfb-drawing-functions.patch +vfb-use-sys-instead-of-cfb-drawing-functions.patch +fbdev-pass-struct-fb_info-to-fb_read-and-fb_write.patch +fbdev-add-fb_read-fb_write-functions-for-framebuffers.patch +arcfb-us-fb_sys_read.patch +hecubafb-us-fb_sys_read.patch +vfb-us-fb_sys_read-and-fb_sys_write.patch +fbdev-consolidate-common-drawing-functions-into-a.patch +fbdev-advertise-limitation-of-drawing-engine.patch +fbcon-font-setting-should-check-limitation-of-driver.patch +vga16fb-restrict-to-blit-rectangles-with-widths-of.patch +s3fb-limit-8x16-rectangles-when-tileblitting-is-enabled.patch +fbdev-add-tile-operation-to-get-the-maximum-length.patch +s3fb-implement-fb_get_tilemax.patch +fbcon-check-if-the-character-count-can-be-handled.patch +fbdev-save-the-activate-field-before-calling-fb_check_var.patch +s3fb-driver-fixes.patch +vmlfb-framebuffer-driver-for-intel-vermilion-range.patch +nvidiafb-rivafb-switch-to-pci_get-refcounting.patch +pm2fb-3dlabs-permedia-2v-reference-board-added.patch +pm2fb-permedia-2v-memory-clock-setting.patch +pm2fb-pixclock-setting-restriction.patch +nvidiafb-prevent-triggering-of-softlockup.patch
fbdev bugstomp
-cfq-debugging-stuff.patch
Dropped due to rejects
All 1993 patches:
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/patch-list
Quoted 9 lines · Andrew Morton
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
- this has everything which is in 2.6.21. Plus more!
- a number of nasty bugs were fixed. This should be (a lot) more stable than 2.6.21-rc7-mm1.
I get this warning here :
drivers/net/Kconfig:2327:warning: 'select' used by config symbol 'UCC_GETH' refer to undefined symbol 'UCC_FAST'
Regards,
Gabriel
Andrew Morton
maintainerQuoted 11 lines · On Thu, 26 Apr 2007 13:47:14 +0200 Gabriel C <[email protected]> wrote:
Quoted 9 lines · Andrew Morton
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
- this has everything which is in 2.6.21. Plus more!
- a number of nasty bugs were fixed. This should be (a lot) more stable than 2.6.21-rc7-mm1.
Quoted 5 lines
I get this warning here :
drivers/net/Kconfig:2327:warning: 'select' used by config symbol '
UCC_GETH' refer to undefined symbol 'UCC_FAST'
Yes, we get so many of those that I tend to ignore them, assuming that someone will pick it up and fix it.
This one was added by git-powerpc, presumably 7d776cb596994219584257eb5956b87628e5deaf "QE: automatically select QE options"
Quoted 19 lines · On Thu, 26 Apr 2007 13:37:20 -0700 Andrew Morton wrote:
Quoted 11 lines · On Thu, 26 Apr 2007 13:47:14 +0200 Gabriel C <[email protected]> wrote:
Quoted 9 lines · Andrew Morton
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
- this has everything which is in 2.6.21. Plus more!
- a number of nasty bugs were fixed. This should be (a lot) more stable than 2.6.21-rc7-mm1.
Quoted 5 lines
I get this warning here :
drivers/net/Kconfig:2327:warning: 'select' used by config symbol '
UCC_GETH' refer to undefined symbol 'UCC_FAST'
Quoted 6 lines
Yes, we get so many of those that I tend to ignore them, assuming that someone will pick it up and fix it.
This one was added by git-powerpc, presumably
7d776cb596994219584257eb5956b87628e5deaf"QE: automatically select QE options"
There was a similar problem with PS3_xyz (don't recall exactly which PS3_option it was) that was "solved" by introducing an intermediate config symbol IIRC. Maybe that trick^W fix can be done here also...
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Quoted 22 lines · Randy Dunlap
Quoted 21 lines · On Thu, 26 Apr 2007 13:37:20 -0700 Andrew Morton wrote:
Quoted 11 lines · On Thu, 26 Apr 2007 13:47:14 +0200 Gabriel C <[email protected]> wrote:
Quoted 9 lines · Andrew Morton
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
- this has everything which is in 2.6.21. Plus more!
- a number of nasty bugs were fixed. This should be (a lot) more stable than 2.6.21-rc7-mm1.
Quoted 5 lines
I get this warning here :
drivers/net/Kconfig:2327:warning: 'select' used by config symbol '
UCC_GETH' refer to undefined symbol 'UCC_FAST'Yes, we get so many of those that I tend to ignore them, assuming that someone will pick it up and fix it.
Quoted 8 lines
Quoted 3 lines
This one was added by git-powerpc, presumably
7d776cb596994219584257eb5956b87628e5deaf"QE: automatically select QE options"There was a similar problem with
PS3_xyz(don't recall exactly whichPS3_optionit was) that was "solved" by introducing an intermediate config symbol IIRC. Maybe that trick^W fix can be done here also...
CONFIG_PS3_ADVANCED, commit 3f555c700b6c90f9ac24bc81a4f509583d906278
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- Sony Network and Software Technology Center Europe (NSCE) [email protected] ------------------- Sint-Stevens-Woluwestraat 55 Voice +32-2-2908453 Fax +32-2-7262686 ---------------- B-1130 Brussels, Belgium
Quoted 4 lines · Andrew Morton
Quoted 1 line
drivers/net/Kconfig:2327:warning: 'select' used by config symbol '
UCC_GETH' refer to undefined symbol 'UCC_FAST'Yes, we get so many of those that I tend to ignore them, assuming that someone will pick it up and fix it.
Is this being compiled on a non-ppc/powerpc platform? That might explain it. UCC_GETH is defined in drivers/net/Kconfig, but UCC_FAST is defined in arch/powerpc/sysdev/qe_lib/Kconfig. So I supposed if you don't compile for ARCH=powerpc, then arch/powerpc/sysdev/qe_lib/Kconfig is never loaded?
If that's the case, then we're always going to have this problem with platform-dependent drivers in the /drivers/ directory. The ucc_geth driver depends on the "QE library", which is present only on some PowerPC processors, so we put the config options for the QE in arch/powerpc. But since ucc_geth is a standard Ethernet driver, it exists in drivers/net.
Signature · 2 lines
Timur Tabi Linux Kernel Developer @ Freescale
Quoted 10 lines · Timur Tabi
Quoted 5 lines · Andrew Morton
Quoted 2 lines
drivers/net/Kconfig:2327:warning: 'select' used by config symbol '
UCC_GETH' refer to undefined symbol 'UCC_FAST'Yes, we get so many of those that I tend to ignore them, assuming that someone will pick it up and fix it.
Is this being compiled on a non-ppc/powerpc platform?
Yes , on i386 with this config :
http://crazy.dev.frugalware.org/2.6.21-rc7-mm2/config
Quoted 5 lines
That might explain it.
UCC_GETHis defined indrivers/net/Kconfig, butUCC_FASTis defined inarch/powerpc/sysdev/qe_lib/Kconfig. So I supposed if you don't compile for ARCH=powerpc, thenarch/powerpc/sysdev/qe_lib/Kconfigis never loaded?If that's the case, then we're always going to have this problem with platform-dependent drivers in the /drivers/ directory. The
ucc_gethdriver depends on the "QE library", which is present only on some PowerPC processors, so we put the config options for the QE inarch/powerpc. But sinceucc_gethis a standard Ethernet driver, it exists indrivers/net.
Gabriel
Andrew Morton
maintainerQuoted 9 lines · On Thu, 26 Apr 2007 15:57:21 -0500 Timur Tabi <[email protected]> wrote:
Quoted 5 lines · Andrew Morton
Quoted 2 lines
drivers/net/Kconfig:2327:warning: 'select' used by config symbol '
UCC_GETH' refer to undefined symbol 'UCC_FAST'Yes, we get so many of those that I tend to ignore them, assuming that someone will pick it up and fix it.
Is this being compiled on a non-ppc/powerpc platform?
yup, sorry I forgot to mention that: i386 `make allmodconfig'.
Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error
In reply to Andrew MortonGetting the following on an x86_64 numa box:
CC arch/x86_64/vdso/vclock_gettime.oarch/x86_64/vdso/vclock_gettime.c:1: error: code model `small' not supported in the 32 bit mode
make[1]: *** [arch/x86_64/vdso/vclock_gettime.o] Error 1
make: *** [arch/x86_64/vdso] Error 2
Kernel config here: http://test.kernel.org/abat/85358/build/dotconfig
-apw
Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error
On (26/04/07 13:16), Andy Whitcroft didst pronounce:
Quoted 10 lines
Getting the following on an
x86_64numa box:CC
arch/x86_64/vdso/vclock_gettime.oarch/x86_64/vdso/vclock_gettime.c:1: error: code model `small' not supported in the 32 bit mode
make[1]: *** [arch/x86_64/vdso/vclock_gettime.o] Error 1
make: *** [arch/x86_64/vdso] Error 2Kernel config here: http://test.kernel.org/abat/85358/build/dotconfig
Hi Andi,
Backing out x86_64-mm-vdso.patch allowed this kernel to build and boot successful on the machine in question (elm3b6). The backout caused one reject in Documentation/kernel-parameters but otherwise backed out easily. It's not super-clear why it fails to build. If you want me to try another patch, make sure I'm cc'd and I'll give it a spin.
Signature · 3 lines
Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error
Quoted 6 lines · On Thursday 26 April 2007 15:27:36 Mel Gorman wrote:
On (26/04/07 13:16), Andy Whitcroft didst pronounce:
Quoted 5 lines
Getting the following on an
x86_64numa box:CC
arch/x86_64/vdso/vclock_gettime.oarch/x86_64/vdso/vclock_gettime.c:1: error: code model `small' not supported in the 32 bit mode
32bit mode? Something must be confused.
What gcc/binutils is that?
Can you post V=1 output for that line please?
It works for me with gcc 4.1 and 3.3
-Andi
Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error
On (26/04/07 16:11), Andi Kleen didst pronounce:
Quoted 11 lines · On Thursday 26 April 2007 15:27:36 Mel Gorman wrote:
Quoted 6 lines
On (26/04/07 13:16), Andy Whitcroft didst pronounce:
Quoted 5 lines
Getting the following on an
x86_64numa box:CC
arch/x86_64/vdso/vclock_gettime.oarch/x86_64/vdso/vclock_gettime.c:1: error: code model `small' not supported in the 32 bit mode32bit mode? Something must be confused.
What gcc/binutils is that?
gcc -v
gcc version 3.4.4 20050314 (prerelease) (Debian 3.4.3-13sarge1)
ld -v
GNU ld version 2.15
Quoted 2 lines
Can you post V=1 output for that line please?
make -f scripts/Makefile.build obj=arch/x86_64/vdso
gcc -Wp,-MD,arch/x86_64/vdso/.vclock_gettime.o.d -nostdinc -isystem/usr/lib/gcc/i486-linux/3.4.4/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -mcmodel=small -fPIC -g0 -O2 -fasynchronous-unwind-tables -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(vclock_gettime)" -D"KBUILD_MODNAME=KBUILD_STR(vclock_gettime)" -c -o arch/x86_64/vdso/vclock_gettime.o arch/x86_64/vdso/vclock_gettime.carch/x86_64/vdso/vclock_gettime.c:1: error: code model `small' not supported in the 32 bit mode
make[1]: *** [arch/x86_64/vdso/vclock_gettime.o] Error 1
make: *** [arch/x86_64/vdso] Error 2
Quoted 3 lines
It works for me with gcc 4.1 and 3.3
Will try the patch.
Signature · 3 lines
Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error II
In reply to Mel GormanQuoted 12 lines · On Thursday 26 April 2007 15:27:36 Mel Gorman wrote:
On (26/04/07 13:16), Andy Whitcroft didst pronounce:
Quoted 10 lines
Getting the following on an
x86_64numa box:CC
arch/x86_64/vdso/vclock_gettime.oarch/x86_64/vdso/vclock_gettime.c:1: error: code model `small' not supported in the 32 bit mode
make[1]: *** [arch/x86_64/vdso/vclock_gettime.o] Error 1
make: *** [arch/x86_64/vdso] Error 2Kernel config here: http://test.kernel.org/abat/85358/build/dotconfig
Quoted 7 lines
Hi Andi,
Backing out x86_64-mm-vdso.patch allowed this kernel to build and boot successful on the machine in question (elm3b6). The backout caused one reject in
Documentation/kernel-parametersbut otherwise backed out easily. It's not super-clear why it fails to build. If you want me to try another patch, make sure I'm cc'd and I'll give it a spin.
Or please try this simple patch.
-Andi
arch/x86_64/vdso/Makefile +1 -1
@@ -32,7 +32,7 @@ $(obj)/vdso.o: $(src)/vdso.S $(obj)/vdso $(obj)/vdso.so: $(src)/vdso.lds $(vobjs) FORCE $(call if_changed,syscall) -CF := $(PROFILING) -mcmodel=small -fPIC -g0 -O2 -fasynchronous-unwind-tables +CF := $(PROFILING) -mcmodel=small -fPIC -g0 -O2 -fasynchronous-unwind-tables -m64 $(obj)/vclock_gettime.o: CFLAGS = $(CF) $(obj)/vgetcpu.o: CFLAGS = $(CF)
Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error II
On (26/04/07 16:13), Andi Kleen didst pronounce:
Quoted 31 lines · On Thursday 26 April 2007 15:27:36 Mel Gorman wrote:
Quoted 12 lines
On (26/04/07 13:16), Andy Whitcroft didst pronounce:
Quoted 10 lines
Getting the following on an
x86_64numa box:CC
arch/x86_64/vdso/vclock_gettime.oarch/x86_64/vdso/vclock_gettime.c:1: error: code model `small' not supported in the 32 bit mode
make[1]: *** [arch/x86_64/vdso/vclock_gettime.o] Error 1
make: *** [arch/x86_64/vdso] Error 2Kernel config here: http://test.kernel.org/abat/85358/build/dotconfig
Quoted 7 lines
Hi Andi,
Backing out x86_64-mm-vdso.patch allowed this kernel to build and boot successful on the machine in question (elm3b6). The backout caused one reject in
Documentation/kernel-parametersbut otherwise backed out easily. It's not super-clear why it fails to build. If you want me to try another patch, make sure I'm cc'd and I'll give it a spin.Or please try this simple patch.
-Andi
Index: linux/arch/x86_64/vdso/Makefile
===================================================================
arch/x86_64/vdso/Makefile $(obj)/vdso.o: $(src)/vdso.S $(obj)/vdso · line 38
Quoted 8 lines
arch/x86_64/vdso/Makefile +1
-1@@ -32,7 +32,7 @@ $(obj)/vdso.o: $(src)/vdso.S $(obj)/vdso $(obj)/vdso.so: $(src)/vdso.lds $(vobjs) FORCE $(call if_changed,syscall) -CF := $(PROFILING) -mcmodel=small -fPIC -g0 -O2 -fasynchronous-unwind-tables +CF := $(PROFILING) -mcmodel=small -fPIC -g0 -O2 -fasynchronous-unwind-tables -m64 $(obj)/vclock_gettime.o: CFLAGS = $(CF) $(obj)/vgetcpu.o: CFLAGS = $(CF)
make -f scripts/Makefile.build obj=arch/x86_64/vdso
gcc -Wp,-MD,arch/x86_64/vdso/.vma.o.d -nostdinc -isystem /usr/lib/gcc/i486-linux/3.4.4/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -march=k8 -m64 -mno-red-zone -mcmodel=kernel -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -funit-at-a-time -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wdeclaration-after-statement -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(vma)" -D"KBUILD_MODNAME=KBUILD_STR(vma)" -c -o arch/x86_64/vdso/vma.o arch/x86_64/vdso/vma.c
gcc -Wp,-MD,arch/x86_64/vdso/.vdso-start.o.d -nostdinc -isystem /usr/lib/gcc/i486-linux/3.4.4/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -D__ASSEMBLY__ -DCONFIG_AS_CFI=1 -m64 -c -o arch/x86_64/vdso/vdso-start.o arch/x86_64/vdso/vdso-start.S
gcc -Wp,-MD,arch/x86_64/vdso/.vdso-note.o.d -nostdinc -isystem /usr/lib/gcc/i486-linux/3.4.4/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -D__ASSEMBLY__ -DCONFIG_AS_CFI=1 -m64 -c -o arch/x86_64/vdso/vdso-note.o arch/x86_64/vdso/vdso-note.S
gcc -Wp,-MD,arch/x86_64/vdso/.vclock_gettime.o.d -nostdinc -isystem /usr/lib/gcc/i486-linux/3.4.4/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -mcmodel=small -fPIC -g0 -O2 -fasynchronous-unwind-tables -m64 -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(vclock_gettime)" -D"KBUILD_MODNAME=KBUILD_STR(vclock_gettime)" -c -o arch/x86_64/vdso/vclock_gettime.o arch/x86_64/vdso/vclock_gettime.c
gcc -Wp,-MD,arch/x86_64/vdso/.vgetcpu.o.d -nostdinc -isystem /usr/lib/gcc/i486-linux/3.4.4/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -mcmodel=small -fPIC -g0 -O2 -fasynchronous-unwind-tables -m64 -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(vgetcpu)" -D"KBUILD_MODNAME=KBUILD_STR(vgetcpu)" -c -o arch/x86_64/vdso/vgetcpu.o arch/x86_64/vdso/vgetcpu.c
gcc -Wp,-MD,arch/x86_64/vdso/.vvar.o.d -nostdinc -isystem /usr/lib/gcc/i486-linux/3.4.4/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -march=k8 -m64 -mno-red-zone -mcmodel=kernel -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -funit-at-a-time -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wdeclaration-after-statement -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(vvar)" -D"KBUILD_MODNAME=KBUILD_STR(vvar)" -c -o arch/x86_64/vdso/vvar.o arch/x86_64/vdso/vvar.c
gcc -m elf_x86_64 -nostdlib -fPIC -shared -Wl,-soname=linux-vdso.so.1 -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 -Wl,-T,arch/x86_64/vdso/vdso.lds arch/x86_64/vdso/vdso-start.o arch/x86_64/vdso/vdso-note.o arch/x86_64/vdso/vclock_gettime.o arch/x86_64/vdso/vgetcpu.o arch/x86_64/vdso/vvar.o -o arch/x86_64/vdso/vdso.so/usr/bin/ld: section .text [ffffffffff700400 -> ffffffffff700687] overlaps section .dynsym [ffffffffff7001d0 -> ffffffffff700427]
collect2: ld returned 1 exit status
make[1]: *** [arch/x86_64/vdso/vdso.so] Error 1
make: *** [arch/x86_64/vdso] Error 2
Signature · 3 lines
Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error II
On (26/04/07 15:39), Mel Gorman didst pronounce:
Quoted 38 lines
On (26/04/07 16:13), Andi Kleen didst pronounce:
Quoted 37 lines · On Thursday 26 April 2007 15:27:36 Mel Gorman wrote:
Quoted 12 lines
On (26/04/07 13:16), Andy Whitcroft didst pronounce:
Quoted 10 lines
Getting the following on an
x86_64numa box:CC
arch/x86_64/vdso/vclock_gettime.oarch/x86_64/vdso/vclock_gettime.c:1: error: code model `small' not supported in the 32 bit mode
make[1]: *** [arch/x86_64/vdso/vclock_gettime.o] Error 1
make: *** [arch/x86_64/vdso] Error 2Kernel config here: http://test.kernel.org/abat/85358/build/dotconfig
Quoted 7 lines
Hi Andi,
Backing out x86_64-mm-vdso.patch allowed this kernel to build and boot successful on the machine in question (elm3b6). The backout caused one reject in
Documentation/kernel-parametersbut otherwise backed out easily. It's not super-clear why it fails to build. If you want me to try another patch, make sure I'm cc'd and I'll give it a spin.Or please try this simple patch.
-Andi
Index: linux/arch/x86_64/vdso/Makefile
===================================================================arch/x86_64/vdso/Makefile +1
-1@@ -32,7 +32,7 @@ $(obj)/vdso.o: $(src)/vdso.S $(obj)/vdso $(obj)/vdso.so: $(src)/vdso.lds $(vobjs) FORCE $(call if_changed,syscall) -CF := $(PROFILING) -mcmodel=small -fPIC -g0 -O2 -fasynchronous-unwind-tables +CF := $(PROFILING) -mcmodel=small -fPIC -g0 -O2 -fasynchronous-unwind-tables -m64
Quoted 16 lines
arch/x86_64/vdso/Makefile $(obj)/vdso.o: $(src)/vdso.S $(obj)/vdso · line 38
Quoted 2 lines
arch/x86_64/vdso/Makefile +0
-0$(obj)/vclock_gettime.o: CFLAGS = $(CF) $(obj)/vgetcpu.o: CFLAGS = $(CF)make -f
scripts/Makefile.buildobj=arch/x86_64/vdso
gcc -Wp,-MD,arch/x86_64/vdso/.vma.o.d -nostdinc -isystem/usr/lib/gcc/i486-linux/3.4.4/include-D__KERNEL__ -Iinclude -includeinclude/linux/autoconf.h-Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -march=k8 -m64 -mno-red-zone -mcmodel=kernel -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -funit-at-a-time -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wdeclaration-after-statement -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(vma)" -D"KBUILD_MODNAME=KBUILD_STR(vma)" -c -oarch/x86_64/vdso/vma.oarch/x86_64/vdso/vma.c
gcc -Wp,-MD,arch/x86_64/vdso/.vdso-start.o.d -nostdinc -isystem/usr/lib/gcc/i486-linux/3.4.4/include-D__KERNEL__ -Iinclude -includeinclude/linux/autoconf.h-D__ASSEMBLY__ -DCONFIG_AS_CFI=1 -m64 -c -oarch/x86_64/vdso/vdso-start.oarch/x86_64/vdso/vdso-start.S
gcc -Wp,-MD,arch/x86_64/vdso/.vdso-note.o.d -nostdinc -isystem/usr/lib/gcc/i486-linux/3.4.4/include-D__KERNEL__ -Iinclude -includeinclude/linux/autoconf.h-D__ASSEMBLY__ -DCONFIG_AS_CFI=1 -m64 -c -oarch/x86_64/vdso/vdso-note.oarch/x86_64/vdso/vdso-note.S
gcc -Wp,-MD,arch/x86_64/vdso/.vclock_gettime.o.d -nostdinc -isystem/usr/lib/gcc/i486-linux/3.4.4/include-D__KERNEL__ -Iinclude -includeinclude/linux/autoconf.h-mcmodel=small -fPIC -g0 -O2 -fasynchronous-unwind-tables -m64 -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(vclock_gettime)" -D"KBUILD_MODNAME=KBUILD_STR(vclock_gettime)" -c -oarch/x86_64/vdso/vclock_gettime.oarch/x86_64/vdso/vclock_gettime.c
gcc -Wp,-MD,arch/x86_64/vdso/.vgetcpu.o.d -nostdinc -isystem/usr/lib/gcc/i486-linux/3.4.4/include-D__KERNEL__ -Iinclude -includeinclude/linux/autoconf.h-mcmodel=small -fPIC -g0 -O2 -fasynchronous-unwind-tables -m64 -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(vgetcpu)" -D"KBUILD_MODNAME=KBUILD_STR(vgetcpu)" -c -oarch/x86_64/vdso/vgetcpu.oarch/x86_64/vdso/vgetcpu.c
gcc -Wp,-MD,arch/x86_64/vdso/.vvar.o.d -nostdinc -isystem/usr/lib/gcc/i486-linux/3.4.4/include-D__KERNEL__ -Iinclude -includeinclude/linux/autoconf.h-Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -march=k8 -m64 -mno-red-zone -mcmodel=kernel -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -funit-at-a-time -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wdeclaration-after-statement -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(vvar)" -D"KBUILD_MODNAME=KBUILD_STR(vvar)" -c -oarch/x86_64/vdso/vvar.oarch/x86_64/vdso/vvar.c
gcc -melf_x86_64-nostdlib -fPIC -shared -Wl,-soname=linux-vdso.so.1 -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096-Wl,-T,arch/x86_64/vdso/vdso.ldsarch/x86_64/vdso/vdso-start.oarch/x86_64/vdso/vdso-note.oarch/x86_64/vdso/vclock_gettime.oarch/x86_64/vdso/vgetcpu.oarch/x86_64/vdso/vvar.o-oarch/x86_64/vdso/vdso.so/usr/bin/ld: section .text [ffffffffff700400->ffffffffff700687] overlaps section .dynsym [ffffffffff7001d0->ffffffffff700427]
collect2: ld returned 1 exit status
make[1]: *** [arch/x86_64/vdso/vdso.so] Error 1
make: *** [arch/x86_64/vdso] Error 2
If I add the following patch on top of yours, it builds and boots. It's your call on whether it's a valid fix or not but it might point out the Right Way to fix this
arch/x86_64/vdso/vdso.lds renamed from arch/x86_64/vdso/vdso.lds-orig +1 -1
@@ -33,7 +33,7 @@ For the layouts to match, we need to skip more than enough space for the dynamic symbol table et al. If this amount is insufficient, ld -shared will barf. Just increase it here. */ - . = 0xffffffffff700000 + 0x500; + . = 0xffffffffff700000 + 0x400; .text : { *(.text) } :text .text.ptr : { *(.text.ptr) } :text
Signature · 3 lines
Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error II
arch/x86_64/vdso/vdso.lds line 36
Quoted 9 lines
arch/x86_64/vdso/vdso.lds renamed from arch/x86_64/vdso/vdso.lds-orig +1
-1@@ -33,7 +33,7 @@ For the layouts to match, we need to skip more than enough space for the dynamic symbol table et al. If this amount is insufficient, ld -shared will barf. Just increase it here. */ - . = 0xffffffffff700000 + 0x500; + . = 0xffffffffff700000 + 0x400;
Hmm, you must have an old version of the patch. in my copy it looks like
. = VDSO_PRELINK + VDSO_TEXT_OFFSET;
and
#define VDSO_TEXT_OFFSET 0x400
Can you try the latest patch from ftp://ftp.firstfloor.org/pub/ak/x86_64/quilt/patches/vdso ?
(doesn't include the -m64 change yet so you will still need to apply that)
-Andi
Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error II
On (26/04/07 17:24), Andi Kleen didst pronounce:
Quoted 12 lines
arch/x86_64/vdso/vdso.lds line 36
Quoted 9 lines
arch/x86_64/vdso/vdso.lds renamed from arch/x86_64/vdso/vdso.lds-orig +1
-1@@ -33,7 +33,7 @@ For the layouts to match, we need to skip more than enough space for the dynamic symbol table et al. If this amount is insufficient, ld -shared will barf. Just increase it here. */ - . = 0xffffffffff700000 + 0x500; + . = 0xffffffffff700000 + 0x400;Hmm, you must have an old version of the patch. in my copy it looks like
Quoted 2 lines
. = VDSO_PRELINK + VDSO_TEXT_OFFSET;
That's vdso.lds.S, not vdso.lds. The VDSO_TEXT_OFFSET is still 0x400. This is what I should have posted the last time
arch/x86_64/vdso/voffset.h renamed from arch/x86_64/vdso/voffset.h.orig +1 -1
@@ -1 +1 @@ -#define VDSO_TEXT_OFFSET 0x500 +#define VDSO_TEXT_OFFSET 0x400
Signature · 3 lines
Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error II
arch/x86_64/vdso/voffset.h line 1
Quoted 10 lines
That's
vdso.lds.S, notvdso.lds. TheVDSO_TEXT_OFFSETis still0x400. This is what I should have posted the last timearch/x86_64/vdso/voffset.h renamed from arch/x86_64/vdso/voffset.h.orig +1
-1@@ -1 +1 @@ -#define VDSO_TEXT_OFFSET 0x500 +#define VDSO_TEXT_OFFSET 0x400
It's definitely 0x400 here. Is your patch reversed and you want 0x500?
-Andi
Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error II
On (27/04/07 02:39), Andi Kleen didst pronounce:
Quoted 5 lines
Quoted 5 lines
That's
vdso.lds.S, notvdso.lds. TheVDSO_TEXT_OFFSETis still0x400. This is what I should have posted the last time
Quoted 8 lines
arch/x86_64/vdso/voffset.h line 1
Quoted 5 lines
arch/x86_64/vdso/voffset.h renamed from arch/x86_64/vdso/voffset.h.orig +1
-1@@ -1 +1 @@ -#define VDSO_TEXT_OFFSET 0x500 +#define VDSO_TEXT_OFFSET 0x400It's definitely
0x400here. Is your patch reversed and you want0x500?
Sorry, that patch is reversed. It's 0x500 it needs to be to work here.
Signature · 4 lines
-- Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
PATCH 1/1 Add vDSO for x86-64 with gettimeofday/clock_gettime/getcpu fix
On (27/04/07 09:59), Mel Gorman didst pronounce:
Quoted 15 lines
On (27/04/07 02:39), Andi Kleen didst pronounce:
Quoted 5 lines
Quoted 5 lines
That's
vdso.lds.S, notvdso.lds. TheVDSO_TEXT_OFFSETis still0x400. This is what I should have posted the last timeQuoted 8 lines
arch/x86_64/vdso/voffset.h line 1
Quoted 5 lines
arch/x86_64/vdso/voffset.h renamed from arch/x86_64/vdso/voffset.h.orig +1
-1@@ -1 +1 @@ -#define VDSO_TEXT_OFFSET 0x500 +#define VDSO_TEXT_OFFSET 0x400It's definitely
0x400here. Is your patch reversed and you want0x500?
Quoted 2 lines
Sorry, that patch is reversed. It's
0x500it needs to be to work here.
What I should have done in the first place..... Sorry for the noise.
=======
The machine elm3b6 on test.kernel.org had problems with the patch x86_64-mm-vdso.patch. The fix is two-fold. The first patch fixes a compile problem by adding -m64. This patch updates VDSO_TEXT_OFFSET so that the linker does not complain.
--- voffset.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86_64/vdso/voffset.h +1 -1
@@ -1 +1 @@ -#define VDSO_TEXT_OFFSET 0x400 +#define VDSO_TEXT_OFFSET 0x500
Signature · 3 lines
Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
Re: [PATCH] Add vDSO for x86-64 with gettimeofday/clock_gettime/getcpu fix
Quoted 16 lines · On Friday 27 April 2007 17:50:06 Mel Gorman wrote:
On (27/04/07 09:59), Mel Gorman didst pronounce:
Quoted 15 lines
On (27/04/07 02:39), Andi Kleen didst pronounce:
Quoted 13 lines
arch/x86_64/vdso/voffset.h line 1
Quoted 10 lines
That's
vdso.lds.S, notvdso.lds. TheVDSO_TEXT_OFFSETis still0x400. This is what I should have posted the last timearch/x86_64/vdso/voffset.h renamed from arch/x86_64/vdso/voffset.h.orig +1
-1@@ -1 +1 @@ -#define VDSO_TEXT_OFFSET 0x500 +#define VDSO_TEXT_OFFSET 0x400It's definitely
0x400here. Is your patch reversed and you want0x500?
Quoted 4 lines
Quoted 2 lines
Sorry, that patch is reversed. It's
0x500it needs to be to work here.What I should have done in the first place..... Sorry for the noise.
I had already fixed it up.
But now can you test Suresh's latest patch too please?
-Andi
Re: [PATCH] Add vDSO for x86-64 with gettimeofday/clock_gettime/getcpu fix
On (27/04/07 18:34), Andi Kleen didst pronounce:
Quoted 17 lines · On Friday 27 April 2007 17:50:06 Mel Gorman wrote:
Quoted 16 lines
On (27/04/07 09:59), Mel Gorman didst pronounce:
Quoted 15 lines
On (27/04/07 02:39), Andi Kleen didst pronounce:
Quoted 13 lines
arch/x86_64/vdso/voffset.h line 1
Quoted 10 lines
That's
vdso.lds.S, notvdso.lds. TheVDSO_TEXT_OFFSETis still0x400. This is what I should have posted the last timearch/x86_64/vdso/voffset.h renamed from arch/x86_64/vdso/voffset.h.orig +1
-1@@ -1 +1 @@ -#define VDSO_TEXT_OFFSET 0x500 +#define VDSO_TEXT_OFFSET 0x400It's definitely
0x400here. Is your patch reversed and you want0x500?
Quoted 7 lines
Quoted 4 lines
Quoted 2 lines
Sorry, that patch is reversed. It's
0x500it needs to be to work here.What I should have done in the first place..... Sorry for the noise.
I had already fixed it up.
Cool
Quoted 1 line
But now can you test Suresh's latest patch too please?
I did earlier and it had merge problems. I had responded to the and I see it in my sent-mail and Andy says he received it but it hasn't shown up on lkml so somehow I screwed up. Here is the response again.
===== Rend earlier response =====
On (26/04/07 16:40), Siddha, Suresh B didst pronounce:
Quoted 10 lines · Mel Gorman
Quoted 6 lines
NODE_DATA(0)was returning NULL because of x86_64-set-node_possible_map-at-runtime.patch. This patch appears to breakacpi_scan_nodes()so thatsetup_node_bootmem()never gets called and node_data[] remains full of zeros. Later on,reserve_bootmem_generic()is called but withNODE_DATA(0)== NULL, it all goes pear shaped. Author of patch cc'd.oops. Appended patch should fix this. Can you please check this and Ack it?
This patch does not apply cleanly to 2.6.21-rc7-mm2. Nor does x86_64-set-node_possible_map-at-runtime.patch backout cleanly and when rejects are fixed up, this patch still not apply cleanly . After fixing rejects I ended up with the patch below that applies on top of 2.6.21-rc7-mm2. It booted but it's not clear if the end result is what you intended. Could you send a patch that applies cleanly on top of 2.6.21-rc7-mm2 and I'll give it a test please? Thanks
arch/x86_64/mm/numa.c +1 -1
@@ -298,7 +298,7 @@ static int __init setup_node_range(int n ret =-1 ; } nodes[nid].end = *addr; -node_set (nid, node_possible_map); +node_set_online (nid);printk (KERN_INFO "Faking node %d at %016Lx-%016Lx (%LuMB)\n" , nid, nodes[nid].start, nodes[nid].end, (nodes[nid].end - nodes[nid].start) >>20 );
arch/x86_64/mm/srat.c +8 -5
@@ -25,6 +25,7 @@ int acpi_numa __initdata;static struct acpi_table_slit *acpi_slit; +static nodemask_t nodes_parsed__initdata ;static struct bootnode nodes[MAX_NUMNODES ]__initdata ;static struct bootnode nodes_add[MAX_NUMNODES ];static int found_add_area__initdata ;
@@ -42,7 +43,7 @@ static __init int setup_node(int pxm)static __init int conflicting_nodes (unsigned long start,unsigned long end) {int i; -for_each_node_mask (i, node_possible_map) { +for_each_node_mask (i, nodes_parsed) {struct bootnode *nd = &nodes[i];if (nd->start == nd->end)continue ;
@@ -320,7 +321,7 @@ acpi_numa_memory_affinity_init(struct ac } nd = &nodes[node]; oldnode = *nd; -if (!node_test_and_set (node, node_possible_map)) { +if (!node_test_and_set (node, nodes_parsed)) { nd->start = start; nd->end = end; }else {
@@ -343,7 +344,7 @@ acpi_numa_memory_affinity_init(struct acprintk (KERN_NOTICE "SRAT: Hotplug region ignored\n" ); *nd = oldnode;if ((nd->start | nd->end) ==0 ) -node_clear (node, node_possible_map); +node_clear (node, nodes_parsed); } }
@@ -355,7 +356,7 @@ static int nodes_cover_memory(void)unsigned long pxmram, e820ram; pxmram =0 ; -for_each_node_mask (i, node_possible_map) { +for_each_node_mask (i, nodes_parsed) {unsigned long s = nodes[i].start >>PAGE_SHIFT ;unsigned long e = nodes[i].end >>PAGE_SHIFT ; pxmram += e - s;
@@ -379,7 +380,7 @@ static int nodes_cover_memory(void)static void unparse_node (int node) {int i; -node_clear (node, node_possible_map); +node_clear (node, nodes_parsed);for (i =0 ; i <MAX_LOCAL_APIC ; i++) {if (apicid_to_node[i] == node) apicid_to_node[i] =NUMA_NO_NODE ;
@@ -418,6 +419,8 @@ int __init acpi_scan_nodes(unsigned longreturn -1 ; } + node_possible_map = nodes_parsed; +/* Finally register nodes */ for_each_node_mask (i, node_possible_map)setup_node_bootmem (i, nodes[i].start, nodes[i].end);
Re: 2.6.21-rc7-mm2 -- x86_64 blade hard hangs
In reply to Andrew MortonGetting hard boot failures before any kernel output on an x86_64 blade:
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
kernel /vmlinuz-autobench ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0 console=ttyS1,19200 selinux=no autobench_args:
root=30726124 ABAT:1177507960 profile=2
[Linux-bzImage, setup=0x1e00, size=0x21fe48]
initrd /initrd-autobench.img
[Linux-initrd @ 0x37e5f000, 0x190984 bytes]
[silence]
Kernel config is here:
http://test.kernel.org/abat/85082/build/dotconfig
-apw
Re: 2.6.21-rc7-mm2 -- x86_64 blade hard hangs
Quoted 12 lines · Andy Whitcroft
Getting hard boot failures before any kernel output on an
x86_64blade:root (hd0,0)
Filesystem type is ext2fs, partition type0x83
kernel /vmlinuz-autobench ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0 console=ttyS1,19200 selinux=noautobench_args:
root=30726124 ABAT:1177507960 profile=2
[Linux-bzImage, setup=0x1e00, size=0x21fe48]
initrd /initrd-autobench.img
[Linux-initrd @0x37e5f000,0x190984bytes]
[silence]
Quoted 3 lines
Kernel config is here:
You should boot with earlyprintk=serial,ttyS1,19200
-Andi
Re: 2.6.21-rc7-mm2 -- x86_64 blade hard hangs
On (26/04/07 15:51), Andi Kleen didst pronounce:
Quoted 14 lines
Quoted 12 lines · Andy Whitcroft
Getting hard boot failures before any kernel output on an
x86_64blade:root (hd0,0)
Filesystem type is ext2fs, partition type0x83
kernel /vmlinuz-autobench ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0 console=ttyS1,19200 selinux=noautobench_args:
root=30726124 ABAT:1177507960 profile=2
[Linux-bzImage, setup=0x1e00, size=0x21fe48]
initrd /initrd-autobench.img
[Linux-initrd @0x37e5f000,0x190984bytes]
[silence]
Quoted 6 lines
Quoted 3 lines
Kernel config is here:
You should boot with earlyprintk=serial,ttyS1,19200
Here is the console log. Haven't taken a closer look yet in case it's blindingly obvious to you.
kernel /vmlinuz-autobench ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0 co
nsole=ttyS1,19200 selinux=no autobench_args: root=30726124 ABAT:1177594149 logl
evel=8 earlyprintk=serial,ttyS1,19200
[Linux-bzImage, setup=0x1e00, size=0x220da8]
initrd /initrd-autobench.img
[Linux-initrd @ 0x37e5f000, 0x190982 bytes]
Linux version 2.6.21-rc7-mm2-autokern1 ([email protected]) (gcc version 4.1.1 20060525 (Red Hat 4.1.1-1)) #1 SMP Thu Apr 26 08:16:37 CDT 2007
Command line: ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0 console=ttyS1,19200 selinux=no autobench_args: root=30726124 ABAT:1177594149 loglevel=8 earlyprintk=serial,ttyS1,19200 BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009d400 (usable)
BIOS-e820: 000000000009d400 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003ffcddc0 (usable)
BIOS-e820: 000000003ffcddc0 - 000000003ffd0000 (ACPI data)
BIOS-e820: 000000003ffd0000 - 0000000040000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)end_pfn_map = 1048576
kernel direct mapping tables up to 100000000 @ 8000-d000
DMI 2.3 present.
ACPI: RSDP 000FDFC0, 0014 (r0 IBM )
ACPI: RSDT 3FFCFF80, 0034 (r1 IBM SERBLADE 1000 IBM 45444F43)
ACPI: FACP 3FFCFEC0, 0084 (r2 IBM SERBLADE 1000 IBM 45444F43)
ACPI: DSDT 3FFCDDC0, 1EA6 (r1 IBM SERBLADE 1000 INTL 2002025)
ACPI: FACS 3FFCFCC0, 0040
ACPI: APIC 3FFCFE00, 009C (r1 IBM SERBLADE 1000 IBM 45444F43)
ACPI: SRAT 3FFCFD40, 0098 (r1 IBM SERBLADE 1000 IBM 45444F43)
ACPI: HPET 3FFCFD00, 0038 (r1 IBM SERBLADE 1000 IBM 45444F43)
SRAT: PXM 0 -> APIC 0 -> Node 0
SRAT: PXM 0 -> APIC 1 -> Node 0
SRAT: PXM 1 -> APIC 2 -> Node 1
SRAT: PXM 1 -> APIC 3 -> Node 1
SRAT: Node 0 PXM 0 0-40000000
PANIC: early exception rip ffffffff808a7e83 error 0 cr2 5cf0
Call Trace: [<ffffffff808a7e83>] reserve_bootmem_node+0x0/0xc [<ffffffff808a3a8c>] reserve_bootmem_generic+0x6d/0x99 [<ffffffff8089cc00>] setup_arch+0x2f7/0x469 [<ffffffff80896510>] start_kernel+0x64/0x2aa [<ffffffff80896148>] _sinittext+0x148/0x14c RIP reserve_bootmem_node+0x0/0xc
Signature · 3 lines
Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
Re: 2.6.21-rc7-mm2 -- x86_64 blade hard hangs
On (26/04/07 14:33), Mel Gorman didst pronounce:
Quoted 64 lines
On (26/04/07 15:51), Andi Kleen didst pronounce:
Quoted 14 lines
Quoted 12 lines · Andy Whitcroft
Getting hard boot failures before any kernel output on an
x86_64blade:root (hd0,0)
Filesystem type is ext2fs, partition type0x83
kernel /vmlinuz-autobench ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0 console=ttyS1,19200 selinux=noautobench_args:
root=30726124 ABAT:1177507960 profile=2
[Linux-bzImage, setup=0x1e00, size=0x21fe48]
initrd /initrd-autobench.img
[Linux-initrd @0x37e5f000,0x190984bytes]
[silence]Quoted 6 lines
Quoted 3 lines
Kernel config is here:
You should boot with earlyprintk=serial,ttyS1,19200
Here is the console log. Haven't taken a closer look yet in case it's blindingly obvious to you.
kernel /vmlinuz-autobench ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0 co
nsole=ttyS1,19200 selinux=noautobench_args: root=30726124 ABAT:1177594149 logl
evel=8 earlyprintk=serial,ttyS1,19200
[Linux-bzImage, setup=0x1e00, size=0x220da8]
initrd /initrd-autobench.img
[Linux-initrd @0x37e5f000,0x190982bytes]
Linux version 2.6.21-rc7-mm2-autokern1 ([email protected]) (gcc version 4.1.1 20060525 (Red Hat 4.1.1-1)) #1 SMP Thu Apr 26 08:16:37 CDT 2007
Command line: ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0 console=ttyS1,19200 selinux=noautobench_args: root=30726124 ABAT:1177594149 loglevel=8 earlyprintk=serial,ttyS1,19200 BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 -000000000009d400(usable)
BIOS-e820:000000000009d400-00000000000a0000(reserved)
BIOS-e820:00000000000e0000- 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 -000000003ffcddc0(usable)
BIOS-e820:000000003ffcddc0-000000003ffd0000(ACPI data)
BIOS-e820:000000003ffd0000- 0000000040000000 (reserved)
BIOS-e820:00000000fec00000- 0000000100000000 (reserved)end_pfn_map= 1048576
kernel direct mapping tables up to 100000000 @ 8000-d000
DMI 2.3 present.
ACPI: RSDP 000FDFC0, 0014 (r0 IBM )
ACPI: RSDT 3FFCFF80, 0034 (r1 IBM SERBLADE 1000 IBM 45444F43)
ACPI: FACP 3FFCFEC0, 0084 (r2 IBM SERBLADE 1000 IBM 45444F43)
ACPI: DSDT 3FFCDDC0, 1EA6 (r1 IBM SERBLADE 1000 INTL 2002025)
ACPI: FACS 3FFCFCC0, 0040
ACPI: APIC 3FFCFE00, 009C (r1 IBM SERBLADE 1000 IBM 45444F43)
ACPI: SRAT 3FFCFD40, 0098 (r1 IBM SERBLADE 1000 IBM 45444F43)
ACPI: HPET 3FFCFD00, 0038 (r1 IBM SERBLADE 1000 IBM 45444F43)
SRAT: PXM 0 -> APIC 0 -> Node 0
SRAT: PXM 0 -> APIC 1 -> Node 0
SRAT: PXM 1 -> APIC 2 -> Node 1
SRAT: PXM 1 -> APIC 3 -> Node 1
SRAT: Node 0 PXM 0 0-40000000
PANIC: early exception ripffffffff808a7e83error 0 cr2 5cf0
Quoted 8 lines
Call Trace: [<ffffffff808a7e83>] reserve_bootmem_node+0x0/0xc [<ffffffff808a3a8c>] reserve_bootmem_generic+0x6d/0x99 [<ffffffff8089cc00>] setup_arch+0x2f7/0x469 [<ffffffff80896510>] start_kernel+0x64/0x2aa [<ffffffff80896148>] _sinittext+0x148/0x14c RIP reserve_bootmem_node+0x0/0xc
When I looked closer, nothing seemed to make sense so here is another log with stack unwinder, frame pointer etc etc
PANIC: early exception rip ffffffff8095a873 error 0 cr2 5cf0
Call Trace: [<ffffffff8020b174>] dump_trace+0xb6/0x3d8 [<ffffffff8020b4d2>] show_trace+0x3c/0x52 [<ffffffff8020b4fd>] dump_stack+0x15/0x17 [<ffffffff802001e7>] DWARF2 unwinder stuck at 0xffffffff802001e7 Leftover inexact backtrace: [<ffffffff8095a873>] reserve_bootmem_node+0x1/0x12 [<ffffffff8096114f>] acpi_table_parse+0x4f/0x69 [<ffffffff80955f91>] reserve_bootmem_generic+0x73/0x9e [<ffffffff8094edd3>] setup_arch+0x301/0x49c [<ffffffff8094855f>] start_kernel+0x6c/0x30b [<ffffffff80948144>] _sinittext+0x144/0x14b
RIP reserve_bootmem_node+0x1/0x12
Will keep kicking.
Signature · 3 lines
Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
Re: 2.6.21-rc7-mm2 -- x86_64 blade hard hangs
On (26/04/07 15:46), Mel Gorman didst pronounce:
Quoted 93 lines
On (26/04/07 14:33), Mel Gorman didst pronounce:
Quoted 64 lines
On (26/04/07 15:51), Andi Kleen didst pronounce:
Quoted 14 lines
Quoted 12 lines · Andy Whitcroft
Getting hard boot failures before any kernel output on an
x86_64blade:root (hd0,0)
Filesystem type is ext2fs, partition type0x83
kernel /vmlinuz-autobench ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0 console=ttyS1,19200 selinux=noautobench_args:
root=30726124 ABAT:1177507960 profile=2
[Linux-bzImage, setup=0x1e00, size=0x21fe48]
initrd /initrd-autobench.img
[Linux-initrd @0x37e5f000,0x190984bytes]
[silence]Quoted 6 lines
Quoted 3 lines
Kernel config is here:
You should boot with earlyprintk=serial,ttyS1,19200
Here is the console log. Haven't taken a closer look yet in case it's blindingly obvious to you.
kernel /vmlinuz-autobench ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0 co
nsole=ttyS1,19200 selinux=noautobench_args: root=30726124 ABAT:1177594149 logl
evel=8 earlyprintk=serial,ttyS1,19200
[Linux-bzImage, setup=0x1e00, size=0x220da8]
initrd /initrd-autobench.img
[Linux-initrd @0x37e5f000,0x190982bytes]
Linux version 2.6.21-rc7-mm2-autokern1 ([email protected]) (gcc version 4.1.1 20060525 (Red Hat 4.1.1-1)) #1 SMP Thu Apr 26 08:16:37 CDT 2007
Command line: ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0 console=ttyS1,19200 selinux=noautobench_args: root=30726124 ABAT:1177594149 loglevel=8 earlyprintk=serial,ttyS1,19200 BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 -000000000009d400(usable)
BIOS-e820:000000000009d400-00000000000a0000(reserved)
BIOS-e820:00000000000e0000- 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 -000000003ffcddc0(usable)
BIOS-e820:000000003ffcddc0-000000003ffd0000(ACPI data)
BIOS-e820:000000003ffd0000- 0000000040000000 (reserved)
BIOS-e820:00000000fec00000- 0000000100000000 (reserved)end_pfn_map= 1048576
kernel direct mapping tables up to 100000000 @ 8000-d000
DMI 2.3 present.
ACPI: RSDP 000FDFC0, 0014 (r0 IBM )
ACPI: RSDT 3FFCFF80, 0034 (r1 IBM SERBLADE 1000 IBM 45444F43)
ACPI: FACP 3FFCFEC0, 0084 (r2 IBM SERBLADE 1000 IBM 45444F43)
ACPI: DSDT 3FFCDDC0, 1EA6 (r1 IBM SERBLADE 1000 INTL 2002025)
ACPI: FACS 3FFCFCC0, 0040
ACPI: APIC 3FFCFE00, 009C (r1 IBM SERBLADE 1000 IBM 45444F43)
ACPI: SRAT 3FFCFD40, 0098 (r1 IBM SERBLADE 1000 IBM 45444F43)
ACPI: HPET 3FFCFD00, 0038 (r1 IBM SERBLADE 1000 IBM 45444F43)
SRAT: PXM 0 -> APIC 0 -> Node 0
SRAT: PXM 0 -> APIC 1 -> Node 0
SRAT: PXM 1 -> APIC 2 -> Node 1
SRAT: PXM 1 -> APIC 3 -> Node 1
SRAT: Node 0 PXM 0 0-40000000
PANIC: early exception ripffffffff808a7e83error 0 cr2 5cf0Quoted 8 lines
Call Trace: [<ffffffff808a7e83>] reserve_bootmem_node+0x0/0xc [<ffffffff808a3a8c>] reserve_bootmem_generic+0x6d/0x99 [<ffffffff8089cc00>] setup_arch+0x2f7/0x469 [<ffffffff80896510>] start_kernel+0x64/0x2aa [<ffffffff80896148>] _sinittext+0x148/0x14c RIP reserve_bootmem_node+0x0/0xcWhen I looked closer, nothing seemed to make sense so here is another log with stack unwinder, frame pointer etc etc
PANIC: early exception rip
ffffffff8095a873error 0 cr2 5cf0Call Trace: [<ffffffff8020b174>] dump_trace+0xb6/0x3d8 [<ffffffff8020b4d2>] show_trace+0x3c/0x52 [<ffffffff8020b4fd>] dump_stack+0x15/0x17 [<ffffffff802001e7>] DWARF2 unwinder stuck at 0xffffffff802001e7 Leftover inexact backtrace: [<ffffffff8095a873>] reserve_bootmem_node+0x1/0x12 [<ffffffff8096114f>] acpi_table_parse+0x4f/0x69 [<ffffffff80955f91>] reserve_bootmem_generic+0x73/0x9e [<ffffffff8094edd3>] setup_arch+0x301/0x49c [<ffffffff8094855f>] start_kernel+0x6c/0x30b [<ffffffff80948144>] _sinittext+0x144/0x14b
Quoted 4 lines
RIP
reserve_bootmem_node+0x1/0x12Will keep kicking.
NODE_DATA(0) was returning NULL because of x86_64-set-node_possible_map-at-runtime.patch. This patch appears to break acpi_scan_nodes() so that setup_node_bootmem() never gets called and node_data[] remains full of zeros. Later on, reserve_bootmem_generic() is called but with NODE_DATA(0) == NULL, it all goes pear shaped. Author of patch cc'd.
Signature · 3 lines
Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: 2.6.21-rc7-mm2 -- x86_64 blade hard hangs
Quoted 4 lines · Mel Gorman
On (26/04/07 16:40), Siddha, Suresh B didst pronounce:
Quoted 1 line
oops. Appended patch should fix this. Can you please check this and Ack it?
This patch does not apply cleanly to 2.6.21-rc7-mm2.
Mel, Please backout the existing x86_64-set-node_possible_map-at-runtime.patch in rc7-mm2 and apply the appended patch instead.
Andrew, as you already backedout x86_64-set-node_possible_map-at-runtime.patch from your -mm series, please include the appended patch (as try 2), after Mel confirms that it works fine on his setup.
Thanks!
---
From: Suresh Siddha <[email protected]> [patch] x86_64: set node_possible_map at runtime - try 2
Set the node_possible_map at runtime on x86_64. On a non NUMA system, num_possible_nodes() will now say '1'.
---
arch/x86_64/mm/k8topology.c +2 -5
@@ -49,11 +49,8 @@ int __init k8_scan_nodes(unsigned long sint found =0 ;u32 reg;unsigned numnodes; -nodemask_t nodes_parsed;unsigned dualcore =0 ; -nodes_clear (nodes_parsed); -if (!early_pci_allowed ())return -1 ;
@@ -102,7 +99,7 @@ int __init k8_scan_nodes(unsigned long s nodeid, (base>>8)&3, (limit>>8) & 3);return -1 ; } -if (node_isset (nodeid, nodes_parsed)) { +if (node_isset (nodeid, node_possible_map)) {printk (KERN_INFO "Node %d already present. Skipping\n" , nodeid);continue ;
@@ -155,7 +152,7 @@ int __init k8_scan_nodes(unsigned long s prevbase = base; -node_set (nodeid, nodes_parsed); +node_set (nodeid, node_possible_map); }if (!found)
arch/x86_64/mm/numa.c +8 -2
@@ -298,7 +298,7 @@ static int __init setup_node_range(int n ret =-1 ; } nodes[nid].end = *addr; -node_set_online (nid); +node_set (nid, node_possible_map);printk (KERN_INFO "Faking node %d at %016Lx-%016Lx (%LuMB)\n" , nid, nodes[nid].start, nodes[nid].end, (nodes[nid].end - nodes[nid].start) >>20 );
@@ -482,7 +482,7 @@ out:* SRAT. */ remove_all_active_ranges (); -for_each_online_node (i) { +for_each_node_mask (i, node_possible_map) {e820_register_active_regions (i, nodes[i].start >>PAGE_SHIFT , nodes[i].end >>PAGE_SHIFT );setup_node_bootmem (i, nodes[i].start, nodes[i].end);
@@ -497,20 +497,25 @@ void __init numa_initmem_init(unsigned l {int i; +nodes_clear (node_possible_map); +#ifdef CONFIG_NUMA_EMU if (cmdline && !numa_emulation (start_pfn, end_pfn))return ; +nodes_clear (node_possible_map);#endif #ifdef CONFIG_ACPI_NUMA if (!numa_off && !acpi_scan_nodes (start_pfn <<PAGE_SHIFT , end_pfn <<PAGE_SHIFT ))return ; +nodes_clear (node_possible_map);#endif #ifdef CONFIG_K8_NUMA if (!numa_off && !k8_scan_nodes (start_pfn<<PAGE_SHIFT , end_pfn<<PAGE_SHIFT ))return ; +nodes_clear (node_possible_map);#endif printk (KERN_INFO "%s\n" , numa_off ?"NUMA turned off" :"No NUMA configuration found" );
@@ -524,6 +529,7 @@ void __init numa_initmem_init(unsigned l memnodemap[0 ] =0 ;nodes_clear (node_online_map);node_set_online (0 ); +node_set (0 , node_possible_map);for (i =0 ; i <NR_CPUS ; i++)numa_set_node (i,0 ); node_to_cpumask[0 ] =cpumask_of_cpu (0 );
arch/x86_64/mm/srat.c +5 -3
@@ -419,19 +419,21 @@ int __init acpi_scan_nodes(unsigned longreturn -1 ; } + node_possible_map = nodes_parsed; +/* Finally register nodes */ -for_each_node_mask (i, nodes_parsed) +for_each_node_mask (i, node_possible_map)setup_node_bootmem (i, nodes[i].start, nodes[i].end);/* Try again in case setup_node_bootmem missed one due to missing bootmem */ -for_each_node_mask (i, nodes_parsed) +for_each_node_mask (i, node_possible_map)if (!node_online (i))setup_node_bootmem (i, nodes[i].start, nodes[i].end);for (i =0 ; i <NR_CPUS ; i++) {if (cpu_to_node[i] ==NUMA_NO_NODE )continue ; -if (!node_isset (cpu_to_node[i], nodes_parsed)) +if (!node_isset (cpu_to_node[i], node_possible_map))numa_set_node (i,NUMA_NO_NODE ); }numa_init_array ();
Mel Gorman
Acked-byRe: 2.6.21-rc7-mm2 -- x86_64 blade hard hangs
Quoted 9 lines · Suresh B
Quoted 4 lines · Mel Gorman
On (26/04/07 16:40), Siddha, Suresh B didst pronounce:
Quoted 1 line
oops. Appended patch should fix this. Can you please check this and Ack it?
This patch does not apply cleanly to 2.6.21-rc7-mm2.
Mel, Please backout the existing x86_64-set-node_possible_map-at-runtime.patch in rc7-mm2 and apply the appended patch instead.
I backed out
broken-out/x86_64-set-node_possible_map-at-runtime.patch broken-out/x86_64-set-node_possible_map-at-runtime-fix.patch broken-out/x86_64-set-node_possible_map-at-runtime-fix-2.patch
and dropped in your new patch. It passed boot tests on the machine in question, so just from a testing perspective
Quoted 6 lines
Andrew, as you already backedout x86_64-set-node_possible_map-at-runtime.patch from your -mm series, please include the appended patch (as try 2), after Mel confirms that it works fine on his setup.
Thanks!
Thank you.
Quoted 131 lines
---
From: Suresh Siddha <[email protected]> [patch]x86_64: setnode_possible_mapat runtime - try 2Set the
node_possible_mapat runtime onx86_64. On a non NUMA system,num_possible_nodes()will now say '1'.Signed-off-by Suresh Siddha <[email protected]>Cc Andi Kleen <[email protected]>Cc Eric Dumazet <[email protected]>Cc David Rientjes <[email protected]>Cc Christoph Lameter <[email protected]>---
diff -pNru
linux/arch/x86_64/mm/k8topology.clinux~/arch/x86_64/mm/k8topology.carch/x86_64/mm/k8topology.c +2
-5@@ -49,11 +49,8 @@ int __init k8_scan_nodes(unsigned long sint found =0 ;u32 reg;unsigned numnodes; -nodemask_t nodes_parsed;unsigned dualcore =0 ; -nodes_clear (nodes_parsed); -if (!early_pci_allowed ())return -1 ;@@ -102,7 +99,7 @@ int __init k8_scan_nodes(unsigned long s nodeid, (base>>8)&3, (limit>>8) & 3);return -1 ; } -if (node_isset (nodeid, nodes_parsed)) { +if (node_isset (nodeid, node_possible_map)) {printk (KERN_INFO "Node %d already present. Skipping\n" , nodeid);continue ;@@ -155,7 +152,7 @@ int __init k8_scan_nodes(unsigned long s prevbase = base; -node_set (nodeid, nodes_parsed); +node_set (nodeid, node_possible_map); }if (!found)diff -pNru
linux/arch/x86_64/mm/numa.clinux~/arch/x86_64/mm/numa.carch/x86_64/mm/numa.c +8
-2@@ -298,7 +298,7 @@ static int __init setup_node_range(int n ret =-1 ; } nodes[nid].end = *addr; -node_set_online (nid); +node_set (nid, node_possible_map);printk (KERN_INFO "Faking node %d at %016Lx-%016Lx (%LuMB)\n" , nid, nodes[nid].start, nodes[nid].end, (nodes[nid].end - nodes[nid].start) >>20 );@@ -482,7 +482,7 @@ out:* SRAT. */ remove_all_active_ranges (); -for_each_online_node (i) { +for_each_node_mask (i, node_possible_map) {e820_register_active_regions (i, nodes[i].start >>PAGE_SHIFT , nodes[i].end >>PAGE_SHIFT );setup_node_bootmem (i, nodes[i].start, nodes[i].end);@@ -497,20 +497,25 @@ void __init numa_initmem_init(unsigned l {int i; +nodes_clear (node_possible_map); +#ifdef CONFIG_NUMA_EMU if (cmdline && !numa_emulation (start_pfn, end_pfn))return ; +nodes_clear (node_possible_map);#endif #ifdef CONFIG_ACPI_NUMA if (!numa_off && !acpi_scan_nodes (start_pfn <<PAGE_SHIFT , end_pfn <<PAGE_SHIFT ))return ; +nodes_clear (node_possible_map);#endif #ifdef CONFIG_K8_NUMA if (!numa_off && !k8_scan_nodes (start_pfn<<PAGE_SHIFT , end_pfn<<PAGE_SHIFT ))return ; +nodes_clear (node_possible_map);#endif printk (KERN_INFO "%s\n" , numa_off ?"NUMA turned off" :"No NUMA configuration found" );@@ -524,6 +529,7 @@ void __init numa_initmem_init(unsigned l memnodemap[0 ] =0 ;nodes_clear (node_online_map);node_set_online (0 ); +node_set (0 , node_possible_map);for (i =0 ; i <NR_CPUS ; i++)numa_set_node (i,0 ); node_to_cpumask[0 ] =cpumask_of_cpu (0 );diff -pNru
linux/arch/x86_64/mm/srat.clinux~/arch/x86_64/mm/srat.carch/x86_64/mm/srat.c +5
-3@@ -419,19 +419,21 @@ int __init acpi_scan_nodes(unsigned longreturn -1 ; } + node_possible_map = nodes_parsed; +/* Finally register nodes */ -for_each_node_mask (i, nodes_parsed) +for_each_node_mask (i, node_possible_map)setup_node_bootmem (i, nodes[i].start, nodes[i].end);/* Try again in case setup_node_bootmem missed one due to missing bootmem */ -for_each_node_mask (i, nodes_parsed) +for_each_node_mask (i, node_possible_map)if (!node_online (i))setup_node_bootmem (i, nodes[i].start, nodes[i].end);for (i =0 ; i <NR_CPUS ; i++) {if (cpu_to_node[i] ==NUMA_NO_NODE )continue ; -if (!node_isset (cpu_to_node[i], nodes_parsed)) +if (!node_isset (cpu_to_node[i], node_possible_map))numa_set_node (i,NUMA_NO_NODE ); }numa_init_array ();
Signature · 3 lines
Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
Getting a link failure on a ppc64 system:
LD .tmp_vmlinux1
init/built-in.o(.init.text+0x32e4): In function `.rd_load_image':
: undefined reference to .__kmalloc_size_too_large' fs/built-in.o(.text+0xa6fe0): In function .ext3_fill_super':
: undefined reference to .__kmalloc_size_too_large' fs/built-in.o(.text+0xc1fe0): In function .ext2_fill_super':
: undefined reference to .__kmalloc_size_too_large' fs/built-in.o(.text+0xf6a1c): In function .nfs4_proc_lookup':
: undefined reference to .__kmalloc_size_too_large' fs/built-in.o(.text+0x104104): In function .nfs_idmap_new':
: undefined reference to .__kmalloc_size_too_large' fs/built-in.o(.text+0x105520): more undefined references to .__kmalloc_size_too_large' follow
make: *** [.tmp_vmlinux1] Error 1
Kernel config:
http://test.kernel.org/abat/85342/build/dotconfig
-apw
Re: 2.6.21-rc7-mm2 -- PPC link failure
Quoted 16 lines · Andy Whitcroft
Getting a link failure on a ppc64 system:
LD .tmp_vmlinux1
init/built-in.o(.init.text+0x32e4): In function `.rd_load_image':
: undefined reference to.__kmalloc_size_too_large' fs/built-in.o(.text+0xa6fe0): In function.ext3_fill_super':
: undefined reference to.__kmalloc_size_too_large' fs/built-in.o(.text+0xc1fe0): In function.ext2_fill_super':
: undefined reference to.__kmalloc_size_too_large' fs/built-in.o(.text+0xf6a1c): In function.nfs4_proc_lookup':
: undefined reference to.__kmalloc_size_too_large' fs/built-in.o(.text+0x104104): In function.nfs_idmap_new':
: undefined reference to.__kmalloc_size_too_large' fs/built-in.o(.text+0x105520): more undefined references to.__kmalloc_size_too_large' follow
make: *** [.tmp_vmlinux1] Error 1
Ok, this is a SLUB related link failure. Am investigating if PPC simply needs larger allocs and needs CONFIG_LARGE_ALLOCS, of if this is an inlining issue.
-apw
Re: 2.6.21-rc7-mm2 -- PPC link failure
Quoted 18 lines · Andy Whitcroft
Quoted 16 lines · Andy Whitcroft
Getting a link failure on a ppc64 system:
LD .tmp_vmlinux1
init/built-in.o(.init.text+0x32e4): In function `.rd_load_image':
: undefined reference to.__kmalloc_size_too_large' fs/built-in.o(.text+0xa6fe0): In function.ext3_fill_super':
: undefined reference to.__kmalloc_size_too_large' fs/built-in.o(.text+0xc1fe0): In function.ext2_fill_super':
: undefined reference to.__kmalloc_size_too_large' fs/built-in.o(.text+0xf6a1c): In function.nfs4_proc_lookup':
: undefined reference to.__kmalloc_size_too_large' fs/built-in.o(.text+0x104104): In function.nfs_idmap_new':
: undefined reference to.__kmalloc_size_too_large' fs/built-in.o(.text+0x105520): more undefined references to.__kmalloc_size_too_large' follow
make: *** [.tmp_vmlinux1] Error 1
Quoted 3 lines
Ok, this is a SLUB related link failure. Am investigating if PPC simply needs larger allocs and needs
CONFIG_LARGE_ALLOCS, of if this is an inlining issue.
Ok this is confirmed as an inlining issue. With the compiler below on ppc64 we get the above link failure:
gcc version 3.3.3 (SuSE Linux)
What seems to happen is that although the optimiser is capable of collapsing the kmalloc_index() call it then fails to collapse kmalloc_slab(). This leads to the never used reference to __kmalloc_size_too_large() and the link failure. From my testing this seems to occur at sizes >= 32k. At 16k all of the code collapses correctly, at 32k it does not. I am not entirely sure what to think at this point, it is cirtainly not at all clear why the 32k version fails and the 16k succeeds they are almost identical.
Either way it seems to me that assuming the optimiser will remove the code is perhaps over optimistic. Perhaps it would make more sense to put a BUG() in here. Though that points out the anomaly that the kmalloc() for constants has different semantics to that for variable values?
Comments?
-apw
Re: 2.6.21-rc7-mm2 -- PPC link failure
Quoted 7 lines · Andy Whitcroft
Quoted 3 lines
Ok, this is a SLUB related link failure. Am investigating if PPC simply needs larger allocs and needs
CONFIG_LARGE_ALLOCS, of if this is an inlining issue.Ok this is confirmed as an inlining issue. With the compiler below on ppc64 we get the above link failure:
Quoted 7 lines
gcc version 3.3.3 (SuSE Linux)
What seems to happen is that although the optimiser is capable of collapsing the
kmalloc_index()call it then fails to collapsekmalloc_slab(). This leads to the never used reference to__kmalloc_size_too_large()and the link failure. From my testing this seems to occur at sizes >= 32k. At 16k all of the code collapses
Interesting. Why would that boundary be of relevance to the compiler? Some offset heuristics?
Quoted 3 lines
correctly, at 32k it does not. I am not entirely sure what to think at this point, it is cirtainly not at all clear why the 32k version fails and the 16k succeeds they are almost identical.
Likely a backend optimization issue.
Quoted 4 lines
Either way it seems to me that assuming the optimiser will remove the code is perhaps over optimistic. Perhaps it would make more sense to put a
BUG()in here. Though that points out the anomaly that thekmalloc()for constants has different semantics to that for variable values?
Yes but that has always been the case. We want to reduce kmalloc for constants at compile time to use the appropriate kmalloc cache. If kmalloc does not use a constant then we will do run time determination of the kmalloc cache.
The code in SLAB is easier to fold since it does not use a subroutine call.
We could simply #ifdef out the __kmalloc_sizes_too_large for ppc and let it fall back to __kmalloc? That would mean only that kmallocs >32k would require an additional determination of the kmalloc cache at run time.
But then how important is gcc 3.3 support?
Re: 2.6.21-rc7-mm2 -- PPC link failure
Quoted 35 lines · Christoph Lameter
Quoted 6 lines · Andy Whitcroft
Quoted 3 lines
Ok, this is a SLUB related link failure. Am investigating if PPC simply needs larger allocs and needs
CONFIG_LARGE_ALLOCS, of if this is an inlining issue.Ok this is confirmed as an inlining issue. With the compiler below on ppc64 we get the above link failure:
Quoted 7 lines
gcc version 3.3.3 (SuSE Linux)
What seems to happen is that although the optimiser is capable of collapsing the
kmalloc_index()call it then fails to collapsekmalloc_slab(). This leads to the never used reference to__kmalloc_size_too_large()and the link failure. From my testing this seems to occur at sizes >= 32k. At 16k all of the code collapsesInteresting. Why would that boundary be of relevance to the compiler? Some offset heuristics?
Quoted 3 lines
correctly, at 32k it does not. I am not entirely sure what to think at this point, it is cirtainly not at all clear why the 32k version fails and the 16k succeeds they are almost identical.
Likely a backend optimization issue.
Quoted 4 lines
Either way it seems to me that assuming the optimiser will remove the code is perhaps over optimistic. Perhaps it would make more sense to put a
BUG()in here. Though that points out the anomaly that thekmalloc()for constants has different semantics to that for variable values?Yes but that has always been the case. We want to reduce kmalloc for constants at compile time to use the appropriate kmalloc cache. If kmalloc does not use a constant then we will do run time determination of the kmalloc cache.
Quoted 8 lines
The code in SLAB is easier to fold since it does not use a subroutine call.
We could simply #ifdef out the
__kmalloc_sizes_too_largefor ppc and let it fall back to__kmalloc? That would mean only that kmallocs >32k would require an additional determination of the kmalloc cache at run time.But then how important is gcc 3.3 support?
Well we say 3.2 is the minimum. If we simply return(NULL) or BUG() in that branch the generated code actually works and is mostly optimised away. We end up with the assembly equivalent of:
index = 15; if (index == 0) return NULL; if (index < 0) __kmalloc_sizes_too_large(); return &kmalloc_caches[index];
The code is functionally correct, just stupid as clearly the if's can never trigger. We do not need to lose the constant optimisation, its just that the clever attempt to get a link error fails on this compiler.
I am inclined to suggest we change it for BUG:
BUG(index < 0);
Perhaps only on older compilers.
-apw
Re: 2.6.21-rc7-mm2 -- PPC link failure
Quoted 5 lines · Andy Whitcroft
I am inclined to suggest we change it for BUG:
BUG(index < 0);Perhaps only on older compilers.
I'd be fine with that solution.
Re: 2.6.21-rc7-mm2 -- PPC link failure
In reply to Andy WhitcroftQuoted 3 lines · Andy Whitcroft
Quoted 1 line
But then how important is gcc 3.3 support?
Well we say 3.2 is the minimum. If we simply return(NULL) or
BUG()in
Oh before I forget
Gcc 3.3 works just fine on other platforms like i386. This is more likely a platform issue. If we disable it then only for <= gcc 3.3 on ppc. If problems crop up with other platforms then we can expand on it.
Re: 2.6.21-rc7-mm2 -- PPC link failure
Quoted 10 lines · Christoph Lameter
Quoted 2 lines · Andy Whitcroft
Quoted 1 line
But then how important is gcc 3.3 support?
Well we say 3.2 is the minimum. If we simply return(NULL) or
BUG()inOh before I forget
Gcc 3.3 works just fine on other platforms like i386. This is more likely a platform issue. If we disable it then only for <= gcc 3.3 on ppc. If problems crop up with other platforms then we can expand on it.
I was thinking that it would be nasty to have a set of platform specific, compiler specific ifdefs in here. I was more thinking of just making this a BUG for all platforms. This does result in slightly later detection but this is a constant mode only, so any bad use of kmalloc() would be picked up on first boot in testing always.
I think that would be sufficient and safe even against the worst optimiser (none). Plus much less horrible to look at?
-apw
Re: 2.6.21-rc7-mm2 -- PPC link failure
Quoted 4 lines · Andy Whitcroft
Quoted 3 lines
Gcc 3.3 works just fine on other platforms like i386. This is more likely a platform issue. If we disable it then only for <= gcc 3.3 on ppc. If problems crop up with other platforms then we can expand on it.
Quoted 8 lines
I was thinking that it would be nasty to have a set of platform specific, compiler specific ifdefs in here. I was more thinking of just making this a BUG for all platforms. This does result in slightly later detection but this is a constant mode only, so any bad use of
kmalloc()would be picked up on first boot in testing always.I think that would be sufficient and safe even against the worst optimiser (none). Plus much less horrible to look at?
The build time detection is quite important for NUMA since structures keep growing. I'd like to keep that. In fact I would really like a build time detection. If a too large kmalloc occurs then the compile should stop at that point and the kernel should not link at all.
See my patch @ http://marc.info/?l=linux-kernel&m=117752927203466&w=2
Re: 2.6.21-rc7-mm2 -- PPC link failure
Quoted 14 lines · Christoph Lameter
Quoted 11 lines · Andy Whitcroft
Quoted 3 lines
Gcc 3.3 works just fine on other platforms like i386. This is more likely a platform issue. If we disable it then only for <= gcc 3.3 on ppc. If problems crop up with other platforms then we can expand on it.
I was thinking that it would be nasty to have a set of platform specific, compiler specific ifdefs in here. I was more thinking of just making this a BUG for all platforms. This does result in slightly later detection but this is a constant mode only, so any bad use of
kmalloc()would be picked up on first boot in testing always.I think that would be sufficient and safe even against the worst optimiser (none). Plus much less horrible to look at?
Quoted 6 lines
The build time detection is quite important for NUMA since structures keep growing. I'd like to keep that. In fact I would really like a build time detection. If a too large kmalloc occurs then the compile should stop at that point and the kernel should not link at all.
See my patch @ http://marc.info/?l=linux-kernel&m=117752927203466&w=2
Yeah I played with that for a bit last night to no good effect. BUILD_BUG_ON simply becomes a noop if the optimiser doesn't really really know that the thing its talking about is a real constant.
I assume that if it cannot be sure that it should constant fold the number, it leaves it for runtime. Then the optimiser sees that the thing is void and therefore removable and removes it. So no error.
Perhaps we need to enlist someone from gcc-land to tell us how to figure out what its doing and massage it into working.
-apw
Re: 2.6.21-rc7-mm2 -- PPC link failure
Quoted 5 lines · Andy Whitcroft
Quoted 1 line
See my patch @ http://marc.info/?l=linux-kernel&m=117752927203466&w=2
Yeah I played with that for a bit last night to no good effect.
BUILD_BUG_ONsimply becomes a noop if the optimiser doesn't really really know that the thing its talking about is a real constant.
Too bad. Sigh.
Quoted 6 lines
I assume that if it cannot be sure that it should constant fold the number, it leaves it for runtime. Then the optimiser sees that the thing is void and therefore removable and removes it. So no error.
Perhaps we need to enlist someone from gcc-land to tell us how to figure out what its doing and massage it into working.
In the meantime how about moving that generation of the link err out of SLUB and SLAB into kernel.h and make some BUILD_BUG() or so out of it? We are talking about some generically useful functionality I guess.
PATCH 1/1 mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
In reply to Andrew MortonRemove build warning mm/memory.c:1491: warning: 'ptl' may be used uninitialized in this function. The spinlock pointer is assigned to null since it gets overwritten right away in pte_alloc_map_lock().
---
mm/memory.c 2007-04-26 20:00:30.000000000 +0200 renamed from mm/memory.c 2007-04-26 19:57:14.000000000 +0200 +1 -1
@@ -1488,7 +1488,7 @@ pte_t *pte; int err; struct page *pmd_page; - spinlock_t *ptl; + spinlock_t *ptl = NULL; pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :
Signature · 2 lines
Regards/Gruß,
Boris.Andrew Morton
maintainerRe: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
Quoted 14 lines · On Thu, 26 Apr 2007 20:25:19 +0200 Borislav Petkov <[email protected]> wrote:
Remove build warning
mm/memory.c:1491: warning: 'ptl' may be used uninitialized in this function. The spinlock pointer is assigned to null since it gets overwritten right away inpte_alloc_map_lock().Signed-off-by Borislav Petkov <[email protected]>---
Index:
linux-mm/mm/memory.c
===================================================================
mm/memory.c 2007-04-26 20:00:30.000000000 +0200 line 1494
Quoted 8 lines
mm/memory.c 2007-04-26 20:00:30.000000000 +0200 renamed from mm/memory.c 2007-04-26 19:57:14.000000000 +0200 +1
-1@@ -1488,7 +1488,7 @@ pte_t *pte; int err; struct page *pmd_page; - spinlock_t *ptl; + spinlock_t *ptl = NULL; pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :
yes, I've been staring unhappily at this for some time.
Your change adds seven bytes of text to this function for no runtime benefit, just to fix a build-time warning. It's a general problem.
Often we just leave the warning in place and curse gcc each time it flies past. Sometimes the code can be restructured in a sensible fashion to avoid the warning; often it cannot.
But I don't think I want to put up with a warning coming out of core MM all the time so let's go with the following silliness which adds no additional runtime cost.
mm/memory.c renamed from mm/memory.c~add-apply_to_page_range-which-applies-a-function-to-a-pte-range-fix +1 -1
@@ -1455,7 +1455,7 @@ static int apply_to_pte_range(struct mm_pte_t *pte;int err;struct page *pmd_page; -spinlock_t *ptl; +spinlock_t *ptl = ptl;/* Suppress gcc warning */ pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :
_
Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
mm/memory.c static int apply_to_pte_range(struct mm_ · line 1459
Quoted 9 lines · Andrew Morton
mm/memory.c renamed from mm/memory.c~add-apply_to_page_range-which-applies-a-function-to-a-pte-range-fix +1
-1@@ -1455,7 +1455,7 @@ static int apply_to_pte_range(struct mm_pte_t *pte;int err;struct page *pmd_page; -spinlock_t *ptl; +spinlock_t *ptl = ptl;/* Suppress gcc warning */
Sigh. I guess so.
J
Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
In reply to Andrew MortonQuoted 51 lines · Andrew Morton
Quoted 14 lines · On Thu, 26 Apr 2007 20:25:19 +0200 Borislav Petkov <[email protected]> wrote:
Remove build warning
mm/memory.c:1491: warning: 'ptl' may be used uninitialized in this function. The spinlock pointer is assigned to null since it gets overwritten right away inpte_alloc_map_lock().Signed-off-by Borislav Petkov <[email protected]>---
Index:
linux-mm/mm/memory.c
===================================================================mm/memory.c 2007-04-26 20:00:30.000000000 +0200 line 1494
Quoted 8 lines
mm/memory.c 2007-04-26 20:00:30.000000000 +0200 renamed from mm/memory.c 2007-04-26 19:57:14.000000000 +0200 +1
-1@@ -1488,7 +1488,7 @@ pte_t *pte; int err; struct page *pmd_page; - spinlock_t *ptl; + spinlock_t *ptl = NULL; pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :yes, I've been staring unhappily at this for some time.
Your change adds seven bytes of text to this function for no runtime benefit, just to fix a build-time warning. It's a general problem.
Often we just leave the warning in place and curse gcc each time it flies past. Sometimes the code can be restructured in a sensible fashion to avoid the warning; often it cannot.
But I don't think I want to put up with a warning coming out of core MM all the time so let's go with the following silliness which adds no additional runtime cost.
mm/memory.c renamed from mm/memory.c~add-apply_to_page_range-which-applies-a-function-to-a-pte-range-fix +1
-1@@ -1455,7 +1455,7 @@ static int apply_to_pte_range(struct mm_pte_t *pte;int err;struct page *pmd_page; -spinlock_t *ptl; +spinlock_t *ptl = ptl;/* Suppress gcc warning */ pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :
Quoted 1 line
_
Yeah,
I saw in other places that usually a NULL/0 is assigned to such a type of pointer. However, writing code which looks pretty silly just to shut up gcc is pretty senseless, IMHO. Isn't there such a tweak in gcc to say that this pointer is going to be assigned to later on, so don't issue a warning. Something like
__attribute__ __address_will_be_overwritten_so_don't_bother_warning_me__?
/me going to read gcc docs...
Signature · 2 lines
Regards/Gruß,
Boris.Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
Quoted 60 lines · Borislav Petkov
Quoted 51 lines · Andrew Morton
Quoted 14 lines · On Thu, 26 Apr 2007 20:25:19 +0200 Borislav Petkov <[email protected]> wrote:
Remove build warning
mm/memory.c:1491: warning: 'ptl' may be used uninitialized in this function. The spinlock pointer is assigned to null since it gets overwritten right away inpte_alloc_map_lock().Signed-off-by Borislav Petkov <[email protected]>---
Index:
linux-mm/mm/memory.c
===================================================================mm/memory.c 2007-04-26 20:00:30.000000000 +0200 line 1494
Quoted 8 lines
mm/memory.c 2007-04-26 20:00:30.000000000 +0200 renamed from mm/memory.c 2007-04-26 19:57:14.000000000 +0200 +1
-1@@ -1488,7 +1488,7 @@ pte_t *pte; int err; struct page *pmd_page; - spinlock_t *ptl; + spinlock_t *ptl = NULL; pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :yes, I've been staring unhappily at this for some time.
Your change adds seven bytes of text to this function for no runtime benefit, just to fix a build-time warning. It's a general problem.
Often we just leave the warning in place and curse gcc each time it flies past. Sometimes the code can be restructured in a sensible fashion to avoid the warning; often it cannot.
But I don't think I want to put up with a warning coming out of core MM all the time so let's go with the following silliness which adds no additional runtime cost.
mm/memory.c renamed from mm/memory.c~add-apply_to_page_range-which-applies-a-function-to-a-pte-range-fix +1
-1@@ -1455,7 +1455,7 @@ static int apply_to_pte_range(struct mm_pte_t *pte;int err;struct page *pmd_page; -spinlock_t *ptl; +spinlock_t *ptl = ptl;/* Suppress gcc warning */ pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :Quoted 1 line
_
Yeah,
I saw in other places that usually a NULL/0 is assigned to such a type of pointer. However, writing code which looks pretty silly just to shut up gcc is pretty senseless, IMHO. Isn't there such a tweak in gcc to say that this pointer is going to be assigned to later on, so don't issue a warning. Something like
Quoted 3 lines
__attribute____address_will_be_overwritten_so_don't_bother_warning_me__?/me going to read gcc docs...
Sorry, no such thing in the docs to do
spinlock_t __attribute__((__uninitialized__)) *ptl;
in order to suppress warnings. But if function size is our concern here, even shorter would be:
mm/memory.c 2007-04-26 20:00:30.000000000 +0200 renamed from mm/memory.c 2007-04-26 19:57:14.000000000 +0200 +1 -1
@@ -1488,7 +1488,7 @@ pte_t *pte; int err; struct page *pmd_page; - spinlock_t *ptl; + spinlock_t *ptl = 0; pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :
Signature · 2 lines
Regards/Gruß,
Boris.Andrew Morton
maintainerRe: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
Quoted 9 lines · On Sat, 28 Apr 2007 08:25:17 +0200 Borislav Petkov <[email protected]> wrote:
Quoted 3 lines
__attribute____address_will_be_overwritten_so_don't_bother_warning_me__?/me going to read gcc docs...
Sorry, no such thing in the docs to do
spinlock_t__attribute__((__uninitialized__)) *ptl;in order to suppress warnings.
Bummer. Thanks for checking.
Quoted 8 lines
But if function size is our concern here, even
shorter would be:Index:
linux-mm/mm/memory.c
===================================================================
mm/memory.c 2007-04-26 20:00:30.000000000 +0200 line 1494
Quoted 8 lines
mm/memory.c 2007-04-26 20:00:30.000000000 +0200 renamed from mm/memory.c 2007-04-26 19:57:14.000000000 +0200 +1
-1@@ -1488,7 +1488,7 @@ pte_t *pte; int err; struct page *pmd_page; - spinlock_t *ptl; + spinlock_t *ptl = 0; pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :
hm, that'll have the same seven-byte cost as `= NULL;', won't it?
Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
In reply to Borislav PetkovQuoted 7 lines · Borislav Petkov
Sorry, no such thing in the docs to do
spinlock_t__attribute__((__uninitialized__)) *ptl;in order to suppress warnings. But if function size is our concern here, even shorter would be:
asm("" : "=rm" (ptl)) would do the job, I think, but it's pretty ugly syntactically.
J
Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
In reply to Andrew MortonQuoted 50 lines · Andrew Morton
Quoted 13 lines · On Thu, 26 Apr 2007 20:25:19 +0200 Borislav Petkov <[email protected]> wrote:
Remove build warning
mm/memory.c:1491: warning: 'ptl' may be used uninitialized in this function. The spinlock pointer is assigned to null since it gets overwritten right away inpte_alloc_map_lock().Signed-off-by Borislav Petkov <[email protected]>---
Index:
linux-mm/mm/memory.c
===================================================================mm/memory.c 2007-04-26 20:00:30.000000000 +0200 line 1494
Quoted 8 lines
mm/memory.c 2007-04-26 20:00:30.000000000 +0200 renamed from mm/memory.c 2007-04-26 19:57:14.000000000 +0200 +1
-1@@ -1488,7 +1488,7 @@ pte_t *pte; int err; struct page *pmd_page; - spinlock_t *ptl; + spinlock_t *ptl = NULL; pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :yes, I've been staring unhappily at this for some time.
Your change adds seven bytes of text to this function for no runtime benefit, just to fix a build-time warning. It's a general problem.
Often we just leave the warning in place and curse gcc each time it flies past. Sometimes the code can be restructured in a sensible fashion to avoid the warning; often it cannot.
But I don't think I want to put up with a warning coming out of core MM all the time so let's go with the following silliness which adds no additional runtime cost.
mm/memory.c renamed from mm/memory.c~add-apply_to_page_range-which-applies-a-function-to-a-pte-range-fix +1
-1@@ -1455,7 +1455,7 @@ static int apply_to_pte_range(struct mm_pte_t *pte;int err;struct page *pmd_page; -spinlock_t *ptl; +spinlock_t *ptl = ptl;/* Suppress gcc warning */ pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :
Quoted 2 lines
_
Perhaps we should have some kind definition helper.
#define suppress_unused(x) x = x
spinlock_t *suppress_unused(ptl);
Perhaps?
-apw
Andrew Morton
maintainerRe: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
Quoted 15 lines · On Sun, 29 Apr 2007 00:48:37 +0100 Andy Whitcroft <[email protected]> wrote:
Quoted 10 lines
+++
a/mm/memory.cmm/memory.c renamed from mm/memory.c~add-apply_to_page_range-which-applies-a-function-to-a-pte-range-fix +1
-1@@ -1455,7 +1455,7 @@ static int apply_to_pte_range(struct mm_pte_t *pte;int err;struct page *pmd_page; -spinlock_t *ptl; +spinlock_t *ptl = ptl;/* Suppress gcc warning */ pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :Quoted 2 lines
_
Perhaps we should have some kind definition helper.
Quoted 5 lines
#define
suppress_unused(x)x = xspinlock_t *suppress_unused(ptl);Perhaps?
I think so. It makes it clear what's happening and it allows us to change the implementation later on if the present trick stops working in later gcc. It also allows people to suppress the suppression (some have expressed concern that it can hide real bugs).
But I lost (or didn't pursue) the bunfight^Wdiscussion last time this came around.
Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
In reply to Andy WhitcroftQuoted 56 lines · Andy Whitcroft
Quoted 50 lines · Andrew Morton
Quoted 13 lines · On Thu, 26 Apr 2007 20:25:19 +0200 Borislav Petkov <[email protected]> wrote:
Remove build warning
mm/memory.c:1491: warning: 'ptl' may be used uninitialized in this function. The spinlock pointer is assigned to null since it gets overwritten right away inpte_alloc_map_lock().Signed-off-by Borislav Petkov <[email protected]>---
Index:
linux-mm/mm/memory.c
===================================================================mm/memory.c 2007-04-26 20:00:30.000000000 +0200 line 1494
Quoted 8 lines
mm/memory.c 2007-04-26 20:00:30.000000000 +0200 renamed from mm/memory.c 2007-04-26 19:57:14.000000000 +0200 +1
-1@@ -1488,7 +1488,7 @@ pte_t *pte; int err; struct page *pmd_page; - spinlock_t *ptl; + spinlock_t *ptl = NULL; pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :yes, I've been staring unhappily at this for some time.
Your change adds seven bytes of text to this function for no runtime benefit, just to fix a build-time warning. It's a general problem.
Often we just leave the warning in place and curse gcc each time it flies past. Sometimes the code can be restructured in a sensible fashion to avoid the warning; often it cannot.
But I don't think I want to put up with a warning coming out of core MM all the time so let's go with the following silliness which adds no additional runtime cost.
mm/memory.c renamed from mm/memory.c~add-apply_to_page_range-which-applies-a-function-to-a-pte-range-fix +1
-1@@ -1455,7 +1455,7 @@ static int apply_to_pte_range(struct mm_pte_t *pte;int err;struct page *pmd_page; -spinlock_t *ptl; +spinlock_t *ptl = ptl;/* Suppress gcc warning */ pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :Quoted 2 lines
_
Perhaps we should have some kind definition helper.
Quoted 3 lines
#define
suppress_unused(x)x = xspinlock_t *suppress_unused(ptl);
I like that idea, let's do that. However, Andrew's concern remains still valid about suppressing the suppression and thereby hiding real bugs. But hey, the use of such a macro is pretty straightforward and if we choose a suitable name for it stating the unitialized state of the variable, messing up stuff then and producing a faulty code out of it is pretty careless to begin with, IMVHO. Here's a patch:
-----
From: Borislav Petkov <[email protected]>
Introduce a macro for suppressing gcc from generating a warning about a probable unitialized state of a variable.
---
include/linux/compiler.h +4 -0
@@ -109,6 +109,10 @@ extern int do_check_likely(struct likeli (typeof(ptr)) (__ptr + (off)); })#endif +#ifndef unitialized_var +# define unitialized_var (x) x = x +#endif +#endif /* __KERNEL__ */ #endif /* __ASSEMBLY__ */
mm/memory.c +1 -1
@@ -1488,7 +1488,7 @@ static int apply_to_pte_range(struct mm_pte_t *pte;int err;struct page *pmd_page; -spinlock_t *ptl; +spinlock_t *unitialized_var (ptl ); pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :
Signature · 2 lines
Regards/Gruß, Boris.
Andrew Morton
maintainerRe: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
Quoted 28 lines · On Sun, 29 Apr 2007 08:50:49 +0200 Borislav Petkov <[email protected]> wrote:
Introduce a macro for suppressing gcc from generating a warning about a probable unitialized state of a variable.
Signed-off-by Borislav Petkov <[email protected]>---
Index:
linux-mm/include/linux/compiler.h
===================================================================include/linux/compiler.h +4
-0@@ -109,6 +109,10 @@ extern int do_check_likely(struct likeli (typeof(ptr)) (__ptr + (off)); })#endif +#ifndef unitialized_var +# define unitialized_var (x) x = x +#endif +#endif /* __KERNEL__ */ #endif /* __ASSEMBLY__ */ Index:
linux-mm/mm/memory.c
===================================================================
mm/memory.c static int apply_to_pte_range(struct mm_ · line 1494
Quoted 8 lines
mm/memory.c +1
-1@@ -1488,7 +1488,7 @@ static int apply_to_pte_range(struct mm_pte_t *pte;int err;struct page *pmd_page; -spinlock_t *ptl; +spinlock_t *unitialized_var (ptl ); pte = (mm == &init_mm) ? pte_alloc_kernel(pmd, addr) :
Ho hum. I guess I'll slide this over to Linus if there's not too much howling, and unless someone can come up with anything better.
I will, however, fix the spelling to "uninitialized" ;)
Andrew Morton
maintainerRe: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
In reply to Borislav PetkovQuoted 2 lines · On Sun, 29 Apr 2007 08:50:49 +0200 Borislav Petkov <[email protected]> wrote:
Introduce a macro for suppressing gcc from generating a warning about a probable unitialized state of a variable.
I ended up doing the below.
It's better to make this a per-compiler-version thing: later versions of gcc might need different tricks, or might provide __attribute__((stfu)) or whatever.
Plus I don't know if the x=x trick is needed on the intel compiler, nor if it even works, so I left ICC alone.
From: Borislav Petkov <[email protected]>
Introduce a macro for suppressing gcc from generating a warning about a probable uninitialized state of a variable.
Example:
- spinlock_t *ptl;
+ spinlock_t *uninitialized_var(ptl);
Not a happy solution, but those warnings are obnoxious.
- Using the usual pointlessly-set-it-to-zero approach wastes several bytes of text.
- Using a macro means we can (hopefully) do something else if gcc changes cause the `x = x' hack to stop working
- Using a macro means that people who are worried about hiding true bugs can easily turn it off.
---
include/linux/compiler-gcc3.h | 6 ++++++ include/linux/compiler-gcc4.h | 6 ++++++ include/linux/compiler-intel.h | 2 ++ 3 files changed, 14 insertions(+)
include/linux/compiler-gcc3.h renamed from include/linux/compiler-gcc3.h~add-unitialized_var-macro-for-suppressing-gcc-warnings +6 -0
@@ -13,4 +13,10 @@#define __must_check __attribute__((warn_unused_result))#endif +/* +* A trick to suppress uninitialized variable warning without generating any +* code +*/ +#define uninitialized_var (x) x = x +#define __always_inline inline __attribute__((always_inline))
include/linux/compiler-gcc4.h renamed from include/linux/compiler-gcc4.h~add-unitialized_var-macro-for-suppressing-gcc-warnings +6 -0
@@ -16,3 +16,9 @@#define __must_check __attribute__((warn_unused_result))#define __compiler_offsetof (a,b) __builtin_offsetof(a,b)#define __always_inline inline __attribute__((always_inline)) + +/* +* A trick to suppress uninitialized variable warning without generating any +* code +*/ +#define uninitialized_var (x) x = x
include/linux/compiler-intel.h renamed from include/linux/compiler-intel.h~add-unitialized_var-macro-for-suppressing-gcc-warnings +2 -0
@@ -22,3 +22,5 @@ (typeof(ptr)) (__ptr + (off)); })#endif + +#define uninitialized_var (x) x
_
Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
Quoted 10 lines · Andrew Morton
Quoted 2 lines · On Sun, 29 Apr 2007 08:50:49 +0200 Borislav Petkov <[email protected]> wrote:
Introduce a macro for suppressing gcc from generating a warning about a probable unitialized state of a variable.
I ended up doing the below.
It's better to make this a per-compiler-version thing: later versions of gcc might need different tricks, or might provide __attribute__((stfu)) or whatever.
__attribute__((unused)) ?
Dave
Signature · 1 line
http://www.codemonkey.org.uk
Andrew Morton
maintainerRe: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
Quoted 6 lines · On Sun, 29 Apr 2007 17:36:01 -0400 Dave Jones <[email protected]> wrote:
Quoted 5 lines · Andrew Morton
Quoted 2 lines · On Sun, 29 Apr 2007 08:50:49 +0200 Borislav Petkov <[email protected]> wrote:
Introduce a macro for suppressing gcc from generating a warning about a probable unitialized state of a variable.
Quoted 7 lines
Quoted 5 lines
I ended up doing the below.
It's better to make this a per-compiler-version thing: later versions of gcc might need different tricks, or might provide __attribute__((stfu)) or whatever.
__attribute__((unused)) ?
That'll prevent unused-variable warnings, but there doesn't appear to be an attribute to prevent might-be-used-uninitialized warnings.
Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
In reply to Andrew MortonQuoted 14 lines
Introduce a macro for suppressing gcc from generating a warning about a probable uninitialized state of a variable.
Example:
(quoted diff) +1
-1- spinlock_t *ptl; + spinlock_t *uninitialized_var(ptl);Not a happy solution, but those warnings are obnoxious.
- Using the usual pointlessly-set-it-to-zero approach wastes several bytes of text.
Quoted 8 lines
- Using a macro means we can (hopefully) do something else if gcc changes cause the `x = x' hack to stop working
- Using a macro means that people who are worried about hiding true bugs can easily turn it off.
Signed-off-by Borislav Petkov <[email protected]>Signed-off-by Andrew Morton <[email protected]>
I just stumbled across this being in the kernel. Well, I'm finally glad it made it in, even though it was suggested one year earlier ;-)
http://lkml.org/lkml/2006/5/11/50
-- Steve
Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2
Quoted 20 lines · Steven Rostedt
Quoted 20 lines
Introduce a macro for suppressing gcc from generating a warning about a probable uninitialized state of a variable.
Example:
(quoted diff) +1
-1- spinlock_t *ptl; + spinlock_t *uninitialized_var(ptl);Not a happy solution, but those warnings are obnoxious.
- Using the usual pointlessly-set-it-to-zero approach wastes several bytes of text.
- Using a macro means we can (hopefully) do something else if gcc changes cause the `x = x' hack to stop working
- Using a macro means that people who are worried about hiding true bugs can easily turn it off.
Quoted 7 lines
Quoted 2 lines
Signed-off-by Borislav Petkov <[email protected]>Signed-off-by Andrew Morton <[email protected]>I just stumbled across this being in the kernel. Well, I'm finally glad it made it in, even though it was suggested one year earlier ;-)
yeah, this was Andrew's idea. The version in the kernel, in contrast to yours, doesn't have a config option so you still have to make really sure you're not aiding any bugs with it.
Signature · 2 lines
Regards/Gruß,
Boris.PATCH 1/1 make drivers/hwmon/applesmc.c:backlight_work static
In reply to Andrew MortonThis patch makes the needlessly global "backlight_work" static.
---
drivers/hwmon/applesmc.c renamed from drivers/hwmon/applesmc.c.old +1 -1
@@ -742,7 +742,7 @@applesmc_write_key (BACKLIGHT_KEY , buffer,2 );mutex_unlock (&applesmc_lock); } -DECLARE_WORK (backlight_work, &applesmc_backlight_set); +static DECLARE_WORK(backlight_work, &applesmc_backlight_set);static void applesmc_brightness_set (struct led_classdev *led_cdev,enum led_brightness value)
PATCH 1/1 unexport highlevel_host_reset
In reply to Andrew MortonQuoted 7 lines · Andrew Morton
...
Changes since 2.6.21-rc7-mm1:
...
git-ieee1394.patch
...
git trees
...
highlevel_host_reset no longer has any modular users.
---
drivers/ieee1394/ieee1394_core.c renamed from drivers/ieee1394/ieee1394_core.c.old +0 -1
@@ -1338,7 +1338,6 @@EXPORT_SYMBOL (hpsb_set_hostinfo_key);EXPORT_SYMBOL (hpsb_get_hostinfo_bykey);EXPORT_SYMBOL (hpsb_set_hostinfo); -EXPORT_SYMBOL (highlevel_host_reset);/** nodemgr.c **/ EXPORT_SYMBOL (hpsb_node_fill_packet);
Re: [-mm patch] unexport highlevel_host_reset
Quoted 1 line · Adrian Bunk
highlevel_host_resetno longer has any modular users.
Thanks, I missed this when I removed the last usage outside the 1394 core. Committed to linux1394-2.6.git.
Signature · 3 lines
Stefan Richter -=====-=-=== -=-- ==-== http://arcgraph.de/sr/
2.6.21-rc7-mm2 breaks 'lvm vgscan'.
In reply to Andrew MortonQuoted 1 line · Andrew Morton
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
This addition in -rc7-mm1 breaks my laptop (Dell Latitude D820, x86_64 kernel)
gregkh-driver-sysfs-fix-i_ino-handling-in-sysfs.patch
The initrd on my system does an 'lvm vgscan' to get the root filesystem accessible. Under -rc5-mm2, this works fine. For -rc7-mm[12], it finds the disk:
ata_piix 0000:00:1f.2: version 2.11ata_piix 0000:00:1f.2: MAP [ P0 P2 IDE IDE ]
ACPI: PCI Interrupt 0000:00:1f.2[B] -> GSI 17 (level, low) -> IRQ 17
PCI: Setting latency timer of device 0000:00:1f.2 to 64
scsi0 : ata_piix
scsi1 : ata_piix
ata1: SATA max UDMA/133 cmd 0x00000000000101f0 ctl 0x00000000000103f6 bmdma 0x000000000001bfa0 irq 14
ata2: PATA max UDMA/100 cmd 0x0000000000010170 ctl 0x0000000000010376 bmdma 0x000000000001bfa8 irq 15 ata1.00: ata_hpa_resize 1: sectors = 156301488, hpa_sectors = 156301488
ata1.00: ATA-7: ST980825AS, 8.04, max UDMA/133
ata1.00: 156301488 sectors, multi 8: LBA48 NCQ (depth 0/32)
ata1.00: ata_hpa_resize 1: sectors = 156301488, hpa_sectors = 156301488
ata1.00: configured for UDMA/133
ata2.00: ATAPI, max UDMA/33
ata2.00: configured for UDMA/33
scsi 0:0:0:0: Direct-Access ATA ST980825AS 8.04 PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 156301488 512-byte hardware sectors (80026 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA sd 0:0:0:0: [sda] 156301488 512-byte hardware sectors (80026 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sda: sda1 sda2
sd 0:0:0:0: [sda] Attached SCSI disk
sda1 is an ext3 /boot, sda2 is an LVM space covering the rest of the disk, so we're doing well so far.
The 'lvm vgscan' fails and says 'No volume groups found, with no useful kernel messages issued. Then we get the infamous "Kernel panic - not syncing:
Attempted to kill init!" when it can't find the root file system and we fall off the end of the initrd.
Any ideas?
Andrew Morton
maintainerRe: 2.6.21-rc7-mm2 breaks 'lvm vgscan'.
Quoted 6 lines · On Thu, 26 Apr 2007 22:31:15 -0400 [email protected] wrote:
Quoted 1 line · Andrew Morton
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
This addition in -rc7-mm1 breaks my laptop (Dell Latitude D820,
x86_64kernel)gregkh-driver-sysfs-fix-i_ino-handling-in-sysfs.patch
Thanks for doing the bisection. It is boring, but helps so much.
Quoted 1 line
Any ideas?
You cc'ed the right guy ;)
Re: 2.6.21-rc7-mm2 breaks 'lvm vgscan'.
In reply to [email protected]Quoted 9 lines · On Thu, 26 Apr 2007 22:31:15 EDT, [email protected] said:
Quoted 1 line · Andrew Morton
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
This addition in -rc7-mm1 breaks my laptop (Dell Latitude D820,
x86_64kernel)gregkh-driver-sysfs-fix-i_ino-handling-in-sysfs.patch
The initrd on my system does an 'lvm vgscan' to get the root filesystem accessible.
This is confirmed fixed in 2.6.21-mm1.
2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
In reply to Andrew MortonWith kernel 2.6.21-rc7-mm2, my Dell Optiplex GX110 (P3/933) regularly crashes during the SuSE 10.1 startup sequence. When booting to RL5, it panicblinks shortly after the graphical login screen appears. Booting to RL3, it hangs after the startup message:
Starting Firewall Initialization (phase 2 of 2)
(the last message before "runlevel 3 has been reached") logging this:
[ 57.138955] Eeek! page_mapcount(page) went negative! (-1) [ 57.139040] page pfn = 0 [ 57.139053] page->flags = 400 [ 57.139066] page->count = 1 [ 57.139079] page->mapping = 00000000 [ 57.139111] vma->vm_ops = generic_file_vm_ops+0x0/0x18 [ 57.139147] vma->vm_ops->nopage = 0x0 [ 57.139181] vma->vm_file->f_op->mmap = reiserfs_file_mmap+0x0/0x47 [ 57.139220] ------------[ cut here ]------------ [ 57.139236] kernel BUG at mm/rmap.c:648! [ 57.139251] invalid opcode: 0000 [#1] [ 57.139264] PREEMPT [ 57.139278] Modules linked in: usbserial snd_rtctimer snd_seq_dummy snd_pcm_oss snd_mixer_oss snd_seq snd_seq_device thermal processor fan button battery ac af_packet usb_gigaset ser_gigaset bas_gigaset gigaset isdn slhc crc_ccitt ip6t_REJECT xt_tcpudp ipt_REJECT xt_state iptable_mangle iptable_nat nf_nat iptable_filter ip6table_mangle nf_conntrack_ipv4 nf_conntrack nfnetlink ip_tables ip6table_filter ip6_tables x_tables ehci_hcd snd_intel8x0 snd_ac97_codec ac97_bus snd_pcm snd_timer snd soundcore snd_page_alloc i2c_i801 uhci_hcd parport_pc lp parport ipv6 nls_iso8859_1 nls_cp437 vfat fat nls_utf8 ntfs dm_mod [ 57.139447] CPU: 0 [ 57.139450] EIP: 0060:[<c015dfc0>] Not tainted VLI [ 57.139453] EFLAGS: 00010282 (2.6.21-rc7-mm2-noinitrd #1) [ 57.139506] EIP is at page_remove_rmap+0xd7/0x106 [ 57.139522] eax: 0000004b ebx: c1000000 ecx: 00000001 edx: 00000002 [ 57.139541] esi: c309fde0 edi: b7f24000 ebp: c373ec90 esp: c373ec78 [ 57.139559] ds: 007b es: 007b fs: 0000 gs: 0000 ss: 0068 [ 57.139577] Process getcfg-interfac (pid: 4343, ti=c373e000 task=c18734d0 task.ti=c373e000) [ 57.139586] Stack: c042abb5 00000000 c373ec90 c13f91c0 c1000000 c373dc90 c373ecf0 c0158df4 [ 57.139618] c04f2ac4 00000001 00000000 c309fde0 c373ed10 00005ff1 00000000 00000001 [ 57.139647] b7f62000 c374cb7c c374cb7c c374cb7c c373b344 fffffffe 00000000 c0569c2c [ 57.139677] Call Trace: [ 57.139721] [<c0158df4>] unmap_vmas+0x2d7/0x4c9 [ 57.139748] [<c015b7dd>] exit_mmap+0x68/0xeb [ 57.139772] [<c01191b0>] mmput+0x52/0xcb [ 57.139805] [<c011c368>] exit_mm+0xbb/0xc3 [ 57.139832] [<c011d188>] do_exit+0x1ea/0x73e [ 57.139857] [<c011d74d>] sys_exit_group+0x0/0x13 [ 57.139880] [<c012524e>] get_signal_to_deliver+0x6cd/0x6f8 [ 57.139917] [<c01036cf>] do_notify_resume+0x91/0x692 [ 57.139944] [<c0103f15>] work_notifysig+0x13/0x1a [ 57.139970] [<b7f6b7a8>] 0xb7f6b7a8 [ 57.139988] ======================= [ 57.140002] INFO: lockdep is turned off. [ 57.140015] Code: c0 74 0d 8b 50 0c b8 e5 ab 42 c0 e8 d7 fa fd ff 8b 46 48 85 c0 74 14 8b 40 10 85 c0 74 0d 8b 50 2c b8 04 ac 42 c0 e8 bc fa fd ff <0f> 0b eb fe 8b 53 10 8b 03 83 e2 01 f7 da c1 e8 1e 83 c2 04 69 [ 57.140133] EIP: [<c015dfc0>] page_remove_rmap+0xd7/0x106 SS:ESP 0068:c373ec78 [ 57.140191] Fixing recursive fault but reboot is needed! [ 57.140209] BUG: scheduling while atomic: getcfg-interfac/0x00000002/4343 [ 57.140225] INFO: lockdep is turned off. [ 57.140247] [<c0104e80>] dump_trace+0x61/0x1e4 [ 57.140275] [<c010501d>] show_trace_log_lvl+0x1a/0x30 [ 57.140298] [<c0105fe9>] show_trace+0x12/0x14 [ 57.140322] [<c0106000>] dump_stack+0x15/0x17 [ 57.140344] [<c0380849>] schedule+0x6e/0x52c [ 57.140383] [<c011d08f>] do_exit+0xf1/0x73e [ 57.140407] [<c010569b>] die+0x1b7/0x1bf [ 57.140429] [<c0105a66>] do_trap+0x8d/0xa7 [ 57.140451] [<c0105dd2>] do_invalid_op+0x88/0x92 [ 57.140474] [<c03833ba>] error_code+0x6a/0x70 [ 57.140500] [<c015dfc0>] page_remove_rmap+0xd7/0x106 [ 57.140525] [<c0158df4>] unmap_vmas+0x2d7/0x4c9 [ 57.140548] [<c015b7dd>] exit_mmap+0x68/0xeb [ 57.140571] [<c01191b0>] mmput+0x52/0xcb [ 57.140593] [<c011c368>] exit_mm+0xbb/0xc3 [ 57.140615] [<c011d188>] do_exit+0x1ea/0x73e [ 57.140638] [<c011d74d>] sys_exit_group+0x0/0x13 [ 57.140661] [<c012524e>] get_signal_to_deliver+0x6cd/0x6f8 [ 57.140686] [<c01036cf>] do_notify_resume+0x91/0x692 [ 57.140708] [<c0103f15>] work_notifysig+0x13/0x1a [ 57.140731] [<b7f6b7a8>] 0xb7f6b7a8 [ 57.140749] =======================
followed by a couple of these:
[ 87.264940] BUG: sleeping function called from invalid context at mm/slab.c:3054 [ 87.265023] in_atomic():1, irqs_disabled():0 [ 87.265038] INFO: lockdep is turned off. [ 87.265079] [<c0104e80>] dump_trace+0x61/0x1e4 [ 87.265119] [<c010501d>] show_trace_log_lvl+0x1a/0x30 [ 87.265161] [<c0105fe9>] show_trace+0x12/0x14 [ 87.265187] [<c0106000>] dump_stack+0x15/0x17 [ 87.265210] [<c01177b3>] __might_sleep+0xc7/0xcd [ 87.265241] [<c0168548>] __kmalloc_track_caller+0x67/0xe9 [ 87.265281] [<c0156e0b>] __kzalloc+0x13/0x3d [ 87.265312] [<c0226a6c>] kobject_get_path+0x3b/0x94 [ 87.265342] [<c02b4004>] dev_uevent+0x2d0/0x36a [ 87.265375] [<c02b36ac>] show_uevent+0x94/0xe4 [ 87.265400] [<c02b34fd>] dev_attr_show+0x1b/0x1f [ 87.265424] [<c01a7ac0>] sysfs_read_file+0x17f/0x1b0 [ 87.265454] [<c016bbf8>] vfs_read+0xaf/0x138 [ 87.265479] [<c016c476>] sys_read+0x3d/0x61 [ 87.265503] [<c0103dc2>] sysenter_past_esp+0x5f/0x99 [ 87.265531] [<b7fd7410>] 0xb7fd7410 [ 87.265568] =======================
separated by 20 or 40 second pauses, before rebooting spontaneously.
2.6.21-rc7-mm1 crashed too. 2.6.21 runs fine.
Please let me know if you need more information or want me to test anything.
HTH
T.
Signature · 4 lines
Tilman Schmidt E-Mail: [email protected] Bonn, Germany - In theory, there is no difference between theory and practice. In practice, there is.
Andrew Morton
maintainerRe: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Quoted 39 lines · On Sat, 28 Apr 2007 19:56:59 +0200 Tilman Schmidt <[email protected]> wrote:
With kernel 2.6.21-rc7-mm2, my Dell Optiplex GX110 (P3/933) regularly crashes during the SuSE 10.1 startup sequence. When booting to RL5, it panicblinks shortly after the graphical login screen appears. Booting to RL3, it hangs after the startup message:
Starting Firewall Initialization (phase 2 of 2)
(the last message before "runlevel 3 has been reached") logging this:
[ 57.138955] Eeek! page_mapcount(page) went negative! (-1) [ 57.139040] page pfn = 0 [ 57.139053] page->flags = 400 [ 57.139066] page->count = 1 [ 57.139079] page->mapping = 00000000 [ 57.139111] vma->vm_ops = generic_file_vm_ops+0x0/0x18 [ 57.139147] vma->vm_ops->nopage = 0x0 [ 57.139181] vma->vm_file->f_op->mmap = reiserfs_file_mmap+0x0/0x47 [ 57.139220] ------------[ cut here ]------------ [ 57.139236] kernel BUG at mm/rmap.c:648! [ 57.139251] invalid opcode: 0000 [#1] [ 57.139264] PREEMPT [ 57.139278] Modules linked in: usbserial snd_rtctimer snd_seq_dummy snd_pcm_oss snd_mixer_oss snd_seq snd_seq_device thermal processor fan button battery ac af_packet usb_gigaset ser_gigaset bas_gigaset gigaset isdn slhc crc_ccitt ip6t_REJECT xt_tcpudp ipt_REJECT xt_state iptable_mangle iptable_nat nf_nat iptable_filter ip6table_mangle nf_conntrack_ipv4 nf_conntrack nfnetlink ip_tables ip6table_filter ip6_tables x_tables ehci_hcd snd_intel8x0 snd_ac97_codec ac97_bus snd_pcm snd_timer snd soundcore snd_page_alloc i2c_i801 uhci_hcd parport_pc lp parport ipv6 nls_iso8859_1 nls_cp437 vfat fat nls_utf8 ntfs dm_mod [ 57.139447] CPU: 0 [ 57.139450] EIP: 0060:[<c015dfc0>] Not tainted VLI [ 57.139453] EFLAGS: 00010282 (2.6.21-rc7-mm2-noinitrd #1) [ 57.139506] EIP is at page_remove_rmap+0xd7/0x106 [ 57.139522] eax: 0000004b ebx: c1000000 ecx: 00000001 edx: 00000002 [ 57.139541] esi: c309fde0 edi: b7f24000 ebp: c373ec90 esp: c373ec78 [ 57.139559] ds: 007b es: 007b fs: 0000 gs: 0000 ss: 0068 [ 57.139577] Process getcfg-interfac (pid: 4343, ti=c373e000 task=c18734d0 task.ti=c373e000) [ 57.139586] Stack: c042abb5 00000000 c373ec90 c13f91c0 c1000000 c373dc90 c373ecf0 c0158df4 [ 57.139618] c04f2ac4 00000001 00000000 c309fde0 c373ed10 00005ff1 00000000 00000001 [ 57.139647] b7f62000 c374cb7c c374cb7c c374cb7c c373b344 fffffffe 00000000 c0569c2c [ 57.139677] Call Trace: [ 57.139721] [<c0158df4>] unmap_vmas+0x2d7/0x4c9 [ 57.139748] [<c015b7dd>] exit_mmap+0x68/0xeb [ 57.139772] [<c01191b0>] mmput+0x52/0xcb [ 57.139805] [<c011c368>] exit_mm+0xbb/0xc3 [ 57.139832] [<c011d188>] do_exit+0x1ea/0x73e
Quoted 8 lines
[ 57.139857] [<c011d74d>] sys_exit_group+0x0/0x13 [ 57.139880] [<c012524e>] get_signal_to_deliver+0x6cd/0x6f8 [ 57.139917] [<c01036cf>] do_notify_resume+0x91/0x692 [ 57.139944] [<c0103f15>] work_notifysig+0x13/0x1a [ 57.139970] [<b7f6b7a8>] 0xb7f6b7a8 [ 57.139988] ======================= [ 57.140002] INFO: lockdep is turned off. [ 57.140015] Code: c0 74 0d 8b 50 0c b8 e5 ab 42 c0 e8 d7 fa fd ff 8b 46 48 85 c0 74 14 8b 40 10 85 c0 74 0d 8b 50 2c b8 04 ac 42 c0 e8 bc fa fd ff <0f> 0b eb fe 8b 53 10 8b 03 83 e2 01 f7 da c1 e8 1e 83 c2 04 69
I don't know which patch might have caused that. Is it always getcfg-interface which dies? Seems to be a suse-only thing, and I unfortunately don't have any test boxes which have it.
It seems wildly screwed up that we have a PageReserved() page with a pfn of zero (!) which claims to be in a reiserfs mapping, only it isn't attached to a reiserfs file. How the heck did that happen?
Nick, I think that printk needs updating for changed vm_operations methods, btw (->fault?)
This puts a dark cloud over about 200 patches at present. It would be great if you could perform a bisection search as per
http://www.zip.com.au/~akpm/linux/patches/stuff/bisecting-mm-trees.txt.
I'd start out at fix-slab-corruption-running-ip6sic.patch then try mm-fix-handling-of-panic_on_oom-when-cpusets-are-in-use.patch. It should take six or seven hops.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Quoted 4 lines · Andrew Morton
It seems wildly screwed up that we have a
PageReserved()page with a pfn of zero (!) which claims to be in a reiserfs mapping, only it isn't attached to a reiserfs file. How the heck did that happen?
It's "simply" that it somehow got a spurious page table entry 00000001. Great that it's so reproducible, I take that to mean this one is not bad RAM. Your request for a bisection is just what we want, thanks.
Hugh
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
In reply to Andrew MortonQuoted 4 lines
Quoted 4 lines
With kernel 2.6.21-rc7-mm2, my Dell Optiplex GX110 (P3/933) regularly crashes during the SuSE 10.1 startup sequence. When booting to RL5, it panicblinks shortly after the graphical login screen appears. Booting to RL3, it hangs after the startup message:
I have now bisected this down to the section in the series file between #GREGKH-DRIVER-START and #GREGKH-DRIVER-END, and therefore added GregKH to the CC list. I'll try bisecting further inside that section (unless you tell me not to), but it may take some time.
The exact point during the startup sequence when the crash occurred and the amount of BUG messages produced varied somewhat during these tests. The common denominator, and my criterion for the good/bad decisions during the bisect, was the crash (panic blink) just before completion of the system startup.
Sometimes there weren't any BUG messages in the log (or perhaps they just didn't make it to the disk.) Sometimes I just had a couple of the "sleeping function called from invalid context at mm/slab.c:3054" ones but no "Eeek! page_mapcount(page) went negative!" one before them. However, whenever the "Eeek!" did appear it announced "getcfg-interfac" as the current process and was followed by a few of the "mm/slab.c:3054" ones.
HTH
Tilman
Signature · 1 line
In the long run, we'll all be dead.
Andrew Morton
maintainerRe: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Quoted 8 lines · On Mon, 30 Apr 2007 19:17:02 +0200 Tilman Schmidt <[email protected]> wrote:
Quoted 4 lines
Quoted 4 lines
With kernel 2.6.21-rc7-mm2, my Dell Optiplex GX110 (P3/933) regularly crashes during the SuSE 10.1 startup sequence. When booting to RL5, it panicblinks shortly after the graphical login screen appears. Booting to RL3, it hangs after the startup message:
I have now bisected this down to the section in the series file between #GREGKH-DRIVER-START and #GREGKH-DRIVER-END, and therefore added GregKH to the CC list.
This is rather good news. I was staring at about 200-300 MM patches wondering which one was buggy. Thanks heaps for doing the bisect. Now the main worry is Randy's dead box.
A lot of Greg's driver tree has gone upstream, so please check current mainline. If that's OK then we need to pick through the difference between 2.6.21-rc7-mm2's driver tree and the patches which went into mainline. And that's a pretty small set.
Quoted 15 lines
I'll try bisecting further inside that section (unless you tell me not to), but it may take some time.
The exact point during the startup sequence when the crash occurred and the amount of BUG messages produced varied somewhat during these tests. The common denominator, and my criterion for the good/bad decisions during the bisect, was the crash (panic blink) just before completion of the system startup.
Sometimes there weren't any BUG messages in the log (or perhaps they just didn't make it to the disk.) Sometimes I just had a couple of the "sleeping function called from invalid context atmm/slab.c:3054" ones but no "Eeek!page_mapcount(page)went negative!" one before them. However, whenever the "Eeek!" did appear it announced "getcfg-interfac" as the current process and was followed by a few of the "mm/slab.c:3054" ones.
hm, big mess. Could be it was some glitch from Tejun's sysfs changes which are all being extensively redone, so perhaps we'll never hear from it again. Or perhaps we just merged it into mainline.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Am 30.04.2007 20:21 schrieb Andrew Morton:
Quoted 2 lines
A lot of Greg's driver tree has gone upstream, so please check current mainline.
2.6.21-final is fine.
Quoted 3 lines
If that's OK then we need to pick through the difference between
2.6.21-rc7-mm2's driver tree and the patches which went into mainline. And that's a pretty small set.
I'm not quite sure how to determine that difference. Can you just provide me with a list of patches you'd like me to test?
Thanks,
Tilman
Signature · 4 lines
Tilman Schmidt E-Mail: [email protected] Wehrhausweg 66 Fax: +49 228 4299019 53227 Bonn Germany
Andrew Morton
maintainerRe: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Quoted 5 lines · On Mon, 30 Apr 2007 21:28:06 +0200 Tilman Schmidt <[email protected]> wrote:
Am 30.04.2007 20:21 schrieb Andrew Morton:
Quoted 2 lines
A lot of Greg's driver tree has gone upstream, so please check current mainline.
2.6.21-final is fine.
Sure, but what about 2.6.21-git3 (or, better, current -git)?
Quoted 6 lines
Quoted 3 lines
If that's OK then we need to pick through the difference between
2.6.21-rc7-mm2's driver tree and the patches which went into mainline. And that's a pretty small set.I'm not quite sure how to determine that difference. Can you just provide me with a list of patches you'd like me to test?
Not really - everything's tangled up. A bisection search on the 2.6.21-rc7-mm2 driver tree would be the best bet.
See, 2.6.21-rc7-mm2 had:
gregkh-driver-driver-core-fix-device_add-error-path.patch gregkh-driver-driver-core-fix-namespace-issue-with-devices-assigned-to-classes.patch gregkh-driver-dev_printk-and-new-style-class-devices.patch gregkh-driver-driver-core-udev-triggered-device-driver-binding.patch gregkh-driver-driver-core-use-attribute-groups-in-struct-device_type.patch gregkh-driver-named-device_type.patch gregkh-driver-kobject-kobject_shadow_add-cleanup.patch gregkh-driver-driver-core-per-subsystem-multithreaded-probing.patch gregkh-driver-powerpc-make-it-compile-for-multithread-change.patch gregkh-driver-driver-core-don-t-fail-attaching-the-device-if-it-cannot-be-bound.patch gregkh-driver-driver-no-more-wait.patch gregkh-driver-kref-fix-cpu-ordering-with-respect-to-krefs.patch gregkh-driver-driver-core-notify-userspace-of-network-device-renames.patch gregkh-driver-driver-core-suppress-uevents-via-filter.patch gregkh-driver-driver-core-switch-firmware_class-to-uevent_suppress.patch gregkh-driver-uevent-use-add_uevent_var-instead-of-open-coding-it.patch gregkh-driver-driver-core-add-suspend-and-resume-to-struct-device_type.patch gregkh-driver-kobject-kobject_ueventc-collapse-unnecessary-loop-nesting.patch gregkh-driver-kobject-kobject_add-reference-leak.patch gregkh-driver-devices_subsys-rwsem-removal.patch gregkh-driver-scsi-hosts-rwsem-removal.patch gregkh-driver-usb-bus-mutex.patch gregkh-driver-pnp-remove-rwsem-usage.patch gregkh-driver-input-serio-do-not-touch-bus-s-rwsem.patch gregkh-driver-input-gameport-do-not-touch-bus-s-rwsem.patch gregkh-driver-ide-proc-remove-rwsem.patch gregkh-driver-ieee1394-rwsem-removal.patch gregkh-driver-phy-rwsem-removal.patch gregkh-driver-qeth-remove-usage-of-subsys_rwsem.patch gregkh-driver-subsys-rwsem-removal.patch gregkh-driver-sysfs-fix-i_ino-handling-in-sysfs.patch gregkh-driver-sysfs-fix-error-handling-in-binattr-write.patch gregkh-driver-sysfs-move-release_sysfs_dirent-to-dirc.patch gregkh-driver-sysfs-flatten-cleanup-paths-in-sysfs_add_link-and-create_dir.patch gregkh-driver-sysfs-consolidate-sysfs_dirent-creation-functions.patch gregkh-driver-sysfs-add-sysfs_dirent-s_parent.patch gregkh-driver-sysfs-add-sysfs_dirent-s_name.patch gregkh-driver-sysfs-make-sysfs_dirent-s_element-a-union.patch gregkh-driver-sysfs-implement-kobj_sysfs_assoc_lock.patch gregkh-driver-sysfs-reimplement-symlink-using-sysfs_dirent-tree.patch gregkh-driver-sysfs-implement-bin_buffer.patch gregkh-driver-sysfs-implement-sysfs_dirent-active-reference-and-immediate-disconnect.patch gregkh-driver-sysfs-kill-attribute-file-orphaning.patch gregkh-driver-sysfs-kill-unnecessary-attribute-owner.patch gregkh-driver-sysfs-make-lockdep-ignore-s_active.patch gregkh-driver-sysfs-make-sysfs_put-ignore-null-sd.patch gregkh-driver-sysfs-rename-object_depth-to-sysfs_path_depth-and-make-it-global.patch gregkh-driver-sysfs-reimplement-sysfs_drop_dentry.patch gregkh-driver-sysfs-kill-sysfs_dirent-s_dentry.patch gregkh-driver-driver-core-make-uevent-environment-available-in-uevent-file.patch gregkh-driver-driver-core-warn-for-odd-store-uevent-usage.patch gregkh-driver-kobject-comment-and-warning-fixes-to-kobjectc.patch gregkh-driver-the-overdue-removal-of-the-mount-umount-uevents.patch gregkh-driver-debugfs-add-debugfs_create_u64.patch gregkh-driver-bus_add_driver-return-error-for-no-bus.patch gregkh-driver-uio.patch
gregkh-driver-uio-documentation.patch
gregkh-driver-uio-dummy.patch gregkh-driver-uio-hilscher-cif-card-driver.patch gregkh-driver-remove-struct-subsystem-as-it-is-no-longer-needed.patch gregkh-driver-put_device-might_sleep.patch
gregkh-driver-kobject-warn.patch gregkh-driver-warn-when-statically-allocated-kobjects-are-used.patch gregkh-driver-nozomi.patch
and Greg's driver tree (as of yesterday, I think) had
gregkh-driver-uio.patch gregkh-driver-uio-documentation.patch gregkh-driver-uio-dummy.patch gregkh-driver-uio-hilscher-cif-card-driver.patch gregkh-driver-remove-struct-subsystem-as-it-is-no-longer-needed.patch gregkh-driver-put_device-might_sleep.patch gregkh-driver-kobject-warn.patch gregkh-driver-warn-when-statically-allocated-kobjects-are-used.patch gregkh-driver-nozomi.patch
So what has happened (approximately) is that
- the above nine patches have been held back, or are new
- Tejun's sysfs changes have been dropped
- Everything else from 2.6.21-rc7-mm2 has gone into mainline
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Am 30.04.2007 21:46 schrieb Andrew Morton:
Quoted 3 lines
Quoted 1 line
2.6.21-final is fine.
Sure, but what about 2.6.21-git3 (or, better, current -git)?
OIC. Sorry for being dense. Will check.
Quoted 8 lines
Quoted 5 lines
Quoted 3 lines
If that's OK then we need to pick through the difference between
2.6.21-rc7-mm2's driver tree and the patches which went into mainline. And that's a pretty small set.I'm not quite sure how to determine that difference. Can you just provide me with a list of patches you'd like me to test?
Not really - everything's tangled up. A bisection search on the 2.6.21-rc7-mm2 driver tree would be the best bet.
Ok. No prob. It'll just take a bit of time. (Compiling a kernel on that machine takes about 4 hours.)
I'll be back. :-)
Signature · 3 lines
Tilman Schmidt E-Mail: [email protected] Bonn, Germany - Undetected errors are handled as if no error occurred. (IBM) -
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
In reply to Andrew MortonAm 30.04.2007 21:46 schrieb Andrew Morton:
Quoted 1 line
Sure, but what about 2.6.21-git3 (or, better, current -git)?
2.6.21-git3 crashed with panic blink at "scanning usb: .." (Nothing in the log this time.)
Will continue bisecting -rc7-mm2.
HTH
T.
Signature · 3 lines
Tilman Schmidt E-Mail: [email protected] Bonn, Germany - Undetected errors are handled as if no error occurred. (IBM) -
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Quoted 5 lines · Tilman Schmidt
Am 30.04.2007 21:46 schrieb Andrew Morton:
Quoted 1 line
Sure, but what about 2.6.21-git3 (or, better, current -git)?
2.6.21-git3 crashed with panic blink at "scanning usb: .." (Nothing in the log this time.)
Eeek, that's not good.
Can you keep bisecting Linus's tree? 'git bisect' makes this very easy to do. We need to track this down as soon as possible if we can.
Quoted 1 line
Will continue bisecting -rc7-mm2.
Can you focus on Linus's tree now, as we know that it is the part causing problems?
thanks,
greg k-h
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
In reply to Andrew MortonAm 30.04.2007 21:46 schrieb Andrew Morton:
Quoted 2 lines
Not really - everything's tangled up. A bisection search on the 2.6.21-rc7-mm2 driver tree would be the best bet.
And the winner is:
gregkh-driver-driver-core-make-uevent-environment-available-in-uevent-file.patch
Reverting only that from 2.6.21-rc7-mm2 gives me a working kernel again.
I'll try building 2.6.21-git3 minus that one next, but I'll have to revert it manually, because my naive attempt to "patch -R" it failed 1 out of 2 hunks.
HTH
T.
Signature · 3 lines
Tilman Schmidt E-Mail: [email protected] Bonn, Germany - Undetected errors are handled as if no error occurred. (IBM) -
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Quoted 6 lines · Tilman Schmidt
Am 30.04.2007 21:46 schrieb Andrew Morton:
Quoted 2 lines
Not really - everything's tangled up. A bisection search on the 2.6.21-rc7-mm2 driver tree would be the best bet.
And the winner is:
Quoted 8 lines
gregkh-driver-driver-core-make-uevent-environment-available-in-uevent-file.patch
Reverting only that from 2.6.21-rc7-mm2 gives me a working kernel again.
I'll try building 2.6.21-git3 minus that one next, but I'll have to revert it manually, because my naive attempt to "patch -R" it failed 1 out of 2 hunks.
Ok, that's just wierd, it only adds a new feature, it doesn't touch any existing code to cause things to go wrong.
Can you try using 'git bisect' on Linus's tree instead? That should show the real problem much easier.
thanks,
greg k-h
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Andrew Morton
maintainerRe: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
In reply to Tilman SchmidtQuoted 10 lines · On Wed, 02 May 2007 09:01:22 +0200 Tilman Schmidt <[email protected]> wrote:
Am 30.04.2007 21:46 schrieb Andrew Morton:
Quoted 2 lines
Not really - everything's tangled up. A bisection search on the 2.6.21-rc7-mm2 driver tree would be the best bet.
And the winner is:
gregkh-driver-driver-core-make-uevent-environment-available-in-uevent-file.patch
Reverting only that from 2.6.21-rc7-mm2 gives me a working kernel again.
cripes.
+static ssize_t show_uevent(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct kobject *top_kobj; + struct kset *kset; + char *envp[32]; + char data[PAGE_SIZE];
That won't work too well with 4k stacks.
Who's reviewing this stuff? The patch headers indicate that no mailing list was cc'ed?
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Quoted 23 lines · Andrew Morton
Quoted 10 lines · On Wed, 02 May 2007 09:01:22 +0200 Tilman Schmidt <[email protected]> wrote:
Am 30.04.2007 21:46 schrieb Andrew Morton:
Quoted 2 lines
Not really - everything's tangled up. A bisection search on the 2.6.21-rc7-mm2 driver tree would be the best bet.
And the winner is:
gregkh-driver-driver-core-make-uevent-environment-available-in-uevent-file.patch
Reverting only that from 2.6.21-rc7-mm2 gives me a working kernel again.
cripes.
(quoted diff) +7
-0+static ssize_t show_uevent(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct kobject *top_kobj; + struct kset *kset; + char *envp[32]; + char data[PAGE_SIZE];
Quoted 1 line
That won't work too well with 4k stacks.
Oh crap. Yeah, that's not nice.
Quoted 2 lines
Who's reviewing this stuff? The patch headers indicate that no mailing list was cc'ed?
Kay and I did this, sorry, it should have been cc:ed to lkml.
I'll go fix it up now...
thanks,
greg k-h
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
In reply to Andrew MortonQuoted 23 lines · Andrew Morton
Quoted 10 lines · On Wed, 02 May 2007 09:01:22 +0200 Tilman Schmidt <[email protected]> wrote:
Am 30.04.2007 21:46 schrieb Andrew Morton:
Quoted 2 lines
Not really - everything's tangled up. A bisection search on the 2.6.21-rc7-mm2 driver tree would be the best bet.
And the winner is:
gregkh-driver-driver-core-make-uevent-environment-available-in-uevent-file.patch
Reverting only that from 2.6.21-rc7-mm2 gives me a working kernel again.
cripes.
(quoted diff) +7
-0+static ssize_t show_uevent(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct kobject *top_kobj; + struct kset *kset; + char *envp[32]; + char data[PAGE_SIZE];
Quoted 1 line
That won't work too well with 4k stacks.
Wait, even though this isn't good, it shouldn't have been hit by anyone, that file used to not be readable, so I doubt userspace would have been trying to read it...
Tilman, what version of HAL and udev do you have on your machine?
Kay, did you get the 'read the uevent file' code already into udev and/or HAL?
thanks,
greg k-h
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Quoted 4 lines · Greg KH
Quoted 4 lines
Quoted 4 lines
And the winner is:
gregkh-driver-driver-core-make-uevent-environment-available-in-uevent-file.patch
Quoted 8 lines
Quoted 2 lines
Quoted 2 lines
Reverting only that from 2.6.21-rc7-mm2 gives me a working kernel again.
Wait, even though this isn't good, it shouldn't have been hit by anyone, that file used to not be readable, so I doubt userspace would have been trying to read it...
Tilman, what version of HAL and udev do you have on your machine?
The ones that came with SuSE 10.0:
hal-0.5.4-6.4
udev-068git20050831-9
HTH
Tilman
PS: I'll test your patch and git-bisect when I'm back at the machine.
Signature · 8 lines
Tilman Schmidt [email protected] -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Quoted 13 lines · Tilman Schmidt
Quoted 11 lines · Greg KH
Quoted 6 lines
Quoted 6 lines
And the winner is:
gregkh-driver-driver-core-make-uevent-environment-available-in-uevent-file.patch
Reverting only that from 2.6.21-rc7-mm2 gives me a working kernel again.
Wait, even though this isn't good, it shouldn't have been hit by anyone, that file used to not be readable, so I doubt userspace would have been trying to read it...
Quoted 6 lines
Quoted 1 line
Tilman, what version of HAL and udev do you have on your machine?
The ones that came with SuSE 10.0:
hal-0.5.4-6.4
udev-068git20050831-9
Ah, ok, that explains it, the really old libsysfs walks and opens all files in sysfs for some odd, strange, and broken reason. This has been fixed in newer versions, and explains why you are seeing this happen.
I'll send my fix for this to Linus in a few hours.
thanks for testing and tracking this down, I really appreciate it.
greg k-h
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
In reply to Greg KHQuoted 24 lines · Greg KH
Quoted 23 lines · Andrew Morton
Quoted 10 lines · On Wed, 02 May 2007 09:01:22 +0200 Tilman Schmidt <[email protected]> wrote:
Am 30.04.2007 21:46 schrieb Andrew Morton:
Quoted 2 lines
Not really - everything's tangled up. A bisection search on the 2.6.21-rc7-mm2 driver tree would be the best bet.
And the winner is:
gregkh-driver-driver-core-make-uevent-environment-available-in-uevent-file.patch
Reverting only that from 2.6.21-rc7-mm2 gives me a working kernel again.
cripes.
(quoted diff) +7
-0+static ssize_t show_uevent(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct kobject *top_kobj; + struct kset *kset; + char *envp[32]; + char data[PAGE_SIZE];
Quoted 1 line
Quoted 1 line
That won't work too well with 4k stacks.
Yeah, sorry.
Quoted 8 lines
Wait, even though this isn't good, it shouldn't have been hit by anyone, that file used to not be readable, so I doubt userspace would have been trying to read it...
Tilman, what version of HAL and udev do you have on your machine?
Kay, did you get the 'read the uevent file' code already into udev and/or HAL?
Only udevtest uses this at the moment, but that is only used for debugging. It's probably the brain-dead libsysfs, which opens and reads every file in /sys, even when nobody is interested in the data.
Thanks,
Kay
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
In reply to Andrew MortonQuoted 23 lines · Andrew Morton
Quoted 10 lines · On Wed, 02 May 2007 09:01:22 +0200 Tilman Schmidt <[email protected]> wrote:
Am 30.04.2007 21:46 schrieb Andrew Morton:
Quoted 2 lines
Not really - everything's tangled up. A bisection search on the 2.6.21-rc7-mm2 driver tree would be the best bet.
And the winner is:
gregkh-driver-driver-core-make-uevent-environment-available-in-uevent-file.patch
Reverting only that from 2.6.21-rc7-mm2 gives me a working kernel again.
cripes.
(quoted diff) +7
-0+static ssize_t show_uevent(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct kobject *top_kobj; + struct kset *kset; + char *envp[32]; + char data[PAGE_SIZE];
Quoted 1 line
That won't work too well with 4k stacks.
Tilman, here's a patch, can you try this on top of your tree that dies?
thanks,
greg k-h
--- drivers/base/core.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/base/core.c +6 -1
@@ -252,7 +252,7 @@ static ssize_t show_uevent(struct devicestruct kobject *top_kobj;struct kset *kset;char *envp[32 ]; -char data[PAGE_SIZE ]; +char *data =NULL ;char *pos;int i;size_t count =0 ;
@@ -276,6 +276,10 @@ static ssize_t show_uevent(struct deviceif (!kset->uevent_ops->filter (kset, &dev->kobj)) goto out; + data = (char *)get_zeroed_page (GFP_KERNEL ); +if (!data) +return -ENOMEM ; +/* let the kset specific function add its keys */ pos = data; retval = kset->uevent_ops->uevent(kset, &dev->kobj,
@@ -290,6 +294,7 @@ static ssize_t show_uevent(struct device count +=sprintf (pos,"%s\n" , envp[i]); } out: +free_page ((unsigned long )data);return count; }
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Am 02.05.2007 09:52 schrieb Greg KH:
Quoted 1 line
Tilman, here's a patch, can you try this on top of your tree that dies?
2.6.21-git3 plus that patch comes up fine.
(Except for a UDP problem I seem to remember I already saw reported on lkml and which I'll ignore for now in order not to blur the picture.)
Started to git-bisect mainline now, but that will take some time. It's more than 800 patches to check and I don't get more than 2-3 iterations per day out of that machine.
HTH
T.
Quoted 34 lines
--- drivers/base/core.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)drivers/base/core.c +6
-1@@ -252,7 +252,7 @@ static ssize_t show_uevent(struct devicestruct kobject *top_kobj;struct kset *kset;char *envp[32 ]; -char data[PAGE_SIZE ]; +char *data =NULL ;char *pos;int i;size_t count =0 ;@@ -276,6 +276,10 @@ static ssize_t show_uevent(struct deviceif (!kset->uevent_ops->filter (kset, &dev->kobj)) goto out; + data = (char *)get_zeroed_page (GFP_KERNEL ); +if (!data) +return -ENOMEM ; +/* let the kset specific function add its keys */ pos = data; retval = kset->uevent_ops->uevent(kset, &dev->kobj,@@ -290,6 +294,7 @@ static ssize_t show_uevent(struct device count +=sprintf (pos,"%s\n" , envp[i]); } out: +free_page ((unsigned long )data);return count; }
Signature · 3 lines
Tilman Schmidt E-Mail: [email protected] Bonn, Germany - Undetected errors are handled as if no error occurred. (IBM) -
Andrew Morton
maintainerRe: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Quoted 8 lines · On Wed, 02 May 2007 19:36:03 +0200 Tilman Schmidt <[email protected]> wrote:
Am 02.05.2007 09:52 schrieb Greg KH:
Quoted 1 line
Tilman, here's a patch, can you try this on top of your tree that dies?
2.6.21-git3 plus that patch comes up fine.
(Except for a UDP problem I seem to remember I already saw reported on lkml and which I'll ignore for now in order not to blur the picture.)
Thanks.
Quoted 3 lines
Started to git-bisect mainline now, but that will take some time. It's more than 800 patches to check and I don't get more than 2-3 iterations per day out of that machine.
I don't think there's much point in you doing that. We know what the bug is.
Switching to 8k stacks will probably fix things up too.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
Am 02.05.2007 22:07 schrieb Andrew Morton:
Quoted 1 line
Quoted 1 line
Started to git-bisect mainline now, but that will take some time.
[...]
Quoted 1 line
I don't think there's much point in you doing that. We know what the bug is.
Good. Saves me some work. :-)
If you'd like me to test anything, just let me know.
Thanks,
Tilman
Signature · 3 lines
Tilman Schmidt E-Mail: [email protected] Bonn, Germany - Undetected errors are handled as if no error occurred. (IBM) -
Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)
In reply to Tilman SchmidtQuoted 9 lines · Tilman Schmidt
Am 30.04.2007 21:46 schrieb Andrew Morton:
Quoted 2 lines
Not really - everything's tangled up. A bisection search on the 2.6.21-rc7-mm2 driver tree would be the best bet.
And the winner is:
gregkh-driver-driver-core-make-uevent-environment-available-in-uevent-file.patch
+ struct kobject *top_kobj;
+ struct kset *kset;
+ char *envp[32];
+ char data[PAGE_SIZE];
+ char *pos;
+ int i;
+ size_t count = 0;
+ int retval;
... that seems like a lot of stack to be using.
Signature · 7 lines
SUSE Labs, Novell Inc. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
PATCH 1/1 make drivers/misc/thinkpad_acpi:fan_mutex static
In reply to Andrew MortonQuoted 7 lines · Andrew Morton
...
Changes since 2.6.21-rc7-mm1:
...
git-acpi.patch
...
git trees
...
This patch makes the needlessly global fan_mutex static.
---
BTW: Prototypes for static versions and static variables in a header
file are really wrong, but the mess is bigger than what I'm willing to clean up...
drivers/misc/thinkpad_acpi.h renamed from drivers/misc/thinkpad_acpi.h.old +1 -1
@@ -382,7 +382,7 @@static u8 fan_control_desired_level;static int fan_watchdog_maxinterval; -struct mutex fan_mutex; +static struct mutex fan_mutex;static acpi_handle fans_handle, gfan_handle, sfan_handle;
Re: [-mm patch] make drivers/misc/thinkpad_acpi:fan_mutex static
Quoted 10 lines · Adrian Bunk
Quoted 7 lines · Andrew Morton
...
Changes since 2.6.21-rc7-mm1:
...
git-acpi.patch
...
git trees
...
Quoted 3 lines
This patch makes the needlessly global
fan_mutexstatic.Signed-off-by Adrian Bunk <[email protected]>
Sorry about the oversight.
Quoted 5 lines
---
BTW: Prototypes for static versions and static variables in a header
file are really wrong, but the mess is bigger than what I'm willing to clean up...
It is a private header file, only one file uses it and it is not supposed to be used by any other file ever, either. I can certainly do a cleaning up and a lot can be removed (at least 70% of it), but the driver is not linear (it is some infrastructure and various subdrivers) and there is a bunch of stuff that will need forward declarations regardless.
Maybe I should just break the driver into multiple files in a subdirectory? That would certainly make it *much* cleaner...
Quoted 11 lines
drivers/misc/thinkpad_acpi.h renamed from drivers/misc/thinkpad_acpi.h.old +1
-1@@ -382,7 +382,7 @@static u8 fan_control_desired_level;static int fan_watchdog_maxinterval; -struct mutex fan_mutex; +static struct mutex fan_mutex;static acpi_handle fans_handle, gfan_handle, sfan_handle;
Signature · 4 lines
"One disk to rule them all, One disk to find them. One disk to bring them all and in the darkness grind them. In the Land of Redmond where the shadows lie." -- The Silicon Valley Tarot Henrique Holschuh
Re: [-mm patch] make drivers/misc/thinkpad_acpi:fan_mutex static
Quoted 2 lines
Quoted 2 lines
This patch makes the needlessly global
fan_mutexstatic.
applied.
thanks,
-Len
Re: [-mm patch] make drivers/misc/thinkpad_acpi:fan_mutex static
In reply to Henrique de Moraes HolschuhQuoted 11 lines · Henrique de Moraes Holschuh
On Sat, 28 Apr 2007, Adrian Bunk wrote:
...Quoted 3 lines
BTW: Prototypes for static versions and static variables in a header
file are really wrong, but the mess is bigger than what I'm willing to clean up...It is a private header file, only one file uses it and it is not supposed to be used by any other file ever, either. I can certainly do a cleaning up and a lot can be removed (at least 70% of it), but the driver is not linear (it is some infrastructure and various subdrivers) and there is a bunch of stuff that will need forward declarations regardless.
Forward declarations of static functions (if required) and actual variables (like fan_mutex) belong into the C file, not the header.
Quoted 2 lines
Maybe I should just break the driver into multiple files in a subdirectory? That would certainly make it *much* cleaner...
But even more in this case, you will not want to have actual variables or prototypes of static functions in the header file.
Quoted 6 lines
Quoted 6 lines
drivers/misc/thinkpad_acpi.h renamed from drivers/misc/thinkpad_acpi.h.old +0
-0@@ -382,7 +382,7 @@static u8 fan_control_desired_level;static int fan_watchdog_maxinterval;
Quoted 6 lines
drivers/misc/thinkpad_acpi.h line 388
Quoted 5 lines
drivers/misc/thinkpad_acpi.h renamed from drivers/misc/thinkpad_acpi.h.old +1
-1-struct mutex fan_mutex; +static struct mutex fan_mutex;static acpi_handle fans_handle, gfan_handle, sfan_handle;Henrique Holschuh
cu
Adrian
Signature · 4 lines
"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 SeedRe: [-mm patch] make drivers/misc/thinkpad_acpi:fan_mutex static
Quoted 2 lines · Adrian Bunk
Forward declarations of static functions (if required) and actual variables (like
fan_mutex) belong into the C file, not the header.
Very well. I will fix the mess for 2.6.23, or, time permitting, 2.6.22.
Quoted 5 lines
Quoted 2 lines
Maybe I should just break the driver into multiple files in a subdirectory? That would certainly make it *much* cleaner...
But even more in this case, you will not want to have actual variables or prototypes of static functions in the header file.
I would not have to, in that case. The driver would be much easier to write, and I will need to break it in two for an alsa module anyway, might as well break it in one subdriver per file.
Signature · 4 lines
"One disk to rule them all, One disk to find them. One disk to bring them all and in the darkness grind them. In the Land of Redmond where the shadows lie." -- The Silicon Valley Tarot Henrique Holschuh
PATCH 1/1 MMC: make tifm_sd_set_dma_data() static
In reply to Andrew MortonQuoted 7 lines · Andrew Morton
...
Changes since 2.6.21-rc7-mm1:
...
git-mmc.patch
...
git trees
...
This patch makes the needlessly global tifm_sd_set_dma_data() static.
---
drivers/mmc/host/tifm_sd.c renamed from drivers/mmc/host/tifm_sd.c.old +1 -1
@@ -259,7 +259,7 @@ } } -int tifm_sd_set_dma_data (struct tifm_sd *host,struct mmc_data *r_data) +static int tifm_sd_set_dma_data (struct tifm_sd *host,struct mmc_data *r_data) {struct tifm_dev *sock = host->dev;unsigned int t_size =TIFM_DMA_TSIZE * r_data->blksz;
Pierre Ossman
AppliedRe: [-mm patch] MMC: make tifm_sd_set_dma_data() static
Quoted 5 lines
This patch makes the needlessly global
tifm_sd_set_dma_data()static.Signed-off-by Adrian Bunk <[email protected]>
Thanks, applied.
Rgds
Signature · 5 lines
-- Pierre Ossman Linux kernel, MMC maintainer http://www.kernel.org PulseAudio, core developer http://pulseaudio.org rdesktop, core developer http://www.rdesktop.org
PATCH 1/1 scsi/lpfc/lpfc_init.c: remove unused variable
In reply to Andrew MortonThis patch removes a no longer used variable:
<-- snip -->
...
CC drivers/scsi/lpfc/lpfc_init.o/home/bunk/linux/kernel-2.6/linux-2.6.21-rc7-mm2/drivers/scsi/lpfc/lpfc_init.c: In function ‘lpfc_pci_probe_one’:/home/bunk/linux/kernel-2.6/linux-2.6.21-rc7-mm2/drivers/scsi/lpfc/lpfc_init.c:1419: warning: unused variable ‘retval’
...
<-- snip -->
---
drivers/scsi/lpfc/lpfc_init.c renamed from drivers/scsi/lpfc/lpfc_init.c.old +1 -1
@@ -1416,7 +1416,7 @@struct lpfc_sli *psli;struct lpfc_iocbq *iocbq_entry =NULL , *iocbq_next =NULL ;unsigned long bar0map_len, bar2map_len; -int error = -ENODEV , retval; +int error = -ENODEV ;int i;uint16_t iotag;
PATCH 1/1 drivers/rtc/rtc-dev.c should #include "rtc-core.h"
In reply to Andrew MortonEvery file should include the headers containing the prototypes for it's global functions.
---
drivers/rtc/rtc-dev.c renamed from drivers/rtc/rtc-dev.c.old +1 -0
@@ -13,6 +13,7 @@#include <linux/module.h> #include <linux/rtc.h> +#include "rtc-core.h" static dev_t rtc_devt;
Hi
Quoted 475 lines · Andrew Morton
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
- this has everything which is in 2.6.21. Plus more!
- a number of nasty bugs were fixed. This should be (a lot) more stable than 2.6.21-rc7-mm1.
Some sysfs-related problems are still expected. Fiddling with the setting of
CONFIG_SYSFS_DEPRECATEDmight help avoid them.- the 64-bit futex patches and (consequently) the private-futex patches were dropped. Because the 64-bit futex patches need to be reconstituted.
- the unprivileged mounts code was dropped, pending an updated patch series
- lots of minor fbdev bugs were fixed
Boilerplate:
- See the `hot-fixes' directory for any important updates to this patchset.
- To fetch an -mm tree using git, use (for example)
git-fetch
git://git.kernel.org/pub/scm/linux/kernel/git/smurf/linux-trees.gittag v2.6.16-rc2-mm1 git-checkout -b local-v2.6.16-rc2-mm1 v2.6.16-rc2-mm1- -mm kernel commit activity can be reviewed by subscribing to the mm-commits mailing list.
echo "subscribe mm-commits" | mail [email protected]
- If you hit a bug in -mm and it is not obvious which patch caused it, it is most valuable if you can perform a bisection search to identify which patch introduced the bug. Instructions for this process are at
http://www.zip.com.au/~akpm/linux/patches/stuff/bisecting-mm-trees.txt
But beware that this process takes some time (around ten rebuilds and reboots), so consider reporting the bug first and if we cannot immediately identify the faulty patch, then perform the bisection search.
- When reporting bugs, please try to Cc: the relevant maintainer and mailing list on any email.
- When reporting bugs in this kernel via email, please also rewrite the email Subject: in some manner to reflect the nature of the bug. Some developers filter by Subject: when looking for messages to read.
- Occasional snapshots of the -mm lineup are uploaded to ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/mm/ and are announced on the mm-commits list.
Changes since 2.6.21-rc7-mm1:
origin.patch
git-acpi.patch
git-alsa.patch
git-agpgart.patch
git-arm.patch
git-avr32.patch
git-cifs.patch
git-cpufreq.patch
git-powerpc.patch
git-drm.patch
git-dvb.patch
git-gfs2-nmw.patch
git-hid.patch
git-ia64.patch
git-ieee1394.patch
git-infiniband.patch
git-input.patch
git-jfs.patch
git-kbuild.patch
git-kvm.patch
git-leds.patch
git-libata-all.patch
git-md-accel.patch
git-mips.patch
git-mmc.patch
git-mtd.patch
git-ubi.patch
git-netdev-all.patch
git-e1000.patch
git-net.patch
git-ioat.patch
git-nfs-server-cluster-locking-api.patch
git-ocfs2.patch
git-parisc.patch
git-r8169.patch
git-selinux.patch
git-pciseg.patch
git-s390.patch
git-s390-fixup.patch
git-sh.patch
git-scsi-misc.patch
git-block.patch
git-watchdog.patch
git-ipwireless_cs.patch
git-cryptodev.patch
git-gccbug.patchgit trees
(quoted diff) +134
-88-fix-possible-null-pointer-access-in-8250-serial-driver.patch -fix-oom-killing-processes-wrongly-thought-mpol_bind.patch -char-mxser_new-fix-recursive-locking.patch -char-mxser_new-fix-tiocmiwait.patch -char-mxser-fix-tiocmiwait.patch -taskstats-fix-the-structure-members-alignment-issue.patch -maintainers-use-listslinux-foundationorg.patch -paride-drivers-initialize-spinlocks.patch -add-mbuesch-to-mailmap.patch -fix-spelling-in-drivers-video-kconfig.patch -page-migration-fix-nr_file_pages-accounting.patch -ieee1394-update-maintainers-database.patch -v9fs-dont-use-primary-fid-when-removing-file.patch -acpi-thermal-fix-mod_timer-interval.patch -allow-reading-tainted-flag-as-user.patch -do-not-truncate-irq-number-for-icom-adapter.patch -hwmon-w83627ehf-dont-redefine-region_offset.patch -reiserfs-fix-xattr-root-locking-refcount-bug.patch -char-icom-mark-__init-as-__devinit.patch -fault-injection-add-entry-to-maintainers.patch -8250-fix-possible-deadlock-between-serial8250_handle_port-and-serial8250_interrupt.patch -oom-kill-all-threads-that-share-mm-with-killed-task.patch -fix-x86-fix-potential-overflow-in-perfctr-reservation.patch -cleanup-cpufreq-kconfig-options.patch -ppc-pci_32-stop-using-old-hotplug-unsafe-apis.patch -jdelvare-i2c-i2c-delete-scx200_i2c.patch -jdelvare-i2c-i2c-obsolete-ixp2000-and-ixp4xx.patch -jdelvare-hwmon-hwmon-smsc47m1-use-dynamic-attributes.patch -ide-cmd64x-remove-broken-sw-mw-dma-support.patch -ide-cmd64x-interrupt-status-fixes-resend.patch -ide-cmd64x-add-fix-enablebits.patch -ide-cmd64x-procfs-code-fixes-cleanups.patch -ide-cmd64x-use-interrupt-status-from-mrdmode-register.patch -ide-cmd64x-add-back-mwdma-support.patch -git-netdev-all-baycom_ser_fdx-fix.patch -fix-sparse-errors-in-drivers-net-ibmvethc.patch -netdrv-perform-missing-csum_offset-conversions.patch -x86_64-mm-remove-noreplacement.patch -fix-x86_64-mm-fam10-mwait-idle.patch -more-fix-x86_64-mm-fam10-mwait-idle.patch -fix-x86_64-mm-sched-clock-share.patch -revert-x86_64-mm-account-for-module-percpu-space-separately-from-kernel-percpu.patch -rename-the-parainstructions-symbols-to-be-consistent-with-the-others.patch -rename-the-parainstructions-symbols-to-be-consistent-with-the-others-fix.patch -i386-sysenter-arch-pages-fix.patch -i386-acpi-remove-earlyquirk-warning.patch -i386-mcheck-p4-grotesque-and-needless-warning-fix.patch -i386-pgd-clone-under-lock-fix.patch -vmi-supports-compat-vdso.patch -resurrect-the-vmi-lazy-mode-fixes-fix.patch -vmi-kmap_atomic_pte-fix.patch -vmi-timer-update.patch -i386-pte-drop-ptep_get_and_clear-paravirt-op.patch -mtrr-adds-mtrr_save_fixed_ranges-for-use-in-two-later-patches.patch -mtrr-save-the-mtrrs-of-the-bsp-before-booting-an-ap.patch -mtrr-save-and-restore-the-fixed-range-mtrrs-of-the-bsp-when-suspending.patch -mtrr-enable-support-for-fixed-range-iorrs-to-keep-rdmem-wrmem-in-sync.patch -i386-map-enough-initial-memory-to-create-lowmem-mappings.patch -mm-only-i386-for-debugging-make-the-initial-page-table-setup-less-forgiving.patch -depcac-fix-handling-of-platorm_device_add-failure.patch -clean-up-elf-note-generation.patch -deflate-stack-usage-in-lib-inflatec.patch Merged into mainline or a subsystem tree +make-sysrq-t-show-all-tasks-again.patch +ia64-race-flushing-icache-in-do_no_page-path.patch 2.6.21 queue (sigh) -acpi-asus_acpi-support-f2je-model.patch Dropped +git-agp-build-fix.patch Fix git-agpgart.patch +git-cpufreq-borkage-fix.patch Fix git-cpufreq.patch +gregkh-driver-uevent-use-add_uevent_var-instead-of-open-coding-it.patch Driver tree update +fix-gregkh-driver-uevent-use-add_uevent_var-instead-of-open-coding-it.patch +sysfs-oops-workaround.patch Fix things in driver tree +jdelvare-i2c-i2c-deprecate-specific-gpio-drivers.patch +jdelvare-i2c-i2c-tiny-usb-new-driver.patch +jdelvare-i2c-i2c-s3c2410-setup-time.patch +jdelvare-i2c-i2c-s3c2410-fix-bug-in-releasing-driver.patch i2c tree updates +jdelvare-hwmon-hwmon-smsc47m1-use-dynamic-attributes.patch hwmon tree update +gfs2-printk-warning-fixes.patch Fix git-gfs2-nmw.patch +ohci1394-fix-mistake-in-printk-message.patch +fw-device-printk-fix.patch +ieee1394-iso-needs-schedh.patch 1394 fixes -git-infiniband-make-it-build-hack.patch Unneeded +input-convert-from-class-devices-to-standard-devices.patch +input-evdev-implement-proper-locking.patch +mousedev-fix.patch +mousedev-fix-2.patch input stuff +ahci-crash-fix.patch +ata-printk-warning-fixes.patch +ata_timing-ensure-t-cycle-is-always-correct.patch +pata_ali-more-work.patch ata fixes +ide-cmd64x-fix-multiword-and-remove-single-word-dma-support.patch +ide-cmd64x-interrupt-status-fixes-take-2.patch +ide-cmd64x-add_fix-enablebits-take-2.patch +ide-cmd64x-procfs-code-fixes_cleanups-take-2.patch +ide-cmd64x-use-interrupt-status-from-mrdmode-register-take-2.patch +ide-aec62xx-fix-pio_dma-setup-issues.patch IDE tree updates +git-mtd-build-fix.patch Fix git-mtd.patch -git-netdev-all-fixup.patch Unneeded +git-netdev-all-export-ieee80211_debug_level.patch Fix git-netdev-all +netlink-dont-reinitialize-callback-mutex.patch +sctp_getsockopt_local_addrs-type-fix.patch net things -pcmcia-irq-probe-can-be-done-without-risking-an-irq-storm.patch Dropped +ide-cs-recognize-2gb-compactflash-from-transcend.patch ide-cs fix +s390-net-lcs-convert-to-the-kthread-api-fix.patch Fix s390-net-lcs-convert-to-the-kthread-api.patch +x86_64-mm-deflate-stack-usage-in-lib-inflate_c.patch +x86_64-mm-page-align-the-gdt.patch +x86_64-mm-convert-pda-into-the-percpu-section.patch +x86_64-mm-paravirt-non-gpl-export.patch +x86_64-mm-cleanups-to-help-using-per-cpu-variables-from-asm.patch +x86_64-mm-define-per_cpu_offset.patch +x86_64-mm-fix-up-gdt-bugs.patch +x86_64-mm-map-enough-initial-memory-to-create-lowmem-mappings.patch +x86_64-mm-incremental-update-for-i386-and-x86-64-check_bugs.patch +x86_64-mm-paravirt-flush-lazy-mmu-updates-on-kunmap_atomic.patch +x86_64-mm-paravirt-fix-paravirt-documentation.patch +x86_64-mm-in-compat-mode-the-return-value-here-was-uninitialized_.patch +x86_64-mm-kremove-a-warning-about-unused-variable-in-config_acpi-compilation_.patch +x86_64-mm-cleanup-arch-i386-kernel-cpu-mcheck-p4_c.patch +x86_64-mm-vmi-now-that-the-vdso-can-be-relocated-we-can-support-it-in-vmi-configurations.patch +x86_64-mm-vmi-kmap-atomic-pte.patch +x86_64-mm-vmi-convert-vmi-timer-to-use-clock-events.patch +x86_64-mm-paravirt-drop-unused-ptep_get_and_clear.patch +x86_64-mm-paravirt-rename-parainstructions.patch +x86_64-mm-clean-up-elf-note-generation.patch +x86_64-mm-mtrr-adds-mtrr_save_fixed_ranges-for-use-in-two-later-patches.patch +x86_64-mm-mtrr-save-the-mtrrs-of-the-bsp-before-booting-an-ap.patch +x86_64-mm-mtrr-save-and-restore-the-fixed-range-mtrrs-of-the-bsp-when-suspending.patch +x86_64-mm-mtrr-enable-support-for-fixed-range-iorrs-to-keep-rdmem-wrmem-in-sync.patch +x86_64-mm-nmi-hack-revert.patch +x86_64-mm-nmi-watchdog-ops.patch +x86_64-mm-nmi-wd-ops-64bit.patch +x86_64-mm-compat-siocgifcount.patch +x86_64-mm-apic-timer-calibration.patch +x86_64-mm-vdso.patch x86 tree updates +fix-x86_64-mm-nmi-watchdog-ops.patch Fix it +x86_64-unexport-cpu_llc_id.patch +i386-efi-fix-proc-iomem-type-for-kexec-tools.patch x86 updates +fix-slab-corruption-running-ip6sic.patch net fix +create-the-zone_movable-zone-align-zone_movable-to-a-max_order_nr_pages-boundary.patch Fix create-the-zone_movable-zone.patch +handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64.patch Fix Mel's MM patches som emore +introduce-high_order-delineating-easily-reclaimable-orders-cleanups.patch +lumpy-increase-pressure-at-the-end-of-the-inactive-list-cleanups.patch clean up lumpy reclaim code +slub-core-update-cpu-after-new_slab.patch slub fix +quicklists-for-page-table-pages-avoid-useless-virt_to_page-conversion-fix.patch Fix crashes in the quiklist code +madv_free-lazytlb-fix.patch Fix madv_free code +mm-document-fault_data-and-flags.patch +mm-fix-handling-of-panic_on_oom-when-cpusets-are-in-use.patch MM udpates +return-eperm-not-echild-on-security_task_wait-failure-fix.patch Fix return-eperm-not-echild-on-security_task_wait-failure.patch +pm-introduce-suspend-notifiers-rev-2.patch swsusp update +enlarge-console-name.patch prefix for fixes-and-cleanups-for-earlyprintk-aka-boot-console.patch +ignore-stolen-time-in-the-softlockup-watchdog.patch +ignore-stolen-time-in-the-softlockup-watchdog-fix.patch +add-touch_all_softlockup_watchdogs.patch Bring these back -report-that-kernel-is-tainted-if-there-were-an-oops-before.patch Experimentally drop this - the oops output has been odd-looking. +copy-i_flags-to-ext2-inode-flags-on-write.patch +fix-chapter-reference-in-codingstyle.patch +sleep-during-spinlock-in-tpm-driver.patch Misc -fix-pf_nofreeze-and-freezeable-race.patch +fix-kthread_create-vs-freezer-theoretical-race-dont-be-obnoxious.patch +fix-pf_nofreeze-and-freezeable-race-2.patch Update thread-management patches in -mm +rtc-update-vr41xx-alarm-handling.patch rtc driver fixes -sys_futex64-allows-64bit-futexes.patch -sys_futex64-allows-64bit-futexes-fix.patch -sys_futex64-allows-64bit-futexes-workaround.patch -sys_futex64-allows-64bit-futexes-workaround-for-uml.patch -sys_futex64-allows-64bit-futexes-get_futex_key-must-check-proper-alignement-for-64bit-futexes.patch -futex-new-private-futexes.patch Dropped -lguest-the-host-code-vs-sys_futex64-allows-64bit-futexes-get_futex_key-must-check-proper-alignement-for-64bit-futexes.patch -lguest-the-host-code-vs-futex-new-private-futexes.patch Dropped as a result of futex droppage +lguest-build-hack.patch +lguest-build-hack-2.patch Make lguest build against x86 tree -unprivileged-mounts-add-user-mounts-to-the-kernel.patch -unprivileged-mounts-allow-unprivileged-umount.patch -unprivileged-mounts-account-user-mounts.patch -unprivileged-mounts-account-user-mounts-fix.patch -unprivileged-mounts-propagate-error-values-from-clone_mnt.patch -unprivileged-mounts-propagate-error-values-from-clone_mnt-fix.patch -unprivileged-mounts-allow-unprivileged-bind-mounts.patch -unprivileged-mounts-allow-unprivileged-bind-mounts-fix.patch -unprivileged-mounts-put-declaration-of-put_filesystem-in-fsh.patch -unprivileged-mounts-allow-unprivileged-mounts.patch -unprivileged-mounts-allow-unprivileged-fuse-mounts.patch Dropped +epson1355fbc-fix-error-handling-code.patch +nvidiafb-vga-state-save-and-restore.patch +savagefb-rework-i2c-bit-access.patch +savagefb-vga-state-save-and-restore.patch +fbdev-link-vgastateo-using-kconfig.patch +fbcon-delay-screen-update-when-setting-the-mode-of.patch +nvidiafb-fix-sparse-warning.patch +rivafb-fix-io-access.patch +fbdev-kill-sparse-warning-in-deferred-io.patch +fbdev-add-sparse-annotations-in-svgalibc.patch +arcfb-kill-sparse-warning.patch +s3fb-add-sparse-annotations.patch +hecubafb-kill-sparse-warnings.patch +i810fb-fix-incorrect-frequency-mask.patch +vt-add-documentation-for-new-boot-sysfs-options.patch +skeletonfb-documentation-error-fixes.patch +fbdev-add-drawing-functions-for-framebuffers-in-system.patch +arcfb-use-sys-instead-of-cfb-drawing-functions.patch +hecubafb-use-sys-instead-of-cfb-drawing-functions.patch +vfb-use-sys-instead-of-cfb-drawing-functions.patch +fbdev-pass-struct-fb_info-to-fb_read-and-fb_write.patch +fbdev-add-fb_read-fb_write-functions-for-framebuffers.patch +arcfb-us-fb_sys_read.patch +hecubafb-us-fb_sys_read.patch +vfb-us-fb_sys_read-and-fb_sys_write.patch +fbdev-consolidate-common-drawing-functions-into-a.patch +fbdev-advertise-limitation-of-drawing-engine.patch +fbcon-font-setting-should-check-limitation-of-driver.patch +vga16fb-restrict-to-blit-rectangles-with-widths-of.patch +s3fb-limit-8x16-rectangles-when-tileblitting-is-enabled.patch +fbdev-add-tile-operation-to-get-the-maximum-length.patch +s3fb-implement-fb_get_tilemax.patch +fbcon-check-if-the-character-count-can-be-handled.patch +fbdev-save-the-activate-field-before-calling-fb_check_var.patch +s3fb-driver-fixes.patch +vmlfb-framebuffer-driver-for-intel-vermilion-range.patch +nvidiafb-rivafb-switch-to-pci_get-refcounting.patch +pm2fb-3dlabs-permedia-2v-reference-board-added.patch +pm2fb-permedia-2v-memory-clock-setting.patch +pm2fb-pixclock-setting-restriction.patch +nvidiafb-prevent-triggering-of-softlockup.patch fbdev bugstomp -cfq-debugging-stuff.patch Dropped due to rejectsAll 1993 patches:
Quoted 9 lines
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/patch-list
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
I have troubles with rtc on my macbook with mm2:
----
....
[126588.386116] rtc: lost some interrupts at 1024Hz. [126588.404842] rtc: lost some interrupts at 1024Hz. [126588.423566] rtc: lost some interrupts at 1024Hz. [126588.442292] rtc: lost some interrupts at 1024Hz. [126588.461016] rtc: lost some interrupts at 1024Hz. [126588.479741] rtc: lost some interrupts at 1024Hz. [126588.498466] rtc: lost some interrupts at 1024Hz. [126588.517198] rtc: lost some interrupts at 1024Hz. [126588.535923] rtc: lost some interrupts at 1024Hz. [126588.554643] rtc: lost some interrupts at 1024Hz.
....
----
cat /proc/sys/dev/rtc/max-user-freq
64
On 2.6.20 there wasn't such problem.
Thanks.
Dan Kruchinin.
Andrew Morton
maintainerQuoted 13 lines · On Sun, 29 Apr 2007 23:19:49 +0400 "Dan Kruchinin" <[email protected]> wrote:
I have troubles with rtc on my macbook with mm2:
----
....[126588.386116] rtc: lost some interrupts at 1024Hz. [126588.404842] rtc: lost some interrupts at 1024Hz. [126588.423566] rtc: lost some interrupts at 1024Hz. [126588.442292] rtc: lost some interrupts at 1024Hz. [126588.461016] rtc: lost some interrupts at 1024Hz. [126588.479741] rtc: lost some interrupts at 1024Hz. [126588.498466] rtc: lost some interrupts at 1024Hz. [126588.517198] rtc: lost some interrupts at 1024Hz. [126588.535923] rtc: lost some interrupts at 1024Hz. [126588.554643] rtc: lost some interrupts at 1024Hz.
Quoted 4 lines
....
----
cat/proc/sys/dev/rtc/max-user-freq
64
I don't think there are any rtc changes in -mm which could have caused this. Possibly there's something in there which is holding interrupts off for too long.
Quoted 1 line
On 2.6.20 there wasn't such problem.
Can you try 2.6.21 please?
Re: 2.6.21-rc7-mm2 hangs in boot
In reply to Andrew MortonQuoted 2 lines · On Wed, 25 Apr 2007 22:57:16 -0700 Andrew Morton wrote:
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
I'm getting a hang near the end of booting on x86_64 UP. The last initcall_debug function varies. E.g.:
1/
[ 0.140257] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140275] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0. [ 0.140302] initcall 0xffffffff806f2fe7 ran for 0 msecs: init_script_binfmt+0x0/0x12() [ 0.140310] Calling initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() [ 0.140317] initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() returned 0. [ 0.140326] initcall 0xffffffff806f2ff9 ran for 0 msecs: init_elf_binfmt+0x0/0x12() [ 0.140335] Calling initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() [ 0.140344] initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() returned 0. [ 0.140351] initcall 0xffffffff806f3de9 ran for 0 msecs: debugfs_init+0x0/0x4a()
2/
[ 0.140206] Calling initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() [ 0.140215] initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() returned 0. [ 0.140222] initcall 0xffffffff806efeb1 ran for 0 msecs: ksysfs_init+0x0/0x29() [ 0.140230] Calling initcall 0xffffffff806f25be: filelock_init+0x0/0x31() [ 0.140242] initcall 0xffffffff806f25be: filelock_init+0x0/0x31() returned 0. [ 0.140249] initcall 0xffffffff806f25be ran for 0 msecs: filelock_init+0x0/0x31() [ 0.140258] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140276] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0.
.config is attached.
Any ideas/suggestions?
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Andrew Morton
maintainerRe: 2.6.21-rc7-mm2 hangs in boot
Quoted 23 lines · On Sun, 29 Apr 2007 22:01:32 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 2 lines · On Wed, 25 Apr 2007 22:57:16 -0700 Andrew Morton wrote:
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
I'm getting a hang near the end of booting on
x86_64UP. The lastinitcall_debugfunction varies. E.g.:1/
[ 0.140257] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140275] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0. [ 0.140302] initcall 0xffffffff806f2fe7 ran for 0 msecs: init_script_binfmt+0x0/0x12() [ 0.140310] Calling initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() [ 0.140317] initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() returned 0. [ 0.140326] initcall 0xffffffff806f2ff9 ran for 0 msecs: init_elf_binfmt+0x0/0x12() [ 0.140335] Calling initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() [ 0.140344] initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() returned 0. [ 0.140351] initcall 0xffffffff806f3de9 ran for 0 msecs: debugfs_init+0x0/0x4a()2/
Quoted 12 lines
[ 0.140206] Calling initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() [ 0.140215] initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() returned 0. [ 0.140222] initcall 0xffffffff806efeb1 ran for 0 msecs: ksysfs_init+0x0/0x29() [ 0.140230] Calling initcall 0xffffffff806f25be: filelock_init+0x0/0x31() [ 0.140242] initcall 0xffffffff806f25be: filelock_init+0x0/0x31() returned 0. [ 0.140249] initcall 0xffffffff806f25be ran for 0 msecs: filelock_init+0x0/0x31() [ 0.140258] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140276] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0.
So perhaps it locks during a timer interrupt.
Quoted 3 lines
.config is attached.
Any ideas/suggestions?
Just the usual: nothing from sysrq or NMI watchdog?
Re: 2.6.21-rc7-mm2 hangs in boot
Quoted 38 lines · On Sun, 29 Apr 2007 22:23:54 -0700 Andrew Morton wrote:
Quoted 23 lines · On Sun, 29 Apr 2007 22:01:32 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 2 lines · On Wed, 25 Apr 2007 22:57:16 -0700 Andrew Morton wrote:
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
I'm getting a hang near the end of booting on
x86_64UP. The lastinitcall_debugfunction varies. E.g.:1/
[ 0.140257] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140275] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0. [ 0.140302] initcall 0xffffffff806f2fe7 ran for 0 msecs: init_script_binfmt+0x0/0x12() [ 0.140310] Calling initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() [ 0.140317] initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() returned 0. [ 0.140326] initcall 0xffffffff806f2ff9 ran for 0 msecs: init_elf_binfmt+0x0/0x12() [ 0.140335] Calling initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() [ 0.140344] initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() returned 0. [ 0.140351] initcall 0xffffffff806f3de9 ran for 0 msecs: debugfs_init+0x0/0x4a()2/
Quoted 12 lines
[ 0.140206] Calling initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() [ 0.140215] initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() returned 0. [ 0.140222] initcall 0xffffffff806efeb1 ran for 0 msecs: ksysfs_init+0x0/0x29() [ 0.140230] Calling initcall 0xffffffff806f25be: filelock_init+0x0/0x31() [ 0.140242] initcall 0xffffffff806f25be: filelock_init+0x0/0x31() returned 0. [ 0.140249] initcall 0xffffffff806f25be ran for 0 msecs: filelock_init+0x0/0x31() [ 0.140258] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140276] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0.
Quoted 7 lines
So perhaps it locks during a timer interrupt.
Quoted 3 lines
.config is attached.
Any ideas/suggestions?
Just the usual: nothing from sysrq or NMI watchdog?
Nothing from either of those. I'll jiggle some config options.
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Re: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 42 lines · On Mon, 30 Apr 2007 08:16:53 -0700 Randy Dunlap wrote:
Quoted 40 lines · On Sun, 29 Apr 2007 22:23:54 -0700 Andrew Morton wrote:
Quoted 23 lines · On Sun, 29 Apr 2007 22:01:32 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 2 lines · On Wed, 25 Apr 2007 22:57:16 -0700 Andrew Morton wrote:
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
I'm getting a hang near the end of booting on
x86_64UP. The lastinitcall_debugfunction varies. E.g.:1/
[ 0.140257] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140275] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0. [ 0.140302] initcall 0xffffffff806f2fe7 ran for 0 msecs: init_script_binfmt+0x0/0x12() [ 0.140310] Calling initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() [ 0.140317] initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() returned 0. [ 0.140326] initcall 0xffffffff806f2ff9 ran for 0 msecs: init_elf_binfmt+0x0/0x12() [ 0.140335] Calling initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() [ 0.140344] initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() returned 0. [ 0.140351] initcall 0xffffffff806f3de9 ran for 0 msecs: debugfs_init+0x0/0x4a()2/
Quoted 12 lines
[ 0.140206] Calling initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() [ 0.140215] initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() returned 0. [ 0.140222] initcall 0xffffffff806efeb1 ran for 0 msecs: ksysfs_init+0x0/0x29() [ 0.140230] Calling initcall 0xffffffff806f25be: filelock_init+0x0/0x31() [ 0.140242] initcall 0xffffffff806f25be: filelock_init+0x0/0x31() returned 0. [ 0.140249] initcall 0xffffffff806f25be ran for 0 msecs: filelock_init+0x0/0x31() [ 0.140258] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140276] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0.So perhaps it locks during a timer interrupt.
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
.config is attached.
Any ideas/suggestions?
Just the usual: nothing from sysrq or NMI watchdog?
Nothing from either of those. I'll jiggle some config options.
config option changes didn't help, but removing
netconsole=<params>
from the kernel command line makes it all happy. :(
Do we know of netconsole hang problems? (anyone?)
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Andrew Morton
maintainerRe: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 48 lines · On Mon, 30 Apr 2007 16:51:01 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 46 lines · On Mon, 30 Apr 2007 08:16:53 -0700 Randy Dunlap wrote:
Quoted 44 lines · On Sun, 29 Apr 2007 22:23:54 -0700 Andrew Morton wrote:
Quoted 23 lines · On Sun, 29 Apr 2007 22:01:32 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 2 lines · On Wed, 25 Apr 2007 22:57:16 -0700 Andrew Morton wrote:
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
I'm getting a hang near the end of booting on
x86_64UP. The lastinitcall_debugfunction varies. E.g.:1/
[ 0.140257] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140275] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0. [ 0.140302] initcall 0xffffffff806f2fe7 ran for 0 msecs: init_script_binfmt+0x0/0x12() [ 0.140310] Calling initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() [ 0.140317] initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() returned 0. [ 0.140326] initcall 0xffffffff806f2ff9 ran for 0 msecs: init_elf_binfmt+0x0/0x12() [ 0.140335] Calling initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() [ 0.140344] initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() returned 0. [ 0.140351] initcall 0xffffffff806f3de9 ran for 0 msecs: debugfs_init+0x0/0x4a()2/
Quoted 12 lines
[ 0.140206] Calling initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() [ 0.140215] initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() returned 0. [ 0.140222] initcall 0xffffffff806efeb1 ran for 0 msecs: ksysfs_init+0x0/0x29() [ 0.140230] Calling initcall 0xffffffff806f25be: filelock_init+0x0/0x31() [ 0.140242] initcall 0xffffffff806f25be: filelock_init+0x0/0x31() returned 0. [ 0.140249] initcall 0xffffffff806f25be ran for 0 msecs: filelock_init+0x0/0x31() [ 0.140258] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140276] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0.So perhaps it locks during a timer interrupt.
Quoted 3 lines
.config is attached.
Any ideas/suggestions?
Quoted 7 lines
Quoted 3 lines
Quoted 1 line
Just the usual: nothing from sysrq or NMI watchdog?
Nothing from either of those. I'll jiggle some config options.
config option changes didn't help, but removing
netconsole=<params>
from the kernel command line makes it all happy. :(
argh.
Quoted 1 line
Do we know of netconsole hang problems? (anyone?)
You have "time" as well? I found on i386 uniproc that time+netconsole caused hangs because the printk timestamping code was taking xtime_lock for reading inside a write_seqlock. But I though that Andi fixed that. Perhaps i386 got fixed but x86_64 did not.
Re: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 53 lines · Andrew Morton
Quoted 41 lines · On Mon, 30 Apr 2007 16:51:01 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 39 lines · On Mon, 30 Apr 2007 08:16:53 -0700 Randy Dunlap wrote:
Quoted 37 lines · On Sun, 29 Apr 2007 22:23:54 -0700 Andrew Morton wrote:
Quoted 21 lines · On Sun, 29 Apr 2007 22:01:32 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 1 line · On Wed, 25 Apr 2007 22:57:16 -0700 Andrew Morton wrote:
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
I'm getting a hang near the end of booting on
x86_64UP. The lastinitcall_debugfunction varies. E.g.:1/
[ 0.140257] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140275] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0. [ 0.140302] initcall 0xffffffff806f2fe7 ran for 0 msecs: init_script_binfmt+0x0/0x12() [ 0.140310] Calling initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() [ 0.140317] initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() returned 0. [ 0.140326] initcall 0xffffffff806f2ff9 ran for 0 msecs: init_elf_binfmt+0x0/0x12() [ 0.140335] Calling initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() [ 0.140344] initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() returned 0. [ 0.140351] initcall 0xffffffff806f3de9 ran for 0 msecs: debugfs_init+0x0/0x4a()2/
Quoted 12 lines
[ 0.140206] Calling initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() [ 0.140215] initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() returned 0. [ 0.140222] initcall 0xffffffff806efeb1 ran for 0 msecs: ksysfs_init+0x0/0x29() [ 0.140230] Calling initcall 0xffffffff806f25be: filelock_init+0x0/0x31() [ 0.140242] initcall 0xffffffff806f25be: filelock_init+0x0/0x31() returned 0. [ 0.140249] initcall 0xffffffff806f25be ran for 0 msecs: filelock_init+0x0/0x31() [ 0.140258] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140276] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0.So perhaps it locks during a timer interrupt.
Quoted 8 lines
Quoted 5 lines
Quoted 4 lines
Quoted 3 lines
.config is attached.
Any ideas/suggestions?
Just the usual: nothing from sysrq or NMI watchdog?
Nothing from either of those. I'll jiggle some config options.
config option changes didn't help, but removing
netconsole=<params>
from the kernel command line makes it all happy. :(
Quoted 8 lines
argh.
Quoted 1 line
Do we know of netconsole hang problems? (anyone?)
You have "time" as well? I found on i386 uniproc that time+netconsole caused hangs because the printk timestamping code was taking
xtime_lockfor reading inside awrite_seqlock. But I though that Andi fixed that. Perhaps i386 got fixed butx86_64did not.
Yes, I have CONFIG_PRINTK_TIME=y and disabling it allows it to boot. Thanks.
Maybe the patch isn't merged yet?
Now if I can just remember this until the next time that I hit it...
Signature · 2 lines
~Randy *** Remember to use Documentation/SubmitChecklist when testing your code ***
Andrew Morton
maintainerRe: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 58 lines · On Mon, 30 Apr 2007 17:45:55 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 57 lines · Andrew Morton
Quoted 41 lines · On Mon, 30 Apr 2007 16:51:01 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 39 lines · On Mon, 30 Apr 2007 08:16:53 -0700 Randy Dunlap wrote:
Quoted 37 lines · On Sun, 29 Apr 2007 22:23:54 -0700 Andrew Morton wrote:
Quoted 21 lines · On Sun, 29 Apr 2007 22:01:32 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 1 line · On Wed, 25 Apr 2007 22:57:16 -0700 Andrew Morton wrote:
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/
I'm getting a hang near the end of booting on
x86_64UP. The lastinitcall_debugfunction varies. E.g.:1/
[ 0.140257] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140275] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0. [ 0.140302] initcall 0xffffffff806f2fe7 ran for 0 msecs: init_script_binfmt+0x0/0x12() [ 0.140310] Calling initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() [ 0.140317] initcall 0xffffffff806f2ff9: init_elf_binfmt+0x0/0x12() returned 0. [ 0.140326] initcall 0xffffffff806f2ff9 ran for 0 msecs: init_elf_binfmt+0x0/0x12() [ 0.140335] Calling initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() [ 0.140344] initcall 0xffffffff806f3de9: debugfs_init+0x0/0x4a() returned 0. [ 0.140351] initcall 0xffffffff806f3de9 ran for 0 msecs: debugfs_init+0x0/0x4a()2/
Quoted 12 lines
[ 0.140206] Calling initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() [ 0.140215] initcall 0xffffffff806efeb1: ksysfs_init+0x0/0x29() returned 0. [ 0.140222] initcall 0xffffffff806efeb1 ran for 0 msecs: ksysfs_init+0x0/0x29() [ 0.140230] Calling initcall 0xffffffff806f25be: filelock_init+0x0/0x31() [ 0.140242] initcall 0xffffffff806f25be: filelock_init+0x0/0x31() returned 0. [ 0.140249] initcall 0xffffffff806f25be ran for 0 msecs: filelock_init+0x0/0x31() [ 0.140258] Calling initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() [ 0.140266] initcall 0xffffffff806f2fa8: init_misc_binfmt+0x0/0x3f() returned 0. [ 0.140276] initcall 0xffffffff806f2fa8 ran for 0 msecs: init_misc_binfmt+0x0/0x3f() [ 0.140284] Calling initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() [ 0.140293] initcall 0xffffffff806f2fe7: init_script_binfmt+0x0/0x12() returned 0.So perhaps it locks during a timer interrupt.
Quoted 8 lines
Quoted 5 lines
Quoted 4 lines
Quoted 3 lines
.config is attached.
Any ideas/suggestions?
Just the usual: nothing from sysrq or NMI watchdog?
Nothing from either of those. I'll jiggle some config options.
config option changes didn't help, but removing
netconsole=<params>
from the kernel command line makes it all happy. :(argh.
Quoted 1 line
Do we know of netconsole hang problems? (anyone?)
Quoted 8 lines
Quoted 4 lines
You have "time" as well? I found on i386 uniproc that time+netconsole caused hangs because the printk timestamping code was taking
xtime_lockfor reading inside awrite_seqlock. But I though that Andi fixed that. Perhaps i386 got fixed butx86_64did not.Yes, I have
CONFIG_PRINTK_TIME=yand disabling it allows it to boot. Thanks.Maybe the patch isn't merged yet?
Could be. I don't recall whether Andi's statement was before or after 2.6.21-rc7-mm2 actually.
Quoted 1 line
Now if I can just remember this until the next time that I hit it...
Andi: unprocessor x86_64 running rc7-mm2 is hanging early in boot at randomish times (presumably in the timer irq handler) when netconsole and printk-time are enabled.
I was hitting the same thing on i386 uniprocessor, but I thought it got fixed.
The problem was that the printable string which is newly passed to mark_tsc_unstable() is printed out inside write_seqlock(xtime_lock) but printk timestamping (and perhaps netconsole tx?) want to take xtime_lock for reading, which will hang.
Re: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 3 lines
Andi: unprocessor
x86_64running rc7-mm2 is hanging early in boot at randomish times (presumably in the timer irq handler) when netconsole and printk-time are enabled.
A backtrace would be good. Does nmi_watchdog=2 show anything interesting or if not sysrq-t?
Quoted 3 lines
I was hitting the same thing on i386 uniprocessor, but I thought it got fixed.
Yes.
My current sched_clock does not take any locks anymore and it was removed from the cpufreq handler too.
-Andi
Re: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 6 lines · On Tue, 1 May 2007 05:43:30 +0200 Andi Kleen wrote:
Quoted 3 lines
Andi: unprocessor
x86_64running rc7-mm2 is hanging early in boot at randomish times (presumably in the timer irq handler) when netconsole and printk-time are enabled.A backtrace would be good. Does nmi_watchdog=2 show anything interesting or if not sysrq-t?
I can't get anything from sysrq or nmi_watchdog.
Quoted 4 lines
Quoted 2 lines
I was hitting the same thing on i386 uniprocessor, but I thought it got fixed.
Yes.
Fixed where? Merged into mainline or in your firstfloor patches?
Quoted 2 lines
My current
sched_clockdoes not take any locks anymore and it was removed from the cpufreq handler too.
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Andrew Morton
maintainerRe: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 6 lines · On Mon, 30 Apr 2007 22:16:24 -0700 Randy Dunlap <[email protected]> wrote:
Quoted 4 lines
Quoted 2 lines
I was hitting the same thing on i386 uniprocessor, but I thought it got fixed.
Yes.
Fixed where? Merged into mainline or in your firstfloor patches?
The bug is in firstfloor only, and the fix (if present) will be there too.
<checks>
Nope,
ftp://ftp.firstfloor.org/pub/ak/x86_64/quilt/patches/sched-clock-share
is identical to
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/broken-out/x86_64-mm-sched-clock-share.patch
Re: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 11 lines
The bug is in firstfloor only, and the fix (if present) will be there too.
<checks>
Nope,
ftp://ftp.firstfloor.org/pub/ak/x86_64/quilt/patches/sched-clock-share
is identical to
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/broken-out/x86_64-mm-sched-clock-share.patch
Or perhaps the deadlock is in the cpufrequency handler. Does it happen without CONFIG_CPUFREQ too?
[cpufreq handler calls ktime_get which might take xtime lock for reading]
-Andi
Andrew Morton
maintainerRe: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 8 lines · On Tue, 1 May 2007 08:24:56 +0200 Andi Kleen <[email protected]> wrote:
Quoted 8 lines
The bug is in firstfloor only, and the fix (if present) will be there too.
<checks>
Nope,
ftp://ftp.firstfloor.org/pub/ak/x86_64/quilt/patches/sched-clock-share
Quoted 9 lines
Quoted 3 lines
is identical to
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/broken-out/x86_64-mm-sched-clock-share.patch
Or perhaps the deadlock is in the cpufrequency handler. Does it happen without
CONFIG_CPUFREQtoo?[cpufreq handler calls
ktime_getwhich might take xtime lock for reading]
Sounds right. That's what was happening to me for a while.
Randy, it'd be interesting to try:
arch/x86_64/kernel/tsc.c renamed from arch/x86_64/kernel/tsc.c~a +2 -2
@@ -84,8 +84,8 @@ static int time_cpufreq_notifier(structcpufreq_scale (loops_per_jiffy_ref, ref_freq, freq->new); tsc_khz =cpufreq_scale (tsc_khz_ref, ref_freq, freq->new); -if (!(freq->flags &CPUFREQ_CONST_LOOPS )) -mark_tsc_unstable ("cpufreq changes" ); +// if (!(freq->flags & CPUFREQ_CONST_LOOPS)) +// mark_tsc_unstable("cpufreq changes"); }return 0 ;
_
and if that "fixes" it, disable netconsole and do
arch/x86_64/kernel/tsc.c renamed from arch/x86_64/kernel/tsc.c~a +1 -1
@@ -85,7 +85,7 @@ static int time_cpufreq_notifier(struct tsc_khz =cpufreq_scale (tsc_khz_ref, ref_freq, freq->new);if (!(freq->flags &CPUFREQ_CONST_LOOPS )) -mark_tsc_unstable ("cpufreq changes" ); +dump_stack (); }return 0 ;
_
Re: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 37 lines · On Mon, 30 Apr 2007 22:38:59 -0700 Andrew Morton wrote:
Quoted 8 lines · On Tue, 1 May 2007 08:24:56 +0200 Andi Kleen <[email protected]> wrote:
Quoted 8 lines
The bug is in firstfloor only, and the fix (if present) will be there too.
<checks>
Nope,
ftp://ftp.firstfloor.org/pub/ak/x86_64/quilt/patches/sched-clock-share
Quoted 9 lines
Quoted 3 lines
is identical to
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21-rc7/2.6.21-rc7-mm2/broken-out/x86_64-mm-sched-clock-share.patch
Or perhaps the deadlock is in the cpufrequency handler. Does it happen without
CONFIG_CPUFREQtoo?[cpufreq handler calls
ktime_getwhich might take xtime lock for reading]Sounds right. That's what was happening to me for a while.
Randy, it'd be interesting to try:
arch/x86_64/kernel/tsc.c renamed from arch/x86_64/kernel/tsc.c~a +2
-2@@ -84,8 +84,8 @@ static int time_cpufreq_notifier(structcpufreq_scale (loops_per_jiffy_ref, ref_freq, freq->new); tsc_khz =cpufreq_scale (tsc_khz_ref, ref_freq, freq->new); -if (!(freq->flags &CPUFREQ_CONST_LOOPS )) -mark_tsc_unstable ("cpufreq changes" ); +// if (!(freq->flags & CPUFREQ_CONST_LOOPS)) +// mark_tsc_unstable("cpufreq changes"); }return 0 ;
Quoted 1 line
_
I don't have CPU_FREQ enabled, so that didn't change anything.
arch/x86_64/kernel/tsc.c static int time_cpufreq_notifier(struct · line 91
Quoted 13 lines
and if that "fixes" it, disable netconsole and do
arch/x86_64/kernel/tsc.c renamed from arch/x86_64/kernel/tsc.c~a +1
-1@@ -85,7 +85,7 @@ static int time_cpufreq_notifier(struct tsc_khz =cpufreq_scale (tsc_khz_ref, ref_freq, freq->new);if (!(freq->flags &CPUFREQ_CONST_LOOPS )) -mark_tsc_unstable ("cpufreq changes" ); +dump_stack (); }return 0 ;
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Re: 2.6.21-rc7-mm2 hangs in boot (netconsole)
In reply to Randy DunlapQuoted 10 lines · Randy Dunlap
Quoted 6 lines · On Tue, 1 May 2007 05:43:30 +0200 Andi Kleen wrote:
Quoted 3 lines
Andi: unprocessor
x86_64running rc7-mm2 is hanging early in boot at randomish times (presumably in the timer irq handler) when netconsole and printk-time are enabled.A backtrace would be good. Does nmi_watchdog=2 show anything interesting or if not sysrq-t?
I can't get anything from sysrq or
nmi_watchdog.
Hmm, ok when the console locks up those likely don't work.
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
I was hitting the same thing on i386 uniprocessor, but I thought it got fixed.
Yes.
Fixed where? Merged into mainline or in your firstfloor patches?
None of the sched-clock changes are in mainline yet.
Can you perhaps test latest firstfloor alone (without rest of -mm)?
-Andi
Re: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 18 lines · On Tue, 1 May 2007 08:22:58 +0200 Andi Kleen wrote:
Quoted 10 lines · Randy Dunlap
Quoted 6 lines · On Tue, 1 May 2007 05:43:30 +0200 Andi Kleen wrote:
Quoted 3 lines
Andi: unprocessor
x86_64running rc7-mm2 is hanging early in boot at randomish times (presumably in the timer irq handler) when netconsole and printk-time are enabled.A backtrace would be good. Does nmi_watchdog=2 show anything interesting or if not sysrq-t?
I can't get anything from sysrq or
nmi_watchdog.Hmm, ok when the console locks up those likely don't work.
Quoted 4 lines
Quoted 4 lines
Quoted 3 lines
I was hitting the same thing on i386 uniprocessor, but I thought it got fixed.
Quoted 7 lines
Quoted 3 lines
Quoted 1 line
Yes.
Fixed where? Merged into mainline or in your firstfloor patches?
None of the sched-clock changes are in mainline yet.
Can you perhaps test latest firstfloor alone (without rest of -mm)?
OK. so your 2.6.21-rc7-git5 patch, applied to 2.6.21-git4 or applied to 2.6.21-rc7-git5 ?
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Re: 2.6.21-rc7-mm2 hangs in boot (netconsole)
Quoted 22 lines · On Tue, 1 May 2007 09:22:33 -0700 Randy Dunlap wrote:
Quoted 20 lines · On Tue, 1 May 2007 08:22:58 +0200 Andi Kleen wrote:
Quoted 10 lines · Randy Dunlap
Quoted 6 lines · On Tue, 1 May 2007 05:43:30 +0200 Andi Kleen wrote:
Quoted 3 lines
Andi: unprocessor
x86_64running rc7-mm2 is hanging early in boot at randomish times (presumably in the timer irq handler) when netconsole and printk-time are enabled.A backtrace would be good. Does nmi_watchdog=2 show anything interesting or if not sysrq-t?
I can't get anything from sysrq or
nmi_watchdog.Hmm, ok when the console locks up those likely don't work.
Quoted 6 lines
Quoted 5 lines
Quoted 3 lines
I was hitting the same thing on i386 uniprocessor, but I thought it got fixed.
Yes.
Quoted 8 lines
Quoted 5 lines
Quoted 1 line
Fixed where? Merged into mainline or in your firstfloor patches?
None of the sched-clock changes are in mainline yet.
Can you perhaps test latest firstfloor alone (without rest of -mm)?
OK. so your 2.6.21-rc7-git5 patch, applied to 2.6.21-git4 or applied to 2.6.21-rc7-git5 ?
Applied cleanly to 2.6.21-rc7-git5, but it has build errors:
arch/x86_64/mm/built-in.o: In function `mark_rodata_ro':
(.text+0x180): undefined reference to _stext' arch/x86_64/mm/built-in.o: In function mem_init':
(.init.text+0x2cf): undefined reference to _stext' arch/x86_64/mm/built-in.o: In function do_page_fault':
(.kprobes.text+0x59c): undefined reference to _stext' arch/x86_64/vdso/built-in.o: In function arch_setup_additional_pages':
(.text+0x40): undefined reference to vdso_end' arch/x86_64/vdso/built-in.o: In function arch_setup_additional_pages':
(.text+0x58): undefined reference to vdso_start' arch/x86_64/vdso/built-in.o: In function init_vdso_vars':
vma.c:(.init.text+0x1b): undefined reference to vdso_end' vma.c:(.init.text+0x26): undefined reference to vdso_start' vma.c:(.init.text+0x3c): undefined reference to vdso_start' kernel/built-in.o: In function profile_hits':
(.text+0x9609): undefined reference to _stext' kernel/built-in.o: In function core_kernel_text':
(.text+0x197c4): undefined reference to _stext' kernel/built-in.o: In function is_ksym_addr':
kallsyms.c:(.text+0x27042): undefined reference to _stext' kernel/built-in.o: In function profile_init':
(.init.text+0xc57): undefined reference to `_stext'
make: *** [.tmp_vmlinux1] Error 1
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
[PATCH] Re: 2.6.21-rc7-mm2 -- hvsi console driver registration failure
In reply to Andrew MortonTrying to get 2.6.21-rc7-mm2 to boot on large PPC64 seems to be a bit of a challenge. We have been seeing panics on boot from the hvsi driver:
Couldn't register hvsi console driver
Tracking this back, this seems to come from hvsi driver trying to register itself via tty_register_driver() with a zero units.
The failure is triggered by a change in semantics for kmalloc() between SLAB and SLUB; kmalloc(0) now returns NULL rather than an allocation at the smallest size. Looking at the code in question even when the allocation succeeds we will not actually use the memory when device->num is zero.
It is not clear to me if this is a bug in the hvsi driver in that it should specify some units. It seems we will try and reserve zero devices in this case, which seems pointless.
I have tested with the patch below which seems safe to me and stops the errors and even seems to make the console work. But perhaps someone with more driver fu, could verify if driver->num of zero has any meaning and kick this to the hvsi people if not.
-apw
=== 8< ===tty_register_driver: only allocate tty instances when defined
If device->num is zero we attempt to kmalloc() zero bytes. When SLUB is enabled this returns a null pointer and take that as an allocation failure and fail the device register. Check for no devices and avoid the allocation.
---
drivers/char/tty_io.c +1 -1
@@ -3724,7 +3724,7 @@ int tty_register_driver(struct tty_driver *driver)if (driver->flags &TTY_DRIVER_INSTALLED )return 0 ; -if (!(driver->flags &TTY_DRIVER_DEVPTS_MEM )) { +if (!(driver->flags &TTY_DRIVER_DEVPTS_MEM ) && driver->num) { p =kmalloc (driver->num *3 *sizeof (void *),GFP_KERNEL );if (!p)return -ENOMEM ;
Re: [PATCH] Re: 2.6.21-rc7-mm2 -- hvsi console driver registration failure
Quoted 16 lines · Andy Whitcroft
Trying to get 2.6.21-rc7-mm2 to boot on large PPC64 seems to be a bit of a challenge. We have been seeing panics on boot from the hvsi driver:
Couldn't register hvsi console driver
Tracking this back, this seems to come from hvsi driver trying to register itself via
tty_register_driver()with a zero units.The failure is triggered by a change in semantics for
kmalloc()between SLAB and SLUB; kmalloc(0) now returns NULL rather than an allocation at the smallest size. Looking at the code in question even when the allocation succeeds we will not actually use the memory whendevice->numis zero.
Quoted 3 lines
It is not clear to me if this is a bug in the hvsi driver in that it should specify some units. It seems we will try and reserve zero devices in this case, which seems pointless.
Yes, it seems pointless to me ...
Quoted 4 lines
I have tested with the patch below which seems safe to me and stops the errors and even seems to make the console work. But perhaps someone with more driver fu, could verify if
driver->numof zero has any meaning and kick this to the hvsi people if not.
Hollis nominated me to be "hvsi people", although I'm near-totally ignorant of the thing.
If hvsi_count is zero, then the device tree did not have any "serial" nodes that speak "hvterm-protocol". The hvsi should not have even tried to register anything. The attached patch seems more to the point.
--linas
The hvsi driver is used whenever the device-tree contains nodes for serial ports, and those serial ports speak the hvterm protocol. However, if no such nodes are found, then the hvsi driver should not even register.
This patch avoids a kernel panic with "Couldn't register hvsi console driver".
In addition, this patch makes tty_register_driver refuse to do anything, if there are no actual tty ports to be registered.
Utterly & completely untested.
----
drivers/char/hvsi.c | 4 ++++ drivers/char/tty_io.c | 3 +++ 2 files changed, 7 insertions(+)
drivers/char/hvsi.c +4 -0
@@ -1148,6 +1148,10 @@ static int __init hvsi_init(void) {int i; +/* No serial hvterm-protocol device-tree nodes found. */ +if (hvsi_count ==0 ) +return 0 ; + hvsi_driver =alloc_tty_driver (hvsi_count);if (!hvsi_driver)return -ENOMEM ;
drivers/char/tty_io.c +3 -0
@@ -3724,6 +3724,9 @@ int tty_register_driver(struct tty_driveif (driver->flags &TTY_DRIVER_INSTALLED )return 0 ; +if (driver->num ==0 ) +return -ENODEV ; +if (!(driver->flags &TTY_DRIVER_DEVPTS_MEM )) { p =kmalloc (driver->num *3 *sizeof (void *),GFP_KERNEL );if (!p)
Andrew Morton
maintainerRe: [PATCH] Re: 2.6.21-rc7-mm2 -- hvsi console driver registration failure
In reply to Andy WhitcroftQuoted 7 lines · On Fri, 04 May 2007 12:38:58 +0100 Andy Whitcroft <[email protected]> wrote:
Trying to get 2.6.21-rc7-mm2 to boot on large PPC64 seems to be a bit of a challenge. We have been seeing panics on boot from the hvsi driver:
Couldn't register hvsi console driver
Quoted 8 lines
Tracking this back, this seems to come from hvsi driver trying to register itself via
tty_register_driver()with a zero units.The failure is triggered by a change in semantics for
kmalloc()between SLAB and SLUB; kmalloc(0) now returns NULL rather than an allocation at the smallest size. Looking at the code in question even when the allocation succeeds we will not actually use the memory whendevice->numis zero.
OK, thanks for working that out.
Christoph, we should be emitting loud warnings so that this problem is easy to debug.
Better, we should be emitting loud warnigns which then disable themselves and then succeeding the allocation so that people can proceed with their kernel testing.
When all the loud-warning sites have been fixed, we can take that code out again.
The present situation is maximally tester-hostile.
Quoted 34 lines
It is not clear to me if this is a bug in the hvsi driver in that it should specify some units. It seems we will try and reserve zero devices in this case, which seems pointless.
I have tested with the patch below which seems safe to me and stops the errors and even seems to make the console work. But perhaps someone with more driver fu, could verify if
driver->numof zero has any meaning and kick this to the hvsi people if not.-apw
=== 8< ===
tty_register_driver: only allocate tty instances when definedIf
device->numis zero we attempt tokmalloc()zero bytes. When SLUB is enabled this returns a null pointer and take that as an allocation failure and fail the device register. Check for no devices and avoid the allocation.Signed-off-by Andy Whitcroft <[email protected]>---
drivers/char/tty_io.c +1
-1@@ -3724,7 +3724,7 @@ int tty_register_driver(struct tty_driver *driver)if (driver->flags &TTY_DRIVER_INSTALLED )return 0 ; -if (!(driver->flags &TTY_DRIVER_DEVPTS_MEM )) { +if (!(driver->flags &TTY_DRIVER_DEVPTS_MEM ) && driver->num) { p =kmalloc (driver->num *3 *sizeof (void *),GFP_KERNEL );if (!p)return -ENOMEM ;
Re: [PATCH] Re: 2.6.21-rc7-mm2 -- hvsi console driver registration failure
Quoted 8 lines · Andrew Morton
Better, we should be emitting loud warnigns which then disable themselves and then succeeding the allocation so that people can proceed with their kernel testing.
When all the loud-warning sites have been fixed, we can take that code out again.
The present situation is maximally tester-hostile.
i
SLUB: Allocate smallest object size if the user asks for 0 bytes.
Makes SLUB behave like SLAB in this area to avoid issues....
Throw a stack dump to alert people.
At some point the behavior should be switched back. NULL is no memory as far as I can tell and if the use asked for 0 bytes then he need to get no memory.
--- include/linux/slub_def.h | 8 ++++++-- mm/slub.c | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-)
mm/slub.c +1 -1
@@ -2009,7 +2009,7 @@ static struct kmem_cache *get_slab(size_ {int index =kmalloc_index (size); -if (!size) +if (!index)return NULL ;/* Allocation too large? */
include/linux/slub_def.h +6 -2
@@ -81,8 +81,12 @@ extern struct kmem_cache kmalloc_caches[*/ static inline int kmalloc_index (int size) { -if (size ==0 ) -return 0 ; +/* +* We should return 0 if size == 0 but we use the smallest object +* here for SLAB legacy reasons. +*/ +WARN_ON (size ==0 ); +if (size >64 && size <=96 )return 1 ;if (size >128 && size <=192 )