From 2751030e91b0b19cceb65f1ade800f5d60956b78 Mon Sep 17 00:00:00 2001 From: Artur Kowalski Date: Wed, 15 Nov 2023 10:35:27 +0100 Subject: [PATCH] Use pretrained firmware for tests on MSI Z690 DDR5 --- .github/workflows/build.yml | 18 ++++++++++++++---- ci/msi_ms7d25_ddr5_pretrained | Bin 0 -> 131072 bytes 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 ci/msi_ms7d25_ddr5_pretrained diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index be05c7415a3..3e171d7b29d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -66,13 +66,17 @@ jobs: run: | cp build/coreboot.rom build/coreboot_serial_enabled.rom build/util/cbfstool/cbfstool build/coreboot_serial_enabled.rom write -r SMMSTORE -f ci/smmstore-serial-enabled + + if [ -e "ci/${{ matrix.vendor }}_${{ matrix.model }}_pretrained" ]; then + cp build/coreboot_serial_enabled.rom build/coreboot_serial_enabled_pretrained.rom + build/util/cbfstool/cbfstool build/coreboot_serial_enabled_pretrained.rom write -r RW_MRC_CACHE -f ci/${{ matrix.vendor }}_${{ matrix.model }}_pretrained + fi - name: Save artifacts uses: actions/upload-artifact@v2 with: name: "dasharo-${{ matrix.vendor }}-${{ matrix.model }}-${{ matrix.build }}" path: | - build/coreboot.rom - build/coreboot_serial_enabled.rom + build/coreboot_*.rom retention-days: 30 build_protectli: environment: Protectli @@ -144,11 +148,17 @@ jobs: - name: Flash firmware shell: bash - run: ./ci/ci.sh -r validation -v "${{ matrix.vendor }}" -m "${{ matrix.model }}" -f firmware/coreboot_serial_enabled.rom flash + run: | + if [ -e firmware/coreboot_serial_enabled_pretrained.rom ]; then + fw_file="firmware/coreboot_serial_enabled_pretrained.rom" + else + fw_file="firmware/coreboot_serial_enabled.rom" + fi + ./ci/ci.sh -r validation -v "${{ matrix.vendor }}" -m "${{ matrix.model }}" -f "$fw_file" flash - name: Run tests shell: bash - run: ./ci/ci.sh -r validation -v "${{ matrix.vendor }}" -m "${{ matrix.model }}" -f firmware/coreboot_serial_enabled.rom test + run: ./ci/ci.sh -r validation -v "${{ matrix.vendor }}" -m "${{ matrix.model }}" test - name: Upload test results uses: actions/upload-artifact@v3 diff --git a/ci/msi_ms7d25_ddr5_pretrained b/ci/msi_ms7d25_ddr5_pretrained new file mode 100644 index 0000000000000000000000000000000000000000..b8cc920f1bb1aef60a671b57474be856be35ae3d GIT binary patch literal 131072 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 z