Posts by admin.

Solved: e1000: eth0: e1000_clean_tx_irq: Detected Tx Unit Hang

On one amd64 machine running CentOS 5.5 x86_64 the e1000 network interfaces go down and up with the following messages:

e1000: eth0: e1000_clean_tx_irq: Detected Tx Unit Hang
 Tx Queue             <0>
 TDH                  <62>
 TDT                  <8d>
 next_to_use          <8d>
 next_to_clean        <62>
 time_stamp           <10037f7b6>
 next_to_watch        <62>
 jiffies              <10037fcd4>
 next_to_watch.status <0>
NETDEV WATCHDOG: eth0: transmit timed out

This issue usually appears on machines with 4GB or more memory. I have tried a lot of things but no luck.

The fix comes with new Intel’s e1000 driver.

Download the latest driver from e1000 stable on SF (8.0.25 at the time of writing).

Build the RPM:

rpmbuild -tb /path/to/e1000-8.0.25.tar.gz

Install the new e1000 RPM driver:

rpm -ivh /usr/src/redhat/RPMS/x86_64/e1000-8.0.25-1.x86_64.rpm

Add ignore_64bit_dma=1 driver option in /etc/modprobe.conf:

options e1000 ignore_64bit_dma=1

Reboot and enjoy!

From e1000 README file:

Valid Range:   0-xxxxxxx (0=off)
Default Value: 0
Usage: insmod e1000.ko ignore_64bit_dma=1

When non zero the driver will only request DMA mapping of host memory
in the lower 4GB region. This provides a workaround for users of AMD platforms
GA-MA78G-DS3H & SM4021M-T2R+ that have reported TXHangs on system that have
>4GB RAM, suspected caused by some (no deep root cause) issue in the Dual
Address Cycle (DAC) DMA mechanism needed to access addresses above 4GB.
Setting ignore_64bit_dma to 1 activates the workaround.

This parameter is different than other parameters, in that it is a
single (not 1,1,1 etc.) parameter applied to all driver instances and
it is also available during runtime at

Update: if your newer kernel crashes with e1000 ElRepo driver version 8.0.30 or older (detailed here), please update to the latest version, currently 8.0.35. Thanks again ElRepo!

Installing Solaris 11 Express domU under CentOS 5 dom0

First, download Solaris 11 Express from Oracle.

Install Solaris 11 Express HVM domU with virt-install:

virt-install -n sx11 -r 2048 --vcpus=4 --os-type=solaris --os-variant=opensolaris \
-v -c /path/to/sol-11-exp-201011-text-x86.iso --disk path=sx11.img,size=20 \
-b br1 --vnc --noautoconsole

Of course, adjust domU memory (-r), vcpus, path to Solaris 11 Express DVD, disk path, network bridge (-b).

After installation has started, you can connect to the VNC display. First, determine which port:

virsh vncdisplay sx11

Finish the installation as usual. After reboot, you can start the Solaris 11 Express domU:

virsh start sx11

or have the domain autostarted at dom0 boot:

virsh autostart sx11

Or disable autostarting

virsh autostart --disable sx11


Fedora 14 pptpd RPMs

Fedora 14 source RPM:
pptpd-1.3.4-1.fc14.src.rpm MD5 8fe1eae2096eb387c74394618027dda1

Fedora 14 x86_64 RPM:
pptpd-1.3.4-1.fc14.x86_64.rpm MD5 17c9bf6473168b1b59ca331fb73b55b7

For more informations please see my previous posts here and here.


Fedora 13 pptpd RPMs

Fedora 13 source RPM:
MD5 8ccf41430af197e85ba7b67a0d6b95ea

Fedora 13 i386 RPM:
pptpd-1.3.4-1.fc13.i386.rpm MD5 904bcab3f58784a362499496ebdacb25

Fedora 13 x86_64 RPM:
pptpd-1.3.4-1.fc13.x86_64.rpm MD5 3d3209427d11981ef1827bd004e65736

I have commented out logwtmp in pptpd.conf, please see my previous post.

Tested with the following PPTP clients: Apple Mac OS X 10.6.4, Apple iPad (iOS 3.2.2), Apple iPhone 4 (iOS 4.1), Apple iPhone 3GS (iOS 4.1), Apple iPhone 3G (iOS 4.1), Microsoft Windows 7 Professional, Microsoft Windows XP Professional SP3, pptpclient 1.7.2, mpd 5.5.


Opensolaris b129 dom0 system clock offset problem

Please see below my solution to OpenSolaris bug ID 6908973, posted to xen-discuss list:

– set BIOS time to UTC

– set zone_info=UTC and zone_lag=0 in /etc/rtc_config

– set TZ=UTC in /etc/TIMEZONE

– enable ntpd

– after reboot the dom0’s time should be the correct UTC time

– shutdown all domUs; for each xVM domain remove the rtc_timeoffset

