我有一个 Linux 设备驱动程序,它连接到理论上可以使用 64 位地址执行 DMA 的设备。我想测试一下这是否真的有效。
有没有一种简单的方法可以强制 Linux 机器不使用物理地址 4G 以下的任何内存?如果内核映像内存不足,则可以;我只是希望能够强制一种情况,即我知道所有动态分配的缓冲区,并且为我分配的任何内核或用户缓冲区都不能以 32 位寻址。这有点蛮力,但会比我能想到的任何其他东西都更全面。
这应该可以帮助我发现 (1) 硬件配置不正确或未加载完整地址(或只是简单损坏)以及 (2) 意外和不必要地使用反弹缓冲区(因为无处可反弹)。
澄清:我正在运行 x86_64,所以我不关心大多数旧的 32 位寻址问题。我只是想测试驱动程序是否可以使用 64 位物理地址与大量缓冲区正确连接。