System, method and program for controlling access to an input/output device possible resource settings data in an advanced configuration and power interface operating system

During start-up of an advanced configuration and power interface computer system, a resource lock value is read from nonvolatile memory. If the resource lock value indicates system resources are to be locked, possible configuration setting data associated with motherboard input-output devices, is not loaded into memory at a location known to the operating system. If the resource lock value indicates system resources are not to be locked, possible configuration setting data is loaded into memory at a location known to the operating system.

BACKGROUND 
The invention relates to protecting configuration data associated with 
input-output (I/O) devices. 
Known device configuration techniques such as plug-and-play are implemented 
via basic input-output system (BIOS) instructions stored in read only 
memory (ROM). One responsibility of a plug-and-play BIOS is to initialize 
all plug-and-play compatible devices coupled to a computer system's 
motherboard (main circuit board) during start-up. One aspect of this 
responsibility is the allocation and assignment of system level resources 
such as direct memory access (DMA) channels, interrupt request lines 
(IRQs), I/O addresses, and memory addresses. 
A plug-and-play device can have two types of resource settings: current 
resource settings (CRS) and possible resource settings (PRS). Current 
resource settings refer to actual resource values (e.g., IRQ 4) and 
reflect the physical configuration of a device. Possible resource settings 
refer to those resource values that a device may be assigned (e.g., any 
IRQ between 3 and 9). 
If a plug-and-play device has more than one PRS, known device configuration 
techniques allow a user to change resource assignments. Resource 
modification is generally performed during system start-up by an 
application that is executed before control is passed to an operating 
system (i.e., before the operating system is loaded). If a computer 
system's resources are locked, the user will be prompted for a password 
before any resource assignment changes can be made. 
Under the new advanced configuration and power interface (ACPI), 
information associated with motherboard plug-and-play devices is stored in 
ACPI tables. This information, which is available to the operating system 
at all times, can include for each device: (1) a control method for 
determining the device's current configuration, i.e., CRS; (2) a list of 
possible resource values, i.e., PRS; and (3) control methods for modifying 
the device's resource values. Under the ACPI specification, there is no 
provision to reject (i.e., lock) a request to modify plug-and-play 
resources. If an ACPI operating system has data reflecting a device's PRS, 
the system may modify those settings. 
SUMMARY 
In one aspect, the invention features a method to control access to 
configuration data associated with a device in a computer system, where 
the configuration data is normally accessible to the computer's operating 
system when loaded at an expected memory location. The method includes 
determining if access to the configuration data is to be blocked and, if 
so, not making the configuration data accessible at the expected memory 
location. In some embodiments, the configuration data includes possible 
configuration setting information for a motherboard plug-and-play device. 
In other embodiments, the computer system executes an advanced 
configuration and control interface (ACPI) operating system, and the 
expected memory location is defined by one or more ACPI tables. 
In another aspect, the invention features a program storage device having 
instructions encoded therein to perform the inventive method. In yet 
another aspect, the invention features a computer system capable of 
controlling access to device configuration data.

