[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |