Changeset 7782030 in mainline


Ignore:
Timestamp:
2008-11-23T16:13:21Z (15 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d2093d6
Parents:
0013b9ce
Message:

Classic TLB shootdown support on ia64

Location:
kernel
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/include/cpu.h

    r0013b9ce r7782030  
    8888{
    8989        (bootinfo->sapic)[2*(id*256+eid)]=intno;
     90        srlz_d();
     91
    9092}
    9193
  • kernel/arch/ia64/include/interrupt.h

    r0013b9ce r7782030  
    5151
    5252/** External Interrupt vectors. */
     53
     54#define VECTOR_TLB_SHOOTDOWN_IPI 0xf0
    5355#define INTERRUPT_TIMER         255
    5456#define IRQ_KBD                 241
  • kernel/arch/ia64/src/interrupt.c

    r0013b9ce r7782030  
    5454#include <ipc/ipc.h>
    5555#include <synch/spinlock.h>
     56#include <mm/tlb.h>
    5657
    5758#define VECTORS_64_BUNDLE       20
     
    235236}
    236237
     238static void end_of_local_irq()
     239{
     240        asm volatile ("mov cr.eoi=r0;;");
     241}
     242
     243
    237244void external_interrupt(uint64_t vector, istate_t *istate)
    238245{
     
    255262                        break;
    256263
     264#ifdef CONFIG_SMP
     265                case VECTOR_TLB_SHOOTDOWN_IPI:
     266                        tlb_shootdown_ipi_recv();
     267                        end_of_local_irq();
     268                        break;
     269#endif
     270
     271
    257272                default:
    258273                        panic("\nUnhandled External Interrupt Vector %d\n",
  • kernel/arch/ia64/src/smp/smp.c

    r0013b9ce r7782030  
    9797void ipi_broadcast_arch(int ipi )
    9898{
    99         ipi_broadcast_arch_all(ipi);
     99        int id,eid;
     100        int myid,myeid;
     101       
     102        myid=ia64_get_cpu_id();
     103        myeid=ia64_get_cpu_eid();
     104
     105        //printf("Sending ipi %d on %d\n",ipi,CPU->id);
     106        for(id=0;id<256;id++)
     107                for(eid=0;eid<256;eid++)
     108                        if((id!=myid) || (eid!=myeid))
     109                                if(cpu_by_id_eid_list[id][eid])
     110                                        ipi_send_ipi(id,eid,ipi);
     111
    100112}
    101113
  • kernel/generic/src/mm/tlb.c

    r0013b9ce r7782030  
    135135void tlb_shootdown_ipi_send(void)
    136136{
    137 #ifndef ia64
    138137        ipi_broadcast(VECTOR_TLB_SHOOTDOWN_IPI);
    139 #endif 
    140138}
    141139
Note: See TracChangeset for help on using the changeset viewer.