Auto sync2gitlab import of ipxe-20181214-9.git133f4c47.el8.src.rpm
This commit is contained in:
parent
0eb7c5abf3
commit
b324e7146b
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/ipxe-20181214-git133f4c47.tar.xz
|
129
0001-arm-Provide-dummy-implementation-for-in-out-s-b-w-l.patch
Normal file
129
0001-arm-Provide-dummy-implementation-for-in-out-s-b-w-l.patch
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
From c2226b3d1a4d9fc1daeb8dc6b9034d1fb46c1308 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Brown <mcb30@ipxe.org>
|
||||||
|
Date: Sun, 14 Jul 2019 15:27:01 +0100
|
||||||
|
Subject: [PATCH] [arm] Provide dummy implementations for {in,out}[s]{b,w,l}
|
||||||
|
|
||||||
|
It is currently not possible to build the all-drivers iPXE binaries
|
||||||
|
for ARM, since there is no implementation for inb(), outb(), etc.
|
||||||
|
|
||||||
|
There is no common standard for accessing I/O space on ARM platforms,
|
||||||
|
and there are almost no ARM-compatible peripherals that actually
|
||||||
|
require I/O space accesses.
|
||||||
|
|
||||||
|
Provide dummy implementations that behave as though no device is
|
||||||
|
present (i.e. ignore writes, return all bits high for reads). This is
|
||||||
|
sufficient to allow the all-drivers binaries to link, and should cause
|
||||||
|
drivers to behave as though no I/O space peripherals are present in
|
||||||
|
the system.
|
||||||
|
|
||||||
|
Signed-off-by: Michael Brown <mcb30@ipxe.org>
|
||||||
|
---
|
||||||
|
src/arch/arm/include/ipxe/arm_io.h | 77 +++++++++++++++++++++++-------
|
||||||
|
1 file changed, 59 insertions(+), 18 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/arch/arm/include/ipxe/arm_io.h b/src/arch/arm/include/ipxe/arm_io.h
|
||||||
|
index f8765af752..105f22bfbf 100644
|
||||||
|
--- a/src/arch/arm/include/ipxe/arm_io.h
|
||||||
|
+++ b/src/arch/arm/include/ipxe/arm_io.h
|
||||||
|
@@ -43,42 +43,83 @@ IOAPI_INLINE ( arm, bus_to_phys ) ( unsigned long bus_addr ) {
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
-#define ARM_READX( _api_func, _type, _insn_suffix, _reg_prefix ) \
|
||||||
|
+#define ARM_READX( _suffix, _type, _insn_suffix, _reg_prefix ) \
|
||||||
|
static inline __always_inline _type \
|
||||||
|
-IOAPI_INLINE ( arm, _api_func ) ( volatile _type *io_addr ) { \
|
||||||
|
+IOAPI_INLINE ( arm, read ## _suffix ) ( volatile _type *io_addr ) { \
|
||||||
|
_type data; \
|
||||||
|
__asm__ __volatile__ ( "ldr" _insn_suffix " %" _reg_prefix "0, %1" \
|
||||||
|
: "=r" ( data ) : "Qo" ( *io_addr ) ); \
|
||||||
|
return data; \
|
||||||
|
}
|
||||||
|
#ifdef __aarch64__
|
||||||
|
-ARM_READX ( readb, uint8_t, "b", "w" );
|
||||||
|
-ARM_READX ( readw, uint16_t, "h", "w" );
|
||||||
|
-ARM_READX ( readl, uint32_t, "", "w" );
|
||||||
|
-ARM_READX ( readq, uint64_t, "", "" );
|
||||||
|
+ARM_READX ( b, uint8_t, "b", "w" );
|
||||||
|
+ARM_READX ( w, uint16_t, "h", "w" );
|
||||||
|
+ARM_READX ( l, uint32_t, "", "w" );
|
||||||
|
+ARM_READX ( q, uint64_t, "", "" );
|
||||||
|
#else
|
||||||
|
-ARM_READX ( readb, uint8_t, "b", "" );
|
||||||
|
-ARM_READX ( readw, uint16_t, "h", "" );
|
||||||
|
-ARM_READX ( readl, uint32_t, "", "" );
|
||||||
|
+ARM_READX ( b, uint8_t, "b", "" );
|
||||||
|
+ARM_READX ( w, uint16_t, "h", "" );
|
||||||
|
+ARM_READX ( l, uint32_t, "", "" );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#define ARM_WRITEX( _api_func, _type, _insn_suffix, _reg_prefix ) \
|
||||||
|
+#define ARM_WRITEX( _suffix, _type, _insn_suffix, _reg_prefix ) \
|
||||||
|
static inline __always_inline void \
|
||||||
|
-IOAPI_INLINE ( arm, _api_func ) ( _type data, volatile _type *io_addr ) { \
|
||||||
|
+IOAPI_INLINE ( arm, write ## _suffix ) ( _type data, \
|
||||||
|
+ volatile _type *io_addr ) { \
|
||||||
|
__asm__ __volatile__ ( "str" _insn_suffix " %" _reg_prefix "0, %1" \
|
||||||
|
: : "r" ( data ), "Qo" ( *io_addr ) ); \
|
||||||
|
}
|
||||||
|
#ifdef __aarch64__
|
||||||
|
-ARM_WRITEX ( writeb, uint8_t, "b", "w" );
|
||||||
|
-ARM_WRITEX ( writew, uint16_t, "h", "w" );
|
||||||
|
-ARM_WRITEX ( writel, uint32_t, "", "w" );
|
||||||
|
-ARM_WRITEX ( writeq, uint64_t, "", "" );
|
||||||
|
+ARM_WRITEX ( b, uint8_t, "b", "w" );
|
||||||
|
+ARM_WRITEX ( w, uint16_t, "h", "w" );
|
||||||
|
+ARM_WRITEX ( l, uint32_t, "", "w" );
|
||||||
|
+ARM_WRITEX ( q, uint64_t, "", "" );
|
||||||
|
#else
|
||||||
|
-ARM_WRITEX ( writeb, uint8_t, "b", "" );
|
||||||
|
-ARM_WRITEX ( writew, uint16_t, "h", "" );
|
||||||
|
-ARM_WRITEX ( writel, uint32_t, "", "" );
|
||||||
|
+ARM_WRITEX ( b, uint8_t, "b", "" );
|
||||||
|
+ARM_WRITEX ( w, uint16_t, "h", "" );
|
||||||
|
+ARM_WRITEX ( l, uint32_t, "", "" );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * Dummy PIO reads and writes up to 32 bits
|
||||||
|
+ *
|
||||||
|
+ * There is no common standard for I/O-space access for ARM, and
|
||||||
|
+ * non-MMIO peripherals are vanishingly rare. Provide dummy
|
||||||
|
+ * implementations that will allow code to link and should cause
|
||||||
|
+ * drivers to simply fail to detect hardware at runtime.
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#define ARM_INX( _suffix, _type ) \
|
||||||
|
+static inline __always_inline _type \
|
||||||
|
+IOAPI_INLINE ( arm, in ## _suffix ) ( volatile _type *io_addr __unused) { \
|
||||||
|
+ return ~( (_type) 0 ); \
|
||||||
|
+} \
|
||||||
|
+static inline __always_inline void \
|
||||||
|
+IOAPI_INLINE ( arm, ins ## _suffix ) ( volatile _type *io_addr __unused, \
|
||||||
|
+ _type *data, unsigned int count ) { \
|
||||||
|
+ memset ( data, 0xff, count * sizeof ( *data ) ); \
|
||||||
|
+}
|
||||||
|
+ARM_INX ( b, uint8_t );
|
||||||
|
+ARM_INX ( w, uint16_t );
|
||||||
|
+ARM_INX ( l, uint32_t );
|
||||||
|
+
|
||||||
|
+#define ARM_OUTX( _suffix, _type ) \
|
||||||
|
+static inline __always_inline void \
|
||||||
|
+IOAPI_INLINE ( arm, out ## _suffix ) ( _type data __unused, \
|
||||||
|
+ volatile _type *io_addr __unused ) { \
|
||||||
|
+ /* Do nothing */ \
|
||||||
|
+} \
|
||||||
|
+static inline __always_inline void \
|
||||||
|
+IOAPI_INLINE ( arm, outs ## _suffix ) ( volatile _type *io_addr __unused, \
|
||||||
|
+ const _type *data __unused, \
|
||||||
|
+ unsigned int count __unused ) { \
|
||||||
|
+ /* Do nothing */ \
|
||||||
|
+}
|
||||||
|
+ARM_OUTX ( b, uint8_t );
|
||||||
|
+ARM_OUTX ( w, uint16_t );
|
||||||
|
+ARM_OUTX ( l, uint32_t );
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Slow down I/O
|
||||||
|
*
|
17
0001-build-customize-configuration.patch
Normal file
17
0001-build-customize-configuration.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||||
|
Date: Tue, 17 Nov 2015 11:56:06 -0500
|
||||||
|
Subject: [PATCH ipxe] build: customize configuration
|
||||||
|
|
||||||
|
diff --git a/src/config/local/general.h b/src/config/local/general.h
|
||||||
|
index 5814511..47d0e1a 100644
|
||||||
|
--- a/src/config/local/general.h
|
||||||
|
+++ b/src/config/local/general.h
|
||||||
|
@@ -0,0 +1,5 @@
|
||||||
|
+#undef ROM_BANNER_TIMEOUT
|
||||||
|
+#define ROM_BANNER_TIMEOUT 0
|
||||||
|
+
|
||||||
|
+/* Enable IPv6. */
|
||||||
|
+#define NET_PROTO_IPV6
|
||||||
|
--
|
||||||
|
2.9.3
|
||||||
|
|
@ -0,0 +1,119 @@
|
|||||||
|
From 2de005e9ac399f7064968a2611f266dc86a96700 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Laszlo Ersek <lersek@redhat.com>
|
||||||
|
Date: Fri, 24 Jul 2020 19:15:28 +0200
|
||||||
|
Subject: [PATCH] [efi] perform cable detection at NII initialization on HPE
|
||||||
|
557SFP+
|
||||||
|
|
||||||
|
Commit c0b61bad99ba ("[efi] Work around bugs in Emulex NII driver",
|
||||||
|
2015-08-17) added PXE_OPFLAGS_INITIALIZE_DETECT_CABLE to nii_open() for
|
||||||
|
working around Emulex NII driver bugs.
|
||||||
|
|
||||||
|
That broke some Mellanox drivers, so commit 6324227dcaa8 ("[efi] Skip
|
||||||
|
cable detection at initialisation where possible", 2017-03-19) predicated
|
||||||
|
PXE_OPFLAGS_INITIALIZE_DETECT_CABLE on the NII driver's *inability* to
|
||||||
|
report link status.
|
||||||
|
|
||||||
|
This in turn breaks the NII driver on (some?) HPE 557SFP+ cards, as those
|
||||||
|
drivers are capable of reporting link status, but they still need cable
|
||||||
|
detection.
|
||||||
|
|
||||||
|
So check for this card (through PCI vendor / device / subsys vendor /
|
||||||
|
subsys device identifiers), and opt for cable detection regardless of link
|
||||||
|
status reporting.
|
||||||
|
|
||||||
|
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1740827
|
||||||
|
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
|
||||||
|
---
|
||||||
|
src/drivers/net/efi/nii.c | 43 ++++++++++++++++++++++++++++++++++++---
|
||||||
|
1 file changed, 40 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/drivers/net/efi/nii.c b/src/drivers/net/efi/nii.c
|
||||||
|
index 2d87e0c63f14..0cf065e0818f 100644
|
||||||
|
--- a/src/drivers/net/efi/nii.c
|
||||||
|
+++ b/src/drivers/net/efi/nii.c
|
||||||
|
@@ -193,6 +193,9 @@ struct nii_nic {
|
||||||
|
|
||||||
|
/** Mapping list */
|
||||||
|
struct list_head mappings;
|
||||||
|
+
|
||||||
|
+ /** quirk needed for HPE 557SFP+ */
|
||||||
|
+ int quirk_hpe557sfpp;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Maximum number of received packets per poll */
|
||||||
|
@@ -219,6 +222,7 @@ static int nii_pci_open ( struct nii_nic *nii ) {
|
||||||
|
int bar;
|
||||||
|
EFI_STATUS efirc;
|
||||||
|
int rc;
|
||||||
|
+ uint16_t vid, did, subsys_vid, subsys_did;
|
||||||
|
|
||||||
|
/* Locate PCI I/O protocol */
|
||||||
|
if ( ( rc = efi_locate_device ( device, &efi_pci_io_protocol_guid,
|
||||||
|
@@ -255,7 +259,7 @@ static int nii_pci_open ( struct nii_nic *nii ) {
|
||||||
|
rc = -EEFI ( efirc );
|
||||||
|
DBGC ( nii, "NII %s could not get BAR %d attributes: "
|
||||||
|
"%s\n", nii->dev.name, bar, strerror ( rc ) );
|
||||||
|
- goto err_get_bar_attributes;
|
||||||
|
+ goto err_pci;
|
||||||
|
}
|
||||||
|
if ( desc.acpi->ResType == ACPI_ADDRESS_SPACE_TYPE_MEM ) {
|
||||||
|
nii->mem_bar = bar;
|
||||||
|
@@ -276,9 +280,36 @@ static int nii_pci_open ( struct nii_nic *nii ) {
|
||||||
|
DBGC ( nii, "no I/O BAR\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Check if HPE 557SFP+ quirk is needed */
|
||||||
|
+ if ( ( efirc = nii->pci_io->Pci.Read ( nii->pci_io,
|
||||||
|
+ EfiPciIoWidthUint16,
|
||||||
|
+ PCI_VENDOR_ID, 1,
|
||||||
|
+ &vid ) ) != 0 ||
|
||||||
|
+ ( efirc = nii->pci_io->Pci.Read ( nii->pci_io,
|
||||||
|
+ EfiPciIoWidthUint16,
|
||||||
|
+ PCI_DEVICE_ID, 1,
|
||||||
|
+ &did ) ) != 0 ||
|
||||||
|
+ ( efirc = nii->pci_io->Pci.Read ( nii->pci_io,
|
||||||
|
+ EfiPciIoWidthUint16,
|
||||||
|
+ PCI_SUBSYSTEM_VENDOR_ID, 1,
|
||||||
|
+ &subsys_vid ) ) != 0 ||
|
||||||
|
+ ( efirc = nii->pci_io->Pci.Read ( nii->pci_io,
|
||||||
|
+ EfiPciIoWidthUint16,
|
||||||
|
+ PCI_SUBSYSTEM_ID, 1,
|
||||||
|
+ &subsys_did ) ) != 0 ) {
|
||||||
|
+ rc = -EEFI ( efirc );
|
||||||
|
+ DBGC ( nii, "NII %s could not read PCI config space: %s\n",
|
||||||
|
+ nii->dev.name, strerror ( rc ) );
|
||||||
|
+ goto err_pci;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ nii->quirk_hpe557sfpp = ( vid == 0x10df &&
|
||||||
|
+ did == 0x0720 &&
|
||||||
|
+ subsys_vid == 0x103c &&
|
||||||
|
+ subsys_did == 0x803f );
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- err_get_bar_attributes:
|
||||||
|
+ err_pci:
|
||||||
|
bs->CloseProtocol ( pci_device, &efi_pci_io_protocol_guid,
|
||||||
|
efi_image_handle, device );
|
||||||
|
err_open:
|
||||||
|
@@ -1144,8 +1175,14 @@ static int nii_open ( struct net_device *netdev ) {
|
||||||
|
* cable detection at this point if any only if the driver is
|
||||||
|
* not capable of reporting link status changes at runtime via
|
||||||
|
* PXE_OPCODE_GET_STATUS.
|
||||||
|
+ *
|
||||||
|
+ * HPE 557SFP+ seems to break with
|
||||||
|
+ * PXE_OPFLAGS_INITIALIZE_DO_NOT_DETECT_CABLE, but works with
|
||||||
|
+ * PXE_OPFLAGS_INITIALIZE_DETECT_CABLE, so ignore link status reporting
|
||||||
|
+ * for that NIC, and always request cable detection.
|
||||||
|
*/
|
||||||
|
- flags = ( nii->media ? PXE_OPFLAGS_INITIALIZE_DO_NOT_DETECT_CABLE
|
||||||
|
+ flags = ( ( ! nii->quirk_hpe557sfpp ) && nii->media
|
||||||
|
+ ? PXE_OPFLAGS_INITIALIZE_DO_NOT_DETECT_CABLE
|
||||||
|
: PXE_OPFLAGS_INITIALIZE_DETECT_CABLE );
|
||||||
|
if ( ( rc = nii_initialise_flags ( nii, flags ) ) != 0 )
|
||||||
|
goto err_initialise;
|
||||||
|
|
||||||
|
base-commit: b76052335788d0ad2c4b0bded116c3b02dd4bbc2
|
||||||
|
--
|
||||||
|
2.19.1.3.g30247aa5d201
|
||||||
|
|
98
0002-Use-spec-compliant-timeouts.patch
Normal file
98
0002-Use-spec-compliant-timeouts.patch
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
From bc252caa54fcfb2e9fd0ddb01ebaa50192e85c38 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alex Williamson <alex.williamson@redhat.com>
|
||||||
|
Date: Wed, 21 Oct 2015 11:18:40 +0200
|
||||||
|
Subject: Use spec compliant timeouts
|
||||||
|
|
||||||
|
Message-id: <20150428212403.31299.29391.stgit@gimli.home>
|
||||||
|
Patchwork-id: 64951
|
||||||
|
O-Subject: [RHEL7.2 ipxe PATCH 2/2] [dhcp][RHEL-only] Use spec compliant timeouts
|
||||||
|
Bugzilla: 1196352
|
||||||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
|
||||||
|
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
||||||
|
|
||||||
|
Use local config to override iPXE's abbreviated DHCP timeouts using
|
||||||
|
the recommended values for spec compliance. This matches the state
|
||||||
|
of RHEL6 gPXE DHCP timeouts after bz968474 + bz1206042
|
||||||
|
|
||||||
|
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
(cherry picked from commit 7038f41c0131d263de5165b416500009acdbf550)
|
||||||
|
---
|
||||||
|
src/config/local/.gitignore | 1 -
|
||||||
|
src/config/local/dhcp.h | 62 +++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 62 insertions(+), 1 deletion(-)
|
||||||
|
delete mode 100644 src/config/local/.gitignore
|
||||||
|
create mode 100644 src/config/local/dhcp.h
|
||||||
|
|
||||||
|
diff --git a/src/config/local/dhcp.h b/src/config/local/dhcp.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..83df5b8
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/config/local/dhcp.h
|
||||||
|
@@ -0,0 +1,62 @@
|
||||||
|
+/*
|
||||||
|
+ * Downstream localization
|
||||||
|
+ *
|
||||||
|
+ * For RHEL, use spec compliant DHCP timeouts (bz1196352)
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * PXE spec defines timeouts of 4, 8, 16, 32 seconds
|
||||||
|
+ */
|
||||||
|
+#undef DHCP_DISC_START_TIMEOUT_SEC
|
||||||
|
+#define DHCP_DISC_START_TIMEOUT_SEC 4
|
||||||
|
+#undef DHCP_DISC_END_TIMEOUT_SEC
|
||||||
|
+#define DHCP_DISC_END_TIMEOUT_SEC 32
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Elapsed time used for early break waiting for ProxyDHCP, this therefore
|
||||||
|
+ * needs to be less than the cumulative time for the first 2 timeouts.
|
||||||
|
+ */
|
||||||
|
+#undef DHCP_DISC_PROXY_TIMEOUT_SEC
|
||||||
|
+#define DHCP_DISC_PROXY_TIMEOUT_SEC 11
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Approximate PXE spec requirement using minimum timeout (0.25s) for
|
||||||
|
+ * timeouts of 0.25, 0.5, 1, 2, 4
|
||||||
|
+ */
|
||||||
|
+#undef DHCP_REQ_START_TIMEOUT_SEC
|
||||||
|
+#define DHCP_REQ_START_TIMEOUT_SEC 0
|
||||||
|
+#undef DHCP_REQ_END_TIMEOUT_SEC
|
||||||
|
+#define DHCP_REQ_END_TIMEOUT_SEC 4
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Same as normal request phase, except non-fatal, so we extend the timer
|
||||||
|
+ * to 8 and set the early timeout to an elapsed time value that causes a
|
||||||
|
+ * break after the 4 second timeout. At least that's what we'd like to do,
|
||||||
|
+ * but our timer operates at 18Hz and has a minimum resolution of 7 cycles.
|
||||||
|
+ * Therefore the above quarter-second starting timeout looks more like
|
||||||
|
+ * 0.39s, 0.78s, 1.56s, 3.11s, 6.22s. If we had an ideal timer, we could
|
||||||
|
+ * set the timeout to 7s (0.25 + 0.5 + 1 + 2 + 4 = 7.75s) and exit without
|
||||||
|
+ * failure when the timer rolls over to 8s. With our timer, we get 0.39 +
|
||||||
|
+ * 0.78 + 1.56 + 3.11 = 5.84s. The next timeout would take us to 12.06s
|
||||||
|
+ * (+6.22). That seems like a long time to wait for an optional reply, so
|
||||||
|
+ * we reduce the early timeout to 5s to exit before the timer exceeds the
|
||||||
|
+ * max and causes a failure. This still adds one extra cycle vs the
|
||||||
|
+ * upstream defaults.
|
||||||
|
+ */
|
||||||
|
+#undef DHCP_PROXY_START_TIMEOUT_SEC
|
||||||
|
+#define DHCP_PROXY_START_TIMEOUT_SEC 0
|
||||||
|
+#undef DHCP_PROXY_END_TIMEOUT_SEC
|
||||||
|
+#define DHCP_PROXY_END_TIMEOUT_SEC 8
|
||||||
|
+#undef DHCP_REQ_PROXY_TIMEOUT_SEC
|
||||||
|
+#define DHCP_REQ_PROXY_TIMEOUT_SEC 5
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Same as above, retry each server using our approximation of standard
|
||||||
|
+ * timeouts and exit before timer induced failure.
|
||||||
|
+ */
|
||||||
|
+#undef PXEBS_START_TIMEOUT_SEC
|
||||||
|
+#define PXEBS_START_TIMEOUT_SEC 0
|
||||||
|
+#undef PXEBS_END_TIMEOUT_SEC
|
||||||
|
+#define PXEBS_END_TIMEOUT_SEC 8
|
||||||
|
+#undef PXEBS_MAX_TIMEOUT_SEC
|
||||||
|
+#define PXEBS_MAX_TIMEOUT_SEC 5
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
150
0003-Strip-802.1Q-VLAN-0-priority-tags.patch
Normal file
150
0003-Strip-802.1Q-VLAN-0-priority-tags.patch
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
From 1a921ececb22bbc41d1fda34576564e84d124a83 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ladi Prosek <lprosek@redhat.com>
|
||||||
|
Date: Mon, 11 Jul 2016 14:17:36 +0200
|
||||||
|
Subject: Strip 802.1Q VLAN 0 priority tags
|
||||||
|
|
||||||
|
RH-Author: Ladi Prosek <lprosek@redhat.com>
|
||||||
|
Message-id: <1468246656-15560-1-git-send-email-lprosek@redhat.com>
|
||||||
|
Patchwork-id: 71112
|
||||||
|
O-Subject: [RHEL7.3 ipxe PATCH] [netdevice] Strip 802.Q VLAN 0 priority tags
|
||||||
|
Bugzilla: 1316329
|
||||||
|
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||||
|
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
||||||
|
RH-Acked-by: Xiao Wang <jasowang@redhat.com>
|
||||||
|
|
||||||
|
iPXE was unable to receive priority tagged packets specified in
|
||||||
|
the 802.1Q standard and supported by all major networking stacks.
|
||||||
|
|
||||||
|
This commit adds a new function net_pull_tags which is called by
|
||||||
|
all consumers of incoming packets after stripping their link-layer
|
||||||
|
headers.
|
||||||
|
|
||||||
|
Upstream patch:
|
||||||
|
http://lists.ipxe.org/pipermail/ipxe-devel/2016-July/005099.html
|
||||||
|
|
||||||
|
There is a difference between the upstream patch and this patch in the
|
||||||
|
path prefix of "interface/pxe/pxe_undi.c" because we don't have upstream
|
||||||
|
commit f468f12b1eca.
|
||||||
|
|
||||||
|
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
src/arch/x86/interface/pxe/pxe_undi.c | 6 +++++
|
||||||
|
src/include/ipxe/netdevice.h | 2 ++
|
||||||
|
src/interface/efi/efi_snp.c | 7 ++++++
|
||||||
|
src/net/netdevice.c | 44 +++++++++++++++++++++++++++++++++++
|
||||||
|
4 files changed, 59 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/arch/x86/interface/pxe/pxe_undi.c b/src/arch/x86/interface/pxe/pxe_undi.c
|
||||||
|
index 2eb6817..2ea1451 100644
|
||||||
|
--- a/src/arch/x86/interface/pxe/pxe_undi.c
|
||||||
|
+++ b/src/arch/x86/interface/pxe/pxe_undi.c
|
||||||
|
@@ -976,6 +976,12 @@ static PXENV_EXIT_t pxenv_undi_isr ( struct s_PXENV_UNDI_ISR *undi_isr ) {
|
||||||
|
}
|
||||||
|
ll_hlen = ( len - iob_len ( iobuf ) );
|
||||||
|
|
||||||
|
+ /* Strip link-layer-independent headers */
|
||||||
|
+ if ( ( rc = net_pull_tags ( iobuf, pxe_netdev, &net_proto ) ) != 0 ) {
|
||||||
|
+ /* Assume unknown net_proto */
|
||||||
|
+ net_proto = 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* Determine network-layer protocol */
|
||||||
|
switch ( net_proto ) {
|
||||||
|
case htons ( ETH_P_IP ):
|
||||||
|
diff --git a/src/include/ipxe/netdevice.h b/src/include/ipxe/netdevice.h
|
||||||
|
index a1d207f..cea87f7 100644
|
||||||
|
--- a/src/include/ipxe/netdevice.h
|
||||||
|
+++ b/src/include/ipxe/netdevice.h
|
||||||
|
@@ -719,6 +719,8 @@ extern int net_tx ( struct io_buffer *iobuf, struct net_device *netdev,
|
||||||
|
extern int net_rx ( struct io_buffer *iobuf, struct net_device *netdev,
|
||||||
|
uint16_t net_proto, const void *ll_dest,
|
||||||
|
const void *ll_source, unsigned int flags );
|
||||||
|
+extern int net_pull_tags ( struct io_buffer *iobuf, struct net_device *netdev,
|
||||||
|
+ uint16_t *net_proto );
|
||||||
|
extern void net_poll ( void );
|
||||||
|
extern struct net_device_configurator *
|
||||||
|
find_netdev_configurator ( const char *name );
|
||||||
|
diff --git a/src/interface/efi/efi_snp.c b/src/interface/efi/efi_snp.c
|
||||||
|
index e6388bf..d1a1a44 100644
|
||||||
|
--- a/src/interface/efi/efi_snp.c
|
||||||
|
+++ b/src/interface/efi/efi_snp.c
|
||||||
|
@@ -745,6 +745,13 @@ efi_snp_receive ( EFI_SIMPLE_NETWORK_PROTOCOL *snp,
|
||||||
|
goto out_bad_ll_header;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Strip link-layer-independent headers */
|
||||||
|
+ if ( ( rc = net_pull_tags ( iobuf, snpdev->netdev, &iob_net_proto ) ) ) {
|
||||||
|
+ DBGC ( snpdev, "SNPDEV %p could not parse tags: %s\n",
|
||||||
|
+ snpdev, strerror ( rc ) );
|
||||||
|
+ goto out_bad_ll_header;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* Return link-layer header parameters to caller, if required */
|
||||||
|
if ( ll_header_len )
|
||||||
|
*ll_header_len = ll_protocol->ll_header_len;
|
||||||
|
diff --git a/src/net/netdevice.c b/src/net/netdevice.c
|
||||||
|
index 9df2119..c53d5e3 100644
|
||||||
|
--- a/src/net/netdevice.c
|
||||||
|
+++ b/src/net/netdevice.c
|
||||||
|
@@ -1028,6 +1028,44 @@ int net_rx ( struct io_buffer *iobuf, struct net_device *netdev,
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
+ * Strip extra link-layer-independent tags from a received packet
|
||||||
|
+ *
|
||||||
|
+ * @v iobuf I/O buffer
|
||||||
|
+ * @v netdev Network device
|
||||||
|
+ * @v net_proto Network-layer protocol, in network-byte order
|
||||||
|
+ * @ret rc Return status code
|
||||||
|
+ *
|
||||||
|
+ * This function should be called after stripping link-layer headers but
|
||||||
|
+ * before inspecting the network-layer protocol.
|
||||||
|
+ */
|
||||||
|
+int net_pull_tags ( struct io_buffer *iobuf, struct net_device *netdev,
|
||||||
|
+ uint16_t *net_proto ) {
|
||||||
|
+ struct vlan_header *vlanhdr;
|
||||||
|
+ uint16_t tag;
|
||||||
|
+
|
||||||
|
+ /* Strip 802.1Q VLAN 0 priority tags if present */
|
||||||
|
+ while ( *net_proto == htons ( ETH_P_8021Q ) ) {
|
||||||
|
+ if ( iob_len ( iobuf ) < sizeof ( *vlanhdr ) ) {
|
||||||
|
+ DBG ( "VLAN header too short at %zd bytes (min %zd bytes)\n",
|
||||||
|
+ iob_len ( iobuf ), sizeof ( *vlanhdr ) );
|
||||||
|
+ return -EINVAL;
|
||||||
|
+ }
|
||||||
|
+ vlanhdr = ( struct vlan_header * ) iobuf->data;
|
||||||
|
+ tag = VLAN_TAG ( ntohs ( vlanhdr->tci ) );
|
||||||
|
+
|
||||||
|
+ if ( tag == 0 && ! vlan_find ( netdev, tag ) ) {
|
||||||
|
+ /* VLAN 0, strip and continue */
|
||||||
|
+ *net_proto = vlanhdr->net_proto;
|
||||||
|
+ iob_pull ( iobuf, sizeof ( *vlanhdr ) );
|
||||||
|
+ } else {
|
||||||
|
+ /* Real VLAN tag, leave it alone */
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
* Poll the network stack
|
||||||
|
*
|
||||||
|
* This polls all interfaces for received packets, and processes
|
||||||
|
@@ -1078,6 +1116,12 @@ void net_poll ( void ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Remove link-layer-independent headers */
|
||||||
|
+ if ( ( rc = net_pull_tags ( iobuf, netdev, &net_proto ) ) ) {
|
||||||
|
+ free_iob ( iobuf );
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* Hand packet to network layer */
|
||||||
|
if ( ( rc = net_rx ( iob_disown ( iobuf ), netdev,
|
||||||
|
net_proto, ll_dest,
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
11
ipxe-ping-cmd.patch
Normal file
11
ipxe-ping-cmd.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- ./src/config/general.h.orig 2021-01-26 19:47:08.940559209 -0500
|
||||||
|
+++ ./src/config/general.h 2021-01-26 19:47:15.739526567 -0500
|
||||||
|
@@ -148,7 +148,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||||
|
//#define PCI_CMD /* PCI commands */
|
||||||
|
//#define PARAM_CMD /* Form parameter commands */
|
||||||
|
//#define NEIGHBOUR_CMD /* Neighbour management commands */
|
||||||
|
-//#define PING_CMD /* Ping command */
|
||||||
|
+#define PING_CMD /* Ping command */
|
||||||
|
//#define CONSOLE_CMD /* Console command */
|
||||||
|
//#define IPSTAT_CMD /* IP statistics commands */
|
||||||
|
//#define PROFSTAT_CMD /* Profiling commands */
|
12
ipxe-vlan-cmds.patch
Normal file
12
ipxe-vlan-cmds.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up ./src/config/general.h.vlan ./src/config/general.h
|
||||||
|
--- ./src/config/general.h.vlan 2018-10-09 13:11:42.940904753 -0400
|
||||||
|
+++ ./src/config/general.h 2018-10-09 13:12:03.258821711 -0400
|
||||||
|
@@ -140,7 +140,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||||
|
//#define TIME_CMD /* Time commands */
|
||||||
|
//#define DIGEST_CMD /* Image crypto digest commands */
|
||||||
|
//#define LOTEST_CMD /* Loopback testing commands */
|
||||||
|
-//#define VLAN_CMD /* VLAN commands */
|
||||||
|
+#define VLAN_CMD /* VLAN commands */
|
||||||
|
//#define PXE_CMD /* PXE commands */
|
||||||
|
//#define REBOOT_CMD /* Reboot command */
|
||||||
|
//#define POWEROFF_CMD /* Power off command */
|
478
ipxe.spec
Normal file
478
ipxe.spec
Normal file
@ -0,0 +1,478 @@
|
|||||||
|
# Resulting binary formats we want from iPXE
|
||||||
|
%global formats rom
|
||||||
|
|
||||||
|
# PCI IDs (vendor,product) of the ROMS we want for QEMU
|
||||||
|
#
|
||||||
|
# pcnet32: 0x1022 0x2000
|
||||||
|
# ne2k_pci: 0x10ec 0x8029
|
||||||
|
# e1000: 0x8086 0x100e
|
||||||
|
# rtl8139: 0x10ec 0x8139
|
||||||
|
# virtio-net: 0x1af4 0x1000
|
||||||
|
# eepro100: 0x8086 0x1209
|
||||||
|
# e1000e: 0x8086 0x10d3
|
||||||
|
# vmxnet3: 0x15ad 0x07b0
|
||||||
|
%global qemuroms 10222000 10ec8029 8086100e 10ec8139 1af41000 80861209 808610d3 15ad07b0
|
||||||
|
|
||||||
|
# We only build the ROMs if on an EFI build host. The resulting
|
||||||
|
# binary RPM will be noarch, so other archs will still be able
|
||||||
|
# to use the binary ROMs.
|
||||||
|
%global buildarches x86_64 aarch64
|
||||||
|
|
||||||
|
# debugging firmwares does not go the same way as a normal program.
|
||||||
|
# moreover, all architectures providing debuginfo for a single noarch
|
||||||
|
# package is currently clashing in koji, so don't bother.
|
||||||
|
%global debug_package %{nil}
|
||||||
|
|
||||||
|
# Upstream don't do "releases" :-( So we're going to use the date
|
||||||
|
# as the version, and a GIT hash as the release. Generate new GIT
|
||||||
|
# snapshots using the folowing commands:
|
||||||
|
#
|
||||||
|
# $ hash=`git log -1 --format='%h'`
|
||||||
|
# $ date=`git log -1 --format='%cd' --date=short | tr -d -`
|
||||||
|
# $ git archive --prefix ipxe-${date}-git${hash}/ ${hash} | xz -7e > ipxe-${date}-git${hash}.tar.xz
|
||||||
|
#
|
||||||
|
# And then change these two:
|
||||||
|
|
||||||
|
%global hash 133f4c47
|
||||||
|
%global date 20181214
|
||||||
|
|
||||||
|
Name: ipxe
|
||||||
|
Version: %{date}
|
||||||
|
Release: 9.git%{hash}%{?dist}
|
||||||
|
Summary: A network boot loader
|
||||||
|
|
||||||
|
Group: System Environment/Base
|
||||||
|
License: GPLv2 with additional permissions and BSD
|
||||||
|
URL: http://ipxe.org/
|
||||||
|
|
||||||
|
Source0: %{name}-%{version}-git%{hash}.tar.xz
|
||||||
|
Source1: script.ipxe
|
||||||
|
|
||||||
|
# Enable IPv6 for qemu's config
|
||||||
|
# Sent upstream: http://lists.ipxe.org/pipermail/ipxe-devel/2015-November/004494.html
|
||||||
|
Patch0001: 0001-build-customize-configuration.patch
|
||||||
|
Patch0002: 0002-Use-spec-compliant-timeouts.patch
|
||||||
|
Patch0003: 0003-Strip-802.1Q-VLAN-0-priority-tags.patch
|
||||||
|
Patch0004: ipxe-vlan-cmds.patch
|
||||||
|
Patch0005: 0001-efi-perform-cable-detection-at-NII-initialization-on-HPE-557SFP.patch
|
||||||
|
Patch0006: ipxe-ping-cmd.patch
|
||||||
|
Patch0007: 0001-arm-Provide-dummy-implementation-for-in-out-s-b-w-l.patch
|
||||||
|
|
||||||
|
%ifarch %{buildarches}
|
||||||
|
BuildRequires: perl-interpreter
|
||||||
|
BuildRequires: perl-Getopt-Long
|
||||||
|
BuildRequires: mtools
|
||||||
|
BuildRequires: mkisofs
|
||||||
|
BuildRequires: edk2-tools
|
||||||
|
BuildRequires: xz-devel
|
||||||
|
BuildRequires: binutils-devel
|
||||||
|
%endif
|
||||||
|
%ifarch x86_64
|
||||||
|
BuildRequires: syslinux
|
||||||
|
%endif
|
||||||
|
|
||||||
|
Obsoletes: gpxe <= 1.0.1
|
||||||
|
|
||||||
|
%ifarch x86_64
|
||||||
|
%package rhcert
|
||||||
|
Summary: Redhat hwcert custom ipxe image
|
||||||
|
Group: Development/Tools
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%package bootimgs-x86
|
||||||
|
Summary: X86 Network boot loader images in bootable USB, CD, floppy and GRUB formats
|
||||||
|
Group: Development/Tools
|
||||||
|
BuildArch: noarch
|
||||||
|
Provides: %{name}-bootimgs = %{version}-%{release}
|
||||||
|
Obsoletes: %{name}-bootimgs < 20181214-9.git133f4c47
|
||||||
|
Obsoletes: gpxe-bootimgs <= 1.0.1
|
||||||
|
|
||||||
|
%package roms
|
||||||
|
Summary: Network boot loader roms in .rom format
|
||||||
|
Group: Development/Tools
|
||||||
|
Requires: %{name}-roms-qemu = %{version}-%{release}
|
||||||
|
BuildArch: noarch
|
||||||
|
Obsoletes: gpxe-roms <= 1.0.1
|
||||||
|
|
||||||
|
%package roms-qemu
|
||||||
|
Summary: Network boot loader roms supported by QEMU, .rom format
|
||||||
|
Group: Development/Tools
|
||||||
|
BuildArch: noarch
|
||||||
|
Obsoletes: gpxe-roms-qemu <= 1.0.1
|
||||||
|
|
||||||
|
%description rhcert
|
||||||
|
Custom ipxe image for use in hardware certification and validation
|
||||||
|
|
||||||
|
%description bootimgs-x86
|
||||||
|
iPXE is an open source network bootloader. It provides a direct
|
||||||
|
replacement for proprietary PXE ROMs, with many extra features such as
|
||||||
|
DNS, HTTP, iSCSI, etc.
|
||||||
|
|
||||||
|
This package contains the iPXE boot images in USB, CD, floppy, and PXE
|
||||||
|
UNDI formats.
|
||||||
|
|
||||||
|
%description roms
|
||||||
|
iPXE is an open source network bootloader. It provides a direct
|
||||||
|
replacement for proprietary PXE ROMs, with many extra features such as
|
||||||
|
DNS, HTTP, iSCSI, etc.
|
||||||
|
|
||||||
|
This package contains the iPXE roms in .rom format.
|
||||||
|
|
||||||
|
%description roms-qemu
|
||||||
|
iPXE is an open source network bootloader. It provides a direct
|
||||||
|
replacement for proprietary PXE ROMs, with many extra features such as
|
||||||
|
DNS, HTTP, iSCSI, etc.
|
||||||
|
|
||||||
|
This package contains the iPXE ROMs for devices emulated by QEMU, in
|
||||||
|
.rom format.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%ifarch aarch64
|
||||||
|
%package bootimgs-aarch64
|
||||||
|
Summary: AArch64 Network boot loader images in bootable USB and GRUB formats
|
||||||
|
Group: Development/Tools
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description bootimgs-aarch64
|
||||||
|
iPXE is an open source network bootloader. It provides a direct
|
||||||
|
replacement for proprietary PXE ROMs, with many extra features such as
|
||||||
|
DNS, HTTP, iSCSI, etc.
|
||||||
|
|
||||||
|
This package contains the iPXE ARM64 boot images in USB and GRUB formats.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%description
|
||||||
|
iPXE is an open source network bootloader. It provides a direct
|
||||||
|
replacement for proprietary PXE ROMs, with many extra features such as
|
||||||
|
DNS, HTTP, iSCSI, etc.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q -n %{name}-%{version}-git%{hash}
|
||||||
|
%autopatch -p1
|
||||||
|
pushd src
|
||||||
|
# ath9k drivers are too big for an Option ROM, and ipxe devs say it doesn't
|
||||||
|
# make sense anyways
|
||||||
|
# http://lists.ipxe.org/pipermail/ipxe-devel/2012-March/001290.html
|
||||||
|
rm -rf drivers/net/ath/ath9k
|
||||||
|
|
||||||
|
cp %{SOURCE1} .
|
||||||
|
popd
|
||||||
|
|
||||||
|
|
||||||
|
%build
|
||||||
|
cd src
|
||||||
|
|
||||||
|
make_ipxe() {
|
||||||
|
make %{?_smp_mflags} \
|
||||||
|
NO_WERROR=1 V=1 \
|
||||||
|
GITVERSION=%{hash} \
|
||||||
|
"$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
%ifarch x86_64
|
||||||
|
|
||||||
|
make_ipxe bin-x86_64-efi/ipxe.efi EMBED=script.ipxe
|
||||||
|
mv bin-x86_64-efi/ipxe.efi bin-x86_64-efi/ipxe-rhcert.efi
|
||||||
|
|
||||||
|
make_ipxe bin-i386-efi/ipxe.efi bin-x86_64-efi/ipxe.efi \
|
||||||
|
bin-x86_64-efi/snponly.efi
|
||||||
|
|
||||||
|
make_ipxe ISOLINUX_BIN=/usr/share/syslinux/isolinux.bin \
|
||||||
|
bin/undionly.kpxe bin/ipxe.{dsk,iso,usb,lkrn} \
|
||||||
|
allroms
|
||||||
|
|
||||||
|
# build roms with efi support for qemu
|
||||||
|
mkdir bin-combined
|
||||||
|
for rom in %{qemuroms}; do
|
||||||
|
make_ipxe CONFIG=qemu bin/${rom}.rom
|
||||||
|
make_ipxe CONFIG=qemu bin-x86_64-efi/${rom}.efidrv
|
||||||
|
vid="0x${rom%%????}"
|
||||||
|
did="0x${rom#????}"
|
||||||
|
EfiRom -f "$vid" -i "$did" --pci23 \
|
||||||
|
-ec bin-x86_64-efi/${rom}.efidrv \
|
||||||
|
-o bin-combined/${rom}.eficrom
|
||||||
|
util/catrom.pl \
|
||||||
|
bin/${rom}.rom \
|
||||||
|
bin-combined/${rom}.eficrom \
|
||||||
|
> bin-combined/${rom}.rom
|
||||||
|
EfiRom -d bin-combined/${rom}.rom
|
||||||
|
# truncate to at least 256KiB
|
||||||
|
truncate -s \>256K bin-combined/${rom}.rom
|
||||||
|
# verify rom fits in 256KiB
|
||||||
|
test $(stat -c '%s' bin-combined/${rom}.rom) -le $((256 * 1024))
|
||||||
|
done
|
||||||
|
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%ifarch aarch64
|
||||||
|
make_ipxe bin-arm64-efi/snponly.efi
|
||||||
|
%if 0%{?fedora}
|
||||||
|
make_ipxe bin-arm64-efi/ipxe.efi
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%install
|
||||||
|
%ifarch x86_64
|
||||||
|
mkdir -p %{buildroot}/%{_datadir}/%{name}/
|
||||||
|
mkdir -p %{buildroot}/%{_datadir}/%{name}.efi/
|
||||||
|
pushd src/bin/
|
||||||
|
|
||||||
|
cp -a undionly.kpxe ipxe.{iso,usb,dsk,lkrn} %{buildroot}/%{_datadir}/%{name}/
|
||||||
|
|
||||||
|
for fmt in %{formats};do
|
||||||
|
for img in *.${fmt};do
|
||||||
|
if [ -e $img ]; then
|
||||||
|
cp -a $img %{buildroot}/%{_datadir}/%{name}/
|
||||||
|
echo %{_datadir}/%{name}/$img >> ../../${fmt}.list
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
popd
|
||||||
|
|
||||||
|
cp -a src/bin-i386-efi/ipxe.efi %{buildroot}/%{_datadir}/%{name}/ipxe-i386.efi
|
||||||
|
cp -a src/bin-x86_64-efi/ipxe.efi %{buildroot}/%{_datadir}/%{name}/ipxe-x86_64.efi
|
||||||
|
cp -a src/bin-x86_64-efi/ipxe-rhcert.efi %{buildroot}/%{_datadir}/%{name}/ipxe-x86_64-rhcert.efi
|
||||||
|
cp -a src/bin-x86_64-efi/snponly.efi %{buildroot}/%{_datadir}/%{name}/ipxe-snponly-x86_64.efi
|
||||||
|
|
||||||
|
# the roms supported by qemu will be packaged separatedly
|
||||||
|
# remove from the main rom list and add them to qemu.list
|
||||||
|
for fmt in rom ;do
|
||||||
|
for rom in %{qemuroms} ; do
|
||||||
|
sed -i -e "/\/${rom}.${fmt}/d" ${fmt}.list
|
||||||
|
echo %{_datadir}/%{name}/${rom}.${fmt} >> qemu.${fmt}.list
|
||||||
|
done
|
||||||
|
done
|
||||||
|
for rom in %{qemuroms}; do
|
||||||
|
cp src/bin-combined/${rom}.rom %{buildroot}/%{_datadir}/%{name}.efi/
|
||||||
|
echo %{_datadir}/%{name}.efi/${rom}.rom >> qemu.rom.list
|
||||||
|
done
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%ifarch aarch64
|
||||||
|
mkdir -p %{buildroot}/%{_datadir}/%{name}/arm64-efi
|
||||||
|
cp -a src/bin-arm64-efi/snponly.efi %{buildroot}/%{_datadir}/%{name}/arm64-efi/snponly.efi
|
||||||
|
%if 0%{?fedora}
|
||||||
|
cp -a src/bin-arm64-efi/ipxe.efi %{buildroot}/%{_datadir}/%{name}/arm64-efi/ipxe.efi
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%ifarch x86_64
|
||||||
|
%files bootimgs-x86
|
||||||
|
%dir %{_datadir}/%{name}
|
||||||
|
%{_datadir}/%{name}/ipxe.iso
|
||||||
|
%{_datadir}/%{name}/ipxe.usb
|
||||||
|
%{_datadir}/%{name}/ipxe.dsk
|
||||||
|
%{_datadir}/%{name}/ipxe.lkrn
|
||||||
|
%{_datadir}/%{name}/ipxe-i386.efi
|
||||||
|
%{_datadir}/%{name}/ipxe-x86_64.efi
|
||||||
|
%{_datadir}/%{name}/undionly.kpxe
|
||||||
|
%{_datadir}/%{name}/ipxe-snponly-x86_64.efi
|
||||||
|
%doc COPYING COPYING.GPLv2 COPYING.UBDL
|
||||||
|
|
||||||
|
%files roms -f rom.list
|
||||||
|
%dir %{_datadir}/%{name}
|
||||||
|
%doc COPYING COPYING.GPLv2 COPYING.UBDL
|
||||||
|
|
||||||
|
%files roms-qemu -f qemu.rom.list
|
||||||
|
%dir %{_datadir}/%{name}
|
||||||
|
%dir %{_datadir}/%{name}.efi
|
||||||
|
%doc COPYING COPYING.GPLv2 COPYING.UBDL
|
||||||
|
|
||||||
|
%files rhcert
|
||||||
|
%dir %{_datadir}/%{name}
|
||||||
|
%{_datadir}/%{name}/ipxe-x86_64-rhcert.efi
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%ifarch aarch64
|
||||||
|
%files bootimgs-aarch64
|
||||||
|
%dir %{_datadir}/%{name}
|
||||||
|
%dir %{_datadir}/%{name}/arm64-efi
|
||||||
|
%if 0%{?fedora}
|
||||||
|
%{_datadir}/%{name}/arm64-efi/ipxe.efi
|
||||||
|
%endif
|
||||||
|
%{_datadir}/%{name}/arm64-efi/snponly.efi
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Tue Mar 01 2022 Yaakov Selkowitz <yselkowi@redhat.com> - 20181214-9.git133f4c47
|
||||||
|
- Add ARM 64 EFI artifacts (bz 2059350)
|
||||||
|
|
||||||
|
* Fri Feb 19 2021 Jarod Wilson <jarod@redhat.com> - 20181210-8.git133f4c47
|
||||||
|
- combine BIOS and EFI roms using utils/catrom.pl [lersek] (bz 1926561)
|
||||||
|
|
||||||
|
* Tue Jan 26 2021 Jarod Wilson <jarod@redhat.com> - 20181210-7.git133f4c47
|
||||||
|
- Build ping command (bz 1913719)
|
||||||
|
|
||||||
|
* Mon Jul 27 2020 Neil Horman <nhorman@redhat.com> - 20181210-6.git133f4c47
|
||||||
|
- Add quirk for link detect on HP 557SFP cards (bz 1740827)
|
||||||
|
|
||||||
|
* Tue Jan 7 2020 Neil Horman <nhorman@redhat.com> - 20181210-5.git133f4c47
|
||||||
|
- Add rhcert subpackage (bz 1756012)
|
||||||
|
|
||||||
|
* Fri Dec 13 2019 Neil Horman <nhorman@redhat.com> - 20181210-4.git133f4c47
|
||||||
|
- Add snponly.efi image (bz 1776929)
|
||||||
|
|
||||||
|
* Tue Aug 13 2019 Danilo de Paula <ddepaula@redhat.com> - 20181210-3.git133f4c47
|
||||||
|
- Release bump
|
||||||
|
|
||||||
|
* Thu Jul 25 2019 Danilo de Paula <ddepaula@redhat.com> - 20181210-2.git133f4c47
|
||||||
|
- Resolves rhbz#1723702
|
||||||
|
(virtio rom near 256k boundary)
|
||||||
|
|
||||||
|
* Fri Dec 14 2018 Neil Horman <nhorman@redhat.com> - 20181210-1.git133f4c47
|
||||||
|
- Update to latest upstream
|
||||||
|
- Add vlan cmds
|
||||||
|
|
||||||
|
* Fri Nov 16 2018 Danilo C. L. de Paula <ddepaula@redhat.com> - 20170710-6.git0600d3ae
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Thu Jul 12 2018 Danilo - 20170710-5.git0600d3ae
|
||||||
|
- Bumping release number and rebuilding ipxe for RHEL-8.0
|
||||||
|
|
||||||
|
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 20170710-3.git0600d3ae
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Nov 21 2017 Paolo Bonzini <pbonzini@redhat.com> - ipxe-20170710-2.git0600d3ae
|
||||||
|
- Include bugfix and configuration patches from RHEL
|
||||||
|
- Disable cross compilation on RHEL
|
||||||
|
|
||||||
|
* Thu Aug 03 2017 Cole Robinson <crobinso@redhat.com> - ipxe-20170710-1.git0600d3ae
|
||||||
|
- Update to ipxe 0600d3ae for qemu-2.10.0
|
||||||
|
|
||||||
|
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 20161108-4.gitb991c67
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 20161108-3.gitb991c67
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 20161108-2.gitb991c67
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sun Dec 04 2016 Cole Robinson <crobinso@redhat.com> - 20161108-1.gitb991c67
|
||||||
|
- Rebase to version shipped with qemu 2.8
|
||||||
|
|
||||||
|
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 20150821-3.git4e03af8
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jan 26 2016 Cole Robinson <crobinso@redhat.com> 20150821-2.git4e03af8
|
||||||
|
- Build ipxe.efi (bug 1300865)
|
||||||
|
- Build eepro100 rom for qemu
|
||||||
|
|
||||||
|
* Tue Nov 17 2015 Cole Robinson <crobinso@redhat.com> - 20150821-1.git4e03af8
|
||||||
|
- Update to commit 4e03af8 for qemu 2.5
|
||||||
|
- Enable IPv6 (bug 1280318)
|
||||||
|
|
||||||
|
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20150407-3.gitdc795b9f
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Apr 16 2015 Paolo Bonzini <pbonzini@redhat.com> - 20150407-2.gitdc795b9f
|
||||||
|
- Fix virtio bug with UEFI driver
|
||||||
|
|
||||||
|
* Thu Apr 16 2015 Paolo Bonzini <pbonzini@redhat.com> - 20150407-1.gitdc795b9f
|
||||||
|
- Update to latest upstream snapshot
|
||||||
|
- Switch source to .tar.xz
|
||||||
|
- Include patches from QEMU submodule
|
||||||
|
- Use config file for configuration
|
||||||
|
- Distribute additional permissions on top of GPLv2 ("UBDL")
|
||||||
|
|
||||||
|
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20140303-3.gitff1e7fc7
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20140303-2.gitff1e7fc7
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Mar 03 2014 Cole Robinson <crobinso@redhat.com> - 20140303-1.gitff1e7fc7
|
||||||
|
- Allow access to ipxe prompt if VM is set to pxe boot (bz #842932)
|
||||||
|
- Enable PNG support (bz #1058176)
|
||||||
|
|
||||||
|
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20130517-3.gitc4bce43
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon May 20 2013 Paolo Bonzini <pbonzini@redhat.com> - 20130103-3.git717279a
|
||||||
|
- Fix BuildRequires, use cross-compiler when building on 32-bit i686
|
||||||
|
- Build UEFI drivers for QEMU and include them (patch from Gerd Hoffmann.
|
||||||
|
BZ#958875)
|
||||||
|
|
||||||
|
* Fri May 17 2013 Daniel P. Berrange <berrange@redhat.com> - 20130517-1.gitc4bce43
|
||||||
|
- Update to latest upstream snapshot
|
||||||
|
|
||||||
|
* Fri May 17 2013 Daniel P. Berrange <berrange@redhat.com> - 20130103-3.git717279a
|
||||||
|
- Fix build with GCC 4.8 (rhbz #914091)
|
||||||
|
|
||||||
|
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20130103-2.git717279a
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Jan 3 2013 Daniel P. Berrange <berrange@redhat.com> - 20130103-1.git717279a
|
||||||
|
- Updated to latest GIT snapshot
|
||||||
|
|
||||||
|
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20120328-2.gitaac9718
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Mar 28 2012 Daniel P. Berrange <berrange@redhat.com> - 20120328-1.gitaac9718
|
||||||
|
- Update to newer upstream
|
||||||
|
|
||||||
|
* Fri Mar 23 2012 Daniel P. Berrange <berrange@redhat.com> - 20120319-3.git0b2c788
|
||||||
|
- Remove more defattr statements
|
||||||
|
|
||||||
|
* Tue Mar 20 2012 Daniel P. Berrange <berrange@redhat.com> - 20120319-2.git0b2c788
|
||||||
|
- Remove BuildRoot & rm -rf of it in install/clean sections
|
||||||
|
- Remove defattr in file section
|
||||||
|
- Switch to use global, instead of define for macros
|
||||||
|
- Add note about Patch1 not going upstream
|
||||||
|
- Split BRs across lines for easier readability
|
||||||
|
|
||||||
|
* Mon Feb 27 2012 Daniel P. Berrange <berrange@redhat.com> - 20120319-1.git0b2c788
|
||||||
|
- Initial package based on gPXE
|
||||||
|
|
||||||
|
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.1-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Feb 21 2011 Matt Domsch <mdomsch@fedoraproject.org> - 1.0.1-4
|
||||||
|
- don't use -Werror, it flags a failure that is not a failure for gPXE
|
||||||
|
|
||||||
|
* Mon Feb 21 2011 Matt Domsch <mdomsch@fedoraproject.org> - 1.0.1-3
|
||||||
|
- Fix virtio-net ethernet frame length (patch by cra), fixes BZ678789
|
||||||
|
|
||||||
|
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.1-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Aug 5 2010 Matt Domsch <mdomsch@fedoraproject.org> - 1.0.1-1
|
||||||
|
- New drivers: Intel e1000, e1000e, igb, EFI snpnet, JMicron jme,
|
||||||
|
Neterion X3100, vxge, pcnet32.
|
||||||
|
- Bug fixes and improvements to drivers, wireless, DHCP, iSCSI,
|
||||||
|
COMBOOT, and EFI.
|
||||||
|
* Tue Feb 2 2010 Matt Domsch <mdomsch@fedoraproject.org> - 1.0.0-1
|
||||||
|
- bugfix release, also adds wireless card support
|
||||||
|
- bnx2 builds again
|
||||||
|
- drop our one patch
|
||||||
|
|
||||||
|
* Tue Oct 27 2009 Matt Domsch <mdomsch@fedoraproject.org> - 0.9.9-1
|
||||||
|
- new upstream version 0.9.9
|
||||||
|
-- plus patches from git up to 20090818 which fix build errors and
|
||||||
|
other release-critical bugs.
|
||||||
|
-- 0.9.9: added Attansic L1E and sis190/191 ethernet drivers. Fixes
|
||||||
|
and updates to e1000 and 3c90x drivers.
|
||||||
|
-- 0.9.8: new commands: time, sleep, md5sum, sha1sum. 802.11 wireless
|
||||||
|
support with Realtek 8180/8185 and non-802.11n Atheros drivers.
|
||||||
|
New Marvell Yukon-II gigabet Ethernet driver. HTTP redirection
|
||||||
|
support. SYSLINUX floppy image type (.sdsk) with usable file
|
||||||
|
system. Rewrites, fixes, and updates to 3c90x, forcedeth, pcnet32,
|
||||||
|
e1000, and hermon drivers.
|
||||||
|
|
||||||
|
* Mon Oct 5 2009 Matt Domsch <mdomsch@fedoraproject.org> - 0.9.7-6
|
||||||
|
- move rtl8029 from -roms to -roms-qemu for qemu ne2k_pci NIC (BZ 526776)
|
||||||
|
|
||||||
|
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9.7-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue May 19 2009 Matt Domsch <mdomsch@fedoraproject.org> - 0.9.7-4
|
||||||
|
- add undionly.kpxe to -bootimgs
|
||||||
|
|
||||||
|
* Tue May 12 2009 Matt Domsch <mdomsch@fedoraproject.org> - 0.9.7-3
|
||||||
|
- handle isolinux changing paths
|
||||||
|
|
||||||
|
* Sat May 9 2009 Matt Domsch <mdomsch@fedoraproject.org> - 0.9.7-2
|
||||||
|
- add dist tag
|
||||||
|
|
||||||
|
* Thu Mar 26 2009 Matt Domsch <mdomsch@fedoraproject.org> - 0.9.7-1
|
||||||
|
- Initial release based on etherboot spec
|
3
script.ipxe
Executable file
3
script.ipxe
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!ipxe
|
||||||
|
imgexec file:rhcert-script.ipxe
|
||||||
|
|
Loading…
Reference in New Issue
Block a user