pata_cm64x: fix boot crash on parisc
authorJames Bottomley <James.Bottomley@suse.de>
Sun, 24 Apr 2011 19:30:14 +0000 (14:30 -0500)
committerSteve Conklin <sconklin@canonical.com>
Fri, 15 Jul 2011 17:20:54 +0000 (12:20 -0500)
commit6f3b5e78ca67323ae010f03685fb4a61a0662547
tree1e0950d9e9fe471493f3af6fe2aac6d9505bc2f8
parentb8e72c715fca014f17902895907142796acdf9ec
pata_cm64x: fix boot crash on parisc

BugLink: http://bugs.launchpad.net/bugs/793702

commit 9281b16caac1276817b77033c5b8a1f5ca30102c upstream.

The old IDE cmd64x checks the status of the CNTRL register to see if
the ports are enabled before probing them.  pata_cmd64x doesn't do
this, which causes a HPMC on parisc when it tries to poke at the
secondary port because apparently the BAR isn't wired up (and a
non-responding piece of memory causes a HPMC).

Fix this by porting the CNTRL register port detection logic from IDE
cmd64x.  In addition, following converns from Alan Cox, add a check to
see if a mobility electronics bridge is the immediate parent and forgo
the check if it is (prevents problems on hotplug controllers).

Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
drivers/ata/pata_cmd64x.c
include/linux/pci_ids.h