2007-02-15 13:14:24

by Andrew Morton

[permalink] [raw]
Subject: 2.6.20-mm1


Temporarily at

http://userweb.kernel.org/~akpm/2.6.20-mm1/

Will appear later at

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


- This kernel doesn't compile on powerpc due to the local_t changes

- git-drm got dropped due to it breaking X

- The ext4 devel tree was added, then got dropped again due to various
breakages. Next time.

- The IDE tree got dropped due to various linkage problems

- The sony-laptop driver has been disabled due to disagreement between
the git-acpi and git-backlight trees

- I'm not sure that all the necessary XFS-related fixes made it into the
git-block tree. But Jens put a nasty into the CPU scheduler so hopefully
things will work there now.

- The UBI tree got dropped due to probable lack of a git sync with
mainline (ie: it's a 13.5MB diff whcih doesn't apply very well)

- Probably lots of other things are broken too. This is a bit of a
heck-I'd-better-get-it-out-before-they-wreck-everything release.

- Added the "Use IOAT for MD" tree as git-md-accel.patch (Dan Williams
<[email protected]>)

- Added the v9fs tree as git-v9fs.patch (Eric Van Hensbergen
<[email protected]>)

- Added the rustyvisor

- Added the blackfin architecture

- Added the utrace tree. This is a huge rewrite of the kernel's ptrace
mechanisms (Roland McGrath <[email protected]>).

- Added the Linux Kernel Markers code. No idea how to use it and it
seems we're not to be told.



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.

- Semi-daily 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.20-rc6-mm3:


origin.patch
git-acpi.patch
git-alsa.patch
git-agpgart.patch
git-arm.patch
git-audit-master.patch
git-avr32.patch
git-cifs.patch
git-cpufreq.patch
git-dvb.patch
git-hid.patch
git-ia64.patch
git-ieee1394.patch
git-infiniband.patch
git-input.patch
git-jfs.patch
git-libata-all.patch
git-lxdialog.patch
git-md-accel.patch
git-mips.patch
git-mtd.patch
git-netdev-all.patch
git-backlight.patch
git-ioat.patch
git-ocfs2.patch
git-pciseg.patch
git-sh.patch
git-block.patch
git-unionfs.patch
git-v9fs.patch
git-wireless.patch
git-ipwireless_cs.patch
git-gccbug.patch

git trees.

-namespaces-fix-exit-race-by-splitting-exit.patch
-uml-fix-mknod.patch
-dont-allow-the-stack-to-grow-into-hugetlb-reserved-regions.patch
-use-__u8-__u32-in-userspace-ioctl-defines-for-i2o.patch
-fix-config_x86_64_-typo-in-drivers-kvm-svmc.patch
-m68k-uaccessh-needs-schedh.patch
-fs-lockd-clntlockc-add-missing-newlines-to-dprintks.patch
-knfsd-ratelimit-some-nfsd-messages-that-are-triggered-by-external-events.patch
-use-__u8-rather-than-u8-in-userspace-size-defines-in-hdregh.patch
-fuse-fix-bug-in-control-filesystem-mount.patch
-ufs-alloc-metadata-null-page-fix.patch
-ufs-truncate-negative-to-unsigned-fix.patch
-ufs-rellocation-fix.patch
-cdevh-forward-declarations.patch
-fix-via-irq-quirk-breakage.patch
-i386-in-assign_irq_vector-look-at-all-vectors-before-giving-up.patch
-translate-dashes-in-filenames-for-headers-install.patch
-remove-warning-vfs-is-out-of-sync-with-lock-manager.patch
-scsi_ioctl-sg_io-timeout-conversion-fix.patch
-fix-for-patch-ecdfc9787fe527491baefc22dce8b2dbd5b2908d.patch
-enable-mouse-button-23-emulation-for-x86-macs.patch
-x86-fix-vdso-mapping-for-aout-executables.patch
-mm-show-bounce-pages-in-oom-killer-output.patch
-add-install_special_mapping.patch
-i386-vdso-use-install_special_mapping.patch
-x86_64-ia32-vdso-use-install_special_mapping.patch
-powerpc-vdso-use-install_special_mapping.patch
-sh-vdso-use-install_special_mappingpatch.patch
-use-correct-macros-in-raid-code-not-raw-asm.patch
-use-correct-macros-in-raid-code-not-raw-asm-include.patch
-acpi-bay-remove-acpi-driver-struct.patch
-asus_acpi-add-support-for-asus-z81sp.patch
-exit-acpi-processor-module-gracefully-if-acpi-is-disabled-tidy.patch
-acpi-make-bay-depend-on-dock.patch
-acpi-updates-rtc-cmos-device-platform_data.patch
-acpi-updates-rtc-cmos-device-platform_data-vs-git-acpi.patch
-acpi-correct-apparent-typo-config_acpi_debug_output.patch
-drivers-acpi-hotkeyc-make-2-structs-static.patch
-2.6-sony_acpi4.patch
-sony_apci-resume.patch
-sony_apci-resume-fix.patch
-acpi-add-backlight-support-to-the-sony_acpi.patch
-acpi-add-backlight-support-to-the-sony_acpi-v2.patch
-video-sysfs-support-take-2-add-dev-argument-for-backlight_device_register-sony_acpi-fix.patch
-sony_acpi-addacpi_bus_generate-event.patch
-sony_acpi-addacpi_bus_generate-event-fix.patch
-sony_acpi-add-lanpower-and-audiopower-controls.patch
-sony_acpi-allow-multiple-sony_acpi_values-for-the-same-name.patch
-sony_acpi-fix-sony_acpi-backlight-registration-and-unregistration.patch
-agpgart-allow-drm-populated-agp-memory-types.patch
-agpgart-allow-drm-populated-agp-memory-types-tidy.patch
-agpgart-allow-drm-populated-agp-memory-types-update.patch
-arm-imx-serial-fix-tx-buffer-overflows.patch
-arm-imx-serial-fix-irq-allocation.patch
-amba-pl010-add-reference-to-ep93xx-to-kconfig-help-entry.patch
-avr32-fix-build-breakage.patch
-remove-hotplug-cpu-crap-from-cpufreq.patch
-rewrite-lock-in-cpufreq-to-eliminate-cpufreq-hotplug-related-issues.patch
-rewrite-lock-in-cpufreq-to-eliminate-cpufreq-hotplug-related-issues-fix.patch
-rewrite-lock-in-cpufreq-to-eliminate-cpufreq-hotplug-related-issues-fix-2.patch
-rewrite-lock-in-cpufreq-to-eliminate-cpufreq-hotplug-related-issues-fix-3.patch
-ondemand-governor-restructure-the-work-callback.patch
-ondemand-governor-use-new-cpufreq-rwsem-locking-in-work-callback.patch
-cpu_freq_table-shouldnt-be-a-def_tristate.patch
-ppc-cs4218_tdm-remove-extra-brace.patch
-ppc-use-syslog-macro-for-the-printk-log-level.patch
-fix-ppc64s-writing-to-struct-file_operations.patch
-fix-apparent-typo-config_serial_cpm_smc.patch
-gregkh-driver-kobject_robust.patch
-gregkh-driver-pcmcia-device.patch
-gregkh-driver-driver-core-remove-device_is_registered-in-device_move.patch
-gregkh-driver-driver-core-allow-device_move.patch
-gregkh-driver-built-in-drivers-in-sys-modules.patch
-gregkh-driver-modules-drivers-dir-only-if-needed.patch
-gregkh-driver-pci-kbuild-modname.patch
-gregkh-driver-serio-kbuild-modname.patch
-gregkh-driver-usb-kbuild-modname.patch
-gregkh-driver-sys-modules-holders.patch
-gregkh-driver-driver-core-fixes-make_class_name-retval-checks.patch
-gregkh-driver-driver-core-fixes-device_register-retval-check-in-platformc.patch
-gregkh-driver-driver-core-don-t-stop-probing-on-probe-errors.patch
-gregkh-driver-driver-core-change-function-call-order-in-device_bind_driver.patch
-gregkh-driver-driver-core-fix-race-in-sysfs-between-sysfs_remove_file-and-read-write.patch
-gregkh-driver-sysfs-suppress-lockdep-warnings.patch
-gregkh-driver-sysfs-kobject_put-cleanup.patch
-gregkh-driver-kobject-kobject_put-cleanup.patch
-gregkh-driver-sysfs-error-handling-in-sysfs-fill_read_buffer.patch
-gregkh-driver-howto-add-a-reference-to-harbison-and-steele.patch
-gregkh-driver-sysfs-fix-missing-include-of-listh-in-sysfsh.patch
-gregkh-driver-add-uevent-vars-for-devices-with-a-class.patch
-gregkh-driver-add-device_type-to-device.patch
-gregkh-driver-allow-to-supress-uevent-for-devices.patch
-gregkh-driver-increase-firmware-loader-timeout.patch
-gregkh-driver-sysfs-shadow-directory-support.patch
-gregkh-driver-network-device.patch
-kobject-kobj-k_name-verification-fix.patch
-spider-fix-gregkh-driver-network-device.patch
-driver-core-per-subsystem-multithreaded-probing.patch
-powerpc-make-it-compile.patch
-driver-core-dont-fail-attaching-the-device-if-it.patch
-drivers-char-drm-drm_mmc-remove-unused-exports.patch
-avoid-race-when-deregistering-the-ir-control-for-dvb-usb.patch
-kthread-api-conversion-for-dvb_frontend-and-av7110.patch
-remove-the-unused-kernel-config-option-video_videobuf.patch
-drivers-media-dvb-frontends-make-4-functions-static.patch
-dvb-video_buf-depends-on-pci.patch
-drivers-media-video-convert-to-generic-boolean-values.patch
-drivers-media-video-cafe_ccicc-fix-warning.patch
-cx88-videoc-remove-struct-radionorms.patch
-if-0-v4l_printk_ioctl_arg.patch
-jdelvare-i2c-i2c-ali1563-cleanup-messages.patch
-jdelvare-i2c-i2c-vt8231-remove-superfluous-initialization.patch
-jdelvare-i2c-i2c-nforce2-drop-unused-reference-to-pci_dev.patch
-jdelvare-i2c-i2c-piix4-add-ati-sb600-support.patch
-jdelvare-i2c-i2c-smbus-doc-typo.patch
-jdelvare-i2c-i2c-i801-spelling-fix.patch
-jdelvare-i2c-i2c-completion-header-cleanups.patch
-jdelvare-i2c-i2c-driver-suspend-resume-shutdown-support.patch
-jdelvare-i2c-i2c-ali1563-fix-initialization.patch
-jdelvare-i2c-i2c-i801-document-unhiding-quirk.patch
-jdelvare-i2c-i2c-update-bus-id-list.patch
-jdelvare-i2c-i2c-add-ids-to-bus-drivers.patch
-jdelvare-i2c-i2c-ibm_iic-add-parent-device.patch
-jdelvare-i2c-i2c-viapro-add-cx700-support.patch
-jdelvare-i2c-i2c-01-hwmon-drivers-stop-using-i2c_adapterdev.patch
-jdelvare-i2c-i2c-02-i2c-bus-drivers-stop-using-i2c_adapterdev.patch
-jdelvare-i2c-i2c-03-misc-i2c-drivers-stop-using-i2c_adapterdev.patch
-jdelvare-i2c-i2c-04-other-drivers-stop-using-i2c_adapterdev.patch
-jdelvare-i2c-i2c-05-remove-i2c_adapterdev-from-all-i2c-adapters.patch
-jdelvare-i2c-i2c-06-missing-i2c_adapter-parent-devices.patch
-tsl2550-support-i2c-device-driver.patch
-ia64-enable-config_debug_spinlock_sleep.patch
-ia64-alignment-bug-in-ldscript.patch
-ia64-virt_to_page-can-be-called-with-null-arg.patch
-ia64-swiotlb-bug-fixes.patch
-ia64-make-swiotlb-use-bus_to_virt-virt_to_bus.patch
-ia64-swiotlb-cleanup.patch
-ia64-swiotlb-abstraction-eg-for-xen.patch
-ia64-missing-exports-hwsw_sync_.patch
-ia64-enable-swiotlb-only-when-needed.patch
-show_mem-for-ia64-sparsemem-numa.patch
-ia64-add-pci_get_legacy_ide_irq.patch
-ia64-register-memory-ranges-in-a-consistent-manner.patch
-ia64-clean-up-sparsemem-memory_present-calls.patch
-infiniband-fix-for-gregkh-driver-network-device.patch
-infiniband-work-around-gcc-bug-on-sparc64.patch
-ehca-fix-memleak-on-module-unloading.patch
-change-incorrect-config_input_atixl-to-config_mouse_atixl.patch
-config_input_debug-improvements.patch
-search-a-little-harder-for-mkimage.patch
-make-mkcompile_h-use-lang=c-and-lc_all=c-for-cc-v.patch
-add-mailmap-for-proper-git-shortlog-output.patch
-qconf-immediately-update-integer-and-string-values-in-xconfig-display-take-2.patch
-kbuild-dont-ignore-localversion-files-if-the-path-includes-a.patch
-qconf-relocate-search-command.patch
-qconf-fix-showing-help-info-on-failed-search.patch
-qconf-back-button-behaviour-normalization.patch
-make-help-in-build-tree-doesnt-show-headers_-targets.patch
-kbuild-remove-references-to-deprecated-prepare-all-target.patch
-new-toplevel-target-headers_check_all.patch
-pata_platform-set_mode-fix.patch
-libata-scsi-ata_task_ioctl-should-return-ata-registers-from.patch
-sata_nv-cleanup-adma-error-handling-v2.patch
-sata_nv-cleanup-adma-error-handling-v2-cleanup.patch
-sata_nv-use-adma-for-nodata-commands.patch
-fix-config_sata_sis=y-compile-error.patch
-libata-fix-translation-for-start-stop-unit.patch
-mm-ide-ide-acpi-support-warning-fix.patch
-git-mips-kconfig-fix.patch
-git-mips-prom_free_prom_memory-borkage.patch
-mips-dbg_io-stray-brackets-fix.patch
-mips-turbochannel-update-to-the-driver-model.patch
-mips-turbochannel-update-to-the-driver-model-fix.patch
-mips-turbochannel-support-for-the-decstation.patch
-mips-eisa-registration-with-config_eisa.patch
-mips-declance-driver-model-for-the-pmad-a.patch
-mips-defxx-turbochannel-support.patch
-mips-pmag-ba-fb-convert-to-the-driver-model.patch
-mips-pmagb-b-fb-convert-to-the-driver-model.patch
-mips-dec_esp-driver-model-for-the-pmaz-a.patch
-git-mmc-fixup.patch
-mmc-add-a-quirk-to-allow-ene-pci-sd-card-readers-to-work-again.patch
-mmc-au1xmmc-return-errors-for-unknown-response-types.patch
-mmc-au1xmmc-implement-proper-ro-switch-detection.patch
-mtd_ck804xrom-must-depend-on-pci.patch
-git-netdev-all-atl1-build-fix.patch
-git-netdev-all-atl1-pm-fix.patch
-b44-fix-frequent-link-changes.patch
-spidernet-rework-rx-linked-list.patch
-cxgb3-vs-gregkh-driver-network-device.patch
-net-ifb-error-path-loop-fix.patch
-ucc-ether-driver-kmalloc-casting-cleanups.patch
-broadcom-4400-resume-small-fix-v2.patch
-remove-one-remaining-define-bcm_tso-1.patch
-fs_enet-of-related-fixup-for-fec-and-scc-macs.patch
-82596-warning-fix.patch
-hp100-convert-pci_module_init-to-pci_register_driver.patch
-ehea-fixed-wrong-jumbo-frames-status-query.patch
-ehea-fixed-missing-tasklet_kill-call.patch
-sky2-fix-msi-related-resume-breakage.patch
-user-of-the-jiffies-rounding-code-networking.patch
-net-irda-proper-prototypes.patch
-fix-for-crash-in-adummy_init.patch
-z85230-spinlock-logic.patch
-bonding-replace-kmalloc-memset-pairs-with-the-appropriate-kzalloc-calls.patch
-bonding-replace-kmalloc-memset-pairs-with-the-appropriate-kzalloc-calls-fix.patch
-net-wanrouter-wanmainc-cleanups.patch
-remove-tcp-header-from-tcp_v4_check-take-2.patch
-slip-replace-kmalloc-memset-pairs-with-the.patch
-remove-unused-kernel-config-option-dlci_count.patch
-dccp-warning-fixes.patch
-netfilter-warning-fix.patch
-nf_conntrack_h323-must-depend-on-ipv6-ipv6=n.patch
-bonding-arp-monitoring-broken-on-x86_64.patch
-r8169-warning-fixes.patch
-8250-uart-backup-timer.patch
-serial-trivial-code-flow-simplification.patch
-make-sure-uart-is-powered-up-when-dumping-mctrl-status.patch
-perle-multimodem-card-pci-ras-detection.patch
-serial-replace-kmallocmemset-with-kzalloc.patch
-fix-pnx8550-serial-breakage.patch
-pnx8550-uart-driver.patch
-pnx8550-uart-driver-fixes.patch
-gregkh-pci-pci-check-szhi-when-sz-is-0-when-64-bit-iomem-bigger-than-4g.patch
-gregkh-pci-pci-remove-too-specialized-__pci_enable_device-for-default-resume.patch
-gregkh-pci-pci-move-pci_fixup_device-and-is_enabled.patch
-gregkh-pci-pci-add-extremely-specialized-__pci_reenable_device.patch
-gregkh-pci-pci-add-selected_regions-funcs.patch
-gregkh-pci-pci-define-inline-for-test-of-channel-error-state.patch
-gregkh-pci-pci-use-newly-defined-pci-channel-offline-routine.patch
-gregkh-pci-pci-quirksc-cleanup.patch
-gregkh-pci-pci-remove-pci_find_device_reverse.patch
-gregkh-pci-pci-mark-pci_find_device-as-__deprecated.patch
-gregkh-pci-pciehp-cleanup-init_slot.patch
-gregkh-pci-pciehp-cleanup-slot-list.patch
-gregkh-pci-pciehp-remove-unnecessary-php_ctlr.patch
-gregkh-pci-pciehp-remove-unused-pci_bus-from-struct-controller.patch
-gregkh-pci-pciehp-cleanup-register-access.patch
-gregkh-pci-pciehp-cleanup-pciehph.patch
-gregkh-pci-pciehp-remove-unused-pcie_cap_base.patch
-gregkh-pci-pciehp-cleanup-wait-command-completion.patch
-gregkh-pci-pciehp-fix-wait-command-completion.patch
-gregkh-pci-pciehp-add-electro-mechanical-interlock-support-to-the-pcie-hotplug-driver.patch
-gregkh-pci-shpchp-remove-config_hotplug_pci_shpc_poll_event_mode.patch
-gregkh-pci-shpchp-remove-dbg_xxx_routine.patch
-gregkh-pci-shpchp-delete-trailing-whitespace.patch
-gregkh-pci-pci-quirk-1k-i-o-space-iobl_adr-fix-on-p64h2.patch
-gregkh-pci-pci-speed-up-the-intel-smbus-unhiding-quirk.patch
-gregkh-pci-pci-remove-quirk_sis_96x_compatible.patch
-gregkh-pci-pci-make-isa_bridge-alpha-only.patch
-gregkh-pci-pci-cleanup-msi-code.patch
-gregkh-pci-pci-power-management-remove-noise-on-non-manageable-hw.patch
-gregkh-pci-pci-duplicate-ids-ata_piix.patch
-gregkh-pci-pci-duplicate-ids-ipr.patch
-gregkh-pci-msi-replace-pci_msi_quirk-with-calls-to-pci_no_msi.patch
-gregkh-pci-msi-remove-pci_scan_msi_device.patch
-gregkh-pci-msi-combine-pci__msi-msix_state.patch
-gregkh-pci-msi-abstract-msi-suspend.patch
-make-cardbus_mem_size-and-cardbus_io_size-boot-options.patch
-make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix.patch
-bugfixes-pci-devices-get-assigned-redundant-irqs.patch
-sh-add-kconfig-default.patch
-drivers-scsi-aic7xxx-aic79xx_corec-make-ahd_match_scb-static.patch
-scsi-clean-up-warnings-in-advansys-driver.patch
-drivers-scsi-pcmcia-nsp_csh-removal-of-old.patch
-scsi-sic7xxx-stray-bracket-fix.patch
-scsi-53c7xx-brackets-fix.patch
-dac960-kmalloc-kzalloc-casting-cleanups.patch
-drivers-scsi-buslogic-replace-boolean-by-bool.patch
-git-block-fixup.patch
-git-block-borkage.patch
-git-block-atomicity-fix.patch
-gregkh-usb-usb-unusual_devsh-for-sony-floppy.patch
-gregkh-usb-usb-add-epic-support-to-the-io_edgeport-driver.patch
-gregkh-usb-usb-move-usb_device_class-class-devices-to-be-real-devices.patch
-gregkh-usb-usb-convert-usb-class-devices-to-real-devices.patch
-gregkh-usb-usb-rework-the-ohci-quirk-mecanism-as-suggested-by-david.patch
-gregkh-usb-usb-implement-support-for-split-endian-ohci.patch
-gregkh-usb-usb-implement-support-for-ehci-with-big-endian-mmio.patch
-gregkh-usb-usb-fix-ohci-warning.patch
-gregkh-usb-usb-fix-ehci-warning.patch
-gregkh-usb-usb-linux-usb_ch9h-becomes-linux-usb-ch9h.patch
-gregkh-usb-usb-define-usb_class_misc-in-linux-usb-ch9h.patch
-gregkh-usb-usb-remove-unneeded-void-casts-in-idmousec.patch
-gregkh-usb-usb-mutexification-of-rio500.patch
-gregkh-usb-usb-devioc-add-missing-init_list_head.patch
-gregkh-usb-usb-indicate-active-altsetting-in-proc-bus-usb-devices-file.patch
-gregkh-usb-usbcore-remove-unneeded-error-check.patch
-gregkh-usb-usb-ethernet-gadget-interop-with-mcci-windows-driver.patch
-gregkh-usb-rndis_host-learns-activesync-basics.patch
-gregkh-usb-ohci-rework-bus-glue-integration-to-allow-several-at-once.patch
-gregkh-usb-ohci-add-support-for-ohci-controller-on-the-of_platform-bus.patch
-gregkh-usb-usb-serial-add-dynamic-id-support-to-usb-serial-core.patch
-gregkh-usb-usb-serial-add-driver-pointer-to-all-usb-serial-drivers.patch
-gregkh-usb-usb-bugfix-for-aircable-add-module-and-name-to-usb_serial_driver.patch
-gregkh-usb-usb-gadget-file_storagec-remove-unnecessary-casts.patch
-gregkh-usb-usb-add-usb_endpoint_xfer_control-to-usbh.patch
-gregkh-usb-usb-add-binary-api-to-usbmon.patch
-gregkh-usb-usb-race-on-disconnect-in-mdc800.patch
-gregkh-usb-uhci-improved-debugging-checks-for-the-frame-list.patch
-gregkh-usb-uhci-no-dummy-tds-for-iso-qhs.patch
-gregkh-usb-usb-storage-scsi-level-fixes.patch
-gregkh-usb-usb-ohci-at91-refcount-fix-for-irq-wake-enables.patch
-gregkh-usb-usb-gadgetfs-whitespace-cleanup.patch
-gregkh-usb-usb-gadgetfs-remove-delayed-init-mode.patch
-gregkh-usb-usb-power-management-for-kaweth.patch
-gregkh-usb-usb-better-ethtool-support-for-kaweth.patch
-gregkh-usb-usb-ps3-ehci-bus-glue.patch
-gregkh-usb-usb-ps3-controller-hid-quirk.patch
-gregkh-usb-usb-ohci-error-handling-cleanup.patch
-gregkh-usb-usb-ps3-ohci-bus-glue.patch
-gregkh-usb-uhci-fix-bandwidth-allocation.patch
-gregkh-usb-usbcore-remove-unused-bandwith-related-code.patch
-gregkh-usb-ehci-local-variable-for-port-status-register.patch
-gregkh-usb-ehci-don-t-hide-ports-owned-by-the-companion.patch
-gregkh-usb-ehci-force-high-speed-devices-to-run-at-full-speed.patch
-gregkh-usb-usb-at91_udc-wakeup-event-updates.patch
-gregkh-usb-usb-total-removal-of-multithreaded-probing-in-usb.patch
-gregkh-usb-fix-for-bugzilla-7544.patch
-gregkh-usb-usb-race-fixes-for-usb-serial-step-1.patch
-gregkh-usb-usb-race-fixes-for-usb-serial-step-2.patch
-gregkh-usb-usb-race-fixes-for-usb-serial-step-3.patch
-gregkh-usb-usb-gadgetfs-cleanups.patch
-gregkh-usb-usb-gadgetfs-simplifications.patch
-gregkh-usb-usb-gadgetfs-race-fix.patch
-gregkh-usb-usb-gadgetfs-behaves-better-on-userspace-init-bug.patch
-gregkh-usb-usb-gadgetfs-aio-tweaks.patch
-gregkh-usb-usb-list-atmel-husb2_udc-gadget-controller.patch
-gregkh-usb-usb-usb-ethernet-gadget-recognizes-husb2dev.patch
-gregkh-usb-usb-sierra-wireless-auto-set-d0.patch
-gregkh-usb-usb-input-added-kernel-module-to-support-all-gtco-calcomp-usb-interwrite-school-products.patch
-gregkh-usb-usb-autosuspend-for-usb-printer-driver.patch
-gregkh-usb-usb-switch-ehci-hcd-to-new-polling-scheme.patch
-gregkh-usb-ehci-fix-interrupt-driven-remote-wakeup.patch
-gregkh-usb-usb-storage-use-first-bulk-endpoints-not-last.patch
-gregkh-usb-usbcore-trivial-whitespace-fixes.patch
-gregkh-usb-usb-a-bit-more-coding-style-cleanup.patch
-gregkh-usb-usb-duplicate-ids-visor.patch
-gregkh-usb-usb-duplicate-ids-ftdi_sio.patch
-gregkh-usb-usb-duplicate-ids-keyspan.patch
-gregkh-usb-usb-duplicate-ids-usb_storage.patch
-gregkh-usb-berry_charge.patch
-fix-gregkh-usb-usbcore-remove-unused-bandwith-related-code.patch
-fix-gregkh-usb-usb-linux-usb_ch9h-becomes-linux-usb-ch9h.patch
-usb_rtl8150-must-select-mii.patch
-input-hid-add-cidc-usb-device-to-hid-blacklist.patch
-usb-mass-storage-us_fl_ignore_residue-needed-for-aiptek-mp3-player.patch
-fix-misspelled-usbnet_mii-kernel-config-option.patch
-usb-in-init_endpoint_class-use-ptr_err-to-obtain-an-errno-value-not-is_err.patch
-fix-apparent-typo-config_usb_cdcether.patch
-pl2303-willcom-ws002in-support.patch
-use-__u32-rather-than-u32-in-userspace-ioctls-in-usbdevice_fsh.patch
-fix-unaligned-exception-in-drivers-net-wireless-orinococ.patch
-drivers-char-pcmcia-ipwireless_cs_-possible-cleanups.patch
-x86_64-mm-convert-i386-pda-code-to-use-%fs.patch
-x86_64-mm-kernel-mode-faults-pollute-current-thead.patch
-x86_64-mm-revert-i386-fix-the-verify_quirk_intel_irqbalance.patch
-x86_64-mm-revert-x86_64-mm-add-genapic_force.patch
-x86_64-mm-revert-x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525.patch
-x86_64-mm-optimize-fix-apic-mode-setup.patch
-x86_64-mm-a-memcpy-that-tries-to-reduce-cache-pressure.patch
-x86_64-mm-use-memcpy_uncached_read-in-rdma-interrupt-handler-to-reduce-packet-loss.patch
-x86_64-mm-config_physical_align-limited-to-4m.patch
-x86_64-mm-blink-driver.patch
-x86_64-mm-msr-on-cpu.patch
-x86_64-mm-mtrr-compat.patch
-x86_64-mm-update-disable_io_apic-to-use-8-bit-destination-field.patch
-revert-x86_64-mm-msr-on-cpu.patch
-fix-x86_64-mm-i386-config-core2.patch
-fix-x86_64-mm-convert-i386-pda-code-to-use-%fs.patch
-cleanup-x86_64-mm-vmi-timer.patch
-add-i386-idle-notifier-take-3-fix.patch
-all-transmeta-cpus-have-constant-tscs.patch
-x86-fix-dev_to_node-for-x86-and-x86_64.patch
-math-emu-setcc-avoid-gcc-extension.patch
-i386-adjustments-to-page-table-dump-during-oops-v2.patch
-x86_64-re-add-a-newline-to-restore_context.patch
-geode-support-classic-mediagxm.patch
-arch-i386-kernel-ptracec-trivial-whitespace-cleanup.patch
-i386-kwatch-kernel-watchpoints-using-cpu-debug-registers.patch
-i386-kwatch-kernel-watchpoints-using-cpu-debug-registers-fix.patch
-i386-entrys-end-endproc-annotations.patch
-x86_64-clean-up-sparsemem-memory_present-call.patch
-kexec-update-io-apic-dest-field-to-8-bit-for.patch
-remove-unused-kernel-config-option-x86_xadd.patch
-hpet-avoid-warning-message-livelock.patch
-minor-patch-for-compilation-warning-in-x86_64-signal-code.patch
-x86_64-fix-fs-gs-registers-for-vt-execution.patch
-x86_64-sync-up-probe_roms-with-i386.patch
-i386-add-option-to-show-more-code-in-oops-reports.patch
-use-__u32-in-asm-x86_64-msrh.patch
-xfs-remove-useless-wmb-memory-barrier.patch
-slab-remove-broken-pageslab-check-from-kfree_debugcheck.patch
-slab-cache-alloc-cleanups.patch
-avoid-excessive-sorting-of-early_node_map.patch
-avoid-excessive-sorting-of-early_node_map-tidy.patch
-proc-zoneinfo-fix-vm-stats-display.patch
-typeof-__page_to_pfn-with-sparsemem=y.patch
-page_mkwrite-race-fix.patch
-use-zvc-for-inactive-and-active-counts.patch
-use-zvc-for-inactive-and-active-counts-up-fix.patch
-use-zvc-for-free_pages.patch
-use-zvc-for-free_pages-fix.patch
-use-zvc-for-free_pages-fix-2.patch
-use-zvc-for-free_pages-fix-3.patch
-use-zvc-for-free_pages-fix-4.patch
-reorder-zvcs-according-to-cacheline.patch
-drop-free_pages.patch
-drop-free_pages-fix.patch
-drop-free_pages-sparc64-fix.patch
-drop-nr_free_pages_pgdat.patch
-drop-__get_zone_counts.patch
-drop-get_zone_counts.patch
-get_dirty_limits-accurately-calculate-the-available-memory-that-can-be-dirtied.patch
-get_dirty_limits-accurately-calculate-the-available-memory-that-can-be-dirtied-fix.patch
-deal-with-cases-of-zone_dma-meaning-the-first-zone.patch
-introduce-config_zone_dma.patch
-optional-zone_dma-in-the-vm.patch
-optional-zone_dma-in-the-vm-no-gfp_dma-check-in-the-slab-if-no-config_zone_dma-is-set.patch
-optional-zone_dma-in-the-vm-no-gfp_dma-check-in-the-slab-if-no-config_zone_dma-is-set-reduce-config_zone_dma-ifdefs.patch
-optional-zone_dma-in-the-vm-no-gfp_dma-check-in-the-slab-if-no-config_zone_dma-is-set-reduce-config_zone_dma-ifdefs-fix.patch
-optional-zone_dma-in-the-vm-tidy.patch
-optional-zone_dma-for-ia64.patch
-remove-zone_dma-remains-from-parisc.patch
-remove-zone_dma-remains-from-sh-sh64.patch
-set-config_zone_dma-for-arches-with-generic_isa_dma.patch
-zoneid-fix-up-calculations-for-zoneid_pgshift.patch
-make-reading-proc-sys-kernel-cap-bould-not-require.patch
-alpha-increase-percpu_enough_room.patch
-pm-change-code-ordering-in-mainc.patch
-swsusp-change-code-ordering-in-diskc.patch
-swsusp-change-code-order-in-diskc-fix.patch
-swsusp-change-code-ordering-in-userc.patch
-swsusp-change-code-ordering-in-userc-sanity.patch
-swsusp-change-pm_ops-handling-by-userland-interface.patch
-m32r-build-fix-for-processors-without-isa_dsp_level2.patch
-m32r-fix-do_page_fault-and-update_mmu_cache.patch
-m32r-update-defconfig-files-for-v2619.patch
-m32r-fix-kernel-entry-address-of-vmlinux.patch
-m32r-cosmetic-updates-and-trivial-fixes.patch
-m68k-work-around-binutils-tokenizer-change.patch
-uml-console-locking-fixes.patch
-uml-return-hotplug-errors-to-host.patch
-uml-console-whitespace-and-comment-tidying.patch
-uml-lock-the-irqs_to_free-list.patch
-uml-add-locking-to-network-transport-registration.patch
-uml-network-driver-whitespace-and-style-fixes.patch
-uml-watchdog-driver-locking.patch
-uml-watchdog-driver-formatting.patch
-uml-audio-driver-locking.patch
-uml-audio-driver-formatting.patch
-uml-mconsole-locking.patch
-uml-make-two-variables-static.patch
-uml-port-driver-formatting.patch
-uml-kill-a-compilation-warning.patch
-uml-network-driver-locking-and-code-cleanup.patch
-uml-use-list_head-where-possible.patch
-uml-locking-commentary-in-the-random-driver.patch
-uml-mostly-const-a-structure.patch
-uml-chan_userh-formatting-fices.patch
-uml-console-locking-commentary-and-code-cleanup.patch
-uml-fix-previous-console-locking.patch
-uml-locking-comments-in-iomem-driver.patch
-uml-memc-and-physmemc-formatting-fixes.patch
-uml-initialize-a-list-head.patch
-uml-make-time-data-per-cpu.patch
-uml-delete-unused-file.patch
-uml-remove-unused-variable-and-function.patch
-uml-make-signal-handlers-static.patch
-uml-const-a-variable.patch
-uml-remove-code-controlled-by-non-existent-config-option.patch
-uml-add-per-device-queues-and-locks-to-ubd-driver.patch
-uml-locking-fixes-in-the-ubd-driver.patch
-uml-locking-comments-in-memory-and-tempfile-code.patch
-uml-locking-comments-in-startup-code.patch
-uml-style-fixes-in-startup-code.patch
-uml-libc-dependent-code-should-call-libc-directly.patch
-uml-fix-style-violations.patch
-uml-fix-apparent-config_64_bit-typo.patch
-drivers-add-lcd-support-3.patch
-drivers-add-lcd-support-3-Kconfig-fix.patch
-drivers-add-lcd-support-update-4.patch
-drivers-add-lcd-support-update-5.patch
-drivers-add-lcd-support-update6.patch
-drivers-add-lcd-support-update-7.patch
-drivers-add-lcd-support-update-8.patch
-drivers-add-lcd-support-update-9.patch
-drivers-add-lcd-support-workqueue-fixups.patch
-add-retain_initrd-boot-option.patch
-add-retain_initrd-boot-option-tweak.patch
-vt-refactor-console-sak-processing.patch
-sysctl_ms_jiffies-fix-oldlen-semantics.patch
-remove-include-linux-byteorder-pdp_endianh.patch
-9p-use-kthread_stop-instead-of-sending-a-sigkill.patch
-count_vm_events-warning-fix.patch
-char-tty-delete-wake_up_interruptible-after-tty_wakeup.patch
-disable-init-initramfsc-updated.patch
-disable-init-initramfsc-updated-fix.patch
-disable-init-initramfsc-architectures.patch
-usr-gen_init_cpioc-support-for-hard-links.patch
-ioc3-ioc4-pci-mem-space-resources.patch
-char-isicom-remove-tty_hangwakeup-bottomhalves.patch
-struct-vfsmount-keep-mnt_count-mnt_expiry_mark-away-from-mnt_flags.patch
-avoid-one-conditional-branch-in-touch_atime.patch
-mxser-remove-ambiguous-redefinition-of-init_work.patch
-make-drivers-char-mxser_newcmxser_hangup-static.patch
-char-isicom-fix-locking-in-isr.patch
-char-isicom-augment-card_reset.patch
-char-isicom-check-card-state-in-isr.patch
-char-isicom-support-higher-rates.patch
-char-isicom-correct-probing-removing.patch
-char-tty_wakeup-cleanup.patch
-kill_pid_info-kill-acquired_tasklist_lock.patch
-lockdep-also-check-for-freed-locks-in-kmem_cache_free.patch
-lockdep-more-unlock-on-error-fixes.patch
-lockdep-more-unlock-on-error-fixes-fix.patch
-lockdep-add-graph-depth-information-to-proc-lockdep.patch
-igrab-should-check-for-i_clear.patch
-consolidate-line-discipline-number-definitions-v2.patch
-consolidate-line-discipline-number-definitions-v2-sparc-fix.patch
-consolidate-line-discipline-number-definitions-v2-fix-2.patch
-scrub-non-__glibc__-checks-in-linux-socketh-and-linux-stath.patch
-rewrite-unnecessary-duplicated-code-to-use-field_sizeof.patch
-drivers-char-vc_screenc-proper-prototypes.patch
-transform-kmem_cache_allocmemset0-kmem_cache_zalloc.patch
-serial-serial_txx9-driver-update.patch
-relay-add-cpu-hotplug-support.patch
-ext2-skip-pages-past-number-of-blocks-in-ext2_find_entry.patch
-char-mxser_new-mark-init-functions.patch
-char-mxser_new-remove-useless-spinlock.patch
-char-serial167-cleanup.patch
-char-n_r3964-cleanup.patch
-consolidate-default-sched_clock.patch
-pktcdvd-cleanup.patch
-pnp-export-pnp_bus_type.patch
-char-mxser_new-remove-unused-stuff.patch
-char-mxser-obsolete-old-nonexperimental-new.patch
-char-mxser_new-remove-tty_wakeup-bottomhalf.patch
-char-mxser_new-clean-request_irq-call.patch
-doc-isicom-remove-reserved-ioctl-number.patch
-char-mxser_new-alter-locking-in-isr.patch
-char-mxser_new-header-file-cleanup.patch
-char-mxser_new-less-loops-in-isr.patch
-char-mxser_new-fix-twice-resource-releasing.patch
-char-mxser_new-do-not-put-pdev.patch
-char-mxser_new-upgrade-to-1915.patch
-char-mxser_new-upgrade-to-1915-fix.patch
-char-mxser_new-do-not-null-driver_data.patch
-char-mxser_new-lock-count-and-flags.patch
-char-mxser_new-fix-sparse-warning.patch
-aio-fix-buggy-put_ioctx-call-in-aio_complete-v2.patch
-add-taint_user-and-ability-to-set-taint-flags-from-userspace.patch
-add-taint_user-and-ability-to-set-taint-flags-from-userspace-fix.patch
-add-taint_user-and-ability-to-set-taint-flags-from-userspace-fix-2.patch
-char-moxa-remove-unused-allocated-page.patch
-char-moxa-do-not-initialize-global-static.patch
-char-moxa-timers-cleanup.patch
-char-moxa-remove-hangup-bottomhalf.patch
-char-moxa-remove-unused-functions.patch
-char-moxa-devids-cleanup.patch
-char-moxa-use-pci_device.patch
-char-moxa-eliminate-typedefs.patch
-char-moxa-macros-cleanup.patch
-char-moxa-use-del_timer_sync.patch
-char-moxa-remove-moxa_pci_devinfo.patch
-char-moxa-variables-cleanup.patch
-char-moxa-remove-useless-vairables.patch
-char-moxa-pci_probing-prepare.patch
-char-moxa-pci-probing.patch
-docbook-html-generate-chapter-section-level-tocs-for-functions.patch
-docbook-html-correction-of-recursive-a-tags-in-html-output.patch
-export-invalidate_mapping_pages-to-modules.patch
-remove-invalidate_inode_pages.patch
-use-cycle_t-instead-of-u64-in-struct-time_interpolator.patch
-fix-sparse-warnings-from-asmnet-checksumh.patch
-add-an-rcu-version-of-list-splicing.patch
-add-an-rcu-version-of-list-splicing-fix.patch
-ipmi-fix-some-rcu-problems.patch
-ipmi-fix-some-rcu-problems-update.patch
-factor-outstanding-i-o-error-handling.patch
-factor-outstanding-i-o-error-handling-tidy.patch
-sync_sb_inodes-propagate-errors.patch
-get-rid-of-double-zeroing-of-allocated-pages.patch
-relax-check-for-aix-in-msdos-partition-table.patch
-msdos-partitions-fix-logic-error-in-aix-detection.patch
-add-const-for-timespecval_compare-arguments.patch
-schedule-obsolete-oss-drivers-for-removal-3rd-round.patch
-sysctl-warning-fix.patch
-proc_misc-warning-fix.patch
-remove-unnecessary-memset0-calls-after-kzalloc-calls.patch
-kernel-doc-allow-a-little-whitespace.patch
-proc-remove-useless-and-buggy-nlink-settings.patch
-sysrq-showblockedtasks-is-sysrq-w.patch
-sysrq-alphabetize-command-keys-doc.patch
-kernel-doc-allow-more-whitespace.patch
-tty-improve-encode_baud_rate-logic.patch
-discuss-a-couple-common-errors-in-kernel-doc-usage.patch
-numerous-fixes-to-kernel-doc-info-in-source-files.patch
-common-compat_sys_sysinfo-v2.patch
-remove-a-couple-final-references-to-obsolete-verify_area.patch
-local_t-documentation.patch
-local_t-documentation-fix.patch
-rtc-framework-driver-for-cmos-rtcs.patch
-rtc-framework-driver-for-cmos-rtcs-fix.patch
-rtc-framework-driver-for-cmos-rtcs-fix-2.patch
-make-bh_unwritten-a-first-class-bufferhead-flag-v2.patch
-make-xfs-use-bh_unwritten-and-bh_delay-correctly.patch
-docbook-add-edd-firmware-interfaces.patch
-kernel-doc-fix-some-odd-spacing-issues.patch
-serial-support-for-new-board.patch
-cleanup-linux-byteorder-swabbh.patch
-ext3-refuse-ro-to-rw-remount-of-fs-with-orphan.patch
-ext4-refuse-ro-to-rw-remount-of-fs-with-orphan.patch
-audit-fix-audit_filter_user_rules-initialization-bug.patch
-raw-dont-allow-the-creation-of-a-raw-device-with-minor-number-0.patch
-sn2-use-static-proc_fops.patch
-sed-s-gawk-awk-scripts-gen_init_ramfssh.patch
-seq_file-conversion-coda.patch
-fix-umask-when-noacl-kernel-meets-extn-tuned-for-acls.patch
-seq_file-conversion-toshibac.patch
-return-enoent-from-ext3_link-when-racing-with-unlink.patch
-return-enoent-from-ext3_link-when-racing-with-unlink-fix.patch
-remove-ext_inc_count-and-_dec_count.patch
-remove-the-last-reference-to-rwlock_is_locked-macro.patch
-consolidate-bust_spinlocks.patch
-extract-and-use-wake_up_klogd.patch
-extend-the-set-of-__attribute__-shortcut-macros.patch
-documentation-rbtreetxt-updated.patch
-buffer-memorder-fix.patch
-remove-final-reference-to-superfluous-smp_commence.patch
-cleanup-include-linux-xattrh.patch
-cleanup-include-linux-reiserfs_xattrh.patch
-replace-regular-code-with-appropriate-calls-to-container_of.patch
-remove-dead-kernel-config-option-aedsp16_mpu401.patch
-remove-references-to-obsolete-kernel-config-option-debug_rwsems.patch
-remove-unused-kernel-config-option-zisofs_fs.patch
-remove-unused-kernel-config-option-lcd_device.patch
-remove-unused-kernel-config-option-paride_parport.patch
-order-of-lockdep-off-on-in-vprintk-should-be-changed.patch
-minimize-lockdep_on-off-side-effect.patch
-kprobes-replace-magic-numbers-with-enum.patch
-some-rtc-documentation-updates.patch
-drivers-block-dac960-converted-boolean-to-bool.patch
-mxser-remove-useless-fields.patch
-fix-apparent-typo-config_lockdep_debug.patch
-ext-jbd-layer-function-called-instead-of-fs-specific-one.patch
-highmem-catch-illegal-nesting.patch
-change-constant-zero-to-notify_done-in-ratelimit_handler.patch
-spi-kconfig-fix.patch
-spi-controller-driver-for-omap-microwire.patch
-spi-controller-driver-for-omap-microwire-tidy.patch
-spi-controller-driver-for-omap-microwire-update.patch
-spi-controller-driver-for-omap-microwire-update-fix.patch
-spi-freescale-imx-spi-controller-driver-bis.patch
-spi-add-spi_set_drvdata-and-spi_get_drvdata.patch
-spi-documentation-does-not-need-to-set-drivers-bus_type-field.patch
-spi-remove-return-in-spi_unregister_driver.patch
-spi_bitbang-use-overridable-setup_transfer-method.patch
-spi-cleanup-method-param-becomes-non-const.patch
-add-shared-version-of-apm-emulation.patch
-arm-convert-to-use-shared-apm-emulation.patch
-mips-convert-to-use-shared-apm-emulation.patch
-sh-convert-to-use-shared-apm-emulation.patch
-minix-v3-support.patch
-have-pipefs-ensure-i_ino-uniqueness-by-calling-iunique-and-hashing-the-inode.patch
-have-pipefs-ensure-i_ino-uniqueness-by-calling-iunique-and-hashing-the-inode-update.patch
-tty-make-__proc_set_tty-static.patch
-tty-clarify-disassociate_ctty.patch
-tty-fix-the-locking-for-signal-session-in-disassociate_ctty.patch
-signal-use-kill_pgrp-not-kill_pg-in-the-sunos-compatibility-code.patch
-signal-rewrite-kill_something_info-so-it-uses-newer-helpers.patch
-pid-make-session_of_pgrp-use-struct-pid-instead-of-pid_t.patch
-pid-use-struct-pid-for-talking-about-process-groups-in-exitc.patch
-pid-replace-is_orphaned_pgrp-with-is_current_pgrp_orphaned.patch
-tty-update-the-tty-layer-to-work-with-struct-pid.patch
-pid-replace-do-while_each_task_pid-with-do-while_each_pid_task.patch
-pid-remove-now-unused-do_each_task_pid-and-while_each_task_pid.patch
-pid-remove-the-now-unused-kill_pg-kill_pg_info-and-__kill_pg_info.patch
-edac-e752x-bit-mask-fix.patch
-edac-e752x-byte-access-fix.patch
-edac-fix-in-e752x-mc-driver.patch
-edac-add-memory-scrubbing-controls-api-to-core.patch
-edac-add-fully-buffered-dimm-apis-to-core.patch
-gpio-core.patch
-omap-gpio-wrappers.patch
-omap-gpio-wrappers-tidy.patch
-at91-gpio-wrappers.patch
-at91-gpio-wrappers-tidy.patch
-pxa-gpio-wrappers.patch
-sa1100-gpio-wrappers.patch
-s3c2410-gpio-wrappers.patch
-drivers-isdn-pcbit-proper-prototypes.patch
-drivers-isdn-hisax-proper-prototypes.patch
-drivers-isdn-sc-proper-prototypes.patch
-isdn-capi-use-array_size-when-appropriate.patch
-isdn-fix-typo-config_hisax_quadro-config_hisax_sct_quadro.patch
-isdn-rename-some-debugging-macros-to-not-resemble-config.patch
-isdn-rename-debug-option-config_serial_nopause_io.patch
-isdn-remove-defunct-test-emulator.patch
-isdn-rename-special-macro-config_hisax_hfc4s8s_pcimem.patch
-drivers-isdn-hardware-eicon-convert-to-generic-boolean-values.patch
-drivers-isdn-hisax-convert-to-generic-boolean-values.patch
-knfsd-sunrpc-update-internal-api-separate-pmap-register-and-temp-sockets.patch
-knfsd-sunrpc-allow-creating-an-rpc-service-without-registering-with-portmapper.patch
-knfsd-sunrpc-cache-remote-peers-address-in-svc_sock.patch
-knfsd-sunrpc-use-sockaddr_storage-to-store-address-in-svc_deferred_req.patch
-knfsd-sunrpc-add-a-function-to-format-the-address-in-an-svc_rqst-for-printing.patch
-include-linux-nfsd-consth-remove-nfs_super_magic.patch
-ecryptfs-public-key-transport-mechanism.patch
-ecryptfs-public-key-transport-mechanism-fix.patch
-ecryptfs-public-key-packet-management.patch
-ecryptfs-public-key-packet-management-slab-fix.patch
-ecryptfs-xattr-flags-and-mount-options.patch
-ecryptfs-generalize-metadata-read-write.patch
-ecryptfs-generalize-metadata-read-write-fix.patch
-ecryptfs-generalize-metadata-read-write-fs-ecryptfs-make-code-static.patch
-ecryptfs-encrypted-passthrough.patch
-ecryptfs-convert-f_op-write-to-vfs_write.patch
-ecryptfs-convert-kmap-to-kmap_atomic.patch
-ecryptfs-open-code-flag-checking-and-manipulation.patch
-ecryptfs-add-flush_dcache_page-calls.patch
-ecryptfs-convert-lookup_one_len-to-lookup_one_len_nd.patch
-sched-avoid-div-in-rebalance_tick.patch
-rename-attach_pid-to-find_attach_pid.patch
-attach_pid-with-struct-pid-parameter.patch
-remove-find_attach_pid.patch
-statically-initialize-struct-pid-for-swapper.patch
-explicitly-set-pgid-sid-of-init.patch
-uts-namespace-remove-config_uts_ns.patch
-ipc-namespace-remove-config_ipc_ns.patch
-ipc-namespace-remove-config_ipc_ns-linkage-fix.patch
-ipc-namespace-remove-config_ipc_ns-linkage-fix-fix.patch
-dynamic-kernel-command-line-common.patch
-dynamic-kernel-command-line-alpha.patch
-dynamic-kernel-command-line-arm.patch
-dynamic-kernel-command-line-arm26.patch
-dynamic-kernel-command-line-avr32.patch
-dynamic-kernel-command-line-cris.patch
-dynamic-kernel-command-line-frv.patch
-dynamic-kernel-command-line-h8300.patch
-dynamic-kernel-command-line-i386.patch
-dynamic-kernel-command-line-ia64.patch
-dynamic-kernel-command-line-ia64-fix.patch
-dynamic-kernel-command-line-m32r.patch
-dynamic-kernel-command-line-m68k.patch
-dynamic-kernel-command-line-m68knommu.patch
-dynamic-kernel-command-line-mips.patch
-dynamic-kernel-command-line-parisc.patch
-dynamic-kernel-command-line-powerpc.patch
-dynamic-kernel-command-line-ppc.patch
-dynamic-kernel-command-line-s390.patch
-dynamic-kernel-command-line-sh.patch
-dynamic-kernel-command-line-sh64.patch
-dynamic-kernel-command-line-sparc.patch
-dynamic-kernel-command-line-sparc64.patch
-dynamic-kernel-command-line-um.patch
-dynamic-kernel-command-line-v850.patch
-dynamic-kernel-command-line-x86_64.patch
-dynamic-kernel-command-line-xtensa.patch
-dynamic-kernel-command-line-fixups.patch
-i386-2048-byte-command-line.patch
-x86_64-2048-byte-command-line.patch
-ia64-2048-byte-command-line.patch
-ufs2-write-mount-as-rw.patch
-ufs2-write-inodes-write.patch
-ufs2-write-block-allocation-update.patch
-proper-backlight-selection-for-fbdev-drivers.patch
-fbdev-driver-for-s3-trio-virge.patch
-fbdev-driver-for-s3-trio-virge-cleanups.patch
-remove-broken-video-drivers-v4.patch
-tgafb-switch-to-framebuffer_alloc.patch
-tgafb-fix-copying-overlapping-areas.patch
-tgafb-support-the-directcolor-visual.patch
-tgafb-fix-the-mode-register-setting.patch
-tgafb-module-support-fixes.patch
-tgafb-sync-on-green-support-fixes.patch
-tgafb-fix-the-pci-id-table.patch
-remove-bogus-con_is_present-prototypes.patch
-cyber2010-framebuffer-on-arm-netwinder-fix.patch
-cyber2010-framebuffer-on-arm-netwinder-fix-tidy.patch
-proper-prototype-for-tosh_smm.patch
-recognize-video=gx1fb-option.patch
-correct-apparent-typo-config_aty_ct-in-aty-video.patch
-remove-555-unneeded-includes-of-schedh.patch
-oss-replace-kmallocmemset-combos-with-kzalloc.patch
-mark-struct-file_operations-const-1.patch
-mark-struct-file_operations-const-2.patch
-mark-struct-file_operations-const-2-fix.patch
-mark-struct-file_operations-const-3.patch
-mark-struct-file_operations-const-4.patch
-mark-struct-file_operations-const-4-fix.patch
-mark-struct-file_operations-const-5.patch
-mark-struct-file_operations-const-6.patch
-mark-struct-file_operations-const-7.patch
-mark-struct-file_operations-const-8.patch
-mark-struct-file_operations-const-9.patch
-mark-struct-inode_operations-const-1.patch
-mark-struct-inode_operations-const-2.patch
-mark-struct-inode_operations-const-3.patch
-mark-struct-super_operations-const.patch
-scheduled-removal-of-sa_xxx-interrupt-flags-fixups.patch
-scheduled-removal-of-sa_xxx-interrupt-flags-fixups-2.patch
-scheduled-removal-of-sa_xxx-interrupt-flags.patch
-scheduled-removal-of-sa_xxx-interrupt-flags-ata-fix.patch
-sysctl-x25-remove-unnecessary-insert_at_head-from-register_sysctl_table.patch
-sysctl-move-ctl_sunrpc-to-sysctlh-where-it-belongs.patch
-sysctl-sunrpc-remove-unnecessary-insert_at_head-flag.patch
-sysctl-sunrpc-dont-unnecessarily-set-ctl_table-de.patch
-sysctl-rose-remove-unnecessary-insert_at_head-flag.patch
-sysctl-netrom-remove-unnecessary-insert_at_head-flag.patch
-sysctl-llc-remove-unnecessary-insert_at_head-flag.patch
-sysctl-ipx-remove-unnecessary-insert_at_head-flag.patch
-sysctl-decnet-remove-unnecessary-insert_at_head-flag.patch
-sysctl-dccp-remove-unnecessary-insert_at_head-flag.patch
-sysctl-ax25-remove-unnecessary-insert_at_head-flag.patch
-sysctl-atalk-remove-unnecessary-insert_at_head-flag.patch
-sysctl-xfs-remove-unnecessary-insert_at_head-flag.patch
-sysctl-c99-convert-xfs-ctl_tables.patch
-sysctl-c99-convert-xfs-ctl_tables-fixes.patch
-sysctl-scsi-remove-unnecessary-insert_at_head-flag.patch
-sysctl-md-remove-unnecessary-insert_at_head-flag.patch
-sysctl-mac_hid-remove-unnecessary-insert_at_head-flag.patch
-sysctl-ipmi-remove-unnecessary-insert_at_head-flag.patch
-sysctl-cdrom-remove-unnecessary-insert_at_head-flag.patch
-sysctl-cdrom-dont-set-de-owner.patch
-sysctl-move-ctl_pm-into-sysctlh-where-it-belongs.patch
-sysctl-frv-pm-remove-unnecessary-insert_at_head-flag.patch
-sysctl-move-ctl_frv-into-sysctlh-where-it-belongs.patch
-sysctl-frv-remove-unnecessary-insert_at_head-flag.patch
-sysctl-c99-convert-arch-frv-kernel-pmc.patch
-sysctl-c99-convert-arch-frv-kernel-sysctlc.patch
-sysctl-sn-remove-sysctl-abi-breakage.patch
-sysctl-c99-convert-arch-ia64-sn-kernel-xpc_mainc.patch
-sysctl-c99-convert-arch-ia64-kernel-perfmon-and-remove-abi-breakage.patch
-sysctl-mips-au1000-remove-sys_sysctl-support.patch
-sysctl-c99-convert-the-ctl_tables-in-arch-mips-au1000-common-powerc.patch
-sysctl-c99-convert-arch-mips-lasat-sysctlc-and-remove-abi-breakage.patch
-sysctl-s390-move-sysctl-definitions-to-sysctlh.patch
-sysctl-s390-move-sysctl-definitions-to-sysctlh-fix.patch
-sysctl-s390-remove-unnecessary-use-of-insert_at_head.patch
-sysctl-c99-convert-ctl_tables-in-arch-powerpc-kernel-idlec.patch
-sysctl-c99-convert-ctl_tables-entries-in-arch-ppc-kernel-ppc_htabc.patch
-sysctl-c99-convert-arch-sh64-kernel-trapsc-and-remove-abi-breakage.patch
-sysctl-x86_64-remove-unnecessary-use-of-insert_at_head.patch
-sysctl-c99-convert-ctl_tables-in-arch-x86_64-ia32-ia32_binfmtc.patch
-sysctl-c99-convert-ctl_tables-in-arch-x86_64-kernel-vsyscallc.patch
-sysctl-c99-convert-ctl_tables-in-arch-x86_64-mm-initc.patch
-sysctl-remove-sys_sysctl-support-from-the-hpet-timer-driver.patch
-sysctl-remove-sys_sysctl-support-from-drivers-char-rtcc.patch
-sysctl-register-the-sysctl-number-used-by-the-arlan-driver.patch
-sysctl-c99-convert-ctl_tables-in-drivers-parport-procfsc.patch
-sysctl-c99-convert-ctl_tables-in-drivers-parport-procfsc-fix.patch
-sysctl-c99-convert-coda-ctl_tables-and-remove-binary-sysctls.patch
-sysctl-c99-convert-ctl_tables-in-ntfs-and-remove-sys_sysctl-support.patch
-sysctl-c99-convert-ctl_tables-in-ntfs-and-remove-sys_sysctl-support-fix.patch
-sysctl-register-the-ocfs2-sysctl-numbers.patch
-sysctl-move-init_irq_proc-into-init-main-where-it-belongs.patch
-sysctl-move-utsname-sysctls-to-their-own-file.patch
-sysctl-move-utsname-sysctls-to-their-own-file-fix.patch
-sysctl-move-sysv-ipc-sysctls-to-their-own-file.patch
-sysctl-move-sysv-ipc-sysctls-to-their-own-file-fix.patch
-sysctl-create-sys-fs-binfmt_misc-as-an-ordinary-sysctl-entry.patch
-sysctl-create-sys-fs-binfmt_misc-as-an-ordinary-sysctl-entry-warning-fix.patch
-sysctl-remove-support-for-ctl_any.patch
-sysctl-remove-support-for-directory-strategy-routines.patch
-sysctl-remove-insert_at_head-from-register_sysctl.patch
-sysctl-remove-insert_at_head-from-register_sysctl-fix.patch
-sysctl-factor-out-sysctl_head_next-from-do_sysctl.patch
-sysctl-factor-out-sysctl_head_next-from-do_sysctl-warning-fix.patch
-sysctl-allow-sysctl_perm-to-be-called-from-outside-of-sysctlc.patch
-sysctl-reimplement-the-sysctl-proc-support.patch
-sysctl-reimplement-the-sysctl-proc-support-fix.patch
-sysctl-reimplement-the-sysctl-proc-support-warning-fix.patch
-sysctl-reimplement-the-sysctl-proc-support-fix-2.patch
-sysctl-remove-the-proc_dir_entry-member-for-the-sysctl-tables.patch
-sysctl-remove-the-proc_dir_entry-member-for-the-sysctl-tables-fix.patch
-sysctl-remove-the-proc_dir_entry-member-for-the-sysctl-tables-ntfs-fix.patch
-debug-shared-irqs.patch
-debug-shared-irqs-kconfig-fix.patch

