diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-02-04 08:54:56 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-02-04 08:54:56 -0500 |
commit | bb960a1e42042e82447a5bc0941b3ab6d614bac3 (patch) | |
tree | d2295a923fabb1b01b25bb015c4c2e42ee9df5ca /arch/x86 | |
parent | 858770619debfb9269add63e4ba8b7c6b5538dd1 (diff) | |
parent | 06fc732c33a7ff5e4c91bcf4a6ca86b5e335ad9a (diff) |
Merge branch 'core/xen' into x86/urgent
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/configs/i386_defconfig | 4 | ||||
-rw-r--r-- | arch/x86/configs/x86_64_defconfig | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/Kbuild | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/byteorder.h | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/dma-mapping.h | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/e820.h | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/kvm.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/mce.h | 5 | ||||
-rw-r--r-- | arch/x86/include/asm/mtrr.h | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/pgtable.h | 19 | ||||
-rw-r--r-- | arch/x86/include/asm/ptrace-abi.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/sigcontext.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/sigcontext32.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/swab.h | 2 | ||||
-rw-r--r-- | arch/x86/kernel/ds.c | 31 | ||||
-rw-r--r-- | arch/x86/kernel/hpet.c | 3 | ||||
-rw-r--r-- | arch/x86/kernel/kprobes.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/pci-gart_64.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/syscall_table_32.S | 2 | ||||
-rw-r--r-- | arch/x86/lguest/boot.c | 4 | ||||
-rw-r--r-- | arch/x86/mm/pat.c | 45 | ||||
-rw-r--r-- | arch/x86/pci/i386.c | 12 | ||||
-rw-r--r-- | arch/x86/pci/irq.c | 1 | ||||
-rw-r--r-- | arch/x86/scripts/strip-symbols | 1 | ||||
-rw-r--r-- | arch/x86/xen/multicalls.h | 4 |
25 files changed, 92 insertions, 65 deletions
diff --git a/arch/x86/configs/i386_defconfig b/arch/x86/configs/i386_defconfig index b30a08ed8eb..edba00d98ac 100644 --- a/arch/x86/configs/i386_defconfig +++ b/arch/x86/configs/i386_defconfig | |||
@@ -1331,8 +1331,8 @@ CONFIG_I2C_I801=y | |||
1331 | # Miscellaneous I2C Chip support | 1331 | # Miscellaneous I2C Chip support |
1332 | # | 1332 | # |
1333 | # CONFIG_DS1682 is not set | 1333 | # CONFIG_DS1682 is not set |
1334 | # CONFIG_AT24 is not set | 1334 | # CONFIG_EEPROM_AT24 is not set |
1335 | # CONFIG_SENSORS_EEPROM is not set | 1335 | # CONFIG_EEPROM_LEGACY is not set |
1336 | # CONFIG_SENSORS_PCF8574 is not set | 1336 | # CONFIG_SENSORS_PCF8574 is not set |
1337 | # CONFIG_PCF8575 is not set | 1337 | # CONFIG_PCF8575 is not set |
1338 | # CONFIG_SENSORS_PCA9539 is not set | 1338 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/x86/configs/x86_64_defconfig b/arch/x86/configs/x86_64_defconfig index 0e7dbc0a3e4..322dd2748fc 100644 --- a/arch/x86/configs/x86_64_defconfig +++ b/arch/x86/configs/x86_64_defconfig | |||
@@ -1311,8 +1311,8 @@ CONFIG_I2C_I801=y | |||
1311 | # Miscellaneous I2C Chip support | 1311 | # Miscellaneous I2C Chip support |
1312 | # | 1312 | # |
1313 | # CONFIG_DS1682 is not set | 1313 | # CONFIG_DS1682 is not set |
1314 | # CONFIG_AT24 is not set | 1314 | # CONFIG_EEPROM_AT24 is not set |
1315 | # CONFIG_SENSORS_EEPROM is not set | 1315 | # CONFIG_EEPROM_LEGACY is not set |
1316 | # CONFIG_SENSORS_PCF8574 is not set | 1316 | # CONFIG_SENSORS_PCF8574 is not set |
1317 | # CONFIG_PCF8575 is not set | 1317 | # CONFIG_PCF8575 is not set |
1318 | # CONFIG_SENSORS_PCA9539 is not set | 1318 | # CONFIG_SENSORS_PCA9539 is not set |
diff --git a/arch/x86/include/asm/Kbuild b/arch/x86/include/asm/Kbuild index a9f8a814a1f..4a8e80cdcfa 100644 --- a/arch/x86/include/asm/Kbuild +++ b/arch/x86/include/asm/Kbuild | |||
@@ -22,4 +22,3 @@ unifdef-y += unistd_32.h | |||
22 | unifdef-y += unistd_64.h | 22 | unifdef-y += unistd_64.h |
23 | unifdef-y += vm86.h | 23 | unifdef-y += vm86.h |
24 | unifdef-y += vsyscall.h | 24 | unifdef-y += vsyscall.h |
25 | unifdef-y += swab.h | ||
diff --git a/arch/x86/include/asm/byteorder.h b/arch/x86/include/asm/byteorder.h index 7c49917e3d9..b13a7a88f3e 100644 --- a/arch/x86/include/asm/byteorder.h +++ b/arch/x86/include/asm/byteorder.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef _ASM_X86_BYTEORDER_H | 1 | #ifndef _ASM_X86_BYTEORDER_H |
2 | #define _ASM_X86_BYTEORDER_H | 2 | #define _ASM_X86_BYTEORDER_H |
3 | 3 | ||
4 | #include <asm/swab.h> | ||
5 | #include <linux/byteorder/little_endian.h> | 4 | #include <linux/byteorder/little_endian.h> |
6 | 5 | ||
7 | #endif /* _ASM_X86_BYTEORDER_H */ | 6 | #endif /* _ASM_X86_BYTEORDER_H */ |
diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h index 4035357f5b9..132a134d12f 100644 --- a/arch/x86/include/asm/dma-mapping.h +++ b/arch/x86/include/asm/dma-mapping.h | |||
@@ -2,8 +2,8 @@ | |||
2 | #define _ASM_X86_DMA_MAPPING_H | 2 | #define _ASM_X86_DMA_MAPPING_H |
3 | 3 | ||
4 | /* | 4 | /* |
5 | * IOMMU interface. See Documentation/DMA-mapping.txt and DMA-API.txt for | 5 | * IOMMU interface. See Documentation/PCI/PCI-DMA-mapping.txt and |
6 | * documentation. | 6 | * Documentation/DMA-API.txt for documentation. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/scatterlist.h> | 9 | #include <linux/scatterlist.h> |
diff --git a/arch/x86/include/asm/e820.h b/arch/x86/include/asm/e820.h index 3d8ceddbd40..00d41ce4c84 100644 --- a/arch/x86/include/asm/e820.h +++ b/arch/x86/include/asm/e820.h | |||
@@ -49,6 +49,7 @@ | |||
49 | #define E820_RESERVED_KERN 128 | 49 | #define E820_RESERVED_KERN 128 |
50 | 50 | ||
51 | #ifndef __ASSEMBLY__ | 51 | #ifndef __ASSEMBLY__ |
52 | #include <linux/types.h> | ||
52 | struct e820entry { | 53 | struct e820entry { |
53 | __u64 addr; /* start of memory segment */ | 54 | __u64 addr; /* start of memory segment */ |
54 | __u64 size; /* size of memory segment */ | 55 | __u64 size; /* size of memory segment */ |
diff --git a/arch/x86/include/asm/kvm.h b/arch/x86/include/asm/kvm.h index b95162af0bf..d2e3bf3608a 100644 --- a/arch/x86/include/asm/kvm.h +++ b/arch/x86/include/asm/kvm.h | |||
@@ -6,7 +6,7 @@ | |||
6 | * | 6 | * |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <asm/types.h> | 9 | #include <linux/types.h> |
10 | #include <linux/ioctl.h> | 10 | #include <linux/ioctl.h> |
11 | 11 | ||
12 | /* Architectural interrupt line count. */ | 12 | /* Architectural interrupt line count. */ |
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h index 1d6e17c2f23..32c6e17b960 100644 --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h | |||
@@ -3,8 +3,8 @@ | |||
3 | 3 | ||
4 | #ifdef __x86_64__ | 4 | #ifdef __x86_64__ |
5 | 5 | ||
6 | #include <linux/types.h> | ||
6 | #include <asm/ioctls.h> | 7 | #include <asm/ioctls.h> |
7 | #include <asm/types.h> | ||
8 | 8 | ||
9 | /* | 9 | /* |
10 | * Machine Check support for x86 | 10 | * Machine Check support for x86 |
@@ -115,8 +115,6 @@ extern int mce_notify_user(void); | |||
115 | 115 | ||
116 | #endif /* !CONFIG_X86_32 */ | 116 | #endif /* !CONFIG_X86_32 */ |
117 | 117 | ||
118 | |||
119 | |||
120 | #ifdef CONFIG_X86_MCE | 118 | #ifdef CONFIG_X86_MCE |
121 | extern void mcheck_init(struct cpuinfo_x86 *c); | 119 | extern void mcheck_init(struct cpuinfo_x86 *c); |
122 | #else | 120 | #else |
@@ -126,5 +124,4 @@ extern void stop_mce(void); | |||
126 | extern void restart_mce(void); | 124 | extern void restart_mce(void); |
127 | 125 | ||
128 | #endif /* __KERNEL__ */ | 126 | #endif /* __KERNEL__ */ |
129 | |||
130 | #endif /* _ASM_X86_MCE_H */ | 127 | #endif /* _ASM_X86_MCE_H */ |
diff --git a/arch/x86/include/asm/mtrr.h b/arch/x86/include/asm/mtrr.h index 14080d22edb..a51ada8467d 100644 --- a/arch/x86/include/asm/mtrr.h +++ b/arch/x86/include/asm/mtrr.h | |||
@@ -23,6 +23,7 @@ | |||
23 | #ifndef _ASM_X86_MTRR_H | 23 | #ifndef _ASM_X86_MTRR_H |
24 | #define _ASM_X86_MTRR_H | 24 | #define _ASM_X86_MTRR_H |
25 | 25 | ||
26 | #include <linux/types.h> | ||
26 | #include <linux/ioctl.h> | 27 | #include <linux/ioctl.h> |
27 | #include <linux/errno.h> | 28 | #include <linux/errno.h> |
28 | 29 | ||
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 83e69f4a37f..06bbcbd66e9 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h | |||
@@ -341,6 +341,25 @@ static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot) | |||
341 | 341 | ||
342 | #define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask) | 342 | #define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask) |
343 | 343 | ||
344 | static inline int is_new_memtype_allowed(unsigned long flags, | ||
345 | unsigned long new_flags) | ||
346 | { | ||
347 | /* | ||
348 | * Certain new memtypes are not allowed with certain | ||
349 | * requested memtype: | ||
350 | * - request is uncached, return cannot be write-back | ||
351 | * - request is write-combine, return cannot be write-back | ||
352 | */ | ||
353 | if ((flags == _PAGE_CACHE_UC_MINUS && | ||
354 | new_flags == _PAGE_CACHE_WB) || | ||
355 | (flags == _PAGE_CACHE_WC && | ||
356 | new_flags == _PAGE_CACHE_WB)) { | ||
357 | return 0; | ||
358 | } | ||
359 | |||
360 | return 1; | ||
361 | } | ||
362 | |||
344 | #ifndef __ASSEMBLY__ | 363 | #ifndef __ASSEMBLY__ |
345 | /* Indicate that x86 has its own track and untrack pfn vma functions */ | 364 | /* Indicate that x86 has its own track and untrack pfn vma functions */ |
346 | #define __HAVE_PFNMAP_TRACKING | 365 | #define __HAVE_PFNMAP_TRACKING |
diff --git a/arch/x86/include/asm/ptrace-abi.h b/arch/x86/include/asm/ptrace-abi.h index 25f1bb8fc62..8e0f8d199e0 100644 --- a/arch/x86/include/asm/ptrace-abi.h +++ b/arch/x86/include/asm/ptrace-abi.h | |||
@@ -83,7 +83,7 @@ | |||
83 | #ifdef CONFIG_X86_PTRACE_BTS | 83 | #ifdef CONFIG_X86_PTRACE_BTS |
84 | 84 | ||
85 | #ifndef __ASSEMBLY__ | 85 | #ifndef __ASSEMBLY__ |
86 | #include <asm/types.h> | 86 | #include <linux/types.h> |
87 | 87 | ||
88 | /* configuration/status structure used in PTRACE_BTS_CONFIG and | 88 | /* configuration/status structure used in PTRACE_BTS_CONFIG and |
89 | PTRACE_BTS_STATUS commands. | 89 | PTRACE_BTS_STATUS commands. |
diff --git a/arch/x86/include/asm/sigcontext.h b/arch/x86/include/asm/sigcontext.h index 0afcb5e58ac..ec666491aaa 100644 --- a/arch/x86/include/asm/sigcontext.h +++ b/arch/x86/include/asm/sigcontext.h | |||
@@ -2,7 +2,7 @@ | |||
2 | #define _ASM_X86_SIGCONTEXT_H | 2 | #define _ASM_X86_SIGCONTEXT_H |
3 | 3 | ||
4 | #include <linux/compiler.h> | 4 | #include <linux/compiler.h> |
5 | #include <asm/types.h> | 5 | #include <linux/types.h> |
6 | 6 | ||
7 | #define FP_XSTATE_MAGIC1 0x46505853U | 7 | #define FP_XSTATE_MAGIC1 0x46505853U |
8 | #define FP_XSTATE_MAGIC2 0x46505845U | 8 | #define FP_XSTATE_MAGIC2 0x46505845U |
diff --git a/arch/x86/include/asm/sigcontext32.h b/arch/x86/include/asm/sigcontext32.h index 6126188cf3a..ad1478c4ae1 100644 --- a/arch/x86/include/asm/sigcontext32.h +++ b/arch/x86/include/asm/sigcontext32.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _ASM_X86_SIGCONTEXT32_H | 1 | #ifndef _ASM_X86_SIGCONTEXT32_H |
2 | #define _ASM_X86_SIGCONTEXT32_H | 2 | #define _ASM_X86_SIGCONTEXT32_H |
3 | 3 | ||
4 | #include <linux/types.h> | ||
5 | |||
4 | /* signal context for 32bit programs. */ | 6 | /* signal context for 32bit programs. */ |
5 | 7 | ||
6 | #define X86_FXSR_MAGIC 0x0000 | 8 | #define X86_FXSR_MAGIC 0x0000 |
diff --git a/arch/x86/include/asm/swab.h b/arch/x86/include/asm/swab.h index 306d4178ffc..557cd9f0066 100644 --- a/arch/x86/include/asm/swab.h +++ b/arch/x86/include/asm/swab.h | |||
@@ -1,7 +1,7 @@ | |||
1 | #ifndef _ASM_X86_SWAB_H | 1 | #ifndef _ASM_X86_SWAB_H |
2 | #define _ASM_X86_SWAB_H | 2 | #define _ASM_X86_SWAB_H |
3 | 3 | ||
4 | #include <asm/types.h> | 4 | #include <linux/types.h> |
5 | #include <linux/compiler.h> | 5 | #include <linux/compiler.h> |
6 | 6 | ||
7 | static inline __attribute_const__ __u32 __arch_swab32(__u32 val) | 7 | static inline __attribute_const__ __u32 __arch_swab32(__u32 val) |
diff --git a/arch/x86/kernel/ds.c b/arch/x86/kernel/ds.c index da91701a234..169a120587b 100644 --- a/arch/x86/kernel/ds.c +++ b/arch/x86/kernel/ds.c | |||
@@ -15,8 +15,8 @@ | |||
15 | * - buffer allocation (memory accounting) | 15 | * - buffer allocation (memory accounting) |
16 | * | 16 | * |
17 | * | 17 | * |
18 | * Copyright (C) 2007-2008 Intel Corporation. | 18 | * Copyright (C) 2007-2009 Intel Corporation. |
19 | * Markus Metzger <markus.t.metzger@intel.com>, 2007-2008 | 19 | * Markus Metzger <markus.t.metzger@intel.com>, 2007-2009 |
20 | */ | 20 | */ |
21 | 21 | ||
22 | 22 | ||
@@ -890,7 +890,7 @@ int ds_set_pebs_reset(struct pebs_tracer *tracer, u64 value) | |||
890 | } | 890 | } |
891 | 891 | ||
892 | static const struct ds_configuration ds_cfg_netburst = { | 892 | static const struct ds_configuration ds_cfg_netburst = { |
893 | .name = "netburst", | 893 | .name = "Netburst", |
894 | .ctl[dsf_bts] = (1 << 2) | (1 << 3), | 894 | .ctl[dsf_bts] = (1 << 2) | (1 << 3), |
895 | .ctl[dsf_bts_kernel] = (1 << 5), | 895 | .ctl[dsf_bts_kernel] = (1 << 5), |
896 | .ctl[dsf_bts_user] = (1 << 6), | 896 | .ctl[dsf_bts_user] = (1 << 6), |
@@ -904,7 +904,7 @@ static const struct ds_configuration ds_cfg_netburst = { | |||
904 | #endif | 904 | #endif |
905 | }; | 905 | }; |
906 | static const struct ds_configuration ds_cfg_pentium_m = { | 906 | static const struct ds_configuration ds_cfg_pentium_m = { |
907 | .name = "pentium m", | 907 | .name = "Pentium M", |
908 | .ctl[dsf_bts] = (1 << 6) | (1 << 7), | 908 | .ctl[dsf_bts] = (1 << 6) | (1 << 7), |
909 | 909 | ||
910 | .sizeof_field = sizeof(long), | 910 | .sizeof_field = sizeof(long), |
@@ -915,8 +915,8 @@ static const struct ds_configuration ds_cfg_pentium_m = { | |||
915 | .sizeof_rec[ds_pebs] = sizeof(long) * 18, | 915 | .sizeof_rec[ds_pebs] = sizeof(long) * 18, |
916 | #endif | 916 | #endif |
917 | }; | 917 | }; |
918 | static const struct ds_configuration ds_cfg_core2 = { | 918 | static const struct ds_configuration ds_cfg_core2_atom = { |
919 | .name = "core 2", | 919 | .name = "Core 2/Atom", |
920 | .ctl[dsf_bts] = (1 << 6) | (1 << 7), | 920 | .ctl[dsf_bts] = (1 << 6) | (1 << 7), |
921 | .ctl[dsf_bts_kernel] = (1 << 9), | 921 | .ctl[dsf_bts_kernel] = (1 << 9), |
922 | .ctl[dsf_bts_user] = (1 << 10), | 922 | .ctl[dsf_bts_user] = (1 << 10), |
@@ -949,19 +949,22 @@ void __cpuinit ds_init_intel(struct cpuinfo_x86 *c) | |||
949 | switch (c->x86) { | 949 | switch (c->x86) { |
950 | case 0x6: | 950 | case 0x6: |
951 | switch (c->x86_model) { | 951 | switch (c->x86_model) { |
952 | case 0 ... 0xC: | 952 | case 0x9: |
953 | /* sorry, don't know about them */ | 953 | case 0xd: /* Pentium M */ |
954 | break; | ||
955 | case 0xD: | ||
956 | case 0xE: /* Pentium M */ | ||
957 | ds_configure(&ds_cfg_pentium_m); | 954 | ds_configure(&ds_cfg_pentium_m); |
958 | break; | 955 | break; |
959 | default: /* Core2, Atom, ... */ | 956 | case 0xf: |
960 | ds_configure(&ds_cfg_core2); | 957 | case 0x17: /* Core2 */ |
958 | case 0x1c: /* Atom */ | ||
959 | ds_configure(&ds_cfg_core2_atom); | ||
960 | break; | ||
961 | case 0x1a: /* i7 */ | ||
962 | default: | ||
963 | /* sorry, don't know about them */ | ||
961 | break; | 964 | break; |
962 | } | 965 | } |
963 | break; | 966 | break; |
964 | case 0xF: | 967 | case 0xf: |
965 | switch (c->x86_model) { | 968 | switch (c->x86_model) { |
966 | case 0x0: | 969 | case 0x0: |
967 | case 0x1: | 970 | case 0x1: |
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index cd759ad9069..64d5ad0b8ad 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c | |||
@@ -628,11 +628,12 @@ static int hpet_cpuhp_notify(struct notifier_block *n, | |||
628 | 628 | ||
629 | switch (action & 0xf) { | 629 | switch (action & 0xf) { |
630 | case CPU_ONLINE: | 630 | case CPU_ONLINE: |
631 | INIT_DELAYED_WORK(&work.work, hpet_work); | 631 | INIT_DELAYED_WORK_ON_STACK(&work.work, hpet_work); |
632 | init_completion(&work.complete); | 632 | init_completion(&work.complete); |
633 | /* FIXME: add schedule_work_on() */ | 633 | /* FIXME: add schedule_work_on() */ |
634 | schedule_delayed_work_on(cpu, &work.work, 0); | 634 | schedule_delayed_work_on(cpu, &work.work, 0); |
635 | wait_for_completion(&work.complete); | 635 | wait_for_completion(&work.complete); |
636 | destroy_timer_on_stack(&work.work.timer); | ||
636 | break; | 637 | break; |
637 | case CPU_DEAD: | 638 | case CPU_DEAD: |
638 | if (hdev) { | 639 | if (hdev) { |
diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c index 884d985b8b8..e948b28a5a9 100644 --- a/arch/x86/kernel/kprobes.c +++ b/arch/x86/kernel/kprobes.c | |||
@@ -446,7 +446,7 @@ void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri, | |||
446 | static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs, | 446 | static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs, |
447 | struct kprobe_ctlblk *kcb) | 447 | struct kprobe_ctlblk *kcb) |
448 | { | 448 | { |
449 | #if !defined(CONFIG_PREEMPT) || defined(CONFIG_PM) | 449 | #if !defined(CONFIG_PREEMPT) || defined(CONFIG_FREEZER) |
450 | if (p->ainsn.boostable == 1 && !p->post_handler) { | 450 | if (p->ainsn.boostable == 1 && !p->post_handler) { |
451 | /* Boost up -- we can execute copied instructions directly */ | 451 | /* Boost up -- we can execute copied instructions directly */ |
452 | reset_current_kprobe(); | 452 | reset_current_kprobe(); |
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c index 00c2bcd4146..d5768b1af08 100644 --- a/arch/x86/kernel/pci-gart_64.c +++ b/arch/x86/kernel/pci-gart_64.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * This allows to use PCI devices that only support 32bit addresses on systems | 5 | * This allows to use PCI devices that only support 32bit addresses on systems |
6 | * with more than 4GB. | 6 | * with more than 4GB. |
7 | * | 7 | * |
8 | * See Documentation/DMA-mapping.txt for the interface specification. | 8 | * See Documentation/PCI/PCI-DMA-mapping.txt for the interface specification. |
9 | * | 9 | * |
10 | * Copyright 2002 Andi Kleen, SuSE Labs. | 10 | * Copyright 2002 Andi Kleen, SuSE Labs. |
11 | * Subject to the GNU General Public License v2 only. | 11 | * Subject to the GNU General Public License v2 only. |
diff --git a/arch/x86/kernel/syscall_table_32.S b/arch/x86/kernel/syscall_table_32.S index d44395ff34c..e2e86a08f31 100644 --- a/arch/x86/kernel/syscall_table_32.S +++ b/arch/x86/kernel/syscall_table_32.S | |||
@@ -88,7 +88,7 @@ ENTRY(sys_call_table) | |||
88 | .long sys_uselib | 88 | .long sys_uselib |
89 | .long sys_swapon | 89 | .long sys_swapon |
90 | .long sys_reboot | 90 | .long sys_reboot |
91 | .long old_readdir | 91 | .long sys_old_readdir |
92 | .long old_mmap /* 90 */ | 92 | .long old_mmap /* 90 */ |
93 | .long sys_munmap | 93 | .long sys_munmap |
94 | .long sys_truncate | 94 | .long sys_truncate |
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c index a7ed208f81e..92f1c6f3e19 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c | |||
@@ -931,7 +931,7 @@ static void lguest_restart(char *reason) | |||
931 | * that we can fit comfortably. | 931 | * that we can fit comfortably. |
932 | * | 932 | * |
933 | * First we need assembly templates of each of the patchable Guest operations, | 933 | * First we need assembly templates of each of the patchable Guest operations, |
934 | * and these are in lguest_asm.S. */ | 934 | * and these are in i386_head.S. */ |
935 | 935 | ||
936 | /*G:060 We construct a table from the assembler templates: */ | 936 | /*G:060 We construct a table from the assembler templates: */ |
937 | static const struct lguest_insns | 937 | static const struct lguest_insns |
@@ -1093,7 +1093,7 @@ __init void lguest_init(void) | |||
1093 | acpi_ht = 0; | 1093 | acpi_ht = 0; |
1094 | #endif | 1094 | #endif |
1095 | 1095 | ||
1096 | /* We set the perferred console to "hvc". This is the "hypervisor | 1096 | /* We set the preferred console to "hvc". This is the "hypervisor |
1097 | * virtual console" driver written by the PowerPC people, which we also | 1097 | * virtual console" driver written by the PowerPC people, which we also |
1098 | * adapted for lguest's use. */ | 1098 | * adapted for lguest's use. */ |
1099 | add_preferred_console("hvc", 0, NULL); | 1099 | add_preferred_console("hvc", 0, NULL); |
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index ffc88cc00fd..7b61036427d 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c | |||
@@ -618,12 +618,13 @@ void unmap_devmem(unsigned long pfn, unsigned long size, pgprot_t vma_prot) | |||
618 | * Reserved non RAM regions only and after successful reserve_memtype, | 618 | * Reserved non RAM regions only and after successful reserve_memtype, |
619 | * this func also keeps identity mapping (if any) in sync with this new prot. | 619 | * this func also keeps identity mapping (if any) in sync with this new prot. |
620 | */ | 620 | */ |
621 | static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t vma_prot) | 621 | static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot, |
622 | int strict_prot) | ||
622 | { | 623 | { |
623 | int is_ram = 0; | 624 | int is_ram = 0; |
624 | int id_sz, ret; | 625 | int id_sz, ret; |
625 | unsigned long flags; | 626 | unsigned long flags; |
626 | unsigned long want_flags = (pgprot_val(vma_prot) & _PAGE_CACHE_MASK); | 627 | unsigned long want_flags = (pgprot_val(*vma_prot) & _PAGE_CACHE_MASK); |
627 | 628 | ||
628 | is_ram = pagerange_is_ram(paddr, paddr + size); | 629 | is_ram = pagerange_is_ram(paddr, paddr + size); |
629 | 630 | ||
@@ -642,15 +643,24 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t vma_prot) | |||
642 | return ret; | 643 | return ret; |
643 | 644 | ||
644 | if (flags != want_flags) { | 645 | if (flags != want_flags) { |
645 | free_memtype(paddr, paddr + size); | 646 | if (strict_prot || !is_new_memtype_allowed(want_flags, flags)) { |
646 | printk(KERN_ERR | 647 | free_memtype(paddr, paddr + size); |
647 | "%s:%d map pfn expected mapping type %s for %Lx-%Lx, got %s\n", | 648 | printk(KERN_ERR "%s:%d map pfn expected mapping type %s" |
648 | current->comm, current->pid, | 649 | " for %Lx-%Lx, got %s\n", |
649 | cattr_name(want_flags), | 650 | current->comm, current->pid, |
650 | (unsigned long long)paddr, | 651 | cattr_name(want_flags), |
651 | (unsigned long long)(paddr + size), | 652 | (unsigned long long)paddr, |
652 | cattr_name(flags)); | 653 | (unsigned long long)(paddr + size), |
653 | return -EINVAL; | 654 | cattr_name(flags)); |
655 | return -EINVAL; | ||
656 | } | ||
657 | /* | ||
658 | * We allow returning different type than the one requested in | ||
659 | * non strict case. | ||
660 | */ | ||
661 | *vma_prot = __pgprot((pgprot_val(*vma_prot) & | ||
662 | (~_PAGE_CACHE_MASK)) | | ||
663 | flags); | ||
654 | } | 664 | } |
655 | 665 | ||
656 | /* Need to keep identity mapping in sync */ | 666 | /* Need to keep identity mapping in sync */ |
@@ -706,6 +716,7 @@ int track_pfn_vma_copy(struct vm_area_struct *vma) | |||
706 | unsigned long vma_start = vma->vm_start; | 716 | unsigned long vma_start = vma->vm_start; |
707 | unsigned long vma_end = vma->vm_end; | 717 | unsigned long vma_end = vma->vm_end; |
708 | unsigned long vma_size = vma_end - vma_start; | 718 | unsigned long vma_size = vma_end - vma_start; |
719 | pgprot_t pgprot; | ||
709 | 720 | ||
710 | if (!pat_enabled) | 721 | if (!pat_enabled) |
711 | return 0; | 722 | return 0; |
@@ -719,7 +730,8 @@ int track_pfn_vma_copy(struct vm_area_struct *vma) | |||
719 | WARN_ON_ONCE(1); | 730 | WARN_ON_ONCE(1); |
720 | return -EINVAL; | 731 | return -EINVAL; |
721 | } | 732 | } |
722 | return reserve_pfn_range(paddr, vma_size, __pgprot(prot)); | 733 | pgprot = __pgprot(prot); |
734 | return reserve_pfn_range(paddr, vma_size, &pgprot, 1); | ||
723 | } | 735 | } |
724 | 736 | ||
725 | /* reserve entire vma page by page, using pfn and prot from pte */ | 737 | /* reserve entire vma page by page, using pfn and prot from pte */ |
@@ -727,7 +739,8 @@ int track_pfn_vma_copy(struct vm_area_struct *vma) | |||
727 | if (follow_phys(vma, vma_start + i, 0, &prot, &paddr)) | 739 | if (follow_phys(vma, vma_start + i, 0, &prot, &paddr)) |
728 | continue; | 740 | continue; |
729 | 741 | ||
730 | retval = reserve_pfn_range(paddr, PAGE_SIZE, __pgprot(prot)); | 742 | pgprot = __pgprot(prot); |
743 | retval = reserve_pfn_range(paddr, PAGE_SIZE, &pgprot, 1); | ||
731 | if (retval) | 744 | if (retval) |
732 | goto cleanup_ret; | 745 | goto cleanup_ret; |
733 | } | 746 | } |
@@ -758,7 +771,7 @@ cleanup_ret: | |||
758 | * Note that this function can be called with caller trying to map only a | 771 | * Note that this function can be called with caller trying to map only a |
759 | * subrange/page inside the vma. | 772 | * subrange/page inside the vma. |
760 | */ | 773 | */ |
761 | int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t prot, | 774 | int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t *prot, |
762 | unsigned long pfn, unsigned long size) | 775 | unsigned long pfn, unsigned long size) |
763 | { | 776 | { |
764 | int retval = 0; | 777 | int retval = 0; |
@@ -775,14 +788,14 @@ int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t prot, | |||
775 | if (is_linear_pfn_mapping(vma)) { | 788 | if (is_linear_pfn_mapping(vma)) { |
776 | /* reserve the whole chunk starting from vm_pgoff */ | 789 | /* reserve the whole chunk starting from vm_pgoff */ |
777 | paddr = (resource_size_t)vma->vm_pgoff << PAGE_SHIFT; | 790 | paddr = (resource_size_t)vma->vm_pgoff << PAGE_SHIFT; |
778 | return reserve_pfn_range(paddr, vma_size, prot); | 791 | return reserve_pfn_range(paddr, vma_size, prot, 0); |
779 | } | 792 | } |
780 | 793 | ||
781 | /* reserve page by page using pfn and size */ | 794 | /* reserve page by page using pfn and size */ |
782 | base_paddr = (resource_size_t)pfn << PAGE_SHIFT; | 795 | base_paddr = (resource_size_t)pfn << PAGE_SHIFT; |
783 | for (i = 0; i < size; i += PAGE_SIZE) { | 796 | for (i = 0; i < size; i += PAGE_SIZE) { |
784 | paddr = base_paddr + i; | 797 | paddr = base_paddr + i; |
785 | retval = reserve_pfn_range(paddr, PAGE_SIZE, prot); | 798 | retval = reserve_pfn_range(paddr, PAGE_SIZE, prot, 0); |
786 | if (retval) | 799 | if (retval) |
787 | goto cleanup_ret; | 800 | goto cleanup_ret; |
788 | } | 801 | } |
diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c index f884740da31..5ead808dd70 100644 --- a/arch/x86/pci/i386.c +++ b/arch/x86/pci/i386.c | |||
@@ -314,17 +314,7 @@ int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, | |||
314 | return retval; | 314 | return retval; |
315 | 315 | ||
316 | if (flags != new_flags) { | 316 | if (flags != new_flags) { |
317 | /* | 317 | if (!is_new_memtype_allowed(flags, new_flags)) { |
318 | * Do not fallback to certain memory types with certain | ||
319 | * requested type: | ||
320 | * - request is uncached, return cannot be write-back | ||
321 | * - request is uncached, return cannot be write-combine | ||
322 | * - request is write-combine, return cannot be write-back | ||
323 | */ | ||
324 | if ((flags == _PAGE_CACHE_UC_MINUS && | ||
325 | (new_flags == _PAGE_CACHE_WB)) || | ||
326 | (flags == _PAGE_CACHE_WC && | ||
327 | new_flags == _PAGE_CACHE_WB)) { | ||
328 | free_memtype(addr, addr+len); | 318 | free_memtype(addr, addr+len); |
329 | return -EINVAL; | 319 | return -EINVAL; |
330 | } | 320 | } |
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c index 4064345cf14..fecbce6e7d7 100644 --- a/arch/x86/pci/irq.c +++ b/arch/x86/pci/irq.c | |||
@@ -572,6 +572,7 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route | |||
572 | case PCI_DEVICE_ID_INTEL_ICH7_1: | 572 | case PCI_DEVICE_ID_INTEL_ICH7_1: |
573 | case PCI_DEVICE_ID_INTEL_ICH7_30: | 573 | case PCI_DEVICE_ID_INTEL_ICH7_30: |
574 | case PCI_DEVICE_ID_INTEL_ICH7_31: | 574 | case PCI_DEVICE_ID_INTEL_ICH7_31: |
575 | case PCI_DEVICE_ID_INTEL_TGP_LPC: | ||
575 | case PCI_DEVICE_ID_INTEL_ESB2_0: | 576 | case PCI_DEVICE_ID_INTEL_ESB2_0: |
576 | case PCI_DEVICE_ID_INTEL_ICH8_0: | 577 | case PCI_DEVICE_ID_INTEL_ICH8_0: |
577 | case PCI_DEVICE_ID_INTEL_ICH8_1: | 578 | case PCI_DEVICE_ID_INTEL_ICH8_1: |
diff --git a/arch/x86/scripts/strip-symbols b/arch/x86/scripts/strip-symbols deleted file mode 100644 index a2f1ccb827c..00000000000 --- a/arch/x86/scripts/strip-symbols +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | __cpu_vendor_dev_X86_VENDOR_* | ||
diff --git a/arch/x86/xen/multicalls.h b/arch/x86/xen/multicalls.h index 85893824161..fa3e10725d9 100644 --- a/arch/x86/xen/multicalls.h +++ b/arch/x86/xen/multicalls.h | |||
@@ -19,8 +19,10 @@ DECLARE_PER_CPU(unsigned long, xen_mc_irq_flags); | |||
19 | paired with xen_mc_issue() */ | 19 | paired with xen_mc_issue() */ |
20 | static inline void xen_mc_batch(void) | 20 | static inline void xen_mc_batch(void) |
21 | { | 21 | { |
22 | unsigned long flags; | ||
22 | /* need to disable interrupts until this entry is complete */ | 23 | /* need to disable interrupts until this entry is complete */ |
23 | local_irq_save(__get_cpu_var(xen_mc_irq_flags)); | 24 | local_irq_save(flags); |
25 | __get_cpu_var(xen_mc_irq_flags) = flags; | ||
24 | } | 26 | } |
25 | 27 | ||
26 | static inline struct multicall_space xen_mc_entry(size_t args) | 28 | static inline struct multicall_space xen_mc_entry(size_t args) |