|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-devel
Re: [Xen-devel] [PATCH] vmx-copy_from_guest.patch
 
| 
To:  | 
xen-devel@xxxxxxxxxxxxxxxxxxx | 
 
| 
Subject:  | 
Re: [Xen-devel] [PATCH] vmx-copy_from_guest.patch | 
 
| 
From:  | 
Leendert van Doorn <leendert@xxxxxxxxxxxxxx> | 
 
| 
Date:  | 
Tue, 06 Sep 2005 06:22:50 -0400 | 
 
| 
Cc:  | 
"Sharma, Arun" <arun.sharma@xxxxxxxxx>, "Ling,	Xiaofeng" <xiaofeng.ling@xxxxxxxxx>,	Ian Pratt <Ian.Pratt@xxxxxxxxxxxx>, "Petersson,	Mats" <mats.petersson@xxxxxxx> | 
 
| 
Delivery-date:  | 
Tue, 06 Sep 2005 15:20:39 +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> | 
 
| 
Organization:  | 
IBM T.J. Watson Research Center | 
 
| 
Sender:  | 
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx | 
 
 
 
# seems current vmx_copy can not deal with copy over page boundary?
# so remove inst_copy_from_guest will cause problem.
Are you looking at the correct tree? Both xen-vt-testing and xen-unstable
have my newer vmx_copy that was introduced last Friday. It does handle
multiple pages.
int
vmx_copy(void *buf, unsigned long laddr, int size, int dir)
{
    unsigned long gpa, mfn;
    char *addr;
    int count;
    while (size > 0) {
        count = PAGE_SIZE - (laddr & ~PAGE_MASK);
        if (count > size)
            count = size;
        if (vmx_paging_enabled(current)) {
                gpa = gva_to_gpa(laddr);
                mfn = get_mfn_from_pfn(gpa >> PAGE_SHIFT);
        } else
                mfn = get_mfn_from_pfn(laddr >> PAGE_SHIFT);
        if (mfn == INVALID_MFN)
                return 0;
        addr = (char *)map_domain_page(mfn) + (laddr & ~PAGE_MASK);
        if (dir == VMX_COPY_IN)
            memcpy(buf, addr, count);
        else
            memcpy(addr, buf, count);
        unmap_domain_page(addr);
        laddr += count;
        buf += count;
        size -= count;
    }
    return 1;
}
        - Leendert
--
Leendert van Doorn                                    <leendert@xxxxxxxxxxxxxx>
IBM T.J. Watson Research Center                       (914) 784-7831
30 Saw Mill River Road, Hawthorne, NY 10532
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 |   
 
 | 
    | 
  
  
    |   | 
    |