Merged into mainline or a subsystem tree.

+gpio-core-documentation.patch
+build-errors-uevent-with-config_sysfs=n.patch
+mincore-config_swap=n-fix.patch
+mincore-fill-in-results-properly.patch
+mincore-vma-crossing-fix.patch

A few fixes

+make-aout-executables-work-again.patch

This is also fixed in the x86_64 tree, differently.

+ifdef-acpi_future_usage-acpi_os_readable.patch

ACPI fix

+at91-correct-value-for-at91_rstc_key.patch

ARM fix

+powerpc-rtas-msi-support-fix.patch
+fix-cut-and-paste-breakage-in-arch-powerpc-platforms-pseries-pseriesh.patch
+powerpc-export-of_find_property.patch

powerpc fixes

+gregkh-driver-driverh-copyright.patch
+gregkh-driver-driver-core-let-request_module-send-a-sys-modules-kmod-uevent.patch
+gregkh-driver-serial-add-pcmcia-ids-for-quatech-dsp-100-dual-rs232-adapter.patch
+gregkh-driver-kobject-kobj-k_name-verification-fix.patch
+gregkh-driver-driver-remove-redundant-kobject_unregister-checks.patch
+gregkh-driver-debugfs-implement-symbolic-links.patch
+gregkh-driver-debugfs-remove-misleading-comments.patch
+gregkh-driver-driver-core-device_add_attrs-cleanup.patch
+gregkh-driver-pcmcia-some-class_device-fallout.patch
+gregkh-driver-driver-core-per-subsystem-multithreaded-probing.patch
+gregkh-driver-powerpc-make-it-compile-for-multithread-change.patch
+gregkh-driver-driver-core-don-t-fail-attaching-the-device-if-it-cannot-be-bound.patch

driver tree updates

+power-management-no-valid-states-w-o-pm_ops-docs.patch
+power-management-fix-struct-layout-and-docs.patch

power management tweaks

+saa7134-cleanup.patch
+video4linux-fix-audio-input-for-avertv-go-007.patch

DVB fixes

+jdelvare-i2c-i2c-04-kill-i2c_adapterclass_dev.patch
+jdelvare-i2c-i2c-05-i2c_adapter-devices-have-no-driver.patch
+jdelvare-i2c-i2c-06-remove-duplicate-i2c-drivers-list.patch
+jdelvare-i2c-i2c-algo-bit-always-send-stop-before-leaving.patch
+jdelvare-i2c-i2c-add-smbus-block-read-emulation.patch
+jdelvare-i2c-i2c-algo-bit-emulate-smbus-block-read.patch

I2C tree updates

+i2c-tsl2550-support.patch

i2c device support

+jdelvare-hwmon-hwmon-vt1211-add-probing-of-alternate-config-index-port.patch

hwmon tree update

+ia64-point-saved_max_pfn-to-the-max_pfn-of-the-entire-system.patch

ia64 fix

+setstream-param-for-psmouse.patch

input fix

+sis-warning-fixes.patch
+libata-add-a-host-flag-to-indicate-lack-of-iordy.patch
+add-delay-around-sl82c105_reset_engine-calls.patch
+sata_nv-add-back-some-verbosity-into-adma-error_handler.patch
+sata_nv-add-back-some-verbosity-into-adma-error_handler-tidy.patch
+sata_nv-handle-serror-status-indication.patch
+sata-use-null-for-ptrs.patch
+ata-convert-gsi-to-irq-on-ia64.patch
+libata-fix-hopefully-all-the-remaining-problems-with.patch

ata things

-ide-toshiba-tc86c001-ide-driver-take-2.patch
-ide-toshiba-tc86c001-ide-driver-take-2-fix.patch
-ide-toshiba-tc86c001-ide-driver-take-2-fix-2.patch
-ide-hpt3xx-rework-rate-filtering.patch
-ide-hpt3xx-rework-rate-filtering-tidy.patch
-ide-hpt3xx-print-the-real-chip-name-at-startup.patch
-ide-hpt3xx-switch-to-using-pci_get_slot.patch
-ide-hpt3xx-cache-channels-mcr-address.patch
-ide-hpt3x7-merge-speedproc-handlers.patch
-ide-hpt370-clean-up-dma-timeout-handling.patch
-ide-hpt3xx-init-code-rewrite.patch
-ide-piix-fix-82371mx-enablebits.patch
-ide-piix-tuneproc-fixes-cleanups.patch
-ide-slc90e66-carry-over-fixes-from-piix-driver.patch
-ide-hpt36x-pci-clock-detection-fix.patch
-ide-jmicron-warning-fix.patch
-ide-pdc202xx_new-remove-useless-code.patch
-ide-pdc202xx_-remove-check_in_drive_lists-abomination.patch
-ide-atiixpc-remove-unused-code.patch
-ide-atiixpc-sb600-ide-only-has-one-channel.patch
-ide-atiixpc-add-cable-detection-support-for-ati-ide.patch
-ide-ide-generic-jmicron-has-its-own-drivers-now.patch
-ide-ide-maintainers-entry.patch
-ide-it8213-ide-driver.patch
-ide-it8213-ide-driver-update.patch
-ide-ide-pci-init-tags.patch
-ide-pdc202xx_old-dead-code.patch
-ide-au1xxx-dead-code.patch
-ide-ide-pio-blacklisted.patch
-ide-ide-no-dsc-flag.patch
-ide-trm290-dma-ifdefs.patch
-ide-ide-pci-device-tables.patch
-ide-ide-dev-openers.patch
-ide-hpt366-init-dma.patch
-ide-cs5530-cleanup.patch
-ide-svwks-cleanup.patch
-ide-sis5513-config-xfer-rate.patch
-ide-ide-set-xfer-rate.patch
-ide-ide-use-fast-pio-v2.patch
-ide-ide-io-cleanup.patch
-ide-delkin_cb-ide-driver.patch
-ide-ide-acpi-support.patch
-ide-ide-pnp-exit-fix.patch
-ide-via-ide-update.patch
-ide-it8213-ide-driver-update-fixes.patch
-ide-ide-mmio-flag.patch
-ide-hpt34x-tune-chipset-fix.patch
-ide-ide-fix-pio-fallback.patch
-ide-piix-cleanup.patch
-ide-ide-dma-check-disable-dma-fix.patch
-ide-sgiioc4-ide-dma-check-fix.patch
-ide-ide-set-dma-helper.patch
-ide-ide-dma-off-void.patch
-ide-ide-dma-host-on-void.patch
-ide-ide-fix-dma-masks.patch
-ide-ide-max-dma-mode.patch
-ide-ide-tune-dma-helper.patch

dropped.

+adjust-legacy-ide-resource-setting-v2.patch
+ide-pci-delkin_cbc-pci_module_init-to-pci_register_driver.patch

IDE udpates

+git-md-accel-fixes.patch
+git-md-accel-warning-fixes.patch
+git-md-accel-fix.patch

Fix git-md-accel.patch

+mtd-maps-ck804xromc-pci_module_init-to-pci_register_driver.patch

UBI tree fix

+user-of-the-jiffies-rounding-code-e1000.patch
+revert-drivers-net-tulip-dmfe-support-basic-carrier-detection.patch
+phy-layer-add-kernel-doc-docbook.patch
+fix-atl1-braino.patch
+net-wan-pc300tooc-pci_module_init-to-pci_register_driver.patch
+ehea-dynamic-add--remove-port.patch
+atl1-drop-net_pci-from-kconfig.patch
+atl1-read-mac-address-from-register.patch
+atl1-remove-unused-define.patch
+atl1-add-l1-device-id-to-pci_ids-then-use-it.patch
+atl1-bump-version-number.patch
+Fabric7-VIOC-driver.patch
+Fabric7-VIOC-driver-fixes.patch
+natsemi-add-support-for-using-mii-port-with-no-phy-update.patch
+natsemi-support-aculab-e1-t1-pmxc-cpci-carrier-cards.patch

