Re: [Linux-ia64] LINUX IA64 Memory Support

From: David Mosberger <>
Date: 2000-02-18 16:27:52
>>>>> On 15 Feb 2000 22:03:03 +0100, Jes Sorensen <> said:

>>>>> "Venkatesh" == Venkatesh Ramamurthy <> writes:
  Venkatesh> Hi, Is there any way in which one can allocate memory say
  Venkatesh> below 4 GB ( physical address )in drivers.  TIA Venkatesh

  Jes> This is not IA64 specific actually, so consider it a general
  Jes> answer rather than an IA64 one.

  Jes> A regular GFP_KERNEL should give you memory within the PCI
  Jes> DMA'able area, which with the old PCI system meant within the
  Jes> 4GB range. GFP_DMA will give you something within the ISA DMA
  Jes> space. However, in principle none of the above means that the
  Jes> memory is within the lower 4GB memory range, if the machine in
  Jes> question has an IOMMU type device, you may be handed memory
  Jes> which is in the middle of the memory space, but which is mapped
  Jes> to the 4GB the PCI bus in the machine can see.

  Jes> With the new PCI allocation system it is even more flexible,
  Jes> here you may get addresess anywhere and you then tell the PCI
  Jes> subsystem at run time to map the memory to the space the PCI
  Jes> bus can address. This means it will be possible to support
  Jes> systems with for instance 200 PCI busses (if someone feels like
  Jes> building such) etc.

Jes's answer is basically correct:

 - If you're writing a driver, use the new PCI DMA API (see pci.h in
   kernel 2.3.44 or later) and you'll be fine.

 - If you need memory below 4GB for some other reason, you're
   presently out of luck.  However, the already agreed upon solution
   is to add a new "zone" which will represent memory below 4GB
   (ZONE_32BIT or some such).  I plan to do this asap as we need this
   zone to properly implement the PCI DMA API (it currently works only
   because no Itanium system we know of/have access to has more than
   1GB of RAM ;-).

Received on Thu Feb 17 21:28:13 2000

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:19:58 EST