Commit graph

  • 84b3f3c241 cosmetic changes master Petr Beneš 2021-03-15 13:43:11 +01:00
  • d41723bdca Fixing prefix handling of SYSCALL/RDTSC leaking the existence of the VMM Can Bölük 2021-03-15 13:33:07 +01:00
  • c2db255b71 Fixing guest-to-host stack overflow. Can Bölük 2021-03-15 13:19:20 +01:00
  • 196ffdffcf
    cosmetic changes Petr Beneš 2021-03-15 13:43:11 +01:00
  • 29abfd6eb7 Fixing prefix handling of SYSCALL/RDTSC leaking the existence of the VMM Can Bölük 2021-03-15 13:33:07 +01:00
  • 443f7ea99d Fixing guest-to-host stack overflow. Can Bölük 2021-03-15 13:19:20 +01:00
  • c9b6de15a5 make capacity of the heap-allocator configurable Petr Benes 2020-01-05 17:12:20 +01:00
  • cfe3d320b8 make logging, trace-logging and asserts optional during compile-time Petr Benes 2020-01-05 17:09:01 +01:00
  • 50fd7bbc2d add check if hypervisor_allocator() exists in the generic_free() method Petr Benes 2020-01-05 17:07:40 +01:00
  • 7b976e63a3 introduce ept_t::map_identity_sparse() method Petr Benes 2020-01-05 17:05:36 +01:00
  • b76feb2d98 make global_t instances static Petr Benes 2020-01-05 17:04:43 +01:00
  • d2d1cabdc3 cosmetic changes (reword ept_t::map_identity() description) Petr Benes 2020-01-05 17:00:54 +01:00
  • 946a9b5cec add configuration for .inl files to .editorconfig Petr Benes 2019-10-31 16:24:30 +01:00
  • f1eece7d0d introduce vmexit_handler::terminate() method Petr Benes 2019-10-31 14:08:02 +01:00
  • a2e52fbbf6 redo usage of EPT, again Petr Benes 2019-10-29 16:20:27 +01:00
  • fb0be3b6ab add vcpu_t::user_data() Petr Benes 2019-10-29 16:27:22 +01:00
  • 1d6b3d0e59 add new parameter "was_force_resumed" to vmexit_handler::handle_guest_resume() method Petr Benes 2019-10-29 16:31:46 +01:00
  • 7922700cfe add kernel_(begin/end)_address and (highest_user/system_range_start)_address to the "driver" namespace Petr Benes 2019-10-29 15:51:09 +01:00
  • c7cba16b20 add HvppNtStatusToErrorCode()/HvppErrorCodeToNtStatus() Petr Benes 2019-10-29 15:56:15 +01:00
  • b839eff4fa add forgotten <cstddef> include for deque.h Petr Benes 2019-10-29 15:19:51 +01:00
  • 3862f71215 clear hypervisor_allocator_* variables after destroying the allocator Petr Benes 2019-10-29 16:35:27 +01:00
  • 5552f21bed fix "unused variable" for "alignment" in hypervisor_memory_allocator Petr Benes 2019-10-29 15:21:41 +01:00
  • 7b74a9a0a8 fix initialization of device::impl_ to nullptr Petr Benes 2019-10-29 15:20:27 +01:00
  • 02a06d4ea1 make vmx::vmcall() call vmx::vmcall_slow() or vmx::vmcall_fast() based on number of arguments Petr Benes 2019-10-29 15:19:16 +01:00
  • b454563763 make enum operator functions "inline" Petr Benes 2019-10-29 15:20:58 +01:00
  • 408622ae40 make cr3_guard non-copyable, but movable Petr Benes 2019-10-29 16:56:09 +01:00
  • e2e25b571c cosmetic changes Petr Benes 2019-10-29 16:58:59 +01:00
  • 58f9f6f859 fix crash on hvppdrv_c unload Petr Benes 2019-08-01 20:43:39 +02:00
  • 1cdbec6159 introduce vcpu_t::guest_resume() method Petr Benes 2019-08-01 19:34:00 +02:00
  • b5a99457b1 rename *_to_string() functions just to to_string() Petr Benes 2019-08-01 19:19:02 +02:00
  • bc5a342e8d make vmexit_handler::setup() return error_code_t Petr Benes 2019-08-01 19:06:51 +02:00
  • 80141935f6 switch to "auto method() -> return_type" convention in device object Petr Benes 2019-08-01 19:01:21 +02:00
  • d8eb913052 introduce new flexible memory allocator Petr Benes 2019-08-01 18:58:23 +02:00
  • 82b7070c8b replace std::aligned_storage_t with std::array in object_t Petr Benes 2019-08-01 18:47:09 +02:00
  • 68db2ad3fb lock memory in device::copy_from_user() & device::copy_to_user() methods Petr Benes 2019-08-01 18:32:34 +02:00
  • fc842b7019 allocate page_size-aligned memory for EPT subtables Petr Benes 2019-08-01 18:31:55 +02:00
  • cd23e08137 make bitmap class template-specialized and remove bitmap_local class Petr Benes 2019-08-01 18:30:09 +02:00
  • d30f38bfd8 add rdtsc/rdtscp opcode emulation Petr Benes 2019-07-25 00:52:29 +02:00
  • 71673248c1 add correct handling of syscall/sysret Petr Benes 2019-07-25 00:48:01 +02:00
  • b21b3c954f add vmexit_passthrough_handler::handle_nmi_window method Petr Benes 2019-07-25 00:34:39 +02:00
  • 465157c16a add tracing of interrupt handling Petr Benes 2019-07-25 00:30:50 +02:00
  • b41d9f924e improve interrupt queue in vcpu_t Petr Benes 2019-07-25 00:30:28 +02:00
  • 4b676306ed add "fixed_dequeue" class Petr Benes 2019-07-25 00:27:33 +02:00
  • 56fc52225a add timestamp counter information into the vcpu_t class Petr Benes 2019-07-25 00:20:49 +02:00
  • 3a41720b77 add helper enum macros, that easily enable bitwise operations Petr Benes 2019-07-25 00:17:30 +02:00
  • d3d975275a make memory_mapper & memory_translator part of vcpu_t Petr Benes 2019-07-25 00:14:59 +02:00
  • 8469e4cf13 introduce mm::memory_translator Petr Benes 2019-07-24 23:37:14 +02:00
  • 73b0d8cbc5 fix setting wrong CR3 for VMX-root Petr Benes 2019-07-24 23:55:06 +02:00
  • 1c98c4edef introduce mm::paging_descriptor Petr Benes 2019-07-24 23:36:08 +02:00
  • efd6e34dc6 improve va_t class, add methods like canonical()/is_canonical() Petr Benes 2019-07-24 22:52:53 +02:00
  • b357ab64a8 rename va_t::index() to va_t::offset() (also for pa_t) Petr Benes 2019-07-24 22:52:02 +02:00
  • 9608bc71c4 memory manager refactoring Petr Benes 2019-07-24 23:30:41 +02:00
  • 188479c084 vcpu_t::exit_context() -> vcpu_t::context() Petr Benes 2019-07-24 23:28:19 +02:00
  • f6d11b0cb9 introduce vmx::vmcall_ex() method for transfering up to 10 arguments Petr Benes 2019-07-24 21:57:59 +02:00
  • 5cc5758070 introduce setters for "base_address" and "limit" for GDT/IDT Petr Benes 2019-07-24 21:57:18 +02:00
  • a16de60e4c introduce debugger:breakpoint_if_enabled() function Petr Benes 2019-07-24 21:56:49 +02:00
  • 4144a78546 use "mov" instead of "push" to build machine-frame in vmexit handler Petr Benes 2019-07-24 21:56:28 +02:00
  • e7b972f8cc fix uninitialized buffer in bitmap_local class Petr Benes 2019-07-24 22:00:30 +02:00
  • cc65bd93b5 simplify "return error_code_t{};" statements Petr Benes 2019-07-24 21:54:40 +02:00
  • 53c2cc8881 make switch/case statements in *_to_string functions safer Petr Benes 2019-07-24 22:00:04 +02:00
  • 02790d8272 cosmetic changes Petr Benes 2019-07-24 21:53:45 +02:00
  • c86e00ee51
    fix crashes in release build (stack alignment) Petr Beneš 2019-06-27 22:58:59 +02:00
  • 65faaf1ccc remove optimization-disabling #pragma directives Petr Benes 2019-04-14 14:07:19 +02:00
  • 9c03523701 move vmexit_compositor_handler to vmexit.h Petr Benes 2019-04-14 14:06:39 +02:00
  • ee0e25a282 closes #34 Petr Benes 2019-04-14 12:47:28 +02:00
  • 8f9e1ace68 big refactoring (not as bad as it seems) Petr Benes 2019-03-29 17:24:06 +01:00
  • b8aaa631f3 improve const-correctness Petr Benes 2019-03-19 01:35:14 +01:00
  • bb53c19543 cosmetic change (make explicit std::atomic<> template parameter) Petr Benes 2019-03-18 00:15:12 +01:00
  • e6b23cf0f6 make device::initialize() & device::destroy() methods virtual Petr Benes 2019-03-14 18:46:45 +01:00
  • d55810895c make important classes "final" Petr Benes 2019-03-14 18:46:20 +01:00
  • fa3c2236cf minor fixes Petr Benes 2019-03-14 18:45:54 +01:00
  • 4d934b0cda add memory_range::empty() method Petr Benes 2019-03-13 18:50:35 +01:00
  • 830e51bb05 introduce device::copy_from_user/copy_to_user static methods Petr Benes 2019-03-11 18:10:32 +01:00
  • e8a43db08a make ioctl_t::code & ioctl_t::size variables, instead of functions Petr Benes 2019-03-10 22:00:08 +01:00
  • 516ed34b64 rename interrupt_info_t to interrupt_t and make it constexpr Petr Benes 2019-03-01 13:21:44 +01:00
  • 729eed5307 rename memory_range class to physical_memory_range and reintroduce memory_range as range of *virtual addresses* Petr Benes 2019-03-01 13:17:46 +01:00
  • 75ad7c8149 cosmetic changes Petr Benes 2019-03-01 13:16:10 +01:00
  • a95bda4611 add operator== and operator!= for ia32::context_t Petr Benes 2019-03-01 13:15:29 +01:00
  • 2bcfe23b35 enable ConformanceMode during compilation Petr Benes 2019-03-01 13:14:56 +01:00
  • b5620e9447
    update README.md Parallel Xenoexcite 2019-02-23 21:44:02 +01:00
  • d41b4a5499
    Merge pull request #30 from namazso/master Parallel Xenoexcite 2019-02-17 19:09:57 +01:00
  • 4cd5531944 fix memory leak Unknown 2019-02-17 12:59:29 +01:00
  • ec4115e5af fix wrong condition Petr Benes 2019-02-11 16:11:17 +01:00
  • d33e6a0e92 add code for easy emulation of syscall/sysret instructions Petr Benes 2019-01-27 22:02:52 +01:00
  • f54f1496d6 implement pending interrupt queue and interrupt-window pass-through handler Petr Benes 2019-01-27 21:52:48 +01:00
  • bd98ceb834 move implementation from memory.h into memory.cpp Petr Benes 2019-01-27 21:59:53 +01:00
  • 18f323d8b5 ia32/arch/segment.h refactoring (seg_t -> segment_t) Petr Benes 2019-01-27 21:57:04 +01:00
  • 63e0b5a001 add driver::begin_address & driver::end_address Petr Benes 2019-01-27 21:58:17 +01:00
  • c032e36a12 cosmetic changes Petr Benes 2019-01-27 21:54:01 +01:00
  • 658bc37030 cosmetic changes Petr Benes 2019-01-13 15:31:08 +01:00
  • a77584660a fix missing offset adjustment in pa_from_va Petr Benes 2019-01-13 15:30:55 +01:00
  • 4cfdf094de fix passing of EPT access flag Petr Benes 2019-01-12 01:34:38 +01:00
  • cfd7146d6b suppres RIP adjust when injecting #UD Petr Benes 2019-01-11 15:00:23 +01:00
  • c50eb05eaa add vcpu_t::idt_vectoring_info() method Petr Benes 2019-01-10 16:55:17 +01:00
  • bfe5c14505 rename vcpu_t::exit_interrupt_info() -> interrupt_info() Petr Benes 2019-01-10 16:50:52 +01:00
  • d31e3136ab add more Windows-specific exception vectors Petr Benes 2019-01-10 16:49:32 +01:00
  • a5626eb5be make ept_t::ept_entry() method public Petr Benes 2019-01-10 16:49:07 +01:00
  • 78a1b43956 create interface to support multiple EPTs Petr Benes 2019-01-07 15:07:18 +01:00
  • 9325ae3921 accept memory access type when maping/splitting/joining EPT Petr Benes 2019-01-07 15:00:12 +01:00
  • a6f16cedfb accept references instead of pointers Petr Benes 2019-01-07 14:59:06 +01:00