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 -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to