NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
re: port-i386/46884: Compaq Armada E500 not booting 6.0 RC1
The following reply was made to PR port-i386/46884; it has been noted by GNATS.
From: Paul Goyette <paul%whooppee.com@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: matthew green <mrg%eterna.com.au@localhost>
Subject: re: port-i386/46884: Compaq Armada E500 not booting 6.0 RC1
Date: Sun, 7 May 2017 10:11:22 +0800 (+08)
> Dump of assembler code for function config_cfdriver_lookup:
> 0xc077fbf5 <+0>: push %ebp
> 0xc077fbf6 <+1>: mov %esp,%ebp
> 0xc077fbf8 <+3>: push %edi
> 0xc077fbf9 <+4>: push %esi
> 0xc077fbfa <+5>: push %ebx
> 0xc077fbfb <+6>: sub $0x1c,%esp
> 0xc077fbfe <+9>: mov 0x8(%ebp),%edi
> 0xc077fc01 <+12>: mov 0xc0c3ecd0,%ebx
> 0xc077fc07 <+18>: test %ebx,%ebx
> 0xc077fc09 <+20>: je 0xc077fc2d <config_cfdriver_lookup+56>
> 0xc077fc0b <+22>: movzbl (%edi),%esi
> 0xc077fc0e <+25>: mov 0x10(%ebx),%eax
> 0xc077fc11 <+28>: mov %esi,%edx
> >> 0xc077fc13 <+30>: cmp %dl,(%eax)
> 0xc077fc15 <+32>: jne 0xc077fc27 <config_cfdriver_lookup+50>
> 0xc077fc17 <+34>: mov %edi,0x4(%esp)
> 0xc077fc1b <+38>: mov %eax,(%esp)
> 0xc077fc1e <+41>: call 0xc0906af0 <strcmp>
> 0xc077fc23 <+46>: test %eax,%eax
> 0xc077fc25 <+48>: je 0xc077fc2d <config_cfdriver_lookup+56>
> 0xc077fc27 <+50>: mov (%ebx),%ebx
> 0xc077fc29 <+52>: test %ebx,%ebx
> 0xc077fc2b <+54>: jne 0xc077fc0e <config_cfdriver_lookup+25>
> 0xc077fc2d <+56>: mov %ebx,%eax
> 0xc077fc2f <+58>: add $0x1c,%esp
> 0xc077fc32 <+61>: pop %ebx
> 0xc077fc33 <+62>: pop %esi
> 0xc077fc34 <+63>: pop %edi
> 0xc077fc35 <+64>: pop %ebp
> 0xc077fc36 <+65>: ret
>
> >> marks the faulting instruction. so something is wrong with
> the allcfdrivers list here, i think. ...
My understanding of the disassembly shows that the list is being
traversed with the current entry pointed to by %ebx (see <+50> for
the code that links to the next list entry).
So, %eax would be the pointer to the name for which we are searching.
So maybe something got corrupted in the new device's cf_data (from
which config_match() obtains the new driver's name and passes it to
config_cfattach_lookup()) ?
+------------------+--------------------------+----------------------------+
| Paul Goyette | PGP Key fingerprint: | E-mail addresses: |
| (Retired) | FA29 0E3B 35AF E8AE 6651 | paul at whooppee dot com |
| Kernel Developer | 0786 F758 55DE 53BA 7731 | pgoyette at netbsd dot org |
+------------------+--------------------------+----------------------------+
Home |
Main Index |
Thread Index |
Old Index