Re: temp. mem mappings

Stephen C. Tweedie
2001-06-07T10:00:33Z

Hi,

On Wed, Jun 06, 2001 at 05:14:26PM -0400, cohutta wrote:

> I think this is part of the problem: on my 1 GB system, the
> ACPI tables are at physical 0x3fffxxxx == virtual 0xffffxxxx,
> which could conflict with the APIC and IOAPIC mappings
> (from fixmap.h).

Shouldn't be --- the fixmaps should be part of the kernel's dynamic
virtual area, which is not identity mapped. You can still map those
physical addresses via kmap() on a highmem system (and a 1GB machine
should be running a highmem kernel).

> Well, i'm talking about physical memory, but it's marked as ACPI
> data.

If it is marked PG_Reserved, then ioremap() will work on it despite it
being inside the normal physical memory area. If not, kmap() will
still work.

> Another part of the problem is that I need to do this early in
> arch/i386/kernel/setup.c::setup_arch(), like between calls to
> paging_init() and init_apic_mappings(). I can't use ioremap()
> here can i? ioremap() calls get_vm_area() which calls
> kmalloc(), and i don't think i can use kmalloc() just yet.

Right --- you can use alloc_pages but we haven't done the
initialisation of the kmalloc slabsl by this point.

_Why_ do you need access to the ACPI tables so early, though?

Cheers,
Stephen