[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] Update to 2.6.11 patch files



ChangeSet 1.1277.2.1, 2005/04/11 15:03:24-06:00, djm@djmnc4000.(none)

        Update to 2.6.11 patch files
        Signed-off by: Dan Magenheimer (dan.magenheimer@xxxxxx)



 arch/ia64/domain.c                          |   25 +-
 arch/ia64/irq.c                             |  152 +++++++--------
 arch/ia64/mm_init.c                         |   44 +++-
 arch/ia64/patch/linux-2.6.11/bootmem.h      |   14 +
 arch/ia64/patch/linux-2.6.11/cpumask.h      |   18 +
 arch/ia64/patch/linux-2.6.11/current.h      |   13 +
 arch/ia64/patch/linux-2.6.11/efi.c          |   34 +++
 arch/ia64/patch/linux-2.6.11/entry.S        |  116 +++++++++++
 arch/ia64/patch/linux-2.6.11/hardirq.h      |   13 +
 arch/ia64/patch/linux-2.6.11/head.S         |   50 +++++
 arch/ia64/patch/linux-2.6.11/hpsim_irq.c    |   25 ++
 arch/ia64/patch/linux-2.6.11/hpsim_ssc.h    |   11 +
 arch/ia64/patch/linux-2.6.11/interrupt.h    |   20 ++
 arch/ia64/patch/linux-2.6.11/io.h           |   14 +
 arch/ia64/patch/linux-2.6.11/irq.h          |   13 +
 arch/ia64/patch/linux-2.6.11/irq_ia64.c     |   43 ++++
 arch/ia64/patch/linux-2.6.11/ivt.S          |  278 ++++++++++++++++++++++++++++
 arch/ia64/patch/linux-2.6.11/kernel-time.c  |   37 +++
 arch/ia64/patch/linux-2.6.11/kregs.h        |   13 +
 arch/ia64/patch/linux-2.6.11/lds.S          |   19 +
 arch/ia64/patch/linux-2.6.11/linuxextable.c |   13 +
 arch/ia64/patch/linux-2.6.11/linuxhardirq.h |   22 ++
 arch/ia64/patch/linux-2.6.11/linuxtime.h    |   26 ++
 arch/ia64/patch/linux-2.6.11/mca_asm.h      |   25 ++
 arch/ia64/patch/linux-2.6.11/minstate.h     |   22 ++
 arch/ia64/patch/linux-2.6.11/mm_contig.c    |  171 +++++++++++++++++
 arch/ia64/patch/linux-2.6.11/mmzone.h       |   14 +
 arch/ia64/patch/linux-2.6.11/page.h         |   54 +++++
 arch/ia64/patch/linux-2.6.11/pal.S          |   22 ++
 arch/ia64/patch/linux-2.6.11/pgalloc.h      |   66 ++++++
 arch/ia64/patch/linux-2.6.11/processor.h    |   19 +
 arch/ia64/patch/linux-2.6.11/sal.h          |   21 ++
 arch/ia64/patch/linux-2.6.11/series         |   40 ++++
 arch/ia64/patch/linux-2.6.11/setup.c        |  155 +++++++++++++++
 arch/ia64/patch/linux-2.6.11/slab.h         |   14 +
 arch/ia64/patch/linux-2.6.11/swiotlb.c      |   63 ++++++
 arch/ia64/patch/linux-2.6.11/system.h       |   32 +++
 arch/ia64/patch/linux-2.6.11/time.c         |  143 ++++++++++++++
 arch/ia64/patch/linux-2.6.11/tlb.c          |   42 ++++
 arch/ia64/patch/linux-2.6.11/types.h        |   12 +
 arch/ia64/patch/linux-2.6.11/unaligned.c    |   74 +++++++
 arch/ia64/patch/linux-2.6.11/wait.h         |   28 ++
 arch/ia64/tools/mkbuildtree                 |   41 ++--
 arch/ia64/xenasm.S                          |   16 -
 arch/ia64/xenmisc.c                         |   11 +
 include/asm-ia64/config.h                   |   21 +-
 include/asm-ia64/mm.h                       |   19 -
 47 files changed, 2004 insertions(+), 134 deletions(-)


diff -Nru a/xen/arch/ia64/domain.c b/xen/arch/ia64/domain.c
--- a/xen/arch/ia64/domain.c    2005-04-20 05:02:59 -04:00
+++ b/xen/arch/ia64/domain.c    2005-04-20 05:02:59 -04:00
@@ -289,6 +289,7 @@
        struct mm_struct *mm = d->arch.mm;
        struct page *p = (struct page *)0;
        pgd_t *pgd;
