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