diff mbox

parisc: Eliminate sg_virt_addr() and private scatterlist.h

Message ID 1426873079-32288-1-git-send-email-matthew.r.wilcox@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Helge Deller
Headers show

Commit Message

Wilcox, Matthew R March 20, 2015, 5:37 p.m. UTC
From: Matthew Wilcox <willy@linux.intel.com>

The only reason to keep parisc's private asm/scatterlist.h was that it
had the macro sg_virt_addr().  Convert all callers to use something else
(sometimes just sg->offset was enough, others should use sg_virt()), and
we can just use the asm-generic scatterlist.h instead.

Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
---

I haven't even compile-tested these changes ... I do have some PA-RISC
equipment, but it hasn't been turned on in seven years.

 arch/parisc/include/asm/Kbuild        |  1 +
 arch/parisc/include/asm/cacheflush.h  |  2 +-
 arch/parisc/include/asm/scatterlist.h | 10 ----------
 arch/parisc/kernel/pci-dma.c          |  8 ++++----
 drivers/parisc/ccio-dma.c             |  6 +++---
 drivers/parisc/iommu-helpers.h        | 30 ++++++++++++++++--------------
 drivers/parisc/sba_iommu.c            |  7 +++----
 7 files changed, 28 insertions(+), 36 deletions(-)
 delete mode 100644 arch/parisc/include/asm/scatterlist.h

Comments

John David Anglin March 21, 2015, 3:04 p.m. UTC | #1
On 2015-03-20, at 1:37 PM, Matthew Wilcox wrote:

> From: Matthew Wilcox <willy@linux.intel.com>
> 
> The only reason to keep parisc's private asm/scatterlist.h was that it
> had the macro sg_virt_addr().  Convert all callers to use something else
> (sometimes just sg->offset was enough, others should use sg_virt()), and
> we can just use the asm-generic scatterlist.h instead.
> 
> Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
> ---
> 
> I haven't even compile-tested these changes ... I do have some PA-RISC
> equipment, but it hasn't been turned on in seven years.

Tested-by: dave.anglin@bell.net

--
John David Anglin	dave.anglin@bell.net



--
To unsubscribe from this list: send the line "unsubscribe linux-parisc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
John David Anglin March 21, 2015, 10:38 p.m. UTC | #2
On 2015-03-21, at 11:04 AM, John David Anglin wrote:

> On 2015-03-20, at 1:37 PM, Matthew Wilcox wrote:
> 
>> From: Matthew Wilcox <willy@linux.intel.com>
>> 
>> The only reason to keep parisc's private asm/scatterlist.h was that it
>> had the macro sg_virt_addr().  Convert all callers to use something else
>> (sometimes just sg->offset was enough, others should use sg_virt()), and
>> we can just use the asm-generic scatterlist.h instead.
>> 
>> Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
>> ---
>> 
>> I haven't even compile-tested these changes ... I do have some PA-RISC
>> equipment, but it hasn't been turned on in seven years.
> 
> Tested-by: dave.anglin@bell.net

Possibly when I sent the above, it was a little early to say the change was "tested".
See attached.  Console log is somewhat truncated.

Dave
--
John David Anglin	dave.anglin@bell.net
[10457]  1000 10457     1235      314      19       0      352             0 make
[11456]  1000 11456     1229      298      24       0      102             0 bash
[11465]  1000 11465     1241      290      11       0      114             0 bash
[11483]  1000 11483     2830      314      22       0     1914             0 make
[ 1790]  1000  1790     1218      282      24       0       83             0 bash
[ 1791]  1000  1791     2805      314      22       0     1897             0 make
[ 1859]  1000  1859     1203      282      24       0       68             0 bash
[ 1860]  1000  1860     1208      306      11       0       73             0 bash
[ 1870]  1000  1870    31806      408      51       0     7240             0 expect
[16044]   105 16044     1806      160      32       0      121             0 pickup
[ 1530]  1000  1530      837      282       8       0       54             0 xgcc
[ 1537]  1000  1537      764       16       8       0       36             0 collect2
[ 1538]  1000  1538     1239      314      10       0      444             0 ld.bfd.real
[ 1540]  1000  1540      803      298       8       0       39             0 lto-wrapper
[ 1543]  1000  1543      838      282       8       0       47             0 xgcc
Out of memory: Kill process 2705 (sanlock) score 2 or sacrifice child
Killed process 2705 (sanlock) total-vm:44176kB, anon-rss:37368kB, file-rss:2484kB
kthreadd invoked oom-killer: gfp_mask=0x2000d0, order=2, oom_score_adj=0
CPU: 2 PID: 2 Comm: kthreadd Not tainted 4.0.0-rc4+ #1
Backtrace:
 [<00000000401588b8>] show_stack+0x20/0x38
 [<000000004037e804>] dump_stack+0x9c/0x110
 [<00000000402142b4>] dump_header.isra.12+0xb4/0x218
 [<0000000040214e44>] oom_kill_process+0x3f4/0x6d8
 [<00000000402153cc>] __out_of_memory+0x2a4/0x488
 [<0000000040215980>] out_of_memory+0x98/0xe8
 [<000000004021b55c>] __alloc_pages_nodemask+0x75c/0x7f0
 [<000000004021b8d4>] alloc_kmem_pages_node+0x5c/0x70
 [<000000004017dd34>] copy_process.part.62+0x184/0x1c18
 [<0000000040144020>] end_fault_vector+0x20/0x28
 [<00000000402136d8>] mempool_alloc_slab+0x28/0x40
 [<0000000040213974>] mempool_alloc+0xa4/0x208
 [<00000000142d47b0>] scsi_sg_alloc+0x50/0x150 [scsi_mod]
 [<0000000040394178>] __sg_alloc_table+0xb0/0x1e0

