Pullup ticket #4698 - requested by spz Pullup ticket #4698 - requested by spz sysutils/xenkernel41: security patch sysutils/xenkernel42: security patch sysutils/xenkernel45: security patch Revisions pulled up: - sysutils/xenkernel41/Makefile 1.45 - sysutils/xenkernel41/distinfo 1.36 - sysutils/xenkernel41/patches/patch-CVE-2015-2752 1.1 - sysutils/xenkernel41/patches/patch-CVE-2015-2756 1.1 - sysutils/xenkernel42/Makefile 1.15 - sysutils/xenkernel42/distinfo 1.13 - sysutils/xenkernel42/patches/patch-CVE-2015-2752 1.1 - sysutils/xenkernel42/patches/patch-CVE-2015-2756 1.1 - sysutils/xenkernel45/Makefile 1.6 - sysutils/xenkernel45/distinfo 1.5 - sysutils/xenkernel45/patches/patch-CVE-2015-2752 1.1 - sysutils/xenkernel45/patches/patch-CVE-2015-2756 1.1 - sysutils/xentools41/Makefile 1.50 - sysutils/xentools41/distinfo 1.38 - sysutils/xentools41/patches/patch-CVE-2015-2752 1.1 - sysutils/xentools41/patches/patch-CVE-2015-2756 1.1 - sysutils/xentools42/Makefile 1.27 - sysutils/xentools42/distinfo 1.16 - sysutils/xentools42/patches/patch-CVE-2015-2752 1.1 - sysutils/xentools42/patches/patch-CVE-2015-2756 1.1 - sysutils/xentools45/Makefile 1.6 - sysutils/xentools45/distinfo 1.6 - sysutils/xentools45/patches/patch-CVE-2015-2752 1.1 - sysutils/xentools45/patches/patch-CVE-2015-2756 1.1 --- Module Name: pkgsrc Committed By: spz Date: Sun Apr 19 13:13:21 UTC 2015 Modified Files: pkgsrc/sysutils/xenkernel41: Makefile distinfo pkgsrc/sysutils/xenkernel42: Makefile distinfo pkgsrc/sysutils/xenkernel45: Makefile distinfo pkgsrc/sysutils/xentools41: Makefile distinfo pkgsrc/sysutils/xentools42: Makefile distinfo pkgsrc/sysutils/xentools45: Makefile distinfo Added Files: pkgsrc/sysutils/xenkernel41/patches: patch-CVE-2015-2752 patch-CVE-2015-2756 pkgsrc/sysutils/xenkernel42/patches: patch-CVE-2015-2752 patch-CVE-2015-2756 pkgsrc/sysutils/xenkernel45/patches: patch-CVE-2015-2752 patch-CVE-2015-2756 pkgsrc/sysutils/xentools41/patches: patch-CVE-2015-2752 patch-CVE-2015-2756 pkgsrc/sysutils/xentools42/patches: patch-CVE-2015-2752 patch-CVE-2015-2756 pkgsrc/sysutils/xentools45/patches: patch-CVE-2015-2752 patch-CVE-2015-2756 Log Message: apply fixes from upstream for XSA-125 Long latency MMIO mapping operations are not preemptible XSA-126 Unmediated PCI command register access in qemudiff -r1.44 -r1.44.2.1 pkgsrc/sysutils/xenkernel41/Makefile
(tron)
@@ -1,61 +1,61 @@ | @@ -1,61 +1,61 @@ | |||
1 | # $NetBSD: Makefile,v 1.44 2015/03/10 20:27:16 spz Exp $ | 1 | # $NetBSD: Makefile,v 1.44.2.1 2015/04/29 21:11:12 tron Exp $ | |
2 | 2 | |||
3 | VERSION= 4.1.6.1 | 3 | VERSION= 4.1.6.1 | |
4 | DISTNAME= xen-${VERSION} | 4 | DISTNAME= xen-${VERSION} | |
5 | PKGNAME= xenkernel41-${VERSION} | 5 | PKGNAME= xenkernel41-${VERSION} | |
6 | PKGREVISION= 15 | 6 | PKGREVISION= 16 | |
7 | CATEGORIES= sysutils | 7 | CATEGORIES= sysutils | |
8 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | 8 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | |
9 | 9 | |||
10 | MAINTAINER= cegger@NetBSD.org | 10 | MAINTAINER= cegger@NetBSD.org | |
11 | HOMEPAGE= http://xen.org/ | 11 | HOMEPAGE= http://xen.org/ | |
12 | COMMENT= Xen 4.1.x Kernel | 12 | COMMENT= Xen 4.1.x Kernel | |
13 | 13 | |||
14 | LICENSE= gnu-gpl-v2 | 14 | LICENSE= gnu-gpl-v2 | |
15 | 15 | |||
16 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | 16 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | |
17 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | 17 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | |
18 | 18 | |||
19 | NO_CONFIGURE= yes | 19 | NO_CONFIGURE= yes | |
20 | USE_TOOLS+= gmake | 20 | USE_TOOLS+= gmake | |
21 | 21 | |||
22 | PYTHON_FOR_BUILD_ONLY= yes | 22 | PYTHON_FOR_BUILD_ONLY= yes | |
23 | PY_PATCHPLIST= NO | 23 | PY_PATCHPLIST= NO | |
24 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 # not yet ported as of 4.1.6.1 | 24 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 # not yet ported as of 4.1.6.1 | |
25 | 25 | |||
26 | # XXX Why does this not work? | 26 | # XXX Why does this not work? | |
27 | # See work/xen-4.1.2/Config.mk:41 why PYTHON must be set and what for | 27 | # See work/xen-4.1.2/Config.mk:41 why PYTHON must be set and what for | |
28 | MAKE_ENV+= PYTHON=${PYTHONBIN:Q} | 28 | MAKE_ENV+= PYTHON=${PYTHONBIN:Q} | |
29 | MAKE_ENV+= OCAML_TOOLS=no | 29 | MAKE_ENV+= OCAML_TOOLS=no | |
30 | 30 | |||
31 | INSTALLATION_DIRS= xen41-kernel | 31 | INSTALLATION_DIRS= xen41-kernel | |
32 | XENKERNELDIR= ${PREFIX}/${INSTALLATION_DIRS} | 32 | XENKERNELDIR= ${PREFIX}/${INSTALLATION_DIRS} | |
33 | 33 | |||
34 | MESSAGE_SUBST+= XENKERNELDIR=${XENKERNELDIR:Q} | 34 | MESSAGE_SUBST+= XENKERNELDIR=${XENKERNELDIR:Q} | |
35 | 35 | |||
36 | .include "../../mk/compiler.mk" | 36 | .include "../../mk/compiler.mk" | |
37 | .if !empty(PKGSRC_COMPILER:Mclang) | 37 | .if !empty(PKGSRC_COMPILER:Mclang) | |
38 | EXTRA_CFLAGS+= -Qunused-arguments -no-integrated-as -Wno-error=format \ | 38 | EXTRA_CFLAGS+= -Qunused-arguments -no-integrated-as -Wno-error=format \ | |
39 | -Wno-error=parentheses-equality -Wno-error=enum-conversion \ | 39 | -Wno-error=parentheses-equality -Wno-error=enum-conversion \ | |
40 | -Wno-error=unused-function \ | 40 | -Wno-error=unused-function \ | |
41 | -Wno-error=tautological-pointer-compare \ | 41 | -Wno-error=tautological-pointer-compare \ | |
42 | -Wno-error=pointer-bool-conversion | 42 | -Wno-error=pointer-bool-conversion | |
43 | .endif | 43 | .endif | |
44 | 44 | |||
45 | MAKE_ENV+= EXTRA_CFLAGS=${EXTRA_CFLAGS:Q} | 45 | MAKE_ENV+= EXTRA_CFLAGS=${EXTRA_CFLAGS:Q} | |
46 | 46 | |||
47 | do-build: | 47 | do-build: | |
48 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=n build | 48 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=n build | |
49 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen.gz | 49 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen.gz | |
50 | cd ${WRKSRC}/xen && ${MAKE_PROGRAM} clean | 50 | cd ${WRKSRC}/xen && ${MAKE_PROGRAM} clean | |
51 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=y build | 51 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=y build | |
52 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen-debug.gz | 52 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen-debug.gz | |
53 | 53 | |||
54 | do-install: | 54 | do-install: | |
55 | ${INSTALL_DATA} ${WRKDIR}/xen.gz \ | 55 | ${INSTALL_DATA} ${WRKDIR}/xen.gz \ | |
56 | ${DESTDIR}${XENKERNELDIR}/xen.gz | 56 | ${DESTDIR}${XENKERNELDIR}/xen.gz | |
57 | ${INSTALL_DATA} ${WRKDIR}/xen-debug.gz \ | 57 | ${INSTALL_DATA} ${WRKDIR}/xen-debug.gz \ | |
58 | ${DESTDIR}${XENKERNELDIR}/xen-debug.gz | 58 | ${DESTDIR}${XENKERNELDIR}/xen-debug.gz | |
59 | 59 | |||
60 | .include "../../lang/python/application.mk" | 60 | .include "../../lang/python/application.mk" | |
61 | .include "../../mk/bsd.pkg.mk" | 61 | .include "../../mk/bsd.pkg.mk" |
@@ -1,37 +1,39 @@ | @@ -1,37 +1,39 @@ | |||
1 | $NetBSD: distinfo,v 1.35 2015/03/10 20:27:16 spz Exp $ | 1 | $NetBSD: distinfo,v 1.35.2.1 2015/04/29 21:11:12 tron Exp $ | |
2 | 2 | |||
3 | SHA1 (xen-4.1.6.1.tar.gz) = e5f15feb0821578817a65ede16110c6eac01abd0 | 3 | SHA1 (xen-4.1.6.1.tar.gz) = e5f15feb0821578817a65ede16110c6eac01abd0 | |
4 | RMD160 (xen-4.1.6.1.tar.gz) = bff11421fc44a26f2cc3156713267abcb36d7a19 | 4 | RMD160 (xen-4.1.6.1.tar.gz) = bff11421fc44a26f2cc3156713267abcb36d7a19 | |
5 | Size (xen-4.1.6.1.tar.gz) = 10428485 bytes | 5 | Size (xen-4.1.6.1.tar.gz) = 10428485 bytes | |
6 | SHA1 (patch-CVE-2013-1442) = 7aa43513ea7cddc50b4e6802412cfc2903cce8e1 | 6 | SHA1 (patch-CVE-2013-1442) = 7aa43513ea7cddc50b4e6802412cfc2903cce8e1 | |
7 | SHA1 (patch-CVE-2013-4355_1) = 56dde995d7df4f18576040007fd5532de61d9069 | 7 | SHA1 (patch-CVE-2013-4355_1) = 56dde995d7df4f18576040007fd5532de61d9069 | |
8 | SHA1 (patch-CVE-2013-4355_2) = 70fd2f2e45a05a53d8ce7d0bd72b18165dd13509 | 8 | SHA1 (patch-CVE-2013-4355_2) = 70fd2f2e45a05a53d8ce7d0bd72b18165dd13509 | |
9 | SHA1 (patch-CVE-2013-4355_3) = 93f7bf877945e585fb906dbfc8159e688813c12f | 9 | SHA1 (patch-CVE-2013-4355_3) = 93f7bf877945e585fb906dbfc8159e688813c12f | |
10 | SHA1 (patch-CVE-2013-4355_4) = 88f478997d2631ec41adfd42a9d79f2d87bb44d8 | 10 | SHA1 (patch-CVE-2013-4355_4) = 88f478997d2631ec41adfd42a9d79f2d87bb44d8 | |
11 | SHA1 (patch-CVE-2013-4361) = b9074af976ba98c02aeb84288a10527bf7693241 | 11 | SHA1 (patch-CVE-2013-4361) = b9074af976ba98c02aeb84288a10527bf7693241 | |
12 | SHA1 (patch-CVE-2013-4368) = 77caf392b472e5586eb2fa6a37d173cd856f6f15 | 12 | SHA1 (patch-CVE-2013-4368) = 77caf392b472e5586eb2fa6a37d173cd856f6f15 | |
13 | SHA1 (patch-CVE-2013-4494) = d74dfc898d1128f3c205bd178c8cf663935711e3 | 13 | SHA1 (patch-CVE-2013-4494) = d74dfc898d1128f3c205bd178c8cf663935711e3 | |
14 | SHA1 (patch-CVE-2013-4553) = 6708dcef1737b119a3fcf2e3414c22c115cbacc1 | 14 | SHA1 (patch-CVE-2013-4553) = 6708dcef1737b119a3fcf2e3414c22c115cbacc1 | |
15 | SHA1 (patch-CVE-2013-6885_1) = 18d155b2c76119988be32cfd43e3c4aa6a507b9d | 15 | SHA1 (patch-CVE-2013-6885_1) = 18d155b2c76119988be32cfd43e3c4aa6a507b9d | |
16 | SHA1 (patch-CVE-2013-6885_2) = be3c99ba3e349492d45cd4f2fce0acc26ac1a96d | 16 | SHA1 (patch-CVE-2013-6885_2) = be3c99ba3e349492d45cd4f2fce0acc26ac1a96d | |
17 | SHA1 (patch-CVE-2014-1666) = acf27080799d4aae6a03b556caadb01081d5314e | 17 | SHA1 (patch-CVE-2014-1666) = acf27080799d4aae6a03b556caadb01081d5314e | |
18 | SHA1 (patch-CVE-2014-3124) = 59a48eed88abcda5de2fc7e398451a492e5d2145 | 18 | SHA1 (patch-CVE-2014-3124) = 59a48eed88abcda5de2fc7e398451a492e5d2145 | |
19 | SHA1 (patch-CVE-2014-4021) = ee8ee800b35f7eaa242b06536c1ffa6568305b36 | 19 | SHA1 (patch-CVE-2014-4021) = ee8ee800b35f7eaa242b06536c1ffa6568305b36 | |
20 | SHA1 (patch-CVE-2014-7154) = 5f0541559d911778aa5267bb5c0e1e8a9a3904e2 | 20 | SHA1 (patch-CVE-2014-7154) = 5f0541559d911778aa5267bb5c0e1e8a9a3904e2 | |
21 | SHA1 (patch-CVE-2014-7155) = 0f1aa6a5d4fdb8403fc1e01b884491a63de501f8 | 21 | SHA1 (patch-CVE-2014-7155) = 0f1aa6a5d4fdb8403fc1e01b884491a63de501f8 | |
22 | SHA1 (patch-CVE-2014-7156) = 85043bdcf2644227d135f725cb442aade565c9d6 | 22 | SHA1 (patch-CVE-2014-7156) = 85043bdcf2644227d135f725cb442aade565c9d6 | |
23 | SHA1 (patch-CVE-2014-8594) = 39d9d220d89c2356fa745dad5bf8c7ef5e8f2516 | 23 | SHA1 (patch-CVE-2014-8594) = 39d9d220d89c2356fa745dad5bf8c7ef5e8f2516 | |
24 | SHA1 (patch-CVE-2014-8595) = 46bd285b7eb8f2e23984f7917b12af2191bfef80 | 24 | SHA1 (patch-CVE-2014-8595) = 46bd285b7eb8f2e23984f7917b12af2191bfef80 | |
25 | SHA1 (patch-CVE-2014-8866) = ee0bc3afb767b50e973d6065b84adc7e51949def | 25 | SHA1 (patch-CVE-2014-8866) = ee0bc3afb767b50e973d6065b84adc7e51949def | |
26 | SHA1 (patch-CVE-2014-8867) = 576433746660f62b753088a66c5315a1a2ff8f76 | 26 | SHA1 (patch-CVE-2014-8867) = 576433746660f62b753088a66c5315a1a2ff8f76 | |
27 | SHA1 (patch-CVE-2014-9030) = f52c302585b0f4b074f7562e6b8cddacb26deee4 | 27 | SHA1 (patch-CVE-2014-9030) = f52c302585b0f4b074f7562e6b8cddacb26deee4 | |
28 | SHA1 (patch-CVE-2015-2044) = 00d32273d0a9f51927ff94a13f916382c3126e60 | 28 | SHA1 (patch-CVE-2015-2044) = 00d32273d0a9f51927ff94a13f916382c3126e60 | |
29 | SHA1 (patch-CVE-2015-2045) = e1874bbde0cce7db4ee9260440f5280d404027d7 | 29 | SHA1 (patch-CVE-2015-2045) = e1874bbde0cce7db4ee9260440f5280d404027d7 | |
30 | SHA1 (patch-CVE-2015-2151) = aed92f50d162febc3074f7edecaf6ca418d0b42c | 30 | SHA1 (patch-CVE-2015-2151) = aed92f50d162febc3074f7edecaf6ca418d0b42c | |
31 | SHA1 (patch-CVE-2015-2752) = 37f44989a3b3c69dea8e9de9fc34ffd5c2e8b087 | |||
32 | SHA1 (patch-CVE-2015-2756) = b3b133d42229ecc8c308644b17e5317cd77f9a98 | |||
31 | SHA1 (patch-Config.mk) = a43ed1b3304d6383dc093acd128a7f373d0ca266 | 33 | SHA1 (patch-Config.mk) = a43ed1b3304d6383dc093acd128a7f373d0ca266 | |
32 | SHA1 (patch-xen_Makefile) = d1c7e4860221f93d90818f45a77748882486f92b | 34 | SHA1 (patch-xen_Makefile) = d1c7e4860221f93d90818f45a77748882486f92b | |
33 | SHA1 (patch-xen_arch_x86_Rules.mk) = 6b9b4bfa28924f7d3f6c793a389f1a7ac9d228e2 | 35 | SHA1 (patch-xen_arch_x86_Rules.mk) = 6b9b4bfa28924f7d3f6c793a389f1a7ac9d228e2 | |
34 | SHA1 (patch-xen_arch_x86_cpu_mcheck_vmce.c) = 5afd01780a13654f1d21bf1562f6431c8370be0b | 36 | SHA1 (patch-xen_arch_x86_cpu_mcheck_vmce.c) = 5afd01780a13654f1d21bf1562f6431c8370be0b | |
35 | SHA1 (patch-xen_arch_x86_time.c) = 1611959c08ad79e3f042ac70c8d9d57b60225289 | 37 | SHA1 (patch-xen_arch_x86_time.c) = 1611959c08ad79e3f042ac70c8d9d57b60225289 | |
36 | SHA1 (patch-xen_drivers_char_console_c) = 0fe186369602ccffaeec6f4bfbee8bb4298d3ff0 | 38 | SHA1 (patch-xen_drivers_char_console_c) = 0fe186369602ccffaeec6f4bfbee8bb4298d3ff0 | |
37 | SHA1 (patch-xen_include_xen_stdarg.h) = e9df974a9b783ed442ab17497198432cb9844b70 | 39 | SHA1 (patch-xen_include_xen_stdarg.h) = e9df974a9b783ed442ab17497198432cb9844b70 |
$NetBSD: patch-CVE-2015-2752,v 1.1.2.2 2015/04/29 21:11:12 tron Exp $
Patch for CVE-2015-2752 aka XSA-125 from
http://xenbits.xenproject.org/xsa/xsa125-4.2.patch
--- tools/libxc/xc_domain.c.orig 2013-09-10 06:42:18.000000000 +0000
+++ tools/libxc/xc_domain.c
@@ -1322,6 +1322,13 @@ int xc_domain_bind_pt_isa_irq(
PT_IRQ_TYPE_ISA, 0, 0, 0, machine_irq));
}
+#ifndef min
+#define min(X, Y) ({ \
+ const typeof (X) _x = (X); \
+ const typeof (Y) _y = (Y); \
+ (void) (&_x == &_y); \
+ (_x < _y) ? _x : _y; })
+#endif
int xc_domain_memory_mapping(
xc_interface *xch,
uint32_t domid,
@@ -1331,17 +1338,55 @@ int xc_domain_memory_mapping(
uint32_t add_mapping)
{
DECLARE_DOMCTL;
+ int ret = 0, err;
+ unsigned long done = 0, nr, max_batch_sz;
+
+ if ( !nr_mfns )
+ return 0;
domctl.cmd = XEN_DOMCTL_memory_mapping;
domctl.domain = domid;
- domctl.u.memory_mapping.first_gfn = first_gfn;
- domctl.u.memory_mapping.first_mfn = first_mfn;
- domctl.u.memory_mapping.nr_mfns = nr_mfns;
domctl.u.memory_mapping.add_mapping = add_mapping;
+ max_batch_sz = nr_mfns;
+ do
+ {
+ nr = min(nr_mfns - done, max_batch_sz);
+ domctl.u.memory_mapping.nr_mfns = nr;
+ domctl.u.memory_mapping.first_gfn = first_gfn + done;
+ domctl.u.memory_mapping.first_mfn = first_mfn + done;
+ err = do_domctl(xch, &domctl);
+ if ( err && errno == E2BIG )
+ {
+ if ( max_batch_sz <= 1 )
+ break;
+ max_batch_sz >>= 1;
+ continue;
+ }
+ /* Save the first error... */
+ if ( !ret )
+ ret = err;
+ /* .. and ignore the rest of them when removing. */
+ if ( err && add_mapping != DPCI_REMOVE_MAPPING )
+ break;
+
+ done += nr;
+ } while ( done < nr_mfns );
+
+ /*
+ * Undo what we have done unless unmapping, by unmapping the entire region.
+ * Errors here are ignored.
+ */
+ if ( ret && add_mapping != DPCI_REMOVE_MAPPING )
+ xc_domain_memory_mapping(xch, domid, first_gfn, first_mfn, nr_mfns,
+ DPCI_REMOVE_MAPPING);
+
+ /* We might get E2BIG so many times that we never advance. */
+ if ( !done && !ret )
+ ret = -1;
- return do_domctl(xch, &domctl);
+ return ret;
}
-
+#undef min
int xc_domain_ioport_mapping(
xc_interface *xch,
uint32_t domid,
--- xen/arch/x86/domctl.c.orig 2015-04-19 10:54:27.000000000 +0000
+++ xen/arch/x86/domctl.c
@@ -998,6 +998,11 @@ long arch_do_domctl(
(gfn + nr_mfns - 1) < gfn ) /* wrap? */
break;
+ ret = -E2BIG;
+ /* Must break hypercall up as this could take a while. */
+ if ( nr_mfns > 64 )
+ break;
+
ret = -EPERM;
if ( !IS_PRIV(current->domain) &&
!iomem_access_permitted(current->domain, mfn, mfn + nr_mfns - 1) )
--- xen/include/public/domctl.h.orig 2013-09-10 06:42:18.000000000 +0000
+++ xen/include/public/domctl.h
@@ -505,6 +505,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_bind_
/* Bind machine I/O address range -> HVM address range. */
+/* If this returns -E2BIG lower nr_mfns value. */
/* XEN_DOMCTL_memory_mapping */
#define DPCI_ADD_MAPPING 1
#define DPCI_REMOVE_MAPPING 0
$NetBSD: patch-CVE-2015-2756,v 1.1.2.2 2015/04/29 21:11:12 tron Exp $
patch for CVE-2015-2756 aka XSA-126 from
http://xenbits.xenproject.org/xsa/xsa126-qemut.patch
--- tools/ioemu-qemu-xen/hw/pass-through.c.orig 2013-07-17 10:59:40.000000000 +0000
+++ tools/ioemu-qemu-xen/hw/pass-through.c
@@ -171,9 +171,6 @@ static int pt_word_reg_read(struct pt_de
static int pt_long_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask);
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
@@ -277,9 +274,9 @@ static struct pt_reg_info_tbl pt_emu_reg
.size = 2,
.init_val = 0x0000,
.ro_mask = 0xF880,
- .emu_mask = 0x0740,
+ .emu_mask = 0x0743,
.init = pt_common_reg_init,
- .u.w.read = pt_cmd_reg_read,
+ .u.w.read = pt_word_reg_read,
.u.w.write = pt_cmd_reg_write,
.u.w.restore = pt_cmd_reg_restore,
},
@@ -1865,7 +1862,7 @@ static int pt_dev_is_virtfn(struct pci_d
return rc;
}
-static int pt_register_regions(struct pt_dev *assigned_device)
+static int pt_register_regions(struct pt_dev *assigned_device, uint16_t *cmd)
{
int i = 0;
uint32_t bar_data = 0;
@@ -1885,17 +1882,26 @@ static int pt_register_regions(struct pt
/* Register current region */
if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_IO )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_IO,
pt_ioport_map);
+ *cmd |= PCI_COMMAND_IO;
+ }
else if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_MEM_PREFETCH )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM_PREFETCH,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
else
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
PT_LOG("IO region registered (size=0x%08x base_addr=0x%08x)\n",
(uint32_t)(pci_dev->size[i]),
@@ -3221,27 +3227,6 @@ static int pt_long_reg_read(struct pt_de
return 0;
}
-/* read Command register */
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask)
-{
- struct pt_reg_info_tbl *reg = cfg_entry->reg;
- uint16_t valid_emu_mask = 0;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
-
- /* emulate word register */
- valid_emu_mask = emu_mask & valid_mask;
- *value = PT_MERGE_VALUE(*value, cfg_entry->data, ~valid_emu_mask);
-
- return 0;
-}
-
/* read BAR */
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
@@ -3376,19 +3361,13 @@ static int pt_cmd_reg_write(struct pt_de
uint16_t writable_mask = 0;
uint16_t throughable_mask = 0;
uint16_t wr_value = *value;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
/* modify emulate register */
writable_mask = ~reg->ro_mask & valid_mask;
cfg_entry->data = PT_MERGE_VALUE(*value, cfg_entry->data, writable_mask);
/* create value for writing to I/O device register */
- throughable_mask = ~emu_mask & valid_mask;
+ throughable_mask = ~reg->emu_mask & valid_mask;
if (*value & PCI_COMMAND_DISABLE_INTx)
{
@@ -4151,6 +4130,7 @@ static struct pt_dev * register_real_dev
struct pt_dev *assigned_device = NULL;
struct pci_dev *pci_dev;
uint8_t e_device, e_intx;
+ uint16_t cmd = 0;
char *key, *val;
int msi_translate, power_mgmt;
@@ -4240,7 +4220,7 @@ static struct pt_dev * register_real_dev
assigned_device->dev.config[i] = pci_read_byte(pci_dev, i);
/* Handle real device's MMIO/PIO BARs */
- pt_register_regions(assigned_device);
+ pt_register_regions(assigned_device, &cmd);
/* Setup VGA bios for passthroughed gfx */
if ( setup_vga_pt(assigned_device) < 0 )
@@ -4318,6 +4298,10 @@ static struct pt_dev * register_real_dev
}
out:
+ if (cmd)
+ pci_write_word(pci_dev, PCI_COMMAND,
+ *(uint16_t *)(&assigned_device->dev.config[PCI_COMMAND]) | cmd);
+
PT_LOG("Real physical device %02x:%02x.%x registered successfuly!\n"
"IRQ type = %s\n", r_bus, r_dev, r_func,
assigned_device->msi_trans_en? "MSI-INTx":"INTx");
@@ -1,56 +1,56 @@ | @@ -1,56 +1,56 @@ | |||
1 | # $NetBSD: Makefile,v 1.14 2015/03/18 15:05:51 joerg Exp $ | 1 | # $NetBSD: Makefile,v 1.14.2.1 2015/04/29 21:11:12 tron Exp $ | |
2 | 2 | |||
3 | VERSION= 4.2.5 | 3 | VERSION= 4.2.5 | |
4 | DISTNAME= xen-${VERSION} | 4 | DISTNAME= xen-${VERSION} | |
5 | PKGNAME= xenkernel42-${VERSION} | 5 | PKGNAME= xenkernel42-${VERSION} | |
6 | PKGREVISION= 5 | 6 | PKGREVISION= 6 | |
7 | CATEGORIES= sysutils | 7 | CATEGORIES= sysutils | |
8 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | 8 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | |
9 | 9 | |||
10 | MAINTAINER= pkgsrc-users@NetBSD.org | 10 | MAINTAINER= pkgsrc-users@NetBSD.org | |
11 | HOMEPAGE= http://xenproject.org/ | 11 | HOMEPAGE= http://xenproject.org/ | |
12 | COMMENT= Xen 4.2.x Kernel | 12 | COMMENT= Xen 4.2.x Kernel | |
13 | 13 | |||
14 | LICENSE= gnu-gpl-v2 | 14 | LICENSE= gnu-gpl-v2 | |
15 | 15 | |||
16 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | 16 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | |
17 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | 17 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | |
18 | 18 | |||
19 | NO_CONFIGURE= yes | 19 | NO_CONFIGURE= yes | |
20 | USE_TOOLS+= gmake | 20 | USE_TOOLS+= gmake | |
21 | 21 | |||
22 | PYTHON_FOR_BUILD_ONLY= YES | 22 | PYTHON_FOR_BUILD_ONLY= YES | |
23 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 # not yet ported as of 4.2.3 | 23 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 # not yet ported as of 4.2.3 | |
24 | 24 | |||
25 | MAKE_ENV+= OCAML_TOOLS=no | 25 | MAKE_ENV+= OCAML_TOOLS=no | |
26 | 26 | |||
27 | INSTALLATION_DIRS= xen42-kernel | 27 | INSTALLATION_DIRS= xen42-kernel | |
28 | XENKERNELDIR= ${PREFIX}/${INSTALLATION_DIRS} | 28 | XENKERNELDIR= ${PREFIX}/${INSTALLATION_DIRS} | |
29 | 29 | |||
30 | MESSAGE_SUBST+= XENKERNELDIR=${XENKERNELDIR} | 30 | MESSAGE_SUBST+= XENKERNELDIR=${XENKERNELDIR} | |
31 | 31 | |||
32 | .include "../../mk/compiler.mk" | 32 | .include "../../mk/compiler.mk" | |
33 | .if !empty(PKGSRC_COMPILER:Mclang) | 33 | .if !empty(PKGSRC_COMPILER:Mclang) | |
34 | EXTRA_CFLAGS+= -Qunused-arguments -no-integrated-as -Wno-error=format \ | 34 | EXTRA_CFLAGS+= -Qunused-arguments -no-integrated-as -Wno-error=format \ | |
35 | -Wno-error=parentheses-equality -Wno-error=enum-conversion \ | 35 | -Wno-error=parentheses-equality -Wno-error=enum-conversion \ | |
36 | -Wno-error=unused-function -Wno-error=unused-const-variable \ | 36 | -Wno-error=unused-function -Wno-error=unused-const-variable \ | |
37 | -Wno-error=pointer-bool-conversion | 37 | -Wno-error=pointer-bool-conversion | |
38 | .endif | 38 | .endif | |
39 | 39 | |||
40 | MAKE_ENV+= EXTRA_CFLAGS=${EXTRA_CFLAGS:Q} | 40 | MAKE_ENV+= EXTRA_CFLAGS=${EXTRA_CFLAGS:Q} | |
41 | 41 | |||
42 | do-build: | 42 | do-build: | |
43 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=n build | 43 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=n build | |
44 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen.gz | 44 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen.gz | |
45 | cd ${WRKSRC}/xen && ${MAKE_PROGRAM} clean | 45 | cd ${WRKSRC}/xen && ${MAKE_PROGRAM} clean | |
46 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=y build | 46 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=y build | |
47 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen-debug.gz | 47 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen-debug.gz | |
48 | 48 | |||
49 | do-install: | 49 | do-install: | |
50 | ${INSTALL_DATA} ${WRKDIR}/xen.gz \ | 50 | ${INSTALL_DATA} ${WRKDIR}/xen.gz \ | |
51 | ${DESTDIR}${XENKERNELDIR}/xen.gz | 51 | ${DESTDIR}${XENKERNELDIR}/xen.gz | |
52 | ${INSTALL_DATA} ${WRKDIR}/xen-debug.gz \ | 52 | ${INSTALL_DATA} ${WRKDIR}/xen-debug.gz \ | |
53 | ${DESTDIR}${XENKERNELDIR}/xen-debug.gz | 53 | ${DESTDIR}${XENKERNELDIR}/xen-debug.gz | |
54 | 54 | |||
55 | .include "../../lang/python/application.mk" | 55 | .include "../../lang/python/application.mk" | |
56 | .include "../../mk/bsd.pkg.mk" | 56 | .include "../../mk/bsd.pkg.mk" |
@@ -1,25 +1,27 @@ | @@ -1,25 +1,27 @@ | |||
1 | $NetBSD: distinfo,v 1.12 2015/03/18 15:05:51 joerg Exp $ | 1 | $NetBSD: distinfo,v 1.12.2.1 2015/04/29 21:11:12 tron Exp $ | |
2 | 2 | |||
3 | SHA1 (xen-4.2.5.tar.gz) = f42741e4ec174495ace70c4b17a6b9b0e60e798a | 3 | SHA1 (xen-4.2.5.tar.gz) = f42741e4ec174495ace70c4b17a6b9b0e60e798a | |
4 | RMD160 (xen-4.2.5.tar.gz) = 7d4f7f1b32ee541d341a756b1f8da02816438d19 | 4 | RMD160 (xen-4.2.5.tar.gz) = 7d4f7f1b32ee541d341a756b1f8da02816438d19 | |
5 | Size (xen-4.2.5.tar.gz) = 15671925 bytes | 5 | Size (xen-4.2.5.tar.gz) = 15671925 bytes | |
6 | SHA1 (patch-CVE-2014-8594) = 8599e5007e8f15eddc1385aa1d90accf1690952e | 6 | SHA1 (patch-CVE-2014-8594) = 8599e5007e8f15eddc1385aa1d90accf1690952e | |
7 | SHA1 (patch-CVE-2014-8595) = 46bd285b7eb8f2e23984f7917b12af2191bfef80 | 7 | SHA1 (patch-CVE-2014-8595) = 46bd285b7eb8f2e23984f7917b12af2191bfef80 | |
8 | SHA1 (patch-CVE-2014-8866) = 9888e9585364681dfaa43af953eb104715cc4f99 | 8 | SHA1 (patch-CVE-2014-8866) = 9888e9585364681dfaa43af953eb104715cc4f99 | |
9 | SHA1 (patch-CVE-2014-8867) = 576433746660f62b753088a66c5315a1a2ff8f76 | 9 | SHA1 (patch-CVE-2014-8867) = 576433746660f62b753088a66c5315a1a2ff8f76 | |
10 | SHA1 (patch-CVE-2014-9030) = f4646ab2b0d01ad2a3bf47839fe0ffd35479b4a6 | 10 | SHA1 (patch-CVE-2014-9030) = f4646ab2b0d01ad2a3bf47839fe0ffd35479b4a6 | |
11 | SHA1 (patch-CVE-2015-2044) = bcb7152da8d37902540cbfbdfd7309536cffa61e | 11 | SHA1 (patch-CVE-2015-2044) = bcb7152da8d37902540cbfbdfd7309536cffa61e | |
12 | SHA1 (patch-CVE-2015-2045) = f70839fabd4ef9086c8fb808e4f3448a8e844c98 | 12 | SHA1 (patch-CVE-2015-2045) = f70839fabd4ef9086c8fb808e4f3448a8e844c98 | |
13 | SHA1 (patch-CVE-2015-2151) = df05750b86331b88102b41f065c314c38c6bc396 | 13 | SHA1 (patch-CVE-2015-2151) = df05750b86331b88102b41f065c314c38c6bc396 | |
14 | SHA1 (patch-CVE-2015-2752) = 62547b55385aaf54af23270939fe086b996d5744 | |||
15 | SHA1 (patch-CVE-2015-2756) = cb1be46c28e6f88c13fc0d26ff0606bdb877283c | |||
14 | SHA1 (patch-Config.mk) = a43ed1b3304d6383dc093acd128a7f373d0ca266 | 16 | SHA1 (patch-Config.mk) = a43ed1b3304d6383dc093acd128a7f373d0ca266 | |
15 | SHA1 (patch-xen_Makefile) = e0d1b74518b9675ddc64295d1523ded9a8757c0a | 17 | SHA1 (patch-xen_Makefile) = e0d1b74518b9675ddc64295d1523ded9a8757c0a | |
16 | SHA1 (patch-xen_arch_x86_Rules.mk) = 6b9b4bfa28924f7d3f6c793a389f1a7ac9d228e2 | 18 | SHA1 (patch-xen_arch_x86_Rules.mk) = 6b9b4bfa28924f7d3f6c793a389f1a7ac9d228e2 | |
17 | SHA1 (patch-xen_arch_x86_hvm_hvm.c) = b6bac1d466ba5bc276bc3aea9d4c9df37f2b9b0f | 19 | SHA1 (patch-xen_arch_x86_hvm_hvm.c) = b6bac1d466ba5bc276bc3aea9d4c9df37f2b9b0f | |
18 | SHA1 (patch-xen_arch_x86_mm_shadow_common.c) = 89dce860cc6aef7d0ec31f3137616b592490e60a | 20 | SHA1 (patch-xen_arch_x86_mm_shadow_common.c) = 89dce860cc6aef7d0ec31f3137616b592490e60a | |
19 | SHA1 (patch-xen_arch_x86_x86_emulate_x86_emulate.c) = 8b906e762c8f94a670398b4e033d50a2fb012f0a | 21 | SHA1 (patch-xen_arch_x86_x86_emulate_x86_emulate.c) = 8b906e762c8f94a670398b4e033d50a2fb012f0a | |
20 | SHA1 (patch-xen_common_spinlock.c) = 06f06b5e9b098262ebaa8af0be4837005fb5b8b4 | 22 | SHA1 (patch-xen_common_spinlock.c) = 06f06b5e9b098262ebaa8af0be4837005fb5b8b4 | |
21 | SHA1 (patch-xen_include_asm-arm_spinlock.h) = fe2e35a5ebec4c551df5d1680c93e6ad19348d93 | 23 | SHA1 (patch-xen_include_asm-arm_spinlock.h) = fe2e35a5ebec4c551df5d1680c93e6ad19348d93 | |
22 | SHA1 (patch-xen_include_asm-x86_atomic.h) = d406c6071ea3823c25113a801dd77ff32146d162 | 24 | SHA1 (patch-xen_include_asm-x86_atomic.h) = d406c6071ea3823c25113a801dd77ff32146d162 | |
23 | SHA1 (patch-xen_include_asm-x86_spinlock.h) = fbaaf264e9aa4857635a81b63c4a77cba4bf560f | 25 | SHA1 (patch-xen_include_asm-x86_spinlock.h) = fbaaf264e9aa4857635a81b63c4a77cba4bf560f | |
24 | SHA1 (patch-xen_include_xen_lib.h) = 36dcaf3874a1b1214babc45d7e19fe3b556c1044 | 26 | SHA1 (patch-xen_include_xen_lib.h) = 36dcaf3874a1b1214babc45d7e19fe3b556c1044 | |
25 | SHA1 (patch-xen_include_xen_spinlock.h) = 8e06de55c9b4bfc360e0b8ac5a605adedab8eb8f | 27 | SHA1 (patch-xen_include_xen_spinlock.h) = 8e06de55c9b4bfc360e0b8ac5a605adedab8eb8f |
$NetBSD: patch-CVE-2015-2752,v 1.1.2.2 2015/04/29 21:11:12 tron Exp $
Patch for CVE-2015-2752 aka XSA-125 from
http://xenbits.xenproject.org/xsa/xsa125-4.2.patch
--- tools/libxc/xc_domain.c.orig 2014-09-02 06:22:57.000000000 +0000
+++ tools/libxc/xc_domain.c
@@ -1352,6 +1352,13 @@ int xc_domain_bind_pt_isa_irq(
PT_IRQ_TYPE_ISA, 0, 0, 0, machine_irq));
}
+#ifndef min
+#define min(X, Y) ({ \
+ const typeof (X) _x = (X); \
+ const typeof (Y) _y = (Y); \
+ (void) (&_x == &_y); \
+ (_x < _y) ? _x : _y; })
+#endif
int xc_domain_memory_mapping(
xc_interface *xch,
uint32_t domid,
@@ -1361,17 +1368,55 @@ int xc_domain_memory_mapping(
uint32_t add_mapping)
{
DECLARE_DOMCTL;
+ int ret = 0, err;
+ unsigned long done = 0, nr, max_batch_sz;
+
+ if ( !nr_mfns )
+ return 0;
domctl.cmd = XEN_DOMCTL_memory_mapping;
domctl.domain = domid;
- domctl.u.memory_mapping.first_gfn = first_gfn;
- domctl.u.memory_mapping.first_mfn = first_mfn;
- domctl.u.memory_mapping.nr_mfns = nr_mfns;
domctl.u.memory_mapping.add_mapping = add_mapping;
+ max_batch_sz = nr_mfns;
+ do
+ {
+ nr = min(nr_mfns - done, max_batch_sz);
+ domctl.u.memory_mapping.nr_mfns = nr;
+ domctl.u.memory_mapping.first_gfn = first_gfn + done;
+ domctl.u.memory_mapping.first_mfn = first_mfn + done;
+ err = do_domctl(xch, &domctl);
+ if ( err && errno == E2BIG )
+ {
+ if ( max_batch_sz <= 1 )
+ break;
+ max_batch_sz >>= 1;
+ continue;
+ }
+ /* Save the first error... */
+ if ( !ret )
+ ret = err;
+ /* .. and ignore the rest of them when removing. */
+ if ( err && add_mapping != DPCI_REMOVE_MAPPING )
+ break;
+
+ done += nr;
+ } while ( done < nr_mfns );
+
+ /*
+ * Undo what we have done unless unmapping, by unmapping the entire region.
+ * Errors here are ignored.
+ */
+ if ( ret && add_mapping != DPCI_REMOVE_MAPPING )
+ xc_domain_memory_mapping(xch, domid, first_gfn, first_mfn, nr_mfns,
+ DPCI_REMOVE_MAPPING);
+
+ /* We might get E2BIG so many times that we never advance. */
+ if ( !done && !ret )
+ ret = -1;
- return do_domctl(xch, &domctl);
+ return ret;
}
-
+#undef min
int xc_domain_ioport_mapping(
xc_interface *xch,
uint32_t domid,
--- xen/arch/x86/domctl.c.orig 2014-09-02 06:22:57.000000000 +0000
+++ xen/arch/x86/domctl.c
@@ -865,6 +865,11 @@ long arch_do_domctl(
(gfn + nr_mfns - 1) < gfn ) /* wrap? */
break;
+ ret = -E2BIG;
+ /* Must break hypercall up as this could take a while. */
+ if ( nr_mfns > 64 )
+ break;
+
ret = -EPERM;
if ( !IS_PRIV(current->domain) &&
!iomem_access_permitted(current->domain, mfn, mfn + nr_mfns - 1) )
--- xen/include/public/domctl.h.orig 2014-09-02 06:22:57.000000000 +0000
+++ xen/include/public/domctl.h
@@ -507,6 +507,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_bind_
/* Bind machine I/O address range -> HVM address range. */
+/* If this returns -E2BIG lower nr_mfns value. */
/* XEN_DOMCTL_memory_mapping */
#define DPCI_ADD_MAPPING 1
#define DPCI_REMOVE_MAPPING 0
$NetBSD: patch-CVE-2015-2756,v 1.1.2.2 2015/04/29 21:11:12 tron Exp $
patch for CVE-2015-2756 aka XSA-126 from
http://xenbits.xenproject.org/xsa/xsa126-qemut.patch
--- tools/qemu-xen-traditional/hw/pass-through.c.orig 2014-01-09 12:44:42.000000000 +0000
+++ tools/qemu-xen-traditional/hw/pass-through.c
@@ -172,9 +172,6 @@ static int pt_word_reg_read(struct pt_de
static int pt_long_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask);
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
@@ -286,9 +283,9 @@ static struct pt_reg_info_tbl pt_emu_reg
.size = 2,
.init_val = 0x0000,
.ro_mask = 0xF880,
- .emu_mask = 0x0740,
+ .emu_mask = 0x0743,
.init = pt_common_reg_init,
- .u.w.read = pt_cmd_reg_read,
+ .u.w.read = pt_word_reg_read,
.u.w.write = pt_cmd_reg_write,
.u.w.restore = pt_cmd_reg_restore,
},
@@ -1905,7 +1902,7 @@ static int pt_dev_is_virtfn(struct pci_d
return rc;
}
-static int pt_register_regions(struct pt_dev *assigned_device)
+static int pt_register_regions(struct pt_dev *assigned_device, uint16_t *cmd)
{
int i = 0;
uint32_t bar_data = 0;
@@ -1925,17 +1922,26 @@ static int pt_register_regions(struct pt
/* Register current region */
if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_IO )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_IO,
pt_ioport_map);
+ *cmd |= PCI_COMMAND_IO;
+ }
else if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_MEM_PREFETCH )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM_PREFETCH,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
else
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
PT_LOG("IO region registered (size=0x%08x base_addr=0x%08x)\n",
(uint32_t)(pci_dev->size[i]),
@@ -3263,27 +3269,6 @@ static int pt_long_reg_read(struct pt_de
return 0;
}
-/* read Command register */
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask)
-{
- struct pt_reg_info_tbl *reg = cfg_entry->reg;
- uint16_t valid_emu_mask = 0;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
-
- /* emulate word register */
- valid_emu_mask = emu_mask & valid_mask;
- *value = PT_MERGE_VALUE(*value, cfg_entry->data, ~valid_emu_mask);
-
- return 0;
-}
-
/* read BAR */
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
@@ -3418,19 +3403,13 @@ static int pt_cmd_reg_write(struct pt_de
uint16_t writable_mask = 0;
uint16_t throughable_mask = 0;
uint16_t wr_value = *value;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
/* modify emulate register */
writable_mask = ~reg->ro_mask & valid_mask;
cfg_entry->data = PT_MERGE_VALUE(*value, cfg_entry->data, writable_mask);
/* create value for writing to I/O device register */
- throughable_mask = ~emu_mask & valid_mask;
+ throughable_mask = ~reg->emu_mask & valid_mask;
if (*value & PCI_COMMAND_DISABLE_INTx)
{
@@ -4205,6 +4184,7 @@ static struct pt_dev * register_real_dev
struct pt_dev *assigned_device = NULL;
struct pci_dev *pci_dev;
uint8_t e_device, e_intx;
+ uint16_t cmd = 0;
char *key, *val;
int msi_translate, power_mgmt;
@@ -4294,7 +4274,7 @@ static struct pt_dev * register_real_dev
assigned_device->dev.config[i] = pci_read_byte(pci_dev, i);
/* Handle real device's MMIO/PIO BARs */
- pt_register_regions(assigned_device);
+ pt_register_regions(assigned_device, &cmd);
/* Setup VGA bios for passthroughed gfx */
if ( setup_vga_pt(assigned_device) < 0 )
@@ -4372,6 +4352,10 @@ static struct pt_dev * register_real_dev
}
out:
+ if (cmd)
+ pci_write_word(pci_dev, PCI_COMMAND,
+ *(uint16_t *)(&assigned_device->dev.config[PCI_COMMAND]) | cmd);
+
PT_LOG("Real physical device %02x:%02x.%x registered successfuly!\n"
"IRQ type = %s\n", r_bus, r_dev, r_func,
assigned_device->msi_trans_en? "MSI-INTx":"INTx");
@@ -1,56 +1,56 @@ | @@ -1,56 +1,56 @@ | |||
1 | # $NetBSD: Makefile,v 1.5 2015/03/10 20:08:43 spz Exp $ | 1 | # $NetBSD: Makefile,v 1.5.2.1 2015/04/29 21:11:12 tron Exp $ | |
2 | 2 | |||
3 | VERSION= 4.5.0 | 3 | VERSION= 4.5.0 | |
4 | DISTNAME= xen-${VERSION} | 4 | DISTNAME= xen-${VERSION} | |
5 | PKGNAME= xenkernel45-${VERSION} | 5 | PKGNAME= xenkernel45-${VERSION} | |
6 | PKGREVISION= 2 | 6 | PKGREVISION= 3 | |
7 | CATEGORIES= sysutils | 7 | CATEGORIES= sysutils | |
8 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | 8 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | |
9 | 9 | |||
10 | MAINTAINER= pkgsrc-users@NetBSD.org | 10 | MAINTAINER= pkgsrc-users@NetBSD.org | |
11 | HOMEPAGE= http://xenproject.org/ | 11 | HOMEPAGE= http://xenproject.org/ | |
12 | COMMENT= Xen 4.5.x Kernel | 12 | COMMENT= Xen 4.5.x Kernel | |
13 | 13 | |||
14 | LICENSE= gnu-gpl-v2 | 14 | LICENSE= gnu-gpl-v2 | |
15 | 15 | |||
16 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | 16 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | |
17 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | 17 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | |
18 | 18 | |||
19 | NO_CONFIGURE= yes | 19 | NO_CONFIGURE= yes | |
20 | USE_TOOLS+= gmake | 20 | USE_TOOLS+= gmake | |
21 | 21 | |||
22 | PYTHON_FOR_BUILD_ONLY= YES | 22 | PYTHON_FOR_BUILD_ONLY= YES | |
23 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 | 23 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 | |
24 | 24 | |||
25 | MAKE_ENV+= OCAML_TOOLS=no | 25 | MAKE_ENV+= OCAML_TOOLS=no | |
26 | 26 | |||
27 | INSTALLATION_DIRS= xen45-kernel | 27 | INSTALLATION_DIRS= xen45-kernel | |
28 | XENKERNELDIR= ${PREFIX}/${INSTALLATION_DIRS} | 28 | XENKERNELDIR= ${PREFIX}/${INSTALLATION_DIRS} | |
29 | 29 | |||
30 | MESSAGE_SUBST+= XENKERNELDIR=${XENKERNELDIR} | 30 | MESSAGE_SUBST+= XENKERNELDIR=${XENKERNELDIR} | |
31 | 31 | |||
32 | .include "../../mk/compiler.mk" | 32 | .include "../../mk/compiler.mk" | |
33 | .if !empty(PKGSRC_COMPILER:Mclang) | 33 | .if !empty(PKGSRC_COMPILER:Mclang) | |
34 | EXTRA_CFLAGS+= -Qunused-arguments -no-integrated-as -Wno-error=format \ | 34 | EXTRA_CFLAGS+= -Qunused-arguments -no-integrated-as -Wno-error=format \ | |
35 | -Wno-error=parentheses-equality -Wno-error=enum-conversion \ | 35 | -Wno-error=parentheses-equality -Wno-error=enum-conversion \ | |
36 | -Wno-error=unused-function -Wno-error=unused-const-variable \ | 36 | -Wno-error=unused-function -Wno-error=unused-const-variable \ | |
37 | -Wno-error=ignored-attributes -Wno-error=initializer-overrides | 37 | -Wno-error=ignored-attributes -Wno-error=initializer-overrides | |
38 | .endif | 38 | .endif | |
39 | 39 | |||
40 | MAKE_ENV+= EXTRA_CFLAGS=${EXTRA_CFLAGS:Q} | 40 | MAKE_ENV+= EXTRA_CFLAGS=${EXTRA_CFLAGS:Q} | |
41 | 41 | |||
42 | do-build: | 42 | do-build: | |
43 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=n build | 43 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=n build | |
44 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen.gz | 44 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen.gz | |
45 | cd ${WRKSRC}/xen && ${MAKE_PROGRAM} clean | 45 | cd ${WRKSRC}/xen && ${MAKE_PROGRAM} clean | |
46 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=y build | 46 | cd ${WRKSRC}/xen && ${BUILD_MAKE_CMD} debug=y build | |
47 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen-debug.gz | 47 | ${CP} ${WRKSRC}/xen/xen.gz ${WRKDIR}/xen-debug.gz | |
48 | 48 | |||
49 | do-install: | 49 | do-install: | |
50 | ${INSTALL_DATA} ${WRKDIR}/xen.gz \ | 50 | ${INSTALL_DATA} ${WRKDIR}/xen.gz \ | |
51 | ${DESTDIR}${XENKERNELDIR}/xen.gz | 51 | ${DESTDIR}${XENKERNELDIR}/xen.gz | |
52 | ${INSTALL_DATA} ${WRKDIR}/xen-debug.gz \ | 52 | ${INSTALL_DATA} ${WRKDIR}/xen-debug.gz \ | |
53 | ${DESTDIR}${XENKERNELDIR}/xen-debug.gz | 53 | ${DESTDIR}${XENKERNELDIR}/xen-debug.gz | |
54 | 54 | |||
55 | .include "../../lang/python/application.mk" | 55 | .include "../../lang/python/application.mk" | |
56 | .include "../../mk/bsd.pkg.mk" | 56 | .include "../../mk/bsd.pkg.mk" |
@@ -1,13 +1,15 @@ | @@ -1,13 +1,15 @@ | |||
1 | $NetBSD: distinfo,v 1.4 2015/03/10 20:08:43 spz Exp $ | 1 | $NetBSD: distinfo,v 1.4.2.1 2015/04/29 21:11:12 tron Exp $ | |
2 | 2 | |||
3 | SHA1 (xen-4.5.0.tar.gz) = c4aab5fb366496ad1edc7fe0a935a0d604335637 | 3 | SHA1 (xen-4.5.0.tar.gz) = c4aab5fb366496ad1edc7fe0a935a0d604335637 | |
4 | RMD160 (xen-4.5.0.tar.gz) = e35ba0cb484492c1a289218eb9bf53b57dbd3a45 | 4 | RMD160 (xen-4.5.0.tar.gz) = e35ba0cb484492c1a289218eb9bf53b57dbd3a45 | |
5 | Size (xen-4.5.0.tar.gz) = 18404933 bytes | 5 | Size (xen-4.5.0.tar.gz) = 18404933 bytes | |
6 | SHA1 (patch-CVE-2015-2044) = 354fe44df0c3b464137f50e2b9de3930f3910c0d | 6 | SHA1 (patch-CVE-2015-2044) = 354fe44df0c3b464137f50e2b9de3930f3910c0d | |
7 | SHA1 (patch-CVE-2015-2045) = 98e3f8064b7c190b2ae69c7d4c8f71febf8fbf52 | 7 | SHA1 (patch-CVE-2015-2045) = 98e3f8064b7c190b2ae69c7d4c8f71febf8fbf52 | |
8 | SHA1 (patch-CVE-2015-2151) = 30344d233eade872fa7062493d754f8bccaf9d2a | 8 | SHA1 (patch-CVE-2015-2151) = 30344d233eade872fa7062493d754f8bccaf9d2a | |
9 | SHA1 (patch-CVE-2015-2752) = 390edab296a91c83197205dce7030cbdd60e0d78 | |||
10 | SHA1 (patch-CVE-2015-2756) = e76490b858e213d09d326b413004d29a7e177b20 | |||
9 | SHA1 (patch-Config.mk) = a2a104d023cea4e551a3ad40927d4884d6c610bf | 11 | SHA1 (patch-Config.mk) = a2a104d023cea4e551a3ad40927d4884d6c610bf | |
10 | SHA1 (patch-xen_Makefile) = 750d0c8d4fea14d3ef3f872de5242a1f5104cbbe | 12 | SHA1 (patch-xen_Makefile) = 750d0c8d4fea14d3ef3f872de5242a1f5104cbbe | |
11 | SHA1 (patch-xen_arch_x86_Rules.mk) = 7b0894ba7311edb02118a021671f304cf3872154 | 13 | SHA1 (patch-xen_arch_x86_Rules.mk) = 7b0894ba7311edb02118a021671f304cf3872154 | |
12 | SHA1 (patch-xen_include_asm-x86_current.h) = 8a21577be06383c0c7f53c15ba828f77fb6314ad | 14 | SHA1 (patch-xen_include_asm-x86_current.h) = 8a21577be06383c0c7f53c15ba828f77fb6314ad | |
13 | SHA1 (patch-xen_include_xen_lib.h) = b9f5dff5b4cf11333d95d9835941c6bc19b776ad | 15 | SHA1 (patch-xen_include_xen_lib.h) = b9f5dff5b4cf11333d95d9835941c6bc19b776ad |
$NetBSD: patch-CVE-2015-2752,v 1.1.2.2 2015/04/29 21:11:12 tron Exp $
Patch for CVE-2015-2752 aka XSA-125 from
http://xenbits.xenproject.org/xsa/xsa125-4.2.patch
--- tools/libxc/xc_domain.c.orig 2015-01-12 16:53:24.000000000 +0000
+++ tools/libxc/xc_domain.c
@@ -1992,6 +1992,8 @@ int xc_domain_memory_mapping(
{
DECLARE_DOMCTL;
xc_dominfo_t info;
+ int ret = 0, err;
+ unsigned long done = 0, nr, max_batch_sz;
if ( xc_domain_getinfo(xch, domid, 1, &info) != 1 ||
info.domid != domid )
@@ -2002,14 +2004,50 @@ int xc_domain_memory_mapping(
if ( !xc_core_arch_auto_translated_physmap(&info) )
return 0;
+ if ( !nr_mfns )
+ return 0;
+
domctl.cmd = XEN_DOMCTL_memory_mapping;
domctl.domain = domid;
- domctl.u.memory_mapping.first_gfn = first_gfn;
- domctl.u.memory_mapping.first_mfn = first_mfn;
- domctl.u.memory_mapping.nr_mfns = nr_mfns;
domctl.u.memory_mapping.add_mapping = add_mapping;
+ max_batch_sz = nr_mfns;
+ do
+ {
+ nr = min(nr_mfns - done, max_batch_sz);
+ domctl.u.memory_mapping.nr_mfns = nr;
+ domctl.u.memory_mapping.first_gfn = first_gfn + done;
+ domctl.u.memory_mapping.first_mfn = first_mfn + done;
+ err = do_domctl(xch, &domctl);
+ if ( err && errno == E2BIG )
+ {
+ if ( max_batch_sz <= 1 )
+ break;
+ max_batch_sz >>= 1;
+ continue;
+ }
+ /* Save the first error... */
+ if ( !ret )
+ ret = err;
+ /* .. and ignore the rest of them when removing. */
+ if ( err && add_mapping != DPCI_REMOVE_MAPPING )
+ break;
+
+ done += nr;
+ } while ( done < nr_mfns );
+
+ /*
+ * Undo what we have done unless unmapping, by unmapping the entire region.
+ * Errors here are ignored.
+ */
+ if ( ret && add_mapping != DPCI_REMOVE_MAPPING )
+ xc_domain_memory_mapping(xch, domid, first_gfn, first_mfn, nr_mfns,
+ DPCI_REMOVE_MAPPING);
+
+ /* We might get E2BIG so many times that we never advance. */
+ if ( !done && !ret )
+ ret = -1;
- return do_domctl(xch, &domctl);
+ return ret;
}
int xc_domain_ioport_mapping(
--- xen/common/domctl.c.orig 2015-01-12 16:53:24.000000000 +0000
+++ xen/common/domctl.c
@@ -1036,6 +1036,11 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xe
(gfn + nr_mfns - 1) < gfn ) /* wrap? */
break;
+ ret = -E2BIG;
+ /* Must break hypercall up as this could take a while. */
+ if ( nr_mfns > 64 )
+ break;
+
ret = -EPERM;
if ( !iomem_access_permitted(current->domain, mfn, mfn_end) ||
!iomem_access_permitted(d, mfn, mfn_end) )
--- xen/include/public/domctl.h.orig 2015-01-12 16:53:24.000000000 +0000
+++ xen/include/public/domctl.h
@@ -543,6 +543,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_bind_
/* Bind machine I/O address range -> HVM address range. */
+/* If this returns -E2BIG lower nr_mfns value. */
/* XEN_DOMCTL_memory_mapping */
#define DPCI_ADD_MAPPING 1
#define DPCI_REMOVE_MAPPING 0
$NetBSD: patch-CVE-2015-2756,v 1.1.2.2 2015/04/29 21:11:12 tron Exp $
patch for CVE-2015-2756 aka XSA-126 from
http://xenbits.xenproject.org/xsa/xsa126-qemuu.patch
and
http://xenbits.xenproject.org/xsa/xsa126-qemut.patch
--- tools/qemu-xen/hw/xen/xen_pt.c.orig 2014-12-02 10:41:02.000000000 +0000
+++ tools/qemu-xen/hw/xen/xen_pt.c
@@ -388,7 +388,7 @@ static const MemoryRegionOps ops = {
.write = xen_pt_bar_write,
};
-static int xen_pt_register_regions(XenPCIPassthroughState *s)
+static int xen_pt_register_regions(XenPCIPassthroughState *s, uint16_t *cmd)
{
int i = 0;
XenHostPCIDevice *d = &s->real_device;
@@ -406,6 +406,7 @@ static int xen_pt_register_regions(XenPC
if (r->type & XEN_HOST_PCI_REGION_TYPE_IO) {
type = PCI_BASE_ADDRESS_SPACE_IO;
+ *cmd |= PCI_COMMAND_IO;
} else {
type = PCI_BASE_ADDRESS_SPACE_MEMORY;
if (r->type & XEN_HOST_PCI_REGION_TYPE_PREFETCH) {
@@ -414,6 +415,7 @@ static int xen_pt_register_regions(XenPC
if (r->type & XEN_HOST_PCI_REGION_TYPE_MEM_64) {
type |= PCI_BASE_ADDRESS_MEM_TYPE_64;
}
+ *cmd |= PCI_COMMAND_MEMORY;
}
memory_region_init_io(&s->bar[i], OBJECT(s), &ops, &s->dev,
@@ -657,6 +659,7 @@ static int xen_pt_initfn(PCIDevice *d)
XenPCIPassthroughState *s = DO_UPCAST(XenPCIPassthroughState, dev, d);
int rc = 0;
uint8_t machine_irq = 0;
+ uint16_t cmd = 0;
int pirq = XEN_PT_UNASSIGNED_PIRQ;
/* register real device */
@@ -691,7 +694,7 @@ static int xen_pt_initfn(PCIDevice *d)
s->io_listener = xen_pt_io_listener;
/* Handle real device's MMIO/PIO BARs */
- xen_pt_register_regions(s);
+ xen_pt_register_regions(s, &cmd);
/* reinitialize each config register to be emulated */
if (xen_pt_config_init(s)) {
@@ -755,6 +758,11 @@ static int xen_pt_initfn(PCIDevice *d)
}
out:
+ if (cmd) {
+ xen_host_pci_set_word(&s->real_device, PCI_COMMAND,
+ pci_get_word(d->config + PCI_COMMAND) | cmd);
+ }
+
memory_listener_register(&s->memory_listener, &address_space_memory);
memory_listener_register(&s->io_listener, &address_space_io);
XEN_PT_LOG(d,
--- tools/qemu-xen/hw/xen/xen_pt_config_init.c.orig 2014-12-02 10:41:02.000000000 +0000
+++ tools/qemu-xen/hw/xen/xen_pt_config_init.c
@@ -286,23 +286,6 @@ static int xen_pt_irqpin_reg_init(XenPCI
}
/* Command register */
-static int xen_pt_cmd_reg_read(XenPCIPassthroughState *s, XenPTReg *cfg_entry,
- uint16_t *value, uint16_t valid_mask)
-{
- XenPTRegInfo *reg = cfg_entry->reg;
- uint16_t valid_emu_mask = 0;
- uint16_t emu_mask = reg->emu_mask;
-
- if (s->is_virtfn) {
- emu_mask |= PCI_COMMAND_MEMORY;
- }
-
- /* emulate word register */
- valid_emu_mask = emu_mask & valid_mask;
- *value = XEN_PT_MERGE_VALUE(*value, cfg_entry->data, ~valid_emu_mask);
-
- return 0;
-}
static int xen_pt_cmd_reg_write(XenPCIPassthroughState *s, XenPTReg *cfg_entry,
uint16_t *val, uint16_t dev_value,
uint16_t valid_mask)
@@ -310,18 +293,13 @@ static int xen_pt_cmd_reg_write(XenPCIPa
XenPTRegInfo *reg = cfg_entry->reg;
uint16_t writable_mask = 0;
uint16_t throughable_mask = 0;
- uint16_t emu_mask = reg->emu_mask;
-
- if (s->is_virtfn) {
- emu_mask |= PCI_COMMAND_MEMORY;
- }
/* modify emulate register */
writable_mask = ~reg->ro_mask & valid_mask;
cfg_entry->data = XEN_PT_MERGE_VALUE(*val, cfg_entry->data, writable_mask);
/* create value for writing to I/O device register */
- throughable_mask = ~emu_mask & valid_mask;
+ throughable_mask = ~reg->emu_mask & valid_mask;
if (*val & PCI_COMMAND_INTX_DISABLE) {
throughable_mask |= PCI_COMMAND_INTX_DISABLE;
@@ -605,9 +583,9 @@ static XenPTRegInfo xen_pt_emu_reg_heade
.size = 2,
.init_val = 0x0000,
.ro_mask = 0xF880,
- .emu_mask = 0x0740,
+ .emu_mask = 0x0743,
.init = xen_pt_common_reg_init,
- .u.w.read = xen_pt_cmd_reg_read,
+ .u.w.read = xen_pt_word_reg_read,
.u.w.write = xen_pt_cmd_reg_write,
},
/* Capabilities Pointer reg */
--- tools/qemu-xen-traditional/hw/pass-through.c.orig 2014-10-06 15:50:24.000000000 +0000
+++ tools/qemu-xen-traditional/hw/pass-through.c
@@ -172,9 +172,6 @@ static int pt_word_reg_read(struct pt_de
static int pt_long_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask);
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
@@ -286,9 +283,9 @@ static struct pt_reg_info_tbl pt_emu_reg
.size = 2,
.init_val = 0x0000,
.ro_mask = 0xF880,
- .emu_mask = 0x0740,
+ .emu_mask = 0x0743,
.init = pt_common_reg_init,
- .u.w.read = pt_cmd_reg_read,
+ .u.w.read = pt_word_reg_read,
.u.w.write = pt_cmd_reg_write,
.u.w.restore = pt_cmd_reg_restore,
},
@@ -1905,7 +1902,7 @@ static int pt_dev_is_virtfn(struct pci_d
return rc;
}
-static int pt_register_regions(struct pt_dev *assigned_device)
+static int pt_register_regions(struct pt_dev *assigned_device, uint16_t *cmd)
{
int i = 0;
uint32_t bar_data = 0;
@@ -1925,17 +1922,26 @@ static int pt_register_regions(struct pt
/* Register current region */
if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_IO )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_IO,
pt_ioport_map);
+ *cmd |= PCI_COMMAND_IO;
+ }
else if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_MEM_PREFETCH )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM_PREFETCH,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
else
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
PT_LOG("IO region registered (size=0x%08x base_addr=0x%08x)\n",
(uint32_t)(pci_dev->size[i]),
@@ -3263,27 +3269,6 @@ static int pt_long_reg_read(struct pt_de
return 0;
}
-/* read Command register */
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask)
-{
- struct pt_reg_info_tbl *reg = cfg_entry->reg;
- uint16_t valid_emu_mask = 0;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
-
- /* emulate word register */
- valid_emu_mask = emu_mask & valid_mask;
- *value = PT_MERGE_VALUE(*value, cfg_entry->data, ~valid_emu_mask);
-
- return 0;
-}
-
/* read BAR */
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
@@ -3418,19 +3403,13 @@ static int pt_cmd_reg_write(struct pt_de
uint16_t writable_mask = 0;
uint16_t throughable_mask = 0;
uint16_t wr_value = *value;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
/* modify emulate register */
writable_mask = ~reg->ro_mask & valid_mask;
cfg_entry->data = PT_MERGE_VALUE(*value, cfg_entry->data, writable_mask);
/* create value for writing to I/O device register */
- throughable_mask = ~emu_mask & valid_mask;
+ throughable_mask = ~reg->emu_mask & valid_mask;
if (*value & PCI_COMMAND_DISABLE_INTx)
{
@@ -4211,6 +4190,7 @@ static struct pt_dev * register_real_dev
struct pt_dev *assigned_device = NULL;
struct pci_dev *pci_dev;
uint8_t e_device, e_intx;
+ uint16_t cmd = 0;
char *key, *val;
int msi_translate, power_mgmt;
@@ -4300,7 +4280,7 @@ static struct pt_dev * register_real_dev
assigned_device->dev.config[i] = pci_read_byte(pci_dev, i);
/* Handle real device's MMIO/PIO BARs */
- pt_register_regions(assigned_device);
+ pt_register_regions(assigned_device, &cmd);
/* Setup VGA bios for passthroughed gfx */
if ( setup_vga_pt(assigned_device) < 0 )
@@ -4378,6 +4358,10 @@ static struct pt_dev * register_real_dev
}
out:
+ if (cmd)
+ pci_write_word(pci_dev, PCI_COMMAND,
+ *(uint16_t *)(&assigned_device->dev.config[PCI_COMMAND]) | cmd);
+
PT_LOG("Real physical device %02x:%02x.%x registered successfuly!\n"
"IRQ type = %s\n", r_bus, r_dev, r_func,
assigned_device->msi_trans_en? "MSI-INTx":"INTx");
@@ -1,204 +1,204 @@ | @@ -1,204 +1,204 @@ | |||
1 | # $NetBSD: Makefile,v 1.49 2014/12/27 00:27:11 gdt Exp $ | 1 | # $NetBSD: Makefile,v 1.49.4.1 2015/04/29 21:11:13 tron Exp $ | |
2 | # | 2 | # | |
3 | # VERSION is set in version.mk as it is shared with other packages | 3 | # VERSION is set in version.mk as it is shared with other packages | |
4 | .include "version.mk" | 4 | .include "version.mk" | |
5 | 5 | |||
6 | DISTNAME= xen-${VERSION} | 6 | DISTNAME= xen-${VERSION} | |
7 | PKGNAME= xentools41-${VERSION} | 7 | PKGNAME= xentools41-${VERSION} | |
8 | PKGREVISION= 6 | 8 | PKGREVISION= 7 | |
9 | CATEGORIES= sysutils | 9 | CATEGORIES= sysutils | |
10 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | 10 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | |
11 | 11 | |||
12 | DISTFILES= ${DISTNAME}.tar.gz | 12 | DISTFILES= ${DISTNAME}.tar.gz | |
13 | DISTFILES+= ipxe-git-v${VERSION_IPXE}.tar.gz | 13 | DISTFILES+= ipxe-git-v${VERSION_IPXE}.tar.gz | |
14 | SITES.ipxe-git-v${VERSION_IPXE}.tar.gz += http://xenbits.xensource.com/xen-extfiles/ | 14 | SITES.ipxe-git-v${VERSION_IPXE}.tar.gz += http://xenbits.xensource.com/xen-extfiles/ | |
15 | 15 | |||
16 | MAINTAINER= cegger@NetBSD.org | 16 | MAINTAINER= cegger@NetBSD.org | |
17 | HOMEPAGE= http://xen.org/ | 17 | HOMEPAGE= http://xen.org/ | |
18 | COMMENT= Userland Tools for Xen 4.1.x | 18 | COMMENT= Userland Tools for Xen 4.1.x | |
19 | 19 | |||
20 | LICENSE= gnu-gpl-v2 | 20 | LICENSE= gnu-gpl-v2 | |
21 | 21 | |||
22 | #DEPENDS+= ${PYPKGPREFIX}-readline-[0-9]*:../../devel/py-readline | 22 | #DEPENDS+= ${PYPKGPREFIX}-readline-[0-9]*:../../devel/py-readline | |
23 | DEPENDS+= ${PYPKGPREFIX}-curses>=0nb4:../../devel/py-curses | 23 | DEPENDS+= ${PYPKGPREFIX}-curses>=0nb4:../../devel/py-curses | |
24 | 24 | |||
25 | # XXX add version check: Xen requires dev86 >= 0.16.14 | 25 | # XXX add version check: Xen requires dev86 >= 0.16.14 | |
26 | BUILD_DEPENDS+= dev86-[0-9]*:../../devel/dev86 # needed to build firmware | 26 | BUILD_DEPENDS+= dev86-[0-9]*:../../devel/dev86 # needed to build firmware | |
27 | .if !exists(/usr/bin/iasl) | 27 | .if !exists(/usr/bin/iasl) | |
28 | BUILD_DEPENDS+= acpica-utils-[0-9]*:../../sysutils/acpica-utils | 28 | BUILD_DEPENDS+= acpica-utils-[0-9]*:../../sysutils/acpica-utils | |
29 | .endif | 29 | .endif | |
30 | 30 | |||
31 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 # py-xml | 31 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 # py-xml | |
32 | 32 | |||
33 | PKG_SYSCONFSUBDIR= xen | 33 | PKG_SYSCONFSUBDIR= xen | |
34 | 34 | |||
35 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | 35 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | |
36 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | 36 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | |
37 | 37 | |||
38 | CONFLICTS+= libxen-[0-9]* | 38 | CONFLICTS+= libxen-[0-9]* | |
39 | CONFLICTS+= xentools20-[0-9]* | 39 | CONFLICTS+= xentools20-[0-9]* | |
40 | CONFLICTS+= xentools3* | 40 | CONFLICTS+= xentools3* | |
41 | CONFLICTS+= xenstoretools-* | 41 | CONFLICTS+= xenstoretools-* | |
42 | 42 | |||
43 | WRKSRC= ${WRKDIR}/xen-${VERSION}/tools | 43 | WRKSRC= ${WRKDIR}/xen-${VERSION}/tools | |
44 | CHECK_PORTABILITY_SKIP= examples/* | 44 | CHECK_PORTABILITY_SKIP= examples/* | |
45 | 45 | |||
46 | EGDIR= ${PREFIX}/share/examples/xen | 46 | EGDIR= ${PREFIX}/share/examples/xen | |
47 | MESSAGE_SUBST= EGDIR=${EGDIR} | 47 | MESSAGE_SUBST= EGDIR=${EGDIR} | |
48 | 48 | |||
49 | USE_TOOLS+= perl #for pod2man | 49 | USE_TOOLS+= perl #for pod2man | |
50 | USE_TOOLS+= gmake pkg-config | 50 | USE_TOOLS+= gmake pkg-config | |
51 | 51 | |||
52 | MAKE_ENV+= PREFIX=${prefix:Q} WRKSRC=${WRKSRC} | 52 | MAKE_ENV+= PREFIX=${prefix:Q} WRKSRC=${WRKSRC} | |
53 | MAKE_ENV+= EGDIR=${EGDIR:Q} | 53 | MAKE_ENV+= EGDIR=${EGDIR:Q} | |
54 | MAKE_ENV+= BASH_COMPLETION_DIR=${EGDIR:Q} | 54 | MAKE_ENV+= BASH_COMPLETION_DIR=${EGDIR:Q} | |
55 | MAKE_ENV+= MV=${MV:Q} PYTHON=${PYTHONBIN:Q} SED=${SED:Q} | 55 | MAKE_ENV+= MV=${MV:Q} PYTHON=${PYTHONBIN:Q} SED=${SED:Q} | |
56 | MAKE_ENV+= VARBASE=${VARBASE} | 56 | MAKE_ENV+= VARBASE=${VARBASE} | |
57 | MAKE_ENV+= XEN_CONFIG_DIR=${PKG_SYSCONFDIR} | 57 | MAKE_ENV+= XEN_CONFIG_DIR=${PKG_SYSCONFDIR} | |
58 | MAKE_ENV+= V=YES | 58 | MAKE_ENV+= V=YES | |
59 | 59 | |||
60 | #MAKE_ENV+= INSTALL_DIR=${BSD_INSTALL_DATA_DIR} | 60 | #MAKE_ENV+= INSTALL_DIR=${BSD_INSTALL_DATA_DIR} | |
61 | #MAKE_ENV+= INSTALL_DATA=${BSD_INSTALL_DATA} | 61 | #MAKE_ENV+= INSTALL_DATA=${BSD_INSTALL_DATA} | |
62 | #MAKE_ENV+= INSTALL_PROG=${BSD_INSTALL_PROGRAM} | 62 | #MAKE_ENV+= INSTALL_PROG=${BSD_INSTALL_PROGRAM} | |
63 | 63 | |||
64 | PY_PATCHPLIST= yes | 64 | PY_PATCHPLIST= yes | |
65 | #REPLACE_PYTHON+= misc/xm | 65 | #REPLACE_PYTHON+= misc/xm | |
66 | #REPLACE_PYTHON+= misc/netfix | 66 | #REPLACE_PYTHON+= misc/netfix | |
67 | #REPLACE_PYTHON+= misc/xen-bugtool | 67 | #REPLACE_PYTHON+= misc/xen-bugtool | |
68 | #REPLACE_PYTHON+= misc/xencons | 68 | #REPLACE_PYTHON+= misc/xencons | |
69 | #REPLACE_PYTHON+= misc/xend | 69 | #REPLACE_PYTHON+= misc/xend | |
70 | #REPLACE_PYTHON+= misc/xensymoops | 70 | #REPLACE_PYTHON+= misc/xensymoops | |
71 | #REPLACE_PYTHON+= misc/xen-python-path | 71 | #REPLACE_PYTHON+= misc/xen-python-path | |
72 | #REPLACE_PYTHON+= pygrub/src/pygrub | 72 | #REPLACE_PYTHON+= pygrub/src/pygrub | |
73 | #REPLACE_PYTHON+= python/xen/util/*.py | 73 | #REPLACE_PYTHON+= python/xen/util/*.py | |
74 | #REPLACE_PYTHON+= python/xen/xend/*.py | 74 | #REPLACE_PYTHON+= python/xen/xend/*.py | |
75 | #REPLACE_PYTHON+= python/xen/xm/*.py | 75 | #REPLACE_PYTHON+= python/xen/xm/*.py | |
76 | #REPLACE_PYTHON+= python/xen/util/*.py | 76 | #REPLACE_PYTHON+= python/xen/util/*.py | |
77 | #REPLACE_PYTHON+= python/*.py | 77 | #REPLACE_PYTHON+= python/*.py | |
78 | #REPLACE_PYTHON+= security/python/xensec_gen/cgi-bin/policy.cgi | 78 | #REPLACE_PYTHON+= security/python/xensec_gen/cgi-bin/policy.cgi | |
79 | #REPLACE_PYTHON+= security/python/xensec_gen/*.py | 79 | #REPLACE_PYTHON+= security/python/xensec_gen/*.py | |
80 | #REPLACE_PYTHON+= security/python/*.py | 80 | #REPLACE_PYTHON+= security/python/*.py | |
81 | #REPLACE_PYTHON+= security/*.py | 81 | #REPLACE_PYTHON+= security/*.py | |
82 | #REPLACE_PYTHON+= xenmon/*.py | 82 | #REPLACE_PYTHON+= xenmon/*.py | |
83 | #REPLACE_PYTHON+= xentrace/xentrace_format | 83 | #REPLACE_PYTHON+= xentrace/xentrace_format | |
84 | 84 | |||
85 | REPLACE_PYTHON+= python/xen/remus/*.py | 85 | REPLACE_PYTHON+= python/xen/remus/*.py | |
86 | REPLACE_PYTHON+= python/xen/util/*.py | 86 | REPLACE_PYTHON+= python/xen/util/*.py | |
87 | REPLACE_PYTHON+= python/xen/xend/*.py | 87 | REPLACE_PYTHON+= python/xen/xend/*.py | |
88 | REPLACE_PYTHON+= python/xen/xm/*.py | 88 | REPLACE_PYTHON+= python/xen/xm/*.py | |
89 | REPLACE_PYTHON+= xenmon/xenmon.py | 89 | REPLACE_PYTHON+= xenmon/xenmon.py | |
90 | 90 | |||
91 | SUBST_CLASSES+= pathsvar | 91 | SUBST_CLASSES+= pathsvar | |
92 | SUBST_STAGE.pathsvar= pre-configure | 92 | SUBST_STAGE.pathsvar= pre-configure | |
93 | SUBST_FILES.pathsvar= Makefile \ | 93 | SUBST_FILES.pathsvar= Makefile \ | |
94 | examples/xend-config.sxp \ | 94 | examples/xend-config.sxp \ | |
95 | hotplug/Linux/init.d/sysconfig.xendomains \ | 95 | hotplug/Linux/init.d/sysconfig.xendomains \ | |
96 | python/xen/xend/XendOptions.py \ | 96 | python/xen/xend/XendOptions.py \ | |
97 | python/xen/xend/server/relocate.py \ | 97 | python/xen/xend/server/relocate.py \ | |
98 | python/xen/xend/tests/xend-config.sxp \ | 98 | python/xen/xend/tests/xend-config.sxp \ | |
99 | security/Makefile \ | 99 | security/Makefile \ | |
100 | security/python/xensec_gen/main.py \ | 100 | security/python/xensec_gen/main.py \ | |
101 | xenstore/xs_lib.c | 101 | xenstore/xs_lib.c | |
102 | SUBST_SED.pathsvar= -e "s|/var/lib|${VARBASE}/run|g" | 102 | SUBST_SED.pathsvar= -e "s|/var/lib|${VARBASE}/run|g" | |
103 | 103 | |||
104 | SUBST_CLASSES+= conf | 104 | SUBST_CLASSES+= conf | |
105 | SUBST_STAGE.conf= pre-configure | 105 | SUBST_STAGE.conf= pre-configure | |
106 | SUBST_FILES.conf+= python/xen/xm/create.py | 106 | SUBST_FILES.conf+= python/xen/xm/create.py | |
107 | SUBST_FILES.conf+= ocaml/xenstored/define.ml | 107 | SUBST_FILES.conf+= ocaml/xenstored/define.ml | |
108 | SUBST_SED.conf= -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" | 108 | SUBST_SED.conf= -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" | |
109 | 109 | |||
110 | .include "../../mk/bsd.prefs.mk" | 110 | .include "../../mk/bsd.prefs.mk" | |
111 | 111 | |||
112 | XEND_SCRIPTS= block vif-bridge vif-ip qemu-ifup hotplugpath.sh | 112 | XEND_SCRIPTS= block vif-bridge vif-ip qemu-ifup hotplugpath.sh | |
113 | 113 | |||
114 | .if ${OPSYS} == "NetBSD" | 114 | .if ${OPSYS} == "NetBSD" | |
115 | SUBST_CLASSES+= proc | 115 | SUBST_CLASSES+= proc | |
116 | SUBST_STAGE.proc= pre-configure | 116 | SUBST_STAGE.proc= pre-configure | |
117 | SUBST_FILES.proc= python/xen/xend/XendVnet.py | 117 | SUBST_FILES.proc= python/xen/xend/XendVnet.py | |
118 | SUBST_FILES.proc+= ocaml/xenstored/define.ml | 118 | SUBST_FILES.proc+= ocaml/xenstored/define.ml | |
119 | SUBST_SED.proc= -e "s|/proc|/kern|g" | 119 | SUBST_SED.proc= -e "s|/proc|/kern|g" | |
120 | PROCPATH= /kern | 120 | PROCPATH= /kern | |
121 | .else | 121 | .else | |
122 | PROCPATH= /proc | 122 | PROCPATH= /proc | |
123 | .endif | 123 | .endif | |
124 | 124 | |||
125 | SUBST_CLASSES+= procdev | 125 | SUBST_CLASSES+= procdev | |
126 | SUBST_STAGE.procdev= pre-configure | 126 | SUBST_STAGE.procdev= pre-configure | |
127 | SUBST_FILES.procdev= ocaml/xenstored/define.ml | 127 | SUBST_FILES.procdev= ocaml/xenstored/define.ml | |
128 | .if ${OPSYS} == "NetBSD" | 128 | .if ${OPSYS} == "NetBSD" | |
129 | SUBST_SED.procdev= -e "s|@PROCDEV@|/dev|g" | 129 | SUBST_SED.procdev= -e "s|@PROCDEV@|/dev|g" | |
130 | .else | 130 | .else | |
131 | SUBST_SED.procdev= -e "s|@PROCDEV@|/proc/xen|g" | 131 | SUBST_SED.procdev= -e "s|@PROCDEV@|/proc/xen|g" | |
132 | .endif | 132 | .endif | |
133 | 133 | |||
134 | RCD_SCRIPTS= xen-watchdog xencommons xend xendomains | 134 | RCD_SCRIPTS= xen-watchdog xencommons xend xendomains | |
135 | FILES_SUBST+= RCD_INTERPRETER=${PYTHONBIN:Q} | 135 | FILES_SUBST+= RCD_INTERPRETER=${PYTHONBIN:Q} | |
136 | FILES_SUBST+= PROCPATH=${PROCPATH:Q} | 136 | FILES_SUBST+= PROCPATH=${PROCPATH:Q} | |
137 | FILES_SUBST+= PKG_SYSCONFDIR=${PKG_SYSCONFDIR:Q} | 137 | FILES_SUBST+= PKG_SYSCONFDIR=${PKG_SYSCONFDIR:Q} | |
138 | FILES_SUBST+= PREFIX=${PREFIX:Q} | 138 | FILES_SUBST+= PREFIX=${PREFIX:Q} | |
139 | 139 | |||
140 | BLKTAP_FILES= blk_netbsd.c blktapctrl_netbsd.c | 140 | BLKTAP_FILES= blk_netbsd.c blktapctrl_netbsd.c | |
141 | 141 | |||
142 | CONF_FILES+= ${EGDIR}/xend-config.sxp ${PKG_SYSCONFDIR}/xend-config.sxp | 142 | CONF_FILES+= ${EGDIR}/xend-config.sxp ${PKG_SYSCONFDIR}/xend-config.sxp | |
143 | CONF_FILES+= ${EGDIR}/formats ${PKG_SYSCONFDIR}/formats | 143 | CONF_FILES+= ${EGDIR}/formats ${PKG_SYSCONFDIR}/formats | |
144 | CONF_FILES+= ${EGDIR}/xm-config.xml ${PKG_SYSCONFDIR}/xm-config.xml | 144 | CONF_FILES+= ${EGDIR}/xm-config.xml ${PKG_SYSCONFDIR}/xm-config.xml | |
145 | 145 | |||
146 | OWN_DIRS= ${PKG_SYSCONFDIR}/scripts ${VARBASE}/log/xen ${VARBASE}/lib | 146 | OWN_DIRS= ${PKG_SYSCONFDIR}/scripts ${VARBASE}/log/xen ${VARBASE}/lib | |
147 | 147 | |||
148 | .for s in ${XEND_SCRIPTS} | 148 | .for s in ${XEND_SCRIPTS} | |
149 | CONF_FILES_PERMS+= ${EGDIR}/scripts/${s} ${PKG_SYSCONFDIR}/scripts/${s} \ | 149 | CONF_FILES_PERMS+= ${EGDIR}/scripts/${s} ${PKG_SYSCONFDIR}/scripts/${s} \ | |
150 | ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0755 | 150 | ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0755 | |
151 | .endfor | 151 | .endfor | |
152 | 152 | |||
153 | pre-build: | 153 | pre-build: | |
154 | rm -f ${WRKSRC}/check/check_x11_devel | 154 | rm -f ${WRKSRC}/check/check_x11_devel | |
155 | .for s in ${BLKTAP_FILES} | 155 | .for s in ${BLKTAP_FILES} | |
156 | ${CP} ${FILESDIR}/${s} ${WRKSRC}/blktap/drivers/ | 156 | ${CP} ${FILESDIR}/${s} ${WRKSRC}/blktap/drivers/ | |
157 | .endfor | 157 | .endfor | |
158 | pod2man ${WRKSRC}/../docs/man/xend-config.sxp.pod.5 |\ | 158 | pod2man ${WRKSRC}/../docs/man/xend-config.sxp.pod.5 |\ | |
159 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 159 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
160 | >${WRKDIR}/xend-config.sxp.5 | 160 | >${WRKDIR}/xend-config.sxp.5 | |
161 | pod2man ${WRKSRC}/../docs/man/xmdomain.cfg.pod.5 |\ | 161 | pod2man ${WRKSRC}/../docs/man/xmdomain.cfg.pod.5 |\ | |
162 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 162 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
163 | >${WRKDIR}/xmdomain.cfg.5 | 163 | >${WRKDIR}/xmdomain.cfg.5 | |
164 | pod2man ${WRKSRC}/../docs/man/xm.pod.1 |\ | 164 | pod2man ${WRKSRC}/../docs/man/xm.pod.1 |\ | |
165 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 165 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
166 | >${WRKDIR}/xm.1 | 166 | >${WRKDIR}/xm.1 | |
167 | 167 | |||
168 | INSTALLATION_DIRS= ${EGDIR} ${PKGMANDIR}/man5 | 168 | INSTALLATION_DIRS= ${EGDIR} ${PKGMANDIR}/man5 | |
169 | 169 | |||
170 | post-install: | 170 | post-install: | |
171 | for f in xend-config.sxp xmexample1 xmexample2 xmexample3; do \ | 171 | for f in xend-config.sxp xmexample1 xmexample2 xmexample3; do \ | |
172 | ${INSTALL_DATA} ${WRKSRC}/examples/$$f ${DESTDIR}${EGDIR}/$$f; \ | 172 | ${INSTALL_DATA} ${WRKSRC}/examples/$$f ${DESTDIR}${EGDIR}/$$f; \ | |
173 | done | 173 | done | |
174 | ${INSTALL_DATA} ${WRKDIR}/xend-config.sxp.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | 174 | ${INSTALL_DATA} ${WRKDIR}/xend-config.sxp.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | |
175 | ${INSTALL_DATA} ${WRKDIR}/xmdomain.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | 175 | ${INSTALL_DATA} ${WRKDIR}/xmdomain.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | |
176 | ${INSTALL_DATA} ${WRKDIR}/xm.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1 | 176 | ${INSTALL_DATA} ${WRKDIR}/xm.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1 | |
177 | 177 | |||
178 | .if ${OPSYS} == "NetBSD" && !exists(/var/shm) | 178 | .if ${OPSYS} == "NetBSD" && !exists(/var/shm) | |
179 | CPPFLAGS+= -Dshm_open=open -Dshm_unlink=unlink | 179 | CPPFLAGS+= -Dshm_open=open -Dshm_unlink=unlink | |
180 | .endif | 180 | .endif | |
181 | 181 | |||
182 | .include "../../mk/compiler.mk" | 182 | .include "../../mk/compiler.mk" | |
183 | .if !empty(PKGSRC_COMPILER:Mclang) | 183 | .if !empty(PKGSRC_COMPILER:Mclang) | |
184 | EXTRA_HOSTCFLAGS+= -Wno-error=ignored-attributes | 184 | EXTRA_HOSTCFLAGS+= -Wno-error=ignored-attributes | |
185 | EXTRA_CFLAGS+= -Wno-error=ignored-attributes -no-integrated-as \ | 185 | EXTRA_CFLAGS+= -Wno-error=ignored-attributes -no-integrated-as \ | |
186 | -Wno-error=tautological-compare -Wno-error=null-dereference \ | 186 | -Wno-error=tautological-compare -Wno-error=null-dereference \ | |
187 | -Wno-error=empty-body -Wno-error=self-assign \ | 187 | -Wno-error=empty-body -Wno-error=self-assign \ | |
188 | -Wno-error=sometimes-uninitialized -Wno-error=unused-function | 188 | -Wno-error=sometimes-uninitialized -Wno-error=unused-function | |
189 | BUILDLINK_TRANSFORM+= rm:-falign-jumps=1 rm:-falign-loops=1 \ | 189 | BUILDLINK_TRANSFORM+= rm:-falign-jumps=1 rm:-falign-loops=1 \ | |
190 | rm:-mpreferred-stack-boundary=2 | 190 | rm:-mpreferred-stack-boundary=2 | |
191 | .endif | 191 | .endif | |
192 | 192 | |||
193 | MAKE_ENV+= EXTRA_HOSTCFLAGS=${EXTRA_HOSTCFLAGS:Q} EXTRA_CFLAGS=${EXTRA_CFLAGS:Q} | 193 | MAKE_ENV+= EXTRA_HOSTCFLAGS=${EXTRA_HOSTCFLAGS:Q} EXTRA_CFLAGS=${EXTRA_CFLAGS:Q} | |
194 | 194 | |||
195 | .include "../../lang/python/application.mk" | 195 | .include "../../lang/python/application.mk" | |
196 | .include "../../lang/python/extension.mk" | 196 | .include "../../lang/python/extension.mk" | |
197 | .include "../../textproc/py-xml/buildlink3.mk" | 197 | .include "../../textproc/py-xml/buildlink3.mk" | |
198 | .include "../../devel/ncurses/buildlink3.mk" | 198 | .include "../../devel/ncurses/buildlink3.mk" | |
199 | #.include "../../devel/SDL/buildlink3.mk" | 199 | #.include "../../devel/SDL/buildlink3.mk" | |
200 | .include "../../lang/ocaml/buildlink3.mk" | 200 | .include "../../lang/ocaml/buildlink3.mk" | |
201 | .include "../../devel/ocaml-findlib/buildlink3.mk" | 201 | .include "../../devel/ocaml-findlib/buildlink3.mk" | |
202 | .include "../../sysutils/pciutils/buildlink3.mk" | 202 | .include "../../sysutils/pciutils/buildlink3.mk" | |
203 | 203 | |||
204 | .include "../../mk/bsd.pkg.mk" | 204 | .include "../../mk/bsd.pkg.mk" |
@@ -1,64 +1,66 @@ | @@ -1,64 +1,66 @@ | |||
1 | $NetBSD: distinfo,v 1.37 2014/08/28 14:30:03 bouyer Exp $ | 1 | $NetBSD: distinfo,v 1.37.6.1 2015/04/29 21:11:13 tron Exp $ | |
2 | 2 | |||
3 | SHA1 (ipxe-git-v1.0.0.tar.gz) = da052c8de5f3485fe0253c19cf52ed6d72528485 | 3 | SHA1 (ipxe-git-v1.0.0.tar.gz) = da052c8de5f3485fe0253c19cf52ed6d72528485 | |
4 | RMD160 (ipxe-git-v1.0.0.tar.gz) = dcd9b6eaafa1ce05c1ebf2a15f2f73ad7a8c5547 | 4 | RMD160 (ipxe-git-v1.0.0.tar.gz) = dcd9b6eaafa1ce05c1ebf2a15f2f73ad7a8c5547 | |
5 | Size (ipxe-git-v1.0.0.tar.gz) = 1996881 bytes | 5 | Size (ipxe-git-v1.0.0.tar.gz) = 1996881 bytes | |
6 | SHA1 (xen-4.1.6.1.tar.gz) = e5f15feb0821578817a65ede16110c6eac01abd0 | 6 | SHA1 (xen-4.1.6.1.tar.gz) = e5f15feb0821578817a65ede16110c6eac01abd0 | |
7 | RMD160 (xen-4.1.6.1.tar.gz) = bff11421fc44a26f2cc3156713267abcb36d7a19 | 7 | RMD160 (xen-4.1.6.1.tar.gz) = bff11421fc44a26f2cc3156713267abcb36d7a19 | |
8 | Size (xen-4.1.6.1.tar.gz) = 10428485 bytes | 8 | Size (xen-4.1.6.1.tar.gz) = 10428485 bytes | |
9 | SHA1 (patch-.._.._ipxe_src_arch_i386_include_librm.h) = 4549ac641b112321b4731a918d85219c3fce6808 | 9 | SHA1 (patch-.._.._ipxe_src_arch_i386_include_librm.h) = 4549ac641b112321b4731a918d85219c3fce6808 | |
10 | SHA1 (patch-.._.._ipxe_src_core_settings.c) = 240ff973757403b983f12b2cbed826584c4a8aba | 10 | SHA1 (patch-.._.._ipxe_src_core_settings.c) = 240ff973757403b983f12b2cbed826584c4a8aba | |
11 | SHA1 (patch-.._.._ipxe_src_net_tls.c) = c0cfbc2ab2b92c659c146601c4f80d58c951ca62 | 11 | SHA1 (patch-.._.._ipxe_src_net_tls.c) = c0cfbc2ab2b92c659c146601c4f80d58c951ca62 | |
12 | SHA1 (patch-.._Config.mk) = 9b971a41f67bb3974d3a4459bb9d96fbbd636c96 | 12 | SHA1 (patch-.._Config.mk) = 9b971a41f67bb3974d3a4459bb9d96fbbd636c96 | |
13 | SHA1 (patch-CVE-2014-1950) = b0d900722fd0f59a50f1e1eda1471105d5b557e5 | 13 | SHA1 (patch-CVE-2014-1950) = b0d900722fd0f59a50f1e1eda1471105d5b557e5 | |
14 | SHA1 (patch-CVE-2015-2752) = f9bca0b8744233e20ff97c3e8e2e404522e87f49 | |||
15 | SHA1 (patch-CVE-2015-2756) = 07aaac4bcd0dfc6d708c1823288b9fc789ebd125 | |||
14 | SHA1 (patch-aa) = 9b53ba4a809dad7a1de34c8fa0dbe493d7256ada | 16 | SHA1 (patch-aa) = 9b53ba4a809dad7a1de34c8fa0dbe493d7256ada | |
15 | SHA1 (patch-ab) = 0906a5ec3a7450fc987b01289e2560e60966d00d | 17 | SHA1 (patch-ab) = 0906a5ec3a7450fc987b01289e2560e60966d00d | |
16 | SHA1 (patch-ac) = c3cc5335a1d6b066307c5f03fe72f513a9eb2bdb | 18 | SHA1 (patch-ac) = c3cc5335a1d6b066307c5f03fe72f513a9eb2bdb | |
17 | SHA1 (patch-ad) = 5eb15470bff85d30b6d26d8fe094f59fc8e34175 | 19 | SHA1 (patch-ad) = 5eb15470bff85d30b6d26d8fe094f59fc8e34175 | |
18 | SHA1 (patch-ae) = 400bd6cac23af1e75f45c3e4e88e3130a3517129 | 20 | SHA1 (patch-ae) = 400bd6cac23af1e75f45c3e4e88e3130a3517129 | |
19 | SHA1 (patch-af) = e866e7d96766b735a53432350275810803eeb510 | 21 | SHA1 (patch-af) = e866e7d96766b735a53432350275810803eeb510 | |
20 | SHA1 (patch-ag) = 90893326dcce4e3e2ef273f22ec5ddf5af0f7cd8 | 22 | SHA1 (patch-ag) = 90893326dcce4e3e2ef273f22ec5ddf5af0f7cd8 | |
21 | SHA1 (patch-ah) = ab91c41ef6bbdd7f7f3d992b9f81e43056a765e2 | 23 | SHA1 (patch-ah) = ab91c41ef6bbdd7f7f3d992b9f81e43056a765e2 | |
22 | SHA1 (patch-ai) = 8da6bba38bd7677ea829ca35058f7d2d1d7acad4 | 24 | SHA1 (patch-ai) = 8da6bba38bd7677ea829ca35058f7d2d1d7acad4 | |
23 | SHA1 (patch-aj) = d0999d8dcbc1eef4de7037db0e54dcd8d2f706eb | 25 | SHA1 (patch-aj) = d0999d8dcbc1eef4de7037db0e54dcd8d2f706eb | |
24 | SHA1 (patch-ak) = 722a6b0541b036d84c703037134e25bc47f3eb65 | 26 | SHA1 (patch-ak) = 722a6b0541b036d84c703037134e25bc47f3eb65 | |
25 | SHA1 (patch-al) = d9a310c16db708dd86170a13946f87e4cd21eb7a | 27 | SHA1 (patch-al) = d9a310c16db708dd86170a13946f87e4cd21eb7a | |
26 | SHA1 (patch-am) = b89785a97208454eb3f2e1e43ba4674ad0828aa6 | 28 | SHA1 (patch-am) = b89785a97208454eb3f2e1e43ba4674ad0828aa6 | |
27 | SHA1 (patch-ba) = 2c65e4b4b85e91e92dfb3aa402ebc44694bdff06 | 29 | SHA1 (patch-ba) = 2c65e4b4b85e91e92dfb3aa402ebc44694bdff06 | |
28 | SHA1 (patch-bb) = 64a61fb156bcb6a99ff0963063a0716b808e3b61 | 30 | SHA1 (patch-bb) = 64a61fb156bcb6a99ff0963063a0716b808e3b61 | |
29 | SHA1 (patch-bc) = 25c99a428fda6dee709888ddbcfdcfef5f654564 | 31 | SHA1 (patch-bc) = 25c99a428fda6dee709888ddbcfdcfef5f654564 | |
30 | SHA1 (patch-ca) = 36afc7b063f83adfe5b927ed0be586b102684020 | 32 | SHA1 (patch-ca) = 36afc7b063f83adfe5b927ed0be586b102684020 | |
31 | SHA1 (patch-cb) = 5563a72e203e789a86f4166c71ddb3fcff5215c6 | 33 | SHA1 (patch-cb) = 5563a72e203e789a86f4166c71ddb3fcff5215c6 | |
32 | SHA1 (patch-cc) = 24d71f68a93b59bd5c5441c257d34862e7302040 | 34 | SHA1 (patch-cc) = 24d71f68a93b59bd5c5441c257d34862e7302040 | |
33 | SHA1 (patch-cd) = 7b25b3b3a8d58effae395d776f2a4b94d79acfcb | 35 | SHA1 (patch-cd) = 7b25b3b3a8d58effae395d776f2a4b94d79acfcb | |
34 | SHA1 (patch-ce) = 613f4c4605af860e5f88b68c49a0e7870ba6ecde | 36 | SHA1 (patch-ce) = 613f4c4605af860e5f88b68c49a0e7870ba6ecde | |
35 | SHA1 (patch-cf) = c8740b1c9cfac686f2e4e32c7613b5f02206459d | 37 | SHA1 (patch-cf) = c8740b1c9cfac686f2e4e32c7613b5f02206459d | |
36 | SHA1 (patch-cg) = 119029fda1d4ecee90d0a108151596cb3ef0ec74 | 38 | SHA1 (patch-cg) = 119029fda1d4ecee90d0a108151596cb3ef0ec74 | |
37 | SHA1 (patch-ch) = 84e816c95167828314ef901e324772249a407c41 | 39 | SHA1 (patch-ch) = 84e816c95167828314ef901e324772249a407c41 | |
38 | SHA1 (patch-config_StdGNU.mk) = bbded4d6da3fae55bfd8dad42ac9b45721ee1ebe | 40 | SHA1 (patch-config_StdGNU.mk) = bbded4d6da3fae55bfd8dad42ac9b45721ee1ebe | |
39 | SHA1 (patch-da) = 06c07b32d70f8259a762ebcdc738218cfad57ad4 | 41 | SHA1 (patch-da) = 06c07b32d70f8259a762ebcdc738218cfad57ad4 | |
40 | SHA1 (patch-db) = 4766f9925462023332793bcea4321072758e289d | 42 | SHA1 (patch-db) = 4766f9925462023332793bcea4321072758e289d | |
41 | SHA1 (patch-dc) = d860fe3725978227278d58f09e7d5157001e463e | 43 | SHA1 (patch-dc) = d860fe3725978227278d58f09e7d5157001e463e | |
42 | SHA1 (patch-dd) = e66d9cc0028ba922b050fc142862b4095cd018f3 | 44 | SHA1 (patch-dd) = e66d9cc0028ba922b050fc142862b4095cd018f3 | |
43 | SHA1 (patch-de) = fae94b61a430a1a7dd98c9a6a04e4513824c6d8d | 45 | SHA1 (patch-de) = fae94b61a430a1a7dd98c9a6a04e4513824c6d8d | |
44 | SHA1 (patch-df) = d20bf9d3fd05f5334f77c9154bf0fb9944c1292c | 46 | SHA1 (patch-df) = d20bf9d3fd05f5334f77c9154bf0fb9944c1292c | |
45 | SHA1 (patch-firmware_hvmloader_Makefile) = b2914e4988ba004d45403d67f1580b1f9725d006 | 47 | SHA1 (patch-firmware_hvmloader_Makefile) = b2914e4988ba004d45403d67f1580b1f9725d006 | |
46 | SHA1 (patch-ioemu-qemu-xen_hw_pass-through.c) = 76185c239078f29cb42b953d6c2cd1f59e240989 | 48 | SHA1 (patch-ioemu-qemu-xen_hw_pass-through.c) = 76185c239078f29cb42b953d6c2cd1f59e240989 | |
47 | SHA1 (patch-ioemu-qemu-xen_hw_pass-through.h) = 98c26798d1ad99d3eee8b33deb08f747c958c886 | 49 | SHA1 (patch-ioemu-qemu-xen_hw_pass-through.h) = 98c26798d1ad99d3eee8b33deb08f747c958c886 | |
48 | SHA1 (patch-ioemu-qemu-xen_hw_piix4acpi.c) = ca19457e9bde2d844a86a866960ac6de1f3d084c | 50 | SHA1 (patch-ioemu-qemu-xen_hw_piix4acpi.c) = ca19457e9bde2d844a86a866960ac6de1f3d084c | |
49 | SHA1 (patch-ioemu-qemu-xen_hw_pt-graphics.c) = 3c03404f1d711c667559a1332e717a5f1b5ceda8 | 51 | SHA1 (patch-ioemu-qemu-xen_hw_pt-graphics.c) = 3c03404f1d711c667559a1332e717a5f1b5ceda8 | |
50 | SHA1 (patch-ioemu-qemu-xen_hw_pt-msi.c) = 2dcebc65f591988bb95dea74c3b21f7066154a9f | 52 | SHA1 (patch-ioemu-qemu-xen_hw_pt-msi.c) = 2dcebc65f591988bb95dea74c3b21f7066154a9f | |
51 | SHA1 (patch-ioemu-qemu-xen_hw_pt-msi.h) = d1bb1a8ad90d6577056f11df96f5469ffe74a3b0 | 53 | SHA1 (patch-ioemu-qemu-xen_hw_pt-msi.h) = d1bb1a8ad90d6577056f11df96f5469ffe74a3b0 | |
52 | SHA1 (patch-ioemu-qemu-xen_xen-hooks.mak) = a00d9a9fd0fbb9fd89788b9dfaf5b389a28d47e2 | 54 | SHA1 (patch-ioemu-qemu-xen_xen-hooks.mak) = a00d9a9fd0fbb9fd89788b9dfaf5b389a28d47e2 | |
53 | SHA1 (patch-libfsimage_ufs_ufs.h) = dc59f33cf3abd08a8cdee5977ca4168613327513 | 55 | SHA1 (patch-libfsimage_ufs_ufs.h) = dc59f33cf3abd08a8cdee5977ca4168613327513 | |
54 | SHA1 (patch-libxl_libxl_create.c) = 02b661ca684609939c6ef762c0ddd1c5e62ad4d0 | 56 | SHA1 (patch-libxl_libxl_create.c) = 02b661ca684609939c6ef762c0ddd1c5e62ad4d0 | |
55 | SHA1 (patch-libxl_libxl_internal.h) = e126e5e998117903f0c66cc370d350c504ed33d9 | 57 | SHA1 (patch-libxl_libxl_internal.h) = e126e5e998117903f0c66cc370d350c504ed33d9 | |
56 | SHA1 (patch-libxl_xl__cmdimpl.c) = 0e038b9702e131ec527d49cb2c21e4acf581cbfe | 58 | SHA1 (patch-libxl_xl__cmdimpl.c) = 0e038b9702e131ec527d49cb2c21e4acf581cbfe | |
57 | SHA1 (patch-ocaml_Makefile.rules) = 104f9d40186e5e4ca6a2e6359bbb369c3c91d1dc | 59 | SHA1 (patch-ocaml_Makefile.rules) = 104f9d40186e5e4ca6a2e6359bbb369c3c91d1dc | |
58 | SHA1 (patch-ocaml_common.make) = c59d32301198d65691ab23529dd791de5ac40199 | 60 | SHA1 (patch-ocaml_common.make) = c59d32301198d65691ab23529dd791de5ac40199 | |
59 | SHA1 (patch-ocaml_xenstored_define.ml) = f44841625554ceba6e83dbb41f688993c2a8d9a2 | 61 | SHA1 (patch-ocaml_xenstored_define.ml) = f44841625554ceba6e83dbb41f688993c2a8d9a2 | |
60 | SHA1 (patch-ocaml_xenstored_utils.ml) = cc792a696743fa348b274b1c23783ea1a0d7da47 | 62 | SHA1 (patch-ocaml_xenstored_utils.ml) = cc792a696743fa348b274b1c23783ea1a0d7da47 | |
61 | SHA1 (patch-qemu-phy-devices) = fef90e50ef0a58db2f2b49b6c23218f371791de5 | 63 | SHA1 (patch-qemu-phy-devices) = fef90e50ef0a58db2f2b49b6c23218f371791de5 | |
62 | SHA1 (patch-xenstat_libxenstat_Makefile) = 800dfa58e9f65cfc9694ff4ee8a85c96d6336cfe | 64 | SHA1 (patch-xenstat_libxenstat_Makefile) = 800dfa58e9f65cfc9694ff4ee8a85c96d6336cfe | |
63 | SHA1 (patch-xenstat_xentop_Makefile) = 6b59d1a8024f0b7f493a2205afd1d90495f01151 | 65 | SHA1 (patch-xenstat_xentop_Makefile) = 6b59d1a8024f0b7f493a2205afd1d90495f01151 | |
64 | SHA1 (patch-xenstore_Makefile) = 4fa0ed7b76a96011c3cca9c5017be4b5151489f7 | 66 | SHA1 (patch-xenstore_Makefile) = 4fa0ed7b76a96011c3cca9c5017be4b5151489f7 |
$NetBSD: patch-CVE-2015-2752,v 1.1.2.2 2015/04/29 21:11:13 tron Exp $
Patch for CVE-2015-2752 aka XSA-125 from
http://xenbits.xenproject.org/xsa/xsa125-4.2.patch
--- libxc/xc_domain.c.orig 2013-09-10 06:42:18.000000000 +0000
+++ libxc/xc_domain.c
@@ -1322,6 +1322,13 @@ int xc_domain_bind_pt_isa_irq(
PT_IRQ_TYPE_ISA, 0, 0, 0, machine_irq));
}
+#ifndef min
+#define min(X, Y) ({ \
+ const typeof (X) _x = (X); \
+ const typeof (Y) _y = (Y); \
+ (void) (&_x == &_y); \
+ (_x < _y) ? _x : _y; })
+#endif
int xc_domain_memory_mapping(
xc_interface *xch,
uint32_t domid,
@@ -1331,17 +1338,55 @@ int xc_domain_memory_mapping(
uint32_t add_mapping)
{
DECLARE_DOMCTL;
+ int ret = 0, err;
+ unsigned long done = 0, nr, max_batch_sz;
+
+ if ( !nr_mfns )
+ return 0;
domctl.cmd = XEN_DOMCTL_memory_mapping;
domctl.domain = domid;
- domctl.u.memory_mapping.first_gfn = first_gfn;
- domctl.u.memory_mapping.first_mfn = first_mfn;
- domctl.u.memory_mapping.nr_mfns = nr_mfns;
domctl.u.memory_mapping.add_mapping = add_mapping;
+ max_batch_sz = nr_mfns;
+ do
+ {
+ nr = min(nr_mfns - done, max_batch_sz);
+ domctl.u.memory_mapping.nr_mfns = nr;
+ domctl.u.memory_mapping.first_gfn = first_gfn + done;
+ domctl.u.memory_mapping.first_mfn = first_mfn + done;
+ err = do_domctl(xch, &domctl);
+ if ( err && errno == E2BIG )
+ {
+ if ( max_batch_sz <= 1 )
+ break;
+ max_batch_sz >>= 1;
+ continue;
+ }
+ /* Save the first error... */
+ if ( !ret )
+ ret = err;
+ /* .. and ignore the rest of them when removing. */
+ if ( err && add_mapping != DPCI_REMOVE_MAPPING )
+ break;
+
+ done += nr;
+ } while ( done < nr_mfns );
+
+ /*
+ * Undo what we have done unless unmapping, by unmapping the entire region.
+ * Errors here are ignored.
+ */
+ if ( ret && add_mapping != DPCI_REMOVE_MAPPING )
+ xc_domain_memory_mapping(xch, domid, first_gfn, first_mfn, nr_mfns,
+ DPCI_REMOVE_MAPPING);
+
+ /* We might get E2BIG so many times that we never advance. */
+ if ( !done && !ret )
+ ret = -1;
- return do_domctl(xch, &domctl);
+ return ret;
}
-
+#undef min
int xc_domain_ioport_mapping(
xc_interface *xch,
uint32_t domid,
$NetBSD: patch-CVE-2015-2756,v 1.1.2.2 2015/04/29 21:11:13 tron Exp $
patch for CVE-2015-2756 aka XSA-126 from
http://xenbits.xenproject.org/xsa/xsa126-qemut.patch
--- ioemu-qemu-xen/hw/pass-through.c.orig 2013-07-17 10:59:40.000000000 +0000
+++ ioemu-qemu-xen/hw/pass-through.c
@@ -171,9 +171,6 @@ static int pt_word_reg_read(struct pt_de
static int pt_long_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask);
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
@@ -277,9 +274,9 @@ static struct pt_reg_info_tbl pt_emu_reg
.size = 2,
.init_val = 0x0000,
.ro_mask = 0xF880,
- .emu_mask = 0x0740,
+ .emu_mask = 0x0743,
.init = pt_common_reg_init,
- .u.w.read = pt_cmd_reg_read,
+ .u.w.read = pt_word_reg_read,
.u.w.write = pt_cmd_reg_write,
.u.w.restore = pt_cmd_reg_restore,
},
@@ -1865,7 +1862,7 @@ static int pt_dev_is_virtfn(struct pci_d
return rc;
}
-static int pt_register_regions(struct pt_dev *assigned_device)
+static int pt_register_regions(struct pt_dev *assigned_device, uint16_t *cmd)
{
int i = 0;
uint32_t bar_data = 0;
@@ -1885,17 +1882,26 @@ static int pt_register_regions(struct pt
/* Register current region */
if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_IO )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_IO,
pt_ioport_map);
+ *cmd |= PCI_COMMAND_IO;
+ }
else if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_MEM_PREFETCH )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM_PREFETCH,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
else
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
PT_LOG("IO region registered (size=0x%08x base_addr=0x%08x)\n",
(uint32_t)(pci_dev->size[i]),
@@ -3221,27 +3227,6 @@ static int pt_long_reg_read(struct pt_de
return 0;
}
-/* read Command register */
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask)
-{
- struct pt_reg_info_tbl *reg = cfg_entry->reg;
- uint16_t valid_emu_mask = 0;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
-
- /* emulate word register */
- valid_emu_mask = emu_mask & valid_mask;
- *value = PT_MERGE_VALUE(*value, cfg_entry->data, ~valid_emu_mask);
-
- return 0;
-}
-
/* read BAR */
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
@@ -3376,19 +3361,13 @@ static int pt_cmd_reg_write(struct pt_de
uint16_t writable_mask = 0;
uint16_t throughable_mask = 0;
uint16_t wr_value = *value;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
/* modify emulate register */
writable_mask = ~reg->ro_mask & valid_mask;
cfg_entry->data = PT_MERGE_VALUE(*value, cfg_entry->data, writable_mask);
/* create value for writing to I/O device register */
- throughable_mask = ~emu_mask & valid_mask;
+ throughable_mask = ~reg->emu_mask & valid_mask;
if (*value & PCI_COMMAND_DISABLE_INTx)
{
@@ -4151,6 +4130,7 @@ static struct pt_dev * register_real_dev
struct pt_dev *assigned_device = NULL;
struct pci_dev *pci_dev;
uint8_t e_device, e_intx;
+ uint16_t cmd = 0;
char *key, *val;
int msi_translate, power_mgmt;
@@ -4240,7 +4220,7 @@ static struct pt_dev * register_real_dev
assigned_device->dev.config[i] = pci_read_byte(pci_dev, i);
/* Handle real device's MMIO/PIO BARs */
- pt_register_regions(assigned_device);
+ pt_register_regions(assigned_device, &cmd);
/* Setup VGA bios for passthroughed gfx */
if ( setup_vga_pt(assigned_device) < 0 )
@@ -4318,6 +4298,10 @@ static struct pt_dev * register_real_dev
}
out:
+ if (cmd)
+ pci_write_word(pci_dev, PCI_COMMAND,
+ *(uint16_t *)(&assigned_device->dev.config[PCI_COMMAND]) | cmd);
+
PT_LOG("Real physical device %02x:%02x.%x registered successfuly!\n"
"IRQ type = %s\n", r_bus, r_dev, r_func,
assigned_device->msi_trans_en? "MSI-INTx":"INTx");
@@ -1,268 +1,268 @@ | @@ -1,268 +1,268 @@ | |||
1 | # $NetBSD: Makefile,v 1.26 2015/03/13 09:43:41 spz Exp $ | 1 | # $NetBSD: Makefile,v 1.26.2.1 2015/04/29 21:11:13 tron Exp $ | |
2 | 2 | |||
3 | VERSION= 4.2.5 | 3 | VERSION= 4.2.5 | |
4 | VERSION_IPXE= 1.0.0 | 4 | VERSION_IPXE= 1.0.0 | |
5 | 5 | |||
6 | DISTNAME= xen-${VERSION} | 6 | DISTNAME= xen-${VERSION} | |
7 | PKGNAME= xentools42-${VERSION} | 7 | PKGNAME= xentools42-${VERSION} | |
8 | PKGREVISION= 3 | 8 | PKGREVISION= 4 | |
9 | CATEGORIES= sysutils | 9 | CATEGORIES= sysutils | |
10 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | 10 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | |
11 | 11 | |||
12 | DISTFILES= ${DISTNAME}.tar.gz | 12 | DISTFILES= ${DISTNAME}.tar.gz | |
13 | DISTFILES+= ipxe-git-v${VERSION_IPXE}.tar.gz | 13 | DISTFILES+= ipxe-git-v${VERSION_IPXE}.tar.gz | |
14 | SITES.ipxe-git-v${VERSION_IPXE}.tar.gz += http://xenbits.xensource.com/xen-extfiles/ | 14 | SITES.ipxe-git-v${VERSION_IPXE}.tar.gz += http://xenbits.xensource.com/xen-extfiles/ | |
15 | 15 | |||
16 | MAINTAINER= pkgsrc-users@NetBSD.org | 16 | MAINTAINER= pkgsrc-users@NetBSD.org | |
17 | HOMEPAGE= http://xen.org/ | 17 | HOMEPAGE= http://xen.org/ | |
18 | COMMENT= Userland Tools for Xen 4.2.x | 18 | COMMENT= Userland Tools for Xen 4.2.x | |
19 | LICENSE= gnu-gpl-v2 | 19 | LICENSE= gnu-gpl-v2 | |
20 | 20 | |||
21 | # XXX add version check: Xen requires dev86 >= 0.16.14 | 21 | # XXX add version check: Xen requires dev86 >= 0.16.14 | |
22 | BUILD_DEPENDS+= dev86-[0-9]*:../../devel/dev86 # needed to build firmware | 22 | BUILD_DEPENDS+= dev86-[0-9]*:../../devel/dev86 # needed to build firmware | |
23 | .if !exists(/usr/bin/iasl) | 23 | .if !exists(/usr/bin/iasl) | |
24 | BUILD_DEPENDS+= acpica-utils-[0-9]*:../../sysutils/acpica-utils | 24 | BUILD_DEPENDS+= acpica-utils-[0-9]*:../../sysutils/acpica-utils | |
25 | .endif | 25 | .endif | |
26 | DEPENDS+= ${PYPKGPREFIX}-curses>=0nb4:../../devel/py-curses | 26 | DEPENDS+= ${PYPKGPREFIX}-curses>=0nb4:../../devel/py-curses | |
27 | DEPENDS+= ${PYPKGPREFIX}-lxml-[0-9]*:../../textproc/py-lxml | 27 | DEPENDS+= ${PYPKGPREFIX}-lxml-[0-9]*:../../textproc/py-lxml | |
28 | 28 | |||
29 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 # py-xml | 29 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 # py-xml | |
30 | 30 | |||
31 | PKG_SYSCONFSUBDIR= xen | 31 | PKG_SYSCONFSUBDIR= xen | |
32 | 32 | |||
33 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | 33 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | |
34 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | 34 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | |
35 | 35 | |||
36 | CONFLICTS+= libxen-[0-9]* | 36 | CONFLICTS+= libxen-[0-9]* | |
37 | CONFLICTS+= xentools20-[0-9]* | 37 | CONFLICTS+= xentools20-[0-9]* | |
38 | CONFLICTS+= xentools3-[0-9]* | 38 | CONFLICTS+= xentools3-[0-9]* | |
39 | CONFLICTS+= xenstoretools-[0-9]* | 39 | CONFLICTS+= xenstoretools-[0-9]* | |
40 | 40 | |||
41 | XENTOP= ${WRKDIR}/xen-${VERSION} | 41 | XENTOP= ${WRKDIR}/xen-${VERSION} | |
42 | WRKSRC= ${XENTOP}/tools | 42 | WRKSRC= ${XENTOP}/tools | |
43 | CHECK_PORTABILITY_SKIP= examples/* | 43 | CHECK_PORTABILITY_SKIP= examples/* | |
44 | 44 | |||
45 | EGDIR= ${PREFIX}/share/examples/xen | 45 | EGDIR= ${PREFIX}/share/examples/xen | |
46 | MESSAGE_SUBST+= EGDIR=${EGDIR} | 46 | MESSAGE_SUBST+= EGDIR=${EGDIR} | |
47 | 47 | |||
48 | USE_TOOLS+= pod2man gmake pkg-config makeinfo perl bash | 48 | USE_TOOLS+= pod2man gmake pkg-config makeinfo perl bash | |
49 | 49 | |||
50 | GNU_CONFIGURE= YES | 50 | GNU_CONFIGURE= YES | |
51 | #CONFIGURE_ARGS+= --enable-xenapi | 51 | #CONFIGURE_ARGS+= --enable-xenapi | |
52 | CONFIGURE_ARGS+= --disable-seabios | 52 | CONFIGURE_ARGS+= --disable-seabios | |
53 | 53 | |||
54 | MAKE_ENV+= PREFIX=${prefix:Q} WRKSRC=${WRKSRC} | 54 | MAKE_ENV+= PREFIX=${prefix:Q} WRKSRC=${WRKSRC} | |
55 | MAKE_ENV+= EGDIR=${EGDIR} | 55 | MAKE_ENV+= EGDIR=${EGDIR} | |
56 | MAKE_ENV+= BASH_COMPLETION_DIR=${EGDIR} | 56 | MAKE_ENV+= BASH_COMPLETION_DIR=${EGDIR} | |
57 | MAKE_ENV+= MV=${MV:Q} PYTHON=${PYTHONBIN:Q} SED=${SED:Q} | 57 | MAKE_ENV+= MV=${MV:Q} PYTHON=${PYTHONBIN:Q} SED=${SED:Q} | |
58 | MAKE_ENV+= VARBASE=${VARBASE} | 58 | MAKE_ENV+= VARBASE=${VARBASE} | |
59 | MAKE_ENV+= XEN_CONFIG_DIR=${PKG_SYSCONFDIR} | 59 | MAKE_ENV+= XEN_CONFIG_DIR=${PKG_SYSCONFDIR} | |
60 | MAKE_ENV+= V=YES | 60 | MAKE_ENV+= V=YES | |
61 | MAKE_ENV+= NO_WERROR=1 | 61 | MAKE_ENV+= NO_WERROR=1 | |
62 | 62 | |||
63 | #MAKE_ENV+= INSTALL_DIR=${BSD_INSTALL_DATA_DIR} | 63 | #MAKE_ENV+= INSTALL_DIR=${BSD_INSTALL_DATA_DIR} | |
64 | #MAKE_ENV+= INSTALL_DATA=${BSD_INSTALL_DATA} | 64 | #MAKE_ENV+= INSTALL_DATA=${BSD_INSTALL_DATA} | |
65 | #MAKE_ENV+= INSTALL_PROG=${BSD_INSTALL_PROGRAM} | 65 | #MAKE_ENV+= INSTALL_PROG=${BSD_INSTALL_PROGRAM} | |
66 | 66 | |||
67 | PY_PATCHPLIST= yes | 67 | PY_PATCHPLIST= yes | |
68 | #REPLACE_PYTHON+= misc/xm | 68 | #REPLACE_PYTHON+= misc/xm | |
69 | #REPLACE_PYTHON+= misc/netfix | 69 | #REPLACE_PYTHON+= misc/netfix | |
70 | #REPLACE_PYTHON+= misc/xen-bugtool | 70 | #REPLACE_PYTHON+= misc/xen-bugtool | |
71 | #REPLACE_PYTHON+= misc/xencons | 71 | #REPLACE_PYTHON+= misc/xencons | |
72 | #REPLACE_PYTHON+= misc/xend | 72 | #REPLACE_PYTHON+= misc/xend | |
73 | #REPLACE_PYTHON+= misc/xensymoops | 73 | #REPLACE_PYTHON+= misc/xensymoops | |
74 | #REPLACE_PYTHON+= misc/xen-python-path | 74 | #REPLACE_PYTHON+= misc/xen-python-path | |
75 | #REPLACE_PYTHON+= pygrub/src/pygrub | 75 | #REPLACE_PYTHON+= pygrub/src/pygrub | |
76 | #REPLACE_PYTHON+= python/xen/util/*.py | 76 | #REPLACE_PYTHON+= python/xen/util/*.py | |
77 | #REPLACE_PYTHON+= python/xen/xend/*.py | 77 | #REPLACE_PYTHON+= python/xen/xend/*.py | |
78 | #REPLACE_PYTHON+= python/xen/xm/*.py | 78 | #REPLACE_PYTHON+= python/xen/xm/*.py | |
79 | #REPLACE_PYTHON+= python/xen/util/*.py | 79 | #REPLACE_PYTHON+= python/xen/util/*.py | |
80 | #REPLACE_PYTHON+= python/*.py | 80 | #REPLACE_PYTHON+= python/*.py | |
81 | #REPLACE_PYTHON+= security/python/xensec_gen/cgi-bin/policy.cgi | 81 | #REPLACE_PYTHON+= security/python/xensec_gen/cgi-bin/policy.cgi | |
82 | #REPLACE_PYTHON+= security/python/xensec_gen/*.py | 82 | #REPLACE_PYTHON+= security/python/xensec_gen/*.py | |
83 | #REPLACE_PYTHON+= security/python/*.py | 83 | #REPLACE_PYTHON+= security/python/*.py | |
84 | #REPLACE_PYTHON+= security/*.py | 84 | #REPLACE_PYTHON+= security/*.py | |
85 | #REPLACE_PYTHON+= xenmon/*.py | 85 | #REPLACE_PYTHON+= xenmon/*.py | |
86 | #REPLACE_PYTHON+= xentrace/xentrace_format | 86 | #REPLACE_PYTHON+= xentrace/xentrace_format | |
87 | 87 | |||
88 | REPLACE_PYTHON+= misc/sbdf2devicepath misc/sxp-pretty misc/xen-bugtool | 88 | REPLACE_PYTHON+= misc/sbdf2devicepath misc/sxp-pretty misc/xen-bugtool | |
89 | REPLACE_PYTHON+= misc/xen-python-path misc/xen-ringwatch misc/xencons | 89 | REPLACE_PYTHON+= misc/xen-python-path misc/xen-ringwatch misc/xencons | |
90 | REPLACE_PYTHON+= misc/xend misc/xenpvnetboot misc/xensymoops misc/xm | 90 | REPLACE_PYTHON+= misc/xend misc/xenpvnetboot misc/xensymoops misc/xm | |
91 | REPLACE_PYTHON+= misc/xsview | 91 | REPLACE_PYTHON+= misc/xsview | |
92 | REPLACE_PYTHON+= python/xen/remus/*.py | 92 | REPLACE_PYTHON+= python/xen/remus/*.py | |
93 | REPLACE_PYTHON+= python/xen/util/*.py | 93 | REPLACE_PYTHON+= python/xen/util/*.py | |
94 | REPLACE_PYTHON+= python/xen/xend/*.py | 94 | REPLACE_PYTHON+= python/xen/xend/*.py | |
95 | REPLACE_PYTHON+= python/xen/xm/*.py | 95 | REPLACE_PYTHON+= python/xen/xm/*.py | |
96 | REPLACE_PYTHON+= xenmon/xenmon.py | 96 | REPLACE_PYTHON+= xenmon/xenmon.py | |
97 | 97 | |||
98 | SUBST_CLASSES+= perlpath | 98 | SUBST_CLASSES+= perlpath | |
99 | SUBST_STAGE.perlpath= pre-configure | 99 | SUBST_STAGE.perlpath= pre-configure | |
100 | SUBST_FILES.perlpath= ../tools/firmware/rombios/makesym.perl | 100 | SUBST_FILES.perlpath= ../tools/firmware/rombios/makesym.perl | |
101 | SUBST_FILES.perlpath+= ../tools/qemu-xen-traditional/texi2pod.pl | 101 | SUBST_FILES.perlpath+= ../tools/qemu-xen-traditional/texi2pod.pl | |
102 | SUBST_FILES.perlpath+= ../tools/examples/xeninfo.pl | 102 | SUBST_FILES.perlpath+= ../tools/examples/xeninfo.pl | |
103 | SUBST_FILES.perlpath+= ../tools/include/xen-external/bsd-sys-queue-h-seddery | 103 | SUBST_FILES.perlpath+= ../tools/include/xen-external/bsd-sys-queue-h-seddery | |
104 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/texi2pod.pl | 104 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/texi2pod.pl | |
105 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/get_maintainer.pl | 105 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/get_maintainer.pl | |
106 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/checkpatch.pl | 106 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/checkpatch.pl | |
107 | SUBST_FILES.perlpath+= ../tools/xm-test/mkreport | 107 | SUBST_FILES.perlpath+= ../tools/xm-test/mkreport | |
108 | SUBST_FILES.perlpath+= ../tools/libxl/libxl_save_msgs_gen.pl | 108 | SUBST_FILES.perlpath+= ../tools/libxl/libxl_save_msgs_gen.pl | |
109 | SUBST_FILES.perlpath+= ../tools/libxl/check-libxl-api-rules | 109 | SUBST_FILES.perlpath+= ../tools/libxl/check-libxl-api-rules | |
110 | SUBST_FILES.perlpath+= ../../ipxe/src/Makefile | 110 | SUBST_FILES.perlpath+= ../../ipxe/src/Makefile | |
111 | SUBST_FILES.perlpath+= ../../ipxe/src/drivers/infiniband/qib_genbits.pl | 111 | SUBST_FILES.perlpath+= ../../ipxe/src/drivers/infiniband/qib_genbits.pl | |
112 | SUBST_FILES.perlpath+= ../../ipxe/src/include/gpxe/efi/import.pl | 112 | SUBST_FILES.perlpath+= ../../ipxe/src/include/gpxe/efi/import.pl | |
113 | SUBST_FILES.perlpath+= ../../ipxe/src/util/catrom.pl | 113 | SUBST_FILES.perlpath+= ../../ipxe/src/util/catrom.pl | |
114 | SUBST_FILES.perlpath+= ../../ipxe/src/util/diffsize.pl | 114 | SUBST_FILES.perlpath+= ../../ipxe/src/util/diffsize.pl | |
115 | SUBST_FILES.perlpath+= ../../ipxe/src/util/disrom.pl | 115 | SUBST_FILES.perlpath+= ../../ipxe/src/util/disrom.pl | |
116 | SUBST_FILES.perlpath+= ../../ipxe/src/util/get-pci-ids | 116 | SUBST_FILES.perlpath+= ../../ipxe/src/util/get-pci-ids | |
117 | SUBST_FILES.perlpath+= ../../ipxe/src/util/licence.pl | 117 | SUBST_FILES.perlpath+= ../../ipxe/src/util/licence.pl | |
118 | SUBST_FILES.perlpath+= ../../ipxe/src/util/makerom.pl | 118 | SUBST_FILES.perlpath+= ../../ipxe/src/util/makerom.pl | |
119 | SUBST_FILES.perlpath+= ../../ipxe/src/util/mergerom.pl | 119 | SUBST_FILES.perlpath+= ../../ipxe/src/util/mergerom.pl | |
120 | SUBST_FILES.perlpath+= ../../ipxe/src/util/modrom.pl | 120 | SUBST_FILES.perlpath+= ../../ipxe/src/util/modrom.pl | |
121 | SUBST_FILES.perlpath+= ../../ipxe/src/util/padimg.pl | 121 | SUBST_FILES.perlpath+= ../../ipxe/src/util/padimg.pl | |
122 | SUBST_FILES.perlpath+= ../../ipxe/src/util/parserom.pl | 122 | SUBST_FILES.perlpath+= ../../ipxe/src/util/parserom.pl | |
123 | SUBST_FILES.perlpath+= ../../ipxe/src/util/sortobjdump.pl | 123 | SUBST_FILES.perlpath+= ../../ipxe/src/util/sortobjdump.pl | |
124 | SUBST_FILES.perlpath+= ../../ipxe/src/util/swapdevids.pl | 124 | SUBST_FILES.perlpath+= ../../ipxe/src/util/swapdevids.pl | |
125 | SUBST_FILES.perlpath+= ../../ipxe/src/util/symcheck.pl | 125 | SUBST_FILES.perlpath+= ../../ipxe/src/util/symcheck.pl | |
126 | SUBST_SED.perlpath= -e "s|/usr/bin/perl|${PREFIX}/bin/perl|g" | 126 | SUBST_SED.perlpath= -e "s|/usr/bin/perl|${PREFIX}/bin/perl|g" | |
127 | 127 | |||
128 | SUBST_CLASSES+= pathsvar | 128 | SUBST_CLASSES+= pathsvar | |
129 | SUBST_STAGE.pathsvar= pre-configure | 129 | SUBST_STAGE.pathsvar= pre-configure | |
130 | SUBST_FILES.pathsvar= Makefile \ | 130 | SUBST_FILES.pathsvar= Makefile \ | |
131 | examples/xend-config.sxp \ | 131 | examples/xend-config.sxp \ | |
132 | hotplug/Linux/init.d/sysconfig.xendomains \ | 132 | hotplug/Linux/init.d/sysconfig.xendomains \ | |
133 | python/xen/xend/XendOptions.py \ | 133 | python/xen/xend/XendOptions.py \ | |
134 | python/xen/xend/server/relocate.py \ | 134 | python/xen/xend/server/relocate.py \ | |
135 | python/xen/xend/tests/xend-config.sxp \ | 135 | python/xen/xend/tests/xend-config.sxp \ | |
136 | xenstore/xs_lib.c | 136 | xenstore/xs_lib.c | |
137 | SUBST_SED.pathsvar= -e "s|/var/lib|${VARBASE}/run|g" | 137 | SUBST_SED.pathsvar= -e "s|/var/lib|${VARBASE}/run|g" | |
138 | 138 | |||
139 | SUBST_CLASSES+= conf | 139 | SUBST_CLASSES+= conf | |
140 | SUBST_STAGE.conf= pre-configure | 140 | SUBST_STAGE.conf= pre-configure | |
141 | SUBST_FILES.conf+= python/xen/xm/create.py | 141 | SUBST_FILES.conf+= python/xen/xm/create.py | |
142 | SUBST_FILES.conf+= ocaml/xenstored/define.ml | 142 | SUBST_FILES.conf+= ocaml/xenstored/define.ml | |
143 | SUBST_SED.conf= -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" | 143 | SUBST_SED.conf= -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" | |
144 | 144 | |||
145 | .include "../../mk/bsd.prefs.mk" | 145 | .include "../../mk/bsd.prefs.mk" | |
146 | 146 | |||
147 | XEND_SCRIPTS= block vif-bridge vif-ip qemu-ifup hotplugpath.sh | 147 | XEND_SCRIPTS= block vif-bridge vif-ip qemu-ifup hotplugpath.sh | |
148 | 148 | |||
149 | .if ${OPSYS} == "NetBSD" | 149 | .if ${OPSYS} == "NetBSD" | |
150 | SUBST_CLASSES+= proc | 150 | SUBST_CLASSES+= proc | |
151 | SUBST_STAGE.proc= pre-configure | 151 | SUBST_STAGE.proc= pre-configure | |
152 | SUBST_FILES.proc= python/xen/xend/XendVnet.py | 152 | SUBST_FILES.proc= python/xen/xend/XendVnet.py | |
153 | SUBST_FILES.proc+= ocaml/xenstored/define.ml | 153 | SUBST_FILES.proc+= ocaml/xenstored/define.ml | |
154 | SUBST_SED.proc= -e "s|/proc|/kern|g" | 154 | SUBST_SED.proc= -e "s|/proc|/kern|g" | |
155 | PROCPATH= /kern | 155 | PROCPATH= /kern | |
156 | .else | 156 | .else | |
157 | PROCPATH= /proc | 157 | PROCPATH= /proc | |
158 | .endif | 158 | .endif | |
159 | 159 | |||
160 | SUBST_CLASSES+= procdev | 160 | SUBST_CLASSES+= procdev | |
161 | SUBST_STAGE.procdev= pre-configure | 161 | SUBST_STAGE.procdev= pre-configure | |
162 | SUBST_FILES.procdev= ocaml/xenstored/define.ml | 162 | SUBST_FILES.procdev= ocaml/xenstored/define.ml | |
163 | .if ${OPSYS} == "NetBSD" | 163 | .if ${OPSYS} == "NetBSD" | |
164 | SUBST_SED.procdev= -e "s|@PROCDEV@|/dev|g" | 164 | SUBST_SED.procdev= -e "s|@PROCDEV@|/dev|g" | |
165 | .else | 165 | .else | |
166 | SUBST_SED.procdev= -e "s|@PROCDEV@|/proc/xen|g" | 166 | SUBST_SED.procdev= -e "s|@PROCDEV@|/proc/xen|g" | |
167 | .endif | 167 | .endif | |
168 | 168 | |||
169 | .if ${OPSYS} == "NetBSD" | 169 | .if ${OPSYS} == "NetBSD" | |
170 | MESSAGE_SRC= ${.CURDIR}/MESSAGE ${.CURDIR}/MESSAGE.NetBSD | 170 | MESSAGE_SRC= ${.CURDIR}/MESSAGE ${.CURDIR}/MESSAGE.NetBSD | |
171 | .endif | 171 | .endif | |
172 | 172 | |||
173 | RCD_SCRIPTS= xen-watchdog xencommons xend xendomains | 173 | RCD_SCRIPTS= xen-watchdog xencommons xend xendomains | |
174 | FILES_SUBST+= RCD_INTERPRETER=${PYTHONBIN:Q} | 174 | FILES_SUBST+= RCD_INTERPRETER=${PYTHONBIN:Q} | |
175 | FILES_SUBST+= PROCPATH=${PROCPATH:Q} | 175 | FILES_SUBST+= PROCPATH=${PROCPATH:Q} | |
176 | FILES_SUBST+= PKG_SYSCONFDIR=${PKG_SYSCONFDIR} | 176 | FILES_SUBST+= PKG_SYSCONFDIR=${PKG_SYSCONFDIR} | |
177 | FILES_SUBST+= PREFIX=${PREFIX} | 177 | FILES_SUBST+= PREFIX=${PREFIX} | |
178 | 178 | |||
179 | BLKTAP_FILES= blk_netbsd.c blktapctrl_netbsd.c | 179 | BLKTAP_FILES= blk_netbsd.c blktapctrl_netbsd.c | |
180 | 180 | |||
181 | CONF_FILES+= ${EGDIR}/formats ${PKG_SYSCONFDIR}/formats | 181 | CONF_FILES+= ${EGDIR}/formats ${PKG_SYSCONFDIR}/formats | |
182 | CONF_FILES+= ${EGDIR}/xend-config.sxp ${PKG_SYSCONFDIR}/xend-config.sxp | 182 | CONF_FILES+= ${EGDIR}/xend-config.sxp ${PKG_SYSCONFDIR}/xend-config.sxp | |
183 | CONF_FILES+= ${EGDIR}/xl.conf ${PKG_SYSCONFDIR}/xl.conf | 183 | CONF_FILES+= ${EGDIR}/xl.conf ${PKG_SYSCONFDIR}/xl.conf | |
184 | CONF_FILES+= ${EGDIR}/xm-config.xml ${PKG_SYSCONFDIR}/xm-config.xml | 184 | CONF_FILES+= ${EGDIR}/xm-config.xml ${PKG_SYSCONFDIR}/xm-config.xml | |
185 | CONF_FILES+= ${EGDIR}/oxenstored.conf ${PKG_SYSCONFDIR}/oxenstored.conf | 185 | CONF_FILES+= ${EGDIR}/oxenstored.conf ${PKG_SYSCONFDIR}/oxenstored.conf | |
186 | 186 | |||
187 | 187 | |||
188 | OWN_DIRS= ${PKG_SYSCONFDIR}/scripts ${VARBASE}/log/xen | 188 | OWN_DIRS= ${PKG_SYSCONFDIR}/scripts ${VARBASE}/log/xen | |
189 | OWN_DIRS+= ${VARBASE}/lib/xen | 189 | OWN_DIRS+= ${VARBASE}/lib/xen | |
190 | 190 | |||
191 | .for s in ${XEND_SCRIPTS} | 191 | .for s in ${XEND_SCRIPTS} | |
192 | CONF_FILES_PERMS+= ${EGDIR}/scripts/${s} ${PKG_SYSCONFDIR}/scripts/${s} \ | 192 | CONF_FILES_PERMS+= ${EGDIR}/scripts/${s} ${PKG_SYSCONFDIR}/scripts/${s} \ | |
193 | ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0755 | 193 | ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0755 | |
194 | .endfor | 194 | .endfor | |
195 | 195 | |||
196 | pre-build: | 196 | pre-build: | |
197 | rm -f ${WRKSRC}/check/check_x11_devel | 197 | rm -f ${WRKSRC}/check/check_x11_devel | |
198 | .for s in ${BLKTAP_FILES} | 198 | .for s in ${BLKTAP_FILES} | |
199 | ${CP} -f ${FILESDIR}/${s} ${WRKSRC}/blktap/drivers/ | 199 | ${CP} -f ${FILESDIR}/${s} ${WRKSRC}/blktap/drivers/ | |
200 | .endfor | 200 | .endfor | |
201 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 201 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
202 | ${XENTOP}/docs/man/xl.pod.1 |\ | 202 | ${XENTOP}/docs/man/xl.pod.1 |\ | |
203 | pod2man >${WRKDIR}/xl.1 | 203 | pod2man >${WRKDIR}/xl.1 | |
204 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 204 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
205 | ${XENTOP}/docs/man/xm.pod.1 |\ | 205 | ${XENTOP}/docs/man/xm.pod.1 |\ | |
206 | pod2man >${WRKDIR}/xm.1 | 206 | pod2man >${WRKDIR}/xm.1 | |
207 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 207 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
208 | ${XENTOP}/docs/man/xend-config.sxp.pod.5 |\ | 208 | ${XENTOP}/docs/man/xend-config.sxp.pod.5 |\ | |
209 | pod2man >${WRKDIR}/xend-config.sxp.5 | 209 | pod2man >${WRKDIR}/xend-config.sxp.5 | |
210 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 210 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
211 | ${XENTOP}/docs/man/xl.cfg.pod.5 |\ | 211 | ${XENTOP}/docs/man/xl.cfg.pod.5 |\ | |
212 | pod2man >${WRKDIR}/xl.cfg.5 | 212 | pod2man >${WRKDIR}/xl.cfg.5 | |
213 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 213 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
214 | ${XENTOP}/docs/man/xl.conf.pod.5 |\ | 214 | ${XENTOP}/docs/man/xl.conf.pod.5 |\ | |
215 | pod2man >${WRKDIR}/xl.conf.5 | 215 | pod2man >${WRKDIR}/xl.conf.5 | |
216 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 216 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
217 | ${XENTOP}/docs/man/xlcpupool.cfg.pod.5 |\ | 217 | ${XENTOP}/docs/man/xlcpupool.cfg.pod.5 |\ | |
218 | pod2man >${WRKDIR}/xlcpupool.cfg.5 | 218 | pod2man >${WRKDIR}/xlcpupool.cfg.5 | |
219 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 219 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
220 | ${XENTOP}/docs/man/xmdomain.cfg.pod.5 |\ | 220 | ${XENTOP}/docs/man/xmdomain.cfg.pod.5 |\ | |
221 | pod2man >${WRKDIR}/xmdomain.cfg.5 | 221 | pod2man >${WRKDIR}/xmdomain.cfg.5 | |
222 | 222 | |||
223 | INSTALLATION_DIRS= ${EGDIR} ${PKGMANDIR}/man5 | 223 | INSTALLATION_DIRS= ${EGDIR} ${PKGMANDIR}/man5 | |
224 | 224 | |||
225 | BUILD_DEFS+= VARBASE | 225 | BUILD_DEFS+= VARBASE | |
226 | 226 | |||
227 | post-install: | 227 | post-install: | |
228 | ${INSTALL_DATA} ${WRKDIR}/xl.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1 | 228 | ${INSTALL_DATA} ${WRKDIR}/xl.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1 | |
229 | ${INSTALL_DATA} ${WRKDIR}/xm.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1 | 229 | ${INSTALL_DATA} ${WRKDIR}/xm.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1 | |
230 | ${INSTALL_DATA} ${WRKDIR}/xl.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | 230 | ${INSTALL_DATA} ${WRKDIR}/xl.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | |
231 | ${INSTALL_DATA} ${WRKDIR}/xl.conf.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | 231 | ${INSTALL_DATA} ${WRKDIR}/xl.conf.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | |
232 | ${INSTALL_DATA} ${WRKDIR}/xlcpupool.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | 232 | ${INSTALL_DATA} ${WRKDIR}/xlcpupool.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | |
233 | ${INSTALL_DATA} ${WRKDIR}/xend-config.sxp.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | 233 | ${INSTALL_DATA} ${WRKDIR}/xend-config.sxp.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | |
234 | ${INSTALL_DATA} ${WRKDIR}/xmdomain.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | 234 | ${INSTALL_DATA} ${WRKDIR}/xmdomain.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | |
235 | 235 | |||
236 | .if ${OPSYS} == "NetBSD" && !exists(/var/shm) | 236 | .if ${OPSYS} == "NetBSD" && !exists(/var/shm) | |
237 | CPPFLAGS+= -Dshm_open=open -Dshm_unlink=unlink | 237 | CPPFLAGS+= -Dshm_open=open -Dshm_unlink=unlink | |
238 | .endif | 238 | .endif | |
239 | 239 | |||
240 | .include "../../mk/compiler.mk" | 240 | .include "../../mk/compiler.mk" | |
241 | .if !empty(PKGSRC_COMPILER:Mclang) | 241 | .if !empty(PKGSRC_COMPILER:Mclang) | |
242 | EXTRA_HOSTCFLAGS+= -Wno-error=ignored-attributes | 242 | EXTRA_HOSTCFLAGS+= -Wno-error=ignored-attributes | |
243 | EXTRA_CFLAGS+= -Wno-error=ignored-attributes -no-integrated-as \ | 243 | EXTRA_CFLAGS+= -Wno-error=ignored-attributes -no-integrated-as \ | |
244 | -Wno-error=tautological-compare -Wno-error=null-dereference \ | 244 | -Wno-error=tautological-compare -Wno-error=null-dereference \ | |
245 | -Wno-error=empty-body -Wno-error=self-assign \ | 245 | -Wno-error=empty-body -Wno-error=self-assign \ | |
246 | -Wno-error=sometimes-uninitialized \ | 246 | -Wno-error=sometimes-uninitialized \ | |
247 | -Wno-error=unused-function -Wno-error=format \ | 247 | -Wno-error=unused-function -Wno-error=format \ | |
248 | -Wno-error=unused-const-variable \ | 248 | -Wno-error=unused-const-variable \ | |
249 | -Wno-error=gnu-designator -Wno-error=uninitialized \ | 249 | -Wno-error=gnu-designator -Wno-error=uninitialized \ | |
250 | -Wno-error=parentheses-equality | 250 | -Wno-error=parentheses-equality | |
251 | BUILDLINK_TRANSFORM+= rm:-falign-jumps=1 rm:-falign-loops=1 \ | 251 | BUILDLINK_TRANSFORM+= rm:-falign-jumps=1 rm:-falign-loops=1 \ | |
252 | rm:-mpreferred-stack-boundary=2 | 252 | rm:-mpreferred-stack-boundary=2 | |
253 | .endif | 253 | .endif | |
254 | 254 | |||
255 | MAKE_ENV+= EXTRA_HOSTCFLAGS=${EXTRA_HOSTCFLAGS:Q} EXTRA_CFLAGS=${EXTRA_CFLAGS:M*:Q} | 255 | MAKE_ENV+= EXTRA_HOSTCFLAGS=${EXTRA_HOSTCFLAGS:Q} EXTRA_CFLAGS=${EXTRA_CFLAGS:M*:Q} | |
256 | 256 | |||
257 | .include "../../lang/python/application.mk" | 257 | .include "../../lang/python/application.mk" | |
258 | .include "../../lang/python/extension.mk" | 258 | .include "../../lang/python/extension.mk" | |
259 | .include "../../textproc/py-xml/buildlink3.mk" | 259 | .include "../../textproc/py-xml/buildlink3.mk" | |
260 | .include "../../devel/ncurses/buildlink3.mk" | 260 | .include "../../devel/ncurses/buildlink3.mk" | |
261 | #.include "../../devel/SDL/buildlink3.mk" | 261 | #.include "../../devel/SDL/buildlink3.mk" | |
262 | .include "../../lang/ocaml/buildlink3.mk" | 262 | .include "../../lang/ocaml/buildlink3.mk" | |
263 | .include "../../devel/ocaml-findlib/buildlink3.mk" | 263 | .include "../../devel/ocaml-findlib/buildlink3.mk" | |
264 | .include "../../sysutils/pciutils/buildlink3.mk" | 264 | .include "../../sysutils/pciutils/buildlink3.mk" | |
265 | .include "../../devel/glib2/buildlink3.mk" | 265 | .include "../../devel/glib2/buildlink3.mk" | |
266 | .include "../../devel/yajl/buildlink3.mk" | 266 | .include "../../devel/yajl/buildlink3.mk" | |
267 | 267 | |||
268 | .include "../../mk/bsd.pkg.mk" | 268 | .include "../../mk/bsd.pkg.mk" |
@@ -1,75 +1,77 @@ | @@ -1,75 +1,77 @@ | |||
1 | $NetBSD: distinfo,v 1.15 2015/03/13 09:43:41 spz Exp $ | 1 | $NetBSD: distinfo,v 1.15.2.1 2015/04/29 21:11:13 tron Exp $ | |
2 | 2 | |||
3 | SHA1 (ipxe-git-v1.0.0.tar.gz) = da052c8de5f3485fe0253c19cf52ed6d72528485 | 3 | SHA1 (ipxe-git-v1.0.0.tar.gz) = da052c8de5f3485fe0253c19cf52ed6d72528485 | |
4 | RMD160 (ipxe-git-v1.0.0.tar.gz) = dcd9b6eaafa1ce05c1ebf2a15f2f73ad7a8c5547 | 4 | RMD160 (ipxe-git-v1.0.0.tar.gz) = dcd9b6eaafa1ce05c1ebf2a15f2f73ad7a8c5547 | |
5 | Size (ipxe-git-v1.0.0.tar.gz) = 1996881 bytes | 5 | Size (ipxe-git-v1.0.0.tar.gz) = 1996881 bytes | |
6 | SHA1 (xen-4.2.5.tar.gz) = f42741e4ec174495ace70c4b17a6b9b0e60e798a | 6 | SHA1 (xen-4.2.5.tar.gz) = f42741e4ec174495ace70c4b17a6b9b0e60e798a | |
7 | RMD160 (xen-4.2.5.tar.gz) = 7d4f7f1b32ee541d341a756b1f8da02816438d19 | 7 | RMD160 (xen-4.2.5.tar.gz) = 7d4f7f1b32ee541d341a756b1f8da02816438d19 | |
8 | Size (xen-4.2.5.tar.gz) = 15671925 bytes | 8 | Size (xen-4.2.5.tar.gz) = 15671925 bytes | |
9 | SHA1 (patch-.._.._ipxe_src_Makefile.housekeeping) = 5ec8020a9705b2f64096c2942473a8de4db578bb | 9 | SHA1 (patch-.._.._ipxe_src_Makefile.housekeeping) = 5ec8020a9705b2f64096c2942473a8de4db578bb | |
10 | SHA1 (patch-.._.._ipxe_src_arch_i386_include_librm.h) = 4549ac641b112321b4731a918d85219c3fce6808 | 10 | SHA1 (patch-.._.._ipxe_src_arch_i386_include_librm.h) = 4549ac641b112321b4731a918d85219c3fce6808 | |
11 | SHA1 (patch-.._.._ipxe_src_arch_i386_scripts_i386.lds) = 4c0cbb7f535be43e1b6f53c284340a8bafc37c0b | 11 | SHA1 (patch-.._.._ipxe_src_arch_i386_scripts_i386.lds) = 4c0cbb7f535be43e1b6f53c284340a8bafc37c0b | |
12 | SHA1 (patch-.._.._ipxe_src_core_settings.c) = 240ff973757403b983f12b2cbed826584c4a8aba | 12 | SHA1 (patch-.._.._ipxe_src_core_settings.c) = 240ff973757403b983f12b2cbed826584c4a8aba | |
13 | SHA1 (patch-.._.._ipxe_src_drivers_net_ath5k_ath5k_qcu.c) = eb86106d05d5cc3300b7b57b0e0c2fdd338bbf43 | 13 | SHA1 (patch-.._.._ipxe_src_drivers_net_ath5k_ath5k_qcu.c) = eb86106d05d5cc3300b7b57b0e0c2fdd338bbf43 | |
14 | SHA1 (patch-.._.._ipxe_src_drivers_net_ns83820.c) = fbdfc47949f4946174b705d41d2b6c4405a68704 | 14 | SHA1 (patch-.._.._ipxe_src_drivers_net_ns83820.c) = fbdfc47949f4946174b705d41d2b6c4405a68704 | |
15 | SHA1 (patch-.._.._ipxe_src_drivers_net_tulip.c) = 0d9370c64e5e6bf15a5b87944e03333a10e4a299 | 15 | SHA1 (patch-.._.._ipxe_src_drivers_net_tulip.c) = 0d9370c64e5e6bf15a5b87944e03333a10e4a299 | |
16 | SHA1 (patch-.._.._ipxe_src_net_tls.c) = 893c70515bc4cb0d4d9319fd94eddc4945f6a0b3 | 16 | SHA1 (patch-.._.._ipxe_src_net_tls.c) = 893c70515bc4cb0d4d9319fd94eddc4945f6a0b3 | |
17 | SHA1 (patch-.._Config.mk) = ec5ba76be10e43cb1b2d37686e35d5fb81d8de80 | 17 | SHA1 (patch-.._Config.mk) = ec5ba76be10e43cb1b2d37686e35d5fb81d8de80 | |
18 | SHA1 (patch-.._config_NetBSD.mk) = 90893326dcce4e3e2ef273f22ec5ddf5af0f7cd8 | 18 | SHA1 (patch-.._config_NetBSD.mk) = 90893326dcce4e3e2ef273f22ec5ddf5af0f7cd8 | |
19 | SHA1 (patch-.._config_StdGNU.mk) = 3f93999038bd9d25277803cd1d969dc5733b593f | 19 | SHA1 (patch-.._config_StdGNU.mk) = 3f93999038bd9d25277803cd1d969dc5733b593f | |
20 | SHA1 (patch-.._docs_man_xend-config.sxp.pod.5) = 36afc7b063f83adfe5b927ed0be586b102684020 | 20 | SHA1 (patch-.._docs_man_xend-config.sxp.pod.5) = 36afc7b063f83adfe5b927ed0be586b102684020 | |
21 | SHA1 (patch-.._docs_man_xl.cfg.pod.5) = 8f580bc91f346167999d91a279855c6e2710a8cc | 21 | SHA1 (patch-.._docs_man_xl.cfg.pod.5) = 8f580bc91f346167999d91a279855c6e2710a8cc | |
22 | SHA1 (patch-.._docs_man_xl.conf.pod.5) = 4009ff6aefb0a770ed42d096117dc97f8f55997f | 22 | SHA1 (patch-.._docs_man_xl.conf.pod.5) = 4009ff6aefb0a770ed42d096117dc97f8f55997f | |
23 | SHA1 (patch-.._docs_man_xl.pod.1) = 740ad6f53e113b755bc6b04abce4ec9ba08eb815 | 23 | SHA1 (patch-.._docs_man_xl.pod.1) = 740ad6f53e113b755bc6b04abce4ec9ba08eb815 | |
24 | SHA1 (patch-.._docs_man_xlcpupool.cfg.pod.5) = a693a79a1f1c16548f62f7da1fa58fa28030990f | 24 | SHA1 (patch-.._docs_man_xlcpupool.cfg.pod.5) = a693a79a1f1c16548f62f7da1fa58fa28030990f | |
25 | SHA1 (patch-.._docs_man_xm.pod.1) = 975b7570da4bf9fd9cb79539fbd36b8dfbcbd571 | 25 | SHA1 (patch-.._docs_man_xm.pod.1) = 975b7570da4bf9fd9cb79539fbd36b8dfbcbd571 | |
26 | SHA1 (patch-.._docs_man_xmdomain.cfg.pod.5) = 5563a72e203e789a86f4166c71ddb3fcff5215c6 | 26 | SHA1 (patch-.._docs_man_xmdomain.cfg.pod.5) = 5563a72e203e789a86f4166c71ddb3fcff5215c6 | |
27 | SHA1 (patch-CVE-2015-2152) = 676339abef9e79595f6c40de31ca740f8284c7a2 | 27 | SHA1 (patch-CVE-2015-2152) = 676339abef9e79595f6c40de31ca740f8284c7a2 | |
28 | SHA1 (patch-CVE-2015-2752) = fdc83a758c34581d91586f24815952a4b7145af7 | |||
29 | SHA1 (patch-CVE-2015-2756) = 73223969ce65688e9226c485f0f444c69ee23bf3 | |||
28 | SHA1 (patch-Makefile) = 37fbcd6d2f0279d4c04c91085b0e7f5611a5b92a | 30 | SHA1 (patch-Makefile) = 37fbcd6d2f0279d4c04c91085b0e7f5611a5b92a | |
29 | SHA1 (patch-Rules.mk) = 51a2804e9a2a509a428392c0eb11243884bb7f22 | 31 | SHA1 (patch-Rules.mk) = 51a2804e9a2a509a428392c0eb11243884bb7f22 | |
30 | SHA1 (patch-blktap_drivers_Makefile) = 0906a5ec3a7450fc987b01289e2560e60966d00d | 32 | SHA1 (patch-blktap_drivers_Makefile) = 0906a5ec3a7450fc987b01289e2560e60966d00d | |
31 | SHA1 (patch-configure) = 7bf4183efb76bded94a9519bf2737fb1240ab0e7 | 33 | SHA1 (patch-configure) = 7bf4183efb76bded94a9519bf2737fb1240ab0e7 | |
32 | SHA1 (patch-examples_Makefile) = 8e89fab7817785b32d79ec0cad3a2645c6981f01 | 34 | SHA1 (patch-examples_Makefile) = 8e89fab7817785b32d79ec0cad3a2645c6981f01 | |
33 | SHA1 (patch-examples_xend-config.sxp) = 5eb15470bff85d30b6d26d8fe094f59fc8e34175 | 35 | SHA1 (patch-examples_xend-config.sxp) = 5eb15470bff85d30b6d26d8fe094f59fc8e34175 | |
34 | SHA1 (patch-firmware_etherboot_Makefile) = 1cb31183853c6069dafe47db8430e0577b21408e | 36 | SHA1 (patch-firmware_etherboot_Makefile) = 1cb31183853c6069dafe47db8430e0577b21408e | |
35 | SHA1 (patch-firmware_etherboot_patches_boot__prompt__option.patch) = 7d14b60557b1e81de370b21544cd49643fa15f08 | 37 | SHA1 (patch-firmware_etherboot_patches_boot__prompt__option.patch) = 7d14b60557b1e81de370b21544cd49643fa15f08 | |
36 | SHA1 (patch-firmware_etherboot_patches_series) = cb653834fe14ff0b23fdfa525a20d3bcfe6e3819 | 38 | SHA1 (patch-firmware_etherboot_patches_series) = cb653834fe14ff0b23fdfa525a20d3bcfe6e3819 | |
37 | SHA1 (patch-firmware_hvmloader_Makefile) = 7d907fa33fa1f121b3d54116d905855529a020fd | 39 | SHA1 (patch-firmware_hvmloader_Makefile) = 7d907fa33fa1f121b3d54116d905855529a020fd | |
38 | SHA1 (patch-firmware_hvmloader_util.h) = 6346ff8b33001dcecb7297b29c9df68be34af64d | 40 | SHA1 (patch-firmware_hvmloader_util.h) = 6346ff8b33001dcecb7297b29c9df68be34af64d | |
39 | SHA1 (patch-hotplug_NetBSD_Makefile) = ab91c41ef6bbdd7f7f3d992b9f81e43056a765e2 | 41 | SHA1 (patch-hotplug_NetBSD_Makefile) = ab91c41ef6bbdd7f7f3d992b9f81e43056a765e2 | |
40 | SHA1 (patch-hotplug_NetBSD_vif-bridge) = 663d0117612730960fd610b863d863d3abeea460 | 42 | SHA1 (patch-hotplug_NetBSD_vif-bridge) = 663d0117612730960fd610b863d863d3abeea460 | |
41 | SHA1 (patch-hotplug_NetBSD_vif-ip) = c8fa179f58f1e550ab64901afd4fca53c3d11ceb | 43 | SHA1 (patch-hotplug_NetBSD_vif-ip) = c8fa179f58f1e550ab64901afd4fca53c3d11ceb | |
42 | SHA1 (patch-hotplug_common_Makefile) = 288b1fe2565c1d4ded551bf159c068504ecab470 | 44 | SHA1 (patch-hotplug_common_Makefile) = 288b1fe2565c1d4ded551bf159c068504ecab470 | |
43 | SHA1 (patch-include_xen-sys_NetBSD_gntdev.h) = 25c99a428fda6dee709888ddbcfdcfef5f654564 | 45 | SHA1 (patch-include_xen-sys_NetBSD_gntdev.h) = 25c99a428fda6dee709888ddbcfdcfef5f654564 | |
44 | SHA1 (patch-libfsimage_common_Makefile) = c3cc5335a1d6b066307c5f03fe72f513a9eb2bdb | 46 | SHA1 (patch-libfsimage_common_Makefile) = c3cc5335a1d6b066307c5f03fe72f513a9eb2bdb | |
45 | SHA1 (patch-libfsimage_ufs_ufs.h) = dc59f33cf3abd08a8cdee5977ca4168613327513 | 47 | SHA1 (patch-libfsimage_ufs_ufs.h) = dc59f33cf3abd08a8cdee5977ca4168613327513 | |
46 | SHA1 (patch-libxc_xc__netbsd.c) = c94a2f7b38bfc1479401acf1bb124251bb4e3fcf | 48 | SHA1 (patch-libxc_xc__netbsd.c) = c94a2f7b38bfc1479401acf1bb124251bb4e3fcf | |
47 | SHA1 (patch-libxl_libxl__create.c) = a212b3760f1bb796c6f126e5c795154f4e8030e2 | 49 | SHA1 (patch-libxl_libxl__create.c) = a212b3760f1bb796c6f126e5c795154f4e8030e2 | |
48 | SHA1 (patch-libxl_libxl__internal.h) = f8ff92400f7ba7858cc1963b11c1e8ee23d4e51f | 50 | SHA1 (patch-libxl_libxl__internal.h) = f8ff92400f7ba7858cc1963b11c1e8ee23d4e51f | |
49 | SHA1 (patch-ocaml_common.make) = c59d32301198d65691ab23529dd791de5ac40199 | 51 | SHA1 (patch-ocaml_common.make) = c59d32301198d65691ab23529dd791de5ac40199 | |
50 | SHA1 (patch-ocaml_xenstored_Makefile) = 0df19c3507616e104ecdfa403d14e046c5b2a368 | 52 | SHA1 (patch-ocaml_xenstored_Makefile) = 0df19c3507616e104ecdfa403d14e046c5b2a368 | |
51 | SHA1 (patch-ocaml_xenstored_define.ml) = 044144295c2818a71c14dffc9c58f8592b222b0c | 53 | SHA1 (patch-ocaml_xenstored_define.ml) = 044144295c2818a71c14dffc9c58f8592b222b0c | |
52 | SHA1 (patch-ocaml_xenstored_utils.ml) = cc792a696743fa348b274b1c23783ea1a0d7da47 | 54 | SHA1 (patch-ocaml_xenstored_utils.ml) = cc792a696743fa348b274b1c23783ea1a0d7da47 | |
53 | SHA1 (patch-pygrub_Makefile) = fa3671e0ff50a6a341ddf54a7b81c21add9e4f89 | 55 | SHA1 (patch-pygrub_Makefile) = fa3671e0ff50a6a341ddf54a7b81c21add9e4f89 | |
54 | SHA1 (patch-python_xen_xend_XendNode.py) = 2c65e4b4b85e91e92dfb3aa402ebc44694bdff06 | 56 | SHA1 (patch-python_xen_xend_XendNode.py) = 2c65e4b4b85e91e92dfb3aa402ebc44694bdff06 | |
55 | SHA1 (patch-python_xen_xend_osdep.py) = 8da6bba38bd7677ea829ca35058f7d2d1d7acad4 | 57 | SHA1 (patch-python_xen_xend_osdep.py) = 8da6bba38bd7677ea829ca35058f7d2d1d7acad4 | |
56 | SHA1 (patch-python_xen_xm_create.py) = 7b25b3b3a8d58effae395d776f2a4b94d79acfcb | 58 | SHA1 (patch-python_xen_xm_create.py) = 7b25b3b3a8d58effae395d776f2a4b94d79acfcb | |
57 | SHA1 (patch-qemu-xen-traditional_Makefile) = 0fcd7d5342269e87f14ff76be05d8757151438bc | 59 | SHA1 (patch-qemu-xen-traditional_Makefile) = 0fcd7d5342269e87f14ff76be05d8757151438bc | |
58 | SHA1 (patch-qemu-xen-traditional_block-raw-posix.c) = 6376edcc57313c2ffe9bb3d88043d160d1f644ec | 60 | SHA1 (patch-qemu-xen-traditional_block-raw-posix.c) = 6376edcc57313c2ffe9bb3d88043d160d1f644ec | |
59 | SHA1 (patch-qemu-xen-traditional_configure) = 0f09a0128762dc7d083e5986908fed5b7746a981 | 61 | SHA1 (patch-qemu-xen-traditional_configure) = 0f09a0128762dc7d083e5986908fed5b7746a981 | |
60 | SHA1 (patch-qemu-xen-traditional_hw_e1000.c) = a8faf95491867c19471690ae98df93ff1d73114a | 62 | SHA1 (patch-qemu-xen-traditional_hw_e1000.c) = a8faf95491867c19471690ae98df93ff1d73114a | |
61 | SHA1 (patch-qemu-xen-traditional_hw_ide.c) = d562c36627e861658e7a1d52514e59368871cbdb | 63 | SHA1 (patch-qemu-xen-traditional_hw_ide.c) = d562c36627e861658e7a1d52514e59368871cbdb | |
62 | SHA1 (patch-qemu-xen-traditional_hw_pass-through.c) = d1f3a1842c595e2d261b997bac02bb71de41eaac | 64 | SHA1 (patch-qemu-xen-traditional_hw_pass-through.c) = d1f3a1842c595e2d261b997bac02bb71de41eaac | |
63 | SHA1 (patch-qemu-xen-traditional_hw_pass-through.h) = 765cfbb30bdcf9c212bd7f9aa00d19d723da496e | 65 | SHA1 (patch-qemu-xen-traditional_hw_pass-through.h) = 765cfbb30bdcf9c212bd7f9aa00d19d723da496e | |
64 | SHA1 (patch-qemu-xen-traditional_hw_piix4acpi.c) = bd89d2da04e2b816a097d4eb6d18936e5fe6bceb | 66 | SHA1 (patch-qemu-xen-traditional_hw_piix4acpi.c) = bd89d2da04e2b816a097d4eb6d18936e5fe6bceb | |
65 | SHA1 (patch-qemu-xen-traditional_hw_pt-graphics.c) = 5484b9ec7d673502d73b0e4802969940eacad218 | 67 | SHA1 (patch-qemu-xen-traditional_hw_pt-graphics.c) = 5484b9ec7d673502d73b0e4802969940eacad218 | |
66 | SHA1 (patch-qemu-xen-traditional_hw_pt-msi.c) = 7281d62de494fbbb6508818c9f8c5cfc212c77d8 | 68 | SHA1 (patch-qemu-xen-traditional_hw_pt-msi.c) = 7281d62de494fbbb6508818c9f8c5cfc212c77d8 | |
67 | SHA1 (patch-qemu-xen-traditional_hw_pt-msi.h) = a33b6ed927db0204c25a9f6ff1bb8870c765f8ad | 69 | SHA1 (patch-qemu-xen-traditional_hw_pt-msi.h) = a33b6ed927db0204c25a9f6ff1bb8870c765f8ad | |
68 | SHA1 (patch-qemu-xen-traditional_i386-dm_hookstarget.mak) = 7d526e8a9a0b0daf7215c54a036f7a3306291589 | 70 | SHA1 (patch-qemu-xen-traditional_i386-dm_hookstarget.mak) = 7d526e8a9a0b0daf7215c54a036f7a3306291589 | |
69 | SHA1 (patch-qemu-xen-traditional_xen-hooks.mak) = 7acec9c981d18e1b659efc1d8e7c5c3b90d45411 | 71 | SHA1 (patch-qemu-xen-traditional_xen-hooks.mak) = 7acec9c981d18e1b659efc1d8e7c5c3b90d45411 | |
70 | SHA1 (patch-qemu-xen_audio_audio.c) = 95f7417cec027239e9591b8def632d9344f42e05 | 72 | SHA1 (patch-qemu-xen_audio_audio.c) = 95f7417cec027239e9591b8def632d9344f42e05 | |
71 | SHA1 (patch-qemu-xen_fpu_softfloat-specialize.h) = 791aeac1642101cbe2b15bf7ec189765c370f1a2 | 73 | SHA1 (patch-qemu-xen_fpu_softfloat-specialize.h) = 791aeac1642101cbe2b15bf7ec189765c370f1a2 | |
72 | SHA1 (patch-qemu-xen_ioport.c) = 3dde5877f35396015d28eb2bb318ad2f79e6b4f8 | 74 | SHA1 (patch-qemu-xen_ioport.c) = 3dde5877f35396015d28eb2bb318ad2f79e6b4f8 | |
73 | SHA1 (patch-qemu-xen_memory.c) = e4e39a0d02195e3b04d97af04d4aa31ff379b73e | 75 | SHA1 (patch-qemu-xen_memory.c) = e4e39a0d02195e3b04d97af04d4aa31ff379b73e | |
74 | SHA1 (patch-qemu-xen_qemu-doc.texi) = 33d746120d2d063708824f315641a88e3aae67d4 | 76 | SHA1 (patch-qemu-xen_qemu-doc.texi) = 33d746120d2d063708824f315641a88e3aae67d4 | |
75 | SHA1 (patch-xentrace_Makefile) = 9b53ba4a809dad7a1de34c8fa0dbe493d7256ada | 77 | SHA1 (patch-xentrace_Makefile) = 9b53ba4a809dad7a1de34c8fa0dbe493d7256ada |
$NetBSD: patch-CVE-2015-2752,v 1.1.2.2 2015/04/29 21:11:13 tron Exp $
Patch for CVE-2015-2752 aka XSA-125 from
http://xenbits.xenproject.org/xsa/xsa125-4.2.patch
--- libxc/xc_domain.c.orig 2014-09-02 06:22:57.000000000 +0000
+++ libxc/xc_domain.c
@@ -1352,6 +1352,13 @@ int xc_domain_bind_pt_isa_irq(
PT_IRQ_TYPE_ISA, 0, 0, 0, machine_irq));
}
+#ifndef min
+#define min(X, Y) ({ \
+ const typeof (X) _x = (X); \
+ const typeof (Y) _y = (Y); \
+ (void) (&_x == &_y); \
+ (_x < _y) ? _x : _y; })
+#endif
int xc_domain_memory_mapping(
xc_interface *xch,
uint32_t domid,
@@ -1361,17 +1368,55 @@ int xc_domain_memory_mapping(
uint32_t add_mapping)
{
DECLARE_DOMCTL;
+ int ret = 0, err;
+ unsigned long done = 0, nr, max_batch_sz;
+
+ if ( !nr_mfns )
+ return 0;
domctl.cmd = XEN_DOMCTL_memory_mapping;
domctl.domain = domid;
- domctl.u.memory_mapping.first_gfn = first_gfn;
- domctl.u.memory_mapping.first_mfn = first_mfn;
- domctl.u.memory_mapping.nr_mfns = nr_mfns;
domctl.u.memory_mapping.add_mapping = add_mapping;
+ max_batch_sz = nr_mfns;
+ do
+ {
+ nr = min(nr_mfns - done, max_batch_sz);
+ domctl.u.memory_mapping.nr_mfns = nr;
+ domctl.u.memory_mapping.first_gfn = first_gfn + done;
+ domctl.u.memory_mapping.first_mfn = first_mfn + done;
+ err = do_domctl(xch, &domctl);
+ if ( err && errno == E2BIG )
+ {
+ if ( max_batch_sz <= 1 )
+ break;
+ max_batch_sz >>= 1;
+ continue;
+ }
+ /* Save the first error... */
+ if ( !ret )
+ ret = err;
+ /* .. and ignore the rest of them when removing. */
+ if ( err && add_mapping != DPCI_REMOVE_MAPPING )
+ break;
+
+ done += nr;
+ } while ( done < nr_mfns );
+
+ /*
+ * Undo what we have done unless unmapping, by unmapping the entire region.
+ * Errors here are ignored.
+ */
+ if ( ret && add_mapping != DPCI_REMOVE_MAPPING )
+ xc_domain_memory_mapping(xch, domid, first_gfn, first_mfn, nr_mfns,
+ DPCI_REMOVE_MAPPING);
+
+ /* We might get E2BIG so many times that we never advance. */
+ if ( !done && !ret )
+ ret = -1;
- return do_domctl(xch, &domctl);
+ return ret;
}
-
+#undef min
int xc_domain_ioport_mapping(
xc_interface *xch,
uint32_t domid,
$NetBSD: patch-CVE-2015-2756,v 1.1.2.2 2015/04/29 21:11:13 tron Exp $
patch for CVE-2015-2756 aka XSA-126 from
http://xenbits.xenproject.org/xsa/xsa126-qemut.patch
--- qemu-xen-traditional/hw/pass-through.c.orig 2014-01-09 12:44:42.000000000 +0000
+++ qemu-xen-traditional/hw/pass-through.c
@@ -172,9 +172,6 @@ static int pt_word_reg_read(struct pt_de
static int pt_long_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask);
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
@@ -286,9 +283,9 @@ static struct pt_reg_info_tbl pt_emu_reg
.size = 2,
.init_val = 0x0000,
.ro_mask = 0xF880,
- .emu_mask = 0x0740,
+ .emu_mask = 0x0743,
.init = pt_common_reg_init,
- .u.w.read = pt_cmd_reg_read,
+ .u.w.read = pt_word_reg_read,
.u.w.write = pt_cmd_reg_write,
.u.w.restore = pt_cmd_reg_restore,
},
@@ -1905,7 +1902,7 @@ static int pt_dev_is_virtfn(struct pci_d
return rc;
}
-static int pt_register_regions(struct pt_dev *assigned_device)
+static int pt_register_regions(struct pt_dev *assigned_device, uint16_t *cmd)
{
int i = 0;
uint32_t bar_data = 0;
@@ -1925,17 +1922,26 @@ static int pt_register_regions(struct pt
/* Register current region */
if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_IO )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_IO,
pt_ioport_map);
+ *cmd |= PCI_COMMAND_IO;
+ }
else if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_MEM_PREFETCH )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM_PREFETCH,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
else
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
PT_LOG("IO region registered (size=0x%08x base_addr=0x%08x)\n",
(uint32_t)(pci_dev->size[i]),
@@ -3263,27 +3269,6 @@ static int pt_long_reg_read(struct pt_de
return 0;
}
-/* read Command register */
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask)
-{
- struct pt_reg_info_tbl *reg = cfg_entry->reg;
- uint16_t valid_emu_mask = 0;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
-
- /* emulate word register */
- valid_emu_mask = emu_mask & valid_mask;
- *value = PT_MERGE_VALUE(*value, cfg_entry->data, ~valid_emu_mask);
-
- return 0;
-}
-
/* read BAR */
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
@@ -3418,19 +3403,13 @@ static int pt_cmd_reg_write(struct pt_de
uint16_t writable_mask = 0;
uint16_t throughable_mask = 0;
uint16_t wr_value = *value;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
/* modify emulate register */
writable_mask = ~reg->ro_mask & valid_mask;
cfg_entry->data = PT_MERGE_VALUE(*value, cfg_entry->data, writable_mask);
/* create value for writing to I/O device register */
- throughable_mask = ~emu_mask & valid_mask;
+ throughable_mask = ~reg->emu_mask & valid_mask;
if (*value & PCI_COMMAND_DISABLE_INTx)
{
@@ -4205,6 +4184,7 @@ static struct pt_dev * register_real_dev
struct pt_dev *assigned_device = NULL;
struct pci_dev *pci_dev;
uint8_t e_device, e_intx;
+ uint16_t cmd = 0;
char *key, *val;
int msi_translate, power_mgmt;
@@ -4294,7 +4274,7 @@ static struct pt_dev * register_real_dev
assigned_device->dev.config[i] = pci_read_byte(pci_dev, i);
/* Handle real device's MMIO/PIO BARs */
- pt_register_regions(assigned_device);
+ pt_register_regions(assigned_device, &cmd);
/* Setup VGA bios for passthroughed gfx */
if ( setup_vga_pt(assigned_device) < 0 )
@@ -4372,6 +4352,10 @@ static struct pt_dev * register_real_dev
}
out:
+ if (cmd)
+ pci_write_word(pci_dev, PCI_COMMAND,
+ *(uint16_t *)(&assigned_device->dev.config[PCI_COMMAND]) | cmd);
+
PT_LOG("Real physical device %02x:%02x.%x registered successfuly!\n"
"IRQ type = %s\n", r_bus, r_dev, r_func,
assigned_device->msi_trans_en? "MSI-INTx":"INTx");
@@ -1,217 +1,217 @@ | @@ -1,217 +1,217 @@ | |||
1 | # $NetBSD: Makefile,v 1.5 2015/03/13 10:27:48 spz Exp $ | 1 | # $NetBSD: Makefile,v 1.5.2.1 2015/04/29 21:11:13 tron Exp $ | |
2 | 2 | |||
3 | VERSION= 4.5.0 | 3 | VERSION= 4.5.0 | |
4 | VERSION_IPXE= 9a93db3f0947484e30e753bbd61a10b17336e20e | 4 | VERSION_IPXE= 9a93db3f0947484e30e753bbd61a10b17336e20e | |
5 | 5 | |||
6 | DISTNAME= xen-${VERSION} | 6 | DISTNAME= xen-${VERSION} | |
7 | PKGNAME= xentools45-${VERSION} | 7 | PKGNAME= xentools45-${VERSION} | |
8 | PKGREVISION= 2 | 8 | PKGREVISION= 3 | |
9 | CATEGORIES= sysutils | 9 | CATEGORIES= sysutils | |
10 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | 10 | MASTER_SITES= http://bits.xensource.com/oss-xen/release/${VERSION}/ | |
11 | 11 | |||
12 | DISTFILES= ${DISTNAME}.tar.gz | 12 | DISTFILES= ${DISTNAME}.tar.gz | |
13 | DISTFILES+= ipxe-git-${VERSION_IPXE}.tar.gz | 13 | DISTFILES+= ipxe-git-${VERSION_IPXE}.tar.gz | |
14 | SITES.ipxe-git-${VERSION_IPXE}.tar.gz += http://xenbits.xensource.com/xen-extfiles/ | 14 | SITES.ipxe-git-${VERSION_IPXE}.tar.gz += http://xenbits.xensource.com/xen-extfiles/ | |
15 | 15 | |||
16 | MAINTAINER= pkgsrc-users@NetBSD.org | 16 | MAINTAINER= pkgsrc-users@NetBSD.org | |
17 | HOMEPAGE= http://xen.org/ | 17 | HOMEPAGE= http://xen.org/ | |
18 | COMMENT= Userland Tools for Xen 4.5.x | 18 | COMMENT= Userland Tools for Xen 4.5.x | |
19 | LICENSE= gnu-gpl-v2 | 19 | LICENSE= gnu-gpl-v2 | |
20 | 20 | |||
21 | # XXX add version check: Xen requires dev86 >= 0.16.14 | 21 | # XXX add version check: Xen requires dev86 >= 0.16.14 | |
22 | BUILD_DEPENDS+= dev86-[0-9]*:../../devel/dev86 # needed to build firmware | 22 | BUILD_DEPENDS+= dev86-[0-9]*:../../devel/dev86 # needed to build firmware | |
23 | .if !exists(/usr/bin/iasl) | 23 | .if !exists(/usr/bin/iasl) | |
24 | BUILD_DEPENDS+= acpica-utils-[0-9]*:../../sysutils/acpica-utils | 24 | BUILD_DEPENDS+= acpica-utils-[0-9]*:../../sysutils/acpica-utils | |
25 | .endif | 25 | .endif | |
26 | 26 | |||
27 | PKG_SYSCONFSUBDIR= xen | 27 | PKG_SYSCONFSUBDIR= xen | |
28 | 28 | |||
29 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | 29 | ONLY_FOR_PLATFORM= Linux-2.6*-i386 Linux-2.6*-x86_64 | |
30 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | 30 | ONLY_FOR_PLATFORM+= NetBSD-[5-9].*-x86_64 NetBSD-[5-9].*-i386 | |
31 | 31 | |||
32 | CONFLICTS+= libxen-[0-9]* | 32 | CONFLICTS+= libxen-[0-9]* | |
33 | CONFLICTS+= xentools20-[0-9]* | 33 | CONFLICTS+= xentools20-[0-9]* | |
34 | CONFLICTS+= xentools3-[0-9]* | 34 | CONFLICTS+= xentools3-[0-9]* | |
35 | CONFLICTS+= xenstoretools-[0-9]* | 35 | CONFLICTS+= xenstoretools-[0-9]* | |
36 | 36 | |||
37 | XENTOP= ${WRKDIR}/xen-${VERSION} | 37 | XENTOP= ${WRKDIR}/xen-${VERSION} | |
38 | WRKSRC= ${XENTOP}/tools | 38 | WRKSRC= ${XENTOP}/tools | |
39 | CHECK_PORTABILITY_SKIP= examples/* | 39 | CHECK_PORTABILITY_SKIP= examples/* | |
40 | 40 | |||
41 | EGDIR= ${PREFIX}/share/examples/xen | 41 | EGDIR= ${PREFIX}/share/examples/xen | |
42 | MESSAGE_SUBST+= EGDIR=${EGDIR} | 42 | MESSAGE_SUBST+= EGDIR=${EGDIR} | |
43 | 43 | |||
44 | USE_TOOLS+= pod2man gmake pkg-config makeinfo perl bash | 44 | USE_TOOLS+= pod2man gmake pkg-config makeinfo perl bash | |
45 | 45 | |||
46 | GNU_CONFIGURE= YES | 46 | GNU_CONFIGURE= YES | |
47 | #CONFIGURE_ARGS+= --enable-xenapi | 47 | #CONFIGURE_ARGS+= --enable-xenapi | |
48 | CONFIGURE_ARGS+= --disable-seabios | 48 | CONFIGURE_ARGS+= --disable-seabios | |
49 | 49 | |||
50 | MAKE_ENV+= PREFIX=${prefix:Q} WRKSRC=${WRKSRC} | 50 | MAKE_ENV+= PREFIX=${prefix:Q} WRKSRC=${WRKSRC} | |
51 | MAKE_ENV+= EGDIR=${EGDIR} | 51 | MAKE_ENV+= EGDIR=${EGDIR} | |
52 | MAKE_ENV+= XEN_EXAMPLES_DIR=${EGDIR} | 52 | MAKE_ENV+= XEN_EXAMPLES_DIR=${EGDIR} | |
53 | MAKE_ENV+= BASH_COMPLETION_DIR=${EGDIR} | 53 | MAKE_ENV+= BASH_COMPLETION_DIR=${EGDIR} | |
54 | MAKE_ENV+= MV=${MV:Q} PYTHON=${PYTHONBIN:Q} SED=${SED:Q} | 54 | MAKE_ENV+= MV=${MV:Q} PYTHON=${PYTHONBIN:Q} SED=${SED:Q} | |
55 | MAKE_ENV+= VARBASE=${VARBASE} | 55 | MAKE_ENV+= VARBASE=${VARBASE} | |
56 | MAKE_ENV+= XEN_CONFIG_DIR=${PKG_SYSCONFDIR} | 56 | MAKE_ENV+= XEN_CONFIG_DIR=${PKG_SYSCONFDIR} | |
57 | MAKE_ENV+= V=YES | 57 | MAKE_ENV+= V=YES | |
58 | MAKE_ENV+= NO_WERROR=1 | 58 | MAKE_ENV+= NO_WERROR=1 | |
59 | 59 | |||
60 | #MAKE_ENV+= INSTALL_DIR=${BSD_INSTALL_DATA_DIR} | 60 | #MAKE_ENV+= INSTALL_DIR=${BSD_INSTALL_DATA_DIR} | |
61 | #MAKE_ENV+= INSTALL_DATA=${BSD_INSTALL_DATA} | 61 | #MAKE_ENV+= INSTALL_DATA=${BSD_INSTALL_DATA} | |
62 | #MAKE_ENV+= INSTALL_PROG=${BSD_INSTALL_PROGRAM} | 62 | #MAKE_ENV+= INSTALL_PROG=${BSD_INSTALL_PROGRAM} | |
63 | 63 | |||
64 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 | 64 | PYTHON_VERSIONS_INCOMPATIBLE= 33 34 | |
65 | 65 | |||
66 | PY_PATCHPLIST= yes | 66 | PY_PATCHPLIST= yes | |
67 | REPLACE_PYTHON+= misc/sbdf2devicepath misc/xen-bugtool | 67 | REPLACE_PYTHON+= misc/sbdf2devicepath misc/xen-bugtool | |
68 | REPLACE_PYTHON+= misc/xen-ringwatch misc/xencons | 68 | REPLACE_PYTHON+= misc/xen-ringwatch misc/xencons | |
69 | REPLACE_PYTHON+= misc/xenpvnetboot misc/xensymoops | 69 | REPLACE_PYTHON+= misc/xenpvnetboot misc/xensymoops | |
70 | REPLACE_PYTHON+= xenmon/xenmon.py | 70 | REPLACE_PYTHON+= xenmon/xenmon.py | |
71 | 71 | |||
72 | SUBST_CLASSES+= perlpath | 72 | SUBST_CLASSES+= perlpath | |
73 | SUBST_STAGE.perlpath= pre-configure | 73 | SUBST_STAGE.perlpath= pre-configure | |
74 | SUBST_FILES.perlpath= ../tools/misc/xencov_split | 74 | SUBST_FILES.perlpath= ../tools/misc/xencov_split | |
75 | SUBST_FILES.perlpath+= ../tools/firmware/rombios/makesym.perl | 75 | SUBST_FILES.perlpath+= ../tools/firmware/rombios/makesym.perl | |
76 | SUBST_FILES.perlpath+= ../tools/qemu-xen-traditional/texi2pod.pl | 76 | SUBST_FILES.perlpath+= ../tools/qemu-xen-traditional/texi2pod.pl | |
77 | SUBST_FILES.perlpath+= ../tools/examples/xeninfo.pl | 77 | SUBST_FILES.perlpath+= ../tools/examples/xeninfo.pl | |
78 | SUBST_FILES.perlpath+= ../tools/include/xen-external/bsd-sys-queue-h-seddery | 78 | SUBST_FILES.perlpath+= ../tools/include/xen-external/bsd-sys-queue-h-seddery | |
79 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/texi2pod.pl | 79 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/texi2pod.pl | |
80 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/get_maintainer.pl | 80 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/get_maintainer.pl | |
81 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/checkpatch.pl | 81 | SUBST_FILES.perlpath+= ../tools/qemu-xen/scripts/checkpatch.pl | |
82 | SUBST_FILES.perlpath+= ../tools/libxl/libxl_save_msgs_gen.pl | 82 | SUBST_FILES.perlpath+= ../tools/libxl/libxl_save_msgs_gen.pl | |
83 | SUBST_FILES.perlpath+= ../tools/libxl/check-libxl-api-rules | 83 | SUBST_FILES.perlpath+= ../tools/libxl/check-libxl-api-rules | |
84 | SUBST_FILES.perlpath+= ../../ipxe/src/drivers/infiniband/qib_genbits.pl | 84 | SUBST_FILES.perlpath+= ../../ipxe/src/drivers/infiniband/qib_genbits.pl | |
85 | SUBST_FILES.perlpath+= ../../ipxe/src/util/catrom.pl | 85 | SUBST_FILES.perlpath+= ../../ipxe/src/util/catrom.pl | |
86 | SUBST_FILES.perlpath+= ../../ipxe/src/util/diffsize.pl | 86 | SUBST_FILES.perlpath+= ../../ipxe/src/util/diffsize.pl | |
87 | SUBST_FILES.perlpath+= ../../ipxe/src/util/disrom.pl | 87 | SUBST_FILES.perlpath+= ../../ipxe/src/util/disrom.pl | |
88 | SUBST_FILES.perlpath+= ../../ipxe/src/util/get-pci-ids | 88 | SUBST_FILES.perlpath+= ../../ipxe/src/util/get-pci-ids | |
89 | SUBST_FILES.perlpath+= ../../ipxe/src/util/licence.pl | 89 | SUBST_FILES.perlpath+= ../../ipxe/src/util/licence.pl | |
90 | SUBST_FILES.perlpath+= ../../ipxe/src/util/mergerom.pl | 90 | SUBST_FILES.perlpath+= ../../ipxe/src/util/mergerom.pl | |
91 | SUBST_FILES.perlpath+= ../../ipxe/src/util/modrom.pl | 91 | SUBST_FILES.perlpath+= ../../ipxe/src/util/modrom.pl | |
92 | SUBST_FILES.perlpath+= ../../ipxe/src/util/padimg.pl | 92 | SUBST_FILES.perlpath+= ../../ipxe/src/util/padimg.pl | |
93 | SUBST_FILES.perlpath+= ../../ipxe/src/util/parserom.pl | 93 | SUBST_FILES.perlpath+= ../../ipxe/src/util/parserom.pl | |
94 | SUBST_FILES.perlpath+= ../../ipxe/src/util/sortobjdump.pl | 94 | SUBST_FILES.perlpath+= ../../ipxe/src/util/sortobjdump.pl | |
95 | SUBST_FILES.perlpath+= ../../ipxe/src/util/swapdevids.pl | 95 | SUBST_FILES.perlpath+= ../../ipxe/src/util/swapdevids.pl | |
96 | SUBST_FILES.perlpath+= ../../ipxe/src/util/symcheck.pl | 96 | SUBST_FILES.perlpath+= ../../ipxe/src/util/symcheck.pl | |
97 | SUBST_SED.perlpath= -e "s|/usr/bin/perl|${PREFIX}/bin/perl|g" | 97 | SUBST_SED.perlpath= -e "s|/usr/bin/perl|${PREFIX}/bin/perl|g" | |
98 | 98 | |||
99 | SUBST_CLASSES+= pathsvar | 99 | SUBST_CLASSES+= pathsvar | |
100 | SUBST_STAGE.pathsvar= pre-configure | 100 | SUBST_STAGE.pathsvar= pre-configure | |
101 | SUBST_FILES.pathsvar= Makefile \ | 101 | SUBST_FILES.pathsvar= Makefile \ | |
102 | hotplug/Linux/init.d/sysconfig.xendomains | 102 | hotplug/Linux/init.d/sysconfig.xendomains | |
103 | SUBST_SED.pathsvar= -e "s|/var/lib|${VARBASE}/run|g" | 103 | SUBST_SED.pathsvar= -e "s|/var/lib|${VARBASE}/run|g" | |
104 | 104 | |||
105 | SUBST_CLASSES+= conf | 105 | SUBST_CLASSES+= conf | |
106 | SUBST_STAGE.conf= pre-configure | 106 | SUBST_STAGE.conf= pre-configure | |
107 | SUBST_FILES.conf+= ocaml/xenstored/define.ml | 107 | SUBST_FILES.conf+= ocaml/xenstored/define.ml | |
108 | SUBST_SED.conf= -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" | 108 | SUBST_SED.conf= -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" | |
109 | 109 | |||
110 | .include "../../mk/bsd.prefs.mk" | 110 | .include "../../mk/bsd.prefs.mk" | |
111 | 111 | |||
112 | XEND_SCRIPTS= block vif-bridge vif-ip qemu-ifup hotplugpath.sh | 112 | XEND_SCRIPTS= block vif-bridge vif-ip qemu-ifup hotplugpath.sh | |
113 | 113 | |||
114 | .if ${OPSYS} == "NetBSD" | 114 | .if ${OPSYS} == "NetBSD" | |
115 | SUBST_CLASSES+= proc | 115 | SUBST_CLASSES+= proc | |
116 | SUBST_STAGE.proc= pre-configure | 116 | SUBST_STAGE.proc= pre-configure | |
117 | SUBST_FILES.proc+= ocaml/xenstored/define.ml | 117 | SUBST_FILES.proc+= ocaml/xenstored/define.ml | |
118 | SUBST_SED.proc= -e "s|/proc|/kern|g" | 118 | SUBST_SED.proc= -e "s|/proc|/kern|g" | |
119 | PROCPATH= /kern | 119 | PROCPATH= /kern | |
120 | .else | 120 | .else | |
121 | PROCPATH= /proc | 121 | PROCPATH= /proc | |
122 | .endif | 122 | .endif | |
123 | 123 | |||
124 | SUBST_CLASSES+= procdev | 124 | SUBST_CLASSES+= procdev | |
125 | SUBST_STAGE.procdev= pre-configure | 125 | SUBST_STAGE.procdev= pre-configure | |
126 | SUBST_FILES.procdev= ocaml/xenstored/define.ml | 126 | SUBST_FILES.procdev= ocaml/xenstored/define.ml | |
127 | .if ${OPSYS} == "NetBSD" | 127 | .if ${OPSYS} == "NetBSD" | |
128 | SUBST_SED.procdev= -e "s|@PROCDEV@|/dev|g" | 128 | SUBST_SED.procdev= -e "s|@PROCDEV@|/dev|g" | |
129 | .else | 129 | .else | |
130 | SUBST_SED.procdev= -e "s|@PROCDEV@|/proc/xen|g" | 130 | SUBST_SED.procdev= -e "s|@PROCDEV@|/proc/xen|g" | |
131 | .endif | 131 | .endif | |
132 | 132 | |||
133 | .if ${OPSYS} == "NetBSD" | 133 | .if ${OPSYS} == "NetBSD" | |
134 | MESSAGE_SRC= ${.CURDIR}/MESSAGE ${.CURDIR}/MESSAGE.NetBSD | 134 | MESSAGE_SRC= ${.CURDIR}/MESSAGE ${.CURDIR}/MESSAGE.NetBSD | |
135 | .endif | 135 | .endif | |
136 | 136 | |||
137 | RCD_SCRIPTS= xen-watchdog xencommons xendomains | 137 | RCD_SCRIPTS= xen-watchdog xencommons xendomains | |
138 | FILES_SUBST+= RCD_INTERPRETER=${PYTHONBIN:Q} | 138 | FILES_SUBST+= RCD_INTERPRETER=${PYTHONBIN:Q} | |
139 | FILES_SUBST+= PROCPATH=${PROCPATH:Q} | 139 | FILES_SUBST+= PROCPATH=${PROCPATH:Q} | |
140 | FILES_SUBST+= PKG_SYSCONFDIR=${PKG_SYSCONFDIR} | 140 | FILES_SUBST+= PKG_SYSCONFDIR=${PKG_SYSCONFDIR} | |
141 | FILES_SUBST+= PREFIX=${PREFIX} | 141 | FILES_SUBST+= PREFIX=${PREFIX} | |
142 | 142 | |||
143 | BLKTAP_FILES= blk_netbsd.c blktapctrl_netbsd.c | 143 | BLKTAP_FILES= blk_netbsd.c blktapctrl_netbsd.c | |
144 | 144 | |||
145 | CONF_FILES+= ${EGDIR}/xl.conf ${PKG_SYSCONFDIR}/xl.conf | 145 | CONF_FILES+= ${EGDIR}/xl.conf ${PKG_SYSCONFDIR}/xl.conf | |
146 | CONF_FILES+= ${EGDIR}/oxenstored.conf ${PKG_SYSCONFDIR}/oxenstored.conf | 146 | CONF_FILES+= ${EGDIR}/oxenstored.conf ${PKG_SYSCONFDIR}/oxenstored.conf | |
147 | 147 | |||
148 | OWN_DIRS= ${PKG_SYSCONFDIR}/scripts ${VARBASE}/log/xen | 148 | OWN_DIRS= ${PKG_SYSCONFDIR}/scripts ${VARBASE}/log/xen | |
149 | OWN_DIRS+= ${VARBASE}/lib/xen | 149 | OWN_DIRS+= ${VARBASE}/lib/xen | |
150 | 150 | |||
151 | .for s in ${XEND_SCRIPTS} | 151 | .for s in ${XEND_SCRIPTS} | |
152 | CONF_FILES_PERMS+= ${EGDIR}/scripts/${s} ${PKG_SYSCONFDIR}/scripts/${s} \ | 152 | CONF_FILES_PERMS+= ${EGDIR}/scripts/${s} ${PKG_SYSCONFDIR}/scripts/${s} \ | |
153 | ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0755 | 153 | ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0755 | |
154 | .endfor | 154 | .endfor | |
155 | 155 | |||
156 | pre-build: | 156 | pre-build: | |
157 | rm -f ${WRKSRC}/check/check_x11_devel | 157 | rm -f ${WRKSRC}/check/check_x11_devel | |
158 | .for s in ${BLKTAP_FILES} | 158 | .for s in ${BLKTAP_FILES} | |
159 | ${CP} -f ${FILESDIR}/${s} ${WRKSRC}/blktap/drivers/ | 159 | ${CP} -f ${FILESDIR}/${s} ${WRKSRC}/blktap/drivers/ | |
160 | .endfor | 160 | .endfor | |
161 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 161 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
162 | ${XENTOP}/docs/man/xl.pod.1 |\ | 162 | ${XENTOP}/docs/man/xl.pod.1 |\ | |
163 | pod2man >${WRKDIR}/xl.1 | 163 | pod2man >${WRKDIR}/xl.1 | |
164 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 164 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
165 | ${XENTOP}/docs/man/xl.cfg.pod.5 |\ | 165 | ${XENTOP}/docs/man/xl.cfg.pod.5 |\ | |
166 | pod2man >${WRKDIR}/xl.cfg.5 | 166 | pod2man >${WRKDIR}/xl.cfg.5 | |
167 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 167 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
168 | ${XENTOP}/docs/man/xl.conf.pod.5 |\ | 168 | ${XENTOP}/docs/man/xl.conf.pod.5 |\ | |
169 | pod2man >${WRKDIR}/xl.conf.5 | 169 | pod2man >${WRKDIR}/xl.conf.5 | |
170 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | 170 | ${SED} -e "s,@XENDCONFDIR@,${PKG_SYSCONFDIR},g" \ | |
171 | ${XENTOP}/docs/man/xlcpupool.cfg.pod.5 |\ | 171 | ${XENTOP}/docs/man/xlcpupool.cfg.pod.5 |\ | |
172 | pod2man >${WRKDIR}/xlcpupool.cfg.5 | 172 | pod2man >${WRKDIR}/xlcpupool.cfg.5 | |
173 | 173 | |||
174 | INSTALLATION_DIRS= ${EGDIR} ${PKGMANDIR}/man5 | 174 | INSTALLATION_DIRS= ${EGDIR} ${PKGMANDIR}/man5 | |
175 | 175 | |||
176 | BUILD_DEFS+= VARBASE | 176 | BUILD_DEFS+= VARBASE | |
177 | 177 | |||
178 | post-install: | 178 | post-install: | |
179 | ${INSTALL_DATA} ${WRKDIR}/xl.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1 | 179 | ${INSTALL_DATA} ${WRKDIR}/xl.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1 | |
180 | ${INSTALL_DATA} ${WRKDIR}/xl.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | 180 | ${INSTALL_DATA} ${WRKDIR}/xl.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | |
181 | ${INSTALL_DATA} ${WRKDIR}/xl.conf.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | 181 | ${INSTALL_DATA} ${WRKDIR}/xl.conf.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | |
182 | ${INSTALL_DATA} ${WRKDIR}/xlcpupool.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | 182 | ${INSTALL_DATA} ${WRKDIR}/xlcpupool.cfg.5 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man5 | |
183 | 183 | |||
184 | .if ${OPSYS} == "NetBSD" && !exists(/var/shm) | 184 | .if ${OPSYS} == "NetBSD" && !exists(/var/shm) | |
185 | CPPFLAGS+= -Dshm_open=open -Dshm_unlink=unlink | 185 | CPPFLAGS+= -Dshm_open=open -Dshm_unlink=unlink | |
186 | .endif | 186 | .endif | |
187 | 187 | |||
188 | .include "../../mk/compiler.mk" | 188 | .include "../../mk/compiler.mk" | |
189 | .if !empty(PKGSRC_COMPILER:Mclang) | 189 | .if !empty(PKGSRC_COMPILER:Mclang) | |
190 | EXTRA_HOSTCFLAGS+= -Wno-error=ignored-attributes | 190 | EXTRA_HOSTCFLAGS+= -Wno-error=ignored-attributes | |
191 | EXTRA_CFLAGS+= -Wno-error=ignored-attributes -no-integrated-as \ | 191 | EXTRA_CFLAGS+= -Wno-error=ignored-attributes -no-integrated-as \ | |
192 | -Wno-error=tautological-compare -Wno-error=null-dereference \ | 192 | -Wno-error=tautological-compare -Wno-error=null-dereference \ | |
193 | -Wno-error=empty-body -Wno-error=self-assign \ | 193 | -Wno-error=empty-body -Wno-error=self-assign \ | |
194 | -Wno-error=sometimes-uninitialized \ | 194 | -Wno-error=sometimes-uninitialized \ | |
195 | -Wno-error=unused-function -Wno-error=format \ | 195 | -Wno-error=unused-function -Wno-error=format \ | |
196 | -Wno-error=unused-const-variable \ | 196 | -Wno-error=unused-const-variable \ | |
197 | -Wno-error=gnu-designator -Wno-error=uninitialized \ | 197 | -Wno-error=gnu-designator -Wno-error=uninitialized \ | |
198 | -Wno-error=parentheses-equality \ | 198 | -Wno-error=parentheses-equality \ | |
199 | -Wno-error=enum-conversion | 199 | -Wno-error=enum-conversion | |
200 | BUILDLINK_TRANSFORM+= rm:-falign-jumps=1 rm:-falign-loops=1 \ | 200 | BUILDLINK_TRANSFORM+= rm:-falign-jumps=1 rm:-falign-loops=1 \ | |
201 | rm:-mpreferred-stack-boundary=2 | 201 | rm:-mpreferred-stack-boundary=2 | |
202 | .endif | 202 | .endif | |
203 | 203 | |||
204 | MAKE_ENV+= EXTRA_HOSTCFLAGS=${EXTRA_HOSTCFLAGS:Q} EXTRA_CFLAGS=${EXTRA_CFLAGS:M*:Q} | 204 | MAKE_ENV+= EXTRA_HOSTCFLAGS=${EXTRA_HOSTCFLAGS:Q} EXTRA_CFLAGS=${EXTRA_CFLAGS:M*:Q} | |
205 | 205 | |||
206 | .include "../../lang/python/application.mk" | 206 | .include "../../lang/python/application.mk" | |
207 | .include "../../lang/python/extension.mk" | 207 | .include "../../lang/python/extension.mk" | |
208 | .include "../../devel/ncurses/buildlink3.mk" | 208 | .include "../../devel/ncurses/buildlink3.mk" | |
209 | #.include "../../devel/SDL/buildlink3.mk" | 209 | #.include "../../devel/SDL/buildlink3.mk" | |
210 | .include "../../lang/ocaml/buildlink3.mk" | 210 | .include "../../lang/ocaml/buildlink3.mk" | |
211 | .include "../../devel/ocaml-findlib/buildlink3.mk" | 211 | .include "../../devel/ocaml-findlib/buildlink3.mk" | |
212 | .include "../../sysutils/pciutils/buildlink3.mk" | 212 | .include "../../sysutils/pciutils/buildlink3.mk" | |
213 | .include "../../devel/glib2/buildlink3.mk" | 213 | .include "../../devel/glib2/buildlink3.mk" | |
214 | .include "../../devel/yajl/buildlink3.mk" | 214 | .include "../../devel/yajl/buildlink3.mk" | |
215 | .include "../../x11/pixman/buildlink3.mk" | 215 | .include "../../x11/pixman/buildlink3.mk" | |
216 | 216 | |||
217 | .include "../../mk/bsd.pkg.mk" | 217 | .include "../../mk/bsd.pkg.mk" |
@@ -1,61 +1,63 @@ | @@ -1,61 +1,63 @@ | |||
1 | $NetBSD: distinfo,v 1.5 2015/03/13 10:27:48 spz Exp $ | 1 | $NetBSD: distinfo,v 1.5.2.1 2015/04/29 21:11:13 tron Exp $ | |
2 | 2 | |||
3 | SHA1 (ipxe-git-9a93db3f0947484e30e753bbd61a10b17336e20e.tar.gz) = fecadf952821e830ce1a1d19655288eef8488f88 | 3 | SHA1 (ipxe-git-9a93db3f0947484e30e753bbd61a10b17336e20e.tar.gz) = fecadf952821e830ce1a1d19655288eef8488f88 | |
4 | RMD160 (ipxe-git-9a93db3f0947484e30e753bbd61a10b17336e20e.tar.gz) = 539bfa12db7054228250d6dd380bbf96c1a040f8 | 4 | RMD160 (ipxe-git-9a93db3f0947484e30e753bbd61a10b17336e20e.tar.gz) = 539bfa12db7054228250d6dd380bbf96c1a040f8 | |
5 | Size (ipxe-git-9a93db3f0947484e30e753bbd61a10b17336e20e.tar.gz) = 2867999 bytes | 5 | Size (ipxe-git-9a93db3f0947484e30e753bbd61a10b17336e20e.tar.gz) = 2867999 bytes | |
6 | SHA1 (xen-4.5.0.tar.gz) = c4aab5fb366496ad1edc7fe0a935a0d604335637 | 6 | SHA1 (xen-4.5.0.tar.gz) = c4aab5fb366496ad1edc7fe0a935a0d604335637 | |
7 | RMD160 (xen-4.5.0.tar.gz) = e35ba0cb484492c1a289218eb9bf53b57dbd3a45 | 7 | RMD160 (xen-4.5.0.tar.gz) = e35ba0cb484492c1a289218eb9bf53b57dbd3a45 | |
8 | Size (xen-4.5.0.tar.gz) = 18404933 bytes | 8 | Size (xen-4.5.0.tar.gz) = 18404933 bytes | |
9 | SHA1 (patch-.._.._ipxe_src_core_settings.c) = 9e053e5e9936f49c46af0d59382a67d5f28cb39d | 9 | SHA1 (patch-.._.._ipxe_src_core_settings.c) = 9e053e5e9936f49c46af0d59382a67d5f28cb39d | |
10 | SHA1 (patch-.._.._ipxe_src_interface_efi_efi_snp.c) = 7cd8a2d2dbeff55624b5d3461d22cd8331221762 | 10 | SHA1 (patch-.._.._ipxe_src_interface_efi_efi_snp.c) = 7cd8a2d2dbeff55624b5d3461d22cd8331221762 | |
11 | SHA1 (patch-.._.._ipxe_src_net_fcels.c) = 7c13c87af5e38233f8b867503789f536394e7005 | 11 | SHA1 (patch-.._.._ipxe_src_net_fcels.c) = 7c13c87af5e38233f8b867503789f536394e7005 | |
12 | SHA1 (patch-.._.._ipxe_src_net_tls.c) = c36b812c4c9a3aa7309219dfad2f7a24ba818e59 | 12 | SHA1 (patch-.._.._ipxe_src_net_tls.c) = c36b812c4c9a3aa7309219dfad2f7a24ba818e59 | |
13 | SHA1 (patch-.._Config.mk) = 36a8942a9fc0f7d601c9b5f7fd1332db99f9ac4b | 13 | SHA1 (patch-.._Config.mk) = 36a8942a9fc0f7d601c9b5f7fd1332db99f9ac4b | |
14 | SHA1 (patch-.._docs_man_xl.cfg.pod.5) = e2058495b6fe85af338e22560d46996d36aeedab | 14 | SHA1 (patch-.._docs_man_xl.cfg.pod.5) = e2058495b6fe85af338e22560d46996d36aeedab | |
15 | SHA1 (patch-.._docs_man_xl.conf.pod.5) = 015da24a45388468d56f1ecfa60f6acf07bdfef8 | 15 | SHA1 (patch-.._docs_man_xl.conf.pod.5) = 015da24a45388468d56f1ecfa60f6acf07bdfef8 | |
16 | SHA1 (patch-.._docs_man_xl.pod.1) = b194f2c5608c6f0e80a4abd8655808cf91355cd5 | 16 | SHA1 (patch-.._docs_man_xl.pod.1) = b194f2c5608c6f0e80a4abd8655808cf91355cd5 | |
17 | SHA1 (patch-.._docs_man_xlcpupool.cfg.pod.5) = b44813af965e4d9d0d51c18b22d286736a4663b2 | 17 | SHA1 (patch-.._docs_man_xlcpupool.cfg.pod.5) = b44813af965e4d9d0d51c18b22d286736a4663b2 | |
18 | SHA1 (patch-CVE-2015-2152) = 5a1cabf330b3a1bd902adf2b33dd5c4c32b8ab9d | 18 | SHA1 (patch-CVE-2015-2152) = 5a1cabf330b3a1bd902adf2b33dd5c4c32b8ab9d | |
19 | SHA1 (patch-CVE-2015-2752) = 85bcb80dab938b85da3342e7001d95bacf7f49e5 | |||
20 | SHA1 (patch-CVE-2015-2756) = 350cfd57a77d90997b81c7186e320bb52fb62d75 | |||
19 | SHA1 (patch-Makefile) = 5d5b9678ed9764275ee95f49d24e8538a0e8a01c | 21 | SHA1 (patch-Makefile) = 5d5b9678ed9764275ee95f49d24e8538a0e8a01c | |
20 | SHA1 (patch-Rules.mk) = e0dc4234c35dc2d78afad4a90b0af829a6a10b50 | 22 | SHA1 (patch-Rules.mk) = e0dc4234c35dc2d78afad4a90b0af829a6a10b50 | |
21 | SHA1 (patch-blktap_drivers_Makefile) = 7cc53b2a0dea1694a969046ab8542271ca63f9e7 | 23 | SHA1 (patch-blktap_drivers_Makefile) = 7cc53b2a0dea1694a969046ab8542271ca63f9e7 | |
22 | SHA1 (patch-configure) = d1a1b9c9e00dd79bb872190282006201510ce2c1 | 24 | SHA1 (patch-configure) = d1a1b9c9e00dd79bb872190282006201510ce2c1 | |
23 | SHA1 (patch-examples_Makefile) = 5fe7bb876d254cf0c4f774ed0f08dcaea5b355ff | 25 | SHA1 (patch-examples_Makefile) = 5fe7bb876d254cf0c4f774ed0f08dcaea5b355ff | |
24 | SHA1 (patch-firmware_etherboot_Makefile) = f55e14948b7191e533a82b8fc3575f1052f23c45 | 26 | SHA1 (patch-firmware_etherboot_Makefile) = f55e14948b7191e533a82b8fc3575f1052f23c45 | |
25 | SHA1 (patch-firmware_etherboot_patches_series) = 2fa1342c78094c6dd5d60a07c236c4a1c0599fc4 | 27 | SHA1 (patch-firmware_etherboot_patches_series) = 2fa1342c78094c6dd5d60a07c236c4a1c0599fc4 | |
26 | SHA1 (patch-firmware_hvmloader_Makefile) = bc5e81ddfc5e95887c2af4bb32eced9c5748b3c6 | 28 | SHA1 (patch-firmware_hvmloader_Makefile) = bc5e81ddfc5e95887c2af4bb32eced9c5748b3c6 | |
27 | SHA1 (patch-hotplug_NetBSD_Makefile) = 5afbf8dc910c93fcc0904ba09164a441704e31a2 | 29 | SHA1 (patch-hotplug_NetBSD_Makefile) = 5afbf8dc910c93fcc0904ba09164a441704e31a2 | |
28 | SHA1 (patch-hotplug_NetBSD_vif-bridge) = ac4cc7446715330b504b8cce8cbd47c8035cf33c | 30 | SHA1 (patch-hotplug_NetBSD_vif-bridge) = ac4cc7446715330b504b8cce8cbd47c8035cf33c | |
29 | SHA1 (patch-hotplug_NetBSD_vif-ip) = ed23b0c16d87bd05230399d921e28860c5857b01 | 31 | SHA1 (patch-hotplug_NetBSD_vif-ip) = ed23b0c16d87bd05230399d921e28860c5857b01 | |
30 | SHA1 (patch-hotplug_common_Makefile) = 1c8af96a3d0d1d5e9c168b1eb75fabb3e2164a19 | 32 | SHA1 (patch-hotplug_common_Makefile) = 1c8af96a3d0d1d5e9c168b1eb75fabb3e2164a19 | |
31 | SHA1 (patch-include_xen-sys_NetBSD_gntdev.h) = b1f60f46e606b7591d68d98655d1cb29df977c14 | 33 | SHA1 (patch-include_xen-sys_NetBSD_gntdev.h) = b1f60f46e606b7591d68d98655d1cb29df977c14 | |
32 | SHA1 (patch-libfsimage_common_Makefile) = 9c80a669805ba2e1f224985c71ca976fbe60e8b5 | 34 | SHA1 (patch-libfsimage_common_Makefile) = 9c80a669805ba2e1f224985c71ca976fbe60e8b5 | |
33 | SHA1 (patch-libfsimage_ufs_ufs.h) = ce1461ab83499edb4e127e3b7af9dfc1e9c0267f | 35 | SHA1 (patch-libfsimage_ufs_ufs.h) = ce1461ab83499edb4e127e3b7af9dfc1e9c0267f | |
34 | SHA1 (patch-libxc_xc__netbsd.c) = 547a713bbe9ddc92ee51b57a7b58a619f01225f1 | 36 | SHA1 (patch-libxc_xc__netbsd.c) = 547a713bbe9ddc92ee51b57a7b58a619f01225f1 | |
35 | SHA1 (patch-libxl_Makefile) = 5b5dede29e5d9c579cdd7d6497f692ecf3a3c2cb | 37 | SHA1 (patch-libxl_Makefile) = 5b5dede29e5d9c579cdd7d6497f692ecf3a3c2cb | |
36 | SHA1 (patch-libxl_libxl__create.c) = d4c94e9a389e9a7601513460f31c82e4f4bf28c9 | 38 | SHA1 (patch-libxl_libxl__create.c) = d4c94e9a389e9a7601513460f31c82e4f4bf28c9 | |
37 | SHA1 (patch-libxl_libxl__save__helper.c) = 70e5237e28bea1aa87486e080fc25aa81300a6d8 | 39 | SHA1 (patch-libxl_libxl__save__helper.c) = 70e5237e28bea1aa87486e080fc25aa81300a6d8 | |
38 | SHA1 (patch-libxl_libxl_uuid.c) = d14286be8ccdbcb5fae544a1968e7b681b63e884 | 40 | SHA1 (patch-libxl_libxl_uuid.c) = d14286be8ccdbcb5fae544a1968e7b681b63e884 | |
39 | SHA1 (patch-ocaml_common.make) = 4d4bddca7b5d93489a3f6620af51d95bbe265abb | 41 | SHA1 (patch-ocaml_common.make) = 4d4bddca7b5d93489a3f6620af51d95bbe265abb | |
40 | SHA1 (patch-ocaml_xenstored_Makefile) = 8014db42b65ca9290013069d1f3cb816e3f023c2 | 42 | SHA1 (patch-ocaml_xenstored_Makefile) = 8014db42b65ca9290013069d1f3cb816e3f023c2 | |
41 | SHA1 (patch-ocaml_xenstored_define.ml) = 18d6878ae536554e8831f3732d2a8ea1b13a9b63 | 43 | SHA1 (patch-ocaml_xenstored_define.ml) = 18d6878ae536554e8831f3732d2a8ea1b13a9b63 | |
42 | SHA1 (patch-ocaml_xenstored_utils.ml) = 04997cb9189a3331522c344aa1957e61febfd4d2 | 44 | SHA1 (patch-ocaml_xenstored_utils.ml) = 04997cb9189a3331522c344aa1957e61febfd4d2 | |
43 | SHA1 (patch-pygrub_Makefile) = 4380d7ddeed41c80e47f8130760f4bdc6842a394 | 45 | SHA1 (patch-pygrub_Makefile) = 4380d7ddeed41c80e47f8130760f4bdc6842a394 | |
44 | SHA1 (patch-qemu-xen-traditional_Makefile) = aac50189b3e359314c5d47745d50113f190bbbe0 | 46 | SHA1 (patch-qemu-xen-traditional_Makefile) = aac50189b3e359314c5d47745d50113f190bbbe0 | |
45 | SHA1 (patch-qemu-xen-traditional_block-raw-posix.c) = fb03fe527515424d72758b606ab8d2e5bf8c341b | 47 | SHA1 (patch-qemu-xen-traditional_block-raw-posix.c) = fb03fe527515424d72758b606ab8d2e5bf8c341b | |
46 | SHA1 (patch-qemu-xen-traditional_configure) = a29520d12c229feed85b335e9241dc085427a3db | 48 | SHA1 (patch-qemu-xen-traditional_configure) = a29520d12c229feed85b335e9241dc085427a3db | |
47 | SHA1 (patch-qemu-xen-traditional_hw_e1000.c) = d94874baa64a0974d29c8c3a117cf0fae030952d | 49 | SHA1 (patch-qemu-xen-traditional_hw_e1000.c) = d94874baa64a0974d29c8c3a117cf0fae030952d | |
48 | SHA1 (patch-qemu-xen-traditional_hw_ide.c) = fb674b326321f4865183eee889967b1a948698e0 | 50 | SHA1 (patch-qemu-xen-traditional_hw_ide.c) = fb674b326321f4865183eee889967b1a948698e0 | |
49 | SHA1 (patch-qemu-xen-traditional_hw_pass-through.c) = b87481f764e16fb1345c44b4f46fa3837901a4e2 | 51 | SHA1 (patch-qemu-xen-traditional_hw_pass-through.c) = b87481f764e16fb1345c44b4f46fa3837901a4e2 | |
50 | SHA1 (patch-qemu-xen-traditional_hw_pass-through.h) = 0bf5cbc1d6f5506c1878296fce98ca3e42fc6560 | 52 | SHA1 (patch-qemu-xen-traditional_hw_pass-through.h) = 0bf5cbc1d6f5506c1878296fce98ca3e42fc6560 | |
51 | SHA1 (patch-qemu-xen-traditional_hw_piix4acpi.c) = 432cbbd922a2453d3aab37e49cced767a3f1ad34 | 53 | SHA1 (patch-qemu-xen-traditional_hw_piix4acpi.c) = 432cbbd922a2453d3aab37e49cced767a3f1ad34 | |
52 | SHA1 (patch-qemu-xen-traditional_hw_pt-graphics.c) = 7c887bfea57f601dba439a2ee20061a772a0aca5 | 54 | SHA1 (patch-qemu-xen-traditional_hw_pt-graphics.c) = 7c887bfea57f601dba439a2ee20061a772a0aca5 | |
53 | SHA1 (patch-qemu-xen-traditional_hw_pt-msi.c) = bc22e828a0cb9c93448b6f14284318963b7088e6 | 55 | SHA1 (patch-qemu-xen-traditional_hw_pt-msi.c) = bc22e828a0cb9c93448b6f14284318963b7088e6 | |
54 | SHA1 (patch-qemu-xen-traditional_hw_pt-msi.h) = e2028d255bdfaee9e7eb4ca3be2edb061196809c | 56 | SHA1 (patch-qemu-xen-traditional_hw_pt-msi.h) = e2028d255bdfaee9e7eb4ca3be2edb061196809c | |
55 | SHA1 (patch-qemu-xen-traditional_i386-dm_hookstarget.mak) = 50c6bc068406effe94b638ffced7d8edf5729717 | 57 | SHA1 (patch-qemu-xen-traditional_i386-dm_hookstarget.mak) = 50c6bc068406effe94b638ffced7d8edf5729717 | |
56 | SHA1 (patch-qemu-xen-traditional_xen-hooks.mak) = ccc055fdb56ee796e1464f709aa576ab8cd9c6f1 | 58 | SHA1 (patch-qemu-xen-traditional_xen-hooks.mak) = ccc055fdb56ee796e1464f709aa576ab8cd9c6f1 | |
57 | SHA1 (patch-qemu-xen_audio_audio.c) = 8452d63fe90e38a64111d0cf425bacd565fe6d82 | 59 | SHA1 (patch-qemu-xen_audio_audio.c) = 8452d63fe90e38a64111d0cf425bacd565fe6d82 | |
58 | SHA1 (patch-qemu-xen_qemu-doc.texi) = 721e80d15ac30ac71df3d6c4c485b0bf70897cf9 | 60 | SHA1 (patch-qemu-xen_qemu-doc.texi) = 721e80d15ac30ac71df3d6c4c485b0bf70897cf9 | |
59 | SHA1 (patch-qemu-xen_util_hbitmap.c) = 5a495ae2b47d1ff6dd342633b8d655582f21dffe | 61 | SHA1 (patch-qemu-xen_util_hbitmap.c) = 5a495ae2b47d1ff6dd342633b8d655582f21dffe | |
60 | SHA1 (patch-qemu-xen_xen-hvm.c) = 11d4deb5de577e8beb2d1c6c3ca886e3d7563f8a | 62 | SHA1 (patch-qemu-xen_xen-hvm.c) = 11d4deb5de577e8beb2d1c6c3ca886e3d7563f8a | |
61 | SHA1 (patch-xenstore_xc.c) = 51b39e9929062e72d0ff85f0ee6d13a6ac04ac65 | 63 | SHA1 (patch-xenstore_xc.c) = 51b39e9929062e72d0ff85f0ee6d13a6ac04ac65 |
$NetBSD: patch-CVE-2015-2752,v 1.1.2.2 2015/04/29 21:11:13 tron Exp $
Patch for CVE-2015-2752 aka XSA-125 from
http://xenbits.xenproject.org/xsa/xsa125-4.2.patch
--- libxc/xc_domain.c.orig 2015-01-12 16:53:24.000000000 +0000
+++ libxc/xc_domain.c
@@ -1992,6 +1992,8 @@ int xc_domain_memory_mapping(
{
DECLARE_DOMCTL;
xc_dominfo_t info;
+ int ret = 0, err;
+ unsigned long done = 0, nr, max_batch_sz;
if ( xc_domain_getinfo(xch, domid, 1, &info) != 1 ||
info.domid != domid )
@@ -2002,14 +2004,50 @@ int xc_domain_memory_mapping(
if ( !xc_core_arch_auto_translated_physmap(&info) )
return 0;
+ if ( !nr_mfns )
+ return 0;
+
domctl.cmd = XEN_DOMCTL_memory_mapping;
domctl.domain = domid;
- domctl.u.memory_mapping.first_gfn = first_gfn;
- domctl.u.memory_mapping.first_mfn = first_mfn;
- domctl.u.memory_mapping.nr_mfns = nr_mfns;
domctl.u.memory_mapping.add_mapping = add_mapping;
+ max_batch_sz = nr_mfns;
+ do
+ {
+ nr = min(nr_mfns - done, max_batch_sz);
+ domctl.u.memory_mapping.nr_mfns = nr;
+ domctl.u.memory_mapping.first_gfn = first_gfn + done;
+ domctl.u.memory_mapping.first_mfn = first_mfn + done;
+ err = do_domctl(xch, &domctl);
+ if ( err && errno == E2BIG )
+ {
+ if ( max_batch_sz <= 1 )
+ break;
+ max_batch_sz >>= 1;
+ continue;
+ }
+ /* Save the first error... */
+ if ( !ret )
+ ret = err;
+ /* .. and ignore the rest of them when removing. */
+ if ( err && add_mapping != DPCI_REMOVE_MAPPING )
+ break;
+
+ done += nr;
+ } while ( done < nr_mfns );
+
+ /*
+ * Undo what we have done unless unmapping, by unmapping the entire region.
+ * Errors here are ignored.
+ */
+ if ( ret && add_mapping != DPCI_REMOVE_MAPPING )
+ xc_domain_memory_mapping(xch, domid, first_gfn, first_mfn, nr_mfns,
+ DPCI_REMOVE_MAPPING);
+
+ /* We might get E2BIG so many times that we never advance. */
+ if ( !done && !ret )
+ ret = -1;
- return do_domctl(xch, &domctl);
+ return ret;
}
int xc_domain_ioport_mapping(
$NetBSD: patch-CVE-2015-2756,v 1.1.2.2 2015/04/29 21:11:13 tron Exp $
patch for CVE-2015-2756 aka XSA-126 from
http://xenbits.xenproject.org/xsa/xsa126-qemuu.patch
and
http://xenbits.xenproject.org/xsa/xsa126-qemut.patch
--- qemu-xen/hw/xen/xen_pt.c.orig 2014-12-02 10:41:02.000000000 +0000
+++ qemu-xen/hw/xen/xen_pt.c
@@ -388,7 +388,7 @@ static const MemoryRegionOps ops = {
.write = xen_pt_bar_write,
};
-static int xen_pt_register_regions(XenPCIPassthroughState *s)
+static int xen_pt_register_regions(XenPCIPassthroughState *s, uint16_t *cmd)
{
int i = 0;
XenHostPCIDevice *d = &s->real_device;
@@ -406,6 +406,7 @@ static int xen_pt_register_regions(XenPC
if (r->type & XEN_HOST_PCI_REGION_TYPE_IO) {
type = PCI_BASE_ADDRESS_SPACE_IO;
+ *cmd |= PCI_COMMAND_IO;
} else {
type = PCI_BASE_ADDRESS_SPACE_MEMORY;
if (r->type & XEN_HOST_PCI_REGION_TYPE_PREFETCH) {
@@ -414,6 +415,7 @@ static int xen_pt_register_regions(XenPC
if (r->type & XEN_HOST_PCI_REGION_TYPE_MEM_64) {
type |= PCI_BASE_ADDRESS_MEM_TYPE_64;
}
+ *cmd |= PCI_COMMAND_MEMORY;
}
memory_region_init_io(&s->bar[i], OBJECT(s), &ops, &s->dev,
@@ -657,6 +659,7 @@ static int xen_pt_initfn(PCIDevice *d)
XenPCIPassthroughState *s = DO_UPCAST(XenPCIPassthroughState, dev, d);
int rc = 0;
uint8_t machine_irq = 0;
+ uint16_t cmd = 0;
int pirq = XEN_PT_UNASSIGNED_PIRQ;
/* register real device */
@@ -691,7 +694,7 @@ static int xen_pt_initfn(PCIDevice *d)
s->io_listener = xen_pt_io_listener;
/* Handle real device's MMIO/PIO BARs */
- xen_pt_register_regions(s);
+ xen_pt_register_regions(s, &cmd);
/* reinitialize each config register to be emulated */
if (xen_pt_config_init(s)) {
@@ -755,6 +758,11 @@ static int xen_pt_initfn(PCIDevice *d)
}
out:
+ if (cmd) {
+ xen_host_pci_set_word(&s->real_device, PCI_COMMAND,
+ pci_get_word(d->config + PCI_COMMAND) | cmd);
+ }
+
memory_listener_register(&s->memory_listener, &address_space_memory);
memory_listener_register(&s->io_listener, &address_space_io);
XEN_PT_LOG(d,
--- qemu-xen/hw/xen/xen_pt_config_init.c.orig 2014-12-02 10:41:02.000000000 +0000
+++ qemu-xen/hw/xen/xen_pt_config_init.c
@@ -286,23 +286,6 @@ static int xen_pt_irqpin_reg_init(XenPCI
}
/* Command register */
-static int xen_pt_cmd_reg_read(XenPCIPassthroughState *s, XenPTReg *cfg_entry,
- uint16_t *value, uint16_t valid_mask)
-{
- XenPTRegInfo *reg = cfg_entry->reg;
- uint16_t valid_emu_mask = 0;
- uint16_t emu_mask = reg->emu_mask;
-
- if (s->is_virtfn) {
- emu_mask |= PCI_COMMAND_MEMORY;
- }
-
- /* emulate word register */
- valid_emu_mask = emu_mask & valid_mask;
- *value = XEN_PT_MERGE_VALUE(*value, cfg_entry->data, ~valid_emu_mask);
-
- return 0;
-}
static int xen_pt_cmd_reg_write(XenPCIPassthroughState *s, XenPTReg *cfg_entry,
uint16_t *val, uint16_t dev_value,
uint16_t valid_mask)
@@ -310,18 +293,13 @@ static int xen_pt_cmd_reg_write(XenPCIPa
XenPTRegInfo *reg = cfg_entry->reg;
uint16_t writable_mask = 0;
uint16_t throughable_mask = 0;
- uint16_t emu_mask = reg->emu_mask;
-
- if (s->is_virtfn) {
- emu_mask |= PCI_COMMAND_MEMORY;
- }
/* modify emulate register */
writable_mask = ~reg->ro_mask & valid_mask;
cfg_entry->data = XEN_PT_MERGE_VALUE(*val, cfg_entry->data, writable_mask);
/* create value for writing to I/O device register */
- throughable_mask = ~emu_mask & valid_mask;
+ throughable_mask = ~reg->emu_mask & valid_mask;
if (*val & PCI_COMMAND_INTX_DISABLE) {
throughable_mask |= PCI_COMMAND_INTX_DISABLE;
@@ -605,9 +583,9 @@ static XenPTRegInfo xen_pt_emu_reg_heade
.size = 2,
.init_val = 0x0000,
.ro_mask = 0xF880,
- .emu_mask = 0x0740,
+ .emu_mask = 0x0743,
.init = xen_pt_common_reg_init,
- .u.w.read = xen_pt_cmd_reg_read,
+ .u.w.read = xen_pt_word_reg_read,
.u.w.write = xen_pt_cmd_reg_write,
},
/* Capabilities Pointer reg */
--- qemu-xen-traditional/hw/pass-through.c.orig 2014-10-06 15:50:24.000000000 +0000
+++ qemu-xen-traditional/hw/pass-through.c
@@ -172,9 +172,6 @@ static int pt_word_reg_read(struct pt_de
static int pt_long_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask);
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
uint32_t *value, uint32_t valid_mask);
@@ -286,9 +283,9 @@ static struct pt_reg_info_tbl pt_emu_reg
.size = 2,
.init_val = 0x0000,
.ro_mask = 0xF880,
- .emu_mask = 0x0740,
+ .emu_mask = 0x0743,
.init = pt_common_reg_init,
- .u.w.read = pt_cmd_reg_read,
+ .u.w.read = pt_word_reg_read,
.u.w.write = pt_cmd_reg_write,
.u.w.restore = pt_cmd_reg_restore,
},
@@ -1905,7 +1902,7 @@ static int pt_dev_is_virtfn(struct pci_d
return rc;
}
-static int pt_register_regions(struct pt_dev *assigned_device)
+static int pt_register_regions(struct pt_dev *assigned_device, uint16_t *cmd)
{
int i = 0;
uint32_t bar_data = 0;
@@ -1925,17 +1922,26 @@ static int pt_register_regions(struct pt
/* Register current region */
if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_IO )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_IO,
pt_ioport_map);
+ *cmd |= PCI_COMMAND_IO;
+ }
else if ( pci_dev->base_addr[i] & PCI_ADDRESS_SPACE_MEM_PREFETCH )
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM_PREFETCH,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
else
+ {
pci_register_io_region((PCIDevice *)assigned_device, i,
(uint32_t)pci_dev->size[i], PCI_ADDRESS_SPACE_MEM,
pt_iomem_map);
+ *cmd |= PCI_COMMAND_MEMORY;
+ }
PT_LOG("IO region registered (size=0x%08x base_addr=0x%08x)\n",
(uint32_t)(pci_dev->size[i]),
@@ -3263,27 +3269,6 @@ static int pt_long_reg_read(struct pt_de
return 0;
}
-/* read Command register */
-static int pt_cmd_reg_read(struct pt_dev *ptdev,
- struct pt_reg_tbl *cfg_entry,
- uint16_t *value, uint16_t valid_mask)
-{
- struct pt_reg_info_tbl *reg = cfg_entry->reg;
- uint16_t valid_emu_mask = 0;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
-
- /* emulate word register */
- valid_emu_mask = emu_mask & valid_mask;
- *value = PT_MERGE_VALUE(*value, cfg_entry->data, ~valid_emu_mask);
-
- return 0;
-}
-
/* read BAR */
static int pt_bar_reg_read(struct pt_dev *ptdev,
struct pt_reg_tbl *cfg_entry,
@@ -3418,19 +3403,13 @@ static int pt_cmd_reg_write(struct pt_de
uint16_t writable_mask = 0;
uint16_t throughable_mask = 0;
uint16_t wr_value = *value;
- uint16_t emu_mask = reg->emu_mask;
-
- if ( ptdev->is_virtfn )
- emu_mask |= PCI_COMMAND_MEMORY;
- if ( pt_is_iomul(ptdev) )
- emu_mask |= PCI_COMMAND_IO;
/* modify emulate register */
writable_mask = ~reg->ro_mask & valid_mask;
cfg_entry->data = PT_MERGE_VALUE(*value, cfg_entry->data, writable_mask);
/* create value for writing to I/O device register */
- throughable_mask = ~emu_mask & valid_mask;
+ throughable_mask = ~reg->emu_mask & valid_mask;
if (*value & PCI_COMMAND_DISABLE_INTx)
{
@@ -4211,6 +4190,7 @@ static struct pt_dev * register_real_dev
struct pt_dev *assigned_device = NULL;
struct pci_dev *pci_dev;
uint8_t e_device, e_intx;
+ uint16_t cmd = 0;
char *key, *val;
int msi_translate, power_mgmt;
@@ -4300,7 +4280,7 @@ static struct pt_dev * register_real_dev
assigned_device->dev.config[i] = pci_read_byte(pci_dev, i);
/* Handle real device's MMIO/PIO BARs */
- pt_register_regions(assigned_device);
+ pt_register_regions(assigned_device, &cmd);
/* Setup VGA bios for passthroughed gfx */
if ( setup_vga_pt(assigned_device) < 0 )
@@ -4378,6 +4358,10 @@ static struct pt_dev * register_real_dev
}
out:
+ if (cmd)
+ pci_write_word(pci_dev, PCI_COMMAND,
+ *(uint16_t *)(&assigned_device->dev.config[PCI_COMMAND]) | cmd);
+
PT_LOG("Real physical device %02x:%02x.%x registered successfuly!\n"
"IRQ type = %s\n", r_bus, r_dev, r_func,
assigned_device->msi_trans_en? "MSI-INTx":"INTx");