Skip to contentSkip to conversation

2.6.21-rc7-mm2

PATCH In review Andrew Morton 29 participants 116 messages Apr 26, 2007 – Nov 8, 2007 2 messages not in the archive

Subsystems (14)
Memory management SCSI ACPI MM core +10 more subsystems
lore
Share & tools
lore

Andrew Morton

author maintainer Applied
#0 lore raw

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

#1 lore raw
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

author maintainer
#2 lore raw
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.

This one was added by git-powerpc, presumably 7d776cb596994219584257eb5956b87628e5deaf "QE: automatically select QE options"

#3 lore raw
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 ***

#4 lore raw
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 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...

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

#5 lore raw
In reply to Andrew Morton
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
#6 lore raw
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_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.

Gabriel

author maintainer
#7 lore raw
In reply to Timur Tabi
Quoted 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'.

#9 lore raw

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_64 numa box:

CC arch/x86_64/vdso/vclock_gettime.o
arch/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

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
#10 lore raw

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_64 numa box:

CC arch/x86_64/vdso/vclock_gettime.o
arch/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

#11 lore raw

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_64 numa box:

CC arch/x86_64/vdso/vclock_gettime.o
arch/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?

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.c
arch/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
#12 lore raw

Re: 2.6.21-rc7-mm2 -- x86_64 VDSO compile error II

In reply to Mel Gorman
Quoted 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_64 numa box:

CC arch/x86_64/vdso/vclock_gettime.o
arch/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

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-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.

Or please try this simple patch.

-Andi

arch/x86_64/vdso/Makefile +1 -1
Index: linux/arch/x86_64/vdso/Makefile
===================================================================
@@ -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)
#13 lore raw

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_64 numa box:

CC arch/x86_64/vdso/vclock_gettime.o
arch/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

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-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.

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
#14 lore raw

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_64 numa box:

CC arch/x86_64/vdso/vclock_gettime.o
arch/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

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-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.

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.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

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
#15 lore raw

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

#16 lore raw

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
#17 lore raw

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, 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

It's definitely 0x400 here. Is your patch reversed and you want 0x500?

-Andi

#18 lore raw

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, not vdso.lds. The VDSO_TEXT_OFFSET is still 0x400. 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 0x400

It's definitely 0x400 here. Is your patch reversed and you want 0x500?

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
#19 lore raw

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, not vdso.lds. The VDSO_TEXT_OFFSET is still 0x400. 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 0x400

It's definitely 0x400 here. Is your patch reversed and you want 0x500?

Quoted 2 lines

Sorry, that patch is reversed. It's 0x500 it 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
Index: linux-2.6.21-rc7-mm2-quilt/arch/x86_64/vdso/voffset.h
===================================================================
@@ -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
#20 lore raw

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, 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

It's definitely 0x400 here. Is your patch reversed and you want 0x500?

Quoted 4 lines
Quoted 2 lines

Sorry, that patch is reversed. It's 0x500 it 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

#21 lore raw

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, 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

It's definitely 0x400 here. Is your patch reversed and you want 0x500?

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

Sorry, that patch is reversed. It's 0x500 it 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 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.

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
diff -rup -X /usr/src/patchset-0.6/bin//dontdiff linux-2.6.21-rc7-mm2-clean/arch/x86_64/mm/numa.c linux-2.6.21-rc7-mm2-scratch/arch/x86_64/mm/numa.c
@@ -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
diff -rup -X /usr/src/patchset-0.6/bin//dontdiff linux-2.6.21-rc7-mm2-clean/arch/x86_64/mm/srat.c linux-2.6.21-rc7-mm2-scratch/arch/x86_64/mm/srat.c
@@ -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 ac
 		printk(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 long
 		return -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);
#22 lore raw

Re: 2.6.21-rc7-mm2 -- x86_64 blade hard hangs

In reply to Andrew Morton

Getting 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

#23 lore raw

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_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]

Quoted 3 lines

Kernel config is here:

http://test.kernel.org/abat/85082/build/dotconfig

You should boot with earlyprintk=serial,ttyS1,19200

-Andi

#24 lore raw

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_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]

Quoted 6 lines
Quoted 3 lines

Kernel config is here:

http://test.kernel.org/abat/85082/build/dotconfig

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
#25 lore raw

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_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]

Quoted 6 lines
Quoted 3 lines

Kernel config is here:

http://test.kernel.org/abat/85082/build/dotconfig

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

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
#26 lore raw

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_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]

Quoted 6 lines
Quoted 3 lines

Kernel config is here:

http://test.kernel.org/abat/85082/build/dotconfig

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

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
Quoted 4 lines

RIP reserve_bootmem_node+0x1/0x12

Will 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]

#29 lore raw

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'.

Cc Andi Kleen <[email protected]>
Cc Eric Dumazet <[email protected]>
Cc David Rientjes <[email protected]>
Cc Christoph Lameter <[email protected]>

---

