* -mm merge plans for 2.6.21 @ 2007-02-08 23:07 Andrew Morton 2007-02-08 23:12 ` Roland Dreier ` (9 more replies) 0 siblings, 10 replies; 69+ messages in thread From: Andrew Morton @ 2007-02-08 23:07 UTC (permalink / raw) To: linux-kernel I'm getting fed up of holding onto hundreds of patches against subsystem trees, sending them over and over again seeing and nothing happen. I sent 242 patches out to subsystem maintainers on Monday and look at what's still here. rtc-pcf8563-detect-polarity-of-century-bit-automatically.patch ufs-restore-back-support-of-openstep.patch hugetlb-preserve-hugetlb-pte-dirty-state.patch md-fix-various-bugs-with-aligned-reads-in-raid5.patch knfsd-fix-a-race-in-closing-nfsd-connections.patch md-avoid-possible-bug_on-in-md-bitmap-handling.patch v9fs_vfs_mkdir-fix-a-double-free.patch enable-mouse-button-23-emulation-for-x86-macs.patch mm-show-bounce-pages-in-oom-killer-output.patch add-install_special_mapping.patch i386-vdso-use-install_special_mapping.patch x86_64-ia32-vdso-use-install_special_mapping.patch powerpc-vdso-use-install_special_mapping.patch sh-vdso-use-install_special_mappingpatch.patch Submitted. x86-fix-vdso-mapping-for-aout-executables.patch a.out executables are presently non-functional. This patch needs more work. use-correct-macros-in-raid-code-not-raw-asm.patch use-correct-macros-in-raid-code-not-raw-asm-include.patch -> neilb acpi-bay-remove-acpi-driver-struct.patch acpi-bay-driver-warning-fix.patch acpi-i686-x86_64-fix-laptop-bootup-hang-in-init_acpi.patch asus_acpi-add-support-for-asus-z81sp.patch exit-acpi-processor-module-gracefully-if-acpi-is-disabled.patch toshiba-acpi-use-array_size-macro-when-appropriate.patch ifdef-acpi_future_usage-acpi_os_readable.patch -> lenb agpgart-allow-drm-populated-agp-memory-types-tidy.patch -> davej arm-imx-serial-fix-tx-buffer-overflows.patch arm-imx-serial-fix-irq-allocation.patch amba-pl010-add-reference-to-ep93xx-to-kconfig-help-entry.patch at91-correct-value-for-at91_rstc_key.patch arch-arm-use-array_size-macro-when-appropriate.patch -> rmk avr32-fix-build-breakage.patch arch-avr32-use-array_size-macro-when-appropriate.patch -> hskinnemoen remove-hotplug-cpu-crap-from-cpufreq.patch rewrite-lock-in-cpufreq-to-eliminate-cpufreq-hotplug-related-issues.patch ondemand-governor-restructure-the-work-callback.patch ondemand-governor-use-new-cpufreq-rwsem-locking-in-work-callback.patch cpu_freq_table-shouldnt-be-a-def_tristate.patch -> davej powerpc-rtas-msi-support.patch -> paulus, I guess. The MSI people still need to argue about this. fix-gregkh-driver-sys-modules-holders.patch kobject-kobj-k_name-verification-fix.patch spider-fix-gregkh-driver-network-device.patch driver-core-per-subsystem-multithreaded-probing.patch powerpc-make-it-compile.patch driver-core-dont-fail-attaching-the-device-if-it.patch fix-warning-in-device_add_attrs.patch -> gregkh drivers-char-drm-drm_mmc-remove-unused-exports.patch update-readmedrm-bugzilla-7933.patch drm-use-array_size-macro-when-appropriate.patch -> airlied avoid-race-when-deregistering-the-ir-control-for-dvb-usb.patch kthread-api-conversion-for-dvb_frontend-and-av7110.patch kthread-api-conversion-for-dvb_frontend-and-av7110-fix.patch -> mchehab i2c-tsl2550-support.patch -> khali infiniband-work-around-gcc-bug-on-sparc64.patch ehca-fix-memleak-on-module-unloading.patch -> roland crash-on-evdev-disconnect.patch change-incorrect-config_input_atixl-to-config_mouse_atixl.patch hil-small-fix.patch wistron-button-support-for-fujitsu-siemens-amilo-d88x0.patch setstream-param-for-psmouse.patch input-schedule-removal-of-compaq-touchscreen.patch -> dtor search-a-little-harder-for-mkimage.patch make-mkcompile_h-use-lang=c-and-lc_all=c-for-cc-v.patch add-mailmap-for-proper-git-shortlog-output.patch qconf-immediately-update-integer-and-string-values-in-xconfig-display-take-2.patch qconf-relocate-search-command.patch qconf-fix-showing-help-info-on-failed-search.patch qconf-back-button-behaviour-normalization.patch kbuild-remove-references-to-deprecated-prepare-all-target.patch new-toplevel-target-headers_check_all.patch kbuild stuff. Will merge. sis-warning-fixes.patch libata-add-a-host-flag-to-indicate-lack-of-iordy.patch git-libata-all-lib-iomapc-fix-for-config_pci=n.patch -> jeff libata-fix-hopefully-all-the-remaining-problems-with.patch Hold. git-md-accel-fixes.patch git-md-accel-warning-fixes.patch -> dan.j.williams mips-eisa-registration-with-config_eisa.patch mips-turbochannel-update-to-the-driver-model.patch mips-turbochannel-update-to-the-driver-model-fix.patch mips-turbochannel-support-for-the-decstation.patch mips-pmag-ba-fb-convert-to-the-driver-model.patch mips-pmagb-b-fb-convert-to-the-driver-model.patch mips-dec_esp-driver-model-for-the-pmaz-a.patch mips-remove-smp_tune_scheduling.patch umm, not sure. I thought Ralf was going to merge these but he got shy. They'll get into 2.6.21 somehow. mtd_ck804xrom-must-depend-on-pci.patch mtd-add-missing-kernel-doc-item.patch -> dwmw2 8139too-force-media-setting-fix.patch sundance-change-phy-address-search-from-phy=1-to-phy=0.patch user-of-the-jiffies-rounding-code-e1000.patch revert-drivers-net-tulip-dmfe-support-basic-carrier-detection.patch -> jeff 3x59x-fix-pci-resource-management.patch update-smc91x-driver-with-arm-versatile-board-info.patch drivers-net-ns83820c-add-paramter-to-disable-auto.patch natsemi-add-support-for-using-mii-port-with-no-phy.patch Hold. tulip-fix-shutdown-dma-irq-race.patch tulip-fix-for-64-bit-mips.patch tulip-natsemi-dp83840a-phy-fix.patch -> val_henson atm-use-array_size-macro-when-appropriate.patch -> davem ioat-warning-fix.patch fix-i-oat-for-kexec.patch -> christopher.leech auth_gss-unregister-gss_domain-when-unloading-module.patch nfs-kill-the-obsolete-nfs_paranoia.patch nfs-fix-congestion-control-v4.patch -> trond.myklebust parisc-fix-module_param-iommu-permission.patch pa-risc-fix-bogus-warnings-from-modpost.patch use-__u64-rather-than-u64-in-parisc-statfs-structs.patch -> kyle remove-useless-find_first_bit-macro-from-cardbusc.patch -> Dominik r8169-warning-fixes.patch -> romieu 8250-uart-backup-timer.patch serial-trivial-code-flow-simplification.patch make-sure-uart-is-powered-up-when-dumping-mctrl-status.patch perle-multimodem-card-pci-ras-detection.patch serial-replace-kmallocmemset-with-kzalloc.patch fix-pnx8550-serial-breakage.patch pnx8550-uart-driver.patch pnx8550-uart-driver-fixes.patch 8250-make-probing-for-txen-bug-a-config-option.patch argh, serial patches. I'll rereview these and will likely submit most or all of them. make-cardbus_mem_size-and-cardbus_io_size-boot-options.patch bugfixes-pci-devices-get-assigned-redundant-irqs.patch pci-add-systems-for-automatic-breadth-first-device-sorting.patch pci-add-systems-for-automatic-breadth-first-device-sorting-update.patch -> greg pci-device-ensure-sysdata-initialised-v2.patch x86-fix-dev_to_node-for-x86-and-x86_64.patch -> jeff s390-kmalloc-kzalloc-casting-cleanups.patch s390-drivers-use-array_size-macro-when-appropriate.patch -> schwidefsky drivers-scsi-small-cleanups.patch drivers-scsi-advansysc-cleanups.patch megaraid-fix-warnings-when-config_proc_fs=n.patch remove-unnecessary-check-in-drivers-scsi-sgc.patch remove-extra-newline-from-info-message.patch fix-scsi-scsi_transporth-compile-error.patch pci_module_init-convertion-in-the-legacy-megaraid-driver.patch pci_module_init-convertion-in-tmscsimc.patch drivers-scsi-dpt_i2oc-remove-dead-code.patch mpt-fusion-handle-pci-layer-error-on-resume.patch drivers-scsi-ncr5380c-replacing-yield-with-a.patch drivers-scsi-megaraidc-replacing-yield-with-a.patch scsi-whitespace-cleanup-in-the-dpt-driver.patch drivers-scsi-mca_53c9xc-save_flags-cli-removal.patch drivers-scsi-aic7xxx-make-functions-static.patch sym53c8xx_2-claims-cpqarray-device.patch drivers-scsi-wd33c93c-cleanups.patch scsi-cover-up-bugs-fix-up-compiler-warnings-in-megaraid-driver.patch fix-the-reproducible-oops-in-scsi.patch scsi-handle-bad-inquiry-responses.patch drivers-scsi-qla4xxx-possible-cleanups.patch make-seagate_st0x_detect-static.patch remove-some-unused-scsi-related-kernel-config-variables.patch scsi-fix-obvious-typo-spin_lock_irqrestore-in-gdthc.patch drivers-scsi-aacraid-cleanups.patch scsi-megaraid_sas-stop-cmd-processing-if.patch scsi-megaraid_sas-added-bios_param-in.patch scsi-megaraid_sas-throttle-io-if-fw-is-busy.patch scsi-megaraid_sas-update-version-and-author-info.patch -> James.Bottomley git-block-dupe-definitions.patch git-block-xfs-barriers-broke.patch -> jens.axboe fix-gregkh-usb-usbcore-remove-unused-bandwith-related-code.patch fix-gregkh-usb-usb-linux-usb_ch9h-becomes-linux-usb-ch9h.patch nokia-e70-is-an-unusual-device.patch usb_rtl8150-must-select-mii.patch input-hid-add-cidc-usb-device-to-hid-blacklist.patch usb-mass-storage-us_fl_ignore_residue-needed-for-aiptek-mp3-player.patch fix-misspelled-usbnet_mii-kernel-config-option.patch usb-in-init_endpoint_class-use-ptr_err-to-obtain-an-errno-value-not-is_err.patch fix-apparent-typo-config_usb_cdcether.patch pl2303-willcom-ws002in-support.patch use-__u32-rather-than-u32-in-userspace-ioctls-in-usbdevice_fsh.patch usb-p990i-is-an-unusual-device.patch usb-fix-concurrent-buffer-access-in-the-hub-driver.patch ueagle-atmc-needs-schedh.patch -> greg replace-incorrect-macro-name-wireless_ext-with.patch -> linville x86_64-irq-simplfy-__assign_irq_vector.patch x86_64-irq-handle-irqs-pending-in-irr-during-irq-migration.patch x86_64-do-not-enable-the-nmi-watchdog-by-default.patch x86-64-system-crashes-when-no-memory-populating-node-0.patch mm-set-hashdist_default-to-1-for-x86_64-numa.patch spin_lock_irq-enable-interrupts-while-spinning-preparatory-patch.patch spin_lock_irq-enable-interrupts-while-spinning-x86_64-implementation.patch spin_lock_irq-enable-interrupts-while-spinning-i386-implementation.patch mmconfig-cleanup.patch mmconfig-fix-unreachable_devices.patch #i386-modpost-apic-related-warning-fixes.patch arch-i386-kernel-alternativec-should-include-asm-bugsh.patch arch-i386-kernel-alternativec-dont-include-bugsh.patch i386-probe_roms-cleanup.patch x86_64-survive-having-no-irq-mapping-for-a-vector-fix.patch fix-mtrr-compat-ioctl.patch -> ak xfs-remove-useless-wmb-memory-barrier.patch -> dcg slab-remove-broken-pageslab-check-from-kfree_debugcheck.patch slab-cache-alloc-cleanups.patch use-parameter-passed-to-cache_reap-to-determine-pointer-to.patch remove-final-references-to-deprecated-map_anon-page-protection-flag.patch add-vm_insert_pfn.patch mm-vm_insert_pfn-tidy.patch add-nopfn_refault-result-from-vm_ops-nopfn.patch avoid-excessive-sorting-of-early_node_map.patch avoid-excessive-sorting-of-early_node_map-tidy.patch proc-zoneinfo-fix-vm-stats-display.patch typeof-__page_to_pfn-with-sparsemem=y.patch page_mkwrite-race-fix.patch use-zvc-for-inactive-and-active-counts.patch use-zvc-for-inactive-and-active-counts-up-fix.patch use-zvc-for-free_pages.patch use-zvc-for-free_pages-fix.patch use-zvc-for-free_pages-fix-2.patch use-zvc-for-free_pages-fix-3.patch use-zvc-for-free_pages-fix-4.patch reorder-zvcs-according-to-cacheline.patch drop-free_pages.patch drop-free_pages-fix.patch drop-free_pages-sparc64-fix.patch drop-nr_free_pages_pgdat.patch drop-__get_zone_counts.patch drop-get_zone_counts.patch MM. Will merge. lumpy-reclaim-v2.patch lumpy-reclaim-v2-page_to_pfn-fix.patch lumpy-reclaim-v2-tidy.patch lumpy-reclaim-cleanup.patch Needs more work. deal-with-cases-of-zone_dma-meaning-the-first-zone.patch introduce-config_zone_dma.patch optional-zone_dma-in-the-vm.patch optional-zone_dma-in-the-vm-no-gfp_dma-check-in-the-slab-if-no-config_zone_dma-is-set.patch optional-zone_dma-in-the-vm-no-gfp_dma-check-in-the-slab-if-no-config_zone_dma-is-set-reduce-config_zone_dma-ifdefs.patch optional-zone_dma-in-the-vm-no-gfp_dma-check-in-the-slab-if-no-config_zone_dma-is-set-reduce-config_zone_dma-ifdefs-fix.patch optional-zone_dma-in-the-vm-tidy.patch optional-zone_dma-for-ia64.patch remove-zone_dma-remains-from-parisc.patch remove-zone_dma-remains-from-sh-sh64.patch set-config_zone_dma-for-arches-with-generic_isa_dma.patch zoneid-fix-up-calculations-for-zoneid_pgshift.patch barf. Will probably merge. simplify-shmem_aopsset_page_dirty-method.patch convert-ramfs-to-use-__set_page_dirty_no_writeback.patch do-not-disturb-page-referenced-state-when-unmapping-memory-range.patch Will merge. The third patch here might perturb page aging a bit and needs monitoring. implement-file-posix-capabilities.patch file-capabilities-dont-do-file-caps-if-mnt_nosuid.patch file-capabilities-honor-secure_noroot.patch I don't know. Need to poke the security guys again. make-reading-proc-sys-kernel-cap-bould-not-require.patch Will merge. alpha-increase-percpu_enough_room.patch Will merge. arch-arm26-use-array_size-macro-when-appropriate.patch Will merge. pm-change-code-ordering-in-mainc.patch swsusp-change-code-ordering-in-diskc.patch swsusp-change-code-order-in-diskc-fix.patch swsusp-change-code-ordering-in-userc.patch swsusp-change-code-ordering-in-userc-sanity.patch swsusp-change-pm_ops-handling-by-userland-interface.patch swsusp-change-pm_ops-handling-by-userland-interface-fix.patch Will merge m32r-build-fix-for-processors-without-isa_dsp_level2.patch m32r-fix-do_page_fault-and-update_mmu_cache.patch m32r-update-defconfig-files-for-v2619.patch m32r-fix-kernel-entry-address-of-vmlinux.patch m32r-cosmetic-updates-and-trivial-fixes.patch Will merge. m68k-work-around-binutils-tokenizer-change.patch kernel-time-clocksourcec-needs-struct-task_struct-on-m68k.patch arch-m68knommu-user-array_size-macro-when-appropriate.patch arch-m68k-user-array_size-macro-when-appropriate.patch m68k-dont-include-asm-m68k-pageh-in-asm-m68k-userh.patch Will merge. cris-local_irq_disable-is-redundant-after-local_irq_save.patch cris-turn-local_save_flags-local_irq_disable-into-local_irq_save-in-headers.patch arch-cris-user-array_size-macro-when-appropriate.patch Will merge. uml-console-locking-fixes.patch uml-return-hotplug-errors-to-host.patch uml-console-whitespace-and-comment-tidying.patch uml-lock-the-irqs_to_free-list.patch uml-add-locking-to-network-transport-registration.patch uml-network-driver-whitespace-and-style-fixes.patch uml-watchdog-driver-locking.patch uml-watchdog-driver-formatting.patch uml-audio-driver-locking.patch uml-audio-driver-formatting.patch uml-mconsole-locking.patch uml-make-two-variables-static.patch uml-port-driver-formatting.patch uml-kill-a-compilation-warning.patch uml-network-driver-locking-and-code-cleanup.patch uml-use-list_head-where-possible.patch uml-locking-commentary-in-the-random-driver.patch uml-mostly-const-a-structure.patch uml-chan_userh-formatting-fices.patch uml-console-locking-commentary-and-code-cleanup.patch uml-fix-previous-console-locking.patch uml-locking-comments-in-iomem-driver.patch uml-memc-and-physmemc-formatting-fixes.patch uml-initialize-a-list-head.patch uml-make-time-data-per-cpu.patch uml-delete-unused-file.patch uml-remove-unused-variable-and-function.patch uml-make-signal-handlers-static.patch uml-const-a-variable.patch uml-remove-code-controlled-by-non-existent-config-option.patch uml-add-per-device-queues-and-locks-to-ubd-driver.patch uml-locking-fixes-in-the-ubd-driver.patch uml-locking-comments-in-memory-and-tempfile-code.patch uml-locking-comments-in-startup-code.patch uml-style-fixes-in-startup-code.patch uml-libc-dependent-code-should-call-libc-directly.patch uml-fix-style-violations.patch uml-fix-apparent-config_64_bit-typo.patch uml-irq-handler-tidying.patch uml-sigio-locking-comment.patch uml-sigio-formatting-fixes.patch uml-umid-tidying.patch uml-elf-locking-commentary.patch uml-register-handling-formatting-fixes.patch uml-aio-locking-and-tidying.patch Will merge. arch-v850-user-array_size-macro-when-appropriate.patch Will merge. deprecate-smbfs-in-favour-of-cifs.patch deprecate-smbfs-in-favour-of-cifs-docs.patch Will re-poll sfrench. Probably no-merge. drivers-add-lcd-support-3.patch drivers-add-lcd-support-3-Kconfig-fix.patch drivers-add-lcd-support-update-4.patch drivers-add-lcd-support-update-5.patch drivers-add-lcd-support-update6.patch drivers-add-lcd-support-update-7.patch drivers-add-lcd-support-update-8.patch drivers-add-lcd-support-update-9.patch drivers-add-lcd-support-workqueue-fixups.patch Will merge. cpuset-remove-sched-domain-hooks-from-cpusets.patch Hold. doc-atomic_add_unless-doesnt-imply-mb-on-failure.patch Might hold. add-retain_initrd-boot-option.patch add-retain_initrd-boot-option-tweak.patch Vivek didn't like this. I need to re-poll. vt-refactor-console-sak-processing.patch sysctl_ms_jiffies-fix-oldlen-semantics.patch remove-include-linux-byteorder-pdp_endianh.patch 9p-use-kthread_stop-instead-of-sending-a-sigkill.patch count_vm_events-warning-fix.patch char-tty-delete-wake_up_interruptible-after-tty_wakeup.patch disable-init-initramfsc-updated.patch disable-init-initramfsc-updated-fix.patch disable-init-initramfsc-architectures.patch usr-gen_init_cpioc-support-for-hard-links.patch ioc3-ioc4-pci-mem-space-resources.patch char-isicom-remove-tty_hangwakeup-bottomhalves.patch procfs-fix-race-between-proc_readdir-and-remove_proc_entry.patch procfs-fix-race-between-proc_readdir-and-remove_proc_entry-fix.patch struct-vfsmount-keep-mnt_count-mnt_expiry_mark-away-from-mnt_flags.patch avoid-one-conditional-branch-in-touch_atime.patch mxser-remove-ambiguous-redefinition-of-init_work.patch make-drivers-char-mxser_newcmxser_hangup-static.patch char-isicom-fix-locking-in-isr.patch char-isicom-augment-card_reset.patch char-isicom-check-card-state-in-isr.patch char-isicom-support-higher-rates.patch char-isicom-correct-probing-removing.patch char-tty_wakeup-cleanup.patch kill_pid_info-kill-acquired_tasklist_lock.patch lockdep-also-check-for-freed-locks-in-kmem_cache_free.patch lockdep-more-unlock-on-error-fixes.patch lockdep-more-unlock-on-error-fixes-fix.patch lockdep-add-graph-depth-information-to-proc-lockdep.patch igrab-should-check-for-i_clear.patch consolidate-line-discipline-number-definitions-v2.patch consolidate-line-discipline-number-definitions-v2-sparc-fix.patch consolidate-line-discipline-number-definitions-v2-fix-2.patch scrub-non-__glibc__-checks-in-linux-socketh-and-linux-stath.patch drivers-char-vc_screenc-proper-prototypes.patch transform-kmem_cache_allocmemset0-kmem_cache_zalloc.patch serial-serial_txx9-driver-update.patch relay-add-cpu-hotplug-support.patch ext2-skip-pages-past-number-of-blocks-in-ext2_find_entry.patch char-mxser_new-mark-init-functions.patch char-mxser_new-remove-useless-spinlock.patch char-serial167-cleanup.patch char-n_r3964-cleanup.patch consolidate-default-sched_clock.patch pktcdvd-cleanup.patch pnp-export-pnp_bus_type.patch char-mxser_new-remove-unused-stuff.patch char-mxser-obsolete-old-nonexperimental-new.patch char-mxser_new-remove-tty_wakeup-bottomhalf.patch char-mxser_new-clean-request_irq-call.patch doc-isicom-remove-reserved-ioctl-number.patch char-mxser_new-alter-locking-in-isr.patch char-mxser_new-header-file-cleanup.patch char-mxser_new-less-loops-in-isr.patch char-mxser_new-fix-twice-resource-releasing.patch char-mxser_new-do-not-put-pdev.patch char-mxser_new-upgrade-to-1915.patch char-mxser_new-upgrade-to-1915-fix.patch char-mxser_new-do-not-null-driver_data.patch char-mxser_new-lock-count-and-flags.patch char-mxser_new-fix-sparse-warning.patch add-taint_user-and-ability-to-set-taint-flags-from-userspace.patch add-taint_user-and-ability-to-set-taint-flags-from-userspace-fix.patch add-taint_user-and-ability-to-set-taint-flags-from-userspace-fix-2.patch char-moxa-remove-unused-allocated-page.patch char-moxa-do-not-initialize-global-static.patch char-moxa-timers-cleanup.patch char-moxa-remove-hangup-bottomhalf.patch char-moxa-remove-unused-functions.patch char-moxa-devids-cleanup.patch char-moxa-use-pci_device.patch char-moxa-eliminate-typedefs.patch char-moxa-macros-cleanup.patch char-moxa-use-del_timer_sync.patch char-moxa-remove-moxa_pci_devinfo.patch char-moxa-variables-cleanup.patch char-moxa-remove-useless-vairables.patch char-moxa-pci_probing-prepare.patch char-moxa-pci-probing.patch docbook-html-generate-chapter-section-level-tocs-for-functions.patch docbook-html-correction-of-recursive-a-tags-in-html-output.patch export-invalidate_mapping_pages-to-modules.patch remove-invalidate_inode_pages.patch use-cycle_t-instead-of-u64-in-struct-time_interpolator.patch fix-sparse-warnings-from-asmnet-checksumh.patch add-an-rcu-version-of-list-splicing.patch add-an-rcu-version-of-list-splicing-fix.patch ipmi-fix-some-rcu-problems.patch ipmi-fix-some-rcu-problems-update.patch clone-flag-clone_parent_tidptr-leaves-invalid-results-in-memory.patch factor-outstanding-i-o-error-handling.patch factor-outstanding-i-o-error-handling-tidy.patch sync_sb_inodes-propagate-errors.patch block_write_full_page-handle-enospc.patch get-rid-of-double-zeroing-of-allocated-pages.patch relax-check-for-aix-in-msdos-partition-table.patch msdos-partitions-fix-logic-error-in-aix-detection.patch add-const-for-timespecval_compare-arguments.patch schedule-obsolete-oss-drivers-for-removal-3rd-round.patch sysctl-warning-fix.patch proc_misc-warning-fix.patch remove-unnecessary-memset0-calls-after-kzalloc-calls.patch kernel-doc-allow-a-little-whitespace.patch proc-remove-useless-and-buggy-nlink-settings.patch sysrq-alphabetize-command-keys-doc.patch kernel-doc-allow-more-whitespace.patch tty-improve-encode_baud_rate-logic.patch simplify-the-stacktrace-code.patch discuss-a-couple-common-errors-in-kernel-doc-usage.patch numerous-fixes-to-kernel-doc-info-in-source-files.patch common-compat_sys_sysinfo-v2.patch remove-a-couple-final-references-to-obsolete-verify_area.patch local_t-documentation.patch local_t-documentation-fix.patch rtc-framework-driver-for-cmos-rtcs.patch rtc-framework-driver-for-cmos-rtcs-fix.patch rtc-framework-driver-for-cmos-rtcs-fix-2.patch acpi-updates-rtc-cmos-device-platform_data.patch make-bh_unwritten-a-first-class-bufferhead-flag-v2.patch make-xfs-use-bh_unwritten-and-bh_delay-correctly.patch docbook-add-edd-firmware-interfaces.patch kernel-doc-fix-some-odd-spacing-issues.patch serial-support-for-new-board.patch cleanup-linux-byteorder-swabbh.patch ext3-refuse-ro-to-rw-remount-of-fs-with-orphan.patch ext4-refuse-ro-to-rw-remount-of-fs-with-orphan.patch audit-fix-audit_filter_user_rules-initialization-bug.patch raw-dont-allow-the-creation-of-a-raw-device-with-minor-number-0.patch fix-rmmod-read-write-races-in-proc-entries.patch sn2-use-static-proc_fops.patch seq_file-conversion-coda.patch fix-umask-when-noacl-kernel-meets-extn-tuned-for-acls.patch seq_file-conversion-toshibac.patch return-enoent-from-ext3_link-when-racing-with-unlink.patch return-enoent-from-ext3_link-when-racing-with-unlink-fix.patch remove-ext_inc_count-and-_dec_count.patch remove-the-last-reference-to-rwlock_is_locked-macro.patch consolidate-bust_spinlocks.patch extract-and-use-wake_up_klogd.patch extend-the-set-of-__attribute__-shortcut-macros.patch documentation-rbtreetxt-updated.patch replace-highest_possible_node_id-with-nr_node_ids.patch replace-highest_possible_node_id-with-nr_node_ids-fix.patch convert-highest_possible_processor_id-to-nr_cpu_ids.patch convert-highest_possible_processor_id-to-nr_cpu_ids-fix.patch slab-reduce-size-of-alien-cache-to-cover-only-possible-nodes.patch buffer-memorder-fix.patch remove-final-reference-to-superfluous-smp_commence.patch cleanup-include-linux-xattrh.patch cleanup-include-linux-reiserfs_xattrh.patch replace-regular-code-with-appropriate-calls-to-container_of.patch remove-dead-kernel-config-option-aedsp16_mpu401.patch remove-references-to-obsolete-kernel-config-option-debug_rwsems.patch remove-unused-kernel-config-option-zisofs_fs.patch remove-unused-kernel-config-option-lcd_device.patch remove-unused-kernel-config-option-paride_parport.patch order-of-lockdep-off-on-in-vprintk-should-be-changed.patch minimize-lockdep_on-off-side-effect.patch some-rtc-documentation-updates.patch drivers-block-dac960-converted-boolean-to-bool.patch mxser-remove-useless-fields.patch fix-apparent-typo-config_lockdep_debug.patch ext-jbd-layer-function-called-instead-of-fs-specific-one.patch highmem-catch-illegal-nesting.patch change-constant-zero-to-notify_done-in-ratelimit_handler.patch fix-sparse-annotation-of-spin-unlock-macros-in-one-case.patch _proc_do_string-fix-short-reads.patch move-task_xacct-task_io_accounting-up-in-menus.patch ifdef-rchar-wchar-syscr-syscw-from-task_struct.patch tty-cleanup-release_mem.patch filesystem-disk-errors-at-boot-time-caused-by-probe.patch filesystem-disk-errors-at-boot-time-caused-by-probe-tidy.patch filesystem-disk-errors-at-boot-time-caused-by-probe-tidy-fixes.patch rapidio-fix-multi-switch-enumeration.patch allow-access-to-proc-pid-fd-after-setuid.patch allow-access-to-proc-pid-fd-after-setuid-fix.patch allow-access-to-proc-pid-fd-after-setuid-update.patch char-amiserial-turn-local_save_flags-local_irq_disable-into-local_irq_save.patch register_chrdev_region-dont-hand-out-the-local-experimental-majors.patch register_blkdev-dont-hand-out-the-local-experimental-majors.patch ntfs-rename-incorrect-check-of-ntfs_debug-with-just-debug.patch serial-add-pcmcia-ids-for-quatech-dsp-100-dual-rs232.patch fix-d_path-for-lazy-unmounts.patch char-use-more-pci_device-macro.patch char-cyclades-use-pci_device_id.patch include-linux-kernelh-remove-labs.patch quota-have-linux-quotah-include-linux-rwsemh-explicitly.patch maintainers-remove-two-dead-e-mail.patch shm-make-sysv-ipc-shared-memory-use-stacked-files.patch fs-fix-__block_write_full_page-error-case-buffer-submission.patch fix-the-defaults-mentioned-in-documentation-nfsroottxt.patch scnprintf-fix-comment.patch move-remove_dquot_ref-to-dqoutc.patch remove-sb-s_files-and-file_list_lock-usage-in-dquotc.patch inotify-read-return-val-fix.patch debug-shared-irqs.patch debug-shared-irqs-kconfig-fix.patch kernel-shut-up-the-irq-mismatch-messages.patch w1-use-array_size-macro-when-appropriate.patch oss-use-array_size-macro-when-appropriate.patch oss-use-array_size-macro-when-appropriate-2.patch reiserfs-use-array_size-macro-when-appropriate.patch ext2-3-4-fix-file-date-underflow-on-ext2-3-filesystems-on-64-bit-systems.patch ipc-save-the-ipc-namespace-while-reading-proc-files.patch warning-fix-unsigned-signed.patch atmel_serial-use-__raw-i-o-register-access.patch swiotlb-uninlinings.patch kexec-fix-references-to-init-in-documentation-for-kexe.patch lockdep-forward-declare-struct-task_struct.patch com20020-build-fix.patch fs-speedup-rw_verify_area.patch drivers-isdn-gigaset-reduce-mutex-scope.patch drivers-isdn-gigaset-reduce-kernel-message-spam.patch close_files-add-scheduling-point.patch Misc. Will mostly-merge. A few of the above need people to be re-polled. spi-kconfig-fix.patch spi-controller-driver-for-omap-microwire.patch spi-controller-driver-for-omap-microwire-tidy.patch spi-controller-driver-for-omap-microwire-update.patch spi-controller-driver-for-omap-microwire-update-fix.patch spi-freescale-imx-spi-controller-driver-bis.patch spi-freescale-imx-spi-controller-driver-v5.patch spi-add-spi_set_drvdata-and-spi_get_drvdata.patch spi-documentation-does-not-need-to-set-drivers-bus_type-field.patch spi-remove-return-in-spi_unregister_driver.patch spi_bitbang-use-overridable-setup_transfer-method.patch spi-cleanup-method-param-becomes-non-const.patch spi-doc-clarifications.patch rtc-gets-sysfs-wakealarm-attribute.patch spi-eeprom-driver.patch spi-eeprom-driver-cleanups.patch spi-eeprom-learns-about-8-and-24-bit-addressing.patch Will merge. add-shared-version-of-apm-emulation.patch arm-convert-to-use-shared-apm-emulation.patch mips-convert-to-use-shared-apm-emulation.patch mips-convert-to-use-shared-apm-emulation-fix.patch sh-convert-to-use-shared-apm-emulation.patch Will merge. minix-v3-support.patch Will merge. make-static-counters-in-new_inode-and-iunique-be-32-bits.patch change-libfs-sb-creation-routines-to-avoid-collisions-with-their-root-inodes.patch Am a bit wobbly about this due to the additional overhead. Opinions are sought. tty-make-__proc_set_tty-static.patch tty-clarify-disassociate_ctty.patch tty-fix-the-locking-for-signal-session-in-disassociate_ctty.patch signal-use-kill_pgrp-not-kill_pg-in-the-sunos-compatibility-code.patch signal-rewrite-kill_something_info-so-it-uses-newer-helpers.patch pid-make-session_of_pgrp-use-struct-pid-instead-of-pid_t.patch pid-use-struct-pid-for-talking-about-process-groups-in-exitc.patch pid-replace-is_orphaned_pgrp-with-is_current_pgrp_orphaned.patch tty-update-the-tty-layer-to-work-with-struct-pid.patch pid-replace-do-while_each_task_pid-with-do-while_each_pid_task.patch pid-remove-now-unused-do_each_task_pid-and-while_each_task_pid.patch pid-remove-the-now-unused-kill_pg-kill_pg_info-and-__kill_pg_info.patch Will merge. vmi-versus-hrtimers.patch add-irq-flag-to-disable-balancing-for-an-interrupt.patch add-a-functions-to-handle-interrupt-affinity-setting.patch add-a-functions-to-handle-interrupt-affinity-setting-alpha-fix.patch hz-free-ntp.patch uninline-jiffiesh-functions.patch fix-multiple-conversion-bugs-in-msecs_to_jiffies.patch fix-timeout-overflow-with-jiffies.patch gtod-persistent-clock-support.patch i386-use-gtod-persistent-clock-support.patch i386-remove-useless-code-in-tscc.patch simplify-the-registration-of-clocksources.patch x86-rewrite-smp-tsc-sync-code.patch clocksource-replace-is_continuous-by-a-flag-field.patch clocksource-replace-is_continuous-by-a-flag-field-fix.patch clocksource-fixup-is_continous-changes-on-arm.patch clocksource-fixup-is_continous-changes-on-avr32.patch clocksource-fixup-is_continous-changes-on-s390.patch clocksource-fixup-is_continous-changes-on-mips.patch clocksource-remove-the-update-callback.patch clocksource-add-verification-watchdog-helper.patch mark-tsc-on-geodelx-reliable.patch uninline-irq_enter.patch fix-cascade-lookup-of-next_timer_interrupt.patch extend-next_timer_interrupt-to-use-a-reference-jiffie.patch hrtimers-namespace-and-enum-cleanup.patch hrtimers-namespace-and-enum-cleanup-vs-git-input.patch hrtimers-cleanup-locking.patch hrtimers-add-state-tracking.patch hrtimers-clean-up-callback-tracking.patch hrtimers-move-and-add-documentation.patch acpi-fix-missing-include-for-up.patch acpi-keep-track-of-timer-broadcasting.patch allow-early-access-to-the-power-management-timer.patch i386-apic-clean-up-the-apic-code.patch clockevents-add-core-functionality.patch tick-management-core-functionality.patch tick-management-broadcast-functionality.patch tick-management-dyntick--highres-functionality.patch #tick-management-dyntick--highres-functionality-fix.patch #tick-management-dyntick--highres-functionality-fix-2.patch clockevents-i383-drivers.patch i386-rework-local-apic-timer-calibration.patch i386-prepare-for-dyntick.patch i386-prepare-nmi-watchdog-for-dynticks.patch i386-enable-dynticks-in-kconfig.patch hrtimers-add-high-resolution-timer-support.patch hrtimers-prevent-possible-itimer-dos.patch add-debugging-feature-proc-timer_stat.patch add-debugging-feature-proc-timer_stat-cleanup.patch add-debugging-feature-proc-timer_list.patch add-sysrq-q-to-print-timer_list-debug-info.patch generic-vsyscall-gtod-support-for-generic_time.patch generic-vsyscall-gtod-support-for-generic_time-tidy.patch time-x86_64-hpet_address-cleanup.patch revert-x86_64-mm-ignore-long-smi-interrupts-in-clock-calibration.patch time-x86_64-split-x86_64-kernel-timec-up.patch time-x86_64-split-x86_64-kernel-timec-up-tidy.patch time-x86_64-split-x86_64-kernel-timec-up-fix.patch reapply-x86_64-mm-ignore-long-smi-interrupts-in-clock-calibration.patch time-x86_64-convert-x86_64-to-use-generic_time.patch time-x86_64-convert-x86_64-to-use-generic_time-fix.patch time-x86_64-convert-x86_64-to-use-generic_time-tidy.patch time-x86_64-hpet-fixup-clocksource-changes.patch time-x86_64-tsc-fixup-clocksource-changes.patch time-x86_64-re-enable-vsyscall-support-for-x86_64.patch time-x86_64-re-enable-vsyscall-support-for-x86_64-tidy.patch posix-timers-rcu-optimization-for-clock_gettime.patch posix-timers-rcu-optimization-for-clock_gettime-fix.patch hrtimers, dynticks, use generic-time on x86_64: will merge. genirq-do-not-mask-interrupts-by-default.patch genirq-remove-irq_disabled.patch Will merge. schedule_on_each_cpu-use-preempt_disable.patch reimplement-flush_workqueue.patch implement-flush_work.patch implement-flush_work-sanity.patch implement-flush_work_keventd.patch flush_workqueue-use-preempt_disable-to-hold-off-cpu-hotplug.patch flush_cpu_workqueue-dont-flush-an-empty-worklist.patch aio-use-flush_work.patch kblockd-use-flush_work.patch relayfs-use-flush_keventd_work.patch tg3-use-flush_keventd_work.patch e1000-use-flush_keventd_work.patch libata-use-flush_work.patch phy-use-flush_work.patch umm, not sure. Need to re-review and poke Oleg. extend-notifier_call_chain-to-count-nr_calls-made.patch extend-notifier_call_chain-to-count-nr_calls-made-fixes.patch extend-notifier_call_chain-to-count-nr_calls-made-fixes-2.patch extend-notifier_call_chain-to-count-nr_calls-made-fixes-3.patch define-and-use-new-eventscpu_lock_acquire-and-cpu_lock_release.patch define-and-use-new-eventscpu_lock_acquire-and-cpu_lock_release-fix.patch eliminate-lock_cpu_hotplug-in-kernel-schedc.patch eliminate-lock_cpu_hotplug-in-kernel-schedc-fix.patch call-cpu_chain-with-cpu_down_failed-if-cpu_down_prepare-failed.patch slab-use-cpu_lock_.patch workqueue-fix-freezeable-workqueues-implementation.patch workqueue-fix-flush_workqueue-vs-cpu_dead-race.patch workqueue-dont-clear-cwq-thread-until-it-exits.patch workqueue-dont-migrate-pending-works-from-the-dead-cpu.patch workqueue-kill-run_scheduled_work.patch workqueue-dont-save-interrupts-in-run_workqueue.patch workqueue-dont-save-interrupts-in-run_workqueue-update-2.patch workqueue-make-cancel_rearming_delayed_workqueue-work-on-idle-dwork.patch workqueue-introduce-cpu_singlethread_map.patch workqueue-introduce-workqueue_struct-singlethread.patch workqueue-make-init_workqueues-__init.patch Will merge. slab-shutdown-cache_reaper-when-cpu-goes-down.patch Will merge. move-page-writeback-acounting-out-of-macros.patch per-backing_dev-dirty-and-writeback-page-accounting.patch per-backing_dev-dirty-and-writeback-page-accounting-fix.patch Hold. ext2-reservations.patch ext2-fix-reservation-extension.patch make-ext2_get_blocks-static.patch ext2-balloc-fix-_with_rsv-freeze.patch ext2-balloc-reset-windowsz-when-full.patch ext2-balloc-fix-off-by-one-against-rsv_end.patch ext2-balloc-fix-off-by-one-against-grp_goal.patch ext2-balloc-say-rb_entry-not-list_entry.patch ext2-balloc-use-io_error-label.patch I don't know how much testing this has had. Will hold. edac-e752x-bit-mask-fix.patch edac-e752x-byte-access-fix.patch edac-fix-in-e752x-mc-driver.patch edac-add-memory-scrubbing-controls-api-to-core.patch edac-add-fully-buffered-dimm-apis-to-core.patch Will merge. edac-new-opteron-athlon64-memory-controller-driver.patch drivers-edac-make-code-static.patch pci_module_init-convertion-for-k8_edacc.patch edac-k8-driver-coding-tidy.patch edac-k8-memory-scrubbing-patch.patch Can't seem to get Andi and Alan to agree over this. Help. gpio-core.patch omap-gpio-wrappers.patch omap-gpio-wrappers-tidy.patch at91-gpio-wrappers.patch at91-gpio-wrappers-tidy.patch pxa-gpio-wrappers.patch sa1100-gpio-wrappers.patch s3c2410-gpio-wrappers.patch Will merge. drivers-isdn-pcbit-proper-prototypes.patch drivers-isdn-hisax-proper-prototypes.patch drivers-isdn-sc-proper-prototypes.patch isdn-capi-use-array_size-when-appropriate.patch isdn-fix-typo-config_hisax_quadro-config_hisax_sct_quadro.patch isdn-rename-some-debugging-macros-to-not-resemble-config.patch isdn-rename-debug-option-config_serial_nopause_io.patch isdn-remove-defunct-test-emulator.patch isdn-rename-special-macro-config_hisax_hfc4s8s_pcimem.patch drivers-isdn-hardware-eicon-convert-to-generic-boolean-values.patch drivers-isdn-hisax-convert-to-generic-boolean-values.patch workaround-capi-subsystem-locking-issue.patch isdn-eicon-use-array_size-macro-when-appropriate.patch Will merge. knfsd-sunrpc-update-internal-api-separate-pmap-register-and-temp-sockets.patch knfsd-sunrpc-allow-creating-an-rpc-service-without-registering-with-portmapper.patch knfsd-sunrpc-aplit-svc_sock_enqueue-out-of-svc_setup_socket.patch knfsd-sunrpc-cache-remote-peers-address-in-svc_sock.patch knfsd-sunrpc-dont-set-msg_name-and-msg_namelen-when-calling-sock_recvmsg.patch knfsd-sunrpc-add-a-function-to-format-the-address-in-an-svc_rqst-for-printing.patch knfsd-sunrpc-use-sockaddr_storage-to-store-address-in-svc_deferred_req.patch knfsd-sunrpc-provide-room-in-svc_rqst-for-larger-addresses.patch knfsd-sunrpc-make-rq_daddr-field-address-version-independent.patch knfsd-sunrpc-teach-svc_sendto-to-deal-with-ipv6-addresses.patch knfsd-sunrpc-teach-svc_sendto-to-deal-with-ipv6-addresses-tidy.patch knfsd-sunrpc-add-a-generic-function-to-see-if-the-peer-uses-a-secure-port.patch knfsd-sunrpc-support-ipv6-addresses-in-svc_tcp_accept.patch knfsd-sunrpc-support-ipv6-addresses-in-rpc-servers-udp-receive-path.patch knfsd-sunrpc-support-ipv6-addresses-in-rpc-servers-udp-receive-path-tidy.patch knfsd-sunrpc-fix-up-svc_create_socket-to-take-a-sockaddr-struct-length.patch include-linux-nfsd-consth-remove-nfs_super_magic.patch Will merge. ecryptfs-public-key-transport-mechanism.patch ecryptfs-public-key-transport-mechanism-fix.patch ecryptfs-public-key-packet-management.patch ecryptfs-public-key-packet-management-slab-fix.patch ecryptfs-xattr-flags-and-mount-options.patch ecryptfs-generalize-metadata-read-write.patch ecryptfs-generalize-metadata-read-write-fix.patch ecryptfs-generalize-metadata-read-write-fs-ecryptfs-make-code-static.patch ecryptfs-encrypted-passthrough.patch ecryptfs-convert-f_op-write-to-vfs_write.patch ecryptfs-convert-kmap-to-kmap_atomic.patch ecryptfs-open-code-flag-checking-and-manipulation.patch ecryptfs-add-flush_dcache_page-calls.patch ecryptfs-convert-lookup_one_len-to-lookup_one_len_nd.patch Will merge. fsaio-add-a-wait-queue-arg-to-the-wait_bit-action-routine.patch fsaio-add-a-wait-queue-arg-to-the-wait_bit-action-routine-gfs2-fix.patch fsaio-rename-__lock_page-to-lock_page_blocking.patch fsaio-interfaces-to-initialize-and-to-test-a-wait-bit-key.patch fsaio-add-a-default-io-wait-bit-field-in-task-struct.patch fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio.patch fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio-fix.patch fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio-fix-sparse-fix.patch fsaio-enable-asynchronous-wait-page-and-lock-page.patch fsaio-filesystem-aio-read.patch fsaio-aio-o_sync-filesystem-write.patch Will wait to see what happens with febrils. aio-is-unlikely.patch Will merge. rework-compat_sys_io_submit.patch fix-aioh-includes.patch fix-access_ok-checks.patch make-good_sigevent-non-static.patch make-good_sigevent-non-static-fix.patch make-__sigqueue_free-and.patch aio-completion-signal-notification.patch aio-completion-signal-notification-fix.patch aio-completion-signal-notification-fixes-and-cleanups.patch aio-completion-signal-notification-small-cleanup.patch add-listio-syscall-support.patch I guess these are dependent upon fsaio. sched-avoid-div-in-rebalance_tick.patch Will merge. mm-only-sched-add-a-few-scheduler-event-counters.patch sched2-sched-domain-sysctl.patch sched2-sched-domain-sysctl-use-ctl_unnumbered.patch -mm only. sched-add-above-background-load-function.patch mm-implement-swap-prefetching.patch mm-implement-swap-prefetching-vs-zvc-stuff.patch mm-implement-swap-prefetching-vs-zvc-stuff-2.patch mm-implement-swap-prefetching-use-ctl_unnumbered.patch swap_prefetch-vs-zoned-counters.patch add-include-linux-freezerh-and-move-definitions-from-prefetch.patch zvc-support-nr_slab_reclaimable--nr_slab_unreclaimable-swap_prefetch.patch reduce-max_nr_zones-swap_prefetch-remove-incorrect-use-of-zone_highmem.patch sched-cleanup-remove-task_t-convert-to-struct-task_struct-prefetch.patch numa-add-zone_to_nid-function-swap_prefetch.patch remove-uses-of-kmem_cache_t-from-mm-and-include-linux-slabh-prefetch.patch Hold. dynamic-kernel-command-line-common.patch dynamic-kernel-command-line-alpha.patch dynamic-kernel-command-line-arm.patch dynamic-kernel-command-line-arm26.patch dynamic-kernel-command-line-avr32.patch dynamic-kernel-command-line-cris.patch dynamic-kernel-command-line-frv.patch dynamic-kernel-command-line-h8300.patch dynamic-kernel-command-line-i386.patch dynamic-kernel-command-line-ia64.patch dynamic-kernel-command-line-ia64-fix.patch dynamic-kernel-command-line-m32r.patch dynamic-kernel-command-line-m68k.patch dynamic-kernel-command-line-m68knommu.patch dynamic-kernel-command-line-mips.patch dynamic-kernel-command-line-parisc.patch dynamic-kernel-command-line-powerpc.patch dynamic-kernel-command-line-ppc.patch dynamic-kernel-command-line-s390.patch dynamic-kernel-command-line-sh.patch dynamic-kernel-command-line-sh64.patch dynamic-kernel-command-line-sparc.patch dynamic-kernel-command-line-sparc64.patch dynamic-kernel-command-line-um.patch dynamic-kernel-command-line-v850.patch dynamic-kernel-command-line-x86_64.patch dynamic-kernel-command-line-xtensa.patch dynamic-kernel-command-line-fixups.patch i386-2048-byte-command-line.patch x86_64-2048-byte-command-line.patch ia64-2048-byte-command-line.patch Will merge. rcutorture-use-array_size-macro-when-appropriate.patch rcutorture-style-cleanup-avoid-=-null-in-boolean-tests.patch rcutorture-remove-redundant-assignment-to-cur_ops-in.patch Will merge. rcu-split-classic-rcu.patch rcu-softirq-for-rcu.patch rcu-fix-barriers.patch Will merge. #rcu-preemptible-rcu.patch #rcu-debug-trace-for-rcu.patch These are in disgrace because some code is assuming that rcu_read_lock() implies preempt_disable(), and these patches make that untrue. lutimesat-simplify-utime2.patch lutimesat-extend-do_utimes-with-flags.patch lutimesat-actual-syscall-and-wire-up-on-i386.patch Do we want this? Ulrich says so. Will merge, I guess. ufs2-write-mount-as-rw.patch ufs2-write-inodes-write.patch ufs2-write-block-allocation-update.patch Will merge. kvm-optimize-inline-assembly.patch kvm-fix-asm-constraint-for-lldt-instruction.patch kvm-fix-gva_to_gpa.patch kvm-vmx-handle-triple-faults-by-returning-exit_reason_shutdown-to-userspace.patch kvm-fix-mmu-going-crazy-of-guest-sets-cr0wp-==-0.patch kvm-svm-hack-initial-cpu-csbase-to-be-consistent-with-intel.patch kvm-two-way-apic-tpr-synchronization.patch kvm-vmx-reload-ds-and-es-even-in-64-bit-mode.patch kvm-fix-mismatch-between-32-bit-and-64-bit-abi.patch kvm-fix-vcpu-freeing-bug.patch hotplug-allow-modules-to-use-the-cpu-hotplug-notifiers.patch kvm-add-a-global-list-of-all-virtual-machines.patch kvm-add-a-global-list-of-all-virtual-machines-tidy.patch kvm-vmx-add-vcpu_clear.patch kvm-cpu-hotplug-support.patch kvm-host-suspend-resume-support.patch Will merge. utrace-utrace-tracehook.patch utrace-utrace-tracehook-ia64.patch utrace-utrace-tracehook-sparc64.patch utrace-utrace-tracehook-s390.patch utrace-utrace-regset.patch utrace-utrace-regset-ia64.patch utrace-utrace-regset-sparc64.patch utrace-utrace-regset-s390.patch utrace-utrace-core.patch utrace-utrace-ptrace-compat.patch utrace-utrace-ptrace-compat-ia64.patch utrace-utrace-ptrace-compat-sparc64.patch utrace-utrace-ptrace-compat-s390.patch utrace just got added to -mm. readahead-kconfig-options.patch readahead-kconfig-options-fix.patch radixtree-introduce-scan-hole-data-functions.patch mm-introduce-probe_page.patch mm-introduce-pg_readahead.patch readahead-add-look-ahead-support-to-__do_page_cache_readahead.patch readahead-insert-cond_resched-calls.patch readahead-minmax_ra_pages.patch readahead-events-accounting.patch readahead-events-accounting-make-readahead_debug_level-static.patch readahead-rescue_pages.patch readahead-sysctl-parameters.patch readahead-sysctl-parameters-use-ctl_unnumbered.patch readahead-sysctl-parameters-fix.patch readahead-sysctl-parameters-set-readahead_hit_rate=1.patch readahead-min-max-sizes.patch readahead-min-max-sizes-remove-get_readahead_bounds.patch readahead-min-max-sizes-increase-vm_min_readahead-to-32kb.patch readahead-state-based-method-aging-accounting.patch readahead-state-based-method-aging-accounting-vs-zvc-changes.patch readahead-state-based-method-routines.patch readahead-state-based-method.patch readahead-state-based-method-prevent-tiny-size.patch readahead-state-based-method-move-readahead_ratio-out-of-compute_thrashing_threshold.patch readahead-context-based-method.patch readahead-context-based-method-locking-fix.patch readahead-context-based-method-locking-fix-2.patch readahead-context-based-method-update-ra_min.patch readahead-context-based-method-remove-readahead_ratio.patch readahead-initial-method-guiding-sizes.patch readahead-initial-method-thrashing-guard-size.patch readahead-initial-method-user-recommended-size.patch readahead-initial-method-user-recommended-size-rename-to-read_ahead_initial_kb.patch readahead-initial-method.patch readahead-backward-prefetching-method.patch readahead-thrashing-recovery-method.patch readahead-thrashing-recovery-method-fix.patch readahead-call-scheme.patch readahead-call-scheme-ifdef-fix.patch readahead-call-scheme-build-fix.patch readahead-call-scheme-remove-get_readahead_bounds.patch readahead-call-scheme-fix-thrashed-unaligned-read.patch readahead-laptop-mode.patch readahead-laptop-mode-fix.patch readahead-loop-case.patch readahead-nfsd-case.patch readahead-nfsd-case-fix.patch readahead-nfsd-case-fix-uninitialized-ra_min-ra_max.patch readahead-nfsd-case-remove-ra_min.patch readahead-turn-on-by-default.patch readahead-remove-size-limit-on-read_ahead_kb.patch readahead-remove-size-limit-of-max_sectors_kb-on-read_ahead_kb.patch Hold. reiser4-sb_sync_inodes.patch reiser4-sb_sync_inodes-fix.patch reiser4-export-remove_from_page_cache.patch reiser4-export-remove_from_page_cache-fix.patch reiser4-export-radix_tree_preload.patch reiser4-export-find_get_pages.patch make-copy_from_user_inatomic-not-zero-the-tail-on-i386-vs-reiser4.patch reiser4.patch reiser4-configh.patch resier4-add-include-linux-freezerh-and-move-definitions-from.patch reiser4-reiser4_drop_page-dont-call-remove_from_page_cache.patch make-kmem_cache_destroy-return-void-reiser4.patch reiser4-hardirq-include-fix.patch reiser4-fix-trivial-tyops-which-were-hard-to-hit.patch reiser4-run-truncate_inode_pages-in-reiser4_delete_inode.patch reiser4-bug-fixes.patch reiser4-fix-gcc-ws-compains.patch fs-reiser4-possible-cleanups.patch reiser4-get_sb_dev-fix.patch reiser4-vs-zoned-allocator.patch inode_diet-replace-inodeugeneric_ip-with-inodei_private-reiser4.patch inode-diet-eliminate-i_blksize-and-use-a-per-superblock-default-reiser4.patch reiser4-vs-streamline-generic_file_-interfaces-and-filemap.patch reiser4-vs-streamline-generic_file_-interfaces-and-filemap-fix.patch reiser4-rename-generic_sounding_globalspatch.patch reiser4-get-rid-of-semaphores-wherever-it-is-possible.patch reiser4-decribe-new-atom-locking-and-nested-atom-locks-to-lock-validator.patch reiser4-use-generic-file-read.patch reiser4-use-generic-file-read-fix-readpages-unix-file.patch reiser4-simplify-reading-of-partially-converted-files.patch reiser4-use-page_offset.patch reiser4-use-reiser4_gfp_mask_get-in-reiser4-inode-allocation.patch reiser4-re-add-page_count-check-to-reiser4_releasepage.patch reiser4-restore-fibmap-ioctl-support-for-packed-files.patch reiser4-possible-cleanups-2.patch reiser4-format-subversion-numbers-heir-set-and-file-conversion.patch reiser4-format-subversion-numbers-heir-set-and-file-conversion-fix-readpages-cryptcompress.patch reiser4-cleanups-in-lzo-compression-library.patch reiser4-get-rid-of-deprecated-crypto-api.patch reiser4-get-rid-of-deprecated-crypto-api-build-fix.patch reiser4-fix-missed-unlock-and-exit_context.patch reiser4-use-list_head-instead-of-struct-blocknr.patch reiser4-use-list_empty-instead-of-list_empty_careful-for.patch reiser4-update-comments-fix-write-and-truncate-cryptcompress.patch reiser4-temp-fix.patch reiser4-fix-write_extent-1.patch #reiser4-fix-write_extent.patch fs-reiser4-possible-cleanups-2.patch fs-reiser4-more-possible-cleanups.patch reiser4-use-null-for-pointers.patch reiser4-kmem_cache_t-removal.patch reiser4-test_clear_page_dirty.patch reiser4-fix-readpage_cryptcompress.patch reiser4-improve-estimation-for-number-of-nodes-occupied.patch reiser4-drop-check_cryptcompress.patch reiser4-fix-freeze-and-corruption.patch reiser4-vs-git-block.patch reiser4-vs-git-block-2.patch reiser4-vs-git-block3.patch Hold. proper-backlight-selection-for-fbdev-drivers.patch fbdev-driver-for-s3-trio-virge.patch fbdev-driver-for-s3-trio-virge-update.patch remove-broken-video-drivers-v4.patch tgafb-switch-to-framebuffer_alloc.patch tgafb-fix-copying-overlapping-areas.patch tgafb-support-the-directcolor-visual.patch tgafb-fix-the-mode-register-setting.patch tgafb-module-support-fixes.patch tgafb-sync-on-green-support-fixes.patch tgafb-fix-the-pci-id-table.patch remove-bogus-con_is_present-prototypes.patch cyber2010-framebuffer-on-arm-netwinder-fix.patch cyber2010-framebuffer-on-arm-netwinder-fix-tidy.patch proper-prototype-for-tosh_smm.patch recognize-video=gx1fb-option.patch correct-apparent-typo-config_aty_ct-in-aty-video.patch pm3fb-kill-pci_find_device-usage.patch drivers-video-sis-convert-to-generic-boolean.patch matroxfb-use-kzalloc.patch remove-the-broken-fb_s3trio-driver.patch Will merge. drivers-mdc-use-array_size-macro-when-appropriate.patch md-dm-reduce-stack-usage-with-stacked-block-devices.patch -> neilb (The second one is getting idiotic. When are we going to fix this??) remove-555-unneeded-includes-of-schedh.patch Will merge. statistics-infrastructure-prerequisite-list.patch statistics-infrastructure-prerequisite-parser.patch statistics-infrastructure-prerequisite-timestamp.patch statistics-infrastructure-make-printk_clock-a-generic-kernel-wide-nsec-resolution.patch statistics-infrastructure-make-printk_clock-a-generic-kernel-wide-nsec-resolution-ia64-fix.patch statistics-infrastructure-documentation.patch statistics-infrastructure.patch statistics-infrastructure-fix-buffer-overflow-in-histogram-with-linear.patch statistics-infrastructure-fix-buffer-overflow-in-histogram-with-linear-tidy.patch statistics-infrastructure-adapt-output-format-of-utilisation-indicator.patch statistics-use-the-enhanced-percpu-interface.patch statistics-replace-inode-ugeneric_ip-with-i_private.patch statistics-infrastructure-exploitation-zfcp.patch zfcp-gather-hba-specific-latencies-in-statistics.patch Hold. mark-pci_module_init-deprecated.patch Will merge. oss-replace-kmallocmemset-combos-with-kzalloc.patch Will merge. mprotect-patch-for-use-by-slim.patch integrity-service-api-and-dummy-provider.patch integrity-service-api-and-dummy-provider-cleanup-use-of-configh.patch integrity-service-api-and-dummy-provider-compilation-warning-fix.patch integrity-service-api-and-dummy-provider-fix.patch slim-main-patch.patch slim-main-patch-socket_post_create-hook-return-code.patch slim-main-patch-misc-cleanups-requested-at-inclusion-time.patch slim-main-patch-handle-failure-to-register.patch slim-main-patch-fix-bug-with-mm_users-usage.patch slim-main-patch-security-slim-slm_mainc-make-2-functions-static.patch slim-main-include-fix.patch slim-secfs-patch.patch slim-secfs-patch-slim-correct-use-of-snprintf.patch slim-secfs-patch-cleanup-use-of-configh.patch slim-make-and-config-stuff.patch slim-make-and-config-stuff-makefile-fix.patch slim-debug-output.patch slim-debug-output-slm_set_taskperm-remove-horrible-error-handling-code.patch slim-fix-security-issue-with-the-task_post_setuid-hook.patch slim-secfs-inode-i_private-build-fix.patch slim-documentation.patch fdtable-make-fdarray-and-fdsets-equal-in-size-slim.patch panic-on-slim-selinux.patch Hold. mark-struct-file_operations-const-1.patch mark-struct-file_operations-const-2.patch mark-struct-file_operations-const-2-fix.patch mark-struct-file_operations-const-3.patch mark-struct-file_operations-const-4.patch mark-struct-file_operations-const-4-fix.patch mark-struct-file_operations-const-5.patch mark-struct-file_operations-const-6.patch mark-struct-file_operations-const-7.patch mark-struct-file_operations-const-8.patch mark-struct-file_operations-const-9.patch mark-struct-inode_operations-const-1.patch mark-struct-inode_operations-const-2.patch mark-struct-inode_operations-const-3.patch mark-struct-super_operations-const.patch Will merge. scheduled-removal-of-sa_xxx-interrupt-flags-fixups.patch scheduled-removal-of-sa_xxx-interrupt-flags-fixups-2.patch scheduled-removal-of-sa_xxx-interrupt-flags.patch scheduled-removal-of-sa_xxx-interrupt-flags-ata-fix.patch This removes SA_INTERRUPT and friends, so 10000000 external drivers won't compile any more. I think I'd prefer to find a way to get usage of SA_* to spit a deprecated warning. sysctl-x25-remove-unnecessary-insert_at_head-from-register_sysctl_table.patch sysctl-move-ctl_sunrpc-to-sysctlh-where-it-belongs.patch sysctl-sunrpc-remove-unnecessary-insert_at_head-flag.patch sysctl-sunrpc-dont-unnecessarily-set-ctl_table-de.patch sysctl-rose-remove-unnecessary-insert_at_head-flag.patch sysctl-netrom-remove-unnecessary-insert_at_head-flag.patch sysctl-llc-remove-unnecessary-insert_at_head-flag.patch sysctl-ipx-remove-unnecessary-insert_at_head-flag.patch sysctl-decnet-remove-unnecessary-insert_at_head-flag.patch sysctl-dccp-remove-unnecessary-insert_at_head-flag.patch sysctl-ax25-remove-unnecessary-insert_at_head-flag.patch sysctl-atalk-remove-unnecessary-insert_at_head-flag.patch sysctl-xfs-remove-unnecessary-insert_at_head-flag.patch sysctl-c99-convert-xfs-ctl_tables.patch sysctl-c99-convert-xfs-ctl_tables-fixes.patch sysctl-scsi-remove-unnecessary-insert_at_head-flag.patch sysctl-md-remove-unnecessary-insert_at_head-flag.patch sysctl-mac_hid-remove-unnecessary-insert_at_head-flag.patch sysctl-ipmi-remove-unnecessary-insert_at_head-flag.patch sysctl-cdrom-remove-unnecessary-insert_at_head-flag.patch sysctl-cdrom-dont-set-de-owner.patch sysctl-move-ctl_pm-into-sysctlh-where-it-belongs.patch sysctl-frv-pm-remove-unnecessary-insert_at_head-flag.patch sysctl-move-ctl_frv-into-sysctlh-where-it-belongs.patch sysctl-frv-remove-unnecessary-insert_at_head-flag.patch sysctl-c99-convert-arch-frv-kernel-pmc.patch sysctl-c99-convert-arch-frv-kernel-sysctlc.patch sysctl-sn-remove-sysctl-abi-breakage.patch sysctl-c99-convert-arch-ia64-sn-kernel-xpc_mainc.patch sysctl-c99-convert-arch-ia64-kernel-perfmon-and-remove-abi-breakage.patch sysctl-mips-au1000-remove-sys_sysctl-support.patch sysctl-c99-convert-the-ctl_tables-in-arch-mips-au1000-common-powerc.patch sysctl-c99-convert-arch-mips-lasat-sysctlc-and-remove-abi-breakage.patch sysctl-s390-move-sysctl-definitions-to-sysctlh.patch sysctl-s390-move-sysctl-definitions-to-sysctlh-fix.patch sysctl-s390-remove-unnecessary-use-of-insert_at_head.patch sysctl-c99-convert-ctl_tables-in-arch-powerpc-kernel-idlec.patch sysctl-c99-convert-ctl_tables-entries-in-arch-ppc-kernel-ppc_htabc.patch sysctl-c99-convert-arch-sh64-kernel-trapsc-and-remove-abi-breakage.patch sysctl-x86_64-remove-unnecessary-use-of-insert_at_head.patch sysctl-c99-convert-ctl_tables-in-arch-x86_64-ia32-ia32_binfmtc.patch sysctl-c99-convert-ctl_tables-in-arch-x86_64-kernel-vsyscallc.patch sysctl-c99-convert-ctl_tables-in-arch-x86_64-mm-initc.patch sysctl-remove-sys_sysctl-support-from-the-hpet-timer-driver.patch sysctl-remove-sys_sysctl-support-from-drivers-char-rtcc.patch sysctl-register-the-sysctl-number-used-by-the-arlan-driver.patch sysctl-c99-convert-ctl_tables-in-drivers-parport-procfsc.patch sysctl-c99-convert-ctl_tables-in-drivers-parport-procfsc-fix.patch sysctl-c99-convert-coda-ctl_tables-and-remove-binary-sysctls.patch sysctl-c99-convert-ctl_tables-in-ntfs-and-remove-sys_sysctl-support.patch sysctl-c99-convert-ctl_tables-in-ntfs-and-remove-sys_sysctl-support-fix.patch sysctl-register-the-ocfs2-sysctl-numbers.patch sysctl-move-init_irq_proc-into-init-main-where-it-belongs.patch sysctl-move-utsname-sysctls-to-their-own-file.patch sysctl-move-utsname-sysctls-to-their-own-file-fix-2.patch sysctl-move-sysv-ipc-sysctls-to-their-own-file.patch sysctl-move-sysv-ipc-sysctls-to-their-own-file-fix.patch sysctl-move-sysv-ipc-sysctls-to-their-own-file-fix-2.patch sysctl-create-sys-fs-binfmt_misc-as-an-ordinary-sysctl-entry.patch sysctl-create-sys-fs-binfmt_misc-as-an-ordinary-sysctl-entry-warning-fix.patch sysctl-remove-support-for-ctl_any.patch sysctl-remove-support-for-directory-strategy-routines.patch sysctl-remove-insert_at_head-from-register_sysctl.patch sysctl-remove-insert_at_head-from-register_sysctl-fix.patch sysctl-factor-out-sysctl_head_next-from-do_sysctl.patch sysctl-factor-out-sysctl_head_next-from-do_sysctl-warning-fix.patch sysctl-allow-sysctl_perm-to-be-called-from-outside-of-sysctlc.patch sysctl-reimplement-the-sysctl-proc-support.patch sysctl-reimplement-the-sysctl-proc-support-fix.patch sysctl-reimplement-the-sysctl-proc-support-warning-fix.patch sysctl-reimplement-the-sysctl-proc-support-fix-2.patch sysctl-reimplement-the-sysctl-proc-support-fix-3.patch sysctl-add-a-parent-entry-to-ctl_table-and-set-the-parent-entry.patch sysctl-remove-the-proc_dir_entry-member-for-the-sysctl-tables.patch sysctl-remove-the-proc_dir_entry-member-for-the-sysctl-tables-fix.patch sysctl-remove-the-proc_dir_entry-member-for-the-sysctl-tables-fix-2.patch sysctl-remove-the-proc_dir_entry-member-for-the-sysctl-tables-ntfs-fix.patch Will merge if we can sort out the selinux problems. make-sure-nobodys-leaking-resources.patch journal_add_journal_head-debug.patch page-owner-tracking-leak-detector.patch firestream-warnings.patch releasing-resources-with-children.patch nr_blockdev_pages-in_interrupt-warning.patch detect-atomic-counter-underflows.patch device-suspend-debug.patch #slab-cache-shrinker-statistics.patch mm-debug-dump-pageframes-on-bad_page.patch make-frame_pointer-default=y.patch i386-enable-4k-stacks-by-default.patch mutex-subsystem-synchro-test-module.patch mutex-subsystem-synchro-test-module-fix.patch slab-leaks3-default-y.patch profile-likely-unlikely-macros.patch profile_likely-export-do_check_likely.patch profile-likely-unlikely-macros_remove-likely-profiling-int-cast.patch profile-likely-unlikely-macros-x86_64-fix.patch vdso-print-fatal-signals.patch vdso-improve-print_fatal_signals-support-by-adding-memory-maps.patch vdso-print-fatal-signals-use-ctl_unnumbered.patch restore-rogue-readahead-printk.patch put_bh-debug.patch e1000_7033_dump_ring.patch e1000-printk-warning-fixes.patch acpi_format_exception-debug.patch lockdep-show-held-locks-when-showing-a-stackdump.patch lockdep-show-held-locks-when-showing-a-stackdump-fix.patch lockdep-show-held-locks-when-showing-a-stackdump-fix-2.patch add-debugging-aid-for-memory-initialisation-problems.patch add-debugging-aid-for-memory-initialisation-problems-fix.patch kmap_atomic-debugging.patch shrink_slab-handle-bad-shrinkers.patch ia64-enable-config_debug_spinlock_sleep.patch squash-ipc-warnings.patch squash-udf-warnings.patch -mm only stuff. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:07 -mm merge plans for 2.6.21 Andrew Morton @ 2007-02-08 23:12 ` Roland Dreier 2007-02-08 23:29 ` Jan Engelhardt ` (8 subsequent siblings) 9 siblings, 0 replies; 69+ messages in thread From: Roland Dreier @ 2007-02-08 23:12 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel > infiniband-work-around-gcc-bug-on-sparc64.patch > ehca-fix-memleak-on-module-unloading.patch > -> roland Sorry, I misunderstood your email. I thought it was just a CC of stuff you were already merging. I will handle these patches. - R. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:07 -mm merge plans for 2.6.21 Andrew Morton 2007-02-08 23:12 ` Roland Dreier @ 2007-02-08 23:29 ` Jan Engelhardt 2007-02-08 23:44 ` Andrew Morton 2007-02-09 10:57 ` Frederik Deweerdt 2007-02-08 23:34 ` Kyle McMartin ` (7 subsequent siblings) 9 siblings, 2 replies; 69+ messages in thread From: Jan Engelhardt @ 2007-02-08 23:29 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel On Feb 8 2007 15:07, Andrew Morton wrote: >scheduled-removal-of-sa_xxx-interrupt-flags-fixups.patch >scheduled-removal-of-sa_xxx-interrupt-flags-fixups-2.patch >scheduled-removal-of-sa_xxx-interrupt-flags.patch >scheduled-removal-of-sa_xxx-interrupt-flags-ata-fix.patch > > This removes SA_INTERRUPT and friends, so 10000000 external drivers won't > compile any more. I think I'd prefer to find a way to get usage of SA_* to > spit a deprecated warning. Here's an idea: #define SA_INTERRUPT sa_interrupt_with_warning() static inline int sa_interrupt_with_warning(void) { if(more_or_less_often) printk(fat_warning); return 0x123456; /* whatever numerical value it is */ } Jan -- ft: http://freshmeat.net/p/chaostables/ ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:29 ` Jan Engelhardt @ 2007-02-08 23:44 ` Andrew Morton 2007-02-09 15:02 ` Thomas Gleixner 2007-02-09 10:57 ` Frederik Deweerdt 1 sibling, 1 reply; 69+ messages in thread From: Andrew Morton @ 2007-02-08 23:44 UTC (permalink / raw) To: Jan Engelhardt; +Cc: linux-kernel On Fri, 9 Feb 2007 00:29:06 +0100 (MET) Jan Engelhardt <jengelh@linux01.gwdg.de> wrote: > > On Feb 8 2007 15:07, Andrew Morton wrote: > > >scheduled-removal-of-sa_xxx-interrupt-flags-fixups.patch > >scheduled-removal-of-sa_xxx-interrupt-flags-fixups-2.patch > >scheduled-removal-of-sa_xxx-interrupt-flags.patch > >scheduled-removal-of-sa_xxx-interrupt-flags-ata-fix.patch > > > > This removes SA_INTERRUPT and friends, so 10000000 external drivers won't > > compile any more. I think I'd prefer to find a way to get usage of SA_* to > > spit a deprecated warning. > > Here's an idea: > > #define SA_INTERRUPT sa_interrupt_with_warning() > static inline int sa_interrupt_with_warning(void) { > if(more_or_less_often) > printk(fat_warning); > return 0x123456; /* whatever numerical value it is */ > } > Yeah, this seems to work. --- a/include/linux/interrupt.h~deprecate-sa_interrupt-and-friends +++ a/include/linux/interrupt.h @@ -54,17 +54,32 @@ * Migration helpers. Scheduled for removal in 1/2007 * Do not use for new code ! */ -#define SA_INTERRUPT IRQF_DISABLED -#define SA_SAMPLE_RANDOM IRQF_SAMPLE_RANDOM -#define SA_SHIRQ IRQF_SHARED -#define SA_PROBEIRQ IRQF_PROBE_SHARED -#define SA_PERCPU IRQF_PERCPU - -#define SA_TRIGGER_LOW IRQF_TRIGGER_LOW -#define SA_TRIGGER_HIGH IRQF_TRIGGER_HIGH -#define SA_TRIGGER_FALLING IRQF_TRIGGER_FALLING -#define SA_TRIGGER_RISING IRQF_TRIGGER_RISING -#define SA_TRIGGER_MASK IRQF_TRIGGER_MASK +#define emit_old_interrupt_name(old, new) \ +static inline unsigned __deprecated emit_old_interrupt_name##old(void) \ +{ \ + return (new); \ +} + +emit_old_interrupt_name(SA_INTERRUPT, IRQF_DISABLED) +#define SA_INTERRUPT emit_old_interrupt_nameSA_INTERRUPT() +emit_old_interrupt_name(SA_SAMPLE_RANDOM, IRQF_SAMPLE_RANDOM) +#define SA_SAMPLE_RANDOM emit_old_interrupt_nameSA_SAMPLE_RANDOM() +emit_old_interrupt_name(SA_SHIRQ, IRQF_SHARED) +#define SA_SHIRQ emit_old_interrupt_nameSA_SHIRQ() +emit_old_interrupt_name(SA_PROBEIRQ, IRQF_PROBE_SHARED) +#define SA_PROBEIRQ emit_old_interrupt_nameSA_PROBEIRQ() +emit_old_interrupt_name(SA_PERCPU, IRQF_PERCPU) +#define SA_PERCPU emit_old_interrupt_nameSA_PERCPU() +emit_old_interrupt_name(SA_TRIGGER_LOW, IRQF_TRIGGER_LOW) +#define SA_TRIGGER_LOW emit_old_interrupt_nameSA_TRIGGER_LOW() +emit_old_interrupt_name(SA_TRIGGER_HIGH, IRQF_TRIGGER_HIGH) +#define SA_TRIGGER_HIGH emit_old_interrupt_nameSA_TRIGGER_HIGH() +emit_old_interrupt_name(SA_TRIGGER_FALLING, IRQF_TRIGGER_FALLING) +#define SA_TRIGGER_FALLING emit_old_interrupt_nameSA_TRIGGER_FALLING() +emit_old_interrupt_name(SA_TRIGGER_RISING, IRQF_TRIGGER_RISING) +#define SA_TRIGGER_RISING emit_old_interrupt_nameSA_TRIGGER_RISING() +emit_old_interrupt_name(SA_TRIGGER_MASK, IRQF_TRIGGER_MASK) +#define SA_TRIGGER_MASK emit_old_interrupt_nameSA_TRIGGER_MASK() typedef irqreturn_t (*irq_handler_t)(int, void *); _ For some reason enum foo { ... } __deprecated; doesn't work. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:44 ` Andrew Morton @ 2007-02-09 15:02 ` Thomas Gleixner 0 siblings, 0 replies; 69+ messages in thread From: Thomas Gleixner @ 2007-02-09 15:02 UTC (permalink / raw) To: Andrew Morton; +Cc: Jan Engelhardt, linux-kernel On Thu, 2007-02-08 at 15:44 -0800, Andrew Morton wrote: > Yeah, this seems to work. > > +#define emit_old_interrupt_name(old, new) \ > +static inline unsigned __deprecated emit_old_interrupt_name##old(void) \ > +{ \ > + return (new); \ > +} > + > +emit_old_interrupt_name(SA_INTERRUPT, IRQF_DISABLED) > +#define SA_INTERRUPT emit_old_interrupt_nameSA_INTERRUPT() /me cringes, but if it makes people happy, so be it. Please update the expiry date of this evil source of eye cancer. tglx diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 2dc5e5d..125a1c6 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt @@ -199,7 +199,7 @@ Who: Nick Piggin <npiggin@suse.de> --------------------------- What: Interrupt only SA_* flags -When: Januar 2007 +When: August 2007 Why: The interrupt related SA_* flags are replaced by IRQF_* to move them out of the signal namespace. ^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:29 ` Jan Engelhardt 2007-02-08 23:44 ` Andrew Morton @ 2007-02-09 10:57 ` Frederik Deweerdt 2007-02-09 11:24 ` Arjan van de Ven 1 sibling, 1 reply; 69+ messages in thread From: Frederik Deweerdt @ 2007-02-09 10:57 UTC (permalink / raw) To: Jan Engelhardt; +Cc: Andrew Morton, linux-kernel, tglx On Fri, Feb 09, 2007 at 12:29:06AM +0100, Jan Engelhardt wrote: > > On Feb 8 2007 15:07, Andrew Morton wrote: > > >scheduled-removal-of-sa_xxx-interrupt-flags-fixups.patch > >scheduled-removal-of-sa_xxx-interrupt-flags-fixups-2.patch > >scheduled-removal-of-sa_xxx-interrupt-flags.patch > >scheduled-removal-of-sa_xxx-interrupt-flags-ata-fix.patch > > > > This removes SA_INTERRUPT and friends, so 10000000 external drivers won't > > compile any more. I think I'd prefer to find a way to get usage of SA_* to > > spit a deprecated warning. > > Here's an idea: > > #define SA_INTERRUPT sa_interrupt_with_warning() > static inline int sa_interrupt_with_warning(void) { > if(more_or_less_often) > printk(fat_warning); > return 0x123456; /* whatever numerical value it is */ > } > I'd say that we want to warn the developper, not the user, isn't it? The attached patch marks the variables as __deprecated, and re-schedules the removal for January 2008. Regards, Frederik diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index b7c642c..4a5aad3 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt @@ -308,3 +308,12 @@ Why: OSS drivers with ALSA replacements Who: Adrian Bunk <bunk@stusta.de> --------------------------- + +What: Interrupt only SA_* flags +When: January 2008 +Why: The interrupt related SA_* flags are replaced by IRQF_* to move them + out of the signal namespace. + +Who: Frederik Deweerdt <deweerdt@free.fr> + +--------------------------- diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index e66b458..472f2d2 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -52,6 +52,25 @@ #define IRQF_PERCPU 0x00000400 #define IRQF_NOBALANCING 0x00000800 +/* + * Migration helpers. Scheduled for removal in 1/2008 + * SA_* flags are now deprecated, leaving time for out-of-the-tree drivers + * to catch up. + * + * Do not use for new code ! + */ +static const int __deprecated SA_INTERRUPT = IRQF_DISABLED; +static const int __deprecated SA_SAMPLE_RANDOM = IRQF_SAMPLE_RANDOM; +static const int __deprecated SA_SHIRQ = IRQF_SHARED; +static const int __deprecated SA_PROBEIRQ = IRQF_PROBE_SHARED; +static const int __deprecated SA_PERCPU = IRQF_PERCPU; + +static const int __deprecated SA_TRIGGER_LOW = IRQF_TRIGGER_LOW; +static const int __deprecated SA_TRIGGER_HIGH = IRQF_TRIGGER_HIGH; +static const int __deprecated SA_TRIGGER_FALLING = IRQF_TRIGGER_FALLING; +static const int __deprecated SA_TRIGGER_RISING = IRQF_TRIGGER_RISING; +static const int __deprecated SA_TRIGGER_MASK = IRQF_TRIGGER_MASK; + typedef irqreturn_t (*irq_handler_t)(int, void *); struct irqaction { ^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 10:57 ` Frederik Deweerdt @ 2007-02-09 11:24 ` Arjan van de Ven 2007-02-09 11:39 ` Andrew Morton 2007-02-10 11:42 ` Arnd Bergmann 0 siblings, 2 replies; 69+ messages in thread From: Arjan van de Ven @ 2007-02-09 11:24 UTC (permalink / raw) To: Frederik Deweerdt; +Cc: Jan Engelhardt, Andrew Morton, linux-kernel, tglx On Fri, 2007-02-09 at 10:57 +0000, Frederik Deweerdt wrote: > +static const int __deprecated SA_INTERRUPT = IRQF_DISABLED; > +static const int __deprecated SA_SAMPLE_RANDOM = IRQF_SAMPLE_RANDOM; > +static const int __deprecated SA_SHIRQ = IRQF_SHARED; > +static const int __deprecated SA_PROBEIRQ = IRQF_PROBE_SHARED; > +static const int __deprecated SA_PERCPU = IRQF_PERCPU; > + > +static const int __deprecated SA_TRIGGER_LOW = IRQF_TRIGGER_LOW; > +static const int __deprecated SA_TRIGGER_HIGH = IRQF_TRIGGER_HIGH; > +static const int __deprecated SA_TRIGGER_FALLING = IRQF_TRIGGER_FALLING; > +static const int __deprecated SA_TRIGGER_RISING = IRQF_TRIGGER_RISING; > +static const int __deprecated SA_TRIGGER_MASK = IRQF_TRIGGER_MASK; this will include these in every .o file for which the .c file includes the header. NOT GOOD(tm) why not just bite the bullet? removing version.h also broke the same all external modules, and they got fixed in days.. no big deal. kernel api change all the time, this one has been around in "double mode" quite some time... ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 11:24 ` Arjan van de Ven @ 2007-02-09 11:39 ` Andrew Morton 2007-02-09 12:32 ` Arjan van de Ven 2007-02-09 13:04 ` Andi Kleen 2007-02-10 11:42 ` Arnd Bergmann 1 sibling, 2 replies; 69+ messages in thread From: Andrew Morton @ 2007-02-09 11:39 UTC (permalink / raw) To: Arjan van de Ven; +Cc: Frederik Deweerdt, Jan Engelhardt, linux-kernel, tglx On Fri, 09 Feb 2007 12:24:33 +0100 Arjan van de Ven <arjan@infradead.org> wrote: > On Fri, 2007-02-09 at 10:57 +0000, Frederik Deweerdt wrote: > > +static const int __deprecated SA_INTERRUPT = IRQF_DISABLED; > > +static const int __deprecated SA_SAMPLE_RANDOM = IRQF_SAMPLE_RANDOM; > > +static const int __deprecated SA_SHIRQ = IRQF_SHARED; > > +static const int __deprecated SA_PROBEIRQ = IRQF_PROBE_SHARED; > > +static const int __deprecated SA_PERCPU = IRQF_PERCPU; > > + > > +static const int __deprecated SA_TRIGGER_LOW = IRQF_TRIGGER_LOW; > > +static const int __deprecated SA_TRIGGER_HIGH = IRQF_TRIGGER_HIGH; > > +static const int __deprecated SA_TRIGGER_FALLING = IRQF_TRIGGER_FALLING; > > +static const int __deprecated SA_TRIGGER_RISING = IRQF_TRIGGER_RISING; > > +static const int __deprecated SA_TRIGGER_MASK = IRQF_TRIGGER_MASK; > > this will include these in every .o file for which the .c file includes > the header. NOT GOOD(tm) As long as nobody takes the address of them (which wouldn't compile today anyway) then the compiler should be able to not allocate store for these. That they're const might help too. > why not just bite the bullet? > removing version.h also broke the same all external modules, and they > got fixed in days.. no big deal. kernel api change all the time, this > one has been around in "double mode" quite some time... Pretty much every driver in the world will want these symbols. I expect we'll help some people by doing this, and the cost to us is very small. Plus we're getting a bad reputation out there for breaking stuff and screwing people around, which isn't good. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 11:39 ` Andrew Morton @ 2007-02-09 12:32 ` Arjan van de Ven 2007-02-09 14:05 ` deweerdt 2007-02-09 13:04 ` Andi Kleen 1 sibling, 1 reply; 69+ messages in thread From: Arjan van de Ven @ 2007-02-09 12:32 UTC (permalink / raw) To: Andrew Morton; +Cc: Frederik Deweerdt, Jan Engelhardt, linux-kernel, tglx > > As long as nobody takes the address of them (which wouldn't compile today > anyway) then the compiler should be able to not allocate store for these. > That they're const might help too. are you really sure? > > > why not just bite the bullet? > > removing version.h also broke the same all external modules, and they > > got fixed in days.. no big deal. kernel api change all the time, this > > one has been around in "double mode" quite some time... > > Pretty much every driver in the world will want these symbols. I expect > we'll help some people by doing this, and the cost to us is very small. well the same people had to change for the request_irq prototype change etc etc. I suppose they'll all get fixed if some distro does this cleanup anyway... otherwise no amount of deprecation will get things changed; unless the compile actually breaks nobody will pay attention. Also quite a few external drivers that are aiming for mainline inclusion should already be using the new settings for a while anyway... Another option is to back out the change again totally; having 2 constants for the same thing is just a bad idea, and old users will keep sneaking in. -- if you want to mail me at work (you don't), use arjan (at) linux.intel.com Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 12:32 ` Arjan van de Ven @ 2007-02-09 14:05 ` deweerdt 0 siblings, 0 replies; 69+ messages in thread From: deweerdt @ 2007-02-09 14:05 UTC (permalink / raw) To: Arjan van de Ven Cc: Andrew Morton, Frederik Deweerdt, Jan Engelhardt, linux-kernel, tglx Quoting Arjan van de Ven <arjan@infradead.org>: > > > > > As long as nobody takes the address of them (which wouldn't compile today > > anyway) then the compiler should be able to not allocate store for these. > > That they're const might help too. > > are you really sure? I've run some tests, and the compiler seems to do the right thing -I must admit, that I trusted the compiler to do it blindly on my first attempt :)- , see below: > cat flag.h static const int __attribute__((__deprecated__)) SA_INTERRUPT = 0x123456; > cat use_flag.c #include <stdio.h> #include "flag.h" int main() { int flags = SA_INTERRUPT; printf("%d", flags); } > cat dont_use_flag.c #include <stdio.h> #include "flag.h" int main() { int flags = 0; printf("%d", flags); } > gcc --version gcc (GCC) 4.1.1 (Gentoo 4.1.1-r3) > for i in *use_flag.c; do gcc -o $(echo $i | sed 's/.c//') -O2 -g $i; done use_flag.c: In function 'main': use_flag.c:6: warning: 'SA_INTERRUPT' is deprecated (declared at flag.h:1) > size *use_flag text data bss dec hex filename 897 260 4 1161 489 dont_use_flag 897 260 4 1161 489 use_flag # The relevant parts of the compiled code, see how the flag is replaced with # the const value in the code. It does not result in a code size increment. > objdump -d {dont_,}use_flag | grep -A11 '<main>' 080483b0 <main>: 80483b0: 8d 4c 24 04 lea 0x4(%esp),%ecx 80483b4: 83 e4 f0 and $0xfffffff0,%esp 80483b7: ff 71 fc pushl 0xfffffffc(%ecx) 80483ba: 31 c0 xor %eax,%eax 80483bc: 55 push %ebp 80483bd: 89 e5 mov %esp,%ebp 80483bf: 51 push %ecx 80483c0: 83 ec 14 sub $0x14,%esp 80483c3: 89 44 24 04 mov %eax,0x4(%esp) 80483c7: c7 04 24 b8 84 04 08 movl $0x80484b8,(%esp) 80483ce: e8 05 ff ff ff call 80482d8 <printf@plt> -- 080483b0 <main>: 80483b0: 8d 4c 24 04 lea 0x4(%esp),%ecx 80483b4: 83 e4 f0 and $0xfffffff0,%esp 80483b7: ff 71 fc pushl 0xfffffffc(%ecx) 80483ba: b8 56 34 12 00 mov $0x123456,%eax 80483bf: 55 push %ebp 80483c0: 89 e5 mov %esp,%ebp 80483c2: 51 push %ecx 80483c3: 83 ec 14 sub $0x14,%esp 80483c6: 89 44 24 04 mov %eax,0x4(%esp) 80483ca: c7 04 24 b8 84 04 08 movl $0x80484b8,(%esp) 80483d1: e8 02 ff ff ff call 80482d8 <printf@plt> ======== With 3.4.3 ========== $ gcc --version gcc (GCC) 3.4.3 20050227 (Red Hat 3.4.3-22.fc3) $ size {dont_,}use_flag text data bss dec hex filename 851 256 4 1111 457 dont_use_flag 855 256 4 1115 45b use_flag [def@bigboss ~]$ objdump -d {dont_,}use_flag | grep -A11 '<main>' 08048368 <main>: 8048368: 55 push %ebp 8048369: 89 e5 mov %esp,%ebp 804836b: 83 ec 08 sub $0x8,%esp 804836e: 83 e4 f0 and $0xfffffff0,%esp 8048371: 83 ec 18 sub $0x18,%esp 8048374: 6a 00 push $0x0 8048376: 68 64 84 04 08 push $0x8048464 804837b: e8 30 ff ff ff call 80482b0 <printf@plt> -- 08048368 <main>: 8048368: 55 push %ebp 8048369: 89 e5 mov %esp,%ebp 804836b: 83 ec 08 sub $0x8,%esp 804836e: 83 e4 f0 and $0xfffffff0,%esp 8048371: 83 ec 18 sub $0x18,%esp 8048374: 68 56 34 12 00 push $0x123456 8048379: 68 68 84 04 08 push $0x8048468 804837e: e8 2d ff ff ff call 80482b0 <printf@plt> So I'd say that both in 3.4.3 and 4.1.1, no extra space is needed for the "const static int" flag. Regards, Frederik ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 11:39 ` Andrew Morton 2007-02-09 12:32 ` Arjan van de Ven @ 2007-02-09 13:04 ` Andi Kleen 2007-02-09 12:27 ` Jan Engelhardt 1 sibling, 1 reply; 69+ messages in thread From: Andi Kleen @ 2007-02-09 13:04 UTC (permalink / raw) To: Andrew Morton Cc: Arjan van de Ven, Frederik Deweerdt, Jan Engelhardt, linux-kernel, tglx Andrew Morton <akpm@linux-foundation.org> writes: > > As long as nobody takes the address of them (which wouldn't compile today > anyway) then the compiler should be able to not allocate store for these. This would only work for unit-at-a-time compilers (if it works at all, i'm not sure), but not older 3.x compilers > That they're const might help too. Don't think it does. -Andi ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 13:04 ` Andi Kleen @ 2007-02-09 12:27 ` Jan Engelhardt 0 siblings, 0 replies; 69+ messages in thread From: Jan Engelhardt @ 2007-02-09 12:27 UTC (permalink / raw) To: Andi Kleen Cc: Andrew Morton, Arjan van de Ven, Frederik Deweerdt, linux-kernel, tglx On Feb 9 2007 14:04, Andi Kleen wrote: >Andrew Morton <akpm@linux-foundation.org> writes: >> >> As long as nobody takes the address of them (which wouldn't compile today >> anyway) then the compiler should be able to not allocate store for these. > >This would only work for unit-at-a-time compilers (if it works at all, >i'm not sure), but not older 3.x compilers > >> That they're const might help too. > >Don't think it does. GCC 4.1 optimizes both Andrew's and Frederik Deweerdt's ideas perfectly out. Even if the const was not there in Frederik's example, gcc seems throw it out with -O2 (judging by `nm` output) since it is 1. static 2. unused. Gcc even gives out a warning that the item is unused when not marked with const. Jan -- ft: http://freshmeat.net/p/chaostables/ ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 11:24 ` Arjan van de Ven 2007-02-09 11:39 ` Andrew Morton @ 2007-02-10 11:42 ` Arnd Bergmann 2007-02-10 14:19 ` Frederik Deweerdt 1 sibling, 1 reply; 69+ messages in thread From: Arnd Bergmann @ 2007-02-10 11:42 UTC (permalink / raw) To: Arjan van de Ven Cc: Frederik Deweerdt, Jan Engelhardt, Andrew Morton, linux-kernel, tglx On Friday 09 February 2007 12:24, Arjan van de Ven wrote: > > On Fri, 2007-02-09 at 10:57 +0000, Frederik Deweerdt wrote: > > +static const int __deprecated SA_INTERRUPT = IRQF_DISABLED; > > +static const int __deprecated SA_SAMPLE_RANDOM = IRQF_SAMPLE_RANDOM; > > +static const int __deprecated SA_SHIRQ = IRQF_SHARED; > > +static const int __deprecated SA_PROBEIRQ = IRQF_PROBE_SHARED; > > +static const int __deprecated SA_PERCPU = IRQF_PERCPU; > > + > > +static const int __deprecated SA_TRIGGER_LOW = IRQF_TRIGGER_LOW; > > +static const int __deprecated SA_TRIGGER_HIGH = IRQF_TRIGGER_HIGH; > > +static const int __deprecated SA_TRIGGER_FALLING = IRQF_TRIGGER_FALLING; > > +static const int __deprecated SA_TRIGGER_RISING = IRQF_TRIGGER_RISING; > > +static const int __deprecated SA_TRIGGER_MASK = IRQF_TRIGGER_MASK; > > this will include these in every .o file for which the .c file includes > the header. NOT GOOD(tm) > How about this one instead then: Mark SA_* constants as deprecated Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -53,17 +53,19 @@ * Migration helpers. Scheduled for removal in 1/2007 * Do not use for new code ! */ -#define SA_INTERRUPT IRQF_DISABLED -#define SA_SAMPLE_RANDOM IRQF_SAMPLE_RANDOM -#define SA_SHIRQ IRQF_SHARED -#define SA_PROBEIRQ IRQF_PROBE_SHARED -#define SA_PERCPU IRQF_PERCPU - -#define SA_TRIGGER_LOW IRQF_TRIGGER_LOW -#define SA_TRIGGER_HIGH IRQF_TRIGGER_HIGH -#define SA_TRIGGER_FALLING IRQF_TRIGGER_FALLING -#define SA_TRIGGER_RISING IRQF_TRIGGER_RISING -#define SA_TRIGGER_MASK IRQF_TRIGGER_MASK +typedef unsigned int __deprecated deprecated_irqf; + +#define SA_INTERRUPT ((deprecated_irqf)IRQF_DISABLED) +#define SA_SAMPLE_RANDOM ((deprecated_irqf)IRQF_SAMPLE_RANDOM) +#define SA_SHIRQ ((deprecated_irqf)IRQF_SHARED) +#define SA_PROBEIRQ ((deprecated_irqf)IRQF_PROBE_SHARED) +#define SA_PERCPU ((deprecated_irqf)IRQF_PERCPU) + +#define SA_TRIGGER_LOW ((deprecated_irqf)IRQF_TRIGGER_LOW) +#define SA_TRIGGER_HIGH ((deprecated_irqf)IRQF_TRIGGER_HIGH) +#define SA_TRIGGER_FALLING ((deprecated_irqf)IRQF_TRIGGER_FALLING) +#define SA_TRIGGER_RISING ((deprecated_irqf)IRQF_TRIGGER_RISING) +#define SA_TRIGGER_MASK ((deprecated_irqf)IRQF_TRIGGER_MASK) typedef irqreturn_t (*irq_handler_t)(int, void *); ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 11:42 ` Arnd Bergmann @ 2007-02-10 14:19 ` Frederik Deweerdt 0 siblings, 0 replies; 69+ messages in thread From: Frederik Deweerdt @ 2007-02-10 14:19 UTC (permalink / raw) To: Arnd Bergmann Cc: Arjan van de Ven, Jan Engelhardt, Andrew Morton, linux-kernel, tglx On Sat, Feb 10, 2007 at 12:42:41PM +0100, Arnd Bergmann wrote: > On Friday 09 February 2007 12:24, Arjan van de Ven wrote: > > > > On Fri, 2007-02-09 at 10:57 +0000, Frederik Deweerdt wrote: > > > +static const int __deprecated SA_INTERRUPT = IRQF_DISABLED; > > > +static const int __deprecated SA_SAMPLE_RANDOM = IRQF_SAMPLE_RANDOM; > > > +static const int __deprecated SA_SHIRQ = IRQF_SHARED; > > > +static const int __deprecated SA_PROBEIRQ = IRQF_PROBE_SHARED; > > > +static const int __deprecated SA_PERCPU = IRQF_PERCPU; > > > + > > > +static const int __deprecated SA_TRIGGER_LOW = IRQF_TRIGGER_LOW; > > > +static const int __deprecated SA_TRIGGER_HIGH = IRQF_TRIGGER_HIGH; > > > +static const int __deprecated SA_TRIGGER_FALLING = IRQF_TRIGGER_FALLING; > > > +static const int __deprecated SA_TRIGGER_RISING = IRQF_TRIGGER_RISING; > > > +static const int __deprecated SA_TRIGGER_MASK = IRQF_TRIGGER_MASK; > > > > this will include these in every .o file for which the .c file includes > > the header. NOT GOOD(tm) > > > > How about this one instead then: Well, the warning you get is not that obvious: test.c: In function 'main': test.c:11: warning: 'deprecated_irqf' is deprecated And as far as I could test (gcc 4.1.1 and gcc 3.4.3), Arjan's comment is not true, the "static const int" don't use extra space, they get optimized away by the compiler (see http://lkml.org/lkml/2007/2/9/106). Regards, Frederik > > Mark SA_* constants as deprecated > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > --- a/include/linux/interrupt.h > +++ b/include/linux/interrupt.h > @@ -53,17 +53,19 @@ > * Migration helpers. Scheduled for removal in 1/2007 > * Do not use for new code ! > */ > -#define SA_INTERRUPT IRQF_DISABLED > -#define SA_SAMPLE_RANDOM IRQF_SAMPLE_RANDOM > -#define SA_SHIRQ IRQF_SHARED > -#define SA_PROBEIRQ IRQF_PROBE_SHARED > -#define SA_PERCPU IRQF_PERCPU > - > -#define SA_TRIGGER_LOW IRQF_TRIGGER_LOW > -#define SA_TRIGGER_HIGH IRQF_TRIGGER_HIGH > -#define SA_TRIGGER_FALLING IRQF_TRIGGER_FALLING > -#define SA_TRIGGER_RISING IRQF_TRIGGER_RISING > -#define SA_TRIGGER_MASK IRQF_TRIGGER_MASK > +typedef unsigned int __deprecated deprecated_irqf; > + > +#define SA_INTERRUPT ((deprecated_irqf)IRQF_DISABLED) > +#define SA_SAMPLE_RANDOM ((deprecated_irqf)IRQF_SAMPLE_RANDOM) > +#define SA_SHIRQ ((deprecated_irqf)IRQF_SHARED) > +#define SA_PROBEIRQ ((deprecated_irqf)IRQF_PROBE_SHARED) > +#define SA_PERCPU ((deprecated_irqf)IRQF_PERCPU) > + > +#define SA_TRIGGER_LOW ((deprecated_irqf)IRQF_TRIGGER_LOW) > +#define SA_TRIGGER_HIGH ((deprecated_irqf)IRQF_TRIGGER_HIGH) > +#define SA_TRIGGER_FALLING ((deprecated_irqf)IRQF_TRIGGER_FALLING) > +#define SA_TRIGGER_RISING ((deprecated_irqf)IRQF_TRIGGER_RISING) > +#define SA_TRIGGER_MASK ((deprecated_irqf)IRQF_TRIGGER_MASK) > > typedef irqreturn_t (*irq_handler_t)(int, void *); > > ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:07 -mm merge plans for 2.6.21 Andrew Morton 2007-02-08 23:12 ` Roland Dreier 2007-02-08 23:29 ` Jan Engelhardt @ 2007-02-08 23:34 ` Kyle McMartin 2007-02-08 23:53 ` Andrew Morton 2007-02-09 5:32 ` Bharata B Rao ` (6 subsequent siblings) 9 siblings, 1 reply; 69+ messages in thread From: Kyle McMartin @ 2007-02-08 23:34 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel On Thu, Feb 08, 2007 at 03:07:10PM -0800, Andrew Morton wrote: > I'm getting fed up of holding onto hundreds of patches against subsystem > trees, sending them over and over again seeing and nothing happen. I sent 242 > patches out to subsystem maintainers on Monday and look at what's still here. > > parisc-fix-module_param-iommu-permission.patch > pa-risc-fix-bogus-warnings-from-modpost.patch > use-__u64-rather-than-u64-in-parisc-statfs-structs.patch > > -> kyle > Sorry, I thought the mails meant you were dumping to Linus. Will merge. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:34 ` Kyle McMartin @ 2007-02-08 23:53 ` Andrew Morton 2007-02-09 0:55 ` Paul Mackerras 0 siblings, 1 reply; 69+ messages in thread From: Andrew Morton @ 2007-02-08 23:53 UTC (permalink / raw) To: Kyle McMartin; +Cc: linux-kernel On Thu, 8 Feb 2007 18:34:49 -0500 Kyle McMartin <kyle@mcmartin.ca> wrote: > On Thu, Feb 08, 2007 at 03:07:10PM -0800, Andrew Morton wrote: > > I'm getting fed up of holding onto hundreds of patches against subsystem > > trees, sending them over and over again seeing and nothing happen. I sent 242 > > patches out to subsystem maintainers on Monday and look at what's still here. > > > > parisc-fix-module_param-iommu-permission.patch > > pa-risc-fix-bogus-warnings-from-modpost.patch > > use-__u64-rather-than-u64-in-parisc-statfs-structs.patch > > > > -> kyle > > > > Sorry, I thought the mails meant you were dumping to Linus. Will > merge. Once a subsystem has a subsystem tree (git or quilt) I basically never merge anything which belongs to that tree. It's always originator->mm->subsystemtree->Linus If the subsystem tree maintainer wants to tell me "I can't be bothered setting up a git pull for that, please merge it for me" then that's fine. But unless I'm told that, or unless the maintainer is vacationing or totally asleep or unless the fix has some sufficiently high obviousness*importance product, I'll just keep buffering it up. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:53 ` Andrew Morton @ 2007-02-09 0:55 ` Paul Mackerras 2007-02-09 1:00 ` Andrew Morton 0 siblings, 1 reply; 69+ messages in thread From: Paul Mackerras @ 2007-02-09 0:55 UTC (permalink / raw) To: Andrew Morton; +Cc: Kyle McMartin, linux-kernel Andrew Morton writes: > Once a subsystem has a subsystem tree (git or quilt) I basically never > merge anything which belongs to that tree. It's always > > originator->mm->subsystemtree->Linus > > If the subsystem tree maintainer wants to tell me "I can't be bothered > setting up a git pull for that, please merge it for me" then that's fine. > > But unless I'm told that, or unless the maintainer is vacationing or totally > asleep or unless the fix has some sufficiently high obviousness*importance product, > I'll just keep buffering it up. What about the sort of thing that crosses all archs? For example, the local_t changes? Particularly in the case where the change has to be made in generic code and in all archs at the same time, it makes sense to me for you to send the whole batch to Linus at the same time, rather than individual arch maintainers all sending their bit at varying times. Paul. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 0:55 ` Paul Mackerras @ 2007-02-09 1:00 ` Andrew Morton 0 siblings, 0 replies; 69+ messages in thread From: Andrew Morton @ 2007-02-09 1:00 UTC (permalink / raw) To: Paul Mackerras; +Cc: Kyle McMartin, linux-kernel On Fri, 9 Feb 2007 11:55:40 +1100 Paul Mackerras <paulus@samba.org> wrote: > Andrew Morton writes: > > > Once a subsystem has a subsystem tree (git or quilt) I basically never > > merge anything which belongs to that tree. It's always > > > > originator->mm->subsystemtree->Linus > > > > If the subsystem tree maintainer wants to tell me "I can't be bothered > > setting up a git pull for that, please merge it for me" then that's fine. > > > > But unless I'm told that, or unless the maintainer is vacationing or totally > > asleep or unless the fix has some sufficiently high obviousness*importance product, > > I'll just keep buffering it up. > > What about the sort of thing that crosses all archs? For example, the > local_t changes? Particularly in the case where the change has to be > made in generic code and in all archs at the same time, it makes sense > to me for you to send the whole batch to Linus at the same time, > rather than individual arch maintainers all sending their bit at > varying times. > yup. It's better of course if the changes aren't both-way dependent and often we do it that way. But if they really are that bound together then I'll stage the patch in -mm, ensure that it doesn't conflict with any queued-up arch patches and will merge it after the arch trees have gone in. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:07 -mm merge plans for 2.6.21 Andrew Morton ` (2 preceding siblings ...) 2007-02-08 23:34 ` Kyle McMartin @ 2007-02-09 5:32 ` Bharata B Rao 2007-02-09 8:26 ` Sébastien Dugué 2007-02-09 9:54 ` Lenar Lõhmus ` (5 subsequent siblings) 9 siblings, 1 reply; 69+ messages in thread From: Bharata B Rao @ 2007-02-09 5:32 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel Andrew, On 2/9/07, Andrew Morton <akpm@linux-foundation.org> wrote: > fsaio-add-a-wait-queue-arg-to-the-wait_bit-action-routine.patch > fsaio-add-a-wait-queue-arg-to-the-wait_bit-action-routine-gfs2-fix.patch > fsaio-rename-__lock_page-to-lock_page_blocking.patch > fsaio-interfaces-to-initialize-and-to-test-a-wait-bit-key.patch > fsaio-add-a-default-io-wait-bit-field-in-task-struct.patch > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio.patch > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio-fix.patch > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio-fix-sparse-fix.patch > fsaio-enable-asynchronous-wait-page-and-lock-page.patch > fsaio-filesystem-aio-read.patch > fsaio-aio-o_sync-filesystem-write.patch > > Will wait to see what happens with febrils. > > aio-is-unlikely.patch > > Will merge. > > rework-compat_sys_io_submit.patch > fix-aioh-includes.patch > fix-access_ok-checks.patch > make-good_sigevent-non-static.patch > make-good_sigevent-non-static-fix.patch > make-__sigqueue_free-and.patch > aio-completion-signal-notification.patch > aio-completion-signal-notification-fix.patch > aio-completion-signal-notification-fixes-and-cleanups.patch > aio-completion-signal-notification-small-cleanup.patch > add-listio-syscall-support.patch > > I guess these are dependent upon fsaio. No. AIO completion signal notification patches and listio patch work independently of fsaio patches. Just that for buffered AIO case, the fsaio patches will make the behaviour truly asynchronous. Regards, Bharata. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 5:32 ` Bharata B Rao @ 2007-02-09 8:26 ` Sébastien Dugué 2007-02-09 9:05 ` Andrew Morton 0 siblings, 1 reply; 69+ messages in thread From: Sébastien Dugué @ 2007-02-09 8:26 UTC (permalink / raw) To: Bharata B Rao; +Cc: Andrew Morton, linux-kernel On Fri, 9 Feb 2007 11:02:28 +0530 "Bharata B Rao" <bharata.rao@gmail.com> wrote: > Andrew, > > On 2/9/07, Andrew Morton <akpm@linux-foundation.org> wrote: > > fsaio-add-a-wait-queue-arg-to-the-wait_bit-action-routine.patch > > fsaio-add-a-wait-queue-arg-to-the-wait_bit-action-routine-gfs2-fix.patch > > fsaio-rename-__lock_page-to-lock_page_blocking.patch > > fsaio-interfaces-to-initialize-and-to-test-a-wait-bit-key.patch > > fsaio-add-a-default-io-wait-bit-field-in-task-struct.patch > > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio.patch > > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio-fix.patch > > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio-fix-sparse-fix.patch > > fsaio-enable-asynchronous-wait-page-and-lock-page.patch > > fsaio-filesystem-aio-read.patch > > fsaio-aio-o_sync-filesystem-write.patch > > > > Will wait to see what happens with febrils. > > > > aio-is-unlikely.patch > > > > Will merge. > > > > rework-compat_sys_io_submit.patch > > fix-aioh-includes.patch > > fix-access_ok-checks.patch > > make-good_sigevent-non-static.patch > > make-good_sigevent-non-static-fix.patch > > make-__sigqueue_free-and.patch > > aio-completion-signal-notification.patch > > aio-completion-signal-notification-fix.patch > > aio-completion-signal-notification-fixes-and-cleanups.patch > > aio-completion-signal-notification-small-cleanup.patch > > add-listio-syscall-support.patch > > > > I guess these are dependent upon fsaio. > > No. AIO completion signal notification patches and listio patch work > independently of fsaio patches. Just that for buffered AIO case, the > fsaio patches will make the behaviour truly asynchronous. > > Regards, > Bharata. I concur. Thanks, Sébastien. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 8:26 ` Sébastien Dugué @ 2007-02-09 9:05 ` Andrew Morton 2007-02-09 10:10 ` Sébastien Dugué 0 siblings, 1 reply; 69+ messages in thread From: Andrew Morton @ 2007-02-09 9:05 UTC (permalink / raw) To: Sébastien Dugué; +Cc: Bharata B Rao, linux-kernel On Fri, 9 Feb 2007 09:26:11 +0100 Sébastien Dugué <sebastien.dugue@bull.net> wrote: > On Fri, 9 Feb 2007 11:02:28 +0530 "Bharata B Rao" <bharata.rao@gmail.com> wrote: > > > Andrew, > > > > On 2/9/07, Andrew Morton <akpm@linux-foundation.org> wrote: > > > fsaio-add-a-wait-queue-arg-to-the-wait_bit-action-routine.patch > > > fsaio-add-a-wait-queue-arg-to-the-wait_bit-action-routine-gfs2-fix.patch > > > fsaio-rename-__lock_page-to-lock_page_blocking.patch > > > fsaio-interfaces-to-initialize-and-to-test-a-wait-bit-key.patch > > > fsaio-add-a-default-io-wait-bit-field-in-task-struct.patch > > > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio.patch > > > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio-fix.patch > > > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio-fix-sparse-fix.patch > > > fsaio-enable-asynchronous-wait-page-and-lock-page.patch > > > fsaio-filesystem-aio-read.patch > > > fsaio-aio-o_sync-filesystem-write.patch > > > > > > Will wait to see what happens with febrils. > > > > > > aio-is-unlikely.patch > > > > > > Will merge. > > > > > > rework-compat_sys_io_submit.patch > > > fix-aioh-includes.patch > > > fix-access_ok-checks.patch > > > make-good_sigevent-non-static.patch > > > make-good_sigevent-non-static-fix.patch > > > make-__sigqueue_free-and.patch > > > aio-completion-signal-notification.patch > > > aio-completion-signal-notification-fix.patch > > > aio-completion-signal-notification-fixes-and-cleanups.patch > > > aio-completion-signal-notification-small-cleanup.patch > > > add-listio-syscall-support.patch > > > > > > I guess these are dependent upon fsaio. > > > > No. AIO completion signal notification patches and listio patch work > > independently of fsaio patches. Just that for buffered AIO case, the > > fsaio patches will make the behaviour truly asynchronous. > > > > Regards, > > Bharata. > > I concur. > But is the proposed listio implementation still relevant if we go and add the async syscalls? ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 9:05 ` Andrew Morton @ 2007-02-09 10:10 ` Sébastien Dugué 0 siblings, 0 replies; 69+ messages in thread From: Sébastien Dugué @ 2007-02-09 10:10 UTC (permalink / raw) To: Andrew Morton; +Cc: Bharata B Rao, linux-kernel On Fri, 9 Feb 2007 01:05:57 -0800 Andrew Morton <akpm@linux-foundation.org> wrote: > On Fri, 9 Feb 2007 09:26:11 +0100 Sébastien Dugué <sebastien.dugue@bull.net> wrote: > > > On Fri, 9 Feb 2007 11:02:28 +0530 "Bharata B Rao" <bharata.rao@gmail.com> wrote: > > > > > Andrew, > > > > > > On 2/9/07, Andrew Morton <akpm@linux-foundation.org> wrote: > > > > fsaio-add-a-wait-queue-arg-to-the-wait_bit-action-routine.patch > > > > fsaio-add-a-wait-queue-arg-to-the-wait_bit-action-routine-gfs2-fix.patch > > > > fsaio-rename-__lock_page-to-lock_page_blocking.patch > > > > fsaio-interfaces-to-initialize-and-to-test-a-wait-bit-key.patch > > > > fsaio-add-a-default-io-wait-bit-field-in-task-struct.patch > > > > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio.patch > > > > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio-fix.patch > > > > fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio-fix-sparse-fix.patch > > > > fsaio-enable-asynchronous-wait-page-and-lock-page.patch > > > > fsaio-filesystem-aio-read.patch > > > > fsaio-aio-o_sync-filesystem-write.patch > > > > > > > > Will wait to see what happens with febrils. > > > > > > > > aio-is-unlikely.patch > > > > > > > > Will merge. > > > > > > > > rework-compat_sys_io_submit.patch > > > > fix-aioh-includes.patch > > > > fix-access_ok-checks.patch > > > > make-good_sigevent-non-static.patch > > > > make-good_sigevent-non-static-fix.patch > > > > make-__sigqueue_free-and.patch > > > > aio-completion-signal-notification.patch > > > > aio-completion-signal-notification-fix.patch > > > > aio-completion-signal-notification-fixes-and-cleanups.patch > > > > aio-completion-signal-notification-small-cleanup.patch > > > > add-listio-syscall-support.patch > > > > > > > > I guess these are dependent upon fsaio. > > > > > > No. AIO completion signal notification patches and listio patch work > > > independently of fsaio patches. Just that for buffered AIO case, the > > > fsaio patches will make the behaviour truly asynchronous. > > > > > > Regards, > > > Bharata. > > > > I concur. > > > > But is the proposed listio implementation still relevant if we go and add > the async syscalls? I think the listio syscall could be emulated in userspace using async syscalls. Even more, the whole POSIX AIO functions could benefit from this, rendering aio.c obsolete. Sébastien. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:07 -mm merge plans for 2.6.21 Andrew Morton ` (3 preceding siblings ...) 2007-02-09 5:32 ` Bharata B Rao @ 2007-02-09 9:54 ` Lenar Lõhmus 2007-02-09 10:12 ` Andrew Morton 2007-02-09 17:35 ` David Woodhouse ` (4 subsequent siblings) 9 siblings, 1 reply; 69+ messages in thread From: Lenar Lõhmus @ 2007-02-09 9:54 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel Hello, Andrew Morton wrote: > sched-add-above-background-load-function.patch > mm-implement-swap-prefetching.patch > mm-implement-swap-prefetching-vs-zvc-stuff.patch > mm-implement-swap-prefetching-vs-zvc-stuff-2.patch > mm-implement-swap-prefetching-use-ctl_unnumbered.patch > swap_prefetch-vs-zoned-counters.patch > add-include-linux-freezerh-and-move-definitions-from-prefetch.patch > zvc-support-nr_slab_reclaimable--nr_slab_unreclaimable-swap_prefetch.patch > reduce-max_nr_zones-swap_prefetch-remove-incorrect-use-of-zone_highmem.patch > sched-cleanup-remove-task_t-convert-to-struct-task_struct-prefetch.patch > numa-add-zone_to_nid-function-swap_prefetch.patch > remove-uses-of-kmem_cache_t-from-mm-and-include-linux-slabh-prefetch.patch > > Hold. Why hold? It's been shown this patchset really helps desktop users. Why keep it in -mm for so long? L. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 9:54 ` Lenar Lõhmus @ 2007-02-09 10:12 ` Andrew Morton 2007-02-09 12:48 ` James 2007-02-09 12:59 ` Lenar Lõhmus 0 siblings, 2 replies; 69+ messages in thread From: Andrew Morton @ 2007-02-09 10:12 UTC (permalink / raw) To: Lenar Lõhmus; +Cc: linux-kernel On Fri, 09 Feb 2007 11:54:29 +0200 Lenar Lõhmus <lenar@vision.ee> wrote: > Hello, > > Andrew Morton wrote: > > sched-add-above-background-load-function.patch > > mm-implement-swap-prefetching.patch > > mm-implement-swap-prefetching-vs-zvc-stuff.patch > > mm-implement-swap-prefetching-vs-zvc-stuff-2.patch > > mm-implement-swap-prefetching-use-ctl_unnumbered.patch > > swap_prefetch-vs-zoned-counters.patch > > add-include-linux-freezerh-and-move-definitions-from-prefetch.patch > > zvc-support-nr_slab_reclaimable--nr_slab_unreclaimable-swap_prefetch.patch > > reduce-max_nr_zones-swap_prefetch-remove-incorrect-use-of-zone_highmem.patch > > sched-cleanup-remove-task_t-convert-to-struct-task_struct-prefetch.patch > > numa-add-zone_to_nid-function-swap_prefetch.patch > > remove-uses-of-kmem_cache_t-from-mm-and-include-linux-slabh-prefetch.patch > > > > Hold. > Why hold? > > It's been shown this patchset really helps desktop users. Has it? I don't think I've ever observed any benefits from it and I don't think anyone has ever got down and worked out what its drawbacks might be, and seen if they can be demonstrated in practice. I also have vague memories of some serious-sounding review comments about the code from Nick. > Why keep it in -mm for so long? I'm waiting to be shown that its benefits exceed its costs. Sometimes that's hard. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 10:12 ` Andrew Morton @ 2007-02-09 12:48 ` James 2007-02-09 12:59 ` Lenar Lõhmus 1 sibling, 0 replies; 69+ messages in thread From: James @ 2007-02-09 12:48 UTC (permalink / raw) To: Andrew Morton; +Cc: Lenar Lõhmus, linux-kernel, Con Kolivas On 2/9/07, Andrew Morton <akpm@linux-foundation.org> wrote: > On Fri, 09 Feb 2007 11:54:29 +0200 Lenar Lõhmus <lenar@vision.ee> wrote: > > > Hello, > > > > Andrew Morton wrote: > > > sched-add-above-background-load-function.patch > > > mm-implement-swap-prefetching.patch > > > mm-implement-swap-prefetching-vs-zvc-stuff.patch > > > mm-implement-swap-prefetching-vs-zvc-stuff-2.patch > > > mm-implement-swap-prefetching-use-ctl_unnumbered.patch > > > swap_prefetch-vs-zoned-counters.patch > > > add-include-linux-freezerh-and-move-definitions-from-prefetch.patch > > > zvc-support-nr_slab_reclaimable--nr_slab_unreclaimable-swap_prefetch.patch > > > reduce-max_nr_zones-swap_prefetch-remove-incorrect-use-of-zone_highmem.patch > > > sched-cleanup-remove-task_t-convert-to-struct-task_struct-prefetch.patch > > > numa-add-zone_to_nid-function-swap_prefetch.patch > > > remove-uses-of-kmem_cache_t-from-mm-and-include-linux-slabh-prefetch.patch > > > > > > Hold. > > Why hold? > > > > It's been shown this patchset really helps desktop users. > > Has it? I don't think I've ever observed any benefits from it and I don't > think anyone has ever got down and worked out what its drawbacks might be, > and seen if they can be demonstrated in practice. > Plenty of people replied with positive reviews when it was posted earlier. I'd expect that you'd have a fair bit of ram, so you're less likely to observe any benefit, as you wouldnt be digging into swap as often as those on lesser systems. http://lkml.org/lkml/2006/3/23/25 > I also have vague memories of some serious-sounding review comments about > the code from Nick. http://lkml.org/lkml/2006/3/23/55 Could that be it? Maybe repoll Con on those. > > Why keep it in -mm for so long? > > I'm waiting to be shown that its benefits exceed its costs. Sometimes > that's hard. > Con's patchset is used pretty widely now, with many distro's (Arch, Mandriva, PCLinuxOS among others) providing prebuilt kernels and nobody has reported any drawbacks. I don't think anyone in -mm has reported any either. James -- iphitus // Arch Developer // kernel26beyond // iphitus.loudas.com ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 10:12 ` Andrew Morton 2007-02-09 12:48 ` James @ 2007-02-09 12:59 ` Lenar Lõhmus 1 sibling, 0 replies; 69+ messages in thread From: Lenar Lõhmus @ 2007-02-09 12:59 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel Andrew Morton wrote: > On Fri, 09 Feb 2007 11:54:29 +0200 Lenar Lõhmus <lenar@vision.ee> wrote: > Has it? I don't think I've ever observed any benefits from it and I don't > think anyone has ever got down and worked out what its drawbacks might be, > and seen if they can be demonstrated in practice. > Who should get down? It seems no serious kernel developer cares enough to get to it. It's just a desktop feature you know - no big iron - uninteresting. >> Why keep it in -mm for so long? >> > > I'm waiting to be shown that its benefits exceed its costs. Sometimes > that's hard. > Swap prefetch and those mystic _costs_. But nobody hasn't communicated loud and clear what those costs are. I imagine it must be really hard to fight to something you don't even exists. Or prove that you are better than somebody you have never seen or heard of. Please somebody qualified, take the time, dig that code, and show us those costs. With details. So Con can make the code even better and included in mainline or drop altogether if it's really bad and move on to other endeavours. With best, Lenar ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:07 -mm merge plans for 2.6.21 Andrew Morton ` (4 preceding siblings ...) 2007-02-09 9:54 ` Lenar Lõhmus @ 2007-02-09 17:35 ` David Woodhouse 2007-02-09 21:45 ` Andrew Morton 2007-02-10 13:03 ` Andi Kleen 2007-02-09 19:37 ` Alan ` (3 subsequent siblings) 9 siblings, 2 replies; 69+ messages in thread From: David Woodhouse @ 2007-02-09 17:35 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, drepper On Thu, 2007-02-08 at 15:07 -0800, Andrew Morton wrote: > lutimesat-simplify-utime2.patch > lutimesat-extend-do_utimes-with-flags.patch > lutimesat-actual-syscall-and-wire-up-on-i386.patch > > Do we want this? Ulrich says so. Will merge, I guess. I would strongly recommend that in the general case, you don't merge new system calls unless the corresponding compat_ system call is implemented. This makes sure that people adding system calls will design the API for the new system call appropriately, rather than trying to implement compat support as an afterthought and only then realising that they wish the original had been done differently. We've seen examples of this where it would have been _trivial_ to adjust the API slightly to make compat syscalls a non-issue, but the developer just didn't _think_ about it until the syscall was set in stone. This new system call seems to need compat_ support but lacks it, so I would suggest you shouldn't merge it just yet. -- dwmw2 ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 17:35 ` David Woodhouse @ 2007-02-09 21:45 ` Andrew Morton 2007-02-09 21:49 ` Russell King 2007-02-09 21:59 ` David Woodhouse 2007-02-10 13:03 ` Andi Kleen 1 sibling, 2 replies; 69+ messages in thread From: Andrew Morton @ 2007-02-09 21:45 UTC (permalink / raw) To: David Woodhouse, Alexey Dobriyan; +Cc: linux-kernel, drepper On Fri, 09 Feb 2007 17:35:35 +0000 David Woodhouse <dwmw2@infradead.org> wrote: > On Thu, 2007-02-08 at 15:07 -0800, Andrew Morton wrote: > > lutimesat-simplify-utime2.patch > > lutimesat-extend-do_utimes-with-flags.patch > > lutimesat-actual-syscall-and-wire-up-on-i386.patch > > > > Do we want this? Ulrich says so. Will merge, I guess. > > I would strongly recommend that in the general case, you don't merge new > system calls unless the corresponding compat_ system call is > implemented. Good point. > This makes sure that people adding system calls will design the API for > the new system call appropriately, rather than trying to implement > compat support as an afterthought and only then realising that they wish > the original had been done differently. We've seen examples of this > where it would have been _trivial_ to adjust the API slightly to make > compat syscalls a non-issue, but the developer just didn't _think_ about > it until the syscall was set in stone. > > This new system call seems to need compat_ support but lacks it, so I > would suggest you shouldn't merge it just yet. OK, thanks. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 21:45 ` Andrew Morton @ 2007-02-09 21:49 ` Russell King 2007-02-09 21:53 ` David Woodhouse 2007-02-09 22:00 ` Andrew Morton 2007-02-09 21:59 ` David Woodhouse 1 sibling, 2 replies; 69+ messages in thread From: Russell King @ 2007-02-09 21:49 UTC (permalink / raw) To: Andrew Morton; +Cc: David Woodhouse, Alexey Dobriyan, linux-kernel, drepper On Fri, Feb 09, 2007 at 01:45:16PM -0800, Andrew Morton wrote: > On Fri, 09 Feb 2007 17:35:35 +0000 > David Woodhouse <dwmw2@infradead.org> wrote: > > > On Thu, 2007-02-08 at 15:07 -0800, Andrew Morton wrote: > > > lutimesat-simplify-utime2.patch > > > lutimesat-extend-do_utimes-with-flags.patch > > > lutimesat-actual-syscall-and-wire-up-on-i386.patch > > > > > > Do we want this? Ulrich says so. Will merge, I guess. > > > > I would strongly recommend that in the general case, you don't merge new > > system calls unless the corresponding compat_ system call is > > implemented. > > Good point. > > > This makes sure that people adding system calls will design the API for > > the new system call appropriately, rather than trying to implement > > compat support as an afterthought and only then realising that they wish > > the original had been done differently. We've seen examples of this > > where it would have been _trivial_ to adjust the API slightly to make > > compat syscalls a non-issue, but the developer just didn't _think_ about > > it until the syscall was set in stone. > > > > This new system call seems to need compat_ support but lacks it, so I > > would suggest you shouldn't merge it just yet. > > OK, thanks. urgh, new system calls... wonder if they fit in the ARM ABI... Looks fine. Are there any other new syscalls sitting around in -mm ? -- Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of: ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 21:49 ` Russell King @ 2007-02-09 21:53 ` David Woodhouse 2007-02-09 22:03 ` Russell King 2007-02-09 22:00 ` Andrew Morton 1 sibling, 1 reply; 69+ messages in thread From: David Woodhouse @ 2007-02-09 21:53 UTC (permalink / raw) To: Russell King; +Cc: Andrew Morton, Alexey Dobriyan, linux-kernel, drepper On Fri, 2007-02-09 at 21:49 +0000, Russell King wrote: > urgh, new system calls... wonder if they fit in the ARM ABI... Looks > fine. Can you elucidate on _what_ you just checked for? There was something about alignment of 64-bit arguments to syscalls which affects MIPS and/or ARM which I can't quite remember-- something about putting it them arguments in either an even-numbered or odd-numbered position to make it work nicely. Is that actually written anywhere, and does anyone bother to check? -- dwmw2 ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 21:53 ` David Woodhouse @ 2007-02-09 22:03 ` Russell King 2007-02-09 22:12 ` David Woodhouse 2007-02-10 2:05 ` Oleg Verych 0 siblings, 2 replies; 69+ messages in thread From: Russell King @ 2007-02-09 22:03 UTC (permalink / raw) To: David Woodhouse; +Cc: Andrew Morton, Alexey Dobriyan, linux-kernel, drepper On Fri, Feb 09, 2007 at 09:53:19PM +0000, David Woodhouse wrote: > On Fri, 2007-02-09 at 21:49 +0000, Russell King wrote: > > urgh, new system calls... wonder if they fit in the ARM ABI... Looks > > fine. > > Can you elucidate on _what_ you just checked for? > > There was something about alignment of 64-bit arguments to syscalls > which affects MIPS and/or ARM which I can't quite remember-- It's something like that. > something > about putting it them arguments in either an even-numbered or > odd-numbered position to make it work nicely. We have a maximum of 7 32-bit registers to pass system call arguments. In EABI, 64-bit arguments must be aligned to an even-numbered register (starting at zero). In OABI, 64-bit arguments do not have this restriction. So, for EABI: sys_foo(int a, unsigned long long b, int c, unsigned long long d) would allocate 'a' into r0, 'b' into r2,r3, 'c' into r4, and 'd' into r6, and oops we're out of registers - so the above syscall prototype can't be supported on ARM. However: sys_foo(int a, int c, unsigned long long b, unsigned long long d) is entirely reasonable and leaves us with spare room for one additional 32-bit arg to be passed. > Is that actually written anywhere, and does anyone bother to check? Mostly mailing list archives I'd guess. As far as anyone bothering to check, that's me when I'm aware of new syscalls... which typically happens a long time after the syscalls have been introduced on x86 etc. -- Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of: ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 22:03 ` Russell King @ 2007-02-09 22:12 ` David Woodhouse 2007-02-09 22:42 ` David Woodhouse 2007-02-10 2:05 ` Oleg Verych 1 sibling, 1 reply; 69+ messages in thread From: David Woodhouse @ 2007-02-09 22:12 UTC (permalink / raw) To: Russell King; +Cc: Andrew Morton, Alexey Dobriyan, linux-kernel, drepper On Fri, 2007-02-09 at 22:03 +0000, Russell King wrote: > > Is that actually written anywhere, and does anyone bother to check? > > Mostly mailing list archives I'd guess. As far as anyone bothering > to check, that's me when I'm aware of new syscalls... which typically > happens a long time after the syscalls have been introduced on x86 > etc. I suspect we could do with a Documentation/syscalls.txt collecting such rules from various architectures. We could _also_ do with a way to warn about unimplemented syscalls on any given architecture. I'm thinking about something along the lines of a kernel/syscalls.c containing nothing but... #include <asm/unistd.h> #ifndef __NR_sys_foo #warning The sys_foo system call is not implemented on this architecture #endif Ideally, that wants to be auto-generated from the union of all <asm-*/unistd.h> files, but in practice I suspect we could do it just from <asm-i386/unistd.h>. Even I usually manage to add new syscalls on i386 after I've done PowerPC. -- dwmw2 ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 22:12 ` David Woodhouse @ 2007-02-09 22:42 ` David Woodhouse 0 siblings, 0 replies; 69+ messages in thread From: David Woodhouse @ 2007-02-09 22:42 UTC (permalink / raw) To: Russell King; +Cc: Andrew Morton, Alexey Dobriyan, linux-kernel, drepper On Fri, 2007-02-09 at 22:12 +0000, David Woodhouse wrote: > > We could _also_ do with a way to warn about unimplemented syscalls on > any given architecture. I'm thinking about something along the lines > of > a kernel/syscalls.c containing nothing but... > > #include <asm/unistd.h> > > #ifndef __NR_sys_foo > #warning The sys_foo system call is not implemented on this > architecture > #endif > > Ideally, that wants to be auto-generated from the union of all > <asm-*/unistd.h> files, but in practice I suspect we could do it just > from <asm-i386/unistd.h>. Even I usually manage to add new syscalls on > i386 after I've done PowerPC. Realistically speaking, I'm not going to have time to do anything useful with this before I disappear for a week starting tomorrow. But in case it helps, I'll throw this in to see if it inspires anyone... ( echo -e "#include <asm/unistd.h>\n#include <asm-generic/optional-syscalls.h>" ; sed -n '/^#define/s/[^_]*__NR_ \([^[:space:]]*\).*/#if !defined (__NR_\1) \&\& !defined (__IGNORE_ \1)\n#warning System call \1 is not implemented\n#endif/p' include/asm-i386/unistd.h ) > kernel/syscalls.c Coupled with an include/optional-syscalls.h which defines __IGNORE_vm86, __IGNORE_vm86old and then on 64-bit machines a bunch more __IGNORE_stat64 et al., that should mostly do the trick... -- dwmw2 ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 22:03 ` Russell King 2007-02-09 22:12 ` David Woodhouse @ 2007-02-10 2:05 ` Oleg Verych 1 sibling, 0 replies; 69+ messages in thread From: Oleg Verych @ 2007-02-10 2:05 UTC (permalink / raw) To: David Woodhouse, Andrew Morton, Alexey Dobriyan, linux-kernel, drepper > From: Russell King > Newsgroups: gmane.linux.kernel > Subject: Re: -mm merge plans for 2.6.21 > Date: Fri, 9 Feb 2007 22:03:27 +0000 [] > However: > > sys_foo(int a, int c, unsigned long long b, unsigned long long d) > > is entirely reasonable and leaves us with spare room for one additional > 32-bit arg to be passed. > >> Is that actually written anywhere, and does anyone bother to check? > > Mostly mailing list archives I'd guess. As far as anyone bothering > to check, that's me when I'm aware of new syscalls... which typically > happens a long time after the syscalls have been introduced on x86 > etc. Why not to have "the most large argument first" rule here? sys_bar(largest,..., larger,..., smaller,..., small); Put it in Documentation/ABI/README and bother only, when compiller will bark on -mm tree. ____ ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 21:49 ` Russell King 2007-02-09 21:53 ` David Woodhouse @ 2007-02-09 22:00 ` Andrew Morton 2007-02-09 22:06 ` Russell King 1 sibling, 1 reply; 69+ messages in thread From: Andrew Morton @ 2007-02-09 22:00 UTC (permalink / raw) To: Russell King; +Cc: David Woodhouse, Alexey Dobriyan, linux-kernel, drepper On Fri, 9 Feb 2007 21:49:44 +0000 Russell King <rmk+lkml@arm.linux.org.uk> wrote: > On Fri, Feb 09, 2007 at 01:45:16PM -0800, Andrew Morton wrote: > > On Fri, 09 Feb 2007 17:35:35 +0000 > > David Woodhouse <dwmw2@infradead.org> wrote: > > > > > On Thu, 2007-02-08 at 15:07 -0800, Andrew Morton wrote: > > > > lutimesat-simplify-utime2.patch > > > > lutimesat-extend-do_utimes-with-flags.patch > > > > lutimesat-actual-syscall-and-wire-up-on-i386.patch > > > > > > > > Do we want this? Ulrich says so. Will merge, I guess. > > > > > > I would strongly recommend that in the general case, you don't merge new > > > system calls unless the corresponding compat_ system call is > > > implemented. > > > > Good point. > > > > > This makes sure that people adding system calls will design the API for > > > the new system call appropriately, rather than trying to implement > > > compat support as an afterthought and only then realising that they wish > > > the original had been done differently. We've seen examples of this > > > where it would have been _trivial_ to adjust the API slightly to make > > > compat syscalls a non-issue, but the developer just didn't _think_ about > > > it until the syscall was set in stone. > > > > > > This new system call seems to need compat_ support but lacks it, so I > > > would suggest you shouldn't merge it just yet. > > > > OK, thanks. > > urgh, new system calls... wonder if they fit in the ARM ABI... Looks > fine. What's the ARM ABI? > Are there any other new syscalls sitting around in -mm ? Yes, the AIO listio additions: From: Bharata B Rao <bharata@in.ibm.com> This patch provides POSIX listio support by means of a new system call. long lio_submit(aio_context_t ctx_id, int mode, long nr, struct iocb __user * __user *iocbpp, struct sigevent __user *event) This system call is similar to the io_submit() system call, but takes two more arguments. 'mode' argument can be LIO_WAIT or LIO_NOWAIT. 'event' argument specifies the signal notification mechanism. This patch is built on support provided by the aio signal notification patch by Sebastien. The following two structures together provide the support for grouping iocbs belonging to a list (lio). struct aio_notify { struct task_struct *target; __u16 signo; __u16 notify; sigval_t value; struct sigqueue *sigq; }; struct lio_event { atomic_t lio_users; struct aio_notify lio_notify; }; A single lio_event struct is maintained for the list of iocbs. lio_users holds the number of requests attached to this lio and lio_notify has the necessary information for generating completion notification signal. If the mode is LIO_WAIT, the event argument is ignored and the system call waits until all the requests of the lio are completed. If the mode is LIO_NOWAIT, the system call returns immediately after submitting the io requests and may optionally notify the process on list io completion depending on the event argument. Signed-off-by: S_bastien Dugu_ <sebastien.dugue@bull.net> Signed-off-by: Laurent Vivier <laurent.vivier@bull.net> Signed-off-by: Bharata B Rao <bharata@in.ibm.com> Cc: Bharata B Rao <bharata@in.ibm.com> Cc: Christoph Hellwig <hch@infradead.org> Cc: Suparna Bhattacharya <suparna@in.ibm.com> Cc: Zach Brown <zach.brown@oracle.com> Cc: Oleg Nesterov <oleg@tv-sign.ru> Cc: Badari Pulavarty <pbadari@us.ibm.com> Cc: Benjamin LaHaise <bcrl@linux.intel.com> Cc: Jean Pierre Dion <jean-pierre.dion@bull.net> Cc: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- arch/i386/kernel/syscall_table.S | 1 arch/x86_64/ia32/ia32entry.S | 4 fs/aio.c | 188 +++++++++++++++++++++++++---- fs/compat.c | 119 +++++++++++++++--- include/asm-i386/unistd.h | 3 include/asm-x86_64/unistd.h | 4 include/linux/aio.h | 14 +- include/linux/aio_abi.h | 5 include/linux/syscalls.h | 2 9 files changed, 295 insertions(+), 45 deletions(-) diff -puN arch/i386/kernel/syscall_table.S~add-listio-syscall-support arch/i386/kernel/syscall_table.S --- a/arch/i386/kernel/syscall_table.S~add-listio-syscall-support +++ a/arch/i386/kernel/syscall_table.S @@ -319,3 +319,4 @@ ENTRY(sys_call_table) .long sys_move_pages .long sys_getcpu .long sys_epoll_pwait + .long sys_lio_submit /* 320 */ diff -puN arch/x86_64/ia32/ia32entry.S~add-listio-syscall-support arch/x86_64/ia32/ia32entry.S --- a/arch/x86_64/ia32/ia32entry.S~add-listio-syscall-support +++ a/arch/x86_64/ia32/ia32entry.S @@ -726,8 +726,10 @@ ia32_sys_call_table: .quad compat_sys_get_robust_list .quad sys_splice .quad sys_sync_file_range - .quad sys_tee + .quad sys_tee /* 315 */ .quad compat_sys_vmsplice .quad compat_sys_move_pages .quad sys_getcpu + .quad quiet_ni_syscall /* sys_epoll_wait */ + .quad compat_sys_lio_submit ia32_syscall_end: diff -puN fs/aio.c~add-listio-syscall-support fs/aio.c --- a/fs/aio.c~add-listio-syscall-support +++ a/fs/aio.c @@ -416,6 +416,7 @@ static struct kiocb fastcall *__aio_get_ req->ki_ctx = ctx; req->ki_cancel = NULL; req->ki_retry = NULL; + req->ki_lio = NULL; req->ki_dtor = NULL; req->private = NULL; req->ki_iovec = NULL; @@ -997,6 +998,72 @@ out_unlock: return -EINVAL; } +/* + * lio_notify + * When all iocbs belonging to an lio are complete, this initiates + * the completion notification for the lio. + * + * NOTE: lio is freed here after the last iocb completes, but only + * for LIO_NOWAIT case. In case of LIO_WAIT, the submitting thread + * waits for iocbs to complete and later frees the lio. + */ +void lio_notify(struct lio_event *lio) +{ + int ret; + + ret = atomic_dec_and_test(&lio->lio_users); + + if (unlikely(ret) && lio->lio_notify.notify != SIGEV_NONE) { + /* last one -> notify process */ + if (aio_send_signal(&lio->lio_notify)) + __sigqueue_free(lio->lio_notify.sigq); + kfree(lio); + } +} + +/* + * lio_create + * Allocates a lio_event structure which groups the iocbs belonging + * to the lio and sets up the completion notification. + * + * Case 1: LIO_NOWAIT and NULL sigevent - No need to group the iocbs + * and hence lio_event is not created. + * Case 2: LIO_NOWAIT and sigvent - lio_event is created and notification + * mechanism is setup. + * Case 3: LIO_WAIT - lio_event is created and sigevent is ignored. + */ +struct lio_event *lio_create(struct sigevent __user *user_event, + int mode) +{ + int ret = 0; + struct lio_event *lio = NULL; + + if (unlikely((mode == LIO_NOWAIT) && !user_event)) + return lio; + + lio = kzalloc(sizeof(*lio), GFP_KERNEL); + + if (!lio) + return ERR_PTR(-EAGAIN); + + /* + * Grab an initial ref on the lio to avoid races between + * submission and completion. + */ + atomic_set(&lio->lio_users, 1); + + lio->lio_notify.notify = SIGEV_NONE; + + if (user_event && (mode == LIO_NOWAIT)) { + ret = aio_setup_sigevent(&lio->lio_notify, user_event); + if (ret) { + kfree(lio); + return ERR_PTR(ret); + } + } + return lio; +} + /* aio_complete * Called when the io request on the given iocb is complete. * Returns true if this is the last user of the request. The @@ -1045,6 +1112,9 @@ int fastcall aio_complete(struct kiocb * * when the event got cancelled. */ if (kiocbIsCancelled(iocb)) { + if (iocb->ki_lio) + lio_notify(iocb->ki_lio); + if (iocb->ki_notify.sigq) __sigqueue_free(iocb->ki_notify.sigq); goto put_rq; @@ -1087,6 +1157,8 @@ int fastcall aio_complete(struct kiocb * __sigqueue_free(iocb->ki_notify.sigq); } + if (iocb->ki_lio) + lio_notify(iocb->ki_lio); put_rq: /* everything turned out well, dispose of the aiocb. */ ret = __aio_put_req(ctx, iocb); @@ -1631,7 +1703,7 @@ static int aio_wake_function(wait_queue_ } int fastcall io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb, - struct iocb *iocb) + struct iocb *iocb, struct lio_event *lio) { struct kiocb *req; struct file *file; @@ -1692,6 +1764,9 @@ int fastcall io_submit_one(struct kioctx goto out_sigqfree; } + /* Attach this iocb to its lio */ + req->ki_lio = lio; + ret = aio_setup_iocb(req); if (ret) @@ -1719,6 +1794,48 @@ out_put_req: return ret; } +static int io_submit_group(struct kioctx *ctx, long nr, + struct iocb __user * __user *iocbpp, struct lio_event *lio) +{ + int i; + long ret = 0; + + /* + * AKPM: should this return a partial result if some of the IOs were + * successfully submitted? + */ + for (i = 0; i < nr; i++) { + struct iocb __user *user_iocb; + struct iocb tmp; + + if (unlikely(__get_user(user_iocb, iocbpp + i))) { + ret = -EFAULT; + break; + } + + if (unlikely(copy_from_user(&tmp, user_iocb, sizeof(tmp)))) { + ret = -EFAULT; + break; + } + + if (lio) + atomic_inc(&lio->lio_users); + + ret = io_submit_one(ctx, user_iocb, &tmp, lio); + if (ret) { + if (lio) { + /* + * In case of listio, continue with + * the subsequent requests + */ + atomic_dec(&lio->lio_users); + } else + break; + } + } + return i ? i : ret; +} + /* sys_io_submit: * Queue the nr iocbs pointed to by iocbpp for processing. Returns * the number of iocbs queued. May return -EINVAL if the aio_context @@ -1736,7 +1853,6 @@ asmlinkage long sys_io_submit(aio_contex { struct kioctx *ctx; long ret = 0; - int i; if (unlikely((nr*sizeof(*iocbpp)) < 0)) return -EINVAL; @@ -1750,31 +1866,61 @@ asmlinkage long sys_io_submit(aio_contex return -EINVAL; } - /* - * AKPM: should this return a partial result if some of the IOs were - * successfully submitted? - */ - for (i=0; i<nr; i++) { - struct iocb __user *user_iocb; - struct iocb tmp; + ret = io_submit_group(ctx, nr, iocbpp, NULL); - if (unlikely(__get_user(user_iocb, iocbpp + i))) { - ret = -EFAULT; - break; - } + put_ioctx(ctx); + return ret; +} - if (unlikely(copy_from_user(&tmp, user_iocb, sizeof(tmp)))) { - ret = -EFAULT; - break; - } +asmlinkage long sys_lio_submit(aio_context_t ctx_id, int mode, long nr, + struct iocb __user * __user *iocbpp, struct sigevent __user *event) +{ + struct kioctx *ctx; + struct lio_event *lio = NULL; + long ret = 0; - ret = io_submit_one(ctx, user_iocb, &tmp); - if (ret) - break; + if (unlikely((nr*sizeof(*iocbpp)) < 0)) + return -EINVAL; + + if (unlikely(!access_ok(VERIFY_READ, iocbpp, (nr*sizeof(*iocbpp))))) + return -EFAULT; + + ctx = lookup_ioctx(ctx_id); + if (unlikely(!ctx)) { + pr_debug("EINVAL: lio_submit: invalid context id\n"); + return -EINVAL; + } + + lio = lio_create(event, mode); + + ret = PTR_ERR(lio); + if (IS_ERR(lio)) + goto out_put_ctx; + + ret = io_submit_group(ctx, nr, iocbpp, lio); + + /* If we failed to submit even one request just return */ + if (ret < 0 ) { + if (lio) + kfree(lio); + goto out_put_ctx; + } + + /* + * Drop extra ref on the lio now that we're done submitting requests. + */ + if (lio) + lio_notify(lio); + + if (mode == LIO_WAIT) { + wait_event(ctx->wait, atomic_read(&lio->lio_users) == 0); + kfree(lio); } +out_put_ctx: put_ioctx(ctx); - return i ? i : ret; + + return ret; } /* lookup_kiocb diff -puN fs/compat.c~add-listio-syscall-support fs/compat.c --- a/fs/compat.c~add-listio-syscall-support +++ a/fs/compat.c @@ -644,24 +644,13 @@ out: return ret; } -asmlinkage long -compat_sys_io_submit(aio_context_t ctx_id, int nr, u32 __user *iocb) +static int compat_io_submit_group(struct kioctx *ctx, long nr, + u32 __user *iocb, struct lio_event *lio) { - struct kioctx *ctx; - long ret = 0; int i; + long ret = 0; - if (unlikely((nr * sizeof(u32)) < 0)) - return -EINVAL; - - if (unlikely(!access_ok(VERIFY_READ, iocb, (nr * sizeof(u32))))) - return -EFAULT; - - ctx = lookup_ioctx(ctx_id); - if (unlikely(!ctx)) - return -EINVAL; - - for (i=0; i<nr; i++) { + for (i = 0; i < nr; i++) { compat_uptr_t uptr; struct iocb __user *user_iocb; struct iocb tmp; @@ -696,13 +685,105 @@ compat_sys_io_submit(aio_context_t ctx_i tmp.aio_sigeventp = (__u64)event; } - ret = io_submit_one(ctx, user_iocb, &tmp); - if (ret) - break; + if (lio) + atomic_inc(&lio->lio_users); + + ret = io_submit_one(ctx, user_iocb, &tmp, lio); + if (ret) { + if (lio) { + /* + * In case of listio, continue with + * the subsequent requests + */ + atomic_dec(&lio->lio_users); + } else + break; + } + + } + return i ? i : ret; +} +asmlinkage long +compat_sys_io_submit(aio_context_t ctx_id, int nr, u32 __user *iocb) +{ + struct kioctx *ctx; + long ret = 0; + + if (unlikely((nr*sizeof(u32)) < 0)) + return -EINVAL; + + if (unlikely(!access_ok(VERIFY_READ, iocb, (nr * sizeof(u32))))) + return -EFAULT; + + ctx = lookup_ioctx(ctx_id); + if (unlikely(!ctx)) + return -EINVAL; + + ret = compat_io_submit_group(ctx, nr, iocb, NULL); put_ioctx(ctx); - return i ? i: ret; + return ret; +} + +asmlinkage long +compat_sys_lio_submit(aio_context_t ctx_id, int mode, int nr, u32 __user *iocb, + struct compat_sigevent __user *sig_user) +{ + struct kioctx *ctx; + struct lio_event *lio = NULL; + struct sigevent __user *event = NULL; + long ret = 0; + + if (unlikely((nr*sizeof(u32)) < 0)) + return -EINVAL; + + if (unlikely(!access_ok(VERIFY_READ, iocb, (nr * sizeof(u32))))) + return -EFAULT; + + ctx = lookup_ioctx(ctx_id); + if (unlikely(!ctx)) + return -EINVAL; + + if (sig_user) { + struct sigevent kevent; + event = compat_alloc_user_space(sizeof(struct sigevent)); + if (get_compat_sigevent(&kevent, sig_user) || + copy_to_user(event, &kevent, sizeof(struct sigevent))) { + ret = -EFAULT; + goto out_put_ctx; + } + } + + lio = lio_create(event, mode); + + ret = PTR_ERR(lio); + if (IS_ERR(lio)) + goto out_put_ctx; + + ret = compat_io_submit_group(ctx, nr, iocb, lio); + + /* If we failed to submit even one request just return */ + if (ret < 0) { + if (lio) + kfree(lio); + goto out_put_ctx; + } + + /* + * Drop extra ref on the lio now that we're done submitting requests. + */ + if (lio) + lio_notify(lio); + + if (mode == LIO_WAIT) { + wait_event(ctx->wait, atomic_read(&lio->lio_users) == 0); + kfree(lio); + } + +out_put_ctx: + put_ioctx(ctx); + return ret; } struct compat_ncp_mount_data { diff -puN include/asm-i386/unistd.h~add-listio-syscall-support include/asm-i386/unistd.h --- a/include/asm-i386/unistd.h~add-listio-syscall-support +++ a/include/asm-i386/unistd.h @@ -325,10 +325,11 @@ #define __NR_move_pages 317 #define __NR_getcpu 318 #define __NR_epoll_pwait 319 +#define __NR_lio_submit 320 #ifdef __KERNEL__ -#define NR_syscalls 320 +#define NR_syscalls 321 #define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_OLD_READDIR diff -puN include/asm-x86_64/unistd.h~add-listio-syscall-support include/asm-x86_64/unistd.h --- a/include/asm-x86_64/unistd.h~add-listio-syscall-support +++ a/include/asm-x86_64/unistd.h @@ -619,8 +619,10 @@ __SYSCALL(__NR_sync_file_range, sys_sync __SYSCALL(__NR_vmsplice, sys_vmsplice) #define __NR_move_pages 279 __SYSCALL(__NR_move_pages, sys_move_pages) +#define __NR_lio_submit 280 +__SYSCALL(__NR_lio_submit, sys_lio_submit) -#define __NR_syscall_max __NR_move_pages +#define __NR_syscall_max __NR_lio_submit #ifndef __NO_STUBS #define __ARCH_WANT_OLD_READDIR diff -puN include/linux/aio.h~add-listio-syscall-support include/linux/aio.h --- a/include/linux/aio.h~add-listio-syscall-support +++ a/include/linux/aio.h @@ -63,6 +63,11 @@ struct aio_notify { struct sigqueue *sigq; }; +struct lio_event { + atomic_t lio_users; + struct aio_notify lio_notify; +}; + /* is there a better place to document function pointer methods? */ /** * ki_retry - iocb forward progress callback @@ -117,6 +122,8 @@ struct kiocb { __u64 ki_user_data; /* user's data for completion */ struct wait_bit_queue ki_wait; loff_t ki_pos; + /* lio this iocb might be attached to */ + struct lio_event *ki_lio; atomic_t ki_bio_count; /* num bio used for this iocb */ void *private; @@ -225,12 +232,15 @@ struct mm_struct; extern void FASTCALL(exit_aio(struct mm_struct *mm)); extern struct kioctx *lookup_ioctx(unsigned long ctx_id); extern int FASTCALL(io_submit_one(struct kioctx *ctx, - struct iocb __user *user_iocb, struct iocb *iocb)); + struct iocb __user *user_iocb, struct iocb *iocb, + struct lio_event *lio)); +struct lio_event *lio_create(struct sigevent __user *user_event, int mode); +void lio_notify(struct lio_event *lio); /* semi private, but used by the 32bit emulations: */ struct kioctx *lookup_ioctx(unsigned long ctx_id); int FASTCALL(io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb, - struct iocb *iocb)); + struct iocb *iocb, struct lio_event *lio)); #define get_ioctx(kioctx) do { \ BUG_ON(atomic_read(&(kioctx)->users) <= 0); \ diff -puN include/linux/aio_abi.h~add-listio-syscall-support include/linux/aio_abi.h --- a/include/linux/aio_abi.h~add-listio-syscall-support +++ a/include/linux/aio_abi.h @@ -45,6 +45,11 @@ enum { IOCB_CMD_PWRITEV = 8, }; +enum { + LIO_WAIT = 0, + LIO_NOWAIT = 1, +}; + /* read() from /dev/aio returns these structures. */ struct io_event { __u64 data; /* the data field from the iocb */ diff -puN include/linux/syscalls.h~add-listio-syscall-support include/linux/syscalls.h --- a/include/linux/syscalls.h~add-listio-syscall-support +++ a/include/linux/syscalls.h @@ -317,6 +317,8 @@ asmlinkage long sys_io_getevents(aio_con struct timespec __user *timeout); asmlinkage long sys_io_submit(aio_context_t, long, struct iocb __user * __user *); +asmlinkage long sys_lio_submit(aio_context_t, int, long, + struct iocb __user * __user *, struct sigevent __user *); asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb, struct io_event __user *result); asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, _ ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 22:00 ` Andrew Morton @ 2007-02-09 22:06 ` Russell King 0 siblings, 0 replies; 69+ messages in thread From: Russell King @ 2007-02-09 22:06 UTC (permalink / raw) To: Andrew Morton; +Cc: David Woodhouse, Alexey Dobriyan, linux-kernel, drepper On Fri, Feb 09, 2007 at 02:00:49PM -0800, Andrew Morton wrote: > +asmlinkage long sys_lio_submit(aio_context_t ctx_id, int mode, long nr, > + struct iocb __user * __user *iocbpp, struct sigevent __user *event) Not a problem. (r0 := ctx_id, r1 := mode, r2 := nr, r3 := iocbpp, r4 := event) Thanks. -- Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of: ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 21:45 ` Andrew Morton 2007-02-09 21:49 ` Russell King @ 2007-02-09 21:59 ` David Woodhouse 2007-02-09 22:50 ` Davide Libenzi 1 sibling, 1 reply; 69+ messages in thread From: David Woodhouse @ 2007-02-09 21:59 UTC (permalink / raw) To: Andrew Morton; +Cc: Alexey Dobriyan, linux-kernel, drepper, Davide Libenzi On Fri, 2007-02-09 at 13:45 -0800, Andrew Morton wrote: > > I would strongly recommend that in the general case, you don't merge new > > system calls unless the corresponding compat_ system call is > > implemented. > > Good point. It's a _damn_ good point, but I see we went ahead and merged sys_epoll_pwait without it anyway -- despite the fact that it's include/linux/eventpoll.h which contains the example of why we should think first :) I think I even threw together an untested implementation of compat_sys_epoll_pwait() at one point to assist with that task, but it didn't seem to help much. -- dwmw2 ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 21:59 ` David Woodhouse @ 2007-02-09 22:50 ` Davide Libenzi 2007-02-10 10:22 ` Heiko Carstens 0 siblings, 1 reply; 69+ messages in thread From: Davide Libenzi @ 2007-02-09 22:50 UTC (permalink / raw) To: David Woodhouse Cc: Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper On Fri, 9 Feb 2007, David Woodhouse wrote: > On Fri, 2007-02-09 at 13:45 -0800, Andrew Morton wrote: > > > I would strongly recommend that in the general case, you don't merge new > > > system calls unless the corresponding compat_ system call is > > > implemented. > > > > Good point. > > It's a _damn_ good point, but I see we went ahead and merged > sys_epoll_pwait without it anyway -- despite the fact that it's > include/linux/eventpoll.h which contains the example of why we should > think first :) > > I think I even threw together an untested implementation of > compat_sys_epoll_pwait() at one point to assist with that task, but it > didn't seem to help much. Damn! I always forget. Doing it right now ... - Davide ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 22:50 ` Davide Libenzi @ 2007-02-10 10:22 ` Heiko Carstens 2007-02-10 10:32 ` David Woodhouse 2007-02-10 21:05 ` Ralf Baechle 0 siblings, 2 replies; 69+ messages in thread From: Heiko Carstens @ 2007-02-10 10:22 UTC (permalink / raw) To: Davide Libenzi, ralf, linux-mips Cc: David Woodhouse, Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper On Fri, Feb 09, 2007 at 02:50:12PM -0800, Davide Libenzi wrote: > On Fri, 9 Feb 2007, David Woodhouse wrote: > > > On Fri, 2007-02-09 at 13:45 -0800, Andrew Morton wrote: > > > > I would strongly recommend that in the general case, you don't merge new > > > > system calls unless the corresponding compat_ system call is > > > > implemented. > > > > > > Good point. > > > > It's a _damn_ good point, but I see we went ahead and merged > > sys_epoll_pwait without it anyway -- despite the fact that it's > > include/linux/eventpoll.h which contains the example of why we should > > think first :) > > > > I think I even threw together an untested implementation of > > compat_sys_epoll_pwait() at one point to assist with that task, but it > > didn't seem to help much. > > Damn! I always forget. Doing it right now ... Which remembers me that I think that MIPS is using the non-compat version of sys_epoll_pwait for compat syscalls. But maybe MIPS doesn't need a compat syscall for some reason. Dunno. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 10:22 ` Heiko Carstens @ 2007-02-10 10:32 ` David Woodhouse 2007-02-10 21:34 ` Ralf Baechle 2007-02-10 21:05 ` Ralf Baechle 1 sibling, 1 reply; 69+ messages in thread From: David Woodhouse @ 2007-02-10 10:32 UTC (permalink / raw) To: Heiko Carstens Cc: Davide Libenzi, ralf, linux-mips, Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper On Sat, 2007-02-10 at 11:22 +0100, Heiko Carstens wrote: > Which remembers me that I think that MIPS is using the non-compat version > of sys_epoll_pwait for compat syscalls. But maybe MIPS doesn't need a compat > syscall for some reason. Dunno. It's OK as long as the 64-bit kernel, N32 and O32 userspace all agree there there's 32 bits of padding between the fields of this structure: struct epoll_event { __u32 events; __u64 data; }; I suspect it's a fairly safe bet that N32 userspace agrees; if the O32 ABI is different then it would need the compat syscall. -- dwmw2 ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 10:32 ` David Woodhouse @ 2007-02-10 21:34 ` Ralf Baechle 2007-02-11 4:53 ` Davide Libenzi ` (2 more replies) 0 siblings, 3 replies; 69+ messages in thread From: Ralf Baechle @ 2007-02-10 21:34 UTC (permalink / raw) To: David Woodhouse Cc: Heiko Carstens, Davide Libenzi, linux-mips, Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper On Sat, Feb 10, 2007 at 10:32:07AM +0000, David Woodhouse wrote: > On Sat, 2007-02-10 at 11:22 +0100, Heiko Carstens wrote: > > Which remembers me that I think that MIPS is using the non-compat version > > of sys_epoll_pwait for compat syscalls. But maybe MIPS doesn't need a compat > > syscall for some reason. Dunno. > > It's OK as long as the 64-bit kernel, N32 and O32 userspace all agree > there there's 32 bits of padding between the fields of this structure: > > struct epoll_event { > __u32 events; > __u64 data; > }; > > I suspect it's a fairly safe bet that N32 userspace agrees; if the O32 > ABI is different then it would need the compat syscall. That is correct - and apparently for all ABIs because I wasn't able to find a compat_sys_epoll_pwait at all. Unfortunately struct epoll_event contains a gap so it bets on identical padding rules between native and compat ABI and anyway, padding is wasted space so the struct members should have been swapped when this structure was created. Oh well, too late. Ralf ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 21:34 ` Ralf Baechle @ 2007-02-11 4:53 ` Davide Libenzi 2007-02-11 15:33 ` David Woodhouse 2007-02-11 16:14 ` Heiko Carstens 2 siblings, 0 replies; 69+ messages in thread From: Davide Libenzi @ 2007-02-11 4:53 UTC (permalink / raw) To: Ralf Baechle Cc: David Woodhouse, Heiko Carstens, linux-mips, Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper On Sat, 10 Feb 2007, Ralf Baechle wrote: > Unfortunately struct epoll_event contains a gap so it bets on identical > padding rules between native and compat ABI and anyway, padding is wasted > space so the struct members should have been swapped when this structure > was created. Oh well, too late. You really should have needed padding in there, since even if you swapped the members, sizeof(struct epoll_event) would still need to be 16, if alignof(u64) == 8. Either adding an extra auxilliary u32, or make the two members be u64, would have been ok. I'll be posting a patch that adds the compat_ layer for epoll in kernel/compat.c. Architectures that needs it (currently only ARM-EABI and IA64 use a compat code for epoll), should wire them up. - Davide ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 21:34 ` Ralf Baechle 2007-02-11 4:53 ` Davide Libenzi @ 2007-02-11 15:33 ` David Woodhouse 2007-02-11 16:09 ` Ralf Baechle 2007-02-11 16:14 ` Heiko Carstens 2 siblings, 1 reply; 69+ messages in thread From: David Woodhouse @ 2007-02-11 15:33 UTC (permalink / raw) To: Ralf Baechle Cc: Heiko Carstens, Davide Libenzi, linux-mips, Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper On Sat, 2007-02-10 at 21:34 +0000, Ralf Baechle wrote: > Unfortunately struct epoll_event contains a gap so it bets on identical > padding rules between native and compat ABI and anyway, padding is wasted > space so the struct members should have been swapped when this structure > was created. Oh well, too late. Indeed. That was the example I was thinking of when I suggested the "no new syscalls without _simultaneous_ compat version" rule. -- dwmw2 ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-11 15:33 ` David Woodhouse @ 2007-02-11 16:09 ` Ralf Baechle 0 siblings, 0 replies; 69+ messages in thread From: Ralf Baechle @ 2007-02-11 16:09 UTC (permalink / raw) To: David Woodhouse Cc: Heiko Carstens, Davide Libenzi, linux-mips, Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper On Sun, Feb 11, 2007 at 04:33:41PM +0100, David Woodhouse wrote: > On Sat, 2007-02-10 at 21:34 +0000, Ralf Baechle wrote: > > Unfortunately struct epoll_event contains a gap so it bets on identical > > padding rules between native and compat ABI and anyway, padding is wasted > > space so the struct members should have been swapped when this structure > > was created. Oh well, too late. > > Indeed. That was the example I was thinking of when I suggested the "no > new syscalls without _simultaneous_ compat version" rule. The need for a compat ABI is not always obvious. Ralf ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 21:34 ` Ralf Baechle 2007-02-11 4:53 ` Davide Libenzi 2007-02-11 15:33 ` David Woodhouse @ 2007-02-11 16:14 ` Heiko Carstens 2007-02-11 16:34 ` Davide Libenzi 2007-02-11 18:01 ` Ralf Baechle 2 siblings, 2 replies; 69+ messages in thread From: Heiko Carstens @ 2007-02-11 16:14 UTC (permalink / raw) To: Ralf Baechle Cc: David Woodhouse, Davide Libenzi, linux-mips, Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper On Sat, Feb 10, 2007 at 09:34:47PM +0000, Ralf Baechle wrote: > On Sat, Feb 10, 2007 at 10:32:07AM +0000, David Woodhouse wrote: > > > On Sat, 2007-02-10 at 11:22 +0100, Heiko Carstens wrote: > > > Which remembers me that I think that MIPS is using the non-compat version > > > of sys_epoll_pwait for compat syscalls. But maybe MIPS doesn't need a compat > > > syscall for some reason. Dunno. > > > > It's OK as long as the 64-bit kernel, N32 and O32 userspace all agree > > there there's 32 bits of padding between the fields of this structure: > > > > struct epoll_event { > > __u32 events; > > __u64 data; > > }; > > > > I suspect it's a fairly safe bet that N32 userspace agrees; if the O32 > > ABI is different then it would need the compat syscall. > > That is correct - and apparently for all ABIs because I wasn't able to find > a compat_sys_epoll_pwait at all. Hmm.. so you don't need to do some fancy compat conversion for the sigset_t that gets passed? Why is that? I don't get it... ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-11 16:14 ` Heiko Carstens @ 2007-02-11 16:34 ` Davide Libenzi 2007-02-11 18:01 ` Ralf Baechle 1 sibling, 0 replies; 69+ messages in thread From: Davide Libenzi @ 2007-02-11 16:34 UTC (permalink / raw) To: Heiko Carstens Cc: Ralf Baechle, David Woodhouse, linux-mips, Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper On Sun, 11 Feb 2007, Heiko Carstens wrote: > On Sat, Feb 10, 2007 at 09:34:47PM +0000, Ralf Baechle wrote: > > On Sat, Feb 10, 2007 at 10:32:07AM +0000, David Woodhouse wrote: > > > > > On Sat, 2007-02-10 at 11:22 +0100, Heiko Carstens wrote: > > > > Which remembers me that I think that MIPS is using the non-compat version > > > > of sys_epoll_pwait for compat syscalls. But maybe MIPS doesn't need a compat > > > > syscall for some reason. Dunno. > > > > > > It's OK as long as the 64-bit kernel, N32 and O32 userspace all agree > > > there there's 32 bits of padding between the fields of this structure: > > > > > > struct epoll_event { > > > __u32 events; > > > __u64 data; > > > }; > > > > > > I suspect it's a fairly safe bet that N32 userspace agrees; if the O32 > > > ABI is different then it would need the compat syscall. > > > > That is correct - and apparently for all ABIs because I wasn't able to find > > a compat_sys_epoll_pwait at all. > > Hmm.. so you don't need to do some fancy compat conversion for the sigset_t > that gets passed? Why is that? I don't get it... The compat_sys_epoll_pwait function has two sources of compat. One is the sigset_t and the other one is the struct epoll_event. The sigset_t compat is always needed, while the struct epoll_event may be needed. The code of (upcoming) compat_sys_epoll_pwait takes care of both, with a smart compile-time check to wire sys_epoll_wait or compat_sys_epoll_wait, depending on the need of the struct epoll_event compat handling. So yes, compat_sys_epoll_pwait is needed. - Davide ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-11 16:14 ` Heiko Carstens 2007-02-11 16:34 ` Davide Libenzi @ 2007-02-11 18:01 ` Ralf Baechle 1 sibling, 0 replies; 69+ messages in thread From: Ralf Baechle @ 2007-02-11 18:01 UTC (permalink / raw) To: Heiko Carstens Cc: David Woodhouse, Davide Libenzi, linux-mips, Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper On Sun, Feb 11, 2007 at 05:14:46PM +0100, Heiko Carstens wrote: > Hmm.. so you don't need to do some fancy compat conversion for the sigset_t > that gets passed? Why is that? I don't get it... Ah, I finally get your point. Yes, that needs conversion. Ralf ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 10:22 ` Heiko Carstens 2007-02-10 10:32 ` David Woodhouse @ 2007-02-10 21:05 ` Ralf Baechle 2007-02-11 10:37 ` Andi Kleen 1 sibling, 1 reply; 69+ messages in thread From: Ralf Baechle @ 2007-02-10 21:05 UTC (permalink / raw) To: Heiko Carstens Cc: Davide Libenzi, linux-mips, David Woodhouse, Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper, Andi Kleen On Sat, Feb 10, 2007 at 11:22:05AM +0100, Heiko Carstens wrote: > Which remembers me that I think that MIPS is using the non-compat version > of sys_epoll_pwait for compat syscalls. But maybe MIPS doesn't need a compat > syscall for some reason. Dunno. Which reminds me that x86_64 i386 compat doesn't wire up sys_epoll_pwait ;-) Ralf Signed-off-by: Ralf Baechle <ralf@linux-mips.org> diff --git a/arch/x86_64/ia32/ia32entry.S b/arch/x86_64/ia32/ia32entry.S index b4aa875..5993262 100644 --- a/arch/x86_64/ia32/ia32entry.S +++ b/arch/x86_64/ia32/ia32entry.S @@ -718,4 +718,5 @@ ia32_sys_call_table: .quad compat_sys_vmsplice .quad compat_sys_move_pages .quad sys_getcpu + .quad sys_epoll_pwait ia32_syscall_end: ^ permalink raw reply related [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 21:05 ` Ralf Baechle @ 2007-02-11 10:37 ` Andi Kleen 0 siblings, 0 replies; 69+ messages in thread From: Andi Kleen @ 2007-02-11 10:37 UTC (permalink / raw) To: Ralf Baechle Cc: Heiko Carstens, Davide Libenzi, linux-mips, David Woodhouse, Andrew Morton, Alexey Dobriyan, Linux Kernel Mailing List, Ulrich Drepper On Saturday 10 February 2007 22:05, Ralf Baechle wrote: > On Sat, Feb 10, 2007 at 11:22:05AM +0100, Heiko Carstens wrote: > > > Which remembers me that I think that MIPS is using the non-compat version > > of sys_epoll_pwait for compat syscalls. But maybe MIPS doesn't need a compat > > syscall for some reason. Dunno. > > Which reminds me that x86_64 i386 compat doesn't wire up sys_epoll_pwait ;-) Added thanks. -Andi ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 17:35 ` David Woodhouse 2007-02-09 21:45 ` Andrew Morton @ 2007-02-10 13:03 ` Andi Kleen 1 sibling, 0 replies; 69+ messages in thread From: Andi Kleen @ 2007-02-10 13:03 UTC (permalink / raw) To: David Woodhouse; +Cc: Andrew Morton, linux-kernel, drepper David Woodhouse <dwmw2@infradead.org> writes: > On Thu, 2007-02-08 at 15:07 -0800, Andrew Morton wrote: > > lutimesat-simplify-utime2.patch > > lutimesat-extend-do_utimes-with-flags.patch > > lutimesat-actual-syscall-and-wire-up-on-i386.patch > > > > Do we want this? Ulrich says so. Will merge, I guess. > > I would strongly recommend that in the general case, you don't merge new > system calls unless the corresponding compat_ system call is > implemented. ... and there is a manpage ready to submit to manpages. -Andi ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:07 -mm merge plans for 2.6.21 Andrew Morton ` (5 preceding siblings ...) 2007-02-09 17:35 ` David Woodhouse @ 2007-02-09 19:37 ` Alan 2007-02-09 21:51 ` Andrew Morton 2007-02-10 13:06 ` Andi Kleen 2007-02-09 22:18 ` Guillaume Chazarain ` (2 subsequent siblings) 9 siblings, 2 replies; 69+ messages in thread From: Alan @ 2007-02-09 19:37 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel Please just push the EDAC K8 stuff. Andi will say "no" from now until the end of time, but end users want it, distributions want it, and Andi is not the EDAC maintainer so should consider himself overruled on what isn't a technical issue but a personal political viewpoint. Alan ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 19:37 ` Alan @ 2007-02-09 21:51 ` Andrew Morton 2007-02-10 1:15 ` Carl-Daniel Hailfinger 2007-02-10 13:06 ` Andi Kleen 1 sibling, 1 reply; 69+ messages in thread From: Andrew Morton @ 2007-02-09 21:51 UTC (permalink / raw) To: Alan; +Cc: linux-kernel On Fri, 9 Feb 2007 19:37:53 +0000 Alan <alan@lxorguk.ukuu.org.uk> wrote: > Please just push the EDAC K8 stuff. OK. > Andi will say "no" from now until the > end of time, but end users want it, distributions want it, and Andi is > not the EDAC maintainer so should consider himself overruled on what > isn't a technical issue but a personal political viewpoint. I'll just tell him I sent it by accident. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 21:51 ` Andrew Morton @ 2007-02-10 1:15 ` Carl-Daniel Hailfinger 2007-02-10 1:29 ` Andrew Morton 0 siblings, 1 reply; 69+ messages in thread From: Carl-Daniel Hailfinger @ 2007-02-10 1:15 UTC (permalink / raw) To: Andrew Morton; +Cc: Alan, linux-kernel Andrew Morton wrote: > On Fri, 9 Feb 2007 19:37:53 +0000 > Alan <alan@lxorguk.ukuu.org.uk> wrote: > >> Please just push the EDAC K8 stuff. > > OK. > >> Andi will say "no" from now until the >> end of time, but end users want it, distributions want it, and Andi is >> not the EDAC maintainer so should consider himself overruled on what >> isn't a technical issue but a personal political viewpoint. > > I'll just tell him I sent it by accident. Could you please merge ACPI-DSDT-in-initrd for the same reasons? Regards, Carl-Daniel ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 1:15 ` Carl-Daniel Hailfinger @ 2007-02-10 1:29 ` Andrew Morton 0 siblings, 0 replies; 69+ messages in thread From: Andrew Morton @ 2007-02-10 1:29 UTC (permalink / raw) To: Carl-Daniel Hailfinger; +Cc: Alan, linux-kernel On Sat, 10 Feb 2007 02:15:11 +0100 Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> wrote: > Andrew Morton wrote: > > On Fri, 9 Feb 2007 19:37:53 +0000 > > Alan <alan@lxorguk.ukuu.org.uk> wrote: > > > >> Please just push the EDAC K8 stuff. > > > > OK. > > > >> Andi will say "no" from now until the > >> end of time, but end users want it, distributions want it, and Andi is > >> not the EDAC maintainer so should consider himself overruled on what > >> isn't a technical issue but a personal political viewpoint. > > > > I'll just tell him I sent it by accident. > > Could you please merge ACPI-DSDT-in-initrd for the same reasons? > I don't know what that is. ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 19:37 ` Alan 2007-02-09 21:51 ` Andrew Morton @ 2007-02-10 13:06 ` Andi Kleen 2007-02-10 13:48 ` Alan 2007-02-12 20:56 ` Doug Thompson 1 sibling, 2 replies; 69+ messages in thread From: Andi Kleen @ 2007-02-10 13:06 UTC (permalink / raw) To: Alan; +Cc: Andrew Morton, linux-kernel Alan <alan@lxorguk.ukuu.org.uk> writes: > Please just push the EDAC K8 stuff. Andi will say "no" from now until the > end of time, but end users want it, distributions want it, and Andi is > not the EDAC maintainer so should consider himself overruled on what > isn't a technical issue but a personal political viewpoint. Well it's a technical issue -- it conflicts with the machine check code that is already implemented by stealing away its events. You would first need a CONFIG_MCE=n on x86-64 at least, otherwise one of them will be unhappy. The other issue is that the existing code does everything EDAC K8 does already perfectly fine, just in a small fraction of the code. -Andi ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 13:06 ` Andi Kleen @ 2007-02-10 13:48 ` Alan 2007-02-10 14:43 ` Andi Kleen 2007-02-12 20:56 ` Doug Thompson 1 sibling, 1 reply; 69+ messages in thread From: Alan @ 2007-02-10 13:48 UTC (permalink / raw) To: Andi Kleen; +Cc: Andrew Morton, linux-kernel > Well it's a technical issue -- it conflicts with the machine check > code that is already implemented by stealing away its events. > You would first need a CONFIG_MCE=n on x86-64 at least, otherwise > one of them will be unhappy. That is a fair point, albeit after far too long sitting stuck in the tree. I'll have a look into this a bit further, probably MCE_K8 should feed off the output of the MCE driver. > The other issue is that the existing code does everything EDAC > K8 does already perfectly fine, just in a small fraction of > the code. Which is false. It provided a totally inconsistent interface to user space, while the EDAC layer provides the consistency many people need and want. Also unless it has changed remarkably the MCE driver doesn't do scrubbing which is needed in software on some chip revisions. The MCE driver is small, neat, incomplete for some cases and different to all the other platforms as they use off CPU memory controllers. Its ideal for a lot of uses but not big enterprise systems. Thats why we need both. Alan ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 13:48 ` Alan @ 2007-02-10 14:43 ` Andi Kleen 0 siblings, 0 replies; 69+ messages in thread From: Andi Kleen @ 2007-02-10 14:43 UTC (permalink / raw) To: Alan; +Cc: Andrew Morton, linux-kernel On Saturday 10 February 2007 14:48, Alan wrote: > > Well it's a technical issue -- it conflicts with the machine check > > code that is already implemented by stealing away its events. > > You would first need a CONFIG_MCE=n on x86-64 at least, otherwise > > one of them will be unhappy. > > That is a fair point, albeit after far too long sitting stuck in the tree. I'm pretty sure I mentioned it earlier already. > I'll have a look into this a bit further, probably MCE_K8 should feed off > the output of the MCE driver. You could probably write a simple edac driver that just feeds of the events mce.c generates and presents that as the EDAC drivers. Currently the user space device is the only consumer, but it wouldn't be hard to full it off to other kernel users. Possibly keeping the existing code that reads the DIMMs and then reads the address map of the NB and match that, then you get the same output. [However see below -- i think matching it to SMBIOS using the address is a lot more useful for the user in the end] > > > The other issue is that the existing code does everything EDAC > > K8 does already perfectly fine, just in a small fraction of > > the code. > > Which is false. It provided a totally inconsistent interface to user > space, while the EDAC layer provides the consistency many people need and > want. I still don't get that argument because unlike mce.c+mcelog EDAC cannot actually tell you where the DIMM that failed is located on your motherboard. As far as i can make it out it's only useful for people who either have full schematics of their motherboard and know how to read them or did a full try'n'error of all combinations run once to figure out which channel is located where. Somehow I cannot imagine either of that is very common in "enterprises" ;-) Ok one argument was that some LinuxBIOS users don't seem to set up these tables and have the necessary information at hand for their custom cluster hardware, but that's still a weird uncommon case and it would be far better if they just fixed LB. > Also unless it has changed remarkably the MCE driver doesn't do > scrubbing which is needed in software on some chip revisions. True, adding that might be a good idea. [Although I guess that could be done with a small user utility using /dev/mem though if you really wanted it?] One thing EDAC also does that mcelog doesn't is decode the ECC syndromes -- but I haven't figured out a use case yet where that is actually useful to know afterwards. -Andi ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 13:06 ` Andi Kleen 2007-02-10 13:48 ` Alan @ 2007-02-12 20:56 ` Doug Thompson 2007-02-12 21:46 ` Andi Kleen 1 sibling, 1 reply; 69+ messages in thread From: Doug Thompson @ 2007-02-12 20:56 UTC (permalink / raw) To: Andi Kleen, Alan; +Cc: Andrew Morton, linux-kernel --- Andi Kleen <ak@suse.de> wrote: > Alan <alan@lxorguk.ukuu.org.uk> writes: > > > Please just push the EDAC K8 stuff. Andi will say "no" from now > until the > > end of time, but end users want it, distributions want it, and Andi > is > > not the EDAC maintainer so should consider himself overruled on > what > > isn't a technical issue but a personal political viewpoint. > > Well it's a technical issue -- it conflicts with the machine check > code that is already implemented by stealing away its events. > You would first need a CONFIG_MCE=n on x86-64 at least, otherwise > one of them will be unhappy. > > The other issue is that the existing code does everything EDAC > K8 does already perfectly fine, just in a small fraction of > the code. > > -Andi I assert that there is a greater than just a technical implementation issue. I maintain that it is a design pattern issue. The MCE hardware mechanism is a good mechanism for reporting Hardware events. The problem comes in as to WHERE those events should be handled. EDAC was designed to be a 'stack' of drivers. The upper CORE module is to provide an abstraction, whose presentation to user space is to be uniform across processes and architectures. The individual lower drivers, which register with the core, handle the machine and/or architecture specifics of 'driving' the hardware and funnel events to the core. EDAC is operational now on MIPS and ARM architectures (phone device) as well as on x86 and x86_64. Additional features of a given arch/processor that can be utilized in harvesting hardware events should be captured and then funneled to the 'low' level EDAC driver. That driver can then pass the event onto the CORE module for further processings and presentation, as determined by the controls into the CORE. MCE event processing should be funneled to the EDAC K8 driver and not directly to userspace. The design pattern I have been trying to utilize in EDAC, is the same one used by the Network stack and the SCSI stack. If I have a new NIC, which has some great new hardware feature, should the driver export that feature outside of the network stack, which does not CURRENTLY support the processing of the feature. OR should the network stack control paths be extended to provide a mechanism whereby that new feature could be utilized? Similiar design pattern exists on the SCSI stack, with device features and hardware abilities. I am currently developing enhancements to EDAC that provide for L1, L2, etc cache ECC event harvesting, DMA ECC event harvest, interconnect harvesting, and other chipset/processing ECC event harvesting. Some events are polled others are software interupt delivered. This is on an arch OTHER than x86 or x86_64. But these EDAC features can be used on the x86/x86_64 as well. As there IS an ECC event consumption race between MCE and EDAC, then at least a 'config' mechanism can be utilized to switch between the two. Better yet, I would like to be able to capture the MCE events and funnel them to EDAC, when loaded, as a downstream consumer of the MCE event stream. Then EDAC would process the information and then proceed to inform whether the event was handled or not by EDAC. Additionally, it would inform whether a panic should occur or not. When EDAC is not loaded, then MCE would act as it does now. The downside with both EDAC and MCE being in place, is that there would be ONE MCE processing pattern for the AMD x86_64 processors and the EDAC pattern for all the other archs/processors. As far as I can tell, other MCE processors don't generate the events as advertized. Maybe I am wrong on that, but I can't find them. How much hardware specific detail should be exported? I assert the better solution is to have the ability to hook into the MCE event stream by the EDAC K8 driver, then provide action rules (EDAC controls) in processing those events, which EDAC would return to the MCE stream. As to the size of the MCE code doing everything EDAC K8 does, that is mostly true. BUT then the x86_64 MCE mechanism becomes the exception path. Even the company using EDAC on the phone device doesn't mind the 60 kilobytes. doug t ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-12 20:56 ` Doug Thompson @ 2007-02-12 21:46 ` Andi Kleen 2007-02-12 22:45 ` Doug Thompson 0 siblings, 1 reply; 69+ messages in thread From: Andi Kleen @ 2007-02-12 21:46 UTC (permalink / raw) To: Doug Thompson; +Cc: Alan, Andrew Morton, linux-kernel > I am currently developing enhancements to EDAC that provide for L1, L2, > etc cache ECC event harvesting, mce.c + mcelog do that already for all x86-64 cpus because that's all reported as standard x86 machine checks. > DMA ECC event harvest, interconnect > harvesting, and other chipset/processing ECC event harvesting. Some > events are polled others are software interupt delivered. This is on an > arch OTHER than x86 or x86_64. But these EDAC features can be used on > the x86/x86_64 as well. Well at least the CPU features are redundant. > As there IS an ECC event consumption race between MCE and EDAC, then at > least a 'config' mechanism can be utilized to switch between the two. Possibly, but it's still unclear why you want another interface if an already existing one is there and works. Anyways if you feel strongly about having redundant interfaces you could probably do it. For the CPU caches etc. it shouldn't make much difference, although it is unlikely to be very useful either. But as I wrote earlier EDAC could be made a consumer of mce.c events and munge them in whatever format you like there. Basically it could be an additional presentation layer for Alan's enterprise users with the hardware schematics at hand. My main objection to the K8 northbridge control was though that it was done in a somewhat non practical way in EDAC (no useful decoding) and it actually steals the events from the subsystem that does the useful decoding. > Better yet, Beauty in the eye of the beholder i guess @) > I would like to be able to capture the MCE events and > funnel them to EDAC, when loaded, as a downstream consumer of the MCE > event stream. Then EDAC would process the information and then proceed > to inform whether the event was handled or not by EDAC. Additionally, > it would inform whether a panic should occur or not. Yes, just mce.c has all that logic already. Not sure what adding another layer would help there. [In fact it has too much logic already, more powerful than current x86 CPUs can support] Or do you want that to be decided by user space code? That would seem somewhat risky to me. > When EDAC is not loaded, then MCE would act as it does now. > > The downside with both EDAC and MCE being in place, is that there would > be ONE MCE processing pattern for the AMD x86_64 processors No, mce.c handles all the machine checks on Intel CPUs just fine too. The thing it doesn't do is process chipset events. I can see the value of external drivers here, although that should be hopefully a temporary state until Intel finally has integrated memory controllers too. Ok PCI error reporting will be likely always separate, but I'm not sure that it fits very well because it should rather feed directly into the drivers for them to report IO errors up the normal stacks. > and the > EDAC pattern for all the other archs/processors. As far as I can tell, > other MCE processors don't generate the events as advertized. Maybe I > am wrong on that, but I can't find them. How much hardware specific > detail should be exported? All MCE capable processors generate events, although how many of them are recoverable greatly varies (often you just get a unrecoverable exception) > > I assert the better solution is to have the ability to hook into the > MCE event stream by the EDAC K8 driver, then provide action rules (EDAC > controls) The latest (pre released) mcelog 0.8pre has triggers for excessive memory errors per DIMM. Is that something you want to do for EDAC too? > As to the size of the MCE code doing everything EDAC K8 does, that is > mostly true. BUT then the x86_64 MCE mechanism becomes the exception > path. Sorry you lost me on that one. -Andi ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-12 21:46 ` Andi Kleen @ 2007-02-12 22:45 ` Doug Thompson 0 siblings, 0 replies; 69+ messages in thread From: Doug Thompson @ 2007-02-12 22:45 UTC (permalink / raw) To: Andi Kleen; +Cc: Alan, Andrew Morton, linux-kernel --- Andi Kleen <andi@firstfloor.org> wrote: > > As to the size of the MCE code doing everything EDAC K8 does, that > is > > mostly true. BUT then the x86_64 MCE mechanism becomes the > exception > > path. > > Sorry you lost me on that one. > > -Andi In similiar manner of the original SATA driver model, the one that didn't use the SCSI stack. Then the SATA model was enhanced to fit under SCSI, then the SATA drivers ported to run under the SATA module. At that point, the original SATA driver model was an exception to the SATA model. Yes, if all the world used the hardware MCE mechanism, then the MCE device probably would satisify the requirements. But since linux runs across so many architectures and processors, the export of a single architecture's mechanism then implies that a second interface is necessary anyway in order to provide for those "other" archs. At that point we then move the abstraction into userspace anyway. Scripts will then need to "know" which arch they are on, in order to pull ECC events from one or the other interface. Thus, where is the line as to where the "portable" abstraction "fits"? thanks for your comments doug t ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:07 -mm merge plans for 2.6.21 Andrew Morton ` (6 preceding siblings ...) 2007-02-09 19:37 ` Alan @ 2007-02-09 22:18 ` Guillaume Chazarain 2007-02-10 9:58 ` -mm merge plans for 2.6.21 -- md-dm-reduce-stack-usage-with-stacked-block-devices.patch Heiko Carstens 2007-02-11 0:31 ` -mm merge plans for 2.6.21 Dave Jones 9 siblings, 0 replies; 69+ messages in thread From: Guillaume Chazarain @ 2007-02-09 22:18 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel [-- Attachment #1: Type: text/plain, Size: 2063 bytes --] Andrew Morton a écrit : > factor-outstanding-i-o-error-handling.patch > factor-outstanding-i-o-error-handling-tidy.patch > I still like them. But the original problem is still present. > sync_sb_inodes-propagate-errors.patch > You explained in http://lkml.org/lkml/2007/1/2/238 that the mapping flags should be set at the lowest level, but with this change I have a hard time choosing a place to stick it. I don't like when a function both sets the mapping flags and returns an error code, I think it should be mutually exclusive, so that we know what to do (propagate the return code?) and what to expect (are the mapping flags up to date?), which seemed to be the case before this patch. For instance there is no point in propagating an error return code up to sys_sync() as it can only drop it. The call trace that cleared the flags, the origin of the problem, is: void do_sync(1) void sync_inodes(1) void __sync_inodes(1) void sync_inodes_sb(sb, 1) void sync_sb_inodes(sb, WB_SYNC_ALL) int __writeback_single_inode(inode, WB_SYNC_ALL) int __sync_single_inode(inode, WB_SYNC_ALL) int filemap_fdatawait(mapping) int wait_on_page_writeback_range(mapping) int test_and_clear(...) re-setting the flag at a too low level, would mean it is still set after a msync() or fsync() that could return the status to its caller. My interpretation is that low level functions up to __writeback_single_inode() can be used by fsync() and the like that can return the error to their caller, unlike high level functions starting at sync_sb_inodes() that don't need a return value as their caller can do nothing with it. So re-setting the flag in sync_sb_inodes() just after __writeback_single_inode() looks right to me, and I propose the exact same patch as the first time. > block_write_full_page-handle-enospc.patch > It seems to me that __block_write_full_page is always called more or less directly from __mpage_writepage, and the latter handles enospc in the mapping flags. So I am not sure this patch is needed. Thanks. -- Guillaume [-- Attachment #2: sync_sb_inodes_handle_error.patch --] [-- Type: text/x-patch, Size: 2199 bytes --] I/O errors could go unnoticed when syncing, for example the following code could write a file bigger than 10Mib on a 10Mib filesystem. With this patch, msync() will report the error originally encountered by sync(). Tuning the number of sync may be needed to reproduce the bug. make_file.c: #include <unistd.h> #include <sys/fcntl.h> #include <sys/mman.h> #include <string.h> #include <stdio.h> #define NR_SYNC 3 /* Adjust me if needed */ #define SIZE ((10 << 20) + (100 << 10)) int main(void) { int i, fd; char *mapping; fd = open("mnt/file", O_RDWR | O_CREAT, 0600); if (fd < 0) { perror("open"); return 1; } if (ftruncate(fd, SIZE) < 0) { perror("ftruncate"); return 1; } mapping = mmap(NULL, SIZE, PROT_WRITE, MAP_SHARED, fd, 0); if (mapping == MAP_FAILED) { perror("mmap"); return 1; } memset(mapping, 0xFF, SIZE); for (i = 0; i < NR_SYNC; i++) sync(); if (msync(mapping, SIZE, MS_SYNC) < 0) { perror("msync"); return 1; } if (close(fd) < 0) { perror("close"); return 1; } puts("File written successfully => bad!\n"); return 0; } #!/bin/sh dd if=/dev/zero of=fs.10M bs=10M count=0 seek=1 mkfs.ext2 -qF fs.10M mkdir mnt mount fs.10M mnt -o loop ./make_file Signed-off-by: Guillaume Chazarain <guichaz@yahoo.fr> --- fs-writeback.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff -r ecb3a0d111ec fs/fs-writeback.c --- a/fs/fs-writeback.c Fri Feb 09 15:31:50 2007 +0100 +++ b/fs/fs-writeback.c Fri Feb 09 23:10:47 2007 +0100 @@ -327,6 +327,7 @@ sync_sb_inodes(struct super_block *sb, s struct address_space *mapping = inode->i_mapping; struct backing_dev_info *bdi = mapping->backing_dev_info; long pages_skipped; + int ret; if (!bdi_cap_writeback_dirty(bdi)) { list_move(&inode->i_list, &sb->s_dirty); @@ -376,7 +377,8 @@ sync_sb_inodes(struct super_block *sb, s BUG_ON(inode->i_state & I_FREEING); __iget(inode); pages_skipped = wbc->pages_skipped; - __writeback_single_inode(inode, wbc); + ret = __writeback_single_inode(inode, wbc); + mapping_set_error(mapping, ret); if (wbc->sync_mode == WB_SYNC_HOLD) { inode->dirtied_when = jiffies; list_move(&inode->i_list, &sb->s_dirty); ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 -- md-dm-reduce-stack-usage-with-stacked-block-devices.patch 2007-02-08 23:07 -mm merge plans for 2.6.21 Andrew Morton ` (7 preceding siblings ...) 2007-02-09 22:18 ` Guillaume Chazarain @ 2007-02-10 9:58 ` Heiko Carstens 2007-02-10 22:35 ` Alasdair G Kergon 2007-02-11 0:31 ` -mm merge plans for 2.6.21 Dave Jones 9 siblings, 1 reply; 69+ messages in thread From: Heiko Carstens @ 2007-02-10 9:58 UTC (permalink / raw) To: Andrew Morton, Alasdair G Kergon, dm-devel, Neil Brown; +Cc: linux-kernel On Thu, Feb 08, 2007 at 03:07:10PM -0800, Andrew Morton wrote: > drivers-mdc-use-array_size-macro-when-appropriate.patch > md-dm-reduce-stack-usage-with-stacked-block-devices.patch > > -> neilb > > (The second one is getting idiotic. When are we going to fix this??) Since it was me who asked to have the stack usage reduced and Neil was kind enough to fix this, I'm wondering what the state of dm is. I think more than a year ago we had this: Alasdair G Kergon <agk@redhat.com> said: I can see nothing wrong with this in principle. For device-mapper at the moment though it's essential that, while the bio mappings may now get delayed, they still get processed in exactly the same order as they were passed to generic_make_request(). My main concern is whether the timing changes implicit in this patch will make the rare data-corrupting races in the existing snapshot code more likely. (I'm working on a fix for these races, but the unfinished patch is already several hundred lines long.) It would be helpful if some people on this mailing list would test this patch in various scenarios and report back. Alasdair, is dm already fixed or is there any chance that it will ever get fixed? ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 -- md-dm-reduce-stack-usage-with-stacked-block-devices.patch 2007-02-10 9:58 ` -mm merge plans for 2.6.21 -- md-dm-reduce-stack-usage-with-stacked-block-devices.patch Heiko Carstens @ 2007-02-10 22:35 ` Alasdair G Kergon 0 siblings, 0 replies; 69+ messages in thread From: Alasdair G Kergon @ 2007-02-10 22:35 UTC (permalink / raw) To: Heiko Carstens; +Cc: Andrew Morton, mbroz, dm-devel, Neil Brown, linux-kernel On Sat, Feb 10, 2007 at 10:58:58AM +0100, Heiko Carstens wrote: > Alasdair, is dm already fixed or is there any chance that it will > ever get fixed? I still expect us to get this changed within the next few months. We've dealt with the changes necessary to the crypt target for this. The final problem remaining is the core dm bio splitting code, and there's a related locking problem in that code to tackle at the same time. Alasdair -- agk@redhat.com ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 -- md-dm-reduce-stack-usage-with-stacked-block-devices.patch @ 2007-02-10 22:35 ` Alasdair G Kergon 0 siblings, 0 replies; 69+ messages in thread From: Alasdair G Kergon @ 2007-02-10 22:35 UTC (permalink / raw) To: Heiko Carstens; +Cc: linux-kernel, Andrew Morton, dm-devel On Sat, Feb 10, 2007 at 10:58:58AM +0100, Heiko Carstens wrote: > Alasdair, is dm already fixed or is there any chance that it will > ever get fixed? I still expect us to get this changed within the next few months. We've dealt with the changes necessary to the crypt target for this. The final problem remaining is the core dm bio splitting code, and there's a related locking problem in that code to tackle at the same time. Alasdair -- agk@redhat.com ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-08 23:07 -mm merge plans for 2.6.21 Andrew Morton ` (8 preceding siblings ...) 2007-02-10 9:58 ` -mm merge plans for 2.6.21 -- md-dm-reduce-stack-usage-with-stacked-block-devices.patch Heiko Carstens @ 2007-02-11 0:31 ` Dave Jones 9 siblings, 0 replies; 69+ messages in thread From: Dave Jones @ 2007-02-11 0:31 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel On Thu, Feb 08, 2007 at 03:07:10PM -0800, Andrew Morton wrote: > > I'm getting fed up of holding onto hundreds of patches against subsystem > trees, sending them over and over again seeing and nothing happen. I sent 242 > patches out to subsystem maintainers on Monday and look at what's still here. > > agpgart-allow-drm-populated-agp-memory-types-tidy.patch > remove-hotplug-cpu-crap-from-cpufreq.patch > rewrite-lock-in-cpufreq-to-eliminate-cpufreq-hotplug-related-issues.patch > ondemand-governor-restructure-the-work-callback.patch > ondemand-governor-use-new-cpufreq-rwsem-locking-in-work-callback.patch > cpu_freq_table-shouldnt-be-a-def_tristate.patch > > -> davej Apologies, I suck. I'll dispose of these appropriately tonight. Dave -- http://www.codemonkey.org.uk ^ permalink raw reply [flat|nested] 69+ messages in thread
* -mm merge plans for 2.6.21
@ 2007-02-09 2:57 Parag Warudkar
2007-02-09 3:05 ` Andrew Morton
0 siblings, 1 reply; 69+ messages in thread
From: Parag Warudkar @ 2007-02-09 2:57 UTC (permalink / raw)
To: akpm; +Cc: linux-kernel
>x86-fix-vdso-mapping-for-aout-executables.patch
>a.out executables are presently non-functional. This patch needs more work.
I have a patch for x86 ready and tested and I should be able to get
the full thing (x86, ppc, sh and x86_64) out over the weekend. (This
time around I got rid of the CONFIG stuff used __attribute__((weak))
as Andi suggested. Hopefully that's what you meant by more work?)
Parag
^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-09 2:57 Parag Warudkar @ 2007-02-09 3:05 ` Andrew Morton 0 siblings, 0 replies; 69+ messages in thread From: Andrew Morton @ 2007-02-09 3:05 UTC (permalink / raw) To: Parag Warudkar; +Cc: linux-kernel On Thu, 8 Feb 2007 21:57:50 -0500 "Parag Warudkar" <parag.warudkar@gmail.com> wrote: > >x86-fix-vdso-mapping-for-aout-executables.patch > >a.out executables are presently non-functional. This patch needs more work. > > I have a patch for x86 ready and tested and I should be able to get > the full thing (x86, ppc, sh and x86_64) out over the weekend. (This > time around I got rid of the CONFIG stuff used __attribute__((weak)) > as Andi suggested. Hopefully that's what you meant by more work?) > Sounds good, thanks. ^ permalink raw reply [flat|nested] 69+ messages in thread
[parent not found: <fa.7Z67qjqJwFP7+8QiVtu5tq6CZyU@ifi.uio.no>]
[parent not found: <fa.4Y/nCUol/tGEodoOl/Jm9nf2AEA@ifi.uio.no>]
[parent not found: <fa.TgZy4z2lRhwhAWCUE8IuGvMVUCU@ifi.uio.no>]
[parent not found: <fa.HINMjdGzCuxlEiWtVvmNz7Pv9Pc@ifi.uio.no>]
[parent not found: <fa.2ClW7C4ZyCP9QlT4vg7CbzjSqwg@ifi.uio.no>]
* Re: -mm merge plans for 2.6.21 [not found] ` <fa.2ClW7C4ZyCP9QlT4vg7CbzjSqwg@ifi.uio.no> @ 2007-02-10 17:04 ` Robert Hancock 2007-01-12 23:19 ` Frederik Deweerdt 0 siblings, 1 reply; 69+ messages in thread From: Robert Hancock @ 2007-02-10 17:04 UTC (permalink / raw) To: Frederik Deweerdt, linux-kernel; +Cc: Arnd Bergmann Frederik Deweerdt wrote: >> How about this one instead then: > Well, the warning you get is not that obvious: > > test.c: In function 'main': > test.c:11: warning: 'deprecated_irqf' is deprecated > > And as far as I could test (gcc 4.1.1 and gcc 3.4.3), Arjan's comment is > not true, the "static const int" don't use extra space, they get > optimized away by the compiler (see http://lkml.org/lkml/2007/2/9/106). gcc 3.2 should be tested as well, that is still supported by the kernel, and versions before 3.4 did not have unit-at-a-time optimizations. -- Robert Hancock Saskatoon, SK, Canada To email, remove "nospam" from hancockr@nospamshaw.ca Home Page: http://www.roberthancock.com/ ^ permalink raw reply [flat|nested] 69+ messages in thread
* Re: -mm merge plans for 2.6.21 2007-02-10 17:04 ` Robert Hancock @ 2007-01-12 23:19 ` Frederik Deweerdt 0 siblings, 0 replies; 69+ messages in thread From: Frederik Deweerdt @ 2007-01-12 23:19 UTC (permalink / raw) To: Robert Hancock; +Cc: linux-kernel, Arnd Bergmann, arjan On Sat, Feb 10, 2007 at 11:04:48AM -0600, Robert Hancock wrote: > Frederik Deweerdt wrote: > >>How about this one instead then: > >Well, the warning you get is not that obvious: > >test.c: In function 'main': > >test.c:11: warning: 'deprecated_irqf' is deprecated > >And as far as I could test ... which apparently was not enough :) > >(gcc 4.1.1 and gcc 3.4.3), Arjan's comment is > >not true, the "static const int" don't use extra space, they get > >optimized away by the compiler (see http://lkml.org/lkml/2007/2/9/106). > > gcc 3.2 should be tested as well, that is still supported by the kernel, and versions before 3.4 did not have unit-at-a-time optimizations. Sorry for the delay. I've setup a 3.2.3 gcc and, indeed, the symbols make their way in the binary... $ gcc-3.2.3 -O2 -c dont_use_flag.c $ nm dont_use_flag.o 00000000 r SA_INTERRUPT 00000000 T main U printf Regards, Frederik ^ permalink raw reply [flat|nested] 69+ messages in thread
end of thread, other threads:[~2007-02-12 22:45 UTC | newest] Thread overview: 69+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2007-02-08 23:07 -mm merge plans for 2.6.21 Andrew Morton 2007-02-08 23:12 ` Roland Dreier 2007-02-08 23:29 ` Jan Engelhardt 2007-02-08 23:44 ` Andrew Morton 2007-02-09 15:02 ` Thomas Gleixner 2007-02-09 10:57 ` Frederik Deweerdt 2007-02-09 11:24 ` Arjan van de Ven 2007-02-09 11:39 ` Andrew Morton 2007-02-09 12:32 ` Arjan van de Ven 2007-02-09 14:05 ` deweerdt 2007-02-09 13:04 ` Andi Kleen 2007-02-09 12:27 ` Jan Engelhardt 2007-02-10 11:42 ` Arnd Bergmann 2007-02-10 14:19 ` Frederik Deweerdt 2007-02-08 23:34 ` Kyle McMartin 2007-02-08 23:53 ` Andrew Morton 2007-02-09 0:55 ` Paul Mackerras 2007-02-09 1:00 ` Andrew Morton 2007-02-09 5:32 ` Bharata B Rao 2007-02-09 8:26 ` Sébastien Dugué 2007-02-09 9:05 ` Andrew Morton 2007-02-09 10:10 ` Sébastien Dugué 2007-02-09 9:54 ` Lenar Lõhmus 2007-02-09 10:12 ` Andrew Morton 2007-02-09 12:48 ` James 2007-02-09 12:59 ` Lenar Lõhmus 2007-02-09 17:35 ` David Woodhouse 2007-02-09 21:45 ` Andrew Morton 2007-02-09 21:49 ` Russell King 2007-02-09 21:53 ` David Woodhouse 2007-02-09 22:03 ` Russell King 2007-02-09 22:12 ` David Woodhouse 2007-02-09 22:42 ` David Woodhouse 2007-02-10 2:05 ` Oleg Verych 2007-02-09 22:00 ` Andrew Morton 2007-02-09 22:06 ` Russell King 2007-02-09 21:59 ` David Woodhouse 2007-02-09 22:50 ` Davide Libenzi 2007-02-10 10:22 ` Heiko Carstens 2007-02-10 10:32 ` David Woodhouse 2007-02-10 21:34 ` Ralf Baechle 2007-02-11 4:53 ` Davide Libenzi 2007-02-11 15:33 ` David Woodhouse 2007-02-11 16:09 ` Ralf Baechle 2007-02-11 16:14 ` Heiko Carstens 2007-02-11 16:34 ` Davide Libenzi 2007-02-11 18:01 ` Ralf Baechle 2007-02-10 21:05 ` Ralf Baechle 2007-02-11 10:37 ` Andi Kleen 2007-02-10 13:03 ` Andi Kleen 2007-02-09 19:37 ` Alan 2007-02-09 21:51 ` Andrew Morton 2007-02-10 1:15 ` Carl-Daniel Hailfinger 2007-02-10 1:29 ` Andrew Morton 2007-02-10 13:06 ` Andi Kleen 2007-02-10 13:48 ` Alan 2007-02-10 14:43 ` Andi Kleen 2007-02-12 20:56 ` Doug Thompson 2007-02-12 21:46 ` Andi Kleen 2007-02-12 22:45 ` Doug Thompson 2007-02-09 22:18 ` Guillaume Chazarain 2007-02-10 9:58 ` -mm merge plans for 2.6.21 -- md-dm-reduce-stack-usage-with-stacked-block-devices.patch Heiko Carstens 2007-02-10 22:35 ` Alasdair G Kergon 2007-02-10 22:35 ` Alasdair G Kergon 2007-02-11 0:31 ` -mm merge plans for 2.6.21 Dave Jones 2007-02-09 2:57 Parag Warudkar 2007-02-09 3:05 ` Andrew Morton [not found] <fa.7Z67qjqJwFP7+8QiVtu5tq6CZyU@ifi.uio.no> [not found] ` <fa.4Y/nCUol/tGEodoOl/Jm9nf2AEA@ifi.uio.no> [not found] ` <fa.TgZy4z2lRhwhAWCUE8IuGvMVUCU@ifi.uio.no> [not found] ` <fa.HINMjdGzCuxlEiWtVvmNz7Pv9Pc@ifi.uio.no> [not found] ` <fa.2ClW7C4ZyCP9QlT4vg7CbzjSqwg@ifi.uio.no> 2007-02-10 17:04 ` Robert Hancock 2007-01-12 23:19 ` Frederik Deweerdt
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.