diff --git a/.github/buildomat/jobs/build-and-test.sh b/.github/buildomat/jobs/build-and-test.sh index beeaa5d..6800656 100644 --- a/.github/buildomat/jobs/build-and-test.sh +++ b/.github/buildomat/jobs/build-and-test.sh @@ -53,6 +53,7 @@ git submodule update --init banner test ptime -m cargo test --verbose --locked +(cd amd-host-image-builder-config && ptime -m cargo test --verbose --locked) banner build ptime -m cargo build --release --verbose --locked diff --git a/Cargo.lock b/Cargo.lock index ce4c144..849ebaa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,8 +4,8 @@ version = 3 [[package]] name = "amd-apcb" -version = "0.1.5" -source = "git+https://github.com/oxidecomputer/amd-apcb.git?tag=v0.1.5#20988a6951102b44c84b1895f11004bd705788db" +version = "0.2.0" +source = "git+https://github.com/oxidecomputer/amd-apcb.git?tag=v0.2.0#d67bc076c7b715c0c9ab1cdb0e14f91213a6f4f8" dependencies = [ "byteorder", "four-cc", @@ -25,8 +25,8 @@ dependencies = [ [[package]] name = "amd-efs" -version = "0.3.0" -source = "git+ssh://git@github.com/oxidecomputer/amd-efs.git?tag=v0.3.0#dc3e0a6d4a56cff944546a0fe98cc87876f10764" +version = "0.3.1" +source = "git+ssh://git@github.com/oxidecomputer/amd-efs.git?tag=v0.3.1#d2b1f0567d63b41bd7195a5f509d3550bad2ee2a" dependencies = [ "amd-flash", "byteorder", @@ -76,6 +76,7 @@ dependencies = [ "amd-flash", "schemars", "serde", + "thiserror", ] [[package]] @@ -697,18 +698,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.43" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.43" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index debfb80..62c24f1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,8 +7,8 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -amd-apcb = { git = "https://github.com/oxidecomputer/amd-apcb.git", tag = "v0.1.5", features = ["std", "serde", "schemars"] } -amd-efs = { git = "ssh://git@github.com/oxidecomputer/amd-efs.git", tag = "v0.3.0", features = ["std", "serde", "schemars"] } +amd-apcb = { git = "https://github.com/oxidecomputer/amd-apcb.git", tag = "v0.2.0", features = ["std", "serde", "schemars"] } +amd-efs = { git = "ssh://git@github.com/oxidecomputer/amd-efs.git", tag = "v0.3.1", features = ["std", "serde", "schemars"] } amd-flash = { git = "ssh://git@github.com/oxidecomputer/amd-flash.git", tag = "v0.2.1", features = ["std"] } goblin = { version = "0.4", features = ["elf64", "endian_fd"] } #serde = { version = "1.0", default-features = false, features = ["derive"] } diff --git a/amd-host-image-builder-config/.gitignore b/amd-host-image-builder-config/.gitignore index 03314f7..e69de29 100644 --- a/amd-host-image-builder-config/.gitignore +++ b/amd-host-image-builder-config/.gitignore @@ -1 +0,0 @@ -Cargo.lock diff --git a/amd-host-image-builder-config/Cargo.lock b/amd-host-image-builder-config/Cargo.lock new file mode 100644 index 0000000..280db98 --- /dev/null +++ b/amd-host-image-builder-config/Cargo.lock @@ -0,0 +1,1255 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +dependencies = [ + "memchr", +] + +[[package]] +name = "amd-apcb" +version = "0.2.0" +source = "git+https://github.com/oxidecomputer/amd-apcb.git?tag=v0.2.0#d67bc076c7b715c0c9ab1cdb0e14f91213a6f4f8" +dependencies = [ + "byteorder", + "four-cc", + "memoffset", + "modular-bitfield", + "num-derive", + "num-traits", + "parse_int", + "paste", + "pre", + "schemars", + "serde", + "static_assertions", + "thiserror", + "zerocopy", +] + +[[package]] +name = "amd-efs" +version = "0.3.1" +source = "git+ssh://git@github.com/oxidecomputer/amd-efs.git?tag=v0.3.1#d2b1f0567d63b41bd7195a5f509d3550bad2ee2a" +dependencies = [ + "amd-flash", + "byteorder", + "fletcher", + "memoffset", + "modular-bitfield", + "num-derive", + "num-traits", + "paste", + "schemars", + "serde", + "strum", + "strum_macros", + "thiserror", + "zerocopy", +] + +[[package]] +name = "amd-flash" +version = "0.2.1" +source = "git+ssh://git@github.com/oxidecomputer/amd-flash.git?tag=v0.2.1#da41bd1c9a1c8ddc7e4da9ef014b2d9303046566" +dependencies = [ + "thiserror", +] + +[[package]] +name = "amd-host-image-builder-config" +version = "0.1.0" +dependencies = [ + "amd-apcb", + "amd-efs", + "amd-flash", + "json5", + "schemars", + "serde", + "serde_json", + "thiserror", + "valico", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "autocfg" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets", +] + +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +dependencies = [ + "bitflags", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dyn-clone" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" + +[[package]] +name = "fletcher" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c76f5d0a035d1543c4a3f2d2c84fe00214a6d688e4b8a1ac00a1699528bc6611" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding 2.3.0", +] + +[[package]] +name = "four-cc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "431a4c31778fde52b4400de34975f219eeca55cc829a9de157cd743a5b230ecb" +dependencies = [ + "schemars", + "serde", +] + +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + +[[package]] +name = "jsonway" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "effcb749443c905fbaef49d214f8b1049c240e0adb7af9baa0e201e625e4f9de" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.148" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" + +[[package]] +name = "memoffset" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "modular-bitfield" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" +dependencies = [ + "modular-bitfield-impl", + "static_assertions", +] + +[[package]] +name = "modular-bitfield-impl" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg 1.1.0", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "parse_int" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d695b79916a2c08bcff7be7647ab60d1402885265005a6658ffe6d763553c5a" +dependencies = [ + "num-traits", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pest" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a4d085fd991ac8d5b05a147b437791b4260b76326baf0fc60cf7c9c27ecd33" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bee7be22ce7918f641a33f08e3f43388c7656772244e2bbb2477f44cc9021a" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1511785c5e98d79a05e8a6bc34b4ac2168a0e3e92161862030ad84daa223141" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "pest_meta" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42f0394d3123e33353ca5e1e89092e533d2cc490389f2bd6131c43c634ebc5f" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "phf" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_shared" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pre" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87e7dc12cd3c36e90697e072bd70d886def4580fb268292022f89014dc9ea4b" +dependencies = [ + "cfg-if 0.1.10", + "pre-proc-macro", + "rustc_version", +] + +[[package]] +name = "pre-proc-macro" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a40339af35253b6b41a9e74f4c747e0948a9cb9cc9ea01d117d8440524560de3" +dependencies = [ + "cfg-if 0.1.10", + "lazy_static", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "publicsuffix" +version = "1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95b4ce31ff0a27d93c8de1849cf58162283752f065a90d508f1105fa6c9a213f" +dependencies = [ + "idna 0.2.3", + "url 2.4.1", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +dependencies = [ + "autocfg 0.1.8", + "libc", + "rand_chacha", + "rand_core 0.4.2", + "rand_hc", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg", + "rand_xorshift", + "winapi", +] + +[[package]] +name = "rand_chacha" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +dependencies = [ + "autocfg 0.1.8", + "rand_core 0.3.1", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" + +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rand_isaac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rand_jitter" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" +dependencies = [ + "libc", + "rand_core 0.4.2", + "winapi", +] + +[[package]] +name = "rand_os" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +dependencies = [ + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi", +] + +[[package]] +name = "rand_pcg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +dependencies = [ + "autocfg 0.1.8", + "rand_core 0.4.2", +] + +[[package]] +name = "rand_xorshift" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "regex" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "schemars" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 1.0.109", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "serde_derive_internals" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest", +] + +[[package]] +name = "siphasher" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strum" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bb" + +[[package]] +name = "strum_macros" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +dependencies = [ + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", +] + +[[package]] +name = "url" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +dependencies = [ + "form_urlencoded", + "idna 0.4.0", + "percent-encoding 2.3.0", +] + +[[package]] +name = "uuid" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" +dependencies = [ + "rand", +] + +[[package]] +name = "valico" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37e084b2c7df35a00cb40009b2d7fc12918e38f5515fcf8f96aefd457d558412" +dependencies = [ + "chrono", + "jsonway", + "phf", + "phf_codegen", + "publicsuffix", + "regex", + "serde", + "serde_json", + "url 1.7.2", + "uuid", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.37", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "zerocopy" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20707b61725734c595e840fb3704378a0cd2b9c74cc9e6e20724838fc6a1e2f9" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56097d5b91d711293a42be9289403896b68654625021732067eac7a4ca388a1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] diff --git a/amd-host-image-builder-config/Cargo.toml b/amd-host-image-builder-config/Cargo.toml index 8f325fe..429b724 100644 --- a/amd-host-image-builder-config/Cargo.toml +++ b/amd-host-image-builder-config/Cargo.toml @@ -6,11 +6,12 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -amd-apcb = { git = "https://github.com/oxidecomputer/amd-apcb.git", tag = "v0.1.5", features = ["std", "serde", "schemars"] } -amd-efs = { git = "ssh://git@github.com/oxidecomputer/amd-efs.git", tag = "v0.3.0", features = ["std", "serde", "schemars"] } +amd-apcb = { git = "https://github.com/oxidecomputer/amd-apcb.git", tag = "v0.2.0", features = ["std", "serde", "schemars"] } +amd-efs = { git = "ssh://git@github.com/oxidecomputer/amd-efs.git", tag = "v0.3.1", features = ["std", "serde", "schemars"] } amd-flash = { git = "ssh://git@github.com/oxidecomputer/amd-flash.git", tag = "v0.2.1", features = ["std"] } schemars = "0.8.8" serde = { version = "1.0", default-features = false, features = ["derive"] } +thiserror = "1.0.48" [dev-dependencies] serde_json = "1.0.78" diff --git a/amd-host-image-builder-config/src/lib.rs b/amd-host-image-builder-config/src/lib.rs index d6fd771..60c4587 100644 --- a/amd-host-image-builder-config/src/lib.rs +++ b/amd-host-image-builder-config/src/lib.rs @@ -18,11 +18,16 @@ use amd_efs::{ }; use amd_flash::Location; -#[derive(Debug)] +#[derive(Debug, thiserror::Error)] +#[non_exhaustive] pub enum Error { + #[error("Efs {0}")] Efs(amd_efs::Error), + #[error("incompatible executable")] IncompatibleExecutable, + #[error("Io {0}")] Io(std::io::Error), + #[error("image too big")] ImageTooBig, } @@ -34,7 +39,7 @@ impl From for Error { pub type Result = core::result::Result; -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(deny_unknown_fields)] #[derive(Default, Debug)] pub struct SerdePspDirectoryEntryBlob { @@ -44,7 +49,7 @@ pub struct SerdePspDirectoryEntryBlob { pub size: Option, // FIXME u64 } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(deny_unknown_fields)] pub struct SerdePspDirectoryEntryAttrs { #[serde(rename = "type")] @@ -56,7 +61,7 @@ pub struct SerdePspDirectoryEntryAttrs { pub rom_id: PspDirectoryRomId, } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "PspDirectoryEntry")] #[serde(deny_unknown_fields)] pub struct SerdePspDirectoryEntry { @@ -97,7 +102,7 @@ impl TryFromSerdeDirectoryEntryWithContext } } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "PspEntrySource")] #[serde(deny_unknown_fields)] pub enum SerdePspEntrySource { @@ -105,7 +110,7 @@ pub enum SerdePspEntrySource { BlobFile(PathBuf), } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "PspEntry")] #[serde(deny_unknown_fields)] pub struct SerdePspEntry { @@ -114,7 +119,7 @@ pub struct SerdePspEntry { } #[derive( - Default, serde::Serialize, serde::Deserialize, schemars::JsonSchema, + Clone, Default, serde::Serialize, serde::Deserialize, schemars::JsonSchema, )] #[serde(rename = "BhdDirectoryEntryBlob")] #[serde(deny_unknown_fields)] @@ -127,7 +132,7 @@ pub struct SerdeBhdDirectoryEntryBlob { pub ram_destination_address: Option, } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(deny_unknown_fields)] pub struct SerdeBhdDirectoryEntryAttrs { #[serde(rename = "type")] @@ -169,7 +174,7 @@ impl SerdeBhdDirectoryEntryAttrs { } } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "BhdDirectoryEntry")] #[serde(deny_unknown_fields)] pub struct SerdeBhdDirectoryEntry { @@ -210,7 +215,7 @@ impl TryFromSerdeDirectoryEntryWithContext } } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "BhdSource")] #[serde(deny_unknown_fields)] pub enum SerdeBhdSource<'a> { @@ -220,7 +225,7 @@ pub enum SerdeBhdSource<'a> { ApcbJson(amd_apcb::Apcb<'a>), } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "BhdEntry")] #[serde(deny_unknown_fields)] pub struct SerdeBhdEntry<'a> { @@ -229,28 +234,28 @@ pub struct SerdeBhdEntry<'a> { pub target: SerdeBhdDirectoryEntry, } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "PspDirectory")] #[serde(deny_unknown_fields)] pub struct SerdePspDirectory { pub entries: Vec, } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "PspComboDirectory")] #[serde(deny_unknown_fields)] pub struct SerdePspComboDirectory { pub directories: BTreeMap, } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema, Clone)] #[serde(deny_unknown_fields)] pub enum SerdePspDirectoryVariant { PspDirectory(SerdePspDirectory), PspComboDirectory(SerdePspComboDirectory), } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "BhdDirectory")] #[serde(deny_unknown_fields)] pub struct SerdeBhdDirectory<'a> { @@ -258,7 +263,7 @@ pub struct SerdeBhdDirectory<'a> { pub entries: Vec>, } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "BhdComboDirectory")] #[serde(deny_unknown_fields)] pub struct SerdeBhdComboDirectory<'a> { @@ -268,7 +273,7 @@ pub struct SerdeBhdComboDirectory<'a> { pub directories: BTreeMap>, } -#[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "BhdDirectoryVariant")] #[serde(deny_unknown_fields)] pub enum SerdeBhdDirectoryVariant<'a> { @@ -283,14 +288,14 @@ pub enum SerdeBhdDirectoryVariant<'a> { #[derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename = "Config")] #[serde(deny_unknown_fields)] -pub struct SerdeConfig<'a> { +struct RawSerdeConfig<'a> { pub processor_generation: ProcessorGeneration, #[serde(default)] - pub spi_mode_bulldozer: EfhBulldozerSpiMode, + pub spi_mode_bulldozer: Option, #[serde(default)] - pub spi_mode_zen_naples: EfhNaplesSpiMode, + pub spi_mode_zen_naples: Option, #[serde(default)] - pub spi_mode_zen_rome: EfhRomeSpiMode, + pub spi_mode_zen_rome: Option, pub psp: SerdePspDirectoryVariant, #[serde(bound( deserialize = "SerdeBhdDirectoryVariant<'a>: Deserialize<'de>" @@ -298,10 +303,205 @@ pub struct SerdeConfig<'a> { pub bhd: SerdeBhdDirectoryVariant<'a>, } +// The distinction SerdeConfig vs RawSerdeConfig is so we can validate +// combinations. +#[derive(Clone, serde::Serialize, serde::Deserialize)] +#[serde(try_from = "RawSerdeConfig")] +#[serde(into = "RawSerdeConfig")] +pub struct SerdeConfig<'a> { + // Note: same fields as above! + pub processor_generation: ProcessorGeneration, + pub spi_mode_bulldozer: Option, + pub spi_mode_zen_naples: Option, + pub spi_mode_zen_rome: Option, + pub psp: SerdePspDirectoryVariant, + pub bhd: SerdeBhdDirectoryVariant<'a>, +} + +impl<'a> schemars::JsonSchema for SerdeConfig<'a> { + fn schema_name() -> std::string::String { + RawSerdeConfig::schema_name() + } + fn json_schema( + gen: &mut schemars::gen::SchemaGenerator, + ) -> schemars::schema::Schema { + RawSerdeConfig::json_schema(gen) + } + fn is_referenceable() -> bool { + RawSerdeConfig::is_referenceable() + } +} + +impl<'a> From> for RawSerdeConfig<'a> { + fn from(config: SerdeConfig<'a>) -> Self { + Self { + processor_generation: config.processor_generation, + spi_mode_bulldozer: config.spi_mode_bulldozer, + spi_mode_zen_naples: config.spi_mode_zen_naples, + spi_mode_zen_rome: config.spi_mode_zen_rome, + psp: config.psp, + bhd: config.bhd, + } + } +} + +/// This validates whether the spi mode is compatible with the +/// processor generation (used to validate after deserialization +/// of a json5 config) +impl<'a> core::convert::TryFrom> for SerdeConfig<'a> { + type Error = Error; + fn try_from( + raw: RawSerdeConfig<'a>, + ) -> core::result::Result { + match raw.processor_generation { + ProcessorGeneration::Naples => { + if raw.spi_mode_bulldozer.is_none() + && raw.spi_mode_zen_naples.is_some() + && raw.spi_mode_zen_rome.is_none() + { + return Ok(SerdeConfig { + processor_generation: raw.processor_generation, + spi_mode_bulldozer: raw.spi_mode_bulldozer, + spi_mode_zen_naples: raw.spi_mode_zen_naples, + spi_mode_zen_rome: raw.spi_mode_zen_rome, + psp: raw.psp, + bhd: raw.bhd, + }); + } + } + ProcessorGeneration::Rome | ProcessorGeneration::Milan => { + if raw.spi_mode_bulldozer.is_none() + && raw.spi_mode_zen_naples.is_none() + && raw.spi_mode_zen_rome.is_some() + { + return Ok(SerdeConfig { + processor_generation: raw.processor_generation, + spi_mode_bulldozer: raw.spi_mode_bulldozer, + spi_mode_zen_naples: raw.spi_mode_zen_naples, + spi_mode_zen_rome: raw.spi_mode_zen_rome, + psp: raw.psp, + bhd: raw.bhd, + }); + } + } + } + Err(Error::Efs(amd_efs::Error::SpiModeMismatch)) + } +} + #[cfg(test)] mod tests { + use super::{ + ProcessorGeneration, RawSerdeConfig, SerdeBhdDirectory, + SerdeBhdDirectoryVariant, SerdeConfig, SerdePspDirectory, + SerdePspDirectoryVariant, + }; + use amd_efs::{ + EfhNaplesSpiMode, EfhRomeSpiMode, SpiFastSpeedNew, SpiNaplesMicronMode, + SpiReadMode, SpiRomeMicronMode, + }; + use std::convert::TryFrom; + + #[test] + #[should_panic(expected = "SpiModeMismatch")] + fn spi_mode_missing() { + SerdeConfig::try_from(RawSerdeConfig { + processor_generation: ProcessorGeneration::Milan, + psp: SerdePspDirectoryVariant::PspDirectory(SerdePspDirectory { + entries: vec![], + }), + bhd: SerdeBhdDirectoryVariant::BhdDirectory(SerdeBhdDirectory { + entries: vec![], + }), + spi_mode_bulldozer: None, + spi_mode_zen_naples: None, + spi_mode_zen_rome: None, + }) + .unwrap(); + } + + #[test] + fn spi_mode_milan_ok() { + SerdeConfig::try_from(RawSerdeConfig { + processor_generation: ProcessorGeneration::Milan, + psp: SerdePspDirectoryVariant::PspDirectory(SerdePspDirectory { + entries: [].to_vec(), + }), + bhd: SerdeBhdDirectoryVariant::BhdDirectory(SerdeBhdDirectory { + entries: [].to_vec(), + }), + spi_mode_bulldozer: None, + spi_mode_zen_naples: None, + spi_mode_zen_rome: Some(EfhRomeSpiMode { + read_mode: SpiReadMode::Normal33_33MHz, + fast_speed_new: SpiFastSpeedNew::_33_33MHz, + micron_mode: SpiRomeMicronMode::SupportMicron, + }), + }) + .unwrap(); + } + #[test] - fn it_works() { - assert_eq!(2 + 2, 4); + fn spi_mode_rome_ok() { + SerdeConfig::try_from(RawSerdeConfig { + processor_generation: ProcessorGeneration::Rome, + psp: SerdePspDirectoryVariant::PspDirectory(SerdePspDirectory { + entries: [].to_vec(), + }), + bhd: SerdeBhdDirectoryVariant::BhdDirectory(SerdeBhdDirectory { + entries: [].to_vec(), + }), + spi_mode_bulldozer: None, + spi_mode_zen_naples: None, + spi_mode_zen_rome: Some(EfhRomeSpiMode { + read_mode: SpiReadMode::Normal33_33MHz, + fast_speed_new: SpiFastSpeedNew::_33_33MHz, + micron_mode: SpiRomeMicronMode::SupportMicron, + }), + }) + .unwrap(); + } + + #[test] + #[should_panic(expected = "SpiModeMismatch")] + fn spi_mode_naples_not_ok() { + SerdeConfig::try_from(RawSerdeConfig { + processor_generation: ProcessorGeneration::Naples, + psp: SerdePspDirectoryVariant::PspDirectory(SerdePspDirectory { + entries: [].to_vec(), + }), + bhd: SerdeBhdDirectoryVariant::BhdDirectory(SerdeBhdDirectory { + entries: [].to_vec(), + }), + spi_mode_bulldozer: None, + spi_mode_zen_naples: None, + spi_mode_zen_rome: Some(EfhRomeSpiMode { + read_mode: SpiReadMode::Normal33_33MHz, + fast_speed_new: SpiFastSpeedNew::_33_33MHz, + micron_mode: SpiRomeMicronMode::SupportMicron, + }), + }) + .unwrap(); + } + + #[test] + fn spi_mode_naples_ok() { + SerdeConfig::try_from(RawSerdeConfig { + processor_generation: ProcessorGeneration::Naples, + psp: SerdePspDirectoryVariant::PspDirectory(SerdePspDirectory { + entries: [].to_vec(), + }), + bhd: SerdeBhdDirectoryVariant::BhdDirectory(SerdeBhdDirectory { + entries: [].to_vec(), + }), + spi_mode_bulldozer: None, + spi_mode_zen_naples: Some(EfhNaplesSpiMode { + read_mode: SpiReadMode::Normal33_33MHz, + fast_speed_new: SpiFastSpeedNew::_33_33MHz, + micron_mode: SpiNaplesMicronMode::DummyCycle, + }), + spi_mode_zen_rome: None, + }) + .unwrap(); } } diff --git a/etc/milan-ethanol-x-1.0.0.1.efs.json5 b/etc/milan-ethanol-x-1.0.0.1.efs.json5 index ff18b9e..8af3ea6 100644 --- a/etc/milan-ethanol-x-1.0.0.1.efs.json5 +++ b/etc/milan-ethanol-x-1.0.0.1.efs.json5 @@ -1,5 +1,10 @@ { processor_generation: "Milan", + spi_mode_zen_rome: { + fast_speed_new: "16.66 MHz", + read_mode: "Normal up to 33.33 MHz", + micron_mode: "SupportMicron" + }, psp: { PspDirectory: { entries: [ diff --git a/etc/milan-ethanol-x-1.0.0.2.efs.json5 b/etc/milan-ethanol-x-1.0.0.2.efs.json5 index af1f0be..9aa0628 100644 --- a/etc/milan-ethanol-x-1.0.0.2.efs.json5 +++ b/etc/milan-ethanol-x-1.0.0.2.efs.json5 @@ -1,5 +1,10 @@ { processor_generation: "Milan", + spi_mode_zen_rome: { + fast_speed_new: "16.66 MHz", + read_mode: "Normal up to 33.33 MHz", + micron_mode: "SupportMicron" + }, psp: { PspDirectory: { entries: [ diff --git a/etc/milan-ethanol-x-1.0.0.4.efs.json5 b/etc/milan-ethanol-x-1.0.0.4.efs.json5 index e213b1d..d291527 100644 --- a/etc/milan-ethanol-x-1.0.0.4.efs.json5 +++ b/etc/milan-ethanol-x-1.0.0.4.efs.json5 @@ -1,5 +1,10 @@ { processor_generation: "Milan", + spi_mode_zen_rome: { + fast_speed_new: "16.66 MHz", + read_mode: "Normal up to 33.33 MHz", + micron_mode: "SupportMicron" + }, psp: { PspDirectory: { entries: [ diff --git a/etc/milan-ethanol-x-1.0.0.9.efs.json5 b/etc/milan-ethanol-x-1.0.0.9.efs.json5 index a8b8f21..8209838 100644 --- a/etc/milan-ethanol-x-1.0.0.9.efs.json5 +++ b/etc/milan-ethanol-x-1.0.0.9.efs.json5 @@ -1,5 +1,10 @@ { processor_generation: "Milan", + spi_mode_zen_rome: { + fast_speed_new: "16.66 MHz", + read_mode: "Normal up to 33.33 MHz", + micron_mode: "SupportMicron" + }, psp: { PspDirectory: { entries: [ diff --git a/etc/milan-ethanol-x-1.0.0.a.efs.json5 b/etc/milan-ethanol-x-1.0.0.a.efs.json5 index 2eb36fa..d8c8df4 100644 --- a/etc/milan-ethanol-x-1.0.0.a.efs.json5 +++ b/etc/milan-ethanol-x-1.0.0.a.efs.json5 @@ -1,5 +1,10 @@ { processor_generation: "Milan", + spi_mode_zen_rome: { + fast_speed_new: "16.66 MHz", + read_mode: "Normal up to 33.33 MHz", + micron_mode: "SupportMicron" + }, psp: { PspDirectory: { entries: [ diff --git a/etc/milan-ethanol-x.efs.json5 b/etc/milan-ethanol-x.efs.json5 index ff40ccf..f154d64 100644 --- a/etc/milan-ethanol-x.efs.json5 +++ b/etc/milan-ethanol-x.efs.json5 @@ -1,5 +1,10 @@ { processor_generation: "Milan", + spi_mode_zen_rome: { + fast_speed_new: "16.66 MHz", + read_mode: "Normal up to 33.33 MHz", + micron_mode: "SupportMicron" + }, psp: { PspDirectory: { entries: [ diff --git a/etc/milan-gimlet-b-1.0.0.1.efs.json5 b/etc/milan-gimlet-b-1.0.0.1.efs.json5 index 785f04e..26e5e64 100644 --- a/etc/milan-gimlet-b-1.0.0.1.efs.json5 +++ b/etc/milan-gimlet-b-1.0.0.1.efs.json5 @@ -1,5 +1,10 @@ { processor_generation: "Milan", + spi_mode_zen_rome: { + fast_speed_new: "16.66 MHz", + read_mode: "Normal up to 33.33 MHz", + micron_mode: "SupportMicron" + }, psp: { PspDirectory: { entries: [ diff --git a/etc/milan-gimlet-b.efs.json5 b/etc/milan-gimlet-b.efs.json5 index 8124ae2..bd97627 100644 --- a/etc/milan-gimlet-b.efs.json5 +++ b/etc/milan-gimlet-b.efs.json5 @@ -1,5 +1,10 @@ { processor_generation: "Milan", + spi_mode_zen_rome: { + fast_speed_new: "16.66 MHz", + read_mode: "Normal up to 33.33 MHz", + micron_mode: "SupportMicron" + }, psp: { PspDirectory: { entries: [ diff --git a/etc/rome-ethanol-x.efs.json5 b/etc/rome-ethanol-x.efs.json5 index 59d25fa..255827b 100644 --- a/etc/rome-ethanol-x.efs.json5 +++ b/etc/rome-ethanol-x.efs.json5 @@ -1,5 +1,10 @@ { processor_generation: "Rome", + spi_mode_zen_rome: { + fast_speed_new: "16.66 MHz", + read_mode: "Normal up to 33.33 MHz", + micron_mode: "SupportMicron" + }, psp: { PspDirectory: { entries: [ diff --git a/src/main.rs b/src/main.rs index 4c96305..6296f4d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,6 +39,7 @@ use amd_host_image_builder_config::SerdeConfig; #[test] fn test_bitfield_serde() { let config = r#"{ + "spi_block_size": 5, "max_size": 2, "base_address": 3, "address_mode": "PhysicalAddress" diff --git a/test-inputs/Milan-new.efs.json5 b/test-inputs/Milan-new.efs.json5 index 5cd8a86..6aa89ad 100644 --- a/test-inputs/Milan-new.efs.json5 +++ b/test-inputs/Milan-new.efs.json5 @@ -1,5 +1,10 @@ { processor_generation: "Milan", + spi_mode_zen_rome: { + fast_speed_new: "16.66 MHz", + read_mode: "Normal up to 33.33 MHz", + micron_mode: "SupportMicron" + }, psp: { PspDirectory: { entries: [ diff --git a/test-inputs/Milan.efs.json5 b/test-inputs/Milan.efs.json5 index 7b7bd1c..2e25fd0 100644 --- a/test-inputs/Milan.efs.json5 +++ b/test-inputs/Milan.efs.json5 @@ -1,5 +1,10 @@ { processor_generation: "Milan", + spi_mode_zen_rome: { + fast_speed_new: "16.66 MHz", + read_mode: "Normal up to 33.33 MHz", + micron_mode: "SupportMicron" + }, psp: { PspDirectory: { entries: [