vmalloc_to_pfn devuelve la dirección de 32 bits en el sistema Linux 32. ¿Por qué corta bits más altos de la dirección física PAE?

Estoy usandovmalloc_to_pfn () para obtener la dirección física en un sistema PAE Linux de 32 bits. Parece que vmalloc_to_pfn () devuelve "unsigned long", lo que significa que es de 32 bits en un sistema de 32 bits, 64 bits en un sistema de 64 bits. En Linux de 64 bits, el largo sin firmar es de 64 bits y no tengo problemas.

Problema: usando esta función para convertir virtual a físico:

VIRGINIA:0xf8ab87fc PA utilizando vmalloc_to_pfn:0x36f7f7fc. Pero en realidad estoy esperando:0x136f7f7fc.

La dirección física cae entre 4 a 5 GB. Pero no puedo obtener la dirección física exacta, solo obtengo la dirección de 32 bits cortada. ¿Hay otra manera de conseguirverdadera direccion fisica?

Respuestas a la pregunta(1)

Su respuesta a la pregunta