• Oded Gabbay's avatar
    habanalabs/gaudi: add debugfs to DMA from the device · 639781dc
    Oded Gabbay authored
    When trying to debug program, the user often needs to
    dump large parts of the device's DRAM, which can reach to tens of GBs.
    Because reading from the device's internal memory through the PCI BAR
    is extremely slow, the debug can take hours.
    
    Instead, we can provide the user to copy data through one of the DMA
    engines. This will make the operation much faster.
    
    Currently, only GAUDI is supported.
    
    In GAUDI, we need to find a PCI DMA engine that is IDLE and set the
    DMA as secured to be able to bypass our MMU as we currently don't
    map the temporary buffer to the MMU.
    
    Example bash one-line to dump entire HBM to file (~2 minutes):
    
    for (( i=0x0; i < 0x800000000; i+=0x8000000 )); do \
    printf '0x%x\n' $i | sudo tee /sys/kernel/debug/habanalabs/hl0/addr ; \
    echo 0x8000000 | sudo tee /sys/kernel/debug/habanalabs/hl0/dma_size ; \
    sudo cat /sys/kernel/debug/habanalabs/hl0/data_dma >> hbm.txt ; done
    Signed-off-by: default avatarOded Gabbay <ogabbay@kernel.org>
    639781dc
debugfs.c 33.6 KB