DragonFly 2.0 (almost) works on D945GCLF/Intel Atom
Mitja Horvat
pinkfluid at gmail.com
Mon Sep 29 11:11:57 PDT 2008
Hello all,
I recently purchased an Intel D945GCLF Mini-ITX motherboard with Intel
Atom. I got DragonFly up and running on it out of the box except for
the network, card which required a minor patch.
It even runs X with KDE 4.1.1 with DRI support and sound. pciconf -v
currently shows only 1 undetected device, and that it seems is a SMBus
device (which I guess I can enable with "device smbus"):
none2 at pci0:31:3: class=0x0c0500 card=0x464c8086 chip=0x27da8086
rev=0x01 hdr=0x00
vendor = 'Intel Corporation'
device = '82801G (ICH7 Family) SMBus Controller'
class = serial bus
subclass = SMBus
Apart from that, the network card is a Realtek 8102EL, which is not
detected with a vanilla kernel. I modified the "re" driver source code
to include the hardware revision of the 8102EL and disable the
hardware checksum features of the card (they don't work probably
because it has changed), see patch below.
There's only few minor issues with the network card still present;
when the kernel boots I occasionally get the following error message
and the kernel crashes just before it should start booting into
userspace:
Sep 26 06:34:26 kernel: re0: MII without any phy!
Setting the "debug.acpi.disabled" variable to "bus timer" seems to
completely cure the problem, however I'm still wondering if it is
something wrong with the patch or if it is an isolated ACPI issue.
So my question is, is the patch correct or I just encountered an ACPI issue?
PS: For anyone replying to this e-mail, please add me to CC since I'm
not suscribed to the mailing list.
Regards,
Mitja Horvat
diff -bru src/sys/dev/netif/re/if_re.c src.hack/sys/dev/netif/re/if_
re.c
--- src/sys/dev/netif/re/if_re.c 2008-06-25 11:02:33 +0000
+++ src.hack/sys/dev/netif/re/if_re.c 2008-09-28 02:19:24 +0000
@@ -166,6 +166,8 @@
"RealTek 8139C+ 10/100BaseTX" },
{ PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8101E, RE_HWREV_8101E,
"RealTek 8101E PCIe 10/100baseTX" },
+ { PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8101E, RE_HWREV_8102EL,
+ "RealTek 8102EL PCIe 10/100baseTX" },
{ PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8168, RE_HWREV_8168_SPIN1,
"RealTek 8168/8111B PCIe Gigabit Ethernet" },
{ PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8168, RE_HWREV_8168_SPIN2,
@@ -208,6 +210,7 @@
{ RE_HWREV_8169_8110SC, RE_8169, 0, "8169SC" },
{ RE_HWREV_8100E, RE_8169, RE_F_HASMPC, "8100E" },
{ RE_HWREV_8101E, RE_8169, RE_F_PCIE, "8101E" },
+ { RE_HWREV_8102EL, RE_8169, RE_F_PCIE, "8102EL" },
{ 0, 0, 0, NULL }
};
@@ -1228,8 +1231,22 @@
ifp->if_ioctl = re_ioctl;
ifp->if_start = re_start;
ifp->if_capabilities = IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING;
- if (hwrev != RE_HWREV_8168C) /* XXX does not work yet */
+
+ switch (hwrev)
+ {
+ case RE_HWREV_8168C:
+ case RE_HWREV_8102EL:
+ /*
+ * XXX Hardware checksum does not work yet on 8168C
+ * and 8102EL. Disble it.
+ */
+ ifp->if_capabilities &= ~IFCAP_HWCSUM;
+ break;
+ default:
ifp->if_capabilities |= IFCAP_HWCSUM;
+ break;
+ }
+
#ifdef DEVICE_POLLING
ifp->if_poll = re_poll;
#endif
diff -bru src/sys/dev/netif/re/if_rereg.h src.hack/sys/dev/netif/re/if_rereg.h
--- src/sys/dev/netif/re/if_rereg.h 2008-04-27 15:10:37 +0000
+++ src.hack/sys/dev/netif/re/if_rereg.h 2008-09-28 02:18:12 +0000
@@ -147,6 +147,7 @@
#define RE_HWREV_8168_SPIN1 0x30000000
#define RE_HWREV_8100E 0x30800000
#define RE_HWREV_8101E 0x34000000
+#define RE_HWREV_8102EL 0x24800000
#define RE_HWREV_8168_SPIN2 0x38000000
#define RE_HWREV_8168_SPIN3 0x38400000
#define RE_HWREV_8168C 0x3c000000
More information about the Kernel
mailing list