Re: [gem5-users] Doubt about the event queue and stats

2020-04-09 Thread Ajumal P A
Thank you for the response. It is really helpful.

On Thu, Apr 9, 2020 at 11:24 PM Ciro Santilli 
wrote:

> On Thu, Apr 9, 2020 at 6:29 PM Ajumal P A  wrote:
> >
> > Hi All,
> > I have a couple of doubts about how the event queue works and how stats
> are being calculated. Please help me with the following questions.
> > I have a loop which runs for 100 times, each iteration do an add
> operation and this loop is working on a single-core CPU system. I have
> wrapped that work as an event.
> > 1. I tried to schedule this event at the same cycle and the DPRINTF
> statements show that it's actually working at the same cycle, how and why?
>
> Not sure I understand, but one cycle can have multiple events. This
> can be seen clearly from logs as recommended below.
>
> > 2. What happens when I schedule above-mentioned event say at tick 100?
> Will the Gem5 calculates the curTick+TimeRequiredToCompleteThisEvent and
> log the stats? If not please let me know how to actually make the Gem5 take
> this time into consideration when it writes the stats?
>
> Maybe there's something I don't know, but I think all events are
> instantaneous. Everything that is not instantaneous is done by
> scheduling another event in the future.
>
> > 3. Is there any way to visually see the eventq? (I tried to look at this
> queue using GDB, but it's giving some address which I could not understand
> what it actually means)
> >
>
> --debug-flags Event,ExecAll gives good information. Not fully visual,
> but makes it possible to understand everything with a bit of staring.
> This may also help:
> https://cirosantilli.com/linux-kernel-module-cheat/#gem5-event-queue
>
> > Thanks in advance,
> > Aj.
> > ___
> > gem5-users mailing list
> > gem5-users@gem5.org
> > http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] Ruby functional read fails and potential fix

2020-04-09 Thread Shehab Elsayed
Hi Ciro,

Thank you for your reply. Looks like this patch does address the problem I
mentioned along with some other ones. Thanks for sharing.

Best Regards,
Shehab


On Thu, Apr 9, 2020 at 1:45 PM Ciro Santilli 
wrote:

