IP Library › Granted Patent US 12,657,048
Granted Patent B2
US 12,657,048 · App. 18/185,296 · Granted Jun 16, 2026

Arbitrary destination callback invocation between a trusted execution environment and a virtual machine

Inventors: Carl Frans Van Schaik (Botany, AU); Christian Bolis (San Diego, CA); James Scott Anderson (San Diego, CA); Nicolas Andreas Beier (San Diego, CA); Nicholas Brandon Pelham (Escondido, CA)
Assignee: QUALCOMM Incorporated
G06F9/45558G06F2009/45575G06F2009/45587
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,657,048
App. No.
18/185,296
Granted
Jun 16, 2026
Kind
B2
Abstract

Systems and techniques are provided for providing access to one or more execution environments. For example, a process can include receiving a listen call from a first virtual machine (VM) and registering a listener call context of the first VM with a callback service of a trusted execution environment (TEE). A return code indicating no callback requests are available causes the first VM to put the listener call context to sleep. A call from a second VM raises a service request for a VM service of the first VM. A wake return code to the second VM wakes the listener call context of the first VM. A callback request transmitted to the VM service of the first VM corresponds to the service request raised by the second VM. A response call received from the VM service of the first VM is indicative of a callback response to the callback request.

Claims (65)

1 . A method for providing access to one or more execution environments, the method comprising:

receiving a listen call from a first virtual machine (VM) of a plurality of VMs, wherein the listen call registers a listener call context of the first VM with a callback service of a trusted execution environment (TEE);

returning, to the first VM, a return code indicating that no callback requests are available for the first VM, wherein the return code causes the first VM to put the listener call context to sleep;

receiving a call from a second VM of the plurality of VMs, wherein the call from the second VM raises a service request for a VM service of the first VM;

returning, to the first VM, a wake return code configured to wake the listener call context of the first VM;

transmitting, to the VM service of the first VM, a callback request corresponding to the service request raised by the second VM; and

receiving, from the VM service of the first VM, a response call indicative of a callback response to the callback request.

2 . The method of claim 1 , wherein the callback response comprises an output generated using the VM service of the first VM to process the service request raised by the second VM.

3 . The method of claim 1 , wherein one or more of the call from the second VM or the response call from the VM service of the first VM comprises a Secure Monitor Call (SMC).

4 . The method of claim 1 , wherein:

the return code is returned to the listen call from the first VM; and

the return code is a Secure Monitor call (SMC) wait-queue sleep return code.

5 . The method of claim 1 , wherein the wake return code is a Secure Monitor Call (SMC) wait-queue wake return code.

6 . The method of claim 1 , wherein returning the wake return code to the first VM comprises:

receiving, by a hypervisor associated with the plurality of VMs, the wake return code from the TEE; and

signaling, by the hypervisor, an interrupt request (IRQ) to the first VM, wherein the interrupt request wakes the listener call context of the first VM.

7 . The method of claim 6 , wherein the hypervisor signals the IRQ to a Secure Monitor Call (SMC) driver of the first VM or a TEE communications driver associated with the first VM.

8 . The method of claim 6 , wherein:

the IRQ is associated with the listener call context of the first VM or a TEE communications driver associated with the first VM; and

waking the listener call context of the first VM causes the listener call context to resume and listen for a queued service request for the VM service of the first VM.

9 . The method of claim 1 , wherein:

the callback request is received using the listener call context of the first VM;

the callback response is generated based on processing the callback request using the VM service of the first VM; and

the response call indicative of the callback response is transmitted to the TEE using the listener call context of the first VM.

10 . The method of claim 1 , wherein the TEE returns the return code to the first VM based on determining that no callback requests associated with the VM are posted in the TEE.

11 . The method of claim 1 , wherein the return code indicating that no callback requests are available for the first VM is a Secure Monitor Call (SMC) sleep return code.

12 . The method of claim 1 , wherein transmitting the callback request to the TEE registers the VM with an arbitrary destination callback invocation (ADCI) service of the TEE.

13 . The method of claim 1 , wherein the call from the second VM is returned to sleep in the second VM prior to the VM service of the first VM executing.

14 . The method of claim 13 , wherein the TEE transmits the callback request to the first VM based on determining that the call from the second VM has been returned to sleep.

15 . The method of claim 1 , wherein the plurality of VMs and the TEE are executed on a same computing device.

16 . The method of claim 1 , wherein the listen call registers the listener call context for a VM service handler of the first VM.

17 . An apparatus for providing access to one or more execution environments, the apparatus comprising:

at least one memory; and

at least one processor coupled to the at least one memory and configured to:

receive a listen call from a first virtual machine (VM) of a plurality of VMs, wherein the listen call registers a listener call context of the first VM with a callback service of a trusted execution environment (TEE);

return, to the first VM, a return code indicating that no callback requests are available for the first VM, wherein the return code causes the first VM to put the listener call context to sleep;

receive a call from a second VM of the plurality of VMs, wherein the call from the second VM raises a service request for a VM service of the first VM;

return, to the first VM, a wake return code configured to wake the listener call context of the first VM;

transmit, to the VM service of the first VM, a callback request corresponding to the service request raised by the second VM; and

