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

[Xen-devel] Re: [RFC PATCH 08/35] Add Xen-specific memory management def

To: "Martin J. Bligh" <mbligh@xxxxxxxxxx>
Subject: [Xen-devel] Re: [RFC PATCH 08/35] Add Xen-specific memory management definitions
From: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>
Date: Tue, 9 May 2006 18:44:11 +0100
Cc: Chris Wright <chrisw@xxxxxxxxxxxx>, virtualization@xxxxxxxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, Ian Pratt <ian.pratt@xxxxxxxxxxxxx>
Delivery-date: Tue, 09 May 2006 10:44:38 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <4460AC09.8030208@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: <20060509084945.373541000@xxxxxxxxxxxx> <20060509085151.047254000@xxxxxxxxxxxx> <4460AC09.8030208@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.4.1i
On Tue, May 09, 2006 at 07:49:45AM -0700, Martin J. Bligh wrote:
> 
> >+#define virt_to_ptep(__va)                                          \
> >+({                                                                  \
> >+    pgd_t *__pgd = pgd_offset_k((unsigned long)(__va));             \
> >+    pud_t *__pud = pud_offset(__pgd, (unsigned long)(__va));        \
> >+    pmd_t *__pmd = pmd_offset(__pud, (unsigned long)(__va));        \
> >+    pte_offset_kernel(__pmd, (unsigned long)(__va));                \
> >+})
> 
> Do we really need yet another function to do this?
> Especially one in a mult-line #define instead of a real function call,
> and that doesn't seem to error check at each step?

Indeed, I'll use lookup_address instead.

> >+
> >+#define arbitrary_virt_to_machine(__va)                              \
> >+({                                                                  \
> >+    maddr_t m = (maddr_t)pte_mfn(*virt_to_ptep(__va)) << PAGE_SHIFT;\
> >+    m | ((unsigned long)(__va) & (PAGE_SIZE-1));                    \
> >+})
> >+
> >+#define make_lowmem_page_readonly(va, feature) do {         \
> >+    pte_t *pte;                                             \
> >+    int rc;                                                 \
> >+                                                            \
> >+    if (xen_feature(feature))                               \
> >+            return;                                         \
> >+                                                            \
> >+    pte = virt_to_ptep(va);                                 \
> >+    rc = HYPERVISOR_update_va_mapping(                      \
> >+            (unsigned long)va, pte_wrprotect(*pte), 0);     \
> >+    BUG_ON(rc);                                             \
> >+} while (0)
> 
> Things this long should definitely not be #defines.

I've changed these to be functions and moved them into a .c file
under arch/i386/mach-xen.

    christian


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

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