Hello. I am trying to atomically translate some virtual addresses in my
prefetcher. The function I have defined for this purpose is:
Addr BFS::translateAddr(Addr vaddr, PacketPtr &pkt)
{
DPRINTF(BFS, "Entered translateAddr with vaddr: %#x\n", vaddr);
RequestPtr req = std::make_shared<Request>(
vaddr, blkSize, 0, requestorId, 0, pkt->req->contextId());
Fault f = tlb->translateAtomic(req,
cache->system->threads[req->contextId()],
BaseTLB::Read);
if ( f != NoFault )
DPRINTF(BFS, "BFS Translation Failed.\n");
else
{
DPRINTF(BFS, "BFS translation succeded with paddr: %#x\n",
req->getPaddr());
}
return req->getPaddr();
}
When executing this code in ARM SE mode, everything works fine. But in FS
mode, I get this error:
fatal: system.cpu.mmu.dtb.walker.dma: Unconnected port!
I am sharing the last portion of the debug output with TLB flag:
1343690404500: system.cpu.dcache.prefetcher: Entered translateAddr with vaddr:
0x532d00
1343690404500: system.cpu.mmu.dtb: translateFs addr 0x532d00, mode 0, st2 0,
scr 0 sctlr 0x3475d91d flags 0 tranType 0x0
1343690404500: system.cpu.mmu.dtb: TLB Miss: Starting hardware table walker for
0x532d00(91:0)
1343690404500: system.cpu.mmu.dtb.walker: Beginning table walk for address
0x532d00, TCR: 0x32b5593519
1343690404500: system.cpu.mmu.dtb.walker: - Selecting TTBR0 (AArch64)
I am sure that my vaddr is a valid address.
Can you please help me understanding the cause of the error? Thanks a lot.
_______________________________________________
gem5-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s