[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re: [Xen-devel] SetPageForeign in netback


  • To: "Zang Hongyong" <zanghongyong@xxxxxxxxxx>
  • From: "Grzegorz Miłoś" <gm281@xxxxxxxxx>
  • Date: Wed, 18 Jun 2008 17:37:40 +0100
  • Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Wed, 18 Jun 2008 09:38:01 -0700
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references:x-google-sender-auth; b=DTuaHobLHGKIzNqxI6tx73wRLD9JzlLZoe+7bfvrwsBtgyWlr2iLvfvEnB6LgPlgCG UopZUlfm5iR50gq3PVuqPpvTB4D7W/6uB7ZrnT8swBQoOADdAdIyP/KyIVZJMdrz2KvE w6Ssu2QEzOLnXnKz67SDIMdK0f1bdHy+a5hWg=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

> Many thanks!
> And that is, when tx, after the data page is sent by native Nic driver in 
> dom0, the data page will be freed, then netif_page_release() called which 
> indicates netback to unmap the page offered by domU, and moves on its tx 
> response.
>
> Is that so?

Correct.

> If so, how about a bad NIC driver which doen't call free_page() after sending 
> data out of machine ?

Well, it could happen if there was a memory leak in the driver. This
would also be present in non-xenified linux. We are hoping for
bug-free device drivers.


> and Why mmap_pages is allocated by 
> alloc_empty_pages_and_pagevec(MAX_PENDING_REQS)?
> can  mmap_pages be allocated by alloc_vm_area() and vmalloc_to_page() ??

alloc_empty_pages_and_pagevec() balloons machine memory frames away
from Dom0, you are therefore left with pseudo-physical page that's not
backed by real memory. You want that, because you'll substitute DomU's
memory frame in it's place. I don't think alloc_vm_area does that. It
would only allocate virtually continuous range of memory.

Cheers
Gr(z)egor(z)

>
> Forgive my silly questions above please.
>
>
> ======= 2008-06-18 18:52:27 您在来信中写道:=======
>
>>> hi,
>>>  in netback init mmap_pages,
>>>                SetPageForeign(page, netif_page_release);
>>>  that is, page->index = netif_page_release
>>>  while netif_page_release is a function.
>>
>>netif_page_release is a function, and therefore:
>>page->index = netif_page_release
>>will store netif_page_release function pointer in 'index'
>>
>>>  so what's the meaning of SetPageForeign?
>>
>>Setting a page foreign means that the page is owned by another domain,
>>and that some care needs to be taken when freeing it.
>>
>>>  And when the function  netif_page_release() will be called?
>>
>>Whenever PageForeignDestructor is called (as it calls the destructor
>>function stored in the 'index' field).
>>PageForeignDestructor is called from:
>>__free_pages_ok
>>and
>>free_hot_cold_page
>>
>>Hope this helps.
>>
>>Cheers
>>Gr(z)egor(z)
>>
>>_______________________________________________
>>Xen-devel mailing list
>>Xen-devel@xxxxxxxxxxxxxxxxxxx
>>http://lists.xensource.com/xen-devel
>>
>>
>
> = = = = = = = = = = = = = = = = = = = =
> Zang Hongyong
> zanghongyong@xxxxxxxxxx
> 2008-06-18
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
>
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.