23 Feb, 2013

1 commit

  • Pull x86 microcode loading update from Peter Anvin:
    "This patchset lets us update the CPU microcode very, very early in
    initialization if the BIOS fails to do so (never happens, right?)

    This is handy for dealing with things like the Atom erratum where we
    have to run without PSE because microcode loading happens too late.

    As I mentioned in the x86/mm push request it depends on that
    infrastructure but it is otherwise a standalone feature."

    * 'x86/microcode' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/Kconfig: Make early microcode loading a configuration feature
    x86/mm/init.c: Copy ucode from initrd image to kernel memory
    x86/head64.c: Early update ucode in 64-bit
    x86/head_32.S: Early update ucode in 32-bit
    x86/microcode_intel_early.c: Early update ucode on Intel's CPU
    x86/tlbflush.h: Define __native_flush_tlb_global_irq_disabled()
    x86/microcode_intel_lib.c: Early update ucode on Intel's CPU
    x86/microcode_core_early.c: Define interfaces for early loading ucode
    x86/common.c: load ucode in 64 bit or show loading ucode info in 32 bit on AP
    x86/common.c: Make have_cpuid_p() a global function
    x86/microcode_intel.h: Define functions and macros for early loading ucode
    x86, doc: Documentation for early microcode loading

    Linus Torvalds
     

22 Feb, 2013

2 commits

  • Pull x86 mm changes from Peter Anvin:
    "This is a huge set of several partly interrelated (and concurrently
    developed) changes, which is why the branch history is messier than
    one would like.

    The *really* big items are two humonguous patchsets mostly developed
    by Yinghai Lu at my request, which completely revamps the way we
    create initial page tables. In particular, rather than estimating how
    much memory we will need for page tables and then build them into that
    memory -- a calculation that has shown to be incredibly fragile -- we
    now build them (on 64 bits) with the aid of a "pseudo-linear mode" --
    a #PF handler which creates temporary page tables on demand.

    This has several advantages:

    1. It makes it much easier to support things that need access to data
    very early (a followon patchset uses this to load microcode way
    early in the kernel startup).

    2. It allows the kernel and all the kernel data objects to be invoked
    from above the 4 GB limit. This allows kdump to work on very large
    systems.

    3. It greatly reduces the difference between Xen and native (Xen's
    equivalent of the #PF handler are the temporary page tables created
    by the domain builder), eliminating a bunch of fragile hooks.

    The patch series also gets us a bit closer to W^X.

    Additional work in this pull is the 64-bit get_user() work which you
    were also involved with, and a bunch of cleanups/speedups to
    __phys_addr()/__pa()."

    * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (105 commits)
    x86, mm: Move reserving low memory later in initialization
    x86, doc: Clarify the use of asm("%edx") in uaccess.h
    x86, mm: Redesign get_user with a __builtin_choose_expr hack
    x86: Be consistent with data size in getuser.S
    x86, mm: Use a bitfield to mask nuisance get_user() warnings
    x86/kvm: Fix compile warning in kvm_register_steal_time()
    x86-32: Add support for 64bit get_user()
    x86-32, mm: Remove reference to alloc_remap()
    x86-32, mm: Remove reference to resume_map_numa_kva()
    x86-32, mm: Rip out x86_32 NUMA remapping code
    x86/numa: Use __pa_nodebug() instead
    x86: Don't panic if can not alloc buffer for swiotlb
    mm: Add alloc_bootmem_low_pages_nopanic()
    x86, 64bit, mm: hibernate use generic mapping_init
    x86, 64bit, mm: Mark data/bss/brk to nx
    x86: Merge early kernel reserve for 32bit and 64bit
    x86: Add Crash kernel low reservation
    x86, kdump: Remove crashkernel range find limit for 64bit
    memblock: Add memblock_mem_size()
    x86, boot: Not need to check setup_header version for setup_data
    ...

    Linus Torvalds
     
  • Pull trivial tree from Jiri Kosina:
    "Assorted tiny fixes queued in trivial tree"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (22 commits)
    DocBook: update EXPORT_SYMBOL entry to point at export.h
    Documentation: update top level 00-INDEX file with new additions
    ARM: at91/ide: remove unsused at91-ide Kconfig entry
    percpu_counter.h: comment code for better readability
    x86, efi: fix comment typo in head_32.S
    IB: cxgb3: delay freeing mem untill entirely done with it
    net: mvneta: remove unneeded version.h include
    time: x86: report_lost_ticks doesn't exist any more
    pcmcia: avoid static analysis complaint about use-after-free
    fs/jfs: Fix typo in comment : 'how may' -> 'how many'
    of: add missing documentation for of_platform_populate()
    btrfs: remove unnecessary cur_trans set before goto loop in join_transaction
    sound: soc: Fix typo in sound/codecs
    treewide: Fix typo in various drivers
    btrfs: fix comment typos
    Update ibmvscsi module name in Kconfig.
    powerpc: fix typo (utilties -> utilities)
    of: fix spelling mistake in comment
    h8300: Fix home page URL in h8300/README
    xtensa: Fix home page URL in Kconfig
    ...

    Linus Torvalds
     

09 Feb, 2013

1 commit

  • OVMF (an implementation of UEFI based on TianoCore used in virtual
    environments) now has the ability to boot Linux natively; this is used
    for "qemu -kernel" and similar things in a UEFI environment.

    Accordingly, assign it a bootloader ID.

    Signed-off-by: H. Peter Anvin
    Cc: David Woodhouse

    H. Peter Anvin
     

01 Feb, 2013

2 commits


30 Jan, 2013

1 commit

  • Now 64bit entry is fixed on 0x200, can not be changed anymore.

    Update the comments to reflect that.

    Also put info about it in boot.txt

    -v2: fix some grammar error

    Signed-off-by: Yinghai Lu
    Link: http://lkml.kernel.org/r/1359058816-7615-27-git-send-email-yinghai@kernel.org
    Cc: Rob Landley
    Cc: Matt Fleming
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     

29 Jan, 2013

1 commit


28 Jan, 2013

1 commit

  • Define the 2.12 bzImage boot protocol: add xloadflags and additional
    fields to allow the command line, initramfs and struct boot_params to
    live above the 4 GiB mark.

    The xloadflags now communicates if this is a 64-bit kernel with the
    legacy 64-bit entry point and which of the EFI handover entry points
    are supported.

    Avoid adding new read flags to loadflags because of claimed
    bootloaders testing the whole byte for == 1 to determine bzImageness
    at least until the issue can be researched further.

    This is based on patches by Yinghai Lu and David Woodhouse.

    Originally-by: Yinghai Lu
    Originally-by: David Woodhouse
    Acked-by: Yinghai Lu
    Acked-by: David Woodhouse
    Acked-by: Matt Fleming
    Signed-off-by: H. Peter Anvin
    Link: http://lkml.kernel.org/r/1359058816-7615-26-git-send-email-yinghai@kernel.org
    Cc: Rob Landley
    Cc: Gokul Caushik
    Cc: Josh Triplett
    Cc: Joe Millenbach

    H. Peter Anvin
     

23 Jan, 2013

1 commit


20 Dec, 2012

1 commit


13 Dec, 2012

2 commits


26 Oct, 2012

1 commit


28 Sep, 2012

1 commit

  • The ACPI spec doesn't provide for a way for the bios to pass down
    recommended thresholds to the OS on a _per-bank_ basis. This patch adds
    a new boot option, which if passed, tells Linux to use CMCI thresholds
    set by the bios.

    As fail-safe, we initialize threshold to 1 if some banks have not been
    initialized by the bios and warn the user.

    Signed-off-by: Naveen N. Rao
    Signed-off-by: Tony Luck

    Naveen N. Rao
     

27 Jul, 2012

1 commit

  • Pul x86/efi changes from Ingo Molnar:
    "This tree adds an EFI bootloader handover protocol, which, once
    supported on the bootloader side, will make bootup faster and might
    result in simpler bootloaders.

    The other change activates the EFI wall clock time accessors on x86-64
    as well, instead of the legacy RTC readout."

    * 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, efi: Handover Protocol
    x86-64/efi: Use EFI to deal with platform wall clock

    Linus Torvalds
     

24 Jul, 2012