netdev stuff

+atm-use-array_size-macro-when-appropriate.patch
+bugfixes-and-new-hardware-support-for-arcnet-driver.patch

net things

+git-backlight-sony-fix.patch

Fix git-backlight.patch for git-acpi driver

+git-ioat-vs-git-md-accel.patch

Fix git-ioat.patch

-nfs-represent-64-bit-fileids-as-64-bit-inode-numbers-on-32-bit-systems.patch

Dropped (I think)

-nfs-fix-congestion-control-v4-tweaks.patch

Folded into nfs-fix-congestion-control-v4.patch

+gregkh-pci-pci-sysfs-kobject-kernel-doc-fixes.patch
+gregkh-pci-pci-pcitxt-fix-__devexit-usage.patch
+gregkh-pci-pci-make-cardbus_mem_size-and-cardbus_io_size-boot-options.patch
+gregkh-pci-pci-pci-devices-get-assigned-redundant-irqs.patch
+gregkh-pci-pci-add-systems-for-automatic-breadth-first-device-sorting.patch
+gregkh-pci-pci-make-pci-device-numa-node-attribute-visible-in-sysfs.patch

PCI tree updates

+pci-add-systems-for-automatic-breadth-first-device-sorting-update.patch
+x86-fix-dev_to_node-for-x86-and-x86_64.patch

PCI fixes

+scsi-fix-obvious-typo-spin_lock_irqrestore-in-gdthc.patch
+drivers-scsi-aacraid-cleanups.patch
+drivers-scsi-aic7xxx-convert-to-generic-boolean-values.patch
+drivers-scsi-aic7xxx_old-convert-to-generic-boolean-values.patch
+cleanup-variable-usage-in-mesh-interrupt-handler.patch
+fix--confusion-in-fusion-driver.patch
+scsi-megaraid_sas-donot-process-cmds-if-hw_crit_error-is-set.patch
+scsi-megaraid_sas-added-bios_param-in-scsi_host_template.patch
+scsi-megaraid_sas-throttle-io-if-fw-is-busy.patch
+scsi-megaraid_sas-replace-pci_alloc_consitent-with-dma_alloc_coherent-in-ioctl-path.patch
+scsi-megaraid_sas-return-sync-cache-call-with-success.patch
+scsi-megaraid_sas-update-version-and-author-info.patch
+lpfc-add-pci-error-recovery-support.patch

scsi fixes

+git-block-dupe-definitions.patch
+git-block-xfs-barriers-broke.patch
+block-blk_max_pfn-is-somtimes-wrong.patch

git-block fixes

+git-unionfs-fixup.patch

Fix rejects in git-unionfs.

+ecryptfs-convert-lookup_one_len-to-lookup_one_len_nd.patch

Fix ecryptfs for unionfs changes

+gregkh-usb-ehci-turn-off-remote-wakeup-during-shutdown.patch
+gregkh-usb-berry_charge.patch
+gregkh-usb-usb-in-init_endpoint_class-use-ptr_err-to-obtain-an-errno-value-not-is_err.patch
+gregkh-usb-usb-fix-needless-failure-under-certain-conditions.patch
+gregkh-usb-usb-pl2303-willcom-ws002in-support.patch
+gregkh-usb-usb-teac-hd-35pu-patch-to-unusual_devsh.patch
+gregkh-usb-usb-unusual_devs-update-for-sony-p990i-phone.patch
+gregkh-usb-usb-add-flow-control-to-usb-serial-generic-driver.patch
+gregkh-usb-usb-fix-apparent-typo-config_usb_cdcether.patch
+gregkh-usb-usbcore-small-changes-to-hub-driver-s-suspend-method.patch
+gregkh-usb-ehci-add-debugging-message-to-ehci_bus_suspend.patch
+gregkh-usb-usb-descriptor-structures-have-to-be-packed.patch
+gregkh-usb-usb-fix-error-cleanup-path-in-airprime.patch
+gregkh-usb-usb-fix-concurrent-buffer-access-in-the-hub-driver.patch
+gregkh-usb-usb-asix-fix-endian-issues-in-asix_tx_fixup.patch
+gregkh-usb-usb-fix-autosuspend-race-in-skeleton-driver.patch
+gregkh-usb-usb-storage-indistinguishable-devices-with-broken-and-unbroken-firmware.patch
+gregkh-usb-usb-usb_rtl8150-must-select-mii.patch
+gregkh-usb-usb-input-hid-add-cidc-usb-device-to-hid-blacklist.patch
+gregkh-usb-usb-fix-misspelled-usbnet_mii-kernel-config-option.patch
+gregkh-usb-usb-storage-us_fl_ignore_residue-needed-for-aiptek-mp3-player.patch
+gregkh-usb-usb-use-__u32-rather-than-u32-in-userspace-ioctls-in-usbdevice_fsh.patch
+gregkh-usb-usb-fix-g_serial-small-error.patch
+gregkh-usb-usb-make-usb_iso_packet_descriptorstatus-signed.patch
+gregkh-usb-usb-unconfigure-devices-which-have-config-0.patch
+gregkh-usb-usb-cdc-acm-fix-incorrect-throtteling-make-set_control-optional.patch
+gregkh-usb-usb-quirky-device-for-cdc-acm.patch
+gregkh-usb-usb-kernel-doc-fixes.patch
+gregkh-usb-usb-hid-corec-removes-gtco-calcomp-interwrite-ipanel-pids-from-blacklist.patch
+gregkh-usb-usb-ps3-don-t-call-ps3_system_bus_driver_register-on-other-platforms.patch
+gregkh-usb-usb-change-__init-to-__devinit-for-isp116x_probe.patch
+gregkh-usb-usb-iowarrior.patch
+gregkh-usb-usb_match_device.patch
+gregkh-usb-usb-blacklist.patch

USB tree updates

+ueagle-atmc-needs-schedh.patch

USB fix

+before-x86_64-mm-mmconfig-share.patch

Remove an acpi patch to make the x86_64 tree apply

+x86_64-mm-convert-i386-pda-code-to-use-%fs.patch
+x86_64-mm-mmconfig-share.patch
+x86_64-mm-only-call-unreachable_devices-when-type-1-is-available.patch
+x86_64-mm-detect-and-support-the-e7520-and-the-945g-gz-p-pl.patch
+x86_64-mm-reserve-resources-but-only-when-were-sure-about-them.patch
+x86_64-mm-mmconfig-ioremap.patch
+x86_64-mm-mmconfig-reject-broken-table.patch
+x86_64-mm-mmconfig-cleanup-defines.patch
+x86_64-mm-mmconfig-more-cleanup.patch
+x86_64-mm-mmconfig-unreachable-devices.patch
+x86_64-mm-mmconfig-move-e820-check.patch
+x86_64-mm-profile-pc-badness.patch
+x86_64-mm-kprobe-rpl-fix.patch
+x86_64-mm-vmi-timer-race.patch
+x86_64-mm-paravirt-debug-defaults-off.patch
+x86_64-mm-unexport-supported-pte.patch
+x86_64-mm-fs-gs-clear.patch
+x86_64-mm-iommu-boundary.patch
+x86_64-mm-remove-rom-reservation.patch
+x86_64-mm-define-dma-noncoherent-api-functions.patch
+x86_64-mm-robustify-bad_dma_address-handling.patch
+x86_64-mm-all-transmeta-cpus-have-constant-tscs.patch
+x86_64-mm-avoid-gcc-extension.patch
+x86_64-mm-support-classic-mediagxm.patch
+x86_64-mm-entrys-end-endproc-annotations.patch
+x86_64-mm-clean-up-sparsemem-memory_present-call.patch
+x86_64-mm-remove-unused-kernel-config-option-x86_xadd.patch
+x86_64-mm-update-io-apic-dest-field-to-8-bit-for-xapic.patch
+x86_64-mm-avoid-warning-message-livelock.patch
+x86_64-mm-minor-patch-for-compilation-warning-in-x86_64-signal-code.patch
+x86_64-mm-add-option-to-show-more-code-in-oops-reports.patch
+x86_64-mm-geode-configuration-fixes.patch
+x86_64-mm-survive-having-no-irq-mapping-for-a-vector.patch
+x86_64-mm-fix-gcc-check.patch
+x86_64-mm-paravirt-remove-fastcall.patch
+x86_64-mm-fam10-cpuid.patch
+x86_64-mm-fam10-nmi-watchdog.patch
+x86_64-mm-fix-microcode-warning.patch
+x86_64-mm-i386-fix-transmeta-warning.patch
+x86_64-mm-fails-to-detect-mediagx.patch
+x86_64-mm-aout-no-vdso.patch
+x86_64-mm-compat-epoll-pwait.patch
+x86_64-mm-paravirt-unhandled-fallthrough.patch
+x86_64-mm-move-mce_disabled-to-asm-mceh.patch
+x86_64-mm-rename-cpu_gdt_descr-and-remove-extern-declaration-from-smpbootc.patch
+x86_64-mm-remove-extern-declaration-from-mm-discontigc-put-in-header.patch
+x86_64-mm-pcspeaker-cleanup.patch
+x86_64-mm-mtrr-compat.patch
+x86_64-mm-broken-config_compat_vdso-on-i386.patch
+x86_64-mm-remove-mk-pte-phys.patch
+fix-mtrr-compat-ioctl.patch
+i386-pit_latch_buggy-has-no-effect.patch
+add-an-option-for-the-via-c7-which-sets-appropriate-l1.patch
+i386-adjustments-to-page-table-dump-during-oops-v3.patch
+x86-mtrr-range-check-correction.patch
+x86-consolidate-smp_send_stop.patch
+cleanup-initialize-esp0-properly-all-the-time.patch
+cleanup-make-hvc_consolec-compile-on-non-powerpc.patch
+lguest-preparation-export_symbol_gpl-5-functions.patch
+lguest-preparation-expose-futex-infrastructure.patch
+lguest-kconfig-and-headers.patch
+lguest-the-host-code-lgko.patch
+lguest-guest-code.patch
+lguest-makefile.patch
+lguest-trivial-guest-network-driver.patch
+lguest-trivial-guest-network-driver-fix.patch
+lguest-trivial-guest-console-driver.patch
+lguest-trivial-guest-block-driver.patch
+lguest-documentatation-and-example-launcher.patch

x86_64 tree updates

+after-before-x86_64-mm-mmconfig-share.patch
+rdmsr_on_cpu-wrmsr_on_cpu.patch
+x86_64-irq-simplfy-__assign_irq_vector.patch
+x86_64-irq-handle-irqs-pending-in-irr-during-irq-migration.patch
+i386-modpost-apic-related-warning-fixes.patch

x86 updates

-spin_lock_irq-enable-interrupts-while-spinning-i386-implementation-fix.patch
-spin_lock_irq-enable-interrupts-while-spinning-i386-implementation-fix-fix.patch

Folded into spin_lock_irq-enable-interrupts-while-spinning-i386-implementation.patch

+vm-invalidate_inode_pages2_range-should-not-exit-early.patch
+use-zvc-counters-to-establish-exact-size-of-dirtyable-pages.patch
+use-zvc-counters-to-establish-exact-size-of-dirtyable-pages-fix.patch
+make-try_to_unmap-return-a-special-exit-code.patch
+add-pagemlocked-page-state-bit-and-lru-infrastructure.patch
+add-nr_mlock-zvc.patch
+logic-to-move-mlocked-pages.patch
+consolidate-new-anonymous-page-code-paths.patch
+avoid-putting-new-mlocked-anonymous-pages-on-lru.patch
+opportunistically-move-mlocked-pages-off-the-lru.patch

MM updates

+smaps-extract-pmd-walker-from-smaps-code.patch
+smaps-add-pages-referenced-count-to-smaps.patch
+smaps-add-clear_refs-file-to-clear-reference.patch
+smaps-add-clear_refs-file-to-clear-reference-fix.patch
+smaps-add-clear_refs-file-to-clear-reference-fix-fix.patch
+smaps-add-clear_refs-file-to-clear-reference-docs.patch

Instrumentation for monitoring application's mapped memory usage.

+blackfin-Documentation.patch
+blackfin-arch.patch
+driver_bfin_serial_core.patch

blackfin arch

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

Fix this patch again

-replace-highest_possible_node_id-with-nr_node_ids-fix.patch

Folded into replace-highest_possible_node_id-with-nr_node_ids.patch

+convert-highest_possible_processor_id-to-nr_cpu_ids-fix.patch
+slab-reduce-size-of-alien-cache-to-cover-only-possible-nodes.patch
+filesystem-disk-errors-at-boot-time-caused-by-probe.patch
+allow-access-to-proc-pid-fd-after-setuid.patch
+allow-access-to-proc-pid-fd-after-setuid-fix.patch
+allow-access-to-proc-pid-fd-after-setuid-update.patch
+allow-access-to-proc-pid-fd-after-setuid-update-2.patch
+shm-make-sysv-ipc-shared-memory-use-stacked-files.patch
+fs-fix-__block_write_full_page-error-case-buffer-submission.patch
+ext2-3-4-fix-file-date-underflow-on-ext2-3-filesystems-on-64-bit-systems.patch
+kprobes-list-all-active-probes-in-the-system.patch
+kprobes-list-all-active-probes-in-the-system-fix.patch
+reduce-size-of-task_struct-on-64-bit-machines.patch
+reduce-size-of-task_struct-on-64-bit-machines-fix.patch
+fix-quadratic-behavior-of-shrink_dcache_parent.patch
+mm-shrink-parent-dentries-when-shrinking-slab.patch
+fat-dio-write-fallback-to-normal-buffered.patch
+kconfig-fault_injection-can-be-selected-only-if-lockdep-is-enabled.patch
+pktcdvd-correctly-set-cmd_len-field-in-pkt_generic_packet.patch
+mwave-interesting-flags-savings.patch
+ext-update-documentation.patch
+add-epoll-compat-code-to-kernel-compatc.patch
+add-epoll-compat-code-to-kernel-compatc-tidy.patch
+cfag12864b-fix-crash-when-built-in-and-no-parport.patch
+lockdep-debug_locks-check-after-check_chain_key.patch
+mfd-sm501-core-driver-3.patch
+kernel-doc-include-struct-short-description-in-title.patch
+tty-use-null-for-ptrs.patch
+cdrom-use-unsigned-bitfields.patch
+8250-fix-gcc4-signed-unsigned-mismatch-warning.patch
+update-osdl-linux-foundation-maintainer-addresses.patch
+ppc64-kdump-documentation-update-for-2620.patch
+loosen-dependancy-on-rtc-cmos.patch
+ipmi-add-powerpc-openfirmware-sensing.patch
+ipmi-allow-shared-interrupts.patch
+ipmi-add-new-ipmi-nmi-watchdog-handling.patch
+fs-fix-libfs-data-leak.patch
+fs-fix-nobh-data-leak.patch
+autofs4-header-file-update.patch
+autofs4-fix-another-race-between-mount-and-expire.patch
+autofs4-check-for-directory-re-create-in-lookup.patch
+affs-implement-drop_inode.patch
+genalloc-warning-fixes.patch

Misc

+factor-outstanding-i-o-error-handling.patch
+factor-outstanding-i-o-error-handling-tidy.patch
+sync_sb_inodes-propagate-errors.patch

Try to fix IO error handling, not very successfuly.

-tick-management-dyntick--highres-functionality-fix.patch
-tick-management-dyntick--highres-functionality-fix-2.patch

Folded into other patches

+add-debugging-feature-proc-timer_stat-cleanup.patch

Tidy add-debugging-feature-proc-timer_stat.patch

+posix-timers-rcu-optimization-for-clock_gettime.patch
+posix-timers-rcu-optimization-for-clock_gettime-fix.patch

posix-timers speedup

+genirq-do-not-mask-interrupts-by-default.patch
+genirq-remove-irq_disabled.patch
+irq-kernel-doc-fixes.patch
+small-irq-management-simplification.patch

IRQ management updates

+call-cpu_chain-with-cpu_down_failed-if-cpu_down_prepare-failed-vs-reduce-size-of-task_struct-on-64-bit-machines.patch

Fix call-cpu_chain-with-cpu_down_failed-if-cpu_down_prepare-failed.patch

-workqueue-rework-threads-hotplug-management.patch

Dropped

+workqueue-dont-migrate-pending-works-from-the-dead-cpu.patch
+workqueue-kill-run_scheduled_work.patch
+workqueue-dont-save-interrupts-in-run_workqueue.patch
+workqueue-dont-save-interrupts-in-run_workqueue-update-2.patch
+workqueue-make-cancel_rearming_delayed_workqueue-work-on-idle-dwork.patch
+workqueue-introduce-cpu_singlethread_map.patch
+workqueue-introduce-workqueue_struct-singlethread.patch
+workqueue-make-init_workqueues-__init.patch
+make-queue_delayed_work-friendly-to-flush_fork.patch
+unify-queue_delayed_work-and-queue_delayed_work_on.patch
+make-cancel_rearming_delayed_work-work-on-any-workqueue-not-just-keventd_wq.patch
+ipvs-flush-defense_work-before-module-unload.patch
+slab-shutdown-cache_reaper-when-cpu-goes-down.patch
+unify-flush_work-flush_work_keventd-and-rename-it-to-cancel_work_sync.patch

More workqueue changes

+per-backing_dev-dirty-and-writeback-page-accounting-fix.patch

Fix per-backing_dev-dirty-and-writeback-page-accounting.patch

+knfsd-nfsd4-fix-non-terminated-string.patch
+knfsd-nfsd4-relax-checking-of-acl-inheritance-bits.patch
+knfsd-nfsd4-simplify-nfsv4-posix-translation.patch
+knfsd-nfsd4-represent-nfsv4-acl-with-array-instead-of-linked-list.patch
+knfsd-nfsd4-fix-memory-leak-on-kmalloc-failure-in-savemem.patch
+knfsd-nfsd4-fix-error-return-on-unsupported-acl.patch
+knfsd-nfsd4-acls-dont-return-explicit-mask.patch
+knfsd-nfsd4-acls-avoid-unnecessary-denies.patch
+knfsd-nfsd4-fix-handling-of-directories-without-default-acls.patch
+knfsd-stop-nfsd-writes-from-being-broken-into-lots-of-little-writes-to-filesystem.patch

nfsd updates

+ecryptfs-reduce-stack-usage-in-ecryptfs_generate_key_packet_set.patch
+ecryptfs-fix-forgotten-format-specifier.patch

ecryptfs fixes

+rework-compat_sys_io_submit.patch
+fix-aioh-includes.patch
+fix-access_ok-checks.patch
+make-good_sigevent-non-static.patch
+make-good_sigevent-non-static-fix.patch
+make-__sigqueue_free-and.patch
+aio-completion-signal-notification.patch
+aio-completion-signal-notification-fix.patch
+aio-completion-signal-notification-fixes-and-cleanups.patch
+aio-completion-signal-notification-small-cleanup.patch
+add-listio-syscall-support.patch

AIO listio support

+sysctl-remove-insert_at_head-from-register_sysctl-fix.patch

fix -mm-only sched patches

-introduce-and-use-get_task_mnt_ns.patch
-introduce-and-use-get_task_mnt_ns-tweaks.patch
-nsproxy-externalizes-exit_task_namespaces.patch
-nsproxy-externalizes-exit_task_namespaces-fix.patch
-user-namespace-add-the-framework.patch
-user-namespace-add-the-framework-fix.patch
-user-namespace-add-the-framework-fixes.patch
-user-ns-add-user_namespace-ptr-to-vfsmount.patch
-user-ns-add-user_namespace-ptr-to-vfsmount-fixes.patch
-user-ns-hook-permission.patch
-user-ns-prepare-copy_tree-copy_mnt-and-their-callers-to-handle-errs.patch
-user-ns-prepare-copy_tree-copy_mnt-and-their-callers-to-handle-errs-fix.patch
-user-ns-implement-shared-mounts.patch
-user-ns-implement-shared-mounts-fixes.patch
-user_ns-handle-file-sigio.patch
-user_ns-handle-file-sigio-fix.patch
-user_ns-handle-file-sigio-fix-2.patch
-user-ns-implement-user-ns-unshare.patch
-user-ns-implement-user-ns-unshare-tidy.patch

Dropped

+rcutorture-use-array_size-macro-when-appropriate.patch
+rcutorture-style-cleanup-avoid-=-null-in-boolean-tests.patch
+rcutorture-remove-redundant-assignment-to-cur_ops-in.patch

RCU updates

-rcu-preemptible-rcu-fix.patch

Folded into rcu-preemptible-rcu.patch

-rcu-debug-trace-for-rcu-fix.patch
-rcu-debug-trace-for-rcu-fix-2.patch
-rcu-trivial-fixes.patch

Folded into rcu-debug-trace-for-rcu.patch

+revert-x86_64-mm-putreg-check.patch

Prepare for utrace

+utrace-utrace-tracehook.patch
+utrace-utrace-tracehook-ia64.patch
+utrace-utrace-tracehook-sparc64.patch
+utrace-utrace-tracehook-s390.patch
+utrace-utrace-regset.patch
+utrace-utrace-regset-ia64.patch
+utrace-utrace-regset-sparc64.patch
+utrace-utrace-regset-s390.patch
+utrace-utrace-core.patch
+utrace-utrace-ptrace-compat.patch
+utrace-utrace-ptrace-compat-ia64.patch
+utrace-utrace-ptrace-compat-sparc64.patch
+utrace-utrace-ptrace-compat-s390.patch

utrace tree

+utrace-vs-reduce-size-of-task_struct-on-64-bit-machines.patch

Fix it.

+atomich-add-atomic64-cmpxchg-xchg-and-add_unless-to-alpha.patch
+atomich-complete-atomic_long-operations-in-asm-generic.patch
+atomich-i386-type-safety-fix.patch
+atomich-add-atomic64-cmpxchg-xchg-and-add_unless-to-ia64.patch
+atomich-add-atomic64-cmpxchg-xchg-and-add_unless-to-mips.patch
+atomich-add-atomic64-cmpxchg-xchg-and-add_unless-to-parisc.patch
+atomich-add-atomic64-cmpxchg-xchg-and-add_unless-to-powerpc.patch
+atomich-add-atomic64-cmpxchg-xchg-and-add_unless-to-sparc64.patch
+atomich-add-atomic64_xchg-to-s390.patch
+atomich-add-atomic64-cmpxchg-xchg-and-add_unless-to-x86_64.patch
+atomich-atomic_add_unless-as-inline-remove-systemh-atomich-circular-dependency.patch
+local_t-architecture-independant-extension.patch
+local_t-alpha-extension.patch
+local_t-i386-extension.patch
+local_t-ia64-extension.patch
+local_t-mips-extension.patch
+local_t-parisc-cleanup.patch
+local_t-powerpc-extension.patch
+local_t-powerpc-extension-fix.patch
+local_t-s390-cleanup.patch
+local_t-sparc64-cleanup.patch
+local_t-x86_64-extension.patch

atomic_t and local_t work

+linux-kernel-markers-kconfig-menus.patch
+linux-kernel-markers-architecture-independant-code.patch
+linux-kernel-markers-powerpc-optimization.patch
+linux-kernel-markers-i386-optimization.patch
+linux-kernel-markers-non-optimized-architectures.patch

Linux Kenrel Markers

+readahead-partial-sendfile-fix.patch

Fix readahead patches in -mm.

+reiser4-vs-git-block3.patch

Fix reiser4 for git-block

+drivers-mdc-use-array_size-macro-when-appropriate.patch

MD cleanup

+ia64-enable-config_debug_spinlock_sleep.patch
+keep-track-of-network-interface-renaming.patch

debug things

+git-gccbug-fixup.patch

Fix rejects in git-gccbug.patch



All 887 patches:

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



2007-02-15 14:28:27

by James Morris

[permalink] [raw]
Subject: Re: 2.6.20-mm1 [kernel BUG at mm/swap.c:442]

Hit a BUG() via lvm:


