Skip to content

Commit

Permalink
Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/li…
Browse files Browse the repository at this point in the history
…nux/kernel/git/tip/tip

Pull x86 build changes from Ingo Molnar:
 "Two small changes"

* 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86, defconfig: Add DEVTMPFS and DEVTMPFS_MOUNT to *86*_defconfig
  x86, build: move build output statistics away from stderr
  • Loading branch information
torvalds committed Nov 12, 2013
2 parents 014d595 + 7f71be4 commit 54e1130
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 17 deletions.
3 changes: 2 additions & 1 deletion arch/x86/boot/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ GCOV_PROFILE := n
$(obj)/bzImage: asflags-y := $(SVGA_MODE)

quiet_cmd_image = BUILD $@
cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/zoffset.h > $@
cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin \
$(obj)/zoffset.h $@

$(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE
$(call if_changed,image)
Expand Down
40 changes: 24 additions & 16 deletions arch/x86/boot/tools/build.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@
*/

/*
* This file builds a disk-image from two different files:
* This file builds a disk-image from three different files:
*
* - setup: 8086 machine code, sets up system parm
* - system: 80386 code for actual system
* - zoffset.h: header with ZO_* defines
*
* It does some checking that all files are of the correct type, and
* just writes the result to stdout, removing headers and padding to
* the right amount. It also writes some system data to stderr.
* It does some checking that all files are of the correct type, and writes
* the result to the specified destination, removing headers and padding to
* the right amount. It also writes some system data to stdout.
*/

/*
Expand Down Expand Up @@ -136,7 +137,7 @@ static void die(const char * str, ...)

static void usage(void)
{
die("Usage: build setup system [zoffset.h] [> image]");
die("Usage: build setup system zoffset.h image");
}

#ifdef CONFIG_EFI_STUB
Expand Down Expand Up @@ -265,7 +266,7 @@ int main(int argc, char ** argv)
int c;
u32 sys_size;
struct stat sb;
FILE *file;
FILE *file, *dest;
int fd;
void *kernel;
u32 crc = 0xffffffffUL;
Expand All @@ -280,10 +281,13 @@ int main(int argc, char ** argv)
startup_64 = 0x200;
#endif

if (argc == 4)
parse_zoffset(argv[3]);
else if (argc != 3)
if (argc != 5)
usage();
parse_zoffset(argv[3]);

dest = fopen(argv[4], "w");
if (!dest)
die("Unable to write `%s': %m", argv[4]);

/* Copy the setup code */
file = fopen(argv[1], "r");
Expand Down Expand Up @@ -318,7 +322,7 @@ int main(int argc, char ** argv)
/* Set the default root device */
put_unaligned_le16(DEFAULT_ROOT_DEV, &buf[508]);

fprintf(stderr, "Setup is %d bytes (padded to %d bytes).\n", c, i);
printf("Setup is %d bytes (padded to %d bytes).\n", c, i);

/* Open and stat the kernel file */
fd = open(argv[2], O_RDONLY);
Expand All @@ -327,7 +331,7 @@ int main(int argc, char ** argv)
if (fstat(fd, &sb))
die("Unable to stat `%s': %m", argv[2]);
sz = sb.st_size;
fprintf (stderr, "System is %d kB\n", (sz+1023)/1024);
printf("System is %d kB\n", (sz+1023)/1024);
kernel = mmap(NULL, sz, PROT_READ, MAP_SHARED, fd, 0);
if (kernel == MAP_FAILED)
die("Unable to mmap '%s': %m", argv[2]);
Expand All @@ -348,27 +352,31 @@ int main(int argc, char ** argv)
#endif

crc = partial_crc32(buf, i, crc);
if (fwrite(buf, 1, i, stdout) != i)
if (fwrite(buf, 1, i, dest) != i)
die("Writing setup failed");

/* Copy the kernel code */
crc = partial_crc32(kernel, sz, crc);
if (fwrite(kernel, 1, sz, stdout) != sz)
if (fwrite(kernel, 1, sz, dest) != sz)
die("Writing kernel failed");

/* Add padding leaving 4 bytes for the checksum */
while (sz++ < (sys_size*16) - 4) {
crc = partial_crc32_one('\0', crc);
if (fwrite("\0", 1, 1, stdout) != 1)
if (fwrite("\0", 1, 1, dest) != 1)
die("Writing padding failed");
}

/* Write the CRC */
fprintf(stderr, "CRC %x\n", crc);
printf("CRC %x\n", crc);
put_unaligned_le32(crc, buf);
if (fwrite(buf, 1, 4, stdout) != 4)
if (fwrite(buf, 1, 4, dest) != 4)
die("Writing CRC failed");

/* Catch any delayed write failures */
if (fclose(dest))
die("Writing image failed");

close(fd);

/* Everything is OK */
Expand Down
2 changes: 2 additions & 0 deletions arch/x86/configs/i386_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,8 @@ CONFIG_MAC80211=y
CONFIG_MAC80211_LEDS=y
CONFIG_RFKILL=y
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEBUG_DEVRES=y
CONFIG_CONNECTOR=y
CONFIG_BLK_DEV_LOOP=y
Expand Down
2 changes: 2 additions & 0 deletions arch/x86/configs/x86_64_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ CONFIG_MAC80211=y
CONFIG_MAC80211_LEDS=y
CONFIG_RFKILL=y
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_DEBUG_DEVRES=y
CONFIG_CONNECTOR=y
CONFIG_BLK_DEV_LOOP=y
Expand Down

0 comments on commit 54e1130

Please sign in to comment.