Re: temp. mem mappings

Stephen C. Tweedie
2001-06-06T08:23:58Z

Hi,

On Tue, Jun 05, 2001 at 04:42:52PM -0400, cohutta wrote:

> Normal memory is identity-mapped very early in boot anyway (except for
> highmem on large Intel boxes, that is, and kmap() works for that.)
>
> I don't really want to play with the page tables if i can help it.
> I didn't use ioremap() because it's real system memory, not IO bus
> memory.
>
> How much normal memory is identity-mapped at boot on x86?
> Is it more than 8 MB?

> I'm trying to read some ACPI tables, like the FACP.
> On my system, this is at physical address 0x3fffd7d7 (e.g.).

It depends at what time during boot. Some ACPI memory is reusable
once the system boots: the kernel parses the table then frees up the
memory which the BIOS initialised.

VERY early in boot, while the VM is still getting itself set up, there
is only a minimal mapping set up by the boot loader code. However,
once the VM is initialised far enough to let you play with page
tables, all memory will be identity-mapped up to just below the 1GB
watermark.

> kmap() ends up calling set_pte(), which is close to what i am
> already doing. i'm having a problem on the unmap side when i
> am done with the temporary mapping.

kunmap(). :-) But kmap only works on CONFIG_HIGHMEM kernel builds.
On kernels built without high memory support, kmap will not allow you
to access memory beyond the normal physical memory boundary.

Cheers,
Stephen