portable host memory

I have a program that runs on two GPUs, main thread uses the GPU for result visualization (GTX285) and a server thread for data processing (Tesla C1060), they exchange data via portable host memory allocated in main thread.
In a case that the server thread crashes (which also causes the display driver stop responding and recovered), I trigger the server thread to restart (call cudaThreadExit(), exit thread, then re-create the thread and CUDA context), then everything else just works fine except that any call to allocate portable memory (cudaHostAlloc with cudaHostAllocPortable) will fail. Any explanation for that? Thanks!