Mem-info:
Normal per-cpu:
CPU    0: hi:  186, btch:  31 usd:  25
CPU    1: hi:  186, btch:  31 usd: 127
CPU    2: hi:  186, btch:  31 usd:   0
CPU    3: hi:  186, btch:  31 usd:  13
Normal per-cpu:
CPU    0: hi:  186, btch:  31 usd:   0
CPU    1: hi:  186, btch:  31 usd:   0
CPU    2: hi:  186, btch:  31 usd:   0
CPU    3: hi:  186, btch:  31 usd:   0
Normal per-cpu:
CPU    0: hi:  186, btch:  31 usd:   0
CPU    1: hi:  186, btch:  31 usd:   0
CPU    2: hi:  186, btch:  31 usd:   0
CPU    3: hi:  186, btch:  31 usd:   0
active_anon:0 inactive_anon:8 isolated_anon:0
 active_file:56 inactive_file:60 isolated_file:0
 unevictable:10016 dirty:0 writeback:0 unstable:0
 free:77039 slab_reclaimable:171489 slab_unreclaimable:21760
 mapped:729 shmem:0 pagetables:1431 bounce:0
 free_cma:0
Normal free:47364kB min:1384kB low:1728kB high:2076kB active_anon:0kB inactive_anon:0kB active_file:224kB inactive_file:240kB unevictable:40064kB isolated(anon):0kB isolated(file):0kB present:1048576kB managed:995888kB mlocked:40064kB dirty:0kB writeback:0kB mapped:2916kB shmem:0kB slab_reclaimable:52584kB slab_unreclaimable:19116kB kernel_stack:2672kB pagetables:5704kB unstable:0kB bounce:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0
Normal free:132376kB min:5760kB low:7200kB high:8640kB active_anon:0kB inactive_anon:52kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:4192256kB managed:4134812kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:435152kB slab_unreclaimable:46872kB kernel_stack:32kB pagetables:20kB unstable:0kB bounce:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:416 all_unreclaimable? yes
lowmem_reserve[]: 0 0
Normal free:128416kB min:4324kB low:5404kB high:6484kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:3145728kB managed:3102620kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:198220kB slab_unreclaimable:21052kB kernel_stack:384kB pagetables:0kB unstable:0kB bounce:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
lowmem_reserve[]: 0 0
Normal: 11079*4kB (UEM) 467*8kB (UEM) 9*16kB (UMR) 1*32kB (R) 1*64kB (R) 1*128kB (R) 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 48420kB
Normal: 32226*4kB (UEM) 434*8kB (UM) 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 132376kB
Normal: 27604*4kB (UEM) 2116*8kB (UEM) 67*16kB (M) 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 128416kB
725 total pagecache pages
34 pages in swap cache
Swap cache stats: add 91383, delete 91349, find 928197/954032
Free swap  = 7732896kB
Total swap = 7815616kB
2096640 pages of RAM
10777 reserved pages
Zone list for zone 0 on node 0: [0/Normal] [0/Normal] [0/Normal] 
Zone list for zone 1 on node 0: [0/Normal] [0/Normal] [0/Normal] 
Zone list for zone 0 on node 1: [0/Normal] [0/Normal] [0/Normal] 
Zone list for zone 1 on node 1: [0/Normal] [0/Normal] [0/Normal] 
Zone list for zone 0 on node 2: [0/Normal] [0/Normal] [0/Normal] 
Zone list for zone 1 on node 2: [0/Normal] [0/Normal] [0/Normal] 
[ pid ]   uid  tgid total_vm      rss nr_ptes nr_pmds swapents oom_score_adj name
[ 1114]     0  1114     2700      419      36       0      207         -1000 udevd
[ 2271]     0  2271     1040      393      33       0       92             0 rpcbind
[ 2315]   102  2315     1082      399      32       0      133             0 rpc.statd
[ 2348]     0  2348      698      244      16       0       48             0 rpc.idmapd
[ 2586]     0  2586      499      346       6       0       38             0 minissdpd
[ 2607]     0  2607      855      235      15       0       43             0 uuidd
[ 2630]     0  2630      751      384      22       0       75             0 cgmanager
[ 2637]     0  2637     7971      148      34       0      205             0 rsyslogd
[ 2725]     0  2725      750      345      22       0       63             0 cgproxy
[ 2754]     0  2754      621      346      13       0       46             0 atd
[ 2815]     0  2815     1043      346      13       0       52             0 irqbalance
[ 2830]     0  2830    20108      187      23       0      126             0 nscd
[ 2841]     0  2841    24952      173      58       0     2013             0 lwresd
[ 2872]     0  2872      611      354      11       0       29             0 inetd
[ 2916]     0  2916     2519      371      66       0      216             0 cupsd
[ 2934]   104  2934     1239      361      32       0      113             0 dbus-daemon
[ 3006]   120  3006    47532      433      82       0      325          -900 postgres
[ 3009]   120  3009    47532      194      55       0      336             0 postgres
[ 3011]   120  3011    47532      213      56       0      337             0 postgres
[ 3012]   120  3012    47532      326      54       0      348             0 postgres
[ 3013]   120  3013    47606      391      59       0      381             0 postgres
[ 3015]   120  3015    11562      391      52       0      336             0 postgres
[ 3042]   106  3042     1499      399      30       0      116             0 ntpd
[ 3130]   118  3130      883      336      27       0       75             0 avahi-daemon
[ 3138]     0  3138      733      345      23       0       53             0 cron
[ 3139]   118  3139      851      219      22       0       61             0 avahi-daemon
[ 3165]     0  3165     1375      357      19       0       93             0 ofonod
[ 3240]     0  3240     1851      322      34       0      152         -1000 sshd
[ 3429]     0  3429     1853      167      32       0      122             0 master
[ 3436]   105  3436     1817      148      31       0      118             0 qmgr
[ 3455]     0  3455      569      346      14       0       34             0 getty
[ 3464]     0  3464      851      400      27       0       59             0 systemd-logind
[ 3873]  1000  3873      521       96       6       0       26             0 build
[10439]  1000 10439     1231      314      19       0      336             0 make
[10445]  1000 10445     1208      298      24       0       73             0 bash
[10457]  1000 10457     1235      314      19       0      352             0 make
[11456]  1000 11456     1229      298      24       0      102             0 bash
[11465]  1000 11465     1241      290      11       0      114             0 bash
[11483]  1000 11483     2830      314      22       0     1914             0 make
[ 1790]  1000  1790     1218      282      24       0       83             0 bash
[ 1791]  1000  1791     2805      314      22       0     1897             0 make
[ 1859]  1000  1859     1203      282      24       0       68             0 bash
[ 1860]  1000  1860     1208      306      11       0       73             0 bash
[ 1870]  1000  1870    31806      408      51       0     7240             0 expect
[16044]   105 16044     1806      160      32       0      121             0 pickup
[ 1530]  1000  1530      837      282       8       0       54             0 xgcc
[ 1537]  1000  1537      764       16       8       0       36             0 collect2
[ 1538]  1000  1538     1239      314      10       0      444             0 ld.bfd.real
[ 1540]  1000  1540      803      298       8       0       39             0 lto-wrapper
[ 1543]  1000  1543      838      282       8       0       47             0 xgcc
[ 1544]  1000  1544      838      247       6       0       47             0 xgcc
Out of memory: Kill process 1870 (expect) score 1 or sacrifice child
Killed process 1530 (xgcc) total-vm:3348kB, anon-rss:0kB, file-rss:1128kB
INFO: task kswapd1:285 blocked for more than 120 seconds.
      Not tainted 4.0.0-rc4+ #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kswapd1         D 00000000401440c0     0   285      2 0x00000000
