Linux kernel 查找ACPI设备以启动内核DMA API的平台设备

Linux kernel 查找ACPI设备以启动内核DMA API的平台设备,linux-kernel,kernel,dma,acpi,Linux Kernel,Kernel,Dma,Acpi,我正在尝试在Dell Inspiron 5500笔记本电脑上执行DMA操作。比如说,我想将一个Linux页面(在我的机器上是4K)的数据从一个物理内存位置传输到另一个物理内存位置。我的问题如下 如何确定我是否支持DMA?我尝试过反编译和解析/sys/firmware/acpi/tables/DSDT,但我不确定哪个节点映射或将映射到DMA。我更熟悉嵌入式系统中的设备树blob,这种ACPI格式对我来说是陌生的 如果我能够找到此节点,如何获取 结构设备*dev 在一个平台上,驾驶员要交给 stru

我正在尝试在Dell Inspiron 5500笔记本电脑上执行DMA操作。比如说,我想将一个Linux页面(在我的机器上是4K)的数据从一个物理内存位置传输到另一个物理内存位置。我的问题如下

  • 如何确定我是否支持DMA?我尝试过反编译和解析/sys/firmware/acpi/tables/DSDT,但我不确定哪个节点映射或将映射到DMA。我更熟悉嵌入式系统中的设备树blob,这种ACPI格式对我来说是陌生的

  • 如果我能够找到此节点,如何获取

    结构设备*dev

  • 在一个平台上,驾驶员要交给

    struct dma_chan *dma_request_chan(struct device *dev, const char *name);
    
    根据本指南

    更新

    以下是有关系统信息文件的链接

    lspci -nk -vv
    


    如果这还不够,我可以添加dmesg,但我的机器已经运行很长时间了,我已经在做一些事情了。

    您需要提供更多关于运行您的东西的系统的信息,也许我不太清楚其他信息。该平台几乎没有任何意义(市场名称对于非常不同的东西可能是相同的),因此,您需要提供一个SoC(在x86可能是CPU/PCH的情况下)部件号,系统日志的输出,如
    acpidump-o table.dump
    以及
    grep-h15/sys/bus/acpi/devices/*/status
    lspci-nk-vv
    ,当您的内核命令行设置了ignore_loglevel选项时,可能是full
    dmesg
    。我看不到您的机器上有任何通用DMA控制器可用。对于Haswell ULT笔记本电脑,它可能在ACPI HID INTL9C60下提供。看起来你们的不是ULT变体。你们需要提供更多关于你们运行你们的东西的系统的信息,也许我不太清楚其他的信息。该平台几乎没有任何意义(市场名称对于非常不同的东西可能是相同的),因此,您需要提供一个SoC(在x86可能是CPU/PCH的情况下)部件号,系统日志的输出,如
    acpidump-o table.dump
    以及
    grep-h15/sys/bus/acpi/devices/*/status
    lspci-nk-vv
    ,当您的内核命令行设置了ignore_loglevel选项时,可能是full
    dmesg
    。我看不到您的机器上有任何通用DMA控制器可用。对于Haswell ULT笔记本电脑,它可能在ACPI HID INTL9C60下提供。看来你的不是一个变种。
    sudo acpidump
    
    grep -H 15 /sys/bus/acpi/devices/*/status