1 commit

  • Assign a bootloader ID for Sebastian Plotz' "Minimal Linux Bootloader"
    (http://sebastian-plotz.blogspot.de). Sebastian has agreed to make
    this the pilot for the use of extended boot loader IDs, so this is
    assigned version ID 0x11 (avoid assigning 0x10 for now to catch bugs
    with people putting E in the primary ID but leaving the extended ID as
    zero.)

    Signed-off-by: H. Peter Anvin
    Cc: Sebastian Plotz
    Link: http://lkml.kernel.org/n/tip-nq318h0okuaem8x9dpv9854k@git.kernel.org

    H. Peter Anvin
     

21 Jul, 2012

1 commit

  • As things currently stand, traditional EFI boot loaders and the EFI
    boot stub are carrying essentially the same initialisation code
    required to setup an EFI machine for booting a kernel. There's really
    no need to have this code in two places and the hope is that, with
    this new protocol, initialisation and booting of the kernel can be
    left solely to the kernel's EFI boot stub. The responsibilities of the
    boot loader then become,

    o Loading the kernel image from boot media

    File system code still needs to be carried by boot loaders for the
    scenario where the kernel and initrd files reside on a file system
    that the EFI firmware doesn't natively understand, such as ext4, etc.

    o Providing a user interface

    Boot loaders still need to display any menus/interfaces, for example
    to allow the user to select from a list of kernels.

    Bump the boot protocol number because we added the 'handover_offset'
    field to indicate the location of the handover protocol entry point.

    Cc: H. Peter Anvin
    Cc: Peter Jones
    Cc: Ingo Molnar
    Signed-off-by: Matt Fleming
    Acked-and-Tested-by: Matthew Garrett
    Link: http://lkml.kernel.org/r/1342689828-16815-1-git-send-email-matt@console-pimps.org
    Signed-off-by: H. Peter Anvin

    Matt Fleming
     

02 Jun, 2012

1 commit

  • Since we can't expect every user to read the EFI boot stub code it
    seems prudent to have a couple of paragraphs explaining what it is and
    how it works.

    The "initrd=" option in particular is tricky because it only
    understands absolute EFI-style paths (backslashes as directory
    separators), and until now this hasn't been documented anywhere. This
    has tripped up a couple of users.

    Cc: Matthew Garrett
    Cc: Randy Dunlap
    Signed-off-by: Matt Fleming
    Link: http://lkml.kernel.org/r/1331907517-3985-4-git-send-email-matt@console-pimps.org
    Signed-off-by: H. Peter Anvin

    Matt Fleming
     

16 Aug, 2011

1 commit

  • Commit 3ae36655b97a03fa1decf72f04078ef945647c1a (x86-64: Rework vsyscall
    emulation and add vsyscall= parameter) removed the special use of the
    0xcc IDT vector.

    Remove it from Documentation/x86/entry_64.txt also.

    Signed-off-by: Cesar Eduardo Barros
    Acked-by: Andy Lutomirski
    Link: http://lkml.kernel.org/r/1313447210-9149-1-git-send-email-cesarb@cesarb.net
    Signed-off-by: H. Peter Anvin

    Cesar Eduardo Barros
     

23 Jul, 2011

1 commit

  • * 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86-64, vdso: Do not allocate memory for the vDSO
    clocksource: Change __ARCH_HAS_CLOCKSOURCE_DATA to a CONFIG option
    x86, vdso: Drop now wrong comment
    Document the vDSO and add a reference parser
    ia64: Replace clocksource.fsys_mmio with generic arch data
    x86-64: Move vread_tsc and vread_hpet into the vDSO
    clocksource: Replace vread with generic arch data
    x86-64: Add --no-undefined to vDSO build
    x86-64: Allow alternative patching in the vDSO
    x86: Make alternative instruction pointers relative
    x86-64: Improve vsyscall emulation CS and RIP handling
    x86-64: Emulate legacy vsyscalls
    x86-64: Fill unused parts of the vsyscall page with 0xcc
    x86-64: Remove vsyscall number 3 (venosys)
    x86-64: Map the HPET NX
    x86-64: Remove kernel.vsyscall64 sysctl
    x86-64: Give vvars their own page
    x86-64: Document some of entry_64.S
    x86-64: Fix alignment of jiffies variable

    Linus Torvalds
     

13 Jul, 2011

1 commit

  • The real-mode kernel header init_size field is located at 0x260 per the field
    listing in th e"REAL-MODE KERNEL HEADER" section. It is listed as 0x25c in
    the "DETAILS OF HEADER FIELDS" section, which overlaps with pref_address.
    Correct the details listing to 0x260.

    Signed-off-by: Darren Hart
    Link: http://lkml.kernel.org/r/541cf88e2dfe5b8186d8b96b136d892e769a68c1.1310441260.git.dvhart@linux.intel.com
    CC: H. Peter Anvin
    Signed-off-by: H. Peter Anvin

    Darren Hart
     

06 Jun, 2011

1 commit

  • Signed-off-by: Andy Lutomirski
    Cc: Jesper Juhl
    Cc: Borislav Petkov
    Cc: Linus Torvalds
    Cc: Arjan van de Ven
    Cc: Jan Beulich
    Cc: richard -rw- weinberger
    Cc: Mikael Pettersson
    Cc: Andi Kleen
    Cc: Brian Gerst
    Cc: Louis Rilling
    Cc: Valdis.Kletnieks@vt.edu
    Cc: pageexec@freemail.hu
    Link: http://lkml.kernel.org/r/fc134867cc550977cc996866129e11a16ba0f9ea.1307292171.git.luto@mit.edu
    Signed-off-by: Ingo Molnar

    Andy Lutomirski
     

10 May, 2011

1 commit


23 Mar, 2011

1 commit


18 Mar, 2011

1 commit


14 Jan, 2011

1 commit

  • This integrates the XZ decompression code to the x86 pre-boot code.

    mkpiggy.c is updated to reserve about 32 KiB more buffer safety margin for
    kernel decompression. It is done unconditionally for all decompressors to
    keep the code simpler.

    The XZ decompressor needs around 30 KiB of heap, so the heap size is
    increased to 32 KiB on both x86-32 and x86-64.

    Documentation/x86/boot.txt is updated to list the XZ magic number.

    With the x86 BCJ filter in XZ, XZ-compressed x86 kernel tends to be a few
    percent smaller than the equivalent LZMA-compressed kernel.

    Signed-off-by: Lasse Collin
    Cc: "H. Peter Anvin"
    Cc: Alain Knaff
    Cc: Albin Tonnerre
    Cc: Phillip Lougher
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lasse Collin
     

12 Nov, 2010

1 commit


22 Oct, 2010

1 commit


29 Jun, 2010

1 commit

  • IRQ stacks provide much better safety against unexpected stack use from
    interrupts, at the minimal downside of slightly higher memory usage.
    Enable irq stacks also for the default 8k stack on 32-bit kernels to
    minimize the problem of stack overflows through interrupt activity.

    This is what the 64-bit kernel and various other architectures already do.

    Signed-off-by: Christoph Hellwig
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Christoph Hellwig
     

19 Jun, 2010

1 commit

  • Add support for saving OFW's cif, and later calling into it to run OFW
    commands. OFW remains resident in memory, living within virtual range
    0xff800000 - 0xffc00000. A single page directory entry points to the
    pgdir that OFW actually uses, so rather than saving the entire page
    table, we grab and install that one entry permanently in the kernel's
    page table.

    This is currently only used by the OLPC XO. Note that this particular
    calling convention breaks PAE and PAT, and so cannot be used on newer
    x86 hardware.

    Signed-off-by: Andres Salomon
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Andres Salomon
     

16 Feb, 2010

2 commits

  • Now that numa=fake=[MG] is implemented, it is possible to remove
    configurable node size support. The command-line parsing was already
    broken (numa=fake=*128, for example, would not work) and since fake nodes
    are now interleaved over physical nodes, this support is no longer
    required.

    Signed-off-by: David Rientjes
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    David Rientjes
     
  • numa=fake=N specifies the number of fake nodes, N, to partition the
    system into and then allocates them by interleaving over physical nodes.
    This requires knowledge of the system capacity when attempting to
    allocate nodes of a certain size: either very large nodes to benchmark
    scalability of code that operates on individual nodes, or very small
    nodes to find bugs in the VM.

    This patch introduces numa=fake=[MG] so it is possible to specify
    the size of each node to allocate. When used, nodes of the size
    specified will be allocated and interleaved over the set of physical
    nodes.

    FAKE_NODE_MIN_SIZE was also moved to the more-appropriate
    include/asm/numa_64.h.

    Signed-off-by: David Rientjes
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    David Rientjes
     

23 Sep, 2009

1 commit

  • Add missing information about requirements of using the EHCI usb debug
    controller as well as to mention you can use a debug controller other
    than the first one in the system.

    Signed-off-by: Jason Wessel
    Cc: Ingo Molnar
    Cc: Andrew Morton
    Cc: Yinghai Lu
    Cc: "Eric W. Biederman"
    Cc: Alan Stern
    Cc: Sarah Sharp
    Cc: Randy Dunlap
    Signed-off-by: Greg Kroah-Hartman

    Jason Wessel
     

19 Sep, 2009

1 commit

  • …el/git/tip/linux-2.6-tip

    * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (38 commits)
    x86: Move get/set_wallclock to x86_platform_ops
    x86: platform: Fix section annotations
    x86: apic namespace cleanup
    x86: Distangle ioapic and i8259
    x86: Add Moorestown early detection
    x86: Add hardware_subarch ID for Moorestown
    x86: Add early platform detection
    x86: Move tsc_init to late_time_init
    x86: Move tsc_calibration to x86_init_ops
    x86: Replace the now identical time_32/64.c by time.c
    x86: time_32/64.c unify profile_pc
    x86: Move calibrate_cpu to tsc.c
    x86: Make timer setup and global variables the same in time_32/64.c
    x86: Remove mca bus ifdef from timer interrupt
    x86: Simplify timer_ack magic in time_32.c
    x86: Prepare unification of time_32/64.c
    x86: Remove do_timer hook
    x86: Add timer_init to x86_init_ops
    x86: Move percpu clockevents setup to x86_init_ops
    x86: Move xen_post_allocator_init into xen_pagetable_setup_done
    ...

    Fix up conflicts in arch/x86/include/asm/io_apic.h

    Linus Torvalds
     

31 Aug, 2009

1 commit


22 Jul, 2009

1 commit

  • This patch adds kernel configuration and boot support for Intel Trusted
    Execution Technology (Intel TXT).

    Intel's technology for safer computing, Intel Trusted Execution
    Technology (Intel TXT), defines platform-level enhancements that
    provide the building blocks for creating trusted platforms.

    Intel TXT was formerly known by the code name LaGrande Technology (LT).

    Intel TXT in Brief:
    o Provides dynamic root of trust for measurement (DRTM)
    o Data protection in case of improper shutdown
    o Measurement and verification of launched environment

    Intel TXT is part of the vPro(TM) brand and is also available some
    non-vPro systems. It is currently available on desktop systems based on
    the Q35, X38, Q45, and Q43 Express chipsets (e.g. Dell Optiplex 755, HP
    dc7800, etc.) and mobile systems based on the GM45, PM45, and GS45
    Express chipsets.

    For more information, see http://www.intel.com/technology/security/.
    This site also has a link to the Intel TXT MLE Developers Manual, which
    has been updated for the new released platforms.

    A much more complete description of how these patches support TXT, how to
    configure a system for it, etc. is in the Documentation/intel_txt.txt file
    in this patch.

    This patch provides the TXT support routines for complete functionality,
    documentation for TXT support and for the changes to the boot_params structure,
    and boot detection of a TXT launch. Attempts to shutdown (reboot, Sx) the system
    will result in platform resets; subsequent patches will support these shutdown modes
    properly.

    Documentation/intel_txt.txt | 210 +++++++++++++++++++++
    Documentation/x86/zero-page.txt | 1
    arch/x86/include/asm/bootparam.h | 3
    arch/x86/include/asm/fixmap.h | 3
    arch/x86/include/asm/tboot.h | 197 ++++++++++++++++++++
    arch/x86/kernel/Makefile | 1
    arch/x86/kernel/setup.c | 4
    arch/x86/kernel/tboot.c | 379 +++++++++++++++++++++++++++++++++++++++
    security/Kconfig | 30 +++
    9 files changed, 827 insertions(+), 1 deletion(-)

    Signed-off-by: Joseph Cihula
    Signed-off-by: Shane Wang
    Signed-off-by: Gang Wei
    Signed-off-by: H. Peter Anvin

    Joseph Cihula
     

11 Jul, 2009

1 commit

  • exception.txt only explains the code on x86, so it's better to
    move it into Documentation/x86 directory.

    And also rename it to exception-tables.txt which looks much
    more reasonable.

    This patch is on top of the previous one.

    Signed-off-by: WANG Cong
    Signed-off-by: Randy Dunlap
    Signed-off-by: Linus Torvalds

    Amerigo Wang
     

12 Jun, 2009

1 commit


11 Jun, 2009

1 commit

  • This patch introduces three boot options (no_cmci, dont_log_ce
    and ignore_ce) to control handling for corrected errors.

    The "mce=no_cmci" boot option disables the CMCI feature.

    Since CMCI is a new feature so having boot controls to disable
    it will be a help if the hardware is misbehaving.

    The "mce=dont_log_ce" boot option disables logging for corrected
    errors. All reported corrected errors will be cleared silently.
    This option will be useful if you never care about corrected
    errors.

    The "mce=ignore_ce" boot option disables features for corrected
    errors, i.e. polling timer and cmci. All corrected events are
    not cleared and kept in bank MSRs.

    Usually this disablement is not recommended, however it will be
    a help if there are some conflict with the BIOS or hardware
    monitoring applications etc., that clears corrected events in
    banks instead of OS.

    [ And trivial cleanup (space -> tab) for doc is included. ]

    Signed-off-by: Hidetoshi Seto
    Reviewed-by: Andi Kleen
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Hidetoshi Seto