Patent ID: 8312461

Claim:
A method comprising: a system processor allocating hardware resources in a resource map to one or more functions associated with an input/output (I/O) device, wherein each of the one or more functions is associated with a corresponding resource discovery table; wherein each corresponding resource discovery table includes a plurality of entries, wherein each entry has a one to one correspondence to a respective location within the resource map, and wherein each respective location is associated with a respective hardware resource; allocating address space in a system memory to each function of the one or more functions thereby creating an (I/O) mapping of a programmed I/O (PIO) configuration space; assigning a given function of the one or more functions to a respective process executing on a processor; wherein the allocating the hardware resources includes populating each entry of each corresponding resource discovery table with a value, wherein the value indicates whether the corresponding respective hardware resource has been allocated to the respective process; a device driver running on the processor and associated with a given respective process discovering which of the hardware resources have been allocated to the device driver by performing a PIO resource request to the resource discovery table of the associated function for access to a given hardware resource; generating a fault in response to an address of the PIO resource request not being within an address region of the address space of the system memory that has been allocated to the function assigned to the process performing the PIO resource request; and the device driver storing results of the PIO resource request.