Scanning logical volumes
Reading all physical volumes. This may take a while...
Found volume group "VolGroup00" using metadata type lvm2
Activating logical volumes
[ 75.215078] ------------[ cut here ]------------
[ 75.230165] kernel BUG at mm/swap.c:442!
[ 75.244589] invalid opcode: 0000 [#1]
[ 75.258693] PREEMPT SMP
[ 75.271894] last sysfs file: /block/ram0/dev
[ 75.286734] Modules linked in:
[ 75.300193] CPU: 0
[ 75.300195] EIP: 0060:[<c0150303>] Not tainted VLI
[ 75.300197] EFLAGS: 00210006 (2.6.20-mm1 #1)
[ 75.341750] EIP is at __pagevec_lru_add_active+0x76/0xcc
[ 75.356722] eax: 80100060 ebx: c1bf9c48 ecx: c1e345bc edx: 00000001
[ 75.373139] esi: c03dc680 edi: c1c4e780 ebp: f7ce3f34 esp: f7ce3f24
[ 75.389642] ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
[ 75.405199] Process lvm (pid: 415, ti=f7ce2000 task=c1e34070 task.ti=f7ce2000)
[ 75.421908] Stack: 00000000 00000000 c1e25548 f7d58ea0 f7ce3f40 c01504fc c1e25548 f7ce3f70
[ 75.451375] c0157b22 c0579820 f7ce5478 00000000 f7d58420 f7d58f00 00000000 00000000
[ 75.481458] c1e25548 f7d58420 f7d58420 f7ce3fa0 c0158539 b7fa1000 b7fa2000 b7fa1000
[ 75.512233] Call Trace:
[ 75.536111] [<c01039ca>] show_trace_log_lvl+0x1a/0x2f
[ 75.552228] [<c0103a7a>] show_stack_log_lvl+0x9b/0xaa
[ 75.568329] [<c0103c6f>] show_registers+0x1e6/0x325
[ 75.584336] [<c0103ed4>] die+0x126/0x225
[ 75.599300] [<c010404c>] do_trap+0x79/0x91
[ 75.614358] [<c0104951>] do_invalid_op+0x97/0xa1
[ 75.629892] [<c02f8a4c>] error_code+0x7c/0x84
[ 75.645097] [<c01504fc>] lru_add_drain+0x41/0x8d
[ 75.660599] [<c0157b22>] unmap_region+0x2a/0x129
[ 75.676116] [<c0158539>] do_munmap+0x153/0x1b4
[ 75.691497] [<c01585bf>] sys_munmap+0x25/0x34
[ 75.706737] [<c01029c0>] syscall_call+0x7/0xb
[ 75.721913] =======================
[ 75.736054] Code: 54 80 1a 00 8b 03 a8 20 74 04 0f 0b eb fe f0 0f ba 2b 05 8b 03 a8 40 74 04 0f 0b eb fe f0 0f ba 2b 06 8b 03 a9 00 00 10 00 74 04 <0f> 0b eb fe 8d 96 a0 05 00 00 8d 43 30 e8 24 eb 08 00 ba 02 00
[ 75.799343] EIP: [<c0150303>] __pagevec_lru_add_active+0x76/0xcc SS:ESP 0068:f7ce3f24
[ 75.831928] note: lvm[415] exited with preempt_count 2
[ 75.849402] BUG: sleeping function called from invalid context at kernel/rwsem.c:20
[ 75.881617] in_atomic():1, irqs_disabled():1
[ 75.898063] 2 locks held by lvm/415:
[ 75.913388] #0: (&mm->mmap_sem){----}, at: [<c01585b2>] sys_munmap+0x18/0x34
[ 75.944378] #1: (&zone->lru_lock){....}, at: [<c01502dc>] __pagevec_lru_add_active+0x4f/0xcc
[ 75.976490] irq event stamp: 69326
[ 75.990962] hardirqs last enabled at (69325): [<c0102b09>] syscall_exit_work+0x11/0x30
[ 76.022168] hardirqs last disabled at (69326): [<c02f8348>] _spin_lock_irq+0x18/0x51
[ 76.054169] softirqs last enabled at (57904): [<c011ff6f>] __do_softirq+0xfa/0x100
[ 76.087195] softirqs last disabled at (57889): [<c011ffbf>] do_softirq+0x4a/0x7a
[ 76.121170] [<c01039ca>] show_trace_log_lvl+0x1a/0x2f
[ 76.139835] [<c01040a5>] show_trace+0x12/0x14
[ 76.157721] [<c0104157>] dump_stack+0x16/0x18
[ 76.175743] [<c01155f7>] __might_sleep+0xe5/0xeb
[ 76.194139] [<c012e9e6>] down_read+0x18/0x4c
[ 76.212190] [<c011d1e0>] exit_mm+0x27/0xd1
[ 76.230203] [<c011e4a8>] do_exit+0x1e1/0x6f6
[ 76.247845] [<c0103fad>] die+0x1ff/0x225
[ 76.264934] [<c010404c>] do_trap+0x79/0x91
[ 76.281212] [<c0104951>] do_invalid_op+0x97/0xa1
[ 76.297820] [<c02f8a4c>] error_code+0x7c/0x84
[ 76.313929] [<c01504fc>] lru_add_drain+0x41/0x8d
[ 76.330202] [<c0157b22>] unmap_region+0x2a/0x129
[ 76.346230] [<c0158539>] do_munmap+0x153/0x1b4
[ 76.361722] [<c01585bf>] sys_munmap+0x25/0x34
[ 76.377115] [<c01029c0>] syscall_call+0x7/0xb
[ 76.392529] =======================
[ 76.406713] BUG: scheduling while atomic: lvm/0x00000002/415
[ 76.422805] 2 locks held by lvm/415:
[ 76.436571] #0: (&mm->mmap_sem){----}, at: [<c01585b2>] sys_munmap+0x18/0x34
[ 76.465007] #1: (&zone->lru_lock){....}, at: [<c01502dc>] __pagevec_lru_add_active+0x4f/0xcc
[ 76.494996] [<c01039ca>] show_trace_log_lvl+0x1a/0x2f
[ 76.510283] [<c01040a5>] show_trace+0x12/0x14
[ 76.524538] [<c0104157>] dump_stack+0x16/0x18
[ 76.538603] [<c02f5346>] __sched_text_start+0x76/0x98c
[ 76.553174] [<c01d029f>] rwsem_down_failed_common+0x16e/0x18d
[ 76.568176] [<c02f7cef>] rwsem_down_read_failed+0x1d/0x26
[ 76.582508] [<c02f7d73>] call_rwsem_down_read_failed+0x7/0xc
[ 76.597197] [<c011d1e0>] exit_mm+0x27/0xd1
[ 76.610369] [<c011e4a8>] do_exit+0x1e1/0x6f6
[ 76.623618] [<c0103fad>] die+0x1ff/0x225
[ 76.636419] [<c010404c>] do_trap+0x79/0x91
[ 76.649413] [<c0104951>] do_invalid_op+0x97/0xa1
[ 76.662859] [<c02f8a4c>] error_code+0x7c/0x84
[ 76.676016] [<c01504fc>] lru_add_drain+0x41/0x8d
[ 76.689487] [<c0157b22>] unmap_region+0x2a/0x129
[ 76.702979] [<c0158539>] do_munmap+0x153/0x1b4
[ 76.716310] [<c01585bf>] sys_munmap+0x25/0x34
[ 76.729566] [<c01029c0>] syscall_call+0x7/0xb
[ 76.742688] =======================

2007-02-15 14:37:14

by James Morris

[permalink] [raw]
Subject: Re: 2.6.20-mm1 [kernel BUG at mm/swap.c:442]

On Thu, 15 Feb 2007, James Morris wrote:

> Hit a BUG() via lvm:

Also, I just disabled paravirt ops and saw the same bug, so it's not that
stuff.


--
James Morris
<[email protected]>

2007-02-15 14:37:42

by Michal Piotrowski

[permalink] [raw]
Subject: Re: 2.6.20-mm1

Andrew Morton napisał(a):
> Temporarily at
>
> http://userweb.kernel.org/~akpm/2.6.20-mm1/
>
> Will appear later at
>
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20/2.6.20-mm1/
>
>

BUG: sleeping function called from invalid context at /mnt/md0/devel/linux-mm/mm/slab.c:3043
in_atomic():1, irqs_disabled():0
1 lock held by artsd/3819:
#0: (&new->lock){--..}, at: [<c01d5b7c>] ipc_lock+0x35/0x4f
[<c0105312>] show_trace_log_lvl+0x1a/0x2f
[<c0105a25>] show_trace+0x12/0x14
[<c0105ae7>] dump_stack+0x16/0x18
[<c011db4a>] __might_sleep+0xc9/0xcf
[<c017c37a>] kmem_cache_zalloc+0x28/0xe5
[<c01d8c7d>] do_shmat+0x111/0x372
[<c0109151>] sys_ipc+0x148/0x1b5
[<c010432c>] syscall_call+0x7/0xb
=======================

0xc01d5b7c is in ipc_lock (/mnt/md0/devel/linux-mm/ipc/util.c:684).
679 spin_lock(&out->lock);
680
681 /* ipc_rmid() may have already freed the ID while ipc_lock
682 * was spinning: here verify that the structure is still valid
683 */
684 if (out->deleted) {
685 spin_unlock(&out->lock);
686 rcu_read_unlock();
687 return NULL;
688 }


http://www.stardust.webpages.pl/files/tbf/euridica/2.6.20-mm1/mm-dmesg
http://www.stardust.webpages.pl/files/tbf/euridica/2.6.20-mm1/mm-config

[michal@euridica linux-work3]$ quilt patches mm/slab.c
patches/origin.patch
patches/slab-reduce-size-of-alien-cache-to-cover-only-possible-nodes.patch
patches/slab-use-cpu_lock_.patch
patches/slab-shutdown-cache_reaper-when-cpu-goes-down.patch
[michal@euridica linux-work3]$ quilt patches ipc/util.c
patches/origin.patch

Regards,
Michal

--
Michal K. K. Piotrowski
LTG - Linux Testers Group (PL)
(http://www.stardust.webpages.pl/ltg/)
LTG - Linux Testers Group (EN)
(http://www.stardust.webpages.pl/linux_testers_group_en/)

2007-02-15 15:01:20

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] MARKERS should depend on, not select MODULES

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> +linux-kernel-markers-kconfig-menus.patch
>...
> Linux Kenrel Markers
>...

Never ever select MODULES.

Signed-off-by: Adrian Bunk <[email protected]>

---

BTW: Can we get in-kernel users?

--- linux-2.6.20-mm1/kernel/Kconfig.marker.old 2007-02-15 15:54:10.000000000 +0100
+++ linux-2.6.20-mm1/kernel/Kconfig.marker 2007-02-15 15:54:27.000000000 +0100
@@ -2,8 +2,7 @@

config MARKERS
bool "Activate markers"
- select MODULES
- default n
+ depends on MODULES
help
Place an empty function call at each marker site. Can be
dynamically changed for a probe function.

2007-02-15 16:01:39

by Tilman Schmidt

[permalink] [raw]
Subject: sparse chokes on arch/i386/kernel/i8253.c (was: 2.6.20-mm1)

Trying to build 2.6.20-mm1 on i386 with C=1, sparse 0.2 chokes
on arch/i386/kernel/i8253.c:

CHECK arch/i386/kernel/i8253.c
linux/marker.h: No such file or directory
include/linux/jiffies.h:18:5: warning: undefined preprocessor identifier 'CONFIG_HZ'
include/linux/jiffies.h:20:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
include/linux/jiffies.h:22:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
include/linux/jiffies.h:24:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
include/linux/jiffies.h:26:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
include/linux/jiffies.h:28:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
include/linux/jiffies.h:30:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
include/linux/jiffies.h:33:3: error: You lose.
include/linux/jiffies.h:225:5: error: bad constant expression
include/asm/module.h:64:2: error: unknown processor family
include/asm/processor.h:82:30: error: undefined identifier 'CONFIG_X86_L1_CACHE_SHIFT'
include/asm/processor.h:82:30: error: bad constant expression type
arch/i386/kernel/i8253.c:120:16: error: Expected ; at end of declaration
arch/i386/kernel/i8253.c:120:16: error: got pit_read
arch/i386/kernel/i8253.c:128:2: error: Trying to use reserved word 'do' as identifier
arch/i386/kernel/i8253.c:128:2: error: Expected ; at end of declaration
arch/i386/kernel/i8253.c:128:2: error: got {
[loads of similar messages omitted ...]
arch/i386/kernel/i8253.c:195:2: error: undefined identifier 'clocksource_pit'
arch/i386/kernel/i8253.c:196:9: error: undefined identifier 'clocksource_register'
arch/i386/kernel/i8253.c:41:7: error: Expected constant expression in case statement
arch/i386/kernel/i8253.c:50:7: error: Expected constant expression in case statement
arch/i386/kernel/i8253.c:51:7: error: Expected constant expression in case statement
arch/i386/kernel/i8253.c:52:7: error: Expected constant expression in case statement
/bin/sh: line 1: 18990 Speicherzugriffsfehler /home/ts/kernel/sparse-0.2/sparse -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise -D__i386__ -nostd
inc -isystem /usr/lib/gcc/i586-suse-linux/4.0.2/include -Wp,-MD,arch/i386/kernel/.i8253.o.d -nostdinc -isystem /usr/lib/gcc/i586-suse-linux/4.0.2/include -D_
_KERNEL__ -Iinclude -include include/linux/autoconf.h -include linux/marker.h -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-comm
on -Os -pipe -msoft-float -mregparm=3 -mpreferred-stack-boundary=2 -march=i686 -mtune=pentium3 -ffreestanding -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -I
include/asm-i386/mach-default -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -D"KBUILD_STR(s)=#s" -D"
KBUILD_BASENAME=KBUILD_STR(i8253)" -D"KBUILD_MODNAME=KBUILD_STR(i8253)" arch/i386/kernel/i8253.c
make[1]: *** [arch/i386/kernel/i8253.o] Fehler 139
make: *** [arch/i386/kernel] Fehler 2

gcc compiles it without a single complaint, though.

HTH

--
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 (250.00 B)
OpenPGP digital signature

2007-02-15 16:27:44

by Artem Bityutskiy

[permalink] [raw]
Subject: Re: 2.6.20-mm1

Andrew Morton wrote:
> - The UBI tree got dropped due to probable lack of a git sync with
> mainline (ie: it's a 13.5MB diff whcih doesn't apply very well)

Andrew, I apologize for this. Now it is fixed. It somehow got screwed
when I re-based it from mtd-2.6.git to linu-2.6.git. Please, do not drop it.

--
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

2007-02-15 16:42:47

by Frederik Deweerdt

[permalink] [raw]
Subject: [-mm patch] pci_iomap_regions error handling fix (was Re: 2.6.20-mm1)

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>
> Temporarily at
>
> http://userweb.kernel.org/~akpm/2.6.20-mm1/
>
Hi,

It appears that the pcim_iomap_regions() function doesn't get the error
handling right. It BUGs early at boot with a backtrace along the lines of:

ahci_init
pci_register_driver
driver_register
[...]
ahci_init_one
pcim_iomap_region
pcim_iounmap

The following patch allows me to boot. Only the if(mask..) continue;
part fixes the problem actually, the gotos where changed so that we
don't try to unmap something we couldn't map anyway.

Regards,
Frederik

Signed-off-by: Frederik Deweerdt <[email protected]>


diff --git a/lib/devres.c b/lib/devres.c
index 2a668dd..eb38849 100644
--- a/lib/devres.c
+++ b/lib/devres.c
@@ -274,21 +274,21 @@ int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name)

rc = pci_request_region(pdev, i, name);
if (rc)
- goto err_region;
+ goto err_inval;

rc = -ENOMEM;
if (!pcim_iomap(pdev, i, 0))
- goto err_iomap;
+ goto err_region;
}

return 0;

- err_iomap:
- pcim_iounmap(pdev, iomap[i]);
err_region:
pci_release_region(pdev, i);
err_inval:
while (--i >= 0) {
+ if (!(mask & (1 << i)))
+ continue;
pcim_iounmap(pdev, iomap[i]);
pci_release_region(pdev, i);
}

2007-02-15 17:33:50

by Valdis Klētnieks

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Thu, 15 Feb 2007 05:14:08 PST, Andrew Morton said:
>
> Temporarily at
>
> http://userweb.kernel.org/~akpm/2.6.20-mm1/
>
> Will appear later at
>
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20/2.6.20-mm1/

git-backlight.patch contains this:

+config BACKLIGHT_PROGEAR
+ tristate "Frontpath ProGear Backlight Driver"
+ depends on BACKLIGHT_CLASS_DEVICE && PCI && X86
+ default y
+ help
+ If you have a Frontpath ProGear say Y to enable the
+ backlight driver.

Should that be a default N or M, given that relatively few people have that
device?


Attachments:
(No filename) (226.00 B)

2007-02-15 17:59:58

by Marcin Juszkiewicz

[permalink] [raw]
Subject: Re: 2.6.20-mm1

Dnia czwartek, 15 lutego 2007, [email protected] napisa?:
> On Thu, 15 Feb 2007 05:14:08 PST, Andrew Morton said:

> git-backlight.patch contains this:
>
> +config BACKLIGHT_PROGEAR
> + tristate "Frontpath ProGear Backlight Driver"
> + depends on BACKLIGHT_CLASS_DEVICE && PCI && X86
> + default y
> + help
> + If you have a Frontpath ProGear say Y to enable the
> + backlight driver.
>
> Should that be a default N or M, given that relatively few people have
> that device?

"default n" as this is rather rare used today device. Should I send
a patch or can it be changed without it?

--
JID: hrw-jabber.org
OpenEmbedded developer/consultant

Great minds discuss ideas; average minds discuss events;
small minds discuss people.


2007-02-15 18:27:33

by Richard Purdie

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Thu, 2007-02-15 at 19:00 +0100, Marcin Juszkiewicz wrote:
> Dnia czwartek, 15 lutego 2007, [email protected] napisał:
> > On Thu, 15 Feb 2007 05:14:08 PST, Andrew Morton said:
>
> > git-backlight.patch contains this:
> >
> > +config BACKLIGHT_PROGEAR
> > + tristate "Frontpath ProGear Backlight Driver"
> > + depends on BACKLIGHT_CLASS_DEVICE && PCI && X86
> > + default y
> > + help
> > + If you have a Frontpath ProGear say Y to enable the
> > + backlight driver.
> >
> > Should that be a default N or M, given that relatively few people have
> > that device?
>
> "default n" as this is rather rare used today device. Should I send
> a patch or can it be changed without it?

Its probably easiest if I just fix that.

Cheers,

Richard

2007-02-15 19:27:49

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: [-mm patch] MARKERS should depend on, not select MODULES

* Adrian Bunk ([email protected]) wrote:
> On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
> >...
> > Changes since 2.6.20-rc6-mm3:
> >...
> > +linux-kernel-markers-kconfig-menus.patch
> >...
> > Linux Kenrel Markers
> >...
>
> Never ever select MODULES.
>
> Signed-off-by: Adrian Bunk <[email protected]>
>
Acked-by: Mathieu Desnoyers <[email protected]>

> ---
>
> BTW: Can we get in-kernel users?
>

It could apply to any subsystems that needs hooks. (selinux?)


> --- linux-2.6.20-mm1/kernel/Kconfig.marker.old 2007-02-15 15:54:10.000000000 +0100
> +++ linux-2.6.20-mm1/kernel/Kconfig.marker 2007-02-15 15:54:27.000000000 +0100
> @@ -2,8 +2,7 @@
>
> config MARKERS
> bool "Activate markers"
> - select MODULES
> - default n
> + depends on MODULES
> help
> Place an empty function call at each marker site. Can be
> dynamically changed for a probe function.
>

--
Mathieu Desnoyers
Computer Engineering Ph.D. Candidate, ?cole Polytechnique de Montr?al
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-02-15 19:29:59

by Mattia Dongili

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
[...]
> - The sony-laptop driver has been disabled due to disagreement between
> the git-acpi and git-backlight trees

Snigh... I though Richard had something to fix sony-laptop.

Am I wrong?
--
mattia
:wq!

2007-02-15 19:40:11

by Richard Purdie

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Thu, 2007-02-15 at 20:29 +0100, Mattia Dongili wrote:
> On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
> [...]
> > - The sony-laptop driver has been disabled due to disagreement between
> > the git-acpi and git-backlight trees
>
> Snigh... I though Richard had something to fix sony-laptop.
>
> Am I wrong?

No, it just didn't make it into -mm. I've included what should be the
fix below.

Fix up the sony-laptop driver in git-acpi to work with the recent
changes in the git-backlight tree.

Signed-off-by: Richard Purdie <[email protected]>

---
drivers/misc/sony-laptop.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)

Index: linux/drivers/misc/sony-laptop.c
===================================================================
--- linux.orig/drivers/misc/sony-laptop.c 2007-02-11 00:59:47.000000000 +0000
+++ linux/drivers/misc/sony-laptop.c 2007-02-11 01:02:51.000000000 +0000
@@ -341,7 +341,7 @@ static void sony_snc_pf_remove(void)
static int sony_backlight_update_status(struct backlight_device *bd)
{
return acpi_callsetfunc(sony_acpi_handle, "SBRT",
- bd->props->brightness + 1, NULL);
+ bd->props.brightness + 1, NULL);
}

static int sony_backlight_get_brightness(struct backlight_device *bd)
@@ -355,11 +355,9 @@ static int sony_backlight_get_brightness
}

static struct backlight_device *sony_backlight_device;
-static struct backlight_properties sony_backlight_properties = {
- .owner = THIS_MODULE,
+static struct backlight_ops sony_backlight_ops = {
.update_status = sony_backlight_update_status,
.get_brightness = sony_backlight_get_brightness,
- .max_brightness = SONY_MAX_BRIGHTNESS - 1,
};

/*
@@ -441,15 +439,17 @@ static int sony_acpi_add(struct acpi_dev
if (ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, "GBRT", &handle))) {
sony_backlight_device = backlight_device_register("sony", NULL,
NULL,
- &sony_backlight_properties);
+ &sony_backlight_ops);

if (IS_ERR(sony_backlight_device)) {
printk(LOG_PFX "unable to register backlight device\n");
sony_backlight_device = NULL;
- } else
- sony_backlight_properties.brightness =
- sony_backlight_get_brightness
- (sony_backlight_device);
+ } else {
+ sony_backlight_device->props.brightness =
+ sony_backlight_get_brightness(sony_backlight_device);
+ sony_backlight_device->props.max_brightness =
+ SONY_MAX_BRIGHTNESS - 1;
+ }
}

if (sony_snc_pf_add())




2007-02-15 21:30:36

by J.A. Magallón

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Thu, 15 Feb 2007 05:14:08 -0800, Andrew Morton <[email protected]> wrote:

>
> Temporarily at
>
> http://userweb.kernel.org/~akpm/2.6.20-mm1/
>
> Will appear later at
>
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20/2.6.20-mm1/
>
>

Oops plague for me :(.

A lot like this:

ee1394 usblp evdev
CPU: 1
EIP: 0060:[<c0195f12>] Tainted: P VLI
EFLAGS: 00010246 (2.6.20-jam01 #1)
EIP is at sysfs_lookup+0x5b/0x20a
eax: f6707118 ebx: f6b33e5c ecx: f6917d38 edx: 00000004
esi: 00000000 edi: f670717c ebp: f6b33e24 esp: f6997db4
ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
Process udevd (pid: 3899, ti=f6996000 task=f7e34540 task.ti=f6996000)
Stack: f66e1800 f6707118 c016da12 f66e1800 f6707118 c02f75c0 f6707118 f6997f04
f6997e38 c0164238 f6997e44 c210d8c0 f6b39340 f6b393b4 f7a7d025 f6997e38
27692f8b f6997f04 c0165a6a f7a7d01d 00000000 000200d2 c037ddac 00000286
Call Trace:
[<c016da12>] d_alloc+0x140/0x198
[<c0164238>] do_lookup+0x128/0x165
[<c0165a6a>] __link_path_walk+0x7e2/0xc9b
[<c0165f68>] link_path_walk+0x45/0xbf
[<c01661b6>] do_path_lookup+0x88/0x1cc
[<c0165125>] getname+0x90/0xad
[<c0166aa4>] __user_walk_fd+0x2f/0x47
[<c01607c4>] vfs_lstat_fd+0x16/0x3d
[<c0160830>] sys_lstat64+0xf/0x23
[<c0111904>] do_page_fault+0x326/0x5e2
[<c01115de>] do_page_fault+0x0/0x5e2
[<c010288e>] sysenter_past_esp+0x5f/0x85
[<c02f0000>] wait_for_completion_interruptible+0xdf/0xee
=======================
Code: 83 ed 04 8b 45 04 0f 18 00 90 8d 45 04 39 d8 0f 84 bc 00 00 00 f6 45 18 2c 74 e2 89 e8 e8 ed e4 ff ff 89 c6 8b 44 24 10 8b 78 28 <ac> ae 75 08 84 c0 75 f8 31 c0 eb 04 19 c0 0c 01 85 c0 75 be 8b
EIP: [<c0195f12>] sysfs_lookup+0x5b/0x20a SS:ESP 0068:f6997db4
BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
printing eip:
c01963ff
*pde = 00000000
Oops: 0000 [#5]
PREEMPT SMP
last sysfs file: /devices/pci0000:00/0000:00:00.0/resource
Modules linked in: nfsd exportfs lockd nfs_acl sunrpc w83627hf hwmon_vid hwmon i2c_isa i2c_i801 i2c_dev microcode snd_intel8x0 snd_ens1371 gameport snd_rawmidi snd_ac97_codec ac97_bus snd_pcm snd_timer snd_page_alloc snd nvidia(P) loop intel_agp agpgart udf e1000 3c59x ohci1394 ieee1394 usblp evdev
CPU: 1
EIP: 0060:[<c01963ff>] Tainted: P VLI
EFLAGS: 00010246 (2.6.20-jam01 #1)
EIP is at sysfs_follow_link+0x109/0x254
eax: 00000000 ebx: 00000001 ecx: ffffffff edx: ffffffff
esi: 00000000 edi: 00000000 ebp: 00000003 esp: f70fdea4
ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
Process udevd (pid: 3900, ti=f70fc000 task=c21f5070 task.ti=f70fc000)
Stack: f6917cd8 f70fdedc f670b000 f7321c88 ffffffff f6917cd8 ffffffea 00000000
c02f76a0 f6707aa8 00000200 bfa2c2fc c0163e50 b7fc9ff4 f70fc000 f70fdfb8
f7f732f4 c21f5070 f7f732c0 f70fdfb8 c011d757 00000000 f6cfbe68 f70fdf44
Call Trace:
[<c0163e50>] generic_readlink+0x27/0x6e
[<c011d757>] timespec_trunc+0x18/0x57
[<c011dd47>] current_fs_time+0x4d/0x66
[<c016f990>] touch_atime+0x6e/0xee
[<c016076a>] sys_readlinkat+0x61/0x7a
[<c0111904>] do_page_fault+0x326/0x5e2
[<c01607aa>] sys_readlink+0x27/0x2b
[<c010288e>] sysenter_past_esp+0x5f/0x85
[<c02f0000>] wait_for_completion_interruptible+0xdf/0xee
=======================

Full dmesg at:

http://belly.cps.unizar.es/~magallon/oops/oops.txt

And another one on reboot. Picture here:

http://belly.cps.unizar.es/~magallon/oops/IMG_1448.JPG

(sorry, no tripod available ;), just the back of my soft chair).

And yes, before nobody says anything, nvidia.ko is loaded.
If you really want, I can try without it.

--
J.A. Magallon <jamagallon()ono!com> \ Software is like sex:
\ It's better when it's free
Mandriva Linux release 2007.1 (Cooker) for i586
Linux 2.6.19-jam07 (gcc 4.1.2 20070115 (prerelease) (4.1.2-0.20070115.1mdv2007.1)) #2 SMP PREEMPT

2007-02-15 21:52:09

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.20-mm1 [kernel BUG at mm/swap.c:442]

On Thu, 15 Feb 2007 09:28:23 -0500 (EST)
James Morris <[email protected]> wrote:

> Hit a BUG() via lvm:
>
>
> Scanning logical volumes
> Reading all physical volumes. This may take a while...
> Found volume group "VolGroup00" using metadata type lvm2
> Activating logical volumes
> [ 75.215078] ------------[ cut here ]------------
> [ 75.230165] kernel BUG at mm/swap.c:442!
> [ 75.244589] invalid opcode: 0000 [#1]
> [ 75.258693] PREEMPT SMP
> [ 75.271894] last sysfs file: /block/ram0/dev
> [ 75.286734] Modules linked in:
> [ 75.300193] CPU: 0
> [ 75.300195] EIP: 0060:[<c0150303>] Not tainted VLI
> [ 75.300197] EFLAGS: 00210006 (2.6.20-mm1 #1)
> [ 75.341750] EIP is at __pagevec_lru_add_active+0x76/0xcc
> [ 75.356722] eax: 80100060 ebx: c1bf9c48 ecx: c1e345bc edx: 00000001
> [ 75.373139] esi: c03dc680 edi: c1c4e780 ebp: f7ce3f34 esp: f7ce3f24
> [ 75.389642] ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
> [ 75.405199] Process lvm (pid: 415, ti=f7ce2000 task=c1e34070 task.ti=f7ce2000)
> [ 75.421908] Stack: 00000000 00000000 c1e25548 f7d58ea0 f7ce3f40 c01504fc c1e25548 f7ce3f70
> [ 75.451375] c0157b22 c0579820 f7ce5478 00000000 f7d58420 f7d58f00 00000000 00000000
> [ 75.481458] c1e25548 f7d58420 f7d58420 f7ce3fa0 c0158539 b7fa1000 b7fa2000 b7fa1000
> [ 75.512233] Call Trace:
> [ 75.536111] [<c01039ca>] show_trace_log_lvl+0x1a/0x2f
> [ 75.552228] [<c0103a7a>] show_stack_log_lvl+0x9b/0xaa
> [ 75.568329] [<c0103c6f>] show_registers+0x1e6/0x325
> [ 75.584336] [<c0103ed4>] die+0x126/0x225
> [ 75.599300] [<c010404c>] do_trap+0x79/0x91
> [ 75.614358] [<c0104951>] do_invalid_op+0x97/0xa1
> [ 75.629892] [<c02f8a4c>] error_code+0x7c/0x84
> [ 75.645097] [<c01504fc>] lru_add_drain+0x41/0x8d
> [ 75.660599] [<c0157b22>] unmap_region+0x2a/0x129
> [ 75.676116] [<c0158539>] do_munmap+0x153/0x1b4
> [ 75.691497] [<c01585bf>] sys_munmap+0x25/0x34
> [ 75.706737] [<c01029c0>] syscall_call+0x7/0xb

That's

VM_BUG_ON(PageMlocked(page));

Setting CONFIG_DEBUG_VM=n will shut it up.

I don't immediately see why that code isn't racy: the page can remain
in the pagevec for arbitrary amounts of time and someone can come along
and mlock it again. But given the ease with which you're hitting this,
it may not be a race.

2007-02-15 22:02:37

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Thu, 15 Feb 2007 15:37:20 +0100
Michal Piotrowski <[email protected]> wrote:

> Andrew Morton napisa__(a):
> > Temporarily at
> >
> > http://userweb.kernel.org/~akpm/2.6.20-mm1/
> >
> > Will appear later at
> >
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20/2.6.20-mm1/
> >
> >
>
> BUG: sleeping function called from invalid context at /mnt/md0/devel/linux-mm/mm/slab.c:3043
> in_atomic():1, irqs_disabled():0
> 1 lock held by artsd/3819:
> #0: (&new->lock){--..}, at: [<c01d5b7c>] ipc_lock+0x35/0x4f
> [<c0105312>] show_trace_log_lvl+0x1a/0x2f
> [<c0105a25>] show_trace+0x12/0x14
> [<c0105ae7>] dump_stack+0x16/0x18
> [<c011db4a>] __might_sleep+0xc9/0xcf
> [<c017c37a>] kmem_cache_zalloc+0x28/0xe5
> [<c01d8c7d>] do_shmat+0x111/0x372
> [<c0109151>] sys_ipc+0x148/0x1b5
> [<c010432c>] syscall_call+0x7/0xb

That's shm-make-sysv-ipc-shared-memory-use-stacked-files.patch, brought to
us by Eric-who-hasnt-read-Documentation/SubmitChecklist.

Like this, I guess:

diff -puN ipc/shm.c~shm-make-sysv-ipc-shared-memory-use-stacked-files-fix ipc/shm.c
--- a/ipc/shm.c~shm-make-sysv-ipc-shared-memory-use-stacked-files-fix
+++ a/ipc/shm.c
@@ -818,7 +818,7 @@ long do_shmat(int shmid, char __user *sh
int acc_mode;
void *user_addr;
struct ipc_namespace *ns;
- struct shm_file_data *sfd;
+ struct shm_file_data *sfd = NULL;
mode_t f_mode;

if (shmid < 0) {
@@ -856,6 +856,8 @@ long do_shmat(int shmid, char __user *sh
acc_mode |= S_IXUGO;
}

+ sfd = kzalloc(sizeof(*sfd), GFP_KERNEL);
+
/*
* We cannot rely on the fs check since SYSV IPC does have an
* additional creator id...
@@ -879,13 +881,12 @@ long do_shmat(int shmid, char __user *sh
goto out_unlock;

err = -ENOMEM;
- sfd = kzalloc(sizeof(*sfd), GFP_KERNEL);
if (!sfd)
goto out_unlock;

file = get_empty_filp();
if (!file)
- goto out_free;
+ goto out_unlock;

file->f_op = &shm_file_operations;
file->private_data = sfd;
@@ -939,9 +940,8 @@ invalid:
if (IS_ERR(user_addr))
err = PTR_ERR(user_addr);
out:
- return err;
-out_free:
kfree(sfd);
+ return err;
out_unlock:
shm_unlock(shp);
goto out;
_

2007-02-15 22:39:31

by Eric W. Biederman

[permalink] [raw]
Subject: Re: 2.6.20-mm1

Andrew Morton <[email protected]> writes:

> That's shm-make-sysv-ipc-shared-memory-use-stacked-files.patch, brought to
> us by Eric-who-hasnt-read-Documentation/SubmitChecklist.

Sorry I thought I had all of the interesting debugging enabled in my
kernel build. It must of fallen out someplace. I think I must
have figured shm_lock was a semaphore or mutex.

> Like this, I guess:

Nope. get_empty_filp can sleep as well, unless I'm totally mistaken.
It looks like the logic change is going to be a little more than a one
liner. I will get back to you in a couple of hours....

Eric

2007-02-15 22:39:50

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.20-mm1 [kernel BUG at mm/swap.c:442]

On Thu, 15 Feb 2007, Andrew Morton wrote:

> I don't immediately see why that code isn't racy: the page can remain
> in the pagevec for arbitrary amounts of time and someone can come along
> and mlock it again. But given the ease with which you're hitting this,
> it may not be a race.

As long as the page is on the pagevec it should be off the LRU.
Marking a page PageMlocked requires the page to be on the LRU. So a page
cannot be marked PageMlocked as long as it is on the regular pagevecs.

Somehow a page off the LRU was marked PageMlocked. Or a new anonymous page
was allocated and marked PageMlocked and then some later processing put it
onto the LRU?

Maybe try_to_set_mlocked does work some havoc here.

Could you see if this patch fixes it? This just disabled an optimization
to set PageMlocked early.

Index: linux-2.6.20-mm1/mm/memory.c
===================================================================
--- linux-2.6.20-mm1.orig/mm/memory.c 2007-02-15 14:35:41.000000000 -0800
+++ linux-2.6.20-mm1/mm/memory.c 2007-02-15 14:35:54.000000000 -0800
@@ -930,6 +930,8 @@ static void try_to_set_mlocked(struct pa
struct zone *zone;
unsigned long flags;

+ return;
+
if (!PageLRU(page) || PageMlocked(page))
return;

2007-02-15 22:41:53

by Andrew Morton

[permalink] [raw]
Subject: Re: sparse chokes on arch/i386/kernel/i8253.c (was: 2.6.20-mm1)

On Thu, 15 Feb 2007 17:01:27 +0100
Tilman Schmidt <[email protected]> wrote:

> Trying to build 2.6.20-mm1 on i386 with C=1, sparse 0.2 chokes
> on arch/i386/kernel/i8253.c:
>
> CHECK arch/i386/kernel/i8253.c
> linux/marker.h: No such file or directory
> include/linux/jiffies.h:18:5: warning: undefined preprocessor identifier 'CONFIG_HZ'
> include/linux/jiffies.h:20:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> include/linux/jiffies.h:22:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> include/linux/jiffies.h:24:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> include/linux/jiffies.h:26:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> include/linux/jiffies.h:28:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> include/linux/jiffies.h:30:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> include/linux/jiffies.h:33:3: error: You lose.
> include/linux/jiffies.h:225:5: error: bad constant expression
> include/asm/module.h:64:2: error: unknown processor family
> include/asm/processor.h:82:30: error: undefined identifier 'CONFIG_X86_L1_CACHE_SHIFT'
> include/asm/processor.h:82:30: error: bad constant expression type
> arch/i386/kernel/i8253.c:120:16: error: Expected ; at end of declaration
> arch/i386/kernel/i8253.c:120:16: error: got pit_read
> arch/i386/kernel/i8253.c:128:2: error: Trying to use reserved word 'do' as identifier
> arch/i386/kernel/i8253.c:128:2: error: Expected ; at end of declaration
> arch/i386/kernel/i8253.c:128:2: error: got {
> [loads of similar messages omitted ...]
> arch/i386/kernel/i8253.c:195:2: error: undefined identifier 'clocksource_pit'
> arch/i386/kernel/i8253.c:196:9: error: undefined identifier 'clocksource_register'
> arch/i386/kernel/i8253.c:41:7: error: Expected constant expression in case statement
> arch/i386/kernel/i8253.c:50:7: error: Expected constant expression in case statement

Me too. It's due to the linux-kernel-markers patches. Mathieu, can you
take a look please?

Subject: Re: 2.6.20-mm1


On Thursday 15 February 2007 14:14, Andrew Morton wrote:

> - The IDE tree got dropped due to various linkage problems

Doh, I guess this is what one gets for not testing modular
IDE driver support properly. :(

All linkage problems should be fixed now, sorry for that.

Bart

2007-02-15 22:46:59

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: sparse chokes on arch/i386/kernel/i8253.c (was: 2.6.20-mm1)

* Andrew Morton ([email protected]) wrote:
> On Thu, 15 Feb 2007 17:01:27 +0100
> Tilman Schmidt <[email protected]> wrote:
>
> > Trying to build 2.6.20-mm1 on i386 with C=1, sparse 0.2 chokes
> > on arch/i386/kernel/i8253.c:
> >
> > CHECK arch/i386/kernel/i8253.c
> > linux/marker.h: No such file or directory
> > include/linux/jiffies.h:18:5: warning: undefined preprocessor identifier 'CONFIG_HZ'
> > include/linux/jiffies.h:20:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> > include/linux/jiffies.h:22:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> > include/linux/jiffies.h:24:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> > include/linux/jiffies.h:26:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> > include/linux/jiffies.h:28:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> > include/linux/jiffies.h:30:7: warning: undefined preprocessor identifier 'CONFIG_HZ'
> > include/linux/jiffies.h:33:3: error: You lose.
> > include/linux/jiffies.h:225:5: error: bad constant expression
> > include/asm/module.h:64:2: error: unknown processor family
> > include/asm/processor.h:82:30: error: undefined identifier 'CONFIG_X86_L1_CACHE_SHIFT'
> > include/asm/processor.h:82:30: error: bad constant expression type
> > arch/i386/kernel/i8253.c:120:16: error: Expected ; at end of declaration
> > arch/i386/kernel/i8253.c:120:16: error: got pit_read
> > arch/i386/kernel/i8253.c:128:2: error: Trying to use reserved word 'do' as identifier
> > arch/i386/kernel/i8253.c:128:2: error: Expected ; at end of declaration
> > arch/i386/kernel/i8253.c:128:2: error: got {
> > [loads of similar messages omitted ...]
> > arch/i386/kernel/i8253.c:195:2: error: undefined identifier 'clocksource_pit'
> > arch/i386/kernel/i8253.c:196:9: error: undefined identifier 'clocksource_register'
> > arch/i386/kernel/i8253.c:41:7: error: Expected constant expression in case statement
> > arch/i386/kernel/i8253.c:50:7: error: Expected constant expression in case statement
>
> Me too. It's due to the linux-kernel-markers patches. Mathieu, can you
> take a look please?

I will give a deeper look in sparse, but I should say up front that I
add this to the root build tree Makefile :

LINUXINCLUDE := -Iinclude \
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
-include include/linux/autoconf.h \
-include linux/marker.h

I guess sparse is maybe not using this Makefile or variable ?

--
Mathieu Desnoyers
Computer Engineering Ph.D. Candidate, ?cole Polytechnique de Montr?al
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-02-15 23:24:56

by Michal Piotrowski

[permalink] [raw]
Subject: Re: 2.6.20-mm1

Andrew Morton napisał(a):
> On Thu, 15 Feb 2007 15:37:20 +0100
> Michal Piotrowski <[email protected]> wrote:
>
>> Andrew Morton napisa__(a):
>>> Temporarily at
>>>
>>> http://userweb.kernel.org/~akpm/2.6.20-mm1/
>>>
>>> Will appear later at
>>>
>>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20/2.6.20-mm1/
>>>
>>>
>> BUG: sleeping function called from invalid context at /mnt/md0/devel/linux-mm/mm/slab.c:3043
>> in_atomic():1, irqs_disabled():0
>> 1 lock held by artsd/3819:
>> #0: (&new->lock){--..}, at: [<c01d5b7c>] ipc_lock+0x35/0x4f
>> [<c0105312>] show_trace_log_lvl+0x1a/0x2f
>> [<c0105a25>] show_trace+0x12/0x14
>> [<c0105ae7>] dump_stack+0x16/0x18
>> [<c011db4a>] __might_sleep+0xc9/0xcf
>> [<c017c37a>] kmem_cache_zalloc+0x28/0xe5
>> [<c01d8c7d>] do_shmat+0x111/0x372
>> [<c0109151>] sys_ipc+0x148/0x1b5
>> [<c010432c>] syscall_call+0x7/0xb
>
> That's shm-make-sysv-ipc-shared-memory-use-stacked-files.patch, brought to
> us by Eric-who-hasnt-read-Documentation/SubmitChecklist.
>
> Like this, I guess:
>
> diff -puN ipc/shm.c~shm-make-sysv-ipc-shared-memory-use-stacked-files-fix ipc/shm.c

I might be drunk...

This patch still doesn't solve the problem.

BUG: sleeping function called from invalid context at /mnt/md0/devel/linux-mm/mm/slab.c:3043
in_atomic():1, irqs_disabled():0
1 lock held by Xorg/2885:
#0: (&new->lock){--..}, at: [<c01d5b7c>] ipc_lock+0x35/0x4f
[<c0105312>] show_trace_log_lvl+0x1a/0x2f
[<c0105a25>] show_trace+0x12/0x14
[<c0105ae7>] dump_stack+0x16/0x18
[<c011db4a>] __might_sleep+0xc9/0xcf
[<c017c45f>] kmem_cache_alloc+0x28/0xbf
[<c01814c3>] get_empty_filp+0x6a/0x173
[<c01d8ca2>] do_shmat+0x136/0x390
[<c0109151>] sys_ipc+0x148/0x1b5
[<c010432c>] syscall_call+0x7/0xb
=======================
BUG: MAX_LOCK_DEPTH too low!
turning off the locking correctness validator.
do_IRQ: stack overflow: -52
[<c0105312>] show_trace_log_lvl+0x1a/0x2f
[<c0105a25>] show_trace+0x12/0x14
[<c0105ae7>] dump_stack+0x16/0x18
[<c0106cc0>] do_IRQ+0x95/0xc1
BUG: unable to handle kernel paging request at virtual address 0e200034
printing eip:
c01052e2
*pde = 00000000
Oops: 0000 [#1]
PREEMPT SMP
last sysfs file: /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/vendor
Modules linked in: ipt_MASQUERADE iptable_nat nf_nat nfsd exportfs lockd nfs_acl autofs4 sunrpc af_packet nf_conntrack_netbios_ns ipt_REJECT nf_conntrack_ipv4 xt_state nf_conntrack nfnetlink xt_tcpudp iptable_filter ip_tables x_tables ipv6 binfmt_misc thermal processor fan container nvram snd_intel8x0 snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss evdev snd_mixer_oss snd_pcm snd_timer skge snd 8139too intel_agp sk98lin agpgart soundcore mii i2c_i801 snd_page_alloc ide_cd cdrom rtc unix
CPU: 0
EIP: 0060:[<c01052e2>] Not tainted VLI
EFLAGS: 00013046 (2.6.20-mm1 #16)
EIP is at dump_trace+0x88/0x9e
eax: 00000000 ebx: f412c01c ecx: c0429344 edx: c03cf8fa
BUG: unable to handle kernel paging request at virtual address 8d17ca6c
printing eip:
c011d927
*pde = 00000000
esi: 0e200000 edi: c03daed2 ebp: f412bfd0 esp: f412bfc0
ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
Process Xorg (pid: 2885, ti=f412a000 task=f4a58aa0 task.ti=f412c000)
Stack: c7422ac0 c03daed2 00000011 00000000 f412bfe4 c0105312 c0429344 c03daed2
00000004 f412bff0 c0105a25 c03daed2 f412bffc c0105ae7 f412c008 f412c01c
Call Trace:
[<c0105312>] show_trace_log_lvl+0x1a/0x2f
[<c01053c4>] show_stack_log_lvl+0x9d/0xac
[<c01055c0>] show_registers+0x1ed/0x34c
[<c010583c>] die+0x11d/0x234
[<c011b8d1>] do_page_fault+0x47c/0x55b
[<c033aaac>] error_code+0x7c/0x84
[<c0105312>] show_trace_log_lvl+0x1a/0x2f
[<c0105a25>] show_trace+0x12/0x14
[<c0105ae7>] dump_stack+0x16/0x18
[<c0106cc0>] do_IRQ+0x95/0xc1
BUG: unable to handle kernel paging request at virtual address 0e200034
printing eip:
c01052e2
*pde = 00000000
Oops: 0000 [#2]
PREEMPT SMP
last sysfs file: /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/vendor
Modules linked in: ipt_MASQUERADE iptable_nat nf_nat nfsd exportfs lockd nfs_acl autofs4 sunrpc af_packet nf_conntrack_netbios_ns ipt_REJECT nf_conntrack_ipv4 xt_state nf_conntrack nfnetlink xt_tcpudp iptable_filter ip_tables x_tables ipv6 binfmt_misc thermal processor fan container nvram snd_intel8x0 snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss evdev snd_mixer_oss snd_pcm snd_timer skge snd 8139too intel_agp sk98lin agpgart soundcore mii i2c_i801 snd_page_alloc ide_cd cdrom rtc unix
CPU: 0
EIP: 0060:[<c01052e2>] Not tainted VLI
EFLAGS: 00013046 (2.6.20-mm1 #16)
EIP is at dump_trace+0x88/0x9e
eax: 00000000 ebx: f412c01c ecx: c0429344 edx: c03cf8fa
esi: 0e200000 edi: c03cfa80 ebp: f412be5c esp: f412be4c
ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
Process Xorg (pid: 2885, ti=f412a000 task=f4a58aa0 task.ti=f412c000)
Stack: f412be64 c03cfa80 00000010 00000000 f412be70 c0105312 c0429344 c03cfa80
f412c003 f412be94 c01053c4 c03cfa80 c03cfa80 f412bf88 f412bfc0 f4a58c3c
0000002b 00000040 f412bef8 c01055c0 c03cfa80 00000010 f4a58c3c 00000b45
Call Trace:
[<c0105312>] show_trace_log_lvl+0x1a/0x2f
[<c01053c4>] show_stack_log_lvl+0x9d/0xac
[<c01055c0>] show_registers+0x1ed/0x34c
[<c010583c>] die+0x11d/0x234
[<c011b8d1>] do_page_fault+0x47c/0x55b
[<c033aaac>] error_code+0x7c/0x84
[<c0105312>] show_trace_log_lvl+0x1a/0x2f
[<c01053c4>] show_stack_log_lvl+0x9d/0xac
[<c01055c0>] show_registers+0x1ed/0x34c
[<c010583c>] die+0x11d/0x234
[<c011b8d1>] do_page_fault+0x47c/0x55b
[<c033aaac>] error_code+0x7c/0x84
[<c0105312>] show_trace_log_lvl+0x1a/0x2f
[<c0105a25>] show_trace+0x12/0x14
[<c0105ae7>] dump_stack+0x16/0x18
[<c0106cc0>] do_IRQ+0x95/0xc1
BUG: unable to handle kernel paging request at virtual address 0e200034
printing eip:
c01052e2
*pde = 00000000
Recursive die() failure, output suppressed
Oops: 0000 [#3]
Kernel panic - not syncing: Fatal exception in interrupt
PREEMPT SMP
last sysfs file: /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/vendor
Modules linked in: ipt_MASQUERADE iptable_nat nf_nat nfsd exportfs lockd nfs_acl autofs4 sunrpc af_packet nf_conntrack_netbios_ns ipt_REJECT nf_conntrack_ipv4 xt_state nf_conntrack nfnetlink xt_tcpudp iptable_filter ip_tables x_tables ipv6 binfmt_misc thermal processor fan container nvram snd_intel8x0 snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss evdev snd_mixer_oss snd_pcm snd_timer skge snd 8139too intel_agp sk98lin agpgart soundcore mii i2c_i801 snd_page_alloc ide_cd cdrom rtc unix
CPU: 1
EIP: 0060:[<c011d927>] Not tainted VLI
EFLAGS: 00010087 (2.6.20-mm1 #16)
EIP is at resched_task+0x19/0x7f
eax: 8d17ca6c ebx: f4a58aa0 ecx: f59ceae0 edx: 00003246
esi: f59ceae0 edi: 00000000 ebp: f5fedde8 esp: f5fedde0
ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
Process automount (pid: 2423, ti=f5fec000 task=f7e79550 task.ti=f5fec000)
Stack: c7429b20 f59ceae0 f5fede3c c011f23d 00000080 00000000 00000003 f59ceae0
00000000 00000001 00000001 c7421b20 00000080 00000000 00000069 06f71d80
2a57c378 00000020 00000003 00000086 f5ae1f40 f5ae1f18 00000000 f5fede44
Call Trace:
[<c0105312>] show_trace_log_lvl+0x1a/0x2f
[<c01053c4>] show_stack_log_lvl+0x9d/0xac
[<c01055c0>] show_registers+0x1ed/0x34c
[<c010583c>] die+0x11d/0x234
[<c011b8d1>] do_page_fault+0x47c/0x55b
[<c033aaac>] error_code+0x7c/0x84
[<c011f23d>] try_to_wake_up+0x3eb/0x418
[<c011f275>] default_wake_function+0xb/0xd
[<c011c5d0>] __wake_up_common+0x32/0x55
[<c011d3d9>] __wake_up+0x31/0x42
[<c0142243>] wake_futex+0x45/0x50
[<c0143dc0>] do_futex+0x88d/0xe93
[<c0144456>] sys_futex+0x90/0xa3
[<c010432c>] syscall_call+0x7/0xb
=======================
Code: 01 7b 08 11 4b 0c eb 05 01 3b 11 4b 04 5b 5e 5f 5d c3 55 89 e5 56 53 89 c3 b8 a0 fd 4a c0 8b 53 04 8b 52 10 03 04 95 00 66 47 c0 <8a> 00 31 d2 84 c0 0f 9f c2 b8 e0 cd 42 c0 e8 d2 39 0f 00 85 c0
EIP: [<c011d927>] resched_task+0x19/0x7f SS:ESP 0068:f5fedde0
BUG: at /mnt/md0/devel/linux-mm/drivers/char/vt.c:3392 do_unblank_screen()
[<c0105312>] show_trace_log_lvl+0x1a/0x2f
[<c0105a25>] show_trace+0x12/0x14
[<c0105ae7>] dump_stack+0x16/0x18
[<c025eb1d>] do_unblank_screen+0x73/0x138
[<c025ebec>] unblank_screen+0xa/0xc
[<c0203cac>] bust_spinlocks+0x18/0x2c
[<c0105893>] die+0x174/0x234
[<c011b8d1>] do_page_fault+0x47c/0x55b
[<c033aaac>] error_code+0x7c/0x84
[<c011f23d>] try_to_wake_up+0x3eb/0x418
[<c011f275>] default_wake_function+0xb/0xd
[<c011c5d0>] __wake_up_common+0x32/0x55
[<c011d3d9>] __wake_up+0x31/0x42
[<c0142243>] wake_futex+0x45/0x50
[<c0143dc0>] do_futex+0x88d/0xe93
[<c0144456>] sys_futex+0x90/0xa3
[<c010432c>] syscall_call+0x7/0xb
=======================
note: automount[2423] exited with preempt_count 4

0xc01052e2 is in dump_trace (/mnt/md0/devel/linux-mm/arch/i386/kernel/traps.c:191).
186 /* Should be after the line below, but somewhere
187 in early boot context comes out corrupted and we
188 can't reference it -AK */
189 if (ops->stack(data, "IRQ") < 0)
190 break;
191 stack = (unsigned long*)context->previous_esp;
192 if (!stack)
193 break;
194 touch_nmi_watchdog();
195 }

