Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Release 3.4.719
Signed-off-by: Wissam Shoukair <wissams@mellanox.com>
  • Loading branch information
Wissam Shoukair committed May 2, 2016
1 parent c8424a1 commit 06e96b8
Show file tree
Hide file tree
Showing 290 changed files with 38,158 additions and 6,010 deletions.
4 changes: 3 additions & 1 deletion src/Makefile
Expand Up @@ -88,14 +88,16 @@ SRCDIRS += drivers/infiniband/mlx_utils/src/public
SRCDIRS += drivers/infiniband/mlx_utils/mlx_lib/mlx_reg_access/
SRCDIRS += drivers/infiniband/mlx_utils/mlx_lib/mlx_nvconfig/
SRCDIRS += drivers/infiniband/mlx_utils/mlx_lib/mlx_vmac/
SRCDIRS += drivers/infiniband/mlx_utils/mlx_lib/mlx_blink_leds/
SRCDIRS += drivers/infiniband/mlx_utils/mlx_lib/mlx_link_speed/
SRCDIRS += drivers/infiniband/mlx_nodnic/src
SRCDIRS += drivers/usb
SRCDIRS += interface/pxe interface/efi interface/smbios
SRCDIRS += interface/bofm
SRCDIRS += interface/xen
SRCDIRS += interface/hyperv
SRCDIRS += tests
SRCDIRS += crypto crypto/axtls crypto/matrixssl
SRCDIRS += crypto crypto/mishmash
SRCDIRS += hci hci/commands hci/tui
SRCDIRS += hci/mucurses hci/mucurses/widgets
SRCDIRS += hci/keymap
Expand Down
2 changes: 1 addition & 1 deletion src/Makefile.housekeeping
Expand Up @@ -1301,7 +1301,7 @@ CLEANUP += $(ZBIN)
ELF2EFI_CFLAGS := -I$(BINUTILS_DIR)/include -I$(BFD_DIR)/include \
-I$(ZLIB_DIR)/include -idirafter include
ELF2EFI_LDFLAGS := -L$(BINUTILS_DIR)/lib -L$(BFD_DIR)/lib -L$(ZLIB_DIR)/lib \
-lbfd -ldl -liberty -lz -Wl,--no-warn-search-mismatch
-lbfd -ldl -lz -Wl,--no-warn-search-mismatch

$(ELF2EFI32) : util/elf2efi.c $(MAKEDEPS)
$(QM)$(ECHO) " [HOSTCC] $@"
Expand Down
16 changes: 16 additions & 0 deletions src/README
@@ -0,0 +1,16 @@
#Run one of the following commands to build the ROM for the chosen HCA (don't forget to clean)

#Build ConnectX-4Lx
make -j `getconf _NPROCESSORS_ONLN` bin/ConnectX-4Lx.mrom EXTRA_CFLAGS='-DMLX_BUILD -D__MLX_0001_MAJOR_VER_=0x00100003 -D__MLX_MIN_SUB_MIN_VER_=0x000402cf -D__MLX_DEV_ID_00ff=0x101500ff -D__BUILD_VERSION__=\"3.4.719\" -DFLASH_CONFIGURATION -Idrivers/infiniband/mlx_utils_flexboot/include/ -Idrivers/infiniband/mlx_utils/include/ -Idrivers/infiniband/mlx_utils/include/public/ -Idrivers/infiniband/mlx_utils/include/private/ -Idrivers/infiniband/mlx_nodnic/include/ -Idrivers/infiniband/mlx_nodnic/include/public/ -Idrivers/infiniband/mlx_nodnic/include/private/ -Idrivers/infiniband/mlx_utils_flexboot/tests/include/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_reg_access/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_nvconfig/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_vmac/ -DDEVICE_CX4'

