linux/arch/powerpc/kvm
Sasha Levin b67bfe0d42 hlist: drop the node parameter from iterators
I'm not sure why, but the hlist for each entry iterators were conceived

        list_for_each_entry(pos, head, member)

The hlist ones were greedy and wanted an extra parameter:

        hlist_for_each_entry(tpos, pos, head, member)

Why did they need an extra pos parameter? I'm not quite sure. Not only
they don't really need it, it also prevents the iterator from looking
exactly like the list iterator, which is unfortunate.

Besides the semantic patch, there was some manual work required:

 - Fix up the actual hlist iterators in linux/list.h
 - Fix up the declaration of other iterators based on the hlist ones.
 - A very small amount of places were using the 'node' parameter, this
 was modified to use 'obj->member' instead.
 - Coccinelle didn't handle the hlist_for_each_entry_safe iterator
 properly, so those had to be fixed up manually.

The semantic patch which is mostly the work of Peter Senna Tschudin is here:

@@
iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;

type T;
expression a,c,d,e;
identifier b;
statement S;
@@

-T b;
    <+... when != b
(
hlist_for_each_entry(a,
- b,
c, d) S
|
hlist_for_each_entry_continue(a,
- b,
c) S
|
hlist_for_each_entry_from(a,
- b,
c) S
|
hlist_for_each_entry_rcu(a,
- b,
c, d) S
|
hlist_for_each_entry_rcu_bh(a,
- b,
c, d) S
|
hlist_for_each_entry_continue_rcu_bh(a,
- b,
c) S
|
for_each_busy_worker(a, c,
- b,
d) S
|
ax25_uid_for_each(a,
- b,
c) S
|
ax25_for_each(a,
- b,
c) S
|
inet_bind_bucket_for_each(a,
- b,
c) S
|
sctp_for_each_hentry(a,
- b,
c) S
|
sk_for_each(a,
- b,
c) S
|
sk_for_each_rcu(a,
- b,
c) S
|
sk_for_each_from
-(a, b)
+(a)
S
+ sk_for_each_from(a) S
|
sk_for_each_safe(a,
- b,
c, d) S
|
sk_for_each_bound(a,
- b,
c) S
|
hlist_for_each_entry_safe(a,
- b,
c, d, e) S
|
hlist_for_each_entry_continue_rcu(a,
- b,
c) S
|
nr_neigh_for_each(a,
- b,
c) S
|
nr_neigh_for_each_safe(a,
- b,
c, d) S
|
nr_node_for_each(a,
- b,
c) S
|
nr_node_for_each_safe(a,
- b,
c, d) S
|
- for_each_gfn_sp(a, c, d, b) S
+ for_each_gfn_sp(a, c, d) S
|
- for_each_gfn_indirect_valid_sp(a, c, d, b) S
+ for_each_gfn_indirect_valid_sp(a, c, d) S
|
for_each_host(a,
- b,
c) S
|
for_each_host_safe(a,
- b,
c, d) S
|
for_each_mesh_entry(a,
- b,
c, d) S
)
    ...+>

