Skip to content

Instantly share code, notes, and snippets.

@jepio
Last active December 9, 2022 15:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jepio/ac058dbede12cb24461747f5cf572b3d to your computer and use it in GitHub Desktop.
Save jepio/ac058dbede12cb24461747f5cf572b3d to your computer and use it in GitHub Desktop.
nSVM on KVM+hyperv
#!/bin/bash
setup() {
sudo sed -ie 's/# deb-src/deb-src/' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y make ccache gcc g++ python-is-python3
sudo apt-get build-dep -y qemu-system
sudo apt-get build-dep -y ovmf
export PATH="/usr/lib/ccache:$PATH"
export CCACHE_COMPRESS=true
pushd /mnt/
sudo mkdir -p $USER
sudo chown $USER $USER
pushd $USER
[ ! -d AMDSEV ] && git clone https://github.com/AMDESE/AMDSEV -b sev-snp-devel
pushd AMDSEV
# patch panic=-1 into the kernel cmdline
base64 -d <<EOF | patch -p1 --forward
ZGlmZiAtLWdpdCBhL2xhdW5jaC1xZW11LnNoIGIvbGF1bmNoLXFlbXUuc2gKaW5kZXggZjc1NDBi
NC4uNmE2NDQ3OSAxMDA3NTUKLS0tIGEvbGF1bmNoLXFlbXUuc2gKKysrIGIvbGF1bmNoLXFlbXUu
c2gKQEAgLTIzNyw3ICsyMzcsNyBAQCBmaQogIyBpZiAta2VybmVsIGFyZyBpcyBzcGVjaWZpZWQg
dGhlbiB1c2UgdGhlIGtlcm5lbCBwcm92aWRlZCBpbiBjb21tYW5kIGxpbmUgZm9yIGJvb3QKIGlm
IFsgIiR7S0VSTkVMX0ZJTEV9IiAhPSAiIiBdOyB0aGVuCiAJYWRkX29wdHMgIi1rZXJuZWwgJEtF
Uk5FTF9GSUxFIgotCWFkZF9vcHRzICItYXBwZW5kIFwiY29uc29sZT10dHlTMCBlYXJseXByaW50
az1zZXJpYWwgcm9vdD0vZGV2L3NkYTJcIiIKKwlhZGRfb3B0cyAiLWFwcGVuZCBcImNvbnNvbGU9
dHR5UzAgZWFybHlwcmludGs9c2VyaWFsIHJvb3Q9L2Rldi9zZGEyIHBhbmljPS0xXCIiCiAJWyAh
IC16ICR7SU5JVFJEX0ZJTEV9IF0gJiYgYWRkX29wdHMgIi1pbml0cmQgJHtJTklUUkRfRklMRX0i
CiBmaQogCg==
EOF
./build.sh ovmf
# first build fails
if ! ./build.sh qemu; then
# patch to make it buildable
pushd qemu
base64 -d <<EOF | patch -p1 --forward
ZGlmZiAtLWdpdCBhL2VicGYvZWJwZl9yc3MuYyBiL2VicGYvZWJwZl9yc3MuYwppbmRleCAxMThj
NjhkYTgzLi5jZWU2NThjMTU4IDEwMDY0NAotLS0gYS9lYnBmL2VicGZfcnNzLmMKKysrIGIvZWJw
Zi9lYnBmX3Jzcy5jCkBAIC00OSw3ICs0OSw3IEBAIGJvb2wgZWJwZl9yc3NfbG9hZChzdHJ1Y3Qg
RUJQRlJTU0NvbnRleHQgKmN0eCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBi
cGZfcHJvZ3JhbV9fc2V0X3NvY2tldF9maWx0ZXIocnNzX2JwZl9jdHgtPnByb2dzLnR1bl9yc3Nf
c3RlZXJpbmdfcHJvZyk7CisgICAgYnBmX3Byb2dyYW1fX3NldF90eXBlKHJzc19icGZfY3R4LT5w
cm9ncy50dW5fcnNzX3N0ZWVyaW5nX3Byb2csIEJQRl9QUk9HX1RZUEVfU09DS0VUX0ZJTFRFUik7
CiAKICAgICBpZiAocnNzX2JwZl9fbG9hZChyc3NfYnBmX2N0eCkpIHsKICAgICAgICAgdHJhY2Vf
ZWJwZl9lcnJvcigiZUJQRiBSU1MiLCAiY2FuIG5vdCBsb2FkIFJTUyBwcm9ncmFtIik7CmRpZmYg
LS1naXQgYS9ody9pMzg2L2FtZF9pb21tdS5jIGIvaHcvaTM4Ni9hbWRfaW9tbXUuYwppbmRleCA5
MjQyYTBkM2VkLi45MTk0ZDNiNTU2IDEwMDY0NAotLS0gYS9ody9pMzg2L2FtZF9pb21tdS5jCisr
KyBiL2h3L2kzODYvYW1kX2lvbW11LmMKQEAgLTg5Niw3ICs4OTYsNyBAQCBzdGF0aWMgdm9pZCBh
bWR2aV9wYWdlX3dhbGsoQU1EVklBZGRyZXNzU3BhY2UgKmFzLCB1aW50NjRfdCAqZHRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VVExCRW50cnkgKnJldCwgdW5zaWduZWQgcGVy
bXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHdhZGRyIGFkZHIpCiB7Ci0gICAgdW5z
aWduZWQgbGV2ZWwsIHByZXNlbnQsIHB0ZV9wZXJtcywgb2xkbGV2ZWw7CisgICAgdW5zaWduZWQg
bGV2ZWwsIHByZXNlbnQsIHB0ZV9wZXJtcywgb2xkbGV2ZWwgPSAwOwogICAgIHVpbnQ2NF90IHB0
ZSA9IGR0ZVswXSwgcHRlX2FkZHIsIHBhZ2VfbWFzazsKIAogICAgIC8qIG1ha2Ugc3VyZSB0aGUg
RFRFIGhhcyBUViA9IDEgKi8KZGlmZiAtLWdpdCBhL3FvYmplY3QvYmxvY2stcWRpY3QuYyBiL3Fv
YmplY3QvYmxvY2stcWRpY3QuYwppbmRleCAxNDg3Y2M1ZGQ4Li5iMjY1MjQ0MjljIDEwMDY0NAot
LS0gYS9xb2JqZWN0L2Jsb2NrLXFkaWN0LmMKKysrIGIvcW9iamVjdC9ibG9jay1xZGljdC5jCkBA
IC0yMjQsNyArMjI0LDcgQEAgdm9pZCBxZGljdF9hcnJheV9zcGxpdChRRGljdCAqc3JjLCBRTGlz
dCAqKmRzdCkKICAgICBmb3IgKGkgPSAwOyBpIDwgVUlOVF9NQVg7IGkrKykgewogICAgICAgICBR
T2JqZWN0ICpzdWJxb2JqOwogICAgICAgICBib29sIGlzX3N1YnFkaWN0OwotICAgICAgICBRRGlj
dCAqc3VicWRpY3Q7CisgICAgICAgIFFEaWN0ICpzdWJxZGljdCA9IE5VTEw7CiAgICAgICAgIGNo
YXIgaW5kZXhzdHJbMzJdLCBwcmVmaXhbMzJdOwogICAgICAgICBzaXplX3Qgc25wcmludGZfcmV0
OwogCmRpZmYgLS1naXQgYS91dGlsL2ZkbW9uLWlvX3VyaW5nLmMgYi91dGlsL2ZkbW9uLWlvX3Vy
aW5nLmMKaW5kZXggMTQ2MWRmYTQwNy4uY2IzZTA1N2IyZiAxMDA2NDQKLS0tIGEvdXRpbC9mZG1v
bi1pb191cmluZy5jCisrKyBiL3V0aWwvZmRtb24taW9fdXJpbmcuYwpAQCAtMTc5LDcgKzE3OSw3
IEBAIHN0YXRpYyB2b2lkIGFkZF9wb2xsX3JlbW92ZV9zcWUoQWlvQ29udGV4dCAqY3R4LCBBaW9I
YW5kbGVyICpub2RlKQogewogICAgIHN0cnVjdCBpb191cmluZ19zcWUgKnNxZSA9IGdldF9zcWUo
Y3R4KTsKIAotICAgIGlvX3VyaW5nX3ByZXBfcG9sbF9yZW1vdmUoc3FlLCBub2RlKTsKKyAgICBp
b191cmluZ19wcmVwX3BvbGxfcmVtb3ZlKHNxZSwgKHVpbnRwdHJfdClub2RlKTsKIH0KIAogLyog
QWRkIGEgdGltZW91dCB0aGF0IHNlbGYtY2FuY2VscyB3aGVuIGFub3RoZXIgY3FlIGJlY29tZXMg
cmVhZHkgKi8K
EOF
popd
./build.sh qemu
fi
popd
popd
popd
}
runtest() {
pushd /mnt/$USER/AMDSEV
mkdir -p logs
while sleep 1; do
sudo timeout 15s ./launch-qemu.sh -hda '' -mem 512 -smp 1 -kernel /boot/vmlinuz
cp stdout.log logs/$(date +%s).log
done
}
classify() {
set +x
pushd /mnt/$USER/AMDSEV/logs
while read file; do
tail -1 $file | grep -h .
done < <(find -type f) | sort | uniq -c
}
set -x
case "$1" in
setup)
setup
;;
test)
runtest
;;
classify)
classify
;;
"")
setup
runtest
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment