On 21.12.10 18:44:44, [email protected] wrote:
> 
> The patch titled
>      arch/x86/oprofile/op_model_amd.c: perform initialisation on a single CPU
> has been added to the -mm tree.  Its filename is
>      
> arch-x86-oprofile-op_model_amdc-perform-initialisation-on-a-single-cpu.patch
> 
> Before you just go and hit "reply", please:
>    a) Consider who else should be cc'ed
>    b) Prefer to cc a suitable mailing list as well
>    c) Ideally: find the original patch on the mailing list and do a
>       reply-to-all to that, adding suitable additional cc's
> 
> *** Remember to use Documentation/SubmitChecklist when testing your code ***
> 
> See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find
> out what to do about this
> 
> The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/
> 
> ------------------------------------------------------
> Subject: arch/x86/oprofile/op_model_amd.c: perform initialisation on a single 
> CPU
> From: Andrew Morton <[email protected]>
> 
> [    7.034377] BUG: using smp_processor_id() in preemptible [00000000] code:
> modprobe/483
> [    7.034385] caller is setup_APIC_eilvt+0x155/0x180
> [    7.034389] Pid: 483, comm: modprobe Not tainted 2.6.37-rc1-20101110+ #1
> [    7.034392] Call Trace:
> [    7.034400]  [<ffffffff812a2b72>] debug_smp_processor_id+0xd2/0xf0
> [    7.034404]  [<ffffffff8101e985>] setup_APIC_eilvt+0x155/0x180
> [    7.034413]  [<ffffffffa002e168>] op_amd_init+0x88/0x2b0 [oprofile]
> [    7.034420]  [<ffffffffa0043000>] ? oprofile_init+0x0/0x42 [oprofile]
> [    7.034425]  [<ffffffffa0043315>] op_nmi_init+0x249/0x2af [oprofile]
> [    7.034431]  [<ffffffffa00430b4>] oprofile_arch_init+0x11/0x29 [oprofile]
> [    7.034437]  [<ffffffffa0043010>] oprofile_init+0x10/0x42 [oprofile]
> [    7.034441]  [<ffffffff810001e3>] do_one_initcall+0x43/0x170
> [    7.034445]  [<ffffffff8108a52a>] sys_init_module+0xba/0x200
> [    7.034449]  [<ffffffff8100285b>] system_call_fastpath+0x16/0x1b
> 
> Not sure if it fixes a real bug - presumably not, if all CPUs are the same.

The IBS init code checks some MSR and APIC register settings which
should be the same on all CPUs. However, smp_processor_id() is used
for diagnostics reasons to report the cpu number in case of errors.
It is better to disable preemption here to avoid switching between
cpus while running we init code, though it should be save anyway.

The code that enables and sets up IBS on each cpu uses hotplug
notifiers and on_each_cpu() protected with get_/put_online_cpus()
which should be ok.

