vge0 not autonegotiating to 1000baseTX full duplex in 7.1

I tried this port with a gigabit port on another computer and a gigabit switch, but either way, it wouldn't autonegotiate up to gigabit speeds, but instead to 100baseTX, half duplex. Forcing it to 1000baseTX with ifconfig causes connections to drop and pings to fail.

vge0: <VIA Networking Gigabit Ethernet> port 0xe800-0xe8ff mem 0xfeaffc00-0xfeaffcff irq 28 at device 0.0 on pci3

This seems to be a known issue, but there wasn't really a fix:

I looked at the verbose boot messages, but there's only one ukphy, and it is used by vr, not vge:
vr0: Reserved 0x100 bytes for rid 0x10 type 4 at 0xc800
miibus1: <MII bus> on vr0
ukphy0: <Generic IEEE 802.3u media interface> PHY 1 on miibus1
ukphy0: OUI 0x004063, model 0x0032, rev. 10
ukphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto

vge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:40:63:xx:xx:xx
        inet netmask 0xfffffc00 broadcast
        media: Ethernet 1000baseTX (100baseTX <full-duplex,flag0,flag1>)
        status: no carrier

Here's what it looks like when I force the media to 1000baseT (dunno why it says TX).