arch/x86_64/mm/k8topology.c +2 -5
diff -pNru linux/arch/x86_64/mm/k8topology.c linux~/arch/x86_64/mm/k8topology.c
@@ -49,11 +49,8 @@ int __init k8_scan_nodes(unsigned long s
 	int 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
diff -pNru linux/arch/x86_64/mm/numa.c linux~/arch/x86_64/mm/numa.c
@@ -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
diff -pNru linux/arch/x86_64/mm/srat.c linux~/arch/x86_64/mm/srat.c
@@ -419,19 +419,21 @@ int __init acpi_scan_nodes(unsigned long
 		return -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();
Acked-by
#30 lore raw

Re: 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: 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'.

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.c linux~/arch/x86_64/mm/k8topology.c

arch/x86_64/mm/k8topology.c +2 -5
@@ -49,11 +49,8 @@ int __init k8_scan_nodes(unsigned long s
 	int 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.c linux~/arch/x86_64/mm/numa.c

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);

diff -pNru linux/arch/x86_64/mm/srat.c linux~/arch/x86_64/mm/srat.c

arch/x86_64/mm/srat.c +5 -3
@@ -419,19 +419,21 @@ int __init acpi_scan_nodes(unsigned long
 		return -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
#31 lore raw
In reply to Andrew Morton

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

#32 lore raw

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

#33 lore raw

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

#34 lore raw

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 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

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 the kmalloc() 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?

#35 lore raw

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 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

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 the kmalloc() 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_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?

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

#36 lore raw

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.

#37 lore raw

Re: 2.6.21-rc7-mm2 -- PPC link failure

In reply to Andy Whitcroft
Quoted 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.

#38 lore raw

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() 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.

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

#39 lore raw

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

#40 lore raw

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

#41 lore raw

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_ON simply 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.

#42 lore raw

PATCH 1/1 mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2

In reply to Andrew Morton

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 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
Index: linux-mm/mm/memory.c
===================================================================
@@ -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.
author maintainer
#43 lore raw

Re: [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 in pte_alloc_map_lock().

---

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) :

_

#44 lore raw

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

#45 lore raw

Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2

In reply to Andrew Morton
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 in pte_alloc_map_lock().

---

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.
#46 lore raw

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 in pte_alloc_map_lock().

---

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
Index: linux-mm/mm/memory.c
===================================================================
@@ -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.
author maintainer
#47 lore raw

Re: [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?

#48 lore raw

Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2

In reply to Borislav Petkov
Quoted 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

#49 lore raw

Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2

In reply to Andrew Morton
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 in pte_alloc_map_lock().

---

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

author maintainer
#50 lore raw

Re: [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.c

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 5 lines

#define suppress_unused(x) x = x

	spinlock_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.

#51 lore raw

Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2

In reply to Andy Whitcroft
Quoted 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 in pte_alloc_map_lock().

---

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 = x

	spinlock_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
Index: linux-mm/include/linux/compiler.h
===================================================================
@@ -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
Index: linux-mm/mm/memory.c
===================================================================
@@ -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.
author maintainer
#52 lore raw

Re: [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.

---

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" ;)

author maintainer
#53 lore raw

Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2

In reply to Borislav Petkov
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.

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
diff -puN include/linux/compiler-gcc3.h~add-unitialized_var-macro-for-suppressing-gcc-warnings include/linux/compiler-gcc3.h
@@ -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
diff -puN include/linux/compiler-gcc4.h~add-unitialized_var-macro-for-suppressing-gcc-warnings include/linux/compiler-gcc4.h
@@ -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
diff -puN include/linux/compiler-intel.h~add-unitialized_var-macro-for-suppressing-gcc-warnings include/linux/compiler-intel.h
@@ -22,3 +22,5 @@
     (typeof(ptr)) (__ptr + (off)); })
 
 #endif
+
+#define uninitialized_var(x) x

_

#54 lore raw

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
author maintainer
#55 lore raw

Re: [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.

#56 lore raw

Re: [PATCH] mm/memory.c: remove warning from an uninitialized spinlock. was: Re: 2.6.21-rc7-mm2

In reply to Andrew Morton
Quoted 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.

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

#57 lore raw

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

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

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.
#58 lore raw

PATCH 1/1 make drivers/hwmon/applesmc.c:backlight_work static

In reply to Andrew Morton

This 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)
#59 lore raw

PATCH 1/1 unexport highlevel_host_reset

In reply to Andrew Morton
Quoted 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);
#60 lore raw

Re: [-mm patch] unexport highlevel_host_reset

Quoted 1 line · Adrian Bunk

highlevel_host_reset no 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/
#61 lore raw

2.6.21-rc7-mm2 breaks 'lvm vgscan'.

In reply to Andrew Morton
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_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.11
ata_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?

author maintainer
#62 lore raw

Re: 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_64 kernel)

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 ;)

#63 lore raw

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_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.

This is confirmed fixed in 2.6.21-mm1.

#64 lore raw

2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)

In reply to Andrew Morton

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
[   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.
author maintainer
#65 lore raw

Re: 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>

#66 lore raw

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>

#67 lore raw

Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)

In reply to Andrew Morton
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. 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.
author maintainer
#68 lore raw

Re: 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 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.

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>

#69 lore raw

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
author maintainer
#70 lore raw

