linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* mmotm 2013-02-19-17-20 uploaded
@ 2013-02-20  1:21 akpm
  2013-02-20 16:41 ` since-3.8 branch opened for mm git tree (was: mmotm 2013-02-19-17-20 uploaded) Michal Hocko
  2013-02-21  9:25 ` mmotm 2013-02-19-17-20 uploaded Stephen Boyd
  0 siblings, 2 replies; 13+ messages in thread
From: akpm @ 2013-02-20  1:21 UTC (permalink / raw)
  To: mm-commits, linux-kernel, linux-mm, linux-fsdevel, linux-next

The mm-of-the-moment snapshot 2013-02-19-17-20 has been uploaded to

   http://www.ozlabs.org/~akpm/mmotm/

mmotm-readme.txt says

README for mm-of-the-moment:

http://www.ozlabs.org/~akpm/mmotm/

This is a snapshot of my -mm patch queue.  Uploaded at random hopefully
more than once a week.

You will need quilt to apply these patches to the latest Linus release (3.x
or 3.x-rcY).  The series file is in broken-out.tar.gz and is duplicated in
http://ozlabs.org/~akpm/mmotm/series

The file broken-out.tar.gz contains two datestamp files: .DATE and
.DATE-yyyy-mm-dd-hh-mm-ss.  Both contain the string yyyy-mm-dd-hh-mm-ss,
followed by the base kernel version against which this patch series is to
be applied.

This tree is partially included in linux-next.  To see which patches are
included in linux-next, consult the `series' file.  Only the patches
within the #NEXT_PATCHES_START/#NEXT_PATCHES_END markers are included in
linux-next.

A git tree which contains the memory management portion of this tree is
maintained at git://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git
by Michal Hocko.  It contains the patches which are between the
"#NEXT_PATCHES_START mm" and "#NEXT_PATCHES_END" markers, from the series
file, http://www.ozlabs.org/~akpm/mmotm/series.


A full copy of the full kernel tree with the linux-next and mmotm patches
already applied is available through git within an hour of the mmotm
release.  Individual mmotm releases are tagged.  The master branch always
points to the latest release, so it's constantly rebasing.

http://git.cmpxchg.org/?p=linux-mmotm.git;a=summary

To develop on top of mmotm git:

  $ git remote add mmotm git://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git
  $ git remote update mmotm
  $ git checkout -b topic mmotm/master
  <make changes, commit>
  $ git send-email mmotm/master.. [...]

To rebase a branch with older patches to a new mmotm release:

  $ git remote update mmotm
  $ git rebase --onto mmotm/master <topic base> topic




The directory http://www.ozlabs.org/~akpm/mmots/ (mm-of-the-second)
contains daily snapshots of the -mm tree.  It is updated more frequently
than mmotm, and is untested.

A git copy of this tree is available at

	http://git.cmpxchg.org/?p=linux-mmots.git;a=summary

and use of this tree is similar to
http://git.cmpxchg.org/?p=linux-mmotm.git, described above.


This mmotm tree contains the following patches against 3.8:
(patches marked "*" will be included in linux-next)

* device_cgroup-dont-grab-mutex-in-rcu-callback.patch
  linux-next.patch
  arch-alpha-kernel-systblss-remove-debug-check.patch
* compiler-gcc4h-reorder-macros-based-upon-gcc-ver.patch
* compiler-gcch-add-gcc-recommended-gcc_version-macro.patch
* compiler-gcc34h-use-gcc_version-macro.patch
* compiler-gcc4h-bugh-remove-duplicate-macros.patch
* bugh-fix-build_bug_on-macro-in-__checker__.patch
* bugh-prevent-double-evaulation-of-in-build_bug_on.patch
* bugh-prevent-double-evaulation-of-in-build_bug_on-fix.patch
* bugh-make-build_bug_on-generate-compile-time-error.patch
* compilerh-bugh-prevent-double-error-messages-with-build_bug_on.patch
* bugh-compilerh-introduce-compiletime_assert-build_bug_on_msg.patch
* bugh-compilerh-introduce-compiletime_assert-build_bug_on_msg-checkpatch-fixes.patch
  i-need-old-gcc.patch
* proc-avoid-extra-pde_put-in-proc_fill_super.patch
* compat-return-efault-on-error-in-waitid.patch
* inotify-remove-broken-mask-checks-causing-unmount-to-be-einval.patch
* fs-block_devc-page-cache-wrongly-left-invalidated-after-revalidate_disk.patch
* x86-numa-dont-check-if-node-is-numa_no_node.patch
* revert-x86-mm-make-spurious_fault-check-explicitly-check-the-present-bit.patch
* pageattr-prevent-pse-and-gloabl-leftovers-to-confuse-pmd-pte_present-and-pmd_huge.patch
* x86-make-mem=-option-to-work-for-efi-platform.patch
* drivers-md-persistent-data-dm-transaction-managerc-rename-hash_size.patch
* mn10300-use-for_each_pci_dev-to-simplify-the-code.patch
* cris-use-int-for-ssize_t-to-match-size_t.patch
* pcmcia-move-unbind-rebind-into-dev_pm_opscomplete.patch
* mm-remove-free_area_cache-use-in-powerpc-architecture.patch
* mm-use-vm_unmapped_area-on-powerpc-architecture.patch
* drm-fb-helper-dont-sleep-for-screen-unblank-when-an-oopps-is-in-progress.patch
* fbcon-clear-the-logo-bitmap-from-the-margin-area.patch
* goldfish-framebuffer-driver.patch
* goldfish-framebuffer-driver-fix.patch
* video-mmp-display-subsystem.patch
* video-mmp-fb-support.patch
* video-mmp-fb-support-fix.patch
* video-mmp-display-controller-support.patch
* video-mmp-add-tpo-hvga-panel-supported.patch
* video-mmpdisp-add-spi-port-in-display-controller.patch
* arm-mmp-added-device-for-display-controller.patch
* arm-mmp-enable-display-in-ttc_dkb.patch
* arm-mmp-add-display-and-fb-support-in-pxa910-defconfig.patch
* drivers-video-kconfig-specify-the-socs-that-make-use-of-fb_imx.patch
* drivers-video-exynos-s6e8ax0c-use-devm_-apis-in-s6e8ax0c.patch
* drivers-video-exynos-exynos_mipi_dsic-fix-an-error-check-condition.patch
* drivers-video-exynos-exynos_mipi_dsic-use-devm_-apis.patch
* video-s3c-fb-use-arch_-dependancy.patch
* video-s3c-fb-remove-duplicated-s3c_fb_max_win.patch
* video-s3c-fb-remove-unnecessary-brackets.patch
* video-s3c-fb-add-the-bit-definitions-for-csc-eq709-and-eq601.patch
* video-s3c-fb-fix-typo-in-definition-of-vidcon1_vstatus_frontporch-value.patch
* video-exynos_dp-add-missing-of_node_put.patch
* video-exynos_dp-move-disable_irq-to-exynos_dp_suspend.patch
* cyber2000fb-avoid-palette-corruption-at-higher-clocks.patch
* time-dont-inline-export_symbol-functions.patch
* timer_list-split-timer_list_show_tickdevices.patch
* timer_list-convert-timer-list-to-be-a-proper-seq_file.patch
* timer_list-convert-timer-list-to-be-a-proper-seq_file-fix.patch
* timer_list-convert-timer-list-to-be-a-proper-seq_file-v2.patch
* timer_list-convert-timer-list-to-be-a-proper-seq_file-v2-fix.patch
* timer_list-convert-timer-list-to-be-a-proper-seq_file-fix-fix.patch
* mm-use-vm_unmapped_area-on-ia64-architecture.patch
* mm-use-vm_unmapped_area-in-hugetlbfs-on-ia64-architecture.patch
* scripts-tagssh-add-ctags-magic-for-declarations-of-popular-kernel-type.patch
* ocfs2-remove-kfree-redundant-null-checks.patch
* ocfs2-remove-kfree-redundant-null-checks-fix.patch
* mm-use-vm_unmapped_area-on-parisc-architecture.patch
* sched-proc-sched_stat-fails-on-very-very-large-machines.patch
* sched-proc-sched_stat-fails-on-very-very-large-machines-fix.patch
* sched-proc-sched_stat-fails-on-very-very-large-machines-v2.patch
* sched-proc-sched_stat-fails-on-very-very-large-machines-v2-fix.patch
* sched-proc-sched_stat-fails-on-very-very-large-machines-v2-fix-fix.patch
* sched-proc-sched_debug-fails-on-very-very-large-machines.patch
* sched-proc-sched_debug-fails-on-very-very-large-machines-fix.patch
* sched-proc-sched_debug-fails-on-very-very-large-machines-v2.patch
* sched-proc-sched_debug-fails-on-very-very-large-machines-v2-fix.patch
* lockdep-make-lockdep_assert_held-not-have-a-return-value.patch
* drivers-scsi-aacraid-srcc-silence-two-gcc-warnings.patch
* block-dont-select-percpu_rwsem.patch
* drivers-block-swim3c-fix-null-pointer-dereference.patch
* cfq-fix-lock-imbalance-with-failed-allocations.patch
* block-use-i_size_write-in-bd_set_size.patch
* block-remove-redundant-check-to-bd_openers.patch
* loopdev-fix-a-deadlock.patch
* loopdev-update-block-device-size-in-loop_set_status.patch
* loopdev-move-common-code-into-loop_figure_size.patch
* loopdev-remove-an-user-triggerable-oops.patch
* loopdev-ignore-negative-offset-when-calculate-loop-device-size.patch
* block-restore-proc-partitions-to-not-display-non-partitionable-removable-devices.patch
* fs-change-return-values-from-eacces-to-eperm.patch
* fs-block_devc-need-not-to-check-inode-i_bdev-in-bd_forget.patch
* fs-return-eagain-when-o_nonblock-write-should-block-on-frozen-fs.patch
* fs-fix-hang-with-bsd-accounting-on-frozen-filesystem.patch
* ocfs2-add-freeze-protection-to-ocfs2_file_splice_write.patch
* watchdog-trigger-all-cpu-backtrace-when-locked-up-and-going-to-panic.patch
  mm.patch
* memcg-oom-provide-more-precise-dump-info-while-memcg-oom-happening.patch
* mm-memcontrolc-convert-printkkern_foo-to-pr_foo.patch
* mm-hugetlbc-convert-to-pr_foo.patch
* cma-make-putback_lru_pages-call-conditional.patch
* cma-make-putback_lru_pages-call-conditional-fix.patch
* mm-memcg-only-evict-file-pages-when-we-have-plenty.patch
* mm-vmscan-save-work-scanning-almost-empty-lru-lists.patch
* mm-vmscan-clarify-how-swappiness-highest-priority-memcg-interact.patch
* mm-vmscan-improve-comment-on-low-page-cache-handling.patch
* mm-vmscan-clean-up-get_scan_count.patch
* mm-vmscan-clean-up-get_scan_count-fix.patch
* mm-vmscan-compaction-works-against-zones-not-lruvecs.patch
* mm-vmscan-compaction-works-against-zones-not-lruvecs-fix.patch
* mm-reduce-rmap-overhead-for-ex-ksm-page-copies-created-on-swap-faults.patch
* mm-page_allocc-__setup_per_zone_wmarks-make-min_pages-unsigned-long.patch
* mm-vmscanc-__zone_reclaim-replace-max_t-with-max.patch
* mm-compaction-do-not-accidentally-skip-pageblocks-in-the-migrate-scanner.patch
* mm-huge_memory-use-new-hashtable-implementation.patch
* mmksm-use-new-hashtable-implementation.patch
* memcgvmscan-do-not-break-out-targeted-reclaim-without-reclaimed-pages.patch
* mmotm-memcgvmscan-do-not-break-out-targeted-reclaim-without-reclaimed-pagespatch-fix.patch
* mmotm-memcgvmscan-do-not-break-out-targeted-reclaim-without-reclaimed-pagespatch-fix-fix.patch
* mm-make-madvisemadv_willneed-support-swap-file-prefetch.patch
* mm-make-madvisemadv_willneed-support-swap-file-prefetch-fix.patch
* mm-make-madvisemadv_willneed-support-swap-file-prefetch-fix-fix.patch
* mm-compaction-make-__compact_pgdat-and-compact_pgdat-return-void.patch
* mm-avoid-calling-pgdat_balanced-needlessly.patch
* mm-remap_file_pages-fixes.patch
* mm-introduce-mm_populate-for-populating-new-vmas.patch
* mm-use-mm_populate-for-blocking-remap_file_pages.patch
* mm-use-mm_populate-when-adjusting-brk-with-mcl_future-in-effect.patch
* mm-use-mm_populate-for-mremap-of-vm_locked-vmas.patch
* mm-remove-flags-argument-to-mmap_region.patch
* mm-remove-flags-argument-to-mmap_region-fix.patch
* mm-directly-use-__mlock_vma_pages_range-in-find_extend_vma.patch
* mm-introduce-vm_populate-flag-to-better-deal-with-racy-userspace-programs.patch
* mm-make-do_mmap_pgoff-return-populate-as-a-size-in-bytes-not-as-a-bool.patch
* mm-memory_hotplug-no-need-to-check-res-twice-in-add_memory.patch
* memory-hotplug-try-to-offline-the-memory-twice-to-avoid-dependence.patch
* memory-hotplug-check-whether-all-memory-blocks-are-offlined-or-not-when-removing-memory.patch
* memory-hotplug-remove-redundant-codes.patch
* memory-hotplug-remove-sys-firmware-memmap-x-sysfs.patch
* memory-hotplug-remove-sys-firmware-memmap-x-sysfs-fix.patch
* memory-hotplug-remove-sys-firmware-memmap-x-sysfs-fix-fix.patch
* memory-hotplug-remove-sys-firmware-memmap-x-sysfs-fix-fix-fix.patch
* memory-hotplug-remove-sys-firmware-memmap-x-sysfs-fix-fix-fix-fix.patch
* memory-hotplug-remove-sys-firmware-memmap-x-sysfs-fix-fix-fix-fix-fix.patch
* memory-hotplug-introduce-new-arch_remove_memory-for-removing-page-table.patch
* memory-hotplug-implement-register_page_bootmem_info_section-of-sparse-vmemmap.patch
* memory-hotplug-implement-register_page_bootmem_info_section-of-sparse-vmemmap-fix.patch
* memory-hotplug-implement-register_page_bootmem_info_section-of-sparse-vmemmap-fix-fix.patch
* memory-hotplug-implement-register_page_bootmem_info_section-of-sparse-vmemmap-fix-fix-fix.patch
* memory-hotplug-implement-register_page_bootmem_info_section-of-sparse-vmemmap-fix-fix-fix-fix.patch
* memory-hotplug-move-pgdat_resize_lock-into-sparse_remove_one_section.patch
* memory-hotplug-common-apis-to-support-page-tables-hot-remove.patch
* memory-hotplug-common-apis-to-support-page-tables-hot-remove-fix.patch
* memory-hotplug-common-apis-to-support-page-tables-hot-remove-fix-fix.patch
* memory-hotplug-common-apis-to-support-page-tables-hot-remove-fix-fix-fix.patch
* memory-hotplug-common-apis-to-support-page-tables-hot-remove-fix-fix-fix-fix.patch
* memory-hotplug-common-apis-to-support-page-tables-hot-remove-fix-fix-fix-fix-fix.patch
* memory-hotplug-common-apis-to-support-page-tables-hot-remove-fix-fix-fix-fix-fix-fix.patch
* memory-hotplug-common-apis-to-support-page-tables-hot-remove-fix-fix-fix-fix-fix-fix-fix.patch
* memory-hotplug-remove-page-table-of-x86_64-architecture.patch
* memory-hotplug-remove-page-table-of-x86_64-architecture-fix.patch
* memory-hotplug-remove-memmap-of-sparse-vmemmap.patch
* memory-hotplug-remove-memmap-of-sparse-vmemmap-fix.patch
* memory-hotplug-integrated-__remove_section-of-config_sparsemem_vmemmap.patch
* memory_hotplug-clear-zone-when-removing-the-memory.patch
* memory-hotplug-remove-sysfs-file-of-node.patch
* memory-hotplug-free-node_data-when-a-node-is-offlined.patch
* memory-hotplug-do-not-allocate-pdgat-if-it-was-not-freed-when-offline.patch
* memory-hotplug-do-not-allocate-pdgat-if-it-was-not-freed-when-offline-fix.patch
* memory-hotplug-do-not-allocate-pdgat-if-it-was-not-freed-when-offline-fix-fix.patch
* memory-hotplug-consider-compound-pages-when-free-memmap.patch
* mempolicy-fix-is_valid_nodemask.patch
* cpu_hotplug-clear-apicid-to-node-when-the-cpu-is-hotremoved.patch
* cpu_hotplug-clear-apicid-to-node-when-the-cpu-is-hotremoved-fix.patch
* memory-hotplug-export-the-function-try_offline_node.patch
* memory-hotplug-export-the-function-try_offline_node-fix.patch
* cpu-hotplug-memory-hotplug-try-offline-the-node-when-hotremoving-a-cpu.patch
* cpu-hotplugmemory-hotplug-clear-cpu_to_node-when-offlining-the-node.patch
* cpu-hotplugmemory-hotplug-clear-cpu_to_node-when-offlining-the-node-fix.patch
* sched-do-not-use-cpu_to_node-to-find-an-offlined-cpus-node.patch
* x86-get-pg_data_ts-memory-from-other-node.patch
* page_alloc-add-movable_memmap-kernel-parameter.patch
* page_alloc-add-movable_memmap-kernel-parameter-fix.patch
* page_alloc-add-movable_memmap-kernel-parameter-fix-fix.patch
* page_alloc-add-movable_memmap-kernel-parameter-fix-fix-checkpatch-fixes.patch
* page_alloc-add-movable_memmap-kernel-parameter-fix-fix-fix.patch
* page_alloc-add-movable_memmap-kernel-parameter-rename-movablecore_map-to-movablemem_map.patch
* page_alloc-introduce-zone_movable_limit-to-keep-movable-limit-for-nodes.patch
* page_alloc-introduce-zone_movable_limit-to-keep-movable-limit-for-nodes-fix.patch
* page_alloc-make-movablecore_map-has-higher-priority.patch
* page_alloc-bootmem-limit-with-movablecore_map.patch
* acpi-memory-hotplug-parse-srat-before-memblock-is-ready.patch
* acpi-memory-hotplug-parse-srat-before-memblock-is-ready-fix.patch
* acpi-memory-hotplug-parse-srat-before-memblock-is-ready-fix-fix.patch
* acpi-memory-hotplug-extend-movablemem_map-ranges-to-the-end-of-node.patch
* acpi-memory-hotplug-extend-movablemem_map-ranges-to-the-end-of-node-fix.patch
* acpi-memory-hotplug-support-getting-hotplug-info-from-srat.patch
* acpi-memory-hotplug-support-getting-hotplug-info-from-srat-fix.patch
* acpi-memory-hotplug-support-getting-hotplug-info-from-srat-fix-fix.patch
* acpi-memory-hotplug-support-getting-hotplug-info-from-srat-fix-fix-fix.patch
* mm-memblockc-use-config_have_memblock_node_map-to-protect-movablecore_map-in-memblock_overlaps_region.patch
* mm-use-zone-present_pages-instead-of-zone-managed_pages-where-appropriate.patch
* mm-set-zone-present_pages-to-number-of-existing-pages-in-the-zone.patch
* mm-increase-totalram_pages-when-free-pages-allocated-by-bootmem-allocator.patch
* mm-remove-migrate_isolate-check-in-hotpath.patch
* memory-failure-fix-an-error-of-mce_bad_pages-statistics.patch
* memory-failure-do-code-refactor-of-soft_offline_page.patch
* memory-failure-use-num_poisoned_pages-instead-of-mce_bad_pages.patch
* memory-failure-use-num_poisoned_pages-instead-of-mce_bad_pages-fix.patch
* mm-memory-failurec-clean-up-soft_offline_page.patch
* mm-memory-failurec-fix-wrong-num_poisoned_pages-in-handling-memory-error-on-thp.patch
* mm-memory-failurec-fix-wrong-num_poisoned_pages-in-handling-memory-error-on-thp-fix.patch
* mm-dont-wait-on-congested-zones-in-balance_pgdat.patch
* mm-teach-mm-by-current-context-info-to-not-do-i-o-during-memory-allocation.patch
* pm-runtime-introduce-pm_runtime_set_memalloc_noio.patch
* block-genhdc-apply-pm_runtime_set_memalloc_noio-on-block-devices.patch
* net-core-apply-pm_runtime_set_memalloc_noio-on-network-devices.patch
* pm-runtime-force-memory-allocation-with-no-i-o-during-runtime-pm-callbcack.patch
* usb-forbid-memory-allocation-with-i-o-during-bus-reset.patch
* mm-remove-unused-memclear_highpage_flush.patch
* mm-numa-fix-minor-typo-in-numa_next_scan.patch
* mm-numa-take-thp-into-account-when-migrating-pages-for-numa-balancing.patch
* mm-numa-handle-side-effects-in-count_vm_numa_events-for-config_numa_balancing.patch
* mm-move-page-flags-layout-to-separate-header.patch
* mm-fold-page-_last_nid-into-page-flags-where-possible.patch
* mm-numa-cleanup-flow-of-transhuge-page-migration.patch
* mm-dont-inline-page_mapping.patch
* swap-make-each-swap-partition-have-one-address_space.patch
* swap-make-each-swap-partition-have-one-address_space-fix.patch
* swap-make-each-swap-partition-have-one-address_space-fix-fix.patch
* swap-add-per-partition-lock-for-swapfile.patch
* swap-add-per-partition-lock-for-swapfile-fix-fix.patch
* swap-add-per-partition-lock-for-swapfile-fix-for-nommu.patch
* swap-add-per-partition-lock-for-swapfile-fix-fix-fix.patch
* swap-add-per-partition-lock-for-swapfile-fix-fix-fix-fix.patch
* swap-add-per-partition-lock-for-swapfile-fix-fix-fix-fix-fix.patch
* mm-rmap-rename-anon_vma_unlock-=-anon_vma_unlock_write.patch
* page-writebackc-subtract-min_free_kbytes-from-dirtyable-memory.patch
* page-writebackc-subtract-min_free_kbytes-from-dirtyable-memory-fix.patch
* page-writebackc-subtract-min_free_kbytes-from-dirtyable-memory-fix-fix.patch
* memcg-do-not-create-memsw-files-if-swap-accounting-is-disabled.patch
* memcg-clean-up-swap-accounting-initialization-code.patch
* mm-uninline-page_xchg_last_nid.patch
* mm-init-report-on-last-nid-information-stored-in-page-flags.patch
* memcg-reduce-the-size-of-struct-memcg-244-fold.patch
* memcg-reduce-the-size-of-struct-memcg-244-fold-fix.patch
* memcg-reduce-the-size-of-struct-memcg-244-fold-fix-fix.patch
* memcg-prevent-changes-to-move_charge_at_immigrate-during-task-attach.patch
* memcg-split-part-of-memcg-creation-to-css_online.patch
* memcg-fast-hierarchy-aware-child-test.patch
* memcg-fast-hierarchy-aware-child-test-fix.patch
* memcg-fast-hierarchy-aware-child-test-fix-fix.patch
* memcg-replace-cgroup_lock-with-memcg-specific-memcg_lock.patch
* memcg-replace-cgroup_lock-with-memcg-specific-memcg_lock-fix.patch
* memcg-increment-static-branch-right-after-limit-set.patch
* memcg-avoid-dangling-reference-count-in-creation-failure.patch
* mm-memmap_init_zone-performance-improvement.patch
* mm-rename-page-struct-field-helpers.patch
* mm-rename-page-struct-field-helpers-fix.patch
* ksm-allow-trees-per-numa-node.patch
* ksm-add-sysfs-abi-documentation.patch
* ksm-trivial-tidyups.patch
* ksm-trivial-tidyups-fix.patch
* ksm-reorganize-ksm_check_stable_tree.patch
* ksm-get_ksm_page-locked.patch
* ksm-remove-old-stable-nodes-more-thoroughly.patch
* ksm-make-ksm-page-migration-possible.patch
* ksm-make-merge_across_nodes-migration-safe.patch
* ksm-enable-ksm-page-migration.patch
* mm-remove-offlining-arg-to-migrate_pages.patch
* ksm-stop-hotremove-lockdep-warning.patch
* mm-shmem-use-new-radix-tree-iterator.patch
* mm-refactor-inactive_file_is_low-to-use-get_lru_size.patch
* mm-mlockc-document-scary-looking-stack-expansion-mlock-chain.patch
* mm-add-section_in_page_flags.patch
* mm-add-use-zone_end_pfn-and-zone_spans_pfn.patch
* mm-add-zone_is_empty-and-zone_is_initialized.patch
* mm-page_alloc-add-a-vm_bug-in-__free_one_page-if-the-zone-is-uninitialized.patch
* mmzone-add-pgdat_end_pfnis_empty-helpers-consolidate.patch
* mm-page_alloc-add-informative-debugging-message-in-page_outside_zone_boundaries.patch
* mm-page_alloc-add-informative-debugging-message-in-page_outside_zone_boundaries-fix.patch
* mm-add-helper-ensure_zone_is_initialized.patch
* mm-memory_hotplug-use-ensure_zone_is_initialized.patch
* mm-memory_hotplug-use-pgdat_end_pfn-instead-of-open-coding-the-same.patch
* mmu_notifier_unregister-null-pointer-deref-and-multiple-release-callouts.patch
* mm-use-numa_no_node.patch
* mm-remove-free_area_cache.patch
* include-linux-mmzoneh-cleanups.patch
* include-linux-mmzoneh-cleanups-fix.patch
* mm-use-up-free-swap-space-before-reaching-oom-kill.patch
* memcg-move-mem_cgroup_soft_limit_tree_init-to-mem_cgroup_init.patch
* memcg-move-memcg_stock-initialization-to-mem_cgroup_init.patch
* memcg-cleanup-mem_cgroup_init-comment.patch
* mm-fix-return-type-for-functions-nr_free__pages.patch
* ia64-use-%ld-to-print-pages-calculated-in-nr_free_buffer_pages.patch
* fs-bufferc-change-type-of-max_buffer_heads-to-unsigned-long.patch
* fs-nfsd-change-type-of-max_delegations-nfsd_drc_max_mem-and-nfsd_drc_mem_used.patch
* vmscan-change-type-of-vm_total_pages-to-unsigned-long.patch
* net-change-type-of-virtio_chan-p9_max_pages.patch
* memcg-stop-warning-on-memcg_propagate_kmem.patch
* hwpoison-fix-misjudgement-of-page_action-for-errors-on-mlocked-pages.patch
* hwpoison-fix-misjudgement-of-page_action-for-errors-on-mlocked-pages-fix.patch
* hwpoison-change-order-of-error_statess-elements.patch
* mm-accurately-document-nr_free__pages-functions-with-code-comments.patch
* mm-accurately-document-nr_free__pages-functions-with-code-comments-fix.patch
* mm-use-long-type-for-page-counts-in-mm_populate-and-get_user_pages.patch
* mm-accelerate-mm_populate-treatment-of-thp-pages.patch
* mm-accelerate-munlock-treatment-of-thp-pages.patch
* mm-export-mmu-notifier-invalidates.patch
* mm-fadvise-drain-all-pagevecs-if-posix_fadv_dontneed-fails-to-discard-all-pages.patch
* drop_caches-add-some-documentation-and-info-messsge.patch
* drivers-usb-gadget-amd5536udcc-avoid-calling-dma_pool_create-with-null-dev.patch
* mm-dmapoolc-fix-null-dev-in-dma_pool_create.patch
* memcg-debugging-facility-to-access-dangling-memcgs.patch
* memcg-debugging-facility-to-access-dangling-memcgs-fix.patch
* mm-add-vm-event-counters-for-balloon-pages-compaction.patch
* mm-use-vm_unmapped_area-on-frv-architecture.patch
* bdi-allow-block-devices-to-say-that-they-require-stable-page-writes.patch
* mm-only-enforce-stable-page-writes-if-the-backing-device-requires-it.patch
* 9pfs-fix-filesystem-to-wait-for-stable-page-writeback.patch
* block-optionally-snapshot-page-contents-to-provide-stable-pages-during-write.patch
* ocfs2-wait-for-page-writeback-to-provide-stable-pages.patch
* ubifs-wait-for-page-writeback-to-provide-stable-pages.patch
* mm-use-vm_unmapped_area-on-alpha-architecture.patch
* scripts-pnmtologo-fix-for-plain-pbm-checkpatch-fixes.patch
* smp-make-smp_call_function_many-use-logic-similar-to-smp_call_function_single.patch
* unhide-config_panic_on_oops.patch
* suncom-documentation-fixes.patch
* sys_prctl-arg2-is-unsigned-long-which-is-never-0.patch
* sys_prctl-coding-style-cleanup.patch
* smp-give-warning-when-calling-smp_call_function_many-single-in-serving-irq.patch
* include-linux-fsh-disable-preempt-when-acquire-i_size_seqcount-write-lock.patch
* kernel-smpc-cleanups.patch
* lib-vsprintf-add-%pa-format-specifier-for-phys_addr_t-types.patch
* printk-add-pr_devel_once-and-pr_devel_ratelimited.patch
* get_maintainerpl-find-maintainers-for-removed-files.patch
* get_maintainer-allow-keywords-to-match-filenames.patch
* maintainers-mm-add-additional-include-files-to-listing.patch
* maintainers-remove-mark-m-hoffman.patch
* maintainers-remove-mark-m-hoffman-fix.patch
* backlight-add-lms501kf03-lcd-driver.patch
* backlight-add-lms501kf03-lcd-driver-fix.patch
* backlight-add-lms501kf03-lcd-driver-fix-fix.patch
* backlight-ld9040-use-sleep-instead-of-delay.patch
* backlight-ld9040-remove-unnecessary-null-deference-check.patch
* backlight-ld9040-replace-efault-with-einval.patch
* backlight-ld9040-remove-redundant-return-variables.patch
* backlight-ld9040-reorder-inclusions-of-linux-xxxh.patch
* backlight-s6e63m0-use-lowercase-names-of-structs.patch
* backlight-s6e63m0-use-sleep-instead-of-delay.patch
* backlight-s6e63m0-remove-unnecessary-null-deference-check.patch
* backlight-s6e63m0-replace-efault-with-einval.patch
* backlight-s6e63m0-remove-redundant-variable-before_power.patch
* backlight-s6e63m0-reorder-inclusions-of-linux-xxxh.patch
* backlight-ams369fg06-use-sleep-instead-of-delay.patch
* backlight-ams369fg06-remove-unnecessary-null-deference-check.patch
* backlight-ams369fg06-replace-efault-with-einval.patch
* backlight-ams369fg06-remove-redundant-variable-before_power.patch
* backlight-ams369fg06-reorder-inclusions-of-linux-xxxh.patch
* backlight-add-new-lp8788-backlight-driver.patch
* backlight-add-new-lp8788-backlight-driver-checkpatch-fixes.patch
* backlight-l4f00242t03-use-spi_get_drvdata-and-spi_set_drvdata.patch
* backlight-ld9040-use-spi_get_drvdata-and-spi_set_drvdata.patch
* backlight-s6e63m0-use-spi_get_drvdata-and-spi_set_drvdata.patch
* backlight-ltv350qv-use-spi_get_drvdata-and-spi_set_drvdata.patch
* backlight-tdo24m-use-spi_get_drvdata-and-spi_set_drvdata.patch
* backlight-lms283gf05-use-spi_get_drvdata-and-spi_set_drvdata.patch
* backlight-ams369fg06-use-spi_get_drvdata-and-spi_set_drvdata.patch
* backlight-vgg2432a4-use-spi_get_drvdata-and-spi_set_drvdata.patch
* backlight-tosa-use-spi_get_drvdata-and-spi_set_drvdata.patch
* backlight-corgi_lcd-use-spi_get_drvdata-and-spi_set_drvdata.patch
* backlight-lms501kf03-use-spi_get_drvdata-and-spi_set_drvdata.patch
* backlight-aat2870-use-bl_get_data-instead-of-dev_get_drvdata.patch
* pwm_backlight-use-bl_get_data-instead-of-dev_get_drvdata.patch
* backlight-ams369fg06-use-bl_get_data-instead-of-dev_get_drvdata.patch
* backlight-corgi_lcd-use-bl_get_data-instead-of-dev_get_drvdata.patch
* backlight-tosa-use-bl_get_data-instead-of-dev_get_drvdata.patch
* backlight-omap1-use-bl_get_data-instead-of-dev_get_drvdata.patch
* backlight-corgi_lcd-use-lcd_get_data-instead-of-dev_get_drvdata.patch
* backlight-lm3649_backlight-remove-ret-=-eio-at-error-paths-of-probe.patch
* drivers-video-backlight-l4f00242t03c-convert-to-devm_regulator_get.patch
* drivers-video-backlight-ld9040c-use-devm_regulator_bulk_get-api.patch
* fb-backlight-add-the-himax-hx-8357b-lcd-controller.patch
* fb-backlight-add-the-himax-hx-8357b-lcd-controller-change-parameters-of-the-write-function-to-u8.patch
* fb-backlight-add-the-himax-hx-8357b-lcd-controller-fix-inverted-parameters-for-kcalloc.patch
* fb-backlight-add-the-himax-hx-8357b-lcd-controller-remove-useless-error-message.patch
* fb-backlight-add-the-himax-hx-8357b-lcd-controller-remove-trailing-period.patch
* fb-backlight-add-the-himax-hx-8357b-lcd-controller-use-static-arrays-for-lcd-configuration.patch
* drivers-video-backlight-makefile-cleanup.patch
* backlight-add-an-as3711-pmic-backlight-driver.patch
* backlight-add-an-as3711-pmic-backlight-driver-fix.patch
* backlight-88pm860x_bl-add-missing-of_node_put.patch
* backlight-s6e63m0-report-gamma_table_count-correctly.patch
* drivers-video-backlight-lm3630_blc-remove-ret-=-eio-of-lm3630_backlight_register.patch
* drivers-video-backlight-adp880_blc-fix-resume.patch
* drivers-leds-leds-ot200c-fix-error-caused-by-shifted-mask.patch
* lib-parserc-fix-up-comments-for-valid-return-values-from-match_number.patch
* decompressors-group-xz_dec_-symbols-under-an-if-xz_bcj-endif.patch
* decompressors-drop-dependency-on-config_expert.patch
* decompressors-make-the-default-xz_dec_-config-match-the-selected-architecture.patch
* lib-scatterlist-add-simple-page-iterator.patch
* lib-scatterlist-use-page-iterator-in-the-mapping-iterator.patch
* checkpatch-prefer-dev_level-to-dev_printkkern_level.patch
* checkpatch-warn-on-unnecessary-__devfoo-section-markings.patch
* checkpatch-add-joe-to-maintainers.patch
* checkpatch-dont-emit-the-camelcase-warning-for-pagefoo.patch
* checkpatch-add-check-for-kcalloc-argument-order.patch
* checkpatch-fix-usleep_range-test.patch
* epoll-support-for-disabling-items-and-a-self-test-app.patch
* epoll-support-for-disabling-items-and-a-self-test-app-fix.patch
* binfmt_elf-remove-unused-argument-in-fill_elf_header.patch
* binfmt_elfc-use-get_random_int-to-fix-entropy-depleting.patch
* nsproxy-remove-duplicate-task_cred_xxx-for-user_ns.patch
* drivers-rtc-dump-small-buffers-via-%ph.patch
* drivers-rtc-rtc-pxac-fix-alarm-not-match-issue.patch
* drivers-rtc-rtc-pxac-fix-alarm-cant-wake-up-system-issue.patch
* drivers-rtc-rtc-pxac-fix-set-time-sync-time-issue.patch
* drivers-rtc-rtc-pxac-fix-set-time-sync-time-issue-fix.patch
* rtc-ds1307-long-block-operations-bugfix.patch
* rtc-ds1307-long-block-operations-bugfix-fix.patch
* rtc-max77686-add-maxim-77686-driver.patch
* rtc-max77686-add-maxim-77686-driver-fix.patch
* rtc-max77686-add-missing-variable-initialization.patch
* rtc-max77686-add-missing-variable-initialization-fix.patch
* rtc-pcf8523-add-low-battery-voltage-support.patch
* rtc-pcf8523-add-low-battery-voltage-support-fix.patch
* drivers-rtc-use-of_match_ptr-macro.patch
* drivers-rtc-use-of_match_ptr-macro-fix.patch
* drivers-rtc-rtc-pxac-avoid-cpuid-checking.patch
* drivers-rtc-remove-unnecessary-semicolons.patch
* rtc-ds2404-use-module_platform_driver-macro.patch
* rtc-add-new-lp8788-rtc-driver.patch
* rtc-add-rtc-driver-for-tps80031-tps80032.patch
* rtc-add-rtc-driver-for-tps80031-tps80032-v2.patch
* rtc-add-rtc-driver-for-tps80031-tps80032-v2-fix.patch
* drivers-rtc-rtc-tps65910c-enable-disable-wake-in-suspend-resume.patch
* drivers-rtc-rtc-tps65910c-remove-unnecessary-irq-stat-save-and-restore.patch
* drivers-rtc-rtc-tps65910c-use-sleep_pm_ops-macro-for-initialising-suspend-resume-callbacks.patch
* drivers-rtc-rtc-tps65910c-set-irq-flag-to-irqf_early_resume-during-irq-request.patch
* rtc-add-support-for-spi-rtc-rx4581.patch
* rtc-add-support-for-spi-rtc-rx4581-checkpatch-fixes.patch
* rtc-add-support-for-spi-rtc-rx4581-fix.patch
* rtc-pl031-add-wake-up-support.patch
* arm-mvebu-add-rtc-support-for-armada-370-and-armada-xp.patch
* arm-mvebu-update-defconfig-with-marvell-rtc-support.patch
* drivers-rtc-rtc-s3cc-use-dev_dbg-instaed-of-pr_debug.patch
* rtc-max8997-add-driver-for-max8997-rtc.patch
* rtc-sa1100-move-clock-enable-disable-to-probe-remove.patch
* rtc-use-dev_warn-dev_dbg-pr_err-instead-of-printk.patch
* rtc-max77686-use-dev_info-instead-of-printk.patch
* rtc-rtc-efi-use-dev_err-dev_warn-pr_err-instead-of-printk.patch
* rtc-rtc-ds2404-use-dev_err-instead-of-printk.patch
* rtc-rtc-rs5c372-use-dev_dbg-dev_warn-instead-of-printk-pr_debug.patch
* rtc-rtc-at91rm9200-use-dev_dbg-dev_err-instead-of-printk-pr_debug.patch
* rtc-rtc-rs5c313-use-pr_err-instead-of-printk.patch
* rtc-rtc-vr41xx-use-dev_info-instead-of-printk.patch
* rtc-rtc-sun4v-use-pr_warn-instead-of-printk.patch
* rtc-rtc-pcf8583-use-dev_warn-instead-of-printk.patch
* rtc-rtc-cmos-use-dev_warn-dev_dbg-instead-of-printk-pr_debug.patch
* hfsplus-add-osx-prefix-for-handling-namespace-of-mac-os-x-extended-attributes.patch
* hfsplus-add-on-disk-layout-declarations-related-to-attributes-tree.patch
* hfsplus-add-functionality-of-manipulating-by-records-in-attributes-tree.patch
* hfsplus-rework-functionality-of-getting-setting-and-deleting-of-extended-attributes.patch
* hfsplus-add-support-of-manipulation-by-attributes-file.patch
* hfsplus-fix-issue-with-unzeroed-unused-b-tree-nodes.patch
* fat-add-extended-fileds-to-struct-fat_boot_sector.patch
* fat-mark-fs-as-dirty-on-mount-and-clean-on-umount.patch
* documentation-dma-api-howtotxt-minor-grammar-corrections.patch
* documentation-cgroups-blkio-controllertxt-fix-typo.patch
* signal-allow-to-send-any-siginfo-to-itself.patch
* signal-allow-to-send-any-siginfo-to-itself-fix.patch
* kernel-signalc-fix-suboptimal-printk-usage.patch
* coredump-remove-redundant-defines-for-dumpable-states.patch
* fs-proc-clean-up-printks.patch
* fs-proc-clean-up-printks-fix.patch
* fs-proc-clean-up-printks-fix-fix.patch
* fs-proc-vmcorec-put-if-tests-in-the-top-of-the-while-loop-to-reduce-duplication.patch
* fs-proc-vmcorec-put-if-tests-in-the-top-of-the-while-loop-to-reduce-duplication-fix.patch
* fs-proc-vmcorec-put-if-tests-in-the-top-of-the-while-loop-to-reduce-duplication-fix-fix.patch
* vfork-dont-freezer_count-for-in-kernel-users-of-clone_vfork.patch
* lockdep-check-that-no-locks-held-at-freeze-time.patch
* lockdep-check-that-no-locks-held-at-freeze-time-fix.patch
* coredump-cleanup-the-waiting-for-coredump_finish-code.patch
* coredump-use-a-freezable_schedule-for-the-coredump_finish-wait.patch
* coredump-abort-core-dump-piping-only-due-to-a-fatal-signal.patch
* seq-file-use-seek_-macros-instead-of-hardcoded-numbers.patch
* fs-seq_filec-seq_lseek-fix-switch-statement-indenting.patch
* fs-seq_filec-seq_lseek-fix-switch-statement-indenting-checkpatch-fixes.patch
* fork-unshare-remove-dead-code.patch
* fs-execc-make-bprm_mm_init-static.patch
* kexec-add-the-values-related-to-buddy-system-for-filtering-free-pages.patch
* kexec-get-rid-of-duplicate-check-for-hole_end.patch
* kexec-export-pg_hwpoison-flag-into-vmcoreinfo.patch
* block-fix-ext_devt_idr-handling.patch
* idr-fix-a-subtle-bug-in-idr_get_next.patch
* idr-make-idr_destroy-imply-idr_remove_all.patch
* atm-nicstar-dont-use-idr_remove_all.patch
* block-loop-dont-use-idr_remove_all.patch
* firewire-dont-use-idr_remove_all.patch
* drm-dont-use-idr_remove_all.patch
* dm-dont-use-idr_remove_all.patch
* remoteproc-dont-use-idr_remove_all.patch
* rpmsg-dont-use-idr_remove_all.patch
* dlm-use-idr_for_each_entry-in-recover_idr_clear-error-path.patch
* dlm-dont-use-idr_remove_all.patch
* nfs-idr_destroy-no-longer-needs-idr_remove_all.patch
* inotify-dont-use-idr_remove_all.patch
* cgroup-dont-use-idr_remove_all.patch
* nfsd-idr_destroy-no-longer-needs-idr_remove_all.patch
* idr-deprecate-idr_remove_all.patch
* idr-cosmetic-updates-to-struct-initializer-definitions.patch
* idr-relocate-idr_for_each_entry-and-reorganize-id_get_new.patch
* idr-remove-_idr_rc_to_errno-hack.patch
* idr-refactor-idr_get_new_above.patch
* idr-implement-idr_preload-and-idr_alloc.patch
* idr-implement-idr_preload-and-idr_alloc-fix.patch
* block-fix-synchronization-and-limit-check-in-blk_alloc_devt.patch
* block-convert-to-idr_alloc.patch
* block-loop-convert-to-idr_alloc.patch
* atm-nicstar-convert-to-idr_alloc.patch
* drbd-convert-to-idr_alloc.patch
* dca-convert-to-idr_alloc.patch
* dmaengine-convert-to-idr_alloc.patch
* firewire-add-minor-number-range-check-to-fw_device_init.patch
* firewire-convert-to-idr_alloc.patch
* firewire-convert-to-idr_alloc-fix.patch
* gpio-convert-to-idr_alloc.patch
* drm-convert-to-idr_alloc.patch
* drm-convert-to-idr_alloc-fix.patch
* drm-convert-to-idr_alloc-fix-fix.patch
* drm-exynos-convert-to-idr_alloc.patch
* drm-i915-convert-to-idr_alloc.patch
* drm-sis-convert-to-idr_alloc.patch
* drm-via-convert-to-idr_alloc.patch
* drm-vmwgfx-convert-to-idr_alloc.patch
* i2c-convert-to-idr_alloc.patch
* i2c-convert-to-idr_alloc-fix.patch
* i2c-convert-to-idr_alloc-fix-fix.patch
* ib-core-convert-to-idr_alloc.patch
* ib-amso1100-convert-to-idr_alloc.patch
* ib-cxgb3-convert-to-idr_alloc.patch
* ib-cxgb4-convert-to-idr_alloc.patch
* ib-ehca-convert-to-idr_alloc.patch
* ib-ipath-convert-to-idr_alloc.patch
* ib-mlx4-convert-to-idr_alloc.patch
* ib-ocrdma-convert-to-idr_alloc.patch
* ib-qib-convert-to-idr_alloc.patch
* dm-convert-to-idr_alloc.patch
* memstick-convert-to-idr_alloc.patch
* mfd-convert-to-idr_alloc.patch
* misc-c2port-convert-to-idr_alloc.patch
* misc-tifm_core-convert-to-idr_alloc.patch
* mmc-convert-to-idr_alloc.patch
* mtd-convert-to-idr_alloc.patch
* macvtap-convert-to-idr_alloc.patch
* ppp-convert-to-idr_alloc.patch
* power-convert-to-idr_alloc.patch
* pps-convert-to-idr_alloc.patch
* remoteproc-convert-to-idr_alloc.patch
* rpmsg-convert-to-idr_alloc.patch
* scsi-bfa-convert-to-idr_alloc.patch
* scsi-convert-to-idr_alloc.patch
* target-iscsi-convert-to-idr_alloc.patch
* scsi-lpfc-convert-to-idr_alloc.patch
* thermal-convert-to-idr_alloc.patch
* uio-convert-to-idr_alloc.patch
* vfio-convert-to-idr_alloc.patch
* dlm-convert-to-idr_alloc.patch
* inotify-convert-to-idr_alloc.patch
* ocfs2-convert-to-idr_alloc.patch
* ipc-convert-to-idr_alloc.patch
* ipc-convert-to-idr_alloc-fix.patch
* cgroup-convert-to-idr_alloc.patch
* events-convert-to-idr_alloc.patch
* posix-timers-convert-to-idr_alloc.patch
* net-9p-convert-to-idr_alloc.patch
* mac80211-convert-to-idr_alloc.patch
* sctp-convert-to-idr_alloc.patch
* nfs4client-convert-to-idr_alloc.patch
* idr-fix-top-layer-handling.patch
* idr-remove-max_idr_mask-and-move-left-max_idr_-into-idrc.patch
* idr-remove-length-restriction-from-idr_layer-bitmap.patch
* idr-remove-length-restriction-from-idr_layer-bitmap-checkpatch-fixes.patch
* idr-make-idr_layer-larger.patch
* idr-add-idr_layer-prefix.patch
* idr-implement-lookup-hint.patch
* ipc-semc-alternatives-to-preempt_disable.patch
* ipmi-remove-superfluous-kernel-userspace-explanation.patch
* ipmi-add-new-kernel-options-to-prevent-automatic-ipmi-init.patch
* ipmi-add-options-to-disable-openfirmware-and-pci-scanning.patch
* drivers-char-miscc-misc_register-do-not-loop-on-misc_list-unconditionally.patch
* drivers-char-miscc-misc_register-do-not-loop-on-misc_list-unconditionally-fix.patch
* block-partition-msdos-detect-aix-formatted-disks-even-without-55aa.patch
* ensure-that-the-gpt-header-is-at-least-the-size-of-the-structure.patch
* sysctl-fix-null-checking-in-bin_dn_node_address.patch
* sysctl-put-get-get_uts-into-config_proc_sysctl-code-block.patch
* nbd-support-flush-requests.patch
* nbd-fsync-and-kill-block-device-on-shutdown.patch
* nbd-show-read-only-state-in-sysfs.patch
* nbd-update-documentation-and-link-to-mailinglist.patch
* namespaces-utsname-fix-wrong-comment-about-clone_uts_ns.patch
* mtd-mtd_nandecctest-use-prandom_bytes-instead-of-get_random_bytes.patch
* mtd-mtd_oobtest-convert-to-use-prandom-library.patch
* mtd-mtd_pagetest-convert-to-use-prandom-library.patch
* mtd-mtd_speedtest-use-prandom_bytes.patch
* mtd-mtd_subpagetest-convert-to-use-prandom-library.patch
* mtd-mtd_stresstest-use-prandom_bytes.patch
* eventfd-fix-incorrect-filename-is-a-comment.patch
* dma-debug-new-interfaces-to-debug-dma-mapping-errors-fix-fix.patch
* drivers-pps-clients-pps-gpioc-use-devm_kzalloc.patch
* w1-add-support-for-ds2413-dual-channel-addressable-switch.patch
* ocfs2-fix-possible-use-after-free-with-aio.patch
* fs-direct-ioc-fix-possible-use-after-free-with-aio.patch
* mm-remove-old-aio-use_mm-comment.patch
* aio-remove-dead-code-from-aioh.patch
* gadget-remove-only-user-of-aio-retry.patch
* aio-remove-retry-based-aio.patch
* char-add-aio_readwrite-to-dev-nullzero.patch
* aio-kill-return-value-of-aio_complete.patch
* aio-kiocb_cancel.patch
* aio-kiocb_cancel-fix.patch
* aio-move-private-stuff-out-of-aioh.patch
* aio-dprintk-pr_debug.patch
* aio-do-fget-after-aio_get_req.patch
* aio-make-aio_put_req-lockless.patch
* aio-refcounting-cleanup.patch
* wait-add-wait_event_hrtimeout.patch
* wait-add-wait_event_hrtimeout-fix.patch
* aio-make-aio_read_evt-more-efficient-convert-to-hrtimers.patch
* aio-use-flush_dcache_page.patch
* aio-use-cancellation-list-lazily.patch
* aio-use-cancellation-list-lazily-fix.patch
* aio-use-cancellation-list-lazily-fix-fix.patch
* aio-change-reqs_active-to-include-unreaped-completions.patch
* aio-kill-batch-allocation.patch
* aio-kill-struct-aio_ring_info.patch
* aio-give-shared-kioctx-fields-their-own-cachelines.patch
* aio-give-shared-kioctx-fields-their-own-cachelines-fix.patch
* aio-reqs_active-reqs_available.patch
* aio-percpu-reqs_available.patch
* generic-dynamic-per-cpu-refcounting.patch
* generic-dynamic-per-cpu-refcounting-fix.patch
* generic-dynamic-per-cpu-refcounting-sparse-fixes.patch
* generic-dynamic-per-cpu-refcounting-sparse-fixes-fix.patch
* generic-dynamic-per-cpu-refcounting-doc.patch
* generic-dynamic-per-cpu-refcounting-doc-fix.patch
* aio-percpu-ioctx-refcount.patch
* aio-use-xchg-instead-of-completion_lock.patch
* aio-dont-include-aioh-in-schedh.patch
* aio-dont-include-aioh-in-schedh-fix.patch
* aio-dont-include-aioh-in-schedh-fix-fix.patch
* aio-dont-include-aioh-in-schedh-fix-3.patch
* aio-dont-include-aioh-in-schedh-fix-3-fix.patch
* aio-dont-include-aioh-in-schedh-fix-3-fix-fix.patch
* aio-kill-ki_key.patch
* aio-kill-ki_retry.patch
* aio-kill-ki_retry-fix.patch
* aio-kill-ki_retry-fix-fix.patch
* block-aio-batch-completion-for-bios-kiocbs.patch
* block-aio-batch-completion-for-bios-kiocbs-fix.patch
* block-aio-batch-completion-for-bios-kiocbs-fix-fix.patch
* block-aio-batch-completion-for-bios-kiocbs-fix-fix-fix.patch
* block-aio-batch-completion-for-bios-kiocbs-fix-fix-fix-fix.patch
* block-aio-batch-completion-for-bios-kiocbs-fix-fix-fix-fix-fix.patch
* block-aio-batch-completion-for-bios-kiocbs-fix-fix-fix-fix-fix-fix.patch
* block-aio-batch-completion-for-bios-kiocbs-fix-fix-fix-fix-fix-fix-fix.patch
* virtio-blk-convert-to-batch-completion.patch
* mtip32xx-convert-to-batch-completion.patch
* aio-fix-aio_read_events_ring-types.patch
* aio-document-clarify-aio_read_events-and-shadow_tail.patch
* aio-correct-calculation-of-available-events.patch
* aio-v2-fix-kioctx-not-being-freed-after-cancellation-at-exit-time.patch
* aio-v3-fix-kioctx-not-being-freed-after-cancellation-at-exit-time.patch
* arch-kconfig-centralise-config_arch_no_virt_to_bus.patch
* kfifo-move-kfifoc-from-kernel-to-lib.patch
* kfifo-fix-kfifo_alloc-and-kfifo_init.patch
* selftests-add-tests-for-efivarfs.patch
* selftests-add-tests-for-efivarfs-fix.patch
* selftests-add-tests-for-efivarfs-fix-fix.patch
* selftests-efivarfs-add-empty-file-creation-test.patch
* selftests-efivarfs-add-create-read-test.patch
* tools-testing-selftests-makefile-rearrange-targets.patch
* selftests-add-a-simple-doc.patch
* selftests-add-a-simple-doc-fix.patch
* kcmp-make-it-depend-on-checkpoint_restore.patch
* hlist-drop-the-node-parameter-from-iterators.patch
* hlist-drop-the-node-parameter-from-iterators-fix-fix-fix-fix.patch
* hlist-drop-the-node-parameter-from-iterators-fix-fix-fix-fix-fix.patch
* hlist-drop-the-node-parameter-from-iterators-checkpatch-fixes.patch
* hlist-drop-the-node-parameter-from-iterators-fix.patch
* hlist-drop-the-node-parameter-from-iterators-fix-fix.patch
* hlist-drop-the-node-parameter-from-iterators-fix-fix-fix.patch
* hlist-drop-the-node-parameter-from-iterators-redo-kvm.patch
* hlist-drop-the-node-parameter-from-iterators-fix-fix-fix-fix-fix-fix.patch
* hlist-drop-the-node-parameter-from-iterators-mlx4-fix.patch
  debugging-keep-track-of-page-owners.patch
  debugging-keep-track-of-page-owners-fix.patch
  debugging-keep-track-of-page-owners-fix-2.patch
  debugging-keep-track-of-page-owners-fix-2-fix.patch
  debugging-keep-track-of-page-owners-fix-2-fix-fix.patch
  debugging-keep-track-of-page-owner-now-depends-on-stacktrace_support.patch
  make-sure-nobodys-leaking-resources.patch
  journal_add_journal_head-debug.patch
  releasing-resources-with-children.patch
  make-frame_pointer-default=y.patch
  kernel-forkc-export-kernel_thread-to-modules.patch
  mutex-subsystem-synchro-test-module.patch
  slab-leaks3-default-y.patch
  put_bh-debug.patch
  add-debugging-aid-for-memory-initialisation-problems.patch
  workaround-for-a-pci-restoring-bug.patch
  single_open-seq_release-leak-diagnostics.patch
  add-a-refcount-check-in-dput.patch

^ permalink raw reply	[flat|nested] 13+ messages in thread

* since-3.8 branch opened for mm git tree (was: mmotm 2013-02-19-17-20 uploaded)
  2013-02-20  1:21 mmotm 2013-02-19-17-20 uploaded akpm
@ 2013-02-20 16:41 ` Michal Hocko
  2013-02-21  9:25 ` mmotm 2013-02-19-17-20 uploaded Stephen Boyd
  1 sibling, 0 replies; 13+ messages in thread
From: Michal Hocko @ 2013-02-20 16:41 UTC (permalink / raw)
  To: akpm; +Cc: mm-commits, linux-kernel, linux-mm, linux-fsdevel, linux-next

As this mmotm tree is based on the fresh new 3.8 I have created
since-3.8 branch for the mm git tree
(http://git.kernel.org/?p=linux/kernel/git/mhocko/mm.git;a=summary).

Same as before this branch contains all mm patches based on v3.8 tag and
it will track the next mmot[ms] trees without any rebases. since-3.7
branch is now obsolete.

As usual mmotm trees are tagged with signed tag 
(finger print BB43 1E25 7FB8 660F F2F1  D22D 48E2 09A2 B310 E347).

The current shortlog says (I have squashed all -fix patches into their
base patches):
Andrew Morton (7):
      mm/memcontrol.c: convert printk(KERN_FOO) to pr_foo()
      mm/hugetlb.c: convert to pr_foo()
      mm/page_alloc.c:__alloc_contig_migrate_range(): cleanup
      mm/page_alloc.c:__setup_per_zone_wmarks: make min_pages unsigned long
      mm/vmscan.c:__zone_reclaim(): replace max_t() with max()
      mm: compaction: make __compact_pgdat() and compact_pgdat() return void
      include/linux/mmzone.h: cleanups

Cliff Wickman (1):
      mm: export mmu notifier invalidates

Cody P Schafer (9):
      mm: add SECTION_IN_PAGE_FLAGS
      mm: add & use zone_end_pfn() and zone_spans_pfn()
      mm: add zone_is_empty() and zone_is_initialized()
      mm/page_alloc: add a VM_BUG in __free_one_page() if the zone is uninitialized.
      mmzone: add pgdat_{end_pfn,is_empty}() helpers & consolidate.
      mm/page_alloc: add informative debugging message in page_outside_zone_boundaries()
      mm: add helper ensure_zone_is_initialized()
      mm/memory_hotplug: use ensure_zone_is_initialized()
      mm/memory_hotplug: use pgdat_end_pfn() instead of open coding the same.

Dan Carpenter (1):
      compat: return -EFAULT on error in waitid()

Dave Hansen (4):
      x86, mm: Make DEBUG_VIRTUAL work earlier in boot
      x86, mm: Pagetable level size/shift/mask helpers
      x86, mm: Use new pagetable helpers in try_preserve_large_page()
      x86, mm: Create slow_virt_to_phys()

David Rientjes (1):
      mm: use NUMA_NO_NODE

Davidlohr Bueso (1):
      x86/srat: Simplify memory affinity init error handling

Glauber Costa (8):
      memcg: reduce the size of struct memcg 244-fold.
      memcg: prevent changes to move_charge_at_immigrate during task attach
      memcg: split part of memcg creation to css_online
      memcg: fast hierarchy-aware child test
      memcg: replace cgroup_lock with memcg specific memcg_lock
      memcg: increment static branch right after limit set
      memcg: avoid dangling reference count in creation failure.
      memcg: debugging facility to access dangling memcgs

Hugh Dickins (11):
      mm: numa: Cleanup flow of transhuge page migration
      ksm: trivial tidyups
      ksm: reorganize ksm_check_stable_tree
      ksm: get_ksm_page locked
      ksm: remove old stable nodes more thoroughly
      ksm: make KSM page migration possible
      ksm: make !merge_across_nodes migration safe
      ksm: enable KSM page migration
      mm: remove offlining arg to migrate_pages
      ksm: stop hotremove lockdep warning
      memcg: stop warning on memcg_propagate_kmem

Jiang Liu (3):
      mm: use zone->present_pages instead of zone->managed_pages where appropriate
      mm: set zone->present_pages to number of existing pages in the zone
      mm: increase totalram_pages when free pages allocated by bootmem allocator

Jim Somerville (1):
      inotify: remove broken mask checks causing unmount to be EINVAL

Johannes Weiner (10):
      mm: memcg: only evict file pages when we have plenty
      mm: vmscan: save work scanning (almost) empty LRU lists
      mm: vmscan: clarify how swappiness, highest priority, memcg interact
      mm: vmscan: improve comment on low-page cache handling
      mm: vmscan: clean up get_scan_count()
      mm: vmscan: compaction works against zones, not lruvecs
      mm: reduce rmap overhead for ex-KSM page copies created on swap faults
      mm: shmem: use new radix tree iterator
      mm: refactor inactive_file_is_low() to use get_lru_size()
      mm/mlock.c: document scary-looking stack expansion mlock chain

Kirill A. Shutemov (1):
      mm: remove unused memclear_highpage_flush()

Konstantin Khlebnikov (1):
      mm/rmap: rename anon_vma_unlock() => anon_vma_unlock_write()

Lai Jiangshan (1):
      mempolicy: fix is_valid_nodemask()

Lin Feng (2):
      memory-hotplug: introduce CONFIG_HAVE_BOOTMEM_INFO_NODE and revert register_page_bootmem_info_node() when platform not support
      memory-hotplug: mm/Kconfig: move auto selects from MEMORY_HOTPLUG to MEMORY_HOTREMOVE as needed

Maxim Patlasov (1):
      proc: avoid extra pde_put() in proc_fill_super()

Mel Gorman (8):
      mm: compaction: do not accidentally skip pageblocks in the migrate scanner
      mm: numa: fix minor typo in numa_next_scan
      mm: numa: take THP into account when migrating pages for NUMA balancing
      mm: numa: handle side-effects in count_vm_numa_events() for !CONFIG_NUMA_BALANCING
      mm: uninline page_xchg_last_nid()
      mm: init: report on last-nid information stored in page->flags
      mm: rename page struct field helpers
      mm/fadvise.c: drain all pagevecs if POSIX_FADV_DONTNEED fails to discard all pages

Michal Hocko (9):
      memcg,vmscan: do not break out targeted reclaim without reclaimed pages
      memory-hotplug: cleanup: removing the arch specific functions without any implementation
      x86-32, mm: Remove reference to alloc_remap()
      memcg: do not create memsw files if swap accounting is disabled
      memcg: clean up swap accounting initialization code
      memcg: move mem_cgroup_soft_limit_tree_init to mem_cgroup_init
      memcg: move memcg_stock initialization to mem_cgroup_init
      memcg: cleanup mem_cgroup_init comment
      drop_caches: add some documentation and info message

Michel Lespinasse (13):
      mm: remap_file_pages() fixes
      mm: introduce mm_populate() for populating new vmas
      mm: use mm_populate() for blocking remap_file_pages()
      mm: use mm_populate() when adjusting brk with MCL_FUTURE in effect
      mm: use mm_populate() for mremap() of VM_LOCKED vmas
      mm: remove flags argument to mmap_region
      mm: directly use __mlock_vma_pages_range() in find_extend_vma()
      mm: introduce VM_POPULATE flag to better deal with racy userspace programs
      mm: make do_mmap_pgoff return populate as a size in bytes, not as a bool
      mm: remove free_area_cache
      mm: use long type for page counts in mm_populate() and get_user_pages()
      mm: accelerate mm_populate() treatment of THP pages
      mm: accelerate munlock() treatment of THP pages

Mike Yoknis (1):
      mm: memmap_init_zone() performance improvement

Minchan Kim (3):
      mm: remove MIGRATE_ISOLATE check in hotpath
      mm: Get rid of lockdep whinge on sys_swapon
      mm: use up free swap space before reaching OOM kill

Ming Lei (6):
      mm: teach mm by current context info to not do I/O during memory allocation
      pm / runtime: introduce pm_runtime_set_memalloc_noio()
      block/genhd.c: apply pm_runtime_set_memalloc_noio on block devices
      net/core: apply pm_runtime_set_memalloc_noio on network devices
      pm / runtime: force memory allocation with no I/O during Runtime PM callbcack
      usb: forbid memory allocation with I/O during bus reset

Naoya Horiguchi (4):
      mm/memory-failure.c: clean up soft_offline_page()
      mm/memory-failure.c: fix wrong num_poisoned_pages in handling memory error on thp
      HWPOISON: fix misjudgement of page_action() for errors on mlocked pages
      HWPOISON: change order of error_states[]'s elements

Paul Szabo (1):
      page-writeback.c: subtract min_free_kbytes from dirtyable memory

Peter Zijlstra (2):
      mm: move page flags layout to separate header
      mm: Fold page->_last_nid into page->flags where possible

Petr Holasek (2):
      ksm: allow trees per NUMA node
      ksm: add sysfs ABI Documentation

Rafael Aquini (1):
      mm: add vm event counters for balloon pages compaction

Robin Holt (1):
      mmu_notifier_unregister NULL Pointer deref and multiple ->release() callouts

Sasha Levin (4):
      mm/huge_memory.c: use new hashtable implementation
      mm/ksm.c: use new hashtable implementation
      mm: fix BUG on madvise early failure
      mm: memory_hotplug: no need to check res twice in add_memory

Sha Zhengju (1):
      memcg, oom: provide more precise dump info while memcg oom happening

Shaohua Li (4):
      mm: make madvise(MADV_WILLNEED) support swap file prefetch
      mm: don't inline page_mapping()
      swap: make each swap partition have one address_space
      swap: add per-partition lock for swapfile

Srinivas Pandruvada (1):
      CMA: make putback_lru_pages() call conditional

Tang Chen (28):
      Bug fix: Hold spinlock across find|remove /sys/firmware/memmap/X operation.
      Bug fix: Fix the wrong comments of map_entries.
      Bug fix: Reuse the storage of /sys/firmware/memmap/X/ allocated by bootmem.
      Bug fix: Fix section mismatch problem of release_firmware_map_entry().
      Bug fix: Fix the doc format in drivers/firmware/memmap.c
      memory-hotplug: move pgdat_resize_lock into sparse_remove_one_section()
      Bug fix: Do not calculate direct mapping pages when freeing vmemmap pagetables.
      Bug fix: Do not free direct mapping pages twice.
      Bug fix: Do not free page split from hugepage one by one.
      Bug fix: Do not split pages when freeing pagetable pages.
      memory-hotplug: remove page table of x86_64 architecture
      memory-hotplug: remove memmap of sparse-vmemmap
      memory-hotplug: integrated __remove_section() of CONFIG_SPARSEMEM_VMEMMAP.
      memory-hotplug: remove sysfs file of node
      memory-hotplug: do not allocate pgdat if it was not freed when offline.
      sched: do not use cpu_to_node() to find an offlined cpu's node.
      page_alloc: add movable_memmap kernel parameter
      Rename movablecore_map to movablemem_map.
      page_alloc: introduce zone_movable_limit[] to keep movable limit for nodes
      Bug fix: Remove the unused sanitize_zone_movable_limit() definition.
      page_alloc: make movablemem_map have higher priority
      page_alloc: bootmem limit with movablecore_map
      acpi, memory-hotplug: parse SRAT before memblock is ready
      acpi, movablemem_map: Do not zero numa_meminfo in numa_init().
      acpi, memory-hotplug: extend movablemem_map ranges to the end of node
      acpi, memory-hotplug: support getting hotplug info from SRAT
      acpi, movablemem_map: Set numa_nodes_hotplug nodemask when using SRAT info.
      mm/memblock.c: use CONFIG_HAVE_MEMBLOCK_NODE_MAP to protect movablecore_map in memblock_overlaps_region().

Wen Congyang (10):
      memory-hotplug: try to offline the memory twice to avoid dependence
      memory-hotplug: remove redundant codes
      memory-hotplug: introduce new arch_remove_memory() for removing page table
      memory-hotplug: common APIs to support page tables hot-remove
      memory-hotplug: free node_data when a node is offlined
      memory-hotplug: consider compound pages when free memmap
      cpu_hotplug: clear apicid to node when the cpu is hotremoved
      memory-hotplug: export the function try_offline_node()
      cpu-hotplug, memory-hotplug: try offlining the node when hotremoving a cpu
      cpu-hotplug,memory-hotplug: clear cpu_to_node() when offlining the node

Xi Wang (2):
      drivers/usb/gadget/amd5536udc.c: avoid calling dma_pool_create() with NULL dev
      mm/dmapool.c: fix null dev in dma_pool_create()

Xishi Qiu (3):
      memory-failure: fix an error of mce_bad_pages statistics
      memory-failure: do code refactor of soft_offline_page()
      memory-failure: use num_poisoned_pages instead of mce_bad_pages

Yasuaki Ishimatsu (5):
      memory-hotplug: check whether all memory blocks are offlined or not when removing memory
      memory-hotplug: remove /sys/firmware/memmap/X sysfs
      memory-hotplug: implement register_page_bootmem_info_section of sparse-vmemmap
      memory_hotplug: clear zone when removing the memory
      x86: get pg_data_t's memory from other node

Yinghai Lu (1):
      x86, 64bit: Don't set max_pfn_mapped wrong value early on native path

Zhang Yanfei (7):
      mm: fix return type for functions nr_free_*_pages
      ia64: use %ld to print pages calculated in nr_free_buffer_pages
      fs/buffer.c: change type of max_buffer_heads to unsigned long
      fs/nfsd: change type of max_delegations, nfsd_drc_max_mem and nfsd_drc_mem_used
      vmscan: change type of vm_total_pages to unsigned long
      net: change type of virtio_chan->p9_max_pages
      mm: accurately document nr_free_*_pages functions with code comments

Zlatko Calusic (2):
      mm: avoid calling pgdat_balanced() needlessly
      mm: don't wait on congested zones in balance_pgdat()
-- 
Michal Hocko
SUSE Labs

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: mmotm 2013-02-19-17-20 uploaded
  2013-02-20  1:21 mmotm 2013-02-19-17-20 uploaded akpm
  2013-02-20 16:41 ` since-3.8 branch opened for mm git tree (was: mmotm 2013-02-19-17-20 uploaded) Michal Hocko
