<feed xmlns='http://www.w3.org/2005/Atom'>
<title>openslx-ng/ipxe.git/src/Makefile.housekeeping, branch v1.0.0</title>
<subtitle>Fork of ipxe; additional commands and features</subtitle>
<id>https://git.openslx.org/openslx-ng/ipxe.git/atom/src/Makefile.housekeeping?h=v1.0.0</id>
<link rel='self' href='https://git.openslx.org/openslx-ng/ipxe.git/atom/src/Makefile.housekeeping?h=v1.0.0'/>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/'/>
<updated>2010-01-20T22:46:48+00:00</updated>
<entry>
<title>[prefix] Add .xrom prefix for a ROM that loads itself by PCI accesses</title>
<updated>2010-01-20T22:46:48+00:00</updated>
<author>
<name>Joshua Oreman</name>
</author>
<published>2009-10-18T20:12:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=06a8398422efb613b7ee4f9d8f1abcc813bb3f3b'/>
<id>urn:sha1:06a8398422efb613b7ee4f9d8f1abcc813bb3f3b</id>
<content type='text'>
The standard option ROM format provides a header indicating the size
of the entire ROM, which the BIOS will reserve space for, load, and
call as necessary. However, this space is strictly limited to 128k for
all ROMs. gPXE ameliorates this somewhat by reserving space for itself
in high memory and relocating the majority of its code there, but on
systems prior to PCI3 enough space must still be present to load the
ROM in the first place. Even on PCI3 systems, the BIOS often limits the
size of ROM it will load to a bit over 64kB.

These space problems can be solved by providing an artificially small
size in the ROM header: just enough to let the prefix code (at the
beginning of the ROM image) be loaded by the BIOS. To the BIOS, the
gPXE ROM will appear to be only a few kilobytes; it can then load
the rest of itself by accessing the ROM directly using the PCI
interface reserved for that task.

There are a few problems with this approach. First, gPXE needs to find
an unmapped region in memory to map the ROM so it can read from it;
this is done using the crude but effective approach of scanning high
memory (over 0xF0000000) for a sufficiently large region of all-ones
(0xFF) reads. (In x86 architecture, all-ones is returned for accesses
to memory regions that no mapped device can satisfy.) This is not
provably valid in all situations, but has worked well in practice.
More importantly, this type of ROM access can only work if the PCI ROM
BAR exists at all. NICs on physical add-in PCI cards generally must
have the BAR in order for the BIOS to be able to load their ROM, but
ISA cards and LAN-on-Motherboard cards will both fail to load gPXE
using this scheme.

Due to these uncertainties, it is recommended that .xrom only be used
when a regular .rom image is infeasible due to crowded option ROM
space. However, when it works it could allow loading gPXE images
as large as a flash chip one could find - 128kB or even higher.

