diff options
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/Kconfig | 1 | ||||
-rw-r--r-- | arch/ia64/kernel/sys_ia64.c | 7 | ||||
-rw-r--r-- | arch/ia64/mm/hugetlbpage.c | 8 | ||||
-rw-r--r-- | arch/ia64/mm/init.c | 2 | ||||
-rw-r--r-- | arch/ia64/sn/kernel/huberror.c | 1 | ||||
-rw-r--r-- | arch/ia64/sn/kernel/msi_sn.c | 4 | ||||
-rw-r--r-- | arch/ia64/sn/kernel/xpnet.c | 1 |
7 files changed, 19 insertions, 5 deletions
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 09866581a326..e23af4b6ae8c 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -14,6 +14,7 @@ config IA64 | |||
14 | select PCI if (!IA64_HP_SIM) | 14 | select PCI if (!IA64_HP_SIM) |
15 | select ACPI if (!IA64_HP_SIM) | 15 | select ACPI if (!IA64_HP_SIM) |
16 | select PM if (!IA64_HP_SIM) | 16 | select PM if (!IA64_HP_SIM) |
17 | select ARCH_SUPPORTS_MSI | ||
17 | default y | 18 | default y |
18 | help | 19 | help |
19 | The Itanium Processor Family is Intel's 64-bit successor to | 20 | The Itanium Processor Family is Intel's 64-bit successor to |
diff --git a/arch/ia64/kernel/sys_ia64.c b/arch/ia64/kernel/sys_ia64.c index 9ef62a3fbfad..2fcaa2051aa3 100644 --- a/arch/ia64/kernel/sys_ia64.c +++ b/arch/ia64/kernel/sys_ia64.c | |||
@@ -33,6 +33,13 @@ arch_get_unmapped_area (struct file *filp, unsigned long addr, unsigned long len | |||
33 | if (len > RGN_MAP_LIMIT) | 33 | if (len > RGN_MAP_LIMIT) |
34 | return -ENOMEM; | 34 | return -ENOMEM; |
35 | 35 | ||
36 | /* handle fixed mapping: prevent overlap with huge pages */ | ||
37 | if (flags & MAP_FIXED) { | ||
38 | if (is_hugepage_only_range(mm, addr, len)) | ||
39 | return -EINVAL; | ||
40 | return addr; | ||
41 | } | ||
42 | |||
36 | #ifdef CONFIG_HUGETLB_PAGE | 43 | #ifdef CONFIG_HUGETLB_PAGE |
37 | if (REGION_NUMBER(addr) == RGN_HPAGE) | 44 | if (REGION_NUMBER(addr) == RGN_HPAGE) |
38 | addr = 0; | 45 | addr = 0; |
diff --git a/arch/ia64/mm/hugetlbpage.c b/arch/ia64/mm/hugetlbpage.c index 0c7e94edc20e..c7c90f4f4298 100644 --- a/arch/ia64/mm/hugetlbpage.c +++ b/arch/ia64/mm/hugetlbpage.c | |||
@@ -148,6 +148,14 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, u | |||
148 | return -ENOMEM; | 148 | return -ENOMEM; |
149 | if (len & ~HPAGE_MASK) | 149 | if (len & ~HPAGE_MASK) |
150 | return -EINVAL; | 150 | return -EINVAL; |
151 | |||
152 | /* Handle MAP_FIXED */ | ||
153 | if (flags & MAP_FIXED) { | ||
154 | if (prepare_hugepage_range(addr, len, pgoff)) | ||
155 | return -EINVAL; | ||
156 | return addr; | ||
157 | } | ||
158 | |||
151 | /* This code assumes that RGN_HPAGE != 0. */ | 159 | /* This code assumes that RGN_HPAGE != 0. */ |
152 | if ((REGION_NUMBER(addr) != RGN_HPAGE) || (addr & (HPAGE_SIZE - 1))) | 160 | if ((REGION_NUMBER(addr) != RGN_HPAGE) || (addr & (HPAGE_SIZE - 1))) |
153 | addr = HPAGE_REGION_BASE; | 161 | addr = HPAGE_REGION_BASE; |
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index 5b70241741b4..cffb1e8325e8 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
@@ -121,7 +121,7 @@ lazy_mmu_prot_update (pte_t pte) | |||
121 | return; /* i-cache is already coherent with d-cache */ | 121 | return; /* i-cache is already coherent with d-cache */ |
122 | 122 | ||
123 | if (PageCompound(page)) { | 123 | if (PageCompound(page)) { |
124 | order = (unsigned long) (page[1].lru.prev); | 124 | order = compound_order(page); |
125 | flush_icache_range(addr, addr + (1UL << order << PAGE_SHIFT)); | 125 | flush_icache_range(addr, addr + (1UL << order << PAGE_SHIFT)); |
126 | } | 126 | } |
127 | else | 127 | else |
diff --git a/arch/ia64/sn/kernel/huberror.c b/arch/ia64/sn/kernel/huberror.c index fcf7f93c4b61..2c3f9dfca78b 100644 --- a/arch/ia64/sn/kernel/huberror.c +++ b/arch/ia64/sn/kernel/huberror.c | |||
@@ -8,7 +8,6 @@ | |||
8 | 8 | ||
9 | #include <linux/types.h> | 9 | #include <linux/types.h> |
10 | #include <linux/interrupt.h> | 10 | #include <linux/interrupt.h> |
11 | #include <linux/pci.h> | ||
12 | #include <asm/delay.h> | 11 | #include <asm/delay.h> |
13 | #include <asm/sn/sn_sal.h> | 12 | #include <asm/sn/sn_sal.h> |
14 | #include "ioerror.h" | 13 | #include "ioerror.h" |
diff --git a/arch/ia64/sn/kernel/msi_sn.c b/arch/ia64/sn/kernel/msi_sn.c index 49873aa4a37d..83f190ffe350 100644 --- a/arch/ia64/sn/kernel/msi_sn.c +++ b/arch/ia64/sn/kernel/msi_sn.c | |||
@@ -87,7 +87,6 @@ int sn_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *entry) | |||
87 | if (irq < 0) | 87 | if (irq < 0) |
88 | return irq; | 88 | return irq; |
89 | 89 | ||
90 | set_irq_msi(irq, entry); | ||
91 | /* | 90 | /* |
92 | * Set up the vector plumbing. Let the prom (via sn_intr_alloc) | 91 | * Set up the vector plumbing. Let the prom (via sn_intr_alloc) |
93 | * decide which cpu to direct this msi at by default. | 92 | * decide which cpu to direct this msi at by default. |
@@ -144,10 +143,11 @@ int sn_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *entry) | |||
144 | */ | 143 | */ |
145 | msg.data = 0x100 + irq; | 144 | msg.data = 0x100 + irq; |
146 | 145 | ||
146 | set_irq_msi(irq, entry); | ||
147 | write_msi_msg(irq, &msg); | 147 | write_msi_msg(irq, &msg); |
148 | set_irq_chip_and_handler(irq, &sn_msi_chip, handle_edge_irq); | 148 | set_irq_chip_and_handler(irq, &sn_msi_chip, handle_edge_irq); |
149 | 149 | ||
150 | return irq; | 150 | return 0; |
151 | } | 151 | } |
152 | 152 | ||
153 | #ifdef CONFIG_SMP | 153 | #ifdef CONFIG_SMP |
diff --git a/arch/ia64/sn/kernel/xpnet.c b/arch/ia64/sn/kernel/xpnet.c index 5419acb89a8c..88fad85ceeff 100644 --- a/arch/ia64/sn/kernel/xpnet.c +++ b/arch/ia64/sn/kernel/xpnet.c | |||
@@ -24,7 +24,6 @@ | |||
24 | 24 | ||
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | #include <linux/kernel.h> | 26 | #include <linux/kernel.h> |
27 | #include <linux/pci.h> | ||
28 | #include <linux/init.h> | 27 | #include <linux/init.h> |
29 | #include <linux/ioport.h> | 28 | #include <linux/ioport.h> |
30 | #include <linux/netdevice.h> | 29 | #include <linux/netdevice.h> |