0xc011d927 is in resched_task (include2/asm/spinlock.h:33).
28 * (the type definitions are in asm/spinlock_types.h)
29 */
30
31 static inline int __raw_spin_is_locked(raw_spinlock_t *x)
32 {
33 return *(volatile signed char *)(&(x)->slock) <= 0;
34 }
35
36 static inline void __raw_spin_lock(raw_spinlock_t *lock)
37 {

Regards,
Michal

--
Michal K. K. Piotrowski
LTG - Linux Testers Group (PL)
(http://www.stardust.webpages.pl/ltg/)
LTG - Linux Testers Group (EN)
(http://www.stardust.webpages.pl/linux_testers_group_en/)

2007-02-15 23:31:49

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Thu, 15 Feb 2007 22:30:17 +0100
"J.A. Magall__n" <[email protected]> wrote:

> On Thu, 15 Feb 2007 05:14:08 -0800, Andrew Morton <[email protected]> wrote:
>
> >
> > Temporarily at
> >
> > http://userweb.kernel.org/~akpm/2.6.20-mm1/
> >
> > Will appear later at
> >
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20/2.6.20-mm1/
> >
> >
>
> Oops plague for me :(.
>
> A lot like this:
>
> ee1394 usblp evdev
> CPU: 1
> EIP: 0060:[<c0195f12>] Tainted: P VLI
> EFLAGS: 00010246 (2.6.20-jam01 #1)
> EIP is at sysfs_lookup+0x5b/0x20a
> eax: f6707118 ebx: f6b33e5c ecx: f6917d38 edx: 00000004
> esi: 00000000 edi: f670717c ebp: f6b33e24 esp: f6997db4
> ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
> Process udevd (pid: 3899, ti=f6996000 task=f7e34540 task.ti=f6996000)
> Stack: f66e1800 f6707118 c016da12 f66e1800 f6707118 c02f75c0 f6707118 f6997f04
> f6997e38 c0164238 f6997e44 c210d8c0 f6b39340 f6b393b4 f7a7d025 f6997e38
> 27692f8b f6997f04 c0165a6a f7a7d01d 00000000 000200d2 c037ddac 00000286
> Call Trace:
> [<c016da12>] d_alloc+0x140/0x198
> [<c0164238>] do_lookup+0x128/0x165
> [<c0165a6a>] __link_path_walk+0x7e2/0xc9b
> [<c0165f68>] link_path_walk+0x45/0xbf
> [<c01661b6>] do_path_lookup+0x88/0x1cc
> [<c0165125>] getname+0x90/0xad
> [<c0166aa4>] __user_walk_fd+0x2f/0x47
> [<c01607c4>] vfs_lstat_fd+0x16/0x3d
> [<c0160830>] sys_lstat64+0xf/0x23
> [<c0111904>] do_page_fault+0x326/0x5e2
> [<c01115de>] do_page_fault+0x0/0x5e2
> [<c010288e>] sysenter_past_esp+0x5f/0x85
> [<c02f0000>] wait_for_completion_interruptible+0xdf/0xee


Oh dear. Any one of about 700 developers might have caused this.

bisection-search will find this. Can you upload the .config please?

>
> Full dmesg at:
>
> http://belly.cps.unizar.es/~magallon/oops/oops.txt
>
> And another one on reboot. Picture here:
>
> http://belly.cps.unizar.es/~magallon/oops/IMG_1448.JPG
>
> (sorry, no tripod available ;), just the back of my soft chair).
>
> And yes, before nobody says anything, nvidia.ko is loaded.
> If you really want, I can try without it.

It would be appreciated if you could do that, thanks.

2007-02-15 23:39:27

by J.A. Magallón

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Thu, 15 Feb 2007 15:31:42 -0800, Andrew Morton <[email protected]> wrote:

> On Thu, 15 Feb 2007 22:30:17 +0100
> "J.A. Magall__n" <[email protected]> wrote:
>
> > On Thu, 15 Feb 2007 05:14:08 -0800, Andrew Morton <[email protected]> wrote:
> >
> > >
> > > Temporarily at
> > >
> > > http://userweb.kernel.org/~akpm/2.6.20-mm1/
> > >
> > > Will appear later at
> > >
> > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20/2.6.20-mm1/
> > >
> > >
> >
> > Oops plague for me :(.
> >
> > A lot like this:
> >
> > ee1394 usblp evdev
> > CPU: 1
> > EIP: 0060:[<c0195f12>] Tainted: P VLI
> > EFLAGS: 00010246 (2.6.20-jam01 #1)
> > EIP is at sysfs_lookup+0x5b/0x20a
> > eax: f6707118 ebx: f6b33e5c ecx: f6917d38 edx: 00000004
> > esi: 00000000 edi: f670717c ebp: f6b33e24 esp: f6997db4
> > ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
> > Process udevd (pid: 3899, ti=f6996000 task=f7e34540 task.ti=f6996000)
> > Stack: f66e1800 f6707118 c016da12 f66e1800 f6707118 c02f75c0 f6707118 f6997f04
> > f6997e38 c0164238 f6997e44 c210d8c0 f6b39340 f6b393b4 f7a7d025 f6997e38
> > 27692f8b f6997f04 c0165a6a f7a7d01d 00000000 000200d2 c037ddac 00000286
> > Call Trace:
> > [<c016da12>] d_alloc+0x140/0x198
> > [<c0164238>] do_lookup+0x128/0x165
> > [<c0165a6a>] __link_path_walk+0x7e2/0xc9b
> > [<c0165f68>] link_path_walk+0x45/0xbf
> > [<c01661b6>] do_path_lookup+0x88/0x1cc
> > [<c0165125>] getname+0x90/0xad
> > [<c0166aa4>] __user_walk_fd+0x2f/0x47
> > [<c01607c4>] vfs_lstat_fd+0x16/0x3d
> > [<c0160830>] sys_lstat64+0xf/0x23
> > [<c0111904>] do_page_fault+0x326/0x5e2
> > [<c01115de>] do_page_fault+0x0/0x5e2
> > [<c010288e>] sysenter_past_esp+0x5f/0x85
> > [<c02f0000>] wait_for_completion_interruptible+0xdf/0xee
>
>
> Oh dear. Any one of about 700 developers might have caused this.
>
> bisection-search will find this. Can you upload the .config please?
>

Here it goes:

http://belly.cps.unizar.es/~magallon/oops/config-2.6.20-jam01

copied from previous and answered missing CONFIG_'s.
Just 2.6.20-m11 + 11-pci-iomap-regions posted in LKML + patch to make
HDIO_OBSOLETE_IDENTITY work on sata (also from LKML).

> >
> > Full dmesg at:
> >
> > http://belly.cps.unizar.es/~magallon/oops/oops.txt
> >
> > And another one on reboot. Picture here:
> >
> > http://belly.cps.unizar.es/~magallon/oops/IMG_1448.JPG
> >
> > (sorry, no tripod available ;), just the back of my soft chair).
> >
> > And yes, before nobody says anything, nvidia.ko is loaded.
> > If you really want, I can try without it.
>
> It would be appreciated if you could do that, thanks.

Probably tomorrow.

--
J.A. Magallon <jamagallon()ono!com> \ Software is like sex:
\ It's better when it's free
Mandriva Linux release 2007.1 (Cooker) for i586
Linux 2.6.19-jam07 (gcc 4.1.2 20070115 (prerelease) (4.1.2-0.20070115.1mdv2007.1)) #2 SMP PREEMPT

2007-02-15 23:47:38

by Andrew Morton

[permalink] [raw]
Subject: Re: sparse chokes on arch/i386/kernel/i8253.c (was: 2.6.20-mm1)

On Thu, 15 Feb 2007 17:46:56 -0500
Mathieu Desnoyers <[email protected]> wrote:

> > Me too. It's due to the linux-kernel-markers patches. Mathieu, can you
> > take a look please?
>
> I will give a deeper look in sparse, but I should say up front that I
> add this to the root build tree Makefile :
>
> LINUXINCLUDE := -Iinclude \
> $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
> -include include/linux/autoconf.h \
> -include linux/marker.h
>
> I guess sparse is maybe not using this Makefile or variable ?

ow, that's going to hurt - this stuff is complex and fragile.

For what reason was that change made?

Pleeze, tricky things like this should be changelogged - we shouldn't need
to ask. I missed it.


2007-02-15 23:50:41

by Andrew Morton

[permalink] [raw]
Subject: Re: [-mm patch] pci_iomap_regions error handling fix (was Re: 2.6.20-mm1)

On Fri, 16 Feb 2007 16:41:59 +0000
Frederik Deweerdt <[email protected]> wrote:

> On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
> >
> > Temporarily at
> >
> > http://userweb.kernel.org/~akpm/2.6.20-mm1/
> >
> Hi,
>
> It appears that the pcim_iomap_regions() function doesn't get the error
> handling right. It BUGs early at boot with a backtrace along the lines of:
>
> ahci_init
> pci_register_driver
> driver_register
> [...]
> ahci_init_one
> pcim_iomap_region
> pcim_iounmap
>
> The following patch allows me to boot. Only the if(mask..) continue;
> part fixes the problem actually, the gotos where changed so that we
> don't try to unmap something we couldn't map anyway.
>
> Regards,
> Frederik
>
> Signed-off-by: Frederik Deweerdt <[email protected]>
>
>
> diff --git a/lib/devres.c b/lib/devres.c
> index 2a668dd..eb38849 100644
> --- a/lib/devres.c
> +++ b/lib/devres.c
> @@ -274,21 +274,21 @@ int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name)
>
> rc = pci_request_region(pdev, i, name);
> if (rc)
> - goto err_region;
> + goto err_inval;
>
> rc = -ENOMEM;
> if (!pcim_iomap(pdev, i, 0))
> - goto err_iomap;
> + goto err_region;
> }
>
> return 0;
>
> - err_iomap:
> - pcim_iounmap(pdev, iomap[i]);
> err_region:
> pci_release_region(pdev, i);
> err_inval:
> while (--i >= 0) {
> + if (!(mask & (1 << i)))
> + continue;
> pcim_iounmap(pdev, iomap[i]);
> pci_release_region(pdev, i);
> }

yep, the fix looks good and is needed in mainline, thanks.

2007-02-15 23:56:08

by Jiri Slaby

[permalink] [raw]
Subject: [PATCH 1/1] unify queue_delayed_work and queue_delayed_work_on fix

Andrew Morton wrote:
> Temporarily at
>
> http://userweb.kernel.org/~akpm/2.6.20-mm1/
[...]
> +unify-queue_delayed_work-and-queue_delayed_work_on.patch

I'm getting oops in delayed_work_timer_fn, since cwq->wq is NULL and accessed
there. The patch below fixes the problem for me.

--

unify queue_delayed_work and queue_delayed_work_on fix

Since cwq->wq is unset for other than singlethread_cpu when singlethread
workqueue was created, an oops occurs during bootup. Fix it by setting
correct private value for workqueue.

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

---
commit 7bc281be5811f9b1dd01c25eaf492f4765737fd0
tree 7795008066bb89e7489384cde95e63260602d5af
parent 61c2024a2dd044e32747542cfbf4b22251df3bc2
author Jiri Slaby <[email protected]> Fri, 16 Feb 2007 00:49:15 +0100
committer Jiri Slaby <[email protected]> Fri, 16 Feb 2007 00:49:15 +0100

kernel/workqueue.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index f2089bf..af5e597 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -210,7 +210,8 @@ int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,

/* This stores cwq for the moment, for the timer_fn */
set_wq_data(work,
- per_cpu_ptr(wq->cpu_wq, raw_smp_processor_id()));
+ per_cpu_ptr(wq->cpu_wq, wq->singlethread ?
+ singlethread_cpu : raw_smp_processor_id()));
timer->expires = jiffies + delay;
timer->data = (unsigned long)dwork;
timer->function = delayed_work_timer_fn;

2007-02-16 00:05:37

by Eric W. Biederman

[permalink] [raw]
Subject: [PATCH] shm: Fix the locking and cleanup error handling in do_shmat.


When enhancing do_shmat I forgot to take into account that shm_lock
is a spinlock, and was allocating memory with the lock held.

This patch fixes that by grabbing a reference to the dentry and
mounts of shm_file before we drop the shm_lock and then performing
the memory allocations.

This is also a bit of a general scrub on the error handling.
Everything is now forced through the single return statement
for clarity, and the handling of the return address now uses
fewer casts.

Signed-off-by: Eric W. Biederman <[email protected]>
---
ipc/shm.c | 56 ++++++++++++++++++++++++++++++++------------------------
1 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/ipc/shm.c b/ipc/shm.c
index e0b6544..26b935b 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -815,15 +815,16 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
unsigned long flags;
unsigned long prot;
int acc_mode;
- void *user_addr;
+ unsigned long user_addr;
struct ipc_namespace *ns;
struct shm_file_data *sfd;
+ struct path path;
mode_t f_mode;

- if (shmid < 0) {
- err = -EINVAL;
+ err = -EINVAL;
+ if (shmid < 0)
goto out;
- } else if ((addr = (ulong)shmaddr)) {
+ else if ((addr = (ulong)shmaddr)) {
if (addr & (SHMLBA-1)) {
if (shmflg & SHM_RND)
addr &= ~(SHMLBA-1); /* round down */
@@ -831,12 +832,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
#ifndef __ARCH_FORCE_SHMLBA
if (addr & ~PAGE_MASK)
#endif
- return -EINVAL;
+ goto out;
}
flags = MAP_SHARED | MAP_FIXED;
} else {
if ((shmflg & SHM_REMAP))
- return -EINVAL;
+ goto out;

flags = MAP_SHARED;
}
@@ -860,7 +861,6 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
* additional creator id...
*/
ns = current->nsproxy->ipc_ns;
- err = -EINVAL;
shp = shm_lock(ns, shmid);
if(shp == NULL)
goto out;
@@ -877,19 +877,25 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
if (err)
goto out_unlock;

+ path.dentry = dget(shp->shm_file->f_path.dentry);
+ path.mnt = mntget(shp->shm_file->f_path.mnt);
+ shp->shm_nattch++;
+ size = i_size_read(path.dentry->d_inode);
+ shm_unlock(shp);
+
err = -ENOMEM;
sfd = kzalloc(sizeof(*sfd), GFP_KERNEL);
if (!sfd)
- goto out_unlock;
+ goto out_put_path;

+ err = -ENOMEM;
file = get_empty_filp();
if (!file)
goto out_free;

file->f_op = &shm_file_operations;
file->private_data = sfd;
- file->f_path.dentry = dget(shp->shm_file->f_path.dentry);
- file->f_path.mnt = mntget(shp->shm_file->f_path.mnt);
+ file->f_path = path;
file->f_mapping = shp->shm_file->f_mapping;
file->f_mode = f_mode;
sfd->id = shp->id;
@@ -897,13 +903,9 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
sfd->file = shp->shm_file;
sfd->vm_ops = NULL;

- size = i_size_read(file->f_path.dentry->d_inode);
- shp->shm_nattch++;
- shm_unlock(shp);
-
down_write(&current->mm->mmap_sem);
if (addr && !(shmflg & SHM_REMAP)) {
- user_addr = ERR_PTR(-EINVAL);
+ err = -EINVAL;
if (find_vma_intersection(current->mm, addr, addr + size))
goto invalid;
/*
@@ -915,13 +917,17 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
goto invalid;
}

- user_addr = (void*) do_mmap (file, addr, size, prot, flags, 0);
-
+ user_addr = do_mmap (file, addr, size, prot, flags, 0);
+ *raddr = user_addr;
+ err = 0;
+ if (IS_ERR_VALUE(user_addr))
+ err = (long)user_addr;
invalid:
up_write(&current->mm->mmap_sem);
-
+
fput(file);

+out_nattch:
mutex_lock(&shm_ids(ns).mutex);
shp = shm_lock(ns, shmid);
BUG_ON(!shp);
@@ -933,17 +939,19 @@ invalid:
shm_unlock(shp);
mutex_unlock(&shm_ids(ns).mutex);

- *raddr = (unsigned long) user_addr;
- err = 0;
- if (IS_ERR(user_addr))
- err = PTR_ERR(user_addr);
out:
return err;
-out_free:
- kfree(sfd);
+
out_unlock:
shm_unlock(shp);
goto out;
+
+out_free:
+ kfree(sfd);
+out_put_path:
+ dput(path.dentry);
+ mntput(path.mnt);
+ goto out_nattch;

}

--
1.4.4.1.g278f

2007-02-16 00:10:21

by Jiri Slaby

[permalink] [raw]
Subject: Re: [PATCH 1/1] unify queue_delayed_work and queue_delayed_work_on fix

Jiri Slaby napsal(a):
[...]
> unify queue_delayed_work and queue_delayed_work_on fix

Oh sorry, the name should be
make queue_delayed_work() friendly to flush_fork() fix

> Since cwq->wq is unset for other than singlethread_cpu when singlethread
> workqueue was created, an oops occurs during bootup. Fix it by setting
> correct private value for workqueue.
>
> Signed-off-by: Jiri Slaby <[email protected]>
>
> ---
> commit 7bc281be5811f9b1dd01c25eaf492f4765737fd0
> tree 7795008066bb89e7489384cde95e63260602d5af
> parent 61c2024a2dd044e32747542cfbf4b22251df3bc2
> author Jiri Slaby <[email protected]> Fri, 16 Feb 2007 00:49:15 +0100
> committer Jiri Slaby <[email protected]> Fri, 16 Feb 2007 00:49:15 +0100
>
> kernel/workqueue.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/kernel/workqueue.c b/kernel/workqueue.c
> index f2089bf..af5e597 100644
> --- a/kernel/workqueue.c
> +++ b/kernel/workqueue.c
> @@ -210,7 +210,8 @@ int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,
>
> /* This stores cwq for the moment, for the timer_fn */
> set_wq_data(work,
> - per_cpu_ptr(wq->cpu_wq, raw_smp_processor_id()));
> + per_cpu_ptr(wq->cpu_wq, wq->singlethread ?
> + singlethread_cpu : raw_smp_processor_id()));
> timer->expires = jiffies + delay;
> timer->data = (unsigned long)dwork;
> timer->function = delayed_work_timer_fn;
>

regards,
--
http://www.fi.muni.cz/~xslaby/ Jiri Slaby
faculty of informatics, masaryk university, brno, cz
e-mail: jirislaby gmail com, gpg pubkey fingerprint:
B674 9967 0407 CE62 ACC8 22A0 32CC 55C3 39D4 7A7E

2007-02-16 00:16:54

by Michal Piotrowski

[permalink] [raw]
Subject: Re: [PATCH] shm: Fix the locking and cleanup error handling in do_shmat.

Eric W. Biederman napisał(a):
> When enhancing do_shmat I forgot to take into account that shm_lock
> is a spinlock, and was allocating memory with the lock held.
>
> This patch fixes that by grabbing a reference to the dentry and
> mounts of shm_file before we drop the shm_lock and then performing
> the memory allocations.
>
> This is also a bit of a general scrub on the error handling.
> Everything is now forced through the single return statement
> for clarity, and the handling of the return address now uses
> fewer casts.
>
> Signed-off-by: Eric W. Biederman <[email protected]>
> ---
> ipc/shm.c | 56 ++++++++++++++++++++++++++++++++------------------------
> 1 files changed, 32 insertions(+), 24 deletions(-)
>
> diff --git a/ipc/shm.c b/ipc/shm.c
> index e0b6544..26b935b 100644
> --- a/ipc/shm.c
> +++ b/ipc/shm.c
> @@ -815,15 +815,16 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> unsigned long flags;
> unsigned long prot;
> int acc_mode;
> - void *user_addr;
> + unsigned long user_addr;
> struct ipc_namespace *ns;
> struct shm_file_data *sfd;
> + struct path path;
> mode_t f_mode;
>
> - if (shmid < 0) {
> - err = -EINVAL;
> + err = -EINVAL;
> + if (shmid < 0)
> goto out;
> - } else if ((addr = (ulong)shmaddr)) {
> + else if ((addr = (ulong)shmaddr)) {
> if (addr & (SHMLBA-1)) {
> if (shmflg & SHM_RND)
> addr &= ~(SHMLBA-1); /* round down */
> @@ -831,12 +832,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> #ifndef __ARCH_FORCE_SHMLBA
> if (addr & ~PAGE_MASK)
> #endif
> - return -EINVAL;
> + goto out;
> }
> flags = MAP_SHARED | MAP_FIXED;
> } else {
> if ((shmflg & SHM_REMAP))
> - return -EINVAL;
> + goto out;
>
> flags = MAP_SHARED;
> }
> @@ -860,7 +861,6 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> * additional creator id...
> */
> ns = current->nsproxy->ipc_ns;
> - err = -EINVAL;
> shp = shm_lock(ns, shmid);
> if(shp == NULL)
> goto out;
> @@ -877,19 +877,25 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> if (err)
> goto out_unlock;
>
> + path.dentry = dget(shp->shm_file->f_path.dentry);
> + path.mnt = mntget(shp->shm_file->f_path.mnt);
> + shp->shm_nattch++;
> + size = i_size_read(path.dentry->d_inode);
> + shm_unlock(shp);
> +
> err = -ENOMEM;
> sfd = kzalloc(sizeof(*sfd), GFP_KERNEL);
> if (!sfd)
> - goto out_unlock;
> + goto out_put_path;
>
> + err = -ENOMEM;
> file = get_empty_filp();
> if (!file)
> goto out_free;
>
> file->f_op = &shm_file_operations;
> file->private_data = sfd;
> - file->f_path.dentry = dget(shp->shm_file->f_path.dentry);
> - file->f_path.mnt = mntget(shp->shm_file->f_path.mnt);
> + file->f_path = path;
> file->f_mapping = shp->shm_file->f_mapping;
> file->f_mode = f_mode;
> sfd->id = shp->id;
> @@ -897,13 +903,9 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> sfd->file = shp->shm_file;
> sfd->vm_ops = NULL;
>
> - size = i_size_read(file->f_path.dentry->d_inode);
> - shp->shm_nattch++;
> - shm_unlock(shp);
> -
> down_write(&current->mm->mmap_sem);
> if (addr && !(shmflg & SHM_REMAP)) {
> - user_addr = ERR_PTR(-EINVAL);
> + err = -EINVAL;
> if (find_vma_intersection(current->mm, addr, addr + size))
> goto invalid;
> /*
> @@ -915,13 +917,17 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> goto invalid;
> }
>
> - user_addr = (void*) do_mmap (file, addr, size, prot, flags, 0);
> -
> + user_addr = do_mmap (file, addr, size, prot, flags, 0);
> + *raddr = user_addr;
> + err = 0;
> + if (IS_ERR_VALUE(user_addr))
> + err = (long)user_addr;
> invalid:
> up_write(&current->mm->mmap_sem);
> -
> +
> fput(file);
>
> +out_nattch:
> mutex_lock(&shm_ids(ns).mutex);
> shp = shm_lock(ns, shmid);
> BUG_ON(!shp);
> @@ -933,17 +939,19 @@ invalid:

^^^^

???


> shm_unlock(shp);
> mutex_unlock(&shm_ids(ns).mutex);
>
> - *raddr = (unsigned long) user_addr;
> - err = 0;
> - if (IS_ERR(user_addr))
> - err = PTR_ERR(user_addr);
> out:
> return err;
> -out_free:
> - kfree(sfd);
> +
> out_unlock:
> shm_unlock(shp);
> goto out;
> +
> +out_free:
> + kfree(sfd);
> +out_put_path:
> + dput(path.dentry);
> + mntput(path.mnt);
> + goto out_nattch;
>

^^^^ tabs

> }
>

Regards,
Michal

--
Michal K. K. Piotrowski
LTG - Linux Testers Group (PL)
(http://www.stardust.webpages.pl/ltg/)
LTG - Linux Testers Group (EN)
(http://www.stardust.webpages.pl/linux_testers_group_en/)

2007-02-16 00:17:09

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Fri, 16 Feb 2007 00:24:35 +0100
Michal Piotrowski <[email protected]> wrote:

> Andrew Morton napisa__(a):
> > On Thu, 15 Feb 2007 15:37:20 +0100
> > Michal Piotrowski <[email protected]> wrote:
> >
> >> Andrew Morton napisa__(a):
> >>> Temporarily at
> >>>
> >>> http://userweb.kernel.org/~akpm/2.6.20-mm1/
> >>>
> >>> Will appear later at
> >>>
> >>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20/2.6.20-mm1/
> >>>
> >>>
> >> BUG: sleeping function called from invalid context at /mnt/md0/devel/linux-mm/mm/slab.c:3043
> >> in_atomic():1, irqs_disabled():0
> >> 1 lock held by artsd/3819:
> >> #0: (&new->lock){--..}, at: [<c01d5b7c>] ipc_lock+0x35/0x4f
> >> [<c0105312>] show_trace_log_lvl+0x1a/0x2f
> >> [<c0105a25>] show_trace+0x12/0x14
> >> [<c0105ae7>] dump_stack+0x16/0x18
> >> [<c011db4a>] __might_sleep+0xc9/0xcf
> >> [<c017c37a>] kmem_cache_zalloc+0x28/0xe5
> >> [<c01d8c7d>] do_shmat+0x111/0x372
> >> [<c0109151>] sys_ipc+0x148/0x1b5
> >> [<c010432c>] syscall_call+0x7/0xb
> >
> > That's shm-make-sysv-ipc-shared-memory-use-stacked-files.patch, brought to
> > us by Eric-who-hasnt-read-Documentation/SubmitChecklist.
> >
> > Like this, I guess:
> >
> > diff -puN ipc/shm.c~shm-make-sysv-ipc-shared-memory-use-stacked-files-fix ipc/shm.c
>
> I might be drunk...
>
> This patch still doesn't solve the problem.
>
> BUG: sleeping function called from invalid context at /mnt/md0/devel/linux-mm/mm/slab.c:3043
> in_atomic():1, irqs_disabled():0
> 1 lock held by Xorg/2885:
> #0: (&new->lock){--..}, at: [<c01d5b7c>] ipc_lock+0x35/0x4f
> [<c0105312>] show_trace_log_lvl+0x1a/0x2f
> [<c0105a25>] show_trace+0x12/0x14
> [<c0105ae7>] dump_stack+0x16/0x18
> [<c011db4a>] __might_sleep+0xc9/0xcf
> [<c017c45f>] kmem_cache_alloc+0x28/0xbf
> [<c01814c3>] get_empty_filp+0x6a/0x173
> [<c01d8ca2>] do_shmat+0x136/0x390
> [<c0109151>] sys_ipc+0x148/0x1b5
> [<c010432c>] syscall_call+0x7/0xb

yes, that's the other one, which Eric will be looking at.

> =======================
> BUG: MAX_LOCK_DEPTH too low!
> turning off the locking correctness validator.
> do_IRQ: stack overflow: -52
> [<c0105312>] show_trace_log_lvl+0x1a/0x2f
> [<c0105a25>] show_trace+0x12/0x14
> [<c0105ae7>] dump_stack+0x16/0x18
> [<c0106cc0>] do_IRQ+0x95/0xc1
> BUG: unable to handle kernel paging request at virtual address 0e200034
> printing eip:
> c01052e2
> *pde = 00000000
> Oops: 0000 [#1]
> PREEMPT SMP
> last sysfs file: /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/vendor
> Modules linked in: ipt_MASQUERADE iptable_nat nf_nat nfsd exportfs lockd nfs_acl autofs4 sunrpc af_packet nf_conntrack_netbios_ns ipt_REJECT nf_conntrack_ipv4 xt_state nf_conntrack nfnetlink xt_tcpudp iptable_filter ip_tables x_tables ipv6 binfmt_misc thermal processor fan container nvram snd_intel8x0 snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss evdev snd_mixer_oss snd_pcm snd_timer skge snd 8139too intel_agp sk98lin agpgart soundcore mii i2c_i801 snd_page_alloc ide_cd cdrom rtc unix
> CPU: 0
> EIP: 0060:[<c01052e2>] Not tainted VLI
> EFLAGS: 00013046 (2.6.20-mm1 #16)
> EIP is at dump_trace+0x88/0x9e
> eax: 00000000 ebx: f412c01c ecx: c0429344 edx: c03cf8fa
> BUG: unable to handle kernel paging request at virtual address 8d17ca6c
> printing eip:
> c011d927
> *pde = 00000000
> esi: 0e200000 edi: c03daed2 ebp: f412bfd0 esp: f412bfc0
> ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
> Process Xorg (pid: 2885, ti=f412a000 task=f4a58aa0 task.ti=f412c000)
> Stack: c7422ac0 c03daed2 00000011 00000000 f412bfe4 c0105312 c0429344 c03daed2
> 00000004 f412bff0 c0105a25 c03daed2 f412bffc c0105ae7 f412c008 f412c01c
> Call Trace:
> [<c0105312>] show_trace_log_lvl+0x1a/0x2f
> [<c01053c4>] show_stack_log_lvl+0x9d/0xac
> [<c01055c0>] show_registers+0x1ed/0x34c
> [<c010583c>] die+0x11d/0x234
> [<c011b8d1>] do_page_fault+0x47c/0x55b
> [<c033aaac>] error_code+0x7c/0x84
> [<c0105312>] show_trace_log_lvl+0x1a/0x2f
> [<c0105a25>] show_trace+0x12/0x14
> [<c0105ae7>] dump_stack+0x16/0x18
> [<c0106cc0>] do_IRQ+0x95/0xc1
> BUG: unable to handle kernel paging request at virtual address 0e200034

ooh, we broke lockdep.

2007-02-16 00:22:03

by Michal Piotrowski

[permalink] [raw]
Subject: Re: [PATCH] shm: Fix the locking and cleanup error handling in do_shmat.

Eric W. Biederman napisał(a):
> When enhancing do_shmat I forgot to take into account that shm_lock
> is a spinlock, and was allocating memory with the lock held.
>
> This patch fixes that by grabbing a reference to the dentry and
> mounts of shm_file before we drop the shm_lock and then performing
> the memory allocations.
>
> This is also a bit of a general scrub on the error handling.
> Everything is now forced through the single return statement
> for clarity, and the handling of the return address now uses
> fewer casts.
>
> Signed-off-by: Eric W. Biederman <[email protected]>
> ---
> ipc/shm.c | 56 ++++++++++++++++++++++++++++++++------------------------
> 1 files changed, 32 insertions(+), 24 deletions(-)
>
> diff --git a/ipc/shm.c b/ipc/shm.c
> index e0b6544..26b935b 100644
> --- a/ipc/shm.c
> +++ b/ipc/shm.c
> @@ -815,15 +815,16 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> unsigned long flags;
> unsigned long prot;
> int acc_mode;
> - void *user_addr;
> + unsigned long user_addr;
> struct ipc_namespace *ns;
> struct shm_file_data *sfd;
> + struct path path;
> mode_t f_mode;
>
> - if (shmid < 0) {
> - err = -EINVAL;
> + err = -EINVAL;
> + if (shmid < 0)
> goto out;
> - } else if ((addr = (ulong)shmaddr)) {
> + else if ((addr = (ulong)shmaddr)) {
> if (addr & (SHMLBA-1)) {
> if (shmflg & SHM_RND)
> addr &= ~(SHMLBA-1); /* round down */
> @@ -831,12 +832,12 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> #ifndef __ARCH_FORCE_SHMLBA
> if (addr & ~PAGE_MASK)
> #endif
> - return -EINVAL;
> + goto out;
> }
> flags = MAP_SHARED | MAP_FIXED;
> } else {
> if ((shmflg & SHM_REMAP))
> - return -EINVAL;
> + goto out;
>
> flags = MAP_SHARED;
> }
> @@ -860,7 +861,6 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> * additional creator id...
> */
> ns = current->nsproxy->ipc_ns;
> - err = -EINVAL;
> shp = shm_lock(ns, shmid);
> if(shp == NULL)
> goto out;
> @@ -877,19 +877,25 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> if (err)
> goto out_unlock;
>
> + path.dentry = dget(shp->shm_file->f_path.dentry);
> + path.mnt = mntget(shp->shm_file->f_path.mnt);
> + shp->shm_nattch++;
> + size = i_size_read(path.dentry->d_inode);
> + shm_unlock(shp);
> +
> err = -ENOMEM;
> sfd = kzalloc(sizeof(*sfd), GFP_KERNEL);
> if (!sfd)
> - goto out_unlock;
> + goto out_put_path;

drivers/video/Kconfig:1606:warning: 'select' used by config symbol 'FB_PS3' refer to undefined symbol 'PS3_PS3AV'
/mnt/md0/devel/linux-mm/ipc/shm.c: In function 'do_shmat':
/mnt/md0/devel/linux-mm/ipc/shm.c:945: warning: passing argument 1 of 'IS_ERR' makes pointer from integer without a cast
/mnt/md0/devel/linux-mm/ipc/shm.c:946: warning: passing argument 1 of 'PTR_ERR' makes pointer from integer without a cast
/mnt/md0/devel/linux-mm/ipc/shm.c:931: warning: label 'out_nattch' defined but not used
/mnt/md0/devel/linux-mm/ipc/shm.c:890: error: label 'out_put_path' used but not defined
make[2]: *** [ipc/shm.o] Error 1
make[1]: *** [ipc] Error 2
make: *** [_all] Error 2


>
> + err = -ENOMEM;
> file = get_empty_filp();
> if (!file)
> goto out_free;
>
> file->f_op = &shm_file_operations;
> file->private_data = sfd;
> - file->f_path.dentry = dget(shp->shm_file->f_path.dentry);
> - file->f_path.mnt = mntget(shp->shm_file->f_path.mnt);
> + file->f_path = path;
> file->f_mapping = shp->shm_file->f_mapping;
> file->f_mode = f_mode;
> sfd->id = shp->id;
> @@ -897,13 +903,9 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> sfd->file = shp->shm_file;
> sfd->vm_ops = NULL;
>
> - size = i_size_read(file->f_path.dentry->d_inode);
> - shp->shm_nattch++;
> - shm_unlock(shp);
> -
> down_write(&current->mm->mmap_sem);
> if (addr && !(shmflg & SHM_REMAP)) {
> - user_addr = ERR_PTR(-EINVAL);
> + err = -EINVAL;
> if (find_vma_intersection(current->mm, addr, addr + size))
> goto invalid;
> /*
> @@ -915,13 +917,17 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
> goto invalid;
> }
>
> - user_addr = (void*) do_mmap (file, addr, size, prot, flags, 0);
> -
> + user_addr = do_mmap (file, addr, size, prot, flags, 0);
> + *raddr = user_addr;
> + err = 0;
> + if (IS_ERR_VALUE(user_addr))
> + err = (long)user_addr;
> invalid:
> up_write(&current->mm->mmap_sem);
> -
> +
> fput(file);
>
> +out_nattch:
> mutex_lock(&shm_ids(ns).mutex);
> shp = shm_lock(ns, shmid);
> BUG_ON(!shp);
> @@ -933,17 +939,19 @@ invalid:
> shm_unlock(shp);
> mutex_unlock(&shm_ids(ns).mutex);
>
> - *raddr = (unsigned long) user_addr;
> - err = 0;
> - if (IS_ERR(user_addr))
> - err = PTR_ERR(user_addr);
> out:
> return err;
> -out_free:
> - kfree(sfd);
> +
> out_unlock:
> shm_unlock(shp);
> goto out;
> +
> +out_free:
> + kfree(sfd);
> +out_put_path:
> + dput(path.dentry);
> + mntput(path.mnt);
> + goto out_nattch;
>
> }
>

2007-02-16 00:28:58

by Mathieu Desnoyers

[permalink] [raw]
Subject: [PATCH] sparse chokes on arch/i386/kernel/i8253.c

sparse chokes on arch/i386/kernel/i8253.c

Here is a marker fix that puts the correct -i include/linux/marker.h in
the top level Makefile so sparse works correctly. The tricky part is to
keep the kernel compiling correctly with a kernel build directory
different from the kernel source tree too.

The fix applies on top the the Linux Kernel Markers for 2.6.20.

Signed-off-by: Mathieu Desnoyers <[email protected]>

--- a/Makefile
+++ b/Makefile
@@ -309,7 +309,8 @@ AFLAGS_KERNEL =
LINUXINCLUDE := -Iinclude \
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
-include include/linux/autoconf.h \
- -include linux/marker.h
+ -include \
+ $(if $(KBUILD_SRC),$(srctree)/)include/linux/marker.h

CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
--
Mathieu Desnoyers
Computer Engineering Ph.D. Candidate, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-02-16 00:40:27

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] sparse chokes on arch/i386/kernel/i8253.c

On Thu, 15 Feb 2007 19:23:47 -0500
Mathieu Desnoyers <[email protected]> wrote:

> sparse chokes on arch/i386/kernel/i8253.c
>
> Here is a marker fix that puts the correct -i include/linux/marker.h in
> the top level Makefile so sparse works correctly. The tricky part is to
> keep the kernel compiling correctly with a kernel build directory
> different from the kernel source tree too.
>
> The fix applies on top the the Linux Kernel Markers for 2.6.20.
>
> Signed-off-by: Mathieu Desnoyers <[email protected]>
>
> --- a/Makefile
> +++ b/Makefile
> @@ -309,7 +309,8 @@ AFLAGS_KERNEL =
> LINUXINCLUDE := -Iinclude \
> $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
> -include include/linux/autoconf.h \
> - -include linux/marker.h
> + -include \
> + $(if $(KBUILD_SRC),$(srctree)/)include/linux/marker.h
>
> CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)

But what is so magical about marker.h to justify special-case treatment at the
kbuid level?

2007-02-16 00:42:46

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: sparse chokes on arch/i386/kernel/i8253.c (was: 2.6.20-mm1)

* Andrew Morton ([email protected]) wrote:
> On Thu, 15 Feb 2007 17:46:56 -0500
> Mathieu Desnoyers <[email protected]> wrote:
>
> > > Me too. It's due to the linux-kernel-markers patches. Mathieu, can you
> > > take a look please?
> >
> > I will give a deeper look in sparse, but I should say up front that I
> > add this to the root build tree Makefile :
> >
> > LINUXINCLUDE := -Iinclude \
> > $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
> > -include include/linux/autoconf.h \
> > -include linux/marker.h
> >
> > I guess sparse is maybe not using this Makefile or variable ?
>
> ow, that's going to hurt - this stuff is complex and fragile.
>

Sorry, I will remember to do more explicit changelogs.

> For what reason was that change made?
>

It was made so that we can use the markers in C code without actually
including marker.h everywhere. I am sure someone has a better way to do
it : I would be happy to use this-nice-build-system-feature-I-missed to
have marker.h included.

> Pleeze, tricky things like this should be changelogged - we shouldn't need
> to ask. I missed it.
>
>

--
Mathieu Desnoyers
Computer Engineering Ph.D. Candidate, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-02-16 00:58:08

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: [PATCH] sparse chokes on arch/i386/kernel/i8253.c

* Andrew Morton ([email protected]) wrote:
> On Thu, 15 Feb 2007 19:23:47 -0500
> Mathieu Desnoyers <[email protected]> wrote:
>
> > sparse chokes on arch/i386/kernel/i8253.c
> >
> > Here is a marker fix that puts the correct -i include/linux/marker.h in
> > the top level Makefile so sparse works correctly. The tricky part is to
> > keep the kernel compiling correctly with a kernel build directory
> > different from the kernel source tree too.
> >
> > The fix applies on top the the Linux Kernel Markers for 2.6.20.
> >
> > Signed-off-by: Mathieu Desnoyers <[email protected]>
> >
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -309,7 +309,8 @@ AFLAGS_KERNEL =
> > LINUXINCLUDE := -Iinclude \
> > $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
> > -include include/linux/autoconf.h \
> > - -include linux/marker.h
> > + -include \
> > + $(if $(KBUILD_SRC),$(srctree)/)include/linux/marker.h
> >
> > CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
>
> But what is so magical about marker.h to justify special-case treatment at the
> kbuid level?

Idealistically speaking, nothing. It is however much easier to maintain
an external set of patches introducing markers within the kernel tree :
most of the rejects between kernel version comes from new includes that
comes in the way.

So this is there more by convenience than requirement.

Mathieu

--
Mathieu Desnoyers
Computer Engineering Ph.D. Candidate, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-02-16 01:22:51

by Andrew Morton

[permalink] [raw]
Subject: Re: sparse chokes on arch/i386/kernel/i8253.c (was: 2.6.20-mm1)

On Thu, 15 Feb 2007 19:37:39 -0500
Mathieu Desnoyers <[email protected]> wrote:

> > For what reason was that change made?
> >
>
> It was made so that we can use the markers in C code without actually
> including marker.h everywhere. I am sure someone has a better way to do
> it : I would be happy to use this-nice-build-system-feature-I-missed to
> have marker.h included.

Oh. One could whack it in kernel.h: pretty much everything includes that.

But it'd be better to simply require that the clients of this
infrastructure include the appropriate header file. We do that for
everything else and markers aren't special in this regard.

2007-02-16 01:31:18

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] sparse chokes on arch/i386/kernel/i8253.c

On Thu, 15 Feb 2007 19:58:04 -0500
Mathieu Desnoyers <[email protected]> wrote:

> > >
> > > --- a/Makefile
> > > +++ b/Makefile
> > > @@ -309,7 +309,8 @@ AFLAGS_KERNEL =
> > > LINUXINCLUDE := -Iinclude \
> > > $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
> > > -include include/linux/autoconf.h \
> > > - -include linux/marker.h
> > > + -include \
> > > + $(if $(KBUILD_SRC),$(srctree)/)include/linux/marker.h
> > >
> > > CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
> >
> > But what is so magical about marker.h to justify special-case treatment at the
> > kbuid level?
>
> Idealistically speaking, nothing. It is however much easier to maintain
> an external set of patches introducing markers within the kernel tree :
> most of the rejects between kernel version comes from new includes that
> comes in the way.
>
> So this is there more by convenience than requirement.

No sale. Let's kill it, please ;)

2007-02-16 03:35:29

by Eric W. Biederman

[permalink] [raw]
Subject: Re: [PATCH] shm: Fix the locking and cleanup error handling in do_shmat.

> drivers/video/Kconfig:1606:warning: 'select' used by config symbol 'FB_PS3'
> refer to undefined symbol 'PS3_PS3AV'
> /mnt/md0/devel/linux-mm/ipc/shm.c: In function 'do_shmat':
> /mnt/md0/devel/linux-mm/ipc/shm.c:945: warning: passing argument 1 of 'IS_ERR'
> makes pointer from integer without a cast
> /mnt/md0/devel/linux-mm/ipc/shm.c:946: warning: passing argument 1 of 'PTR_ERR'
> makes pointer from integer without a cast
> /mnt/md0/devel/linux-mm/ipc/shm.c:931: warning: label 'out_nattch' defined but
> not used
> /mnt/md0/devel/linux-mm/ipc/shm.c:890: error: label 'out_put_path' used but not
> defined
> make[2]: *** [ipc/shm.o] Error 1
> make[1]: *** [ipc] Error 2
> make: *** [_all] Error 2

Definitely some weird patch application problem.

All of the calls to IS_ERR and PTR_ERR should have been removed.
Michal since it didn't seem to blow up when Andrew applied it I'm
going to assume the problem is on your end for now.

Eric


2007-02-16 04:10:45

by Bryan Wu

[permalink] [raw]
Subject: Re: [PATCH] shm: Fix the locking and cleanup error handling in do_shmat.

On Thu, 2007-02-15 at 22:34 -0500, Eric W. Biederman wrote:
> > drivers/video/Kconfig:1606:warning: 'select' used by config symbol
> 'FB_PS3'
> > refer to undefined symbol 'PS3_PS3AV'
> > /mnt/md0/devel/linux-mm/ipc/shm.c: In function 'do_shmat':
> > /mnt/md0/devel/linux-mm/ipc/shm.c:945: warning: passing argument 1
> of 'IS_ERR'
> > makes pointer from integer without a cast
> > /mnt/md0/devel/linux-mm/ipc/shm.c:946: warning: passing argument 1
> of 'PTR_ERR'
> > makes pointer from integer without a cast
> > /mnt/md0/devel/linux-mm/ipc/shm.c:931: warning: label 'out_nattch'
> defined but
> > not used
> > /mnt/md0/devel/linux-mm/ipc/shm.c:890: error: label 'out_put_path'
> used but not
> > defined
> > make[2]: *** [ipc/shm.o] Error 1
> > make[1]: *** [ipc] Error 2
> > make: *** [_all] Error 2
>
> Definitely some weird patch application problem.
>
> All of the calls to IS_ERR and PTR_ERR should have been removed.
> Michal since it didn't seem to blow up when Andrew applied it I'm
> going to assume the problem is on your end for now.
>
> Eric
>

Hi Eric,

I am also troubling with the incorrect "nattch" value in do_shmat().
Actually, I found this bugs when I do some LTP testing on
blackfin-uClinux platform.
The "nattch" value returned from shmctl() system call is wrong.

So I think your patch can solve this bug. But which version Linux kernel
is your patch applying for?
I want to do some test on my blackfin-uClinux 2.6.20 platform.

Thanks
-Bryan

2007-02-16 05:30:13

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Fri, 16 Feb 2007 00:39:12 +0100 "J.A. Magall?n" <[email protected]> wrote:

> > > ee1394 usblp evdev
> > > CPU: 1
> > > EIP: 0060:[<c0195f12>] Tainted: P VLI
> > > EFLAGS: 00010246 (2.6.20-jam01 #1)
> > > EIP is at sysfs_lookup+0x5b/0x20a
> > > eax: f6707118 ebx: f6b33e5c ecx: f6917d38 edx: 00000004
> > > esi: 00000000 edi: f670717c ebp: f6b33e24 esp: f6997db4
> > > ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
> > > Process udevd (pid: 3899, ti=f6996000 task=f7e34540 task.ti=f6996000)
> > > Stack: f66e1800 f6707118 c016da12 f66e1800 f6707118 c02f75c0 f6707118 f6997f04
> > > f6997e38 c0164238 f6997e44 c210d8c0 f6b39340 f6b393b4 f7a7d025 f6997e38
> > > 27692f8b f6997f04 c0165a6a f7a7d01d 00000000 000200d2 c037ddac 00000286
> > > Call Trace:
> > > [<c016da12>] d_alloc+0x140/0x198
> > > [<c0164238>] do_lookup+0x128/0x165
> > > [<c0165a6a>] __link_path_walk+0x7e2/0xc9b
> > > [<c0165f68>] link_path_walk+0x45/0xbf
> > > [<c01661b6>] do_path_lookup+0x88/0x1cc
> > > [<c0165125>] getname+0x90/0xad
> > > [<c0166aa4>] __user_walk_fd+0x2f/0x47
> > > [<c01607c4>] vfs_lstat_fd+0x16/0x3d
> > > [<c0160830>] sys_lstat64+0xf/0x23
> > > [<c0111904>] do_page_fault+0x326/0x5e2
> > > [<c01115de>] do_page_fault+0x0/0x5e2
> > > [<c010288e>] sysenter_past_esp+0x5f/0x85
> > > [<c02f0000>] wait_for_completion_interruptible+0xdf/0xee
> >
> >
> > Oh dear. Any one of about 700 developers might have caused this.
> >
> > bisection-search will find this. Can you upload the .config please?
> >
>
> Here it goes:
>
> http://belly.cps.unizar.es/~magallon/oops/config-2.6.20-jam01

Nope, can't reproduce (the bug, that is).

Actually, the oops you have there is the fourth one, so we might be seeing
downstream effects of oops #1. Can you please capture the first oops
trace? Increasing the log buffer size or using netconsole might help.

2007-02-16 13:55:08

by Oleg Nesterov

[permalink] [raw]
Subject: Re: [PATCH 1/1] unify queue_delayed_work and queue_delayed_work_on fix

On 02/16, Jiri Slaby wrote:
>
> unify queue_delayed_work and queue_delayed_work_on fix
>
> Since cwq->wq is unset for other than singlethread_cpu when singlethread
> workqueue was created, an oops occurs during bootup.

And I thought I tested this...

> Fix it by setting
> correct private value for workqueue.

Thanks!!!

> Signed-off-by: Jiri Slaby <[email protected]>
>
> ---
> commit 7bc281be5811f9b1dd01c25eaf492f4765737fd0
> tree 7795008066bb89e7489384cde95e63260602d5af
> parent 61c2024a2dd044e32747542cfbf4b22251df3bc2
> author Jiri Slaby <[email protected]> Fri, 16 Feb 2007 00:49:15 +0100
> committer Jiri Slaby <[email protected]> Fri, 16 Feb 2007 00:49:15 +0100
>
> kernel/workqueue.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/kernel/workqueue.c b/kernel/workqueue.c
> index f2089bf..af5e597 100644
> --- a/kernel/workqueue.c
> +++ b/kernel/workqueue.c
> @@ -210,7 +210,8 @@ int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,
>
> /* This stores cwq for the moment, for the timer_fn */
> set_wq_data(work,
> - per_cpu_ptr(wq->cpu_wq, raw_smp_processor_id()));
> + per_cpu_ptr(wq->cpu_wq, wq->singlethread ?
> + singlethread_cpu : raw_smp_processor_id()));
> timer->expires = jiffies + delay;
> timer->data = (unsigned long)dwork;
> timer->function = delayed_work_timer_fn;

2007-02-16 14:30:16

by James Morris

[permalink] [raw]
Subject: Re: 2.6.20-mm1 [kernel BUG at mm/swap.c:442]

On Thu, 15 Feb 2007, Christoph Lameter wrote:

> On Thu, 15 Feb 2007, Andrew Morton wrote:
>
> > I don't immediately see why that code isn't racy: the page can remain
> > in the pagevec for arbitrary amounts of time and someone can come along
> > and mlock it again. But given the ease with which you're hitting this,
> > it may not be a race.
>
> As long as the page is on the pagevec it should be off the LRU.
> Marking a page PageMlocked requires the page to be on the LRU. So a page
> cannot be marked PageMlocked as long as it is on the regular pagevecs.
>
> Somehow a page off the LRU was marked PageMlocked. Or a new anonymous page
> was allocated and marked PageMlocked and then some later processing put it
> onto the LRU?
>
> Maybe try_to_set_mlocked does work some havoc here.
>
> Could you see if this patch fixes it? This just disabled an optimization
> to set PageMlocked early.

Nope, doesn't fix the problem.


> Index: linux-2.6.20-mm1/mm/memory.c
> ===================================================================
> --- linux-2.6.20-mm1.orig/mm/memory.c 2007-02-15 14:35:41.000000000 -0800
> +++ linux-2.6.20-mm1/mm/memory.c 2007-02-15 14:35:54.000000000 -0800
> @@ -930,6 +930,8 @@ static void try_to_set_mlocked(struct pa
> struct zone *zone;
> unsigned long flags;
>
> + return;
> +
> if (!PageLRU(page) || PageMlocked(page))
> return;
>
>

--
James Morris
<[email protected]>

2007-02-16 14:59:44

by James Morris

[permalink] [raw]
Subject: Re: 2.6.20-mm1 [kernel BUG at mm/swap.c:442]

On Thu, 15 Feb 2007, Andrew Morton wrote:

> That's
>
> VM_BUG_ON(PageMlocked(page));
>
> Setting CONFIG_DEBUG_VM=n will shut it up.
>

Then, I get this reliably as ntpd starts up:

[ 92.725346] ------------[ cut here ]------------
[ 92.741162] kernel BUG at mm/swap.c:469!
[ 92.755867] invalid opcode: 0000 [#1]
[ 92.769975] PREEMPT SMP
[ 92.783289] last sysfs file: /devices/pnp0/00:00/id
[ 92.798654] Modules linked in: sg pcspkr e1000
[ 92.813994] CPU: 2
[ 92.813995] EIP: 0060:[<c014e548>] Not tainted VLI
[ 92.813997] EFLAGS: 00010002 (2.6.20-mm1 #4)
[ 92.856416] EIP is at __pagevec_lru_add_mlock+0x5e/0xcf
[ 92.871671] eax: 8011006c ebx: c1c057f8 ecx: c1fe063c edx: 00000001
[ 92.888445] esi: c03d3500 edi: c1c5e7c0 ebp: f6037f14 esp: f6037f04
[ 92.905436] ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
[ 92.905443] Process ntpd (pid: 1582, ti=f6036000 task=c1fe00f0 task.ti=f6036000)
[ 92.905446] Stack: 00000000 00000002 f606acb8 00000007 f6037f20 c014e7ff c1c5cf30 f6037f40
[ 92.905456] c015a03f b7ce9000 f606acb8 f6037f40 c1c5cf20 f606acb8 f7ef2f00 f6037f70
[ 92.905466] c0155acb b7cf0000 f6037f5c 00000000 f7316420 c1fd2180 00000000 c1c5cf20
[ 92.905475] Call Trace:
[ 92.905478] [<c010389a>] show_trace_log_lvl+0x1a/0x2f
[ 92.905485] [<c010394a>] show_stack_log_lvl+0x9b/0xaa
[ 92.905492] [<c0103b3f>] show_registers+0x1e6/0x325
[ 92.905497] [<c0103d9b>] die+0x11d/0x21c
[ 92.905500] [<c0103f13>] do_trap+0x79/0x91
[ 92.905504] [<c01047d9>] do_invalid_op+0x97/0xa1
[ 92.905509] [<c02f223c>] error_code+0x7c/0x84
[ 92.905514] [<c014e7ff>] lru_add_drain+0x57/0x8d
[ 92.905519] [<c015a03f>] free_pages_and_swap_cache+0x12/0x85
[ 92.905526] [<c0155acb>] unmap_region+0xfd/0x129
[ 92.905530] [<c0156404>] do_munmap+0x153/0x1b4
[ 92.905534] [<c015648a>] sys_munmap+0x25/0x34
[ 92.905538] [<c01028fc>] syscall_call+0x7/0xb
[ 92.905542] =======================
[ 92.905544] Code: 74 1a 85 d2 74 0b 8d 82 80 05 00 00 e8 6a 3a 1a 00 8d 86 80 05 00 00 e8 7c 36 1a 00 8b 03 a9 00 00 10 00 74
3f 8b 03 a8 20 74 04 <0f> 0b eb fe f0 0f ba 2b 05 f0 0f ba 33 14 f0 0f ba 2b 06 ba 03

--
James Morris
<[email protected]>

2007-02-16 15:57:26

by Christoph Lameter

[permalink] [raw]
Subject: Re: 2.6.20-mm1 [kernel BUG at mm/swap.c:442]

On Fri, 16 Feb 2007, James Morris wrote:

> Then, I get this reliably as ntpd starts up:
> [ 92.905514] [<c014e7ff>] lru_add_drain+0x57/0x8d
> [ 92.905519] [<c015a03f>] free_pages_and_swap_cache+0x12/0x85
> [ 92.905526] [<c0155acb>] unmap_region+0xfd/0x129
> [ 92.905530] [<c0156404>] do_munmap+0x153/0x1b4
> [ 92.905534] [<c015648a>] sys_munmap+0x25/0x34
> [ 92.905538] [<c01028fc>] syscall_call+0x7/0xb
> [ 92.905542] =======================
> [ 92.905544] Code: 74 1a 85 d2 74 0b 8d 82 80 05 00 00 e8 6a 3a 1a 00 8d 86 80 05 00 00 e8 7c 36 1a 00 8b 03 a9 00 00 10 00 74
> 3f 8b 03 a8 20 74 04 <0f> 0b eb fe f0 0f ba 2b 05 f0 0f ba 33 14 f0 0f ba 2b 06 ba 03

Andrew already has this fix which cures it for me. PG_mlocked pages can
be freed in some situations and thus we need the correct handling in the
page allocator:


Index: linux-2.6.20/include/linux/page-flags.h
===================================================================
--- linux-2.6.20.orig/include/linux/page-flags.h 2007-02-15 20:42:42.000000000 -0800
+++ linux-2.6.20/include/linux/page-flags.h 2007-02-15 20:43:33.000000000 -0800
@@ -261,6 +261,7 @@ static inline void SetPageUptodate(struc
#define PageMlocked(page) test_bit(PG_mlocked, &(page)->flags)
#define SetPageMlocked(page) set_bit(PG_mlocked, &(page)->flags)
#define ClearPageMlocked(page) clear_bit(PG_mlocked, &(page)->flags)
+#define __ClearPageMlocked(page) __clear_bit(PG_mlocked, &(page)->flags)

struct page; /* forward declaration */

Index: linux-2.6.20/mm/page_alloc.c
===================================================================
--- linux-2.6.20.orig/mm/page_alloc.c 2007-02-15 20:42:42.000000000 -0800
+++ linux-2.6.20/mm/page_alloc.c 2007-02-15 20:55:23.000000000 -0800
@@ -203,6 +203,7 @@ static void bad_page(struct page *page)
1 << PG_slab |
1 << PG_swapcache |
1 << PG_writeback |
+ 1 << PG_mlocked |
1 << PG_buddy );
set_page_count(page, 0);
reset_page_mapcount(page);
@@ -442,6 +443,11 @@ static inline int free_pages_check(struc
bad_page(page);
if (PageDirty(page))
__ClearPageDirty(page);
+ if (PageMlocked(page)) {
+ /* Page is unused so no need to take the lru lock */
+ __ClearPageMlocked(page);
+ dec_zone_page_state(page, NR_MLOCK);
+ }
/*
* For now, we report if PG_reserved was found set, but do not
* clear it, and do not free the page. But we shall soon need
@@ -588,6 +594,7 @@ static int prep_new_page(struct page *pa
1 << PG_swapcache |
1 << PG_writeback |
1 << PG_reserved |
+ 1 << PG_mlocked |
1 << PG_buddy ))))
bad_page(page);

2007-02-16 16:37:19

by Steve Fox

[permalink] [raw]
Subject: Re: 2.6.20-mm1

bl6-13, an x86_64 box listed on test.kernel.org, tripped on this during
an LTP run, even with
unify-queue_delayed_work-and-queue_delayed_work_on-fix.patch applied.

I'm not sure why the LTP results aren't copied over to TKO, but here's
the details anyway.

If someone can give me an idea where to look, I can start a bi-sect if
it would help.

kernel BUG at mm/swap.c:469!
invalid opcode: 0000 [1] SMP
last sysfs file: /devices/system/node/node0/cpumap
CPU 1
Modules linked in: hidp rfcomm l2cap bluetooth sunrpc ipv6 video button battery asus_acpi ac lp parport_pc parport nvram pcspkr amd_rng rng_core i2c_amd756 i2c_core
Pid: 19380, comm: mlockall01 Not tainted 2.6.20-mm1-autokern1 #1
RIP: 0010:[<ffffffff8026e007>] [<ffffffff8026e007>] __pagevec_lru_add_mlock+0x6f/0x108
RSP: 0018:ffff810022d0fdd8 EFLAGS: 00010002
RAX: 000000000011006c RBX: ffff81003ff41000 RCX: ffff81003ff40dc0
RDX: 0000000000000000 RSI: ffff810026df36b8 RDI: ffff81000000c480
RBP: ffff81000000bb00 R08: ffff8100212f0e40 R09: ffff81003ee13d84
R10: 0000000000000286 R11: 0000000000000246 R12: ffff81000502aae0
R13: 0000000000000000 R14: ffff81000501fd20 R15: 00000036d491a000
FS: 00002b212329b1e0(0000) GS:ffff81003ee13cc0(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00002b2123283000 CR3: 0000000023fba000 CR4: 00000000000006e0
Process mlockall01 (pid: 19380, threadinfo ffff810022d0e000, task ffff81002ccdc080)
Stack: ffff8100212f0e40 ffff81003ff7a1c0 000000003eb47020 00000036d490e000
ffff810031d31870 ffffffff8027387a 0000000000000000 ffff810022d0fed8
ffffffffffffffff 0000000000000000 ffff810026df36b8 ffff810022d0fee0
Call Trace:
[<ffffffff8027387a>] unmap_vmas+0x43c/0x760
[<ffffffff802774fc>] exit_mmap+0x78/0xed
[<ffffffff80230ca3>] mmput+0x45/0xb8
[<ffffffff80235ee7>] do_exit+0x23d/0x811
[<ffffffff80236537>] sys_exit_group+0x0/0xe
[<ffffffff80209b6e>] system_call+0x7e/0x83


Code: 0f 0b eb fe f0 0f ba 2b 05 f0 0f ba 33 14 f0 0f ba 2b 06 be
RIP [<ffffffff8026e007>] __pagevec_lru_add_mlock+0x6f/0x108
RSP <ffff810022d0fdd8>
Fixing recursive fault but reboot is needed!
BUG: spinlock lockup on CPU#3, syslogd/19381, ffff81000000c480

Call Trace:
[<ffffffff80330047>] _raw_spin_lock+0xcf/0xf6
[<ffffffff8026e100>] __pagevec_lru_add_active+0x60/0xe3
[<ffffffff8027312f>] do_wp_page+0x3d8/0x485
[<ffffffff80274a5d>] __handle_mm_fault+0x96d/0x9e2
[<ffffffff804d1876>] do_page_fault+0x42b/0x7b1
[<ffffffff80246af3>] lock_hrtimer_base+0x1b/0x3c
[<ffffffff804cf801>] _spin_unlock_irq+0x9/0xc
[<ffffffff8023c175>] do_sigaction+0x16b/0x17f
[<ffffffff80236c29>] do_setitimer+0x18e/0x336
[<ffffffff804cfc2d>] error_exit+0x0/0x84

-- 0:conmux-control -- time-stamp -- Feb/16/07 4:13:11 --
-- 0:conmux-control -- time-stamp -- Feb/16/07 5:22:45 --
BUG: spinlock lockup on CPU#0, portmap/1699, ffff81000000c480

Call Trace:
[<ffffffff80330047>] _raw_spin_lock+0xcf/0xf6
[<ffffffff8026e1e4>] __pagevec_lru_add+0x61/0xe0
[<ffffffff8026e3aa>] __lru_add_drain+0x24/0x7e
[<ffffffff80277324>] unmap_region+0x41/0x12c
[<ffffffff8027808d>] do_munmap+0x1f9/0x276
[<ffffffff804cf1e0>] __down_write_nested+0x34/0x9e
[<ffffffff8027814a>] sys_munmap+0x40/0x5a
[<ffffffff80209b6e>] system_call+0x7e/0x83

--

Steve Fox
IBM Linux Technology Center

2007-02-16 17:03:43

by Randy Dunlap

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Fri, 16 Feb 2007 10:37:12 -0600 Steve Fox wrote:

> bl6-13, an x86_64 box listed on test.kernel.org, tripped on this during
> an LTP run, even with
> unify-queue_delayed_work-and-queue_delayed_work_on-fix.patch applied.
>
> I'm not sure why the LTP results aren't copied over to TKO, but here's
> the details anyway.
>
> If someone can give me an idea where to look, I can start a bi-sect if
> it would help.
>
> kernel BUG at mm/swap.c:469!
> invalid opcode: 0000 [1] SMP
> last sysfs file: /devices/system/node/node0/cpumap


Try this patch? http://lkml.org/lkml/2007/2/16/220


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

2007-02-16 17:14:23

by Steve Fox

[permalink] [raw]
Subject: Re: 2.6.20-mm1 - undefined reference to `delete_module' on x86

Full log at
http://test.kernel.org/abat/71719/debug/test.log.0
Config at
http://test.kernel.org/abat/71719/build/dotconfig

CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
kernel/built-in.o(.text+0x1426a): In function `store_mod_unload':
kernel/kmod.c:168: undefined reference to `delete_module'
make: *** [.tmp_vmlinux1] Error 1

--

Steve Fox
IBM Linux Technology Center

2007-02-16 18:05:17

by Mathieu Desnoyers

[permalink] [raw]
Subject: [PATCH] Move include linux/marker.h to kernel.h

Move include linux/marker.h to kernel.h

* Andrew Morton ([email protected]) wrote:
> Oh. One could whack [include linux/marker.h] in kernel.h: pretty
> much everything includes that.
>
> But it'd be better to simply require that the clients of this
> infrastructure include the appropriate header file. We do that for
> everything else and markers aren't special in this regard.

It seems like the logical solution. This patch moves this include from
Makefile to include/linux/kernel.h.

Signed-off-by: Mathieu Desnoyers <[email protected]>

--- a/Makefile
+++ b/Makefile
@@ -308,9 +308,7 @@ AFLAGS_KERNEL =
# Needed to be compatible with the O= option
LINUXINCLUDE := -Iinclude \
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
- -include include/linux/autoconf.h \
- -include \
- $(if $(KBUILD_SRC),$(srctree)/)include/linux/marker.h
+ -include include/linux/autoconf.h

CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)

--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -14,6 +14,7 @@
#include <linux/compiler.h>
#include <linux/bitops.h>
#include <linux/log2.h>
+#include <linux/marker.h>
#include <asm/byteorder.h>
#include <asm/bug.h>


--
Mathieu Desnoyers
Computer Engineering Ph.D. Candidate, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-02-16 18:43:51

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] Move include linux/marker.h to kernel.h

On Fri, 16 Feb 2007 13:05:13 -0500 Mathieu Desnoyers <[email protected]> wrote:

> Move include linux/marker.h to kernel.h
>
> * Andrew Morton ([email protected]) wrote:
> > Oh. One could whack [include linux/marker.h] in kernel.h: pretty
> > much everything includes that.
> >
> > But it'd be better to simply require that the clients of this
> > infrastructure include the appropriate header file. We do that for
> > everything else and markers aren't special in this regard.
>
> It seems like the logical solution. This patch moves this include from
> Makefile to include/linux/kernel.h.
>
> Signed-off-by: Mathieu Desnoyers <[email protected]>
>
> --- a/Makefile
> +++ b/Makefile
> @@ -308,9 +308,7 @@ AFLAGS_KERNEL =
> # Needed to be compatible with the O= option
> LINUXINCLUDE := -Iinclude \
> $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
> - -include include/linux/autoconf.h \
> - -include \
> - $(if $(KBUILD_SRC),$(srctree)/)include/linux/marker.h
> + -include include/linux/autoconf.h
>
> CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
>
> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -14,6 +14,7 @@
> #include <linux/compiler.h>
> #include <linux/bitops.h>
> #include <linux/log2.h>
> +#include <linux/marker.h>
> #include <asm/byteorder.h>
> #include <asm/bug.h>

No, that's still crufty. There's no reason why marker.h needs special
treatment whereas, say, jiffies.h does not (is there?)

It is conventional and reasonable to require that any code which uses this
mechanism must include its header file.

2007-02-16 18:50:01

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.20-mm1 - undefined reference to `delete_module' on x86

On Fri, 16 Feb 2007 11:14:17 -0600 Steve Fox <[email protected]> wrote:

> Full log at
> http://test.kernel.org/abat/71719/debug/test.log.0
> Config at
> http://test.kernel.org/abat/71719/build/dotconfig
>
> CHK include/linux/compile.h
> UPD include/linux/compile.h
> CC init/version.o
> LD init/built-in.o
> LD .tmp_vmlinux1
> kernel/built-in.o(.text+0x1426a): In function `store_mod_unload':
> kernel/kmod.c:168: undefined reference to `delete_module'
> make: *** [.tmp_vmlinux1] Error 1
>

Yes, sorry. I believe Greg now has a replacement patch which fixes that up.

I think the workaround is CONFIG_MODULE_UNLOAD=y (or
CONFIG_MODULE_FORCE_UNLOAD=y).

2007-02-16 18:52:55

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: [PATCH] Move include linux/marker.h from Makefile

* Andrew Morton ([email protected]) wrote:
> No, that's still crufty. There's no reason why marker.h needs special
> treatment whereas, say, jiffies.h does not (is there?)
>
> It is conventional and reasonable to require that any code which uses this
> mechanism must include its header file.
>

Ok, let's simply revert it then (and update the documentation
accordingly in a following patch).

Signed-off-by: Mathieu Desnoyers <[email protected]>

--- a/Makefile
+++ b/Makefile
@@ -308,9 +308,7 @@ AFLAGS_KERNEL =
# Needed to be compatible with the O= option
LINUXINCLUDE := -Iinclude \
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
- -include include/linux/autoconf.h \
- -include \
- $(if $(KBUILD_SRC),$(srctree)/)include/linux/marker.h
+ -include include/linux/autoconf.h

CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)

--
Mathieu Desnoyers
Computer Engineering Ph.D. Candidate, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-02-16 21:28:50

by James Morris

[permalink] [raw]
Subject: Re: 2.6.20-mm1 [kernel BUG at mm/swap.c:442]

On Fri, 16 Feb 2007, Christoph Lameter wrote:

> Andrew already has this fix which cures it for me. PG_mlocked pages can
> be freed in some situations and thus we need the correct handling in the
> page allocator:

Works for me.


- James
--
James Morris
<[email protected]>

2007-02-16 23:51:22

by J.A. Magallón

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Thu, 15 Feb 2007 21:30:06 -0800, Andrew Morton <[email protected]> wrote:

>
> Nope, can't reproduce (the bug, that is).
>
> Actually, the oops you have there is the fourth one, so we might be seeing
> downstream effects of oops #1. Can you please capture the first oops
> trace? Increasing the log buffer size or using netconsole might help.

Well, forget it. Booting without the nVidia driver makes the oopses go away.
I looks like nvidia is doing something strange with the i2c interface.
D**d closed source drivers...

--
J.A. Magallon <jamagallon()ono!com> \ Software is like sex:
\ It's better when it's free
Mandriva Linux release 2007.1 (Cooker) for i586
Linux 2.6.19-jam07 (gcc 4.1.2 20070115 (prerelease) (4.1.2-0.20070115.1mdv2007.1)) #2 SMP PREEMPT

2007-02-17 12:50:45

by Tim Schmielau

[permalink] [raw]
Subject: Re: [PATCH] Move include linux/marker.h to kernel.h

On Fri, 16 Feb 2007, Andrew Morton wrote:

> No, that's still crufty. There's no reason why marker.h needs special
> treatment whereas, say, jiffies.h does not (is there?)

Unforunately, even jiffies.h gets special treatment. sched.h still
includes jiffies.h, as this is where it was originally defined.

I've had that on my to-do list for some years now, but unfortunately it
will probably remain there for some more.
Somebody else who wants to check all files for properly including
jiffies.h and then remove the include from sched.h?

Thanks,
Tim

2007-02-19 16:10:54

by Steve Fox

[permalink] [raw]
Subject: Re: 2.6.20-mm1

On Fri, 2007-02-16 at 08:55 -0800, Randy Dunlap wrote:
> On Fri, 16 Feb 2007 10:37:12 -0600 Steve Fox wrote:
>
> > bl6-13, an x86_64 box listed on test.kernel.org, tripped on this during
> > an LTP run, even with
> > unify-queue_delayed_work-and-queue_delayed_work_on-fix.patch applied.
> >
> > I'm not sure why the LTP results aren't copied over to TKO, but here's
> > the details anyway.
> >
> > If someone can give me an idea where to look, I can start a bi-sect if
> > it would help.
> >
> > kernel BUG at mm/swap.c:469!
> > invalid opcode: 0000 [1] SMP
> > last sysfs file: /devices/system/node/node0/cpumap
>
>
> Try this patch? http://lkml.org/lkml/2007/2/16/220

That fixed it. Thanks.

--

Steve Fox
IBM Linux Technology Center

2007-02-20 00:02:08

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] make struct vmi_ops static

This patch makes the needlessly global struct vmi_ops static.

Signed-off-by: Adrian Bunk <[email protected]>

---
--- linux-2.6.20-mm1/arch/i386/kernel/vmi.c.old 2007-02-16 14:26:50.000000000 +0100
+++ linux-2.6.20-mm1/arch/i386/kernel/vmi.c 2007-02-16 14:27:00.000000000 +0100
@@ -56,7 +56,7 @@
static int disable_mtrr;

/* Cached VMI operations */
-struct {
+static struct {
void (*cpuid)(void /* non-c */);
void (*_set_ldt)(u32 selector);
void (*set_tr)(u32 selector);

2007-02-20 00:02:34

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] marker exports must be EXPORT_SYMBOL_GPL

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> - Added the Linux Kernel Markers code. No idea how to use it and it
> seems we're not to be told.
>...
> Changes since 2.6.20-rc6-mm3:
>...
> +linux-kernel-markers-kconfig-menus.patch
> +linux-kernel-markers-architecture-independant-code.patch
> +linux-kernel-markers-powerpc-optimization.patch
> +linux-kernel-markers-i386-optimization.patch
> +linux-kernel-markers-non-optimized-architectures.patch
>
> Linux Kenrel Markers
>...


This is definitely functionality illegal modules have no business to
use.

Signed-off-by: Adrian Bunk <[email protected]>

---

arch/i386/kernel/marker.c | 2 +-
kernel/module.c | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)

--- linux-2.6.20-mm1/kernel/module.c.old 2007-02-15 16:02:09.000000000 +0100
+++ linux-2.6.20-mm1/kernel/module.c 2007-02-15 16:03:08.000000000 +0100
@@ -304,7 +304,7 @@
void __mark_empty_function(const char *fmt, ...)
{
}
-EXPORT_SYMBOL(__mark_empty_function);
+EXPORT_SYMBOL_GPL(__mark_empty_function);

#ifdef MARK_POLYMORPHIC
static int marker_set_ins_enable(void *address, char enable)
@@ -461,7 +461,7 @@
mutex_unlock(&module_mutex);
return found;
}
-EXPORT_SYMBOL(marker_set_probe);
+EXPORT_SYMBOL_GPL(marker_set_probe);

int marker_remove_probe(marker_probe_func *probe)
{
@@ -481,7 +481,7 @@
mutex_unlock(&module_mutex);
return found;
}
-EXPORT_SYMBOL(marker_remove_probe);
+EXPORT_SYMBOL_GPL(marker_remove_probe);

int marker_list_probe(marker_probe_func *probe)
{
@@ -505,7 +505,7 @@
mutex_unlock(&module_mutex);
return found;
}
-EXPORT_SYMBOL(marker_list_probe);
+EXPORT_SYMBOL_GPL(marker_list_probe);
#endif

#ifdef CONFIG_SMP
@@ -2510,7 +2510,7 @@
}
mutex_unlock(&module_mutex);
}
-EXPORT_SYMBOL(list_modules);
+EXPORT_SYMBOL_GPL(list_modules);

/* Given an address, look for it in the module exception tables. */
const struct exception_table_entry *search_module_extables(unsigned long addr)
--- linux-2.6.20-mm1/arch/i386/kernel/marker.c.old 2007-02-15 16:03:22.000000000 +0100
+++ linux-2.6.20-mm1/arch/i386/kernel/marker.c 2007-02-15 16:03:34.000000000 +0100
@@ -90,4 +90,4 @@
flush_icache_range(address, size);
return 0;
}
-EXPORT_SYMBOL(arch_marker_set_ins_enable);
+EXPORT_SYMBOL_GPL(arch_marker_set_ins_enable);





2007-02-20 00:08:21

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] make ipc/shm.c:shm_nopage() static

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> +shm-make-sysv-ipc-shared-memory-use-stacked-files.patch
>...
> Misc
>...


shm_nopage() can become static.

Signed-off-by: Adrian Bunk <[email protected]>

---
--- linux-2.6.20-mm2/ipc/shm.c.old 2007-02-18 22:58:03.000000000 +0100
+++ linux-2.6.20-mm2/ipc/shm.c 2007-02-18 22:58:18.000000000 +0100
@@ -226,8 +226,8 @@
mutex_unlock(&shm_ids(ns).mutex);
}

-struct page *shm_nopage(struct vm_area_struct *vma, unsigned long address,
- int *type)
+static struct page *shm_nopage(struct vm_area_struct *vma,
+ unsigned long address, int *type)
{
struct file *file = vma->vm_file;
struct shm_file_data *sfd = shm_file_data(file);

2007-02-20 00:08:21

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] make kernel/kmod.c:kmod_mk static

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> +gregkh-driver-driver-core-let-request_module-send-a-sys-modules-kmod-uevent.patch
>...
> driver tree updates
>...


This patch makes the needlessly global struct kmod_mk static.

Signed-off-by: Adrian Bunk <[email protected]>

---
--- linux-2.6.20-mm2/kernel/kmod.c.old 2007-02-18 23:06:28.000000000 +0100
+++ linux-2.6.20-mm2/kernel/kmod.c 2007-02-18 23:06:35.000000000 +0100
@@ -48,7 +48,7 @@
modprobe_path is set via /proc/sys.
*/
char modprobe_path[KMOD_PATH_LEN] = "/sbin/modprobe";
-struct module_kobject kmod_mk;
+static struct module_kobject kmod_mk;

/**
* request_module - try to load a kernel module

2007-02-20 00:08:50

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] include/linux/ptrace.h must #include <linux/errno.h>

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> +utrace-utrace-ptrace-compat.patch
>...
> utrace tree
>...


This patch fixes the following compile error:

<-- snip -->

...
CC drivers/net/wan/lmc/lmc_media.o
In file included from /home/bunk/linux/kernel-2.6/linux-2.6.20-mm2/drivers/net/wan/lmc/lmc_media.c:6:
/home/bunk/linux/kernel-2.6/linux-2.6.20-mm2/include/linux/ptrace.h: In function 'ptrace_do_wait':
/home/bunk/linux/kernel-2.6/linux-2.6.20-mm2/include/linux/ptrace.h:238: error: 'ECHILD' undeclared (first use in this function)
/home/bunk/linux/kernel-2.6/linux-2.6.20-mm2/include/linux/ptrace.h:238: error: (Each undeclared identifier is reported only once
/home/bunk/linux/kernel-2.6/linux-2.6.20-mm2/include/linux/ptrace.h:238: error: for each function it appears in.)
make[5]: *** [drivers/net/wan/lmc/lmc_media.o] Error 1

<-- snip -->


Signed-off-by: Adrian Bunk <[email protected]>

---
--- linux-2.6.20-mm2/include/linux/ptrace.h.old 2007-02-19 22:59:04.000000000 +0100
+++ linux-2.6.20-mm2/include/linux/ptrace.h 2007-02-19 22:59:24.000000000 +0100
@@ -51,6 +51,7 @@
#ifdef __KERNEL__
#include <linux/compiler.h>
#include <linux/types.h>
+#include <linux/errno.h>
struct task_struct;
struct siginfo;
struct rusage;

2007-02-20 00:08:50

by Adrian Bunk

[permalink] [raw]
Subject: 2.6.20-mm1: PTRACE=y, PROC_FS=n compile error

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> +utrace-utrace-ptrace-compat.patch
>...
> utrace tree
>...


This causes the following compile error with CONFIG_PTRACE=y,
CONFIG_PROC_FS=n:

<-- snip -->

...
LD .tmp_vmlinux1
kernel/built-in.o: In function `sys_ptrace':
(.text+0x2a3c2): undefined reference to `ptrace_may_attach'
make[1]: *** [.tmp_vmlinux1] Error 1

<-- snip -->

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2007-02-20 00:11:09

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] mm/{,tiny-}shmem.c cleanups

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> +shm-make-sysv-ipc-shared-memory-use-stacked-files.patch
>...
> Misc
>...


shmem_{nopage,mmap} are no longer used in ipc/shm.c

Signed-off-by: Adrian Bunk <[email protected]>

---

include/linux/mm.h | 5 -----
mm/shmem.c | 5 +++--
mm/tiny-shmem.c | 2 ++
3 files changed, 5 insertions(+), 7 deletions(-)

--- linux-2.6.20-mm2/include/linux/mm.h.old 2007-02-18 23:32:54.000000000 +0100
+++ linux-2.6.20-mm2/include/linux/mm.h 2007-02-18 23:34:02.000000000 +0100
@@ -662,15 +662,11 @@
extern void show_free_areas(void);

#ifdef CONFIG_SHMEM
-struct page *shmem_nopage(struct vm_area_struct *vma,
- unsigned long address, int *type);
int shmem_set_policy(struct vm_area_struct *vma, struct mempolicy *new);
struct mempolicy *shmem_get_policy(struct vm_area_struct *vma,
unsigned long addr);
int shmem_lock(struct file *file, int lock, struct user_struct *user);
#else
-#define shmem_nopage filemap_nopage
-
static inline int shmem_lock(struct file *file, int lock,
struct user_struct *user)
{
@@ -690,7 +686,6 @@
}
#endif
struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags);
-extern int shmem_mmap(struct file *file, struct vm_area_struct *vma);

int shmem_zero_setup(struct vm_area_struct *);

--- linux-2.6.20-mm2/mm/shmem.c.old 2007-02-18 23:33:38.000000000 +0100
+++ linux-2.6.20-mm2/mm/shmem.c 2007-02-18 23:34:14.000000000 +0100
@@ -1227,7 +1227,8 @@
return error;
}

-struct page *shmem_nopage(struct vm_area_struct *vma, unsigned long address, int *type)
+static struct page *shmem_nopage(struct vm_area_struct *vma,
+ unsigned long address, int *type)
{
struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
struct page *page = NULL;
@@ -1334,7 +1335,7 @@
return retval;
}

-int shmem_mmap(struct file *file, struct vm_area_struct *vma)
+static int shmem_mmap(struct file *file, struct vm_area_struct *vma)
{
file_accessed(file);
vma->vm_ops = &shmem_vm_ops;
--- linux-2.6.20-mm2/mm/tiny-shmem.c.old 2007-02-18 23:34:21.000000000 +0100
+++ linux-2.6.20-mm2/mm/tiny-shmem.c 2007-02-18 23:34:57.000000000 +0100
@@ -126,6 +126,7 @@
return 0;
}

+#if 0
int shmem_mmap(struct file *file, struct vm_area_struct *vma)
{
file_accessed(file);
@@ -135,6 +136,7 @@
return 0;
#endif
}
+#endif /* 0 */

#ifndef CONFIG_MMU
unsigned long shmem_get_unmapped_area(struct file *file,

2007-02-20 00:15:20

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] make fs/partitions/msdos.c:check_sane_values() static

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> +filesystem-disk-errors-at-boot-time-caused-by-probe.patch
>...
> Misc
>...


check_sane_values() can become static.

---
--- linux-2.6.20-mm2/fs/partitions/msdos.c.old 2007-02-18 22:44:25.000000000 +0100
+++ linux-2.6.20-mm2/fs/partitions/msdos.c 2007-02-18 22:44:32.000000000 +0100
@@ -431,7 +431,7 @@
*
* Copyright 31 January 2007, TJ <[email protected]>
*/
-int check_sane_values(struct partition *p, struct block_device *bdev)
+static int check_sane_values(struct partition *p, struct block_device *bdev)
{
unsigned char *data;
struct partition *ext;

2007-02-20 00:16:11

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] make drivers/usb/misc/iowarrior.c:iowarrior_ids[] static

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> +gregkh-usb-usb-iowarrior.patch
>...
> USB tree updates
>...


This patch makes the needlessly global struct iowarrior_ids[] static.

Signed-off-by: Adrian Bunk <[email protected]>

---
--- linux-2.6.20-mm2/drivers/usb/misc/iowarrior.c.old 2007-02-18 22:32:11.000000000 +0100
+++ linux-2.6.20-mm2/drivers/usb/misc/iowarrior.c 2007-02-18 22:32:20.000000000 +0100
@@ -140,7 +140,7 @@
/* driver registration */
/*---------------------*/
/* table of devices that work with this driver */
-struct usb_device_id iowarrior_ids[] = {
+static struct usb_device_id iowarrior_ids[] = {
{USB_DEVICE(USB_VENDOR_ID_CODEMERCS, USB_DEVICE_ID_CODEMERCS_IOW40)},
{USB_DEVICE(USB_VENDOR_ID_CODEMERCS, USB_DEVICE_ID_CODEMERCS_IOW24)},
{USB_DEVICE(USB_VENDOR_ID_CODEMERCS, USB_DEVICE_ID_CODEMERCS_IOWPV1)},

2007-02-20 00:17:44

by Dave Jones

[permalink] [raw]
Subject: Re: [-mm patch] {rd,wr}msr_on_cpu SMP=n optimization

On Tue, Feb 20, 2007 at 01:07:13AM +0100, Adrian Bunk wrote:
> On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
> >...
> > Changes since 2.6.20-rc6-mm3:
> >...
> > +rdmsr_on_cpu-wrmsr_on_cpu.patch
> >...
> > x86 updates
> >...
>
> Let's save a few bytes in the CONFIG_SMP=n case.
>
> Signed-off-by: Adrian Bunk <[email protected]>
>
> ---
>
> BTW: currently -ENOUSERS

There was a follow-on patch that converted p4-clockmod to use it for one.

> +#ifdef CONFIG_SMP
> void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
> void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
> +#else /* CONFIG_SMP */
> +static inline void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
> +{
> + rdmsr(msr_no, *l, *h);
> +}
> +static inline void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
> +{
> + wrmsr(msr_no, l, h);
> +}
> +#endif /* CONFIG_SMP */

BUG_ON(cpu!=smp_processor_id()) maybe?

Dave

--
http://www.codemonkey.org.uk

2007-02-20 00:18:25

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] make pvr2_encoder_prep_config() static

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> git-dvb.patch
>...
> git trees.
>...

This patch makes the needlessly global pvr2_encoder_prep_config()
static.

Signed-off-by: Adrian Bunk <[email protected]>

---
--- linux-2.6.20-mm1/drivers/media/video/pvrusb2/pvrusb2-encoder.c.old 2007-02-17 17:52:21.000000000 +0100
+++ linux-2.6.20-mm1/drivers/media/video/pvrusb2/pvrusb2-encoder.c 2007-02-17 17:52:30.000000000 +0100
@@ -324,7 +324,7 @@

/* This implements some extra setup for the encoder that seems to be
specific to the PVR USB2 hardware. */
-int pvr2_encoder_prep_config(struct pvr2_hdw *hdw)
+static int pvr2_encoder_prep_config(struct pvr2_hdw *hdw)
{
int ret = 0;
int encMisc3Arg = 0;

2007-02-20 00:18:35

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] make dvb_usb_gl861_debug static

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> git-dvb.patch
>...
> git trees.
>...

This patch makes the needlessly global dvb_usb_gl861_debug static.

Signed-off-by: Adrian Bunk <[email protected]>

---
--- linux-2.6.20-mm1/drivers/media/dvb/dvb-usb/gl861.c.old 2007-02-17 17:49:03.000000000 +0100
+++ linux-2.6.20-mm1/drivers/media/dvb/dvb-usb/gl861.c 2007-02-17 17:49:20.000000000 +0100
@@ -12,7 +12,7 @@
#include "qt1010.h"

/* debug */
-int dvb_usb_gl861_debug;
+static int dvb_usb_gl861_debug;
module_param_named(debug,dvb_usb_gl861_debug, int, 0644);
MODULE_PARM_DESC(debug, "set debugging level (1=rc (or-able))." DVB_USB_DEBUG_STATUS);


2007-02-20 00:20:57

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] {rd,wr}msr_on_cpu SMP=n optimization

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> +rdmsr_on_cpu-wrmsr_on_cpu.patch
>...
> x86 updates
>...

Let's save a few bytes in the CONFIG_SMP=n case.

Signed-off-by: Adrian Bunk <[email protected]>

---

BTW: currently -ENOUSERS

arch/i386/lib/Makefile | 2 +-
arch/i386/lib/msr-on-cpu.c | 12 ------------
arch/x86_64/lib/Makefile | 3 ++-
include/asm-i386/msr.h | 11 +++++++++++
include/asm-x86_64/msr.h | 11 +++++++++++
5 files changed, 25 insertions(+), 14 deletions(-)

--- linux-2.6.20-mm1/arch/i386/lib/Makefile.old 2007-02-16 14:13:20.000000000 +0100
+++ linux-2.6.20-mm1/arch/i386/lib/Makefile 2007-02-16 14:14:22.000000000 +0100
@@ -8,4 +8,4 @@

lib-$(CONFIG_X86_USE_3DNOW) += mmx.o

-obj-y = msr-on-cpu.o
+obj-$(CONFIG_SMP) += msr-on-cpu.o
--- linux-2.6.20-mm1/arch/x86_64/lib/Makefile.old 2007-02-16 14:13:52.000000000 +0100
+++ linux-2.6.20-mm1/arch/x86_64/lib/Makefile 2007-02-16 14:14:14.000000000 +0100
@@ -4,7 +4,8 @@

CFLAGS_csum-partial.o := -funroll-loops

-obj-y := io.o iomap_copy.o msr-on-cpu.o
+obj-y := io.o iomap_copy.o
+obj-$(CONFIG_SMP) += msr-on-cpu.o

lib-y := csum-partial.o csum-copy.o csum-wrappers.o delay.o \
usercopy.o getuser.o putuser.o \
--- linux-2.6.20-mm1/include/asm-i386/msr.h.old 2007-02-16 14:14:43.000000000 +0100
+++ linux-2.6.20-mm1/include/asm-i386/msr.h 2007-02-16 14:16:00.000000000 +0100
@@ -83,8 +83,19 @@
: "c" (counter))
#endif /* !CONFIG_PARAVIRT */

