summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2020-08-09 14:43:18 +0200
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2020-08-14 15:22:53 +0200
commit1a54bfa2fad20ce0f58917872f9c32e5e7673729 (patch)
tree8a550e77bc2ca655a5b993df90abf3e8f3c1240e
parentbcb88e0262192190a19ba2cadddbed41aae08bdb (diff)
[WIP] Update xenGNUtoo/xen-wip
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
-rw-r--r--pcr/xen/ChangeLog40
-rw-r--r--pcr/xen/PKGBUILD680
-rw-r--r--pcr/xen/ati-passthrough.patch415
-rw-r--r--pcr/xen/patch-ovmf-use-python2.patch22
-rw-r--r--pcr/xen/xen.install45
5 files changed, 229 insertions, 973 deletions
diff --git a/pcr/xen/ChangeLog b/pcr/xen/ChangeLog
deleted file mode 100644
index ced200187..000000000
--- a/pcr/xen/ChangeLog
+++ /dev/null
@@ -1,40 +0,0 @@
-2018-01-04 John Thomson
- * 4.10.0-2
- XSA-253 x86: memory leak with MSR emulation
-
-2017-12-13 John Thomson
- * 4.10.0-1
- Xen 4.10 release
-
-2017-12-04 John Thomson
- * 4.10.0rc8
- Xen 4.10 release candidate 8
-
-2017-12-01 John Thomson
- * 4.10.0rc7
- Xen 4.10 release candidate 7
-
-2017-11-23 John Thomson
- * 4.10.0rc6
- Xen 4.10 release candidate 6
-
-2017-11-18 John Thomson
- * 4.10.0rc5
- Xen 4.10 release candidate 5
- grub multiboot2 config generator updated
-
-2017-11-13 John Thomson
- * 4.10.0rc4
- Xen 4.10 release candidate 4
-
-2017-11-02 John Thomson
- * 4.10.0rc3
- Xen 4.10 release candidate 3
-
-2017-10-23 John Thomson
- * 4.10.0rc2
- Xen 4.10 release candidate 2
-
-2017-10-18 John Thomson
- * 4.10.0rc1
- Xen 4.10 release candidate 1
diff --git a/pcr/xen/PKGBUILD b/pcr/xen/PKGBUILD
index 3f4686e40..875e2f1ef 100644
--- a/pcr/xen/PKGBUILD
+++ b/pcr/xen/PKGBUILD
@@ -1,497 +1,229 @@
-# current version adapted from https://gitlab.com/archlinux-packages-johnth/xen/tree/xen-4.10
-
-# Maintainer (AUR): John Thomson <aur.xen at j0aur.mm.st>
-# Contributor (Arch): David Sutton <kantras - gmail.com>
-# Contributor (Arch): Shanmu Thiagaraja <sthiagaraja+AUR@prshanmu.com>
-# Contributor (Arch): Limao Luo
-# Contributor (Arch): Luceo
-# Contributor (Arch): Revellion
-# Contributor: André Silva <emulatorman@hyperbola.info>
-# Contributor: Márcio Silva <coadde@hyperbola.info>
-# Contributor: Isaac David <isacdaavid@at@isacdaavid@dot@info>
-
-#linux-4.7 EFI boot panic issue (patch linux)
-#http://lkml.iu.edu/hypermail/linux/kernel/1608.2/03448.html
-
-_build_stubdom="${build_stubdom:-false}"
-_system_seabios="${system_seabios:-false}"
-_build_debug="${build_debug:-false}"
-_build_livepatch="${build_livepatch:-false}"
-
-## use _build_stubdom=true to build xen with stubdom
-## use _system_seabios=true to use system seabios
-## this bios file is slightly different to the xen seabios
-## /usr/share/qemu/bios-256k.bin uses CONFIG_ROM_SIZE=256, and newer seabios
-## can force use this file through vm.cfg bios_path_override='/usr/share/qemu/bios-256k.bin'
-## use _build_debug=true to compile Xen with debug options
-## use _build_livepatch=true to compile Xen with livepatch support
-
-#_build_stubdom=true
-#_system_seabios=true
-#_build_debug=true
-#_build_livepatch=true
+# Maintainer (AUR): Sam Mulvey (Refutationalist) <archlinux@sammulvey.com>
+# Contributor (AUR): Filipe Laíns (FFY00) <lains@archlinux.org>
+
+# parabola changes and rationale:
+# - Removed hooks for nonfree microcode
+# - Removed the term "open source" in the package description as it is very
+# confusing: People being part of the free software movement would not know if
+# it if's a left behind which increases confusion and promotes Open
+# source, or if it is a strong criticism of the Xen project which implies that
+# it doesn't care about freedom at all. As I didn't research if that
+# was relevant, true or false, I preferred to remove that term.
+
+# Build Options
+_build_stubdom=${build_stubdom:-true}
+
+# Check http://xenbits.xen.org/xen-extfiles/ for updates
+_gmp=4.3.2
+_grub=0.97
+_ipxe=1dd56dbd11082fb622c2ed21cfaced4f47d798a6
+_lwip=1.3.0
+_newlib=1.16.0
+_pciutils=2.2.9
+_polarssl=1.1.4
+_tpm_emulator=0.7.4
+_zlib=1.2.3
pkgbase=xen
-pkgname=(xen{,-docs,-syms})
-_pkgname=xen
-pkgver=4.10.0
-_pkgver=${pkgver/rc/-rc}
-pkgrel=2
-pkgdesc='Virtual Machine Hypervisor & Tools (Parabola rebranded)'
-arch=(x86_64 armv7h)
-depends=(
- bridge-utils
- curl
- gnutls
- iproute2
- libaio
- libcacard
- libcap-ng
- libiscsi
- libnl
- libpng
- lzo
- pciutils
- python2
- sdl
- spice
- systemd
- usbredir
- yajl
- # seabios ovmf qemu
-)
-[[ "$CARCH" == 'x86_64' ]] && depends+=(
- lib32-glibc
-)
-[[ "$CARCH" == *'arm'* ]] && depends+=(
- dtc-overlay
-)
-[[ "$_system_seabios" == true ]] && depends+=(
- seabios
-)
-url='http://www.xenproject.org/'
+pkgname=("xen" "xen-docs")
+pkgver=4.13.1
+pkgrel=4
+pkgdesc='Type-1 or baremetal hypervisor'
+arch=('x86_64')
+url='https://xenproject.org/'
license=('GPL2')
-makedepends=(
- cmake
- figlet
- git
- markdown
- nasm
- ocaml-findlib
- spice-protocol
- wget
-)
-[[ "$CARCH" == 'x86_64' ]] && makedepends+=(
- bin86
- dev86
- gcc-multilib
- iasl
-)
-[[ "$CARCH" == 'i686' ]] && makedepends+=(
- bin86
- dev86
- iasl
-)
-
-## For building Xen EFI boot file.
-## mingw-w64-binutils only needed if
-## binutils not built with --enable-targets=x86_64-pep
-_binutils_efi=false
-
-if [[ "$CARCH" == 'x86_64' ]]; then
- if which ld 2>&1 > /dev/null; then
- _binutils_emulations="$(ld -V)"
- if [[ "$_binutils_emulations" == *'i386pep'* ]]; then
- _binutils_efi=true
- msg '#ld has efi support'
- else
- makedepends+=(
- mingw-w64-binutils
- )
- msg '#ld does not have efi support, using mingw'
- fi
- else
- true
- fi
-fi
+makedepends=('zlib' 'python' 'ncurses' 'openssl' 'libx11' 'libuuid.so' 'yajl' 'libaio' 'glib2' 'pkgconf'
+ 'bridge-utils' 'iproute2' 'inetutils' 'acpica' 'lib32-glibc' 'gnutls'
+ 'vde2' 'lzo' 'pciutils' 'sdl') # last line from namcap, these depends are the xen depends
+makedepends+=('wget' 'pandoc' 'valgrind' 'git' 'bin86' 'dev86' 'bison' 'gettext' 'flex' 'pixman' 'ocaml')
+
+options=(!buildflags)
+_source=("https://downloads.xenproject.org/release/xen/$pkgver/$pkgname-$pkgver.tar.gz"{,.sig}
+ "http://xenbits.xen.org/xen-extfiles/ipxe-git-$_ipxe.tar.gz"
+ "https://src.fedoraproject.org/rpms/xen/raw/master/f/xen.gcc10.fixes.patch"
+ "https://src.fedoraproject.org/rpms/xen/raw/master/f/xen.ocaml.4.10.patch"
+ "xen_gcc10_1_omnibus.patch"
+ "grub-mkconfig-helper"
+ "efi-xen.cfg"
+ "grub.conf"
+ "xen.conf"
+ "tmpfiles.conf"
+ "xen-ucode-extract.sh"
+ "xen-intel-ucode.hook"
+ "xen-amd-ucode.hook")
+
+_stubdom_source=("http://xenbits.xen.org/xen-extfiles/gmp-$_gmp.tar.bz2"
+ "http://xenbits.xen.org/xen-extfiles/grub-$_grub.tar.gz"
+ "http://xenbits.xen.org/xen-extfiles/lwip-$_lwip.tar.gz"
+ "http://xenbits.xen.org/xen-extfiles/newlib-$_newlib.tar.gz"
+ "http://xenbits.xen.org/xen-extfiles/pciutils-$_pciutils.tar.bz2"
+ "http://xenbits.xen.org/xen-extfiles/polarssl-$_polarssl-gpl.tgz"
+ "http://xenbits.xen.org/xen-extfiles/tpm_emulator-$_tpm_emulator.tar.gz"
+ "http://xenbits.xen.org/xen-extfiles/zlib-$_zlib.tar.gz")
+
+noextract=("ipxe-git-$_ipxe.tar.gz")
+
+
+if [ "${_build_stubdom}" == "true" ]; then
+ source=("${_source[@]}" "${_stubdom_source[@]}")
+
+ for file in "${_stubdom_source[@]}"; do
+ noextract+=( $(basename ${file}) )
+ done
+
+ _config_stubdom='--enable-stubdom'
+else
+ _config_stubdom='--disable-stubdom'
+fi
-options=(!buildflags !strip)
-changelog=ChangeLog
-##SeaBIOS & OVMF tags are in src/xen-*/tools/Config.mk
-##grep -rE '_(REVISION|VERSION|TAG)( \?| :){0,1}=' src/xen**/{Config.mk,stubdom/configure,tools/firmware/etherboot/Makefile}
-_git_tag_seabios='#tag=rel-1.10.2'
-_git_tag_ovmf='#tag=947f3737abf65fda63f3ffd97fddfa6986986868'
-_git_tag_ipxe='356f6c1b64d7a97746d1816cef8ca22bdd8d0b5d'
+sha512sums=('b56d20704155d98d803496cba83eb928e0f986a750831cd5600fc88d0ae772fe1456571654375054043d2da8daca255cc98385ebf08b1b1a75ecf7f4b7a0ee90'
+ 'SKIP'
+ '8120696ba6d79fd9189664deed9b0489825d8d1edf7b931023b3979b7b9f82248e5b808c4517036cd40a85442ddf51a8dcad3b05d7f3c3cc6650654d53da4050'
+ 'a93b8f33a38af4434fb1fa0e1e24d6374105f7c6088fc011eccdd5d5576ad78152bf27b675ef37471bd6b45468f75499c08e0bb937ee880557acba3edec98a07'
+ 'abacb29fde9b583648651a076cc8697538dea51d7fcc8c2160e951548e7022a0c83c89ddac3d1b3e46e05cb265e8fe14c0d9248d055e914909232180b42b194f'
+ 'eac4aaaaee05b8c0de88a78ba45329c4344b42c8d34651a6f7e99a7c7f16bfb9933a26fffbc5fb5d22e8561d07dfc13fe591aacb5f9a1d49aa725b253aad03ec'
+ '1e95d8767bb0d4df6d95ac1f29e7fa7a74b4483f8bb46efcf95e08ddc9481d17c8e315f095e8d5ebf6e319811099e083566acc45aa3803aa4de4e8d17af04180'
+ '1bbcbcd9fb8344a207409ec9f0064a45b726416f043f902ca587f5e4fa58497a759be4ffd584fa32318e960aa478864cc05ec026c444e8d27ca8e3248bd67420'
+ '72b58aa4e2d0ba1242d789000f9a9df0969461b5eca119f92a9d5980e4340b6b2f502aac42b62bb85c9f580067e6120b79e6a30f961e7aa88394738a3ba2cc4c'
+ 'ccaa2ff82e4203b11e5dec9aeccac2e165721d8067e0094603ecaa7a70b78c9eb9e2287a32687883d26b6ceae6f8d2ad7636ddf949eb658637b3ceaa6999711b'
+ '53ba61587cc2e84044e935531ed161e22c36d9e90b43cab7b8e63bcc531deeefacca301b5dff39ce89210f06f1d1e4f4f5cf49d658ed5d9038c707e3c95c66ef'
+ 'a9230ec6ef9636ac3f3e4b72b1747ee8c4648a8bf4bd8dc3650365e34f1f67474429dbdd24996907d277b0ff5f235574643e781cb3ff37da954e899ddadbe0d6'
+ '7a832de9b35f4b77ee80d33310b23886f4d48d1d42c3d6ef6f8e2b428bec7332a285336864b61cfa01d9a14c2023674015beb7527bd5849b069f2be88e6500cd'
+ '99921b94a29fa7988c7fb5c17da8e598e777c972d6cae8c8643c991e5ff911a25525345ea8913945313d5c49fecf9da8cc3b83d47ab03928341e917b304370a9'
+ '2e0b0fd23e6f10742a5517981e5171c6e88b0a93c83da701b296f5c0861d72c19782daab589a7eac3f9032152a0fc7eff7f5362db8fccc4859564a9aa82329cf'
+ 'c2bc9ffc8583aeae71cee9ddcc4418969768d4e3764d47307da54f93981c0109fb07d84b061b3a3628bd00ba4d14a54742bc04848110eb3ae8ca25dbfbaabadb'
+ '1465b58279af1647f909450e394fe002ca165f0ff4a0254bfa9fe0e64316f50facdde2729d79a4e632565b4500cf4d6c74192ac0dd3bc9fe09129bbd67ba089d'
+ '40eb96bbc6736a16b6399e0cdb73e853d0d90b685c967e77899183446664d64570277a633fdafdefc351b46ce210a99115769a1d9f47ac749d7e82837d4d1ac3'
+ '2b3d98d027e46d8c08037366dde6f0781ca03c610ef2b380984639e4ef39899ed8d8b8e4cd9c9dc54df101279b95879bd66bfd4d04ad07fef41e847ea7ae32b5'
+ '88da614e4d3f4409c4fd3bb3e44c7587ba051e3fed4e33d526069a67e8180212e1ea22da984656f50e290049f60ddca65383e5983c0f8884f648d71f698303ad'
+ '4928b5b82f57645be9408362706ff2c4d9baa635b21b0d41b1c82930e8c60a759b1ea4fa74d7e6c7cae1b7692d006aa5cb72df0c3b88bf049779aa2b566f9d35'
+ '021b958fcd0d346c4ba761bcf0cc40f3522de6186cf5a0a6ea34a70504ce9622b1c2626fce40675bc8282cf5f5ade18473656abc38050f72f5d6480507a2106e')
+
+
+validpgpkeys=('23E3222C145F4475FA8060A783FE14C957E82BD9') # Xen.org Xen tree code signing (signatures on the xen hypervisor and tools) <pgp@xen.org>
+
+
+# TODO: Setup users, dirs, etc.
-if [[ "$_build_stubdom" == true ]]; then
- if [[ "$CARCH" == *'arm'* ]]; then
- echo '####Compile settings error:'
- echo "#cannot build stubdom for $CARCH"
- _build_stubdom=false
- fi
-fi
+prepare() {
+ cd "${pkgbase}-${pkgver}"
-source=(
- "https://downloads.xenproject.org/release/$_pkgname/$_pkgver/$_pkgname-$_pkgver.tar.gz"{,.sig}
- "http://xenbits.xen.org/xen-extfiles/ipxe-git-$_git_tag_ipxe.tar.gz"
-
- 'seabios'::"git://xenbits.xen.org/seabios.git$_git_tag_seabios"
- 'ovmf'::"git://xenbits.xen.org/ovmf.git$_git_tag_ovmf"
- ##HTTP access
- #'seabios'::"git+http://xenbits.xen.org/git-http/seabios.git$_git_tag_seabios"
-
- ## Compile patches
- ati-passthrough.patch
- patch-ovmf-use-python2.patch
-
- ## Files
- xen.install
- 21_linux_xen_multiboot_arch
- efi-xen.cfg
- "tmpfiles.d-$_pkgname.conf"
-
- ## XSA patches
- https://xenbits.xen.org/xsa/xsa253.patch
-)
-
-if [[ "$_build_stubdom" == true ]]; then
- msg '#building with stubdom'
- source+=(
- http://xenbits.xen.org/xen-extfiles/lwip-1.3.0.tar.gz
- http://xenbits.xen.org/xen-extfiles/zlib-1.2.3.tar.gz
- http://xenbits.xen.org/xen-extfiles/newlib-1.16.0.tar.gz
- http://xenbits.xen.org/xen-extfiles/pciutils-2.2.9.tar.bz2
- http://xenbits.xen.org/xen-extfiles/polarssl-1.1.4-gpl.tgz
- http://xenbits.xen.org/xen-extfiles/grub-0.97.tar.gz
- http://xenbits.xen.org/xen-extfiles/tpm_emulator-0.7.4.tar.gz
- http://xenbits.xen.org/xen-extfiles/gmp-4.3.2.tar.bz2
- http://caml.inria.fr/pub/distrib/ocaml-3.11/ocaml-3.11.0.tar.gz
- )
-fi
+ patch -p1 < ../xen.gcc10.fixes.patch
+ patch -p1 < ../xen.ocaml.4.10.patch
+ patch -p1 < ../xen_gcc10_1_omnibus.patch
+ if [ "${_build_stubdom}" == "true" ]; then
-noextract=(
- "ipxe-git-$_git_tag_ipxe.tar.gz"
-)
-
-if [[ "$_build_stubdom" == true ]]; then
- noextract+=(
- lwip-1.3.0.tar.gz
- zlib-1.2.3.tar.gz
- newlib-1.16.0.tar.gz
- pciutils-2.2.9.tar.bz2
- polarssl-1.1.4-gpl.tgz
- grub-0.97.tar.gz
- tpm_emulator-0.7.4.tar.gz
- gmp-4.3.2.tar.bz2
- ocaml-3.11.0.tar.gz
- )
-fi
+ for file in "${_stubdom_source[@]}"; do
+ cp ../$(basename ${file}) stubdom/
+ done
-validpgpkeys=('23E3222C145F4475FA8060A783FE14C957E82BD9')
-#gpg --keyserver pgp.mit.edu --recv-key 23E3222C145F4475FA8060A783FE14C957E82BD9
-sha256sums=('0262a7023f8b12bcacfb0b25e69b2a63291f944f7683d54d8f33d4b2ca556844'
- 'SKIP'
- '251e5516d7de470c434ae5c393aacca2b61fb24d93770592a4a20add60b785c4'
- 'SKIP'
- 'SKIP'
- 'd93c2d5bcdf0c3e4c6e8efb357cb4b9d618209025361f5ccd9d03651a8acd7a3'
- '5fb65130f96d1728368a09042e55f622c14117572030ce2141bff4ae150e4a01'
- '55145ff9c1570257478842e4001b0dafe007d90f5b06db17231bc5bf20f3b23d'
- '8101316cfdf4b59e9c39b7372d4240a4552971c0fa53a4719bbb7a22f5622f4e'
- 'efb3c5713d556aa4890136ebf61502060cf90234fbd2e85701ad7a7ed2524fb1'
- '40e0760810a49f925f2ae9f986940b40eba477dc6d3e83a78baaae096513b3cf'
- 'bba1abb5e4368421de29385e37f8477bf3534d3ba3ff7e2aae9c9d3da53f1393')
-
-
-if [[ "$_build_stubdom" == true ]]; then
- sha256sums+=(
- #stubdom bits
- '772e4d550e07826665ed0528c071dd5404ef7dbe1825a38c8adbc2a00bca948f'
- '1795c7d067a43174113fdf03447532f373e1c6c57c08d61d9e4e9be5e244b05e'
- 'db426394965c48c1d29023e1cc6d965ea6b9a9035d8a849be2750ca4659a3d07'
- 'f60ae61cfbd5da1d849d0beaa21f593c38dac9359f0b3ddc612f447408265b24'
- '2d29fd04a0d0ba29dae6bd29fb418944c08d3916665dcca74afb297ef37584b6'
- '4e1d15d12dbd3e9208111d6b806ad5a9857ca8850c47877d36575b904559260b'
- '4e48ea0d83dd9441cc1af04ab18cd6c961b9fa54d5cbf2c2feee038988dea459'
- '936162c0312886c21581002b79932829aa048cfaf9937c6265aeaa14f1cd1775'
- 'ecdd4f8473ab0dee5d3acb5c0a31a4c1dd6aa12179895cf1903dd0f455c43a4f'
-
- #stubdom patches
- )
-fi
+ fi
-_xen_kconfig_debug=$(cat <<EOF
-CONFIG_DEBUG=y
-CONFIG_CRASH_DEBUG=y
-EOF
-)
-_xen_kconfig_livepatch=$(cat <<EOF
-CONFIG_LIVEPATCH=y
-EOF
-)
-
-_makevars=(
- LANG=C
- PYTHON=python2
-)
+ cp ../ipxe-git-$_ipxe.tar.gz tools/firmware/etherboot/ipxe.tar.gz
-prepare() {
- cd "$_pkgname-$_pkgver/"
-
- ### Copy git sourced tools/firmware
- # move seabios into place
- mv --force "$srcdir/seabios" tools/firmware/seabios-dir-remote
- # move ovmf into place
- mv --force "$srcdir/ovmf" tools/firmware/ovmf-dir-remote
-
- ### Patching
-
- # XSA Patches
- msg 'XSA patches'
- # Security Patches - Base
- patch -Np1 -i "$srcdir/xsa253.patch"
-
- # Security Patches - qemu-xen-traditional
- cd 'tools/qemu-xen-traditional/'
- cd '../../'
-
- # Security Patches - qemu-xen (upstream)
- cd 'tools/qemu-xen/'
- cd '../../'
-
-
- # Compile Patches
- msg 'Compile patches'
-
- # Build EFI binary with mingw
- if [[ "$_binutils_efi" != true ]]; then
- if $(stat /usr/x86_64-w64-mingw32/bin/ld >/dev/null 2>&1); then
- sed -i.bak '/ EFI_LD/s/LD/LD_EFI/' xen/arch/x86/Makefile
- sed -i.bak 's/LD/LD_EFI/' xen/arch/x86/efi/Makefile
- sed -i.bak '/EFI_MOUNTPOINT .*/aLD_EFI ?= $(LD)' xen/Makefile
- else
- echo '#Not capable of building xen.efi. Need either:'
- echo '#(preferred) binutils compiled with --enable-targets=x86_64-pep'
- echo '#or install mingw-w64-binutils'
- fi
- fi
-
- # OVMF Compile support (Pulls from GIT repo, so patching to patch after pull request)
- patch -Np1 -i "$srcdir/patch-ovmf-use-python2.patch"
- #mkdir -p tools/firmware/ovmf-patches
- #cp "$srcdir"/patch-inbuild-ovmf*.patch tools/firmware/ovmf-patches/
-
- # Uncomment line below if you want to enable ATI Passthrough support (some reported successes, untested with 4.4)
- #patch -Np1 -i "$srcdir/ati-passthrough.patch"
-
- ## Fix fixed rundir paths
- ## grep -Rl '\/var\/run\/xen' * 2> /dev/null
- _var_run_fixed_paths=(
- tools/hotplug/Linux/locking.sh
- tools/xenmon/xenbaked.c
- tools/xenmon/xenmon.py
- tools/pygrub/src/pygrub
- )
- sed -i 's:/var/run:/run:' ${_var_run_fixed_paths[@]}
-
- ## Fix python version in shebang
- msg 'Fix python shebang to python2'
- _python_files=( $(grep -Rlse '^#!/usr/bin/.*python$' || : ) )
- sed -Ei 's|(^#!.*/usr/bin/(env ){0,1})python$|\1python2|' ${_python_files[@]}
-
- ## Fix systemd-modules-load.d/xen.conf
- ## remove nonexistent modules
- find tools -iname 'configure*' -exec sed -i -E -e '
- /^LINUX_BACKEND_MODULES="$/,/^"$/ {
- #Address range where this variable is set
- /"/b; #Do noting if the line contains "
- /^xen-/!d; #Delete if does not start with xen
- s/scsibk/scsiback/; #Change scsibk to scsiback
- };' {} \;
-
- if [[ "$_build_stubdom" == true ]]; then
- # Copy supporting tarballs into place
- ln -s "$srcdir/lwip-1.3.0.tar.gz" stubdom/
- ln -s "$srcdir/zlib-1.2.3.tar.gz" stubdom/
- ln -s "$srcdir/newlib-1.16.0.tar.gz" stubdom/
- ln -s "$srcdir/pciutils-2.2.9.tar.bz2" stubdom/
- ln -s "$srcdir/polarssl-1.1.4-gpl.tgz" stubdom/
- ln -s "$srcdir/grub-0.97.tar.gz" stubdom/
- ln -s "$srcdir/tpm_emulator-0.7.4.tar.gz" stubdom/
- ln -s "$srcdir/gmp-4.3.2.tar.bz2" stubdom/
- ln -s "$srcdir/ocaml-3.11.0.tar.gz" stubdom/
-
- ## Stubdom patches
- cd 'extras/mini-os'
- cd '../../'
-
- #vtpm
- fi
-
- #etherboot
- ln -s "$srcdir/ipxe-git-$_git_tag_ipxe.tar.gz" tools/firmware/etherboot/ipxe.tar.gz
- #cp "$srcdir"/patch-inbuild-ipxe*.patch tools/firmware/etherboot/patches/
+ # Fix Install Paths.
+ sed 's,/var/run,/run,g' -i tools/hotplug/Linux/locking.sh
+ sed 's,/var/run,/run,g' -i tools/misc/xenpvnetboot
+ sed 's,/var/run,/run,g' -i tools/xenmon/xenbaked.c
+ sed 's,/var/run,/run,g' -i tools/xenmon/xenmon.py
+ sed 's,/var/run,/run,g' -i tools/pygrub/src/pygrub
}
build() {
- cd "$_pkgname-$_pkgver/"
- export LD_EFI='/usr/x86_64-w64-mingw32/bin/ld'
- ./autogen.sh
- if [[ "$_build_stubdom" == true ]]; then
- _config_stubdom=(--enable-stubdom)
- _config_stubdom+=(
- #--enable-ioemu-stubdom=no
- #--enable-c-stubdom=no
- #--enable-caml-stubdom=no
- #--enable-pv-grub=no
- #--enable-xenstore-stubdom=no
- #--enable-vtpm-stubdom=no
- #--enable-vtpmmgr-stubdom=no
- )
- else
- _config_stubdom=(--disable-stubdom)
- fi
- _config_seabios=()
- if [[ "$_system_seabios" == true ]]; then
- _config_seabios=(--with-system-seabios=/usr/share/qemu/bios-256k.bin)
- fi
- _config_xen_kconfig=''
- _config_debug=()
- if [[ "$_build_debug" == true ]]; then
- _config_debug=(--enable-debug --enable-debug-tcg --enable-debug-info)
- _config_xen_kconfig+="\n$_xen_kconfig_debug"
- _makevars+=(debug=y CONFIG_DEBUG=y)
- fi
- if [[ "$_build_livepatch" == true ]]; then
- _config_xen_kconfig+="\n$_xen_kconfig_livepatch"
- fi
- if [[ -n "$_config_xen_kconfig" ]]; then
- cd xen
- echo -e "$_config_xen_kconfig" > .config
- make "${_makevars[@]}" olddefconfig V=1
- cd ../
- fi
- ./configure PYTHON=/usr/bin/python2 --prefix=/usr --sbindir=/usr/bin --with-sysconfig-leaf-dir=conf.d --with-rundir=/run \
- --enable-systemd --enable-ovmf \
- "${_config_seabios[@]}" \
- "${_config_stubdom[@]}" \
- "${_config_debug[@]}" \
- --with-extra-qemuu-configure-args='--disable-bluez --disable-gtk --enable-spice --enable-usb-redir'
- #--with-system-qemu --with-system-seabios --with-system-ovmf
- #defaults --enable-qemu-traditional --enable-rombios \
- make "${_makevars[@]}" dist
- if [[ "$_build_livepatch" == true ]]; then
- make "${_makevars[@]}" build-tests
- fi
+ cd "${pkgbase}-${pkgver}"
+
+
+ ./configure \
+ --prefix=/usr \
+ --sbindir=/usr/bin \
+ --libdir=/usr/lib \
+ --with-rundir=/run \
+ --enable-systemd \
+ --disable-qemu-traditional \
+ ${_config_stubdom} \
+ --with-sysconfig-leaf-dir=conf.d \
+ --with-system-ovmf=/usr/share/ovmf/x64/OVMF.fd \
+ --with-system-qemu=/usr/bin/qemu-system-x86_64 \
+ --with-system-seabios=/usr/share/qemu/bios-256k.bin
+
+ make XEN_VENDORVERSION=arch
}
package_xen() {
- _makevars_package=("${_makevars[@]}" DESTDIR="$pkgdir")
- optdepends=(
- 'xen-docs: Official Xen documentation'
- 'openvswitch: Optional advanced networking support'
- 'urlgrabber: Required for xenpvnetboot'
- )
- conflicts=(xen-{git,rc,igvtg,4.{8,9}} xenstore)
- provides=(xenstore)
- replaces=(xen-{git,rc,4.{8,9}})
- backup=(
- etc/conf.d/xen{domains,commons}
- "etc/$_pkgname/grub.conf"
- "etc/$_pkgname/oxenstored.conf"
- "etc/$_pkgname/xl.conf"
- )
- install="$_pkgname.install"
-
- cd "$_pkgname-$_pkgver/"
-
- make "${_makevars_package[@]}" install-xen
- make "${_makevars_package[@]}" install-tools
- if [[ "$_build_stubdom" == true ]]; then
- make "${_makevars_package[@]}" install-stubdom
- fi
- if [[ "$_build_livepatch" == true ]]; then
- make "${_makevars_package[@]}" install-tests
- fi
-
- cd "$pkgdir"
-
- # Install files from Parabola package
- install -Dm644 "$srcdir/tmpfiles.d-$_pkgname.conf" "usr/lib/tmpfiles.d/$_pkgname.conf"
- install -Dm755 "$srcdir/21_linux_xen_multiboot_arch" etc/grub.d/21_linux_xen_multiboot_arch
- install -Dm644 "$srcdir/efi-xen.cfg" etc/xen/efi-xen.cfg
-
- mkdir -p var/log/xen/console
-
- # Sanitize library path (if lib64 exists)
- if [[ -d usr/lib64 ]]; then
- cd usr/
- mv lib64/* lib/
- rmdir lib64
- cd ../
- fi
-
- # If EFI binaries built, move to /boot
- if [[ -f usr/lib/efi/xen.efi ]]; then
- mv usr/lib/efi/*.efi boot/
- rmdir usr/lib/efi
- fi
-
- # Remove syms
- find usr/lib/debug -type f \( -name '*-syms*' -or -name '*\.map' \) -delete
- rmdir --ignore-fail-on-non-empty usr/lib/debug
-
- # Remove hypervisor boot symlinks
- rm -f boot/xen{,-4{,.8,.9}}{,.{gz,efi}}
-
- # Documentation cleanup ( see xen-docs package )
- #rm -rf usr/share/doc
- #rm -rf usr/share/man
-
- # Remove tempdirs
- rmdir run/xen{,stored}
- rmdir run
-
- # Remove unnecessary qemu ELF support files
- # qemuu
- rm -f usr/share/qemu-xen/qemu/{palcode,openbios,s390}-*
- rm -f usr/share/qemu-xen/qemu/u-boot.e500
- # qemut
- if [[ "$CARCH" == *'x86'* ]]; then
- rm -f usr/share/xen/qemu/openbios-*
- fi
-
- # adhere to Static Library Packaging Guidelines
- rm -rf usr/lib/*.a
-
- # Remove unneeded init.d files
- rm -rf etc/init.d
-}
+ pkgdesc='Type-1 or baremetal hypervisor'
+
+ depends=('zlib' 'python' 'ncurses' 'openssl' 'libx11' 'libuuid.so' 'yajl' 'libaio' 'glib2' 'pkgconf'
+ 'bridge-utils' 'iproute2' 'inetutils' 'acpica' 'lib32-glibc' 'gnutls'
+ 'vde2' 'lzo' 'pciutils' 'sdl')
+
+ optdepends=('ed2k-ovmf: UEFI support'
+ 'seabios: SeaBIOS payload support'
+ 'xen-docs: HTML documentation and man pages')
+
+ install="xen.install"
+
+
+ backup=("etc/conf.d/xencommons"
+ "etc/conf.d/xendomains"
+ "etc/xen/efi-xen.cfg"
+ "etc/xen/cpupool"
+ "etc/xen/grub.conf"
+ "etc/xen/xl.conf"
+ )
+
+
+ cd "${pkgbase}-${pkgver}"
+
+
+ make DESTDIR="$pkgdir" install
+
+ mv "$pkgdir"/usr/lib64/efi "$pkgdir"/usr/lib/efi
+ rm -rf "$pkgdir"{/var/run,/usr/lib64}
+ # This feels like The Arch Way, really.
+ find "${pkgdir}/usr/lib/efi" -type l -delete
+ mv "${pkgdir}/usr/lib/efi/xen-${pkgver}.efi" "${pkgdir}/usr/lib/efi/xen.efi"
+
+
+ [ -d "$pkgdir"/etc/xen/scripts ] && backup+=($(find "$pkgdir"/etc/xen/scripts/ -type f | sed "s|^$pkgdir/||g"))
+
+ mkdir -p "${pkgdir}/var/log/xen/console"
+
+ # Remove hypervisor symlinks.
+ find "${pkgdir}/boot" -type l -delete
+ # Continued: This feels like The Arch Way, really.
+ mv "${pkgdir}/boot/xen-${pkgver}.gz" "${pkgdir}/boot/xen.gz"
+
+ # Remove syms.
+ find "${pkgdir}/usr/lib/debug" -type f \( -name '*-syms*' -or -name '*\.map' \) -delete
+ rmdir "${pkgdir}/usr/lib/debug/usr/lib/xen/boot"
+ rmdir "${pkgdir}/usr/lib/debug/usr/lib/xen"
+ rmdir "${pkgdir}/usr/lib/debug/usr/lib"
+ rmdir "${pkgdir}/usr/lib/debug/usr"
+ rmdir "${pkgdir}/usr/lib/debug"
+
+ # Remove SysVinit files.
+ rm -r "${pkgdir}/etc/init.d"
+
+ # Install files for Arch Linux.
+ install -D -m 0644 "${srcdir}/grub.conf" "${pkgdir}/etc/xen/grub.conf"
+ install -D -m 0755 "${srcdir}/grub-mkconfig-helper" "${pkgdir}/etc/grub.d/09_xen"
+ install -D -m 0644 "${srcdir}/efi-xen.cfg" "${pkgdir}/etc/xen/efi-xen.cfg"
+ install -D -m 0644 "${srcdir}/xen.conf" "${pkgdir}/usr/lib/modules-load.d/xen.conf"
+ install -D -m 0644 "${srcdir}/tmpfiles.conf" "${pkgdir}/usr/lib/tmpfiles.d/${pkgbase}.conf"
+
+
+ # Remove documentation (included in separate xen-docs package).
+ rm -r "${pkgdir}/usr/share/doc"
+ rm -r "${pkgdir}/usr/share/man"
-package_xen-docs(){
- _makevars_package=("${_makevars[@]}" DESTDIR="$pkgdir")
- pkgdesc='Xen virtual machine hypervisor documentation'
- arch=('any')
- depends=()
- cd "$_pkgname-$_pkgver/"
- make "${_makevars_package[@]}" install-docs
}
-package_xen-syms(){
- _makevars_package=("${_makevars[@]}" DESTDIR="$pkgdir")
- pkgdesc='Xen virtual machine hypervisor debugging symbols'
- arch=('any')
- depends=()
- _installdir="${pkgdir}/usr/lib/debug"
- cd "$_pkgname-$_pkgver/"
- install -d -m0755 "$_installdir"
- for _path in $(find xen -type f \( -name '*-syms' -or -name '*\.map' \)); do
- _file=$(basename "$_path")
- _installfile=$(echo "$_file" |
- sed "s/\([^.]*\)\(\.*\)/\1-${_pkgver}\2/" )
- install -D -m0644 -p "$_path" "$_installdir/$_installfile"
- done
+package_xen-docs() {
+ pkgdesc="Xen hypervisor documentation and man pages"
+ arch=("any")
+ cd "${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install-docs
}
diff --git a/pcr/xen/ati-passthrough.patch b/pcr/xen/ati-passthrough.patch
deleted file mode 100644
index 7c20b1ecd..000000000
--- a/pcr/xen/ati-passthrough.patch
+++ /dev/null
@@ -1,415 +0,0 @@
---- xen-4.3.1/tools/qemu-xen-traditional/hw/pass-through.c Thu Sep 6 11:05:30 2012
-+++ xen-4.3.1-new/tools/qemu-xen-traditional/hw/pass-through.c Sat Nov 24 08:27:07 2012
-@@ -1438,9 +1438,17 @@ static void pt_ioport_map(PCIDevice *d,
- if (e_phys != -1)
- {
- /* Create new mapping */
-- ret = xc_domain_ioport_mapping(xc_handle, domid, e_phys,
-- assigned_device->bases[i].access.pio_base, e_size,
-- DPCI_ADD_MAPPING);
-+ if ( vga_skip_ioport_map(d) )
-+ {
-+ assigned_device->bases[i].e_physbase = -1;
-+ }
-+ else
-+ {
-+ ret = xc_domain_ioport_mapping(xc_handle, domid, e_phys,
-+ assigned_device->bases[i].access.pio_base, e_size,
-+ DPCI_ADD_MAPPING);
-+ }
-+
- if ( ret != 0 )
- {
- PT_LOG("Error: create new mapping failed!\n");
---- xen-4.3.1/tools/qemu-xen-traditional/hw/pass-through.h Thu Sep 6 11:05:30 2012
-+++ xen-4.3.1-new/tools/qemu-xen-traditional/hw/pass-through.h Sat Nov 24 08:27:07 2012
-@@ -419,6 +419,11 @@ int pt_pci_host_write(struct pci_dev *pc
- void intel_pch_init(PCIBus *bus);
- int register_vga_regions(struct pt_dev *real_device);
- int unregister_vga_regions(struct pt_dev *real_device);
-+int vga_skip_ioport_map(PCIDevice *d);
-+int igd_register_vga_regions(struct pt_dev *real_device);
-+int igd_unregister_vga_regions(struct pt_dev *real_device);
-+int ati_register_vga_regions(struct pt_dev *real_device);
-+int ati_unregister_vga_regions(struct pt_dev *real_device);
- int setup_vga_pt(struct pt_dev *real_device);
- PCIBus *intel_pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid,
- uint16_t did, const char *name, uint16_t revision);
---- xen-4.3.1/tools/qemu-xen-traditional/hw/pci.h Thu Sep 6 11:05:30 2012
-+++ xen-4.3.1-new/tools/qemu-xen-traditional/hw/pci.h Sat Nov 24 08:27:07 2012
-@@ -54,6 +54,8 @@ extern target_phys_addr_t pci_mem_base;
-
- #define PCI_VENDOR_ID_CIRRUS 0x1013
-
-+#define PCI_VENDOR_ID_ATI 0x1002
-+
- #define PCI_VENDOR_ID_IBM 0x1014
- #define PCI_DEVICE_ID_IBM_OPENPIC2 0xffff
-
---- xen-4.3.1/tools/qemu-xen-traditional/hw/pt-graphics.c Thu Sep 6 11:05:30 2012
-+++ xen-4.3.1-new/tools/qemu-xen-traditional/hw/pt-graphics.c Sat Nov 24 08:28:10 2012
-@@ -13,6 +13,207 @@
-
- extern int gfx_passthru;
- extern int igd_passthru;
-+/*********************************/
-+/* Code for ATI GFX Passthru */
-+/*********************************/
-+/* ATI VBIOS Working Mechanism
-+ *
-+ * Generally there are three memory resources (two MMIO and one PIO)
-+ * associated with modern ATI gfx. VBIOS uses special tricks to figure out
-+ * BARs, instead of using regular PCI config space read.
-+ *
-+ * (1) VBIOS relies on I/O port 0x3C3 to retrieve PIO BAR
-+ * (2) VBIOS maintains a shadow copy of PCI configure space. It retries the
-+ * MMIO BARs from this shadow copy via sending I/O requests to first two
-+ * registers of PIO (MMINDEX and MMDATA). The workflow is like this:
-+ * MMINDEX (register 0) is written with an index value, specifying the
-+ * register VBIOS wanting to access. Then the shadowed data can be
-+ * read/written from MMDATA (register 1). For two MMIO BARs, the index
-+ * values are 0x4010 and 0x4014 respectively.
-+ *
-+ */
-+
-+#define ATI_BAR1_INDEX 0 //MMIO BAR1
-+#define ATI_BAR2_INDEX 1 //MMIO BAR2
-+#define ATI_BAR5_INDEX 4 //PIO BAR == BAR5
-+
-+#define ATI_BAR1_MMINDEX 0x4010 //data written to MMINDEX for MMIO BAR1
-+#define ATI_BAR2_MMINDEX 0x4014 //data written to MMINDEX FOR MMIO BAR2
-+
-+struct ati_gfx_info {
-+ int initialized; /* initialized already? */
-+
-+ /* PIO */
-+ uint32_t host_pio_base; /* host base addr of PIO */
-+ uint32_t guest_pio_base; /* guest base addr of PIO */
-+ uint32_t pio_size; /* PIO size */
-+
-+ /* MMIO */
-+ uint32_t guest_mmio_base1; /* guest base addr of MMIO 1 */
-+ uint32_t guest_mmio_base2; /* guest base addr of MMIO 2 */
-+
-+ /* PIO MMINDEX access recording */
-+ uint32_t pre_mmindex_data; /* previous data written to MMINDEX */
-+};
-+
-+static struct ati_gfx_info gfx_info;
-+
-+/* Convert guest PIO port to host PIO port */
-+static uint16_t gport_to_hport(uint16_t gport)
-+{
-+ return (gport - gfx_info.guest_pio_base) + gfx_info.host_pio_base;
-+}
-+
-+/* Read host PIO port */
-+static uint32_t ati_hw_in(uint16_t hport)
-+{
-+ unsigned val;
-+
-+ //iopl(3);
-+ asm volatile ("in %1,%0":"=a"(val):"Nd"(hport));
-+ //iopl(0);
-+
-+ return val;
-+}
-+
-+/* Write data to host PIO */
-+static void ati_hw_out(uint16_t hport, uint32_t data)
-+{
-+ //iopl(3);
-+ asm volatile ("out %1, %0"::"Nd"(hport),"a"(data));
-+ //iopl(0);
-+}
-+
-+static uint32_t ati_io_regs_read(void *opaque, uint32_t addr)
-+{
-+ uint32_t val;
-+
-+ val = ati_hw_in(gport_to_hport(addr));
-+
-+ /* tweak the value if VBIOS is reading MMIO BAR1 and BAR2 */
-+ if ( addr == (gfx_info.guest_pio_base + 4) )
-+ {
-+ switch ( gfx_info.pre_mmindex_data )
-+ {
-+ case ATI_BAR1_MMINDEX:
-+ val = gfx_info.guest_mmio_base1 | (val & 0x0000000f);
-+ break;
-+ case ATI_BAR2_MMINDEX:
-+ val = gfx_info.guest_mmio_base2 | (val & 0x0000000f);
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+
-+ return val;
-+}
-+
-+static void ati_io_regs_write(void *opaque, uint32_t addr, uint32_t val)
-+{
-+ ati_hw_out(gport_to_hport(addr), val);
-+
-+ /* book keeping */
-+ if ( addr == gfx_info.guest_pio_base )
-+ gfx_info.pre_mmindex_data = val;
-+}
-+
-+static void ati_gfx_init(struct pt_dev *assigned)
-+{
-+ PCIDevice *dev = (PCIDevice *)&assigned->dev;
-+
-+ register_ioport_read(dev->io_regions[ATI_BAR5_INDEX].addr,
-+ dev->io_regions[ATI_BAR5_INDEX].size, 4, ati_io_regs_read, assigned);
-+
-+ register_ioport_write(dev->io_regions[ATI_BAR5_INDEX].addr,
-+ dev->io_regions[ATI_BAR5_INDEX].size, 4, ati_io_regs_write, assigned);
-+
-+ /* initialize IO registers */
-+ gfx_info.guest_pio_base = dev->io_regions[ATI_BAR5_INDEX].addr;
-+ gfx_info.pio_size = dev->io_regions[ATI_BAR5_INDEX].size;
-+ gfx_info.host_pio_base = assigned->bases[ATI_BAR5_INDEX].access.pio_base;
-+
-+ gfx_info.guest_mmio_base1 = dev->io_regions[ATI_BAR1_INDEX].addr;
-+ gfx_info.guest_mmio_base2 = dev->io_regions[ATI_BAR2_INDEX].addr;
-+ gfx_info.initialized = 1;
-+
-+ PT_LOG("guest_pio_bar = 0x%x, host_pio_bar = 0x%x, pio_size=0x%x "
-+ "guest_mmio_bar1=0x%x, guest_mmio_bar2=0x%x\n",
-+ gfx_info.guest_pio_base, gfx_info.host_pio_base, gfx_info.pio_size,
-+ gfx_info.guest_mmio_base1, gfx_info.guest_mmio_base2);
-+}
-+
-+static uint32_t ati_legacy_io_read(void *opaque, uint32_t addr)
-+{
-+ struct pt_dev *assigned_device = opaque;
-+ PCIDevice *dev = (PCIDevice *)&assigned_device->dev;
-+ uint32_t val = 0xFF;
-+
-+ switch( addr )
-+ {
-+ case 0x3c3:
-+ val = dev->io_regions[ATI_BAR5_INDEX].addr >> 8;
-+ /* Intercept GFX IO registers. This supposes to happen in
-+ * ati_register_vga_regions(). But we cannot get guest phys IO BAR
-+ * over there. */
-+ if ( !gfx_info.initialized )
-+ ati_gfx_init(assigned_device);
-+ break;
-+ default:
-+ PT_LOG("ERROR: port 0x%x I/O read not handled\n", addr);
-+ break;
-+ }
-+
-+ return val;
-+}
-+
-+static void ati_legacy_io_write(void *opaque, uint32_t addr, uint32_t val)
-+{
-+ PT_LOG("ERROR: port 0x%x I/O write not handled\n", addr);
-+}
-+
-+int ati_register_vga_regions(struct pt_dev *real_device)
-+{
-+ PCIDevice *dev = (PCIDevice *)&real_device->dev;
-+ int ret = 0;
-+
-+ /* We need to intercept VBIOS accesses to port 0x3C3, which returns
-+ * device port I/O BAR. For the rest of legacy I/O ports, we allow direct
-+ * accesses.
-+ */
-+ ret |= xc_domain_ioport_mapping(xc_handle, domid, 0x3C0,
-+ 0x3C0, 0x3, DPCI_ADD_MAPPING);
-+
-+ ret |= xc_domain_ioport_mapping(xc_handle, domid, 0x3C4,
-+ 0x3C4, 0x1C, DPCI_ADD_MAPPING);
-+
-+ register_ioport_read(0x3c3, 1, 1, ati_legacy_io_read, real_device);
-+ register_ioport_write(0x3c3, 1, 1, ati_legacy_io_write, real_device);
-+
-+ /* initialized on the first port 0x3C3 access in ati_gfx_init */
-+ gfx_info.initialized = 0;
-+
-+ return ret;
-+}
-+
-+int ati_unregister_vga_regions(struct pt_dev *real_device)
-+{
-+ int ret = 0;
-+
-+ ret |= xc_domain_ioport_mapping(xc_handle, domid, 0x3C0,
-+ 0x3C0, 0x3, DPCI_REMOVE_MAPPING);
-+
-+ ret |= xc_domain_ioport_mapping(xc_handle, domid, 0x3C4,
-+ 0x3C4, 0x1C, DPCI_REMOVE_MAPPING);
-+
-+ gfx_info.initialized = 0;
-+
-+ return ret;
-+}
-+
-+/*********************************/
-+/* Code for Intel IGD Passthru */
-+/*********************************/
-
- static uint32_t igd_guest_opregion = 0;
-
-@@ -176,6 +377,77 @@ read_default:
- return pci_default_read_config(pci_dev, config_addr, len);
- }
-
-+int igd_register_vga_regions(struct pt_dev *real_device)
-+{
-+ u32 vendor_id, igd_opregion;
-+ int ret = 0;
-+
-+ /* legacy I/O ports 0x3C0 -- 0x3E0 */
-+ ret |= xc_domain_ioport_mapping(xc_handle, domid, 0x3C0,
-+ 0x3C0, 0x20, DPCI_ADD_MAPPING);
-+
-+ /* 1:1 map ASL Storage register value */
-+ vendor_id = pt_pci_host_read(real_device->pci_dev, PCI_VENDOR_ID, 2);
-+ igd_opregion = pt_pci_host_read(real_device->pci_dev, PCI_INTEL_OPREGION, 4);
-+ if ( (vendor_id == PCI_VENDOR_ID_INTEL) && igd_opregion )
-+ {
-+ ret |= xc_domain_memory_mapping(xc_handle, domid,
-+ igd_opregion >> XC_PAGE_SHIFT,
-+ igd_opregion >> XC_PAGE_SHIFT,
-+ 2,
-+ DPCI_ADD_MAPPING);
-+ PT_LOG("register_vga: igd_opregion = %x\n", igd_opregion);
-+ }
-+
-+ return ret;
-+}
-+
-+int igd_unregister_vga_regions(struct pt_dev *real_device)
-+{
-+ u32 vendor_id, igd_opregion;
-+ int ret = 0;
-+
-+ ret |= xc_domain_ioport_mapping(xc_handle, domid, 0x3C0,
-+ 0x3C0, 0x20, DPCI_REMOVE_MAPPING);
-+
-+ vendor_id = pt_pci_host_read(real_device->pci_dev, PCI_VENDOR_ID, 2);
-+ igd_opregion = pt_pci_host_read(real_device->pci_dev, PCI_INTEL_OPREGION, 4);
-+ if ( (vendor_id == PCI_VENDOR_ID_INTEL) && igd_opregion )
-+ {
-+ ret |= xc_domain_memory_mapping(xc_handle, domid,
-+ igd_opregion >> XC_PAGE_SHIFT,
-+ igd_opregion >> XC_PAGE_SHIFT,
-+ 2,
-+ DPCI_REMOVE_MAPPING);
-+ }
-+
-+ return ret;
-+}
-+/*********************************/
-+/* Generic Code for GFX Passthru */
-+/*********************************/
-+/* This function decides whether I/O port map should be skipped */
-+int vga_skip_ioport_map(PCIDevice *d)
-+{
-+ struct pt_dev *dev = (struct pt_dev *)d;
-+ int skip = 0;
-+
-+ if ( !gfx_passthru || dev->pci_dev->device_class != 0x0300 )
-+ return 0;
-+
-+ switch( dev->pci_dev->vendor_id )
-+ {
-+ case PCI_VENDOR_ID_ATI:
-+ case PCI_VENDOR_ID_AMD:
-+ skip = 1;
-+ break;
-+ default:
-+ skip = 0;
-+ break;
-+ }
-+
-+ return skip;
-+}
- /*
- * register VGA resources for the domain with assigned gfx
- */
-@@ -187,18 +459,33 @@ int register_vga_regions(struct pt_dev *
- if ( !gfx_passthru || real_device->pci_dev->device_class != 0x0300 )
- return ret;
-
-+ /* legacy I/O ports 0x3B0 - 0x3BC */
- ret |= xc_domain_ioport_mapping(xc_handle, domid, 0x3B0,
- 0x3B0, 0xC, DPCI_ADD_MAPPING);
-
-- ret |= xc_domain_ioport_mapping(xc_handle, domid, 0x3C0,
-- 0x3C0, 0x20, DPCI_ADD_MAPPING);
--
-+ /* legacy video MMIO range 0xA0000 - 0xBFFFF */
- ret |= xc_domain_memory_mapping(xc_handle, domid,
- 0xa0000 >> XC_PAGE_SHIFT,
- 0xa0000 >> XC_PAGE_SHIFT,
- 0x20,
- DPCI_ADD_MAPPING);
-
-+ /* Other VGA regions are vendor specific */
-+ switch( real_device->pci_dev->vendor_id )
-+ {
-+ case PCI_VENDOR_ID_INTEL:
-+ ret = igd_register_vga_regions(real_device);
-+ break;
-+ case PCI_VENDOR_ID_ATI:
-+ case PCI_VENDOR_ID_AMD:
-+ ret = ati_register_vga_regions(real_device);
-+ break;
-+ default:
-+ PT_LOG("gfx card wasn't supported by Xen passthru!\n");
-+ ret = 1;
-+ break;
-+ }
-+
- if ( ret != 0 )
- PT_LOG("VGA region mapping failed\n");
-
-@@ -216,26 +503,31 @@ int unregister_vga_regions(struct pt_dev
- if ( !gfx_passthru || real_device->pci_dev->device_class != 0x0300 )
- return ret;
-
-+ /* legacy I/O ports 0x3B0 - 0x3BC */
- ret |= xc_domain_ioport_mapping(xc_handle, domid, 0x3B0,
- 0x3B0, 0xC, DPCI_REMOVE_MAPPING);
-
-- ret |= xc_domain_ioport_mapping(xc_handle, domid, 0x3C0,
-- 0x3C0, 0x20, DPCI_REMOVE_MAPPING);
--
-+ /* legacy video MMIO range 0xA0000 - 0xBFFFF */
- ret |= xc_domain_memory_mapping(xc_handle, domid,
- 0xa0000 >> XC_PAGE_SHIFT,
- 0xa0000 >> XC_PAGE_SHIFT,
- 20,
- DPCI_REMOVE_MAPPING);
-
-- vendor_id = pt_pci_host_read(real_device->pci_dev, PCI_VENDOR_ID, 2);
-- if ( (vendor_id == PCI_VENDOR_ID_INTEL) && igd_guest_opregion )
-+ /* Other VGA regions are vendor specific */
-+ switch( real_device->pci_dev->vendor_id )
- {
-- ret |= xc_domain_memory_mapping(xc_handle, domid,
-- igd_guest_opregion >> XC_PAGE_SHIFT,
-- igd_guest_opregion >> XC_PAGE_SHIFT,
-- 2,
-- DPCI_REMOVE_MAPPING);
-+ case PCI_VENDOR_ID_INTEL:
-+ ret = igd_unregister_vga_regions(real_device);
-+ break;
-+ case PCI_VENDOR_ID_ATI:
-+ case PCI_VENDOR_ID_AMD:
-+ ret = ati_unregister_vga_regions(real_device);
-+ break;
-+ default:
-+ PT_LOG("gfx card wasn't supported by Xen passthru!\n");
-+ ret = 1;
-+ break;
- }
-
- if ( ret != 0 )
diff --git a/pcr/xen/patch-ovmf-use-python2.patch b/pcr/xen/patch-ovmf-use-python2.patch
deleted file mode 100644
index b52b9230c..000000000
--- a/pcr/xen/patch-ovmf-use-python2.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Subject: [PATCH] Fix ovmf, use python2
-
----
- tools/firmware/Makefile | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/tools/firmware/Makefile b/tools/firmware/Makefile
-index b840c6a..a5a6802 100644
---- a/tools/firmware/Makefile
-+++ b/tools/firmware/Makefile
-@@ -17,6 +17,8 @@ LD32BIT-$(CONFIG_FreeBSD) := LD32BIT_FLAG=-melf_i386_fbsd
-
- ovmf-dir:
- GIT=$(GIT) $(XEN_ROOT)/scripts/git-checkout.sh $(OVMF_UPSTREAM_URL) $(OVMF_UPSTREAM_REVISION) ovmf-dir
-+ sed 's|python |python2 |g' -i "ovmf-dir/BaseTools/BinWrappers/PosixLike"/* || true
-+ sed 's|python |python2 |g' -i "ovmf-dir/BaseTools/Tests/GNUmakefile"
- cp ovmf-makefile ovmf-dir/Makefile;
-
- seabios-dir:
---
-2.13.0
-
diff --git a/pcr/xen/xen.install b/pcr/xen/xen.install
index 2c03573e7..1dd8862f6 100644
--- a/pcr/xen/xen.install
+++ b/pcr/xen/xen.install
@@ -99,38 +99,39 @@ __EOF__
xen_boot
}
+
post_install() {
- install_msg
- upgrade_msg
- systemd-tmpfiles --create
+ install_msg
+ systemd-tmpfiles --create
}
post_upgrade() {
- if [[ "$2" < 4.9.0 || "$2" == *'4.9.0rc'* ]]; then
- upgrade_msg
- fi
- if [[ "$2" < 4.9.0 || "$2" == *'4.9.0rc'* ]]; then
- upgrade_msg_grub_multiboot2
- fi
- systemd-tmpfiles --create
+ if [[ "$2" < 4.9.0 || "$2" == *'4.9.0rc'* ]]; then
+ upgrade_msg
+ fi
+ if [[ "$2" < 4.9.0 || "$2" == *'4.9.0rc'* ]]; then
+ upgrade_msg_grub_multiboot2
+ fi
+ systemd-tmpfiles --create
}
pre_remove() {
- systemctl stop xendomains.service
- systemctl stop xen-watchdog.service
- systemctl stop xenconsoled.service
- systemctl stop xen-init-dom0.service
- systemctl stop xen-qemu-dom0-disk-backend.service
-
- systemctl disable xendomains.service
- systemctl disable xen-watchdog.service
- systemctl disable xenconsoled.service
- systemctl disable xen-init-dom0.service
- systemctl disable xen-qemu-dom0-disk-backend.service
+ systemctl stop xendomains.service
+ systemctl stop xen-watchdog.service
+ systemctl stop xenconsoled.service
+ systemctl stop xen-init-dom0.service
+ systemctl stop xen-qemu-dom0-disk-backend.service
+
+ systemctl disable xendomains.service
+ systemctl disable xen-watchdog.service
+ systemctl disable xenconsoled.service
+ systemctl disable xen-init-dom0.service
+ systemctl disable xen-qemu-dom0-disk-backend.service
+
}
post_remove() {
- cat << __EOF__
+ cat << __EOF__
===> IMPORTANT NOTICE:
In order to finish removing Xen, you will need to modify