Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'x86-kbuild-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'x86-kbuild-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (46 commits)
x86, boot: add new generated files to the appropriate .gitignore files
x86, boot: correct the calculation of ZO_INIT_SIZE
x86-64: align __PHYSICAL_START, remove __KERNEL_ALIGN
x86, boot: correct sanity checks in boot/compressed/misc.c
x86: add extension fields for bootloader type and version
x86, defconfig: update kernel position parameters
x86, defconfig: update to current, no material changes
x86: make CONFIG_RELOCATABLE the default
x86: default CONFIG_PHYSICAL_START and CONFIG_PHYSICAL_ALIGN to 16 MB
x86: document new bzImage fields
x86, boot: make kernel_alignment adjustable; new bzImage fields
x86, boot: remove dead code from boot/compressed/head_*.S
x86, boot: use LOAD_PHYSICAL_ADDR on 64 bits
x86, boot: make symbols from the main vmlinux available
x86, boot: determine compressed code offset at compile time
x86, boot: use appropriate rep string for move and clear
x86, boot: zero EFLAGS on 32 bits
x86, boot: set up the decompression stack as early as possible
x86, boot: straighten out ranges to copy/zero in compressed/head*.S
x86, boot: stylistic cleanups for boot/compressed/head_64.S
...

Fixed trivial conflict in arch/x86/configs/x86_64_defconfig manually