#Build ConnectX-4
make -j `getconf _NPROCESSORS_ONLN` bin/ConnectX-4.mrom EXTRA_CFLAGS='-DMLX_BUILD -D__MLX_0001_MAJOR_VER_=0x00100003 -D__MLX_MIN_SUB_MIN_VER_=0x000402cf -D__MLX_DEV_ID_00ff=0x101300ff -D__BUILD_VERSION__=\"3.4.719\" -DFLASH_CONFIGURATION -Idrivers/infiniband/mlx_utils_flexboot/include/ -Idrivers/infiniband/mlx_utils/include/ -Idrivers/infiniband/mlx_utils/include/public/ -Idrivers/infiniband/mlx_utils/include/private/ -Idrivers/infiniband/mlx_nodnic/include/ -Idrivers/infiniband/mlx_nodnic/include/public/ -Idrivers/infiniband/mlx_nodnic/include/private/ -Idrivers/infiniband/mlx_utils_flexboot/tests/include/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_reg_access/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_nvconfig/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_vmac/ -DDEVICE_CX4'

#Build ConnectIB
make -j `getconf _NPROCESSORS_ONLN` bin/ConnectIB.mrom EXTRA_CFLAGS='-DMLX_BUILD -D__MLX_0001_MAJOR_VER_=0x00100003 -D__MLX_MIN_SUB_MIN_VER_=0x000402cf -D__MLX_DEV_ID_00ff=0x101100ff -D__BUILD_VERSION__=\"3.4.719\" -DFLASH_CONFIGURATION -Idrivers/infiniband/mlx_utils_flexboot/include/ -Idrivers/infiniband/mlx_utils/include/ -Idrivers/infiniband/mlx_utils/include/public/ -Idrivers/infiniband/mlx_utils/include/private/ -Idrivers/infiniband/mlx_nodnic/include/ -Idrivers/infiniband/mlx_nodnic/include/public/ -Idrivers/infiniband/mlx_nodnic/include/private/ -Idrivers/infiniband/mlx_utils_flexboot/tests/include/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_reg_access/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_nvconfig/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_vmac/ -DDEVICE_CIB'

#Build ConnectX-3
make -j `getconf _NPROCESSORS_ONLN` bin/ConnectX-3.mrom EXTRA_CFLAGS='-DMLX_BUILD -D__MLX_0001_MAJOR_VER_=0x00100003 -D__MLX_MIN_SUB_MIN_VER_=0x000402cf -D__MLX_DEV_ID_00ff=0x100300ff -D__BUILD_VERSION__=\"3.4.719\" -DFLASH_CONFIGURATION -Idrivers/infiniband/mlx_utils_flexboot/include/ -Idrivers/infiniband/mlx_utils/include/ -Idrivers/infiniband/mlx_utils/include/public/ -Idrivers/infiniband/mlx_utils/include/private/ -Idrivers/infiniband/mlx_nodnic/include/ -Idrivers/infiniband/mlx_nodnic/include/public/ -Idrivers/infiniband/mlx_nodnic/include/private/ -Idrivers/infiniband/mlx_utils_flexboot/tests/include/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_reg_access/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_nvconfig/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_vmac/ -DDEVICE_CX3'

#Build ConnectX-3 Pro
make -j `getconf _NPROCESSORS_ONLN` bin/ConnectX-3Pro.mrom EXTRA_CFLAGS='-DMLX_BUILD -D__MLX_0001_MAJOR_VER_=0x00100003 -D__MLX_MIN_SUB_MIN_VER_=0x000402cf -D__MLX_DEV_ID_00ff=0x100700ff -D__BUILD_VERSION__=\"3.4.719\" -DFLASH_CONFIGURATION -Idrivers/infiniband/mlx_utils_flexboot/include/ -Idrivers/infiniband/mlx_utils/include/ -Idrivers/infiniband/mlx_utils/include/public/ -Idrivers/infiniband/mlx_utils/include/private/ -Idrivers/infiniband/mlx_nodnic/include/ -Idrivers/infiniband/mlx_nodnic/include/public/ -Idrivers/infiniband/mlx_nodnic/include/private/ -Idrivers/infiniband/mlx_utils_flexboot/tests/include/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_reg_access/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_nvconfig/ -Idrivers/infiniband/mlx_utils/mlx_lib/mlx_vmac/ -DDEVICE_CX3'
27 changes: 18 additions & 9 deletions src/arch/i386/Makefile
Expand Up @@ -84,18 +84,27 @@ endif
#
CFLAGS_lkrnprefix += -DVERSION="\"$(VERSION)\""