receive, from the VM service of the first VM, a response call indicative of a callback response to the callback request.

18 . The apparatus of claim 17 , wherein the callback response comprises an output generated using the VM service of the first VM to process the service request raised by the second VM.

19 . The apparatus of claim 17 , wherein one or more of the call from the second VM or the response call from the VM service of the first VM comprises a Secure Monitor Call (SMC).

20 . The apparatus of claim 17 , wherein the at least one processor is configured to:

return the return code to the listen call from the first VM;

wherein the return code is a Secure Monitor call (SMC) wait-queue sleep return code.

21 . The apparatus of claim 17 , wherein the wake return code is a Secure Monitor Call (SMC) wait-queue wake return code.

22 . The apparatus of claim 17 , wherein, to return the wake return code to the first VM, the at least one processor is configured to:

receive, by a hypervisor associated with the plurality of VMs, the wake return code from the TEE; and

signal, by the hypervisor, an interrupt request (IRQ) to the first VM, wherein the interrupt request wakes the listener call context of the first VM.

23 . The apparatus of claim 22 , wherein the at least one processor is configured to:

signal, by the hypervisor, the IRQ to a Secure Monitor Call (SMC) driver of the first VM or a TEE communications driver associated with the first VM.

24 . The apparatus of claim 22 , wherein:

the IRQ is associated with the listener call context of the first VM or a TEE communications driver associated with the first VM; and

to wake the listener call context of the first VM, the at least one processor is configured to cause the listener call context to resume and listen for a queued service request for the VM service of the first VM.

25 . The apparatus of claim 17 , wherein the at least one processor is configured to:

receive the callback request using the listener call context of the first VM;

generate the callback response based on processing the callback request using the VM service of the first VM; and

transmit the response call indicative of the callback response to the TEE using the listener call context of the first VM.

26 . The apparatus of claim 17 , wherein the at least one processor is configured to:

return, by the TEE, the return code to the first VM based on determining that no callback requests associated with the VM are posted in the TEE.

27 . The apparatus of claim 17 , wherein the return code indicating that no callback requests are available for the first VM is a Secure Monitor Call (SMC) sleep return code.

28 . The apparatus of claim 17 , wherein, to transmit the callback request to the TEE, the at least one processor is configured to register the VM with an arbitrary destination callback invocation (ADCI) service of the TEE.

29 . The apparatus of claim 17 , wherein the at least one processor is configured to return the call from the second VM to sleep in the second VM prior to the VM service of the first VM executing.

30 . The apparatus of claim 29 , wherein the at least one processor is configured to:

transmit, by the TEE, the callback request to the first VM based on determining that the call from the second VM has been returned to sleep.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2023
From: VAN SCHAIK, CARL FRANS; BOLIS, CHRISTIAN; ANDERSON, JAMES SCOTT; BEIER, NICOLAS ANDREAS; PELHAM, NICHOLAS BRANDON
To: QUALCOMM INCORPORATED
Reel/Frame 063393/0812 →
Continuity (1)
Related Publication 20240311171A1 · Sep 19, 2024
References Cited (19)
US 9292712B2 · Ståhl · 2016 [cited by examiner]
US 9716710B2 · Vij · 2017 [cited by examiner]
US 11436318B2 · Li · 2022 [cited by examiner]
US 11726807B2 · Amit · 2023 [cited by examiner]
US 20080244569A1 · Challener · 2008 [cited by examiner]
US 20160080320A1 · Barakat · 2016 [cited by examiner]
US 20190042339A1 · Doshi et al. · 2019 [cited by applicant]
US 20210311643A1 · Shanbhogue · 2021 [cited by examiner]
US 20210389953A1 · Sharma · 2021 [cited by examiner]
US 20240338255A1 · Zhang · 2024 [cited by examiner]
US 20250208894A1 · Mai · 2025 [cited by examiner]
EP 1285354B1 · 2004 [cited by applicant]
JP 2020536321A · 2020 [cited by applicant]
WO 2021252141A1 · 2021 [cited by applicant]
Coulouris G., et al., “Distributed Systems: Concepts and Design (5th Edition)”, May 7, 2011, Addison-Wesley, US, XP055319910, pp. 223, 299, 696 Pages. [cited by applicant]
International Search Report and Written Opinion—PCT/US2024/018660—ISA/EPO—Jul. 31, 2024. [cited by applicant]
Wang J., et al., “XenLoop: A Transparent High Performance Inter-VM Network Loopback”, Proceedings of the 17th International Symposium on High Performance Distributed Computing, HPDC '08, ACM Press, New York, USA, Jun. 2… [cited by applicant]
Wang J., “Survey of State-of-the-art in Inter-VM Communication Mechanisms”, Research Proficiency Report, 2009, Sep. 27, 2009, pp. 1-25, XP055090654, cs.binghamton.edu, 1, 2, 3.1, 3.2, 3.3, 3.6. [cited by applicant]
Wang R., et al., “Efficient Asynchronous Communication between Virtual Machines in Embedded Systems”, 2017 IEEE 19TH International Conference on High Performance Computing and Communications, IEEE 15th International Con… [cited by applicant]