Skip to content

Commit

Permalink
feat: update ci, support check checkpoint with flash
Browse files Browse the repository at this point in the history
Signed-off-by: jiaxiaoyu <xyyy1420@gmail.com>
  • Loading branch information
xyyy1420 committed Dec 19, 2024
1 parent 9fa51a1 commit c52c05b
Show file tree
Hide file tree
Showing 6 changed files with 278 additions and 4 deletions.
13 changes: 13 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,19 @@ jobs:
bash ./scripts/restore_zstd.sh
make clean-all
#take cpt with flash
make clean-all
make riscv64-xs-cpt-flash_defconfig
make -j
bash ./scripts/take_zstd_from_flash.sh
make clean-all
#restore cpt from flash, with difftest
make riscv64-xs-diff-spike-withflash_defconfig
make -j
bash ./scripts/restore_zstd_from_flash.sh
make clean-all
basic-nutshell:
runs-on: nemu
continue-on-error: false
Expand Down
216 changes: 216 additions & 0 deletions configs/riscv64-xs-diff-spike-withflash_defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
#
# Automatically generated file; DO NOT EDIT.
# NEMU Configuration Menu
#
# CONFIG_ISA_x86 is not set
# CONFIG_ISA_mips32 is not set
# CONFIG_ISA_riscv32 is not set
CONFIG_ISA_riscv64=y
CONFIG_ISA="riscv64"
CONFIG_ILEN_MIN=2
CONFIG_ISA64=y

#
# ISA-dependent Options for riscv64
#
CONFIG_CLINT_MMIO=0x38000000
# CONFIG_MULTICORE_DIFF is not set
CONFIG_RVB=y
CONFIG_RV_CBO=y
CONFIG_RVK=y
CONFIG_RV_ZICOND=y
CONFIG_RV_ZFH=y
CONFIG_RV_ZFH_MIN=y
CONFIG_RV_ZFA=y
CONFIG_RVV=y
CONFIG_RV_ZVFH_MIN=y
CONFIG_RV_ZVFH=y
CONFIG_RV_DEBUG=y
CONFIG_RVH=y
# CONFIG_RV_SDEXT is not set
CONFIG_RV_SDTRIG=y
CONFIG_TDATA1_MCONTROL6=y
# CONFIG_TDATA1_ICOUNT is not set
# CONFIG_TDATA1_ITRIGGER is not set
# CONFIG_TDATA1_ETRIGGER is not set
CONFIG_TRIGGER_NUM=4
# CONFIG_SDTRIG_EXTRA is not set
# CONFIG_RV_AIA is not set
CONFIG_RV_SSTC=y
CONFIG_RV_SMRNMI=y
CONFIG_RV_SMDBLTRP=y
# CONFIG_MDT_INIT is not set
CONFIG_RV_SSDBLTRP=y
CONFIG_NMIE_INIT=y
CONFIG_RV_ZICNTR=y
CONFIG_RV_CSR_TIME=y
CONFIG_RV_ZIHINTPAUSE=y
CONFIG_RV_ZIHPM=y
CONFIG_RV_CSR_MCOUNTINHIBIT=y
CONFIG_RV_CSR_MCOUNTINHIBIT_CNTR=y
CONFIG_RV_CSR_MCOUNTINHIBIT_HPM=y
# CONFIG_RV_PMP_ENTRY_0 is not set
CONFIG_RV_PMP_ENTRY_16=y
# CONFIG_RV_PMP_ENTRY_64 is not set
CONFIG_RV_PMP_CSR=y
CONFIG_RV_PMP_NUM=16
CONFIG_RV_PMP_ACTIVE_NUM=16
CONFIG_PMP_GRANULARITY=12

#
# PMP Check Disabled when enabling PERF_OPT
#
CONFIG_RV_SVINVAL=y
# CONFIG_RV_SV39 is not set
CONFIG_RV_SV48=y
CONFIG_RV_SSNPM=y
CONFIG_RV_SMNPM=y
CONFIG_RV_SMMPM=y
CONFIG_RV_SVNAPOT=y
CONFIG_RV_SVPBMT=y
CONFIG_RV_SSCOFPMF=y
# CONFIG_RV_SHLCOFIDELEG is not set
# CONFIG_RV_SMSTATEEN is not set
CONFIG_MISA_UNCHANGEABLE=y
CONFIG_XTVEC_VECTORED_MODE=y
CONFIG_TVAL_EX_II=y
CONFIG_FS_CLEAN_STATE=y
CONFIG_USE_XS_ARCH_CSRS=y
# CONFIG_RVV_AGNOSTIC is not set
CONFIG_RV_ZCMOP=y
CONFIG_RV_ZIMOP=y
CONFIG_RV_ZCB=y
CONFIG_RESERVATION_SET_WIDTH=6
CONFIG_RV_ZACAS=y
# end of ISA-dependent Options for riscv64

