Try the following diff, we only use the io space for a few models so this will limit it to those. Something like this is also needed for at least 82580 as well.
Index: if_em.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_em.c,v retrieving revision 1.250 diff -u -p -r1.250 if_em.c --- if_em.c 9 Mar 2011 12:24:15 -0000 1.250 +++ if_em.c 31 Mar 2011 07:54:32 -0000 @@ -1557,7 +1557,13 @@ em_allocate_pci_resources(struct em_soft return (ENXIO); } - if (sc->hw.mac_type > em_82543) { + switch (sc->hw.mac_type) { + case em_82544: + case em_82540: + case em_82545: + case em_82546: + case em_82541: + case em_82541_rev_2: /* Figure out where our I/O BAR is ? */ for (rid = PCI_MAPREG_START; rid < PCI_MAPREG_END;) { val = pci_conf_read(pa->pa_pc, pa->pa_tag, rid); @@ -1579,6 +1585,9 @@ em_allocate_pci_resources(struct em_soft } sc->hw.io_base = 0; + break; + default: + break; } /* for ICH8 and family we need to find the flash memory */