Does cudaMallocHost or cudaHostAlloc APIs allocate contiguous physical memory

Hi,
I have few queries regarding the memory allocation methods provided using the cuda APIs

  1. Does cudaMallocHost or cudaHostAlloc APIs allocate contiguous physical memory from the Host.

  2. Is there any limitation with the amount of memory that can be allocated with
    cudaMallocHost()
    cudaMalloc()

  3. Can we provide the memory address obtained through cudaMallocHost() and cudaMalloc() to copy the stream from the camera device connected through PCIe interface using some DMA controller . Here this means that the address provided to the DMA controller is Physical address and the allocated memory is contiguous.