mt76: mt7921: do not schedule hw reset if the device is not running
Do not schedule hw full reset if the device is not fully initialized
(e.g if the channel has not been configured yet). This patch fixes
the kernel crash reported below
[ 44.440266] mt7921e 0000:01:00.0: chip reset failed
[ 44.527575] Unable to handle kernel paging request at virtual address
ffffffc02f3e0000
[ 44.535771] Mem abort info:
[ 44.538646] ESR = 0x96000006
[ 44.541792] EC = 0x25: DABT (current EL), IL = 32 bits
[ 44.547268] SET = 0, FnV = 0
[ 44.550413] EA = 0, S1PTW = 0
[ 44.553648] Data abort info:
[ 44.556613] ISV = 0, ISS = 0x00000006
[ 44.560563] CM = 0, WnR = 0
[ 44.563619] swapper pgtable: 4k pages, 39-bit VAs, pgdp=
0000000000955000
[ 44.570530] [
ffffffc02f3e0000] pgd=
100000003ffff003, p4d=
100000003ffff003, pud=
100000003ffff003, pmd=
0000000000000000
[ 44.581489] Internal error: Oops:
96000006 [#1] SMP
[ 44.606406] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W 5.13.0-rc1-espressobin-12875-g6dc7f82ebc26 #33
[ 44.617264] Hardware name: Globalscale Marvell ESPRESSOBin Board (DT)
[ 44.623905] pstate:
600000c5 (nZCv daIF -PAN -UAO -TCO BTYPE=--)
[ 44.630100] pc : __queue_work+0x1f0/0x500
[ 44.634249] lr : __queue_work+0x1e8/0x500
[ 44.638384] sp :
ffffffc010003d70
[ 44.641798] x29:
ffffffc010003d70 x28:
0000000000000000 x27:
ffffff8003989200
[ 44.649166] x26:
ffffffc010c08510 x25:
0000000000000002 x24:
ffffffc010ad90b0
[ 44.656533] x23:
ffffffc010c08508 x22:
0000000000000012 x21:
0000000000000000
[ 44.663899] x20:
ffffff8006385238 x19:
ffffffc02f3e0000 x18:
00000000000003c9
[ 44.671266] x17:
0000000000000000 x16:
0000000000000000 x15:
000009b1a8a3bf90
[ 44.678632] x14:
0098968000000000 x13:
0000000000000000 x12:
0000000000000325
[ 44.685998] x11:
ffffff803fda1928 x10:
0000000000000001 x9 :
ffffffc010003e98
[ 44.693365] x8 :
0000000000000032 x7 :
fff8000000000000 x6 :
0000000000000035
[ 44.700732] x5 :
0000000000000000 x4 :
0000000000000000 x3 :
ffffffc010adf700
[ 44.708098] x2 :
ffffff8006385238 x1 :
000000007fffffff x0 :
0000000000000000
[ 44.715465] Call trace:
[ 44.717982] __queue_work+0x1f0/0x500
[ 44.721760] delayed_work_timer_fn+0x18/0x20
[ 44.726167] call_timer_fn+0x2c/0x178
[ 44.729947] run_timer_softirq+0x488/0x5c8
[ 44.734172] _stext+0x11c/0x378
[ 44.737411] irq_exit+0x100/0x108
[ 44.740830] __handle_domain_irq+0x60/0xb0
[ 44.745059] gic_handle_irq+0x70/0x2b4
[ 44.748929] el1_irq+0xb8/0x13c
[ 44.752167] arch_cpu_idle+0x14/0x30
[ 44.755858] default_idle_call+0x38/0x168
[ 44.759994] do_idle+0x1fc/0x210
[ 44.763325] cpu_startup_entry+0x20/0x58
[ 44.767372] rest_init+0xb8/0xc8
[ 44.770703] arch_call_rest_init+0xc/0x14
[ 44.774841] start_kernel+0x408/0x424
[ 44.778623] Code:
aa1403e0 97fff54f aa0003f5 b5fff500 (
f9400275)
[ 44.784907] ---[ end trace
be73c3142d8c36a9 ]---
[ 44.789668] Kernel panic - not syncing: Oops: Fatal exception in interrupt
Fixes:
0c1ce9884607 ("mt76: mt7921: add wifi reset support")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>