Backtrace:
 [<000000004014e4e8>] __schedule+0x248/0x5d0
 [<000000004014e8b8>] schedule+0x48/0xc8
 [<000000001d083f40>] _xfs_log_force_lsn+0x230/0x440 [xfs]
 [<000000001d08417c>] xfs_log_force_lsn+0x2c/0x90 [xfs]
 [<000000001d068614>] __xfs_iunpin_wait+0xb4/0x1f0 [xfs]
 [<000000001d06d78c>] xfs_iunpin_wait+0x2c/0x190 [xfs]
 [<000000001d05d7fc>] xfs_reclaim_inode+0x9c/0x550 [xfs]
 [<000000001d05de68>] xfs_reclaim_inodes_ag+0x1b8/0x520 [xfs]
 [<000000001d05ee80>] xfs_reclaim_inodes_nr+0x60/0xb0 [xfs]
 [<000000001d076004>] xfs_fs_free_cached_objects+0x24/0x58 [xfs]
 [<000000004026a79c>] super_cache_scan+0x2fc/0x308
 [<0000000040225f54>] shrink_slab.part.48.constprop.57+0x31c/0x3c8
 [<000000004022927c>] shrink_zone+0xe4/0xe8
 [<0000000040229cf4>] kswapd+0x614/0xae0
 [<00000000401a4824>] kthread+0x144/0x178
 [<0000000040144020>] end_fault_vector+0x20/0x28