+#ifdef CONFIG_SMP
void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
+#else /* CONFIG_SMP */
+static inline void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
+{
+ rdmsr(msr_no, *l, *h);
+}
+static inline void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
+{
+ wrmsr(msr_no, l, h);
+}
+#endif /* CONFIG_SMP */

/* symbolic names for some interesting MSRs */
/* Intel defined MSRs. */
--- linux-2.6.20-mm1/include/asm-x86_64/msr.h.old 2007-02-16 14:16:12.000000000 +0100
+++ linux-2.6.20-mm1/include/asm-x86_64/msr.h 2007-02-16 14:16:50.000000000 +0100
@@ -160,8 +160,19 @@
#define MSR_IA32_UCODE_WRITE 0x79
#define MSR_IA32_UCODE_REV 0x8b

+#ifdef CONFIG_SMP
void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
+#else /* CONFIG_SMP */
+static inline void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
+{
+ rdmsr(msr_no, *l, *h);
+}
+static inline void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
+{
+ wrmsr(msr_no, l, h);
+}
+#endif /* CONFIG_SMP */

#endif

--- linux-2.6.20-mm1/arch/i386/lib/msr-on-cpu.c.old 2007-02-16 14:17:06.000000000 +0100
+++ linux-2.6.20-mm1/arch/i386/lib/msr-on-cpu.c 2007-02-16 14:17:49.000000000 +0100
@@ -3,7 +3,6 @@
#include <linux/smp.h>
#include <asm/msr.h>

