Re: Looking for guidance on large memory allocation strategy

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 5, 2009 at 8:56 PM, Om <om.turyx@xxxxxxxxx> wrote:
> Andrew Sterian wrote:
>> I'm developing a driver for an embedded ARM system (2.6.24 system) and
>> have 128M of RAM which I have been given free reign over. I want to
>
> How do you define this free reign? Who is managing it ? kernel?

Whatever works...I am using mmap() to map the data from kernel to user
so I guess the kernel has to manage it.

>> I have the driver working with 8k of RAM, simply using kmalloc(). My
>> efforts to scale up to 8M have failed.
>
> what I did was ioremap.
> My case:
> 1. m/c had 256M
> 2. Passed parameter mem=128M to limit what cpu sees.
> 3. used ioremap on 0xc800_0000 (32bit processor) for 128M
> 4. used the returned virtual address.

OK, I tried this and it somewhat works (with MEM=120M in a 128M
system, 120M offset is 0xC7800000):

        addr = ioremap(0xC7800000, 8*1024*1024);
        printk(KERN_NOTICE "%08X\n", addr);

Strange is that the value of 'addr' when printed is 0xC7700000, or 1M
lower than I asked for.

Now in my driver's mmap() function I write:

    remap_pfn_range(vma, vma->vm_start,
                                       __pa(addr) >> PAGE_SHIFT,
// ??? right ???
                                      vma->vm_end - vma->vm_start,
vma->vm_page_prot);

The __pa() function returns 0x87700000 which I guess is right, except
for being 1M too low.

Is this the right way to do it?

> Make sure that your PCI address space starts well above the physical address
> present, so should the vmalloc_start address. I think you can change
> #defines for these if required to suit your need.

No PCI in this system and I have no idea what vmalloc_start address is :)

Thanks for your help.

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux