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-changelog

[Xen-changelog] [IA64] assign_new_domain_page now calls assign_domain_pa

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [IA64] assign_new_domain_page now calls assign_domain_page
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 27 Apr 2006 10:32:13 +0000
Delivery-date: Thu, 27 Apr 2006 03:34:39 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID e45666b8b05f01f9fb43dbc25c085c802c64b52d
# Parent  138c76d5e493915720c6abd8206ed11c74d9e6fd
[IA64] assign_new_domain_page now calls assign_domain_page

assign_new_domain_page inlines assign_new_domain0_page and calls
assign_domain_page.
cleanup in asm-ia64/xenprocessor.h

Signed-off-by: Tristan Gingold <tristan.gingold@xxxxxxxx>

diff -r 138c76d5e493 -r e45666b8b05f xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c        Fri Mar 24 10:38:41 2006 -0700
+++ b/xen/arch/ia64/xen/domain.c        Fri Mar 24 10:41:48 2006 -0700
@@ -488,80 +488,46 @@ void new_thread(struct vcpu *v,
        }
 }
 
-static struct page_info * assign_new_domain0_page(unsigned long mpaddr)
-{
-       if (mpaddr < dom0_start || mpaddr >= dom0_start + dom0_size) {
-               printk("assign_new_domain0_page: bad domain0 mpaddr 
0x%lx!\n",mpaddr);
-               printk("assign_new_domain0_page: start=0x%lx,end=0x%lx!\n",
-                       dom0_start, dom0_start+dom0_size);
-               while(1);
-       }
-       return mfn_to_page((mpaddr >> PAGE_SHIFT));
-}
-
-/* allocate new page for domain and map it to the specified metaphysical addr 
*/
+
+/* Allocate a new page for domain and map it to the specified metaphysical 
+   address.  */
 static struct page_info * assign_new_domain_page(struct domain *d, unsigned 
long mpaddr)
 {
-       struct mm_struct *mm = d->arch.mm;
-       struct page_info *pt, *p = (struct page_info *)0;
-       pgd_t *pgd;
-       pud_t *pud;
-       pmd_t *pmd;
-       pte_t *pte;
-
-       if (!mm->pgd) {
-               printk("assign_new_domain_page: domain pgd must exist!\n");
+       unsigned long maddr;
+       struct page_info *p;
+
+#ifdef CONFIG_DOMAIN0_CONTIGUOUS
+       if (d == dom0) {
+               if (mpaddr < dom0_start || mpaddr >= dom0_start + dom0_size) {
+                       /* FIXME: is it true ?
+                          dom0 memory is not contiguous!  */
+                       printk("assign_new_domain_page: bad domain0 "
+                              "mpaddr=%lx, start=%lx, end=%lx!\n",
+                              mpaddr, dom0_start, dom0_start+dom0_size);
+                       while(1);
+               }
+               p = mfn_to_page((mpaddr >> PAGE_SHIFT));
+       }
+       else
+#endif
+       {
+               p = alloc_domheap_page(d);
+               // zero out pages for security reasons
+               if (p) memset(__va(page_to_maddr(p)),0,PAGE_SIZE);
+       }
+       if (unlikely(!p)) {
+               printf("assign_new_domain_page: Can't alloc!!!! Aaaargh!\n");
                return(p);
        }
-       pgd = pgd_offset(mm,mpaddr);
-       if (pgd_none(*pgd))
-       {
-               pgd_populate(mm, pgd, pud_alloc_one(mm,mpaddr));
-               pt = maddr_to_page(pgd_val(*pgd));
-               list_add_tail(&pt->list, &d->arch.mm->pt_list);
-       }
-
-       pud = pud_offset(pgd, mpaddr);
-       if (pud_none(*pud))
-       {
-               pud_populate(mm, pud, pmd_alloc_one(mm,mpaddr));
-               pt = maddr_to_page(pud_val(*pud));
-               list_add_tail(&pt->list, &d->arch.mm->pt_list);
-       }
-
-       pmd = pmd_offset(pud, mpaddr);
-       if (pmd_none(*pmd))
-       {
-               pmd_populate_kernel(mm, pmd, pte_alloc_one_kernel(mm,mpaddr));
-//             pmd_populate(mm, pmd, pte_alloc_one(mm,mpaddr));
-               pt = maddr_to_page(pmd_val(*pmd));
-               list_add_tail(&pt->list, &d->arch.mm->pt_list);
-       }
-
-       pte = pte_offset_map(pmd, mpaddr);
-       if (pte_none(*pte)) {
-#ifdef CONFIG_DOMAIN0_CONTIGUOUS
-               if (d == dom0) p = assign_new_domain0_page(mpaddr);
-               else
-#endif
-               {
-                       p = alloc_domheap_page(d);
-                       // zero out pages for security reasons
-                       if (p) memset(__va(page_to_maddr(p)),0,PAGE_SIZE);
-               }
-               if (unlikely(!p)) {
-                       printf("assign_new_domain_page: Can't alloc!!!! 
Aaaargh!\n");
-                       return(p);
-               }
-               if (unlikely(page_to_maddr(p) > __get_cpu_var(vhpt_paddr)
-                            && page_to_maddr(p) < __get_cpu_var(vhpt_pend))) {
-                       printf("assign_new_domain_page: reassigned vhpt page 
%lx!!\n",
-                               page_to_maddr(p));
-               }
-               set_pte(pte, pfn_pte(page_to_maddr(p) >> PAGE_SHIFT,
-                       __pgprot(__DIRTY_BITS | _PAGE_PL_2 | _PAGE_AR_RWX)));
-       }
-       else printk("assign_new_domain_page: mpaddr %lx already 
mapped!\n",mpaddr);
+       maddr = page_to_maddr (p);
+       if (unlikely(maddr > __get_cpu_var(vhpt_paddr)
+                    && maddr < __get_cpu_var(vhpt_pend))) {
+               /* FIXME: how can this happen ?
+                  vhpt is allocated by alloc_domheap_page.  */
+               printf("assign_new_domain_page: reassigned vhpt page %lx!!\n",
+                      maddr);
+       }
+       assign_domain_page (d, mpaddr, maddr);
        return p;
 }
 
diff -r 138c76d5e493 -r e45666b8b05f xen/include/asm-ia64/xenprocessor.h
--- a/xen/include/asm-ia64/xenprocessor.h       Fri Mar 24 10:38:41 2006 -0700
+++ b/xen/include/asm-ia64/xenprocessor.h       Fri Mar 24 10:41:48 2006 -0700
@@ -172,14 +172,6 @@ typedef union {
     };
 } tpr_t;
 
-#define IA64_ISR_CODE_MASK0     0xf
-#define IA64_UNIMPL_DADDR_FAULT     0x30
-#define IA64_UNIMPL_IADDR_TRAP      0x10
-#define IA64_RESERVED_REG_FAULT     0x30
-#define IA64_REG_NAT_CONSUMPTION_FAULT  0x10
-#define IA64_NAT_CONSUMPTION_FAULT  0x20
-#define IA64_PRIV_OP_FAULT      0x10
-
 /* indirect register type */
 enum {
     IA64_CPUID,     /*  cpuid */

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [IA64] assign_new_domain_page now calls assign_domain_page, Xen patchbot -unstable <=