ia64/xen-unstable

view xen/include/asm-x86/grant_table.h @ 15812:86a154e1ef5d

[HVM] Shadow: don't shadow the p2m table.
For HVM vcpus with paging disabled, we used to shadow the p2m table,
and skip the p2m lookup to go from gfn to mfn. Instead, we now
provide a simple pagetable that gives a one-to-one mapping of 4GB, and
shadow that, making the translations from gfn to mfn via the p2m.
This removes the paging-disabled special-case code from the shadow
fault handler, and allows us to expand the p2m interface, since all HVM
translations now go through the same p2m lookups.
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
author Tim Deegan <Tim.Deegan@xensource.com>
date Fri Aug 31 11:06:22 2007 +0100 (2007-08-31)
parents 3d5f39c610ad
children 2e5d922b7ee3
line source
1 /******************************************************************************
2 * include/asm-x86/grant_table.h
3 *
4 * Copyright (c) 2004-2005 K A Fraser
5 */
7 #ifndef __ASM_GRANT_TABLE_H__
8 #define __ASM_GRANT_TABLE_H__
10 #define INITIAL_NR_GRANT_FRAMES 4
12 /*
13 * Caller must own caller's BIGLOCK, is responsible for flushing the TLB, and
14 * must hold a reference to the page.
15 */
16 int create_grant_host_mapping(
17 uint64_t addr, unsigned long frame, unsigned int flags);
18 int replace_grant_host_mapping(
19 uint64_t addr, unsigned long frame, uint64_t new_addr, unsigned int flags);
21 #define gnttab_create_shared_page(d, t, i) \
22 do { \
23 share_xen_page_with_guest( \
24 virt_to_page((char *)(t)->shared[i]), \
25 (d), XENSHARE_writable); \
26 } while ( 0 )
28 #define gnttab_shared_mfn(d, t, i) \
29 ((virt_to_maddr((t)->shared[i]) >> PAGE_SHIFT))
31 #define gnttab_shared_gmfn(d, t, i) \
32 (mfn_to_gmfn(d, gnttab_shared_mfn(d, t, i)))
34 #define gnttab_mark_dirty(d, f) paging_mark_dirty((d), (f))
36 static inline void gnttab_clear_flag(unsigned long nr, uint16_t *addr)
37 {
38 clear_bit(nr, addr);
39 }
41 #define gnttab_release_put_page(page) \
42 do { \
43 /* Done implicitly when page tables are destroyed. */ \
44 } while (0)
46 #define gnttab_release_put_page_and_type(page) \
47 do { \
48 /* Done implicitly when page tables are destroyed. */ \
49 } while (0)
51 static inline int replace_grant_supported(void)
52 {
53 return 1;
54 }
56 #endif /* __ASM_GRANT_TABLE_H__ */