Yes, I see that. 
Thanks a lot, Jan.
Henry
> Date: Mon, 14 Oct 2013 07:32:06 +0100
> From: JBeulich@xxxxxxxx
> To: zhangzhi2022@xxxxxxxxxxx
> CC: xen-devel@xxxxxxxxxxxxx
> Subject: RE: [Xen-devel] pagetable RO
> 
> >>> On 11.10.13 at 19:27, 张智<zhangzhi2022@xxxxxxxxxxx> wrote:
> > I've read the source code of do_mmu_update and could only find that macro: 
> > define_get_linear_pagetable(l2) checks whether its entry is read-only. 
> > However, this function does execute only when 
> > get_page_and_type_from_pagenr(mfn, PGT_l1_page_table, ...) returns an invalid 
> > value. Is this the point or somewhere else about checking whether the new 
> > PGT_l1_page_table as read-only ? I did not find the check points in the 
> > function: get_page_and_type_from_pagenr(mfn, PGT_l1_page_table, ...) as well 
> > as its sub-branch functions.
> 
> That's not how it works. A page is read-only if it's of one of the types
> that require it to be and has non-zero type reference count, or if it's
> of no particular type (i.e. its type reference count is zero). Any
> mapping with _PAGE_RW set would cause the page to have a non-
> zero type reference count and be of type PGT_writable, and hence
> it couldn't be transitioned to any of the other (read-only) types. The
> core function here is __get_page_type().
> 
> Jan