Merge tag 'ia64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 24 Mar 2012 00:19:37 +0000 (17:19 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 24 Mar 2012 00:19:37 +0000 (17:19 -0700)
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()

13 files changed:
Documentation/kernel-parameters.txt
arch/ia64/kernel/acpi.c
arch/ia64/kernel/machine_kexec.c
arch/ia64/kernel/mca.c
arch/ia64/sn/kernel/huberror.c
arch/ia64/sn/kernel/io_common.c
arch/ia64/sn/kernel/irq.c
arch/ia64/sn/kernel/sn2/sn_hwperf.c
arch/ia64/sn/kernel/tiocx.c
arch/ia64/sn/pci/pcibr/pcibr_provider.c
arch/ia64/sn/pci/tioca_provider.c
arch/ia64/sn/pci/tioce_provider.c
drivers/tty/serial/sn_console.c

index 1c9a348548dcf70fb70b2ca8d2bb650f02267f7a..58eac231fe694649e493aac00b8510028233cfa0 100644 (file)
@@ -1086,8 +1086,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                        no_x2apic_optout
                                BIOS x2APIC opt-out request will be ignored
 
-       inttest=        [IA-64]
-
        iomem=          Disable strict checking of access to MMIO memory
                strict  regions from userspace.
                relaxed
index 5207035dc061bb5c567275efa0e0b58d2149a54d..2d801bfe16ac10b0aab83ade247c5474123d56f1 100644 (file)
@@ -349,11 +349,11 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header,
 
        iosapic_override_isa_irq(p->source_irq, p->global_irq,
                                 ((p->inti_flags & ACPI_MADT_POLARITY_MASK) ==
-                                 ACPI_MADT_POLARITY_ACTIVE_HIGH) ?
-                                IOSAPIC_POL_HIGH : IOSAPIC_POL_LOW,
+                                 ACPI_MADT_POLARITY_ACTIVE_LOW) ?
+                                IOSAPIC_POL_LOW : IOSAPIC_POL_HIGH,
                                 ((p->inti_flags & ACPI_MADT_TRIGGER_MASK) ==
-                                ACPI_MADT_TRIGGER_EDGE) ?
-                                IOSAPIC_EDGE : IOSAPIC_LEVEL);
+                                ACPI_MADT_TRIGGER_LEVEL) ?
+                                IOSAPIC_LEVEL : IOSAPIC_EDGE);
        return 0;
 }
 
index 4eed35814994ebfed9c6e5d5dcca527cc327daba..070e8effa1757dcc75d6a6e400b5509d55abd4e5 100644 (file)
@@ -157,7 +157,7 @@ void arch_crash_save_vmcoreinfo(void)
 #endif
 #ifdef CONFIG_PGTABLE_3
        VMCOREINFO_CONFIG(PGTABLE_3);
-#elif  CONFIG_PGTABLE_4
+#elif defined(CONFIG_PGTABLE_4)
        VMCOREINFO_CONFIG(PGTABLE_4);
 #endif
 }
index 84fb405eee87cfc4be613dd20c5636af157e2f9a..8192009cb92470b3b040653fce1c7311456504a8 100644 (file)
@@ -1447,6 +1447,8 @@ out:
        /* Get the CMC error record and log it */
        ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CMC);
 
+       local_irq_disable();
+
        return IRQ_HANDLED;
 }
 
index 08b0d9bb62ec0b4f909dcb23582c30f29dabcb56..f925dec2da920461069fa72537021f1c43594c37 100644 (file)
@@ -192,6 +192,7 @@ void hub_error_init(struct hubdev_info *hubdev_info)
                    hubdev_info);
                return;
        }
+       irq_set_handler(SGI_II_ERROR, handle_level_irq);
        sn_set_err_irq_affinity(SGI_II_ERROR);
 }
 
@@ -213,6 +214,7 @@ void ice_error_init(struct hubdev_info *hubdev_info)
                        hubdev_info);
                return;
        }
+       irq_set_handler(SGI_TIO_ERROR, handle_level_irq);
        sn_set_err_irq_affinity(SGI_TIO_ERROR);
 }
 
index 4433dd019d3c92ef3fa7cf71d7df61ce58864c6b..fbb5f2f87eedb0a3c5d934873435a23267cf5599 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include <linux/bootmem.h>
+#include <linux/export.h>
 #include <linux/slab.h>
 #include <asm/sn/types.h>
 #include <asm/sn/addrs.h>
index dfac09ab027a2a6717da2d9eeef40d6f24b9f8e5..62cf4dde6a0426dafa12ce5a3b0b56f1ccb00b41 100644 (file)
@@ -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);
        list_add_rcu(&sn_irq_info->list, sn_irq_lh[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);
 
        register_intr_pda(sn_irq_info);
index 2de41d44266ebc2e860ad185e88cb4ff07e0eab7..4554f68b786524e7df3608cbf3b105fb8edf5030 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <linux/fs.h>
 #include <linux/slab.h>
+#include <linux/export.h>
 #include <linux/vmalloc.h>
 #include <linux/seq_file.h>
 #include <linux/miscdevice.h>
index c1bd1cfda3276c958450d7034ad4b1dc3bd0340c..2f406f509d44d9ec4fd1b7deee382a5338dcda5a 100644 (file)
@@ -191,6 +191,7 @@ cx_device_register(nasid_t nasid, int part_num, int mfg_num,
                   struct hubdev_info *hubdev, int bt)
 {
        struct cx_dev *cx_dev;
+       int r;
 
        cx_dev = kzalloc(sizeof(struct cx_dev), GFP_KERNEL);
        DBG("cx_dev= 0x%p\n", cx_dev);
@@ -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.release = tiocx_bus_release;
        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);
 
        device_create_file(&cx_dev->dev, &dev_attr_cxdev_control);
index 8886a0bc4a11c31ad2b174f23ed7c14843ace3f7..8dbbef4a4f47be7c6dfa86db4df89c870b7dac6a 100644 (file)
@@ -146,6 +146,7 @@ pcibr_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
                printk(KERN_WARNING
                       "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);
 
        /* 
index e77c477245fdc9e9744f8b8628022a28738432da..a70b11fd57d6e2cdb8299befa0a86351a98265b5 100644 (file)
@@ -649,6 +649,7 @@ tioca_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
                       __func__, SGI_TIOCA_ERROR,
                       (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);
 
        /* Setup locality information */
index 27faba035f3a348fdb847beb1e6ca831e703ddb7..46d3df4b03a160f4462e9282626661f981a76ee7 100644 (file)
@@ -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_busnum);
 
+       irq_set_handler(SGI_PCIASIC_ERROR, handle_level_irq);
        sn_set_err_irq_affinity(SGI_PCIASIC_ERROR);
        return tioce_common;
 }
index 4e1b5515f8814aa15b35fb27cce500290a9d5d7d..1c6de9f58699ee7bdb458baeec093694510406e7 100644 (file)
@@ -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);
                        port->sc_port.irq = SGI_UART_VECTOR;
                        port->sc_ops = &intr_ops;
+                       irq_set_handler(port->sc_port.irq, handle_level_irq);
 
                        /* turn on receive interrupts */
                        ia64_sn_console_intr_enable(SAL_CONSOLE_INTR_RECV);