kmalloc如何返回大于物理地址大小的物理地址?

时间:2012-09-10 05:39:19

标签: linux memory-management kmalloc

我在Linux中的设备驱动程序中为kmalloc分配了一块内存。我得到的地址是0xffff880000180000。我正在使用具有46位物理地址空间的IvyBridge处理器。这意味着CPU没有超过46个寻址引脚,因此它无法访问0x00003fffffffffff以上的任何地址。我得到的地址明显大于那个,因为它有47位设置。

假设kmalloc返回一个物理指针(即虚拟,线性和物理地址相同的指针),如果CPU无法访问,我该如何获得这样的地址?


此问题与“Why am I getting a high address when I use kmalloc with GFP_DMA in Linux?”有关。但是,它并不完全相同。这个问题一般是关于物理地址kmalloc返回,而关联的问题是关于GFP_DMA的使用及其与返回地址的关系。

1 个答案:

答案 0 :(得分:3)

它显然不是物理地址,而是线性或虚拟地址,并且是“规范形式”,其中第47位的值是“符号扩展”到第63位。