@ 2013-02-21  9:25 ` Stephen Boyd
  2013-02-21 18:18   ` Nathan Zimmer
  1 sibling, 1 reply; 13+ messages in thread
From: Stephen Boyd @ 2013-02-21  9:25 UTC (permalink / raw)
  To: akpm; +Cc: mm-commits, Linux Kernel, Nathan Zimmer

On 2/19/2013 5:21 PM, akpm@linux-foundation.org wrote:
> * timer_list-split-timer_list_show_tickdevices.patch
> * timer_list-convert-timer-list-to-be-a-proper-seq_file.patch
> * timer_list-convert-timer-list-to-be-a-proper-seq_file-fix.patch
> * timer_list-convert-timer-list-to-be-a-proper-seq_file-v2.patch
> * timer_list-convert-timer-list-to-be-a-proper-seq_file-v2-fix.patch
> * timer_list-convert-timer-list-to-be-a-proper-seq_file-fix-fix.patch

These commits seem to break the timer list on devices with maxcpus !=
nr_cpu_ids, which is possible if you specify maxcpus on the kernel
command line. I no longer see the percpu devices that I normally have
after the broadcast device.

I also notice what looks like an extra newline inserted in the output
between the percpu devices and the broadcast device, which may not be
intentional. There are also some more spelling mistakes in the comments.
Can we fold in this fix on top of the others (hopefully not white-space
damaged)?

diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
index 9904e48..e3cb935 100644
--- a/kernel/time/timer_list.c
+++ b/kernel/time/timer_list.c
@@ -244,7 +244,6 @@ static void timer_list_show_tickdevices_header(struct seq_file *m)
 #endif
 	SEQ_printf(m, "\n");
 #endif
-	SEQ_printf(m, "\n");
 }
 #endif
 
@@ -275,7 +274,7 @@ static int timer_list_show(struct seq_file *m, void *v)
 }
 
 /*
- * This itererator really needs some explnation since it is offset and has
+ * This iterator really needs some explanation since it is offset and has
  * two passes, one of which is controlled by a config option.
  * In a hotplugged system some cpus, including cpu 0, may be missing so we have
  * to use cpumask_* to iterate over the cpus.
@@ -283,7 +282,7 @@ static int timer_list_show(struct seq_file *m, void *v)
  * It returns 1 for the header position.
  * For cpu 0 it returns 2 and the final possible cpu would be nr_cpu_ids + 1.
  * On the second pass:
- * It returnes nr_cpu_ids + 1 for the second header position.
+ * It returns nr_cpu_ids + 1 for the second header position.
  * For cpu 0 it returns nr_cpu_ids + 2
  * The final possible cpu would be nr_cpu_ids + nr_cpu_ids + 2.
  */