INFO: task kswapd2:286 blocked for more than 120 seconds.
      Not tainted 4.0.0-rc4+ #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kswapd2         D 00000000401440c0     0   286      2 0x00000000
Backtrace:
 [<000000004014e4e8>] __schedule+0x248/0x5d0
 [<000000004014e8b8>] schedule+0x48/0xc8
 [<000000004014ed58>] schedule_preempt_disabled+0x20/0x38
 [<0000000040151b70>] __mutex_lock_slowpath+0x180/0x3f0
 [<0000000040151e04>] mutex_lock+0x24/0x48
 [<000000001d05df60>] xfs_reclaim_inodes_ag+0x2b0/0x520 [xfs]
 [<000000001d05ee80>] xfs_reclaim_inodes_nr+0x60/0xb0 [xfs]
 [<000000001d076004>] xfs_fs_free_cached_objects+0x24/0x58 [xfs]
 [<000000004026a79c>] super_cache_scan+0x2fc/0x308
 [<0000000040225f54>] shrink_slab.part.48.constprop.57+0x31c/0x3c8
 [<000000004022927c>] shrink_zone+0xe4/0xe8
 [<0000000040229cf4>] kswapd+0x614/0xae0
 [<00000000401a4824>] kthread+0x144/0x178
 [<0000000040144020>] end_fault_vector+0x20/0x28
 [<00000000402136d8>] mempool_alloc_slab+0x28/0x40
 [<0000000040213974>] mempool_alloc+0xa4/0x208
INFO: task postgres:3006 blocked for more than 120 seconds.
      Not tainted 4.0.0-rc4+ #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
postgres        D 00000000401440c0     0  3006      1 0x00000010
Backtrace:
 [<000000004014e4e8>] __schedule+0x248/0x5d0
 [<000000004014e8b8>] schedule+0x48/0xc8
 [<000000004014ed58>] schedule_preempt_disabled+0x20/0x38
 [<0000000040151b70>] __mutex_lock_slowpath+0x180/0x3f0
 [<0000000040151e04>] mutex_lock+0x24/0x48
 [<000000001d05df60>] xfs_reclaim_inodes_ag+0x2b0/0x520 [xfs]
 [<000000001d05ee80>] xfs_reclaim_inodes_nr+0x60/0xb0 [xfs]
 [<000000001d076004>] xfs_fs_free_cached_objects+0x24/0x58 [xfs]
 [<000000004026a79c>] super_cache_scan+0x2fc/0x308
 [<0000000040225f54>] shrink_slab.part.48.constprop.57+0x31c/0x3c8
 [<000000004022927c>] shrink_zone+0xe4/0xe8
 [<0000000040229570>] try_to_free_pages+0x2f0/0x460
 [<000000004021b1b4>] __alloc_pages_nodemask+0x3b4/0x7f0
 [<000000004021b8d4>] alloc_kmem_pages_node+0x5c/0x70
 [<000000004017dd34>] copy_process.part.62+0x184/0x1c18
 [<0000000040192474>] sigprocmask+0x74/0xb0

INFO: task cron:3138 blocked for more than 120 seconds.
      Not tainted 4.0.0-rc4+ #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
cron            D 00000000401440c0     0  3138      1 0x00000010
Backtrace:
 [<000000004014e4e8>] __schedule+0x248/0x5d0
 [<000000004014e8b8>] schedule+0x48/0xc8
 [<000000004014ed58>] schedule_preempt_disabled+0x20/0x38
 [<0000000040151b70>] __mutex_lock_slowpath+0x180/0x3f0
 [<0000000040151e04>] mutex_lock+0x24/0x48
 [<000000001d05df60>] xfs_reclaim_inodes_ag+0x2b0/0x520 [xfs]
 [<000000001d05ee80>] xfs_reclaim_inodes_nr+0x60/0xb0 [xfs]
 [<000000001d076004>] xfs_fs_free_cached_objects+0x24/0x58 [xfs]
 [<000000004026a79c>] super_cache_scan+0x2fc/0x308
 [<0000000040225f54>] shrink_slab.part.48.constprop.57+0x31c/0x3c8
 [<000000004022927c>] shrink_zone+0xe4/0xe8
 [<0000000040229570>] try_to_free_pages+0x2f0/0x460
 [<000000004021b1b4>] __alloc_pages_nodemask+0x3b4/0x7f0
 [<000000004021b8d4>] alloc_kmem_pages_node+0x5c/0x70
 [<000000004017dd34>] copy_process.part.62+0x184/0x1c18
 [<000000004026ce74>] SyS_stat64+0x4c/0x70

