Review Board 2.0.15


x86: Add support for m5ops through a memory mapped interface

Review Request #2024 - Created Sept. 20, 2013 and submitted

Information
Andreas Sandberg
gem5
default
Reviewers
Default
Changeset 9885:f45348d9676b
---------------------------
x86: Add support for m5ops through a memory mapped interface

In order to support m5ops in virtualized environments, we need to use
a memory mapped interface. This changeset adds support for that by
reserving 0xFFFF0000-0xFFFFFFFF and mapping those to the generic IPR
interface for m5ops. The mapping is done in the
X86ISA::TLB::finalizePhysical() which means that it just works for all
of the CPU models, including virtualized ones.

   
Review request changed
Updated (Sept. 30, 2013, 3:22 a.m.)

Status: Closed (submitted)

Posted (Oct. 22, 2014, 8:11 a.m.)
I ran across a small problem with this patch. The global pointer m5_mem is used inside of m5op_x86.S (if M5OP_ADDR is defined) and is declared inside of m5.c. This means that I can no longer link my ROI-annotated workload only to m5op_x86.o (because I need m5_mem). However, linking to m5.o to get at the m5_mem causes a symbol conflict on main(). 

One solution is simply to not use M5OP_ADDR (I'm not sure I need this feature at the moment). 

My workaround was to pull the m5_mem pointer and map_m5_mem() functions into its own m5_mem.o file and link to both m5op_x86.o and m5_mem.o 

I can post a patch if you think this is helpful.