@@ -300,8 +299,12 @@ static void *timer_list_start(struct seq_file *file, loff_t *offset)
 			n = cpumask_next(n - 1, cpu_online_mask);
 		else
 			n = cpumask_first(cpu_online_mask);
-		*offset = n + 1;
-		return (void *)(unsigned long)(n + 2);
+		if (n < nr_cpu_ids) {
+			*offset = n + 1;
+			return (void *)(unsigned long)(n + 2);
+		} else {
+			*offset = n = nr_cpu_ids + 1;
+		}
 	}
 
 #ifdef CONFIG_GENERIC_CLOCKEVENTS
@@ -314,8 +317,10 @@ static void *timer_list_start(struct seq_file *file, loff_t *offset)
 			n = cpumask_next(n - 1, cpu_online_mask);
 		else
 			n = cpumask_first(cpu_online_mask);
-		*offset = n + 2 + nr_cpu_ids;
-		return (void *)(unsigned long)(n + 3 + nr_cpu_ids);
+		if (n < nr_cpu_ids) {
+			*offset = n + 2 + nr_cpu_ids;
+			return (void *)(unsigned long)(n + 3 + nr_cpu_ids);
+		}
 	}
 #endif
 

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: mmotm 2013-02-19-17-20 uploaded
  2013-02-21  9:25 ` mmotm 2013-02-19-17-20 uploaded Stephen Boyd
@ 2013-02-21 18:18   ` Nathan Zimmer
  2013-02-21 18:27     ` Stephen Boyd
  0 siblings, 1 reply; 13+ messages in thread
From: Nathan Zimmer @ 2013-02-21 18:18 UTC (permalink / raw)
  To: Stephen Boyd; +Cc: akpm, mm-commits, Linux Kernel, Nathan Zimmer

On Thu, Feb 21, 2013 at 01:25:29AM -0800, Stephen Boyd wrote:
> On 2/19/2013 5:21 PM, akpm@linux-foundation.org wrote:
> > * timer_list-split-timer_list_show_tickdevices.patch
> > * timer_list-convert-timer-list-to-be-a-proper-seq_file.patch
> > * timer_list-convert-timer-list-to-be-a-proper-seq_file-fix.patch
> > * timer_list-convert-timer-list-to-be-a-proper-seq_file-v2.patch
> > * timer_list-convert-timer-list-to-be-a-proper-seq_file-v2-fix.patch
> > * timer_list-convert-timer-list-to-be-a-proper-seq_file-fix-fix.patch
> 
> These commits seem to break the timer list on devices with maxcpus !=
> nr_cpu_ids, which is possible if you specify maxcpus on the kernel
> command line. I no longer see the percpu devices that I normally have
> after the broadcast device.
Interesting.
However I can't seem to boot at the moment with maxcpus set to less then the actual
number of cpus so I am not having much luck investigating right now. 

> 
> I also notice what looks like an extra newline inserted in the output
> between the percpu devices and the broadcast device, which may not be
> intentional. There are also some more spelling mistakes in the comments.
> Can we fold in this fix on top of the others (hopefully not white-space
> damaged)?
> 
The extra newline was not intentional.

> diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
> index 9904e48..e3cb935 100644
> --- a/kernel/time/timer_list.c
> +++ b/kernel/time/timer_list.c
> @@ -244,7 +244,6 @@ static void timer_list_show_tickdevices_header(struct seq_file *m)
>  #endif
>  	SEQ_printf(m, "\n");
>  #endif
> -	SEQ_printf(m, "\n");
>  }
>  #endif
>  
> @@ -275,7 +274,7 @@ static int timer_list_show(struct seq_file *m, void *v)
>  }
>  
>  /*
> - * This itererator really needs some explnation since it is offset and has
> + * This iterator really needs some explanation since it is offset and has
>   * two passes, one of which is controlled by a config option.
>   * In a hotplugged system some cpus, including cpu 0, may be missing so we have
>   * to use cpumask_* to iterate over the cpus.
> @@ -283,7 +282,7 @@ static int timer_list_show(struct seq_file *m, void *v)
>   * It returns 1 for the header position.
>   * For cpu 0 it returns 2 and the final possible cpu would be nr_cpu_ids + 1.
>   * On the second pass:
> - * It returnes nr_cpu_ids + 1 for the second header position.
> + * It returns nr_cpu_ids + 1 for the second header position.
>   * For cpu 0 it returns nr_cpu_ids + 2
>   * The final possible cpu would be nr_cpu_ids + nr_cpu_ids + 2.
>   */
> @@ -300,8 +299,12 @@ static void *timer_list_start(struct seq_file *file, loff_t *offset)
>  			n = cpumask_next(n - 1, cpu_online_mask);
>  		else
>  			n = cpumask_first(cpu_online_mask);
> -		*offset = n + 1;
> -		return (void *)(unsigned long)(n + 2);
> +		if (n < nr_cpu_ids) {
> +			*offset = n + 1;
> +			return (void *)(unsigned long)(n + 2);
> +		} else {
> +			*offset = n = nr_cpu_ids + 1;
> +		}
>  	}
>  
>  #ifdef CONFIG_GENERIC_CLOCKEVENTS
> @@ -314,8 +317,10 @@ static void *timer_list_start(struct seq_file *file, loff_t *offset)
>  			n = cpumask_next(n - 1, cpu_online_mask);
>  		else
>  			n = cpumask_first(cpu_online_mask);
> -		*offset = n + 2 + nr_cpu_ids;
> -		return (void *)(unsigned long)(n + 3 + nr_cpu_ids);
> +		if (n < nr_cpu_ids) {
> +			*offset = n + 2 + nr_cpu_ids;
> +			return (void *)(unsigned long)(n + 3 + nr_cpu_ids);
> +		}
>  	}
>  #endif
>  
> 
> -- 
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> hosted by The Linux Foundation
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: mmotm 2013-02-19-17-20 uploaded
  2013-02-21 18:18   ` Nathan Zimmer
