IP Library › Granted Patent US 12,596,563
Granted Patent B2
US 12,596,563 · App. 17/810,910 · Granted Apr 7, 2026

Physical hardware device access via emulation

Inventor: Sundareswaram Pallan Viswanathan (Bangalore, IN)
Assignee: Juniper Networks, Inc.
G06F9/45558G06F2009/45579
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,596,563
App. No.
17/810,910
Filed
Jul 6, 2022
Granted
Apr 7, 2026
Kind
B2
Examiner
LU, KEVIN X
Art Unit
2199
USPC
718/1
Abstract

A virtualization system may receive, by a physical hardware device driver of a kernel of a guest OS of the virtualization system and from a process of the guest OS, one or more control messages to control a physical hardware device. The virtualization system may determine, by the physical hardware device driver and based on the second-type physical hardware device address included in the one or more control messages, a first-type physical hardware device address associated with the physical hardware device. The virtualization system may update, by the physical hardware device driver, the one or more control messages to include the first-type physical hardware device address, and may send, by the physical hardware device driver and to an emulated physical hardware device of a hypervisor of a host OS of the virtualization system, the one or more control messages.

Claims (86)

1 . A non-transitory computer-readable medium storing a set of instructions, the set of instructions comprising:

one or more instructions that, when executed by one or more processors of a virtualization system, cause the virtualization system to:

receive, by a physical hardware device driver of a kernel of a guest operating system (OS) of the virtualization system and from a process of the guest OS, one or more control messages to control a low pin count (LPC) physical hardware device,

wherein the one or more control messages are peripheral component interconnect express (PCIEe) control messages that include a PCIe address associated with the LPC physical hardware device;

determine, by the physical hardware device driver of the kernel of the guest OS and based on the PCIe address included in the one or more control messages, an LPC address associated with the physical hardware device;

update, by the physical hardware device driver of the kernel of the guest OS, the one or more control messages to include the LPC address;

send, by the physical hardware device driver of the kernel of the guest OS and to an emulated physical hardware device of a hypervisor of a host OS of the virtualization system, the one or more control messages;

receive, by the emulated physical hardware device of the hypervisor of the host OS and from the physical hardware device driver of the guest OS, the one or more control messages;

send, by the emulated physical hardware device of the hypervisor of the host OS and to a hypervisor device driver of the hypervisor of the host OS, the one or more control messages; and

update, by the hypervisor device driver of the hypervisor of the host OS, the one or more control messages to be LPC control messages that include the LPC address associated with the physical hardware device.

2 . The non-transitory computer-readable medium of claim 1 ,

wherein sending the one or more control messages is to cause control of the physical hardware device by the process of the guest OS based on the one or more control messages.

3 . The non-transitory computer-readable medium of claim 1 , wherein the one or more instructions, when executed by the one or more processors, further cause the virtualization system to:

send, by the hypervisor device driver of the hypervisor of the host OS, to a kernel device driver of a kernel of the host OS, and based on updating the one or more control messages, the one or more control messages;

receive, by the kernel device driver of the kernel of the host OS and from the hypervisor device driver of the hypervisor of the host OS, the one or more control messages; and

send, by the kernel device driver of the kernel of the host OS and to the physical hardware device, the one or more control messages.

4 . The non-transitory computer-readable medium of claim 3 ,

wherein sending, to the physical hardware device, the one or more control messages is to cause control of the physical hardware device by the process of the guest OS based on the one or more control messages.

5 . The non-transitory computer-readable medium of claim 3 ,

wherein the one or more instructions, when executed by the one or more processors, further cause the virtualization system to:

receive, by the kernel device driver of the kernel of the host OS and from a process of the host OS, one or more other control messages to control the physical hardware device,

wherein the one or more control messages are LPC control messages that include the LPC address associated with the physical hardware device; and

send, by the kernel device driver of the kernel of the host OS and to the physical hardware device, the one or more other control messages.

