diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-10 16:56:56 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-10 16:56:56 -0500 |
| commit | bdccc4edeb03ad68c55053b0260bdaaac547bbd9 (patch) | |
| tree | c9fdce7c6bb13632f5a64925a1fb3fa306b7cfe1 /include/linux | |
| parent | 98368ab436538103a557fc1f15f54afd8aab6712 (diff) | |
| parent | 72978b2fe2f2cdf9f319c6c6dcdbe92b38de2be2 (diff) | |
Merge tag 'stable/for-linus-3.20-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip
Pull xen features and fixes from David Vrabel:
- Reworked handling for foreign (grant mapped) pages to simplify the
code, enable a number of additional use cases and fix a number of
long-standing bugs.
- Prefer the TSC over the Xen PV clock when dom0 (and the TSC is
stable).
- Assorted other cleanup and minor bug fixes.
* tag 'stable/for-linus-3.20-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip: (25 commits)
xen/manage: Fix USB interaction issues when resuming
xenbus: Add proper handling of XS_ERROR from Xenbus for transactions.
xen/gntdev: provide find_special_page VMA operation
xen/gntdev: mark userspace PTEs as special on x86 PV guests
xen-blkback: safely unmap grants in case they are still in use
xen/gntdev: safely unmap grants in case they are still in use
xen/gntdev: convert priv->lock to a mutex
xen/grant-table: add a mechanism to safely unmap pages that are in use
xen-netback: use foreign page information from the pages themselves
xen: mark grant mapped pages as foreign
xen/grant-table: add helpers for allocating pages
x86/xen: require ballooned pages for grant maps
xen: remove scratch frames for ballooned pages and m2p override
xen/grant-table: pre-populate kernel unmap ops for xen_gnttab_unmap_refs()
mm: add 'foreign' alias for the 'pinned' page flag
mm: provide a find_special_page vma operation
x86/xen: cleanup arch/x86/xen/mmu.c
x86/xen: add some __init annotations in arch/x86/xen/mmu.c
x86/xen: add some __init and static annotations in arch/x86/xen/setup.c
x86/xen: use correct types for addresses in arch/x86/xen/setup.c
...
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/mm.h | 8 | ||||
| -rw-r--r-- | include/linux/page-flags.h | 5 |
2 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h index dd5ea3016fc4..237b3ba29225 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -290,6 +290,14 @@ struct vm_operations_struct { | |||
| 290 | /* called by sys_remap_file_pages() to populate non-linear mapping */ | 290 | /* called by sys_remap_file_pages() to populate non-linear mapping */ |
| 291 | int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr, | 291 | int (*remap_pages)(struct vm_area_struct *vma, unsigned long addr, |
| 292 | unsigned long size, pgoff_t pgoff); | 292 | unsigned long size, pgoff_t pgoff); |
| 293 | |||
| 294 | /* | ||
| 295 | * Called by vm_normal_page() for special PTEs to find the | ||
| 296 | * page for @addr. This is useful if the default behavior | ||
| 297 | * (using pte_page()) would not find the correct page. | ||
| 298 | */ | ||
| 299 | struct page *(*find_special_page)(struct vm_area_struct *vma, | ||
| 300 | unsigned long addr); | ||
| 293 | }; | 301 | }; |
| 294 | 302 | ||
| 295 | struct mmu_gather; | 303 | struct mmu_gather; |
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index e1f5fcd79792..5ed7bdaf22d5 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
| @@ -121,8 +121,12 @@ enum pageflags { | |||
| 121 | PG_fscache = PG_private_2, /* page backed by cache */ | 121 | PG_fscache = PG_private_2, /* page backed by cache */ |
| 122 | 122 | ||
| 123 | /* XEN */ | 123 | /* XEN */ |
| 124 | /* Pinned in Xen as a read-only pagetable page. */ | ||
| 124 | PG_pinned = PG_owner_priv_1, | 125 | PG_pinned = PG_owner_priv_1, |
| 126 | /* Pinned as part of domain save (see xen_mm_pin_all()). */ | ||
| 125 | PG_savepinned = PG_dirty, | 127 | PG_savepinned = PG_dirty, |
| 128 | /* Has a grant mapping of another (foreign) domain's page. */ | ||
| 129 | PG_foreign = PG_owner_priv_1, | ||
| 126 | 130 | ||
| 127 | /* SLOB */ | 131 | /* SLOB */ |
| 128 | PG_slob_free = PG_private, | 132 | PG_slob_free = PG_private, |
| @@ -215,6 +219,7 @@ __PAGEFLAG(Slab, slab) | |||
| 215 | PAGEFLAG(Checked, checked) /* Used by some filesystems */ | 219 | PAGEFLAG(Checked, checked) /* Used by some filesystems */ |
| 216 | PAGEFLAG(Pinned, pinned) TESTSCFLAG(Pinned, pinned) /* Xen */ | 220 | PAGEFLAG(Pinned, pinned) TESTSCFLAG(Pinned, pinned) /* Xen */ |
| 217 | PAGEFLAG(SavePinned, savepinned); /* Xen */ | 221 | PAGEFLAG(SavePinned, savepinned); /* Xen */ |
| 222 | PAGEFLAG(Foreign, foreign); /* Xen */ | ||
| 218 | PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved) | 223 | PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved) |
| 219 | PAGEFLAG(SwapBacked, swapbacked) __CLEARPAGEFLAG(SwapBacked, swapbacked) | 224 | PAGEFLAG(SwapBacked, swapbacked) __CLEARPAGEFLAG(SwapBacked, swapbacked) |
| 220 | __SETPAGEFLAG(SwapBacked, swapbacked) | 225 | __SETPAGEFLAG(SwapBacked, swapbacked) |
