Commit 0e65ae09 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'ia64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux

Pull miscellaneous Itanium patches from Tony Luck.

The conflicts in arch/ia64/hp/sim/simserial.c were due to patches to
simserial that had alredy been included (with lots of further cleanups)
in the serial tree.

* tag 'ia64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
  Documentation/kernel-parameters: remove inttest parameter
  [IA64] Fix ISA IRQ trigger model and polarity setting
  [IA64] Fix a couple of warnings for EXPORT_SYMBOL
  [IA64] Check return from device_register() in cx_device_register()
  [IA64] Fix warning from machine_kexec.c
  [IA64] simserial, bail out when request_irq fails
  [IA64] hpsim, initialize chip for assigned irqs
  [IA64] simserial, include some headers
  [IA64] hpsim, fix SAL handling in fw-emu
  [IA64] genirq fixup for SGI/SN
  [IA64] disable interrupts when exiting from ia64_mca_cmc_int_handler()
parents 2fb9e96c b86c4782
...@@ -1086,8 +1086,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted. ...@@ -1086,8 +1086,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
no_x2apic_optout no_x2apic_optout
BIOS x2APIC opt-out request will be ignored BIOS x2APIC opt-out request will be ignored
inttest= [IA-64]
iomem= Disable strict checking of access to MMIO memory iomem= Disable strict checking of access to MMIO memory
strict regions from userspace. strict regions from userspace.
relaxed relaxed
......
...@@ -349,11 +349,11 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header, ...@@ -349,11 +349,11 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header,
iosapic_override_isa_irq(p->source_irq, p->global_irq, iosapic_override_isa_irq(p->source_irq, p->global_irq,
((p->inti_flags & ACPI_MADT_POLARITY_MASK) == ((p->inti_flags & ACPI_MADT_POLARITY_MASK) ==
ACPI_MADT_POLARITY_ACTIVE_HIGH) ? ACPI_MADT_POLARITY_ACTIVE_LOW) ?
IOSAPIC_POL_HIGH : IOSAPIC_POL_LOW, IOSAPIC_POL_LOW : IOSAPIC_POL_HIGH,
((p->inti_flags & ACPI_MADT_TRIGGER_MASK) == ((p->inti_flags & ACPI_MADT_TRIGGER_MASK) ==
ACPI_MADT_TRIGGER_EDGE) ? ACPI_MADT_TRIGGER_LEVEL) ?
IOSAPIC_EDGE : IOSAPIC_LEVEL); IOSAPIC_LEVEL : IOSAPIC_EDGE);
return 0; return 0;
} }
......
...@@ -157,7 +157,7 @@ void arch_crash_save_vmcoreinfo(void) ...@@ -157,7 +157,7 @@ void arch_crash_save_vmcoreinfo(void)
#endif #endif
#ifdef CONFIG_PGTABLE_3 #ifdef CONFIG_PGTABLE_3
VMCOREINFO_CONFIG(PGTABLE_3); VMCOREINFO_CONFIG(PGTABLE_3);
#elif CONFIG_PGTABLE_4 #elif defined(CONFIG_PGTABLE_4)
VMCOREINFO_CONFIG(PGTABLE_4); VMCOREINFO_CONFIG(PGTABLE_4);
#endif #endif
} }
......
...@@ -1447,6 +1447,8 @@ ia64_mca_cmc_int_handler(int cmc_irq, void *arg) ...@@ -1447,6 +1447,8 @@ ia64_mca_cmc_int_handler(int cmc_irq, void *arg)
/* Get the CMC error record and log it */ /* Get the CMC error record and log it */
ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CMC); ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CMC);
local_irq_disable();
return IRQ_HANDLED; return IRQ_HANDLED;
} }
......
...@@ -192,6 +192,7 @@ void hub_error_init(struct hubdev_info *hubdev_info) ...@@ -192,6 +192,7 @@ void hub_error_init(struct hubdev_info *hubdev_info)
hubdev_info); hubdev_info);
return; return;
} }
irq_set_handler(SGI_II_ERROR, handle_level_irq);
sn_set_err_irq_affinity(SGI_II_ERROR); sn_set_err_irq_affinity(SGI_II_ERROR);
} }
...@@ -213,6 +214,7 @@ void ice_error_init(struct hubdev_info *hubdev_info) ...@@ -213,6 +214,7 @@ void ice_error_init(struct hubdev_info *hubdev_info)
hubdev_info); hubdev_info);
return; return;
} }
irq_set_handler(SGI_TIO_ERROR, handle_level_irq);
sn_set_err_irq_affinity(SGI_TIO_ERROR); sn_set_err_irq_affinity(SGI_TIO_ERROR);
} }
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
*/ */
#include <linux/bootmem.h> #include <linux/bootmem.h>
#include <linux/export.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <asm/sn/types.h> #include <asm/sn/types.h>
#include <asm/sn/addrs.h> #include <asm/sn/addrs.h>
......
...@@ -352,6 +352,8 @@ void sn_irq_fixup(struct pci_dev *pci_dev, struct sn_irq_info *sn_irq_info) ...@@ -352,6 +352,8 @@ void sn_irq_fixup(struct pci_dev *pci_dev, struct sn_irq_info *sn_irq_info)
spin_lock(&sn_irq_info_lock); spin_lock(&sn_irq_info_lock);
list_add_rcu(&sn_irq_info->list, sn_irq_lh[sn_irq_info->irq_irq]); list_add_rcu(&sn_irq_info->list, sn_irq_lh[sn_irq_info->irq_irq]);
reserve_irq_vector(sn_irq_info->irq_irq); reserve_irq_vector(sn_irq_info->irq_irq);
if (sn_irq_info->irq_int_bit != -1)
irq_set_handler(sn_irq_info->irq_irq, handle_level_irq);
spin_unlock(&sn_irq_info_lock); spin_unlock(&sn_irq_info_lock);
register_intr_pda(sn_irq_info); register_intr_pda(sn_irq_info);
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/export.h>
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <linux/miscdevice.h> #include <linux/miscdevice.h>
......
...@@ -191,6 +191,7 @@ cx_device_register(nasid_t nasid, int part_num, int mfg_num, ...@@ -191,6 +191,7 @@ cx_device_register(nasid_t nasid, int part_num, int mfg_num,
struct hubdev_info *hubdev, int bt) struct hubdev_info *hubdev, int bt)
{ {
struct cx_dev *cx_dev; struct cx_dev *cx_dev;
int r;
cx_dev = kzalloc(sizeof(struct cx_dev), GFP_KERNEL); cx_dev = kzalloc(sizeof(struct cx_dev), GFP_KERNEL);
DBG("cx_dev= 0x%p\n", cx_dev); DBG("cx_dev= 0x%p\n", cx_dev);
...@@ -207,7 +208,11 @@ cx_device_register(nasid_t nasid, int part_num, int mfg_num, ...@@ -207,7 +208,11 @@ cx_device_register(nasid_t nasid, int part_num, int mfg_num,
cx_dev->dev.bus = &tiocx_bus_type; cx_dev->dev.bus = &tiocx_bus_type;
cx_dev->dev.release = tiocx_bus_release; cx_dev->dev.release = tiocx_bus_release;
dev_set_name(&cx_dev->dev, "%d", cx_dev->cx_id.nasid); dev_set_name(&cx_dev->dev, "%d", cx_dev->cx_id.nasid);
device_register(&cx_dev->dev); r = device_register(&cx_dev->dev);
if (r) {
kfree(cx_dev);
return r;
}
get_device(&cx_dev->dev); get_device(&cx_dev->dev);
device_create_file(&cx_dev->dev, &dev_attr_cxdev_control); device_create_file(&cx_dev->dev, &dev_attr_cxdev_control);
......
...@@ -146,6 +146,7 @@ pcibr_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont ...@@ -146,6 +146,7 @@ pcibr_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
printk(KERN_WARNING printk(KERN_WARNING
"pcibr cannot allocate interrupt for error handler\n"); "pcibr cannot allocate interrupt for error handler\n");
} }
irq_set_handler(SGI_PCIASIC_ERROR, handle_level_irq);
sn_set_err_irq_affinity(SGI_PCIASIC_ERROR); sn_set_err_irq_affinity(SGI_PCIASIC_ERROR);
/* /*
......
...@@ -649,6 +649,7 @@ tioca_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont ...@@ -649,6 +649,7 @@ tioca_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
__func__, SGI_TIOCA_ERROR, __func__, SGI_TIOCA_ERROR,
(int)tioca_common->ca_common.bs_persist_busnum); (int)tioca_common->ca_common.bs_persist_busnum);
irq_set_handler(SGI_TIOCA_ERROR, handle_level_irq);
sn_set_err_irq_affinity(SGI_TIOCA_ERROR); sn_set_err_irq_affinity(SGI_TIOCA_ERROR);
/* Setup locality information */ /* Setup locality information */
......
...@@ -1037,6 +1037,7 @@ tioce_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont ...@@ -1037,6 +1037,7 @@ tioce_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
tioce_common->ce_pcibus.bs_persist_segment, tioce_common->ce_pcibus.bs_persist_segment,
tioce_common->ce_pcibus.bs_persist_busnum); tioce_common->ce_pcibus.bs_persist_busnum);
irq_set_handler(SGI_PCIASIC_ERROR, handle_level_irq);
sn_set_err_irq_affinity(SGI_PCIASIC_ERROR); sn_set_err_irq_affinity(SGI_PCIASIC_ERROR);
return tioce_common; return tioce_common;
} }
......
...@@ -743,6 +743,7 @@ static void __init sn_sal_switch_to_interrupts(struct sn_cons_port *port) ...@@ -743,6 +743,7 @@ static void __init sn_sal_switch_to_interrupts(struct sn_cons_port *port)
spin_lock_irqsave(&port->sc_port.lock, flags); spin_lock_irqsave(&port->sc_port.lock, flags);
port->sc_port.irq = SGI_UART_VECTOR; port->sc_port.irq = SGI_UART_VECTOR;
port->sc_ops = &intr_ops; port->sc_ops = &intr_ops;
irq_set_handler(port->sc_port.irq, handle_level_irq);
/* turn on receive interrupts */ /* turn on receive interrupts */
ia64_sn_console_intr_enable(SAL_CONSOLE_INTR_RECV); ia64_sn_console_intr_enable(SAL_CONSOLE_INTR_RECV);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment