NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
port-arm/52057: wd0: Identify failed for Xscale pcic controller
>Number: 52057
>Category: port-arm
>Synopsis: wd0: Identify failed for Xscale pcic controller
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: port-arm-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Mar 09 20:55:00 +0000 2017
>Originator: Stephan Meisinger
>Release: NetBSD 7 (and later)
>Organization:
>Environment:
>Description:
full description here:
http://mail-index.netbsd.org/tech-kern/2017/03/06/msg021658.html
bug was properply unnoticed because
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/ata/wd.c.diff?r1=1.393&r2=1.394&only_with_tag=MAIN&f=h
missing statement:
if (wd->drvp->drive_type != DRIVET_OLD)
return 1;
was a workaround for this issue. See full description on mailing list.
>How-To-Repeat:
- boot system
- attach a CF Card into PCMCIA adapter
- mount or execute disklabel command on disk
-> observer wd0: IDENTIFY failed
>Fix:
this patch disables ATAC_CAP_DATA32 for pxapcic, which doesn't support this type of access:
Index: arch/arm/xscale/pxa2x0_pcic.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/xscale/pxa2x0_pcic.c,v
retrieving revision 1.12
diff -u -r1.12 pxa2x0_pcic.c
--- arch/arm/xscale/pxa2x0_pcic.c 13 Oct 2013 06:55:34 -0000 1.12
+++ arch/arm/xscale/pxa2x0_pcic.c 9 Mar 2017 20:38:06 -0000
@@ -400,6 +400,7 @@
{
struct pxapcic_softc *sc = device_private(self);
struct pxapcic_socket *sock;
+ prop_dictionary_t dict;
int s[PXAPCIC_NSLOT];
int i;
u_int cs;
@@ -419,6 +420,9 @@
config_pending_incr(self);
+ dict = device_properties(sock->pcmcia);
+ prop_dictionary_set_bool(dict, "is_cap_data32", false);
+
/* If there's a card there, attach it. */
cs = (*sock->pcictag->read)(sock, PXAPCIC_CARD_STATUS);
if (cs == PXAPCIC_CARD_VALID)
Index: arch/arm/xscale/pxa2x0_pcic.c
===================================================================
RCS file: /cvsroot/src/sys/arch/arm/xscale/pxa2x0_pcic.c,v
retrieving revision 1.12
diff -u -r1.12 pxa2x0_pcic.c
--- arch/arm/xscale/pxa2x0_pcic.c 13 Oct 2013 06:55:34 -0000 1.12
+++ arch/arm/xscale/pxa2x0_pcic.c 9 Mar 2017 20:38:06 -0000
@@ -400,6 +400,7 @@
{
struct pxapcic_softc *sc = device_private(self);
struct pxapcic_socket *sock;
+ prop_dictionary_t dict;
int s[PXAPCIC_NSLOT];
int i;
u_int cs;
@@ -419,6 +420,9 @@
config_pending_incr(self);
+ dict = device_properties(sock->pcmcia);
+ prop_dictionary_set_bool(dict, "is_cap_data32", false);
+
/* If there's a card there, attach it. */
cs = (*sock->pcictag->read)(sock, PXAPCIC_CARD_STATUS);
if (cs == PXAPCIC_CARD_VALID)
Home |
Main Index |
Thread Index |
Old Index