I have a PCI device that needs to read and write from userspace. I'm trying to use zero copy; is there a way to allocate, pin, and get the physical address of a userspace address completely within userspace or do I need to have a kernel module that, say, calls virt_to_phys or get_user_pages? The device's memory is mapped into userspace memory via MMIO so I can pass it any data that's needed. Thanks.
2
There are 2 best solutions below
0
benzaita
On
Basically you need the memory to be DMA-able, and as far as I know only a kernel module can do that. See http://lxr.free-electrons.com/source/Documentation/PCI/PCI-DMA-mapping.txt
Related Questions in LINUX
- Is there some way to use printf to print a horizontal list of decrementing hex digits in NASM assembly on Linux
- Why does Hugo generate different taxonomy-related HTML on different OS's?
- Writes in io_uring do not advance the file offset
- Why `set -o pipefail` gives different output even though the pipe is not failing
- what really controls the permissions: UID or eUID?
- Compiling eBPF program in Docker fails due to missing '__u64' type
- Docker container unable to make HTTPS requests to external API
- Whow to use callback_query_handler in Python 3.10
- Create kea runtime directory at startup in Yocto image
- Problem on CPU scheduling algorithms in OS
- How to copy files into the singularity sandbox?
- Android kernel error: undefined reference to `get_hw_version_platform'
- Is there a need for BPF Linux namespace?
- Error when trying to execute a binary compiled in a Kali Linux machine on an Ubuntu system
- Issue with launching application after updating ElectronJs to version 28.0.0 on Windows and Linux
Related Questions in PCI
- How does CPU tell between MMIO(Memory Mapped IO) and normal memory access in x86 architecture
- Getting Page Fault while accessing another PCIe NTB switch(SW2 NTB1) from one PCIe NTB switch(SW1 NTB0)
- finding PCI domain number for extended BDF
- How LPI get deviceid from PCIe device and differentiate(same BDF)?
- How to find type of PCI slots on windows server
- How to create a PCI node in devicetree for server platforms?
- How to get PCI slot information for network adapters / NIC cards using python API like wmi on windows
- Enabled MSI in qemu, but interrupt handler not invoking
- Since PCIe write TLP is Post, what will happen when CPU access memory mapped bar address very frequently?
- QDMA DPDK driver results "Packet Length Mismatch" Error during data transfer
- Linux PCI driver of_node NULL when loaded
- Why is the MSI message data always 0? And how does IRQ affinity work?
- Do PCI and PCIe allow change BAR value to remap device registers to new address?
- Read PCI config address for PCI device iteration
- DPDK TestPMD application results 0 rx packets
Related Questions in ZERO-COPY
- Polars: Is there a procedure that ensures zero copy when calling df.to_numpy()?
- polars - what does "fortran-like indexing" mean and how to enforce it?
- How do zero-copy networking libraries avoid copies when they read/write packets into rx/tx rings?
- Zero copy in sockets
- Does pybind11 create a copy when passing bytes/string from python to C++?
- Gstreamer zero copy dmabuf encoding
- Is zero-copy only supported by Kafka on linux?
- How is splice() actually doing zero-copy in Linux?
- Out-of-band (zero-copy) pickling of a Pandas DataFrame with mixed column types
- Is there a way make a std::string that references an externally provided buffer but not own it?
- Numpy array: get the raw bytes without copying
- Netty using ByteBuffer from pooled direct ByteBuf
- How to implement zero-copy form gRPC c++
- zero-copy from SocketChannel to SocketChannel
- High perf content server in java
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
It was a total hack, but I limited Linux to a range of memory and used MMIO to allocate memory for my device that the kernel was unaware of.