INFO: task kworker/2:0H:1079 blocked for more than 120 seconds.
      Not tainted 4.0.0-rc4+ #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kworker/2:0H    D 00000000401440c0     0  1079      2 0x00000000
Workqueue: xfs-log/sdc5 xfs_log_worker [xfs]
Backtrace:
 [<000000004014e4e8>] __schedule+0x248/0x5d0
 [<000000004014e8b8>] schedule+0x48/0xc8
 [<000000001d0840a4>] _xfs_log_force_lsn+0x394/0x440 [xfs]
 [<000000001d07da14>] xfs_trans_commit+0x224/0x2d0 [xfs]
 [<000000001d040020>] xfs_sync_sb+0x90/0x118 [xfs]
 [<000000001d083c24>] xfs_log_worker+0x94/0x180 [xfs]
 [<000000004019cd88>] process_one_work+0x198/0x458
 [<000000004019dc8c>] worker_thread+0x48c/0x620
 [<00000000401a4824>] kthread+0x144/0x178
[<0000000040144020>] end_fault_vector+0x20/0x28
 [<0000000040145080>] intr_check_sig+0x0/0x3c
 [<000000001c6d8000>] 0x1c6d8000
 [<000000001c6d8000>] 0x1c6d8000
 [<000000001c6d8000>] 0x1c6d8000
 [<000000001c949f5c>] sd_init_command+0x44/0x140 [sd_mod]
 [<000000004035b03c>] blk_recount_segments+0x10c/0x228

INFO: task xgcc:4733 blocked for more than 120 seconds.
      Not tainted 4.0.0-rc4+ #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
xgcc            D 00000000401440c0     0  4733   4729 0x00000010
Backtrace:
 [<000000004014e4e8>] __schedule+0x248/0x5d0
 [<000000004014e8b8>] schedule+0x48/0xc8
 [<000000004014ed58>] schedule_preempt_disabled+0x20/0x38
 [<0000000040151b70>] __mutex_lock_slowpath+0x180/0x3f0
 [<0000000040151e04>] mutex_lock+0x24/0x48
 [<000000001d05df60>] xfs_reclaim_inodes_ag+0x2b0/0x520 [xfs]
[<000000001d076004>] xfs_fs_free_cached_objects+0x24/0x58 [xfs]
 [<000000004026a79c>] super_cache_scan+0x2fc/0x308
 [<0000000040225f54>] shrink_slab.part.48.constprop.57+0x31c/0x3c8
 [<000000004022927c>] shrink_zone+0xe4/0xe8
 [<0000000040229570>] try_to_free_pages+0x2f0/0x460
 [<000000004021b1b4>] __alloc_pages_nodemask+0x3b4/0x7f0
 [<000000004021b62c>] __get_free_pages+0x3c/0xf0
 [<000000004017cf98>] mm_init.isra.56+0x240/0x308
 [<000000004017d54c>] mm_alloc+0x6c/0x90

INFO: task kthreadd:2 blocked for more than 120 seconds.
      Not tainted 4.0.0-rc4+ #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kthreadd        D 00000000401440c0     0     2      0 0x00000000
Backtrace:
 [<000000004014e4e8>] __schedule+0x248/0x5d0
 [<000000004014e8b8>] schedule+0x48/0xc8
 [<000000004014ed58>] schedule_preempt_disabled+0x20/0x38
 [<0000000040151b70>] __mutex_lock_slowpath+0x180/0x3f0
 [<0000000040151e04>] mutex_lock+0x24/0x48
[<000000001d05df60>] xfs_reclaim_inodes_ag+0x2b0/0x520 [xfs]
 [<000000001d05ee80>] xfs_reclaim_inodes_nr+0x60/0xb0 [xfs]
 [<000000001d076004>] xfs_fs_free_cached_objects+0x24/0x58 [xfs]
 [<000000004026a79c>] super_cache_scan+0x2fc/0x308
 [<0000000040225f54>] shrink_slab.part.48.constprop.57+0x31c/0x3c8
 [<000000004022927c>] shrink_zone+0xe4/0xe8
 [<0000000040229570>] try_to_free_pages+0x2f0/0x460
 [<000000004021b1b4>] __alloc_pages_nodemask+0x3b4/0x7f0
 [<000000004021b8d4>] alloc_kmem_pages_node+0x5c/0x70
 [<000000004017dd34>] copy_process.part.62+0x184/0x1c18
 [<0000000040144020>] end_fault_vector+0x20/0x28

INFO: task kswapd1:285 blocked for more than 120 seconds.
      Not tainted 4.0.0-rc4+ #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kswapd1         D 00000000401440c0     0   285      2 0x00000000
