EP3118740B1 - Device and method for hardware virtualization support - Google Patents
Device and method for hardware virtualization support Download PDFInfo
- Publication number
- EP3118740B1 EP3118740B1 EP15176883.5A EP15176883A EP3118740B1 EP 3118740 B1 EP3118740 B1 EP 3118740B1 EP 15176883 A EP15176883 A EP 15176883A EP 3118740 B1 EP3118740 B1 EP 3118740B1
- Authority
- EP
- European Patent Office
- Prior art keywords
- hypervisor
- virtual
- host
- component
- timer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 42
- 238000005457 optimization Methods 0.000 claims description 32
- 230000007246 mechanism Effects 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 19
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
Definitions
- the present application relates to the field of virtual timer delivery.
- the present application relates to a device and a method for hardware virtualization support.
- ARM architecture abbreviated for Advanced RISC Machines
- HW hardware
- HW virtualization support For instance, in ARMv7 as introduced in 2004 and in ARMv8 architectures, such HW virtualization support is present and supported.
- Hypervisor software as compared to HW-based virtualization solution provides flexibility in the form of easy extensibility of virtualization features, but downsizes its performance overhead due to lack of HW acceleration on SW handled operations.
- One area that is especially affected by this performance overhead is the virtual timer interrupt delivery in ARM platforms.
- a device for hardware virtualization support comprising: a hypervisor component configured to launch a virtual machine, VM, and configured to exit and/or to enter a host level; a host system component configured to process a configuration flag that enables an interrupt delivery mechanism; wherein the host system component is configured to record, if the configuration flag is set, a virtual timer number as a global variable, providing information to the hypervisor component when a virtual timer is expired; and wherein the hypervisor component is configured to process the virtual timer number of the global variable in the host level.
- the device for hardware virtualization support advantageously provides improving virtual timer delivery time in ARM chips based on generic interrupt controller v2/3, GICv2/3.
- the hindrance with regard to virtual timer delivery in ARM chips based on GICv2/3 is that the hardware is not able to send a virtual timer directly to the guest operating system, the guest OS.
- the expiration of a virtual timer may generate a physical interrupt which may cause an exit to the hypervisor mode and then to the host OS which updates kernel-based virtual machines, KVM, software structures related to the GIC and then yet gets back to the hypervisor mode which updates actual physical GIC registers before entering back to guest OS mode.
- KVM kernel-based virtual machines
- the delivery of a virtual timer may require significant amount of work by the software layer, i.e. processing time and/or memory requirements.
- the device for hardware virtualization support advantageously allows simplifying interrupt delivery paths as used and therefore shortens the virtual timer delivery time.
- the device for hardware virtualization support may comprise a linux KVM hypervisor code part that may provide code to perform a "word switch", i.e. the possibility to launch a VM and exit and/or enter the host linux level.
- the hypervisor code may also be responsible to write and/or to read into physical GIC, for instance, as the interrupt controller.
- the device for hardware virtualization support may comprise a linux host system that may need to be extended with a supplementary configuration flag that enables fast interrupt delivery mechanism.
- the linux host system may have the requirement to be extended with an additional configuration flag, for instance defined as CONFIGURE_KVM_TIMER_OPTIMIZATION.
- Processing the new, added configuration flag and considering the new configuration flag may enable a quicker interrupt delivery mechanism if compared to the mechanism without a supplementary configuration flag.
- the host system i.e. linux may record the virtual timer number in a global variable so that the hypervisor mode knows when virtual timer has expired and can use the fast path mechanism if that has been enabled.
- the hypervisor mode may be extended to take into account a fast delivery option.
- the device for hardware virtualization support may be configured to run several VMs on a single physical central processing unit, CPU.
- the device for hardware virtualization support may be configured to run one VM on one physical CPU.
- the host system component is configured to perform a virtualization specification for a physical interrupt taken in a hypervisor mode. This advantageously provides a reduction in time by mapping a so-called virtual interrupt for the guest OS.
- the host system component is configured to restore a host OS state, to mark an exit reason to a register and to return to the host OS state. This advantageously provides an improved performance of the virtual timer delivery to the guest OS.
- the host system component is configured to perform a virtual timer performance optimization if an optimization flag is enabled.
- This advantageously provides an embedded mechanism based on a simple check for improving the virtual timer performance. In other words, a virtual timer delivery time optimization is provided. Virtual timer performance is improved because an extra exit to host state is avoided.
- the host system component is configured to optimize a hypervisor return path to a guest OS state. This advantageously provides an improved performance of the hardware virtualization support. Hence, a virtual timer delivery time optimization is provided.
- the host system component is configured to update a generic interrupt controller list register and to return back to the guest OS state, when an expiration of the virtual timer is detected. This advantageously provides an adjusted hardware virtualization support and returning to the guest OS state. The virtual timer delivery to the guest OS is thus faster.
- the hypervisor component is configured to record a virtual timer IRQ number in a timer device tree entry.
- IRQ refers to the term "interrupt request".
- an IRQ is a signal that is sent to the computer processor to stop the processor momentarily while it decides which task it should perform next. This advantageously causes asynchronous exit to the interrupt handler once an interrupt occurs.
- the hypervisor component is configured to specify the virtual IRQ number. This advantageously provides an improved performance of the virtual interrupts. In other words, the performance is improved, when the virtual IRQ number is specified.
- a hypervisor component may not be aware which interrupt should be handled by the guest OS and which one by host OS.
- a virtual IRQ number By employing a virtual IRQ number a unique assignment of interrupts to guest OS or host OS is possible.
- the hypervisor component goes to the host state because the interrupt might be targeted for the host OS. If the host OS does not handle the interrupt and acknowledges the interrupt in the end then it will be handled by the KVM which checks which of the VMs should handle it. That means that the KVM structures of the responsible VM are updated and then the KVM returns to the hypervisor mode and in hypervisor mode the actual HW registers for the virtual timer that is updated before returning to the guest OS. This extra round to host state is avoided if hypervisor component is aware that a physical IRQ is targeted to a running VM.
- the hypervisor component is configured to specify the virtual IRQ number according to a physical IRQ number that is delivered to the hypervisor mode once the virtual timer is expired. This advantageously provides an improved performance of the virtual interrupts.
- the present invention relates to a hypervisor component for hardware virtualization support, wherein the hypervisor component is configured to launch a virtual machine and configured to exit and/or to enter a host level and to process a virtual timer number of a global variable in the host level.
- the invention relates to a host system component for hardware virtualization support, wherein the host system component is configured to process a configuration flag that enables an interrupt delivery mechanism, wherein the host system component, if the configuration flag is set, is configured to record a virtual timer number as a global variable, providing information to a hypervisor component according to the second aspect when a virtual timer is expired.
- the present invention relates to a method for hardware virtualization support, the method comprising the following steps of:
- the method further comprises the step of: performing a virtualization specification for a physical interrupt taken in a hypervisor mode by the host system component. This advantageously provides a reduction of processing time by mapping a virtual interrupt for the guest OS.
- the processing or delivery time is the time measured between an expiration of virtual timer, which always causes physical IRQ that is trapped to hypervisor mode i.e. to EL2 mode, and the delivery of virtual timer to guest OS state.
- the processing or delivery time corresponds to the time measured between the time point of the expiration of virtual timer and the time point of the delivery of virtual timer to guest OS state.
- the method further comprises the steps of: restoring a host OS state, marking an exit reason to a register and returning to the host OS state. This advantageously provides an improved performance of the virtual timer delivery to the guest OS.
- the method further comprises the step of: performing a virtual timer performance optimization if an optimization flag is enabled. This advantageously provides an embedded mechanism for enhancing the virtual timer performance.
- the present invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations thereof, e.g. in available hardware of conventional mobile devices or in new hardware dedicated for processing the methods described herein.
- the present invention advantageously allows running several VMs on the same CPU, the advantage of the virtual timer delivery optimization can be achieved if one VCPU is running on single physical CPU.
- the present invention advantageously provides a mechanism that avoids, in case existing KVM hypervisor code has been modified, entering back to Host OS mode once virtual timer expires i.e. after virtual timer expiration of the Host OS. Thus, hypervisor mode loop can be avoided.
- hypervisor mode code path selects optimized virtual timer handling if Linux kernel compiler time option CONFIGURE_KVM_TIMER_OPTIMIZATION - flag is enabled.
- a hypervisor return path to the guest OS state may be optimized such that when the hypervisor recognizes expiration of the virtual timer it may update the GIC list register directly and it may return back to the guest OS state. This way the delivery time of the virtual timer can be significantly improved.
- the method for hardware virtualization support describes a virtual timer delivery optimization.
- the GIC architecture may be used to define the architectural requirements for handling all interrupt sources for any processor connected to a GIC or to a common interrupt controller programming interface applicable to uniprocessor or multiprocessor systems.
- the GIC architecture may be used as a centralized resource for supporting and managing interrupts in a system that includes at least one processor.
- the GIC architecture may provide registers for managing interrupt sources, interrupt behavior, and interrupt routing to one or more processors, support for the ARM architecture and software-generated or virtual interrupts.
- a software based method to simplify and optimize virtual timer delivery time in KVM based hypervisor by avoiding unnessary store and load of Linux Host OS state is provided.
- changes to the KVM hypervisor code are used and to the linux host OS code. According to an exemplary embodiment of the present invention, these modifications are optional and configurable via the linux kernel CONFIGURE_KVM_TIMER_OPTIMIZATION - compiler flag.
- Fig. 1 shows a schematic diagram of a device for hardware virtualization support according to one embodiment of the present invention.
- Fig. 1 shows an embodiment of a device 100 for hardware virtualization support
- the device 100 comprises a hypervisor component 101 and a host system component 102.
- the hypervisor component 101 is configured to launch a virtual machine VM and may be configured to exit and/or to enter a host level, wherein the hypervisor component 101 is configured to process the virtual timer number of the global variable in the host level.
- the host system component 102 is configured to process a configuration flag CF that enables an interrupt delivery mechanism, wherein the host system component 102 is configured to record a virtual timer number as a global variable, if the configuration flag is set, providing information to the hypervisor component 101 when a virtual timer is expired.
- the host system component 102 may be configured to perform a virtual timer performance optimization if an optimization flag OF is enabled.
- the host system component 102 is configured to process a configuration flag CF in form of a CONFIGURE_KVM_TIMER_OPTIMIZATION - flag.
- Fig. 2 shows a schematic diagram of a flowchart diagram of a method for hardware virtualization support according to an embodiment of the invention.
- Fig. 2 describes virtual timer delivery optimization. According to an exemplary embodiment of the present invention, all steps S1 to S4 can be independent of each other.
- launching a virtual machine by a hypervisor component 101 and exiting and/or entering a host level As a first step S1 of the method, launching a virtual machine by a hypervisor component 101 and exiting and/or entering a host level.
- processing a configuration flag CF by a host system component 102 is conducted, wherein the configuration flag CF enables an interrupt delivery mechanism.
- a third step S3 of the method if the configuration flag CF is set, recording a virtual timer number as a global variable by the host system component 102 is performed, providing information to the hypervisor component 101 when a virtual timer is expired.
- step S4 of the method processing the virtual timer number of the global variable in the host level by the hypervisor component 101 is conducted.
- Fig. 3 shows a schematic diagram of a virtual timer delivery diagram in KVM based hypervisor according to one embodiment of the present invention.
- the device 100 for hardware virtualization support may be configured to perform the following steps: In step S10, triggered by a physical interrupt, the guest OS state is saved. In step S11, a hypervisor state is loaded.
- a query part 2000 may use a linux kernel compilation flag to select either fast or slow path of virtual timer delivery.
- the query part 2000 may comprise the following steps.
- step S12 it may be determined whether, the CONFIGURE_KVM_TIMER_OPTIMIZATION - flag is set.
- the procedure may be continued with a fast part 3000. If not, the procedure may be continued with a slow part 1000.
- fast and slow may be used in relative respect to each other, e.g. defining that one part is faster or slower than the other.
- the normal virtual timer delivery mechanism will be used i.e. slow path. Otherwise, the fast path will be used.
- the slow part 1000 may comprise the following steps: In step S13, loading the host OS state may be conducted.
- step S14 updating the KVM software GIC state may be conducted.
- step S15 saving the host OS state may be conducted.
- step S16 loading the hypervisor state may be conducted.
- the fast part 3000 may comprise the following steps: In step S20, updating virtual CPU GIC registers may be conducted.
- step S21 loading the guest OS state may be conducted.
- Fig. 4 shows a schematic diagram of modifications in the KVM hypervisor and the host system according to one embodiment of the present invention.
- Fig. 4 shows the processes and steps performed between the linux host, the KVM hypervisor, and the guest virtual machine.
- the device 100 for hardware virtualization support may be configured to perform the following steps:
- the optimized virtual timer delivery mechanism may be enabled in the host OS:
- step S22 applying virtual timer delivery optimization code to Linux host and KVM hypervisor code may be conducted.
- step S23 selecting CONFIGURE_KVM_TIMER_OPTIMIZATION-compile option and compiling the host kernel may be conducted.
- step S24 recording the virtual timer physical interrupt number may be conducted. This may trigger the guest virtual machine in step S30 to have the guest virtual machine running.
- step S25 configuring a single VM on single physical CPU based on normal Linux tools may be performed.
- step S32 Once a physical timer interrupt arrives in step S32, exiting to hypervisor mode may be conducted. Subsequently, it may be checked in step S40 if the CONFIGURE_KVM_TIMER_OPTIMIZATION flag is set.
- step S41 If yes, the procedure may be continued with step S41, if not with step S26.
- step S26 load the host OS state may be conducted.
- step S27 updating the KVM software GIC state may be performed.
- step S28 saving the host OS state may be conducted.
- step S29 loading the hypervisor state may be conducted and the procedure may be resumed with step S42.
- step S41 updating the VCPU GIC registers may be conducted.
- step S42 loading the guest OS state may be performed.
- the virtual timer IRQ number is recorded in timer device tree entry: third IRQ number in timer device tree entry specifies the virtual IRQ number that is delivered to hypervisor mode once virtual time expires.
- the virtual timer node in the device tree entry for arch_timers is shown in Fig. 4 .
- the hypervisor may know the used virtual interrupt number. This can be done in different parts of the linux host OS architecture timer setup. One option is to use for instance the following pseudo code flow:
- the dotted line represents modifications in the linux host OS, the dashed line shows modifications in the KVM.
- Fig. 5 shows a schematic diagram of an example of virtual timer IRQ number in ARM arch_timer device tree entry according to one embodiment of the present invention.
- Fig. 6 shows a schematic diagram of a GICv2 architecture diagram according to one embodiment of the present invention.
- Fig. 6 shows a schematic diagram of a GIC or GICv2 partitioning.
- the GIC or GICv2 architecture may split logically into a distributor block and one or more CPU interface blocks.
- the GIC virtualization extensions add one or more virtual CPU interfaces to the GIC. Therefore, as Fig. 6 shows, the logical partitioning of the GIC is as follows:
- a distributor block may be defined.
- the Distributor block performs interrupt prioritization and distribution to the CPU interface blocks that connect to the processors in the system.
- the Distributor block registers are identified by the GICD_ prefix.
- CPU interfaces may be used. Each CPU interface block may perform priority masking and preemption handling for a connected processor in the system.
- CPU interface block registers are identified by the GICC_ prefix.
- a CPU interface is sometimes called a physical CPU interface, to avoid possible confusion with a virtual CPU interface.
- virtual CPU interfaces may be used.
- the GIC Virtualization Extensions add a virtual CPU interface for each processor in the system.
- a virtual interface control may be used.
- the main component of the virtual interface control block is the GIC virtual interface control registers that include a list of active and pending virtual interrupts for the current virtual machine on the connected processor.
- these registers are managed by the hypervisor that is running on that processor.
- Virtual interface control block registers are identified by the GICH_ prefix.
- Each virtual CPU interface block provides physical signaling of virtual interrupts to the connected processor.
- the ARM processor may process virtualization extensions signals and use these interrupts to the current virtual machine on that processor.
- the GIC virtual CPU interface registers accessed by the virtual machine, provide interrupt control and status information for the virtual interrupts.
- the format of these registers is similar to the format of the physical registers.
- CPU interface registers may be configured.
- Virtual CPU interface block registers are identified by the GICV_prefix.
- the present disclosure also supports a computer program product including computer executable code or computer executable instructions that, when executed, causes at least one computer to execute the performing and computing steps described herein.
- a computer program may be stored or distributed on a suitable medium, such as an optical storage medium or a solid-state medium supplied together with or as part of other hardware, but may also be distributed in other forms, such as via the Internet or other wired or wireless telecommunication systems.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
- The present application relates to the field of virtual timer delivery. In particular, the present application relates to a device and a method for hardware virtualization support.
- Various computer central processor instruction sets are used today. One type of them, the ARM architecture, abbreviated for Advanced RISC Machines, provides optional hardware, HW, extensions support or HW virtualization support. For instance, in ARMv7 as introduced in 2004 and in ARMv8 architectures, such HW virtualization support is present and supported.
- Even though ARM adds HW features to support virtualization, there is still need for a substantial amount of hypervisor software in order to handle virtualization events. Hypervisor software as compared to HW-based virtualization solution provides flexibility in the form of easy extensibility of virtualization features, but downsizes its performance overhead due to lack of HW acceleration on SW handled operations. One area that is especially affected by this performance overhead is the virtual timer interrupt delivery in ARM platforms.
- Document CHRISTOFFER DALL ET AL: "KVM/ARM", pages 333-348, DOI: 10.1145/2644865.2541946, ISBN: 978-1-60558-392-1 is directed to the Linux ARM hypervisor, KVM/ ARM, a full system ARM virtualization solution specifying an implementation for virtual timer delivery that allows virtual machines direct access to timers.
- It is the object of the present invention to provide an improved hardware virtualization support.
- This object is achieved by the features of the independent claims. Further implementation forms are apparent from the dependent claims, the description and the figures.
- According to a first aspect, a device for hardware virtualization support is provided, the device comprising: a hypervisor component configured to launch a virtual machine, VM, and configured to exit and/or to enter a host level; a host system component configured to process a configuration flag that enables an interrupt delivery mechanism; wherein the host system component is configured to record, if the configuration flag is set, a virtual timer number as a global variable, providing information to the hypervisor component when a virtual timer is expired; and wherein the hypervisor component is configured to process the virtual timer number of the global variable in the host level.
- The device for hardware virtualization support advantageously provides improving virtual timer delivery time in ARM chips based on generic interrupt controller v2/3, GICv2/3. The hindrance with regard to virtual timer delivery in ARM chips based on GICv2/3 is that the hardware is not able to send a virtual timer directly to the guest operating system, the guest OS.
- Thus, the expiration of a virtual timer may generate a physical interrupt which may cause an exit to the hypervisor mode and then to the host OS which updates kernel-based virtual machines, KVM, software structures related to the GIC and then yet gets back to the hypervisor mode which updates actual physical GIC registers before entering back to guest OS mode. Thus, the delivery of a virtual timer may require significant amount of work by the software layer, i.e. processing time and/or memory requirements.
- The device for hardware virtualization support advantageously allows simplifying interrupt delivery paths as used and therefore shortens the virtual timer delivery time.
- In other words, the device for hardware virtualization support may comprise a linux KVM hypervisor code part that may provide code to perform a "word switch", i.e. the possibility to launch a VM and exit and/or enter the host linux level. The hypervisor code may also be responsible to write and/or to read into physical GIC, for instance, as the interrupt controller.
- In other words, the device for hardware virtualization support may comprise a linux host system that may need to be extended with a supplementary configuration flag that enables fast interrupt delivery mechanism.
- In other words, the linux host system may have the requirement to be extended with an additional configuration flag, for instance defined as
CONFIGURE_KVM_TIMER_OPTIMIZATION. - Processing the new, added configuration flag and considering the new configuration flag may enable a quicker interrupt delivery mechanism if compared to the mechanism without a supplementary configuration flag.
- If the flag is set, the host system, i.e. linux may record the virtual timer number in a global variable so that the hypervisor mode knows when virtual timer has expired and can use the fast path mechanism if that has been enabled.
- The hypervisor mode may be extended to take into account a fast delivery option.
- In other words, the device for hardware virtualization support may be configured to run several VMs on a single physical central processing unit, CPU. The device for hardware virtualization support may be configured to run one VM on one physical CPU.
- In a first possible implementation form of the device according to the first aspect, the host system component is configured to perform a virtualization specification for a physical interrupt taken in a hypervisor mode. This advantageously provides a reduction in time by mapping a so-called virtual interrupt for the guest OS.
- In a second possible implementation form of the device according to the first aspect as such or according to the first implementation form of the first aspect, the host system component is configured to restore a host OS state, to mark an exit reason to a register and to return to the host OS state. This advantageously provides an improved performance of the virtual timer delivery to the guest OS.
- In a third possible implementation form of the device according to the first aspect as such or according to the any one of the preceding implementation forms of the first aspect, the host system component is configured to perform a virtual timer performance optimization if an optimization flag is enabled. This advantageously provides an embedded mechanism based on a simple check for improving the virtual timer performance. In other words, a virtual timer delivery time optimization is provided. Virtual timer performance is improved because an extra exit to host state is avoided.
- In a fourth possible implementation form of the device according to the first aspect as such or according to the any one of the preceding implementation forms of the first aspect, if the optimization flag is enabled, the host system component is configured to optimize a hypervisor return path to a guest OS state. This advantageously provides an improved performance of the hardware virtualization support. Hence, a virtual timer delivery time optimization is provided.
- In a fifth possible implementation form of the device according to the first aspect as such or according to the any one of the preceding implementation forms of the first aspect, if the optimization flag is enabled, the host system component is configured to update a generic interrupt controller list register and to return back to the guest OS state, when an expiration of the virtual timer is detected. This advantageously provides an adjusted hardware virtualization support and returning to the guest OS state. The virtual timer delivery to the guest OS is thus faster.
- In a sixth possible implementation form of the system according to the first aspect as such or according to the any one of the preceding implementation forms of the first aspect, the hypervisor component is configured to record a virtual timer IRQ number in a timer device tree entry. This advantageously provides an adjusted hardware virtualization support. The term IRQ as used by the present invention refers to the term "interrupt request". In other words, an IRQ is a signal that is sent to the computer processor to stop the processor momentarily while it decides which task it should perform next. This advantageously causes asynchronous exit to the interrupt handler once an interrupt occurs.
- In a seventh possible implementation form of the system according to the first aspect as such or according to any of the preceding implementation forms of the first aspect, the hypervisor component is configured to specify the virtual IRQ number. This advantageously provides an improved performance of the virtual interrupts. In other words, the performance is improved, when the virtual IRQ number is specified.
- The reason is that normally a hypervisor component may not be aware which interrupt should be handled by the guest OS and which one by host OS. By employing a virtual IRQ number a unique assignment of interrupts to guest OS or host OS is possible.
- When an interrupt occurs then the hypervisor component goes to the host state because the interrupt might be targeted for the host OS. If the host OS does not handle the interrupt and acknowledges the interrupt in the end then it will be handled by the KVM which checks which of the VMs should handle it. That means that the KVM structures of the responsible VM are updated and then the KVM returns to the hypervisor mode and in hypervisor mode the actual HW registers for the virtual timer that is updated before returning to the guest OS. This extra round to host state is avoided if hypervisor component is aware that a physical IRQ is targeted to a running VM.
- In an eighth possible implementation form of the system according to the first aspect as such or according to any of the preceding implementation forms of the first aspect, the hypervisor component is configured to specify the virtual IRQ number according to a physical IRQ number that is delivered to the hypervisor mode once the virtual timer is expired. This advantageously provides an improved performance of the virtual interrupts.
- According to a second aspect, the present invention relates to a hypervisor component for hardware virtualization support, wherein the hypervisor component is configured to launch a virtual machine and configured to exit and/or to enter a host level and to process a virtual timer number of a global variable in the host level.
- According to a third aspect, the invention relates to a host system component for hardware virtualization support, wherein the host system component is configured to process a configuration flag that enables an interrupt delivery mechanism, wherein the host system component, if the configuration flag is set, is configured to record a virtual timer number as a global variable, providing information to a hypervisor component according to the second aspect when a virtual timer is expired.
- According to a fourth aspect, the present invention relates to a method for hardware virtualization support, the method comprising the following steps of:
- launching a virtual machine by a hypervisor component and exiting and/or entering a host level;
- processing a configuration flag by a host system component, wherein the configuration flag enables an interrupt delivery mechanism;
- if the configuration flag is set, recording a virtual timer number as a global variable by the host system component, providing information to the hypervisor component when a virtual timer is expired; and
- processing the virtual timer number of the global variable in the host level by the hypervisor component.
- In a first possible implementation form of the method according to the fourth aspect, the method further comprises the step of: performing a virtualization specification for a physical interrupt taken in a hypervisor mode by the host system component. This advantageously provides a reduction of processing time by mapping a virtual interrupt for the guest OS.
- The processing or delivery time is the time measured between an expiration of virtual timer, which always causes physical IRQ that is trapped to hypervisor mode i.e. to EL2 mode, and the delivery of virtual timer to guest OS state. In other words, the processing or delivery time corresponds to the time measured between the time point of the expiration of virtual timer and the time point of the delivery of virtual timer to guest OS state.
- In a second possible implementation form of the method according to the fourth aspect as such or according to the first implementation form of the method according to the fourth aspect, the method further comprises the steps of: restoring a host OS state, marking an exit reason to a register and returning to the host OS state. This advantageously provides an improved performance of the virtual timer delivery to the guest OS.
- In a third possible implementation form of the method according to the fourth aspect as such or according to the any of the preceding implementation forms of the method according to the fourth aspect, the method further comprises the step of: performing a virtual timer performance optimization if an optimization flag is enabled. This advantageously provides an embedded mechanism for enhancing the virtual timer performance.
- The present invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations thereof, e.g. in available hardware of conventional mobile devices or in new hardware dedicated for processing the methods described herein.
- These and other aspects of the present invention will become apparent from and be elucidated with reference to the embodiments described hereinafter. A more complete appreciation of the present invention and the attendant advantages thereof will be more clearly understood with reference to the following schematic drawings.
- Further embodiments of the invention will be described with respect to the following figures, in which:
-
Fig. 1 shows a schematic diagram of a device for hardware virtualization support according to one embodiment of the present invention; -
Fig. 2 shows a schematic diagram of a flowchart diagram of a method for hardware virtualization support according to an embodiment of the invention; -
Fig. 3 shows a schematic diagram of a virtual timer delivery diagram in KVM based hypervisor according to one embodiment of the present invention; -
Fig. 4 shows a schematic diagram of modifications in the KVM hypervisor and the host system according to one embodiment of the present invention; -
Fig. 5 shows a schematic diagram of an example of virtual timer IRQ number in an ARM arch_timer device tree entry according to one embodiment of the present invention; and -
Fig. 6 shows a schematic diagram of an example of a GICv2 architecture diagram according to one embodiment of the present invention. - In the associated figures, identical reference signs denote identical or at least equivalent elements, parts, units or steps. In addition, it should be noted that all of the accompanying drawings are not to scale.
- The technical solutions in the embodiments of the present invention are described clearly and completely in the following with detailed reference to the accompanying drawings in the embodiments of the present invention.
- The present invention advantageously allows running several VMs on the same CPU, the advantage of the virtual timer delivery optimization can be achieved if one VCPU is running on single physical CPU.
- The present invention advantageously provides a mechanism that avoids, in case existing KVM hypervisor code has been modified, entering back to Host OS mode once virtual timer expires i.e. after virtual timer expiration of the Host OS. Thus, hypervisor mode loop can be avoided.
- Entering to hypervisor mode and back to Guest OS mode may still be performed because current ARM GIC architecture mandates to catch all physical interrupts in hypervisor mode. When a virtual timer may expire, hypervisor mode code path selects optimized virtual timer handling if Linux kernel compiler time option CONFIGURE_KVM_TIMER_OPTIMIZATION - flag is enabled.
- If the CONFIGURE_KVM_TIMER_OPTIMIZATION flag is enabled, then entering to the host OS state may be avoided. Instead a hypervisor return path to the guest OS state may be optimized such that when the hypervisor recognizes expiration of the virtual timer it may update the GIC list register directly and it may return back to the guest OS state. This way the delivery time of the virtual timer can be significantly improved.
- The method for hardware virtualization support describes a virtual timer delivery optimization.
- The GIC architecture may be used to define the architectural requirements for handling all interrupt sources for any processor connected to a GIC or to a common interrupt controller programming interface applicable to uniprocessor or multiprocessor systems.
- According to an exemplary embodiment of the present invention, the GIC architecture may be used as a centralized resource for supporting and managing interrupts in a system that includes at least one processor. The GIC architecture may provide registers for managing interrupt sources, interrupt behavior, and interrupt routing to one or more processors, support for the ARM architecture and software-generated or virtual interrupts.
- According to an exemplary embodiment of the present invention, a software based method to simplify and optimize virtual timer delivery time in KVM based hypervisor by avoiding unnessary store and load of Linux Host OS state is provided.
- According to an exemplary embodiment of the present invention, changes to the KVM hypervisor code are used and to the linux host OS code. According to an exemplary embodiment of the present invention, these modifications are optional and configurable via the linux kernel CONFIGURE_KVM_TIMER_OPTIMIZATION - compiler flag.
-
Fig. 1 shows a schematic diagram of a device for hardware virtualization support according to one embodiment of the present invention. -
Fig. 1 shows an embodiment of adevice 100 for hardware virtualization support, thedevice 100 comprises ahypervisor component 101 and ahost system component 102. - The
hypervisor component 101 is configured to launch a virtual machine VM and may be configured to exit and/or to enter a host level, wherein thehypervisor component 101 is configured to process the virtual timer number of the global variable in the host level. - The
host system component 102 is configured to process a configuration flag CF that enables an interrupt delivery mechanism, wherein thehost system component 102 is configured to record a virtual timer number as a global variable, if the configuration flag is set, providing information to thehypervisor component 101 when a virtual timer is expired. - The
host system component 102 may be configured to perform a virtual timer performance optimization if an optimization flag OF is enabled. - The
host system component 102 is configured to process a configuration flag CF in form of a CONFIGURE_KVM_TIMER_OPTIMIZATION - flag. -
Fig. 2 shows a schematic diagram of a flowchart diagram of a method for hardware virtualization support according to an embodiment of the invention. -
Fig. 2 describes virtual timer delivery optimization. According to an exemplary embodiment of the present invention, all steps S1 to S4 can be independent of each other. - As a first step S1 of the method, launching a virtual machine by a
hypervisor component 101 and exiting and/or entering a host level. - As a second step S2 of the method, processing a configuration flag CF by a
host system component 102 is conducted, wherein the configuration flag CF enables an interrupt delivery mechanism. - As a third step S3 of the method, if the configuration flag CF is set, recording a virtual timer number as a global variable by the
host system component 102 is performed, providing information to thehypervisor component 101 when a virtual timer is expired. - As a fourth step S4 of the method, processing the virtual timer number of the global variable in the host level by the
hypervisor component 101 is conducted. -
Fig. 3 shows a schematic diagram of a virtual timer delivery diagram in KVM based hypervisor according to one embodiment of the present invention. - According to an exemplary embodiment of the present invention, the
device 100 for hardware virtualization support may be configured to perform the following steps:
In step S10, triggered by a physical interrupt, the guest OS state is saved. In step S11, a hypervisor state is loaded. - A
query part 2000 may use a linux kernel compilation flag to select either fast or slow path of virtual timer delivery. Thequery part 2000 may comprise the following steps. - In step S12, it may be determined whether, the CONFIGURE_KVM_TIMER_OPTIMIZATION - flag is set.
- If yes, then the procedure may be continued with a
fast part 3000. If not, the procedure may be continued with aslow part 1000. The terms fast and slow may be used in relative respect to each other, e.g. defining that one part is faster or slower than the other. - For instance, if the kernel is not compiled to support CONFIGURE_KVM_TIMER_OPTIMIZATION - settings then the normal virtual timer delivery mechanism will be used i.e. slow path. Otherwise, the fast path will be used.
- The
slow part 1000 may comprise the following steps:
In step S13, loading the host OS state may be conducted. - Subsequently, in step S14, updating the KVM software GIC state may be conducted.
- In step S15, saving the host OS state may be conducted.
- Finally, in step S16, loading the hypervisor state may be conducted.
- The
fast part 3000 may comprise the following steps:
In step S20, updating virtual CPU GIC registers may be conducted. - Subsequently, in step S21, loading the guest OS state may be conducted.
-
Fig. 4 shows a schematic diagram of modifications in the KVM hypervisor and the host system according to one embodiment of the present invention. -
Fig. 4 shows the processes and steps performed between the linux host, the KVM hypervisor, and the guest virtual machine. According to an exemplary embodiment of the present invention, thedevice 100 for hardware virtualization support may be configured to perform the following steps: - The optimized virtual timer delivery mechanism may be enabled in the host OS:
- In step S22, applying virtual timer delivery optimization code to Linux host and KVM hypervisor code may be conducted.
- Subsequently, in step S23, selecting CONFIGURE_KVM_TIMER_OPTIMIZATION-compile option and compiling the host kernel may be conducted.
- In the following, in step S24, recording the virtual timer physical interrupt number may be conducted. This may trigger the guest virtual machine in step S30 to have the guest virtual machine running.
- Then, in step S25, configuring a single VM on single physical CPU based on normal Linux tools may be performed.
- Once a physical timer interrupt arrives in step S32, exiting to hypervisor mode may be conducted. Subsequently, it may be checked in step S40 if the CONFIGURE_KVM_TIMER_OPTIMIZATION flag is set.
- If yes, the procedure may be continued with step S41, if not with step S26.
- In step S26, load the host OS state may be conducted.
- Subsequently, in step S27, updating the KVM software GIC state may be performed.
- In the following, in step S28, saving the host OS state may be conducted.
- Then, in step S29, loading the hypervisor state may be conducted and the procedure may be resumed with step S42.
- In step S41, updating the VCPU GIC registers may be conducted.
- Subsequently, in step S42, loading the guest OS state may be performed.
- Finally, returning to the guest virtual machine VM may be conducted.
- The virtual timer IRQ number is recorded in timer device tree entry: third IRQ number in timer device tree entry specifies the virtual IRQ number that is delivered to hypervisor mode once virtual time expires.
- The virtual timer node in the device tree entry for arch_timers is shown in
Fig. 4 . - The hypervisor may know the used virtual interrupt number. This can be done in different parts of the linux host OS architecture timer setup. One option is to use for instance the following pseudo code flow:
- i). Specify global virt_irq_num - variable;
- ii). Specify Linux kernel compile time configuration option CONFIGURE_KVM_TIMER_OPTIMIZATION to enable virtual timer delivery optimization;
- iii). In arm_arch_timer.c in arch_timer_init() - function following code path records used virtual IRQ number:
#ifdef CONFIGURE_KVM_TIMER_OPTIMIZATION if(is_hyp_mode_available()) { virt_irq_num = arch_timer_ppi[VIRT_PPI]; } #endif.
Claims (8)
- Device (100) for hardware virtualization support, the device (100) comprising:- a hypervisor component (101) configured to launch a virtual machine, VM, running a guest operating system, OS, and configured to exit and/or to enter a host level;- a host system component (102) configured to process a configuration flag, CF, that enables an interrupt delivery mechanism;wherein the host system component (102) is configured to record, if the configuration flag is set, a virtual timer number as a global variable, providing information to the hypervisor component (101) when a virtual timer is expired; wherein the host system component (102) is configured to perform a virtualization specification for a physical interrupt taken in a hypervisor mode wherein the hypervisor component (101) is configured to process the virtual timer number of the global variable in the host level;wherein the host system component (102) is configured to restore a host OS state, to mark an exit reason to a register and to return to the host OS state;wherein, if an optimization flag, OF, is enabled, the hypervisor component (101) is configured to update a generic interrupt controller list register and to return back to the guest OS state, when the expiration of the virtual timer is detected.
- The device (100) according to claim 1, wherein the host system component (102) is configured to perform a virtual timer performance optimization if the optimization flag, OF, is enabled.
- The device (100) according to claim 2, wherein, if the optimization flag, OF, is enabled, the host system component (102) is configured to optimize a hypervisor return path to an guest OS state.
- The device (100) according to one of claims 1 to 3, wherein the hypervisor component (101) is configured to record a virtual timer IRQ number in a timer device tree entry.
- The device (100) according claim 4, wherein the hypervisor component (101) is configured to specify the virtual IRQ number.
- The device (100) according to claim 5, wherein the hypervisor component (101) is configured to specify the virtual IRQ number according to a physical IRQ number that is delivered to hypervisor mode once the virtual timer is expired.
- Method for hardware virtualization support, the method comprising the following steps of:- launching (S1) a virtual machine running a guest operating system, OS, by a hypervisor component (101) and exiting and/or entering a host level;- processing (S2) a configuration flag, CF, by a host system component (102), wherein the configuration flag, CF, enables an interrupt delivery mechanism;- if the configuration flag, CF, is set, recording (S3) a virtual timer number as a global variable by the host system component (102), providing information to the hypervisor component (101) when a virtual timer is expired;- processing (S4) the virtual timer number of the global variable in the host level by the hypervisor component (101); and.- performing a virtualization specification for a physical interrupt taken in a hypervisor mode by the host system component (102);wherein the method further comprises the steps of: restoring a host OS state, marking an exit reason to a register and returning to the host OS state;wherein, if an optimization flag, OF, is enabled, the hypervisor component (101) is configured to update a generic interrupt controller list register and to return back to the guest OS state, when the expiration of the virtual timer is detected.
- The method according to claim 7, wherein the method further comprises the step of: performing a virtual timer performance optimization if the optimization flag is enabled.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15176883.5A EP3118740B1 (en) | 2015-07-15 | 2015-07-15 | Device and method for hardware virtualization support |
PCT/CN2016/084570 WO2017008594A1 (en) | 2015-07-15 | 2016-06-02 | Device and method for hardware virtualization support |
CN201680041585.9A CN107924322B (en) | 2015-07-15 | 2016-06-02 | Apparatus and method for hardware virtualization support |
US15/456,100 US10394592B2 (en) | 2015-07-15 | 2017-03-10 | Device and method for hardware virtualization support using a virtual timer number |
US16/514,638 US11086655B2 (en) | 2015-07-15 | 2019-07-17 | Device and method for hardware virtualization support using a virtual timer number |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15176883.5A EP3118740B1 (en) | 2015-07-15 | 2015-07-15 | Device and method for hardware virtualization support |
Publications (2)
Publication Number | Publication Date |
---|---|
EP3118740A1 EP3118740A1 (en) | 2017-01-18 |
EP3118740B1 true EP3118740B1 (en) | 2021-09-08 |
Family
ID=53716345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP15176883.5A Active EP3118740B1 (en) | 2015-07-15 | 2015-07-15 | Device and method for hardware virtualization support |
Country Status (4)
Country | Link |
---|---|
US (2) | US10394592B2 (en) |
EP (1) | EP3118740B1 (en) |
CN (1) | CN107924322B (en) |
WO (1) | WO2017008594A1 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111897632B (en) * | 2019-05-05 | 2023-10-20 | 兆易创新科技集团股份有限公司 | Interrupt processing method and device, electronic equipment and storage medium |
CN112559117B (en) * | 2019-09-25 | 2024-06-07 | 阿里巴巴集团控股有限公司 | Timer processing method and device, electronic equipment and computer storage medium |
CN113986456B (en) * | 2021-10-14 | 2024-10-18 | 中汽创智科技有限公司 | Interrupt virtualization real-time processing method and device, storage medium and terminal |
US20230236901A1 (en) * | 2022-01-27 | 2023-07-27 | Red Hat, Inc. | Safe critical section operations for virtual machines with virtual central processing unit overcommit |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100399273C (en) * | 2005-08-19 | 2008-07-02 | 联想(北京)有限公司 | System of virtual machine, and method for configuring hardware |
US8621459B2 (en) * | 2006-12-22 | 2013-12-31 | Intel Corporation | Method and apparatus for multithreaded guest operating system execution through a multithreaded host virtual machine monitor |
US8479195B2 (en) * | 2007-05-16 | 2013-07-02 | Vmware, Inc. | Dynamic selection and application of multiple virtualization techniques |
US8261265B2 (en) * | 2007-10-30 | 2012-09-04 | Vmware, Inc. | Transparent VMM-assisted user-mode execution control transfer |
US7941688B2 (en) * | 2008-04-09 | 2011-05-10 | Microsoft Corporation | Managing timers in a multiprocessor environment |
CN101398768B (en) * | 2008-10-28 | 2011-06-15 | 北京航空航天大学 | Construct method of distributed virtual machine monitor system |
US8489789B2 (en) * | 2010-02-05 | 2013-07-16 | Advanced Micro Devices, Inc. | Interrupt virtualization |
CN102262557B (en) * | 2010-05-25 | 2015-01-21 | 运软网络科技(上海)有限公司 | Method for constructing virtual machine monitor by bus architecture and performance service framework |
CN103514043B (en) * | 2012-06-29 | 2017-09-29 | 华为技术有限公司 | The data processing method of multicomputer system and the system |
US9330035B2 (en) * | 2013-05-23 | 2016-05-03 | Arm Limited | Method and apparatus for interrupt handling |
US9355050B2 (en) * | 2013-11-05 | 2016-05-31 | Qualcomm Incorporated | Secure, fast and normal virtual interrupt direct assignment in a virtualized interrupt controller in a mobile system-on-chip |
-
2015
- 2015-07-15 EP EP15176883.5A patent/EP3118740B1/en active Active
-
2016
- 2016-06-02 WO PCT/CN2016/084570 patent/WO2017008594A1/en active Application Filing
- 2016-06-02 CN CN201680041585.9A patent/CN107924322B/en active Active
-
2017
- 2017-03-10 US US15/456,100 patent/US10394592B2/en active Active
-
2019
- 2019-07-17 US US16/514,638 patent/US11086655B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN107924322B (en) | 2021-02-12 |
US20190340008A1 (en) | 2019-11-07 |
US11086655B2 (en) | 2021-08-10 |
EP3118740A1 (en) | 2017-01-18 |
CN107924322A (en) | 2018-04-17 |
US10394592B2 (en) | 2019-08-27 |
WO2017008594A1 (en) | 2017-01-19 |
US20170185443A1 (en) | 2017-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086655B2 (en) | Device and method for hardware virtualization support using a virtual timer number | |
US7222203B2 (en) | Interrupt redirection for virtual partitioning | |
US9483639B2 (en) | Service partition virtualization system and method having a secure application | |
US10255090B2 (en) | Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels | |
US10162655B2 (en) | Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels | |
US8429669B2 (en) | Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status | |
US8230201B2 (en) | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system | |
US6772419B1 (en) | Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS | |
US9170803B2 (en) | Runtime patching of an operating system (OS) without stopping execution | |
US7941624B2 (en) | Parallel memory migration | |
RU2666249C2 (en) | Dispatching multiple threads in computer | |
US10019275B2 (en) | Hypervisor context switching using a trampoline scheme in processors having more than two hierarchical privilege levels | |
US20070136721A1 (en) | Sharing a kernel of an operating system among logical partitions | |
CN111858004A (en) | Real-time application dynamic loading method and system for computer security world based on TEE extension | |
JP2008510238A (en) | operating system | |
JP5710434B2 (en) | Method, information processing system, and processor for extensible state tracking of assist hardware threads | |
JPH09258980A (en) | Method and system for parallel multi-tasking | |
JP2016167143A (en) | Information processing system and control method of information processing system | |
JP6556747B2 (en) | Method, system, and computer program for exiting multiple threads in a computer | |
KR20130134581A (en) | Method and apparatus for supporting virtualization of loadable module | |
US11249777B2 (en) | Virtual machine context management | |
US9389897B1 (en) | Exiting multiple threads of a simulation environment in a computer | |
JP5131269B2 (en) | Multi-processing system | |
US11144329B2 (en) | Processor microcode with embedded jump table | |
US9959225B2 (en) | Computer apparatus and control method of computer apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION HAS BEEN PUBLISHED |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
AX | Request for extension of the european patent |
Extension state: BA ME |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
17P | Request for examination filed |
Effective date: 20170505 |
|
RBV | Designated contracting states (corrected) |
Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
17Q | First examination report despatched |
Effective date: 20180423 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: GRANT OF PATENT IS INTENDED |
|
INTG | Intention to grant announced |
Effective date: 20210401 |
|
GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE PATENT HAS BEEN GRANTED |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: EP Ref country code: AT Ref legal event code: REF Ref document number: 1429190 Country of ref document: AT Kind code of ref document: T Effective date: 20210915 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R096 Ref document number: 602015073045 Country of ref document: DE |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: LT Ref legal event code: MG9D |
|
REG | Reference to a national code |
Ref country code: NL Ref legal event code: MP Effective date: 20210908 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: NO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20211208 Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: FI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: LT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: BG Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20211208 Ref country code: HR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: SE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: RS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: MK05 Ref document number: 1429190 Country of ref document: AT Kind code of ref document: T Effective date: 20210908 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LV Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20211209 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20220108 Ref country code: SM Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: SK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: RO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: PT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20220110 Ref country code: PL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: NL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: EE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: CZ Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: AL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R097 Ref document number: 602015073045 Country of ref document: DE |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 |
|
26N | No opposition filed |
Effective date: 20220609 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MC Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: PL |
|
REG | Reference to a national code |
Ref country code: BE Ref legal event code: MM Effective date: 20220731 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LU Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220715 Ref country code: LI Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220731 Ref country code: CH Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220731 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: BE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220731 |
|
P01 | Opt-out of the competence of the unified patent court (upc) registered |
Effective date: 20230524 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20220715 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: HU Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO Effective date: 20150715 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 Ref country code: CY Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: GB Payment date: 20240530 Year of fee payment: 10 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: FR Payment date: 20240611 Year of fee payment: 10 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20210908 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: DE Payment date: 20240604 Year of fee payment: 10 |