summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO10
-rw-r--r--Makefile5
-rw-r--r--PKGBUILD13
-rw-r--r--dkms.conf.in15
-rw-r--r--vmmon.patch75
5 files changed, 90 insertions, 28 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 77992491798..f52bd26bbb6 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = vmware-workstation14
pkgdesc = The industry standard for running multiple operating systems as virtual machines on a single Linux PC.
pkgver = 14.1.7
- pkgrel = 6
+ pkgrel = 9
url = https://www.vmware.com/products/workstation-for-linux.html
install = vmware-workstation.install
arch = x86_64
@@ -16,6 +16,8 @@ pkgbase = vmware-workstation14
depends = libaio
depends = pcsclite
depends = hicolor-icon-theme
+ depends = fontconfig
+ depends = freetype2
depends = vmware-keymaps
optdepends = linux-headers: build modules against Arch kernel
provides = vmware-workstation=14.1.7
@@ -78,9 +80,9 @@ pkgbase = vmware-workstation14
sha256sums = 9b4fbe0ba83f761a2eb9ecd05d48428f8b0a5b3abd8404ccbd928408e682f02b
sha256sums = c0a5aea785db06921fb350d36d5e0fd9a14f5eee0c835686ec6fea1af8c92245
sha256sums = d7a9fbf39a0345ae2f14f7f389f30b1110f605d187e0c241e99bbb18993c250d
- sha256sums = 05e26d8b21d190ebabb7f693998114d9d5991d9dfb71acb4d990293a65b6b487
- sha256sums = 6ce902b1dab8fc69be253abd8e79017011985eca850ff7acc7282f9ab668e35d
- sha256sums = 7bfbabd55c4c147538e96fa89e22827c6282d1231d6958391eebb59578e6188a
+ sha256sums = 10562d11d50edab9abc2b29c8948714edcb9b084f99b3766d07ddd21259e372e
+ sha256sums = 273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac
+ sha256sums = 7404a8862dc3d49af385209765cd793d13a37416f9282b3595de9bde7ae31eff
sha256sums = e712332335fde4e4846f18c3fa8c933f173336a44546f87ea02b1e1a53f15911
pkgname = vmware-workstation14
diff --git a/Makefile b/Makefile
index 4b589921549..f025addbd4b 100644
--- a/Makefile
+++ b/Makefile
@@ -2,10 +2,7 @@
MODULES = \
vmmon \
- vmnet \
- #vmblock \
- #vmci \
- #vsock
+ vmnet
all: $(foreach m, $(MODULES), $m.ko)
diff --git a/PKGBUILD b/PKGBUILD
index 308a0f850c1..e04704c29f8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -16,7 +16,7 @@ pkgname=vmware-workstation14
pkgver=14.1.7
_buildver=12989993
_pkgver=${pkgver}_${_buildver}
-pkgrel=6
+pkgrel=9
pkgdesc='The industry standard for running multiple operating systems as virtual machines on a single Linux PC.'
arch=(x86_64)
url='https://www.vmware.com/products/workstation-for-linux.html'
@@ -43,6 +43,9 @@ depends=(
libaio
pcsclite
hicolor-icon-theme
+ # needed to replace internal libs:
+ fontconfig
+ freetype2
)
optdepends=(
'linux-headers: build modules against Arch kernel'
@@ -114,9 +117,9 @@ sha256sums=(
'c0a5aea785db06921fb350d36d5e0fd9a14f5eee0c835686ec6fea1af8c92245'
'd7a9fbf39a0345ae2f14f7f389f30b1110f605d187e0c241e99bbb18993c250d'
- '05e26d8b21d190ebabb7f693998114d9d5991d9dfb71acb4d990293a65b6b487'
- '6ce902b1dab8fc69be253abd8e79017011985eca850ff7acc7282f9ab668e35d'
- '7bfbabd55c4c147538e96fa89e22827c6282d1231d6958391eebb59578e6188a'
+ '10562d11d50edab9abc2b29c8948714edcb9b084f99b3766d07ddd21259e372e'
+ '273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac'
+ '7404a8862dc3d49af385209765cd793d13a37416f9282b3595de9bde7ae31eff'
'e712332335fde4e4846f18c3fa8c933f173336a44546f87ea02b1e1a53f15911'
)
options=(!strip emptydirs)
@@ -210,7 +213,7 @@ package() {
# Make directories and copy files.
mkdir -p \
- "$pkgdir/etc"/{cups,pam.d,modprobe.d,profile.d,thnuclnt,vmware} \
+ "$pkgdir/etc"/{cups,pam.d,modprobe.d,thnuclnt,vmware} \
"$pkgdir/usr"/{share,bin} \
"$pkgdir/usr/include/vmware-vix" \
"$pkgdir/usr/lib"/{vmware/{setup,lib/libvmware-vim-cmd.so},vmware-vix,vmware-ovftool,vmware-installer/"$vmware_installer_version",cups/filter,modules-load.d} \
diff --git a/dkms.conf.in b/dkms.conf.in
index 64c93aa0c18..5c7adc58ecd 100644
--- a/dkms.conf.in
+++ b/dkms.conf.in
@@ -13,18 +13,3 @@ DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
BUILT_MODULE_NAME[1]="vmnet"
BUILT_MODULE_LOCATION[1]='vmnet-only'
DEST_MODULE_LOCATION[1]="/kernel/drivers/net"
-
-# seems that this module is never used
-#BUILT_MODULE_NAME[2]="vmblock"
-#BUILT_MODULE_LOCATION[2]='vmblock-only'
-#DEST_MODULE_LOCATION[2]="/kernel/fs/vmblock"
-
-# vmci is already provided by the kernel with vmw_vmci
-#BUILT_MODULE_NAME[3]="vmci"
-#BUILT_MODULE_LOCATION[3]='vmci-only'
-#DEST_MODULE_LOCATION[3]="/kernel/drivers/misc"
-
-# vsock is already provided by the kernel
-#BUILT_MODULE_NAME[4]="vsock"
-#BUILT_MODULE_LOCATION[4]='vsock-only'
-#DEST_MODULE_LOCATION[4]="/kernel/net/vmw_vsock"
diff --git a/vmmon.patch b/vmmon.patch
index 0d515e71750..1a7deb3c79c 100644
--- a/vmmon.patch
+++ b/vmmon.patch
@@ -64,6 +64,40 @@
#else
--- a/vmmon/linux/hostif.c
+++ a/vmmon/linux/hostif.c
+@@ -47,6 +47,8 @@
+ #include <asm/asm.h>
+ #include <asm/io.h>
+ #include <asm/page.h>
++#include <asm/tlbflush.h>
++#include <asm/irq_vectors.h>
+ #include <asm/uaccess.h>
+ #include <linux/capability.h>
+ #include <linux/kthread.h>
+@@ -613,7 +615,24 @@ HostIF_FastClockUnlock(int callerID) // IN
+ static void *
+ MapCrossPage(struct page *p) // IN:
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ return vmap(&p, 1, VM_MAP, VM_PAGE_KERNEL_EXEC);
++#else
++ /* Starting with 5.8, vmap() always sets the NX bit, but the cross
++ * page needs to be executable. */
++ pte_t *ptes[1];
++ struct vm_struct *area = alloc_vm_area(1UL << PAGE_SHIFT, ptes);
++ if (area == NULL)
++ return NULL;
++
++ set_pte(ptes[0], mk_pte(p, VM_PAGE_KERNEL_EXEC));
++
++ preempt_disable();
++ __flush_tlb_all();
++ preempt_enable();
++
++ return area->addr;
++#endif
+ }
+
+
@@ -1499,9 +1499,13 @@
* since at least 2.6.0.
*/
@@ -78,6 +112,18 @@
/*
* Use the memory information linux exports as of late for a more
+@@ -1527,7 +1550,10 @@ HostIF_EstimateLockedPageLimit(const VMDriver* vm, // IN
+ lockedPages += global_page_state(NR_PAGETABLE);
+ #endif
+ /* NR_SLAB_* moved from zone to node in 4.13. */
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
++ lockedPages += global_node_page_state_pages(NR_SLAB_UNRECLAIMABLE_B);
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
+ lockedPages += global_node_page_state(NR_SLAB_UNRECLAIMABLE);
+ #else
+ lockedPages += global_page_state(NR_SLAB_UNRECLAIMABLE);
@@ -1602,6 +1606,49 @@
/*
*----------------------------------------------------------------------
@@ -195,6 +241,21 @@
{
struct poll_wqueues table;
+@@ -2388,9 +2453,11 @@ HostIF_SemaphoreWait(VMDriver *vm, // IN:
+ * the code to happily deal with a pipe or an eventfd. We only care about
+ * reading no bytes (EAGAIN - non blocking fd) or sizeof(uint64).
+ */
+-
+- res = file->f_op->read(file, (char *) &value, sizeof value, &file->f_pos);
+-
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
++ res = kernel_read(file, file->f_pos, (char *)&value, sizeof value);
++#else
++ res = kernel_read(file, &value, sizeof value, &file->f_pos);
++#endif
+ if (res == sizeof value) {
+ res = MX_WAITNORMAL;
+ } else {
@@ -2494,7 +2537,7 @@ HostIF_SemaphoreSignal(uint64 *args) // IN:
}
@@ -204,6 +265,20 @@
/*
* Always write sizeof(uint64) bytes. This works fine for eventfd and
+@@ -2501,8 +2566,11 @@ HostIF_SemaphoreSignal(uint64 *args) // IN:
+ * pipes. The data written is formatted to make an eventfd happy should
+ * it be present.
+ */
+-
+- res = file->f_op->write(file, (char *) &value, sizeof value, &file->f_pos);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
++ res = kernel_write(file, (char *)&value, sizeof value, file->f_pos);
++#else
++ res = kernel_write(file, &value, sizeof value, &file->f_pos);
++#endif
+
+ if (res == sizeof value) {
+ res = MX_WAITNORMAL;
@@ -3154,7 +3202,6 @@ HostIF_SetFastClockRate(unsigned int rate) // IN: Frequency in Hz.
}
} else {