diff options
| -rw-r--r-- | arch/x86/boot/Makefile | 3 | ||||
| -rw-r--r-- | arch/x86/boot/compressed/Makefile | 1 | ||||
| -rw-r--r-- | arch/x86/include/asm/pci.h | 36 | ||||
| -rw-r--r-- | arch/x86/include/asm/pci_32.h | 34 | ||||
| -rw-r--r-- | arch/x86/include/asm/pci_64.h | 22 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/mtrr/generic.c | 3 | ||||
| -rw-r--r-- | arch/x86/kernel/setup_percpu.c | 16 | ||||
| -rw-r--r-- | arch/x86/kernel/signal.c | 2 | ||||
| -rw-r--r-- | arch/x86/mm/iomap_32.c | 2 | ||||
| -rw-r--r-- | arch/x86/power/Makefile | 5 |
10 files changed, 43 insertions, 81 deletions
diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile index fb737ce5888d..6633b6e7505a 100644 --- a/arch/x86/boot/Makefile +++ b/arch/x86/boot/Makefile | |||
| @@ -57,6 +57,7 @@ $(obj)/cpustr.h: $(obj)/mkcpustr FORCE | |||
| 57 | # How to compile the 16-bit code. Note we always compile for -march=i386, | 57 | # How to compile the 16-bit code. Note we always compile for -march=i386, |
| 58 | # that way we can complain to the user if the CPU is insufficient. | 58 | # that way we can complain to the user if the CPU is insufficient. |
| 59 | KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os -D_SETUP -D__KERNEL__ \ | 59 | KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os -D_SETUP -D__KERNEL__ \ |
| 60 | -DDISABLE_BRANCH_PROFILING \ | ||
| 60 | -Wall -Wstrict-prototypes \ | 61 | -Wall -Wstrict-prototypes \ |
| 61 | -march=i386 -mregparm=3 \ | 62 | -march=i386 -mregparm=3 \ |
| 62 | -include $(srctree)/$(src)/code16gcc.h \ | 63 | -include $(srctree)/$(src)/code16gcc.h \ |
| @@ -66,7 +67,7 @@ KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os -D_SETUP -D__KERNEL__ \ | |||
| 66 | $(call cc-option, -fno-unit-at-a-time)) \ | 67 | $(call cc-option, -fno-unit-at-a-time)) \ |
| 67 | $(call cc-option, -fno-stack-protector) \ | 68 | $(call cc-option, -fno-stack-protector) \ |
| 68 | $(call cc-option, -mpreferred-stack-boundary=2) | 69 | $(call cc-option, -mpreferred-stack-boundary=2) |
| 69 | KBUILD_CFLAGS += $(call cc-option,-m32) | 70 | KBUILD_CFLAGS += $(call cc-option, -m32) |
| 70 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ | 71 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ |
| 71 | 72 | ||
| 72 | $(obj)/bzImage: asflags-y := $(SVGA_MODE) | 73 | $(obj)/bzImage: asflags-y := $(SVGA_MODE) |
diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile index 3ca4c194b8e5..65551c9f8571 100644 --- a/arch/x86/boot/compressed/Makefile +++ b/arch/x86/boot/compressed/Makefile | |||
| @@ -8,6 +8,7 @@ targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma h | |||
| 8 | 8 | ||
| 9 | KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2 | 9 | KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2 |
| 10 | KBUILD_CFLAGS += -fno-strict-aliasing -fPIC | 10 | KBUILD_CFLAGS += -fno-strict-aliasing -fPIC |
| 11 | KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING | ||
| 11 | cflags-$(CONFIG_X86_64) := -mcmodel=small | 12 | cflags-$(CONFIG_X86_64) := -mcmodel=small |
| 12 | KBUILD_CFLAGS += $(cflags-y) | 13 | KBUILD_CFLAGS += $(cflags-y) |
| 13 | KBUILD_CFLAGS += $(call cc-option,-ffreestanding) | 14 | KBUILD_CFLAGS += $(call cc-option,-ffreestanding) |
diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h index a0301bfeb954..e545ea01abcf 100644 --- a/arch/x86/include/asm/pci.h +++ b/arch/x86/include/asm/pci.h | |||
| @@ -89,12 +89,40 @@ extern void pci_iommu_alloc(void); | |||
| 89 | /* MSI arch hook */ | 89 | /* MSI arch hook */ |
| 90 | #define arch_setup_msi_irqs arch_setup_msi_irqs | 90 | #define arch_setup_msi_irqs arch_setup_msi_irqs |
| 91 | 91 | ||
| 92 | #endif /* __KERNEL__ */ | 92 | #define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys) |
| 93 | |||
| 94 | #if defined(CONFIG_X86_64) || defined(CONFIG_DMA_API_DEBUG) | ||
| 95 | |||
| 96 | #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) \ | ||
| 97 | dma_addr_t ADDR_NAME; | ||
| 98 | #define DECLARE_PCI_UNMAP_LEN(LEN_NAME) \ | ||
| 99 | __u32 LEN_NAME; | ||
| 100 | #define pci_unmap_addr(PTR, ADDR_NAME) \ | ||
| 101 | ((PTR)->ADDR_NAME) | ||
| 102 | #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) \ | ||
| 103 | (((PTR)->ADDR_NAME) = (VAL)) | ||
| 104 | #define pci_unmap_len(PTR, LEN_NAME) \ | ||
| 105 | ((PTR)->LEN_NAME) | ||
| 106 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) \ | ||
| 107 | (((PTR)->LEN_NAME) = (VAL)) | ||
| 93 | 108 | ||
| 94 | #ifdef CONFIG_X86_32 | ||
| 95 | # include "pci_32.h" | ||
| 96 | #else | 109 | #else |
| 97 | # include "pci_64.h" | 110 | |
| 111 | #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME[0]; | ||
| 112 | #define DECLARE_PCI_UNMAP_LEN(LEN_NAME) unsigned LEN_NAME[0]; | ||
| 113 | #define pci_unmap_addr(PTR, ADDR_NAME) sizeof((PTR)->ADDR_NAME) | ||
| 114 | #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) \ | ||
| 115 | do { break; } while (pci_unmap_addr(PTR, ADDR_NAME)) | ||
| 116 | #define pci_unmap_len(PTR, LEN_NAME) sizeof((PTR)->LEN_NAME) | ||
| 117 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) \ | ||
| 118 | do { break; } while (pci_unmap_len(PTR, LEN_NAME)) | ||
| 119 | |||
| 120 | #endif | ||
| 121 | |||
| 122 | #endif /* __KERNEL__ */ | ||
| 123 | |||
| 124 | #ifdef CONFIG_X86_64 | ||
| 125 | #include "pci_64.h" | ||
| 98 | #endif | 126 | #endif |
| 99 | 127 | ||
| 100 | /* implement the pci_ DMA API in terms of the generic device dma_ one */ | 128 | /* implement the pci_ DMA API in terms of the generic device dma_ one */ |
diff --git a/arch/x86/include/asm/pci_32.h b/arch/x86/include/asm/pci_32.h deleted file mode 100644 index 6f1213a6ef4f..000000000000 --- a/arch/x86/include/asm/pci_32.h +++ /dev/null | |||
| @@ -1,34 +0,0 @@ | |||
| 1 | #ifndef _ASM_X86_PCI_32_H | ||
| 2 | #define _ASM_X86_PCI_32_H | ||
| 3 | |||
| 4 | |||
| 5 | #ifdef __KERNEL__ | ||
| 6 | |||
| 7 | |||
| 8 | /* Dynamic DMA mapping stuff. | ||
| 9 | * i386 has everything mapped statically. | ||
| 10 | */ | ||
| 11 | |||
| 12 | struct pci_dev; | ||
| 13 | |||
| 14 | /* The PCI address space does equal the physical memory | ||
| 15 | * address space. The networking and block device layers use | ||
| 16 | * this boolean for bounce buffer decisions. | ||
| 17 | */ | ||
| 18 | #define PCI_DMA_BUS_IS_PHYS (1) | ||
| 19 | |||
| 20 | /* pci_unmap_{page,single} is a nop so... */ | ||
| 21 | #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME[0]; | ||
| 22 | #define DECLARE_PCI_UNMAP_LEN(LEN_NAME) unsigned LEN_NAME[0]; | ||
| 23 | #define pci_unmap_addr(PTR, ADDR_NAME) sizeof((PTR)->ADDR_NAME) | ||
| 24 | #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) \ | ||
| 25 | do { break; } while (pci_unmap_addr(PTR, ADDR_NAME)) | ||
| 26 | #define pci_unmap_len(PTR, LEN_NAME) sizeof((PTR)->LEN_NAME) | ||
| 27 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) \ | ||
| 28 | do { break; } while (pci_unmap_len(PTR, LEN_NAME)) | ||
| 29 | |||
| 30 | |||
| 31 | #endif /* __KERNEL__ */ | ||
| 32 | |||
| 33 | |||
| 34 | #endif /* _ASM_X86_PCI_32_H */ | ||
diff --git a/arch/x86/include/asm/pci_64.h b/arch/x86/include/asm/pci_64.h index 4da207982777..ae5e40f67daf 100644 --- a/arch/x86/include/asm/pci_64.h +++ b/arch/x86/include/asm/pci_64.h | |||
| @@ -24,28 +24,6 @@ extern int (*pci_config_write)(int seg, int bus, int dev, int fn, | |||
| 24 | 24 | ||
| 25 | extern void dma32_reserve_bootmem(void); | 25 | extern void dma32_reserve_bootmem(void); |
| 26 | 26 | ||
| 27 | /* The PCI address space does equal the physical memory | ||
| 28 | * address space. The networking and block device layers use | ||
| 29 | * this boolean for bounce buffer decisions | ||
| 30 | * | ||
| 31 | * On AMD64 it mostly equals, but we set it to zero if a hardware | ||
| 32 | * IOMMU (gart) of sotware IOMMU (swiotlb) is available. | ||
| 33 | */ | ||
| 34 | #define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys) | ||
| 35 | |||
| 36 | #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) \ | ||
| 37 | dma_addr_t ADDR_NAME; | ||
| 38 | #define DECLARE_PCI_UNMAP_LEN(LEN_NAME) \ | ||
| 39 | __u32 LEN_NAME; | ||
| 40 | #define pci_unmap_addr(PTR, ADDR_NAME) \ | ||
| 41 | ((PTR)->ADDR_NAME) | ||
| 42 | #define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) \ | ||
| 43 | (((PTR)->ADDR_NAME) = (VAL)) | ||
| 44 | #define pci_unmap_len(PTR, LEN_NAME) \ | ||
| 45 | ((PTR)->LEN_NAME) | ||
| 46 | #define pci_unmap_len_set(PTR, LEN_NAME, VAL) \ | ||
| 47 | (((PTR)->LEN_NAME) = (VAL)) | ||
| 48 | |||
| 49 | #endif /* __KERNEL__ */ | 27 | #endif /* __KERNEL__ */ |
| 50 | 28 | ||
| 51 | #endif /* _ASM_X86_PCI_64_H */ | 29 | #endif /* _ASM_X86_PCI_64_H */ |
diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c index 37f28fc7cf95..0b776c09aff3 100644 --- a/arch/x86/kernel/cpu/mtrr/generic.c +++ b/arch/x86/kernel/cpu/mtrr/generic.c | |||
| @@ -462,9 +462,6 @@ static void generic_get_mtrr(unsigned int reg, unsigned long *base, | |||
| 462 | *base = base_hi << (32 - PAGE_SHIFT) | base_lo >> PAGE_SHIFT; | 462 | *base = base_hi << (32 - PAGE_SHIFT) | base_lo >> PAGE_SHIFT; |
| 463 | *type = base_lo & 0xff; | 463 | *type = base_lo & 0xff; |
| 464 | 464 | ||
| 465 | printk(KERN_DEBUG " get_mtrr: cpu%d reg%02d base=%010lx size=%010lx %s\n", | ||
| 466 | cpu, reg, *base, *size, | ||
| 467 | mtrr_attrib_to_str(*type & 0xff)); | ||
| 468 | out_put_cpu: | 465 | out_put_cpu: |
| 469 | put_cpu(); | 466 | put_cpu(); |
| 470 | } | 467 | } |
diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c index 400331b50a53..3a97a4cf1872 100644 --- a/arch/x86/kernel/setup_percpu.c +++ b/arch/x86/kernel/setup_percpu.c | |||
| @@ -153,7 +153,6 @@ static struct page * __init pcpur_get_page(unsigned int cpu, int pageno) | |||
| 153 | static ssize_t __init setup_pcpu_remap(size_t static_size) | 153 | static ssize_t __init setup_pcpu_remap(size_t static_size) |
| 154 | { | 154 | { |
| 155 | static struct vm_struct vm; | 155 | static struct vm_struct vm; |
| 156 | pg_data_t *last; | ||
| 157 | size_t ptrs_size, dyn_size; | 156 | size_t ptrs_size, dyn_size; |
| 158 | unsigned int cpu; | 157 | unsigned int cpu; |
| 159 | ssize_t ret; | 158 | ssize_t ret; |
| @@ -162,22 +161,9 @@ static ssize_t __init setup_pcpu_remap(size_t static_size) | |||
| 162 | * If large page isn't supported, there's no benefit in doing | 161 | * If large page isn't supported, there's no benefit in doing |
| 163 | * this. Also, on non-NUMA, embedding is better. | 162 | * this. Also, on non-NUMA, embedding is better. |
| 164 | */ | 163 | */ |
| 165 | if (!cpu_has_pse || pcpu_need_numa()) | 164 | if (!cpu_has_pse || !pcpu_need_numa()) |
| 166 | return -EINVAL; | 165 | return -EINVAL; |
| 167 | 166 | ||
| 168 | last = NULL; | ||
| 169 | for_each_possible_cpu(cpu) { | ||
| 170 | int node = early_cpu_to_node(cpu); | ||
| 171 | |||
| 172 | if (node_online(node) && NODE_DATA(node) && | ||
| 173 | last && last != NODE_DATA(node)) | ||
| 174 | goto proceed; | ||
| 175 | |||
| 176 | last = NODE_DATA(node); | ||
| 177 | } | ||
| 178 | return -EINVAL; | ||
| 179 | |||
| 180 | proceed: | ||
| 181 | /* | 167 | /* |
| 182 | * Currently supports only single page. Supporting multiple | 168 | * Currently supports only single page. Supporting multiple |
| 183 | * pages won't be too difficult if it ever becomes necessary. | 169 | * pages won't be too difficult if it ever becomes necessary. |
diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c index dfcc74ab0ab6..14425166b8e3 100644 --- a/arch/x86/kernel/signal.c +++ b/arch/x86/kernel/signal.c | |||
| @@ -221,7 +221,7 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size, | |||
| 221 | if (!onsigstack) { | 221 | if (!onsigstack) { |
| 222 | /* This is the X/Open sanctioned signal stack switching. */ | 222 | /* This is the X/Open sanctioned signal stack switching. */ |
| 223 | if (ka->sa.sa_flags & SA_ONSTACK) { | 223 | if (ka->sa.sa_flags & SA_ONSTACK) { |
| 224 | if (sas_ss_flags(sp) == 0) | 224 | if (current->sas_ss_size) |
| 225 | sp = current->sas_ss_sp + current->sas_ss_size; | 225 | sp = current->sas_ss_sp + current->sas_ss_size; |
| 226 | } else { | 226 | } else { |
| 227 | #ifdef CONFIG_X86_32 | 227 | #ifdef CONFIG_X86_32 |
diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c index e331f77348a7..8056545e2d39 100644 --- a/arch/x86/mm/iomap_32.c +++ b/arch/x86/mm/iomap_32.c | |||
| @@ -23,7 +23,7 @@ | |||
| 23 | 23 | ||
| 24 | int is_io_mapping_possible(resource_size_t base, unsigned long size) | 24 | int is_io_mapping_possible(resource_size_t base, unsigned long size) |
| 25 | { | 25 | { |
| 26 | #ifndef CONFIG_X86_PAE | 26 | #if !defined(CONFIG_X86_PAE) && defined(CONFIG_PHYS_ADDR_T_64BIT) |
| 27 | /* There is no way to map greater than 1 << 32 address without PAE */ | 27 | /* There is no way to map greater than 1 << 32 address without PAE */ |
| 28 | if (base + size > 0x100000000ULL) | 28 | if (base + size > 0x100000000ULL) |
| 29 | return 0; | 29 | return 0; |
diff --git a/arch/x86/power/Makefile b/arch/x86/power/Makefile index 9ff4d5b55ad1..58b32db33125 100644 --- a/arch/x86/power/Makefile +++ b/arch/x86/power/Makefile | |||
| @@ -1,2 +1,7 @@ | |||
| 1 | # __restore_processor_state() restores %gs after S3 resume and so should not | ||
| 2 | # itself be stack-protected | ||
| 3 | nostackp := $(call cc-option, -fno-stack-protector) | ||
| 4 | CFLAGS_cpu_$(BITS).o := $(nostackp) | ||
| 5 | |||
| 1 | obj-$(CONFIG_PM_SLEEP) += cpu_$(BITS).o | 6 | obj-$(CONFIG_PM_SLEEP) += cpu_$(BITS).o |
| 2 | obj-$(CONFIG_HIBERNATION) += hibernate_$(BITS).o hibernate_asm_$(BITS).o | 7 | obj-$(CONFIG_HIBERNATION) += hibernate_$(BITS).o hibernate_asm_$(BITS).o |