+       pud_t *pud;
        pmd_t *pmd;
        pte_t *pte;
 extern unsigned long vhpt_paddr, vhpt_pend;
@@ -299,9 +300,13 @@
        }
        pgd = pgd_offset(mm,mpaddr);
        if (pgd_none(*pgd))
-               pgd_populate(mm, pgd, pmd_alloc_one(mm,mpaddr));
+               pgd_populate(mm, pgd, pud_alloc_one(mm,mpaddr));
 
-       pmd = pmd_offset(pgd, mpaddr);
+       pud = pud_offset(pgd, mpaddr);
+       if (pud_none(*pud))
+               pud_populate(mm, pud, pmd_alloc_one(mm,mpaddr));
+
+       pmd = pmd_offset(pud, mpaddr);
        if (pmd_none(*pmd))
                pmd_populate_kernel(mm, pmd, pte_alloc_one_kernel(mm,mpaddr));
 //             pmd_populate(mm, pmd, pte_alloc_one(mm,mpaddr));
@@ -338,6 +343,7 @@
 {
        struct mm_struct *mm = d->arch.mm;
        pgd_t *pgd = pgd_offset(mm, mpaddr);
+       pud_t *pud;
        pmd_t *pmd;
        pte_t *pte;
 
@@ -356,14 +362,17 @@
 #endif
 tryagain:
        if (pgd_present(*pgd)) {
-               pmd = pmd_offset(pgd,mpaddr);
-               if (pmd_present(*pmd)) {
-                       pte = pte_offset_map(pmd,mpaddr);
-                       if (pte_present(*pte)) {
+               pud = pud_offset(pgd,mpaddr);
+               if (pud_present(*pud)) {
+                       pmd = pmd_offset(pud,mpaddr);
+                       if (pmd_present(*pmd)) {
+                               pte = pte_offset_map(pmd,mpaddr);
+                               if (pte_present(*pte)) {
 //printk("lookup_domain_page: found mapping for %lx, 
pte=%lx\n",mpaddr,pte_val(*pte));
-                               return *(unsigned long *)pte;
+                                       return *(unsigned long *)pte;
+                               }
                        }
-               }       
+               }
        }
        /* if lookup fails and mpaddr is "legal", "create" the page */
        if ((mpaddr >> PAGE_SHIFT) < d->max_pages) {
diff -Nru a/xen/arch/ia64/irq.c b/xen/arch/ia64/irq.c
--- a/xen/arch/ia64/irq.c       2005-04-20 05:02:59 -04:00
+++ b/xen/arch/ia64/irq.c       2005-04-20 05:02:59 -04:00
@@ -492,101 +492,101 @@
  * SMP cross-CPU interrupts have their own specific
  * handlers).
  */
-unsigned int do_IRQ(unsigned long irq, struct pt_regs *regs)
+fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs)
 {
-       /*
-        * We ack quickly, we don't want the irq controller
-        * thinking we're snobs just because some other CPU has
-        * disabled global interrupts (we have already done the
-        * INT_ACK cycles, it's too late to try to pretend to the
-        * controller that we aren't taking the interrupt).
-        *
-        * 0 return value means that this irq is already being
-        * handled by some other CPU. (or is disabled)
-        */
-       irq_desc_t *desc = irq_descp(irq);
+       irq_desc_t *desc = irq_desc + irq;
        struct irqaction * action;
-       irqreturn_t action_ret;
        unsigned int status;
-       int cpu;
-
-       cpu = smp_processor_id(); /* for CONFIG_PREEMPT, this must come after 
irq_enter()! */
 
 #ifndef XEN
-       kstat_cpu(cpu).irqs[irq]++;
+       kstat_this_cpu.irqs[irq]++;
 #endif
-
        if (desc->status & IRQ_PER_CPU) {
-               /* no locking required for CPU-local interrupts: */
+               irqreturn_t action_ret;
+
+               /*
+                * No locking required for CPU-local interrupts:
+                */
                desc->handler->ack(irq);
                action_ret = handle_IRQ_event(irq, regs, desc->action);
+#ifndef XEN
+               if (!noirqdebug)
+                       note_interrupt(irq, desc, action_ret);
+#endif
                desc->handler->end(irq);
-       } else {
-               spin_lock(&desc->lock);
-               desc->handler->ack(irq);
-               /*
-                * REPLAY is when Linux resends an IRQ that was dropped earlier
-                * WAITING is used by probe to mark irqs that are being tested
-                */
+               return 1;
+       }
+
+       spin_lock(&desc->lock);
+       desc->handler->ack(irq);
+       /*
+        * REPLAY is when Linux resends an IRQ that was dropped earlier
+        * WAITING is used by probe to mark irqs that are being tested
+        */
 #ifdef XEN
-               status = desc->status & ~IRQ_REPLAY;
+       status = desc->status & ~IRQ_REPLAY;
 #else
-               status = desc->status & ~(IRQ_REPLAY | IRQ_WAITING);
+       status = desc->status & ~(IRQ_REPLAY | IRQ_WAITING);
 #endif
-               status |= IRQ_PENDING; /* we _want_ to handle it */
+       status |= IRQ_PENDING; /* we _want_ to handle it */
 
-               /*
-                * If the IRQ is disabled for whatever reason, we cannot
-                * use the action we have.
-                */
-               action = NULL;
-               if (likely(!(status & (IRQ_DISABLED | IRQ_INPROGRESS)))) {
-                       action = desc->action;
-                       status &= ~IRQ_PENDING; /* we commit to handling */
-                       status |= IRQ_INPROGRESS; /* we are handling it */
-               }
-               desc->status = status;
+       /*
+        * If the IRQ is disabled for whatever reason, we cannot
+        * use the action we have.
+        */
+       action = NULL;
+       if (likely(!(status & (IRQ_DISABLED | IRQ_INPROGRESS)))) {
+               action = desc->action;
+               status &= ~IRQ_PENDING; /* we commit to handling */
+               status |= IRQ_INPROGRESS; /* we are handling it */
+       }
+       desc->status = status;
 
-               /*
-                * If there is no IRQ handler or it was disabled, exit early.
-                * Since we set PENDING, if another processor is handling
-                * a different instance of this same irq, the other processor
-                * will take care of it.
-                */
-               if (unlikely(!action))
-                       goto out;
+       /*
+        * If there is no IRQ handler or it was disabled, exit early.
+        * Since we set PENDING, if another processor is handling
+        * a different instance of this same irq, the other processor
+        * will take care of it.
+        */
+       if (unlikely(!action))
+               goto out;
 
-               /*
-                * Edge triggered interrupts need to remember
-                * pending events.
-                * This applies to any hw interrupts that allow a second
-                * instance of the same irq to arrive while we are in do_IRQ
-                * or in the handler. But the code here only handles the 
_second_
-                * instance of the irq, not the third or fourth. So it is mostly
-                * useful for irq hardware that does not mask cleanly in an
-                * SMP environment.
-                */
-               for (;;) {
-                       spin_unlock(&desc->lock);
-                       action_ret = handle_IRQ_event(irq, regs, action);
-                       spin_lock(&desc->lock);
+       /*
+        * Edge triggered interrupts need to remember
+        * pending events.
+        * This applies to any hw interrupts that allow a second
+        * instance of the same irq to arrive while we are in do_IRQ
+        * or in the handler. But the code here only handles the _second_
+        * instance of the irq, not the third or fourth. So it is mostly
+        * useful for irq hardware that does not mask cleanly in an
+        * SMP environment.
+        */
+       for (;;) {
+               irqreturn_t action_ret;
+
+               spin_unlock(&desc->lock);
+
+               action_ret = handle_IRQ_event(irq, regs, action);
+
+               spin_lock(&desc->lock);
 #ifndef XEN
-                       if (!noirqdebug)
-                               note_interrupt(irq, desc, action_ret);
+               if (!noirqdebug)
+                       note_interrupt(irq, desc, action_ret);
 #endif
-                       if (!(desc->status & IRQ_PENDING))
-                               break;
-                       desc->status &= ~IRQ_PENDING;
-               }
-               desc->status &= ~IRQ_INPROGRESS;
-         out:
-               /*
-                * The ->end() handler has to deal with interrupts which got
-                * disabled while the handler was running.
-                */
-               desc->handler->end(irq);
-               spin_unlock(&desc->lock);
+               if (likely(!(desc->status & IRQ_PENDING)))
+                       break;
+               desc->status &= ~IRQ_PENDING;
        }
+       desc->status &= ~IRQ_INPROGRESS;
+
+out:
+       /*
+        * The ->end() handler has to deal with interrupts which got
+        * disabled while the handler was running.
+        */
+       desc->handler->end(irq);
+       spin_unlock(&desc->lock);
+
        return 1;
 }
 
diff -Nru a/xen/arch/ia64/mm_init.c b/xen/arch/ia64/mm_init.c
--- a/xen/arch/ia64/mm_init.c   2005-04-20 05:02:59 -04:00
+++ b/xen/arch/ia64/mm_init.c   2005-04-20 05:02:59 -04:00
@@ -102,6 +102,39 @@
 /////////////////////////////////////////////
 //following from linux/mm/memory.c
 
+#ifndef __ARCH_HAS_4LEVEL_HACK
+/*
+ * Allocate page upper directory.

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.