-#ifdef CONFIG_SMP
struct msr_info {
u32 msr_no;
u32 l, h;
@@ -54,17 +53,6 @@
}
preempt_enable();
}
-#else
-void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
-{
- rdmsr(msr_no, *l, *h);
-}
-
-void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
-{
- wrmsr(msr_no, l, h);
-}
-#endif

EXPORT_SYMBOL(rdmsr_on_cpu);
EXPORT_SYMBOL(wrmsr_on_cpu);

2007-02-20 00:21:56

by Adrian Bunk

[permalink] [raw]
Subject: Re: [-mm patch] {rd,wr}msr_on_cpu SMP=n optimization

On Mon, Feb 19, 2007 at 07:14:34PM -0500, Dave Jones wrote:
> On Tue, Feb 20, 2007 at 01:07:13AM +0100, Adrian Bunk wrote:
>...
> > +#ifdef CONFIG_SMP
> > void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
> > void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
> > +#else /* CONFIG_SMP */
> > +static inline void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
> > +{
> > + rdmsr(msr_no, *l, *h);
> > +}
> > +static inline void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
> > +{
> > + wrmsr(msr_no, l, h);
> > +}
> > +#endif /* CONFIG_SMP */
>
> BUG_ON(cpu!=smp_processor_id()) maybe?

