kmalloc
Linuxのデバイスドライバーでメモリのブロックを割り当てています。私が取得するアドレスはです0xffff880000180000
。46ビットの物理アドレス空間を持つIvyBridgeプロセッサを使用しています。つまり、CPUには46個を超えるアドレス指定ピンがないため、上記のアドレスにはアクセスできません0x00003fffffffffff
。私が取得しているアドレスは、ビット47が設定されているため、明らかにそれよりも大きくなっています。
が物理ポインター(つまり、仮想アドレス、線形アドレス、物理アドレスが同じポインター)を返すと仮定するとkmalloc
、CPUからアクセスできない場合、どのようにしてそのようなアドレスを取得できますか?
この質問は、「LinuxでGFP_DMAでkmallocを使用すると、なぜ高いアドレスを取得するのですか?」に関連しています。ただし、同じではありません。この質問はkmalloc
、一般的な物理アドレスの返送に関するものですが、リンクされた質問は、返送されGFP_DMA
たアドレスの使用とその関係に関するものです。