hv: hyperv.h: Introduce some hvpfn helper functions
authorBoqun Feng <boqun.feng@gmail.com>
Wed, 16 Sep 2020 03:48:12 +0000 (11:48 +0800)
committerWei Liu <wei.liu@kernel.org>
Mon, 28 Sep 2020 08:55:13 +0000 (08:55 +0000)
When a guest communicate with the hypervisor, it must use HV_HYP_PAGE to
calculate PFN, so introduce a few hvpfn helper functions as the
counterpart of the page helper functions. This is the preparation for
supporting guest whose PAGE_SIZE is not 4k.

Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Reviewed-by: Michael Kelley <mikelley@microsoft.com>
Link: https://lore.kernel.org/r/20200916034817.30282-7-boqun.feng@gmail.com
Signed-off-by: Wei Liu <wei.liu@kernel.org>
include/linux/hyperv.h

index 83456dc181a8fadf38df7a32fdd40a01db6ee3f7..1ce131f29f3b49399a5c49f94d12cb52e657e67c 100644 (file)
@@ -1691,4 +1691,9 @@ static inline unsigned long virt_to_hvpfn(void *addr)
        return  paddr >> HV_HYP_PAGE_SHIFT;
 }
 
+#define NR_HV_HYP_PAGES_IN_PAGE        (PAGE_SIZE / HV_HYP_PAGE_SIZE)
+#define offset_in_hvpage(ptr)  ((unsigned long)(ptr) & ~HV_HYP_PAGE_MASK)
+#define HVPFN_UP(x)    (((x) + HV_HYP_PAGE_SIZE-1) >> HV_HYP_PAGE_SHIFT)
+#define page_to_hvpfn(page)    (page_to_pfn(page) * NR_HV_HYP_PAGES_IN_PAGE)
+
 #endif /* _HYPERV_H */