This is the CONFIG_SMP=n case.

> Dave

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2007-02-20 00:23:10

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] drivers/net/vioc/: possible cleanups

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>...
> Changes since 2.6.20-rc6-mm3:
>...
> +Fabric7-VIOC-driver.patch
>...
> netdev stuff
>...


This patch contains the following possible cleanups:
- remove dead #ifdef EXPORT_SYMTAB code
- no "inline" functions in C files - gcc knows best whether or not to
inline static functions
- move the vioc_ethtool_ops prototype to a header file
- make needlessly global code static
- #if 0 unused code
- vioc_irq.c: remove the unused vioc_driver_lock

Signed-off-by: Adrian Bunk <[email protected]>

---

drivers/net/vioc/f7/sppapi.h | 2 -
drivers/net/vioc/khash.h | 10 -----
drivers/net/vioc/spp.c | 60 +++++++++++++++++++-----------
drivers/net/vioc/vioc_api.c | 5 ++
drivers/net/vioc/vioc_api.h | 3 +
drivers/net/vioc/vioc_driver.c | 3 -
drivers/net/vioc/vioc_ethtool.c | 2 -
drivers/net/vioc/vioc_irq.c | 9 +---
drivers/net/vioc/vioc_provision.c | 16 +++++---
drivers/net/vioc/vioc_receive.c | 2 -
drivers/net/vioc/vioc_spp.c | 6 +--
drivers/net/vioc/vioc_transmit.c | 40 +++++++++++---------
12 files changed, 85 insertions(+), 73 deletions(-)

--- linux-2.6.20-mm1/drivers/net/vioc/vioc_driver.c.old 2007-02-18 01:14:31.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/vioc_driver.c 2007-02-18 01:14:35.000000000 +0100
@@ -868,6 +868,3 @@
module_init(vioc_module_init);
module_exit(vioc_module_exit);

-#ifdef EXPORT_SYMTAB
-EXPORT_SYMBOL(vioc_viocdev);
-#endif /* EXPORT_SYMTAB */
--- linux-2.6.20-mm1/drivers/net/vioc/khash.h.old 2007-02-18 01:16:28.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/khash.h 2007-02-18 01:25:29.000000000 +0100
@@ -52,14 +52,4 @@
};


-struct shash_t *hashT_create(u32, size_t, size_t, u32(*)(unsigned char *, unsigned long), int(*)(void *, void *), unsigned int);
-int hashT_delete(struct shash_t * , void *);
-struct hash_elem_t *hashT_lookup(struct shash_t * , void *);
-struct hash_elem_t *hashT_add(struct shash_t *, void *);
-void hashT_destroy(struct shash_t *);
-/* Accesors */
-void **hashT_getkeys(struct shash_t *);
-size_t hashT_tablesize(struct shash_t *);
-size_t hashT_size(struct shash_t *);
-
#endif
--- linux-2.6.20-mm1/drivers/net/vioc/f7/sppapi.h.old 2007-02-18 01:26:44.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/f7/sppapi.h 2007-02-18 01:26:57.000000000 +0100
@@ -234,7 +234,5 @@

extern void spp_msg_unregister(u32 key_facility);

-extern int read_spp_regbank32(int vioc, int bank, char *buffer);
-
#endif /* _SPPAPI_H_ */

--- linux-2.6.20-mm1/drivers/net/vioc/spp.c.old 2007-02-18 01:19:34.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/spp.c 2007-02-18 01:27:13.000000000 +0100
@@ -50,6 +50,15 @@
c -= a; c -= b; c ^= (b >> 15); \
}

+static struct hash_elem_t *hashT_add(struct shash_t *htable, void *key);
+static struct shash_t *hashT_create(u32 sizehint, size_t keybuf_size,
+ size_t databuf_size,
+ u32(*hfunc) (unsigned char *,
+ unsigned long),
+ int (*cfunc) (void *, void *),
+ unsigned int flags);
+static void hashT_destroy(struct shash_t *htable);
+static struct hash_elem_t *hashT_lookup(struct shash_t *htable, void *key);

struct shash_t {
/* Common fields for all hash tables types */
@@ -65,7 +74,9 @@
};

struct hash_ops {
+#if 0
int (*delete) (struct shash_t *, void *);
+#endif /* 0 */
struct hash_elem_t *(*lookup) (struct shash_t *, void *);
void (*destroy) (struct shash_t *);
struct hash_elem_t *(*add) (struct shash_t *, void *);
@@ -143,6 +154,7 @@
return ((htable->hash_fn(key, len)) & (htable->tsize - 1));
}

+#if 0
/* Data associated to this key MUST be freed by the caller */
static int ch_delete(struct shash_t *htable, void *key)
{
@@ -181,6 +193,7 @@

return -1;
}
+#endif /* 0 */

static void ch_destroy(struct shash_t *htable)
{
@@ -232,16 +245,21 @@
}

/* Accesors ******************************************************************/
-inline size_t hashT_tablesize(struct shash_t * htable)
+
+#if 0
+
+size_t hashT_tablesize(struct shash_t * htable)
{
return htable->tsize;
}

-inline size_t hashT_size(struct shash_t * htable)
+size_t hashT_size(struct shash_t * htable)
{
return htable->nelems;
}

+#endif /* 0 */
+
static struct hash_elem_t *ch_lookup(struct shash_t *htable, void *key)
{
u32 idx;
@@ -330,15 +348,17 @@
return 1;
}

-struct hash_ops ch_ops = {
+static struct hash_ops ch_ops = {
+#if 0
.delete = ch_delete,
+#endif /* 0 */
.lookup = ch_lookup,
.destroy = ch_destroy,
.getkeys = ch_getkeys,
.add = ch_add
};

-struct facility fTable[FACILITY_CNT];
+static struct facility fTable[FACILITY_CNT];

int spp_init(void)
{
@@ -511,7 +531,7 @@
spin_unlock(&elem->lock);
}

-
+#if 0
int read_spp_regbank32(int vioc_idx, int bank, char *buffer)
{
struct vioc_device *viocdev = vioc_viocdev(vioc_idx);
@@ -531,14 +551,14 @@

return i;
}
+#endif /* 0 */

-struct shash_t *hashT_create(u32 sizehint,
- size_t keybuf_size,
- size_t databuf_size,
- u32(*hfunc) (unsigned char *,
- unsigned long),
- int (*cfunc) (void *, void *),
- unsigned int flags)
+static struct shash_t *hashT_create(u32 sizehint, size_t keybuf_size,
+ size_t databuf_size,
+ u32(*hfunc) (unsigned char *,
+ unsigned long),
+ int (*cfunc) (void *, void *),
+ unsigned int flags)
{
struct shash_t *htable;
u32 size = 0; /* Table size */
@@ -591,36 +611,34 @@
return htable;
}

+#if 0
int hashT_delete(struct shash_t *htable, void *key)
{
return htable->h_ops->delete(htable, key);
}
+#endif /* 0 */

-struct hash_elem_t *hashT_add(struct shash_t *htable, void *key)
+static struct hash_elem_t *hashT_add(struct shash_t *htable, void *key)
{
return htable->h_ops->add(htable, key);
}

-struct hash_elem_t *hashT_lookup(struct shash_t *htable, void *key)
+static struct hash_elem_t *hashT_lookup(struct shash_t *htable, void *key)
{
return htable->h_ops->lookup(htable, key);
}

-void hashT_destroy(struct shash_t *htable)
+static void hashT_destroy(struct shash_t *htable)
{
-
htable->h_ops->destroy(htable);

vfree(htable);
}

+#if 0
void **hashT_getkeys(struct shash_t *htable)
{
return htable->h_ops->getkeys(htable);
}
+#endif /* 0 */

-#ifdef EXPORT_SYMTAB
-EXPORT_SYMBOL(spp_msg_register);
-EXPORT_SYMBOL(spp_msg_unregister);
-EXPORT_SYMBOL(read_spp_regbank32);
-#endif
--- linux-2.6.20-mm1/drivers/net/vioc/vioc_spp.c.old 2007-02-18 01:22:54.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/vioc_spp.c 2007-02-18 01:34:50.000000000 +0100
@@ -84,12 +84,12 @@

static DECLARE_MUTEX(vnic_prov_sem);

-static inline void vnic_prov_get_sema(void)
+static void vnic_prov_get_sema(void)
{
down(&vnic_prov_sem);
}

-static inline void vnic_prov_put_sema(void)
+static void vnic_prov_put_sema(void)
{
up(&vnic_prov_sem);
}
@@ -290,7 +290,7 @@
vioc_reg_wr(1, viocdev->ba.virt, SPP_HB_SENSOR_REG);
}

-void vioc_reset_rq_to_bmc(int vioc_id, u32 command)
+static void vioc_reset_rq_to_bmc(int vioc_id, u32 command)
{
struct vioc_device *viocdev = vioc_viocdev(0);

--- linux-2.6.20-mm1/drivers/net/vioc/vioc_transmit.c.old 2007-02-18 01:23:30.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/vioc_transmit.c 2007-02-18 12:28:58.000000000 +0100
@@ -73,49 +73,52 @@
#define TXQ0 0
#define NOT_SET -1

-static inline u32 vnic_rd_txd_ctl(struct txq *txq)
+static u32 vnic_rd_txd_ctl(struct txq *txq)
{
return readl(txq->va_of_vreg_veng_txd_ctl);
}

-static inline void vnic_ring_tx_bell(struct txq *txq)
+static void vnic_ring_tx_bell(struct txq *txq)
{
writel(txq->shadow_VREG_VENG_TXD_CTL | VREG_VENG_TXD_CTL_QRING_MASK,
txq->va_of_vreg_veng_txd_ctl);
txq->bells++;
}

-static inline void vnic_reset_tx_ring_err(struct txq *txq)
+static void vnic_reset_tx_ring_err(struct txq *txq)
{
writel(txq->shadow_VREG_VENG_TXD_CTL |
(VREG_VENG_TXD_CTL_QENABLE_MASK | VREG_VENG_TXD_CTL_CLEARMASK),
txq->va_of_vreg_veng_txd_ctl);
}

-static inline void vnic_enable_tx_ring(struct txq *txq)
+static void vnic_enable_tx_ring(struct txq *txq)
{
txq->shadow_VREG_VENG_TXD_CTL = VREG_VENG_TXD_CTL_QENABLE_MASK;
writel(txq->shadow_VREG_VENG_TXD_CTL, txq->va_of_vreg_veng_txd_ctl);
}

-static inline void vnic_disable_tx_ring(struct txq *txq)
+static void vnic_disable_tx_ring(struct txq *txq)
{
txq->shadow_VREG_VENG_TXD_CTL = 0;
writel(0, txq->va_of_vreg_veng_txd_ctl);
}

-static inline void vnic_pause_tx_ring(struct txq *txq)
+#if 0
+
+static void vnic_pause_tx_ring(struct txq *txq)
{
txq->shadow_VREG_VENG_TXD_CTL |= VREG_VENG_TXD_CTL_QPAUSE_MASK;
writel(txq->shadow_VREG_VENG_TXD_CTL, txq->va_of_vreg_veng_txd_ctl);
}

-static inline void vnic_resume_tx_ring(struct txq *txq)
+static void vnic_resume_tx_ring(struct txq *txq)
{
txq->shadow_VREG_VENG_TXD_CTL &= ~VREG_VENG_TXD_CTL_QPAUSE_MASK;
writel(txq->shadow_VREG_VENG_TXD_CTL, txq->va_of_vreg_veng_txd_ctl);
}

+#endif /* 0 */

/* TxQ must be locked */
static void vnic_reset_txq(struct vnic_device *vnicdev, struct txq *txq)
@@ -395,8 +398,9 @@
viocdev->vioc_stats.tx_tasklets++;
// read_unlock(&viocdev->lock);
}
-void vnic_enqueue_tx_pkt(struct vnic_device *vnicdev, struct txq *txq,
- struct sk_buff *skb, struct vioc_prov *prov)
+
+static void vnic_enqueue_tx_pkt(struct vnic_device *vnicdev, struct txq *txq,
+ struct sk_buff *skb, struct vioc_prov *prov)
{
int idx, sop_idx, eop_idx, f;
struct tx_pktBufDesc_Phys_w *txd;
@@ -512,8 +516,9 @@

}

-void vnic_enqueue_tx_buffers(struct vnic_device *vnicdev, struct txq *txq,
- struct sk_buff *skb, struct vioc_prov *prov)
+static void vnic_enqueue_tx_buffers(struct vnic_device *vnicdev,
+ struct txq *txq, struct sk_buff *skb,
+ struct vioc_prov *prov)
{
int len;
int idx;
@@ -586,7 +591,7 @@
txq->next_to_use = idx;
}

-static inline void init_f7_header(struct sk_buff *skb)
+static void init_f7_header(struct sk_buff *skb)
{
struct vioc_f7pf_w *f7p;
unsigned char tag;
@@ -675,7 +680,7 @@
* not hold - add a tx_enabled flag to the vnic struct protected
* by txq->lock. Or just read-lock the VIOC.
*/
-int vnic_start_xmit(struct sk_buff *skb, struct net_device *netdev)
+static int vnic_start_xmit(struct sk_buff *skb, struct net_device *netdev)
{
struct vnic_device *vnicdev = netdev->priv;
struct txq *txq = &vnicdev->txq;
@@ -734,8 +739,9 @@
* saddr=NULL means use device source address
* daddr=NULL means leave destination address (eg unresolved arp)
*/
-int vnic_eth_header(struct sk_buff *skb, struct net_device *dev,
- unsigned short type, void *daddr, void *saddr, unsigned len)
+static int vnic_eth_header(struct sk_buff *skb, struct net_device *dev,
+ unsigned short type, void *daddr, void *saddr,
+ unsigned len)
{
struct ethhdr *eth = (struct ethhdr *)skb_push(skb, ETH_HLEN);

@@ -952,6 +958,7 @@
vnicdev->txq.vbuf = NULL;
}

+#if 0
void vioc_reset_if_tx(struct net_device *netdev)
{
struct vnic_device *vnicdev = netdev->priv;
@@ -959,8 +966,7 @@

vnic_reset_txq(vnicdev, txq);
}
-
-extern struct ethtool_ops vioc_ethtool_ops;
+#endif /* 0 */

/**
* vnic_uninit - Device Termination Routine
--- linux-2.6.20-mm1/drivers/net/vioc/vioc_api.h.old 2007-02-18 01:28:17.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/vioc_api.h 2007-02-18 01:56:08.000000000 +0100
@@ -30,11 +30,12 @@
#include <asm/io.h>
#include "vioc_vnic.h"

+extern struct ethtool_ops vioc_ethtool_ops;
+
extern int vioc_vnic_resources_set(int vioc_id, u32 vnic_id);
extern void vioc_sw_reset(int vioc_id);
extern u32 vioc_rrd(int vioc_id, int module_id, int vnic_id, int reg_addr);
extern int vioc_rwr(int vioc_id, int module_id, int vnic_id, int reg_addr, u32 value);
-extern int vioc_set_vnic_mac(int vioc_id, u32 vnic_id, u8 * p);
extern int vioc_get_vnic_mac(int vioc_id, u32 vnic_id, u8 * p);
extern int vioc_set_txq(int vioc_id, u32 vnic_id, u32 txq_id, dma_addr_t base,
u32 num_elements);
--- linux-2.6.20-mm1/drivers/net/vioc/vioc_api.c.old 2007-02-18 01:27:41.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/vioc_api.c 2007-02-18 01:28:59.000000000 +0100
@@ -46,7 +46,8 @@
#include "vioc_vnic.h"
#include "vioc_api.h"

-int vioc_set_rx_intr_param(int viocdev_idx, int rx_intr_id, u32 timeout, u32 cntout)
+static int vioc_set_rx_intr_param(int viocdev_idx, int rx_intr_id,
+ u32 timeout, u32 cntout)
{
int ret = 0;
struct vioc_device *viocdev;
@@ -83,6 +84,7 @@
return 0;
}

+#if 0
int vioc_set_vnic_mac(int viocdev_idx, u32 vnic_id, u8 * p)
{
struct vioc_device *viocdev = vioc_viocdev(viocdev_idx);
@@ -101,6 +103,7 @@

return 0;
}
+#endif /* 0 */

int vioc_set_txq(int viocdev_idx, u32 vnic_id, u32 txq_id, dma_addr_t base,
u32 num_elements)
--- linux-2.6.20-mm1/drivers/net/vioc/vioc_ethtool.c.old 2007-02-18 01:29:21.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/vioc_ethtool.c 2007-02-18 01:29:36.000000000 +0100
@@ -155,7 +155,7 @@
return 0;
}

-int vioc_trace;
+static int vioc_trace;

static u32 vnic_get_msglevel(struct net_device *netdev)
{
--- linux-2.6.20-mm1/drivers/net/vioc/vioc_irq.c.old 2007-02-18 01:29:59.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/vioc_irq.c 2007-02-18 12:56:33.000000000 +0100
@@ -55,9 +55,6 @@
#define VIOC_INTERRUPTS_CNT 19 /* 16 Rx + 1 Tx + 1 BMC + 1 Error */
#define VIOC_INTERRUPTS_CNT_PIN_IRQ 4 /* 2 Rx + 1 Tx + 1 BMC */

-#define VIOC_SLVAR(x) x spinlock_t vioc_driver_lock = SPIN_LOCK_UNLOCKED
-#define VIOC_CLI spin_lock_irq(&vioc_driver_lock)
-#define VIOC_STI spin_unlock_irq(&vioc_driver_lock)
#define IRQRETURN return IRQ_HANDLED
#define TX_IRQ_IDX 16
#define BMC_IRQ_IDX 17
@@ -92,9 +89,7 @@
};

/* GLOBAL VIOC Interrupt table/structure */
-struct viocdev_intreq vioc_interrupts[VIOC_MAX_VIOCS];
-
-VIOC_SLVAR();
+static struct viocdev_intreq vioc_interrupts[VIOC_MAX_VIOCS];

static irqreturn_t taskq_handler(int i, void *p)
{
@@ -227,7 +222,7 @@
return 0;
}

-int get_pci_pin_irq(struct pci_dev *dev_in, int func)
+static int get_pci_pin_irq(struct pci_dev *dev_in, int func)
{
struct pci_dev *dev = NULL;
unsigned int slot, fn, devfn;
--- linux-2.6.20-mm1/drivers/net/vioc/vioc_provision.c.old 2007-02-18 01:32:09.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/vioc_provision.c 2007-02-18 12:55:56.000000000 +0100
@@ -75,7 +75,7 @@

*/

-struct vnic_prov_def vnic_set_0 = {
+static struct vnic_prov_def vnic_set_0 = {
.rxd_ring[0].buf_size = RXDQ_SMALL_ALLOC_BUFSIZE,
.rxd_ring[0].entries = RXDQ_SMALL_ENTRIES,
.rxd_ring[0].id = 0,
@@ -92,7 +92,7 @@
0,.rxc_intr_id = 0
};

-struct vnic_prov_def vnic_set_1 = {
+static struct vnic_prov_def vnic_set_1 = {
.rxd_ring[0].buf_size = RXDQ_SMALL_ALLOC_BUFSIZE,
.rxd_ring[0].entries = RXDQ_SMALL_ENTRIES,
.rxd_ring[0].id = 4,
@@ -109,7 +109,7 @@
1,.rxc_intr_id = 1
};

-struct vnic_prov_def vnic_set_2 = {
+static struct vnic_prov_def vnic_set_2 = {
.rxd_ring[0].buf_size = RXDQ_SMALL_ALLOC_BUFSIZE,
.rxd_ring[0].entries = RXDQ_SMALL_ENTRIES,
.rxd_ring[0].id = 8,
@@ -126,7 +126,7 @@
2,.rxc_intr_id = 2
};

-struct vnic_prov_def vnic_set_3 = {
+static struct vnic_prov_def vnic_set_3 = {
.rxd_ring[0].buf_size = RXDQ_SMALL_ALLOC_BUFSIZE,
.rxd_ring[0].entries = RXDQ_SMALL_ENTRIES,
.rxd_ring[0].id = 12,
@@ -143,6 +143,7 @@
3,.rxc_intr_id = 3
};

+#if 0
struct vnic_prov_def vnic_set_sim = {
.rxd_ring[0].buf_size = RXDQ_STD_ALLOC_BUFSIZE,
.rxd_ring[0].entries = 256,
@@ -158,8 +159,9 @@
.rxd_ring[2].state = 1,
.tx_entries = 256,.rxc_entries = 256 * 3,.rxc_id = 0,.rxc_intr_id = 0
};
+#endif /* 0 */

-struct vnic_prov_def *vnic_prov_pmm_pin_irq[VIOC_MAX_VNICS] = {
+static struct vnic_prov_def *vnic_prov_pmm_pin_irq[VIOC_MAX_VNICS] = {
&vnic_set_0,
&vnic_set_1,
&vnic_set_0,
@@ -178,7 +180,7 @@
&vnic_set_1
};

-struct vnic_prov_def *vnic_prov_pmm_msi_x[VIOC_MAX_VNICS] = {
+static struct vnic_prov_def *vnic_prov_pmm_msi_x[VIOC_MAX_VNICS] = {
&vnic_set_0,
&vnic_set_1,
&vnic_set_2,
@@ -197,6 +199,7 @@
&vnic_set_3
};

+#if 0
struct vnic_prov_def *vnic_prov_sim[VIOC_MAX_VNICS] = {
&vnic_set_sim,
&vnic_set_sim,
@@ -215,6 +218,7 @@
&vnic_set_sim,
&vnic_set_sim
};
+#endif /* 0 */

struct vnic_prov_def **vioc_prov_get(int num_rx_irq)
{
--- linux-2.6.20-mm1/drivers/net/vioc/vioc_receive.c.old 2007-02-18 01:34:23.000000000 +0100
+++ linux-2.6.20-mm1/drivers/net/vioc/vioc_receive.c 2007-02-18 01:34:30.000000000 +0100
@@ -58,7 +58,7 @@
* one RxSet, no locking is needed on RxDQs or RxCQs.
* Return true if we got a packet, false if the queue is empty.
*/
-int vioc_rx_pkt(struct vioc_device *viocdev, struct rxc *rxc, u32 sw_idx)
+static int vioc_rx_pkt(struct vioc_device *viocdev, struct rxc *rxc, u32 sw_idx)
{
u32 rx_status;
u32 vnic_id;

2007-02-20 00:32:04

by Dave Jones

[permalink] [raw]
Subject: Re: [-mm patch] {rd,wr}msr_on_cpu SMP=n optimization

On Tue, Feb 20, 2007 at 01:21:45AM +0100, Adrian Bunk wrote:
> On Mon, Feb 19, 2007 at 07:14:34PM -0500, Dave Jones wrote:
> > On Tue, Feb 20, 2007 at 01:07:13AM +0100, Adrian Bunk wrote:
> >...
> > > +#ifdef CONFIG_SMP
> > > void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
> > > void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
> > > +#else /* CONFIG_SMP */
> > > +static inline void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
> > > +{
> > > + rdmsr(msr_no, *l, *h);
> > > +}
> > > +static inline void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
> > > +{
> > > + wrmsr(msr_no, l, h);
> > > +}
> > > +#endif /* CONFIG_SMP */
> >
> > BUG_ON(cpu!=smp_processor_id()) maybe?
>
> This is the CONFIG_SMP=n case.

Yes. If someone is asking for the MSR on a specific CPU in UP mode,
it's a bug.

Dave

--
http://www.codemonkey.org.uk

2007-02-20 02:14:26

by Eric W. Biederman

[permalink] [raw]
Subject: Re: [-mm patch] make ipc/shm.c:shm_nopage() static

Adrian Bunk <[email protected]> writes:

> On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>>...
>> Changes since 2.6.20-rc6-mm3:
>>...
>> +shm-make-sysv-ipc-shared-memory-use-stacked-files.patch
>>...
>> Misc
>>...
>
>
> shm_nopage() can become static.

Acked-by: Eric W. Biederman <[email protected]>


>
> Signed-off-by: Adrian Bunk <[email protected]>
>
> ---
> --- linux-2.6.20-mm2/ipc/shm.c.old 2007-02-18 22:58:03.000000000 +0100
> +++ linux-2.6.20-mm2/ipc/shm.c 2007-02-18 22:58:18.000000000 +0100
> @@ -226,8 +226,8 @@
> mutex_unlock(&shm_ids(ns).mutex);
> }
>
> -struct page *shm_nopage(struct vm_area_struct *vma, unsigned long address,
> - int *type)
> +static struct page *shm_nopage(struct vm_area_struct *vma,
> + unsigned long address, int *type)
> {
> struct file *file = vma->vm_file;
> struct shm_file_data *sfd = shm_file_data(file);

2007-02-20 13:44:41

by Alexey Dobriyan

[permalink] [raw]
Subject: Re: [-mm patch] {rd,wr}msr_on_cpu SMP=n optimization

On Mon, Feb 19, 2007 at 07:14:34PM -0500, Dave Jones wrote:
> On Tue, Feb 20, 2007 at 01:07:13AM +0100, Adrian Bunk wrote:
> > On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
> > >...
> > > Changes since 2.6.20-rc6-mm3:
> > >...
> > > +rdmsr_on_cpu-wrmsr_on_cpu.patch
> > >...
> > > x86 updates
> > >...
> >
> > Let's save a few bytes in the CONFIG_SMP=n case.
> >
> > Signed-off-by: Adrian Bunk <[email protected]>
> >
> > ---
> >
> > BTW: currently -ENOUSERS
>
> There was a follow-on patch that converted p4-clockmod to use it for one.

And patch for powernow-k8 in preparations.

> > +#ifdef CONFIG_SMP
> > void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
> > void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
> > +#else /* CONFIG_SMP */
> > +static inline void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
> > +{
> > + rdmsr(msr_no, *l, *h);
> > +}
> > +static inline void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
> > +{
> > + wrmsr(msr_no, l, h);
> > +}
> > +#endif /* CONFIG_SMP */
>
> BUG_ON(cpu!=smp_processor_id()) maybe?

This make sense. Fell free to add it.

2007-02-20 16:15:39

by Michael Ira Krufky

[permalink] [raw]
Subject: Re: [v4l-dvb-maintainer] [-mm patch] make dvb_usb_gl861_debug static

Adrian Bunk wrote:
> On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
>> ...
>> Changes since 2.6.20-rc6-mm3:
>> ...
>> git-dvb.patch
>> ...
>> git trees.
>> ...
>
> This patch makes the needlessly global dvb_usb_gl861_debug static.
>
> Signed-off-by: Adrian Bunk <[email protected]>

Acked-by: Michael Krufky <[email protected]>

>
> ---
> --- linux-2.6.20-mm1/drivers/media/dvb/dvb-usb/gl861.c.old 2007-02-17 17:49:03.000000000 +0100
> +++ linux-2.6.20-mm1/drivers/media/dvb/dvb-usb/gl861.c 2007-02-17 17:49:20.000000000 +0100
> @@ -12,7 +12,7 @@
> #include "qt1010.h"
>
> /* debug */
> -int dvb_usb_gl861_debug;
> +static int dvb_usb_gl861_debug;
> module_param_named(debug,dvb_usb_gl861_debug, int, 0644);
> MODULE_PARM_DESC(debug, "set debugging level (1=rc (or-able))." DVB_USB_DEBUG_STATUS);
>
>
>
> _______________________________________________
> v4l-dvb-maintainer mailing list
> [email protected]
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/v4l-dvb-maintainer


--
Michael Krufky

2007-02-20 19:27:37

by Dave Jones

[permalink] [raw]
Subject: Re: [-mm patch] {rd,wr}msr_on_cpu SMP=n optimization

On Tue, Feb 20, 2007 at 04:50:44PM +0300, Alexey Dobriyan wrote:
> On Mon, Feb 19, 2007 at 07:14:34PM -0500, Dave Jones wrote:
> > On Tue, Feb 20, 2007 at 01:07:13AM +0100, Adrian Bunk wrote:
> > > On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
> > > >...
> > > > Changes since 2.6.20-rc6-mm3:
> > > >...
> > > > +rdmsr_on_cpu-wrmsr_on_cpu.patch
> > > >...
> > > > x86 updates
> > > >...
> > >
> > > Let's save a few bytes in the CONFIG_SMP=n case.
> > >
> > > Signed-off-by: Adrian Bunk <[email protected]>
> > >
> > > ---
> > >
> > > BTW: currently -ENOUSERS
> >
> > There was a follow-on patch that converted p4-clockmod to use it for one.
>
> And patch for powernow-k8 in preparations.

Cool. Can you resend me the p4-clockmod diff, I seem to have lost it.
I've just merged up the *msr_on_cpu diff (and will apply Adrians cleanup too).

thanks,

Dave

--
http://www.codemonkey.org.uk

2007-02-20 23:15:53

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: [-mm patch] marker exports must be EXPORT_SYMBOL_GPL

* Adrian Bunk ([email protected]) wrote:
> On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
> >...
> > - Added the Linux Kernel Markers code. No idea how to use it and it
> > seems we're not to be told.
> >...
> > Changes since 2.6.20-rc6-mm3:
> >...
> > +linux-kernel-markers-kconfig-menus.patch
> > +linux-kernel-markers-architecture-independant-code.patch
> > +linux-kernel-markers-powerpc-optimization.patch
> > +linux-kernel-markers-i386-optimization.patch
> > +linux-kernel-markers-non-optimized-architectures.patch
> >
> > Linux Kenrel Markers
> >...
>
>
> This is definitely functionality illegal modules have no business to
> use.
>
> Signed-off-by: Adrian Bunk <[email protected]>

Acked-by: Mathieu Desnoyers <[email protected]>

>
> ---
>
> arch/i386/kernel/marker.c | 2 +-
> kernel/module.c | 10 +++++-----
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> --- linux-2.6.20-mm1/kernel/module.c.old 2007-02-15 16:02:09.000000000 +0100
> +++ linux-2.6.20-mm1/kernel/module.c 2007-02-15 16:03:08.000000000 +0100
> @@ -304,7 +304,7 @@
> void __mark_empty_function(const char *fmt, ...)
> {
> }
> -EXPORT_SYMBOL(__mark_empty_function);
> +EXPORT_SYMBOL_GPL(__mark_empty_function);
>
> #ifdef MARK_POLYMORPHIC
> static int marker_set_ins_enable(void *address, char enable)
> @@ -461,7 +461,7 @@
> mutex_unlock(&module_mutex);
> return found;
> }
> -EXPORT_SYMBOL(marker_set_probe);
> +EXPORT_SYMBOL_GPL(marker_set_probe);
>
> int marker_remove_probe(marker_probe_func *probe)
> {
> @@ -481,7 +481,7 @@
> mutex_unlock(&module_mutex);
> return found;
> }
> -EXPORT_SYMBOL(marker_remove_probe);
> +EXPORT_SYMBOL_GPL(marker_remove_probe);
>
> int marker_list_probe(marker_probe_func *probe)
> {
> @@ -505,7 +505,7 @@
> mutex_unlock(&module_mutex);
> return found;
> }
> -EXPORT_SYMBOL(marker_list_probe);
> +EXPORT_SYMBOL_GPL(marker_list_probe);
> #endif
>
> #ifdef CONFIG_SMP
> @@ -2510,7 +2510,7 @@
> }
> mutex_unlock(&module_mutex);
> }
> -EXPORT_SYMBOL(list_modules);
> +EXPORT_SYMBOL_GPL(list_modules);
>
> /* Given an address, look for it in the module exception tables. */
> const struct exception_table_entry *search_module_extables(unsigned long addr)
> --- linux-2.6.20-mm1/arch/i386/kernel/marker.c.old 2007-02-15 16:03:22.000000000 +0100
> +++ linux-2.6.20-mm1/arch/i386/kernel/marker.c 2007-02-15 16:03:34.000000000 +0100
> @@ -90,4 +90,4 @@
> flush_icache_range(address, size);
> return 0;
> }
> -EXPORT_SYMBOL(arch_marker_set_ins_enable);
> +EXPORT_SYMBOL_GPL(arch_marker_set_ins_enable);
>
>
>
>
>

--
Mathieu Desnoyers
Computer Engineering Ph.D. Candidate, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-02-21 10:15:47

by Roland McGrath

[permalink] [raw]
Subject: Re: 2.6.20-mm1: PTRACE=y, PROC_FS=n compile error

> This causes the following compile error with CONFIG_PTRACE=y,
> CONFIG_PROC_FS=n:

Bah. I moved ptrace_may_attach to fs/proc/base.c so that CONFIG_PTRACE=n
could just omit kernel/ptrace.c entirely and still get the function for
fs/proc/base.c to use (and because that uses it many more times than ptrace
does). I'd forgotten that procfs could be disabled, since noone ever does.

What do people suggest? It's not a very big function.


Thanks,
Roland

2007-02-22 03:36:11

by Christoph Hellwig

[permalink] [raw]
Subject: Re: 2.6.20-mm1: PTRACE=y, PROC_FS=n compile error

On Wed, Feb 21, 2007 at 02:15:10AM -0800, Roland McGrath wrote:
> > This causes the following compile error with CONFIG_PTRACE=y,
> > CONFIG_PROC_FS=n:
>
> Bah. I moved ptrace_may_attach to fs/proc/base.c so that CONFIG_PTRACE=n
> could just omit kernel/ptrace.c entirely and still get the function for
> fs/proc/base.c to use (and because that uses it many more times than ptrace
> does). I'd forgotten that procfs could be disabled, since noone ever does.
>
> What do people suggest? It's not a very big function.

Put it into some other place in kernel/ that's always build, e.g.
kernel/sys.c and while you;re at it please give it a name that doesn't
include the word ptrace.

I remember mentioning that in my long utrace review mail.. :)