kern/77982: lnc0 can NOT be detected in vmware 4.5.2 while using
PXE to load FreebSD 4.x
Paul
mirnshi at 163.com
Wed Feb 23 14:50:25 GMT 2005
>Number: 77982
>Category: kern
>Synopsis: lnc0 can NOT be detected in vmware 4.5.2 while using PXE to load FreebSD 4.x
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Feb 23 14:50:23 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: Paul
>Release: 4.10 4.11
>Organization:
>Environment:
FreeBSD bsd 4.11-RELEASE FreeBSD 4.11-RELEASE #0: Wed Feb 16 20:41:07 CST 2005 root at bsd:/GENERIC i386
>Description:
The driver can NOT work in vmware 4.5.2(79C970A) while using PXE.
The lnc0 can not be detected. It is same as
http://lists.freebsd.org/pipermail/freebsd-stable/2004-October/008971.html
It should be reset but NOT, see patch.
>How-To-Repeat:
pxe boot in vmware
>Fix:
--- i386/isa/if_lnc.c.orig Wed Feb 13 08:43:10 2002
+++ i386/isa/if_lnc.c Wed Feb 23 17:15:41 2005
@@ -114,6 +114,7 @@
int rap;
int rdp;
int bdp;
+ int reset;
#ifdef DEBUG
int lnc_debug;
#endif
@@ -1120,13 +1121,20 @@
{
u_long chip_id;
int type;
-
- /*
+ int reset_val;
+
+ /*
* The PCnet family don't reset the RAP register on reset so we'll
* have to write during the probe :-) It does have an ID register
* though so the probe is just a matter of reading it.
+ *
+ * THAT can NOT work in vmware 4.5.2(79C970A) while using PXE.
+ * The lnc0 can not be detected, but lnc1 or/and lnc2 fine.
+ * So it's better to reset first.
+ * -- Paul Meng
*/
-
+ reset_val = inw(sc->reset);
+ outw(reset_val, sc->reset);
if ((type = lance_probe(sc))) {
chip_id = read_csr(sc, CSR89);
chip_id <<= 16;
@@ -1293,6 +1301,7 @@
sc->rap = iobase + PCNET_RAP;
sc->rdp = iobase + PCNET_RDP;
sc->bdp = iobase + PCNET_BDP;
+ sc->reset = iobase + PCNET_RESET;
sc->nic.ic = pcnet_probe(sc);
if (sc->nic.ic >= PCnet_32) {
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list