CONFIG_ENGINE_INTERPRETER=y
CONFIG_ENGINE="interpreter"
CONFIG_MODE_SYSTEM=y
# CONFIG_MODE_USER is not set

#
# Build Options
#
CONFIG_CC_GCC=y
# CONFIG_CC_GPP is not set
# CONFIG_CC_CLANG is not set
CONFIG_CC="gcc"
# CONFIG_CC_O0 is not set
# CONFIG_CC_O1 is not set
CONFIG_CC_O2=y
# CONFIG_CC_O3 is not set
CONFIG_CC_OPT="-O2"
# CONFIG_CC_NATIVE_ARCH is not set
CONFIG_CC_LTO=y
# CONFIG_CC_DEBUG is not set
# CONFIG_CC_ASAN is not set
# end of Build Options

#
# Testing and Debugging
#
# CONFIG_DEBUG is not set
CONFIG_DIFFTEST=y
# CONFIG_DIFFTEST_REF_QEMU_DL is not set
# CONFIG_DIFFTEST_REF_QEMU_SOCKET is not set
# CONFIG_DIFFTEST_REF_KVM is not set
# CONFIG_DIFFTEST_REF_NEMU is not set
CONFIG_DIFFTEST_REF_SPIKE=y
# CONFIG_DIFFTEST_STORE_COMMIT is not set
CONFIG_DIFFTEST_REF_PATH="none"
CONFIG_DIFFTEST_REF_NAME="none"
# CONFIG_DETERMINISTIC is not set
# CONFIG_IQUEUE is not set
# CONFIG_MEMLOG is not set
# CONFIG_TRANSLOG is not set
# CONFIG_EXITLOG is not set
# CONFIG_TRACE_INST is not set
# CONFIG_TRACE_BB is not set
# CONFIG_SIMPOINT_LOG is not set
# CONFIG_BR_LOG is not set
# CONFIG_BR_LOG_OUTPUT is not set
# end of Testing and Debugging

#
# Memory Configuration
#
CONFIG_MBASE=0x80000000
# CONFIG_USE_SPARSEMM is not set
CONFIG_MSIZE=0x200000000
CONFIG_PADDRBITS=48
# CONFIG_STORE_LOG is not set
CONFIG_BBL_OFFSET_WITH_CPT=0x100000
# CONFIG_RESET_FROM_MMIO is not set
CONFIG_PC_RESET_OFFSET=0x0
CONFIG_USE_MMAP=y
CONFIG_MEM_COMPRESS=y
CONFIG_ENABLE_CONFIG_MMIO_SPACE=y
CONFIG_MMIO_SPACE_RANGE="0x0, 0x7FFFFFFF"
# end of Memory Configuration

