Hi,

There seems to be a small problem with BlockingBuffer's squash function. With my
caches configured with mshrs = 1, I get a crash at
m5/mem/cache/miss/blocking_buffer.cc:193. It looks like there isn't always a
miss target. I added a check for this case like so:

void
BlockingBuffer::squash(int thread_number)
{
    if (miss.threadNum == thread_number) {
        if (miss.hasTargets()) {
            MemReqPtr target = miss.getTarget();
            miss.popTarget();
            assert(target->thread_num == thread_number);
            if (target->completionEvent != NULL) {
                delete target->completionEvent;
            }
            target = NULL;
            assert(!miss.hasTargets());
            miss.ntargets=0;
        }
        if (!miss.inService) {
            miss.deallocate();
            cache->clearBlocked(Blocked_NoMSHRs);
            cache->clearMasterRequest(Request_MSHR);
        }
    }
}

This fixes the crash, hopefully in the right way. :)

Regards,

Jos Delbar


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0944&bid$1720&dat1642
_______________________________________________
m5sim-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/m5sim-users

Reply via email to