Skip to content

Commit

Permalink
Further work on skboot SKINIT launcher
Browse files Browse the repository at this point in the history
Signed-off-by: Ross Philipson <[email protected]>
  • Loading branch information
rossphilipson committed Sep 15, 2021
1 parent e8b57bf commit d24de9a
Show file tree
Hide file tree
Showing 34 changed files with 515 additions and 910 deletions.
20 changes: 10 additions & 10 deletions trenchboot/skboot/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@ include $(CURDIR)/Config.mk
TARGET := $(CURDIR)/skboot

# boot.o must be first
obj-y := common/boot.o
obj-y += common/cmdline.o common/com.o common/e820.o
obj-y += common/linux.o common/loader.o
obj-y += common/misc.o common/pci.o common/printk.o
obj-y += common/string.o common/skboot.o common/skl.o
obj-y += common/sha1.o common/sha256.o
obj-y += common/tpm.o common/tpm_12.o common/tpm_20.o
obj-y += common/vga.o
obj-y := src/boot.o
obj-y += src/cmdline.o src/com.o src/e820.o
obj-y += src/linux.o src/loader.o
obj-y += src/misc.o src/pci.o src/printk.o
obj-y += src/string.o src/skboot.o src/skl.o
obj-y += src/sha1.o src/sha256.o
obj-y += src/tpm.o src/tpm_12.o src/tpm_20.o
obj-y += src/vga.o

OBJS := $(obj-y)


TARGET_LDS := $(CURDIR)/common/skboot.lds
TARGET_LDS := $(CURDIR)/src/skboot.lds

$(TARGET).gz : $(TARGET)
gzip -n -f -9 < $< > $@
Expand Down Expand Up @@ -63,7 +63,7 @@ $(DISTDIR)/boot/$(TARGET).gz : $(TARGET).gz


clean :
rm -f $(TARGET)* *~ include/*~ include/txt/*~ *.o common/*~ txt/*~ common/*.o txt/*.o
rm -f $(TARGET)* *~ include/*~ include/txt/*~ *.o src/*~ txt/*~ src/*.o txt/*.o
rm -f tags TAGS cscope.files cscope.in.out cscope.out cscope.po.out


Expand Down
45 changes: 0 additions & 45 deletions trenchboot/skboot/common/skl.c

This file was deleted.

1 change: 0 additions & 1 deletion trenchboot/skboot/include/cmdline.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ extern void get_skboot_log_targets(void);
extern bool get_skboot_serial(void);
extern void get_skboot_baud(void);
extern void get_skboot_vga_delay(void);
extern void get_skboot_min_ram(void);
extern uint32_t get_error_shutdown(void);

/* for parse cmdline of linux kernel, say vga and mem */
Expand Down
118 changes: 0 additions & 118 deletions trenchboot/skboot/include/config.h

This file was deleted.

4 changes: 0 additions & 4 deletions trenchboot/skboot/include/e820.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,7 @@ extern memory_map_t *get_e820_copy(void);
extern unsigned int get_nr_map(void);
extern bool copy_e820_map(loader_ctx *lctx);
extern bool e820_protect_region(uint64_t addr, uint64_t size, uint32_t type);
extern bool e820_reserve_ram(uint64_t base, uint64_t length);
extern void print_e820_map(void);
extern uint32_t e820_check_region(uint64_t base, uint64_t length);
extern bool get_ram_ranges(uint64_t *min_lo_ram, uint64_t *max_lo_ram,
uint64_t *min_hi_ram, uint64_t *max_hi_ram);
extern void get_highest_sized_ram(uint64_t size, uint64_t limit,
uint64_t *ram_base, uint64_t *ram_size);

Expand Down
37 changes: 37 additions & 0 deletions trenchboot/skboot/include/linux.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,36 @@

#define KERNEL_HEADER_OFFSET 0x1F1

/* setup_data/setup_indirect types */
#define SETUP_NONE 0
#define SETUP_E820_EXT 1
#define SETUP_DTB 2
#define SETUP_PCI 3
#define SETUP_EFI 4
#define SETUP_APPLE_PROPERTIES 5
#define SETUP_JAILHOUSE 6
#define SETUP_SECURE_LAUNCH 7

#define SETUP_INDIRECT (1<<31)

/* SETUP_INDIRECT | max(SETUP_*) */
#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_SECURE_LAUNCH)

/* Setup data structs defined in Linux */
typedef struct __attribute__ ((packed)) {
uint64_t next;
uint32_t type;
uint32_t len;
/* data[] */
} setup_data_t;

typedef struct __attribute__ ((packed)) {
uint32_t type;
uint32_t reserved;
uint64_t len;
uint64_t addr;
} setup_indirect_t;

/* linux kernel header */
typedef struct __attribute__ ((packed)) {
uint8_t setup_sects; /* The size of the setup in sectors */
Expand Down Expand Up @@ -248,6 +278,13 @@ typedef struct {
boot_params_t *boot_params;
} il_kernel_setup_t;

extern il_kernel_setup_t g_sl_kernel_setup;

extern bool expand_linux_image(const void *linux_image, size_t linux_size,
const void *initrd_image, size_t initrd_size);

extern void linux_skl_setup_indirect(setup_data_t *data);

#endif /* __LINUX_DEFNS_H__ */

/*
Expand Down
4 changes: 1 addition & 3 deletions trenchboot/skboot/include/loader.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,6 @@ typedef struct {
#endif

extern void print_loader_ctx(loader_ctx *lctx);
extern bool find_module_by_pattern(loader_ctx *lctx, void **base, size_t *size,
const void *pattern, size_t len);
extern uint32_t find_efi_memmap(loader_ctx *lctx, uint32_t *descr_size,
uint32_t *descr_vers, uint32_t *mmap_size);

Expand All @@ -86,7 +84,7 @@ extern unsigned long get_loader_ctx_end(loader_ctx *lctx);
extern bool find_skl_module(loader_ctx *lctx);
extern void replace_e820_map(loader_ctx *lctx);
extern bool is_loader_launch_efi(loader_ctx *lctx);
extern bool get_loader_efi_ptr(loader_ctx *lctx, uint32_t *address,
extern bool get_loader_efi_ptr(loader_ctx *lctx, uint32_t *address,
uint64_t *long_address);
extern void load_framebuffer_info(loader_ctx *lctx, void *vscr);
extern char *get_first_module_cmd(loader_ctx *lctx);
Expand Down
7 changes: 6 additions & 1 deletion trenchboot/skboot/include/misc.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
#ifndef __MISC_H__
#define __MISC_H__

extern void print_hex(const char * buf, const void * prtptr, size_t size);
extern void print_hex(const char *prefix, const void *prtptr, size_t size);

extern void delay(int millisecs);

Expand Down Expand Up @@ -71,6 +71,11 @@ static inline bool multiply_overflow_u32(uint32_t x, uint32_t y)
return (x > 0) ? ((((uint32_t)(~0))/x) < y) : false;
}

static inline unsigned long max(unsigned long a, unsigned long b)
{
return (a > b) ? a : b;
}

#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))

#define AP_WAKE_TRIGGER_DEF 0xffffffff
Expand Down
2 changes: 0 additions & 2 deletions trenchboot/skboot/include/multiboot.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@
#ifndef __MULTIBOOT_H__
#define __MULTIBOOT_H__

#include <config.h>

/* Multiboot Header Definitions of OS image*/
#define MULTIBOOT_HEADER_MAGIC 0x1BADB002
#define MULTIBOOT_HEADER_SEARCH_LIMIT 8192
Expand Down
Loading

0 comments on commit d24de9a

Please sign in to comment.