Jivin Markus Franke lays it down ...
> Hi David,
> 
> David McCullough schrieb:
> >bootmem perhaps ?  I can't recall exactly but I think you have added a zone
> >without adding or freeing  the pages appropriately.
> 
> Exactly. It seems that the 16 MB DMA zone is reservered correctly but 
> the kernel doesn't recognize this memory to be "free". How can I free 
> the pages appropriately?

See below.

> >If I am reading what you have done correctly,  you now have two areas of
> >RAM,  a 16MB DMA area and a 16MB?? area for normal use.
> 
> Well, I have a 16 MB DMA zone and a 48 MB normal zone which gives 64 MB 
> RAM in total.

Sorry,  couldn't remember the RAM size you had :-)

> >You have to remember that on a PC,  the DMA memory is still normal
> >memory,  it is just marked as preferred for DMA.
> 
> I plan to have a DMA zone from 0x0 to 0x00FFFFFF (16 MB). The kernel 
> loads to 0x01000000 which is the first address after DMA zone. Then I 
> want to declare the zone from 0x0 to 0x00FFFFFF as non-cacheable in my 
> cache configuration.
> Right now the kernel boots from 0x0 and everything is working fine. But 
> all the kernel datastructures as well as the code are placed in the 16 
> MB DMA zone which is declared as non-cacheable (at least for data). This 
> results in a significant performance loss. I want to move all kernel 
> code and datastructures which get allocated from the normal zone to the 
> memory area starting from 0x01000000.
> I have the feeling that I am missing something fundamental. :-) Sorry, 
> if this is already offtopic on this list...think it rather belongs to a 
> linux kernel specific list.
> 
> >Have a look at some other arch setups that use a DMA memory zone and see
> >if you can spot it,
> 
> Well, I had a look at blackfin architecture but they use their own page 
> allocator for the DMA zone which is just a simple "self-made" list. 
> Isn't there any support from linux side?

Do some like:

        grep -r ZONE_DMA arch/*

Some likely ones to consider are:

        arch/mips/mm/init.c:         paging_init
        arch/x86/kernel/setup_32.c:  zone_sizes_init

They all seem to call:

        free_area_init_nodes(max_zone_pfns);

Though you may need to make sure the m68knommu code is doing the right
thing in this space,

Cheers,
Davidm

-- 
David McCullough,  [EMAIL PROTECTED],   Ph:+61 734352815
Secure Computing - SnapGear  http://www.uCdot.org http://www.cyberguard.com
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to