Overlapping PCI Memory Locations

Coleman Kane cokane at FreeBSD.org
Fri Dec 7 08:33:28 PST 2007


I've got a problem where two components on my system have overlapping
PCI memory regions:

atapci0: <ATI ATA controller> port 0x9000-0x9007,0x9008-0x900b,0x9010-0x9017,0x5018-0x501b,0x5020-0x502f mem 0xd0609000-0xd06093ff irq 16 at device 18.0 on pci0

atapci0: [ITHREAD]

pcm0: <ATI SB600 High Definition Audio Controller> mem 0xd0608000-0xd060bfff irq 16 at device 20.2 on pci0

pcm0: hdac_mem_alloc: Unable to allocate memory resource

Because of this, I cannot use the sound hardware on this system. In
addition, the memory range used by atapci0 is the SATA AHCI space. The
ata-chipset.c doesn't currently identify the ATI IXP600 SATA controller
(just the paired PATA controller), so I can actually use my drives
through the PATA/IDE compatibility registers in the I/O space. However,
if I modify ata-chipset.c to add support for the IXP600 SATA controller,
I get weird results using ATA_INL(..) calls, which look like something
is interfering with the data I *should* be getting from the SATA mem space.

In addition, the pcm0 refuses to attach, as above.

Also, this is a notebook and has one of those crummy notebook BIOSes
that don't allow fiddling with this sort of stuff in BIOS. Is there any
facility in the kernel to force these to be remapped (or to perform the
mappings ourselves and ignore what BIOS tells us)?

Coleman Kane

More information about the freebsd-hardware mailing list