@ 2013-02-21 18:27     ` Stephen Boyd
  2013-02-21 18:35       ` Nathan Zimmer
  0 siblings, 1 reply; 13+ messages in thread
From: Stephen Boyd @ 2013-02-21 18:27 UTC (permalink / raw)
  To: Nathan Zimmer; +Cc: akpm, mm-commits, Linux Kernel

On 2/21/2013 10:18 AM, Nathan Zimmer wrote:
> On Thu, Feb 21, 2013 at 01:25:29AM -0800, Stephen Boyd wrote:
>> On 2/19/2013 5:21 PM, akpm@linux-foundation.org wrote:
>>> * timer_list-split-timer_list_show_tickdevices.patch
>>> * timer_list-convert-timer-list-to-be-a-proper-seq_file.patch
>>> * timer_list-convert-timer-list-to-be-a-proper-seq_file-fix.patch
>>> * timer_list-convert-timer-list-to-be-a-proper-seq_file-v2.patch
>>> * timer_list-convert-timer-list-to-be-a-proper-seq_file-v2-fix.patch
>>> * timer_list-convert-timer-list-to-be-a-proper-seq_file-fix-fix.patch
>> These commits seem to break the timer list on devices with maxcpus !=
>> nr_cpu_ids, which is possible if you specify maxcpus on the kernel
>> command line. I no longer see the percpu devices that I normally have
>> after the broadcast device.
> Interesting.
> However I can't seem to boot at the moment with maxcpus set to less then the actual
> number of cpus so I am not having much luck investigating right now. 

