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