xm list -l domain | grep -v rtc_timeoffset > domain.sxp
xm new -F domain.sxp

– reconfigure each guest domain with BIOS time set to UTC

Hope this helps.

CentOS mirror

I have set up a CentOS mirror at

Of course, it’s IPv6 enabled.

Other hosted mirrors at

FreeBSD: PPPoE client setup

Append the provider configuration to /etc/ppp/ppp.conf:

set device PPPoE:<interface>
set authname <PPPoE username>
set authkey <PPPoE password>
set dial
set login
add default HISADDR
enable lqr echo
enable dns
nat enable yes
set redial 2

Replace <interface> with your network interface towards the PPPoE server. Start the PPPoE client, as root: /etc/rc.d/ppp start

Enable PPPoE client at startup, append to /etc/rc.conf:


Start the PPPoE client with /etc/rc.d/ppp start as root. The PPPoE interface is usually tun0.

(Open)Solaris, Linux and FreeBSD IPv6 setup

After you create a Regular Tunnel at Hurricane Electric‘s you will receive the following informations:

Server IPv4 Address
Server IPv6 Address
Client IPv4 Address
Client IPv6 Address
Routed /64

Solaris and OpenSolaris IPv6 tunnel setup

Create /etc/hostname6.ip.tun0 file:
tsrc Client_IPv4_Address tdst Server_IPv4_Address up
addif Client_IPv6_Address Server_IPv6_Address up

Add the permanent IPv6 default gateway:
route -p add -inet6 default Server_IPv6_Address

(Tested on Solaris 10 5/09 and 10/09, OpenSolaris 2009.06 and 2010.02 preview snv_127)

Linux (RHEL / Fedora / CentOS) IPv6 tunnel setup

Create /etc/sysconfig/network-scripts/ifcfg-sit1 file:


Add the following to /etc/sysconfig/network file:


(Tested with Fedora 11 and 12, CentOS 5.3 and 5.4)

FreeBSD IPv6 tunnel setup

Add the following lines to /etc/rc.conf file:

gifconfig_gif0="Client_IPv4_Address Server_IPv4_Address"
ipv6_network_interfaces="lo0 gif0"
ipv6_ifconfig_gif0="Client_IPv6_Address prefixlen 128"

(Tested with FreeBSD 6.4)

Installing Fedora 12 PV domU guest on xVM dom0 OpenSolaris

Create a 10 GB ZVOL for storage:
pfexec zfs create -V 10g rpool/f12d0

Install Fedora 12 domU:
pfexec virt-install -n f12 -r 512 --vcpus=4 -f /dev/zvol/dsk/rpool/f12d0 -b e1000g0 --os-type=linux -p --nographics --os-variant=fedora11 -l http://fedora-12-mirror/fedora/linux/releases/12/Fedora/i386/os/

-n f12 – domU’s name
-r 512 – allocate 512 MB memory
–vcpus=4 – number of virtual CPUs allocated (make sure this number is lower or equal to the number of CPUs available)
-f /dev/zvol/dsk/rpool/f12d0 – ZVOL block device
-b e1000g0 – bridged networking to e1000g0 interface
-p – paravirtualized guest
–os-variant=fedora11 – “hack” until fedora12 OS-Variant will be integrated into xVM
-l http://fedora-12-mirror/fedora/linux/releases/12/Fedora/i386/os/ – replace fedora-12-mirror with a near Fedora 12 mirror, replace i386 with x86_64 for 64-bit domU

After you bring up the network, do a VNC installation.
Until xVM supports ext4 boot, make sure to create an ext3 /boot partition (or just a big ext3 / filesystem)

After installation, start the domU:
pfexec xm start -c f12
You will be presented the pygrub menu, just press Enter to boot.

Log into the domU and change the default timeout=0 to a different value (e.g. 5 seconds) in /boot/grub/grub.conf. Now you can use virsh start / shutdown commands.

To auto-start the guest on host boot:
virsh autostart f12

Tested on OpenSolaris 2010.02 preview snv_127.

Fedora 12 PPTP server

I’ve built a Fedora 12 Poptop rpm:

pptpd-1.3.4-1.fc12.i386.rpm MD5 bdab201d70e78abe40f873d71880f718

pptpd-1.3.4-1.fc12.src.rpm MD5 ebd64f47b0a40a7585e22a11cc4e2890

If you get this error message:
Plugin /usr/lib/pptpd/ is for pppd version 2.4.3, this is 2.4.4
just comment out logwtmp option in /etc/pptpd.conf and restart pptpd with service pptpd restart.

Username/password pairs used for pptp authentication should be placed in /etc/ppp/chap-secrets
# client server secret IP addresses
username * password

To supply a DNS server to PPTP clients, just add them to /etc/ppp/options.pptpd like ms-dns A.B.C.D.

To configure local and remote PPTP client’s IP address modify localip and remoteip options in /etc/pptpd.conf.

To enable pptp server at startup run chkconfig pptpd on.