<feed xmlns='http://www.w3.org/2005/Atom'>
<title>openslx-ng/ipxe.git/src/include/ipxe/efi, branch master</title>
<subtitle>Fork of ipxe; additional commands and features</subtitle>
<id>https://git.openslx.org/openslx-ng/ipxe.git/atom/src/include/ipxe/efi?h=master</id>
<link rel='self' href='https://git.openslx.org/openslx-ng/ipxe.git/atom/src/include/ipxe/efi?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/'/>
<updated>2019-02-19T19:02:11+00:00</updated>
<entry>
<title>[efi] Blacklist the Dell Ip4ConfigDxe driver</title>
<updated>2019-02-19T19:02:11+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2019-02-19T18:47:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=64b4452bca04af433f1c98ab782c0e93cd5c88c0'/>
<id>urn:sha1:64b4452bca04af433f1c98ab782c0e93cd5c88c0</id>
<content type='text'>
On a Dell OptiPlex 7010, calling DisconnectController() on the LOM
device handle will lock up the system.  Debugging shows that execution
is trapped in an infinite loop that is somehow trying to reconnect
drivers (without going via ConnectController()).

The problem can be reproduced in the UEFI shell with no iPXE code
present, by using the "disconnect" command.  Experimentation shows
that the only fix is to unload (rather than just disconnect) the
"Ip4ConfigDxe" driver.

Add the concept of a blacklist of UEFI drivers that will be
automatically unloaded when iPXE runs as an application, and add the
Dell Ip4ConfigDxe driver to this blacklist.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[rng] Use fixed-point calculations for min-entropy quantities</title>
<updated>2018-03-20T18:56:01+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2018-03-20T18:42:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=0d35411f88dd37dda755d52b4549337f8299c698'/>
<id>urn:sha1:0d35411f88dd37dda755d52b4549337f8299c698</id>
<content type='text'>
We currently perform various min-entropy calculations using build-time
floating-point arithmetic.  No floating-point code ends up in the
final binary, since the results are eventually converted to integers
and asserted to be compile-time constants.

Though this mechanism is undoubtedly cute, it inhibits us from using
"-mno-sse" to prevent the use of SSE registers by the compiler.

Fix by using fixed-point arithmetic instead.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[legal] Add missing FILE_LICENCE declarations</title>
<updated>2017-12-29T11:54:59+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2017-12-29T11:53:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=ff648c339d25589a343a284286137058d19c17c2'/>
<id>urn:sha1:ff648c339d25589a343a284286137058d19c17c2</id>
<content type='text'>
Add missing FILE_LICENCE declarations to EFI headers based on the
corresponding source file.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[efi] Provide access to ACPI tables</title>
<updated>2017-05-23T17:48:02+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2017-05-23T17:32:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=993fd2b45140d071d7837ff502df771e87f14127'/>
<id>urn:sha1:993fd2b45140d071d7837ff502df771e87f14127</id>
<content type='text'>
Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[efi] Add efi_sprintf() and efi_vsprintf()</title>
<updated>2017-04-12T14:01:56+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2017-04-12T14:01:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=a82f93748545427cd7f104f107be1663c55a35fd'/>
<id>urn:sha1:a82f93748545427cd7f104f107be1663c55a35fd</id>
<content type='text'>
Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[efi] Add EFI_ACPI_TABLE_PROTOCOL header and GUID definition</title>
<updated>2017-03-10T21:58:05+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2017-03-10T21:51:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=553f4857346faa8c5f6ddf9eced4180924890bfc'/>
<id>urn:sha1:553f4857346faa8c5f6ddf9eced4180924890bfc</id>
<content type='text'>
Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[efi] Update to current EDK2 headers</title>
<updated>2017-03-10T21:18:03+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2017-03-10T21:18:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=0463ec32c717c10e56b1e0bbecc1b02756df7fcc'/>
<id>urn:sha1:0463ec32c717c10e56b1e0bbecc1b02756df7fcc</id>
<content type='text'>
Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[block] Centralise "san-drive" setting</title>
<updated>2017-03-07T13:40:35+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2017-03-06T12:25:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=e7ee2eda4badef6ee361f089768064ae737169ed'/>
<id>urn:sha1:e7ee2eda4badef6ee361f089768064ae737169ed</id>
<content type='text'>
The concept of the SAN drive number is meaningful only in a BIOS
environment, where it represents the INT13 drive number (0x80 for the
first hard disk).  We retain this concept in a UEFI environment to
allow for a simple way for iPXE commands to refer to SAN drives.

Centralise the concept of the default drive number, since it is shared
between all supported environments.

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[time] Allow timer to be selected at runtime</title>
<updated>2017-01-26T08:17:37+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2017-01-25T20:59:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=302f1eeb80706fb10067efedb1279fa3f85ddda2'/>
<id>urn:sha1:302f1eeb80706fb10067efedb1279fa3f85ddda2</id>
<content type='text'>
Allow the active timer (providing udelay() and currticks()) to be
selected at runtime based on probing during the INIT_EARLY stage of
initialisation.

TICKS_PER_SEC is now a fixed compile-time constant for all builds, and
is independent of the underlying clock tick rate.  We choose the value
1024 to allow multiplications and divisions on seconds to be converted
to bit shifts.

TICKS_PER_MS is defined as 1, allowing multiplications and divisions
on milliseconds to be omitted entirely.  The 2% inaccuracy in this
definition is negligible when using the standard BIOS timer (running
at around 18.2Hz).

TIMER_RDTSC now checks for a constant TSC before claiming to be a
usable timer.  (This timer can be tested in KVM via the command-line
option "-cpu host,+invtsc".)

Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
<entry>
<title>[efi] Work around temporal anomaly encountered during ExitBootServices()</title>
<updated>2016-12-07T13:46:37+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2016-12-07T13:41:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=5cf5ffea2874434ffdc64c3242f2c53ed7ec1d40'/>
<id>urn:sha1:5cf5ffea2874434ffdc64c3242f2c53ed7ec1d40</id>
<content type='text'>
EFI provides no clean way for device drivers to shut down in
preparation for handover to a booted operating system.  The platform
firmware simply doesn't bother to call the drivers' Stop() methods.
Instead, drivers must register an EVT_SIGNAL_EXIT_BOOT_SERVICES event
to be signalled when ExitBootServices() is called, and clean up
without any reference to the EFI driver model.

Unfortunately, all timers silently stop working when ExitBootServices()
is called.  Even more unfortunately, and for no discernible reason,
this happens before any EVT_SIGNAL_EXIT_BOOT_SERVICES events are
signalled.  The net effect of this entertaining design choice is that
any timeout loops on the shutdown path (e.g. for gracefully closing
outstanding TCP connections) may wait indefinitely.

There is no way to report failure from currticks(), since the API
lazily assumes that the host system continues to travel through time
in the usual direction.  Work around EFI's violation of this
assumption by falling back to a simple free-running monotonic counter.

Debugged-by: Maor Dickman &lt;maord@mellanox.com&gt;
Signed-off-by: Michael Brown &lt;mcb30@ipxe.org&gt;
</content>
</entry>
</feed>