CONFIG_DEVICE=y
CONFIG_HAS_PORT_IO=y
# CONFIG_HAS_SERIAL is not set
CONFIG_HAS_UARTLITE=y
CONFIG_UARTLITE_PORT=0x3f8
CONFIG_UARTLITE_MMIO=0x40600000
# CONFIG_UARTLITE_INPUT_FIFO is not set
CONFIG_UARTLITE_ASSERT_FOUR=y
# CONFIG_HAS_UART_SNPS is not set
CONFIG_HAS_PLIC=y
CONFIG_PLIC_ADDRESS=0x3c000000
CONFIG_HAS_TIMER=y
CONFIG_RTC_PORT=0x48
CONFIG_RTC_MMIO=0xa1000048
CONFIG_HAS_KEYBOARD=y
CONFIG_I8042_DATA_PORT=0x60
CONFIG_I8042_DATA_MMIO=0xa1000060
CONFIG_HAS_VGA=y
CONFIG_FB_ADDR=0x50000000
CONFIG_VGA_CTL_PORT=0x100
CONFIG_VGA_CTL_MMIO=0x40001000
# CONFIG_VGA_SHOW_SCREEN is not set
CONFIG_VGA_SIZE_400x300=y
# CONFIG_VGA_SIZE_800x600 is not set
# CONFIG_HAS_AUDIO is not set
# CONFIG_HAS_DISK is not set
CONFIG_HAS_SDCARD=y
CONFIG_SDCARD_CTL_MMIO=0x40002000
CONFIG_SDCARD_IMG_PATH=""
CONFIG_HAS_FLASH=y
CONFIG_FLASH_PRESET_CONTENT="0x0010029b,0x01f29293,0x00028067"
CONFIG_FLASH_START_ADDR=0x10000000
CONFIG_FLASH_SIZE=0x10000000
CONFIG_FLASH_IMG_PATH="$(NEMU_HOME)/resource/gcpt_restore/build/gcpt.bin"
# CONFIG_FPU_HOST is not set
CONFIG_FPU_SOFT=y
# CONFIG_FPU_NONE is not set
# CONFIG_AC_HOST is not set
# CONFIG_AC_SOFT is not set
CONFIG_AC_NONE=y
# CONFIG_VECTOR_AC_SOFT is not set
# CONFIG_MMIO_AC_SOFT is not set
# CONFIG_AMO_AC_SOFT is not set

#
# Processor difftest reference config
#
# CONFIG_SHARE is not set
# end of Processor difftest reference config

#
# Miscellaneous
#
CONFIG_TIMER_GETTIMEOFDAY=y
# CONFIG_TIMER_CLOCK_GETTIME is not set
# CONFIG_MEMORY_REGION_ANALYSIS is not set
CONFIG_REPORT_ILLEGAL_INSTR=y
CONFIG_RT_CHECK=y
CONFIG_PERF_OPT=y
CONFIG_TCACHE_SIZE=8192
CONFIG_BB_LIST_SIZE=1024
CONFIG_BB_POOL_SIZE=1024
# CONFIG_DISABLE_INSTR_CNT is not set
CONFIG_ENABLE_INSTR_CNT=y
# end of Miscellaneous
7 changes: 4 additions & 3 deletions scripts/restore_zstd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@
# See the Mulan PSL v2 for more details.
#**************************************************************************************/

cpt=`find output_top/test/linux/50000000 -name "*.zstd"`
mem_cpt=`find output_top/test/linux/50000000 -name "*_memory_.zstd"`

./build/riscv64-nemu-interpreter -b\
--diff ${SPIKE_SO}\
--restore -I 100000000 \
$cpt
-I 100000000 \
$mem_cpt
22 changes: 22 additions & 0 deletions scripts/restore_zstd_from_flash.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#***************************************************************************************
# Copyright (c) 2020-2022 Institute of Computing Technology, Chinese Academy of Sciences
#
# NEMU is licensed under Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
#
# See the Mulan PSL v2 for more details.
#**************************************************************************************/

mem_cpt=`find output_top/test/linux/50000000 -name "*_memory_.zstd"`
flash_cpt=`find output_top/test/linux/50000000 -name "*_flash_.zstd"`

./build/riscv64-nemu-interpreter -b \
--diff ${SPIKE_SO} \
--restore $flash_cpt -I 100000000 \
$mem_cpt
1 change: 0 additions & 1 deletion scripts/take_zstd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,4 @@
-C test \
-w linux \
-I 350000000 $V_WORKLOAD_HOME/OpenSBI_Linux6.6_h264ref_sss_vectorized \
--next-generation-checkpoint \
--checkpoint-format zstd
23 changes: 23 additions & 0 deletions scripts/take_zstd_from_flash.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#***************************************************************************************
# Copyright (c) 2020-2022 Institute of Computing Technology, Chinese Academy of Sciences
#
# NEMU is licensed under Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
#
# See the Mulan PSL v2 for more details.
#**************************************************************************************/

./build/riscv64-nemu-interpreter \
--cpt-interval 50000000 -u -b \
-D output_top \
-C test \
-w linux \
-I 350000000 $V_WORKLOAD_HOME/OpenSBI_Linux6.6_h264ref_sss_vectorized \
--next-generation-checkpoint \
--checkpoint-format zstd

0 comments on commit c52c05b

Please sign in to comment.