> Thanks for this Shehab,
>
> Could you compare your changes to this patchset:
> https://gem5-review.googlesource.com/c/public/gem5/+/22022/1
>
> On Thu, Apr 9, 2020 at 6:22 PM Shehab Elsayed 
> wrote:
> >
> > Hello All,
> >
> > I was running some experiments and I ran into a problem with ruby where
> a functional read was failing. After some investigation I found that the
> reason was that the functional read was trying to read a line that was in a
> MaybeStale state (no ReadOnly or ReadWrite versions).
> >
> > I implemented a fix which so far seems to be working fine but I am not
> sure if there is a deeper problem that needs fixing or if my fix could
> present future problems.
> >
> > I am running Full System simulations with ARM ISA and MESI_Three_Level.
> >
> > Here is my fix (I have marked new lines with //--NEW--//):
> > Basically what this fix does is perform the functional read from the
> controller that has the line in the MaybeStale state if no ReadOnly or
> ReadWrite versions in any controller.
> >
> > bool
> > RubySystem::functionalRead(PacketPtr pkt)
> > {
> > Addr address(pkt->getAddr());
> > Addr line_address = makeLineAddress(address);
> >
> > AccessPermission access_perm = AccessPermission_NotPresent;
> > int num_controllers = m_abs_cntrl_vec.size();
> >
> > DPRINTF(RubySystem, "Functional Read request for %#x\n", address);
> >
> > unsigned int num_ro = 0;
> > unsigned int num_rw = 0;
> > unsigned int num_busy = 0;
> > unsigned int num_backing_store = 0;
> > unsigned int num_invalid = 0;
> > unsigned int num_maybe_stale = 0;//--NEW--//
> >
> > // In this loop we count the number of controllers that have the
> given
> > // address in read only, read write and busy states.
> > for (unsigned int i = 0; i < num_controllers; ++i) {
> >
> > // Ignore ATD controllers for functional reads
> > if (m_abs_cntrl_vec[i]->getType() == MachineType_ATD) {
> > continue;
> > }
> >
> > access_perm = m_abs_cntrl_vec[i]->
> getAccessPermission(line_address);
> > if (access_perm == AccessPermission_Read_Only)
> > num_ro++;
> > else if (access_perm == AccessPermission_Read_Write)
> > num_rw++;
> > else if (access_perm == AccessPermission_Busy)
> > num_busy++;
> > else if (access_perm == AccessPermission_Backing_Store)
> > // See RubySlicc_Exports.sm for details, but Backing_Store
> is meant
> > // to represent blocks in memory *for Broadcast/Snooping
> protocols*,
> > // where memory has no idea whether it has an exclusive copy
> of data
> > // or not.
> > num_backing_store++;
> > else if (access_perm == AccessPermission_Invalid ||
> >  access_perm == AccessPermission_NotPresent)
> > num_invalid++;
> > else if (access_perm == AccessPermission_Maybe_Stale)
> //--NEW--//
> > num_maybe_stale++;
> //--NEW--//
> > }
> >
> > // This if case is meant to capture what happens in a Broadcast/Snoop
> > // protocol where the block does not exist in the cache hierarchy.
> You
> > // only want to read from the Backing_Store memory if there is no
> copy in
> > // the cache hierarchy, otherwise you want to try to read the RO or
> RW
> > // copies existing in the cache hierarchy (covered by the else
> statement).
> > // The reason is because the Backing_Store memory could easily be
> stale, if
> > // there are copies floating around the cache hierarchy, so you want
> to read
> > // it only if it's not in the cache hierarchy at all.
> > if (num_invalid == (num_controllers - 1) && num_backing_store == 1) {
> > DPRINTF(RubySystem, "only copy in Backing_Store memory, read
> from it\n");
> > for (unsigned int i = 0; i < num_controllers; ++i) {
> > access_perm =
> m_abs_cntrl_vec[i]->getAccessPermission(line_address);
> > if (access_perm == AccessPermission_Backing_Store) {
> > m_abs_cntrl_vec[i]->functionalRead(line_address, pkt);
> > return true;
> > }
> > }
> > } else if (num_ro > 0 || num_rw >= 1 || num_maybe_stale > 0) {
> //--NEW--//
> > if (num_rw > 1) {
> > // We iterate over the vector of abstract controllers, and
> return
> > // the first copy found. If we have more than one cache with
> block
> > // in writable permission, the first one found would be
> returned.
> > warn("More than one Abstract Controller with RW permission
> for "
> >  "addr: %#x 

Re: [gem5-users] Double PseudoInst commands while running Parsec

2020-04-09 Thread Ciro Santilli
Can you double check with aarch64-linux-gnu-objdump that the binary
really only contains a single pseudoop? Maybe it is just an
instrumentation bug that doubles it up.

I would also recommend that you try to correlate --debug-flags ExecAll
or GDB the guest executable around the pseudoop point to narrow down
what is happening.


On Thu, Apr 9, 2020 at 6:30 PM David Agassi  wrote:
>
> Hi guys,
>
> I'm am running the PARSEC benchmark suite on gem5 ARM in full system 
> simulation mode. For some reason it seems like some m5 PseudoInst 
> (checkpoint, stats_reset, stats_dump) are executed twice and I'm not sure why.
>
> I built PARSEC on QEMU following this guide. I'm running the benchmarks 
> single-threaded.
>
> In the beginning of each PARSEC benchmark's ROI there is an m5 checkpoint 
> command and a reset stats command. On exiting the ROI there is a dump stats 
> command.
>
> When simulating the the code with gem5 I get the following sequence of m5 
> commands:
> checkpoint, reset stats, checkpoint, reset stats, ...(ROI running)..., dump 
> stats, dump stats.
> I'm expecting: checkpoint, reset stats, ...(ROI running)..., dump stats.
>
> However, the simulated application has the correct output (prints from the 
> simulated program's ROI occur once).
>
> Any ideas why this is happening?
>
> Can provide logs for Parsec and m5 and building / running commands.
>
> Thanks, David
> ___
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] Doubt about the event queue and stats

2020-04-09 Thread Ciro Santilli
On Thu, Apr 9, 2020 at 6:29 PM Ajumal P A  wrote:
>
> Hi All,
> I have a couple of doubts about how the event queue works and how stats are 
> being calculated. Please help me with the following questions.
> I have a loop which runs for 100 times, each iteration do an add operation 
> and this loop is working on a single-core CPU system. I have wrapped that 
> work as an event.
> 1. I tried to schedule this event at the same cycle and the DPRINTF 
> statements show that it's actually working at the same cycle, how and why?

Not sure I understand, but one cycle can have multiple events. This
can be seen clearly from logs as recommended below.

> 2. What happens when I schedule above-mentioned event say at tick 100? Will 
> the Gem5 calculates the curTick+TimeRequiredToCompleteThisEvent and log the 
> stats? If not please let me know how to actually make the Gem5 take this time 
> into consideration when it writes the stats?

Maybe there's something I don't know, but I think all events are
instantaneous. Everything that is not instantaneous is done by
scheduling another event in the future.

> 3. Is there any way to visually see the eventq? (I tried to look at this 
> queue using GDB, but it's giving some address which I could not understand 
> what it actually means)
>

--debug-flags Event,ExecAll gives good information. Not fully visual,
but makes it possible to understand everything with a bit of staring.
This may also help:
https://cirosantilli.com/linux-kernel-module-cheat/#gem5-event-queue

> Thanks in advance,
> Aj.
> ___
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] Ruby functional read fails and potential fix

2020-04-09 Thread Ciro Santilli
Thanks for this Shehab,

Could you compare your changes to this patchset:
https://gem5-review.googlesource.com/c/public/gem5/+/22022/1

On Thu, Apr 9, 2020 at 6:22 PM Shehab Elsayed  wrote:
>
> Hello All,
>
> I was running some experiments and I ran into a problem with ruby where a 
> functional read was failing. After some investigation I found that the reason 
> was that the functional read was trying to read a line that was in a 
> MaybeStale state (no ReadOnly or ReadWrite versions).
>
> I implemented a fix which so far seems to be working fine but I am not sure 
> if there is a deeper problem that needs fixing or if my fix could present 
> future problems.
>
> I am running Full System simulations with ARM ISA and MESI_Three_Level.
>
> Here is my fix (I have marked new lines with //--NEW--//):
> Basically what this fix does is perform the functional read from the 
> controller that has the line in the MaybeStale state if no ReadOnly or 
> ReadWrite versions in any controller.
>
> bool
> RubySystem::functionalRead(PacketPtr pkt)
> {
> Addr address(pkt->getAddr());
> Addr line_address = makeLineAddress(address);
>
> AccessPermission access_perm = AccessPermission_NotPresent;
> int num_controllers = m_abs_cntrl_vec.size();
>
> DPRINTF(RubySystem, "Functional Read request for %#x\n", address);
>
> unsigned int num_ro = 0;
> unsigned int num_rw = 0;
> unsigned int num_busy = 0;
> unsigned int num_backing_store = 0;
> unsigned int num_invalid = 0;
> unsigned int num_maybe_stale = 0;//--NEW--//
>
> // In this loop we count the number of controllers that have the given
> // address in read only, read write and busy states.
> for (unsigned int i = 0; i < num_controllers; ++i) {
>
> // Ignore ATD controllers for functional reads
> if (m_abs_cntrl_vec[i]->getType() == MachineType_ATD) {
> continue;
> }
>
> access_perm = m_abs_cntrl_vec[i]-> getAccessPermission(line_address);
> if (access_perm == AccessPermission_Read_Only)
> num_ro++;
> else if (access_perm == AccessPermission_Read_Write)
> num_rw++;
> else if (access_perm == AccessPermission_Busy)
> num_busy++;
> else if (access_perm == AccessPermission_Backing_Store)
> // See RubySlicc_Exports.sm for details, but Backing_Store is 
> meant
> // to represent blocks in memory *for Broadcast/Snooping 
> protocols*,
> // where memory has no idea whether it has an exclusive copy of 
> data
> // or not.
> num_backing_store++;
> else if (access_perm == AccessPermission_Invalid ||
>  access_perm == AccessPermission_NotPresent)
> num_invalid++;
> else if (access_perm == AccessPermission_Maybe_Stale)
> //--NEW--//
> num_maybe_stale++;
>   //--NEW--//
> }
>
> // This if case is meant to capture what happens in a Broadcast/Snoop
> // protocol where the block does not exist in the cache hierarchy. You
> // only want to read from the Backing_Store memory if there is no copy in
> // the cache hierarchy, otherwise you want to try to read the RO or RW
> // copies existing in the cache hierarchy (covered by the else statement).
> // The reason is because the Backing_Store memory could easily be stale, 
> if
> // there are copies floating around the cache hierarchy, so you want to 
> read
> // it only if it's not in the cache hierarchy at all.
> if (num_invalid == (num_controllers - 1) && num_backing_store == 1) {
> DPRINTF(RubySystem, "only copy in Backing_Store memory, read from 
> it\n");
> for (unsigned int i = 0; i < num_controllers; ++i) {
> access_perm = 
> m_abs_cntrl_vec[i]->getAccessPermission(line_address);
> if (access_perm == AccessPermission_Backing_Store) {
> m_abs_cntrl_vec[i]->functionalRead(line_address, pkt);
> return true;
> }
> }
> } else if (num_ro > 0 || num_rw >= 1 || num_maybe_stale > 0) {
>   //--NEW--//
> if (num_rw > 1) {
> // We iterate over the vector of abstract controllers, and return
> // the first copy found. If we have more than one cache with block
> // in writable permission, the first one found would be returned.
> warn("More than one Abstract Controller with RW permission for "
>  "addr: %#x on cacheline: %#x.", address, line_address);
> }
> // In Broadcast/Snoop protocols, this covers if you know the block
> // exists somewhere in the caching hierarchy, then you want to read 
> any
> // valid RO or RW block.  In directory protocols, same thing, you want
> // to read any valid readable copy of t

[gem5-users] Double PseudoInst commands while running Parsec

2020-04-09 Thread David Agassi
Hi guys,

I'm am running the PARSEC benchmark suite on gem5 ARM in full system
simulation mode. For some reason it seems like some m5 PseudoInst
(checkpoint, stats_reset, stats_dump) are executed twice and I'm not sure
why.

I built PARSEC on QEMU following this guide
. I'm running the
benchmarks single-threaded.

In the beginning of each PARSEC benchmark's ROI there is an m5 checkpoint
command and a reset stats command. On exiting the ROI there is a dump stats
command.

When simulating the the code with gem5 I get the following sequence of m5
commands:
checkpoint, reset stats, checkpoint, reset stats, ...(ROI running)..., dump
stats, dump stats.
I'm expecting: checkpoint, reset stats, ...(ROI running)..., dump stats.

However, the simulated application has the correct output (prints from the
simulated program's ROI occur once).

Any ideas why this is happening?

Can provide logs for Parsec and m5 and building / running commands.

Thanks, David
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

[gem5-users] Doubt about the event queue and stats

2020-04-09 Thread Ajumal P A
Hi All,
I have a couple of doubts about how the event queue works and how stats are
being calculated. Please help me with the following questions.
I have a loop which runs for 100 times, each iteration do an add operation
and this loop is working on a single-core CPU system. I have wrapped that
work as an event.
1. I tried to schedule this event at the same cycle and the DPRINTF
statements show that it's actually working at the same cycle, how and why?
2. What happens when I schedule above-mentioned event say at tick 100? Will
the Gem5 calculates the curTick+TimeRequiredToCompleteThisEvent and log the
stats? If not please let me know how to actually make the Gem5 take this
time into consideration when it writes the stats?
3. Is there any way to visually see the eventq? (I tried to look at this
queue using GDB, but it's giving some address which I could not understand
what it actually means)

Thanks in advance,
Aj.
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

[gem5-users] Ruby functional read fails and potential fix

2020-04-09 Thread Shehab Elsayed
Hello All,

I was running some experiments and I ran into a problem with ruby where a
functional read was failing. After some investigation I found that the
reason was that the functional read was trying to read a line that was in a
MaybeStale state (no ReadOnly or ReadWrite versions).

I implemented a fix which so far seems to be working fine but I am not sure
if there is a deeper problem that needs fixing or if my fix could present
future problems.

I am running Full System simulations with ARM ISA and MESI_Three_Level.

Here is my fix (I have marked new lines with //--NEW--//):
Basically what this fix does is perform the functional read from the
controller that has the line in the MaybeStale state if no ReadOnly or
ReadWrite versions in any controller.

bool
RubySystem::functionalRead(PacketPtr pkt)
{
Addr address(pkt->getAddr());
Addr line_address = makeLineAddress(address);

AccessPermission access_perm = AccessPermission_NotPresent;
int num_controllers = m_abs_cntrl_vec.size();

DPRINTF(RubySystem, "Functional Read request for %#x\n", address);

unsigned int num_ro = 0;
unsigned int num_rw = 0;
unsigned int num_busy = 0;
unsigned int num_backing_store = 0;
unsigned int num_invalid = 0;
unsigned int num_maybe_stale = 0;//--NEW--//

// In this loop we count the number of controllers that have the given
// address in read only, read write and busy states.
for (unsigned int i = 0; i < num_controllers; ++i) {

// Ignore ATD controllers for functional reads
if (m_abs_cntrl_vec[i]->getType() == MachineType_ATD) {
continue;
}

access_perm = m_abs_cntrl_vec[i]->
getAccessPermission(line_address);
if (access_perm == AccessPermission_Read_Only)
num_ro++;
else if (access_perm == AccessPermission_Read_Write)
num_rw++;
else if (access_perm == AccessPermission_Busy)
num_busy++;
else if (access_perm == AccessPermission_Backing_Store)
// See RubySlicc_Exports.sm for details, but Backing_Store is
meant
// to represent blocks in memory *for Broadcast/Snooping
protocols*,
// where memory has no idea whether it has an exclusive copy of
data
// or not.
num_backing_store++;
else if (access_perm == AccessPermission_Invalid ||
 access_perm == AccessPermission_NotPresent)
num_invalid++;
else if (access_perm == AccessPermission_Maybe_Stale)
//--NEW--//

num_maybe_stale++;
//--NEW--//
}

// This if case is meant to capture what happens in a Broadcast/Snoop
// protocol where the block does not exist in the cache hierarchy. You
// only want to read from the Backing_Store memory if there is no copy
in
// the cache hierarchy, otherwise you want to try to read the RO or RW
// copies existing in the cache hierarchy (covered by the else
statement).
// The reason is because the Backing_Store memory could easily be
stale, if
// there are copies floating around the cache hierarchy, so you want to
read
// it only if it's not in the cache hierarchy at all.
if (num_invalid == (num_controllers - 1) && num_backing_store == 1) {
DPRINTF(RubySystem, "only copy in Backing_Store memory, read from
it\n");
for (unsigned int i = 0; i < num_controllers; ++i) {
access_perm =
m_abs_cntrl_vec[i]->getAccessPermission(line_address);
if (access_perm == AccessPermission_Backing_Store) {
m_abs_cntrl_vec[i]->functionalRead(line_address, pkt);
return true;
}
}
} else if (num_ro > 0 || num_rw >= 1 || num_maybe_stale > 0)
{  //--NEW--//
if (num_rw > 1) {
// We iterate over the vector of abstract controllers, and
return
// the first copy found. If we have more than one cache with
block
// in writable permission, the first one found would be
returned.
warn("More than one Abstract Controller with RW permission for "
 "addr: %#x on cacheline: %#x.", address, line_address);
}
// In Broadcast/Snoop protocols, this covers if you know the block
// exists somewhere in the caching hierarchy, then you want to read
any
// valid RO or RW block.  In directory protocols, same thing, you
want
// to read any valid readable copy of the block.
DPRINTF(RubySystem, "num_busy = %d, num_ro = %d, num_rw = %d\n",
num_busy, num_ro, num_rw);

// In this loop, we try to figure which controller has a read only
or
// a read write copy of the given address. Any valid copy would
suffice
// for a functional read.
// Sometimes the functional read is to a line that has recently
// transitioned to MaybeStale state and no other controller has it
in
// a ReadO

Re: [gem5-users] gem5 gcn3 (GPU) power model

2020-04-09 Thread Daniel Gerzhoy
Thank you both!

Andreas, I'm currently in a writing phase (boo) but I definitely have
questions when I start getting into it.

Best regards,

Dan

On Wed, Apr 8, 2020 at 12:03 PM Andreas Brokalakis 
wrote:

> Hi Dan,
>
> in this repository: https://github.com/kingmouf/cmcpat  I have added a
> modified version of McPAT (it details the changes) as well as necessary
> templates and scripts to work with the November 2019 version of gem5. I
> have not been able to track if the newest version of gem5 breaks any of the
> conversion scripts.
>
> gem5 and McPAT can work together... sort of. McPAT requires some low level
> implementation details (e.g. lithography) that gem5 does not model. In
> addition certain aspects of the design that gem5 models are embedded in the
> code of gem5 itself and are not made directly available to output files
> (though indirectly you may be able to figure out most). I'll try to guide
> you a little bit if you use my approach - but you can use any other
> approach and most of what I write will apply. In my repository you can find
> a script to convert gem5 output to a proper input xml file for McPAT. The
> following more or less describe the process:
>
> 1. Execute gem5 with the system that you are trying to model and gather
> the results. You are going to need two files:
> - config.json from where you will be able to draw configuration /
> architectural information about the system you are modelling. This is
> information that McPAT requires in order to build a circuit model of your
> system.
> - stats.txt that contain the statistics of the execution run and McPAT
> requires in order to calculate power/energy based on circuit activity.
>
> 2. McPAT requires as input an xml file that describes the processor and
> also the activities of each unit. You need to create a xml template file
> that describes the processor and has some hardwired information that you
> insert (that is the circuit level info that gem5 does not model at all) and
> then provide the proper hooks for the conversion scripts that will read the
> gem5 output files and fill the xml template with the proper numerical
> values. McPAT provides some processor template files that can be your
> starting point and in my repository you can find additional template files
> for specific cases (e.g. ARM in order processors compatible with the ones
> gem5 models). Please refer to these template files in order to get a grasp
> on how you make them.
>  - open for example inorder_arm.xml file.
>  - Check for example this line: 
>Here you should specify the tech node that the processor is going
> to be implemented. This is the kind of information that gem5 cannot
> provide. Use your own based on what you are trying to do. Here I just used
> 28nm.
>  - Check for example this line: 
>Here you should specify the overall number of cycles that your
> program has taken in order to be executed. gem5 models this information and
> it is located in the stats.txt file. For my test system, in the stats.txt
> file there is a line:
>system.cpu.numCycles704089210
> # number of cpu cycles simulated
>that has this information. So by placing the value "
> stats.system.cpu.numCycles" in the template xml file, I instruct the
> conversion script to retrieve the value from the stats.txt file and there
> it should search for the system.cpu.numCycles entry.
>  - Check for example this line:  value="config.system.cpu.fetch2InputBufferSize"/>
>Similarly to the previous example, this is an architectural
> information, so I instruct the conversion script to fetch this value from
> the config.json file and then retrieve the value from the
> system->cpu->fetch2InputBufferSize entry.
>
> 3. Once a template xml file has been made you can call the conversion
> script that upon execution will replace the directives with actual values.
> It will produce an xml file that you can then use with McPAT.
>
> While the process seems rather tedious, remember that you only need to do
> this once per system you are modelling and then it is totally
> straightforward.
>
> I hoped I helped a little bit. Please check the documentation in my
> repository as well.
>
> Best,
> Andreas
>
> On Wed, Apr 8, 2020 at 5:39 PM Daniel Gerzhoy 
> wrote:
>
>> Hello,
>>
>> I'm wondering if there is a power model associated with the GPU model in
>> the GCN3 branch.
>>
>> Actually is it still a branch? Or is it in the main gem5 branch now? I'm
>> using the version that was in a separate branch a few months ago.
>>
>> Also if anyone could please point me at any documentation for using McPat
>> or other power estimation with gem5 in general that would be very
>> appreciated. I've found a little bit, but nothing comprehensive.
>>
>> Thanks,
>>
>> Dan Gerzhoy
>> ___
>> gem5-users mailing list
>> gem5-users@gem5.org
>> http://m5sim.org/cgi-bin/mailman/listin

Re: [gem5-users] Busybox on ARM SE mode

2020-04-09 Thread Ciro Santilli
There is an implemented syscall (setgid), you have to either implement
it, or ignore it (grep and modify the source there are many already
ignored) if that is not likely to matter. See also:
https://stackoverflow.com/questions/51256193/missing-syscalls-in-gem5-arm

On Thu, Apr 9, 2020 at 2:02 AM ABD ALRHMAN ABO ALKHEEL
 wrote:
>
> Hi All,
>
> I want to run sha256sum using busybox as in the command below but i git the 
> following error. Any help would be appreciated.
>
> The error:
> Global frequency set at 1 ticks per second
> warn: DRAM device capacity (8192 Mbytes) does not match the address range 
> assigned (512 Mbytes)
> 0: system.remote_gdb: listening for remote gdb on port 7000
>  REAL SIMULATION 
> info: Entering event queue @ 0.  Starting simulation...
> generateDisassembly
> warn: CP14 unimplemented crn[14], opc1[7], crm[15], opc2[7]
> fatal: syscall setgid (#214) unimplemented.
> Memory Usage: 721244 KBytes
>
>
>
> The command:
>
> build/ARM/gem5.opt configs/example/se.py -I 10 -c 
> /home/abdkhail/Downloads/busybox-android/busybox-android -o 'sha256sum 
> test.txt' --cpu-type=DerivO3CPU --caches
>
>
> ___
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users