x86_64 CPUでのPhysical Addressの話。
昔のIntel石は36bits, AMD石は40bits だった。 それが拡張されたという話。
これは、どこで表示しているかと言うと、 arch/x86_64/kernel/setup.cのここらへん。
seq_printf(m, "address sizes\t: %u bits physical, %u bits virtual\n", c->x86_phys_bits, c->x86_virt_bits);
そんでもって、x86_phys_bitsはどこから持ってくるかというと、
c->x86_phys_bits = eax & 0xff; /* CPUID workaround for Intel 0F34 CPU */ if (c->x86_vendor == X86_VENDOR_INTEL && c->x86 == 0xF && c->x86_model == 0x3 && c->x86_mask == 0x4) c->x86_phys_bits = 36;
こんな風情なのでeaxから拾ってくる。
で、問題なのは、一部の石で拡張されていて、 36bitではなく、38bitのものがあるということだ。