assertion '!load_inst->isExecuted()' run some app on the ARM O3 SE mode

Description

when I use ARM O3 SE mode run some app, I got the assertion '!load_inst->isExecuted()' failed.
there has a load which crosspage, the first 4byte is in the one page 1, the next 4 byte in the other page 2 , the page 2 is firstly load so inst got the fault of tlb pagefualt .
as the same time there has a store ,which wirte the page 1 the 4byte. so the code in src/cpu/o3/lsq_unit.hh LSQUnit<Impl>::read(LSQRequest *req, int load_idx) will
"coverage == AddrRangeCoverage::PartialAddrRangeCoverage " rescheduleMemInst the load_inst.
the code in src/cpu/o3/lsq_unit_impl.hh LSQUnit<Impl>::executeLoad(const DynInstPtr &inst) load_fault = inst->initiateAcc() the load_fault get fault because the tlb pagefault, so the inst is setExecuted in the code src/cpu/o3/lsq_unit_impl.hh:581
when the stote inst is completed, the load_inst is reschedule, when the load_inst initiateAcc, the load_inst is setExecuted, so I got the assertion '!load_inst->isExecuted()' failed.

Environment

None

Activity

Show:
sky_xxh
April 13, 2021, 1:18 AM

my gem5 version is 20.0.3,and my command is ./build/ARM/gem5.opt configs/example/se.py --cpu-type=DerivO3CPU --cpu-clock=2.6GHz --sys-clock=2.6GHz --caches --l2cache --mem-size=8GB -c ./redis_test

Bobby Bruce
April 12, 2021, 9:12 PM

Can you give us more information so we can reproduce this? (i.e., exact commands executed, the environment, etc).

 

Assignee

Unassigned

Reporter

sky_xxh

Priority

Medium