This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] comment request: dom0 dma on large memory systems

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] comment request: dom0 dma on large memory systems
From: "Scott Parish" <srparish@xxxxxxxxxx>
Date: Fri, 3 Jun 2005 07:35:01 +0000
Delivery-date: Fri, 03 Jun 2005 08:14:28 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/

The patches i'm working on is taking more work then i was expecting; this
email's purpose is to get confirmation that the solution i'm working on
is the preferred one.


On x86_64 with 6gig ram, dom0's initial allocation is from memory
above the pci hole (referred to as "high memory" in this email) if
dom0_mem is set to 2g or higher. The only problem is that most io/dma
devices (non-dac) can only dma to the first 32bits worth of machine
addresses--thus for some configurations, dom0 has no memory which is

This is realized, in my experience, with dom0 unable to find any
partitions on scan and panicking because it can't mount root.

proposed solution to xen:

The attached patch is a (non-functional) prototype of my proposed
solution to the xen. The idea is to add a third MEMZONE for
dma'able memory, change the alloc_domheap_pages() interface so the
caller can request only dma memory if needed. Finally, internal to
common/page_alloc.c, split memory between MEMZONE_DOM and MEMZONE_DMADOM
based on the address.

proposed solution to dom0:

Dom0 might have memory allocated to it from both high and low memory.
The easiest solution would probably be to scan for and preallocate a
chunk of memory that will work for dma, something like what pci-gart.c
does. (or work on letting pci-gart.c work under xen)


Scott Parish
Signed-off-by: srparish@xxxxxxxxxx

Attachment: memzone-dmadom.diff
Description: Text document

Xen-devel mailing list