]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Sat, 30 Jun 2007 04:30:18 +0000 (21:30 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Sat, 30 Jun 2007 04:30:18 +0000 (21:30 -0700)
* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC64]: Add linux/pagemap.h to asm/tlb.h
  [SPARC64]: Need to set state to IDLE during sun4v IRQ enable.
  [SPARC64]: Fix VIRQ enabling.
  [SPARC64]: Add irqs to mdesc_node.

arch/sparc64/kernel/irq.c
include/asm-sparc64/mdesc.h
include/asm-sparc64/tlb.h

index e60d283f60bc518d87aa8ec08363d40d719b9ab8..6b6165d36fd8aae7789faef3e7cf9e64019cb464 100644 (file)
@@ -329,6 +329,10 @@ static void sun4v_irq_enable(unsigned int virt_irq)
                if (err != HV_EOK)
                        printk("sun4v_intr_settarget(%x,%lu): err(%d)\n",
                               ino, cpuid, err);
+               err = sun4v_intr_setstate(ino, HV_INTR_STATE_IDLE);
+               if (err != HV_EOK)
+                       printk("sun4v_intr_setstate(%x): "
+                              "err(%d)\n", ino, err);
                err = sun4v_intr_setenabled(ino, HV_INTR_ENABLED);
                if (err != HV_EOK)
                        printk("sun4v_intr_setenabled(%x): err(%d)\n",
@@ -400,6 +404,12 @@ static void sun4v_virq_enable(unsigned int virt_irq)
                               "err(%d)\n",
                               dev_handle, dev_ino, cpuid, err);
                err = sun4v_vintr_set_state(dev_handle, dev_ino,
+                                           HV_INTR_STATE_IDLE);
+               if (err != HV_EOK)
+                       printk("sun4v_vintr_set_state(%lx,%lx,"
+                               "HV_INTR_STATE_IDLE): err(%d)\n",
+                              dev_handle, dev_ino, err);
+               err = sun4v_vintr_set_valid(dev_handle, dev_ino,
                                            HV_INTR_ENABLED);
                if (err != HV_EOK)
                        printk("sun4v_vintr_set_state(%lx,%lx,"
@@ -420,7 +430,7 @@ static void sun4v_virq_disable(unsigned int virt_irq)
                dev_handle = ino & IMAP_IGN;
                dev_ino = ino & IMAP_INO;
 
-               err = sun4v_vintr_set_state(dev_handle, dev_ino,
+               err = sun4v_vintr_set_valid(dev_handle, dev_ino,
                                            HV_INTR_DISABLED);
                if (err != HV_EOK)
                        printk("sun4v_vintr_set_state(%lx,%lx,"
index 124eb8ca237898a5759d87e2a4dd25c5a5942745..c6383982b53ddfcfa4da57ec27a3ddd52de70dd5 100644 (file)
@@ -15,6 +15,7 @@ struct mdesc_node {
        u64                     node;
        unsigned int            unique_id;
        unsigned int            num_arcs;
+       unsigned int            irqs[2];
        struct property         *properties;
        struct mdesc_node       *hash_next;
        struct mdesc_node       *allnodes_next;
index 7af1e1109c49e1f5092f44914601f98624b96a5a..349d1d3e9c27135c84f833b60032f6b0907efbfc 100644 (file)
@@ -2,6 +2,7 @@
 #define _SPARC64_TLB_H
 
 #include <linux/swap.h>
+#include <linux/pagemap.h>
 #include <asm/pgalloc.h>
 #include <asm/tlbflush.h>
 #include <asm/mmu_context.h>