WO1999019796A1 - Method and apparatus for accessing and executing the contents of physical memory from a virtual memory subsystem - Google Patents
Method and apparatus for accessing and executing the contents of physical memory from a virtual memory subsystem Download PDFInfo
- Publication number
- WO1999019796A1 WO1999019796A1 PCT/US1998/021228 US9821228W WO9919796A1 WO 1999019796 A1 WO1999019796 A1 WO 1999019796A1 US 9821228 W US9821228 W US 9821228W WO 9919796 A1 WO9919796 A1 WO 9919796A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- bios
- memory
- instruction sequences
- virtual
- virtual memory
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Definitions
- the present invention relates in general to memory in processor-based systems, and more particularly to an apparatus and method for accessing and executing the contents of physical memory from a virtual memory subsystem.
- virtual memory addressing In virtual memory subsystems, "virtual" memory addressing is employed in which the memory addresses utilized in software programs are mapped indirectly to locations in physical memory . Translation to physical addresses is typically accomplished by the processor, and such physical addresses are inaccessible to user mode software and the Basic Input/Output System (BIOS).
- BIOS Basic Input/Output System
- Windows NT which is manufactured and marketed by Microsoft. Inc.
- Windows NT incorporates a demand-paged virtual memory subsystem.
- the memory address space provided to a program running on the Windows NT operating system is safeguarded from other user mode programs just as other programs are protected from it. This ensures that user mode services and applications will not write over each other's memory, or execute each other ' s instructions.
- Kernel mode services and applications are protected in a similar way. If an attempt to access memory outside of a program's allocated virtual space occurs, the program is terminated and the user is notified.
- Virtual memory subsystems also prevent direct access by user mode software to physical memory addresses and to input/output devices that are part of a computer system.
- the present invention is an apparatus and method for accessing and executing instruction sequences in physical memory from virtual memory in a processor-based system.
- the apparatus comprises a memory for storing instruction sequences by which the processor-based system is processed, where the memory includes a physical memory and a virtual memory.
- the apparatus also comprises a processor for executing the stored instruction sequences.
- the stored instruction sequences include process steps to cause the processor to: map a plurality of predetermined instruction sequences from the physical memory to the virtual memory, determine an offset to one of the plurality of predetermined instruction sequences in the virtual memory, receive an instruction to execute the one of the plurality of predetermined instruction sequences, transfer control to the one of the plurality of predetermined instruction sequences, and process the one of the plurality of predetermined instruction sequences from the virtual memory.
- Figure 1 is a system block diagram of an exemplary processor system in which the apparatus and method of the present invention is used.
- Figure 2 is an overall functional block diagram illustrating the architecture of an operating system which utilizes the apparatus and method of the present invention.
- FIG. 3 is a block diagram illustrating the access driver 46 initialization process as provided in accordance with the principles of the present invention.
- Figure 4A is a flowchart illustrating one embodiment of the initialization process of the present invention.
- Figure 4B is a flowchart illustrating the details of process step S110 of Figure 4A.
- FIG. 4C is a flowchart illustrating the details of process step S130 of Figure 4A.
- Figure 5A is a flowchart illustrating the execution process of the present invention.
- FIG. 5B is a flowchart illustrating the details of process step S240 of Figure 5A. DETAILED DESCRIPTION OF THE PREFERRED INVENTION
- FIG. 1 illustrates an exemplary processor system 10 which implements the processes of the present invention.
- the processor system 10 comprises a CPU 12 and a memory module 14.
- the memory module 14 includes random access memory (RAM) 16 and read-only memory (ROM) 18.
- the memory module 14 also includes a main memory or a dynamic random access memory (DRAM) .
- the CPU 12 and memory module 14 are coupled to a system bus 20.
- the processor system 10 may also include various I/O and peripheral modules (MISC I/O #1, #2, ... #N) which are coupled along an I/O bus that is in turn coupled to the system bus 20. Examples of the peripheral modules include a console, a printer and a mouse.
- FIG. 2 is an overall functional block diagram illustrating the architecture of a processing system 10 utilizing the apparatus and method of the present invention.
- the processing system 10 comprises an operating system 30 which supports application programs 32 and services 34, Basic Input/Output System ("BIOS") 36 and system hardware 38.
- BIOS 36 is a collection of drivers, or software interfaces for hardware devices such as the console (keyboard and display) , a generic printer, the auxiliary device (serial port), the computer's clock and the boot disk device.
- the BIOS 36 is typically embedded in programmable, read only memory (PROM) . Often, the BIOS functions themselves are actually copied from PROM into RAM 16, taking advantage of the faster access times of RAM 16.
- PROM programmable, read only memory
- BIOS shadowing This is known as "shadowing" the BIOS 36 because two copies of BIOS 36 results: one in PROM (which will no longer be used) and the other in RAM 16.
- the portion of RAM 16 which stores the BIOS 36 is known as the BIOS shadow space.
- An operating system such as Windows NT makes no use of the BIOS 36 after the operating system has been booted and is running.
- the kernel level drivers in the Windows NT operating system interface directly with the system hardware.
- the present invention facilitates the use of the BIOS 36 as an interface between system hardware 38 and an operating system 32.
- the operating system 30 includes a class driver 40 which interfaces with the application programs 32 and services 34, and an I/O Manager 42.
- the I/O Manager 42 converts I/O requests from the application programs 32 and services 34 (made via the class driver 40) into properly sequenced calls to various driver routines located in the kernel 44.
- the I/O Manager 42 uses the function codes of the request to call one of several dispatch routines in a driver located in the kernel 44.
- the kernel 44 provides hardware- independent functions, called system functions, that are accessed by means of a software interrupt.
- the functions provided by the kernel 44 include file and directory management, memory management, character device input/output and time and date support, among others.
- the operating system is the Windows NT operating system.
- the operating system 30 includes the Solaris or the AIX operating systems or other operating systems based on demand-paged virtual memory subsystems .
- the present invention provides an access driver 46, located within the kernel 44, which is responsible for accessing BIOS data located in the BIOS 36 or for accessing system hardware 38 data via the BIOS 36.
- the access driver 46 is also responsible for accessing the location of a BIOS function address, as well as executing the associated BIOS function.
- the access driver 44 comprises source code written in the C language. It is understood that other assembly languages may be utilized in implementing the functions of the access driver 44.
- the BIOS data and addresses are typically located in physical memory 50 (typically in RAM 14a; see Figure 1) and are accessed by the access driver 46 via a BIOS Interface 48.
- the access driver 46 executes code in the BIOS shadow space, typically at physical addresses OxOOOEOOOO through OxOOOFFFFF.
- the access driver 46 needs co access BIOS functions located in physical memory at address 0x00000000. It makes a call to the I/O Manager 42, requesting it to map the memory space at physical address 0x00000000 through OxOOOOOFFF to its virtual memory space. The I/O Manager 42 then returns a pointer to the virtual memory space of the access driver 46, for example, 0xfd268000. The access driver may now reference the address space at physical address 0x00000000 by basing or referring its virtual addresses with 0xfd268000. Thus, the access a function located at physical address 0x400, the virtual address used would be 0xfd268400.
- a set of entry-points or functions calls are available to the application programs 30, services 32 or class driver 40 which utilize the access driver 46.
- the access driver 46 can be opened, closed, and can receive input/output ("I/O") control codes (“IOCTLs”) through these entry points.
- Table 1 illustrates the structure, entry points and applications for the access driver 46.
- FIG. 3 is a block diagram illustrating the access driver 46 initialization process as provided in accordance with the principles of the present invention.
- the access driver 46 when the access driver 46 is first loaded, its DriverEntry function (see Table 1) is executed.
- Table 1 the DriverEntry function
- a number of other initializations occur in this function (such as the allocation of various resources or objects for normal operation of the access driver 46)
- two particularly essential initializations occur: (a) the BIOS shadow area 60 (which includes a BIOS Service Directory 62) located in physical memory 50 and (b) the BIOS data area 64, also located in physical memory 50, are both mapped into the virtual memory (shown in Figure 3 as the BIOS shadow area 70 (which includes the BIOS Service Directory 72) and the BIOS data area 74) of the access driver 46.
- BIOS Power Management Service Interface may also be implemented for 64-bit, 128-bit and 256-bit configurations.
- the access driver 46 can also operate in 64-bit, 128-bit and 256-bit configurations.
- the access driver 46 locates the BIOS shadow area 60 and the BIOS data area 64 located in physical memory 50.
- the BIOS shadow area 60 and the BIOS data area 64 are mapped into the virtual address space of the access driver 46.
- the access driver 46 performs a search for the BIOS Service Directory 72 header.
- the access driver 46 obtains the virtual address of the BIOS Service Directory 72 header, which provides the offset of the BIOS Service Directory 72 header virtual address from the base virtual address of the BIOS shadow area 70.
- the access driver locates the BIOS shadow area 60, the BIOS data area 64 and the BIOS ROM area located in physical memory 50.
- the BIOS shadow area 60, the BIOS data area 64 and the BIOS ROM area are mapped into the virtual address space of the access driver 46.
- the access driver 46 performs a search for the BIOS Service Directory 72 header.
- the access driver 46 obtains the virtual address of the BIOS Service Directory 72 header.
- the availability of the BIOS ROM area in the virtual memory space of the access driver 46 enables the access driver 46 to read and/or write data in flash ROM.
- the BIOS ROM can be reflashed or rewritten.
- outside application programs which interface with hardware can access the BIOS ROM area through software mechanisms such as that described in the PhoenixPhlash NT specification provided in Appendix B.
- BIOS shadow area 70 calls to an execution function in the access driver 46 will utilize the base virtual address of the BIOS shadow area 70 and the offset to invoke a requested entry point in the BIOS itself. It should be noted that an application program 32 or service 34 may cause execution of the BIOS function anywhere in the BIOS' virtual address space, and not only through the BIOS Service Directory 72.
- the execution function that is called to invoke a requested entry point in the BIOS is the IOCTL_BIOS_EXEC function, which is described in Table 1.
- the IOCTL_BIOS_EXEC function creates a register stack in a buffer (which is specified by the calling application program 32 or service 34) located in main memory or DRAM. The contents of the stack are the desired register values at the time the BIOS function is invoked.
- the access driver 46 passes the register stack from the calling application program 32 or service 34.
- the procedure call itself is performed using a pointer to the function specified in the BIOS Service Directory 72.
- the BIOS function called by IOCTL_BIOS_EXEC accepts a 4-byte signature as an argument and locates the BIOS function associated with the signature. Values passed back to the calling application program 32 or service 34 include the base virtual address of the BIOS function, and the offset from the base address of the service's entry point.
- This entry point causes the driver to initialize its variables, map in the BIOS shadow and data areas, and to allocate resources for its normal operation. As each resource or object is allocated, it is tabulated into the variable 'phResAndFlags ' ; this allows a single function ( ' freeResources ' ) to free up resources used by the driver, no matter the reason for the driver being unloaded.
- the resources allocated or connected to are as follows:
- Map in the BIOS shadow - makes this memory space accessible in virtual memory to the driver.
- Map in the BIOS ROM - makes the ROM area accessible in virtual memory address space.
- Map in the BIOS Data - makes this memory space accessible in virtual memory to the driver.
- the device object name is 'Laptop', which is required in order to service the nexus functions required by the Microsoft OEM Adaptation Kit (OAK) .
- the corresponding symbolic link name is 'PhoenixADA
- This function is used to inform the driver 46 when an application program 32 or service 34 makes a request to the system for a device handle, or when it closes a handle already obtained.
- the Access Driver 46 responds to this dispatch entry point by completing the request successfully, but changing no other state variable of the driver 46.
- This dispatch entry point is called by the kernel on behalf of the Service Control Manager (SCM) or other application when it is necessary to remove the driver from the system (device close from (SCM) ) .
- SCM Service Control Manager
- the result of this function call is that all resources tabulated in 'phResAndFlags' are freed to the system and the request is completed successfully.
- the Access Driver 46 driver has the function of performing "nexus processing" for the power management model provided as part of the OEM Adaptation Kit (OAK) .
- This function is integral to the emulation of power management for OEM and standard devices having knowledge of and a requirement to use the OAK control methods .
- the AccessDriverReg function registers devices into a linked list. It also selectively "deregisters" devices on request. Typically OAK compliant device drivers will make the call for registration when their DriverEntry function is executed (when they are first loaded) . And as part of the DriverUnload function, each registered device must make the call to remove itself from Access Driver 46 's linked list of devices needing power management services .
- IOCTL Every interface between the service or application layer and the BIOS is handled by an IOCTL function in the Access Driver 46 driver. Each IOCTL transfer is performed in Buffered Mode, so that the input data to the driver and its output data are transferred through a common system buffer. The pointer to this buffer space is given in the Input/Output (I/O) Request Packet as Irp>AssociatedIrp.SystemBuffer . Upon being given control, the IOCTL (within the driver) will get the system buffer address and use its contents to perform the request. The results of the IOCTL function's execution will be placed in the same system buffer as was used for input .
- I/O Input/Output
- Each IOCTL that is implemented in the Access Driver 46 driver has a unique data format for IOCTL input data and for its output data. As the functions are described below, their data buffer formats and descriptions of each field are given. Buffer offsets are given in bytes. The minimum buffer size given for each function is a recommended malloc ( ) size to use for the application program's user buffers. System buffer sizes will automatically be derived from the user buffers.
- the IOCTL_Locate function is the first dispatch entry point to be called by the application program 32 or service 34 after the driver 46 initializes.
- the function returns the addresses of the BIOS32 Service Interface, the base address of the BIOS shadow area, and the base address of the BIOS Data Area, in flat-model virtual address format (32 bit addresses) .
- the BIOS32 Service Interface is the single entry point for all BIOS functions executed from the driver level or kernel threads (see Appendix A) .
- the BIOS32 Service Interface is the single entry point for all BIOS functions executed from the driver level or kernel threads (see Appendix A) . These address spaces are guaranteed to be accessible to this driver (only) during the time the Access Driver 46 driver is loaded.
- Input data None, do not rely on buffer contents
- Offset 4 PUCHAR - BIOS Shadow
- Offset 8 PUCHAR - BIOS Data Area
- Offset 8 PUCHAR - BIOS Data Area
- Offset 12 PUCHAR - BIOS ROM Area Base Virtual Address.
- the IOCTL BIOS_Read function is a general purpose reader of either the BIOS ROM, shadow area, or the data area.
- Bit 2: 1 ROM area (overrides Bit 0)
- Offset 4 PUCHAR - Offset into the BIOS area to start the read
- Offset 8 ULONG - Length of the read in bytes.
- Offset 0 ULONG - Length of the actual read
- Offset 4 UCHAR array - the actual data read
- the IOCTL_BIOS_Write function is a general purpose writer of either the BIOS ROM, shadow, or the data area.
- Bit 2: 1 ROM area (overrides Bit 0)
- Offset 4 PUCHAR - Offset into the BIOS area to start the write
- Offset 8 ULONG - Length of the write in bytes.
- the IOCTL_BIOS_Exec function is used to execute a BIOS function through the BIOS32 Service Interface.
- An activation record is passed by value in the system buffer.
- the AR determines the Base Architecture register contents upon invocation of the entry point to the BIOS. Upon successful completion, the AR contains the Base Architecture context that would normally have been returned to the BIOS caller.
- Input Data Offset 0: ULONG - - Function entry point virtual address .
- Offset 8 ULONG reserved
- Offset 12 ULONG reserved
- Offset 16 ULONG reserved
- Offset 20 ULONG reserved
- Offset 24 ULONG reserved
- Offset 28 ULONG reserved
- Offset 32 ULONG reserved
- Offset 36 ULONG reserved
- Offset 40 ULONG reserved
- Offset 56 ULONG EDX Register Offset 60: ULONG - ECX Register Offset 64: ULONG - EBX Register Offset 68: ULONG - EAX Register
- Output Data Contents of the system buffer are identical in structure. Register contents may have been influenced by the BIOS function requested. Min. Buffer Size: 80 bytes.
- the IOCTL_RTC_Read function is used to read the contents of the RTC registers in the CMOS RAM.
- the data from this atomic read is formatted similarly to the SYSTEMTIME structure and returned to the user in the System Buffer.
- Offset 12 WORD current second Offset 14:WORD current millisecond
- the Year field in the RTC is 8 bits wide.
- Legacy RTC devices do not provide the millisecond field in their register set. Because of this, the current millisecond field in the Output Data for this function will always be set to zero.
- the IOCTL_Version function returns to the caller the major, an minor version of the Access Driver 46 driver.
- the functions implemented by this version of the driver are enumerated in a bitmap.
- the purpose of the bitmap is for services or higher level drivers to evaluate whether or not this version of the driver can be used for their purposes (at installation time, typically) .
- Offset 4 ULONG Bitmap of implemented functions
- the IOCTL_PM_Suspend function causes IRP_MJ_PNP_POWER, IRP_MN_LT_SUSPEND IRP's to be sent to each device that has registered itself using the Access Driver DriverReg entry point.
- the IOCTL_PM_Resume function causes IRP_MJ_PNP_POWER, IRP_MN_LT_RESUME IRP's to be sent to each device that has registered itself using the Access Driver DriverReg entry point.
- the following table defines the error status returned when an IRP is unsuccessfully or only partially completed. Conditions of termination of the functions are given as well. This table is necessary because there is not necessarily a one-to-one correspondence between NTSTATUS values known by the operating system and those used by the Access Driver 46 device driver. In order to reverse translate the codes back into strings usable by an applications writer or an end-user, it is mandatory that only NTSTATUS error codes be used.
- BIOS 32-bit Service Directory In order for IOCTLJLocate to find the entry point for the BIOS, the BIOS 32-bit Service Directory is used. A description of the BIOS 32-bit Service Directory is described in Appendix C. The signature that Access Driver 46 will use when locating and executing BIOS functions shall be "_32_" .
- WinntEntry (BIOS32 Service Directory) structure is not found subject to the conditions stated above, the Access Driver 46 driver will fail at load time, and DriverEntry will indicate that it was unable to initialize as per Table 2.
- the RTC registers are located in the CMOS RAM's I/O address space. Only the RTC registers are shown in Table 3. The registers are accessed by outputting a CMOS RAM address to port 0x70, and then reading the subject 8 bit register at port 0x71. The CMOS RAM address is set to point to OxOD after all RTC register have been read.
- FIG. 4A is a flowchart illustrating one embodiment of the initialization process of the present invention. Beginning from a start state, the process S100 proceeds to process step S110, the variables for the calling program (i.e., the I/O Manager 42) are initialized. Details of this initialization process S110 are provided in Figure 4B and the accompanying text. The process S100 then proceeds to process step S120, where it loads the access driver 46. Initialization of the access driver variables then occurs.
- the calling program i.e., the I/O Manager 42
- BIOS shadow area 60 which includes a BIOS Service Directory 62 located in physical memory 50
- BIOS data area 64 also located in physical memory 50
- the BIOS shadow area 70 which includes the BIOS Service Directory 72
- BIOS data area 74 the BIOS data area 74
- the process S100 then advances to process step S130, where pointer initialization occurs. Details of the process step S130 are provided in Figure 4C and the accompanying text. The process S100 then advances to process step S140, where initialization ends. The process S100 then terminates.
- FIG. 4B is a flowchart illustrating the details of process step S110. Beginning from a start state, the process S110 proceeds to process step S112, where the calling program from the I/O Manager 42 allocates memory for a specified memory structure in the system buffer. The process S110 then advances to process step S114, where the calling program from the I/O Manager 42 determines the location of a number of BIOS functions, their corresponding entry points, lengths and offsets. In one embodiment, this is accomplished by entering the address field of the specified memory structure for the corresponding BIOS function with the virtual address of the BIOS function and by providing a 4-byte ASCII string identifying each BIOS function. Initialization of the calling program then terminates.
- FIG. 4C is a flowchart illustrating the details of process step S130 of Figure 4A. Beginning from a start state, the calling application program 32 or service 34, through the class driver, makes a call to IOCTL_Locate, as shown in process step S132. In response, the access driver 46 performs a search for the BIOS Service Directory 72 header, as shown in process step S134.
- the access driver 46 Upon finding and validating the BIOS Service Directory 72, the access driver 46 obtains the virtual address of the BIOS Service Directory 72 header, which provides the offset of the BIOS Service Directory 72 header virtual address from the base virtual address of the BIOS shadow area 70. The process S130 then returns control to the calling application program 32 or service 34.
- FIG. 5A is a flowchart illustrating the calling execution process of the present invention.
- the process S200 proceeds to process step S210, where the calling program calls a BIOS function by providing to the access driver 46, the address of the BIOS function it wants to begin execution at.
- the process S200 then proceeds to process step S220, where the access driver 46 receives a dispatch call to a BIOS function via an IOCTL command from the I/O Manager 42 (see Figure 2) .
- the process S200 then proceeds to process step S230, where the access driver 46 conducts a range check of the entry point address. In particular, the access driver 46 determines if the entry point address is within the range of addresses mapped to the BIOS shadow area, exclusive of the service directory header.
- the access driver 46 indicates that the starting virtual address is not within the range of addresses mapped from the physical memory to the virtual memory. This may be indicated through the use of a flag. If the range check is successful, the process S200 proceeds to process step S240, where the access driver 46 executes the BIOS function called. The process S200 then terminates.
- FIG. 5B is a flowchart illustrating the details of process step S240 of Figure 5A.
- the process S240 proceeds to process step S242, where the access driver 46 creates a register stack in a system buffer previously specified by the program from the I/O Manager 42.
- the process S330 then advances to process step S244, where the access driver 46 provides a pointer to the register stack which holds the address of the BIOS function to be executed.
- the process S240 then proceeds to process step S246, where the calling program from the I/O Manager 42 calls and executes the function whose beginning address is indicated by the pointer, using its physical address as mapped in virtual memory.
- the process S240 then terminates.
- the application program 32 or service 34 makes a call to the access driver 46 using the command IOCTL_Locate .
- the data returned by the access driver 46 includes the BIOS Shadow Area Base Virtual Address, the BIOS Service Directory offset from the BIOS Shadow Area Base Virtual Address, and the BIOS Data Area Base Virtual Address.
- a calling program from the I/O Manager 42 first allocates memory for a register structure, such as I0C_EXEC1 and then fills in the biosFunction field of the structure with the virtual address given by the IOCTL_Locate function.
- the other register values are filled in as follows: a 4-byte ASCII string identifying the BIOS service is loaded into the eax register and a zero is loaded into the ebx register.
- the caller invokes the IOCTL_BIOS_Exec function of the access driver 46 with the contents of the I0C_EXEC1 structure copied into the system buffer for the IOCTL call.
- the BIOS function is then executed.
- the IOCTL_BIOS_Exec function of the access driver 46 returns, with register values for eax, ebx, ecx and edx each containing responses from the service directory.
- the calling program of the I/O Manager 42 then takes the information returned from the service directory and creates a biosFunction entry point and a structure in the system buffer. It then calls the BIOS function using the IOCTL_BIOS_Exec function in the access driver 46. Returned data are passed in the same I0C_EXEC1 structure .
- Appendices D1-D3 Examples of the processes shown in Figures 4A 4B, 5A and 5B are illustrated in Appendices D1-D3.
- Appendix Dl illustrates exemplary source code for the application program 32, service 34 or class driver 40, used in calling a BIOS function through the class driver 46.
- Appendices D2 and D3 illustrate exemplary source code for the access driver 46.
- Appendix D2 illustrates exemplary source code for executing a BIOS function in the shadow area
- Appendix D3 illustrates exemplary source code for creating a register stack and for calling the entry point for executing the BIOS function.
- an apparatus and method for accessing and executing the contents of physical memory from a virtual memory subsystem is provided.
- the apparatus and method facilitates increased addressing capability for memory and input /output operations, and also allows execution of processor instructions in physical memory space.
- BIOS ROM BIOS Data Area and the 32-Bit Services for Services.
- PM Service Power Management Service
- BIOS32 Service Directory calling interface, specifying the 32-Bit BIOS Power Management Service Interface entry point.
- the 32-bit BIOS Service Directory is an existing structure within the Phoenix BIOS which allows a 32-bit protected mode application or operating system to find the entry point for a particular 32-bit service. This specification defines a new standard 32-bit BIOS Service.
- the BIOS32 Service Directory consists of a fixed structure which can be detected by the PM driver and a single function which returns the address for a particular service.
- BIOS32 Service Directory Header A BIOS which implements the BIOS32 Service Directory must embed a specific, contiguous 16-byte pattern somewhere in the physical address range OEOOOOh - OFFFFFh. The pattern must be paragraph aligned (i.e., it must start on a 16-byte boundary). This pattern is known as the BIOS32 Service Directory Header.
- the Header is comprised of six distinct fields. The following table describes each field.
- Clients of the BIOS32 Service Directory should first determine its existence by locating the Header. This is done by scanning OEOOOOh to OFFFFOh in paragraph increments and looking for a signature match ("_32_") in the first 4 bytes of each paragraph. When, and if, the signature is detected the client shouid perform a checksum of all bytes in the Header. (The Header length, in paragraphs, is found at offset 9h.) All bytes in the Header should ADD together with a result of Oh. If the checksum is valid then the 32-bit entry point field can be used as the address for the BIOS32 Service Directory Calling Interface. If the Header fc nm found then the BIOS32 Service Directory does not exist on the piatfo ⁇ n.
- BIOS32 Service Directory entry point and its associated code and data, maybe located anywhere w i thm the 4Gb physical address space. However, it is guaranteed to be physically contiguous (i.e. it will be del i vered ,n ROM or FLASH space) and to fit within two pages (i.e., it will not span three pages)
- the PM Driver must call the BIOS Service Directory with the following parameters:
- the entry point of the 32-bit Power Management Service code entry point is FAR (that is requiring both segment and offset to be pushed on the stack.)
- the base address must be less than or equal to the (4KB) page address of the page that contains the entry po i nt. For example, if the entry point is 0FFF81234h, then the base address must be less than or equal to 0FFF8 lOOOh.
- the limit must be such that the base address plus the limit generate an address that i s greater than or equal to the last address on the (4KB) page which follows the paee conta i n i ng the entry point. For example, if the entry point is 0FFF81234h then the base address plus the mu must be greater than or equal to 0FFF82FFFh.
- the base address and the l i m i t must • encompass" both the page that contains the entry point and the following page.
- the segment type must be 100b (code, execute only) or 101b (code, execute/read). However the
- the Default Size bit must be 1 (32 bits).
- Thtcsu ?TM mUSl be equal t0 the CS base addrcss' " ⁇ ,e ii il must be greater than or equal t0
- the segment type must be 000b (data, read only) or 001 (data, read/write). However, the i mpiementers of the Service Directory cannot assume write access to the DS data segment
- the system b i t must be 1 (non-system segment).
- the Descriptor Privilege Level (DPL) must be greater than or equal to CPL (see the DPL field in Section O).
- S SS The segment type must be 01 lb (data, read/write, expand-down) or 001b data, read/write, expand- up).
- the system bit must be 1 (non-system segment).
- the Descriptor Privilege Level (DPL) must be equal to the CPL (see the DPL field in Section 0).
- the Default Size bit must be 1 (32 bits).
- the Granularity bit must be 1 (4Kb).
- Paging may or may not be enabled. If paging is enabled, then the address space that is described by the CS and DS selectors must be iineariy contiguous. That is, the original physical contiguity of the Calling Interface as found in ROM or FLASH must be preserved. (The Calling Interface code and data is written to be position-independent and ElP-relative).
- IOPL I/O Privilege Level
- BIOS Data Area Extended BIOS Data Area and fixed-location ROM data tables cannot be assumed to be available for use by the executing code because of paging.
- the BDA may be accessed using the pointer provided by the caller.
- the 32-Bit BIOS Power Management Interface provides the same functionality as the 32-bit APM entry point. There are two areas of difference: the way in which calling parameters are passed and the way in which certain APM connect functions are supported.
- the APM 32-Bit Interface passes all parameters in CPU registers.
- the BIOS Power Management Service Interface passes the parameters on the stack.
- the equivalent C-style declaration would be: typedef s ruer ⁇
- regStruct ( regStruct* parameters) ;
- the actual APM function and its behavior will be determined by the value written in t he CMW « « -r
- the PhoenixPhlash flash utility will be used to program BIOS images into flash ROMs in AT compatible systems.
- the utility will consist of the following files:
- PHLASHNT XE used to program the flash ROM PLATFORM.DLL - used to perfo ⁇ n platform dependent functions BIOS.ROM - actual BIOS image to be programmed into flash ROM
- PHLASHNT.EXE the main module of the PhoenixPhlash utility, will contain all code which is platform independent It will contain user interface code, code to load and verify the PLATFORMJ5LL file and the platform independent portions of code to program a flash device.
- PHLASHNT.EXE will be a Win32 executable file, generated using Microsoft C++ V4.2 or later.
- PHLASHNT.EXE uses the C river C++ class which works in conjunction with the PhoenixAD driver to enable Windows NT user-mode applications to access I O ports; to access BIOS data and code area; and to execute BIOS32 services.
- the CDriver class provides a simple and flexible interface between the application program and the PhoenixAD driver:
- CDriver works in conjunction with the PhoenixAD driver to provide the following functions to user-mode application programs.
- PHLASHNT.EXE does not call the Pho e n i x n A • d i rectly; instead, it calls the me ⁇ ods in the CDriver class. « « « « ««* «> d ⁇ ver
- PHLASHNT.EXE will be started in a Windows MT - ⁇ ⁇ .- ,, ⁇ .. command line flags (if any). w i n d ows NT w i ndow, followed by optional
- OPERATION - Selects the operating mode for PHLASHNT.
- the following operating modes are currently supported:
- BIOS image (the normal operating mode).
- PHLASHNT replaces the current BIOS image with the new image.
- the DMI information in the system BIOS is maintained. This is the default mode and is selected if the MODE command line flag isn't present or if an operating mode isn't specified.
- PHLASHNT writes the strings specified via the DMI command line flags to the Flash.
- the DMI information in the system BIOS is maintained unless new DMI strings are specified on the command line.
- BIOS ROM NEW (different) - Proceed only for different version of BIOS ROM. If the data structure at BCPSYS, which includes BIOS version and build date &. time, is same as the corresponding structure in the BIOS.ROM file then the programs terminates without flashing.
- BIOS PART NUMBER CHECK - Proceed only if the BIOS part number in BIOS.ROM is the same as the part number in the current BIOS. PF "list of options"
- Command line options to be passed to the platform dependent module PLATFORM.DLL On some platforms it may be desirable to pass command line options to the platform dependent procedures. This is done via the CmdLineO function. When both the CmdLineO address is non-zero and this command line option is present, then the string immediately following the equal sign will be passed to PJ ATFORM.DLL (enclose the string in double quotes if the string includes spaces).
- the /Rn option can be used in crisis mode by setting psiRetryCount with the desired retry count in PLATFORM.CPP.
- BIOS ROM image file name Any command line option without the leading back-slash will be interpreted as the file name for the BIOS ROM image file.
- a filename is only required when necessary to specify a full path for the ROM BIOS image and/or the ROM BIOS image file is different than BIOSJIOM.
- Any of the command line options described above may be placed in a response file.
- PHLASHNT will read the file and process the options as though they were entered on the command line.
- the options may be placed on a single line or on separate lines. Each line may be up to 1024 characters in length.
- DMI command line flags are used to write information to Flash for later retrieval through the Phoenix Desktop Management Interface (DMI). DMI command line flags are ignored if the target BIOS image does not support the DMI interface (doesn't have a DMI BCP structure installed) or the PHLASHNT operation mode is BIOS only (see above). 19796
- DMI command line flags are optional; Le., if a given DMI command line flag isn't specified, the previous contents of the corresponding DMI string buffer aren't modified, unless a default string is specified in PLATFORM.DLL. In this case, PHLASHNT always writes the default string to the corresponding DMI string buffer. If a DMI command flag is specified without the String field, the corresponding DMI string buffer is cleared (set to a null string). String can only contain printable ASCII characters. String must be enclosed in quotes if it contains spaces. The maximum length of each DMI string is platfoira specific; PHLASHNT returns an error if the passed string is longer than the corresponding target buffer. The following DMI fields are currently supported. These options are not displayed by the help (IH) option for security reasons.
- IH help
- IDMSString Specifies the system manufacturer's name string.
- IDPSString Specifics the system product (model) identification string.
- IDMSS' tring Specifies the system version string.
- IDSMString Specifies the motherboard serial number string.
- IDMMString Specifies the motherboard manufacturer's name string.
- IDPMString Specifics the motherboard product (model) identification string.
- IDVMString Specifies the motherboard version string.
- IDSCStrwg Specifies the chassis serial number string.
- IDMCStr ⁇ tg Specifies the chassis manufacturer's name string.
- IDPCString Specifies the chassis product (model) identification string.
- IDVCString Specifies the chassis version string. DO 1 String Specifies OEM string 1.
- IDOnString Specifies OEM string n.
- the system and chassis switches arc available only with DMI version 2.0.
- IDSString Specifies the motherboard serial number string.
- IDMString Specifies the motherboard manufacturer's name string.
- IDVString Specifies the motherboard version string.
- PLATFORM.DLL will indicate memory region where the BIOS ROM image is to be loaded in memory and will indicate what memory regions to use for the flash device. Memor regions may be in conventional memory or in extended memory. After the ROM image is loaded in memory device programming begins.
- Video will be updated at least once every second. The sound will be generated approximately every second. Note that in production environment progress update can be disabled.
- DisableFlashO is executed from the PLATFORM.DLL file.
- One of two distinct sounds will be generated to indicate success or failure of the flash process. If video is available, an appropriate message window will be displayed. After a short pause system is re-booted.
- flash memory parts require that the flash memory is s t to all ones before the part can be programmed. These parts often allow erasure of a full block of flash memory with a single write operation. In this module will be the code necessary to set memory range to ones.
- descriptors When block descriptors are defined in the PLATFORMJDLL file, descriptors must be set up so that there is at least one descriptor for each "erasable" block in the flash memory. For example in Intel 28F004 flash memory there is one l ⁇ kByte BOOT block, two 8kByte PARAMETER blocks, one 6kByte MAIN block and three 128kByte EXTENDED blocks. Each of the seven blocks can be erased with a single write and there must be at least one descriptor for each of the seven blocks.
- Initial set of flash memory devices supported by PHLASHNT.EXE will include the parts listed in the table below. For each part type a manufacturer and part ID and part description is listed. As new parts become available it may be necessary to add additional modules lo PHLASHNT.EXE so that a new type of flashing algorithm is provided (new AutoDeteciO, ZeroQ. Erase() and ProgramO functions). If it is possible for the new part to use one of the existing algorithms and only the Manufacturer or Part ID changes, then this can be indicated in the PLATFORM.DLL file and no modification of PHLASHNT.EXE is needed (see section on PartTypes for more detail).
- This module contains all platform dependent code and parameters needed to program a flash device on a particular platform.
- PLATFORM.DLL is a Windows DLL that is produced by compiling PLATFORM.CPP (using Microsoft Visual C++ 42 or later). It contains specific platform data and executable code. A sample source code of the PLATFORM.CPP file is included in Appendix B3.
- the PLATFORM.DLL file will havethe formatdescribed below:
- FLAG IMAGESIZE Verify image size matches flash part dwImageBuf Address for BIOS.ROM image buffer in e en d ,-, « .-. • « •
- BYTE eMfgID // Manufacturer ID BYTE cPartID; // Part ID WORD wFlashType; // Flash algorithm type char szPartName (28] ; ) DEVICETABLE; // Optional description
- BIOS.ROM image many platforms allow the same BIOS.ROM image to be used with several different flash parts. This table is used when a new part becomes available, the part is not among.-the parts currently supported by PHLASHNT.EXE and the part uses the same flashing algorithms as one of the supported parts.
- a sample source code for PLATFORM.DLL file is shown in Appendix B3.
- Block table consists of a list of block descriptors, Each block descriptor in the block table is defined by the following structure: typedef struct (
- DWORD dwBlockSize // Number of bytes in the block DWORD d Fil ⁇ Offset; // Offset within BIOS .
- the block table is terminated by a descriptor with all entries set to zero.
- dwBlockSize Block Size in bytes. Blocks must be contiguous.
- dwFUeOfiset Offset of this block within the BIOS.ROM file.
- dwLinearAd dress Starting address of this block in 32-bit address space cMfgID Manufacturer ID or zero to auto-sense.
- wBIockAttr Determines actions to be taken for this block. Must be a combination of the following flags:
- ATTR ZERO Block must be zeroed before programming
- Each ATTR SAVE block must be followed by an ATTR RESTORE block before another ATTR SAVE block can beuseH. ""
- the block table will be used to support multiple device flashing and multiple blocks within each device.
- the ROM image file must contain the images for all flash pans to be programmed and the Block Table must contain proper offsets and lengths for each block of data to be flashed.
- PHLASHNT.EXE will call function BeginFIash(BlockJndex) to allow PLATFORM.DLL to perform any such set-up. It is the responsibility " of BeginFlashO & EndFlashO functions to perform any initialization or termination between blocks as needed.
- Flash parts are erased by a small number of write operations, one for each memory block.
- Intel 2SF400 flash memory has seven blocks (one 16k boot block, two 8k parameter blocks, one 64k main block and three 128k extended blocks). This part can be erased widi only seven write operations.
- erase function may erase 64k of flash memory at a time, regardless of division of this range into boot and parameter blocks. In such cases it is important that there are three block descriptors for such a 64k range of memory.
- the first block descriptor in the table is used to save boot block, second block descriptor to erase and r parnoggera. m the parameter blocks and the third descriptor to restore the boot block in this
- This optional function is called after the last block has been programmed (or error was detected). It will be called immediately before PHLASHNT.EXE exits (typically as a last call before re-boot). It should perform all functions necessary to be able to cl ⁇ aniv re- 19796
- Actions typically performed by this function include:
- Actions typically performed by this function include:
- Buffer is filled with the next block of existing BIOS ROM image
- PHLASHNTJ ⁇ XE This optional function is called by PHLASHNTJ ⁇ XE whenever the /BACKUP flag is specified.
- GetBlockO is used to assist when saving the existing content of the flash memory before the flash memory is changed. Because many BIOS images are decompressed into shadow RAM, it is not always possible for PHLASHNT 3GE to access all of the BIOS ROM image without platform dependent system setup. Function GetBlockO is necessary to allow for platform dependent accessing of the existing BIOS ROM image. BIOS ROM image is saved by PHLASHNT.EXE using the following steps:
- GetBlockO It is the responsibility of the GetBlockO implementation to ensure that the platform is in a proper state to allow the GetBlockO to copy BIOS ROM image into the buffer and that the platform is restored to the original mode before GetBlockO returns control to PHLASHNT.EXE.
- GetBlockO is called before a call is made to EnableFlashO-
- the buffer pointer passed to GetBlockO is always in the real memory range below 640k, to allow direct transfer to disk.
- the AutoSenseO function enables auto detection of memory flash parts when "non-standard" memory organization is used for the flash memory. For example when two separate parts are used for even and odd BIOS addresses (in which case the conventional auto detect mechanism will fail), this function can be used to obtain and verify ID for each of the parts.
- IDs are one byte long and are packed into a DWORD, with manufacturer ID in BYTE 0 and device ID in BYTE 1.
- This optional function is called before EnableFlashO to determine if it is ok to proceed. If the function returns a nonzero error code, the string szErrorMsg is d ⁇ spiayed and the program terminates. Up to 254 bytes plus a terminating NULL may be returned in szErrorMsg.
- This optional function is called after programming is complete to reset the system. If provided, this is called instead of PHLASHNPs own reboot code.
- BIOS ROM image checksum for a NuBIOS image is zero. This routine may be used to provide an altemative checksum verification method when it is known that the ROM image checksum will not be zero. If this function returns non-zero, PHLASHNT will terminate.
- This function returns the contents of the global variable . ' .dwFileSize from PLATFORM.DLL.
- This function returns the contents of the global variable bManufactID from PLATFORM.DLL.
- This function returns the contents of the global variable bPartID from PLATFORM.DLL.
- This function returns the contents of the global variable dwFlags from PLATFORM.DLL.
- This function returns the contents of the global variable dwImagcBuf from PLATFORM.DLL.
- This function returns the contents of the global variable dwPartlDAddr from PLATFORM.DLL.
- This function returns the contents of the global variable bRetryCount from PLATFORM.DLL.
- This function returns the contents of the global variable bblockTableSize from PLATFORMJDLL.
- This function retums the contents of the global variable bpa ⁇ TypesSize from PLATFORM.DLL.
- This function returns the address of the global structure partTypes from PLATFORM.DLL.
- This function retums the contents of the global variable szVersion from PLATFORM.DLL.
- This function retums the contents of the global variable dwDLLFuncDefine from PLATFORM.DLL.
- the ROM image file size must be large enough to contain all blocks in the flash device(s) to be programmed. Any required post-processing of the BIOS image, such as boot block swapping or data compression, must be already incorporated into the ROM image file.
- BIOS ROM file may not be used with this system
- D3h BIOS ROM file may be corrupt (checksum not zero)
- prlncf CGetBlock dwindex, wDst passed in»»d, %d ⁇ n", dwindex, dwost ) / // (stub ) raturn 0;
- BIOS32 Service Directory This paper presents a proposal for a new BIOS service, which will be known as the BIOS32 Service Directory.
- the new service will provide information about those services in d e BIOS that are designed for callers running in a 32-bit code segment.
- BIOS32 Service Directory will itself be a 32-bit BIOS service.
- the expected clients of mis service are 32-bit operating systems and 32-bit device drivers.
- the expected providers of this service are BIOS vendors thai implement one or more 32-bit BIOS services.
- BIOS32 Service Direc t oiy has two components: the Header and t h e Call . nie.
- BIOS which implements the BIOS32 Service Dir ⁇ orv mus t « « ⁇ , A •*
- IT.- Header is comprised of six distinct fields. Tie following able describes each field.
- BIOS32 Service Directory existence has been determined (via the Header test- above) then the 32-bit physical address found in the Header can be used as the entry point to the Calling Interface. Clients should CALL FAR to this address.
- the client's raiting environment has the following requirements.
- the CS code segment selector must be set up with a segment descriptor with the following values:
- the base address must be less than or equal to the (4kb) page address of the page that contains the entry point For example, if the entry point is 0FFF81234h then the base address must be less than or equal to 0FFF81000h.
- the limit must be such that the base address plus the limit generate an address that is greater than or equal to the last address on the (4kb) page which follows the page containing the entry point For example, if the entry point is 0 FF81234h then the base address plus the limit must be greater than or equal to 0FFF82FFFh.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
Description
Claims
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| AU97929/98A AU9792998A (en) | 1997-10-09 | 1998-10-09 | Method and apparatus for accessing and executing the contents of physical memoryfrom a virtual memory subsystem |
| JP2000516281A JP2001520416A (en) | 1997-10-09 | 1998-10-09 | Method and apparatus for accessing and executing the contents of physical memory from a virtual memory subsystem |
| GB0008472A GB2345996B (en) | 1997-10-09 | 1998-10-09 | Method and apparatus for accessing and executing the contents of physical memory from a virtual memory subsystem |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US94799097A | 1997-10-09 | 1997-10-09 | |
| US08/947,990 | 1997-10-09 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO1999019796A1 true WO1999019796A1 (en) | 1999-04-22 |
Family
ID=25487093
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US1998/021228 Ceased WO1999019796A1 (en) | 1997-10-09 | 1998-10-09 | Method and apparatus for accessing and executing the contents of physical memory from a virtual memory subsystem |
Country Status (5)
| Country | Link |
|---|---|
| JP (1) | JP2001520416A (en) |
| AU (1) | AU9792998A (en) |
| GB (1) | GB2345996B (en) |
| TW (1) | TW425529B (en) |
| WO (1) | WO1999019796A1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210342461A1 (en) * | 2017-09-12 | 2021-11-04 | Sophos Limited | Providing process data to a data recorder |
| US12192214B2 (en) | 2021-05-05 | 2025-01-07 | Sophos Limited | Mitigating threats associated with tampering attempts |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6486883B1 (en) * | 1999-06-18 | 2002-11-26 | Phoenix Technologies, Ltd. | Apparatus and method for updating images stored in non-volatile memory |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0543610A2 (en) * | 1991-11-18 | 1993-05-26 | International Business Machines Corporation | Data processing system |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5212633A (en) * | 1989-08-18 | 1993-05-18 | Sharedata | System for transferring resident programs to virtual area and recalling for instant excution in memory limited DOS system using program control tables |
-
1998
- 1998-10-09 GB GB0008472A patent/GB2345996B/en not_active Expired - Lifetime
- 1998-10-09 WO PCT/US1998/021228 patent/WO1999019796A1/en not_active Ceased
- 1998-10-09 AU AU97929/98A patent/AU9792998A/en not_active Abandoned
- 1998-10-09 JP JP2000516281A patent/JP2001520416A/en active Pending
-
1999
- 1999-04-07 TW TW087116810A patent/TW425529B/en not_active IP Right Cessation
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0543610A2 (en) * | 1991-11-18 | 1993-05-26 | International Business Machines Corporation | Data processing system |
Non-Patent Citations (3)
| Title |
|---|
| "METHOD OF HOOKING ADVANCEC BASIS INPUT/OUTPUT SYSTEM FUNCTIONS FOR PERSONAL COMPUTERS", IBM TECHNICAL DISCLOSURE BULLETIN, vol. 36, no. 12, 1 December 1993 (1993-12-01), pages 503/504, XP000419046 * |
| "MODULAR SYSTEM PARTITION", IBM TECHNICAL DISCLOSURE BULLETIN, vol. 35, no. 7, 1 December 1992 (1992-12-01), pages 341 - 342, XP000333043 * |
| ANONYMOUS: "Utility Subroutine to Oversee the Execution of User Supplied SRB Routine. November 1981.", IBM TECHNICAL DISCLOSURE BULLETIN, vol. 24, no. 6, November 1981 (1981-11-01), New York, US, pages 2714 - 2715, XP002095275 * |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210342461A1 (en) * | 2017-09-12 | 2021-11-04 | Sophos Limited | Providing process data to a data recorder |
| US11620396B2 (en) * | 2017-09-12 | 2023-04-04 | Sophos Limited | Secure firewall configurations |
| US11966482B2 (en) | 2017-09-12 | 2024-04-23 | Sophos Limited | Managing untyped network traffic flows |
| US12039036B2 (en) | 2017-09-12 | 2024-07-16 | Sophos Limited | Secure firewall configurations |
| US12192214B2 (en) | 2021-05-05 | 2025-01-07 | Sophos Limited | Mitigating threats associated with tampering attempts |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2001520416A (en) | 2001-10-30 |
| TW425529B (en) | 2001-03-11 |
| GB2345996B (en) | 2003-04-09 |
| AU9792998A (en) | 1999-05-03 |
| GB2345996A (en) | 2000-07-26 |
| GB0008472D0 (en) | 2000-05-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6148387A (en) | System and method for securely utilizing basic input and output system (BIOS) services | |
| JP4932781B2 (en) | Method, system and program for creating a reduced operating system image on a target medium | |
| US7934209B2 (en) | Method for firmware variable storage with eager compression, fail-safe extraction and restart time compression scan | |
| US7181610B2 (en) | Method and system to encapsulate a driver written for an operating system (OS) runtime environment in an OS independent environment firmware extension | |
| US8468333B1 (en) | Updating the system management information of a computer system | |
| US6725178B2 (en) | Use of hidden partitions in a storage device for storing BIOS extension files | |
| US6745385B1 (en) | Fixing incompatible applications by providing stubs for APIs | |
| US6944867B2 (en) | Method for providing a single preloaded software image with an ability to support multiple hardware configurations and multiple types of computer systems | |
| US7293251B2 (en) | Initiating and debugging a process in a high assurance execution environment | |
| US20050246453A1 (en) | Providing direct access to hardware from a virtual environment | |
| US20090265715A1 (en) | VEX - Virtual Extension Framework | |
| US20090006832A1 (en) | Method and System for linking Firmware Modules in a Pre-Memory Execution Environment | |
| US8327415B2 (en) | Enabling byte-code based image isolation | |
| MXPA05003943A (en) | Efficient patching. | |
| US20090094447A1 (en) | Universal serial bus flash drive for booting computer and method for loading programs to the flash drive | |
| BRPI0618027A2 (en) | configuration of isolated extensions and device triggers | |
| US8539214B1 (en) | Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware | |
| US20060031831A1 (en) | Generic packaging tool for packaging application and component therefor to be installed on computing device | |
| CN1606731A (en) | Boot process | |
| JP2001075812A (en) | Method and device for executing application during computer pre-boot operation | |
| US20230031974A1 (en) | Enabling spi firmware updates at runtime | |
| US6725294B1 (en) | Installation and access of a device handler for a peripheral device in a computer | |
| WO1999019796A1 (en) | Method and apparatus for accessing and executing the contents of physical memory from a virtual memory subsystem | |
| US7484083B1 (en) | Method, apparatus, and computer-readable medium for utilizing BIOS boot specification compliant devices within an extensible firmware interface environment | |
| US8078637B1 (en) | Memory efficient peim-to-peim interface database |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AK | Designated states |
Kind code of ref document: A1 Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZW |
|
| AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
| DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
| ENP | Entry into the national phase |
Ref country code: GB Ref document number: 200008472 Kind code of ref document: A Format of ref document f/p: F |
|
| NENP | Non-entry into the national phase |
Ref country code: KR |
|
| ENP | Entry into the national phase |
Ref country code: JP Ref document number: 2000 516281 Kind code of ref document: A Format of ref document f/p: F |
|
| REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
| 122 | Ep: pct application non-entry in european phase | ||
| NENP | Non-entry into the national phase |
Ref country code: CA |