RE: kernel memory allocation - please help me

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

 



On Sun, 2006-05-28 at 14:38 +0530, Muneeswaran P - TLS, Chennai wrote:
> 
> -----Original Message-----
> From: Arjan van de Ven [mailto:arjan@xxxxxxxxxxxxx]
> Sent: Saturday, May 27, 2006 6:58 PM
> To: Muneeswaran P - TLS, Chennai
> Cc: kernelnewbies@xxxxxxxxxxxx
> Subject: Re: kernel memory allocation - please help me
> 
> 
> On Sat, 2006-05-27 at 17:13 +0530, Muneeswaran P - TLS, Chennai wrote:
> > Hi,
> > 
> > Pls help me.
> > 
> > 	I am writing device driver (kernel 2.6 ) for PCI-X card.
> > 
> > 	Pls clarify the following doubts:
> > 	1. DPRAM is memory mapped to PCI-X card. BAR-0 is mapped to DPRAM.
> > 	2. I have to transfer data from main memory to DPRAM using bus
> > master concept.
> > 
> > 	3. I have allocated main memory using kmalloc() call. How to make
> > this main memory area as non-cacheable one ? 
> 
> why would it have to be uncachable?
> 
> Processors keep copies of recently accessed memory areas in a fast, local
> cache;
> without this cache, reasonable performance is not possible. If the device
> changes an
> area of main memory, it is imperative that any processor caches covering
> that area be
> invalidated; otherwise the processor may work with an incorrect image of
> main memory,
> and data corruption results. 

I understand that; there are 2 basic designs here
1) the CPU sniffs the bus and invalidates automatically (this is done on
x86 for example)
2) the OS has to do it

> Similarly, when the device reads data
> from main memory, any changes to that memory residing in processor caches
> must be
> flushed out first.

In Linux, if you use the DMA API correctly (pci_map_* etc) then this
flushing is done for you automatically. Either by the API, or by the cpu
in case of a dma cache coherent CPU such as x86. This is why you need to
use the API, it takes care of this for you.



--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           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