WARNING - OLD ARCHIVES

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/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] /dev/mem

To: "Jan Beulich" <JBeulich@xxxxxxxxxx>
Subject: Re: [Xen-devel] /dev/mem
From: Keir Fraser <Keir.Fraser@xxxxxxxxxxxx>
Date: Tue, 24 Jan 2006 17:03:42 +0000
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 24 Jan 2006 17:06:13 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <43D66354.76F0.0078.0@xxxxxxxxxx>
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>
References: <43D66354.76F0.0078.0@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx

On 24 Jan 2006, at 16:26, Jan Beulich wrote:

Wouldn't it be more reasonable to have /dev/mem represent machine addresses only outside of the range of physical memory assigned to a VM, and physical addresses inside this range? That way, more consistent behavior should be achieved to
native systems.

What I'm seeing is that accesses to /dev/mem offset 0x100000 get a failure in __direct_remap_pfn_range() (including, if debugging is turned on, two log messages from the hypervisor). If these accesses went to kernel memory instead, consumers of this interface would get exactly what they get on a native OS.

Does anyone sane peek /dev/mem to get at kernel code/data? I doubt it.

Further I would think that such map attempts shouldn't even make it to the hypervisor, thus avoiding the log messages (which I started looking into only because I thought they might indicate a latent bug of some sort). This would, however, require knowledge in the kernel which addresses (or address ranges) represent physical memory (rather than
potential I/O memory regions).

Non-debug Xen builds don;t print those messages so won't scare users.

Finally, while following the involved code paths, I noted a check that is made in __ioremap, by calling is_local_lowmem(). It would seem to me that calling this function just for the first address is insufficient - the range specified may begin in non-lowmem but end in lowmem. Or it may begin in lowmem and end in non-lowmem, in which case I would think that virt_to_page() wouldn't work correctly anymore (permitting, say, an erroneous dd command issued by root
to result in an oops or maybe worse things).

It's assumed people using those interfaces know what they're doing. How can a 'dd' end up in __ioremap() anyway?

 -- Keir


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>