+1233 -979
+114 -8
Documentation/x86/boot.txt
··· 50 50 Protocol 2.09: (Kernel 2.6.26) Added a field of 64-bit physical 51 51 pointer to single linked list of struct setup_data. 52 52 53 + Protocol 2.10: (Kernel 2.6.31) Added a protocol for relaxed alignment 54 + beyond the kernel_alignment added, new init_size and 55 + pref_address fields. Added extended boot loader IDs. 56 + 53 57 **** MEMORY LAYOUT 54 58 55 59 The traditional memory map for the kernel loader, used for Image or ··· 172 168 021C/4 2.00+ ramdisk_size initrd size (set by boot loader) 173 169 0220/4 2.00+ bootsect_kludge DO NOT USE - for bootsect.S use only 174 170 0224/2 2.01+ heap_end_ptr Free memory after setup end 175 - 0226/2 N/A pad1 Unused 171 + 0226/1 2.02+(3 ext_loader_ver Extended boot loader version 172 + 0227/1 2.02+(3 ext_loader_type Extended boot loader ID 176 173 0228/4 2.02+ cmd_line_ptr 32-bit pointer to the kernel command line 177 174 022C/4 2.03+ ramdisk_max Highest legal initrd address 178 175 0230/4 2.05+ kernel_alignment Physical addr alignment required for kernel 179 176 0234/1 2.05+ relocatable_kernel Whether kernel is relocatable or not 180 - 0235/1 N/A pad2 Unused 177 + 0235/1 2.10+ min_alignment Minimum alignment, as a power of two 181 178 0236/2 N/A pad3 Unused 182 179 0238/4 2.06+ cmdline_size Maximum size of the kernel command line 183 180 023C/4 2.07+ hardware_subarch Hardware subarchitecture ··· 187 182 024C/4 2.08+ payload_length Length of kernel payload 188 183 0250/8 2.09+ setup_data 64-bit physical pointer to linked list 189 184 of struct setup_data 185 + 0258/8 2.10+ pref_address Preferred loading address 186 + 0260/4 2.10+ init_size Linear memory required during initialization 190 187 191 188 (1) For backwards compatibility, if the setup_sects field contains 0, the 192 189 real value is 4. ··· 196 189 (2) For boot protocol prior to 2.04, the upper two bytes of the syssize 197 190 field are unusable, which means the size of a bzImage kernel 198 191 cannot be determined. 192 + 193 + (3) Ignored, but safe to set, for boot protocols 2.02-2.09. 199 194 200 195 If the "HdrS" (0x53726448) magic number is not found at offset 0x202, 201 196 the boot protocol version is "old". Loading an old kernel, the ··· 352 343 0xTV here, where T is an identifier for the boot loader and V is 353 344 a version number. Otherwise, enter 0xFF here. 354 345 346 + For boot loader IDs above T = 0xD, write T = 0xE to this field and 347 + write the extended ID minus 0x10 to the ext_loader_type field. 348 + Similarly, the ext_loader_ver field can be used to provide more than 349 + four bits for the bootloader version. 350 + 351 + For example, for T = 0x15, V = 0x234, write: 352 + 353 + type_of_loader <- 0xE4 354 + ext_loader_type <- 0x05 355 + ext_loader_ver <- 0x23 356 + 355 357 Assigned boot loader ids: 356 358 0 LILO (0x00 reserved for pre-2.00 bootloader) 357 359 1 Loadlin 358 360 2 bootsect-loader (0x20, all other values reserved) 359 - 3 SYSLINUX 360 - 4 EtherBoot 361 + 3 Syslinux 362 + 4 Etherboot/gPXE 361 363 5 ELILO 362 364 7 GRUB 363 - 8 U-BOOT 365 + 8 U-Boot 364 366 9 Xen 365 367 A Gujin 366 368 B Qemu 369 + C Arcturus Networks uCbootloader 370 + E Extended (see ext_loader_type) 371 + F Special (0xFF = undefined) 367 372 368 373 Please contact <hpa@zytor.com> if you need a bootloader ID 369 374 value assigned. ··· 476 453 Set this field to the offset (from the beginning of the real-mode 477 454 code) of the end of the setup stack/heap, minus 0x0200. 478 455 456 + Field name: ext_loader_ver 457 + Type: write (optional) 458 + Offset/size: 0x226/1 459 + Protocol: 2.02+ 460 + 461 + This field is used as an extension of the version number in the 462 + type_of_loader field. The total version number is considered to be 463 + (type_of_loader & 0x0f) + (ext_loader_ver << 4). 464 + 465 + The use of this field is boot loader specific. If not written, it 466 + is zero. 467 + 468 + Kernels prior to 2.6.31 did not recognize this field, but it is safe 469 + to write for protocol version 2.02 or higher. 470 + 471 + Field name: ext_loader_type 472 + Type: write (obligatory if (type_of_loader & 0xf0) == 0xe0) 473 + Offset/size: 0x227/1 474 + Protocol: 2.02+ 475 + 476 + This field is used as an extension of the type number in 477 + type_of_loader field. If the type in type_of_loader is 0xE, then 478 + the actual type is (ext_loader_type + 0x10). 479 + 480 + This field is ignored if the type in type_of_loader is not 0xE. 481 + 482 + Kernels prior to 2.6.31 did not recognize this field, but it is safe 483 + to write for protocol version 2.02 or higher. 484 + 479 485 Field name: cmd_line_ptr 480 486 Type: write (obligatory) 481 487 Offset/size: 0x228/4 ··· 534 482 0x37FFFFFF, you can start your ramdisk at 0x37FE0000.) 535 483 536 484 Field name: kernel_alignment 537 - Type: read (reloc) 485 + Type: read/modify (reloc) 538 486 Offset/size: 0x230/4 539 - Protocol: 2.05+ 487 + Protocol: 2.05+ (read), 2.10+ (modify) 540 488 541 - Alignment unit required by the kernel (if relocatable_kernel is true.) 489 + Alignment unit required by the kernel (if relocatable_kernel is 490 + true.) A relocatable kernel that is loaded at an alignment 491 + incompatible with the value in this field will be realigned during 492 + kernel initialization. 493 + 494 + Starting with protocol version 2.10, this reflects the kernel 495 + alignment preferred for optimal performance; it is possible for the 496 + loader to modify this field to permit a lesser alignment. See the 497 + min_alignment and pref_address field below. 542 498 543 499 Field name: relocatable_kernel 544 500 Type: read (reloc) ··· 557 497 be loaded at any address that satisfies the kernel_alignment field. 558 498 After loading, the boot loader must set the code32_start field to 559 499 point to the loaded code, or to a boot loader hook. 500 + 501 + Field name: min_alignment 502 + Type: read (reloc) 503 + Offset/size: 0x235/1 504 + Protocol: 2.10+ 505 + 506 + This field, if nonzero, indicates as a power of two the minimum 507 + alignment required, as opposed to preferred, by the kernel to boot. 508 + If a boot loader makes use of this field, it should update the 509 + kernel_alignment field with the alignment unit desired; typically: 510 + 511 + kernel_alignment = 1 << min_alignment 512 + 513 + There may be a considerable performance cost with an excessively 514 + misaligned kernel. Therefore, a loader should typically try each 515 + power-of-two alignment from kernel_alignment down to this alignment. 560 516 561 517 Field name: cmdline_size 562 518 Type: read ··· 657 581 process. Therefore, when modifying this list one should always make 658 582 sure to consider the case where the linked list already contains 659 583 entries. 584 + 585 + Field name: pref_address 586 + Type: read (reloc) 587 + Offset/size: 0x258/8 588 + Protocol: 2.10+ 589 + 590 + This field, if nonzero, represents a preferred load address for the 591 + kernel. A relocating bootloader should attempt to load at this 592 + address if possible. 593 + 594 + A non-relocatable kernel will unconditionally move itself and to run 595 + at this address. 596 + 597 + Field name: init_size 598 + Type: read 599 + Offset/size: 0x25c/4 600 + 601 + This field indicates the amount of linear contiguous memory starting 602 + at the kernel runtime start address that the kernel needs before it 603 + is capable of examining its memory map. This is not the same thing 604 + as the total amount of memory the kernel needs to boot, but it can 605 + be used by a relocating boot loader to help select a safe load 606 + address for the kernel. 607 + 608 + The kernel runtime start address is determined by the following algorithm: 609 + 610 + if (relocatable_kernel) 611 + runtime_start = align_up(load_address, kernel_alignment) 612 + else 613 + runtime_start = pref_address 660 614 661 615 662 616 **** THE IMAGE CHECKSUM
+16
arch/x86/Kbuild
··· 1 + 2 + obj-$(CONFIG_KVM) += kvm/ 3 + 4 + # Xen paravirtualization support 5 + obj-$(CONFIG_XEN) += xen/ 6 + 7 + # lguest paravirtualization support 8 + obj-$(CONFIG_LGUEST_GUEST) += lguest/ 9 + 10 + obj-y += kernel/ 11 + obj-y += mm/ 12 + 13 + obj-y += crypto/ 14 + obj-y += vdso/ 15 + obj-$(CONFIG_IA32_EMULATION) += ia32/ 16 +
+24 -17
arch/x86/Kconfig
··· 47 47 select HAVE_KERNEL_BZIP2 48 48 select HAVE_KERNEL_LZMA 49 49 50 + config OUTPUT_FORMAT 51 + string 52 + default "elf32-i386" if X86_32 53 + default "elf64-x86-64" if X86_64 54 + 50 55 config ARCH_DEFCONFIG 51 56 string 52 57 default "arch/x86/configs/i386_defconfig" if X86_32 ··· 1465 1460 1466 1461 config PHYSICAL_START 1467 1462 hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP) 1468 - default "0x1000000" if X86_NUMAQ 1469 - default "0x200000" if X86_64 1470 - default "0x100000" 1463 + default "0x1000000" 1471 1464 ---help--- 1472 1465 This gives the physical address where the kernel is loaded. 1473 1466 ··· 1484 1481 to be specifically compiled to run from a specific memory area 1485 1482 (normally a reserved region) and this option comes handy. 1486 1483 1487 - So if you are using bzImage for capturing the crash dump, leave 1488 - the value here unchanged to 0x100000 and set CONFIG_RELOCATABLE=y. 1489 - Otherwise if you plan to use vmlinux for capturing the crash dump 1490 - change this value to start of the reserved region (Typically 16MB 1491 - 0x1000000). In other words, it can be set based on the "X" value as 1492 - specified in the "crashkernel=YM@XM" command line boot parameter 1493 - passed to the panic-ed kernel. Typically this parameter is set as 1494 - crashkernel=64M@16M. Please take a look at 1495 - Documentation/kdump/kdump.txt for more details about crash dumps. 1484 + So if you are using bzImage for capturing the crash dump, 1485 + leave the value here unchanged to 0x1000000 and set 1486 + CONFIG_RELOCATABLE=y. Otherwise if you plan to use vmlinux 1487 + for capturing the crash dump change this value to start of 1488 + the reserved region. In other words, it can be set based on 1489 + the "X" value as specified in the "crashkernel=YM@XM" 1490 + command line boot parameter passed to the panic-ed 1491 + kernel. Please take a look at Documentation/kdump/kdump.txt 1492 + for more details about crash dumps. 1496 1493 1497 1494 Usage of bzImage for capturing the crash dump is recommended as 1498 1495 one does not have to build two kernels. Same kernel can be used ··· 1505 1502 Don't change this unless you know what you are doing. 1506 1503 1507 1504 config RELOCATABLE 1508 - bool "Build a relocatable kernel (EXPERIMENTAL)" 1509 - depends on EXPERIMENTAL 1505 + bool "Build a relocatable kernel" 1506 + default y 1510 1507 ---help--- 1511 1508 This builds a kernel image that retains relocation information 1512 1509 so it can be loaded someplace besides the default 1MB. ··· 1521 1518 it has been loaded at and the compile time physical address 1522 1519 (CONFIG_PHYSICAL_START) is ignored. 1523 1520 1521 + # Relocation on x86-32 needs some additional build support 1522 + config X86_NEED_RELOCS 1523 + def_bool y 1524 + depends on X86_32 && RELOCATABLE 1525 + 1524 1526 config PHYSICAL_ALIGN 1525 1527 hex 1526 1528 prompt "Alignment value to which kernel should be aligned" if X86_32 1527 - default "0x100000" if X86_32 1528 - default "0x200000" if X86_64 1529 - range 0x2000 0x400000 1529 + default "0x1000000" 1530 + range 0x2000 0x1000000 1530 1531 ---help--- 1531 1532 This value puts the alignment restrictions on physical address 1532 1533 where kernel is loaded and run from. Kernel is compiled for an
+2 -17
arch/x86/Makefile
··· 7 7 KBUILD_DEFCONFIG := $(ARCH)_defconfig 8 8 endif 9 9 10 - core-$(CONFIG_KVM) += arch/x86/kvm/ 11 - 12 10 # BITS is used as extension for files which are available in a 32 bit 13 11 # and a 64 bit version to simplify shared Makefiles. 14 12 # e.g.: obj-y += foo_$(BITS).o ··· 116 118 117 119 libs-y += arch/x86/lib/ 118 120 119 - # Sub architecture files that needs linking first 120 - core-y += $(fcore-y) 121 - 122 - # Xen paravirtualization support 123 - core-$(CONFIG_XEN) += arch/x86/xen/ 124 - 125 - # lguest paravirtualization support 126 - core-$(CONFIG_LGUEST_GUEST) += arch/x86/lguest/ 127 - 128 - core-y += arch/x86/kernel/ 129 - core-y += arch/x86/mm/ 130 - 131 - core-y += arch/x86/crypto/ 132 - core-y += arch/x86/vdso/ 133 - core-$(CONFIG_IA32_EMULATION) += arch/x86/ia32/ 121 + # See arch/x86/Kbuild for content of core part of the kernel 122 + core-y += arch/x86/ 134 123 135 124 # drivers-y are linked after core-y 136 125 drivers-$(CONFIG_MATH_EMULATION) += arch/x86/math-emu/
+2
arch/x86/boot/.gitignore
··· 3 3 cpustr.h 4 4 mkcpustr 5 5 offsets.h 6 + voffset.h 7 + zoffset.h 6 8 setup 7 9 setup.bin 8 10 setup.elf
+16 -8
arch/x86/boot/Makefile
··· 86 86 87 87 SETUP_OBJS = $(addprefix $(obj)/,$(setup-y)) 88 88 89 - sed-offsets := -e 's/^00*/0/' \ 90 - -e 's/^\([0-9a-fA-F]*\) . \(input_data\|input_data_end\)$$/\#define \2 0x\1/p' 89 + sed-voffset := -e 's/^\([0-9a-fA-F]*\) . \(_text\|_end\)$$/\#define VO_\2 0x\1/p' 91 90 92 - quiet_cmd_offsets = OFFSETS $@ 93 - cmd_offsets = $(NM) $< | sed -n $(sed-offsets) > $@ 91 + quiet_cmd_voffset = VOFFSET $@ 92 + cmd_voffset = $(NM) $< | sed -n $(sed-voffset) > $@ 94 93 95 - $(obj)/offsets.h: $(obj)/compressed/vmlinux FORCE 96 - $(call if_changed,offsets) 94 + targets += voffset.h 95 + $(obj)/voffset.h: vmlinux FORCE 96 + $(call if_changed,voffset) 97 97 98 - targets += offsets.h 98 + sed-zoffset := -e 's/^\([0-9a-fA-F]*\) . \(startup_32\|input_data\|_end\|z_.*\)$$/\#define ZO_\2 0x\1/p' 99 + 100 + quiet_cmd_zoffset = ZOFFSET $@ 101 + cmd_zoffset = $(NM) $< | sed -n $(sed-zoffset) > $@ 102 + 103 + targets += zoffset.h 104 + $(obj)/zoffset.h: $(obj)/compressed/vmlinux FORCE 105 + $(call if_changed,zoffset) 106 + 99 107 100 108 AFLAGS_header.o += -I$(obj) 101 - $(obj)/header.o: $(obj)/offsets.h 109 + $(obj)/header.o: $(obj)/voffset.h $(obj)/zoffset.h 102 110 103 111 LDFLAGS_setup.elf := -T 104 112 $(obj)/setup.elf: $(src)/setup.ld $(SETUP_OBJS) FORCE
+3
arch/x86/boot/compressed/.gitignore
··· 1 1 relocs 2 2 vmlinux.bin.all 3 3 vmlinux.relocs 4 + vmlinux.lds 5 + mkpiggy 6 + piggy.S
+16 -38
arch/x86/boot/compressed/Makefile
··· 19 19 LDFLAGS := -m elf_$(UTS_MACHINE) 20 20 LDFLAGS_vmlinux := -T 21 21 22 - $(obj)/vmlinux: $(src)/vmlinux_$(BITS).lds $(obj)/head_$(BITS).o $(obj)/misc.o $(obj)/piggy.o FORCE 22 + hostprogs-y := mkpiggy 23 + 24 + $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/head_$(BITS).o $(obj)/misc.o $(obj)/piggy.o FORCE 23 25 $(call if_changed,ld) 24 26 @: 25 27 ··· 31 29 32 30 33 31 targets += vmlinux.bin.all vmlinux.relocs relocs 34 - hostprogs-$(CONFIG_X86_32) += relocs 32 + hostprogs-$(CONFIG_X86_NEED_RELOCS) += relocs 35 33 36 34 quiet_cmd_relocs = RELOCS $@ 37 35 cmd_relocs = $(obj)/relocs $< > $@;$(obj)/relocs --abs-relocs $< ··· 39 37 $(call if_changed,relocs) 40 38 41 39 vmlinux.bin.all-y := $(obj)/vmlinux.bin 42 - vmlinux.bin.all-$(CONFIG_RELOCATABLE) += $(obj)/vmlinux.relocs 43 - quiet_cmd_relocbin = BUILD $@ 44 - cmd_relocbin = cat $(filter-out FORCE,$^) > $@ 45 - $(obj)/vmlinux.bin.all: $(vmlinux.bin.all-y) FORCE 46 - $(call if_changed,relocbin) 40 + vmlinux.bin.all-$(CONFIG_X86_NEED_RELOCS) += $(obj)/vmlinux.relocs 47 41 48 - ifeq ($(CONFIG_X86_32),y) 49 - 50 - ifdef CONFIG_RELOCATABLE 51 - $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin.all FORCE 42 + $(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE 52 43 $(call if_changed,gzip) 53 - $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin.all FORCE 44 + $(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE 54 45 $(call if_changed,bzip2) 55 - $(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin.all FORCE 56 - $(call if_changed,lzma) 57 - else 58 - $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE 59 - $(call if_changed,gzip) 60 - $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE 61 - $(call if_changed,bzip2) 62 - $(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE 63 - $(call if_changed,lzma) 64 - endif 65 - LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T 66 - 67 - else 68 - 69 - $(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE 70 - $(call if_changed,gzip) 71 - $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE 72 - $(call if_changed,bzip2) 73 - $(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE 46 + $(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE 74 47 $(call if_changed,lzma) 75 48 76 - LDFLAGS_piggy.o := -r --format binary --oformat elf64-x86-64 -T 77 - endif 49 + suffix-$(CONFIG_KERNEL_GZIP) := gz 50 + suffix-$(CONFIG_KERNEL_BZIP2) := bz2 51 + suffix-$(CONFIG_KERNEL_LZMA) := lzma 78 52 79 - suffix_$(CONFIG_KERNEL_GZIP) = gz 80 - suffix_$(CONFIG_KERNEL_BZIP2) = bz2 81 - suffix_$(CONFIG_KERNEL_LZMA) = lzma 53 + quiet_cmd_mkpiggy = MKPIGGY $@ 54 + cmd_mkpiggy = $(obj)/mkpiggy $< > $@ || ( rm -f $@ ; false ) 82 55 83 - $(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix_y) FORCE 84 - $(call if_changed,ld) 56 + targets += piggy.S 57 + $(obj)/piggy.S: $(obj)/vmlinux.bin.$(suffix-y) $(obj)/mkpiggy FORCE 58 + $(call if_changed,mkpiggy)
+91 -101
arch/x86/boot/compressed/head_32.S
··· 12 12 * the page directory. [According to comments etc elsewhere on a compressed 13 13 * kernel it will end up at 0x1000 + 1Mb I hope so as I assume this. - AC] 14 14 * 15 - * Page 0 is deliberately kept safe, since System Management Mode code in 15 + * Page 0 is deliberately kept safe, since System Management Mode code in 16 16 * laptops may need to access the BIOS data stored there. This is also 17 - * useful for future device drivers that either access the BIOS via VM86 17 + * useful for future device drivers that either access the BIOS via VM86 18 18 * mode. 19 19 */ 20 20 21 21 /* 22 22 * High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996 23 23 */ 24 - .text 24 + .text 25 25 26 26 #include <linux/linkage.h> 27 27 #include <asm/segment.h> ··· 29 29 #include <asm/boot.h> 30 30 #include <asm/asm-offsets.h> 31 31 32 - .section ".text.head","ax",@progbits 32 + .section ".text.head","ax",@progbits 33 33 ENTRY(startup_32) 34 34 cld 35 - /* test KEEP_SEGMENTS flag to see if the bootloader is asking 36 - * us to not reload segments */ 37 - testb $(1<<6), BP_loadflags(%esi) 38 - jnz 1f 35 + /* 36 + * Test KEEP_SEGMENTS flag to see if the bootloader is asking 37 + * us to not reload segments 38 + */ 39 + testb $(1<<6), BP_loadflags(%esi) 40 + jnz 1f 39 41 40 42 cli 41 - movl $(__BOOT_DS),%eax 42 - movl %eax,%ds 43 - movl %eax,%es 44 - movl %eax,%fs 45 - movl %eax,%gs 46 - movl %eax,%ss 43 + movl $__BOOT_DS, %eax 44 + movl %eax, %ds 45 + movl %eax, %es 46 + movl %eax, %fs 47 + movl %eax, %gs 48 + movl %eax, %ss 47 49 1: 48 50 49 - /* Calculate the delta between where we were compiled to run 51 + /* 52 + * Calculate the delta between where we were compiled to run 50 53 * at and where we were actually loaded at. This can only be done 51 54 * with a short local call on x86. Nothing else will tell us what 52 55 * address we are running at. The reserved chunk of the real-mode 53 56 * data at 0x1e4 (defined as a scratch field) are used as the stack 54 57 * for this calculation. Only 4 bytes are needed. 55 58 */ 56 - leal (0x1e4+4)(%esi), %esp 57 - call 1f 58 - 1: popl %ebp 59 - subl $1b, %ebp 59 + leal (BP_scratch+4)(%esi), %esp 60 + call 1f 61 + 1: popl %ebp 62 + subl $1b, %ebp 60 63 61 - /* %ebp contains the address we are loaded at by the boot loader and %ebx 64 + /* 65 + * %ebp contains the address we are loaded at by the boot loader and %ebx 62 66 * contains the address where we should move the kernel image temporarily 63 67 * for safe in-place decompression. 64 68 */ 65 69 66 70 #ifdef CONFIG_RELOCATABLE 67 - movl %ebp, %ebx 68 - addl $(CONFIG_PHYSICAL_ALIGN - 1), %ebx 69 - andl $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebx 71 + movl %ebp, %ebx 72 + movl BP_kernel_alignment(%esi), %eax 73 + decl %eax 74 + addl %eax, %ebx 75 + notl %eax 76 + andl %eax, %ebx 70 77 #else 71 - movl $LOAD_PHYSICAL_ADDR, %ebx 78 + movl $LOAD_PHYSICAL_ADDR, %ebx 72 79 #endif 73 80 74 - /* Replace the compressed data size with the uncompressed size */ 75 - subl input_len(%ebp), %ebx 76 - movl output_len(%ebp), %eax 77 - addl %eax, %ebx 78 - /* Add 8 bytes for every 32K input block */ 79 - shrl $12, %eax 80 - addl %eax, %ebx 81 - /* Add 32K + 18 bytes of extra slack */ 82 - addl $(32768 + 18), %ebx 83 - /* Align on a 4K boundary */ 84 - addl $4095, %ebx 85 - andl $~4095, %ebx 81 + /* Target address to relocate to for decompression */ 82 + addl $z_extract_offset, %ebx 86 83 87 - /* Copy the compressed kernel to the end of our buffer 84 + /* Set up the stack */ 85 + leal boot_stack_end(%ebx), %esp 86 + 87 + /* Zero EFLAGS */ 88 + pushl $0 89 + popfl 90 + 91 + /* 92 + * Copy the compressed kernel to the end of our buffer 88 93 * where decompression in place becomes safe. 89 94 */ 90 - pushl %esi 91 - leal _end(%ebp), %esi 92 - leal _end(%ebx), %edi 93 - movl $(_end - startup_32), %ecx 95 + pushl %esi 96 + leal (_bss-4)(%ebp), %esi 97 + leal (_bss-4)(%ebx), %edi 98 + movl $(_bss - startup_32), %ecx 99 + shrl $2, %ecx 94 100 std 95 - rep 96 - movsb 101 + rep movsl 97 102 cld 98 - popl %esi 99 - 100 - /* Compute the kernel start address. 101 - */ 102 - #ifdef CONFIG_RELOCATABLE 103 - addl $(CONFIG_PHYSICAL_ALIGN - 1), %ebp 104 - andl $(~(CONFIG_PHYSICAL_ALIGN - 1)), %ebp 105 - #else 106 - movl $LOAD_PHYSICAL_ADDR, %ebp 107 - #endif 103 + popl %esi 108 104 109 105 /* 110 106 * Jump to the relocated address. 111 107 */ 112 - leal relocated(%ebx), %eax 113 - jmp *%eax 108 + leal relocated(%ebx), %eax 109 + jmp *%eax 114 110 ENDPROC(startup_32) 115 111 116 - .section ".text" 112 + .text 117 113 relocated: 118 114 119 115 /* 120 - * Clear BSS 116 + * Clear BSS (stack is currently empty) 121 117 */ 122 - xorl %eax,%eax 123 - leal _edata(%ebx),%edi 124 - leal _end(%ebx), %ecx 125 - subl %edi,%ecx 126 - cld 127 - rep 128 - stosb 129 - 130 - /* 131 - * Setup the stack for the decompressor 132 - */ 133 - leal boot_stack_end(%ebx), %esp 118 + xorl %eax, %eax 119 + leal _bss(%ebx), %edi 120 + leal _ebss(%ebx), %ecx 121 + subl %edi, %ecx 122 + shrl $2, %ecx 123 + rep stosl 134 124 135 125 /* 136 126 * Do the decompression, and jump to the new kernel.. 137 127 */ 138 - movl output_len(%ebx), %eax 139 - pushl %eax 140 - # push arguments for decompress_kernel: 141 - pushl %ebp # output address 142 - movl input_len(%ebx), %eax 143 - pushl %eax # input_len 144 - leal input_data(%ebx), %eax 145 - pushl %eax # input_data 146 - leal boot_heap(%ebx), %eax 147 - pushl %eax # heap area 148 - pushl %esi # real mode pointer 149 - call decompress_kernel 150 - addl $20, %esp 151 - popl %ecx 128 + leal z_extract_offset_negative(%ebx), %ebp 129 + /* push arguments for decompress_kernel: */ 130 + pushl %ebp /* output address */ 131 + pushl $z_input_len /* input_len */ 132 + leal input_data(%ebx), %eax 133 + pushl %eax /* input_data */ 134 + leal boot_heap(%ebx), %eax 135 + pushl %eax /* heap area */ 136 + pushl %esi /* real mode pointer */ 137 + call decompress_kernel 138 + addl $20, %esp 152 139 153 140 #if CONFIG_RELOCATABLE 154 - /* Find the address of the relocations. 141 + /* 142 + * Find the address of the relocations. 155 143 */ 156 - movl %ebp, %edi 157 - addl %ecx, %edi 144 + leal z_output_len(%ebp), %edi 158 145 159 - /* Calculate the delta between where vmlinux was compiled to run 146 + /* 147 + * Calculate the delta between where vmlinux was compiled to run 160 148 * and where it was actually loaded. 161 149 */ 162 - movl %ebp, %ebx 163 - subl $LOAD_PHYSICAL_ADDR, %ebx 164 - jz 2f /* Nothing to be done if loaded at compiled addr. */ 150 + movl %ebp, %ebx 151 + subl $LOAD_PHYSICAL_ADDR, %ebx 152 + jz 2f /* Nothing to be done if loaded at compiled addr. */ 165 153 /* 166 154 * Process relocations. 167 155 */ 168 156 169 - 1: subl $4, %edi 170 - movl 0(%edi), %ecx 171 - testl %ecx, %ecx 172 - jz 2f 173 - addl %ebx, -__PAGE_OFFSET(%ebx, %ecx) 174 - jmp 1b 157 + 1: subl $4, %edi 158 + movl (%edi), %ecx 159 + testl %ecx, %ecx 160 + jz 2f 161 + addl %ebx, -__PAGE_OFFSET(%ebx, %ecx) 162 + jmp 1b 175 163 2: 176 164 #endif 177 165 178 166 /* 179 167 * Jump to the decompressed kernel. 180 168 */ 181 - xorl %ebx,%ebx 182 - jmp *%ebp 169 + xorl %ebx, %ebx 170 + jmp *%ebp 183 171 184 - .bss 185 - /* Stack and heap for uncompression */ 186 - .balign 4 172 + /* 173 + * Stack and heap for uncompression 174 + */ 175 + .bss 176 + .balign 4 187 177 boot_heap: 188 178 .fill BOOT_HEAP_SIZE, 1, 0 189 179 boot_stack:
+87 -80
arch/x86/boot/compressed/head_64.S
··· 21 21 /* 22 22 * High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996 23 23 */ 24 - .code32 25 - .text 24 + .code32 25 + .text 26 26 27 27 #include <linux/linkage.h> 28 28 #include <asm/segment.h> ··· 33 33 #include <asm/processor-flags.h> 34 34 #include <asm/asm-offsets.h> 35 35 36 - .section ".text.head" 36 + .section ".text.head" 37 37 .code32 38 38 ENTRY(startup_32) 39 39 cld 40 - /* test KEEP_SEGMENTS flag to see if the bootloader is asking 41 - * us to not reload segments */ 40 + /* 41 + * Test KEEP_SEGMENTS flag to see if the bootloader is asking 42 + * us to not reload segments 43 + */ 42 44 testb $(1<<6), BP_loadflags(%esi) 43 45 jnz 1f 44 46 ··· 51 49 movl %eax, %ss 52 50 1: 53 51 54 - /* Calculate the delta between where we were compiled to run 52 + /* 53 + * Calculate the delta between where we were compiled to run 55 54 * at and where we were actually loaded at. This can only be done 56 55 * with a short local call on x86. Nothing else will tell us what 57 56 * address we are running at. The reserved chunk of the real-mode 58 57 * data at 0x1e4 (defined as a scratch field) are used as the stack 59 58 * for this calculation. Only 4 bytes are needed. 60 59 */ 61 - leal (0x1e4+4)(%esi), %esp 60 + leal (BP_scratch+4)(%esi), %esp 62 61 call 1f 63 62 1: popl %ebp 64 63 subl $1b, %ebp ··· 73 70 testl %eax, %eax 74 71 jnz no_longmode 75 72 76 - /* Compute the delta between where we were compiled to run at 73 + /* 74 + * Compute the delta between where we were compiled to run at 77 75 * and where the code will actually run at. 78 - */ 79 - /* %ebp contains the address we are loaded at by the boot loader and %ebx 76 + * 77 + * %ebp contains the address we are loaded at by the boot loader and %ebx 80 78 * contains the address where we should move the kernel image temporarily 81 79 * for safe in-place decompression. 82 80 */ 83 81 84 82 #ifdef CONFIG_RELOCATABLE 85 83 movl %ebp, %ebx 86 - addl $(PMD_PAGE_SIZE -1), %ebx 87 - andl $PMD_PAGE_MASK, %ebx 84 + movl BP_kernel_alignment(%esi), %eax 85 + decl %eax 86 + addl %eax, %ebx 87 + notl %eax 88 + andl %eax, %ebx 88 89 #else 89 - movl $CONFIG_PHYSICAL_START, %ebx 90 + movl $LOAD_PHYSICAL_ADDR, %ebx 90 91 #endif 91 92 92 - /* Replace the compressed data size with the uncompressed size */ 93 - subl input_len(%ebp), %ebx 94 - movl output_len(%ebp), %eax 95 - addl %eax, %ebx 96 - /* Add 8 bytes for every 32K input block */ 97 - shrl $12, %eax 98 - addl %eax, %ebx 99 - /* Add 32K + 18 bytes of extra slack and align on a 4K boundary */ 100 - addl $(32768 + 18 + 4095), %ebx 101 - andl $~4095, %ebx 93 + /* Target address to relocate to for decompression */ 94 + addl $z_extract_offset, %ebx 102 95 103 96 /* 104 97 * Prepare for entering 64 bit mode ··· 113 114 /* 114 115 * Build early 4G boot pagetable 115 116 */ 116 - /* Initialize Page tables to 0*/ 117 + /* Initialize Page tables to 0 */ 117 118 leal pgtable(%ebx), %edi 118 119 xorl %eax, %eax 119 120 movl $((4096*6)/4), %ecx ··· 154 155 btsl $_EFER_LME, %eax 155 156 wrmsr 156 157 157 - /* Setup for the jump to 64bit mode 158 + /* 159 + * Setup for the jump to 64bit mode 158 160 * 159 161 * When the jump is performend we will be in long mode but 160 162 * in 32bit compatibility mode with EFER.LME = 1, CS.L = 0, CS.D = 1 ··· 184 184 185 185 #include "../../kernel/verify_cpu_64.S" 186 186 187 - /* Be careful here startup_64 needs to be at a predictable 187 + /* 188 + * Be careful here startup_64 needs to be at a predictable 188 189 * address so I can export it in an ELF header. Bootloaders 189 190 * should look at the ELF header to find this address, as 190 191 * it may change in the future. ··· 193 192 .code64 194 193 .org 0x200 195 194 ENTRY(startup_64) 196 - /* We come here either from startup_32 or directly from a 195 + /* 196 + * We come here either from startup_32 or directly from a 197 197 * 64bit bootloader. If we come here from a bootloader we depend on 198 198 * an identity mapped page table being provied that maps our 199 199 * entire text+data+bss and hopefully all of memory. ··· 211 209 movl $0x20, %eax 212 210 ltr %ax 213 211 214 - /* Compute the decompressed kernel start address. It is where 212 + /* 213 + * Compute the decompressed kernel start address. It is where 215 214 * we were loaded at aligned to a 2M boundary. %rbp contains the 216 215 * decompressed kernel start address. 217 216 * 218 217 * If it is a relocatable kernel then decompress and run the kernel 219 218 * from load address aligned to 2MB addr, otherwise decompress and 220 - * run the kernel from CONFIG_PHYSICAL_START 219 + * run the kernel from LOAD_PHYSICAL_ADDR 220 + * 221 + * We cannot rely on the calculation done in 32-bit mode, since we 222 + * may have been invoked via the 64-bit entry point. 221 223 */ 222 224 223 225 /* Start with the delta to where the kernel will run at. */ 224 226 #ifdef CONFIG_RELOCATABLE 225 227 leaq startup_32(%rip) /* - $startup_32 */, %rbp 226 - addq $(PMD_PAGE_SIZE - 1), %rbp 227 - andq $PMD_PAGE_MASK, %rbp 228 - movq %rbp, %rbx 228 + movl BP_kernel_alignment(%rsi), %eax 229 + decl %eax 230 + addq %rax, %rbp 231 + notq %rax 232 + andq %rax, %rbp 229 233 #else 230 - movq $CONFIG_PHYSICAL_START, %rbp 231 - movq %rbp, %rbx 234 + movq $LOAD_PHYSICAL_ADDR, %rbp 232 235 #endif 233 236 234 - /* Replace the compressed data size with the uncompressed size */ 235 - movl input_len(%rip), %eax 236 - subq %rax, %rbx 237 - movl output_len(%rip), %eax 238 - addq %rax, %rbx 239 - /* Add 8 bytes for every 32K input block */ 240 - shrq $12, %rax 241 - addq %rax, %rbx 242 - /* Add 32K + 18 bytes of extra slack and align on a 4K boundary */ 243 - addq $(32768 + 18 + 4095), %rbx 244 - andq $~4095, %rbx 237 + /* Target address to relocate to for decompression */ 238 + leaq z_extract_offset(%rbp), %rbx 245 239 246 - /* Copy the compressed kernel to the end of our buffer 240 + /* Set up the stack */ 241 + leaq boot_stack_end(%rbx), %rsp 242 + 243 + /* Zero EFLAGS */ 244 + pushq $0 245 + popfq 246 + 247 + /* 248 + * Copy the compressed kernel to the end of our buffer 247 249 * where decompression in place becomes safe. 248 250 */ 249 - leaq _end_before_pgt(%rip), %r8 250 - leaq _end_before_pgt(%rbx), %r9 251 - movq $_end_before_pgt /* - $startup_32 */, %rcx 252 - 1: subq $8, %r8 253 - subq $8, %r9 254 - movq 0(%r8), %rax 255 - movq %rax, 0(%r9) 256 - subq $8, %rcx 257 - jnz 1b 251 + pushq %rsi 252 + leaq (_bss-8)(%rip), %rsi 253 + leaq (_bss-8)(%rbx), %rdi 254 + movq $_bss /* - $startup_32 */, %rcx 255 + shrq $3, %rcx 256 + std 257 + rep movsq 258 + cld 259 + popq %rsi 258 260 259 261 /* 260 262 * Jump to the relocated address. ··· 266 260 leaq relocated(%rbx), %rax 267 261 jmp *%rax 268 262 269 - .section ".text" 263 + .text 270 264 relocated: 271 265 272 266 /* 273 - * Clear BSS 267 + * Clear BSS (stack is currently empty) 274 268 */ 275 - xorq %rax, %rax 276 - leaq _edata(%rbx), %rdi 277 - leaq _end_before_pgt(%rbx), %rcx 269 + xorl %eax, %eax 270 + leaq _bss(%rip), %rdi 271 + leaq _ebss(%rip), %rcx 278 272 subq %rdi, %rcx 279 - cld 280 - rep 281 - stosb 282 - 283 - /* Setup the stack */ 284 - leaq boot_stack_end(%rip), %rsp 285 - 286 - /* zero EFLAGS after setting rsp */ 287 - pushq $0 288 - popfq 273 + shrq $3, %rcx 274 + rep stosq 289 275 290 276 /* 291 277 * Do the decompression, and jump to the new kernel.. 292 278 */ 293 - pushq %rsi # Save the real mode argument 294 - movq %rsi, %rdi # real mode address 295 - leaq boot_heap(%rip), %rsi # malloc area for uncompression 296 - leaq input_data(%rip), %rdx # input_data 297 - movl input_len(%rip), %eax 298 - movq %rax, %rcx # input_len 299 - movq %rbp, %r8 # output 279 + pushq %rsi /* Save the real mode argument */ 280 + movq %rsi, %rdi /* real mode address */ 281 + leaq boot_heap(%rip), %rsi /* malloc area for uncompression */ 282 + leaq input_data(%rip), %rdx /* input_data */ 283 + movl $z_input_len, %ecx /* input_len */ 284 + movq %rbp, %r8 /* output target address */ 300 285 call decompress_kernel 301 286 popq %rsi 302 287 ··· 308 311 .quad 0x0000000000000000 /* TS continued */ 309 312 gdt_end: 310 313 311 - .bss 312 - /* Stack and heap for uncompression */ 313 - .balign 4 314 + /* 315 + * Stack and heap for uncompression 316 + */ 317 + .bss 318 + .balign 4 314 319 boot_heap: 315 320 .fill BOOT_HEAP_SIZE, 1, 0 316 321 boot_stack: 317 322 .fill BOOT_STACK_SIZE, 1, 0 318 323 boot_stack_end: 324 + 325 + /* 326 + * Space for page tables (not in .bss so not zeroed) 327 + */ 328 + .section ".pgtable","a",@nobits 329 + .balign 4096 330 + pgtable: 331 + .fill 6*4096, 1, 0
+6 -8
arch/x86/boot/compressed/misc.c
··· 325 325 free_mem_ptr = heap; /* Heap */ 326 326 free_mem_end_ptr = heap + BOOT_HEAP_SIZE; 327 327 328 + if ((unsigned long)output & (MIN_KERNEL_ALIGN - 1)) 329 + error("Destination address inappropriately aligned"); 328 330 #ifdef CONFIG_X86_64 329 - if ((unsigned long)output & (__KERNEL_ALIGN - 1)) 330 - error("Destination address not 2M aligned"); 331 - if ((unsigned long)output >= 0xffffffffffUL) 331 + if (heap > 0x3fffffffffffUL) 332 332 error("Destination address too large"); 333 333 #else 334 - if ((u32)output & (CONFIG_PHYSICAL_ALIGN - 1)) 335 - error("Destination address not CONFIG_PHYSICAL_ALIGN aligned"); 336 334 if (heap > ((-__PAGE_OFFSET-(512<<20)-1) & 0x7fffffff)) 337 335 error("Destination address too large"); 338 - #ifndef CONFIG_RELOCATABLE 339 - if ((u32)output != LOAD_PHYSICAL_ADDR) 340 - error("Wrong destination address"); 341 336 #endif 337 + #ifndef CONFIG_RELOCATABLE 338 + if ((unsigned long)output != LOAD_PHYSICAL_ADDR) 339 + error("Wrong destination address"); 342 340 #endif 343 341 344 342 if (!quiet)
+97
arch/x86/boot/compressed/mkpiggy.c
··· 1 + /* ----------------------------------------------------------------------- * 2 + * 3 + * Copyright (C) 2009 Intel Corporation. All rights reserved. 4 + * 5 + * This program is free software; you can redistribute it and/or 6 + * modify it under the terms of the GNU General Public License version 7 + * 2 as published by the Free Software Foundation. 8 + * 9 + * This program is distributed in the hope that it will be useful, 10 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 + * GNU General Public License for more details. 13 + * 14 + * You should have received a copy of the GNU General Public License 15 + * along with this program; if not, write to the Free Software 16 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 17 + * 02110-1301, USA. 18 + * 19 + * H. Peter Anvin <hpa@linux.intel.com> 20 + * 21 + * ----------------------------------------------------------------------- */ 22 + 23 + /* 24 + * Compute the desired load offset from a compressed program; outputs 25 + * a small assembly wrapper with the appropriate symbols defined. 26 + */ 27 + 28 + #include <stdlib.h> 29 + #include <stdio.h> 30 + #include <string.h> 31 + #include <inttypes.h> 32 + 33 + static uint32_t getle32(const void *p) 34 + { 35 + const uint8_t *cp = p; 36 + 37 + return (uint32_t)cp[0] + ((uint32_t)cp[1] << 8) + 38 + ((uint32_t)cp[2] << 16) + ((uint32_t)cp[3] << 24); 39 + } 40 + 41 + int main(int argc, char *argv[]) 42 + { 43 + uint32_t olen; 44 + long ilen; 45 + unsigned long offs; 46 + FILE *f; 47 + 48 + if (argc < 2) { 49 + fprintf(stderr, "Usage: %s compressed_file\n", argv[0]); 50 + return 1; 51 + } 52 + 53 + /* Get the information for the compressed kernel image first */ 54 + 55 + f = fopen(argv[1], "r"); 56 + if (!f) { 57 + perror(argv[1]); 58 + return 1; 59 + } 60 + 61 + 62 + if (fseek(f, -4L, SEEK_END)) { 63 + perror(argv[1]); 64 + } 65 + fread(&olen, sizeof olen, 1, f); 66 + ilen = ftell(f); 67 + olen = getle32(&olen); 68 + fclose(f); 69 + 70 + /* 71 + * Now we have the input (compressed) and output (uncompressed) 72 + * sizes, compute the necessary decompression offset... 73 + */ 74 + 75 + offs = (olen > ilen) ? olen - ilen : 0; 76 + offs += olen >> 12; /* Add 8 bytes for each 32K block */ 77 + offs += 32*1024 + 18; /* Add 32K + 18 bytes slack */ 78 + offs = (offs+4095) & ~4095; /* Round to a 4K boundary */ 79 + 80 + printf(".section \".rodata.compressed\",\"a\",@progbits\n"); 81 + printf(".globl z_input_len\n"); 82 + printf("z_input_len = %lu\n", ilen); 83 + printf(".globl z_output_len\n"); 84 + printf("z_output_len = %lu\n", (unsigned long)olen); 85 + printf(".globl z_extract_offset\n"); 86 + printf("z_extract_offset = 0x%lx\n", offs); 87 + /* z_extract_offset_negative allows simplification of head_32.S */ 88 + printf(".globl z_extract_offset_negative\n"); 89 + printf("z_extract_offset_negative = -0x%lx\n", offs); 90 + 91 + printf(".globl input_data, input_data_end\n"); 92 + printf("input_data:\n"); 93 + printf(".incbin \"%s\"\n", argv[1]); 94 + printf("input_data_end:\n"); 95 + 96 + return 0; 97 + }
-10
arch/x86/boot/compressed/vmlinux.scr
··· 1 - SECTIONS 2 - { 3 - .rodata.compressed : { 4 - input_len = .; 5 - LONG(input_data_end - input_data) input_data = .; 6 - *(.data) 7 - output_len = . - 4; 8 - input_data_end = .; 9 - } 10 - }
-43
arch/x86/boot/compressed/vmlinux_32.lds
··· 1 - OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") 2 - OUTPUT_ARCH(i386) 3 - ENTRY(startup_32) 4 - SECTIONS 5 - { 6 - /* Be careful parts of head_32.S assume startup_32 is at 7 - * address 0. 8 - */ 9 - . = 0; 10 - .text.head : { 11 - _head = . ; 12 - *(.text.head) 13 - _ehead = . ; 14 - } 15 - .rodata.compressed : { 16 - *(.rodata.compressed) 17 - } 18 - .text : { 19 - _text = .; /* Text */ 20 - *(.text) 21 - *(.text.*) 22 - _etext = . ; 23 - } 24 - .rodata : { 25 - _rodata = . ; 26 - *(.rodata) /* read-only data */ 27 - *(.rodata.*) 28 - _erodata = . ; 29 - } 30 - .data : { 31 - _data = . ; 32 - *(.data) 33 - *(.data.*) 34 - _edata = . ; 35 - } 36 - .bss : { 37 - _bss = . ; 38 - *(.bss) 39 - *(.bss.*) 40 - *(COMMON) 41 - _end = . ; 42 - } 43 - }
+23 -6
arch/x86/boot/compressed/vmlinux_64.lds arch/x86/boot/compressed/vmlinux.lds.S
··· 1 - OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") 1 + OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT) 2 + 3 + #undef i386 4 + 5 + #include <asm/page_types.h> 6 + 7 + #ifdef CONFIG_X86_64 2 8 OUTPUT_ARCH(i386:x86-64) 3 9 ENTRY(startup_64) 10 + #else 11 + OUTPUT_ARCH(i386) 12 + ENTRY(startup_32) 13 + #endif 14 + 4 15 SECTIONS 5 16 { 6 17 /* Be careful parts of head_64.S assume startup_32 is at ··· 44 33 *(.data.*) 45 34 _edata = . ; 46 35 } 36 + . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); 47 37 .bss : { 48 38 _bss = . ; 49 39 *(.bss) 50 40 *(.bss.*) 51 41 *(COMMON) 52 - . = ALIGN(8); 53 - _end_before_pgt = . ; 54 - . = ALIGN(4096); 55 - pgtable = . ; 56 - . = . + 4096 * 6; 42 + . = ALIGN(8); /* For convenience during zeroing */ 57 43 _ebss = .; 58 44 } 45 + #ifdef CONFIG_X86_64 46 + . = ALIGN(PAGE_SIZE); 47 + .pgtable : { 48 + _pgtable = . ; 49 + *(.pgtable) 50 + _epgtable = . ; 51 + } 52 + #endif 53 + _end = .; 59 54 }
+22 -6
arch/x86/boot/header.S
··· 22 22 #include <asm/page_types.h> 23 23 #include <asm/setup.h> 24 24 #include "boot.h" 25 - #include "offsets.h" 25 + #include "voffset.h" 26 + #include "zoffset.h" 26 27 27 28 BOOTSEG = 0x07C0 /* original address of boot-sector */ 28 29 SYSSEG = 0x1000 /* historical load address >> 4 */ ··· 116 115 # Part 2 of the header, from the old setup.S 117 116 118 117 .ascii "HdrS" # header signature 119 - .word 0x0209 # header version number (>= 0x0105) 118 + .word 0x020a # header version number (>= 0x0105) 120 119 # or else old loadlin-1.5 will fail) 121 120 .globl realmode_swtch 122 121 realmode_swtch: .word 0, 0 # default_switch, SETUPSEG ··· 169 168 # end of setup code can be used by setup 170 169 # for local heap purposes. 171 170 172 - pad1: .word 0 171 + ext_loader_ver: 172 + .byte 0 # Extended boot loader version 173 + ext_loader_type: 174 + .byte 0 # Extended boot loader type 175 + 173 176 cmd_line_ptr: .long 0 # (Header version 0x0202 or later) 174 177 # If nonzero, a 32-bit pointer 175 178 # to the kernel command line. ··· 205 200 #else 206 201 relocatable_kernel: .byte 0 207 202 #endif 208 - pad2: .byte 0 203 + min_alignment: .byte MIN_KERNEL_ALIGN_LG2 # minimum alignment 209 204 pad3: .word 0 210 205 211 206 cmdline_size: .long COMMAND_LINE_SIZE-1 #length of the command line, ··· 217 212 218 213 hardware_subarch_data: .quad 0 219 214 220 - payload_offset: .long input_data 221 - payload_length: .long input_data_end-input_data 215 + payload_offset: .long ZO_input_data 216 + payload_length: .long ZO_z_input_len 222 217 223 218 setup_data: .quad 0 # 64-bit physical pointer to 224 219 # single linked list of 225 220 # struct setup_data 221 + 222 + pref_address: .quad LOAD_PHYSICAL_ADDR # preferred load addr 223 + 224 + #define ZO_INIT_SIZE (ZO__end - ZO_startup_32 + ZO_z_extract_offset) 225 + #define VO_INIT_SIZE (VO__end - VO__text) 226 + #if ZO_INIT_SIZE > VO_INIT_SIZE 227 + #define INIT_SIZE ZO_INIT_SIZE 228 + #else 229 + #define INIT_SIZE VO_INIT_SIZE 230 + #endif 231 + init_size: .long INIT_SIZE # kernel initialization size 226 232 227 233 # End of setup header ##################################################### 228 234
+114 -34
arch/x86/configs/i386_defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.29-rc4 4 - # Tue Feb 24 15:50:58 2009 3 + # Linux kernel version: 2.6.30-rc2 4 + # Mon May 11 16:21:55 2009 5 5 # 6 6 # CONFIG_64BIT is not set 7 7 CONFIG_X86_32=y 8 8 # CONFIG_X86_64 is not set 9 9 CONFIG_X86=y 10 + CONFIG_OUTPUT_FORMAT="elf32-i386" 10 11 CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" 11 12 CONFIG_GENERIC_TIME=y 12 13 CONFIG_GENERIC_CMOS_UPDATE=y ··· 34 33 CONFIG_ARCH_HAS_DEFAULT_IDLE=y 35 34 CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y 36 35 CONFIG_HAVE_SETUP_PER_CPU_AREA=y 36 + CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y 37 37 # CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set 38 38 CONFIG_ARCH_HIBERNATION_POSSIBLE=y 39 39 CONFIG_ARCH_SUSPEND_POSSIBLE=y ··· 42 40 CONFIG_ARCH_POPULATES_NODE_MAP=y 43 41 # CONFIG_AUDIT_ARCH is not set 44 42 CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y 43 + CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 45 44 CONFIG_GENERIC_HARDIRQS=y 45 + CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 46 46 CONFIG_GENERIC_IRQ_PROBE=y 47 47 CONFIG_GENERIC_PENDING_IRQ=y 48 - CONFIG_X86_SMP=y 49 48 CONFIG_USE_GENERIC_SMP_HELPERS=y 50 49 CONFIG_X86_32_SMP=y 51 50 CONFIG_X86_HT=y 52 - CONFIG_X86_BIOS_REBOOT=y 53 51 CONFIG_X86_TRAMPOLINE=y 52 + CONFIG_X86_32_LAZY_GS=y 54 53 CONFIG_KTIME_SCALAR=y 55 54 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 56 55 ··· 63 60 CONFIG_INIT_ENV_ARG_LIMIT=32 64 61 CONFIG_LOCALVERSION="" 65 62 # CONFIG_LOCALVERSION_AUTO is not set 63 + CONFIG_HAVE_KERNEL_GZIP=y 64 + CONFIG_HAVE_KERNEL_BZIP2=y 65 + CONFIG_HAVE_KERNEL_LZMA=y 66 + CONFIG_KERNEL_GZIP=y 67 + # CONFIG_KERNEL_BZIP2 is not set 68 + # CONFIG_KERNEL_LZMA is not set 66 69 CONFIG_SWAP=y 67 70 CONFIG_SYSVIPC=y 68 71 CONFIG_SYSVIPC_SYSCTL=y 69 72 CONFIG_POSIX_MQUEUE=y 73 + CONFIG_POSIX_MQUEUE_SYSCTL=y 70 74 CONFIG_BSD_PROCESS_ACCT=y 71 75 # CONFIG_BSD_PROCESS_ACCT_V3 is not set 72 76 CONFIG_TASKSTATS=y ··· 123 113 CONFIG_NET_NS=y 124 114 CONFIG_BLK_DEV_INITRD=y 125 115 CONFIG_INITRAMFS_SOURCE="" 116 + CONFIG_RD_GZIP=y 117 + CONFIG_RD_BZIP2=y 118 + CONFIG_RD_LZMA=y 126 119 CONFIG_CC_OPTIMIZE_FOR_SIZE=y 127 120 CONFIG_SYSCTL=y 121 + CONFIG_ANON_INODES=y 128 122 # CONFIG_EMBEDDED is not set 129 123 CONFIG_UID16=y 130 124 CONFIG_SYSCTL_SYSCALL=y 131 125 CONFIG_KALLSYMS=y 132 126 CONFIG_KALLSYMS_ALL=y 133 127 CONFIG_KALLSYMS_EXTRA_PASS=y 128 + # CONFIG_STRIP_ASM_SYMS is not set 134 129 CONFIG_HOTPLUG=y 135 130 CONFIG_PRINTK=y 136 131 CONFIG_BUG=y 137 132 CONFIG_ELF_CORE=y 138 133 CONFIG_PCSPKR_PLATFORM=y 139 - # CONFIG_COMPAT_BRK is not set 140 134 CONFIG_BASE_FULL=y 141 135 CONFIG_FUTEX=y 142 - CONFIG_ANON_INODES=y 143 136 CONFIG_EPOLL=y 144 137 CONFIG_SIGNALFD=y 145 138 CONFIG_TIMERFD=y ··· 152 139 CONFIG_VM_EVENT_COUNTERS=y 153 140 CONFIG_PCI_QUIRKS=y 154 141 CONFIG_SLUB_DEBUG=y 142 + # CONFIG_COMPAT_BRK is not set 155 143 # CONFIG_SLAB is not set 156 144 CONFIG_SLUB=y 157 145 # CONFIG_SLOB is not set ··· 168 154 CONFIG_HAVE_KPROBES=y 169 155 CONFIG_HAVE_KRETPROBES=y 170 156 CONFIG_HAVE_ARCH_TRACEHOOK=y 157 + CONFIG_HAVE_DMA_API_DEBUG=y 158 + # CONFIG_SLOW_WORK is not set 171 159 CONFIG_HAVE_GENERIC_DMA_COHERENT=y 172 160 CONFIG_SLABINFO=y 173 161 CONFIG_RT_MUTEXES=y ··· 183 167 CONFIG_STOP_MACHINE=y 184 168 CONFIG_BLOCK=y 185 169 # CONFIG_LBD is not set 186 - CONFIG_BLK_DEV_IO_TRACE=y 187 170 CONFIG_BLK_DEV_BSG=y 188 171 # CONFIG_BLK_DEV_INTEGRITY is not set 189 172 ··· 209 194 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 210 195 CONFIG_SMP=y 211 196 CONFIG_SPARSE_IRQ=y 212 - CONFIG_X86_FIND_SMP_CONFIG=y 213 197 CONFIG_X86_MPPARSE=y 198 + # CONFIG_X86_BIGSMP is not set 199 + CONFIG_X86_EXTENDED_PLATFORM=y 214 200 # CONFIG_X86_ELAN is not set 215 - # CONFIG_X86_GENERICARCH is not set 216 - # CONFIG_X86_VSMP is not set 217 201 # CONFIG_X86_RDC321X is not set 202 + # CONFIG_X86_32_NON_STANDARD is not set 218 203 CONFIG_SCHED_OMIT_FRAME_POINTER=y 219 204 # CONFIG_PARAVIRT_GUEST is not set 220 205 # CONFIG_MEMTEST is not set ··· 245 230 # CONFIG_GENERIC_CPU is not set 246 231 CONFIG_X86_GENERIC=y 247 232 CONFIG_X86_CPU=y 233 + CONFIG_X86_L1_CACHE_BYTES=64 234 + CONFIG_X86_INTERNODE_CACHE_BYTES=64 248 235 CONFIG_X86_CMPXCHG=y 249 - CONFIG_X86_L1_CACHE_SHIFT=7 236 + CONFIG_X86_L1_CACHE_SHIFT=5 250 237 CONFIG_X86_XADD=y 251 238 # CONFIG_X86_PPRO_FENCE is not set 252 239 CONFIG_X86_WP_WORKS_OK=y ··· 264 247 CONFIG_CPU_SUP_INTEL=y 265 248 CONFIG_CPU_SUP_CYRIX_32=y 266 249 CONFIG_CPU_SUP_AMD=y 267 - CONFIG_CPU_SUP_CENTAUR_32=y 250 + CONFIG_CPU_SUP_CENTAUR=y 268 251 CONFIG_CPU_SUP_TRANSMETA_32=y 269 252 CONFIG_CPU_SUP_UMC_32=y 270 253 CONFIG_X86_DS=y ··· 296 279 CONFIG_MICROCODE_OLD_INTERFACE=y 297 280 CONFIG_X86_MSR=y 298 281 CONFIG_X86_CPUID=y 282 + # CONFIG_X86_CPU_DEBUG is not set 299 283 # CONFIG_NOHIGHMEM is not set 300 284 CONFIG_HIGHMEM4G=y 301 285 # CONFIG_HIGHMEM64G is not set ··· 320 302 CONFIG_BOUNCE=y 321 303 CONFIG_VIRT_TO_BUS=y 322 304 CONFIG_UNEVICTABLE_LRU=y 305 + CONFIG_HAVE_MLOCK=y 306 + CONFIG_HAVE_MLOCKED_PAGE_BIT=y 323 307 CONFIG_HIGHPTE=y 324 308 CONFIG_X86_CHECK_BIOS_CORRUPTION=y 325 309 CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y ··· 332 312 CONFIG_X86_PAT=y 333 313 CONFIG_EFI=y 334 314 CONFIG_SECCOMP=y 315 + # CONFIG_CC_STACKPROTECTOR is not set 335 316 # CONFIG_HZ_100 is not set 336 317 # CONFIG_HZ_250 is not set 337 318 # CONFIG_HZ_300 is not set ··· 343 322 CONFIG_CRASH_DUMP=y 344 323 # CONFIG_KEXEC_JUMP is not set 345 324 CONFIG_PHYSICAL_START=0x1000000 346 - # CONFIG_RELOCATABLE is not set 347 - CONFIG_PHYSICAL_ALIGN=0x200000 325 + CONFIG_RELOCATABLE=y 326 + CONFIG_X86_NEED_RELOCS=y 327 + CONFIG_PHYSICAL_ALIGN=0x1000000 348 328 CONFIG_HOTPLUG_CPU=y 349 329 # CONFIG_COMPAT_VDSO is not set 350 330 # CONFIG_CMDLINE_BOOL is not set ··· 385 363 CONFIG_ACPI_BLACKLIST_YEAR=0 386 364 # CONFIG_ACPI_DEBUG is not set 387 365 # CONFIG_ACPI_PCI_SLOT is not set 388 - CONFIG_ACPI_SYSTEM=y 389 366 CONFIG_X86_PM_TIMER=y 390 367 CONFIG_ACPI_CONTAINER=y 391 368 # CONFIG_ACPI_SBS is not set ··· 446 425 CONFIG_PCI_DIRECT=y 447 426 CONFIG_PCI_MMCONFIG=y 448 427 CONFIG_PCI_DOMAINS=y 428 + # CONFIG_DMAR is not set 449 429 CONFIG_PCIEPORTBUS=y 450 430 # CONFIG_HOTPLUG_PCI_PCIE is not set 451 431 CONFIG_PCIEAER=y ··· 457 435 # CONFIG_PCI_DEBUG is not set 458 436 # CONFIG_PCI_STUB is not set 459 437 CONFIG_HT_IRQ=y 438 + # CONFIG_PCI_IOV is not set 460 439 CONFIG_ISA_DMA_API=y 461 440 # CONFIG_ISA is not set 462 441 # CONFIG_MCA is not set ··· 504 481 # 505 482 # Networking options 506 483 # 507 - CONFIG_COMPAT_NET_DEV_OPS=y 508 484 CONFIG_PACKET=y 509 485 CONFIG_PACKET_MMAP=y 510 486 CONFIG_UNIX=y ··· 661 639 # CONFIG_LAPB is not set 662 640 # CONFIG_ECONET is not set 663 641 # CONFIG_WAN_ROUTER is not set 642 + # CONFIG_PHONET is not set 664 643 CONFIG_NET_SCHED=y 665 644 666 645 # ··· 719 696 # 720 697 # CONFIG_NET_PKTGEN is not set 721 698 # CONFIG_NET_TCPPROBE is not set 699 + # CONFIG_NET_DROP_MONITOR is not set 722 700 CONFIG_HAMRADIO=y 723 701 724 702 # ··· 730 706 # CONFIG_IRDA is not set 731 707 # CONFIG_BT is not set 732 708 # CONFIG_AF_RXRPC is not set 733 - # CONFIG_PHONET is not set 734 709 CONFIG_FIB_RULES=y 735 710 CONFIG_WIRELESS=y 736 711 CONFIG_CFG80211=y 737 712 # CONFIG_CFG80211_REG_DEBUG is not set 738 - CONFIG_NL80211=y 739 713 CONFIG_WIRELESS_OLD_REGULATORY=y 740 714 CONFIG_WIRELESS_EXT=y 741 715 CONFIG_WIRELESS_EXT_SYSFS=y ··· 811 789 # CONFIG_ICS932S401 is not set 812 790 # CONFIG_ENCLOSURE_SERVICES is not set 813 791 # CONFIG_HP_ILO is not set 792 + # CONFIG_ISL29003 is not set 814 793 # CONFIG_C2PORT is not set 815 794 816 795 # ··· 865 842 # CONFIG_SCSI_LOWLEVEL is not set 866 843 # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 867 844 # CONFIG_SCSI_DH is not set 845 + # CONFIG_SCSI_OSD_INITIATOR is not set 868 846 CONFIG_ATA=y 869 847 # CONFIG_ATA_NONSTANDARD is not set 870 848 CONFIG_ATA_ACPI=y ··· 964 940 CONFIG_MACINTOSH_DRIVERS=y 965 941 CONFIG_MAC_EMUMOUSEBTN=y 966 942 CONFIG_NETDEVICES=y 943 + CONFIG_COMPAT_NET_DEV_OPS=y 967 944 # CONFIG_IFB is not set 968 945 # CONFIG_DUMMY is not set 969 946 # CONFIG_BONDING is not set ··· 1002 977 CONFIG_NET_VENDOR_3COM=y 1003 978 # CONFIG_VORTEX is not set 1004 979 # CONFIG_TYPHOON is not set 980 + # CONFIG_ETHOC is not set 981 + # CONFIG_DNET is not set 1005 982 CONFIG_NET_TULIP=y 1006 983 # CONFIG_DE2104X is not set 1007 984 # CONFIG_TULIP is not set ··· 1053 1026 CONFIG_E1000E=y 1054 1027 # CONFIG_IP1000 is not set 1055 1028 # CONFIG_IGB is not set 1029 + # CONFIG_IGBVF is not set 1056 1030 # CONFIG_NS83820 is not set 1057 1031 # CONFIG_HAMACHI is not set 1058 1032 # CONFIG_YELLOWFIN is not set ··· 1068 1040 # CONFIG_QLA3XXX is not set 1069 1041 # CONFIG_ATL1 is not set 1070 1042 # CONFIG_ATL1E is not set 1043 + # CONFIG_ATL1C is not set 1071 1044 # CONFIG_JME is not set 1072 1045 CONFIG_NETDEV_10000=y 1073 1046 # CONFIG_CHELSIO_T1 is not set ··· 1078 1049 # CONFIG_IXGBE is not set 1079 1050 # CONFIG_IXGB is not set 1080 1051 # CONFIG_S2IO is not set 1052 + # CONFIG_VXGE is not set 1081 1053 # CONFIG_MYRI10GE is not set 1082 1054 # CONFIG_NETXEN_NIC is not set 1083 1055 # CONFIG_NIU is not set ··· 1088 1058 # CONFIG_BNX2X is not set 1089 1059 # CONFIG_QLGE is not set 1090 1060 # CONFIG_SFC is not set 1061 + # CONFIG_BE2NET is not set 1091 1062 CONFIG_TR=y 1092 1063 # CONFIG_IBMOL is not set 1093 1064 # CONFIG_IBMLS is not set ··· 1104 1073 # CONFIG_LIBERTAS is not set 1105 1074 # CONFIG_LIBERTAS_THINFIRM is not set 1106 1075 # CONFIG_AIRO is not set 1107 - # CONFIG_HERMES is not set 1108 1076 # CONFIG_ATMEL is not set 1077 + # CONFIG_AT76C50X_USB is not set 1109 1078 # CONFIG_AIRO_CS is not set 1110 1079 # CONFIG_PCMCIA_WL3501 is not set 1111 1080 # CONFIG_PRISM54 is not set ··· 1115 1084 # CONFIG_RTL8187 is not set 1116 1085 # CONFIG_ADM8211 is not set 1117 1086 # CONFIG_MAC80211_HWSIM is not set 1087 + # CONFIG_MWL8K is not set 1118 1088 # CONFIG_P54_COMMON is not set 1119 1089 CONFIG_ATH5K=y 1120 1090 # CONFIG_ATH5K_DEBUG is not set 1121 1091 # CONFIG_ATH9K is not set 1092 + # CONFIG_AR9170_USB is not set 1122 1093 # CONFIG_IPW2100 is not set 1123 1094 # CONFIG_IPW2200 is not set 1124 - # CONFIG_IWLCORE is not set 1125 - # CONFIG_IWLWIFI_LEDS is not set 1126 - # CONFIG_IWLAGN is not set 1127 - # CONFIG_IWL3945 is not set 1095 + # CONFIG_IWLWIFI is not set 1128 1096 # CONFIG_HOSTAP is not set 1129 1097 # CONFIG_B43 is not set 1130 1098 # CONFIG_B43LEGACY is not set 1131 1099 # CONFIG_ZD1211RW is not set 1132 1100 # CONFIG_RT2X00 is not set 1101 + # CONFIG_HERMES is not set 1133 1102 1134 1103 # 1135 1104 # Enable WiMAX (Networking options) to see the WiMAX drivers ··· 1240 1209 # CONFIG_TABLET_USB_KBTAB is not set 1241 1210 # CONFIG_TABLET_USB_WACOM is not set 1242 1211 CONFIG_INPUT_TOUCHSCREEN=y 1212 + # CONFIG_TOUCHSCREEN_AD7879_I2C is not set 1213 + # CONFIG_TOUCHSCREEN_AD7879 is not set 1243 1214 # CONFIG_TOUCHSCREEN_FUJITSU is not set 1244 1215 # CONFIG_TOUCHSCREEN_GUNZE is not set 1245 1216 # CONFIG_TOUCHSCREEN_ELO is not set ··· 1336 1303 # CONFIG_LEGACY_PTYS is not set 1337 1304 # CONFIG_IPMI_HANDLER is not set 1338 1305 CONFIG_HW_RANDOM=y 1306 + # CONFIG_HW_RANDOM_TIMERIOMEM is not set 1339 1307 CONFIG_HW_RANDOM_INTEL=y 1340 1308 CONFIG_HW_RANDOM_AMD=y 1341 1309 CONFIG_HW_RANDOM_GEODE=y ··· 1424 1390 # CONFIG_SENSORS_PCF8574 is not set 1425 1391 # CONFIG_PCF8575 is not set 1426 1392 # CONFIG_SENSORS_PCA9539 is not set 1427 - # CONFIG_SENSORS_PCF8591 is not set 1428 1393 # CONFIG_SENSORS_MAX6875 is not set 1429 1394 # CONFIG_SENSORS_TSL2550 is not set 1430 1395 # CONFIG_I2C_DEBUG_CORE is not set ··· 1457 1424 # CONFIG_SENSORS_ADT7475 is not set 1458 1425 # CONFIG_SENSORS_K8TEMP is not set 1459 1426 # CONFIG_SENSORS_ASB100 is not set 1427 + # CONFIG_SENSORS_ATK0110 is not set 1460 1428 # CONFIG_SENSORS_ATXP1 is not set 1461 1429 # CONFIG_SENSORS_DS1621 is not set 1462 1430 # CONFIG_SENSORS_I5K_AMB is not set ··· 1467 1433 # CONFIG_SENSORS_FSCHER is not set 1468 1434 # CONFIG_SENSORS_FSCPOS is not set 1469 1435 # CONFIG_SENSORS_FSCHMD is not set 1436 + # CONFIG_SENSORS_G760A is not set 1470 1437 # CONFIG_SENSORS_GL518SM is not set 1471 1438 # CONFIG_SENSORS_GL520SM is not set 1472 1439 # CONFIG_SENSORS_CORETEMP is not set ··· 1483 1448 # CONFIG_SENSORS_LM90 is not set 1484 1449 # CONFIG_SENSORS_LM92 is not set 1485 1450 # CONFIG_SENSORS_LM93 is not set 1451 + # CONFIG_SENSORS_LTC4215 is not set 1486 1452 # CONFIG_SENSORS_LTC4245 is not set 1453 + # CONFIG_SENSORS_LM95241 is not set 1487 1454 # CONFIG_SENSORS_MAX1619 is not set 1488 1455 # CONFIG_SENSORS_MAX6650 is not set 1489 1456 # CONFIG_SENSORS_PC87360 is not set 1490 1457 # CONFIG_SENSORS_PC87427 is not set 1458 + # CONFIG_SENSORS_PCF8591 is not set 1491 1459 # CONFIG_SENSORS_SIS5595 is not set 1492 1460 # CONFIG_SENSORS_DME1737 is not set 1493 1461 # CONFIG_SENSORS_SMSC47M1 is not set ··· 1681 1643 # CONFIG_FB_3DFX is not set 1682 1644 # CONFIG_FB_VOODOO1 is not set 1683 1645 # CONFIG_FB_VT8623 is not set 1684 - # CONFIG_FB_CYBLA is not set 1685 1646 # CONFIG_FB_TRIDENT is not set 1686 1647 # CONFIG_FB_ARK is not set 1687 1648 # CONFIG_FB_PM3 is not set ··· 1689 1652 # CONFIG_FB_VIRTUAL is not set 1690 1653 # CONFIG_FB_METRONOME is not set 1691 1654 # CONFIG_FB_MB862XX is not set 1655 + # CONFIG_FB_BROADSHEET is not set 1692 1656 CONFIG_BACKLIGHT_LCD_SUPPORT=y 1693 1657 # CONFIG_LCD_CLASS_DEVICE is not set 1694 1658 CONFIG_BACKLIGHT_CLASS_DEVICE=y ··· 1776 1738 # CONFIG_SND_INDIGO is not set 1777 1739 # CONFIG_SND_INDIGOIO is not set 1778 1740 # CONFIG_SND_INDIGODJ is not set 1741 + # CONFIG_SND_INDIGOIOX is not set 1742 + # CONFIG_SND_INDIGODJX is not set 1779 1743 # CONFIG_SND_EMU10K1 is not set 1780 1744 # CONFIG_SND_EMU10K1X is not set 1781 1745 # CONFIG_SND_ENS1370 is not set ··· 1851 1811 # 1852 1812 # Special HID drivers 1853 1813 # 1854 - CONFIG_HID_COMPAT=y 1855 1814 CONFIG_HID_A4TECH=y 1856 1815 CONFIG_HID_APPLE=y 1857 1816 CONFIG_HID_BELKIN=y 1858 1817 CONFIG_HID_CHERRY=y 1859 1818 CONFIG_HID_CHICONY=y 1860 1819 CONFIG_HID_CYPRESS=y 1820 + # CONFIG_DRAGONRISE_FF is not set 1861 1821 CONFIG_HID_EZKEY=y 1822 + CONFIG_HID_KYE=y 1862 1823 CONFIG_HID_GYRATION=y 1824 + CONFIG_HID_KENSINGTON=y 1863 1825 CONFIG_HID_LOGITECH=y 1864 1826 CONFIG_LOGITECH_FF=y 1865 1827 # CONFIG_LOGIRUMBLEPAD2_FF is not set ··· 1927 1885 # CONFIG_USB_TMC is not set 1928 1886 1929 1887 # 1930 - # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1888 + # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may 1931 1889 # 1932 1890 1933 1891 # 1934 - # see USB_STORAGE Help for more information 1892 + # also be needed; see USB_STORAGE Help for more info 1935 1893 # 1936 1894 CONFIG_USB_STORAGE=y 1937 1895 # CONFIG_USB_STORAGE_DEBUG is not set ··· 1973 1931 # CONFIG_USB_LED is not set 1974 1932 # CONFIG_USB_CYPRESS_CY7C63 is not set 1975 1933 # CONFIG_USB_CYTHERM is not set 1976 - # CONFIG_USB_PHIDGET is not set 1977 1934 # CONFIG_USB_IDMOUSE is not set 1978 1935 # CONFIG_USB_FTDI_ELAN is not set 1979 1936 # CONFIG_USB_APPLEDISPLAY is not set ··· 1988 1947 # 1989 1948 # OTG and related infrastructure 1990 1949 # 1950 + # CONFIG_NOP_USB_XCEIV is not set 1991 1951 # CONFIG_UWB is not set 1992 1952 # CONFIG_MMC is not set 1993 1953 # CONFIG_MEMSTICK is not set ··· 2000 1958 # 2001 1959 # CONFIG_LEDS_ALIX2 is not set 2002 1960 # CONFIG_LEDS_PCA9532 is not set 1961 + # CONFIG_LEDS_LP5521 is not set 2003 1962 # CONFIG_LEDS_CLEVO_MAIL is not set 2004 1963 # CONFIG_LEDS_PCA955X is not set 1964 + # CONFIG_LEDS_BD2802 is not set 2005 1965 2006 1966 # 2007 1967 # LED Triggers ··· 2013 1969 # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set 2014 1970 # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set 2015 1971 # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set 1972 + 1973 + # 1974 + # iptables trigger is under Netfilter config (LED target) 1975 + # 2016 1976 # CONFIG_ACCESSIBILITY is not set 2017 1977 # CONFIG_INFINIBAND is not set 2018 1978 CONFIG_EDAC=y ··· 2085 2037 # DMA Devices 2086 2038 # 2087 2039 # CONFIG_INTEL_IOATDMA is not set 2040 + # CONFIG_AUXDISPLAY is not set 2088 2041 # CONFIG_UIO is not set 2089 2042 # CONFIG_STAGING is not set 2090 2043 CONFIG_X86_PLATFORM_DEVICES=y ··· 2120 2071 # 2121 2072 # CONFIG_EXT2_FS is not set 2122 2073 CONFIG_EXT3_FS=y 2074 + # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 2123 2075 CONFIG_EXT3_FS_XATTR=y 2124 2076 CONFIG_EXT3_FS_POSIX_ACL=y 2125 2077 CONFIG_EXT3_FS_SECURITY=y ··· 2149 2099 CONFIG_AUTOFS4_FS=y 2150 2100 # CONFIG_FUSE_FS is not set 2151 2101 CONFIG_GENERIC_ACL=y 2102 + 2103 + # 2104 + # Caches 2105 + # 2106 + # CONFIG_FSCACHE is not set 2152 2107 2153 2108 # 2154 2109 # CD-ROM/DVD Filesystems ··· 2206 2151 # CONFIG_ROMFS_FS is not set 2207 2152 # CONFIG_SYSV_FS is not set 2208 2153 # CONFIG_UFS_FS is not set 2154 + # CONFIG_NILFS2_FS is not set 2209 2155 CONFIG_NETWORK_FILESYSTEMS=y 2210 2156 CONFIG_NFS_FS=y 2211 2157 CONFIG_NFS_V3=y ··· 2220 2164 CONFIG_NFS_COMMON=y 2221 2165 CONFIG_SUNRPC=y 2222 2166 CONFIG_SUNRPC_GSS=y 2223 - # CONFIG_SUNRPC_REGISTER_V4 is not set 2224 2167 CONFIG_RPCSEC_GSS_KRB5=y 2225 2168 # CONFIG_RPCSEC_GSS_SPKM3 is not set 2226 2169 # CONFIG_SMB_FS is not set ··· 2306 2251 CONFIG_DEBUG_KERNEL=y 2307 2252 # CONFIG_DEBUG_SHIRQ is not set 2308 2253 # CONFIG_DETECT_SOFTLOCKUP is not set 2254 + # CONFIG_DETECT_HUNG_TASK is not set 2309 2255 # CONFIG_SCHED_DEBUG is not set 2310 2256 CONFIG_SCHEDSTATS=y 2311 2257 CONFIG_TIMER_STATS=y ··· 2322 2266 # CONFIG_LOCK_STAT is not set 2323 2267 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set 2324 2268 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 2269 + CONFIG_STACKTRACE=y 2325 2270 # CONFIG_DEBUG_KOBJECT is not set 2326 2271 # CONFIG_DEBUG_HIGHMEM is not set 2327 2272 CONFIG_DEBUG_BUGVERBOSE=y ··· 2346 2289 # CONFIG_FAULT_INJECTION is not set 2347 2290 # CONFIG_LATENCYTOP is not set 2348 2291 CONFIG_SYSCTL_SYSCALL_CHECK=y 2292 + # CONFIG_DEBUG_PAGEALLOC is not set 2349 2293 CONFIG_USER_STACKTRACE_SUPPORT=y 2294 + CONFIG_NOP_TRACER=y 2350 2295 CONFIG_HAVE_FUNCTION_TRACER=y 2351 2296 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 2352 2297 CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 2353 2298 CONFIG_HAVE_DYNAMIC_FTRACE=y 2354 2299 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 2355 2300 CONFIG_HAVE_HW_BRANCH_TRACER=y 2301 + CONFIG_HAVE_FTRACE_SYSCALLS=y 2302 + CONFIG_RING_BUFFER=y 2303 + CONFIG_TRACING=y 2304 + CONFIG_TRACING_SUPPORT=y 2356 2305 2357 2306 # 2358 2307 # Tracers ··· 2368 2305 # CONFIG_SYSPROF_TRACER is not set 2369 2306 # CONFIG_SCHED_TRACER is not set 2370 2307 # CONFIG_CONTEXT_SWITCH_TRACER is not set 2308 + # CONFIG_EVENT_TRACER is not set 2309 + # CONFIG_FTRACE_SYSCALLS is not set 2371 2310 # CONFIG_BOOT_TRACER is not set 2372 2311 # CONFIG_TRACE_BRANCH_PROFILING is not set 2373 2312 # CONFIG_POWER_TRACER is not set 2374 2313 # CONFIG_STACK_TRACER is not set 2375 2314 # CONFIG_HW_BRANCH_TRACER is not set 2315 + # CONFIG_KMEMTRACE is not set 2316 + # CONFIG_WORKQUEUE_TRACER is not set 2317 + CONFIG_BLK_DEV_IO_TRACE=y 2318 + # CONFIG_FTRACE_STARTUP_TEST is not set 2319 + # CONFIG_MMIOTRACE is not set 2376 2320 CONFIG_PROVIDE_OHCI1394_DMA_INIT=y 2377 - # CONFIG_DYNAMIC_PRINTK_DEBUG is not set 2321 + # CONFIG_DYNAMIC_DEBUG is not set 2322 + # CONFIG_DMA_API_DEBUG is not set 2378 2323 # CONFIG_SAMPLES is not set 2379 2324 CONFIG_HAVE_ARCH_KGDB=y 2380 2325 # CONFIG_KGDB is not set ··· 2392 2321 CONFIG_EARLY_PRINTK_DBGP=y 2393 2322 CONFIG_DEBUG_STACKOVERFLOW=y 2394 2323 CONFIG_DEBUG_STACK_USAGE=y 2395 - # CONFIG_DEBUG_PAGEALLOC is not set 2396 2324 # CONFIG_DEBUG_PER_CPU_MAPS is not set 2397 2325 # CONFIG_X86_PTDUMP is not set 2398 2326 CONFIG_DEBUG_RODATA=y ··· 2399 2329 CONFIG_DEBUG_NX_TEST=m 2400 2330 # CONFIG_4KSTACKS is not set 2401 2331 CONFIG_DOUBLEFAULT=y 2402 - # CONFIG_MMIOTRACE is not set 2332 + CONFIG_HAVE_MMIOTRACE_SUPPORT=y 2403 2333 CONFIG_IO_DELAY_TYPE_0X80=0 2404 2334 CONFIG_IO_DELAY_TYPE_0XED=1 2405 2335 CONFIG_IO_DELAY_TYPE_UDELAY=2 ··· 2435 2365 CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 2436 2366 # CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set 2437 2367 # CONFIG_SECURITY_SMACK is not set 2368 + # CONFIG_SECURITY_TOMOYO is not set 2369 + # CONFIG_IMA is not set 2438 2370 CONFIG_CRYPTO=y 2439 2371 2440 2372 # ··· 2452 2380 CONFIG_CRYPTO_HASH=y 2453 2381 CONFIG_CRYPTO_HASH2=y 2454 2382 CONFIG_CRYPTO_RNG2=y 2383 + CONFIG_CRYPTO_PCOMP=y 2455 2384 CONFIG_CRYPTO_MANAGER=y 2456 2385 CONFIG_CRYPTO_MANAGER2=y 2457 2386 # CONFIG_CRYPTO_GF128MUL is not set 2458 2387 # CONFIG_CRYPTO_NULL is not set 2388 + CONFIG_CRYPTO_WORKQUEUE=y 2459 2389 # CONFIG_CRYPTO_CRYPTD is not set 2460 2390 CONFIG_CRYPTO_AUTHENC=y 2461 2391 # CONFIG_CRYPTO_TEST is not set ··· 2530 2456 # Compression 2531 2457 # 2532 2458 # CONFIG_CRYPTO_DEFLATE is not set 2459 + # CONFIG_CRYPTO_ZLIB is not set 2533 2460 # CONFIG_CRYPTO_LZO is not set 2534 2461 2535 2462 # ··· 2542 2467 # CONFIG_CRYPTO_DEV_GEODE is not set 2543 2468 # CONFIG_CRYPTO_DEV_HIFN_795X is not set 2544 2469 CONFIG_HAVE_KVM=y 2470 + CONFIG_HAVE_KVM_IRQCHIP=y 2545 2471 CONFIG_VIRTUALIZATION=y 2546 2472 # CONFIG_KVM is not set 2547 2473 # CONFIG_LGUEST is not set 2548 2474 # CONFIG_VIRTIO_PCI is not set 2549 2475 # CONFIG_VIRTIO_BALLOON is not set 2476 + CONFIG_BINARY_PRINTF=y 2550 2477 2551 2478 # 2552 2479 # Library routines ··· 2566 2489 # CONFIG_LIBCRC32C is not set 2567 2490 CONFIG_AUDIT_GENERIC=y 2568 2491 CONFIG_ZLIB_INFLATE=y 2569 - CONFIG_PLIST=y 2492 + CONFIG_DECOMPRESS_GZIP=y 2493 + CONFIG_DECOMPRESS_BZIP2=y 2494 + CONFIG_DECOMPRESS_LZMA=y 2570 2495 CONFIG_HAS_IOMEM=y 2571 2496 CONFIG_HAS_IOPORT=y 2572 2497 CONFIG_HAS_DMA=y 2498 + CONFIG_NLATTR=y
+113 -37
arch/x86/configs/x86_64_defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.29-rc4 4 - # Tue Feb 24 15:44:16 2009 3 + # Linux kernel version: 2.6.30-rc2 4 + # Mon May 11 16:22:00 2009 5 5 # 6 6 CONFIG_64BIT=y 7 7 # CONFIG_X86_32 is not set 8 8 CONFIG_X86_64=y 9 9 CONFIG_X86=y 10 + CONFIG_OUTPUT_FORMAT="elf64-x86-64" 10 11 CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" 11 12 CONFIG_GENERIC_TIME=y 12 13 CONFIG_GENERIC_CMOS_UPDATE=y ··· 35 34 CONFIG_ARCH_HAS_DEFAULT_IDLE=y 36 35 CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y 37 36 CONFIG_HAVE_SETUP_PER_CPU_AREA=y 37 + CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y 38 38 CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y 39 39 CONFIG_ARCH_HIBERNATION_POSSIBLE=y 40 40 CONFIG_ARCH_SUSPEND_POSSIBLE=y ··· 43 41 CONFIG_ARCH_POPULATES_NODE_MAP=y 44 42 CONFIG_AUDIT_ARCH=y 45 43 CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y 44 + CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y 46 45 CONFIG_GENERIC_HARDIRQS=y 46 + CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y 47 47 CONFIG_GENERIC_IRQ_PROBE=y 48 48 CONFIG_GENERIC_PENDING_IRQ=y 49 - CONFIG_X86_SMP=y 50 49 CONFIG_USE_GENERIC_SMP_HELPERS=y 51 50 CONFIG_X86_64_SMP=y 52 51 CONFIG_X86_HT=y 53 - CONFIG_X86_BIOS_REBOOT=y 54 52 CONFIG_X86_TRAMPOLINE=y 55 53 # CONFIG_KTIME_SCALAR is not set 56 54 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" ··· 63 61 CONFIG_INIT_ENV_ARG_LIMIT=32 64 62 CONFIG_LOCALVERSION="" 65 63 # CONFIG_LOCALVERSION_AUTO is not set 64 + CONFIG_HAVE_KERNEL_GZIP=y 65 + CONFIG_HAVE_KERNEL_BZIP2=y 66 + CONFIG_HAVE_KERNEL_LZMA=y 67 + CONFIG_KERNEL_GZIP=y 68 + # CONFIG_KERNEL_BZIP2 is not set 69 + # CONFIG_KERNEL_LZMA is not set 66 70 CONFIG_SWAP=y 67 71 CONFIG_SYSVIPC=y 68 72 CONFIG_SYSVIPC_SYSCTL=y 69 73 CONFIG_POSIX_MQUEUE=y 74 + CONFIG_POSIX_MQUEUE_SYSCTL=y 70 75 CONFIG_BSD_PROCESS_ACCT=y 71 76 # CONFIG_BSD_PROCESS_ACCT_V3 is not set 72 77 CONFIG_TASKSTATS=y ··· 123 114 CONFIG_NET_NS=y 124 115 CONFIG_BLK_DEV_INITRD=y 125 116 CONFIG_INITRAMFS_SOURCE="" 117 + CONFIG_RD_GZIP=y 118 + CONFIG_RD_BZIP2=y 119 + CONFIG_RD_LZMA=y 126 120 CONFIG_CC_OPTIMIZE_FOR_SIZE=y 127 121 CONFIG_SYSCTL=y 122 + CONFIG_ANON_INODES=y 128 123 # CONFIG_EMBEDDED is not set 129 124 CONFIG_UID16=y 130 125 CONFIG_SYSCTL_SYSCALL=y 131 126 CONFIG_KALLSYMS=y 132 127 CONFIG_KALLSYMS_ALL=y 133 128 CONFIG_KALLSYMS_EXTRA_PASS=y 129 + # CONFIG_STRIP_ASM_SYMS is not set 134 130 CONFIG_HOTPLUG=y 135 131 CONFIG_PRINTK=y 136 132 CONFIG_BUG=y 137 133 CONFIG_ELF_CORE=y 138 134 CONFIG_PCSPKR_PLATFORM=y 139 - # CONFIG_COMPAT_BRK is not set 140 135 CONFIG_BASE_FULL=y 141 136 CONFIG_FUTEX=y 142 - CONFIG_ANON_INODES=y 143 137 CONFIG_EPOLL=y 144 138 CONFIG_SIGNALFD=y 145 139 CONFIG_TIMERFD=y ··· 152 140 CONFIG_VM_EVENT_COUNTERS=y 153 141 CONFIG_PCI_QUIRKS=y 154 142 CONFIG_SLUB_DEBUG=y 143 + # CONFIG_COMPAT_BRK is not set 155 144 # CONFIG_SLAB is not set 156 145 CONFIG_SLUB=y 157 146 # CONFIG_SLOB is not set ··· 168 155 CONFIG_HAVE_KPROBES=y 169 156 CONFIG_HAVE_KRETPROBES=y 170 157 CONFIG_HAVE_ARCH_TRACEHOOK=y 158 + CONFIG_HAVE_DMA_API_DEBUG=y 159 + # CONFIG_SLOW_WORK is not set 171 160 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 172 161 CONFIG_SLABINFO=y 173 162 CONFIG_RT_MUTEXES=y ··· 182 167 # CONFIG_MODULE_SRCVERSION_ALL is not set 183 168 CONFIG_STOP_MACHINE=y 184 169 CONFIG_BLOCK=y 185 - CONFIG_BLK_DEV_IO_TRACE=y 186 170 CONFIG_BLK_DEV_BSG=y 187 171 # CONFIG_BLK_DEV_INTEGRITY is not set 188 172 CONFIG_BLOCK_COMPAT=y ··· 209 195 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y 210 196 CONFIG_SMP=y 211 197 CONFIG_SPARSE_IRQ=y 212 - CONFIG_X86_FIND_SMP_CONFIG=y 213 198 CONFIG_X86_MPPARSE=y 214 - # CONFIG_X86_ELAN is not set 215 - # CONFIG_X86_GENERICARCH is not set 199 + CONFIG_X86_EXTENDED_PLATFORM=y 216 200 # CONFIG_X86_VSMP is not set 201 + # CONFIG_X86_UV is not set 217 202 CONFIG_SCHED_OMIT_FRAME_POINTER=y 218 203 # CONFIG_PARAVIRT_GUEST is not set 219 204 # CONFIG_MEMTEST is not set ··· 242 229 # CONFIG_MCORE2 is not set 243 230 CONFIG_GENERIC_CPU=y 244 231 CONFIG_X86_CPU=y 245 - CONFIG_X86_L1_CACHE_BYTES=128 246 - CONFIG_X86_INTERNODE_CACHE_BYTES=128 232 + CONFIG_X86_L1_CACHE_BYTES=64 233 + CONFIG_X86_INTERNODE_CACHE_BYTES=64 247 234 CONFIG_X86_CMPXCHG=y 248 - CONFIG_X86_L1_CACHE_SHIFT=7 235 + CONFIG_X86_L1_CACHE_SHIFT=6 249 236 CONFIG_X86_WP_WORKS_OK=y 250 237 CONFIG_X86_TSC=y 251 238 CONFIG_X86_CMPXCHG64=y ··· 254 241 CONFIG_X86_DEBUGCTLMSR=y 255 242 CONFIG_CPU_SUP_INTEL=y 256 243 CONFIG_CPU_SUP_AMD=y 257 - CONFIG_CPU_SUP_CENTAUR_64=y 244 + CONFIG_CPU_SUP_CENTAUR=y 258 245 CONFIG_X86_DS=y 259 246 CONFIG_X86_PTRACE_BTS=y 260 247 CONFIG_HPET_TIMER=y ··· 281 268 CONFIG_X86_MCE=y 282 269 CONFIG_X86_MCE_INTEL=y 283 270 CONFIG_X86_MCE_AMD=y 271 + CONFIG_X86_MCE_THRESHOLD=y 284 272 # CONFIG_I8K is not set 285 273 CONFIG_MICROCODE=y 286 274 CONFIG_MICROCODE_INTEL=y ··· 289 275 CONFIG_MICROCODE_OLD_INTERFACE=y 290 276 CONFIG_X86_MSR=y 291 277 CONFIG_X86_CPUID=y 278 + # CONFIG_X86_CPU_DEBUG is not set 292 279 CONFIG_ARCH_PHYS_ADDR_T_64BIT=y 293 280 CONFIG_DIRECT_GBPAGES=y 294 281 CONFIG_NUMA=y ··· 323 308 CONFIG_BOUNCE=y 324 309 CONFIG_VIRT_TO_BUS=y 325 310 CONFIG_UNEVICTABLE_LRU=y 311 + CONFIG_HAVE_MLOCK=y 312 + CONFIG_HAVE_MLOCKED_PAGE_BIT=y 326 313 CONFIG_X86_CHECK_BIOS_CORRUPTION=y 327 314 CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y 328 315 CONFIG_X86_RESERVE_LOW_64K=y ··· 333 316 CONFIG_X86_PAT=y 334 317 CONFIG_EFI=y 335 318 CONFIG_SECCOMP=y 319 + # CONFIG_CC_STACKPROTECTOR is not set 336 320 # CONFIG_HZ_100 is not set 337 321 # CONFIG_HZ_250 is not set 338 322 # CONFIG_HZ_300 is not set ··· 342 324 CONFIG_SCHED_HRTICK=y 343 325 CONFIG_KEXEC=y 344 326 CONFIG_CRASH_DUMP=y 327 + # CONFIG_KEXEC_JUMP is not set 345 328 CONFIG_PHYSICAL_START=0x1000000 346 - # CONFIG_RELOCATABLE is not set 347 - CONFIG_PHYSICAL_ALIGN=0x200000 329 + CONFIG_RELOCATABLE=y 330 + CONFIG_PHYSICAL_ALIGN=0x1000000 348 331 CONFIG_HOTPLUG_CPU=y 349 332 # CONFIG_COMPAT_VDSO is not set 350 333 # CONFIG_CMDLINE_BOOL is not set ··· 388 369 CONFIG_ACPI_BLACKLIST_YEAR=0 389 370 # CONFIG_ACPI_DEBUG is not set 390 371 # CONFIG_ACPI_PCI_SLOT is not set 391 - CONFIG_ACPI_SYSTEM=y 392 372 CONFIG_X86_PM_TIMER=y 393 373 CONFIG_ACPI_CONTAINER=y 394 374 # CONFIG_ACPI_SBS is not set ··· 453 435 # CONFIG_PCI_DEBUG is not set 454 436 # CONFIG_PCI_STUB is not set 455 437 CONFIG_HT_IRQ=y 438 + # CONFIG_PCI_IOV is not set 456 439 CONFIG_ISA_DMA_API=y 457 440 CONFIG_K8_NB=y 458 441 CONFIG_PCCARD=y ··· 499 480 # 500 481 # Networking options 501 482 # 502 - CONFIG_COMPAT_NET_DEV_OPS=y 503 483 CONFIG_PACKET=y 504 484 CONFIG_PACKET_MMAP=y 505 485 CONFIG_UNIX=y ··· 656 638 # CONFIG_LAPB is not set 657 639 # CONFIG_ECONET is not set 658 640 # CONFIG_WAN_ROUTER is not set 641 + # CONFIG_PHONET is not set 659 642 CONFIG_NET_SCHED=y 660 643 661 644 # ··· 714 695 # 715 696 # CONFIG_NET_PKTGEN is not set 716 697 # CONFIG_NET_TCPPROBE is not set 698 + # CONFIG_NET_DROP_MONITOR is not set 717 699 CONFIG_HAMRADIO=y 718 700 719 701 # ··· 725 705 # CONFIG_IRDA is not set 726 706 # CONFIG_BT is not set 727 707 # CONFIG_AF_RXRPC is not set 728 - # CONFIG_PHONET is not set 729 708 CONFIG_FIB_RULES=y 730 709 CONFIG_WIRELESS=y 731 710 CONFIG_CFG80211=y 732 711 # CONFIG_CFG80211_REG_DEBUG is not set 733 - CONFIG_NL80211=y 734 712 CONFIG_WIRELESS_OLD_REGULATORY=y 735 713 CONFIG_WIRELESS_EXT=y 736 714 CONFIG_WIRELESS_EXT_SYSFS=y ··· 805 787 # CONFIG_TIFM_CORE is not set 806 788 # CONFIG_ICS932S401 is not set 807 789 # CONFIG_ENCLOSURE_SERVICES is not set 808 - # CONFIG_SGI_XP is not set 809 790 # CONFIG_HP_ILO is not set 810 - # CONFIG_SGI_GRU is not set 791 + # CONFIG_ISL29003 is not set 811 792 # CONFIG_C2PORT is not set 812 793 813 794 # ··· 860 843 # CONFIG_SCSI_LOWLEVEL is not set 861 844 # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set 862 845 # CONFIG_SCSI_DH is not set 846 + # CONFIG_SCSI_OSD_INITIATOR is not set 863 847 CONFIG_ATA=y 864 848 # CONFIG_ATA_NONSTANDARD is not set 865 849 CONFIG_ATA_ACPI=y ··· 957 939 CONFIG_MACINTOSH_DRIVERS=y 958 940 CONFIG_MAC_EMUMOUSEBTN=y 959 941 CONFIG_NETDEVICES=y 942 + CONFIG_COMPAT_NET_DEV_OPS=y 960 943 # CONFIG_IFB is not set 961 944 # CONFIG_DUMMY is not set 962 945 # CONFIG_BONDING is not set ··· 995 976 CONFIG_NET_VENDOR_3COM=y 996 977 # CONFIG_VORTEX is not set 997 978 # CONFIG_TYPHOON is not set 979 + # CONFIG_ETHOC is not set 980 + # CONFIG_DNET is not set 998 981 CONFIG_NET_TULIP=y 999 982 # CONFIG_DE2104X is not set 1000 983 # CONFIG_TULIP is not set ··· 1046 1025 # CONFIG_E1000E is not set 1047 1026 # CONFIG_IP1000 is not set 1048 1027 # CONFIG_IGB is not set 1028 + # CONFIG_IGBVF is not set 1049 1029 # CONFIG_NS83820 is not set 1050 1030 # CONFIG_HAMACHI is not set 1051 1031 # CONFIG_YELLOWFIN is not set ··· 1061 1039 # CONFIG_QLA3XXX is not set 1062 1040 # CONFIG_ATL1 is not set 1063 1041 # CONFIG_ATL1E is not set 1042 + # CONFIG_ATL1C is not set 1064 1043 # CONFIG_JME is not set 1065 1044 CONFIG_NETDEV_10000=y 1066 1045 # CONFIG_CHELSIO_T1 is not set ··· 1071 1048 # CONFIG_IXGBE is not set 1072 1049 # CONFIG_IXGB is not set 1073 1050 # CONFIG_S2IO is not set 1051 + # CONFIG_VXGE is not set 1074 1052 # CONFIG_MYRI10GE is not set 1075 1053 # CONFIG_NETXEN_NIC is not set 1076 1054 # CONFIG_NIU is not set ··· 1081 1057 # CONFIG_BNX2X is not set 1082 1058 # CONFIG_QLGE is not set 1083 1059 # CONFIG_SFC is not set 1060 + # CONFIG_BE2NET is not set 1084 1061 CONFIG_TR=y 1085 1062 # CONFIG_IBMOL is not set 1086 1063 # CONFIG_3C359 is not set ··· 1096 1071 # CONFIG_LIBERTAS is not set 1097 1072 # CONFIG_LIBERTAS_THINFIRM is not set 1098 1073 # CONFIG_AIRO is not set 1099 - # CONFIG_HERMES is not set 1100 1074 # CONFIG_ATMEL is not set 1075 + # CONFIG_AT76C50X_USB is not set 1101 1076 # CONFIG_AIRO_CS is not set 1102 1077 # CONFIG_PCMCIA_WL3501 is not set 1103 1078 # CONFIG_PRISM54 is not set ··· 1107 1082 # CONFIG_RTL8187 is not set 1108 1083 # CONFIG_ADM8211 is not set 1109 1084 # CONFIG_MAC80211_HWSIM is not set 1085 + # CONFIG_MWL8K is not set 1110 1086 # CONFIG_P54_COMMON is not set 1111 1087 CONFIG_ATH5K=y 1112 1088 # CONFIG_ATH5K_DEBUG is not set 1113 1089 # CONFIG_ATH9K is not set 1090 + # CONFIG_AR9170_USB is not set 1114 1091 # CONFIG_IPW2100 is not set 1115 1092 # CONFIG_IPW2200 is not set 1116 - # CONFIG_IWLCORE is not set 1117 - # CONFIG_IWLWIFI_LEDS is not set 1118 - # CONFIG_IWLAGN is not set 1119 - # CONFIG_IWL3945 is not set 1093 + # CONFIG_IWLWIFI is not set 1120 1094 # CONFIG_HOSTAP is not set 1121 1095 # CONFIG_B43 is not set 1122 1096 # CONFIG_B43LEGACY is not set 1123 1097 # CONFIG_ZD1211RW is not set 1124 1098 # CONFIG_RT2X00 is not set 1099 + # CONFIG_HERMES is not set 1125 1100 1126 1101 # 1127 1102 # Enable WiMAX (Networking options) to see the WiMAX drivers ··· 1232 1207 # CONFIG_TABLET_USB_KBTAB is not set 1233 1208 # CONFIG_TABLET_USB_WACOM is not set 1234 1209 CONFIG_INPUT_TOUCHSCREEN=y 1210 + # CONFIG_TOUCHSCREEN_AD7879_I2C is not set 1211 + # CONFIG_TOUCHSCREEN_AD7879 is not set 1235 1212 # CONFIG_TOUCHSCREEN_FUJITSU is not set 1236 1213 # CONFIG_TOUCHSCREEN_GUNZE is not set 1237 1214 # CONFIG_TOUCHSCREEN_ELO is not set ··· 1327 1300 # CONFIG_LEGACY_PTYS is not set 1328 1301 # CONFIG_IPMI_HANDLER is not set 1329 1302 CONFIG_HW_RANDOM=y 1303 + # CONFIG_HW_RANDOM_TIMERIOMEM is not set 1330 1304 # CONFIG_HW_RANDOM_INTEL is not set 1331 1305 # CONFIG_HW_RANDOM_AMD is not set 1332 1306 CONFIG_NVRAM=y ··· 1409 1381 # CONFIG_SENSORS_PCF8574 is not set 1410 1382 # CONFIG_PCF8575 is not set 1411 1383 # CONFIG_SENSORS_PCA9539 is not set 1412 - # CONFIG_SENSORS_PCF8591 is not set 1413 1384 # CONFIG_SENSORS_MAX6875 is not set 1414 1385 # CONFIG_SENSORS_TSL2550 is not set 1415 1386 # CONFIG_I2C_DEBUG_CORE is not set ··· 1442 1415 # CONFIG_SENSORS_ADT7475 is not set 1443 1416 # CONFIG_SENSORS_K8TEMP is not set 1444 1417 # CONFIG_SENSORS_ASB100 is not set 1418 + # CONFIG_SENSORS_ATK0110 is not set 1445 1419 # CONFIG_SENSORS_ATXP1 is not set 1446 1420 # CONFIG_SENSORS_DS1621 is not set 1447 1421 # CONFIG_SENSORS_I5K_AMB is not set ··· 1452 1424 # CONFIG_SENSORS_FSCHER is not set 1453 1425 # CONFIG_SENSORS_FSCPOS is not set 1454 1426 # CONFIG_SENSORS_FSCHMD is not set 1427 + # CONFIG_SENSORS_G760A is not set 1455 1428 # CONFIG_SENSORS_GL518SM is not set 1456 1429 # CONFIG_SENSORS_GL520SM is not set 1457 1430 # CONFIG_SENSORS_CORETEMP is not set ··· 1468 1439 # CONFIG_SENSORS_LM90 is not set 1469 1440 # CONFIG_SENSORS_LM92 is not set 1470 1441 # CONFIG_SENSORS_LM93 is not set 1442 + # CONFIG_SENSORS_LTC4215 is not set 1471 1443 # CONFIG_SENSORS_LTC4245 is not set 1444 + # CONFIG_SENSORS_LM95241 is not set 1472 1445 # CONFIG_SENSORS_MAX1619 is not set 1473 1446 # CONFIG_SENSORS_MAX6650 is not set 1474 1447 # CONFIG_SENSORS_PC87360 is not set 1475 1448 # CONFIG_SENSORS_PC87427 is not set 1449 + # CONFIG_SENSORS_PCF8591 is not set 1476 1450 # CONFIG_SENSORS_SIS5595 is not set 1477 1451 # CONFIG_SENSORS_DME1737 is not set 1478 1452 # CONFIG_SENSORS_SMSC47M1 is not set ··· 1666 1634 # CONFIG_FB_VIRTUAL is not set 1667 1635 # CONFIG_FB_METRONOME is not set 1668 1636 # CONFIG_FB_MB862XX is not set 1637 + # CONFIG_FB_BROADSHEET is not set 1669 1638 CONFIG_BACKLIGHT_LCD_SUPPORT=y 1670 1639 # CONFIG_LCD_CLASS_DEVICE is not set 1671 1640 CONFIG_BACKLIGHT_CLASS_DEVICE=y ··· 1752 1719 # CONFIG_SND_INDIGO is not set 1753 1720 # CONFIG_SND_INDIGOIO is not set 1754 1721 # CONFIG_SND_INDIGODJ is not set 1722 + # CONFIG_SND_INDIGOIOX is not set 1723 + # CONFIG_SND_INDIGODJX is not set 1755 1724 # CONFIG_SND_EMU10K1 is not set 1756 1725 # CONFIG_SND_EMU10K1X is not set 1757 1726 # CONFIG_SND_ENS1370 is not set ··· 1826 1791 # 1827 1792 # Special HID drivers 1828 1793 # 1829 - CONFIG_HID_COMPAT=y 1830 1794 CONFIG_HID_A4TECH=y 1831 1795 CONFIG_HID_APPLE=y 1832 1796 CONFIG_HID_BELKIN=y 1833 1797 CONFIG_HID_CHERRY=y 1834 1798 CONFIG_HID_CHICONY=y 1835 1799 CONFIG_HID_CYPRESS=y 1800 + # CONFIG_DRAGONRISE_FF is not set 1836 1801 CONFIG_HID_EZKEY=y 1802 + CONFIG_HID_KYE=y 1837 1803 CONFIG_HID_GYRATION=y 1804 + CONFIG_HID_KENSINGTON=y 1838 1805 CONFIG_HID_LOGITECH=y 1839 1806 CONFIG_LOGITECH_FF=y 1840 1807 # CONFIG_LOGIRUMBLEPAD2_FF is not set ··· 1902 1865 # CONFIG_USB_TMC is not set 1903 1866 1904 1867 # 1905 - # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; 1868 + # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may 1906 1869 # 1907 1870 1908 1871 # 1909 - # see USB_STORAGE Help for more information 1872 + # also be needed; see USB_STORAGE Help for more info 1910 1873 # 1911 1874 CONFIG_USB_STORAGE=y 1912 1875 # CONFIG_USB_STORAGE_DEBUG is not set ··· 1948 1911 # CONFIG_USB_LED is not set 1949 1912 # CONFIG_USB_CYPRESS_CY7C63 is not set 1950 1913 # CONFIG_USB_CYTHERM is not set 1951 - # CONFIG_USB_PHIDGET is not set 1952 1914 # CONFIG_USB_IDMOUSE is not set 1953 1915 # CONFIG_USB_FTDI_ELAN is not set 1954 1916 # CONFIG_USB_APPLEDISPLAY is not set ··· 1963 1927 # 1964 1928 # OTG and related infrastructure 1965 1929 # 1930 + # CONFIG_NOP_USB_XCEIV is not set 1966 1931 # CONFIG_UWB is not set 1967 1932 # CONFIG_MMC is not set 1968 1933 # CONFIG_MEMSTICK is not set ··· 1975 1938 # 1976 1939 # CONFIG_LEDS_ALIX2 is not set 1977 1940 # CONFIG_LEDS_PCA9532 is not set 1941 + # CONFIG_LEDS_LP5521 is not set 1978 1942 # CONFIG_LEDS_CLEVO_MAIL is not set 1979 1943 # CONFIG_LEDS_PCA955X is not set 1944 + # CONFIG_LEDS_BD2802 is not set 1980 1945 1981 1946 # 1982 1947 # LED Triggers ··· 1988 1949 # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set 1989 1950 # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set 1990 1951 # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set 1952 + 1953 + # 1954 + # iptables trigger is under Netfilter config (LED target) 1955 + # 1991 1956 # CONFIG_ACCESSIBILITY is not set 1992 1957 # CONFIG_INFINIBAND is not set 1993 1958 CONFIG_EDAC=y ··· 2060 2017 # DMA Devices 2061 2018 # 2062 2019 # CONFIG_INTEL_IOATDMA is not set 2020 + # CONFIG_AUXDISPLAY is not set 2063 2021 # CONFIG_UIO is not set 2064 2022 # CONFIG_STAGING is not set 2065 2023 CONFIG_X86_PLATFORM_DEVICES=y ··· 2094 2050 # 2095 2051 # CONFIG_EXT2_FS is not set 2096 2052 CONFIG_EXT3_FS=y 2053 + # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set 2097 2054 CONFIG_EXT3_FS_XATTR=y 2098 2055 CONFIG_EXT3_FS_POSIX_ACL=y 2099 2056 CONFIG_EXT3_FS_SECURITY=y ··· 2124 2079 CONFIG_AUTOFS4_FS=y 2125 2080 # CONFIG_FUSE_FS is not set 2126 2081 CONFIG_GENERIC_ACL=y 2082 + 2083 + # 2084 + # Caches 2085 + # 2086 + # CONFIG_FSCACHE is not set 2127 2087 2128 2088 # 2129 2089 # CD-ROM/DVD Filesystems ··· 2181 2131 # CONFIG_ROMFS_FS is not set 2182 2132 # CONFIG_SYSV_FS is not set 2183 2133 # CONFIG_UFS_FS is not set 2134 + # CONFIG_NILFS2_FS is not set 2184 2135 CONFIG_NETWORK_FILESYSTEMS=y 2185 2136 CONFIG_NFS_FS=y 2186 2137 CONFIG_NFS_V3=y ··· 2195 2144 CONFIG_NFS_COMMON=y 2196 2145 CONFIG_SUNRPC=y 2197 2146 CONFIG_SUNRPC_GSS=y 2198 - # CONFIG_SUNRPC_REGISTER_V4 is not set 2199 2147 CONFIG_RPCSEC_GSS_KRB5=y 2200 2148 # CONFIG_RPCSEC_GSS_SPKM3 is not set 2201 2149 # CONFIG_SMB_FS is not set ··· 2281 2231 CONFIG_DEBUG_KERNEL=y 2282 2232 # CONFIG_DEBUG_SHIRQ is not set 2283 2233 # CONFIG_DETECT_SOFTLOCKUP is not set 2234 + # CONFIG_DETECT_HUNG_TASK is not set 2284 2235 # CONFIG_SCHED_DEBUG is not set 2285 2236 CONFIG_SCHEDSTATS=y 2286 2237 CONFIG_TIMER_STATS=y ··· 2297 2246 # CONFIG_LOCK_STAT is not set 2298 2247 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set 2299 2248 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 2249 + CONFIG_STACKTRACE=y 2300 2250 # CONFIG_DEBUG_KOBJECT is not set 2301 2251 CONFIG_DEBUG_BUGVERBOSE=y 2302 2252 # CONFIG_DEBUG_INFO is not set ··· 2320 2268 # CONFIG_FAULT_INJECTION is not set 2321 2269 # CONFIG_LATENCYTOP is not set 2322 2270 CONFIG_SYSCTL_SYSCALL_CHECK=y 2271 + # CONFIG_DEBUG_PAGEALLOC is not set 2323 2272 CONFIG_USER_STACKTRACE_SUPPORT=y 2273 + CONFIG_NOP_TRACER=y 2324 2274 CONFIG_HAVE_FUNCTION_TRACER=y 2325 2275 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y 2326 2276 CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y 2327 2277 CONFIG_HAVE_DYNAMIC_FTRACE=y 2328 2278 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y 2329 2279 CONFIG_HAVE_HW_BRANCH_TRACER=y 2280 + CONFIG_HAVE_FTRACE_SYSCALLS=y 2281 + CONFIG_RING_BUFFER=y 2282 + CONFIG_TRACING=y 2283 + CONFIG_TRACING_SUPPORT=y 2330 2284 2331 2285 # 2332 2286 # Tracers ··· 2342 2284 # CONFIG_SYSPROF_TRACER is not set 2343 2285 # CONFIG_SCHED_TRACER is not set 2344 2286 # CONFIG_CONTEXT_SWITCH_TRACER is not set 2287 + # CONFIG_EVENT_TRACER is not set 2288 + # CONFIG_FTRACE_SYSCALLS is not set 2345 2289 # CONFIG_BOOT_TRACER is not set 2346 2290 # CONFIG_TRACE_BRANCH_PROFILING is not set 2347 2291 # CONFIG_POWER_TRACER is not set 2348 2292 # CONFIG_STACK_TRACER is not set 2349 2293 # CONFIG_HW_BRANCH_TRACER is not set 2294 + # CONFIG_KMEMTRACE is not set 2295 + # CONFIG_WORKQUEUE_TRACER is not set 2296 + CONFIG_BLK_DEV_IO_TRACE=y 2297 + # CONFIG_FTRACE_STARTUP_TEST is not set 2298 + # CONFIG_MMIOTRACE is not set 2350 2299 CONFIG_PROVIDE_OHCI1394_DMA_INIT=y 2351 - # CONFIG_DYNAMIC_PRINTK_DEBUG is not set 2300 + # CONFIG_DYNAMIC_DEBUG is not set 2301 + # CONFIG_DMA_API_DEBUG is not set 2352 2302 # CONFIG_SAMPLES is not set 2353 2303 CONFIG_HAVE_ARCH_KGDB=y 2354 2304 # CONFIG_KGDB is not set ··· 2366 2300 CONFIG_EARLY_PRINTK_DBGP=y 2367 2301 CONFIG_DEBUG_STACKOVERFLOW=y 2368 2302 CONFIG_DEBUG_STACK_USAGE=y 2369 - # CONFIG_DEBUG_PAGEALLOC is not set 2370 2303 # CONFIG_DEBUG_PER_CPU_MAPS is not set 2371 2304 # CONFIG_X86_PTDUMP is not set 2372 2305 CONFIG_DEBUG_RODATA=y 2373 2306 # CONFIG_DEBUG_RODATA_TEST is not set 2374 2307 CONFIG_DEBUG_NX_TEST=m 2375 2308 # CONFIG_IOMMU_DEBUG is not set 2376 - # CONFIG_MMIOTRACE is not set 2309 + CONFIG_HAVE_MMIOTRACE_SUPPORT=y 2377 2310 CONFIG_IO_DELAY_TYPE_0X80=0 2378 2311 CONFIG_IO_DELAY_TYPE_0XED=1 2379 2312 CONFIG_IO_DELAY_TYPE_UDELAY=2 ··· 2408 2343 CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 2409 2344 # CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set 2410 2345 # CONFIG_SECURITY_SMACK is not set 2346 + # CONFIG_SECURITY_TOMOYO is not set 2347 + # CONFIG_IMA is not set 2411 2348 CONFIG_CRYPTO=y 2412 2349 2413 2350 # ··· 2425 2358 CONFIG_CRYPTO_HASH=y 2426 2359 CONFIG_CRYPTO_HASH2=y 2427 2360 CONFIG_CRYPTO_RNG2=y 2361 + CONFIG_CRYPTO_PCOMP=y 2428 2362 CONFIG_CRYPTO_MANAGER=y 2429 2363 CONFIG_CRYPTO_MANAGER2=y 2430 2364 # CONFIG_CRYPTO_GF128MUL is not set 2431 2365 # CONFIG_CRYPTO_NULL is not set 2366 + CONFIG_CRYPTO_WORKQUEUE=y 2432 2367 # CONFIG_CRYPTO_CRYPTD is not set 2433 2368 CONFIG_CRYPTO_AUTHENC=y 2434 2369 # CONFIG_CRYPTO_TEST is not set ··· 2482 2413 # 2483 2414 CONFIG_CRYPTO_AES=y 2484 2415 # CONFIG_CRYPTO_AES_X86_64 is not set 2416 + # CONFIG_CRYPTO_AES_NI_INTEL is not set 2485 2417 # CONFIG_CRYPTO_ANUBIS is not set 2486 2418 CONFIG_CRYPTO_ARC4=y 2487 2419 # CONFIG_CRYPTO_BLOWFISH is not set ··· 2504 2434 # Compression 2505 2435 # 2506 2436 # CONFIG_CRYPTO_DEFLATE is not set 2437 + # CONFIG_CRYPTO_ZLIB is not set 2507 2438 # CONFIG_CRYPTO_LZO is not set 2508 2439 2509 2440 # ··· 2514 2443 CONFIG_CRYPTO_HW=y 2515 2444 # CONFIG_CRYPTO_DEV_HIFN_795X is not set 2516 2445 CONFIG_HAVE_KVM=y 2446 + CONFIG_HAVE_KVM_IRQCHIP=y 2517 2447 CONFIG_VIRTUALIZATION=y 2518 2448 # CONFIG_KVM is not set 2519 2449 # CONFIG_VIRTIO_PCI is not set 2520 2450 # CONFIG_VIRTIO_BALLOON is not set 2451 + CONFIG_BINARY_PRINTF=y 2521 2452 2522 2453 # 2523 2454 # Library routines ··· 2536 2463 # CONFIG_CRC7 is not set 2537 2464 # CONFIG_LIBCRC32C is not set 2538 2465 CONFIG_ZLIB_INFLATE=y 2539 - CONFIG_PLIST=y 2466 + CONFIG_DECOMPRESS_GZIP=y 2467 + CONFIG_DECOMPRESS_BZIP2=y 2468 + CONFIG_DECOMPRESS_LZMA=y 2540 2469 CONFIG_HAS_IOMEM=y 2541 2470 CONFIG_HAS_IOPORT=y 2542 2471 CONFIG_HAS_DMA=y 2472 + CONFIG_NLATTR=y
+15
arch/x86/include/asm/boot.h
··· 8 8 9 9 #ifdef __KERNEL__ 10 10 11 + #include <asm/page_types.h> 12 + 11 13 /* Physical address where kernel should be loaded. */ 12 14 #define LOAD_PHYSICAL_ADDR ((CONFIG_PHYSICAL_START \ 13 15 + (CONFIG_PHYSICAL_ALIGN - 1)) \ 14 16 & ~(CONFIG_PHYSICAL_ALIGN - 1)) 17 + 18 + /* Minimum kernel alignment, as a power of two */ 19 + #ifdef CONFIG_x86_64 20 + #define MIN_KERNEL_ALIGN_LG2 PMD_SHIFT 21 + #else 22 + #define MIN_KERNEL_ALIGN_LG2 (PAGE_SHIFT+1) 23 + #endif 24 + #define MIN_KERNEL_ALIGN (_AC(1, UL) << MIN_KERNEL_ALIGN_LG2) 25 + 26 + #if (CONFIG_PHYSICAL_ALIGN & (CONFIG_PHYSICAL_ALIGN-1)) || \ 27 + (CONFIG_PHYSICAL_ALIGN < (_AC(1, UL) << MIN_KERNEL_ALIGN_LG2)) 28 + #error "Invalid value for CONFIG_PHYSICAL_ALIGN" 29 + #endif 15 30 16 31 #ifdef CONFIG_KERNEL_BZIP2 17 32 #define BOOT_HEAP_SIZE 0x400000
+2 -1
arch/x86/include/asm/bootparam.h
··· 50 50 __u32 ramdisk_size; 51 51 __u32 bootsect_kludge; 52 52 __u16 heap_end_ptr; 53 - __u16 _pad1; 53 + __u8 ext_loader_ver; 54 + __u8 ext_loader_type; 54 55 __u32 cmd_line_ptr; 55 56 __u32 initrd_addr_max; 56 57 __u32 kernel_alignment;
+3 -11
arch/x86/include/asm/page_64_types.h
··· 32 32 */ 33 33 #define __PAGE_OFFSET _AC(0xffff880000000000, UL) 34 34 35 - #define __PHYSICAL_START CONFIG_PHYSICAL_START 36 - #define __KERNEL_ALIGN 0x200000 37 - 38 - /* 39 - * Make sure kernel is aligned to 2MB address. Catching it at compile 40 - * time is better. Change your config file and compile the kernel 41 - * for a 2MB aligned address (CONFIG_PHYSICAL_START) 42 - */ 43 - #if (CONFIG_PHYSICAL_START % __KERNEL_ALIGN) != 0 44 - #error "CONFIG_PHYSICAL_START must be a multiple of 2MB" 45 - #endif 35 + #define __PHYSICAL_START ((CONFIG_PHYSICAL_START + \ 36 + (CONFIG_PHYSICAL_ALIGN - 1)) & \ 37 + ~(CONFIG_PHYSICAL_ALIGN - 1)) 46 38 47 39 #define __START_KERNEL (__START_KERNEL_map + __PHYSICAL_START) 48 40 #define __START_KERNEL_map _AC(0xffffffff80000000, UL)
+1
arch/x86/include/asm/processor.h
··· 815 815 816 816 /* Boot loader type from the setup header: */ 817 817 extern int bootloader_type; 818 + extern int bootloader_version; 818 819 819 820 extern char ignore_fpu_irq; 820 821
+1
arch/x86/kernel/asm-offsets_32.c
··· 146 146 OFFSET(BP_loadflags, boot_params, hdr.loadflags); 147 147 OFFSET(BP_hardware_subarch, boot_params, hdr.hardware_subarch); 148 148 OFFSET(BP_version, boot_params, hdr.version); 149 + OFFSET(BP_kernel_alignment, boot_params, hdr.kernel_alignment); 149 150 }
+1
arch/x86/kernel/asm-offsets_64.c
··· 125 125 OFFSET(BP_loadflags, boot_params, hdr.loadflags); 126 126 OFFSET(BP_hardware_subarch, boot_params, hdr.hardware_subarch); 127 127 OFFSET(BP_version, boot_params, hdr.version); 128 + OFFSET(BP_kernel_alignment, boot_params, hdr.kernel_alignment); 128 129 129 130 BLANK(); 130 131 DEFINE(PAGE_SIZE_asm, PAGE_SIZE);
-7
arch/x86/kernel/head_32.S
··· 608 608 ENTRY(initial_code) 609 609 .long i386_start_kernel 610 610 611 - .section .text 612 - /* 613 - * Real beginning of normal "text" segment 614 - */ 615 - ENTRY(stext) 616 - ENTRY(_stext) 617 - 618 611 /* 619 612 * BSS section 620 613 */
+8 -2
arch/x86/kernel/setup.c
··· 214 214 unsigned long mmu_cr4_features = X86_CR4_PAE; 215 215 #endif 216 216 217 - /* Boot loader ID as an integer, for the benefit of proc_dointvec */ 218 - int bootloader_type; 217 + /* Boot loader ID and version as integers, for the benefit of proc_dointvec */ 218 + int bootloader_type, bootloader_version; 219 219 220 220 /* 221 221 * Setup options ··· 706 706 #endif 707 707 saved_video_mode = boot_params.hdr.vid_mode; 708 708 bootloader_type = boot_params.hdr.type_of_loader; 709 + if ((bootloader_type >> 4) == 0xe) { 710 + bootloader_type &= 0xf; 711 + bootloader_type |= (boot_params.hdr.ext_loader_type+0x10) << 4; 712 + } 713 + bootloader_version = bootloader_type & 0xf; 714 + bootloader_version |= boot_params.hdr.ext_loader_ver << 4; 709 715 710 716 #ifdef CONFIG_BLK_DEV_RAM 711 717 rd_image_start = boot_params.hdr.ram_size & RAMDISK_IMAGE_START_MASK;
+428 -2
arch/x86/kernel/vmlinux.lds.S
··· 1 + /* 2 + * ld script for the x86 kernel 3 + * 4 + * Historic 32-bit version written by Martin Mares <mj@atrey.karlin.mff.cuni.cz> 5 + * 6 + * Modernisation, unification and other changes and fixes: 7 + * Copyright (C) 2007-2009 Sam Ravnborg <sam@ravnborg.org> 8 + * 9 + * 10 + * Don't define absolute symbols until and unless you know that symbol 11 + * value is should remain constant even if kernel image is relocated 12 + * at run time. Absolute symbols are not relocated. If symbol value should 13 + * change if kernel is relocated, make the symbol section relative and 14 + * put it inside the section definition. 15 + */ 16 + 1 17 #ifdef CONFIG_X86_32 2 - # include "vmlinux_32.lds.S" 18 + #define LOAD_OFFSET __PAGE_OFFSET 3 19 #else 4 - # include "vmlinux_64.lds.S" 20 + #define LOAD_OFFSET __START_KERNEL_map 5 21 #endif 22 + 23 + #include <asm-generic/vmlinux.lds.h> 24 + #include <asm/asm-offsets.h> 25 + #include <asm/thread_info.h> 26 + #include <asm/page_types.h> 27 + #include <asm/cache.h> 28 + #include <asm/boot.h> 29 + 30 + #undef i386 /* in case the preprocessor is a 32bit one */ 31 + 32 + OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT) 33 + 34 + #ifdef CONFIG_X86_32 35 + OUTPUT_ARCH(i386) 36 + ENTRY(phys_startup_32) 37 + jiffies = jiffies_64; 38 + #else 39 + OUTPUT_ARCH(i386:x86-64) 40 + ENTRY(phys_startup_64) 41 + jiffies_64 = jiffies; 42 + #endif 43 + 44 + PHDRS { 45 + text PT_LOAD FLAGS(5); /* R_E */ 46 + data PT_LOAD FLAGS(7); /* RWE */ 47 + #ifdef CONFIG_X86_64 48 + user PT_LOAD FLAGS(7); /* RWE */ 49 + data.init PT_LOAD FLAGS(7); /* RWE */ 50 + #ifdef CONFIG_SMP 51 + percpu PT_LOAD FLAGS(7); /* RWE */ 52 + #endif 53 + data.init2 PT_LOAD FLAGS(7); /* RWE */ 54 + #endif 55 + note PT_NOTE FLAGS(0); /* ___ */ 56 + } 57 + 58 + SECTIONS 59 + { 60 + #ifdef CONFIG_X86_32 61 + . = LOAD_OFFSET + LOAD_PHYSICAL_ADDR; 62 + phys_startup_32 = startup_32 - LOAD_OFFSET; 63 + #else 64 + . = __START_KERNEL; 65 + phys_startup_64 = startup_64 - LOAD_OFFSET; 66 + #endif 67 + 68 + /* Text and read-only data */ 69 + 70 + /* bootstrapping code */ 71 + .text.head : AT(ADDR(.text.head) - LOAD_OFFSET) { 72 + _text = .; 73 + *(.text.head) 74 + } :text = 0x9090 75 + 76 + /* The rest of the text */ 77 + .text : AT(ADDR(.text) - LOAD_OFFSET) { 78 + #ifdef CONFIG_X86_32 79 + /* not really needed, already page aligned */ 80 + . = ALIGN(PAGE_SIZE); 81 + *(.text.page_aligned) 82 + #endif 83 + . = ALIGN(8); 84 + _stext = .; 85 + TEXT_TEXT 86 + SCHED_TEXT 87 + LOCK_TEXT 88 + KPROBES_TEXT 89 + IRQENTRY_TEXT 90 + *(.fixup) 91 + *(.gnu.warning) 92 + /* End of text section */ 93 + _etext = .; 94 + } :text = 0x9090 95 + 96 + NOTES :text :note 97 + 98 + /* Exception table */ 99 + . = ALIGN(16); 100 + __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { 101 + __start___ex_table = .; 102 + *(__ex_table) 103 + __stop___ex_table = .; 104 + } :text = 0x9090 105 + 106 + RODATA 107 + 108 + /* Data */ 109 + . = ALIGN(PAGE_SIZE); 110 + .data : AT(ADDR(.data) - LOAD_OFFSET) { 111 + DATA_DATA 112 + CONSTRUCTORS 113 + 114 + #ifdef CONFIG_X86_64 115 + /* End of data section */ 116 + _edata = .; 117 + #endif 118 + } :data 119 + 120 + #ifdef CONFIG_X86_32 121 + /* 32 bit has nosave before _edata */ 122 + . = ALIGN(PAGE_SIZE); 123 + .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { 124 + __nosave_begin = .; 125 + *(.data.nosave) 126 + . = ALIGN(PAGE_SIZE); 127 + __nosave_end = .; 128 + } 129 + #endif 130 + 131 + . = ALIGN(PAGE_SIZE); 132 + .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) { 133 + *(.data.page_aligned) 134 + *(.data.idt) 135 + } 136 + 137 + #ifdef CONFIG_X86_32 138 + . = ALIGN(32); 139 + #else 140 + . = ALIGN(PAGE_SIZE); 141 + . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); 142 + #endif 143 + .data.cacheline_aligned : 144 + AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) { 145 + *(.data.cacheline_aligned) 146 + } 147 + 148 + /* rarely changed data like cpu maps */ 149 + #ifdef CONFIG_X86_32 150 + . = ALIGN(32); 151 + #else 152 + . = ALIGN(CONFIG_X86_INTERNODE_CACHE_BYTES); 153 + #endif 154 + .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) { 155 + *(.data.read_mostly) 156 + 157 + #ifdef CONFIG_X86_32 158 + /* End of data section */ 159 + _edata = .; 160 + #endif 161 + } 162 + 163 + #ifdef CONFIG_X86_64 164 + 165 + #define VSYSCALL_ADDR (-10*1024*1024) 166 + #define VSYSCALL_PHYS_ADDR ((LOADADDR(.data.read_mostly) + \ 167 + SIZEOF(.data.read_mostly) + 4095) & ~(4095)) 168 + #define VSYSCALL_VIRT_ADDR ((ADDR(.data.read_mostly) + \ 169 + SIZEOF(.data.read_mostly) + 4095) & ~(4095)) 170 + 171 + #define VLOAD_OFFSET (VSYSCALL_ADDR - VSYSCALL_PHYS_ADDR) 172 + #define VLOAD(x) (ADDR(x) - VLOAD_OFFSET) 173 + 174 + #define VVIRT_OFFSET (VSYSCALL_ADDR - VSYSCALL_VIRT_ADDR) 175 + #define VVIRT(x) (ADDR(x) - VVIRT_OFFSET) 176 + 177 + . = VSYSCALL_ADDR; 178 + .vsyscall_0 : AT(VSYSCALL_PHYS_ADDR) { 179 + *(.vsyscall_0) 180 + } :user 181 + 182 + __vsyscall_0 = VSYSCALL_VIRT_ADDR; 183 + 184 + . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); 185 + .vsyscall_fn : AT(VLOAD(.vsyscall_fn)) { 186 + *(.vsyscall_fn) 187 + } 188 + 189 + . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); 190 + .vsyscall_gtod_data : AT(VLOAD(.vsyscall_gtod_data)) { 191 + *(.vsyscall_gtod_data) 192 + } 193 + 194 + vsyscall_gtod_data = VVIRT(.vsyscall_gtod_data); 195 + .vsyscall_clock : AT(VLOAD(.vsyscall_clock)) { 196 + *(.vsyscall_clock) 197 + } 198 + vsyscall_clock = VVIRT(.vsyscall_clock); 199 + 200 + 201 + .vsyscall_1 ADDR(.vsyscall_0) + 1024: AT(VLOAD(.vsyscall_1)) { 202 + *(.vsyscall_1) 203 + } 204 + .vsyscall_2 ADDR(.vsyscall_0) + 2048: AT(VLOAD(.vsyscall_2)) { 205 + *(.vsyscall_2) 206 + } 207 + 208 + .vgetcpu_mode : AT(VLOAD(.vgetcpu_mode)) { 209 + *(.vgetcpu_mode) 210 + } 211 + vgetcpu_mode = VVIRT(.vgetcpu_mode); 212 + 213 + . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); 214 + .jiffies : AT(VLOAD(.jiffies)) { 215 + *(.jiffies) 216 + } 217 + jiffies = VVIRT(.jiffies); 218 + 219 + .vsyscall_3 ADDR(.vsyscall_0) + 3072: AT(VLOAD(.vsyscall_3)) { 220 + *(.vsyscall_3) 221 + } 222 + 223 + . = VSYSCALL_VIRT_ADDR + PAGE_SIZE; 224 + 225 + #undef VSYSCALL_ADDR 226 + #undef VSYSCALL_PHYS_ADDR 227 + #undef VSYSCALL_VIRT_ADDR 228 + #undef VLOAD_OFFSET 229 + #undef VLOAD 230 + #undef VVIRT_OFFSET 231 + #undef VVIRT 232 + 233 + #endif /* CONFIG_X86_64 */ 234 + 235 + /* init_task */ 236 + . = ALIGN(THREAD_SIZE); 237 + .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) { 238 + *(.data.init_task) 239 + } 240 + #ifdef CONFIG_X86_64 241 + :data.init 242 + #endif 243 + 244 + /* 245 + * smp_locks might be freed after init 246 + * start/end must be page aligned 247 + */ 248 + . = ALIGN(PAGE_SIZE); 249 + .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { 250 + __smp_locks = .; 251 + *(.smp_locks) 252 + __smp_locks_end = .; 253 + . = ALIGN(PAGE_SIZE); 254 + } 255 + 256 + /* Init code and data - will be freed after init */ 257 + . = ALIGN(PAGE_SIZE); 258 + .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { 259 + __init_begin = .; /* paired with __init_end */ 260 + _sinittext = .; 261 + INIT_TEXT 262 + _einittext = .; 263 + } 264 + 265 + .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { 266 + INIT_DATA 267 + } 268 + 269 + . = ALIGN(16); 270 + .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { 271 + __setup_start = .; 272 + *(.init.setup) 273 + __setup_end = .; 274 + } 275 + .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { 276 + __initcall_start = .; 277 + INITCALLS 278 + __initcall_end = .; 279 + } 280 + 281 + .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) { 282 + __con_initcall_start = .; 283 + *(.con_initcall.init) 284 + __con_initcall_end = .; 285 + } 286 + 287 + .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) { 288 + __x86_cpu_dev_start = .; 289 + *(.x86_cpu_dev.init) 290 + __x86_cpu_dev_end = .; 291 + } 292 + 293 + SECURITY_INIT 294 + 295 + . = ALIGN(8); 296 + .parainstructions : AT(ADDR(.parainstructions) - LOAD_OFFSET) { 297 + __parainstructions = .; 298 + *(.parainstructions) 299 + __parainstructions_end = .; 300 + } 301 + 302 + . = ALIGN(8); 303 + .altinstructions : AT(ADDR(.altinstructions) - LOAD_OFFSET) { 304 + __alt_instructions = .; 305 + *(.altinstructions) 306 + __alt_instructions_end = .; 307 + } 308 + 309 + .altinstr_replacement : AT(ADDR(.altinstr_replacement) - LOAD_OFFSET) { 310 + *(.altinstr_replacement) 311 + } 312 + 313 + /* 314 + * .exit.text is discard at runtime, not link time, to deal with 315 + * references from .altinstructions and .eh_frame 316 + */ 317 + .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { 318 + EXIT_TEXT 319 + } 320 + 321 + .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { 322 + EXIT_DATA 323 + } 324 + 325 + #ifdef CONFIG_BLK_DEV_INITRD 326 + . = ALIGN(PAGE_SIZE); 327 + .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { 328 + __initramfs_start = .; 329 + *(.init.ramfs) 330 + __initramfs_end = .; 331 + } 332 + #endif 333 + 334 + #if defined(CONFIG_X86_64) && defined(CONFIG_SMP) 335 + /* 336 + * percpu offsets are zero-based on SMP. PERCPU_VADDR() changes the 337 + * output PHDR, so the next output section - __data_nosave - should 338 + * start another section data.init2. Also, pda should be at the head of 339 + * percpu area. Preallocate it and define the percpu offset symbol 340 + * so that it can be accessed as a percpu variable. 341 + */ 342 + . = ALIGN(PAGE_SIZE); 343 + PERCPU_VADDR(0, :percpu) 344 + #else 345 + PERCPU(PAGE_SIZE) 346 + #endif 347 + 348 + . = ALIGN(PAGE_SIZE); 349 + 350 + /* freed after init ends here */ 351 + .init.end : AT(ADDR(.init.end) - LOAD_OFFSET) { 352 + __init_end = .; 353 + } 354 + 355 + #ifdef CONFIG_X86_64 356 + .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { 357 + . = ALIGN(PAGE_SIZE); 358 + __nosave_begin = .; 359 + *(.data.nosave) 360 + . = ALIGN(PAGE_SIZE); 361 + __nosave_end = .; 362 + } :data.init2 363 + /* use another section data.init2, see PERCPU_VADDR() above */ 364 + #endif 365 + 366 + /* BSS */ 367 + . = ALIGN(PAGE_SIZE); 368 + .bss : AT(ADDR(.bss) - LOAD_OFFSET) { 369 + __bss_start = .; 370 + *(.bss.page_aligned) 371 + *(.bss) 372 + . = ALIGN(4); 373 + __bss_stop = .; 374 + } 375 + 376 + . = ALIGN(PAGE_SIZE); 377 + .brk : AT(ADDR(.brk) - LOAD_OFFSET) { 378 + __brk_base = .; 379 + . += 64 * 1024; /* 64k alignment slop space */ 380 + *(.brk_reservation) /* areas brk users have reserved */ 381 + __brk_limit = .; 382 + } 383 + 384 + .end : AT(ADDR(.end) - LOAD_OFFSET) { 385 + _end = .; 386 + } 387 + 388 + /* Sections to be discarded */ 389 + /DISCARD/ : { 390 + *(.exitcall.exit) 391 + *(.eh_frame) 392 + *(.discard) 393 + } 394 + 395 + STABS_DEBUG 396 + DWARF_DEBUG 397 + } 398 + 399 + 400 + #ifdef CONFIG_X86_32 401 + ASSERT((_end - LOAD_OFFSET <= KERNEL_IMAGE_SIZE), 402 + "kernel image bigger than KERNEL_IMAGE_SIZE") 403 + #else 404 + /* 405 + * Per-cpu symbols which need to be offset from __per_cpu_load 406 + * for the boot processor. 407 + */ 408 + #define INIT_PER_CPU(x) init_per_cpu__##x = per_cpu__##x + __per_cpu_load 409 + INIT_PER_CPU(gdt_page); 410 + INIT_PER_CPU(irq_stack_union); 411 + 412 + /* 413 + * Build-time check on the image size: 414 + */ 415 + ASSERT((_end - _text <= KERNEL_IMAGE_SIZE), 416 + "kernel image bigger than KERNEL_IMAGE_SIZE") 417 + 418 + #ifdef CONFIG_SMP 419 + ASSERT((per_cpu__irq_stack_union == 0), 420 + "irq_stack_union is not at start of per-cpu area"); 421 + #endif 422 + 423 + #endif /* CONFIG_X86_32 */ 424 + 425 + #ifdef CONFIG_KEXEC 426 + #include <asm/kexec.h> 427 + 428 + ASSERT(kexec_control_code_size <= KEXEC_CONTROL_CODE_MAX_SIZE, 429 + "kexec control code size is too big") 430 + #endif 431 +
-229
arch/x86/kernel/vmlinux_32.lds.S
··· 1 - /* ld script to make i386 Linux kernel 2 - * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>; 3 - * 4 - * Don't define absolute symbols until and unless you know that symbol 5 - * value is should remain constant even if kernel image is relocated 6 - * at run time. Absolute symbols are not relocated. If symbol value should 7 - * change if kernel is relocated, make the symbol section relative and 8 - * put it inside the section definition. 9 - */ 10 - 11 - #define LOAD_OFFSET __PAGE_OFFSET 12 - 13 - #include <asm-generic/vmlinux.lds.h> 14 - #include <asm/thread_info.h> 15 - #include <asm/page_types.h> 16 - #include <asm/cache.h> 17 - #include <asm/boot.h> 18 - 19 - OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") 20 - OUTPUT_ARCH(i386) 21 - ENTRY(phys_startup_32) 22 - jiffies = jiffies_64; 23 - 24 - PHDRS { 25 - text PT_LOAD FLAGS(5); /* R_E */ 26 - data PT_LOAD FLAGS(7); /* RWE */ 27 - note PT_NOTE FLAGS(0); /* ___ */ 28 - } 29 - SECTIONS 30 - { 31 - . = LOAD_OFFSET + LOAD_PHYSICAL_ADDR; 32 - phys_startup_32 = startup_32 - LOAD_OFFSET; 33 - 34 - .text.head : AT(ADDR(.text.head) - LOAD_OFFSET) { 35 - _text = .; /* Text and read-only data */ 36 - *(.text.head) 37 - } :text = 0x9090 38 - 39 - /* read-only */ 40 - .text : AT(ADDR(.text) - LOAD_OFFSET) { 41 - . = ALIGN(PAGE_SIZE); /* not really needed, already page aligned */ 42 - *(.text.page_aligned) 43 - TEXT_TEXT 44 - SCHED_TEXT 45 - LOCK_TEXT 46 - KPROBES_TEXT 47 - IRQENTRY_TEXT 48 - *(.fixup) 49 - *(.gnu.warning) 50 - _etext = .; /* End of text section */ 51 - } :text = 0x9090 52 - 53 - NOTES :text :note 54 - 55 - . = ALIGN(16); /* Exception table */ 56 - __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { 57 - __start___ex_table = .; 58 - *(__ex_table) 59 - __stop___ex_table = .; 60 - } :text = 0x9090 61 - 62 - RODATA 63 - 64 - /* writeable */ 65 - . = ALIGN(PAGE_SIZE); 66 - .data : AT(ADDR(.data) - LOAD_OFFSET) { /* Data */ 67 - DATA_DATA 68 - CONSTRUCTORS 69 - } :data 70 - 71 - . = ALIGN(PAGE_SIZE); 72 - .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { 73 - __nosave_begin = .; 74 - *(.data.nosave) 75 - . = ALIGN(PAGE_SIZE); 76 - __nosave_end = .; 77 - } 78 - 79 - . = ALIGN(PAGE_SIZE); 80 - .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) { 81 - *(.data.page_aligned) 82 - *(.data.idt) 83 - } 84 - 85 - . = ALIGN(32); 86 - .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) { 87 - *(.data.cacheline_aligned) 88 - } 89 - 90 - /* rarely changed data like cpu maps */ 91 - . = ALIGN(32); 92 - .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) { 93 - *(.data.read_mostly) 94 - _edata = .; /* End of data section */ 95 - } 96 - 97 - . = ALIGN(THREAD_SIZE); /* init_task */ 98 - .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) { 99 - *(.data.init_task) 100 - } 101 - 102 - /* might get freed after init */ 103 - . = ALIGN(PAGE_SIZE); 104 - .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { 105 - __smp_locks = .; 106 - *(.smp_locks) 107 - __smp_locks_end = .; 108 - } 109 - /* will be freed after init 110 - * Following ALIGN() is required to make sure no other data falls on the 111 - * same page where __smp_alt_end is pointing as that page might be freed 112 - * after boot. Always make sure that ALIGN() directive is present after 113 - * the section which contains __smp_alt_end. 114 - */ 115 - . = ALIGN(PAGE_SIZE); 116 - 117 - /* will be freed after init */ 118 - . = ALIGN(PAGE_SIZE); /* Init code and data */ 119 - .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { 120 - __init_begin = .; 121 - _sinittext = .; 122 - INIT_TEXT 123 - _einittext = .; 124 - } 125 - .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { 126 - INIT_DATA 127 - } 128 - . = ALIGN(16); 129 - .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { 130 - __setup_start = .; 131 - *(.init.setup) 132 - __setup_end = .; 133 - } 134 - .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { 135 - __initcall_start = .; 136 - INITCALLS 137 - __initcall_end = .; 138 - } 139 - .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) { 140 - __con_initcall_start = .; 141 - *(.con_initcall.init) 142 - __con_initcall_end = .; 143 - } 144 - .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) { 145 - __x86_cpu_dev_start = .; 146 - *(.x86_cpu_dev.init) 147 - __x86_cpu_dev_end = .; 148 - } 149 - SECURITY_INIT 150 - . = ALIGN(4); 151 - .altinstructions : AT(ADDR(.altinstructions) - LOAD_OFFSET) { 152 - __alt_instructions = .; 153 - *(.altinstructions) 154 - __alt_instructions_end = .; 155 - } 156 - .altinstr_replacement : AT(ADDR(.altinstr_replacement) - LOAD_OFFSET) { 157 - *(.altinstr_replacement) 158 - } 159 - . = ALIGN(4); 160 - .parainstructions : AT(ADDR(.parainstructions) - LOAD_OFFSET) { 161 - __parainstructions = .; 162 - *(.parainstructions) 163 - __parainstructions_end = .; 164 - } 165 - /* .exit.text is discard at runtime, not link time, to deal with references 166 - from .altinstructions and .eh_frame */ 167 - .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { 168 - EXIT_TEXT 169 - } 170 - .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { 171 - EXIT_DATA 172 - } 173 - #if defined(CONFIG_BLK_DEV_INITRD) 174 - . = ALIGN(PAGE_SIZE); 175 - .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { 176 - __initramfs_start = .; 177 - *(.init.ramfs) 178 - __initramfs_end = .; 179 - } 180 - #endif 181 - PERCPU(PAGE_SIZE) 182 - . = ALIGN(PAGE_SIZE); 183 - /* freed after init ends here */ 184 - 185 - .bss : AT(ADDR(.bss) - LOAD_OFFSET) { 186 - __init_end = .; 187 - __bss_start = .; /* BSS */ 188 - *(.bss.page_aligned) 189 - *(.bss) 190 - . = ALIGN(4); 191 - __bss_stop = .; 192 - } 193 - 194 - .brk : AT(ADDR(.brk) - LOAD_OFFSET) { 195 - . = ALIGN(PAGE_SIZE); 196 - __brk_base = . ; 197 - . += 64 * 1024 ; /* 64k alignment slop space */ 198 - *(.brk_reservation) /* areas brk users have reserved */ 199 - __brk_limit = . ; 200 - } 201 - 202 - .end : AT(ADDR(.end) - LOAD_OFFSET) { 203 - _end = . ; 204 - } 205 - 206 - /* Sections to be discarded */ 207 - /DISCARD/ : { 208 - *(.exitcall.exit) 209 - *(.discard) 210 - } 211 - 212 - STABS_DEBUG 213 - 214 - DWARF_DEBUG 215 - } 216 - 217 - /* 218 - * Build-time check on the image size: 219 - */ 220 - ASSERT((_end - LOAD_OFFSET <= KERNEL_IMAGE_SIZE), 221 - "kernel image bigger than KERNEL_IMAGE_SIZE") 222 - 223 - #ifdef CONFIG_KEXEC 224 - /* Link time checks */ 225 - #include <asm/kexec.h> 226 - 227 - ASSERT(kexec_control_code_size <= KEXEC_CONTROL_CODE_MAX_SIZE, 228 - "kexec control code size is too big") 229 - #endif
-298
arch/x86/kernel/vmlinux_64.lds.S
··· 1 - /* ld script to make x86-64 Linux kernel 2 - * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>; 3 - */ 4 - 5 - #define LOAD_OFFSET __START_KERNEL_map 6 - 7 - #include <asm-generic/vmlinux.lds.h> 8 - #include <asm/asm-offsets.h> 9 - #include <asm/page_types.h> 10 - 11 - #undef i386 /* in case the preprocessor is a 32bit one */ 12 - 13 - OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") 14 - OUTPUT_ARCH(i386:x86-64) 15 - ENTRY(phys_startup_64) 16 - jiffies_64 = jiffies; 17 - PHDRS { 18 - text PT_LOAD FLAGS(5); /* R_E */ 19 - data PT_LOAD FLAGS(7); /* RWE */ 20 - user PT_LOAD FLAGS(7); /* RWE */ 21 - data.init PT_LOAD FLAGS(7); /* RWE */ 22 - #ifdef CONFIG_SMP 23 - percpu PT_LOAD FLAGS(7); /* RWE */ 24 - #endif 25 - data.init2 PT_LOAD FLAGS(7); /* RWE */ 26 - note PT_NOTE FLAGS(0); /* ___ */ 27 - } 28 - SECTIONS 29 - { 30 - . = __START_KERNEL; 31 - phys_startup_64 = startup_64 - LOAD_OFFSET; 32 - .text : AT(ADDR(.text) - LOAD_OFFSET) { 33 - _text = .; /* Text and read-only data */ 34 - /* First the code that has to be first for bootstrapping */ 35 - *(.text.head) 36 - _stext = .; 37 - /* Then the rest */ 38 - TEXT_TEXT 39 - SCHED_TEXT 40 - LOCK_TEXT 41 - KPROBES_TEXT 42 - IRQENTRY_TEXT 43 - *(.fixup) 44 - *(.gnu.warning) 45 - _etext = .; /* End of text section */ 46 - } :text = 0x9090 47 - 48 - NOTES :text :note 49 - 50 - . = ALIGN(16); /* Exception table */ 51 - __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { 52 - __start___ex_table = .; 53 - *(__ex_table) 54 - __stop___ex_table = .; 55 - } :text = 0x9090 56 - 57 - RODATA 58 - 59 - . = ALIGN(PAGE_SIZE); /* Align data segment to page size boundary */ 60 - /* Data */ 61 - .data : AT(ADDR(.data) - LOAD_OFFSET) { 62 - DATA_DATA 63 - CONSTRUCTORS 64 - _edata = .; /* End of data section */ 65 - } :data 66 - 67 - 68 - .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) { 69 - . = ALIGN(PAGE_SIZE); 70 - . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); 71 - *(.data.cacheline_aligned) 72 - } 73 - . = ALIGN(CONFIG_X86_INTERNODE_CACHE_BYTES); 74 - .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) { 75 - *(.data.read_mostly) 76 - } 77 - 78 - #define VSYSCALL_ADDR (-10*1024*1024) 79 - #define VSYSCALL_PHYS_ADDR ((LOADADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095)) 80 - #define VSYSCALL_VIRT_ADDR ((ADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095)) 81 - 82 - #define VLOAD_OFFSET (VSYSCALL_ADDR - VSYSCALL_PHYS_ADDR) 83 - #define VLOAD(x) (ADDR(x) - VLOAD_OFFSET) 84 - 85 - #define VVIRT_OFFSET (VSYSCALL_ADDR - VSYSCALL_VIRT_ADDR) 86 - #define VVIRT(x) (ADDR(x) - VVIRT_OFFSET) 87 - 88 - . = VSYSCALL_ADDR; 89 - .vsyscall_0 : AT(VSYSCALL_PHYS_ADDR) { *(.vsyscall_0) } :user 90 - __vsyscall_0 = VSYSCALL_VIRT_ADDR; 91 - 92 - . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); 93 - .vsyscall_fn : AT(VLOAD(.vsyscall_fn)) { *(.vsyscall_fn) } 94 - . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); 95 - .vsyscall_gtod_data : AT(VLOAD(.vsyscall_gtod_data)) 96 - { *(.vsyscall_gtod_data) } 97 - vsyscall_gtod_data = VVIRT(.vsyscall_gtod_data); 98 - .vsyscall_clock : AT(VLOAD(.vsyscall_clock)) 99 - { *(.vsyscall_clock) } 100 - vsyscall_clock = VVIRT(.vsyscall_clock); 101 - 102 - 103 - .vsyscall_1 ADDR(.vsyscall_0) + 1024: AT(VLOAD(.vsyscall_1)) 104 - { *(.vsyscall_1) } 105 - .vsyscall_2 ADDR(.vsyscall_0) + 2048: AT(VLOAD(.vsyscall_2)) 106 - { *(.vsyscall_2) } 107 - 108 - .vgetcpu_mode : AT(VLOAD(.vgetcpu_mode)) { *(.vgetcpu_mode) } 109 - vgetcpu_mode = VVIRT(.vgetcpu_mode); 110 - 111 - . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); 112 - .jiffies : AT(VLOAD(.jiffies)) { *(.jiffies) } 113 - jiffies = VVIRT(.jiffies); 114 - 115 - .vsyscall_3 ADDR(.vsyscall_0) + 3072: AT(VLOAD(.vsyscall_3)) 116 - { *(.vsyscall_3) } 117 - 118 - . = VSYSCALL_VIRT_ADDR + PAGE_SIZE; 119 - 120 - #undef VSYSCALL_ADDR 121 - #undef VSYSCALL_PHYS_ADDR 122 - #undef VSYSCALL_VIRT_ADDR 123 - #undef VLOAD_OFFSET 124 - #undef VLOAD 125 - #undef VVIRT_OFFSET 126 - #undef VVIRT 127 - 128 - .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) { 129 - . = ALIGN(THREAD_SIZE); /* init_task */ 130 - *(.data.init_task) 131 - }:data.init 132 - 133 - .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) { 134 - . = ALIGN(PAGE_SIZE); 135 - *(.data.page_aligned) 136 - } 137 - 138 - .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { 139 - /* might get freed after init */ 140 - . = ALIGN(PAGE_SIZE); 141 - __smp_alt_begin = .; 142 - __smp_locks = .; 143 - *(.smp_locks) 144 - __smp_locks_end = .; 145 - . = ALIGN(PAGE_SIZE); 146 - __smp_alt_end = .; 147 - } 148 - 149 - . = ALIGN(PAGE_SIZE); /* Init code and data */ 150 - __init_begin = .; /* paired with __init_end */ 151 - .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { 152 - _sinittext = .; 153 - INIT_TEXT 154 - _einittext = .; 155 - } 156 - .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { 157 - __initdata_begin = .; 158 - INIT_DATA 159 - __initdata_end = .; 160 - } 161 - 162 - .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { 163 - . = ALIGN(16); 164 - __setup_start = .; 165 - *(.init.setup) 166 - __setup_end = .; 167 - } 168 - .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { 169 - __initcall_start = .; 170 - INITCALLS 171 - __initcall_end = .; 172 - } 173 - .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) { 174 - __con_initcall_start = .; 175 - *(.con_initcall.init) 176 - __con_initcall_end = .; 177 - } 178 - .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) { 179 - __x86_cpu_dev_start = .; 180 - *(.x86_cpu_dev.init) 181 - __x86_cpu_dev_end = .; 182 - } 183 - SECURITY_INIT 184 - 185 - . = ALIGN(8); 186 - .parainstructions : AT(ADDR(.parainstructions) - LOAD_OFFSET) { 187 - __parainstructions = .; 188 - *(.parainstructions) 189 - __parainstructions_end = .; 190 - } 191 - 192 - .altinstructions : AT(ADDR(.altinstructions) - LOAD_OFFSET) { 193 - . = ALIGN(8); 194 - __alt_instructions = .; 195 - *(.altinstructions) 196 - __alt_instructions_end = .; 197 - } 198 - .altinstr_replacement : AT(ADDR(.altinstr_replacement) - LOAD_OFFSET) { 199 - *(.altinstr_replacement) 200 - } 201 - /* .exit.text is discard at runtime, not link time, to deal with references 202 - from .altinstructions and .eh_frame */ 203 - .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { 204 - EXIT_TEXT 205 - } 206 - .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { 207 - EXIT_DATA 208 - } 209 - 210 - #ifdef CONFIG_BLK_DEV_INITRD 211 - . = ALIGN(PAGE_SIZE); 212 - .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { 213 - __initramfs_start = .; 214 - *(.init.ramfs) 215 - __initramfs_end = .; 216 - } 217 - #endif 218 - 219 - #ifdef CONFIG_SMP 220 - /* 221 - * percpu offsets are zero-based on SMP. PERCPU_VADDR() changes the 222 - * output PHDR, so the next output section - __data_nosave - should 223 - * start another section data.init2. Also, pda should be at the head of 224 - * percpu area. Preallocate it and define the percpu offset symbol 225 - * so that it can be accessed as a percpu variable. 226 - */ 227 - . = ALIGN(PAGE_SIZE); 228 - PERCPU_VADDR(0, :percpu) 229 - #else 230 - PERCPU(PAGE_SIZE) 231 - #endif 232 - 233 - . = ALIGN(PAGE_SIZE); 234 - __init_end = .; 235 - 236 - .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { 237 - . = ALIGN(PAGE_SIZE); 238 - __nosave_begin = .; 239 - *(.data.nosave) 240 - . = ALIGN(PAGE_SIZE); 241 - __nosave_end = .; 242 - } :data.init2 /* use another section data.init2, see PERCPU_VADDR() above */ 243 - 244 - .bss : AT(ADDR(.bss) - LOAD_OFFSET) { 245 - . = ALIGN(PAGE_SIZE); 246 - __bss_start = .; /* BSS */ 247 - *(.bss.page_aligned) 248 - *(.bss) 249 - __bss_stop = .; 250 - } 251 - 252 - .brk : AT(ADDR(.brk) - LOAD_OFFSET) { 253 - . = ALIGN(PAGE_SIZE); 254 - __brk_base = . ; 255 - . += 64 * 1024 ; /* 64k alignment slop space */ 256 - *(.brk_reservation) /* areas brk users have reserved */ 257 - __brk_limit = . ; 258 - } 259 - 260 - _end = . ; 261 - 262 - /* Sections to be discarded */ 263 - /DISCARD/ : { 264 - *(.exitcall.exit) 265 - *(.eh_frame) 266 - *(.discard) 267 - } 268 - 269 - STABS_DEBUG 270 - 271 - DWARF_DEBUG 272 - } 273 - 274 - /* 275 - * Per-cpu symbols which need to be offset from __per_cpu_load 276 - * for the boot processor. 277 - */ 278 - #define INIT_PER_CPU(x) init_per_cpu__##x = per_cpu__##x + __per_cpu_load 279 - INIT_PER_CPU(gdt_page); 280 - INIT_PER_CPU(irq_stack_union); 281 - 282 - /* 283 - * Build-time check on the image size: 284 - */ 285 - ASSERT((_end - _text <= KERNEL_IMAGE_SIZE), 286 - "kernel image bigger than KERNEL_IMAGE_SIZE") 287 - 288 - #ifdef CONFIG_SMP 289 - ASSERT((per_cpu__irq_stack_union == 0), 290 - "irq_stack_union is not at start of per-cpu area"); 291 - #endif 292 - 293 - #ifdef CONFIG_KEXEC 294 - #include <asm/kexec.h> 295 - 296 - ASSERT(kexec_control_code_size <= KEXEC_CONTROL_CODE_MAX_SIZE, 297 - "kexec control code size is too big") 298 - #endif
+8
kernel/sysctl.c
··· 731 731 }, 732 732 { 733 733 .ctl_name = CTL_UNNUMBERED, 734 + .procname = "bootloader_version", 735 + .data = &bootloader_version, 736 + .maxlen = sizeof (int), 737 + .mode = 0444, 738 + .proc_handler = &proc_dointvec, 739 + }, 740 + { 741 + .ctl_name = CTL_UNNUMBERED, 734 742 .procname = "kstack_depth_to_print", 735 743 .data = &kstack_depth_to_print, 736 744 .maxlen = sizeof(int),
+20 -6
scripts/Makefile.lib
··· 188 188 # --------------------------------------------------------------------------- 189 189 190 190 quiet_cmd_gzip = GZIP $@ 191 - cmd_gzip = gzip -f -9 < $< > $@ 191 + cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -f -9 > $@) || \ 192 + (rm -f $@ ; false) 192 193 193 194 194 195 # Bzip2 195 196 # --------------------------------------------------------------------------- 196 197 197 - # Bzip2 does not include size in file... so we have to fake that 198 - size_append=$(CONFIG_SHELL) $(srctree)/scripts/bin_size 198 + # Bzip2 and LZMA do not include size in file... so we have to fake that; 199 + # append the size as a 32-bit littleendian number as gzip does. 200 + size_append = echo -ne $(shell \ 201 + dec_size=0; \ 202 + for F in $1; do \ 203 + fsize=$$(stat -c "%s" $$F); \ 204 + dec_size=$$(expr $$dec_size + $$fsize); \ 205 + done; \ 206 + printf "%08x" $$dec_size | \ 207 + sed 's/\(..\)\(..\)\(..\)\(..\)/\\\\x\4\\\\x\3\\\\x\2\\\\x\1/g' \ 208 + ) 199 209 200 - quiet_cmd_bzip2 = BZIP2 $@ 201 - cmd_bzip2 = (bzip2 -9 < $< && $(size_append) $<) > $@ || (rm -f $@ ; false) 210 + quiet_cmd_bzip2 = BZIP2 $@ 211 + cmd_bzip2 = (cat $(filter-out FORCE,$^) | \ 212 + bzip2 -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \ 213 + (rm -f $@ ; false) 202 214 203 215 # Lzma 204 216 # --------------------------------------------------------------------------- 205 217 206 218 quiet_cmd_lzma = LZMA $@ 207 - cmd_lzma = (lzma -9 -c $< && $(size_append) $<) >$@ || (rm -f $@ ; false) 219 + cmd_lzma = (cat $(filter-out FORCE,$^) | \ 220 + lzma -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \ 221 + (rm -f $@ ; false)
-10
scripts/bin_size
··· 1 - #!/bin/sh 2 - 3 - if [ $# = 0 ] ; then 4 - echo Usage: $0 file 5 - fi 6 - 7 - size_dec=`stat -c "%s" $1` 8 - size_hex_echo_string=`printf "%08x" $size_dec | 9 - sed 's/\(..\)\(..\)\(..\)\(..\)/\\\\x\4\\\\x\3\\\\x\2\\\\x\1/g'` 10 - /bin/echo -ne $size_hex_echo_string