It works well on ARM processors. I believe it still works on x86 devices
as well. I suppose you can simulate it by offlining a CPU and then
reading the file.

This comment is useful around the cpumask functions.

    Returns >= nr_cpu_ids if no further cpus set.

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: mmotm 2013-02-19-17-20 uploaded
  2013-02-21 18:27     ` Stephen Boyd
@ 2013-02-21 18:35       ` Nathan Zimmer
  2013-02-21 19:31         ` Stephen Boyd
  0 siblings, 1 reply; 13+ messages in thread
From: Nathan Zimmer @ 2013-02-21 18:35 UTC (permalink / raw)
  To: Stephen Boyd; +Cc: akpm, mm-commits, Linux Kernel

On 02/21/2013 12:27 PM, Stephen Boyd wrote:
> On 2/21/2013 10:18 AM, Nathan Zimmer wrote:
>> On Thu, Feb 21, 2013 at 01:25:29AM -0800, Stephen Boyd wrote:
>>> On 2/19/2013 5:21 PM, akpm@linux-foundation.org wrote:
>>>> * timer_list-split-timer_list_show_tickdevices.patch
>>>> * timer_list-convert-timer-list-to-be-a-proper-seq_file.patch
>>>> * timer_list-convert-timer-list-to-be-a-proper-seq_file-fix.patch
>>>> * timer_list-convert-timer-list-to-be-a-proper-seq_file-v2.patch
>>>> * timer_list-convert-timer-list-to-be-a-proper-seq_file-v2-fix.patch
>>>> * timer_list-convert-timer-list-to-be-a-proper-seq_file-fix-fix.patch
>>> These commits seem to break the timer list on devices with maxcpus !=
>>> nr_cpu_ids, which is possible if you specify maxcpus on the kernel
>>> command line. I no longer see the percpu devices that I normally have
>>> after the broadcast device.
>> Interesting.
>> However I can't seem to boot at the moment with maxcpus set to less then the actual
>> number of cpus so I am not having much luck investigating right now.
> It works well on ARM processors. I believe it still works on x86 devices
> as well. I suppose you can simulate it by offlining a CPU and then
> reading the file.
Thanks I am seeing the failure now.
> This comment is useful around the cpumask functions.
>
>      Returns >= nr_cpu_ids if no further cpus set.
>
I had assumed it would be = nr_cpu_ids.
I will need to rethink the iterator.


Also I retested my other patches in the series, the ones for schedstat 
and sched_debug, and those worked fine.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: mmotm 2013-02-19-17-20 uploaded
  2013-02-21 18:35       ` Nathan Zimmer
@ 2013-02-21 19:31         ` Stephen Boyd
  2013-02-26 23:33           ` [PATCH v3 0/2] timer_list: Fix /proc/timer_list failure on 4096 cpus Nathan Zimmer
  0 siblings, 1 reply; 13+ messages in thread
From: Stephen Boyd @ 2013-02-21 19:31 UTC (permalink / raw)
  To: Nathan Zimmer; +Cc: akpm, mm-commits, Linux Kernel

On 2/21/2013 10:35 AM, Nathan Zimmer wrote:
>
>> This comment is useful around the cpumask functions.
>>
>>      Returns >= nr_cpu_ids if no further cpus set.
>>
> I had assumed it would be = nr_cpu_ids.
> I will need to rethink the iterator.

Yes it is actually equal to the nr_cpu_ids in my error case. On my
system, nr_cpu_ids = 4 and I only have one cpu online.

>
>
> Also I retested my other patches in the series, the ones for schedstat
> and sched_debug, and those worked fine.

I haven't tried those yet. I will try to take a look.

Also, can't we simplify the code by calling cpumask_next() with the
first argument being -1? No more cpu > 0 check?

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v3 0/2] timer_list: Fix /proc/timer_list failure on 4096 cpus
  2013-02-21 19:31         ` Stephen Boyd
@ 2013-02-26 23:33           ` Nathan Zimmer
  2013-02-26 23:33             ` [PATCH v3 1/2] timer_list: split timer_list_show_tickdevices() Nathan Zimmer
  2013-02-26 23:33             ` [PATCH v3 2/2] timer_list: convert timer list to be a proper seq_file Nathan Zimmer
  0 siblings, 2 replies; 13+ messages in thread
From: Nathan Zimmer @ 2013-02-26 23:33 UTC (permalink / raw)
  Cc: johnstul, tglx, sboyd, akpm, linux-kernel, Nathan Zimmer

On systems with 4096 cores attemping to read /proc/timer_list
fails because we are trying to push all the data into a single
kmalloc buffer.

A better solution is to not us the single_open mechanism but to
provide our own seq_operations and treat each cpu as an
individual record.

The output should be identical to the previous version.

v2: Added comments on the iteration and other fixups pointed to by Andrew.
v3: Corrected the case where max_cpus != nr_cpu_ids by exiting early.

Nathan Zimmer (2):
  timer_list: split timer_list_show_tickdevices()
  timer_list: convert timer list to be a proper seq_file

 kernel/time/timer_list.c | 111 +++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 92 insertions(+), 19 deletions(-)

-- 
1.8.1.2


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v3 1/2] timer_list: split timer_list_show_tickdevices()
  2013-02-26 23:33           ` [PATCH v3 0/2] timer_list: Fix /proc/timer_list failure on 4096 cpus Nathan Zimmer
@ 2013-02-26 23:33             ` Nathan Zimmer
  2013-02-27 19:37               ` Stephen Boyd
  2013-02-26 23:33             ` [PATCH v3 2/2] timer_list: convert timer list to be a proper seq_file Nathan Zimmer
  1 sibling, 1 reply; 13+ messages in thread
From: Nathan Zimmer @ 2013-02-26 23:33 UTC (permalink / raw)
  Cc: johnstul, tglx, sboyd, akpm, linux-kernel, Nathan Zimmer

Split timer_list_show_tickdevices() out the header and just pull the rest up
to timer_list_show.  Also tweak the location of the whitespace.  This is all
to prep for the fix.

Signed-off-by: Nathan Zimmer <nzimmer@sgi.com>
Reported-by: Dave Jones <davej@redhat.com>
Cc: John Stultz <johnstul@us.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Stephen Boyd <sboyd@codeaurora.org>
---
 kernel/time/timer_list.c | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
index af5a7e9..b3dc3d6 100644
--- a/kernel/time/timer_list.c
+++ b/kernel/time/timer_list.c
@@ -133,7 +133,6 @@ static void print_cpu(struct seq_file *m, int cpu, u64 now)
 	struct hrtimer_cpu_base *cpu_base = &per_cpu(hrtimer_bases, cpu);
 	int i;
 
-	SEQ_printf(m, "\n");
 	SEQ_printf(m, "cpu: %d\n", cpu);
 	for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) {
 		SEQ_printf(m, " clock %d:\n", i);
@@ -187,6 +186,7 @@ static void print_cpu(struct seq_file *m, int cpu, u64 now)
 
 #undef P
 #undef P_ns
+	SEQ_printf(m, "\n");
 }
 
 #ifdef CONFIG_GENERIC_CLOCKEVENTS
@@ -195,7 +195,6 @@ print_tickdevice(struct seq_file *m, struct tick_device *td, int cpu)
 {
 	struct clock_event_device *dev = td->evtdev;
 
-	SEQ_printf(m, "\n");
 	SEQ_printf(m, "Tick Device: mode:     %d\n", td->mode);
 	if (cpu < 0)
 		SEQ_printf(m, "Broadcast device\n");
@@ -230,12 +229,11 @@ print_tickdevice(struct seq_file *m, struct tick_device *td, int cpu)
 	print_name_offset(m, dev->event_handler);
 	SEQ_printf(m, "\n");
 	SEQ_printf(m, " retries:        %lu\n", dev->retries);
+	SEQ_printf(m, "\n");
 }
 
-static void timer_list_show_tickdevices(struct seq_file *m)
+static void timer_list_show_tickdevices_header(struct seq_file *m)
 {
-	int cpu;
-
 #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
 	print_tickdevice(m, tick_get_broadcast_device(), -1);
 	SEQ_printf(m, "tick_broadcast_mask: %08lx\n",
@@ -246,12 +244,8 @@ static void timer_list_show_tickdevices(struct seq_file *m)
 #endif
 	SEQ_printf(m, "\n");
 #endif
-	for_each_online_cpu(cpu)
-		print_tickdevice(m, tick_get_device(cpu), cpu);
 	SEQ_printf(m, "\n");
 }
-#else
-static void timer_list_show_tickdevices(struct seq_file *m) { }
 #endif
 
 static int timer_list_show(struct seq_file *m, void *v)
@@ -262,12 +256,16 @@ static int timer_list_show(struct seq_file *m, void *v)
 	SEQ_printf(m, "Timer List Version: v0.7\n");
 	SEQ_printf(m, "HRTIMER_MAX_CLOCK_BASES: %d\n", HRTIMER_MAX_CLOCK_BASES);
 	SEQ_printf(m, "now at %Ld nsecs\n", (unsigned long long)now);
+	SEQ_printf(m, "\n");
 
 	for_each_online_cpu(cpu)
 		print_cpu(m, cpu, now);
 
-	SEQ_printf(m, "\n");
-	timer_list_show_tickdevices(m);
+#ifdef CONFIG_GENERIC_CLOCKEVENTS
+	timer_list_show_tickdevices_header(m);
+	for_each_online_cpu(cpu)
+		print_tickdevice(m, tick_get_device(cpu), cpu);
+#endif
 
 	return 0;
 }
-- 
1.8.1.2


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 2/2] timer_list: convert timer list to be a proper seq_file
  2013-02-26 23:33           ` [PATCH v3 0/2] timer_list: Fix /proc/timer_list failure on 4096 cpus Nathan Zimmer
  2013-02-26 23:33             ` [PATCH v3 1/2] timer_list: split timer_list_show_tickdevices() Nathan Zimmer
