Hi All, I'm having issues booting kernel with Simple Timing CPU. My kernel (4.15) boots fine with using KVM CPU and issue persist with Atomic and O3, so I thought it's possibly gem5 implementation of x86 instructions.
Call trace for the Kernel oops I'm getting is the following: identify_cpu+0x4b1/0x580 identify_boot_cpu+0x10/0x75 check_bugs+0x2a/0x7fb ? kmem_cache_alloc+0x19f/0x1b0 ? delayacct_init+0x52/0x70 start_kernel+0x4cc/0x511 x86_64_start_reservations+0x24/0x26 x86_64_start_kernel+0x74/0x77 secondary_startup_64+0xa5/0xb0 RIP and RSP: RIP: native_write_cr4+0x4/0x10 RSP: ffffffff82403e28 Looking at the Exec traces, I have: [...] 357797977250: system.cpu1 A0 T0 : @native_write_cr4+4.32949 : Microcode_ROM : or t6, t5, t6 : IntAlu : D=0x0000000000014100 flags=(IsInteger|IsMicroop|IsDelayedCommit) 357797977500: system.cpu1 A0 T0 : @native_write_cr4+4.32950 : Microcode_ROM : wrflags %cc0, t6b, t10b : IntAlu : D=0x0000000000000028 flags=(IsInteger|IsCC|IsSerializing|IsSerializeAfter|IsNonSpeculative|IsMicroop|IsDelayedCommit) 357797977500: system.cpu0 A0 T0 : @__schedule+298.2 : JNZ_I : wrip , t1, t2 : IntAlu : flags=(IsInteger|IsCC|IsControl|IsCondControl|IsMicroop|IsLastMicroop) 357797977750: system.cpu0 A0 T0 : @__schedule+392 : and DS:[r13], 0xfffffffffffffff7 357797977750: system.cpu0 A0 T0 : @__schedule+392.0 : AND_LOCKED_M_I.mfence : IntAlu : flags=(IsMemBarrier|IsMicroop|IsDelayedCommit|IsFirstMicroop) 357797977750: system.cpu1 A0 T0 : @native_write_cr4+4.32951 : Microcode_ROM : eret 0 : No_OpClass : flags=(IsMicroop|IsLastMicroop) 357797978000: system.cpu1 A0 T0 : @general_protection : NOP : IntAlu : flags=() I went over the micro ops once, and I couldn't find any issues (given it's my first time looking at micro ops). I was wondering if someone with enough expertise can check and see if there is something I'm missing here. The whole sequence (with tick and cpu_ID omitted): @native_write_cr4 : push rbp @native_write_cr4.1 : PUSH_R : subi rsp, rsp, 0x8 : IntAlu : D=0xffffc90000123ea8 flags=(IsInteger|IsMicroop|IsLastMicroop) @native_write_cr4+1 : mov rbp, rsp @native_write_cr4+1.0 : MOV_R_R : mov rbp, rbp, rsp : IntAlu : D=0xffffc90000123ea8 flags=(IsInteger|IsMicroop|IsLastMicroop|IsFirstMicroop) @native_write_cr4+4.32890 : Microcode_ROM : slli t4, t1, 0x4 : IntAlu : D=0x00000000000000d0 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4 : push rbp @native_write_cr4.1 : PUSH_R : subi rsp, rsp, 0x8 : IntAlu : D=0xffffc90000123ea8 flags=(IsInteger|IsMicroop|IsLastMicroop) @native_write_cr4+1 : mov rbp, rsp @native_write_cr4+1.0 : MOV_R_R : mov rbp, rbp, rsp : IntAlu : D=0xffffc90000123ea8 flags=(IsInteger|IsMicroop|IsLastMicroop|IsFirstMicroop) @native_write_cr4+4.32890 : Microcode_ROM : slli t4, t1, 0x4 : IntAlu : D=0x00000000000000d0 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32891 : Microcode_ROM : ld t2, IDTR:[t4 + 0x8] : MemRead : D=0x00000000ffffffff A=0xfffffe00000000d8 flags=(IsInteger|IsMemRef|IsLoad|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32892 : Microcode_ROM : ld t4, IDTR:[t4] : MemRead : D=0x81a08e0000101550 A=0xfffffe00000000d0 flags=(IsInteger|IsMemRef|IsLoad|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32893 : Microcode_ROM : chks , t4b, 0x3 : IntAlu : flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32894 : Microcode_ROM : srli t10, t4, 0x10 : IntAlu : D=0x000081a08e000010 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32895 : Microcode_ROM : andi t5, t10, 0xf8 : IntAlu : D=0x0000000000000010 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32896 : Microcode_ROM : andi t0w, t10w, 0x4 : IntAlu : D=0x0000000000000020 flags=(IsInteger|IsCC|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32897 : Microcode_ROM : br 0x8084 : No_OpClass : flags=(IsCC|IsControl|IsCondControl|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32900 : Microcode_ROM : ld t3, TSG:[t5] : MemRead : D=0x00af9b000000ffff A=0xfffffe000002d010 flags=(IsInteger|IsMemRef|IsLoad|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32901 : Microcode_ROM : chks , t3, 0x7 : IntAlu : flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32902 : Microcode_ROM : wrdl %ctrl145, t3, t10 : IntAlu : D=0x000000000000abd0 flags=(IsInteger|IsSerializing|IsSerializeAfter|IsNonSpeculative|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32903 : Microcode_ROM : wrdh t9, t4, t2 : IntAlu : D=0xffffffff81a01550 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32904 : Microcode_ROM : rdsel t11b, t11b, %ctrl128 : IntAlu : D=0x0000000000000000 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32905 : Microcode_ROM : rdattr t10, %ctrl184, : IntAlu : D=0x000000000000abd0 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32906 : Microcode_ROM : andi t10, t10, 0x3 : IntAlu : D=0x0000000000000000 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32907 : Microcode_ROM : rdattr t5, %ctrl179, : IntAlu : D=0x000000000000abd0 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32908 : Microcode_ROM : andi t5, t5, 0x3 : IntAlu : D=0x0000000000000000 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32909 : Microcode_ROM : sub t0, t5, t10 : IntAlu : D=0x0000000000000020 flags=(IsInteger|IsCC|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32910 : Microcode_ROM : mov t11b, t0b, t0b : IntAlu : D=0x0000000000000000 flags=(IsInteger|IsCC|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32911 : Microcode_ROM : srli t12, t4, 0x20 : IntAlu : D=0x0000000081a08e00 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32912 : Microcode_ROM : andi t12, t12, 0x7 : IntAlu : D=0x0000000000000000 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32913 : Microcode_ROM : subi t0, t12, 0x1 : IntAlu : D=0x0000000000000008 flags=(IsInteger|IsCC|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32914 : Microcode_ROM : br 0x8096 : No_OpClass : flags=(IsCC|IsControl|IsCondControl|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32915 : Microcode_ROM : br 0x8098 : No_OpClass : flags=(IsCC|IsControl|IsCondControl|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32916 : Microcode_ROM : mov t6, t6, rsp : IntAlu : D=0xffffc90000123ea8 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32917 : Microcode_ROM : br 0x8099 : No_OpClass : flags=(IsControl|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32921 : Microcode_ROM : andi t6b, t6b, 0xf0 : IntAlu : D=0xffffc90000123ea0 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32922 : Microcode_ROM : subi t6, t6, 0x30 : IntAlu : D=0xffffc90000123e70 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32923 : Microcode_ROM : wrip , t0, t9 : IntAlu : flags=(IsInteger|IsControl|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32924 : Microcode_ROM : srli t5, t4, 0x10 : IntAlu : D=0x000081a08e000010 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32925 : Microcode_ROM : andi t5, t5, 0xff : IntAlu : D=0x0000000000000010 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32926 : Microcode_ROM : wrdl %ctrl140, t3, t5 : IntAlu : D=0x000000000000abd0 flags=(IsInteger|IsSerializing|IsNonSpeculative|IsMicroop|IsDelayedCommit|IsSquashAfter) @native_write_cr4+4.32927 : Microcode_ROM : limm t10, 0 : IntAlu : D=0x0000000000000000 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32928 : Microcode_ROM : rdsel t10w, t10w, %ctrl127 : IntAlu : D=0x0000000000000010 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32929 : Microcode_ROM : wrsel %ctrl127, t5w, : IntAlu : D=0x0000000000000010 flags=(IsInteger|IsSerializing|IsSerializeAfter|IsNonSpeculative|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32930 : Microcode_ROM : ldst t0, HS:[t6] : MemRead : D=0xffff88801fd0f040 A=0xffffc90000123e70 flags=(IsInteger|IsMemRef|IsLoad|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32931 : Microcode_ROM : ldst t0, HS:[t6 + 0x28] : MemRead : D=0xffffc90000123ea8 A=0xffffc90000123e98 flags=(IsInteger|IsMemRef|IsLoad|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32932 : Microcode_ROM : st t15, HS:[t6] : MemWrite : D=0x0000000000000000 A=0xffffc90000123e70 flags=(IsInteger|IsMemRef|IsStore|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32933 : Microcode_ROM : st t7, HS:[t6 + 0x8] : MemWrite : D=0xffffffff8106ca84 A=0xffffc90000123e78 flags=(IsInteger|IsMemRef|IsStore|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32934 : Microcode_ROM : st t10, HS:[t6 + 0x10] : MemWrite : D=0x0000000000000010 A=0xffffc90000123e80 flags=(IsInteger|IsMemRef|IsStore|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32935 : Microcode_ROM : rflags t10, %cc0, %cc1 : IntAlu : D=0x00000000000000ad flags=(IsInteger|IsCC|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32936 : Microcode_ROM : st t10, HS:[t6 + 0x18] : MemWrite : D=0x00000000000000ad A=0xffffc90000123e88 flags=(IsInteger|IsMemRef|IsStore|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32937 : Microcode_ROM : st rsp, HS:[t6 + 0x20] : MemWrite : D=0xffffc90000123ea8 A=0xffffc90000123e90 flags=(IsInteger|IsMemRef|IsStore|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32938 : Microcode_ROM : rdsel t5w, t5w, %ctrl128 : IntAlu : D=0x0000000000000000 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32939 : Microcode_ROM : st t5, HS:[t6 + 0x28] : MemWrite : D=0x0000000000000000 A=0xffffc90000123e98 flags=(IsInteger|IsMemRef|IsStore|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32940 : Microcode_ROM : mov rsp, rsp, t6 : IntAlu : D=0xffffc90000123e70 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32941 : Microcode_ROM : wrsel %ctrl128, t11w, : IntAlu : D=0x0000000000000000 flags=(IsInteger|IsSerializing|IsSerializeAfter|IsNonSpeculative|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32942 : Microcode_ROM : limm t6, 0x14100 : IntAlu : D=0x0000000000014100 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32943 : Microcode_ROM : or t10, t10, t6 : IntAlu : D=0x00000000000141ad flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32944 : Microcode_ROM : srli t5, t4, 0x28 : IntAlu : D=0x000000000081a08e flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32945 : Microcode_ROM : srli t7, t10, 0x9 : IntAlu : D=0x00000000000000a0 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32946 : Microcode_ROM : xor t5, t7, t5 : IntAlu : D=0x000000000081a02e flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32947 : Microcode_ROM : andi t5, t5, 0x1 : IntAlu : D=0x0000000000000000 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32948 : Microcode_ROM : slli t5, t5, 0x9 : IntAlu : D=0x0000000000000000 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32949 : Microcode_ROM : or t6, t5, t6 : IntAlu : D=0x0000000000014100 flags=(IsInteger|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32950 : Microcode_ROM : wrflags %cc0, t6b, t10b : IntAlu : D=0x0000000000000028 flags=(IsInteger|IsCC|IsSerializing|IsSerializeAfter|IsNonSpeculative|IsMicroop|IsDelayedCommit) @native_write_cr4+4.32951 : Microcode_ROM : eret 0 : No_OpClass : flags=(IsMicroop|IsLastMicroop) Best, -- Pouya Fotouhi PhD Candidate Department of Electrical and Computer Engineering University of California, Davis
_______________________________________________ gem5-users mailing list gem5-users@gem5.org http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users