• Greg Edwards's avatar
    mpt3sas: Fix resume on WarpDrive flash cards · 7386f927
    Greg Edwards authored
    commit ce7c6c9e upstream.
    
    mpt3sas crashes on resume after suspend with WarpDrive flash cards.  The
    reply_post_host_index array is not set back up after the resume, and we
    deference a stale pointer in _base_interrupt().
    
    [   47.309711] BUG: unable to handle kernel paging request at ffffc90001f8006c
    [   47.318289] IP: [<ffffffffc00863ef>] _base_interrupt+0x49f/0xa30 [mpt3sas]
    [   47.326749] PGD 41ccaa067 PUD 41ccab067 PMD 3466c067 PTE 0
    [   47.333848] Oops: 0002 [#1] SMP
    ...
    [   47.452708] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.7.0 #6
    [   47.460506] Hardware name: Dell Inc. OptiPlex 990/06D7TR, BIOS A18 09/24/2013
    [   47.469629] task: ffffffff81c0d500 ti: ffffffff81c00000 task.ti: ffffffff81c00000
    [   47.479112] RIP: 0010:[<ffffffffc00863ef>]  [<ffffffffc00863ef>] _base_interrupt+0x49f/0xa30 [mpt3sas]
    [   47.490466] RSP: 0018:ffff88041d203e30  EFLAGS: 00010002
    [   47.497801] RAX: 0000000000000001 RBX: ffff880033f4c000 RCX: 0000000000000001
    [   47.506973] RDX: ffffc90001f8006c RSI: 0000000000000082 RDI: 0000000000000082
    [   47.516141] RBP: ffff88041d203eb0 R08: ffff8804118e2820 R09: 0000000000000001
    [   47.525300] R10: 0000000000000001 R11: 00000000100c0000 R12: 0000000000000000
    [   47.534457] R13: ffff880412c487e0 R14: ffff88041a8987d8 R15: 0000000000000001
    [   47.543632] FS:  0000000000000000(0000) GS:ffff88041d200000(0000) knlGS:0000000000000000
    [   47.553796] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   47.561632] CR2: ffffc90001f8006c CR3: 0000000001c06000 CR4: 00000000000406f0
    [   47.570883] Stack:
    [   47.575015]  000000001d211228 ffff88041d2100c0 ffff8800c47d8130 0000000000000100
    [   47.584625]  ffff8804100c0000 100c000000000000 ffff88041a8992a0 ffff88041a8987f8
    [   47.594230]  ffff88041d203e00 ffffffff81111e55 000000000000038c ffff880414ad4280
    [   47.603862] Call Trace:
    [   47.608474]  <IRQ>
    [   47.610413]  [<ffffffff81111e55>] ? call_timer_fn+0x35/0x120
    [   47.620539]  [<ffffffff81100a1f>] handle_irq_event_percpu+0x7f/0x1c0
    [   47.629061]  [<ffffffff81100b8c>] handle_irq_event+0x2c/0x50
    [   47.636859]  [<ffffffff81103fff>] handle_edge_irq+0x6f/0x130
    [   47.644654]  [<ffffffff8102fbf3>] handle_irq+0x73/0x120
    [   47.652011]  [<ffffffff810c6ada>] ? atomic_notifier_call_chain+0x1a/0x20
    [   47.660854]  [<ffffffff817e374b>] do_IRQ+0x4b/0xd0
    [   47.667777]  [<ffffffff817e160c>] common_interrupt+0x8c/0x8c
    [   47.675635]  <EOI>
    
    Move the reply_post_host_index array setup into
    mpt3sas_base_map_resources(), which is also in the resume path.
    Signed-off-by: default avatarGreg Edwards <gedwards@fireweed.org>
    Acked-by: default avatarChaitra P B <chaitra.basappa@broadcom.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    7386f927
mpt3sas_base.c 158 KB