US 12,346,467 B2
Secure and efficient access to host memory for guests
Stefan Hajnoczi, St. Neots (GB); Vivek Goyal, Westford, MA (US); David Alan Gilbert, Manchester (GB); Steven John Whitehouse, Swansea (GB); and Miklos Szeredi, Piliscsaba (HU)
Assigned to Red Hat, Inc., Raleigh, NC (US)
Filed by Red Hat, Inc., Raleigh, NC (US)
Filed on Jan. 28, 2019, as Appl. No. 16/259,590.
Prior Publication US 2020/0242263 A1, Jul. 30, 2020
Int. Cl. G06F 21/62 (2013.01); G06F 9/455 (2018.01); G06F 9/50 (2006.01); G06F 9/54 (2006.01); G06F 12/1009 (2016.01); G06F 21/53 (2013.01); G06F 21/60 (2013.01)
CPC G06F 21/6218 (2013.01) [G06F 9/45558 (2013.01); G06F 9/5016 (2013.01); G06F 9/546 (2013.01); G06F 12/1009 (2013.01); G06F 21/53 (2013.01); G06F 21/604 (2013.01); G06F 2009/45579 (2013.01); G06F 2209/548 (2013.01); G06F 2221/2141 (2013.01)] 19 Claims
OG exemplary drawing
 
1. A system comprising:
(i) a processor, (ii) a host memory, (iii) a hypervisor including a filesystem daemon, and (iv) a guest including a storage controller and a first filesystem queue,
wherein the storage controller of the guest is configured to:
receive a first file request;
translate the first file request by at least converting the first file request into a first filesystem request in a format associated with a virtualized networking protocol and accepted by the filesystem daemon, wherein the converting comprises packing the first filesystem request in a message envelope based on the virtualized networking protocol compatible with the first filesystem queue, wherein the virtualized networking protocol comprises a paravirtualization protocol; and
add the first filesystem request to the first filesystem queue, wherein the filesystem daemon of the hypervisor is configured to:
retrieve the first filesystem request from the first filesystem queue; and
provide access to a first file in the host memory identified in the first file request to the guest, and
wherein the filesystem daemon is outside a userspace of the guest,
wherein the hypervisor is configured to:
map a host memory address associated with the first file to a guest memory address in the guest prior to loading the first file into the host memory at the host memory address, and
load the first file into the host memory, thereby resolving a page fault caused by the guest attempting to access the guest memory address.