Backtrace:
 [<000000004014e4e8>] __schedule+0x248/0x5d0
 [<000000004014e8b8>] schedule+0x48/0xc8
 [<000000001d083f40>] _xfs_log_force_lsn+0x230/0x440 [xfs]
[<000000001d08417c>] xfs_log_force_lsn+0x2c/0x90 [xfs]
 [<000000001d068614>] __xfs_iunpin_wait+0xb4/0x1f0 [xfs]
 [<000000001d06d78c>] xfs_iunpin_wait+0x2c/0x190 [xfs]
 [<000000001d05d7fc>] xfs_reclaim_inode+0x9c/0x550 [xfs]
 [<000000001d05de68>] xfs_reclaim_inodes_ag+0x1b8/0x520 [xfs]
 [<000000001d05ee80>] xfs_reclaim_inodes_nr+0x60/0xb0 [xfs]
 [<000000001d076004>] xfs_fs_free_cached_objects+0x24/0x58 [xfs]
 [<000000004026a79c>] super_cache_scan+0x2fc/0x308
 [<0000000040225f54>] shrink_slab.part.48.constprop.57+0x31c/0x3c8
 [<000000004022927c>] shrink_zone+0xe4/0xe8
 [<0000000040229cf4>] kswapd+0x614/0xae0
 [<00000000401a4824>] kthread+0x144/0x178
 [<0000000040144020>] end_fault_vector+0x20/0x28

INFO: task kswapd2:286 blocked for more than 120 seconds.
      Not tainted 4.0.0-rc4+ #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kswapd2         D 00000000401440c0     0   286      2 0x00000000
Backtrace:
 [<000000004014e4e8>] __schedule+0x248/0x5d0
[<000000004014e8b8>] schedule+0x48/0xc8
 [<000000004014ed58>] schedule_preempt_disabled+0x20/0x38
 [<0000000040151b70>] __mutex_lock_slowpath+0x180/0x3f0
 [<0000000040151e04>] mutex_lock+0x24/0x48
 [<000000001d05df60>] xfs_reclaim_inodes_ag+0x2b0/0x520 [xfs]
 [<000000001d05ee80>] xfs_reclaim_inodes_nr+0x60/0xb0 [xfs]
 [<000000001d076004>] xfs_fs_free_cached_objects+0x24/0x58 [xfs]
 [<000000004026a79c>] super_cache_scan+0x2fc/0x308
 [<0000000040225f54>] shrink_slab.part.48.constprop.57+0x31c/0x3c8
 [<000000004022927c>] shrink_zone+0xe4/0xe8
 [<0000000040229cf4>] kswapd+0x614/0xae0
 [<00000000401a4824>] kthread+0x144/0x178
 [<0000000040144020>] end_fault_vector+0x20/0x28
 [<00000000402136d8>] mempool_alloc_slab+0x28/0x40
 [<0000000040213974>] mempool_alloc+0xa4/0x208

INFO: task postgres:3006 blocked for more than 120 seconds.
      Not tainted 4.0.0-rc4+ #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
postgres        D 00000000401440c0     0  3006      1 0x00000010
Backtrace:
 [<000000004014e4e8>] __schedule+0x248/0x5d0
 [<000000004014e8b8>] schedule+0x48/0xc8
 [<000000004014ed58>] schedule_preempt_disabled+0x20/0x38
 [<0000000040151b70>] __mutex_lock_slowpath+0x180/0x3f0
 [<0000000040151e04>] mutex_lock+0x24/0x48
 [<000000001d05df60>] xfs_reclaim_inodes_ag+0x2b0/0x520 [xfs]
 [<000000001d05ee80>] xfs_reclaim_inodes_nr+0x60/0xb0 [xfs]
 [<000000001d076004>] xfs_fs_free_cached_objects+0x24/0x58 [xfs]
 [<000000004026a79c>] super_cache_scan+0x2fc/0x308
 [<0000000040225f54>] shrink_slab.part.48.constprop.57+0x31c/0x3c8
 [<000000004022927c>] shrink_zone+0xe4/0xe8
 [<0000000040229570>] try_to_free_pages+0x2f0/0x460
 [<000000004021b1b4>] __alloc_pages_nodemask+0x3b4/0x7f0
 [<000000004021b8d4>] alloc_kmem_pages_node+0x5c/0x70
 [<000000004017dd34>] copy_process.part.62+0x184/0x1c18
 [<0000000040192474>] sigprocmask+0x74/0xb0
diff mbox

Patch

diff --git a/arch/parisc/include/asm/Kbuild b/arch/parisc/include/asm/Kbuild
index 8686237..a5f0375 100644
--- a/arch/parisc/include/asm/Kbuild
+++ b/arch/parisc/include/asm/Kbuild
@@ -20,6 +20,7 @@  generic-y += param.h
 generic-y += percpu.h
 generic-y += poll.h
 generic-y += preempt.h
