DragonFly BSD

ThinkpadX61s

DragonFly on Lenovo Thinkpad X61s

Following experience is from running DragonFly 1.11 development on laptop, so it should apply if you are running 1.12 stable and up.

$ sudo lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation Mobile Memory Controller Hub [8086:2a00] (rev 0c)
00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile Integrated Graphics Controller [8086:2a02] (rev 0c)
00:02.1 Display controller [0380]: Intel Corporation Mobile Integrated Graphics Controller [8086:2a03] (rev 0c)
00:19.0 Ethernet controller [0200]: Intel Corporation 82566MM Gigabit Network Connection [8086:1049] (rev 03)
00:1a.0 USB Controller [0c03]: Intel Corporation 82801H (ICH8 Family) USB UHCI Contoller #4 [8086:2834] (rev 03)
00:1a.1 USB Controller [0c03]: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 [8086:2835] (rev 03)
00:1a.7 USB Controller [0c03]: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 [8086:283a] (rev 03)
00:1b.0 Audio device [0403]: Intel Corporation 82801H (ICH8 Family) HD Audio Controller [8086:284b] (rev 03)
00:1c.0 PCI bridge [0604]: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 [8086:283f] (rev 03)
00:1c.1 PCI bridge [0604]: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 [8086:2841] (rev 03)
00:1d.0 USB Controller [0c03]: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 [8086:2830] (rev 03)
00:1d.1 USB Controller [0c03]: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 [8086:2831] (rev 03)
00:1d.7 USB Controller [0c03]: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 [8086:2836] (rev 03)
00:1e.0 PCI bridge [0604]: Intel Corporation 82801 Mobile PCI Bridge [8086:2448] (rev f3)
00:1f.0 ISA bridge [0601]: Intel Corporation Mobile LPC Interface Controller [8086:2811] (rev 03)
00:1f.2 IDE interface [0101]: Intel Corporation Mobile SATA IDE Controller [8086:2828] (rev 03)
00:1f.3 SMBus [0c05]: Intel Corporation 82801H (ICH8 Family) SMBus Controller [8086:283e] (rev 03)
03:00.0 Network controller [0280]: Atheros Communications, Inc. AR5418 802.11a/b/g/n Wireless PCI Express Adapter [168c:0024] (rev 01)
05:00.0 CardBus bridge [0607]: Ricoh Co Ltd RL5c476 II [1180:0476] (rev ba)
05:00.1 FireWire (IEEE 1394) [0c00]: Ricoh Co Ltd R5C832 IEEE 1394 Controller [1180:0832] (rev 04)
05:00.2 SD Host controller [0805]: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter [1180:0822] (rev 21)

Kernel and system in general

SMP kernel boots with IO_APIC disabled only. With IO_APIC support it panics early in boot. I haven't bothered yet to dig deeper into this issue.

I'm not able to boot machine with SATA controller in AHCI mode while running on battery (without AC). It boots fine with AHCI AC connected as it does SATA controller in IDE mode. As some brief benchmarks showed that there is no actual difference I'm using it SATA controller in IDE mode at the moment. The issue itself is related to interrupt routing probably, it really needs some love in DragonFly.

Update from 20.05.2008

The BIOS update released in 18.05.2008 - 7NETB3WW (2.13) - solves most of problems mentioned here, but the kernel with IO_APIC is still no go.

ACPI and power management

There is no issues in running with ACPI.

acpi0: <LENOVO TP-7N> on motherboard
acpi_ec0: <Embedded Controller: GPE 0x12, ECDT> port 0x66,0x62 on acpi0
acpi0: Power Button (fixed)
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1008-0x100b on acpi0
cpu0: <ACPI CPU (3 Cx states)> on acpi0
cpu1: <ACPI CPU (3 Cx states)> on acpi0
acpi_tz0: <Thermal Zone> on acpi0
acpi_tz1: <Thermal Zone> on acpi0
acpi_lid0: <Control Method Lid Switch> on acpi0
acpi_button0: <Sleep Button> on acpi0
atkbdc0: <Keyboard controller (i8042)> port 0x64,0x60 irq 1 on acpi0
acpi_cpu: throttling enabled, 8 steps (100% to 12.5%), currently 100.0%
acpi_cmbat0: <Control Method Battery> on acpi0
acpi_acad0: <AC Adapter> on acpi0

Suspend (S3) doesn't work though - panics on resume. Haven't time to dig into it yet. Throttling CPU speed works through ACPI, but it doesn't seem to have any impact to battery life, it makes system just slower. So I disabled automatic throttling while running on battery:

$ sysctl hw.acpi.cpu
hw.acpi.cpu.throttle_max: 8
hw.acpi.cpu.throttle_state: 8
hw.acpi.cpu.performance_speed: 8
hw.acpi.cpu.economy_speed: 8

est(4) in DragonFly doesn't support Core family CPU's yet AFAIK. I have 8 cell battery and it lasts about 5 hours, which is enough for me at the moment. Therefore I haven't bothered to dig into power management issues yet.

