Ah, the patch simply fixes the issue that if a PhysicalMemory object  
receives a functional request in timing mode, it alters the request  
which was causing things to crash. I don't remember the precise error  
and I'm not sure if it happens in the unstable version, it is simply  
an issue I encountered using the stable version a while back.

        - Clint

On Apr 27, 2009, at 2:52 PM, nathan binkert wrote:

> Can you tell us more about this patch?  Should this be in the tree?
>
>  Nate
>
> On Mon, Apr 27, 2009 at 11:40 AM, Clint Smullen  
> <[email protected]> wrote:
>> The only issue I have ever had with using functional memory requests
>> during timing mode is that some modules explicitly disable them.  
>> There
>> is no intrinsic reason (other than that) for them to not work at any
>> time, since the actual memory store is the same for the functional  
>> and
>> "physical" memory. Below is my patch for tweaking the behavior of the
>> PhysicalMemory to not create errors, not sure if this relates to the
>> issue you are seeing, however.
>>
>>        - Clint
>>
>> diff --git a/src/mem/physical.cc b/src/mem/physical.cc
>> --- a/src/mem/physical.cc
>> +++ b/src/mem/physical.cc
>> @@ -325,12 +325,16 @@
>>          if (pmemAddr)
>>              memcpy(pkt->getPtr<uint8_t>(), hostAddr, pkt- 
>> >getSize());
>>          TRACE_PACKET("Read");
>> -        pkt->makeAtomicResponse();
>> +                  if (pkt->needsResponse()) {
>> +                          pkt->makeAtomicResponse();
>> +                  }
>>      } else if (pkt->isWrite()) {
>>          if (pmemAddr)
>>              memcpy(hostAddr, pkt->getPtr<uint8_t>(), pkt- 
>> >getSize());
>>          TRACE_PACKET("Write");
>> -        pkt->makeAtomicResponse();
>> +                  if (pkt->needsResponse()) {
>> +                          pkt->makeAtomicResponse();
>> +                  }
>>      } else if (pkt->isPrint()) {
>>          Packet::PrintReqState *prs =
>>              dynamic_cast<Packet::PrintReqState*>(pkt->senderState);
>>
>> On Apr 27, 2009, at 2:44 AM, Rick Strong wrote:
>>
>>> Hi all,
>>>
>>> I am writing a memory debugger that sits in between L1 and the  
>>> cpu. It
>>> maintains a functional memory (like MemTest) that mimics the actions
>>> the
>>> memory actions and tests the values for problems. I would like to be
>>> able to plug this in right after restoring a checkpoint when the
>>> physical memory has values (from checkpoint) but the functional  
>>> memory
>>> is blank. Is there an easy way to initialize a functional memory
>>> from a
>>> physical memory?
>>>
>>> Also, I see references to MemDebugger class in the cache
>>> implementations
>>> which makes me think someone else has gone down this road before.  
>>> Any
>>> one know anything?
>>>
>>> Thanks,
>>> -Rick
>>>
>>> _______________________________________________
>>> m5-users mailing list
>>> [email protected]
>>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
>>
>> _______________________________________________
>> m5-users mailing list
>> [email protected]
>> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
>>
>>
> _______________________________________________
> m5-users mailing list
> [email protected]
> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users

_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users

Reply via email to