6 . The non-transitory computer-readable medium of claim 5 ,

wherein sending, to the physical hardware device, the one or more other control messages is to cause control of the physical hardware device by the process of the host OS based on the one or more other control messages.

7 . The non-transitory computer-readable medium of claim 1 , wherein:

the LPC address associated with the physical hardware device is 8 bits; and

the PCIe address associated with the physical hardware device is 32 bits.

8 . A virtualization system, comprising:

one or more memories; and

one or more processors to:

receive, by a physical hardware device driver of a kernel of a guest operating system (OS) of the virtualization system and from a process of the guest OS, one or more control messages to control a physical hardware device,

wherein the physical hardware device is a first-type physical hardware device, and

wherein the one or more control messages are second-type physical hardware device control messages that include a second-type physical hardware device address associated with the physical hardware device;

determine, by the physical hardware device driver of the kernel of the guest OS and based on the second-type physical hardware device address included in the one or more control messages, a first-type physical hardware device address associated with the physical hardware device;

update, by the physical hardware device driver of the kernel of the guest OS, the one or more control messages to include the first-type physical hardware device address;

send, by the physical hardware device driver of the kernel of the guest OS and to an emulated physical hardware device of a hypervisor of a host OS of the virtualization system, the one or more control messages;

receive, by the emulated physical hardware device of the hypervisor of the host OS and from the physical hardware device driver of the guest OS, the one or more control messages;

send, by the emulated physical hardware device of the hypervisor of the host OS and to a hypervisor device driver of the hypervisor of the host OS, the one or more control messages; and

update, by the hypervisor device driver of the hypervisor of the host OS, the one or more control messages to be first-type physical hardware device control messages that include the first-type physical hardware device address associated with the physical hardware device.

9 . The virtualization system of claim 8 ,

wherein sending the one or more control messages is to cause control of the physical hardware device by the process of the guest OS based on the one or more control messages.

10 . The virtualization system of claim 8 ,

wherein the one or more processors are further to:

send, by the hypervisor device driver of the hypervisor of the host OS, to a kernel device driver of a kernel of the host OS, and based on updating the one or more control messages, the one or more control messages;

receive, by the kernel device driver of the kernel of the host OS and from the hypervisor device driver of the hypervisor of the host OS, the one or more control messages; and

send, by the kernel device driver of the kernel of the host OS and to the physical hardware device, the one or more control messages.

11 . The virtualization system of claim 10 ,

wherein sending, to the physical hardware device, the one or more control messages is to cause control of the physical hardware device by the process of the guest OS based on the one or more control messages.

12 . The virtualization system of claim 10 ,

wherein the one or more processors are further to:

receive, by the kernel device driver of the kernel of the host OS and from a process of the host OS, one or more other control messages to control the physical hardware device,

wherein the one or more control messages are first-type physical hardware device control messages that include the first-type physical hardware device address associated with the physical hardware device; and

send, by the kernel device driver of the kernel of the host OS and to the physical hardware device, the one or more other control messages.

13 . The virtualization system of claim 12 ,

wherein sending, to the physical hardware device, the one or more other control messages is to cause control of the physical hardware device by the process of the host OS based on the one or more other control messages.

14 . The virtualization system of claim 8 , wherein:

the first-type physical hardware device address has a first bit length;

the second-type physical hardware device address has a second bit length; and

the first bit length is different from the second bit length.

15 . A method, comprising:

sending, by a physical hardware device driver of a kernel of a guest operating system (OS) of a virtualization system and to an emulated physical hardware device of a hypervisor of a host OS of the virtualization system, one or more control messages to control a physical hardware device,

wherein the one or more control messages are second-type physical hardware device control messages that include a second-type physical hardware device address associated with the physical hardware device and a first-type physical hardware device address associated with the physical hardware device, and

wherein the physical hardware device is a first-type physical hardware device;

receiving, by the emulated physical hardware device of the hypervisor of the host OS and from the physical hardware device driver of the guest OS, the one or more control messages;

sending, by the emulated physical hardware device of the hypervisor of the host OS and to a hypervisor device driver of the hypervisor of the host OS, the one or more control messages;

updating, by the hypervisor device driver of the hypervisor of the host OS, the one or more control messages to be first-type physical hardware device control messages that include the first-type physical hardware device address associated with the physical hardware device;

sending, by the hypervisor device driver of the hypervisor of the host OS, to a kernel device driver of a kernel of the host OS, and based on updating the one or more control messages, the one or more control messages;

receiving, by the kernel device driver of the kernel of the host OS and from the hypervisor device driver of the hypervisor of the host OS, the one or more control messages; and

sending, by the kernel device driver of the kernel of the host OS and to the physical hardware device, the one or more control messages.

16 . The method of claim 15 ,

wherein sending, to the physical hardware device, the one or more control messages is to cause control, by a process of the guest OS, of the physical hardware device based on the one or more control messages.

17 . The method of claim 15 , further comprising:

receiving, by the kernel device driver of the kernel of the host OS and from a process of the host OS, one or more other control messages to control the physical hardware device,

wherein the one or more other control messages are first-type physical hardware device control messages that include the first-type physical hardware device address associated with the physical hardware device; and

sending, by the kernel device driver of the kernel of the host OS and to the physical hardware device, the one or more other control messages.

18 . The method of claim 17 ,

wherein sending, to the physical hardware device, the one or more other control messages is to cause control of the physical hardware device by the process of the guest OS based on the one or more other control messages.

19 . The method of claim 15 , wherein:

the second-type physical hardware device control messages are peripheral component interconnect express (PCIe) control messages; and

the first-type physical hardware device control messages are low pin count (LPC) control messages.

20 . The method of claim 15 , further comprising, prior to the physical hardware device driver of the kernel of the guest OS sending the one or more control messages to the emulated physical hardware device of the hypervisor of the host OS:

receiving, by the physical hardware device driver of the kernel of the guest OS, from a process of the guest OS, the one or more control messages,

wherein the one or more control messages include a second-type physical hardware device address associated with the physical hardware device;

determining, by the physical hardware device driver of the kernel of the guest OS and based on the second-type physical hardware device address included in the one or more control messages, the first-type physical hardware device address associated with the physical hardware device; and

updating, by the physical hardware device driver of the kernel of the guest OS, the one or more control messages to include the first-type physical hardware device address.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 6, 2022
From: VISWANATHAN, SUNDARESWARAM PALLAN
To: JUNIPER NETWORKS, INC.
Reel/Frame 060410/0696 →
Priority Claims (1)
IN 202241030890 · May 30, 2022 · national
Continuity (1)
Related Publication 20230385092A1 · Nov 30, 2023
References Cited (15)
US 11188376B1 · Alexander · 2021 [cited by examiner]
US 12155551B1 · Lamanna · 2024 [cited by examiner]
US 20120005521A1 · Droux · 2012 [cited by examiner]
US 20150116310A1 · Baudouin · 2015 [cited by examiner]
US 20150178111A1 · Warszawski · 2015 [cited by examiner]
US 20180336324A1 · Kodama · 2018 [cited by examiner]
US 20190303342A1 · Jen · 2019 [cited by examiner]
US 20200133876A1 · Bielski · 2020 [cited by examiner]
US 20210073025A1 · Duluk, Jr. · 2021 [cited by examiner]
US 20210149587A1 · Lukoshkov · 2021 [cited by examiner]
US 20210157651A1 · Duluk, Jr. · 2021 [cited by examiner]
US 20220029929A1 · Jain · 2022 [cited by examiner]
US 20220052904A1 · Howard · 2022 [cited by examiner]
US 20220138000A1 · Gepp · 2022 [cited by examiner]
US 20240045824A1 · Wang · 2024 [cited by examiner]