IP Library › Granted Patent US 12,367,062
Granted Patent B1
US 12,367,062 · App. 18/744,947 · Granted Jul 22, 2025

Virtualization extension modules

Inventors: Alexey Koryakin (Moscow, RU); Nikolay Dobrovolskiy (Moscow, RU); Serguei M. Beloussov (Singapore, SG)
Assignee: Parallels International GmbH
G06F9/45558G06F2009/45575G06F2009/45579
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,367,062
App. No.
18/744,947
Granted
Jul 22, 2025
Kind
B1
Abstract

Systems and methods for processing virtual machine V/O requests by virtualization extension modules. An example method comprises receiving, by a virtual machine monitor (VMM) running on a host computer system, a request initiated by a virtual machine managed by the VMM; processing the request by a VMM extension module identified by one or more parameters of the request; invoking, by the VMM extension module, an application programming interface (API) exported by the VMM to perform an action identified by the request; and resuming execution of the virtual machine.

Claims (37)

1. A method comprising:

identifying with a virtual machine monitor (VMM) in dependence upon parameters of a virtual machine (VM) exit triggered by a VM managed by the VMM a VMM virtualization extension module of a plurality of VMM virtualization extension modules;

invoking, with the identified VMM virtualization extension module of the plurality of VMM virtualization extension modules, an application programming interface (API) to perform an action; and

resuming execution of the virtual machine; wherein

a guest API implements an API call for asynchronous communications between the VMM and a set of VMs in execution where the VM is one of the set of VMs such that at least one of context switching and processor cache resets associated with the VM exit and the steps of invoking the API and resuming execution are eliminated.

2. A method comprising:

identifying with a virtual machine monitor (VMM) in dependence upon parameters of a virtual machine (VM) exit triggered by a VM managed by the VMM a VMM virtualization extension module of a plurality of VMM virtualization extension modules;

invoking, with the identified VMM virtualization extension module of the plurality of VMM virtualization extension modules, an application programming interface (API) to perform an action; and

resuming execution of the virtual machine; wherein

the VMM virtualization extension module of the plurality of VMM virtualization extension modules provides an antivirus functionality by:

filtering input and output operations and memory access requests initiated by one or more applications running on the VM;

disabling any memory access requests that match a defined configurable pattern; and

VMM virtualization extension module of the plurality of VMM virtualization extension modules offloads one or more operations of a guest-side antivirus application; and

the one or more operations are selected from the group comprising tracking a memory access, filtering a memory access, a disk access and a network interface controller accesses.

3. A method comprising:

identifying with a virtual machine monitor (VMM) in dependence upon parameters of a virtual machine (VM) exit triggered by a VM managed by the VMM a VMM virtualization extension module of a plurality of VMM virtualization extension modules;

invoking, with the identified VMM virtualization extension module of the plurality of VMM virtualization extension modules, an application programming interface (API) to perform an action; and

resuming execution of the virtual machine; wherein

when the VM exit has been triggered by an I/O request, the process further comprises

performing with the identified VMM virtualization extension module of a plurality of VMM virtualization extension modules a request inspection; and

responsive to failing to match parameters of the I/O request to one or more request inspection patterns, forwarding the I/O request to a virtual machine controller.

4. The method according to claim 3 , wherein the one or more request inspection patterns are configured by one or more messages triggered by a guest extension module forming part of the virtual machine.

5. A method comprising:

identifying with a virtual machine monitor (VMM) in dependence upon parameters of a virtual machine (VM) exit triggered by a VM managed by the VMM a VMM virtualization extension module of a plurality of VMM virtualization extension modules;

invoking, with the identified VMM virtualization extension module of the plurality of VMM virtualization extension modules, an application programming interface (API) to perform an action; and

resuming execution of the virtual machine; wherein

when the VM exit has been triggered by an I/O request, the process further comprises:

performing with the identified VMM virtualization extension module of a plurality of VMM virtualization extension modules a request inspection; and

responsive to matching parameters of the I/O request to one or more request inspection patterns aborting the request processing and writing an error code into a predefined general purpose register of a virtual processor associated with the virtual machine.

6. A method comprising:

identifying with a virtual machine monitor (VMM) in dependence upon parameters of a virtual machine (VM) exit triggered by a VM managed by the VMM a VMM virtualization extension module of a plurality of VMM virtualization extension modules;

invoking, with the identified VMM virtualization extension module of the plurality of VMM virtualization extension modules, an application programming interface (API) to perform an action;

exporting with the identified VMM virtualization extension module of a plurality of VMM virtualization extension modules a configurable callback interface to be invoked prior to invoking a predetermined function of the API exported by the VM; and

invoking the configurable callback interface; and

resuming execution of the virtual machine; wherein

the invoked configurable callback interface in a first configuration modifies one or more parameters of the VM exit before returning execution control the identified VMM virtualization extension module of a plurality of VMM virtualization extension modules; and

the invoked configurable callback interface in a second configuration aborts a request before returning execution control the identified VMM virtualization extension module of a plurality of VMM virtualization extension modules.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2024
From: KORYAKIN, ALEXEY; DOBROVOLSKIY, NIKOLAY; BELOUSSOV, SERGUEI M.
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 067760/0415 →
Continuity (3)
Continuation 17717551 · Apr 11, 2022
Continuation 16550602 · Aug 26, 2019
Continuation 15341445 · Nov 2, 2016
References Cited (27)
US 8091086B1 · Ershov et al. · 2012 [cited by applicant]
US 8510756B1 · Koryakin · 2013 [cited by examiner]
US 9003402B1 · Carbone et al. · 2015 [cited by applicant]
US 10073712B1 · Au et al. · 2018 [cited by applicant]
US 12014199B1 · Koryakin · 2024 [cited by examiner]
US 20050246453A1 · Erlingsson et al. · 2005 [cited by applicant]
US 20080288940A1 · Adams et al. · 2008 [cited by applicant]
US 20090204964A1 · Foley · 2009 [cited by examiner]
US 20090217262A1 · Manczak · 2009 [cited by examiner]
US 20090293057A1 · Larkin et al. · 2009 [cited by applicant]
US 20100306849A1 · Zheng · 2010 [cited by examiner]
US 20110296411A1 · Tang et al. · 2011 [cited by applicant]
US 20130061293A1 · Mao · 2013 [cited by applicant]
US 20130159501A1 · Meier et al. · 2013 [cited by applicant]
US 20140109091A1 · Philipson · 2014 [cited by examiner]
US 20140115228A1 · Zhou et al. · 2014 [cited by applicant]
US 20140173628A1 · Ramakrishnan Nair · 2014 [cited by applicant]
US 20140208097A1 · Brandwine · 2014 [cited by examiner]
US 20140380482A1 · Thomas et al. · 2014 [cited by applicant]
US 20150007326A1 · Mooring · 2015 [cited by examiner]
US 20150188788A1 · Kolesnik et al. · 2015 [cited by applicant]
US 20150199532A1 · Ismael et al. · 2015 [cited by applicant]
US 20170053118A1 · Malkov et al. · 2017 [cited by applicant]
US 20170090963A1 · Nakajima et al. · 2017 [cited by applicant]
US 20170185436A1 · Deng et al. · 2017 [cited by applicant]
US 20180004558A1 · Das Sharma · 2018 [cited by applicant]
US 20180018244A1 · Yoshimura et al. · 2018 [cited by applicant]