Skip to content

Commit c75b3be

Browse files
committed
fpga: fix a stuck startup bug
1 parent 3d02dfd commit c75b3be

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

src/test/csrc/common/mpool.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ class MemoryIdxPool {
153153

154154
size_t group_r_offset = 0; // The offset used by the current consumer
155155
size_t group_w_offset = 0; // The offset used by the current producer
156-
size_t read_count = 0;
156+
size_t read_count = MAX_IDX - 1;
157157
size_t write_count = 0;
158158
size_t write_next_count = 0;
159159

src/test/csrc/fpga/fpga_main.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,12 @@ int main(int argc, char *argv[]) {
5555
args_parsingniton(argc, argv);
5656

5757
simv_init();
58-
std::unique_lock<std::mutex> lock(simv_mtx);
59-
while (simv_result.load() == SIMV_RUN) {
60-
simv_cv.wait(lock);
58+
{
59+
std::unique_lock<std::mutex> lock(simv_mtx);
60+
xdma_device->start_transmit_thread();
61+
while (simv_result.load() == SIMV_RUN) {
62+
simv_cv.wait(lock);
63+
}
6164
}
6265
xdma_device->running = false;
6366
free(xdma_device);
@@ -136,7 +139,8 @@ void args_parsingniton(int argc, char *argv[]) {
136139
if (strcmp(argv[i], "--diff") == 0) {
137140
set_diff_ref_so(argv[++i]);
138141
} else if (strcmp(argv[i], "-i") == 0) {
139-
memcpy(work_load, argv[++i], sizeof(argv[++i]));
142+
i++;
143+
memcpy(work_load, argv[i], strlen(argv[i]));
140144
} else if (strcmp(argv[i], "--max-instrs") == 0) {
141145
max_instrs = std::stoul(argv[++i], nullptr, 16);
142146
}

src/test/csrc/fpga/xdma.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ void FpgaXdma::device_write(bool is_bypass, const char *workload, uint64_t addr,
7676
else
7777
fd = open(XDMA_USER, O_RDWR | O_SYNC);
7878
if (fd < 0) {
79-
printf("failed to open %s\n", is_bypass ? XDMA_BYPASS : XDMA_USER);
79+
printf("Failed to open %s\n", is_bypass ? XDMA_BYPASS : XDMA_USER);
8080
exit(-1);
8181
}
8282

0 commit comments

Comments
 (0)