DETAILED DESCRIPTION 
Referring to FIG. 1, an advanced configuration and power interface (ACPI) 
computer system 100 providing plug-and-play device configuration security 
includes host processor (CPU) 102, random access memory (RAM) 104, read 
only memory (ROM) 106, nonvolatile random access memory (NVRAM) 108, and 
one or more plug-and-play devices 110 (only one shown) coupled to system 
bus 112. Illustrative host processors 102 include the PENTIUM, PENTIUM 
PRO, PENTIUM-II, and 80X86 families of processors from Intel Corporation. 
As shown in FIG. 2, system ROM 106 generally provides storage for computer 
system 100's basic input-output system (BIOS) instructions 200, ACPI table 
data 204, and system input-output device configuration information 206. 
System ROM 106 can be embodied in programmable versions of read only 
memory such as electrically erasable programmable ROM (EEPROM). System ROM 
106, NVRAM 108, and plug-and-play device 110 will be discussed more fully 
below. 
Referring again to FIG. 1, bridge circuit 114 couples system bus 112 to 
secondary bus 116. Components coupled to secondary bus 116 include 
input-output (I/O) control circuit 118, video controller 120 and 
associated display 122, disk controller 124 and associated disks (one 
shown) 126, and one or more expansion slots 128. Input-output control 
circuit 118 can provide an interface for devices such as user keyboard 
130, pointer device 132, and serial 134 and parallel 136 ports. 
Referring to FIG. 3, computer system 100 start-up (also referred to as 
power-on self test or POST processing) begins with system BIOS execution 
at step 300. If a user does not attempt to modify the current resource 
setting (CRS) of motherboard plug-and-play device 110 (the `no` prong of 
step 302), a test is made to determine if system resource settings have 
been locked (step 304). As shown in FIG. 4, indication of whether system 
resources are locked is typically stored in NVRAM 108 through a system 
resource lock flag 400. Nonvolatile RAM 108 can be a CMOS memory device or 
any other memory device capable of retaining stored information after 
system 100 is powered down. 
If system resources are not locked (the `no` prong of step 304), any 
possible resource settings (PRS) and the CRS for each plug-and-play device 
are loaded into system RAM 104 at a location known by the operating system 
in steps 306 and 308 respectively. 
If resources are locked (the `yes` prong of step 304), only CRS data is 
loaded into system RAM 104 where the operating system can access it. 
Following completion of BIOS start-up routines, the ACPI operating system 
is loaded and given control of computer system 100 (step 310). 
Referring to FIG. 5, configuration information 500 (CRS and PRS) is 
generally copied 502 into a first location 504 in system RAM 104 during 
POST processing. While an ACPI operating system may physically access this 
first location 504, information about what data is stored there is not 
generally known (is opaque) to the operating system. That is, 
configuration information initially copied into system RAM 104 from system 
ROM 106 is not functionally accessible to the operating system. During 
step 306 (see FIG. 3) PRS information is copied 506 from the first 
location 504 into a second location 508 that the ACPI operating system is 
cognizant of. CRS information is similarly copied during step 308 of FIG. 
3. When configuration data is in memory at a location known by the 
operating system 508, it has been loaded. 
Referring again to FIG. 3, if the user wants to change one or more system 
resource settings (the `yes` prong of step 302), system 100 can be 
notified through a key stroke command such as F10. When the BIOS receives 
a modify command (e.g., via F10), it executes a low-level system set-up 
application which prompts the user to enter changes. If system resources 
are locked (the `yes` prong of step 312), the user is prompted for a 
password. If the entered password is correct (the `yes` prong of step 
314), user specified changes and accepted and stored in NVRAM 108 (step 
316). After a resource assignment is changed, or if the user supplied 
password is incorrect (the `no prong of step 314), start-up processing 
begins again at step 302. 
A feature of the invention is that when system configuration data is 
locked, PRS data is segregated from CRS data and is not available to an 
ACPI operating system. This allows a computer system designer to implement 
a device configuration locking mechanism which is not available in a 
standard ACPI computer system. More generally, this approach hides 
computer system hardware features from an ACPI operating system such as 
thermal models and input-output configuration data. 
The foregoing description is illustrative only and is not to be considered 
limiting. Various changes in the materials, components, circuit elements, 
as well as in the details of the illustrated operational method are 
possible without departing from the scope of the claims. For example, 
either system bus 112 or secondary bus 116 can be proprietary or special 
purpose buses, peripheral component interface (PCI) buses, industry 
standard architecture (ISA) buses, extended industry standard architecture 
(EISA) buses, or combinations of one or more of these busses. Further, 
PRS, CRS, and other ACPI table data can be stored in system ROM 108 in a 
compressed format to minimize memory usage. Device configuration 
information can also be stored in a different memory device than the 
system BIOS instructions. Steps of the invention may be performed by a 
computer processor executing instructions organized into a program module. 
Storage devices suitable for tangibly embodying computer program 
instructions include all forms of nonvolatile memory including, but not 
limited to: semiconductor memory devices such as EPROM, EEPROM, and flash 
devices; magnetic disks (fixed, floppy, and removable); other magnetic 
media such as tape; and optical media such as CD-ROM disks.