2007-05-23 07:42:50

by Andrew Morton

[permalink] [raw]
Subject: 2.6.22-rc2-mm1


ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/

- A new readahead patch series. This needs serious review and performance
testing please.

- Added Ingo's CFS CPU scheduler

- Xen dom-U support is now in the x86 tree.



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.22-rc1-mm1:


origin.patch
git-acpi.patch
git-acpi-export-acpi_set_cstate_limit.patch
git-alsa.patch
git-alsa-fixup.patch
git-cpufreq.patch
git-cpufreq-fix.patch
git-dvb.patch
git-gfs2-nmw.patch
git-hid.patch
git-ia64.patch
git-ieee1394.patch
git-input.patch
git-kvm.patch
git-leds.patch
git-leds-fixup.patch
git-libata-all.patch
git-md-accel.patch
git-md-accel-build-fix.patch
git-mips.patch
git-mips-fixup.patch
git-mmc.patch
git-mtd.patch
git-ubi.patch
git-netdev-all.patch
git-battery.patch
git-ioat.patch
git-ioat-vs-git-md-accel.patch
git-nfs.patch
git-nfs-server-cluster-locking-api.patch
git-nfs-server-cluster-locking-api-fixup.patch
git-parisc.patch
git-r8169.patch
git-selinux.patch
git-pciseg.patch
git-sh.patch
git-scsi-misc.patch
git-scsi-rc-fixes.patch
git-scsi-target.patch
git-unionfs.patch
git-watchdog.patch
git-wireless.patch
git-ipwireless_cs.patch
git-newsetup.patch
git-xfs.patch
git-cryptodev.patch
git-xtensa.patch
git-gccbug.patch

git trees

-afs-write-back-dirty-data-on-unmount.patch
-slub-it-is-legit-to-allocate-a-slab-of-the-maximum-permitted-size.patch
-slub-dont-confuse-ctor-and-dtor.patch
-afs-fix-afs_prepare_write.patch
-spi-fix-spidev-for-sizeoflong-32-devices.patch
-parport_pc-needs-dma-mappingh.patch
-acpi-driver-model-flags-and-platform_enable_wake.patch
-alsa-fix-isa_bus-conversion.patch
-arm-fix-hard_smp_processor_id-compile-error.patch
-fix-agk-dm-dm-io-fix-panic-on-large-request.patch
-update-documentation-driver-model-platformtxt.patch
-tuner-simplec-add-suport-for-secam-bg-with-fi1216mf.patch
-jdelvare-hwmon-hwmon-maintainer-position-open.patch
-wistron_btns-add-led-support.patch
-add-support-for-reading-stdin-with-gen_init_cpio.patch
-add-support-for-squashing-uid-gid-in-gen_initramfs_listsh.patch
-time-locale-in-gen_initramfs_listsh.patch
-powerpc64-symbols-start-with.patch
-drivers-ata-remove-the-wildcard-from-sata_nv-driver.patch
-libata-fix-shutdown-warning-message-printing.patch
-drivers-ata-correct-a-wrong-free-function-for-sata_nv-driver.patch
-drivers-ata-correct-a-wrong-free-function-for-sata_nv-driver-fix.patch
-ide-alim15x3-use-ide-tune-dma.patch
-ide-pdc202xx_new-use-ide-tune-dma.patch
-ide-pdc202xx_old-rewrite-mode-programming-v2.patch
-ide-serverworks-pio-mode-setup-fixes.patch
-ide-sis5513-pio-mode-setup-fixes.patch
-ide-ide-dma-off-quietly-fix.patch
-ide-ide-no-mdma-udma-sharing-filter.patch
-ide-ide-tune-dma-2.patch
-ide-cs5530-sc1200-dma-cleanup.patch
-ide-cs5530-sc1200-add-speedproc.patch
-ide-sl82c105-add-speedproc-method-and-mwdma01-support.patch
-ide-ide-dma-enable.patch
-ide-ide-check-dma-words-validity.patch
-ide-ide-remove-ide-use-dma.patch
-ide-ide-use-mutex-instead-of-semaphore-in-ide-driver.patch
-sl82c105-switch-to-ref-counting-api.patch
-use-menuconfig-objects-ide.patch
-use-mutex-instead-of-semaphore-in-ide-driver.patch
-nommu-generalise-the-handling-of-mtd-specific-superblocks.patch
-dont-force-uclinux-mtd-map-to-be-root-dev.patch
-fix-race-condition-about-network-device-name-allocation.patch
-nf_conntrack-fix-use-after-free-in-helper-destroy-callback.patch
-git-battery-warning-fix.patch
-ds2760_battery-warning-fix.patch
-ocfs2-fix-type-borkage.patch
-fix-gregkh-pci-pci-remove-the-broken-pci_multithread_probe-option.patch
-pci-x-pci-express-read-control-interfaces.patch
-scsi-lpfc-lpfc_initc-remove-unused-variable.patch
scsi-fix-ambiguous-gdthtable-definition.patch
-update-maintainer-email-id-for-megaraid-scsi-drivers.patch
-aacraid-fix.patch
-cxacru-add-documentation-file.patch
-cxacru-cleanup-sysfs-attribute-code.patch
-cxacru-create-sysfs-attributes-in-atm_start-instead-of-bind.patch
-cxacru-ignore-error-trying-to-start-adsl-in-atm_start.patch
-use-menuconfig-objects-ii-usb.patch
-auerswald-fix-file-release-handler.patch
-usb-dont-try-to-kzalloc-0-bytes.patch
-x86_64-mm-build-tar-files.patch
-x86_64-mm-various-cleanups.patch
-x86-use-elfnoteh-to-generate-vsyscall-notes.patch
-i386-fix-machine-rebooting-fix.patch
-use-menuconfig-objects-crypto.patch
-slob-implement-rcu-freeing.patch
-i386-x86-64-fix-section-mismatch.patch
-slab-allocators-drop-support-for-destructors.patch
-remove-slab_ctor_constructor.patch
-remove-constructor-from-buffer_head.patch
-remove-slab_ctor_constructor-fix.patch
-make-__vunmap-static.patch
-simplify-compat_sys_timerfd.patch
-let-smp_call_function_single-return-ebusy-on-up.patch
-let-smp_call_function_single-return-ebusy-on-up-fix.patch
-refine-screen_info-sanity-check-for-vgacon-initialization.patch
-slub-remove-depends-on-experimental-and-arch_uses_slab_page_struct.patch
-make-freezeable-workqueues-singlethread.patch
-slab-move-two-remaining-slab-specific-definitions-to-slab_defh.patch
-slub-define-functions-for-cpu-slab-handling-instead-of-using.patch
-slub-define-functions-for-cpu-slab-handling-instead-of-using-fix.patch
-parport-mailing-list-is-subscribers-only.patch
-docbook-make-kernel-locking-table-readable.patch
-gpio-interface-loosens-call-restrictions.patch
-rtc-omap-build-fix.patch
-rtc-kconfig-clarification.patch
-icom-add-new-sub-device-id-to-support-new-adapter.patch
-make-sysctl-kernel-core_pattern-and-fs-execc-agree-on-maximum-core-filename-size.patch
-ecryptfs-use-zero_user_page.patch
-slab-warn-on-zero-length-allocations.patch
-i386-dont-check_pgt_cache-in-flush_tlb_mm.patch
-circular-locking-dependency-found-in-quota-off.patch
-swsusp-fix-sysfs-interface.patch
-slub-fix-handling-of-oversized-slabs.patch
-compat_core_sys_select-avoid-kmalloc0.patch
-mm-more-rmap-checking.patch
-mm-more-rmap-checking-tidy.patch
-add-kstrndup.patch
-add-argv_split.patch
-split-usermodehelper-setup-from-execution.patch
-add-common-orderly_poweroff.patch
-tidy-up-usermode-helper-waiting-a-bit.patch

Merged into mainline or a subsystem tree

+powerpc-fix.patch
+ignore-bogus-acpi-info-for-offline-cpus.patch
+slub-debug-fix-object-size-calculation.patch
+fuse-fix-mknod-of-regular-file.patch
+mpc52xx_psc_spi-fix-it-for-config_ppc_merge.patch
+spi-doc-update-describe-clock-mode-bits.patch
+nohz-rate-limit-the-local-softirq-pending-warning-output.patch
+capabilityh-warning-fix.patch

2.6.22 queue

+invalidate_mapping_pages-add-cond_resched.patch
+make-common-helpers-for-seq_files-that-work-with-list_head-s.patch

Probably 2.6.22 queue

+acpi-bay-send-envp-with-uevent.patch

ACPI thing

+git-alsa-fixup.patch

Fix rejects in git-alsa.patch

+avr32-ratelimit-segfault-reporting-rate.patch

avr32 tweak

+cifs-oops-fix.patch

Might fix CIFS oopses

+git-cpufreq-fix.patch

Fix git-cpufreq.patch

+gregkh-driver-debugfs-add-rename-for-debugfs-files.patch
+gregkh-driver-update-documentation-driver-model-platformtxt.patch
+gregkh-driver-driver-core-keep-physdev-for-old-struct-class_device.patch
+gregkh-driver-driver-core-kill-unused-code.patch
+gregkh-driver-howto-removing-duplicated-entry.patch
+gregkh-driver-dmi-based-module-autoloading.patch

Driver tree updates

+driver-core-check-return-code-of-sysfs_create_link.patch
+driver-core-check-return-code-of-sysfs_create_link-fix.patch
+driver-core-coding-style-cleanup.patch
+remove-odd-and-misleading-comments-from-uioh.patch

Driver tree things

+jdelvare-i2c-i2c-legacy-drivers-shouldnt-issue-uevents.patch
+jdelvare-i2c-i2c-usb-tiny-fix-name-length.patch
+jdelvare-i2c-i2c-piix4-add-ati-sb700-support.patch

I2C tree updates

+jdelvare-hwmon-hwmon-ds1621-swapped-limits.patch
+jdelvare-hwmon-hwmon-new-maintainer.patch
+jdelvare-hwmon-hwmon-w83627hf-quiet-when-no-chip.patch
+jdelvare-hwmon-hwmon-ds1621-cleanups.patch
+jdelvare-hwmon-hwmon-ds1621-dynamic-attributes.patch
+jdelvare-hwmon-hwmon-ds1621-individual-alarm-files.patch
+jdelvare-hwmon-hwmon-dme1737-new-driver.patch
+jdelvare-hwmon-hwmon-dme1737-documentation.patch

hwmon tree updates

+dave-broke-gfs2-26-nmwgit.patch

gfs2 fix

+make-input-layer-use-seq_list_xxx-helpers.patch
+touchscreen-fujitsu-touchscreen-driver.patch

Input things

+libata-implement-ata_wait_after_reset.patch
+drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61.patch
+drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61-fix.patch
+drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61-fix-tidy.patch
+cleanup-libata-hpa-support.patch
+cleanup-libata-hpa-support-fix.patch
+hpt3x2n-correct-revision-boundary.patch
+pata_sis-fix-and-clean-up-some-timing-setups.patch

ATA/PATA things

+ide-ide-use-mutex-instead-of-ide_cfg_sem-semaphore.patch
+ide-cmd64x-init-code-cleanup.patch
+ide-aec62xx-rework-init_setup_aec6x80.patch
+ide-aec62xx-remove-init_dma-method.patch
+ide-aec62xx-kill-speedproc-method-wrapper.patch
+ide-ide-use-mutex-instead-of-ide_setting_sem-semaphore.patch

IDE tree updates

+ide-warning-fixes.patch
+ide-add-seagate-stt20000a-to-dma-blacklist.patch

IDE fixes

+git-md-accel-build-fix.patch

Fix git-md-accel.patch

+nommu-make-it-possible-for-romfs-to-use-mtd-devices-fix.patch

Fix nommu-make-it-possible-for-romfs-to-use-mtd-devices.patch

-git-ubi-fixup.patch

Unneeded

+fix-compiler-warning-in-fixedc.patch
+forcedeth-add-vitesse-phy.patch
+forcedeth-fix-power-management-support.patch
+forcedeth-fix-cpu-irq-mask.patch
+forcedeth-version-bump.patch

netdev things

+make-atm-driver-use-seq_list_xxx-helpers.patch
+make-some-network-related-proc-files-use-seq_list_xxx.patch
+make-some-netfilter-related-proc-files-use-seq_list_xxx.patch
+xfrm_algo-warning-fixes.patch

net things

+nfs-refactor-ip-address-sanity-checks-in-nfs-client.patch
+sunrpc-rename-rpcb_getport_external-routine.patch
+sunrpc-rename-rpcb_getport-to-be-consistent-with-new-rpcb_getport_sync-name.patch
+nfs-remake-nfsroot_mount-as-a-permanent-part-of-nfs-client.patch
+nfs-clean-up-in-kernel-nfs-mount.patch
+nfs-improve-debugging-output-in-nfs-in-kernel-mount-client.patch
+nfs-new-infrastructure-for-nfs-client-in-kernel-mount-option-parsing.patch
+nfs-add-functions-to-parse-nfs-mount-options-to-fs-nfs-superc.patch
+nfs-implement-nfsv2-3-in-kernel-mount-option-parsing.patch
+nfs-add-functions-to-parse-nfs4-mount-options-to-fs-nfs-superc.patch
+nfs-move-nfs_copy_user_string.patch
+nfs-more-nfs4-in-kernel-mount-option-parsing-infrastructure.patch
+nfs-integrate-support-for-processing-nfs4-mount-options-in-fs-nfs-superc.patch

NFS cleanups

+serial-set-dtr-in-uart-for-kernel-serial-console.patch

Serial fix

+gregkh-pci-pci-add-pci-x-pci-express-read-control-interfaces.patch
+gregkh-pci-pci-use-a-weak-symbol-for-the-empty-version-of-pcibios_add_platform_entries.patch
+gregkh-pci-pci-make-pcibios_add_platform_entries-return-errors.patch
+gregkh-pci-pci-pci_find_slot-mark-deprecated.patch

PCI tree updates

+sh-support-older-gccs.patch

Make sh compile for me.

+aic94xx-asd_clear_nexus-should-fail-if-the-cleared-task-does-not-complete.patch
+scsi-megaraid_sas-intercepts-cmd-timeout-and-throttle-io.patch
+scsi-remove-__gfp_dma.patch
+ncr5380-warning-fixes.patch

scsi stuff

-git-block-fixup.patch

Unneeded

-git-sas.patch

Dropped

+gregkh-usb-usb-ehci-support-for-big-endian-descriptors.patch
+gregkh-usb-usb-auerswald-fix-file-release-handler.patch
+gregkh-usb-usb-cxacru-add-documentation-file.patch
+gregkh-usb-usb-cxacru-cleanup-sysfs-attribute-code.patch
+gregkh-usb-usb-cxacru-create-sysfs-attributes-in-atm_start-instead-of-bind.patch
+gregkh-usb-usb-cxacru-ignore-error-trying-to-start-adsl-in-atm_start.patch
+gregkh-usb-usb-serial-keyspan-add-support-for-usa-49wg-usa-28xg.patch
+gregkh-usb-usb-remove-duplicate-ids-from-option-card-driver.patch
+gregkh-usb-usb-deref-urb-after-usbmon-is-done-with-it.patch
+gregkh-usb-usb-remove-short-initial-timeout-for-device-descriptor-fetch.patch
+gregkh-usb-usb-don-t-try-to-kzalloc-0-bytes.patch
+gregkh-usb-usb-onetouch-switch-to-using-input_dev-devparent.patch
+gregkh-usb-usb-fix-debug-output-of-ark3116.patch
+gregkh-usb-usb-usblp-use-correct-dma-address-in-case-of-probe-error.patch
+gregkh-usb-usb-fix-usb-ohci-subvendor-for-toshiba-portege-4000.patch
+gregkh-usb-usb-handle-errors-in-power-level-attribute.patch
+gregkh-usb-usb-fix-ratelimit-call-semantics.patch
+gregkh-usb-usb-m66592-udc-peripheral-controller-driver-for-m66592.patch
+gregkh-usb-usb-r8a66597-hcd-host-controller-driver-for-r8a66597.patch
+gregkh-usb-usb-interface-pm-state.patch
+gregkh-usb-usb-implement-pm-freeze-and-prethaw.patch
+gregkh-usb-usb-move-bus_suspend-and-bus_resume-method-calls.patch
+gregkh-usb-usb-don-t-unsuspend-for-a-new-connection.patch
+gregkh-usb-usb-fix-race-between-autosuspend-and-unregister-for-root-hubs.patch
+gregkh-usb-usb-remove-references-to-devpowerpower_state.patch
+gregkh-usb-usb-remove-locktree-routine-from-the-hub-driver.patch
+gregkh-usb-usb-make-hub-driver-s-release-more-robust.patch
+gregkh-usb-ohci-fix-machine-check-in-ohci_hub_status_data.patch
+gregkh-usb-usb-use-menuconfig-objects.patch
+gregkh-usb-usb-ehci-refcounts-work-on-ppc7448.patch

USB updates

+fix-gregkh-usb-usb-r8a66597-hcd-host-controller-driver-for-r8a66597.patch

USB fix

+drivers-net-wireless-libertas-rxc-fix.patch

wireless fix

+x86_64-mm-stack-align.patch
+x86_64-mm-apic-id.patch
+x86_64-mm-acpi-various-cleanups.patch
+x86_64-mm-fam10-string.patch
+x86_64-mm-gcc43-memcpy.patch
+x86_64-mm-remove-size-of-apicid_to_node-from-header.patch
+x86_64-mm-tsc-unstable.patch
+x86_64-mm-verify-cpu-rename.patch
+x86_64-mm-xencleanup-use-elfnote_h-to-generate-vsyscall-notes.patch
+x86_64-mm-xencleanup-add-kstrndup.patch
+x86_64-mm-xencleanup-add-argv_split.patch
+x86_64-mm-xencleanup-split-usermodehelper-setup-from-execution.patch
+x86_64-mm-add-common-orderly_poweroff.patch
+x86_64-mm-xencleanup-tidy-up-usermode-helper-waiting-a-bit.patch
+x86_64-mm-xen-allocate-and-free-vmalloc-areas.patch
+x86_64-mm-xen-add-nosegneg-capability-to-the-vsyscall-page-notes.patch
+x86_64-mm-xen-add-xen-interface-header-files.patch
+x86_64-mm-core-xen-implementation.patch
+x86_64-mm-xen-xen-virtual-mmu.patch
+x86_64-mm-xen-event-channels.patch
+x86_64-mm-xen-xen-time-implementation.patch
+x86_64-mm-xen-xen-configuration.patch
+x86_64-mm-xen-complete-pagetable-pinning-for-xen.patch
+x86_64-mm-xen-ignore-rw-mapping-of-ro-pages-in-pagetable_init.patch
+x86_64-mm-xen-fix-multicall-batching.patch
+x86_64-mm-xen-account-for-time-stolen-by-xen.patch
+x86_64-mm-xen-implement-xen_sched_clock.patch
+x86_64-mm-xen-xen-smp-guest-support.patch
+x86_64-mm-xen-add-support-for-preemption.patch
+x86_64-mm-xen-lazy-mmu-operations.patch
+x86_64-mm-xen-deal-with-negative-stolen-time.patch
+x86_64-mm-xen-use-the-hvc-console-infrastructure-for-xen-console.patch
+x86_64-mm-xen-add-early-printk-support-via-hvc-console.patch
+x86_64-mm-xen-add-xen-grant-table-support.patch
+x86_64-mm-xen-add-the-xenbus-sysfs-and-virtual-device-hotplug-driver.patch
+x86_64-mm-xen-add-xen-virtual-block-device-driver.patch
+x86_64-mm-xen-rename-xen-netif_-structures-to-xen_netif.patch
+x86_64-mm-xen-add-the-xen-virtual-network-device-driver.patch
+x86_64-mm-xen-xen-machine-operations.patch
+x86_64-mm-xen-handle-external-requests-for-shutdown-reboot-and-sysrq.patch
+x86_64-mm-xen-place-vcpu_info-structure-into-per-cpu-memory-if-possible.patch
+x86_64-mm-xen-attempt-to-patch-inline-versions-of-common-operations.patch

x86 tree updates

+arch-x86_64-vdso-vmac-needs-schedh.patch
+xen-build-fix.patch
+fix-x86_64-numa-fake-apicid_to_node-mapping-for-fake-numa-2.patch
+fix-x86_64-mm-sched-clock-share.patch

Fix it.

+x86_64-mcelog-tolerant-level-cleanup.patch
+x86_64-mce-poll-at-idle_start-and-printk-fix.patch

MCE fixes

+x86-fix-section-mismatch-warnings-in-mtrr.patch
+bug-in-i386-mtrr-initialization.patch
+x86_64-ratelimit-segfault-reporting-rate.patch

x86 updates

-git-newsetup-fixup.patch

Unneeded

+prohibit-rcutorture-from-being-compiled-into-the-kernel.patch
+documentation-fix-the-explanation-of-kconfig-files.patch
+avoid-zero-size-allocation-in-cache_k8_northbridges.patch
+recalc_sigpending_tsk-fixes.patch
+optimize-compat_core_sys_select-by-a-using-stack-space-for-small-fd-sets.patch
+spi-potential-memleak-in-spidev_ioctl.patch
+fbdev-cleanup-of-sparc-fb-options.patch
+pm2fb-rdac_wr-barriers-clean-up.patch
+pm3fb-various-fixes.patch
+w100fb-fix-compile-warnings.patch
+ps3fb-use-fb_sys_-instead-of-fb_cfb_.patch
+imxfb-remove-ifdefs.patch
+imxfb-fix-memory-hole.patch
+missing-const-from-reiserfs-min_key-declaration.patch
+uselib-add-missing-mnt_noexec-check.patch
+x86_64-allocate-sparsemem-memmap-above-4g.patch
+x86_64-allocate-sparsemem-memmap-above-4g-fix.patch
+fuse-generic_write_checks-for-direct_io.patch
+fuse-delete-inode-on-drop.patch
+fix-unused-setup_nr_node_ids.patch
+slub-debug-fix-check-for-super-sized-slabs-512k-64bit-256k.patch
+char-cyclades-fix-deadlock.patch
+simplify-cleanup_workqueue_thread.patch
+simplify-cleanup_workqueue_thread-fix.patch
+simplify-cleanup_workqueue_thread-fix2.patch
+misc-phantom-move-to-unlocked_ioctl.patch
+misc-misc-phantom-move-to-unlocked_ioctl-fix.patch
+misc-phantom-take-care-of-pci-posting.patch
+power-fix-sizeofpage_size-typo.patch
+update-dontdiff-file.patch
+procfs-directory-entry-cleanup.patch
+procfs-directory-entry-cleanup-fix.patch
+signalfd-retrieve-multiple-signals-with-one-read-call.patch
+signalfd-retrieve-multiple-signals-with-one-read-call-tidy.patch
+i2o-destroy-event-queue-only-when-drv-event-is-set.patch
+i2o-fix-notifiers-when-max_drivers-is-configured.patch
+i2o-eliminate-a-peculiar-constraint-on-i2o_max_drivers.patch
+i386-x86-64-show-that-config_hotplug_cpu-is-required-for-suspend-on-smp.patch
+md-avoid-overflow-in-raid0-calculation-with-large-components.patch
+md-dont-write-more-than-is-required-of-the-last-page-of-a-bitmap.patch
+md-fix-bug-with-linear-hot-add-and-elsewhere.patch
+documentation-documentation-initrdtxt.patch
+hisax-fix-error-checking-for-hisax_register.patch
+loop-preallocate-eight-loop-devices.patch
+sch_htb-fix-event-cache-time-calculation.patch
+applesmc-sensors-patch-missing-from-2622-rc2.patch
+off-by-one-in-floppyc.patch
+ecryptfs-delay-writing-0s-after-llseek-until-write.patch
+doc-clocksources.patch
+ehci-fsl-fix-cache-coherency-problem-on-system-with-large-memory.patch
+prevent-going-idle-with-softirq-pending.patch
+fix-crash-with-irqpoll-due-to-the-irqf_irqpoll-flag.patch
+i386-fix-early-usage-of-atomic_add_return-and.patch
+documentation-memory-barrierstxt-various-fixes.patch
+omap_uwire-spi_cpha-mode-bugfix.patch
+ads7846-spi_cpha-mode-bugfix.patch
+capifunc-warning-fixes.patch
+hardware-eicon-messagec-warning-fixes.patch

Probable 2.6.22 material

+change-zonelist-order-zonelist-order-selection-logic-add-check_highest_zone-to-build_zonelists_in_zone_order.patch

Fix change-zonelist-order-zonelist-order-selection-logic.patch

+hugetlb-remove-unnecessary-nid-initialization.patch
+mm-use-div_round_up-in-mm-memoryc.patch
+make-proc-slabinfo-use-seq_list_xxx-helpers.patch
+mm-alloc_large_system_hash-can-free-some-memory-for.patch
+remove-the-deprecated-kmem_cache_t-typedef-from-slabh.patch
+slub-use-ilog2-instead-of-series-of-constant-comparisons.patch
+move-three-functions-that-are-only-needed-for.patch
+slob-rework-freelist-handling.patch
+slob-remove-bigblock-tracking.patch
+slob-improved-alignment-handling.patch

MM things

+add-__gfp_movable-for-callers-to-flag-allocations-from-high-memory-that-may-be-migrated-mark-bio_alloc-allocations-correctly.patch
+add-__gfp_movable-for-callers-to-flag-allocations-from-high-memory-that-may-be-migrated-rename-gfp_high_movable-to-gfp_highuser_movable.patch
+add-__gfp_movable-for-callers-to-flag-allocations-from-high-memory-that-may-be-migrated-mark-page-cache-pages-as-__gfp_pagecache-instead-of-__gfp_movable.patchh
+group-short-lived-and-reclaimable-kernel-allocations-do-not-annotate-shmem-allocations-explicitly.patch
+group-short-lived-and-reclaimable-kernel-allocations-add-__gfp_temporary-to-identify-allocations-that-are-short-lived.patch

Update the MM patches in -mm.

+create-the-zone_movable-zone-fix.patch

Fix create-the-zone_movable-zone.patch

+allow-huge-page-allocations-to-use-gfp_high_movable-fix.patch
+allow-huge-page-allocations-to-use-gfp_high_movable-fix-2.patch

Fix allow-huge-page-allocations-to-use-gfp_high_movable.patch

-mm-merge-populate-and-nopage-into-fault-fixes-nonlinear-doc-fix.patch
-mm-merge-populate-and-nopage-into-fault-fixes-nonlinear-fix.patch

Folded into pther patches

+maps2-move-the-page-walker-code-to-lib-fix.patch

Fix maps2-move-the-page-walker-code-to-lib.patch

+nfs-invariant-fix.patch
+fs-introduce-some-page-buffer-invariants-obnoxiousness.patch

NFS things

+fix-rmmod-read-write-races-in-proc-entries-fix.patch

Fix fix-rmmod-read-write-races-in-proc-entries.patch

+add-lzo1x-compression-support-to-the-kernel-tidy.patch

Clena up add-lzo1x-compression-support-to-the-kernel.patch

+udf-check-for-allocated-memory-for-data-of-new-inodes-fix.patch

UDF fixlet

+fuse-warning-fix.patch
+vxfs-warning-fixes.patch
+percpu_counters-use-cpu-notifiers.patch
+percpu_counters-use-for_each_online_cpu.patch
+make-afs-use-seq_list_xxx-helpers.patch
+make-crypto-api-use-seq_list_xxx-helpers.patch
+make-proc-misc-use-seq_list_xxx-helpers.patch
+make-proc-modules-use-seq_list_xxx-helpers.patch
+make-proc-tty-drivers-use-seq_list_xxx-helpers.patch
+make-proc-self-mountstats-use-seq_list_xxx-helpers.patch
+make-nfs-client-use-seq_list_xxx-helpers.patch
+fat-gcc-43-warning-fix.patch
+remove-unnecessary-includes-of-spinlockh-under-include-linux.patch
+drivers-block-z2ram-remove-true-false-defines.patch
+fix-compiler-warnings-in-acornc.patch
+update-zilog-timeout.patch
+edd-switch-to-pci_get-based-api.patch
+fix-up-codingstyle-in-isofs.patch
+define-config_bounce-to-avoid-useless-inclusion-of-bounce-buffer.patch
+preserve-the-dirty-bit-in-init_page_buffers.patch
+rd-mark-ramdisk-buffer-heads-dirty-in-ramdisk_set_page_dirty.patch
+rd-mark-ramdisk-buffer-heads-dirty-in-ramdisk_set_page_dirty-fix.patch
+rd-simplify-by-using-the-same-helper-functions-in-libfs.patch
+delete-every-useless-reference-to-noret_type-in-the-tree.patch
+add-notime-boot-option.patch
+mpu401-warning-fixes.patch

Misc

+spi-controller-drivers-check-for-unsupported-modes.patch
+spi-add-3wire-mode-flag.patch

SPI udpates

+mismatching-declarations-of-revision-strings-in-hisax.patch
+make-isdn-capi-use-seq_list_xxx-helpers.patch

ISDN updates

+nfsd-warning-fix.patch

NFSD fix

+revoke-core-code-fix-zero-length-kmalloc.patch

Fix revoke-core-code.patch

+lguest-the-guest-code-update-for-mm-disable-tsc-dont-set-pge-bit.patch
+lguest-the-host-code-update-for-mm-simplify-boot_params.patch

lguest updates

+char-cyclades-add-firmware-loading.patch
+char-cyclades-fix-sparse-warning.patch
+char-isicom-cleanup-locking.patch
+char-isicom-del_timer-at-exit.patch
+char-isicom-proper-variables-types.patch

char driver cleanups

+fbcon-smart-blitter-usage-for-scrolling.patch
+nvidiafb-adjust-flags-to-take-advantage-of-new-scroll-method.patch

fbdev updates

+md-improve-message-about-invalid-superblock-during-autodetect.patch
+md-improve-the-is_mddev_idle-test-fix.patch
+md-check-that-internal-bitmap-does-not-overlap-other-data.patch
+md-change-bitmap_unplug-and-others-to-void-functions.patch

RAID updates

+readahead-introduce-pg_readahead.patch
+readahead-add-look-ahead-support-to-__do_page_cache_readahead.patch
+readahead-min_ra_pages-max_ra_pages-macros.patch
+readahead-data-structure-and-routines.patch
+readahead-on-demand-readahead-logic.patch
+readahead-convert-filemap-invocations.patch
+readahead-convert-splice-invocations.patch
+readahead-convert-ext3-ext4-invocations.patch
+readahead-remove-the-old-algorithm.patch
+mm-share-pg_readahead-and-pg_reclaim.patch
+mm-share-pg_readahead-and-pg_reclaim-fix.patch
+mm-share-pg_readahead-and-pg_reclaim-fix-2.patch

New, simplified readahead patchset

+fallocate-implementation-on-i86-x86_64-and-powerpc.patch
+fallocate-on-s390.patch
+fallocate-on-ia64.patch
+fallocate-on-ia64-fix.patch

fallocate() support

+cfs-scheduler.patch
+cfs-scheduler-vs-detach-schedh-from-mmh.patch
+cfs-scheduler-warning-fixes.patch

CFS CPU scheduler

+rename-gfp_high_movable-to-gfp_highuser_movable-prefetch.patch

Fix prefetch patches for other changes in -mm,

+reiser4-use-lzo-library-functions.patch

Teach reiser4 to use new generic LZO code

-mprotect-patch-for-use-by-slim.patch
-integrity-service-api-and-dummy-provider.patch
-slim-main-patch.patch
-slim-secfs-patch.patch
-slim-make-and-config-stuff.patch
-slim-debug-output.patch
-slim-integrity-patch.patch
-slim-documentation.patch
-integrity-new-hooks.patch
-integrity-fs-hook-placement.patch
-integrity-evm-as-an-integrity-service-provider.patch
-integrity-ima-integrity_measure-support.patch
-integrity-ima-identifiers.patch
-integrity-ima-cleanup.patch
-integrity-tpm-internal-kernel-interface.patch
-ibac-patch.patch

Dropped

-vdso-improve-print_fatal_signals-support-by-adding-memory-maps.patch
-vdso-print-fatal-signals-use-ctl_unnumbered.patch
-vdso-print-fatal-signals-fix-compiling-error-bug-in.patch

Dropped

+vdso-print-fatal-signals-fix.patch

Fix vdso-print-fatal-signals.patch

-git-gccbug-fixup.patch

Unneeded



All 901 patches:


ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/patch-list




2007-05-23 07:49:06

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007 00:42:33 -0700 Andrew Morton <[email protected]> wrote:

> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/

This is intermittently getting resume-from-RAM failures. It is not
sufficiently repeatable to be able to bisect.

[ 1381.119362] PM: Preparing system for mem sleep
[ 2331.798452] Stopping tasks ...
[ 2351.760431] Stopping kernel threads timed out after 20 seconds (2 tasks refusing to freeze):
[ 2351.762385] ksuspend_usbd
[ 2351.764374] khubd
[ 2351.766338] Restarting tasks ... done.

2007-05-23 09:17:21

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wednesday, 23 May 2007 09:48, Andrew Morton wrote:
> On Wed, 23 May 2007 00:42:33 -0700 Andrew Morton <[email protected]> wrote:
>
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
>
> This is intermittently getting resume-from-RAM failures. It is not
> sufficiently repeatable to be able to bisect.
>
> [ 1381.119362] PM: Preparing system for mem sleep
> [ 2331.798452] Stopping tasks ...
> [ 2351.760431] Stopping kernel threads timed out after 20 seconds (2 tasks refusing to freeze):
> [ 2351.762385] ksuspend_usbd
> [ 2351.764374] khubd
> [ 2351.766338] Restarting tasks ... done.

Hmm, that seems to be related to usb-fix-suspend-to-ram.patch (probably one of
the threads is waiting for a completion by some other thread that has been
frozen already).

Greetings,
Rafael

2007-05-23 09:48:37

by Michal Piotrowski

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

Hi,

Andrew Morton napisał(a):
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
>

Christoph, this looks like a bug in SLUB.

[ 16.232377] PM: Adding info for No Bus:vcs1
[ 16.237588] PM: Adding info for No Bus:vcsa1
[ 18.683210] PM: Adding info for No Bus:rtc
[ 18.687454] Real Time Clock Driver v1.12ac
[ 21.338686] BUG: unable to handle kernel paging request at virtual address 666d6172
[ 21.346626] printing eip:
[ 21.349451] c0180a78
[ 21.351731] *pde = 00000000
[ 21.354658] Oops: 0000 [#1]
[ 21.357618] PREEMPT SMP
[ 21.360280] Modules linked in: rtc unix
[ 21.364364] CPU: 0
[ 21.364366] EIP: 0060:[<c0180a78>] Not tainted VLI
[ 21.364369] EFLAGS: 00010046 (2.6.22-rc2-mm1 #7)
[ 21.377114] EIP is at __kmalloc_track_caller+0x72/0x9a

l *0xc0180a78
0xc0180a78 is in __kmalloc_track_caller (/home/devel/linux-mm/mm/slub.c:1509).
1504
1505 object = __slab_alloc(s, gfpflags, node, addr, page);
1506
1507 else {
1508 object = page->lockless_freelist;
1509 page->lockless_freelist = object[page->offset];
1510 }
1511 local_irq_restore(flags);
1512 return object;
1513 }

[ 21.382388] eax: 00000000 ebx: c5250ae8 ecx: c04a7078 edx: 00000000
[ 21.389363] esi: 666d6172 edi: 00000282 ebp: c7b9bd84 esp: c7b9bd68
[ 21.396346] ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
[ 21.402372] Process modprobe (pid: 635, ti=c7b9b000 task=c7ba8000 task.ti=c7b9b000)
[ 21.409994] Stack: c04e5580 c7b9bd78 c01bfd0f 000000d0 c7ae5ea4 00000000 c7ae5eac c7b9bda0
[ 21.418973] c016c583 00000008 c7ddd8c0 c7ae5ea4 00000000 c7ae5ea4 c7b9bdbc c01bfd0f
[ 21.427869] 00000002 41eddd90 c7ae5ea4 c7ddd8c0 c7ae5eac c7b9bde0 c01bfe9e 00000000
[ 21.436762] Call Trace:
[ 21.439527] [<c016c583>] kstrdup+0x2a/0x4b
[ 21.443922] [<c01bfd0f>] sysfs_new_dirent+0x23/0xb0
[ 21.449065] [<c01bfe9e>] create_dir+0x8a/0x189
[ 21.453789] [<c01bfffd>] sysfs_create_dir+0x60/0x7b
[ 21.458966] [<c020494c>] kobject_shadow_add+0xd7/0x189
[ 21.464454] [<c0204a08>] kobject_add+0xa/0xc
[ 21.469031] [<c0204b33>] kobject_register+0x1c/0x34
[ 21.474247] [<c0204c99>] kobject_kset_add_dir+0x4c/0x7b
[ 21.479806] [<c0204cd6>] kobject_add_dir+0xe/0x10
[ 21.484797] [<c014c40e>] mod_sysfs_setup+0x2d/0x93
[ 21.489918] [<c014d8c3>] load_module+0x1253/0x1485
[ 21.494977] [<c014db37>] sys_init_module+0x42/0x160
[ 21.500199] [<c0104112>] sysenter_past_esp+0x5f/0x99
[ 21.505458] [<b7fd0410>] 0xb7fd0410
[ 21.509231] =======================
[ 21.512980] INFO: lockdep is turned off.
[ 21.517062] Code: e8 de 64 09 00 85 c0 74 1b 89 5c 24 04 8b 45 ec 89 04 24 83 c9 ff 8b 55 f0 89 f0 e8 21 e2 ff ff 89 c6 eb 0d 8b 73 0c 0f b7 43 0a <8b> 04 86 89 43 0c f7 c7 00 02 00 00 75 09 57 9d e8 f7 17 fc ff
[ 21.538679] EIP: [<c0180a78>] __kmalloc_track_caller+0x72/0x9a SS:ESP 0068:c7b9bd68
[ 21.546678] BUG: sleeping function called from invalid context at /home/devel/linux-mm/kernel/rwsem.c:20
[ 21.556496] in_atomic():0, irqs_disabled():1
[ 21.560940] INFO: lockdep is turned off.
[ 21.565044] irq event stamp: 0
[ 21.568216] hardirqs last enabled at (0): [<00000000>] 0x0
[ 21.574035] hardirqs last disabled at (0): [<c012421f>] copy_process+0x52b/0x13f5
[ 21.581790] softirqs last enabled at (0): [<c012423d>] copy_process+0x549/0x13f5
[ 21.589613] softirqs last disabled at (0): [<00000000>] 0x0
[ 21.595445] [<c010523d>] dump_trace+0x63/0x1eb
[ 21.600197] [<c01053df>] show_trace_log_lvl+0x1a/0x2f
[ 21.605528] [<c010601d>] show_trace+0x12/0x14
[ 21.610152] [<c0106035>] dump_stack+0x16/0x18
[ 21.614827] [<c011f440>] __might_sleep+0xc9/0xcf
[ 21.619754] [<c013c019>] down_read+0x18/0x4c
[ 21.624329] [<c0155574>] acct_collect+0x3b/0x143
[ 21.629248] [<c0129281>] do_exit+0x26c/0x8ed
[ 21.633811] [<c01059ed>] die+0x201/0x227
[ 21.638014] [<c011ab7e>] do_page_fault+0x47c/0x55e
[ 21.643158] [<c03454ba>] error_code+0x72/0x78
[ 21.647814] [<c0180a78>] __kmalloc_track_caller+0x72/0x9a
[ 21.653492] [<c016c583>] kstrdup+0x2a/0x4b
[ 21.657912] [<c01bfd0f>] sysfs_new_dirent+0x23/0xb0
[ 21.663115] [<c01bfe9e>] create_dir+0x8a/0x189
[ 21.667868] [<c01bfffd>] sysfs_create_dir+0x60/0x7b
[ 21.673051] [<c020494c>] kobject_shadow_add+0xd7/0x189
[ 21.678500] [<c0204a08>] kobject_add+0xa/0xc
[ 21.683104] [<c0204b33>] kobject_register+0x1c/0x34
[ 21.688306] [<c0204c99>] kobject_kset_add_dir+0x4c/0x7b
[ 21.693851] [<c0204cd6>] kobject_add_dir+0xe/0x10
[ 21.698839] [<c014c40e>] mod_sysfs_setup+0x2d/0x93
[ 21.703911] [<c014d8c3>] load_module+0x1253/0x1485
[ 21.708990] [<c014db37>] sys_init_module+0x42/0x160
[ 21.714149] [<c0104112>] sysenter_past_esp+0x5f/0x99
[ 21.719400] [<b7fd0410>] 0xb7fd0410
[ 21.723145] =======================
[ 22.358839] eth0 renamed to eth1

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.22-rc2-mm1
# Wed May 23 10:31:49 2007
#
CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_QUICKLIST=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32

#
# General setup
#
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SWAP_PREFETCH=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
# CONFIG_TASK_XACCT is not set
# CONFIG_UTS_NS is not set
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=20
# CONFIG_CPUSETS is not set
# CONFIG_SYSFS_DEPRECATED is not set
CONFIG_RELAY=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_PROC_SMAPS=y
CONFIG_PROC_CLEAR_REFS=y
CONFIG_PROC_PAGEMAP=y
CONFIG_PROC_KPAGEMAP=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_KMOD=y
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_LSF is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=m
CONFIG_IOSCHED_DEADLINE=m
CONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"

#
# Processor type and features
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_SMP=y
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_PARAVIRT is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MCORE2 is not set
CONFIG_MPENTIUM4=y
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_X86_GENERIC is not set
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_X86_XADD=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_TSC=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=4
# CONFIG_HPET_TIMER is not set
CONFIG_NR_CPUS=2
CONFIG_SCHED_SMT=y
# CONFIG_SCHED_MC is not set
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_NONFATAL=m
CONFIG_X86_MCE_P4THERMAL=y
CONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_X86_REBOOTFIXUPS is not set
CONFIG_MICROCODE=m
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m

#
# Firmware Drivers
#
# CONFIG_EDD is not set
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not set
CONFIG_DMIID=y
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_SPARSEMEM_STATIC=y
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_NR_QUICK=1
# CONFIG_HIGHPTE is not set
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
CONFIG_IRQBALANCE=y
# CONFIG_SECCOMP is not set
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
CONFIG_KEXEC=y
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x100000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x100000
CONFIG_HOTPLUG_CPU=y
# CONFIG_COMPAT_VDSO is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
CONFIG_PM_DEBUG=y
# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
CONFIG_PM_TRACE=y
# CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_SOFTWARE_SUSPEND=y
CONFIG_PM_STD_PARTITION="/dev/sda2"
CONFIG_SUSPEND_SMP=y
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
# CONFIG_ACPI_SLEEP_PROC_SLEEP is not set
# CONFIG_ACPI_PROCFS is not set
# CONFIG_ACPI_AC is not set
# CONFIG_ACPI_BATTERY is not set
# CONFIG_ACPI_BUTTON is not set
# CONFIG_ACPI_VIDEO is not set
CONFIG_ACPI_FAN=m
# CONFIG_ACPI_DOCK is not set
CONFIG_ACPI_PROCESSOR=m
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ACPI_THERMAL=m
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=m
# CONFIG_ACPI_SBS is not set
# CONFIG_APM is not set

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m

#
# CPUFreq processor drivers
#
# CONFIG_X86_ACPI_CPUFREQ is not set
# CONFIG_X86_POWERNOW_K6 is not set
# CONFIG_X86_POWERNOW_K7 is not set
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_GX_SUSPMOD is not set
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_SPEEDSTEP_ICH is not set
# CONFIG_X86_SPEEDSTEP_SMI is not set
CONFIG_X86_P4_CLOCKMOD=m
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_LONGHAUL is not set
# CONFIG_X86_E_POWERSAVER is not set

#
# shared options
#
CONFIG_X86_SPEEDSTEP_LIB=m

#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
# CONFIG_PCIEPORTBUS is not set
CONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not set
# CONFIG_PCI_DEBUG is not set
# CONFIG_HT_IRQ is not set
CONFIG_ISA_DMA_API=y
# CONFIG_ISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
# CONFIG_PCCARD is not set
# CONFIG_HOTPLUG_PCI is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_MISC=m

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=m
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=m
CONFIG_XFRM=y
CONFIG_XFRM_USER=m
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
CONFIG_NET_KEY=m
# CONFIG_NET_KEY_MIGRATE is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IP_VS is not set
CONFIG_IPV6=m
# CONFIG_IPV6_PRIVACY is not set
# CONFIG_IPV6_ROUTER_PREF is not set
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
# CONFIG_INET6_AH is not set
# CONFIG_INET6_ESP is not set
# CONFIG_INET6_IPCOMP is not set
# CONFIG_IPV6_MIP6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
# CONFIG_INET6_XFRM_MODE_BEET is not set
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
# CONFIG_IPV6_SIT is not set
# CONFIG_IPV6_TUNNEL is not set
# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETLABEL is not set
CONFIG_NETWORK_SECMARK=y
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set

#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK_ENABLED=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_CT_ACCT=y
CONFIG_NF_CONNTRACK_MARK=y
# CONFIG_NF_CONNTRACK_SECMARK is not set
# CONFIG_NF_CONNTRACK_EVENTS is not set
CONFIG_NF_CT_PROTO_GRE=m
CONFIG_NF_CT_PROTO_SCTP=m
CONFIG_NF_CONNTRACK_AMANDA=m
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=m
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
CONFIG_NF_CONNTRACK_PPTP=m
CONFIG_NF_CONNTRACK_SANE=m
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=m
CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
CONFIG_NETFILTER_XT_TARGET_DSCP=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
CONFIG_NETFILTER_XT_TARGET_SECMARK=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_SCTP=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m

#
# IP: Netfilter Configuration
#
CONFIG_NF_CONNTRACK_IPV4=m
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_IPRANGE=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_MATCH_ADDRTYPE=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_SAME=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_TFTP=m
CONFIG_NF_NAT_AMANDA=m
CONFIG_NF_NAT_PPTP=m
CONFIG_NF_NAT_H323=m
CONFIG_NF_NAT_SIP=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m

#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
CONFIG_NF_CONNTRACK_IPV6=m
# CONFIG_IP6_NF_QUEUE is not set
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_OWNER=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_MH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_LOG=m
CONFIG_IP6_NF_TARGET_REJECT=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_RAW=m
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set

#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
CONFIG_NET_CLS_ROUTE=y

#
# Network testing
#
CONFIG_NET_PKTGEN=m
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set

#
# Wireless
#
# CONFIG_CFG80211 is not set
# CONFIG_WIRELESS_EXT is not set
# CONFIG_MAC80211 is not set
# CONFIG_IEEE80211 is not set
# CONFIG_RFKILL is not set

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=m
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
# CONFIG_PARPORT_SERIAL is not set
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_GSC is not set
# CONFIG_PARPORT_AX88796 is not set
CONFIG_PARPORT_1284=y
CONFIG_PNP=y
# CONFIG_PNP_DEBUG is not set

#
# Protocols
#
CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_CDROM_PKTCDVD_WCACHE=y
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_MISC_STRANGE_DEV is not set
CONFIG_TIFM_CORE=m
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
CONFIG_BLK_DEV_IDECD=m
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
CONFIG_BLK_DEV_IDEACPI=y
CONFIG_IDE_TASK_IOCTL=y
# CONFIG_IDE_PROC_FS is not set

#
# IDE chipset support/bugfixes
#
CONFIG_IDE_GENERIC=y
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_IDEPNP is not set
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
CONFIG_IDEPCI_PCIBUS_ORDER=y
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=y
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
# CONFIG_IDEDMA_ONLYDISK is not set
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_CS5535 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_JMICRON is not set
# CONFIG_BLK_DEV_SC1200 is not set
CONFIG_BLK_DEV_PIIX=y
# CONFIG_BLK_DEV_IT8213 is not set
# CONFIG_BLK_DEV_IT821X is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_BLK_DEV_TC86C001 is not set
# CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
# CONFIG_CHR_DEV_SG is not set
# CONFIG_CHR_DEV_SCH is not set

#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set
CONFIG_SCSI_WAIT_SCAN=m

#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_LOWLEVEL is not set
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_ATA_ACPI=y
# CONFIG_SATA_AHCI is not set
# CONFIG_SATA_SVW is not set
CONFIG_ATA_PIIX=y
# CONFIG_SATA_MV is not set
# CONFIG_SATA_NV is not set
# CONFIG_PDC_ADMA is not set
# CONFIG_SATA_QSTOR is not set
# CONFIG_SATA_PROMISE is not set
# CONFIG_SATA_SX4 is not set
# CONFIG_SATA_SIL is not set
# CONFIG_SATA_SIL24 is not set
# CONFIG_SATA_SIS is not set
# CONFIG_SATA_ULI is not set
# CONFIG_SATA_VIA is not set
# CONFIG_SATA_VITESSE is not set
# CONFIG_SATA_INIC162X is not set
# CONFIG_PATA_ALI is not set
# CONFIG_PATA_AMD is not set
# CONFIG_PATA_ARTOP is not set
# CONFIG_PATA_ATIIXP is not set
# CONFIG_PATA_CMD640_PCI is not set
# CONFIG_PATA_CMD64X is not set
# CONFIG_PATA_CS5520 is not set
# CONFIG_PATA_CS5530 is not set
# CONFIG_PATA_CS5535 is not set
# CONFIG_PATA_CYPRESS is not set
# CONFIG_PATA_EFAR is not set
# CONFIG_ATA_GENERIC is not set
# CONFIG_PATA_HPT366 is not set
# CONFIG_PATA_HPT37X is not set
# CONFIG_PATA_HPT3X2N is not set
# CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_IT8213 is not set
# CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_TRIFLEX is not set
# CONFIG_PATA_MARVELL is not set
# CONFIG_PATA_MPIIX is not set
# CONFIG_PATA_OLDPIIX is not set
# CONFIG_PATA_NETCELL is not set
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_SC1200 is not set
# CONFIG_PATA_SERVERWORKS is not set
# CONFIG_PATA_PDC2027X is not set
# CONFIG_PATA_SIL680 is not set
# CONFIG_PATA_SIS is not set
# CONFIG_PATA_VIA is not set
# CONFIG_PATA_WINBOND is not set
CONFIG_MD=y
CONFIG_BLK_DEV_MD=y
# CONFIG_MD_LINEAR is not set
CONFIG_MD_RAID0=y
CONFIG_MD_RAID1=y
# CONFIG_MD_RAID10 is not set
# CONFIG_MD_RAID456 is not set
# CONFIG_MD_MULTIPATH is not set
# CONFIG_MD_FAULTY is not set
# CONFIG_BLK_DEV_DM is not set

#
# Fusion MPT device support
#
# CONFIG_FUSION is not set
# CONFIG_FUSION_SPI is not set
# CONFIG_FUSION_FC is not set
# CONFIG_FUSION_SAS is not set
# CONFIG_IEEE1394_SUPPORT is not set
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
# CONFIG_NET_SB1000 is not set
# CONFIG_ARCNET is not set
# CONFIG_PHYLIB is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_B44 is not set
# CONFIG_FORCEDETH is not set
# CONFIG_DGRS is not set
# CONFIG_EEPRO100 is not set
# CONFIG_E100 is not set
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_8139CP is not set
CONFIG_8139TOO=y
CONFIG_8139TOO_PIO=y
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
# CONFIG_8139_OLD_RX_RESET is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_SC92031 is not set
# CONFIG_NET_POCKET is not set
CONFIG_NETDEV_1000=y
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
CONFIG_SKGE=y
# CONFIG_SKY2 is not set
# CONFIG_SK98LIN is not set
# CONFIG_VIA_VELOCITY is not set
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set

#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
# CONFIG_WLAN_80211 is not set
# CONFIG_RTL818X is not set

#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET_MII is not set
# CONFIG_USB_USBNET is not set
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
CONFIG_NETCONSOLE=y
CONFIG_NETPOLL=y
# CONFIG_NETPOLL_TRAP is not set
CONFIG_NET_POLL_CONTROLLER=y
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=m
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_NOZOMI is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_PRINTER=y
CONFIG_LP_CONSOLE=y
# CONFIG_PPDEV is not set
# CONFIG_TIPAR is not set
# CONFIG_IPMI_HANDLER is not set
CONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set

#
# Watchdog Device Drivers
#
# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_ACQUIRE_WDT is not set
# CONFIG_ADVANTECH_WDT is not set
# CONFIG_ALIM1535_WDT is not set
# CONFIG_ALIM7101_WDT is not set
# CONFIG_SC520_WDT is not set
# CONFIG_EUROTECH_WDT is not set
# CONFIG_IB700_WDT is not set
# CONFIG_IBMASR is not set
# CONFIG_WAFER_WDT is not set
# CONFIG_I6300ESB_WDT is not set
# CONFIG_ITCO_WDT is not set
# CONFIG_SC1200_WDT is not set
# CONFIG_PC87413_WDT is not set
# CONFIG_60XX_WDT is not set
# CONFIG_SBC8360_WDT is not set
# CONFIG_CPU5_WDT is not set
# CONFIG_SMSC37B787_WDT is not set
# CONFIG_W83627HF_WDT is not set
# CONFIG_W83697HF_WDT is not set
# CONFIG_W83877F_WDT is not set
# CONFIG_W83977F_WDT is not set
# CONFIG_MACHZ_WDT is not set
# CONFIG_SBC_EPX_C3_WATCHDOG is not set

#
# PCI-based Watchdog Cards
#
# CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not set

#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not set
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_INTEL=y
# CONFIG_HW_RANDOM_AMD is not set
# CONFIG_HW_RANDOM_GEODE is not set
# CONFIG_HW_RANDOM_VIA is not set
CONFIG_NVRAM=m
CONFIG_RTC=m
CONFIG_GEN_RTC=m
CONFIG_GEN_RTC_X=y
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
CONFIG_AGP=m
# CONFIG_AGP_ALI is not set
# CONFIG_AGP_ATI is not set
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
CONFIG_AGP_INTEL=m
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
# CONFIG_AGP_VIA is not set
# CONFIG_AGP_EFFICEON is not set
# CONFIG_DRM is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
# CONFIG_CS5535_GPIO is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HPET is not set
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=m

#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_ALGOPCF is not set
# CONFIG_I2C_ALGOPCA is not set

#
# I2C Hardware Bus support
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
# CONFIG_I2C_ALI15X3 is not set
# CONFIG_I2C_AMD756 is not set
# CONFIG_I2C_AMD8111 is not set
CONFIG_I2C_I801=m
CONFIG_I2C_I810=m
# CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set
# CONFIG_I2C_SAVAGE4 is not set
# CONFIG_I2C_SIMTEC is not set
# CONFIG_SCx200_ACB is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not set
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_TINY_USB is not set
# CONFIG_I2C_VIA is not set
# CONFIG_I2C_VIAPRO is not set
# CONFIG_I2C_VOODOO3 is not set

#
# Miscellaneous I2C Chip support
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
# CONFIG_DS1682 is not set
# CONFIG_SENSORS_EEPROM is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set

#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
CONFIG_HWMON=y
CONFIG_HWMON_VID=y
# CONFIG_SENSORS_ABITUGURU is not set
# CONFIG_SENSORS_AD7418 is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set
# CONFIG_SENSORS_ADM1029 is not set
# CONFIG_SENSORS_ADM1031 is not set
# CONFIG_SENSORS_ADM9240 is not set
# CONFIG_SENSORS_K8TEMP is not set
# CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_F71805F is not set
# CONFIG_SENSORS_FSCHER is not set
# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_CORETEMP is not set
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_LM63 is not set
# CONFIG_SENSORS_LM75 is not set
# CONFIG_SENSORS_LM77 is not set
# CONFIG_SENSORS_LM78 is not set
# CONFIG_SENSORS_LM80 is not set
# CONFIG_SENSORS_LM83 is not set
# CONFIG_SENSORS_LM85 is not set
# CONFIG_SENSORS_LM87 is not set
# CONFIG_SENSORS_LM90 is not set
# CONFIG_SENSORS_LM92 is not set
# CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_MAX6650 is not set
# CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_PC87427 is not set
# CONFIG_SENSORS_SIS5595 is not set
# CONFIG_SENSORS_DME1737 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_VT1211 is not set
# CONFIG_SENSORS_VT8231 is not set
# CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83791D is not set
# CONFIG_SENSORS_W83792D is not set
# CONFIG_SENSORS_W83793 is not set
# CONFIG_SENSORS_W83L785TS is not set
CONFIG_SENSORS_W83627HF=y
# CONFIG_SENSORS_W83627EHF is not set
# CONFIG_SENSORS_HDAPS is not set
# CONFIG_SENSORS_APPLESMC is not set
# CONFIG_HWMON_DEBUG_CHIP is not set

#
# Sonics Silicon Backplane
#
# CONFIG_SSB is not set

#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_DVB_CORE is not set
# CONFIG_DAB is not set

#
# Graphics support
#
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_LCD_CLASS_DEVICE is not set
# CONFIG_BACKLIGHT_PROGEAR is not set

#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set
CONFIG_VGASTATE=y
CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_DDC=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_SYS_FOPS is not set
CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y

#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ARC is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_VGA16 is not set
# CONFIG_FB_VESA is not set
# CONFIG_FB_HECUBA is not set
# CONFIG_FB_HGA is not set
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_NVIDIA=y
CONFIG_FB_NVIDIA_I2C=y
# CONFIG_FB_NVIDIA_DEBUG is not set
CONFIG_FB_NVIDIA_BACKLIGHT=y
# CONFIG_FB_RIVA is not set
# CONFIG_FB_I810 is not set
# CONFIG_FB_LE80578 is not set
# CONFIG_FB_INTEL is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_CYBLA is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_GEODE is not set
# CONFIG_FB_VIRTUAL is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
CONFIG_VIDEO_SELECT=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_SOUND=m
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_RTCTIMER=m
CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
CONFIG_SND_DYNAMIC_MINORS=y
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
CONFIG_SND_AC97_CODEC=m
CONFIG_SND_GENERIC_DRIVERS=y
CONFIG_SND_DUMMY=m
CONFIG_SND_VIRMIDI=m
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_MTS64 is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set
# CONFIG_SND_PORTMAN2X4 is not set
CONFIG_SND_PCI_DRIVERS=y
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5535AUDIO is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not set
# CONFIG_SND_HDA_INTEL is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
CONFIG_SND_INTEL8X0=m
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_AC97_POWER_SAVE is not set
# CONFIG_SND_USB_DRIVERS is not set
# CONFIG_SND_SOC_DRIVERS is not set
# CONFIG_SOUND_PRIME is not set
CONFIG_AC97_BUS=m

#
# HID Devices
#
CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
# CONFIG_HIDRAW is not set

#
# USB Input Devices
#
CONFIG_USB_HID=y
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
# CONFIG_HID_FF is not set
# CONFIG_USB_HIDDEV is not set
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set

#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_DEVICE_CLASS is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_SUSPEND is not set
# CONFIG_USB_OTG is not set

#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_SPLIT_ISO is not set
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
# CONFIG_USB_EHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
CONFIG_USB_UHCI_HCD=y
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set

#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#

#
# may also be needed; see USB_STORAGE Help for more information
#
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_DPCM=y
CONFIG_USB_STORAGE_USBAT=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_STORAGE_ALAUDA=y
# CONFIG_USB_STORAGE_KARMA is not set
CONFIG_USB_LIBUSUAL=y

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USB_MON is not set

#
# USB port drivers
#
# CONFIG_USB_USS720 is not set

#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_BERRY_CHARGE is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGET is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_GOTEMP is not set

#
# USB DSL modem support
#

#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
CONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set
# CONFIG_MMC_PASSWORDS is not set

#
# MMC/SD Card Drivers
#
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_BOUNCE=y

#
# MMC/SD Host Controller Drivers
#
CONFIG_MMC_SDHCI=m
CONFIG_MMC_WBSD=m
CONFIG_MMC_TIFM_SD=m
# CONFIG_NEW_LEDS is not set
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set

#
# Real Time Clock
#
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set

#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
CONFIG_RTC_DRV_TEST=y

#
# I2C RTC drivers
#
# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set

#
# SPI RTC drivers
#

#
# Platform RTC drivers
#
# CONFIG_RTC_DRV_CMOS is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_V3020 is not set

#
# on-CPU RTC drivers
#

#
# DMA Engine support
#
# CONFIG_DMA_ENGINE is not set

#
# DMA Clients
#

#
# DMA Devices
#
# CONFIG_AUXDISPLAY is not set
# CONFIG_VIRTUALIZATION is not set

#
# Userspace I/O
#
# CONFIG_UIO is not set

#
# File systems
#
CONFIG_EXT2_FS=m
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
CONFIG_EXT2_FS_XIP=y
CONFIG_FS_XIP=y
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT4DEV_FS=m
CONFIG_EXT4DEV_FS_XATTR=y
CONFIG_EXT4DEV_FS_POSIX_ACL=y
CONFIG_EXT4DEV_FS_SECURITY=y
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_JBD2=m
CONFIG_JBD2_DEBUG=y
CONFIG_FS_MBCACHE=y
CONFIG_REISER4_FS=m
# CONFIG_REISER4_DEBUG is not set
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
CONFIG_REISERFS_PROC_INFO=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
CONFIG_JFS_FS=m
CONFIG_JFS_POSIX_ACL=y
CONFIG_JFS_SECURITY=y
# CONFIG_JFS_DEBUG is not set
CONFIG_JFS_STATISTICS=y
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=m
CONFIG_XFS_QUOTA=y
CONFIG_XFS_SECURITY=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_XFS_RT=y
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_QUOTA=y
# CONFIG_QFMT_V1 is not set
CONFIG_QFMT_V2=m
CONFIG_QUOTACTL=y
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
CONFIG_AUTOFS4_FS=m
CONFIG_FUSE_FS=m
CONFIG_GENERIC_ACL=y

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_UDF_FS=m
CONFIG_UDF_NLS=y

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_NTFS_FS=m
# CONFIG_NTFS_DEBUG is not set
CONFIG_NTFS_RW=y

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
CONFIG_CONFIGFS_FS=m

#
# Layered filesystems
#
CONFIG_ECRYPT_FS=m
CONFIG_UNION_FS=m
CONFIG_UNION_FS_XATTR=y

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set

#
# Network File Systems
#
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
# CONFIG_NFSD_V4 is not set
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# CONFIG_SUNRPC_BIND34 is not set
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
# CONFIG_9P_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y

#
# Native Language Support
#
CONFIG_NLS=m
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=m
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
CONFIG_NLS_CODEPAGE_852=m
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
CONFIG_NLS_CODEPAGE_1250=m
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=m

#
# Distributed Lock Manager
#
# CONFIG_DLM is not set
CONFIG_INSTRUMENTATION=y
CONFIG_PROFILING=y
CONFIG_OPROFILE=m
# CONFIG_KPROBES is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
CONFIG_PAGE_OWNER=y
CONFIG_DEBUG_FS=y
CONFIG_HEADERS_CHECK=y
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_SHIRQ=y
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_SCHEDSTATS=y
CONFIG_TIMER_STATS=y
CONFIG_DEBUG_PREEMPT=y
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
CONFIG_RT_MUTEX_TESTER=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
CONFIG_DEBUG_LOCKDEP=y
CONFIG_TRACE_IRQFLAGS=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_DEBUG_LOCKING_API_SELFTESTS=y
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_HIGHMEM=y
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_VM=y
CONFIG_DEBUG_LIST=y
CONFIG_FRAME_POINTER=y
CONFIG_UNWIND_INFO=y
CONFIG_STACK_UNWIND=y
CONFIG_PROFILE_LIKELY=y
CONFIG_FORCED_INLINING=y
CONFIG_DEBUG_SYNCHRO_TEST=m
CONFIG_RCU_TORTURE_TEST=m
# CONFIG_FAULT_INJECTION is not set
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_DEBUG_STACK_USAGE=y

#
# Page alloc debug is incompatible with Software Suspend on i386
#
CONFIG_DEBUG_RODATA=y
CONFIG_4KSTACKS=y
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y
CONFIG_DOUBLEFAULT=y

#
# Security options
#
CONFIG_KEYS=y
CONFIG_KEYS_DEBUG_PROC_KEYS=y
CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
# CONFIG_SECURITY_NETWORK_XFRM is not set
CONFIG_SECURITY_CAPABILITIES=y
CONFIG_SECURITY_FILE_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG is not set
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
CONFIG_SECURITY_SELINUX_DISABLE=y
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT is not set
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=m
CONFIG_CRYPTO_ABLKCIPHER=m
CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_HASH=m
CONFIG_CRYPTO_MANAGER=m
CONFIG_CRYPTO_HMAC=m
CONFIG_CRYPTO_XCBC=m
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=m
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_LRW=m
CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
CONFIG_CRYPTO_TWOFISH_586=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_AES_586=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_PADLOCK is not set
# CONFIG_CRYPTO_DEV_GEODE is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
CONFIG_AUDIT_GENERIC=y
CONFIG_LZO=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
# CONFIG_ASYNC_CORE is not set
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_X86_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_KTIME_SCALAR=y

Regards,
Michal

--
Michal K. K. Piotrowski
Kernel Monkeys
(http://kernel.wikidot.com/start)

2007-05-23 12:01:35

by Gabriel C

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
>

I get this on boot :

[ 0.333581] BUG: at include/linux/slub_def.h:83 kmalloc_index()
[ 0.333587] [<c0104eb7>] show_trace_log_lvl+0x1a/0x2f
[ 0.333601] [<c0105a76>] show_trace+0x12/0x14
[ 0.333606] [<c0105a8e>] dump_stack+0x16/0x18
[ 0.333611] [<c0170d1c>] get_slab+0x48/0x138
[ 0.333621] [<c0170e8d>] __kmalloc+0x11/0x66
[ 0.333626] [<c0283c66>] get_modalias+0x5e/0xee
[ 0.333635] [<c0283d3f>] dmi_dev_uevent+0x2a/0x3f
[ 0.333641] [<c0241a7b>] dev_uevent+0x1ad/0x1da
[ 0.333650] [<c01d11fe>] kobject_uevent_env+0x200/0x3ff
[ 0.333658] [<c01d1407>] kobject_uevent+0xa/0xf
[ 0.333664] [<c02416fc>] device_add+0x283/0x440
[ 0.333669] [<c02418cb>] device_register+0x12/0x15
[ 0.333675] [<c0424558>] dmi_id_init+0x256/0x26c
[ 0.333684] [<c0409516>] kernel_init+0x156/0x2c1
[ 0.333692] [<c0104b33>] kernel_thread_helper+0x7/0x10
[ 0.333698] =======================


http://crazy.dev.frugalware.org/2.6.22-rc2-mm1/config-2.6.22-rc2-mm1
http://crazy.dev.frugalware.org/2.6.22-rc2-mm1/dmesg

Regards,

Gabriel

2007-05-23 14:47:20

by Alan Stern

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007, Rafael J. Wysocki wrote:

> On Wednesday, 23 May 2007 09:48, Andrew Morton wrote:
> > On Wed, 23 May 2007 00:42:33 -0700 Andrew Morton <[email protected]> wrote:
> >
> > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
> >
> > This is intermittently getting resume-from-RAM failures. It is not
> > sufficiently repeatable to be able to bisect.
> >
> > [ 1381.119362] PM: Preparing system for mem sleep
> > [ 2331.798452] Stopping tasks ...
> > [ 2351.760431] Stopping kernel threads timed out after 20 seconds (2 tasks refusing to freeze):
> > [ 2351.762385] ksuspend_usbd
> > [ 2351.764374] khubd
> > [ 2351.766338] Restarting tasks ... done.
>
> Hmm, that seems to be related to usb-fix-suspend-to-ram.patch (probably one of
> the threads is waiting for a completion by some other thread that has been
> frozen already).

Is it possible to get an Alt-SysRq-T stack trace during those 20
seconds? Knowing what those threads are waiting for would be a big
help.

Alan Stern

2007-05-23 15:01:39

by William Lee Irwin III

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, May 23, 2007 at 12:42:33AM -0700, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
> - A new readahead patch series. This needs serious review and performance
> testing please.
> - Added Ingo's CFS CPU scheduler
> - Xen dom-U support is now in the x86 tree.

The build fails with the following error when CONFIG_X86_MCE is not set:
arch/x86_64/kernel/built-in.o: In function `do_notify_resume':
/mnt/g/mm-2.6.22-rc2/arch/x86_64/kernel/signal.c:478: undefined reference to `mce_notify_user'
The following patch #ifdef's the offending call as a minimal fix.

Signed-off-by: William Irwin <[email protected]>

Index: mm-2.6.22-rc2/arch/x86_64/kernel/signal.c
===================================================================
--- mm-2.6.22-rc2.orig/arch/x86_64/kernel/signal.c 2007-05-23 07:41:49.741705813 -0700
+++ mm-2.6.22-rc2/arch/x86_64/kernel/signal.c 2007-05-23 07:44:35.339142673 -0700
@@ -473,9 +473,11 @@
clear_thread_flag(TIF_SINGLESTEP);
}

+#ifdef CONFIG_X86_MCE
/* notify userspace of pending MCEs */
if (thread_info_flags & _TIF_MCE_NOTIFY)
mce_notify_user();
+#endif /* CONFIG_X86_MCE */

/* deal with pending signal delivery */
if (thread_info_flags & (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK))

2007-05-23 15:28:06

by William Lee Irwin III

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, May 23, 2007 at 12:42:33AM -0700, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
> - A new readahead patch series. This needs serious review and performance
> testing please.
> - Added Ingo's CFS CPU scheduler
> - Xen dom-U support is now in the x86 tree.

CONFIG_SPARSEMEM sans CONFIG_MEMORY_HOTPLUG trips the following warning:
mm/sparse.c:254: warning: '__kmalloc_section_usemap' defined but not used
The following patch silences it.

Signed-off-by: William Irwin <[email protected]>

Index: mm-2.6.22-rc2/mm/sparse.c
===================================================================
--- mm-2.6.22-rc2.orig/mm/sparse.c 2007-05-23 08:11:48.788227631 -0700
+++ mm-2.6.22-rc2/mm/sparse.c 2007-05-23 08:12:29.274534814 -0700
@@ -250,10 +250,12 @@
return size_bytes;
}

+#ifdef CONFIG_MEMORY_HOTPLUG
static unsigned long *__kmalloc_section_usemap(void)
{
return kmalloc(usemap_size(), GFP_KERNEL);
}
+#endif /* CONFIG_MEMORY_HOTPLUG */

static unsigned long *sparse_early_usemap_alloc(unsigned long pnum)
{

2007-05-23 15:55:37

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007 10:47:04 -0400 (EDT) Alan Stern <[email protected]> wrote:

> On Wed, 23 May 2007, Rafael J. Wysocki wrote:
>
> > On Wednesday, 23 May 2007 09:48, Andrew Morton wrote:
> > > On Wed, 23 May 2007 00:42:33 -0700 Andrew Morton <[email protected]> wrote:
> > >
> > > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
> > >
> > > This is intermittently getting resume-from-RAM failures. It is not
> > > sufficiently repeatable to be able to bisect.
> > >
> > > [ 1381.119362] PM: Preparing system for mem sleep
> > > [ 2331.798452] Stopping tasks ...
> > > [ 2351.760431] Stopping kernel threads timed out after 20 seconds (2 tasks refusing to freeze):
> > > [ 2351.762385] ksuspend_usbd
> > > [ 2351.764374] khubd
> > > [ 2351.766338] Restarting tasks ... done.
> >
> > Hmm, that seems to be related to usb-fix-suspend-to-ram.patch (probably one of
> > the threads is waiting for a completion by some other thread that has been
> > frozen already).
>
> Is it possible to get an Alt-SysRq-T stack trace during those 20
> seconds? Knowing what those threads are waiting for would be a big
> help.
>

We can do this?

--- a/kernel/power/process.c~freezer-run-show_state-when-freezing-times-out
+++ a/kernel/power/process.c
@@ -157,6 +157,7 @@ static unsigned int try_to_freeze_tasks(
freeze_user_space ? "user space processes" :
"kernel threads",
TIMEOUT / HZ, todo);
+ show_state();
read_lock(&tasklist_lock);
do_each_thread(g, p) {
if (freeze_user_space && !is_user_space(p))
_

but it generates an awful lot of output.

The trace is at http://userweb.kernel.org/~akpm/tasks.txt. Interesting
bits are

[ 144.201264] khubd D 00400005 0 160 2 (L-TLB)
[ 144.204358] c207fe78 00000046 90399a85 00400005 00000246 c207fe60 c25b0cc4 c206f4cc
[ 144.204539] 00000286 00000000 769e4cea 0040000a 90399a85 00400005 c32713c0 c207fed4
[ 144.207754] 00000001 c207fe94 c207febc c02e8e1b 00000000 00000000 00000000 00000000
[ 144.210934] Call Trace:
[ 144.217012] [<c02e8e1b>] wait_for_completion+0x68/0x91
[ 144.220090] [<c011824f>] default_wake_function+0x0/0x9
[ 144.223158] [<c0127a41>] flush_cpu_workqueue+0x4d/0x55
[ 144.226223] [<c0127a69>] wq_barrier_func+0x0/0x8
[ 144.229269] [<c026343d>] usb_release_dev+0x28/0x63
[ 144.232340] [<c0233011>] device_release+0x37/0x7c
[ 144.235431] [<c01cb6c7>] kobject_cleanup+0x3d/0x54
[ 144.238520] [<c01cb6de>] kobject_release+0x0/0x8
[ 144.241631] [<c01cc2a7>] kref_put+0x75/0x82
[ 144.244699] [<c0265482>] hub_thread+0x376/0xa74
[ 144.247768] [<c01180c2>] pick_next_task_fair+0xf2/0x12a
[ 144.250815] [<c0116af1>] __wake_up_common+0x31/0x4f
[ 144.253864] [<c012a259>] autoremove_wake_function+0x0/0x35
[ 144.256902] [<c026510c>] hub_thread+0x0/0xa74
[ 144.259944] [<c012a102>] kthread+0x36/0x5c
[ 144.262891] [<c012a0cc>] kthread+0x0/0x5c
[ 144.265757] [<c010464b>] kernel_thread_helper+0x7/0x10
[ 144.268716] =======================


[ 144.137704] ksuspend_usbd D 00400005 0 157 2 (L-TLB)
[ 144.140830] c2085f18 00000046 9072767a 00400005 c20626f0 c010449b c3182118 c206288c
[ 144.141011] c3182120 c3182120 76d728df 0040000a 9072767a 00400005 c3271200 c3182118
[ 144.144263] c3182120 00000246 c20626f0 c02ea1c9 00000000 00000000 00000000 00000000
[ 144.147576] Call Trace:
[ 144.153929] [<c010449b>] common_interrupt+0x23/0x28
[ 144.157245] [<c02ea1c9>] __down+0xba/0xc6
[ 144.160528] [<c011824f>] default_wake_function+0x0/0x9
[ 144.163832] [<c02664fc>] hcd_resume_work+0x0/0x43
[ 144.167126] [<c02e9fd3>] __down_failed+0x7/0xc
[ 144.170372] [<c0266518>] hcd_resume_work+0x1c/0x43
[ 144.173603] [<c01278cf>] run_workqueue+0x6d/0xdf
[ 144.176780] [<c0127b4c>] worker_thread+0x0/0xd0
[ 144.179885] [<c0127b4c>] worker_thread+0x0/0xd0
[ 144.182930] [<c0127c12>] worker_thread+0xc6/0xd0
[ 144.185964] [<c012a259>] autoremove_wake_function+0x0/0x35
[ 144.189056] [<c012a102>] kthread+0x36/0x5c
[ 144.192118] [<c012a0cc>] kthread+0x0/0x5c
[ 144.195153] [<c010464b>] kernel_thread_helper+0x7/0x10

2007-05-23 16:02:07

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007 14:01:09 +0200 Gabriel C <[email protected]> wrote:

> Andrew Morton wrote:
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
> >
>
> I get this on boot :
>
> [ 0.333581] BUG: at include/linux/slub_def.h:83 kmalloc_index()
> [ 0.333587] [<c0104eb7>] show_trace_log_lvl+0x1a/0x2f
> [ 0.333601] [<c0105a76>] show_trace+0x12/0x14
> [ 0.333606] [<c0105a8e>] dump_stack+0x16/0x18
> [ 0.333611] [<c0170d1c>] get_slab+0x48/0x138
> [ 0.333621] [<c0170e8d>] __kmalloc+0x11/0x66
> [ 0.333626] [<c0283c66>] get_modalias+0x5e/0xee
> [ 0.333635] [<c0283d3f>] dmi_dev_uevent+0x2a/0x3f
> [ 0.333641] [<c0241a7b>] dev_uevent+0x1ad/0x1da
> [ 0.333650] [<c01d11fe>] kobject_uevent_env+0x200/0x3ff
> [ 0.333658] [<c01d1407>] kobject_uevent+0xa/0xf
> [ 0.333664] [<c02416fc>] device_add+0x283/0x440
> [ 0.333669] [<c02418cb>] device_register+0x12/0x15
> [ 0.333675] [<c0424558>] dmi_id_init+0x256/0x26c
> [ 0.333684] [<c0409516>] kernel_init+0x156/0x2c1
> [ 0.333692] [<c0104b33>] kernel_thread_helper+0x7/0x10
> [ 0.333698] =======================
>
>
> http://crazy.dev.frugalware.org/2.6.22-rc2-mm1/config-2.6.22-rc2-mm1
> http://crazy.dev.frugalware.org/2.6.22-rc2-mm1/dmesg
>

yup, thanks. David Airlie has said he'll look into this soon. It is
a harmless warning.

2007-05-23 16:08:08

by William Lee Irwin III

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, May 23, 2007 at 12:42:33AM -0700, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
> - A new readahead patch series. This needs serious review and performance
> testing please.
> - Added Ingo's CFS CPU scheduler
> - Xen dom-U support is now in the x86 tree.

WARNING: arch/i386/mach-generic/built-in.o(.data+0xc4): Section mismatch: reference to .init.text: (between 'apic_bigsmp' and 'cpu.4905')
This appears to be resolvable by removing all the __init and __initdata
qualifiers from arch/i386/mach-generic/bigsmp.c

Signed-off-by: William Irwin <[email protected]>

Index: mm-2.6.22-rc2/arch/i386/mach-generic/bigsmp.c
===================================================================
--- mm-2.6.22-rc2.orig/arch/i386/mach-generic/bigsmp.c 2007-05-23 08:53:25.122485613 -0700
+++ mm-2.6.22-rc2/arch/i386/mach-generic/bigsmp.c 2007-05-23 09:06:21.998757269 -0700
@@ -21,7 +21,7 @@

static int dmi_bigsmp; /* can be set by dmi scanners */

-static __init int hp_ht_bigsmp(struct dmi_system_id *d)
+static int hp_ht_bigsmp(struct dmi_system_id *d)
{
#ifdef CONFIG_X86_GENERICARCH
printk(KERN_NOTICE "%s detected: force use of apic=bigsmp\n", d->ident);
@@ -31,7 +31,7 @@
}


-static struct dmi_system_id __initdata bigsmp_dmi_table[] = {
+static struct dmi_system_id bigsmp_dmi_table[] = {
{ hp_ht_bigsmp, "HP ProLiant DL760 G2", {
DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
DMI_MATCH(DMI_BIOS_VERSION, "P44-"),
@@ -45,7 +45,7 @@
};


-static int __init probe_bigsmp(void)
+static int probe_bigsmp(void)
{
if (def_to_bigsmp)
dmi_bigsmp = 1;

2007-05-23 16:28:50

by William Lee Irwin III

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, May 23, 2007 at 12:42:33AM -0700, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
> - A new readahead patch series. This needs serious review and performance
> testing please.
> - Added Ingo's CFS CPU scheduler
> - Xen dom-U support is now in the x86 tree.

This patch silences the following warning:
WARNING: arch/i386/kernel/built-in.o(.text+0xdba6): Section mismatch: reference to .init.data:cpu_llc_id (between 'set_cpu_sibling_map' and 'initialize_secondary')
Marking set_cpu_sibling_map() as __cpuinit resolves the section conflict
with the __cpuinitdata cpu_llc_id[] variable.

Signed-off-by: William Irwin <[email protected]>

Index: mm-2.6.22-rc2/arch/i386/kernel/smpboot.c
===================================================================
--- mm-2.6.22-rc2.orig/arch/i386/kernel/smpboot.c 2007-05-23 09:15:29.377950632 -0700
+++ mm-2.6.22-rc2/arch/i386/kernel/smpboot.c 2007-05-23 09:16:27.089239410 -0700
@@ -308,7 +308,7 @@
/* representing cpus for which sibling maps can be computed */
static cpumask_t cpu_sibling_setup_map;

-void set_cpu_sibling_map(int cpu)
+void __cpuinit set_cpu_sibling_map(int cpu)
{
int i;
struct cpuinfo_x86 *c = cpu_data;

2007-05-23 17:00:51

by Alan Stern

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007, Andrew Morton wrote:

> > > > This is intermittently getting resume-from-RAM failures. It is not
> > > > sufficiently repeatable to be able to bisect.
> > > >
> > > > [ 1381.119362] PM: Preparing system for mem sleep
> > > > [ 2331.798452] Stopping tasks ...
> > > > [ 2351.760431] Stopping kernel threads timed out after 20 seconds (2 tasks refusing to freeze):
> > > > [ 2351.762385] ksuspend_usbd
> > > > [ 2351.764374] khubd
> > > > [ 2351.766338] Restarting tasks ... done.
> > >
> > > Hmm, that seems to be related to usb-fix-suspend-to-ram.patch (probably one of
> > > the threads is waiting for a completion by some other thread that has been
> > > frozen already).
> >
> > Is it possible to get an Alt-SysRq-T stack trace during those 20
> > seconds? Knowing what those threads are waiting for would be a big
> > help.

> The trace is at http://userweb.kernel.org/~akpm/tasks.txt. Interesting
> bits are
>
> [ 144.201264] khubd D 00400005 0 160 2 (L-TLB)
> [ 144.204358] c207fe78 00000046 90399a85 00400005 00000246 c207fe60 c25b0cc4 c206f4cc
> [ 144.204539] 00000286 00000000 769e4cea 0040000a 90399a85 00400005 c32713c0 c207fed4
> [ 144.207754] 00000001 c207fe94 c207febc c02e8e1b 00000000 00000000 00000000 00000000
> [ 144.210934] Call Trace:
> [ 144.217012] [<c02e8e1b>] wait_for_completion+0x68/0x91
> [ 144.220090] [<c011824f>] default_wake_function+0x0/0x9
> [ 144.223158] [<c0127a41>] flush_cpu_workqueue+0x4d/0x55
> [ 144.226223] [<c0127a69>] wq_barrier_func+0x0/0x8
> [ 144.229269] [<c026343d>] usb_release_dev+0x28/0x63
> [ 144.232340] [<c0233011>] device_release+0x37/0x7c
> [ 144.235431] [<c01cb6c7>] kobject_cleanup+0x3d/0x54
> [ 144.238520] [<c01cb6de>] kobject_release+0x0/0x8
> [ 144.241631] [<c01cc2a7>] kref_put+0x75/0x82
> [ 144.244699] [<c0265482>] hub_thread+0x376/0xa74
> [ 144.247768] [<c01180c2>] pick_next_task_fair+0xf2/0x12a
> [ 144.250815] [<c0116af1>] __wake_up_common+0x31/0x4f
> [ 144.253864] [<c012a259>] autoremove_wake_function+0x0/0x35
> [ 144.256902] [<c026510c>] hub_thread+0x0/0xa74
> [ 144.259944] [<c012a102>] kthread+0x36/0x5c
> [ 144.262891] [<c012a0cc>] kthread+0x0/0x5c
> [ 144.265757] [<c010464b>] kernel_thread_helper+0x7/0x10
> [ 144.268716] =======================
>
>
> [ 144.137704] ksuspend_usbd D 00400005 0 157 2 (L-TLB)
> [ 144.140830] c2085f18 00000046 9072767a 00400005 c20626f0 c010449b c3182118 c206288c
> [ 144.141011] c3182120 c3182120 76d728df 0040000a 9072767a 00400005 c3271200 c3182118
> [ 144.144263] c3182120 00000246 c20626f0 c02ea1c9 00000000 00000000 00000000 00000000
> [ 144.147576] Call Trace:
> [ 144.153929] [<c010449b>] common_interrupt+0x23/0x28
> [ 144.157245] [<c02ea1c9>] __down+0xba/0xc6
> [ 144.160528] [<c011824f>] default_wake_function+0x0/0x9
> [ 144.163832] [<c02664fc>] hcd_resume_work+0x0/0x43
> [ 144.167126] [<c02e9fd3>] __down_failed+0x7/0xc
> [ 144.170372] [<c0266518>] hcd_resume_work+0x1c/0x43
> [ 144.173603] [<c01278cf>] run_workqueue+0x6d/0xdf
> [ 144.176780] [<c0127b4c>] worker_thread+0x0/0xd0
> [ 144.179885] [<c0127b4c>] worker_thread+0x0/0xd0
> [ 144.182930] [<c0127c12>] worker_thread+0xc6/0xd0
> [ 144.185964] [<c012a259>] autoremove_wake_function+0x0/0x35
> [ 144.189056] [<c012a102>] kthread+0x36/0x5c
> [ 144.192118] [<c012a0cc>] kthread+0x0/0x5c
> [ 144.195153] [<c010464b>] kernel_thread_helper+0x7/0x10


Okay, it's clear that the two threads are in deadlock. It's not clear
how the deadlock arose to begin with -- apparently there was a remote
wakeup request for a root hub at the same time as a device below that
root hub was disconnected, which doesn't make much sense.

Anyway, this looks like a good place to use cancel_work_sync(). The
patch below is highly untested, so Andrew, you're the guinea pig. :-)
If it seems to help, I'll submit it with a proper Changelog entry.

Alan Stern


Index: usb-2.6/drivers/usb/core/hub.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/hub.c
+++ usb-2.6/drivers/usb/core/hub.c
@@ -1294,6 +1294,7 @@ void usb_disconnect(struct usb_device **
*pdev = NULL;
spin_unlock_irq(&device_state_lock);

+#ifdef CONFIG_USB_SUSPEND
/* Synchronize with the ksuspend thread to prevent any more
* autosuspend requests from being submitted, and decrement
* the parent's count of unsuspended children.
@@ -1303,6 +1304,10 @@ void usb_disconnect(struct usb_device **
usb_autosuspend_device(udev->parent);
usb_pm_unlock(udev);

+ cancel_delayed_work(&udev->autosuspend);
+ cancel_work_sync(&udev->autosuspend.work);
+#endif
+
put_device(&udev->dev);
}

Index: usb-2.6/drivers/usb/core/usb.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/usb.c
+++ usb-2.6/drivers/usb/core/usb.c
@@ -184,10 +184,6 @@ static void usb_release_dev(struct devic

udev = to_usb_device(dev);

-#ifdef CONFIG_USB_SUSPEND
- cancel_delayed_work(&udev->autosuspend);
- flush_workqueue(ksuspend_usb_wq);
-#endif
usb_destroy_configuration(udev);
usb_put_hcd(bus_to_hcd(udev->bus));
kfree(udev->product);

2007-05-23 17:04:55

by Oleg Nesterov

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On 05/23, Andrew Morton wrote:
>
> On Wed, 23 May 2007 10:47:04 -0400 (EDT) Alan Stern <[email protected]> wrote:
>
> > Is it possible to get an Alt-SysRq-T stack trace during those 20
> > seconds? Knowing what those threads are waiting for would be a big
> > help.
>
> [ 144.201264] khubd D 00400005 0 160 2 (L-TLB)
> [ 144.204358] c207fe78 00000046 90399a85 00400005 00000246 c207fe60 c25b0cc4 c206f4cc
> [ 144.204539] 00000286 00000000 769e4cea 0040000a 90399a85 00400005 c32713c0 c207fed4
> [ 144.207754] 00000001 c207fe94 c207febc c02e8e1b 00000000 00000000 00000000 00000000
> [ 144.210934] Call Trace:
> [ 144.217012] [<c02e8e1b>] wait_for_completion+0x68/0x91
> [ 144.220090] [<c011824f>] default_wake_function+0x0/0x9
> [ 144.223158] [<c0127a41>] flush_cpu_workqueue+0x4d/0x55
> [ 144.226223] [<c0127a69>] wq_barrier_func+0x0/0x8
> [ 144.229269] [<c026343d>] usb_release_dev+0x28/0x63
> [ 144.232340] [<c0233011>] device_release+0x37/0x7c
> [ 144.235431] [<c01cb6c7>] kobject_cleanup+0x3d/0x54
> [ 144.238520] [<c01cb6de>] kobject_release+0x0/0x8
> [ 144.241631] [<c01cc2a7>] kref_put+0x75/0x82
> [ 144.244699] [<c0265482>] hub_thread+0x376/0xa74
> [ 144.247768] [<c01180c2>] pick_next_task_fair+0xf2/0x12a
> [ 144.250815] [<c0116af1>] __wake_up_common+0x31/0x4f
> [ 144.253864] [<c012a259>] autoremove_wake_function+0x0/0x35
> [ 144.256902] [<c026510c>] hub_thread+0x0/0xa74
> [ 144.259944] [<c012a102>] kthread+0x36/0x5c
> [ 144.262891] [<c012a0cc>] kthread+0x0/0x5c
> [ 144.265757] [<c010464b>] kernel_thread_helper+0x7/0x10
> [ 144.268716] =======================

Looks like usb_release_dev() does flush_workqueue() under usb_lock_device().

Is it possible? If yes, flush_workqueue() stalls because this lock is need
to finish the execution of ->wakeup_work (below).

usb_release_dev:

#ifdef CONFIG_USB_SUSPEND
cancel_delayed_work(&udev->autosuspend);
flush_workqueue(ksuspend_usb_wq);
#endif

What is the reason for flush_workqueue() here? _IF_ it is only needed to flush
->autosuspend, we can use cancel_rearming_delayed_work(&udev->autosuspend).

> [ 144.137704] ksuspend_usbd D 00400005 0 157 2 (L-TLB)
> [ 144.140830] c2085f18 00000046 9072767a 00400005 c20626f0 c010449b c3182118 c206288c
> [ 144.141011] c3182120 c3182120 76d728df 0040000a 9072767a 00400005 c3271200 c3182118
> [ 144.144263] c3182120 00000246 c20626f0 c02ea1c9 00000000 00000000 00000000 00000000
> [ 144.147576] Call Trace:
> [ 144.153929] [<c010449b>] common_interrupt+0x23/0x28
> [ 144.157245] [<c02ea1c9>] __down+0xba/0xc6
> [ 144.160528] [<c011824f>] default_wake_function+0x0/0x9
> [ 144.163832] [<c02664fc>] hcd_resume_work+0x0/0x43
> [ 144.167126] [<c02e9fd3>] __down_failed+0x7/0xc
> [ 144.170372] [<c0266518>] hcd_resume_work+0x1c/0x43
> [ 144.173603] [<c01278cf>] run_workqueue+0x6d/0xdf
> [ 144.176780] [<c0127b4c>] worker_thread+0x0/0xd0
> [ 144.179885] [<c0127b4c>] worker_thread+0x0/0xd0
> [ 144.182930] [<c0127c12>] worker_thread+0xc6/0xd0
> [ 144.185964] [<c012a259>] autoremove_wake_function+0x0/0x35
> [ 144.189056] [<c012a102>] kthread+0x36/0x5c
> [ 144.192118] [<c012a0cc>] kthread+0x0/0x5c
> [ 144.195153] [<c010464b>] kernel_thread_helper+0x7/0x10

Oleg.

2007-05-23 17:15:14

by Oleg Nesterov

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On 05/23, Alan Stern wrote:
>
> Okay, it's clear that the two threads are in deadlock. It's not clear
> how the deadlock arose to begin with -- apparently there was a remote
> wakeup request for a root hub at the same time as a device below that
> root hub was disconnected, which doesn't make much sense.

Please note that this flush_workqueue() was not safe anyway. We are freezing
tasks, and ksuspend_usb_wq is freezeable. So, it could be frozen before
"khubd" task, and we have another deadlock.

> Anyway, this looks like a good place to use cancel_work_sync(). The

Could you use cancel_rearming_delayed_work() ? (It should be renamed to
cancel_delayed_work_sync()).

Oleg.

2007-05-23 17:18:40

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007, Michal Piotrowski wrote:

> Christoph, this looks like a bug in SLUB.

Please boot with slub_debug to find the bad code that overwrites a slab
object after it was freed.

2007-05-23 17:26:28

by William Lee Irwin III

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, May 23, 2007 at 12:42:33AM -0700, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
> - A new readahead patch series. This needs serious review and performance
> testing please.
> - Added Ingo's CFS CPU scheduler
> - Xen dom-U support is now in the x86 tree.

This patch silences the following warning:
WARNING: drivers/built-in.o(.text+0x500fd): Section mismatch: reference to .init.data: (between 'pxm_to_node' and 'node_to_pxm')
WARNING: drivers/built-in.o(.text+0x50112): Section mismatch: reference to .init.data: (between 'node_to_pxm' and 'acpi_get_pxm')
pxm_to_node() and node_to_pxm() reference node_to_pxm_map[] and
pxm_to_node_map[], which are __cpuinitdata. This patch marks pxm_to_node()
and node_to_pxm() __cpuinit accordingly.

Signed-off-by: William Irwin <[email protected]>

Index: mm-2.6.22-rc2/drivers/acpi/numa.c
===================================================================
--- mm-2.6.22-rc2.orig/drivers/acpi/numa.c 2007-05-23 09:35:02.932827713 -0700
+++ mm-2.6.22-rc2/drivers/acpi/numa.c 2007-05-23 09:35:48.919448341 -0700
@@ -43,14 +43,14 @@
static int __cpuinitdata node_to_pxm_map[MAX_NUMNODES]
= { [0 ... MAX_NUMNODES - 1] = PXM_INVAL };

-int pxm_to_node(int pxm)
+int __cpuinit pxm_to_node(int pxm)
{
if (pxm < 0)
return NID_INVAL;
return pxm_to_node_map[pxm];
}

-int node_to_pxm(int node)
+int __cpuinit node_to_pxm(int node)
{
if (node < 0)
return PXM_INVAL;

2007-05-23 18:41:38

by Alan Stern

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007, Oleg Nesterov wrote:

> On 05/23, Alan Stern wrote:
> >
> > Okay, it's clear that the two threads are in deadlock. It's not clear
> > how the deadlock arose to begin with -- apparently there was a remote
> > wakeup request for a root hub at the same time as a device below that
> > root hub was disconnected, which doesn't make much sense.
>
> Please note that this flush_workqueue() was not safe anyway. We are freezing
> tasks, and ksuspend_usb_wq is freezeable. So, it could be frozen before
> "khubd" task, and we have another deadlock.

Correct. I was planning to replace the flush_workqueue() anyway for
that very reason; this is a good excuse to do it.

> > Anyway, this looks like a good place to use cancel_work_sync(). The
>
> Could you use cancel_rearming_delayed_work() ? (It should be renamed to
> cancel_delayed_work_sync()).

Good idea. Here's a revised patch.

Alan Stern


Index: usb-2.6/drivers/usb/core/hub.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/hub.c
+++ usb-2.6/drivers/usb/core/hub.c
@@ -1228,6 +1228,30 @@ static void release_address(struct usb_d
}
}

+#ifdef CONFIG_USB_SUSPEND
+
+static void usb_stop_pm(struct usb_device *udev)
+{
+ /* Synchronize with the ksuspend thread to prevent any more
+ * autosuspend requests from being submitted, and decrement
+ * the parent's count of unsuspended children.
+ */
+ usb_pm_lock(udev);
+ if (udev->parent && !udev->discon_suspended)
+ usb_autosuspend_device(udev->parent);
+ usb_pm_unlock(udev);
+
+ /* Stop any autosuspend requests already submitted */
+ cancel_rearming_delayed_work(&udev->autosuspend);
+}
+
+#else
+
+static inline void usb_stop_pm(struct usb_device *udev)
+{ }
+
+#endif
+
/**
* usb_disconnect - disconnect a device (usbcore-internal)
* @pdev: pointer to device being disconnected
@@ -1294,14 +1318,7 @@ void usb_disconnect(struct usb_device **
*pdev = NULL;
spin_unlock_irq(&device_state_lock);

- /* Synchronize with the ksuspend thread to prevent any more
- * autosuspend requests from being submitted, and decrement
- * the parent's count of unsuspended children.
- */
- usb_pm_lock(udev);
- if (udev->parent && !udev->discon_suspended)
- usb_autosuspend_device(udev->parent);
- usb_pm_unlock(udev);
+ usb_stop_pm(udev);

put_device(&udev->dev);
}
Index: usb-2.6/drivers/usb/core/usb.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/usb.c
+++ usb-2.6/drivers/usb/core/usb.c
@@ -184,10 +184,6 @@ static void usb_release_dev(struct devic

udev = to_usb_device(dev);

-#ifdef CONFIG_USB_SUSPEND
- cancel_delayed_work(&udev->autosuspend);
- flush_workqueue(ksuspend_usb_wq);
-#endif
usb_destroy_configuration(udev);
usb_put_hcd(bus_to_hcd(udev->bus));
kfree(udev->product);
Index: usb-2.6/drivers/usb/core/hcd.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/hcd.c
+++ usb-2.6/drivers/usb/core/hcd.c
@@ -1683,7 +1683,7 @@ void usb_remove_hcd(struct usb_hcd *hcd)
spin_unlock_irq (&hcd_root_hub_lock);

#ifdef CONFIG_PM
- flush_workqueue(ksuspend_usb_wq);
+ cancel_work_sync(&hcd->wakeup_work);
#endif

mutex_lock(&usb_bus_list_lock);

2007-05-23 21:06:19

by Michal Piotrowski

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

Christoph Lameter napisał(a):
> On Wed, 23 May 2007, Michal Piotrowski wrote:
>
>> Christoph, this looks like a bug in SLUB.
>
> Please boot with slub_debug to find the bad code that overwrites a slab
> object after it was freed.
>
>

[ 19.096577] Real Time Clock Driver v1.12ac
[ 21.650315] *** SLUB kmalloc-8: Redzone Active@0xc90f6d20 slab 0xc528c530
[ 21.657365] offset=3360 flags=0x400000c3 inuse=61 freelist=0xc90f6d58
[ 21.664349] Bytes b4 0xc90f6d10: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a ........ZZZZZZZZ
[ 21.674305] Object 0xc90f6d20: 31 30 31 39 2e 30 30 35 1019.005
[ 21.684259] Redzone 0xc90f6d28: 00 cc cc cc .ллл
[ 21.694265] FreePointer 0xc90f6d2c -> 0xc90f6d58
[ 21.699061] Last alloc: get_modalias+0x61/0xf5 jiffies_ago=53 cpu=1 pid=554
[ 21.706362] Filler 0xc90f6d50: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
[ 21.716364] [<c010523d>] dump_trace+0x63/0x1eb
[ 21.721117] [<c01053df>] show_trace_log_lvl+0x1a/0x2f
[ 21.726466] [<c010601d>] show_trace+0x12/0x14
[ 21.731096] [<c0106035>] dump_stack+0x16/0x18
[ 21.735790] [<c017e0fa>] object_err+0x143/0x14b
[ 21.740575] [<c017e2cc>] check_object+0x66/0x234
[ 21.745582] [<c017eb43>] __slab_free+0x239/0x384
[ 21.750503] [<c017f446>] kfree+0xa6/0xc6
[ 21.754706] [<c02e2335>] get_modalias+0xb9/0xf5
[ 21.759517] [<c02e23b7>] dmi_dev_uevent+0x27/0x3c
[ 21.764537] [<c027866a>] dev_uevent+0x1ad/0x1da
[ 21.769429] [<c0205024>] kobject_uevent_env+0x20a/0x45b
[ 21.774970] [<c020527f>] kobject_uevent+0xa/0xf
[ 21.779834] [<c02779f1>] store_uevent+0x4f/0x58
[ 21.784678] [<c027758e>] dev_attr_store+0x29/0x2f
[ 21.789688] [<c01bec4f>] sysfs_write_file+0x16e/0x19c
[ 21.795022] [<c0183ba7>] vfs_write+0xd1/0x15a
[ 21.799673] [<c01841d7>] sys_write+0x3d/0x72
[ 21.804284] [<c0104112>] sysenter_past_esp+0x5f/0x99
[ 21.809606] [<b7f7b410>] 0xb7f7b410
[ 21.813379] =======================
[ 21.817083] @@@ SLUB kmalloc-8: Restoring redzone (0xcc) from 0xc90f6d28-0xc90f6d2b

Here is another one

[ 0.182216] PM: Adding info for No Bus:id
[ 0.182333] *** SLUB kmalloc-8: Redzone Active@0xc7838188 slab 0xc521cfc0
[ 0.182395] offset=392 flags=0x400000c3 inuse=8 freelist=0xc78381c0
[ 0.182455] Bytes b4 0xc7838178: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a ........ZZZZZZZZ
[ 0.183299] Object 0xc7838188: 31 30 31 39 2e 30 30 35 1019.005
[ 0.184141] Redzone 0xc7838190: 00 cc cc cc .ллл
[ 0.184980] FreePointer 0xc7838194 -> 0xc78381c0
[ 0.185038] Last alloc: get_modalias+0x61/0xf5 jiffies_ago=0 cpu=0 pid=1
[ 0.185196] Filler 0xc78381b8: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
[ 0.186043] [<c010523d>] dump_trace+0x63/0x1eb
[ 0.186155] [<c01053df>] show_trace_log_lvl+0x1a/0x2f
[ 0.186262] [<c010601d>] show_trace+0x12/0x14
[ 0.186368] [<c0106035>] dump_stack+0x16/0x18
[ 0.187567] [<c017e0fa>] object_err+0x143/0x14b
[ 0.187677] [<c017e2cc>] check_object+0x66/0x234
[ 0.187788] [<c017eb43>] __slab_free+0x239/0x384
[ 0.187895] [<c017f446>] kfree+0xa6/0xc6
[ 0.188001] [<c02e2335>] get_modalias+0xb9/0xf5
[ 0.188111] [<c02e23b7>] dmi_dev_uevent+0x27/0x3c
[ 0.188219] [<c027866a>] dev_uevent+0x1ad/0x1da
[ 0.188328] [<c0205024>] kobject_uevent_env+0x20a/0x45b
[ 0.188438] [<c020527f>] kobject_uevent+0xa/0xf
[ 0.188544] [<c02782bd>] device_add+0x274/0x45f
[ 0.188650] [<c02784ba>] device_register+0x12/0x15
[ 0.188761] [<c0504d25>] dmi_id_init+0x256/0x26c
[ 0.188869] [<c04ec505>] kernel_init+0x14e/0x2bf
[ 0.188976] [<c0104e0b>] kernel_thread_helper+0x7/0x10
[ 0.189083] =======================
[ 0.189143] @@@ SLUB kmalloc-8: Restoring redzone (0xcc) from 0xc7838190-0xc7838193

http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc2-mm1/mm-dmesg
http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc2-mm1/mm-config

Regards,
Michal

--
Michal K. K. Piotrowski
Kernel Monkeys
(http://kernel.wikidot.com/start)

2007-05-23 22:01:36

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007 23:05:24 +0200
Michal Piotrowski <[email protected]> wrote:

> Christoph Lameter napisa__(a):
> > On Wed, 23 May 2007, Michal Piotrowski wrote:
> >
> >> Christoph, this looks like a bug in SLUB.
> >
> > Please boot with slub_debug to find the bad code that overwrites a slab
> > object after it was freed.
> >
> >
>
> [ 19.096577] Real Time Clock Driver v1.12ac
> [ 21.650315] *** SLUB kmalloc-8: Redzone Active@0xc90f6d20 slab 0xc528c530
> [ 21.657365] offset=3360 flags=0x400000c3 inuse=61 freelist=0xc90f6d58
> [ 21.664349] Bytes b4 0xc90f6d10: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a ........ZZZZZZZZ
> [ 21.674305] Object 0xc90f6d20: 31 30 31 39 2e 30 30 35 1019.005
> [ 21.684259] Redzone 0xc90f6d28: 00 cc cc cc .______
> [ 21.694265] FreePointer 0xc90f6d2c -> 0xc90f6d58
> [ 21.699061] Last alloc: get_modalias+0x61/0xf5 jiffies_ago=53 cpu=1 pid=554
> [ 21.706362] Filler 0xc90f6d50: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ

argh, I never 100% understood the slab gobbledygook, and now we have slub
gobbledygook. I _hope_ what that's saying is that the 00 at 0xc90f6d28
wasn't supposed to be there.

Obvious bug:

--- a/drivers/firmware/dmi-id.c~a
+++ a/drivers/firmware/dmi-id.c
@@ -94,7 +94,7 @@ static ssize_t get_modalias(char *buffer
if (!c)
continue;

- t = kmalloc(strlen(c), GFP_KERNEL);
+ t = kmalloc(strlen(c) + 1, GFP_KERNEL);
if (!t)
break;
ascii_filter(t, c);
_


> Here is another one

Same deal.

2007-05-23 22:24:37

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007, Michal Piotrowski wrote:

> [ 19.096577] Real Time Clock Driver v1.12ac
> [ 21.650315] *** SLUB kmalloc-8: Redzone Active@0xc90f6d20 slab 0xc528c530
> [ 21.657365] offset=3360 flags=0x400000c3 inuse=61 freelist=0xc90f6d58
> [ 21.664349] Bytes b4 0xc90f6d10: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a ........ZZZZZZZZ
> [ 21.674305] Object 0xc90f6d20: 31 30 31 39 2e 30 30 35 1019.005
> [ 21.684259] Redzone 0xc90f6d28: 00 cc cc cc .??????

Ok. We are writing a string of length 8 to an object allocated via
kmalloc(8). A string of 8 bytes needs a 0x00 at the end though. This makes
it 9 bytes. The kmalloc should have been for 9 bytes!

2007-05-23 22:25:41

by Michal Piotrowski

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On 24/05/07, Andrew Morton <[email protected]> wrote:
> On Wed, 23 May 2007 23:05:24 +0200
> Michal Piotrowski <[email protected]> wrote:
>
> > Christoph Lameter napisa__(a):
> > > On Wed, 23 May 2007, Michal Piotrowski wrote:
> > >
> > >> Christoph, this looks like a bug in SLUB.
> > >
> > > Please boot with slub_debug to find the bad code that overwrites a slab
> > > object after it was freed.
> > >
> > >
> >
> > [ 19.096577] Real Time Clock Driver v1.12ac
> > [ 21.650315] *** SLUB kmalloc-8: Redzone Active@0xc90f6d20 slab 0xc528c530
> > [ 21.657365] offset=3360 flags=0x400000c3 inuse=61 freelist=0xc90f6d58
> > [ 21.664349] Bytes b4 0xc90f6d10: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a ........ZZZZZZZZ
> > [ 21.674305] Object 0xc90f6d20: 31 30 31 39 2e 30 30 35 1019.005
> > [ 21.684259] Redzone 0xc90f6d28: 00 cc cc cc .______
> > [ 21.694265] FreePointer 0xc90f6d2c -> 0xc90f6d58
> > [ 21.699061] Last alloc: get_modalias+0x61/0xf5 jiffies_ago=53 cpu=1 pid=554
> > [ 21.706362] Filler 0xc90f6d50: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
>
> argh, I never 100% understood the slab gobbledygook, and now we have slub
> gobbledygook. I _hope_ what that's saying is that the 00 at 0xc90f6d28
> wasn't supposed to be there.
>
> Obvious bug:
>
> --- a/drivers/firmware/dmi-id.c~a
> +++ a/drivers/firmware/dmi-id.c

Problem fixed. Thanks!

Regards,
Michal

--
Michal K. K. Piotrowski
Kernel Monkeys
(http://kernel.wikidot.com/start)

2007-05-23 22:27:37

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007, Andrew Morton wrote:

> argh, I never 100% understood the slab gobbledygook, and now we have slub
> gobbledygook. I _hope_ what that's saying is that the 00 at 0xc90f6d28
> wasn't supposed to be there.

Exactly. I tried to make the SLUB gobbledygook better. Any other ideas on
how to improve it?

2007-05-23 22:37:42

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007 15:27:28 -0700 (PDT)
Christoph Lameter <[email protected]> wrote:

> On Wed, 23 May 2007, Andrew Morton wrote:
>
> > argh, I never 100% understood the slab gobbledygook, and now we have slub
> > gobbledygook. I _hope_ what that's saying is that the 00 at 0xc90f6d28
> > wasn't supposed to be there.
>
> Exactly. I tried to make the SLUB gobbledygook better.

Actually now I look at it and work out what "b4" meant, it's not all that
gobbledygooky. It's unclear what "Filler" means though.

> Any other ideas on
> how to improve it?

A few words in slub.txt, perhaps?

2007-05-23 23:17:27

by Zan Lynx

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 2007-05-23 at 00:42 -0700, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
>
> - A new readahead patch series. This needs serious review and performance
> testing please.
>
> - Added Ingo's CFS CPU scheduler
>
> - Xen dom-U support is now in the x86 tree.

I am having weird problems with USB keyboard and mouse. The USB
keyboard will drop keystrokes, but not all of them. The mouse seems to
move fine but drops clicks. Could be that an occasional missed move
event isn't noticeable. Nothing is logged when a key is dropped.

However, I did have some of this when it was first booting:

BUG: at drivers/hid/hid-core.c:778 implement()

Call Trace:
[<ffffffff880bb5ac>] :hid:hid_output_report+0x1dc/0x270
[<ffffffff880c651a>] :usbhid:hid_submit_ctrl+0x7a/0x260
[<ffffffff880c68ee>] :usbhid:usbhid_submit_report+0x11e/0x200
[<ffffffff880c9312>] :usbhid:hiddev_ioctl+0x3e2/0xae0
[<ffffffff8053523e>] do_page_fault+0x42e/0x880
[<ffffffff802b486d>] do_ioctl+0x7d/0xa0
[<ffffffff802b4ab1>] vfs_ioctl+0x221/0x2d0
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff802b4ba9>] sys_ioctl+0x49/0x80
[<ffffffff8020a16e>] system_call+0x7e/0x83

Here's the entire dmesg:
Linux version 2.6.22-rc2-mm1 (root@zephyr) (gcc version 4.2.0 (Gentoo 4.2.0)) #1 SMP PREEMPT Wed May 23 14:06:56 MDT 2007
Command line: root=/dev/sda2 rootfstype=reiser4 ro i8042.nomux elevator=cfq resume=/dev/sda3 panic=5 nmi_watchdog=1,panic debug kernelcore=512M
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000d0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003ff70000 (usable)
BIOS-e820: 000000003ff70000 - 000000003ff7f000 (ACPI data)
BIOS-e820: 000000003ff7f000 - 000000003ff80000 (ACPI NVS)
BIOS-e820: 000000003ff80000 - 0000000040000000 (reserved)
BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved)
Entering add_active_range(0, 0, 159) 0 entries of 256 used
Entering add_active_range(0, 256, 262000) 1 entries of 256 used
end_pfn_map = 1048576
DMI present.
ACPI: RSDP 000F7240, 0014 (r0 PTLTD )
ACPI: RSDT 3FF7A87E, 0034 (r1 PTLTD RSDT 6040000 LTP 0)
ACPI: FACP 3FF7EE13, 0074 (r1 NVIDIA CK8 6040000 PTL_ F4240)
ACPI: DSDT 3FF7A8B2, 4561 (r1 NVIDIA CK8 6040000 MSFT 100000E)
ACPI: FACS 3FF7FFC0, 0040
ACPI: APIC 3FF7EE87, 005A (r1 NVIDIA NV_APIC_ 6040000 LTP 0)
ACPI: BOOT 3FF7EEE1, 0028 (r1 PTLTD $SBFTBL$ 6040000 LTP 1)
ACPI: SSDT 3FF7EF09, 00F7 (r1 PTLTD POWERNOW 6040000 LTP 1)
Entering add_active_range(0, 0, 159) 0 entries of 256 used
Entering add_active_range(0, 256, 262000) 1 entries of 256 used
No mptable found.
sizeof(struct page) = 88
Zone PFN ranges:
DMA 0 -> 4096
DMA32 4096 -> 1048576
Normal 1048576 -> 1048576
Movable zone start PFN for each node
Node 0: 132096
early_node_map[2] active PFN ranges
0: 0 -> 159
0: 256 -> 262000
On node 0 totalpages: 261903
Node 0 memmap at 0xffff810001000000 size 23068672 first pfn 0xffff810001000000
DMA zone: 88 pages used for memmap
DMA zone: 2778 pages reserved
DMA zone: 1133 pages, LIFO batch:0
DMA32 zone: 2750 pages used for memmap
DMA32 zone: 125250 pages, LIFO batch:31
Normal zone: 0 pages used for memmap
Movable zone: 2790 pages used for memmap
Movable zone: 127114 pages, LIFO batch:31
Nvidia board detected. Ignoring ACPI timer override.
If you got timer trouble try acpi_use_timer_override
ACPI: PM-Timer IO Port: 0x8008
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 (Bootup-CPU)
ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: BIOS IRQ0 pin2 override ignored.
ACPI: IRQ9 used by override.
Setting APIC routing to flat
Using ACPI (MADT) for SMP configuration information
swsusp: Registered nosave memory region: 000000000009f000 - 00000000000a0000
swsusp: Registered nosave memory region: 00000000000a0000 - 00000000000d0000
swsusp: Registered nosave memory region: 00000000000d0000 - 0000000000100000
Allocating PCI resources starting at 50000000 (gap: 40000000:bff80000)
SMP: Allowing 1 CPUs, 0 hotplug CPUs
PERCPU: Allocating 32392 bytes of per cpu data
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 253497
Kernel command line: root=/dev/sda2 rootfstype=reiser4 ro i8042.nomux elevator=cfq resume=/dev/sda3 panic=5 nmi_watchdog=1,panic debug kernelcore=512M
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 32768 bytes)
time.c: Detected 2194.363 MHz processor.
Console: colour VGA+ 80x25
Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
... MAX_LOCKDEP_SUBCLASSES: 8
... MAX_LOCK_DEPTH: 30
... MAX_LOCKDEP_KEYS: 2048
... CLASSHASH_SIZE: 1024
... MAX_LOCKDEP_ENTRIES: 8192
... MAX_LOCKDEP_CHAINS: 16384
... CHAINHASH_SIZE: 8192
memory used by lock dependency info: 1648 kB
per task-struct memory footprint: 1680 bytes
------------------------
| Locking API testsuite:
----------------------------------------------------------------------------
| spin |wlock |rlock |mutex | wsem | rsem |
--------------------------------------------------------------------------
A-A deadlock: ok | ok | ok | ok | ok | ok |
A-B-B-A deadlock: ok | ok | ok | ok | ok | ok |
A-B-B-C-C-A deadlock: ok | ok | ok | ok | ok | ok |
A-B-C-A-B-C deadlock: ok | ok | ok | ok | ok | ok |
A-B-B-C-C-D-D-A deadlock: ok | ok | ok | ok | ok | ok |
A-B-C-D-B-D-D-A deadlock: ok | ok | ok | ok | ok | ok |
A-B-C-D-B-C-D-A deadlock: ok | ok | ok | ok | ok | ok |
double unlock: ok | ok | ok | ok | ok | ok |
initialize held: ok | ok | ok | ok | ok | ok |
bad unlock order: ok | ok | ok | ok | ok | ok |
--------------------------------------------------------------------------
recursive read-lock: | ok | | ok |
recursive read-lock #2: | ok | | ok |
mixed read-write-lock: | ok | | ok |
mixed write-read-lock: | ok | | ok |
--------------------------------------------------------------------------
hard-irqs-on + irq-safe-A/12: ok | ok | ok |
soft-irqs-on + irq-safe-A/12: ok | ok | ok |
hard-irqs-on + irq-safe-A/21: ok | ok | ok |
soft-irqs-on + irq-safe-A/21: ok | ok | ok |
sirq-safe-A => hirqs-on/12: ok | ok | ok |
sirq-safe-A => hirqs-on/21: ok | ok | ok |
hard-safe-A + irqs-on/12: ok | ok | ok |
soft-safe-A + irqs-on/12: ok | ok | ok |
hard-safe-A + irqs-on/21: ok | ok | ok |
soft-safe-A + irqs-on/21: ok | ok | ok |
hard-safe-A + unsafe-B #1/123: ok | ok | ok |
soft-safe-A + unsafe-B #1/123: ok | ok | ok |
hard-safe-A + unsafe-B #1/132: ok | ok | ok |
soft-safe-A + unsafe-B #1/132: ok | ok | ok |
hard-safe-A + unsafe-B #1/213: ok | ok | ok |
soft-safe-A + unsafe-B #1/213: ok | ok | ok |
hard-safe-A + unsafe-B #1/231: ok | ok | ok |
soft-safe-A + unsafe-B #1/231: ok | ok | ok |
hard-safe-A + unsafe-B #1/312: ok | ok | ok |
soft-safe-A + unsafe-B #1/312: ok | ok | ok |
hard-safe-A + unsafe-B #1/321: ok | ok | ok |
soft-safe-A + unsafe-B #1/321: ok | ok | ok |
hard-safe-A + unsafe-B #2/123: ok | ok | ok |
soft-safe-A + unsafe-B #2/123: ok | ok | ok |
hard-safe-A + unsafe-B #2/132: ok | ok | ok |
soft-safe-A + unsafe-B #2/132: ok | ok | ok |
hard-safe-A + unsafe-B #2/213: ok | ok | ok |
soft-safe-A + unsafe-B #2/213: ok | ok | ok |
hard-safe-A + unsafe-B #2/231: ok | ok | ok |
soft-safe-A + unsafe-B #2/231: ok | ok | ok |
hard-safe-A + unsafe-B #2/312: ok | ok | ok |
soft-safe-A + unsafe-B #2/312: ok | ok | ok |
hard-safe-A + unsafe-B #2/321: ok | ok | ok |
soft-safe-A + unsafe-B #2/321: ok | ok | ok |
hard-irq lock-inversion/123: ok | ok | ok |
soft-irq lock-inversion/123: ok | ok | ok |
hard-irq lock-inversion/132: ok | ok | ok |
soft-irq lock-inversion/132: ok | ok | ok |
hard-irq lock-inversion/213: ok | ok | ok |
soft-irq lock-inversion/213: ok | ok | ok |
hard-irq lock-inversion/231: ok | ok | ok |
soft-irq lock-inversion/231: ok | ok | ok |
hard-irq lock-inversion/312: ok | ok | ok |
soft-irq lock-inversion/312: ok | ok | ok |
hard-irq lock-inversion/321: ok | ok | ok |
soft-irq lock-inversion/321: ok | ok | ok |
hard-irq read-recursion/123: ok |
soft-irq read-recursion/123: ok |
hard-irq read-recursion/132: ok |
soft-irq read-recursion/132: ok |
hard-irq read-recursion/213: ok |
soft-irq read-recursion/213: ok |
hard-irq read-recursion/231: ok |
soft-irq read-recursion/231: ok |
hard-irq read-recursion/312: ok |
soft-irq read-recursion/312: ok |
hard-irq read-recursion/321: ok |
soft-irq read-recursion/321: ok |
-------------------------------------------------------
Good, all 218 testcases passed! |
---------------------------------
Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
Checking aperture...
CPU 0: aperture @ e8000000 size 128 MB
Memory: 1011976k/1048000k available (3300k kernel code, 35344k reserved, 2176k data, 1100k init)
SLUB: Genslabs=23, HWalign=64, Order=0-3, MinObjects=16, Processors=1, Nodes=1
Calibrating delay using timer specific routine.. 4390.50 BogoMIPS (lpj=2195251)
kswapd reclaim order set to 3
Mount-cache hash table entries: 256
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 1024K (64 bytes/line)
SMP alternatives: switching to UP code
Freeing SMP alternatives: 25k freed
ACPI: Core revision 20070126
Parsing all Control Methods:
Table [DSDT](id 0001) - 650 Objects with 66 Devices 205 Methods 24 Regions
Parsing all Control Methods:
Table [SSDT](id 0002) - 3 Objects with 0 Devices 1 Methods 0 Regions
tbxface-0587 [02] tb_load_namespace : ACPI Tables successfully acquired
evxfevnt-0091 [02] enable : Transition to ACPI mode successful
activating NMI Watchdog ... done.
Using local APIC timer interrupts.
result 12467973
Detected 12.467 MHz APIC timer.
Brought up 1 CPUs
testing NMI watchdog ... CPU#0: NMI appears to be stuck (0->0)!
PM: Adding info for No Bus:platform
NET: Registered protocol family 16
No dock devices found.
PM: Adding info for No Bus:vtcon0
ACPI: bus type pci registered
PM: Adding info for No Bus:id
BUG: at include/linux/slub_def.h:83 kmalloc_index()

Call Trace:
[<ffffffff802a2e09>] get_slab+0xb9/0x180
[<ffffffff802a2965>] kfree+0xc5/0x110
[<ffffffff802a2fd4>] __kmalloc+0x24/0xc0
[<ffffffff8049ab18>] get_modalias+0x68/0x120
[<ffffffff8049ac07>] dmi_dev_uevent+0x37/0x60
[<ffffffff80443b63>] dev_uevent+0x163/0x220
[<ffffffff803bcc97>] kobject_uevent_env+0x2b7/0x500
[<ffffffff80444f50>] bus_add_device+0x20/0x140
[<ffffffff804438d2>] device_add+0x4a2/0x5b0
[<ffffffff807a0a1b>] dmi_id_init+0x2cb/0x2f0
[<ffffffff807866e6>] kernel_init+0x156/0x330
[<ffffffff80531f5c>] trace_hardirqs_on_thunk+0x35/0x37
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff8020b028>] child_rip+0xa/0x12
[<ffffffff8020a710>] restore_args+0x0/0x30
[<ffffffff803e6c10>] vgacon_cursor+0x0/0x1f0
[<ffffffff8023ad5b>] release_console_sem+0x4b/0x230
[<ffffffff80786590>] kernel_init+0x0/0x330
[<ffffffff8020b01e>] child_rip+0x0/0x12

PCI: Using configuration type 1
evgpeblk-0952 [04] ev_create_gpe_block : GPE 00 to 1F [_GPE] 4 regs on int 0x9
PM: Adding info for acpi:device:0e
PM: Adding info for acpi:device:10
PM: Adding info for acpi:device:11
PM: Adding info for acpi:device:12
PM: Adding info for acpi:device:13
PM: Adding info for acpi:device:14
PM: Adding info for acpi:device:15
PM: Adding info for acpi:ACPI0003:00
PM: Adding info for acpi:PNP0C02:00
PM: Adding info for acpi:PNP0C01:00
PM: Adding info for acpi:PNP0C09:00
PM: Adding info for acpi:PNP0C0A:00
PM: Adding info for acpi:PNP0C02:01
PM: Adding info for acpi:PNP0000:00
PM: Adding info for acpi:PNP0100:00
PM: Adding info for acpi:PNP0200:00
PM: Adding info for acpi:PNP0800:00
PM: Adding info for acpi:PNP0B00:00
PM: Adding info for acpi:PNP0C04:00
PM: Adding info for acpi:PNP0303:00
PM: Adding info for acpi:PNP0F13:00
PM: Adding info for acpi:PNP0A05:00
PM: Adding info for acpi:PNP0700:00
PM: Adding info for acpi:PNP0401:00
PM: Adding info for acpi:device:16
PM: Adding info for acpi:device:17
PM: Adding info for acpi:device:18
PM: Adding info for acpi:video:00
PM: Adding info for acpi:device:19
PM: Adding info for acpi:device:1a
PM: Adding info for acpi:device:1b
PM: Adding info for acpi:PNP0C0F:00
PM: Adding info for acpi:PNP0C0F:01
PM: Adding info for acpi:PNP0C0F:02
PM: Adding info for acpi:PNP0C0F:03
PM: Adding info for acpi:PNP0C0F:04
PM: Adding info for acpi:PNP0C0F:05
PM: Adding info for acpi:PNP0C0F:06
PM: Adding info for acpi:PNP0C0F:07
PM: Adding info for acpi:PNP0C0F:08
PM: Adding info for acpi:PNP0C0F:09
PM: Adding info for acpi:PNP0C0F:0a
PM: Adding info for acpi:PNP0C0F:0b
PM: Adding info for acpi:PNP0C0F:0c
PM: Adding info for acpi:PNP0C0F:0d
PM: Adding info for acpi:thermal:00
PM: Adding info for acpi:thermal:01
ACPI: PCI Root Bridge [PCI0] (0000:00)
PM: Adding info for No Bus:pci0000:00
PCI: Bus #03 (-#06) is hidden behind bridge #02 (-#02) (try 'pci=assign-busses')
Please report the result to linux-kernel to fix this permanently
PCI: Bus #07 (-#0a) is hidden behind bridge #02 (-#02) (try 'pci=assign-busses')
Please report the result to linux-kernel to fix this permanently
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P2P0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP0._PRT]
PM: Adding info for pci:0000:00:00.0
PM: Adding info for pci:0000:00:01.0
PM: Adding info for pci:0000:00:01.1
PM: Adding info for pci:0000:00:02.0
PM: Adding info for pci:0000:00:02.1
PM: Adding info for pci:0000:00:02.2
PM: Adding info for pci:0000:00:06.0
PM: Adding info for pci:0000:00:06.1
PM: Adding info for pci:0000:00:08.0
PM: Adding info for pci:0000:00:0a.0
PM: Adding info for pci:0000:00:0b.0
PM: Adding info for pci:0000:00:18.0
PM: Adding info for pci:0000:00:18.1
PM: Adding info for pci:0000:00:18.2
PM: Adding info for pci:0000:00:18.3
PM: Adding info for pci:0000:02:00.0
PM: Adding info for pci:0000:02:01.0
PM: Adding info for pci:0000:02:02.0
PM: Adding info for pci:0000:02:04.0
PM: Adding info for pci:0000:02:04.1
PM: Adding info for pci:0000:02:04.2
PM: Adding info for pci:0000:01:00.0
ACPI: PCI Interrupt Link [LNK1] (IRQs 16 18 19) *0
ACPI: PCI Interrupt Link [LNK2] (IRQs 16 18 19) *0
ACPI: PCI Interrupt Link [LNK3] (IRQs 17) *0
ACPI: PCI Interrupt Link [LNK4] (IRQs 16 18 19) *0, disabled.
ACPI: PCI Interrupt Link [LNK5] (IRQs 16 18 19) *0
ACPI: PCI Interrupt Link [LSMB] (IRQs 20 21 22) *0
ACPI: PCI Interrupt Link [LUS0] (IRQs 20 21 22) *0
ACPI: PCI Interrupt Link [LUS1] (IRQs 20 21 22) *0
ACPI: PCI Interrupt Link [LUS2] (IRQs 20 21 22) *0
ACPI: PCI Interrupt Link [LMAC] (IRQs 20 21 22) *0, disabled.
ACPI: PCI Interrupt Link [LACI] (IRQs 20 21 22) *0
ACPI: PCI Interrupt Link [LMCI] (IRQs 20 21 22) *0
ACPI: PCI Interrupt Link [LPID] (IRQs 20 21 22) *0, disabled.
ACPI: PCI Interrupt Link [LTID] (IRQs 20 21 22) *0, disabled.
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
PM: Adding info for No Bus:pnp0
ACPI: bus type pnp registered
PM: Adding info for pnp:00:00
PM: Adding info for pnp:00:01
PM: Adding info for pnp:00:02
PM: Adding info for pnp:00:03
PM: Adding info for pnp:00:04
PM: Adding info for pnp:00:05
PM: Adding info for pnp:00:06
PM: Adding info for pnp:00:07
PM: Adding info for pnp:00:08
PM: Adding info for pnp:00:09
PM: Adding info for pnp:00:0a
PM: Adding info for pnp:00:0b
pnp: PnP ACPI: found 12 devices
ACPI: ACPI bus type pnp unregistered
Generic PHY: Registered new driver
SCSI subsystem initialized
libata version 2.21 loaded.
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
PCI: Cannot allocate resource region 0 of device 0000:00:00.0
agpgart: Detected AGP bridge 0
agpgart: Setting up Nforce3 AGP.
PM: Adding info for No Bus:agpgart
agpgart: AGP aperture is 128M @ 0xe8000000
pnp: 00:01: ioport range 0x8000-0x807f has been reserved
pnp: 00:01: ioport range 0x8080-0x80ff has been reserved
pnp: 00:01: ioport range 0x8400-0x847f has been reserved
pnp: 00:01: ioport range 0x8480-0x84ff has been reserved
pnp: 00:01: ioport range 0x8800-0x887f has been reserved
pnp: 00:01: ioport range 0x8880-0x88ff has been reserved
pnp: 00:01: ioport range 0x2040-0x207f has been reserved
Time: tsc clocksource has been installed.
pnp: 00:01: ioport range 0x2000-0x203f has been reserved
pnp: 00:02: iomem range 0xfff80000-0xffffffff could not be reserved
pnp: 00:02: iomem range 0xfec00000-0xfec00fff has been reserved
pnp: 00:02: iomem range 0xfee00000-0xfeefffff could not be reserved
pnp: 00:02: iomem range 0xfed00000-0xfed00fff has been reserved
PM: Adding info for No Bus:mem
PM: Adding info for No Bus:kmem
PM: Adding info for No Bus:null
PM: Adding info for No Bus:port
PM: Adding info for No Bus:zero
PM: Adding info for No Bus:full
PM: Adding info for No Bus:random
PM: Adding info for No Bus:urandom
PM: Adding info for No Bus:kmsg
PCI: Failed to allocate mem resource #10:4000000@e4000000 for 0000:02:04.0
PCI: Failed to allocate mem resource #10:4000000@e4000000 for 0000:02:04.1
PCI: Bus 3, cardbus bridge: 0000:02:04.0
IO window: 00003000-000030ff
IO window: 00003400-000034ff
PREFETCH window: 50000000-53ffffff
PCI: Bus 7, cardbus bridge: 0000:02:04.1
IO window: 00003800-000038ff
IO window: 00003c00-00003cff
PREFETCH window: 54000000-57ffffff
PCI: Bridge: 0000:00:0a.0
IO window: 3000-7fff
MEM window: e0100000-e17fffff
PREFETCH window: 50000000-57ffffff
PCI: Bridge: 0000:00:0b.0
IO window: disabled.
MEM window: e2000000-e2ffffff
PREFETCH window: f0000000-f80fffff
PCI: Setting latency timer of device 0000:00:0a.0 to 64
ACPI: PCI Interrupt Link [LNK1] enabled at IRQ 19
ACPI: PCI Interrupt 0000:02:04.0[A] -> Link [LNK1] -> GSI 19 (level, low) -> IRQ 19
ACPI: PCI Interrupt Link [LNK2] enabled at IRQ 18
ACPI: PCI Interrupt 0000:02:04.1[B] -> Link [LNK2] -> GSI 18 (level, low) -> IRQ 18
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 6, 262144 bytes)
TCP established hash table entries: 65536 (order: 10, 4194304 bytes)
TCP bind hash table entries: 65536 (order: 9, 3670016 bytes)
TCP: Hash tables configured (established 65536 bind 65536)
TCP reno registered
Simple Boot Flag at 0x37 set to 0x1
PM: Adding info for No Bus:mcelog
PM: Adding info for No Bus:msr0
PM: Adding info for No Bus:cpu0
PM: Adding info for No Bus:tty33
PM: Adding info for No Bus:tty34
PM: Adding info for No Bus:tty35
PM: Adding info for No Bus:tty36
PM: Adding info for No Bus:tty37
PM: Adding info for No Bus:tty38
PM: Adding info for No Bus:tty39
PM: Adding info for No Bus:tty40
PM: Adding info for No Bus:tty41
PM: Adding info for No Bus:tty42
PM: Adding info for No Bus:tty43
PM: Adding info for No Bus:tty44
PM: Adding info for No Bus:tty45
PM: Adding info for No Bus:tty46
PM: Adding info for No Bus:tty47
PM: Adding info for No Bus:tty48
PM: Adding info for No Bus:tty49
PM: Adding info for No Bus:tty50
PM: Adding info for No Bus:tty51
PM: Adding info for No Bus:tty52
PM: Adding info for No Bus:tty53
PM: Adding info for No Bus:tty54
PM: Adding info for No Bus:tty55
PM: Adding info for No Bus:tty56
PM: Adding info for No Bus:tty57
PM: Adding info for No Bus:tty58
PM: Adding info for No Bus:tty59
PM: Adding info for No Bus:tty60
PM: Adding info for No Bus:tty61
PM: Adding info for No Bus:tty62
PM: Adding info for No Bus:tty63
PM: Adding info for No Bus:rtc
Real Time Clock Driver v1.12ac
PM: Adding info for No Bus:hpet
Linux agpgart interface v0.102 (c) Dave Jones
Hangcheck: starting hangcheck timer 0.9.0 (tick is 180 seconds, margin is 60 seconds).
Hangcheck: Using get_cycles().
loop: module loaded
Marvell 88E1101: Registered new driver
Marvell 88E1111: Registered new driver
Marvell 88E1145: Registered new driver
Davicom DM9161E: Registered new driver
Davicom DM9161A: Registered new driver
Davicom DM9131: Registered new driver
Cicada Cis8204: Registered new driver
Cicada Cis8201: Registered new driver
LXT970: Registered new driver
LXT971: Registered new driver
QS6612: Registered new driver
SMSC LAN83C185: Registered new driver
Vitesse VSC8244: Registered new driver
Broadcom BCM5411: Registered new driver
Broadcom BCM5421: Registered new driver
Broadcom BCM5461: Registered new driver
ICPlus IP175C: Registered new driver
PM: Adding info for No Bus:lo
8139too Fast Ethernet driver 0.9.28
ACPI: PCI Interrupt 0000:02:01.0[A] -> Link [LNK2] -> GSI 18 (level, low) -> IRQ 18
PM: Adding info for No Bus:eth0
eth0: RealTek RTL8139 at 0xffffc2000001a800, 00:0f:b0:07:dc:49, IRQ 18
eth0: Identified 8139 chip type 'RTL-8101'
pata_amd 0000:00:08.0: version 0.3.8
PCI: Setting latency timer of device 0000:00:08.0 to 64
scsi0 : pata_amd
PM: Adding info for No Bus:host0
scsi1 : pata_amd
PM: Adding info for No Bus:host1
ata1: PATA max UDMA/133 cmd 0x00000000000101f0 ctl 0x00000000000103f6 bmdma 0x0000000000012080 irq 14
ata2: PATA max UDMA/133 cmd 0x0000000000010170 ctl 0x0000000000010376 bmdma 0x0000000000012088 irq 15
ata1.00: ata_hpa_resize: sectors = 195371568, hpa_sectors = 195371568
ata1.00: ATA-6: HTS721010G9AT00, MCZOA51A, max UDMA/100
ata1.00: 195371568 sectors, multi 16: LBA48
ata1.00: ata_hpa_resize: sectors = 195371568, hpa_sectors = 195371568
ata1.00: configured for UDMA/100
ata2.00: ATAPI, max MWDMA2
ata2.00: configured for MWDMA2
PM: Adding info for No Bus:target0:0:0
scsi 0:0:0:0: Direct-Access ATA HTS721010G9AT00 MCZO PQ: 0 ANSI: 5
PM: Adding info for scsi:0:0:0:0
sd 0:0:0:0: [sda] 195371568 512-byte hardware sectors (100030 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] 195371568 512-byte hardware sectors (100030 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 sda3
sd 0:0:0:0: [sda] Attached SCSI disk
PM: Adding info for No Bus:target1:0:0
scsi 1:0:0:0: CD-ROM HL-DT-ST DVD+RW GCA-4040N 1.19 PQ: 0 ANSI: 5
PM: Adding info for scsi:1:0:0:0
sr0: scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.20
sr 1:0:0:0: Attached scsi CD-ROM sr0
Yenta: CardBus bridge found at 0000:02:04.0 [103c:006d]
PCI: Bus 3, cardbus bridge: 0000:02:04.0
IO window: 00003000-000030ff
IO window: 00003400-000034ff
PREFETCH window: 50000000-53ffffff
MEM window: e0400000-e07fffff
Yenta: Enabling burst memory read transactions
Yenta: Using CSCINT to route CSC interrupts to PCI
Yenta: Routing CardBus interrupts to PCI
Yenta TI: socket 0000:02:04.0, mfunc 0x01111d22, devctl 0x64
Yenta: ISA IRQ mask 0x0cf8, PCI irq 19
Socket status: 30000086
Yenta: Raising subordinate bus# of parent bus (#02) from #02 to #06
pcmcia: parent PCI bridge I/O window: 0x3000 - 0x7fff
pcmcia: parent PCI bridge Memory window: 0xe0100000 - 0xe17fffff
pcmcia: parent PCI bridge Memory window: 0x50000000 - 0x57ffffff
PM: Adding info for No Bus:pcmcia_socket0
Yenta: CardBus bridge found at 0000:02:04.1 [103c:006d]
Yenta: Using CSCINT to route CSC interrupts to PCI
Yenta: Routing CardBus interrupts to PCI
Yenta TI: socket 0000:02:04.1, mfunc 0x01111d22, devctl 0x64
Yenta: ISA IRQ mask 0x0cf8, PCI irq 18
Socket status: 30000006
Yenta: Raising subordinate bus# of parent bus (#02) from #06 to #0a
pcmcia: parent PCI bridge I/O window: 0x3000 - 0x7fff
pcmcia: parent PCI bridge Memory window: 0xe0100000 - 0xe17fffff
pcmcia: parent PCI bridge Memory window: 0x50000000 - 0x57ffffff
PM: Adding info for No Bus:pcmcia_socket1
PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
PM: Adding info for platform:i8042
serio: i8042 KBD port at 0x60,0x64 irq 1
PM: Adding info for serio:serio0
serio: i8042 AUX port at 0x60,0x64 irq 12
PM: Adding info for serio:serio1
PM: Adding info for No Bus:psaux
mice: PS/2 mouse device common for all mice
TCP cubic registered
Initializing XFRM netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 15
powernow-k8: Found 1 AMD Athlon(tm) 64 Processor 3400+ processors (1 cpu cores) (version 2.00.00)
powernow-k8: 0 : fid 0xe (2200 MHz), vid 0x2
powernow-k8: 1 : fid 0xa (1800 MHz), vid 0xa
powernow-k8: 2 : fid 0x0 (800 MHz), vid 0x12
swsusp: Resume From Partition /dev/sda3
PM: Checking swsusp image.
input: AT Translated Set 2 keyboard as /class/input/input3
PM: Resume from disk failed.
Freeing unused kernel memory: 1100k freed
PM: Adding info for No Bus:vcs1
PM: Adding info for No Bus:vcsa1
reiser4: sda2: found disk format 4.0.0.
PM: Removing info for No Bus:vcs1
PM: Removing info for No Bus:vcsa1
PM: Adding info for No Bus:vcs1
PM: Adding info for No Bus:vcsa1
PM: Removing info for No Bus:vcs1
PM: Removing info for No Bus:vcsa1
PM: Adding info for No Bus:vcs1
PM: Adding info for No Bus:vcsa1
PM: Removing info for No Bus:vcs1
PM: Removing info for No Bus:vcsa1
PM: Adding info for No Bus:vcs1
PM: Adding info for No Bus:vcsa1
PM: Removing info for No Bus:vcs1
PM: Removing info for No Bus:vcsa1
PM: Adding info for No Bus:vcs1
PM: Adding info for No Bus:vcsa1
PM: Removing info for No Bus:vcs1
PM: Removing info for No Bus:vcsa1
PM: Adding info for No Bus:vcs1
PM: Adding info for No Bus:vcsa1
sd 0:0:0:0: Attached scsi generic sg0 type 0
sr 1:0:0:0: Attached scsi generic sg1 type 5
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
PCI: Enabling device 0000:00:02.0 (0004 -> 0006)
ACPI: PCI Interrupt Link [LUS0] enabled at IRQ 22
ACPI: PCI Interrupt 0000:00:02.0[A] -> Link [LUS0] -> GSI 22 (level, low) -> IRQ 22
PCI: Setting latency timer of device 0000:00:02.0 to 64
ohci_hcd 0000:00:02.0: OHCI Host Controller
ohci_hcd 0000:00:02.0: new USB bus registered, assigned bus number 1
ohci_hcd 0000:00:02.0: irq 22, io mem 0xe0000000
usb usb1: new device found, idVendor=0000, idProduct=0000
usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: OHCI Host Controller
usb usb1: Manufacturer: Linux 2.6.22-rc2-mm1 ohci_hcd
usb usb1: SerialNumber: 0000:00:02.0
PM: Adding info for usb:usb1
PM: Adding info for No Bus:usbdev1.1_ep00
usb usb1: configuration #1 chosen from 1 choice
PM: Adding info for usb:1-0:1.0
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 3 ports detected
PM: Adding info for No Bus:timer
PM: Adding info for No Bus:usbdev1.1_ep81
PCI: Enabling device 0000:00:02.1 (0004 -> 0006)
ACPI: PCI Interrupt Link [LUS1] enabled at IRQ 21
ACPI: PCI Interrupt 0000:00:02.1[B] -> Link [LUS1] -> GSI 21 (level, low) -> IRQ 21
PCI: Setting latency timer of device 0000:00:02.1 to 64
ohci_hcd 0000:00:02.1: OHCI Host Controller
ohci_hcd 0000:00:02.1: new USB bus registered, assigned bus number 2
ohci_hcd 0000:00:02.1: irq 21, io mem 0xe0001000
usb usb2: new device found, idVendor=0000, idProduct=0000
usb usb2: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: OHCI Host Controller
usb usb2: Manufacturer: Linux 2.6.22-rc2-mm1 ohci_hcd
usb usb2: SerialNumber: 0000:00:02.1
PM: Adding info for usb:usb2
PM: Adding info for No Bus:usbdev2.1_ep00
usb usb2: configuration #1 chosen from 1 choice
PM: Adding info for usb:2-0:1.0
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 3 ports detected
PM: Adding info for No Bus:usbdev2.1_ep81
ACPI: PCI Interrupt Link [LUS2] enabled at IRQ 20
PM: Adding info for usb:3-0:1.0
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 6 ports detected
PM: Adding info for No Bus:usbdev3.1_ep81
ACPI: PCI Interrupt Link [LACI] enabled at IRQ 22
ACPI: PCI Interrupt 0000:00:06.0[A] -> Link [LACI] -> GSI 22 (level, low) -> IRQ 22
PCI: Setting latency timer of device 0000:00:06.0 to 64
input: PS/2 Mouse as /class/input/input4
input: AlpsPS/2 ALPS GlidePoint as /class/input/input5
AC'97 0 analog subsections not ready
usb 3-2: new high speed USB device using ehci_hcd and address 2
usb 3-2: new device found, idVendor=050d, idProduct=0237
usb 3-2: new device strings: Mfr=0, Product=0, SerialNumber=0
PM: Adding info for usb:3-2
PM: Adding info for No Bus:usbdev3.2_ep00
usb 3-2: configuration #1 chosen from 1 choice
PM: Adding info for usb:3-2:1.0
hub 3-2:1.0: USB hub found
hub 3-2:1.0: 7 ports detected
PM: Adding info for No Bus:usbdev3.2_ep81
intel8x0_measure_ac97_clock: measured 50207 usecs
intel8x0: clocking to 47409
PM: Adding info for No Bus:card0
PM: Adding info for No Bus:pcmC0D2p
PM: Adding info for No Bus:pcmC0D1c
PM: Adding info for No Bus:pcmC0D0p
PM: Adding info for No Bus:pcmC0D0c
PM: Adding info for ac97:0-0:AD1981B
PM: Adding info for No Bus:controlC0
usb 3-2.1: new low speed USB device using ehci_hcd and address 4
usb 3-2.1: new device found, idVendor=045e, idProduct=0059
usb 3-2.1: new device strings: Mfr=1, Product=2, SerialNumber=0
usb 3-2.1: Product: Microsoft Wireless Intellimouse Explorer� 1.0A
usb 3-2.1: Manufacturer: Microsoft
PM: Adding info for usb:3-2.1
PM: Adding info for No Bus:usbdev3.4_ep00
usb 3-2.1: configuration #1 chosen from 1 choice
PM: Adding info for usb:3-2.1:1.0
PM: Adding info for No Bus:usbdev3.4_ep81
usb 3-2.2: new full speed USB device using ehci_hcd and address 5
usb 3-2.2: new device found, idVendor=0451, idProduct=2036
usb 3-2.2: new device strings: Mfr=0, Product=1, SerialNumber=0
usb 3-2.2: Product: General Purpose USB Hub
PM: Adding info for usb:3-2.2
PM: Adding info for No Bus:usbdev3.5_ep00
usb 3-2.2: configuration #1 chosen from 1 choice
PM: Adding info for usb:3-2.2:1.0
hub 3-2.2:1.0: USB hub found
hub 3-2.2:1.0: 2 ports detected
PM: Adding info for No Bus:usbdev3.5_ep81
usb 3-2.3: new high speed USB device using ehci_hcd and address 6
usb 3-2.3: new device found, idVendor=0781, idProduct=b4b5
usb 3-2.3: new device strings: Mfr=3, Product=4, SerialNumber=5
usb 3-2.3: Product: ImageMate 14 in 1 Reader/Writer
usb 3-2.3: Manufacturer: SanDisk
usb 3-2.3: SerialNumber: 0304237855
PM: Adding info for usb:3-2.3
PM: Adding info for No Bus:usbdev3.6_ep00
usb 3-2.3: configuration #1 chosen from 1 choice
PM: Adding info for usb:3-2.3:1.0
PM: Adding info for No Bus:usbdev3.6_ep81
PM: Adding info for No Bus:usbdev3.6_ep02
usbcore: registered new interface driver hiddev
Initializing USB Mass Storage driver...
usb 2-2: new full speed USB device using ohci_hcd and address 2
usb 2-2: new device found, idVendor=049f, idProduct=0086
usb 2-2: new device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-2: Product: Bluetooth by hp
usb 2-2: Manufacturer: ACTIONTEC
PM: Adding info for usb:2-2
PM: Adding info for No Bus:usbdev2.2_ep00
PM: Adding info for No Bus:usbdev2.2_ep83
PM: Adding info for bluetooth:hci0
input: Logitech USB Receiver as /class/input/input8
PM: Adding info for No Bus:hiddev0
PM: Adding info for No Bus:hidraw2
input,hiddev0,hidraw2: USB HID v1.10 Mouse [Logitech USB Receiver] on usb-0000:00:02.2-2.2.1
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver usbhid
drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
usbcore: registered new interface driver hci_usb
NET: Registered protocol family 10
ReiserFS: sda1: found reiserfs format "3.6" with standard journal
ReiserFS: sda1: using ordered data mode
ReiserFS: sda1: journal params: device sda1, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
ReiserFS: sda1: checking transaction log (sda1)
ReiserFS: sda1: Using r5 hash to sort names
Adding 2843496k swap on /dev/disk/by-uuid/fd35277a-8dc7-4afe-8257-fda61b757344. Priority:100 extents:1 across:2843496k
PM: Adding info for No Bus:target2:0:0
scsi 2:0:0:0: Direct-Access Generic STORAGE DEVICE 9339 PQ: 0 ANSI: 0
PM: Adding info for scsi:2:0:0:0
sd 2:0:0:0: [sdb] 8018640 512-byte hardware sectors (4106 MB)
sd 2:0:0:0: [sdb] Write Protect is off
sd 2:0:0:0: [sdb] Mode Sense: 03 00 00 00
sd 2:0:0:0: [sdb] Assuming drive cache: write through
sd 2:0:0:0: [sdb] 8018640 512-byte hardware sectors (4106 MB)
sd 2:0:0:0: [sdb] Write Protect is off
sd 2:0:0:0: [sdb] Mode Sense: 03 00 00 00
sd 2:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1
sd 2:0:0:0: [sdb] Attached SCSI removable disk
sd 2:0:0:0: Attached scsi generic sg2 type 0
PM: Adding info for No Bus:target2:0:1
PM: Removing info for No Bus:target2:0:1
PM: Adding info for No Bus:target2:0:2
PM: Removing info for No Bus:target2:0:2
PM: Adding info for No Bus:target2:0:3
PM: Removing info for No Bus:target2:0:3
PM: Adding info for No Bus:target2:0:4
PM: Removing info for No Bus:target2:0:4
PM: Adding info for No Bus:target2:0:5
PM: Removing info for No Bus:target2:0:5
PM: Adding info for No Bus:target2:0:6
PM: Removing info for No Bus:target2:0:6
PM: Adding info for No Bus:target2:0:7
PM: Removing info for No Bus:target2:0:7
usb-storage: device scan complete
PM: Removing info for No Bus:vcs1
PM: Removing info for No Bus:vcsa1
PM: Adding info for No Bus:vcs1
PM: Adding info for No Bus:vcsa1
PM: Adding info for No Bus:vcs2
PM: Adding info for No Bus:vcsa2
PM: Removing info for No Bus:vcs2
PM: Removing info for No Bus:vcsa2
PM: Adding info for No Bus:vcs3
PM: Adding info for No Bus:vcsa3
PM: Removing info for No Bus:vcs3
PM: Removing info for No Bus:vcsa3
PM: Adding info for No Bus:vcs4
PM: Adding info for No Bus:vcsa4
PM: Removing info for No Bus:vcs4
PM: Removing info for No Bus:vcsa4
PM: Adding info for No Bus:vcs5
PM: Adding info for No Bus:vcsa5
PM: Removing info for No Bus:vcs5
PM: Removing info for No Bus:vcsa5
PM: Adding info for No Bus:vcs6
PM: Adding info for No Bus:vcsa6
PM: Removing info for No Bus:vcs6
PM: Removing info for No Bus:vcsa6
PM: Adding info for No Bus:vcs7
PM: Adding info for No Bus:vcsa7
PM: Removing info for No Bus:vcs7
PM: Removing info for No Bus:vcsa7
PM: Adding info for No Bus:vcs8
PM: Adding info for No Bus:vcsa8
PM: Removing info for No Bus:vcs8
PM: Removing info for No Bus:vcsa8
PM: Adding info for No Bus:vcs9
PM: Adding info for No Bus:vcsa9
PM: Removing info for No Bus:vcs9
PM: Removing info for No Bus:vcsa9
PM: Adding info for No Bus:vcs10
PM: Adding info for No Bus:vcsa10
PM: Removing info for No Bus:vcs10
PM: Removing info for No Bus:vcsa10
PM: Adding info for No Bus:vcs11
PM: Adding info for No Bus:vcsa11
PM: Removing info for No Bus:vcs11
PM: Removing info for No Bus:vcsa11
PM: Adding info for No Bus:vcs2
PM: Adding info for No Bus:vcsa2
PM: Removing info for No Bus:vcs2
PM: Removing info for No Bus:vcsa2
PM: Adding info for No Bus:vcs3
PM: Adding info for No Bus:vcsa3
PM: Removing info for No Bus:vcs3
PM: Removing info for No Bus:vcsa3
PM: Adding info for No Bus:vcs4
PM: Adding info for No Bus:vcsa4
PM: Removing info for No Bus:vcs4
PM: Removing info for No Bus:vcsa4
PM: Adding info for No Bus:vcs5
PM: Adding info for No Bus:vcsa5
PM: Removing info for No Bus:vcs5
PM: Removing info for No Bus:vcsa5
PM: Adding info for No Bus:vcs6
PM: Adding info for No Bus:vcsa6
PM: Removing info for No Bus:vcs6
PM: Removing info for No Bus:vcsa6
PM: Adding info for No Bus:vcs7
PM: Adding info for No Bus:vcsa7
PM: Removing info for No Bus:vcs7
PM: Removing info for No Bus:vcsa7
PM: Adding info for No Bus:vcs8
PM: Adding info for No Bus:vcsa8
PM: Removing info for No Bus:vcs8
PM: Removing info for No Bus:vcsa8
PM: Adding info for No Bus:vcs9
PM: Adding info for No Bus:vcsa9
PM: Removing info for No Bus:vcs9
PM: Removing info for No Bus:vcsa9
PM: Adding info for No Bus:vcs10
PM: Adding info for No Bus:vcsa10
PM: Removing info for No Bus:vcs10
PM: Removing info for No Bus:vcsa10
PM: Adding info for No Bus:vcs11
PM: Adding info for No Bus:vcsa11
PM: Removing info for No Bus:vcs11
PM: Removing info for No Bus:vcsa11
Bluetooth: L2CAP ver 2.8
Bluetooth: L2CAP socket layer initialized
ata1.00: ata_hpa_resize: sectors = 195371568, hpa_sectors = 195371568
ata1.00: ata_hpa_resize: sectors = 195371568, hpa_sectors = 195371568
ata1.00: configured for UDMA/100
ata1: EH complete
sd 0:0:0:0: [sda] 195371568 512-byte hardware sectors (100030 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
BUG: at drivers/hid/hid-core.c:778 implement()

Call Trace:
[<ffffffff880bb5ac>] :hid:hid_output_report+0x1dc/0x270
[<ffffffff880c651a>] :usbhid:hid_submit_ctrl+0x7a/0x260
[<ffffffff880c68ee>] :usbhid:usbhid_submit_report+0x11e/0x200
[<ffffffff880c9312>] :usbhid:hiddev_ioctl+0x3e2/0xae0
[<ffffffff8053523e>] do_page_fault+0x42e/0x880
[<ffffffff802b486d>] do_ioctl+0x7d/0xa0
[<ffffffff802b4ab1>] vfs_ioctl+0x221/0x2d0
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff802b4ba9>] sys_ioctl+0x49/0x80
[<ffffffff8020a16e>] system_call+0x7e/0x83

BUG: at drivers/hid/hid-core.c:778 implement()

Call Trace:
[<ffffffff880bb5ac>] :hid:hid_output_report+0x1dc/0x270
[<ffffffff880c651a>] :usbhid:hid_submit_ctrl+0x7a/0x260
[<ffffffff880c68ee>] :usbhid:usbhid_submit_report+0x11e/0x200
[<ffffffff880c9312>] :usbhid:hiddev_ioctl+0x3e2/0xae0
[<ffffffff8053523e>] do_page_fault+0x42e/0x880
[<ffffffff802b486d>] do_ioctl+0x7d/0xa0
[<ffffffff802b4ab1>] vfs_ioctl+0x221/0x2d0
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff802b4ba9>] sys_ioctl+0x49/0x80
[<ffffffff8020a16e>] system_call+0x7e/0x83

BUG: at drivers/hid/hid-core.c:778 implement()

Call Trace:
[<ffffffff880bb5ac>] :hid:hid_output_report+0x1dc/0x270
[<ffffffff880c651a>] :usbhid:hid_submit_ctrl+0x7a/0x260
[<ffffffff880c68ee>] :usbhid:usbhid_submit_report+0x11e/0x200
[<ffffffff880c9312>] :usbhid:hiddev_ioctl+0x3e2/0xae0
[<ffffffff8053523e>] do_page_fault+0x42e/0x880
[<ffffffff802b486d>] do_ioctl+0x7d/0xa0
[<ffffffff802b4ab1>] vfs_ioctl+0x221/0x2d0
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff802b4ba9>] sys_ioctl+0x49/0x80
[<ffffffff8020a16e>] system_call+0x7e/0x83

BUG: at drivers/hid/hid-core.c:778 implement()

Call Trace:
[<ffffffff880bb5ac>] :hid:hid_output_report+0x1dc/0x270
[<ffffffff880c651a>] :usbhid:hid_submit_ctrl+0x7a/0x260
[<ffffffff880c68ee>] :usbhid:usbhid_submit_report+0x11e/0x200
[<ffffffff880c9312>] :usbhid:hiddev_ioctl+0x3e2/0xae0
[<ffffffff8053523e>] do_page_fault+0x42e/0x880
[<ffffffff802b486d>] do_ioctl+0x7d/0xa0
[<ffffffff802b4ab1>] vfs_ioctl+0x221/0x2d0
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff802b4ba9>] sys_ioctl+0x49/0x80
[<ffffffff8020a16e>] system_call+0x7e/0x83

BUG: at drivers/hid/hid-core.c:778 implement()

Call Trace:
[<ffffffff880bb5ac>] :hid:hid_output_report+0x1dc/0x270
[<ffffffff880c651a>] :usbhid:hid_submit_ctrl+0x7a/0x260
[<ffffffff880c68ee>] :usbhid:usbhid_submit_report+0x11e/0x200
[<ffffffff880c9312>] :usbhid:hiddev_ioctl+0x3e2/0xae0
[<ffffffff8053523e>] do_page_fault+0x42e/0x880
[<ffffffff802b486d>] do_ioctl+0x7d/0xa0
[<ffffffff802b4ab1>] vfs_ioctl+0x221/0x2d0
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff802b4ba9>] sys_ioctl+0x49/0x80
[<ffffffff8020a16e>] system_call+0x7e/0x83

BUG: at drivers/hid/hid-core.c:778 implement()

Call Trace:
[<ffffffff880bb5ac>] :hid:hid_output_report+0x1dc/0x270
[<ffffffff880c651a>] :usbhid:hid_submit_ctrl+0x7a/0x260
[<ffffffff880c68ee>] :usbhid:usbhid_submit_report+0x11e/0x200
[<ffffffff880c9312>] :usbhid:hiddev_ioctl+0x3e2/0xae0
[<ffffffff8053523e>] do_page_fault+0x42e/0x880
[<ffffffff802b486d>] do_ioctl+0x7d/0xa0
[<ffffffff802b4ab1>] vfs_ioctl+0x221/0x2d0
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff802b4ba9>] sys_ioctl+0x49/0x80
[<ffffffff8020a16e>] system_call+0x7e/0x83

BUG: at drivers/hid/hid-core.c:778 implement()

Call Trace:
[<ffffffff880bb5ac>] :hid:hid_output_report+0x1dc/0x270
[<ffffffff880c651a>] :usbhid:hid_submit_ctrl+0x7a/0x260
[<ffffffff880c68ee>] :usbhid:usbhid_submit_report+0x11e/0x200
[<ffffffff880c9312>] :usbhid:hiddev_ioctl+0x3e2/0xae0
[<ffffffff8053523e>] do_page_fault+0x42e/0x880
[<ffffffff802b486d>] do_ioctl+0x7d/0xa0
[<ffffffff802b4ab1>] vfs_ioctl+0x221/0x2d0
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff802b4ba9>] sys_ioctl+0x49/0x80
[<ffffffff8020a16e>] system_call+0x7e/0x83

BUG: at drivers/hid/hid-core.c:778 implement()

Call Trace:
[<ffffffff880bb5ac>] :hid:hid_output_report+0x1dc/0x270
[<ffffffff880c651a>] :usbhid:hid_submit_ctrl+0x7a/0x260
[<ffffffff880c68ee>] :usbhid:usbhid_submit_report+0x11e/0x200
[<ffffffff880c9312>] :usbhid:hiddev_ioctl+0x3e2/0xae0
[<ffffffff8053523e>] do_page_fault+0x42e/0x880
[<ffffffff802b486d>] do_ioctl+0x7d/0xa0
[<ffffffff802b4ab1>] vfs_ioctl+0x221/0x2d0
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff802b4ba9>] sys_ioctl+0x49/0x80
[<ffffffff8020a16e>] system_call+0x7e/0x83

eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
PM: Removing info for No Bus:vcs1
PM: Removing info for No Bus:vcsa1
PM: Adding info for No Bus:vcs1
PM: Adding info for No Bus:vcsa1
PM: Removing info for No Bus:vcs1
PM: Removing info for No Bus:vcsa1
PM: Adding info for No Bus:vcs1
PM: Adding info for No Bus:vcsa1
PM: Removing info for No Bus:vcs1
PM: Removing info for No Bus:vcsa1
PM: Adding info for No Bus:vcs1

=======================================================
[ INFO: possible circular locking dependency detected ]
2.6.22-rc2-mm1 #1
-------------------------------------------------------
rhythmbox/6976 is trying to acquire lock:
(&mm->mmap_sem){----}, at: [<ffffffff80534f8c>] do_page_fault+0x17c/0x880

but task is already holding lock:
(&data->latch){----}, at: [<ffffffff8034a701>] get_exclusive_access+0x11/0x20

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (&data->latch){----}:
[<ffffffff8025b8bc>] __lock_acquire+0xbfc/0x1030
[<ffffffff8025bd3b>] lock_acquire+0x4b/0x70
[<ffffffff8034a701>] get_exclusive_access+0x11/0x20
[<ffffffff80254c5f>] down_write+0x2f/0x40
[<ffffffff8034a701>] get_exclusive_access+0x11/0x20
[<ffffffff803498c8>] mmap_unix_file+0x58/0x140
[<ffffffff80292125>] mmap_region+0x195/0x540
[<ffffffff80292b2e>] do_mmap_pgoff+0x2fe/0x390
[<ffffffff80532b5f>] _spin_unlock_irq+0x2f/0x50
[<ffffffff802e2bca>] elf_map+0xfa/0x100
[<ffffffff802e5574>] load_elf_binary+0x1c14/0x2110
[<ffffffff80258a25>] add_lock_to_list+0x65/0xe0
[<ffffffff8025b98e>] __lock_acquire+0xcce/0x1030
[<ffffffff802820fe>] get_page_from_freelist+0x33e/0x520
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff80281fd5>] get_page_from_freelist+0x215/0x520
[<ffffffff8022f3d0>] load_aout_binary+0x0/0x980
[<ffffffff802e3960>] load_elf_binary+0x0/0x2110
[<ffffffff802ab3d6>] search_binary_handler+0xf6/0x290
[<ffffffff802ad05f>] do_execve+0x18f/0x250
[<ffffffff80208ab4>] sys_execve+0x44/0xb0
[<ffffffff8020a567>] stub_execve+0x67/0xb0
[<ffffffffffffffff>] 0xffffffffffffffff

-> #0 (&mm->mmap_sem){----}:
[<ffffffff80259b68>] print_circular_bug_header+0xe8/0xf0
[<ffffffff8025b6f2>] __lock_acquire+0xa32/0x1030
[<ffffffff80532b15>] _spin_unlock_irqrestore+0x65/0x80
[<ffffffff8025bd3b>] lock_acquire+0x4b/0x70
[<ffffffff80534f8c>] do_page_fault+0x17c/0x880
[<ffffffff80254b82>] down_read+0x32/0x40
[<ffffffff80534f8c>] do_page_fault+0x17c/0x880
[<ffffffff80532b54>] _spin_unlock_irq+0x24/0x50
[<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
[<ffffffff80532b15>] _spin_unlock_irqrestore+0x65/0x80
[<ffffffff8053318d>] error_exit+0x0/0x96
[<ffffffff8027c464>] file_read_actor+0x44/0x1a0
[<ffffffff8027c74f>] __lock_page+0x5f/0x70
[<ffffffff8027ced3>] do_generic_mapping_read+0x233/0x560
[<ffffffff8027c420>] file_read_actor+0x0/0x1a0
[<ffffffff8027f136>] generic_file_aio_read+0x106/0x1a0
[<ffffffff802a6c09>] do_sync_read+0xd9/0x120
[<ffffffff80258495>] lockdep_init_map+0x55/0x4e0
[<ffffffff802515e0>] autoremove_wake_function+0x0/0x30
[<ffffffff805329e9>] _spin_unlock+0x29/0x50
[<ffffffff8032caec>] reiser4_grab+0x8c/0xd0
[<ffffffff80348af4>] read_unix_file+0x454/0x490
[<ffffffff802a7585>] vfs_read+0xc5/0x180
[<ffffffff802a7a83>] sys_read+0x53/0x90
[<ffffffff8020a16e>] system_call+0x7e/0x83
[<ffffffffffffffff>] 0xffffffffffffffff

other info that might help us debug this:
usb 3-2: new high speed USB device using ehci_hcd and address 8
usb 3-2: new device found, idVendor=050d, idProduct=0237
usb 3-2: new device strings: Mfr=0, Product=0, SerialNumber=0
PM: Adding info for usb:3-2
PM: Adding info for No Bus:usbdev3.8_ep00
usb 3-2: configuration #1 chosen from 1 choice
PM: Adding info for usb:3-2:1.0
hub 3-2:1.0: USB hub found
hub 3-2:1.0: 7 ports detected
PM: Adding info for No Bus:usbdev3.8_ep81
usb 3-2.1: new low speed USB device using ehci_hcd and address 9
usb 3-2.1: new device found, idVendor=045e, idProduct=0059
usb 3-2.1: new device strings: Mfr=1, Product=2, SerialNumber=0
usb 3-2.1: Product: Microsoft Wireless Intellimouse Explorer� 1.0A
usb 3-2.1: Manufacturer: Microsoft
PM: Adding info for usb:3-2.1
PM: Adding info for No Bus:usbdev3.9_ep00
usb 3-2.1: configuration #1 chosen from 1 choice
PM: Adding info for usb:3-2.1:1.0
input: Microsoft Microsoft Wireless Intellimouse Explorer� 1.0A as /class/input/input9
PM: Adding info for No Bus:hidraw0
input,hidraw0: USB HID v1.10 Mouse [Microsoft Microsoft Wireless Intellimouse Explorer� 1.0A] on usb-0000:00:02.2-2.1
PM: Adding info for No Bus:usbdev3.9_ep81
usb 3-2.2: new full speed USB device using ehci_hcd and address 10
usb 3-2.2: new device found, idVendor=0451, idProduct=2036
usb 3-2.2: new device strings: Mfr=0, Product=1, SerialNumber=0
usb 3-2.2: Product: General Purpose USB Hub
PM: Adding info for usb:3-2.2
PM: Adding info for No Bus:usbdev3.10_ep00
usb 3-2.2: configuration #1 chosen from 1 choice
PM: Adding info for usb:3-2.2:1.0
hub 3-2.2:1.0: USB hub found
hub 3-2.2:1.0: 2 ports detected
PM: Adding info for No Bus:usbdev3.10_ep81
usb 3-2.3: new high speed USB device using ehci_hcd and address 11
usb 3-2.3: new device found, idVendor=0781, idProduct=b4b5
usb 3-2.3: new device strings: Mfr=3, Product=4, SerialNumber=5
usb 3-2.3: Product: ImageMate 14 in 1 Reader/Writer
usb 3-2.3: Manufacturer: SanDisk
usb 3-2.3: SerialNumber: 0304237855
PM: Adding info for usb:3-2.3
PM: Adding info for No Bus:usbdev3.11_ep00
usb 3-2.3: configuration #1 chosen from 1 choice
PM: Adding info for usb:3-2.3:1.0
scsi3 : SCSI emulation for USB Mass Storage devices
PM: Adding info for No Bus:host3
PM: Adding info for No Bus:usbdev3.11_ep81
PM: Adding info for No Bus:usbdev3.11_ep02
usb-storage: device found at 11
usb-storage: waiting for device to settle before scanning
usb 3-2.2.1: new low speed USB device using ehci_hcd and address 12
usb 3-2.2.1: new device found, idVendor=046d, idProduct=c704
usb 3-2.2.1: new device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-2.2.1: Product: USB Receiver
usb 3-2.2.1: Manufacturer: Logitech
usb 3-2.2.1: SerialNumber: 04E5EF
PM: Adding info for usb:3-2.2.1
PM: Adding info for No Bus:usbdev3.12_ep00
usb 3-2.2.1: configuration #1 chosen from 1 choice
PM: Adding info for usb:3-2.2.1:1.0
input: Logitech USB Receiver as /class/input/input10
PM: Adding info for No Bus:hidraw1
input,hidraw1: USB HID v1.10 Keyboard [Logitech USB Receiver] on usb-0000:00:02.2-2.2.1
PM: Adding info for No Bus:usbdev3.12_ep81
PM: Adding info for usb:3-2.2.1:1.1
input: Logitech USB Receiver as /class/input/input11
PM: Adding info for No Bus:hiddev0
PM: Adding info for No Bus:hidraw2
input,hiddev0,hidraw2: USB HID v1.10 Mouse [Logitech USB Receiver] on usb-0000:00:02.2-2.2.1
PM: Adding info for No Bus:usbdev3.12_ep82
PM: Adding info for No Bus:target3:0:0
scsi 3:0:0:0: Direct-Access Generic STORAGE DEVICE 9339 PQ: 0 ANSI: 0
PM: Adding info for scsi:3:0:0:0
sd 3:0:0:0: [sdb] 8018640 512-byte hardware sectors (4106 MB)
sd 3:0:0:0: [sdb] Write Protect is off
sd 3:0:0:0: [sdb] Mode Sense: 03 00 00 00
sd 3:0:0:0: [sdb] Assuming drive cache: write through
sd 3:0:0:0: [sdb] 8018640 512-byte hardware sectors (4106 MB)
sd 3:0:0:0: [sdb] Write Protect is off
sd 3:0:0:0: [sdb] Mode Sense: 03 00 00 00
sd 3:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1
sd 3:0:0:0: [sdb] Attached SCSI removable disk
sd 3:0:0:0: Attached scsi generic sg2 type 0
PM: Adding info for No Bus:target3:0:1
PM: Removing info for No Bus:target3:0:1
PM: Adding info for No Bus:target3:0:2
PM: Removing info for No Bus:target3:0:2
PM: Adding info for No Bus:target3:0:3
PM: Removing info for No Bus:target3:0:3
PM: Adding info for No Bus:target3:0:4
PM: Removing info for No Bus:target3:0:4
PM: Adding info for No Bus:target3:0:5
PM: Removing info for No Bus:target3:0:5
PM: Adding info for No Bus:target3:0:6
PM: Removing info for No Bus:target3:0:6
PM: Adding info for No Bus:target3:0:7
PM: Removing info for No Bus:target3:0:7
usb-storage: device scan complete

--
Zan Lynx <[email protected]>


Attachments:
signature.asc (189.00 B)
This is a digitally signed message part

2007-05-23 23:28:18

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007 17:17:09 -0600
Zan Lynx <[email protected]> wrote:

> On Wed, 2007-05-23 at 00:42 -0700, Andrew Morton wrote:
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
> >
> > - A new readahead patch series. This needs serious review and performance
> > testing please.
> >
> > - Added Ingo's CFS CPU scheduler
> >
> > - Xen dom-U support is now in the x86 tree.
>
> I am having weird problems with USB keyboard and mouse. The USB
> keyboard will drop keystrokes, but not all of them. The mouse seems to
> move fine but drops clicks. Could be that an occasional missed move
> event isn't noticeable. Nothing is logged when a key is dropped.
>
> However, I did have some of this when it was first booting:
>
> BUG: at drivers/hid/hid-core.c:778 implement()
>
> Call Trace:
> [<ffffffff880bb5ac>] :hid:hid_output_report+0x1dc/0x270
> [<ffffffff880c651a>] :usbhid:hid_submit_ctrl+0x7a/0x260
> [<ffffffff880c68ee>] :usbhid:usbhid_submit_report+0x11e/0x200
> [<ffffffff880c9312>] :usbhid:hiddev_ioctl+0x3e2/0xae0
> [<ffffffff8053523e>] do_page_fault+0x42e/0x880
> [<ffffffff802b486d>] do_ioctl+0x7d/0xa0
> [<ffffffff802b4ab1>] vfs_ioctl+0x221/0x2d0
> [<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
> [<ffffffff802b4ba9>] sys_ioctl+0x49/0x80
> [<ffffffff8020a16e>] system_call+0x7e/0x83
>
> Here's the entire dmesg:
>
> [ snippage ]
>

Thanks. Let's add some cc's.

2007-05-23 23:36:18

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007, Andrew Morton wrote:

> A few words in slub.txt, perhaps?



SLUB: More documentation

Update documentation to describe how to read a SLUB error report.
Add slub parameters to Documentation/kernel-parameters.

Signed-off-by: Christoph Lameter <[email protected]>

---
Documentation/kernel-parameters.txt | 37 +++++++++-
Documentation/vm/slub.txt | 133 +++++++++++++++++++++++++++++++++---
2 files changed, 157 insertions(+), 13 deletions(-)

Index: slub/Documentation/kernel-parameters.txt
===================================================================
--- slub.orig/Documentation/kernel-parameters.txt 2007-05-23 15:41:58.000000000 -0700
+++ slub/Documentation/kernel-parameters.txt 2007-05-23 15:57:07.000000000 -0700
@@ -1121,9 +1121,9 @@ and is between 256 and 4096 characters.
when set.
Format: <int>

- noaliencache [MM, NUMA] Disables the allcoation of alien caches in
- the slab allocator. Saves per-node memory, but will
- impact performance on real NUMA hardware.
+ noaliencache [MM, NUMA, SLAB] Disables the allocation of alien
+ caches in the slab allocator. Saves per-node memory,
+ but will impact performance.

noalign [KNL,ARM]

@@ -1610,6 +1610,37 @@ and is between 256 and 4096 characters.

slram= [HW,MTD]

+ slub_debug [MM, SLUB]
+ Enabling slub_debug will allow to determine the culprit
+ if slab objects become corrupted. Enabling slub_debug
+ creates guard zones around objects and poisons objects
+ when not in use. Also tracks the last alloc / free.
+ For more information see Documentation/vm/slub.txt.
+
+ slub_max_order= [MM, SLUB]
+ Determines the maximum allowed order for slabs. Setting
+ this too high may cause fragmentation.
+ For more information see Documentation/vm/slub.txt.
+
+ slub_min_objects= [M, SLUB]
+ The minimum objects per slab. SLUB will increase the
+ slab order up to slub_max_order to generate a
+ sufficiently big slab to satisfy the number of objects.
+ The higher the number of objects the smaller the overhead
+ of tracking slabs.
+ For more information see Documentation/vm/slub.txt.
+
+ slub_min_order= [MM, SLUB]
+ Determines the mininum page order for slabs. Must be
+ lower than slub_max_order
+ For more information see Documentation/vm/slub.txt.
+
+ slub_nomerge [MM, SLUB]
+ Disable merging of slabs of similar size. May be
+ necessary if there is some reason to distinguish
+ allocs to different slabs.
+ For more information see Documentation/vm/slub.txt.
+
smart2= [HW]
Format: <io1>[,<io2>[,...,<io8>]]

Index: slub/Documentation/vm/slub.txt
===================================================================
--- slub.orig/Documentation/vm/slub.txt 2007-05-23 15:59:05.000000000 -0700
+++ slub/Documentation/vm/slub.txt 2007-05-23 16:34:20.000000000 -0700
@@ -1,13 +1,9 @@
Short users guide for SLUB
--------------------------

-First of all slub should transparently replace SLAB. If you enable
-SLUB then everything should work the same (Note the word "should".
-There is likely not much value in that word at this point).
-
The basic philosophy of SLUB is very different from SLAB. SLAB
requires rebuilding the kernel to activate debug options for all
-SLABS. SLUB always includes full debugging but its off by default.
+slab caches. SLUB always includes full debugging but its off by default.
SLUB can enable debugging only for selected slabs in order to avoid
an impact on overall system performance which may make a bug more
difficult to find.
@@ -76,13 +72,28 @@ of objects.
Careful with tracing: It may spew out lots of information and never stop if
used on the wrong slab.

-SLAB Merging
+Slab merging
------------

-If no debugging is specified then SLUB may merge similar slabs together
+If no debug options are specified then SLUB may merge similar slabs together
in order to reduce overhead and increase cache hotness of objects.
slabinfo -a displays which slabs were merged together.

+Slab validation
+---------------
+
+SLUB can validate all object if the kernel was booted with slub_debug. In
+order to do so you must have the slabinfo tool. Then you can do
+
+slabinfo -v
+
+which will test all objects. Output will be generated to the syslog.
+
+This also works in a more limited way if boot was without slab debug.
+In that case slabinfo -v will simply tests all reachable objects. Usually
+these are in the cpu slabs and the partial slabs. Full slabs are not
+tracked by SLUB in a non debug situation.
+
Getting more performance
------------------------

@@ -91,9 +102,9 @@ list_lock once in a while to deal with p
governed by the order of the allocation for each slab. The allocations
can be influenced by kernel parameters:

-slub_min_objects=x (default 8)
+slub_min_objects=x (default 4)
slub_min_order=x (default 0)
-slub_max_order=x (default 4)
+slub_max_order=x (default 1)

slub_min_objects allows to specify how many objects must at least fit
into one slab in order for the allocation order to be acceptable.
@@ -109,5 +120,107 @@ longer be checked. This is useful to avo
super large order pages to fit slub_min_objects of a slab cache with
large object sizes into one high order page.

+SLUB Debug output
+-----------------
+
+Here is a sample of slub debug output:
+
+*** SLUB kmalloc-8: Redzone Active@0xc90f6d20 slab 0xc528c530 offset=3360 flags=0x400000c3 inuse=61 freelist=0xc90f6d58
+ Bytes b4 0xc90f6d10: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a ........ZZZZZZZZ
+ Object 0xc90f6d20: 31 30 31 39 2e 30 30 35 1019.005
+ Redzone 0xc90f6d28: 00 cc cc cc .
+FreePointer 0xc90f6d2c -> 0xc90f6d58
+Last alloc: get_modalias+0x61/0xf5 jiffies_ago=53 cpu=1 pid=554
+Filler 0xc90f6d50: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
+ [<c010523d>] dump_trace+0x63/0x1eb
+ [<c01053df>] show_trace_log_lvl+0x1a/0x2f
+ [<c010601d>] show_trace+0x12/0x14
+ [<c0106035>] dump_stack+0x16/0x18
+ [<c017e0fa>] object_err+0x143/0x14b
+ [<c017e2cc>] check_object+0x66/0x234
+ [<c017eb43>] __slab_free+0x239/0x384
+ [<c017f446>] kfree+0xa6/0xc6
+ [<c02e2335>] get_modalias+0xb9/0xf5
+ [<c02e23b7>] dmi_dev_uevent+0x27/0x3c
+ [<c027866a>] dev_uevent+0x1ad/0x1da
+ [<c0205024>] kobject_uevent_env+0x20a/0x45b
+ [<c020527f>] kobject_uevent+0xa/0xf
+ [<c02779f1>] store_uevent+0x4f/0x58
+ [<c027758e>] dev_attr_store+0x29/0x2f
+ [<c01bec4f>] sysfs_write_file+0x16e/0x19c
+ [<c0183ba7>] vfs_write+0xd1/0x15a
+ [<c01841d7>] sys_write+0x3d/0x72
+ [<c0104112>] sysenter_past_esp+0x5f/0x99
+ [<b7f7b410>] 0xb7f7b410
+ =======================
+@@@ SLUB kmalloc-8: Restoring redzone (0xcc) from 0xc90f6d28-0xc90f6d2b
+
+
+
+If SLUB encounters a corrupted object then it will perform the following
+actions
+
+1. Isolation and report of the issue
+
+This will be a message in the system log starting with
+
+*** SLUB <slab cache affected>: <What went wrong>@<object address>
+offset=<offset of object into slab> flags=<slabflags>
+inuse=<objects in use in this slab> freelist=<first free object in slab>
+
+2. Report on how the problem was dealt with in order to ensure the continued
+operation of the system.
+
+These are messages in the system log beginning with
+
+@@@ SLUB <slab cache affected>: <corrective action taken>
+
+
+In the above sample SLUB found that the Redzone of an active object has
+been overwritten. Here a string of 8 characters was written into a slab that
+has the length of 8 characters. However, a 8 character string needs a
+terminating 0. That zero has overwritten the first byte of the Redzone field.
+After reporting the details of the issue encountered the @@@ SLUB message
+tell us that SLUB has restored the redzone to its proper value and then
+system operations continue.
+
+Various types of lines can follow the @@@ SLUB line:
+
+Bytes b4 <address> : <bytes>
+ Show a few bytes before the object where the problem was detected.
+ Can be useful if the corruption does not stop with the start of the
+ object.
+
+Object <address> : <bytes>
+ The bytes of the object. If the object is inactive then the bytes
+ typically contain poisoning values. Any non poison value shows a
+ corruption by a write after free.
+
+Redzone <address> : <bytes>
+ The redzone following the object. The redzone is used to detect
+ writes after the object. All bytes should always have the same
+ value. If there is any deviation then it is due to a write after
+ the object boundary.
+
+Freepointer
+ The pointer to the next free object in the slab. May become
+ corrupted if overwriting continues after the red zone.
+
+Last alloc:
+Last free:
+ Shows the address from which the object was allocated/freed last.
+ We note the pid, the time and the cpu that did so. This is usually
+ the most useful information to figure out where things went wrong.
+ Here get_modalias did an kmalloc(8) instead of a kmalloc(9).
+
+Filler <address> : <bytes>
+ Unused data to fill up the space in order to get the next object
+ properly aligned. In the debug case we make sure that there are
+ at least 4 bytes of filler. This allow for the detection of writes
+ before the object.
+
+Following the filler will be a stackdump. That stackdump describes the
+location where the error was detected. The cause of the corruption is more
+likely to be found by looking at the information about the last alloc / free.

-Christoph Lameter, <[email protected]>, April 10, 2007
+Christoph Lameter, <[email protected]>, May 23, 2007

2007-05-23 23:41:19

by Jiri Kosina

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007, Zan Lynx wrote:

> I am having weird problems with USB keyboard and mouse. The USB
> keyboard will drop keystrokes, but not all of them. The mouse seems to
> move fine but drops clicks. Could be that an occasional missed move
> event isn't noticeable. Nothing is logged when a key is dropped.
> However, I did have some of this when it was first booting:
> BUG: at drivers/hid/hid-core.c:778 implement()
> Call Trace:
> [<ffffffff880bb5ac>] :hid:hid_output_report+0x1dc/0x270
> [<ffffffff880c651a>] :usbhid:hid_submit_ctrl+0x7a/0x260
> [<ffffffff880c68ee>] :usbhid:usbhid_submit_report+0x11e/0x200
> [<ffffffff880c9312>] :usbhid:hiddev_ioctl+0x3e2/0xae0
> [<ffffffff8053523e>] do_page_fault+0x42e/0x880
> [<ffffffff802b486d>] do_ioctl+0x7d/0xa0
> [<ffffffff802b4ab1>] vfs_ioctl+0x221/0x2d0
> [<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
> [<ffffffff802b4ba9>] sys_ioctl+0x49/0x80
> [<ffffffff8020a16e>] system_call+0x7e/0x83

OK, so something is touching one of your HID devices through hiddev, and
tries to push through it something that doesn't comply to the report
descriptor of the device. Are you aware of any userspace daemons running
which would touch /dev/hiddev*? (acupsd, nut, hid2hci, etc.).

Just for clarification, does situation get any better when you disable
hidraw, which I see you have enabled? (if that doesn't help, testing with
hiddev disabled should also be interesting - that would avoid the
possibility that userspace mocks the device up through hiddev).

> BUG: at include/linux/slub_def.h:83 kmalloc_index()
> Call Trace:
> [<ffffffff802a2e09>] get_slab+0xb9/0x180
> [<ffffffff802a2965>] kfree+0xc5/0x110
> [<ffffffff802a2fd4>] __kmalloc+0x24/0xc0
> [<ffffffff8049ab18>] get_modalias+0x68/0x120
> [<ffffffff8049ac07>] dmi_dev_uevent+0x37/0x60
> [<ffffffff80443b63>] dev_uevent+0x163/0x220
> [<ffffffff803bcc97>] kobject_uevent_env+0x2b7/0x500
> [<ffffffff80444f50>] bus_add_device+0x20/0x140
> [<ffffffff804438d2>] device_add+0x4a2/0x5b0
> [<ffffffff807a0a1b>] dmi_id_init+0x2cb/0x2f0
> [<ffffffff807866e6>] kernel_init+0x156/0x330
> [<ffffffff80531f5c>] trace_hardirqs_on_thunk+0x35/0x37
> [<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
> [<ffffffff8020b028>] child_rip+0xa/0x12
> [<ffffffff8020a710>] restore_args+0x0/0x30
> [<ffffffff803e6c10>] vgacon_cursor+0x0/0x1f0
> [<ffffffff8023ad5b>] release_console_sem+0x4b/0x230
> [<ffffffff80786590>] kernel_init+0x0/0x330
> [<ffffffff8020b01e>] child_rip+0x0/0x12

This BTW needs a separate bugreport.

> input,hiddev0,hidraw2: USB HID v1.10 Mouse [Logitech USB Receiver] on usb-0000:00:02.2-2.2.1

This is pretty strange. Mouse shouldn't be claimed by hiddev. Seems like
this mouse probably has some "interesting" HID report descriptor. Could
you please recompile with CONFIG_HID_DEBUG enabled and send me the output?

> =======================================================
> [ INFO: possible circular locking dependency detected ]
> 2.6.22-rc2-mm1 #1
> -------------------------------------------------------
> rhythmbox/6976 is trying to acquire lock:
> (&mm->mmap_sem){----}, at: [<ffffffff80534f8c>] do_page_fault+0x17c/0x880
> but task is already holding lock:
> (&data->latch){----}, at: [<ffffffff8034a701>] get_exclusive_access+0x11/0x20
> which lock already depends on the new lock.

This also needs a separate report.


Do you please have any indication which kernel versions were OK with the
same .config, with respect to the USB mouse/keyboard hogs you are seeing
with 2.6.22-rc2-mm1?

Thanks,

--
Jiri Kosina

2007-05-23 23:50:47

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007 17:17:09 -0600
Zan Lynx <[email protected]> wrote:

> =======================================================
> [ INFO: possible circular locking dependency detected ]
> 2.6.22-rc2-mm1 #1
> -------------------------------------------------------
> rhythmbox/6976 is trying to acquire lock:
> (&mm->mmap_sem){----}, at: [<ffffffff80534f8c>] do_page_fault+0x17c/0x880
>
> but task is already holding lock:
> (&data->latch){----}, at: [<ffffffff8034a701>] get_exclusive_access+0x11/0x20
>
> which lock already depends on the new lock.
>
>
> the existing dependency chain (in reverse order) is:
>
> -> #1 (&data->latch){----}:
> [<ffffffff8025b8bc>] __lock_acquire+0xbfc/0x1030
> [<ffffffff8025bd3b>] lock_acquire+0x4b/0x70
> [<ffffffff8034a701>] get_exclusive_access+0x11/0x20
> [<ffffffff80254c5f>] down_write+0x2f/0x40
> [<ffffffff8034a701>] get_exclusive_access+0x11/0x20
> [<ffffffff803498c8>] mmap_unix_file+0x58/0x140
> [<ffffffff80292125>] mmap_region+0x195/0x540
> [<ffffffff80292b2e>] do_mmap_pgoff+0x2fe/0x390
> [<ffffffff80532b5f>] _spin_unlock_irq+0x2f/0x50
> [<ffffffff802e2bca>] elf_map+0xfa/0x100
> [<ffffffff802e5574>] load_elf_binary+0x1c14/0x2110
> [<ffffffff80258a25>] add_lock_to_list+0x65/0xe0
> [<ffffffff8025b98e>] __lock_acquire+0xcce/0x1030
> [<ffffffff802820fe>] get_page_from_freelist+0x33e/0x520
> [<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
> [<ffffffff80281fd5>] get_page_from_freelist+0x215/0x520
> [<ffffffff8022f3d0>] load_aout_binary+0x0/0x980
> [<ffffffff802e3960>] load_elf_binary+0x0/0x2110
> [<ffffffff802ab3d6>] search_binary_handler+0xf6/0x290
> [<ffffffff802ad05f>] do_execve+0x18f/0x250
> [<ffffffff80208ab4>] sys_execve+0x44/0xb0
> [<ffffffff8020a567>] stub_execve+0x67/0xb0
> [<ffffffffffffffff>] 0xffffffffffffffff
>
> -> #0 (&mm->mmap_sem){----}:
> [<ffffffff80259b68>] print_circular_bug_header+0xe8/0xf0
> [<ffffffff8025b6f2>] __lock_acquire+0xa32/0x1030
> [<ffffffff80532b15>] _spin_unlock_irqrestore+0x65/0x80
> [<ffffffff8025bd3b>] lock_acquire+0x4b/0x70
> [<ffffffff80534f8c>] do_page_fault+0x17c/0x880
> [<ffffffff80254b82>] down_read+0x32/0x40
> [<ffffffff80534f8c>] do_page_fault+0x17c/0x880
> [<ffffffff80532b54>] _spin_unlock_irq+0x24/0x50
> [<ffffffff8025a711>] trace_hardirqs_on+0xc1/0x160
> [<ffffffff80532b15>] _spin_unlock_irqrestore+0x65/0x80
> [<ffffffff8053318d>] error_exit+0x0/0x96
> [<ffffffff8027c464>] file_read_actor+0x44/0x1a0
> [<ffffffff8027c74f>] __lock_page+0x5f/0x70
> [<ffffffff8027ced3>] do_generic_mapping_read+0x233/0x560
> [<ffffffff8027c420>] file_read_actor+0x0/0x1a0
> [<ffffffff8027f136>] generic_file_aio_read+0x106/0x1a0
> [<ffffffff802a6c09>] do_sync_read+0xd9/0x120
> [<ffffffff80258495>] lockdep_init_map+0x55/0x4e0
> [<ffffffff802515e0>] autoremove_wake_function+0x0/0x30
> [<ffffffff805329e9>] _spin_unlock+0x29/0x50
> [<ffffffff8032caec>] reiser4_grab+0x8c/0xd0
> [<ffffffff80348af4>] read_unix_file+0x454/0x490
> [<ffffffff802a7585>] vfs_read+0xc5/0x180
> [<ffffffff802a7a83>] sys_read+0x53/0x90
> [<ffffffff8020a16e>] system_call+0x7e/0x83
> [<ffffffffffffffff>] 0xffffffffffffffff

This one is a reiser4 error. cc added.

2007-05-24 01:17:47

by Randy Dunlap

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007 16:36:07 -0700 (PDT) Christoph Lameter wrote:

> On Wed, 23 May 2007, Andrew Morton wrote:
>
> > A few words in slub.txt, perhaps?

Thanks for the update. A few nits below.

> SLUB: More documentation
>
> Update documentation to describe how to read a SLUB error report.
> Add slub parameters to Documentation/kernel-parameters.
>
> Signed-off-by: Christoph Lameter <[email protected]>
>
> ---
> Documentation/kernel-parameters.txt | 37 +++++++++-
> Documentation/vm/slub.txt | 133 +++++++++++++++++++++++++++++++++---
> 2 files changed, 157 insertions(+), 13 deletions(-)
>
> Index: slub/Documentation/kernel-parameters.txt
> ===================================================================
> --- slub.orig/Documentation/kernel-parameters.txt 2007-05-23 15:41:58.000000000 -0700
> +++ slub/Documentation/kernel-parameters.txt 2007-05-23 15:57:07.000000000 -0700
> @@ -1610,6 +1610,37 @@ and is between 256 and 4096 characters.
>
> slram= [HW,MTD]
>
> + slub_debug [MM, SLUB]
> + Enabling slub_debug will allow to determine the culprit

s/will allow/allows/
then
allows _____ (the verb needs an object)
e.g., someone | us | you ([email protected] :)

> + if slab objects become corrupted. Enabling slub_debug
> + creates guard zones around objects and poisons objects
> + when not in use. Also tracks the last alloc / free.
> + For more information see Documentation/vm/slub.txt.
> +
> + slub_max_order= [MM, SLUB]
> + Determines the maximum allowed order for slabs. Setting
> + this too high may cause fragmentation.
> + For more information see Documentation/vm/slub.txt.
> +
> + slub_min_objects= [M, SLUB]

MM

> + The minimum objects per slab. SLUB will increase the
> + slab order up to slub_max_order to generate a
> + sufficiently big slab to satisfy the number of objects.
> + The higher the number of objects the smaller the overhead
> + of tracking slabs.
> + For more information see Documentation/vm/slub.txt.
> +

> Index: slub/Documentation/vm/slub.txt
> ===================================================================
> --- slub.orig/Documentation/vm/slub.txt 2007-05-23 15:59:05.000000000 -0700
> +++ slub/Documentation/vm/slub.txt 2007-05-23 16:34:20.000000000 -0700
> @@ -1,13 +1,9 @@
> Short users guide for SLUB
> --------------------------
>
> -First of all slub should transparently replace SLAB. If you enable
> -SLUB then everything should work the same (Note the word "should".
> -There is likely not much value in that word at this point).
> -
> The basic philosophy of SLUB is very different from SLAB. SLAB
> requires rebuilding the kernel to activate debug options for all
> -SLABS. SLUB always includes full debugging but its off by default.
> +slab caches. SLUB always includes full debugging but its off by default.

it is

> SLUB can enable debugging only for selected slabs in order to avoid
> an impact on overall system performance which may make a bug more
> difficult to find.
> @@ -76,13 +72,28 @@ of objects.
> Careful with tracing: It may spew out lots of information and never stop if
> used on the wrong slab.
>
> -SLAB Merging
> +Slab merging
> ------------
>
> -If no debugging is specified then SLUB may merge similar slabs together
> +If no debug options are specified then SLUB may merge similar slabs together
> in order to reduce overhead and increase cache hotness of objects.
> slabinfo -a displays which slabs were merged together.
>
> +Slab validation
> +---------------
> +
> +SLUB can validate all object if the kernel was booted with slub_debug. In
> +order to do so you must have the slabinfo tool. Then you can do
> +
> +slabinfo -v
> +
> +which will test all objects. Output will be generated to the syslog.
> +
> +This also works in a more limited way if boot was without slab debug.
> +In that case slabinfo -v will simply tests all reachable objects. Usually

drop: will

> +these are in the cpu slabs and the partial slabs. Full slabs are not

CPU

> +tracked by SLUB in a non debug situation.
> +
> Getting more performance
> ------------------------
>
> @@ -91,9 +102,9 @@ list_lock once in a while to deal with p
> governed by the order of the allocation for each slab. The allocations
> can be influenced by kernel parameters:
>
> -slub_min_objects=x (default 8)
> +slub_min_objects=x (default 4)
> slub_min_order=x (default 0)
> -slub_max_order=x (default 4)
> +slub_max_order=x (default 1)
>
> slub_min_objects allows to specify how many objects must at least fit
> into one slab in order for the allocation order to be acceptable.
> @@ -109,5 +120,107 @@ longer be checked. This is useful to avo
> super large order pages to fit slub_min_objects of a slab cache with
> large object sizes into one high order page.
>
> +SLUB Debug output
> +-----------------
> +
> +Here is a sample of slub debug output:
> +
> +@@@ SLUB kmalloc-8: Restoring redzone (0xcc) from 0xc90f6d28-0xc90f6d2b
> +
...
> +
> +If SLUB encounters a corrupted object then it will perform the following
> +actions

actions:

> +
> +1. Isolation and report of the issue
> +
> +This will be a message in the system log starting with
> +
> +*** SLUB <slab cache affected>: <What went wrong>@<object address>
> +offset=<offset of object into slab> flags=<slabflags>
> +inuse=<objects in use in this slab> freelist=<first free object in slab>
> +
> +2. Report on how the problem was dealt with in order to ensure the continued
> +operation of the system.
> +
> +These are messages in the system log beginning with
> +
> +@@@ SLUB <slab cache affected>: <corrective action taken>
> +
> +
> +In the above sample SLUB found that the Redzone of an active object has
> +been overwritten. Here a string of 8 characters was written into a slab that
> +has the length of 8 characters. However, a 8 character string needs a
> +terminating 0. That zero has overwritten the first byte of the Redzone field.
> +After reporting the details of the issue encountered the @@@ SLUB message
> +tell us that SLUB has restored the redzone to its proper value and then
> +system operations continue.
> +
> +Various types of lines can follow the @@@ SLUB line:
> +
> +Bytes b4 <address> : <bytes>
> + Show a few bytes before the object where the problem was detected.
> + Can be useful if the corruption does not stop with the start of the
> + object.
> +
> +Object <address> : <bytes>
> + The bytes of the object. If the object is inactive then the bytes
> + typically contain poisoning values. Any non poison value shows a

non-poison

> + corruption by a write after free.
> +
> +Redzone <address> : <bytes>
> + The redzone following the object. The redzone is used to detect
> + writes after the object. All bytes should always have the same
> + value. If there is any deviation then it is due to a write after
> + the object boundary.
> +
> +Freepointer
> + The pointer to the next free object in the slab. May become
> + corrupted if overwriting continues after the red zone.
> +
> +Last alloc:
> +Last free:
> + Shows the address from which the object was allocated/freed last.
> + We note the pid, the time and the cpu that did so. This is usually

CPU

> + the most useful information to figure out where things went wrong.
> + Here get_modalias did an kmalloc(8) instead of a kmalloc(9).
> +
> +Filler <address> : <bytes>
> + Unused data to fill up the space in order to get the next object
> + properly aligned. In the debug case we make sure that there are
> + at least 4 bytes of filler. This allow for the detection of writes
> + before the object.
> +
> +Following the filler will be a stackdump. That stackdump describes the
> +location where the error was detected. The cause of the corruption is more
> +likely to be found by looking at the information about the last alloc / free.



How large is the RedZone? Is it a fixed size or does it vary?

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

2007-05-24 02:48:55

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007, Randy Dunlap wrote:

> > > A few words in slub.txt, perhaps?
>
> Thanks for the update. A few nits below.

Ok will get the nits out soon.

> How large is the RedZone? Is it a fixed size or does it vary?

The red zone are between 1 byte and a full word. If the object does not
end at a word boundary then we fill up to the next word. If it ends on a
word boundary then a full word of red zone bytes are inserted.


2007-05-24 03:01:05

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

New version with Randy's fixes:


SLUB: More documentation

Update documentation to describe how to read a SLUB error report.
Add slub parameters to Documentation/kernel-parameters.

Signed-off-by: Christoph Lameter <[email protected]>

---
Documentation/kernel-parameters.txt | 37 +++++++++-
Documentation/vm/slub.txt | 133 +++++++++++++++++++++++++++++++++---
2 files changed, 157 insertions(+), 13 deletions(-)

Index: slub/Documentation/kernel-parameters.txt
===================================================================
--- slub.orig/Documentation/kernel-parameters.txt 2007-05-23 19:34:49.000000000 -0700
+++ slub/Documentation/kernel-parameters.txt 2007-05-23 19:58:04.000000000 -0700
@@ -1098,9 +1098,9 @@ and is between 256 and 4096 characters.
when set.
Format: <int>

- noaliencache [MM, NUMA] Disables the allcoation of alien caches in
- the slab allocator. Saves per-node memory, but will
- impact performance on real NUMA hardware.
+ noaliencache [MM, NUMA, SLAB] Disables the allocation of alien
+ caches in the slab allocator. Saves per-node memory,
+ but will impact performance.

noalign [KNL,ARM]

@@ -1589,6 +1589,37 @@ and is between 256 and 4096 characters.

slram= [HW,MTD]

+ slub_debug [MM, SLUB]
+ Enabling slub_debug allows to determine the culprit
+ if slab objects become corrupted. Enabling slub_debug
+ creates guard zones around objects and poisons objects
+ when not in use. Also tracks the last alloc / free.
+ For more information see Documentation/vm/slub.txt.
+
+ slub_max_order= [MM, SLUB]
+ Determines the maximum allowed order for slabs. Setting
+ this too high may cause fragmentation.
+ For more information see Documentation/vm/slub.txt.
+
+ slub_min_objects= [MM, SLUB]
+ The minimum objects per slab. SLUB will increase the
+ slab order up to slub_max_order to generate a
+ sufficiently big slab to satisfy the number of objects.
+ The higher the number of objects the smaller the overhead
+ of tracking slabs.
+ For more information see Documentation/vm/slub.txt.
+
+ slub_min_order= [MM, SLUB]
+ Determines the mininum page order for slabs. Must be
+ lower than slub_max_order
+ For more information see Documentation/vm/slub.txt.
+
+ slub_nomerge [MM, SLUB]
+ Disable merging of slabs of similar size. May be
+ necessary if there is some reason to distinguish
+ allocs to different slabs.
+ For more information see Documentation/vm/slub.txt.
+
smart2= [HW]
Format: <io1>[,<io2>[,...,<io8>]]

Index: slub/Documentation/vm/slub.txt
===================================================================
--- slub.orig/Documentation/vm/slub.txt 2007-05-23 19:34:49.000000000 -0700
+++ slub/Documentation/vm/slub.txt 2007-05-23 19:59:45.000000000 -0700
@@ -1,13 +1,9 @@
Short users guide for SLUB
--------------------------

-First of all slub should transparently replace SLAB. If you enable
-SLUB then everything should work the same (Note the word "should".
-There is likely not much value in that word at this point).
-
The basic philosophy of SLUB is very different from SLAB. SLAB
requires rebuilding the kernel to activate debug options for all
-SLABS. SLUB always includes full debugging but its off by default.
+slab caches. SLUB always includes full debugging but it is off by default.
SLUB can enable debugging only for selected slabs in order to avoid
an impact on overall system performance which may make a bug more
difficult to find.
@@ -76,13 +72,28 @@ of objects.
Careful with tracing: It may spew out lots of information and never stop if
used on the wrong slab.

-SLAB Merging
+Slab merging
------------

-If no debugging is specified then SLUB may merge similar slabs together
+If no debug options are specified then SLUB may merge similar slabs together
in order to reduce overhead and increase cache hotness of objects.
slabinfo -a displays which slabs were merged together.

+Slab validation
+---------------
+
+SLUB can validate all object if the kernel was booted with slub_debug. In
+order to do so you must have the slabinfo tool. Then you can do
+
+slabinfo -v
+
+which will test all objects. Output will be generated to the syslog.
+
+This also works in a more limited way if boot was without slab debug.
+In that case slabinfo -v simply tests all reachable objects. Usually
+these are in the cpu slabs and the partial slabs. Full slabs are not
+tracked by SLUB in a non debug situation.
+
Getting more performance
------------------------

@@ -91,9 +102,9 @@ list_lock once in a while to deal with p
governed by the order of the allocation for each slab. The allocations
can be influenced by kernel parameters:

-slub_min_objects=x (default 8)
+slub_min_objects=x (default 4)
slub_min_order=x (default 0)
-slub_max_order=x (default 4)
+slub_max_order=x (default 1)

slub_min_objects allows to specify how many objects must at least fit
into one slab in order for the allocation order to be acceptable.
@@ -109,5 +120,107 @@ longer be checked. This is useful to avo
super large order pages to fit slub_min_objects of a slab cache with
large object sizes into one high order page.

+SLUB Debug output
+-----------------
+
+Here is a sample of slub debug output:
+
+*** SLUB kmalloc-8: Redzone Active@0xc90f6d20 slab 0xc528c530 offset=3360 flags=0x400000c3 inuse=61 freelist=0xc90f6d58
+ Bytes b4 0xc90f6d10: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a ........ZZZZZZZZ
+ Object 0xc90f6d20: 31 30 31 39 2e 30 30 35 1019.005
+ Redzone 0xc90f6d28: 00 cc cc cc .
+FreePointer 0xc90f6d2c -> 0xc90f6d58
+Last alloc: get_modalias+0x61/0xf5 jiffies_ago=53 cpu=1 pid=554
+Filler 0xc90f6d50: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
+ [<c010523d>] dump_trace+0x63/0x1eb
+ [<c01053df>] show_trace_log_lvl+0x1a/0x2f
+ [<c010601d>] show_trace+0x12/0x14
+ [<c0106035>] dump_stack+0x16/0x18
+ [<c017e0fa>] object_err+0x143/0x14b
+ [<c017e2cc>] check_object+0x66/0x234
+ [<c017eb43>] __slab_free+0x239/0x384
+ [<c017f446>] kfree+0xa6/0xc6
+ [<c02e2335>] get_modalias+0xb9/0xf5
+ [<c02e23b7>] dmi_dev_uevent+0x27/0x3c
+ [<c027866a>] dev_uevent+0x1ad/0x1da
+ [<c0205024>] kobject_uevent_env+0x20a/0x45b
+ [<c020527f>] kobject_uevent+0xa/0xf
+ [<c02779f1>] store_uevent+0x4f/0x58
+ [<c027758e>] dev_attr_store+0x29/0x2f
+ [<c01bec4f>] sysfs_write_file+0x16e/0x19c
+ [<c0183ba7>] vfs_write+0xd1/0x15a
+ [<c01841d7>] sys_write+0x3d/0x72
+ [<c0104112>] sysenter_past_esp+0x5f/0x99
+ [<b7f7b410>] 0xb7f7b410
+ =======================
+@@@ SLUB kmalloc-8: Restoring redzone (0xcc) from 0xc90f6d28-0xc90f6d2b
+
+
+
+If SLUB encounters a corrupted object then it will perform the following
+actions:
+
+1. Isolation and report of the issue
+
+This will be a message in the system log starting with
+
+*** SLUB <slab cache affected>: <What went wrong>@<object address>
+offset=<offset of object into slab> flags=<slabflags>
+inuse=<objects in use in this slab> freelist=<first free object in slab>
+
+2. Report on how the problem was dealt with in order to ensure the continued
+operation of the system.
+
+These are messages in the system log beginning with
+
+@@@ SLUB <slab cache affected>: <corrective action taken>
+
+
+In the above sample SLUB found that the Redzone of an active object has
+been overwritten. Here a string of 8 characters was written into a slab that
+has the length of 8 characters. However, a 8 character string needs a
+terminating 0. That zero has overwritten the first byte of the Redzone field.
+After reporting the details of the issue encountered the @@@ SLUB message
+tell us that SLUB has restored the redzone to its proper value and then
+system operations continue.
+
+Various types of lines can follow the @@@ SLUB line:
+
+Bytes b4 <address> : <bytes>
+ Show a few bytes before the object where the problem was detected.
+ Can be useful if the corruption does not stop with the start of the
+ object.
+
+Object <address> : <bytes>
+ The bytes of the object. If the object is inactive then the bytes
+ typically contain poisoning values. Any non-poison value shows a
+ corruption by a write after free.
+
+Redzone <address> : <bytes>
+ The redzone following the object. The redzone is used to detect
+ writes after the object. All bytes should always have the same
+ value. If there is any deviation then it is due to a write after
+ the object boundary.
+
+Freepointer
+ The pointer to the next free object in the slab. May become
+ corrupted if overwriting continues after the red zone.
+
+Last alloc:
+Last free:
+ Shows the address from which the object was allocated/freed last.
+ We note the pid, the time and the CPU that did so. This is usually
+ the most useful information to figure out where things went wrong.
+ Here get_modalias() did an kmalloc(8) instead of a kmalloc(9).
+
+Filler <address> : <bytes>
+ Unused data to fill up the space in order to get the next object
+ properly aligned. In the debug case we make sure that there are
+ at least 4 bytes of filler. This allow for the detection of writes
+ before the object.
+
+Following the filler will be a stackdump. That stackdump describes the
+location where the error was detected. The cause of the corruption is more
+likely to be found by looking at the information about the last alloc / free.

-Christoph Lameter, <[email protected]>, April 10, 2007
+Christoph Lameter, <[email protected]>, May 23, 2007

2007-05-24 03:21:21

by Randy Dunlap

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007 20:00:52 -0700 (PDT) Christoph Lameter wrote:

> New version with Randy's fixes:

well... :)


> Index: slub/Documentation/kernel-parameters.txt
> ===================================================================
> --- slub.orig/Documentation/kernel-parameters.txt 2007-05-23 19:34:49.000000000 -0700
> +++ slub/Documentation/kernel-parameters.txt 2007-05-23 19:58:04.000000000 -0700
> @@ -1589,6 +1589,37 @@ and is between 256 and 4096 characters.
>
> slram= [HW,MTD]
>
> + slub_debug [MM, SLUB]
> + Enabling slub_debug allows to determine the culprit

allows ___(who)____

> + if slab objects become corrupted. Enabling slub_debug
> + creates guard zones around objects and poisons objects
> + when not in use. Also tracks the last alloc / free.
> + For more information see Documentation/vm/slub.txt.
> +

> + slub_min_order= [MM, SLUB]
> + Determines the mininum page order for slabs. Must be
> + lower than slub_max_order

^. (end with period)

> + For more information see Documentation/vm/slub.txt.


> Index: slub/Documentation/vm/slub.txt
> ===================================================================
> --- slub.orig/Documentation/vm/slub.txt 2007-05-23 19:34:49.000000000 -0700
> +++ slub/Documentation/vm/slub.txt 2007-05-23 19:59:45.000000000 -0700

> +Slab validation
> +---------------
> +
> +SLUB can validate all object if the kernel was booted with slub_debug. In
> +order to do so you must have the slabinfo tool. Then you can do
> +
> +slabinfo -v
> +
> +which will test all objects. Output will be generated to the syslog.
> +
> +This also works in a more limited way if boot was without slab debug.
> +In that case slabinfo -v simply tests all reachable objects. Usually
> +these are in the cpu slabs and the partial slabs. Full slabs are not

CPU

> +tracked by SLUB in a non debug situation.


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

2007-05-24 03:29:16

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

Hi Jiri,

On Wednesday 23 May 2007 19:40, Jiri Kosina wrote:
> This is pretty strange. Mouse shouldn't be claimed by hiddev. Seems like
> this mouse probably has some "interesting" HID report descriptor. Could
> you please recompile with CONFIG_HID_DEBUG enabled and send me the output?
>

It looks like you are now in the same position I was some time ago WRT
to debug information for i8042 - constantly asking people to enable
debug, recompile and send the results.

May I recommend changing CONFIG_HID_DEBUG to "default y if !EMBEDDED" and
controlling debug output via a module parameter? -ENOPATCH though...

--
Dmitry

2007-05-24 07:28:48

by Jiri Kosina

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Wed, 23 May 2007, Dmitry Torokhov wrote:

> It looks like you are now in the same position I was some time ago WRT
> to debug information for i8042 - constantly asking people to enable
> debug, recompile and send the results. May I recommend changing
> CONFIG_HID_DEBUG to "default y if !EMBEDDED" and controlling debug
> output via a module parameter? -ENOPATCH though...

Hi Dmitry,

this is exactly what I have been thinking a couple of days ago, I am
currently in the process of creating a patch, it's quite annoying to ask
people to recompile kernel every time.

Thanks,

--
Jiri Kosina

2007-05-24 07:31:52

by Ingo Molnar

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1


* Christoph Lameter <[email protected]> wrote:

> +SLUB Debug output
> +-----------------
> +
> +Here is a sample of slub debug output:
> +
> +*** SLUB kmalloc-8: Redzone Active@0xc90f6d20 slab 0xc528c530 offset=3360 flags=0x400000c3 inuse=61 freelist=0xc90f6d58
> + Bytes b4 0xc90f6d10: 00 00 00 00 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a ........ZZZZZZZZ
> + Object 0xc90f6d20: 31 30 31 39 2e 30 30 35 1019.005
> + Redzone 0xc90f6d28: 00 cc cc cc .
> +FreePointer 0xc90f6d2c -> 0xc90f6d58
> +Last alloc: get_modalias+0x61/0xf5 jiffies_ago=53 cpu=1 pid=554
> +Filler 0xc90f6d50: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ

when constructing debug output it's a good idea to make it as
'context-free' as possible. I.e. instead of saying 'Filler' and
explaining it somewhere in Documentation/*, just say:

Expected memory values at 0xc90f6d50: 5a 5a 5a 5a 5a 5a 5a 5a
... but found the following values: 12 34 56 78 90 12 34 56

(or whatever it means)

please also put in one of the keywords as the first word of whatever
SLUB prints:

BUG: ...
WARNING: ...
INFO: ...

the output should be compact, but never at the price of
understandability. For example i tried to make lockdep output as
self-explanatory as possible - and a good portion of lockdep.c is about
having around the kind of information to make the error more
understandable (tracking lock-acquire stacktraces, tracking
initialization points, tracking initialization-time symbol names, etc.),
and there's even quite some algorithmic complexity from that. I probably
spent more time on making lockdep output easier to decode than on any
other sub-feature of lockdep. The output format literally went over
hundreds of revisions. Output to humans is _the_ most important thing
that a debug facility can do, sometimes more important than the
debugging it offers ;-) And even the existing lockdep output sometimes
confuses people.

Ingo

2007-05-24 10:36:37

by Jeremy Fitzhardinge

[permalink] [raw]
Subject: rmmod e1000 hangs (Was Re: 2.6.22-rc2-mm1)

Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
>

I got a hang while rmmodding e1000. sysrq-t shows:

rmmod D 003FFAFC 6616 15923 15911 (NOTLB)
e9341e44 00000092 82318c15 003ffafc e9341e2c 00000000 e9341e14 823187a1
003ffafc 00000000 c0123862 d3dbab80 d3dbad1c c2c08a40 77a67d01 000001ca
00000292 e9341e24 c03799cd e9341e54 c0540840 e9341e44 00223389 000000ff
Call Trace:
[<c03777b1>] schedule_timeout+0x70/0x8e
[<c03777e4>] schedule_timeout_uninterruptible+0x15/0x17
[<c0133d04>] msleep+0x10/0x16
[<c030d5e0>] dev_close+0x39/0x6b
[<c030d6ba>] unregister_netdevice+0xa8/0x1b9
[<c030d7dd>] unregister_netdev+0x12/0x1a
[<f89b441e>] e1000_remove+0x38/0xcc [e1000]
[<c0229838>] pci_device_remove+0x19/0x39
[<c029539a>] __device_release_driver+0x74/0x90
[<c0295841>] driver_detach+0xa2/0xe1
[<c0294f16>] bus_remove_driver+0x5d/0x79
[<c02958a7>] driver_unregister+0x8/0xa
[<c02299a2>] pci_unregister_driver+0x13/0x55
[<f89c23a3>] e1000_exit_module+0xd/0xf [e1000]
[<c0150d96>] sys_delete_module+0x180/0x1a6
[<c0107fc6>] sysenter_past_esp+0x6b/0xb5
=======================


The machine seemed otherwise happy, except the keyboard stopped working
shortly afterwards. I'm not willing to say that's related, but it did
limit how much information I could extract about the state of the
machine at the time.

e1000 wasn't working very well before I tried to rmmod it; it all seemed
OK, but dhcpclient was failing to get an address.

I wonder if it might have something to do with Herbert's carrier changes?

J

2007-05-24 10:47:35

by Herbert Xu

[permalink] [raw]
Subject: Re: rmmod e1000 hangs (Was Re: 2.6.22-rc2-mm1)

On Thu, May 24, 2007 at 11:36:22AM +0100, Jeremy Fitzhardinge wrote:
>
> I got a hang while rmmodding e1000. sysrq-t shows:
>
> rmmod D 003FFAFC 6616 15923 15911 (NOTLB)
> e9341e44 00000092 82318c15 003ffafc e9341e2c 00000000 e9341e14 823187a1
> 003ffafc 00000000 c0123862 d3dbab80 d3dbad1c c2c08a40 77a67d01 000001ca
> 00000292 e9341e24 c03799cd e9341e54 c0540840 e9341e44 00223389 000000ff
> Call Trace:
> [<c03777b1>] schedule_timeout+0x70/0x8e
> [<c03777e4>] schedule_timeout_uninterruptible+0x15/0x17
> [<c0133d04>] msleep+0x10/0x16
> [<c030d5e0>] dev_close+0x39/0x6b

Looks like we're spinning on __LINK_STATE_RX_SCHED. This means that
someone called netif_poll_disable() without re-enabling it again.
Perhaps e1000_io_error_detected? Auke?

Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

2007-05-24 10:54:19

by Herbert Xu

[permalink] [raw]
Subject: Re: rmmod e1000 hangs (Was Re: 2.6.22-rc2-mm1)

On Thu, May 24, 2007 at 08:47:13PM +1000, Herbert Xu wrote:
> On Thu, May 24, 2007 at 11:36:22AM +0100, Jeremy Fitzhardinge wrote:
> >
> > I got a hang while rmmodding e1000. sysrq-t shows:
> >
> > rmmod D 003FFAFC 6616 15923 15911 (NOTLB)
> > e9341e44 00000092 82318c15 003ffafc e9341e2c 00000000 e9341e14 823187a1
> > 003ffafc 00000000 c0123862 d3dbab80 d3dbad1c c2c08a40 77a67d01 000001ca
> > 00000292 e9341e24 c03799cd e9341e54 c0540840 e9341e44 00223389 000000ff
> > Call Trace:
> > [<c03777b1>] schedule_timeout+0x70/0x8e
> > [<c03777e4>] schedule_timeout_uninterruptible+0x15/0x17
> > [<c0133d04>] msleep+0x10/0x16
> > [<c030d5e0>] dev_close+0x39/0x6b
>
> Looks like we're spinning on __LINK_STATE_RX_SCHED. This means that
> someone called netif_poll_disable() without re-enabling it again.
> Perhaps e1000_io_error_detected? Auke?

I think the dual meaning of __LINK_STATE_RX_SCHED is seriously broken.
In dev_close we are waiting for any outstanding poll to terminate but
the same bit can either mean an outstanding poll or that poll has
been disabled.

It's a surprise that it has taken so many years for someone to report
a bug on it. I'll try to get this fixed up, probably by adding a bit.

Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

2007-05-24 14:45:28

by Kok, Auke

[permalink] [raw]
Subject: Re: rmmod e1000 hangs (Was Re: 2.6.22-rc2-mm1)

Herbert Xu wrote:
> On Thu, May 24, 2007 at 08:47:13PM +1000, Herbert Xu wrote:
>> On Thu, May 24, 2007 at 11:36:22AM +0100, Jeremy Fitzhardinge wrote:
>>> I got a hang while rmmodding e1000. sysrq-t shows:
>>>
>>> rmmod D 003FFAFC 6616 15923 15911 (NOTLB)
>>> e9341e44 00000092 82318c15 003ffafc e9341e2c 00000000 e9341e14 823187a1
>>> 003ffafc 00000000 c0123862 d3dbab80 d3dbad1c c2c08a40 77a67d01 000001ca
>>> 00000292 e9341e24 c03799cd e9341e54 c0540840 e9341e44 00223389 000000ff
>>> Call Trace:
>>> [<c03777b1>] schedule_timeout+0x70/0x8e
>>> [<c03777e4>] schedule_timeout_uninterruptible+0x15/0x17
>>> [<c0133d04>] msleep+0x10/0x16
>>> [<c030d5e0>] dev_close+0x39/0x6b
>> Looks like we're spinning on __LINK_STATE_RX_SCHED. This means that
>> someone called netif_poll_disable() without re-enabling it again.
>> Perhaps e1000_io_error_detected? Auke?

Should not be, e1000_io_error_detected will call e1000_down which does the
netif_poll_disable, but e1000_io_resume nicely calls e1000_up again which does
the netif_poll_enable again, unless io_resume somehow failed

> I think the dual meaning of __LINK_STATE_RX_SCHED is seriously broken.
> In dev_close we are waiting for any outstanding poll to terminate but
> the same bit can either mean an outstanding poll or that poll has
> been disabled.

that seems more likely

> It's a surprise that it has taken so many years for someone to report
> a bug on it. I'll try to get this fixed up, probably by adding a bit.

I get the feeling that a recent change exposed us to this, our lab has been
seeing similar OOPS's yesterday out of nothing.


Auke

2007-05-24 16:40:47

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Thu, 24 May 2007, Ingo Molnar wrote:

>
> when constructing debug output it's a good idea to make it as
> 'context-free' as possible. I.e. instead of saying 'Filler' and
> explaining it somewhere in Documentation/*, just say:
>
> Expected memory values at 0xc90f6d50: 5a 5a 5a 5a 5a 5a 5a 5a
> ... but found the following values: 12 34 56 78 90 12 34 56

Meaning just print the corrupted values? Otherwise the text will take up
a lot of real estate and will make it impossible to view the actual object
contents.

I think I can skip the filler etc if its not corrupted. Maybe that will
help?

2007-05-24 21:20:17

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Thu, 24 May 2007, Ingo Molnar wrote:

> please also put in one of the keywords as the first word of whatever
> SLUB prints:

I modified the reports as you suggested. Here is a sample:

BUG kmalloc-512: Redzone corrupted. Expected 0xbb at 0xffff81000208f8c0 but found 0xab
INFO: Last alloc: slab_sysfs_init+0x223/0x280 jiffies_ago=0 cpu=0 pid=1
INFO: Last free : slab_sysfs_init+0x22e/0x280 jiffies_ago=0 cpu=0 pid=1
INFO: Object=0xffff81000208f6c0 slab=0xffff810001071ea0 offset=14016
INFO: flags=0x4000000000002082 inuse=24 freelist=0xffff81000208f6c0
Bytes b4 0xffff81000208f6b0: 55 db fe ff 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a UUp?....ZZZZZZZZ
Object 0xffff81000208f6c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xffff81000208f6d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xffff81000208f6e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xffff81000208f6f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xffff81000208f700: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xffff81000208f710: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xffff81000208f720: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xffff81000208f730: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Redzone 0xffff81000208f8c0: ab bb bb bb bb bb bb bb ????????
FreePointer 0xffff81000208f8c8 -> 0xffff81000208f908
Filler 0xffff81000208f900: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ

Call Trace:
[<ffffffff8026d3aa>] check_bytes_and_report+0x7a/0xc0
[<ffffffff8026d653>] check_object+0x63/0x260
[<ffffffff8026fde4>] validate_slab+0x104/0x1b0
[<ffffffff8026fea9>] validate_slab_slab+0x19/0x70
[<ffffffff8026ff56>] validate_slab_cache+0x56/0x110
[<ffffffff805d25ae>] slab_sysfs_init+0x24e/0x280
[<ffffffff805c3624>] kernel_init+0xb4/0x290
[<ffffffff8020a218>] child_rip+0xa/0x12
[<ffffffff8038de48>] acpi_ds_init_one_object+0x0/0x7c
[<ffffffff805c3570>] kernel_init+0x0/0x290
[<ffffffff8020a20e>] child_rip+0x0/0x12

FIX kmalloc-512: Restoring Redzone (0xbb) from 0xffff81000208f8c0-0xffff81000208f8c7

2007-05-24 21:30:37

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Thu, 24 May 2007 14:20:03 -0700 (PDT)
Christoph Lameter <[email protected]> wrote:

> Bytes b4 0xffff81000208f6b0: 55 db fe ff 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a UUp?....ZZZZZZZZ
> Object 0xffff81000208f6c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> Object 0xffff81000208f6d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> Object 0xffff81000208f6e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> Object 0xffff81000208f6f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> Object 0xffff81000208f700: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> Object 0xffff81000208f710: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> Object 0xffff81000208f720: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> Object 0xffff81000208f730: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> Redzone 0xffff81000208f8c0: ab bb bb bb bb bb bb bb ????????

can we do this with lib/hexdump.c rather than having a private implementation
in slub?

2007-05-24 21:49:44

by Randy Dunlap

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Thu, 24 May 2007 14:29:08 -0700 Andrew Morton wrote:

> On Thu, 24 May 2007 14:20:03 -0700 (PDT)
> Christoph Lameter <[email protected]> wrote:
>
> > Bytes b4 0xffff81000208f6b0: 55 db fe ff 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a UUp?....ZZZZZZZZ
> > Object 0xffff81000208f6c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> > Object 0xffff81000208f6d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> > Object 0xffff81000208f6e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> > Object 0xffff81000208f6f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> > Object 0xffff81000208f700: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> > Object 0xffff81000208f710: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> > Object 0xffff81000208f720: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> > Object 0xffff81000208f730: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> > Redzone 0xffff81000208f8c0: ab bb bb bb bb bb bb bb ????????
>
> can we do this with lib/hexdump.c rather than having a private implementation
> in slub?

This is pretty-printing. and creature-feep.
But lib/hexdump.c can probably do this if we add a "prefix/tag" string
parameter to it.

Hugh D. wants it to print 32-bit quantities, not just bytes.
Yet another parameter.

I'll look into these unless Christoph et al does so first.

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

2007-05-24 22:35:59

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Thu, 24 May 2007, Randy Dunlap wrote:

> This is pretty-printing. and creature-feep.
> But lib/hexdump.c can probably do this if we add a "prefix/tag" string
> parameter to it.
>
> Hugh D. wants it to print 32-bit quantities, not just bytes.
> Yet another parameter.
>
> I'll look into these unless Christoph et al does so first.

I'd appreciate if you could do this. I just added a call to the function
in hexdump.c and got this ugly output. I think we need

1. byte output

2. A way to specify the width of the description.


BUG kmalloc-16: Redzone corrupted. Expected 0xcc at 0xffff81000235ff30 but
found 0x12
INFO: Last alloc: slab_sysfs_init+0xe1/0x280 jiffies_ago=0 cpu=0 pid=1
INFO: Object=0xffff81000235ff20 slab=0xffff81000107bcc8 offset=3872
INFO: flags=0x4000000000000082 inuse=45 freelist=0xffff81000235ff78
Bytes b4ffff81000235ff10: 00000000 00000000 5a5a5a5a 5a5a5a5a ........ZZZZZZZZ
Objectffff81000235ff20: 00000000 00000000 00000000 00000000 ................
Redzoneffff81000235ff30: 12cccccc cccccccc .IIIIIII
FreePointer 0xffff81000235ff38 -> 0xffff81000235ff78
Fillerffff81000235ff70: 5a5a5a5a 5a5a5a5a ZZZZZZZZ

Call Trace:
[<ffffffff8026d2af>] check_bytes_and_report+0x7f/0xe0
[<ffffffff8026d573>] check_object+0x63/0x260
[<ffffffff8026fd75>] validate_slab+0x175/0x1b0
[<ffffffff8026fdc9>] validate_slab_slab+0x19/0x70
[<ffffffff8026fe76>] validate_slab_cache+0x56/0x110
[<ffffffff805d2466>] slab_sysfs_init+0x106/0x280
[<ffffffff805c3624>] kernel_init+0xb4/0x290
[<ffffffff8020a218>] child_rip+0xa/0x12
[<ffffffff8038dd68>] acpi_ds_init_one_object+0x0/0x7c
[<ffffffff805c3570>] kernel_init+0x0/0x290
[<ffffffff8020a20e>] child_rip+0x0/0x12

FIX kmalloc-16: Restoring Redzone (0xcc) from 0xffff81000235ff30-0xffff81000235ff30


2007-05-24 22:53:59

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Thu, 24 May 2007 15:35:45 -0700 (PDT)
Christoph Lameter <[email protected]> wrote:

> > This is pretty-printing. and creature-feep.
> > But lib/hexdump.c can probably do this if we add a "prefix/tag" string
> > parameter to it.
> >
> > Hugh D. wants it to print 32-bit quantities, not just bytes.
> > Yet another parameter.
> >
> > I'll look into these unless Christoph et al does so first.
>
> I'd appreciate if you could do this. I just added a call to the function
> in hexdump.c and got this ugly output. I think we need
>
> 1. byte output

yup. Obviously a suitable implementation would then permit 1-byte,2-byte,3-byte,etc
output.

> 2. A way to specify the width of the description.

Maybe not. The caller could just ensure that the preamble strings are
all of the same length:

hexdump("Bytes ", ...);
hexdump("Object ", ...);
hexdump("Redzone ", ...);

2007-05-25 07:24:17

by Jiri Kosina

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Thu, 24 May 2007, Zan Lynx wrote:

> [snip]
> > Do you please have any indication which kernel versions were OK with the
> > same .config, with respect to the USB mouse/keyboard hogs you are seeing
> > with 2.6.22-rc2-mm1?
> The last 2.6.21 -mm kernel worked well.
[...]
> drivers/hid/usbhid/hid-core.c: input irq status -75 received

Zan,

this has been reported also in bugzilla, so it's now handled in
http://bugzilla.kernel.org/show_bug.cgi?id=8535

It's reported there that mainline is OK, and there are realy very few
patches in the HID area which I can't imagine how they could be causing
it, they are only a few simple quirks for a specific hardware.

Could you please try the following things in this order:

- disable CONFIG_HIDRAW and test whether it is still reproducible
- revert git-hid.patch and test whether it is still reproducible
- if so, I am afraid that it's some USB patch that is causing this, so
bisecting would be needed

I will meanwhile try to reproduce it myself here, but I have not been
successful with it so far.

Thanks,

--
Jiri Kosina

2007-05-25 12:54:46

by Herbert Xu

[permalink] [raw]
Subject: Re: rmmod e1000 hangs (Was Re: 2.6.22-rc2-mm1)

On Thu, May 24, 2007 at 07:44:29AM -0700, Kok, Auke wrote:
>
> I get the feeling that a recent change exposed us to this, our lab has been
> seeing similar OOPS's yesterday out of nothing.

Yep you're right. It was the change where we removed the
netif_poll_enable call from e1000_open. The problem is that
e1000_close calls e1000_down which in turn calls netif_poll_disable.
That means the next e1000_open won't reenable polling and the
dev_close (or in fact any call to netif_poll_disable) after that
will hang.

In fact my original premise is completely wrong since netif_poll_enable
can be safely called from dev_open *if* you can guarantee that no polls
have already been scheduled.

This should be the case as long as we keep IRQs disabled before
netif_poll_enable. So the problem is that somehow we're getting
into e1000_open with IRQs enabled on the NIC which then causes a
poll to be scheduled before the call to netif_poll_enable.

So please revert my patch.

We need to find out why we're getting IRQs before calling
e1000_irq_enable in e1000_open.

Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

2007-05-25 13:04:18

by Herbert Xu

[permalink] [raw]
Subject: Re: rmmod e1000 hangs (Was Re: 2.6.22-rc2-mm1)

On Fri, May 25, 2007 at 10:54:13PM +1000, Herbert Xu wrote:
>
> So please revert my patch.
>
> We need to find out why we're getting IRQs before calling
> e1000_irq_enable in e1000_open.

In the mean time this should be a safe fix. This is against
the current mainline tree.

[E1000]: Call netif_poll_enable in e1000_open

This restores the previously removed netif_poll_enable call in
e1000_open. It's needed on all but the first call to e1000_open
for a NIC as e1000_close always calls netif_poll_disable.

netif_poll_enable can only be called safely if no polls have been
scheduled. This should be the case as long as we don't enter our
IRQ handler. Just in case someone has left IRQs enabled, we call
this before the IRQ handler is installed.

Of course we should really make sure that IRQs are disabled as
early as possible, i.e., when we're still in the probe routine.

Signed-off-by: Herbert Xu <[email protected]>

Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index cbc7feb..d91a378 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -1424,6 +1424,10 @@ e1000_open(struct net_device *netdev)
* clean_rx handler before we do so. */
e1000_configure(adapter);

+#ifdef CONFIG_E1000_NAPI
+ netif_poll_enable(netdev);
+#endif
+
err = e1000_request_irq(adapter);
if (err)
goto err_req_irq;

2007-05-25 13:33:16

by Herbert Xu

[permalink] [raw]
Subject: Re: rmmod e1000 hangs (Was Re: 2.6.22-rc2-mm1)

On Fri, May 25, 2007 at 11:04:04PM +1000, Herbert Xu wrote:
>
> [E1000]: Call netif_poll_enable in e1000_open

Here is a better one.

[E1000]: Restore netif_poll_enable call but make sure IRQs are off

This restores the previously removed netif_poll_enable call in
e1000_open. It's needed on all but the first call to e1000_open
for a NIC as e1000_close always calls netif_poll_disable.

netif_poll_enable can only be called safely if no polls have been
scheduled. This should be the case as long as we don't enter our
IRQ handler.

In order to guarantee this we explicitly disable IRQs as early
as possible when we're probing the NIC.

Signed-off-by: Herbert Xu <[email protected]>

Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index cbc7feb..9ec35b7 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -1325,7 +1325,10 @@ e1000_sw_init(struct e1000_adapter *adapter)
spin_lock_init(&adapter->tx_queue_lock);
#endif

- atomic_set(&adapter->irq_sem, 1);
+ /* Explicitly disable IRQ since the NIC can be in any state. */
+ atomic_set(&adapter->irq_sem, 0);
+ e1000_irq_disable(adapter);
+
spin_lock_init(&adapter->stats_lock);

set_bit(__E1000_DOWN, &adapter->flags);
@@ -1431,6 +1434,10 @@ e1000_open(struct net_device *netdev)
/* From here on the code is the same as e1000_up() */
clear_bit(__E1000_DOWN, &adapter->flags);

+#ifdef CONFIG_E1000_NAPI
+ netif_poll_enable(netdev);
+#endif
+
e1000_irq_enable(adapter);

/* fire a link status change interrupt to start the watchdog */

2007-05-25 21:20:51

by J.A. Magallón

[permalink] [raw]
Subject: idle=poll burns my box [was Re: 2.6.22-rc2-mm1]

On Wed, 23 May 2007 00:42:33 -0700, Andrew Morton <[email protected]> wrote:

>
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
>

Don't know if it's specific to this kernel, but as I have realized it now...

I booted with idle=poll to check some issues (with nvidia driver, btw).
And suddenly I noticed my box was running near 80ºC hot.
I pulled out the lid, an try to see what happened.

In short, idle=poll rises the temperature about 20ºC.
I have an ASUS PC-DL mobo, with a couple Xeon Northwood with HypertThreading
at 2.4 GHz, for a total of 4 threads.

If I boot the box with idle=poll, and let it doing _nothing_ but staring at
the gnome desktop, I get this temperatures:
(Time,VRM,CPU0,CPU1) (wihtout the side cover, remember...)

15:46 64 56 54
15:55 70 60 56
16:02 71 62 57

If I reboot without idle=poll, the box colds quickly:

16:07 58 52 48
16:12 50 43 42
16:15 49 42 41

I I put the box to do some multithreaded render, so all four cores stay
above 98% usage, the box warms again:

16:17 51 43 42
16:24 67 57 54
16:28 70 60 56
16:30 72 61 57
16:37 72 61 56

And as soon as I stop the work, it colds again:

16:41 71 60 56
16:42 64 56 52
16:43 60 54 50
16:45 55 48 46
16:46 53 46 44

Left alone for awhile, it stays at 46 39 39 (for VRM and both CPUs, as I said).

Is idle=poll a quick and dirty way to burn your box in flames ?
To warm your cpu doing nothing ?
Summer is coming, but this...

Any ideas ?

--
J.A. Magallon <jamagallon()ono!com> \ Software is like sex:
\ It's better when it's free
Mandriva Linux release 2008.0 (Cooker) for i586
Linux 2.6.21-jam03 (gcc 4.1.2 20070302 (4.1.2-1mdv2007.1)) SMP PREEMPT
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

2007-05-25 21:53:21

by Andrew Morton

[permalink] [raw]
Subject: Re: idle=poll burns my box [was Re: 2.6.22-rc2-mm1]

On Fri, 25 May 2007 23:20:25 +0200 "J.A. Magall?n" <[email protected]> wrote:

> Is idle=poll a quick and dirty way to burn your box in flames ?

yep ;) It makes the CPU(s) busy-wait when they have nothing else to do.

It was originally added as a thing to maybe save a few cycles of latency
in responding to interrupts. It's now useful as a trick to prevent oprofile
from producing confusing numbers. I don't think it has any other uses.

2007-05-25 22:12:55

by Kok, Auke

[permalink] [raw]
Subject: Re: rmmod e1000 hangs (Was Re: 2.6.22-rc2-mm1)

Herbert Xu wrote:
> On Fri, May 25, 2007 at 11:04:04PM +1000, Herbert Xu wrote:
>> [E1000]: Call netif_poll_enable in e1000_open
>
> Here is a better one.
>
> [E1000]: Restore netif_poll_enable call but make sure IRQs are off
>
> This restores the previously removed netif_poll_enable call in
> e1000_open. It's needed on all but the first call to e1000_open
> for a NIC as e1000_close always calls netif_poll_disable.
>
> netif_poll_enable can only be called safely if no polls have been
> scheduled. This should be the case as long as we don't enter our
> IRQ handler.
>
> In order to guarantee this we explicitly disable IRQs as early
> as possible when we're probing the NIC.
>
> Signed-off-by: Herbert Xu <[email protected]>

Ack!

this also fixes all the issues we had seen ourselves. I took a bit of time to
get our labs to test it.

Who can pick this patch up for us? Jeff ?

Auke

2007-05-25 23:48:53

by Jeff Garzik

[permalink] [raw]
Subject: Re: rmmod e1000 hangs (Was Re: 2.6.22-rc2-mm1)

Kok, Auke wrote:
> Herbert Xu wrote:
>> On Fri, May 25, 2007 at 11:04:04PM +1000, Herbert Xu wrote:
>>> [E1000]: Call netif_poll_enable in e1000_open
>>
>> Here is a better one.
>>
>> [E1000]: Restore netif_poll_enable call but make sure IRQs are off
>>
>> This restores the previously removed netif_poll_enable call in
>> e1000_open. It's needed on all but the first call to e1000_open
>> for a NIC as e1000_close always calls netif_poll_disable.
>>
>> netif_poll_enable can only be called safely if no polls have been
>> scheduled. This should be the case as long as we don't enter our
>> IRQ handler.
>>
>> In order to guarantee this we explicitly disable IRQs as early
>> as possible when we're probing the NIC.
>>
>> Signed-off-by: Herbert Xu <[email protected]>
>
> Ack!
>
> this also fixes all the issues we had seen ourselves. I took a bit of
> time to get our labs to test it.
>
> Who can pick this patch up for us? Jeff ?

Is this for -stable or upstream? I got confused with all the patches
flying about.

Send it to me, if it's for upstream.

Jeff



2007-05-26 00:11:22

by Herbert Xu

[permalink] [raw]
Subject: Re: rmmod e1000 hangs (Was Re: 2.6.22-rc2-mm1)

On Fri, May 25, 2007 at 07:48:14PM -0400, Jeff Garzik wrote:
>
> Is this for -stable or upstream? I got confused with all the patches
> flying about.
>
> Send it to me, if it's for upstream.

It's for upstream. Once you take then I'll rediff it for stable.

[E1000]: Restore netif_poll_enable call but make sure IRQs are off

This restores the previously removed netif_poll_enable call in
e1000_open. It's needed on all but the first call to e1000_open
for a NIC as e1000_close always calls netif_poll_disable.

netif_poll_enable can only be called safely if no polls have been
scheduled. This should be the case as long as we don't enter our
IRQ handler.

In order to guarantee this we explicitly disable IRQs as early
as possible when we're probing the NIC.

Signed-off-by: Herbert Xu <[email protected]>

Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index cbc7feb..9ec35b7 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -1325,7 +1325,10 @@ e1000_sw_init(struct e1000_adapter *adapter)
spin_lock_init(&adapter->tx_queue_lock);
#endif

- atomic_set(&adapter->irq_sem, 1);
+ /* Explicitly disable IRQ since the NIC can be in any state. */
+ atomic_set(&adapter->irq_sem, 0);
+ e1000_irq_disable(adapter);
+
spin_lock_init(&adapter->stats_lock);

set_bit(__E1000_DOWN, &adapter->flags);
@@ -1431,6 +1434,10 @@ e1000_open(struct net_device *netdev)
/* From here on the code is the same as e1000_up() */
clear_bit(__E1000_DOWN, &adapter->flags);

+#ifdef CONFIG_E1000_NAPI
+ netif_poll_enable(netdev);
+#endif
+
e1000_irq_enable(adapter);

/* fire a link status change interrupt to start the watchdog */

2007-05-26 15:56:14

by Tilman Schmidt

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

Am 23.05.2007 09:42 schrieb Andrew Morton:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/

This breaks network initialization on my SuSE 10.0 box once
again although I compiled with CONFIG_SYSFS_DEPRECATED=y.
Acquisition of the IP address via DHCP times out.
Manual start (rcnetwork restart) doesn't help either.

I'll start bisecting as soon as the machine is free.

--
Tilman Schmidt E-Mail: [email protected]
Bonn, Germany
Diese Nachricht besteht zu 100% aus wiederverwerteten Bits.
Unge?ffnet mindestens haltbar bis: (siehe R?ckseite)


Attachments:
signature.asc (253.00 B)
OpenPGP digital signature

2007-05-26 16:01:28

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Sat, 26 May 2007 17:59:15 +0200 Tilman Schmidt <[email protected]> wrote:

> Am 23.05.2007 09:42 schrieb Andrew Morton:
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
>
> This breaks network initialization on my SuSE 10.0 box once
> again although I compiled with CONFIG_SYSFS_DEPRECATED=y.
> Acquisition of the IP address via DHCP times out.
> Manual start (rcnetwork restart) doesn't help either.
>
> I'll start bisecting as soon as the machine is free.

Thanks. I think others have seen similar things and it was attributed to
driver-core-check-return-code-of-sysfs_create_link.patch.

2007-05-27 22:13:17

by Tilman Schmidt

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

Am 26.05.2007 18:01 schrieb Andrew Morton:
> On Sat, 26 May 2007 17:59:15 +0200 Tilman Schmidt <[email protected]> wrote:

>> This breaks network initialization on my SuSE 10.0 box [...]
>
> Thanks. I think others have seen similar things and it was attributed to
> driver-core-check-return-code-of-sysfs_create_link.patch.

That's it. After reverting that patch, the Ethernet interface
comes up fine again.

Thanks,
Tilman

--
Tilman Schmidt E-Mail: [email protected]
Bonn, Germany
Diese Nachricht besteht zu 100% aus wiederverwerteten Bits.
Unge?ffnet mindestens haltbar bis: (siehe R?ckseite)


Attachments:
signature.asc (253.00 B)
OpenPGP digital signature

2007-05-27 22:41:30

by Kay Sievers

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On 5/28/07, Tilman Schmidt <[email protected]> wrote:
> Am 26.05.2007 18:01 schrieb Andrew Morton:
> > On Sat, 26 May 2007 17:59:15 +0200 Tilman Schmidt <[email protected]> wrote:
>
> >> This breaks network initialization on my SuSE 10.0 box [...]
> >
> > Thanks. I think others have seen similar things and it was attributed to
> > driver-core-check-return-code-of-sysfs_create_link.patch.
>
> That's it. After reverting that patch, the Ethernet interface
> comes up fine again.

Cornelia,
in the patch is:
+ if (dev->kobj.parent == &dev->class->subsys.kobj)
+ return 0;

which will skip the creation of the "device"-link, right?

But still, I don't think the transaction-style of error handling is
what we want, it's for some critical subsystems the equivalent of
adding PANIC(), and this just for a failing symlink-creation. I think
we just want to print the to the logs, and not let the whole core
device registration fail entirely.

Thanks,
Kay

2007-05-28 10:27:30

by Valdis Klētnieks

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1 - a different BUG: at mm/slab.c:777 __find_general_cachep()

On Wed, 23 May 2007 00:42:33 PDT, Andrew Morton said:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/

Dell Latitude D820 laptop, Intel T7200 dual-core, x86_64 kernel.

Does something wonky during very early boot, before userspace has started:

[4294667.471000] Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz stepping 06
[4294667.471000] Brought up 2 CPUs
[4294667.471000] NET: Registered protocol family 16
[4294667.472000] ACPI: ACPI Dock Station Driver
[4294667.472000] ACPI: bus type pci registered
[4294667.472000] BUG: at mm/slab.c:777 __find_general_cachep()
[4294667.472000]
[4294667.472000] Call Trace:
[4294667.472000] [<ffffffff8020b2a8>] dump_trace+0xca/0x3cb
[4294667.472000] [<ffffffff8020b5e5>] show_trace+0x3c/0x52
[4294667.472000] [<ffffffff8020b610>] dump_stack+0x15/0x17
[4294667.472000] [<ffffffff8028952e>] __kmalloc+0x41/0xb2
[4294667.472000] [<ffffffff8042c450>] get_modalias+0x6c/0x107
[4294667.472000] [<ffffffff8042c520>] dmi_dev_uevent+0x35/0x4d
[4294667.472000] [<ffffffff803b7d5f>] dev_uevent+0x19b/0x1d1
[4294667.472000] [<ffffffff8034bd3c>] kobject_uevent_env+0x244/0x477
[4294667.472000] [<ffffffff8034bf7a>] kobject_uevent+0xb/0xd
[4294667.472000] [<ffffffff803b7971>] device_add+0x2b5/0x4eb
[4294667.472000] [<ffffffff803b7bc0>] device_register+0x19/0x1d
[4294667.472000] [<ffffffff807dd71a>] dmi_id_init+0x2d1/0x2e9
[4294667.472000] [<ffffffff807c1651>] kernel_init+0x168/0x2da
[4294667.472000] [<ffffffff8020acd8>] child_rip+0xa/0x12
[4294667.472000]
[4294667.473000] PCI: Using MMCONFIG at f0000000 - f3ffffff
[4294667.489000] ACPI: SSDT 7FE819CE, 0043 (r1 LMPWR DELLLOM 1001 INTL 20050624)

Any suggestions before I go doing the bisect shuffle?


Attachments:
(No filename) (226.00 B)

2007-05-28 10:43:21

by Pekka Enberg

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1 - a different BUG: at mm/slab.c:777 __find_general_cachep()

On 5/28/07, [email protected] <[email protected]> wrote:
> [4294667.472000] BUG: at mm/slab.c:777 __find_general_cachep()

[snip]

> Any suggestions before I go doing the bisect shuffle?

It's complaining about a kmalloc() with size zero. The warning is new
and harmless for now, so no need to bisect this (it will point you at
the mm/slab.c change by Christoph Lameter).

2007-05-28 11:12:59

by Valdis Klētnieks

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1 - a different BUG: at mm/slab.c:777 __find_general_cachep()

On Mon, 28 May 2007 13:43:12 +0300, Pekka Enberg said:
> On 5/28/07, [email protected] <[email protected]> wrote:
> > [4294667.472000] BUG: at mm/slab.c:777 __find_general_cachep()
>
> [snip]
>
> > Any suggestions before I go doing the bisect shuffle?
>
> It's complaining about a kmalloc() with size zero. The warning is new
> and harmless for now, so no need to bisect this (it will point you at
> the mm/slab.c change by Christoph Lameter).

I knew *that* part. Closer look at drivers/firmware/dmi-id.c indicates that
it's likely a busticated DMI field in my BIOS - looking around at the stuff in
/sys/devices/virtual/dmi/id I found that the files product_version, board_version
board_asset_tag, chassis_version, and chassis_asset_tag are empty (trying
to 'cat' them gets just a \n) - the other values all look sane.

This looks fishy:

#define ADD_DMI_ATTR(_name, _field) if (dmi_get_system_info(_field)) sys_dmi_attributes[i++] = & sys_dmi_##_name##_attr.attr;

Should that be making a check that it's not pointing at a null string?


Attachments:
(No filename) (226.00 B)

2007-05-28 17:22:34

by Cornelia Huck

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Mon, 28 May 2007 00:41:19 +0200,
"Kay Sievers" <[email protected]> wrote:

> Cornelia,
> in the patch is:
> + if (dev->kobj.parent == &dev->class->subsys.kobj)
> + return 0;
>
> which will skip the creation of the "device"-link, right?

Uh, looking at the code again, this doesn't seem to be what I wanted :(

> But still, I don't think the transaction-style of error handling is
> what we want, it's for some critical subsystems the equivalent of
> adding PANIC(), and this just for a failing symlink-creation. I think
> we just want to print the to the logs, and not let the whole core
> device registration fail entirely.

Hm, but failure to create a symlink usually signifies something's really
wrong (no memory, or an object is there which shouldn't)?

2007-05-29 04:18:10

by Randy Dunlap

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1: SLUB

On Wed, 23 May 2007 00:42:33 -0700 Andrew Morton wrote:

>
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc2/2.6.22-rc2-mm1/
>
> - A new readahead patch series. This needs serious review and performance
> testing please.
>
> - Added Ingo's CFS CPU scheduler
>
> - Xen dom-U support is now in the x86 tree.

With the attached config, I cannot boot a single-proc AMD64 machine
when using SLUB. Changing SLUB to SLAB boots OK.
When trying to boot with SLUB, I just get a blank screen, even
when I use "earlyprintk=vga,save".

Has then already been posted and I missed it.. and it's fixed? :)
/me hopes

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


Attachments:
config-2622-rc2mm1sl (42.55 kB)

2007-05-29 07:25:57

by Cornelia Huck

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Mon, 28 May 2007 00:41:19 +0200,
"Kay Sievers" <[email protected]> wrote:

> Cornelia,
> in the patch is:
> + if (dev->kobj.parent == &dev->class->subsys.kobj)
> + return 0;
>
> which will skip the creation of the "device"-link, right?

...and this is certainly broken. Argl.

Could those folks that had trouble with this kernel check out whether
the following patch helps?


From: Cornelia Huck <[email protected]>

Fix check when to create certain symlinks (the device link and some
compatible links).

Signed-off-by: Cornelia Huck <[email protected]>

---
drivers/base/core.c | 18 ++++++++++--------
1 files changed, 10 insertions(+), 8 deletions(-)

--- linux-2.6.orig/drivers/base/core.c
+++ linux-2.6/drivers/base/core.c
@@ -657,12 +657,12 @@ static int device_add_class_symlinks(str
* If this is not a "fake" compatible device, then create the
* symlink from the class to the device.
*/
- if (dev->kobj.parent == &dev->class->subsys.kobj)
- return 0;
- error = sysfs_create_link(&dev->class->subsys.kobj, &dev->kobj,
- dev->bus_id);
- if (error)
- goto out_subsys;
+ if (dev->kobj.parent != &dev->class->subsys.kobj) {
+ error = sysfs_create_link(&dev->class->subsys.kobj, &dev->kobj,
+ dev->bus_id);
+ if (error)
+ goto out_subsys;
+ }
if (dev->parent) {
error = sysfs_create_link(&dev->kobj, &dev->parent->kobj,
"device");
@@ -689,7 +689,8 @@ out_device:
sysfs_remove_link(&dev->kobj, "device");
#endif
out_busid:
- sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id);
+ if (dev->kobj.parent != &dev->class->subsys.kobj)
+ sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id);
out_subsys:
sysfs_remove_link(&dev->kobj, "subsystem");
out:
@@ -712,7 +713,8 @@ static void device_remove_class_symlinks
#endif
sysfs_remove_link(&dev->kobj, "device");
}
- sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id);
+ if (dev->kobj.parent != &dev->class->subsys.kobj)
+ sysfs_remove_link(&dev->class->subsys.kobj, dev->bus_id);
sysfs_remove_link(&dev->kobj, "subsystem");
}

2007-05-29 07:57:57

by Kay Sievers

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Mon, 2007-05-28 at 19:22 +0200, Cornelia Huck wrote:
> On Mon, 28 May 2007 00:41:19 +0200,
> "Kay Sievers" <[email protected]> wrote:
>
> > Cornelia,
> > in the patch is:
> > + if (dev->kobj.parent == &dev->class->subsys.kobj)
> > + return 0;
> >
> > which will skip the creation of the "device"-link, right?
>
> Uh, looking at the code again, this doesn't seem to be what I wanted :(
>
> > But still, I don't think the transaction-style of error handling is
> > what we want, it's for some critical subsystems the equivalent of
> > adding PANIC(), and this just for a failing symlink-creation. I think
> > we just want to print the to the logs, and not let the whole core
> > device registration fail entirely.
>
> Hm, but failure to create a symlink usually signifies something's really
> wrong (no memory, or an object is there which shouldn't)?

Sure, but this is core code, which is used by _all_ drivers and _all_
devices. Subsystems can decide to panic if this appropriate, but generic
core code should probably not make such decisions.

With this change, a single failing symlink (or attribute) for a
scsi/ide/block/... device may crash the whole box during bootup. I'm not
sure that this is what we want.

It's a failure that should be logged (the patch doesn't even add that),
but there is probably no reason to refuse the creation of a device, if
something non-vital like a symlink or attribute fails to be created.

Thanks,
Kay

2007-05-29 14:43:32

by Matt Mackall

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Tue, May 29, 2007 at 09:25:43AM +0200, Cornelia Huck wrote:
> On Mon, 28 May 2007 00:41:19 +0200,
> "Kay Sievers" <[email protected]> wrote:
>
> > Cornelia,
> > in the patch is:
> > + if (dev->kobj.parent == &dev->class->subsys.kobj)
> > + return 0;
> >
> > which will skip the creation of the "device"-link, right?
>
> ...and this is certainly broken. Argl.
>
> Could those folks that had trouble with this kernel check out whether
> the following patch helps?

Works for me!

Tested-by: Matt Mackall <[email protected]>

--
Mathematics is the supreme nostalgia of our time.

2007-05-29 16:52:27

by Tilman Schmidt

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

Am 29.05.2007 09:25 schrieb Cornelia Huck:
> Could those folks that had trouble with this kernel check out whether
> the following patch helps?

Yes, that patch fixes my problem.

Thanks,
Tilman

> From: Cornelia Huck <[email protected]>
>
> Fix check when to create certain symlinks (the device link and some
> compatible links).
>
> Signed-off-by: Cornelia Huck <[email protected]>
>
[...]

--
Tilman Schmidt E-Mail: [email protected]
Bonn, Germany
Diese Nachricht besteht zu 100% aus wiederverwerteten Bits.
Unge?ffnet mindestens haltbar bis: (siehe R?ckseite)


Attachments:
signature.asc (253.00 B)
OpenPGP digital signature

2007-05-29 17:13:28

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1: SLUB

On Mon, 28 May 2007, Randy Dunlap wrote:

> Has then already been posted and I missed it.. and it's fixed? :)
> /me hopes

Maybe this patch wil help?

SLUB: Fix NUMA / SYSFS bootstrap issue

The kmem_cache_node cache is very special because it is needed for
NUMA bootstrap. Under certain conditions (like for example if lockdep is
enabled and significantly increases the size of spinlock_t) the structure
may become exactly the size as one of the larger caches in the kmalloc array.

That early during bootstrap we cannot perform merging properly. The unique
id for the kmem_cache_node cache will match one of the kmalloc array. Sysfs
will complain about a duplicate directory entry. All of this occurs while
the console is not yet fully operational. Thus boot may appear to be
silently failing.

The kmem_cache_node cache is very special. During early boostrap the main
allocation function is not operational yet and so we have to run our
own small special alloc function during early boot. It is also special in
that it is never freed.

We really do not want any merging on that cache. Set the refcount -1 and
forbid merging of slabs that have a negative refcount.

Signed-off-by: Christoph Lameter <[email protected]>

---
mm/slub.c | 7 +++++++
1 file changed, 7 insertions(+)

Index: slub/mm/slub.c
===================================================================
--- slub.orig/mm/slub.c 2007-05-25 18:28:42.000000000 -0700
+++ slub/mm/slub.c 2007-05-25 18:29:46.000000000 -0700
@@ -2473,6 +2473,7 @@ void __init kmem_cache_init(void)
*/
create_kmalloc_cache(&kmalloc_caches[0], "kmem_cache_node",
sizeof(struct kmem_cache_node), GFP_KERNEL);
+ kmalloc_caches[0].refcount = -1;
#endif

/* Able to allocate the per node structures */
@@ -2520,6 +2521,12 @@ static int slab_unmergeable(struct kmem_
if (s->ctor)
return 1;

+ /*
+ * We may have set a slab to be unmergeable during bootstrap.
+ */
+ if (s->refcount < 0)
+ return 1;
+
return 0;
}

2007-05-29 17:25:26

by Cornelia Huck

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Tue, 29 May 2007 18:55:21 +0200,
Tilman Schmidt <[email protected]> wrote:

> Am 29.05.2007 09:25 schrieb Cornelia Huck:
> > Could those folks that had trouble with this kernel check out whether
> > the following patch helps?
>
> Yes, that patch fixes my problem.
>
> Thanks,
> Tilman

Thanks for testing (to both of you) and again sorry for the breakage.

2007-05-29 18:07:33

by Randy Dunlap

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1: SLUB

Christoph Lameter wrote:
> On Mon, 28 May 2007, Randy Dunlap wrote:
>
>> Has then already been posted and I missed it.. and it's fixed? :)
>> /me hopes
>
> Maybe this patch wil help?

Nope, still no booty.

> SLUB: Fix NUMA / SYSFS bootstrap issue
>
> The kmem_cache_node cache is very special because it is needed for
> NUMA bootstrap. Under certain conditions (like for example if lockdep is
> enabled and significantly increases the size of spinlock_t) the structure
> may become exactly the size as one of the larger caches in the kmalloc array.
>
> That early during bootstrap we cannot perform merging properly. The unique
> id for the kmem_cache_node cache will match one of the kmalloc array. Sysfs
> will complain about a duplicate directory entry. All of this occurs while
> the console is not yet fully operational. Thus boot may appear to be
> silently failing.
>
> The kmem_cache_node cache is very special. During early boostrap the main
> allocation function is not operational yet and so we have to run our
> own small special alloc function during early boot. It is also special in
> that it is never freed.
>
> We really do not want any merging on that cache. Set the refcount -1 and
> forbid merging of slabs that have a negative refcount.
>
> Signed-off-by: Christoph Lameter <[email protected]>
>
> ---
> mm/slub.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> Index: slub/mm/slub.c
> ===================================================================
> --- slub.orig/mm/slub.c 2007-05-25 18:28:42.000000000 -0700
> +++ slub/mm/slub.c 2007-05-25 18:29:46.000000000 -0700
> @@ -2473,6 +2473,7 @@ void __init kmem_cache_init(void)
> */
> create_kmalloc_cache(&kmalloc_caches[0], "kmem_cache_node",
> sizeof(struct kmem_cache_node), GFP_KERNEL);
> + kmalloc_caches[0].refcount = -1;
> #endif
>
> /* Able to allocate the per node structures */
> @@ -2520,6 +2521,12 @@ static int slab_unmergeable(struct kmem_
> if (s->ctor)
> return 1;
>
> + /*
> + * We may have set a slab to be unmergeable during bootstrap.
> + */
> + if (s->refcount < 0)
> + return 1;
> +
> return 0;
> }
>


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

2007-05-29 18:30:45

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1: SLUB

On Tue, 29 May 2007, Randy Dunlap wrote:

> Nope, still no booty.

Your .configs boot fine here (until it panics since I \have another root
fs)

root (hd0,0)
Filesystem type is reiserfs, partition type 0x83
kernel /boot/vmlinuz root=/dev/hda1 console=ttyS0,115200
[Linux-bzImage, setup=0x2800, size=0x245d88]

?inux version 2.6.22-rc2-mm1slub ([email protected]) (gcc version 4.1.2
20061115 (prerelease) (Deb
an 4.1.1-21)) #37 SMP Tue May 29 11:24:17 PDT 2007
Command line: root=/dev/hda1 console=ttyS0,115200
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003fff0000 (usable)
BIOS-e820: 000000003fff0000 - 000000003fff3000 (ACPI NVS)
BIOS-e820: 000000003fff3000 - 0000000040000000 (ACPI data)
BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
end_pfn_map = 1048576
DMI 2.2 present.
ACPI: RSDP 000F6EB0, 0014 (r0 AWARD )
ACPI: RSDT 3FFF3000, 002C (r1 AWARD AWRDACPI 42302E31 AWRD 0)
ACPI: FACP 3FFF3040, 0074 (r1 AWARD AWRDACPI 42302E31 AWRD 0)
ACPI: DSDT 3FFF30C0, 3AA4 (r1 AWARD AWRDACPI 1000 MSFT 100000E)
ACPI: FACS 3FFF0000, 0040
ACPI: APIC 3FFF6B80, 005A (r1 AWARD AWRDACPI 42302E31 AWRD 0)
Zone PFN ranges:
DMA 0 -> 4096
DMA32 4096 -> 1048576
Normal 1048576 -> 1048576
Movable zone start PFN for each node
early_node_map[2] active PFN ranges
0: 0 -> 159
0: 256 -> 262128
ACPI: PM-Timer IO Port: 0x1008
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 (Bootup-CPU)
ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 dfl dfl)
Setting APIC routing to flat
Using ACPI (MADT) for SMP configuration information
swsusp: Registered nosave memory region: 000000000009f000 -
00000000000a0000
swsusp: Registered nosave memory region: 00000000000a0000 -
00000000000f0000
swsusp: Registered nosave memory region: 00000000000f0000 -
0000000000100000
Allocating PCI resources starting at 50000000 (gap: 40000000:bec00000)
SMP: Allowing 1 CPUs, 0 hotplug CPUs
PERCPU: Allocating 33416 bytes of per cpu data
Built 1 zonelists in Zone order, mobility grouping on. Total pages:
256420
Kernel command line: root=/dev/hda1 console=ttyS0,115200
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 32768 bytes)
time.c: Detected 2199.446 MHz processor.
Console: colour VGA+ 80x25
Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
Checking aperture...
CPU 0: aperture @ e0000000 size 128 MB
Memory: 1023688k/1048512k available (3194k kernel code, 24184k reserved,
1723k data, 228k init)
SLUB: Genslabs=23, HWalign=64, Order=0-3, MinObjects=16, Processors=1,
Nodes=1
Calibrating delay using timer specific routine.. 4400.89 BogoMIPS
(lpj=8801786)
kswapd reclaim order set to 3
Mount-cache hash table entries: 256
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 512K (64 bytes/line)
SMP alternatives: switching to UP code
Freeing SMP alternatives: 25k freed
ACPI: Core revision 20070126
Using local APIC timer interrupts.
result 13746556
Detected 13.746 MHz APIC timer.
Brought up 1 CPUs
NET: Registered protocol family 16
No dock devices found.
ACPI: bus type pci registered
PCI: Using configuration type 1
ACPI: Interpreter enabled
ACPI: (supports S0 S1 S4 S5)
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0,
disabled.
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0,
disabled.
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0,
disabled.
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 *7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 *5 6 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11 *12 14 15)
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 *10 11 12 14 15)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
ACPI: bus type pnp registered
pnp: PnP ACPI: found 8 devices
ACPI: ACPI bus type pnp unregistered
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a
report
PCI: Cannot allocate resource region 0 of device 0000:00:00.0
agpgart: Detected AGP bridge 0
agpgart: AGP aperture is 128M @ 0xe0000000
PCI-DMA: using GART IOMMU.
PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
pnp: 00:00: iomem range 0xc8000-0xcbfff has been reserved
pnp: 00:00: iomem range 0xf0000-0xf7fff could not be reserved
pnp: 00:00: iomem range 0xf8000-0xfbfff could not be reserved
pnp: 00:00: iomem range 0xfc000-0xfffff could not be reserved
PCI: Bridge: 0000:00:01.0
IO window: disabled.
MEM window: disabled.
PREFETCH window: disabled.
NET: Registered protocol family 2
Time: tsc clocksource has been installed.
IP route cache hash table entries: 32768 (order: 6, 262144 bytes)
TCP established hash table entries: 65536 (order: 9, 2621440 bytes)
TCP bind hash table entries: 65536 (order: 9, 2097152 bytes)
TCP: Hash tables configured (established 65536 bind 65536)
TCP reno registered
microcode: CPU0 not a capable Intel processor
IA-32 Microcode Update Driver: v1.14a <[email protected]>
audit: initializing netlink socket (disabled)
audit(1180463170.232:1): initialized
Total HugeTLB memory allocated, 0
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
input: Power Button (FF) as /class/input/input0
ACPI: Power Button (FF) [PWRF]
input: Power Button (CM) as /class/input/input1
ACPI: Power Button (CM) [PWRB]
input: Sleep Button (CM) as /class/input/input2
ACPI: Sleep Button (CM) [FUTS]
ACPI: Fan [FAN] (on)
ACPI: Thermal Zone [THRM] (40 C)
Real Time Clock Driver v1.12ac
Non-volatile memory driver v1.2
ppdev: user-space parallel port driver
Software Watchdog Timer: 0.07 initialized. soft_noboot=0 soft_margin=60
sec (nowayout= 0)
Linux agpgart interface v0.102 (c) Dave Jones
[drm] Initialized drm 1.1.0 20060810
Hangcheck: starting hangcheck timer 0.9.0 (tick is 180 seconds, margin is
60 seconds).
Hangcheck: Using get_cycles().
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
00:07: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
floppy0: no floppy controllers found
RAMDISK driver initialized: 16 RAM disks of 64000K size 1024 blocksize
Intel(R) PRO/1000 Network Driver - version 7.3.20-k2
Copyright (c) 1999-2006 Intel Corporation.
e100: Intel(R) PRO/100 Network Driver, 3.5.17-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
via-rhine: Broken BIOS detected, avoid_D3 enabled.
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <[email protected]>
netconsole: not configured, aborting
Linux video capture interface: v2.00
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with
idebus=xx
hda: WDC WD2500JB-00KFA0, ATA DISK drive
hdc: ST3160023A, ATA DISK drive
hdd: Maxtor 4A160J0, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 512KiB
hda: 488397168 sectors (250059 MB) w/8192KiB Cache, CHS=30401/255/63
hda: cache flushes supported
hda: hda1 hda2 < hda5 >
hdc: max request size: 512KiB
hdc: 312581808 sectors (160041 MB) w/8192KiB Cache, CHS=19457/255/63
hdc: cache flushes supported
hdc: hdc1
hdd: max request size: 512KiB
hdd: 320173056 sectors (163928 MB) w/2048KiB Cache, CHS=19929/255/63
hdd: cache flushes supported
hdd: hdd1 hdd2 hdd3 hdd4
ACPI: PCI Interrupt 0000:00:03.3[D] -> GSI 23 (level, low) -> IRQ 23
ehci_hcd 0000:00:03.3: EHCI Host Controller
ehci_hcd 0000:00:03.3: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:03.3: irq 23, io mem 0xec021000
ehci_hcd 0000:00:03.3: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: new device found, idVendor=0000, idProduct=0000
usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: EHCI Host Controller
usb usb1: Manufacturer: Linux 2.6.22-rc2-mm1slub ehci_hcd
usb usb1: SerialNumber: 0000:00:03.3
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 8 ports detected
ACPI: PCI Interrupt 0000:00:03.0[A] -> GSI 20 (level, low) -> IRQ 20
ohci_hcd 0000:00:03.0: OHCI Host Controller
ohci_hcd 0000:00:03.0: new USB bus registered, assigned bus number 2
ohci_hcd 0000:00:03.0: irq 20, io mem 0xec023000
usb usb2: new device found, idVendor=0000, idProduct=0000
usb usb2: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: OHCI Host Controller
usb usb2: Manufacturer: Linux 2.6.22-rc2-mm1slub ohci_hcd
usb usb2: SerialNumber: 0000:00:03.0
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 3 ports detected
ACPI: PCI Interrupt 0000:00:03.1[B] -> GSI 21 (level, low) -> IRQ 21
ohci_hcd 0000:00:03.1: OHCI Host Controller
ohci_hcd 0000:00:03.1: new USB bus registered, assigned bus number 3
ohci_hcd 0000:00:03.1: irq 21, io mem 0xec024000
usb usb3: new device found, idVendor=0000, idProduct=0000
usb usb3: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb3: Product: OHCI Host Controller
usb usb3: Manufacturer: Linux 2.6.22-rc2-mm1slub ohci_hcd
usb usb3: SerialNumber: 0000:00:03.1
usb usb3: configuration #1 chosen from 1 choice
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 3 ports detected
ACPI: PCI Interrupt 0000:00:03.2[C] -> GSI 22 (level, low) -> IRQ 22
ohci_hcd 0000:00:03.2: OHCI Host Controller
ohci_hcd 0000:00:03.2: new USB bus registered, assigned bus number 4
ohci_hcd 0000:00:03.2: irq 22, io mem 0xec020000
usb usb4: new device found, idVendor=0000, idProduct=0000
usb usb4: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb4: Product: OHCI Host Controller
usb usb4: Manufacturer: Linux 2.6.22-rc2-mm1slub ohci_hcd
usb usb4: SerialNumber: 0000:00:03.2
usb usb4: configuration #1 chosen from 1 choice
hub 4-0:1.0: USB hub found
hub 4-0:1.0: 2 ports detected
USB Universal Host Controller Interface driver v3.0
usbcore: registered new interface driver libusual
PNP: No PS/2 controller found. Probing ports directly.
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
mice: PS/2 mouse device common for all mice
input: PC Speaker as /class/input/input3
i2c /dev entries driver
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
IPv4 over IPv4 tunneling driver
GRE over IPv4 tunneling driver
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 15
ieee80211: 802.11 data/management/control stack, git-1.1.13
ieee80211: Copyright (C) 2004-2005 Intel Corporation
<[email protected]>
powernow-k8: Found 1 AMD Athlon(tm) 64 Processor 3000+ processors (1 cpu
cores) (version 2.00.00)
powernow-k8: 0 : fid 0xc (2000 MHz), vid 0x2
powernow-k8: 1 : fid 0xa (1800 MHz), vid 0x6
powernow-k8: 2 : fid 0xa (1800 MHz), vid 0x6
BIOS EDD facility v0.16 2004-Jun-25, 6 devices found
List of all partitions:
0300 244198584 hda driver: ide-disk
0301 241191846 hda1
0302 1 hda2
0305 3004123 hda5
1600 156290904 hdc driver: ide-disk
1601 156288321 hdc1
1640 160086528 hdd driver: ide-disk
1641 39070048 hdd1
1642 39070080 hdd2
1643 39070080 hdd3
1644 42869452 hdd4
No filesystem could mount root, tried: ext3 ext2 msdos vfat iso9660
Kernel panic - not syncing: VFS: Unable to mount root fs on
unknown-block(3,1)

2007-05-29 18:32:36

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1: SLUB

Oh. I forgot the usual instruction: Try to boot with slub_debug on the
kernel command line. SLUB will attempt to remedy the situation to allow
the boot to continue if it finds anything that goes wrong.




2007-05-29 18:53:26

by Randy Dunlap

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1: SLUB

On Tue, 29 May 2007 11:32:27 -0700 (PDT) Christoph Lameter wrote:

> Oh. I forgot the usual instruction: Try to boot with slub_debug on the
> kernel command line. SLUB will attempt to remedy the situation to allow
> the boot to continue if it finds anything that goes wrong.

Yes, that boots, thanks.

Problem was the dmi-off-by-one kmalloc. I used the patch
that Andrew has merged and it works fine now.

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

2007-05-30 14:09:40

by Jiri Kosina

[permalink] [raw]
Subject: [PATCH] Input: i8042 - cleanup of debug code (was Re: 2.6.22-rc2-mm1)

(some irrelevant CCs dropped)

On Wed, 23 May 2007, Dmitry Torokhov wrote:

> It looks like you are now in the same position I was some time ago WRT
> to debug information for i8042 - constantly asking people to enable
> debug, recompile and send the results. May I recommend changing
> CONFIG_HID_DEBUG to "default y if !EMBEDDED" and controlling debug
> output via a module parameter? -ENOPATCH though...

Hi Dmitry,

I have just queued corresponding patch in HID tree.

BTW when looking at the i8042 code I have just noticed that the trivial
cleanup below could be possible.



From: Jiri Kosina <[email protected]>

Input: i8042 - cleanup of debug code

Debugging facility of i8042 is now toggled in runtime instead
of needing to recompile the kernel. Therefore the DEBUG macro
is useless (it's hardcoded to be defined anyway). Remove it.

Signed-off-by: Jiri Kosina <[email protected]>

diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 3888dc3..5c3405d 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -69,12 +69,9 @@ module_param_named(nopnp, i8042_nopnp, b
MODULE_PARM_DESC(nopnp, "Do not use PNP to detect controller settings");
#endif

-#define DEBUG
-#ifdef DEBUG
static int i8042_debug;
module_param_named(debug, i8042_debug, bool, 0600);
MODULE_PARM_DESC(debug, "Turn i8042 debugging mode on and off");
-#endif

#include "i8042.h"

diff --git a/drivers/input/serio/i8042.h b/drivers/input/serio/i8042.h
index b3eb7a7..eec4b32 100644
--- a/drivers/input/serio/i8042.h
+++ b/drivers/input/serio/i8042.h
@@ -106,7 +106,6 @@
* Debug.
*/

-#ifdef DEBUG
static unsigned long i8042_start_time;
#define dbg_init() do { i8042_start_time = jiffies; } while (0)
#define dbg(format, arg...) \
@@ -115,9 +114,4 @@ static unsigned long i8042_start_time;
printk(KERN_DEBUG __FILE__ ": " format " [%d]\n" , \
## arg, (int) (jiffies - i8042_start_time)); \
} while (0)
-#else
-#define dbg_init() do { } while (0)
-#define dbg(format, arg...) do {} while (0)
-#endif
-
#endif /* _I8042_H */

2007-05-30 14:27:16

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: [PATCH] Input: i8042 - cleanup of debug code (was Re: 2.6.22-rc2-mm1)

Hi Jiri,

On 5/30/07, Jiri Kosina <[email protected]> wrote:
>
> From: Jiri Kosina <[email protected]>
>
> Input: i8042 - cleanup of debug code
>
> Debugging facility of i8042 is now toggled in runtime instead
> of needing to recompile the kernel. Therefore the DEBUG macro
> is useless (it's hardcoded to be defined anyway). Remove it.
>

I'd rather leave it as is in case someone wants to squeeze last bit of
memory savings from the kernel. Also there some security issues
(someone breaking into the box and enabling i8042 debug and capturing
all keycodes) so uber-sensitive folks can use it to disable debug
completely.

--
Dmitry

2007-05-30 14:30:37

by Jiri Kosina

[permalink] [raw]
Subject: Re: [PATCH] Input: i8042 - cleanup of debug code (was Re: 2.6.22-rc2-mm1)

On Wed, 30 May 2007, Dmitry Torokhov wrote:

> I'd rather leave it as is in case someone wants to squeeze last bit of
> memory savings from the kernel.

Yup, that's why I left CONFIG_HID_DEBUG still in place to let users that
care that much to turn in off.

> Also there some security issues (someone breaking into the box and
> enabling i8042 debug and capturing all keycodes) so uber-sensitive folks
> can use it to disable debug completely.

Well this doesn't seem to an issue at all to me - if someone breaks into
the box, he has dozens of other possibilities how to capture the
keystrokes than enabling i8042 debug.

Thanks,

--
Jiri Kosina

2007-05-30 21:36:33

by Randy Dunlap

[permalink] [raw]
Subject: [PATCH 2/3 -mm] slub: use lib/hexdump

From: Randy Dunlap <[email protected]>

Convert slub error memory dump functions to use lib/hexdump routines.
Completely eliminate slub's print_section() function.

Signed-off-by: Randy Dunlap <[email protected]>
---
mm/slub.c | 53 ++++++++++++-----------------------------------------
1 file changed, 12 insertions(+), 41 deletions(-)

--- linux-2622-rc2mm1-slub.orig/mm/slub.c
+++ linux-2622-rc2mm1-slub/mm/slub.c
@@ -8,6 +8,7 @@
* (C) 2007 SGI, Christoph Lameter <[email protected]>
*/

+#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/module.h>
#include <linux/bit_spinlock.h>
@@ -334,41 +335,6 @@ static int slub_debug;

static char *slub_debug_slabs;

-/*
- * Object debugging
- */
-static void print_section(char *text, u8 *addr, unsigned int length)
-{
- int i, offset;
- int newline = 1;
- char ascii[17];
-
- ascii[16] = 0;
-
- for (i = 0; i < length; i++) {
- if (newline) {
- printk(KERN_ERR "%10s 0x%p: ", text, addr + i);
- newline = 0;
- }
- printk(" %02x", addr[i]);
- offset = i % 16;
- ascii[offset] = isgraph(addr[i]) ? addr[i] : '.';
- if (offset == 15) {
- printk(" %s\n",ascii);
- newline = 1;
- }
- }
- if (!newline) {
- i %= 16;
- while (i < 16) {
- printk(" ");
- ascii[i] = ' ';
- i++;
- }
- printk(" %s\n", ascii);
- }
-}
-
static struct track *get_track(struct kmem_cache *s, void *object,
enum track_item alloc)
{
@@ -425,8 +391,8 @@ static void print_trailer(struct kmem_ca
unsigned int off; /* Offset of last byte */

if (s->flags & SLAB_RED_ZONE)
- print_section("Redzone", p + s->objsize,
- s->inuse - s->objsize);
+ print_hex_dump(KERN_ERR, " Redzone ", DUMP_PREFIX_ADDRESS,
+ 16, 1, p + s->objsize, s->inuse - s->objsize, 1);

printk(KERN_ERR "FreePointer 0x%p -> 0x%p\n",
p + s->offset,
@@ -445,7 +411,8 @@ static void print_trailer(struct kmem_ca

if (off != s->size)
/* Beginning of the filler is the free pointer */
- print_section("Filler", p + off, s->size - off);
+ print_hex_dump(KERN_ERR, " Filler ", DUMP_PREFIX_ADDRESS,
+ 16, 1, p + off, s->size - off, 1);
}

static void object_err(struct kmem_cache *s, struct page *page,
@@ -458,8 +425,10 @@ static void object_err(struct kmem_cache
printk(KERN_ERR " offset=%tu flags=0x%04lx inuse=%u freelist=0x%p\n",
object - addr, page->flags, page->inuse, page->freelist);
if (object > addr + 16)
- print_section("Bytes b4", object - 16, 16);
- print_section("Object", object, min(s->objsize, 128));
+ print_hex_dump(KERN_ERR, " Bytes b4 ", DUMP_PREFIX_ADDRESS,
+ 16, 1, object - 16, 16, 1);
+ print_hex_dump(KERN_ERR, " Object ", DUMP_PREFIX_ADDRESS, 16, 1,
+ object, min(s->objsize, 128), 1);
print_trailer(s, object);
dump_stack();
}
@@ -759,7 +728,9 @@ static void trace(struct kmem_cache *s,
page->freelist);

if (!alloc)
- print_section("Object", (void *)object, s->objsize);
+ print_hex_dump(KERN_ERR, " Object ",
+ DUMP_PREFIX_ADDRESS, 16, 1,
+ (void *)object, s->objsize, 1);

dump_stack();
}

2007-05-30 21:37:03

by Randy Dunlap

[permalink] [raw]
Subject: [PATCH 1/3] hexdump: more output formatting

From: Randy Dunlap <[email protected]>

Add a prefix string parameter. Callers are responsible for any
string length/alignment that they want to see in the output. I.e.,
callers should pad strings to achieve alignment if they want that.

Add rowsize parameter. This is the number of raw data bytes
to be printed per line. Must be 16 or 32.

Add a group_size parameter. This allows callers to dump values
as 1-byte, 2-byte, 4-byte, or 8-byte numbers. Default is
1-byte numbers. If the total length is not an even multiple
of group_size, 1-byte numbers are printed.

Add an "ascii" output parameter. This causes ASCII data output
following the hex data output.

Clean up some doc examples.

Signed-off-by: Randy Dunlap <[email protected]>
---
include/linux/kernel.h | 10 ++--
lib/hexdump.c | 120 +++++++++++++++++++++++++++++++++++++------------
2 files changed, 99 insertions(+), 31 deletions(-)

--- linux-2622-rc2mm1-slub.orig/include/linux/kernel.h
+++ linux-2622-rc2mm1-slub/include/linux/kernel.h
@@ -218,10 +218,12 @@ enum {
DUMP_PREFIX_ADDRESS,
DUMP_PREFIX_OFFSET
};
-extern void hex_dump_to_buffer(const void *buf, size_t len, char *linebuf,
- size_t linebuflen);
-extern void print_hex_dump(const char *level, int prefix_type,
- void *buf, size_t len);
+extern void hex_dump_to_buffer(const void *buf, size_t len,
+ int rowsize, int group_size,
+ char *linebuf, size_t linebuflen, bool ascii);
+extern void print_hex_dump(const char *level, const char *prefix_str,
+ int prefix_type, int rowsize, int group_size,
+ void *buf, size_t len, bool ascii);
#define hex_asc(x) "0123456789abcdef"[x]

#ifdef DEBUG
--- linux-2622-rc2mm1-slub.orig/lib/hexdump.c
+++ linux-2622-rc2mm1-slub/lib/hexdump.c
@@ -16,42 +16,92 @@
* hex_dump_to_buffer - convert a blob of data to "hex ASCII" in memory
* @buf: data blob to dump
* @len: number of bytes in the @buf
+ * @rowsize: number of bytes to print per line; must be 16 or 32
+ * @group_size: number of bytes to print at a time (1, 2, 4, 8; default = 1)
* @linebuf: where to put the converted data
* @linebuflen: total size of @linebuf, including space for terminating NUL
+ * @ascii: include ASCII after the hex output
*
* hex_dump_to_buffer() works on one "line" of output at a time, i.e.,
- * 16 bytes of input data converted to hex + ASCII output.
+ * 16 or 32 bytes of input data converted to hex + ASCII output.
*
* Given a buffer of u8 data, hex_dump_to_buffer() converts the input data
* to a hex + ASCII dump at the supplied memory location.
* The converted output is always NUL-terminated.
*
* E.g.:
- * hex_dump_to_buffer(frame->data, frame->len, linebuf, sizeof(linebuf));
+ * hex_dump_to_buffer(frame->data, frame->len, 1, linebuf, sizeof(linebuf));
*
* example output buffer:
- * 40414243 44454647 48494a4b 4c4d4e4f @ABCDEFGHIJKLMNO
+ * 40 41 42 43 44 45 46 47-48 49 4a 4b 4c 4d 4e 4f @ABCDEFGHIJKLMNO
*/
-void hex_dump_to_buffer(const void *buf, size_t len, char *linebuf,
- size_t linebuflen)
+void hex_dump_to_buffer(const void *buf, size_t len, int rowsize,
+ int group_size, char *linebuf, size_t linebuflen,
+ bool ascii)
{
const u8 *ptr = buf;
u8 ch;
int j, lx = 0;

- for (j = 0; (j < 16) && (j < len) && (lx + 3) < linebuflen; j++) {
- if (j && !(j % 4))
+ if (rowsize != 16 && rowsize != 32)
+ rowsize = 16;
+
+ if (!len)
+ goto nil;
+ if (len > rowsize) /* limit to one line at a time */
+ len = rowsize;
+ if ((len % group_size) != 0) /* no mixed size output */
+ group_size = 1;
+
+ switch (group_size) {
+ case 8: {
+ const u64 *ptr8 = buf;
+ int ngroups = len / group_size;
+
+ for (j = 0; j < ngroups; j++)
+ lx += scnprintf(linebuf + lx, linebuflen - lx,
+ "%16.16llx ", (unsigned long long)*(ptr8 + j));
+ break;
+ }
+
+ case 4: {
+ const u32 *ptr4 = buf;
+ int ngroups = len / group_size;
+
+ for (j = 0; j < ngroups; j++)
+ lx += scnprintf(linebuf + lx, linebuflen - lx,
+ "%8.8x ", *(ptr4 + j));
+ break;
+ }
+
+ case 2: {
+ const u16 *ptr2 = buf;
+ int ngroups = len / group_size;
+
+ for (j = 0; j < ngroups; j++)
+ lx += scnprintf(linebuf + lx, linebuflen - lx,
+ "%4.4x ", *(ptr2 + j));
+ break;
+ }
+
+ default:
+ for (j = 0; (j < rowsize) && (j < len) && (lx + 4) < linebuflen;
+ j++) {
+ ch = ptr[j];
+ linebuf[lx++] = hex_asc(ch >> 4);
+ linebuf[lx++] = hex_asc(ch & 0x0f);
linebuf[lx++] = ' ';
- ch = ptr[j];
- linebuf[lx++] = hex_asc(ch >> 4);
- linebuf[lx++] = hex_asc(ch & 0x0f);
+ }
+ break;
}
- if ((lx + 2) < linebuflen) {
- linebuf[lx++] = ' ';
+ if (!ascii)
+ goto nil;
+
+ if ((lx + 1) < linebuflen)
linebuf[lx++] = ' ';
- }
- for (j = 0; (j < 16) && (j < len) && (lx + 2) < linebuflen; j++)
+ for (j = 0; (j < rowsize) && (j < len) && (lx + 2) < linebuflen; j++)
linebuf[lx++] = isprint(ptr[j]) ? ptr[j] : '.';
+nil:
linebuf[lx++] = '\0';
}
EXPORT_SYMBOL(hex_dump_to_buffer);
@@ -59,44 +109,60 @@ EXPORT_SYMBOL(hex_dump_to_buffer);
/**
* print_hex_dump - print a text hex dump to syslog for a binary blob of data
* @level: kernel log level (e.g. KERN_DEBUG)
+ * @prefix_str: string to prefix each line with;
+ * caller supplies trailing spaces for alignment if desired
* @prefix_type: controls whether prefix of an offset, address, or none
* is printed (%DUMP_PREFIX_OFFSET, %DUMP_PREFIX_ADDRESS, %DUMP_PREFIX_NONE)
+ * @rowsize: number of bytes to print per line; must be 16 or 32
+ * @group_size: number of bytes to print at a time (1, 2, 4, 8; default = 1)
* @buf: data blob to dump
* @len: number of bytes in the @buf
+ * @ascii: include ASCII after the hex output
*
* Given a buffer of u8 data, print_hex_dump() prints a hex + ASCII dump
* to the kernel log at the specified kernel log level, with an optional
* leading prefix.
*
+ * print_hex_dump() works on one "line" of output at a time, i.e.,
+ * 16 or 32 bytes of input data converted to hex + ASCII output.
+ * print_hex_dump() iterates over the entire input @buf, breaking it into
+ * "line size" chunks to format and print.
+ *
* E.g.:
* print_hex_dump(KERN_DEBUG, DUMP_PREFIX_ADDRESS, frame->data, frame->len);
*
- * Example output using %DUMP_PREFIX_OFFSET:
- * 0009ab42: 40414243 44454647 48494a4b 4c4d4e4f @ABCDEFGHIJKLMNO
- * Example output using %DUMP_PREFIX_ADDRESS:
- * ffffffff88089af0: 70717273 74757677 78797a7b 7c7d7e7f pqrstuvwxyz{|}~.
+ * Example output using %DUMP_PREFIX_OFFSET and 1-byte mode:
+ * 0009ab42: 40 41 42 43 44 45 46 47-48 49 4a 4b 4c 4d 4e 4f @ABCDEFGHIJKLMNO
+ * Example output using %DUMP_PREFIX_ADDRESS and 4-byte mode:
+ * ffffffff88089af0: 73727170 77767574-7b7a7978 7f7e7d7c pqrstuvwxyz{|}~.
*/
-void print_hex_dump(const char *level, int prefix_type, void *buf, size_t len)
+void print_hex_dump(const char *level, const char *prefix_str, int prefix_type,
+ int rowsize, int group_size,
+ void *buf, size_t len, bool ascii)
{
u8 *ptr = buf;
int i, linelen, remaining = len;
- unsigned char linebuf[100];
+ unsigned char linebuf[200];
+
+ if (rowsize != 16 && rowsize != 32)
+ rowsize = 16;

- for (i = 0; i < len; i += 16) {
- linelen = min(remaining, 16);
- remaining -= 16;
- hex_dump_to_buffer(ptr + i, linelen, linebuf, sizeof(linebuf));
+ for (i = 0; i < len; i += rowsize) {
+ linelen = min(remaining, rowsize);
+ remaining -= rowsize;
+ hex_dump_to_buffer(ptr + i, linelen, rowsize, group_size,
+ linebuf, sizeof(linebuf), ascii);

switch (prefix_type) {
case DUMP_PREFIX_ADDRESS:
- printk("%s%*p: %s\n", level,
+ printk("%s%s%*p: %s\n", level, prefix_str,
(int)(2 * sizeof(void *)), ptr + i, linebuf);
break;
case DUMP_PREFIX_OFFSET:
- printk("%s%.8x: %s\n", level, i, linebuf);
+ printk("%s%s%.8x: %s\n", level, prefix_str, i, linebuf);
break;
default:
- printk("%s%s\n", level, linebuf);
+ printk("%s%s%s\n", level, prefix_str, linebuf);
break;
}
}

2007-05-30 21:42:51

by Christoph Lameter

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

On Wed, 30 May 2007, Randy Dunlap wrote:

> Add an "ascii" output parameter. This causes ASCII data output
> following the hex data output.

The ascii output is not properly aligned. Its simply thrown in
after the hex dump output. The last line of a multi line hexdump
will have the ascii output moved to the left. Its not properly adjusted.

> + *
> * E.g.:
> * print_hex_dump(KERN_DEBUG, DUMP_PREFIX_ADDRESS, frame->data, frame->len);

^^^ needs to be updated?

2007-05-30 21:45:40

by Christoph Lameter

[permalink] [raw]
Subject: Re: [PATCH 2/3 -mm] slub: use lib/hexdump

On Wed, 30 May 2007, Randy Dunlap wrote:

> From: Randy Dunlap <[email protected]>
>
> Convert slub error memory dump functions to use lib/hexdump routines.
> Completely eliminate slub's print_section() function.

I'd like to keep print_section around as it also does some other things.
Repeating the output formatting at the various call locations will make
it difficult to change if you add another whizbang feature.

I have a patch here that I could sent out today if hexdump would work the
right way.

2007-05-30 21:47:10

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

Christoph Lameter wrote:
> On Wed, 30 May 2007, Randy Dunlap wrote:
>
>> Add an "ascii" output parameter. This causes ASCII data output
>> following the hex data output.
>
> The ascii output is not properly aligned. Its simply thrown in
> after the hex dump output. The last line of a multi line hexdump
> will have the ascii output moved to the left. Its not properly adjusted.

It was never a written requirement. :)
but maybe it is now.

>> + *
>> * E.g.:
>> * print_hex_dump(KERN_DEBUG, DUMP_PREFIX_ADDRESS, frame->data, frame->len);
>
> ^^^ needs to be updated?

Yes, it does.


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

2007-05-30 21:51:40

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH 2/3 -mm] slub: use lib/hexdump

Christoph Lameter wrote:
> On Wed, 30 May 2007, Randy Dunlap wrote:
>
>> From: Randy Dunlap <[email protected]>
>>
>> Convert slub error memory dump functions to use lib/hexdump routines.
>> Completely eliminate slub's print_section() function.
>
> I'd like to keep print_section around as it also does some other things.
> Repeating the output formatting at the various call locations will make
> it difficult to change if you add another whizbang feature.

I have no problems with keeping print_section() except that it's not used
in the current tree after this patch. :)

> I have a patch here that I could sent out today if hexdump would work the
> right way.

Please define "the right way."

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

2007-05-30 21:52:41

by Christoph Lameter

[permalink] [raw]
Subject: Re: [PATCH 2/3 -mm] slub: use lib/hexdump

On Wed, 30 May 2007, Randy Dunlap wrote:

> > I'd like to keep print_section around as it also does some other things.
> > Repeating the output formatting at the various call locations will make
> > it difficult to change if you add another whizbang feature.
>
> I have no problems with keeping print_section() except that it's not used
> in the current tree after this patch. :)
>
> > I have a patch here that I could sent out today if hexdump would work the
> > right way.
>
> Please define "the right way."

Align the ascii output so that it does not look that ugly.

2007-05-30 21:56:45

by Satyam Sharma

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

Hello Randy,

> Add a prefix string parameter. Callers are responsible for any
> string length/alignment that they want to see in the output. I.e.,
> callers should pad strings to achieve alignment if they want that.
>
> Add rowsize parameter. This is the number of raw data bytes
> to be printed per line. Must be 16 or 32.
>
> Add a group_size parameter. This allows callers to dump values
> as 1-byte, 2-byte, 4-byte, or 8-byte numbers. Default is
> 1-byte numbers. If the total length is not an even multiple
> of group_size, 1-byte numbers are printed.

I wonder if (over-)engineering could hurt its adoption by more kernel
users. There aren't very many 8-argument monsters in the kernel,
and one would expect hexdump() to be easier on the fingers to
type? :-) Why not just continue with reasonable default/fixed rowsize
and groupsize values?

> Add an "ascii" output parameter. This causes ASCII data output
> following the hex data output.
[...]
> + if (!ascii)
> + goto nil;
> +
> + if ((lx + 1) < linebuflen)
> linebuf[lx++] = ' ';
> - }
> - for (j = 0; (j < 16) && (j < len) && (lx + 2) < linebuflen; j++)
> + for (j = 0; (j < rowsize) && (j < len) && (lx + 2) < linebuflen; j++)
> linebuf[lx++] = isprint(ptr[j]) ? ptr[j] : '.';
> +nil:
> linebuf[lx++] = '\0';

if (ascii) {
...
}

linebuf[lx++] = '\0';

would help lose a goto and label.

Satyam

2007-05-30 21:57:00

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH 2/3 -mm] slub: use lib/hexdump

Christoph Lameter wrote:
> On Wed, 30 May 2007, Randy Dunlap wrote:
>
>>> I'd like to keep print_section around as it also does some other things.
>>> Repeating the output formatting at the various call locations will make
>>> it difficult to change if you add another whizbang feature.
>> I have no problems with keeping print_section() except that it's not used
>> in the current tree after this patch. :)
>>
>>> I have a patch here that I could sent out today if hexdump would work the
>>> right way.
>> Please define "the right way."
>
> Align the ascii output so that it does not look that ugly.

It's a kernel log file, for crying out loud. It is not formatted.

but I'll change it :(

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

2007-05-30 22:03:20

by Christoph Lameter

[permalink] [raw]
Subject: Re: [PATCH 2/3 -mm] slub: use lib/hexdump

I'd prefer something like this:

Use hexdump in slub.

Signed-off-by: Christoph Lameter <[email protected]>

Index: slub/mm/slub.c
===================================================================
--- slub.orig/mm/slub.c 2007-05-30 14:56:14.000000000 -0700
+++ slub/mm/slub.c 2007-05-30 15:01:33.000000000 -0700
@@ -339,34 +339,10 @@ static char *slub_debug_slabs;
*/
static void print_section(char *text, u8 *addr, unsigned int length)
{
- int i, offset;
- int newline = 1;
- char ascii[17];
-
- ascii[16] = 0;
-
- for (i = 0; i < length; i++) {
- if (newline) {
- printk(KERN_ERR "%8s 0x%p: ", text, addr + i);
- newline = 0;
- }
- printk(" %02x", addr[i]);
- offset = i % 16;
- ascii[offset] = isgraph(addr[i]) ? addr[i] : '.';
- if (offset == 15) {
- printk(" %s\n",ascii);
- newline = 1;
- }
- }
- if (!newline) {
- i %= 16;
- while (i < 16) {
- printk(" ");
- ascii[i] = ' ';
- i++;
- }
- printk(" %s\n", ascii);
- }
+ char buf[10];
+
+ sprintf(buf, "%8s:", text);
+ print_hex_dump(KERN_ERR, buf, DUMP_PREFIX_ADDRESS, 16, 1, addr, length, 1);
}

static struct track *get_track(struct kmem_cache *s, void *object,

2007-05-30 22:04:54

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

Satyam Sharma wrote:
> Hello Randy,
>
>> Add a prefix string parameter. Callers are responsible for any
>> string length/alignment that they want to see in the output. I.e.,
>> callers should pad strings to achieve alignment if they want that.
>>
>> Add rowsize parameter. This is the number of raw data bytes
>> to be printed per line. Must be 16 or 32.
>>
>> Add a group_size parameter. This allows callers to dump values
>> as 1-byte, 2-byte, 4-byte, or 8-byte numbers. Default is
>> 1-byte numbers. If the total length is not an even multiple
>> of group_size, 1-byte numbers are printed.
>
> I wonder if (over-)engineering could hurt its adoption by more kernel
> users. There aren't very many 8-argument monsters in the kernel,
> and one would expect hexdump() to be easier on the fingers to
> type? :-) Why not just continue with reasonable default/fixed rowsize
> and groupsize values?

Yes, one can try to satisfy the users/callers by adapting to their
needs (wishes), which requires parameters or such; or one can have
no callers and end up with (around 11 currently) different hex dump
functions in the kernel source tree, but no users of lib/hexdump.c.

But it won't take much more "requirements" for me to drop the patch.

>> Add an "ascii" output parameter. This causes ASCII data output
>> following the hex data output.
> [...]
>> + if (!ascii)
>> + goto nil;
>> +
>> + if ((lx + 1) < linebuflen)
>> linebuf[lx++] = ' ';
>> - }
>> - for (j = 0; (j < 16) && (j < len) && (lx + 2) < linebuflen; j++)
>> + for (j = 0; (j < rowsize) && (j < len) && (lx + 2) <
>> linebuflen; j++)
>> linebuf[lx++] = isprint(ptr[j]) ? ptr[j] : '.';
>> +nil:
>> linebuf[lx++] = '\0';
>
> if (ascii) {
> ...
> }
>
> linebuf[lx++] = '\0';
>
> would help lose a goto and label.

The label has another reference already, so it wouldn't be lost.

But the if (ascii) block could be added...

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

2007-05-30 22:07:05

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH 2/3 -mm] slub: use lib/hexdump

Christoph Lameter wrote:
> I'd prefer something like this:
>
> Use hexdump in slub.

Sure, that's fine.

> Signed-off-by: Christoph Lameter <[email protected]>
>
> Index: slub/mm/slub.c
> ===================================================================
> --- slub.orig/mm/slub.c 2007-05-30 14:56:14.000000000 -0700
> +++ slub/mm/slub.c 2007-05-30 15:01:33.000000000 -0700
> @@ -339,34 +339,10 @@ static char *slub_debug_slabs;
> */
> static void print_section(char *text, u8 *addr, unsigned int length)
> {
> - int i, offset;
> - int newline = 1;
> - char ascii[17];
> -
> - ascii[16] = 0;
> -
> - for (i = 0; i < length; i++) {
> - if (newline) {
> - printk(KERN_ERR "%8s 0x%p: ", text, addr + i);
> - newline = 0;
> - }
> - printk(" %02x", addr[i]);
> - offset = i % 16;
> - ascii[offset] = isgraph(addr[i]) ? addr[i] : '.';
> - if (offset == 15) {
> - printk(" %s\n",ascii);
> - newline = 1;
> - }
> - }
> - if (!newline) {
> - i %= 16;
> - while (i < 16) {
> - printk(" ");
> - ascii[i] = ' ';
> - i++;
> - }
> - printk(" %s\n", ascii);
> - }
> + char buf[10];
> +
> + sprintf(buf, "%8s:", text);
> + print_hex_dump(KERN_ERR, buf, DUMP_PREFIX_ADDRESS, 16, 1, addr, length, 1);
> }
>
> static struct track *get_track(struct kmem_cache *s, void *object,
>


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

2007-05-30 22:12:18

by Satyam Sharma

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

On 5/31/07, Randy Dunlap <[email protected]> wrote:
> Satyam Sharma wrote:
> > Hello Randy,
> >
> >> Add a prefix string parameter. Callers are responsible for any
> >> string length/alignment that they want to see in the output. I.e.,
> >> callers should pad strings to achieve alignment if they want that.
> >>
> >> Add rowsize parameter. This is the number of raw data bytes
> >> to be printed per line. Must be 16 or 32.
> >>
> >> Add a group_size parameter. This allows callers to dump values
> >> as 1-byte, 2-byte, 4-byte, or 8-byte numbers. Default is
> >> 1-byte numbers. If the total length is not an even multiple
> >> of group_size, 1-byte numbers are printed.
> >
> > I wonder if (over-)engineering could hurt its adoption by more kernel
> > users. There aren't very many 8-argument monsters in the kernel,
> > and one would expect hexdump() to be easier on the fingers to
> > type? :-) Why not just continue with reasonable default/fixed rowsize
> > and groupsize values?
>
> Yes, one can try to satisfy the users/callers by adapting to their
> needs (wishes), which requires parameters or such; or one can have
> no callers and end up with (around 11 currently) different hex dump
> functions in the kernel source tree, but no users of lib/hexdump.c.

Yes, you're right, but I was just wondering whether any users really
cared enough about the rowsize and groupsize, also seeing that
accommodating these two args leads to a lot of increase in code.

> But it won't take much more "requirements" for me to drop the patch.

Please, don't drop this! I only complained because when global or
commonly-used functions have very long arglists, one tends to forget
which arg goes at which number, and it becomes necessary to write
the calls with having the prototype simultaneously open in another
terminal for reference! ...

> >> Add an "ascii" output parameter. This causes ASCII data output
> >> following the hex data output.
> > [...]
> >> + if (!ascii)
> >> + goto nil;
> >> +
> >> + if ((lx + 1) < linebuflen)
> >> linebuf[lx++] = ' ';
> >> - }
> >> - for (j = 0; (j < 16) && (j < len) && (lx + 2) < linebuflen; j++)
> >> + for (j = 0; (j < rowsize) && (j < len) && (lx + 2) <
> >> linebuflen; j++)
> >> linebuf[lx++] = isprint(ptr[j]) ? ptr[j] : '.';
> >> +nil:
> >> linebuf[lx++] = '\0';
> >
> > if (ascii) {
> > ...
> > }
> >
> > linebuf[lx++] = '\0';
> >
> > would help lose a goto and label.
>
> The label has another reference already, so it wouldn't be lost.

Oh yes, I'd missed that if (!len) goto nil; -- sorry for the noise.

Thanks,
Satyam

2007-05-30 22:18:18

by Christoph Lameter

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

On Thu, 31 May 2007, Satyam Sharma wrote:

> Yes, you're right, but I was just wondering whether any users really
> cared enough about the rowsize and groupsize, also seeing that
> accommodating these two args leads to a lot of increase in code.

Have two functions

1. A function that prints full lines with address and ascii
This defaults to 16 bytes by default + ascii.

hex_dump?

2. A function to convert a few bytes for use in other output.

sprint_hex?

2007-05-30 22:27:20

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

Satyam Sharma wrote:
> On 5/31/07, Randy Dunlap <[email protected]> wrote:
>> Satyam Sharma wrote:
>> > Hello Randy,
>> >
>> >> Add a prefix string parameter. Callers are responsible for any
>> >> string length/alignment that they want to see in the output. I.e.,
>> >> callers should pad strings to achieve alignment if they want that.
>> >>
>> >> Add rowsize parameter. This is the number of raw data bytes
>> >> to be printed per line. Must be 16 or 32.
>> >>
>> >> Add a group_size parameter. This allows callers to dump values
>> >> as 1-byte, 2-byte, 4-byte, or 8-byte numbers. Default is
>> >> 1-byte numbers. If the total length is not an even multiple
>> >> of group_size, 1-byte numbers are printed.
>> >
>> > I wonder if (over-)engineering could hurt its adoption by more kernel
>> > users. There aren't very many 8-argument monsters in the kernel,
>> > and one would expect hexdump() to be easier on the fingers to
>> > type? :-) Why not just continue with reasonable default/fixed rowsize
>> > and groupsize values?
>>
>> Yes, one can try to satisfy the users/callers by adapting to their
>> needs (wishes), which requires parameters or such; or one can have
>> no callers and end up with (around 11 currently) different hex dump
>> functions in the kernel source tree, but no users of lib/hexdump.c.
>
> Yes, you're right, but I was just wondering whether any users really
> cared enough about the rowsize and groupsize, also seeing that
> accommodating these two args leads to a lot of increase in code.

The only other (just-posted) user is in mm/prio_tree.c (in the -mm
kernel), and it wants non-byte-mode output (pointers, 4 bytes or
8 bytes). And it just doesn't make much sense to print only
2 pointers per line (when ASCII isn't being printed).

But maybe prio_tree.c::dump_vma() just isn't a good candidate
for lib/hexdump usage...

I need to look at other potential users/callers to see what the
needs are.

>> But it won't take much more "requirements" for me to drop the patch.
>
> Please, don't drop this! I only complained because when global or
> commonly-used functions have very long arglists, one tends to forget
> which arg goes at which number, and it becomes necessary to write
> the calls with having the prototype simultaneously open in another
> terminal for reference! ...
>
>> >> Add an "ascii" output parameter. This causes ASCII data output
>> >> following the hex data output.


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

2007-05-30 22:36:22

by Jesper Juhl

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

On 30/05/07, Randy Dunlap <[email protected]> wrote:
> From: Randy Dunlap <[email protected]>
>

Some friendly nitpicking below :-)

> Add a prefix string parameter. Callers are responsible for any
> string length/alignment that they want to see in the output. I.e.,
> callers should pad strings to achieve alignment if they want that.
>
> Add rowsize parameter. This is the number of raw data bytes
> to be printed per line. Must be 16 or 32.
>
> Add a group_size parameter. This allows callers to dump values

One is called "rowsize" the other "group_size". How about consistent
naming; either "row_size" and "group_size" or "rowsize" and
"groupsize" ?

> as 1-byte, 2-byte, 4-byte, or 8-byte numbers. Default is
> 1-byte numbers. If the total length is not an even multiple
> of group_size, 1-byte numbers are printed.
>
> Add an "ascii" output parameter. This causes ASCII data output
> following the hex data output.
>
> Clean up some doc examples.
>
> Signed-off-by: Randy Dunlap <[email protected]>
> ---
[snip]
> +
> + switch (group_size) {
> + case 8: {
> + const u64 *ptr8 = buf;
> + int ngroups = len / group_size;
> +
> + for (j = 0; j < ngroups; j++)
> + lx += scnprintf(linebuf + lx, linebuflen - lx,
> + "%16.16llx ", (unsigned long long)*(ptr8 + j));
> + break;
> + }
> +

I don't see the point in this (and the other) extra blank lines
between closing brace of one case and the start of the next. Removing
the blank line wouldn't hurt readability but would allow more lines of
code to be visible on the screen at once.

> + case 4: {

[snip]


Apart from those nits, nice patch, nice improvement.


--
Jesper Juhl <[email protected]>
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please http://www.expita.com/nomime.html

2007-05-30 22:41:49

by Satyam Sharma

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

On 5/31/07, Christoph Lameter <[email protected]> wrote:
> On Thu, 31 May 2007, Satyam Sharma wrote:
>
> > Yes, you're right, but I was just wondering whether any users really
> > cared enough about the rowsize and groupsize, also seeing that
> > accommodating these two args leads to a lot of increase in code.
>
> Have two functions
>
> 1. A function that prints full lines with address and ascii
> This defaults to 16 bytes by default + ascii.
>
> hex_dump?
>
> 2. A function to convert a few bytes for use in other output.
>
> sprint_hex?

Yes, or we could go the whole hog and have a total of 4 functions:

(1) For users that want to use a short version, and are fine with
the default values for the grouping / other parameters -- also have
both the print_to_buffer/sprint_hex and print_to_console/hex_dump
variants.

(2) For users that care about these parameters, both the variants
with the expanded arglist (the ones listed above in (1) would then
just be inlines wrapping over these ones)

Just that it would be nice if there is some simple (with short arglist)
function that works well-enough for most people that everyone would
be able to adopt/use quickly.

2007-05-30 22:45:35

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

Satyam Sharma wrote:
> On 5/31/07, Christoph Lameter <[email protected]> wrote:
>> On Thu, 31 May 2007, Satyam Sharma wrote:
>>
>> > Yes, you're right, but I was just wondering whether any users really
>> > cared enough about the rowsize and groupsize, also seeing that
>> > accommodating these two args leads to a lot of increase in code.
>>
>> Have two functions
>>
>> 1. A function that prints full lines with address and ascii
>> This defaults to 16 bytes by default + ascii.
>>
>> hex_dump?
>>
>> 2. A function to convert a few bytes for use in other output.
>>
>> sprint_hex?
>
> Yes, or we could go the whole hog and have a total of 4 functions:
>
> (1) For users that want to use a short version, and are fine with
> the default values for the grouping / other parameters -- also have
> both the print_to_buffer/sprint_hex and print_to_console/hex_dump
> variants.
>
> (2) For users that care about these parameters, both the variants
> with the expanded arglist (the ones listed above in (1) would then
> just be inlines wrapping over these ones)
>
> Just that it would be nice if there is some simple (with short arglist)
> function that works well-enough for most people that everyone would
> be able to adopt/use quickly.

Satyam, you sound like you need something to do, so please grep the
kernel tree for /hexdump/, /hex_dump/, /dump_hex/, /dumphex/, and
other such variants and help me add some callers for lib/hexdump.c.
That way we can see what parameters it really needs.

Thanks. :)

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

2007-05-30 22:49:10

by Satyam Sharma

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

On 5/31/07, Randy Dunlap <[email protected]> wrote:
> Satyam Sharma wrote:
> > On 5/31/07, Christoph Lameter <[email protected]> wrote:
> >> On Thu, 31 May 2007, Satyam Sharma wrote:
> >>
> >> > Yes, you're right, but I was just wondering whether any users really
> >> > cared enough about the rowsize and groupsize, also seeing that
> >> > accommodating these two args leads to a lot of increase in code.
> >>
> >> Have two functions
> >>
> >> 1. A function that prints full lines with address and ascii
> >> This defaults to 16 bytes by default + ascii.
> >>
> >> hex_dump?
> >>
> >> 2. A function to convert a few bytes for use in other output.
> >>
> >> sprint_hex?
> >
> > Yes, or we could go the whole hog and have a total of 4 functions:
> >
> > (1) For users that want to use a short version, and are fine with
> > the default values for the grouping / other parameters -- also have
> > both the print_to_buffer/sprint_hex and print_to_console/hex_dump
> > variants.
> >
> > (2) For users that care about these parameters, both the variants
> > with the expanded arglist (the ones listed above in (1) would then
> > just be inlines wrapping over these ones)
> >
> > Just that it would be nice if there is some simple (with short arglist)
> > function that works well-enough for most people that everyone would
> > be able to adopt/use quickly.
>
> Satyam, you sound like you need something to do, so please grep the
> kernel tree for /hexdump/, /hex_dump/, /dump_hex/, /dumphex/, and
> other such variants and help me add some callers for lib/hexdump.c.
> That way we can see what parameters it really needs.

Sure, I'll get started on this, then! :-)

2007-05-30 22:59:53

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

Satyam Sharma wrote:
> On 5/31/07, Randy Dunlap <[email protected]> wrote:
>> Satyam Sharma wrote:
>> > On 5/31/07, Christoph Lameter <[email protected]> wrote:
>> >> On Thu, 31 May 2007, Satyam Sharma wrote:
>> >>
>> >> > Yes, you're right, but I was just wondering whether any users really
>> >> > cared enough about the rowsize and groupsize, also seeing that
>> >> > accommodating these two args leads to a lot of increase in code.
>> >>
>> >> Have two functions
>> >>
>> >> 1. A function that prints full lines with address and ascii
>> >> This defaults to 16 bytes by default + ascii.
>> >>
>> >> hex_dump?
>> >>
>> >> 2. A function to convert a few bytes for use in other output.
>> >>
>> >> sprint_hex?
>> >
>> > Yes, or we could go the whole hog and have a total of 4 functions:
>> >
>> > (1) For users that want to use a short version, and are fine with
>> > the default values for the grouping / other parameters -- also have
>> > both the print_to_buffer/sprint_hex and print_to_console/hex_dump
>> > variants.
>> >
>> > (2) For users that care about these parameters, both the variants
>> > with the expanded arglist (the ones listed above in (1) would then
>> > just be inlines wrapping over these ones)
>> >
>> > Just that it would be nice if there is some simple (with short arglist)
>> > function that works well-enough for most people that everyone would
>> > be able to adopt/use quickly.
>>
>> Satyam, you sound like you need something to do, so please grep the
>> kernel tree for /hexdump/, /hex_dump/, /dump_hex/, /dumphex/, and
>> other such variants and help me add some callers for lib/hexdump.c.
>> That way we can see what parameters it really needs.
>
> Sure, I'll get started on this, then! :-)

Great! oh, there's also dumpmem, dump_mem, memdump, mem_dump, etc. :)

Thanks.

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

2007-05-30 23:05:53

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

Jesper Juhl wrote:
> On 30/05/07, Randy Dunlap <[email protected]> wrote:
>> From: Randy Dunlap <[email protected]>
>>
>
> Some friendly nitpicking below :-)
>
>> Add a prefix string parameter. Callers are responsible for any
>> string length/alignment that they want to see in the output. I.e.,
>> callers should pad strings to achieve alignment if they want that.
>>
>> Add rowsize parameter. This is the number of raw data bytes
>> to be printed per line. Must be 16 or 32.
>>
>> Add a group_size parameter. This allows callers to dump values
>
> One is called "rowsize" the other "group_size". How about consistent
> naming; either "row_size" and "group_size" or "rowsize" and
> "groupsize" ?

Done. but please don't add that to CodingStyle.

>> as 1-byte, 2-byte, 4-byte, or 8-byte numbers. Default is
>> 1-byte numbers. If the total length is not an even multiple
>> of group_size, 1-byte numbers are printed.

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

2007-05-30 23:07:54

by Jesper Juhl

[permalink] [raw]
Subject: Re: [PATCH 1/3] hexdump: more output formatting

On 31/05/07, Randy Dunlap <[email protected]> wrote:
> Jesper Juhl wrote:
> > On 30/05/07, Randy Dunlap <[email protected]> wrote:
> >> From: Randy Dunlap <[email protected]>
> >>
> >
> > Some friendly nitpicking below :-)
> >
> >> Add a prefix string parameter. Callers are responsible for any
> >> string length/alignment that they want to see in the output. I.e.,
> >> callers should pad strings to achieve alignment if they want that.
> >>
> >> Add rowsize parameter. This is the number of raw data bytes
> >> to be printed per line. Must be 16 or 32.
> >>
> >> Add a group_size parameter. This allows callers to dump values
> >
> > One is called "rowsize" the other "group_size". How about consistent
> > naming; either "row_size" and "group_size" or "rowsize" and
> > "groupsize" ?
>
> Done. but please don't add that to CodingStyle.
>
Hehe, don't worry, I won't ;-)
I just spotted it when reading the patch and thought I'd point it out :)

--
Jesper Juhl <[email protected]>
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please http://www.expita.com/nomime.html

2007-05-31 01:42:10

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH 2/3 -mm] slub: use lib/hexdump

On Wed, 30 May 2007 15:06:30 -0700 Randy Dunlap wrote:

> Christoph Lameter wrote:
> > I'd prefer something like this:
> >
> > Use hexdump in slub.
>
> Sure, that's fine.

Just needs to #include <linux/kernel.h>


> > Signed-off-by: Christoph Lameter <[email protected]>
> >
> > Index: slub/mm/slub.c
> > ===================================================================
> > --- slub.orig/mm/slub.c 2007-05-30 14:56:14.000000000 -0700
> > +++ slub/mm/slub.c 2007-05-30 15:01:33.000000000 -0700
> > @@ -339,34 +339,10 @@ static char *slub_debug_slabs;
> > */
> > static void print_section(char *text, u8 *addr, unsigned int length)
> > {
> > - int i, offset;
> > - int newline = 1;
> > - char ascii[17];
> > -
> > - ascii[16] = 0;
> > -
> > - for (i = 0; i < length; i++) {
> > - if (newline) {
> > - printk(KERN_ERR "%8s 0x%p: ", text, addr + i);
> > - newline = 0;
> > - }
> > - printk(" %02x", addr[i]);
> > - offset = i % 16;
> > - ascii[offset] = isgraph(addr[i]) ? addr[i] : '.';
> > - if (offset == 15) {
> > - printk(" %s\n",ascii);
> > - newline = 1;
> > - }
> > - }
> > - if (!newline) {
> > - i %= 16;
> > - while (i < 16) {
> > - printk(" ");
> > - ascii[i] = ' ';
> > - i++;
> > - }
> > - printk(" %s\n", ascii);
> > - }
> > + char buf[10];
> > +
> > + sprintf(buf, "%8s:", text);
> > + print_hex_dump(KERN_ERR, buf, DUMP_PREFIX_ADDRESS, 16, 1, addr, length, 1);
> > }
> >
> > static struct track *get_track(struct kmem_cache *s, void *object,
> >

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

2007-05-31 01:46:13

by Randy Dunlap

[permalink] [raw]
Subject: [PATCH 1/3 v2] hexdump: more output formatting

From: Randy Dunlap <[email protected]>

Add a prefix string parameter. Callers are responsible for any
string length/alignment that they want to see in the output. I.e.,
callers should pad strings to achieve alignment if they want that.

Add rowsize parameter. This is the number of raw data bytes
to be printed per line. Must be 16 or 32.

Add a groupsize parameter. This allows callers to dump values
as 1-byte, 2-byte, 4-byte, or 8-byte numbers. Default is
1-byte numbers. If the total length is not an even multiple
of groupsize, 1-byte numbers are printed.

Add an "ascii" output parameter. This causes ASCII data output
following the hex data output.

Clean up some doc examples.

Align the ASCII output on all lines that are produced by one call.

Add a new interface, print_hex_dump_bytes(), that is a shortcut
to print_hex_dump(), using default parameter values to print 16 bytes
in byte-size chunks of hex + ASCII output, using printk level KERN_DEBUG.

Signed-off-by: Randy Dunlap <[email protected]>
---
include/linux/kernel.h | 12 ++-
lib/hexdump.c | 149 +++++++++++++++++++++++++++++++++++++++----------
2 files changed, 129 insertions(+), 32 deletions(-)

--- linux-2622-rc2mm1-slub.orig/include/linux/kernel.h
+++ linux-2622-rc2mm1-slub/include/linux/kernel.h
@@ -218,10 +218,14 @@ enum {
DUMP_PREFIX_ADDRESS,
DUMP_PREFIX_OFFSET
};
-extern void hex_dump_to_buffer(const void *buf, size_t len, char *linebuf,
- size_t linebuflen);
-extern void print_hex_dump(const char *level, int prefix_type,
- void *buf, size_t len);
+extern void hex_dump_to_buffer(const void *buf, size_t len,
+ int rowsize, int groupsize,
+ char *linebuf, size_t linebuflen, bool ascii);
+extern void print_hex_dump(const char *level, const char *prefix_str,
+ int prefix_type, int rowsize, int groupsize,
+ void *buf, size_t len, bool ascii);
+extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
+ void *buf, size_t len);
#define hex_asc(x) "0123456789abcdef"[x]

#ifdef DEBUG
--- linux-2622-rc2mm1-slub.orig/lib/hexdump.c
+++ linux-2622-rc2mm1-slub/lib/hexdump.c
@@ -16,42 +16,98 @@
* hex_dump_to_buffer - convert a blob of data to "hex ASCII" in memory
* @buf: data blob to dump
* @len: number of bytes in the @buf
+ * @rowsize: number of bytes to print per line; must be 16 or 32
+ * @groupsize: number of bytes to print at a time (1, 2, 4, 8; default = 1)
* @linebuf: where to put the converted data
* @linebuflen: total size of @linebuf, including space for terminating NUL
+ * @ascii: include ASCII after the hex output
*
* hex_dump_to_buffer() works on one "line" of output at a time, i.e.,
- * 16 bytes of input data converted to hex + ASCII output.
+ * 16 or 32 bytes of input data converted to hex + ASCII output.
*
* Given a buffer of u8 data, hex_dump_to_buffer() converts the input data
* to a hex + ASCII dump at the supplied memory location.
* The converted output is always NUL-terminated.
*
* E.g.:
- * hex_dump_to_buffer(frame->data, frame->len, linebuf, sizeof(linebuf));
+ * hex_dump_to_buffer(frame->data, frame->len, 16, 1,
+ * linebuf, sizeof(linebuf), 1);
*
* example output buffer:
- * 40414243 44454647 48494a4b 4c4d4e4f @ABCDEFGHIJKLMNO
+ * 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f @ABCDEFGHIJKLMNO
*/
-void hex_dump_to_buffer(const void *buf, size_t len, char *linebuf,
- size_t linebuflen)
+void hex_dump_to_buffer(const void *buf, size_t len, int rowsize,
+ int groupsize, char *linebuf, size_t linebuflen,
+ bool ascii)
{
const u8 *ptr = buf;
u8 ch;
int j, lx = 0;
+ int ascii_column;

- for (j = 0; (j < 16) && (j < len) && (lx + 3) < linebuflen; j++) {
- if (j && !(j % 4))
+ if (rowsize != 16 && rowsize != 32)
+ rowsize = 16;
+
+ if (!len)
+ goto nil;
+ if (len > rowsize) /* limit to one line at a time */
+ len = rowsize;
+ if ((len % groupsize) != 0) /* no mixed size output */
+ groupsize = 1;
+
+ switch (groupsize) {
+ case 8: {
+ const u64 *ptr8 = buf;
+ int ngroups = len / groupsize;
+
+ for (j = 0; j < ngroups; j++)
+ lx += scnprintf(linebuf + lx, linebuflen - lx,
+ "%16.16llx ", (unsigned long long)*(ptr8 + j));
+ ascii_column = 17 * ngroups + 2;
+ break;
+ }
+
+ case 4: {
+ const u32 *ptr4 = buf;
+ int ngroups = len / groupsize;
+
+ for (j = 0; j < ngroups; j++)
+ lx += scnprintf(linebuf + lx, linebuflen - lx,
+ "%8.8x ", *(ptr4 + j));
+ ascii_column = 9 * ngroups + 2;
+ break;
+ }
+
+ case 2: {
+ const u16 *ptr2 = buf;
+ int ngroups = len / groupsize;
+
+ for (j = 0; j < ngroups; j++)
+ lx += scnprintf(linebuf + lx, linebuflen - lx,
+ "%4.4x ", *(ptr2 + j));
+ ascii_column = 5 * ngroups + 2;
+ break;
+ }
+
+ default:
+ for (j = 0; (j < rowsize) && (j < len) && (lx + 4) < linebuflen;
+ j++) {
+ ch = ptr[j];
+ linebuf[lx++] = hex_asc(ch >> 4);
+ linebuf[lx++] = hex_asc(ch & 0x0f);
linebuf[lx++] = ' ';
- ch = ptr[j];
- linebuf[lx++] = hex_asc(ch >> 4);
- linebuf[lx++] = hex_asc(ch & 0x0f);
+ }
+ ascii_column = 3 * rowsize + 2;
+ break;
}
- if ((lx + 2) < linebuflen) {
- linebuf[lx++] = ' ';
+ if (!ascii)
+ goto nil;
+
+ while (lx < (linebuflen - 1) && lx < (ascii_column - 1))
linebuf[lx++] = ' ';
- }
- for (j = 0; (j < 16) && (j < len) && (lx + 2) < linebuflen; j++)
+ for (j = 0; (j < rowsize) && (j < len) && (lx + 2) < linebuflen; j++)
linebuf[lx++] = isprint(ptr[j]) ? ptr[j] : '.';
+nil:
linebuf[lx++] = '\0';
}
EXPORT_SYMBOL(hex_dump_to_buffer);
@@ -59,46 +115,83 @@ EXPORT_SYMBOL(hex_dump_to_buffer);
/**
* print_hex_dump - print a text hex dump to syslog for a binary blob of data
* @level: kernel log level (e.g. KERN_DEBUG)
+ * @prefix_str: string to prefix each line with;
+ * caller supplies trailing spaces for alignment if desired
* @prefix_type: controls whether prefix of an offset, address, or none
* is printed (%DUMP_PREFIX_OFFSET, %DUMP_PREFIX_ADDRESS, %DUMP_PREFIX_NONE)
+ * @rowsize: number of bytes to print per line; must be 16 or 32
+ * @groupsize: number of bytes to print at a time (1, 2, 4, 8; default = 1)
* @buf: data blob to dump
* @len: number of bytes in the @buf
+ * @ascii: include ASCII after the hex output
*
* Given a buffer of u8 data, print_hex_dump() prints a hex + ASCII dump
* to the kernel log at the specified kernel log level, with an optional
* leading prefix.
*
+ * print_hex_dump() works on one "line" of output at a time, i.e.,
+ * 16 or 32 bytes of input data converted to hex + ASCII output.
+ * print_hex_dump() iterates over the entire input @buf, breaking it into
+ * "line size" chunks to format and print.
+ *
* E.g.:
- * print_hex_dump(KERN_DEBUG, DUMP_PREFIX_ADDRESS, frame->data, frame->len);
+ * print_hex_dump(KERN_DEBUG, "raw data: ", DUMP_PREFIX_ADDRESS,
+ * 16, 1, frame->data, frame->len, 1);
*
- * Example output using %DUMP_PREFIX_OFFSET:
- * 0009ab42: 40414243 44454647 48494a4b 4c4d4e4f @ABCDEFGHIJKLMNO
- * Example output using %DUMP_PREFIX_ADDRESS:
- * ffffffff88089af0: 70717273 74757677 78797a7b 7c7d7e7f pqrstuvwxyz{|}~.
+ * Example output using %DUMP_PREFIX_OFFSET and 1-byte mode:
+ * 0009ab42: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f @ABCDEFGHIJKLMNO
+ * Example output using %DUMP_PREFIX_ADDRESS and 4-byte mode:
+ * ffffffff88089af0: 73727170 77767574 7b7a7978 7f7e7d7c pqrstuvwxyz{|}~.
*/
-void print_hex_dump(const char *level, int prefix_type, void *buf, size_t len)
+void print_hex_dump(const char *level, const char *prefix_str, int prefix_type,
+ int rowsize, int groupsize,
+ void *buf, size_t len, bool ascii)
{
u8 *ptr = buf;
int i, linelen, remaining = len;
- unsigned char linebuf[100];
+ unsigned char linebuf[200];

- for (i = 0; i < len; i += 16) {
- linelen = min(remaining, 16);
- remaining -= 16;
- hex_dump_to_buffer(ptr + i, linelen, linebuf, sizeof(linebuf));
+ if (rowsize != 16 && rowsize != 32)
+ rowsize = 16;
+
+ for (i = 0; i < len; i += rowsize) {
+ linelen = min(remaining, rowsize);
+ remaining -= rowsize;
+ hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize,
+ linebuf, sizeof(linebuf), ascii);

switch (prefix_type) {
case DUMP_PREFIX_ADDRESS:
- printk("%s%*p: %s\n", level,
+ printk("%s%s%*p: %s\n", level, prefix_str,
(int)(2 * sizeof(void *)), ptr + i, linebuf);
break;
case DUMP_PREFIX_OFFSET:
- printk("%s%.8x: %s\n", level, i, linebuf);
+ printk("%s%s%.8x: %s\n", level, prefix_str, i, linebuf);
break;
default:
- printk("%s%s\n", level, linebuf);
+ printk("%s%s%s\n", level, prefix_str, linebuf);
break;
}
}
}
EXPORT_SYMBOL(print_hex_dump);
+
+/**
+ * print_hex_dump_bytes - shorthand form of print_hex_dump() with default params
+ * @prefix_str: string to prefix each line with;
+ * caller supplies trailing spaces for alignment if desired
+ * @prefix_type: controls whether prefix of an offset, address, or none
+ * is printed (%DUMP_PREFIX_OFFSET, %DUMP_PREFIX_ADDRESS, %DUMP_PREFIX_NONE)
+ * @buf: data blob to dump
+ * @len: number of bytes in the @buf
+ *
+ * Calls print_hex_dump(), with log level of KERN_DEBUG,
+ * rowsize of 16, groupsize of 1, and ASCII output included.
+ */
+void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
+ void *buf, size_t len)
+{
+ print_hex_dump(KERN_DEBUG, prefix_str, prefix_type, 16, 1,
+ buf, len, 1);
+}
+EXPORT_SYMBOL(print_hex_dump_bytes);

2007-06-01 17:15:34

by Greg KH

[permalink] [raw]
Subject: Re: 2.6.22-rc2-mm1

On Tue, May 29, 2007 at 07:25:11PM +0200, Cornelia Huck wrote:
> On Tue, 29 May 2007 18:55:21 +0200,
> Tilman Schmidt <[email protected]> wrote:
>
> > Am 29.05.2007 09:25 schrieb Cornelia Huck:
> > > Could those folks that had trouble with this kernel check out whether
> > > the following patch helps?
> >
> > Yes, that patch fixes my problem.
> >
> > Thanks,
> > Tilman
>
> Thanks for testing (to both of you) and again sorry for the breakage.

Can you resend me the new patch, I seem to have lost it in this thread
:(

thanks,

greg k-h