Message ID | 20210430075557.893819-1-sandipan@linux.ibm.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | powerpc/powernv/memtrace: Fix dcache flushing | expand |
Related | show |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch powerpc/merge (e3a9b9d6a03f5fbf99b540e863b001d46ba1735c) |
snowpatch_ozlabs/build-ppc64le | success | Build succeeded |
snowpatch_ozlabs/build-ppc64be | success | Build succeeded |
snowpatch_ozlabs/build-ppc64e | success | Build succeeded |
snowpatch_ozlabs/build-pmac32 | success | Build succeeded |
snowpatch_ozlabs/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 10 lines checked |
snowpatch_ozlabs/needsstable | warning | Please consider tagging this patch for stable! |
Sandipan Das <sandipan@linux.ibm.com> writes: > Trace memory is cleared and the corresponding dcache lines > are flushed after allocation. However, this should not be > done using the PFN. This adds the missing __va() conversion. Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> > > Fixes: 2ac02e5ecec0 ("powerpc/mm: Remove dcache flush from memory remove.") > Signed-off-by: Sandipan Das <sandipan@linux.ibm.com> > --- > arch/powerpc/platforms/powernv/memtrace.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/platforms/powernv/memtrace.c b/arch/powerpc/platforms/powernv/memtrace.c > index 71c1262589fe..a31f13814f2e 100644 > --- a/arch/powerpc/platforms/powernv/memtrace.c > +++ b/arch/powerpc/platforms/powernv/memtrace.c > @@ -104,8 +104,8 @@ static void memtrace_clear_range(unsigned long start_pfn, > * Before we go ahead and use this range as cache inhibited range > * flush the cache. > */ > - flush_dcache_range_chunked(PFN_PHYS(start_pfn), > - PFN_PHYS(start_pfn + nr_pages), > + flush_dcache_range_chunked((unsigned long)__va(PFN_PHYS(start_pfn)), > + (unsigned long)__va(PFN_PHYS(start_pfn + nr_pages)), > FLUSH_CHUNK_SIZE); > } > > -- > 2.25.1
Le 30/04/2021 à 09:55, Sandipan Das a écrit : > Trace memory is cleared and the corresponding dcache lines > are flushed after allocation. However, this should not be > done using the PFN. This adds the missing __va() conversion. > > Fixes: 2ac02e5ecec0 ("powerpc/mm: Remove dcache flush from memory remove.") > Signed-off-by: Sandipan Das <sandipan@linux.ibm.com> > --- > arch/powerpc/platforms/powernv/memtrace.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/platforms/powernv/memtrace.c b/arch/powerpc/platforms/powernv/memtrace.c > index 71c1262589fe..a31f13814f2e 100644 > --- a/arch/powerpc/platforms/powernv/memtrace.c > +++ b/arch/powerpc/platforms/powernv/memtrace.c > @@ -104,8 +104,8 @@ static void memtrace_clear_range(unsigned long start_pfn, > * Before we go ahead and use this range as cache inhibited range > * flush the cache. > */ > - flush_dcache_range_chunked(PFN_PHYS(start_pfn), > - PFN_PHYS(start_pfn + nr_pages), > + flush_dcache_range_chunked((unsigned long)__va(PFN_PHYS(start_pfn)), > + (unsigned long)__va(PFN_PHYS(start_pfn + nr_pages)), Can you use pfn_to_virt() instead ? > FLUSH_CHUNK_SIZE); > } > >
On 30/04/21 2:12 pm, Christophe Leroy wrote: > > > Le 30/04/2021 à 09:55, Sandipan Das a écrit : >> Trace memory is cleared and the corresponding dcache lines >> are flushed after allocation. However, this should not be >> done using the PFN. This adds the missing __va() conversion. >> >> Fixes: 2ac02e5ecec0 ("powerpc/mm: Remove dcache flush from memory remove.") >> Signed-off-by: Sandipan Das <sandipan@linux.ibm.com> >> --- >> arch/powerpc/platforms/powernv/memtrace.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/arch/powerpc/platforms/powernv/memtrace.c b/arch/powerpc/platforms/powernv/memtrace.c >> index 71c1262589fe..a31f13814f2e 100644 >> --- a/arch/powerpc/platforms/powernv/memtrace.c >> +++ b/arch/powerpc/platforms/powernv/memtrace.c >> @@ -104,8 +104,8 @@ static void memtrace_clear_range(unsigned long start_pfn, >> * Before we go ahead and use this range as cache inhibited range >> * flush the cache. >> */ >> - flush_dcache_range_chunked(PFN_PHYS(start_pfn), >> - PFN_PHYS(start_pfn + nr_pages), >> + flush_dcache_range_chunked((unsigned long)__va(PFN_PHYS(start_pfn)), >> + (unsigned long)__va(PFN_PHYS(start_pfn + nr_pages)), > > Can you use pfn_to_virt() instead ? > >> FLUSH_CHUNK_SIZE); >> } >> Sure, that looks cleaner. Thanks for the suggestion. - Sandipan
diff --git a/arch/powerpc/platforms/powernv/memtrace.c b/arch/powerpc/platforms/powernv/memtrace.c index 71c1262589fe..a31f13814f2e 100644 --- a/arch/powerpc/platforms/powernv/memtrace.c +++ b/arch/powerpc/platforms/powernv/memtrace.c @@ -104,8 +104,8 @@ static void memtrace_clear_range(unsigned long start_pfn, * Before we go ahead and use this range as cache inhibited range * flush the cache. */ - flush_dcache_range_chunked(PFN_PHYS(start_pfn), - PFN_PHYS(start_pfn + nr_pages), + flush_dcache_range_chunked((unsigned long)__va(PFN_PHYS(start_pfn)), + (unsigned long)__va(PFN_PHYS(start_pfn + nr_pages)), FLUSH_CHUNK_SIZE); }
Trace memory is cleared and the corresponding dcache lines are flushed after allocation. However, this should not be done using the PFN. This adds the missing __va() conversion. Fixes: 2ac02e5ecec0 ("powerpc/mm: Remove dcache flush from memory remove.") Signed-off-by: Sandipan Das <sandipan@linux.ibm.com> --- arch/powerpc/platforms/powernv/memtrace.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)