diff --git a/arch/x86/mm/svm.c b/arch/x86/mm/svm.c index 1dd2075f..eb31c08c 100644 --- a/arch/x86/mm/svm.c +++ b/arch/x86/mm/svm.c @@ -128,7 +128,7 @@ int svm_access_request(size_t addr) icc_send_irq(remote_rank); /* check for incoming messages */ - icc_mail_check(); + icc_mail_check(0); while (page_owner[pageid] != my_ue) { NOP4; diff --git a/arch/x86/scc/iRCCE_mailbox.c b/arch/x86/scc/iRCCE_mailbox.c index 67fd45d7..76424287 100644 --- a/arch/x86/scc/iRCCE_mailbox.c +++ b/arch/x86/scc/iRCCE_mailbox.c @@ -410,12 +410,12 @@ int iRCCE_mail_send( // if dest mailbox is full, check for incoming mail RC_cache_invalidate(); while( iRCCE_mailbox_send[dest]->sent ) { -// iRCCE_mailbox_check(); + iRCCE_mailbox_check(); RC_cache_invalidate(); } /* disable interrupts */ - flags = irq_nested_disable(); +// flags = irq_nested_disable(); // check if mailbox is closed RCCE_acquire_lock( dest ); @@ -451,7 +451,7 @@ int iRCCE_mail_send( RCCE_release_lock( dest ); /* enable interrupts */ - irq_nested_enable(flags); +// irq_nested_enable(flags); return iRCCE_SUCCESS; } diff --git a/arch/x86/scc/icc.c b/arch/x86/scc/icc.c index 2c2ca46d..a3571905 100644 --- a/arch/x86/scc/icc.c +++ b/arch/x86/scc/icc.c @@ -240,7 +240,7 @@ int icc_halt(void) #define ROUNDS 10000 #define CORE_A 0 // sender -#define CORE_B 1 // receiver +#define CORE_B 4 // receiver int icc_send_gic_irq(int core_num) { @@ -268,7 +268,7 @@ static inline void icc_mail_check_tag(iRCCE_MAIL_HEADER* mail) { static int count = 0; if( !mail ) return; - + switch( mail->tag ) { case iRCCE_ANYLENGTH: recv_buffer = (char*)kmalloc( mail->size ); @@ -277,13 +277,12 @@ static inline void icc_mail_check_tag(iRCCE_MAIL_HEADER* mail) { break; case PING_REQ: -// kprintf( "PING_REQ" ); // count++; iRCCE_mail_send(0, PING_RESP, 0, NULL, mail->source); break; case NOISE: -// kprintf( "XXX " ); + kprintf( "XXX " ); default: // kprintf( "icc_mail_check_tag: uknown tag id %d\n", mail->tag ); break; @@ -429,43 +428,45 @@ int icc_mail_noise() { int num_ranks = RCCE_num_ues(); iRCCE_MAIL_HEADER* recv_mail = NULL; int flags; -/* + // leave function if not participating - if( (my_ue == CORE_A) || (my_ue == CORE_B) || (my_ue > 25) ) { + if( (my_ue == CORE_A) || (my_ue == CORE_B) ) { kprintf( "mail_noise: leaving" ); return -1; } -*/ - if( !((my_ue == CORE_A) || (my_ue == CORE_B) ) ) { - kprintf( "mail_noise: leaving" ); - return -1; - } + kprintf( "Hello from icc_mail_noise: my_ue = %d\n", my_ue ); kprintf( "num_ues = %d\n", num_ranks ); int count = 0; - for( i=0; i<100000 ;++i ) { + for( ;; ) { + kprintf( "SEND NOISE - " ); /* send a mail to each UE */ for( j=0; j