Commit 8bd93ca7 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'x86-fixes-for-linus' of...

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

* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86, gart: fix gart detection for Fam11h CPUs
  x86: 64 bit print out absent pages num too
  x86, kdump: fix invalid access on i386 sparsemem
  x86: fix APIC_DEBUG with inquire_remote_apic
  x86: AMD microcode patch loader author update
  x86: microcode patch loader author update
  mailmap: add Peter Oruba
  x86, bts: improve help text for BTS config
  doc/x86: fix doc subdirs
parents 7f82f000 87c6f401
...@@ -80,6 +80,8 @@ Nguyen Anh Quynh <aquynh@gmail.com> ...@@ -80,6 +80,8 @@ Nguyen Anh Quynh <aquynh@gmail.com>
Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Patrick Mochel <mochel@digitalimplant.org> Patrick Mochel <mochel@digitalimplant.org>
Peter A Jonsson <pj@ludd.ltu.se> Peter A Jonsson <pj@ludd.ltu.se>
Peter Oruba <peter@oruba.de>
Peter Oruba <peter.oruba@amd.com>
Praveen BP <praveenbp@ti.com> Praveen BP <praveenbp@ti.com>
Rajesh Shah <rajesh.shah@intel.com> Rajesh Shah <rajesh.shah@intel.com>
Ralf Baechle <ralf@linux-mips.org> Ralf Baechle <ralf@linux-mips.org>
......
...@@ -172,7 +172,7 @@ i2c/ ...@@ -172,7 +172,7 @@ i2c/
- directory with info about the I2C bus/protocol (2 wire, kHz speed). - directory with info about the I2C bus/protocol (2 wire, kHz speed).
i2o/ i2o/
- directory with info about the Linux I2O subsystem. - directory with info about the Linux I2O subsystem.
i386/ x86/i386/
- directory with info about Linux on Intel 32 bit architecture. - directory with info about Linux on Intel 32 bit architecture.
ia64/ ia64/
- directory with info about Linux on Intel 64 bit architecture. - directory with info about Linux on Intel 64 bit architecture.
...@@ -382,7 +382,7 @@ w1/ ...@@ -382,7 +382,7 @@ w1/
- directory with documents regarding the 1-wire (w1) subsystem. - directory with documents regarding the 1-wire (w1) subsystem.
watchdog/ watchdog/
- how to auto-reboot Linux if it has "fallen and can't get up". ;-) - how to auto-reboot Linux if it has "fallen and can't get up". ;-)
x86_64/ x86/x86_64/
- directory with info on Linux support for AMD x86-64 (Hammer) machines. - directory with info on Linux support for AMD x86-64 (Hammer) machines.
zorro.txt zorro.txt
- info on writing drivers for Zorro bus devices found on Amigas. - info on writing drivers for Zorro bus devices found on Amigas.
...@@ -100,7 +100,7 @@ parameter is applicable: ...@@ -100,7 +100,7 @@ parameter is applicable:
X86-32 X86-32, aka i386 architecture is enabled. X86-32 X86-32, aka i386 architecture is enabled.
X86-64 X86-64 architecture is enabled. X86-64 X86-64 architecture is enabled.
More X86-64 boot options can be found in More X86-64 boot options can be found in
Documentation/x86_64/boot-options.txt . Documentation/x86/x86_64/boot-options.txt .
X86 Either 32bit or 64bit x86 (same as X86-32+X86-64) X86 Either 32bit or 64bit x86 (same as X86-32+X86-64)
In addition, the following text indicates that the option: In addition, the following text indicates that the option:
...@@ -112,10 +112,10 @@ In addition, the following text indicates that the option: ...@@ -112,10 +112,10 @@ In addition, the following text indicates that the option:
Parameters denoted with BOOT are actually interpreted by the boot Parameters denoted with BOOT are actually interpreted by the boot
loader, and have no meaning to the kernel directly. loader, and have no meaning to the kernel directly.
Do not modify the syntax of boot loader parameters without extreme Do not modify the syntax of boot loader parameters without extreme
need or coordination with <Documentation/i386/boot.txt>. need or coordination with <Documentation/x86/i386/boot.txt>.
There are also arch-specific kernel-parameters not documented here. There are also arch-specific kernel-parameters not documented here.
See for example <Documentation/x86_64/boot-options.txt>. See for example <Documentation/x86/x86_64/boot-options.txt>.
Note that ALL kernel parameters listed below are CASE SENSITIVE, and that Note that ALL kernel parameters listed below are CASE SENSITIVE, and that
a trailing = on the name of any parameter states that that parameter will a trailing = on the name of any parameter states that that parameter will
...@@ -1222,7 +1222,7 @@ and is between 256 and 4096 characters. It is defined in the file ...@@ -1222,7 +1222,7 @@ and is between 256 and 4096 characters. It is defined in the file
mce [X86-32] Machine Check Exception mce [X86-32] Machine Check Exception
mce=option [X86-64] See Documentation/x86_64/boot-options.txt mce=option [X86-64] See Documentation/x86/x86_64/boot-options.txt
md= [HW] RAID subsystems devices and level md= [HW] RAID subsystems devices and level
See Documentation/md.txt. See Documentation/md.txt.
...@@ -1728,7 +1728,7 @@ and is between 256 and 4096 characters. It is defined in the file ...@@ -1728,7 +1728,7 @@ and is between 256 and 4096 characters. It is defined in the file
See Documentation/paride.txt. See Documentation/paride.txt.
pirq= [SMP,APIC] Manual mp-table setup pirq= [SMP,APIC] Manual mp-table setup
See Documentation/i386/IO-APIC.txt. See Documentation/x86/i386/IO-APIC.txt.
plip= [PPT,NET] Parallel port network link plip= [PPT,NET] Parallel port network link
Format: { parport<nr> | timid | 0 } Format: { parport<nr> | timid | 0 }
...@@ -2343,7 +2343,7 @@ and is between 256 and 4096 characters. It is defined in the file ...@@ -2343,7 +2343,7 @@ and is between 256 and 4096 characters. It is defined in the file
See Documentation/fb/modedb.txt. See Documentation/fb/modedb.txt.
vga= [BOOT,X86-32] Select a particular video mode vga= [BOOT,X86-32] Select a particular video mode
See Documentation/i386/boot.txt and See Documentation/x86/i386/boot.txt and
Documentation/svga.txt. Documentation/svga.txt.
Use vga=ask for menu. Use vga=ask for menu.
This is actually a boot loader parameter; the value is This is actually a boot loader parameter; the value is
......
...@@ -402,7 +402,7 @@ static unsigned long load_bzimage(int fd) ...@@ -402,7 +402,7 @@ static unsigned long load_bzimage(int fd)
void *p = from_guest_phys(0x100000); void *p = from_guest_phys(0x100000);
/* Go back to the start of the file and read the header. It should be /* Go back to the start of the file and read the header. It should be
* a Linux boot header (see Documentation/i386/boot.txt) */ * a Linux boot header (see Documentation/x86/i386/boot.txt) */
lseek(fd, 0, SEEK_SET); lseek(fd, 0, SEEK_SET);
read(fd, &boot, sizeof(boot)); read(fd, &boot, sizeof(boot));
......
...@@ -35,7 +35,7 @@ APICs ...@@ -35,7 +35,7 @@ APICs
nolapic Don't use the local APIC (alias for i386 compatibility) nolapic Don't use the local APIC (alias for i386 compatibility)
pirq=... See Documentation/i386/IO-APIC.txt pirq=... See Documentation/x86/i386/IO-APIC.txt
noapictimer Don't set up the APIC timer noapictimer Don't set up the APIC timer
...@@ -139,7 +139,7 @@ Non Executable Mappings ...@@ -139,7 +139,7 @@ Non Executable Mappings
SMP SMP
additional_cpus=NUM Allow NUM more CPUs for hotplug additional_cpus=NUM Allow NUM more CPUs for hotplug
(defaults are specified by the BIOS, see Documentation/x86_64/cpu-hotplug-spec) (defaults are specified by the BIOS, see Documentation/x86/x86_64/cpu-hotplug-spec)
NUMA NUMA
......
...@@ -10,7 +10,7 @@ amount of system memory that are available to a certain class of tasks. ...@@ -10,7 +10,7 @@ amount of system memory that are available to a certain class of tasks.
For more information on the features of cpusets, see Documentation/cpusets.txt. For more information on the features of cpusets, see Documentation/cpusets.txt.
There are a number of different configurations you can use for your needs. For There are a number of different configurations you can use for your needs. For
more information on the numa=fake command line option and its various ways of more information on the numa=fake command line option and its various ways of
configuring fake nodes, see Documentation/x86_64/boot-options.txt. configuring fake nodes, see Documentation/x86/x86_64/boot-options.txt.
For the purposes of this introduction, we'll assume a very primitive NUMA For the purposes of this introduction, we'll assume a very primitive NUMA
emulation setup of "numa=fake=4*512,". This will split our system memory into emulation setup of "numa=fake=4*512,". This will split our system memory into
......
...@@ -513,19 +513,19 @@ config CPU_SUP_UMC_32 ...@@ -513,19 +513,19 @@ config CPU_SUP_UMC_32
If unsure, say N. If unsure, say N.
config X86_DS config X86_DS
bool "Debug Store support" def_bool X86_PTRACE_BTS
default y depends on X86_DEBUGCTLMSR
help
Add support for Debug Store.
This allows the kernel to provide a memory buffer to the hardware
to store various profiling and tracing events.
config X86_PTRACE_BTS config X86_PTRACE_BTS
bool "ptrace interface to Branch Trace Store" bool "Branch Trace Store"
default y default y
depends on (X86_DS && X86_DEBUGCTLMSR) depends on X86_DEBUGCTLMSR
help help
Add a ptrace interface to allow collecting an execution trace This adds a ptrace interface to the hardware's branch trace store.
of the traced task.
This collects control flow changes in a (cyclic) buffer and allows Debuggers may use it to collect an execution trace of the debugged
debuggers to fill in the gaps and show an execution trace of the debuggee. application in order to answer the question 'how did I get here?'.
Debuggers may trace user mode as well as kernel mode.
Say Y unless there is no application development on this machine
and you want to save a small amount of code size.
...@@ -50,10 +50,9 @@ static inline void restore_NMI_vector(unsigned short *high, unsigned short *low) ...@@ -50,10 +50,9 @@ static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
{ {
} }
#if APIC_DEBUG #define inquire_remote_apic(apicid) do { \
#define inquire_remote_apic(apicid) __inquire_remote_apic(apicid) if (apic_verbosity >= APIC_DEBUG) \
#else __inquire_remote_apic(apicid); \
#define inquire_remote_apic(apicid) {} } while (0)
#endif
#endif /* __ASM_MACH_WAKECPU_H */ #endif /* __ASM_MACH_WAKECPU_H */
...@@ -33,10 +33,9 @@ static inline void restore_NMI_vector(unsigned short *high, unsigned short *low) ...@@ -33,10 +33,9 @@ static inline void restore_NMI_vector(unsigned short *high, unsigned short *low)
{ {
} }
#if APIC_DEBUG #define inquire_remote_apic(apicid) do { \
#define inquire_remote_apic(apicid) __inquire_remote_apic(apicid) if (apic_verbosity >= APIC_DEBUG) \
#else __inquire_remote_apic(apicid); \
#define inquire_remote_apic(apicid) {} } while (0)
#endif
#endif /* _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H */ #endif /* _ASM_X86_MACH_DEFAULT_MACH_WAKECPU_H */
...@@ -18,7 +18,6 @@ static u32 *flush_words; ...@@ -18,7 +18,6 @@ static u32 *flush_words;
struct pci_device_id k8_nb_ids[] = { struct pci_device_id k8_nb_ids[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MISC) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MISC) },
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_MISC) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_MISC) },
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_11H_NB_MISC) },
{} {}
}; };
EXPORT_SYMBOL(k8_nb_ids); EXPORT_SYMBOL(k8_nb_ids);
......
...@@ -162,7 +162,10 @@ void machine_kexec(struct kimage *image) ...@@ -162,7 +162,10 @@ void machine_kexec(struct kimage *image)
page_list[VA_PTE_0] = (unsigned long)kexec_pte0; page_list[VA_PTE_0] = (unsigned long)kexec_pte0;
page_list[PA_PTE_1] = __pa(kexec_pte1); page_list[PA_PTE_1] = __pa(kexec_pte1);
page_list[VA_PTE_1] = (unsigned long)kexec_pte1; page_list[VA_PTE_1] = (unsigned long)kexec_pte1;
page_list[PA_SWAP_PAGE] = (page_to_pfn(image->swap_page) << PAGE_SHIFT);
if (image->type == KEXEC_TYPE_DEFAULT)
page_list[PA_SWAP_PAGE] = (page_to_pfn(image->swap_page)
<< PAGE_SHIFT);
/* The segment registers are funny things, they have both a /* The segment registers are funny things, they have both a
* visible and an invisible part. Whenever the visible part is * visible and an invisible part. Whenever the visible part is
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#include <asm/microcode.h> #include <asm/microcode.h>
MODULE_DESCRIPTION("AMD Microcode Update Driver"); MODULE_DESCRIPTION("AMD Microcode Update Driver");
MODULE_AUTHOR("Peter Oruba <peter.oruba@amd.com>"); MODULE_AUTHOR("Peter Oruba");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
#define UCODE_MAGIC 0x00414d44 #define UCODE_MAGIC 0x00414d44
......
...@@ -480,8 +480,8 @@ static int __init microcode_init(void) ...@@ -480,8 +480,8 @@ static int __init microcode_init(void)
printk(KERN_INFO printk(KERN_INFO
"Microcode Update Driver: v" MICROCODE_VERSION "Microcode Update Driver: v" MICROCODE_VERSION
" <tigran@aivazian.fsnet.co.uk>" " <tigran@aivazian.fsnet.co.uk>,"
" <peter.oruba@amd.com>\n"); " Peter Oruba\n");
return 0; return 0;
} }
......
...@@ -744,7 +744,7 @@ void __init gart_iommu_init(void) ...@@ -744,7 +744,7 @@ void __init gart_iommu_init(void)
long i; long i;
if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0) { if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0) {
printk(KERN_INFO "PCI-GART: No AMD northbridge found.\n"); printk(KERN_INFO "PCI-GART: No AMD GART found.\n");
return; return;
} }
......
...@@ -884,6 +884,7 @@ static struct kcore_list kcore_mem, kcore_vmalloc, kcore_kernel, ...@@ -884,6 +884,7 @@ static struct kcore_list kcore_mem, kcore_vmalloc, kcore_kernel,
void __init mem_init(void) void __init mem_init(void)
{ {
long codesize, reservedpages, datasize, initsize; long codesize, reservedpages, datasize, initsize;
unsigned long absent_pages;
start_periodic_check_for_corruption(); start_periodic_check_for_corruption();
...@@ -899,8 +900,9 @@ void __init mem_init(void) ...@@ -899,8 +900,9 @@ void __init mem_init(void)
#else #else
totalram_pages = free_all_bootmem(); totalram_pages = free_all_bootmem();
#endif #endif
reservedpages = max_pfn - totalram_pages -
absent_pages_in_range(0, max_pfn); absent_pages = absent_pages_in_range(0, max_pfn);
reservedpages = max_pfn - totalram_pages - absent_pages;
after_bootmem = 1; after_bootmem = 1;
codesize = (unsigned long) &_etext - (unsigned long) &_text; codesize = (unsigned long) &_etext - (unsigned long) &_text;
...@@ -917,10 +919,11 @@ void __init mem_init(void) ...@@ -917,10 +919,11 @@ void __init mem_init(void)
VSYSCALL_END - VSYSCALL_START); VSYSCALL_END - VSYSCALL_START);
printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, " printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, "
"%ldk reserved, %ldk data, %ldk init)\n", "%ldk absent, %ldk reserved, %ldk data, %ldk init)\n",
(unsigned long) nr_free_pages() << (PAGE_SHIFT-10), (unsigned long) nr_free_pages() << (PAGE_SHIFT-10),
max_pfn << (PAGE_SHIFT-10), max_pfn << (PAGE_SHIFT-10),
codesize >> 10, codesize >> 10,
absent_pages << (PAGE_SHIFT-10),
reservedpages << (PAGE_SHIFT-10), reservedpages << (PAGE_SHIFT-10),
datasize >> 10, datasize >> 10,
initsize >> 10); initsize >> 10);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment