You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6
* 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6: (231 commits) [PATCH] i386: Don't delete cpu_devs data to identify different x86 types in late_initcall [PATCH] i386: type may be unused [PATCH] i386: Some additional chipset register values validation. [PATCH] i386: Add missing !X86_PAE dependincy to the 2G/2G split. [PATCH] x86-64: Don't exclude asm-offsets.c in Documentation/dontdiff [PATCH] i386: avoid redundant preempt_disable in __unlazy_fpu [PATCH] i386: white space fixes in i387.h [PATCH] i386: Drop noisy e820 debugging printks [PATCH] x86-64: Fix allnoconfig error in genapic_flat.c [PATCH] x86-64: Shut up warnings for vfat compat ioctls on other file systems [PATCH] x86-64: Share identical video.S between i386 and x86-64 [PATCH] x86-64: Remove CONFIG_REORDER [PATCH] x86-64: Print type and size correctly for unknown compat ioctls [PATCH] i386: Remove copy_*_user BUG_ONs for (size < 0) [PATCH] i386: Little cleanups in smpboot.c [PATCH] x86-64: Don't enable NUMA for a single node in K8 NUMA scanning [PATCH] x86: Use RDTSCP for synchronous get_cycles if possible [PATCH] i386: Add X86_FEATURE_RDTSCP [PATCH] i386: Implement X86_FEATURE_SYNC_RDTSC on i386 [PATCH] i386: Implement alternative_io for i386 ... Fix up trivial conflict in include/linux/highmem.h manually. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
@@ -8,7 +8,7 @@ header-y += boot.h
|
||||
header-y += bootsetup.h
|
||||
header-y += debugreg.h
|
||||
header-y += ldt.h
|
||||
header-y += msr.h
|
||||
header-y += msr-index.h
|
||||
header-y += prctl.h
|
||||
header-y += ptrace-abi.h
|
||||
header-y += sigcontext32.h
|
||||
@@ -16,5 +16,7 @@ header-y += ucontext.h
|
||||
header-y += vsyscall32.h
|
||||
|
||||
unifdef-y += mce.h
|
||||
unifdef-y += msr.h
|
||||
unifdef-y += mtrr.h
|
||||
unifdef-y += vsyscall.h
|
||||
unifdef-y += const.h
|
||||
|
||||
@@ -16,6 +16,7 @@ struct alt_instr {
|
||||
u8 pad[5];
|
||||
};
|
||||
|
||||
extern void alternative_instructions(void);
|
||||
extern void apply_alternatives(struct alt_instr *start, struct alt_instr *end);
|
||||
|
||||
struct module;
|
||||
@@ -141,8 +142,8 @@ void apply_paravirt(struct paravirt_patch *start, struct paravirt_patch *end);
|
||||
static inline void
|
||||
apply_paravirt(struct paravirt_patch *start, struct paravirt_patch *end)
|
||||
{}
|
||||
#define __start_parainstructions NULL
|
||||
#define __stop_parainstructions NULL
|
||||
#define __parainstructions NULL
|
||||
#define __parainstructions_end NULL
|
||||
#endif
|
||||
|
||||
#endif /* _X86_64_ALTERNATIVE_H */
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define __ASM_APIC_H
|
||||
|
||||
#include <linux/pm.h>
|
||||
#include <linux/delay.h>
|
||||
#include <asm/fixmap.h>
|
||||
#include <asm/apicdef.h>
|
||||
#include <asm/system.h>
|
||||
@@ -47,11 +48,8 @@ static __inline unsigned int apic_read(unsigned long reg)
|
||||
return *((volatile unsigned int *)(APIC_BASE+reg));
|
||||
}
|
||||
|
||||
static __inline__ void apic_wait_icr_idle(void)
|
||||
{
|
||||
while (apic_read( APIC_ICR ) & APIC_ICR_BUSY)
|
||||
cpu_relax();
|
||||
}
|
||||
extern void apic_wait_icr_idle(void);
|
||||
extern unsigned int safe_apic_wait_icr_idle(void);
|
||||
|
||||
static inline void ack_APIC_irq(void)
|
||||
{
|
||||
@@ -83,7 +81,7 @@ extern void setup_secondary_APIC_clock (void);
|
||||
extern int APIC_init_uniprocessor (void);
|
||||
extern void disable_APIC_timer(void);
|
||||
extern void enable_APIC_timer(void);
|
||||
extern void clustered_apic_check(void);
|
||||
extern void setup_apic_routing(void);
|
||||
|
||||
extern void setup_APIC_extened_lvt(unsigned char lvt_off, unsigned char vector,
|
||||
unsigned char msg_type, unsigned char mask);
|
||||
|
||||
@@ -1,28 +1,6 @@
|
||||
/*
|
||||
* include/asm-x86_64/bugs.h
|
||||
*
|
||||
* Copyright (C) 1994 Linus Torvalds
|
||||
* Copyright (C) 2000 SuSE
|
||||
*
|
||||
* This is included by init/main.c to check for architecture-dependent bugs.
|
||||
*
|
||||
* Needs:
|
||||
* void check_bugs(void);
|
||||
*/
|
||||
#ifndef _ASM_X86_64_BUGS_H
|
||||
#define _ASM_X86_64_BUGS_H
|
||||
|
||||
#include <asm/processor.h>
|
||||
#include <asm/i387.h>
|
||||
#include <asm/msr.h>
|
||||
#include <asm/pda.h>
|
||||
void check_bugs(void);
|
||||
|
||||
extern void alternative_instructions(void);
|
||||
|
||||
static void __init check_bugs(void)
|
||||
{
|
||||
identify_cpu(&boot_cpu_data);
|
||||
#if !defined(CONFIG_SMP)
|
||||
printk("CPU: ");
|
||||
print_cpu_info(&boot_cpu_data);
|
||||
#endif
|
||||
alternative_instructions();
|
||||
}
|
||||
#endif /* _ASM_X86_64_BUGS_H */
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/* const.h: Macros for dealing with constants. */
|
||||
|
||||
#ifndef _X86_64_CONST_H
|
||||
#define _X86_64_CONST_H
|
||||
|
||||
/* Some constant macros are used in both assembler and
|
||||
* C code. Therefore we cannot annotate them always with
|
||||
* 'UL' and other type specificers unilaterally. We
|
||||
* use the following macros to deal with this.
|
||||
*/
|
||||
|
||||
#ifdef __ASSEMBLY__
|
||||
#define _AC(X,Y) X
|
||||
#else
|
||||
#define __AC(X,Y) (X##Y)
|
||||
#define _AC(X,Y) __AC(X,Y)
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* !(_X86_64_CONST_H) */
|
||||
@@ -107,16 +107,6 @@ static inline void set_ldt_desc(unsigned cpu, void *addr, int size)
|
||||
DESC_LDT, size * 8 - 1);
|
||||
}
|
||||
|
||||
static inline void set_seg_base(unsigned cpu, int entry, void *base)
|
||||
{
|
||||
struct desc_struct *d = &cpu_gdt(cpu)[entry];
|
||||
u32 addr = (u32)(u64)base;
|
||||
BUG_ON((u64)base >> 32);
|
||||
d->base0 = addr & 0xffff;
|
||||
d->base1 = (addr >> 16) & 0xff;
|
||||
d->base2 = (addr >> 24) & 0xff;
|
||||
}
|
||||
|
||||
#define LDT_entry_a(info) \
|
||||
((((info)->base_addr & 0x0000ffff) << 16) | ((info)->limit & 0x0ffff))
|
||||
/* Don't allow setting of the lm bit. It is useless anyways because
|
||||
@@ -145,16 +135,13 @@ static inline void set_seg_base(unsigned cpu, int entry, void *base)
|
||||
(info)->useable == 0 && \
|
||||
(info)->lm == 0)
|
||||
|
||||
#if TLS_SIZE != 24
|
||||
# error update this code.
|
||||
#endif
|
||||
|
||||
static inline void load_TLS(struct thread_struct *t, unsigned int cpu)
|
||||
{
|
||||
unsigned int i;
|
||||
u64 *gdt = (u64 *)(cpu_gdt(cpu) + GDT_ENTRY_TLS_MIN);
|
||||
gdt[0] = t->tls_array[0];
|
||||
gdt[1] = t->tls_array[1];
|
||||
gdt[2] = t->tls_array[2];
|
||||
|
||||
for (i = 0; i < GDT_ENTRY_TLS_ENTRIES; i++)
|
||||
gdt[i] = t->tls_array[i];
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -52,7 +52,7 @@ struct dma_mapping_ops {
|
||||
};
|
||||
|
||||
extern dma_addr_t bad_dma_address;
|
||||
extern struct dma_mapping_ops* dma_ops;
|
||||
extern const struct dma_mapping_ops* dma_ops;
|
||||
extern int iommu_merge;
|
||||
|
||||
static inline int dma_mapping_error(dma_addr_t dma_addr)
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#include <asm/apicdef.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/vsyscall.h>
|
||||
#include <asm/vsyscall32.h>
|
||||
|
||||
/*
|
||||
* Here we define all the compile-time 'special' virtual
|
||||
|
||||
@@ -29,7 +29,9 @@ struct genapic {
|
||||
unsigned int (*phys_pkg_id)(int index_msb);
|
||||
};
|
||||
|
||||
extern struct genapic *genapic;
|
||||
|
||||
extern struct genapic *genapic, *genapic_force, apic_flat;
|
||||
extern struct genapic apic_flat;
|
||||
extern struct genapic apic_physflat;
|
||||
|
||||
#endif
|
||||
|
||||
+36
-25
@@ -18,10 +18,8 @@
|
||||
* Subject to the GNU Public License, v.2
|
||||
*/
|
||||
|
||||
#include <asm/fixmap.h>
|
||||
#include <asm/hw_irq.h>
|
||||
#include <asm/apicdef.h>
|
||||
#include <asm/genapic.h>
|
||||
#include <asm/apic.h>
|
||||
|
||||
/*
|
||||
* the following functions deal with sending IPIs between CPUs.
|
||||
@@ -76,10 +74,42 @@ static inline void __send_IPI_shortcut(unsigned int shortcut, int vector, unsign
|
||||
apic_write(APIC_ICR, cfg);
|
||||
}
|
||||
|
||||
/*
|
||||
* This is used to send an IPI with no shorthand notation (the destination is
|
||||
* specified in bits 56 to 63 of the ICR).
|
||||
*/
|
||||
static inline void __send_IPI_dest_field(unsigned int mask, int vector, unsigned int dest)
|
||||
{
|
||||
unsigned long cfg;
|
||||
|
||||
/*
|
||||
* Wait for idle.
|
||||
*/
|
||||
if (unlikely(vector == NMI_VECTOR))
|
||||
safe_apic_wait_icr_idle();
|
||||
else
|
||||
apic_wait_icr_idle();
|
||||
|
||||
/*
|
||||
* prepare target chip field
|
||||
*/
|
||||
cfg = __prepare_ICR2(mask);
|
||||
apic_write(APIC_ICR2, cfg);
|
||||
|
||||
/*
|
||||
* program the ICR
|
||||
*/
|
||||
cfg = __prepare_ICR(0, vector, dest);
|
||||
|
||||
/*
|
||||
* Send the IPI. The write to APIC_ICR fires this off.
|
||||
*/
|
||||
apic_write(APIC_ICR, cfg);
|
||||
}
|
||||
|
||||
static inline void send_IPI_mask_sequence(cpumask_t mask, int vector)
|
||||
{
|
||||
unsigned long cfg, flags;
|
||||
unsigned long flags;
|
||||
unsigned long query_cpu;
|
||||
|
||||
/*
|
||||
@@ -88,28 +118,9 @@ static inline void send_IPI_mask_sequence(cpumask_t mask, int vector)
|
||||
* - mbligh
|
||||
*/
|
||||
local_irq_save(flags);
|
||||
|
||||
for_each_cpu_mask(query_cpu, mask) {
|
||||
/*
|
||||
* Wait for idle.
|
||||
*/
|
||||
apic_wait_icr_idle();
|
||||
|
||||
/*
|
||||
* prepare target chip field
|
||||
*/
|
||||
cfg = __prepare_ICR2(x86_cpu_to_apicid[query_cpu]);
|
||||
apic_write(APIC_ICR2, cfg);
|
||||
|
||||
/*
|
||||
* program the ICR
|
||||
*/
|
||||
cfg = __prepare_ICR(0, vector, APIC_DEST_PHYSICAL);
|
||||
|
||||
/*
|
||||
* Send the IPI. The write to APIC_ICR fires this off.
|
||||
*/
|
||||
apic_write(APIC_ICR, cfg);
|
||||
__send_IPI_dest_field(x86_cpu_to_apicid[query_cpu],
|
||||
vector, APIC_DEST_PHYSICAL);
|
||||
}
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
#ifndef _ASM_IRQFLAGS_H
|
||||
#define _ASM_IRQFLAGS_H
|
||||
#include <asm/processor-flags.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
/*
|
||||
@@ -53,19 +54,19 @@ static inline void raw_local_irq_disable(void)
|
||||
{
|
||||
unsigned long flags = __raw_local_save_flags();
|
||||
|
||||
raw_local_irq_restore((flags & ~(1 << 9)) | (1 << 18));
|
||||
raw_local_irq_restore((flags & ~X86_EFLAGS_IF) | X86_EFLAGS_AC);
|
||||
}
|
||||
|
||||
static inline void raw_local_irq_enable(void)
|
||||
{
|
||||
unsigned long flags = __raw_local_save_flags();
|
||||
|
||||
raw_local_irq_restore((flags | (1 << 9)) & ~(1 << 18));
|
||||
raw_local_irq_restore((flags | X86_EFLAGS_IF) & (~X86_EFLAGS_AC));
|
||||
}
|
||||
|
||||
static inline int raw_irqs_disabled_flags(unsigned long flags)
|
||||
{
|
||||
return !(flags & (1<<9)) || (flags & (1 << 18));
|
||||
return !(flags & X86_EFLAGS_IF) || (flags & X86_EFLAGS_AC);
|
||||
}
|
||||
|
||||
#else /* CONFIG_X86_VSMP */
|
||||
@@ -82,7 +83,7 @@ static inline void raw_local_irq_enable(void)
|
||||
|
||||
static inline int raw_irqs_disabled_flags(unsigned long flags)
|
||||
{
|
||||
return !(flags & (1 << 9));
|
||||
return !(flags & X86_EFLAGS_IF);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <asm/pda.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm-generic/mm_hooks.h>
|
||||
|
||||
/*
|
||||
* possibly do the LDT unload here?
|
||||
|
||||
@@ -49,7 +49,7 @@ extern int pfn_valid(unsigned long pfn);
|
||||
|
||||
#ifdef CONFIG_NUMA_EMU
|
||||
#define FAKE_NODE_MIN_SIZE (64*1024*1024)
|
||||
#define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1ul))
|
||||
#define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1uL))
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#include <asm-i386/msr-index.h>
|
||||
+5
-269
@@ -1,6 +1,8 @@
|
||||
#ifndef X86_64_MSR_H
|
||||
#define X86_64_MSR_H 1
|
||||
|
||||
#include <asm/msr-index.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
/*
|
||||
* Access to machine-specific registers (available on 586 and better only)
|
||||
@@ -157,9 +159,6 @@ static inline unsigned int cpuid_edx(unsigned int op)
|
||||
return edx;
|
||||
}
|
||||
|
||||
#define MSR_IA32_UCODE_WRITE 0x79
|
||||
#define MSR_IA32_UCODE_REV 0x8b
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
|
||||
void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
|
||||
@@ -172,269 +171,6 @@ static inline void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
|
||||
{
|
||||
wrmsr(msr_no, l, h);
|
||||
}
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
#endif
|
||||
|
||||
/* AMD/K8 specific MSRs */
|
||||
#define MSR_EFER 0xc0000080 /* extended feature register */
|
||||
#define MSR_STAR 0xc0000081 /* legacy mode SYSCALL target */
|
||||
#define MSR_LSTAR 0xc0000082 /* long mode SYSCALL target */
|
||||
#define MSR_CSTAR 0xc0000083 /* compatibility mode SYSCALL target */
|
||||
#define MSR_SYSCALL_MASK 0xc0000084 /* EFLAGS mask for syscall */
|
||||
#define MSR_FS_BASE 0xc0000100 /* 64bit FS base */
|
||||
#define MSR_GS_BASE 0xc0000101 /* 64bit GS base */
|
||||
#define MSR_KERNEL_GS_BASE 0xc0000102 /* SwapGS GS shadow (or USER_GS from kernel) */
|
||||
/* EFER bits: */
|
||||
#define _EFER_SCE 0 /* SYSCALL/SYSRET */
|
||||
#define _EFER_LME 8 /* Long mode enable */
|
||||
#define _EFER_LMA 10 /* Long mode active (read-only) */
|
||||
#define _EFER_NX 11 /* No execute enable */
|
||||
|
||||
#define EFER_SCE (1<<_EFER_SCE)
|
||||
#define EFER_LME (1<<_EFER_LME)
|
||||
#define EFER_LMA (1<<_EFER_LMA)
|
||||
#define EFER_NX (1<<_EFER_NX)
|
||||
|
||||
/* Intel MSRs. Some also available on other CPUs */
|
||||
#define MSR_IA32_TSC 0x10
|
||||
#define MSR_IA32_PLATFORM_ID 0x17
|
||||
|
||||
#define MSR_IA32_PERFCTR0 0xc1
|
||||
#define MSR_IA32_PERFCTR1 0xc2
|
||||
#define MSR_FSB_FREQ 0xcd
|
||||
|
||||
#define MSR_MTRRcap 0x0fe
|
||||
#define MSR_IA32_BBL_CR_CTL 0x119
|
||||
|
||||
#define MSR_IA32_SYSENTER_CS 0x174
|
||||
#define MSR_IA32_SYSENTER_ESP 0x175
|
||||
#define MSR_IA32_SYSENTER_EIP 0x176
|
||||
|
||||
#define MSR_IA32_MCG_CAP 0x179
|
||||
#define MSR_IA32_MCG_STATUS 0x17a
|
||||
#define MSR_IA32_MCG_CTL 0x17b
|
||||
|
||||
#define MSR_IA32_EVNTSEL0 0x186
|
||||
#define MSR_IA32_EVNTSEL1 0x187
|
||||
|
||||
#define MSR_IA32_DEBUGCTLMSR 0x1d9
|
||||
#define MSR_IA32_LASTBRANCHFROMIP 0x1db
|
||||
#define MSR_IA32_LASTBRANCHTOIP 0x1dc
|
||||
#define MSR_IA32_LASTINTFROMIP 0x1dd
|
||||
#define MSR_IA32_LASTINTTOIP 0x1de
|
||||
|
||||
#define MSR_IA32_PEBS_ENABLE 0x3f1
|
||||
#define MSR_IA32_DS_AREA 0x600
|
||||
#define MSR_IA32_PERF_CAPABILITIES 0x345
|
||||
|
||||
#define MSR_MTRRfix64K_00000 0x250
|
||||
#define MSR_MTRRfix16K_80000 0x258
|
||||
#define MSR_MTRRfix16K_A0000 0x259
|
||||
#define MSR_MTRRfix4K_C0000 0x268
|
||||
#define MSR_MTRRfix4K_C8000 0x269
|
||||
#define MSR_MTRRfix4K_D0000 0x26a
|
||||
#define MSR_MTRRfix4K_D8000 0x26b
|
||||
#define MSR_MTRRfix4K_E0000 0x26c
|
||||
#define MSR_MTRRfix4K_E8000 0x26d
|
||||
#define MSR_MTRRfix4K_F0000 0x26e
|
||||
#define MSR_MTRRfix4K_F8000 0x26f
|
||||
#define MSR_MTRRdefType 0x2ff
|
||||
|
||||
#define MSR_IA32_MC0_CTL 0x400
|
||||
#define MSR_IA32_MC0_STATUS 0x401
|
||||
#define MSR_IA32_MC0_ADDR 0x402
|
||||
#define MSR_IA32_MC0_MISC 0x403
|
||||
|
||||
#define MSR_P6_PERFCTR0 0xc1
|
||||
#define MSR_P6_PERFCTR1 0xc2
|
||||
#define MSR_P6_EVNTSEL0 0x186
|
||||
#define MSR_P6_EVNTSEL1 0x187
|
||||
|
||||
/* K7/K8 MSRs. Not complete. See the architecture manual for a more complete list. */
|
||||
#define MSR_K7_EVNTSEL0 0xC0010000
|
||||
#define MSR_K7_PERFCTR0 0xC0010004
|
||||
#define MSR_K7_EVNTSEL1 0xC0010001
|
||||
#define MSR_K7_PERFCTR1 0xC0010005
|
||||
#define MSR_K7_EVNTSEL2 0xC0010002
|
||||
#define MSR_K7_PERFCTR2 0xC0010006
|
||||
#define MSR_K7_EVNTSEL3 0xC0010003
|
||||
#define MSR_K7_PERFCTR3 0xC0010007
|
||||
#define MSR_K8_TOP_MEM1 0xC001001A
|
||||
#define MSR_K8_TOP_MEM2 0xC001001D
|
||||
#define MSR_K8_SYSCFG 0xC0010010
|
||||
#define MSR_K8_HWCR 0xC0010015
|
||||
|
||||
/* K6 MSRs */
|
||||
#define MSR_K6_EFER 0xC0000080
|
||||
#define MSR_K6_STAR 0xC0000081
|
||||
#define MSR_K6_WHCR 0xC0000082
|
||||
#define MSR_K6_UWCCR 0xC0000085
|
||||
#define MSR_K6_PSOR 0xC0000087
|
||||
#define MSR_K6_PFIR 0xC0000088
|
||||
|
||||
/* Centaur-Hauls/IDT defined MSRs. */
|
||||
#define MSR_IDT_FCR1 0x107
|
||||
#define MSR_IDT_FCR2 0x108
|
||||
#define MSR_IDT_FCR3 0x109
|
||||
#define MSR_IDT_FCR4 0x10a
|
||||
|
||||
#define MSR_IDT_MCR0 0x110
|
||||
#define MSR_IDT_MCR1 0x111
|
||||
#define MSR_IDT_MCR2 0x112
|
||||
#define MSR_IDT_MCR3 0x113
|
||||
#define MSR_IDT_MCR4 0x114
|
||||
#define MSR_IDT_MCR5 0x115
|
||||
#define MSR_IDT_MCR6 0x116
|
||||
#define MSR_IDT_MCR7 0x117
|
||||
#define MSR_IDT_MCR_CTRL 0x120
|
||||
|
||||
/* VIA Cyrix defined MSRs*/
|
||||
#define MSR_VIA_FCR 0x1107
|
||||
#define MSR_VIA_LONGHAUL 0x110a
|
||||
#define MSR_VIA_RNG 0x110b
|
||||
#define MSR_VIA_BCR2 0x1147
|
||||
|
||||
/* Intel defined MSRs. */
|
||||
#define MSR_IA32_P5_MC_ADDR 0
|
||||
#define MSR_IA32_P5_MC_TYPE 1
|
||||
#define MSR_IA32_PLATFORM_ID 0x17
|
||||
#define MSR_IA32_EBL_CR_POWERON 0x2a
|
||||
|
||||
#define MSR_IA32_APICBASE 0x1b
|
||||
#define MSR_IA32_APICBASE_BSP (1<<8)
|
||||
#define MSR_IA32_APICBASE_ENABLE (1<<11)
|
||||
#define MSR_IA32_APICBASE_BASE (0xfffff<<12)
|
||||
|
||||
/* P4/Xeon+ specific */
|
||||
#define MSR_IA32_MCG_EAX 0x180
|
||||
#define MSR_IA32_MCG_EBX 0x181
|
||||
#define MSR_IA32_MCG_ECX 0x182
|
||||
#define MSR_IA32_MCG_EDX 0x183
|
||||
#define MSR_IA32_MCG_ESI 0x184
|
||||
#define MSR_IA32_MCG_EDI 0x185
|
||||
#define MSR_IA32_MCG_EBP 0x186
|
||||
#define MSR_IA32_MCG_ESP 0x187
|
||||
#define MSR_IA32_MCG_EFLAGS 0x188
|
||||
#define MSR_IA32_MCG_EIP 0x189
|
||||
#define MSR_IA32_MCG_RESERVED 0x18A
|
||||
|
||||
#define MSR_P6_EVNTSEL0 0x186
|
||||
#define MSR_P6_EVNTSEL1 0x187
|
||||
|
||||
#define MSR_IA32_PERF_STATUS 0x198
|
||||
#define MSR_IA32_PERF_CTL 0x199
|
||||
|
||||
#define MSR_IA32_MPERF 0xE7
|
||||
#define MSR_IA32_APERF 0xE8
|
||||
|
||||
#define MSR_IA32_THERM_CONTROL 0x19a
|
||||
#define MSR_IA32_THERM_INTERRUPT 0x19b
|
||||
#define MSR_IA32_THERM_STATUS 0x19c
|
||||
#define MSR_IA32_MISC_ENABLE 0x1a0
|
||||
|
||||
#define MSR_IA32_DEBUGCTLMSR 0x1d9
|
||||
#define MSR_IA32_LASTBRANCHFROMIP 0x1db
|
||||
#define MSR_IA32_LASTBRANCHTOIP 0x1dc
|
||||
#define MSR_IA32_LASTINTFROMIP 0x1dd
|
||||
#define MSR_IA32_LASTINTTOIP 0x1de
|
||||
|
||||
#define MSR_IA32_MC0_CTL 0x400
|
||||
#define MSR_IA32_MC0_STATUS 0x401
|
||||
#define MSR_IA32_MC0_ADDR 0x402
|
||||
#define MSR_IA32_MC0_MISC 0x403
|
||||
|
||||
/* Pentium IV performance counter MSRs */
|
||||
#define MSR_P4_BPU_PERFCTR0 0x300
|
||||
#define MSR_P4_BPU_PERFCTR1 0x301
|
||||
#define MSR_P4_BPU_PERFCTR2 0x302
|
||||
#define MSR_P4_BPU_PERFCTR3 0x303
|
||||
#define MSR_P4_MS_PERFCTR0 0x304
|
||||
#define MSR_P4_MS_PERFCTR1 0x305
|
||||
#define MSR_P4_MS_PERFCTR2 0x306
|
||||
#define MSR_P4_MS_PERFCTR3 0x307
|
||||
#define MSR_P4_FLAME_PERFCTR0 0x308
|
||||
#define MSR_P4_FLAME_PERFCTR1 0x309
|
||||
#define MSR_P4_FLAME_PERFCTR2 0x30a
|
||||
#define MSR_P4_FLAME_PERFCTR3 0x30b
|
||||
#define MSR_P4_IQ_PERFCTR0 0x30c
|
||||
#define MSR_P4_IQ_PERFCTR1 0x30d
|
||||
#define MSR_P4_IQ_PERFCTR2 0x30e
|
||||
#define MSR_P4_IQ_PERFCTR3 0x30f
|
||||
#define MSR_P4_IQ_PERFCTR4 0x310
|
||||
#define MSR_P4_IQ_PERFCTR5 0x311
|
||||
#define MSR_P4_BPU_CCCR0 0x360
|
||||
#define MSR_P4_BPU_CCCR1 0x361
|
||||
#define MSR_P4_BPU_CCCR2 0x362
|
||||
#define MSR_P4_BPU_CCCR3 0x363
|
||||
#define MSR_P4_MS_CCCR0 0x364
|
||||
#define MSR_P4_MS_CCCR1 0x365
|
||||
#define MSR_P4_MS_CCCR2 0x366
|
||||
#define MSR_P4_MS_CCCR3 0x367
|
||||
#define MSR_P4_FLAME_CCCR0 0x368
|
||||
#define MSR_P4_FLAME_CCCR1 0x369
|
||||
#define MSR_P4_FLAME_CCCR2 0x36a
|
||||
#define MSR_P4_FLAME_CCCR3 0x36b
|
||||
#define MSR_P4_IQ_CCCR0 0x36c
|
||||
#define MSR_P4_IQ_CCCR1 0x36d
|
||||
#define MSR_P4_IQ_CCCR2 0x36e
|
||||
#define MSR_P4_IQ_CCCR3 0x36f
|
||||
#define MSR_P4_IQ_CCCR4 0x370
|
||||
#define MSR_P4_IQ_CCCR5 0x371
|
||||
#define MSR_P4_ALF_ESCR0 0x3ca
|
||||
#define MSR_P4_ALF_ESCR1 0x3cb
|
||||
#define MSR_P4_BPU_ESCR0 0x3b2
|
||||
#define MSR_P4_BPU_ESCR1 0x3b3
|
||||
#define MSR_P4_BSU_ESCR0 0x3a0
|
||||
#define MSR_P4_BSU_ESCR1 0x3a1
|
||||
#define MSR_P4_CRU_ESCR0 0x3b8
|
||||
#define MSR_P4_CRU_ESCR1 0x3b9
|
||||
#define MSR_P4_CRU_ESCR2 0x3cc
|
||||
#define MSR_P4_CRU_ESCR3 0x3cd
|
||||
#define MSR_P4_CRU_ESCR4 0x3e0
|
||||
#define MSR_P4_CRU_ESCR5 0x3e1
|
||||
#define MSR_P4_DAC_ESCR0 0x3a8
|
||||
#define MSR_P4_DAC_ESCR1 0x3a9
|
||||
#define MSR_P4_FIRM_ESCR0 0x3a4
|
||||
#define MSR_P4_FIRM_ESCR1 0x3a5
|
||||
#define MSR_P4_FLAME_ESCR0 0x3a6
|
||||
#define MSR_P4_FLAME_ESCR1 0x3a7
|
||||
#define MSR_P4_FSB_ESCR0 0x3a2
|
||||
#define MSR_P4_FSB_ESCR1 0x3a3
|
||||
#define MSR_P4_IQ_ESCR0 0x3ba
|
||||
#define MSR_P4_IQ_ESCR1 0x3bb
|
||||
#define MSR_P4_IS_ESCR0 0x3b4
|
||||
#define MSR_P4_IS_ESCR1 0x3b5
|
||||
#define MSR_P4_ITLB_ESCR0 0x3b6
|
||||
#define MSR_P4_ITLB_ESCR1 0x3b7
|
||||
#define MSR_P4_IX_ESCR0 0x3c8
|
||||
#define MSR_P4_IX_ESCR1 0x3c9
|
||||
#define MSR_P4_MOB_ESCR0 0x3aa
|
||||
#define MSR_P4_MOB_ESCR1 0x3ab
|
||||
#define MSR_P4_MS_ESCR0 0x3c0
|
||||
#define MSR_P4_MS_ESCR1 0x3c1
|
||||
#define MSR_P4_PMH_ESCR0 0x3ac
|
||||
#define MSR_P4_PMH_ESCR1 0x3ad
|
||||
#define MSR_P4_RAT_ESCR0 0x3bc
|
||||
#define MSR_P4_RAT_ESCR1 0x3bd
|
||||
#define MSR_P4_SAAT_ESCR0 0x3ae
|
||||
#define MSR_P4_SAAT_ESCR1 0x3af
|
||||
#define MSR_P4_SSU_ESCR0 0x3be
|
||||
#define MSR_P4_SSU_ESCR1 0x3bf /* guess: not defined in manual */
|
||||
#define MSR_P4_TBPU_ESCR0 0x3c2
|
||||
#define MSR_P4_TBPU_ESCR1 0x3c3
|
||||
#define MSR_P4_TC_ESCR0 0x3c4
|
||||
#define MSR_P4_TC_ESCR1 0x3c5
|
||||
#define MSR_P4_U2L_ESCR0 0x3b0
|
||||
#define MSR_P4_U2L_ESCR1 0x3b1
|
||||
|
||||
/* Intel Core-based CPU performance counters */
|
||||
#define MSR_CORE_PERF_FIXED_CTR0 0x309
|
||||
#define MSR_CORE_PERF_FIXED_CTR1 0x30a
|
||||
#define MSR_CORE_PERF_FIXED_CTR2 0x30b
|
||||
#define MSR_CORE_PERF_FIXED_CTR_CTRL 0x38d
|
||||
#define MSR_CORE_PERF_GLOBAL_STATUS 0x38e
|
||||
#define MSR_CORE_PERF_GLOBAL_CTRL 0x38f
|
||||
#define MSR_CORE_PERF_GLOBAL_OVF_CTRL 0x390
|
||||
|
||||
#endif
|
||||
#endif /* CONFIG_SMP */
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* X86_64_MSR_H */
|
||||
|
||||
@@ -135,6 +135,18 @@ struct mtrr_gentry32
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
||||
#ifdef CONFIG_MTRR
|
||||
extern void mtrr_ap_init(void);
|
||||
extern void mtrr_bp_init(void);
|
||||
extern void mtrr_save_fixed_ranges(void *);
|
||||
extern void mtrr_save_state(void);
|
||||
#else
|
||||
#define mtrr_ap_init() do {} while (0)
|
||||
#define mtrr_bp_init() do {} while (0)
|
||||
#define mtrr_save_fixed_ranges(arg) do {} while (0)
|
||||
#define mtrr_save_state() do {} while (0)
|
||||
#endif
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _LINUX_MTRR_H */
|
||||
|
||||
@@ -80,4 +80,13 @@ extern int unknown_nmi_panic;
|
||||
void __trigger_all_cpu_backtrace(void);
|
||||
#define trigger_all_cpu_backtrace() __trigger_all_cpu_backtrace()
|
||||
|
||||
|
||||
void lapic_watchdog_stop(void);
|
||||
int lapic_watchdog_init(unsigned nmi_hz);
|
||||
int lapic_wd_event(unsigned nmi_hz);
|
||||
unsigned lapic_adjust_nmi_hz(unsigned hz);
|
||||
int lapic_watchdog_ok(void);
|
||||
void disable_lapic_nmi_watchdog(void);
|
||||
void enable_lapic_nmi_watchdog(void);
|
||||
|
||||
#endif /* ASM_NMI_H */
|
||||
|
||||
+16
-23
@@ -1,14 +1,11 @@
|
||||
#ifndef _X86_64_PAGE_H
|
||||
#define _X86_64_PAGE_H
|
||||
|
||||
#include <asm/const.h>
|
||||
|
||||
/* PAGE_SHIFT determines the page size */
|
||||
#define PAGE_SHIFT 12
|
||||
#ifdef __ASSEMBLY__
|
||||
#define PAGE_SIZE (0x1 << PAGE_SHIFT)
|
||||
#else
|
||||
#define PAGE_SIZE (1UL << PAGE_SHIFT)
|
||||
#endif
|
||||
#define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT)
|
||||
#define PAGE_MASK (~(PAGE_SIZE-1))
|
||||
#define PHYSICAL_PAGE_MASK (~(PAGE_SIZE-1) & __PHYSICAL_MASK)
|
||||
|
||||
@@ -33,10 +30,10 @@
|
||||
#define N_EXCEPTION_STACKS 5 /* hw limit: 7 */
|
||||
|
||||
#define LARGE_PAGE_MASK (~(LARGE_PAGE_SIZE-1))
|
||||
#define LARGE_PAGE_SIZE (1UL << PMD_SHIFT)
|
||||
#define LARGE_PAGE_SIZE (_AC(1,UL) << PMD_SHIFT)
|
||||
|
||||
#define HPAGE_SHIFT PMD_SHIFT
|
||||
#define HPAGE_SIZE ((1UL) << HPAGE_SHIFT)
|
||||
#define HPAGE_SIZE (_AC(1,UL) << HPAGE_SHIFT)
|
||||
#define HPAGE_MASK (~(HPAGE_SIZE - 1))
|
||||
#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT)
|
||||
|
||||
@@ -64,6 +61,8 @@ typedef struct { unsigned long pgd; } pgd_t;
|
||||
|
||||
typedef struct { unsigned long pgprot; } pgprot_t;
|
||||
|
||||
extern unsigned long phys_base;
|
||||
|
||||
#define pte_val(x) ((x).pte)
|
||||
#define pmd_val(x) ((x).pmd)
|
||||
#define pud_val(x) ((x).pud)
|
||||
@@ -76,29 +75,25 @@ typedef struct { unsigned long pgprot; } pgprot_t;
|
||||
#define __pgd(x) ((pgd_t) { (x) } )
|
||||
#define __pgprot(x) ((pgprot_t) { (x) } )
|
||||
|
||||
#define __PHYSICAL_START ((unsigned long)CONFIG_PHYSICAL_START)
|
||||
#define __START_KERNEL (__START_KERNEL_map + __PHYSICAL_START)
|
||||
#define __START_KERNEL_map 0xffffffff80000000UL
|
||||
#define __PAGE_OFFSET 0xffff810000000000UL
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
#else
|
||||
#define __PHYSICAL_START CONFIG_PHYSICAL_START
|
||||
#define __KERNEL_ALIGN 0x200000
|
||||
#define __START_KERNEL (__START_KERNEL_map + __PHYSICAL_START)
|
||||
#define __START_KERNEL_map 0xffffffff80000000
|
||||
#define __PAGE_OFFSET 0xffff810000000000
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
/* to align the pointer to the (next) page boundary */
|
||||
#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
|
||||
|
||||
/* See Documentation/x86_64/mm.txt for a description of the memory map. */
|
||||
#define __PHYSICAL_MASK_SHIFT 46
|
||||
#define __PHYSICAL_MASK ((1UL << __PHYSICAL_MASK_SHIFT) - 1)
|
||||
#define __PHYSICAL_MASK ((_AC(1,UL) << __PHYSICAL_MASK_SHIFT) - 1)
|
||||
#define __VIRTUAL_MASK_SHIFT 48
|
||||
#define __VIRTUAL_MASK ((1UL << __VIRTUAL_MASK_SHIFT) - 1)
|
||||
#define __VIRTUAL_MASK ((_AC(1,UL) << __VIRTUAL_MASK_SHIFT) - 1)
|
||||
|
||||
#define KERNEL_TEXT_SIZE (40UL*1024*1024)
|
||||
#define KERNEL_TEXT_START 0xffffffff80000000UL
|
||||
#define KERNEL_TEXT_SIZE (40*1024*1024)
|
||||
#define KERNEL_TEXT_START 0xffffffff80000000
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
@@ -106,21 +101,19 @@ typedef struct { unsigned long pgprot; } pgprot_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET)
|
||||
#define PAGE_OFFSET __PAGE_OFFSET
|
||||
|
||||
/* Note: __pa(&symbol_visible_to_c) should be always replaced with __pa_symbol.
|
||||
Otherwise you risk miscompilation. */
|
||||
#define __pa(x) (((unsigned long)(x)>=__START_KERNEL_map)?(unsigned long)(x) - (unsigned long)__START_KERNEL_map:(unsigned long)(x) - PAGE_OFFSET)
|
||||
Otherwise you risk miscompilation. */
|
||||
#define __pa(x) ((unsigned long)(x) - PAGE_OFFSET)
|
||||
/* __pa_symbol should be used for C visible symbols.
|
||||
This seems to be the official gcc blessed way to do such arithmetic. */
|
||||
#define __pa_symbol(x) \
|
||||
({unsigned long v; \
|
||||
asm("" : "=r" (v) : "0" (x)); \
|
||||
__pa(v); })
|
||||
((v - __START_KERNEL_map) + phys_base); })
|
||||
|
||||
#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
|
||||
#define __boot_va(x) __va(x)
|
||||
#define __boot_pa(x) __pa(x)
|
||||
#ifdef CONFIG_FLATMEM
|
||||
#define pfn_valid(pfn) ((pfn) < end_pfn)
|
||||
#endif
|
||||
|
||||
@@ -11,16 +11,6 @@
|
||||
|
||||
#include <asm/pda.h>
|
||||
|
||||
#ifdef CONFIG_MODULES
|
||||
# define PERCPU_MODULE_RESERVE 8192
|
||||
#else
|
||||
# define PERCPU_MODULE_RESERVE 0
|
||||
#endif
|
||||
|
||||
#define PERCPU_ENOUGH_ROOM \
|
||||
(ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES) + \
|
||||
PERCPU_MODULE_RESERVE)
|
||||
|
||||
#define __per_cpu_offset(cpu) (cpu_pda(cpu)->data_offset)
|
||||
#define __my_cpu_offset() read_pda(data_offset)
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#ifndef _X86_64_PGALLOC_H
|
||||
#define _X86_64_PGALLOC_H
|
||||
|
||||
#include <asm/fixmap.h>
|
||||
#include <asm/pda.h>
|
||||
#include <linux/threads.h>
|
||||
#include <linux/mm.h>
|
||||
@@ -45,24 +44,16 @@ static inline void pgd_list_add(pgd_t *pgd)
|
||||
struct page *page = virt_to_page(pgd);
|
||||
|
||||
spin_lock(&pgd_lock);
|
||||
page->index = (pgoff_t)pgd_list;
|
||||
if (pgd_list)
|
||||
pgd_list->private = (unsigned long)&page->index;
|
||||
pgd_list = page;
|
||||
page->private = (unsigned long)&pgd_list;
|
||||
list_add(&page->lru, &pgd_list);
|
||||
spin_unlock(&pgd_lock);
|
||||
}
|
||||
|
||||
static inline void pgd_list_del(pgd_t *pgd)
|
||||
{
|
||||
struct page *next, **pprev, *page = virt_to_page(pgd);
|
||||
struct page *page = virt_to_page(pgd);
|
||||
|
||||
spin_lock(&pgd_lock);
|
||||
next = (struct page *)page->index;
|
||||
pprev = (struct page **)page->private;
|
||||
*pprev = next;
|
||||
if (next)
|
||||
next->private = (unsigned long)pprev;
|
||||
list_del(&page->lru);
|
||||
spin_unlock(&pgd_lock);
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user