When building an arm64 kernel with a 16K page size, I tripped over a few compile time assertions in the hyperV driver that break the build when a PAGE_SIZE other than 4k is used.
Its unclear to me whether or not hyperv communicates with the hypervisor in 4K chunks, or in actual PAGE_SIZE chunks, Since the code defines appears that hyperV is tied to a 4K page size. For simplicity, change the constants to refer to 4096 rather than PAGE_SIZE, I believed it & replaced the hard-coded constants with subtractions from PAGE_SIZE to make the assertions pass on when using non-4K pages, and to allow the build to continue.and fail the device probe if the PAGE_SIZE != 4k