Compare commits
No commits in common. "c8" and "c10s" have entirely different histories.
5
.gitignore
vendored
5
.gitignore
vendored
@ -1 +1,4 @@
|
||||
SOURCES/ipxe-20181214-git133f4c47.tar.xz
|
||||
noarch/
|
||||
.build*.log
|
||||
*.src.rpm
|
||||
/ipxe-*.tar.xz
|
||||
|
@ -1 +0,0 @@
|
||||
a79e649fbb476761a9e5a165f3467d783c0a5fe9 SOURCES/ipxe-20181214-git133f4c47.tar.xz
|
10
0001-build-customize-configuration.patch
Normal file
10
0001-build-customize-configuration.patch
Normal file
@ -0,0 +1,10 @@
|
||||
diff -Naupr ipxe-20240119-gitde8a0821/src/config/local/general.h ipxe-20240119-gitde8a0821.new/src/config/local/general.h
|
||||
--- ipxe-20240119-gitde8a0821/src/config/local/general.h 1970-01-01 03:00:00
|
||||
+++ ipxe-20240119-gitde8a0821.new/src/config/local/general.h 2024-02-24 13:34:58
|
||||
@@ -0,0 +1,6 @@
|
||||
+// enable additional options
|
||||
+#define NET_PROTO_IPV6 /* IPv6 protocol */
|
||||
+#define DOWNLOAD_PROTO_HTTPS /* Secure Hypertext Transfer Protocol */
|
||||
+#define DOWNLOAD_PROTO_NFS /* Network File System Protocol */
|
||||
+#define REBOOT_CMD /* Reboot command */
|
||||
+#define POWEROFF_CMD /* Power off command */
|
@ -1,129 +0,0 @@
|
||||
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
|
||||
*
|
@ -1,17 +0,0 @@
|
||||
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
|
||||
|
@ -1,119 +0,0 @@
|
||||
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
|
||||
|
@ -1,150 +0,0 @@
|
||||
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
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- ./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 */
|
@ -1,12 +0,0 @@
|
||||
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 */
|
@ -1,3 +0,0 @@
|
||||
#!ipxe
|
||||
imgexec file:rhcert-script.ipxe
|
||||
|
484
SPECS/ipxe.spec
484
SPECS/ipxe.spec
@ -1,484 +0,0 @@
|
||||
# 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: 11.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
|
||||
* Thu Sep 29 2022 Jarod Wilson <jarod@redhat.com> - 20181214-11.git133f4c47
|
||||
- Revert LACP flood issue fix due to regressions is causes elsewhere
|
||||
|
||||
* Wed Jul 27 2022 Jarod Wilson <jarod@redhat.com> - 20181214-10.git133f4c47
|
||||
- Fix LACP flood issue in ipxe-bootimgs (bz 2098761)
|
||||
|
||||
* 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
|
6
gating.yaml
Normal file
6
gating.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- rhel-10
|
||||
decision_context: osci_compose_gate
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.hardware-ipxe.tier0.functional}
|
278
ipxe.spec
Normal file
278
ipxe.spec
Normal file
@ -0,0 +1,278 @@
|
||||
# ROMS we want for QEMU with format PCIID:QEMUNAME
|
||||
%global qemuroms \\\
|
||||
8086100e:e1000 \\\
|
||||
10ec8139:rtl8139 \\\
|
||||
1af41000:virtio \\\
|
||||
808610d3:e1000e
|
||||
|
||||
%if 0%{?fedora}
|
||||
# Fedora specific roms
|
||||
%global qemuroms %{qemuroms} \\\
|
||||
10222000:pcnet \\\
|
||||
10ec8029:ne2k_pci \\\
|
||||
80861209:eepro100 \\\
|
||||
15ad07b0:vmxnet3
|
||||
%endif
|
||||
|
||||
# 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 de8a0821
|
||||
%global date 20240119
|
||||
|
||||
Name: ipxe
|
||||
Version: %{date}
|
||||
Release: 5.git%{hash}%{?dist}
|
||||
Summary: A network boot loader
|
||||
|
||||
License: BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-only AND (GPL-2.0-only OR MPL-1.1) AND GPL-2.0-or-later AND GPL-2.0-or-later WITH UBDL-exception AND ISC AND MIT
|
||||
URL: http://ipxe.org/
|
||||
|
||||
Source0: %{name}-%{version}-git%{hash}.tar.xz
|
||||
|
||||
# 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
|
||||
|
||||
%ifarch %{buildarches}
|
||||
BuildRequires: perl-interpreter
|
||||
BuildRequires: perl-Getopt-Long
|
||||
%if 0%{?fedora} >= 33 || 0%{?rhel} >= 9
|
||||
BuildRequires: perl-FindBin
|
||||
BuildRequires: perl-lib
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
BuildRequires: syslinux
|
||||
%endif
|
||||
BuildRequires: mtools
|
||||
BuildRequires: xorriso
|
||||
BuildRequires: edk2-tools
|
||||
BuildRequires: xz-devel
|
||||
BuildRequires: gcc
|
||||
BuildRequires: binutils-devel
|
||||
BuildRequires: make
|
||||
|
||||
Obsoletes: gpxe <= 1.0.1
|
||||
%endif
|
||||
|
||||
%ifarch x86_64
|
||||
%package bootimgs-x86
|
||||
Summary: X86 Network boot loader images
|
||||
BuildArch: noarch
|
||||
Provides: %{name}-bootimgs = %{version}-%{release}
|
||||
Obsoletes: %{name}-bootimgs < 20200823-9.git4bd064de
|
||||
Obsoletes: gpxe-bootimgs <= 1.0.1
|
||||
|
||||
%package roms-qemu
|
||||
Summary: Network boot loader roms supported by QEMU, .rom format
|
||||
BuildArch: noarch
|
||||
Obsoletes: gpxe-roms-qemu <= 1.0.1
|
||||
|
||||
%description bootimgs-x86
|
||||
iPXE is an open source network bootloader.
|
||||
|
||||
This package contains iPXE x86 boot images for UEFI (snponly.efi) and
|
||||
BIOS (undionly.kpxe).
|
||||
|
||||
%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: ARM Network boot loader images
|
||||
BuildArch: noarch
|
||||
|
||||
%description bootimgs-aarch64
|
||||
iPXE is an open source network bootloader.
|
||||
|
||||
This package contains iPXE aarch64 boot images for UEFI (snponly.efi).
|
||||
%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
|
||||
# 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 src/drivers/net/ath/ath9k
|
||||
|
||||
%build
|
||||
cd src
|
||||
|
||||
make_ipxe() {
|
||||
make %{?_smp_mflags} \
|
||||
NO_WERROR=1 V=1 \
|
||||
GITVERSION=%{hash} \
|
||||
"$@"
|
||||
}
|
||||
|
||||
%ifarch x86_64
|
||||
|
||||
make_ipxe bin-x86_64-efi/snponly.efi
|
||||
|
||||
make_ipxe ISOLINUX_BIN=/usr/share/syslinux/isolinux.bin \
|
||||
bin/undionly.kpxe
|
||||
|
||||
# build roms with efi support for qemu
|
||||
mkdir bin-combined
|
||||
for romstr in %{qemuroms}; do
|
||||
rom=$(echo "$romstr" | cut -d ":" -f 1)
|
||||
|
||||
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
|
||||
%endif
|
||||
|
||||
%install
|
||||
%ifarch x86_64
|
||||
mkdir -p %{buildroot}/%{_datadir}/%{name}/
|
||||
mkdir -p %{buildroot}/%{_datadir}/%{name}.efi/
|
||||
|
||||
pushd src/bin/
|
||||
cp -a undionly.kpxe %{buildroot}/%{_datadir}/%{name}/
|
||||
popd
|
||||
|
||||
cp -a src/bin-x86_64-efi/snponly.efi %{buildroot}/%{_datadir}/%{name}/ipxe-snponly-x86_64.efi
|
||||
|
||||
mkdir -p %{buildroot}%{_datadir}/%{name}/qemu/
|
||||
|
||||
for romstr in %{qemuroms}; do
|
||||
# the roms supported by qemu will be packaged separatedly
|
||||
# remove from the main rom list and add them to qemu.list
|
||||
rom=$(echo "$romstr" | cut -d ":" -f 1)
|
||||
qemuname=$(echo "$romstr" | cut -d ":" -f 2)
|
||||
echo %{_datadir}/%{name}/${rom}.rom >> qemu.rom.list
|
||||
|
||||
cp src/bin/${rom}.rom %{buildroot}/%{_datadir}/%{name}/
|
||||
cp src/bin-combined/${rom}.rom %{buildroot}/%{_datadir}/%{name}.efi/
|
||||
echo %{_datadir}/%{name}.efi/${rom}.rom >> qemu.rom.list
|
||||
|
||||
# Set up symlinks with expected qemu firmware names
|
||||
ln -s ../../ipxe/${rom}.rom %{buildroot}%{_datadir}/%{name}/qemu/pxe-${qemuname}.rom
|
||||
ln -s ../../ipxe.efi/${rom}.rom %{buildroot}%{_datadir}/%{name}/qemu/efi-${qemuname}.rom
|
||||
done
|
||||
|
||||
# endif x86_64
|
||||
%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
|
||||
%endif
|
||||
|
||||
%ifarch x86_64
|
||||
%files bootimgs-x86
|
||||
%dir %{_datadir}/%{name}
|
||||
%{_datadir}/%{name}/undionly.kpxe
|
||||
%{_datadir}/%{name}/ipxe-snponly-x86_64.efi
|
||||
%doc COPYING COPYING.GPLv2 COPYING.UBDL
|
||||
|
||||
%files roms-qemu -f qemu.rom.list
|
||||
%dir %{_datadir}/%{name}
|
||||
%dir %{_datadir}/%{name}.efi
|
||||
%{_datadir}/%{name}/qemu
|
||||
%doc COPYING COPYING.GPLv2 COPYING.UBDL
|
||||
%endif
|
||||
|
||||
%ifarch aarch64
|
||||
%files bootimgs-aarch64
|
||||
%dir %{_datadir}/%{name}
|
||||
%dir %{_datadir}/%{name}/arm64-efi
|
||||
%{_datadir}/%{name}/arm64-efi/snponly.efi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 20240119-5.gitde8a0821
|
||||
- Bump release for October 2024 mass rebuild:
|
||||
Resolves: RHEL-64018
|
||||
|
||||
* Tue Jul 16 2024 Gerd Hoffmann <kraxel@redhat.com> - 20240119-4.gitde8a0821
|
||||
- Strip down package, remove drivers except qemu drivers.
|
||||
- Resolves: RHEL-37610
|
||||
|
||||
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 20240119-3.gitde8a0821
|
||||
- Bump release for June 2024 mass rebuild
|
||||
|
||||
* Fri Feb 23 2024 Konstantin Shalygin <shalygin.k@selectel.com> - 20240119-2.gitde8a0821
|
||||
- Added iPXE 'reboot' & 'poweroff' commands
|
||||
|
||||
* Tue Jan 30 2024 Daniel P. Berrangé <berrange@redhat.com> - 20240119-1.gitde8a0821
|
||||
- Update to latest git snapshot
|
||||
|
||||
* Thu Jan 25 2024 Stid Official <stidofficiel@gmail.com> - 20220210-8.git64113751
|
||||
- Add support of NFS protocol
|
||||
|
||||
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 20220210-7.git64113751
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Sat Jan 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 20220210-6.git64113751
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Tue Dec 19 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 20220210-5.git64113751
|
||||
- Fix build with binutils 2.41
|
||||
|
||||
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 20220210-4.git64113751
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 20220210-3.git64113751
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 20220210-2.git64113751
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Sun Apr 10 2022 Cole Robinson <crobinso@redhat.com> - 20220210-1.git64113751
|
||||
- Update to newer git snapshot
|
||||
|
||||
* Tue Mar 01 2022 Yaakov Selkowitz <yselkowi@redhat.com> - 20200823-9.git4bd064de
|
||||
- Add aarch64 EFI artifacts (bz 2058680)
|
||||
|
||||
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 20200823-8.git4bd064de
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
Loading…
Reference in New Issue
Block a user