Initialization of a computer system following a power-on reset includes platform initialization, also referred to as basic input/output system (BIOS) booting, followed by initialization of an operating system (OS), or OS booting. BIOS booting may take approximately two to three seconds. OS booting may take approximately ten to twenty seconds.
Depending upon services provided during BIOS booting, OS boot logic may draw relatively simple graphics on a display during OS booting. Since the graphics are associated with the OS logic, the graphics are typically associated with an OS vendor.
In the drawings, the leftmost digit(s) of a reference number identifies the drawing in which the reference number first appears.
Disclosed herein are methods and systems to display platform graphics during initialization of an operating system. Platform graphics may also be displayed during BIOS booting, or a portion thereof.
As used herein, the term, “platform graphics,” refers to graphics other than OS initialization graphics generated by operating system initialization logic.
Platform graphics may include one or more of audio, video, still pictures, text, wallpapers, and skins. The terms “platform graphics” and “platform video” may be used interchangeably herein.
Platform graphics may include, without limitation, graphics related to third party products or services, which may include advertising graphics, graphics provided by a computer platform vendor or manufacturer, graphics associated with an entity that owns or exercises control over a computer system, including a managed hosting provider, and personal graphics.
Platform graphics may be displayed in place of OS initialization graphics. Alternatively, OS initialization graphics may be merged with platform graphics.
OS initialization 104 may include identifying and installing operating system logic.
Platform video may be displayed at 110 during OS initialization 104, and may be displayed during at least a portion of platform initialization 102.
One or more of platform initialization 102 and OS initialization 104 may include an extensible firmware interface (EFI) or uniform EFI (UEFI), as described below with respect to
At 302, a computer system is reset, such as by a power-on reset or other reset to initiate booting of the computer system.
At 304, one or more power-on self tests may be performed within the computer system.
At 306, platform initialization is performed, such as platform initialization 102 illustrated in one or more of
At 308, an operating system is initialized, such as OS initialization 104 illustrated in one or more of
At 310, platform video is displayed during OS initialization at 308. The platform video may be initiated during platform initialization at 306.
In the example of
Updating of the video frame buffer at 314 may include retrieving and decoding data corresponding to a video frame of the platform video. Updating of the video frame buffer at 314 may include updating a portion of the video frame buffer, such as with a subset of the platform video frame data that differs from a previously displayed video frame.
Displaying of platform video at 310 may include interrupting OS initiation at 308 to update the video frame buffer at 310. The interrupting may be performed at periodic intervals. Alternatively, or additionally, the interrupting may be performed in response to one or more condition, such as, for example, in response to processor idle time, which may occur when a processor is waiting for a response from another device, such as a storage device.
Displaying of platform video at 310 may be performed without substantially impacting a time to complete OS initiation 308 since a relatively considerable amount of the time to perform OS initiation includes waiting on relatively slow input/output channels, such as storage device accesses.
At 402, a computer system is reset, such as described above with respect to 302.
At 404, one or more power-on self tests may be performed within the computer system, such as described above with respect to 304.
At 406, physical resources of the computer system are initialized, such as described above with respect to 306.
At 408, a platform video service is initiated. Initiation of the platform video service may include loading instructions into memory to enable a processor to update a video frame buffer with platform video frame data upon a subsequent event. The subsequent event may include a periodic timer event and the platform video service may include initiating a timer to periodically interrupt operating system initiation and to update a video frame buffer during interruptions.
At 410, OS initialization begins.
At 412, initialization of the operating system is interrupted in response to the event, and the platform video service is invoked.
At 414, when the initialization of the operating environment is not complete, platform video frame data is decoded at 416 and the video frame buffer is updated at 418.
When the initialization of the operating environment is complete at 414, the platform video services are halted at 420 and a runtime, or operating environment is entered at 422.
Displaying of platform video may include merging platform video with OS initialization graphics, and updating the video frame buffer with merged video frame data.
Merging may include superimposing text from OS initialization logic over platform video.
Merging may include superimposing one or more graphics windows over one or more other graphics windows, such as a picture-in-picture. This may be useful, for example, to display user-selectable options during platform initialization and/or OS initialization, such as a user-selectable option to access a BIOS setup configuration or proceed to OS initialization.
One or more features disclosed herein may be implemented in logic, which may include one or more of integrated circuit logic and computer program product logic.
Computer system 700 includes logic 704, which may include one or more of integrated circuit logic and computer program product logic stored on a computer readable medium to cause processor 702 to perform one or more functions in response thereto.
In the example of
Logic 704 further includes operating system (OS) initialization logic 714 to cause processor 702 to initiate one or more operating environments. OS initialization logic 714 may include one or more of boot manager logic, OS loader logic, and OS logic.
Logic 704 further includes platform video display logic 712 to cause processor 702 to display platform video during initiation of OS logic 714. Platform video display logic 712 may include logic to cause processor 702 to display platform video during initiation of at least a portion of platform initiation logic 710. Platform video display logic 712, or a portion thereof, may be implemented within platform initialization logic 710.
Computer system 700 further includes memory/storage 706, having data 708 stored therein to be used by processor 702 in executing logic 704, and/or generated by processor 702 in response to execution of logic 704. In the example of
Memory/storage 706 may include a computer readable medium on which to store logic 704.
Computer system 700 may include a network interface device or card (NIC) 726 to interface with one or more communication networks. Computer system 700 may include one or more other interfaces, such a universal serial bus (USB) interface, to interface with one or more other devices.
Computer system 700 may include a communications infrastructure 728 to communicate amongst processor 702, memory/storage 706, display 724, NIC 726, and other interface devices.
Platform video frame data 716 may be received and/or updated over a network, such as through NIC 726, and may be received and/or updated secure or independent of OS initialization logic 714.
Platform video frame data 716 may be stored in one or more of firmware, flash, and a hard disc storage device.
Video frame data 716 may be received and/or updated, and stored in a hidden partition, secure from OS initialization logic 714, such as through virtualization logic or system management mode logic, examples of which are described below. For example, a virtualization machine manager (VMM) may cause processor 702 to intercept integrated drive electronics (IDE) controller input/output accesses to obtain a hidden disk partition to insure that platform video frame data 716 is available even if operating system logic is re-installed. A hidden partition may be obtained in an advanced host controller interface (AHCI) mode of computer system 700.
Platform video display logic 712 may include virtualization logic to cause processor 702 to virtualize one or more of video frame buffer 722 and video interfaces to an operating system initialization environment. Exemplary virtualization methods and systems are described below with respect to
In
Logic 804 further includes virtual display logic 832, including video interface logic 836 to cause processor 802 to initialize one or more video interfaces 910 in
Virtual display logic 832 further includes platform video decode logic 838 to cause processor 802 to decode platform video frame data 816 and to store decoded platform video frame data in platform video frame decode buffer 818.
Virtual display logic 832 further includes buffer merge logic 840 to cause processor 802 to merge decoded platform video frame data in decode buffer 818 with OS initialization video frame data in virtual video frame buffer 820, and to update video frame buffer 822 with merged video frame data.
In the example of
VMM logic 830 further includes timer logic 842 to cause processor 802 to maintain a timer 920, to periodically cause processor 802 to exit VM 904 and to invoke decode logic 840 and merge logic 838, as described below with respect to
In
At 1004, platform initialization is performed. Platform initialization may be performed in response to platform initialization logic 810 in
At 1006, virtual display logic 832 is invoked to cause processor 802 to initialize virtual interfaces 910 and platform video decode buffer 818.
At 1008, VMM logic 830 is invoked to cause processor 802 to initiate VMM 902 and VM 904, to transfer drivers and applications 906 to VM 904, and to initiate timer 920.
At 1010, initialization of computer system 800 is transferred to VM 904. This may include initiating any remaining logic within platform initialization logic 810 at 1012, and initiating OS initiation logic 814 within VM 904 at 1014.
During initialization at 1010, if video services are requested from VM 904, virtual video frame buffer 820 is updated at 1016 using one or more of virtual display interfaces 910. This may include receiving or intercepting a video service request at 1018, processing the request with a virtual interface at 1020, and updating virtual video frame buffer 820 at 1022. At 1024, processing returns to 1010, to continue OS initialization within VM 904.
Also during initialization at 1010, when timer 920 expires, video frame buffer 822 is updated with platform video frame data 816 at 1025. This may include determining that the timer expired at 1026, exiting VM 904 at 1028, decoding platform video frame data 816 and storing the decoded video frame data in platform video decode buffer 818 at 1030, merging contents of platform video frame buffer 818 and virtual video frame buffer 820 at 1032, and updating video frame buffer 822 with the merged data at 1034. At 1036, processing returns to 1010, to continue initialization within VM 904.
Upon completion of initialization of the operating system at 1010, processing proceeds to a runtime environment at 1038, where displaying of platform video frame data 816 may be halted. In the example of
Multiple instances of one or more virtual display logic 840 and VMM logic 830, or portions thereof, may be invoked, such as to provide picture-in-picture features as described above with respect to
Where platform initialization logic 810 includes unified EFI (UEFI) logic, platform initialization logic 810 may include logic to manage an n-tuple of {Boot00X, Sound_File, Video_File, Background_Image }.
Environment 900 may include one or more OS performance drivers within wrappers or virtualization containers hosted by VMM 902. This may permit scaling and use of coder/decoders to provide additional multimedia features.
Referring back to
As described below, SMM may provide video services even after firmware-based platform initialization has transferred to OS initialization. In order to prevent OS initialization from accessing a video device that is used for platform video, platform initialization may include replacing conventional video services, referred to herein as platform video services, with SMM video services. For example, a simulated firmware-based video driver may provide INT 10H services utilized by conventional OS loader systems, to transfer video service calls to SMM.
SMM is invoked by a system management interrupt (SMI). Upon an SMI, a processor executes corresponding SMI handler code, which may be stored in system firmware, and which may be unavailable to and/or isolated from application software or operating system software.
In conventional computer systems, a SMI handler may address up to 4G bytes of memory and may execute all or substantially all input/output (I/O) and applicable system instructions. A video frame buffer may be mapped to one or more locations including a A0000-BFFFF segment for VGA mode, and a 32 bit physical address for SVGA mode. SMM may access video memory space of SVGA directly.
A computer system may include an I/O controller hub having a system management device to enable and control SMI resources, including a SMM software timer to generate an SMI, referred to herein as a timer SMI. When the SMM software timer is enabled, the timer SMI is periodically generated. The SMM software timer may be programmed to generate a timer SMI at intervals in a range of, for example, 0.9 milliseconds (ms) to 68 ms, including ranges of 0.9 ms to 2.1 ms, 12 ms to 20 ms, 28 ms to 36 ms, and 60 ms to 68 ms. In response to a timer SMI, a corresponding timer SMI handler in SMM may be invoked, even after firmware has transferred to OS initialization.
Depending upon available hardware devices of a computer system, an SMI based video driver may directly access all, or substantially all of a video frame buffer, even after platform initialization has transferred control to OS initialization.
Exemplary SMM methods and systems are described below with respect to
Computer system 1100 is described below with respect to
In
SMM video logic 1130 includes SMI handler logic 1132 to cause processor 1102 to perform functions in SMM 1254 in response to interrupts. In the example of
SMI handler logic 1132 further includes timer SMI handler logic 1136 to cause processor 1102 to install a timer SMI handler 1256 in
SMM video logic 1130 further includes video services dispatch logic 1138 to cause processor 1102 to install a video service dispatcher 1258 in
SMM video logic 1130 further includes SMM timer logic 1140 to cause processor 1102 to install a software-based SMM timer 1258 in SMM 1204, which is described below.
Platform initialization logic 1110 includes SMM video load logic 1142 to cause processor 1102 to load or install SMM video logic 1130.
Platform initialization logic 1110 further includes one or more of basic input/output system (BIOS) logic and extensible firmware interface (EFI) logic, illustrated here as BIOS/EFI logic 1144, including platform video driver logic 1146.
Platform initialization logic 1110 further includes APM SMI generate logic 1148 to generate an APM SMI 1260 in
Exemplary initialization of computer system 1100 is now described with reference to method 1200.
At 1202, platform initialization is performed following a system reset. In the example of
In response to APM SMI 1260, processor 1102 suspends normal processing mode 1250 and invokes APM SMI handler 1254 within SMM 1252. This may include saving a state of normal processing mode 1250 in a system state map.
At 1210, timer 1258 is started. At 1212 video device information is retrieved corresponding to display 1124. At 1214, a reserved pixel may be set to a predetermined value in video frame buffer 1122. SMM video logic 1130 is configured to preclude writing platform video frame data 1116 to the reserved pixel. The reserved pixel is later used to determine whether an OS video driver is active, as described below with respect to 1232.
At 1216, platform video decode buffer 1118 and OS initialization buffer 1120 are initialized. At 1218, processing returns to normal processing mode 1250. This may include retrieving the state values corresponding to normal processing mode 1250 from the state map.
Upon return to normal processing mode 1250, platform initialization may resume at 1202 and then proceed to OS initialization at 1220, or processing may proceed directly to OS initialization at 1220.
During OS initialization at 1220, a video service request 1262 is intercepted by video services dispatcher 1258, which initiates a video service SMI 1264 to interrupt processing mode 1250 and to cause processor 1102 to invoke a video service SMI handler, illustrated here as part of APM SMI handler 1254.
At 1222, OS initialization video frame buffer 1120 is updated in response to video service request 1262, under control of APM SMI handler 1254. At 1224, processing returns to processing mode 1250.
Also during OS initialization 1220, upon an expiration of timer 1258, a timer SMI 1266 is generated at 1230 to interrupt normal processing mode 1250 and to cause processor 1102 to invoke timer SMI handler 1256 within SMM 1252.
At 1232, the reserved pixel in video frame buffer 1122 is compared to the value written at 1214. If the reserved pixel has not been altered, platform video frame data 1116 is decoded at 1234 and stored in platform video decode buffer 1118. At 1236, contents of platform video decode buffer 1118 and OS initialization video frame buffer 1120 are merged. At 1238, video frame buffer 1122 is updated with the merged video frame data. At 1240, timer 1258 may be reset. Alternatively, timer 1258 may cycle continuously.
At 1242, processing returns to OS initialization 1220 in normal processing mode 1250. Upon completion of OS initialization at 1220, processing proceeds to a runtime environment at 1246. When a video driver associated with the runtime environment is initiated, the runtime environment may overwrite the reserved pixel in video frame buffer 1122. Returning to 1232, if the reserved pixel has been altered, displaying of platform video may be halted. Halting may include stopping timer 1258 and replacing video services dispatcher 1258 with platform video services.
One or more features described above with respect to virtualization and system management mode may be implemented in various combinations with one another.
Methods and systems are disclosed herein with the aid of functional building blocks illustrating the functions, features, and relationships thereof. At least some of the boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries may be defined so long as the specified functions and relationships thereof are appropriately performed.
One skilled in the art will recognize that these functional building blocks can be implemented by discrete components, application specific integrated circuits, processors executing appropriate software, and combinations thereof.