Re: 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>

#71 lore raw

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) -
#72 lore raw

Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)

In reply to Andrew Morton

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.)

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) -
#73 lore raw

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>

#74 lore raw

Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)

In reply to Andrew Morton

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.

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) -
#75 lore raw

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>

author maintainer
#76 lore raw

Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)

In reply to Tilman Schmidt
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.

+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>

#77 lore raw

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>

#78 lore raw

Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)

In reply to Andrew Morton
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.

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>

#79 lore raw

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>
#80 lore raw

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>

#81 lore raw

Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)

In reply to Greg KH
Quoted 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>

#82 lore raw

Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)

In reply to Andrew Morton
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.

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 device
 	struct 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 device
 		if (!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>

#83 lore raw

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 device
 	struct 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 device
 		if (!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) -
author maintainer
#84 lore raw

Re: 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>

#85 lore raw

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) -
#86 lore raw

Re: 2.6.21-rc7-mm2 crash: Eeek! page_mapcount(page) went negative! (-1)

In reply to Tilman Schmidt
Quoted 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>
#87 lore raw

PATCH 1/1 make drivers/misc/thinkpad_acpi:fan_mutex static

In reply to Andrew Morton
Quoted 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;
 
Acked-by on v1 1/1
#88 lore raw

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_mutex static.

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
reviewer Applied
#89 lore raw

Re: [-mm patch] make drivers/misc/thinkpad_acpi:fan_mutex static

Quoted 2 lines
Quoted 2 lines

This patch makes the needlessly global fan_mutex static.

applied.
thanks,
-Len

#90 lore raw

Re: [-mm patch] make drivers/misc/thinkpad_acpi:fan_mutex static

In reply to Henrique de Moraes Holschuh
Quoted 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 Seed
#91 lore raw

Re: [-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
#92 lore raw

PATCH 1/1 MMC: make tifm_sd_set_dma_data() static

In reply to Andrew Morton
Quoted 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;
#93 lore raw

Re: [-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.

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
#94 lore raw

PATCH 1/1 scsi/lpfc/lpfc_init.c: remove unused variable

In reply to Andrew Morton

This 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;
 
#95 lore raw

PATCH 1/1 drivers/rtc/rtc-dev.c should #include "rtc-core.h"

In reply to Andrew Morton

Every 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;
 
#96 lore raw
In reply to Andrew Morton

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_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

(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 rejects

All 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.

author maintainer
#97 lore raw
Quoted 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?

#98 lore raw

Re: 2.6.21-rc7-mm2 hangs in boot

In reply to Andrew Morton
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_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 ***

author maintainer
#99 lore raw

Re: 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_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/

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?

#100 lore raw

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_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/

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 ***

#101 lore raw

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_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/

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 ***

author maintainer
#102 lore raw

Re: 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_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/

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.

#103 lore raw

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_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/

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_lock for reading inside a write_seqlock. But I though that Andi fixed that. Perhaps i386 got fixed but x86_64 did 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 ***
author maintainer
#104 lore raw

Re: 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_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/

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_lock for reading inside a write_seqlock. But I though that Andi fixed that. Perhaps i386 got fixed but x86_64 did not.

Yes, I have CONFIG_PRINTK_TIME=y and 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.

#105 lore raw

Re: 2.6.21-rc7-mm2 hangs in boot (netconsole)

Quoted 3 lines

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.

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

#106 lore raw

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_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.

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_clock does not take any locks anymore and it was removed from the cpufreq handler too.

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

author maintainer
#107 lore raw

Re: 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

#108 lore raw

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

author maintainer
#109 lore raw

Re: 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_CPUFREQ too?

[cpufreq handler calls ktime_get which 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(struct 
 		cpufreq_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;

_

#110 lore raw

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_CPUFREQ too?

[cpufreq handler calls ktime_get which 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(struct 
 		cpufreq_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 ***

#111 lore raw

Re: 2.6.21-rc7-mm2 hangs in boot (netconsole)

In reply to Randy Dunlap
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_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.

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

#112 lore raw

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_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.

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 ***

#113 lore raw

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_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.

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 ***

#114 lore raw

[PATCH] Re: 2.6.21-rc7-mm2 -- hvsi console driver registration failure

In reply to Andrew Morton

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 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
index 959a616..71c4579 100644
@@ -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;
#115 lore raw

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 when device->num is 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->num of 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
Index: linux-2.6.21-rc7-mm2/drivers/char/hvsi.c
===================================================================
@@ -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
Index: linux-2.6.21-rc7-mm2/drivers/char/tty_io.c
===================================================================
@@ -3724,6 +3724,9 @@ int tty_register_driver(struct tty_drive
 	if (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)
author maintainer
#116 lore raw

Re: [PATCH] Re: 2.6.21-rc7-mm2 -- hvsi console driver registration failure

In reply to Andy Whitcroft
Quoted 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 when device->num is 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->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
index 959a616..71c4579 100644
@@ -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;
#117 lore raw

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
Index: slub/mm/slub.c
===================================================================
@@ -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
Index: slub/include/linux/slub_def.h
===================================================================
@@ -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)