# Locations of utilities
#
# Locations of isolinux files
#
SYSLINUX_DIR_LIST := \
/usr/lib/syslinux \
/usr/lib/syslinux/bios \
/usr/lib/syslinux/modules/bios \
/usr/share/syslinux \
/usr/share/syslinux/bios \
/usr/share/syslinux/modules/bios \
/usr/local/share/syslinux \
/usr/local/share/syslinux/bios \
/usr/local/share/syslinux/modules/bios \
/usr/lib/ISOLINUX
ISOLINUX_BIN_LIST := \
$(ISOLINUX_BIN) \
/usr/lib/syslinux/isolinux.bin \
/usr/lib/syslinux/bios/isolinux.bin \
/usr/share/syslinux/isolinux.bin \
/usr/share/syslinux/bios/isolinux.bin \
/usr/local/share/syslinux/isolinux.bin \
/usr/local/share/syslinux/bios/isolinux.bin \
/usr/lib/ISOLINUX/isolinux.bin
$(patsubst %,%/isolinux.bin,$(SYSLINUX_DIR_LIST))
LDLINUX_C32_LIST := \
$(LDLINUX_C32) \
$(patsubst %,%/ldlinux.c32,$(SYSLINUX_DIR_LIST))
ISOLINUX_BIN = $(firstword $(wildcard $(ISOLINUX_BIN_LIST)))
LDLINUX_C32 = $(firstword $(wildcard $(LDLINUX_C32_LIST)))

# i386-specific directories containing source files
#
Expand Down
3 changes: 2 additions & 1 deletion src/arch/i386/Makefile.pcbios
Expand Up @@ -57,7 +57,8 @@ LIST_NAME_isarom := ROMS
NON_AUTO_MEDIA += iso
%iso: %lkrn util/geniso
$(QM)$(ECHO) " [GENISO] $@"
$(Q)ISOLINUX_BIN=$(ISOLINUX_BIN) VERSION="$(VERSION)" bash util/geniso -o $@ $<
$(Q)ISOLINUX_BIN=$(ISOLINUX_BIN) LDLINUX_C32=$(LDLINUX_C32) \
VERSION="$(VERSION)" bash util/geniso -o $@ $<

# rule to make a floppy emulation ISO boot image
NON_AUTO_MEDIA += liso
Expand Down
6 changes: 6 additions & 0 deletions src/arch/i386/firmware/pcbios/bios_console.c
Expand Up @@ -43,6 +43,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define ATTR_FCOL_YELLOW 0x06
#define ATTR_FCOL_WHITE 0x07

#define ATTR_BLINK 0x80