@ 2013-02-26 23:33             ` Nathan Zimmer
  1 sibling, 0 replies; 13+ messages in thread
From: Nathan Zimmer @ 2013-02-26 23:33 UTC (permalink / raw)
  Cc: johnstul, tglx, sboyd, akpm, linux-kernel, Nathan Zimmer

When running with 4096 cores attemping to read /proc/timer_list will fail
with an ENOMEM condition.  On a sufficantly large systems the total amount
of data is more then 4mb, so it won't fit into a single buffer.  The
failure can also occur on smaller systems when memory fragmentation is
high as reported by Dave Jones.

Convert /proc/timer_list to a proper seq_file with its own iterator.  This
is a little more complex given that we have to make two passes with two
separate headers.

Signed-off-by: Nathan Zimmer <nzimmer@sgi.com>
Reported-by: Dave Jones <davej@redhat.com>
Cc: John Stultz <johnstul@us.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Stephen Boyd <sboyd@codeaurora.org>

v2: Added comments on the iteration and other fixups pointed to by Andrew.
v3: Corrected the case where max_cpus != nr_cpu_ids by exiting early.
---
 kernel/time/timer_list.c | 99 ++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 87 insertions(+), 12 deletions(-)

diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
index b3dc3d6..ee0bb5e 100644
--- a/kernel/time/timer_list.c
+++ b/kernel/time/timer_list.c
@@ -253,38 +253,113 @@ static int timer_list_show(struct seq_file *m, void *v)
 	u64 now = ktime_to_ns(ktime_get());
 	int cpu;
 
-	SEQ_printf(m, "Timer List Version: v0.7\n");
-	SEQ_printf(m, "HRTIMER_MAX_CLOCK_BASES: %d\n", HRTIMER_MAX_CLOCK_BASES);
-	SEQ_printf(m, "now at %Ld nsecs\n", (unsigned long long)now);
-	SEQ_printf(m, "\n");
-
-	for_each_online_cpu(cpu)
+	if (v == (void *)1) {
+		SEQ_printf(m, "Timer List Version: v0.7\n");
+		SEQ_printf(m, "HRTIMER_MAX_CLOCK_BASES: %d\n",
+			   HRTIMER_MAX_CLOCK_BASES);
+		SEQ_printf(m, "now at %Ld nsecs\n", (unsigned long long)now);
+		SEQ_printf(m, "\n");
+	} else if (v < (void *)(unsigned long)(nr_cpu_ids + 2)) {
+		cpu = (unsigned long)(v - 2);
 		print_cpu(m, cpu, now);
-
+	}
 #ifdef CONFIG_GENERIC_CLOCKEVENTS
-	timer_list_show_tickdevices_header(m);
-	for_each_online_cpu(cpu)
+	else if (v == (void *)(unsigned long)nr_cpu_ids + 2) {
+		timer_list_show_tickdevices_header(m);
+	} else {
+		cpu = (unsigned long)(v - 3 - nr_cpu_ids);
 		print_tickdevice(m, tick_get_device(cpu), cpu);
+	}
 #endif
-
 	return 0;
 }
 
+/*
+ * This itererator really needs some explanation since it is offset and has
+ * two passes, one of which is controlled by a config option.
+ * In a hotpluggable systems some cpus, including cpu 0 and the last cpu, may
+ * be missing so we have to use cpumask_* to iterate over the cpus.
+ * For the first pass:
+ * It returns 1 for the header position.
+ * For cpu 0 it returns 2 and the final possible cpu would be nr_cpu_ids + 1.
+ * On the second pass:
+ * It returnes nr_cpu_ids + 1 for the second header position.
+ * For cpu 0 it returns nr_cpu_ids + 2
+ * The final possible cpu would be nr_cpu_ids + nr_cpu_ids + 2.
+ * It is also important to remember that cpumask_next returns >= nr_cpu_ids if
+ * no further cpus set.
+ */
+static void *timer_list_start(struct seq_file *file, loff_t *offset)
+{
+	unsigned long n = *offset;
+
+	if (n == 0)
+		return (void *) 1;
+
+	if (n < nr_cpu_ids + 1) {
+		n = cpumask_next(n - 2, cpu_online_mask);
+		if (n >= nr_cpu_ids)
+			n = nr_cpu_ids;
+		*offset = n + 1;
+		return (void *)(unsigned long)(n + 2);
+	}
+
+#ifdef CONFIG_GENERIC_CLOCKEVENTS
+	if (n == nr_cpu_ids + 1)
+		return (void *)(unsigned long)(nr_cpu_ids + 2);
+
+	if (n < nr_cpu_ids * 2 + 2) {
+		n -= (nr_cpu_ids + 2);
+		n = cpumask_next(n - 1, cpu_online_mask);
+		if (n >= nr_cpu_ids)
+			return NULL;
+		*offset = n + 2 + nr_cpu_ids;
+		return (void *)(unsigned long)(n + 3 + nr_cpu_ids);
+	}
+#endif
+
+	return NULL;
+}
+
+static void *timer_list_next(struct seq_file *file, void *data, loff_t *offset)
+{
+	(*offset)++;
+	return timer_list_start(file, offset);
+}
+
+static void timer_list_stop(struct seq_file *file, void *data)
+{
+}
+
+static const struct seq_operations timer_list_sops = {
+	.start = timer_list_start,
+	.next = timer_list_next,
+	.stop = timer_list_stop,
+	.show = timer_list_show,
+};
+
 void sysrq_timer_list_show(void)
 {
 	timer_list_show(NULL, NULL);
 }
 
+static int timer_list_release(struct inode *inode, struct file *filep)
+{
+	seq_release(inode, filep);
+
+	return 0;
+}
+
 static int timer_list_open(struct inode *inode, struct file *filp)
 {
-	return single_open(filp, timer_list_show, NULL);
+	return seq_open(filp, &timer_list_sops);
 }
 
 static const struct file_operations timer_list_fops = {
 	.open		= timer_list_open,
 	.read		= seq_read,
 	.llseek		= seq_lseek,
-	.release	= single_release,
+	.release	= timer_list_release,
 };
 
 static int __init init_timer_list_procfs(void)
-- 
1.8.1.2


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v3 1/2] timer_list: split timer_list_show_tickdevices()
  2013-02-26 23:33             ` [PATCH v3 1/2] timer_list: split timer_list_show_tickdevices() Nathan Zimmer
@ 2013-02-27 19:37               ` Stephen Boyd
  2013-02-27 19:56                 ` Nathan Zimmer
  2013-02-28  1:05                 ` Nathan Zimmer
  0 siblings, 2 replies; 13+ messages in thread
From: Stephen Boyd @ 2013-02-27 19:37 UTC (permalink / raw)
  To: Nathan Zimmer; +Cc: johnstul, tglx, akpm, linux-kernel

On 02/26/13 15:33, Nathan Zimmer wrote:
> @@ -246,12 +244,8 @@ static void timer_list_show_tickdevices(struct seq_file *m)
>  #endif
>  	SEQ_printf(m, "\n");
>  #endif
> -	for_each_online_cpu(cpu)
> -		print_tickdevice(m, tick_get_device(cpu), cpu);
>  	SEQ_printf(m, "\n");
>  }

The duplicate newline is here again?

> -#else
> -static void timer_list_show_tickdevices(struct seq_file *m) { }
>  #endif
>  
>  static int timer_list_show(struct seq_file *m, void *v)
>

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation


^ permalink raw reply	[flat|nested] 13+ messages in thread

* RE: [PATCH v3 1/2] timer_list: split timer_list_show_tickdevices()
  2013-02-27 19:37               ` Stephen Boyd
@ 2013-02-27 19:56                 ` Nathan Zimmer
  2013-02-28  1:05                 ` Nathan Zimmer
  1 sibling, 0 replies; 13+ messages in thread
From: Nathan Zimmer @ 2013-02-27 19:56 UTC (permalink / raw)
  To: Stephen Boyd; +Cc: johnstul, tglx, akpm, linux-kernel

I thought I grabbed the version without it.
I'll fix it.

________________________________________
From: Stephen Boyd [sboyd@codeaurora.org]
Sent: Wednesday, February 27, 2013 1:37 PM
To: Nathan Zimmer
Cc: johnstul@us.ibm.com; tglx@linutronix.de; akpm@linux-foundation.org; linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 1/2] timer_list: split timer_list_show_tickdevices()

On 02/26/13 15:33, Nathan Zimmer wrote:
> @@ -246,12 +244,8 @@ static void timer_list_show_tickdevices(struct seq_file *m)
>  #endif
>       SEQ_printf(m, "\n");
>  #endif
> -     for_each_online_cpu(cpu)
> -             print_tickdevice(m, tick_get_device(cpu), cpu);
>       SEQ_printf(m, "\n");
>  }

The duplicate newline is here again?

> -#else
> -static void timer_list_show_tickdevices(struct seq_file *m) { }
>  #endif
>
>  static int timer_list_show(struct seq_file *m, void *v)
>

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v3 1/2] timer_list: split timer_list_show_tickdevices()
  2013-02-27 19:37               ` Stephen Boyd
  2013-02-27 19:56                 ` Nathan Zimmer
@ 2013-02-28  1:05                 ` Nathan Zimmer
  1 sibling, 0 replies; 13+ messages in thread
From: Nathan Zimmer @ 2013-02-28  1:05 UTC (permalink / raw)
  To: Stephen Boyd; +Cc: Nathan Zimmer, johnstul, tglx, akpm, linux-kernel

On Wed, Feb 27, 2013 at 11:37:26AM -0800, Stephen Boyd wrote:
> On 02/26/13 15:33, Nathan Zimmer wrote:
> > @@ -246,12 +244,8 @@ static void timer_list_show_tickdevices(struct seq_file *m)
> >  #endif
> >  	SEQ_printf(m, "\n");
> >  #endif
> > -	for_each_online_cpu(cpu)
> > -		print_tickdevice(m, tick_get_device(cpu), cpu);
> >  	SEQ_printf(m, "\n");
> >  }
> 
> The duplicate newline is here again?
> 
> > -#else
> > -static void timer_list_show_tickdevices(struct seq_file *m) { }
> >  #endif
> >  
> >  static int timer_list_show(struct seq_file *m, void *v)
> >
> 
> -- 
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> hosted by The Linux Foundation
> 


I should have gotten this out quicker but I wanted to retest.

>From 26edd3e6c66f6eb3bb927695dd50920e1661060a Mon Sep 17 00:00:00 2001
From: Nathan Zimmer <nzimmer@sgi.com>
Date: Tue, 26 Feb 2013 09:05:26 -0600
Subject: [PATCH v4 1/2] timer_list: split timer_list_show_tickdevices()

Split timer_list_show_tickdevices() out the header and just pull the rest up
to timer_list_show.  Also tweak the location of the whitespace.  This is all
to prep for the fix.

v4: correct extra whitespace

Signed-off-by: Nathan Zimmer <nzimmer@sgi.com>
Reported-by: Dave Jones <davej@redhat.com>
Cc: John Stultz <johnstul@us.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Stephen Boyd <sboyd@codeaurora.org>
---
 kernel/time/timer_list.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
index af5a7e9..380a589 100644
--- a/kernel/time/timer_list.c
+++ b/kernel/time/timer_list.c
@@ -133,7 +133,6 @@ static void print_cpu(struct seq_file *m, int cpu, u64 now)
 	struct hrtimer_cpu_base *cpu_base = &per_cpu(hrtimer_bases, cpu);
 	int i;
 
-	SEQ_printf(m, "\n");
 	SEQ_printf(m, "cpu: %d\n", cpu);
 	for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) {
 		SEQ_printf(m, " clock %d:\n", i);
@@ -187,6 +186,7 @@ static void print_cpu(struct seq_file *m, int cpu, u64 now)
 
 #undef P
 #undef P_ns
+	SEQ_printf(m, "\n");
 }
 
 #ifdef CONFIG_GENERIC_CLOCKEVENTS
@@ -195,7 +195,6 @@ print_tickdevice(struct seq_file *m, struct tick_device *td, int cpu)
 {
 	struct clock_event_device *dev = td->evtdev;
 
-	SEQ_printf(m, "\n");
 	SEQ_printf(m, "Tick Device: mode:     %d\n", td->mode);
 	if (cpu < 0)
 		SEQ_printf(m, "Broadcast device\n");
@@ -230,12 +229,11 @@ print_tickdevice(struct seq_file *m, struct tick_device *td, int cpu)
 	print_name_offset(m, dev->event_handler);
 	SEQ_printf(m, "\n");
 	SEQ_printf(m, " retries:        %lu\n", dev->retries);
+	SEQ_printf(m, "\n");
 }
 
-static void timer_list_show_tickdevices(struct seq_file *m)
+static void timer_list_show_tickdevices_header(struct seq_file *m)
 {
-	int cpu;
-
 #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
 	print_tickdevice(m, tick_get_broadcast_device(), -1);
 	SEQ_printf(m, "tick_broadcast_mask: %08lx\n",
@@ -246,12 +244,7 @@ static void timer_list_show_tickdevices(struct seq_file *m)
 #endif
 	SEQ_printf(m, "\n");
 #endif
-	for_each_online_cpu(cpu)
-		print_tickdevice(m, tick_get_device(cpu), cpu);
-	SEQ_printf(m, "\n");
 }
-#else
-static void timer_list_show_tickdevices(struct seq_file *m) { }
 #endif
 
 static int timer_list_show(struct seq_file *m, void *v)
@@ -262,12 +255,16 @@ static int timer_list_show(struct seq_file *m, void *v)
 	SEQ_printf(m, "Timer List Version: v0.7\n");
 	SEQ_printf(m, "HRTIMER_MAX_CLOCK_BASES: %d\n", HRTIMER_MAX_CLOCK_BASES);
 	SEQ_printf(m, "now at %Ld nsecs\n", (unsigned long long)now);
+	SEQ_printf(m, "\n");
 
 	for_each_online_cpu(cpu)
 		print_cpu(m, cpu, now);
 
-	SEQ_printf(m, "\n");
-	timer_list_show_tickdevices(m);
+#ifdef CONFIG_GENERIC_CLOCKEVENTS
+	timer_list_show_tickdevices_header(m);
+	for_each_online_cpu(cpu)
+		print_tickdevice(m, tick_get_device(cpu), cpu);
+#endif
 
 	return 0;
 }
-- 
1.8.1.2


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2013-02-28  1:05 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-20  1:21 mmotm 2013-02-19-17-20 uploaded akpm
2013-02-20 16:41 ` since-3.8 branch opened for mm git tree (was: mmotm 2013-02-19-17-20 uploaded) Michal Hocko
2013-02-21  9:25 ` mmotm 2013-02-19-17-20 uploaded Stephen Boyd
2013-02-21 18:18   ` Nathan Zimmer
2013-02-21 18:27     ` Stephen Boyd
2013-02-21 18:35       ` Nathan Zimmer
2013-02-21 19:31         ` Stephen Boyd
2013-02-26 23:33           ` [PATCH v3 0/2] timer_list: Fix /proc/timer_list failure on 4096 cpus Nathan Zimmer
2013-02-26 23:33             ` [PATCH v3 1/2] timer_list: split timer_list_show_tickdevices() Nathan Zimmer
2013-02-27 19:37               ` Stephen Boyd
2013-02-27 19:56                 ` Nathan Zimmer
2013-02-28  1:05                 ` Nathan Zimmer
2013-02-26 23:33             ` [PATCH v3 2/2] timer_list: convert timer list to be a proper seq_file Nathan Zimmer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).