diff options
Diffstat (limited to 'arch/ia64')
| -rw-r--r-- | arch/ia64/Makefile | 1 | ||||
| -rw-r--r-- | arch/ia64/kernel/iosapic.c | 2 | ||||
| -rw-r--r-- | arch/ia64/kernel/perfmon.c | 10 | ||||
| -rw-r--r-- | arch/ia64/kernel/sal.c | 7 | ||||
| -rw-r--r-- | arch/ia64/kernel/setup.c | 3 | ||||
| -rw-r--r-- | arch/ia64/sn/kernel/sn2/sn2_smp.c | 2 | ||||
| -rw-r--r-- | arch/ia64/uv/kernel/setup.c | 12 |
7 files changed, 24 insertions, 13 deletions
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile index 88f1a55c6c94..e67ee3f27698 100644 --- a/arch/ia64/Makefile +++ b/arch/ia64/Makefile | |||
| @@ -57,6 +57,7 @@ core-$(CONFIG_IA64_GENERIC) += arch/ia64/dig/ | |||
| 57 | core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/ | 57 | core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/ |
| 58 | core-$(CONFIG_IA64_HP_ZX1_SWIOTLB) += arch/ia64/dig/ | 58 | core-$(CONFIG_IA64_HP_ZX1_SWIOTLB) += arch/ia64/dig/ |
| 59 | core-$(CONFIG_IA64_SGI_SN2) += arch/ia64/sn/ | 59 | core-$(CONFIG_IA64_SGI_SN2) += arch/ia64/sn/ |
| 60 | core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/ | ||
| 60 | core-$(CONFIG_KVM) += arch/ia64/kvm/ | 61 | core-$(CONFIG_KVM) += arch/ia64/kvm/ |
| 61 | 62 | ||
| 62 | drivers-$(CONFIG_PCI) += arch/ia64/pci/ | 63 | drivers-$(CONFIG_PCI) += arch/ia64/pci/ |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index 082c31dcfd99..39752cdef6ff 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
| @@ -558,8 +558,6 @@ static struct iosapic_rte_info * __init_refok iosapic_alloc_rte (void) | |||
| 558 | if (!iosapic_kmalloc_ok && list_empty(&free_rte_list)) { | 558 | if (!iosapic_kmalloc_ok && list_empty(&free_rte_list)) { |
| 559 | rte = alloc_bootmem(sizeof(struct iosapic_rte_info) * | 559 | rte = alloc_bootmem(sizeof(struct iosapic_rte_info) * |
| 560 | NR_PREALLOCATE_RTE_ENTRIES); | 560 | NR_PREALLOCATE_RTE_ENTRIES); |
| 561 | if (!rte) | ||
| 562 | return NULL; | ||
| 563 | for (i = 0; i < NR_PREALLOCATE_RTE_ENTRIES; i++, rte++) | 561 | for (i = 0; i < NR_PREALLOCATE_RTE_ENTRIES; i++, rte++) |
| 564 | list_add(&rte->rte_list, &free_rte_list); | 562 | list_add(&rte->rte_list, &free_rte_list); |
| 565 | } | 563 | } |
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index 71d05133f556..7714a97b0104 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c | |||
| @@ -1864,11 +1864,6 @@ pfm_flush(struct file *filp, fl_owner_t id) | |||
| 1864 | * invoked after, it will find an empty queue and no | 1864 | * invoked after, it will find an empty queue and no |
| 1865 | * signal will be sent. In both case, we are safe | 1865 | * signal will be sent. In both case, we are safe |
| 1866 | */ | 1866 | */ |
| 1867 | if (filp->f_flags & FASYNC) { | ||
| 1868 | DPRINT(("cleaning up async_queue=%p\n", ctx->ctx_async_queue)); | ||
| 1869 | pfm_do_fasync (-1, filp, ctx, 0); | ||
| 1870 | } | ||
| 1871 | |||
| 1872 | PROTECT_CTX(ctx, flags); | 1867 | PROTECT_CTX(ctx, flags); |
| 1873 | 1868 | ||
| 1874 | state = ctx->ctx_state; | 1869 | state = ctx->ctx_state; |
| @@ -1999,6 +1994,11 @@ pfm_close(struct inode *inode, struct file *filp) | |||
| 1999 | return -EBADF; | 1994 | return -EBADF; |
| 2000 | } | 1995 | } |
| 2001 | 1996 | ||
| 1997 | if (filp->f_flags & FASYNC) { | ||
| 1998 | DPRINT(("cleaning up async_queue=%p\n", ctx->ctx_async_queue)); | ||
| 1999 | pfm_do_fasync(-1, filp, ctx, 0); | ||
| 2000 | } | ||
| 2001 | |||
| 2002 | PROTECT_CTX(ctx, flags); | 2002 | PROTECT_CTX(ctx, flags); |
| 2003 | 2003 | ||
| 2004 | state = ctx->ctx_state; | 2004 | state = ctx->ctx_state; |
diff --git a/arch/ia64/kernel/sal.c b/arch/ia64/kernel/sal.c index 7e0259709c04..0464173ea568 100644 --- a/arch/ia64/kernel/sal.c +++ b/arch/ia64/kernel/sal.c | |||
| @@ -252,11 +252,10 @@ check_sal_cache_flush (void) | |||
| 252 | local_irq_save(flags); | 252 | local_irq_save(flags); |
| 253 | 253 | ||
| 254 | /* | 254 | /* |
| 255 | * Schedule a timer interrupt, wait until it's reported, and see if | 255 | * Send ourselves a timer interrupt, wait until it's reported, and see |
| 256 | * SAL_CACHE_FLUSH drops it. | 256 | * if SAL_CACHE_FLUSH drops it. |
| 257 | */ | 257 | */ |
| 258 | ia64_set_itv(IA64_TIMER_VECTOR); | 258 | platform_send_ipi(cpu, IA64_TIMER_VECTOR, IA64_IPI_DM_INT, 0); |
| 259 | ia64_set_itm(ia64_get_itc() + 1000); | ||
| 260 | 259 | ||
| 261 | while (!ia64_get_irr(IA64_TIMER_VECTOR)) | 260 | while (!ia64_get_irr(IA64_TIMER_VECTOR)) |
| 262 | cpu_relax(); | 261 | cpu_relax(); |
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index f48a809c686d..4ae15c8c2488 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
| @@ -578,8 +578,6 @@ setup_arch (char **cmdline_p) | |||
| 578 | cpu_init(); /* initialize the bootstrap CPU */ | 578 | cpu_init(); /* initialize the bootstrap CPU */ |
| 579 | mmu_context_init(); /* initialize context_id bitmap */ | 579 | mmu_context_init(); /* initialize context_id bitmap */ |
| 580 | 580 | ||
| 581 | check_sal_cache_flush(); | ||
| 582 | |||
| 583 | #ifdef CONFIG_ACPI | 581 | #ifdef CONFIG_ACPI |
| 584 | acpi_boot_init(); | 582 | acpi_boot_init(); |
| 585 | #endif | 583 | #endif |
| @@ -607,6 +605,7 @@ setup_arch (char **cmdline_p) | |||
| 607 | ia64_mca_init(); | 605 | ia64_mca_init(); |
| 608 | 606 | ||
| 609 | platform_setup(cmdline_p); | 607 | platform_setup(cmdline_p); |
| 608 | check_sal_cache_flush(); | ||
| 610 | paging_init(); | 609 | paging_init(); |
| 611 | } | 610 | } |
| 612 | 611 | ||
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c index 49d3120415eb..e585f9a2afb9 100644 --- a/arch/ia64/sn/kernel/sn2/sn2_smp.c +++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c | |||
| @@ -512,6 +512,8 @@ static ssize_t sn2_ptc_proc_write(struct file *file, const char __user *user, si | |||
| 512 | int cpu; | 512 | int cpu; |
| 513 | char optstr[64]; | 513 | char optstr[64]; |
| 514 | 514 | ||
| 515 | if (count == 0 || count > sizeof(optstr)) | ||
| 516 | return -EINVAL; | ||
| 515 | if (copy_from_user(optstr, user, count)) | 517 | if (copy_from_user(optstr, user, count)) |
| 516 | return -EFAULT; | 518 | return -EFAULT; |
| 517 | optstr[count - 1] = '\0'; | 519 | optstr[count - 1] = '\0'; |
diff --git a/arch/ia64/uv/kernel/setup.c b/arch/ia64/uv/kernel/setup.c index 9aa743203c3c..cf5f28ae96c4 100644 --- a/arch/ia64/uv/kernel/setup.c +++ b/arch/ia64/uv/kernel/setup.c | |||
| @@ -17,6 +17,9 @@ | |||
| 17 | DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info); | 17 | DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info); |
| 18 | EXPORT_PER_CPU_SYMBOL_GPL(__uv_hub_info); | 18 | EXPORT_PER_CPU_SYMBOL_GPL(__uv_hub_info); |
| 19 | 19 | ||
| 20 | #ifdef CONFIG_IA64_SGI_UV | ||
| 21 | int sn_prom_type; | ||
| 22 | #endif | ||
| 20 | 23 | ||
| 21 | struct redir_addr { | 24 | struct redir_addr { |
| 22 | unsigned long redirect; | 25 | unsigned long redirect; |
| @@ -64,6 +67,15 @@ void __init uv_setup(char **cmdline_p) | |||
| 64 | m_n_config.s.m_skt = 37; | 67 | m_n_config.s.m_skt = 37; |
| 65 | m_n_config.s.n_skt = 0; | 68 | m_n_config.s.n_skt = 0; |
| 66 | mmr_base = 0; | 69 | mmr_base = 0; |
| 70 | #if 0 | ||
| 71 | /* Need BIOS calls - TDB */ | ||
| 72 | if (!ia64_sn_is_fake_prom()) | ||
| 73 | sn_prom_type = 1; | ||
| 74 | else | ||
| 75 | #endif | ||
| 76 | sn_prom_type = 2; | ||
| 77 | printk(KERN_INFO "Running on medusa with %s PROM\n", | ||
| 78 | (sn_prom_type == 1) ? "real" : "fake"); | ||
| 67 | } else { | 79 | } else { |
| 68 | get_lowmem_redirect(&lowmem_redir_base, &lowmem_redir_size); | 80 | get_lowmem_redirect(&lowmem_redir_base, &lowmem_redir_size); |
| 69 | node_id.v = uv_read_local_mmr(UVH_NODE_ID); | 81 | node_id.v = uv_read_local_mmr(UVH_NODE_ID); |
