david/ipxe
david
/
ipxe
Archived
1
0
Fork 0
This repository has been archived on 2020-12-06. You can view files and clone it, but cannot push or open issues or pull requests.
ipxe/src
Michael Brown 1af9284225 [efi] Work around platforms which choke on EFI_PCI_DEVICE_ENABLE
EFI_PCI_DEVICE_ENABLE is a list of the standard attributes that must
be enabled for a PCI device to function: I/O cycles, memory cycles,
and bus-mastering.  We currently call EFI_PCI_IO_PROTOCOL::Attribute()
with the parameter EFI_PCI_DEVICE_ENABLE to enable a PCI device.  This
should translate to a single write to PCI configuration space.

Simplicity is not a virtue within the UEFI world.  Some platforms will
'helpfully' report an error if EFI_PCI_DEVICE_ENABLE is used on a
device that doesn't actually support all three of the relevant
attributes.  For example, if a PCI device provides only memory-mapped
accesses (and so hardwires the I/O enable bit to zero), then using
EFI_PCI_DEVICE_ENABLE on such a platform will result in an
EFI_UNSUPPORTED error.

There is no plausible use case in which it is useful for the platform
to return an error in this way, and doing so makes it impossible to
distinguish genuine errors from noise.

Work around this broken behaviour by attempting to enable the three
attributes individually, and ignoring any errors.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2012-05-16 19:40:46 +01:00
..
arch [image] Remove non-working image loaders 2012-04-24 11:39:55 +01:00
bin Rename .cvsignore files to .gitignore 2007-06-09 22:57:00 +01:00
config [time] Add Linux time source using gettimeofday() 2012-05-04 17:54:31 +01:00
core [image] Avoid potential NULL pointer dereference 2012-05-08 21:05:25 +01:00
crypto [crypto] Add framework for OCSP 2012-05-15 13:24:23 +01:00
doc [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
drivers [realtek] Support RTL8139 cards within generic Realtek driver 2012-04-28 19:10:41 +01:00
hci [menu] Add "--default" option to "choose" command 2012-04-28 23:42:15 +01:00
image [script] Avoid using stack-allocated memory in process_line() 2012-04-23 22:42:10 +01:00
include [crypto] Add framework for OCSP 2012-05-15 13:24:23 +01:00
interface [efi] Work around platforms which choke on EFI_PCI_DEVICE_ENABLE 2012-05-16 19:40:46 +01:00
libgcc [build] Mark __intel_new_proc_init with __libgcc rather than cdecl 2009-08-03 15:56:10 +01:00
net [iscsi] Report SCSI response only when applicable 2012-05-16 10:55:58 +01:00
tests [test] Add self-tests for OCSP 2012-05-15 13:24:30 +01:00
usr [crypto] Allow certificate chains to be long-lived data structures 2012-05-04 17:54:31 +01:00
util [util] Remove obsolete Makefile rule for util/prototester.c 2012-04-24 11:45:24 +01:00
.gitignore [build] Add support for local configuration files 2010-03-26 19:07:22 +00:00
Makefile [build] Enable warnings when building utilities 2012-04-10 19:38:54 +01:00
Makefile.housekeeping [build] Use $(xxx_DEPS) for additional dependency information 2012-04-24 13:15:44 +01:00
doxygen.cfg [build] Remove PACKED macro 2010-05-29 23:49:47 +01:00