#define ATTR_BCOL_MASK 0x70
#define ATTR_BCOL_BLACK 0x00
#define ATTR_BCOL_BLUE 0x10
Expand Down Expand Up @@ -141,8 +143,12 @@ static void bios_handle_sgr ( struct ansiesc_context *ctx __unused,
bios_attr = ATTR_DEFAULT;
} else if ( aspect == 1 ) {
bios_attr |= ATTR_BOLD;
} else if ( aspect == 5 ) {
bios_attr |= ATTR_BLINK;
} else if ( aspect == 22 ) {
bios_attr &= ~ATTR_BOLD;
} else if ( aspect == 25 ) {
bios_attr &= ~ATTR_BLINK;
} else if ( ( aspect >= 30 ) && ( aspect <= 39 ) ) {
bios_attr &= ~ATTR_FCOL_MASK;
bios_attr |= bios_attr_fcols[ aspect - 30 ];
Expand Down
33 changes: 32 additions & 1 deletion src/arch/i386/image/elfboot.c
Expand Up @@ -78,6 +78,27 @@ static int elfboot_exec ( struct image *image ) {
return -ECANCELED; /* -EIMPOSSIBLE, anyone? */
}

/**
* Check that ELF segment uses flat physical addressing
*
* @v image ELF file
* @v phdr ELF program header
* @v dest Destination address
* @ret rc Return status code
*/
static int elfboot_check_segment ( struct image *image, Elf_Phdr *phdr,
physaddr_t dest ) {

/* Check that ELF segment uses flat physical addressing */
if ( phdr->p_vaddr != dest ) {
DBGC ( image, "ELF %p uses virtual addressing (phys %x, "
"virt %x)\n", image, phdr->p_paddr, phdr->p_vaddr );
return -ENOEXEC;
}

return 0;
}

/**
* Probe ELF image
*
Expand All @@ -95,14 +116,24 @@ static int elfboot_probe ( struct image *image ) {
[EI_DATA] = ELFDATA2LSB,
[EI_VERSION] = EV_CURRENT,
};
physaddr_t entry;
physaddr_t max;
int rc;

/* Read ELF header */
copy_from_user ( &ehdr, image->data, 0, sizeof ( ehdr ) );
if ( memcmp ( ehdr.e_ident, e_ident, sizeof ( e_ident ) ) != 0 ) {
DBG ( "Invalid ELF identifier\n" );
DBGC ( image, "Invalid ELF identifier\n" );
return -ENOEXEC;
}

/* Check that this image uses flat physical addressing */
if ( ( rc = elf_segments ( image, &ehdr, elfboot_check_segment,
&entry, &max ) ) != 0 ) {
DBGC ( image, "Unloadable ELF image\n" );
return rc;
}

return 0;
}

Expand Down
49 changes: 45 additions & 4 deletions src/arch/i386/image/pxe_image.c
Expand Up @@ -40,6 +40,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/features.h>
#include <ipxe/console.h>
#include <ipxe/init.h>
#include <ipxe/efi/efi.h>
#include <ipxe/efi/IndustryStandard/PeImage.h>

FEATURE ( FEATURE_IMAGE, "PXE", DHCP_EB_FEATURE_PXE, 1 );

