From fae93b430443c32153fdadcee8b96c9194f3477e Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Sun, 4 Dec 2011 04:47:40 -0800 Subject: [PATCH] support an approach without response mail --- arch/x86/mm/svm.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/arch/x86/mm/svm.c b/arch/x86/mm/svm.c index 3eb4f7fa..faaeb3f1 100644 --- a/arch/x86/mm/svm.c +++ b/arch/x86/mm/svm.c @@ -36,6 +36,7 @@ #include #define USE_PERFCOUNTERS 0 +#define USE_RESP_MAIL 0 #define SHARED_PAGES (4*(RCCE_SHM_SIZE_MAX >> PAGE_SHIFT)) #define OWNER_SIZE ((SHARED_PAGES * sizeof(uint8_t) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) @@ -290,6 +291,7 @@ int svm_access_request(size_t addr) icc_send_gic_irq(remote_rank); request[remote_rank]++; +#if USE_RESP_MAIL #if USE_PERFCOUNTERS uint64_t wait_start = rdtsc(); #endif @@ -304,6 +306,13 @@ int svm_access_request(size_t addr) max_wait = res; #endif +#else + while (page_owner[pageid] != RCCE_IAM) { + icc_mail_check(); + NOP8; + } +#endif + addr &= 0xFFFFF000; // align address to page boundary ret = change_page_permissions(addr, addr + PAGE_SIZE, VMA_READ|VMA_WRITE|VMA_CACHEABLE); @@ -524,13 +533,15 @@ int svm_emit_page(size_t phyaddr, int ue) svm_flush(phyaddr); +#if USE_RESP_MAIL // send response back to ue // ue is polling for the response => no irq is needed iRCCE_mail_send(0, SVM_RESP, 0, NULL, ue); +#endif emit[ue]++; - viraddr = phys2virt[pageid]; page_owner[pageid] = ue; + viraddr = phys2virt[pageid]; change_page_permissions(viraddr, viraddr+PAGE_SIZE, VMA_NOACCESS|VMA_READ|VMA_CACHEABLE); }