+generic-y += scatterlist.h
 generic-y += segment.h
 generic-y += topology.h
 generic-y += trace_clock.h
diff --git a/arch/parisc/include/asm/cacheflush.h b/arch/parisc/include/asm/cacheflush.h
index de65f66..873fd4a 100644
--- a/arch/parisc/include/asm/cacheflush.h
+++ b/arch/parisc/include/asm/cacheflush.h
@@ -44,7 +44,7 @@  static inline void flush_kernel_dcache_page(struct page *page)
 }
 
 #define flush_kernel_dcache_range(start,size) \
-	flush_kernel_dcache_range_asm((start), (start)+(size));
+	flush_kernel_dcache_range_asm((unsigned long)(start), (start)+(size));
 /* vmap range flushes and invalidates.  Architecturally, we don't need
  * the invalidate, because the CPU should refuse to speculate once an
  * area has been flushed, so invalidate is left empty */
diff --git a/arch/parisc/include/asm/scatterlist.h b/arch/parisc/include/asm/scatterlist.h
deleted file mode 100644
index 8bf1f0d..0000000
--- a/arch/parisc/include/asm/scatterlist.h
+++ /dev/null
@@ -1,10 +0,0 @@ 
-#ifndef _ASM_PARISC_SCATTERLIST_H
-#define _ASM_PARISC_SCATTERLIST_H
-
-#include <asm/page.h>
-#include <asm/types.h>
-#include <asm-generic/scatterlist.h>
-
-#define sg_virt_addr(sg) ((unsigned long)sg_virt(sg))
-
-#endif /* _ASM_PARISC_SCATTERLIST_H */
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
index d87d1c4..f428878 100644
--- a/arch/parisc/kernel/pci-dma.c
+++ b/arch/parisc/kernel/pci-dma.c
@@ -482,7 +482,7 @@  static int pa11_dma_map_sg(struct device *dev, struct scatterlist *sglist, int n
 	BUG_ON(direction == DMA_NONE);
 
 	for (i = 0; i < nents; i++, sglist++ ) {
-		unsigned long vaddr = sg_virt_addr(sglist);
+		unsigned long vaddr = (unsigned long)sg_virt(sglist);
 		sg_dma_address(sglist) = (dma_addr_t) virt_to_phys(vaddr);
 		sg_dma_len(sglist) = sglist->length;
 		flush_kernel_dcache_range(vaddr, sglist->length);
@@ -502,7 +502,7 @@  static void pa11_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, in
 	/* once we do combining we'll need to use phys_to_virt(sg_dma_address(sglist)) */
 
 	for (i = 0; i < nents; i++, sglist++ )
-		flush_kernel_dcache_range(sg_virt_addr(sglist), sglist->length);
+		flush_kernel_dcache_range(sg_virt(sglist), sglist->length);
 	return;
 }
 
@@ -527,7 +527,7 @@  static void pa11_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sgl
 	/* once we do combining we'll need to use phys_to_virt(sg_dma_address(sglist)) */
 
 	for (i = 0; i < nents; i++, sglist++ )
-		flush_kernel_dcache_range(sg_virt_addr(sglist), sglist->length);
+		flush_kernel_dcache_range(sg_virt(sglist), sglist->length);
 }
 
 static void pa11_dma_sync_sg_for_device(struct device *dev, struct scatterlist *sglist, int nents, enum dma_data_direction direction)