[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
[akpm@linux-foundation.org: checkpatch fixes]
[akpm@linux-foundation.org: fix warnings]
[akpm@linux-foudnation.org: redo intrusive kvm changes]
Tested-by: Peter Senna Tschudin <peter.senna@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-02-27 19:10:24 -08:00
..
44x.c KVM: PPC: 44x: Initialize PVR 2012-10-05 23:38:47 +02:00
44x_emulate.c KVM: PPC: 44x: fix DCR read/write 2012-10-30 10:54:50 +01:00
44x_tlb.c KVM: do not release the error page 2012-08-06 16:04:58 +03:00
44x_tlb.h
Kconfig arch/powerpc/kvm: remove depends on CONFIG_EXPERIMENTAL 2013-01-21 14:43:12 -08:00
Makefile KVM: PPC: E500: Split host and guest MMU parts 2013-01-24 19:23:31 +01:00
book3s.c KVM: PPC: Book3S: Get/set guest FP regs using the GET/SET_ONE_REG interface 2012-10-05 23:38:54 +02:00
book3s_32_mmu.c
book3s_32_mmu_host.c KVM: do not treat noslot pfn as a error pfn 2012-10-29 20:31:04 -02:00
book3s_32_sr.S
book3s_64_mmu.c
book3s_64_mmu_host.c KVM: do not treat noslot pfn as a error pfn 2012-10-29 20:31:04 -02:00
book3s_64_mmu_hv.c KVM: PPC: Book3S HV: Improve handling of local vs. global TLB invalidations 2012-12-06 01:34:05 +01:00
book3s_64_slb.S KVM: PPC: Book3S: PR: No isync in slbie path 2012-05-06 16:19:09 +02:00
book3s_64_vio.c kvm/book3s: Make kernel emulated H_PUT_TCE available for "PR" KVM 2012-05-06 16:19:11 +02:00
book3s_64_vio_hv.c kvm/book3s: Make kernel emulated H_PUT_TCE available for "PR" KVM 2012-05-06 16:19:11 +02:00
book3s_emulate.c KVM: PPC: Fix mfspr/mtspr MMUCFG emulation 2013-01-10 13:30:11 +01:00
book3s_exports.c KVM: PPC: Book3S PR: Fix VSX handling 2012-12-06 01:34:02 +01:00
book3s_hv.c KVM: Rename KVM_MEMORY_SLOTS -> KVM_USER_MEM_SLOTS 2012-12-13 23:21:57 -02:00
book3s_hv_builtin.c KVM: PPC: Quieten message about allocating linear regions 2012-10-05 23:38:40 +02:00
book3s_hv_interrupts.S KVM: PPC: Work around POWER7 DABR corruption problem 2012-04-08 14:01:36 +03:00
book3s_hv_ras.c KVM: PPC: Book3S HV: Fix compilation without CONFIG_PPC_POWERNV 2013-01-06 14:02:00 +01:00
book3s_hv_rm_mmu.c KVM: PPC: Book3S HV: Improve handling of local vs. global TLB invalidations 2012-12-06 01:34:05 +01:00
book3s_hv_rmhandlers.S powerpc/kvm/book3s_hv: Preserve guest CFAR register value 2013-02-15 16:54:33 +11:00
book3s_interrupts.S powerpc: Merge VCPU_GPR 2012-07-10 19:18:06 +10:00
book3s_mmu_hpte.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
book3s_paired_singles.c powerpc/kvm: Fallout from system.h disintegration 2012-04-02 14:00:04 +10:00
book3s_pr.c Merge tag 'kvm-3.9-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2013-02-24 13:07:18 -08:00
book3s_pr_papr.c powerpc/kvm: Fix "PR" KVM implementation of H_CEDE 2012-07-11 17:36:38 +02:00
book3s_rmhandlers.S KVM: PPC: Book3S PR: Fix VSX handling 2012-12-06 01:34:02 +01:00
book3s_segment.S powerpc: Move and fix MTMSR_EERI definition 2012-07-10 19:18:08 +10:00
booke.c KVM: PPC: BookE: Handle alignment interrupts 2013-02-13 12:56:45 +01:00
booke.h KVM: PPC: booke: Allow multiple exception types 2013-02-13 12:56:40 +01:00
booke_emulate.c KVM: PPC: BookE: Emulate mfspr on EPR 2013-01-10 13:42:30 +01:00
booke_interrupts.S KVM: PPC: BookE: Handle alignment interrupts 2013-02-13 12:56:45 +01:00
bookehv_interrupts.S KVM: PPC: bookehv64: Add support for interrupt handling 2012-12-06 01:34:11 +01:00
e500.c KVM: PPC: booke: Allow multiple exception types 2013-02-13 12:56:40 +01:00
e500.h KVM: PPC: e500: Implement TLB1-in-TLB0 mapping 2013-01-24 19:23:32 +01:00
e500_emulate.c KVM: PPC: e500: Add emulation helper for getting instruction ea 2012-12-06 01:34:12 +01:00
e500_mmu.c KVM: PPC: E500: Remove kvmppc_e500_tlbil_all usage from guest TLB code 2013-01-24 19:23:34 +01:00
e500_mmu_host.c KVM: PPC: E500: Make clear_tlb_refs and clear_tlb1_bitmap static 2013-01-24 19:23:33 +01:00
e500_mmu_host.h KVM: PPC: E500: Make clear_tlb_refs and clear_tlb1_bitmap static 2013-01-24 19:23:33 +01:00
e500mc.c KVM: PPC: e500mc: Fix tlbilx emulation for 64-bit guests 2012-07-11 17:39:38 +02:00
emulate.c Merge tag 'kvm-3.9-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2013-02-24 13:07:18 -08:00
fpu.S
powerpc.c KVM: PPC: BookE: Implement EPR exit 2013-01-10 13:42:31 +01:00
timing.c
timing.h KVM: PPC: booke: category E.HV (GS-mode) support 2012-04-08 12:51:19 +03:00
trace.h Merge remote-tracking branch 'master' into queue 2012-10-29 19:15:32 -02:00