I wouldn't really say this is a bug that needs to be patched, just
something to be aware of if you try something similar to what I did
(plus I'm still using 2.05b2, and am unsure if thread_state or
translatingport have been modified since then). It's mainly an issue
with me messing around with the process running on a core, which I
don't think was intended. To avoid this problem though, you'd just
need to check that the page table used by "port" in
ThreadState::getMemPort() is the same as "process->pTable". I believe
this is only not going to be the case when you switch the process
while running.
-Nick
On Aug 23, 2007, at 6:21 PM, Ali Saidi wrote:
Nick,
Do you have a patch we could apply to the M5 repository?
Thanks,
Ali
On Aug 23, 2007, at 6:12 PM, Nicolas Zea wrote:
Just to follow up on this, in case anyone else might try something
similar, it turns out the problem was that the translatingport
used by the thread for certain system calls has a reference to a
pagetable which is only set once. This translatingport uses a page
table from one process, and although I change the process running
on the core, the translatingport kept referring to the old page
table. The solution was to delete and remake the translating port
every time I swap processes.
-Nick
On Jul 26, 2007, at 9:07 PM, Nicolas Zea wrote:
Yes, it's repeatable, and the benchmark being used doesn't appear
to matter. I suspect it may have to do with what the registers
are holding at startup. It looks like the simulator starts
running the loader code, and maybe takes a band jump somewhere.
Eventually it tries to do a ldl using an invalid address (0x30 I
believe).
Do I need to initialize the registers to any particular values
before starting up the process? I was under the impression
LiveProcess::startup() did that.
On Jul 25, 2007, at 7:11 PM, Steve Reinhardt wrote:
Can you be more specific about this page fault? Does it occur
in a repeatable spot, what kin
d of address is it, etc.
Steve
On 7/25/07, Nicolas Zea <[EMAIL PROTECTED]> wrote:
Using Alpha Syscall Emulation, I'm playing around with moving
processes from one cpu to another, as well as having "floating
processes" which do not start on any cpu until a later time. I'm
running into an issue with getting a page fault when I try to load
one of these floating processes onto a cpu. Could anyone shed some
light onto what the necessary actions to take are?
My setup has one system object with multiple cpu's within it, each
with a private l1. I have storage for these floating processes,
which
are initialized to be different benchmarks in the configuration
file.
Currently, I perform the following when attempting to load an
uninitialized process onto a core for the first time (where
thecpu is
the cpu object I want to run the new process on):
(note: I drain the cpu first to make sure the previous process
is in
a steady state)
((AlphaTC<AlphaSimpleImpl> *)(thecpu-
>threadContexts[0]))->thread-
>process = pkt->proc; // attach the process
thecpu->registerThreadContexts(); //
register the process
pkt->proc->startup(); // perform the initial
write of program data
into memory
thecpu->resume(); // resume the cpu
This seems to work, as watching the fetch shows that things are
happening, but inevitably I get a page fault. Any ideas?
-Nick
_______________________________________________
m5-users mailing list
m5-users@m5sim.org
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
_______________________________________________
m5-users mailing list
m5-users@m5sim.org
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
_______________________________________________
m5-users mailing list
m5-users@m5sim.org
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
_______________________________________________
m5-users mailing list
m5-users@m5sim.org
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
_______________________________________________
m5-users mailing list
m5-users@m5sim.org
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
_______________________________________________
m5-users mailing list
m5-users@m5sim.org
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users