IP Library Granted Patent US 9,740,518
Granted Patent B2
US 9,740,518 · App. 14/422,058 · Granted Aug 22, 2017

Conflict detection circuit for resolving access conflict to peripheral device by multiple virtual machines

Inventors: Markus Baumeister (Munich, DE); Frank Steinert (Rosenheim, DE)
Assignee: NXP USA, Inc.
G06F9/45558G06F9/5077G06F9/526G05B2219/2205G06F2009/45591
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 9,740,518
App. No.
14/422,058
Granted
Aug 22, 2017
Kind
B2
Abstract

A system-on-chip device comprises a core supporting a first virtual machine image and a virtual machine monitoring unit capable of communicating with the first virtual machine image. A shareable resource is also provided as well as a conflict detection unit capable of communicating with the virtual machine monitoring unit and the first virtual machine image. The conflict detection unit is arranged to detect, when in use, an access conflict caused by more than one virtual machine image attempting to access initially the shareable resource. The conflict detection unit is arranged to refer, when in use, the access conflict in response to detection thereof to the virtual machine monitoring unit for resolving of the access conflict, thereby handling the access conflict before the virtual machine monitoring unit.

Claims (47)

1. A processing device, comprising:

a first processor core supporting a first virtual machine;

a second processor core supporting a second virtual machine;

a hypervisor capable of communicating with the first and second virtual machines;

a peripheral device shareable between the first and second virtual machines through an interface of the peripheral device, the interface comprising a set of registers; and

a conflict detection circuit capable of communicating with the hypervisor and the first and second virtual machines,

wherein the conflict detection circuit is arranged to support a first and a second virtual image of the set of registers, each virtual image containing a set of register images each mapped to corresponding ones of the set of registers, wherein the first virtual image is associated with the first virtual machine and the second virtual image is associated with the second virtual machine,

wherein the conflict detection circuit is arranged to handle an access request to the peripheral device before the hypervisor by:

detecting an access conflict caused by a current write request by the second virtual machine to access a register of the peripheral device via the corresponding register image of the second virtual image, wherein the register was previously being accessed by the first virtual machine; and

referring the access conflict in response to detection thereof to the hypervisor for resolving the access conflict, wherein the hypervisor is bypassed in the absence of the access conflict;

wherein, the hypervisor is configured to merge data of the current write request with data previously stored by the first virtual machine, and to write the merged data to the peripheral device.

2. The processing device of claim 1 , wherein the first virtual machine comprises a first virtual machine image and the second virtual machine comprises a second virtual machine image.

3. The processing device of claim 2 , wherein the second virtual machine is arranged to bypass the hypervisor when attempting initial access of the peripheral device.

4. The processing device of claim 2 , wherein access by the first virtual machine and the second virtual machine to the peripheral device is identifiable to the conflict detection circuit by a first identifier and a second identifier associated with the first virtual machine and the second virtual machine, respectively, as opposed to by an address associated with the peripheral device.

5. The processing device of claim 1 , wherein at least one of the first and second virtual machines is arranged to bypass the hypervisor when attempting initial access of the peripheral device.

6. The processing device of claim 1 , wherein the conflict detection circuit is operably coupled to a memory for storing at least one data bit in response to receipt of an attempt to access the peripheral device, said data bit indicating the access in respect of the peripheral device.

7. The processing device of claim 6 , wherein the conflict detection circuit is arranged to refer to the memory in response to a detection of an attempt to access the peripheral device, in order to determine whether the attempted access constitutes, if permitted, the access conflict in respect of the peripheral device.

8. The processing device of claim 1 , wherein the conflict detection circuit is arranged to generate a trap into the hypervisor in response to a determination that the attempted access constitutes, if permitted, the access conflict.

9. The processing device of claim 1 , wherein the conflict detection circuit is arranged to provide more than one virtual image of the set of registers.

