Public bug reported:

== SRU Justification Focal/Groovy ==

The current max_pfn equals to zero. In this case, I found it caused users
cannot get some page information through /proc such as kpagecount in v5.6
kernel because of new sanity checks. The following message is displayed by
stress-ng test suite with the command "stress-ng --verbose --physpage 1 -t
1" on HiFive unleashed board.

 # stress-ng --verbose --physpage 1 -t 1
 stress-ng: debug: [109] 4 processors online, 4 processors configured
 stress-ng: info: [109] dispatching hogs: 1 physpage
 stress-ng: debug: [109] cache allocate: reducing cache level from L3 (too 
high) to L0
 stress-ng: debug: [109] get_cpu_cache: invalid cache_level: 0
 stress-ng: info: [109] cache allocate: using built-in defaults as no suitable 
cache found
 stress-ng: debug: [109] cache allocate: default cache size: 2048K
 stress-ng: debug: [109] starting stressors
 stress-ng: debug: [109] 1 stressor spawned
 stress-ng: debug: [110] stress-ng-physpage: started [110] (instance 0)
 stress-ng: error: [110] stress-ng-physpage: cannot read page count for address 
0x3fd34de000 in /proc/kpagecount, errno=0 (Success)
 stress-ng: error: [110] stress-ng-physpage: cannot read page count for address 
0x3fd32db078 in /proc/kpagecount, errno=0 (Success)
 ...
 stress-ng: error: [110] stress-ng-physpage: cannot read page count for address 
0x3fd32db078 in /proc/kpagecount, errno=0 (Success)
 stress-ng: debug: [110] stress-ng-physpage: exited [110] (instance 0)
 stress-ng: debug: [109] process [110] terminated
 stress-ng: info: [109] successful run completed in 1.00s
 #

== Fix ==

Upstream commit in linux-next:

commit c749bb2d554825e007cbc43b791f54e124dadfce
Author: Vincent Chen <vincent.c...@sifive.com>
Date:   Mon Apr 27 14:59:24 2020 +0800

    riscv: set max_pfn to the PFN of the last page

== Test Case ==

Without the patch, running stress-ng --verbose --physpage 1 -t
1 on HiFive unleashed board will trip the bug.  With the patch, the test passes 
as follows:

 # stress-ng --verbose --physpage 1 -t 1
 stress-ng: debug: [104] 4 processors online, 4 processors configured 
stress-ng: info: [104] dispatching hogs: 1 physpage
 stress-ng: info: [104] cache allocate: using defaults, can't determine cache 
details from sysfs
 stress-ng: debug: [104] cache allocate: default cache size: 2048K
 stress-ng: debug: [104] starting stressors
 stress-ng: debug: [104] 1 stressor spawned
 stress-ng: debug: [105] stress-ng-physpage: started [105] (instance 0) 
stress-ng: debug: [105] stress-ng-physpage: exited [105] (instance 0) 
stress-ng: debug: [104] process [105] terminated
 stress-ng: info: [104] successful run completed in 1.01s
 

== Regression Potential ==

Small, this correctly fixes the max_pfn and max_low_pfn to the correct
end of DRAM location.  The fix now can be shown to set these
appropriately because stress-ng no longer triggers this corner case.

** Affects: linux (Ubuntu)
     Importance: Medium
     Assignee: Colin Ian King (colin-king)
         Status: In Progress

** Changed in: linux (Ubuntu)
   Importance: Undecided => Medium

** Changed in: linux (Ubuntu)
     Assignee: (unassigned) => Colin Ian King (colin-king)

** Changed in: linux (Ubuntu)
       Status: New => In Progress

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1876885

Title:
  linux: riscv: set max_pfn to the PFN of the last page

Status in linux package in Ubuntu:
  In Progress

Bug description:
  == SRU Justification Focal/Groovy ==

  The current max_pfn equals to zero. In this case, I found it caused users
  cannot get some page information through /proc such as kpagecount in v5.6
  kernel because of new sanity checks. The following message is displayed by
  stress-ng test suite with the command "stress-ng --verbose --physpage 1 -t
  1" on HiFive unleashed board.

   # stress-ng --verbose --physpage 1 -t 1
   stress-ng: debug: [109] 4 processors online, 4 processors configured
   stress-ng: info: [109] dispatching hogs: 1 physpage
   stress-ng: debug: [109] cache allocate: reducing cache level from L3 (too 
high) to L0
   stress-ng: debug: [109] get_cpu_cache: invalid cache_level: 0
   stress-ng: info: [109] cache allocate: using built-in defaults as no 
suitable cache found
   stress-ng: debug: [109] cache allocate: default cache size: 2048K
   stress-ng: debug: [109] starting stressors
   stress-ng: debug: [109] 1 stressor spawned
   stress-ng: debug: [110] stress-ng-physpage: started [110] (instance 0)
   stress-ng: error: [110] stress-ng-physpage: cannot read page count for 
address 0x3fd34de000 in /proc/kpagecount, errno=0 (Success)
   stress-ng: error: [110] stress-ng-physpage: cannot read page count for 
address 0x3fd32db078 in /proc/kpagecount, errno=0 (Success)
   ...
   stress-ng: error: [110] stress-ng-physpage: cannot read page count for 
address 0x3fd32db078 in /proc/kpagecount, errno=0 (Success)
   stress-ng: debug: [110] stress-ng-physpage: exited [110] (instance 0)
   stress-ng: debug: [109] process [110] terminated
   stress-ng: info: [109] successful run completed in 1.00s
   #

  == Fix ==

  Upstream commit in linux-next:

  commit c749bb2d554825e007cbc43b791f54e124dadfce
  Author: Vincent Chen <vincent.c...@sifive.com>
  Date:   Mon Apr 27 14:59:24 2020 +0800

      riscv: set max_pfn to the PFN of the last page

  == Test Case ==

  Without the patch, running stress-ng --verbose --physpage 1 -t
  1 on HiFive unleashed board will trip the bug.  With the patch, the test 
passes as follows:

   # stress-ng --verbose --physpage 1 -t 1
   stress-ng: debug: [104] 4 processors online, 4 processors configured 
stress-ng: info: [104] dispatching hogs: 1 physpage
   stress-ng: info: [104] cache allocate: using defaults, can't determine cache 
details from sysfs
   stress-ng: debug: [104] cache allocate: default cache size: 2048K
   stress-ng: debug: [104] starting stressors
   stress-ng: debug: [104] 1 stressor spawned
   stress-ng: debug: [105] stress-ng-physpage: started [105] (instance 0) 
stress-ng: debug: [105] stress-ng-physpage: exited [105] (instance 0) 
stress-ng: debug: [104] process [105] terminated
   stress-ng: info: [104] successful run completed in 1.01s
   

  == Regression Potential ==

  Small, this correctly fixes the max_pfn and max_low_pfn to the correct
  end of DRAM location.  The fix now can be shown to set these
  appropriately because stress-ng no longer triggers this corner case.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1876885/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to