Expand Down Expand Up @@ -78,6 +80,9 @@ static int pxe_exec ( struct image *image ) {
/* Activate PXE */
pxe_activate ( netdev );

/* Construct fake DHCP packets */
pxe_fake_cached_info();

/* Set PXE command line */
pxe_cmdline = image->cmdline;

Expand Down Expand Up @@ -129,9 +134,45 @@ int pxe_probe ( struct image *image ) {
return 0;
}

/**
* Probe PXE image (with rejection of potential EFI images)
*
* @v image PXE file
* @ret rc Return status code
*/
int pxe_probe_no_mz ( struct image *image ) {
uint16_t magic;
int rc;

/* Probe PXE image */
if ( ( rc = pxe_probe ( image ) ) != 0 )
return rc;

/* Reject image with an "MZ" signature which may indicate an
* EFI image incorrectly handed out to a BIOS system.
*/
if ( image->len >= sizeof ( magic ) ) {
copy_from_user ( &magic, image->data, 0, sizeof ( magic ) );
if ( magic == cpu_to_le16 ( EFI_IMAGE_DOS_SIGNATURE ) ) {
DBGC ( image, "IMAGE %p may be an EFI image\n",
image );
return -ENOTTY;
}
}

return 0;
}

/** PXE image type */
struct image_type pxe_image_type __image_type ( PROBE_PXE ) = {
.name = "PXE",
.probe = pxe_probe,
.exec = pxe_exec,
struct image_type pxe_image_type[] __image_type ( PROBE_PXE ) = {
{
.name = "PXE-NBP",
.probe = pxe_probe_no_mz,
.exec = pxe_exec,
},
{
.name = "PXE-NBP (may be EFI?)",
.probe = pxe_probe,
.exec = pxe_exec,
},
};
1 change: 1 addition & 0 deletions src/arch/i386/include/pxe.h
Expand Up @@ -192,6 +192,7 @@ extern struct net_device *pxe_netdev;
extern const char *pxe_cmdline;

extern void pxe_set_netdev ( struct net_device *netdev );
extern void pxe_fake_cached_info ( void );
extern PXENV_EXIT_t pxenv_tftp_read_file ( struct s_PXENV_TFTP_READ_FILE
*tftp_read_file );
extern PXENV_EXIT_t undi_loader ( struct s_UNDI_LOADER *undi_loader );
Expand Down
38 changes: 38 additions & 0 deletions src/arch/i386/interface/pxe/pxe_call.c
Expand Up @@ -26,6 +26,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/uaccess.h>
#include <ipxe/init.h>
#include <ipxe/profile.h>
#include <ipxe/netdevice.h>
#include <setjmp.h>
#include <registers.h>
#include <biosint.h>
Expand Down Expand Up @@ -265,6 +266,9 @@ struct init_fn pxe_init_fn __init_fn ( INIT_NORMAL ) = {
* @v netdev Net device to use as PXE net device
*/
void pxe_activate ( struct net_device *netdev ) {
uint32_t discard_a;
uint32_t discard_b;
uint32_t discard_d;

/* Ensure INT 1A is hooked */
if ( ! int_1a_hooked ) {
Expand All @@ -276,6 +280,15 @@ void pxe_activate ( struct net_device *netdev ) {

/* Set PXE network device */
pxe_set_netdev ( netdev );

/* Notify BIOS of installation */
__asm__ __volatile__ ( REAL_CODE ( "pushw %%cs\n\t"
"popw %%es\n\t"
"int $0x1a\n\t" )
: "=a" ( discard_a ), "=b" ( discard_b ),
"=d" ( discard_d )
: "0" ( 0x564e ),
"1" ( __from_text16 ( &pxenv ) ) );
}

/**
Expand Down Expand Up @@ -346,6 +359,31 @@ int pxe_start_nbp ( void ) {
return 0;
}

/**
* Notify BIOS of existence of network device
*
* @v netdev Network device
* @ret rc Return status code
*/
static int pxe_notify ( struct net_device *netdev ) {

/* Do nothing if we already have a network device */
if ( pxe_netdev )
return 0;

/* Activate (and deactivate) PXE stack to notify BIOS */
pxe_activate ( netdev );
pxe_deactivate();

return 0;
}

/** PXE BIOS notification driver */
struct net_driver pxe_driver __net_driver = {
.name = "PXE",
.probe = pxe_notify,
};

REQUIRING_SYMBOL ( pxe_api_call );
REQUIRE_OBJECT ( pxe_preboot );
REQUIRE_OBJECT ( pxe_undi );
Expand Down
4 changes: 4 additions & 0 deletions src/arch/i386/interface/pxe/pxe_loader.c
Expand Up @@ -24,6 +24,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );

#include <ipxe/init.h>
#include <ipxe/pci.h>
#include "pxe.h"
#include "pxe_call.h"

Expand All @@ -38,6 +39,9 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
PXENV_EXIT_t undi_loader ( struct s_UNDI_LOADER *undi_loader ) {

set_boot_pci_busdevfn ( undi_loader->AX );
DBG ( "UNDI loader location (BDF): 0x%x\n", undi_loader->AX );

/* Perform one-time initialisation (e.g. heap) */
initialise();

Expand Down

0 comments on commit 06e96b8

Please sign in to comment.