2007-05-31 06:58:40

by Andrew Morton

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


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

- Merged the convert-cpusets-to-container-infrastructure patches. These
will probably be dropped and redone.



Boilerplate:

- See the `hot-fixes' directory for any important updates to this patchset.

- To fetch an -mm tree using git, use (for example)

git-fetch git://git.kernel.org/pub/scm/linux/kernel/git/smurf/linux-trees.git tag v2.6.16-rc2-mm1
git-checkout -b local-v2.6.16-rc2-mm1 v2.6.16-rc2-mm1

- -mm kernel commit activity can be reviewed by subscribing to the
mm-commits mailing list.

echo "subscribe mm-commits" | mail [email protected]

- If you hit a bug in -mm and it is not obvious which patch caused it, it is
most valuable if you can perform a bisection search to identify which patch
introduced the bug. Instructions for this process are at

http://www.zip.com.au/~akpm/linux/patches/stuff/bisecting-mm-trees.txt

But beware that this process takes some time (around ten rebuilds and
reboots), so consider reporting the bug first and if we cannot immediately
identify the faulty patch, then perform the bisection search.

- When reporting bugs, please try to Cc: the relevant maintainer and mailing
list on any email.

- When reporting bugs in this kernel via email, please also rewrite the
email Subject: in some manner to reflect the nature of the bug. Some
developers filter by Subject: when looking for messages to read.

- Occasional snapshots of the -mm lineup are uploaded to
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/mm/ and are announced on
the mm-commits list.



Changes since 2.6.22-rc2-mm1:


origin.patch
git-acpi.patch
git-alsa.patch
git-avr32.patch
git-cifs.patch
git-cpufreq.patch
git-drm.patch
git-dvb.patch
git-gfs2-nmw.patch
git-hid.patch
git-ieee1394.patch
git-input.patch
git-kbuild.patch
git-kvm.patch
git-leds.patch
git-libata-all.patch
git-md-accel.patch
git-mips.patch
git-mmc.patch
git-mtd.patch
git-ubi.patch
git-netdev-all.patch
git-net.patch
git-backlight.patch
git-battery.patch
git-ioat.patch
git-ioat-vs-git-md-accel.patch
git-nfs.patch
git-nfs-server-cluster-locking-api.patch
git-ocfs2.patch
git-parisc.patch
git-r8169.patch
git-selinux.patch
git-pciseg.patch
git-s390.patch
git-sh.patch
git-scsi-misc.patch
git-scsi-rc-fixes.patch
git-scsi-target.patch
git-unionfs.patch
git-watchdog.patch
git-wireless.patch
git-ipwireless_cs.patch
git-newsetup.patch
git-xfs.patch
git-cryptodev.patch
git-xtensa.patch
git-gccbug.patch

git trees

-powerpc-fix.patch
-freezer-close-potential-race-between-refrigerator-and-thaw_tasks.patch
-freezer-fix-vfork-problem.patch
-freezer-take-kernel_execve-into-consideration.patch
-freezer-fix-kthread_create-vs-freezer-theoretical-race.patch
-freezer-fix-pf_nofreeze-vs-freezeable-race.patch
-freezer-move-frozen_process-to-kernel-power-processc.patch
-ignore-bogus-acpi-info-for-offline-cpus.patch
-slub-debug-fix-object-size-calculation.patch
-fuse-fix-mknod-of-regular-file.patch
-mpc52xx_psc_spi-fix-it-for-config_ppc_merge.patch
-spi-doc-update-describe-clock-mode-bits.patch
-nohz-rate-limit-the-local-softirq-pending-warning-output.patch
-genhd-expose-an-to-user-space.patch
-genhd-send-async-notification-on-media-change.patch
-capabilityh-warning-fix.patch
-remove-unused-header-file-arch-arm-mach-s3c2410-basth.patch
-avr32-ratelimit-segfault-reporting-rate.patch
-cifs-oops-fix.patch
-powerpc-fix-kconfig-select-warning-with-ucc_fast.patch
-8xx-mpc885ads-pcmcia-support-fix.patch
-gregkh-driver-howto-removing-duplicated-entry.patch
-drm-spinlock-initializer-cleanup.patch
-cinergyt2-fix-file-release-handler.patch
-saa7111-fix-picture-settings-cache-bug.patch
-jdelvare-i2c-i2c-legacy-drivers-shouldnt-issue-uevents.patch
-jdelvare-i2c-i2c-usb-tiny-fix-name-length.patch
-jdelvare-i2c-i2c-s3c2410-fix-build-warning.patch
-jdelvare-hwmon-hwmon-ds1621-swapped-limits.patch
-jdelvare-hwmon-hwmon-coretemp-add-more-safety-checks.patch
-jdelvare-hwmon-hwmon-w83627hf-quiet-when-no-chip.patch
-dave-broke-gfs2-26-nmwgit.patch
-use-menuconfig-objects-ii-kvm-virt.patch
-libata-acpi-add-infrastructure-for-drivers-to-use.patch
-pata_acpi-restore-driver-vs-libata-clean-up-sff-init-mess-fix.patch
-optional-led-trigger-for-libata.patch
-libata-add-support-for-ata_16-on-atapi.patch
-drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61.patch
-drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61-fix.patch
-drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61-fix-tidy.patch
-cleanup-libata-hpa-support.patch
-cleanup-libata-hpa-support-fix.patch
-hpt3x2n-correct-revision-boundary.patch
-pata_sis-fix-and-clean-up-some-timing-setups.patch
-ide-aec62xx-kill-speedproc-method-wrapper.patch
-ide-warning-fixes.patch
-ide-add-seagate-stt20000a-to-dma-blacklist.patch
-git-md-accel-build-fix.patch
-sundance-change-phy-address-search-from-phy=1-to-phy=0.patch
-forcedeth-add-vitesse-phy.patch
-forcedeth-fix-power-management-support.patch
-forcedeth-fix-cpu-irq-mask.patch
-forcedeth-version-bump.patch
-use-mutex-instead-of-binary-semaphore-in-idt77252-driver.patch
-use-menuconfig-objects-dccp.patch
-use-menuconfig-objects-ipvs.patch
-use-menuconfig-objects-sctp.patch
-use-menuconfig-objects-tipc.patch
-use-menuconfig-objects-arcnet.patch
-use-menuconfig-objects-toeknring.patch
-af_rxrpc-af_rxrpc-depends-on-ipv4.patch
-af_rxrpc-make-call-state-names-available-if-config_proc_fs=n.patch
-xfrm_algo-warning-fixes.patch
-round_up-macro-cleanup-in-drivers-parisc.patch
-pci-quirks-disable-msi-on-rs400-200-and-rs480.patch
-drivers-scsi-advansysc-cleanups.patch
-remove-unnecessary-check-in-drivers-scsi-sgc.patch
-drivers-scsi-ncr5380c-replacing-yield-with-a.patch
-scsi-cover-up-bugs-fix-up-compiler-warnings-in-megaraid-driver.patch
-fdomainc-get-rid-of-unused-stuff.patch
-scsi-fix-config_scsi_wait_scan=m.patch
-scsi-use-irq_handler_t-where-appropriate.patch
-drivers-scsi-ipsc-remove-kernel-24-code.patch
-drivers-scsi-nsp32c-remove-kernel-24-code.patch
-aic94xx-asd_clear_nexus-should-fail-if-the-cleared-task-does-not-complete.patch
-scsi-megaraid_sas-intercepts-cmd-timeout-and-throttle-io.patch
-scsi-remove-__gfp_dma.patch
-ncr5380-warning-fixes.patch
-gregkh-usb-usb-fix-omninet-memory-leak-found-by-coverity.patch
-gregkh-usb-usb-remove-useless-check-in-mos7840-found-by-coverity.patch
-gregkh-usb-usb-storage-ignore-sitecom-wl-117-usb-wlan.patch
-gregkh-usb-usb-fix-more-ftdi-elan-u132-hcd-include-lossage.patch
-gregkh-usb-usb-handle-more-rndis_host-oddities.patch
-gregkh-usb-usb-remove-usb-docbook-warnings.patch
-gregkh-usb-usb-address-fixme-in-usbnet-wrt-drivers-claiming-multiple-interfaces.patch
-gregkh-usb-ehci-fix-problem-with-bios-handoff.patch
-gregkh-usb-usb-more-autosuspend-timer-stuff.patch
-gregkh-usb-usb-remove-unneeded-warn_on.patch
-gregkh-usb-usb-new-device-pid-for-ftdi_sio-driver.patch
-gregkh-usb-usb-set-the-correct-interrupt-interval-in-usb_bulk_msg.patch
-gregkh-usb-usb-fsl_usb2_udc-fix-umti_wide-support-and-a-compile-warning.patch
-gregkh-usb-usb-auerswald-fix-file-release-handler.patch
-gregkh-usb-usb-remove-duplicate-ids-from-option-card-driver.patch
-gregkh-usb-usb-deref-urb-after-usbmon-is-done-with-it.patch
-gregkh-usb-usb-remove-short-initial-timeout-for-device-descriptor-fetch.patch
-gregkh-usb-usb-don-t-try-to-kzalloc-0-bytes.patch
-gregkh-usb-usb-onetouch-switch-to-using-input_dev-devparent.patch
-gregkh-usb-usb-fix-debug-output-of-ark3116.patch
-gregkh-usb-usb-usblp-use-correct-dma-address-in-case-of-probe-error.patch
-gregkh-usb-usb-fix-usb-ohci-subvendor-for-toshiba-portege-4000.patch
-gregkh-usb-usb-make-the-autosuspend-workqueue-thread-freezable.patch
-gregkh-usb-usb-handle-errors-in-power-level-attribute.patch
-gregkh-usb-usb-fix-ratelimit-call-semantics.patch
-gregkh-usb-usb-fix-race-between-autosuspend-and-unregister-for-root-hubs.patch
-usb-core-hubc-loops-forever-on-resume-from-ram-due-to.patch
-watchdog-documentation.patch
-drivers-net-wireless-libertas-rxc-fix.patch
-arch-x86_64-vdso-vmac-needs-schedh.patch
-x86_64-build-and-use-gdt-on-copied-compressed-kernel.patch
-i386-efi-fix-proc-iomem-type-for-kexec-tools.patch
-bug-in-i386-mtrr-initialization.patch
-xfs-clean-up-shrinker-games.patch
-xfs-use-zero_user_page.patch
-prohibit-rcutorture-from-being-compiled-into-the-kernel.patch
-avoid-zero-size-allocation-in-cache_k8_northbridges.patch
-recalc_sigpending_tsk-fixes.patch
-optimize-compat_core_sys_select-by-a-using-stack-space-for-small-fd-sets.patch
-spi-potential-memleak-in-spidev_ioctl.patch
-fbdev-cleanup-of-sparc-fb-options.patch
-pm2fb-rdac_wr-barriers-clean-up.patch
-pm3fb-various-fixes.patch
-w100fb-fix-compile-warnings.patch
-ps3fb-use-fb_sys_-instead-of-fb_cfb_.patch
-imxfb-remove-ifdefs.patch
-imxfb-fix-memory-hole.patch
-missing-const-from-reiserfs-min_key-declaration.patch
-uselib-add-missing-mnt_noexec-check.patch
x86_64-allocate-sparsemem-memmap-above-4g.patch
-x86_64-allocate-sparsemem-memmap-above-4g-fix.patch
-fuse-generic_write_checks-for-direct_io.patch
-fuse-delete-inode-on-drop.patch
-slub-debug-fix-check-for-super-sized-slabs-512k-64bit-256k.patch
-char-cyclades-fix-deadlock.patch
-simplify-cleanup_workqueue_thread.patch
-simplify-cleanup_workqueue_thread-fix.patch
-simplify-cleanup_workqueue_thread-fix2.patch
-misc-phantom-move-to-unlocked_ioctl.patch
-misc-misc-phantom-move-to-unlocked_ioctl-fix.patch
-misc-phantom-take-care-of-pci-posting.patch
-power-fix-sizeofpage_size-typo.patch
-update-dontdiff-file.patch
-signalfd-retrieve-multiple-signals-with-one-read-call.patch
-signalfd-retrieve-multiple-signals-with-one-read-call-tidy.patch
-i2o-destroy-event-queue-only-when-drv-event-is-set.patch
-i2o-fix-notifiers-when-max_drivers-is-configured.patch
-i2o-eliminate-a-peculiar-constraint-on-i2o_max_drivers.patch
-i386-x86-64-show-that-config_hotplug_cpu-is-required-for-suspend-on-smp.patch
-md-avoid-overflow-in-raid0-calculation-with-large-components.patch
-md-dont-write-more-than-is-required-of-the-last-page-of-a-bitmap.patch
-md-fix-bug-with-linear-hot-add-and-elsewhere.patch
-hisax-fix-error-checking-for-hisax_register.patch
-sch_htb-fix-event-cache-time-calculation.patch
-applesmc-sensors-patch-missing-from-2622-rc2.patch
-off-by-one-in-floppyc.patch
-ecryptfs-delay-writing-0s-after-llseek-until-write.patch
-doc-clocksources.patch
-ehci-fsl-fix-cache-coherency-problem-on-system-with-large-memory.patch
-prevent-going-idle-with-softirq-pending.patch
-i386-fix-early-usage-of-atomic_add_return-and.patch
-omap_uwire-spi_cpha-mode-bugfix.patch
-ads7846-spi_cpha-mode-bugfix.patch
-capifunc-warning-fixes.patch
-hardware-eicon-messagec-warning-fixes.patch
-delete-every-useless-reference-to-noret_type-in-the-tree.patch
-ext4-copy-i_flags-to-inode-flags-on-write.patch
-firestream-warnings.patch

Merged into mainline or a subsystem tree

+slub-more-documentation.patch
+slub-more-documentation-fix.patch
+smpboot-cachesize-comparison-fix-in-smp_tune_scheduling.patch
+pci-quirks-fix-msi-disabling-on-rs400-200-and-rs480.patch
+ntfs_init_locked_inode-fix-array-indexing.patch
+m68k-runtime-patching-infrastructure.patch
+slub-fix-numa--sysfs-bootstrap-issue.patch
+afs-needs-schedh.patch
+m68k-discontinuous-memory-support.patch

2.6.22 queue

+mm-fix-fault-vs-invalidate-race-for-linear-mappings-fix.patch

Fix mm-fix-fault-vs-invalidate-race-for-linear-mappings.patch

+lots-of-architectures-enable-arbitary-speed-tty-support.patch

tty work

+remove-dell-optiplex-gx240-from-the-acpi-blacklist.patch

ACPI fix

-use-menuconfig-objects-ii-sound.patch

Dropped, being redone

-working-3d-dri-intel-agpko-resume-for-i815-chip-tidy.patch
-working-3d-dri-intel-agpko-resume-for-i815-chip-update.patch

Folded into working-3d-dri-intel-agpko-resume-for-i815-chip.patch

+intel_agp-cleanup-intel-private-data.patch
+intel_agp-cleanup-intel-private-data-update.patch
+intel_agp-use-table-for-device-probe.patch
+intel_agp-use-table-for-device-probe-update.patch

AGP stuff

+dm-add-missing-braces-in-driver-debug-code.patch

DM fix

+ppc-remove-dead-code-for-preventing-pread-and-pwrite-calls.patch
+viotape-use-designated-initializers-for-fops-member.patch

powerpc fixes

+gregkh-driver-driver-core-add-missing-kset-uevent.patch
+gregkh-driver-sysfs-make-sysfs_alloc_ino-static.patch
+gregkh-driver-sysfs-fix-parent-refcounting-during-rename-and-move.patch
+gregkh-driver-sysfs-reorganize-sysfs_new_indoe-and-sysfs_create.patch
+gregkh-driver-sysfs-use-iget_locked-instead-of-new_inode.patch
+gregkh-driver-sysfs-fix-root-sysfs_dirent-root-dentry-association.patch
+gregkh-driver-sysfs-move-s_active-functions-to-fs-sysfs-dirc.patch
+gregkh-driver-sysfs-slim-down-sysfs_dirent-s_active.patch
+gregkh-driver-sysfs-use-singly-linked-list-for-sysfs_dirent-tree.patch

Driver tree updates

+jdelvare-i2c-i2c-mv64xxx-numbered-adapter.patch
+jdelvare-i2c-i2c-mpc-numbered-adapter.patch
+jdelvare-i2c-i2c-nforce2-add-smbus-block-transactions.patch

I2C tree updates

+jdelvare-hwmon-hwmon-pc87360-to-platform-driver.patch
+jdelvare-hwmon-hwmon-use-platform_device_add_data.patch
+jdelvare-hwmon-hwmon-lm90-add-max6681-support.patch
+jdelvare-hwmon-hwmon-fault-file-name.patch
+jdelvare-hwmon-hwmon-it87-add-it8726f-support.patch
+jdelvare-hwmon-hwmon-w83627hf-pwm-freq-support.patch

hwmon tree udpates

+hdaps-switch-to-using-input-polldev.patch
+applesmc-switch-to-using-input-polldev.patch
+ams-switch-to-using-input-polldev.patch

Update some monitoring drivers for new input APIs

+ia64-arbitary-speed-tty-ioctl-support.patch

tty work

+joydevc-automatic-re-calibration.patch
+drivers-input-mouse-kconfig-fix-typo.patch

Inupt updates

+use-posix-bre-in-headers-install-target.patch

kbuild fix

-git-leds-fixup.patch

Unneeded

-libata-add-human-readable-error-value-decoding-v2.patch

Folded into libata-add-human-readable-error-value-decoding.patch

+ide-aec62xx-kill-speedproc-method-wrapper-take-2.patch
+ide-ide_in_drive_list-accept-null-as-the-wildcard-for-firmware-revision.patch
+ide-mips-au1xxx_ide-h-use-null-as-firmware-revision-wildcard.patch
+ide-ide_in_drive_list-all-is-not-a-wildcard-anymore.patch

IDE tree updates

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

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

-use-mutex-instead-of-semaphore-in-the-mtd-st-m25pxx-driver-build-fix.patch

Folded into use-mutex-instead-of-semaphore-in-the-mtd-st-m25pxx-driver.patch

+atari_pamsnetc-old-declaration-ritchie-style-fix.patch

netdev fix

+wrong-timeout-value-in-sk_wait_data-v2-fix.patch
+atm-fix-warning.patch

net stuff

+bluetooth-remove-the-redundant-non-seekable-llseek-method.patch

Bluetooth fix

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

Dropped, being redone

-serial-use-resource_size_t-for-port-io-addresses.patch
-serial-set-dtr-in-uart-for-kernel-serial-console.patch

Dropped

+gregkh-pci-pci_bridge-device.patch

PCI tree update

+allow-aer-to-build-for-config_acpi-=-n.patch

AER fix

+git-scsi-misc-fixup.patch

Fix rejects in git-scsi-misc.patch

+remove-dead-references-to-module_parm-macro.patch
+scsi-lpfc-lpfc_initc-remove-unused-variable.patch

scsi updates

+block-device-elevator-use-list_for_each_entry-instead-of-list_for_each.patch

elevator cleanup

+sparc32-build-fix.patch

Fix sparc32 build

+gregkh-usb-usb-set-default-y-for-config_usb_device_class.patch
+gregkh-usb-usblp-don-t-let-suspend-to-kill-used.patch
+gregkh-usb-usb-usb-gadgets-avoid-le-16-32-_to_cpup.patch
+gregkh-usb-usb-unusual_dev-sync-up-some-reported-devices-from-ubuntu.patch
+gregkh-usb-usb-oti6858-usb-serial-driver.patch
+gregkh-usb-usbmon-add-class-for-binary-interface.patch
+gregkh-usb-usb-add-usb-persist-facility.patch
+gregkh-usb-usb-ehci-ohci-handover-changes.patch
+gregkh-usb-usb-add-reset_resume-device-quirk.patch
+gregkh-usb-usb-ehci-fix-handover-for-designated-full-speed-ports.patch
+gregkh-usb-usb-make-device-reset-stop-retrying-after-disconnect.patch
+gregkh-usb-usb-io_ti-digi-edgeport-update-for-new-devices.patch
+gregkh-usb-usb-patch-to-align-the-various-usb-timers-to-fire-at-the-same-time.patch
+gregkh-usb-usb-rts-cts-handshaking-support-dtr-fixes-for-mct-u232-serial-adapter.patch
+gregkh-usb-usb-usb-gadget-dead-config-cleanup.patch
+gregkh-usb-usb-add-usb_device_and_interface_info-for-device-matching.patch
+gregkh-usb-usb-hubc-loops-forever-on-resume-from-ram-due-to-bluetooth.patch
+gregkh-usb-usb-prevent-char-device-open-deregister-race.patch
+gregkh-usb-usb-rework-c-style-comments.patch
+gregkh-usb-usb-ftdi_sioc-allow-setting-latency-timer-on-ft232rl.patch
+gregkh-usb-usb-ehci-big-endian-data-structures-support.patch
+gregkh-usb-usb-set-config_usb_ehci_big_endian_mmio-_desc-in-usb-host-kconfig.patch
+gregkh-usb-usb-ehci_fsl-update-for-mpc831x-support.patch
+gregkh-usb-usb-use-function-attribute-__maybe_unused.patch
+gregkh-usb-usb-export-linux-usb_gadgetfs-as-linux-usb-gadgetfsh.patch
+gregkh-usb-usb-visor-driver-adapted-to-new-tty-buffering.patch
+gregkh-usb-usb-ti-serial-driver-sleeps-with-spinlock-held.patch
+gregkh-usb-usb-digi-acceleport-adapted-to-new-tty-buffering.patch
+gregkh-usb-usb-generic-usb-serial-to-new-buffering-scheme.patch
+gregkh-usb-pl2303c-patch.patch
+gregkh-usb-usb-usb-serial-gadget-sparse-fixes.patch
+gregkh-usb-usb-core-hubc-prevent-re-enumeration-on-hnp.patch
+gregkh-usb-usb-introduce-usb_anchor.patch
+gregkh-usb-usb-usb-skeleton-use-anchor-to-implement-flush.patch
+gregkh-usb-usb-whiteheat-driver-update.patch
+gregkh-usb-usb-digi_acceleport-further-buffer-clean-up.patch
+gregkh-usb-usb-ehci-safe-endianness-for-transfer-buffers-after-reset-in-case-of-hub-with-tt.patch

USB tree updates

+make-usb-autosuspend-timer-1-sec-jiffy-aligned.patch
+drivers-block-ubc-use-list_for_each_entry.patch

USB fixes

+use-list_for_each_entry-for-iteration-in-prism-54-driver.patch
+b44-ssb-fix-an-invalid-pointer-casting.patch

Wireless fixes

+x86_64-mm-via-no-dac.patch
+x86_64-mm-bug-in-i386-mtrr-initialization.patch
+x86_64-mm-mtrr-sections.patch
+x86_64-mm-allocate-sparsemem-memmap-above-4g-on-x86_64.patch
+x86_64-mm-asm-ptrace_h-needs-linux-compiler_h.patch
+x86_64-mm-gcc-hot-cold.patch
+x86_64-mm-on-cpu-single.patch
+x86_64-mm-xen-add-an-mm-argument-to-alloc_pt.patch
+x86_64-mm-xen-add-a-hook-for-once-the-allocator-is-ready.patch
+x86_64-mm-xen-increase-irq-limit.patch
+x86_64-mm-xen-unstatic-leave_mm.patch
+x86_64-mm-xen-unstatic-smp_store_cpu_info.patch
+x86_64-mm-xen-make-siblingmap-functions-visible.patch
+x86_64-mm-xen-export-__supported_pte_mask.patch
+x86_64-mm-xen-core-xen-implementation.patch
-x86_64-mm-core-xen-implementation.patch
-x86_64-mm-xen-event-channels.patch
+x86_64-mm-xen-xen-event-channels.patch
+x86_64-mm-xen-add-pinned-page-flag.patch
-x86_64-mm-xen-fix-multicall-batching.patch
-x86_64-mm-xen-deal-with-negative-stolen-time.patch
+x86_64-mm-xen-hack-to-prevent-bad-segment-register-reload.patch
-x86_64-mm-xen-add-early-printk-support-via-hvc-console.patch
-x86_64-mm-xen-rename-xen-netif_-structures-to-xen_netif.patch
+revert-x86_64-mm-allocate-sparsemem-memmap-above-4g-on-x86_64.patch

x86 tree updates

-mmconfig-x86_64-i386-insert-unclaimed-mmconfig-resources-fix.patch
-mmconfig-x86_64-i386-insert-unclaimed-mmconfig-resources-update.patch

Folded into mmconfig-x86_64-i386-insert-unclaimed-mmconfig-resources.patch

+x86_64-pm_trace-support.patch
+make-alt-sysrq-p-display-the-debug-register-contents.patch
+i386-flush_tlb_kernel_range-add-reference-to-the-arguments.patch

x86 things

+add-select-phylib-to-the-ucc_geth-kconfig-option.patch
+m68k-parenthesis-balance.patch
+msi-fix-the-ordering-of-msix-irqs.patch
+msi-mask-the-msix-vector-before-we-unmap-it.patch
+potential-parse-error-in-ifdef.patch
+potential-parse-error-in-ifdef-fix.patch
+potential-parse-error-in-ifdef-update.patch
+pci_ids-update-patch-for-intel-ich9m.patch
+x86-fix-oprofile-double-free-was-re-multiple-free.patch
+work-around-dell-e520-bios-reboot-bug.patch
+skeletonfb-fix-of-xxxfb_setup-ifdef.patch
+vt8623fb-arkfb-null-pointer-dereference-fix.patch
+cfag12864bfb-use-sys_-instead-of-cfb_-framebuffer-accessors.patch
+fbdev-move-declaration-of-fb_class-to-linux-fbh.patch
+misc-tifm_7xx1-replace-deprecated-irq-flag.patch
+add-a-trivial-patch-style-checker-v2.patch
+rtc-use-fallback-irq-if-pnp-tables-dont-provide-one.patch
+memory-hotplug-fix-unnecessary-calling-of-init_currenty_empty_zone.patch
+missing-include-linux-mmh-in-drivers-sbus-char-flashc.patch
+tty-fix-leakage-of-erestartsys-to-userland.patch
+isdn4linux-fix-maturity-label-v4.patch
+prism54-maintainers-update.patch
+aacraid-fix-shutdown-handler-to-also-disable-interrupts.patch
+atmel_spi-dma-address-bugfix.patch
+neofb-fix-pseudo_palette-array-overrun-in-neofb_setcolreg.patch
+ramfs-nommu-a-bug-in-ramfs_nommu_resize-function-passing-old-size-to-vmtruncate.patch
+h8300-trival-patches.patch
+vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch

2.6.22 probable-queue

+rework-ptep_set_access_flags-and-fix-sun4c.patch
+unmap_vm_area-becomes-unmap_kernel_range-for-the-public.patch

MM updates

-lazy-freeing-of-memory-through-madv_free.patch
-restore-madv_dontneed-to-its-original-linux-behaviour.patch

Dropped

-add-__gfp_movable-for-callers-to-flag-allocations-from-high-memory-that-may-be-migrated-fix-alloc_zeroed_user_highpage-on-m68knommu.patch
-add-__gfp_movable-for-callers-to-flag-allocations-from-high-memory-that-may-be-migrated-mark-bio_alloc-allocations-correctly.patch
-add-__gfp_movable-for-callers-to-flag-allocations-from-high-memory-that-may-be-migrated-rename-gfp_high_movable-to-gfp_highuser_movable.patch
-add-__gfp_movable-for-callers-to-flag-allocations-from-high-memory-that-may-be-migrated-mark-page-cache-pages-as-__gfp_pagecache-instead-of-__gfp_movable.patch

Folded into add-__gfp_movable-for-callers-to-flag-allocations-from-high-memory-that-may-be-migrated.patch

-move-free-pages-between-lists-on-steal-anti-fragmentation-switch-over-to-pfn_valid_within.patch

Folded into move-free-pages-between-lists-on-steal.patch

-group-short-lived-and-reclaimable-kernel-allocations-use-slab_account_reclaim-to-determine-when-__gfp_reclaimable-should-be-used.patch
-group-short-lived-and-reclaimable-kernel-allocations-use-slab_account_reclaim-to-determine-when-__gfp_reclaimable-should-be-used-fix.patch
-group-short-lived-and-reclaimable-kernel-allocations-do-not-annotate-shmem-allocations-explicitly.patch
-group-short-lived-and-reclaimable-kernel-allocations-add-__gfp_temporary-to-identify-allocations-that-are-short-lived.patch

Folded into group-short-lived-and-reclaimable-kernel-allocations.patch

-dont-group-high-order-atomic-allocations-remove-unused-parameter-to-allocflags_to_migratetype.patch

Folded into dont-group-high-order-atomic-allocations.patch

+breakout-page_order-to-internalh-to-avoid-special-knowledge-of-the-buddy-allocator.patch

Update the page mobility patches in -mm

+slub-change-error-reporting-format-to-follow-lockdep-loosely.patch
+slub-change-error-reporting-format-to-follow-lockdep-loosely-fix.patch

Slub updates

+freezer-make-kernel-threads-nonfreezable-by-default.patch
+freezer-make-kernel-threads-nonfreezable-by-default-fix.patch
+freezer-make-kernel-threads-nonfreezable-by-default-fix-fix.patch

Freezer fixes

+blackfin-enable-arbitary-speed-serial-setting.patch

blackfin driver update

+h8300-enable-arbitary-speed-tty-port-setup.patch

tty work

+arm26-enable-arbitary-speed-tty-ioctls-and-split.patch
+arm26-remove-broken-and-unused-macro.patch

arm26 updates

+freezer-run-show_state-when-freezing-times-out.patch
+pm-do-not-require-dev-spew-to-get-pm_debug.patch
+swsusp-remove-incorrect-code-from-userc.patch
+swsusp-remove-code-duplication-between-diskc-and-userc.patch
+swsusp-introduce-restore-platform-operations.patch
+swsusp-fix-hibernation-code-ordering.patch
+hibernation-prepare-to-enter-the-low-power-state.patch
+freezer-avoid-freezing-kernel-threads-prematurely.patch
+freezer-use-__set_current_state-in-refrigerator.patch
+freezer-return-int-from-freeze_processes.patch
+freezer-remove-redundant-check-in-try_to_freeze_tasks.patch

freezer/swsusp updates

+m32r-enable-arbitary-speed-tty-rate-setting.patch

tty work

+etrax-enable-arbitary-speed-setting-on-tty-ports.patch
+cris-replace-old-style-member-inits-with-designated-inits.patch

CRIS updates

+v850-enable-arbitary-speed-tty-ioctls.patch

TTY work

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

Dropped

-add-notime-boot-option.patch

Dropped

+define-new-percpu-interface-for-shared-data.patch
+use-the-new-percpu-interface-for-shared-data.patch
+introduce-config_virt_to_bus.patch
+pie-randomization.patch
+remove-unused-tif_notify_resume-flag.patch
+rocketc-fix-unchecked-mutex_lock_interruptible.patch
+only-send-sigxfsz-when-exceeding-rlimits.patch
+rtc-ratelimit-lost-interrupts-message.patch
+reduce-cpusetc-write_lock_irq-to-read_lock.patch
+reduce-cpusetc-write_lock_irq-to-read_lock-fix.patch
+char-n_hdlc-allow-restartsys-retval-of-tty-write.patch
+afs-implement-file-locking.patch
+tty_io-use-kzalloc.patch
+remove-clockevents_releaserequest_device.patch
+kconfig-no-strange-misc-devices.patch
+afs-drop-explicit-extern.patch
+remove-useless-tolower-in-isofs.patch
+char-mxser_new-fix-sparse-warning.patch
+char-tty_ioctl-use-wait_event_interruptible_timeout.patch
+char-tty_ioctl-little-whitespace-cleanup.patch
+char-genrtc-use-wait_event_interruptible.patch
+char-n_r3964-use-wait_event_interruptible.patch
+char-ip2-use-msleep-for-sleeping.patch
+proc-environ-wrong-placing-of-ptrace_may_attach-check.patch
+udf-coding-style-conversion-lindent.patch
+udf-coding-style-conversion-lindent-fixups.patch
+ext2-fix-a-comment-when-ext2_release_file-is-called.patch
+mutex_unlock-later-in-seq_lseek.patch
+zs-move-to-the-serial-subsystem.patch
+fs-block_devc-use-list_for_each_entry.patch
+fault-injection-add-min-order-parameter-to-fail_page_alloc.patch
+fault-injection-fix-example-scripts-in-documentation.patch
+add-printktime-option-deprecate-time.patch
+fs-clarify-dummy-member-in-struct.patch
+dma-mapping-prevent-dma-dependent-code-from-linking-on.patch

Misc

-ext4-extent-overlap-bugfix.patch
-ext4-persistent_allocation_1_ioctl_and_unitialized_extents.patch
-ext4-persistent_allocation_2_support_for_writing_to_unitialized_extent.patch
+ext4-ext4_remove_exported_symbles.patch
+ext4-ext4-fallocate-4-extent_overlap_bugfix.patch
+ext4-ext4-free-blocks-on-insert-extent-failure.patch
+ext4-ext4_extents_on_by_default.patch
+ext4-ext4-propagate_flags.patch
+ext4-ext4-extent-sanity-checks.patch
+ext4-ext4-fallocate-5-ext4_support.patch
+ext4-ext4-fallocate-6-uninit_write_support.patch
+ext4-ext4_expand_inode_extra_isize.patch
+ext4-ext4_expand_inode_isize_fix.patch
+ext4-jbd-stats-through-procfs.patch
+ext4-ext4_remove_subdirs_limit.patch

ext4 tree updates

+spi-add-3wire-mode-flag-fix.patch
+spidev-compiler-warning-gone.patch

SPI updates

-use-menuconfig-objects-ii-isdn.patch
+update-isdn-tree-to-use-pci_get_device.patch
+use-menuconfig-objects-isdn-config_isdn.patch
+use-menuconfig-objects-isdn-config_isdn_i4l.patch
+use-menuconfig-objects-isdn-config_isdn_drv_gigaset.patch
+use-menuconfig-objects-isdn-config_isdn_capi.patch
+use-menuconfig-objects-isdn-config_capi_avm.patch
+use-menuconfig-objects-isdn-config_capi_eicon.patch

Update ISDN Kconfig changes

+ecryptfs-move-ecryptfs-docs-into-documentation-filesystems.patch

ecryptfs update

+rtc-rs5c372-becomes-a-new-style-i2c-driver.patch

rtc maintenance

-lguest-the-host-code-update-for-mm-simplify-boot_params.patch

Dropped

+char-moxa-eliminate-busy-waiting.patch
+char-specialix-remove-busy-waiting.patch
+char-riscom8-eliminate-busy-loop.patch
+char-vt-use-kzalloc.patch
+char-vt-use-array_size.patch
+char-kconfig-mxser_new-remove-experimental-comment.patch

char driver updates

+fbcon-cursor-blink-control.patch
+fbcon-use-struct-device-instead-of-struct-class_device.patch
+fbdev-move-arch-specific-bits-to-their-respective.patch
+fbdev-detect-primary-display-device.patch
+fbcon-allow-fbcon-to-use-the-primary-display-driver.patch
+fbcon-allow-fbcon-to-use-the-primary-display-driver-fix.patch
+fbcon-allow-fbcon-to-use-the-primary-display-driver-fix-2.patch

fbdev things

+fs-introduce-vfs_path_lookup.patch
+sunrpc-use-vfs_path_lookup.patch
+nfsctl-use-vfs_path_lookup.patch
+fs-mark-link_path_walk-static.patch
+fs-remove-path_walk-export.patch

VFS updates

+cfs-scheduler-v14-rc2-mm1.patch

CFS update

+mm-swap-prefetch-increase-aggressiveness-and-tunability.patch

swap prefetch update

+kernel-doc-add-tools-doc-in-makefile.patch
+kernel-doc-fix-unnamed-struct-union-warning.patch
+kernel-doc-strip-c99-comments.patch
+kernel-doc-fix-leading-dot-in-man-mode-output.patch
+kernel-doc-fix-leading-dot-in-man-mode-output-fix.patch

kernel-doc stuff

+coredump-masking-bound-suid_dumpable-sysctl.patch
+coredump-masking-reimplementation-of-dumpable-using-two-flags.patch
+coredump-masking-reimplementation-of-dumpable-using-two-flags-fix.patch
+coredump-masking-add-an-interface-for-core-dump-filter.patch
+coredump-masking-elf-enable-core-dump-filtering.patch
+coredump-masking-elf-fdpic-remove-an-unused-argument.patch
+coredump-masking-elf-fdpic-enable-core-dump-filtering.patch
+coredump-masking-documentation-for-proc-pid-coredump_filter.patch

Filtering for waht the core dumper will dump

+containersv10-basic-container-framework.patch
+containersv10-basic-container-framework-fix.patch
+containersv10-example-cpu-accounting-subsystem.patch
+containersv10-example-cpu-accounting-subsystem-fix.patch
+containersv10-add-tasks-file-interface.patch
+containersv10-add-tasks-file-interface-fix.patch
+containersv10-add-fork-exit-hooks.patch
+containersv10-add-fork-exit-hooks-fix.patch
+containersv10-add-container_clone-interface.patch
+containersv10-add-container_clone-interface-fix.patch
+containersv10-add-procfs-interface.patch
+containersv10-add-procfs-interface-fix.patch
+containersv10-make-cpusets-a-client-of-containers.patch
+containersv10-share-css_group-arrays-between-tasks-with-same-container-memberships.patch
+containersv10-share-css_group-arrays-between-tasks-with-same-container-memberships-fix.patch
+containersv10-simple-debug-info-subsystem.patch
+containersv10-simple-debug-info-subsystem-fix.patch
+containersv10-simple-debug-info-subsystem-fix-2.patch
+containersv10-support-for-automatic-userspace-release-agents.patch

Containers core

+lockdep-sanitise-config_prove_locking.patch
+lockdep-reduce-the-ifdeffery.patch
+lockstat-core-infrastructure.patch
+lockstat-core-infrastructure-fix.patch
+lockstat-core-infrastructure-fix-fix.patch
+lockstat-human-readability-tweaks.patch
+lockstat-hook-into-spinlock_t-rwlock_t-rwsem-and-mutex.patch

lockstat-via-lockdep

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

Dropped

+update-page-order-at-an-appropriate-time-when-tracking-page_owner.patch

Update page-owner-tracking for updates to Mel's stuff

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

Dropped


All 993 patches:

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



2007-05-31 12:09:32

by Cornelia Huck

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

On Wed, 30 May 2007 23:58:23 -0700,
Andrew Morton <[email protected]> wrote:

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

With

> +dma-mapping-prevent-dma-dependent-code-from-linking-on.patch

scsi fails to build on !HAS_DMA architectures:

drivers/built-in.o(.text+0x20af6): In function `scsi_dma_map':
: undefined reference to `dma_map_sg'
drivers/built-in.o(.text+0x20b5c): In function `scsi_dma_unmap':
: undefined reference to `dma_unmap_sg'

I split those functions out into a new file. Builds on s390 and i386.



scsi: Don't build scsi_dma_{map,unmap} for !HAS_DMA

Move scsi_dma_{map,unmap} into scsi_lib_dma.c which is only build
if HAS_DMA is set.

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

---
drivers/scsi/Kconfig | 5 ++++
drivers/scsi/Makefile | 6 ++---
drivers/scsi/scsi_lib.c | 38 ---------------------------------
drivers/scsi/scsi_lib_dma.c | 50 ++++++++++++++++++++++++++++++++++++++++++++
include/scsi/scsi_cmnd.h | 2 +
5 files changed, 60 insertions(+), 41 deletions(-)

--- linux-2.6.orig/drivers/scsi/Kconfig
+++ linux-2.6/drivers/scsi/Kconfig
@@ -10,6 +10,7 @@ config RAID_ATTRS
config SCSI
tristate "SCSI device support"
depends on BLOCK
+ select SCSI_DMA if HAS_DMA
---help---
If you want to use a SCSI hard disk, SCSI tape drive, SCSI CD-ROM or
any other SCSI device under Linux, say Y and make sure that you know
@@ -29,6 +30,10 @@ config SCSI
However, do not compile this as a module if your root file system
(the one containing the directory /) is located on a SCSI device.

+config SCSI_DMA
+ bool
+ default n
+
config SCSI_TGT
tristate "SCSI target support"
depends on SCSI && EXPERIMENTAL
--- linux-2.6.orig/drivers/scsi/Makefile
+++ linux-2.6/drivers/scsi/Makefile
@@ -145,9 +145,9 @@ obj-$(CONFIG_SCSI_DEBUG) += scsi_debug.o
obj-$(CONFIG_SCSI_WAIT_SCAN) += scsi_wait_scan.o

scsi_mod-y += scsi.o hosts.o scsi_ioctl.o constants.o \
- scsicam.o scsi_error.o scsi_lib.o \
- scsi_scan.o scsi_sysfs.o \
- scsi_devinfo.o
+ scsicam.o scsi_error.o scsi_lib.o
+scsi_mod-$(CONFIG_SCSI_DMA) += scsi_lib_dma.o
+scsi_mod-y += scsi_scan.o scsi_sysfs.o scsi_devinfo.o
scsi_mod-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
scsi_mod-$(CONFIG_SYSCTL) += scsi_sysctl.o
scsi_mod-$(CONFIG_SCSI_PROC_FS) += scsi_proc.o
--- linux-2.6.orig/drivers/scsi/scsi_lib.c
+++ linux-2.6/drivers/scsi/scsi_lib.c
@@ -2290,41 +2290,3 @@ void scsi_kunmap_atomic_sg(void *virt)
kunmap_atomic(virt, KM_BIO_SRC_IRQ);
}
EXPORT_SYMBOL(scsi_kunmap_atomic_sg);
-
-/**
- * scsi_dma_map - perform DMA mapping against command's sg lists
- * @cmd: scsi command
- *
- * Returns the number of sg lists actually used, zero if the sg lists
- * is NULL, or -ENOMEM if the mapping failed.
- */
-int scsi_dma_map(struct scsi_cmnd *cmd)
-{
- int nseg = 0;
-
- if (scsi_sg_count(cmd)) {
- struct device *dev = cmd->device->host->shost_gendev.parent;
-
- nseg = dma_map_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd),
- cmd->sc_data_direction);
- if (unlikely(!nseg))
- return -ENOMEM;
- }
- return nseg;
-}
-EXPORT_SYMBOL(scsi_dma_map);
-
-/**
- * scsi_dma_unmap - unmap command's sg lists mapped by scsi_dma_map
- * @cmd: scsi command
- */
-void scsi_dma_unmap(struct scsi_cmnd *cmd)
-{
- if (scsi_sg_count(cmd)) {
- struct device *dev = cmd->device->host->shost_gendev.parent;
-
- dma_unmap_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd),
- cmd->sc_data_direction);
- }
-}
-EXPORT_SYMBOL(scsi_dma_unmap);
--- linux-2.6.orig/include/scsi/scsi_cmnd.h
+++ linux-2.6/include/scsi/scsi_cmnd.h
@@ -135,8 +135,10 @@ extern void scsi_kunmap_atomic_sg(void *
extern struct scatterlist *scsi_alloc_sgtable(struct scsi_cmnd *, gfp_t);
extern void scsi_free_sgtable(struct scatterlist *, int);

+#ifdef CONFIG_SCSI_DMA
extern int scsi_dma_map(struct scsi_cmnd *cmd);
extern void scsi_dma_unmap(struct scsi_cmnd *cmd);
+#endif

#define scsi_sg_count(cmd) ((cmd)->use_sg)
#define scsi_sglist(cmd) ((struct scatterlist *)(cmd)->request_buffer)
--- /dev/null
+++ linux-2.6/drivers/scsi/scsi_lib_dma.c
@@ -0,0 +1,50 @@
+/*
+ * SCSI library functions depending on DMA
+ */
+
+#include <linux/blkdev.h>
+#include <linux/device.h>
+#include <linux/kernel.h>
+
+#include <scsi/scsi.h>
+#include <scsi/scsi_cmnd.h>
+#include <scsi/scsi_device.h>
+#include <scsi/scsi_host.h>
+
+/**
+ * scsi_dma_map - perform DMA mapping against command's sg lists
+ * @cmd: scsi command
+ *
+ * Returns the number of sg lists actually used, zero if the sg lists
+ * is NULL, or -ENOMEM if the mapping failed.
+ */
+int scsi_dma_map(struct scsi_cmnd *cmd)
+{
+ int nseg = 0;
+
+ if (scsi_sg_count(cmd)) {
+ struct device *dev = cmd->device->host->shost_gendev.parent;
+
+ nseg = dma_map_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd),
+ cmd->sc_data_direction);
+ if (unlikely(!nseg))
+ return -ENOMEM;
+ }
+ return nseg;
+}
+EXPORT_SYMBOL(scsi_dma_map);
+
+/**
+ * scsi_dma_unmap - unmap command's sg lists mapped by scsi_dma_map
+ * @cmd: scsi command
+ */
+void scsi_dma_unmap(struct scsi_cmnd *cmd)
+{
+ if (scsi_sg_count(cmd)) {
+ struct device *dev = cmd->device->host->shost_gendev.parent;
+
+ dma_unmap_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd),
+ cmd->sc_data_direction);
+ }
+}
+EXPORT_SYMBOL(scsi_dma_unmap);

2007-05-31 12:16:16

by Matthew Wilcox

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

On Thu, May 31, 2007 at 02:09:22PM +0200, Cornelia Huck wrote:
> I split those functions out into a new file. Builds on s390 and i386.

Why not just put #ifdef CONFIG_HAS_DMA / #endif around the pair of
functions? I don't see the need to add a new Kconfig symbol and a new
file for this.

2007-05-31 12:20:59

by Cornelia Huck

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

On Thu, 31 May 2007 06:15:57 -0600,
Matthew Wilcox <[email protected]> wrote:

> On Thu, May 31, 2007 at 02:09:22PM +0200, Cornelia Huck wrote:
> > I split those functions out into a new file. Builds on s390 and i386.
>
> Why not just put #ifdef CONFIG_HAS_DMA / #endif around the pair of
> functions? I don't see the need to add a new Kconfig symbol and a new
> file for this.

I prefer a new file over #ifdefs in c files. (New dma-dependent stuff
would also have a place where it could go to.)

But I'll do whatever ends up as consensus :)

2007-05-31 12:36:04

by Jeff Garzik

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

Cornelia Huck wrote:
> On Thu, 31 May 2007 06:15:57 -0600,
> Matthew Wilcox <[email protected]> wrote:
>
>> On Thu, May 31, 2007 at 02:09:22PM +0200, Cornelia Huck wrote:
>>> I split those functions out into a new file. Builds on s390 and i386.
>> Why not just put #ifdef CONFIG_HAS_DMA / #endif around the pair of
>> functions? I don't see the need to add a new Kconfig symbol and a new
>> file for this.
>
> I prefer a new file over #ifdefs in c files. (New dma-dependent stuff
> would also have a place where it could go to.)
>
> But I'll do whatever ends up as consensus :)

50 lines isn't much need for a new file.

Jeff



2007-05-31 15:11:22

by Cornelia Huck

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

On Thu, 31 May 2007 08:35:13 -0400,
Jeff Garzik <[email protected]> wrote:

> Cornelia Huck wrote:
> > On Thu, 31 May 2007 06:15:57 -0600,
> > Matthew Wilcox <[email protected]> wrote:
> >
> >> On Thu, May 31, 2007 at 02:09:22PM +0200, Cornelia Huck wrote:
> >>> I split those functions out into a new file. Builds on s390 and i386.
> >> Why not just put #ifdef CONFIG_HAS_DMA / #endif around the pair of
> >> functions? I don't see the need to add a new Kconfig symbol and a new
> >> file for this.
> >
> > I prefer a new file over #ifdefs in c files. (New dma-dependent stuff
> > would also have a place where it could go to.)
> >
> > But I'll do whatever ends up as consensus :)
>
> 50 lines isn't much need for a new file.

OK, so here's an alternative patch:


scsi: Don't build scsi_dma_{map,unmap} for !HAS_DMA

Use #ifdef CONFIG_HAS_DMA for the two dma-dependent functions.

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

---
drivers/scsi/scsi_lib.c | 2 ++
include/scsi/scsi_cmnd.h | 2 ++
2 files changed, 4 insertions(+)

--- linux-2.6.orig/drivers/scsi/scsi_lib.c
+++ linux-2.6/drivers/scsi/scsi_lib.c
@@ -2291,6 +2291,7 @@ void scsi_kunmap_atomic_sg(void *virt)
}
EXPORT_SYMBOL(scsi_kunmap_atomic_sg);

+#ifdef CONFIG_HAS_DMA
/**
* scsi_dma_map - perform DMA mapping against command's sg lists
* @cmd: scsi command
@@ -2328,3 +2329,4 @@ void scsi_dma_unmap(struct scsi_cmnd *cm
}
}
EXPORT_SYMBOL(scsi_dma_unmap);
+#endif
--- linux-2.6.orig/include/scsi/scsi_cmnd.h
+++ linux-2.6/include/scsi/scsi_cmnd.h
@@ -135,8 +135,10 @@ extern void scsi_kunmap_atomic_sg(void *
extern struct scatterlist *scsi_alloc_sgtable(struct scsi_cmnd *, gfp_t);
extern void scsi_free_sgtable(struct scatterlist *, int);

+#ifdef CONFIG_HAS_DMA
extern int scsi_dma_map(struct scsi_cmnd *cmd);
extern void scsi_dma_unmap(struct scsi_cmnd *cmd);
+#endif

#define scsi_sg_count(cmd) ((cmd)->use_sg)
#define scsi_sglist(cmd) ((struct scatterlist *)(cmd)->request_buffer)

2007-05-31 15:14:18

by Christoph Hellwig

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

On Thu, May 31, 2007 at 08:35:13AM -0400, Jeff Garzik wrote:
> Cornelia Huck wrote:
> >On Thu, 31 May 2007 06:15:57 -0600,
> >Matthew Wilcox <[email protected]> wrote:
> >
> >>On Thu, May 31, 2007 at 02:09:22PM +0200, Cornelia Huck wrote:
> >>>I split those functions out into a new file. Builds on s390 and i386.
> >>Why not just put #ifdef CONFIG_HAS_DMA / #endif around the pair of
> >>functions? I don't see the need to add a new Kconfig symbol and a new
> >>file for this.
> >
> >I prefer a new file over #ifdefs in c files. (New dma-dependent stuff
> >would also have a place where it could go to.)
> >
> >But I'll do whatever ends up as consensus :)
>
> 50 lines isn't much need for a new file.

The scsi core shouldn't know anything about dma mappings, so a separate
file is a good idea just to keep the separation clean.

2007-05-31 15:30:24

by Michal Piotrowski

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

Hi,

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

FYI suspend to disk doesn't work anymore on my box, system hangs after "Suspending console(s)" message.

[ 186.297753] Shrinking memory... -\|/-\|done (113064 pages freed)
[ 187.841914] Freed 452256 kbytes in 1.54 seconds (293.67 MB/s)
[ 187.847730] Suspending console(s)

http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc3-mm1/console.log
http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc3-mm1/mm-config

Regards,
Michal


--
"Najbardziej brakowało mi twojego milczenia."
-- Andrzej Sapkowski "Coś więcej"

2007-05-31 17:53:33

by Michal Piotrowski

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

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

CPU hotplug test triggered this

[ 4972.038008] CPU 1 is now offline
[ 4972.041411] lockdep: not fixing up alternatives.
[ 4972.051553]
[ 4972.051555] =================================
[ 4972.057562] [ INFO: inconsistent lock state ]
[ 4972.062056] 2.6.22-rc3-mm1 #10
[ 4972.065184] ---------------------------------
[ 4972.069663] inconsistent {in-hardirq-W} -> {hardirq-on-W} usage.
[ 4972.075758] sh/702 [HC0[0]:SC0[0]:HE1:SE1] takes:
[ 4972.080554] (&n->list_lock){++..}, at: [<c0181288>] add_partial+0xe/0x27

l *0xc0181288
0xc0181288 is in add_partial (/home/devel/linux-mm/mm/slub.c:1193).
1188 }
1189
1190 static void add_partial(struct kmem_cache_node *n, struct page *page)
1191 {
1192 spin_lock(&n->list_lock);
1193 n->nr_partial++;
1194 list_add(&page->lru, &n->partial);
1195 spin_unlock(&n->list_lock);
1196 }
1197


[ 4972.087650] {in-hardirq-W} state was registered at:
[ 4972.092656] [<c0143bfe>] mark_lock+0x82/0x557
[ 4972.097323] [<c0144c5f>] __lock_acquire+0x476/0xd36
[ 4972.102562] [<c01455bd>] lock_acquire+0x9e/0xb8
[ 4972.107342] [<c0348993>] _spin_lock+0x38/0x62
[ 4972.111993] [<c0181d29>] deactivate_slab+0xb9/0x179
[ 4972.117300] [<c0181e56>] flush_slab+0x6d/0x72
[ 4972.122063] [<c0181e8c>] __flush_cpu_slab+0x31/0x36
[ 4972.127335] [<c0181ea5>] flush_cpu_slab+0x14/0x17
[ 4972.132401] [<c0113d6f>] smp_call_function_interrupt+0x3a/0x56
[ 4972.138607] [<c0104c73>] call_function_interrupt+0x33/0x38
[ 4972.144503] [<c0102b59>] default_idle+0x50/0x69
[ 4972.149421] [<c01023eb>] cpu_idle+0xb3/0xf8
[ 4972.153889] [<c03454fa>] rest_init+0x56/0x58
[ 4972.158402] [<c04f39c7>] start_kernel+0x351/0x359
[ 4972.163450] [<ffffffff>] 0xffffffff
[ 4972.167221] irq event stamp: 2451
[ 4972.170695] hardirqs last enabled at (2451): [<c0104228>] restore_nocheck+0x12/0x15
[ 4972.178699] hardirqs last disabled at (2449): [<c012b4e9>] __do_softirq+0x93/0xe5
[ 4972.186393] softirqs last enabled at (2450): [<c012b535>] __do_softirq+0xdf/0xe5
[ 4972.194216] softirqs last disabled at (2443): [<c0106d39>] do_softirq+0x68/0x11f

l *0xc0104228
0xc0104228 is at include2/asm/bitops.h:246.
241 static int test_bit(int nr, const volatile void * addr);
242 #endif
243
244 static __always_inline int constant_test_bit(int nr, const volatile unsigned long *addr)
245 {
246 return ((1UL << (nr & 31)) & (addr[nr >> 5])) != 0;
247 }
248
249 static inline int variable_test_bit(int nr, const volatile unsigned long * addr)
250 {

l *0xc012b4e9
0xc012b4e9 is in __do_softirq (/home/devel/linux-mm/kernel/softirq.c:241).
236 pending >>= 1;
237 } while (pending);
238
239 local_irq_disable();
240
241 pending = local_softirq_pending();
242 if (pending && --max_restart)
243 goto restart;
244
245 if (pending)

l *0xc012b535
0xc012b535 is in __do_softirq (/home/devel/linux-mm/kernel/softirq.c:252).
247
248 trace_softirq_exit();
249
250 account_system_vtime(current);
251 _local_bh_enable();
252 }
253
254 #ifndef __ARCH_HAS_DO_SOFTIRQ
255
256 asmlinkage void do_softirq(void)

l *0xc0106d39
0xc0106d39 is in do_softirq (/home/devel/linux-mm/arch/i386/kernel/irq.c:222).
217 irqctx->tinfo.previous_esp = current_stack_pointer;
218
219 /* build the stack frame on the softirq stack */
220 isp = (u32*) ((char*)irqctx + sizeof(*irqctx));
221
222 asm volatile(
223 " xchgl %%ebx,%%esp \n"
224 " call __do_softirq \n"
225 " movl %%ebx,%%esp \n"
226 : "=b"(isp)


[ 4972.201901]
[ 4972.201902] other info that might help us debug this:
[ 4972.208669] 4 locks held by sh/702:
[ 4972.212265] #0: (cpu_add_remove_lock){--..}, at: [<c0347499>] mutex_lock+0x1c/0x1f
[ 4972.220304] #1: (sched_hotcpu_mutex){--..}, at: [<c0347499>] mutex_lock+0x1c/0x1f
[ 4972.228273] #2: (workqueue_mutex){--..}, at: [<c0347499>] mutex_lock+0x1c/0x1f
[ 4972.235821] #3: (slub_lock){----}, at: [<c01836d6>] slab_cpuup_callback+0x26/0x5b

l *0xc0347499
0xc0347499 is in mutex_lock (/home/devel/linux-mm/kernel/mutex.c:92).
87 /*
88 * The locking fastpath is the 1->0 transition from
89 * 'unlocked' into 'locked' state.
90 */
91 __mutex_fastpath_lock(&lock->count, __mutex_lock_slowpath);
92 }
93
94 EXPORT_SYMBOL(mutex_lock);
95
96 static void fastcall noinline __sched

l *0xc01836d6
0xc01836d6 is in slab_cpuup_callback (/home/devel/linux-mm/mm/slub.c:2656).
2651 static void for_all_slabs(void (*func)(struct kmem_cache *, int), int cpu)
2652 {
2653 struct list_head *h;
2654
2655 down_read(&slub_lock);
2656 list_for_each(h, &slab_caches) {
2657 struct kmem_cache *s =
2658 container_of(h, struct kmem_cache, list);
2659
2660 func(s, cpu);


[ 4972.243670]
[ 4972.243670] stack backtrace:
[ 4972.248166] [<c0105281>] dump_trace+0x63/0x1eb
[ 4972.252755] [<c0105423>] show_trace_log_lvl+0x1a/0x2f
[ 4972.257969] [<c0106061>] show_trace+0x12/0x14
[ 4972.262463] [<c0106079>] dump_stack+0x16/0x18
[ 4972.266974] [<c0142ff8>] print_usage_bug+0x140/0x14a
[ 4972.272109] [<c0143e1a>] mark_lock+0x29e/0x557
[ 4972.276708] [<c0144cda>] __lock_acquire+0x4f1/0xd36
[ 4972.281740] [<c01455bd>] lock_acquire+0x9e/0xb8
[ 4972.286416] [<c0348993>] _spin_lock+0x38/0x62
[ 4972.290936] [<c0181288>] add_partial+0xe/0x27
[ 4972.295458] [<c0181cd7>] deactivate_slab+0x67/0x179
[ 4972.300497] [<c0181e56>] flush_slab+0x6d/0x72
[ 4972.305018] [<c0181e8c>] __flush_cpu_slab+0x31/0x36
[ 4972.310049] [<c01836e8>] slab_cpuup_callback+0x38/0x5b
[ 4972.315348] [<c01325d2>] notifier_call_chain+0x2b/0x4a
[ 4972.320637] [<c013261e>] __raw_notifier_call_chain+0x19/0x1e
[ 4972.326473] [<c013263d>] raw_notifier_call_chain+0x1a/0x1c
[ 4972.332117] [<c014bb62>] _cpu_down+0x19c/0x25a
[ 4972.336724] [<c014bc48>] cpu_down+0x28/0x3a
[ 4972.341063] [<c027f800>] store_online+0x27/0x5a
[ 4972.345757] [<c027c854>] sysdev_store+0x20/0x25
[ 4972.350443] [<c01c2739>] sysfs_write_file+0xc5/0xfd
[ 4972.355482] [<c0187243>] vfs_write+0xd1/0x15a
[ 4972.360004] [<c0187873>] sys_write+0x3d/0x72
[ 4972.364411] [<c01041e0>] syscall_call+0x7/0xb
[ 4972.368924] [<b7ff0410>] 0xb7ff0410
[ 4972.372562] =======================
[ 4975.412963] lockdep: not fixing up alternatives.

Suspects:
add-suspend-related-notifications-for-cpu-hotplug-statistics.patch
cpu-hotplug-fix-ksoftirqd-termination-on-cpu-hotplug-with-naughty-realtime-process.patch
cpu-hotplug-fix-ksoftirqd-termination-on-cpu-hotplug-with-naughty-realtime-process-fix.patch

http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc3-mm1/console2.log
http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc3-mm1/mm-config

Regards,
Michal

--
"Najbardziej brakowało mi twojego milczenia."
-- Andrzej Sapkowski "Coś więcej"

2007-05-31 18:08:28

by Michal Piotrowski

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

Michal Piotrowski napisał(a):
> Andrew Morton napisał(a):
>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/
>>
>
> CPU hotplug test triggered this
>
> [ 4972.038008] CPU 1 is now offline
> [ 4972.041411] lockdep: not fixing up alternatives.
> [ 4972.051553]
> [ 4972.051555] =================================
> [ 4972.057562] [ INFO: inconsistent lock state ]
> [ 4972.062056] 2.6.22-rc3-mm1 #10
> [ 4972.065184] ---------------------------------
[..]
> [ 4972.372562] =======================
> [ 4975.412963] lockdep: not fixing up alternatives.
>
> Suspects:
> add-suspend-related-notifications-for-cpu-hotplug-statistics.patch

not guilty

> cpu-hotplug-fix-ksoftirqd-termination-on-cpu-hotplug-with-naughty-realtime-process.patch

not guilty

> cpu-hotplug-fix-ksoftirqd-termination-on-cpu-hotplug-with-naughty-realtime-process-fix.patch

not guilty

Regards,
Michal

--
"Najbardziej brakowało mi twojego milczenia."
-- Andrzej Sapkowski "Coś więcej"

2007-05-31 18:32:31

by Andrew Morton

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

On Thu, 31 May 2007 19:53:07 +0200
Michal Piotrowski <[email protected]> wrote:

> Andrew Morton napisa__(a):
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/
> >
>
> CPU hotplug test triggered this
>
> [ 4972.038008] CPU 1 is now offline
> [ 4972.041411] lockdep: not fixing up alternatives.
> [ 4972.051553]
> [ 4972.051555] =================================
> [ 4972.057562] [ INFO: inconsistent lock state ]
> [ 4972.062056] 2.6.22-rc3-mm1 #10
> [ 4972.065184] ---------------------------------
> [ 4972.069663] inconsistent {in-hardirq-W} -> {hardirq-on-W} usage.
> [ 4972.075758] sh/702 [HC0[0]:SC0[0]:HE1:SE1] takes:
> [ 4972.080554] (&n->list_lock){++..}, at: [<c0181288>] add_partial+0xe/0x27
>
> l *0xc0181288
> 0xc0181288 is in add_partial (/home/devel/linux-mm/mm/slub.c:1193).
> 1188 }
> 1189
> 1190 static void add_partial(struct kmem_cache_node *n, struct page *page)
> 1191 {
> 1192 spin_lock(&n->list_lock);
> 1193 n->nr_partial++;
> 1194 list_add(&page->lru, &n->partial);
> 1195 spin_unlock(&n->list_lock);
> 1196 }
> 1197
>
>
> [ 4972.087650] {in-hardirq-W} state was registered at:
> [ 4972.092656] [<c0143bfe>] mark_lock+0x82/0x557
> [ 4972.097323] [<c0144c5f>] __lock_acquire+0x476/0xd36
> [ 4972.102562] [<c01455bd>] lock_acquire+0x9e/0xb8
> [ 4972.107342] [<c0348993>] _spin_lock+0x38/0x62
> [ 4972.111993] [<c0181d29>] deactivate_slab+0xb9/0x179
> [ 4972.117300] [<c0181e56>] flush_slab+0x6d/0x72
> [ 4972.122063] [<c0181e8c>] __flush_cpu_slab+0x31/0x36
> [ 4972.127335] [<c0181ea5>] flush_cpu_slab+0x14/0x17
> [ 4972.132401] [<c0113d6f>] smp_call_function_interrupt+0x3a/0x56
> [ 4972.138607] [<c0104c73>] call_function_interrupt+0x33/0x38
> [ 4972.144503] [<c0102b59>] default_idle+0x50/0x69
> [ 4972.149421] [<c01023eb>] cpu_idle+0xb3/0xf8
> [ 4972.153889] [<c03454fa>] rest_init+0x56/0x58
> [ 4972.158402] [<c04f39c7>] start_kernel+0x351/0x359
> [ 4972.163450] [<ffffffff>] 0xffffffff
> [ 4972.167221] irq event stamp: 2451

Yep, that's a bug in slub. We take that lock in the IPI handler. If a CPU
is currently holding that lock and then takes the IPI and enters
add_partial(), it'll deadlock.

> [ 4972.243670]
> [ 4972.243670] stack backtrace:
> [ 4972.248166] [<c0105281>] dump_trace+0x63/0x1eb
> [ 4972.252755] [<c0105423>] show_trace_log_lvl+0x1a/0x2f
> [ 4972.257969] [<c0106061>] show_trace+0x12/0x14
> [ 4972.262463] [<c0106079>] dump_stack+0x16/0x18
> [ 4972.266974] [<c0142ff8>] print_usage_bug+0x140/0x14a
> [ 4972.272109] [<c0143e1a>] mark_lock+0x29e/0x557
> [ 4972.276708] [<c0144cda>] __lock_acquire+0x4f1/0xd36
> [ 4972.281740] [<c01455bd>] lock_acquire+0x9e/0xb8
> [ 4972.286416] [<c0348993>] _spin_lock+0x38/0x62
> [ 4972.290936] [<c0181288>] add_partial+0xe/0x27
> [ 4972.295458] [<c0181cd7>] deactivate_slab+0x67/0x179
> [ 4972.300497] [<c0181e56>] flush_slab+0x6d/0x72
> [ 4972.305018] [<c0181e8c>] __flush_cpu_slab+0x31/0x36
> [ 4972.310049] [<c01836e8>] slab_cpuup_callback+0x38/0x5b
> [ 4972.315348] [<c01325d2>] notifier_call_chain+0x2b/0x4a
> [ 4972.320637] [<c013261e>] __raw_notifier_call_chain+0x19/0x1e
> [ 4972.326473] [<c013263d>] raw_notifier_call_chain+0x1a/0x1c
> [ 4972.332117] [<c014bb62>] _cpu_down+0x19c/0x25a
> [ 4972.336724] [<c014bc48>] cpu_down+0x28/0x3a
> [ 4972.341063] [<c027f800>] store_online+0x27/0x5a
> [ 4972.345757] [<c027c854>] sysdev_store+0x20/0x25
> [ 4972.350443] [<c01c2739>] sysfs_write_file+0xc5/0xfd
> [ 4972.355482] [<c0187243>] vfs_write+0xd1/0x15a
> [ 4972.360004] [<c0187873>] sys_write+0x3d/0x72
> [ 4972.364411] [<c01041e0>] syscall_call+0x7/0xb
> [ 4972.368924] [<b7ff0410>] 0xb7ff0410
> [ 4972.372562] =======================
> [ 4975.412963] lockdep: not fixing up alternatives.

Perhaps a suitable fix would be local_irq_disable() in flush_slab().

2007-05-31 18:41:31

by Christoph Lameter

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

On Thu, 31 May 2007, Andrew Morton wrote:

> > l *0xc0181288
> > 0xc0181288 is in add_partial (/home/devel/linux-mm/mm/slub.c:1193).
> > 1188 }
> > 1189
> > 1190 static void add_partial(struct kmem_cache_node *n, struct page *page)
> > 1191 {
> > 1192 spin_lock(&n->list_lock);
> > 1193 n->nr_partial++;
> > 1194 list_add(&page->lru, &n->partial);
> > 1195 spin_unlock(&n->list_lock);
> > 1196 }
> > 1197

add_partial runs with interrupts disabled. The interrupts are disabled
when we enter SLUB via allocator or free functions.

> > [ 4972.087650] {in-hardirq-W} state was registered at:
> > [ 4972.092656] [<c0143bfe>] mark_lock+0x82/0x557
> > [ 4972.097323] [<c0144c5f>] __lock_acquire+0x476/0xd36
> > [ 4972.102562] [<c01455bd>] lock_acquire+0x9e/0xb8
> > [ 4972.107342] [<c0348993>] _spin_lock+0x38/0x62
> > [ 4972.111993] [<c0181d29>] deactivate_slab+0xb9/0x179
> > [ 4972.117300] [<c0181e56>] flush_slab+0x6d/0x72
> > [ 4972.122063] [<c0181e8c>] __flush_cpu_slab+0x31/0x36
> > [ 4972.127335] [<c0181ea5>] flush_cpu_slab+0x14/0x17
> > [ 4972.132401] [<c0113d6f>] smp_call_function_interrupt+0x3a/0x56
> > [ 4972.138607] [<c0104c73>] call_function_interrupt+0x33/0x38
> > [ 4972.144503] [<c0102b59>] default_idle+0x50/0x69
> > [ 4972.149421] [<c01023eb>] cpu_idle+0xb3/0xf8
> > [ 4972.153889] [<c03454fa>] rest_init+0x56/0x58
> > [ 4972.158402] [<c04f39c7>] start_kernel+0x351/0x359
> > [ 4972.163450] [<ffffffff>] 0xffffffff
> > [ 4972.167221] irq event stamp: 2451
>
> Yep, that's a bug in slub. We take that lock in the IPI handler. If a CPU
> is currently holding that lock and then takes the IPI and enters
> add_partial(), it'll deadlock.

A cpu cannot enter an IPI handler while interrupts are disabled. That
needs to be always the case when the list_lock is held.

> Perhaps a suitable fix would be local_irq_disable() in flush_slab().

As far as I can tell: Interrupts are always disabled when flush_slab is
run.

Sometimes we use spin_lock_irqsave for the list_lock and at other times
spin_lock if interrupts are already disabled. Is that the problem?

2007-05-31 18:54:10

by Andrew Morton

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

On Thu, 31 May 2007 11:41:22 -0700 (PDT)
Christoph Lameter <[email protected]> wrote:

> > Perhaps a suitable fix would be local_irq_disable() in flush_slab().
>
> As far as I can tell: Interrupts are always disabled when flush_slab is
> run.
>
> Sometimes we use spin_lock_irqsave for the list_lock and at other times
> spin_lock if interrupts are already disabled. Is that the problem?

Nope, the problem is in the part of my email which you deleted ;)

[ 4972.243670]
[ 4972.243670] stack backtrace:
[ 4972.248166] [<c0105281>] dump_trace+0x63/0x1eb
[ 4972.252755] [<c0105423>] show_trace_log_lvl+0x1a/0x2f
[ 4972.257969] [<c0106061>] show_trace+0x12/0x14
[ 4972.262463] [<c0106079>] dump_stack+0x16/0x18
[ 4972.266974] [<c0142ff8>] print_usage_bug+0x140/0x14a
[ 4972.272109] [<c0143e1a>] mark_lock+0x29e/0x557
[ 4972.276708] [<c0144cda>] __lock_acquire+0x4f1/0xd36
[ 4972.281740] [<c01455bd>] lock_acquire+0x9e/0xb8
[ 4972.286416] [<c0348993>] _spin_lock+0x38/0x62
[ 4972.290936] [<c0181288>] add_partial+0xe/0x27
[ 4972.295458] [<c0181cd7>] deactivate_slab+0x67/0x179
[ 4972.300497] [<c0181e56>] flush_slab+0x6d/0x72
[ 4972.305018] [<c0181e8c>] __flush_cpu_slab+0x31/0x36
[ 4972.310049] [<c01836e8>] slab_cpuup_callback+0x38/0x5b
[ 4972.315348] [<c01325d2>] notifier_call_chain+0x2b/0x4a
[ 4972.320637] [<c013261e>] __raw_notifier_call_chain+0x19/0x1e
[ 4972.326473] [<c013263d>] raw_notifier_call_chain+0x1a/0x1c
[ 4972.332117] [<c014bb62>] _cpu_down+0x19c/0x25a
[ 4972.336724] [<c014bc48>] cpu_down+0x28/0x3a
[ 4972.341063] [<c027f800>] store_online+0x27/0x5a
[ 4972.345757] [<c027c854>] sysdev_store+0x20/0x25
[ 4972.350443] [<c01c2739>] sysfs_write_file+0xc5/0xfd
[ 4972.355482] [<c0187243>] vfs_write+0xd1/0x15a
[ 4972.360004] [<c0187873>] sys_write+0x3d/0x72
[ 4972.364411] [<c01041e0>] syscall_call+0x7/0xb
[ 4972.368924] [<b7ff0410>] 0xb7ff0410
[ 4972.372562] =======================
[ 4975.412963] lockdep: not fixing up alternatives.

we're not disbling local irqs on the cpu hotplug path.

Could do local_irq_disable() in slab_cpuup_callback(), I guess.

2007-05-31 18:57:35

by Christoph Lameter

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

On Thu, 31 May 2007, Andrew Morton wrote:

> we're not disbling local irqs on the cpu hotplug path.
>
> Could do local_irq_disable() in slab_cpuup_callback(), I guess.

Ahh I see.


SLUB: Fix locking for hotplug callbacks.

Hotplug callbacks seem to be performed with interrupts enabled. Slub requires
interrupts to be disabled for flushing caches.

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

Index: slub/mm/slub.c
===================================================================
--- slub.orig/mm/slub.c 2007-05-31 11:49:48.000000000 -0700
+++ slub/mm/slub.c 2007-05-31 11:54:09.000000000 -0700
@@ -2663,6 +2663,19 @@ static void for_all_slabs(void (*func)(s
}

/*
+ * Version of __flush_cpu_slab for the case that interrupts
+ * are enabled.
+ */
+static void cpu_slab_flush(struct kmem_cache *s, int cpu)
+{
+ unsigned long flags;
+
+ local_irq_save(flags);
+ __flush_cpu_slab(s, cpu);
+ local_irq_restore(flags);
+}
+
+/*
* Use the cpu notifier to insure that the cpu slabs are flushed when
* necessary.
*/
@@ -2676,7 +2689,7 @@ static int __cpuinit slab_cpuup_callback
case CPU_UP_CANCELED_FROZEN:
case CPU_DEAD:
case CPU_DEAD_FROZEN:
- for_all_slabs(__flush_cpu_slab, cpu);
+ for_all_slabs(cpu_slab_flush, cpu);
break;
default:
break;

2007-05-31 19:53:25

by Rafael J. Wysocki

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

On Thursday, 31 May 2007 17:29, Michal Piotrowski wrote:
> Hi,
>
> Andrew Morton napisał(a):
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/
> >
>
> FYI suspend to disk doesn't work anymore on my box, system hangs after "Suspending console(s)" message.
>
> [ 186.297753] Shrinking memory... -\|/-\|done (113064 pages freed)
> [ 187.841914] Freed 452256 kbytes in 1.54 seconds (293.67 MB/s)
> [ 187.847730] Suspending console(s)
>
> http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc3-mm1/console.log
> http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc3-mm1/mm-config

Hmm, that might be a couple of things, actually.

To see if the patches directly related to hibernation/suspend cause this, can
you please test 2.6.22-rc3 with the patch series at

http://www.sisk.pl/kernel/hibernation_and_suspend/2.6.22-rc3/patches/

applied?

Greetings,
Rafael

2007-05-31 20:43:28

by Mariusz Kozlowski

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

Hello

This is from iMac G3. The spufs_mem_mmap_fault() code looks bad
in arch/powerpc/platforms/cell/spufs/file.c but somehow I'm unable to find
the patch to blame hmm.

arch/powerpc/platforms/cell/spufs/file.c: In function 'spufs_mem_mmap_fault':
arch/powerpc/platforms/cell/spufs/file.c:122: error: 'address' undeclared (first use in this function)
arch/powerpc/platforms/cell/spufs/file.c:122: error: (Each undeclared identifier is reported only once
arch/powerpc/platforms/cell/spufs/file.c:122: error: for each function it appears in.)
arch/powerpc/platforms/cell/spufs/file.c:141: error: expected ';' before 'if'
arch/powerpc/platforms/cell/spufs/file.c:122: warning: unused variable 'addr0'
make[3]: *** [arch/powerpc/platforms/cell/spufs/file.o] Blad 1
make[2]: *** [arch/powerpc/platforms/cell/spufs] Blad 2
make[1]: *** [arch/powerpc/platforms/cell] Blad 2

Regards,

Mariusz

2007-05-31 21:20:15

by Andrew Morton

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

On Thu, 31 May 2007 22:43:18 +0200
Mariusz Kozlowski <[email protected]> wrote:

> Hello
>
> This is from iMac G3. The spufs_mem_mmap_fault() code looks bad
> in arch/powerpc/platforms/cell/spufs/file.c but somehow I'm unable to find
> the patch to blame hmm.
>
> arch/powerpc/platforms/cell/spufs/file.c: In function 'spufs_mem_mmap_fault':
> arch/powerpc/platforms/cell/spufs/file.c:122: error: 'address' undeclared (first use in this function)
> arch/powerpc/platforms/cell/spufs/file.c:122: error: (Each undeclared identifier is reported only once
> arch/powerpc/platforms/cell/spufs/file.c:122: error: for each function it appears in.)
> arch/powerpc/platforms/cell/spufs/file.c:141: error: expected ';' before 'if'
> arch/powerpc/platforms/cell/spufs/file.c:122: warning: unused variable 'addr0'
> make[3]: *** [arch/powerpc/platforms/cell/spufs/file.o] Blad 1
> make[2]: *** [arch/powerpc/platforms/cell/spufs] Blad 2
> make[1]: *** [arch/powerpc/platforms/cell] Blad 2
>

Yeah, that's the fix-fault-vs-invalidate-race patches, or my poor attempt
to fix them when spufs changed. I suppose I'll have a poke at it next time
I get the powerpc machine fired up.

2007-05-31 21:24:41

by Rafael J. Wysocki

[permalink] [raw]
Subject: [PATCH -mm] Freezer: migration_thread should not be freezable (was: Re: [linux-pm] Re: 2.6.22-rc3-mm1)

On Thursday, 31 May 2007 21:58, Rafael J. Wysocki wrote:
> On Thursday, 31 May 2007 17:29, Michal Piotrowski wrote:
> > Hi,
> >
> > Andrew Morton napisał(a):
> > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/
> > >
> >
> > FYI suspend to disk doesn't work anymore on my box, system hangs after "Suspending console(s)" message.
> >
> > [ 186.297753] Shrinking memory... -\|/-\|done (113064 pages freed)
> > [ 187.841914] Freed 452256 kbytes in 1.54 seconds (293.67 MB/s)
> > [ 187.847730] Suspending console(s)
> >
> > http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc3-mm1/console.log
> > http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc3-mm1/mm-config
>
> Hmm, that might be a couple of things, actually.
>
> To see if the patches directly related to hibernation/suspend cause this, can
> you please test 2.6.22-rc3 with the patch series at
>
> http://www.sisk.pl/kernel/hibernation_and_suspend/2.6.22-rc3/patches/
>
> applied?

Ahem, I broke it. :-(

Andrew, the following fix is needed on top of
freezer-make-kernel-threads-nonfreezable-by-default.patch

---
From: Rafael J. Wysocki <[email protected]>

migration_thread should not be freezable, or it will break hibernation and
suspend on SMP.

Signed-off-by: Rafael J. Wysocki <[email protected]>
---
kernel/sched.c | 3 ---
1 file changed, 3 deletions(-)

Index: linux-2.6.22-rc3/kernel/sched.c
===================================================================
--- linux-2.6.22-rc3.orig/kernel/sched.c
+++ linux-2.6.22-rc3/kernel/sched.c
@@ -5157,13 +5157,10 @@ static int migration_thread(void *data)
BUG_ON(rq->migration_thread != current);

set_current_state(TASK_INTERRUPTIBLE);
- set_freezable();
while (!kthread_should_stop()) {
struct migration_req *req;
struct list_head *head;

- try_to_freeze();
-
spin_lock_irq(&rq->lock);

if (cpu_is_offline(cpu)) {

2007-05-31 21:28:33

by Rafael J. Wysocki

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

On Thursday, 31 May 2007 23:25, Michal Piotrowski wrote:
> On 31/05/07, Rafael J. Wysocki <[email protected]> wrote:
> > On Thursday, 31 May 2007 17:29, Michal Piotrowski wrote:
> > > Hi,
> > >
> > > Andrew Morton napisa?(a):
> > > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/
> > > >
> > >
> > > FYI suspend to disk doesn't work anymore on my box, system hangs after "Suspending console(s)" message.
> > >
> > > [ 186.297753] Shrinking memory... -\|/-\|done (113064 pages freed)
> > > [ 187.841914] Freed 452256 kbytes in 1.54 seconds (293.67 MB/s)
> > > [ 187.847730] Suspending console(s)
> > >
> > > http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc3-mm1/console.log
> > > http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.22-rc3-mm1/mm-config
> >
> > Hmm, that might be a couple of things, actually.
> >
> > To see if the patches directly related to hibernation/suspend cause this, can
> > you please test 2.6.22-rc3 with the patch series at
> >
> > http://www.sisk.pl/kernel/hibernation_and_suspend/2.6.22-rc3/patches/
> >
> > applied?
>
> Ok, bug is in suspend tree.

Yup. Please see the message I've just sent (with a fix).

Rafael

2007-05-31 22:05:21

by Valdis Klētnieks

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - works-for-me and a meta-question...

On Wed, 30 May 2007 23:58:23 PDT, Andrew Morton said:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/

Builds, boots, seems to be behaving on my laptop (Dell D820, X86_64).

Meta-question: Is there a useful address/mailbox/webpage to toss *working*
reports at?




Attachments:
(No filename) (226.00 B)

2007-05-31 22:10:36

by Andrew Morton

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

On Thu, 31 May 2007 16:13:38 +0100
Christoph Hellwig <[email protected]> wrote:

> On Thu, May 31, 2007 at 08:35:13AM -0400, Jeff Garzik wrote:
> > Cornelia Huck wrote:
> > >On Thu, 31 May 2007 06:15:57 -0600,
> > >Matthew Wilcox <[email protected]> wrote:
> > >
> > >>On Thu, May 31, 2007 at 02:09:22PM +0200, Cornelia Huck wrote:
> > >>>I split those functions out into a new file. Builds on s390 and i386.
> > >>Why not just put #ifdef CONFIG_HAS_DMA / #endif around the pair of
> > >>functions? I don't see the need to add a new Kconfig symbol and a new
> > >>file for this.
> > >
> > >I prefer a new file over #ifdefs in c files. (New dma-dependent stuff
> > >would also have a place where it could go to.)
> > >
> > >But I'll do whatever ends up as consensus :)
> >
> > 50 lines isn't much need for a new file.
>
> The scsi core shouldn't know anything about dma mappings, so a separate
> file is a good idea just to keep the separation clean.

ok, let's go this way.

Cornelia, afaict your patch has no actual delendency upon Dan's
dma-mapping-prevent-dma-dependent-code-from-linking-on.patch, correct? If
so, I can merge it via James and then merge Dan's patch once James has
merged.

If there is a dependency then I guess I merge both into a single diff and
merge it all in one hit.

btw, this:

diff -puN include/scsi/scsi_cmnd.h~scsi-dont-build-scsi_dma_mapunmap-for-has_dma include/scsi/scsi_cmnd.h
--- a/include/scsi/scsi_cmnd.h~scsi-dont-build-scsi_dma_mapunmap-for-has_dma
+++ a/include/scsi/scsi_cmnd.h
@@ -135,8 +135,10 @@ extern void scsi_kunmap_atomic_sg(void *
extern struct scatterlist *scsi_alloc_sgtable(struct scsi_cmnd *, gfp_t);
extern void scsi_free_sgtable(struct scatterlist *, int);

+#ifdef CONFIG_SCSI_DMA
extern int scsi_dma_map(struct scsi_cmnd *cmd);
extern void scsi_dma_unmap(struct scsi_cmnd *cmd);
+#endif

#define scsi_sg_count(cmd) ((cmd)->use_sg)
#define scsi_sglist(cmd) ((struct scatterlist *)(cmd)->request_buffer)

We don't really need the ifdefs here. If someone incorrectly calls these
functions then they'll get a link-time failure anyway. The downside of
removing these ifdefs is that they won't get a compile-time warning, but I
tend to think that this small cost is worth it.

2007-05-31 22:17:17

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - works-for-me and a meta-question...

On Thu, 31 May 2007 18:05:04 -0400
[email protected] wrote:

> On Wed, 30 May 2007 23:58:23 PDT, Andrew Morton said:
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/
>
> Builds, boots, seems to be behaving on my laptop (Dell D820, X86_64).

cool, thanks.

> Meta-question: Is there a useful address/mailbox/webpage to toss *working*
> reports at?

ooh, don't know. Nobody's ever had a -mm kernel which worked before ;)

2007-05-31 23:14:18

by Mark Fasheh

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Wed, May 30, 2007 at 11:58:23PM -0700, Andrew Morton wrote:
> git-ocfs2.patch

Andrew, thanks for getting that back in there.


mm-fix-fault-vs-invalidate-race-for-linear-mappings.patch broke ocfs2 shared
writable mmap. We hang on a page lock because ->page_mkwrite() is
being called with the page already locked:

+ /*
+ * For consistency in subsequent calls, make the nopage_page always
+ * locked.
+ */
+ if (unlikely(!(vma->vm_flags & VM_CAN_INVALIDATE)))
+ lock_page(nopage_page);

It wasn't previously being called with the page lock held, intentionally.
--Mark

--
Mark Fasheh
Senior Software Developer, Oracle
[email protected]

2007-06-01 01:01:39

by Nick Piggin

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Thu, May 31, 2007 at 04:13:54PM -0700, Mark Fasheh wrote:
> On Wed, May 30, 2007 at 11:58:23PM -0700, Andrew Morton wrote:
> > git-ocfs2.patch
>
> Andrew, thanks for getting that back in there.
>
>
> mm-fix-fault-vs-invalidate-race-for-linear-mappings.patch broke ocfs2 shared
> writable mmap. We hang on a page lock because ->page_mkwrite() is
> being called with the page already locked:
>
> + /*
> + * For consistency in subsequent calls, make the nopage_page always
> + * locked.
> + */
> + if (unlikely(!(vma->vm_flags & VM_CAN_INVALIDATE)))
> + lock_page(nopage_page);
>
> It wasn't previously being called with the page lock held, intentionally.

Ah, I didn't realise you were using that yet. I expect ocfs2 is using
VM_CAN_INVALIDATE there anyway.

Hmm, this becomes easier to deal with after page_mkwrite is merged with
->fault. But for now, can we just lock the page at the do_wp_page site
as well, and change the API? All users I have seen want the page locked
there anyway...

2007-06-01 01:25:40

by Mark Fasheh

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Fri, Jun 01, 2007 at 03:01:29AM +0200, Nick Piggin wrote:
> Ah, I didn't realise you were using that yet. I expect ocfs2 is using
> VM_CAN_INVALIDATE there anyway.
>
> Hmm, this becomes easier to deal with after page_mkwrite is merged with
> ->fault. But for now, can we just lock the page at the do_wp_page site
> as well, and change the API? All users I have seen want the page locked
> there anyway...

Unfortunately that doesn't work for ocfs2 for exactly the same reasons page
lock doesn't work during a write either - there's a cluster lock inversion
and we might have to zero adjacent pages for an allocating write.

What's involved in merging it with ->fault?

Here's a nasty idea... Would it be valid for ->page_mkwrite to unlock the
page, so long as it's returned in a locked state? Though, do we even need
the page lock that early? It seemed to me that you were adding it for
consistency reasons (I could be wrong though).
--Mark

--
Mark Fasheh
Senior Software Developer, Oracle
[email protected]

2007-06-01 01:34:16

by Nick Piggin

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Thu, May 31, 2007 at 06:24:40PM -0700, Mark Fasheh wrote:
> On Fri, Jun 01, 2007 at 03:01:29AM +0200, Nick Piggin wrote:
> > Ah, I didn't realise you were using that yet. I expect ocfs2 is using
> > VM_CAN_INVALIDATE there anyway.
> >
> > Hmm, this becomes easier to deal with after page_mkwrite is merged with
> > ->fault. But for now, can we just lock the page at the do_wp_page site
> > as well, and change the API? All users I have seen want the page locked
> > there anyway...
>
> Unfortunately that doesn't work for ocfs2 for exactly the same reasons page
> lock doesn't work during a write either - there's a cluster lock inversion
> and we might have to zero adjacent pages for an allocating write.

I guess you could just fail the page_mkwrite and have it try again? ..
that would require changing it not to always go SIGBUS though.


> What's involved in merging it with ->fault?

Just I have't sent the patch (because at the time there were no
page_mkwrite users to look at).

It is nicer too, because the nopage path only has to call into
the filesystem once, to return the page (the filesystem can check
whether it is for write, and do the page_mkwrite thing at that
time). do_wp_page obviously still involves the extra call, and
that will be with a flag telling the fs that it isn't a "nopage"
fault, but a write fault on an existing page.


> Here's a nasty idea... Would it be valid for ->page_mkwrite to unlock the
> page, so long as it's returned in a locked state? Though, do we even need
> the page lock that early? It seemed to me that you were adding it for
> consistency reasons (I could be wrong though).

You could do that, but you'd have to probably check that it is
within i_size after you relock it, I think... yeah, that might
be the best thing for ocfs to do for now.

2007-06-01 01:49:19

by Mark Fasheh

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Fri, Jun 01, 2007 at 03:34:02AM +0200, Nick Piggin wrote:
> > Here's a nasty idea... Would it be valid for ->page_mkwrite to unlock the
> > page, so long as it's returned in a locked state? Though, do we even need
> > the page lock that early? It seemed to me that you were adding it for
> > consistency reasons (I could be wrong though).
>
> You could do that, but you'd have to probably check that it is
> within i_size after you relock it, I think... yeah, that might
> be the best thing for ocfs to do for now.

Well, ocfs2 already does i_size checks in page_mkwrite, so we're covered
with respect to truncate races.

I'm still not clear though - what was the reason for adding the page locking
there in the 1st place?
--Mark

--
Mark Fasheh
Senior Software Developer, Oracle
[email protected]

2007-06-01 01:54:07

by Nick Piggin

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Thu, May 31, 2007 at 06:45:17PM -0700, Mark Fasheh wrote:
> On Fri, Jun 01, 2007 at 03:34:02AM +0200, Nick Piggin wrote:
> > > Here's a nasty idea... Would it be valid for ->page_mkwrite to unlock the
> > > page, so long as it's returned in a locked state? Though, do we even need
> > > the page lock that early? It seemed to me that you were adding it for
> > > consistency reasons (I could be wrong though).
> >
> > You could do that, but you'd have to probably check that it is
> > within i_size after you relock it, I think... yeah, that might
> > be the best thing for ocfs to do for now.
>
> Well, ocfs2 already does i_size checks in page_mkwrite, so we're covered
> with respect to truncate races.
>
> I'm still not clear though - what was the reason for adding the page locking
> there in the 1st place?

Yeah, its to cover page invalidation races. There is a description in
an earlier patch's changelog.

2007-06-01 02:01:39

by Arnaldo Carvalho de Melo

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

Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/
>
> - Merged the convert-cpusets-to-container-infrastructure patches. These
> will probably be dropped and redone.
>
>
>
>
<BIG SNIP>
> x86 things
>
> +add-select-phylib-to-the-ucc_geth-kconfig-option.patch
> +m68k-parenthesis-balance.patch
> +msi-fix-the-ordering-of-msix-irqs.patch
> +msi-mask-the-msix-vector-before-we-unmap-it.patch
> +potential-parse-error-in-ifdef.patch
> +potential-parse-error-in-ifdef-fix.patch
> +potential-parse-error-in-ifdef-update.patch
> +pci_ids-update-patch-for-intel-ich9m.patch
> +x86-fix-oprofile-double-free-was-re-multiple-free.patch
>
http://lkml.org/lkml/2007/5/30/565 fixes the above patch :-)

<BIG SNIP>

- Arnaldo

2007-06-01 02:13:19

by Andrew Morton

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

On Thu, 31 May 2007 23:01:15 -0300 Arnaldo Carvalho de Melo <[email protected]> wrote:

> Andrew Morton wrote:
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/
> >
> > - Merged the convert-cpusets-to-container-infrastructure patches. These
> > will probably be dropped and redone.
> >
> >
> >
> >
> <BIG SNIP>
> > x86 things
> >
> > +add-select-phylib-to-the-ucc_geth-kconfig-option.patch
> > +m68k-parenthesis-balance.patch
> > +msi-fix-the-ordering-of-msix-irqs.patch
> > +msi-mask-the-msix-vector-before-we-unmap-it.patch
> > +potential-parse-error-in-ifdef.patch
> > +potential-parse-error-in-ifdef-fix.patch
> > +potential-parse-error-in-ifdef-update.patch
> > +pci_ids-update-patch-for-intel-ich9m.patch
> > +x86-fix-oprofile-double-free-was-re-multiple-free.patch
> >
> http://lkml.org/lkml/2007/5/30/565 fixes the above patch :-)
>

I don't know what you mean. The code is already using
for_each_possible_cpu() and
x86-fix-oprofile-double-free-was-re-multiple-free.patch doesn't change
that.

2007-06-01 02:25:07

by Arnaldo Carvalho de Melo

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

Andrew Morton wrote:
> On Thu, 31 May 2007 23:01:15 -0300 Arnaldo Carvalho de Melo <[email protected]> wrote:
>
>
>> Andrew Morton wrote:
>>
>>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/
>>>
>>> - Merged the convert-cpusets-to-container-infrastructure patches. These
>>> will probably be dropped and redone.
>>>
>>>
>>>
>>>
>>>
>> <BIG SNIP>
>>
>>> x86 things
>>>
>>> +add-select-phylib-to-the-ucc_geth-kconfig-option.patch
>>> +m68k-parenthesis-balance.patch
>>> +msi-fix-the-ordering-of-msix-irqs.patch
>>> +msi-mask-the-msix-vector-before-we-unmap-it.patch
>>> +potential-parse-error-in-ifdef.patch
>>> +potential-parse-error-in-ifdef-fix.patch
>>> +potential-parse-error-in-ifdef-update.patch
>>> +pci_ids-update-patch-for-intel-ich9m.patch
>>> +x86-fix-oprofile-double-free-was-re-multiple-free.patch
>>>
>>>
>> http://lkml.org/lkml/2007/5/30/565 fixes the above patch :-)
>>
>>
>
> I don't know what you mean. The code is already using
> for_each_possible_cpu() and
> x86-fix-oprofile-double-free-was-re-multiple-free.patch doesn't change
> that.
>
>
Yes, the code, i.e. nmi_setup already uses for_each_possible_cpu(), that
is not the problem. The problem is allocate_msr doing a
for_each_online_cpu(), i.e. not allocating for each_possible_cpu. Chris
tested and acked the patch: http://lkml.org/lkml/2007/5/31/36

- Arnaldo

2007-06-01 03:52:38

by Michael Ellerman

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

On 5/31/07, Andrew Morton <[email protected]> wrote:
>
...
> +msi-fix-the-ordering-of-msix-irqs.patch
> +msi-mask-the-msix-vector-before-we-unmap-it.patch
...
> 2.6.22 probable-queue

I think these two should be in the 2.6.22 definite-queue, unless Eric disagrees.

cheers

2007-06-01 05:20:59

by Mark Fasheh

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Fri, Jun 01, 2007 at 03:53:49AM +0200, Nick Piggin wrote:
> On Thu, May 31, 2007 at 06:45:17PM -0700, Mark Fasheh wrote:
> > On Fri, Jun 01, 2007 at 03:34:02AM +0200, Nick Piggin wrote:
> > > > Here's a nasty idea... Would it be valid for ->page_mkwrite to unlock the
> > > > page, so long as it's returned in a locked state? Though, do we even need
> > > > the page lock that early? It seemed to me that you were adding it for
> > > > consistency reasons (I could be wrong though).
> > >
> > > You could do that, but you'd have to probably check that it is
> > > within i_size after you relock it, I think... yeah, that might
> > > be the best thing for ocfs to do for now.

Ok. So how about the attached patch? It's a bit different than discussed,
but I think it's much cleaner because it preserves the current behavior of
the callback and keeps that bit of page locking inside core code. Not tested
as of yet, but I can run it tommorrow.
--Mark

--
Mark Fasheh
Senior Software Developer, Oracle
[email protected]

From: Mark Fasheh <[email protected]>

[PATCH] Release page lock before calling ->page_mkwrite

__do_fault() was calling ->page_mkwrite() with the page lock held, which
violates the locking rules for that callback. Release and retake the page
lock around the callback to avoid deadlocking file systems which manually
take it.

Signed-off-by: Mark Fasheh <[email protected]>
---
mm/memory.c | 14 +++++++++-----
1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/mm/memory.c b/mm/memory.c
index 7221618..491cc27 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2378,11 +2378,14 @@ static int __do_fault(struct mm_struct *
* address space wants to know that the page is about
* to become writable
*/
- if (vma->vm_ops->page_mkwrite &&
- vma->vm_ops->page_mkwrite(vma, page) < 0) {
- fdata.type = VM_FAULT_SIGBUS;
- anon = 1; /* no anon but release faulted_page */
- goto out;
+ if (vma->vm_ops->page_mkwrite) {
+ unlock_page(page);
+ if (vma->vm_ops->page_mkwrite(vma, page) < 0) {
+ fdata.type = VM_FAULT_SIGBUS;
+ anon = 1; /* no anon but release faulted_page */
+ goto out_unlocked;
+ }
+ lock_page(page);
}
}

@@ -2434,6 +2437,7 @@ static int __do_fault(struct mm_struct *

out:
unlock_page(faulted_page);
+out_unlocked:
if (anon)
page_cache_release(faulted_page);
else if (dirty_page) {
--
1.4.2.3

2007-06-01 05:56:34

by Eric W. Biederman

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

"Michael Ellerman" <[email protected]> writes:

> On 5/31/07, Andrew Morton <[email protected]> wrote:
>>
> ...
>> +msi-fix-the-ordering-of-msix-irqs.patch
>> +msi-mask-the-msix-vector-before-we-unmap-it.patch
> ...
>> 2.6.22 probable-queue
>
> I think these two should be in the 2.6.22 definite-queue, unless Eric disagrees.

They are simple bug fixes for regression in 2.6.22 so I don't see a reason
to delay them.

Eric

2007-06-01 07:10:15

by Cornelia Huck

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

On Thu, 31 May 2007 15:10:05 -0700,
Andrew Morton <[email protected]> wrote:

> Cornelia, afaict your patch has no actual delendency upon Dan's
> dma-mapping-prevent-dma-dependent-code-from-linking-on.patch, correct? If
> so, I can merge it via James and then merge Dan's patch once James has
> merged.

AFAICS there's no dependency in that direction.

> diff -puN include/scsi/scsi_cmnd.h~scsi-dont-build-scsi_dma_mapunmap-for-has_dma include/scsi/scsi_cmnd.h
> --- a/include/scsi/scsi_cmnd.h~scsi-dont-build-scsi_dma_mapunmap-for-has_dma
> +++ a/include/scsi/scsi_cmnd.h
> @@ -135,8 +135,10 @@ extern void scsi_kunmap_atomic_sg(void *
> extern struct scatterlist *scsi_alloc_sgtable(struct scsi_cmnd *, gfp_t);
> extern void scsi_free_sgtable(struct scatterlist *, int);
>
> +#ifdef CONFIG_SCSI_DMA
> extern int scsi_dma_map(struct scsi_cmnd *cmd);
> extern void scsi_dma_unmap(struct scsi_cmnd *cmd);
> +#endif
>
> #define scsi_sg_count(cmd) ((cmd)->use_sg)
> #define scsi_sglist(cmd) ((struct scatterlist *)(cmd)->request_buffer)
>
> We don't really need the ifdefs here. If someone incorrectly calls these
> functions then they'll get a link-time failure anyway. The downside of
> removing these ifdefs is that they won't get a compile-time warning, but I
> tend to think that this small cost is worth it.

OK, fine with me.

2007-06-01 16:42:19

by mel

[permalink] [raw]
Subject: 2.6.22-rc3-mm1: IA64 make allnoconfig broken

On (30/05/07 23:58), Andrew Morton didst pronounce:
>
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/
>
> - Merged the convert-cpusets-to-container-infrastructure patches. These
> will probably be dropped and redone.
>

Came across this while automating allnoconfig, allmodconfig
and defconfig build tests. I haven't checked to make 100% sure but
rework-ptep_set_access_flags-and-fix-sun4c.patch is the most likely candidate
based on the error - patch author cc'd.

Test result
===========
Machine name: elm3b10
Architecture: ia64
Build args: kernel 2.6.22-rc3-mm1
Result: Failed

Standard build: Completed successfully
make allnoconfig build: Failed and terminated the run
06/01/07-08:10:54 building kernel - make -j4 vmlinux.gz
CHK include/linux/version.h
UPD include/linux/version.h
CHK include/linux/utsrelease.h
UPD include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-ia64
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
CC arch/ia64/kernel/asm-offsets.s
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/file2alias.o
GEN include/asm-ia64/asm-offsets.h
CALL scripts/checksyscalls.sh
<stdin>:1380:2: warning: #warning syscall revokeat not implemented
<stdin>:1384:2: warning: #warning syscall frevoke not implemented
<stdin>:1392:2: warning: #warning syscall sched_yield_to not implemented
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/kallsyms
HOSTCC scripts/mod/sumversion.o
HOSTCC scripts/conmakehash
HOSTLD scripts/mod/modpost
CC init/main.o
LD usr/built-in.o
CHK include/linux/compile.h
UPD include/linux/compile.h
CC arch/ia64/kernel/acpi.o
CC init/do_mounts.o
AS arch/ia64/kernel/entry.o
CC arch/ia64/kernel/efi.o
CC init/noinitramfs.o
CC init/calibrate.o
CC init/version.o
LD init/mounts.o
LD init/built-in.o
AS arch/ia64/kernel/efi_stub.o
CC arch/ia64/mm/init.o
LDS arch/ia64/kernel/gate.lds
AS arch/ia64/kernel/gate.o
AS arch/ia64/kernel/fsys.o
CC arch/ia64/kernel/ia64_ksyms.o
CC arch/ia64/kernel/irq.o
CC arch/ia64/mm/fault.o
CC arch/ia64/kernel/irq_ia64.o
CC arch/ia64/mm/tlb.o
CC arch/ia64/kernel/irq_lsapic.o
CC arch/ia64/mm/extable.o
AS arch/ia64/kernel/ivt.o
CC arch/ia64/kernel/machvec.o
CC arch/ia64/mm/ioremap.o
AS arch/ia64/kernel/pal.o
CC arch/ia64/kernel/patch.o
CC arch/ia64/kernel/process.o
CC arch/ia64/mm/numa.o
CC arch/ia64/mm/discontig.o
CC arch/ia64/kernel/perfmon.o
LD arch/ia64/mm/built-in.o
CC arch/ia64/kernel/ptrace.o
CC arch/ia64/dig/setup.o
CC arch/ia64/dig/machvec.o
LD arch/ia64/dig/built-in.o
CC arch/ia64/kernel/sal.o
CC kernel/sched.o
CC arch/ia64/kernel/salinfo.o
CC arch/ia64/kernel/semaphore.o
CC arch/ia64/kernel/setup.o
CC arch/ia64/kernel/signal.o
{standard input}: Assembler messages:
{standard input}:12494: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12494: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12494: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12494: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12494: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12494: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12494: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12494: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12494: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12494: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12495: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12495: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12495: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12495: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12495: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12495: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12495: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12495: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12495: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12495: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12495: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12495: Warning: Only the first path encountering the conflict is reported
{standard input}:12494: Warning: This is the location of the conflicting usage
{standard input}:12495: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12495: Warning: Only the first path encountering the conflict is reported
{standard input}:12494: Warning: This is the location of the conflicting usage
{standard input}:12495: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12495: Warning: Only the first path encountering the conflict is reported
{standard input}:12494: Warning: This is the location of the conflicting usage
{standard input}:12495: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12495: Warning: Only the first path encountering the conflict is reported
{standard input}:12494: Warning: This is the location of the conflicting usage
{standard input}:12495: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12495: Warning: Only the first path encountering the conflict is reported
{standard input}:12494: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12493: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12494: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12494: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12494: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12494: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12494: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12495: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12495: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12495: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12495: Warning: This is the location of the conflicting usage
{standard input}:12496: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:12496: Warning: Only the first path encountering the conflict is reported
{standard input}:12495: Warning: This is the location of the conflicting usage
CC kernel/fork.o
CC arch/ia64/kernel/sys_ia64.o
CC arch/ia64/kernel/time.o
CC arch/ia64/kernel/traps.o
{standard input}: Assembler messages:
{standard input}:3480: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3480: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3480: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3480: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3480: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3480: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3480: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3480: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3480: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3480: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3481: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3481: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3481: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3481: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3481: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3481: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3481: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3481: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3481: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3481: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3481: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3481: Warning: Only the first path encountering the conflict is reported
{standard input}:3480: Warning: This is the location of the conflicting usage
{standard input}:3481: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3481: Warning: Only the first path encountering the conflict is reported
{standard input}:3480: Warning: This is the location of the conflicting usage
{standard input}:3481: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3481: Warning: Only the first path encountering the conflict is reported
{standard input}:3480: Warning: This is the location of the conflicting usage
{standard input}:3481: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3481: Warning: Only the first path encountering the conflict is reported
{standard input}:3480: Warning: This is the location of the conflicting usage
{standard input}:3481: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3481: Warning: Only the first path encountering the conflict is reported
{standard input}:3480: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3479: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3480: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3480: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3480: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3480: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3480: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3481: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3481: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3481: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3481: Warning: This is the location of the conflicting usage
{standard input}:3482: Warning: Use of 'mov' may violate WAW dependency 'RR#' (impliedf)
{standard input}:3482: Warning: Only the first path encountering the conflict is reported
{standard input}:3481: Warning: This is the location of the conflicting usage
CC kernel/exec_domain.o
CC kernel/panic.o
CC arch/ia64/kernel/unaligned.o
CC kernel/printk.o
CC arch/ia64/kernel/unwind.o
CC kernel/profile.o
CC kernel/exit.o
CC arch/ia64/kernel/mca.o
CC kernel/itimer.o
CC kernel/time.o
CC kernel/softirq.o
AS arch/ia64/kernel/mca_asm.o
CC arch/ia64/kernel/topology.o
CC kernel/resource.o
CC arch/ia64/kernel/brl_emu.o
CC kernel/sysctl.o
CC arch/ia64/kernel/acpi-ext.o
CC arch/ia64/kernel/iosapic.o
CC arch/ia64/kernel/numa.o
CC kernel/capability.o
GATE arch/ia64/kernel/gate-syms.o
AS arch/ia64/kernel/head.o
CC arch/ia64/kernel/init_task.o
CC kernel/ptrace.o
LDS arch/ia64/kernel/vmlinux.lds
GATE arch/ia64/kernel/gate.so
AS arch/ia64/kernel/gate-data.o
LD arch/ia64/kernel/built-in.o
CC kernel/timer.o
CC mm/bootmem.o
CC kernel/user.o
CC mm/filemap.o
CC kernel/signal.o
CC mm/mempool.o
CC kernel/sys.o
CC mm/oom_kill.o
CC mm/fadvise.o
CC mm/page_alloc.o
CC kernel/kmod.o
CC kernel/workqueue.o
CC kernel/pid.o
CC kernel/rcupdate.o
CC kernel/extable.o
CC mm/page-writeback.o
CC kernel/params.o
CC kernel/posix-timers.o
CC mm/pdflush.o
CC mm/readahead.o
CC kernel/kthread.o
CC mm/swap.o
CC kernel/wait.o
CC kernel/kfifo.o
CC mm/truncate.o
CC kernel/sys_ni.o
CC kernel/posix-cpu-timers.o
CC mm/vmscan.o
CC kernel/mutex.o
CC kernel/hrtimer.o
{standard input}: Assembler messages:
{standard input}:2603: Warning: Use of 'mov' may violate WAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 14
{standard input}:2603: Warning: Only the first path encountering the conflict is reported
{standard input}:2602: Warning: This is the location of the conflicting usage
CC mm/prio_tree.o
CC mm/util.o
CC kernel/rwsem.o
CC kernel/latency.o
CC mm/mmzone.o
CC kernel/nsproxy.o
CC mm/vmstat.o
CC kernel/srcu.o
CC mm/backing-dev.o
CC kernel/die_notifier.o
CC mm/fremap.o
CC kernel/irq/handle.o
CC mm/highmem.o
CC kernel/irq/manage.o
CC mm/madvise.o
CC kernel/irq/spurious.o
CC mm/memory.o
CC kernel/irq/resend.o
mm/memory.c: In function `do_wp_page':
mm/memory.c:1700: error: parse error before "__changed"
mm/memory.c:1700: error: parse error before ')' token
mm/memory.c:1704: error: parse error before "ret"
mm/memory.c:1639: warning: unused variable `new_page'
mm/memory.c:1641: warning: unused variable `ret'
mm/memory.c:1689: error: label `unlock' used but not defined
mm/memory.c:1677: error: label `unwritable_page' used but not defined
mm/memory.c:1646: error: label `gotten' used but not defined
mm/memory.c: At top level:
mm/memory.c:1713: error: parse error before "while"
mm/memory.c:1725: warning: type defaults to `int' in declaration of `cow_user_page'
mm/memory.c:1725: warning: parameter names (without types) in function declaration
mm/memory.c:1725: error: conflicting types for `cow_user_page'
mm/memory.c:1590: error: previous declaration of `cow_user_page'
mm/memory.c:1725: warning: data definition has no type or storage class
mm/memory.c:1726: error: parse error before '}' token
mm/memory.c:1731: warning: type defaults to `int' in declaration of `page_table'
mm/memory.c:1731: error: braced-group within expression allowed only inside a function
mm/memory.c:1731: error: `pmd' undeclared here (not in a function)
mm/memory.c:1731: warning: data definition has no type or storage class
mm/memory.c:1731: error: parse error before '&' token
mm/memory.c:1731: error: braced-group within expression allowed only inside a function
mm/memory.c:1731: error: `pmd' undeclared here (not in a function)
mm/memory.c:1731: error: parse error before ';' token
mm/memory.c:1731: error: `address' undeclared here (not in a function)
mm/memory.c:1731: error: parse error before ')' token
mm/memory.c:1731: error: parse error before '&' token
mm/memory.c:1731: warning: type defaults to `int' in declaration of `__pte'
mm/memory.c:1731: error: conflicting types for `__pte'
mm/memory.c:1731: error: previous declaration of `__pte'
mm/memory.c:1731: warning: data definition has no type or storage class
mm/memory.c:1731: error: parse error before '}' token
mm/memory.c:1737: error: parse error before '->' token
mm/memory.c:1742: warning: type defaults to `int' in declaration of `entry'
mm/memory.c:1742: error: braced-group within expression allowed only inside a function
mm/memory.c:1742: error: parse error before ')' token
mm/memory.c:1742: error: `__pg' undeclared here (not in a function)
mm/memory.c:1742: error: initializer element is not constant
mm/memory.c:1742: error: parse error before "unsigned"
mm/memory.c:1742: warning: type defaults to `int' in declaration of `__pte'
mm/memory.c:1742: warning: data definition has no type or storage class
mm/memory.c:1742: error: parse error before '}' token
mm/memory.c:1743: warning: type defaults to `int' in declaration of `entry'
mm/memory.c:1743: error: redefinition of `entry'
mm/memory.c:1742: error: `entry' previously defined here
mm/memory.c:1743: error: request for member `pte' in something not a structure or union
mm/memory.c:1743: error: `vma' undeclared here (not in a function)
mm/memory.c:1743: error: incompatible types in initialization
mm/memory.c:1743: error: initializer element is not constant
mm/memory.c:1743: warning: data definition has no type or storage class
mm/memory.c:1744: warning: type defaults to `int' in declaration of `lazy_mmu_prot_update'
mm/memory.c:1744: warning: parameter names (without types) in function declaration
mm/memory.c:1744: error: conflicting types for `lazy_mmu_prot_update'
include/asm/pgtable.h:510: error: previous declaration of `lazy_mmu_prot_update'
mm/memory.c:1744: warning: data definition has no type or storage class
mm/memory.c:1751: error: parse error before '{' token
mm/memory.c:1751: warning: type defaults to `int' in declaration of `__pte'
mm/memory.c:1751: error: `vma' undeclared here (not in a function)
mm/memory.c:1751: error: `address' undeclared here (not in a function)
mm/memory.c:1751: warning: passing arg 3 of `ptep_get_and_clear' makes pointer from integer without a cast
mm/memory.c:1751: error: incompatible types in initialization
mm/memory.c:1751: error: initializer element is not constant
mm/memory.c:1751: warning: data definition has no type or storage class
mm/memory.c:1751: warning: type defaults to `int' in declaration of `flush_tlb_page'
mm/memory.c:1751: warning: parameter names (without types) in function declaration
mm/memory.c:1751: error: conflicting types for `flush_tlb_page'
include/asm/tlbflush.h:75: error: previous declaration of `flush_tlb_page'
mm/memory.c:1751: warning: data definition has no type or storage class
mm/memory.c:1751: warning: type defaults to `int' in declaration of `__pte'
mm/memory.c:1751: warning: data definition has no type or storage class
mm/memory.c:1751: error: parse error before '}' token
mm/memory.c:1752: error: parse error before '=' token
mm/memory.c:1754: warning: type defaults to `int' in declaration of `lru_cache_add_active'
mm/memory.c:1754: warning: parameter names (without types) in function declaration
mm/memory.c:1754: error: conflicting types for `lru_cache_add_active'
include/linux/swap.h:182: error: previous declaration of `lru_cache_add_active'
mm/memory.c:1754: warning: data definition has no type or storage class
mm/memory.c:1755: warning: type defaults to `int' in declaration of `page_add_new_anon_rmap'
mm/memory.c:1755: warning: parameter names (without types) in function declaration
mm/memory.c:1755: error: conflicting types for `page_add_new_anon_rmap'
include/linux/rmap.h:73: error: previous declaration of `page_add_new_anon_rmap'
mm/memory.c:1755: warning: data definition has no type or storage class
mm/memory.c:1758: warning: type defaults to `int' in declaration of `new_page'
mm/memory.c:1758: error: `old_page' undeclared here (not in a function)
mm/memory.c:1758: warning: data definition has no type or storage class
mm/memory.c:1759: error: parse error before '|=' token
mm/memory.c:1777: warning: type defaults to `int' in declaration of `set_page_dirty_balance'
mm/memory.c:1777: warning: parameter names (without types) in function declaration
mm/memory.c:1777: error: conflicting types for `set_page_dirty_balance'
include/linux/writeback.h:130: error: previous declaration of `set_page_dirty_balance'
mm/memory.c:1777: warning: data definition has no type or storage class
mm/memory.c:1778: warning: type defaults to `int' in declaration of `put_page'
mm/memory.c:1778: warning: parameter names (without types) in function declaration
mm/memory.c:1778: error: conflicting types for `put_page'
include/linux/mm.h:334: error: previous declaration of `put_page'
mm/memory.c:1778: warning: data definition has no type or storage class
mm/memory.c:1779: error: parse error before '}' token
mm/memory.c: In function `handle_pte_fault':
mm/memory.c:2544: error: parse error before "__changed"
mm/memory.c:2544: error: parse error before ')' token
mm/memory.c:2547: error: parse error before "else"
mm/memory.c:2536: error: label `unlock' used but not defined
mm/memory.c: At top level:
mm/memory.c:2557: error: parse error before ':' token
{standard input}: Assembler messages:
{standard input}:88: Error: symbol `entry' is already defined
make[1]: *** [mm/memory.o] Error 1
make: *** [mm] Error 2
make: *** Waiting for unfinished jobs....
CC kernel/power/main.o
CC kernel/irq/chip.o
CC kernel/power/process.o
CC kernel/irq/devres.o
CC kernel/power/console.o
CC kernel/irq/autoprobe.o
LD kernel/power/built-in.o
CC kernel/irq/proc.o
CC kernel/time/timekeeping.o
LD kernel/irq/built-in.o
CC kernel/time/ntp.o
CC kernel/futex.o
CC kernel/time/clocksource.o
CC kernel/time/jiffies.o
CC kernel/time/timer_list.o
LD kernel/time/built-in.o
CC kernel/rtmutex.o
CC kernel/kallsyms.o
CC kernel/ksysfs.o
CC kernel/utsname_sysctl.o
LD kernel/built-in.o
06/01/07-08:11:46 Build the kernel. Failed rc = 2
06/01/07-08:11:46 apack-bench-build_configs: Building kernel... Failed rc = 1
Failed and terminated the run
06/01/07-08:11:46 command complete: (1) rc=126 (TEST ABORT)
Fatal error, aborting autorun

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab

2007-06-01 17:00:25

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1: IA64 make allnoconfig broken

On Fri, 1 Jun 2007 17:42:04 +0100 [email protected] (Mel Gorman) wrote:

> mm/memory.c: In function `do_wp_page':
> mm/memory.c:1700: error: parse error before "__changed"
> mm/memory.c:1700: error: parse error before ')' token
> mm/memory.c:1704: error: parse error before "ret"

this?

--- a/include/asm-ia64/pgtable.h~rework-ptep_set_access_flags-and-fix-sun4c-fix
+++ a/include/asm-ia64/pgtable.h
@@ -546,7 +546,7 @@ extern void lazy_mmu_prot_update (pte_t
# define ptep_set_access_flags(__vma, __addr, __ptep, __entry, __safely_writable) \
({ \
int __changed = !pte_same(*(__ptep), __entry); \
- if (__changed) { \
+ if (__changed) \
ptep_establish(__vma, __addr, __ptep, __entry) \
__changed; \
})

2007-06-01 18:50:27

by mel

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1: IA64 make allnoconfig broken

On (01/06/07 10:00), Andrew Morton didst pronounce:
> On Fri, 1 Jun 2007 17:42:04 +0100 [email protected] (Mel Gorman) wrote:
>
> > mm/memory.c: In function `do_wp_page':
> > mm/memory.c:1700: error: parse error before "__changed"
> > mm/memory.c:1700: error: parse error before ')' token
> > mm/memory.c:1704: error: parse error before "ret"
>
> this?
>
> --- a/include/asm-ia64/pgtable.h~rework-ptep_set_access_flags-and-fix-sun4c-fix
> +++ a/include/asm-ia64/pgtable.h
> @@ -546,7 +546,7 @@ extern void lazy_mmu_prot_update (pte_t
> # define ptep_set_access_flags(__vma, __addr, __ptep, __entry, __safely_writable) \
> ({ \
> int __changed = !pte_same(*(__ptep), __entry); \
> - if (__changed) { \
> + if (__changed) \
> ptep_establish(__vma, __addr, __ptep, __entry) \
> __changed; \
> })

Fails with

mm/memory.c: In function `do_wp_page':
mm/memory.c:1700: error: parse error before "__changed"
mm/memory.c: In function `handle_pte_fault':
mm/memory.c:2544: error: parse error before "__changed"

Am currently testing the following;

diff -rup -X /usr/src/patchset-0.6/bin//dontdiff linux-2.6.22-rc3-mm1-clean/include/asm-ia64/pgtable.h linux-2.6.22-rc3-mm1-ia64fix/include/asm-ia64/pgtable.h
--- linux-2.6.22-rc3-mm1-clean/include/asm-ia64/pgtable.h 2007-06-01 09:24:39.000000000 +0100
+++ linux-2.6.22-rc3-mm1-ia64fix/include/asm-ia64/pgtable.h 2007-06-01 19:44:48.000000000 +0100
@@ -546,8 +546,8 @@ extern void lazy_mmu_prot_update (pte_t
# define ptep_set_access_flags(__vma, __addr, __ptep, __entry, __safely_writable) \
({ \
int __changed = !pte_same(*(__ptep), __entry); \
- if (__changed) { \
- ptep_establish(__vma, __addr, __ptep, __entry) \
+ if (__changed) \
+ ptep_establish(__vma, __addr, __ptep, __entry); \
__changed; \
})
#endif

--
--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab

2007-06-01 20:51:16

by Mariusz Kozlowski

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

> > This is from iMac G3. The spufs_mem_mmap_fault() code looks bad
> > in arch/powerpc/platforms/cell/spufs/file.c but somehow I'm unable to find
> > the patch to blame hmm.
> >
> > arch/powerpc/platforms/cell/spufs/file.c: In function 'spufs_mem_mmap_fault':
> > arch/powerpc/platforms/cell/spufs/file.c:122: error: 'address' undeclared (first use in this function)
> > arch/powerpc/platforms/cell/spufs/file.c:122: error: (Each undeclared identifier is reported only once
> > arch/powerpc/platforms/cell/spufs/file.c:122: error: for each function it appears in.)
> > arch/powerpc/platforms/cell/spufs/file.c:141: error: expected ';' before 'if'
> > arch/powerpc/platforms/cell/spufs/file.c:122: warning: unused variable 'addr0'
> > make[3]: *** [arch/powerpc/platforms/cell/spufs/file.o] Blad 1
> > make[2]: *** [arch/powerpc/platforms/cell/spufs] Blad 2
> > make[1]: *** [arch/powerpc/platforms/cell] Blad 2
> >
>
> Yeah, that's the fix-fault-vs-invalidate-race patches, or my poor attempt
> to fix them when spufs changed. I suppose I'll have a poke at it next time
> I get the powerpc machine fired up.

I #if 0'ed that piece of code inside spufs_mem_mmap_fault() and run make again.
This is 'make allmodconfig && make' result:

ERROR: ".ps3av_set_hdr" [drivers/ps3/ps3av_cmd.ko] undefined!
ERROR: ".ps3av_do_pkt" [drivers/ps3/ps3av_cmd.ko] undefined!
ERROR: ".ps3_vuart_write" [drivers/ps3/ps3av_cmd.ko] undefined!
ERROR: ".ps3_vuart_read" [drivers/ps3/ps3av_cmd.ko] undefined!
ERROR: ".ps3av_cmd_fin" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_av_video_disable_sig" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_set_video_mode" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_video_get_monitor_info" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_audio_active" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_set_audio_mode" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_set_av_audio_param" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_vuart_read" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_av_get_hw_conf" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_av_video_mute" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_av_tv_mute" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_audio_mode" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_av_hdmi_mode" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_set_av_video_cs" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_vuart_write" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_audio_mute" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_avb_param" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_init" [drivers/ps3/ps3av.ko] undefined!
ERROR: ".ps3av_cmd_av_audio_mute" [drivers/ps3/ps3av.ko] undefined!
ERROR: "pmu_batteries" [drivers/power/pmu_battery.ko] undefined!
ERROR: "pmu_battery_count" [drivers/power/pmu_battery.ko] undefined!
ERROR: "pmu_power_flags" [drivers/power/pmu_battery.ko] undefined!
ERROR: "irq_map" [drivers/net/pasemi_mac.ko] undefined!
ERROR: "pmu_batteries" [drivers/macintosh/apm_emu.ko] undefined!
ERROR: "pmu_battery_count" [drivers/macintosh/apm_emu.ko] undefined!
ERROR: "pmu_power_flags" [drivers/macintosh/apm_emu.ko] undefined!
ERROR: ".cpufreq_set_policy" [arch/powerpc/platforms/cell/cbe_cpufreq.ko] undefined!
make[1]: *** [__modpost] Blad 1
make: *** [modules] Blad 2

Regards,

Mariusz

2007-06-01 20:56:23

by mel

[permalink] [raw]
Subject: [PATCH] Fix problem with IA64 make allnoconfig

IA64 fails to build with allnoconfig due to an error in the !CONFIG_SMP
case. Ths following patch fixes it and should be considered a fix to
rework-ptep_set_access_flags-and-fix-sun4c.patch.

allmodconfig and defconfig tests are still running.

Signed-off-by: Mel Gorman <[email protected]>
---
pgtable.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff -rup -X /usr/src/patchset-0.6/bin//dontdiff linux-2.6.22-rc3-mm1-clean/include/asm-ia64/pgtable.h linux-2.6.22-rc3-mm1-ia64fix/include/asm-ia64/pgtable.h
--- linux-2.6.22-rc3-mm1-clean/include/asm-ia64/pgtable.h 2007-06-01 09:24:39.000000000 +0100
+++ linux-2.6.22-rc3-mm1-ia64fix/include/asm-ia64/pgtable.h 2007-06-01 19:44:48.000000000 +0100
@@ -546,8 +546,8 @@ extern void lazy_mmu_prot_update (pte_t
# define ptep_set_access_flags(__vma, __addr, __ptep, __entry, __safely_writable) \
({ \
int __changed = !pte_same(*(__ptep), __entry); \
- if (__changed) { \
- ptep_establish(__vma, __addr, __ptep, __entry) \
+ if (__changed) \
+ ptep_establish(__vma, __addr, __ptep, __entry); \
__changed; \
})
#endif

2007-06-01 21:02:32

by Andrew Morton

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

On Fri, 1 Jun 2007 22:50:58 +0200
Mariusz Kozlowski <[email protected]> wrote:

> > > This is from iMac G3. The spufs_mem_mmap_fault() code looks bad
> > > in arch/powerpc/platforms/cell/spufs/file.c but somehow I'm unable to find
> > > the patch to blame hmm.
> > >
> > > arch/powerpc/platforms/cell/spufs/file.c: In function 'spufs_mem_mmap_fault':
> > > arch/powerpc/platforms/cell/spufs/file.c:122: error: 'address' undeclared (first use in this function)
> > > arch/powerpc/platforms/cell/spufs/file.c:122: error: (Each undeclared identifier is reported only once
> > > arch/powerpc/platforms/cell/spufs/file.c:122: error: for each function it appears in.)
> > > arch/powerpc/platforms/cell/spufs/file.c:141: error: expected ';' before 'if'
> > > arch/powerpc/platforms/cell/spufs/file.c:122: warning: unused variable 'addr0'
> > > make[3]: *** [arch/powerpc/platforms/cell/spufs/file.o] Blad 1
> > > make[2]: *** [arch/powerpc/platforms/cell/spufs] Blad 2
> > > make[1]: *** [arch/powerpc/platforms/cell] Blad 2
> > >
> >
> > Yeah, that's the fix-fault-vs-invalidate-race patches, or my poor attempt
> > to fix them when spufs changed. I suppose I'll have a poke at it next time
> > I get the powerpc machine fired up.
>
> I #if 0'ed that piece of code inside spufs_mem_mmap_fault() and run make again.
> This is 'make allmodconfig && make' result:
>
> ERROR: ".ps3av_set_hdr" [drivers/ps3/ps3av_cmd.ko] undefined!
> ERROR: ".ps3av_do_pkt" [drivers/ps3/ps3av_cmd.ko] undefined!
> ERROR: ".ps3_vuart_write" [drivers/ps3/ps3av_cmd.ko] undefined!
> ERROR: ".ps3_vuart_read" [drivers/ps3/ps3av_cmd.ko] undefined!
> ERROR: ".ps3av_cmd_fin" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_av_video_disable_sig" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_set_video_mode" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_video_get_monitor_info" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_audio_active" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_set_audio_mode" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_set_av_audio_param" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_vuart_read" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_av_get_hw_conf" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_av_video_mute" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_av_tv_mute" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_audio_mode" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_av_hdmi_mode" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_set_av_video_cs" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_vuart_write" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_audio_mute" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_avb_param" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_init" [drivers/ps3/ps3av.ko] undefined!
> ERROR: ".ps3av_cmd_av_audio_mute" [drivers/ps3/ps3av.ko] undefined!
> ERROR: "pmu_batteries" [drivers/power/pmu_battery.ko] undefined!
> ERROR: "pmu_battery_count" [drivers/power/pmu_battery.ko] undefined!
> ERROR: "pmu_power_flags" [drivers/power/pmu_battery.ko] undefined!
> ERROR: "irq_map" [drivers/net/pasemi_mac.ko] undefined!
> ERROR: "pmu_batteries" [drivers/macintosh/apm_emu.ko] undefined!
> ERROR: "pmu_battery_count" [drivers/macintosh/apm_emu.ko] undefined!
> ERROR: "pmu_power_flags" [drivers/macintosh/apm_emu.ko] undefined!
> ERROR: ".cpufreq_set_policy" [arch/powerpc/platforms/cell/cbe_cpufreq.ko] undefined!
> make[1]: *** [__modpost] Blad 1
> make: *** [modules] Blad 2
>

Yeah, allmodconfig tends to fall over in a heap on a lot of the
less-lavishly-maintained architectures. If any of these are specific to
-mm then I guess we should fix them up, prevent the kernel from actually
going backwards.



2007-06-01 21:21:26

by Mariusz Kozlowski

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

> > > > This is from iMac G3. The spufs_mem_mmap_fault() code looks bad
> > > > in arch/powerpc/platforms/cell/spufs/file.c but somehow I'm unable to find
> > > > the patch to blame hmm.
> > > >
> > > > arch/powerpc/platforms/cell/spufs/file.c: In function 'spufs_mem_mmap_fault':
> > > > arch/powerpc/platforms/cell/spufs/file.c:122: error: 'address' undeclared (first use in this function)
> > > > arch/powerpc/platforms/cell/spufs/file.c:122: error: (Each undeclared identifier is reported only once
> > > > arch/powerpc/platforms/cell/spufs/file.c:122: error: for each function it appears in.)
> > > > arch/powerpc/platforms/cell/spufs/file.c:141: error: expected ';' before 'if'
> > > > arch/powerpc/platforms/cell/spufs/file.c:122: warning: unused variable 'addr0'
> > > > make[3]: *** [arch/powerpc/platforms/cell/spufs/file.o] Blad 1
> > > > make[2]: *** [arch/powerpc/platforms/cell/spufs] Blad 2
> > > > make[1]: *** [arch/powerpc/platforms/cell] Blad 2
> > > >
> > >
> > > Yeah, that's the fix-fault-vs-invalidate-race patches, or my poor attempt
> > > to fix them when spufs changed. I suppose I'll have a poke at it next time
> > > I get the powerpc machine fired up.
> >
> > I #if 0'ed that piece of code inside spufs_mem_mmap_fault() and run make again.
> > This is 'make allmodconfig && make' result:
> >
> > ERROR: ".ps3av_set_hdr" [drivers/ps3/ps3av_cmd.ko] undefined!
> > ERROR: ".ps3av_do_pkt" [drivers/ps3/ps3av_cmd.ko] undefined!
> > ERROR: ".ps3_vuart_write" [drivers/ps3/ps3av_cmd.ko] undefined!
> > ERROR: ".ps3_vuart_read" [drivers/ps3/ps3av_cmd.ko] undefined!
> > ERROR: ".ps3av_cmd_fin" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_av_video_disable_sig" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_set_video_mode" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_video_get_monitor_info" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_audio_active" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_set_audio_mode" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_set_av_audio_param" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_vuart_read" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_av_get_hw_conf" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_av_video_mute" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_av_tv_mute" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_audio_mode" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_av_hdmi_mode" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_set_av_video_cs" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_vuart_write" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_audio_mute" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_avb_param" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_init" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: ".ps3av_cmd_av_audio_mute" [drivers/ps3/ps3av.ko] undefined!
> > ERROR: "pmu_batteries" [drivers/power/pmu_battery.ko] undefined!
> > ERROR: "pmu_battery_count" [drivers/power/pmu_battery.ko] undefined!
> > ERROR: "pmu_power_flags" [drivers/power/pmu_battery.ko] undefined!
> > ERROR: "irq_map" [drivers/net/pasemi_mac.ko] undefined!
> > ERROR: "pmu_batteries" [drivers/macintosh/apm_emu.ko] undefined!
> > ERROR: "pmu_battery_count" [drivers/macintosh/apm_emu.ko] undefined!
> > ERROR: "pmu_power_flags" [drivers/macintosh/apm_emu.ko] undefined!
> > ERROR: ".cpufreq_set_policy" [arch/powerpc/platforms/cell/cbe_cpufreq.ko] undefined!
> > make[1]: *** [__modpost] Blad 1
> > make: *** [modules] Blad 2
> >
>
> Yeah, allmodconfig tends to fall over in a heap on a lot of the
> less-lavishly-maintained architectures. If any of these are specific to
> -mm then I guess we should fix them up, prevent the kernel from actually
> going backwards.

I recall compiling earlier versions of -mm on this iMac just fine a few months ago.
Now it looks like a bunch of new warnings appeared and if fails to compile for various
reasons in different places. I'm thinking of running -mm in next few days so maybe
something interesting will come up :-)

BTW. This is 'make allnoconfig && make' result:

MODPOST vmlinux
ln: accessing `arch/powerpc/boot/zImage': No such file or directory
make[1]: *** [arch/powerpc/boot/zImage] Error 1
make: *** [zImage] Error 2

2007-06-01 22:01:39

by Mark Fasheh

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Thu, May 31, 2007 at 10:20:39PM -0700, Mark Fasheh wrote:
> Ok. So how about the attached patch? It's a bit different than discussed,
> but I think it's much cleaner because it preserves the current behavior of
> the callback and keeps that bit of page locking inside core code. Not tested
> as of yet, but I can run it tommorrow.

Ok - this patch seems to check out fine in testing - no more deadlocking.

Andrew, if this is ok with you I'd really like to see that fix in -mm. Ocfs2
shared write mmap will instantly deadlock without it.

>From reading Nick's description of the problem in
mm-fix-fault-vs-invalidate-race-for-linear-mappings.patch I think we're
pretty safe (as I noted before) because Ocfs2 re-checks the mapping under
lock to protect against trucate races. That's been an "unwritten"
requirement of page_mkwrite() anyway.

Speaking of requirements, attached is my sad attempt at documenting the API.
I know it might be merged into ->fault at some point, but we really ought to
have _something_ in the meantime.
--Mark

--
Mark Fasheh
Senior Software Developer, Oracle
[email protected]


From: Mark Fasheh <[email protected]>

[PATCH] Document ->page_mkwrite() locking

There seems to be very little documentation about this callback in general.
The locking in particular is a bit tricky, so it's worth having this in
writing.

Signed-off-by: Mark Fasheh <[email protected]>

---

Documentation/filesystems/Locking | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)

2320eadfa34199c779638edbdbb6c491df09c49b
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index 970c8ec..91ec4b4 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -512,13 +512,22 @@ prototypes:
void (*close)(struct vm_area_struct*);
struct page *(*fault)(struct vm_area_struct*, struct fault_data *);
struct page *(*nopage)(struct vm_area_struct*, unsigned long, int *);
+ int (*page_mkwrite)(struct vm_area_struct *, struct page *);

locking rules:
- BKL mmap_sem
+ BKL mmap_sem PageLocked(page)
open: no yes
close: no yes
fault: no yes
nopage: no yes
+page_mkwrite: no yes no
+
+ ->page_mkwrite() is called when a previously read-only page is
+about to become writeable. The file system is responsible for
+protecting against truncate races. Once appropriate action has been
+taking to lock out truncate, the page range should be verified to be
+within i_size. The page mapping should also be checked that it is not
+NULL.

================================================================================
Dubious stuff
--
1.3.3

2007-06-01 22:26:05

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Fri, 1 Jun 2007 15:01:18 -0700
Mark Fasheh <[email protected]> wrote:

> On Thu, May 31, 2007 at 10:20:39PM -0700, Mark Fasheh wrote:
> > Ok. So how about the attached patch? It's a bit different than discussed,
> > but I think it's much cleaner because it preserves the current behavior of
> > the callback and keeps that bit of page locking inside core code. Not tested
> > as of yet, but I can run it tommorrow.
>
> Ok - this patch seems to check out fine in testing - no more deadlocking.
>
> Andrew, if this is ok with you I'd really like to see that fix in -mm. Ocfs2
> shared write mmap will instantly deadlock without it.

ug, OK. I get a ginormous reject when merging ocfs2 on Nick's stuff which
I've been largely ignoring thus far.

Perhaps I need to go back to staging Nick's stuff after the git trees. I'll
take a look.

2007-06-01 22:33:23

by Mark Fasheh

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Fri, Jun 01, 2007 at 03:25:37PM -0700, Andrew Morton wrote:
> > Andrew, if this is ok with you I'd really like to see that fix in -mm. Ocfs2
> > shared write mmap will instantly deadlock without it.
>
> ug, OK. I get a ginormous reject when merging ocfs2 on Nick's stuff which
> I've been largely ignoring thus far.

Huh, I'm a bit confused... I created this patch on top of 2.6.22-rc3-mm1
which most certainly contains a merge of git-ocfs2.patch and the series
which at least contains
mm-fix-fault-vs-invalidate-race-for-linear-mappings.patch.

So, which of Nick's patches are we talking about here?

Btw, I know you tend to handle rejects yourself, but if it's a major PITA
I'd be happy to help out. Boy, I'm hoping I didn't just ask for a load of
trouble there :)
--Mark

--
Mark Fasheh
Senior Software Developer, Oracle
[email protected]

2007-06-01 22:47:49

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Fri, 1 Jun 2007 15:33:02 -0700
Mark Fasheh <[email protected]> wrote:

> On Fri, Jun 01, 2007 at 03:25:37PM -0700, Andrew Morton wrote:
> > > Andrew, if this is ok with you I'd really like to see that fix in -mm. Ocfs2
> > > shared write mmap will instantly deadlock without it.
> >
> > ug, OK. I get a ginormous reject when merging ocfs2 on Nick's stuff which
> > I've been largely ignoring thus far.
>
> Huh, I'm a bit confused... I created this patch on top of 2.6.22-rc3-mm1
> which most certainly contains a merge of git-ocfs2.patch and the series
> which at least contains
> mm-fix-fault-vs-invalidate-race-for-linear-mappings.patch.

Right. I did a lot of tricksy work for rc3-mm1 to merge git-ocfs2 on top
of Nick's stuff. Then I repulled your tree and lost it all. This is
because I was dumb and I fixed rc3-mm1's git-ocfs.patch rather than doing a
separate fix-rejects-in-git-ocfs2.patch.

This is all unique-to-akpm stuff which you don't need to worry about ;)

> So, which of Nick's patches are we talking about here?
>
> Btw, I know you tend to handle rejects yourself, but if it's a major PITA
> I'd be happy to help out. Boy, I'm hoping I didn't just ask for a load of
> trouble there :)

Is OK - I'll move Nick's patches back to behind the git trees and it'll all come
good.

2007-06-01 22:53:34

by Mark Fasheh

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

On Fri, Jun 01, 2007 at 03:47:35PM -0700, Andrew Morton wrote:
> Right. I did a lot of tricksy work for rc3-mm1 to merge git-ocfs2 on top
> of Nick's stuff. Then I repulled your tree and lost it all. This is
> because I was dumb and I fixed rc3-mm1's git-ocfs.patch rather than doing a
> separate fix-rejects-in-git-ocfs2.patch.
>
> This is all unique-to-akpm stuff which you don't need to worry about ;)

Ok, I am no longer concerned! :)


> > So, which of Nick's patches are we talking about here?
> >
> > Btw, I know you tend to handle rejects yourself, but if it's a major PITA
> > I'd be happy to help out. Boy, I'm hoping I didn't just ask for a load of
> > trouble there :)
>
> Is OK - I'll move Nick's patches back to behind the git trees and it'll all come
> good.

Phew ok. Once again, thanks for all the work you do getting the ocfs2 git
patches into -mm.
--Mark

--
Mark Fasheh
Senior Software Developer, Oracle
[email protected]

2007-06-01 23:30:37

by Benjamin Herrenschmidt

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

On Fri, 2007-06-01 at 14:02 -0700, Andrew Morton wrote:
>
>
> Yeah, allmodconfig tends to fall over in a heap on a lot of the
> less-lavishly-maintained architectures. If any of these are specific
> to
> -mm then I guess we should fix them up, prevent the kernel from
> actually
> going backwards.

Some of the later seems to be related to the lack of CONFIG_PM .. it's
not much a lavish maintainership issue than the fact that nobody every
builds the powermac drivers without CONFIG_PM :-) I'll look into fixing
some of these.

As for the ps3 bits, it's a known problem, the ps3 support is still very
much a work in progress.

Cheers,
Ben.


2007-06-02 08:41:16

by Segher Boessenkool

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

> Yeah, allmodconfig tends to fall over in a heap on a lot of the
> less-lavishly-maintained architectures.

To be fair, almost all of the powerpc allmodconfig build
problems are caused by x86-only drivers (and most of those
I doubt still work on x86, even).


Segher

2007-06-02 13:57:19

by Adrian Bunk

[permalink] [raw]
Subject: 2.6.22-rc3-mm1: Xen compile error with X86_CMPXCHG=n

I'm getting the following compile error in 2.6.22-rc3-mm1 with
CONFIG_X86_CMPXCHG=n (with -Werror-implicit-function-declaration -
otherwise it would be a link error):

<-- snip -->

...
CC drivers/xen/grant-table.o
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc3-mm1/drivers/xen/grant-table.c: In function ‘gnttab_end_foreign_access_ref’:
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc3-mm1/drivers/xen/grant-table.c:203: error: implicit declaration of function ‘sync_cmpxchg’
make[3]: *** [drivers/xen/grant-table.o] Error 1

<-- snip -->

Adding a dependency of XEN on X86_CMPXCHG should not be a problem and
not prevent any reasonable real-life usage.

But what worries me is that a seemingly architecture independent
driver uses a function only available in some configurations.

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-06-02 17:07:07

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] fix XEN_BLKDEV_FRONTEND Makefile entry

CONFIG_XEN_BLKDEV_FRONTEND shouldn't silently prevent the compilation of
most other block drivers.

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

---
--- linux-2.6.22-rc3-mm1/drivers/block/Makefile.old 2007-06-02 18:21:12.000000000 +0200
+++ linux-2.6.22-rc3-mm1/drivers/block/Makefile 2007-06-02 18:21:53.000000000 +0200
@@ -28,7 +28,7 @@
obj-$(CONFIG_VIODASD) += viodasd.o
obj-$(CONFIG_BLK_DEV_SX8) += sx8.o
obj-$(CONFIG_BLK_DEV_UB) += ub.o
-obj-$(CONFIG_XEN_BLKDEV_FRONTEND) := xen-blkfront.o
+obj-$(CONFIG_XEN_BLKDEV_FRONTEND) += xen-blkfront.o
obj-$(CONFIG_XILINX_SYSACE) += xsysace.o
obj-$(CONFIG_LGUEST_GUEST) += lguest_blk.o


2007-06-02 17:14:29

by Adrian Bunk

[permalink] [raw]
Subject: 2.6.22-rc3-mm1: __attribute__((weak)) considered harmful

statistics-infrastructure-make-printk_clock-a-generic-kernel-wide-nsec-resolution.patch
shows why __attribute__((weak)) is harmful because you don't see if a
required non-weak implemtation is missing:

In this case, the weak printk_clock() was renamed to timestamp_clock(),
but the ARM and i386 implementations weren't renamed...

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-06-02 19:09:19

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] the ASYNC_* options shouldn't be user visible

On Wed, May 30, 2007 at 11:58:23PM -0700, Andrew Morton wrote:
>...
> Changes since 2.6.22-rc2-mm1:
>...
> git-md-accel.patch
>...
> git trees
>...


The ASYNC_* options are for internal helper code and should therefore
not be user visible.

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

---

BTW: Please move the async_tx directory under drivers/ or lib/

async_tx/Kconfig | 28 ++++++++--------------------
1 file changed, 8 insertions(+), 20 deletions(-)

--- linux-2.6.22-rc3-mm1/async_tx/Kconfig.old 2007-06-02 19:30:32.000000000 +0200
+++ linux-2.6.22-rc3-mm1/async_tx/Kconfig 2007-06-02 19:31:20.000000000 +0200
@@ -1,27 +1,15 @@
-menuconfig ASYNC_CORE
- tristate "Asynchronous Bulk Memory Transfers/Transforms"
- default n
- ---help---
- This enables the async_tx interface layer for dma (offload) engines.
- Subsystems coded to this api will use offload engines for bulk memory
- operations (e.g. memcpy, memset, xor...). When an offload engine is not
- available the interface will implicitly fall back to a software
- implementation of the operation.
-
- If unsure, say N
-
-if ASYNC_CORE
+config ASYNC_CORE
+ tristate

config ASYNC_MEMCPY
- default m
- tristate "async_memcpy support"
+ tristate
+ select ASYNC_CORE

config ASYNC_XOR
- default m
- tristate "async_xor support"
+ tristate
+ select ASYNC_CORE

config ASYNC_MEMSET
- default m
- tristate "async_memset support"
+ tristate
+ select ASYNC_CORE

-endif

2007-06-03 20:54:27

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] make drivers/firmware/dmi-id.c:dmi_id_init() static

This patch makes the needlessly global dmi_id_init() static.

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

---
--- linux-2.6.22-rc3-mm1/drivers/firmware/dmi-id.c.old 2007-06-03 22:17:10.000000000 +0200
+++ linux-2.6.22-rc3-mm1/drivers/firmware/dmi-id.c 2007-06-03 22:17:24.000000000 +0200
@@ -161,7 +161,7 @@

extern int dmi_available;

-int __init dmi_id_init(void)
+static int __init dmi_id_init(void)
{
int ret, i;


2007-06-03 20:54:44

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] drivers/i2c/chips/ds1682.c: make code static

This patch makes some needlessly global code static.

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

---

drivers/i2c/chips/ds1682.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

--- linux-2.6.22-rc3-mm1/drivers/i2c/chips/ds1682.c.old 2007-06-03 22:18:53.000000000 +0200
+++ linux-2.6.22-rc3-mm1/drivers/i2c/chips/ds1682.c 2007-06-03 22:21:07.000000000 +0200
@@ -121,12 +121,12 @@
/*
* Simple register attributes
*/
-SENSOR_DEVICE_ATTR_2(elapsed_time, S_IRUGO | S_IWUSR, ds1682_show, ds1682_store,
- 4, DS1682_REG_ELAPSED);
-SENSOR_DEVICE_ATTR_2(alarm_time, S_IRUGO | S_IWUSR, ds1682_show, ds1682_store,
- 4, DS1682_REG_ALARM);
-SENSOR_DEVICE_ATTR_2(event_count, S_IRUGO | S_IWUSR, ds1682_show, ds1682_store,
- 2, DS1682_REG_EVT_CNTR);
+static SENSOR_DEVICE_ATTR_2(elapsed_time, S_IRUGO | S_IWUSR, ds1682_show,
+ ds1682_store, 4, DS1682_REG_ELAPSED);
+static SENSOR_DEVICE_ATTR_2(alarm_time, S_IRUGO | S_IWUSR, ds1682_show,
+ ds1682_store, 4, DS1682_REG_ALARM);
+static SENSOR_DEVICE_ATTR_2(event_count, S_IRUGO | S_IWUSR, ds1682_show,
+ ds1682_store, 2, DS1682_REG_EVT_CNTR);

static const struct attribute_group ds1682_group = {
.attrs = (struct attribute *[]) {

2007-06-03 20:55:00

by Adrian Bunk

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

On Wed, May 30, 2007 at 11:58:23PM -0700, Andrew Morton wrote:
>...
> Changes since 2.6.22-rc2-mm1:
>...
> git-input.patch
>...
> git trees
>...

This patch makes the needlessly global xpad_play_effect() static.

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

---
--- linux-2.6.22-rc3-mm1/drivers/input/joystick/xpad.c.old 2007-06-03 22:24:23.000000000 +0200
+++ linux-2.6.22-rc3-mm1/drivers/input/joystick/xpad.c 2007-06-03 22:24:39.000000000 +0200
@@ -376,7 +376,8 @@
__FUNCTION__, retval);
}

-int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect *effect)
+static int xpad_play_effect(struct input_dev *dev, void *data,
+ struct ff_effect *effect)
{
struct usb_xpad *xpad = input_get_drvdata(dev);


2007-06-03 20:55:28

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] fix the tea5761 tuner support

On Wed, May 30, 2007 at 11:58:23PM -0700, Andrew Morton wrote:
>...
> Changes since 2.6.22-rc2-mm1:
>...
> git-dvb.patch
>...
> git trees
>...

Due to a typo the tea5761 tuner support was dead code.

This patch also fixes a bug in the no longer dead code:
A void function can't return anything.

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

---

drivers/media/video/tuner-core.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

--- linux-2.6.22-rc3-mm1/drivers/media/video/tuner-core.c.old 2007-06-03 22:29:37.000000000 +0200
+++ linux-2.6.22-rc3-mm1/drivers/media/video/tuner-core.c 2007-06-03 22:35:54.000000000 +0200
@@ -25,7 +25,7 @@

/* standard i2c insmod options */
static unsigned short normal_i2c[] = {
-#ifdef CONFIG_TUNER_5761
+#ifdef CONFIG_TUNER_TEA5761
0x10,
#endif
0x42, 0x43, 0x4a, 0x4b, /* tda8290 */
@@ -192,12 +192,12 @@ static void set_type(struct i2c_client *
}
t->mode_mask = T_RADIO;
break;
-#ifdef CONFIG_TUNER_5761
+#ifdef CONFIG_TUNER_TEA5761
case TUNER_TEA5761:
if (tea5761_tuner_init(c) == EINVAL) {
t->type = TUNER_ABSENT;
t->mode_mask = T_UNINITIALIZED;
- return -ENODEV;
+ return;
}
t->mode_mask = T_RADIO;
break;
@@ -473,7 +473,7 @@ static int tuner_attach(struct i2c_adapt
/* autodetection code based on the i2c addr */
if (!no_autodetect) {
switch (addr) {
-#ifdef CONFIG_TUNER_5761
+#ifdef CONFIG_TUNER_TEA5761
case 0x10:
if (tea5761_autodetection(&t->i2c) != EINVAL) {
t->type = TUNER_TEA5761;

2007-06-04 08:16:46

by Jean Delvare

[permalink] [raw]
Subject: Re: [-mm patch] drivers/i2c/chips/ds1682.c: make code static

Hi Adrian,

On Sun, 3 Jun 2007 22:54:17 +0200, Adrian Bunk wrote:
> This patch makes some needlessly global code static.
>
> Signed-off-by: Adrian Bunk <[email protected]>
>
> ---
>
> drivers/i2c/chips/ds1682.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> --- linux-2.6.22-rc3-mm1/drivers/i2c/chips/ds1682.c.old 2007-06-03 22:18:53.000000000 +0200
> +++ linux-2.6.22-rc3-mm1/drivers/i2c/chips/ds1682.c 2007-06-03 22:21:07.000000000 +0200
> @@ -121,12 +121,12 @@
> /*
> * Simple register attributes
> */
> -SENSOR_DEVICE_ATTR_2(elapsed_time, S_IRUGO | S_IWUSR, ds1682_show, ds1682_store,
> - 4, DS1682_REG_ELAPSED);
> -SENSOR_DEVICE_ATTR_2(alarm_time, S_IRUGO | S_IWUSR, ds1682_show, ds1682_store,
> - 4, DS1682_REG_ALARM);
> -SENSOR_DEVICE_ATTR_2(event_count, S_IRUGO | S_IWUSR, ds1682_show, ds1682_store,
> - 2, DS1682_REG_EVT_CNTR);
> +static SENSOR_DEVICE_ATTR_2(elapsed_time, S_IRUGO | S_IWUSR, ds1682_show,
> + ds1682_store, 4, DS1682_REG_ELAPSED);
> +static SENSOR_DEVICE_ATTR_2(alarm_time, S_IRUGO | S_IWUSR, ds1682_show,
> + ds1682_store, 4, DS1682_REG_ALARM);
> +static SENSOR_DEVICE_ATTR_2(event_count, S_IRUGO | S_IWUSR, ds1682_show,
> + ds1682_store, 2, DS1682_REG_EVT_CNTR);
>
> static const struct attribute_group ds1682_group = {
> .attrs = (struct attribute *[]) {

Good catch. I've folded this fix into i2c-ds1628-new-driver.patch,
thanks for reporting.

--
Jean Delvare

2007-06-04 16:20:06

by Dan Williams

[permalink] [raw]
Subject: RE: [-mm patch] the ASYNC_* options shouldn't be user visible

> From: Adrian Bunk [mailto:[email protected]]
> >...
> > Changes since 2.6.22-rc2-mm1:
> >...
> > git-md-accel.patch
> >...
> > git trees
> >...
>
>
> The ASYNC_* options are for internal helper code and should therefore
> not be user visible.
>
> Signed-off-by: Adrian Bunk <[email protected]>
>
> ---
>
> BTW: Please move the async_tx directory under drivers/ or lib/
>
Yes, I was feeling somewhat exposed with the options in the top level
config, but at least it got a few more eyes on the code. I will fold in
your patch and move async_tx under lib/ for now, but at some point I
would like to investigate the potential synergies with crypto/.

Thanks,
Dan

2007-06-04 18:01:38

by Valdis Klētnieks

[permalink] [raw]
Subject: 2.6.22-rc3-mm1 - pppd hanging in netdev_run_todo while holding mutex

On Wed, 30 May 2007 23:58:23 PDT, Andrew Morton said:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/

Under 22-rc2-mm1, if my VPN connection got reset, ppp0 just quietly went away.

Under 22-rc3-mm1, it seems to end up wedged and waiting for references to
go away:

Jun 4 09:23:01 turing-police kernel: [90089.270707] unregister_netdevice: waiting for ppp0 to become free. Usage count = 8
Jun 4 09:23:11 turing-police kernel: [90099.396121] unregister_netdevice: waiting for ppp0 to become free. Usage count = 8
Jun 4 09:23:21 turing-police kernel: [90109.520574] unregister_netdevice: waiting for ppp0 to become free. Usage count = 8
Jun 4 09:23:32 turing-police kernel: [90119.653129] unregister_netdevice: waiting for ppp0 to become free. Usage count = 8

'echo t > /proc/sysrq_trigger' shows pppd hung up here:

Jun 4 10:52:57 turing-police kernel: [95478.047892] pppd D 0000000105ad3830 4968 3815 1 (NOTLB)
Jun 4 10:52:57 turing-police kernel: [95478.047902] ffff810008d5fd78 0000000000000086 0000000000000000 ffff810003490000
Jun 4 10:52:57 turing-police kernel: [95478.047911] ffff810008d5fd28 ffff810008d4a040 ffff810003461820 ffff810008d4a2b0
Jun 4 10:52:57 turing-police kernel: [95478.047920] 0000000105ad3733 0000000000000202 00000000000000ff ffffffff80239795
Jun 4 10:52:57 turing-police kernel: [95478.047928] Call Trace:
Jun 4 10:52:57 turing-police kernel: [95478.047936] [<ffffffff805207a2>] schedule_timeout+0x8d/0xb4
Jun 4 10:52:57 turing-police kernel: [95478.047945] [<ffffffff805207e2>] schedule_timeout_uninterruptible+0x19/0x1b
Jun 4 10:52:57 turing-police kernel: [95478.047954] [<ffffffff802397bb>] msleep+0x14/0x1e
Jun 4 10:52:57 turing-police kernel: [95478.047963] [<ffffffff8048aa4e>] netdev_run_todo+0x12f/0x234
Jun 4 10:52:57 turing-police kernel: [95478.047972] [<ffffffff8049166f>] rtnl_unlock+0x35/0x37
Jun 4 10:52:57 turing-police kernel: [95478.047981] [<ffffffff804894a9>] unregister_netdev+0x1e/0x23
Jun 4 10:52:57 turing-police kernel: [95478.047994] [<ffffffff88a5f2c2>] :ppp_generic:ppp_shutdown_interface+0x67/0xbb
Jun 4 10:52:57 turing-police kernel: [95478.048018] [<ffffffff88a5f5b8>] :ppp_generic:ppp_release+0x33/0x65
Jun 4 10:52:57 turing-police kernel: [95478.048028] [<ffffffff8028d54a>] __fput+0xac/0x176
Jun 4 10:52:57 turing-police kernel: [95478.048036] [<ffffffff8028d628>] fput+0x14/0x16
Jun 4 10:52:57 turing-police kernel: [95478.048045] [<ffffffff8028a9c6>] filp_close+0x66/0x71
Jun 4 10:52:57 turing-police kernel: [95478.048054] [<ffffffff8028bd54>] sys_close+0x98/0xd7
Jun 4 10:52:57 turing-police kernel: [95478.048062] [<ffffffff8020a03c>] tracesys+0xdc/0xe1
Jun 4 10:52:57 turing-police kernel: [95478.048073] [<00002b45cd2429a0>]

Which in itself wouldn't be so bad, except that it's holding a mutex and
lots of other stuff gets wedged up waiting for it (here's 1 of 6 processes
that was wedged this morning):

Jun 4 10:52:58 turing-police kernel: [95478.051129] ifconfig D ffff810005e19820 5800 9787 20510 (NOTLB)
Jun 4 10:52:58 turing-police kernel: [95478.051141] ffff81000868fd08 0000000000000082 ffff81000868fec8 0000000000000246
Jun 4 10:52:58 turing-police kernel: [95478.051150] 0000000100000101 ffff810005e19820 ffff810003fe0820 ffff810005e19a90
Jun 4 10:52:58 turing-police kernel: [95478.051159] 000000000a3f26c0 0000000000000006 ffff81000868ff28 ffffffff8028aacc
Jun 4 10:52:58 turing-police kernel: [95478.051167] Call Trace:
Jun 4 10:52:58 turing-police kernel: [95478.051176] [<ffffffff80520bc4>] __mutex_lock_slowpath+0x74/0xb6
Jun 4 10:52:58 turing-police kernel: [95478.051185] [<ffffffff805209f3>] mutex_lock+0xe/0x10
Jun 4 10:52:58 turing-police kernel: [95478.051193] [<ffffffff8048a938>] netdev_run_todo+0x19/0x234
Jun 4 10:52:58 turing-police kernel: [95478.051202] [<ffffffff8049166f>] rtnl_unlock+0x35/0x37
Jun 4 10:52:58 turing-police kernel: [95478.051210] [<ffffffff8048a3f2>] dev_ioctl+0x3e3/0x483
Jun 4 10:52:58 turing-police kernel: [95478.051218] [<ffffffff8047df30>] sock_ioctl+0x1ef/0x1fc
Jun 4 10:52:58 turing-police kernel: [95478.051227] [<ffffffff802989be>] do_ioctl+0x2a/0x77
Jun 4 10:52:58 turing-police kernel: [95478.051235] [<ffffffff80298c52>] vfs_ioctl+0x247/0x264
Jun 4 10:52:58 turing-police kernel: [95478.051243] [<ffffffff80298cce>] sys_ioctl+0x5f/0x85
Jun 4 10:52:58 turing-police kernel: [95478.051252] [<ffffffff8020a03c>] tracesys+0xdc/0xe1

(And of course, you can't shutdown cleanly, because /etc/init.d/network tries
to down other interfaces on the way out, and....)

I'd bisect this, except I don't have a better way to replicate it than "wait for
our VPN box to reset the connection after 24 hours of connect" - basically means
I get 2 tries per weekend..)

An hour or so of digging through the -rc3-mm1 broken-out/ didn't find any
obvious-to-me culprits. Any ideas/suggestions?


Attachments:
(No filename) (226.00 B)

2007-06-04 18:25:18

by Dan Williams

[permalink] [raw]
Subject: RE: [-mm patch] the ASYNC_* options shouldn't be user visible

> From: Williams, Dan J
> >
> > BTW: Please move the async_tx directory under drivers/ or lib/
> >
One caveat with this... md.o needs xor.o to be initialized first.
Moving xor.o under lib/ means this assumption is broken since the
top-level Makefile puts 'libs' after 'drivers'.

> Yes, I was feeling somewhat exposed with the options in the top level
config,
> but at least it got a few more eyes on the code. I will fold in your
patch
> and move async_tx under lib/ for now, but at some point I would like
to
> investigate the potential synergies with crypto/.
>

Herbert can I move async_tx under crypto since the engines I am working
with have support for algorithms like CRC32C and Galois Field Multiply
(raid6 p+q)?

2007-06-04 19:20:11

by Adrian Bunk

[permalink] [raw]
Subject: Re: [-mm patch] the ASYNC_* options shouldn't be user visible

On Mon, Jun 04, 2007 at 11:25:02AM -0700, Williams, Dan J wrote:
> > From: Williams, Dan J
> > >
> > > BTW: Please move the async_tx directory under drivers/ or lib/
> > >
> One caveat with this... md.o needs xor.o to be initialized first.
> Moving xor.o under lib/ means this assumption is broken since the
> top-level Makefile puts 'libs' after 'drivers'.
>...

What about using a different initcall level?

Depending on the link order is not such a good idea.

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-06-04 21:23:18

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1: __attribute__((weak)) considered harmful

On Sat, 2 Jun 2007 19:14:25 +0200
Adrian Bunk <[email protected]> wrote:

> statistics-infrastructure-make-printk_clock-a-generic-kernel-wide-nsec-resolution.patch
> shows why __attribute__((weak)) is harmful because you don't see if a
> required non-weak implemtation is missing:
>
> In this case, the weak printk_clock() was renamed to timestamp_clock(),
> but the ARM and i386 implementations weren't renamed...
>

printk_clock() is sched_clock() in disguise, and I'm not sure that making
sched_clock() more widely available in this fashion is something that we
want to do anyway.

Anyway, the statistics patches have just celebrated their first birthday
and I don't see that they're getting sufficient momentum or interest to
ever get into mainline so I think I'll drop them, sorry.

2007-06-04 21:33:36

by Herbert Xu

[permalink] [raw]
Subject: Re: [-mm patch] the ASYNC_* options shouldn't be user visible

On Mon, Jun 04, 2007 at 11:25:02AM -0700, Williams, Dan J wrote:
>
> Herbert can I move async_tx under crypto since the engines I am working
> with have support for algorithms like CRC32C and Galois Field Multiply
> (raid6 p+q)?

Sure that's fine by me. Although as Adrian said it's probably better
to use something other than alphabetical order :)

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

2007-06-04 22:12:52

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] e1000: #if 0 two functions

e1000_{read,write}_pci_cfg() are no longer used.

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

---

drivers/net/e1000/e1000_hw.h | 2 --
drivers/net/e1000/e1000_main.c | 4 ++++
2 files changed, 4 insertions(+), 2 deletions(-)

--- linux-2.6.22-rc3-mm1/drivers/net/e1000/e1000_hw.h.old 2007-06-04 22:03:05.000000000 +0200
+++ linux-2.6.22-rc3-mm1/drivers/net/e1000/e1000_hw.h 2007-06-04 22:03:14.000000000 +0200
@@ -421,8 +421,6 @@ void e1000_tbi_adjust_stats(struct e1000
void e1000_get_bus_info(struct e1000_hw *hw);
void e1000_pci_set_mwi(struct e1000_hw *hw);
void e1000_pci_clear_mwi(struct e1000_hw *hw);
-void e1000_read_pci_cfg(struct e1000_hw *hw, uint32_t reg, uint16_t * value);
-void e1000_write_pci_cfg(struct e1000_hw *hw, uint32_t reg, uint16_t * value);
int32_t e1000_read_pcie_cap_reg(struct e1000_hw *hw, uint32_t reg, uint16_t *value);
void e1000_pcix_set_mmrbc(struct e1000_hw *hw, int mmrbc);
int e1000_pcix_get_mmrbc(struct e1000_hw *hw);
--- linux-2.6.22-rc3-mm1/drivers/net/e1000/e1000_main.c.old 2007-06-04 22:03:24.000000000 +0200
+++ linux-2.6.22-rc3-mm1/drivers/net/e1000/e1000_main.c 2007-06-04 22:03:40.000000000 +0200
@@ -4888,6 +4888,8 @@ e1000_pci_clear_mwi(struct e1000_hw *hw)
pci_clear_mwi(adapter->pdev);
}

+#if 0
+
void
e1000_read_pci_cfg(struct e1000_hw *hw, uint32_t reg, uint16_t *value)
{
@@ -4904,6 +4906,8 @@ e1000_write_pci_cfg(struct e1000_hw *hw,
pci_write_config_word(adapter->pdev, reg, *value);
}

+#endif /* 0 */
+
int
e1000_pcix_get_mmrbc(struct e1000_hw *hw)
{

2007-06-04 22:13:57

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] drivers/mmc/core/core.{h,c}: cleanups

On Wed, May 30, 2007 at 11:58:23PM -0700, Andrew Morton wrote:
>...
> Changes since 2.6.22-rc2-mm1:
>...
> git-mmc.patch
>...
> git trees
>...

This patch contains the following cleanups:
- make the following needlessly global functions static:
- core.c: mmc_schedule_delayed_work()
- core.c: mmc_flush_scheduled_work()
- removes the prototope of the following non-existing function:
- core.h: mmc_schedule_work()
- proper prototypes for three functions from core.c in core.h

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

---

drivers/mmc/core/core.c | 37 +++++++++++++++++++------------------
drivers/mmc/core/core.h | 6 +++---
drivers/mmc/core/host.c | 4 ----
3 files changed, 22 insertions(+), 25 deletions(-)

--- linux-2.6.22-rc3-mm1/drivers/mmc/core/core.h.old 2007-06-04 21:53:42.000000000 +0200
+++ linux-2.6.22-rc3-mm1/drivers/mmc/core/core.h 2007-06-04 23:19:44.000000000 +0200
@@ -64,9 +64,9 @@ static inline void mmc_delay(unsigned in
}
}

-int mmc_schedule_work(struct work_struct *work);
-int mmc_schedule_delayed_work(struct delayed_work *work, unsigned long delay);
-void mmc_flush_scheduled_work(void);
+void mmc_rescan(struct work_struct *work);
+void mmc_start_host(struct mmc_host *host);
+void mmc_stop_host(struct mmc_host *host);

#endif

--- linux-2.6.22-rc3-mm1/drivers/mmc/core/core.c.old 2007-06-04 21:54:46.000000000 +0200
+++ linux-2.6.22-rc3-mm1/drivers/mmc/core/core.c 2007-06-04 21:57:38.000000000 +0200
@@ -37,6 +37,25 @@
extern int mmc_attach_mmc(struct mmc_host *host, u32 ocr);
extern int mmc_attach_sd(struct mmc_host *host, u32 ocr);

+static struct workqueue_struct *workqueue;
+
+/*
+ * Internal function. Schedule delayed work in the MMC work queue.
+ */
+static int mmc_schedule_delayed_work(struct delayed_work *work,
+ unsigned long delay)
+{
+ return queue_delayed_work(workqueue, work, delay);
+}
+
+/*
+ * Internal function. Flush all scheduled work from the MMC work queue.
+ */
+static void mmc_flush_scheduled_work(void)
+{
+ flush_workqueue(workqueue);
+}
+
/**
* mmc_request_done - finish processing an MMC request
* @host: MMC host which completed request
@@ -640,24 +659,6 @@ EXPORT_SYMBOL(mmc_resume_host);

#endif

-static struct workqueue_struct *workqueue;
-
-/*
- * Internal function. Schedule delayed work in the MMC work queue.
- */
-int mmc_schedule_delayed_work(struct delayed_work *work, unsigned long delay)
-{
- return queue_delayed_work(workqueue, work, delay);
-}
-
-/*
- * Internal function. Flush all scheduled work from the MMC work queue.
- */
-void mmc_flush_scheduled_work(void)
-{
- flush_workqueue(workqueue);
-}
-
static int __init mmc_init(void)
{
int ret;
--- linux-2.6.22-rc3-mm1/drivers/mmc/core/host.c.old 2007-06-04 23:18:35.000000000 +0200
+++ linux-2.6.22-rc3-mm1/drivers/mmc/core/host.c 2007-06-04 23:19:25.000000000 +0200
@@ -23,10 +23,6 @@

#define cls_dev_to_mmc_host(d) container_of(d, struct mmc_host, class_dev)

-extern void mmc_rescan(struct work_struct *work);
-extern void mmc_start_host(struct mmc_host *host);
-extern void mmc_stop_host(struct mmc_host *host);
-
static void mmc_host_classdev_release(struct device *dev)
{
struct mmc_host *host = cls_dev_to_mmc_host(dev);

2007-06-04 22:34:51

by Dan Williams

[permalink] [raw]
Subject: RE: [-mm patch] the ASYNC_* options shouldn't be user visible

> From: Adrian Bunk [mailto:[email protected]]
> > One caveat with this... md.o needs xor.o to be initialized first.
> > Moving xor.o under lib/ means this assumption is broken since the
> > top-level Makefile puts 'libs' after 'drivers'.
> >...
>
> What about using a different initcall level?
>
> Depending on the link order is not such a good idea.
>

Ok I have added the following to the md-accel-linus git series. Note
the patch is outlook damaged.

---
xor: make 'xor_blocks' a library routine for use with async_tx

From: Dan Williams <[email protected]>

* move drivers/md/xor.c => crypto/xor.c
* rename xor_block => xor_blocks, suggested by Adrian Bunk
* ensure that xor.o initializes before md.o in the built-in case

Cc: NeilBrown <[email protected]>
Cc: Herbert Xu <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
---

crypto/Kconfig | 6 ++++++
crypto/Makefile | 6 ++++++
{drivers/md => crypto}/xor.c | 17 +++++++++--------
drivers/md/Kconfig | 1 +
drivers/md/Makefile | 4 ++--
drivers/md/md.c | 2 +-
drivers/md/raid5.c | 10 +++++-----
include/linux/raid/xor.h | 2 +-
8 files changed, 31 insertions(+), 17 deletions(-)

diff --git a/crypto/Kconfig b/crypto/Kconfig
index 4ca0ab3..a12a926 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -9,6 +9,12 @@ config CRYPTO
help
This option provides the core Cryptographic API.

+#
+# Generic algorithms support
+#
+config XOR_BLOCKS
+ tristate
+
if CRYPTO

config CRYPTO_ALGAPI
diff --git a/crypto/Makefile b/crypto/Makefile
index cce46a1..68e934b 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -50,3 +50,9 @@ obj-$(CONFIG_CRYPTO_MICHAEL_MIC) += michael_mic.o
obj-$(CONFIG_CRYPTO_CRC32C) += crc32c.o

obj-$(CONFIG_CRYPTO_TEST) += tcrypt.o
+
+#
+# generic algorithms and the async_tx api
+#
+obj-$(CONFIG_XOR_BLOCKS) += xor.o
+
diff --git a/drivers/md/xor.c b/crypto/xor.c
similarity index 87%
rename from drivers/md/xor.c
rename to crypto/xor.c
index 324897c..0bc3c2c 100644
--- a/drivers/md/xor.c
+++ b/crypto/xor.c
@@ -26,7 +26,7 @@
static struct xor_block_template *active_template;

void
-xor_block(unsigned int count, unsigned int bytes, void **ptr)
+xor_blocks(unsigned int count, unsigned int bytes, void **ptr)
{
unsigned long *p0, *p1, *p2, *p3, *p4;

@@ -96,14 +96,14 @@ do_xor_speed(struct xor_block_template *tmpl, void
*b1, void *b2)
}

static int
-calibrate_xor_block(void)
+calibrate_xor_blocks(void)
{
void *b1, *b2;
struct xor_block_template *f, *fastest;

b1 = (void *) __get_free_pages(GFP_KERNEL, 2);
if (! b1) {
- printk("raid5: Yikes! No memory available.\n");
+ printk("xor: Yikes! No memory available.\n");
return -ENOMEM;
}
b2 = b1 + 2*PAGE_SIZE + BENCH_SIZE;
@@ -122,11 +122,11 @@ calibrate_xor_block(void)
#define xor_speed(templ) do_xor_speed((templ), b1, b2)

if (fastest) {
- printk(KERN_INFO "raid5: automatically using best
checksumming function: %s\n",
+ printk(KERN_INFO "xor: automatically using best
checksumming function: %s\n",
fastest->name);
xor_speed(fastest);
} else {
- printk(KERN_INFO "raid5: measuring checksumming
speed\n");
+ printk(KERN_INFO "xor: measuring checksumming speed\n");
XOR_TRY_TEMPLATES;
fastest = template_list;
for (f = fastest; f; f = f->next)
@@ -134,7 +134,7 @@ calibrate_xor_block(void)
fastest = f;
}

- printk("raid5: using function: %s (%d.%03d MB/sec)\n",
+ printk("xor: using function: %s (%d.%03d MB/sec)\n",
fastest->name, fastest->speed / 1000, fastest->speed %
1000);

#undef xor_speed
@@ -147,8 +147,9 @@ calibrate_xor_block(void)

static __exit void xor_exit(void) { }

-EXPORT_SYMBOL(xor_block);
+EXPORT_SYMBOL(xor_blocks);
MODULE_LICENSE("GPL");

-module_init(calibrate_xor_block);
+/* when built-in xor.o must initialize before drivers/md/md.o */
+core_initcall(calibrate_xor_blocks);
module_exit(xor_exit);
diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
index 7df934d..24d93d0 100644
--- a/drivers/md/Kconfig
+++ b/drivers/md/Kconfig
@@ -109,6 +109,7 @@ config MD_RAID10
config MD_RAID456
tristate "RAID-4/RAID-5/RAID-6 mode"
depends on BLK_DEV_MD
+ select XOR_BLOCKS
---help---
A RAID-5 set of N drives with a capacity of C MB per drive
provides
the capacity of C * (N - 1) MB, and protects against a failure
diff --git a/drivers/md/Makefile b/drivers/md/Makefile
index 3875408..71eb45f 100644
--- a/drivers/md/Makefile
+++ b/drivers/md/Makefile
@@ -17,7 +17,7 @@ raid456-objs := raid5.o raid6algos.o raid6recov.o
raid6tables.o \
hostprogs-y := mktables

# Note: link order is important. All raid personalities
-# and xor.o must come before md.o, as they each initialise
+# and must come before md.o, as they each initialise
# themselves, and md.o may use the personalities when it
# auto-initialised.

@@ -25,7 +25,7 @@ obj-$(CONFIG_MD_LINEAR) += linear.o
obj-$(CONFIG_MD_RAID0) += raid0.o
obj-$(CONFIG_MD_RAID1) += raid1.o
obj-$(CONFIG_MD_RAID10) += raid10.o
-obj-$(CONFIG_MD_RAID456) += raid456.o xor.o
+obj-$(CONFIG_MD_RAID456) += raid456.o
obj-$(CONFIG_MD_MULTIPATH) += multipath.o
obj-$(CONFIG_MD_FAULTY) += faulty.o
obj-$(CONFIG_BLK_DEV_MD) += md-mod.o
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 1c54f3c..33beaa7 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -5814,7 +5814,7 @@ static __exit void md_exit(void)
}
}

-module_init(md_init)
+subsys_initcall(md_init);
module_exit(md_exit)

static int get_ro(char *buffer, struct kernel_param *kp)
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 061375e..5adbe0b 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -918,7 +918,7 @@ static void copy_data(int frombio, struct bio *bio,

#define check_xor() do {
\
if (count == MAX_XOR_BLOCKS) {
\
- xor_block(count, STRIPE_SIZE, ptr);
\
+ xor_blocks(count, STRIPE_SIZE, ptr);
\
count = 1;
\
}
\
} while(0)
@@ -949,7 +949,7 @@ static void compute_block(struct stripe_head *sh,
int dd_idx)
check_xor();
}
if (count != 1)
- xor_block(count, STRIPE_SIZE, ptr);
+ xor_blocks(count, STRIPE_SIZE, ptr);
set_bit(R5_UPTODATE, &sh->dev[dd_idx].flags);
}

@@ -1004,7 +1004,7 @@ static void compute_parity5(struct stripe_head
*sh, int method)
break;
}
if (count>1) {
- xor_block(count, STRIPE_SIZE, ptr);
+ xor_blocks(count, STRIPE_SIZE, ptr);
count = 1;
}

@@ -1038,7 +1038,7 @@ static void compute_parity5(struct stripe_head
*sh, int method)
}
}
if (count != 1)
- xor_block(count, STRIPE_SIZE, ptr);
+ xor_blocks(count, STRIPE_SIZE, ptr);

if (method != CHECK_PARITY) {
set_bit(R5_UPTODATE, &sh->dev[pd_idx].flags);
@@ -1160,7 +1160,7 @@ static void compute_block_1(struct stripe_head
*sh, int dd_idx, int nozero)
check_xor();
}
if (count != 1)
- xor_block(count, STRIPE_SIZE, ptr);
+ xor_blocks(count, STRIPE_SIZE, ptr);
if (!nozero) set_bit(R5_UPTODATE,
&sh->dev[dd_idx].flags);
else clear_bit(R5_UPTODATE, &sh->dev[dd_idx].flags);
}
diff --git a/include/linux/raid/xor.h b/include/linux/raid/xor.h
index f0d67cb..7d6c20b 100644
--- a/include/linux/raid/xor.h
+++ b/include/linux/raid/xor.h
@@ -5,7 +5,7 @@

#define MAX_XOR_BLOCKS 5

-extern void xor_block(unsigned int count, unsigned int bytes, void
**ptr);
+extern void xor_blocks(unsigned int count, unsigned int bytes, void
**ptr);

struct xor_block_template {
struct xor_block_template *next;

2007-06-04 23:52:44

by Martin Peschke

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1: __attribute__((weak)) considered harmful

Andrew Morton wrote:
> On Sat, 2 Jun 2007 19:14:25 +0200
> Adrian Bunk <[email protected]> wrote:
>
>> statistics-infrastructure-make-printk_clock-a-generic-kernel-wide-nsec-resolution.patch
>> shows why __attribute__((weak)) is harmful because you don't see if a
>> required non-weak implemtation is missing:
>>
>> In this case, the weak printk_clock() was renamed to timestamp_clock(),
>> but the ARM and i386 implementations weren't renamed...
>>
>
> printk_clock() is sched_clock() in disguise, and I'm not sure that making
> sched_clock() more widely available in this fashion is something that we
> want to do anyway.
>
> Anyway, the statistics patches have just celebrated their first birthday
> and I don't see that they're getting sufficient momentum or interest to
> ever get into mainline so I think I'll drop them, sorry.

Andrew,
the lock contention statistics, which have been added to -mm recently, duplicate
code that we have in the statistics patches. I think I can slim the lock
tracking patches further down considerably (similar to my attempt at
timerstats). I have a working prototype that is getting some polishing brushes.
Would you like to wait how this goes?

As to timestamp_clock(): its useful for statistics, but still a minor feature.
It would be unfortuante if that was the stumbling block for my patches. Am I
right that the fix for the issue pointed at by Adrian is to rename those two
occurrences of printk_clock()? Do you want me to submit a patch?

2007-06-05 03:59:27

by Russell King

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1: __attribute__((weak)) considered harmful

On Tue, Jun 05, 2007 at 01:52:38AM +0200, Martin Peschke wrote:
> Andrew Morton wrote:
> >On Sat, 2 Jun 2007 19:14:25 +0200
> >Adrian Bunk <[email protected]> wrote:
> >
> >>statistics-infrastructure-make-printk_clock-a-generic-kernel-wide-nsec-resolution.patch
> >>shows why __attribute__((weak)) is harmful because you don't see if a
> >>required non-weak implemtation is missing:
> >>
> >>In this case, the weak printk_clock() was renamed to timestamp_clock(),
> >>but the ARM and i386 implementations weren't renamed...
> >>
> >
> >printk_clock() is sched_clock() in disguise, and I'm not sure that making
> >sched_clock() more widely available in this fashion is something that we
> >want to do anyway.

Note that sched_clock() can not be used early on ARM; it might want to
access MMIO which is not accessible until later in setup_arch(). This
is why ARM's printk_clock() divorces itself from sched_clock().

> As to timestamp_clock(): its useful for statistics, but still a minor
> feature. It would be unfortuante if that was the stumbling block for my
> patches. Am I right that the fix for the issue pointed at by Adrian is to
> rename those two occurrences of printk_clock()? Do you want me to submit a
> patch?

If it's ends up being based upon sched_clock() instead of printk_clock()
on ARM then it'll break stuff horribly (== non-bootable kernels.)

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of:

2007-06-05 09:12:20

by Ingo Molnar

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


hm, mm1 hangs during bootup on one of my boxes:

Calling initcall 0xc0628d39: pci_mmcfg_late_insert_resources+0x0/0x44()
initcall 0xc0628d39: pci_mmcfg_late_insert_resources+0x0/0x44() returned 0.
initcall 0xc0628d39 ran for 0 msecs:
pci_mmcfg_late_insert_resources+0x0/0x44()
Calling initcall 0xc062abd1: tcp_congestion_default+0x0/0xf()
initcall 0xc062abd1: tcp_congestion_default+0x0/0xf() returned 0.
initcall 0xc062abd1 ran for 0 msecs: tcp_congestion_default+0x0/0xf()

it usually hangs in different places. Full bootlog below. Same kernel
bzImage boots fine on another box.

the NMI watchdog warning is a bit weird:

Calling initcall 0xc0613e4f: check_nmi_watchdog+0x0/0x1a8()
Testing NMI watchdog ... CPU#0: NMI appears to be stuck (0->0)!
CPU#1: NMI appears to be stuck (0->0)!
initcall 0xc0613e4f: check_nmi_watchdog+0x0/0x1a8() returned -1.
initcall 0xc0613e4f ran for 27 msecs: check_nmi_watchdog+0x0/0x1a8()

i'll test it in a minute with that turned off.

Ingo

------------>
Linux version 2.6.22-rc3-mm1-v16-rc2 (mingo@dione) (gcc version 4.0.2) #9 SMP Tue Jun 5 10:48:06 CEST 2007
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003fff0000 (usable)
BIOS-e820: 000000003fff0000 - 000000003fff3000 (ACPI NVS)
BIOS-e820: 000000003fff3000 - 0000000040000000 (ACPI data)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
using polling idle threads.
127MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000f5680
Entering add_active_range(0, 0, 262128) 0 entries of 256 used
sizeof(struct page) = 32
Zone PFN ranges:
DMA 0 -> 4096
Normal 4096 -> 229376
HighMem 229376 -> 262128
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
0: 0 -> 262128
On node 0 totalpages: 262128
Node 0 memmap at 0xc1000000 size 8388608 first pfn 0xc1000000
DMA zone: 32 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 4064 pages, LIFO batch:0
Normal zone: 1760 pages used for memmap
Normal zone: 223520 pages, LIFO batch:31
HighMem zone: 255 pages used for memmap
HighMem zone: 32497 pages, LIFO batch:7
Movable zone: 0 pages used for memmap
DMI 2.3 present.
ACPI: RSDP 000F76F0, 0014 (r0 Nvidia)
ACPI: RSDT 3FFF3040, 0034 (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
ACPI: FACP 3FFF30C0, 0074 (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
ACPI: DSDT 3FFF3180, 6264 (r1 NVIDIA AWRDACPI 1000 MSFT 100000E)
ACPI: FACS 3FFF0000, 0040
ACPI: SRAT 3FFF9500, 00A0 (r1 AMD HAMMER 1 AMD 1)
ACPI: MCFG 3FFF9600, 003C (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
ACPI: APIC 3FFF9440, 007C (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
Nvidia board detected. Ignoring ACPI timer override.
If you got timer trouble try acpi_use_timer_override
ACPI: PM-Timer IO Port: 0x4008
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 15:3 APIC version 16
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
Processor #1 15:3 APIC version 16
ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: BIOS IRQ0 pin2 override ignored.
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 14 global_irq 14 high edge)
ACPI: INT_SRC_OVR (bus 0 bus_irq 15 global_irq 15 high edge)
ACPI: IRQ9 used by override.
ACPI: IRQ14 used by override.
ACPI: IRQ15 used by override.
Enabling APIC mode: Flat. Using 1 I/O APICs
Using ACPI (MADT) for SMP configuration information
Allocating PCI resources starting at 50000000 (gap: 40000000:a0000000)
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260081
Kernel command line: root=/dev/sda1 console=tty earlyprintk=serial,ttyS0,115200,keep 3 debug idle=poll profile=0 initcall_debug maxcpus=2 selinux=1 enforcing=0 apic=verbose ignore_loglevel nmi_watchdog=2
kernel profiling enabled (shift: 0)
debug: ignoring loglevel setting.
mapped APIC to ffffd000 (fee00000)
mapped IOAPIC to ffffc000 (fec00000)
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
CPU 0 irqstacks, hard=c065b000 soft=c0663000
PID hash table entries: 4096 (order: 12, 16384 bytes)
Detected 2160.234 MHz processor.
spurious 8259A interrupt: IRQ7.
Console: colour VGA+ 80x25
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 1018420k/1048512k available (3370k kernel code, 29424k reserved, 1735k data, 332k init, 131008k highmem)
virtual kernel memory layout:
fixmap : 0xfff4e000 - 0xfffff000 ( 708 kB)
pkmap : 0xff800000 - 0xffc00000 (4096 kB)
vmalloc : 0xf8800000 - 0xff7fe000 ( 111 MB)
lowmem : 0xc0000000 - 0xf8000000 ( 896 MB)
.init : 0xc0603000 - 0xc0656000 ( 332 kB)
.data : 0xc044aafa - 0xc05fc91c (1735 kB)
.text : 0xc0100000 - 0xc044aafa (3370 kB)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 4321.76 BogoMIPS (lpj=2160883)
Security Framework v1.0.0 initialized
SELinux: Initializing.
SELinux: Starting in permissive mode
selinux_register_security: Registering secondary module capability
Capability LSM initialized as secondary
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 178bfbff e3d3fbff 00000000 00000000 00000001 00000000 00000003
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 512K (64 bytes/line)
CPU 0(2) -> Core 0
CPU: After all inits, caps: 178bfbff e3d3fbff 00000000 00000410 00000001 00000000 00000003
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
Compat vDSO mapped to ffffe000.
Checking 'hlt' instruction... OK.
Freeing SMP alternatives: 16k freed
ACPI: Core revision 20070126
Parsing all Control Methods:
Table [DSDT](id 0001) - 980 Objects with 86 Devices 310 Methods 37 Regions
tbxface-0587 [02] tb_load_namespace : ACPI Tables successfully acquired
evxfevnt-0091 [02] enable : Transition to ACPI mode successful
CPU0: AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ stepping 02
enabled ExtINT on CPU#0
Booting processor 1/1 eip 2000
CPU 1 irqstacks, hard=c065c000 soft=c0664000
Initializing CPU#1
masked ExtINT on CPU#1
Calibrating delay using timer specific routine.. 4319.79 BogoMIPS (lpj=2159898)
CPU: After generic identify, caps: 178bfbff e3d3fbff 00000000 00000000 00000001 00000000 00000003
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 512K (64 bytes/line)
CPU 1(2) -> Core 1
CPU: After all inits, caps: 178bfbff e3d3fbff 00000000 00000410 00000001 00000000 00000003
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU1: AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ stepping 02
Total of 2 processors activated (8641.56 BogoMIPS).
ENABLING IO-APIC IRQs
init IO_APIC IRQs
IO-APIC (apicid-pin) 2-16, 2-17, 2-18, 2-19, 2-20, 2-21, 2-22, 2-23 not connected.
..TIMER: vector=0x31 apic1=0 pin1=0 apic2=-1 pin2=-1
Using local APIC timer interrupts.
calibrating APIC timer ...
... lapic delta = 1349919
... PM timer delta = 357899
... PM timer result ok
..... delta 1349919
..... mult: 57987393
..... calibration result: 215987
..... CPU clock speed is 2159.0869 MHz.
..... host bus clock speed is 215.0987 MHz.
Brought up 2 CPUs
Calling initcall 0xc0626528: init_cpufreq_transition_notifier_list+0x0/0x11()
initcall 0xc0626528: init_cpufreq_transition_notifier_list+0x0/0x11() returned 0.
initcall 0xc0626528 ran for 0 msecs: init_cpufreq_transition_notifier_list+0x0/0x11()
Calling initcall 0xc060ab73: cpufreq_tsc+0x0/0x11()
initcall 0xc060ab73: cpufreq_tsc+0x0/0x11() returned 0.
initcall 0xc060ab73 ran for 0 msecs: cpufreq_tsc+0x0/0x11()
Calling initcall 0xc060acd9: init_sched_clock+0x0/0x42()
initcall 0xc060acd9: init_sched_clock+0x0/0x42() returned 0.
initcall 0xc060acd9 ran for 0 msecs: init_sched_clock+0x0/0x42()
Calling initcall 0xc061092f: reboot_init+0x0/0x11()
initcall 0xc061092f: reboot_init+0x0/0x11() returned 0.
initcall 0xc061092f ran for 0 msecs: reboot_init+0x0/0x11()
Calling initcall 0xc061617a: print_banner+0x0/0xd()
Booting paravirtualized kernel on bare hardware
initcall 0xc061617a: print_banner+0x0/0xd() returned 0.
initcall 0xc061617a ran for 3 msecs: print_banner+0x0/0xd()
Calling initcall 0xc0617e97: sysctl_init+0x0/0x13()
initcall 0xc0617e97: sysctl_init+0x0/0x13() returned 0.
initcall 0xc0617e97 ran for 0 msecs: sysctl_init+0x0/0x13()
Calling initcall 0xc061893b: init_jiffies_clocksource+0x0/0xf()
initcall 0xc061893b: init_jiffies_clocksource+0x0/0xf() returned 0.
initcall 0xc061893b ran for 0 msecs: init_jiffies_clocksource+0x0/0xf()
Calling initcall 0xc0618c0a: pm_init+0x0/0x22()
initcall 0xc0618c0a: pm_init+0x0/0x22() returned 0.
initcall 0xc0618c0a ran for 0 msecs: pm_init+0x0/0x22()
Calling initcall 0xc0618edb: ksysfs_init+0x0/0x22()
initcall 0xc0618edb: ksysfs_init+0x0/0x22() returned 0.
initcall 0xc0618edb ran for 0 msecs: ksysfs_init+0x0/0x22()
Calling initcall 0xc061b418: filelock_init+0x0/0x37()
initcall 0xc061b418: filelock_init+0x0/0x37() returned 0.
initcall 0xc061b418 ran for 0 msecs: filelock_init+0x0/0x37()
Calling initcall 0xc061be98: init_misc_binfmt+0x0/0x33()
initcall 0xc061be98: init_misc_binfmt+0x0/0x33() returned 0.
initcall 0xc061be98 ran for 0 msecs: init_misc_binfmt+0x0/0x33()
Calling initcall 0xc061becb: init_script_binfmt+0x0/0xf()
initcall 0xc061becb: init_script_binfmt+0x0/0xf() returned 0.
initcall 0xc061becb ran for 0 msecs: init_script_binfmt+0x0/0xf()
Calling initcall 0xc061beda: init_elf_binfmt+0x0/0xf()
initcall 0xc061beda: init_elf_binfmt+0x0/0xf() returned 0.
initcall 0xc061beda ran for 0 msecs: init_elf_binfmt+0x0/0xf()
Calling initcall 0xc061cb95: securityfs_init+0x0/0x3d()
initcall 0xc061cb95: securityfs_init+0x0/0x3d() returned 0.
initcall 0xc061cb95 ran for 0 msecs: securityfs_init+0x0/0x3d()
Calling initcall 0xc061d505: random32_init+0x0/0x42()
initcall 0xc061d505: random32_init+0x0/0x42() returned 0.
initcall 0xc061d505 ran for 0 msecs: random32_init+0x0/0x42()
Calling initcall 0xc0626539: cpufreq_core_init+0x0/0x56()
initcall 0xc0626539: cpufreq_core_init+0x0/0x56() returned 0.
initcall 0xc0626539 ran for 0 msecs: cpufreq_core_init+0x0/0x56()
Calling initcall 0xc0629899: sock_init+0x0/0x5f()
initcall 0xc0629899: sock_init+0x0/0x5f() returned 0.
initcall 0xc0629899 ran for 0 msecs: sock_init+0x0/0x5f()
Calling initcall 0xc0629f72: netpoll_init+0x0/0x2f()
initcall 0xc0629f72: netpoll_init+0x0/0x2f() returned 0.
initcall 0xc0629f72 ran for 0 msecs: netpoll_init+0x0/0x2f()
Calling initcall 0xc062a21a: netlink_proto_init+0x0/0x12a()
NET: Registered protocol family 16
initcall 0xc062a21a: netlink_proto_init+0x0/0x12a() returned 0.
initcall 0xc062a21a ran for 2 msecs: netlink_proto_init+0x0/0x12a()
Calling initcall 0xc061d42d: kobject_uevent_init+0x0/0x45()
initcall 0xc061d42d: kobject_uevent_init+0x0/0x45() returned 0.
initcall 0xc061d42d ran for 0 msecs: kobject_uevent_init+0x0/0x45()
Calling initcall 0xc061d5e5: pcibus_class_init+0x0/0xf()
initcall 0xc061d5e5: pcibus_class_init+0x0/0xf() returned 0.
initcall 0xc061d5e5 ran for 0 msecs: pcibus_class_init+0x0/0xf()
Calling initcall 0xc061db0a: pci_driver_init+0x0/0xf()
initcall 0xc061db0a: pci_driver_init+0x0/0xf() returned 0.
initcall 0xc061db0a ran for 0 msecs: pci_driver_init+0x0/0xf()
Calling initcall 0xc061e0fb: backlight_class_init+0x0/0xf()
initcall 0xc061e0fb: backlight_class_init+0x0/0xf() returned 0.
initcall 0xc061e0fb ran for 0 msecs: backlight_class_init+0x0/0xf()
Calling initcall 0xc0620f16: tty_class_init+0x0/0x23()
initcall 0xc0620f16: tty_class_init+0x0/0x23() returned 0.
initcall 0xc0620f16 ran for 0 msecs: tty_class_init+0x0/0x23()
Calling initcall 0xc0621598: vtconsole_class_init+0x0/0xb5()
initcall 0xc0621598: vtconsole_class_init+0x0/0xb5() returned 0.
initcall 0xc0621598 ran for 0 msecs: vtconsole_class_init+0x0/0xb5()
Calling initcall 0xc0625fb2: lgend_pushf+0x0/0x163()
initcall 0xc0625fb2: lgend_pushf+0x0/0x163() returned 0.
initcall 0xc0625fb2 ran for 0 msecs: lgend_pushf+0x0/0x163()
Calling initcall 0xc060aaf7: init_pit_clocksource+0x0/0x65()
initcall 0xc060aaf7: init_pit_clocksource+0x0/0x65() returned 0.
initcall 0xc060aaf7 ran for 0 msecs: init_pit_clocksource+0x0/0x65()
Calling initcall 0xc060e115: mtrr_if_init+0x0/0x57()
initcall 0xc060e115: mtrr_if_init+0x0/0x57() returned 0.
initcall 0xc060e115 ran for 0 msecs: mtrr_if_init+0x0/0x57()
Calling initcall 0xc061081f: ffh_cstate_init+0x0/0x2c()
initcall 0xc061081f: ffh_cstate_init+0x0/0x2c() returned -1.
initcall 0xc061081f ran for 0 msecs: ffh_cstate_init+0x0/0x2c()
initcall at 0xc061081f: ffh_cstate_init+0x0/0x2c(): returned with error code -1
Calling initcall 0xc061dc50: acpi_pci_init+0x0/0x3f()
ACPI: bus type pci registered
initcall 0xc061dc50: acpi_pci_init+0x0/0x3f() returned 0.
initcall 0xc061dc50 ran for 2 msecs: acpi_pci_init+0x0/0x3f()
Calling initcall 0xc061f747: init_acpi_device_notify+0x0/0x45()
initcall 0xc061f747: init_acpi_device_notify+0x0/0x45() returned 0.
initcall 0xc061f747 ran for 0 msecs: init_acpi_device_notify+0x0/0x45()
Calling initcall 0xc0626c8e: dmi_id_init+0x0/0x26c()
initcall 0xc0626c8e: dmi_id_init+0x0/0x26c() returned 0.
initcall 0xc0626c8e ran for 0 msecs: dmi_id_init+0x0/0x26c()
Calling initcall 0xc06282e7: pci_access_init+0x0/0x41()
PCI: Using MMCONFIG
PCI: No mmconfig possible on device 00:18
initcall 0xc06282e7: pci_access_init+0x0/0x41() returned 0.
initcall 0xc06282e7 ran for 4 msecs: pci_access_init+0x0/0x41()
Calling initcall 0xc060a617: request_standard_resources+0x0/0x300()
Setting up standard PCI resources
initcall 0xc060a617: request_standard_resources+0x0/0x300() returned 0.
initcall 0xc060a617 ran for 5 msecs: request_standard_resources+0x0/0x300()
Calling initcall 0xc060a934: topology_init+0x0/0x2f()
initcall 0xc060a934: topology_init+0x0/0x2f() returned 0.
initcall 0xc060a934 ran for 0 msecs: topology_init+0x0/0x2f()
Calling initcall 0xc060de9d: mtrr_init_finialize+0x0/0x2c()
initcall 0xc060de9d: mtrr_init_finialize+0x0/0x2c() returned 0.
initcall 0xc060de9d ran for 0 msecs: mtrr_init_finialize+0x0/0x2c()
Calling initcall 0xc0618386: param_sysfs_init+0x0/0x17f()
initcall 0xc0618386: param_sysfs_init+0x0/0x17f() returned 0.
initcall 0xc0618386 ran for 1 msecs: param_sysfs_init+0x0/0x17f()
Calling initcall 0xc0140499: pm_sysrq_init+0x0/0x17()
initcall 0xc0140499: pm_sysrq_init+0x0/0x17() returned 0.
initcall 0xc0140499 ran for 0 msecs: pm_sysrq_init+0x0/0x17()
Calling initcall 0xc061ba84: init_bio+0x0/0xc7()
initcall 0xc061ba84: init_bio+0x0/0xc7() returned 0.
initcall 0xc061ba84 ran for 0 msecs: init_bio+0x0/0xc7()
Calling initcall 0xc061d1b4: genhd_device_init+0x0/0x50()
initcall 0xc061d1b4: genhd_device_init+0x0/0x50() returned 0.
initcall 0xc061d1b4 ran for 0 msecs: genhd_device_init+0x0/0x50()
Calling initcall 0xc061dc8f: fbmem_init+0x0/0x87()
initcall 0xc061dc8f: fbmem_init+0x0/0x87() returned 0.
initcall 0xc061dc8f ran for 0 msecs: fbmem_init+0x0/0x87()
Calling initcall 0xc061f54d: acpi_init+0x0/0x1fa()
evgpeblk-0956 [04] ev_create_gpe_block : GPE 00 to 1F [_GPE] 4 regs on int 0x9
evgpeblk-0956 [04] ev_create_gpe_block : GPE 20 to 5F [_GPE] 8 regs on int 0x9
evgpeblk-1052 [03] ev_initialize_gpe_bloc: Found 7 Wake, Enabled 0 Runtime GPEs in this block
evgpeblk-1052 [03] ev_initialize_gpe_bloc: Found 0 Wake, Enabled 0 Runtime GPEs in this block
Completing Region/Field/Buffer/Package initialization:.....................................................................................................................................................
Initialized 37/37 Regions 9/9 Fields 35/35 Buffers 68/77 Packages (989 nodes)
Initializing Device/Processor/Thermal objects by executing _INI methods:...
Executed 3 _INI methods requiring 1 _STA executions (examined 91 objects)
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
initcall 0xc061f54d: acpi_init+0x0/0x1fa() returned 0.
initcall 0xc061f54d ran for 76 msecs: acpi_init+0x0/0x1fa()
Calling initcall 0xc061f78c: acpi_scan_init+0x0/0xfc()
initcall 0xc061f78c: acpi_scan_init+0x0/0xfc() returned 0.
initcall 0xc061f78c ran for 13 msecs: acpi_scan_init+0x0/0xfc()
Calling initcall 0xc061f94b: acpi_ec_init+0x0/0x55()
initcall 0xc061f94b: acpi_ec_init+0x0/0x55() returned 0.
initcall 0xc061f94b ran for 0 msecs: acpi_ec_init+0x0/0x55()
Calling initcall 0xc061fa45: acpi_pci_root_init+0x0/0x25()
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Transparent bridge - 0000:00:09.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT]
initcall 0xc061fa45: acpi_pci_root_init+0x0/0x25() returned 0.
initcall 0xc061fa45 ran for 96 msecs: acpi_pci_root_init+0x0/0x25()
Calling initcall 0xc061fb3e: acpi_pci_link_init+0x0/0x43()
ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 5 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 *5 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNK5] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LUBA] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LUBB] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LMAC] (IRQs 3 4 5 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LACI] (IRQs *3 4 5 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LMCI] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LSMB] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LUB2] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LIDE] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LSID] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LFID] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LPCA] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [APC1] (IRQs 16) *0, disabled.
ACPI: PCI Interrupt Link [APC2] (IRQs 17) *0
ACPI: PCI Interrupt Link [APC3] (IRQs 18) *0
ACPI: PCI Interrupt Link [APC4] (IRQs 19) *0, disabled.
ACPI: PCI Interrupt Link [APC5] (IRQs *16), disabled.
ACPI: PCI Interrupt Link [APCF] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCG] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCH] (IRQs 20 21 22 23) *0
ACPI: PCI Interrupt Link [APCJ] (IRQs 20 21 22 23) *0
ACPI: PCI Interrupt Link [APCK] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCS] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCL] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCZ] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APSI] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APSJ] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCP] (IRQs 20 21 22 23) *0, disabled.
initcall 0xc061fb3e: acpi_pci_link_init+0x0/0x43() returned 0.
initcall 0xc061fb3e ran for 117 msecs: acpi_pci_link_init+0x0/0x43()
Calling initcall 0xc061fc18: acpi_power_init+0x0/0x69()
initcall 0xc061fc18: acpi_power_init+0x0/0x69() returned 0.
initcall 0xc061fc18 ran for 0 msecs: acpi_power_init+0x0/0x69()
Calling initcall 0xc06206ff: acpi_system_init+0x0/0xad()
initcall 0xc06206ff: acpi_system_init+0x0/0xad() returned 0.
initcall 0xc06206ff ran for 0 msecs: acpi_system_init+0x0/0xad()
Calling initcall 0xc06207ac: acpi_event_init+0x0/0x38()
initcall 0xc06207ac: acpi_event_init+0x0/0x38() returned 0.
initcall 0xc06207ac ran for 0 msecs: acpi_event_init+0x0/0x38()
Calling initcall 0xc06207e4: acpi_debug_init+0x0/0x99()
initcall 0xc06207e4: acpi_debug_init+0x0/0x99() returned 0.
initcall 0xc06207e4 ran for 0 msecs: acpi_debug_init+0x0/0x99()
Calling initcall 0xc062087d: acpi_cm_sbs_init+0x0/0x7()
initcall 0xc062087d: acpi_cm_sbs_init+0x0/0x7() returned 0.
initcall 0xc062087d ran for 0 msecs: acpi_cm_sbs_init+0x0/0x7()
Calling initcall 0xc0620884: pnp_init+0x0/0x1c()
Linux Plug and Play Support v0.97 (c) Adam Belay
initcall 0xc0620884: pnp_init+0x0/0x1c() returned 0.
initcall 0xc0620884 ran for 0 msecs: pnp_init+0x0/0x1c()
Calling initcall 0xc0620a56: pnpacpi_init+0x0/0x87()
pnp: PnP ACPI init
ACPI: bus type pnp registered
Clocksource tsc unstable (delta = 164410318 ns)
pnp: PnP ACPI: found 16 devices
ACPI: ACPI bus type pnp unregistered
initcall 0xc0620a56: pnpacpi_init+0x0/0x87() returned 0.
initcall 0xc0620a56 ran for 14 msecs: pnpacpi_init+0x0/0x87()
Calling initcall 0xc0621311: misc_init+0x0/0x79()
initcall 0xc0621311: misc_init+0x0/0x79() returned 0.
initcall 0xc0621311 ran for 0 msecs: misc_init+0x0/0x79()
Calling initcall 0xc0623b60: init_scsi+0x0/0x8f()
SCSI subsystem initialized
initcall 0xc0623b60: init_scsi+0x0/0x8f() returned 0.
initcall 0xc0623b60 ran for 1 msecs: init_scsi+0x0/0x8f()
Calling initcall 0xc0624368: ata_init+0x0/0x6c()
libata version 2.21 loaded.
initcall 0xc0624368: ata_init+0x0/0x6c() returned 0.
initcall 0xc0624368 ran for 0 msecs: ata_init+0x0/0x6c()
Calling initcall 0xc06250e2: usb_init+0x0/0x106()
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
initcall 0xc06250e2: usb_init+0x0/0x106() returned 0.
initcall 0xc06250e2 ran for 5 msecs: usb_init+0x0/0x106()
Calling initcall 0xc0625533: serio_init+0x0/0x8d()
initcall 0xc0625533: serio_init+0x0/0x8d() returned 0.
initcall 0xc0625533 ran for 0 msecs: serio_init+0x0/0x8d()
Calling initcall 0xc062590d: input_init+0x0/0x101()
initcall 0xc062590d: input_init+0x0/0x101() returned 0.
initcall 0xc062590d ran for 0 msecs: input_init+0x0/0x101()
Calling initcall 0xc0625b7a: hwmon_init+0x0/0x34()
initcall 0xc0625b7a: hwmon_init+0x0/0x34() returned 0.
initcall 0xc0625b7a ran for 0 msecs: hwmon_init+0x0/0x34()
Calling initcall 0xc0627ffb: ac97_bus_init+0x0/0xf()
initcall 0xc0627ffb: ac97_bus_init+0x0/0xf() returned 0.
initcall 0xc0627ffb ran for 0 msecs: ac97_bus_init+0x0/0xf()
Calling initcall 0xc0628e25: pci_acpi_init+0x0/0x9b()
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
number of MP IRQ sources: 16.
number of IO-APIC #2 registers: 24.
testing the IO APIC.......................
IO APIC #2......
.... register #00: 00000000
....... : physical APIC id: 00
....... : Delivery Type: 0
....... : LTS : 0
.... register #01: 00170011
....... : max redirection entries: 0017
....... : PRQ implemented: 0
....... : IO APIC version: 0011
.... register #02: 00000000
....... : arbitration: 00
.... IRQ redirection table:
NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
00 003 03 0 0 0 0 0 1 1 31
01 003 03 1 0 0 0 0 1 1 39
02 003 03 0 0 0 0 0 1 1 41
03 003 03 1 0 0 0 0 1 1 49
04 003 03 1 0 0 0 0 1 1 51
05 003 03 1 0 0 0 0 1 1 59
06 003 03 1 0 0 0 0 1 1 61
07 003 03 1 0 0 0 0 1 1 69
08 003 03 1 0 0 0 0 1 1 71
09 003 03 0 1 0 0 0 1 1 79
0a 003 03 1 0 0 0 0 1 1 81
0b 003 03 1 0 0 0 0 1 1 89
0c 003 03 1 0 0 0 0 1 1 91
0d 003 03 1 0 0 0 0 1 1 99
0e 003 03 0 0 0 0 0 1 1 A1
0f 003 03 0 0 0 0 0 1 1 A9
10 000 00 1 0 0 0 0 0 0 00
11 000 00 1 0 0 0 0 0 0 00
12 000 00 1 0 0 0 0 0 0 00
13 000 00 1 0 0 0 0 0 0 00
14 000 00 1 0 0 0 0 0 0 00
15 000 00 1 0 0 0 0 0 0 00
16 000 00 1 0 0 0 0 0 0 00
17 000 00 1 0 0 0 0 0 0 00
IRQ to pin mappings:
IRQ0 -> 0:0
IRQ1 -> 0:1
IRQ2 -> 0:2
IRQ3 -> 0:3
IRQ4 -> 0:4
IRQ5 -> 0:5
IRQ6 -> 0:6
IRQ7 -> 0:7
IRQ8 -> 0:8
IRQ9 -> 0:9
IRQ10 -> 0:10
IRQ11 -> 0:11
IRQ12 -> 0:12
IRQ13 -> 0:13
IRQ14 -> 0:14
IRQ15 -> 0:15
.................................... done.
initcall 0xc0628e25: pci_acpi_init+0x0/0x9b() returned 0.
initcall 0xc0628e25 ran for 82 msecs: pci_acpi_init+0x0/0x9b()
Calling initcall 0xc0628ec0: pci_legacy_init+0x0/0x105()
initcall 0xc0628ec0: pci_legacy_init+0x0/0x105() returned 0.
initcall 0xc0628ec0 ran for 0 msecs: pci_legacy_init+0x0/0x105()
Calling initcall 0xc06293cb: pcibios_irq_init+0x0/0x452()
initcall 0xc06293cb: pcibios_irq_init+0x0/0x452() returned 0.
initcall 0xc06293cb ran for 0 msecs: pcibios_irq_init+0x0/0x452()
Calling initcall 0xc062981d: pcibios_init+0x0/0x7c()
initcall 0xc062981d: pcibios_init+0x0/0x7c() returned 0.
initcall 0xc062981d ran for 0 msecs: pcibios_init+0x0/0x7c()
Calling initcall 0xc062994e: proto_init+0x0/0x2e()
initcall 0xc062994e: proto_init+0x0/0x2e() returned 0.
initcall 0xc062994e ran for 0 msecs: proto_init+0x0/0x2e()
Calling initcall 0xc0629a9e: net_dev_init+0x0/0x1d9()
initcall 0xc0629a9e: net_dev_init+0x0/0x1d9() returned 0.
initcall 0xc0629a9e ran for 0 msecs: net_dev_init+0x0/0x1d9()
Calling initcall 0xc0629ca8: neigh_init+0x0/0x7a()
initcall 0xc0629ca8: neigh_init+0x0/0x7a() returned 0.
initcall 0xc0629ca8 ran for 0 msecs: neigh_init+0x0/0x7a()
Calling initcall 0xc0629fa1: fib_rules_init+0x0/0x55()
initcall 0xc0629fa1: fib_rules_init+0x0/0x55() returned 0.
initcall 0xc0629fa1 ran for 0 msecs: fib_rules_init+0x0/0x55()
Calling initcall 0xc062a0f2: pktsched_init+0x0/0xc9()
initcall 0xc062a0f2: pktsched_init+0x0/0xc9() returned 0.
initcall 0xc062a0f2 ran for 0 msecs: pktsched_init+0x0/0xc9()
Calling initcall 0xc062a1ca: tc_filter_init+0x0/0x50()
initcall 0xc062a1ca: tc_filter_init+0x0/0x50() returned 0.
initcall 0xc062a1ca ran for 0 msecs: tc_filter_init+0x0/0x50()
Calling initcall 0xc062a344: genl_init+0x0/0xa7()
initcall 0xc062a344: genl_init+0x0/0xa7() returned 0.
initcall 0xc062a344 ran for 0 msecs: genl_init+0x0/0xa7()
Calling initcall 0xc062b82a: wireless_nlevent_init+0x0/0x2f()
initcall 0xc062b82a: wireless_nlevent_init+0x0/0x2f() returned 0.
initcall 0xc062b82a ran for 0 msecs: wireless_nlevent_init+0x0/0x2f()
Calling initcall 0xc061885a: clocksource_done_booting+0x0/0x11()
initcall 0xc061885a: clocksource_done_booting+0x0/0x11() returned 0.
initcall 0xc061885a ran for 0 msecs: clocksource_done_booting+0x0/0x11()
Calling initcall 0xc061b3a2: init_pipe_fs+0x0/0x3f()
initcall 0xc061b3a2: init_pipe_fs+0x0/0x3f() returned 0.
initcall 0xc061b3a2 ran for 0 msecs: init_pipe_fs+0x0/0x3f()
Calling initcall 0xc061bd1a: eventpoll_init+0x0/0x96()
initcall 0xc061bd1a: eventpoll_init+0x0/0x96() returned 0.
initcall 0xc061bd1a ran for 0 msecs: eventpoll_init+0x0/0x96()
Calling initcall 0xc061bdb0: anon_inode_init+0x0/0xe8()
initcall 0xc061bdb0: anon_inode_init+0x0/0xe8() returned 0.
initcall 0xc061bdb0 ran for 0 msecs: anon_inode_init+0x0/0xe8()
Calling initcall 0xc0620960: pnp_system_init+0x0/0xf()
pnp: 00:01: ioport range 0x4000-0x407f has been reserved
pnp: 00:01: ioport range 0x4080-0x40ff has been reserved
pnp: 00:01: ioport range 0x4400-0x447f has been reserved
pnp: 00:01: ioport range 0x4480-0x44ff has been reserved
pnp: 00:01: ioport range 0x4800-0x487f has been reserved
pnp: 00:01: ioport range 0x4880-0x48ff has been reserved
pnp: 00:0e: iomem range 0xe0000000-0xefffffff could not be reserved
pnp: 00:0f: iomem range 0xf0000-0xf3fff could not be reserved
pnp: 00:0f: iomem range 0xf4000-0xf7fff could not be reserved
pnp: 00:0f: iomem range 0xf8000-0xfbfff could not be reserved
pnp: 00:0f: iomem range 0xfc000-0xfffff could not be reserved
initcall 0xc0620960: pnp_system_init+0x0/0xf() returned 0.
initcall 0xc0620960 ran for 10 msecs: pnp_system_init+0x0/0xf()
Calling initcall 0xc0620e36: chr_dev_init+0x0/0x86()
initcall 0xc0620e36: chr_dev_init+0x0/0x86() returned 0.
initcall 0xc0620e36 ran for 0 msecs: chr_dev_init+0x0/0x86()
Calling initcall 0xc0622b1e: firmware_class_init+0x0/0x66()
initcall 0xc0622b1e: firmware_class_init+0x0/0x66() returned 0.
initcall 0xc0622b1e ran for 0 msecs: firmware_class_init+0x0/0x66()
Calling initcall 0xc062660c: cpufreq_gov_performance_init+0x0/0xf()
initcall 0xc062660c: cpufreq_gov_performance_init+0x0/0xf() returned 0.
initcall 0xc062660c ran for 0 msecs: cpufreq_gov_performance_init+0x0/0xf()
Calling initcall 0xc062661b: cpufreq_gov_userspace_init+0x0/0x1b()
initcall 0xc062661b: cpufreq_gov_userspace_init+0x0/0x1b() returned 0.
initcall 0xc062661b ran for 0 msecs: cpufreq_gov_userspace_init+0x0/0x1b()
Calling initcall 0xc0626f0e: init_acpi_pm_clocksource+0x0/0x173()
initcall 0xc0626f0e<6>Time: acpi_pm clocksource has been installed.
Switched to high resolution mode on CPU 0
Switched to high resolution mode on CPU 1
: init_acpi_pm_clocksource+0x0/0x173() returned 0.
initcall 0xc0626f0e ran for 28 msecs: init_acpi_pm_clocksource+0x0/0x173()
Calling initcall 0xc0628064: pcibios_assign_resources+0x0/0x92()
PCI: Bridge: 0000:00:09.0
IO window: c000-cfff
MEM window: da000000-da0fffff
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0b.0
IO window: disabled.
MEM window: disabled.
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0c.0
IO window: disabled.
MEM window: disabled.
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0d.0
IO window: disabled.
MEM window: disabled.
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0e.0
IO window: b000-bfff
MEM window: d8000000-d9ffffff
PREFETCH window: d0000000-d7ffffff
PCI: Setting latency timer of device 0000:00:09.0 to 64
PCI: Setting latency timer of device 0000:00:0b.0 to 64
PCI: Setting latency timer of device 0000:00:0c.0 to 64
PCI: Setting latency timer of device 0000:00:0d.0 to 64
PCI: Setting latency timer of device 0000:00:0e.0 to 64
initcall 0xc0628064: pcibios_assign_resources+0x0/0x92() returned 0.
initcall 0xc0628064 ran for 69 msecs: pcibios_assign_resources+0x0/0x92()
Calling initcall 0xc062ae68: inet_init+0x0/0x2d6()
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
TCP established hash table entries: 131072 (order: 8, 1572864 bytes)
TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
TCP: Hash tables configured (established 131072 bind 65536)
TCP reno registered
initcall 0xc062ae68: inet_init+0x0/0x2d6() returned 0.
initcall 0xc062ae68 ran for 39 msecs: inet_init+0x0/0x2d6()
Calling initcall 0xc0608f76: populate_rootfs+0x0/0xe4()
initcall 0xc0608f76: populate_rootfs+0x0/0xe4() returned 0.
initcall 0xc0608f76 ran for 0 msecs: populate_rootfs+0x0/0xe4()
Calling initcall 0xc0609a6f: i8259A_init_sysfs+0x0/0x1d()
initcall 0xc0609a6f: i8259A_init_sysfs+0x0/0x1d() returned 0.
initcall 0xc0609a6f ran for 0 msecs: i8259A_init_sysfs+0x0/0x1d()
Calling initcall 0xc0609b4f: sbf_init+0x0/0xd2()
initcall 0xc0609b4f: sbf_init+0x0/0xd2() returned 0.
initcall 0xc0609b4f ran for 0 msecs: sbf_init+0x0/0xd2()
Calling initcall 0xc060a917: i8237A_init_sysfs+0x0/0x1d()
initcall 0xc060a917: i8237A_init_sysfs+0x0/0x1d() returned 0.
initcall 0xc060a917 ran for 0 msecs: i8237A_init_sysfs+0x0/0x1d()
Calling initcall 0xc060dce5: cache_sysfs_init+0x0/0x43()
initcall 0xc060dce5: cache_sysfs_init+0x0/0x43() returned 0.
initcall 0xc060dce5 ran for 0 msecs: cache_sysfs_init+0x0/0x43()
Calling initcall 0xc060de25: thermal_throttle_init_device+0x0/0x78()
initcall 0xc060de25: thermal_throttle_init_device+0x0/0x78() returned 0.
initcall 0xc060de25 ran for 0 msecs: thermal_throttle_init_device+0x0/0x78()
Calling initcall 0xc060f4cf: longrun_init+0x0/0x28()
initcall 0xc060f4cf: longrun_init+0x0/0x28() returned -19.
initcall 0xc060f4cf ran for 0 msecs: longrun_init+0x0/0x28()
Calling initcall 0xc060f80c: speedstep_init+0x0/0x1bf()
initcall 0xc060f80c: speedstep_init+0x0/0x1bf() returned -19.
initcall 0xc060f80c ran for 0 msecs: speedstep_init+0x0/0x1bf()
Calling initcall 0xc0610e97: apm_init+0x0/0x3bd()
apm: BIOS not found.
initcall 0xc0610e97: apm_init+0x0/0x3bd() returned -19.
initcall 0xc0610e97 ran for 1 msecs: apm_init+0x0/0x3bd()
Calling initcall 0xc06132d4: init_lapic_sysfs+0x0/0x28()
initcall 0xc06132d4: init_lapic_sysfs+0x0/0x28() returned 0.
initcall 0xc06132d4 ran for 0 msecs: init_lapic_sysfs+0x0/0x28()
Calling initcall 0xc06142cc: ioapic_init_sysfs+0x0/0xb6()
initcall 0xc06142cc: ioapic_init_sysfs+0x0/0xb6() returned 0.
initcall 0xc06142cc ran for 0 msecs: ioapic_init_sysfs+0x0/0xb6()
Calling initcall 0xc0615b98: serial8250_x86_com_init+0x0/0x26()
initcall 0xc0615b98: serial8250_x86_com_init+0x0/0x26() returned -19.
initcall 0xc0615b98 ran for 0 msecs: serial8250_x86_com_init+0x0/0x26()
Calling initcall 0xc0615ed7: hpet_register_sysfs+0x0/0x49()
initcall 0xc0615ed7: hpet_register_sysfs+0x0/0x49() returned 0.
initcall 0xc0615ed7 ran for 0 msecs: hpet_register_sysfs+0x0/0x49()
Calling initcall 0xc0616187: add_pcspkr+0x0/0x35()
initcall 0xc0616187: add_pcspkr+0x0/0x35() returned 0.
initcall 0xc0616187 ran for 0 msecs: add_pcspkr+0x0/0x35()
Calling initcall 0xc0616c5f: init_sched_debug_procfs+0x0/0x2a()
initcall 0xc0616c5f: init_sched_debug_procfs+0x0/0x2a() returned 0.
initcall 0xc0616c5f ran for 0 msecs: init_sched_debug_procfs+0x0/0x2a()
Calling initcall 0xc0617b2e: create_proc_profile+0x0/0x16c()
initcall 0xc0617b2e: create_proc_profile+0x0/0x16c() returned 0.
initcall 0xc0617b2e ran for 0 msecs: create_proc_profile+0x0/0x16c()
Calling initcall 0xc0617da4: ioresources_init+0x0/0x39()
initcall 0xc0617da4: ioresources_init+0x0/0x39() returned 0.
initcall 0xc0617da4 ran for 0 msecs: ioresources_init+0x0/0x39()
Calling initcall 0xc061802b: uid_cache_init+0x0/0x8c()
initcall 0xc061802b: uid_cache_init+0x0/0x8c() returned 0.
initcall 0xc061802b ran for 0 msecs: uid_cache_init+0x0/0x8c()
Calling initcall 0xc0618505: init_posix_timers+0x0/0x85()
initcall 0xc0618505: init_posix_timers+0x0/0x85() returned 0.
initcall 0xc0618505 ran for 0 msecs: init_posix_timers+0x0/0x85()
Calling initcall 0xc061858a: init_posix_cpu_timers+0x0/0x51()
initcall 0xc061858a: init_posix_cpu_timers+0x0/0x51() returned 0.
initcall 0xc061858a ran for 0 msecs: init_posix_cpu_timers+0x0/0x51()
Calling initcall 0xc06186cc: latency_init+0x0/0x20()
initcall 0xc06186cc: latency_init+0x0/0x20() returned 0.
initcall 0xc06186cc ran for 0 msecs: latency_init+0x0/0x20()
Calling initcall 0xc06186ec: timekeeping_init_device+0x0/0x1d()
initcall 0xc06186ec: timekeeping_init_device+0x0/0x1d() returned 0.
initcall 0xc06186ec ran for 0 msecs: timekeeping_init_device+0x0/0x1d()
Calling initcall 0xc061886b: init_clocksource_sysfs+0x0/0x43()
initcall 0xc061886b: init_clocksource_sysfs+0x0/0x43() returned 0.
initcall 0xc061886b ran for 0 msecs: init_clocksource_sysfs+0x0/0x43()
Calling initcall 0xc061894a: init_timer_list_procfs+0x0/0x2a()
initcall 0xc061894a: init_timer_list_procfs+0x0/0x2a() returned 0.
initcall 0xc061894a ran for 0 msecs: init_timer_list_procfs+0x0/0x2a()
Calling initcall 0xc06189e9: init+0x0/0x74()
initcall 0xc06189e9: init+0x0/0x74() returned 0.
initcall 0xc06189e9 ran for 0 msecs: init+0x0/0x74()
Calling initcall 0xc0618a5d: proc_dma_init+0x0/0x20()
initcall 0xc0618a5d: proc_dma_init+0x0/0x20() returned 0.
initcall 0xc0618a5d ran for 0 msecs: proc_dma_init+0x0/0x20()
Calling initcall 0xc013c40c: percpu_modinit+0x0/0x66()
initcall 0xc013c40c: percpu_modinit+0x0/0x66() returned 0.
initcall 0xc013c40c ran for 0 msecs: percpu_modinit+0x0/0x66()
Calling initcall 0xc0618be7: kallsyms_init+0x0/0x23()
initcall 0xc0618be7: kallsyms_init+0x0/0x23() returned 0.
initcall 0xc0618be7 ran for 0 msecs: kallsyms_init+0x0/0x23()
Calling initcall 0xc0618c2c: crash_notes_memory_init+0x0/0x38()
initcall 0xc0618c2c: crash_notes_memory_init+0x0/0x38() returned 0.
initcall 0xc0618c2c ran for 0 msecs: crash_notes_memory_init+0x0/0x38()
Calling initcall 0xc0618c64: ikconfig_init+0x0/0x3b()
initcall 0xc0618c64: ikconfig_init+0x0/0x3b() returned 0.
initcall 0xc0618c64 ran for 0 msecs: ikconfig_init+0x0/0x3b()
Calling initcall 0xc0618d11: audit_init+0x0/0x10b()
audit: initializing netlink socket (disabled)
audit(1181035938.234:1): initialized
initcall 0xc0618d11: audit_init+0x0/0x10b() returned 0.
initcall 0xc0618d11 ran for 7 msecs: audit_init+0x0/0x10b()
Calling initcall 0xc0618e91: init_kprobes+0x0/0x4a()
initcall 0xc0618e91: init_kprobes+0x0/0x4a() returned 0.
initcall 0xc0618e91 ran for 0 msecs: init_kprobes+0x0/0x4a()
Calling initcall 0xc0619076: relay_init+0x0/0x7()
initcall 0xc0619076: relay_init+0x0/0x7() returned 0.
initcall 0xc0619076 ran for 0 msecs: relay_init+0x0/0x7()
Calling initcall 0xc061907d: utsname_sysctl_init+0x0/0x11()
initcall 0xc061907d: utsname_sysctl_init+0x0/0x11() returned 0.
initcall 0xc061907d ran for 0 msecs: utsname_sysctl_init+0x0/0x11()
Calling initcall 0xc061a5ca: init_per_zone_pages_min+0x0/0x3c()
initcall 0xc061a5ca: init_per_zone_pages_min+0x0/0x3c() returned 0.
initcall 0xc061a5ca ran for 0 msecs: init_per_zone_pages_min+0x0/0x3c()
Calling initcall 0xc061a8a0: pdflush_init+0x0/0x16()
initcall 0xc061a8a0: pdflush_init+0x0/0x16() returned 0.
initcall 0xc061a8a0 ran for 0 msecs: pdflush_init+0x0/0x16()
Calling initcall 0xc061a8d5: kswapd_init+0x0/0x1c()
initcall 0xc061a8d5: kswapd_init+0x0/0x1c() returned 0.
initcall 0xc061a8d5 ran for 0 msecs: kswapd_init+0x0/0x1c()
Calling initcall 0xc061a8f1: setup_vmstat+0x0/0x3e()
initcall 0xc061a8f1: setup_vmstat+0x0/0x3e() returned 0.
initcall 0xc061a8f1 ran for 0 msecs: setup_vmstat+0x0/0x3e()
Calling initcall 0xc061aa51: init_emergency_pool+0x0/0x62()
highmem bounce pool size: 64 pages
initcall 0xc061aa51: init_emergency_pool+0x0/0x62() returned 0.
initcall 0xc061aa51 ran for 2 msecs: init_emergency_pool+0x0/0x62()
Calling initcall 0xc061aab3: procswaps_init+0x0/0x20()
initcall 0xc061aab3: procswaps_init+0x0/0x20() returned 0.
initcall 0xc061aab3 ran for 0 msecs: procswaps_init+0x0/0x20()
Calling initcall 0xc061aad3: kprefetchd_init+0x0/0x3f()
initcall 0xc061aad3: kprefetchd_init+0x0/0x3f() returned 0.
initcall 0xc061aad3 ran for 0 msecs: kprefetchd_init+0x0/0x3f()
Calling initcall 0xc061ab8f: hugetlb_init+0x0/0x59()
Total HugeTLB memory allocated, 0
initcall 0xc061ab8f: hugetlb_init+0x0/0x59() returned 0.
initcall 0xc061ab8f ran for 2 msecs: hugetlb_init+0x0/0x59()
Calling initcall 0xc061ac1e: init_tmpfs+0x0/0xbf()
initcall 0xc061ac1e: init_tmpfs+0x0/0xbf() returned 0.
initcall 0xc061ac1e ran for 0 msecs: init_tmpfs+0x0/0xbf()
Calling initcall 0xc061acf1: cpucache_init+0x0/0x2f()
initcall 0xc061acf1: cpucache_init+0x0/0x2f() returned 0.
initcall 0xc061acf1 ran for 0 msecs: cpucache_init+0x0/0x2f()
Calling initcall 0xc061b3e1: fasync_init+0x0/0x37()
initcall 0xc061b3e1: fasync_init+0x0/0x37() returned 0.
initcall 0xc061b3e1 ran for 0 msecs: fasync_init+0x0/0x37()
Calling initcall 0xc061b9b4: aio_setup+0x0/0x7d()
initcall 0xc061b9b4: aio_setup+0x0/0x7d() returned 0.
initcall 0xc061b9b4 ran for 0 msecs: aio_setup+0x0/0x7d()
Calling initcall 0xc061bc46: inotify_setup+0x0/0x11()
initcall 0xc061bc46: inotify_setup+0x0/0x11() returned 0.
initcall 0xc061bc46 ran for 0 msecs: inotify_setup+0x0/0x11()
Calling initcall 0xc061bc57: inotify_user_setup+0x0/0xc3()
initcall 0xc061bc57: inotify_user_setup+0x0/0xc3() returned 0.
initcall 0xc061bc57 ran for 0 msecs: inotify_user_setup+0x0/0xc3()
Calling initcall 0xc061bee9: init_mbcache+0x0/0x11()
initcall 0xc061bee9: init_mbcache+0x0/0x11() returned 0.
initcall 0xc061bee9 ran for 0 msecs: init_mbcache+0x0/0x11()
Calling initcall 0xc061befa: dquot_init+0x0/0xed()
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
initcall 0xc061befa: dquot_init+0x0/0xed() returned 0.
initcall 0xc061befa ran for 7 msecs: dquot_init+0x0/0xed()
Calling initcall 0xc061bfe7: init_v2_quota_format+0x0/0xf()
initcall 0xc061bfe7: init_v2_quota_format+0x0/0xf() returned 0.
initcall 0xc061bfe7 ran for 0 msecs: init_v2_quota_format+0x0/0xf()
Calling initcall 0xc061bff6: dnotify_init+0x0/0x37()
initcall 0xc061bff6: dnotify_init+0x0/0x37() returned 0.
initcall 0xc061bff6 ran for 0 msecs: dnotify_init+0x0/0x37()
Calling initcall 0xc061c40a: init_devpts_fs+0x0/0x30()
initcall 0xc061c40a: init_devpts_fs+0x0/0x30() returned 0.
initcall 0xc061c40a ran for 0 msecs: init_devpts_fs+0x0/0x30()
Calling initcall 0xc061c43a: init_ext3_fs+0x0/0x6e()
initcall 0xc061c43a: init_ext3_fs+0x0/0x6e() returned 0.
initcall 0xc061c43a ran for 0 msecs: init_ext3_fs+0x0/0x6e()
Calling initcall 0xc061c568: journal_init+0x0/0xd8()
initcall 0xc061c568: journal_init+0x0/0xd8() returned 0.
initcall 0xc061c568 ran for 0 msecs: journal_init+0x0/0xd8()
Calling initcall 0xc061c640: init_ext2_fs+0x0/0x6e()
initcall 0xc061c640: init_ext2_fs+0x0/0x6e() returned 0.
initcall 0xc061c640 ran for 0 msecs: init_ext2_fs+0x0/0x6e()
Calling initcall 0xc061c6e2: init_ramfs_fs+0x0/0xf()
initcall 0xc061c6e2: init_ramfs_fs+0x0/0xf() returned 0.
initcall 0xc061c6e2 ran for 0 msecs: init_ramfs_fs+0x0/0xf()
Calling initcall 0xc061c700: init_hugetlbfs_fs+0x0/0x7d()
initcall 0xc061c700: init_hugetlbfs_fs+0x0/0x7d() returned 0.
initcall 0xc061c700 ran for 0 msecs: init_hugetlbfs_fs+0x0/0x7d()
Calling initcall 0xc061c77d: init_iso9660_fs+0x0/0x70()
initcall 0xc061c77d: init_iso9660_fs+0x0/0x70() returned 0.
initcall 0xc061c77d ran for 0 msecs: init_iso9660_fs+0x0/0x70()
Calling initcall 0xc061c84e: init_nls_cp437+0x0/0xf()
initcall 0xc061c84e: init_nls_cp437+0x0/0xf() returned 0.
initcall 0xc061c84e ran for 0 msecs: init_nls_cp437+0x0/0xf()
Calling initcall 0xc061c85d: init_nls_ascii+0x0/0xf()
initcall 0xc061c85d: init_nls_ascii+0x0/0xf() returned 0.
initcall 0xc061c85d ran for 0 msecs: init_nls_ascii+0x0/0xf()
Calling initcall 0xc061c86c: ipc_init+0x0/0x16()
initcall 0xc061c86c: ipc_init+0x0/0x16() returned 0.
initcall 0xc061c86c ran for 0 msecs: ipc_init+0x0/0x16()
Calling initcall 0xc061ca8d: ipc_sysctl_init+0x0/0x11()
initcall 0xc061ca8d: ipc_sysctl_init+0x0/0x11() returned 0.
initcall 0xc061ca8d ran for 0 msecs: ipc_sysctl_init+0x0/0x11()
Calling initcall 0xc061ca9e: init_mqueue_fs+0x0/0xb8()
initcall 0xc061ca9e: init_mqueue_fs+0x0/0xb8() returned 0.
initcall 0xc061ca9e ran for 0 msecs: init_mqueue_fs+0x0/0xb8()
Calling initcall 0xc061cc9e: selinux_nf_ip_init+0x0/0x57()
SELinux: Registering netfilter hooks
initcall 0xc061cc9e: selinux_nf_ip_init+0x0/0x57() returned 0.
initcall 0xc061cc9e ran for 3 msecs: selinux_nf_ip_init+0x0/0x57()
Calling initcall 0xc061ce18: init_sel_fs+0x0/0x52()
initcall 0xc061ce18: init_sel_fs+0x0/0x52() returned 0.
initcall 0xc061ce18 ran for 0 msecs: init_sel_fs+0x0/0x52()
Calling initcall 0xc061ce6a: selnl_init+0x0/0x4d()
initcall 0xc061ce6a: selnl_init+0x0/0x4d() returned 0.
initcall 0xc061ce6a ran for 0 msecs: selnl_init+0x0/0x4d()
Calling initcall 0xc061ceb7: sel_netif_init+0x0/0x6d()
initcall 0xc061ceb7: sel_netif_init+0x0/0x6d() returned 0.
initcall 0xc061ceb7 ran for 0 msecs: sel_netif_init+0x0/0x6d()
Calling initcall 0xc061cf24: aurule_init+0x0/0x46()
initcall 0xc061cf24: aurule_init+0x0/0x46() returned 0.
initcall 0xc061cf24 ran for 0 msecs: aurule_init+0x0/0x46()
Calling initcall 0xc061cfec: crypto_algapi_init+0x0/0xc()
initcall 0xc061cfec: crypto_algapi_init+0x0/0xc() returned 0.
initcall 0xc061cfec ran for 0 msecs: crypto_algapi_init+0x0/0xc()
Calling initcall 0xc061d016: cryptomgr_init+0x0/0xf()
initcall 0xc061d016: cryptomgr_init+0x0/0xf() returned 0.
initcall 0xc061d016 ran for 0 msecs: cryptomgr_init+0x0/0xf()
Calling initcall 0xc061d025: hmac_module_init+0x0/0xf()
initcall 0xc061d025: hmac_module_init+0x0/0xf() returned 0.
initcall 0xc061d025 ran for 0 msecs: hmac_module_init+0x0/0xf()
Calling initcall 0xc061d034: init+0x0/0xf()
initcall 0xc061d034: init+0x0/0xf() returned 0.
initcall 0xc061d034 ran for 0 msecs: init+0x0/0xf()
Calling initcall 0xc061d043: init+0x0/0xf()
initcall 0xc061d043: init+0x0/0xf() returned 0.
initcall 0xc061d043 ran for 0 msecs: init+0x0/0xf()
Calling initcall 0xc061d344: noop_init+0x0/0xf()
io scheduler noop registered
initcall 0xc061d344: noop_init+0x0/0xf() returned 0.
initcall 0xc061d344 ran for 2 msecs: noop_init+0x0/0xf()
Calling initcall 0xc061d353: as_init+0x0/0xf()
io scheduler anticipatory registered (default)
initcall 0xc061d353: as_init+0x0/0xf() returned 0.
initcall 0xc061d353 ran for 3 msecs: as_init+0x0/0xf()
Calling initcall 0xc061d362: deadline_init+0x0/0xf()
io scheduler deadline registered
initcall 0xc061d362: deadline_init+0x0/0xf() returned 0.
initcall 0xc061d362 ran for 2 msecs: deadline_init+0x0/0xf()
Calling initcall 0xc061d371: cfq_init+0x0/0xbc()
io scheduler cfq registered
initcall 0xc061d371: cfq_init+0x0/0xbc() returned 0.
initcall 0xc061d371 ran for 2 msecs: cfq_init+0x0/0xbc()
Calling initcall 0xc061d596: audit_classes_init+0x0/0x4f()
initcall 0xc061d596: audit_classes_init+0x0/0x4f() returned 0.
initcall 0xc061d596 ran for 0 msecs: audit_classes_init+0x0/0x4f()
Calling initcall 0xc01fb182: pci_init+0x0/0x2c()
PCI: Linking AER extended capability on 0000:00:0b.0
PCI: Linking AER extended capability on 0000:00:0c.0
PCI: Linking AER extended capability on 0000:00:0d.0
PCI: Linking AER extended capability on 0000:00:0e.0
Boot video device is 0000:01:00.0
initcall 0xc01fb182: pci_init+0x0/0x2c() returned 0.
initcall 0xc01fb182 ran for 32 msecs: pci_init+0x0/0x2c()
Calling initcall 0xc061db4e: pci_proc_init+0x0/0x5f()
initcall 0xc061db4e: pci_proc_init+0x0/0x5f() returned 0.
initcall 0xc061db4e ran for 0 msecs: pci_proc_init+0x0/0x5f()
Calling initcall 0xc061dbad: pci_hotplug_init+0x0/0x57()
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
initcall 0xc061dbad: pci_hotplug_init+0x0/0x57() returned 0.
initcall 0xc061dbad ran for 4 msecs: pci_hotplug_init+0x0/0x57()
Calling initcall 0xc061ddab: fb_console_init+0x0/0x10b()
initcall 0xc061ddab: fb_console_init+0x0/0x10b() returned 0.
initcall 0xc061ddab ran for 0 msecs: fb_console_init+0x0/0x10b()
Calling initcall 0xc061e7c0: vesafb_init+0x0/0x271()
initcall 0xc061e7c0: vesafb_init+0x0/0x271() returned 0.
initcall 0xc061e7c0 ran for 0 msecs: vesafb_init+0x0/0x271()
Calling initcall 0xc061ee85: acpi_reserve_resources+0x0/0xc8()
initcall 0xc061ee85: acpi_reserve_resources+0x0/0xc8() returned 0.
initcall 0xc061ee85 ran for 0 msecs: acpi_reserve_resources+0x0/0xc8()
Calling initcall 0xc061f9f4: acpi_fan_init+0x0/0x51()
ACPI: Fan [FAN] (on)
initcall 0xc061f9f4: acpi_fan_init+0x0/0x51() returned 0.
initcall 0xc061f9f4 ran for 1 msecs: acpi_fan_init+0x0/0x51()
Calling initcall 0xc061fb0b: irqrouter_init_sysfs+0x0/0x33()
initcall 0xc061fb0b: irqrouter_init_sysfs+0x0/0x33() returned 0.
initcall 0xc061fb0b ran for 0 msecs: irqrouter_init_sysfs+0x0/0x33()
Calling initcall 0xc061fc81: acpi_processor_init+0x0/0xa4()
initcall 0xc061fc81: acpi_processor_init+0x0/0xa4() returned 0.
initcall 0xc061fc81 ran for 0 msecs: acpi_processor_init+0x0/0xa4()
Calling initcall 0xc0620669: acpi_container_init+0x0/0x45()
initcall 0xc0620669: acpi_container_init+0x0/0x45() returned 0.
initcall 0xc0620669 ran for 5 msecs: acpi_container_init+0x0/0x45()
Calling initcall 0xc06206ae: acpi_thermal_init+0x0/0x51()
ACPI: Thermal Zone [THRM] (40 C)
initcall 0xc06206ae: acpi_thermal_init+0x0/0x51() returned 0.
initcall 0xc06206ae ran for 3 msecs: acpi_thermal_init+0x0/0x51()
Calling initcall 0xc0620eca: rand_initialize+0x0/0x25()
initcall 0xc0620eca: rand_initialize+0x0/0x25() returned 0.
initcall 0xc0620eca ran for 0 msecs: rand_initialize+0x0/0x25()
Calling initcall 0xc0620f39: tty_init+0x0/0x1c9()
initcall 0xc0620f39: tty_init+0x0/0x1c9() returned 0.
initcall 0xc0620f39 ran for 2 msecs: tty_init+0x0/0x1c9()
Calling initcall 0xc0621102: pty_init+0x0/0x20f()
initcall 0xc0621102: pty_init+0x0/0x20f() returned 0.
initcall 0xc0621102 ran for 0 msecs: pty_init+0x0/0x20f()
Calling initcall 0xc06218be: hvc_lguest_init+0x0/0xf()
initcall 0xc06218be: hvc_lguest_init+0x0/0xf() returned 0.
initcall 0xc06218be ran for 0 msecs: hvc_lguest_init+0x0/0xf()
Calling initcall 0xc06218fe: hvc_init+0x0/0xe2()
initcall 0xc06218fe: hvc_init+0x0/0xe2() returned 0.
initcall 0xc06218fe ran for 0 msecs: hvc_init+0x0/0xe2()
Calling initcall 0xc06219e0: raw_init+0x0/0xc9()
initcall 0xc06219e0: raw_init+0x0/0xc9() returned 0.
initcall 0xc06219e0 ran for 0 msecs: raw_init+0x0/0xc9()
Calling initcall 0xc0621aa9: rtc_init+0x0/0x1bf()
Real Time Clock Driver v1.12ac
initcall 0xc0621aa9: rtc_init+0x0/0x1bf() returned 0.
initcall 0xc0621aa9 ran for 2 msecs: rtc_init+0x0/0x1bf()
Calling initcall 0xc0621c68: agp_init+0x0/0x2f()
Linux agpgart interface v0.102 (c) Dave Jones
initcall 0xc0621c68: agp_init+0x0/0x2f() returned 0.
initcall 0xc0621c68 ran for 3 msecs: agp_init+0x0/0x2f()
Calling initcall 0xc0621cfb: agp_ali_init+0x0/0x24()
initcall 0xc0621cfb: agp_ali_init+0x0/0x24() returned 0.
initcall 0xc0621cfb ran for 0 msecs: agp_ali_init+0x0/0x24()
Calling initcall 0xc0621d1f: agp_ati_init+0x0/0x24()
initcall 0xc0621d1f: agp_ati_init+0x0/0x24() returned 0.
initcall 0xc0621d1f ran for 0 msecs: agp_ati_init+0x0/0x24()
Calling initcall 0xc0621d43: agp_amdk7_init+0x0/0x24()
initcall 0xc0621d43: agp_amdk7_init+0x0/0x24() returned 0.
initcall 0xc0621d43 ran for 0 msecs: agp_amdk7_init+0x0/0x24()
Calling initcall 0xc0621d67: agp_amd64_init+0x0/0xa7()
initcall 0xc0621d67: agp_amd64_init+0x0/0xa7() returned 0.
initcall 0xc0621d67 ran for 0 msecs: agp_amd64_init+0x0/0xa7()
Calling initcall 0xc0621e0e: agp_efficeon_init+0x0/0x39()
initcall 0xc0621e0e: agp_efficeon_init+0x0/0x39() returned 0.
initcall 0xc0621e0e ran for 0 msecs: agp_efficeon_init+0x0/0x39()
Calling initcall 0xc0621e47: agp_intel_init+0x0/0x31()
agpgart: suspend/resume problematic: resume with 3D/DRI active may lockup X.Org
on some chipset/BIOS combos (see DEBUG_AGP_PM in intel-agp.c)
initcall 0xc0621e47: agp_intel_init+0x0/0x31() returned 0.
initcall 0xc0621e47 ran for 11 msecs: agp_intel_init+0x0/0x31()
Calling initcall 0xc0621e78: agp_nvidia_init+0x0/0x24()
initcall 0xc0621e78: agp_nvidia_init+0x0/0x24() returned 0.
initcall 0xc0621e78 ran for 0 msecs: agp_nvidia_init+0x0/0x24()
Calling initcall 0xc0621e9c: agp_sis_init+0x0/0x24()
initcall 0xc0621e9c: agp_sis_init+0x0/0x24() returned 0.
initcall 0xc0621e9c ran for 0 msecs: agp_sis_init+0x0/0x24()
Calling initcall 0xc0621ec0: agp_serverworks_init+0x0/0x24()
initcall 0xc0621ec0: agp_serverworks_init+0x0/0x24() returned 0.
initcall 0xc0621ec0 ran for 0 msecs: agp_serverworks_init+0x0/0x24()
Calling initcall 0xc0621ee4: agp_via_init+0x0/0x24()
initcall 0xc0621ee4: agp_via_init+0x0/0x24() returned 0.
initcall 0xc0621ee4 ran for 0 msecs: agp_via_init+0x0/0x24()
Calling initcall 0xc0621f08: drm_core_init+0x0/0x12d()
[drm] Initialized drm 1.1.0 20060810
initcall 0xc0621f08: drm_core_init+0x0/0x12d() returned 0.
initcall 0xc0621f08 ran for 3 msecs: drm_core_init+0x0/0x12d()
Calling initcall 0xc0622035: i810_init+0x0/0x19()
initcall 0xc0622035: i810_init+0x0/0x19() returned 0.
initcall 0xc0622035 ran for 0 msecs: i810_init+0x0/0x19()
Calling initcall 0xc062204e: i915_init+0x0/0x19()
initcall 0xc062204e: i915_init+0x0/0x19() returned 0.
initcall 0xc062204e ran for 0 msecs: i915_init+0x0/0x19()
Calling initcall 0xc06223e9: serial8250_init+0x0/0x103()
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
initcall 0xc06223e9: serial8250_init+0x0/0x103() returned 0.
initcall 0xc06223e9 ran for 6 msecs: serial8250_init+0x0/0x103()
Calling initcall 0xc06224ec: serial8250_pci_init+0x0/0x16()
initcall 0xc06224ec: serial8250_pci_init+0x0/0x16() returned 0.
initcall 0xc06224ec ran for 0 msecs: serial8250_pci_init+0x0/0x16()
Calling initcall 0xc0622aeb: isa_bus_init+0x0/0x33()
initcall 0xc0622aeb: isa_bus_init+0x0/0x33() returned 0.
initcall 0xc0622aeb ran for 0 msecs: isa_bus_init+0x0/0x33()
Calling initcall 0xc0622b84: topology_sysfs_init+0x0/0x48()
initcall 0xc0622b84: topology_sysfs_init+0x0/0x48() returned 0.
initcall 0xc0622b84 ran for 0 msecs: topology_sysfs_init+0x0/0x48()
Calling initcall 0xc0622bcc: rd_init+0x0/0x18d()
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
initcall 0xc0622bcc: rd_init+0x0/0x18d() returned 0.
initcall 0xc0622bcc ran for 6 msecs: rd_init+0x0/0x18d()
Calling initcall 0xc062326a: cpqarray_init+0x0/0x23a()
Compaq SMART2 Driver (v 2.6.0)
initcall 0xc062326a: cpqarray_init+0x0/0x23a() returned 0.
initcall 0xc062326a ran for 2 msecs: cpqarray_init+0x0/0x23a()
Calling initcall 0xc06237b2: pkt_init+0x0/0x159()
initcall 0xc06237b2: pkt_init+0x0/0x159() returned 0.
initcall 0xc06237b2 ran for 0 msecs: pkt_init+0x0/0x159()
Calling initcall 0xc062390b: lguestblk_init+0x0/0xf()
initcall 0xc062390b: lguestblk_init+0x0/0xf() returned 0.
initcall 0xc062390b ran for 0 msecs: lguestblk_init+0x0/0xf()
Calling initcall 0xc062391a: e1000_init_module+0x0/0x80()
Intel(R) PRO/1000 Network Driver - version 7.3.20-k2-NAPI
Copyright (c) 1999-2006 Intel Corporation.
initcall 0xc062391a: e1000_init_module+0x0/0x80() returned 0.
initcall 0xc062391a ran for 8 msecs: e1000_init_module+0x0/0x80()
Calling initcall 0xc062399a: e100_init_module+0x0/0x5a()
e100: Intel(R) PRO/100 Network Driver, 3.5.17-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
initcall 0xc062399a: e100_init_module+0x0/0x5a() returned 0.
initcall 0xc062399a ran for 8 msecs: e100_init_module+0x0/0x5a()
Calling initcall 0xc06239f4: tg3_init+0x0/0x16()
initcall 0xc06239f4: tg3_init+0x0/0x16() returned 0.
initcall 0xc06239f4 ran for 0 msecs: tg3_init+0x0/0x16()
Calling initcall 0xc0623a0a: skge_init_module+0x0/0x16()
initcall 0xc0623a0a: skge_init_module+0x0/0x16() returned 0.
initcall 0xc0623a0a ran for 0 msecs: skge_init_module+0x0/0x16()
Calling initcall 0xc0623a61: net_olddevs_init+0x0/0x89()
initcall 0xc0623a61: net_olddevs_init+0x0/0x89() returned 0.
initcall 0xc0623a61 ran for 0 msecs: net_olddevs_init+0x0/0x89()
Calling initcall 0xc0623aea: loopback_init+0x0/0xf()
initcall 0xc0623aea: loopback_init+0x0/0xf() returned 0.
initcall 0xc0623aea ran for 0 msecs: loopback_init+0x0/0xf()
Calling initcall 0xc0623af9: init_nic+0x0/0x2c()
forcedeth.c: Reverse Engineered nForce ethernet driver. Version 0.60.
ACPI: PCI Interrupt Link [APCH] enabled at IRQ 23
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [APCH] -> GSI 23 (level, low) -> IRQ 16
PCI: Setting latency timer of device 0000:00:0a.0 to 64
forcedeth: using HIGHDMA
eth0: forcedeth.c: subsystem: 01043:8141 bound to 0000:00:0a.0
initcall 0xc0623af9: init_nic+0x0/0x2c() returned 0.
initcall 0xc0623af9 ran for 518 msecs: init_nic+0x0/0x2c()
Calling initcall 0xc0623b25: rtl8139_init_module+0x0/0x16()
8139too Fast Ethernet driver 0.9.28
ACPI: PCI Interrupt Link [APC2] enabled at IRQ 17
ACPI: PCI Interrupt 0000:05:07.0[A] -> Link [APC2] -> GSI 17 (level, low) -> IRQ 17
eth1: RealTek RTL8139 at 0xf881c000, 00:c0:df:03:68:5d, IRQ 17
eth1: Identified 8139 chip type 'RTL-8139B'
initcall 0xc0623b25: rtl8139_init_module+0x0/0x16() returned 0.
initcall 0xc0623b25 ran for 23 msecs: rtl8139_init_module+0x0/0x16()
Calling initcall 0xc0623b3b: rtl8169_init_module+0x0/0x16()
initcall 0xc0623b3b: rtl8169_init_module+0x0/0x16() returned 0.
initcall 0xc0623b3b ran for 0 msecs: rtl8169_init_module+0x0/0x16()
Calling initcall 0xc02bbeb3: init_netconsole+0x0/0x67()
netconsole: not configured, aborting
initcall 0xc02bbeb3: init_netconsole+0x0/0x67() returned 0.
initcall 0xc02bbeb3 ran for 3 msecs: init_netconsole+0x0/0x67()
Calling initcall 0xc0623b51: lguestnet_init+0x0/0xf()
initcall 0xc0623b51: lguestnet_init+0x0/0xf() returned 0.
initcall 0xc0623b51 ran for 0 msecs: lguestnet_init+0x0/0xf()
Calling initcall 0xc0623dbb: spi_transport_init+0x0/0x27()
initcall 0xc0623dbb: spi_transport_init+0x0/0x27() returned 0.
initcall 0xc0623dbb ran for 0 msecs: spi_transport_init+0x0/0x27()
Calling initcall 0xc0623de2: sas_transport_init+0x0/0x9f()
initcall 0xc0623de2: sas_transport_init+0x0/0x9f() returned 0.
initcall 0xc0623de2 ran for 0 msecs: sas_transport_init+0x0/0x9f()
Calling initcall 0xc0623e81: sas_class_init+0x0/0x3d()
initcall 0xc0623e81: sas_class_init+0x0/0x3d() returned 0.
initcall 0xc0623e81 ran for 0 msecs: sas_class_init+0x0/0x3d()
Calling initcall 0xc0623ebe: ahc_linux_init+0x0/0x5c()
initcall 0xc0623ebe: ahc_linux_init+0x0/0x5c() returned 0.
initcall 0xc0623ebe ran for 0 msecs: ahc_linux_init+0x0/0x5c()
Calling initcall 0xc0623f1a: ahd_linux_init+0x0/0x6e()
initcall 0xc0623f1a: ahd_linux_init+0x0/0x6e() returned 0.
initcall 0xc0623f1a ran for 0 msecs: ahd_linux_init+0x0/0x6e()
Calling initcall 0xc0623f88: aic94xx_init+0x0/0x12e()
aic94xx: Adaptec aic94xx SAS/SATA driver version 1.0.3 loaded
initcall 0xc0623f88: aic94xx_init+0x0/0x12e() returned 0.
initcall 0xc0623f88 ran for 5 msecs: aic94xx_init+0x0/0x12e()
Calling initcall 0xc06240b6: init_sd+0x0/0xd6()
initcall 0xc06240b6: init_sd+0x0/0xd6() returned 0.
initcall 0xc06240b6 ran for 0 msecs: init_sd+0x0/0xd6()
Calling initcall 0xc062418c: init_sr+0x0/0x22()
initcall 0xc062418c: init_sr+0x0/0x22() returned 0.
initcall 0xc062418c ran for 0 msecs: init_sr+0x0/0x22()
Calling initcall 0xc06241ae: init_sg+0x0/0x12a()
initcall 0xc06241ae: init_sg+0x0/0x12a() returned 0.
initcall 0xc06241ae ran for 0 msecs: init_sg+0x0/0x12a()
Calling initcall 0xc06242d8: init_ch_module+0x0/0x90()
SCSI Media Changer driver v0.25
initcall 0xc06242d8: init_ch_module+0x0/0x90() returned 0.
initcall 0xc06242d8 ran for 2 msecs: init_ch_module+0x0/0x90()
Calling initcall 0xc06243d4: ahci_init+0x0/0x16()
initcall 0xc06243d4: ahci_init+0x0/0x16() returned 0.
initcall 0xc06243d4 ran for 0 msecs: ahci_init+0x0/0x16()
Calling initcall 0xc06243ea: k2_sata_init+0x0/0x16()
initcall 0xc06243ea: k2_sata_init+0x0/0x16() returned 0.
initcall 0xc06243ea ran for 0 msecs: k2_sata_init+0x0/0x16()
Calling initcall 0xc0624400: piix_init+0x0/0x27()
initcall 0xc0624400: piix_init+0x0/0x27() returned 0.
initcall 0xc0624400 ran for 0 msecs: piix_init+0x0/0x27()
Calling initcall 0xc0624427: pdc_ata_init+0x0/0x16()
initcall 0xc0624427: pdc_ata_init+0x0/0x16() returned 0.
initcall 0xc0624427 ran for 0 msecs: pdc_ata_init+0x0/0x16()
Calling initcall 0xc062443d: qs_ata_init+0x0/0x16()
initcall 0xc062443d: qs_ata_init+0x0/0x16() returned 0.
initcall 0xc062443d ran for 0 msecs: qs_ata_init+0x0/0x16()
Calling initcall 0xc0624453: sil_init+0x0/0x16()
initcall 0xc0624453: sil_init+0x0/0x16() returned 0.
initcall 0xc0624453 ran for 0 msecs: sil_init+0x0/0x16()
Calling initcall 0xc0624469: sil24_init+0x0/0x16()
initcall 0xc0624469: sil24_init+0x0/0x16() returned 0.
initcall 0xc0624469 ran for 0 msecs: sil24_init+0x0/0x16()
Calling initcall 0xc062447f: svia_init+0x0/0x16()
initcall 0xc062447f: svia_init+0x0/0x16() returned 0.
initcall 0xc062447f ran for 0 msecs: svia_init+0x0/0x16()
Calling initcall 0xc0624495: vsc_sata_init+0x0/0x16()
initcall 0xc0624495: vsc_sata_init+0x0/0x16() returned 0.
initcall 0xc0624495 ran for 0 msecs: vsc_sata_init+0x0/0x16()
Calling initcall 0xc06244ab: sis_init+0x0/0x16()
initcall 0xc06244ab: sis_init+0x0/0x16() returned 0.
initcall 0xc06244ab ran for 0 msecs: sis_init+0x0/0x16()
Calling initcall 0xc06244c1: pdc_sata_init+0x0/0x16()
initcall 0xc06244c1: pdc_sata_init+0x0/0x16() returned 0.
initcall 0xc06244c1 ran for 0 msecs: pdc_sata_init+0x0/0x16()
Calling initcall 0xc06244d7: nv_init+0x0/0x16()
initcall 0xc06244d7: nv_init+0x0/0x16() returned 0.
initcall 0xc06244d7 ran for 0 msecs: nv_init+0x0/0x16()
Calling initcall 0xc06244ed: uli_init+0x0/0x16()
initcall 0xc06244ed: uli_init+0x0/0x16() returned 0.
initcall 0xc06244ed ran for 0 msecs: uli_init+0x0/0x16()
Calling initcall 0xc0624503: mv_init+0x0/0x16()
initcall 0xc0624503: mv_init+0x0/0x16() returned 0.
initcall 0xc0624503 ran for 0 msecs: mv_init+0x0/0x16()
Calling initcall 0xc0624519: adma_ata_init+0x0/0x16()
initcall 0xc0624519: adma_ata_init+0x0/0x16() returned 0.
initcall 0xc0624519 ran for 0 msecs: adma_ata_init+0x0/0x16()
Calling initcall 0xc062452f: ali_init+0x0/0x16()
initcall 0xc062452f: ali_init+0x0/0x16() returned 0.
initcall 0xc062452f ran for 0 msecs: ali_init+0x0/0x16()
Calling initcall 0xc0624545: amd_init+0x0/0x16()
pata_amd 0000:00:06.0: version 0.3.8
PCI: Setting latency timer of device 0000:00:06.0 to 64
scsi0 : pata_amd
scsi1 : pata_amd
ata1: PATA max UDMA/133 cmd 0x000101f0 ctl 0x000103f6 bmdma 0x0001f000 irq 14
ata2: PATA max UDMA/133 cmd 0x00010170 ctl 0x00010376 bmdma 0x0001f008 irq 15
ata1.00: ata_hpa_resize 1: sectors = 78177792, hpa_sectors = 78177792
ata1.00: ATA-5: MAXTOR 6L040J2, AR1.0500, max UDMA/133
ata1.00: 78177792 sectors, multi 1: LBA
ata1.01: ata_hpa_resize 1: sectors = 156301488, hpa_sectors = 156301488
ata1.01: ATA-6: ST380011A, 3.06, max UDMA/100
ata1.01: 156301488 sectors, multi 1: LBA48
ata1.00: ata_hpa_resize 1: sectors = 78177792, hpa_sectors = 78177792
ata1.00: configured for UDMA/133
ata1.01: ata_hpa_resize 1: sectors = 156301488, hpa_sectors = 156301488
ata1.01: configured for UDMA/100
ATA: abnormal status 0x38 on port 0x00010177
scsi 0:0:0:0: Direct-Access ATA MAXTOR 6L040J2 AR1. PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 78177792 512-byte hardware sectors (40027 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:0:0: [sda] 78177792 512-byte hardware sectors (40027 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sda: sda1 sda2 sda3 sda4 < sda5 >
sd 0:0:0:0: [sda] Attached SCSI disk
sd 0:0:0:0: Attached scsi generic sg0 type 0
scsi 0:0:1:0: Direct-Access ATA ST380011A 3.06 PQ: 0 ANSI: 5
sd 0:0:1:0: [sdb] 156301488 512-byte hardware sectors (80026 MB)
sd 0:0:1:0: [sdb] Write Protect is off
sd 0:0:1:0: [sdb] Mode Sense: 00 3a 00 00
sd 0:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:1:0: [sdb] 156301488 512-byte hardware sectors (80026 MB)
sd 0:0:1:0: [sdb] Write Protect is off
sd 0:0:1:0: [sdb] Mode Sense: 00 3a 00 00
sd 0:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sdb: sdb1 sdb2 sdb3 < sdb5 >
sd 0:0:1:0: [sdb] Attached SCSI disk
sd 0:0:1:0: Attached scsi generic sg1 type 0
initcall 0xc0624545: amd_init+0x0/0x16() returned 0.
initcall 0xc0624545 ran for 662 msecs: amd_init+0x0/0x16()
Calling initcall 0xc062455b: artop_init+0x0/0x16()
initcall 0xc062455b: artop_init+0x0/0x16() returned 0.
initcall 0xc062455b ran for 0 msecs: artop_init+0x0/0x16()
Calling initcall 0xc0624571: atiixp_init+0x0/0x16()
initcall 0xc0624571: atiixp_init+0x0/0x16() returned 0.
initcall 0xc0624571 ran for 0 msecs: atiixp_init+0x0/0x16()
Calling initcall 0xc0624587: cmd64x_init+0x0/0x16()
initcall 0xc0624587: cmd64x_init+0x0/0x16() returned 0.
initcall 0xc0624587 ran for 0 msecs: cmd64x_init+0x0/0x16()
Calling initcall 0xc062459d: cs5520_init+0x0/0x16()
initcall 0xc062459d: cs5520_init+0x0/0x16() returned 0.
initcall 0xc062459d ran for 0 msecs: cs5520_init+0x0/0x16()
Calling initcall 0xc06245b3: cs5530_init+0x0/0x16()
initcall 0xc06245b3: cs5530_init+0x0/0x16() returned 0.
initcall 0xc06245b3 ran for 0 msecs: cs5530_init+0x0/0x16()
Calling initcall 0xc06245c9: cs5535_init+0x0/0x16()
initcall 0xc06245c9: cs5535_init+0x0/0x16() returned 0.
initcall 0xc06245c9 ran for 0 msecs: cs5535_init+0x0/0x16()
Calling initcall 0xc06245df: cy82c693_init+0x0/0x16()
initcall 0xc06245df: cy82c693_init+0x0/0x16() returned 0.
initcall 0xc06245df ran for 0 msecs: cy82c693_init+0x0/0x16()
Calling initcall 0xc06245f5: efar_init+0x0/0x16()
initcall 0xc06245f5: efar_init+0x0/0x16() returned 0.
initcall 0xc06245f5 ran for 0 msecs: efar_init+0x0/0x16()
Calling initcall 0xc062460b: hpt36x_init+0x0/0x16()
initcall 0xc062460b: hpt36x_init+0x0/0x16() returned 0.
initcall 0xc062460b ran for 0 msecs: hpt36x_init+0x0/0x16()
Calling initcall 0xc0624621: hpt37x_init+0x0/0x16()
initcall 0xc0624621: hpt37x_init+0x0/0x16() returned 0.
initcall 0xc0624621 ran for 0 msecs: hpt37x_init+0x0/0x16()
Calling initcall 0xc0624637: hpt3x2n_init+0x0/0x16()
initcall 0xc0624637: hpt3x2n_init+0x0/0x16() returned 0.
initcall 0xc0624637 ran for 0 msecs: hpt3x2n_init+0x0/0x16()
Calling initcall 0xc062464d: hpt3x3_init+0x0/0x16()
initcall 0xc062464d: hpt3x3_init+0x0/0x16() returned 0.
initcall 0xc062464d ran for 0 msecs: hpt3x3_init+0x0/0x16()
Calling initcall 0xc0624663: it821x_init+0x0/0x16()
initcall 0xc0624663: it821x_init+0x0/0x16() returned 0.
initcall 0xc0624663 ran for 0 msecs: it821x_init+0x0/0x16()
Calling initcall 0xc0624679: jmicron_init+0x0/0x16()
initcall 0xc0624679: jmicron_init+0x0/0x16() returned 0.
initcall 0xc0624679 ran for 0 msecs: jmicron_init+0x0/0x16()
Calling initcall 0xc062468f: netcell_init+0x0/0x16()
initcall 0xc062468f: netcell_init+0x0/0x16() returned 0.
initcall 0xc062468f ran for 0 msecs: netcell_init+0x0/0x16()
Calling initcall 0xc06246a5: ns87410_init+0x0/0x16()
initcall 0xc06246a5: ns87410_init+0x0/0x16() returned 0.
initcall 0xc06246a5 ran for 0 msecs: ns87410_init+0x0/0x16()
Calling initcall 0xc06246bb: opti_init+0x0/0x16()
initcall 0xc06246bb: opti_init+0x0/0x16() returned 0.
initcall 0xc06246bb ran for 0 msecs: opti_init+0x0/0x16()
Calling initcall 0xc06246d1: optidma_init+0x0/0x16()
initcall 0xc06246d1: optidma_init+0x0/0x16() returned 0.
initcall 0xc06246d1 ran for 0 msecs: optidma_init+0x0/0x16()
Calling initcall 0xc06246e7: marvell_init+0x0/0x16()
initcall 0xc06246e7: marvell_init+0x0/0x16() returned 0.
initcall 0xc06246e7 ran for 0 msecs: marvell_init+0x0/0x16()
Calling initcall 0xc06246fd: mpiix_init+0x0/0x16()
initcall 0xc06246fd: mpiix_init+0x0/0x16() returned 0.
initcall 0xc06246fd ran for 0 msecs: mpiix_init+0x0/0x16()
Calling initcall 0xc0624713: oldpiix_init+0x0/0x16()
initcall 0xc0624713: oldpiix_init+0x0/0x16() returned 0.
initcall 0xc0624713 ran for 0 msecs: oldpiix_init+0x0/0x16()
Calling initcall 0xc0624729: pdc2027x_init+0x0/0x16()
initcall 0xc0624729: pdc2027x_init+0x0/0x16() returned 0.
initcall 0xc0624729 ran for 0 msecs: pdc2027x_init+0x0/0x16()
Calling initcall 0xc062473f: pdc202xx_init+0x0/0x16()
initcall 0xc062473f: pdc202xx_init+0x0/0x16() returned 0.
initcall 0xc062473f ran for 0 msecs: pdc202xx_init+0x0/0x16()
Calling initcall 0xc06248d3: qdi_init+0x0/0x233()
initcall 0xc06248d3: qdi_init+0x0/0x233() returned -19.
initcall 0xc06248d3 ran for 0 msecs: qdi_init+0x0/0x233()
Calling initcall 0xc0624b06: radisys_init+0x0/0x16()
initcall 0xc0624b06: radisys_init+0x0/0x16() returned 0.
initcall 0xc0624b06 ran for 0 msecs: radisys_init+0x0/0x16()
Calling initcall 0xc0624b1c: rz1000_init+0x0/0x16()
initcall 0xc0624b1c: rz1000_init+0x0/0x16() returned 0.
initcall 0xc0624b1c ran for 0 msecs: rz1000_init+0x0/0x16()
Calling initcall 0xc0624b32: sc1200_init+0x0/0x16()
initcall 0xc0624b32: sc1200_init+0x0/0x16() returned 0.
initcall 0xc0624b32 ran for 0 msecs: sc1200_init+0x0/0x16()
Calling initcall 0xc0624b48: serverworks_init+0x0/0x16()
initcall 0xc0624b48: serverworks_init+0x0/0x16() returned 0.
initcall 0xc0624b48 ran for 0 msecs: serverworks_init+0x0/0x16()
Calling initcall 0xc0624b5e: sil680_init+0x0/0x16()
initcall 0xc0624b5e: sil680_init+0x0/0x16() returned 0.
initcall 0xc0624b5e ran for 0 msecs: sil680_init+0x0/0x16()
Calling initcall 0xc0624b74: via_init+0x0/0x16()
initcall 0xc0624b74: via_init+0x0/0x16() returned 0.
initcall 0xc0624b74 ran for 0 msecs: via_init+0x0/0x16()
Calling initcall 0xc0624b8a: sl82c105_init+0x0/0x16()
initcall 0xc0624b8a: sl82c105_init+0x0/0x16() returned 0.
initcall 0xc0624b8a ran for 0 msecs: sl82c105_init+0x0/0x16()
Calling initcall 0xc0624ba0: winbond_init+0x0/0x27b()
initcall 0xc0624ba0: winbond_init+0x0/0x27b() returned -19.
initcall 0xc0624ba0 ran for 0 msecs: winbond_init+0x0/0x27b()
Calling initcall 0xc0624e1b: sis_init+0x0/0x16()
initcall 0xc0624e1b: sis_init+0x0/0x16() returned 0.
initcall 0xc0624e1b ran for 0 msecs: sis_init+0x0/0x16()
Calling initcall 0xc0624e31: triflex_init+0x0/0x16()
initcall 0xc0624e31: triflex_init+0x0/0x16() returned 0.
initcall 0xc0624e31 ran for 0 msecs: triflex_init+0x0/0x16()
Calling initcall 0xc0624e47: ata_generic_init+0x0/0x16()
initcall 0xc0624e47: ata_generic_init+0x0/0x16() returned 0.
initcall 0xc0624e47 ran for 0 msecs: ata_generic_init+0x0/0x16()
Calling initcall 0xc0624e5d: fusion_init+0x0/0xdd()
Fusion MPT base driver 3.04.04
Copyright (c) 1999-2007 LSI Logic Corporation
initcall 0xc0624e5d: fusion_init+0x0/0xdd() returned 0.
initcall 0xc0624e5d ran for 6 msecs: fusion_init+0x0/0xdd()
Calling initcall 0xc0624f3a: mptspi_init+0x0/0xab()
Fusion MPT SPI Host driver 3.04.04
initcall 0xc0624f3a: mptspi_init+0x0/0xab() returned 0.
initcall 0xc0624f3a ran for 3 msecs: mptspi_init+0x0/0xab()
Calling initcall 0xc0624fe5: mptctl_init+0x0/0xf1()
Fusion MPT misc device (ioctl) driver 3.04.04
mptctl: Registered with Fusion MPT base driver
mptctl: /dev/mptctl @ (major,minor=10,220)
initcall 0xc0624fe5: mptctl_init+0x0/0xf1() returned 0.
initcall 0xc0624fe5 ran for 11 msecs: mptctl_init+0x0/0xf1()
Calling initcall 0xc06250d6: cdrom_init+0x0/0xc()
initcall 0xc06250d6: cdrom_init+0x0/0xc() returned 0.
initcall 0xc06250d6 ran for 0 msecs: cdrom_init+0x0/0xc()
Calling initcall 0xc06252b3: mon_init+0x0/0xe2()
usbmon: debugfs is not available
initcall 0xc06252b3: mon_init+0x0/0xe2() returned -19.
initcall 0xc06252b3 ran for 2 msecs: mon_init+0x0/0xe2()
Calling initcall 0xc0625440: ehci_hcd_init+0x0/0x16()
ACPI: PCI Interrupt Link [APCL] enabled at IRQ 22
ACPI: PCI Interrupt 0000:00:02.1[B] -> Link [APCL] -> GSI 22 (level, low) -> IRQ 18
PCI: Setting latency timer of device 0000:00:02.1 to 64
ehci_hcd 0000:00:02.1: EHCI Host Controller
ehci_hcd 0000:00:02.1: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:02.1: debug port 1
PCI: cache line size of 64 is not supported by device 0000:00:02.1
ehci_hcd 0000:00:02.1: irq 18, io mem 0xfeb00000
ehci_hcd 0000:00:02.1: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: new device found, idVendor=0000, idProduct=0000
usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: EHCI Host Controller
usb usb1: Manufacturer: Linux 2.6.22-rc3-mm1-v16-rc2 ehci_hcd
usb usb1: SerialNumber: 0000:00:02.1
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 10 ports detected
initcall 0xc0625440: ehci_hcd_init+0x0/0x16() returned 0.
initcall 0xc0625440 ran for 171 msecs: ehci_hcd_init+0x0/0x16()
Calling initcall 0xc0625456: ohci_hcd_mod_init+0x0/0x3e()
ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
ACPI: PCI Interrupt Link [APCF] enabled at IRQ 21
ACPI: PCI Interrupt 0000:00:02.0[A] -> Link [APCF] -> GSI 21 (level, low) -> IRQ 19
PCI: Setting latency timer of device 0000:00:02.0 to 64
ohci_hcd 0000:00:02.0: OHCI Host Controller
ohci_hcd 0000:00:02.0: new USB bus registered, assigned bus number 2
ohci_hcd 0000:00:02.0: irq 19, io mem 0xda102000
usb usb2: new device found, idVendor=0000, idProduct=0000
usb usb2: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: OHCI Host Controller
usb usb2: Manufacturer: Linux 2.6.22-rc3-mm1-v16-rc2 ohci_hcd
usb usb2: SerialNumber: 0000:00:02.0
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 10 ports detected
initcall 0xc0625456: ohci_hcd_mod_init+0x0/0x3e() returned 0.
initcall 0xc0625456 ran for 212 msecs: ohci_hcd_mod_init+0x0/0x3e()
Calling initcall 0xc0625494: uhci_hcd_init+0x0/0x9f()
USB Universal Host Controller Interface driver v3.0
initcall 0xc0625494: uhci_hcd_init+0x0/0x9f() returned 0.
initcall 0xc0625494 ran for 4 msecs: uhci_hcd_init+0x0/0x9f()
Calling initcall 0xc06255c0: i8042_init+0x0/0x321()
PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
initcall 0xc06255c0: i8042_init+0x0/0x321() returned 0.
initcall 0xc06255c0 ran for 15 msecs: i8042_init+0x0/0x321()
Calling initcall 0xc06258e1: serport_init+0x0/0x2c()
initcall 0xc06258e1: serport_init+0x0/0x2c() returned 0.
initcall 0xc06258e1 ran for 0 msecs: serport_init+0x0/0x2c()
Calling initcall 0xc0625a0e: mousedev_init+0x0/0x52()
mice: PS/2 mouse device common for all mice
initcall 0xc0625a0e: mousedev_init+0x0/0x52() returned 0.
initcall 0xc0625a0e ran for 3 msecs: mousedev_init+0x0/0x52()
Calling initcall 0xc0625a60: evdev_init+0x0/0xf()
initcall 0xc0625a60: evdev_init+0x0/0xf() returned 0.
initcall 0xc0625a60 ran for 0 msecs: evdev_init+0x0/0xf()
Calling initcall 0xc0625a6f: atkbd_init+0x0/0x16()
initcall 0xc0625a6f: atkbd_init+0x0/0x16() returned 0.
initcall 0xc0625a6f ran for 0 msecs: atkbd_init+0x0/0x16()
Calling initcall 0xc0625a85: psmouse_init+0x0/0x59()
input: AT Translated Set 2 keyboard as /class/input/input0
initcall 0xc0625a85: psmouse_init+0x0/0x59() returned 0.
initcall 0xc0625a85 ran for 15 msecs: psmouse_init+0x0/0x59()
Calling initcall 0xc0625bae: md_init+0x0/0xd8()
initcall 0xc0625bae: md_init+0x0/0xd8() returned 0.
initcall 0xc0625bae ran for 0 msecs: md_init+0x0/0xd8()
Calling initcall 0xc0626115: init+0x0/0x331()
lguest: mapped switcher at ffc00000
initcall 0xc0626115: init+0x0/0x331() returned 0.
initcall 0xc0626115 ran for 3 msecs: init+0x0/0x331()
Calling initcall 0xc062658f: cpufreq_stats_init+0x0/0x7d()
initcall 0xc062658f: cpufreq_stats_init+0x0/0x7d() returned 0.
initcall 0xc062658f ran for 0 msecs: cpufreq_stats_init+0x0/0x7d()
Calling initcall 0xc0627081: hid_init+0x0/0x7()
initcall 0xc0627081: hid_init+0x0/0x7() returned 0.
initcall 0xc0627081 ran for 0 msecs: hid_init+0x0/0x7()
Calling initcall 0xc0627088: hid_init+0x0/0x5f()
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
initcall 0xc0627088: hid_init+0x0/0x5f() returned 0.
initcall 0xc0627088 ran for 12 msecs: hid_init+0x0/0x5f()
Calling initcall 0xc06270fd: init_soundcore+0x0/0x4d()
initcall 0xc06270fd: init_soundcore+0x0/0x4d() returned 0.
initcall 0xc06270fd ran for 0 msecs: init_soundcore+0x0/0x4d()
Calling initcall 0xc0627186: alsa_sound_init+0x0/0x7e()
Advanced Linux Sound Architecture Driver Version 1.0.14rc4 (Wed May 16 09:45:46 2007 UTC).
initcall 0xc0627186: alsa_sound_init+0x0/0x7e() returned 0.
initcall 0xc0627186 ran for 7 msecs: alsa_sound_init+0x0/0x7e()
Calling initcall 0xc062735e: alsa_hwdep_init+0x0/0x46()
initcall 0xc062735e: alsa_hwdep_init+0x0/0x46() returned 0.
initcall 0xc062735e ran for 0 msecs: alsa_hwdep_init+0x0/0x46()
Calling initcall 0xc06273a4: alsa_timer_init+0x0/0x140()
initcall 0xc06273a4: alsa_timer_init+0x0/0x140() returned 0.
initcall 0xc06273a4 ran for 0 msecs: alsa_timer_init+0x0/0x140()
Calling initcall 0xc06274e4: rtctimer_init+0x0/0xef()
initcall 0xc06274e4: rtctimer_init+0x0/0xef() returned 0.
initcall 0xc06274e4 ran for 0 msecs: rtctimer_init+0x0/0xef()
Calling initcall 0xc06275d3: alsa_pcm_init+0x0/0x4d()
initcall 0xc06275d3: alsa_pcm_init+0x0/0x4d() returned 0.
initcall 0xc06275d3 ran for 0 msecs: alsa_pcm_init+0x0/0x4d()
Calling initcall 0xc0627620: snd_mem_init+0x0/0x2f()
initcall 0xc0627620: snd_mem_init+0x0/0x2f() returned 0.
initcall 0xc0627620 ran for 0 msecs: snd_mem_init+0x0/0x2f()
Calling initcall 0xc062764f: alsa_rawmidi_init+0x0/0x7a()
initcall 0xc062764f: alsa_rawmidi_init+0x0/0x7a() returned 0.
initcall 0xc062764f ran for 0 msecs: alsa_rawmidi_init+0x0/0x7a()
Calling initcall 0xc06276c9: alsa_mixer_oss_init+0x0/0x30()
initcall 0xc06276c9: alsa_mixer_oss_init+0x0/0x30() returned 0.
initcall 0xc06276c9 ran for 0 msecs: alsa_mixer_oss_init+0x0/0x30()
Calling initcall 0xc06276f9: alsa_pcm_oss_init+0x0/0x84()
initcall 0xc06276f9: alsa_pcm_oss_init+0x0/0x84() returned 0.
initcall 0xc06276f9 ran for 0 msecs: alsa_pcm_oss_init+0x0/0x84()
Calling initcall 0xc062777d: alsa_seq_oss_init+0x0/0x152()
initcall 0xc062777d: alsa_seq_oss_init+0x0/0x152() returned 0.
initcall 0xc062777d ran for 0 msecs: alsa_seq_oss_init+0x0/0x152()
Calling initcall 0xc0627ac8: alsa_seq_init+0x0/0x37()
initcall 0xc0627ac8: alsa_seq_init+0x0/0x37() returned 0.
initcall 0xc0627ac8 ran for 0 msecs: alsa_seq_init+0x0/0x37()
Calling initcall 0xc0627d1a: alsa_seq_device_init+0x0/0x4e()
initcall 0xc0627d1a: alsa_seq_device_init+0x0/0x4e() returned 0.
initcall 0xc0627d1a ran for 0 msecs: alsa_seq_device_init+0x0/0x4e()
Calling initcall 0xc0627d68: alsa_seq_midi_event_init+0x0/0x7()
initcall 0xc0627d68: alsa_seq_midi_event_init+0x0/0x7() returned 0.
initcall 0xc0627d68 ran for 0 msecs: alsa_seq_midi_event_init+0x0/0x7()
Calling initcall 0xc0627eab: alsa_seq_dummy_init+0x0/0xaa()
initcall 0xc0627eab: alsa_seq_dummy_init+0x0/0xaa() returned 0.
initcall 0xc0627eab ran for 0 msecs: alsa_seq_dummy_init+0x0/0xaa()
Calling initcall 0xc0627f55: alsa_seq_midi_init+0x0/0x28()
initcall 0xc0627f55: alsa_seq_midi_init+0x0/0x28() returned 0.
initcall 0xc0627f55 ran for 0 msecs: alsa_seq_midi_init+0x0/0x28()
Calling initcall 0xc0627f7d: alsa_seq_midi_emul_init+0x0/0x7()
initcall 0xc0627f7d: alsa_seq_midi_emul_init+0x0/0x7() returned 0.
initcall 0xc0627f7d ran for 0 msecs: alsa_seq_midi_emul_init+0x0/0x7()
Calling initcall 0xc0627f84: alsa_virmidi_init+0x0/0x7()
initcall 0xc0627f84: alsa_virmidi_init+0x0/0x7() returned 0.
initcall 0xc0627f84 ran for 0 msecs: alsa_virmidi_init+0x0/0x7()
Calling initcall 0xc0627f8b: alsa_ac97_init+0x0/0x7()
initcall 0xc0627f8b: alsa_ac97_init+0x0/0x7() returned 0.
initcall 0xc0627f8b ran for 0 msecs: alsa_ac97_init+0x0/0x7()
Calling initcall 0xc0627f92: alsa_card_emu10k1_init+0x0/0x16()
initcall 0xc0627f92: alsa_card_emu10k1_init+0x0/0x16() returned 0.
initcall 0xc0627f92 ran for 0 msecs: alsa_card_emu10k1_init+0x0/0x16()
Calling initcall 0xc0627fa8: alsa_emu10k1_synth_init+0x0/0x19()
initcall 0xc0627fa8: alsa_emu10k1_synth_init+0x0/0x19() returned 0.
initcall 0xc0627fa8 ran for 0 msecs: alsa_emu10k1_synth_init+0x0/0x19()
Calling initcall 0xc0627fc1: alsa_card_emu10k1x_init+0x0/0x16()
initcall 0xc0627fc1: alsa_card_emu10k1x_init+0x0/0x16() returned 0.
initcall 0xc0627fc1 ran for 0 msecs: alsa_card_emu10k1x_init+0x0/0x16()
Calling initcall 0xc0627fd7: alsa_card_azx_init+0x0/0x16()
initcall 0xc0627fd7: alsa_card_azx_init+0x0/0x16() returned 0.
initcall 0xc0627fd7 ran for 0 msecs: alsa_card_azx_init+0x0/0x16()
Calling initcall 0xc0627fed: alsa_util_mem_init+0x0/0x7()
initcall 0xc0627fed: alsa_util_mem_init+0x0/0x7() returned 0.
initcall 0xc0627fed ran for 0 msecs: alsa_util_mem_init+0x0/0x7()
Calling initcall 0xc0627ff4: alsa_emux_init+0x0/0x7()
initcall 0xc0627ff4: alsa_emux_init+0x0/0x7() returned 0.
initcall 0xc0627ff4 ran for 0 msecs: alsa_emux_init+0x0/0x7()
Calling initcall 0xc062800a: alsa_sound_last_init+0x0/0x5a()
ALSA device list:
No soundcards found.
initcall 0xc062800a: alsa_sound_last_init+0x0/0x5a() returned 0.
initcall 0xc062800a ran for 3 msecs: alsa_sound_last_init+0x0/0x5a()
Calling initcall 0xc0629e1c: flow_cache_init+0x0/0x156()
initcall 0xc0629e1c: flow_cache_init+0x0/0x156() returned 0.
initcall 0xc0629e1c ran for 0 msecs: flow_cache_init+0x0/0x156()
Calling initcall 0xc0629ff6: llc_init+0x0/0x68()
initcall 0xc0629ff6: llc_init+0x0/0x68() returned 0.
initcall 0xc0629ff6 ran for 0 msecs: llc_init+0x0/0x68()
Calling initcall 0xc062a05e: snap_init+0x0/0x2c()
initcall 0xc062a05e: snap_init+0x0/0x2c() returned 0.
initcall 0xc062a05e ran for 0 msecs: snap_init+0x0/0x2c()
Calling initcall 0xc062a08a: rif_init+0x0/0x68()
initcall 0xc062a08a: rif_init+0x0/0x68() returned 0.
initcall 0xc062a08a ran for 0 msecs: rif_init+0x0/0x68()
Calling initcall 0xc062a1bb: blackhole_module_init+0x0/0xf()
initcall 0xc062a1bb: blackhole_module_init+0x0/0xf() returned 0.
initcall 0xc062a1bb ran for 0 msecs: blackhole_module_init+0x0/0xf()
Calling initcall 0xc062b3e8: init_syncookies+0x0/0x16()
initcall 0xc062b3e8: init_syncookies+0x0/0x16() returned 0.
initcall 0xc062b3e8 ran for 0 msecs: init_syncookies+0x0/0x16()
Calling initcall 0xc062b3fe: xfrm4_beet_init+0x0/0x14()
initcall 0xc062b3fe: xfrm4_beet_init+0x0/0x14() returned 0.
initcall 0xc062b3fe ran for 0 msecs: xfrm4_beet_init+0x0/0x14()
Calling initcall 0xc062b412: xfrm4_transport_init+0x0/0x14()
initcall 0xc062b412: xfrm4_transport_init+0x0/0x14() returned 0.
initcall 0xc062b412 ran for 0 msecs: xfrm4_transport_init+0x0/0x14()
Calling initcall 0xc062b426: xfrm4_tunnel_init+0x0/0x14()
initcall 0xc062b426: xfrm4_tunnel_init+0x0/0x14() returned 0.
initcall 0xc062b426 ran for 0 msecs: xfrm4_tunnel_init+0x0/0x14()
Calling initcall 0xc04326d8: ipv4_netfilter_init+0x0/0xf()
initcall 0xc04326d8: ipv4_netfilter_init+0x0/0xf() returned 0.
initcall 0xc04326d8 ran for 0 msecs: ipv4_netfilter_init+0x0/0xf()
Calling initcall 0xc062b43a: inet_diag_init+0x0/0x60()
initcall 0xc062b43a: inet_diag_init+0x0/0x60() returned 0.
initcall 0xc062b43a ran for 0 msecs: inet_diag_init+0x0/0x60()
Calling initcall 0xc062b49a: tcp_diag_init+0x0/0xf()
initcall 0xc062b49a: tcp_diag_init+0x0/0xf() returned 0.
initcall 0xc062b49a ran for 0 msecs: tcp_diag_init+0x0/0xf()
Calling initcall 0xc062b4a9: cubictcp_register+0x0/0x93()
TCP cubic registered
initcall 0xc062b4a9: cubictcp_register+0x0/0x93() returned 0.
initcall 0xc062b4a9 ran for 1 msecs: cubictcp_register+0x0/0x93()
Calling initcall 0xc062b6fa: xfrm_user_init+0x0/0x52()
Initializing XFRM netlink socket
initcall 0xc062b6fa: xfrm_user_init+0x0/0x52() returned 0.
initcall 0xc062b6fa ran for 2 msecs: xfrm_user_init+0x0/0x52()
Calling initcall 0xc062b74c: af_unix_init+0x0/0x64()
NET: Registered protocol family 1
initcall 0xc062b74c: af_unix_init+0x0/0x64() returned 0.
initcall 0xc062b74c ran for 2 msecs: af_unix_init+0x0/0x64()
Calling initcall 0xc062b7b0: packet_init+0x0/0x4c()
NET: Registered protocol family 17
initcall 0xc062b7b0: packet_init+0x0/0x4c() returned 0.
initcall 0xc062b7b0 ran for 2 msecs: packet_init+0x0/0x4c()
Calling initcall 0xc060e4e4: powernow_init+0x0/0x114()
initcall 0xc060e4e4: powernow_init+0x0/0x114() returned -19.
initcall 0xc060e4e4 ran for 0 msecs: powernow_init+0x0/0x114()
Calling initcall 0xc060ea62: longhaul_init+0x0/0x6b()
initcall 0xc060ea62: longhaul_init+0x0/0x6b() returned -19.
initcall 0xc060ea62 ran for 0 msecs: longhaul_init+0x0/0x6b()
Calling initcall 0xc060f9cb: acpi_cpufreq_init+0x0/0x8f()
initcall 0xc060f9cb: acpi_cpufreq_init+0x0/0x8f() returned -19.
initcall 0xc060f9cb ran for 0 msecs: acpi_cpufreq_init+0x0/0x8f()
Calling initcall 0xc060fa5a: centrino_init+0x0/0x9e()
initcall 0xc060fa5a: centrino_init+0x0/0x9e() returned -19.
initcall 0xc060fa5a ran for 0 msecs: centrino_init+0x0/0x9e()
Calling initcall 0xc061401e: init_lapic_nmi_sysfs+0x0/0x33()
initcall 0xc061401e: init_lapic_nmi_sysfs+0x0/0x33() returned 0.
initcall 0xc061401e ran for 0 msecs: init_lapic_nmi_sysfs+0x0/0x33()
Calling initcall 0xc0613e4f: check_nmi_watchdog+0x0/0x1a8()
Testing NMI watchdog ... CPU#0: NMI appears to be stuck (0->0)!
CPU#1: NMI appears to be stuck (0->0)!
initcall 0xc0613e4f: check_nmi_watchdog+0x0/0x1a8() returned -1.
initcall 0xc0613e4f ran for 27 msecs: check_nmi_watchdog+0x0/0x1a8()
initcall at 0xc0613e4f: check_nmi_watchdog+0x0/0x1a8(): returned with error code -1
Calling initcall 0xc06142b2: io_apic_bug_finalize+0x0/0x1a()
initcall 0xc06142b2: io_apic_bug_finalize+0x0/0x1a() returned 0.
initcall 0xc06142b2 ran for 0 msecs: io_apic_bug_finalize+0x0/0x1a()
Calling initcall 0xc0616b8f: print_ipi_mode+0x0/0x2d()
Using IPI Shortcut mode
initcall 0xc0616b8f: print_ipi_mode+0x0/0x2d() returned 0.
initcall 0xc0616b8f ran for 2 msecs: print_ipi_mode+0x0/0x2d()
Calling initcall 0xc061bbc1: revokefs_init+0x0/0x85()
initcall 0xc061bbc1: revokefs_init+0x0/0x85() returned 0.
initcall 0xc061bbc1 ran for 0 msecs: revokefs_init+0x0/0x85()
Calling initcall 0xc061d547: random32_reseed+0x0/0x4f()
initcall 0xc061d547: random32_reseed+0x0/0x4f() returned 0.
initcall 0xc061d547 ran for 0 msecs: random32_reseed+0x0/0x4f()
Calling initcall 0xc061db19: pci_sysfs_init+0x0/0x35()
initcall 0xc061db19: pci_sysfs_init+0x0/0x35() returned 0.
initcall 0xc061db19 ran for 0 msecs: pci_sysfs_init+0x0/0x35()
Calling initcall 0xc023c4ad: acpi_poweroff_init+0x0/0x4f()
initcall 0xc023c4ad: acpi_poweroff_init+0x0/0x4f() returned 0.
initcall 0xc023c4ad ran for 0 msecs: acpi_poweroff_init+0x0/0x4f()
Calling initcall 0xc0620ebc: seqgen_init+0x0/0xe()
initcall 0xc0620ebc: seqgen_init+0x0/0xe() returned 0.
initcall 0xc0620ebc ran for 0 msecs: seqgen_init+0x0/0xe()
Calling initcall 0xc0622600: early_uart_console_switch+0x0/0x7d()
initcall 0xc0622600: early_uart_console_switch+0x0/0x7d() returned 0.
initcall 0xc0622600 ran for 0 msecs: early_uart_console_switch+0x0/0x7d()
Calling initcall 0xc02c2847: scsi_complete_async_scans+0x0/0xe2()
initcall 0xc02c2847: scsi_complete_async_scans+0x0/0xe2() returned 0.
initcall 0xc02c2847 ran for 0 msecs: scsi_complete_async_scans+0x0/0xe2()
Calling initcall 0xc0628d39: pci_mmcfg_late_insert_resources+0x0/0x44()
initcall 0xc0628d39: pci_mmcfg_late_insert_resources+0x0/0x44() returned 0.
initcall 0xc0628d39 ran for 0 msecs: pci_mmcfg_late_insert_resources+0x0/0x44()
Calling initcall 0xc062abd1: tcp_congestion_default+0x0/0xf()
initcall 0xc062abd1: tcp_congestion_default+0x0/0xf() returned 0.
initcall 0xc062abd1 ran for 0 msecs: tcp_congestion_default+0x0/0xf()

2007-06-05 09:18:44

by Ingo Molnar

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


* Ingo Molnar <[email protected]> wrote:

> the NMI watchdog warning is a bit weird:
>
> Calling initcall 0xc0613e4f: check_nmi_watchdog+0x0/0x1a8()
> Testing NMI watchdog ... CPU#0: NMI appears to be stuck (0->0)!
> CPU#1: NMI appears to be stuck (0->0)!
> initcall 0xc0613e4f: check_nmi_watchdog+0x0/0x1a8() returned -1.
> initcall 0xc0613e4f ran for 27 msecs: check_nmi_watchdog+0x0/0x1a8()
>
> i'll test it in a minute with that turned off.

yeah, with nmi_watchdog=0 it works fine. nmi_watchdog=2 always worked on
this box so this is some new regression.

Ingo

2007-06-05 09:24:30

by Andrew Morton

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

On Tue, 5 Jun 2007 11:11:51 +0200 Ingo Molnar <[email protected]> wrote:

> hm, mm1 hangs during bootup on one of my boxes:
>
> Calling initcall 0xc0628d39: pci_mmcfg_late_insert_resources+0x0/0x44()
> initcall 0xc0628d39: pci_mmcfg_late_insert_resources+0x0/0x44() returned 0.
> initcall 0xc0628d39 ran for 0 msecs:
> pci_mmcfg_late_insert_resources+0x0/0x44()
> Calling initcall 0xc062abd1: tcp_congestion_default+0x0/0xf()
> initcall 0xc062abd1: tcp_congestion_default+0x0/0xf() returned 0.
> initcall 0xc062abd1 ran for 0 msecs: tcp_congestion_default+0x0/0xf()
>
> it usually hangs in different places.

In my experience that means that it wedged in a timer tick. Often the first
one.


> Full bootlog below. Same kernel
> bzImage boots fine on another box.
>
> the NMI watchdog warning is a bit weird:
>
> Calling initcall 0xc0613e4f: check_nmi_watchdog+0x0/0x1a8()
> Testing NMI watchdog ... CPU#0: NMI appears to be stuck (0->0)!
> CPU#1: NMI appears to be stuck (0->0)!
> initcall 0xc0613e4f: check_nmi_watchdog+0x0/0x1a8() returned -1.
> initcall 0xc0613e4f ran for 27 msecs: check_nmi_watchdog+0x0/0x1a8()
>
> i'll test it in a minute with that turned off.
>

hm. I haven't seen any similar reports.

2007-06-05 09:34:08

by Ingo Molnar

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


* Andrew Morton <[email protected]> wrote:

> On Tue, 5 Jun 2007 11:11:51 +0200 Ingo Molnar <[email protected]> wrote:
>
> > hm, mm1 hangs during bootup on one of my boxes:
> >
> > Calling initcall 0xc0628d39: pci_mmcfg_late_insert_resources+0x0/0x44()
> > initcall 0xc0628d39: pci_mmcfg_late_insert_resources+0x0/0x44() returned 0.
> > initcall 0xc0628d39 ran for 0 msecs:
> > pci_mmcfg_late_insert_resources+0x0/0x44()
> > Calling initcall 0xc062abd1: tcp_congestion_default+0x0/0xf()
> > initcall 0xc062abd1: tcp_congestion_default+0x0/0xf() returned 0.
> > initcall 0xc062abd1 ran for 0 msecs: tcp_congestion_default+0x0/0xf()
> >
> > it usually hangs in different places.
>
> In my experience that means that it wedged in a timer tick. Often the
> first one.

yeah. I tried !hres and !dynticks too and that doesnt make any
difference to the end result - so my guess is on the NMI watchdog
re-programming thing on K8 CPUs (running the 32-bit kernel), which is
done in every NMI tick. check_watchdog() for some reason thought there's
no NMI, and later on an NMI still arrived? Something like that.

vanilla kernel works fine.

Ingo

2007-06-05 09:40:17

by Ingo Molnar

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


* Ingo Molnar <[email protected]> wrote:

> yeah. I tried !hres and !dynticks too and that doesnt make any
> difference to the end result - so my guess is on the NMI watchdog
> re-programming thing on K8 CPUs (running the 32-bit kernel), which is
> done in every NMI tick. check_watchdog() for some reason thought
> there's no NMI, and later on an NMI still arrived? Something like
> that.

i have put an early_printk() into the NMI handler but it never triggers.

Ingo

2007-06-05 09:42:57

by Ingo Molnar

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


* Ingo Molnar <[email protected]> wrote:

> i have put an early_printk() into the NMI handler but it never
> triggers.

commenting out check_nmi_watchdog() produces a booting kernel too. So
it's a side-effect of check_nmi_watchdog(). Problem is, nothing in nmi.c
changed in -mm1 AFAICS.

Ingo

2007-06-05 09:46:16

by Ingo Molnar

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


* Ingo Molnar <[email protected]> wrote:

> commenting out check_nmi_watchdog() produces a booting kernel too. So
> it's a side-effect of check_nmi_watchdog(). Problem is, nothing in
> nmi.c changed in -mm1 AFAICS.

ah, plain -rc3 hangs too. So it's one of these commits i guess:

commit 1eeb66a1bb973534dc3d064920a5ca683823372e
commit 09198e68501a7e34737cd9264d266f42429abcdc
commit bbba11c35baaad3f70f32e185a2c1d40d7901fe9
commit bf8696ed6dfa561198b4736deaf11ab68dcc4845

Ingo

2007-06-05 09:50:38

by Ingo Molnar

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


* Ingo Molnar <[email protected]> wrote:

>
> * Ingo Molnar <[email protected]> wrote:
>
> > commenting out check_nmi_watchdog() produces a booting kernel too. So
> > it's a side-effect of check_nmi_watchdog(). Problem is, nothing in
> > nmi.c changed in -mm1 AFAICS.
>
> ah, plain -rc3 hangs too. So it's one of these commits i guess:
>
> commit 1eeb66a1bb973534dc3d064920a5ca683823372e
> commit 09198e68501a7e34737cd9264d266f42429abcdc
> commit bbba11c35baaad3f70f32e185a2c1d40d7901fe9
> commit bf8696ed6dfa561198b4736deaf11ab68dcc4845

oh, damn. The resulting kernel after having undone these doesnt even
build ...

Ingo

2007-06-05 09:56:23

by Ingo Molnar

[permalink] [raw]
Subject: Re: 2.6.22-rc3 nmi watchdog hang


* Ingo Molnar <[email protected]> wrote:

> > ah, plain -rc3 hangs too. So it's one of these commits i guess:
> >
> > commit 1eeb66a1bb973534dc3d064920a5ca683823372e
> > commit 09198e68501a7e34737cd9264d266f42429abcdc
> > commit bbba11c35baaad3f70f32e185a2c1d40d7901fe9
> > commit bf8696ed6dfa561198b4736deaf11ab68dcc4845
>
> oh, damn. The resulting kernel after having undone these doesnt even
> build ...

Andi/Linus Cc:-ed - these NMI watchdog changes came over the x86_64
tree. I suspect this patch:

commit 09198e68501a7e34737cd9264d266f42429abcdc
Author: Andi Kleen <[email protected]>
Date: Wed May 2 19:27:20 2007 +0200

[PATCH] i386: Clean up NMI watchdog code

Andi - just boot with nmi_watchdog=2 on a dual-core Athlon64 CPU.

Ingo

2007-06-05 12:05:49

by Zoltan Boszormenyi

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

Hi!

> -drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61.patch
> -drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61-fix.patch
> -drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61-fix-tidy.patch
>
> Merged into mainline or a subsystem tree

They aren't. They are in neither 2.6.22-rc3 nor 2.6.22-rc3-mm1.bz2,
or in any of the broken-out patches, git-* or other.

Best regards,
Zolt?n B?sz?rm?nyi


2007-06-05 15:30:13

by Rusty Russell

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

On Wed, 2007-05-30 at 23:58 -0700, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/

drivers/built-in.o: In function `ahci_port_start':
/home/rusty/linux-2.6.22-rc3-mm1/drivers/ata/ahci.c:1631: undefined reference to `ahci_port_resume'

Presumably because:
# CONFIG_PM is not set

Cheers,
Rusty.


2007-06-05 16:18:19

by Andrew Morton

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

On Tue, 05 Jun 2007 14:05:36 +0200 Zoltan Boszormenyi <[email protected]> wrote:

> Hi!
>
> > -drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61.patch
> > -drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61-fix.patch
> > -drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61-fix-tidy.patch
> >
> > Merged into mainline or a subsystem tree
>
> They aren't. They are in neither 2.6.22-rc3 nor 2.6.22-rc3-mm1.bz2,
> or in any of the broken-out patches, git-* or other.
>

Oh. Thanks. I wonder why I dropped it. Does anyone recall what the
status of this is?


From: "Peer Chen" <[email protected]>

[[email protected]: fix warning, lots of cleanups]
Signed-off-by: Kuan Luo <[email protected]>
Signed-off-by: Peer Chen <[email protected]>
Cc: Jeff Garzik <[email protected]>
Cc: Tejun Heo <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

drivers/ata/sata_nv.c | 1066 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 1054 insertions(+), 12 deletions(-)

diff -puN drivers/ata/sata_nv.c~drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61 drivers/ata/sata_nv.c
--- a/drivers/ata/sata_nv.c~drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61
+++ a/drivers/ata/sata_nv.c
@@ -46,6 +46,8 @@
#include <linux/device.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_device.h>
+#include <scsi/scsi.h>
+#include <scsi/scsi_cmnd.h>
#include <linux/libata.h>

#define DRV_NAME "sata_nv"
@@ -169,6 +171,36 @@ enum {
NV_ADMA_PORT_REGISTER_MODE = (1 << 0),
NV_ADMA_ATAPI_SETUP_COMPLETE = (1 << 1),

+ /* MCP55 reg offset */
+ NV_CTL_MCP55 = 0x400,
+ NV_INT_STATUS_MCP55 = 0x440,
+ NV_INT_ENABLE_MCP55 = 0x444,
+ NV_NCQ_REG_MCP55 = 0x448,
+ NV_CH1_SACTIVE_MCP55 = 0x0C,
+
+ /* MCP55 */
+ NV_INT_ALL_MCP55 = 0xffff,
+ NV_INT_PORT_SHIFT_MCP55 = 16, /* each port occupies 16 bits */
+ NV_INT_MASK_MCP55 = NV_INT_ALL_MCP55 & 0xfffd,
+
+ /* NCQ ENABLE BITS*/
+ NV_CTL_PRI_SWNCQ = 0x02,
+ NV_CTL_SEC_SWNCQ = 0x04,
+
+ /* MCP55 status bits*/
+ NV_INT_DEV_MCP55 = 0x01,
+ NV_INT_PM_MCP55 = 0x02,
+ NV_INT_ADDED_MCP55 = 0x04,
+ NV_INT_REMOVED_MCP55 = 0x08,
+
+ NV_INT_BACKOUT_MCP55 = 0x10,
+ NV_INT_SDBFIS_MCP55 = 0x20,
+ NV_INT_DHREGFIS_MCP55 = 0x40,
+ NV_INT_DMASETUP_MCP55 = 0x80,
+
+ NV_INT_HOTPLUG_MCP55 = (NV_INT_ADDED_MCP55 |
+ NV_INT_REMOVED_MCP55),
+
};

/* ADMA Physical Region Descriptor - one SG segment */
@@ -263,13 +295,118 @@ static void nv_adma_host_stop(struct ata
static void nv_adma_post_internal_cmd(struct ata_queued_cmd *qc);
static void nv_adma_tf_read(struct ata_port *ap, struct ata_taskfile *tf);

+static void ncq_error_handler(struct ata_port *ap);
+static void nv_mcp55_thaw(struct ata_port *ap);
+static void nv_mcp55_freeze(struct ata_port *ap);
+static void ncq_host_init(struct ata_host *host);
+static void nv_bmdma_stop(struct ata_port *ap);
+static int nv_std_qc_defer(struct ata_port *ap);
+static int nv_port_start(struct ata_port *ap);
+static void nv_port_stop(struct ata_port *ap);
+static void ncq_clear(struct ata_port *ap);
+static void nv_qc_prep(struct ata_queued_cmd *qc);
+static void nv_fill_sg(struct ata_queued_cmd *qc);
+static void ncq_sactive_start (struct ata_queued_cmd *qc);
+static u32 ncq_sactive_value (struct ata_port *ap);
+static unsigned int nv_qc_issue_prot(struct ata_queued_cmd *qc);
+static u32 ncq_tag_value(struct ata_port *ap);
+static int nv_ncqintr_sdbfis(struct ata_port *ap);
+static int nv_ncqintr_dmasetupfis(struct ata_port *ap);
+static void ncq_clear_singlefis(struct ata_port *ap, u32 val);
+static u32 ncq_ownfisintr_value (struct ata_port *ap);
+void ncq_hotplug(struct ata_port *ap, u32 fis);
+static irqreturn_t nv_mcp55_interrupt(int irq, void *dev_instance);
+static int ncq_interrupt(struct ata_port *ap, u32 fis);
+static int nv_scsi_queuecmd(struct scsi_cmnd *cmd,
+ void (*done)(struct scsi_cmnd *));
+
+#undef NCQ_DEBUG
+#undef NCQ_VERBOSE_DEBUG
+#ifdef NCQ_DEBUG
+#define NPRINTK(fmt, args...) printk(KERN_ERR "%s: " fmt, __FUNCTION__, ## args)
+#ifdef NCQ_VERBOSE_DEBUG
+#define NVPRINTK(fmt, args...) printk(KERN_ERR "%s: " fmt, __FUNCTION__, ## args)
+#else
+#define NVPRINTK(fmt, args...) do { } while(0)
+#endif /* NCQ_VERBOSE_DEBUG */
+#else
+#define NPRINTK(fmt, args...) do { } while(0)
+#define NVPRINTK(fmt, args...) do { } while(0)
+#endif
+
+/* cmd_stop
+ |_byte 3__||__byte 2____||__byte 1___||__byte 0_____|
+
+byte0:the dma fis tag's value plus 1
+byte1: defer tag's value plus 1
+byte2: backout tag's value plus 1
+
+*/
+/* ncq operation */
+struct nv_port_priv {
+ struct ata_prd *prd; /* our SG list */
+ dma_addr_t prd_dma; /* and its DMA mapping */
+ u32 qc_active;
+ u8 current_tag;/* the last tag */
+ u32 dhfis_flags;/* each bit is responding to one cmd,
+ if receiving dh fis ,bit set one.*/
+ u8 retry; /* the last cmd needed retry */
+ u32 cmd_stop; /* stop sending cmd from upper layer.*/
+ u32 cmd_sended; /* debug info */
+ u32 defer_bits;
+ const struct nv_ncq_operations *ops;
+
+};
+
+struct nv_ncq_operations{
+ void (*bmdma_stop)(struct ata_port *ap);
+ void (*sactive_start) (struct ata_queued_cmd *qc);
+ u32 (*sactive_value) (struct ata_port *ap);
+ u32 (*tag_value) (struct ata_port *ap);
+ u32 (*check_ownfis) (struct ata_port *ap);/* get the channel 's fis value */
+ void (*clear_singlefis) (struct ata_port *ap,u32 flag);
+ int (*qc_defer) (struct ata_port *ap);
+};
+
+static const struct nv_ncq_operations nv_ncq_ops = {
+ .bmdma_stop = nv_bmdma_stop,
+ .sactive_start = ncq_sactive_start,
+ .sactive_value = ncq_sactive_value,
+ .tag_value = ncq_tag_value,
+ .clear_singlefis = ncq_clear_singlefis,
+ .qc_defer = nv_std_qc_defer,
+ .check_ownfis = ncq_ownfisintr_value ,
+};
+
+#define dma_byte(result) (((result) >> 0) & 0xff)
+#define defer_byte(result) (((result) >> 8) & 0xff)
+#define back_byte(result) (((result) >> 16) & 0xff)
+
+static inline void set_dma_byte(struct nv_port_priv *pp, u8 val)
+{
+ pp->cmd_stop |= val + 1;
+}
+
+static inline void set_defer_byte(struct nv_port_priv *pp, u8 val)
+{
+ pp->cmd_stop |= ((val + 1) << 8) ;
+}
+
+static inline void set_back_byte(struct nv_port_priv *pp, u8 val)
+{
+ pp->cmd_stop |= ((val + 1) << 16);
+}
+
enum nv_host_type
{
GENERIC,
NFORCE2,
NFORCE3 = NFORCE2, /* NF2 == NF3 as far as sata_nv is concerned */
CK804,
- ADMA
+ ADMA,
+ MCP55,
+ MCP51 = MCP55,
+ MCP61 = MCP55
};

static const struct pci_device_id nv_pci_tbl[] = {
@@ -280,14 +417,13 @@ static const struct pci_device_id nv_pci
{ PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA2), CK804 },
{ PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA), CK804 },
{ PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2), CK804 },
- { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA), GENERIC },
- { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA2), GENERIC },
- { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA), GENERIC },
- { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2), GENERIC },
- { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA), GENERIC },
- { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2), GENERIC },
- { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3), GENERIC },
-
+ { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA), MCP51 },
+ { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA2), MCP51 },
+ { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA), MCP55 },
+ { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2),MCP55 },
+ { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA), MCP61 },
+ { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2), MCP61 },
+ { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3), MCP61 },
{ } /* terminate list */
};

@@ -338,6 +474,24 @@ static struct scsi_host_template nv_adma
.bios_param = ata_std_bios_param,
};

+static struct scsi_host_template nv_sht_ncq = {
+ .module = THIS_MODULE,
+ .name = DRV_NAME,
+ .ioctl = ata_scsi_ioctl,
+ .queuecommand = nv_scsi_queuecmd,
+ .can_queue = ATA_MAX_QUEUE - 1,
+ .this_id = ATA_SHT_THIS_ID,
+ .sg_tablesize = LIBATA_MAX_PRD,
+ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
+ .emulated = ATA_SHT_EMULATED,
+ .use_clustering = ATA_SHT_USE_CLUSTERING,
+ .proc_name = DRV_NAME,
+ .dma_boundary = ATA_DMA_BOUNDARY,
+ .slave_configure = ata_scsi_slave_config,
+ .slave_destroy = ata_scsi_slave_destroy,
+ .bios_param = ata_std_bios_param,
+};
+
static const struct ata_port_operations nv_generic_ops = {
.port_disable = ata_port_disable,
.tf_load = ata_tf_load,
@@ -450,6 +604,33 @@ static const struct ata_port_operations
.host_stop = nv_adma_host_stop,
};

+static const struct ata_port_operations nv_mcp55_ops = {
+ .port_disable = ata_port_disable,
+ .tf_load = ata_tf_load,
+ .tf_read = ata_tf_read,
+ .exec_command = ata_exec_command,
+ .check_status = ata_check_status,
+ .dev_select = ata_std_dev_select,
+ .bmdma_setup = ata_bmdma_setup,
+ .bmdma_start = ata_bmdma_start,
+ .bmdma_stop = ata_bmdma_stop,
+ .bmdma_status = ata_bmdma_status,
+ .qc_prep = nv_qc_prep,
+ .qc_issue = nv_qc_issue_prot,
+ .freeze = nv_mcp55_freeze,
+ .thaw = nv_mcp55_thaw,
+ .error_handler = ncq_error_handler,
+ .post_internal_cmd = ata_bmdma_post_internal_cmd,
+ .data_xfer = ata_data_xfer,
+ .irq_clear = ata_bmdma_irq_clear,
+ .irq_on = ata_irq_on,
+ .irq_ack = ata_irq_ack,
+ .scr_read = nv_scr_read,
+ .scr_write = nv_scr_write,
+ .port_start = nv_port_start,
+ .port_stop = nv_port_stop,
+};
+
static const struct ata_port_info nv_port_info[] = {
/* generic */
{
@@ -496,6 +677,16 @@ static const struct ata_port_info nv_por
.port_ops = &nv_adma_ops,
.irq_handler = nv_adma_interrupt,
},
+ /* mcp55/61 */
+ {
+ .sht = &nv_sht_ncq,
+ .flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY ,
+ .pio_mask = NV_PIO_MASK,
+ .mwdma_mask = NV_MWDMA_MASK,
+ .udma_mask = NV_UDMA_MASK,
+ .port_ops = &nv_mcp55_ops,
+ .irq_handler = nv_mcp55_interrupt,
+ },
};

MODULE_AUTHOR("NVIDIA");
@@ -505,6 +696,7 @@ MODULE_DEVICE_TABLE(pci, nv_pci_tbl);
MODULE_VERSION(DRV_VERSION);

static int adma_enabled = 1;
+static int ncq_enabled = 0;

static void nv_adma_register_mode(struct ata_port *ap)
{
@@ -760,6 +952,96 @@ static int nv_adma_check_cpb(struct ata_
return 0;
}

+static struct ata_device * ata_find_dev(struct ata_port *ap, int id)
+{
+ if (likely(id < ATA_MAX_DEVICES))
+ return &ap->device[id];
+ return NULL;
+}
+
+static int ata_scsi_dev_enabled(struct ata_device *dev)
+{
+ if (unlikely(!ata_dev_enabled(dev)))
+ return 0;
+
+ if ((dev->ap->flags & ATA_FLAG_NO_ATAPI)) {
+ if (unlikely(dev->class == ATA_DEV_ATAPI)) {
+ ata_dev_printk(dev, KERN_WARNING,
+ "WARNING: ATAPI is %s, device ignored.\n",
+ 1 ? "not supported with this driver" : "disabled");
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+static struct ata_device * __ata_scsi_find_dev(struct ata_port *ap,
+ const struct scsi_device *scsidev)
+{
+ /* skip commands not addressed to targets we simulate */
+ if (unlikely(scsidev->channel || scsidev->lun))
+ return NULL;
+
+ return ata_find_dev(ap, scsidev->id);
+}
+
+static struct ata_device *
+ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev)
+{
+ struct ata_device *dev = __ata_scsi_find_dev(ap, scsidev);
+
+ if (unlikely(!dev || !ata_scsi_dev_enabled(dev)))
+ return NULL;
+
+ return dev;
+}
+
+static int nv_scsi_queuecmd(struct scsi_cmnd *cmd,
+ void (*done)(struct scsi_cmnd *))
+{
+ struct ata_port *ap;
+ struct ata_device *dev;
+ struct scsi_device *scsidev = cmd->device;
+ struct Scsi_Host *shost = scsidev->host;
+ struct nv_port_priv *pp;
+ int rc = 0, flag = 0;
+
+ ap = ata_shost_to_port(shost);
+ pp = ap->private_data;
+ spin_unlock(shost->host_lock);
+ spin_lock(ap->lock);
+ dev = ata_scsi_find_dev(ap, scsidev);
+ if (likely(dev)) {
+ if (dev->class == ATA_DEV_ATA) {
+ switch (cmd->cmnd[0]) {
+ case READ_6:
+ case READ_10:
+ case READ_16:
+
+ case WRITE_6:
+ case WRITE_10:
+ case WRITE_16: flag=1;break;
+ default: flag=0;break;
+ }
+
+ if (flag && (dev->flags & (ATA_DFLAG_PIO | ATA_DFLAG_NCQ)) == ATA_DFLAG_NCQ)
+ rc = pp->ops->qc_defer(ap);
+ }
+ } else {
+ cmd->result = (DID_BAD_TARGET << 16);
+ done(cmd);
+ }
+
+ spin_unlock(ap->lock);
+ spin_lock(shost->host_lock);
+
+ if (rc)
+ return SCSI_MLQUEUE_DEVICE_BUSY;
+ else
+ return ata_scsi_queuecmd(cmd, done);
+}
+
static int nv_host_intr(struct ata_port *ap, u8 irq_stat)
{
struct ata_queued_cmd *qc = ata_qc_from_tag(ap, ap->active_tag);
@@ -1390,6 +1672,45 @@ static irqreturn_t nv_ck804_interrupt(in
return ret;
}

+static irqreturn_t nv_mcp55_interrupt(int irq, void *dev_instance)
+{
+ struct ata_host *host = dev_instance;
+ struct nv_port_priv *pp ;
+ unsigned int i;
+ unsigned int handled = 0;
+ unsigned long flags;
+ u32 irq_stat;
+ spin_lock_irqsave(&host->lock, flags);
+
+ irq_stat = readl(host->iomap[NV_MMIO_BAR] + NV_INT_STATUS_MCP55);
+
+ for (i = 0; i < host->n_ports; i++) {
+ struct ata_port *ap = host->ports[i];
+
+ if (ap && !(ap->flags & ATA_FLAG_DISABLED) ) {
+ pp = ap->private_data;
+
+ if (pp->qc_active) {
+ handled += ncq_interrupt(ap, (irq_stat & 0xffff));
+ } else {
+
+ if (irq_stat)
+ pp->ops->clear_singlefis(ap, 0xfff0); //reserve Hotplug and INT intr
+
+ handled += nv_host_intr(ap, (u8)irq_stat);
+ }
+
+
+ }
+
+ irq_stat >>= NV_INT_PORT_SHIFT_MCP55;
+ }
+
+ spin_unlock_irqrestore(&host->lock, flags);
+
+ return IRQ_RETVAL(handled);
+}
+
static u32 nv_scr_read (struct ata_port *ap, unsigned int sc_reg)
{
if (sc_reg > SCR_CONTROL)
@@ -1454,6 +1775,46 @@ static void nv_ck804_thaw(struct ata_por
writeb(mask, mmio_base + NV_INT_ENABLE_CK804);
}

+static void nv_mcp55_freeze(struct ata_port *ap)
+{
+ void __iomem *mmio_base = ap->host->iomap[NV_MMIO_BAR];
+ int shift = ap->port_no * NV_INT_PORT_SHIFT_MCP55;
+ u32 mask;
+ u32 val;
+
+ if (ap->flags & ATA_FLAG_NCQ) {
+ val = readl(mmio_base + NV_CTL_MCP55);
+ val &= ~(NV_CTL_PRI_SWNCQ << ap->port_no);
+ writel(val, mmio_base + NV_CTL_MCP55);/* disable ncq */
+ }
+
+ writel(NV_INT_ALL_MCP55 << shift, mmio_base + NV_INT_STATUS_MCP55);
+ mask = readl(mmio_base + NV_INT_ENABLE_MCP55);
+ mask &= ~(NV_INT_ALL_MCP55 << shift);
+ writel(mask, mmio_base + NV_INT_ENABLE_MCP55);
+ ata_bmdma_freeze(ap);
+}
+
+static void nv_mcp55_thaw(struct ata_port *ap)
+{
+ void __iomem *mmio_base = ap->host->iomap[NV_MMIO_BAR];
+ int shift = ap->port_no * NV_INT_PORT_SHIFT_MCP55;
+ u32 mask;
+ u32 val;
+
+ if (ap->flags & ATA_FLAG_NCQ) {
+ ncq_clear(ap);
+ val = readl(mmio_base + NV_CTL_MCP55);
+ val |= (NV_CTL_PRI_SWNCQ << ap->port_no);
+ writel(val, mmio_base + NV_CTL_MCP55);/* enable ncq */
+ }
+ writel(NV_INT_ALL_MCP55 << shift, mmio_base + NV_INT_STATUS_MCP55);
+ mask = readl(mmio_base + NV_INT_ENABLE_MCP55);
+ mask |= (NV_INT_MASK_MCP55 << shift);
+ writel(mask, mmio_base + NV_INT_ENABLE_MCP55);
+ ata_bmdma_thaw(ap);
+}
+
static int nv_hardreset(struct ata_port *ap, unsigned int *class,
unsigned long deadline)
{
@@ -1527,6 +1888,683 @@ static void nv_adma_error_handler(struct
nv_hardreset, ata_std_postreset);
}

+static void ncq_clear(struct ata_port *ap)
+{
+ struct nv_port_priv *pp = ap->private_data;
+
+ pp->dhfis_flags = 0;
+ pp->qc_active = 0;
+ pp->retry = 0;
+ pp->defer_bits = 0;
+ pp->cmd_stop = 0;
+ pp->cmd_sended = 0;
+ pp->current_tag = 0;
+}
+
+
+static void ncq_stop(struct ata_port *ap)
+{
+ struct nv_port_priv *pp = ap->private_data;
+ u32 serror, sstatus, sctl;
+
+ NPRINTK("shost->host_failed :%x shost->host_busy:%x \n",
+ ap->scsi_host->host_failed,
+ ap->scsi_host->host_busy);
+
+ NPRINTK("ap->qc_active:%x, pp->qc_active:%x defer_bits:%x cmd_stop:%x "
+ "current_tag:%x dhfis_flags:%x \n",
+ ap->qc_active,
+ pp->qc_active,
+ pp->defer_bits,
+ pp->cmd_stop,
+ pp->current_tag,
+ pp->dhfis_flags);
+
+ sata_scr_read(ap, SCR_ERROR, &serror);
+ sata_scr_read(ap, SCR_STATUS, &sstatus);
+ sata_scr_read(ap, SCR_CONTROL, &sctl);
+ NPRINTK("ata%u: SErr:0x%x SStat:0x%x SCtl:0x%x\n", ap->id, serror, sstatus, sctl);
+
+ pp->ops->bmdma_stop(ap);
+ pp->ops->clear_singlefis(ap, 0xffff);
+
+ ncq_clear(ap);
+}
+
+int nv_std_prereset(struct ata_port *ap, unsigned long deadline)
+{
+ struct ata_eh_context *ehc = &ap->eh_context;
+
+ if (ap->flags & ATA_FLAG_NCQ)
+ ehc->i.action |= ATA_EH_HARDRESET;
+
+ return ata_std_prereset(ap, deadline);
+}
+
+static void ncq_error_handler(struct ata_port *ap)
+{
+ u32 ncq_ctl, ncq_enable;
+ void __iomem *mmio = ap->host->iomap[NV_MMIO_BAR];
+
+ ncq_stop(ap);
+ ata_bmdma_drive_eh(ap, nv_std_prereset, ata_std_softreset,
+ nv_hardreset, ata_std_postreset);
+
+ ncq_ctl = readl(mmio + NV_CTL_MCP55);
+ ncq_enable = readl(mmio + NV_INT_ENABLE_MCP55);
+ NPRINTK("ata%u: NCQ_CTL:%x, NCQ_ENABLE:%x\n", ap->id, ncq_ctl, ncq_enable);
+
+}
+
+static void ncq_host_init(struct ata_host *host)
+{
+ u32 flags;
+ void __iomem *mmio = host->iomap[NV_MMIO_BAR];
+ struct pci_dev *pdev = to_pci_dev(host->dev);
+ u8 regval, rev;
+ unsigned int i;
+
+ /* enable bar 5 */
+ pci_read_config_byte(pdev, NV_MCP_SATA_CFG_20, &regval);
+ regval |= NV_MCP_SATA_CFG_20_SATA_SPACE_EN;
+ pci_write_config_byte(pdev, NV_MCP_SATA_CFG_20, regval);
+
+ pci_read_config_byte(pdev, 0x7f, &regval);
+ regval &= ~(1 << 7);
+ pci_write_config_byte(pdev, 0x7f, regval);
+
+ pci_read_config_byte(pdev, 0x08, &rev);
+
+ /* only support A02 and above for mcp55, all for mcp61.*/
+ if ((pdev->device == PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA ||
+ pdev->device == PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2)
+ && rev < 0xa2)
+ return;
+
+ flags = readl(mmio + NV_CTL_MCP55);
+
+ /* enable ncq */
+ if(ncq_enabled){
+ writel(flags | NV_CTL_PRI_SWNCQ | NV_CTL_SEC_SWNCQ, mmio + NV_CTL_MCP55);
+
+ for (i = 0; i < host->n_ports; i++)
+ host->ports[i]->flags |= ATA_FLAG_NCQ;
+
+ flags = readl(mmio + NV_INT_ENABLE_MCP55);
+ flags = (flags | 0x00fd00fd);
+ writel(flags, mmio + NV_INT_ENABLE_MCP55);
+ flags = readl(mmio + NV_INT_ENABLE_MCP55);
+ }
+
+ writel(~0x0, mmio + NV_INT_STATUS_MCP55);/* clear intr status */
+}
+
+static void nv_bmdma_stop(struct ata_port *ap)
+{
+ if (ap->flags & ATA_FLAG_MMIO) {
+ void __iomem *mmio = ap->ioaddr.bmdma_addr;
+
+ /* clear start/stop bit */
+ writeb(readb(mmio + ATA_DMA_CMD) & ~ATA_DMA_START,
+ mmio + ATA_DMA_CMD);
+ } else {
+ /* clear start/stop bit */
+ iowrite8(ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD) & ~ATA_DMA_START,
+ ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
+ }
+ ata_altstatus(ap);
+}
+
+/**
+* nv_std_qc_defer
+*
+* RETURNS:
+* 1 defer, 0 no need defer
+*/
+
+static int nv_std_qc_defer(struct ata_port *ap)
+{
+ struct nv_port_priv *pp = ap->private_data;
+ u32 fis;
+
+ if (ap->qc_active == 0)
+ return 0;
+
+ if (ata_tag_valid(ap->active_tag))
+ return 1;
+
+ if (pp->cmd_stop)
+ return 1;
+
+ fis = pp->ops->check_ownfis(ap);
+
+ if (fis & NV_INT_DMASETUP_MCP55) {
+ if (!dma_byte(pp->cmd_stop))
+ set_dma_byte(pp, pp->ops->tag_value(ap));
+ return 1;
+ }
+
+ return 0;
+}
+
+static int nv_port_start(struct ata_port *ap)
+{
+ struct device *dev = ap->host->dev;
+ struct nv_port_priv *pp;
+ int rc;
+
+ rc = ata_port_start(ap);
+ if (rc)
+ return rc;
+
+ pp = kzalloc(sizeof(*pp), GFP_KERNEL);
+ if (!pp) {
+ rc = -ENOMEM;
+ goto err_out;
+ }
+
+ pp->prd = dma_alloc_coherent(dev, ATA_PRD_TBL_SZ*ATA_MAX_QUEUE, &pp->prd_dma, GFP_KERNEL);
+ if (!pp->prd) {
+ rc = -ENOMEM;
+ goto err_out_kfree;
+ }
+ pp->ops = &nv_ncq_ops;
+
+ ap->private_data = pp;
+
+ return 0;
+
+err_out_kfree:
+ kfree(pp);
+err_out:
+ return rc;
+}
+
+static void nv_port_stop(struct ata_port *ap)
+{
+ struct device *dev = ap->host->dev;
+ struct nv_port_priv *pp = ap->private_data;
+
+ ap->private_data = NULL;
+ dma_free_coherent(dev, ATA_PRD_TBL_SZ*ATA_MAX_QUEUE, pp->prd, pp->prd_dma);
+ kfree(pp);
+}
+
+static void nv_qc_prep(struct ata_queued_cmd *qc)
+{
+ if (qc->tf.protocol != ATA_PROT_NCQ)
+ return ata_qc_prep(qc);
+
+ if (!(qc->flags & ATA_QCFLAG_DMAMAP))
+ return;
+
+ nv_fill_sg(qc);
+}
+
+static void nv_fill_sg(struct ata_queued_cmd *qc)
+{
+ struct ata_port *ap = qc->ap;
+ struct scatterlist *sg;
+ unsigned int idx;
+ struct nv_port_priv *pp = ap->private_data;
+ struct ata_prd *prd;
+
+ WARN_ON(qc->__sg == NULL);
+ WARN_ON(qc->n_elem == 0 && qc->pad_len == 0);
+
+ prd = (struct ata_prd*)((long)pp->prd + ATA_PRD_TBL_SZ*qc->tag);
+
+ idx = 0;
+ ata_for_each_sg(sg, qc) {
+ u32 addr, offset;
+ u32 sg_len, len;
+
+ /* determine if physical DMA addr spans 64K boundary.
+ * Note h/w doesn't support 64-bit, so we unconditionally
+ * truncate dma_addr_t to u32.
+ */
+ addr = (u32) sg_dma_address(sg);
+ sg_len = sg_dma_len(sg);
+
+ while (sg_len) {
+ offset = addr & 0xffff;
+ len = sg_len;
+ if ((offset + sg_len) > 0x10000)
+ len = 0x10000 - offset;
+
+ prd[idx].addr = cpu_to_le32(addr);
+ prd[idx].flags_len = cpu_to_le32(len & 0xffff);
+
+ idx++;
+ sg_len -= len;
+ addr += len;
+ }
+ }
+
+ if (idx)
+ prd[idx - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT);
+}
+
+static void ncq_sactive_start (struct ata_queued_cmd *qc)
+{
+ struct ata_port *ap = qc->ap;
+ void __iomem *mmio = ap->host->iomap[NV_MMIO_BAR];
+
+ u32 base = NV_CH1_SACTIVE_MCP55 + ap->port_no * 0x40;
+ u32 sactive;
+
+ sactive = readl(mmio + base);
+ sactive |= (1 << qc->tag);
+ writel(sactive, mmio + base);
+}
+
+static u32 ncq_sactive_value (struct ata_port *ap)
+{
+ void __iomem *mmio = ap->host->iomap[NV_MMIO_BAR];
+ u32 base = NV_CH1_SACTIVE_MCP55 + ap->port_no * 0x40;
+ u32 sactive;
+
+ sactive = readl(mmio + base);
+ return sactive;
+}
+
+static u32 ncq_ownfisintr_value (struct ata_port *ap)
+{
+ void __iomem *mmio = ap->host->iomap[NV_MMIO_BAR];
+ u32 value;
+
+ value = readl(mmio + NV_INT_STATUS_MCP55);
+ value = (value >> (ap->port_no * NV_INT_PORT_SHIFT_MCP55)) & 0xffff;
+
+ return value;
+}
+
+static void ncq_clear_singlefis(struct ata_port *ap, u32 val)
+{
+ void __iomem *mmio = ap->host->iomap[NV_MMIO_BAR];
+ u32 flags = (val << (ap->port_no * NV_INT_PORT_SHIFT_MCP55));
+
+ writel(flags, mmio + NV_INT_STATUS_MCP55);
+}
+
+static unsigned int nv_qc_issue_prot(struct ata_queued_cmd *qc)
+{
+ struct ata_port *ap = qc->ap;
+ struct nv_port_priv *pp = ap->private_data;
+ struct ata_taskfile *tf = &(qc->tf);
+ struct ata_taskfile *ttf, rtf;
+ u32 fis, stat0, stat1;
+
+ ttf = &rtf;
+
+ if (qc->tf.protocol != ATA_PROT_NCQ)
+ return ata_qc_issue_prot(qc);
+
+ NPRINTK("ENTER NCQ\n");
+ stat0 = pp->ops->sactive_value(ap);
+ if (pp->retry) {
+ NPRINTK("id:0x%x RETRY: qc->tag:%x\n", ap->id, qc->tag);
+ goto retry_cmd;
+ }
+
+ stat1 = (stat0 | (1 << qc->tag));
+ fis = pp->ops->check_ownfis(ap);
+ if (stat0 > 0 && stat0 != stat1) { /* new cmd */
+
+ if (fis & NV_INT_DMASETUP_MCP55) {
+ if (!dma_byte(pp->cmd_stop))
+ set_dma_byte(pp, pp->ops->tag_value(ap));
+ goto back_out;
+
+ }
+ if (fis & NV_INT_DHREGFIS_MCP55) {
+ ap->ops->check_status(ap);
+ ap->ops->irq_clear(ap); /* clear bm irq */
+ pp->ops->clear_singlefis(ap, NV_INT_DHREGFIS_MCP55 | NV_INT_DEV_MCP55);
+
+ /* each cmd generate one dhfis intr, otherwise error happens */
+ pp->dhfis_flags |= (0x1 << pp->current_tag);
+ }
+
+
+ if (pp->dhfis_flags != pp->qc_active)
+ /* queue have cmd,but dhfis don't generate intr
+ * stat0!=stat1 indicates the cmd isn't a retry cmd.
+ */
+ goto back_out;
+ }
+
+retry_cmd:
+ pp->ops->sactive_start(qc);
+ stat1 = pp->ops->sactive_value(ap);
+
+ NVPRINTK("id:0x%x sactive stat0:%x, stat1:%x tag:%x \n", ap->id, stat0, stat1, qc->tag);
+ pp->current_tag = qc->tag;
+
+ ap->ops->tf_load(ap, &qc->tf); /* load tf registers */
+ ap->ops->exec_command(ap, tf);
+ pp->dhfis_flags &= ~(1 << qc->tag) ;
+ pp->qc_active |= (0x1 << qc->tag);
+
+ if (!pp->retry)
+ pp->cmd_sended++;
+
+ if (pp->retry)
+ pp->retry--;
+
+ NPRINTK("EXIT NCQ\n");
+ return 0;
+back_out:
+ pp->defer_bits |= (0x1 << qc->tag);
+ if (defer_byte(pp->cmd_stop)) {
+ NPRINTK("ERRCMD_STOP\n");
+ }
+ set_defer_byte(pp, qc->tag);
+ pp->retry++;
+ NPRINTK("EXIT NCQ\n");
+ return 0;
+}
+
+u32 ncq_valid_dhfisflag(struct nv_port_priv *pp)
+{
+ u32 valid = (pp->dhfis_flags == pp->qc_active);
+
+ if (back_byte(pp->cmd_stop))
+ return valid;
+
+ if (!valid) {
+ set_back_byte(pp, pp->current_tag);
+ pp->retry++;
+ NPRINTK("NOT DHFIS intr dhfis_flags:%x pp->qc_active:%x\n",pp->dhfis_flags, pp->qc_active);
+ }
+ return valid;
+}
+
+
+#ifdef NCQ_DEBUG
+static void fis_dump(struct ata_port *ap, u32 fis)
+{
+ u8 dma_stat;
+ u32 sactive;
+ u32 tag;
+ u32 serror, sstatus, sctl;
+ struct nv_port_priv *pp = ap->private_data;
+
+ sactive = pp->ops->sactive_value(ap);
+ dma_stat = ap->ops->bmdma_status(ap);
+ tag = pp->ops->tag_value(ap);
+
+
+ NPRINTK("id:0x%x cmd_sended:%x fis:0x%X dma_stat:0x%X "
+ "sactive:0x%X cmd_stop:0x%X apsactive:%x tag:%X ",
+ ap->id,
+ pp->cmd_sended,
+ fis,
+ dma_stat,
+ sactive,
+ pp->cmd_stop,
+ ap->sactive,
+ tag);
+
+ sata_scr_read(ap, SCR_ERROR, &serror);
+ sata_scr_read(ap, SCR_STATUS, &sstatus);
+ sata_scr_read(ap, SCR_CONTROL, &sctl);
+ printk("SErr:0x%x SStat:0x%x SCtl:0x%x ", serror, sstatus, sctl);
+ if (fis & NV_INT_BACKOUT_MCP55)
+ printk(" backout");
+
+ if (fis & NV_INT_DHREGFIS_MCP55)
+ printk(" dhfis");
+
+ if(fis & NV_INT_DMASETUP_MCP55)
+ printk(" dmasetup");
+
+ if (fis & NV_INT_SDBFIS_MCP55)
+ printk(" sdbfis");
+
+ printk("\n");
+
+ return;
+}
+
+#else
+#define fis_dump(x, y)
+#endif
+
+
+void ncq_hotplug(struct ata_port *ap, u32 fis)
+{
+ u32 serror;
+ struct ata_eh_info *ehi = &ap->eh_info;
+
+ ata_ehi_clear_desc(ehi);
+
+ /* AHCI needs SError cleared; otherwise, it might lock up */
+ sata_scr_read(ap, SCR_ERROR, &serror);
+ sata_scr_write(ap, SCR_ERROR, serror);
+
+ /* analyze @irq_stat */
+ ata_ehi_push_desc(ehi, "fis_stat 0x%08x", fis);
+
+ ata_ehi_hotplugged(ehi);
+
+ /* okay, let's hand over to EH */
+ ehi->serror |= serror;
+
+ ata_port_freeze(ap);
+}
+
+static int ncq_interrupt(struct ata_port *ap, u32 fis)
+{
+ struct nv_port_priv *pp = ap->private_data;
+ u32 rc = 0;
+ u32 tag;
+ u8 ata_stat;
+
+ if (!fis)
+ return 0;
+
+ ata_stat = ap->ops->check_status(ap);
+
+ ap->ops->irq_clear(ap); /* clear bm irq */
+
+ fis_dump(ap, fis);
+
+ if (fis & NV_INT_HOTPLUG_MCP55) {
+ ncq_hotplug(ap, fis);
+ pp->ops->clear_singlefis(ap, 0xffff);
+ return 1;
+ }
+
+
+ if (!(fis & 0xf0)) {
+ pp->ops->clear_singlefis(ap, 0x0f);
+ return rc;
+ }
+
+ pp->ops->clear_singlefis(ap, NV_INT_DEV_MCP55);
+
+ if (fis &NV_INT_BACKOUT_MCP55) {
+ pp->ops->clear_singlefis(ap, NV_INT_BACKOUT_MCP55);
+ pp->retry++ ;
+ set_back_byte(pp, pp->current_tag);
+ NPRINTK("BACK OUT FIS:%x \n", fis);
+ rc = 1;
+ } /* first handle back out */
+
+ if (fis & NV_INT_SDBFIS_MCP55) {
+ pp->ops->clear_singlefis(ap, NV_INT_SDBFIS_MCP55 | NV_INT_DEV_MCP55);
+ rc = nv_ncqintr_sdbfis(ap);
+ }
+
+ if (fis &NV_INT_DHREGFIS_MCP55) {
+ pp->ops->clear_singlefis(ap, NV_INT_DHREGFIS_MCP55);
+
+ /* each cmd generate one dhfis intr, otherwise error happens */
+ pp->dhfis_flags |= (0x1 << pp->current_tag);
+ }
+
+ if (fis & NV_INT_DMASETUP_MCP55) {
+ /* don't send next request after receiving dma setupfis */
+ tag = pp->ops->tag_value(ap);
+ if (!dma_byte(pp->cmd_stop))
+ set_dma_byte(pp, tag);
+
+ pp->ops->clear_singlefis(ap, NV_INT_DMASETUP_MCP55);
+
+ rc = nv_ncqintr_dmasetupfis(ap);
+ }
+
+ return rc;
+}
+
+#ifdef NCQ_DEBUG
+static void sdbfis_dump(struct ata_port *ap)
+{
+ struct nv_port_priv *pp = ap->private_data;
+
+
+ NPRINTK("id:0x%x retry:%x ap->qc_active:0x%x pp->qc_active:0x%x "
+ "defer_bits:0x%x cmd_stop:0x%x current_tag:%X pp->dhfis_flags:0x%x\n",
+ ap->id,
+ pp->retry,
+ ap->qc_active,
+ pp->qc_active,
+ pp->defer_bits,
+ pp->cmd_stop,
+ pp->current_tag,
+ pp->dhfis_flags);
+
+ return;
+}
+#else
+#define sdbfis_dump(x)
+#endif
+
+static int nv_ncqintr_sdbfis(struct ata_port *ap)
+{
+ struct ata_queued_cmd *qc;
+ u32 sactive;
+ int nr_done = 0;
+ u32 done_mask;
+ int i;
+ u32 dh_valid;
+ struct nv_port_priv *pp = ap->private_data;
+ void __iomem *mmio = ap->host->iomap[NV_MMIO_BAR];
+ u32 base = NV_CH1_SACTIVE_MCP55 + ap->port_no * 0x40;
+
+ pp->ops->bmdma_stop(ap);
+
+ sactive = readl(mmio + base);
+
+ done_mask = pp->qc_active ^ sactive;
+ if (unlikely(done_mask & sactive)) {
+ ata_port_printk(ap, KERN_ERR, "illegal qc_active transition "
+ "(%08x->%08x)\n", ap->qc_active, sactive);
+ return -EINVAL;
+ }
+ for (i = 0; i < ATA_MAX_QUEUE; i++) {
+ struct ata_queued_cmd *qc;
+
+ if (!(done_mask & (1 << i)))
+ continue;
+
+ if ((qc = ata_qc_from_tag(ap, i))) {
+ ata_qc_complete(qc);
+ pp->qc_active &= ~(0x1 << i);
+ pp->dhfis_flags &= ~(0x1 << i);
+ nr_done++;
+ }
+ }
+
+ if (!ap->qc_active) {
+ NPRINTK("over\n");
+ pp->dhfis_flags = 0;
+ pp->retry = 0;
+ pp->qc_active = 0;
+ pp->defer_bits = 0;
+ pp->cmd_stop = 0;
+ pp->cmd_sended = 0;
+ pp->current_tag = 0;
+ return nr_done;
+ }
+
+ dh_valid = ncq_valid_dhfisflag(pp);
+ sdbfis_dump(ap);
+
+ if (ap->qc_active > 0 && pp->qc_active == (1 << pp->current_tag) &&
+ back_byte(pp->cmd_stop)) {
+
+ qc = ata_qc_from_tag(ap, pp->current_tag);
+ if (unlikely(!qc))
+ return nr_done;
+
+ NPRINTK("backout or novalid\n");
+ ap->ops->qc_issue(qc);
+
+ return nr_done;
+ }
+
+ if (pp->qc_active > 0 || pp->defer_bits == 0)
+ return nr_done;
+
+ for (i = 0; i < 32; i++) {
+ if (!(pp->defer_bits & (0x1 << i)))
+ continue;
+
+ qc = ata_qc_from_tag(ap, i);
+ pp->defer_bits &= ~(0x1 << i);
+ NPRINTK("DEFER\n");
+ ap->ops->qc_issue(qc);
+ break;
+ }
+
+ return nr_done;
+}
+
+static u32 ncq_tag_value(struct ata_port *ap)
+{
+ void __iomem *mmio = ap->host->iomap[NV_MMIO_BAR];
+ u32 tag;
+ u32 base = NV_NCQ_REG_MCP55 + ap->port_no * 2;
+
+ tag = readb(mmio + base);
+ tag = ((tag >> 2) & 0x1f);
+ return tag;
+}
+
+static int nv_ncqintr_dmasetupfis(struct ata_port *ap)
+{
+ struct ata_queued_cmd *qc;
+ unsigned int rw ;
+ u8 dmactl;
+ u32 tag;
+ struct nv_port_priv *pp = ap->private_data;
+
+ pp->ops->bmdma_stop(ap);
+ tag = pp->ops->tag_value(ap);
+
+ qc = ata_qc_from_tag(ap, tag);
+
+ if (unlikely(!qc))
+ return 0;
+
+ rw = ((qc->tf.flags) & ATA_TFLAG_WRITE);
+
+ /* load PRD table addr. */
+ iowrite32(pp->prd_dma + ATA_PRD_TBL_SZ*(qc->tag), ap->ioaddr.bmdma_addr + ATA_DMA_TABLE_OFS);
+
+ /* specify data direction, triple-check start bit is clear */
+ dmactl = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
+ dmactl &= ~(ATA_DMA_WR);
+ if (!rw)
+ dmactl |= ATA_DMA_WR;
+
+ iowrite8(dmactl | ATA_DMA_START, ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
+
+ return 1;
+}
+
static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
{
static int printed_version = 0;
@@ -1553,7 +2591,7 @@ static int nv_init_one (struct pci_dev *
return rc;

/* determine type and allocate host */
- if (type >= CK804 && adma_enabled) {
+ if ((type == CK804 || type == ADMA) && adma_enabled) {
dev_printk(KERN_NOTICE, &pdev->dev, "Using ADMA mode\n");
type = ADMA;
}
@@ -1586,7 +2624,7 @@ static int nv_init_one (struct pci_dev *
host->ports[1]->ioaddr.scr_addr = base + NV_PORT1_SCR_REG_OFFSET;

/* enable SATA space for CK804 */
- if (type >= CK804) {
+ if (type == CK804 || type == ADMA) {
u8 regval;

pci_read_config_byte(pdev, NV_MCP_SATA_CFG_20, &regval);
@@ -1599,7 +2637,8 @@ static int nv_init_one (struct pci_dev *
rc = nv_adma_host_init(host);
if (rc)
return rc;
- }
+ }else if (type == MCP55)
+ ncq_host_init(host);

pci_set_master(pdev);
return ata_host_activate(host, pdev->irq, ppi[0]->irq_handler,
@@ -1698,3 +2737,6 @@ module_init(nv_init);
module_exit(nv_exit);
module_param_named(adma, adma_enabled, bool, 0444);
MODULE_PARM_DESC(adma, "Enable use of ADMA (Default: true)");
+module_param_named(ncq, ncq_enabled, bool, 0444);
+MODULE_PARM_DESC(ncq, "Enable use of NCQ (Default: false)");
+
_

2007-06-05 16:21:00

by Jeff Garzik

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

On Tue, Jun 05, 2007 at 09:17:35AM -0700, Andrew Morton wrote:
> On Tue, 05 Jun 2007 14:05:36 +0200 Zoltan Boszormenyi <[email protected]> wrote:
>
> > Hi!
> >
> > > -drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61.patch
> > > -drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61-fix.patch
> > > -drivers-ata-add-sw-ncq-support-to-sata_nv-for-mcp51-mcp55-mcp61-fix-tidy.patch
> > >
> > > Merged into mainline or a subsystem tree
> >
> > They aren't. They are in neither 2.6.22-rc3 nor 2.6.22-rc3-mm1.bz2,
> > or in any of the broken-out patches, git-* or other.
> >
>
> Oh. Thanks. I wonder why I dropped it. Does anyone recall what the
> status of this is?

Yep it got NAK'd due to several obvious problems.

We're still waiting for an update based on feedback.

Jeff



2007-06-05 21:51:04

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] kernel/power/disk.c: make code static

On Wed, May 30, 2007 at 11:58:23PM -0700, Andrew Morton wrote:
>...
> Changes since 2.6.22-rc2-mm1:
>...
> +swsusp-remove-code-duplication-between-diskc-and-userc.patch
>...
> freezer/swsusp updates
>...

This patch makes needlessly global code static.

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

---

kernel/power/disk.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- linux-2.6.22-rc3-mm1/kernel/power/disk.c.old 2007-06-05 22:12:07.000000000 +0200
+++ linux-2.6.22-rc3-mm1/kernel/power/disk.c 2007-06-05 22:13:37.000000000 +0200
@@ -45,7 +45,7 @@

static int hibernation_mode = HIBERNATION_SHUTDOWN;

-struct hibernation_ops *hibernation_ops;
+static struct hibernation_ops *hibernation_ops;

/**
* hibernation_set_ops - set the global hibernate operations
@@ -231,7 +231,7 @@
* to power off or reboot.
*/

-void power_down(void)
+static void power_down(void)
{
switch (hibernation_mode) {
case HIBERNATION_TEST:

2007-06-05 21:51:25

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] kernel/sched{,_fair}.c: make code static

This patch makes some needlessly global code static.

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

---

BTW: Please don't #include C files in sched.c

kernel/sched.c | 2 +-
kernel/sched_fair.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)

--- linux-2.6.22-rc3-mm1/kernel/sched_fair.c.old 2007-06-05 22:18:18.000000000 +0200
+++ linux-2.6.22-rc3-mm1/kernel/sched_fair.c 2007-06-05 22:29:00.000000000 +0200
@@ -134,7 +134,7 @@
return curr->load_weight * (s64)(granularity / NICE_0_LOAD);
}

-unsigned long get_rq_load(struct rq *rq)
+static unsigned long get_rq_load(struct rq *rq)
{
unsigned long load = rq->cpu_load[CPU_LOAD_IDX_MAX-1] + 1;

@@ -384,7 +384,7 @@
p->exec_start = 0;
}

-long div64_s(s64 divident, unsigned long divisor)
+static long div64_s(s64 divident, unsigned long divisor)
{
u64 tmp;

--- linux-2.6.22-rc3-mm1/kernel/sched.c.old 2007-06-05 22:29:19.000000000 +0200
+++ linux-2.6.22-rc3-mm1/kernel/sched.c 2007-06-05 22:29:38.000000000 +0200
@@ -564,7 +564,7 @@
* if you go up 1 level, it's -10% CPU usage, if you go down 1 level
* it's +10% CPU usage.
*/
-const int prio_to_weight[40] = {
+static const int prio_to_weight[40] = {
/* -20 */ 88818, 71054, 56843, 45475, 36380, 29104, 23283, 18626, 14901, 11921,
/* -10 */ 9537, 7629, 6103, 4883, 3906, 3125, 2500, 2000, 1600, 1280,
/* 0 */ NICE_0_LOAD /* 1024 */,

2007-06-05 21:51:50

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] kernel/lockdep_proc.c: make 2 functions static

On Wed, May 30, 2007 at 11:58:23PM -0700, Andrew Morton wrote:
>...
> Changes since 2.6.22-rc2-mm1:
>...
> +lockstat-human-readability-tweaks.patch
>...
> lockstat-via-lockdep
>...

This patch makes two needlessly global functions static.

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

---

kernel/lockdep_proc.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

--- linux-2.6.22-rc3-mm1/kernel/lockdep_proc.c.old 2007-06-05 22:07:30.000000000 +0200
+++ linux-2.6.22-rc3-mm1/kernel/lockdep_proc.c 2007-06-05 22:07:57.000000000 +0200
@@ -364,7 +364,7 @@
/*
* sort on absolute number of contentions
*/
-int lock_stat_cmp(const void *l, const void *r)
+static int lock_stat_cmp(const void *l, const void *r)
{
const struct lock_stat_data *dl = l, *dr = r;
unsigned long nl, nr;
@@ -567,8 +567,8 @@
return res;
}

-ssize_t lock_stat_write(struct file *file, const char __user *buf,
- size_t count, loff_t *ppos)
+static ssize_t lock_stat_write(struct file *file, const char __user *buf,
+ size_t count, loff_t *ppos)
{
struct lock_class *class;
char c;

2007-06-05 21:52:23

by Adrian Bunk

[permalink] [raw]
Subject: [-mm patch] fs/proc/base.c: make a struct static

This patch makes the needlessly global struct proc_pid_sched_operations
static.

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

---
--- linux-2.6.22-rc3-mm1/fs/proc/base.c.old 2007-06-05 22:01:08.000000000 +0200
+++ linux-2.6.22-rc3-mm1/fs/proc/base.c 2007-06-05 22:41:57.000000000 +0200
@@ -952,7 +952,7 @@
return ret;
}

-const struct file_operations proc_pid_sched_operations = {
+static const struct file_operations proc_pid_sched_operations = {
.open = sched_open,
.read = seq_read,
.write = sched_write,

2007-06-05 22:05:04

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [-mm patch] kernel/power/disk.c: make code static

On Tuesday, 5 June 2007 23:50, Adrian Bunk wrote:
> On Wed, May 30, 2007 at 11:58:23PM -0700, Andrew Morton wrote:
> >...
> > Changes since 2.6.22-rc2-mm1:
> >...
> > +swsusp-remove-code-duplication-between-diskc-and-userc.patch
> >...
> > freezer/swsusp updates
> >...
>
> This patch makes needlessly global code static.
>
> Signed-off-by: Adrian Bunk <[email protected]>

ACK

Rafael


> ---
>
> kernel/power/disk.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> --- linux-2.6.22-rc3-mm1/kernel/power/disk.c.old 2007-06-05 22:12:07.000000000 +0200
> +++ linux-2.6.22-rc3-mm1/kernel/power/disk.c 2007-06-05 22:13:37.000000000 +0200
> @@ -45,7 +45,7 @@
>
> static int hibernation_mode = HIBERNATION_SHUTDOWN;
>
> -struct hibernation_ops *hibernation_ops;
> +static struct hibernation_ops *hibernation_ops;
>
> /**
> * hibernation_set_ops - set the global hibernate operations
> @@ -231,7 +231,7 @@
> * to power off or reboot.
> */
>
> -void power_down(void)
> +static void power_down(void)
> {
> switch (hibernation_mode) {
> case HIBERNATION_TEST:
>
>
>

--
"Premature optimization is the root of all evil." - Donald Knuth

2007-06-05 22:35:17

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [-mm patch] kernel/lockdep_proc.c: make 2 functions static

On Tue, 2007-06-05 at 23:51 +0200, Adrian Bunk wrote:
> On Wed, May 30, 2007 at 11:58:23PM -0700, Andrew Morton wrote:
> >...
> > Changes since 2.6.22-rc2-mm1:
> >...
> > +lockstat-human-readability-tweaks.patch
> >...
> > lockstat-via-lockdep
> >...
>
> This patch makes two needlessly global functions static.
>
> Signed-off-by: Adrian Bunk <[email protected]>

Acked-by: Peter Zijlstra <[email protected]>


2007-06-06 06:14:42

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1 - pppd hanging in netdev_run_todo while holding mutex

On Mon, 04 Jun 2007 14:00:56 -0400 [email protected] wrote:

> On Wed, 30 May 2007 23:58:23 PDT, Andrew Morton said:
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc3/2.6.22-rc3-mm1/
>
> Under 22-rc2-mm1, if my VPN connection got reset, ppp0 just quietly went away.
>
> Under 22-rc3-mm1, it seems to end up wedged and waiting for references to
> go away:
>
> Jun 4 09:23:01 turing-police kernel: [90089.270707] unregister_netdevice: waiting for ppp0 to become free. Usage count = 8
> Jun 4 09:23:11 turing-police kernel: [90099.396121] unregister_netdevice: waiting for ppp0 to become free. Usage count = 8
> Jun 4 09:23:21 turing-police kernel: [90109.520574] unregister_netdevice: waiting for ppp0 to become free. Usage count = 8
> Jun 4 09:23:32 turing-police kernel: [90119.653129] unregister_netdevice: waiting for ppp0 to become free. Usage count = 8

Interesting refcount.

> 'echo t > /proc/sysrq_trigger' shows pppd hung up here:
>
> Jun 4 10:52:57 turing-police kernel: [95478.047892] pppd D 0000000105ad3830 4968 3815 1 (NOTLB)
> Jun 4 10:52:57 turing-police kernel: [95478.047902] ffff810008d5fd78 0000000000000086 0000000000000000 ffff810003490000
> Jun 4 10:52:57 turing-police kernel: [95478.047911] ffff810008d5fd28 ffff810008d4a040 ffff810003461820 ffff810008d4a2b0
> Jun 4 10:52:57 turing-police kernel: [95478.047920] 0000000105ad3733 0000000000000202 00000000000000ff ffffffff80239795
> Jun 4 10:52:57 turing-police kernel: [95478.047928] Call Trace:
> Jun 4 10:52:57 turing-police kernel: [95478.047936] [<ffffffff805207a2>] schedule_timeout+0x8d/0xb4
> Jun 4 10:52:57 turing-police kernel: [95478.047945] [<ffffffff805207e2>] schedule_timeout_uninterruptible+0x19/0x1b
> Jun 4 10:52:57 turing-police kernel: [95478.047954] [<ffffffff802397bb>] msleep+0x14/0x1e
> Jun 4 10:52:57 turing-police kernel: [95478.047963] [<ffffffff8048aa4e>] netdev_run_todo+0x12f/0x234
> Jun 4 10:52:57 turing-police kernel: [95478.047972] [<ffffffff8049166f>] rtnl_unlock+0x35/0x37
> Jun 4 10:52:57 turing-police kernel: [95478.047981] [<ffffffff804894a9>] unregister_netdev+0x1e/0x23
> Jun 4 10:52:57 turing-police kernel: [95478.047994] [<ffffffff88a5f2c2>] :ppp_generic:ppp_shutdown_interface+0x67/0xbb
> Jun 4 10:52:57 turing-police kernel: [95478.048018] [<ffffffff88a5f5b8>] :ppp_generic:ppp_release+0x33/0x65
> Jun 4 10:52:57 turing-police kernel: [95478.048028] [<ffffffff8028d54a>] __fput+0xac/0x176
> Jun 4 10:52:57 turing-police kernel: [95478.048036] [<ffffffff8028d628>] fput+0x14/0x16
> Jun 4 10:52:57 turing-police kernel: [95478.048045] [<ffffffff8028a9c6>] filp_close+0x66/0x71
> Jun 4 10:52:57 turing-police kernel: [95478.048054] [<ffffffff8028bd54>] sys_close+0x98/0xd7
> Jun 4 10:52:57 turing-police kernel: [95478.048062] [<ffffffff8020a03c>] tracesys+0xdc/0xe1
> Jun 4 10:52:57 turing-police kernel: [95478.048073] [<00002b45cd2429a0>]

I don't know what could have caused this, sorry. If it's still there in next -mm
(which is still 100000 compile fixes away) it'd be good if you could bisect it.
Suspects would be git-net.patch, get-netdev-all.patch and gregkh-driver-*.patch

Thanks.

2007-06-06 06:55:17

by Andrew Morton

[permalink] [raw]
Subject: Re: [-mm patch] kernel/sched{,_fair}.c: make code static

On Tue, 5 Jun 2007 23:50:56 +0200 Adrian Bunk <[email protected]> wrote:

> This patch makes some needlessly global code static.
>
> Signed-off-by: Adrian Bunk <[email protected]>
>
> ---
>
> BTW: Please don't #include C files in sched.c

Yeah.

> -long div64_s(s64 divident, unsigned long divisor)
> +static long div64_s(s64 divident, unsigned long divisor)

"divident" does appear to be a word, but I suspect "dividend" was intended.

Why is this function lurking in the CPU scheduler rather than in
lib/somewhere.c?

Doesn't an unsigned divide give the same result as a signed one?

2007-06-06 07:03:33

by Ingo Molnar

[permalink] [raw]
Subject: Re: [-mm patch] kernel/sched{,_fair}.c: make code static


* Adrian Bunk <[email protected]> wrote:

> This patch makes some needlessly global code static.
>
> Signed-off-by: Adrian Bunk <[email protected]>

thanks, applied.

Ingo

2007-06-06 07:30:42

by Ingo Molnar

[permalink] [raw]
Subject: Re: [-mm patch] kernel/sched{,_fair}.c: make code static


* Andrew Morton <[email protected]> wrote:

> > Signed-off-by: Adrian Bunk <[email protected]>
> >
> > ---
> >
> > BTW: Please don't #include C files in sched.c
>
> Yeah.

In this case it's not that bad. It makes the source quite a bit cleaner
and avoids having to create artificial interfaces, global functions,
etc. between the .o's.

> > -long div64_s(s64 divident, unsigned long divisor)
> > +static long div64_s(s64 divident, unsigned long divisor)
>
> "divident" does appear to be a word, but I suspect "dividend" was
> intended.

yeah indeed - fixed.

> Why is this function lurking in the CPU scheduler rather than in
> lib/somewhere.c?
>
> Doesn't an unsigned divide give the same result as a signed one?

no! 0xfffffff0 / 2 is 0x7fffffff when the division is unsigned, and
7ffffff8 (== -8) when signed. On x86 the silicon only offers us unsigned
64-bit division, so we first have to make '+16' out of -16, then divide
by 2, and turn the +4 into -4. (On x86_64 there's no such problem,
there's an idiv and a div 64-bit instruction as well, and gcc picks the
right one depending on the type of the variable.)

i think Roman has recently done a nice cleanup patch that introduces
this? I'll change CFS to use that interface once it's upstream.

Ingo

2007-06-06 07:32:38

by Ingo Molnar

[permalink] [raw]
Subject: Re: [-mm patch] fs/proc/base.c: make a struct static


* Adrian Bunk <[email protected]> wrote:

> This patch makes the needlessly global struct proc_pid_sched_operations
> static.
>
> Signed-off-by: Adrian Bunk <[email protected]>

thanks.

Acked-by: Ingo Molnar <[email protected]>

Ingo

2007-06-06 12:31:50

by Adrian Bunk

[permalink] [raw]
Subject: Re: [-mm patch] kernel/sched{,_fair}.c: make code static

On Wed, Jun 06, 2007 at 09:30:23AM +0200, Ingo Molnar wrote:
>
> * Andrew Morton <[email protected]> wrote:
>
> > > Signed-off-by: Adrian Bunk <[email protected]>
> > >
> > > ---
> > >
> > > BTW: Please don't #include C files in sched.c
> >
> > Yeah.
>
> In this case it's not that bad. It makes the source quite a bit cleaner
> and avoids having to create artificial interfaces, global functions,
> etc. between the .o's.
>...

The idiom used in the kernel for such code is "global code and compile
the files separately". The expected inclusion for a C file into the
kernel is through the Makefile, and everything else is surprising when
looking through the code.

"artificial interfaces" is not a problem since these are completely
private interfaces you can change at any time.

> Ingo

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-06-06 18:35:25

by Pierre Ossman

[permalink] [raw]
Subject: Re: [-mm patch] drivers/mmc/core/core.{h,c}: cleanups

Adrian Bunk wrote:
>
> This patch contains the following cleanups:
> - make the following needlessly global functions static:
> - core.c: mmc_schedule_delayed_work()
> - core.c: mmc_flush_scheduled_work()
> - removes the prototope of the following non-existing function:
> - core.h: mmc_schedule_work()
> - proper prototypes for three functions from core.c in core.h
>
> Signed-off-by: Adrian Bunk <[email protected]>
>

Thanks, applied.

--
-- Pierre Ossman

Linux kernel, MMC maintainer http://www.kernel.org
PulseAudio, core developer http://pulseaudio.org
rdesktop, core developer http://www.rdesktop.org

2007-06-08 04:51:20

by Greg KH

[permalink] [raw]
Subject: Re: [-mm patch] make drivers/firmware/dmi-id.c:dmi_id_init() static

On Sun, Jun 03, 2007 at 10:54:04PM +0200, Adrian Bunk wrote:
> This patch makes the needlessly global dmi_id_init() static.
>
> Signed-off-by: Adrian Bunk <[email protected]>

Thanks, I've merged this with the original.

greg k-h

2007-06-10 18:10:23

by Björn Steinbrink

[permalink] [raw]
Subject: Re: 2.6.22-rc3 nmi watchdog hang

On 2007.06.05 11:56:00 +0200, Ingo Molnar wrote:
>
> * Ingo Molnar <[email protected]> wrote:
>
> > > ah, plain -rc3 hangs too. So it's one of these commits i guess:
> > >
> > > commit 1eeb66a1bb973534dc3d064920a5ca683823372e
> > > commit 09198e68501a7e34737cd9264d266f42429abcdc
> > > commit bbba11c35baaad3f70f32e185a2c1d40d7901fe9
> > > commit bf8696ed6dfa561198b4736deaf11ab68dcc4845
> >
> > oh, damn. The resulting kernel after having undone these doesnt even
> > build ...
>
> Andi/Linus Cc:-ed - these NMI watchdog changes came over the x86_64
> tree. I suspect this patch:
>
> commit 09198e68501a7e34737cd9264d266f42429abcdc
> Author: Andi Kleen <[email protected]>
> Date: Wed May 2 19:27:20 2007 +0200
>
> [PATCH] i386: Clean up NMI watchdog code
>
> Andi - just boot with nmi_watchdog=2 on a dual-core Athlon64 CPU.

I still fail to reproduce this, could you send me your config?

Thanks,
Bj?rn

2007-06-18 12:11:49

by Ingo Molnar

[permalink] [raw]
Subject: Re: 2.6.22-rc3 nmi watchdog hang


* Bj?rn Steinbrink <[email protected]> wrote:

> > [PATCH] i386: Clean up NMI watchdog code
> >
> > Andi - just boot with nmi_watchdog=2 on a dual-core Athlon64 CPU.
>
> I still fail to reproduce this, could you send me your config?

attached below. nmi_watchdog=2 still hangs as of -rc5, using the 32-bit
kernel (at various places during bootup - a typical place is somewhere
after cfq_init()). Changing it to nmi_watchdog=0 makes the kernel boot
again.

Ingo


Attachments:
(No filename) (475.00 B)
config (54.21 kB)
Download all attachments

2007-06-18 14:31:36

by Björn Steinbrink

[permalink] [raw]
Subject: Re: 2.6.22-rc3 nmi watchdog hang

On 2007.06.18 14:11:22 +0200, Ingo Molnar wrote:
>
> * Bj?rn Steinbrink <[email protected]> wrote:
>
> > > [PATCH] i386: Clean up NMI watchdog code
> > >
> > > Andi - just boot with nmi_watchdog=2 on a dual-core Athlon64 CPU.
> >
> > I still fail to reproduce this, could you send me your config?
>
> attached below. nmi_watchdog=2 still hangs as of -rc5, using the 32-bit
> kernel (at various places during bootup - a typical place is somewhere
> after cfq_init()). Changing it to nmi_watchdog=0 makes the kernel boot
> again.

Still no hang here. Just to make sure that I didn't mess the test up,
here's what I did:

Get pristine 2.6.22-rc5 kernel sources.
Put your config in place as .config
Run: make ARCH=i386 CFLAGS_KERNEL="-m32" AFLAGS_KERNEL="-m32"
Install the kernel.
Reboot, pass "nmi_watchdog=2" as kernel parameter.

As your config is for a 64bit kernel, several config items had to be set
manually. In one run, I accepted the default values, in the second run,
I tried to adjust those items to match your 64bit config as good as I
could.

Anything wrong with that?

Bj?rn

2007-06-25 06:20:28

by Ingo Molnar

[permalink] [raw]
Subject: Re: 2.6.22-rc3 nmi watchdog hang


* Ingo Molnar <[email protected]> wrote:

> attached below. nmi_watchdog=2 still hangs as of -rc5, using the
> 32-bit kernel (at various places during bootup - a typical place is
> somewhere after cfq_init()). Changing it to nmi_watchdog=0 makes the
> kernel boot again.

FYI, latest -git _still_ hangs with the NMI watchdog with
nmi_watchdog=2, at the same place:

Calling initcall 0xc06cc620: check_nmi_watchdog+0x0/0x1f0()
Testing NMI watchdog ... CPU#0: NMI appears to be stuck (0->0)!
CPU#1: NMI appears to be stuck (0->0)!
initcall 0xc06cc620: check_nmi_watchdog+0x0/0x1f0() returned -1.
initcall 0xc06cc620 ran for 27 msecs: check_nmi_watchdog+0x0/0x1f0()
initcall at 0xc06cc620: check_nmi_watchdog+0x0/0x1f0(): returned with
error code -1
Calling initcall 0xc06ccbb0: io_apic_bug_finalize+0x0/0x20()
initcall 0xc06ccbb0: io_apic_bug_finalize+0x0/0x20() returned 0.
initcall 0xc06ccbb0 ran for 0 msecs: io_apic_bug_finalize+0x0/0x20()
Calling initcall 0xc06ccd00: balanced_irq_init+0x0/0x1e0()
Starting balanced_irq
[hard hang]

full bootlog attached below.

Ingo

-------------------------------->
Linux version 2.6.22-rc5-cfs-v19 (mingo@dione) (gcc version 4.0.2) #7 SMP Mon Jun 25 08:09:25 CEST 2007
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003fff0000 (usable)
BIOS-e820: 000000003fff0000 - 000000003fff3000 (ACPI NVS)
BIOS-e820: 000000003fff3000 - 0000000040000000 (ACPI data)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
127MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000f5680
Entering add_active_range(0, 0, 262128) 0 entries of 256 used
Zone PFN ranges:
DMA 0 -> 4096
Normal 4096 -> 229376
HighMem 229376 -> 262128
early_node_map[1] active PFN ranges
0: 0 -> 262128
On node 0 totalpages: 262128
DMA zone: 32 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 4064 pages, LIFO batch:0
Normal zone: 1760 pages used for memmap
Normal zone: 223520 pages, LIFO batch:31
HighMem zone: 255 pages used for memmap
HighMem zone: 32497 pages, LIFO batch:7
DMI 2.3 present.
ACPI: RSDP 000F76F0, 0014 (r0 Nvidia)
ACPI: RSDT 3FFF3040, 0034 (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
ACPI: FACP 3FFF30C0, 0074 (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
ACPI: DSDT 3FFF3180, 6264 (r1 NVIDIA AWRDACPI 1000 MSFT 100000E)
ACPI: FACS 3FFF0000, 0040
ACPI: SRAT 3FFF9500, 00A0 (r1 AMD HAMMER 1 AMD 1)
ACPI: MCFG 3FFF9600, 003C (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
ACPI: APIC 3FFF9440, 007C (r1 Nvidia AWRDACPI 42302E31 AWRD 0)
Nvidia board detected. Ignoring ACPI timer override.
If you got timer trouble try acpi_use_timer_override
ACPI: PM-Timer IO Port: 0x4008
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 15:3 APIC version 16
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
Processor #1 15:3 APIC version 16
ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: BIOS IRQ0 pin2 override ignored.
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 14 global_irq 14 high edge)
ACPI: INT_SRC_OVR (bus 0 bus_irq 15 global_irq 15 high edge)
ACPI: IRQ9 used by override.
ACPI: IRQ14 used by override.
ACPI: IRQ15 used by override.
Enabling APIC mode: Flat. Using 1 I/O APICs
Using ACPI (MADT) for SMP configuration information
Allocating PCI resources starting at 50000000 (gap: 40000000:a0000000)
Built 1 zonelists. Total pages: 260081
Kernel command line: root=/dev/hda1 console=tty 3 debug profile=0 initcall_debug maxcpus=2 selinux=1 enforcing=0 apic=verbose ignore_loglevel nmi_watchdog=2 sysrq_always_enabled earlyprintk=serial,ttyS0,115200,keep
kernel profiling enabled (shift: 0)
debug: ignoring loglevel setting.
debug: sysrq always enabled.
mapped APIC to ffffd000 (fee00000)
mapped IOAPIC to ffffc000 (fec00000)
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 16384 bytes)
Detected 2160.217 MHz processor.
spurious 8259A interrupt: IRQ7.
Console: colour VGA+ 80x25
num_possible_cpus(): 2
CPU#0: allocated 33554432 bytes trace buffer.
CPU#0: allocated 33554432 bytes max-trace buffer.
CPU#1: allocated 33554432 bytes trace buffer.
CPU#1: allocated 33554432 bytes max-trace buffer.
allocated 67108864 bytes out-trace buffer.
tracer: a total of 201326592 bytes allocated.
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 818000k/1048512k available (4339k kernel code, 229872k reserved, 1516k data, 408k init, 131008k highmem)
virtual kernel memory layout:
fixmap : 0xfff4d000 - 0xfffff000 ( 712 kB)
pkmap : 0xff800000 - 0xffc00000 (4096 kB)
vmalloc : 0xf8800000 - 0xff7fe000 ( 111 MB)
lowmem : 0xc0000000 - 0xf8000000 ( 896 MB)
.init : 0xc06bf000 - 0xc0725000 ( 408 kB)
.data : 0xc053cc70 - 0xc06b7f54 (1516 kB)
.text : 0xc0100000 - 0xc053cc70 (4339 kB)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 4321.76 BogoMIPS (lpj=2160884)
Security Framework v1.0.0 initialized
SELinux: Initializing.
SELinux: Starting in permissive mode
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 178bfbff e3d3fbff 00000000 00000000 00000001 00000000 00000003
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 512K (64 bytes/line)
CPU 0(2) -> Core 0
CPU: After all inits, caps: 178bfbff e3d3fbff 00000000 00000410 00000001 00000000 00000003
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
Compat vDSO mapped to ffffe000.
Checking 'hlt' instruction... OK.
SMP alternatives: switching to UP code
ACPI: Core revision 20070126
CPU0: AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ stepping 02
enabled ExtINT on CPU#0
SMP alternatives: switching to SMP code
Booting processor 1/1 eip 3000
Initializing CPU#1
masked ExtINT on CPU#1
Calibrating delay using timer specific routine.. 4319.79 BogoMIPS (lpj=2159895)
CPU: After generic identify, caps: 178bfbff e3d3fbff 00000000 00000000 00000001 00000000 00000003
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 512K (64 bytes/line)
CPU 1(2) -> Core 1
CPU: After all inits, caps: 178bfbff e3d3fbff 00000000 00000410 00000001 00000000 00000003
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU1: AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ stepping 02
Total of 2 processors activated (8641.55 BogoMIPS).
ENABLING IO-APIC IRQs
init IO_APIC IRQs
IO-APIC (apicid-pin) 2-16, 2-17, 2-18, 2-19, 2-20, 2-21, 2-22, 2-23 not connected.
..TIMER: vector=0x31 apic1=0 pin1=0 apic2=-1 pin2=-1
Using local APIC timer interrupts.
calibrating APIC timer ...
... lapic delta = 1349919
... PM timer delta = 357900
... PM timer result ok
..... delta 1349919
..... mult: 57987393
..... calibration result: 215987
..... CPU clock speed is 2159.0871 MHz.
..... host bus clock speed is 215.0987 MHz.
Brought up 2 CPUs
Calling initcall 0xc06e0bd0: init_cpufreq_transition_notifier_list+0x0/0x20()
initcall 0xc06e0bd0: init_cpufreq_transition_notifier_list+0x0/0x20() returned 0.
initcall 0xc06e0bd0 ran for 0 msecs: init_cpufreq_transition_notifier_list+0x0/0x20()
Calling initcall 0xc06c80a0: cpufreq_tsc+0x0/0x20()
initcall 0xc06c80a0: cpufreq_tsc+0x0/0x20() returned 0.
initcall 0xc06c80a0 ran for 0 msecs: cpufreq_tsc+0x0/0x20()
Calling initcall 0xc06c9cb0: acpisleep_dmi_init+0x0/0x20()
initcall 0xc06c9cb0: acpisleep_dmi_init+0x0/0x20() returned 0.
initcall 0xc06c9cb0 ran for 0 msecs: acpisleep_dmi_init+0x0/0x20()
Calling initcall 0xc06c9ec0: reboot_init+0x0/0x20()
initcall 0xc06c9ec0: reboot_init+0x0/0x20() returned 0.
initcall 0xc06c9ec0 ran for 0 msecs: reboot_init+0x0/0x20()
Calling initcall 0xc06cf100: print_banner+0x0/0x10()
Booting paravirtualized kernel on bare hardware
initcall 0xc06cf100: print_banner+0x0/0x10() returned 0.
initcall 0xc06cf100 ran for 0 msecs: print_banner+0x0/0x10()
Calling initcall 0xc06d0d30: sysctl_init+0x0/0x20()
initcall 0xc06d0d30: sysctl_init+0x0/0x20() returned 0.
initcall 0xc06d0d30 ran for 0 msecs: sysctl_init+0x0/0x20()
Calling initcall 0xc06d1760: init_jiffies_clocksource+0x0/0x10()
initcall 0xc06d1760: init_jiffies_clocksource+0x0/0x10() returned 0.
initcall 0xc06d1760 ran for 0 msecs: init_jiffies_clocksource+0x0/0x10()
Calling initcall 0xc06d1880: pm_init+0x0/0x30()
initcall 0xc06d1880: pm_init+0x0/0x30() returned 0.
initcall 0xc06d1880 ran for 0 msecs: pm_init+0x0/0x30()
Calling initcall 0xc06d18b0: pm_disk_init+0x0/0x20()
initcall 0xc06d18b0: pm_disk_init+0x0/0x20() returned 0.
initcall 0xc06d18b0 ran for 0 msecs: pm_disk_init+0x0/0x20()
Calling initcall 0xc0157690: swsusp_header_init+0x0/0x30()
initcall 0xc0157690: swsusp_header_init+0x0/0x30() returned 0.
initcall 0xc0157690 ran for 0 msecs: swsusp_header_init+0x0/0x30()
Calling initcall 0xc06d1e50: ksysfs_init+0x0/0x30()
initcall 0xc06d1e50: ksysfs_init+0x0/0x30() returned 0.
initcall 0xc06d1e50 ran for 0 msecs: ksysfs_init+0x0/0x30()
Calling initcall 0xc06d4480: filelock_init+0x0/0x40()
initcall 0xc06d4480: filelock_init+0x0/0x40() returned 0.
initcall 0xc06d4480 ran for 0 msecs: filelock_init+0x0/0x40()
Calling initcall 0xc06d4ff0: init_misc_binfmt+0x0/0x40()
initcall 0xc06d4ff0: init_misc_binfmt+0x0/0x40() returned 0.
initcall 0xc06d4ff0 ran for 0 msecs: init_misc_binfmt+0x0/0x40()
Calling initcall 0xc06d5030: init_script_binfmt+0x0/0x10()
initcall 0xc06d5030: init_script_binfmt+0x0/0x10() returned 0.
initcall 0xc06d5030 ran for 0 msecs: init_script_binfmt+0x0/0x10()
Calling initcall 0xc06d5040: init_elf_binfmt+0x0/0x10()
initcall 0xc06d5040: init_elf_binfmt+0x0/0x10() returned 0.
initcall 0xc06d5040 ran for 0 msecs: init_elf_binfmt+0x0/0x10()
Calling initcall 0xc06d6070: securityfs_init+0x0/0x50()
initcall 0xc06d6070: securityfs_init+0x0/0x50() returned 0.
initcall 0xc06d6070 ran for 0 msecs: securityfs_init+0x0/0x50()
Calling initcall 0xc06d6b00: random32_init+0x0/0x70()
initcall 0xc06d6b00: random32_init+0x0/0x70() returned 0.
initcall 0xc06d6b00 ran for 0 msecs: random32_init+0x0/0x70()
Calling initcall 0xc06e0bf0: cpufreq_core_init+0x0/0x80()
initcall 0xc06e0bf0: cpufreq_core_init+0x0/0x80() returned 0.
initcall 0xc06e0bf0 ran for 0 msecs: cpufreq_core_init+0x0/0x80()
Calling initcall 0xc06e43f0: sock_init+0x0/0x60()
initcall 0xc06e43f0: sock_init+0x0/0x60() returned 0.
initcall 0xc06e43f0 ran for 0 msecs: sock_init+0x0/0x60()
Calling initcall 0xc06e4bb0: netpoll_init+0x0/0x30()
initcall 0xc06e4bb0: netpoll_init+0x0/0x30() returned 0.
initcall 0xc06e4bb0 ran for 0 msecs: netpoll_init+0x0/0x30()
Calling initcall 0xc06e4eb0: netlink_proto_init+0x0/0x150()
NET: Registered protocol family 16
initcall 0xc06e4eb0: netlink_proto_init+0x0/0x150() returned 0.
initcall 0xc06e4eb0 ran for 0 msecs: netlink_proto_init+0x0/0x150()
Calling initcall 0xc06d69f0: kobject_uevent_init+0x0/0x50()
initcall 0xc06d69f0: kobject_uevent_init+0x0/0x50() returned 0.
initcall 0xc06d69f0 ran for 0 msecs: kobject_uevent_init+0x0/0x50()
Calling initcall 0xc06d6c30: pcibus_class_init+0x0/0x10()
initcall 0xc06d6c30: pcibus_class_init+0x0/0x10() returned 0.
initcall 0xc06d6c30 ran for 0 msecs: pcibus_class_init+0x0/0x10()
Calling initcall 0xc06d7270: pci_driver_init+0x0/0x10()
initcall 0xc06d7270: pci_driver_init+0x0/0x10() returned 0.
initcall 0xc06d7270 ran for 0 msecs: pci_driver_init+0x0/0x10()
Calling initcall 0xc06d7af0: backlight_class_init+0x0/0x10()
initcall 0xc06d7af0: backlight_class_init+0x0/0x10() returned 0.
initcall 0xc06d7af0 ran for 0 msecs: backlight_class_init+0x0/0x10()
Calling initcall 0xc06da0e0: tty_class_init+0x0/0x30()
initcall 0xc06da0e0: tty_class_init+0x0/0x30() returned 0.
initcall 0xc06da0e0 ran for 0 msecs: tty_class_init+0x0/0x30()
Calling initcall 0xc06da7f0: vtconsole_class_init+0x0/0xd0()
initcall 0xc06da7f0: vtconsole_class_init+0x0/0xd0() returned 0.
initcall 0xc06da7f0 ran for 0 msecs: vtconsole_class_init+0x0/0xd0()
Calling initcall 0xc06e0530: eisa_init+0x0/0x30()
EISA bus registered
initcall 0xc06e0530: eisa_init+0x0/0x30() returned 0.
initcall 0xc06e0530 ran for 0 msecs: eisa_init+0x0/0x30()
Calling initcall 0xc06c7ff0: init_pit_clocksource+0x0/0x90()
initcall 0xc06c7ff0: init_pit_clocksource+0x0/0x90() returned 0.
initcall 0xc06c7ff0 ran for 0 msecs: init_pit_clocksource+0x0/0x90()
Calling initcall 0xc06c8b00: mtrr_if_init+0x0/0x60()
initcall 0xc06c8b00: mtrr_if_init+0x0/0x60() returned 0.
initcall 0xc06c8b00 ran for 0 msecs: mtrr_if_init+0x0/0x60()
Calling initcall 0xc06c9d90: ffh_cstate_init+0x0/0x30()
initcall 0xc06c9d90: ffh_cstate_init+0x0/0x30() returned -1.
initcall 0xc06c9d90 ran for 0 msecs: ffh_cstate_init+0x0/0x30()
initcall at 0xc06c9d90: ffh_cstate_init+0x0/0x30(): returned with error code -1
Calling initcall 0xc06d7550: acpi_pci_init+0x0/0x50()
ACPI: bus type pci registered
initcall 0xc06d7550: acpi_pci_init+0x0/0x50() returned 0.
initcall 0xc06d7550 ran for 0 msecs: acpi_pci_init+0x0/0x50()
Calling initcall 0xc06d930b: init_acpi_device_notify+0x0/0x45()
initcall 0xc06d930b: init_acpi_device_notify+0x0/0x45() returned 0.
initcall 0xc06d930b ran for 0 msecs: init_acpi_device_notify+0x0/0x45()
Calling initcall 0xc06e2b70: pci_access_init+0x0/0x50()
PCI: Using MMCONFIG
PCI: No mmconfig possible on device 00:18
initcall 0xc06e2b70: pci_access_init+0x0/0x50() returned 0.
initcall 0xc06e2b70 ran for 1 msecs: pci_access_init+0x0/0x50()
Calling initcall 0xc06c7960: request_standard_resources+0x0/0x3b0()
Setting up standard PCI resources
initcall 0xc06c7960: request_standard_resources+0x0/0x3b0() returned 0.
initcall 0xc06c7960 ran for 3 msecs: request_standard_resources+0x0/0x3b0()
Calling initcall 0xc06c7d40: topology_init+0x0/0x60()
initcall 0xc06c7d40: topology_init+0x0/0x60() returned 0.
initcall 0xc06c7d40 ran for 0 msecs: topology_init+0x0/0x60()
Calling initcall 0xc06c8800: mtrr_init_finialize+0x0/0x40()
initcall 0xc06c8800: mtrr_init_finialize+0x0/0x40() returned 0.
initcall 0xc06c8800 ran for 0 msecs: mtrr_init_finialize+0x0/0x40()
Calling initcall 0xc06c9ee0: mca_init+0x0/0x340()
initcall 0xc06c9ee0: mca_init+0x0/0x340() returned -19.
initcall 0xc06c9ee0 ran for 0 msecs: mca_init+0x0/0x340()
Calling initcall 0xc06d1110: param_sysfs_init+0x0/0x1e0()
initcall 0xc06d1110: param_sysfs_init+0x0/0x1e0() returned 0.
initcall 0xc06d1110 ran for 1 msecs: param_sysfs_init+0x0/0x1e0()
Calling initcall 0xc0158930: pm_sysrq_init+0x0/0x20()
initcall 0xc0158930: pm_sysrq_init+0x0/0x20() returned 0.
initcall 0xc0158930 ran for 0 msecs: pm_sysrq_init+0x0/0x20()
Calling initcall 0xc06d4c30: init_bio+0x0/0xd0()
initcall 0xc06d4c30: init_bio+0x0/0xd0() returned 0.
initcall 0xc06d4c30 ran for 0 msecs: init_bio+0x0/0xd0()
Calling initcall 0xc06d6720: genhd_device_init+0x0/0x60()
initcall 0xc06d6720: genhd_device_init+0x0/0x60() returned 0.
initcall 0xc06d6720 ran for 0 msecs: genhd_device_init+0x0/0x60()
Calling initcall 0xc06d75a0: fbmem_init+0x0/0xa0()
initcall 0xc06d75a0: fbmem_init+0x0/0xa0() returned 0.
initcall 0xc06d75a0 ran for 0 msecs: fbmem_init+0x0/0xa0()
Calling initcall 0xc06d910c: acpi_init+0x0/0x1ff()
ACPI: Interpreter enabled
ACPI: (supports S0 S1 S3 S4 S5)
ACPI: Using IOAPIC for interrupt routing
initcall 0xc06d910c: acpi_init+0x0/0x1ff() returned 0.
initcall 0xc06d910c ran for 9 msecs: acpi_init+0x0/0x1ff()
Calling initcall 0xc06d9350: acpi_scan_init+0x0/0xfc()
initcall 0xc06d9350: acpi_scan_init+0x0/0xfc() returned 0.
initcall 0xc06d9350 ran for 9 msecs: acpi_scan_init+0x0/0xfc()
Calling initcall 0xc06d94d4: acpi_ec_init+0x0/0x55()
initcall 0xc06d94d4: acpi_ec_init+0x0/0x55() returned 0.
initcall 0xc06d94d4 ran for 0 msecs: acpi_ec_init+0x0/0x55()
Calling initcall 0xc06d957c: acpi_pci_root_init+0x0/0x25()
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
PCI: Transparent bridge - 0000:00:09.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT]
initcall 0xc06d957c: acpi_pci_root_init+0x0/0x25() returned 0.
initcall 0xc06d957c ran for 55 msecs: acpi_pci_root_init+0x0/0x25()
Calling initcall 0xc06d9675: acpi_pci_link_init+0x0/0x43()
ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 5 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 *5 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNK5] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LUBA] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LUBB] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LMAC] (IRQs 3 4 5 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LACI] (IRQs *3 4 5 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LMCI] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LSMB] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LUB2] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LIDE] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LSID] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LFID] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LPCA] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [APC1] (IRQs 16) *0, disabled.
ACPI: PCI Interrupt Link [APC2] (IRQs 17) *0
ACPI: PCI Interrupt Link [APC3] (IRQs 18) *0
ACPI: PCI Interrupt Link [APC4] (IRQs 19) *0, disabled.
ACPI: PCI Interrupt Link [APC5] (IRQs *16), disabled.
ACPI: PCI Interrupt Link [APCF] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCG] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCH] (IRQs 20 21 22 23) *0
ACPI: PCI Interrupt Link [APCJ] (IRQs 20 21 22 23) *0
ACPI: PCI Interrupt Link [APCK] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCS] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCL] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCZ] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APSI] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APSJ] (IRQs 20 21 22 23) *0, disabled.
ACPI: PCI Interrupt Link [APCP] (IRQs 20 21 22 23) *0, disabled.
initcall 0xc06d9675: acpi_pci_link_init+0x0/0x43() returned 0.
initcall 0xc06d9675 ran for 119 msecs: acpi_pci_link_init+0x0/0x43()
Calling initcall 0xc06d974f: acpi_power_init+0x0/0x69()
initcall 0xc06d974f: acpi_power_init+0x0/0x69() returned 0.
initcall 0xc06d974f ran for 0 msecs: acpi_power_init+0x0/0x69()
Calling initcall 0xc06d97b8: acpi_system_init+0x0/0xad()
initcall 0xc06d97b8: acpi_system_init+0x0/0xad() returned 0.
initcall 0xc06d97b8 ran for 0 msecs: acpi_system_init+0x0/0xad()
Calling initcall 0xc06d9865: acpi_event_init+0x0/0x38()
initcall 0xc06d9865: acpi_event_init+0x0/0x38() returned 0.
initcall 0xc06d9865 ran for 0 msecs: acpi_event_init+0x0/0x38()
Calling initcall 0xc06d989d: acpi_cm_sbs_init+0x0/0x13()
initcall 0xc06d989d: acpi_cm_sbs_init+0x0/0x13() returned 0.
initcall 0xc06d989d ran for 0 msecs: acpi_cm_sbs_init+0x0/0x13()
Calling initcall 0xc06d98b0: pnp_init+0x0/0x20()
Linux Plug and Play Support v0.97 (c) Adam Belay
initcall 0xc06d98b0: pnp_init+0x0/0x20() returned 0.
initcall 0xc06d98b0 ran for 0 msecs: pnp_init+0x0/0x20()
Calling initcall 0xc06d9b40: pnpacpi_init+0x0/0x90()
pnp: PnP ACPI init
ACPI: bus type pnp registered
pnp: PnP ACPI: found 16 devices
ACPI: ACPI bus type pnp unregistered
initcall 0xc06d9b40: pnpacpi_init+0x0/0x90() returned 0.
initcall 0xc06d9b40 ran for 8 msecs: pnpacpi_init+0x0/0x90()
Calling initcall 0xc06da520: misc_init+0x0/0x80()
initcall 0xc06da520: misc_init+0x0/0x80() returned 0.
initcall 0xc06da520 ran for 0 msecs: misc_init+0x0/0x80()
Calling initcall 0xc06dd9e0: init_scsi+0x0/0xb0()
SCSI subsystem initialized
initcall 0xc06dd9e0: init_scsi+0x0/0xb0() returned 0.
initcall 0xc06dd9e0 ran for 0 msecs: init_scsi+0x0/0xb0()
Calling initcall 0xc06de2f0: ata_init+0x0/0x80()
libata version 2.21 loaded.
initcall 0xc06de2f0: ata_init+0x0/0x80() returned 0.
initcall 0xc06de2f0 ran for 0 msecs: ata_init+0x0/0x80()
Calling initcall 0xc06df270: init_pcmcia_cs+0x0/0x40()
initcall 0xc06df270: init_pcmcia_cs+0x0/0x40() returned 0.
initcall 0xc06df270 ran for 0 msecs: init_pcmcia_cs+0x0/0x40()
Calling initcall 0xc06df3f0: usb_init+0x0/0x110()
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
initcall 0xc06df3f0: usb_init+0x0/0x110() returned 0.
initcall 0xc06df3f0 ran for 2 msecs: usb_init+0x0/0x110()
Calling initcall 0xc06df900: serio_init+0x0/0xb0()
initcall 0xc06df900: serio_init+0x0/0xb0() returned 0.
initcall 0xc06df900 ran for 0 msecs: serio_init+0x0/0xb0()
Calling initcall 0xc06dfdf0: input_init+0x0/0x120()
initcall 0xc06dfdf0: input_init+0x0/0x120() returned 0.
initcall 0xc06dfdf0 ran for 0 msecs: input_init+0x0/0x120()
Calling initcall 0xc06e0130: hwmon_init+0x0/0x40()
initcall 0xc06e0130: hwmon_init+0x0/0x40() returned 0.
initcall 0xc06e0130 ran for 0 msecs: hwmon_init+0x0/0x40()
Calling initcall 0xc06e27d0: ac97_bus_init+0x0/0x10()
initcall 0xc06e27d0: ac97_bus_init+0x0/0x10() returned 0.
initcall 0xc06e27d0 ran for 0 msecs: ac97_bus_init+0x0/0x10()
Calling initcall 0xc06e3770: pci_acpi_init+0x0/0xb0()
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
number of MP IRQ sources: 16.
number of IO-APIC #2 registers: 24.
testing the IO APIC.......................
IO APIC #2......
.... register #00: 00000000
....... : physical APIC id: 00
....... : Delivery Type: 0
....... : LTS : 0
.... register #01: 00170011
....... : max redirection entries: 0017
....... : PRQ implemented: 0
....... : IO APIC version: 0011
.... register #02: 00000000
....... : arbitration: 00
.... IRQ redirection table:
NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
00 003 03 0 0 0 0 0 1 1 31
01 003 03 1 0 0 0 0 1 1 39
02 003 03 0 0 0 0 0 1 1 41
03 003 03 1 0 0 0 0 1 1 49
04 003 03 1 0 0 0 0 1 1 51
05 003 03 1 0 0 0 0 1 1 59
06 003 03 1 0 0 0 0 1 1 61
07 003 03 1 0 0 0 0 1 1 69
08 003 03 1 0 0 0 0 1 1 71
09 003 03 0 1 0 0 0 1 1 79
0a 003 03 1 0 0 0 0 1 1 81
0b 003 03 1 0 0 0 0 1 1 89
0c 003 03 1 0 0 0 0 1 1 91
0d 003 03 1 0 0 0 0 1 1 99
0e 003 03 0 0 0 0 0 1 1 A1
0f 003 03 0 0 0 0 0 1 1 A9
10 000 00 1 0 0 0 0 0 0 00
11 000 00 1 0 0 0 0 0 0 00
12 000 00 1 0 0 0 0 0 0 00
13 000 00 1 0 0 0 0 0 0 00
14 000 00 1 0 0 0 0 0 0 00
15 000 00 1 0 0 0 0 0 0 00
16 000 00 1 0 0 0 0 0 0 00
17 000 00 1 0 0 0 0 0 0 00
IRQ to pin mappings:
IRQ0 -> 0:0
IRQ1 -> 0:1
IRQ2 -> 0:2
IRQ3 -> 0:3
IRQ4 -> 0:4
IRQ5 -> 0:5
IRQ6 -> 0:6
IRQ7 -> 0:7
IRQ8 -> 0:8
IRQ9 -> 0:9
IRQ10 -> 0:10
IRQ11 -> 0:11
IRQ12 -> 0:12
IRQ13 -> 0:13
IRQ14 -> 0:14
IRQ15 -> 0:15
.................................... done.
initcall 0xc06e3770: pci_acpi_init+0x0/0xb0() returned 0.
initcall 0xc06e3770 ran for 82 msecs: pci_acpi_init+0x0/0xb0()
Calling initcall 0xc06e3820: pci_legacy_init+0x0/0x120()
initcall 0xc06e3820: pci_legacy_init+0x0/0x120() returned 0.
initcall 0xc06e3820 ran for 0 msecs: pci_legacy_init+0x0/0x120()
Calling initcall 0xc06e3e50: pcibios_irq_init+0x0/0x510()
initcall 0xc06e3e50: pcibios_irq_init+0x0/0x510() returned 0.
initcall 0xc06e3e50 ran for 0 msecs: pcibios_irq_init+0x0/0x510()
Calling initcall 0xc06e4360: pcibios_init+0x0/0x90()
initcall 0xc06e4360: pcibios_init+0x0/0x90() returned 0.
initcall 0xc06e4360 ran for 0 msecs: pcibios_init+0x0/0x90()
Calling initcall 0xc06e44b0: proto_init+0x0/0x30()
initcall 0xc06e44b0: proto_init+0x0/0x30() returned 0.
initcall 0xc06e44b0 ran for 0 msecs: proto_init+0x0/0x30()
Calling initcall 0xc06e4620: net_dev_init+0x0/0x220()
initcall 0xc06e4620: net_dev_init+0x0/0x220() returned 0.
initcall 0xc06e4620 ran for 0 msecs: net_dev_init+0x0/0x220()
Calling initcall 0xc06e4880: neigh_init+0x0/0x80()
initcall 0xc06e4880: neigh_init+0x0/0x80() returned 0.
initcall 0xc06e4880 ran for 0 msecs: neigh_init+0x0/0x80()
Calling initcall 0xc06e4be0: fib_rules_init+0x0/0x60()
initcall 0xc06e4be0: fib_rules_init+0x0/0x60() returned 0.
initcall 0xc06e4be0 ran for 0 msecs: fib_rules_init+0x0/0x60()
Calling initcall 0xc06e4d70: pktsched_init+0x0/0xd0()
initcall 0xc06e4d70: pktsched_init+0x0/0xd0() returned 0.
initcall 0xc06e4d70 ran for 0 msecs: pktsched_init+0x0/0xd0()
Calling initcall 0xc06e4e50: tc_filter_init+0x0/0x60()
initcall 0xc06e4e50: tc_filter_init+0x0/0x60() returned 0.
initcall 0xc06e4e50 ran for 0 msecs: tc_filter_init+0x0/0x60()
Calling initcall 0xc06e5000: genl_init+0x0/0xb0()
initcall 0xc06e5000: genl_init+0x0/0xb0() returned 0.
initcall 0xc06e5000 ran for 0 msecs: genl_init+0x0/0xb0()
Calling initcall 0xc06e72b0: wireless_nlevent_init+0x0/0x2c()
initcall 0xc06e72b0: wireless_nlevent_init+0x0/0x2c() returned 0.
initcall 0xc06e72b0 ran for 0 msecs: wireless_nlevent_init+0x0/0x2c()
Calling initcall 0xc06d1630: clocksource_done_booting+0x0/0x20()
initcall 0xc06d1630: clocksource_done_booting+0x0/0x20() returned 0.
initcall 0xc06d1630 ran for 0 msecs: clocksource_done_booting+0x0/0x20()
Calling initcall 0xc06d43f0: init_pipe_fs+0x0/0x50()
initcall 0xc06d43f0: init_pipe_fs+0x0/0x50() returned 0.
initcall 0xc06d43f0 ran for 0 msecs: init_pipe_fs+0x0/0x50()
Calling initcall 0xc06d4e60: eventpoll_init+0x0/0x90()
initcall 0xc06d4e60: eventpoll_init+0x0/0x90() returned 0.
initcall 0xc06d4e60 ran for 0 msecs: eventpoll_init+0x0/0x90()
Calling initcall 0xc06d4ef0: anon_inode_init+0x0/0x100()
initcall 0xc06d4ef0: anon_inode_init+0x0/0x100() returned 0.
initcall 0xc06d4ef0 ran for 0 msecs: anon_inode_init+0x0/0x100()
Calling initcall 0xc06d9a10: pnp_system_init+0x0/0x10()
pnp: 00:01: ioport range 0x4000-0x407f has been reserved
pnp: 00:01: ioport range 0x4080-0x40ff has been reserved
pnp: 00:01: ioport range 0x4400-0x447f has been reserved
pnp: 00:01: ioport range 0x4480-0x44ff has been reserved
pnp: 00:01: ioport range 0x4800-0x487f has been reserved
pnp: 00:01: ioport range 0x4880-0x48ff has been reserved
pnp: 00:0e: iomem range 0xe0000000-0xefffffff could not be reserved
pnp: 00:0f: iomem range 0xf0000-0xf3fff could not be reserved
pnp: 00:0f: iomem range 0xf4000-0xf7fff could not be reserved
pnp: 00:0f: iomem range 0xf8000-0xfbfff could not be reserved
pnp: 00:0f: iomem range 0xfc000-0xfffff could not be reserved
initcall 0xc06d9a10: pnp_system_init+0x0/0x10() returned 0.
initcall 0xc06d9a10 ran for 10 msecs: pnp_system_init+0x0/0x10()
Calling initcall 0xc06d9fe0: chr_dev_init+0x0/0x90()
initcall 0xc06d9fe0: chr_dev_init+0x0/0x90() returned 0.
initcall 0xc06d9fe0 ran for 0 msecs: chr_dev_init+0x0/0x90()
Calling initcall 0xc06dc6a0: firmware_class_init+0x0/0x70()
initcall 0xc06dc6a0: firmware_class_init+0x0/0x70() returned 0.
initcall 0xc06dc6a0 ran for 0 msecs: firmware_class_init+0x0/0x70()
Calling initcall 0xc06df2b0: init_pcmcia_bus+0x0/0x90()
initcall 0xc06df2b0: init_pcmcia_bus+0x0/0x90() returned 0.
initcall 0xc06df2b0 ran for 0 msecs: init_pcmcia_bus+0x0/0x90()
Calling initcall 0xc06e0c70: cpufreq_gov_userspace_init+0x0/0x20()
initcall 0xc06e0c70: cpufreq_gov_userspace_init+0x0/0x20() returned 0.
initcall 0xc06e0c70 ran for 0 msecs: cpufreq_gov_userspace_init+0x0/0x20()
Calling initcall 0xc06e1260: init_acpi_pm_clocksource+0x0/0x1d0()
initcall 0xc06e1260<6>Time: acpi_pm clocksource has been installed.
Switched to high resolution mode on CPU 0
Switched to high resolution mode on CPU 1
: init_acpi_pm_clocksource+0x0/0x1d0() returned 0.
initcall 0xc06e1260 ran for 28 msecs: init_acpi_pm_clocksource+0x0/0x1d0()
Calling initcall 0xc06e2850: pcibios_assign_resources+0x0/0xb0()
PCI: Bridge: 0000:00:09.0
IO window: c000-cfff
MEM window: da000000-da0fffff
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0b.0
IO window: disabled.
MEM window: disabled.
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0c.0
IO window: disabled.
MEM window: disabled.
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0d.0
IO window: disabled.
MEM window: disabled.
PREFETCH window: disabled.
PCI: Bridge: 0000:00:0e.0
IO window: b000-bfff
MEM window: d8000000-d9ffffff
PREFETCH window: d0000000-d7ffffff
PCI: Setting latency timer of device 0000:00:09.0 to 64
PCI: Setting latency timer of device 0000:00:0b.0 to 64
PCI: Setting latency timer of device 0000:00:0c.0 to 64
PCI: Setting latency timer of device 0000:00:0d.0 to 64
PCI: Setting latency timer of device 0000:00:0e.0 to 64
initcall 0xc06e2850: pcibios_assign_resources+0x0/0xb0() returned 0.
initcall 0xc06e2850 ran for 69 msecs: pcibios_assign_resources+0x0/0xb0()
Calling initcall 0xc06e5c20: inet_init+0x0/0x310()
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
TCP established hash table entries: 131072 (order: 8, 1572864 bytes)
TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
TCP: Hash tables configured (established 131072 bind 65536)
TCP reno registered
initcall 0xc06e5c20: inet_init+0x0/0x310() returned 0.
initcall 0xc06e5c20 ran for 41 msecs: inet_init+0x0/0x310()
Calling initcall 0xc06c58a0: populate_rootfs+0x0/0x100()
initcall 0xc06c58a0: populate_rootfs+0x0/0x100() returned 0.
initcall 0xc06c58a0 ran for 0 msecs: populate_rootfs+0x0/0x100()
Calling initcall 0xc06c6a80: i8259A_init_sysfs+0x0/0x30()
initcall 0xc06c6a80: i8259A_init_sysfs+0x0/0x30() returned 0.
initcall 0xc06c6a80 ran for 0 msecs: i8259A_init_sysfs+0x0/0x30()
Calling initcall 0xc06c6bc0: sbf_init+0x0/0xf0()
initcall 0xc06c6bc0: sbf_init+0x0/0xf0() returned 0.
initcall 0xc06c6bc0 ran for 0 msecs: sbf_init+0x0/0xf0()
Calling initcall 0xc06c7d10: i8237A_init_sysfs+0x0/0x30()
initcall 0xc06c7d10: i8237A_init_sysfs+0x0/0x30() returned 0.
initcall 0xc06c7d10 ran for 0 msecs: i8237A_init_sysfs+0x0/0x30()
Calling initcall 0xc010eed0: cache_sysfs_init+0x0/0x80()
initcall 0xc010eed0: cache_sysfs_init+0x0/0x80() returned 0.
initcall 0xc010eed0 ran for 0 msecs: cache_sysfs_init+0x0/0x80()
Calling initcall 0xc06c86f0: thermal_throttle_init_device+0x0/0xc0()
initcall 0xc06c86f0: thermal_throttle_init_device+0x0/0xc0() returned 0.
initcall 0xc06c86f0 ran for 0 msecs: thermal_throttle_init_device+0x0/0xc0()
Calling initcall 0xc06c87b0: init_nonfatal_mce_checker+0x0/0x50()
Machine check exception polling timer started.
initcall 0xc06c87b0: init_nonfatal_mce_checker+0x0/0x50() returned 0.
initcall 0xc06c87b0 ran for 3 msecs: init_nonfatal_mce_checker+0x0/0x50()
Calling initcall 0xc06cb880: init_lapic_sysfs+0x0/0x30()
initcall 0xc06cb880: init_lapic_sysfs+0x0/0x30() returned 0.
initcall 0xc06cb880 ran for 0 msecs: init_lapic_sysfs+0x0/0x30()
Calling initcall 0xc06ccc30: ioapic_init_sysfs+0x0/0xd0()
initcall 0xc06ccc30: ioapic_init_sysfs+0x0/0xd0() returned 0.
initcall 0xc06ccc30 ran for 0 msecs: ioapic_init_sysfs+0x0/0xd0()
Calling initcall 0xc06ce940: serial8250_x86_com_init+0x0/0x30()
initcall 0xc06ce940: serial8250_x86_com_init+0x0/0x30() returned -19.
initcall 0xc06ce940 ran for 0 msecs: serial8250_x86_com_init+0x0/0x30()
Calling initcall 0xc06ced90: hpet_register_sysfs+0x0/0x50()
initcall 0xc06ced90: hpet_register_sysfs+0x0/0x50() returned 0.
initcall 0xc06ced90 ran for 0 msecs: hpet_register_sysfs+0x0/0x50()
Calling initcall 0xc06cf110: add_pcspkr+0x0/0x60()
initcall 0xc06cf110: add_pcspkr+0x0/0x60() returned 0.
initcall 0xc06cf110 ran for 0 msecs: add_pcspkr+0x0/0x60()
Calling initcall 0xc06cfe00: init_sched_debug_procfs+0x0/0x30()
initcall 0xc06cfe00: init_sched_debug_procfs+0x0/0x30() returned 0.
initcall 0xc06cfe00 ran for 0 msecs: init_sched_debug_procfs+0x0/0x30()
Calling initcall 0xc06d09e0: create_proc_profile+0x0/0x1b0()
initcall 0xc06d09e0: create_proc_profile+0x0/0x1b0() returned 0.
initcall 0xc06d09e0 ran for 0 msecs: create_proc_profile+0x0/0x1b0()
Calling initcall 0xc06d0c10: ioresources_init+0x0/0x40()
initcall 0xc06d0c10: ioresources_init+0x0/0x40() returned 0.
initcall 0xc06d0c10 ran for 0 msecs: ioresources_init+0x0/0x40()
Calling initcall 0xc06d0da0: uid_cache_init+0x0/0xa0()
initcall 0xc06d0da0: uid_cache_init+0x0/0xa0() returned 0.
initcall 0xc06d0da0 ran for 0 msecs: uid_cache_init+0x0/0xa0()
Calling initcall 0xc06d12f0: init_posix_timers+0x0/0x80()
initcall 0xc06d12f0: init_posix_timers+0x0/0x80() returned 0.
initcall 0xc06d12f0 ran for 0 msecs: init_posix_timers+0x0/0x80()
Calling initcall 0xc06d1370: init_posix_cpu_timers+0x0/0x60()
initcall 0xc06d1370: init_posix_cpu_timers+0x0/0x60() returned 0.
initcall 0xc06d1370 ran for 0 msecs: init_posix_cpu_timers+0x0/0x60()
Calling initcall 0xc06d1490: latency_init+0x0/0x20()
initcall 0xc06d1490: latency_init+0x0/0x20() returned 0.
initcall 0xc06d1490 ran for 0 msecs: latency_init+0x0/0x20()
Calling initcall 0xc06d14b0: timekeeping_init_device+0x0/0x30()
initcall 0xc06d14b0: timekeeping_init_device+0x0/0x30() returned 0.
initcall 0xc06d14b0 ran for 0 msecs: timekeeping_init_device+0x0/0x30()
Calling initcall 0xc06d1650: init_clocksource_sysfs+0x0/0x50()
initcall 0xc06d1650: init_clocksource_sysfs+0x0/0x50() returned 0.
initcall 0xc06d1650 ran for 0 msecs: init_clocksource_sysfs+0x0/0x50()
Calling initcall 0xc06d1770: init_timer_list_procfs+0x0/0x30()
initcall 0xc06d1770: init_timer_list_procfs+0x0/0x30() returned 0.
initcall 0xc06d1770 ran for 0 msecs: init_timer_list_procfs+0x0/0x30()
Calling initcall 0xc06d17b0: init+0x0/0x80()
initcall 0xc06d17b0: init+0x0/0x80() returned 0.
initcall 0xc06d17b0 ran for 0 msecs: init+0x0/0x80()
Calling initcall 0xc06d1830: proc_dma_init+0x0/0x20()
initcall 0xc06d1830: proc_dma_init+0x0/0x20() returned 0.
initcall 0xc06d1830 ran for 0 msecs: proc_dma_init+0x0/0x20()
Calling initcall 0xc014ffe0: percpu_modinit+0x0/0x70()
initcall 0xc014ffe0: percpu_modinit+0x0/0x70() returned 0.
initcall 0xc014ffe0 ran for 0 msecs: percpu_modinit+0x0/0x70()
Calling initcall 0xc06d1850: kallsyms_init+0x0/0x30()
initcall 0xc06d1850: kallsyms_init+0x0/0x30() returned 0.
initcall 0xc06d1850 ran for 0 msecs: kallsyms_init+0x0/0x30()
Calling initcall 0xc06d1a20: snapshot_device_init+0x0/0x10()
initcall 0xc06d1a20: snapshot_device_init+0x0/0x10() returned 0.
initcall 0xc06d1a20 ran for 0 msecs: snapshot_device_init+0x0/0x10()
Calling initcall 0xc06d1a30: ikconfig_init+0x0/0x40()
initcall 0xc06d1a30: ikconfig_init+0x0/0x40() returned 0.
initcall 0xc06d1a30 ran for 0 msecs: ikconfig_init+0x0/0x40()
Calling initcall 0xc06d1cc0: audit_init+0x0/0x110()
audit: initializing netlink socket (disabled)
audit(1182753703.820:1): initialized
initcall 0xc06d1cc0: audit_init+0x0/0x110() returned 0.
initcall 0xc06d1cc0 ran for 7 msecs: audit_init+0x0/0x110()
Calling initcall 0xc06d1ee0: utsname_sysctl_init+0x0/0x20()
initcall 0xc06d1ee0: utsname_sysctl_init+0x0/0x20() returned 0.
initcall 0xc06d1ee0 ran for 0 msecs: utsname_sysctl_init+0x0/0x20()
Calling initcall 0xc06d3180: init_per_zone_pages_min+0x0/0x50()
initcall 0xc06d3180: init_per_zone_pages_min+0x0/0x50() returned 0.
initcall 0xc06d3180 ran for 0 msecs: init_per_zone_pages_min+0x0/0x50()
Calling initcall 0xc06d3b20: pdflush_init+0x0/0x20()
initcall 0xc06d3b20: pdflush_init+0x0/0x20() returned 0.
initcall 0xc06d3b20 ran for 0 msecs: pdflush_init+0x0/0x20()
Calling initcall 0xc06d3b70: kswapd_init+0x0/0x30()
initcall 0xc06d3b70: kswapd_init+0x0/0x30() returned 0.
initcall 0xc06d3b70 ran for 0 msecs: kswapd_init+0x0/0x30()
Calling initcall 0xc06d3ba0: setup_vmstat+0x0/0x70()
initcall 0xc06d3ba0: setup_vmstat+0x0/0x70() returned 0.
initcall 0xc06d3ba0 ran for 0 msecs: setup_vmstat+0x0/0x70()
Calling initcall 0xc06d3d00: init_emergency_pool+0x0/0x70()
highmem bounce pool size: 64 pages
initcall 0xc06d3d00: init_emergency_pool+0x0/0x70() returned 0.
initcall 0xc06d3d00 ran for 2 msecs: init_emergency_pool+0x0/0x70()
Calling initcall 0xc06d3d70: procswaps_init+0x0/0x20()
initcall 0xc06d3d70: procswaps_init+0x0/0x20() returned 0.
initcall 0xc06d3d70 ran for 0 msecs: procswaps_init+0x0/0x20()
Calling initcall 0xc06d3d90: hugetlb_init+0x0/0x70()
Total HugeTLB memory allocated, 0
initcall 0xc06d3d90: hugetlb_init+0x0/0x70() returned 0.
initcall 0xc06d3d90 ran for 2 msecs: hugetlb_init+0x0/0x70()
Calling initcall 0xc06d3e40: init_tmpfs+0x0/0xd0()
initcall 0xc06d3e40: init_tmpfs+0x0/0xd0() returned 0.
initcall 0xc06d3e40 ran for 0 msecs: init_tmpfs+0x0/0xd0()
Calling initcall 0xc06d3f30: cpucache_init+0x0/0x60()
initcall 0xc06d3f30: cpucache_init+0x0/0x60() returned 0.
initcall 0xc06d3f30 ran for 0 msecs: cpucache_init+0x0/0x60()
Calling initcall 0xc06d4440: fasync_init+0x0/0x40()
initcall 0xc06d4440: fasync_init+0x0/0x40() returned 0.
initcall 0xc06d4440 ran for 0 msecs: fasync_init+0x0/0x40()
Calling initcall 0xc06d4b50: aio_setup+0x0/0x80()
initcall 0xc06d4b50: aio_setup+0x0/0x80() returned 0.
initcall 0xc06d4b50 ran for 0 msecs: aio_setup+0x0/0x80()
Calling initcall 0xc06d4d80: inotify_setup+0x0/0x10()
initcall 0xc06d4d80: inotify_setup+0x0/0x10() returned 0.
initcall 0xc06d4d80 ran for 0 msecs: inotify_setup+0x0/0x10()
Calling initcall 0xc06d4d90: inotify_user_setup+0x0/0xd0()
initcall 0xc06d4d90: inotify_user_setup+0x0/0xd0() returned 0.
initcall 0xc06d4d90 ran for 0 msecs: inotify_user_setup+0x0/0xd0()
Calling initcall 0xc06d5050: init_mbcache+0x0/0x20()
initcall 0xc06d5050: init_mbcache+0x0/0x20() returned 0.
initcall 0xc06d5050 ran for 0 msecs: init_mbcache+0x0/0x20()
Calling initcall 0xc06d5070: dquot_init+0x0/0x110()
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
initcall 0xc06d5070: dquot_init+0x0/0x110() returned 0.
initcall 0xc06d5070 ran for 7 msecs: dquot_init+0x0/0x110()
Calling initcall 0xc06d5180: init_v2_quota_format+0x0/0x10()
initcall 0xc06d5180: init_v2_quota_format+0x0/0x10() returned 0.
initcall 0xc06d5180 ran for 0 msecs: init_v2_quota_format+0x0/0x10()
Calling initcall 0xc06d5190: dnotify_init+0x0/0x40()
initcall 0xc06d5190: dnotify_init+0x0/0x40() returned 0.
initcall 0xc06d5190 ran for 0 msecs: dnotify_init+0x0/0x40()
Calling initcall 0xc06d55d0: init_devpts_fs+0x0/0x40()
initcall 0xc06d55d0: init_devpts_fs+0x0/0x40() returned 0.
initcall 0xc06d55d0 ran for 0 msecs: init_devpts_fs+0x0/0x40()
Calling initcall 0xc06d5610: init_ext3_fs+0x0/0x80()
initcall 0xc06d5610: init_ext3_fs+0x0/0x80() returned 0.
initcall 0xc06d5610 ran for 0 msecs: init_ext3_fs+0x0/0x80()
Calling initcall 0xc06d5760: journal_init+0x0/0xe0()
initcall 0xc06d5760: journal_init+0x0/0xe0() returned 0.
initcall 0xc06d5760 ran for 0 msecs: journal_init+0x0/0xe0()
Calling initcall 0xc06d5840: init_ext2_fs+0x0/0x80()
initcall 0xc06d5840: init_ext2_fs+0x0/0x80() returned 0.
initcall 0xc06d5840 ran for 0 msecs: init_ext2_fs+0x0/0x80()
Calling initcall 0xc06d5900: init_ramfs_fs+0x0/0x10()
initcall 0xc06d5900: init_ramfs_fs+0x0/0x10() returned 0.
initcall 0xc06d5900 ran for 0 msecs: init_ramfs_fs+0x0/0x10()
Calling initcall 0xc06d5920: init_hugetlbfs_fs+0x0/0xa0()
initcall 0xc06d5920: init_hugetlbfs_fs+0x0/0xa0() returned 0.
initcall 0xc06d5920 ran for 0 msecs: init_hugetlbfs_fs+0x0/0xa0()
Calling initcall 0xc06d59c0: init_iso9660_fs+0x0/0x70()
initcall 0xc06d59c0: init_iso9660_fs+0x0/0x70() returned 0.
initcall 0xc06d59c0 ran for 0 msecs: init_iso9660_fs+0x0/0x70()
Calling initcall 0xc06d5aa0: init_nls_cp437+0x0/0x10()
initcall 0xc06d5aa0: init_nls_cp437+0x0/0x10() returned 0.
initcall 0xc06d5aa0 ran for 0 msecs: init_nls_cp437+0x0/0x10()
Calling initcall 0xc06d5ab0: init_nls_ascii+0x0/0x10()
initcall 0xc06d5ab0: init_nls_ascii+0x0/0x10() returned 0.
initcall 0xc06d5ab0 ran for 0 msecs: init_nls_ascii+0x0/0x10()
Calling initcall 0xc06d5ac0: init_udf_fs+0x0/0x70()
initcall 0xc06d5ac0: init_udf_fs+0x0/0x70() returned 0.
initcall 0xc06d5ac0 ran for 0 msecs: init_udf_fs+0x0/0x70()
Calling initcall 0xc06d5b30: ipc_init+0x0/0x20()
initcall 0xc06d5b30: ipc_init+0x0/0x20() returned 0.
initcall 0xc06d5b30 ran for 0 msecs: ipc_init+0x0/0x20()
Calling initcall 0xc06d5da0: ipc_sysctl_init+0x0/0x20()
initcall 0xc06d5da0: ipc_sysctl_init+0x0/0x20() returned 0.
initcall 0xc06d5da0 ran for 0 msecs: ipc_sysctl_init+0x0/0x20()
Calling initcall 0xc06d5dc0: init_mqueue_fs+0x0/0xd0()
initcall 0xc06d5dc0: init_mqueue_fs+0x0/0xd0() returned 0.
initcall 0xc06d5dc0 ran for 0 msecs: init_mqueue_fs+0x0/0xd0()
Calling initcall 0xc06d5fe0: key_proc_init+0x0/0x30()
initcall 0xc06d5fe0: key_proc_init+0x0/0x30() returned 0.
initcall 0xc06d5fe0 ran for 0 msecs: key_proc_init+0x0/0x30()
Calling initcall 0xc06d61b0: selinux_nf_ip_init+0x0/0x60()
SELinux: Registering netfilter hooks
initcall 0xc06d61b0: selinux_nf_ip_init+0x0/0x60() returned 0.
initcall 0xc06d61b0 ran for 3 msecs: selinux_nf_ip_init+0x0/0x60()
Calling initcall 0xc06d6380: init_sel_fs+0x0/0x60()
initcall 0xc06d6380: init_sel_fs+0x0/0x60() returned 0.
initcall 0xc06d6380 ran for 0 msecs: init_sel_fs+0x0/0x60()
Calling initcall 0xc06d63e0: selnl_init+0x0/0x50()
initcall 0xc06d63e0: selnl_init+0x0/0x50() returned 0.
initcall 0xc06d63e0 ran for 0 msecs: selnl_init+0x0/0x50()
Calling initcall 0xc06d6430: sel_netif_init+0x0/0x80()
initcall 0xc06d6430: sel_netif_init+0x0/0x80() returned 0.
initcall 0xc06d6430 ran for 0 msecs: sel_netif_init+0x0/0x80()
Calling initcall 0xc06d64b0: aurule_init+0x0/0x50()
initcall 0xc06d64b0: aurule_init+0x0/0x50() returned 0.
initcall 0xc06d64b0 ran for 0 msecs: aurule_init+0x0/0x50()
Calling initcall 0xc06d6500: crypto_algapi_init+0x0/0x10()
initcall 0xc06d6500: crypto_algapi_init+0x0/0x10() returned 0.
initcall 0xc06d6500 ran for 0 msecs: crypto_algapi_init+0x0/0x10()
Calling initcall 0xc06d6530: cryptomgr_init+0x0/0x10()
initcall 0xc06d6530: cryptomgr_init+0x0/0x10() returned 0.
initcall 0xc06d6530 ran for 0 msecs: cryptomgr_init+0x0/0x10()
Calling initcall 0xc06d6540: hmac_module_init+0x0/0x10()
initcall 0xc06d6540: hmac_module_init+0x0/0x10() returned 0.
initcall 0xc06d6540 ran for 0 msecs: hmac_module_init+0x0/0x10()
Calling initcall 0xc06d6550: init+0x0/0x10()
initcall 0xc06d6550: init+0x0/0x10() returned 0.
initcall 0xc06d6550 ran for 0 msecs: init+0x0/0x10()
Calling initcall 0xc06d6560: crypto_cbc_module_init+0x0/0x10()
initcall 0xc06d6560: crypto_cbc_module_init+0x0/0x10() returned 0.
initcall 0xc06d6560 ran for 0 msecs: crypto_cbc_module_init+0x0/0x10()
Calling initcall 0xc06d6910: noop_init+0x0/0x10()
io scheduler noop registered
initcall 0xc06d6910: noop_init+0x0/0x10() returned 0.
initcall 0xc06d6910 ran for 2 msecs: noop_init+0x0/0x10()
Calling initcall 0xc06d6920: cfq_init+0x0/0xd0()
io scheduler cfq registered (default)
initcall 0xc06d6920: cfq_init+0x0/0xd0() returned 0.
initcall 0xc06d6920 ran for 3 msecs: cfq_init+0x0/0xd0()
Calling initcall 0xc06d6be0: audit_classes_init+0x0/0x50()
initcall 0xc06d6be0: audit_classes_init+0x0/0x50() returned 0.
initcall 0xc06d6be0 ran for 0 msecs: audit_classes_init+0x0/0x50()
Calling initcall 0xc0244690: pci_init+0x0/0x30()
PCI: Linking AER extended capability on 0000:00:0b.0
PCI: Linking AER extended capability on 0000:00:0c.0
PCI: Linking AER extended capability on 0000:00:0d.0
PCI: Linking AER extended capability on 0000:00:0e.0
Boot video device is 0000:01:00.0
initcall 0xc0244690: pci_init+0x0/0x30() returned 0.
initcall 0xc0244690 ran for 32 msecs: pci_init+0x0/0x30()
Calling initcall 0xc06d72d0: pci_proc_init+0x0/0x70()
initcall 0xc06d72d0: pci_proc_init+0x0/0x70() returned 0.
initcall 0xc06d72d0 ran for 0 msecs: pci_proc_init+0x0/0x70()
Calling initcall 0xc06d7340: pcie_portdrv_init+0x0/0x60()
PCI: Setting latency timer of device 0000:00:0b.0 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:0b.0:pcie00]
Allocate Port Service[0000:00:0b.0:pcie03]
PCI: Setting latency timer of device 0000:00:0c.0 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:0c.0:pcie00]
Allocate Port Service[0000:00:0c.0:pcie03]
PCI: Setting latency timer of device 0000:00:0d.0 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:0d.0:pcie00]
Allocate Port Service[0000:00:0d.0:pcie03]
PCI: Setting latency timer of device 0000:00:0e.0 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:0e.0:pcie00]
Allocate Port Service[0000:00:0e.0:pcie03]
initcall 0xc06d7340: pcie_portdrv_init+0x0/0x60() returned 0.
initcall 0xc06d7340 ran for 62 msecs: pcie_portdrv_init+0x0/0x60()
Calling initcall 0xc06d73a0: aer_service_init+0x0/0x10()
initcall 0xc06d73a0: aer_service_init+0x0/0x10() returned 0.
initcall 0xc06d73a0 ran for 0 msecs: aer_service_init+0x0/0x10()
Calling initcall 0xc06d73b0: pci_hotplug_init+0x0/0xa0()
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
initcall 0xc06d73b0: pci_hotplug_init+0x0/0xa0() returned 0.
initcall 0xc06d73b0 ran for 4 msecs: pci_hotplug_init+0x0/0xa0()
Calling initcall 0xc06d7460: shpcd_init+0x0/0x70()
shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
initcall 0xc06d7460: shpcd_init+0x0/0x70() returned 0.
initcall 0xc06d7460 ran for 5 msecs: shpcd_init+0x0/0x70()
Calling initcall 0xc06d7700: fb_console_init+0x0/0x140()
initcall 0xc06d7700: fb_console_init+0x0/0x140() returned 0.
initcall 0xc06d7700 ran for 0 msecs: fb_console_init+0x0/0x140()
Calling initcall 0xc06d8250: vesafb_init+0x0/0x2b2()
initcall 0xc06d8250: vesafb_init+0x0/0x2b2() returned 0.
initcall 0xc06d8250 ran for 0 msecs: vesafb_init+0x0/0x2b2()
Calling initcall 0xc06d88dc: acpi_reserve_resources+0x0/0xc8()
initcall 0xc06d88dc: acpi_reserve_resources+0x0/0xc8() returned 0.
initcall 0xc06d88dc ran for 0 msecs: acpi_reserve_resources+0x0/0xc8()
Calling initcall 0xc06d9642: irqrouter_init_sysfs+0x0/0x33()
initcall 0xc06d9642: irqrouter_init_sysfs+0x0/0x33() returned 0.
initcall 0xc06d9642 ran for 0 msecs: irqrouter_init_sysfs+0x0/0x33()
Calling initcall 0xc06da080: rand_initialize+0x0/0x30()
initcall 0xc06da080: rand_initialize+0x0/0x30() returned 0.
initcall 0xc06da080 ran for 0 msecs: rand_initialize+0x0/0x30()
Calling initcall 0xc06da110: tty_init+0x0/0x1f0()
initcall 0xc06da110: tty_init+0x0/0x1f0() returned 0.
initcall 0xc06da110 ran for 2 msecs: tty_init+0x0/0x1f0()
Calling initcall 0xc06da300: pty_init+0x0/0x220()
initcall 0xc06da300: pty_init+0x0/0x220() returned 0.
initcall 0xc06da300 ran for 0 msecs: pty_init+0x0/0x220()
Calling initcall 0xc06dab50: raw_init+0x0/0xe0()
initcall 0xc06dab50: raw_init+0x0/0xe0() returned 0.
initcall 0xc06dab50 ran for 0 msecs: raw_init+0x0/0xe0()
Calling initcall 0xc06dac30: rtc_init+0x0/0x1c0()
Real Time Clock Driver v1.12ac
initcall 0xc06dac30: rtc_init+0x0/0x1c0() returned 0.
initcall 0xc06dac30 ran for 2 msecs: rtc_init+0x0/0x1c0()
Calling initcall 0xc06dadf0: hpet_init+0x0/0x60()
initcall 0xc06dadf0: hpet_init+0x0/0x60() returned 0.
initcall 0xc06dadf0 ran for 0 msecs: hpet_init+0x0/0x60()
Calling initcall 0xc06dae50: agp_init+0x0/0x40()
Linux agpgart interface v0.102 (c) Dave Jones
initcall 0xc06dae50: agp_init+0x0/0x40() returned 0.
initcall 0xc06dae50 ran for 3 msecs: agp_init+0x0/0x40()
Calling initcall 0xc06daf00: agp_ali_init+0x0/0x30()
initcall 0xc06daf00: agp_ali_init+0x0/0x30() returned 0.
initcall 0xc06daf00 ran for 0 msecs: agp_ali_init+0x0/0x30()
Calling initcall 0xc06daf30: agp_ati_init+0x0/0x30()
initcall 0xc06daf30: agp_ati_init+0x0/0x30() returned 0.
initcall 0xc06daf30 ran for 0 msecs: agp_ati_init+0x0/0x30()
Calling initcall 0xc06daf60: agp_amdk7_init+0x0/0x30()
initcall 0xc06daf60: agp_amdk7_init+0x0/0x30() returned 0.
initcall 0xc06daf60 ran for 0 msecs: agp_amdk7_init+0x0/0x30()
Calling initcall 0xc06daf90: agp_amd64_init+0x0/0xd0()
initcall 0xc06daf90: agp_amd64_init+0x0/0xd0() returned 0.
initcall 0xc06daf90 ran for 0 msecs: agp_amd64_init+0x0/0xd0()
Calling initcall 0xc06db060: agp_efficeon_init+0x0/0x40()
initcall 0xc06db060: agp_efficeon_init+0x0/0x40() returned 0.
initcall 0xc06db060 ran for 0 msecs: agp_efficeon_init+0x0/0x40()
Calling initcall 0xc06db0a0: agp_intel_init+0x0/0x30()
initcall 0xc06db0a0: agp_intel_init+0x0/0x30() returned 0.
initcall 0xc06db0a0 ran for 0 msecs: agp_intel_init+0x0/0x30()
Calling initcall 0xc06db0d0: agp_nvidia_init+0x0/0x30()
initcall 0xc06db0d0: agp_nvidia_init+0x0/0x30() returned 0.
initcall 0xc06db0d0 ran for 0 msecs: agp_nvidia_init+0x0/0x30()
Calling initcall 0xc06db100: agp_sis_init+0x0/0x30()
initcall 0xc06db100: agp_sis_init+0x0/0x30() returned 0.
initcall 0xc06db100 ran for 0 msecs: agp_sis_init+0x0/0x30()
Calling initcall 0xc06db130: agp_serverworks_init+0x0/0x30()
initcall 0xc06db130: agp_serverworks_init+0x0/0x30() returned 0.
initcall 0xc06db130 ran for 0 msecs: agp_serverworks_init+0x0/0x30()
Calling initcall 0xc06db160: agp_via_init+0x0/0x30()
initcall 0xc06db160: agp_via_init+0x0/0x30() returned 0.
initcall 0xc06db160 ran for 0 msecs: agp_via_init+0x0/0x30()
Calling initcall 0xc06db190: drm_core_init+0x0/0x140()
[drm] Initialized drm 1.1.0 20060810
initcall 0xc06db190: drm_core_init+0x0/0x140() returned 0.
initcall 0xc06db190 ran for 3 msecs: drm_core_init+0x0/0x140()
Calling initcall 0xc06db2d0: radeon_init+0x0/0x20()
ACPI: PCI Interrupt Link [APC3] enabled at IRQ 18
ACPI: PCI Interrupt 0000:01:00.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 16
[drm] Initialized radeon 1.27.0 20060524 on minor 0
initcall 0xc06db2d0: radeon_init+0x0/0x20() returned 0.
initcall 0xc06db2d0 ran for 15 msecs: radeon_init+0x0/0x20()
Calling initcall 0xc06db2f0: i810_init+0x0/0x20()
initcall 0xc06db2f0: i810_init+0x0/0x20() returned 0.
initcall 0xc06db2f0 ran for 0 msecs: i810_init+0x0/0x20()
Calling initcall 0xc06db310: i915_init+0x0/0x20()
initcall 0xc06db310: i915_init+0x0/0x20() returned 0.
initcall 0xc06db310 ran for 0 msecs: i915_init+0x0/0x20()
Calling initcall 0xc06db850: serial8250_init+0x0/0x130()
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
initcall 0xc06db850: serial8250_init+0x0/0x130() returned 0.
initcall 0xc06db850 ran for 6 msecs: serial8250_init+0x0/0x130()
Calling initcall 0xc06db980: serial8250_pnp_init+0x0/0x10()
00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
initcall 0xc06db980: serial8250_pnp_init+0x0/0x10() returned 0.
initcall 0xc06db980 ran for 4 msecs: serial8250_pnp_init+0x0/0x10()
Calling initcall 0xc06db990: serial8250_pci_init+0x0/0x20()
initcall 0xc06db990: serial8250_pci_init+0x0/0x20() returned 0.
initcall 0xc06db990 ran for 0 msecs: serial8250_pci_init+0x0/0x20()
Calling initcall 0xc06dbf40: parport_default_proc_register+0x0/0x20()
initcall 0xc06dbf40: parport_default_proc_register+0x0/0x20() returned 0.
initcall 0xc06dbf40 ran for 0 msecs: parport_default_proc_register+0x0/0x20()
Calling initcall 0xc06dc340: parport_pc_init+0x0/0x1d0()
parport_pc 00:09: reported by Plug and Play ACPI
parport0: PC-style at 0x378 (0x778), irq 7 [PCSPP,TRISTATE]
initcall 0xc06dc340: parport_pc_init+0x0/0x1d0() returned 0.
initcall 0xc06dc340 ran for 87 msecs: parport_pc_init+0x0/0x1d0()
Calling initcall 0xc06dc660: isa_bus_init+0x0/0x40()
initcall 0xc06dc660: isa_bus_init+0x0/0x40() returned 0.
initcall 0xc06dc660 ran for 0 msecs: isa_bus_init+0x0/0x40()
Calling initcall 0xc02e2fa0: topology_sysfs_init+0x0/0x50()
initcall 0xc02e2fa0: topology_sysfs_init+0x0/0x50() returned 0.
initcall 0xc02e2fa0 ran for 0 msecs: topology_sysfs_init+0x0/0x50()
Calling initcall 0xc06dc710: rd_init+0x0/0x1e0()
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
initcall 0xc06dc710: rd_init+0x0/0x1e0() returned 0.
initcall 0xc06dc710 ran for 6 msecs: rd_init+0x0/0x1e0()
Calling initcall 0xc06dceb0: cpqarray_init+0x0/0x2b0()
Compaq SMART2 Driver (v 2.6.0)
initcall 0xc06dceb0: cpqarray_init+0x0/0x2b0() returned 0.
initcall 0xc06dceb0 ran for 2 msecs: cpqarray_init+0x0/0x2b0()
Calling initcall 0xc06dd510: pkt_init+0x0/0x170()
initcall 0xc06dd510: pkt_init+0x0/0x170() returned 0.
initcall 0xc06dd510 ran for 0 msecs: pkt_init+0x0/0x170()
Calling initcall 0xc06dd680: e1000_init_module+0x0/0x90()
Intel(R) PRO/1000 Network Driver - version 7.3.20-k2-NAPI
Copyright (c) 1999-2006 Intel Corporation.
initcall 0xc06dd680: e1000_init_module+0x0/0x90() returned 0.
initcall 0xc06dd680 ran for 8 msecs: e1000_init_module+0x0/0x90()
Calling initcall 0xc06dd710: e100_init_module+0x0/0x60()
e100: Intel(R) PRO/100 Network Driver, 3.5.17-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
initcall 0xc06dd710: e100_init_module+0x0/0x60() returned 0.
initcall 0xc06dd710 ran for 8 msecs: e100_init_module+0x0/0x60()
Calling initcall 0xc06dd770: tg3_init+0x0/0x20()
initcall 0xc06dd770: tg3_init+0x0/0x20() returned 0.
initcall 0xc06dd770 ran for 0 msecs: tg3_init+0x0/0x20()
Calling initcall 0xc06dd790: skge_init_module+0x0/0x20()
initcall 0xc06dd790: skge_init_module+0x0/0x20() returned 0.
initcall 0xc06dd790 ran for 0 msecs: skge_init_module+0x0/0x20()
Calling initcall 0xc06dd7b0: rhine_init+0x0/0x90()
initcall 0xc06dd7b0: rhine_init+0x0/0x90() returned 0.
initcall 0xc06dd7b0 ran for 0 msecs: rhine_init+0x0/0x90()
Calling initcall 0xc06dd8c0: net_olddevs_init+0x0/0xa0()
initcall 0xc06dd8c0: net_olddevs_init+0x0/0xa0() returned 0.
initcall 0xc06dd8c0 ran for 0 msecs: net_olddevs_init+0x0/0xa0()
Calling initcall 0xc06dd960: loopback_init+0x0/0x10()
initcall 0xc06dd960: loopback_init+0x0/0x10() returned 0.
initcall 0xc06dd960 ran for 0 msecs: loopback_init+0x0/0x10()
Calling initcall 0xc06dd970: init_nic+0x0/0x30()
forcedeth.c: Reverse Engineered nForce ethernet driver. Version 0.60.
ACPI: PCI Interrupt Link [APCH] enabled at IRQ 23
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [APCH] -> GSI 23 (level, low) -> IRQ 17
PCI: Setting latency timer of device 0000:00:0a.0 to 64
forcedeth: using HIGHDMA
eth0: forcedeth.c: subsystem: 01043:8141 bound to 0000:00:0a.0
initcall 0xc06dd970: init_nic+0x0/0x30() returned 0.
initcall 0xc06dd970 ran for 518 msecs: init_nic+0x0/0x30()
Calling initcall 0xc06dd9a0: rtl8139_init_module+0x0/0x20()
8139too Fast Ethernet driver 0.9.28
ACPI: PCI Interrupt Link [APC2] enabled at IRQ 17
ACPI: PCI Interrupt 0000:05:07.0[A] -> Link [APC2] -> GSI 17 (level, low) -> IRQ 18
eth1: RealTek RTL8139 at 0xf8820000, 00:c0:df:03:68:5d, IRQ 18
eth1: Identified 8139 chip type 'RTL-8139B'
initcall 0xc06dd9a0: rtl8139_init_module+0x0/0x20() returned 0.
initcall 0xc06dd9a0 ran for 23 msecs: rtl8139_init_module+0x0/0x20()
Calling initcall 0xc06dd9c0: rtl8169_init_module+0x0/0x20()
initcall 0xc06dd9c0: rtl8169_init_module+0x0/0x20() returned 0.
initcall 0xc06dd9c0 ran for 0 msecs: rtl8169_init_module+0x0/0x20()
Calling initcall 0xc032a130: init_netconsole+0x0/0x80()
netconsole: not configured, aborting
initcall 0xc032a130: init_netconsole+0x0/0x80() returned 0.
initcall 0xc032a130 ran for 3 msecs: init_netconsole+0x0/0x80()
Calling initcall 0xc06ddcc0: spi_transport_init+0x0/0x30()
initcall 0xc06ddcc0: spi_transport_init+0x0/0x30() returned 0.
initcall 0xc06ddcc0 ran for 0 msecs: spi_transport_init+0x0/0x30()
Calling initcall 0xc06ddcf0: sas_transport_init+0x0/0xb0()
initcall 0xc06ddcf0: sas_transport_init+0x0/0xb0() returned 0.
initcall 0xc06ddcf0 ran for 0 msecs: sas_transport_init+0x0/0xb0()
Calling initcall 0xc06ddda0: sas_class_init+0x0/0x40()
initcall 0xc06ddda0: sas_class_init+0x0/0x40() returned 0.
initcall 0xc06ddda0 ran for 0 msecs: sas_class_init+0x0/0x40()
Calling initcall 0xc06ddde0: ahc_linux_init+0x0/0x70()
initcall 0xc06ddde0: ahc_linux_init+0x0/0x70() returned 0.
initcall 0xc06ddde0 ran for 0 msecs: ahc_linux_init+0x0/0x70()
Calling initcall 0xc06dde50: ahd_linux_init+0x0/0x80()
initcall 0xc06dde50: ahd_linux_init+0x0/0x80() returned 0.
initcall 0xc06dde50 ran for 0 msecs: ahd_linux_init+0x0/0x80()
Calling initcall 0xc06dded0: aic94xx_init+0x0/0x150()
aic94xx: Adaptec aic94xx SAS/SATA driver version 1.0.3 loaded
initcall 0xc06dded0: aic94xx_init+0x0/0x150() returned 0.
initcall 0xc06dded0 ran for 5 msecs: aic94xx_init+0x0/0x150()
Calling initcall 0xc06de020: init_sd+0x0/0xc0()
initcall 0xc06de020: init_sd+0x0/0xc0() returned 0.
initcall 0xc06de020 ran for 0 msecs: init_sd+0x0/0xc0()
Calling initcall 0xc06de0e0: init_sr+0x0/0x30()
initcall 0xc06de0e0: init_sr+0x0/0x30() returned 0.
initcall 0xc06de0e0 ran for 0 msecs: init_sr+0x0/0x30()
Calling initcall 0xc06de110: init_sg+0x0/0x140()
initcall 0xc06de110: init_sg+0x0/0x140() returned 0.
initcall 0xc06de110 ran for 0 msecs: init_sg+0x0/0x140()
Calling initcall 0xc06de250: init_ch_module+0x0/0xa0()
SCSI Media Changer driver v0.25
initcall 0xc06de250: init_ch_module+0x0/0xa0() returned 0.
initcall 0xc06de250 ran for 2 msecs: init_ch_module+0x0/0xa0()
Calling initcall 0xc06de370: ahci_init+0x0/0x20()
initcall 0xc06de370: ahci_init+0x0/0x20() returned 0.
initcall 0xc06de370 ran for 0 msecs: ahci_init+0x0/0x20()
Calling initcall 0xc06de390: k2_sata_init+0x0/0x20()
initcall 0xc06de390: k2_sata_init+0x0/0x20() returned 0.
initcall 0xc06de390 ran for 0 msecs: k2_sata_init+0x0/0x20()
Calling initcall 0xc06de3b0: piix_init+0x0/0x30()
initcall 0xc06de3b0: piix_init+0x0/0x30() returned 0.
initcall 0xc06de3b0 ran for 0 msecs: piix_init+0x0/0x30()
Calling initcall 0xc06de3e0: pdc_ata_init+0x0/0x20()
initcall 0xc06de3e0: pdc_ata_init+0x0/0x20() returned 0.
initcall 0xc06de3e0 ran for 0 msecs: pdc_ata_init+0x0/0x20()
Calling initcall 0xc06de400: qs_ata_init+0x0/0x20()
initcall 0xc06de400: qs_ata_init+0x0/0x20() returned 0.
initcall 0xc06de400 ran for 0 msecs: qs_ata_init+0x0/0x20()
Calling initcall 0xc06de420: sil_init+0x0/0x20()
initcall 0xc06de420: sil_init+0x0/0x20() returned 0.
initcall 0xc06de420 ran for 0 msecs: sil_init+0x0/0x20()
Calling initcall 0xc06de440: sil24_init+0x0/0x20()
initcall 0xc06de440: sil24_init+0x0/0x20() returned 0.
initcall 0xc06de440 ran for 0 msecs: sil24_init+0x0/0x20()
Calling initcall 0xc06de460: svia_init+0x0/0x20()
initcall 0xc06de460: svia_init+0x0/0x20() returned 0.
initcall 0xc06de460 ran for 0 msecs: svia_init+0x0/0x20()
Calling initcall 0xc06de480: vsc_sata_init+0x0/0x20()
initcall 0xc06de480: vsc_sata_init+0x0/0x20() returned 0.
initcall 0xc06de480 ran for 0 msecs: vsc_sata_init+0x0/0x20()
Calling initcall 0xc06de4a0: sis_init+0x0/0x20()
initcall 0xc06de4a0: sis_init+0x0/0x20() returned 0.
initcall 0xc06de4a0 ran for 0 msecs: sis_init+0x0/0x20()
Calling initcall 0xc06de4c0: pdc_sata_init+0x0/0x20()
initcall 0xc06de4c0: pdc_sata_init+0x0/0x20() returned 0.
initcall 0xc06de4c0 ran for 0 msecs: pdc_sata_init+0x0/0x20()
Calling initcall 0xc06de4e0: nv_init+0x0/0x20()
initcall 0xc06de4e0: nv_init+0x0/0x20() returned 0.
initcall 0xc06de4e0 ran for 0 msecs: nv_init+0x0/0x20()
Calling initcall 0xc06de500: uli_init+0x0/0x20()
initcall 0xc06de500: uli_init+0x0/0x20() returned 0.
initcall 0xc06de500 ran for 0 msecs: uli_init+0x0/0x20()
Calling initcall 0xc06de520: mv_init+0x0/0x20()
initcall 0xc06de520: mv_init+0x0/0x20() returned 0.
initcall 0xc06de520 ran for 0 msecs: mv_init+0x0/0x20()
Calling initcall 0xc06de540: adma_ata_init+0x0/0x20()
initcall 0xc06de540: adma_ata_init+0x0/0x20() returned 0.
initcall 0xc06de540 ran for 0 msecs: adma_ata_init+0x0/0x20()
Calling initcall 0xc06de560: ali_init+0x0/0x20()
initcall 0xc06de560: ali_init+0x0/0x20() returned 0.
initcall 0xc06de560 ran for 0 msecs: ali_init+0x0/0x20()
Calling initcall 0xc06de580: amd_init+0x0/0x20()
pata_amd 0000:00:06.0: version 0.3.8
PCI: Setting latency timer of device 0000:00:06.0 to 64
scsi0 : pata_amd
scsi1 : pata_amd
ata1: PATA max UDMA/133 cmd 0x000101f0 ctl 0x000103f6 bmdma 0x0001f000 irq 14
ata2: PATA max UDMA/133 cmd 0x00010170 ctl 0x00010376 bmdma 0x0001f008 irq 15
ata1.00: ata_hpa_resize 1: sectors = 78177792, hpa_sectors = 78177792
ata1.00: ATA-5: MAXTOR 6L040J2, AR1.0500, max UDMA/133
ata1.00: 78177792 sectors, multi 1: LBA
ata1.01: ata_hpa_resize 1: sectors = 156301488, hpa_sectors = 156301488
ata1.01: ATA-6: ST380011A, 3.06, max UDMA/100
ata1.01: 156301488 sectors, multi 1: LBA48
ata1.00: ata_hpa_resize 1: sectors = 78177792, hpa_sectors = 78177792
ata1.00: configured for UDMA/133
ata1.01: ata_hpa_resize 1: sectors = 156301488, hpa_sectors = 156301488
ata1.01: configured for UDMA/100
ATA: abnormal status 0x38 on port 0x00010177
scsi 0:0:0:0: Direct-Access ATA MAXTOR 6L040J2 AR1. PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 78177792 512-byte hardware sectors (40027 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:0:0: [sda] 78177792 512-byte hardware sectors (40027 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sda: sda1 sda2 sda3 sda4 < sda5 >
sd 0:0:0:0: [sda] Attached SCSI disk
sd 0:0:0:0: Attached scsi generic sg0 type 0
scsi 0:0:1:0: Direct-Access ATA ST380011A 3.06 PQ: 0 ANSI: 5
sd 0:0:1:0: [sdb] 156301488 512-byte hardware sectors (80026 MB)
sd 0:0:1:0: [sdb] Write Protect is off
sd 0:0:1:0: [sdb] Mode Sense: 00 3a 00 00
sd 0:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:1:0: [sdb] 156301488 512-byte hardware sectors (80026 MB)
sd 0:0:1:0: [sdb] Write Protect is off
sd 0:0:1:0: [sdb] Mode Sense: 00 3a 00 00
sd 0:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sdb: sdb1 sdb2 sdb3 < sdb5 >
sd 0:0:1:0: [sdb] Attached SCSI disk
sd 0:0:1:0: Attached scsi generic sg1 type 0
initcall 0xc06de580: amd_init+0x0/0x20() returned 0.
initcall 0xc06de580 ran for 625 msecs: amd_init+0x0/0x20()
Calling initcall 0xc06de5a0: artop_init+0x0/0x20()
initcall 0xc06de5a0: artop_init+0x0/0x20() returned 0.
initcall 0xc06de5a0 ran for 0 msecs: artop_init+0x0/0x20()
Calling initcall 0xc06de5c0: atiixp_init+0x0/0x20()
initcall 0xc06de5c0: atiixp_init+0x0/0x20() returned 0.
initcall 0xc06de5c0 ran for 0 msecs: atiixp_init+0x0/0x20()
Calling initcall 0xc06de5e0: cmd64x_init+0x0/0x20()
initcall 0xc06de5e0: cmd64x_init+0x0/0x20() returned 0.
initcall 0xc06de5e0 ran for 0 msecs: cmd64x_init+0x0/0x20()
Calling initcall 0xc06de600: cs5520_init+0x0/0x20()
initcall 0xc06de600: cs5520_init+0x0/0x20() returned 0.
initcall 0xc06de600 ran for 0 msecs: cs5520_init+0x0/0x20()
Calling initcall 0xc06de620: cs5530_init+0x0/0x20()
initcall 0xc06de620: cs5530_init+0x0/0x20() returned 0.
initcall 0xc06de620 ran for 0 msecs: cs5530_init+0x0/0x20()
Calling initcall 0xc06de640: cs5535_init+0x0/0x20()
initcall 0xc06de640: cs5535_init+0x0/0x20() returned 0.
initcall 0xc06de640 ran for 0 msecs: cs5535_init+0x0/0x20()
Calling initcall 0xc06de660: cy82c693_init+0x0/0x20()
initcall 0xc06de660: cy82c693_init+0x0/0x20() returned 0.
initcall 0xc06de660 ran for 0 msecs: cy82c693_init+0x0/0x20()
Calling initcall 0xc06de680: efar_init+0x0/0x20()
initcall 0xc06de680: efar_init+0x0/0x20() returned 0.
initcall 0xc06de680 ran for 0 msecs: efar_init+0x0/0x20()
Calling initcall 0xc06de6a0: hpt36x_init+0x0/0x20()
initcall 0xc06de6a0: hpt36x_init+0x0/0x20() returned 0.
initcall 0xc06de6a0 ran for 0 msecs: hpt36x_init+0x0/0x20()
Calling initcall 0xc06de6c0: hpt37x_init+0x0/0x20()
initcall 0xc06de6c0: hpt37x_init+0x0/0x20() returned 0.
initcall 0xc06de6c0 ran for 0 msecs: hpt37x_init+0x0/0x20()
Calling initcall 0xc06de6e0: hpt3x2n_init+0x0/0x20()
initcall 0xc06de6e0: hpt3x2n_init+0x0/0x20() returned 0.
initcall 0xc06de6e0 ran for 0 msecs: hpt3x2n_init+0x0/0x20()
Calling initcall 0xc06de700: hpt3x3_init+0x0/0x20()
initcall 0xc06de700: hpt3x3_init+0x0/0x20() returned 0.
initcall 0xc06de700 ran for 0 msecs: hpt3x3_init+0x0/0x20()
Calling initcall 0xc06de720: it821x_init+0x0/0x20()
initcall 0xc06de720: it821x_init+0x0/0x20() returned 0.
initcall 0xc06de720 ran for 0 msecs: it821x_init+0x0/0x20()
Calling initcall 0xc06de740: jmicron_init+0x0/0x20()
initcall 0xc06de740: jmicron_init+0x0/0x20() returned 0.
initcall 0xc06de740 ran for 0 msecs: jmicron_init+0x0/0x20()
Calling initcall 0xc06de760: netcell_init+0x0/0x20()
initcall 0xc06de760: netcell_init+0x0/0x20() returned 0.
initcall 0xc06de760 ran for 0 msecs: netcell_init+0x0/0x20()
Calling initcall 0xc06de780: ns87410_init+0x0/0x20()
initcall 0xc06de780: ns87410_init+0x0/0x20() returned 0.
initcall 0xc06de780 ran for 0 msecs: ns87410_init+0x0/0x20()
Calling initcall 0xc06de7a0: opti_init+0x0/0x20()
initcall 0xc06de7a0: opti_init+0x0/0x20() returned 0.
initcall 0xc06de7a0 ran for 0 msecs: opti_init+0x0/0x20()
Calling initcall 0xc06de7c0: optidma_init+0x0/0x20()
initcall 0xc06de7c0: optidma_init+0x0/0x20() returned 0.
initcall 0xc06de7c0 ran for 0 msecs: optidma_init+0x0/0x20()
Calling initcall 0xc06de7e0: marvell_init+0x0/0x20()
initcall 0xc06de7e0: marvell_init+0x0/0x20() returned 0.
initcall 0xc06de7e0 ran for 0 msecs: marvell_init+0x0/0x20()
Calling initcall 0xc06de800: mpiix_init+0x0/0x20()
initcall 0xc06de800: mpiix_init+0x0/0x20() returned 0.
initcall 0xc06de800 ran for 0 msecs: mpiix_init+0x0/0x20()
Calling initcall 0xc06de820: oldpiix_init+0x0/0x20()
initcall 0xc06de820: oldpiix_init+0x0/0x20() returned 0.
initcall 0xc06de820 ran for 0 msecs: oldpiix_init+0x0/0x20()
Calling initcall 0xc06de840: pdc2027x_init+0x0/0x20()
initcall 0xc06de840: pdc2027x_init+0x0/0x20() returned 0.
initcall 0xc06de840 ran for 0 msecs: pdc2027x_init+0x0/0x20()
Calling initcall 0xc06de860: pdc202xx_init+0x0/0x20()
initcall 0xc06de860: pdc202xx_init+0x0/0x20() returned 0.
initcall 0xc06de860 ran for 0 msecs: pdc202xx_init+0x0/0x20()
Calling initcall 0xc06dea10: qdi_init+0x0/0x220()
initcall 0xc06dea10: qdi_init+0x0/0x220() returned -19.
initcall 0xc06dea10 ran for 0 msecs: qdi_init+0x0/0x220()
Calling initcall 0xc06dec30: radisys_init+0x0/0x20()
initcall 0xc06dec30: radisys_init+0x0/0x20() returned 0.
initcall 0xc06dec30 ran for 0 msecs: radisys_init+0x0/0x20()
Calling initcall 0xc06dec50: rz1000_init+0x0/0x20()
initcall 0xc06dec50: rz1000_init+0x0/0x20() returned 0.
initcall 0xc06dec50 ran for 0 msecs: rz1000_init+0x0/0x20()
Calling initcall 0xc06dec70: sc1200_init+0x0/0x20()
initcall 0xc06dec70: sc1200_init+0x0/0x20() returned 0.
initcall 0xc06dec70 ran for 0 msecs: sc1200_init+0x0/0x20()
Calling initcall 0xc06dec90: serverworks_init+0x0/0x20()
initcall 0xc06dec90: serverworks_init+0x0/0x20() returned 0.
initcall 0xc06dec90 ran for 0 msecs: serverworks_init+0x0/0x20()
Calling initcall 0xc06decb0: sil680_init+0x0/0x20()
initcall 0xc06decb0: sil680_init+0x0/0x20() returned 0.
initcall 0xc06decb0 ran for 0 msecs: sil680_init+0x0/0x20()
Calling initcall 0xc06decd0: via_init+0x0/0x20()
initcall 0xc06decd0: via_init+0x0/0x20() returned 0.
initcall 0xc06decd0 ran for 0 msecs: via_init+0x0/0x20()
Calling initcall 0xc06decf0: sl82c105_init+0x0/0x20()
initcall 0xc06decf0: sl82c105_init+0x0/0x20() returned 0.
initcall 0xc06decf0 ran for 0 msecs: sl82c105_init+0x0/0x20()
Calling initcall 0xc06ded10: winbond_init+0x0/0x260()
initcall 0xc06ded10: winbond_init+0x0/0x260() returned -19.
initcall 0xc06ded10 ran for 0 msecs: winbond_init+0x0/0x260()
Calling initcall 0xc06def70: sis_init+0x0/0x20()
initcall 0xc06def70: sis_init+0x0/0x20() returned 0.
initcall 0xc06def70 ran for 0 msecs: sis_init+0x0/0x20()
Calling initcall 0xc06def90: triflex_init+0x0/0x20()
initcall 0xc06def90: triflex_init+0x0/0x20() returned 0.
initcall 0xc06def90 ran for 0 msecs: triflex_init+0x0/0x20()
Calling initcall 0xc06defb0: ata_generic_init+0x0/0x20()
initcall 0xc06defb0: ata_generic_init+0x0/0x20() returned 0.
initcall 0xc06defb0 ran for 0 msecs: ata_generic_init+0x0/0x20()
Calling initcall 0xc06defd0: fusion_init+0x0/0xe0()
Fusion MPT base driver 3.04.04
Copyright (c) 1999-2007 LSI Logic Corporation
initcall 0xc06defd0: fusion_init+0x0/0xe0() returned 0.
initcall 0xc06defd0 ran for 6 msecs: fusion_init+0x0/0xe0()
Calling initcall 0xc06df0b0: mptspi_init+0x0/0xb0()
Fusion MPT SPI Host driver 3.04.04
initcall 0xc06df0b0: mptspi_init+0x0/0xb0() returned 0.
initcall 0xc06df0b0 ran for 3 msecs: mptspi_init+0x0/0xb0()
Calling initcall 0xc06df160: mptctl_init+0x0/0x100()
Fusion MPT misc device (ioctl) driver 3.04.04
mptctl: Registered with Fusion MPT base driver
mptctl: /dev/mptctl @ (major,minor=10,220)
initcall 0xc06df160: mptctl_init+0x0/0x100() returned 0.
initcall 0xc06df160 ran for 11 msecs: mptctl_init+0x0/0x100()
Calling initcall 0xc06df260: cdrom_init+0x0/0x10()
initcall 0xc06df260: cdrom_init+0x0/0x10() returned 0.
initcall 0xc06df260 ran for 0 msecs: cdrom_init+0x0/0x10()
Calling initcall 0xc06df3c0: nonstatic_sysfs_init+0x0/0x10()
initcall 0xc06df3c0: nonstatic_sysfs_init+0x0/0x10() returned 0.
initcall 0xc06df3c0 ran for 0 msecs: nonstatic_sysfs_init+0x0/0x10()
Calling initcall 0xc06df3d0: yenta_socket_init+0x0/0x20()
initcall 0xc06df3d0: yenta_socket_init+0x0/0x20() returned 0.
initcall 0xc06df3d0 ran for 0 msecs: yenta_socket_init+0x0/0x20()
Calling initcall 0xc06df650: mon_init+0x0/0xf0()
usbmon: debugfs is not available
initcall 0xc06df650: mon_init+0x0/0xf0() returned -19.
initcall 0xc06df650 ran for 2 msecs: mon_init+0x0/0xf0()
Calling initcall 0xc06df7e0: ehci_hcd_init+0x0/0x20()
ACPI: PCI Interrupt Link [APCL] enabled at IRQ 22
ACPI: PCI Interrupt 0000:00:02.1[B] -> Link [APCL] -> GSI 22 (level, low) -> IRQ 19
PCI: Setting latency timer of device 0000:00:02.1 to 64
ehci_hcd 0000:00:02.1: EHCI Host Controller
ehci_hcd 0000:00:02.1: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:02.1: debug port 1
PCI: cache line size of 64 is not supported by device 0000:00:02.1
ehci_hcd 0000:00:02.1: irq 19, io mem 0xfeb00000
ehci_hcd 0000:00:02.1: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 10 ports detected
initcall 0xc06df7e0: ehci_hcd_init+0x0/0x20() returned 0.
initcall 0xc06df7e0 ran for 149 msecs: ehci_hcd_init+0x0/0x20()
Calling initcall 0xc06df800: ohci_hcd_mod_init+0x0/0x50()
ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
ACPI: PCI Interrupt Link [APCF] enabled at IRQ 21
ACPI: PCI Interrupt 0000:00:02.0[A] -> Link [APCF] -> GSI 21 (level, low) -> IRQ 20
PCI: Setting latency timer of device 0000:00:02.0 to 64
ohci_hcd 0000:00:02.0: OHCI Host Controller
ohci_hcd 0000:00:02.0: new USB bus registered, assigned bus number 2
ohci_hcd 0000:00:02.0: irq 20, io mem 0xda102000
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 10 ports detected
initcall 0xc06df800: ohci_hcd_mod_init+0x0/0x50() returned 0.
initcall 0xc06df800 ran for 190 msecs: ohci_hcd_mod_init+0x0/0x50()
Calling initcall 0xc06df850: uhci_hcd_init+0x0/0xb0()
USB Universal Host Controller Interface driver v3.0
initcall 0xc06df850: uhci_hcd_init+0x0/0xb0() returned 0.
initcall 0xc06df850 ran for 4 msecs: uhci_hcd_init+0x0/0xb0()
Calling initcall 0xc06df9b0: i8042_init+0x0/0x410()
PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
initcall 0xc06df9b0: i8042_init+0x0/0x410() returned 0.
initcall 0xc06df9b0 ran for 15 msecs: i8042_init+0x0/0x410()
Calling initcall 0xc06dfdc0: serport_init+0x0/0x30()
initcall 0xc06dfdc0: serport_init+0x0/0x30() returned 0.
initcall 0xc06dfdc0 ran for 0 msecs: serport_init+0x0/0x30()
Calling initcall 0xc06dff10: mousedev_init+0x0/0xd0()
mice: PS/2 mouse device common for all mice
initcall 0xc06dff10: mousedev_init+0x0/0xd0() returned 0.
initcall 0xc06dff10 ran for 3 msecs: mousedev_init+0x0/0xd0()
Calling initcall 0xc06dffe0: evdev_init+0x0/0x10()
initcall 0xc06dffe0: evdev_init+0x0/0x10() returned 0.
initcall 0xc06dffe0 ran for 0 msecs: evdev_init+0x0/0x10()
Calling initcall 0xc06dfff0: atkbd_init+0x0/0x20()
initcall 0xc06dfff0: atkbd_init+0x0/0x20() returned 0.
initcall 0xc06dfff0 ran for 0 msecs: atkbd_init+0x0/0x20()
Calling initcall 0xc06e0010: psmouse_init+0x0/0x60()
input: AT Translated Set 2 keyboard as /class/input/input0
initcall 0xc06e0010: psmouse_init+0x0/0x60() returned 0.
initcall 0xc06e0010 ran for 17 msecs: psmouse_init+0x0/0x60()
Calling initcall 0xc06e0170: md_init+0x0/0xe0()
initcall 0xc06e0170: md_init+0x0/0xe0() returned 0.
initcall 0xc06e0170 ran for 0 msecs: md_init+0x0/0xe0()
Calling initcall 0xc06e0b50: pci_eisa_init_module+0x0/0x20()
initcall 0xc06e0b50: pci_eisa_init_module+0x0/0x20() returned 0.
initcall 0xc06e0b50 ran for 0 msecs: pci_eisa_init_module+0x0/0x20()
Calling initcall 0xc06e0b70: virtual_eisa_root_init+0x0/0x60()
EISA: Probing bus 0 at eisa.0
Cannot allocate resource for EISA slot 4
EISA: Detected 0 cards.
initcall 0xc06e0b70: virtual_eisa_root_init+0x0/0x60() returned 0.
initcall 0xc06e0b70 ran for 8 msecs: virtual_eisa_root_init+0x0/0x60()
Calling initcall 0xc06e1430: hid_init+0x0/0x80()
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
initcall 0xc06e1430: hid_init+0x0/0x80() returned 0.
initcall 0xc06e1430 ran for 12 msecs: hid_init+0x0/0x80()
Calling initcall 0xc06e14d0: init_soundcore+0x0/0x60()
initcall 0xc06e14d0: init_soundcore+0x0/0x60() returned 0.
initcall 0xc06e14d0 ran for 0 msecs: init_soundcore+0x0/0x60()
Calling initcall 0xc06e1580: alsa_sound_init+0x0/0x80()
Advanced Linux Sound Architecture Driver Version 1.0.14 (Thu May 31 09:03:25 2007 UTC).
initcall 0xc06e1580: alsa_sound_init+0x0/0x80() returned 0.
initcall 0xc06e1580 ran for 7 msecs: alsa_sound_init+0x0/0x80()
Calling initcall 0xc06e1780: alsa_hwdep_init+0x0/0x60()
initcall 0xc06e1780: alsa_hwdep_init+0x0/0x60() returned 0.
initcall 0xc06e1780 ran for 0 msecs: alsa_hwdep_init+0x0/0x60()
Calling initcall 0xc06e17e0: alsa_timer_init+0x0/0x170()
initcall 0xc06e17e0: alsa_timer_init+0x0/0x170() returned 0.
initcall 0xc06e17e0 ran for 0 msecs: alsa_timer_init+0x0/0x170()
Calling initcall 0xc06e1950: rtctimer_init+0x0/0x100()
initcall 0xc06e1950: rtctimer_init+0x0/0x100() returned 0.
initcall 0xc06e1950 ran for 0 msecs: rtctimer_init+0x0/0x100()
Calling initcall 0xc06e1a50: alsa_pcm_init+0x0/0x60()
initcall 0xc06e1a50: alsa_pcm_init+0x0/0x60() returned 0.
initcall 0xc06e1a50 ran for 0 msecs: alsa_pcm_init+0x0/0x60()
Calling initcall 0xc06e1ab0: snd_mem_init+0x0/0x30()
initcall 0xc06e1ab0: snd_mem_init+0x0/0x30() returned 0.
initcall 0xc06e1ab0 ran for 0 msecs: snd_mem_init+0x0/0x30()
Calling initcall 0xc06e1ae0: alsa_rawmidi_init+0x0/0xa0()
initcall 0xc06e1ae0: alsa_rawmidi_init+0x0/0xa0() returned 0.
initcall 0xc06e1ae0 ran for 0 msecs: alsa_rawmidi_init+0x0/0xa0()
Calling initcall 0xc06e1b80: alsa_mixer_oss_init+0x0/0x40()
initcall 0xc06e1b80: alsa_mixer_oss_init+0x0/0x40() returned 0.
initcall 0xc06e1b80 ran for 0 msecs: alsa_mixer_oss_init+0x0/0x40()
Calling initcall 0xc06e1bc0: alsa_pcm_oss_init+0x0/0xb0()
initcall 0xc06e1bc0: alsa_pcm_oss_init+0x0/0xb0() returned 0.
initcall 0xc06e1bc0 ran for 0 msecs: alsa_pcm_oss_init+0x0/0xb0()
Calling initcall 0xc06e1c70: alsa_seq_oss_init+0x0/0x1a0()
initcall 0xc06e1c70: alsa_seq_oss_init+0x0/0x1a0() returned 0.
initcall 0xc06e1c70 ran for 0 msecs: alsa_seq_oss_init+0x0/0x1a0()
Calling initcall 0xc06e2000: alsa_seq_init+0x0/0x60()
initcall 0xc06e2000: alsa_seq_init+0x0/0x60() returned 0.
initcall 0xc06e2000 ran for 0 msecs: alsa_seq_init+0x0/0x60()
Calling initcall 0xc06e22e0: alsa_seq_device_init+0x0/0x60()
initcall 0xc06e22e0: alsa_seq_device_init+0x0/0x60() returned 0.
initcall 0xc06e22e0 ran for 0 msecs: alsa_seq_device_init+0x0/0x60()
Calling initcall 0xc06e2340: alsa_seq_midi_event_init+0x0/0x10()
initcall 0xc06e2340: alsa_seq_midi_event_init+0x0/0x10() returned 0.
initcall 0xc06e2340 ran for 0 msecs: alsa_seq_midi_event_init+0x0/0x10()
Calling initcall 0xc06e24c0: alsa_seq_dummy_init+0x0/0xd0()
initcall 0xc06e24c0: alsa_seq_dummy_init+0x0/0xd0() returned 0.
initcall 0xc06e24c0 ran for 0 msecs: alsa_seq_dummy_init+0x0/0xd0()
Calling initcall 0xc06e2590: alsa_seq_midi_init+0x0/0x40()
initcall 0xc06e2590: alsa_seq_midi_init+0x0/0x40() returned 0.
initcall 0xc06e2590 ran for 0 msecs: alsa_seq_midi_init+0x0/0x40()
Calling initcall 0xc06e25d0: alsa_seq_midi_emul_init+0x0/0x10()
initcall 0xc06e25d0: alsa_seq_midi_emul_init+0x0/0x10() returned 0.
initcall 0xc06e25d0 ran for 0 msecs: alsa_seq_midi_emul_init+0x0/0x10()
Calling initcall 0xc06e25e0: alsa_virmidi_init+0x0/0x10()
initcall 0xc06e25e0: alsa_virmidi_init+0x0/0x10() returned 0.
initcall 0xc06e25e0 ran for 0 msecs: alsa_virmidi_init+0x0/0x10()
Calling initcall 0xc06e25f0: alsa_mpu401_uart_init+0x0/0x10()
initcall 0xc06e25f0: alsa_mpu401_uart_init+0x0/0x10() returned 0.
initcall 0xc06e25f0 ran for 0 msecs: alsa_mpu401_uart_init+0x0/0x10()
Calling initcall 0xc06e2600: alsa_card_mpu401_init+0x0/0xe0()
input: ImPS/2 Generic Wheel Mouse as /class/input/input1
initcall 0xc06e2600: alsa_card_mpu401_init+0x0/0xe0() returned 0.
initcall 0xc06e2600 ran for 458 msecs: alsa_card_mpu401_init+0x0/0xe0()
Calling initcall 0xc06e26e0: alsa_card_intel8x0_init+0x0/0x20()
ACPI: PCI Interrupt Link [APCJ] enabled at IRQ 20
ACPI: PCI Interrupt 0000:00:04.0[A] -> Link [APCJ] -> GSI 20 (level, low) -> IRQ 21
PCI: Setting latency timer of device 0000:00:04.0 to 64
intel8x0_measure_ac97_clock: measured 50764 usecs
intel8x0: clocking to 46859
initcall 0xc06e26e0: alsa_card_intel8x0_init+0x0/0x20() returned 0.
initcall 0xc06e26e0 ran for 321 msecs: alsa_card_intel8x0_init+0x0/0x20()
Calling initcall 0xc06e2700: alsa_card_via82xx_init+0x0/0x20()
initcall 0xc06e2700: alsa_card_via82xx_init+0x0/0x20() returned 0.
initcall 0xc06e2700 ran for 0 msecs: alsa_card_via82xx_init+0x0/0x20()
Calling initcall 0xc06e2720: alsa_ac97_init+0x0/0x10()
initcall 0xc06e2720: alsa_ac97_init+0x0/0x10() returned 0.
initcall 0xc06e2720 ran for 0 msecs: alsa_ac97_init+0x0/0x10()
Calling initcall 0xc06e2730: alsa_card_emu10k1_init+0x0/0x20()
initcall 0xc06e2730: alsa_card_emu10k1_init+0x0/0x20() returned 0.
initcall 0xc06e2730 ran for 0 msecs: alsa_card_emu10k1_init+0x0/0x20()
Calling initcall 0xc06e2750: alsa_emu10k1_synth_init+0x0/0x20()
initcall 0xc06e2750: alsa_emu10k1_synth_init+0x0/0x20() returned 0.
initcall 0xc06e2750 ran for 0 msecs: alsa_emu10k1_synth_init+0x0/0x20()
Calling initcall 0xc06e2770: alsa_card_emu10k1x_init+0x0/0x20()
initcall 0xc06e2770: alsa_card_emu10k1x_init+0x0/0x20() returned 0.
initcall 0xc06e2770 ran for 0 msecs: alsa_card_emu10k1x_init+0x0/0x20()
Calling initcall 0xc06e2790: alsa_card_azx_init+0x0/0x20()
initcall 0xc06e2790: alsa_card_azx_init+0x0/0x20() returned 0.
initcall 0xc06e2790 ran for 0 msecs: alsa_card_azx_init+0x0/0x20()
Calling initcall 0xc06e27b0: alsa_util_mem_init+0x0/0x10()
initcall 0xc06e27b0: alsa_util_mem_init+0x0/0x10() returned 0.
initcall 0xc06e27b0 ran for 0 msecs: alsa_util_mem_init+0x0/0x10()
Calling initcall 0xc06e27c0: alsa_emux_init+0x0/0x10()
initcall 0xc06e27c0: alsa_emux_init+0x0/0x10() returned 0.
initcall 0xc06e27c0 ran for 0 msecs: alsa_emux_init+0x0/0x10()
Calling initcall 0xc06e27e0: alsa_sound_last_init+0x0/0x70()
ALSA device list:
#0: NVidia CK804 with ALC850 at irq 21
#1: MPU-401 UART at 0x330, irq 10
initcall 0xc06e27e0: alsa_sound_last_init+0x0/0x70() returned 0.
initcall 0xc06e27e0 ran for 8 msecs: alsa_sound_last_init+0x0/0x70()
Calling initcall 0xc06e4a10: flow_cache_init+0x0/0x1a0()
initcall 0xc06e4a10: flow_cache_init+0x0/0x1a0() returned 0.
initcall 0xc06e4a10 ran for 0 msecs: flow_cache_init+0x0/0x1a0()
Calling initcall 0xc06e4c40: llc_init+0x0/0x80()
initcall 0xc06e4c40: llc_init+0x0/0x80() returned 0.
initcall 0xc06e4c40 ran for 0 msecs: llc_init+0x0/0x80()
Calling initcall 0xc06e4cc0: snap_init+0x0/0x40()
initcall 0xc06e4cc0: snap_init+0x0/0x40() returned 0.
initcall 0xc06e4cc0 ran for 0 msecs: snap_init+0x0/0x40()
Calling initcall 0xc06e4d00: rif_init+0x0/0x70()
initcall 0xc06e4d00: rif_init+0x0/0x70() returned 0.
initcall 0xc06e4d00 ran for 0 msecs: rif_init+0x0/0x70()
Calling initcall 0xc06e4e40: blackhole_module_init+0x0/0x10()
initcall 0xc06e4e40: blackhole_module_init+0x0/0x10() returned 0.
initcall 0xc06e4e40 ran for 0 msecs: blackhole_module_init+0x0/0x10()
Calling initcall 0xc06e6210: init_syncookies+0x0/0x20()
initcall 0xc06e6210: init_syncookies+0x0/0x20() returned 0.
initcall 0xc06e6210 ran for 0 msecs: init_syncookies+0x0/0x20()
Calling initcall 0xc06e6230: xfrm4_beet_init+0x0/0x20()
initcall 0xc06e6230: xfrm4_beet_init+0x0/0x20() returned 0.
initcall 0xc06e6230 ran for 0 msecs: xfrm4_beet_init+0x0/0x20()
Calling initcall 0xc06e6250: xfrm4_transport_init+0x0/0x20()
initcall 0xc06e6250: xfrm4_transport_init+0x0/0x20() returned 0.
initcall 0xc06e6250 ran for 0 msecs: xfrm4_transport_init+0x0/0x20()
Calling initcall 0xc06e6270: xfrm4_tunnel_init+0x0/0x20()
initcall 0xc06e6270: xfrm4_tunnel_init+0x0/0x20() returned 0.
initcall 0xc06e6270 ran for 0 msecs: xfrm4_tunnel_init+0x0/0x20()
Calling initcall 0xc04f9b30: ipv4_netfilter_init+0x0/0x10()
initcall 0xc04f9b30: ipv4_netfilter_init+0x0/0x10() returned 0.
initcall 0xc04f9b30 ran for 0 msecs: ipv4_netfilter_init+0x0/0x10()
Calling initcall 0xc06e6290: inet_diag_init+0x0/0x70()
initcall 0xc06e6290: inet_diag_init+0x0/0x70() returned 0.
initcall 0xc06e6290 ran for 0 msecs: inet_diag_init+0x0/0x70()
Calling initcall 0xc06e6300: tcp_diag_init+0x0/0x10()
initcall 0xc06e6300: tcp_diag_init+0x0/0x10() returned 0.
initcall 0xc06e6300 ran for 0 msecs: tcp_diag_init+0x0/0x10()
Calling initcall 0xc06e6310: cubictcp_register+0x0/0xb0()
TCP cubic registered
initcall 0xc06e6310: cubictcp_register+0x0/0xb0() returned 0.
initcall 0xc06e6310 ran for 1 msecs: cubictcp_register+0x0/0xb0()
Calling initcall 0xc06e65b0: xfrm_user_init+0x0/0x60()
Initializing XFRM netlink socket
initcall 0xc06e65b0: xfrm_user_init+0x0/0x60() returned 0.
initcall 0xc06e65b0 ran for 2 msecs: xfrm_user_init+0x0/0x60()
Calling initcall 0xc06e6610: af_unix_init+0x0/0x80()
NET: Registered protocol family 1
initcall 0xc06e6610: af_unix_init+0x0/0x80() returned 0.
initcall 0xc06e6610 ran for 2 msecs: af_unix_init+0x0/0x80()
Calling initcall 0xc06e6690: inet6_init+0x0/0x2c0()
NET: Registered protocol family 10
lo: Disabled Privacy Extensions
initcall 0xc06e6690: inet6_init+0x0/0x2c0() returned 0.
initcall 0xc06e6690 ran for 5 msecs: inet6_init+0x0/0x2c0()
Calling initcall 0xc06e7220: packet_init+0x0/0x60()
NET: Registered protocol family 17
initcall 0xc06e7220: packet_init+0x0/0x60() returned 0.
initcall 0xc06e7220 ran for 2 msecs: packet_init+0x0/0x60()
Calling initcall 0xc06cc840: init_lapic_nmi_sysfs+0x0/0x40()
initcall 0xc06cc840: init_lapic_nmi_sysfs+0x0/0x40() returned 0.
initcall 0xc06cc840 ran for 0 msecs: init_lapic_nmi_sysfs+0x0/0x40()
Calling initcall 0xc06cc620: check_nmi_watchdog+0x0/0x1f0()
Testing NMI watchdog ... CPU#0: NMI appears to be stuck (0->0)!
CPU#1: NMI appears to be stuck (0->0)!
initcall 0xc06cc620: check_nmi_watchdog+0x0/0x1f0() returned -1.
initcall 0xc06cc620 ran for 27 msecs: check_nmi_watchdog+0x0/0x1f0()
initcall at 0xc06cc620: check_nmi_watchdog+0x0/0x1f0(): returned with error code -1
Calling initcall 0xc06ccbb0: io_apic_bug_finalize+0x0/0x20()
initcall 0xc06ccbb0: io_apic_bug_finalize+0x0/0x20() returned 0.
initcall 0xc06ccbb0 ran for 0 msecs: io_apic_bug_finalize+0x0/0x20()
Calling initcall 0xc06ccd00: balanced_irq_init+0x0/0x1e0()
Starting balanced_irq

2007-06-25 07:01:48

by Ingo Molnar

[permalink] [raw]
Subject: Re: 2.6.22-rc3 nmi watchdog hang


hm, restoring nmi.c to the v2.6.21 state does not fix the nmi_watchdog=2
hang. I'll do a bisection run.

Ingo

2007-06-25 08:08:15

by Ingo Molnar

[permalink] [raw]
Subject: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang


* Ingo Molnar <[email protected]> wrote:

> hm, restoring nmi.c to the v2.6.21 state does not fix the
> nmi_watchdog=2 hang. I'll do a bisection run.

and after spending an hour on 15 bisection steps:

git-bisect start
git-bisect good d1be341dba5521506d9e6dccfd66179080705bea
git-bisect bad a06381fec77bf88ec6c5eb6324457cb04e9ffd69
git-bisect bad 794543a236074f49a8af89ef08ef6a753e4777e5
git-bisect good 24a77daf3d80bddcece044e6dc3675e427eef3f3
git-bisect bad ea62ccd00fd0b6720b033adfc9984f31130ce195
git-bisect good 7e20ef030dde0e52dd5a57220ee82fa9facbea4e
git-bisect bad f19cccf366a07e05703c90038704a3a5ffcb0607
git-bisect good 0d08e0d3a97cce22ebf80b54785e00d9b94e1add
git-bisect bad 856f44ff4af6e57fdc39a8b2bec498c88438bd27
git-bisect bad f8822f42019eceed19cc6c0f985a489e17796ed8
git-bisect good 1c3d99c11c47c8a1a9ed6a46555dbf6520683c52
git-bisect good b239fb2501117bf3aeb4dd6926edd855be92333d
git-bisect good 98de032b681d8a7532d44dfc66aa5c0c1c755a9d
git-bisect good 42c24fa22e86365055fc931d833f26165e687c19

the winner is ...

f8822f42019eceed19cc6c0f985a489e17796ed8 is first bad commit
commit f8822f42019eceed19cc6c0f985a489e17796ed8
Author: Jeremy Fitzhardinge <[email protected]>
Date: Wed May 2 19:27:14 2007 +0200

[PATCH] i386: PARAVIRT: Consistently wrap paravirt ops callsites to make them patchable

... our wonderful paravirt subsystem, honed to eternal perfection by the
testing-machine x86_64 tree.

reverting -git-curr's paravirt.c, paravirt.h, smp.c and tlbflush.h to
before the bad commit makes the NMI watchdog work again. Patch against
-rc6 is below.

Ingo

------------------------>
Subject: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang
From: Ingo Molnar <[email protected]>

nmi_watchdog=2 hangs on i386:

Calling initcall 0xc06cc620: check_nmi_watchdog+0x0/0x1f0()
Testing NMI watchdog ... CPU#0: NMI appears to be stuck (0->0)!
CPU#1: NMI appears to be stuck (0->0)!
initcall 0xc06cc620: check_nmi_watchdog+0x0/0x1f0() returned -1.
initcall 0xc06cc620 ran for 27 msecs: check_nmi_watchdog+0x0/0x1f0()
initcall at 0xc06cc620: check_nmi_watchdog+0x0/0x1f0(): returned with
error code -1
Calling initcall 0xc06ccbb0: io_apic_bug_finalize+0x0/0x20()
initcall 0xc06ccbb0: io_apic_bug_finalize+0x0/0x20() returned 0.
initcall 0xc06ccbb0 ran for 0 msecs: io_apic_bug_finalize+0x0/0x20()
Calling initcall 0xc06ccd00: balanced_irq_init+0x0/0x1e0()
Starting balanced_irq
[hard hang]

bisected it down to:

git-bisect start
git-bisect good d1be341dba5521506d9e6dccfd66179080705bea
git-bisect bad a06381fec77bf88ec6c5eb6324457cb04e9ffd69
git-bisect bad 794543a236074f49a8af89ef08ef6a753e4777e5
git-bisect good 24a77daf3d80bddcece044e6dc3675e427eef3f3
git-bisect bad ea62ccd00fd0b6720b033adfc9984f31130ce195
git-bisect good 7e20ef030dde0e52dd5a57220ee82fa9facbea4e
git-bisect bad f19cccf366a07e05703c90038704a3a5ffcb0607
git-bisect good 0d08e0d3a97cce22ebf80b54785e00d9b94e1add
git-bisect bad 856f44ff4af6e57fdc39a8b2bec498c88438bd27
git-bisect bad f8822f42019eceed19cc6c0f985a489e17796ed8
git-bisect good 1c3d99c11c47c8a1a9ed6a46555dbf6520683c52
git-bisect good b239fb2501117bf3aeb4dd6926edd855be92333d
git-bisect good 98de032b681d8a7532d44dfc66aa5c0c1c755a9d
git-bisect good 42c24fa22e86365055fc931d833f26165e687c19

f8822f42019eceed19cc6c0f985a489e17796ed8 is first bad commit
commit f8822f42019eceed19cc6c0f985a489e17796ed8
Author: Jeremy Fitzhardinge <[email protected]>
Date: Wed May 2 19:27:14 2007 +0200

[PATCH] i386: PARAVIRT: Consistently wrap paravirt ops callsites to make them patchable

this patch reverts the code back to the last known booting version.

Signed-off-by: Ingo Molnar <[email protected]>
---
arch/i386/kernel/paravirt.c | 174 ++--------
arch/i386/kernel/smp.c | 93 +++--
include/asm-i386/paravirt.h | 718 +++++++++-----------------------------------
include/asm-i386/tlbflush.h | 21 -
4 files changed, 245 insertions(+), 761 deletions(-)

Index: linux-2.6-git/arch/i386/kernel/paravirt.c
===================================================================
--- linux-2.6-git.orig/arch/i386/kernel/paravirt.c
+++ linux-2.6-git/arch/i386/kernel/paravirt.c
@@ -19,7 +19,7 @@
#include <linux/module.h>
#include <linux/efi.h>
#include <linux/bcd.h>
-#include <linux/highmem.h>
+#include <linux/start_kernel.h>

#include <asm/bug.h>
#include <asm/paravirt.h>
@@ -54,142 +54,40 @@ char *memory_setup(void)
#define DEF_NATIVE(name, code) \
extern const char start_##name[], end_##name[]; \
asm("start_" #name ": " code "; end_" #name ":")
-
-DEF_NATIVE(irq_disable, "cli");
-DEF_NATIVE(irq_enable, "sti");
-DEF_NATIVE(restore_fl, "push %eax; popf");
-DEF_NATIVE(save_fl, "pushf; pop %eax");
+DEF_NATIVE(cli, "cli");
+DEF_NATIVE(sti, "sti");
+DEF_NATIVE(popf, "push %eax; popf");
+DEF_NATIVE(pushf, "pushf; pop %eax");
DEF_NATIVE(iret, "iret");
-DEF_NATIVE(irq_enable_sysexit, "sti; sysexit");
-DEF_NATIVE(read_cr2, "mov %cr2, %eax");
-DEF_NATIVE(write_cr3, "mov %eax, %cr3");
-DEF_NATIVE(read_cr3, "mov %cr3, %eax");
-DEF_NATIVE(clts, "clts");
-DEF_NATIVE(read_tsc, "rdtsc");
-
-DEF_NATIVE(ud2a, "ud2a");
-
-static unsigned native_patch(u8 type, u16 clobbers, void *insns, unsigned len)
-{
- const unsigned char *start, *end;
- unsigned ret;
-
- switch(type) {
-#define SITE(x) case PARAVIRT_PATCH(x): start = start_##x; end = end_##x; goto patch_site
- SITE(irq_disable);
- SITE(irq_enable);
- SITE(restore_fl);
- SITE(save_fl);
- SITE(iret);
- SITE(irq_enable_sysexit);
- SITE(read_cr2);
- SITE(read_cr3);
- SITE(write_cr3);
- SITE(clts);
- SITE(read_tsc);
-#undef SITE
-
- patch_site:
- ret = paravirt_patch_insns(insns, len, start, end);
- break;
-
- case PARAVIRT_PATCH(make_pgd):
- case PARAVIRT_PATCH(make_pte):
- case PARAVIRT_PATCH(pgd_val):
- case PARAVIRT_PATCH(pte_val):
-#ifdef CONFIG_X86_PAE
- case PARAVIRT_PATCH(make_pmd):
- case PARAVIRT_PATCH(pmd_val):
-#endif
- /* These functions end up returning exactly what
- they're passed, in the same registers. */
- ret = paravirt_patch_nop();
- break;
-
- default:
- ret = paravirt_patch_default(type, clobbers, insns, len);
- break;
- }
-
- return ret;
-}
+DEF_NATIVE(sti_sysexit, "sti; sysexit");

-unsigned paravirt_patch_nop(void)
+static const struct native_insns
{
- return 0;
-}
-
-unsigned paravirt_patch_ignore(unsigned len)
-{
- return len;
-}
-
-unsigned paravirt_patch_call(void *target, u16 tgt_clobbers,
- void *site, u16 site_clobbers,
- unsigned len)
-{
- unsigned char *call = site;
- unsigned long delta = (unsigned long)target - (unsigned long)(call+5);
-
- if (tgt_clobbers & ~site_clobbers)
- return len; /* target would clobber too much for this site */
- if (len < 5)
- return len; /* call too long for patch site */
-
- *call++ = 0xe8; /* call */
- *(unsigned long *)call = delta;
-
- return 5;
-}
+ const char *start, *end;
+} native_insns[] = {
+ [PARAVIRT_PATCH(irq_disable)] = { start_cli, end_cli },
+ [PARAVIRT_PATCH(irq_enable)] = { start_sti, end_sti },
+ [PARAVIRT_PATCH(restore_fl)] = { start_popf, end_popf },
+ [PARAVIRT_PATCH(save_fl)] = { start_pushf, end_pushf },
+ [PARAVIRT_PATCH(iret)] = { start_iret, end_iret },
+ [PARAVIRT_PATCH(irq_enable_sysexit)] = { start_sti_sysexit, end_sti_sysexit },
+};

-unsigned paravirt_patch_jmp(void *target, void *site, unsigned len)
+static unsigned native_patch(u8 type, u16 clobbers, void *insns, unsigned len)
{
- unsigned char *jmp = site;
- unsigned long delta = (unsigned long)target - (unsigned long)(jmp+5);
-
- if (len < 5)
- return len; /* call too long for patch site */
-
- *jmp++ = 0xe9; /* jmp */
- *(unsigned long *)jmp = delta;
+ unsigned int insn_len;

- return 5;
-}
+ /* Don't touch it if we don't have a replacement */
+ if (type >= ARRAY_SIZE(native_insns) || !native_insns[type].start)
+ return len;

-unsigned paravirt_patch_default(u8 type, u16 clobbers, void *site, unsigned len)
-{
- void *opfunc = *((void **)&paravirt_ops + type);
- unsigned ret;
+ insn_len = native_insns[type].end - native_insns[type].start;

- if (opfunc == NULL)
- /* If there's no function, patch it with a ud2a (BUG) */
- ret = paravirt_patch_insns(site, len, start_ud2a, end_ud2a);
- else if (opfunc == paravirt_nop)
- /* If the operation is a nop, then nop the callsite */
- ret = paravirt_patch_nop();
- else if (type == PARAVIRT_PATCH(iret) ||
- type == PARAVIRT_PATCH(irq_enable_sysexit))
- /* If operation requires a jmp, then jmp */
- ret = paravirt_patch_jmp(opfunc, site, len);
- else
- /* Otherwise call the function; assume target could
- clobber any caller-save reg */
- ret = paravirt_patch_call(opfunc, CLBR_ANY,
- site, clobbers, len);
-
- return ret;
-}
-
-unsigned paravirt_patch_insns(void *site, unsigned len,
- const char *start, const char *end)
-{
- unsigned insn_len = end - start;
-
- if (insn_len > len || start == NULL)
- insn_len = len;
- else
- memcpy(site, start, insn_len);
+ /* Similarly if we can't fit replacement. */
+ if (len < insn_len)
+ return len;

+ memcpy(insns, native_insns[type].start, insn_len);
return insn_len;
}

@@ -212,7 +110,7 @@ static void native_flush_tlb_global(void
__native_flush_tlb_global();
}

-static void native_flush_tlb_single(unsigned long addr)
+static void native_flush_tlb_single(u32 addr)
{
__native_flush_tlb_single(addr);
}
@@ -291,7 +189,6 @@ struct paravirt_ops paravirt_ops = {
.apic_read = native_apic_read,
.setup_boot_clock = setup_boot_APIC_clock,
.setup_secondary_clock = setup_secondary_APIC_clock,
- .startup_ipi_hook = paravirt_nop,
#endif
.set_lazy_mode = paravirt_nop,

@@ -301,7 +198,8 @@ struct paravirt_ops paravirt_ops = {
.flush_tlb_user = native_flush_tlb,
.flush_tlb_kernel = native_flush_tlb_global,
.flush_tlb_single = native_flush_tlb_single,
- .flush_tlb_others = native_flush_tlb_others,
+
+ .map_pt_hook = paravirt_nop,

.alloc_pt = paravirt_nop,
.alloc_pd = paravirt_nop,
@@ -315,9 +213,7 @@ struct paravirt_ops paravirt_ops = {
.pte_update = paravirt_nop,
.pte_update_defer = paravirt_nop,

-#ifdef CONFIG_HIGHPTE
- .kmap_atomic_pte = kmap_atomic,
-#endif
+ .ptep_get_and_clear = native_ptep_get_and_clear,

#ifdef CONFIG_X86_PAE
.set_pte_atomic = native_set_pte_atomic,
@@ -342,6 +238,14 @@ struct paravirt_ops paravirt_ops = {
.dup_mmap = paravirt_nop,
.exit_mmap = paravirt_nop,
.activate_mm = paravirt_nop,
+
+ .startup_ipi_hook = paravirt_nop,
};

-EXPORT_SYMBOL(paravirt_ops);
+/*
+ * NOTE: CONFIG_PARAVIRT is experimental and the paravirt_ops
+ * semantics are subject to change. Hence we only do this
+ * internal-only export of this, until it gets sorted out and
+ * all lowlevel CPU ops used by modules are separately exported.
+ */
+EXPORT_SYMBOL_GPL(paravirt_ops);
Index: linux-2.6-git/arch/i386/kernel/smp.c
===================================================================
--- linux-2.6-git.orig/arch/i386/kernel/smp.c
+++ linux-2.6-git/arch/i386/kernel/smp.c
@@ -13,6 +13,7 @@
#include <linux/mm.h>
#include <linux/delay.h>
#include <linux/spinlock.h>
+#include <linux/smp_lock.h>
#include <linux/kernel_stat.h>
#include <linux/mc146818rtc.h>
#include <linux/cache.h>
@@ -164,20 +165,20 @@ void fastcall send_IPI_self(int vector)
}

/*
- * This is used to send an IPI with no shorthand notation (the destination is
- * specified in bits 56 to 63 of the ICR).
+ * This is only used on smaller machines.
*/
-static inline void __send_IPI_dest_field(unsigned long mask, int vector)
+void send_IPI_mask_bitmask(cpumask_t cpumask, int vector)
{
+ unsigned long mask = cpus_addr(cpumask)[0];
unsigned long cfg;
+ unsigned long flags;

+ local_irq_save(flags);
+ WARN_ON(mask & ~cpus_addr(cpu_online_map)[0]);
/*
* Wait for idle.
*/
- if (unlikely(vector == NMI_VECTOR))
- safe_apic_wait_icr_idle();
- else
- apic_wait_icr_idle();
+ apic_wait_icr_idle();

/*
* prepare target chip field
@@ -194,25 +195,13 @@ static inline void __send_IPI_dest_field
* Send the IPI. The write to APIC_ICR fires this off.
*/
apic_write_around(APIC_ICR, cfg);
-}

-/*
- * This is only used on smaller machines.
- */
-void send_IPI_mask_bitmask(cpumask_t cpumask, int vector)
-{
- unsigned long mask = cpus_addr(cpumask)[0];
- unsigned long flags;
-
- local_irq_save(flags);
- WARN_ON(mask & ~cpus_addr(cpu_online_map)[0]);
- __send_IPI_dest_field(mask, vector);
local_irq_restore(flags);
}

void send_IPI_mask_sequence(cpumask_t mask, int vector)
{
- unsigned long flags;
+ unsigned long cfg, flags;
unsigned int query_cpu;

/*
@@ -222,10 +211,30 @@ void send_IPI_mask_sequence(cpumask_t ma
*/

local_irq_save(flags);
+
for (query_cpu = 0; query_cpu < NR_CPUS; ++query_cpu) {
if (cpu_isset(query_cpu, mask)) {
- __send_IPI_dest_field(cpu_to_logical_apicid(query_cpu),
- vector);
+
+ /*
+ * Wait for idle.
+ */
+ apic_wait_icr_idle();
+
+ /*
+ * prepare target chip field
+ */
+ cfg = __prepare_ICR2(cpu_to_logical_apicid(query_cpu));
+ apic_write_around(APIC_ICR2, cfg);
+
+ /*
+ * program the ICR
+ */
+ cfg = __prepare_ICR(0, vector);
+
+ /*
+ * Send the IPI. The write to APIC_ICR fires this off.
+ */
+ apic_write_around(APIC_ICR, cfg);
}
}
local_irq_restore(flags);
@@ -247,6 +256,7 @@ static cpumask_t flush_cpumask;
static struct mm_struct * flush_mm;
static unsigned long flush_va;
static DEFINE_SPINLOCK(tlbstate_lock);
+#define FLUSH_ALL 0xffffffff

/*
* We cannot call mmdrop() because we are in interrupt context,
@@ -328,7 +338,7 @@ fastcall void smp_invalidate_interrupt(s

if (flush_mm == per_cpu(cpu_tlbstate, cpu).active_mm) {
if (per_cpu(cpu_tlbstate, cpu).state == TLBSTATE_OK) {
- if (flush_va == TLB_FLUSH_ALL)
+ if (flush_va == FLUSH_ALL)
local_flush_tlb();
else
__flush_tlb_one(flush_va);
@@ -343,11 +353,9 @@ out:
put_cpu_no_resched();
}

-void native_flush_tlb_others(const cpumask_t *cpumaskp, struct mm_struct *mm,
- unsigned long va)
+static void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm,
+ unsigned long va)
{
- cpumask_t cpumask = *cpumaskp;
-
/*
* A couple of (to be removed) sanity checks:
*
@@ -358,12 +366,10 @@ void native_flush_tlb_others(const cpuma
BUG_ON(cpu_isset(smp_processor_id(), cpumask));
BUG_ON(!mm);

-#ifdef CONFIG_HOTPLUG_CPU
/* If a CPU which we ran on has gone down, OK. */
cpus_and(cpumask, cpumask, cpu_online_map);
- if (unlikely(cpus_empty(cpumask)))
+ if (cpus_empty(cpumask))
return;
-#endif

/*
* i'm not happy about this global shared spinlock in the
@@ -374,7 +380,17 @@ void native_flush_tlb_others(const cpuma

flush_mm = mm;
flush_va = va;
- cpus_or(flush_cpumask, cpumask, flush_cpumask);
+#if NR_CPUS <= BITS_PER_LONG
+ atomic_set_mask(cpumask, &flush_cpumask);
+#else
+ {
+ int k;
+ unsigned long *flush_mask = (unsigned long *)&flush_cpumask;
+ unsigned long *cpu_mask = (unsigned long *)&cpumask;
+ for (k = 0; k < BITS_TO_LONGS(NR_CPUS); ++k)
+ atomic_set_mask(cpu_mask[k], &flush_mask[k]);
+ }
+#endif
/*
* We have to send the IPI only to
* CPUs affected.
@@ -401,7 +417,7 @@ void flush_tlb_current_task(void)

local_flush_tlb();
if (!cpus_empty(cpu_mask))
- flush_tlb_others(cpu_mask, mm, TLB_FLUSH_ALL);
+ flush_tlb_others(cpu_mask, mm, FLUSH_ALL);
preempt_enable();
}

@@ -420,7 +436,7 @@ void flush_tlb_mm (struct mm_struct * mm
leave_mm(smp_processor_id());
}
if (!cpus_empty(cpu_mask))
- flush_tlb_others(cpu_mask, mm, TLB_FLUSH_ALL);
+ flush_tlb_others(cpu_mask, mm, FLUSH_ALL);

preempt_enable();
}
@@ -467,7 +483,7 @@ void flush_tlb_all(void)
* it goes straight through and wastes no time serializing
* anything. Worst case is that we lose a reschedule ...
*/
-static void native_smp_send_reschedule(int cpu)
+void native_smp_send_reschedule(int cpu)
{
WARN_ON(cpu_is_offline(cpu));
send_IPI_mask(cpumask_of_cpu(cpu), RESCHEDULE_VECTOR);
@@ -546,10 +562,9 @@ static void __smp_call_function(void (*f
* You must not call this function with disabled interrupts or from a
* hardware interrupt handler or from a bottom half handler.
*/
-static int
-native_smp_call_function_mask(cpumask_t mask,
- void (*func)(void *), void *info,
- int wait)
+int native_smp_call_function_mask(cpumask_t mask,
+ void (*func)(void *), void *info,
+ int wait)
{
struct call_data_struct data;
cpumask_t allbutself;
@@ -617,7 +632,7 @@ static void stop_this_cpu (void * dummy)
* this function calls the 'stop' function on all other CPUs in the system.
*/

-static void native_smp_send_stop(void)
+void native_smp_send_stop(void)
{
/* Don't deadlock on the call lock in panic */
int nolock = !spin_trylock(&call_lock);
Index: linux-2.6-git/include/asm-i386/paravirt.h
===================================================================
--- linux-2.6-git.orig/include/asm-i386/paravirt.h
+++ linux-2.6-git/include/asm-i386/paravirt.h
@@ -15,24 +15,12 @@

#ifndef __ASSEMBLY__
#include <linux/types.h>
-#include <linux/cpumask.h>
-#include <asm/kmap_types.h>

-struct page;
struct thread_struct;
struct Xgt_desc_struct;
struct tss_struct;
struct mm_struct;
struct desc_struct;
-
-/* Lazy mode for batching updates / context switch */
-enum paravirt_lazy_mode {
- PARAVIRT_LAZY_NONE = 0,
- PARAVIRT_LAZY_MMU = 1,
- PARAVIRT_LAZY_CPU = 2,
- PARAVIRT_LAZY_FLUSH = 3,
-};
-
struct paravirt_ops
{
unsigned int kernel_rpl;
@@ -49,33 +37,22 @@ struct paravirt_ops
*/
unsigned (*patch)(u8 type, u16 clobber, void *firstinsn, unsigned len);

- /* Basic arch-specific setup */
void (*arch_setup)(void);
char *(*memory_setup)(void);
void (*init_IRQ)(void);
- void (*time_init)(void);

- /*
- * Called before/after init_mm pagetable setup. setup_start
- * may reset %cr3, and may pre-install parts of the pagetable;
- * pagetable setup is expected to preserve any existing
- * mapping.
- */
void (*pagetable_setup_start)(pgd_t *pgd_base);
void (*pagetable_setup_done)(pgd_t *pgd_base);

- /* Print a banner to identify the environment */
void (*banner)(void);

- /* Set and set time of day */
unsigned long (*get_wallclock)(void);
int (*set_wallclock)(unsigned long);
+ void (*time_init)(void);

- /* cpuid emulation, mostly so that caps bits can be disabled */
void (*cpuid)(unsigned int *eax, unsigned int *ebx,
unsigned int *ecx, unsigned int *edx);

- /* hooks for various privileged instructions */
unsigned long (*get_debugreg)(int regno);
void (*set_debugreg)(int regno, unsigned long value);

@@ -94,23 +71,15 @@ struct paravirt_ops
unsigned long (*read_cr4)(void);
void (*write_cr4)(unsigned long);

- /*
- * Get/set interrupt state. save_fl and restore_fl are only
- * expected to use X86_EFLAGS_IF; all other bits
- * returned from save_fl are undefined, and may be ignored by
- * restore_fl.
- */
unsigned long (*save_fl)(void);
void (*restore_fl)(unsigned long);
void (*irq_disable)(void);
void (*irq_enable)(void);
void (*safe_halt)(void);
void (*halt)(void);
-
void (*wbinvd)(void);

- /* MSR, PMC and TSR operations.
- err = 0/-EFAULT. wrmsr returns 0/-EFAULT. */
+ /* err = 0/-EFAULT. wrmsr returns 0/-EFAULT. */
u64 (*read_msr)(unsigned int msr, int *err);
int (*write_msr)(unsigned int msr, u64 val);

@@ -119,7 +88,6 @@ struct paravirt_ops
u64 (*get_scheduled_cycles)(void);
unsigned long (*get_cpu_khz)(void);

- /* Segment descriptor handling */
void (*load_tr_desc)(void);
void (*load_gdt)(const struct Xgt_desc_struct *);
void (*load_idt)(const struct Xgt_desc_struct *);
@@ -137,12 +105,9 @@ struct paravirt_ops
void (*load_esp0)(struct tss_struct *tss, struct thread_struct *t);

void (*set_iopl_mask)(unsigned mask);
+
void (*io_delay)(void);

- /*
- * Hooks for intercepting the creation/use/destruction of an
- * mm_struct.
- */
void (*activate_mm)(struct mm_struct *prev,
struct mm_struct *next);
void (*dup_mmap)(struct mm_struct *oldmm,
@@ -150,47 +115,32 @@ struct paravirt_ops
void (*exit_mmap)(struct mm_struct *mm);

#ifdef CONFIG_X86_LOCAL_APIC
- /*
- * Direct APIC operations, principally for VMI. Ideally
- * these shouldn't be in this interface.
- */
void (*apic_write)(unsigned long reg, unsigned long v);
void (*apic_write_atomic)(unsigned long reg, unsigned long v);
unsigned long (*apic_read)(unsigned long reg);
void (*setup_boot_clock)(void);
void (*setup_secondary_clock)(void);
-
- void (*startup_ipi_hook)(int phys_apicid,
- unsigned long start_eip,
- unsigned long start_esp);
#endif

- /* TLB operations */
void (*flush_tlb_user)(void);
void (*flush_tlb_kernel)(void);
- void (*flush_tlb_single)(unsigned long addr);
- void (*flush_tlb_others)(const cpumask_t *cpus, struct mm_struct *mm,
- unsigned long va);
+ void (*flush_tlb_single)(u32 addr);
+
+ void (*map_pt_hook)(int type, pte_t *va, u32 pfn);

- /* Hooks for allocating/releasing pagetable pages */
void (*alloc_pt)(u32 pfn);
void (*alloc_pd)(u32 pfn);
void (*alloc_pd_clone)(u32 pfn, u32 clonepfn, u32 start, u32 count);
void (*release_pt)(u32 pfn);
void (*release_pd)(u32 pfn);

- /* Pagetable manipulation functions */
void (*set_pte)(pte_t *ptep, pte_t pteval);
- void (*set_pte_at)(struct mm_struct *mm, unsigned long addr,
- pte_t *ptep, pte_t pteval);
+ void (*set_pte_at)(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pteval);
void (*set_pmd)(pmd_t *pmdp, pmd_t pmdval);
void (*pte_update)(struct mm_struct *mm, unsigned long addr, pte_t *ptep);
- void (*pte_update_defer)(struct mm_struct *mm,
- unsigned long addr, pte_t *ptep);
+ void (*pte_update_defer)(struct mm_struct *mm, unsigned long addr, pte_t *ptep);

-#ifdef CONFIG_HIGHPTE
- void *(*kmap_atomic_pte)(struct page *page, enum km_type type);
-#endif
+ pte_t (*ptep_get_and_clear)(pte_t *ptep);

#ifdef CONFIG_X86_PAE
void (*set_pte_atomic)(pte_t *ptep, pte_t pteval);
@@ -214,14 +164,20 @@ struct paravirt_ops
pgd_t (*make_pgd)(unsigned long pgd);
#endif

- /* Set deferred update mode, used for batching operations. */
- void (*set_lazy_mode)(enum paravirt_lazy_mode mode);
+ void (*set_lazy_mode)(int mode);

/* These two are jmp to, not actually called. */
void (*irq_enable_sysexit)(void);
void (*iret)(void);
+
+ void (*startup_ipi_hook)(int phys_apicid, unsigned long start_eip, unsigned long start_esp);
};

+/* Mark a paravirt probe function. */
+#define paravirt_probe(fn) \
+ static asmlinkage void (*__paravirtprobe_##fn)(void) __attribute_used__ \
+ __attribute__((__section__(".paravirtprobe"))) = fn
+
extern struct paravirt_ops paravirt_ops;

#define PARAVIRT_PATCH(x) \
@@ -232,10 +188,8 @@ extern struct paravirt_ops paravirt_ops;
#define paravirt_clobber(clobber) \
[paravirt_clobber] "i" (clobber)

-/*
- * Generate some code, and mark it as patchable by the
- * apply_paravirt() alternate instruction patcher.
- */
+#define PARAVIRT_CALL "call *paravirt_ops+%c[paravirt_typenum]*4;"
+
#define _paravirt_alt(insn_string, type, clobber) \
"771:\n\t" insn_string "\n" "772:\n" \
".pushsection .parainstructions,\"a\"\n" \
@@ -245,181 +199,26 @@ extern struct paravirt_ops paravirt_ops;
" .short " clobber "\n" \
".popsection\n"

-/* Generate patchable code, with the default asm parameters. */
-#define paravirt_alt(insn_string) \
+#define paravirt_alt(insn_string) \
_paravirt_alt(insn_string, "%c[paravirt_typenum]", "%c[paravirt_clobber]")

-unsigned paravirt_patch_nop(void);
-unsigned paravirt_patch_ignore(unsigned len);
-unsigned paravirt_patch_call(void *target, u16 tgt_clobbers,
- void *site, u16 site_clobbers,
- unsigned len);
-unsigned paravirt_patch_jmp(void *target, void *site, unsigned len);
-unsigned paravirt_patch_default(u8 type, u16 clobbers, void *site, unsigned len);
-
-unsigned paravirt_patch_insns(void *site, unsigned len,
- const char *start, const char *end);
-
-
-/*
- * This generates an indirect call based on the operation type number.
- * The type number, computed in PARAVIRT_PATCH, is derived from the
- * offset into the paravirt_ops structure, and can therefore be freely
- * converted back into a structure offset.
- */
-#define PARAVIRT_CALL "call *(paravirt_ops+%c[paravirt_typenum]*4);"
-
-/*
- * These macros are intended to wrap calls into a paravirt_ops
- * operation, so that they can be later identified and patched at
- * runtime.
- *
- * Normally, a call to a pv_op function is a simple indirect call:
- * (paravirt_ops.operations)(args...).
- *
- * Unfortunately, this is a relatively slow operation for modern CPUs,
- * because it cannot necessarily determine what the destination
- * address is. In this case, the address is a runtime constant, so at
- * the very least we can patch the call to e a simple direct call, or
- * ideally, patch an inline implementation into the callsite. (Direct
- * calls are essentially free, because the call and return addresses
- * are completely predictable.)
- *
- * These macros rely on the standard gcc "regparm(3)" calling
- * convention, in which the first three arguments are placed in %eax,
- * %edx, %ecx (in that order), and the remaining arguments are placed
- * on the stack. All caller-save registers (eax,edx,ecx) are expected
- * to be modified (either clobbered or used for return values).
- *
- * The call instruction itself is marked by placing its start address
- * and size into the .parainstructions section, so that
- * apply_paravirt() in arch/i386/kernel/alternative.c can do the
- * appropriate patching under the control of the backend paravirt_ops
- * implementation.
- *
- * Unfortunately there's no way to get gcc to generate the args setup
- * for the call, and then allow the call itself to be generated by an
- * inline asm. Because of this, we must do the complete arg setup and
- * return value handling from within these macros. This is fairly
- * cumbersome.
- *
- * There are 5 sets of PVOP_* macros for dealing with 0-4 arguments.
- * It could be extended to more arguments, but there would be little
- * to be gained from that. For each number of arguments, there are
- * the two VCALL and CALL variants for void and non-void functions.
- *
- * When there is a return value, the invoker of the macro must specify
- * the return type. The macro then uses sizeof() on that type to
- * determine whether its a 32 or 64 bit value, and places the return
- * in the right register(s) (just %eax for 32-bit, and %edx:%eax for
- * 64-bit).
- *
- * 64-bit arguments are passed as a pair of adjacent 32-bit arguments
- * in low,high order.
- *
- * Small structures are passed and returned in registers. The macro
- * calling convention can't directly deal with this, so the wrapper
- * functions must do this.
- *
- * These PVOP_* macros are only defined within this header. This
- * means that all uses must be wrapped in inline functions. This also
- * makes sure the incoming and outgoing types are always correct.
- */
-#define __PVOP_CALL(rettype, op, pre, post, ...) \
- ({ \
- rettype __ret; \
- unsigned long __eax, __edx, __ecx; \
- if (sizeof(rettype) > sizeof(unsigned long)) { \
- asm volatile(pre \
- paravirt_alt(PARAVIRT_CALL) \
- post \
- : "=a" (__eax), "=d" (__edx), \
- "=c" (__ecx) \
- : paravirt_type(op), \
- paravirt_clobber(CLBR_ANY), \
- ##__VA_ARGS__ \
- : "memory", "cc"); \
- __ret = (rettype)((((u64)__edx) << 32) | __eax); \
- } else { \
- asm volatile(pre \
- paravirt_alt(PARAVIRT_CALL) \
- post \
- : "=a" (__eax), "=d" (__edx), \
- "=c" (__ecx) \
- : paravirt_type(op), \
- paravirt_clobber(CLBR_ANY), \
- ##__VA_ARGS__ \
- : "memory", "cc"); \
- __ret = (rettype)__eax; \
- } \
- __ret; \
- })
-#define __PVOP_VCALL(op, pre, post, ...) \
- ({ \
- unsigned long __eax, __edx, __ecx; \
- asm volatile(pre \
- paravirt_alt(PARAVIRT_CALL) \
- post \
- : "=a" (__eax), "=d" (__edx), "=c" (__ecx) \
- : paravirt_type(op), \
- paravirt_clobber(CLBR_ANY), \
- ##__VA_ARGS__ \
- : "memory", "cc"); \
- })
-
-#define PVOP_CALL0(rettype, op) \
- __PVOP_CALL(rettype, op, "", "")
-#define PVOP_VCALL0(op) \
- __PVOP_VCALL(op, "", "")
-
-#define PVOP_CALL1(rettype, op, arg1) \
- __PVOP_CALL(rettype, op, "", "", "0" ((u32)(arg1)))
-#define PVOP_VCALL1(op, arg1) \
- __PVOP_VCALL(op, "", "", "0" ((u32)(arg1)))
-
-#define PVOP_CALL2(rettype, op, arg1, arg2) \
- __PVOP_CALL(rettype, op, "", "", "0" ((u32)(arg1)), "1" ((u32)(arg2)))
-#define PVOP_VCALL2(op, arg1, arg2) \
- __PVOP_VCALL(op, "", "", "0" ((u32)(arg1)), "1" ((u32)(arg2)))
-
-#define PVOP_CALL3(rettype, op, arg1, arg2, arg3) \
- __PVOP_CALL(rettype, op, "", "", "0" ((u32)(arg1)), \
- "1"((u32)(arg2)), "2"((u32)(arg3)))
-#define PVOP_VCALL3(op, arg1, arg2, arg3) \
- __PVOP_VCALL(op, "", "", "0" ((u32)(arg1)), "1"((u32)(arg2)), \
- "2"((u32)(arg3)))
-
-#define PVOP_CALL4(rettype, op, arg1, arg2, arg3, arg4) \
- __PVOP_CALL(rettype, op, \
- "push %[_arg4];", "lea 4(%%esp),%%esp;", \
- "0" ((u32)(arg1)), "1" ((u32)(arg2)), \
- "2" ((u32)(arg3)), [_arg4] "mr" ((u32)(arg4)))
-#define PVOP_VCALL4(op, arg1, arg2, arg3, arg4) \
- __PVOP_VCALL(op, \
- "push %[_arg4];", "lea 4(%%esp),%%esp;", \
- "0" ((u32)(arg1)), "1" ((u32)(arg2)), \
- "2" ((u32)(arg3)), [_arg4] "mr" ((u32)(arg4)))
-
-static inline int paravirt_enabled(void)
-{
- return paravirt_ops.paravirt_enabled;
-}
+#define paravirt_enabled() (paravirt_ops.paravirt_enabled)

static inline void load_esp0(struct tss_struct *tss,
struct thread_struct *thread)
{
- PVOP_VCALL2(load_esp0, tss, thread);
+ paravirt_ops.load_esp0(tss, thread);
}

#define ARCH_SETUP paravirt_ops.arch_setup();
static inline unsigned long get_wallclock(void)
{
- return PVOP_CALL0(unsigned long, get_wallclock);
+ return paravirt_ops.get_wallclock();
}

static inline int set_wallclock(unsigned long nowtime)
{
- return PVOP_CALL1(int, set_wallclock, nowtime);
+ return paravirt_ops.set_wallclock(nowtime);
}

static inline void (*choose_time_init(void))(void)
@@ -431,203 +230,127 @@ static inline void (*choose_time_init(vo
static inline void __cpuid(unsigned int *eax, unsigned int *ebx,
unsigned int *ecx, unsigned int *edx)
{
- PVOP_VCALL4(cpuid, eax, ebx, ecx, edx);
+ paravirt_ops.cpuid(eax, ebx, ecx, edx);
}

/*
* These special macros can be used to get or set a debugging register
*/
-static inline unsigned long paravirt_get_debugreg(int reg)
-{
- return PVOP_CALL1(unsigned long, get_debugreg, reg);
-}
-#define get_debugreg(var, reg) var = paravirt_get_debugreg(reg)
-static inline void set_debugreg(unsigned long val, int reg)
-{
- PVOP_VCALL2(set_debugreg, reg, val);
-}
+#define get_debugreg(var, reg) var = paravirt_ops.get_debugreg(reg)
+#define set_debugreg(val, reg) paravirt_ops.set_debugreg(reg, val)

-static inline void clts(void)
-{
- PVOP_VCALL0(clts);
-}
-
-static inline unsigned long read_cr0(void)
-{
- return PVOP_CALL0(unsigned long, read_cr0);
-}
-
-static inline void write_cr0(unsigned long x)
-{
- PVOP_VCALL1(write_cr0, x);
-}
-
-static inline unsigned long read_cr2(void)
-{
- return PVOP_CALL0(unsigned long, read_cr2);
-}
+#define clts() paravirt_ops.clts()

-static inline void write_cr2(unsigned long x)
-{
- PVOP_VCALL1(write_cr2, x);
-}
+#define read_cr0() paravirt_ops.read_cr0()
+#define write_cr0(x) paravirt_ops.write_cr0(x)

-static inline unsigned long read_cr3(void)
-{
- return PVOP_CALL0(unsigned long, read_cr3);
-}
+#define read_cr2() paravirt_ops.read_cr2()
+#define write_cr2(x) paravirt_ops.write_cr2(x)

-static inline void write_cr3(unsigned long x)
-{
- PVOP_VCALL1(write_cr3, x);
-}
+#define read_cr3() paravirt_ops.read_cr3()
+#define write_cr3(x) paravirt_ops.write_cr3(x)

-static inline unsigned long read_cr4(void)
-{
- return PVOP_CALL0(unsigned long, read_cr4);
-}
-static inline unsigned long read_cr4_safe(void)
-{
- return PVOP_CALL0(unsigned long, read_cr4_safe);
-}
+#define read_cr4() paravirt_ops.read_cr4()
+#define read_cr4_safe(x) paravirt_ops.read_cr4_safe()
+#define write_cr4(x) paravirt_ops.write_cr4(x)

-static inline void write_cr4(unsigned long x)
-{
- PVOP_VCALL1(write_cr4, x);
-}
+#define raw_ptep_get_and_clear(xp) (paravirt_ops.ptep_get_and_clear(xp))

static inline void raw_safe_halt(void)
{
- PVOP_VCALL0(safe_halt);
+ paravirt_ops.safe_halt();
}

static inline void halt(void)
{
- PVOP_VCALL0(safe_halt);
-}
-
-static inline void wbinvd(void)
-{
- PVOP_VCALL0(wbinvd);
+ paravirt_ops.safe_halt();
}
+#define wbinvd() paravirt_ops.wbinvd()

#define get_kernel_rpl() (paravirt_ops.kernel_rpl)

-static inline u64 paravirt_read_msr(unsigned msr, int *err)
-{
- return PVOP_CALL2(u64, read_msr, msr, err);
-}
-static inline int paravirt_write_msr(unsigned msr, unsigned low, unsigned high)
-{
- return PVOP_CALL3(int, write_msr, msr, low, high);
-}
-
/* These should all do BUG_ON(_err), but our headers are too tangled. */
-#define rdmsr(msr,val1,val2) do { \
- int _err; \
- u64 _l = paravirt_read_msr(msr, &_err); \
- val1 = (u32)_l; \
- val2 = _l >> 32; \
+#define rdmsr(msr,val1,val2) do { \
+ int _err; \
+ u64 _l = paravirt_ops.read_msr(msr,&_err); \
+ val1 = (u32)_l; \
+ val2 = _l >> 32; \
} while(0)

-#define wrmsr(msr,val1,val2) do { \
- paravirt_write_msr(msr, val1, val2); \
+#define wrmsr(msr,val1,val2) do { \
+ u64 _l = ((u64)(val2) << 32) | (val1); \
+ paravirt_ops.write_msr((msr), _l); \
} while(0)

-#define rdmsrl(msr,val) do { \
- int _err; \
- val = paravirt_read_msr(msr, &_err); \
+#define rdmsrl(msr,val) do { \
+ int _err; \
+ val = paravirt_ops.read_msr((msr),&_err); \
} while(0)

-#define wrmsrl(msr,val) ((void)paravirt_write_msr(msr, val, 0))
-#define wrmsr_safe(msr,a,b) paravirt_write_msr(msr, a, b)
+#define wrmsrl(msr,val) (paravirt_ops.write_msr((msr),(val)))
+#define wrmsr_safe(msr,a,b) ({ \
+ u64 _l = ((u64)(b) << 32) | (a); \
+ paravirt_ops.write_msr((msr),_l); \
+})

/* rdmsr with exception handling */
-#define rdmsr_safe(msr,a,b) ({ \
- int _err; \
- u64 _l = paravirt_read_msr(msr, &_err); \
- (*a) = (u32)_l; \
- (*b) = _l >> 32; \
+#define rdmsr_safe(msr,a,b) ({ \
+ int _err; \
+ u64 _l = paravirt_ops.read_msr(msr,&_err); \
+ (*a) = (u32)_l; \
+ (*b) = _l >> 32; \
_err; })

+#define rdtsc(low,high) do { \
+ u64 _l = paravirt_ops.read_tsc(); \
+ low = (u32)_l; \
+ high = _l >> 32; \
+} while(0)

-static inline u64 paravirt_read_tsc(void)
-{
- return PVOP_CALL0(u64, read_tsc);
-}
-
-#define rdtscl(low) do { \
- u64 _l = paravirt_read_tsc(); \
- low = (int)_l; \
+#define rdtscl(low) do { \
+ u64 _l = paravirt_ops.read_tsc(); \
+ low = (int)_l; \
} while(0)

-#define rdtscll(val) (val = paravirt_read_tsc())
+#define rdtscll(val) (val = paravirt_ops.read_tsc())

#define get_scheduled_cycles(val) (val = paravirt_ops.get_scheduled_cycles())
#define calculate_cpu_khz() (paravirt_ops.get_cpu_khz())

#define write_tsc(val1,val2) wrmsr(0x10, val1, val2)

-static inline unsigned long long paravirt_read_pmc(int counter)
-{
- return PVOP_CALL1(u64, read_pmc, counter);
-}
-
-#define rdpmc(counter,low,high) do { \
- u64 _l = paravirt_read_pmc(counter); \
- low = (u32)_l; \
- high = _l >> 32; \
+#define rdpmc(counter,low,high) do { \
+ u64 _l = paravirt_ops.read_pmc(); \
+ low = (u32)_l; \
+ high = _l >> 32; \
} while(0)

-static inline void load_TR_desc(void)
-{
- PVOP_VCALL0(load_tr_desc);
-}
-static inline void load_gdt(const struct Xgt_desc_struct *dtr)
-{
- PVOP_VCALL1(load_gdt, dtr);
-}
-static inline void load_idt(const struct Xgt_desc_struct *dtr)
-{
- PVOP_VCALL1(load_idt, dtr);
-}
-static inline void set_ldt(const void *addr, unsigned entries)
-{
- PVOP_VCALL2(set_ldt, addr, entries);
-}
-static inline void store_gdt(struct Xgt_desc_struct *dtr)
-{
- PVOP_VCALL1(store_gdt, dtr);
-}
-static inline void store_idt(struct Xgt_desc_struct *dtr)
-{
- PVOP_VCALL1(store_idt, dtr);
-}
-static inline unsigned long paravirt_store_tr(void)
-{
- return PVOP_CALL0(unsigned long, store_tr);
-}
-#define store_tr(tr) ((tr) = paravirt_store_tr())
-static inline void load_TLS(struct thread_struct *t, unsigned cpu)
-{
- PVOP_VCALL2(load_tls, t, cpu);
-}
-static inline void write_ldt_entry(void *dt, int entry, u32 low, u32 high)
-{
- PVOP_VCALL4(write_ldt_entry, dt, entry, low, high);
-}
-static inline void write_gdt_entry(void *dt, int entry, u32 low, u32 high)
-{
- PVOP_VCALL4(write_gdt_entry, dt, entry, low, high);
-}
-static inline void write_idt_entry(void *dt, int entry, u32 low, u32 high)
-{
- PVOP_VCALL4(write_idt_entry, dt, entry, low, high);
-}
-static inline void set_iopl_mask(unsigned mask)
-{
- PVOP_VCALL1(set_iopl_mask, mask);
-}
+#define load_TR_desc() (paravirt_ops.load_tr_desc())
+#define load_gdt(dtr) (paravirt_ops.load_gdt(dtr))
+#define load_idt(dtr) (paravirt_ops.load_idt(dtr))
+#define set_ldt(addr, entries) (paravirt_ops.set_ldt((addr), (entries)))
+#define store_gdt(dtr) (paravirt_ops.store_gdt(dtr))
+#define store_idt(dtr) (paravirt_ops.store_idt(dtr))
+#define store_tr(tr) ((tr) = paravirt_ops.store_tr())
+#define load_TLS(t,cpu) (paravirt_ops.load_tls((t),(cpu)))
+#define write_ldt_entry(dt, entry, low, high) \
+ (paravirt_ops.write_ldt_entry((dt), (entry), (low), (high)))
+#define write_gdt_entry(dt, entry, low, high) \
+ (paravirt_ops.write_gdt_entry((dt), (entry), (low), (high)))
+#define write_idt_entry(dt, entry, low, high) \
+ (paravirt_ops.write_idt_entry((dt), (entry), (low), (high)))
+#define set_iopl_mask(mask) (paravirt_ops.set_iopl_mask(mask))
+
+#define __pte(x) paravirt_ops.make_pte(x)
+#define __pgd(x) paravirt_ops.make_pgd(x)
+
+#define pte_val(x) paravirt_ops.pte_val(x)
+#define pgd_val(x) paravirt_ops.pgd_val(x)
+
+#ifdef CONFIG_X86_PAE
+#define __pmd(x) paravirt_ops.make_pmd(x)
+#define pmd_val(x) paravirt_ops.pmd_val(x)
+#endif

/* The paravirtualized I/O functions */
static inline void slow_down_io(void) {
@@ -645,27 +368,27 @@ static inline void slow_down_io(void) {
*/
static inline void apic_write(unsigned long reg, unsigned long v)
{
- PVOP_VCALL2(apic_write, reg, v);
+ paravirt_ops.apic_write(reg,v);
}

static inline void apic_write_atomic(unsigned long reg, unsigned long v)
{
- PVOP_VCALL2(apic_write_atomic, reg, v);
+ paravirt_ops.apic_write_atomic(reg,v);
}

static inline unsigned long apic_read(unsigned long reg)
{
- return PVOP_CALL1(unsigned long, apic_read, reg);
+ return paravirt_ops.apic_read(reg);
}

static inline void setup_boot_clock(void)
{
- PVOP_VCALL0(setup_boot_clock);
+ paravirt_ops.setup_boot_clock();
}

static inline void setup_secondary_clock(void)
{
- PVOP_VCALL0(setup_secondary_clock);
+ paravirt_ops.setup_secondary_clock();
}
#endif

@@ -685,239 +408,109 @@ static inline void paravirt_pagetable_se
static inline void startup_ipi_hook(int phys_apicid, unsigned long start_eip,
unsigned long start_esp)
{
- PVOP_VCALL3(startup_ipi_hook, phys_apicid, start_eip, start_esp);
+ return paravirt_ops.startup_ipi_hook(phys_apicid, start_eip, start_esp);
}
#endif

static inline void paravirt_activate_mm(struct mm_struct *prev,
struct mm_struct *next)
{
- PVOP_VCALL2(activate_mm, prev, next);
+ paravirt_ops.activate_mm(prev, next);
}

static inline void arch_dup_mmap(struct mm_struct *oldmm,
struct mm_struct *mm)
{
- PVOP_VCALL2(dup_mmap, oldmm, mm);
+ paravirt_ops.dup_mmap(oldmm, mm);
}

static inline void arch_exit_mmap(struct mm_struct *mm)
{
- PVOP_VCALL1(exit_mmap, mm);
+ paravirt_ops.exit_mmap(mm);
}

-static inline void __flush_tlb(void)
-{
- PVOP_VCALL0(flush_tlb_user);
-}
-static inline void __flush_tlb_global(void)
-{
- PVOP_VCALL0(flush_tlb_kernel);
-}
-static inline void __flush_tlb_single(unsigned long addr)
-{
- PVOP_VCALL1(flush_tlb_single, addr);
-}
-
-static inline void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm,
- unsigned long va)
-{
- PVOP_VCALL3(flush_tlb_others, &cpumask, mm, va);
-}
+#define __flush_tlb() paravirt_ops.flush_tlb_user()
+#define __flush_tlb_global() paravirt_ops.flush_tlb_kernel()
+#define __flush_tlb_single(addr) paravirt_ops.flush_tlb_single(addr)

-static inline void paravirt_alloc_pt(unsigned pfn)
-{
- PVOP_VCALL1(alloc_pt, pfn);
-}
-static inline void paravirt_release_pt(unsigned pfn)
-{
- PVOP_VCALL1(release_pt, pfn);
-}
+#define paravirt_map_pt_hook(type, va, pfn) paravirt_ops.map_pt_hook(type, va, pfn)

-static inline void paravirt_alloc_pd(unsigned pfn)
-{
- PVOP_VCALL1(alloc_pd, pfn);
-}
+#define paravirt_alloc_pt(pfn) paravirt_ops.alloc_pt(pfn)
+#define paravirt_release_pt(pfn) paravirt_ops.release_pt(pfn)

-static inline void paravirt_alloc_pd_clone(unsigned pfn, unsigned clonepfn,
- unsigned start, unsigned count)
-{
- PVOP_VCALL4(alloc_pd_clone, pfn, clonepfn, start, count);
-}
-static inline void paravirt_release_pd(unsigned pfn)
-{
- PVOP_VCALL1(release_pd, pfn);
-}
-
-#ifdef CONFIG_HIGHPTE
-static inline void *kmap_atomic_pte(struct page *page, enum km_type type)
-{
- unsigned long ret;
- ret = PVOP_CALL2(unsigned long, kmap_atomic_pte, page, type);
- return (void *)ret;
-}
-#endif
-
-static inline void pte_update(struct mm_struct *mm, unsigned long addr,
- pte_t *ptep)
-{
- PVOP_VCALL3(pte_update, mm, addr, ptep);
-}
-
-static inline void pte_update_defer(struct mm_struct *mm, unsigned long addr,
- pte_t *ptep)
-{
- PVOP_VCALL3(pte_update_defer, mm, addr, ptep);
-}
-
-#ifdef CONFIG_X86_PAE
-static inline pte_t __pte(unsigned long long val)
-{
- unsigned long long ret = PVOP_CALL2(unsigned long long, make_pte,
- val, val >> 32);
- return (pte_t) { ret, ret >> 32 };
-}
-
-static inline pmd_t __pmd(unsigned long long val)
-{
- return (pmd_t) { PVOP_CALL2(unsigned long long, make_pmd, val, val >> 32) };
-}
-
-static inline pgd_t __pgd(unsigned long long val)
-{
- return (pgd_t) { PVOP_CALL2(unsigned long long, make_pgd, val, val >> 32) };
-}
-
-static inline unsigned long long pte_val(pte_t x)
-{
- return PVOP_CALL2(unsigned long long, pte_val, x.pte_low, x.pte_high);
-}
-
-static inline unsigned long long pmd_val(pmd_t x)
-{
- return PVOP_CALL2(unsigned long long, pmd_val, x.pmd, x.pmd >> 32);
-}
-
-static inline unsigned long long pgd_val(pgd_t x)
-{
- return PVOP_CALL2(unsigned long long, pgd_val, x.pgd, x.pgd >> 32);
-}
+#define paravirt_alloc_pd(pfn) paravirt_ops.alloc_pd(pfn)
+#define paravirt_alloc_pd_clone(pfn, clonepfn, start, count) \
+ paravirt_ops.alloc_pd_clone(pfn, clonepfn, start, count)
+#define paravirt_release_pd(pfn) paravirt_ops.release_pd(pfn)

static inline void set_pte(pte_t *ptep, pte_t pteval)
{
- PVOP_VCALL3(set_pte, ptep, pteval.pte_low, pteval.pte_high);
+ paravirt_ops.set_pte(ptep, pteval);
}

static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
pte_t *ptep, pte_t pteval)
{
- /* 5 arg words */
paravirt_ops.set_pte_at(mm, addr, ptep, pteval);
}

-static inline void set_pte_atomic(pte_t *ptep, pte_t pteval)
-{
- PVOP_VCALL3(set_pte_atomic, ptep, pteval.pte_low, pteval.pte_high);
-}
-
-static inline void set_pte_present(struct mm_struct *mm, unsigned long addr,
- pte_t *ptep, pte_t pte)
-{
- /* 5 arg words */
- paravirt_ops.set_pte_present(mm, addr, ptep, pte);
-}
-
static inline void set_pmd(pmd_t *pmdp, pmd_t pmdval)
{
- PVOP_VCALL3(set_pmd, pmdp, pmdval.pmd, pmdval.pmd >> 32);
+ paravirt_ops.set_pmd(pmdp, pmdval);
}

-static inline void set_pud(pud_t *pudp, pud_t pudval)
+static inline void pte_update(struct mm_struct *mm, u32 addr, pte_t *ptep)
{
- PVOP_VCALL3(set_pud, pudp, pudval.pgd.pgd, pudval.pgd.pgd >> 32);
+ paravirt_ops.pte_update(mm, addr, ptep);
}

-static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
+static inline void pte_update_defer(struct mm_struct *mm, u32 addr, pte_t *ptep)
{
- PVOP_VCALL3(pte_clear, mm, addr, ptep);
+ paravirt_ops.pte_update_defer(mm, addr, ptep);
}

-static inline void pmd_clear(pmd_t *pmdp)
-{
- PVOP_VCALL1(pmd_clear, pmdp);
-}
-
-#else /* !CONFIG_X86_PAE */
-
-static inline pte_t __pte(unsigned long val)
-{
- return (pte_t) { PVOP_CALL1(unsigned long, make_pte, val) };
-}
-
-static inline pgd_t __pgd(unsigned long val)
+#ifdef CONFIG_X86_PAE
+static inline void set_pte_atomic(pte_t *ptep, pte_t pteval)
{
- return (pgd_t) { PVOP_CALL1(unsigned long, make_pgd, val) };
+ paravirt_ops.set_pte_atomic(ptep, pteval);
}

-static inline unsigned long pte_val(pte_t x)
+static inline void set_pte_present(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)
{
- return PVOP_CALL1(unsigned long, pte_val, x.pte_low);
+ paravirt_ops.set_pte_present(mm, addr, ptep, pte);
}

-static inline unsigned long pgd_val(pgd_t x)
+static inline void set_pud(pud_t *pudp, pud_t pudval)
{
- return PVOP_CALL1(unsigned long, pgd_val, x.pgd);
+ paravirt_ops.set_pud(pudp, pudval);
}

-static inline void set_pte(pte_t *ptep, pte_t pteval)
+static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
{
- PVOP_VCALL2(set_pte, ptep, pteval.pte_low);
+ paravirt_ops.pte_clear(mm, addr, ptep);
}

-static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
- pte_t *ptep, pte_t pteval)
+static inline void pmd_clear(pmd_t *pmdp)
{
- PVOP_VCALL4(set_pte_at, mm, addr, ptep, pteval.pte_low);
+ paravirt_ops.pmd_clear(pmdp);
}
+#endif

-static inline void set_pmd(pmd_t *pmdp, pmd_t pmdval)
-{
- PVOP_VCALL2(set_pmd, pmdp, pmdval.pud.pgd.pgd);
-}
-#endif /* CONFIG_X86_PAE */
+/* Lazy mode for batching updates / context switch */
+#define PARAVIRT_LAZY_NONE 0
+#define PARAVIRT_LAZY_MMU 1
+#define PARAVIRT_LAZY_CPU 2
+#define PARAVIRT_LAZY_FLUSH 3

#define __HAVE_ARCH_ENTER_LAZY_CPU_MODE
-static inline void arch_enter_lazy_cpu_mode(void)
-{
- PVOP_VCALL1(set_lazy_mode, PARAVIRT_LAZY_CPU);
-}
-
-static inline void arch_leave_lazy_cpu_mode(void)
-{
- PVOP_VCALL1(set_lazy_mode, PARAVIRT_LAZY_NONE);
-}
-
-static inline void arch_flush_lazy_cpu_mode(void)
-{
- PVOP_VCALL1(set_lazy_mode, PARAVIRT_LAZY_FLUSH);
-}
-
+#define arch_enter_lazy_cpu_mode() paravirt_ops.set_lazy_mode(PARAVIRT_LAZY_CPU)
+#define arch_leave_lazy_cpu_mode() paravirt_ops.set_lazy_mode(PARAVIRT_LAZY_NONE)
+#define arch_flush_lazy_cpu_mode() paravirt_ops.set_lazy_mode(PARAVIRT_LAZY_FLUSH)

#define __HAVE_ARCH_ENTER_LAZY_MMU_MODE
-static inline void arch_enter_lazy_mmu_mode(void)
-{
- PVOP_VCALL1(set_lazy_mode, PARAVIRT_LAZY_MMU);
-}
-
-static inline void arch_leave_lazy_mmu_mode(void)
-{
- PVOP_VCALL1(set_lazy_mode, PARAVIRT_LAZY_NONE);
-}
-
-static inline void arch_flush_lazy_mmu_mode(void)
-{
- PVOP_VCALL1(set_lazy_mode, PARAVIRT_LAZY_FLUSH);
-}
+#define arch_enter_lazy_mmu_mode() paravirt_ops.set_lazy_mode(PARAVIRT_LAZY_MMU)
+#define arch_leave_lazy_mmu_mode() paravirt_ops.set_lazy_mode(PARAVIRT_LAZY_NONE)
+#define arch_flush_lazy_mmu_mode() paravirt_ops.set_lazy_mode(PARAVIRT_LAZY_FLUSH)

void _paravirt_nop(void);
#define paravirt_nop ((void *)_paravirt_nop)
@@ -1009,20 +602,7 @@ static inline unsigned long __raw_local_
[paravirt_sti_type] "i" (PARAVIRT_PATCH(irq_enable)), \
paravirt_clobber(CLBR_EAX)

-/* Make sure as little as possible of this mess escapes. */
#undef PARAVIRT_CALL
-#undef __PVOP_CALL
-#undef __PVOP_VCALL
-#undef PVOP_VCALL0
-#undef PVOP_CALL0
-#undef PVOP_VCALL1
-#undef PVOP_CALL1
-#undef PVOP_VCALL2
-#undef PVOP_CALL2
-#undef PVOP_VCALL3
-#undef PVOP_CALL3
-#undef PVOP_VCALL4
-#undef PVOP_CALL4

#else /* __ASSEMBLY__ */

Index: linux-2.6-git/include/asm-i386/tlbflush.h
===================================================================
--- linux-2.6-git.orig/include/asm-i386/tlbflush.h
+++ linux-2.6-git/include/asm-i386/tlbflush.h
@@ -79,19 +79,15 @@
* - flush_tlb_range(vma, start, end) flushes a range of pages
* - flush_tlb_kernel_range(start, end) flushes a range of kernel pages
* - flush_tlb_pgtables(mm, start, end) flushes a range of page tables
- * - flush_tlb_others(cpumask, mm, va) flushes a TLBs on other cpus
*
* ..but the i386 has somewhat limited tlb flushing capabilities,
* and page-granular flushes are available only on i486 and up.
*/

-#define TLB_FLUSH_ALL 0xffffffff
-
+#define TLB_FLUSH_ALL 0xffffffff

#ifndef CONFIG_SMP

-#include <linux/sched.h>
-
#define flush_tlb() __flush_tlb()
#define flush_tlb_all() __flush_tlb_all()
#define local_flush_tlb() __flush_tlb()
@@ -116,12 +112,7 @@ static inline void flush_tlb_range(struc
__flush_tlb();
}

-static inline void native_flush_tlb_others(const cpumask_t *cpumask,
- struct mm_struct *mm, unsigned long va)
-{
-}
-
-#else /* SMP */
+#else

#include <asm/smp.h>

@@ -140,9 +131,6 @@ static inline void flush_tlb_range(struc
flush_tlb_mm(vma->vm_mm);
}

-void native_flush_tlb_others(const cpumask_t *cpumask, struct mm_struct *mm,
- unsigned long va);
-
#define TLBSTATE_OK 1
#define TLBSTATE_LAZY 2

@@ -153,11 +141,8 @@ struct tlb_state
char __cacheline_padding[L1_CACHE_BYTES-8];
};
DECLARE_PER_CPU(struct tlb_state, cpu_tlbstate);
-#endif /* SMP */

-#ifndef CONFIG_PARAVIRT
-#define flush_tlb_others(mask, mm, va) \
- native_flush_tlb_others(&mask, mm, va)
+
#endif

#define flush_tlb_kernel_range(start, end) flush_tlb_all()

2007-06-25 08:30:26

by Ingo Molnar

[permalink] [raw]
Subject: Re: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang


* Ingo Molnar <[email protected]> wrote:

> the winner is ...
>
> f8822f42019eceed19cc6c0f985a489e17796ed8 is first bad commit
> commit f8822f42019eceed19cc6c0f985a489e17796ed8
> Author: Jeremy Fitzhardinge <[email protected]>
> Date: Wed May 2 19:27:14 2007 +0200
>
> [PATCH] i386: PARAVIRT: Consistently wrap paravirt ops callsites to make them patchable

and of course i'm happy to test any patch that is simpler than the
brutal revert i sent.

Ingo

2007-06-25 12:41:35

by Jeremy Fitzhardinge

[permalink] [raw]
Subject: Re: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang

Ingo Molnar wrote:
> * Ingo Molnar <[email protected]> wrote:
>
>
>> hm, restoring nmi.c to the v2.6.21 state does not fix the
>> nmi_watchdog=2 hang. I'll do a bisection run.
>>
>
> and after spending an hour on 15 bisection steps:
>
> git-bisect start
> git-bisect good d1be341dba5521506d9e6dccfd66179080705bea
> git-bisect bad a06381fec77bf88ec6c5eb6324457cb04e9ffd69
> git-bisect bad 794543a236074f49a8af89ef08ef6a753e4777e5
> git-bisect good 24a77daf3d80bddcece044e6dc3675e427eef3f3
> git-bisect bad ea62ccd00fd0b6720b033adfc9984f31130ce195
> git-bisect good 7e20ef030dde0e52dd5a57220ee82fa9facbea4e
> git-bisect bad f19cccf366a07e05703c90038704a3a5ffcb0607
> git-bisect good 0d08e0d3a97cce22ebf80b54785e00d9b94e1add
> git-bisect bad 856f44ff4af6e57fdc39a8b2bec498c88438bd27
> git-bisect bad f8822f42019eceed19cc6c0f985a489e17796ed8
> git-bisect good 1c3d99c11c47c8a1a9ed6a46555dbf6520683c52
> git-bisect good b239fb2501117bf3aeb4dd6926edd855be92333d
> git-bisect good 98de032b681d8a7532d44dfc66aa5c0c1c755a9d
> git-bisect good 42c24fa22e86365055fc931d833f26165e687c19
>
> the winner is ...
>
> f8822f42019eceed19cc6c0f985a489e17796ed8 is first bad commit
> commit f8822f42019eceed19cc6c0f985a489e17796ed8
> Author: Jeremy Fitzhardinge <[email protected]>
> Date: Wed May 2 19:27:14 2007 +0200
>
> [PATCH] i386: PARAVIRT: Consistently wrap paravirt ops callsites to make them patchable
>
> ... our wonderful paravirt subsystem, honed to eternal perfection by the
> testing-machine x86_64 tree.
>
> reverting -git-curr's paravirt.c, paravirt.h, smp.c and tlbflush.h to
> before the bad commit makes the NMI watchdog work again. Patch against
> -rc6 is below.
>

Er, wow. I've been running with this stuff for months without a
problem. Do you have CONFIG_PARAVIRT enabled? Do you still get the
hang if you boot with "noreplace-paravirt" to disable the patching?

Your revert patch seems to take out quite a lot of stuff, some unrelated
to the paravirt_ops. Where did that come from?

I presume there's one bad callsite in here which is used by the nmi path
more or less exclusively. Is the bug simply that it hangs if you boot
with nmi_watchdog=2? ie, no other details?

> @@ -222,10 +211,30 @@ void send_IPI_mask_sequence(cpumask_t ma
> */
>
> local_irq_save(flags);
> +
> for (query_cpu = 0; query_cpu < NR_CPUS; ++query_cpu) {
> if (cpu_isset(query_cpu, mask)) {
> - __send_IPI_dest_field(cpu_to_logical_apicid(query_cpu),
> - vector);
> +
> + /*
> + * Wait for idle.
> + */
> + apic_wait_icr_idle();
> +
> + /*
> + * prepare target chip field
> + */
> + cfg = __prepare_ICR2(cpu_to_logical_apicid(query_cpu));
> + apic_write_around(APIC_ICR2, cfg);
> +
> + /*
> + * program the ICR
> + */
> + cfg = __prepare_ICR(0, vector);
> +
> + /*
> + * Send the IPI. The write to APIC_ICR fires this off.
> + */
> + apic_write_around(APIC_ICR, cfg);
> }
> }
> local_irq_restore(flags);
>

What's this? This isn't paravirt_ops related, is it?

J

2007-06-25 12:44:55

by Björn Steinbrink

[permalink] [raw]
Subject: Re: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang

On 2007.06.25 10:26:52 +0200, Ingo Molnar wrote:
>
> * Ingo Molnar <[email protected]> wrote:
>
> > the winner is ...
> >
> > f8822f42019eceed19cc6c0f985a489e17796ed8 is first bad commit
> > commit f8822f42019eceed19cc6c0f985a489e17796ed8
> > Author: Jeremy Fitzhardinge <[email protected]>
> > Date: Wed May 2 19:27:14 2007 +0200
> >
> > [PATCH] i386: PARAVIRT: Consistently wrap paravirt ops callsites to make them patchable
>
> and of course i'm happy to test any patch that is simpler than the
> brutal revert i sent.

wrmsrl() looks broken, dropping the upper 32bits of the value to be
written. Does this help?

Bj?rn
---
diff --git a/include/asm-i386/paravirt.h b/include/asm-i386/paravirt.h
index d7a0512..7f846a7 100644
--- a/include/asm-i386/paravirt.h
+++ b/include/asm-i386/paravirt.h
@@ -539,7 +539,7 @@ static inline int paravirt_write_msr(unsigned msr, unsigned low, unsigned high)
val = paravirt_read_msr(msr, &_err); \
} while(0)

-#define wrmsrl(msr,val) ((void)paravirt_write_msr(msr, val, 0))
+#define wrmsrl(msr,val) wrmsr(msr, (u32)((u64)(val)), ((u64)(val))>>32)
#define wrmsr_safe(msr,a,b) paravirt_write_msr(msr, a, b)

/* rdmsr with exception handling */

2007-06-25 12:50:14

by Jeremy Fitzhardinge

[permalink] [raw]
Subject: Re: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang

Bj?rn Steinbrink wrote:
> On 2007.06.25 10:26:52 +0200, Ingo Molnar wrote:
>
>> * Ingo Molnar <[email protected]> wrote:
>>
>>
>>> the winner is ...
>>>
>>> f8822f42019eceed19cc6c0f985a489e17796ed8 is first bad commit
>>> commit f8822f42019eceed19cc6c0f985a489e17796ed8
>>> Author: Jeremy Fitzhardinge <[email protected]>
>>> Date: Wed May 2 19:27:14 2007 +0200
>>>
>>> [PATCH] i386: PARAVIRT: Consistently wrap paravirt ops callsites to make them patchable
>>>
>> and of course i'm happy to test any patch that is simpler than the
>> brutal revert i sent.
>>
>
> wrmsrl() looks broken, dropping the upper 32bits of the value to be
> written. Does this help?
>

Crap. That's embarrassing. Does it help, because it seems likely?
(Esp since Ingo didn't even have CONFIG_PARAVIRT enabled, so most of his
revert would have been dead code anyway.)

J

2007-06-25 13:05:44

by Björn Steinbrink

[permalink] [raw]
Subject: Re: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang

On 2007.06.25 08:49:05 -0400, Jeremy Fitzhardinge wrote:
> Bj?rn Steinbrink wrote:
> >On 2007.06.25 10:26:52 +0200, Ingo Molnar wrote:
> >
> >>* Ingo Molnar <[email protected]> wrote:
> >>
> >>
> >>>the winner is ...
> >>>
> >>> f8822f42019eceed19cc6c0f985a489e17796ed8 is first bad commit
> >>> commit f8822f42019eceed19cc6c0f985a489e17796ed8
> >>> Author: Jeremy Fitzhardinge <[email protected]>
> >>> Date: Wed May 2 19:27:14 2007 +0200
> >>>
> >>> [PATCH] i386: PARAVIRT: Consistently wrap paravirt ops callsites to
> >>> make them patchable
> >>>
> >>and of course i'm happy to test any patch that is simpler than the
> >>brutal revert i sent.
> >>
> >
> >wrmsrl() looks broken, dropping the upper 32bits of the value to be
> >written. Does this help?
> >
>
> Crap. That's embarrassing. Does it help, because it seems likely?
> (Esp since Ingo didn't even have CONFIG_PARAVIRT enabled, so most of his
> revert would have been dead code anyway.)

He has. The config Ingo sent was for x86_64, which (AFAICT) doesn't have
CONFIG_PARAVIRT, so the config was unfortunately useless. But his
bootlog tells us:

Booting paravirtualized kernel on bare hardware

Bj?rn

2007-06-25 13:13:09

by Björn Steinbrink

[permalink] [raw]
Subject: Re: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang

On 2007.06.25 08:40:35 -0400, Jeremy Fitzhardinge wrote:
> Ingo Molnar wrote:
> >* Ingo Molnar <[email protected]> wrote:
> >
> >
> >>hm, restoring nmi.c to the v2.6.21 state does not fix the
> >>nmi_watchdog=2 hang. I'll do a bisection run.
> >>
> >
> >and after spending an hour on 15 bisection steps:
> >
> > git-bisect start
> > git-bisect good d1be341dba5521506d9e6dccfd66179080705bea
> > git-bisect bad a06381fec77bf88ec6c5eb6324457cb04e9ffd69
> > git-bisect bad 794543a236074f49a8af89ef08ef6a753e4777e5
> > git-bisect good 24a77daf3d80bddcece044e6dc3675e427eef3f3
> > git-bisect bad ea62ccd00fd0b6720b033adfc9984f31130ce195
> > git-bisect good 7e20ef030dde0e52dd5a57220ee82fa9facbea4e
> > git-bisect bad f19cccf366a07e05703c90038704a3a5ffcb0607
> > git-bisect good 0d08e0d3a97cce22ebf80b54785e00d9b94e1add
> > git-bisect bad 856f44ff4af6e57fdc39a8b2bec498c88438bd27
> > git-bisect bad f8822f42019eceed19cc6c0f985a489e17796ed8
> > git-bisect good 1c3d99c11c47c8a1a9ed6a46555dbf6520683c52
> > git-bisect good b239fb2501117bf3aeb4dd6926edd855be92333d
> > git-bisect good 98de032b681d8a7532d44dfc66aa5c0c1c755a9d
> > git-bisect good 42c24fa22e86365055fc931d833f26165e687c19
> >
> >the winner is ...
> >
> > f8822f42019eceed19cc6c0f985a489e17796ed8 is first bad commit
> > commit f8822f42019eceed19cc6c0f985a489e17796ed8
> > Author: Jeremy Fitzhardinge <[email protected]>
> > Date: Wed May 2 19:27:14 2007 +0200
> >
> > [PATCH] i386: PARAVIRT: Consistently wrap paravirt ops callsites to
> > make them patchable
> >
> >... our wonderful paravirt subsystem, honed to eternal perfection by the
> >testing-machine x86_64 tree.
> >
> >reverting -git-curr's paravirt.c, paravirt.h, smp.c and tlbflush.h to
> >before the bad commit makes the NMI watchdog work again. Patch against
> >-rc6 is below.
> >
>
> Er, wow. I've been running with this stuff for months without a
> problem. Do you have CONFIG_PARAVIRT enabled? Do you still get the
> hang if you boot with "noreplace-paravirt" to disable the patching?

Are you running on AMD hardware? As Intel performance counters are only
32 bits wide, the wrmsrl bug should be a non-issue at least for the NMI
watchdog on Intel hardware. AMD uses 48bit wide performance counters,
which are probably less happy ;-)

Bj?rn

2007-06-25 18:50:45

by Ingo Molnar

[permalink] [raw]
Subject: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang, take #2


* Bj?rn Steinbrink <[email protected]> wrote:

> > and of course i'm happy to test any patch that is simpler than the
> > brutal revert i sent.
>
> wrmsrl() looks broken, dropping the upper 32bits of the value to be
> written. Does this help?

this did the trick, rc6 plus your fix and the NMI watchdog works again!
Thanks! I suspect other code (oprofile?) broke due to this too.

below is a tidied up patch for upstream application. Must-have for
2.6.22.

Ingo

----------------->
From: Bj?rn Steinbrink <[email protected]>
Subject: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang, take #2

wrmsrl() is broken, dropping the upper 32bits of the value to be
written. This broke the NMI watchdog on AMD hardware. (and it
probably broke other code too.)

Signed-off-by: Ingo Molnar <[email protected]>
---
include/asm-i386/paravirt.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux/include/asm-i386/paravirt.h
===================================================================
--- linux.orig/include/asm-i386/paravirt.h
+++ linux/include/asm-i386/paravirt.h
@@ -539,7 +539,7 @@ static inline int paravirt_write_msr(uns
val = paravirt_read_msr(msr, &_err); \
} while(0)

-#define wrmsrl(msr,val) ((void)paravirt_write_msr(msr, val, 0))
+#define wrmsrl(msr,val) wrmsr(msr, (u32)((u64)(val)), ((u64)(val))>>32)
#define wrmsr_safe(msr,a,b) paravirt_write_msr(msr, a, b)

/* rdmsr with exception handling */

2007-06-28 23:36:47

by Adrian Bunk

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1: Xen compile error with X86_CMPXCHG=n

On Sat, Jun 02, 2007 at 03:57:12PM +0200, Adrian Bunk wrote:
> I'm getting the following compile error in 2.6.22-rc3-mm1 with
> CONFIG_X86_CMPXCHG=n (with -Werror-implicit-function-declaration -
> otherwise it would be a link error):
>
> <-- snip -->
>
> ...
> CC drivers/xen/grant-table.o
> /home/bunk/linux/kernel-2.6/linux-2.6.22-rc3-mm1/drivers/xen/grant-table.c: In function ‘gnttab_end_foreign_access_ref’:
> /home/bunk/linux/kernel-2.6/linux-2.6.22-rc3-mm1/drivers/xen/grant-table.c:203: error: implicit declaration of function ‘sync_cmpxchg’
> make[3]: *** [drivers/xen/grant-table.o] Error 1
>
> <-- snip -->
>
> Adding a dependency of XEN on X86_CMPXCHG should not be a problem and
> not prevent any reasonable real-life usage.
>
> But what worries me is that a seemingly architecture independent
> driver uses a function only available in some configurations.

Still present as of 2.6.22-rc6-mm1.

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-06-29 03:22:31

by Jeremy Fitzhardinge

[permalink] [raw]
Subject: Re: 2.6.22-rc3-mm1: Xen compile error with X86_CMPXCHG=n

Adrian Bunk wrote:
>> Adding a dependency of XEN on X86_CMPXCHG should not be a problem and
>> not prevent any reasonable real-life usage.
>>
>> But what worries me is that a seemingly architecture independent
>> driver uses a function only available in some configurations.
>>
>
> Still present as of 2.6.22-rc6-mm1.

Sorry, must have missed this one. Um, yeah, I guess we have a
dependency on cmpxchg. I'll do a patch.

J