Signed-off-by: Marty Connor &lt;mdc@etherboot.org&gt;
</content>
</entry>
<entry>
<title>[makefile] Allow .sizes target to work with funny-named objects</title>
<updated>2010-01-14T16:28:52+00:00</updated>
<author>
<name>Joshua Oreman</name>
</author>
<published>2009-12-30T01:28:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=f94845168a4ec6f7cddd35e64638e54bd3f64dab'/>
<id>urn:sha1:f94845168a4ec6f7cddd35e64638e54bd3f64dab</id>
<content type='text'>
The bin/xxx.sizes targets examine the list of obj_ symbols in bin/xxx.tmp
to determine which objects to measure the size of. These symbols have been
normalized to C identifiers, so the result is an error message from `size'
when examining a target that includes objects that were originally named
with hyphens.

Fix by turning obj_foo_bar into $(wildcard bin/foo?bar.o) instead of
bin/foo_bar.o.

Signed-off-by: Marty Connor &lt;mdc@etherboot.org&gt;
</content>
</entry>
<entry>
<title>[prefix] Add .hrom prefix for a ROM that loads high under PCI3 without PMM</title>
<updated>2010-01-14T15:56:08+00:00</updated>
<author>
<name>Joshua Oreman</name>
</author>
<published>2009-10-06T20:12:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=5736f5eb329cf9904687915194bd2005ee531064'/>
<id>urn:sha1:5736f5eb329cf9904687915194bd2005ee531064</id>
<content type='text'>
gPXE currently takes advantage of the feature of PCI3.0 that allows
option ROMs to relocate the bulk of their code to high memory and so
take up only a small amount of space in the option ROM area. Currently,
the relocation can only take place if the BIOS's implementation of PMM
can be made to return blocks aligned to an even megabyte, because of
the A20 gate. AMI BIOSes, in particular, will not return allocations
that gPXE can use.

Ameliorate the situation somewhat by adding a prefix, .hrom, that works
identically to .rom except in the case that PMM allocation fails. Where
.rom would give up and place itself entirely in option ROM space, .hrom
moves to a block (assumed free) at HIGHMEM_LOADPOINT = 4MB. This allows
for the use of larger gPXE ROMs than would otherwise be possible.

Because there is no way to check that the area at HIGHMEM_LOADPOINT is
really free, other devices using that memory during the boot process
will cause failure for gPXE, the other device, or both. In practice
such conflicts will likely not occur, but this prefix should still be
considered EXPERIMENTAL.

Signed-off-by: Marty Connor &lt;mdc@etherboot.org&gt;
</content>
</entry>
<entry>
<title>[build] Fix DEBUG builds for filenames with hyphens</title>
<updated>2009-10-15T18:07:20+00:00</updated>
<author>
<name>Joshua Oreman</name>
</author>
<published>2009-10-15T18:07:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=3fa277920804b056ce72fd9ba0074a7ff7c871fa'/>
<id>urn:sha1:3fa277920804b056ce72fd9ba0074a7ff7c871fa</id>
<content type='text'>
Debug builds for filenames with hyphens such as:

     $ make bin/via-rhine.dsk DEBUG=via-rhine

fail with:

     [BUILD] bin/via-rhine.dbg1.o
     &lt;command-line&gt;: error: missing whitespace after the macro name
     make: *** [bin/via-rhine.dbg1.o] Error 1

This is because "-" is not a legal character in C identifiers, and
gcc rejects "-Ddebug_via-rhine=1" as an argument.

Signed-off-by: Daniel Verkamp &lt;daniel@drv.nu&gt;
Signed-off-by: Joshua Oreman &lt;oremanj@rwcr.net&gt;
Signed-off-by: Marty Connor &lt;mdc@etherboot.org&gt;
</content>
</entry>
<entry>
<title>[doc] Expand scope of doxygen-generated documentation</title>
<updated>2009-08-11T14:14:36+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2009-08-11T14:14:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=b3db99a38d8822f29eae6f67ee6034c57284d06f'/>
<id>urn:sha1:b3db99a38d8822f29eae6f67ee6034c57284d06f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>[build] Add -fno-dwarf2-cfi-asm to CFLAGS if supported by the gcc in use</title>
<updated>2009-05-27T01:30:46+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2009-05-27T01:21:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=8afafb65322a3fec01206720a1d8be4083e9c0d6'/>
<id>urn:sha1:8afafb65322a3fec01206720a1d8be4083e9c0d6</id>
<content type='text'>
gcc 4.4 defaults to using .cfi assembler directives for debugging
information, which causes unneeded .eh_frame sections to be generated.
These sections are already stripped out by our linker script, so don't
affect the final build, but do distort the output of "size" when run
on individual .o files; the .eh_frame size is included within the size
reported for .text.  This makes it difficult to accurately judge the
effects of source code changes upon object code size.

Fix by adding -fno-dwarf2-cfi-asm to CFLAGS if we detect that this
option is supported by the gcc that we are compiling with.

Tested-by: Daniel Verkamp &lt;daniel@drv.nu&gt;
</content>
</entry>
<entry>
<title>[legal] Add licence.pl and %.licence make target</title>
<updated>2009-05-18T07:29:24+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2009-04-29T07:51:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=41307f2874989048679c83686527a3887ed485b3'/>
<id>urn:sha1:41307f2874989048679c83686527a3887ed485b3</id>
<content type='text'>
It is now possible to run e.g.

  make bin/rtl8139.dsk.licence

in order to see a licensing assessment for any given gPXE build.  The
assessment will either produce a single overall licence for the build
(based on combining all the licences used within the source files for
that build), or will exit with an error stating why a licence
assessment is not possible (for example, if there are files involved
that do not yet contain an explicit FILE_LICENCE() declaration).
</content>
</entry>
<entry>
<title>[build] Automatically sort the list of constituent object sizes</title>
<updated>2009-04-18T15:20:03+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2009-04-18T15:19:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=a1eb4ffdf7e2fb7761df7b28e02427b0ab7a216c'/>
<id>urn:sha1:a1eb4ffdf7e2fb7761df7b28e02427b0ab7a216c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>[build] Provide mechanism for listing constituent object sizes</title>
<updated>2009-04-18T14:56:29+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2009-04-18T14:55:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=ead44dba8942e85730d545e9696cdf31433942d4'/>
<id>urn:sha1:ead44dba8942e85730d545e9696cdf31433942d4</id>
<content type='text'>
You can now type e.g.

  make bin/rtl8139.rom.sizes

in order to see the (uncompressed) sizes of all of the object files
linked in to bin/rtl8139.rom.  This should make it easier to identify
relevant code bloat.
</content>
</entry>
<entry>
<title>[build] Kill off the multiple-object-per-source-file mechanism</title>
<updated>2009-04-17T12:43:35+00:00</updated>
<author>
<name>Michael Brown</name>
</author>
<published>2009-04-17T12:43:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/openslx-ng/ipxe.git/commit/?id=f721067d3565bfec4cca1f65e5be3ce8112de938'/>
<id>urn:sha1:f721067d3565bfec4cca1f65e5be3ce8112de938</id>
<content type='text'>
Now that there are no remaining multiple-object source files, kill off
the mechanism in order to simplify the Makefile.
</content>
</entry>
</feed>
