Skip to contentSkip to conversation

2.6.24-rc4-mm1

PATCH Applied Andrew Morton 34 participants 128 messages Dec 5, 2007 – Dec 16, 2007 1 message not in the archive

Subsystems (12)
Networking Network drivers x86 SCSI +8 more subsystems
lore
Share & tools
lore

Andrew Morton

author Applied
#0 lore raw

Temporarily at

http://userweb.kernel.org/~akpm/2.6.24-rc4-mm1/

Will appear later at

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

- Lots of device IDs have been removed from the e1000 driver and moved over to e1000e. So if your e1000 stops working, you forgot to set CONFIG_E1000E.

- The s390 build is still broken.

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. These probably are at least compilable.

- More-than-daily -mm snapshots may be found at
http://userweb.kernel.org/~akpm/mmotm/. These are almost certainly not compileable.

Changes since 2.6.24-rc3-mm2:

origin.patch
git-acpi.patch
git-alsa.patch
git-agpgart.patch
git-arm.patch
git-avr32.patch
git-avr32-fixup.patch
git-cpufreq.patch
git-powerpc.patch
git-powerpc-galak.patch
git-drm.patch
git-dvb.patch
git-hwmon.patch
git-gfs2-nmw.patch
git-hid.patch
git-hrt.patch
git-ieee1394.patch
git-infiniband.patch
git-input.patch
git-jfs.patch
git-kbuild.patch
git-kvm.patch
git-lblnet.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-net.patch
git-netdev-all.patch
git-battery.patch
git-nfsd.patch
git-ocfs2.patch
git-parisc.patch
git-selinux.patch
git-s390.patch
git-sched.patch
git-sh.patch
git-scsi-misc.patch
git-sparc64.patch
git-unionfs.patch
git-v9fs.patch
git-watchdog.patch
git-wireless.patch
git-ipwireless_cs.patch
git-x86.patch
git-newsetup.patch
git-xfs.patch
git-cryptodev.patch
git-xtensa.patch

git trees

-update-checkpatchpl-to-version-012.patch -file-capabilities-allow-sigcont-within-session-v2.patch -cris-build-fixes-atomich-needs-compilerh.patch -atmel_spi-labels-gpios-better.patch -ps3-prefix-all-ps3-specific-kernel-modules-with.patch -ps3fb-video-memory-size-cleanups.patch -fix-boot-problem-with-iseries-lacking-hugepage-support.patch -uml-build-fix.patch
-xen-mask-_page_pcd-from-ptes.patch -pnp-increase-the-maximum-number-of-resources.patch -pnp-increase-the-maximum-number-of-resources-fix.patch -proc-fix-null-i_fop-oops.patch -wait_task_stopped-dont-use-task_pid_nr_ns-lockless.patch -proc-remove-races-from-proc_id_readdir.patch -tpm-tis-device-driver-locality-request.patch -termios-document-callback-more-clearly.patch -s3c24xx-ensure-we-only-configure-valid-gpios.patch -s3c2410-add-bus-number-to-spi-gpio-driver.patch -ipc-lost-unlock-and-fput-in-mqueuec-on-error-path.patch -fix-linux-kdh-usage-in-userspace.patch -fix-linux-kdh-usage-in-userspace-checkpatch-fixes.patch -m68k-zorro7xx-needs-asm-amigahwh.patch -fb_ddc-fix-ddc-lines-quirk.patch -drivers-pnp-resourcec-add-missing-pci_dev_put.patch -mfd-sm501-debug-typo-fix.patch -isolate-the-uts-namespaces-domainname-and-hostname-back.patch -the-namespaces-compatibility-list.patch -atmel_lcdfb-lcdc-startup-fix.patch -dmaengine-correct-invalid-assumptions-in-the-kconfig-text.patch -ip22zilog-fix-lockup-and-sysrq.patch -fix-up-ext2_fsh-for-userspace-after-reservations-backport.patch -hexdump-dont-print-bytes-with-bit-7-set.patch -file-capabilities-dont-prevent-signaling-setuid-root.patch -isdn-bootup-crash-fix-2624-rc3-git1.patch -uml-fix-no_hz-busy-loop.patch
-leak-in-do_ubd_request.patch -revert-keyspan-init-termios-properly.patch -x86_64-efi-boot-support-efi-frame-buffer.patch -x86_64-efi-boot-support-efi-boot-document.patch -memory-hotplug-fix-fix-section-mismatch-in-vmammap_allock_block.patch -memory-hotplug-x86_64-fix-section-mismatch-in-init_memory_mapping.patch -fuse-fix-reading-past-eof.patch -fuse-cleanup-add-fuse_get_attr_version.patch -fuse-pass-open-flags-to-read-and-write.patch -fuse-fix-fuse_file_ops-sending.patch -fuse-fix-uninitialized-field-in-fuse_inode.patch -fuse-fix-attribute-caching-after-rename.patch -sound-core-memallocc-add-missing-pci_dev_put.patch -arm-fix-memset-size-error.patch -gregkh-driver-allow-legacy_ptys-to-be-set-to-0.patch -gregkh-driver-create-sys-power-when-config_pm-is-set.patch -gregkh-driver-uio-fix-up-the-uio-documentation.patch -gregkh-driver-uio-add-uio-documentation-target-to-docbook-makefile.patch -gregkh-driver-kobject-two-typo-fixes.patch -gregkh-driver-sysfs-fix-off-by-one-error-in-fill_read_buffer.patch -gregkh-driver-nozomi.patch
-git-drm-warning-fix.patch -clocksource-make-clocksource_mask-bullet-proof.patch -time-fold-__get_realtime_clock_ts-into-getnstimeofday.patch -clean-hungarian-notation-from-timers.patch
-timer-cleanups.patch
-more-timer-related-cleanups.patch -ata_generic-unindent-loop-in-generic_set_mode.patch -libata-export-xfermode--pata-timing-related-functions.patch -libata-clean-up-xfermode--pata-timing-related-stuff.patch -libata-kill-ata_id_to_dma_mode.patch -libata-separate-out-ata_acpi_gtm_xfermask-from-pacpi_discover_modes.patch -libata-fix-ata_acpi_gtm_xfermask.patch -libata-implement-ata_timing_cycle2mode-and-use-it-in-libata-acpi-and-pata_acpi.patch -libata-implement-ata_acpi_init_gtm.patch -libata-reimplement-ata_acpi_cbl_80wire-using-ata_acpi_gtm_xfermask.patch -libata-add-ata_cbl_pata_ign.patch -pata_amd-update-mode-selection-for-nv-patas.patch -sata_nv-dont-use-legacy-dma-in-adma-mode-v3.patch -ide-mm-alim15x3-add-mitac-8317-and-derivatives-to-ali_cable_override.patch -ide-mm-ide-fix-host-drivers-depending-on-ide_generic-to-probe-for-interfaces.patch -fix-config_mtd_sharp_sl-if-config_mtd=m-try2.patch -net-irda-parametersc-trivial-fixes.patch -net-fix-tx-bug-vlan-in-vlan.patch
-xfrm_policy-warning-fix.patch
-phy-implement-release-function.patch -git-nfsd-fix-nfsd_idmap-stubs.patch -arch-parisc-remove-duplicate-includes.patch -gregkh-pci-pci-pcie-portdriver-initialize-returned-value.patch -gregkh-pci-pci-drivers-pci-pci-sysfsc-add-missing-pci_dev_put.patch -gregkh-usb-usb-fix-usb_ohci_hcd_ssb-dependencies.patch -gregkh-usb-usb-omap_udc-build-fix.patch -gregkh-usb-usb-pl2303-add-support-for-corega-cg-usbrs232r.patch -gregkh-usb-usb-storage-always-set-the-allow_restart-flag.patch -gregkh-usb-usb-fix-priority-mistakes-in-drivers-usb-core-hubc.patch -gregkh-usb-usb-free-memory-when-writing-fails-in-usb-serial-mos7840c.patch -gregkh-usb-usb-fix-usbled-disconnect-read-race-2.patch -gregkh-usb-usbserial-fix-inconsistent-lock-state.patch -gregkh-usb-usb-fix-signr-comment-in-usbdevice_fsh.patch -gregkh-usb-usb-power-management-documenation-update.patch -gregkh-usb-usb-fix-locks-and-urb-status-in-adutux.patch -gregkh-usb-usb-add-support-for-an-older-firmware-revision-for-the-nikon-d200.patch -gregkh-usb-usb-fix-directory-references-in-usb-readme.patch -gregkh-usb-usb-remove-usb-hub-entry-from-maintainers.patch -gregkh-usb-usb-mailing-lists-have-changed.patch -gregkh-usb-usb-hcd-avoid-duplicate-local_irq_disable.patch -gregkh-usb-usb-sierra-new-product-id.patch -gregkh-usb-usb-keep-track-of-whether-interface-sysfs-files-exist.patch -gregkh-usb-usb-uevent-environment-key-fix.patch -gregkh-usb-usb-make-the-microtek-driver-and-hal-cooperate.patch -gregkh-usb-usb-fix-up-ehci-startup-synchronization.patch -gregkh-usb-usb-usb-storage-unusual_devs-entry-for-jetflash-ts1gjf2a.patch -gregkh-usb-usb-s3c2410-gadget-header-move-fixups.patch -gregkh-usb-usb-s3c2410-gadget-allow-sharing-of-vbus-irq.patch -gregkh-usb-usb-s3c2410-gadget-ensure-vbus-pin-in-input-mode-during-read.patch -watchdog-add-nano-7240-driver-2.patch -txx9-watchdog-support-for-rbhma3100rbhma4200rbhma4500.patch -x86_64-set-cpu_index-to-nr_cpus-instead-of-0.patch -x86_64-do-not-set-boot-cpu-in-cpu_online_map-at-x86_64_start_kernel.patch -vmlinux_32ldss-remove-repeated-comment-from-the-x86-32-linker-script.patch -x86_64-make-sparsemem-vmemmap-the-only-memory-model.patch -rtc-convert-mutex-to-bitfield.patch
-drm-i915-fix-pointer-strip.patch -pata_amd-pata_via-de-couple-programming-of-pio-mwdma-and-udma-timings.patch -frv-fix-the-extern-declaration-of-kallsyms_num_syms.patch -frv-arrange-things-such-that-bra-can-reach-from-the-trap.patch -wait_task_stopped-pass-correct-exit_code-to.patch -tty-add-the-new-termios2-ioctls-to-the-compatible.patch -acpi-avoid-references-to-impossible-processors.patch -fix-proc-net-breakage.patch -lguest-prevent-visws-or-voyager-randconfigs.patch -x86-paravirt-revert-exports-to-restore-old-behaviour.patch -optimize-i8259-code-a-bit.patch -mm-prevent-dereferencing-non-allocated-per_cpu-variables.patch -mm-prevent-dereferencing-non-allocated-per_cpu-variables-fix.patch -fall-back-on-interrupt-disable-in-cmpxchg8b-on-80386-and-80486.patch -kernel-modulec-make_driver_name-can-use-kasrpintf.patch -lockdep-show-held-locks-when-showing-a-stackdump.patch -kmap_atomic-debugging.patch

Merged into mainline or a subsystem tree

+aio-only-account-i-o-wait-time-in-read_events-if-there-are-active-requests.patch +fix-cloneclone_newpid.patch +rtc-assure-proper-memory-ordering-with-respect-to-rtc_dev_busy-flag.patch +ufs-fix-nexstep-dir-block-size.patch +ufs-fix-nexstep-dir-block-size-checkpatch-fixes.patch +aoe-properly-initialise-the-request_queues-backing_dev_info.patch +mm-backing-devc-fix-percpu_counter_destroy-call-bug-in-bdi_init.patch +add-export_symbolksize.patch
+spi-use-mutex-not-semaphore.patch +spi-at25-driver-is-for-eeprom-not-flash.patch +spi-simplify-spi_sync-calling-convention.patch +spi-use-simplified-spi_sync-calling-convention.patch +spi-initial-bf54x-spi-support.patch +spi-bfin-spi-uses-portmux-calls.patch +spi-spi_bfin-cleanups-error-handling.patch +spi-spi_bfin-handles-spi_transfercs_change.patch +spi-spi_bfin-dont-bypass-spi-framework.patch +spi-spi_bfin-uses-platform-device-resources.patch +spi-spi_bfin-uses-portmux-for-additional-busses.patch +spi-spi_bfin-rearrange-portmux-calls.patch +spi-spi_bfin-change-handling-of-communication-parameters.patch +spi-spi_bfin-relocate-spin-waits.patch +spi-spi_bfin-handle-multiple-spi_masters.patch +spi-spi_bfin-bugfix-for-816-bit-word-sizes.patch +spi-spi_bfin-update-handling-of-delay-after-deselect.patch +spi-spi_bfin-resequence-dma-start-stop.patch +blackfin-spi-driver-use-cpu_relax-to-replace-continue-in-while-busywait.patch +blackfin-spi-driver-use-void-__iomem-for-regs_base.patch +blackfin-spi-driver-move-hard-coded-pin_req-to-board-file.patch +blackfin-spi-driver-reconfigure-speed_hz-and-bits_per_word-in-each-spi-transfer.patch +avoid-potential-null-dereference-in-unregister_sysctl_table.patch +gpio_cs5535-disable-aux-on-output.patch
+mm-fix-xip-file-writes.patch +revert-dpt_i2o-convert-to-scsi-hotplug-model.patch

2.6.24 queue

+__group_complete_signal-fix-coredump-with-group-stop-race.patch +remove-handle_group_stop-in-favor-of-do_signal_stop.patch +exec-rework-the-group-exit-and-fix-the-race-with-kill.patch

Maybe 2.6.24

+timerfd-v3-new-timerfd-api-ia64-fix.patch +timerfd-v3-new-timerfd-api-m68k-fix.patch +timerfd-v3-new-timerfd-api-mips-fix.patch +timerfd-v3-new-timerfd-api-arch-fixes.patch +timerfd-v3-new-timerfd-api-powerpc-fix.patch +timerfd-v3-new-timerfd-api-update-sys_nic-with-the-new-timerfd-syscalls.patch

Maybe fix timerfd-v3-new-timerfd-api.patch just a bit.

+sdio-fix-module-device-table-definition-for-m68k.patch +jbd-fix-assertion-failure-in-fs-jbd-checkpointc.patch +proc-fix-pde-refcounting.patch

Maybe 2.6.24

+git-avr32-fixup.patch

Fix conflicts in git-avr32.patch

+powerpc-invalid-size-for-swapper_pg_dir-with-config_pte_64bit=y.patch

powerpc fix

+gregkh-driver-nozomi.patch +gregkh-driver-kobject-convert-hvc_console-to-use-kref-not-kobject.patch +gregkh-driver-kobject-convert-hvcs-to-use-kref-not-kobject.patch +gregkh-driver-kobject-grab-the-kset-reference-in-kobject_add-not-kobject_init.patch +gregkh-driver-kobject-clean-up-debugging-messages.patch +gregkh-driver-usb-use-proper-call-to-driver_create_file.patch +gregkh-driver-pcmcia-use-proper-call-to-driver_create_file.patch +gregkh-driver-pci-use-proper-call-to-driver_create_file.patch +gregkh-driver-pci-remove-foolish-code-from-pci-driverc.patch +gregkh-driver-driver-core-move-the-driver-specific-module-code-into-the-driver-core.patch +gregkh-driver-driver-core-move-the-static-kobject-out-of-struct-driver.patch +gregkh-driver-driver-core-clean-up-debugging-messages.patch +gregkh-driver-kobject-fix-up-kobject_set_name-to-use-kvasprintf.patch +gregkh-driver-kobject-add-kobject_init_ng-kobject_add_ng-and-kobject_init_and_add-functions.patch +gregkh-driver-driver-core-fix-class-glue-dir-cleanup-logic.patch +gregkh-driver-sysfs-fix-sys-module-holders-after-sysfs-logic-change.patch +gregkh-driver-kobject-drop-child-parent-ref-at-unregistration.patch +gregkh-driver-block-device.patch

driver tree updates

+driver-tree-broke-infiniband.patch +gregkh-driver-driver-core-move-the-driver-specific-module-code-into-the-driver-core-fix.patch

Fixes for driver tree

+jdelvare-i2c-i2c-remove-redundant-gpio-drivers.patch

i2c tree update

+applesmc-sensors-set-for-macbook2.patch

sensors driver update

+apanel-free-input-device-on-close.patch
+apanel-change-name-of-led.patch
+apanel-detach-on-shutdown.patch
+apanel-use-generic-keycode-routines.patch

Update fujitsu-application-panel-driver.patch

+ads7846-stop-updating-dev-powerpower_state.patch

input driver fix

+libata-xfer_mask-is-unsigned-int-not-unsigned-long-fix.patch +libata-set-proper-ata-udma-mode-for-bf548-according-to-system-clock-checkpatch-fixes.patch +ata-ahci-enclosure-management-via-led.patch +libata-fix-early-use-of-port-printk-checkpatch-fixes.patch

sata/pata things

+ide-mm-ide-scsi-add-ide_scsi_hex_dump-helper.patch +ide-mm-ide-add-missing-checks-for-control-register-existence.patch +ide-mm-ide-deprecate-config_blk_dev_offboard.patch +ide-mm-ide-fix-ide_scan_pcibus-error-message.patch +ide-mm-ide-coding-style-fixes-for-drivers-ide-setup-pci-c.patch +ide-mm-ide-add-sys-bus-ide-devices-model-firmware-serial-sysfs-entries.patch +ide-mm-ide-fix-host-drivers-depending-on-ide_generic-to-probe-for-interfaces-take-2.patch +ide-mm-au1xxx-ide-au_ide_probe-fix.patch +ide-mm-au1xxx-ide-use-ide_init_port_hw.patch +ide-mm-ide-always-use-ide_std_init_ports-in-setup-pci-c.patch +ide-mm-ide-use-ide_init_port_hw-in-setup-pci-c.patch +ide-mm-rapide-remove-write-only-hwif-hwif_data.patch +ide-mm-ide-pmac-use-custom-hwif-sg_max_nents-only-if-dma-support-is-enabled.patch +ide-mm-ide-add-ide_set_irq-inline-helper.patch +ide-mm-ide-print-banner-message-once-per-controller-in-m68k-host-drivers.patch +ide-mm-ide-move-config_idepci_pcibus_order-code-to-ide-scan-pci-c.patch +ide-mm-ide-make-config_idepci_pcibus_order-visible-and-deprecate-it.patch

IDE tree updates

-git-mips-fixup.patch

Unneeded

+remove-trailing-nuls-from-network-bonding-sysfs-interface.patch +net-bonding-return-nothing-for-not-applicable-values.patch +net-bonding-purely-cosmetic-rename-a-local-variable.patch

net things

+net-smc911x-shut-up-compiler-warnings.patch
+bnx2x-depends-on-zlib_inflate.patch

netdev things

+pcmcia-stop-updating-dev-powerpower_state.patch

pcmcia fix

+quirk-enable-msi-mapping-on-ht1000-v2.patch

Fix quirk-enable-msi-mapping-on-ht1000.patch

-git-sh-fixup.patch

Unneeded

+drivers-scsi-sgiwd93c-export-sgiwd93_reset.patch
+scsi-qla2xxx-qla_osc-section-fix.patch

scsi fixes

-bidi-support-scsi_data_buffer-broke-qla1280.patch -bidi-support-scsi_data_buffer-broke-lots-of-stuff.patch

Folded into bidi-support-scsi_data_buffer.patch

+scsi-pending-arm-convert-to-accessors.patch

scsi fix

+edgeport-usb-serial-converter-convert-es_sem-to-mutex.patch +usb-testing-driver-convert-dev-sem-to-mutex.patch +usb-testing-driver-dont-free-a-locked-mutex.patch

USB things

+git-watchdog-hpwdt-build-fix.patch
+add-support-for-sb1-hardware-watchdog.patch
+add-support-for-sb1-hardware-watchdog-fix.patch

watchdog things

+iwlwifi-3945-fix-race-conditional-panic.patch +iwlwifi-4965-fix-race-conditional-panic.patch +net-mac80211-fix-inappropriate-memory-freeing.patch +bcm43xx_debugfs-sscanf-fix.patch

wireless fixes

+revert-git-kvm-changes-in-arch-x86-kconfig.patch
git-x86.patch
+revert-revert-git-kvm-changes-in-arch-x86-kconfig.patch

Make git-x86 apply

-git-x86-build-fix.patch

Unneeded

+git-x86-__vdso_getcpu-warning-fix.patch +uml-add-asm-um-asmh.patch +clocksource-make-clocksource_mask-bullet-proof.patch +time-fold-__get_realtime_clock_ts-into-getnstimeofday.patch

x86 stuff

+git-cryptodev-fixup.patch

Fix conflicts in git-cryptodev

+ieee80211_rate-missed-unlock.patch
+slubs-ksize-fails-for-size-2048.patch
+vm-security-add-security-hook-to-do_brk.patch

More 2.6.24 things

+vmstat-remove-prefetch.patch +mm-sparsec-improve-the-error-handling-for-sparse_add_one_section.patch +mm-dont-waste-swap-on-locked-pages.patch +skip-writing-data-pages-when-inode-is-under-i_sync.patch

MM updates

+add-64-bit-capability-support-to-the-kernel-capabilities-export-__cap_-symbols.patch +capabilities-introduce-per-process-capability-bounding-set-capabilities-correct-logic-at-capset_check.patch

Fix 64-bit capabilities

+smack-using-capabilities-32-and-33-update-cap_last_cap-to-reflect-cap_mac_admin.patch +smack-mutex-capability-pointers-and-spelling-cleanup.patch

smack updates

+nommu-add-new-vmalloc_user-and-remap_vmalloc_range-interfaces.patch

nommu update

+uml-fix-command-line-cflags-and-ldflags-support.patch +uml-style-fixes-in-arch-um-os-linux.patch

UML updates

+printk-trivial-optimizations-fix.patch

Fix printk-trivial-optimizations.patch

-partitions-use-kasprintf.patch

Dropped due to rejects

+inotify-send-in_attrib-events-when-link-count-changes-fix.patch +reiserfs-complement-va_start-with-va_end.patch +get-rid-of-nr_open-and-introduce-a-sysctl_nr_open.patch +synclink-standardize-format-of-linux-header-file-includes-with.patch +kernel-add-mutex_lock_killable.patch +vfs-use-mutex_lock_killable-in-vfs_readdir.patch +fix-__const_udelay-declaration-and-definition-mismatches.patch +drivers-char-randomcwrite_pool-cond_resched-needed.patch +kill-an-unused-ptr_err-in-bdev_cache_init.patch +remove-rcu_assign_pointer-penalty-for-null-pointers.patch +remove-superfluous-checks-for-config_blk_dev_initrd-from-initramfsc.patch +serial-use-sgi_has_zilog-for-ip22_zilog-depends.patch +char-use-sgi_has_ds1286-for-sgi_ds1286-depends.patch +clean-up-drivers-char-rtcc.patch +sc26xx-new-serial-driver-for-sc2681-uarts.patch +sc26xx-new-serial-driver-for-sc2681-uarts-update.patch +inotify-fix-race.patch
+inotify-remove-debug-code.patch +documentation-about-unaligned-memory-access.patch +drivers-char-tty_ioc-remove-pty_sem.patch +drivers-isdn-i4l-isdn_ttyc-remove-write_sem.patch +unix98-allocated_ptys_lock-semaphore-to-mutex.patch +kallsyms-should-prefer-non-weak-symbols.patch +kallsyms-should-prefer-non-weak-symbols-checkpatch-fixes.patch

Misc

+move-kprobes-examples-to-samples-resend-vs-git-x86.patch

Fix move-kprobes-examples-to-samples-resend.patch

+gigaset-permit-module-unload.patch

gigaset fix

+rtc-cmos-alarm-acts-as-oneshot.patch
+platform-real-time-clock-driver-for-dallas-1511-chip.patch
+# +blackfin-rtc-driver-the-frequency-function-is-in-units-of-hz-not-units-of-seconds-so-lock-our-driver-down-to-1-hz.patch +blackfin-rtc-driver-we-pass-in-a-struct-device-to-the-irq-handler-not-a-struct-platform_device-so-fix-the-irq-handler.patch +blackfin-rtc-driver-cleanup-proc-handler-we-dont-need-rtc-reg-dump-now-that-we-have-mmr-filesystem-in-sysfs.patch +blackfin-rtc-driver-use-dev_dbg-rather-than-pr_stamp.patch +blackfin-rtc-driver-read_alarm-checks-the-enabled-field-not-the-pending-field.patch +blackfin-rtc-driver-shave-off-another-memcpy-by-using-assignment.patch +blackfin-rtc-driver-convert-sync-wait-to-use-the-irq-write-complete-notice.patch

rtc updates

+fbmon-remove-unnecessary-local-variable.patch +fbmon-cleanup-trailing-whitespaces.patch +fbmon-cleanup-trailing-whitespaces-checkpatch-fixes.patch

fbdev queue

+declare-pnp-option-parsing-functions-as-__init.patch +declare-pnp-option-parsing-functions-as-__init-checkpatch-fixes.patch +isapnp-driver-semaphore-to-mutex.patch +isapnp-driver-semaphore-to-mutex-fix.patch +isapnp-driver-semaphore-to-mutex-fix-fix.patch

pnp updates

-ext4-add-block-bitmap-validation-fix.patch

Folded into ext4-add-block-bitmap-validation.patch

-ext4-fix-up-ext4fs_debug-builds-checkpatch-fixes.patch

Folded into ext4-fix-up-ext4fs_debug-builds.patch

+jbd2-fix-assertion-failure-in-fs-jbd2-checkpointc.patch +ext4-check-for-the-correct-error-return-from-ext4_ext_get_blocks.patch +ext4-check-for-the-correct-error-return-from-ext4_ext_get_blocks-fix.patch

ext4 updates

+memory-controller-improve-user-interface-memory-controller-enhancements-for-reclaiming-take2-possible-race-fix-in-res_counter.patch +per-zone-and-reclaim-enhancements-for-memory-controller-take-3-per-zone-active-inactive-counter-memory-controller-enhancements-for-reclaiming-take2-clean-up-remove-unused-variable.patch +per-zone-and-reclaim-enhancements-for-memory-controller-take-3-per-zone-active-inactive-counter-memory-controller-enhancements-for-reclaiming-take2-add-bug_on-in-mem_cgroup_zoneinfo.patch +per-zone-and-reclaim-enhancements-for-memory-controller-take-3-per-zone-lru-for-cgroup-bugfix-for-memory-cgroup-per-zone-struct-allocation.patch +per-zone-and-reclaim-enhancements-for-memory-controller-take-3-per-zone-lru-for-cgroup-memory-controller-enhancements-for-reclaiming-take2-define-free_mem_cgroup_per_zone_info.patch

Update cgroups memory controller patches in -mm.

-add-cmpxchg_local-to-sh-use-generic-cmpxchg-instead-of-cmpxchg_u32.patch

Dropped due to rejects

+proc-seqfile-convert-proc_pid_status-to-properly-handle-pid-namespaces.patch +proc-seqfile-convert-proc_pid_status-to-properly-handle-pid-namespaces-checkpatch-fixes.patch +proc-seqfile-convert-proc_pid_status-to-properly-handle-pid-namespaces-fix.patch

procfs work

+fix-setsid-for-sub-namespace-sbin-init.patch +teach-set_special_pids-to-use-struct-pid.patch +move-daemonized-kernel-threads-into-the-swappers-session.patch +start-the-global-sbin-init-with-00-special-pids.patch +clocksource-remove-redundant-code.patch +clockevent-simplify-list-operations.patch +timekeeping-rename-timekeeping_is_continuous-to-timekeeping_valid_for_hres.patch +time-fix-typo-in-comments.patch +time-delete-comments-that-refer-to-noexistent-symbols.patch

Core kernel updates

+aout-move-stack_top-to-asm-processorh.patch
+aout-mark-arches-that-support-aout-format.patch +aout-suppress-aout-library-support-if-config_arch_supports_aout.patch +aout-suppress-aout-library-support-if-config_arch_supports_aout-vs-git-x86.patch +aout-suppress-aout-library-support-if-config_arch_supports_aout-vs-sanitize-the-type-of-struct-useru_ar0.patch +aout-remove-unnecessary-inclusions-of-asm-linux-aouth.patch +aout-remove-unnecessary-inclusions-of-asm-linux-aouth-alpha-fix.patch +usb-net2280-cant-have-a-function-called-show_registers.patch +mn10300-allocate-serial-port-uart-ids-for-on-chip-serial-ports.patch +mn10300-add-the-mn10300-am33-architecture-to-the-kernel.patch +mn10300-add-the-mn10300-am33-architecture-to-the-kernel-fix.patch +mn10300-add-platform-mtd-support-for-the-asb2303-board.patch

mn10300 architecture and associated stuff

+rewrite-rd.patch
+rewrite-rd-fix.patch
+rewrite-rd-fixes.patch

Reimplamantation of the ramdisk driver

+linux-kernel-markers-support-multiple-probes.patch +linux-kernel-markers-support-multiple-probes-update.patch +linux-kernel-markers-create-modpost-file.patch

markers update

+cramfs-make-cramfs-little-endian-only.patch +cramfs-make-cramfs-little-endian-only-update.patch +cramfs-make-cramfs-little-endian-only-fix.patch +cramfs-update-documentation.patch

cramfs work (needs updating)

+reiser4-new-export-ops-update.patch
+reiser4-specify-splice-file-operations.patch

reiser5 updates

4453 commits in 1478 patch files

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

#1 lore raw

2.6.24-rc4-mm1: kobj changes fallout on powerpc

powerpc allyesconfig fails on the following two drivers (iseries_defconfig fails for the veth one):

drivers/net/ehea/ehea_main.c: In function 'ehea_driver_sysfs_add':
drivers/net/ehea/ehea_main.c:2812: error: 'struct device_driver' has no member named 'kobj' drivers/net/ehea/ehea_main.c:2815: error: 'struct device_driver' has no member named 'kobj' drivers/net/ehea/ehea_main.c:2818: error: 'struct device_driver' has no member named 'kobj' drivers/net/ehea/ehea_main.c: In function 'ehea_driver_sysfs_remove':
drivers/net/ehea/ehea_main.c:2830: error: 'struct device_driver' has no member named 'kobj' drivers/net/iseries_veth.c: In function 'veth_module_init':
drivers/net/iseries_veth.c:1714: error: 'struct device_driver' has no member named 'kobj'

I'm guessing it's some of Greg's kobj/driver patches that missed to change this, but it's not obvious to me how it should be fixed.

-Olof

#2 lore raw

Re: 2.6.24-rc4-mm1: kobj changes fallout on powerpc

Quoted 12 lines · Olof Johansson

powerpc allyesconfig fails on the following two drivers (iseries_defconfig fails for the veth one):

drivers/net/ehea/ehea_main.c: In function 'ehea_driver_sysfs_add':
drivers/net/ehea/ehea_main.c:2812: error: 'struct device_driver' has no member named 'kobj' drivers/net/ehea/ehea_main.c:2815: error: 'struct device_driver' has no member named 'kobj' drivers/net/ehea/ehea_main.c:2818: error: 'struct device_driver' has no member named 'kobj' drivers/net/ehea/ehea_main.c: In function 'ehea_driver_sysfs_remove':
drivers/net/ehea/ehea_main.c:2830: error: 'struct device_driver' has no member named 'kobj' drivers/net/iseries_veth.c: In function 'veth_module_init':
drivers/net/iseries_veth.c:1714: error: 'struct device_driver' has no member named 'kobj'

Quoted 5 lines

I'm guessing it's some of Greg's kobj/driver patches that missed to change this, but it's not obvious to me how it should be fixed.

-Olof

Hi,

Probably this patch should fix the build failure (The kobject related structure have been moved to driver_private struct).

--

drivers/net/ehea/~ehea_main.c renamed from drivers/net/ehea/ehea_main.c +1 -1
@@ -2809,7 +2809,7 @@ static int ehea_driver_sysfs_add(struct 
 {
 	int ret;
 
-	ret = sysfs_create_link(&driver->kobj, &dev->kobj,
+	ret = sysfs_create_link(&driver->driver_private->kobj, &dev->kobj,
 				kobject_name(&dev->kobj));
 	if (ret == 0) {
 		ret = sysfs_create_link(&dev->kobj, &driver->kobj,
#4 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Andrew Morton

Hi Andrew,

The 2.6.24-rc4-mm1 kernel build fails with build failure,

CC drivers/char/hvcs.o
drivers/char/hvcs.c: In function ‘hvcs_open’:
drivers/char/hvcs.c:1180: error: wrong type argument to unary exclamation mark make[2]: *** [drivers/char/hvcs.o] Error 1
make[1]: *** [drivers/char] Error 2
make: *** [drivers] Error 2

The kref_get begin void return type, check for the kobject return type as in the previous kobject_get()

        if (!kref_get(&hvcsd->kref)) {
                spin_unlock_irqrestore(&hvcsd->lock, flags); 
                printk(KERN_ERR "HVCS: Kobject of open"
                        " hvcs doesn't exist.\n");
                return -EFAULT; /* Is this the right return value? */
        }

I have tested for the build failure only.

--

drivers/char/~hvcs.c renamed from drivers/char/hvcs.c +2 -6
@@ -1177,12 +1177,8 @@ fast_open:
 	hvcsd = tty->driver_data;
 
 	spin_lock_irqsave(&hvcsd->lock, flags);
-	if (!kref_get(&hvcsd->kref)) {
-		spin_unlock_irqrestore(&hvcsd->lock, flags);
-		printk(KERN_ERR "HVCS: Kobject of open"
-			" hvcs doesn't exist.\n");
-		return -EFAULT; /* Is this the right return value? */
-	}
+	kref_get(&hvcsd->kref);
+	spin_unlock_irqrestore(&hvcsd->lock, flags);
 
 	hvcsd->open_count++;
 
#5 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

Quoted 10 lines · Kamalesh Babulal

Hi Andrew,

The 2.6.24-rc4-mm1 kernel build fails with build failure,

CC drivers/char/hvcs.o
drivers/char/hvcs.c: In function ‘hvcs_open’:
drivers/char/hvcs.c:1180: error: wrong type argument to unary exclamation mark make[2]: *** [drivers/char/hvcs.o] Error 1
make[1]: *** [drivers/char] Error 2
make: *** [drivers] Error 2

Oops, sorry about that, my fault. I'll merge your fix in with my original patch, thanks for it.

greg k-h

#3 lore raw

Re: 2.6.24-rc4-mm1: kobj changes fallout on powerpc

In reply to Kamalesh Babulal
Quoted 17 lines · Kamalesh Babulal
Quoted 16 lines · Olof Johansson

powerpc allyesconfig fails on the following two drivers (iseries_defconfig fails for the veth one):

drivers/net/ehea/ehea_main.c: In function 'ehea_driver_sysfs_add':
drivers/net/ehea/ehea_main.c:2812: error: 'struct device_driver' has no member named 'kobj' drivers/net/ehea/ehea_main.c:2815: error: 'struct device_driver' has no member named 'kobj' drivers/net/ehea/ehea_main.c:2818: error: 'struct device_driver' has no member named 'kobj' drivers/net/ehea/ehea_main.c: In function 'ehea_driver_sysfs_remove':
drivers/net/ehea/ehea_main.c:2830: error: 'struct device_driver' has no member named 'kobj' drivers/net/iseries_veth.c: In function 'veth_module_init':
drivers/net/iseries_veth.c:1714: error: 'struct device_driver' has no member named 'kobj'

I'm guessing it's some of Greg's kobj/driver patches that missed to change this, but it's not obvious to me how it should be fixed.

Quoted 5 lines
Quoted 1 line

-Olof

Hi,

Probably this patch should fix the build failure (The kobject related structure have been moved to driver_private struct).

Yes, but as driver_private is not known by any driver, I don't think this patch will work at all.

drivers/net/ehea/~ehea_main.c static int ehea_driver_sysfs_add(struct · line 2813

Quoted 11 lines

--

drivers/net/ehea/~ehea_main.c renamed from drivers/net/ehea/ehea_main.c +1 -1
@@ -2809,7 +2809,7 @@ static int ehea_driver_sysfs_add(struct 
 {
 	int ret;
 
-	ret = sysfs_create_link(&driver->kobj, &dev->kobj,
+	ret = sysfs_create_link(&driver->driver_private->kobj, &dev->kobj,
 				kobject_name(&dev->kobj));

What are you trying to do here? The driver core already sets up this symlink for you automatically, why are you createing yet-another-link with a different name? This should just be removed entirely, it's not needed at all.

So, to fix the build properly, just delete the sysfs_create_link() call entirely.

thanks,

greg k-h

#18 lore raw

2.6.24-rc4-mm1: hostbyte=0x01 driverbyte=0x00 (now bisected)

In reply to Andrew Morton
Quoted 1 line

git-scsi-misc.patch

Apologies for not looking into the problem earlier. See
http://marc.info/?t=119628022300005&r=1&w=2
"2.6.24-rc3-mm2: Result: hostbyte=0x01 driverbyte=0x00\nend_request: I/O error" for previous installment.

I've bisected it to the following patch in git-scsi-misc branch. Revert on top of 2.6.24-rc4-mm1 also helps.

commit 8655a546c83fc43f0a73416bbd126d02de7ad6c0

Author: Hannes Reinecke <[email protected]>
Date:   Tue Nov 6 09:23:40 2007 +0100

[SCSI] Do not requeue requests if REQ_FAILFAST is set

Any requests with the REQ_FAILFAST flag set should not be requeued to the requeust queue, but rather terminated directly. Otherwise the multipath failover will stall until the command timeout triggers.

drivers/scsi/scsi_lib.c +31 -3
index 0f44bdb..0da0dd0 100644
@@ -1286,6 +1286,11 @@ int scsi_prep_state_check(struct scsi_device *sdev, struct request *req)
 			 */
 			if (!(req->cmd_flags & REQ_PREEMPT))
 				ret = BLKPREP_DEFER;
+			/*
+			 * Return failfast requests immediately
+			 */
+			if (req->cmd_flags & REQ_FAILFAST)
+				ret = BLKPREP_KILL;
 			break;
 		default:
 			/*
@@ -1414,6 +1419,17 @@ static inline int scsi_host_queue_ready(struct request_queue *q,
 	return 1;
 }
 
+static void __scsi_kill_request(struct request *req)
+{
+	struct scsi_cmnd *cmd = req->special;
+	struct scsi_device *sdev = cmd->device;
+
+	cmd->result = DID_NO_CONNECT << 16;
+	atomic_inc(&cmd->device->iorequest_cnt);
+	sdev->device_busy--;
+	__scsi_done(cmd);
+}
+
 /*
  * Kill a request for a dead device
  */
@@ -1527,8 +1543,16 @@ static void scsi_request_fn(struct request_queue *q)
 		 * accept it.
 		 */
 		req = elv_next_request(q);
-		if (!req || !scsi_dev_queue_ready(q, sdev))
+		if (!req)
+			break;
+
+		if (!scsi_dev_queue_ready(q, sdev)) {
+			if (req->cmd_flags & REQ_FAILFAST) {
+				scsi_kill_request(req, q);
+				continue;
+			}
 			break;
+		}
 
 		if (unlikely(!scsi_device_online(sdev))) {
 			sdev_printk(KERN_ERR, sdev,
@@ -1609,8 +1633,12 @@ static void scsi_request_fn(struct request_queue *q)
 	 * later time.
 	 */
 	spin_lock_irq(q->queue_lock);
-	blk_requeue_request(q, req);
-	sdev->device_busy--;
+	if (unlikely(req->cmd_flags & REQ_FAILFAST))
+		__scsi_kill_request(req);
+	else {
+		blk_requeue_request(q, req);
+		sdev->device_busy--;
+	}
 	if(sdev->device_busy == 0)
 		blk_plug_device(q);
  out:
#22 lore raw

Re: 2.6.24-rc4-mm1 Kernel build fails on S390x

In reply to Andrew Morton

Hi Andrew,

The 2.6.24-rc4-mm1 kernel build fails on s390x,

CC arch/s390/kernel/traps.o
In file included from include/asm/thread_info.h:39,

                 from include/linux/thread_info.h:21,
                 from include/linux/preempt.h:9,
                 from include/linux/spinlock.h:49,
                 from include/linux/seqlock.h:29,
                 from include/linux/time.h:8,
                 from include/linux/timex.h:57,
                 from include/linux/sched.h:53,
                 from arch/s390/kernel/traps.c:17:

include/asm/processor.h:191: warning: "struct seq_file" declared inside parameter list include/asm/processor.h:191: warning: its scope is only this definition or declaration, which is probably not what you want arch/s390/kernel/traps.c: In function `task_show_regs':
arch/s390/kernel/traps.c:226: error: implicit declaration of function `seq_printf'
make[1]: *** [arch/s390/kernel/traps.o] Error 1
make: *** [arch/s390/kernel] Error 2

Signature · 4 lines
Thanks & Regards,
Kamalesh Babulal,
Linux Technology Center,
IBM, ISTL.
#24 lore raw
In reply to Andrew Morton
Quoted 11 lines · Andrew Morton

Temporarily at

http://userweb.kernel.org/~akpm/2.6.24-rc4-mm1/

Will appear later at

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

- Lots of device IDs have been removed from the e1000 driver and moved over to e1000e. So if your e1000 stops working, you forgot to set CONFIG_E1000E.

This non fatal oops which I have just noticed may be related to this change then - certainly looks networking related.

WARNING: at net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()

Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #1

Call Trace:
 <IRQ>  [<ffffffff8046e038>] tcp_fastretrans_alert+0x229/0xe63
 [<ffffffff80470975>] tcp_ack+0xa3f/0x127d
 [<ffffffff804747b7>] tcp_rcv_established+0x55f/0x7f8
 [<ffffffff8047b1aa>] tcp_v4_do_rcv+0xdb/0x3a7
 [<ffffffff881148a8>] :nf_conntrack:nf_ct_deliver_cached_events+0x75/0x99
 [<ffffffff88120179>] :nf_conntrack_ipv4:ipv4_confirm+0x29/0x51
 [<ffffffff8047db71>] tcp_v4_rcv+0x9be/0xaed
 [<ffffffff80455eaa>] nf_hook_slow+0x60/0xdf
 [<ffffffff8045db6b>] ip_local_deliver_finish+0xd3/0x253
 [<ffffffff8045e146>] ip_local_deliver+0x3b/0x85
 [<ffffffff8045d7f9>] ip_rcv_finish+0x119/0x3b8
 [<ffffffff8045e030>] ip_rcv+0x231/0x30c
 [<ffffffff8043ef39>] netif_receive_skb+0x215/0x299
 [<ffffffff880b82b9>] :e1000e:e1000_receive_skb+0x4d/0x1db
 [<ffffffff880bc200>] :e1000e:e1000_clean_rx_irq+0x12c/0x341
 [<ffffffff880ba31a>] :e1000e:e1000_clean+0x306/0x58f
 [<ffffffff8022a16a>] rebalance_domains+0xec/0x423
 [<ffffffff80261332>] handle_edge_irq+0x97/0x13b
 [<ffffffff804412d3>] net_rx_action+0xb8/0x11d
 [<ffffffff802344f8>] __do_softirq+0x71/0xdd
 [<ffffffff8020c8fc>] call_softirq+0x1c/0x30
 [<ffffffff8020e7a5>] do_softirq+0x3d/0x8d
 [<ffffffff80234485>] irq_exit+0x84/0x86
 [<ffffffff8020e89e>] do_IRQ+0x7e/0xe4
 [<ffffffff8020a908>] mwait_idle+0x0/0x58
 [<ffffffff8020a7f1>] default_idle+0x0/0x43
 [<ffffffff8020bc81>] ret_from_intr+0x0/0xa
 <EOI>  [<ffffffff8020a950>] mwait_idle+0x48/0x58
 [<ffffffff80209f23>] enter_idle+0x22/0x24
 [<ffffffff8020a897>] cpu_idle+0x63/0x88
 [<ffffffff804ada75>] rest_init+0x55/0x60
 [<ffffffff80627b9a>] start_kernel+0x2a4/0x32a
 [<ffffffff8062710b>] _sinittext+0x10b/0x120

tornado home #

I have posted a full dmesg up as well as my .config and an lcpci at http://www.reub.net/files/kernel/2.6.24-rc4-mm1/ .

Thanks,
Reuben

maintainer
#25 lore raw

From: Reuben Farrelly <[email protected]>
Date: Thu, 06 Dec 2007 17:59:37 +1100

Quoted 8 lines · Andrew Morton
Quoted 2 lines

- Lots of device IDs have been removed from the e1000 driver and moved over to e1000e. So if your e1000 stops working, you forgot to set CONFIG_E1000E.

This non fatal oops which I have just noticed may be related to this change then
- certainly looks networking related.

WARNING: at net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()
Quoted 8 lines

Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #1

Call Trace:
  <IRQ>  [<ffffffff8046e038>] tcp_fastretrans_alert+0x229/0xe63
  [<ffffffff80470975>] tcp_ack+0xa3f/0x127d
  [<ffffffff804747b7>] tcp_rcv_established+0x55f/0x7f8
  [<ffffffff8047b1aa>] tcp_v4_do_rcv+0xdb/0x3a7
  [<ffffffff881148a8>] :nf_conntrack:nf_ct_deliver_cached_events+0x75/0x99

No, it's from TCP assertions and changes added by Ilpo to the net-2.6.25 tree recently.

#23 lore raw

Re: 2.6.24-rc4-mm1 Kernel build fails on S390x

In reply to Kamalesh Babulal
Quoted 14 lines · On Thu, 06 Dec 2007 08:45:37 +0530 Kamalesh Babulal…

Hi Andrew,

The 2.6.24-rc4-mm1 kernel build fails on s390x,

CC arch/s390/kernel/traps.o
In file included from include/asm/thread_info.h:39,

                 from include/linux/thread_info.h:21,
                 from include/linux/preempt.h:9,
                 from include/linux/spinlock.h:49,
                 from include/linux/seqlock.h:29,
                 from include/linux/time.h:8,
                 from include/linux/timex.h:57,
                 from include/linux/sched.h:53,
                 from arch/s390/kernel/traps.c:17:
Quoted 6 lines

include/asm/processor.h:191: warning: "struct seq_file" declared inside parameter list include/asm/processor.h:191: warning: its scope is only this definition or declaration, which is probably not what you want arch/s390/kernel/traps.c: In function `task_show_regs':
arch/s390/kernel/traps.c:226: error: implicit declaration of function `seq_printf'
make[1]: *** [arch/s390/kernel/traps.o] Error 1
make: *** [arch/s390/kernel] Error 2

thanks.

arch/s390/kernel/traps.c renamed from arch/s390/kernel/traps.c~proc-seqfile-convert-proc_pid_status-to-properly-handle-pid-namespaces-fix-2 +1 -0
@@ -24,6 +24,7 @@
 #include <linux/smp.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
+#include <linux/seq_file.h>
 #include <linux/delay.h>
 #include <linux/module.h>
 #include <linux/kdebug.h>
include/asm-s390/processor.h renamed from include/asm-s390/processor.h~proc-seqfile-convert-proc_pid_status-to-properly-handle-pid-namespaces-fix-2 +1 -0
diff -puN include/asm-s390/processor.h~proc-seqfile-convert-proc_pid_status-to-properly-handle-pid-namespaces-fix-2 include/asm-s390/processor.h
@@ -165,6 +165,7 @@ struct stack_frame {
 /* Forward declaration, a strange C thing */
 struct task_struct;
 struct mm_struct;
+struct seq_file;
 
 /* Free all resources held by a thread. */
 extern void release_thread(struct task_struct *);

_

Unfortunately the current greg-versus-git-s390 snafu means that I'm not cross-building s390.

#28 lore raw
In reply to Reuben Farrelly
Quoted 7 lines · On Thu, 06 Dec 2007 17:59:37 +1100 Reuben Farrelly…
Quoted 6 lines · Andrew Morton

Temporarily at

http://userweb.kernel.org/~akpm/2.6.24-rc4-mm1/

Will appear later at

Quoted 8 lines
Quoted 5 lines

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

- Lots of device IDs have been removed from the e1000 driver and moved over to e1000e. So if your e1000 stops working, you forgot to set CONFIG_E1000E.

This non fatal oops which I have just noticed may be related to this change then
- certainly looks networking related.

yep, but it isn't e1000. It's core TCP.

Quoted 38 lines
WARNING: at net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()

Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #1

Call Trace:
  <IRQ>  [<ffffffff8046e038>] tcp_fastretrans_alert+0x229/0xe63
  [<ffffffff80470975>] tcp_ack+0xa3f/0x127d
  [<ffffffff804747b7>] tcp_rcv_established+0x55f/0x7f8
  [<ffffffff8047b1aa>] tcp_v4_do_rcv+0xdb/0x3a7
  [<ffffffff881148a8>] :nf_conntrack:nf_ct_deliver_cached_events+0x75/0x99
  [<ffffffff88120179>] :nf_conntrack_ipv4:ipv4_confirm+0x29/0x51
  [<ffffffff8047db71>] tcp_v4_rcv+0x9be/0xaed
  [<ffffffff80455eaa>] nf_hook_slow+0x60/0xdf
  [<ffffffff8045db6b>] ip_local_deliver_finish+0xd3/0x253
  [<ffffffff8045e146>] ip_local_deliver+0x3b/0x85
  [<ffffffff8045d7f9>] ip_rcv_finish+0x119/0x3b8
  [<ffffffff8045e030>] ip_rcv+0x231/0x30c
  [<ffffffff8043ef39>] netif_receive_skb+0x215/0x299
  [<ffffffff880b82b9>] :e1000e:e1000_receive_skb+0x4d/0x1db
  [<ffffffff880bc200>] :e1000e:e1000_clean_rx_irq+0x12c/0x341
  [<ffffffff880ba31a>] :e1000e:e1000_clean+0x306/0x58f
  [<ffffffff8022a16a>] rebalance_domains+0xec/0x423
  [<ffffffff80261332>] handle_edge_irq+0x97/0x13b
  [<ffffffff804412d3>] net_rx_action+0xb8/0x11d
  [<ffffffff802344f8>] __do_softirq+0x71/0xdd
  [<ffffffff8020c8fc>] call_softirq+0x1c/0x30
  [<ffffffff8020e7a5>] do_softirq+0x3d/0x8d
  [<ffffffff80234485>] irq_exit+0x84/0x86
  [<ffffffff8020e89e>] do_IRQ+0x7e/0xe4
  [<ffffffff8020a908>] mwait_idle+0x0/0x58
  [<ffffffff8020a7f1>] default_idle+0x0/0x43
  [<ffffffff8020bc81>] ret_from_intr+0x0/0xa
  <EOI>  [<ffffffff8020a950>] mwait_idle+0x48/0x58
  [<ffffffff80209f23>] enter_idle+0x22/0x24
  [<ffffffff8020a897>] cpu_idle+0x63/0x88
  [<ffffffff804ada75>] rest_init+0x55/0x60
  [<ffffffff80627b9a>] start_kernel+0x2a4/0x32a
  [<ffffffff8062710b>] _sinittext+0x10b/0x120
Quoted 5 lines

tornado home #

I have posted a full dmesg up as well as my .config and an lcpci at
http://www.reub.net/files/kernel/2.6.24-rc4-mm1/ .

Ilpo, Reuben's kernel is talking to you ;)

#19 lore raw

Re: 2.6.24-rc4-mm1: hostbyte=0x01 driverbyte=0x00 (now bisected)

In reply to Alexey Dobriyan
Quoted 81 lines · Alexey Dobriyan
Quoted 1 line

git-scsi-misc.patch

Apologies for not looking into the problem earlier. See
http://marc.info/?t=119628022300005&r=1&w=2
"2.6.24-rc3-mm2: Result: hostbyte=0x01 driverbyte=0x00\nend_request: I/O error" for previous installment.

I've bisected it to the following patch in git-scsi-misc branch. Revert on top of 2.6.24-rc4-mm1 also helps.

commit 8655a546c83fc43f0a73416bbd126d02de7ad6c0

Author: Hannes Reinecke <[email protected]>
Date:   Tue Nov 6 09:23:40 2007 +0100

[SCSI] Do not requeue requests if REQ_FAILFAST is set

Any requests with the REQ_FAILFAST flag set should not be requeued to the requeust queue, but rather terminated directly. Otherwise the multipath failover will stall until the command timeout triggers.

drivers/scsi/scsi_lib.c +25 -2
index 0f44bdb..0da0dd0 100644
@@ -1286,6 +1286,11 @@ int scsi_prep_state_check(struct scsi_device *sdev, struct request *req)
 			 */
 			if (!(req->cmd_flags & REQ_PREEMPT))
 				ret = BLKPREP_DEFER;
+			/*
+			 * Return failfast requests immediately
+			 */
+			if (req->cmd_flags & REQ_FAILFAST)
+				ret = BLKPREP_KILL;
 			break;
 		default:
 			/*
@@ -1414,6 +1419,17 @@ static inline int scsi_host_queue_ready(struct request_queue *q,
 	return 1;
 }
 
+static void __scsi_kill_request(struct request *req)
+{
+	struct scsi_cmnd *cmd = req->special;
+	struct scsi_device *sdev = cmd->device;
+
+	cmd->result = DID_NO_CONNECT << 16;
+	atomic_inc(&cmd->device->iorequest_cnt);
+	sdev->device_busy--;
+	__scsi_done(cmd);
+}
+
 /*
  * Kill a request for a dead device
  */
@@ -1527,8 +1543,16 @@ static void scsi_request_fn(struct request_queue *q)
 		 * accept it.
 		 */
 		req = elv_next_request(q);
-		if (!req || !scsi_dev_queue_ready(q, sdev))
+		if (!req)
+			break;
+
+		if (!scsi_dev_queue_ready(q, sdev)) {
+			if (req->cmd_flags & REQ_FAILFAST) {
+				scsi_kill_request(req, q);
+				continue;
+			}
 			break;
+		}
 
 		if (unlikely(!scsi_device_online(sdev))) {
 			sdev_printk(KERN_ERR, sdev,
@@ -1609,8 +1633,12 @@ static void scsi_request_fn(struct request_queue *q)
 	 * later time.
 	 */
 	spin_lock_irq(q->queue_lock);
-	blk_requeue_request(q, req);

drivers/scsi/scsi_lib.c static void scsi_request_fn(struct request_queue *q) · line 1644

Quoted 10 lines
drivers/scsi/scsi_lib.c +6 -1
-	sdev->device_busy--;
+	if (unlikely(req->cmd_flags & REQ_FAILFAST))
+		__scsi_kill_request(req);
+	else {
+		blk_requeue_request(q, req);
+		sdev->device_busy--;
+	}
 	if(sdev->device_busy == 0)
 		blk_plug_device(q);
  out:

Yeah, sorry. That patch was bad. Please use the attached one instead. Andrew, can you replace them?

Cheers,

Hannes

Signature · 4 lines
Dr. Hannes Reinecke		      zSeries & Storage
[email protected]			      +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Markus Rex, HRB 16746 (AG Nürnberg)
drivers/scsi/scsi_lib.c +9 -7
index 13e7e09..9ec1566 100644
@@ -1284,13 +1284,15 @@ int scsi_prep_state_check(struct scsi_device *sdev, struct request *req)
 			/*
 			 * If the devices is blocked we defer normal commands.
 			 */
-			if (!(req->cmd_flags & REQ_PREEMPT))
-				ret = BLKPREP_DEFER;
-			/*
-			 * Return failfast requests immediately
-			 */
-			if (req->cmd_flags & REQ_FAILFAST)
-				ret = BLKPREP_KILL;
+			if (!(req->cmd_flags & REQ_PREEMPT)) {
+				/*
+				 * Return failfast requests immediately
+				 */
+				if (req->cmd_flags & REQ_FAILFAST)
+					ret = BLKPREP_KILL;
+				else
+					ret = BLKPREP_DEFER;
+			}
 			break;
 		default:
 			/*
#33 lore raw
In reply to Andrew Morton
Quoted 1 line · Andrew Morton

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

Something in here broke LVM support - an initrd that has worked fine for quite some time suddenly couldn't mount /dev/VolGroup00/root so we get the infamous "Kernel panic - not syncing: Attempted to kill init!" when we fall off the end of the initrd and haven't pivoted to the real disk.

It finds the disk OK:

[   81.202310] sd 0:0:0:0: [sda] 156301488 512-byte hardware sectors (80026 MB)
[   81.214466] sd 0:0:0:0: [sda] Write Protect is off
[   81.226467] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[   81.238436] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   81.250780]  sda: sda1 sda2
[   75.396119] sd 0:0:0:0: [sda] Attached SCSI disk

but then the lvm command says it can't find the volume group VolGroup00 (which is actually sda2 - sda1 is a small /boot partition, rest of disk is LVM).

A quick look at the rc4-mm1 announcement doesn't have any obviously tempting patch names to start at, so it looks like it's time to play mm-bisect. It may take me a day or two, as I have some time management issues this week...

#34 lore raw
Quoted 17 lines · On Thu, 06 Dec 2007 06:49:24 -0500 [email protected] wrote:
Quoted 1 line · Andrew Morton

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

Something in here broke LVM support - an initrd that has worked fine for quite some time suddenly couldn't mount /dev/VolGroup00/root so we get the infamous "Kernel panic - not syncing: Attempted to kill init!" when we fall off the end of the initrd and haven't pivoted to the real disk.

It finds the disk OK:

[   81.202310] sd 0:0:0:0: [sda] 156301488 512-byte hardware sectors (80026 MB)
[   81.214466] sd 0:0:0:0: [sda] Write Protect is off
[   81.226467] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[   81.238436] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   81.250780]  sda: sda1 sda2
[   75.396119] sd 0:0:0:0: [sda] Attached SCSI disk
Quoted 7 lines

but then the lvm command says it can't find the volume group VolGroup00 (which is actually sda2 - sda1 is a small /boot partition, rest of disk is LVM).

A quick look at the rc4-mm1 announcement doesn't have any obviously tempting patch names to start at, so it looks like it's time to play mm-bisect. It may take me a day or two, as I have some time management issues this week...

OK, thanks.

First step would be to eliminate rewrite-rd.patch: maybe the ramdisk driver in which that initrd resides is bust.

After that, agk-dm-dm-*.patch are of course the ones to look at.

Please keep [email protected] cc'ed.

#20 lore raw

Re: 2.6.24-rc4-mm1: hostbyte=0x01 driverbyte=0x00 (now bisected)

In reply to Hannes Reinecke
Quoted 121 lines · Hannes Reinecke
Quoted 81 lines · Alexey Dobriyan
Quoted 1 line

git-scsi-misc.patch

Apologies for not looking into the problem earlier. See
http://marc.info/?t=119628022300005&r=1&w=2
"2.6.24-rc3-mm2: Result: hostbyte=0x01 driverbyte=0x00\nend_request: I/O error" for previous installment.

I've bisected it to the following patch in git-scsi-misc branch. Revert on top of 2.6.24-rc4-mm1 also helps.

commit 8655a546c83fc43f0a73416bbd126d02de7ad6c0

Author: Hannes Reinecke <[email protected]>
Date:   Tue Nov 6 09:23:40 2007 +0100

[SCSI] Do not requeue requests if REQ_FAILFAST is set

Any requests with the REQ_FAILFAST flag set should not be requeued to the requeust queue, but rather terminated directly. Otherwise the multipath failover will stall until the command timeout triggers.

drivers/scsi/scsi_lib.c +25 -2
index 0f44bdb..0da0dd0 100644
@@ -1286,6 +1286,11 @@ int scsi_prep_state_check(struct scsi_device *sdev, struct request *req)
 			 */
 			if (!(req->cmd_flags & REQ_PREEMPT))
 				ret = BLKPREP_DEFER;
+			/*
+			 * Return failfast requests immediately
+			 */
+			if (req->cmd_flags & REQ_FAILFAST)
+				ret = BLKPREP_KILL;
 			break;
 		default:
 			/*
@@ -1414,6 +1419,17 @@ static inline int scsi_host_queue_ready(struct request_queue *q,
 	return 1;
 }
 
+static void __scsi_kill_request(struct request *req)
+{
+	struct scsi_cmnd *cmd = req->special;
+	struct scsi_device *sdev = cmd->device;
+
+	cmd->result = DID_NO_CONNECT << 16;
+	atomic_inc(&cmd->device->iorequest_cnt);
+	sdev->device_busy--;
+	__scsi_done(cmd);
+}
+
 /*
  * Kill a request for a dead device
  */
@@ -1527,8 +1543,16 @@ static void scsi_request_fn(struct request_queue *q)
 		 * accept it.
 		 */
 		req = elv_next_request(q);
-		if (!req || !scsi_dev_queue_ready(q, sdev))
+		if (!req)
+			break;
+
+		if (!scsi_dev_queue_ready(q, sdev)) {
+			if (req->cmd_flags & REQ_FAILFAST) {
+				scsi_kill_request(req, q);
+				continue;
+			}
 			break;
+		}
 
 		if (unlikely(!scsi_device_online(sdev))) {
 			sdev_printk(KERN_ERR, sdev,
@@ -1609,8 +1633,12 @@ static void scsi_request_fn(struct request_queue *q)
 	 * later time.
 	 */
 	spin_lock_irq(q->queue_lock);
-	blk_requeue_request(q, req);

drivers/scsi/scsi_lib.c static void scsi_request_fn(struct request_queue *q) · line 1644

Quoted 10 lines
drivers/scsi/scsi_lib.c +6 -1
-	sdev->device_busy--;
+	if (unlikely(req->cmd_flags & REQ_FAILFAST))
+		__scsi_kill_request(req);
+	else {
+		blk_requeue_request(q, req);
+		sdev->device_busy--;
+	}
 	if(sdev->device_busy == 0)
 		blk_plug_device(q);
  out:

Yeah, sorry. That patch was bad. Please use the attached one instead. Andrew, can you replace them?

Cheers,

Hannes

Signature · 4 lines
Dr. Hannes Reinecke		      zSeries & Storage
[email protected]			      +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Markus Rex, HRB 16746 (AG Nürnberg)
drivers/scsi/scsi_lib.c +2 -7
index 13e7e09..9ec1566 100644
@@ -1284,13 +1284,15 @@ int scsi_prep_state_check(struct scsi_device *sdev, struct request *req)
 			/*
 			 * If the devices is blocked we defer normal commands.
 			 */
-			if (!(req->cmd_flags & REQ_PREEMPT))
-				ret = BLKPREP_DEFER;
-			/*
-			 * Return failfast requests immediately
-			 */
-			if (req->cmd_flags & REQ_FAILFAST)
-				ret = BLKPREP_KILL;
+			if (!(req->cmd_flags & REQ_PREEMPT)) {
+				/*

drivers/scsi/scsi_lib.c int scsi_prep_state_check(struct scsi_device *sdev, struct request *req) · line 1298

Quoted 10 lines
drivers/scsi/scsi_lib.c +7 -0
+				 * Return failfast requests immediately
+				 */
+				if (req->cmd_flags & REQ_FAILFAST)
+					ret = BLKPREP_KILL;
+				else
+					ret = BLKPREP_DEFER;
+			}
 			break;
 		default:
 			/*

can we please stick to using blk_noretry_request() consistently, instead of thwrowing REQ_FAILFAST tests in there?

Signature · 6 lines
Jens Axboe

-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#6 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Kamalesh Babulal
Quoted 30 lines · Kamalesh Babulal

Hi Andrew,

The 2.6.24-rc4-mm1 kernel build fails with build failure,

CC drivers/char/hvcs.o
drivers/char/hvcs.c: In function ‘hvcs_open’:
drivers/char/hvcs.c:1180: error: wrong type argument to unary exclamation mark make[2]: *** [drivers/char/hvcs.o] Error 1
make[1]: *** [drivers/char] Error 2
make: *** [drivers] Error 2

The kref_get begin void return type, check for the kobject return type as in the previous kobject_get()

        if (!kref_get(&hvcsd->kref)) {
                spin_unlock_irqrestore(&hvcsd->lock, flags); 
                printk(KERN_ERR "HVCS: Kobject of open"
                        " hvcs doesn't exist.\n");
                return -EFAULT; /* Is this the right return value? */
        }

I have tested for the build failure only.

--

drivers/char/~hvcs.c renamed from drivers/char/hvcs.c +0 -0
@@ -1177,12 +1177,8 @@ fast_open:
 	hvcsd = tty->driver_data;
 

drivers/char/~hvcs.c fast_open: · line 1182

Quoted 10 lines
drivers/char/~hvcs.c renamed from drivers/char/hvcs.c +2 -6
 	spin_lock_irqsave(&hvcsd->lock, flags);
-	if (!kref_get(&hvcsd->kref)) {
-		spin_unlock_irqrestore(&hvcsd->lock, flags);
-		printk(KERN_ERR "HVCS: Kobject of open"
-			" hvcs doesn't exist.\n");
-		return -EFAULT; /* Is this the right return value? */
-	}
+	kref_get(&hvcsd->kref);
+	spin_unlock_irqrestore(&hvcsd->lock, flags);
 

Why release the spinlock here? It's done after the count is incremented. This patch does not seem correct.

Quoted 2 lines
drivers/char/~hvcs.c renamed from drivers/char/hvcs.c +0 -0
 	hvcsd->open_count++;
 
Signature · 4 lines
	Warm Regards,
	Balbir Singh
	Linux Technology Center
	IBM, ISTL
#8 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Greg KH
Quoted 45 lines · Greg KH
Quoted 31 lines · Balbir Singh
Quoted 30 lines · Kamalesh Babulal

Hi Andrew,

The 2.6.24-rc4-mm1 kernel build fails with build failure,

CC drivers/char/hvcs.o
drivers/char/hvcs.c: In function ‘hvcs_open’:
drivers/char/hvcs.c:1180: error: wrong type argument to unary exclamation mark make[2]: *** [drivers/char/hvcs.o] Error 1
make[1]: *** [drivers/char] Error 2
make: *** [drivers] Error 2

The kref_get begin void return type, check for the kobject return type as in the previous kobject_get()

        if (!kref_get(&hvcsd->kref)) {
                spin_unlock_irqrestore(&hvcsd->lock, flags); 
                printk(KERN_ERR "HVCS: Kobject of open"
                        " hvcs doesn't exist.\n");
                return -EFAULT; /* Is this the right return value? */
        }

I have tested for the build failure only.

--

drivers/char/~hvcs.c renamed from drivers/char/hvcs.c +0 -0
@@ -1177,12 +1177,8 @@ fast_open:
 	hvcsd = tty->driver_data;
 
Quoted 12 lines

drivers/char/~hvcs.c fast_open: · line 1182

Quoted 10 lines
drivers/char/~hvcs.c renamed from drivers/char/hvcs.c +2 -6
 	spin_lock_irqsave(&hvcsd->lock, flags);
-	if (!kref_get(&hvcsd->kref)) {
-		spin_unlock_irqrestore(&hvcsd->lock, flags);
-		printk(KERN_ERR "HVCS: Kobject of open"
-			" hvcs doesn't exist.\n");
-		return -EFAULT; /* Is this the right return value? */
-	}
+	kref_get(&hvcsd->kref);
+	spin_unlock_irqrestore(&hvcsd->lock, flags);
 

Why release the spinlock here? It's done after the count is incremented. This patch does not seem correct.

Quoted 6 lines

Doh, you are correct, I'll make sure that I fix this up before applying it.

thanks,

greg k-h

Sorry, my fault for overlooking that, thanks greg.

Signature · 2 lines
Thanks & Regards,
Kamalesh Babulal,
#9 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Greg KH
Quoted 9 lines · Greg KH
Quoted 2 lines

Why release the spinlock here? It's done after the count is incremented. This patch does not seem correct.

Doh, you are correct, I'll make sure that I fix this up before applying it.

thanks,

greg k-h

Hi, Greg,

I ran some tests with the fixed up version of this patch and the system fails to come up.

I see the WARN_ON in lib/kref.c:33 and the system fails to boot beyond that point. I have not yet found time to debug it though.

Signature · 4 lines
	Warm Regards,
	Balbir Singh
	Linux Technology Center
	IBM, ISTL
#35 lore raw
In reply to Andrew Morton
Quoted 24 lines · Andrew Morton
Quoted 16 lines
Quoted 1 line

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

Something in here broke LVM support - an initrd that has worked fine for quite some time suddenly couldn't mount /dev/VolGroup00/root so we get the infamous "Kernel panic - not syncing: Attempted to kill init!" when we fall off the end of the initrd and haven't pivoted to the real disk.

It finds the disk OK:

[   81.202310] sd 0:0:0:0: [sda] 156301488 512-byte hardware sectors (80026 MB)
[   81.214466] sd 0:0:0:0: [sda] Write Protect is off
[   81.226467] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[   81.238436] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   81.250780]  sda: sda1 sda2
[   75.396119] sd 0:0:0:0: [sda] Attached SCSI disk
Quoted 7 lines

but then the lvm command says it can't find the volume group VolGroup00 (which is actually sda2 - sda1 is a small /boot partition, rest of disk is LVM).

A quick look at the rc4-mm1 announcement doesn't have any obviously tempting patch names to start at, so it looks like it's time to play mm-bisect. It may take me a day or two, as I have some time management issues this week...

Quoted 6 lines

OK, thanks.

First step would be to eliminate rewrite-rd.patch: maybe the ramdisk driver in which that initrd resides is bust.

After that, agk-dm-dm-*.patch are of course the ones to look at.

How did I not notice them? Yeah, those guys would be on the suspicious list...

Quoted 1 line

Please keep [email protected] cc'ed.

I've gotten it down to about 128 patches, but it's interesting what ended up bracketed by GOOD/BAD:

powerpc-invalid-size-for-swapper_pg_dir-with-config_pte_64bit=y.patch GOOD
#GREGKH-DRIVER-START
gregkh-driver-nozomi.patch

    gregkh-moby-patch-tree....

unbork-gregkh-driver-kset-convert-sys-devices-to-use-kset_create-vioc.patch BAD

Would I be remiss in hypothesising that something in gregkh-driver-kobject-* changed something, and now we need a agk-dm-dm-kobject-fixupage.patch?

The actual bug is probably elsewhere, but it *manifests* due to gregkh-driver tree. Will probably be tomorrow before I get it down further...

#10 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Balbir Singh
Quoted 12 lines · Balbir Singh
Quoted 9 lines · Greg KH
Quoted 2 lines

Why release the spinlock here? It's done after the count is incremented. This patch does not seem correct.

Doh, you are correct, I'll make sure that I fix this up before applying it.

thanks,

greg k-h

Quoted 7 lines

Hi, Greg,

I ran some tests with the fixed up version of this patch and the system fails to come up.

I see the WARN_ON in lib/kref.c:33 and the system fails to boot beyond that point. I have not yet found time to debug it though.

Are you running into same issue, I am getting on my machine ? Are you using IPR driver ?

Thanks,
Badari

e100: Intel(R) PRO/100 Network Driver, 3.5.23-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
ipr: IBM Power RAID SCSI Device Driver version: 2.4.1 (April 24, 2007) ipr 0000:d0:01.0: Found IOA with IRQ: 119
ipr 0000:d0:01.0: Starting IOA initialization sequence.
ipr 0000:d0:01.0: Adapter firmware version: 020A005E
ipr 0000:d0:01.0: IOA initialized.
scsi0 : IBM 570B Storage Adapter

scsi 0:0:3:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:5:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:8:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:15:0: Enclosure         IBM      VSBPD4E2  U4SCSI 7134 PQ: 0 ANSI: 2
------------[ cut here ]------------
Badness at lib/kref.c:33
NIP: c0000000002e1254 LR: c0000000002dfbd8 CTR: c0000000002e60f0
REGS: c00000003f0db050 TRAP: 0700   Not tainted  (2.6.24-rc4-mm1)
MSR: 8000000000029032 <EE,ME,IR,DR>  CR: 28002042  XER: 0000000f

TASK = c00000003f0d78d0[1] 'swapper' THREAD: c00000003f0d8000 CPU: 0
GPR00: 0000000000000000 c00000003f0db2d0 c000000000724098 c00000003f131620
GPR04: fffffffffffffff1 fffffffffffffffe 000000000000000a ffffffffffffffff
GPR08: c00000003d4d9000 c00000003f0cbfe0 c000000000556591 0000000000000073
GPR12: 0000000024002084 c000000000651980 0000000000000000 0000000000000000
GPR16: 0000000000000000 d000080080080000 c00000000064d6f0 c00000003d4d9570
GPR20: c00000003d4d94b8 0000000000000002 c00000003d4d9170 c00000003d4d9170
GPR24: c00000003d4d9000 0000000000000001 c00000003d570d58 c00000003d570d18
GPR28: 0000000000000000 c00000003d4d9260 c0000000006b5400 c00000003f131618 NIP [c0000000002e1254] .kref_get+0x10/0x2c
LR [c0000000002dfbd8] .kobject_get+0x24/0x40

Call Trace:

[c00000003f0db2d0] [c00000003f0db360] 0xc00000003f0db360 (unreliable) [c00000003f0db350] [c0000000002e00e8] .kobject_add+0x8c/0x21c [c00000003f0db3e0] [c000000000344b00] .device_add+0xd4/0x680 [c00000003f0db4a0] [c0000000003a1c4c] .scsi_alloc_target+0x218/0x404 [c00000003f0db570] [c0000000003a1fb4] .__scsi_scan_target+0xa8/0x640 [c00000003f0db6b0] [c0000000003a25c4] .scsi_scan_channel+0x78/0xdc [c00000003f0db750] [c0000000003a26f8] .scsi_scan_host_selected+0xd0/0x140 [c00000003f0db7f0] [c0000000003c3ff4] .ipr_probe+0x1270/0x1348 [c00000003f0db960] [c0000000002f4808] .pci_device_probe+0x124/0x194 [c00000003f0dba10] [c000000000347e8c] .driver_probe_device+0x110/0x1f0 [c00000003f0dbaa0] [c000000000348014] .__driver_attach+0xa8/0x134 [c00000003f0dbb30] [c0000000003472ac] .bus_for_each_dev+0x80/0xd0 [c00000003f0dbbe0] [c000000000347c14] .driver_attach+0x28/0x40 [c00000003f0dbc60] [c000000000346788] .bus_add_driver+0xfc/0x2d0 [c00000003f0dbd10] [c0000000003482cc] .driver_register+0x80/0x9c [c00000003f0dbd90] [c0000000002f4bb0] .__pci_register_driver+0x5c/0xcc [c00000003f0dbe20] [c000000000604b38] .ipr_init+0x38/0x50 [c00000003f0dbea0] [c0000000005d6428] .kernel_init+0x214/0x3ec [c00000003f0dbf90] [c000000000026734] .kernel_thread+0x4c/0x68 Instruction dump:
e8410028 39200001 38210080 7d234b78 e8010010 ebc1fff0 7c0803a6 4e800020 80030000 7c0007b4 2f800000 409e0008 <0fe00000> 7c001828 30000001

#21 lore raw

Re: 2.6.24-rc4-mm1: hostbyte=0x01 driverbyte=0x00 (now bisected)

In reply to Hannes Reinecke
Quoted 86 lines · Hannes Reinecke
Quoted 85 lines · Alexey Dobriyan
Quoted 1 line

git-scsi-misc.patch

Apologies for not looking into the problem earlier. See
http://marc.info/?t=119628022300005&r=1&w=2
"2.6.24-rc3-mm2: Result: hostbyte=0x01 driverbyte=0x00\nend_request: I/O error" for previous installment.

I've bisected it to the following patch in git-scsi-misc branch. Revert on top of 2.6.24-rc4-mm1 also helps.

commit 8655a546c83fc43f0a73416bbd126d02de7ad6c0

Author: Hannes Reinecke <[email protected]>
Date:   Tue Nov 6 09:23:40 2007 +0100

[SCSI] Do not requeue requests if REQ_FAILFAST is set

Any requests with the REQ_FAILFAST flag set should not be requeued to the requeust queue, but rather terminated directly. Otherwise the multipath failover will stall until the command timeout triggers.

drivers/scsi/scsi_lib.c +28 -3
index 0f44bdb..0da0dd0 100644
@@ -1286,6 +1286,11 @@ int scsi_prep_state_check(struct scsi_device *sdev, struct request *req)
 			 */
 			if (!(req->cmd_flags & REQ_PREEMPT))
 				ret = BLKPREP_DEFER;
+			/*
+			 * Return failfast requests immediately
+			 */
+			if (req->cmd_flags & REQ_FAILFAST)
+				ret = BLKPREP_KILL;
 			break;
 		default:
 			/*
@@ -1414,6 +1419,17 @@ static inline int scsi_host_queue_ready(struct request_queue *q,
 	return 1;
 }
 
+static void __scsi_kill_request(struct request *req)
+{
+	struct scsi_cmnd *cmd = req->special;
+	struct scsi_device *sdev = cmd->device;
+
+	cmd->result = DID_NO_CONNECT << 16;
+	atomic_inc(&cmd->device->iorequest_cnt);
+	sdev->device_busy--;
+	__scsi_done(cmd);
+}
+
 /*
  * Kill a request for a dead device
  */
@@ -1527,8 +1543,16 @@ static void scsi_request_fn(struct request_queue *q)
 		 * accept it.
 		 */
 		req = elv_next_request(q);
-		if (!req || !scsi_dev_queue_ready(q, sdev))
+		if (!req)
+			break;
+
+		if (!scsi_dev_queue_ready(q, sdev)) {
+			if (req->cmd_flags & REQ_FAILFAST) {
+				scsi_kill_request(req, q);
+				continue;
+			}
 			break;
+		}
 
 		if (unlikely(!scsi_device_online(sdev))) {
 			sdev_printk(KERN_ERR, sdev,
@@ -1609,8 +1633,12 @@ static void scsi_request_fn(struct request_queue *q)
 	 * later time.
 	 */
 	spin_lock_irq(q->queue_lock);
-	blk_requeue_request(q, req);
-	sdev->device_busy--;
+	if (unlikely(req->cmd_flags & REQ_FAILFAST))
+		__scsi_kill_request(req);
+	else {
Quoted 8 lines

drivers/scsi/scsi_lib.c static void scsi_request_fn(struct request_queue *q) · line 1644

Quoted 6 lines
drivers/scsi/scsi_lib.c +3 -0
+		blk_requeue_request(q, req);
+		sdev->device_busy--;
+	}
 	if(sdev->device_busy == 0)
 		blk_plug_device(q);
  out:

Yeah, sorry. That patch was bad. Please use the attached one instead. Andrew, can you replace them?

Instead? It won't apply. And it doesn't help on top of git-scsi. It helps if 3 hunks involving __scsi_kill_request() are ducked.

Quoted 25 lines
drivers/scsi/scsi_lib.c +9 -7
@@ -1284,13 +1284,15 @@ int scsi_prep_state_check(struct scsi_device *sdev, struct request *req)
 			/*
 			 * If the devices is blocked we defer normal commands.
 			 */
-			if (!(req->cmd_flags & REQ_PREEMPT))
-				ret = BLKPREP_DEFER;
-			/*
-			 * Return failfast requests immediately
-			 */
-			if (req->cmd_flags & REQ_FAILFAST)
-				ret = BLKPREP_KILL;
+			if (!(req->cmd_flags & REQ_PREEMPT)) {
+				/*
+				 * Return failfast requests immediately
+				 */
+				if (req->cmd_flags & REQ_FAILFAST)
+					ret = BLKPREP_KILL;
+				else
+					ret = BLKPREP_DEFER;
+			}
 			break;
 		default:
 			/*
#36 lore raw
In reply to [email protected]
Quoted 40 lines · On Thu, Dec 06, 2007 at 02:18:08PM -0500, [email protected] wrote:
Quoted 24 lines · Andrew Morton
Quoted 16 lines
Quoted 1 line

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

Something in here broke LVM support - an initrd that has worked fine for quite some time suddenly couldn't mount /dev/VolGroup00/root so we get the infamous "Kernel panic - not syncing: Attempted to kill init!" when we fall off the end of the initrd and haven't pivoted to the real disk.

It finds the disk OK:

[   81.202310] sd 0:0:0:0: [sda] 156301488 512-byte hardware sectors (80026 MB)
[   81.214466] sd 0:0:0:0: [sda] Write Protect is off
[   81.226467] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[   81.238436] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   81.250780]  sda: sda1 sda2
[   75.396119] sd 0:0:0:0: [sda] Attached SCSI disk
Quoted 7 lines

but then the lvm command says it can't find the volume group VolGroup00 (which is actually sda2 - sda1 is a small /boot partition, rest of disk is LVM).

A quick look at the rc4-mm1 announcement doesn't have any obviously tempting patch names to start at, so it looks like it's time to play mm-bisect. It may take me a day or two, as I have some time management issues this week...

Quoted 6 lines

OK, thanks.

First step would be to eliminate rewrite-rd.patch: maybe the ramdisk driver in which that initrd resides is bust.

After that, agk-dm-dm-*.patch are of course the ones to look at.

How did I not notice them? Yeah, those guys would be on the suspicious list...

Quoted 1 line

Please keep [email protected] cc'ed.

I've gotten it down to about 128 patches, but it's interesting what ended up bracketed by GOOD/BAD:

Quoted 8 lines

powerpc-invalid-size-for-swapper_pg_dir-with-config_pte_64bit=y.patch GOOD
#GREGKH-DRIVER-START
gregkh-driver-nozomi.patch

    gregkh-moby-patch-tree....

unbork-gregkh-driver-kset-convert-sys-devices-to-use-kset_create-vioc.patch BAD

Would I be remiss in hypothesising that something in gregkh-driver-kobject-* changed something, and now we need a agk-dm-dm-kobject-fixupage.patch?

I don't know, it all depends on what is in the dm patches. Hopefully everything that I have changed will manifest with a build breakage to obviously detect that something needs to be fixed up.

But I've been known to mess things up that I didn't intend to :)

If there's anything that I can do to test this, please let me know.

thanks,

greg k-h

#7 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Balbir Singh
Quoted 31 lines · Balbir Singh
Quoted 30 lines · Kamalesh Babulal

Hi Andrew,

The 2.6.24-rc4-mm1 kernel build fails with build failure,

CC drivers/char/hvcs.o
drivers/char/hvcs.c: In function ‘hvcs_open’:
drivers/char/hvcs.c:1180: error: wrong type argument to unary exclamation mark make[2]: *** [drivers/char/hvcs.o] Error 1
make[1]: *** [drivers/char] Error 2
make: *** [drivers] Error 2

The kref_get begin void return type, check for the kobject return type as in the previous kobject_get()

        if (!kref_get(&hvcsd->kref)) {
                spin_unlock_irqrestore(&hvcsd->lock, flags); 
                printk(KERN_ERR "HVCS: Kobject of open"
                        " hvcs doesn't exist.\n");
                return -EFAULT; /* Is this the right return value? */
        }

I have tested for the build failure only.

--

drivers/char/~hvcs.c renamed from drivers/char/hvcs.c +0 -0
@@ -1177,12 +1177,8 @@ fast_open:
 	hvcsd = tty->driver_data;
 
Quoted 13 lines

drivers/char/~hvcs.c fast_open: · line 1182

Quoted 10 lines
drivers/char/~hvcs.c renamed from drivers/char/hvcs.c +2 -6
 	spin_lock_irqsave(&hvcsd->lock, flags);
-	if (!kref_get(&hvcsd->kref)) {
-		spin_unlock_irqrestore(&hvcsd->lock, flags);
-		printk(KERN_ERR "HVCS: Kobject of open"
-			" hvcs doesn't exist.\n");
-		return -EFAULT; /* Is this the right return value? */
-	}
+	kref_get(&hvcsd->kref);
+	spin_unlock_irqrestore(&hvcsd->lock, flags);
 

Why release the spinlock here? It's done after the count is incremented. This patch does not seem correct.

Doh, you are correct, I'll make sure that I fix this up before applying it.

thanks,

greg k-h

#37 lore raw
In reply to Greg KH
Quoted 8 lines · Greg KH
Quoted 2 lines

Would I be remiss in hypothesising that something in gregkh-driver-kobject-* changed something, and now we need a agk-dm-dm-kobject-fixupage.patch?

I don't know, it all depends on what is in the dm patches. Hopefully everything that I have changed will manifest with a build breakage to obviously detect that something needs to be fixed up.

But I've been known to mess things up that I didn't intend to :)

Given that it *didn't* totally break the build, it's likely a fencepost error or some similar issue...

Quoted 1 line

If there's anything that I can do to test this, please let me know.

I wanted to give a heads-up, in case there was a D'Oh! patch hiding. At worst, I just need another 6 or 7 bisects to figure out which of those 120-ish patches is the culprit. With luck I'll end up stopped on a patch that in retrospect was obviously busticated. If not, we'll have to apply the usual more drastic measures. If you don't have a box that's already demonstrating it, and you don't have any obvious candidates, it's likely that the most productive use of everybody's time is for you to chase down any other kobject issues while I bisect the problem down further...

#12 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Balbir Singh
Quoted 12 lines · Balbir Singh
Quoted 9 lines · Greg KH
Quoted 2 lines

Why release the spinlock here? It's done after the count is incremented. This patch does not seem correct.

Doh, you are correct, I'll make sure that I fix this up before applying it.

thanks,

greg k-h

Quoted 7 lines

Hi, Greg,

I ran some tests with the fixed up version of this patch and the system fails to come up.

I see the WARN_ON in lib/kref.c:33 and the system fails to boot beyond that point. I have not yet found time to debug it though.

That's not good, that warning means that someone has tried to use this kref _before_ it was initialized, so there is a logic error in the code that was previously being papered over with the lack of this message in the kobject code.

I do have this same message availble as a patch for the kobject core, it would be interesting if you could just run 2.6.24-rc4 with just this patch:
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-01-driver/kobject-warn.patch

it might take some fuzz to fit properly, but all you really want to do is add:

	WARN_ON(atomic_read(&kobj->kref.refcount));

before the kref_init() call in kobject_init().

thanks,

greg k-h

#38 lore raw
In reply to Greg KH
Quoted 50 lines · Greg KH
Quoted 40 lines · On Thu, Dec 06, 2007 at 02:18:08PM -0500, [email protected] wrote:
Quoted 24 lines · Andrew Morton
Quoted 16 lines
Quoted 1 line

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

Something in here broke LVM support - an initrd that has worked fine for quite some time suddenly couldn't mount /dev/VolGroup00/root so we get the infamous "Kernel panic - not syncing: Attempted to kill init!" when we fall off the end of the initrd and haven't pivoted to the real disk.

It finds the disk OK:

[   81.202310] sd 0:0:0:0: [sda] 156301488 512-byte hardware sectors (80026 MB)
[   81.214466] sd 0:0:0:0: [sda] Write Protect is off
[   81.226467] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[   81.238436] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   81.250780]  sda: sda1 sda2
[   75.396119] sd 0:0:0:0: [sda] Attached SCSI disk
Quoted 7 lines

but then the lvm command says it can't find the volume group VolGroup00 (which is actually sda2 - sda1 is a small /boot partition, rest of disk is LVM).

A quick look at the rc4-mm1 announcement doesn't have any obviously tempting patch names to start at, so it looks like it's time to play mm-bisect. It may take me a day or two, as I have some time management issues this week...

Quoted 6 lines

OK, thanks.

First step would be to eliminate rewrite-rd.patch: maybe the ramdisk driver in which that initrd resides is bust.

After that, agk-dm-dm-*.patch are of course the ones to look at.

How did I not notice them? Yeah, those guys would be on the suspicious list...

Quoted 1 line

Please keep [email protected] cc'ed.

I've gotten it down to about 128 patches, but it's interesting what ended up bracketed by GOOD/BAD:

Quoted 8 lines

powerpc-invalid-size-for-swapper_pg_dir-with-config_pte_64bit=y.patch GOOD
#GREGKH-DRIVER-START
gregkh-driver-nozomi.patch

    gregkh-moby-patch-tree....

unbork-gregkh-driver-kset-convert-sys-devices-to-use-kset_create-vioc.patch BAD

Would I be remiss in hypothesising that something in gregkh-driver-kobject-* changed something, and now we need a agk-dm-dm-kobject-fixupage.patch?

Quoted 7 lines

I don't know, it all depends on what is in the dm patches. Hopefully everything that I have changed will manifest with a build breakage to obviously detect that something needs to be fixed up.

But I've been known to mess things up that I didn't intend to :)

If there's anything that I can do to test this, please let me know.

What's the value of SYSFS_DEPRECATED? Care to set it to yes, if it isn't, and try again?

A fix for LVM to handle symlinks instead of directories is in the LVM CVS tree, but there wasn't a release since August.

Kay

#39 lore raw
Quoted 2 lines · Kay Sievers

A fix for LVM to handle symlinks instead of directories is in the LVM CVS tree, but there wasn't a release since August.

I released it yesterday:-)

Alasdair

Signature · 1 line
[email protected]
#46 lore raw

Re: 2.6.24-rc4-mm1: VDSOSYM build error

In reply to Andrew Morton
Quoted 4 lines · Andrew Morton

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

  LDS     arch/x86/vdso/vdso32/vdso32.lds
  AS      arch/x86/vdso/vdso32/note.o
  AS      arch/x86/vdso/vdso32/int80.o
  VDSO    arch/x86/vdso/vdso32-int80.so.dbg

OBJCOPY arch/x86/vdso/vdso32-int80.so
AS arch/x86/vdso/vdso32/sysenter.o
VDSO arch/x86/vdso/vdso32-sysenter.so.dbg
OBJCOPY arch/x86/vdso/vdso32-sysenter.so
AS arch/x86/vdso/vdso32.o
CC arch/x86/vdso/vdso32-setup.o
VDSOSYM arch/x86/vdso/vdso32-int80-syms.lds
VDSOSYM arch/x86/vdso/vdso32-sysenter-syms.lds
VDSOSYM arch/x86/vdso/vdso32-syms.lds

x86/vdso/vdso32-int80-syms.lds 2007-12-06 23:23:08.000000000 +0100 renamed from - 2007-12-06 23:23:08.785302925 +0100 +0 -1
@@ -3,4 +3,3 @@
 VDSO32_sigreturn = 0x0400;
 VDSO32_vsyscall = 0x0414;
 VDSO32_vsyscall_eh_frame_size = 0x044;
-VDSO32_vsyscall_eh_frame_size = 0x058;

make[1]: *** [arch/x86/vdso/vdso32-syms.lds] Error 1
make: *** [arch/x86/vdso] Error 2

# cat arch/x86/vdso/vdso32-int80-syms.lds
VDSO32_PRELINK = 0x0;
VDSO32_rt_sigreturn = 0x040c;
VDSO32_sigreturn = 0x0400;
VDSO32_vsyscall = 0x0414;
VDSO32_vsyscall_eh_frame_size = 0x044;
# cat arch/x86/vdso/vdso32-sysenter-syms.lds
VDSO32_PRELINK = 0x0;
VDSO32_SYSENTER_RETURN = 0x0424;
VDSO32_rt_sigreturn = 0x040c;
VDSO32_sigreturn = 0x0400;
VDSO32_vsyscall = 0x0414;
VDSO32_vsyscall_eh_frame_size = 0x058;
# scripts/ver_linux 
If some fields are empty or look unusual you may have an old version.
Compare to the current minimal requirements in Documentation/Changes.

Linux calimero 2.6.24-rc4-g81b45b40 #2 PREEMPT Thu Dec 6 00:39:02 CET 2007 i686 GNU/Linux

Gnu C                  4.1.3
Gnu make               3.81
binutils               2.18
util-linux             2.13
mount                  2.13
module-init-tools      3.3-pre2
e2fsprogs              1.40.2
reiserfsprogs          3.6.19
reiser4progs           1.0.6
pcmciautils            014
PPP                    2.4.4
Linux C Library        2.6.1
Dynamic linker (ldd)   2.6.1
Procps                 3.2.7
Net-tools              1.60
Console-tools          0.2.3
oprofile               0.9.3
Sh-utils               5.97
udev                   113
wireless-tools         29
Modules Loaded         radeon drm lp nls_iso8859_1 nls_cp850 vfat fat reiser4 lzo_decompress lzo_compress eeprom w83781d hwmon_vid snd_ens1371 gameport snd_ac97_codec ac97_bus snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_oss snd_seq_midi snd_rawmidi snd_seq_midi_event firewire_ohci firewire_core snd_seq sg crc_itu_t snd_timer snd_seq_device sr_mod cdrom uhci_hcd snd i2c_viapro ohci1394 ata_generic pcspkr floppy 8250_pnp 8250 serial_core soundcore snd_page_alloc via686a rtc ieee1394 usbcore parport_pc parport ne2k_pci 8390 via_agp agpgart evdev dm_snapshot reiserfs sd_mod pata_via libata scsi_mod dm_mirror dm_mod

.config attached
~~
laurent

#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.24-rc4-mm1
# Thu Dec 6 23:05:19 2007
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
# CONFIG_X86_64 is not set
CONFIG_X86=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_FAST_CMPXCHG_LOCAL=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_QUICKLIST=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
# CONFIG_GENERIC_GPIO is not set CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_GENERIC_CALIBRATE_DELAY=y
# CONFIG_GENERIC_TIME_VSYSCALL is not set
# CONFIG_ZONE_DMA32 is not set CONFIG_ARCH_POPULATES_NODE_MAP=y
# CONFIG_AUDIT_ARCH is not set CONFIG_ARCH_SUPPORTS_AOUT=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_X86_BIOS_REBOOT=y
CONFIG_KTIME_SCALAR=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=15
# CONFIG_CGROUPS is not set
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_FAIR_USER_SCHED=y
# CONFIG_FAIR_CGROUP_SCHED is not set
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
# CONFIG_NAMESPACES is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not set
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_LSF is not set
# CONFIG_BLK_DEV_BSG is not set

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

#
# Processor type and features
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# CONFIG_SMP is not set
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_X86_RDC321X is not set
# CONFIG_X86_VSMP is not set
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
CONFIG_MK7=y
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_GENERIC_CPU is not set
# CONFIG_X86_GENERIC is not set
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_XADD=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_USE_3DNOW=y
CONFIG_X86_TSC=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=4
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_HPET_TIMER=y
CONFIG_ARCH_SUPPORTS_KVM=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
CONFIG_X86_UP_APIC=y
CONFIG_X86_UP_IOAPIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_NONFATAL=m
CONFIG_X86_MCE_P4THERMAL=y
CONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
CONFIG_X86_REBOOTFIXUPS=y
# CONFIG_MICROCODE is not set
CONFIG_X86_MSR=m
# CONFIG_X86_CPUID is not set
CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_3G_OPT is not set
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_2G_OPT is not set
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0xC0000000
# CONFIG_X86_PAE is not set
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_SPARSEMEM_STATIC=y
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_NR_QUICK=1
CONFIG_VIRT_TO_BUS=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
CONFIG_KEXEC=y
CONFIG_PHYSICAL_START=0x100000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x100000
# CONFIG_COMPAT_VDSO is not set

#
# Power management options
#
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND_UP_POSSIBLE=y
CONFIG_SUSPEND=y
CONFIG_HIBERNATION_UP_POSSIBLE=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION="/dev/hdb6"
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
# CONFIG_ACPI_PROCFS is not set
CONFIG_ACPI_PROCFS_POWER=y
CONFIG_ACPI_PROC_EVENT=y
# CONFIG_ACPI_AC is not set
# CONFIG_ACPI_BATTERY is not set
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
# CONFIG_ACPI_DOCK is not set
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
CONFIG_ACPI_DEBUG=y
# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
# CONFIG_ACPI_CONTAINER is not set
# CONFIG_ACPI_SBS is not set
# CONFIG_APM is not set

#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set
# CONFIG_CPU_IDLE is not set

#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCIEPORTBUS is not set
CONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not set
# CONFIG_PCI_LEGACY is not set
# CONFIG_PCI_DEBUG is not set
CONFIG_HT_IRQ=y
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
# CONFIG_PCCARD is not set
# CONFIG_HOTPLUG_PCI is not set

#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=m
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=m
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_MULTIPLE_TABLES is not set
# CONFIG_IP_ROUTE_MULTIPATH is not set
CONFIG_IP_ROUTE_VERBOSE=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_XFRM_TUNNEL=m
CONFIG_INET_TUNNEL=m
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
CONFIG_INET_XFRM_MODE_BEET=y
# CONFIG_INET_LRO is not set
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IP_VS is not set
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_NETWORK_SECMARK is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set

#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
# CONFIG_NF_CONNTRACK_ENABLED is not set
# CONFIG_NF_CONNTRACK is not set
CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
# CONFIG_NETFILTER_XT_MATCH_ESP is not set
# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
# CONFIG_NETFILTER_XT_MATCH_REALM is not set
CONFIG_NETFILTER_XT_MATCH_SCTP=m
# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
# CONFIG_NETFILTER_XT_MATCH_TIME is not set
# CONFIG_NETFILTER_XT_MATCH_U32 is not set
# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set

#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_IPRANGE=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_RECENT=m
# CONFIG_IP_NF_MATCH_ECN is not set
# CONFIG_IP_NF_MATCH_AH is not set
# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_MATCH_ADDRTYPE=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
# CONFIG_IP_NF_RAW is not set
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
# CONFIG_IP_NF_ARP_MANGLE is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
CONFIG_ATM=m
CONFIG_ATM_CLIP=m
# CONFIG_ATM_CLIP_NO_ICMP is not set
# CONFIG_ATM_LANE is not set
CONFIG_ATM_BR2684=m
# CONFIG_ATM_BR2684_IPFILTER is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
CONFIG_NET_SCHED=y

#
# Queueing/Scheduling
#
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
# CONFIG_NET_SCH_ATM is not set
CONFIG_NET_SCH_PRIO=m
# CONFIG_NET_SCH_RR is not set
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DSMARK=m
# CONFIG_NET_SCH_NETEM is not set
CONFIG_NET_SCH_INGRESS=m

#
# Classification
#
CONFIG_NET_CLS=y
CONFIG_NET_CLS_BASIC=m
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_CLS_U32_PERF=y
CONFIG_CLS_U32_MARK=y
CONFIG_NET_CLS_RSVP=m
# CONFIG_NET_CLS_RSVP6 is not set
# CONFIG_NET_EMATCH is not set
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=y
# CONFIG_NET_ACT_GACT is not set
# CONFIG_NET_ACT_MIRRED is not set
# CONFIG_NET_ACT_IPT is not set
# CONFIG_NET_ACT_NAT is not set
# CONFIG_NET_ACT_PEDIT is not set
# CONFIG_NET_ACT_SIMP is not set
CONFIG_NET_CLS_POLICE=y
# CONFIG_NET_CLS_IND is not set
CONFIG_NET_SCH_FIFO=y

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set

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

#
# Device Drivers
#

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

#
# Protocols
#
# CONFIG_ISAPNP is not set
# CONFIG_PNPBIOS is not set
CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_FD=m
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_MISC_DEVICES is not set
# CONFIG_IDE is not set

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

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

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

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=m
CONFIG_SCSI_FC_ATTRS=m
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
# CONFIG_SCSI_LOWLEVEL is not set
CONFIG_ATA=m
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_ATA_ACPI=y
# CONFIG_SATA_AHCI is not set
# CONFIG_SATA_SVW is not set
# CONFIG_ATA_PIIX is not set
# CONFIG_SATA_MV is not set
# CONFIG_SATA_NV is not set
# CONFIG_PDC_ADMA is not set
# CONFIG_SATA_QSTOR is not set
# CONFIG_SATA_PROMISE is not set
# CONFIG_SATA_SX4 is not set
# CONFIG_SATA_SIL is not set
# CONFIG_SATA_SIL24 is not set
# CONFIG_SATA_SIS is not set
# CONFIG_SATA_ULI is not set
# CONFIG_SATA_VIA is not set
# CONFIG_SATA_VITESSE is not set
# CONFIG_SATA_INIC162X is not set
# CONFIG_PATA_ACPI is not set
# CONFIG_PATA_ALI is not set
# CONFIG_PATA_AMD is not set
# CONFIG_PATA_ARTOP is not set
# CONFIG_PATA_ATIIXP is not set
# CONFIG_PATA_CMD640_PCI is not set
# CONFIG_PATA_CMD64X is not set
# CONFIG_PATA_CS5520 is not set
# CONFIG_PATA_CS5530 is not set
# CONFIG_PATA_CS5535 is not set
# CONFIG_PATA_CS5536 is not set
# CONFIG_PATA_CYPRESS is not set
# CONFIG_PATA_EFAR is not set
CONFIG_ATA_GENERIC=m
# CONFIG_PATA_HPT366 is not set
# CONFIG_PATA_HPT37X is not set
# CONFIG_PATA_HPT3X2N is not set
# CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_IT8213 is not set
# CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_LEGACY is not set
# CONFIG_PATA_TRIFLEX is not set
# CONFIG_PATA_MARVELL is not set
# CONFIG_PATA_MPIIX is not set
# CONFIG_PATA_OLDPIIX is not set
# CONFIG_PATA_NETCELL is not set
# CONFIG_PATA_NINJA32 is not set
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_NS87415 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_QDI is not set
# CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_SC1200 is not set
# CONFIG_PATA_SERVERWORKS is not set
# CONFIG_PATA_PDC2027X is not set
# CONFIG_PATA_SIL680 is not set
# CONFIG_PATA_SIS is not set
CONFIG_PATA_VIA=m
# CONFIG_PATA_WINBOND is not set
# CONFIG_PATA_WINBOND_VLB is not set
CONFIG_PATA_PLATFORM=m
CONFIG_MD=y
CONFIG_BLK_DEV_MD=m
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m
CONFIG_MD_RAID456=m
CONFIG_MD_RAID5_RESHAPE=y
# CONFIG_MD_MULTIPATH is not set
# CONFIG_MD_FAULTY is not set
CONFIG_BLK_DEV_DM=m
# CONFIG_DM_DEBUG is not set
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_MIRROR=m
# CONFIG_DM_ZERO is not set
# CONFIG_DM_MULTIPATH is not set
# CONFIG_DM_DELAY is not set
CONFIG_DM_UEVENT=y
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support
#
CONFIG_FIREWIRE=m
CONFIG_FIREWIRE_OHCI=m
# CONFIG_FIREWIRE_SBP2 is not set
CONFIG_IEEE1394=m

#
# Subsystem Options
#
# CONFIG_IEEE1394_VERBOSEDEBUG is not set

#
# Controllers
#
# CONFIG_IEEE1394_PCILYNX is not set
CONFIG_IEEE1394_OHCI1394=m

#
# Protocols
#
CONFIG_IEEE1394_VIDEO1394=m
# CONFIG_IEEE1394_SBP2 is not set
# CONFIG_IEEE1394_ETH1394_ROM_ENTRY is not set
# CONFIG_IEEE1394_ETH1394 is not set
CONFIG_IEEE1394_DV1394=m
CONFIG_IEEE1394_RAWIO=m
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
# CONFIG_IFB is not set
CONFIG_DUMMY=m
CONFIG_BONDING=m
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
# CONFIG_VETH is not set
# CONFIG_NET_SB1000 is not set
# CONFIG_IP1000 is not set
# CONFIG_ARCNET is not set
# CONFIG_PHYLIB is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_NET_TULIP is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_AC3200 is not set
# CONFIG_APRICOT is not set
# CONFIG_B44 is not set
# CONFIG_FORCEDETH is not set
# CONFIG_CS89x0 is not set
# CONFIG_EEPRO100 is not set
# CONFIG_E100 is not set
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
CONFIG_NE2K_PCI=m
# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_R6040 is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_SC92031 is not set
# CONFIG_NET_POCKET is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set

#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
CONFIG_WLAN_80211=y
# CONFIG_IPW2100 is not set
# CONFIG_IPW2200 is not set
# CONFIG_LIBERTAS is not set
# CONFIG_AIRO is not set
# CONFIG_HERMES is not set
# CONFIG_ATMEL is not set
# CONFIG_USB_ATMEL is not set
# CONFIG_PRISM54 is not set
# CONFIG_USB_ZD1201 is not set
# CONFIG_HOSTAP is not set

#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not set
# CONFIG_WAN is not set
# CONFIG_ATM_DRIVERS is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
CONFIG_PPP=m
# CONFIG_PPP_MULTILINK is not set
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
# CONFIG_PPP_MPPE is not set
CONFIG_PPPOE=m
CONFIG_PPPOATM=m
# CONFIG_PPPOL2TP is not set
# CONFIG_SLIP is not set
CONFIG_SLHC=m
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set

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

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

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_PS2_ALPS is not set
# CONFIG_MOUSE_PS2_LOGIPS2PP is not set
# CONFIG_MOUSE_PS2_SYNAPTICS is not set
# CONFIG_MOUSE_PS2_LIFEBOOK is not set
# CONFIG_MOUSE_PS2_TRACKPOINT is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_INPORT is not set
# CONFIG_MOUSE_LOGIBM is not set
# CONFIG_MOUSE_PC110PAD is not set
# CONFIG_MOUSE_VSXXXAA is not set
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_ANALOG=m
# CONFIG_JOYSTICK_A3D is not set
# CONFIG_JOYSTICK_ADI is not set
# CONFIG_JOYSTICK_COBRA is not set
# CONFIG_JOYSTICK_GF2K is not set
# CONFIG_JOYSTICK_GRIP is not set
# CONFIG_JOYSTICK_GRIP_MP is not set
# CONFIG_JOYSTICK_GUILLEMOT is not set
# CONFIG_JOYSTICK_INTERACT is not set
# CONFIG_JOYSTICK_SIDEWINDER is not set
# CONFIG_JOYSTICK_TMDC is not set
# CONFIG_JOYSTICK_IFORCE is not set
# CONFIG_JOYSTICK_WARRIOR is not set
# CONFIG_JOYSTICK_MAGELLAN is not set
# CONFIG_JOYSTICK_SPACEORB is not set
# CONFIG_JOYSTICK_SPACEBALL is not set
# CONFIG_JOYSTICK_STINGER is not set
# CONFIG_JOYSTICK_TWIDJOY is not set
# CONFIG_JOYSTICK_DB9 is not set
# CONFIG_JOYSTICK_GAMECON is not set
# CONFIG_JOYSTICK_TURBOGRAFX is not set
# CONFIG_JOYSTICK_JOYDUMP is not set
# CONFIG_JOYSTICK_XPAD is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_APANEL is not set
# CONFIG_INPUT_WISTRON_BTNS is not set
# CONFIG_INPUT_ATLAS_BTNS is not set
# CONFIG_INPUT_ATI_REMOTE is not set
# CONFIG_INPUT_ATI_REMOTE2 is not set
# CONFIG_INPUT_KEYSPAN_REMOTE is not set
# CONFIG_INPUT_POWERMATE is not set
# CONFIG_INPUT_YEALINK is not set
CONFIG_INPUT_UINPUT=m

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

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

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

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=m
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_PRINTER=m
# CONFIG_LP_CONSOLE is not set
# CONFIG_PPDEV is not set
# CONFIG_TIPAR is not set
# CONFIG_IPMI_HANDLER is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_NVRAM is not set
CONFIG_RTC=m
# CONFIG_GEN_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
# CONFIG_CS5535_GPIO is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HPET is not set
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=m

#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_ALGOPCF=m
CONFIG_I2C_ALGOPCA=m

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

#
# Miscellaneous I2C Chip support
#
# CONFIG_DS1682 is not set
CONFIG_SENSORS_EEPROM=m
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_PCF8575 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_OZ99X is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set

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

#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not set

#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set

#
# Multimedia devices
#
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_VIDEO_V4L2=y
CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
# CONFIG_VIDEO_VIVI is not set
# CONFIG_VIDEO_BT848 is not set
# CONFIG_VIDEO_PMS is not set
# CONFIG_VIDEO_BWQCAM is not set
# CONFIG_VIDEO_CQCAM is not set
# CONFIG_VIDEO_W9966 is not set
# CONFIG_VIDEO_CPIA is not set
# CONFIG_VIDEO_CPIA2 is not set
# CONFIG_VIDEO_SAA5246A is not set
# CONFIG_VIDEO_SAA5249 is not set
# CONFIG_TUNER_3036 is not set
# CONFIG_VIDEO_STRADIS is not set
# CONFIG_VIDEO_ZORAN is not set
# CONFIG_VIDEO_SAA7134 is not set
# CONFIG_VIDEO_MXB is not set
# CONFIG_VIDEO_DPC is not set
# CONFIG_VIDEO_HEXIUM_ORION is not set
# CONFIG_VIDEO_HEXIUM_GEMINI is not set
# CONFIG_VIDEO_CX88 is not set
# CONFIG_VIDEO_IVTV is not set
# CONFIG_VIDEO_CAFE_CCIC is not set
CONFIG_V4L_USB_DRIVERS=y
# CONFIG_VIDEO_PVRUSB2 is not set
# CONFIG_VIDEO_EM28XX is not set
# CONFIG_VIDEO_USBVISION is not set
# CONFIG_USB_VICAM is not set
# CONFIG_USB_IBMCAM is not set
# CONFIG_USB_KONICAWC is not set
# CONFIG_USB_QUICKCAM_MESSENGER is not set
# CONFIG_USB_ET61X251 is not set
# CONFIG_VIDEO_OVCAMCHIP is not set
# CONFIG_USB_W9968CF is not set
# CONFIG_USB_OV511 is not set
# CONFIG_USB_SE401 is not set
# CONFIG_USB_SN9C102 is not set
# CONFIG_USB_STV680 is not set
# CONFIG_USB_ZC0301 is not set
# CONFIG_USB_PWC is not set
# CONFIG_USB_ZR364XX is not set
# CONFIG_RADIO_ADAPTERS is not set
# CONFIG_DVB_CORE is not set
# CONFIG_DAB is not set

#
# Graphics support
#
CONFIG_AGP=m
# CONFIG_AGP_ALI is not set
# CONFIG_AGP_ATI is not set
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
# CONFIG_AGP_INTEL is not set
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
CONFIG_AGP_VIA=m
# CONFIG_AGP_EFFICEON is not set
CONFIG_DRM=m
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_R128 is not set
CONFIG_DRM_RADEON=m
# CONFIG_DRM_MGA is not set
# CONFIG_DRM_SIS is not set
# CONFIG_DRM_VIA is not set
# CONFIG_DRM_SAVAGE is not set
# CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_DDC=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_SYS_FOPS is not set
CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set

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

#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set CONFIG_VIDEO_SELECT=y
# CONFIG_MDA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set # CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y CONFIG_LOGO_LINUX_VGA16=y CONFIG_LOGO_LINUX_CLUT224=y

#
# Sound
#
CONFIG_SOUND=m

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
# CONFIG_SND_SEQ_DUMMY is not set
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_RTCTIMER=m
CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y
CONFIG_SND_DYNAMIC_MINORS=y
# CONFIG_SND_SUPPORT_OLD_API is not set
# CONFIG_SND_VERBOSE_PROCFS is not set
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set

#
# Generic devices
#
CONFIG_SND_AC97_CODEC=m
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_VIRMIDI is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_MTS64 is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set
# CONFIG_SND_PORTMAN2X4 is not set

#
# ISA devices
#
# CONFIG_SND_ADLIB is not set
# CONFIG_SND_AD1816A is not set
# CONFIG_SND_AD1848 is not set
# CONFIG_SND_ALS100 is not set
# CONFIG_SND_AZT2320 is not set
# CONFIG_SND_CMI8330 is not set
# CONFIG_SND_CS4231 is not set
# CONFIG_SND_CS4232 is not set
# CONFIG_SND_CS4236 is not set
# CONFIG_SND_DT019X is not set
# CONFIG_SND_ES968 is not set
# CONFIG_SND_ES1688 is not set
# CONFIG_SND_ES18XX is not set
# CONFIG_SND_SC6000 is not set
# CONFIG_SND_GUSCLASSIC is not set
# CONFIG_SND_GUSEXTREME is not set
# CONFIG_SND_GUSMAX is not set
# CONFIG_SND_INTERWAVE is not set
# CONFIG_SND_INTERWAVE_STB is not set
# CONFIG_SND_OPL3SA2 is not set
# CONFIG_SND_OPTI92X_AD1848 is not set
# CONFIG_SND_OPTI92X_CS4231 is not set
# CONFIG_SND_OPTI93X is not set
# CONFIG_SND_MIRO is not set
# CONFIG_SND_SB8 is not set
# CONFIG_SND_SB16 is not set
# CONFIG_SND_SBAWE is not set
# CONFIG_SND_SGALAXY is not set
# CONFIG_SND_SSCAPE is not set
# CONFIG_SND_WAVEFRONT is not set

#
# PCI devices
#
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5530 is not set
# CONFIG_SND_CS5535AUDIO is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set
CONFIG_SND_ENS1371=m
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not set
# CONFIG_SND_HDA_INTEL is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0

#
# USB devices
#
CONFIG_SND_USB_AUDIO=m
# CONFIG_SND_USB_USX2Y is not set
# CONFIG_SND_USB_CAIAQ is not set

#
# System on Chip audio support
#
# CONFIG_SND_SOC is not set

#
# SoC Audio support for SuperH
#

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
CONFIG_AC97_BUS=m
CONFIG_HID_SUPPORT=y
CONFIG_HID=m
# CONFIG_HID_DEBUG is not set
# CONFIG_HIDRAW is not set

#
# USB Input Devices
#
CONFIG_USB_HID=m
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
# CONFIG_HID_FF is not set
# CONFIG_USB_HIDDEV is not set

#
# USB HID Boot Protocol drivers
#
# CONFIG_USB_KBD is not set
# CONFIG_USB_MOUSE is not set
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=m
# CONFIG_USB_DEBUG is not set
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set

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

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

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

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

#

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

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

#
# USB port drivers
#
# CONFIG_USB_USS720 is not set

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

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

#
# USB DSL modem support
#
CONFIG_USB_ATM=m
# CONFIG_USB_SPEEDTOUCH is not set
# CONFIG_USB_CXACRU is not set
CONFIG_USB_UEAGLEATM=m
# CONFIG_USB_XUSBATM is not set

#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
# CONFIG_MMC is not set
# CONFIG_NEW_LEDS is not set
CONFIG_EDAC=y

#
# Reporting subsystems
#
# CONFIG_EDAC_DEBUG is not set
CONFIG_EDAC_MM_EDAC=m
CONFIG_EDAC_AMD76X=m
# CONFIG_EDAC_E7XXX is not set
# CONFIG_EDAC_E752X is not set
# CONFIG_EDAC_I82875P is not set
# CONFIG_EDAC_I82975X is not set
# CONFIG_EDAC_I3000 is not set
# CONFIG_EDAC_I82860 is not set
# CONFIG_EDAC_R82600 is not set
# CONFIG_EDAC_I5000 is not set
# CONFIG_RTC_CLASS is not set
# CONFIG_DMADEVICES is not set
# CONFIG_AUXDISPLAY is not set
# CONFIG_VIRTUALIZATION is not set

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

#
# Firmware Drivers
#
CONFIG_EDD=y
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not set
CONFIG_DMIID=y

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
# CONFIG_EXT2_FS_POSIX_ACL is not set
# CONFIG_EXT2_FS_SECURITY is not set
CONFIG_EXT2_FS_XIP=y
CONFIG_FS_XIP=y
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISER4_FS=m
# CONFIG_REISER4_DEBUG is not set
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
CONFIG_REISERFS_FS_XATTR=y
# CONFIG_REISERFS_FS_POSIX_ACL is not set
# CONFIG_REISERFS_FS_SECURITY is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
CONFIG_AUTOFS4_FS=m
# CONFIG_FUSE_FS is not set

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

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

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

#
# Layered filesystems
#
CONFIG_ECRYPT_FS=m
# CONFIG_UNION_FS is not set

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
# CONFIG_NFS_FS is not set
# CONFIG_NFSD is not set
# CONFIG_SMB_FS is not set
CONFIG_CIFS=m
CONFIG_CIFS_STATS=y
# CONFIG_CIFS_STATS2 is not set
# CONFIG_CIFS_WEAK_PW_HASH is not set
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
# CONFIG_CIFS_DEBUG2 is not set
# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
# CONFIG_SYSV68_PARTITION is not set
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=m
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
CONFIG_NLS_CODEPAGE_850=m
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ASCII=m
CONFIG_NLS_ISO8859_1=m
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
CONFIG_NLS_ISO8859_15=m
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=m
# CONFIG_DLM is not set
CONFIG_INSTRUMENTATION=y
CONFIG_PROFILING=y
CONFIG_OPROFILE=m
# CONFIG_KPROBES is not set
# CONFIG_MARKERS is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_PAGE_OWNER is not set
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
# CONFIG_DETECT_SOFTLOCKUP is not set
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
CONFIG_DEBUG_SLAB=y
CONFIG_DEBUG_SLAB_LEAK=y
CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_LOCKDEP is not set
CONFIG_TRACE_IRQFLAGS=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_DEBUG_LOCKING_API_SELFTESTS=y
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
CONFIG_FRAME_POINTER=y
# CONFIG_PROFILE_LIKELY is not set
# CONFIG_FORCED_INLINING is not set
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_DEBUG_SYNCHRO_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_SAMPLES is not set
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_DEBUG_STACK_USAGE=y

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

#
# Security options
#
CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_XOR_BLOCKS=m
CONFIG_ASYNC_CORE=m
CONFIG_ASYNC_MEMCPY=m
CONFIG_ASYNC_XOR=m
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_GF128MUL is not set
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_XTS is not set
# CONFIG_CRYPTO_CTR is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_FCRYPT is not set
CONFIG_CRYPTO_BLOWFISH=m
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_TWOFISH_586 is not set
# CONFIG_CRYPTO_SERPENT is not set
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_AES_586=m
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SALSA20 is not set
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
# CONFIG_CRYPTO_AUTHENC is not set
# CONFIG_CRYPTO_HW is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
# CONFIG_CRC16 is not set
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=m
CONFIG_LZO_DECOMPRESS=m
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y

#47 lore raw

Re: 2.6.24-rc4-mm1: VDSOSYM build error

Quoted 26 lines · On Thu, 06 Dec 2007 23:28:38 +0100 Laurent Riffard <[email protected]>…
Quoted 4 lines · Andrew Morton

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

  LDS     arch/x86/vdso/vdso32/vdso32.lds
  AS      arch/x86/vdso/vdso32/note.o
  AS      arch/x86/vdso/vdso32/int80.o
  VDSO    arch/x86/vdso/vdso32-int80.so.dbg

OBJCOPY arch/x86/vdso/vdso32-int80.so
AS arch/x86/vdso/vdso32/sysenter.o
VDSO arch/x86/vdso/vdso32-sysenter.so.dbg
OBJCOPY arch/x86/vdso/vdso32-sysenter.so
AS arch/x86/vdso/vdso32.o
CC arch/x86/vdso/vdso32-setup.o
VDSOSYM arch/x86/vdso/vdso32-int80-syms.lds
VDSOSYM arch/x86/vdso/vdso32-sysenter-syms.lds
VDSOSYM arch/x86/vdso/vdso32-syms.lds

x86/vdso/vdso32-int80-syms.lds 2007-12-06 23:23:08.000000000 +0100 renamed from - 2007-12-06 23:23:08.785302925 +0100 +0 -1
@@ -3,4 +3,3 @@
 VDSO32_sigreturn = 0x0400;
 VDSO32_vsyscall = 0x0414;
 VDSO32_vsyscall_eh_frame_size = 0x044;
-VDSO32_vsyscall_eh_frame_size = 0x058;
Quoted 2 lines

make[1]: *** [arch/x86/vdso/vdso32-syms.lds] Error 1
make: *** [arch/x86/vdso] Error 2

Dunno. Maybe Roland's VDSO rework?

#40 lore raw
In reply to Kay Sievers
Quoted 2 lines · Kay Sievers

What's the value of SYSFS_DEPRECATED? Care to set it to yes, if it isn't, and try again?

I *knew* there was a D'Oh! error in here. ;)

Bisection is fast closing in on gregkh-driver-block-device.patch, which broke my LVM almost the exact same way the *last* time it showed up in -mm ;)

Quoted 2 lines

A fix for LVM to handle symlinks instead of directories is in the LVM CVS tree, but there wasn't a release since August.

I seem to recall it was 'nash' rather than LVM that had the indigestion the last time around.

#41 lore raw
Quoted 9 lines · On Thu, 2007-12-06 at 18:12 -0500, [email protected] wrote:
Quoted 2 lines · Kay Sievers

What's the value of SYSFS_DEPRECATED? Care to set it to yes, if it isn't, and try again?

I *knew* there was a D'Oh! error in here. ;)

Bisection is fast closing in on gregkh-driver-block-device.patch, which broke my LVM almost the exact same way the *last* time it showed up in -mm ;)

Oh, it must not, if SYSFS_DEPRECATED=y is set. I hope we fixed all issues. Please let us know if it does not work, then we will need to look into it.

Quoted 5 lines
Quoted 2 lines

A fix for LVM to handle symlinks instead of directories is in the LVM CVS tree, but there wasn't a release since August.

I seem to recall it was 'nash' rather than LVM that had the indigestion the last time around.

I think that a recent nash should work, even with SYSFS_DEPRECATED=n. Anyway, nothing should change when SYSFS_DEPRECATED set, nash works fine here, with that.

Kay

#48 lore raw

Re: 2.6.24-rc4-mm1: VDSOSYM build error

In reply to Andrew Morton

How can I find Roland's patches, so I can try backing them out? I looked in the broken out patches and only saw one related to VDSO. Backing it out did not help. I tried searching for messages to LKML sent by "roland" but mostly got a bunch of folks sending spam.

Thanks,
Miles

#49 lore raw

Re: 2.6.24-rc4-mm1: VDSOSYM build error

Quoted 6 lines · On Thu, 6 Dec 2007 18:28:25 -0500 "Miles Lane" <[email protected]> wrote:

How can I find Roland's patches, so I can try backing them out? I looked in the broken out patches and only saw one related to VDSO. Backing it out did not help. I tried searching for messages to LKML sent by "roland" but mostly got a bunch of folks sending spam.

They're all clumped into git-x86.patch. Hard.

#13 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Greg KH
Quoted 31 lines · Greg KH
Quoted 12 lines · Balbir Singh
Quoted 9 lines · Greg KH
Quoted 2 lines

Why release the spinlock here? It's done after the count is incremented. This patch does not seem correct.

Doh, you are correct, I'll make sure that I fix this up before applying it.

thanks,

greg k-h

Quoted 7 lines

Hi, Greg,

I ran some tests with the fixed up version of this patch and the system fails to come up.

I see the WARN_ON in lib/kref.c:33 and the system fails to boot beyond that point. I have not yet found time to debug it though.

That's not good, that warning means that someone has tried to use this kref _before_ it was initialized, so there is a logic error in the code that was previously being papered over with the lack of this message in the kobject code.

I do have this same message availble as a patch for the kobject core, it would be interesting if you could just run 2.6.24-rc4 with just this patch:
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-01-driver/kobject-warn.patch

Quoted 8 lines

it might take some fuzz to fit properly, but all you really want to do is add:

	WARN_ON(atomic_read(&kobj->kref.refcount));

before the kref_init() call in kobject_init().

thanks,

greg k-h

2.6.24-rc4 with above patch booted fine without any warnings. But 2.6.24-rc4-mm1 doesn't boot, it hangs after following messages.

e100: Intel(R) PRO/100 Network Driver, 3.5.23-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
ipr: IBM Power RAID SCSI Device Driver version: 2.4.1 (April 24, 2007) ipr 0000:d0:01.0: Found IOA with IRQ: 119
ipr 0000:d0:01.0: Starting IOA initialization sequence.
ipr 0000:d0:01.0: Adapter firmware version: 020A005E
ipr 0000:d0:01.0: IOA initialized.
scsi0 : IBM 570B Storage Adapter

scsi 0:0:3:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:5:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:8:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:15:0: Enclosure         IBM      VSBPD4E2  U4SCSI 7134 PQ: 0 ANSI: 2
------------[ cut here ]------------
Badness at lib/kref.c:33
NIP: c0000000002e1254 LR: c0000000002dfbd8 CTR: c0000000002e60f0
REGS: c00000003f0db050 TRAP: 0700   Not tainted  (2.6.24-rc4-mm1)
MSR: 8000000000029032 <EE,ME,IR,DR>  CR: 28002042  XER: 0000000f

TASK = c00000003f0d78d0[1] 'swapper' THREAD: c00000003f0d8000 CPU: 0
GPR00: 0000000000000000 c00000003f0db2d0 c000000000724098 c00000003f131620
GPR04: fffffffffffffff1 fffffffffffffffe 000000000000000a ffffffffffffffff
GPR08: c00000003d4d9000 c00000003f0cbfe0 c000000000556591 0000000000000073
GPR12: 0000000024002084 c000000000651980 0000000000000000 0000000000000000
GPR16: 0000000000000000 d000080080080000 c00000000064d6f0 c00000003d4d9570
GPR20: c00000003d4d94b8 0000000000000002 c00000003d4d9170 c00000003d4d9170
GPR24: c00000003d4d9000 0000000000000001 c00000003d570d58 c00000003d570d18
GPR28: 0000000000000000 c00000003d4d9260 c0000000006b5400 c00000003f131618 NIP [c0000000002e1254] .kref_get+0x10/0x2c
LR [c0000000002dfbd8] .kobject_get+0x24/0x40

Call Trace:

[c00000003f0db2d0] [c00000003f0db360] 0xc00000003f0db360 (unreliable) [c00000003f0db350] [c0000000002e00e8] .kobject_add+0x8c/0x21c [c00000003f0db3e0] [c000000000344b00] .device_add+0xd4/0x680 [c00000003f0db4a0] [c0000000003a1c4c] .scsi_alloc_target+0x218/0x404 [c00000003f0db570] [c0000000003a1fb4] .__scsi_scan_target+0xa8/0x640 [c00000003f0db6b0] [c0000000003a25c4] .scsi_scan_channel+0x78/0xdc [c00000003f0db750] [c0000000003a26f8] .scsi_scan_host_selected+0xd0/0x140 [c00000003f0db7f0] [c0000000003c3ff4] .ipr_probe+0x1270/0x1348 [c00000003f0db960] [c0000000002f4808] .pci_device_probe+0x124/0x194 [c00000003f0dba10] [c000000000347e8c] .driver_probe_device+0x110/0x1f0 [c00000003f0dbaa0] [c000000000348014] .__driver_attach+0xa8/0x134 [c00000003f0dbb30] [c0000000003472ac] .bus_for_each_dev+0x80/0xd0 [c00000003f0dbbe0] [c000000000347c14] .driver_attach+0x28/0x40 [c00000003f0dbc60] [c000000000346788] .bus_add_driver+0xfc/0x2d0 [c00000003f0dbd10] [c0000000003482cc] .driver_register+0x80/0x9c [c00000003f0dbd90] [c0000000002f4bb0] .__pci_register_driver+0x5c/0xcc [c00000003f0dbe20] [c000000000604b38] .ipr_init+0x38/0x50 [c00000003f0dbea0] [c0000000005d6428] .kernel_init+0x214/0x3ec [c00000003f0dbf90] [c000000000026734] .kernel_thread+0x4c/0x68 Instruction dump:
e8410028 39200001 38210080 7d234b78 e8010010 ebc1fff0 7c0803a6 4e800020 80030000 7c0007b4 2f800000 409e0008 <0fe00000> 7c001828 30000001

Thanks,
Badari

#14 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

Quoted 74 lines · Badari Pulavarty
Quoted 31 lines · Greg KH
Quoted 12 lines · Balbir Singh
Quoted 9 lines · Greg KH
Quoted 2 lines

Why release the spinlock here? It's done after the count is incremented. This patch does not seem correct.

Doh, you are correct, I'll make sure that I fix this up before applying it.

thanks,

greg k-h

Quoted 7 lines

Hi, Greg,

I ran some tests with the fixed up version of this patch and the system fails to come up.

I see the WARN_ON in lib/kref.c:33 and the system fails to boot beyond that point. I have not yet found time to debug it though.

That's not good, that warning means that someone has tried to use this kref _before_ it was initialized, so there is a logic error in the code that was previously being papered over with the lack of this message in the kobject code.

I do have this same message availble as a patch for the kobject core, it would be interesting if you could just run 2.6.24-rc4 with just this patch:
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-01-driver/kobject-warn.patch

Quoted 8 lines

it might take some fuzz to fit properly, but all you really want to do is add:

	WARN_ON(atomic_read(&kobj->kref.refcount));

before the kref_init() call in kobject_init().

thanks,

greg k-h

2.6.24-rc4 with above patch booted fine without any warnings. But 2.6.24-rc4-mm1 doesn't boot, it hangs after following messages.

e100: Intel(R) PRO/100 Network Driver, 3.5.23-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
ipr: IBM Power RAID SCSI Device Driver version: 2.4.1 (April 24, 2007) ipr 0000:d0:01.0: Found IOA with IRQ: 119
ipr 0000:d0:01.0: Starting IOA initialization sequence.
ipr 0000:d0:01.0: Adapter firmware version: 020A005E
ipr 0000:d0:01.0: IOA initialized.
scsi0 : IBM 570B Storage Adapter

scsi 0:0:3:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:5:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:8:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:15:0: Enclosure         IBM      VSBPD4E2  U4SCSI 7134 PQ: 0 ANSI: 2
------------[ cut here ]------------
Badness at lib/kref.c:33
NIP: c0000000002e1254 LR: c0000000002dfbd8 CTR: c0000000002e60f0
REGS: c00000003f0db050 TRAP: 0700   Not tainted  (2.6.24-rc4-mm1)
MSR: 8000000000029032 <EE,ME,IR,DR>  CR: 28002042  XER: 0000000f

TASK = c00000003f0d78d0[1] 'swapper' THREAD: c00000003f0d8000 CPU: 0
GPR00: 0000000000000000 c00000003f0db2d0 c000000000724098 c00000003f131620
GPR04: fffffffffffffff1 fffffffffffffffe 000000000000000a ffffffffffffffff
GPR08: c00000003d4d9000 c00000003f0cbfe0 c000000000556591 0000000000000073
GPR12: 0000000024002084 c000000000651980 0000000000000000 0000000000000000
GPR16: 0000000000000000 d000080080080000 c00000000064d6f0 c00000003d4d9570
GPR20: c00000003d4d94b8 0000000000000002 c00000003d4d9170 c00000003d4d9170
GPR24: c00000003d4d9000 0000000000000001 c00000003d570d58 c00000003d570d18
GPR28: 0000000000000000 c00000003d4d9260 c0000000006b5400 c00000003f131618 NIP [c0000000002e1254] .kref_get+0x10/0x2c
LR [c0000000002dfbd8] .kobject_get+0x24/0x40

Call Trace:
Quoted 8 lines

[c00000003f0db2d0] [c00000003f0db360] 0xc00000003f0db360 (unreliable) [c00000003f0db350] [c0000000002e00e8] .kobject_add+0x8c/0x21c [c00000003f0db3e0] [c000000000344b00] .device_add+0xd4/0x680 [c00000003f0db4a0] [c0000000003a1c4c] .scsi_alloc_target+0x218/0x404 [c00000003f0db570] [c0000000003a1fb4] .__scsi_scan_target+0xa8/0x640 [c00000003f0db6b0] [c0000000003a25c4] .scsi_scan_channel+0x78/0xdc [c00000003f0db750] [c0000000003a26f8] .scsi_scan_host_selected+0xd0/0x140 [c00000003f0db7f0] [c0000000003c3ff4] .ipr_probe+0x1270/0x1348

This looks like a scsi issue to me, I don't see how the kref changes could cause this backtrace/oops, do you?

thanks,

greg k-h

#52 lore raw

PATCH 1/1 x86 vDSO: canonicalize sysenter .eh_frame

In reply to Andrew Morton

Some assembler versions automagically optimize .eh_frame contents, changing their size. The CFI in sysenter.S was not using optimal formatting, so it would be changed by newer/smarter assemblers. This ran afoul of the wired constant for padding out the other vDSO images to match its size. This changes the original hand-coded source to use the optimal format encoding for its operations. That leaves nothing more for a fancy assembler to do, so the sizes will match the wired-in expected size regardless of the assembler version.

---
 arch/x86/vdso/vdso32/int80.S    |    2 +-
 arch/x86/vdso/vdso32/syscall.S  |    2 +-
 arch/x86/vdso/vdso32/sysenter.S |   18 ++++++------------
 3 files changed, 8 insertions(+), 14 deletions(-)
arch/x86/vdso/vdso32/int80.S +1 -1
index be4b7a9..b15b7c0 100644
@@ -50,7 +50,7 @@ __kernel_vsyscall:
 	/*
 	 * Pad out the segment to match the size of the sysenter.S version.
 	 */
-VDSO32_vsyscall_eh_frame_size = 0x44
+VDSO32_vsyscall_eh_frame_size = 0x40
 	.section .data,"aw",@progbits
 	.space VDSO32_vsyscall_eh_frame_size-(.LENDFDEDLSI-.LSTARTFRAMEDLSI), 0
 	.previous
arch/x86/vdso/vdso32/syscall.S +1 -1
index fe88d34..5415b56 100644
@@ -71,7 +71,7 @@ __kernel_vsyscall:
 	/*
 	 * Pad out the segment to match the size of the sysenter.S version.
 	 */
-VDSO32_vsyscall_eh_frame_size = 0x44
+VDSO32_vsyscall_eh_frame_size = 0x40
 	.section .data,"aw",@progbits
 	.space VDSO32_vsyscall_eh_frame_size-(.LENDFDE1-.LSTARTFRAME), 0
 	.previous
arch/x86/vdso/vdso32/sysenter.S +6 -12
index 902d5fc..e2800af 100644
@@ -84,31 +84,25 @@ VDSO32_SYSENTER_RETURN:	/* Symbol used by sysenter.c via vdso32-syms.h */
 	.uleb128 0
 	/* What follows are the instructions for the table generation.
 	   We have to record all changes of the stack pointer.  */
-	.byte 0x04		/* DW_CFA_advance_loc4 */
-	.long .Lpush_ecx-.LSTART_vsyscall
+	.byte 0x40 + (.Lpush_ecx-.LSTART_vsyscall) /* DW_CFA_advance_loc */
 	.byte 0x0e		/* DW_CFA_def_cfa_offset */
 	.byte 0x08		/* RA at offset 8 now */
-	.byte 0x04		/* DW_CFA_advance_loc4 */
-	.long .Lpush_edx-.Lpush_ecx
+	.byte 0x40 + (.Lpush_edx-.Lpush_ecx) /* DW_CFA_advance_loc */
 	.byte 0x0e		/* DW_CFA_def_cfa_offset */
 	.byte 0x0c		/* RA at offset 12 now */
-	.byte 0x04		/* DW_CFA_advance_loc4 */
-	.long .Lenter_kernel-.Lpush_edx
+	.byte 0x40 + (.Lenter_kernel-.Lpush_edx) /* DW_CFA_advance_loc */
 	.byte 0x0e		/* DW_CFA_def_cfa_offset */
 	.byte 0x10		/* RA at offset 16 now */
 	.byte 0x85, 0x04	/* DW_CFA_offset %ebp -16 */
 	/* Finally the epilogue.  */
-	.byte 0x04		/* DW_CFA_advance_loc4 */
-	.long .Lpop_ebp-.Lenter_kernel
+	.byte 0x40 + (.Lpop_ebp-.Lenter_kernel)	/* DW_CFA_advance_loc */
 	.byte 0x0e		/* DW_CFA_def_cfa_offset */
 	.byte 0x0c		/* RA at offset 12 now */
 	.byte 0xc5		/* DW_CFA_restore %ebp */
-	.byte 0x04		/* DW_CFA_advance_loc4 */
-	.long .Lpop_edx-.Lpop_ebp
+	.byte 0x40 + (.Lpop_edx-.Lpop_ebp) /* DW_CFA_advance_loc */
 	.byte 0x0e		/* DW_CFA_def_cfa_offset */
 	.byte 0x08		/* RA at offset 8 now */
-	.byte 0x04		/* DW_CFA_advance_loc4 */
-	.long .Lpop_ecx-.Lpop_edx
+	.byte 0x40 + (.Lpop_ecx-.Lpop_edx) /* DW_CFA_advance_loc */
 	.byte 0x0e		/* DW_CFA_def_cfa_offset */
 	.byte 0x04		/* RA at offset 4 now */
 	.align 4
#53 lore raw

Re: [PATCH x86/mm] x86 vDSO: canonicalize sysenter .eh_frame

Quoted 10 lines · Roland McGrath

Some assembler versions automagically optimize .eh_frame contents, changing their size. The CFI in sysenter.S was not using optimal formatting, so it would be changed by newer/smarter assemblers. This ran afoul of the wired constant for padding out the other vDSO images to match its size. This changes the original hand-coded source to use the optimal format encoding for its operations. That leaves nothing more for a fancy assembler to do, so the sizes will match the wired-in expected size regardless of the assembler version.

Confirm this fixes the compile errors I was seeing with x86.git

Harvey

#11 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Badari Pulavarty
Quoted 16 lines · Badari Pulavarty
Quoted 15 lines · Balbir Singh
Quoted 8 lines · Greg KH
Quoted 2 lines

Why release the spinlock here? It's done after the count is incremented. This patch does not seem correct.

Doh, you are correct, I'll make sure that I fix this up before applying it.

thanks,

greg k-h

Hi, Greg,

I ran some tests with the fixed up version of this patch and the system fails to come up.

Quoted 7 lines
Quoted 2 lines

I see the WARN_ON in lib/kref.c:33 and the system fails to boot beyond that point. I have not yet found time to debug it though.

Are you running into same issue, I am getting on my machine ? Are you using IPR driver ?

Badari,

I am unable to get past lib/kref.c:33 and cut here. The machine just stalls, I see no output at the console. I don't get a backtrace like you do, even with xmon enabled :(

Quoted 4 lines

Thanks,
Badari

Signature · 4 lines
	Warm Regards,
	Balbir Singh
	Linux Technology Center
	IBM, ISTL
#56 lore raw
In reply to Andrew Morton

Hi,

2.6.24-rc4-mm1 build failed at drivers/net/wireless/ath5k/base.c for some inline functions like this:
drivers/net/wireless/ath5k/base.c:292: sorry, unimplemented: inlining failed in call to 'ath5k_extend_tsf': function body not available

fix it with adjust the order of inline function body.

---
drivers/net/wireless/ath5k/base.c | 67 ++++++++++++++++----------------------

1 file changed, 29 insertions(+), 38 deletions(-)
drivers/net/wireless/ath5k/base.c +29 -38
diff -upr linux/drivers/net/wireless/ath5k/base.c linux.new/drivers/net/wireless/ath5k/base.c
@@ -250,8 +250,19 @@ static int 	ath5k_rxbuf_setup(struct ath
 static int 	ath5k_txbuf_setup(struct ath5k_softc *sc,
 				struct ath5k_buf *bf,
 				struct ieee80211_tx_control *ctl);
+
 static inline void ath5k_txbuf_free(struct ath5k_softc *sc,
-				struct ath5k_buf *bf);
+				struct ath5k_buf *bf)
+{
+	BUG_ON(!bf);
+	if (!bf->skb)
+		return;
+	pci_unmap_single(sc->pdev, bf->skbaddr, bf->skb->len,
+			PCI_DMA_TODEVICE);
+	dev_kfree_skb(bf->skb);
+	bf->skb = NULL;
+}
+
 /* Queues setup */
 static struct 	ath5k_txq *ath5k_txq_setup(struct ath5k_softc *sc,
 				int qtype, int subtype);
@@ -278,14 +289,29 @@ static int 	ath5k_beacon_setup(struct at
 				struct ieee80211_tx_control *ctl);
 static void 	ath5k_beacon_send(struct ath5k_softc *sc);
 static void 	ath5k_beacon_config(struct ath5k_softc *sc);
-static inline u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp);
+
+static inline u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp)
+{
+	u64 tsf = ath5k_hw_get_tsf64(ah);
+
+	if ((tsf & 0x7fff) < rstamp)
+		tsf -= 0x8000;
+
+	return (tsf & ~0x7fff) | rstamp;
+}
+
 /* Interrupt handling */
 static int 	ath5k_init(struct ath5k_softc *sc);
 static int 	ath5k_stop_locked(struct ath5k_softc *sc);
 static int 	ath5k_stop_hw(struct ath5k_softc *sc);
 static irqreturn_t ath5k_intr(int irq, void *dev_id);
 static void 	ath5k_tasklet_reset(unsigned long data);
-static inline void ath5k_update_txpow(struct ath5k_softc *sc);
+
+static inline void ath5k_update_txpow(struct ath5k_softc *sc)
+{
+	ath5k_hw_set_txpower_limit(sc->ah, 0);
+}
+
 static void 	ath5k_calibrate(unsigned long data);
 /* LED functions */
 static void 	ath5k_led_off(unsigned long data);
@@ -1341,21 +1367,6 @@ err_unmap:
 	return ret;
 }
 
-static inline void
-ath5k_txbuf_free(struct ath5k_softc *sc, struct ath5k_buf *bf)
-{
-	BUG_ON(!bf);
-	if (!bf->skb)
-		return;
-	pci_unmap_single(sc->pdev, bf->skbaddr, bf->skb->len,
-			PCI_DMA_TODEVICE);
-	dev_kfree_skb(bf->skb);
-	bf->skb = NULL;
-}
-
-
-
-
 /**************\
 * Queues setup *
 \**************/
@@ -2046,20 +2057,6 @@ ath5k_beacon_config(struct ath5k_softc *
 #undef TSF_TO_TU
 }
 
-static inline
-u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp)
-{
-	u64 tsf = ath5k_hw_get_tsf64(ah);
-
-	if ((tsf & 0x7fff) < rstamp)
-		tsf -= 0x8000;
-
-	return (tsf & ~0x7fff) | rstamp;
-}
-
-
-
-
 /********************\
 * Interrupt handling *
 \********************/
@@ -2295,12 +2292,6 @@ ath5k_tasklet_reset(unsigned long data)
 	ath5k_reset(sc->hw);
 }
 
-static inline void
-ath5k_update_txpow(struct ath5k_softc *sc)
-{
-	ath5k_hw_set_txpower_limit(sc->ah, 0);
-}
-
 /*
  * Periodically recalibrate the PHY to account
  * for temperature/environment changes.
#15 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Greg KH
Quoted 80 lines · Greg KH
Quoted 70 lines · Badari Pulavarty
Quoted 28 lines · Greg KH
Quoted 9 lines · Balbir Singh
Quoted 7 lines · Greg KH
Quoted 2 lines

Why release the spinlock here? It's done after the count is incremented. This patch does not seem correct.

Doh, you are correct, I'll make sure that I fix this up before applying it.

thanks,

Quoted 8 lines
Quoted 1 line

greg k-h

Hi, Greg,

I ran some tests with the fixed up version of this patch and the system fails to come up.

I see the WARN_ON in lib/kref.c:33 and the system fails to boot beyond that point. I have not yet found time to debug it though.

That's not good, that warning means that someone has tried to use this kref _before_ it was initialized, so there is a logic error in the code that was previously being papered over with the lack of this message in the kobject code.

I do have this same message availble as a patch for the kobject core, it would be interesting if you could just run 2.6.24-rc4 with just this patch:
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-01-driver/kobject-warn.patch

Quoted 8 lines

it might take some fuzz to fit properly, but all you really want to do is add:

	WARN_ON(atomic_read(&kobj->kref.refcount));

before the kref_init() call in kobject_init().

thanks,

greg k-h

2.6.24-rc4 with above patch booted fine without any warnings. But 2.6.24-rc4-mm1 doesn't boot, it hangs after following messages.

e100: Intel(R) PRO/100 Network Driver, 3.5.23-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
ipr: IBM Power RAID SCSI Device Driver version: 2.4.1 (April 24, 2007) ipr 0000:d0:01.0: Found IOA with IRQ: 119
ipr 0000:d0:01.0: Starting IOA initialization sequence.
ipr 0000:d0:01.0: Adapter firmware version: 020A005E
ipr 0000:d0:01.0: IOA initialized.
scsi0 : IBM 570B Storage Adapter

scsi 0:0:3:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:5:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:8:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:15:0: Enclosure         IBM      VSBPD4E2  U4SCSI 7134 PQ: 0 ANSI: 2
------------[ cut here ]------------
Badness at lib/kref.c:33
NIP: c0000000002e1254 LR: c0000000002dfbd8 CTR: c0000000002e60f0
REGS: c00000003f0db050 TRAP: 0700   Not tainted  (2.6.24-rc4-mm1)
MSR: 8000000000029032 <EE,ME,IR,DR>  CR: 28002042  XER: 0000000f

TASK = c00000003f0d78d0[1] 'swapper' THREAD: c00000003f0d8000 CPU: 0
GPR00: 0000000000000000 c00000003f0db2d0 c000000000724098 c00000003f131620
GPR04: fffffffffffffff1 fffffffffffffffe 000000000000000a ffffffffffffffff
GPR08: c00000003d4d9000 c00000003f0cbfe0 c000000000556591 0000000000000073
GPR12: 0000000024002084 c000000000651980 0000000000000000 0000000000000000
GPR16: 0000000000000000 d000080080080000 c00000000064d6f0 c00000003d4d9570
GPR20: c00000003d4d94b8 0000000000000002 c00000003d4d9170 c00000003d4d9170
GPR24: c00000003d4d9000 0000000000000001 c00000003d570d58 c00000003d570d18
GPR28: 0000000000000000 c00000003d4d9260 c0000000006b5400 c00000003f131618 NIP [c0000000002e1254] .kref_get+0x10/0x2c
LR [c0000000002dfbd8] .kobject_get+0x24/0x40

Call Trace:
Quoted 8 lines

[c00000003f0db2d0] [c00000003f0db360] 0xc00000003f0db360 (unreliable) [c00000003f0db350] [c0000000002e00e8] .kobject_add+0x8c/0x21c [c00000003f0db3e0] [c000000000344b00] .device_add+0xd4/0x680 [c00000003f0db4a0] [c0000000003a1c4c] .scsi_alloc_target+0x218/0x404 [c00000003f0db570] [c0000000003a1fb4] .__scsi_scan_target+0xa8/0x640 [c00000003f0db6b0] [c0000000003a25c4] .scsi_scan_channel+0x78/0xdc [c00000003f0db750] [c0000000003a26f8] .scsi_scan_host_selected+0xd0/0x140 [c00000003f0db7f0] [c0000000003c3ff4] .ipr_probe+0x1270/0x1348

Quoted 6 lines

This looks like a scsi issue to me, I don't see how the kref changes could cause this backtrace/oops, do you?

thanks,

greg k-h

The 2.6.24-rc4 with the above patch, boots fine for me either, and with 2.6.24-rc4-mm1 i get similar backtrace,

Badness at lib/kref.c:33
NIP: c00000000021908c LR: c000000000217b88 CTR: c00000000029b71c
REGS: c00000003c066fc0 TRAP: 0700 Not tainted (2.6.24-rc4-mm1-autokern1)
MSR: 8000000000029032 <EE,ME,IR,DR> CR: 88002022 XER: 00000001 TASK = c00000003ef4c840[339] 'insmod' THREAD: c00000003c064000 CPU: 0
GPR00: 0000000000000000 c00000003c067240 c0000000005d32c0 c00000003e0101a0
GPR04: fffffffffffffff2 fffffffffffffffe 000000000000000a 0000000000000002
GPR08: 0000000000000000 c00000003ef8ae50 ffffffffffffffff c000000000449269
GPR12: 0000000024002084 c000000000515980 0000000000000000 0000000000000000
GPR16: 0000000000000000 0000000000000000 0000000000240000 0000000000000000
GPR20: 0000000010000290 0000000000000002 c00000003ef3f970 c00000003ef3f970
GPR24: 0000000000000001 0000000000000000 c00000003c039958 c00000003c039918
GPR28: 0000000000000000 c00000003ef3fa60 c00000000058e588 c00000003e010198 NIP [c00000000021908c] .kref_get+0x10/0x2c
LR [c000000000217b88] .kobject_get+0x20/0x3c

Call Trace:
[c00000003c067240] [c000000000217a48] .kobject_set_name_vargs+0x38/0x60 (unreliable)
[c00000003c0672c0] [c000000000217ffc] .kobject_add+0x88/0x20c
[c00000003c067350] [c00000000029b7ec] .device_add+0xd0/0x648
[c00000003c067410] [d000000000613c84] .scsi_alloc_target+0x238/0x414 [scsi_mod]
[c00000003c0674e0] [d000000000614e70] .__scsi_scan_target+0xac/0x718 [scsi_mod]
[c00000003c067630] [d00000000061566c] .scsi_scan_channel+0x78/0xdc [scsi_mod]
[c00000003c0676d0] [d0000000006157f0] .scsi_scan_host_selected+0x120/0x194 [scsi_mod]
[c00000003c067780] [d000000000682148] .ibmvscsi_probe+0x450/0x4fc [ibmvscsic]
[c00000003c067870] [c000000000025fe8] .vio_bus_probe+0x74/0x9c
[c00000003c067900] [c00000000029f2c8] .driver_probe_device+0x110/0x1ec
[c00000003c067990] [c00000000029f57c] .__driver_attach+0xd0/0x160
[c00000003c067a20] [c00000000029da58] .bus_for_each_dev+0x7c/0xcc
[c00000003c067ad0] [c00000000029f634] .driver_attach+0x28/0x40
[c00000003c067b50] [c00000000029e6a4] .bus_add_driver+0xe8/0x2b4
[c00000003c067c00] [c00000000029fd80] .driver_register+0x80/0x9c
[c00000003c067c80] [c0000000000260b0] .vio_register_driver+0x40/0x5c
[c00000003c067d10] [d000000000682c04] .init_module+0x68/0xa4 [ibmvscsic]
[c00000003c067da0] [c00000000009301c] .sys_init_module+0xf4/0x1ac
[c00000003c067e30] [c00000000000872c] syscall_exit+0x0/0x40

Instruction dump:
7d808120 4e800020 38a00000 4bfffad0 38000001 90030000 7c0004ac 4e800020 80030000 7c0007b4 2f800000 40be0008 <0fe00000> 7c001828 30000001 7c00192d

Signature · 4 lines
Thanks & Regards,
Kamalesh Babulal,
Linux Technology Center,
IBM, ISTL.
#54 lore raw

Re: [PATCH x86/mm] x86 vDSO: canonicalize sysenter .eh_frame

In reply to Harvey Harrison

Thanks. That enabled me to compile as well. Now, if I can figure out why the resulting kernel has a boot process that hangs... :-)

Miles

#16 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Kamalesh Babulal
Quoted 126 lines · Kamalesh Babulal
Quoted 80 lines · Greg KH
Quoted 70 lines · Badari Pulavarty
Quoted 28 lines · Greg KH
Quoted 9 lines · Balbir Singh
Quoted 7 lines · Greg KH
Quoted 2 lines

Why release the spinlock here? It's done after the count is incremented. This patch does not seem correct.

Doh, you are correct, I'll make sure that I fix this up before applying it.

thanks,

Quoted 8 lines
Quoted 1 line

greg k-h

Hi, Greg,

I ran some tests with the fixed up version of this patch and the system fails to come up.

I see the WARN_ON in lib/kref.c:33 and the system fails to boot beyond that point. I have not yet found time to debug it though.

That's not good, that warning means that someone has tried to use this kref _before_ it was initialized, so there is a logic error in the code that was previously being papered over with the lack of this message in the kobject code.

I do have this same message availble as a patch for the kobject core, it would be interesting if you could just run 2.6.24-rc4 with just this patch:
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-01-driver/kobject-warn.patch

Quoted 8 lines

it might take some fuzz to fit properly, but all you really want to do is add:

	WARN_ON(atomic_read(&kobj->kref.refcount));

before the kref_init() call in kobject_init().

thanks,

greg k-h

2.6.24-rc4 with above patch booted fine without any warnings. But 2.6.24-rc4-mm1 doesn't boot, it hangs after following messages.

e100: Intel(R) PRO/100 Network Driver, 3.5.23-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
ipr: IBM Power RAID SCSI Device Driver version: 2.4.1 (April 24, 2007) ipr 0000:d0:01.0: Found IOA with IRQ: 119
ipr 0000:d0:01.0: Starting IOA initialization sequence.
ipr 0000:d0:01.0: Adapter firmware version: 020A005E
ipr 0000:d0:01.0: IOA initialized.
scsi0 : IBM 570B Storage Adapter

scsi 0:0:3:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:5:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:8:0: Direct-Access     IBM   H0 HUS103014FL3800  RPQF PQ: 0 ANSI: 4
scsi 0:0:15:0: Enclosure         IBM      VSBPD4E2  U4SCSI 7134 PQ: 0 ANSI: 2
------------[ cut here ]------------
Badness at lib/kref.c:33
NIP: c0000000002e1254 LR: c0000000002dfbd8 CTR: c0000000002e60f0
REGS: c00000003f0db050 TRAP: 0700   Not tainted  (2.6.24-rc4-mm1)
MSR: 8000000000029032 <EE,ME,IR,DR>  CR: 28002042  XER: 0000000f

TASK = c00000003f0d78d0[1] 'swapper' THREAD: c00000003f0d8000 CPU: 0
GPR00: 0000000000000000 c00000003f0db2d0 c000000000724098 c00000003f131620
GPR04: fffffffffffffff1 fffffffffffffffe 000000000000000a ffffffffffffffff
GPR08: c00000003d4d9000 c00000003f0cbfe0 c000000000556591 0000000000000073
GPR12: 0000000024002084 c000000000651980 0000000000000000 0000000000000000
GPR16: 0000000000000000 d000080080080000 c00000000064d6f0 c00000003d4d9570
GPR20: c00000003d4d94b8 0000000000000002 c00000003d4d9170 c00000003d4d9170
GPR24: c00000003d4d9000 0000000000000001 c00000003d570d58 c00000003d570d18
GPR28: 0000000000000000 c00000003d4d9260 c0000000006b5400 c00000003f131618 NIP [c0000000002e1254] .kref_get+0x10/0x2c
LR [c0000000002dfbd8] .kobject_get+0x24/0x40

Call Trace:
Quoted 8 lines

[c00000003f0db2d0] [c00000003f0db360] 0xc00000003f0db360 (unreliable) [c00000003f0db350] [c0000000002e00e8] .kobject_add+0x8c/0x21c [c00000003f0db3e0] [c000000000344b00] .device_add+0xd4/0x680 [c00000003f0db4a0] [c0000000003a1c4c] .scsi_alloc_target+0x218/0x404 [c00000003f0db570] [c0000000003a1fb4] .__scsi_scan_target+0xa8/0x640 [c00000003f0db6b0] [c0000000003a25c4] .scsi_scan_channel+0x78/0xdc [c00000003f0db750] [c0000000003a26f8] .scsi_scan_host_selected+0xd0/0x140 [c00000003f0db7f0] [c0000000003c3ff4] .ipr_probe+0x1270/0x1348

Quoted 6 lines

This looks like a scsi issue to me, I don't see how the kref changes could cause this backtrace/oops, do you?

thanks,

greg k-h

The 2.6.24-rc4 with the above patch, boots fine for me either, and with 2.6.24-rc4-mm1 i get similar backtrace,

Badness at lib/kref.c:33
NIP: c00000000021908c LR: c000000000217b88 CTR: c00000000029b71c
REGS: c00000003c066fc0 TRAP: 0700 Not tainted (2.6.24-rc4-mm1-autokern1)
MSR: 8000000000029032 <EE,ME,IR,DR> CR: 88002022 XER: 00000001 TASK = c00000003ef4c840[339] 'insmod' THREAD: c00000003c064000 CPU: 0
GPR00: 0000000000000000 c00000003c067240 c0000000005d32c0 c00000003e0101a0
GPR04: fffffffffffffff2 fffffffffffffffe 000000000000000a 0000000000000002
GPR08: 0000000000000000 c00000003ef8ae50 ffffffffffffffff c000000000449269
GPR12: 0000000024002084 c000000000515980 0000000000000000 0000000000000000
GPR16: 0000000000000000 0000000000000000 0000000000240000 0000000000000000
GPR20: 0000000010000290 0000000000000002 c00000003ef3f970 c00000003ef3f970
GPR24: 0000000000000001 0000000000000000 c00000003c039958 c00000003c039918
GPR28: 0000000000000000 c00000003ef3fa60 c00000000058e588 c00000003e010198 NIP [c00000000021908c] .kref_get+0x10/0x2c
LR [c000000000217b88] .kobject_get+0x20/0x3c

Call Trace:
[c00000003c067240] [c000000000217a48] .kobject_set_name_vargs+0x38/0x60 (unreliable)
[c00000003c0672c0] [c000000000217ffc] .kobject_add+0x88/0x20c
[c00000003c067350] [c00000000029b7ec] .device_add+0xd0/0x648
[c00000003c067410] [d000000000613c84] .scsi_alloc_target+0x238/0x414 [scsi_mod]
[c00000003c0674e0] [d000000000614e70] .__scsi_scan_target+0xac/0x718 [scsi_mod]
[c00000003c067630] [d00000000061566c] .scsi_scan_channel+0x78/0xdc [scsi_mod]
[c00000003c0676d0] [d0000000006157f0] .scsi_scan_host_selected+0x120/0x194 [scsi_mod]
[c00000003c067780] [d000000000682148] .ibmvscsi_probe+0x450/0x4fc [ibmvscsic]
[c00000003c067870] [c000000000025fe8] .vio_bus_probe+0x74/0x9c
[c00000003c067900] [c00000000029f2c8] .driver_probe_device+0x110/0x1ec
[c00000003c067990] [c00000000029f57c] .__driver_attach+0xd0/0x160
[c00000003c067a20] [c00000000029da58] .bus_for_each_dev+0x7c/0xcc
[c00000003c067ad0] [c00000000029f634] .driver_attach+0x28/0x40
[c00000003c067b50] [c00000000029e6a4] .bus_add_driver+0xe8/0x2b4
[c00000003c067c00] [c00000000029fd80] .driver_register+0x80/0x9c
[c00000003c067c80] [c0000000000260b0] .vio_register_driver+0x40/0x5c
[c00000003c067d10] [d000000000682c04] .init_module+0x68/0xa4 [ibmvscsic]
[c00000003c067da0] [c00000000009301c] .sys_init_module+0xf4/0x1ac
[c00000003c067e30] [c00000000000872c] syscall_exit+0x0/0x40
Quoted 3 lines

Instruction dump:
7d808120 4e800020 38a00000 4bfffad0 38000001 90030000 7c0004ac 4e800020 80030000 7c0007b4 2f800000 40be0008 <0fe00000> 7c001828 30000001 7c00192d

How about running 2.6.24-rc4 with _only_ the patch to this driver to convert it to krefs? Does that combination cause problems?

The patch is at:
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-01-driver/kobject-convert-hvcs-to-use-kref-not-kobject.patch

and you can also try:
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-01-driver/kobject-convert-hvc_console-to-use-kref-not-kobject.patch
if you have the hardware.

thanks,

greg k-h

Applied
#55 lore raw

Re: [PATCH x86/mm] x86 vDSO: canonicalize sysenter .eh_frame

In reply to Roland McGrath
Quoted 10 lines · Roland McGrath

Some assembler versions automagically optimize .eh_frame contents, changing their size. The CFI in sysenter.S was not using optimal formatting, so it would be changed by newer/smarter assemblers. This ran afoul of the wired constant for padding out the other vDSO images to match its size. This changes the original hand-coded source to use the optimal format encoding for its operations. That leaves nothing more for a fancy assembler to do, so the sizes will match the wired-in expected size regardless of the assembler version.

thanks, applied.

Ingo

#51 lore raw

Re: 2.6.24-rc4-mm1: VDSOSYM build error

In reply to Andrew Morton
Quoted 10 lines · Andrew Morton
Quoted 5 lines · On Thu, 6 Dec 2007 18:28:25 -0500 "Miles Lane" <[email protected]> wrote:

How can I find Roland's patches, so I can try backing them out? I looked in the broken out patches and only saw one related to VDSO. Backing it out did not help. I tried searching for messages to LKML sent by "roland" but mostly got a bunch of folks sending spam.

They're all clumped into git-x86.patch. Hard.

in theory the git merges could be generated as a flat series of patch files:

x86.git.foo-fixes.patch
x86.git.bar-updates.patch
x86.git.foo-fixes-feh.patch
...

which could also include the commit log. "git-log -p" might be a suitable generator. For example, x86.git can be processed per commit, via this script:

  for N in `git-rev-list --reverse --no-merges --remove-empty master..mm`; do 
    git-log -p $N
  done

the following git-export-quilt script (just wrote it, might be buggy, so careful - and it blows away the patches/ directory wherever you run it) will generate a series file into patches/series that can be applied via quilt:

  rm -rf patches
  mkdir patches
  for N in `git-rev-list --reverse --no-merges --remove-empty master..mm`; do
   git-log -p -1 $N > .tmp
   export SUBJECT=`head -5 .tmp | tail -1`
   # generate filename out of subject line:
   FILE=x86.git-"`echo $SUBJECT | cut -c10- |
        tr '[:punct:] \t' '-' | tr -s - | tr '[:upper:]' '[:lower:]'`"
   # generate unique name:
   while [ -f patches/$FILE.patch ]; do FILE="$FILE"_; done

echo $FILE.patch
mv .tmp patches/$FILE.patch
echo $FILE.patch >> patches/series
done

ls -l patches/series

i ran this script over x86.git and it produced a patch series with 247 patches that quilt was able to push correctly. (in theory this concept should work for other git trees too - but i have not tried it)

this would increase the series size quite substantially though - but it would make cherry-picking and patch based bisection a lot easier.

Ingo

#26 lore raw
In reply to David Miller
Quoted 20 lines · David Miller

From: Reuben Farrelly <[email protected]>
Date: Thu, 06 Dec 2007 17:59:37 +1100

Quoted 8 lines · Andrew Morton
Quoted 2 lines

- Lots of device IDs have been removed from the e1000 driver and moved over to e1000e. So if your e1000 stops working, you forgot to set CONFIG_E1000E.

This non fatal oops which I have just noticed may be related to this change then
- certainly looks networking related.

WARNING: at net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()
Quoted 8 lines

Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #1

Call Trace:
  <IRQ>  [<ffffffff8046e038>] tcp_fastretrans_alert+0x229/0xe63
  [<ffffffff80470975>] tcp_ack+0xa3f/0x127d
  [<ffffffff804747b7>] tcp_rcv_established+0x55f/0x7f8
  [<ffffffff8047b1aa>] tcp_v4_do_rcv+0xdb/0x3a7
  [<ffffffff881148a8>] :nf_conntrack:nf_ct_deliver_cached_events+0x75/0x99
Quoted 2 lines

No, it's from TCP assertions and changes added by Ilpo to the net-2.6.25 tree recently.

Yeah, this (very likely) due to the new SACK processing (in net-2.6.25). I'll look what could go wrong with fack_count calculations, most likely it's the reason (I've found earlier one out-of-place retransmission segment in one of my test case which already indicated that there's something incorrect with them but didn't have time to debug it yet).

Thanks for report. Some info about how easily you can reproduce & couple of sentences about the test case might be useful later on when evaluating the fix.

Signature · 1 line
 i.
#60 lore raw

PATCH 1/1 hid: the `bit' in hidinput_mapping_quirks() is an out parameter

In reply to Andrew Morton

Fix a panic, by changing
hidinput_mapping_quirks(,, unsigned long *bit,)
to
hidinput_mapping_quirks(,, unsigned long **bit,)

The `bit' in this function is an out parameter.

---
 drivers/hid/hid-input-quirks.c |   36 +++++++++++++++----------------
 drivers/hid/hid-input.c        |    2 -
 include/linux/hid.h            |    2 -
 3 files changed, 20 insertions(+), 20 deletions(-)
include/linux/hid.h +1 -1
@@ -526,7 +526,7 @@ extern void hidinput_disconnect(struct h
 int hid_set_field(struct hid_field *, unsigned, __s32);
 int hid_input_report(struct hid_device *, int type, u8 *, int, int);
 int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int code, struct hid_field **field);
-int hidinput_mapping_quirks(struct hid_usage *, struct input_dev *, unsigned long *, int *);
+int hidinput_mapping_quirks(struct hid_usage *, struct input_dev *, unsigned long **, int *);
 void hidinput_event_quirks(struct hid_device *, struct hid_field *, struct hid_usage *, __s32);
 int hidinput_apple_event(struct hid_device *, struct input_dev *, struct hid_usage *, __s32);
 void hid_input_field(struct hid_device *hid, struct hid_field *field, __u8 *data, int interrupt);
drivers/hid/hid-input.c +1 -1
@@ -382,7 +382,7 @@ static void hidinput_configure_usage(str
 	}
 
 	/* handle input mappings for quirky devices */
-	ret = hidinput_mapping_quirks(usage, input, bit, &max);
+	ret = hidinput_mapping_quirks(usage, input, &bit, &max);
 	if (ret)
 		goto mapped;
 
drivers/hid/hid-input-quirks.c +18 -18
@@ -16,16 +16,16 @@
 #include <linux/input.h>
 #include <linux/hid.h>
 
-#define map_abs(c)      do { usage->code = c; usage->type = EV_ABS; bit = input->absbit; *max = ABS_MAX; } while (0)
-#define map_rel(c)      do { usage->code = c; usage->type = EV_REL; bit = input->relbit; *max = REL_MAX; } while (0)
-#define map_key(c)      do { usage->code = c; usage->type = EV_KEY; bit = input->keybit; *max = KEY_MAX; } while (0)
-#define map_led(c)      do { usage->code = c; usage->type = EV_LED; bit = input->ledbit; *max = LED_MAX; } while (0)
+#define map_abs(c)      do { usage->code = c; usage->type = EV_ABS; *bit = input->absbit; *max = ABS_MAX; } while (0)
+#define map_rel(c)      do { usage->code = c; usage->type = EV_REL; *bit = input->relbit; *max = REL_MAX; } while (0)
+#define map_key(c)      do { usage->code = c; usage->type = EV_KEY; *bit = input->keybit; *max = KEY_MAX; } while (0)
+#define map_led(c)      do { usage->code = c; usage->type = EV_LED; *bit = input->ledbit; *max = LED_MAX; } while (0)
 
-#define map_abs_clear(c)        do { map_abs(c); clear_bit(c, bit); } while (0)
-#define map_key_clear(c)        do { map_key(c); clear_bit(c, bit); } while (0)
+#define map_abs_clear(c)        do { map_abs(c); clear_bit(c, *bit); } while (0)
+#define map_key_clear(c)        do { map_key(c); clear_bit(c, *bit); } while (0)
 
 static int quirk_belkin_wkbd(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
 		return 0;
@@ -41,7 +41,7 @@ static int quirk_belkin_wkbd(struct hid_
 }
 
 static int quirk_cherry_cymotion(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
 		return 0;
@@ -57,7 +57,7 @@ static int quirk_cherry_cymotion(struct 
 }
 
 static int quirk_logitech_ultrax_remote(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_LOGIVENDOR)
 		return 0;
@@ -90,7 +90,7 @@ static int quirk_logitech_ultrax_remote(
 }
 
 static int quirk_chicony_tactical_pad(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_MSVENDOR)
 		return 0;
@@ -115,7 +115,7 @@ static int quirk_chicony_tactical_pad(st
 }
 
 static int quirk_microsoft_ergonomy_kb(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_MSVENDOR)
 		return 0;
@@ -138,7 +138,7 @@ static int quirk_microsoft_ergonomy_kb(s
 }
 
 static int quirk_microsoft_presenter_8k(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_MSVENDOR)
 		return 0;
@@ -156,7 +156,7 @@ static int quirk_microsoft_presenter_8k(
 }
 
 static int quirk_petalynx_remote(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if (((usage->hid & HID_USAGE_PAGE) != HID_UP_LOGIVENDOR) &&
 			((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER))
@@ -184,7 +184,7 @@ static int quirk_petalynx_remote(struct 
 }
 
 static int quirk_logitech_wireless(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
 		return 0;
@@ -236,7 +236,7 @@ static int quirk_logitech_wireless(struc
 }
 
 static int quirk_cherry_genius_29e(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
 		return 0;
@@ -254,7 +254,7 @@ static int quirk_cherry_genius_29e(struc
 }
 
 static int quirk_btc_8193(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
 		return 0;
@@ -307,7 +307,7 @@ static int quirk_btc_8193(struct hid_usa
 static const struct hid_input_blacklist {
 	__u16 idVendor;
 	__u16 idProduct;
-	int (*quirk)(struct hid_usage *, struct input_dev *, unsigned long *, int *);
+	int (*quirk)(struct hid_usage *, struct input_dev *, unsigned long **, int *);
 } hid_input_blacklist[] = {
 	{ VENDOR_ID_BELKIN, DEVICE_ID_BELKIN_WIRELESS_KEYBOARD, quirk_belkin_wkbd },
 
@@ -335,7 +335,7 @@ static const struct hid_input_blacklist 
 
 int hidinput_mapping_quirks(struct hid_usage *usage, 
 				   struct input_dev *input, 
-				   unsigned long *bit, int *max)
+				   unsigned long **bit, int *max)
 {
 	struct hid_device *device = input_get_drvdata(input);
 	int i = 0;
#62 lore raw

broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Andrew Morton
Quoted 3 lines · Andrew Morton

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

git-sched.patch

breaks suspend here since -rc3-mm2. More precisely, this one:
softlockup: automatically detect hung TASK_UNINTERRUPTIBLE tasks

2.6.24-rc4-mm1 minus this one works just fine. Otherwise disks stop, graphics stops and then it hangs not powering down.

Core 2 Duo, SMP kernel, voluntary preempt, 250 HZ, SLUB, 64 bit.

Ideas?

#63 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 8 lines · Jiri Slaby
Quoted 3 lines · Andrew Morton

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

git-sched.patch

breaks suspend here since -rc3-mm2. More precisely, this one:
softlockup: automatically detect hung TASK_UNINTERRUPTIBLE tasks

Quoted 6 lines

2.6.24-rc4-mm1 minus this one works just fine. Otherwise disks stop, graphics stops and then it hangs not powering down.

Core 2 Duo, SMP kernel, voluntary preempt, 250 HZ, SLUB, 64 bit.

Ideas?

thanks for tracking it down. Does the patch below help?

Ingo

---
 kernel/softlockup.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
kernel/softlockup.c +6 -2
Index: linux/kernel/softlockup.c
===================================================================
@@ -101,7 +101,11 @@ void softlockup_tick(void)
 
 	now = get_timestamp(this_cpu);
 
-	/* Warn about unreasonable delays: */
+	/* Wake up the high-prio watchdog task every second: */
+	if (now > (touch_timestamp + 1))
+		wake_up_process(per_cpu(watchdog_task, this_cpu));
+
+	/* Warn about unreasonable 10+ seconds delays: */
 	if (now <= (touch_timestamp + softlockup_thresh))
 		return;
 
@@ -214,7 +218,7 @@ static int watchdog(void *__bind_cpu)
 	 */
 	while (!kthread_should_stop()) {
 		touch_softlockup_watchdog();
-		msleep_interruptible(10000);
+		schedule();
 
 		/*
 		 * Only do the hung-tasks check on one CPU:
#64 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Jiri Slaby
Quoted 8 lines · Jiri Slaby
Quoted 3 lines · Andrew Morton

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

git-sched.patch

breaks suspend here since -rc3-mm2. More precisely, this one:
softlockup: automatically detect hung TASK_UNINTERRUPTIBLE tasks

Quoted 6 lines

2.6.24-rc4-mm1 minus this one works just fine. Otherwise disks stop, graphics stops and then it hangs not powering down.

Core 2 Duo, SMP kernel, voluntary preempt, 250 HZ, SLUB, 64 bit.

Ideas?

thanks for tracking it down. Does the patch below help?

Ingo

---
 kernel/softlockup.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
kernel/softlockup.c +6 -2
Index: linux/kernel/softlockup.c
===================================================================
@@ -101,7 +101,11 @@ void softlockup_tick(void)
 
 	now = get_timestamp(this_cpu);
 
-	/* Warn about unreasonable delays: */
+	/* Wake up the high-prio watchdog task every second: */
+	if (now > (touch_timestamp + 1))
+		wake_up_process(per_cpu(watchdog_task, this_cpu));
+
+	/* Warn about unreasonable 10+ seconds delays: */
 	if (now <= (touch_timestamp + softlockup_thresh))
 		return;
 
@@ -214,7 +218,7 @@ static int watchdog(void *__bind_cpu)
 	 */
 	while (!kthread_should_stop()) {
 		touch_softlockup_watchdog();
-		msleep_interruptible(10000);
+		schedule();
 
 		/*
 		 * Only do the hung-tasks check on one CPU:
#65 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 1 line · Ingo Molnar

thanks for tracking it down. Does the patch below help?

oops, that should be the patch below. Otherwise the watchdog kernel threads will just loop around.

Ingo

---
 kernel/softlockup.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
kernel/softlockup.c +7 -2
Index: linux/kernel/softlockup.c
===================================================================
@@ -101,7 +101,11 @@ void softlockup_tick(void)
 
 	now = get_timestamp(this_cpu);
 
-	/* Warn about unreasonable delays: */
+	/* Wake up the high-prio watchdog task every second: */
+	if (now > (touch_timestamp + 1))
+		wake_up_process(per_cpu(watchdog_task, this_cpu));
+
+	/* Warn about unreasonable 10+ seconds delays: */
 	if (now <= (touch_timestamp + softlockup_thresh))
 		return;
 
@@ -213,8 +217,9 @@ static int watchdog(void *__bind_cpu)
 	 * debug-printout triggers in softlockup_tick().
 	 */
 	while (!kthread_should_stop()) {
+		set_current_state(TASK_INTERRUPTIBLE);
 		touch_softlockup_watchdog();
-		msleep_interruptible(10000);
+		schedule();
 
 		/*
 		 * Only do the hung-tasks check on one CPU:
#100 lore raw

PATCH 1/1 md: balance braces in raid5 debug code

In reply to Andrew Morton

Hello,

This patch fixes the compilation breakage. Normally you don't see
that as this piece of code is under #ifdef DEBUG. This was introduced by git-md-accel.patch at line 3179.

 drivers/md/raid5.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/md/raid5.c +1 -1
@@ -4972,7 +4972,7 @@ static void print_sh (struct seq_file *s
 	seq_printf(seq, "sh %llu,  count %d.\n",
 		   (unsigned long long)sh->sector, atomic_read(&sh->count));
 	seq_printf(seq, "sh %llu, ", (unsigned long long)sh->sector);
-	for (i = 0; i < sh->sq->disks; i++) {
+	for (i = 0; i < sh->sq->disks; i++)
 		seq_printf(seq, "(cache%d: %p %ld) ",
 			   i, sh->dev[i].page, sh->dev[i].flags);
 	seq_printf(seq, "\n");
#42 lore raw
In reply to Kay Sievers
Quoted 6 lines · Kay Sievers
Quoted 5 lines · On Thu, 2007-12-06 at 18:12 -0500, [email protected] wrote:
Quoted 2 lines · Kay Sievers

What's the value of SYSFS_DEPRECATED? Care to set it to yes, if it isn't, and try again?

Quoted 8 lines
Quoted 4 lines

I *knew* there was a D'Oh! error in here. ;)

Bisection is fast closing in on gregkh-driver-block-device.patch, which broke my LVM almost the exact same way the *last* time it showed up in -mm ;)

Oh, it must not, if SYSFS_DEPRECATED=y is set. I hope we fixed all issues. Please let us know if it does not work, then we will need to look into it.

I changed SYSFS_DEPRECATED to y, and it was able to boot with the same old initrd I've been using for a while.

Note that I had it set to 'n' for at least the last 4-5 -mm kernels, so it *was* working fine without it..

Quoted 9 lines
Quoted 5 lines
Quoted 2 lines

A fix for LVM to handle symlinks instead of directories is in the LVM CVS tree, but there wasn't a release since August.

I seem to recall it was 'nash' rather than LVM that had the indigestion the last time around.

I think that a recent nash should work, even with SYSFS_DEPRECATED=n. Anyway, nothing should change when SYSFS_DEPRECATED set, nash works fine here, with that.

It was working fine with =n here until -rc4-mm1 as well, that's why it's a bit of a surprise. What got added to the 'deprecated' list in this iteration?

Now for the truly odd part - I just tried with a rebuilt initrd that included the lvm.static from last night's Rawhide (lvm2-2.02.29-1.fc9). And that didn't work any better.

So to summarize: (old lvm == 2.02.24)

release SYSFS_DEPRECATED lvm2 works
-rc3-mm2 N old yes
-rc4-mm1 N old no
-rc4-mm1 Y old yes
-rc4-mm1 N new no

(I'm sure looking at that, everybody is now going 'WTF??!?' ;)

gregkh-driver-driver-core-fix-class-glue-dir-cleanup-logic.patch and gregkh-driver-block-device.patch are the only patches left in the (very small) bisect window that reference SYSFS_DEPRECATED at all (according to grep)

Anybody got any brilliant ideas? :)

#43 lore raw
Quoted 12 lines · On Fri, 2007-12-07 at 13:20 -0500, [email protected] wrote:
Quoted 11 lines · Kay Sievers
Quoted 9 lines · On Thu, 2007-12-06 at 18:12 -0500, [email protected] wrote:
Quoted 2 lines · Kay Sievers

What's the value of SYSFS_DEPRECATED? Care to set it to yes, if it isn't, and try again?

I *knew* there was a D'Oh! error in here. ;)

Bisection is fast closing in on gregkh-driver-block-device.patch, which broke my LVM almost the exact same way the *last* time it showed up in -mm ;)

Quoted 6 lines
Quoted 3 lines

Oh, it must not, if SYSFS_DEPRECATED=y is set. I hope we fixed all issues. Please let us know if it does not work, then we will need to look into it.

I changed SYSFS_DEPRECATED to y, and it was able to boot with the same old initrd I've been using for a while.

Great!

Quoted 2 lines

Note that I had it set to 'n' for at least the last 4-5 -mm kernels, so it *was* working fine without it..

Yeah, but the raw block kobjects got converted to devices, which are symlinks with SYSFS_DEPRECATED=n.

Quoted 6 lines
Quoted 6 lines
Quoted 5 lines
Quoted 2 lines

A fix for LVM to handle symlinks instead of directories is in the LVM CVS tree, but there wasn't a release since August.

I seem to recall it was 'nash' rather than LVM that had the indigestion the last time around.

Quoted 6 lines
Quoted 3 lines

I think that a recent nash should work, even with SYSFS_DEPRECATED=n. Anyway, nothing should change when SYSFS_DEPRECATED set, nash works fine here, with that.

It was working fine with =n here until -rc4-mm1 as well, that's why it's a bit of a surprise. What got added to the 'deprecated' list in this iteration?

Block devices got integrated in the driver model.

Quoted 12 lines

Now for the truly odd part - I just tried with a rebuilt initrd that included the lvm.static from last night's Rawhide (lvm2-2.02.29-1.fc9). And that didn't work any better.

So to summarize: (old lvm == 2.02.24)

release SYSFS_DEPRECATED lvm2 works

(quoted diff) +0 -4
-rc3-mm2		N	old	yes
-rc4-mm1		N	old	no
-rc4-mm1		Y	old	yes
-rc4-mm1		N	new	no
Quoted 7 lines

(I'm sure looking at that, everybody is now going 'WTF??!?' ;)

gregkh-driver-driver-core-fix-class-glue-dir-cleanup-logic.patch and gregkh-driver-block-device.patch are the only patches left in the (very small) bisect window that reference SYSFS_DEPRECATED at all (according to grep)

Anybody got any brilliant ideas? :)

I guess it's nash again, which version is it?

You probably need to wait for Red Hat to catch up, and don't disable SYSFS_DEPRECATED for now, they don't support that.

Kay

#44 lore raw
Quoted 3 lines · Kay Sievers
Quoted 1 line

Anybody got any brilliant ideas? :)

I guess it's nash again, which version is it?

Confirmed - nash again. 6.0.9 does not work, upgrading to 6.0.19 works.

init/Kconfig says this for SYSFS_DEPRECATED (which is where I got lead astray, as most of my laptop is Fedora Rawhide and therefor "released this week"):

If you are using a distro that was released in 2006 or later, it should be safe to say N here.

nash 6.0.9 came out in April 2007, and I suspect, but can't prove, that the relevant change was this one:

* Mon Aug 27 2007 Peter Jones <[email protected]> - 6.0.12-2
- Fix segfault in scsi vpd probe code
- Fix block device creation

That was just over 3 months ago. We probably need to fix that help text, but I admit not being sure what guidance we should give now....

#45 lore raw
Quoted 7 lines · On Fri, 2007-12-07 at 15:28 -0500, [email protected] wrote:
Quoted 3 lines · Kay Sievers
Quoted 1 line

Anybody got any brilliant ideas? :)

I guess it's nash again, which version is it?

Confirmed - nash again. 6.0.9 does not work, upgrading to 6.0.19 works.

Oh, cool!

I expected 6.0.9 to contain the fix though:
http://lkml.org/lkml/2007/6/7/209

Quoted 6 lines

init/Kconfig says this for SYSFS_DEPRECATED (which is where I got lead astray, as most of my laptop is Fedora Rawhide and therefor "released this week"):

If you are using a distro that was released in 2006 or later, it should be safe to say N here.

Quoted 8 lines

nash 6.0.9 came out in April 2007, and I suspect, but can't prove, that the relevant change was this one:

* Mon Aug 27 2007 Peter Jones <[email protected]> - 6.0.12-2
- Fix segfault in scsi vpd probe code
- Fix block device creation

That was just over 3 months ago.

Yeah right, even if it is fixed earlier, it's at least 6 months.

Quoted 2 lines

We probably need to fix that help text,
but I admit not being sure what guidance we should give now....

Right, the help text needs to be changed. There are distros like Red Hat which don't support !DEPRECATED at all today, so we should probably just remove the date and add that to the help text.

On the other hand, we are currently considering making the DEPRECATED behavior a boot-time option, so it can be changed on the kernel command line instead of a compile option. There would only be a compile-time default to set.
We will get to that after the current kobject work (~100 patches) in Greg's tree is finished.

Thanks for your help and patience,
Kay

#17 lore raw

Re: 2.6.24-rc4-mm1 kobject changes broken with hvcs driver on powerpc

In reply to Greg KH
Quoted 6 lines

How about running 2.6.24-rc4 with _only_ the patch to this driver to convert it to krefs? Does that combination cause problems?

The patch is at:
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-01-driver/kobject-convert-hvcs-to-use-kref-not-kobject.patch

This patch works fine with _changes_ on 2.6.24-rc4. I can confirm that it's not a kref problem in that case. This patch still assumes that kref_get() returns a value. This is no longer true. The kref_get() call site needs to be changed.

Signature · 4 lines
	Warm Regards,
	Balbir Singh
	Linux Technology Center
	IBM, ISTL
#57 lore raw
In reply to Dave Young
Quoted 8 lines · Dave Young

Hi,

2.6.24-rc4-mm1 build failed at drivers/net/wireless/ath5k/base.c for some inline functions like this:
drivers/net/wireless/ath5k/base.c:292: sorry, unimplemented: inlining failed in call to 'ath5k_extend_tsf': function body not available

fix it with adjust the order of inline function body.

Thanks Dave. What version of gcc were you using? I haven't run into this.

BTW, nothing new was added in this patch, things were just shifted, but even that may be copyrightable. Is it fair to assume you are licensing these changes under the same license the file is in?

For this file we'd usually use:

Changes-licensed-under: 3-clause-BSD

For future reference:

http://linuxwireless.org/en/developers/Documentation/SubmittingPatches#Changes-licensed-undertag

Luis

#101 lore raw

Re: 2.6.24-rc4-mm1: undefined reference to `compat_sys_timerfd' on sparc64

In reply to Andrew Morton

Hello,

I tried it on sun ultra 60 (dual sparc64) station. Unfortunately it failed
to compile.

  AS      arch/sparc64/lib/xor.o
  AR      arch/sparc64/lib/lib.a
  GEN     .version
  CHK     include/linux/compile.h
dnsdomainname: Unknown host
  UPD     include/linux/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1

arch/sparc64/kernel/head.o: In function `sys_call_table32':
arch/sparc64/kernel/head.S:(.text+0x224e0): undefined reference to `compat_sys_timerfd'
make: *** [.tmp_vmlinux1] Error 1

Any hints?

Regards,

Mariusz

Linux sparc64 2.6.23-gentoo-r3 #4 SMP PREEMPT Sat Dec 8 00:50:12 CET 2007 sparc64 sun4u TI UltraSparc II (BlackBird) GNU/Linux

Gnu C                  4.1.1
Gnu make               3.81
binutils               2.17
util-linux             2.12r
mount                  2.12r
module-init-tools      3.2.2
e2fsprogs              1.39
Linux C Library        2.5
Dynamic linker (ldd)   2.5
Procps                 3.2.6
Net-tools              1.60
Kbd                    1.12
Sh-utils               6.4
udev                   104
Modules Loaded         sr_mod cdrom sg

#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.24-rc4-mm1
# Sat Dec 8 01:01:01 2007
#
CONFIG_SPARC=y
CONFIG_SPARC64=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_64BIT=y
CONFIG_MMU=y
CONFIG_QUICKLIST=y
CONFIG_STACKTRACE_SUPPORT=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_AUDIT_ARCH=y
CONFIG_ARCH_NO_VIRT_TO_BUS=y
CONFIG_OF=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y CONFIG_ARCH_SUPPORTS_AOUT=y CONFIG_SPARC64_PAGE_SIZE_8KB=y
# CONFIG_SPARC64_PAGE_SIZE_64KB is not set
# CONFIG_SPARC64_PAGE_SIZE_512KB is not set
# CONFIG_SPARC64_PAGE_SIZE_4MB is not set CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
# CONFIG_HOTPLUG_CPU is not set CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=18
# CONFIG_CGROUPS is not set
# CONFIG_FAIR_GROUP_SCHED is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_RELAY=y
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_IO_TRACE=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_BLOCK_COMPAT=y

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_AS=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="anticipatory"
CONFIG_SYSVIPC_COMPAT=y
CONFIG_GENERIC_HARDIRQS=y

#
# General machine setup
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP=y
CONFIG_NR_CPUS=4
# CONFIG_CPU_FREQ is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_HAVE_MEMORY_PRESENT=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=0
CONFIG_NR_QUICK=1
CONFIG_SBUS=y
CONFIG_SBUSCHAR=y
CONFIG_SUN_AUXIO=y
CONFIG_SUN_IO=y
# CONFIG_SUN_LDOMS is not set
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCI_SYSCALL=y
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
CONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not set
CONFIG_SUN_OPENPROMFS=m
CONFIG_SPARC32_COMPAT=y
CONFIG_COMPAT=y
CONFIG_BINFMT_ELF32=y
# CONFIG_BINFMT_AOUT32 is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_MISC=m
CONFIG_SOLARIS_EMUL=y
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
# CONFIG_CMDLINE_BOOL is not set

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=m
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
CONFIG_NET_KEY=m
# CONFIG_NET_KEY_MIGRATE is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
CONFIG_ARPD=y
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_LRO is not set
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_SCHED is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set

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

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_CONNECTOR=m
# CONFIG_MTD is not set
CONFIG_OF_DEVICE=y
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
CONFIG_MISC_DEVICES=y
# CONFIG_PHANTOM is not set
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set
# CONFIG_IDE is not set

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

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

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

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
# CONFIG_SCSI_FC_ATTRS is not set
CONFIG_SCSI_ISCSI_ATTRS=y
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_AIC94XX is not set
# CONFIG_SCSI_ARCMSR is not set
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_STEX is not set
CONFIG_SCSI_SYM53C8XX_2=y
CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
CONFIG_SCSI_SYM53C8XX_MMIO=y
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLOGICPTI is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_ISCSI is not set
# CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_SUNESP is not set
# CONFIG_SCSI_SRP is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support
#
# CONFIG_FIREWIRE is not set
# CONFIG_IEEE1394 is not set
# CONFIG_I2O is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
# CONFIG_IP1000 is not set
# CONFIG_ARCNET is not set
# CONFIG_PHYLIB is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_SUNLANCE is not set
CONFIG_HAPPYMEAL=y
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_NET_PCI is not set
# CONFIG_B44 is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set

#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
# CONFIG_WLAN_80211 is not set
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
CONFIG_NETCONSOLE=m
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
# CONFIG_NETPOLL_TRAP is not set
CONFIG_NET_POLL_CONTROLLER=y
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set

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

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

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_KEYBOARD_SUNKBD=y
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2_ELANTECH is not set
CONFIG_MOUSE_SERIAL=y
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_SPARCSPKR=y
# CONFIG_INPUT_UINPUT is not set

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

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

#
# Serial drivers
#

#
# Non-8250 serial port support
#
CONFIG_SERIAL_SUNCORE=y
# CONFIG_SERIAL_SUNZILOG is not set
CONFIG_SERIAL_SUNSU=y
CONFIG_SERIAL_SUNSU_CONSOLE=y
CONFIG_SERIAL_SUNSAB=m
CONFIG_SERIAL_SUNHV=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_IPMI_HANDLER is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_TCG_TPM is not set
CONFIG_DEVPORT=y
# CONFIG_I2C is not set

#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_WATCHDOG is not set

#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not set

#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set

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

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

#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_UVESA is not set
CONFIG_FB_SBUS=y
# CONFIG_FB_BW2 is not set
# CONFIG_FB_CG3 is not set
# CONFIG_FB_CG6 is not set
CONFIG_FB_FFB=y
# CONFIG_FB_TCX is not set
# CONFIG_FB_CG14 is not set
# CONFIG_FB_P9100 is not set
# CONFIG_FB_LEO is not set
# CONFIG_FB_XVR500 is not set
# CONFIG_FB_XVR2500 is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set

#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set

#
# Console display driver support
#
# CONFIG_PROM_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set CONFIG_FONTS=y
# CONFIG_FONT_8x8 is not set
# CONFIG_FONT_8x16 is not set
# CONFIG_FONT_6x11 is not set
# CONFIG_FONT_7x14 is not set
# CONFIG_FONT_PEARL_8x8 is not set
# CONFIG_FONT_ACORN_8x8 is not set CONFIG_FONT_SUN8x16=y
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
# CONFIG_LOGO_LINUX_CLUT224 is not set CONFIG_LOGO_SUN_CLUT224=y

#
# Sound
#
CONFIG_SOUND=m

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set

#
# Generic devices
#
CONFIG_SND_DUMMY=m
CONFIG_SND_VIRMIDI=m
CONFIG_SND_MTPAV=m
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set

#
# PCI devices
#
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not set
# CONFIG_SND_HDA_INTEL is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set

#
# ALSA Sparc devices
#
# CONFIG_SND_SUN_AMD7930 is not set
CONFIG_SND_SUN_CS4231=m
# CONFIG_SND_SUN_DBRI is not set

#
# System on Chip audio support
#
# CONFIG_SND_SOC is not set

#
# SoC Audio support for SuperH
#

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
# CONFIG_HID_SUPPORT is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_MMC is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_RTC_CLASS is not set

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

#
# Misc Linux/SPARC drivers
#
CONFIG_SUN_OPENPROMIO=y
# CONFIG_OBP_FLASH is not set
# CONFIG_SUN_BPP is not set
# CONFIG_BBC_I2C is not set
# CONFIG_ENVCTRL is not set
# CONFIG_DISPLAY7SEG is not set

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4DEV_FS is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
# CONFIG_REISER4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set

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

#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set

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

#
# Layered filesystems
#
# CONFIG_UNION_FS is not set

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
# CONFIG_NFSD is not set
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
# CONFIG_SUNRPC_BIND34 is not set
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_SUN_PARTITION=y
CONFIG_NLS=m
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
# CONFIG_DLM is not set
CONFIG_INSTRUMENTATION=y
# CONFIG_PROFILING is not set
# CONFIG_KPROBES is not set
# CONFIG_MARKERS is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_PAGE_OWNER is not set
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_SHIRQ=y
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_SLUB_DEBUG_ON is not set
CONFIG_DEBUG_PREEMPT=y
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
# CONFIG_RT_MUTEX_TESTER is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_LOCKDEP is not set
CONFIG_TRACE_IRQFLAGS=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
CONFIG_FRAME_POINTER=y
# CONFIG_PROFILE_LIKELY is not set
CONFIG_FORCED_INLINING=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_DEBUG_SYNCHRO_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_SAMPLES is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_DCFLUSH is not set
# CONFIG_STACK_DEBUG is not set
# CONFIG_DEBUG_BOOTMEM is not set
# CONFIG_DEBUG_PAGEALLOC is not set

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_MANAGER=y
# CONFIG_CRYPTO_HMAC is not set
# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
CONFIG_CRYPTO_GF128MUL=y
# CONFIG_CRYPTO_ECB is not set
CONFIG_CRYPTO_CBC=y
# CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_XTS is not set
# CONFIG_CRYPTO_CTR is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_AES is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_ARC4 is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_MICHAEL_MIC is not set
CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
# CONFIG_CRYPTO_AUTHENC is not set
CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_HIFN_795X is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y

#102 lore raw

Re: 2.6.24-rc4-mm1: undefined reference to `compat_sys_timerfd' on sparc64

Quoted 14 lines · On Sat, 8 Dec 2007 01:04:55 +0100 Mariusz Kozlowski <[email protected]>…

Hello,

I tried it on sun ultra 60 (dual sparc64) station. Unfortunately it failed
to compile.

  AS      arch/sparc64/lib/xor.o
  AR      arch/sparc64/lib/lib.a
  GEN     .version
  CHK     include/linux/compile.h
dnsdomainname: Unknown host
  UPD     include/linux/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
Quoted 3 lines

arch/sparc64/kernel/head.o: In function `sys_call_table32':
arch/sparc64/kernel/head.S:(.text+0x224e0): undefined reference to `compat_sys_timerfd'
make: *** [.tmp_vmlinux1] Error 1

argh, sorry, I am soooooo fed up with fixing that patch.

arch/sparc64/kernel/systbls.S renamed from arch/sparc64/kernel/systbls.S~timerfd-v3-new-timerfd-api-sparc64-fix +1 -1
@@ -80,7 +80,7 @@ sys_call_table32:
 	.word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare
 /*300*/	.word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages, compat_sys_mbind, compat_sys_get_mempolicy
 	.word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait
-/*310*/	.word compat_sys_utimensat, compat_sys_signalfd, compat_sys_timerfd, sys_eventfd, compat_sys_fallocate
+/*310*/	.word compat_sys_utimensat, compat_sys_signalfd, sys_ni_syscall, sys_eventfd, compat_sys_fallocate
 
 #endif /* CONFIG_COMPAT */
 

_

Or should this have been sys_nis_syscall()?

I should have picked this up in cross-build testing but iirc sparc64 broke for other reasons. Let me check on that.

#66 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 31 lines · Ingo Molnar
Quoted 1 line · Ingo Molnar

thanks for tracking it down. Does the patch below help?

oops, that should be the patch below. Otherwise the watchdog kernel threads will just loop around.

Ingo

---
 kernel/softlockup.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Index: linux/kernel/softlockup.c
===================================================================

kernel/softlockup.c +5 -1
@@ -101,7 +101,11 @@ void softlockup_tick(void)
 
 	now = get_timestamp(this_cpu);
 
-	/* Warn about unreasonable delays: */
+	/* Wake up the high-prio watchdog task every second: */
+	if (now > (touch_timestamp + 1))
+		wake_up_process(per_cpu(watchdog_task, this_cpu));
+
+	/* Warn about unreasonable 10+ seconds delays: */
 	if (now <= (touch_timestamp + softlockup_thresh))
 		return;
 

kernel/softlockup.c static int watchdog(void *__bind_cpu) · line 225

Quoted 10 lines
kernel/softlockup.c +2 -1
@@ -213,8 +217,9 @@ static int watchdog(void *__bind_cpu)
 	 * debug-printout triggers in softlockup_tick().
 	 */
 	while (!kthread_should_stop()) {
+		set_current_state(TASK_INTERRUPTIBLE);
 		touch_softlockup_watchdog();
-		msleep_interruptible(10000);
+		schedule();
 
 		/*
 		 * Only do the hung-tasks check on one CPU:

Unfortunately no change here.

#67 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 31 lines · Ingo Molnar
Quoted 1 line · Ingo Molnar

thanks for tracking it down. Does the patch below help?

oops, that should be the patch below. Otherwise the watchdog kernel threads will just loop around.

Ingo

---
 kernel/softlockup.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Index: linux/kernel/softlockup.c
===================================================================

kernel/softlockup.c +5 -1
@@ -101,7 +101,11 @@ void softlockup_tick(void)
 
 	now = get_timestamp(this_cpu);
 
-	/* Warn about unreasonable delays: */
+	/* Wake up the high-prio watchdog task every second: */
+	if (now > (touch_timestamp + 1))
+		wake_up_process(per_cpu(watchdog_task, this_cpu));
+
+	/* Warn about unreasonable 10+ seconds delays: */
 	if (now <= (touch_timestamp + softlockup_thresh))
 		return;
 

kernel/softlockup.c static int watchdog(void *__bind_cpu) · line 225

Quoted 10 lines
kernel/softlockup.c +2 -1
@@ -213,8 +217,9 @@ static int watchdog(void *__bind_cpu)
 	 * debug-printout triggers in softlockup_tick().
 	 */
 	while (!kthread_should_stop()) {
+		set_current_state(TASK_INTERRUPTIBLE);
 		touch_softlockup_watchdog();
-		msleep_interruptible(10000);
+		schedule();
 
 		/*
 		 * Only do the hung-tasks check on one CPU:

Unfortunately no change here.

#68 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 1 line · Jiri Slaby

Unfortunately no change here.

could you try to revert this change:

-int softlockup_thresh = 10;
+int softlockup_thresh = 60;

i.e. change the value of softlockup_thresh back to 10. You should be able to tweak this runtime as well, without patching the kernel:

echo 10 > /proc/sys/kernel/softlockup_thresh

Ingo

#69 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Jiri Slaby
Quoted 1 line · Jiri Slaby

Unfortunately no change here.

could you try to revert this change:

-int softlockup_thresh = 10;
+int softlockup_thresh = 60;

i.e. change the value of softlockup_thresh back to 10. You should be able to tweak this runtime as well, without patching the kernel:

echo 10 > /proc/sys/kernel/softlockup_thresh

Ingo

#103 lore raw

Re: 2.6.24-rc4-mm1: undefined reference to `compat_sys_timerfd' on sparc64

In reply to Andrew Morton
Quoted 11 lines
Quoted 5 lines

LD .tmp_vmlinux1
arch/sparc64/kernel/head.o: In function `sys_call_table32':
arch/sparc64/kernel/head.S:(.text+0x224e0): undefined reference to `compat_sys_timerfd'
make: *** [.tmp_vmlinux1] Error 1

argh, sorry, I am soooooo fed up with fixing that patch.

arch/sparc64/kernel/systbls.S sys_call_table32: · line 85

Quoted 7 lines
arch/sparc64/kernel/systbls.S renamed from arch/sparc64/kernel/systbls.S~timerfd-v3-new-timerfd-api-sparc64-fix +1 -1
@@ -80,7 +80,7 @@ sys_call_table32:
 	.word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare
 /*300*/	.word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages, compat_sys_mbind, compat_sys_get_mempolicy
 	.word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait
-/*310*/	.word compat_sys_utimensat, compat_sys_signalfd, compat_sys_timerfd, sys_eventfd, compat_sys_fallocate
+/*310*/	.word compat_sys_utimensat, compat_sys_signalfd, sys_ni_syscall, sys_eventfd, compat_sys_fallocate
 
 #endif /* CONFIG_COMPAT */

Ok - that helped.

Thanks,

Mariusz

#70 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 9 lines · Ingo Molnar
Quoted 1 line · Jiri Slaby

Unfortunately no change here.

could you try to revert this change:

(quoted diff) +1 -1
-int softlockup_thresh = 10;
+int softlockup_thresh = 60;
Quoted 4 lines

i.e. change the value of softlockup_thresh back to 10. You should be able to tweak this runtime as well, without patching the kernel:

echo 10 > /proc/sys/kernel/softlockup_thresh

What should have this changed? I can't see any difference.

#71 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 9 lines · Ingo Molnar
Quoted 1 line · Jiri Slaby

Unfortunately no change here.

could you try to revert this change:

(quoted diff) +1 -1
-int softlockup_thresh = 10;
+int softlockup_thresh = 60;
Quoted 4 lines

i.e. change the value of softlockup_thresh back to 10. You should be able to tweak this runtime as well, without patching the kernel:

echo 10 > /proc/sys/kernel/softlockup_thresh

What should have this changed? I can't see any difference.

#72 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 10 lines · Jiri Slaby
Quoted 9 lines · Ingo Molnar
Quoted 1 line · Jiri Slaby

Unfortunately no change here.

could you try to revert this change:

(quoted diff) +1 -1
-int softlockup_thresh = 10;
+int softlockup_thresh = 60;
Quoted 6 lines
Quoted 4 lines

i.e. change the value of softlockup_thresh back to 10. You should be able to tweak this runtime as well, without patching the kernel:

echo 10 > /proc/sys/kernel/softlockup_thresh

What should have this changed? I can't see any difference.

it changes the wakeup frequency of the softlockup thread.

i'm wondering why it had no effect now - the new code is in essence a NOP over what we had. Could you send me your current (modified) kernel/softlockup.c code?

Ingo

#73 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 3 lines · Ingo Molnar

i'm wondering why it had no effect now - the new code is in essence a NOP over what we had. Could you send me your current (modified) kernel/softlockup.c code?

Only these changes:

kernel/softlockup.c +8 -3
index e50b44a..7011549 100644
@@ -25,7 +25,7 @@ static DEFINE_PER_CPU(unsigned long, print_timestamp);
 static DEFINE_PER_CPU(struct task_struct *, watchdog_task);
 
 static int did_panic;
-int softlockup_thresh = 60;
+int softlockup_thresh = 10;
 
 static int
 softlock_panic(struct notifier_block *this, unsigned long event, void *ptr)
@@ -101,7 +101,11 @@ void softlockup_tick(void)
 
        now = get_timestamp(this_cpu);
 
-       /* Warn about unreasonable delays: */
+       /* Wake up the high-prio watchdog task every second: */
+       if (now > (touch_timestamp + 1))
+               wake_up_process(per_cpu(watchdog_task, this_cpu));
+
+       /* Warn about unreasonable 10+ seconds delays: */
        if (now <= (touch_timestamp + softlockup_thresh))
                return;
 
@@ -213,8 +217,9 @@ static int watchdog(void *__bind_cpu)
         * debug-printout triggers in softlockup_tick().
         */
        while (!kthread_should_stop()) {
+               set_current_state(TASK_INTERRUPTIBLE);
                touch_softlockup_watchdog();
-               msleep_interruptible(10000);
+               schedule();
 
                /*
                 * Only do the hung-tasks check on one CPU:

Whole file:
http://www.fi.muni.cz/~xslaby/sklad/softlockup.c

#74 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 3 lines · Ingo Molnar

i'm wondering why it had no effect now - the new code is in essence a NOP over what we had. Could you send me your current (modified) kernel/softlockup.c code?

Only these changes:

kernel/softlockup.c +8 -3
index e50b44a..7011549 100644
@@ -25,7 +25,7 @@ static DEFINE_PER_CPU(unsigned long, print_timestamp);
 static DEFINE_PER_CPU(struct task_struct *, watchdog_task);
 
 static int did_panic;
-int softlockup_thresh = 60;
+int softlockup_thresh = 10;
 
 static int
 softlock_panic(struct notifier_block *this, unsigned long event, void *ptr)
@@ -101,7 +101,11 @@ void softlockup_tick(void)
 
        now = get_timestamp(this_cpu);
 
-       /* Warn about unreasonable delays: */
+       /* Wake up the high-prio watchdog task every second: */
+       if (now > (touch_timestamp + 1))
+               wake_up_process(per_cpu(watchdog_task, this_cpu));
+
+       /* Warn about unreasonable 10+ seconds delays: */
        if (now <= (touch_timestamp + softlockup_thresh))
                return;
 
@@ -213,8 +217,9 @@ static int watchdog(void *__bind_cpu)
         * debug-printout triggers in softlockup_tick().
         */
        while (!kthread_should_stop()) {
+               set_current_state(TASK_INTERRUPTIBLE);
                touch_softlockup_watchdog();
-               msleep_interruptible(10000);
+               schedule();
 
                /*
                 * Only do the hung-tasks check on one CPU:

Whole file:
http://www.fi.muni.cz/~xslaby/sklad/softlockup.c

#75 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 2 lines · Ingo Molnar

i'm wondering why it had no effect now - the new code is in essence a NOP over what we had.

Maybe a dumb question. Why those changes in process_32.c in the patch and not in process_64.c?

#76 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 2 lines · Ingo Molnar

i'm wondering why it had no effect now - the new code is in essence a NOP over what we had.

Maybe a dumb question. Why those changes in process_32.c in the patch and not in process_64.c?

#105 lore raw

Re: 2.6.24-rc4-mm1: some issues on sparc64

In reply to Andrew Morton

Hello,

The box is sun ultra 60 (dual sparc64). This was caught when
system (gentoo) was emerging some package.

[27006.402237] kernel BUG at fs/jbd/transaction.c:1894!
[27006.402268]               \|/ ____ \|/
[27006.402274]               "@'/ .. \`@"
[27006.402279]               /_| \__/ |_\
[27006.402285]                  \__U_/
[27006.402298] rm(4713): Kernel bad sw trap 5 [#1]
[27006.402538] TSTATE: 0000009911009605 TPC: 000000000053b1cc TNPC: 000000000053b1d0 Y: 00000000    Not tainted
[27006.402579] TPC: <journal_invalidatepage+0x3d4/0x460>
[27006.402593] g0: 0000000000000002 g1: 0000000000000000 g2: 0000000000000001 g3: fffff800a7d90000
[27006.402610] g4: fffff800b54ea460 g5: fffff8007f832000 g6: fffff800a7d90000 g7: 000000000076d868
[27006.402627] o0: 000000000072b660 o1: 0000000000000766 o2: 0000000000000002 o3: 0000000000000001
[27006.402644] o4: 00000000008a2940 o5: 0000000000000000 sp: fffff800a7d92c91 ret_pc: 000000000053b1c4
[27006.402665] RPC: <journal_invalidatepage+0x3cc/0x460>
[27006.402679] l0: fffff800afbf4070 l1: 000000000069511c l2: 0000000000002000 l3: 0000000000000000
[27006.402696] l4: 0000000000000001 l5: fffff800ba4cb730 l6: fffff800bf1cd338 l7: 0000000000000001
[27006.402713] i0: fffff800bf1cd000 i1: 0000000201db2708 i2: 0000000000000000 i3: 0000000000727000
[27006.402730] i4: 0000000000200000 i5: fffff800bf1cd028 i6: fffff800a7d92d51 i7: 0000000000529254
[27006.402763] I7: <ext3_invalidatepage+0x3c/0x60>
[27006.402776] Caller[0000000000529254]: ext3_invalidatepage+0x3c/0x60
[27006.402800] Caller[00000000004b22fc]: do_invalidatepage+0x24/0x60
[27006.402826] Caller[00000000004b29c4]: truncate_complete_page+0x6c/0x80
[27006.402849] Caller[00000000004b2a6c]: truncate_inode_pages_range+0x94/0x440
[27006.402872] Caller[00000000004b2e2c]: truncate_inode_pages+0x14/0x20
[27006.402894] Caller[0000000000529888]: ext3_delete_inode+0x10/0x160
[27006.402918] Caller[00000000004e7ca0]: generic_delete_inode+0x88/0x120
[27006.402949] Caller[00000000004e7e60]: generic_drop_inode+0x128/0x1c0
[27006.402971] Caller[00000000004e75d4]: iput+0x7c/0xa0
[27006.402992] Caller[00000000004dd680]: do_unlinkat+0x108/0x1a0
[27006.403024] Caller[00000000004dd884]: sys_unlinkat+0x2c/0x60
[27006.403047] Caller[00000000004062d4]: linux_sparc_syscall32+0x3c/0x40
[27006.403081] Caller[00000000f7e7d0ec]: 0xf7e7d0f4
[27006.403102] Instruction DUMP: 92102766  7ffbbeaf  90122260 <91d02005> 92102780  7ffbbeab  90122260  91d02005  7ffbbea8

After this happend, one (out of two) cpu got consumed (in kernel space) trying to complete io. Process stuck in D state, wchan says it was in sync_buffer() which you can see also in 'SysRq : Show Blocked State' below.

[27422.874858] SysRq : Show Blocked State
[27422.877086]   task                        PC stack   pid father
[27422.877143] rm            D 00000000004f8f68     0  4966   4860
[27422.877160] Call Trace:
[27422.877167]  [0000000000692840] io_schedule+0x28/0x40
[27422.877182]  [00000000004f8f68] sync_buffer+0x50/0x60
[27422.877198]  [0000000000692a58] __wait_on_bit_lock+0x60/0xa0
[27422.877213]  [0000000000692ae4] out_of_line_wait_on_bit_lock+0x4c/0x60
[27422.877228]  [00000000004f9328] __lock_buffer+0x30/0x40
[27422.877242]  [000000000053b024] journal_invalidatepage+0x22c/0x460
[27422.877268]  [0000000000529254] ext3_invalidatepage+0x3c/0x60
[27422.877297]  [00000000004b22fc] do_invalidatepage+0x24/0x60
[27422.877316]  [00000000004b29c4] truncate_complete_page+0x6c/0x80
[27422.877332]  [00000000004b2a6c] truncate_inode_pages_range+0x94/0x440
[27422.877349]  [00000000004b2e2c] truncate_inode_pages+0x14/0x20
[27422.877364]  [0000000000529888] ext3_delete_inode+0x10/0x160
[27422.877381]  [00000000004e7ca0] generic_delete_inode+0x88/0x120
[27422.877405]  [00000000004e7e60] generic_drop_inode+0x128/0x1c0
[27422.877421]  [00000000004e75d4] iput+0x7c/0xa0
[27422.877435]  [00000000004dd680] do_unlinkat+0x108/0x1a0

The downside is that it is unclear to me how to reproduce that - it just happens sometimes. Also from time to time I get warnings about tcp_fastretrans_alert(), but it seems they do no harm.

[30014.779310] WARNING: at net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()
[30014.781630] Call Trace:
[30014.783976]  [00000000006551c8] tcp_fastretrans_alert+0x70/0xe00
[30014.786312]  [0000000000657c60] tcp_ack+0x988/0x10c0
[30014.788702]  [000000000065bd80] tcp_rcv_established+0x408/0x840
[30014.791074]  [00000000006634dc] tcp_v4_do_rcv+0xe4/0x4a0
[30014.793440]  [000000000066632c] tcp_v4_rcv+0xa34/0xb20
[30014.795762]  [0000000000643a10] ip_local_deliver+0xd8/0x2c0
[30014.798102]  [0000000000643ed4] ip_rcv+0x2dc/0x640
[30014.800431]  [000000000062424c] netif_receive_skb+0x334/0x400
[30014.802762]  [0000000000627228] process_backlog+0x90/0x140
[30014.805097]  [0000000000626d28] net_rx_action+0x190/0x260
[30014.807462]  [0000000000475ea8] __do_softirq+0x90/0x140
[30014.809794]  [0000000000475fe0] do_softirq+0x88/0xa0
[30014.812134]  [000000000047608c] irq_exit+0x94/0xc0
[30014.814453]  [000000000042f53c] handler_irq+0xa4/0xc0
[30014.816800]  [0000000000426f30] sunos_sys_table+0x560/0x728
[30014.819133]  [00000000004286d8] cpu_idle+0x20/0xe0

Linux sparc64 2.6.24-rc4-mm1 #2 SMP PREEMPT Sat Dec 8 10:59:35 CET 2007 sparc64 sun4u TI UltraSparc II (BlackBird) GNU/Linux

Gnu C                  4.1.1
Gnu make               3.81
binutils               2.18
util-linux             2.12r
mount                  2.12r
module-init-tools      3.2.2
e2fsprogs              1.40.2
Linux C Library        2.5
Dynamic linker (ldd)   2.5
Procps                 3.2.7
Net-tools              1.60
Kbd                    1.13
Sh-utils               6.9
udev                   104
Modules Loaded         sr_mod cdrom sg

Regards,

Mariusz

#
# Automatically generated make config: don't edit # Linux kernel version: 2.6.24-rc4-mm1
# Sat Dec 8 01:01:01 2007
#
CONFIG_SPARC=y
CONFIG_SPARC64=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_64BIT=y
CONFIG_MMU=y
CONFIG_QUICKLIST=y
CONFIG_STACKTRACE_SUPPORT=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_AUDIT_ARCH=y
CONFIG_ARCH_NO_VIRT_TO_BUS=y
CONFIG_OF=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y CONFIG_ARCH_SUPPORTS_AOUT=y CONFIG_SPARC64_PAGE_SIZE_8KB=y
# CONFIG_SPARC64_PAGE_SIZE_64KB is not set
# CONFIG_SPARC64_PAGE_SIZE_512KB is not set
# CONFIG_SPARC64_PAGE_SIZE_4MB is not set CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
# CONFIG_HOTPLUG_CPU is not set CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=18
# CONFIG_CGROUPS is not set
# CONFIG_FAIR_GROUP_SCHED is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_RELAY=y
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_IO_TRACE=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_BLOCK_COMPAT=y

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_AS=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="anticipatory"
CONFIG_SYSVIPC_COMPAT=y
CONFIG_GENERIC_HARDIRQS=y

#
# General machine setup
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_SMP=y
CONFIG_NR_CPUS=4
# CONFIG_CPU_FREQ is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_HAVE_MEMORY_PRESENT=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=0
CONFIG_NR_QUICK=1
CONFIG_SBUS=y
CONFIG_SBUSCHAR=y
CONFIG_SUN_AUXIO=y
CONFIG_SUN_IO=y
# CONFIG_SUN_LDOMS is not set
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCI_SYSCALL=y
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
CONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not set
CONFIG_SUN_OPENPROMFS=m
CONFIG_SPARC32_COMPAT=y
CONFIG_COMPAT=y
CONFIG_BINFMT_ELF32=y
# CONFIG_BINFMT_AOUT32 is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_MISC=m
CONFIG_SOLARIS_EMUL=y
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
# CONFIG_CMDLINE_BOOL is not set

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=m
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
CONFIG_NET_KEY=m
# CONFIG_NET_KEY_MIGRATE is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
CONFIG_ARPD=y
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_LRO is not set
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_SCHED is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set

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

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_CONNECTOR=m
# CONFIG_MTD is not set
CONFIG_OF_DEVICE=y
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
CONFIG_MISC_DEVICES=y
# CONFIG_PHANTOM is not set
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set
# CONFIG_IDE is not set

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

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

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

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
# CONFIG_SCSI_FC_ATTRS is not set
CONFIG_SCSI_ISCSI_ATTRS=y
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_AIC94XX is not set
# CONFIG_SCSI_ARCMSR is not set
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_STEX is not set
CONFIG_SCSI_SYM53C8XX_2=y
CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
CONFIG_SCSI_SYM53C8XX_MMIO=y
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLOGICPTI is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_ISCSI is not set
# CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_SUNESP is not set
# CONFIG_SCSI_SRP is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support
#
# CONFIG_FIREWIRE is not set
# CONFIG_IEEE1394 is not set
# CONFIG_I2O is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
# CONFIG_IP1000 is not set
# CONFIG_ARCNET is not set
# CONFIG_PHYLIB is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_SUNLANCE is not set
CONFIG_HAPPYMEAL=y
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_NET_PCI is not set
# CONFIG_B44 is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set

#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
# CONFIG_WLAN_80211 is not set
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
CONFIG_NETCONSOLE=m
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
# CONFIG_NETPOLL_TRAP is not set
CONFIG_NET_POLL_CONTROLLER=y
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set

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

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

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_KEYBOARD_SUNKBD=y
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_PS2_ELANTECH is not set
CONFIG_MOUSE_SERIAL=y
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_SPARCSPKR=y
# CONFIG_INPUT_UINPUT is not set

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

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

#
# Serial drivers
#

#
# Non-8250 serial port support
#
CONFIG_SERIAL_SUNCORE=y
# CONFIG_SERIAL_SUNZILOG is not set
CONFIG_SERIAL_SUNSU=y
CONFIG_SERIAL_SUNSU_CONSOLE=y
CONFIG_SERIAL_SUNSAB=m
CONFIG_SERIAL_SUNHV=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_IPMI_HANDLER is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_TCG_TPM is not set
CONFIG_DEVPORT=y
# CONFIG_I2C is not set

#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_WATCHDOG is not set

#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not set

#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set

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

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

#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_UVESA is not set
CONFIG_FB_SBUS=y
# CONFIG_FB_BW2 is not set
# CONFIG_FB_CG3 is not set
# CONFIG_FB_CG6 is not set
CONFIG_FB_FFB=y
# CONFIG_FB_TCX is not set
# CONFIG_FB_CG14 is not set
# CONFIG_FB_P9100 is not set
# CONFIG_FB_LEO is not set
# CONFIG_FB_XVR500 is not set
# CONFIG_FB_XVR2500 is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set

#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set

#
# Console display driver support
#
# CONFIG_PROM_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set CONFIG_FONTS=y
# CONFIG_FONT_8x8 is not set
# CONFIG_FONT_8x16 is not set
# CONFIG_FONT_6x11 is not set
# CONFIG_FONT_7x14 is not set
# CONFIG_FONT_PEARL_8x8 is not set
# CONFIG_FONT_ACORN_8x8 is not set CONFIG_FONT_SUN8x16=y
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
# CONFIG_LOGO_LINUX_CLUT224 is not set CONFIG_LOGO_SUN_CLUT224=y

#
# Sound
#
CONFIG_SOUND=m

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set

#
# Generic devices
#
CONFIG_SND_DUMMY=m
CONFIG_SND_VIRMIDI=m
CONFIG_SND_MTPAV=m
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set

#
# PCI devices
#
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not set
# CONFIG_SND_HDA_INTEL is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set

#
# ALSA Sparc devices
#
# CONFIG_SND_SUN_AMD7930 is not set
CONFIG_SND_SUN_CS4231=m
# CONFIG_SND_SUN_DBRI is not set

#
# System on Chip audio support
#
# CONFIG_SND_SOC is not set

#
# SoC Audio support for SuperH
#

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
# CONFIG_HID_SUPPORT is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_MMC is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_RTC_CLASS is not set

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

#
# Misc Linux/SPARC drivers
#
CONFIG_SUN_OPENPROMIO=y
# CONFIG_OBP_FLASH is not set
# CONFIG_SUN_BPP is not set
# CONFIG_BBC_I2C is not set
# CONFIG_ENVCTRL is not set
# CONFIG_DISPLAY7SEG is not set

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
# CONFIG_EXT4DEV_FS is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
# CONFIG_REISER4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set

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

#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set

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

#
# Layered filesystems
#
# CONFIG_UNION_FS is not set

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
# CONFIG_NFSD is not set
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
# CONFIG_SUNRPC_BIND34 is not set
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_SUN_PARTITION=y
CONFIG_NLS=m
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
# CONFIG_DLM is not set
CONFIG_INSTRUMENTATION=y
# CONFIG_PROFILING is not set
# CONFIG_KPROBES is not set
# CONFIG_MARKERS is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_PAGE_OWNER is not set
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_SHIRQ=y
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_SLUB_DEBUG_ON is not set
CONFIG_DEBUG_PREEMPT=y
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
# CONFIG_RT_MUTEX_TESTER is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_LOCKDEP is not set
CONFIG_TRACE_IRQFLAGS=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
CONFIG_FRAME_POINTER=y
# CONFIG_PROFILE_LIKELY is not set
CONFIG_FORCED_INLINING=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_DEBUG_SYNCHRO_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_SAMPLES is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_DCFLUSH is not set
# CONFIG_STACK_DEBUG is not set
# CONFIG_DEBUG_BOOTMEM is not set
# CONFIG_DEBUG_PAGEALLOC is not set

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_MANAGER=y
# CONFIG_CRYPTO_HMAC is not set
# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
CONFIG_CRYPTO_GF128MUL=y
# CONFIG_CRYPTO_ECB is not set
CONFIG_CRYPTO_CBC=y
# CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_XTS is not set
# CONFIG_CRYPTO_CTR is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_AES is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_ARC4 is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_MICHAEL_MIC is not set
CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
# CONFIG_CRYPTO_AUTHENC is not set
CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_HIFN_795X is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y

#106 lore raw

Re: 2.6.24-rc4-mm1: some issues on sparc64

Quoted 4 lines · On Sat, 8 Dec 2007 19:20:28 +0100 Mariusz Kozlowski <[email protected]>…

The box is sun ultra 60 (dual sparc64). This was caught when
system (gentoo) was emerging some package.

[27006.402237] kernel BUG at fs/jbd/transaction.c:1894!

That's

        J_ASSERT_BH(bh, !buffer_jbddirty(bh));

at the end of journal_unmap_buffer().

I don't recall seeing that before and I can't think of anything we've done recently which could cause it, sorry.

Quoted 4 lines
[27006.402268]               \|/ ____ \|/
[27006.402274]               "@'/ .. \`@"
[27006.402279]               /_| \__/ |_\
[27006.402285]                  \__U_/

x86 needs that.

Quoted 27 lines
[27006.402298] rm(4713): Kernel bad sw trap 5 [#1]
[27006.402538] TSTATE: 0000009911009605 TPC: 000000000053b1cc TNPC: 000000000053b1d0 Y: 00000000    Not tainted
[27006.402579] TPC: <journal_invalidatepage+0x3d4/0x460>
[27006.402593] g0: 0000000000000002 g1: 0000000000000000 g2: 0000000000000001 g3: fffff800a7d90000
[27006.402610] g4: fffff800b54ea460 g5: fffff8007f832000 g6: fffff800a7d90000 g7: 000000000076d868
[27006.402627] o0: 000000000072b660 o1: 0000000000000766 o2: 0000000000000002 o3: 0000000000000001
[27006.402644] o4: 00000000008a2940 o5: 0000000000000000 sp: fffff800a7d92c91 ret_pc: 000000000053b1c4
[27006.402665] RPC: <journal_invalidatepage+0x3cc/0x460>
[27006.402679] l0: fffff800afbf4070 l1: 000000000069511c l2: 0000000000002000 l3: 0000000000000000
[27006.402696] l4: 0000000000000001 l5: fffff800ba4cb730 l6: fffff800bf1cd338 l7: 0000000000000001
[27006.402713] i0: fffff800bf1cd000 i1: 0000000201db2708 i2: 0000000000000000 i3: 0000000000727000
[27006.402730] i4: 0000000000200000 i5: fffff800bf1cd028 i6: fffff800a7d92d51 i7: 0000000000529254
[27006.402763] I7: <ext3_invalidatepage+0x3c/0x60>
[27006.402776] Caller[0000000000529254]: ext3_invalidatepage+0x3c/0x60
[27006.402800] Caller[00000000004b22fc]: do_invalidatepage+0x24/0x60
[27006.402826] Caller[00000000004b29c4]: truncate_complete_page+0x6c/0x80
[27006.402849] Caller[00000000004b2a6c]: truncate_inode_pages_range+0x94/0x440
[27006.402872] Caller[00000000004b2e2c]: truncate_inode_pages+0x14/0x20
[27006.402894] Caller[0000000000529888]: ext3_delete_inode+0x10/0x160
[27006.402918] Caller[00000000004e7ca0]: generic_delete_inode+0x88/0x120
[27006.402949] Caller[00000000004e7e60]: generic_drop_inode+0x128/0x1c0
[27006.402971] Caller[00000000004e75d4]: iput+0x7c/0xa0
[27006.402992] Caller[00000000004dd680]: do_unlinkat+0x108/0x1a0
[27006.403024] Caller[00000000004dd884]: sys_unlinkat+0x2c/0x60
[27006.403047] Caller[00000000004062d4]: linux_sparc_syscall32+0x3c/0x40
[27006.403081] Caller[00000000f7e7d0ec]: 0xf7e7d0f4
[27006.403102] Instruction DUMP: 92102766  7ffbbeaf  90122260 <91d02005> 92102780  7ffbbeab  90122260  91d02005  7ffbbea8
#79 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 1 line · Ingo Molnar

i'm wondering why it had no effect now

kernel/cpu.c +7 -1
index e0d3a4f..a46c252 100644
@@ -47,15 +47,21 @@ void __init cpu_hotplug_init(void)
 }
 
 #ifdef CONFIG_HOTPLUG_CPU
-
+#include <asm/io.h>
 void get_online_cpus(void)
 {
+       outb(0x20, 0x80);
        might_sleep();
+       outb(0x21, 0x80);
        if (cpu_hotplug.active_writer == current)
                return;
+       outb(0x22, 0x80);
        mutex_lock(&cpu_hotplug.lock);
+       outb(0x23, 0x80);
        cpu_hotplug.refcount++;
+       outb(0x24, 0x80);
        mutex_unlock(&cpu_hotplug.lock);
+       outb(0x25, 0x80);
 
 }
 EXPORT_SYMBOL_GPL(get_online_cpus);

produces 0x22 on the LCD (called from watchdog kthread).

Going to catch some sleep,
--js

#80 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 1 line · Ingo Molnar

i'm wondering why it had no effect now

kernel/cpu.c +7 -1
index e0d3a4f..a46c252 100644
@@ -47,15 +47,21 @@ void __init cpu_hotplug_init(void)
 }
 
 #ifdef CONFIG_HOTPLUG_CPU
-
+#include <asm/io.h>
 void get_online_cpus(void)
 {
+       outb(0x20, 0x80);
        might_sleep();
+       outb(0x21, 0x80);
        if (cpu_hotplug.active_writer == current)
                return;
+       outb(0x22, 0x80);
        mutex_lock(&cpu_hotplug.lock);
+       outb(0x23, 0x80);
        cpu_hotplug.refcount++;
+       outb(0x24, 0x80);
        mutex_unlock(&cpu_hotplug.lock);
+       outb(0x25, 0x80);
 
 }
 EXPORT_SYMBOL_GPL(get_online_cpus);

produces 0x22 on the LCD (called from watchdog kthread).

Going to catch some sleep,
--js

#81 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 8 lines · Jiri Slaby
Quoted 1 line · Ingo Molnar

i'm wondering why it had no effect now

kernel/cpu.c +0 -0
index e0d3a4f..a46c252 100644

kernel/cpu.c void __init cpu_hotplug_init(void) · line 55

Quoted 10 lines
kernel/cpu.c +3 -1
@@ -47,15 +47,21 @@ void __init cpu_hotplug_init(void)
 }
 
 #ifdef CONFIG_HOTPLUG_CPU
-
+#include <asm/io.h>
 void get_online_cpus(void)
 {
+       outb(0x20, 0x80);
        might_sleep();
+       outb(0x21, 0x80);

ah. If you comment out get_online_cpus()/put_online_cpus() from kernel/softlockup.c, does it start working?

Gautham, any ideas?

Ingo

#82 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Jiri Slaby
Quoted 8 lines · Jiri Slaby
Quoted 1 line · Ingo Molnar

i'm wondering why it had no effect now

kernel/cpu.c +0 -0
index e0d3a4f..a46c252 100644

kernel/cpu.c void __init cpu_hotplug_init(void) · line 55

Quoted 10 lines
kernel/cpu.c +3 -1
@@ -47,15 +47,21 @@ void __init cpu_hotplug_init(void)
 }
 
 #ifdef CONFIG_HOTPLUG_CPU
-
+#include <asm/io.h>
 void get_online_cpus(void)
 {
+       outb(0x20, 0x80);
        might_sleep();
+       outb(0x21, 0x80);

ah. If you comment out get_online_cpus()/put_online_cpus() from kernel/softlockup.c, does it start working?

Gautham, any ideas?

Ingo

#77 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Jiri Slaby
Quoted 6 lines · Jiri Slaby
Quoted 2 lines · Ingo Molnar

i'm wondering why it had no effect now - the new code is in essence a NOP over what we had.

Maybe a dumb question. Why those changes in process_32.c in the patch and not in process_64.c?

not a dumb question at all - i forgot about it. Find the updated patch below.

( sidenote: this shows the x86 unification concept in action. You
noticed the missing _64.c probably because you saw a _32.c file modified in the patch and the rule is that if we modify a _32.c file then the matching _64.c file needs to be updated too. If this had been an old-style pre-unification arch/i386/kernel/process.c file you'd not have been able to tell this from just looking at the patch file - and we'd possibly have missed to include a fix on the 64-bit side. With the unification of files we are realizing it how many times this happened in the past (and went unnoticed). )

Ingo

--------------------->
Subject: x86: idle wakeup event in the HLT loop
From: Ingo Molnar <[email protected]>

do a proper idle-wakeup event on HLT as well - some CPUs stop the TSC in HLT too, not just when going through the ACPI methods.

(the ACPI idle code already does this.)

[ update the 64-bit side too, as noticed by Jiri Slaby. ]

---
 arch/x86/kernel/process_32.c |   15 ++++++++++++---
 arch/x86/kernel/process_64.c |   13 ++++++++++---
 2 files changed, 22 insertions(+), 6 deletions(-)
arch/x86/kernel/process_32.c +12 -3
Index: linux-x86.q/arch/x86/kernel/process_32.c
===================================================================
@@ -113,10 +113,19 @@ void default_idle(void)
 		smp_mb();
 
 		local_irq_disable();
-		if (!need_resched())
+		if (!need_resched()) {
+			ktime_t t0, t1;
+			u64 t0n, t1n;
+
+			t0 = ktime_get();
+			t0n = ktime_to_ns(t0);
 			safe_halt();	/* enables interrupts racelessly */
-		else
-			local_irq_enable();
+			local_irq_disable();
+			t1 = ktime_get();
+			t1n = ktime_to_ns(t1);
+			sched_clock_idle_wakeup_event(t1n - t0n);
+		}
+		local_irq_enable();
 		current_thread_info()->status |= TS_POLLING;
 	} else {
 		/* loop is done by the caller */
arch/x86/kernel/process_64.c +10 -3
Index: linux-x86.q/arch/x86/kernel/process_64.c
===================================================================
@@ -116,9 +116,16 @@ static void default_idle(void)
 	smp_mb();
 	local_irq_disable();
 	if (!need_resched()) {
-		/* Enables interrupts one instruction before HLT.
-		   x86 special cases this so there is no race. */
-		safe_halt();
+		ktime_t t0, t1;
+		u64 t0n, t1n;
+
+		t0 = ktime_get();
+		t0n = ktime_to_ns(t0);
+		safe_halt();	/* enables interrupts racelessly */
+		local_irq_disable();
+		t1 = ktime_get();
+		t1n = ktime_to_ns(t1);
+		sched_clock_idle_wakeup_event(t1n - t0n);
 	} else
 		local_irq_enable();
 	current_thread_info()->status |= TS_POLLING;
#78 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Jiri Slaby
Quoted 6 lines · Jiri Slaby
Quoted 2 lines · Ingo Molnar

i'm wondering why it had no effect now - the new code is in essence a NOP over what we had.

Maybe a dumb question. Why those changes in process_32.c in the patch and not in process_64.c?

not a dumb question at all - i forgot about it. Find the updated patch below.

( sidenote: this shows the x86 unification concept in action. You
noticed the missing _64.c probably because you saw a _32.c file modified in the patch and the rule is that if we modify a _32.c file then the matching _64.c file needs to be updated too. If this had been an old-style pre-unification arch/i386/kernel/process.c file you'd not have been able to tell this from just looking at the patch file - and we'd possibly have missed to include a fix on the 64-bit side. With the unification of files we are realizing it how many times this happened in the past (and went unnoticed). )

Ingo

--------------------->
Subject: x86: idle wakeup event in the HLT loop
From: Ingo Molnar <[email protected]>

do a proper idle-wakeup event on HLT as well - some CPUs stop the TSC in HLT too, not just when going through the ACPI methods.

(the ACPI idle code already does this.)

[ update the 64-bit side too, as noticed by Jiri Slaby. ]

---
 arch/x86/kernel/process_32.c |   15 ++++++++++++---
 arch/x86/kernel/process_64.c |   13 ++++++++++---
 2 files changed, 22 insertions(+), 6 deletions(-)
arch/x86/kernel/process_32.c +12 -3
Index: linux-x86.q/arch/x86/kernel/process_32.c
===================================================================
@@ -113,10 +113,19 @@ void default_idle(void)
 		smp_mb();
 
 		local_irq_disable();
-		if (!need_resched())
+		if (!need_resched()) {
+			ktime_t t0, t1;
+			u64 t0n, t1n;
+
+			t0 = ktime_get();
+			t0n = ktime_to_ns(t0);
 			safe_halt();	/* enables interrupts racelessly */
-		else
-			local_irq_enable();
+			local_irq_disable();
+			t1 = ktime_get();
+			t1n = ktime_to_ns(t1);
+			sched_clock_idle_wakeup_event(t1n - t0n);
+		}
+		local_irq_enable();
 		current_thread_info()->status |= TS_POLLING;
 	} else {
 		/* loop is done by the caller */
arch/x86/kernel/process_64.c +10 -3
Index: linux-x86.q/arch/x86/kernel/process_64.c
===================================================================
@@ -116,9 +116,16 @@ static void default_idle(void)
 	smp_mb();
 	local_irq_disable();
 	if (!need_resched()) {
-		/* Enables interrupts one instruction before HLT.
-		   x86 special cases this so there is no race. */
-		safe_halt();
+		ktime_t t0, t1;
+		u64 t0n, t1n;
+
+		t0 = ktime_get();
+		t0n = ktime_to_ns(t0);
+		safe_halt();	/* enables interrupts racelessly */
+		local_irq_disable();
+		t1 = ktime_get();
+		t1n = ktime_to_ns(t1);
+		sched_clock_idle_wakeup_event(t1n - t0n);
 	} else
 		local_irq_enable();
 	current_thread_info()->status |= TS_POLLING;
maintainer
#107 lore raw

Re: 2.6.24-rc4-mm1: some issues on sparc64

In reply to Andrew Morton

From: Andrew Morton <[email protected]>
Date: Sat, 8 Dec 2007 10:22:39 -0800

Quoted 8 lines

That's

        J_ASSERT_BH(bh, !buffer_jbddirty(bh));

at the end of journal_unmap_buffer().

I don't recall seeing that before and I can't think of anything we've done recently which could cause it, sorry.

If the per-cpu data patches are in the -mm tree that is the first place I would start looking at for possible cause.

#108 lore raw

Re: 2.6.24-rc4-mm1: some issues on sparc64

Quoted 7 lines · On Sun, 09 Dec 2007 00:45:17 -0800 (PST) David Miller <[email protected]>…

From: Andrew Morton <[email protected]>
Date: Sat, 8 Dec 2007 10:22:39 -0800

Quoted 4 lines

That's

        J_ASSERT_BH(bh, !buffer_jbddirty(bh));
Quoted 7 lines
Quoted 4 lines

at the end of journal_unmap_buffer().

I don't recall seeing that before and I can't think of anything we've done recently which could cause it, sorry.

If the per-cpu data patches are in the -mm tree that is the first place I would start looking at for possible cause.

They aren't. The dust hadn't settled enough on those when Christoph shot through on vacation.

#83 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 2 lines · Ingo Molnar

ah. If you comment out get_online_cpus()/put_online_cpus() from kernel/softlockup.c, does it start working?

Yes indeed. (the process_64 part of the previous patch applied, but I think it has no effect to this issue?)

#84 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 2 lines · Ingo Molnar

ah. If you comment out get_online_cpus()/put_online_cpus() from kernel/softlockup.c, does it start working?

Yes indeed. (the process_64 part of the previous patch applied, but I think it has no effect to this issue?)

#59 lore raw
In reply to Dave Young

2007/12/7, Dave Young <[email protected]>:

Quoted 116 lines

Hi,

2.6.24-rc4-mm1 build failed at drivers/net/wireless/ath5k/base.c for some inline functions like this:
drivers/net/wireless/ath5k/base.c:292: sorry, unimplemented: inlining failed in call to 'ath5k_extend_tsf': function body not available

fix it with adjust the order of inline function body.

---
drivers/net/wireless/ath5k/base.c | 67 ++++++++++++++++----------------------

1 file changed, 29 insertions(+), 38 deletions(-)

diff -upr linux/drivers/net/wireless/ath5k/base.c linux.new/drivers/net/wireless/ath5k/base.c

drivers/net/wireless/ath5k/base.c 2007-12-07 10:01:49.000000000 +0800 renamed from drivers/net/wireless/ath5k/base.c 2007-12-07 10:01:42.000000000 +0800 +29 -32
@@ -250,8 +250,19 @@ static int         ath5k_rxbuf_setup(struct ath
 static int     ath5k_txbuf_setup(struct ath5k_softc *sc,
                                struct ath5k_buf *bf,
                                struct ieee80211_tx_control *ctl);
+
 static inline void ath5k_txbuf_free(struct ath5k_softc *sc,
-                               struct ath5k_buf *bf);
+                               struct ath5k_buf *bf)
+{
+       BUG_ON(!bf);
+       if (!bf->skb)
+               return;
+       pci_unmap_single(sc->pdev, bf->skbaddr, bf->skb->len,
+                       PCI_DMA_TODEVICE);
+       dev_kfree_skb(bf->skb);
+       bf->skb = NULL;
+}
+
 /* Queues setup */
 static struct  ath5k_txq *ath5k_txq_setup(struct ath5k_softc *sc,
                                int qtype, int subtype);
@@ -278,14 +289,29 @@ static int        ath5k_beacon_setup(struct at
                                struct ieee80211_tx_control *ctl);
 static void    ath5k_beacon_send(struct ath5k_softc *sc);
 static void    ath5k_beacon_config(struct ath5k_softc *sc);
-static inline u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp);
+
+static inline u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp)
+{
+       u64 tsf = ath5k_hw_get_tsf64(ah);
+
+       if ((tsf & 0x7fff) < rstamp)
+               tsf -= 0x8000;
+
+       return (tsf & ~0x7fff) | rstamp;
+}
+
 /* Interrupt handling */
 static int     ath5k_init(struct ath5k_softc *sc);
 static int     ath5k_stop_locked(struct ath5k_softc *sc);
 static int     ath5k_stop_hw(struct ath5k_softc *sc);
 static irqreturn_t ath5k_intr(int irq, void *dev_id);
 static void    ath5k_tasklet_reset(unsigned long data);
-static inline void ath5k_update_txpow(struct ath5k_softc *sc);
+
+static inline void ath5k_update_txpow(struct ath5k_softc *sc)
+{
+       ath5k_hw_set_txpower_limit(sc->ah, 0);
+}
+
 static void    ath5k_calibrate(unsigned long data);
 /* LED functions */
 static void    ath5k_led_off(unsigned long data);
@@ -1341,21 +1367,6 @@ err_unmap:
        return ret;
 }
 
-static inline void
-ath5k_txbuf_free(struct ath5k_softc *sc, struct ath5k_buf *bf)
-{
-       BUG_ON(!bf);
-       if (!bf->skb)
-               return;
-       pci_unmap_single(sc->pdev, bf->skbaddr, bf->skb->len,
-                       PCI_DMA_TODEVICE);
-       dev_kfree_skb(bf->skb);
-       bf->skb = NULL;
-}
-
-
-
-
 /**************\
 * Queues setup *
 \**************/
@@ -2046,20 +2057,6 @@ ath5k_beacon_config(struct ath5k_softc *
 #undef TSF_TO_TU
 }
 
-static inline
-u64 ath5k_extend_tsf(struct ath5k_hw *ah, u32 rstamp)
-{
-       u64 tsf = ath5k_hw_get_tsf64(ah);
-
-       if ((tsf & 0x7fff) < rstamp)
-               tsf -= 0x8000;
-
-       return (tsf & ~0x7fff) | rstamp;
-}
-
-
-
-
 /********************\
 * Interrupt handling *
 \********************/
@@ -2295,12 +2292,6 @@ ath5k_tasklet_reset(unsigned long data)
        ath5k_reset(sc->hw);
 }

drivers/net/wireless/ath5k/base.c 2007-12-07 10:01:49.000000000 +0800 ath5k_tasklet_reset(unsigned long data) · line 2297

Quoted 10 lines
drivers/net/wireless/ath5k/base.c 2007-12-07 10:01:49.000000000 +0800 renamed from drivers/net/wireless/ath5k/base.c 2007-12-07 10:01:42.000000000 +0800 +0 -6
 
-static inline void
-ath5k_update_txpow(struct ath5k_softc *sc)
-{
-       ath5k_hw_set_txpower_limit(sc->ah, 0);
-}
-
 /*
  * Periodically recalibrate the PHY to account
  * for temperature/environment changes.

We'll change their order in the code, plz keep prototype declarations clean. I'll submit a patch asap on this.

Signature · 3 lines
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick
#58 lore raw
In reply to Luis R. Rodriguez
Quoted 11 lines · Luis R. Rodriguez
Quoted 8 lines · Dave Young

Hi,

2.6.24-rc4-mm1 build failed at drivers/net/wireless/ath5k/base.c for some inline functions like this:
drivers/net/wireless/ath5k/base.c:292: sorry, unimplemented: inlining failed in call to 'ath5k_extend_tsf': function body not available

fix it with adjust the order of inline function body.

Thanks.

Quoted 2 lines

Thanks Dave. What version of gcc were you using? I haven't run into this.

gcc 3.4.6

Quoted 4 lines

BTW, nothing new was added in this patch, things were just shifted, but even that may be copyrightable. Is it fair to assume you are licensing these changes under the same license the file is in?

Ok, I don't care.

Quoted 11 lines

For this file we'd usually use:

Changes-licensed-under: 3-clause-BSD

For future reference:

http://linuxwireless.org/en/developers/Documentation/SubmittingPatches#Changes-licensed-undertag

Luis

#85 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 25 lines · Ingo Molnar
Quoted 8 lines · Jiri Slaby
Quoted 1 line · Ingo Molnar

i'm wondering why it had no effect now

kernel/cpu.c +0 -0
index e0d3a4f..a46c252 100644

kernel/cpu.c void __init cpu_hotplug_init(void) · line 55

Quoted 10 lines
kernel/cpu.c +3 -1
@@ -47,15 +47,21 @@ void __init cpu_hotplug_init(void)
 }
 
 #ifdef CONFIG_HOTPLUG_CPU
-
+#include <asm/io.h>
 void get_online_cpus(void)
 {
+       outb(0x20, 0x80);
        might_sleep();
+       outb(0x21, 0x80);

ah. If you comment out get_online_cpus()/put_online_cpus() from kernel/softlockup.c, does it start working?

Quoted 1 line

Gautham, any ideas?

Hi Ingo,

Quoted 1 line

From the code I fail to see how get_online_cpus() can help us.

+ /*
+ * Only do the hung-tasks check on one CPU:
+ */
+ get_online_cpus();
+ check_cpu = any_online_cpu(cpu_online_map);
+ put_online_cpus();

check_cpu can go offline here, no?

+
+ if (this_cpu != check_cpu)
+ continue;
+
+ if (sysctl_hung_task_timeout_secs)
+ check_hung_uninterruptible_tasks(this_cpu);

Further more this can cause a deadlock since we're calling get_online_cpus() from the watchdog thread's context, which is going to be kthread_stop'ed from a cpu-hotplug context. This is what I think was happening in the case reported by Jiri.

Please find the patch below.

Thanks and Regards
gautham.

commit 15bfb662b35c609490185fba2fd4713d230b9374

Author: Gautham R Shenoy <[email protected]>
Date:   Mon Dec 10 13:41:45 2007 +0530

softlockup: remove get_online_cpus() which doesn't help here.

The get_online_cpus() protection seems to be bogus
in kernel/softlockup.c as cpu cached in check_cpu can go offline once we do a put_online_cpus().

This can also cause deadlock during a cpu offline as follows:

WATCHDOG_THREAD: OFFLINE_CPU:

				mutex_down(&cpu_hotplug.lock);
				/* All subsequent get_online_cpus
				 * will be blocked till we're
				 * done with this cpu-hotplug
				 * operation.
				 */

get_online_cpus();
/* watchdog is blocked
Thus we cannot
go further until
the cpu-hotplug
operation completes
*/
CPU_DEAD:
kthread_stop(watchdog_thread);

/* we're trying to stop a
* thread which is blocked
* waiting for us to finish. *
* Since we cannot finish until
* the thread stops, we deadlock here! */

Cc Ingo Molnar <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Arjan van de Van <[email protected]>
Cc Jiri Slaby <[email protected]>
kernel/softlockup.c +0 -2
index e50b44a..576eb9c 100644
@@ -219,9 +219,7 @@ static int watchdog(void *__bind_cpu)
 		/*
 		 * Only do the hung-tasks check on one CPU:
 		 */
-		get_online_cpus();
 		check_cpu = any_online_cpu(cpu_online_map);
-		put_online_cpus();
 
 		if (this_cpu != check_cpu)
 			continue;
Signature · 5 lines
Gautham R Shenoy
Linux Technology Center
IBM India.
"Freedom comes with a price tag of responsibility, which is still a bargain,
because Freedom is priceless!"
Tested-by
#86 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 38 lines · Gautham R Shenoy

commit 15bfb662b35c609490185fba2fd4713d230b9374

Author: Gautham R Shenoy <[email protected]>
Date:   Mon Dec 10 13:41:45 2007 +0530

softlockup: remove get_online_cpus() which doesn't help here.

The get_online_cpus() protection seems to be bogus
in kernel/softlockup.c as cpu cached in check_cpu can go offline once we do a put_online_cpus().

This can also cause deadlock during a cpu offline as follows:

WATCHDOG_THREAD: OFFLINE_CPU:

				mutex_down(&cpu_hotplug.lock);
				/* All subsequent get_online_cpus
				 * will be blocked till we're
				 * done with this cpu-hotplug
				 * operation.
				 */

get_online_cpus();
/* watchdog is blocked
Thus we cannot
go further until
the cpu-hotplug
operation completes
*/
CPU_DEAD:
kthread_stop(watchdog_thread);

/* we're trying to stop a
* thread which is blocked
* waiting for us to finish. *
* Since we cannot finish until
* the thread stops, we deadlock here! */

Quoted 5 lines
Cc Ingo Molnar <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Arjan van de Van <[email protected]>
Cc Jiri Slaby <[email protected]>
Quoted 15 lines
kernel/softlockup.c +0 -2
index e50b44a..576eb9c 100644
@@ -219,9 +219,7 @@ static int watchdog(void *__bind_cpu)
 		/*
 		 * Only do the hung-tasks check on one CPU:
 		 */
-		get_online_cpus();
 		check_cpu = any_online_cpu(cpu_online_map);
-		put_online_cpus();
 
 		if (this_cpu != check_cpu)
 			continue;
Tested-by
#87 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Gautham R Shenoy
Quoted 38 lines · Gautham R Shenoy

commit 15bfb662b35c609490185fba2fd4713d230b9374

Author: Gautham R Shenoy <[email protected]>
Date:   Mon Dec 10 13:41:45 2007 +0530

softlockup: remove get_online_cpus() which doesn't help here.

The get_online_cpus() protection seems to be bogus
in kernel/softlockup.c as cpu cached in check_cpu can go offline once we do a put_online_cpus().

This can also cause deadlock during a cpu offline as follows:

WATCHDOG_THREAD: OFFLINE_CPU:

				mutex_down(&cpu_hotplug.lock);
				/* All subsequent get_online_cpus
				 * will be blocked till we're
				 * done with this cpu-hotplug
				 * operation.
				 */

get_online_cpus();
/* watchdog is blocked
Thus we cannot
go further until
the cpu-hotplug
operation completes
*/
CPU_DEAD:
kthread_stop(watchdog_thread);

/* we're trying to stop a
* thread which is blocked
* waiting for us to finish. *
* Since we cannot finish until
* the thread stops, we deadlock here! */

Quoted 5 lines
Cc Ingo Molnar <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Arjan van de Van <[email protected]>
Cc Jiri Slaby <[email protected]>
Quoted 15 lines
kernel/softlockup.c +0 -2
index e50b44a..576eb9c 100644
@@ -219,9 +219,7 @@ static int watchdog(void *__bind_cpu)
 		/*
 		 * Only do the hung-tasks check on one CPU:
 		 */
-		get_online_cpus();
 		check_cpu = any_online_cpu(cpu_online_map);
-		put_online_cpus();
 
 		if (this_cpu != check_cpu)
 			continue;
#88 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 8 lines
Quoted 8 lines

softlockup: remove get_online_cpus() which doesn't help here.

The get_online_cpus() protection seems to be bogus in kernel/softlockup.c as cpu cached in check_cpu can go offline once we do a put_online_cpus().

This can also cause deadlock during a cpu offline as follows:

i'm wondering, what's the proper CPU-hotplug safe sequence here then? I'm picking a CPU number from cpu_online_map, and that CPU could go away while i'm still using it, right? What's saving us here?

Ingo

#98 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Gautham R Shenoy
Quoted 6 lines · Gautham R Shenoy

Further more this can cause a deadlock since we're calling get_online_cpus() from the watchdog thread's context, which is going to be kthread_stop'ed from a cpu-hotplug context. This is what I think was happening in the case reported by Jiri.

Please find the patch below.

thanks, and i've updated sched-devel.git.

Ingo

#99 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Gautham R Shenoy
Quoted 6 lines · Gautham R Shenoy

Further more this can cause a deadlock since we're calling get_online_cpus() from the watchdog thread's context, which is going to be kthread_stop'ed from a cpu-hotplug context. This is what I think was happening in the case reported by Jiri.

Please find the patch below.

thanks, and i've updated sched-devel.git.

Ingo

#61 lore raw

Re: [PATCH BUGFIX] hid: the `bit' in hidinput_mapping_quirks() is an out parameter

In reply to Fengguang Wu
Quoted 5 lines · Fengguang Wu

Fix a panic, by changing
hidinput_mapping_quirks(,, unsigned long *bit,)
to
hidinput_mapping_quirks(,, unsigned long **bit,)
The `bit' in this function is an out parameter.

Thanks for catching this, I will apply it to my tree.

Signature · 2 lines
Jiri Kosina
SUSE Labs
#89 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 7 lines · Ingo Molnar
Quoted 7 lines
Quoted 7 lines

softlockup: remove get_online_cpus() which doesn't help here.

The get_online_cpus() protection seems to be bogus in kernel/softlockup.c as cpu cached in check_cpu can go offline once we do a put_online_cpus().

Quoted 5 lines
Quoted 1 line
Quoted 1 line

This can also cause deadlock during a cpu offline as follows:

i'm wondering, what's the proper CPU-hotplug safe sequence here then? I'm picking a CPU number from cpu_online_map, and that CPU could go away while i'm still using it, right? What's saving us here?

In this particular case, we are trying to see if any task on a particular cpu has not been scheduled for a really long time. If we do this check on a cpu which has gone offline, then
a) If the tasks have not been migrated on to another cpu yet, we will still perform that check and yell if something has been holding any task for a sufficiently long time.
b) If the tasks have been migrated off, then we have nothing to check.

However, if we still want that particular cpu to not go offline during the check, then could we use the following patch

commit a49736844717e00f7a37c96368cea8fec7eb31cf

Author: Gautham R Shenoy <[email protected]>
Date:   Mon Dec 10 15:43:32 2007 +0530

CPU-Hotplug: Add try_get_online_cpus()

Add the fastpath code, try_get_online_cpus() which will return 1 once it has managed to hold the reference to the cpu_online_map if there are no threads trying to perform a cpu-hotplug.

Use the primitive in the softlockup code.

Cc Ingo Molnar <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Jiri Slaby <[email protected]>
include/linux/cpu.h +4 -0
index e0132cb..d236e21 100644
@@ -107,6 +107,7 @@ static inline void cpuhotplug_mutex_unlock(struct mutex *cpu_hp_mutex)
 }
 
 extern void get_online_cpus(void);
+extern int  try_get_online_cpus(void);
 extern void put_online_cpus(void);
 #define hotcpu_notifier(fn, pri) {				\
 	static struct notifier_block fn##_nb =			\
@@ -127,6 +128,9 @@ static inline void cpuhotplug_mutex_unlock(struct mutex *cpu_hp_mutex)
 
 #define get_online_cpus()	do { } while (0)
 #define put_online_cpus()	do { } while (0)
+static inline int try_get_online_cpus(void) 
+{ return 1;}
+
 #define hotcpu_notifier(fn, pri)	do { (void)(fn); } while (0)
 /* These aren't inline functions due to a GCC bug. */
 #define register_hotcpu_notifier(nb)	({ (void)(nb); 0; })
kernel/cpu.c +29 -0
index e0d3a4f..38537c9 100644
@@ -48,11 +48,35 @@ void __init cpu_hotplug_init(void)
 
 #ifdef CONFIG_HOTPLUG_CPU
 
+/*
+ * try_get_online_cpus(): Tries to hold a reference 
+ * to the cpu_online_map if no one is trying to perform 
+ * a cpu-hotplug operation. This is the fastpath code for
+ * get_online_cpus.
+ *
+ * Returns 1 if there is no cpu-hotplug operation
+ * currently in progress.
+ */
+int try_get_online_cpus(void)
+{
+	if(!cpu_hotplug.active_writer) {
+		cpu_hotplug.refcount++;
+		return 1;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(try_get_online_cpus);
+
 void get_online_cpus(void)
 {
 	might_sleep();
 	if (cpu_hotplug.active_writer == current)
 		return;
+	if (try_get_online_cpus())
+		return;
+
+	/* The writer exists, hence the slowpath */
 	mutex_lock(&cpu_hotplug.lock);
 	cpu_hotplug.refcount++;
 	mutex_unlock(&cpu_hotplug.lock);
@@ -120,6 +144,11 @@ static void cpu_hotplug_begin(void)
 	mutex_lock(&cpu_hotplug.lock);
 
 	cpu_hotplug.active_writer = current;
+	synchronize_sched();
+	/* New users of get_online_cpus() will see a non-NULL value
+	 * for cpu_hotplug.active_writer here and will take the slowpath
+	 */
+
 	add_wait_queue_exclusive(&cpu_hotplug.writer_queue, &wait);
 	while (cpu_hotplug.refcount) {
 		set_current_state(TASK_UNINTERRUPTIBLE);
kernel/softlockup.c +11 -6
index 576eb9c..cb0616d 100644
@@ -150,8 +150,8 @@ static void check_hung_task(struct task_struct *t, unsigned long now)
 	sysctl_hung_task_warnings--;
 
 	/*
-	 * Ok, the task did not get scheduled for more than 2 minutes,
-	 * complain:
+	 * Ok, the task did not get scheduled for more than
+	 * sysctl_hung_task_timeout_secs, complain:
 	 */
 	printk(KERN_ERR "INFO: task %s:%d blocked for more than "
 			"%ld seconds.\n", t->comm, t->pid,
@@ -216,16 +216,21 @@ static int watchdog(void *__bind_cpu)
 		touch_softlockup_watchdog();
 		msleep_interruptible(10000);
 
+		/* 
+		 * If a cpu-hotplug operation is in progress
+		 * we can come back later
+		 */
+		if (!try_get_online_cpus())
+			continue; 
 		/*
 		 * Only do the hung-tasks check on one CPU:
 		 */
 		check_cpu = any_online_cpu(cpu_online_map);
 
-		if (this_cpu != check_cpu)
-			continue;
-
-		if (sysctl_hung_task_timeout_secs)
+		if ((this_cpu == check_cpu) && sysctl_hung_task_timeout_secs)
 			check_hung_uninterruptible_tasks(this_cpu);
+
+		put_online_cpus();
 	}
 
 	return 0;
Quoted 2 lines

Ingo

Signature · 5 lines
Gautham R Shenoy
Linux Technology Center
IBM India.
"Freedom comes with a price tag of responsibility, which is still a bargain,
because Freedom is priceless!"
#90 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 7 lines · Ingo Molnar
Quoted 7 lines
Quoted 7 lines

softlockup: remove get_online_cpus() which doesn't help here.

The get_online_cpus() protection seems to be bogus in kernel/softlockup.c as cpu cached in check_cpu can go offline once we do a put_online_cpus().

Quoted 5 lines
Quoted 1 line
Quoted 1 line

This can also cause deadlock during a cpu offline as follows:

i'm wondering, what's the proper CPU-hotplug safe sequence here then? I'm picking a CPU number from cpu_online_map, and that CPU could go away while i'm still using it, right? What's saving us here?

In this particular case, we are trying to see if any task on a particular cpu has not been scheduled for a really long time. If we do this check on a cpu which has gone offline, then
a) If the tasks have not been migrated on to another cpu yet, we will still perform that check and yell if something has been holding any task for a sufficiently long time.
b) If the tasks have been migrated off, then we have nothing to check.

However, if we still want that particular cpu to not go offline during the check, then could we use the following patch

commit a49736844717e00f7a37c96368cea8fec7eb31cf

Author: Gautham R Shenoy <[email protected]>
Date:   Mon Dec 10 15:43:32 2007 +0530

CPU-Hotplug: Add try_get_online_cpus()

Add the fastpath code, try_get_online_cpus() which will return 1 once it has managed to hold the reference to the cpu_online_map if there are no threads trying to perform a cpu-hotplug.

Use the primitive in the softlockup code.

Cc Ingo Molnar <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Jiri Slaby <[email protected]>
include/linux/cpu.h +4 -0
index e0132cb..d236e21 100644
@@ -107,6 +107,7 @@ static inline void cpuhotplug_mutex_unlock(struct mutex *cpu_hp_mutex)
 }
 
 extern void get_online_cpus(void);
+extern int  try_get_online_cpus(void);
 extern void put_online_cpus(void);
 #define hotcpu_notifier(fn, pri) {				\
 	static struct notifier_block fn##_nb =			\
@@ -127,6 +128,9 @@ static inline void cpuhotplug_mutex_unlock(struct mutex *cpu_hp_mutex)
 
 #define get_online_cpus()	do { } while (0)
 #define put_online_cpus()	do { } while (0)
+static inline int try_get_online_cpus(void) 
+{ return 1;}
+
 #define hotcpu_notifier(fn, pri)	do { (void)(fn); } while (0)
 /* These aren't inline functions due to a GCC bug. */
 #define register_hotcpu_notifier(nb)	({ (void)(nb); 0; })
kernel/cpu.c +29 -0
index e0d3a4f..38537c9 100644
@@ -48,11 +48,35 @@ void __init cpu_hotplug_init(void)
 
 #ifdef CONFIG_HOTPLUG_CPU
 
+/*
+ * try_get_online_cpus(): Tries to hold a reference 
+ * to the cpu_online_map if no one is trying to perform 
+ * a cpu-hotplug operation. This is the fastpath code for
+ * get_online_cpus.
+ *
+ * Returns 1 if there is no cpu-hotplug operation
+ * currently in progress.
+ */
+int try_get_online_cpus(void)
+{
+	if(!cpu_hotplug.active_writer) {
+		cpu_hotplug.refcount++;
+		return 1;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(try_get_online_cpus);
+
 void get_online_cpus(void)
 {
 	might_sleep();
 	if (cpu_hotplug.active_writer == current)
 		return;
+	if (try_get_online_cpus())
+		return;
+
+	/* The writer exists, hence the slowpath */
 	mutex_lock(&cpu_hotplug.lock);
 	cpu_hotplug.refcount++;
 	mutex_unlock(&cpu_hotplug.lock);
@@ -120,6 +144,11 @@ static void cpu_hotplug_begin(void)
 	mutex_lock(&cpu_hotplug.lock);
 
 	cpu_hotplug.active_writer = current;
+	synchronize_sched();
+	/* New users of get_online_cpus() will see a non-NULL value
+	 * for cpu_hotplug.active_writer here and will take the slowpath
+	 */
+
 	add_wait_queue_exclusive(&cpu_hotplug.writer_queue, &wait);
 	while (cpu_hotplug.refcount) {
 		set_current_state(TASK_UNINTERRUPTIBLE);
kernel/softlockup.c +11 -6
index 576eb9c..cb0616d 100644
@@ -150,8 +150,8 @@ static void check_hung_task(struct task_struct *t, unsigned long now)
 	sysctl_hung_task_warnings--;
 
 	/*
-	 * Ok, the task did not get scheduled for more than 2 minutes,
-	 * complain:
+	 * Ok, the task did not get scheduled for more than
+	 * sysctl_hung_task_timeout_secs, complain:
 	 */
 	printk(KERN_ERR "INFO: task %s:%d blocked for more than "
 			"%ld seconds.\n", t->comm, t->pid,
@@ -216,16 +216,21 @@ static int watchdog(void *__bind_cpu)
 		touch_softlockup_watchdog();
 		msleep_interruptible(10000);
 
+		/* 
+		 * If a cpu-hotplug operation is in progress
+		 * we can come back later
+		 */
+		if (!try_get_online_cpus())
+			continue; 
 		/*
 		 * Only do the hung-tasks check on one CPU:
 		 */
 		check_cpu = any_online_cpu(cpu_online_map);
 
-		if (this_cpu != check_cpu)
-			continue;
-
-		if (sysctl_hung_task_timeout_secs)
+		if ((this_cpu == check_cpu) && sysctl_hung_task_timeout_secs)
 			check_hung_uninterruptible_tasks(this_cpu);
+
+		put_online_cpus();
 	}
 
 	return 0;
Quoted 2 lines

Ingo

Signature · 5 lines
Gautham R Shenoy
Linux Technology Center
IBM India.
"Freedom comes with a price tag of responsibility, which is still a bargain,
because Freedom is priceless!"
#91 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 5 lines · Gautham R Shenoy
Quoted 4 lines

i'm wondering, what's the proper CPU-hotplug safe sequence here then? I'm picking a CPU number from cpu_online_map, and that CPU could go away while i'm still using it, right? What's saving us here?

Quoted 7 lines

In this particular case, we are trying to see if any task on a particular cpu has not been scheduled for a really long time. If we do this check on a cpu which has gone offline, then a) If the tasks have not been migrated on to another cpu yet, we will still perform that check and yell if something has been holding any task for a sufficiently long time. b) If the tasks have been migrated off, then we have nothing to check.

say we've got 100 CPUs, so we've got 100 watchdog tasks running - one for each CPU. Checking for hung tasks is a global operation not a per-CPU operation (we iterate over the global tasklist), hence only one CPU should really be calling this function. That online-cpus logic achieves this by picking a single CPU. Perhaps it would be better to keep a hung_task_checker_cpu variable that is driven from a CPU-hotplug-down notifier? That way if a CPU is brought down we can update hung_task_checker_cpu to another, still-online CPU. (this would also be faster, because event-driven)

Ingo

#92 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Gautham R Shenoy
Quoted 5 lines · Gautham R Shenoy
Quoted 4 lines

i'm wondering, what's the proper CPU-hotplug safe sequence here then? I'm picking a CPU number from cpu_online_map, and that CPU could go away while i'm still using it, right? What's saving us here?

Quoted 7 lines

In this particular case, we are trying to see if any task on a particular cpu has not been scheduled for a really long time. If we do this check on a cpu which has gone offline, then a) If the tasks have not been migrated on to another cpu yet, we will still perform that check and yell if something has been holding any task for a sufficiently long time. b) If the tasks have been migrated off, then we have nothing to check.

say we've got 100 CPUs, so we've got 100 watchdog tasks running - one for each CPU. Checking for hung tasks is a global operation not a per-CPU operation (we iterate over the global tasklist), hence only one CPU should really be calling this function. That online-cpus logic achieves this by picking a single CPU. Perhaps it would be better to keep a hung_task_checker_cpu variable that is driven from a CPU-hotplug-down notifier? That way if a CPU is brought down we can update hung_task_checker_cpu to another, still-online CPU. (this would also be faster, because event-driven)

Ingo

#93 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 16 lines · Ingo Molnar
Quoted 5 lines · Gautham R Shenoy
Quoted 4 lines

i'm wondering, what's the proper CPU-hotplug safe sequence here then? I'm picking a CPU number from cpu_online_map, and that CPU could go away while i'm still using it, right? What's saving us here?

Quoted 7 lines

In this particular case, we are trying to see if any task on a particular cpu has not been scheduled for a really long time. If we do this check on a cpu which has gone offline, then a) If the tasks have not been migrated on to another cpu yet, we will still perform that check and yell if something has been holding any task for a sufficiently long time. b) If the tasks have been migrated off, then we have nothing to check.

Quoted 9 lines

say we've got 100 CPUs, so we've got 100 watchdog tasks running - one for each CPU. Checking for hung tasks is a global operation not a per-CPU operation (we iterate over the global tasklist), hence only one CPU should really be calling this function. That online-cpus logic achieves this by picking a single CPU. Perhaps it would be better to keep a hung_task_checker_cpu variable that is driven from a CPU-hotplug-down notifier? That way if a CPU is brought down we can update hung_task_checker_cpu to another, still-online CPU. (this would also be faster, because event-driven)

Do you mean something like this?

From: Gautham R Shenoy <[email protected]>

softlockup: update check_cpu during cpu-hotplug

Update the check_cpu value during a cpu-hotplug operation so that we don't check for hung tasks on a cpu which is about to go offline.

Cc Ingo Molnar <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc Jiri Slaby <[email protected]>

---

 kernel/softlockup.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)
kernel/softlockup.c +12 -2
index 576eb9c..b1a8c7c 100644
@@ -194,6 +194,9 @@ static void check_hung_uninterruptible_tasks(int this_cpu)
 	read_unlock(&tasklist_lock);
 }
 
+
+static int check_cpu = -1;
+
 /*
  * The watchdog thread - runs every second and touches the timestamp.
  */
@@ -219,8 +222,6 @@ static int watchdog(void *__bind_cpu)
 		/*
 		 * Only do the hung-tasks check on one CPU:
 		 */
-		check_cpu = any_online_cpu(cpu_online_map);
-
 		if (this_cpu != check_cpu)
 			continue;
 
@@ -255,6 +256,7 @@ cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
 		break;
 	case CPU_ONLINE:
 	case CPU_ONLINE_FROZEN:
+		check_cpu = any_online_cpu(cpu_online_map);
 		wake_up_process(per_cpu(watchdog_task, hotcpu));
 		break;
 #ifdef CONFIG_HOTPLUG_CPU
@@ -265,6 +267,14 @@ cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
 		/* Unbind so it can run.  Fall thru. */
 		kthread_bind(per_cpu(watchdog_task, hotcpu),
 			     any_online_cpu(cpu_online_map));
+	case CPU_DOWN_PREPARE:
+	case CPU_DOWN_PREPARE_FROZEN:
+		if (hotcpu == check_cpu) {
+			cpumask_t temp_cpu_online_map = cpu_online_map; 
+			cpu_clear(hotcpu, temp_cpu_online_map);
+			check_cpu = any_online_cpu(temp_cpu_online_map);
+		}
+		break;
 	case CPU_DEAD:
 	case CPU_DEAD_FROZEN:
 		p = per_cpu(watchdog_task, hotcpu);
Quoted 2 lines

Ingo

Thanks and Regards
gautham.

Signature · 5 lines
Gautham R Shenoy
Linux Technology Center
IBM India.
"Freedom comes with a price tag of responsibility, which is still a bargain,
because Freedom is priceless!"
#94 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 11 lines · Gautham R Shenoy
Quoted 9 lines

say we've got 100 CPUs, so we've got 100 watchdog tasks running - one for each CPU. Checking for hung tasks is a global operation not a per-CPU operation (we iterate over the global tasklist), hence only one CPU should really be calling this function. That online-cpus logic achieves this by picking a single CPU. Perhaps it would be better to keep a hung_task_checker_cpu variable that is driven from a CPU-hotplug-down notifier? That way if a CPU is brought down we can update hung_task_checker_cpu to another, still-online CPU. (this would also be faster, because event-driven)

Do you mean something like this?

yeah, thanks - queued it up.

one question:

kernel/softlockup.c cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) · line 261

Quoted 7 lines
kernel/softlockup.c +2 -0
+static int check_cpu = -1;
 
 	case CPU_ONLINE:
 	case CPU_ONLINE_FROZEN:
+		check_cpu = any_online_cpu(cpu_online_map);
 		wake_up_process(per_cpu(watchdog_task, hotcpu));
 		break;

do we bring the boot CPU online too - i.e. will check_cpu be properly initialized on UP too?

Ingo

#95 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Gautham R Shenoy
Quoted 11 lines · Gautham R Shenoy
Quoted 9 lines

say we've got 100 CPUs, so we've got 100 watchdog tasks running - one for each CPU. Checking for hung tasks is a global operation not a per-CPU operation (we iterate over the global tasklist), hence only one CPU should really be calling this function. That online-cpus logic achieves this by picking a single CPU. Perhaps it would be better to keep a hung_task_checker_cpu variable that is driven from a CPU-hotplug-down notifier? That way if a CPU is brought down we can update hung_task_checker_cpu to another, still-online CPU. (this would also be faster, because event-driven)

Do you mean something like this?

yeah, thanks - queued it up.

one question:

kernel/softlockup.c cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) · line 261

Quoted 7 lines
kernel/softlockup.c +2 -0
+static int check_cpu = -1;
 
 	case CPU_ONLINE:
 	case CPU_ONLINE_FROZEN:
+		check_cpu = any_online_cpu(cpu_online_map);
 		wake_up_process(per_cpu(watchdog_task, hotcpu));
 		break;

do we bring the boot CPU online too - i.e. will check_cpu be properly initialized on UP too?

Ingo

#96 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

Quoted 13 lines · Ingo Molnar
Quoted 10 lines · Gautham R Shenoy
Quoted 9 lines

say we've got 100 CPUs, so we've got 100 watchdog tasks running - one for each CPU. Checking for hung tasks is a global operation not a per-CPU operation (we iterate over the global tasklist), hence only one CPU should really be calling this function. That online-cpus logic achieves this by picking a single CPU. Perhaps it would be better to keep a hung_task_checker_cpu variable that is driven from a CPU-hotplug-down notifier? That way if a CPU is brought down we can update hung_task_checker_cpu to another, still-online CPU. (this would also be faster, because event-driven)

Quoted 3 lines
Quoted 1 line

Do you mean something like this?

yeah, thanks - queued it up.

Stupid me! I forgot to remove the local variable check_cpu in static int watchdog(void * __bind_cpu). Could you please correct it before applying?

Quoted 5 lines

one question:

Quoted 1 line

+static int check_cpu = -1;

Quoted 8 lines
Quoted 5 lines

case CPU_ONLINE:
case CPU_ONLINE_FROZEN:

+             check_cpu = any_online_cpu(cpu_online_map);
              wake_up_process(per_cpu(watchdog_task, hotcpu));
              break;

do we bring the boot CPU online too - i.e. will check_cpu be properly initialized on UP too?

Yes, it does.

Quoted 3 lines

Ingo

Thanks and Regards
gautham.

Signature · 5 lines
Gautham R Shenoy
Linux Technology Center
IBM India.
"Freedom comes with a price tag of responsibility, which is still a bargain,
because Freedom is priceless!"
#97 lore raw

Re: broken suspend (sched related) [Was: 2.6.24-rc4-mm1]

In reply to Ingo Molnar
Quoted 13 lines · Ingo Molnar
Quoted 10 lines · Gautham R Shenoy
Quoted 9 lines

say we've got 100 CPUs, so we've got 100 watchdog tasks running - one for each CPU. Checking for hung tasks is a global operation not a per-CPU operation (we iterate over the global tasklist), hence only one CPU should really be calling this function. That online-cpus logic achieves this by picking a single CPU. Perhaps it would be better to keep a hung_task_checker_cpu variable that is driven from a CPU-hotplug-down notifier? That way if a CPU is brought down we can update hung_task_checker_cpu to another, still-online CPU. (this would also be faster, because event-driven)

Quoted 3 lines
Quoted 1 line

Do you mean something like this?

yeah, thanks - queued it up.

Stupid me! I forgot to remove the local variable check_cpu in static int watchdog(void * __bind_cpu). Could you please correct it before applying?

Quoted 5 lines

one question:

Quoted 1 line

+static int check_cpu = -1;

Quoted 8 lines
Quoted 5 lines

case CPU_ONLINE:
case CPU_ONLINE_FROZEN:

+             check_cpu = any_online_cpu(cpu_online_map);
              wake_up_process(per_cpu(watchdog_task, hotcpu));
              break;

do we bring the boot CPU online too - i.e. will check_cpu be properly initialized on UP too?

Yes, it does.

Quoted 3 lines

Ingo

Thanks and Regards
gautham.

Signature · 5 lines
Gautham R Shenoy
Linux Technology Center
IBM India.
"Freedom comes with a price tag of responsibility, which is still a bargain,
because Freedom is priceless!"
#29 lore raw
In reply to Andrew Morton
Quoted 11 lines · Andrew Morton
Quoted 2 lines · On Thu, 06 Dec 2007 17:59:37 +1100 Reuben Farrelly…

This non fatal oops which I have just noticed may be related to this change then
- certainly looks networking related.

yep, but it isn't e1000. It's core TCP.

Quoted 2 lines
WARNING: at net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()

Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #1

Ilpo, Reuben's kernel is talking to you ;)

...Please try the patch below. Andrew, this probably fixes your problem (the packets <= tp->packets_out) as well.

Dave, please include this one to net-2.6.25.

Signature · 19 lines
 i.

--
[PATCH] [TCP]: Fix fack_count miscountings (multiple places)

1) Fack_count is set incorrectly if the highest sent skb is
already sacked (the skb->prev won't return it because it's on
the other list already). These manifest as fackets_out counting
error later on, the second-order effects are very hard to track,
so it may fix all out-standing TCP bug reports.

2) Prev == NULL check was wrong way around

3) Last skb's fack count was incorrectly skipped while() {} loop

Signed-off-by: Ilpo Järvinen <[email protected]>
---
 include/net/tcp.h |   22 ++++++++++++++++------
 1 files changed, 16 insertions(+), 6 deletions(-)
include/net/tcp.h +16 -6
index 9dbed0b..11a7e3e 100644
@@ -1337,10 +1337,20 @@ static inline struct sk_buff *tcp_send_head(struct sock *sk)
 static inline void tcp_advance_send_head(struct sock *sk, struct sk_buff *skb)
 {
 	struct sk_buff *prev = tcp_write_queue_prev(sk, skb);
+	unsigned int fc = 0;
+
+	if (prev == (struct sk_buff *)&sk->sk_write_queue)
+		prev = NULL;
+	else if (!tcp_skb_adjacent(sk, prev, skb))
+		prev = NULL;
 
-	if (prev != (struct sk_buff *)&sk->sk_write_queue)
-		TCP_SKB_CB(skb)->fack_count = TCP_SKB_CB(prev)->fack_count +
-					      tcp_skb_pcount(prev);
+	if ((prev == NULL) && !__tcp_write_queue_empty(sk, TCP_WQ_SACKED))
+		prev = __tcp_write_queue_tail(sk, TCP_WQ_SACKED);
+
+	if (prev != NULL)
+		fc = TCP_SKB_CB(prev)->fack_count + tcp_skb_pcount(prev);
+
+	TCP_SKB_CB(skb)->fack_count = fc;
 
 	sk->sk_send_head = tcp_write_queue_next(sk, skb);
 	if (sk->sk_send_head == (struct sk_buff *)&sk->sk_write_queue)
@@ -1464,7 +1474,7 @@ static inline struct sk_buff *__tcp_reset_fack_counts(struct sock *sk,
 {
 	unsigned int fc = 0;
 
-	if (prev == NULL)
+	if (prev != NULL)
 		fc = TCP_SKB_CB(*prev)->fack_count + tcp_skb_pcount(*prev);
 
 	BUG_ON((*prev != NULL) && !tcp_skb_adjacent(sk, *prev, skb));
@@ -1521,7 +1531,7 @@ static inline void tcp_reset_fack_counts(struct sock *sk, struct sk_buff *inskb)
 		skb[otherq] = prev->next;
 	}
 
-	while (skb[queue] != __tcp_write_queue_tail(sk, queue)) {
+	do {
 		/* Lazy find for the other queue */
 		if (skb[queue] == NULL) {
 			skb[queue] = tcp_write_queue_find(sk, TCP_SKB_CB(prev)->seq,
@@ -1535,7 +1545,7 @@ static inline void tcp_reset_fack_counts(struct sock *sk, struct sk_buff *inskb)
 			break;
 
 		queue ^= TCP_WQ_SACKED;
-	}
+	} while (skb[queue] != __tcp_write_queue_tail(sk, queue));
 }
 
 static inline void __tcp_insert_write_queue_after(struct sk_buff *skb,
Signature · 1 line
1.5.0.6
#109 lore raw
In reply to Andrew Morton
Quoted 6 lines · Andrew Morton

Temporarily at

http://userweb.kernel.org/~akpm/2.6.24-rc4-mm1/

Will appear later at

Quoted 7 lines

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

- Lots of device IDs have been removed from the e1000 driver and moved over to e1000e. So if your e1000 stops working, you forgot to set CONFIG_E1000E.

- The s390 build is still broken.

I'm seeing this most incredibly unhelpful (to debug) but fortunately
reproduceable problem (so far 4/4 times) on this -mm kernel. I thought this problem may have been related to another bug which I have reported (A TCP oops) but even after applying a likely fix for that I am still seeing this problem.

The machine boots up perfectly fine and runs good until I load it up.
In this case I can reliably cause this to occur by pulling a 3G ISO across the
GigE network from my Linux box to my PC. After maybe 50M or so, the console just displays this (ignore initial boot banner):

----------

* Starting local ... [ ok ]

This is tornado.reub.net (Linux x86_64 2.6.24-rc4-mm1) 00:24:01

tornado login: *** buffer overf

-------

Yes - after displaying the 'f' in what I can only guess is the word 'overflow',
the box spontaneously reboots. There is no further console output until it starts to come back up again.

The problem does not exist in 2.6.23-gentoo kernels nor in a vanilla 2.6.24-rc4-git6 (phew!), so this looks to be an -mm only problem at this stage.

I enabled a number of kernel debugging options but then I got no output at all when the machine crashed.

I'm at a bit of a loss as to which subsystem this might be coming from, so I'm not sure who to CC.

Box information is (still) up at http://www.reub.net/files/kernel/2.6.24-rc4-mm1/

Thanks,
Reuben

#30 lore raw
In reply to Ilpo Järvinen
Quoted 1 line · Ilpo Järvinen

Dave, please include this one to net-2.6.25.

...

Quoted 2 lines

--
[PATCH] [TCP]: Fix fack_count miscountings (multiple places)

I've better version of this coming up, so Dave please don't put this one into net-2.6.25 (noticed that both the original and the after patch code can get to an infinite loop and the new code is flawed in some rare cases still as well). I'll submit a better version soon.

Signature · 1 line
 i.
#110 lore raw
In reply to Reuben Farrelly
Quoted 45 lines · On Tue, 11 Dec 2007 01:48:39 +1100 Reuben Farrelly…
Quoted 6 lines · Andrew Morton

Temporarily at

http://userweb.kernel.org/~akpm/2.6.24-rc4-mm1/

Will appear later at

Quoted 7 lines

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

- Lots of device IDs have been removed from the e1000 driver and moved over to e1000e. So if your e1000 stops working, you forgot to set CONFIG_E1000E.

- The s390 build is still broken.

I'm seeing this most incredibly unhelpful (to debug) but fortunately reproduceable problem (so far 4/4 times) on this -mm kernel. I thought this problem may have been related to another bug which I have reported (A TCP oops) but even after applying a likely fix for that I am still seeing this problem.

The machine boots up perfectly fine and runs good until I load it up. In this case I can reliably cause this to occur by pulling a 3G ISO across the GigE network from my Linux box to my PC. After maybe 50M or so, the console just displays this (ignore initial boot banner):

----------

* Starting local ... [ ok ]

This is tornado.reub.net (Linux x86_64 2.6.24-rc4-mm1) 00:24:01

tornado login: *** buffer overf

-------

Yes - after displaying the 'f' in what I can only guess is the word 'overflow', the box spontaneously reboots. There is no further console output until it starts to come back up again.

The problem does not exist in 2.6.23-gentoo kernels nor in a vanilla 2.6.24-rc4-git6 (phew!), so this looks to be an -mm only problem at this stage.

Quoted 8 lines

I enabled a number of kernel debugging options but then I got no output at all when the machine crashed.

I'm at a bit of a loss as to which subsystem this might be coming from, so I'm not sure who to CC.

Box information is (still) up at http://www.reub.net/files/kernel/2.6.24-rc4-mm1/

hm. grepping around for "buffer overflow" doesn't turn up anything except in drivers which you won't be using on that machine.

I'd be suspecting networking, obviously. If you're feeling keen could you please grep a 2.6.24-rc4 tree and apply 2.6.24-rc4-mm1's origin.patch and git-net.patch and see if the bug is still present?

maintainer
#104 lore raw

Re: 2.6.24-rc4-mm1: undefined reference to `compat_sys_timerfd' on sparc64

In reply to Andrew Morton

From: Andrew Morton <[email protected]>
Date: Fri, 7 Dec 2007 16:08:00 -0800

Quoted 1 line

Or should this have been sys_nis_syscall()?

sys_nis_syscall() was used in cases on sparc where we wanted to get a log of invocations of unimplemented syscalls, as it aided debugging and anaylsis.

But the usefulness of such things I think is long gone, so what I'll likely do is kill the sys_nis_syscall stuff from the sparc ports.

#111 lore raw
In reply to Andrew Morton
Quoted 48 lines · Andrew Morton
Quoted 36 lines · On Tue, 11 Dec 2007 01:48:39 +1100 Reuben Farrelly…
Quoted 6 lines · Andrew Morton

Temporarily at

http://userweb.kernel.org/~akpm/2.6.24-rc4-mm1/

Will appear later at

Quoted 7 lines

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

- Lots of device IDs have been removed from the e1000 driver and moved over to e1000e. So if your e1000 stops working, you forgot to set CONFIG_E1000E.

- The s390 build is still broken.

I'm seeing this most incredibly unhelpful (to debug) but fortunately
reproduceable problem (so far 4/4 times) on this -mm kernel. I thought this problem may have been related to another bug which I have reported (A TCP oops) but even after applying a likely fix for that I am still seeing this problem.

The machine boots up perfectly fine and runs good until I load it up.
In this case I can reliably cause this to occur by pulling a 3G ISO across the
GigE network from my Linux box to my PC. After maybe 50M or so, the console just displays this (ignore initial boot banner):

----------

* Starting local ... [ ok ]

This is tornado.reub.net (Linux x86_64 2.6.24-rc4-mm1) 00:24:01

tornado login: *** buffer overf

-------

Yes - after displaying the 'f' in what I can only guess is the word 'overflow',
the box spontaneously reboots. There is no further console output until it starts to come back up again.

Quoted 8 lines

The problem does not exist in 2.6.23-gentoo kernels nor in a vanilla 2.6.24-rc4-git6 (phew!), so this looks to be an -mm only problem at this stage.

I enabled a number of kernel debugging options but then I got no output at all when the machine crashed.

I'm at a bit of a loss as to which subsystem this might be coming from, so I'm not sure who to CC.

Box information is (still) up at http://www.reub.net/files/kernel/2.6.24-rc4-mm1/

Quoted 6 lines

hm. grepping around for "buffer overflow" doesn't turn up anything except in drivers which you won't be using on that machine.

I'd be suspecting networking, obviously. If you're feeling keen could you please grep a 2.6.24-rc4 tree and apply 2.6.24-rc4-mm1's origin.patch and git-net.patch and see if the bug is still present?

No - seems to be fine with just origin.patch and git-net.patch.

Just for good measure I then reverted git-net.patch and applied git-netdev-all.patch instead, and still wasn't able to trigger the reboot or console message, no matter how hard I tried.

I guess for now I'll sit on it, and if it appears in the next -mm it'll probably annoy me enough and inspire me to dig deeper (or, "guess" deeper, given the lack of direction as to where to even begin).

Reuben

#112 lore raw
In reply to Andrew Morton
Quoted 3 lines

- Lots of device IDs have been removed from the e1000 driver and
moved over to e1000e. So if your e1000 stops working, you forgot to set CONFIG_E1000E.

Wouldn't it make sense to just default this to on if E1000 was on? As far as I can see that's not true, which will screwing everybody for no good reason (plus breaking all the automated testing, etc etc)? Much though I love random refactoring, it is fairly painful to just keep changing the names of things.

I can't see this compile failure posted anywhere:
http://test.kernel.org/results/IBM/126049/build/debug/stderr

arch/x86/vdso/vdso32/sigreturn.S: Assembler messages:
arch/x86/vdso/vdso32/sigreturn.S:23: Error: suffix or operands invalid for `pop'

arch/x86/vdso/vdso32/syscall.S:25: Error: suffix or operands invalid for `pop' make[1]: *** [arch/x86/vdso/vdso32/syscall.o] Error 1
make: *** [arch/x86/vdso] Error 2

Nor this one:
http://test.kernel.org/results/IBM/126096/build/debug/stderr

drivers/char/hvcs.c: In function ‘hvcs_open’:
drivers/char/hvcs.c:1180: error: wrong type argument to unary exclamation mark

#113 lore raw
Quoted 15 lines · On Tue, 11 Dec 2007 08:20:05 -0800 Martin Bligh wrote:
Quoted 3 lines

- Lots of device IDs have been removed from the e1000 driver and
moved over to e1000e. So if your e1000 stops working, you forgot to set CONFIG_E1000E.

Wouldn't it make sense to just default this to on if E1000 was on? As far as I can see that's not true, which will screwing everybody for no good reason (plus breaking all the automated testing, etc etc)? Much though I love random refactoring, it is fairly painful to just keep changing the names of things.

I can't see this compile failure posted anywhere:
http://test.kernel.org/results/IBM/126049/build/debug/stderr

Quoted 8 lines

arch/x86/vdso/vdso32/sigreturn.S: Assembler messages:
arch/x86/vdso/vdso32/sigreturn.S:23: Error: suffix or operands invalid for `pop'

arch/x86/vdso/vdso32/syscall.S:25: Error: suffix or operands invalid for `pop'
make[1]: *** [arch/x86/vdso/vdso32/syscall.o] Error 1
make: *** [arch/x86/vdso] Error 2

I see those on one build machine but not on another, so I thought that it was a tools issue...

Quoted 6 lines

Nor this one:
http://test.kernel.org/results/IBM/126096/build/debug/stderr

drivers/char/hvcs.c: In function ‘hvcs_open’:
drivers/char/hvcs.c:1180: error: wrong type argument to unary exclamation mark

See http://marc.info/?l=linux-kernel&m=119700448119646
for patches.

---
~Randy
Features and documentation: http://lwn.net/Articles/260136/

#114 lore raw
Quoted 6 lines
Quoted 6 lines

I can't see this compile failure posted anywhere:
http://test.kernel.org/results/IBM/126049/build/debug/stderr

arch/x86/vdso/vdso32/sigreturn.S: Assembler messages:
arch/x86/vdso/vdso32/sigreturn.S:23: Error: suffix or operands invalid for `pop'

Quoted 6 lines
Quoted 3 lines

arch/x86/vdso/vdso32/syscall.S:25: Error: suffix or operands invalid for `pop' make[1]: *** [arch/x86/vdso/vdso32/syscall.o] Error 1
make: *** [arch/x86/vdso] Error 2

I see those on one build machine but not on another, so I thought that it was a tools issue...

If so, it's a tools issue that worked fine until -mm1, which makes it a kernel problem in my mind ;-)

Quoted 8 lines
Quoted 5 lines

Nor this one:
http://test.kernel.org/results/IBM/126096/build/debug/stderr

drivers/char/hvcs.c: In function ‘hvcs_open’:
drivers/char/hvcs.c:1180: error: wrong type argument to unary exclamation mark

See http://marc.info/?l=linux-kernel&m=119700448119646
for patches.

Thanks,

M.

#116 lore raw
In reply to a message not in the archive
Quoted 8 lines · On Tue, 11 Dec 2007 08:13:52 -0800 "Martin Bligh" <[email protected]> wrote:
Quoted 8 lines

- Lots of device IDs have been removed from the e1000 driver and moved over
to e1000e. So if your e1000 stops working, you forgot to set
CONFIG_E1000E.

Quoted 7 lines

Wouldn't it make sense to just default this to on if E1000 was on, rather than screwing
everybody for no good reason (plus breaking all the automated testing, etc etc)?
Much though I love random refactoring, it is fairly painful to just keep changing the
names of things.

(cc netdev and Auke)

Yes, that would be very sensible. CONFIG_E1000E should default to whatever CONFIG_E1000 was set to.

Quoted 9 lines

I can't see this compile failure posted anywhere:
http://test.kernel.org/results/IBM/126049/build/debug/stderr

arch/x86/vdso/vdso32/sigreturn.S: Assembler messages:
arch/x86/vdso/vdso32/sigreturn.S:23: Error: suffix or operands invalid for pop' arch/x86/vdso/vdso32/syscall.S:25: Error: suffix or operands invalid for pop' make[1]: *** [arch/x86/vdso/vdso32/syscall.o] Error 1
make: *** [arch/x86/vdso] Error 2

(cc Ingo and Thomas)

Quoted 7 lines

Nor this one:
http://test.kernel.org/results/IBM/126096/build/debug/stderr

drivers/char/hvcs.c: In function ‘hvcs_open’:
drivers/char/hvcs.c:1180: error: wrong type argument to unary exclamation mark

(cc Greg)

Caused by gregkh-driver-kobject-convert-hvcs-to-use-kref-not-kobject.patch.

#117 lore raw
Quoted 10 lines · Andrew Morton
Quoted 8 lines

I can't see this compile failure posted anywhere:
http://test.kernel.org/results/IBM/126049/build/debug/stderr

arch/x86/vdso/vdso32/sigreturn.S: Assembler messages:
arch/x86/vdso/vdso32/sigreturn.S:23: Error: suffix or operands invalid for pop' arch/x86/vdso/vdso32/syscall.S:25: Error: suffix or operands invalid for pop' make[1]: *** [arch/x86/vdso/vdso32/syscall.o] Error 1
make: *** [arch/x86/vdso] Error 2

(cc Ingo and Thomas)

Roland says:

| That seems like it must be a tool problem.  The V=1 output would show 
| if those compiles missed -m32 or something.  But even in the wrong 
| mode, this error does not make sense.  The assembly code it's citing 
| is identical to the old arch/x86/ia32/vsyscall-syscall.S code.

Ingo

#118 lore raw
In reply to Andrew Morton
Quoted 17 lines · Andrew Morton
Quoted 7 lines · On Tue, 11 Dec 2007 08:13:52 -0800 "Martin Bligh" <[email protected]> wrote:
Quoted 7 lines

- Lots of device IDs have been removed from the e1000 driver and moved over
to e1000e. So if your e1000 stops working, you forgot to set
CONFIG_E1000E.

Quoted 7 lines

Wouldn't it make sense to just default this to on if E1000 was on, rather than screwing
everybody for no good reason (plus breaking all the automated testing, etc etc)?
Much though I love random refactoring, it is fairly painful to just keep changing the
names of things.

Quoted 4 lines

(cc netdev and Auke)

Yes, that would be very sensible. CONFIG_E1000E should default to whatever CONFIG_E1000 was set to.

which is "y" for x86 and friends, ppc, arm and ia64 through 'defconfig'. the Kconfig files do not have defaults in them.

I can send a patch to adjust the defconfig files, would that be OK? I certainly think that would be reasonable, I dislike setting defaults through defconfig for network drivers myself and rather would not do that.

Auke

#119 lore raw
Quoted 21 lines · Auke
Quoted 15 lines · Andrew Morton
Quoted 6 lines · On Tue, 11 Dec 2007 08:13:52 -0800 "Martin Bligh" <[email protected]> wrote:
Quoted 6 lines

- Lots of device IDs have been removed from the e1000 driver and moved over
to e1000e. So if your e1000 stops working, you forgot to set
CONFIG_E1000E.

Quoted 7 lines

Wouldn't it make sense to just default this to on if E1000 was on, rather than screwing
everybody for no good reason (plus breaking all the automated testing, etc etc)?
Much though I love random refactoring, it is fairly painful to just keep changing the
names of things.

Quoted 4 lines

(cc netdev and Auke)

Yes, that would be very sensible. CONFIG_E1000E should default to whatever CONFIG_E1000 was set to.

Quoted 6 lines

which is "y" for x86 and friends, ppc, arm and ia64 through 'defconfig'. the Kconfig files do not have defaults in them.

I can send a patch to adjust the defconfig files, would that be OK? I certainly think that would be reasonable, I dislike setting defaults through defconfig for network drivers myself and rather would not do that.

that should read "dislike setting defaults through Kconfig ..."

Auke

#120 lore raw
In reply to Kok, Auke
Quoted 18 lines · Auke
Quoted 17 lines · Andrew Morton
Quoted 14 lines · On Tue, 11 Dec 2007 08:13:52 -0800 "Martin Bligh" <[email protected]> wrote:
Quoted 7 lines

- Lots of device IDs have been removed from the e1000 driver and moved over
to e1000e. So if your e1000 stops working, you forgot to set
CONFIG_E1000E.

Wouldn't it make sense to just default this to on if E1000 was on, rather than screwing
everybody for no good reason (plus breaking all the automated testing, etc etc)?
Much though I love random refactoring, it is fairly painful to just keep changing the
names of things.

Quoted 7 lines
Quoted 4 lines

(cc netdev and Auke)

Yes, that would be very sensible. CONFIG_E1000E should default to whatever CONFIG_E1000 was set to.

which is "y" for x86 and friends, ppc, arm and ia64 through 'defconfig'. the Kconfig files do not have defaults in them.

I wouldn't be looking at defconfig files - I don't think many people use them. Most people use their previous config, via oldconfig.

So what we want here is to give them E1000E if they had previously been using E1000. I don't know how one would do this in Kconfig.

#121 lore raw
Quoted 23 lines · Andrew Morton
Quoted 20 lines · Auke
Quoted 19 lines · Andrew Morton
Quoted 6 lines · On Tue, 11 Dec 2007 08:13:52 -0800 "Martin Bligh" <[email protected]> wrote:
Quoted 6 lines

- Lots of device IDs have been removed from the e1000 driver and moved over
to e1000e. So if your e1000 stops working, you forgot to set
CONFIG_E1000E.

Quoted 7 lines

Wouldn't it make sense to just default this to on if E1000 was on, rather than screwing
everybody for no good reason (plus breaking all the automated testing, etc etc)?
Much though I love random refactoring, it is fairly painful to just keep changing the
names of things.

(cc netdev and Auke)

Yes, that would be very sensible. CONFIG_E1000E should default to whatever CONFIG_E1000 was set to.

Quoted 8 lines
Quoted 2 lines

which is "y" for x86 and friends, ppc, arm and ia64 through 'defconfig'. the Kconfig files do not have defaults in them.

I wouldn't be looking at defconfig files - I don't think many people use them. Most people use their previous config, via oldconfig.

So what we want here is to give them E1000E if they had previously been using E1000. I don't know how one would do this in Kconfig.

ditto. I doubt that "SELECT E1000E" would be a good idea here (maybe not even work), and I can't think of anything else.

Auke

#122 lore raw
Quoted 27 lines · Auke
Quoted 26 lines · Andrew Morton
Quoted 22 lines · Auke
Quoted 15 lines · Andrew Morton
Quoted 6 lines · On Tue, 11 Dec 2007 08:13:52 -0800 "Martin Bligh" <[email protected]> wrote:
Quoted 6 lines

- Lots of device IDs have been removed from the e1000 driver and moved over
to e1000e. So if your e1000 stops working, you forgot to set
CONFIG_E1000E.

Quoted 7 lines

Wouldn't it make sense to just default this to on if E1000 was on, rather than screwing
everybody for no good reason (plus breaking all the automated testing, etc etc)?
Much though I love random refactoring, it is fairly painful to just keep changing the
names of things.

Quoted 4 lines

(cc netdev and Auke)

Yes, that would be very sensible. CONFIG_E1000E should default to whatever CONFIG_E1000 was set to.

which is "y" for x86 and friends, ppc, arm and ia64 through 'defconfig'. the Kconfig files do not have defaults in them.

Quoted 8 lines
Quoted 5 lines

I wouldn't be looking at defconfig files - I don't think many people use them. Most people use their previous config, via oldconfig.

So what we want here is to give them E1000E if they had previously been using E1000. I don't know how one would do this in Kconfig.

ditto. I doubt that "SELECT E1000E" would be a good idea here (maybe not even work), and I can't think of anything else.

"default E1000" in E1000E seems to work for me.

---

From: Randy Dunlap <[email protected]>

Make E1000E default to the same kconfig setting as E1000, at least for -mm testing.

---
 drivers/net/Kconfig |    1 +
 1 file changed, 1 insertion(+)
drivers/net/Kconfig +1 -0
@@ -1986,6 +1986,7 @@ config E1000_DISABLE_PACKET_SPLIT
 config E1000E
 	tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
 	depends on PCI
+	default E1000
 	---help---
 	  This driver supports the PCI-Express Intel(R) PRO/1000 gigabit
 	  ethernet family of adapters. For PCI or PCI-X e1000 adapters,
#123 lore raw
In reply to Andrew Morton
Quoted 1 line · On Tue, 4 Dec 2007 21:17:01 -0800 Andrew Morton <[email protected]>…

Changes since 2.6.24-rc3-mm2:

2.6.24-rc4-mm1 brought a nice TCP oops on my x86_64 system, while I was stress-testing the VM and watching via ssh:

general protection fault: 0000 [1] SMP 
last sysfs file: /sys/devices/pci0000:00/0000:00:1c.5/0000:04:00.0/irq
CPU 1 
Modules linked in: nfs lockd nfs_acl rfcomm l2cap bluetooth autofs4 sunrpc ipv6 acpi_cpufreq dm_multipath parport_pc e1000e parport firewire_ohci button i2c_i801 i2c_core i82975x_edac pcspkr firewire_core serio_raw edac_core rtc_cmos floppy crc_itu_t sg sr_mod cdrom pata_marvell ata_piix dm_snapshot dm_zero dm_mirror dm_mod ahci libata sd_mod scsi_mod ext3 jbd mbcache uhci_hcd ohci_hcd ehci_hcd
Pid: 2946, comm: sshd Not tainted 2.6.24-rc4-mm1 #1
RIP: 0010:[<ffffffff81227add>]  [<ffffffff81227add>] __tcp_rb_insert+0x1a/0x67
RSP: 0018:ffff810066401c88  EFLAGS: 00010202
RAX: 6b6b6b6b6b6b6b6b RBX: ffff810076e9f000 RCX: ffff81003ddc9900
RDX: 6b6b6b6b6b6b6bab RSI: ffff81006ed1b148 RDI: 6b6b6b6b6b6b6b5b
RBP: ffff81006ed1aa00 R08: ffff810076e9f010 R09: 00000000bef8d64e
R10: ffffffff81228926 R11: ffffffff8110b2aa R12: ffff810066401de8
R13: 00000000000000e0 R14: ffff810066401ee8 R15: 0000000000000001
FS:  00007f1c2c10d780(0000) GS:ffff81007f801578(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000002aabfd3 CR3: 00000000665e3000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process sshd (pid: 2946, threadinfo ffff810066400000, task ffff8100665ce000)
Stack:  ffff81003ddc9900 ffffffff81228b26 0000000000000000 0000000100000000
 ffff810066401ee8 00000000810574da 000004e000000040 000000e0000004e0
 00007f1c2c797620 0000000000000246 0000000066401d60 0000000000000000
Call Trace:
 [<ffffffff81228b26>] tcp_sendmsg+0x21f/0xb00
 [<ffffffff811f0435>] sock_aio_write+0xf8/0x110
 [<ffffffff810a9451>] do_sync_write+0xc9/0x10c
 [<ffffffff811071d3>] file_has_perm+0x9a/0xa9
 [<ffffffff8104e29a>] autoremove_wake_function+0x0/0x2e
 [<ffffffff81059db6>] __lock_acquire+0x50f/0xc8e
 [<ffffffff810574da>] lock_release_holdtime+0x27/0x48
 [<ffffffff810a9c53>] vfs_write+0xd9/0x16f
 [<ffffffff810aa1fd>] sys_write+0x45/0x6e
 [<ffffffff8100c0ba>] tracesys+0xdc/0xe1


Code: 44 3b 4a 1c 79 10 44 3b 4a 18 78 04 0f 0b eb fe 48 8d 50 10 
RIP  [<ffffffff81227add>] __tcp_rb_insert+0x1a/0x67
 RSP <ffff810066401c88>
Signature · 3 lines
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it." - Brian W. Kernighan
#27 lore raw
In reply to Ilpo Järvinen
Quoted 29 lines · Ilpo Järvinen
Quoted 12 lines · David Miller

From: Reuben Farrelly <[email protected]>
Date: Thu, 06 Dec 2007 17:59:37 +1100

Quoted 9 lines · Andrew Morton
Quoted 2 lines

- Lots of device IDs have been removed from the e1000 driver and moved over to e1000e. So if your e1000 stops working, you forgot to set CONFIG_E1000E.

This non fatal oops which I have just noticed may be related to this change then
- certainly looks networking related.

WARNING: at net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()

Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #1

Quoted 8 lines
Quoted 6 lines
Call Trace:
  <IRQ>  [<ffffffff8046e038>] tcp_fastretrans_alert+0x229/0xe63
  [<ffffffff80470975>] tcp_ack+0xa3f/0x127d
  [<ffffffff804747b7>] tcp_rcv_established+0x55f/0x7f8
  [<ffffffff8047b1aa>] tcp_v4_do_rcv+0xdb/0x3a7
  [<ffffffff881148a8>] :nf_conntrack:nf_ct_deliver_cached_events+0x75/0x99

No, it's from TCP assertions and changes added by Ilpo to the net-2.6.25 tree recently.

Yeah, this (very likely) due to the new SACK processing (in net-2.6.25). I'll look what could go wrong with fack_count calculations, most likely it's the reason (I've found earlier one out-of-place retransmission segment in one of my test case which already indicated that there's something incorrect with them but didn't have time to debug it yet).

Quoted 3 lines

Thanks for report. Some info about how easily you can reproduce & couple of sentences about the test case might be useful later on when evaluating the fix.

I also got plenty of these when untaring a tarball on NFS.

C.

WARNING: at /home/legoater/linux/2.6.24-rc4-mm1/net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()

Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #2

Call Trace:
 <IRQ>  [<ffffffff804115bf>] tcp_fastretrans_alert+0xb6/0xbf2
 [<ffffffff80413f30>] tcp_ack+0xdf3/0xfbe
 [<ffffffff803da8fb>] sk_reset_timer+0x17/0x23
 [<ffffffff80416d1e>] tcp_rcv_established+0xf3/0x76d
 [<ffffffff8041d231>] tcp_v4_do_rcv+0x37/0x3aa
 [<ffffffff8041fb1f>] tcp_v4_rcv+0x9a9/0xa76
 [<ffffffff80402e4e>] ip_local_deliver_finish+0x161/0x23c
 [<ffffffff80403363>] ip_local_deliver+0x72/0x77
 [<ffffffff80402ca9>] ip_rcv_finish+0x371/0x3b5
 [<ffffffff804032bd>] ip_rcv+0x292/0x2c6
 [<ffffffff803e3dcc>] netif_receive_skb+0x267/0x340
 [<ffffffff8806eff4>] :tg3:tg3_poll+0x5d2/0x89e
 [<ffffffff803e639d>] net_rx_action+0xd5/0x1ad
 [<ffffffff8023b605>] __do_softirq+0x5f/0xe3
 [<ffffffff8020c86c>] call_softirq+0x1c/0x28
 [<ffffffff8020e739>] do_softirq+0x39/0x9f
 [<ffffffff8023b5a4>] irq_exit+0x4e/0x50
 [<ffffffff8020e880>] do_IRQ+0xb7/0xd7
 [<ffffffff8020a803>] mwait_idle+0x0/0x55
 [<ffffffff8020bb66>] ret_from_intr+0x0/0xf
 <EOI>  [<ffffffff8024d623>] __atomic_notifier_call_chain+0x20/0x83
 [<ffffffff8020a84b>] mwait_idle+0x48/0x55
 [<ffffffff80209e79>] enter_idle+0x22/0x24
 [<ffffffff8020a793>] cpu_idle+0xa1/0xc5
 [<ffffffff8021dfd5>] start_secondary+0x3b9/0x3c5

WARNING: at /home/legoater/linux/2.6.24-rc4-mm1/net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()

Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #2

Call Trace:
 <IRQ>  [<ffffffff804115bf>] tcp_fastretrans_alert+0xb6/0xbf2
 [<ffffffff80413f30>] tcp_ack+0xdf3/0xfbe
 [<ffffffff804153b8>] tcp_data_queue+0x5da/0xb0a
 [<ffffffff80416d1e>] tcp_rcv_established+0xf3/0x76d
 [<ffffffff8041d231>] tcp_v4_do_rcv+0x37/0x3aa
 [<ffffffff8041fb1f>] tcp_v4_rcv+0x9a9/0xa76
 [<ffffffff80402e4e>] ip_local_deliver_finish+0x161/0x23c
 [<ffffffff80403363>] ip_local_deliver+0x72/0x77
 [<ffffffff80402ca9>] ip_rcv_finish+0x371/0x3b5
 [<ffffffff804032bd>] ip_rcv+0x292/0x2c6
 [<ffffffff803e3dcc>] netif_receive_skb+0x267/0x340
 [<ffffffff8806eff4>] :tg3:tg3_poll+0x5d2/0x89e
 [<ffffffff803e639d>] net_rx_action+0xd5/0x1ad
 [<ffffffff8023b605>] __do_softirq+0x5f/0xe3
 [<ffffffff8020c86c>] call_softirq+0x1c/0x28
 [<ffffffff8020e739>] do_softirq+0x39/0x9f
 [<ffffffff8023b5a4>] irq_exit+0x4e/0x50
 [<ffffffff8020e880>] do_IRQ+0xb7/0xd7
 [<ffffffff8020a803>] mwait_idle+0x0/0x55
 [<ffffffff8020bb66>] ret_from_intr+0x0/0xf
 <EOI>  [<ffffffff8024d623>] __atomic_notifier_call_chain+0x20/0x83
 [<ffffffff8020a84b>] mwait_idle+0x48/0x55
 [<ffffffff80209e79>] enter_idle+0x22/0x24
 [<ffffffff8020a793>] cpu_idle+0xa1/0xc5
 [<ffffffff8021dfd5>] start_secondary+0x3b9/0x3c5

WARNING: at /home/legoater/linux/2.6.24-rc4-mm1/net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()

Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #2

Call Trace:
 <IRQ>  [<ffffffff804115bf>] tcp_fastretrans_alert+0xb6/0xbf2
 [<ffffffff80413f30>] tcp_ack+0xdf3/0xfbe
 [<ffffffff804153b8>] tcp_data_queue+0x5da/0xb0a
 [<ffffffff80416d1e>] tcp_rcv_established+0xf3/0x76d
 [<ffffffff8041d231>] tcp_v4_do_rcv+0x37/0x3aa
 [<ffffffff8041fb1f>] tcp_v4_rcv+0x9a9/0xa76
 [<ffffffff80402e4e>] ip_local_deliver_finish+0x161/0x23c
 [<ffffffff80403363>] ip_local_deliver+0x72/0x77
 [<ffffffff80402ca9>] ip_rcv_finish+0x371/0x3b5
 [<ffffffff804032bd>] ip_rcv+0x292/0x2c6
 [<ffffffff803e3dcc>] netif_receive_skb+0x267/0x340
 [<ffffffff8806eff4>] :tg3:tg3_poll+0x5d2/0x89e
 [<ffffffff803e639d>] net_rx_action+0xd5/0x1ad
 [<ffffffff8023b605>] __do_softirq+0x5f/0xe3
 [<ffffffff8020c86c>] call_softirq+0x1c/0x28
 [<ffffffff8020e739>] do_softirq+0x39/0x9f
 [<ffffffff8023b5a4>] irq_exit+0x4e/0x50
 [<ffffffff8020e880>] do_IRQ+0xb7/0xd7
 [<ffffffff8020a803>] mwait_idle+0x0/0x55
 [<ffffffff8020bb66>] ret_from_intr+0x0/0xf
 <EOI>  [<ffffffff8024d623>] __atomic_notifier_call_chain+0x20/0x83
 [<ffffffff8020a84b>] mwait_idle+0x48/0x55
 [<ffffffff80209e79>] enter_idle+0x22/0x24
 [<ffffffff8020a793>] cpu_idle+0xa1/0xc5
 [<ffffffff8021dfd5>] start_secondary+0x3b9/0x3c5
#31 lore raw
In reply to Ilpo Järvinen
Quoted 6 lines · Ilpo Järvinen
Quoted 4 lines · Andrew Morton
Quoted 2 lines · On Thu, 06 Dec 2007 17:59:37 +1100 Reuben Farrelly…

This non fatal oops which I have just noticed may be related to this change then
- certainly looks networking related.

Quoted 8 lines
Quoted 5 lines

yep, but it isn't e1000. It's core TCP.

Quoted 2 lines
WARNING: at net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()

Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #1

Ilpo, Reuben's kernel is talking to you ;)

...Please try the patch below. Andrew, this probably fixes your problem (the packets <= tp->packets_out) as well.

nah. I got the WARNINGs again with this patch.

C.

Quoted 3 lines

Dave, please include this one to net-2.6.25.

#32 lore raw

tcp_sacktag_one() WARNING (was Re: 2.6.24-rc4-mm1)

Quoted 9 lines · Cedric Le Goater
Quoted 8 lines · Ilpo Järvinen
Quoted 6 lines · Andrew Morton
Quoted 2 lines · On Thu, 06 Dec 2007 17:59:37 +1100 Reuben Farrelly…

This non fatal oops which I have just noticed may be related to this change then
- certainly looks networking related.

yep, but it isn't e1000. It's core TCP.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
Quoted 2 lines
WARNING: at net/ipv4/tcp_input.c:2518 tcp_fastretrans_alert()

Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #1

Ilpo, Reuben's kernel is talking to you ;)

...Please try the patch below. Andrew, this probably fixes your problem (the packets <= tp->packets_out) as well.

nah. I got the WARNINGs again with this patch.

I got this new one on a 2.6.24-rc5-mm1. It looked similar ?

C.

WARNING: at /home/legoater/linux/2.6.24-rc5-mm1/net/ipv4/tcp_input.c:1280 tcp_sacktag_one()

Pid: 0, comm: swapper Not tainted 2.6.24-rc5-mm1 #1

Call Trace:
 <IRQ>  [<ffffffff80410e0e>] tcp_sacktag_walk+0x2bc/0x62a
 [<ffffffff80411711>] tcp_sacktag_write_queue+0x595/0xa7c
 [<ffffffff8028ce66>] kfree+0xd4/0xe0
 [<ffffffff80411e9f>] tcp_ack+0x2a7/0xfc7
 [<ffffffff80252ca1>] mark_held_locks+0x47/0x6a
 [<ffffffff80252e5c>] trace_hardirqs_on+0xfe/0x139
 [<ffffffff80415d59>] tcp_rcv_established+0x66a/0x76d
 [<ffffffff8041bd35>] tcp_v4_do_rcv+0x37/0x3aa
 [<ffffffff8041e623>] tcp_v4_rcv+0x9a9/0xa76
 [<ffffffff80401832>] ip_local_deliver_finish+0x161/0x23c
 [<ffffffff80401d47>] ip_local_deliver+0x72/0x77
 [<ffffffff8040168d>] ip_rcv_finish+0x371/0x3b5
 [<ffffffff80401ca1>] ip_rcv+0x292/0x2c6
 [<ffffffff803e2aae>] netif_receive_skb+0x267/0x340
 [<ffffffff8806eff4>] :tg3:tg3_poll+0x5d2/0x89e
 [<ffffffff803e505c>] net_rx_action+0xd5/0x1ad
 [<ffffffff8023b0b9>] __do_softirq+0x5f/0xe3
 [<ffffffff8020c8ec>] call_softirq+0x1c/0x28
 [<ffffffff8020e7b9>] do_softirq+0x39/0x9f
 [<ffffffff8023b058>] irq_exit+0x4e/0x50
 [<ffffffff8020e900>] do_IRQ+0xb7/0xd7
 [<ffffffff8020a892>] mwait_idle+0x0/0x52
 [<ffffffff8020bbe6>] ret_from_intr+0x0/0xf
 <EOI>  [<ffffffff8024d0cb>] __atomic_notifier_call_chain+0x20/0x83
 [<ffffffff8020a8da>] mwait_idle+0x48/0x52
 [<ffffffff80209e79>] enter_idle+0x22/0x24
 [<ffffffff8020a822>] cpu_idle+0xa1/0xc5
 [<ffffffff8021e755>] start_secondary+0x3b9/0x3c5
#124 lore raw

Re: 2.6.24-rc4-mm1 - BUG in tcp_fragment

In reply to Andrew Morton
Quoted 7 lines · Andrew Morton

Temporarily at

http://userweb.kernel.org/~akpm/2.6.24-rc4-mm1/

Will appear later at

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

I got this one while compiling on NFS.

C.

kernel BUG at /home/legoater/linux/2.6.24-rc4-mm1/include/net/tcp.h:1480! invalid opcode: 0000 [1] SMP
last sysfs file: /sys/devices/pci0000:00/0000:00:1e.0/0000:01:01.0/local_cpus CPU 1

Modules linked in: autofs4 nfs lockd sunrpc tg3 sg joydev ext3 jbd ehci_hcd ohci_hcd uhci_hcd
Pid: 0, comm: swapper Not tainted 2.6.24-rc4-mm1 #3
RIP: 0010:[<ffffffff80418d93>]  [<ffffffff80418d93>] tcp_fragment+0x5ee/0x6f7
RSP: 0018:ffff810147c9f9e0  EFLAGS: 00010217
RAX: 000000001526c311 RBX: ffff8100c2ce1d00 RCX: ffff810143cc6aa0
RDX: 0000000000000001 RSI: ffff810102b37b00 RDI: ffff810102b37b50
RBP: ffff810147c9fa50 R08: 000000000000004a R09: 0000000000000001
R10: 0000000000000b50 R11: 0000000000000001 R12: ffff81013a575700
R13: 0000000000000000 R14: ffff810143cc6400 R15: ffff81013a575750
FS:  0000000000000000(0000) GS:ffff810147c57140(0000) knlGS:0000000000000000
CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
CR2: 00002ad5d294b000 CR3: 00000000bd11b000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process swapper (pid: 0, threadinfo ffff810147c98000, task ffff810147c89040)
Stack:  ffff810147c9fa00 ffffffff00000000 000005a843cc6400 ffff810143cc6400
 ffff810147c9fa70 ffff8100c2ce1d50 ffff810143cc6590 ffff810143cc6aa0
 1526542100000000 ffff810143cc6400 ffff810143cc6400 ffff81013a575700
Call Trace:
 <IRQ>  [<ffffffff804190c7>] tcp_retransmit_skb+0xd6/0x713
 [<ffffffff804197d4>] tcp_xmit_retransmit_queue+0xd0/0x330
 [<ffffffff8041209b>] tcp_fastretrans_alert+0xb92/0xbf2
 [<ffffffff80413f30>] tcp_ack+0xdf3/0xfbe
 [<ffffffff80417295>] tcp_rcv_established+0x66a/0x76d
 [<ffffffff8041d285>] tcp_v4_do_rcv+0x37/0x3aa
 [<ffffffff8041fb73>] tcp_v4_rcv+0x9a9/0xa76
 [<ffffffff80402e4e>] ip_local_deliver_finish+0x161/0x23c
 [<ffffffff80403363>] ip_local_deliver+0x72/0x77
 [<ffffffff80402ca9>] ip_rcv_finish+0x371/0x3b5
 [<ffffffff804032bd>] ip_rcv+0x292/0x2c6
 [<ffffffff803e3dcc>] netif_receive_skb+0x267/0x340
 [<ffffffff8806eff4>] :tg3:tg3_poll+0x5d2/0x89e
 [<ffffffff803e639d>] net_rx_action+0xd5/0x1ad
 [<ffffffff8023b605>] __do_softirq+0x5f/0xe3
 [<ffffffff8020c86c>] call_softirq+0x1c/0x28
 [<ffffffff8020e739>] do_softirq+0x39/0x9f
 [<ffffffff8023b5a4>] irq_exit+0x4e/0x50
 [<ffffffff8020e880>] do_IRQ+0xb7/0xd7
 [<ffffffff8020a803>] mwait_idle+0x0/0x55
 [<ffffffff8020bb66>] ret_from_intr+0x0/0xf
 <EOI>  [<ffffffff8024d623>] __atomic_notifier_call_chain+0x20/0x83
 [<ffffffff8020a84b>] mwait_idle+0x48/0x55
 [<ffffffff80209e79>] enter_idle+0x22/0x24
 [<ffffffff8020a793>] cpu_idle+0xa1/0xc5
 [<ffffffff8021dfd5>] start_secondary+0x3b9/0x3c5


Code: 0f 0b eb fe 48 85 f6 74 08 8b 46 6c 3b 41 68 75 55 48 8d 41 
RIP  [<ffffffff80418d93>] tcp_fragment+0x5ee/0x6f7
 RSP <ffff810147c9f9e0>
Kernel panic - not syncing: Aiee, killing interrupt handler!
#125 lore raw

Re: 2.6.24-rc4-mm1 - BUG in tcp_fragment

Quoted 5 lines · Cedric Le Goater

I got this one while compiling on NFS.

C.

kernel BUG at /home/legoater/linux/2.6.24-rc4-mm1/include/net/tcp.h:1480!

I'm not exactly sure what patches you have applied and which patches are not, with rc4-mm1 there are two patches (first one was incomplete, I assume you had at least that one based on your other mail) to really fix the issues in (__|)tcp_reset_fack_counts(...). However, there seems to be so much breakage that I have a bit trouble to decide where to start... The situation seems bit scary :-).

So, I might soon prepare a revert patch for most of the questionable TCP parts and ask Dave to apply it (and drop them fully during next rebase) unless I suddently figure something out soon which explains all/most of the problems, then return to drawing board. ...As it seems that the cumulative ACK processing problem discovered later on (having rather cumbersome solution with skbs only) will make part of the work that's currently in net-2.6.25 quite useless/duplicate effort. But thanks anyway for reporting these.

Signature · 1 line
 i.
#126 lore raw

Re: 2.6.24-rc4-mm1 - BUG in tcp_fragment

Quoted 4 lines · Ilpo Järvinen
Quoted 2 lines · Cedric Le Goater

I got this one while compiling on NFS.

Quoted 8 lines
Quoted 3 lines

C.

kernel BUG at /home/legoater/linux/2.6.24-rc4-mm1/include/net/tcp.h:1480!

I'm not exactly sure what patches you have applied and which patches are not, with rc4-mm1 there are two patches (first one was incomplete, I assume you had at least that one based on your other mail) to really fix the issues in (__|)tcp_reset_fack_counts(...).

Yes I only have the first patch you sent on lkml on top of 2.6.24-rc4-mm1. attached below. I didn't see the second one on lkml ?

Quoted 2 lines

However, there seems to be so much breakage that I have a bit trouble to decide where to start... The situation seems bit scary :-).

my n/w environment seems to reproduce these issues quite easily. if you need some testing, just ping me.

Cheers,

C.

Quoted 10 lines

So, I might soon prepare a revert patch for most of the questionable TCP parts and ask Dave to apply it (and drop them fully during next rebase) unless I suddently figure something out soon which explains all/most of the problems, then return to drawing board. ...As it seems that the cumulative ACK processing problem discovered later on (having rather cumbersome solution with skbs only) will make part of the work that's currently in net-2.6.25 quite useless/duplicate effort. But thanks anyway for reporting these.

Subject: [PATCH] [TCP]: Fix fack_count miscountings (multiple places)

1) Fack_count is set incorrectly if the highest sent skb is already sacked (the skb->prev won't return it because it's on the other list already). These manifest as fackets_out counting error later on, the second-order effects are very hard to track, so it may fix all out-standing TCP bug reports.

2) Prev == NULL check was wrong way around

3) Last skb's fack count was incorrectly skipped while() {} loop

---
 include/net/tcp.h |   22 ++++++++++++++++------
 1 files changed, 16 insertions(+), 6 deletions(-)
include/net/tcp.h +16 -6
index 9dbed0b..11a7e3e 100644
@@ -1337,10 +1337,20 @@ static inline struct sk_buff *tcp_send_head(struct sock *sk)
 static inline void tcp_advance_send_head(struct sock *sk, struct sk_buff *skb)
 {
        struct sk_buff *prev = tcp_write_queue_prev(sk, skb);
+       unsigned int fc = 0;
+
+       if (prev == (struct sk_buff *)&sk->sk_write_queue)
+               prev = NULL;
+       else if (!tcp_skb_adjacent(sk, prev, skb))
+               prev = NULL;
 
-       if (prev != (struct sk_buff *)&sk->sk_write_queue)
-               TCP_SKB_CB(skb)->fack_count = TCP_SKB_CB(prev)->fack_count +
-                                             tcp_skb_pcount(prev);
+       if ((prev == NULL) && !__tcp_write_queue_empty(sk, TCP_WQ_SACKED))
+               prev = __tcp_write_queue_tail(sk, TCP_WQ_SACKED);
+
+       if (prev != NULL)
+               fc = TCP_SKB_CB(prev)->fack_count + tcp_skb_pcount(prev);
+
+       TCP_SKB_CB(skb)->fack_count = fc;
 
        sk->sk_send_head = tcp_write_queue_next(sk, skb);
        if (sk->sk_send_head == (struct sk_buff *)&sk->sk_write_queue)
@@ -1464,7 +1474,7 @@ static inline struct sk_buff *__tcp_reset_fack_counts(struct sock *sk,
 {
        unsigned int fc = 0;
 
-       if (prev == NULL)
+       if (prev != NULL)
                fc = TCP_SKB_CB(*prev)->fack_count + tcp_skb_pcount(*prev);
 
        BUG_ON((*prev != NULL) && !tcp_skb_adjacent(sk, *prev, skb));
@@ -1521,7 +1531,7 @@ static inline void tcp_reset_fack_counts(struct sock *sk, struct sk_buff *inskb)
                skb[otherq] = prev->next;
        }
 
-       while (skb[queue] != __tcp_write_queue_tail(sk, queue)) {
+       do {
                /* Lazy find for the other queue */
                if (skb[queue] == NULL) {
                        skb[queue] = tcp_write_queue_find(sk, TCP_SKB_CB(prev)->seq,
@@ -1535,7 +1545,7 @@ static inline void tcp_reset_fack_counts(struct sock *sk, struct sk_buff *inskb)
                        break;
 
                queue ^= TCP_WQ_SACKED;
-       }
+       } while (skb[queue] != __tcp_write_queue_tail(sk, queue));
 }
 
 static inline void __tcp_insert_write_queue_after(struct sk_buff *skb,

-- 1.5.0.6

#127 lore raw

PATCH 1/1 Revert recent TCP work

In reply to Ilpo Järvinen
Quoted 8 lines · Ilpo Järvinen

So, I might soon prepare a revert patch for most of the questionable TCP parts and ask Dave to apply it (and drop them fully during next rebase) unless I suddently figure something out soon which explains all/most of the problems, then return to drawing board. ...As it seems that the cumulative ACK processing problem discovered later on (having rather cumbersome solution with skbs only) will make part of the work that's currently in net-2.6.25 quite useless/duplicate effort. But thanks anyway for reporting these.

Hi Dave,

Could you either drop my recent patches (+one fix to them from Herbert Xu == "[TCP]: Fix crash in tcp_advance_send_head"), all mine after "[TCP]:
Abstract tp->highest_sack accessing & point to next skb" from net-2.6.25 or just apply the revert from below and do the removal during next rebase. I think it could even be automated by something like this (untested):
for i in $(cat commits | cut -d ' ' -f 1); do git-rebase --onto $i^ $i; done (I've attached the commits list).

I'll resend small bits that are still useful but get removed in this kind of straightforward operation (I guess it's easier for you to track this way and makes conflicts a non-problem).

...It was buggy as well, I've tried to Cc all bug reporters that I've noticed so far... Related bugs include at least these cases:

These are completely removed by this revert:

	__tcp_rb_insert
	(__|)tcp_reset_fack_counts

May still trigger later due to other, genuine bugs:
tcp_sacktag_one (I'll rework & resend this soon) tcp_fastretrans_alert (fackets_out trap) BUG_TRAP(packets <= tp->packets_out); in tcp_mark_head_lost

Signature · 27 lines
 i.


[PATCH net-2.6.25] Revert recent TCP work

It was recently discovered that there's yet another processing
aspect to consider related to cumulative ACK processing. This
solution wasn't enough to handle that but "(arguably) complex"
and intrusive changes were still necessary in addition to the
complexity this already introduced. Another approach is on the
drawing board.

This was somehow buggy as well, a lot of reports against it
were filed already :-), but hunting the cause doesn't seem so
beneficial anymore.

Signed-off-by: Ilpo Järvinen <[email protected]>
---
 include/linux/skbuff.h   |    3 -
 include/linux/tcp.h      |    4 -
 include/net/tcp.h        |  362 ++++------------------------------------------
 net/ipv4/tcp_input.c     |  341 ++++++++++++++++++++-----------------------
 net/ipv4/tcp_ipv4.c      |    1 -
 net/ipv4/tcp_minisocks.c |    1 -
 net/ipv4/tcp_output.c    |   13 +-
 net/ipv6/tcp_ipv6.c      |    1 -
 8 files changed, 196 insertions(+), 530 deletions(-)
include/linux/skbuff.h +0 -3
index f21fee6..c618fbf 100644
@@ -18,7 +18,6 @@
 #include <linux/compiler.h>
 #include <linux/time.h>
 #include <linux/cache.h>
-#include <linux/rbtree.h>
 
 #include <asm/atomic.h>
 #include <asm/types.h>
@@ -254,8 +253,6 @@ struct sk_buff {
 	struct sk_buff		*next;
 	struct sk_buff		*prev;
 
-	struct rb_node		rb;
-
 	struct sock		*sk;
 	ktime_t			tstamp;
 	struct net_device	*dev;
include/linux/tcp.h +0 -4
index 56342c3..08027f1 100644
@@ -174,7 +174,6 @@ struct tcp_md5sig {
 
 #include <linux/skbuff.h>
 #include <linux/dmaengine.h>
-#include <linux/rbtree.h>
 #include <net/sock.h>
 #include <net/inet_connection_sock.h>
 #include <net/inet_timewait_sock.h>
@@ -321,9 +320,6 @@ struct tcp_sock {
 	u32	snd_cwnd_used;
 	u32	snd_cwnd_stamp;
 
-	struct rb_root		write_queue_rb;
-	struct rb_root		sacked_queue_rb;
-	struct sk_buff_head	sacked_queue;
 	struct sk_buff_head	out_of_order_queue; /* Out of order segments go here */
 
  	u32	rcv_wnd;	/* Current receiver window		*/
include/net/tcp.h +30 -332

452 lines not on this page · raw message

net/ipv4/tcp_input.c +160 -181

615 lines not on this page · raw message

net/ipv4/tcp_ipv4.c +0 -1
index 5a27e42..652c323 100644
@@ -1849,7 +1849,6 @@ static int tcp_v4_init_sock(struct sock *sk)
 	struct inet_connection_sock *icsk = inet_csk(sk);
 	struct tcp_sock *tp = tcp_sk(sk);
 
-	tcp_write_queue_init(sk);
 	skb_queue_head_init(&tp->out_of_order_queue);
 	tcp_init_xmit_timers(sk);
 	tcp_prequeue_init(tp);
net/ipv4/tcp_minisocks.c +0 -1
index e1a0e4a..b61b768 100644
@@ -426,7 +426,6 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,
 
 		tcp_set_ca_state(newsk, TCP_CA_Open);
 		tcp_init_xmit_timers(newsk);
-		tcp_write_queue_init(newsk);
 		skb_queue_head_init(&newtp->out_of_order_queue);
 		newtp->write_seq = treq->snt_isn + 1;
 		newtp->pushed_seq = newtp->write_seq;
net/ipv4/tcp_output.c +6 -7
index 6110459..9a985b5 100644
@@ -1207,7 +1207,7 @@ static int tso_fragment(struct sock *sk, struct sk_buff *skb, unsigned int len,
 
 	/* Link BUFF into the send queue. */
 	skb_header_release(buff);
-	__tcp_insert_write_queue_after(skb, buff, sk, 0);
+	tcp_insert_write_queue_after(skb, buff, sk);
 
 	return 0;
 }
@@ -1344,10 +1344,10 @@ static int tcp_mtu_probe(struct sock *sk)
 	nskb->csum = 0;
 	nskb->ip_summed = skb->ip_summed;
 
-	__tcp_insert_write_queue_before(nskb, skb, sk);
+	tcp_insert_write_queue_before(nskb, skb, sk);
 
 	len = 0;
-	tcp_for_write_queue_from_safe(skb, next, sk, 0) {
+	tcp_for_write_queue_from_safe(skb, next, sk) {
 		copy = min_t(int, skb->len, probe_size - len);
 		if (nskb->ip_summed)
 			skb_copy_bits(skb, 0, skb_put(nskb, copy), copy);
@@ -1760,7 +1760,7 @@ void tcp_simple_retransmit(struct sock *sk)
 	unsigned int mss = tcp_current_mss(sk, 0);
 	int lost = 0;
 
-	tcp_for_write_queue(skb, sk, 0) {
+	tcp_for_write_queue(skb, sk) {
 		if (skb == tcp_send_head(sk))
 			break;
 		if (skb->len > mss &&
@@ -1848,7 +1848,6 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)
 	    (skb->len < (cur_mss >> 1)) &&
 	    (tcp_write_queue_next(sk, skb) != tcp_send_head(sk)) &&
 	    (!tcp_skb_is_last(sk, skb)) &&
-	    (tcp_skb_adjacent(sk, skb, tcp_write_queue_next(sk, skb))) &&
 	    (skb_shinfo(skb)->nr_frags == 0 && skb_shinfo(tcp_write_queue_next(sk, skb))->nr_frags == 0) &&
 	    (tcp_skb_pcount(skb) == 1 && tcp_skb_pcount(tcp_write_queue_next(sk, skb)) == 1) &&
 	    (sysctl_tcp_retrans_collapse != 0))
@@ -1937,7 +1936,7 @@ void tcp_xmit_retransmit_queue(struct sock *sk)
 
 	/* First pass: retransmit lost packets. */
 	if (tp->lost_out) {
-		tcp_for_write_queue_from(skb, sk, 0) {
+		tcp_for_write_queue_from(skb, sk) {
 			__u8 sacked = TCP_SKB_CB(skb)->sacked;
 
 			if (skb == tcp_send_head(sk))
@@ -2010,7 +2009,7 @@ void tcp_xmit_retransmit_queue(struct sock *sk)
 	else
 		skb = tcp_write_queue_head(sk);
 
-	tcp_for_write_queue_from(skb, sk, 0) {
+	tcp_for_write_queue_from(skb, sk) {
 		if (skb == tcp_send_head(sk))
 			break;
 		tp->forward_skb_hint = skb;
net/ipv6/tcp_ipv6.c +0 -1
index d576833..0ef9986 100644
@@ -1886,7 +1886,6 @@ static int tcp_v6_init_sock(struct sock *sk)
 	struct inet_connection_sock *icsk = inet_csk(sk);
 	struct tcp_sock *tp = tcp_sk(sk);
 
-	tcp_write_queue_init(sk);
 	skb_queue_head_init(&tp->out_of_order_queue);
 	tcp_init_xmit_timers(sk);
 	tcp_prequeue_init(tp);
Signature · 1 line
1.5.0.6

e595ce2f95a4f6e756cd5e8f6fc896fb2e61da25 Revert recent TCP work 606c0d0a93d76515f097605154a5b374fea6302b [TCP]: Include __tcp_reset_fack_counts to non-__ version c544afb0997140b65fa9bf77abb6949f2f1ce61d [TCP]: Push fack_count calculation deeper into functions c89628097889ebc7c8eac710004f15a69484ebed [TCP]: fack_counts more fixes (the previous ones were incomplete) 6c9d05bdcda4fe3fbbe1053b39e0c969781f7196 [PATCH] [TCP]: Fix fack_count miscountings (multiple places) 811560b034530f7ef6b80cde6c0971517ba9e920 [TCP]: Bind fackets_out state to highest_sack more tightly 82207f6525a60c6c48b00c63532efe183754a011 [TCP]: Make invariant check complain about invalid sacked_out 5026c22996f3637fce22f1c7ebbde3c3baeffec1 [TCP]: Create tcp_mark_head_lost_single for NewReno d7b9a6449bc0e05b5a80ac0948bf721ce1479c4f [TCP]: Fix copy-paste error in tcp_reset_fack_counts 3df630b6213349154da32b0b15ec81d398585413 [TCP]: Fix crash in tcp_advance_send_head d72d4c2bfbe90759947dae3f8e0169e5dcd76b0a [TCP]: Split write queue into two parts (SACKed and not) 6a3506ce642273af2057953101442d65b1f0fd60 [TCP]: Introduce tcp_skb_adjacent to detect holes in wq 4ca5bc486815ce15915a95f628959e1d21f2528a [TCP]: Introduce tcp_real_queue_head(sk) 0010e0452ffe2c77215672606c6e1467dd81039e [TCP]: Move tcp_advance_highest_sack call early enough 8511d7f270010b41a4349c7629089626068e644d [TCP]: Move tcp_write_queue_empty 99b12c1530796e95383099ae49e1972a5e42f10b [TCP]: Move tcp_check_dsack 1f338928c67e281b295d566ad4ec37dbd1b2524f [TCP]: Use per skb fack count instead of function argument d8ce7161ec43dc23d33cc43837945fd923e84db0 [TCP]: Added queue parameter to _for_write_queue helpers fdcf67f30c85ed0ac2dbc31b833b2c6222c64b9c [TCP]: Store retransmit queue packets in RB tree. 305d7dd5dd9aa5c573ec172bb486188ede94453a [TCP]: Introduce per skb fack_counts to retransmit queue

maintainer
#128 lore raw

Re: [PATCH net-2.6.25] Revert recent TCP work

From: "Ilpo_Järvinen" <[email protected]>
Date: Fri, 14 Dec 2007 22:14:29 +0200 (EET)

Quoted 7 lines

Could you either drop my recent patches (+one fix to them from Herbert Xu == "[TCP]: Fix crash in tcp_advance_send_head"), all mine after "[TCP]:
Abstract tp->highest_sack accessing & point to next skb" from net-2.6.25 or just apply the revert from below and do the removal during next rebase. I think it could even be automated by something like this (untested):
for i in $(cat commits | cut -d ' ' -f 1); do git-rebase --onto $i^ $i; done (I've attached the commits list).

I'll take care of this when I rebase the net-2.6.25 tree later today.

Thanks Ilpo.