> 
> Addresses https://bugzilla.kernel.org/show_bug.cgi?id=22812
> 
> Reported-by: <[email protected]>
> Cc: "Rafael J. Wysocki" <[email protected]>
> Cc: Dan Carpenter <[email protected]>
> Cc: Robert Richter <[email protected]>
> Cc: Ingo Molnar <[email protected]>
> Cc: <[email protected]>               [2.6.37.x]
> Signed-off-by: Andrew Morton <[email protected]>
> ---
> 
>  arch/x86/oprofile/op_model_amd.c |    6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff -puN 
> arch/x86/oprofile/op_model_amd.c~arch-x86-oprofile-op_model_amdc-perform-initialisation-on-a-single-cpu
>  arch/x86/oprofile/op_model_amd.c
> --- 
> a/arch/x86/oprofile/op_model_amd.c~arch-x86-oprofile-op_model_amdc-perform-initialisation-on-a-single-cpu
> +++ a/arch/x86/oprofile/op_model_amd.c
> @@ -710,7 +710,13 @@ struct op_x86_model_spec op_amd_spec;
>  
>  static int op_amd_init(struct oprofile_operations *ops)
>  {
> +     /*
> +      * init_ibs() preforms implictly cpu-local operations, so pin this
> +      * thread to its current CPU
> +      */
> +     preempt_diable();

Here is a typo: preempt_disable()

Ingo, we should apply this patch to tip/perf/urgent for .37 then.

Andrew, thanks for looking at this.

-Robert

>       init_ibs();
> +     preempt_enable();
>       create_arch_files = ops->create_files;
>       ops->create_files = setup_ibs_files;
>  
> _
> 
> Patches currently in -mm which might be from [email protected] are
> 
> linux-next.patch
> linux-next-git-rejects.patch
> next-remove-localversion.patch
> i-need-old-gcc.patch
> arch-alpha-kernel-systblss-remove-debug-check.patch
> mm-vmap-area-cache.patch
> arch-x86-oprofile-op_model_amdc-perform-initialisation-on-a-single-cpu.patch
> drivers-gpu-drm-radeon-atomc-fix-warning.patch
> leds-route-kbd-leds-through-the-generic-leds-layer.patch
> atmel_serial-fix-rts-high-after-initialization-in-rs485-mode-fix.patch
> drivers-message-fusion-mptsasc-fix-warning.patch
> mm.patch
> mm-vmstat-use-a-single-setter-function-and-callback-for-adjusting-percpu-thresholds-fix.patch
> writeback-check-skipped-pages-on-wb_sync_all-update-fix.patch
> writeback-make-nr_to_write-a-per-file-limit-fix.patch
> sync_inode_metadata-fix-comment.patch
> fs-mpagec-consolidate-code-checkpatch-fixes.patch
> mm-vmscan-reclaim-order-0-and-use-compaction-instead-of-lumpy-reclaim-fix.patch
> mm-migration-allow-migration-to-operate-asynchronously-and-avoid-synchronous-compaction-in-the-faster-path-fix.patch
> mm-deactivate-invalidated-pages-fix.patch
> mlock-only-hold-mmap_sem-in-shared-mode-when-faulting-in-pages-fix.patch
> mlock-do-not-hold-mmap_sem-for-extended-periods-of-time-fix.patch
> mlock-do-not-hold-mmap_sem-for-extended-periods-of-time-fix2.patch
> thp-pte-alloc-trans-splitting-fix-checkpatch-fixes.patch
> mm-migration-use-rcu_dereference_protected-when-dereferencing-the-radix-tree-slot-during-file-page-migration-fix.patch
> mm-hugetlbc-fix-error-path-memory-leak-in-nr_hugepages_store_common-fix.patch
> frv-duplicate-output_buffer-of-e03-checkpatch-fixes.patch
> hpet-factor-timer-allocate-from-open.patch
> include-linux-kernelh-abs-fix-handling-of-32-bit-unsigneds-on-64-bit.patch
> include-linux-kernelh-abs-fix-handling-of-32-bit-unsigneds-on-64-bit-fix.patch
> include-linux-unaligned-packed_structh-use-__packed.patch
> kptr_restrict-for-hiding-kernel-pointers-from-unprivileged-users-fix.patch
> fs-select-fix-information-leak-to-userspace-fix.patch
> drivers-telephony-ixjc-fix-warning.patch
> memcg-document-cgroup-dirty-memory-interfaces-fix.patch
> fs-proc-basec-kernel-latencytopc-convert-sprintf_symbol-to-%ps-checkpatch-fixes.patch
> exec_domain-establish-a-linux32-domain-on-config_compat-systems.patch
> sysctl-remove-obsolete-comments-fix.patch
> user_ns-improve-the-user_ns-on-the-slab-packaging-fix.patch
> journal_add_journal_head-debug.patch
> slab-leaks3-default-y.patch
> put_bh-debug.patch
> memblock-add-input-size-checking-to-memblock_find_region.patch
> memblock-add-input-size-checking-to-memblock_find_region-fix.patch
> 
> 

-- 
Advanced Micro Devices, Inc.
Operating System Research Center

_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable

Reply via email to