diff options
Diffstat (limited to 'results/classifier/108/graphic/1757363')
| -rw-r--r-- | results/classifier/108/graphic/1757363 | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/results/classifier/108/graphic/1757363 b/results/classifier/108/graphic/1757363 new file mode 100644 index 00000000..1a92b865 --- /dev/null +++ b/results/classifier/108/graphic/1757363 @@ -0,0 +1,69 @@ +graphic: 0.958 +other: 0.828 +performance: 0.819 +device: 0.779 +debug: 0.748 +network: 0.653 +permissions: 0.642 +semantic: 0.638 +PID: 0.589 +files: 0.528 +boot: 0.490 +vnc: 0.434 +socket: 0.412 +KVM: 0.371 + +infinite loop due to improper deal with "eret" on mips32 + +1.qemu 2.9.1 release on the official web build with tcg +2.cmd: qemu-system-mips -kernel kernelfile +3. host: ubuntu 16.04.1 with linux kernel 4.6.2 x86_64 + guest: mips bigendian 32bit (tplink firmware) + + +detail: + +static inline void exception_return(CPUMIPSState *env) +{ + debug_pre_eret(env); + if (env->CP0_Status & (1 << CP0St_ERL)) { + set_pc(env, env->CP0_ErrorEPC); + env->CP0_Status &= ~(1 << CP0St_ERL); + } else { + set_pc(env, env->CP0_EPC); + env->CP0_Status &= ~(1 << CP0St_EXL);====================> ISSUE???? + } + compute_hflags(env); + debug_post_eret(env); +} + +void helper_eret(CPUMIPSState *env) +{ + exception_return(env); + env->lladdr = 1; +} + + +In the Issue Line, there is no check CP0_Status whether int is disabled (should not enter int routine), +that result in the cpu can not jump out the int routine. + +What model/cpu is your router? + +Which MIPS guest CPU are you using? Are you sure it matches the CPU of your router? + +Is your tplink firmware publicly available? (to reproduce your problem). + +My guess is your router CPU doesn't match the ISA (likely your CPU has extensions to the 24Kf ISA). + +[Expired for QEMU because there has been no activity for 60 days.] + +This seems to affect me too; I have a loop on interrupt handler after the first interrupt called. + +The version of qemu is latest 3.1 from upstream, so this is not Ubuntu issue. + +However, have you done with it? Just commenting out + +env->CP0_Status &= ~(1 << CP0St_EXL); + +does not help. + |