@@ -537,7 +537,7 @@  static void pa11_dma_sync_sg_for_device(struct device *dev, struct scatterlist *
 	/* once we do combining we'll need to use phys_to_virt(sg_dma_address(sglist)) */
 
 	for (i = 0; i < nents; i++, sglist++ )
-		flush_kernel_dcache_range(sg_virt_addr(sglist), sglist->length);
+		flush_kernel_dcache_range(sg_virt(sglist), sglist->length);
 }
 
 struct hppa_dma_ops pcxl_dma_ops = {
diff --git a/drivers/parisc/ccio-dma.c b/drivers/parisc/ccio-dma.c
index 8b490d7..5347847 100644
--- a/drivers/parisc/ccio-dma.c
+++ b/drivers/parisc/ccio-dma.c
@@ -916,7 +916,7 @@  ccio_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
 	/* Fast path single entry scatterlists. */
 	if (nents == 1) {
 		sg_dma_address(sglist) = ccio_map_single(dev,
-				(void *)sg_virt_addr(sglist), sglist->length,
+				sg_virt(sglist), sglist->length,
 				direction);
 		sg_dma_len(sglist) = sglist->length;
 		return 1;
@@ -983,8 +983,8 @@  ccio_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
 	BUG_ON(!dev);
 	ioc = GET_IOC(dev);
 
-	DBG_RUN_SG("%s() START %d entries,  %08lx,%x\n",
-		__func__, nents, sg_virt_addr(sglist), sglist->length);
+	DBG_RUN_SG("%s() START %d entries, %p,%x\n",
+		__func__, nents, sg_virt(sglist), sglist->length);
 
 #ifdef CCIO_COLLECT_STATS
 	ioc->usg_calls++;
diff --git a/drivers/parisc/iommu-helpers.h b/drivers/parisc/iommu-helpers.h
index 8c33491..9a55002 100644
--- a/drivers/parisc/iommu-helpers.h
+++ b/drivers/parisc/iommu-helpers.h
@@ -30,9 +30,9 @@  iommu_fill_pdir(struct ioc *ioc, struct scatterlist *startsg, int nents,
 		unsigned long vaddr;
 		long size;
 
-		DBG_RUN_SG(" %d : %08lx/%05x %08lx/%05x\n", nents,
+		DBG_RUN_SG(" %d : %08lx/%05x %p/%05x\n", nents,
 			   (unsigned long)sg_dma_address(startsg), cnt,
-			   sg_virt_addr(startsg), startsg->length
+			   sg_virt(startsg), startsg->length
 		);
 
 
@@ -66,7 +66,7 @@  iommu_fill_pdir(struct ioc *ioc, struct scatterlist *startsg, int nents,
 		
 		BUG_ON(pdirp == NULL);
 		
-		vaddr = sg_virt_addr(startsg);
+		vaddr = (unsigned long)sg_virt(startsg);
 		sg_dma_len(dma_sg) += startsg->length;
 		size = startsg->length + dma_offset;
 		dma_offset = 0;
@@ -113,7 +113,7 @@  iommu_coalesce_chunks(struct ioc *ioc, struct device *dev,
 		*/
 		contig_sg = startsg;
 		dma_len = startsg->length;
-		dma_offset = sg_virt_addr(startsg) & ~IOVP_MASK;
+		dma_offset = startsg->offset;
 
 		/* PARANOID: clear entries */
 		sg_dma_address(startsg) = 0;
@@ -124,14 +124,13 @@  iommu_coalesce_chunks(struct ioc *ioc, struct device *dev,
 		** it's always looking one "ahead".
 		*/
 		while(--nents > 0) {
-			unsigned long prevstartsg_end, startsg_end;
+			unsigned long prev_end, sg_start;
 
-			prevstartsg_end = sg_virt_addr(startsg) +
-				startsg->length;
+			prev_end = (unsigned long)sg_virt(startsg) +
+							startsg->length;
 
 			startsg++;
-			startsg_end = sg_virt_addr(startsg) + 
-				startsg->length;
+			sg_start = (unsigned long)sg_virt(startsg);
 
 			/* PARANOID: clear entries */
 			sg_dma_address(startsg) = 0;
@@ -150,12 +149,15 @@  iommu_coalesce_chunks(struct ioc *ioc, struct device *dev,
 				break;
 
 			/*
-			** Next see if we can append the next chunk (i.e.
-			** it must end on one page and begin on another
-			*/
-			if (unlikely(((prevstartsg_end | sg_virt_addr(startsg)) & ~PAGE_MASK) != 0))
+			 * Next see if we can append the next chunk (i.e.
+			 * it must end on one page and begin on another, or
+			 * it must start on the same address as the previous
+			 * entry ended.
+			 */
+			if (unlikely((prev_end != sg_start) ||
+			    ((prev_end | sg_start) & ~PAGE_MASK)))
 				break;
-			
+
 			dma_len += startsg->length;
 		}
 
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c
index 1ff1b67..e26ed2e 100644
--- a/drivers/parisc/sba_iommu.c
+++ b/drivers/parisc/sba_iommu.c
@@ -278,7 +278,7 @@  sba_dump_sg( struct ioc *ioc, struct scatterlist *startsg, int nents)
 				nents,
 				(unsigned long) sg_dma_address(startsg),
 				sg_dma_len(startsg),
-				sg_virt_addr(startsg), startsg->length);
+				sg_virt(startsg), startsg->length);
 		startsg++;
 	}
 }
@@ -945,8 +945,7 @@  sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
 
 	/* Fast path single entry scatterlists. */
 	if (nents == 1) {
-		sg_dma_address(sglist) = sba_map_single(dev,
-						(void *)sg_virt_addr(sglist),
+		sg_dma_address(sglist) = sba_map_single(dev, sg_virt(sglist),
 						sglist->length, direction);
 		sg_dma_len(sglist)     = sglist->length;
 		return 1;
@@ -1025,7 +1024,7 @@  sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
 #endif
 
 	DBG_RUN_SG("%s() START %d entries,  %p,%x\n",
-		__func__, nents, sg_virt_addr(sglist), sglist->length);
+		__func__, nents, sg_virt(sglist), sglist->length);
 
 	ioc = GET_IOC(dev);