> From: [email protected]
> <[email protected]> On Behalf Of Michael Kelley
> Sent: Thursday, May 2, 2019 3:24 PM
> To: Juliana Rodrigueiro <[email protected]>;
> [email protected]
> Cc: [email protected]
> Subject: RE: Hyperv netvsc - regression for 32-PAE kernel
>
> From: Juliana Rodrigueiro <[email protected]> Sent: Thursday,
> May 2, 2019 9:14 AM
> >
> > So I got to the following commit:
> >
> > commit 6ba34171bcbd10321c6cf554e0c1144d170f9d1a
> > Author: Michael Kelley <[email protected]>
> > Date: Thu Aug 2 03:08:24 2018 +0000
> >
> > Drivers: hv: vmbus: Remove use of slow_virt_to_phys()
> >
> > slow_virt_to_phys() is only implemented for arch/x86.
> > Remove its use in arch independent Hyper-V drivers, and
> > replace with test for vmalloc() address followed by
> > appropriate v-to-p function. This follows the typical
> > pattern of other drivers and avoids the need to implement
> > slow_virt_to_phys() for Hyper-V on ARM64.
> >
> > Signed-off-by: Michael Kelley <[email protected]>
> > Signed-off-by: K. Y. Srinivasan <[email protected]>
> > Signed-off-by: Greg Kroah-Hartman <[email protected]>
> >
> > The catch is that slow_virt_to_phys has a special trick implemented in order
> > to keep specifically 32-PAE kernel working, it is explained in a comment
> > inside the function.
> >
> > Reverting this commit makes the kernel 4.19 32-bit PAE work again. However
> I
> > believe a better solution might exist.
> >
> > Comments are very much appreciated.
> >
>
> Julie -- thanks for tracking down the cause of the issue. I'll try to
> look at this tomorrow and propose a solution.
>
> Michael Kelley
Hi Juliana,
Can you please try the below one-line patch?
It should fix the issue.
Thanks,
-- Dexuan
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
index 23381c4..aaaee5f 100644
--- a/drivers/hv/channel.c
+++ b/drivers/hv/channel.c
@@ -38,7 +38,7 @@
static unsigned long virt_to_hvpfn(void *addr)
{
- unsigned long paddr;
+ phys_addr_t paddr;
if (is_vmalloc_addr(addr))
paddr = page_to_phys(vmalloc_to_page(addr)) +