# git rev-parse -q --verify 35f7eea41dba2cdfb11be7a37eb21cf010fd3220^{commit} 35f7eea41dba2cdfb11be7a37eb21cf010fd3220 already have revision, skipping fetch # git checkout -q -f -B kisskb 35f7eea41dba2cdfb11be7a37eb21cf010fd3220 # git clean -qxdf # < git log -1 # commit 35f7eea41dba2cdfb11be7a37eb21cf010fd3220 # Author: Michael Ellerman # Date: Fri Aug 23 22:29:01 2019 +1000 # # powerpc/64: Fix stacktrace on BE when function_graph is enabled # # Currently if we oops or warn while function_graph is active the stack # trace looks like: # .trace_graph_return+0xac/0x100 # .ftrace_return_to_handler+0x98/0x140 # .return_to_handler+0x20/0x40 # .return_to_handler+0x0/0x40 # .return_to_handler+0x0/0x40 # .return_to_handler+0x0/0x40 # .return_to_handler+0x0/0x40 # .return_to_handler+0x0/0x40 # .return_to_handler+0x0/0x40 # .cpu_startup_entry+0x34/0x40 # .start_secondary+0x680/0x6f0 # start_secondary_prolog+0x10/0x14 # # Notice the multiple entries that just show .return_to_handler. # # There is logic in show_stack() to detect this case and print the # traced function, but we inadvertently broke it in commit # 7d56c65a6ff9 ("powerpc/ftrace: Remove mod_return_to_handler") (2014), # because that commit accidentally removed the dereference of rth which # gets the text address from the function descriptor. Hence this is only # broken on big endian (or technically ELFv1). # # Fix it by using the proper accessor, which is ppc_function_entry(). # Result is we get a stack trace such as: # # .trace_graph_return+0x134/0x160 # .ftrace_return_to_handler+0x94/0x140 # .return_to_handler+0x20/0x40 # .return_to_handler+0x0/0x40 (.shared_cede_loop+0x48/0x130) # .return_to_handler+0x0/0x40 (.cpuidle_enter_state+0xa0/0x690) # .return_to_handler+0x0/0x40 (.cpuidle_enter+0x44/0x70) # .return_to_handler+0x0/0x40 (.call_cpuidle+0x68/0xc0) # .return_to_handler+0x0/0x40 (.do_idle+0x37c/0x400) # .return_to_handler+0x0/0x40 (.cpu_startup_entry+0x30/0x50) # .rest_init+0x224/0x348 # # Fixes: 7d56c65a6ff9 ("powerpc/ftrace: Remove mod_return_to_handler") # Signed-off-by: Michael Ellerman # Reviewed-by: Naveen N. Rao # Signed-off-by: Michael Ellerman # Link: https://lore.kernel.org/r/20190823122901.32667-1-mpe@ellerman.id.au # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux-ld --version # < git log --format=%s --max-count=1 35f7eea41dba2cdfb11be7a37eb21cf010fd3220 # < make -s -j 48 ARCH=parisc O=/kisskb/build/powerpc-next_parisc-defconfig_parisc CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux- defconfig # make -s -j 48 ARCH=parisc O=/kisskb/build/powerpc-next_parisc-defconfig_parisc CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux- /kisskb/src/arch/parisc/math-emu/fpudispatch.c: In function 'decode_0c': /kisskb/src/arch/parisc/math-emu/fpudispatch.c:312:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+2] = fpregs[r1+2]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:313:9: note: here case 1: /* double */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:314:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+1] = fpregs[r1+1]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:315:9: note: here case 0: /* single */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:327:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+2] = fpregs[r1+2]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:328:9: note: here case 1: /* double */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:329:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+1] = fpregs[r1+1]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:330:9: note: here case 0: /* single */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:343:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+2] = fpregs[r1+2]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:344:9: note: here case 1: /* double */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:345:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+1] = fpregs[r1+1]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:346:9: note: here case 0: /* single */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:359:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+2] = fpregs[r1+2]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:360:9: note: here case 1: /* double */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:361:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+1] = fpregs[r1+1]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:362:9: note: here case 0: /* single */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:305:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:319:4: note: here case 3: /* FABS */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:320:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:335:4: note: here case 6: /* FNEG */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:336:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:351:4: note: here case 7: /* FNEGABS */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:352:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:367:4: note: here case 4: /* FSQRT */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:368:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:379:4: note: here case 5: /* FRND */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:410:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:422:4: note: here case 1: /* FCNVXF */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:423:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:437:4: note: here case 2: /* FCNVFX */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:438:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:452:4: note: here case 3: /* FCNVFXT */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:453:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:467:4: note: here case 5: /* FCNVUF (PA2.0 only) */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:468:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:482:4: note: here case 6: /* FCNVFU (PA2.0 only) */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:483:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:497:4: note: here case 7: /* FCNVFUT (PA2.0 only) */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:498:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:512:4: note: here case 4: /* undefined */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:574:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:593:4: note: here case 1: /* FTEST */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:625:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:636:4: note: here case 1: /* FSUB */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:637:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:648:4: note: here case 2: /* FMPY */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:649:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:660:4: note: here case 3: /* FDIV */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:661:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:672:4: note: here case 4: /* FREM */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:300:3: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (subop) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:393:2: note: here case 1: /* class 1 */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:408:3: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (subop) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:516:2: note: here case 2: /* class 2 */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:521:7: warning: this statement may fall through [-Wimplicit-fallthrough=] if (fpu_type_flags & PA2_0_FPU_FLAG) { ^ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:614:2: note: here case 3: /* class 3 */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c: In function 'decode_0e': /kisskb/src/arch/parisc/math-emu/fpudispatch.c:738:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+1] = fpregs[r1+1]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:739:9: note: here case 0: /* single */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:749:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+1] = fpregs[r1+1]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:750:9: note: here case 0: /* single */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:760:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+1] = fpregs[r1+1]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:761:9: note: here case 0: /* single */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:771:18: warning: this statement may fall through [-Wimplicit-fallthrough=] fpregs[t+1] = fpregs[r1+1]; ~~~~~~~~~~~~^~~~~~~~~~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:772:9: note: here case 0: /* single */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:733:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:743:4: note: here case 3: /* FABS */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:744:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:754:4: note: here case 6: /* FNEG */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:755:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:765:4: note: here case 7: /* FNEGABS */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:766:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:776:4: note: here case 4: /* FSQRT */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:777:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:788:4: note: here case 5: /* FRMD */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:817:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:829:4: note: here case 1: /* FCNVXF */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:830:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:844:4: note: here case 2: /* FCNVFX */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:845:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:859:4: note: here case 3: /* FCNVFXT */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:860:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:874:4: note: here case 5: /* FCNVUF (PA2.0 only) */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:875:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:889:4: note: here case 6: /* FCNVFU (PA2.0 only) */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:890:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:904:4: note: here case 7: /* FCNVFUT (PA2.0 only) */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:905:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch(fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:919:4: note: here case 4: /* undefined */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:1021:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:1029:4: note: here case 1: /* FSUB */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:1030:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:1038:4: note: here case 2: /* FMPY or XMPYU */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:1042:8: warning: this statement may fall through [-Wimplicit-fallthrough=] if (extru(ir,fpxpos,1)) { ^ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:1074:4: note: here case 3: /* FDIV */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:1075:5: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (fmt) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:1083:4: note: here case 4: /* FREM */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:728:3: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (subop) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:802:2: note: here case 1: /* class 1 */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:815:3: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (subop) { ^~~~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:922:2: note: here case 2: /* class 2 */ ^~~~ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:938:7: warning: this statement may fall through [-Wimplicit-fallthrough=] if (fpu_type_flags & PA2_0_FPU_FLAG) { ^ /kisskb/src/arch/parisc/math-emu/fpudispatch.c:997:2: note: here case 3: /* class 3 */ ^~~~ /kisskb/src/arch/parisc/mm/fault.c: In function 'parisc_acctyp': /kisskb/src/arch/parisc/mm/fault.c:67:6: warning: this statement may fall through [-Wimplicit-fallthrough=] if (bit22set(inst)) ^ /kisskb/src/arch/parisc/mm/fault.c:70:2: note: here case 0x0: /* indexed/memory management */ ^~~~ /kisskb/src/drivers/scsi/ncr53c8xx.c: In function 'ncr_int_sir': /kisskb/src/drivers/scsi/ncr53c8xx.c:6713:6: warning: this statement may fall through [-Wimplicit-fallthrough=] if (tp->lp[0]) { ^ /kisskb/src/drivers/scsi/ncr53c8xx.c:6717:2: note: here case SIR_RESEL_BAD_TARGET: /* Will send a TARGET RESET message */ ^~~~ /kisskb/src/drivers/scsi/ncr53c8xx.c: In function 'ncr_prepare_setting': /kisskb/src/drivers/scsi/ncr53c8xx.c:3908:7: warning: this statement may fall through [-Wimplicit-fallthrough=] if (np->sv_scntl3) { ^ /kisskb/src/drivers/scsi/ncr53c8xx.c:3913:3: note: here case 3: /* SYMBIOS controllers report HVD through GPIO3 */ ^~~~ /kisskb/src/drivers/scsi/ncr53c8xx.c:3914:7: warning: this statement may fall through [-Wimplicit-fallthrough=] if (INB(nc_gpreg) & 0x08) ^ /kisskb/src/drivers/scsi/ncr53c8xx.c:3916:3: note: here case 2: /* Set HVD unconditionally */ ^~~~ /kisskb/src/drivers/scsi/ncr53c8xx.c:3917:18: warning: this statement may fall through [-Wimplicit-fallthrough=] np->scsi_mode = SMODE_HVD; /kisskb/src/drivers/scsi/ncr53c8xx.c:3918:3: note: here case 1: /* Trust previous settings for HVD */ ^~~~ Completed OK # rm -rf /kisskb/build/powerpc-next_parisc-defconfig_parisc # Build took: 0:01:03.893808