1. 15 Jun, 2012 2 commits
  2. 14 Jun, 2012 32 commits
  3. 13 Jun, 2012 6 commits
    • Anton Vorontsov's avatar
      pstore/platform: Disable automatic updates by default · 521f7288
      Anton Vorontsov authored
      Having automatic updates seems pointless for production system, and
      even dangerous and thus counter-productive:
      
      1. If we can mount pstore, or read files, we can as well read
         /proc/kmsg. So, there's little point in duplicating the
         functionality and present the same information but via another
         userland ABI;
      
      2. Expecting the kernel to behave sanely after oops/panic is naive.
         It might work, but you'd rather not try it. Screwed up kernel
         can do rather bad things, like recursive faults[1]; and pstore
         rather provoking bad things to happen. It uses:
      
         1. Timers (assumes sane interrupts state);
         2. Workqueues and mutexes (assumes scheduler in a sane state);
         3. kzalloc (a working slab allocator);
      
         That's too much for a dead kernel, so the debugging facility
         itself might just make debugging harder, which is not what
         we want.
      
      Maybe for non-oops message types it would make sense to re-enable
      automatic updates, but so far I don't see any use case for this.
      Even for tracing, it has its own run-time/normal ABI, so we're
      only interested in pstore upon next boot, to retrieve what has
      gone wrong with HW or SW.
      
      So, let's disable the updates by default.
      
      [1]
      BUG: unable to handle kernel paging request at fffffffffffffff8
      IP: [<ffffffff8104801b>] kthread_data+0xb/0x20
      [...]
      Process kworker/0:1 (pid: 14, threadinfo ffff8800072c0000, task ffff88000725b100)
      [...
      Call Trace:
       [<ffffffff81043710>] wq_worker_sleeping+0x10/0xa0
       [<ffffffff813687a8>] __schedule+0x568/0x7d0
       [<ffffffff8106c24d>] ? trace_hardirqs_on+0xd/0x10
       [<ffffffff81087e22>] ? call_rcu_sched+0x12/0x20
       [<ffffffff8102b596>] ? release_task+0x156/0x2d0
       [<ffffffff8102b45e>] ? release_task+0x1e/0x2d0
       [<ffffffff8106c24d>] ? trace_hardirqs_on+0xd/0x10
       [<ffffffff81368ac4>] schedule+0x24/0x70
       [<ffffffff8102cba8>] do_exit+0x1f8/0x370
       [<ffffffff810051e7>] oops_end+0x77/0xb0
       [<ffffffff8135c301>] no_context+0x1a6/0x1b5
       [<ffffffff8135c4de>] __bad_area_nosemaphore+0x1ce/0x1ed
       [<ffffffff81053156>] ? ttwu_queue+0xc6/0xe0
       [<ffffffff8135c50b>] bad_area_nosemaphore+0xe/0x10
       [<ffffffff8101fa47>] do_page_fault+0x2c7/0x450
       [<ffffffff8106e34b>] ? __lock_release+0x6b/0xe0
       [<ffffffff8106bf21>] ? mark_held_locks+0x61/0x140
       [<ffffffff810502fe>] ? __wake_up+0x4e/0x70
       [<ffffffff81185f7d>] ? trace_hardirqs_off_thunk+0x3a/0x3c
       [<ffffffff81158970>] ? pstore_register+0x120/0x120
       [<ffffffff8136a37f>] page_fault+0x1f/0x30
       [<ffffffff81158970>] ? pstore_register+0x120/0x120
       [<ffffffff81185ab8>] ? memcpy+0x68/0x110
       [<ffffffff8115875a>] ? pstore_get_records+0x3a/0x130
       [<ffffffff811590f4>] ? persistent_ram_copy_old+0x64/0x90
       [<ffffffff81158bf4>] ramoops_pstore_read+0x84/0x130
       [<ffffffff81158799>] pstore_get_records+0x79/0x130
       [<ffffffff81042536>] ? process_one_work+0x116/0x450
       [<ffffffff81158970>] ? pstore_register+0x120/0x120
       [<ffffffff8115897e>] pstore_dowork+0xe/0x10
       [<ffffffff81042594>] process_one_work+0x174/0x450
       [<ffffffff81042536>] ? process_one_work+0x116/0x450
       [<ffffffff81042e13>] worker_thread+0x123/0x2d0
       [<ffffffff81042cf0>] ? manage_workers.isra.28+0x120/0x120
       [<ffffffff81047d8e>] kthread+0x8e/0xa0
       [<ffffffff8136ba74>] kernel_thread_helper+0x4/0x10
       [<ffffffff8136a199>] ? retint_restore_args+0xe/0xe
       [<ffffffff81047d00>] ? __init_kthread_worker+0x70/0x70
       [<ffffffff8136ba70>] ? gs_change+0xb/0xb
      Code: be e2 00 00 00 48 c7 c7 d1 2a 4e 81 e8 bf fb fd ff 48 8b 5d f0 4c 8b 65 f8 c9 c3 0f 1f 44 00 00 48 8b 87 08 02 00 00 55 48 89 e5 <48> 8b 40 f8 5d c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00
      RIP  [<ffffffff8104801b>] kthread_data+0xb/0x20
       RSP <ffff8800072c1888>
      CR2: fffffffffffffff8
      ---[ end trace 996a332dc399111d ]---
      Fixing recursive fault but reboot is needed!
      Signed-off-by: default avatarAnton Vorontsov <anton.vorontsov@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      521f7288
    • Anton Vorontsov's avatar
      pstore/platform: Make automatic updates interval configurable · a3f5f075
      Anton Vorontsov authored
      There is no behavioural change, the default value is still 60 seconds.
      Signed-off-by: default avatarAnton Vorontsov <anton.vorontsov@linaro.org>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a3f5f075
    • Anton Vorontsov's avatar
      pstore/ram_core: Remove now unused code · b8587daa
      Anton Vorontsov authored
      The code tried to maintain the global list of persistent ram zones,
      which isn't a great idea overall, plus since Android's ram_console
      is no longer there, we can remove some unused functions.
      Signed-off-by: default avatarAnton Vorontsov <anton.vorontsov@linaro.org>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Acked-by: default avatarColin Cross <ccross@android.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b8587daa
    • Anton Vorontsov's avatar
    • Anton Vorontsov's avatar
      pstore/ram_core: Silence some printks · 602b5be4
      Anton Vorontsov authored
      Since we use multiple regions, the messages are somewhat annoying.
      We do print total mapped memory already, so no need to print the
      information for each region in the library routines.
      Signed-off-by: default avatarAnton Vorontsov <anton.vorontsov@linaro.org>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Acked-by: default avatarColin Cross <ccross@android.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      602b5be4
    • Anton Vorontsov's avatar
      pstore/ram: Add console messages handling · b5d38e9b
      Anton Vorontsov authored
      The console log size is configurable via ramoops.console_size
      module option, and the log itself is available via
      <pstore-mount>/console-ramoops file.
      Signed-off-by: default avatarAnton Vorontsov <anton.vorontsov@linaro.org>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b5d38e9b