fsl_pq_mdio: Fix kernel oops during OF address translation
authorAnton Vorontsov <avorontsov@mvista.com>
Fri, 23 Apr 2010 07:12:35 +0000 (07:12 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 23 Apr 2010 23:20:25 +0000 (16:20 -0700)
commit3b1fd3e55a39824e68bc8dd055d14892476e3671
tree787512b50f0fe920c0ce2e0aaef0cc6d85f3128c
parentfda48a0d7a8412cedacda46a9c0bf8ef9cd13559
fsl_pq_mdio: Fix kernel oops during OF address translation

Old P1020RDB device trees were not specifing tbipa address for
MDIO nodes, which is now causing this kernel oops:

 ...
 eth2: TX BD ring size for Q[6]: 256
 eth2: TX BD ring size for Q[7]: 256
 Unable to handle kernel paging request for data at address 0x00000000
 Faulting instruction address: 0xc0015504
 Oops: Kernel access of bad area, sig: 11 [#1]
 ...
 NIP [c0015504] memcpy+0x3c/0x9c
 LR [c000a9f8] __of_translate_address+0xfc/0x21c
 Call Trace:
 [df839e00] [c000a94c] __of_translate_address+0x50/0x21c (unreliable)
 [df839e50] [c01a33e8] get_gfar_tbipa+0xb0/0xe0
 ...

The old device trees are buggy, though having a dead ethernet is
better than a dead kernel, so fix the issue by using of_iomap().

Also, a somewhat similar issue exist in the probe() routine, though
there the oops is only a possibility. Nonetheless, fix it too.

Signed-off-by: Anton Vorontsov <avorontsov@mvista.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/fsl_pq_mdio.c