aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/kvm_host.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/kvm_host.h')
-rw-r--r--include/linux/kvm_host.h24
1 files changed, 15 insertions, 9 deletions
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 07226f820e6c..d2b897ee3ac4 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -49,28 +49,34 @@
49#define KVM_MAX_MMIO_FRAGMENTS \ 49#define KVM_MAX_MMIO_FRAGMENTS \
50 (KVM_MMIO_SIZE / KVM_USER_MMIO_SIZE + KVM_EXTRA_MMIO_FRAGMENTS) 50 (KVM_MMIO_SIZE / KVM_USER_MMIO_SIZE + KVM_EXTRA_MMIO_FRAGMENTS)
51 51
52#define KVM_PFN_ERR_FAULT (-EFAULT) 52/*
53#define KVM_PFN_ERR_HWPOISON (-EHWPOISON) 53 * For the normal pfn, the highest 12 bits should be zero,
54#define KVM_PFN_ERR_BAD (-ENOENT) 54 * so we can mask these bits to indicate the error.
55 */
56#define KVM_PFN_ERR_MASK (0xfffULL << 52)
57
58#define KVM_PFN_ERR_FAULT (KVM_PFN_ERR_MASK)
59#define KVM_PFN_ERR_HWPOISON (KVM_PFN_ERR_MASK + 1)
60#define KVM_PFN_ERR_BAD (KVM_PFN_ERR_MASK + 2)
55 61
56static inline int is_error_pfn(pfn_t pfn) 62static inline bool is_error_pfn(pfn_t pfn)
57{ 63{
58 return IS_ERR_VALUE(pfn); 64 return !!(pfn & KVM_PFN_ERR_MASK);
59} 65}
60 66
61static inline int is_noslot_pfn(pfn_t pfn) 67static inline bool is_noslot_pfn(pfn_t pfn)
62{ 68{
63 return pfn == -ENOENT; 69 return pfn == KVM_PFN_ERR_BAD;
64} 70}
65 71
66static inline int is_invalid_pfn(pfn_t pfn) 72static inline bool is_invalid_pfn(pfn_t pfn)
67{ 73{
68 return !is_noslot_pfn(pfn) && is_error_pfn(pfn); 74 return !is_noslot_pfn(pfn) && is_error_pfn(pfn);
69} 75}
70 76
71#define KVM_ERR_PTR_BAD_PAGE (ERR_PTR(-ENOENT)) 77#define KVM_ERR_PTR_BAD_PAGE (ERR_PTR(-ENOENT))
72 78
73static inline int is_error_page(struct page *page) 79static inline bool is_error_page(struct page *page)
74{ 80{
75 return IS_ERR(page); 81 return IS_ERR(page);
76} 82}