RCCE_shmalloc returns only a physical address => we have to map this region into the virtual address space
This commit is contained in:
parent
af6ef23085
commit
2605ce5b34
4 changed files with 21 additions and 9 deletions
|
@ -84,7 +84,7 @@ static void intr_handler(struct state *s)
|
|||
int tmp, z;
|
||||
|
||||
#ifdef CONFIG_LWIP
|
||||
// mmnif_irqhandler();
|
||||
mmnif_irqhandler();
|
||||
#endif
|
||||
|
||||
z = Z_PID(RC_COREID[my_ue]);
|
||||
|
|
|
@ -47,6 +47,7 @@ extern HANDLE hProc;
|
|||
|
||||
#include <metalsvm/semaphore.h>
|
||||
#include <metalsvm/spinlock.h>
|
||||
#include <metalsvm/page.h>
|
||||
|
||||
#include <asm/RCCE.h>
|
||||
#include <asm/RCCE_lib.h>
|
||||
|
@ -715,7 +716,11 @@ err_t mmnif_init(struct netif* netif)
|
|||
/* Alloc and clear shared memory for rx_buff
|
||||
*/
|
||||
mpb_size = (sizeof(mm_rx_buffer_t) + MMNIF_RX_BUFFERLEN);
|
||||
// align mpb size to the granularity of a page size
|
||||
mpb_size = (mpb_size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1);
|
||||
mpb_start_address = RCCE_shmalloc(mpb_size*MMNIF_CORES);
|
||||
// map physical address in the virtual address space
|
||||
mpb_start_address = map_region(0, mpb_start_address, mpb_size >> PAGE_SHIFT, MAP_KERNEL_SPACE|MAP_NO_CACHE);
|
||||
|
||||
mmnif->rx_buff = mpb_start_address + (mpb_size) * (own_ip_address - router_ip_address);
|
||||
if (!(mpb_start_address))
|
||||
|
@ -1103,6 +1108,8 @@ int mmnif_open(void)
|
|||
*/
|
||||
int mmnif_close(void)
|
||||
{
|
||||
size_t phyaddr;
|
||||
|
||||
mmnif_t* mmnif;
|
||||
|
||||
if (!mmnif_dev)
|
||||
|
@ -1119,7 +1126,12 @@ int mmnif_close(void)
|
|||
|
||||
kfree(mmnif->tx_buff[0],MMNIF_TX_QUEUELEN * MMNIF_TX_BUFFERLEN);
|
||||
kfree(mmnif_dev,sizeof(mmnif_t));
|
||||
RCCE_shfree(mpb_start_address);
|
||||
|
||||
// determine physical address
|
||||
phyaddr = virt_to_phys(mpb_start_address);
|
||||
// unmap shared memory regeion
|
||||
unmap_region(mpb_start_address, mpb_size >> PAGE_SHIFT);
|
||||
RCCE_shfree(phyaddr);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -153,7 +153,7 @@ int network_init(void)
|
|||
}
|
||||
}
|
||||
#else
|
||||
//mmnif_open();
|
||||
mmnif_open();
|
||||
#endif
|
||||
|
||||
// start echo and ping server
|
||||
|
@ -169,7 +169,7 @@ int network_shutdown(void)
|
|||
{
|
||||
#ifdef CONFIG_LWIP
|
||||
#ifdef CONFIG_ROCKCREEK
|
||||
//mmnif_close();
|
||||
mmnif_close();
|
||||
#elif defined(CONFIG_PCI)
|
||||
dhcp_release(default_netif);
|
||||
dhcp_stop(default_netif);
|
||||
|
|
|
@ -131,7 +131,7 @@ static int svm_test(void *arg)
|
|||
my_ue = RCCE_ue();
|
||||
num_ues = RCCE_num_ues();
|
||||
|
||||
#if 0
|
||||
#if 1
|
||||
if (!my_ue) {
|
||||
// allocate and initialize SVM region
|
||||
A[0] = (int*) kmalloc(3*N*N*sizeof(int));
|
||||
|
@ -399,14 +399,14 @@ int test_init(void)
|
|||
// create_kernel_task(NULL,client_task,NULL);
|
||||
#endif
|
||||
|
||||
//create_kernel_task(NULL, foo, "Hello from foo1");
|
||||
//create_kernel_task(NULL, join_test, NULL);
|
||||
create_kernel_task(NULL, foo, "Hello from foo1");
|
||||
create_kernel_task(NULL, join_test, NULL);
|
||||
//create_kernel_task(NULL, producer, NULL);
|
||||
//create_kernel_task(NULL, consumer, NULL);
|
||||
//create_kernel_task(NULL, mail_ping, NULL);
|
||||
create_kernel_task(NULL, svm_test, NULL);
|
||||
//create_kernel_task(NULL, svm_test, NULL);
|
||||
//create_user_task(NULL, "/bin/hello", argv);
|
||||
//create_user_task(NULL, "/bin/tests", argv);
|
||||
create_user_task(NULL, "/bin/tests", argv);
|
||||
//create_user_task(NULL, "/bin/jacobi", argv);
|
||||
//create_user_task(NULL, "/bin/jacobi", argv);
|
||||
//create_user_task(NULL, "/bin/server", server_argv);
|
||||
|
|
Loading…
Add table
Reference in a new issue