Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff -urN a/vmmon-only/Makefile b/vmmon-only/Makefile
- --- a/vmmon-only/Makefile 2019-03-23 13:07:32.073918051 +0100
- +++ b/vmmon-only/Makefile 2019-03-23 13:33:52.738577571 +0100
- @@ -107,7 +107,7 @@
- postbuild:: ;
- $(DRIVER_KO): prebuild
- - $(MAKE) -C $(BUILD_DIR) SUBDIRS=$$PWD SRCROOT=$$PWD/$(SRCROOT) \
- + $(MAKE) -C $(BUILD_DIR) M=$$PWD SRCROOT=$$PWD/$(SRCROOT) \
- MODULEBUILDDIR=$(MODULEBUILDDIR) modules
- $(MAKE) -C $$PWD SRCROOT=$$PWD/$(SRCROOT) \
- MODULEBUILDDIR=$(MODULEBUILDDIR) postbuild
- diff -urN a/vmmon-only/Makefile.kernel b/vmmon-only/Makefile.kernel
- --- a/vmmon-only/Makefile.kernel 2019-03-23 13:07:32.073918051 +0100
- +++ b/vmmon-only/Makefile.kernel 2019-03-23 13:33:52.738577571 +0100
- @@ -31,7 +31,7 @@
- $(SRCROOT)/bootstrap/*.c)))
- clean:
- - rm -rf $(wildcard $(DRIVER).mod.c $(DRIVER).ko .tmp_versions \
- + rm -rf $(wildcard $(DRIVER).mod.c $(DRIVER).ko .tmp_versions .cache.mk \
- Module.symvers Modules.symvers Module.markers modules.order \
- $(foreach dir,linux/ common/ vmcore/ bootstrap/ \
- ./,$(addprefix $(dir),.*.cmd .*.o.flags *.o)))
- diff -urN a/vmmon-only/common/task.c b/vmmon-only/common/task.c
- --- a/vmmon-only/common/task.c 2019-03-23 13:07:32.077251366 +0100
- +++ b/vmmon-only/common/task.c 2019-03-23 13:33:52.741910887 +0100
- @@ -2322,12 +2322,23 @@
- {
- uint64 raxGetsWiped, rcxGetsWiped;
- +#ifdef CALL_NOSPEC
- + __asm__ __volatile__(CALL_NOSPEC
- + : "=a" (raxGetsWiped),
- + "=c" (rcxGetsWiped)
- + : "0" (codePtr),
- + "1" (crosspage),
- + THUNK_TARGET(codePtr)
- + : "rdx", "r8", "r9", "r10", "r11", "cc", "memory");
- +#else
- __asm__ __volatile__("call *%%rax"
- : "=a" (raxGetsWiped),
- "=c" (rcxGetsWiped)
- : "0" (codePtr),
- "1" (crosspage)
- : "rdx", "r8", "r9", "r10", "r11", "cc", "memory");
- +#endif
- +
- }
- #elif defined(_MSC_VER)
- /*
- diff -urN a/vmmon-only/include/compat_poll.h b/vmmon-only/include/compat_poll.h
- --- a/vmmon-only/include/compat_poll.h 1970-01-01 01:00:00.000000000 +0100
- +++ b/vmmon-only/include/compat_poll.h 2019-03-23 13:33:52.745244202 +0100
- @@ -0,0 +1,30 @@
- +#ifndef __COMPAT_POLL_H__
- +#define __COMPAT_POLL_H__
- +
- +#include <linux/poll.h>
- +
- +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0))
- +
- +#ifndef __poll_t
- +typedef unsigned int __poll_t;
- +#endif
- +
- +static inline __poll_t compat_vfs_poll(struct file *file,
- + struct poll_table_struct *pt)
- +{
- + if (unlikely(!file->f_op->poll))
- + return DEFAULT_POLLMASK;
- + return file->f_op->poll(file, pt);
- +}
- +
- +#else
- +
- +static inline __poll_t compat_vfs_poll(struct file *file,
- + struct poll_table_struct *pt)
- +{
- + return vfs_poll(file, pt);
- +}
- +
- +#endif
- +
- +#endif /* __COMPAT_POLL_H__ */
- diff -urN a/vmmon-only/include/vm_assert.h b/vmmon-only/include/vm_assert.h
- --- a/vmmon-only/include/vm_assert.h 2019-03-23 13:07:32.077251366 +0100
- +++ b/vmmon-only/include/vm_assert.h 2019-03-23 13:33:52.741910887 +0100
- @@ -67,6 +67,7 @@
- #if defined (VMKPANIC)
- #include "vmk_assert.h"
- #else /* !VMKPANIC */
- +#include <linux/kernel.h>
- #define _ASSERT_PANIC(name) \
- Panic(_##name##Fmt "\n", __FILE__, __LINE__)
- #define _ASSERT_PANIC_BUG(bug, name) \
- @@ -107,7 +108,7 @@
- } while(0)
- #else
- -NORETURN void Panic(const char *fmt, ...) PRINTF_DECL(1, 2);
- +#define Panic panic
- #endif
- void LogThrottled(uint32 *count, const char *fmt, ...) PRINTF_DECL(2, 3);
- diff -urN a/vmmon-only/include/x86_basic_defs.h b/vmmon-only/include/x86_basic_defs.h
- --- a/vmmon-only/include/x86_basic_defs.h 2019-03-23 13:07:32.080584681 +0100
- +++ b/vmmon-only/include/x86_basic_defs.h 2019-03-23 13:33:52.745244202 +0100
- @@ -35,6 +35,8 @@
- #define INCLUDE_ALLOW_VMCORE
- #include "includeCheck.h"
- +#include <asm/processor-flags.h>
- +
- #define X86_MAX_INSTR_LEN 15 /* Max byte length of an x86 instruction. */
- #define NUM_IDT_VECTORS 256
- @@ -75,7 +77,9 @@
- #define CR3_PDB_MASK 0xfffff000
- #define CR3_IGNORE 0xFFF
- #define PAE_CR3_IGNORE 0x1F
- +#ifndef CR3_PCID_MASK
- #define CR3_PCID_MASK 0xFFF
- +#endif
- #define CR3_NO_FLUSH (1ULL << 63)
- #define CR4_VME 0x00000001
- diff -urN a/vmmon-only/include/x86msr.h b/vmmon-only/include/x86msr.h
- --- a/vmmon-only/include/x86msr.h 2019-03-23 13:07:32.077251366 +0100
- +++ b/vmmon-only/include/x86msr.h 2019-03-23 13:33:52.741910887 +0100
- @@ -24,6 +24,7 @@
- #ifndef _X86MSR_H_
- #define _X86MSR_H_
- +#include <asm/msr-index.h>
- #define INCLUDE_ALLOW_USERLEVEL
- #define INCLUDE_ALLOW_VMX
- @@ -127,7 +128,9 @@
- #define MSR_PRED_CMD_IBPB (1UL << 0)
- +#ifndef MSR_MISC_FEATURES_ENABLES
- #define MSR_MISC_FEATURES_ENABLES 0x140
- +#endif
- /* Intel Core Architecture and later: use only architected counters. */
- #define IA32_MSR_PERF_CAPABILITIES 0x345
- @@ -463,7 +466,9 @@
- #define MSR_K7_HWCR_SSEDIS 0x00008000ULL // Disable SSE bit
- #define MSR_K7_HWCR_MONMWAITUSEREN 0x00000400ULL // Enable MONITOR/MWAIT CPL>0
- #define MSR_K7_HWCR_TLBFFDIS 0x00000040ULL // Disable TLB Flush Filter
- +#ifndef MSR_K7_HWCR_SMMLOCK
- #define MSR_K7_HWCR_SMMLOCK 0x00000001ULL // Lock SMM environment
- +#endif
- #ifndef MSR_K8_SYSCFG
- #define MSR_K8_SYSCFG 0xc0010010
- @@ -652,8 +657,11 @@
- /*
- * MISC_FEATURES_ENABLES bits
- */
- +#ifdef MSR_MISC_FEATURES_ENABLES_CPUID_FAULT
- +#define MSR_MISC_FEATURES_ENABLES_CPUID_FAULTING MSR_MISC_FEATURES_ENABLES_CPUID_FAULT
- +#else
- #define MSR_MISC_FEATURES_ENABLES_CPUID_FAULTING 1
- -
- +#endif
- diff -urN a/vmmon-only/linux/driver.c b/vmmon-only/linux/driver.c
- --- a/vmmon-only/linux/driver.c 2019-03-23 13:07:32.080584681 +0100
- +++ b/vmmon-only/linux/driver.c 2019-03-23 13:33:52.748577517 +0100
- @@ -982,7 +982,7 @@
- *-----------------------------------------------------------------------------
- */
- -__attribute__((always_inline)) static Bool
- +__always_inline static Bool
- LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
- {
- TSCDelta tscDelta;
- diff -urN a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c
- --- a/vmmon-only/linux/hostif.c 2019-03-23 13:07:32.080584681 +0100
- +++ b/vmmon-only/linux/hostif.c 2019-03-23 13:33:52.745244202 +0100
- @@ -74,6 +74,7 @@
- #include "pgtbl.h"
- #include "versioned_atomic.h"
- +#include "compat_poll.h"
- #if !defined(CONFIG_HIGH_RES_TIMERS)
- #error CONFIG_HIGH_RES_TIMERS required for acceptable performance
- @@ -182,6 +183,32 @@
- uint8 monitorIPIVector;
- uint8 hvIPIVector;
- +static unsigned long compat_totalram_pages(void)
- +{
- +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0)
- + return totalram_pages;
- +#else
- + return totalram_pages();
- +#endif
- +}
- +
- +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
- +static void do_gettimeofday(struct timeval *tv)
- +{
- + struct timespec64 now;
- +
- + ktime_get_real_ts64(&now);
- + tv->tv_sec = now.tv_sec;
- + tv->tv_usec = now.tv_nsec / 1000;
- +}
- +#endif
- +
- +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0) && defined(VERIFY_WRITE)
- + #define write_access_ok(addr, size) access_ok(VERIFY_WRITE, addr, size)
- +#else
- + #define write_access_ok(addr, size) access_ok(addr, size)
- +#endif
- +
- /*
- *-----------------------------------------------------------------------------
- *
- @@ -1633,14 +1660,7 @@
- HostIF_EstimateLockedPageLimit(const VMDriver* vm, // IN
- unsigned int currentlyLockedPages) // IN
- {
- - /*
- - * This variable is available and exported to modules,
- - * since at least 2.6.0.
- - */
- -
- - extern unsigned long totalram_pages;
- -
- - unsigned int totalPhysicalPages = totalram_pages;
- + unsigned int totalPhysicalPages = compat_totalram_pages();
- /*
- * Use the memory information linux exports as of late for a more
- @@ -2570,7 +2590,7 @@
- poll_initwait(&table);
- current->state = TASK_INTERRUPTIBLE;
- - mask = file->f_op->poll(file, &table.pt);
- + mask = compat_vfs_poll(file, &table.pt);
- if (!(mask & (POLLIN | POLLERR | POLLHUP))) {
- vm->vmhost->vcpuSemaTask[vcpuid] = current;
- schedule_timeout(timeoutms * HZ / 1000); // convert to Hz
- @@ -3405,7 +3425,7 @@
- ASSERT(handle);
- - if (!access_ok(VERIFY_WRITE, p, size)) {
- + if (!write_access_ok(p, size)) {
- printk(KERN_ERR "%s: Couldn't verify write to uva 0x%p with size %"
- FMTSZ"u\n", __func__, p, size);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement