[go: up one dir, main page]

CN119248660A - A hardware information access system - Google Patents

A hardware information access system Download PDF

Info

Publication number
CN119248660A
CN119248660A CN202411757065.0A CN202411757065A CN119248660A CN 119248660 A CN119248660 A CN 119248660A CN 202411757065 A CN202411757065 A CN 202411757065A CN 119248660 A CN119248660 A CN 119248660A
Authority
CN
China
Prior art keywords
hardware information
hardware
management component
display management
simulation program
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.)
Granted
Application number
CN202411757065.0A
Other languages
Chinese (zh)
Other versions
CN119248660B (en
Inventor
曹诚
夏春辉
甘勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Muxi Lingzhi Technology Hangzhou Co ltd
Original Assignee
Muxi Lingzhi Technology Hangzhou Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Muxi Lingzhi Technology Hangzhou Co ltd filed Critical Muxi Lingzhi Technology Hangzhou Co ltd
Priority to CN202411757065.0A priority Critical patent/CN119248660B/en
Publication of CN119248660A publication Critical patent/CN119248660A/en
Application granted granted Critical
Publication of CN119248660B publication Critical patent/CN119248660B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • G06F11/3612Analysis of software for verifying properties of programs by runtime analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及程序验证领域,特别是涉及一种硬件信息访问系统,系统包括:客户端及其对应的驱动程序、显示管理组件、硬件模拟程序,当驱动程序向显示管理组件发送访问请求以获取目标硬件信息时,采用预设的劫持手段劫持访问请求至硬件模拟程序,当访问请求满足预设条件时,由硬件模拟程序将目标硬件信息对应的模拟硬件信息返回至客户端,避免出现由于系统内不存在实体的硬件设备而导致显示管理组件无法获取到目标硬件信息,从而导致驱动程序出现异常的情况,保证了驱动程序运行的稳定性,而且,使用硬件模拟程序无需对驱动程序进行更改,在获取到实体硬件设备之后,可以直接使用驱动程序获取实体硬件设备的硬件信息,提高驱动程序验证的效率。

The present application relates to the field of program verification, and in particular to a hardware information access system, the system comprising: a client and its corresponding driver, a display management component, and a hardware simulation program. When the driver sends an access request to the display management component to obtain target hardware information, a preset hijacking method is used to hijack the access request to the hardware simulation program. When the access request meets the preset conditions, the hardware simulation program returns the simulated hardware information corresponding to the target hardware information to the client, thereby avoiding the situation where the display management component cannot obtain the target hardware information due to the absence of a physical hardware device in the system, thereby causing the driver to be abnormal, thereby ensuring the stability of the driver operation. Moreover, the use of the hardware simulation program does not require changes to the driver. After obtaining the physical hardware device, the driver can be directly used to obtain the hardware information of the physical hardware device, thereby improving the efficiency of driver verification.

Description

Hardware information access system
Technical Field
The invention relates to the field of program verification, in particular to a hardware information access system.
Background
In this case, if the driver of the client directly interacts with the display management component to obtain the hardware information in the chip verification scenario, the hardware information cannot be obtained because the driver does not have real hardware equipment, so that abnormal situations such as the driver is blocked, and further whether the written driver accords with the expected result cannot be verified smoothly.
Aiming at the problems, the prior art generally modifies the driver or the application program corresponding to the driver when the driver is abnormal, so as to ensure that the driver can normally run and verify, however, the modification behavior of the prior art on the driver ensures the running stability of the driver, but after the physical hardware device is acquired, the driver needs to be modified again by additional manpower, so that the verification efficiency of the driver is poor.
Therefore, how to improve the efficiency of driver verification on the premise of ensuring the running stability of the driver becomes a problem to be solved urgently.
Disclosure of Invention
Aiming at the technical problems, the invention adopts the following technical scheme:
A hardware information access system includes a client and its corresponding driver, a display management component, a hardware simulation program, a processor, and a memory storing a computer program that when executed by the processor, performs the steps of:
s101, when the driver program sends an access request to the display management component to acquire target hardware information, a preset hijack means is adopted to hijack the access request to the hardware simulation program;
s102, when the access request meets a preset condition, returning simulated hardware information corresponding to the target hardware information to the client by the hardware simulation program;
s103, when the access request does not meet a preset condition, the hardware simulation program sends the access request to the display management component;
s104, returning the target hardware information to the hardware simulation program by the display management component;
and S105, returning the target hardware information to the client by the hardware simulation program.
Compared with the prior art, the hardware information access system provided by the invention has obvious beneficial effects, can achieve quite technical progress and practicality, has wide industrial utilization value, and has at least the following beneficial effects:
The invention provides a hardware information access system, which comprises a client, a corresponding driver, a display management component, a hardware simulation program, a processor and a memory storing the computer program, wherein when the computer program is executed by the processor, the step S101 is realized, when the driver sends an access request to the display management component to acquire target hardware information, a preset hijack means is adopted to hijack the access request to the hardware simulation program, when the access request meets preset conditions, the hardware simulation program returns simulation hardware information corresponding to the target hardware information to the client, when the access request does not meet the preset conditions, the hardware simulation program sends the access request to the display management component, S104, the display management component returns the target hardware information to the hardware simulation program, S105, and the hardware simulation program returns the target hardware information to the client.
It can be known that, additionally, a hardware simulation program is constructed, when the driver sends an access request to the display management component to acquire target hardware information, the access request is hijacked to the hardware simulation program, the hardware simulation program returns the simulation hardware information corresponding to the target hardware information to the client, the situation that the display management component cannot acquire the target hardware information due to the fact that no entity hardware equipment exists in the system is avoided, and therefore the abnormal condition of the driver is caused is avoided, the running stability of the driver is ensured, the driver is not required to be changed by the hardware simulation program, after the entity hardware equipment is acquired, the hardware information of the entity hardware equipment can be directly acquired by the driver, and the verification efficiency of the driver is improved.
Drawings
In order to more clearly illustrate the technical solutions of the embodiments of the present invention, the drawings required for the description of the embodiments will be briefly described below, and it is apparent that the drawings in the following description are only some embodiments of the present invention, and other drawings may be obtained according to these drawings without inventive effort for a person skilled in the art.
Fig. 1 is a schematic flow chart of a computer program executed by a processor in a hardware information access system according to an embodiment of the present invention.
Detailed Description
The following description of the embodiments of the present invention will be made clearly and completely with reference to the accompanying drawings, in which it is apparent that the embodiments described are only some embodiments of the present invention, but not all embodiments. All other embodiments, which can be made by those skilled in the art based on the embodiments of the invention without making any inventive effort, are intended to fall within the scope of the invention.
The embodiment provides a hardware information access system, which comprises a client, a corresponding driver, a display management component, a hardware simulation program, a processor and a memory storing a computer program, referring to fig. 1, a flow diagram of the hardware information access system when the computer program is executed by the processor is provided, and when the computer program is executed by the processor, the following steps are implemented:
s101, when the driver program sends an access request to the display management component to acquire target hardware information, a preset hijack means is adopted to hijack the access request to the hardware simulation program;
S102, when the access request meets a preset condition, returning simulated hardware information corresponding to the target hardware information to the client by the hardware simulation program;
s103, when the access request does not meet a preset condition, the hardware simulation program sends the access request to the display management component;
s104, returning the target hardware information to the hardware simulation program by the display management component;
and S105, returning the target hardware information to the client by the hardware simulation program.
The hardware information access system may include at least one client, where the processing flows of the drivers corresponding to the respective clients are the same, and in this embodiment, a single client is described as an example.
In this embodiment, the display management component may refer to an X Server component in a Linux system, and may be used to manage graphics display, and is mainly responsible for processing graphics output and receiving events from an input device, and transmitting the events to a corresponding application program and so on.
The hardware simulation program may include a plurality of simulation hardware information, where the simulation hardware information and the target hardware information may both refer to hardware information corresponding to the physical hardware device of the GPU chip, and the target hardware information may refer to hardware information required by the access request, and the simulation hardware information may refer to hardware information included in the hardware simulation program.
Specifically, the driver may send a plurality of access requests to the display management component to obtain the target hardware information corresponding to each access request, and similarly, the processing flows corresponding to each access request are the same, and in this embodiment, a single access request is described as an example.
When the access request does not meet the preset condition, the target hardware information corresponding to the access request is not possibly the hardware information which is important to care, or the target hardware information can be acquired from the display management component, and at the moment, the hardware simulation program accesses the display management component to acquire the target hardware information, and then the target hardware information is returned to the client.
In a specific implementation manner, the preset condition is that the target hardware information has corresponding simulation hardware information in the hardware simulation program.
Because only part of hardware information is possibly required to be focused in the verification process of the driver, when the hardware simulation program is written, the simulation hardware information corresponding to the part of hardware information required to be focused can be only contained, when the target hardware information required by the access request is consistent with the simulation hardware information, the simulation hardware information corresponding to the target hardware information is directly returned to the client by the hardware simulation program, the driver does not need to access the display management assembly, and therefore the situation that the display management assembly cannot acquire the target hardware information due to the fact that no entity hardware equipment exists is avoided, and the driver is abnormal is further caused, and the running stability of the driver is ensured.
In a specific embodiment, the system further includes a GPU kernel, and step S104 further includes the steps of:
S1041, when the display management component contains the target hardware information, returning the target hardware information to the hardware simulation program by the display management component;
S1042, when the display management component does not contain the target hardware information, the GPU kernel is accessed by the display management component to acquire the target hardware information, and the target hardware information is returned to the hardware simulator.
The GPU kernel also contains part of hardware information, and when the display management component does not contain the target hardware information, the display management component accesses the GPU kernel to acquire the target hardware information.
In a specific embodiment, the computer program when executed by a processor further performs the steps of:
S201, when the display management component returns the target hardware information to the hardware simulation program, an abnormal situation occurs, and the target hardware information is updated to the hardware simulation program as simulation hardware information.
In the complex scenario of driver verification, there may be hardware information that needs to be focused on that is not present in the hardware simulation program as simulated hardware information, in such a case, when the display management component returns the target hardware information to the hardware simulation program, an abnormal condition occurs, and according to the abnormal condition, the target hardware information is updated to the hardware simulation program as simulated hardware information.
In a specific embodiment, the display management component includes a number of reference hardware information;
The hardware simulation program comprises simulation hardware information corresponding to all the reference hardware information respectively.
The reference hardware information may refer to hardware information that can be acquired by the display management component, the hardware simulation program includes simulation hardware information corresponding to all the reference hardware information, which may indicate that the simulation hardware information included in the hardware simulation program covers all the reference hardware information, and further includes hardware information that cannot be acquired by the display management component.
In a specific embodiment, when the system further includes a GPU chip, the display management component includes a plurality of pieces of reference hardware information corresponding to the GPU chip;
when the computer program is executed by a processor, the following steps are implemented:
s301, when the driver program sends an access request to the display management component to acquire target hardware information, the display management component returns reference hardware information corresponding to the target hardware information to the client.
Wherein, when the system further comprises a GPU chip, the entity hardware equipment containing the GPU chip in the system is represented, in such a case, a hardware simulation program is not needed, when the driver sends an access request to the display management component to acquire the target hardware information, the reference hardware information corresponding to the target hardware information is directly returned to the client by the display management component, and therefore, the display management component can display the target hardware information, in this embodiment, after the entity hardware device of the GPU chip is obtained, only the use of the hardware simulation program is turned off, and the driver can be directly used to access the display management component to obtain the reference hardware information of the entity hardware device, so that the driver is not required to be modified, the convenience of applying the driver to the entity hardware device is improved, and the efficiency of verifying the driver is also improved.
In a specific embodiment, the hijacking means at least comprise function pointer tampering and code injection.
The hijacking means can also comprise DLL hijacking, buffer overflow hijacking and the like, and an implementer can select proper hijacking means according to actual conditions.
It can be seen that, in this embodiment, a hardware simulation program is additionally built, when the driver sends an access request to the display management component to obtain the target hardware information, the access request is hijacked to the hardware simulation program, and the hardware simulation program returns the simulation hardware information corresponding to the target hardware information to the client, so that the situation that the display management component cannot obtain the target hardware information due to the fact that no entity hardware device exists in the system is avoided, and therefore, the abnormal condition of the driver is caused, the running stability of the driver is ensured, and the driver does not need to be changed by using the hardware simulation program, after the entity hardware device is obtained, the hardware information of the entity hardware device can be directly obtained by using the driver, and the verification efficiency of the driver is improved.
While certain specific embodiments of the invention have been described in detail by way of example, it will be appreciated by those skilled in the art that the above examples are for illustration only and are not intended to limit the scope of the invention. Those skilled in the art will also appreciate that many modifications may be made to the embodiments without departing from the scope and spirit of the invention. The scope of the invention is defined by the appended claims.

Claims (7)

1.一种硬件信息访问系统,其特征在于,所述系统包括:客户端及其对应的驱动程序、显示管理组件、硬件模拟程序、处理器和存储有计算机程序的存储器,当所述计算机程序被处理器执行时,实现以下步骤:1. A hardware information access system, characterized in that the system comprises: a client and its corresponding driver, a display management component, a hardware simulation program, a processor and a memory storing a computer program, and when the computer program is executed by the processor, the following steps are implemented: S101,当所述驱动程序向所述显示管理组件发送访问请求以获取目标硬件信息时,采用预设的劫持手段劫持所述访问请求至所述硬件模拟程序;S101, when the driver sends an access request to the display management component to obtain target hardware information, a preset hijacking method is used to hijack the access request to the hardware simulation program; S102,当所述访问请求满足预设条件时,由所述硬件模拟程序将所述目标硬件信息对应的模拟硬件信息返回至所述客户端;S102, when the access request meets a preset condition, the hardware simulation program returns the simulated hardware information corresponding to the target hardware information to the client; S103,当所述访问请求不满足预设条件时,由所述硬件模拟程序将所述访问请求发送至所述显示管理组件;S103, when the access request does not meet the preset condition, the hardware simulation program sends the access request to the display management component; S104,由所述显示管理组件将所述目标硬件信息返回至所述硬件模拟程序;S104, the display management component returns the target hardware information to the hardware simulation program; S105,由所述硬件模拟程序将所述目标硬件信息返回至所述客户端。S105: The hardware simulation program returns the target hardware information to the client. 2.根据权利要求1所述的硬件信息访问系统,其特征在于,所述预设条件为:所述目标硬件信息在所述硬件模拟程序中存在对应的模拟硬件信息。2 . The hardware information access system according to claim 1 , wherein the preset condition is that the target hardware information has corresponding simulated hardware information in the hardware simulation program. 3 . 3.根据权利要求1所述的硬件信息访问系统,其特征在于,所述系统还包括GPU内核,步骤S104还包括以下步骤:3. The hardware information access system according to claim 1, wherein the system further comprises a GPU core, and step S104 further comprises the following steps: S1041,当所述显示管理组件包含所述目标硬件信息时,由所述显示管理组件将所述目标硬件信息返回至所述硬件模拟程序;S1041, when the display management component includes the target hardware information, the display management component returns the target hardware information to the hardware simulation program; S1042,当所述显示管理组件不包含所述目标硬件信息时,由所述显示管理组件访问所述GPU内核,以获取所述目标硬件信息,将所述目标硬件信息返回至所述硬件模拟程序。S1042: When the display management component does not include the target hardware information, the display management component accesses the GPU kernel to obtain the target hardware information, and returns the target hardware information to the hardware simulation program. 4.根据权利要求1所述的硬件信息访问系统,其特征在于,当所述计算机程序被处理器执行时,还实现以下步骤:4. The hardware information access system according to claim 1, characterized in that when the computer program is executed by a processor, the following steps are further implemented: S201,当所述显示管理组件将所述目标硬件信息返回至所述硬件模拟程序时出现异常情况,将所述目标硬件信息作为模拟硬件信息更新至所述硬件模拟程序。S201, when an abnormal situation occurs when the display management component returns the target hardware information to the hardware simulation program, the target hardware information is updated to the hardware simulation program as simulated hardware information. 5.根据权利要求1所述的硬件信息访问系统,其特征在于,所述显示管理组件包括若干个参考硬件信息;5. The hardware information access system according to claim 1, wherein the display management component includes a plurality of reference hardware information; 所述硬件模拟程序中包括所有参考硬件信息分别对应的模拟硬件信息。The hardware simulation program includes simulation hardware information corresponding to all reference hardware information. 6.根据权利要求1所述的硬件信息访问系统,其特征在于,当所述系统还包括GPU芯片时,所述显示管理组件包含所述GPU芯片对应的若干个参考硬件信息;6. The hardware information access system according to claim 1, characterized in that when the system further includes a GPU chip, the display management component includes a plurality of reference hardware information corresponding to the GPU chip; 当所述计算机程序被处理器执行时,实现以下步骤:When the computer program is executed by a processor, the following steps are implemented: S301,当所述驱动程序向所述显示管理组件发送访问请求以获取目标硬件信息时,由所述显示管理组件将所述目标硬件信息对应的参考硬件信息返回至所述客户端。S301, when the driver sends an access request to the display management component to obtain target hardware information, the display management component returns reference hardware information corresponding to the target hardware information to the client. 7.根据权利要求1所述的硬件信息访问系统,其特征在于,所述劫持手段至少包括:函数指针篡改、代码注入。7. The hardware information access system according to claim 1, characterized in that the hijacking means at least include: function pointer tampering and code injection.
CN202411757065.0A 2024-12-03 2024-12-03 Hardware information access system Active CN119248660B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202411757065.0A CN119248660B (en) 2024-12-03 2024-12-03 Hardware information access system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202411757065.0A CN119248660B (en) 2024-12-03 2024-12-03 Hardware information access system

Publications (2)

Publication Number Publication Date
CN119248660A true CN119248660A (en) 2025-01-03
CN119248660B CN119248660B (en) 2025-05-30

Family

ID=94028247

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202411757065.0A Active CN119248660B (en) 2024-12-03 2024-12-03 Hardware information access system

Country Status (1)

Country Link
CN (1) CN119248660B (en)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6188975B1 (en) * 1998-03-31 2001-02-13 Synopsys, Inc. Programmatic use of software debugging to redirect hardware related operations to a hardware simulator
US20040088150A1 (en) * 1998-03-31 2004-05-06 Synopsys, Inc. System and method for hardware and software co-verification
US20040215440A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Simulation of hardware based on smart buffer objects
US20070288228A1 (en) * 2006-06-08 2007-12-13 Microsoft Corporation Partial virtualization on computing device
CN102110008A (en) * 2009-12-29 2011-06-29 联想(北京)有限公司 Mainboard attached equipment accessing method, virtual machine manager and computer
US20120054740A1 (en) * 2010-08-31 2012-03-01 Microsoft Corporation Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
CN104834576A (en) * 2015-04-30 2015-08-12 捷鼎国际股份有限公司 Computer system and method for hardware device testing based on virtual machine
CN117055875A (en) * 2023-08-07 2023-11-14 西安广和通无线软件有限公司 Data processing method, system, device, equipment and medium
WO2024139010A1 (en) * 2022-12-29 2024-07-04 深圳大普微电子科技有限公司 Solid-state drive controller, control method therefor, solid-state drive and solid-state drive system
CN118860878A (en) * 2024-07-12 2024-10-29 摩尔线程智能科技(北京)有限责任公司 Driver debugging method and device, electronic device and storage medium

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6188975B1 (en) * 1998-03-31 2001-02-13 Synopsys, Inc. Programmatic use of software debugging to redirect hardware related operations to a hardware simulator
US20040088150A1 (en) * 1998-03-31 2004-05-06 Synopsys, Inc. System and method for hardware and software co-verification
US20040215440A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Simulation of hardware based on smart buffer objects
US20070288228A1 (en) * 2006-06-08 2007-12-13 Microsoft Corporation Partial virtualization on computing device
CN102110008A (en) * 2009-12-29 2011-06-29 联想(北京)有限公司 Mainboard attached equipment accessing method, virtual machine manager and computer
US20120054740A1 (en) * 2010-08-31 2012-03-01 Microsoft Corporation Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
CN104834576A (en) * 2015-04-30 2015-08-12 捷鼎国际股份有限公司 Computer system and method for hardware device testing based on virtual machine
WO2024139010A1 (en) * 2022-12-29 2024-07-04 深圳大普微电子科技有限公司 Solid-state drive controller, control method therefor, solid-state drive and solid-state drive system
CN117055875A (en) * 2023-08-07 2023-11-14 西安广和通无线软件有限公司 Data processing method, system, device, equipment and medium
CN118860878A (en) * 2024-07-12 2024-10-29 摩尔线程智能科技(北京)有限责任公司 Driver debugging method and device, electronic device and storage medium

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
高永仁;: "Windows98/2000下MS-DOS应用程序对硬件设备访问", 信息技术, no. 12, 28 December 2005 (2005-12-28), pages 97 - 98 *

Also Published As

Publication number Publication date
CN119248660B (en) 2025-05-30

Similar Documents

Publication Publication Date Title
US9875192B1 (en) File system service for virtualized graphics processing units
CN111679893B (en) Operating system construction method and device, electronic equipment and storage medium
WO2020181810A1 (en) Data processing method and apparatus applied to multi-level caching in cluster
US20210081530A1 (en) Preventing selective events of a computing environment
CN111324615A (en) Data processing method, device, medium and electronic equipment
CN115174158B (en) Cloud product configuration checking method based on multi-cloud management platform
CN108733602B (en) data processing
CN109597697B (en) Resource matching processing method and device
CN111767114A (en) Method and device for creating cloud host, computer system and readable storage medium
CN111897728B (en) Interface debugging method and related equipment
CN119248660A (en) A hardware information access system
CN112182788A (en) Resource allocation method based on virtual simulation test platform
CN117852024A (en) Security audit method applied to distributed database and related equipment
CN114443290B (en) Resource data processing method and device, storage medium and electronic equipment
CN117472618A (en) Fault injection method, device, processor, storage medium and program product
CN117278604A (en) A system service publishing method, device, equipment and storage medium
CN111859403B (en) Dependency vulnerability determination method and device, electronic equipment and storage medium
CN115391703A (en) Interface information processing method and device
CN114547023A (en) Flow data processing method and device, computer equipment and storage medium
CN113239347A (en) Starting method and device suitable for TEE security application example
CN107741951B (en) Page data processing method and device and electronic equipment
CN117251118B (en) Virtual NVMe simulation and integration supporting method and system
CN112925801B (en) Method and system for implementing real-time query service based on SQL query statement
CN113347250B (en) Data access method, data access device, electronic equipment and readable storage medium
CN113220380B (en) Method, device, electronic device and storage medium for calling local native program

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant