void sh_remove_shadows(struct domain *d, mfn_t gmfn, int fast, int all);
/* Adjust shadows ready for a guest page to change its type. */
-void shadow_prepare_page_type_change(struct domain *d, struct page_info *page,
- unsigned long new_type);
+void shadow_prepare_page_type_change(struct domain *d,
+ const struct page_info *page);
/* Discard _all_ mappings from the domain's shadows. */
void shadow_blow_tables_per_domain(struct domain *d);
int fast, int all) {}
static inline void shadow_prepare_page_type_change(struct domain *d,
- struct page_info *page,
- unsigned long new_type) {}
+ const struct page_info *page) {}
static inline void shadow_blow_tables_per_domain(struct domain *d) {}
struct domain *d = page_get_owner(page);
if ( d && shadow_mode_enabled(d) )
- shadow_prepare_page_type_change(d, page, type);
+ shadow_prepare_page_type_change(d, page);
if ( (x & PGT_type_mask) != type )
{
paging_unlock(d);
}
-void shadow_prepare_page_type_change(struct domain *d, struct page_info *page,
- unsigned long new_type)
+void shadow_prepare_page_type_change(struct domain *d,
+ const struct page_info *page)
{
if ( !(page->count_info & PGC_page_table) )
return;
* pages are allowed to become writeable.
*/
if ( (page->shadow_flags & SHF_oos_may_write) &&
- new_type == PGT_writable_page )
+ (page->u.inuse.type_info & PGT_type_mask) == PGT_writable_page )
return;
#endif