10. The processing device of claim 9 , wherein the access conflict is a conflict in respect of the more than one virtual machine accessing the same register of the peripheral device via different register images.

11. The processing device of claim 1 , wherein a memory operatively coupled to the conflict detection circuit is arranged to store data bits to identify access to the peripheral device via the first and second virtual image.

12. The processing device of claim 1 , wherein the peripheral device comprises a range of addresses of a register and the access conflict is in respect of more than one virtual machine accessing the same range of addresses of the peripheral device.

13. The processing device of claim 1 , wherein the conflict detection circuit to set a bit field in a memory to indicate that the peripheral device is being accessed by the first virtual machine.

14. A method of peripheral access for a plurality of virtual machines, the method comprising:

supporting a first virtual machine on a first processor core;

supporting a second virtual machine on a second processor core;

supporting a hypervisor capable of communicating with the first and second virtual machines;

supporting a peripheral device shareable between the first and second virtual machines through an interface of the peripheral device, the interface comprising a set of registers;

supporting a conflict detection circuit capable of communicating with the hypervisor and the first and second virtual machines,

wherein the conflict detection circuit is arranged to support a first and a second virtual image of the set of registers, each virtual image containing a set of register images each mapped to corresponding ones of the set of registers, wherein the first virtual image is associated with the first virtual machine and the second virtual image is associated with the second virtual machine,

wherein the conflict detection circuit is arranged to handle an access request to the peripheral device before the hypervisor by:

detecting an access conflict caused by a current write request by the second virtual machine to access a register of the peripheral device via the corresponding register image of the second virtual image, wherein the register was previously being accessed by the first virtual machine; and

referring the access conflict in response to detection thereof to the hypervisor for resolving the access conflict, wherein the hypervisor is bypassed in the absence of the access conflict;

wherein, the hypervisor is configured to merge data of the current write request with data previously stored by the first virtual machine, and to write the merged data to the peripheral device.

15. The method of claim 14 , further comprising:

setting a bit field in a memory operably coupled to the conflict detection circuit to indicate that the peripheral device is being accessed by a virtual machine.

16. A non-transitory computer program product for running on a programmable apparatus, at least including code portions for performing steps of a method when run on a programmable apparatus, the method comprising:

supporting a first virtual machine on a first processor core;

supporting a second virtual machine on a second processor core;

supporting a hypervisor capable of communicating with the first and second virtual machines;

supporting a peripheral device shareable between the first and second virtual machines through an interface of the peripheral device, the interface comprising a set of registers;

supporting a conflict detection circuit capable of communicating with the hypervisor and the first and second virtual machines,

wherein the conflict detection circuit is arranged to support a first and a second virtual image of the set of registers, each virtual image containing a set of register images each mapped to corresponding ones of the set of registers, wherein the first virtual image is associated with the first virtual machine and the second virtual image is associated with the second virtual machine,

wherein the conflict detection circuit is arranged to handle an access request to the peripheral device before the hypervisor by:

detecting an access conflict caused by a current write request by the second virtual machine to access a register of the peripheral device via the corresponding register image of the second virtual image, wherein the register was previously being accessed by the first virtual machine; and

referring the access conflict in response to detection thereof to the hypervisor for resolving the access conflict, wherein the hypervisor is bypassed in the absence of the access conflict;

wherein, the hypervisor is configured to merge data of the current write request with data previously stored by the first virtual machine, and to write the merged data to the peripheral device.

Assignments (15)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Jan 12, 2017
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 041414/0883 →
CHANGE OF NAME Recorded Nov 16, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040626/0683 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 7, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037458/0341 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 7, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037458/0359 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0974 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 4, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035571/0080 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 4, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035571/0112 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 4, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035571/0095 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2015
From: BAUMEISTER, MARKUS; STEINERT, FRANK
To: FREESCALE SEMICONDUCTOR INC.
Reel/Frame 034971/0883 →
Continuity (1)
Related Publication 20160117183A1 · Apr 28, 2016