Bug fix 'refill row with bad data pattern'
This commit is contained in:
parent
a28d497f1b
commit
d67badb12e
@ -273,13 +273,18 @@ void fill_stripe(DRAMAddr d_addr, uint8_t val, ADDRMapper * mapper)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void fill_row(HammerSuite * suite, DRAMAddr * d_addr, HammerData data_patt)
|
void fill_row(HammerSuite *suite, DRAMAddr *d_addr, HammerData data_patt, int reverse)
|
||||||
{
|
{
|
||||||
if (p->vpat != (void *)NULL && p->tpat != (void *)NULL) {
|
if (p->vpat != (void *)NULL && p->tpat != (void *)NULL) {
|
||||||
fill_stripe(*d_addr, (uint8_t) * p->tpat, suite->mapper);
|
uint8_t pat = reverse ? *p->vpat : *p->tpat;
|
||||||
|
fill_stripe(*d_addr, pat, suite->mapper);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (reverse) {
|
||||||
|
data_patt = (HammerData)((int)data_patt ^(int)REVERSE);
|
||||||
|
}
|
||||||
|
|
||||||
switch (data_patt) {
|
switch (data_patt) {
|
||||||
case RANDOM:
|
case RANDOM:
|
||||||
// rows are already filled for random data patt
|
// rows are already filled for random data patt
|
||||||
@ -587,15 +592,14 @@ int free_triple_sided_test(HammerSuite * suite)
|
|||||||
h_patt.d_lst[2].bank = bk;
|
h_patt.d_lst[2].bank = bk;
|
||||||
// fill all the aggressor rows
|
// fill all the aggressor rows
|
||||||
for (int idx = 0; idx < 3; idx++) {
|
for (int idx = 0; idx < 3; idx++) {
|
||||||
fill_row(suite, &h_patt.d_lst[idx], cfg->d_cfg);
|
fill_row(suite, &h_patt.d_lst[idx], cfg->d_cfg, 0);
|
||||||
}
|
}
|
||||||
uint64_t time = hammer_it(&h_patt, mem);
|
uint64_t time = hammer_it(&h_patt, mem);
|
||||||
fprintf(stderr, "%ld ", time);
|
fprintf(stderr, "%ld ", time);
|
||||||
|
|
||||||
scan_rows(suite, &h_patt, 0);
|
scan_rows(suite, &h_patt, 0);
|
||||||
for (int idx = 0; idx < 3; idx++) {
|
for (int idx = 0; idx < 3; idx++) {
|
||||||
fill_row(suite, &h_patt.d_lst[idx], (HammerData) ((int)cfg->
|
fill_row(suite, &h_patt.d_lst[idx], cfg->d_cfg, 1);
|
||||||
d_cfg ^ (int) REVERSE));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
@ -646,7 +650,7 @@ int assisted_double_sided_test(HammerSuite * suite)
|
|||||||
h_patt.d_lst[2].bank = bk;
|
h_patt.d_lst[2].bank = bk;
|
||||||
// fill all the aggressor rows
|
// fill all the aggressor rows
|
||||||
for (int idx = 0; idx < 3; idx++) {
|
for (int idx = 0; idx < 3; idx++) {
|
||||||
fill_row(suite, &h_patt.d_lst[idx], cfg->d_cfg);
|
fill_row(suite, &h_patt.d_lst[idx], cfg->d_cfg, 0);
|
||||||
// fprintf(stderr, "d_addr: %s\n", dram_2_str(&h_patt.d_lst[idx]));
|
// fprintf(stderr, "d_addr: %s\n", dram_2_str(&h_patt.d_lst[idx]));
|
||||||
}
|
}
|
||||||
// fprintf(stderr, "d_addr: %s\n", dram_2_str(&h_patt.d_lst[idx]));
|
// fprintf(stderr, "d_addr: %s\n", dram_2_str(&h_patt.d_lst[idx]));
|
||||||
@ -655,7 +659,7 @@ int assisted_double_sided_test(HammerSuite * suite)
|
|||||||
|
|
||||||
scan_rows(suite, &h_patt, 0);
|
scan_rows(suite, &h_patt, 0);
|
||||||
for (int idx = 0; idx<3; idx++) {
|
for (int idx = 0; idx<3; idx++) {
|
||||||
fill_row(suite, &h_patt.d_lst[idx], (HammerData) ((int)cfg->d_cfg ^ (int)REVERSE));
|
fill_row(suite, &h_patt.d_lst[idx], cfg->d_cfg, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
@ -707,7 +711,7 @@ int n_sided_test(HammerSuite * suite)
|
|||||||
#endif
|
#endif
|
||||||
// fill all the aggressor rows
|
// fill all the aggressor rows
|
||||||
for (int idx = 0; idx < cfg->aggr_n; idx++) {
|
for (int idx = 0; idx < cfg->aggr_n; idx++) {
|
||||||
fill_row(suite, &h_patt.d_lst[idx], cfg->d_cfg);
|
fill_row(suite, &h_patt.d_lst[idx], cfg->d_cfg, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t time = hammer_it(&h_patt, mem);
|
uint64_t time = hammer_it(&h_patt, mem);
|
||||||
@ -715,8 +719,7 @@ int n_sided_test(HammerSuite * suite)
|
|||||||
|
|
||||||
scan_rows(suite, &h_patt, 0);
|
scan_rows(suite, &h_patt, 0);
|
||||||
for (int idx = 0; idx<h_patt.len; idx++) {
|
for (int idx = 0; idx<h_patt.len; idx++) {
|
||||||
fill_row(suite, &h_patt.d_lst[idx], (HammerData)
|
fill_row(suite, &h_patt.d_lst[idx], cfg->d_cfg, 1);
|
||||||
((int)cfg->d_cfg ^ (int)REVERSE));
|
|
||||||
#ifdef FLIPTABLE
|
#ifdef FLIPTABLE
|
||||||
print_end_attack();
|
print_end_attack();
|
||||||
#endif
|
#endif
|
||||||
@ -767,15 +770,14 @@ void fuzz(HammerSuite *suite, int d, int v)
|
|||||||
print_start_attack(&h_patt);
|
print_start_attack(&h_patt);
|
||||||
#endif
|
#endif
|
||||||
for (int idx = 0; idx < h_patt.len; idx++)
|
for (int idx = 0; idx < h_patt.len; idx++)
|
||||||
fill_row(suite, &h_patt.d_lst[idx], suite->cfg->d_cfg);
|
fill_row(suite, &h_patt.d_lst[idx], suite->cfg->d_cfg, 0);
|
||||||
|
|
||||||
uint64_t time = hammer_it(&h_patt, suite->mem);
|
uint64_t time = hammer_it(&h_patt, suite->mem);
|
||||||
fprintf(stderr, "%lu ",time);
|
fprintf(stderr, "%lu ",time);
|
||||||
|
|
||||||
scan_rows(suite, &h_patt, 0);
|
scan_rows(suite, &h_patt, 0);
|
||||||
for (int idx = 0; idx<h_patt.len; idx++) {
|
for (int idx = 0; idx<h_patt.len; idx++) {
|
||||||
fill_row(suite, &h_patt.d_lst[idx], (HammerData)
|
fill_row(suite, &h_patt.d_lst[idx], suite->cfg->d_cfg, 1);
|
||||||
((int)suite->cfg->d_cfg ^ (int)REVERSE));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FLIPTABLE
|
#ifdef FLIPTABLE
|
||||||
|
@ -25,6 +25,9 @@
|
|||||||
|
|
||||||
ProfileParams *p;
|
ProfileParams *p;
|
||||||
|
|
||||||
|
// DRAMLayout g_mem_layout = {{{0x4080,0x88000,0x110000,0x220000,0x440000,0x4b300}, 6}, 0xffff80000, ((1<<13)-1)};
|
||||||
|
// DRAMLayout g_mem_layout = { {{0x2040, 0x44000, 0x88000, 0x110000, 0x220000}, 5}, 0xffffc0000, ((1 << 13) - 1) };
|
||||||
|
// DRAMLayout g_mem_layout = {{{0x2040,0x24000,0x48000,0x90000},4}, 0xffffe0000, ((1<<13)-1)};
|
||||||
DRAMLayout g_mem_layout = {{{0x4080,0x48000,0x90000,0x120000,0x1b300}, 5}, 0xffffc0000, ROW_SIZE-1};
|
DRAMLayout g_mem_layout = {{{0x4080,0x48000,0x90000,0x120000,0x1b300}, 5}, 0xffffc0000, ROW_SIZE-1};
|
||||||
|
|
||||||
void read_config(SessionConfig * cfg, char *f_name)
|
void read_config(SessionConfig * cfg, char *f_name)
|
||||||
|
Loading…
Reference in New Issue
Block a user