For tuning/controlling/monitoring ACPI extras for Thinkpad laptops I have acpi_ibm(4) and acpi_video(4) ports from FreeBSD in work. Neither of them are rady to commit yet, but I can share the current state if you contact me privately. I'll work on them after 2.0 release probably.

$ sysctl hw.acpi.ibm
hw.acpi.ibm.initialmask: 2060
hw.acpi.ibm.availmask: 16777215
hw.acpi.ibm.events: 0
hw.acpi.ibm.eventmask: 2060
hw.acpi.ibm.hotkey: 2483
hw.acpi.ibm.lcd_brightness: 0
hw.acpi.ibm.volume: 0
hw.acpi.ibm.mute: 0
hw.acpi.ibm.thinklight: 0
hw.acpi.ibm.bluetooth: 1
hw.acpi.ibm.wlan: 1
hw.acpi.ibm.fan_speed: 4343
hw.acpi.ibm.fan_level: 0
hw.acpi.ibm.fan: 1
hw.acpi.ibm.thermal: 52 48 48 49 37 -1 35 -1

Video controller

The chipset in use is Intel 965GM.

agp0: <Intel GM965 SVGA controller> port 0x1800-0x1807 mem 0xe0000000-0xefffffff,0xf8000000-0xf80fffff irq 10 at device 2.0 on pci0
agp0: detected 7676k stolen memory
agp0: aperture size is 256M
drmsub0: <Intel i965GM> on agp0

Although there are some issues with it, Intel chips are the best ones to use at the moment. I experimented a lot with Xorg and found that XAA acceleration architecture with DRI works best for me. DRM isn't in CVS yet, so you have to use info from this mail.

Update (20080228)

XVideo crases seems to be related Intel(R) Textured Video adaptor. Modified Xorg driver (2.2.1) which adds hardware overlay support for G965 chips works fine without crashes so far. See this thread for details how to modify the driver.

Ethernet controller

Works without any problem with em(4).

em0: <Intel(R) PRO/1000 Network Connection, Version - 6.2.9> port 0x1840-0x185f mem 0xf8225000-0xf8225fff,0xf8200000-0xf821ffff irq 11 at device 25.0 on pci0

Wireless card(s)

AFAICS all X61(s) models have either Intel PRO/Wireless 3945ABG or Intel PRO/Wireless 4965AGN Mini-PCI Express WiFi adapters. Unfortunately neither of them is working in DragonFly at the moment. Situation isn't hopeless though, both of them are supported in OpenBSD via wpi(4) and iwn(4) drivers respectively. With some effort it would be possible to support them. There is also wpi(4) work in progress in FreeBSD which would be simpler to port than the driver from FreeBSD.

I haven't done any porting work yet, because I can use Atheros AR5418 802.11a/b/g/n Wireless Mini-PCI Express adapter for now. I'm not very happy with it though, because I have to use ath(4) driver with binary blob. Blob in DragonFly doesn't work either and I have to use the one from http://people.freebsd.org/~sam/. This one works without problems so far and has necessary for me WPA support.

ath0: <Atheros 5418> mem 0xf7f00000-0xf7f0ffff irq 11 at device 0.0 on pci3
ath0: mac 12.10 phy 8.1 radio 12.0

If you plan to change Mini-PCI Express card note that "unauthorised" ones don't work out of box. See this link for more details.

Bluetooth

Works with ubt(4) driver without problems. In fact all my bluetooth(4) work is done with this laptop.

ubt0: <Broadcom Corp BCM2045B, class 224/1, rev 2.00/1.00, addr 3> on uhub0

Audio

Works without problems.

pcm0: <Intel 82801H High Definition Audio Controller> mem 0xf8220000-0xf8223fff irq 11 at device 27.0 on pci0
pcm0: <HDA Codec: Analog Devices AD1984>
pcm0: <HDA Driver Revision: 20071129_0050>

Firewire

Seems to work, but I haven't done any tests so far.

fwohci0: vendor#1180, dev832
fwohci0: <1394 Open Host Controller Interface> mem 0xd7efe800-0xd7efefff irq 11 at device 0.1 on pci5
fwohci0: OHCI version 1.10 (ROM=0)
fwohci0: No. of Isochronous channel is 4.
fwohci0: EUI64 00:16:d3:ff:ff:c2:f7:57
fwohci0: Phy 1394a available S400, 1 ports.
fwohci0: Link S400, max_rec 2048 bytes.
firewire0: <IEEE1394(FireWire) bus> on fwohci0
fwe0: <Ethernet over FireWire> on firewire0
fwe0: MAC address: 02:16:d3:c2:f7:57
sbp0: <SBP-2/SCSI over FireWire> on firewire0
fwohci0: Initiate bus reset
fwohci0: node_id#0xc800ffc0, gen1, CYCLEMASTER mode
firewire0: 1 nodes, maxhop <# 0, cable IRM  0 (me)
firewire0: bus manager 0 (me)

SD card reader

Isn't supported yet.