Acer Aspire 5672 and FreeBSD 6.2-beta1

Bruno Ducrot ducrot at poupinou.org
Tue Oct 10 02:52:07 PDT 2006


On Mon, Oct 09, 2006 at 04:11:46PM -0400, John Baldwin wrote:
> On Saturday 07 October 2006 15:03, Bruno Ducrot wrote:
> > On Sat, Oct 07, 2006 at 06:46:42PM +0200, Torfinn Ingolfsen wrote:
> > > On Sat, 07 Oct 2006 17:01:03 +0200
> > > Bruno Ducrot <ducrot at poupinou.org> wrote:
> > > 
> > > > Thanks. The device do not have a BAR when acpi is enabled.  We
> > > > therefore have to enable one.  I think just by poking aroud some pci
> > > > config registers onto the pci bridge will do the trick.  Your
> > > 
> > > Ok. I'm wondering; will output from lspci under Linux help you get at
> > > the info more easily? I have Xubuntu installed on a partition on this
> > > machine, so it is easy for me to do that, if you wish.
> > 
> > Well, I don't know if that will be helpful.  Humm, maybe a dmesg?
> > 
> > > > Looking at this datasheet I think we have to look more carrefully to
> > > > register 0x04 (halfword), 0x20h, 0x24, 0x28 and 0x2c.
> > > > Looking them both with and without acpi and comparing them will allows
> > > > us to know hopefully how to enable the first BAR to the correct adress
> > > > for your ethernet card.  In short, if you can first boot without ACPI,
> > > > then perform
> > > > pciconf -r -h pci0:28:2 4
> > > > pciconf -r pci0:28:2 0x20
> > > > pciconf -r pci0:28:2 0x24
> > > > pciconf -r pci0:28:2 0x28
> > > > pciconf -r pci0:28:2 0x2c
> > > > 
> > > > Also do a dump in order to check if something else might be needed:
> > > > pciconf -r -b pci0:28:2 0:256
> > > > 
> > > > Boot with ACPI enabled:
> > > > do the same pciconf stuff, then send me the output.
> > > 
> > > Done. I've sent you the files via email, and also uploaded them to the
> > > web page, in case anyone else wants them for some reason. Webpage:
> > > http://tingox.googlepages.com/aceraspireas5672andfreebsd
> > > 
> > > > After that, we should be able to correct your problem, either by
> > > > 1- hacking the DSDT,
> > > > OR
> > > > 2- hacking pcib.c.
> > > > (at your option).
> > > 
> > > I think hacking the DSDT is the more politically correct option, but
> > > either one will work for me.
> > 
> > Ok.  First remove device bge in your kernel config.  For example create a
> > config file with:
> > 
> > >>> BEGIN
> > include		GENERIC
> > ident		MYKERNEL (or what you like)
> > nodevice	bge
> > <<< END
> > 
> > After rebuilding and installing your kernel,
> > you can do something like that:
> > 
> > pciconf -w pci0:28:2 0xd8 0x04110008
> > 
> > pciconf -w -h pci0:28:2 0x58 0x0000
> > 
> > pciconf -w pci0:28:2 0x24 0x0001fff1
> > pciconf -w pci0:28:2 0x20 0xc830c830
> > 
> > pciconf -w -h pci0:28:2 0x04 0x0007
> > 
> > 
> > After that, you should be able to kldload if_bge and report back if
> > this work.  In that case I will modify the DSDT so that you won't to
> > worry about all of those pciconf stuff.
> 
> You really shouldn't change BAR registers directly.  First of all, the PCI
> bus driver already knows how to allocate resources for a BAR if it is set
> to 0 and when doing so will make sure to not allocate an address that
> conflicts with another device.  Secondly, a lot of PCI config registers are
> cached in the ivars by the PCI bus, so it may not even read the values you
> write into it (though writing those values will turn on the address decode
> for the device, and if another device is using that address things will go
> downhill quick).

You are indeed right.  The issue therefore seems to be, when ACPI is enabled,
then the PCI bus driver doesn't set up correctly a BAR.
FYI the bridge is one of the four PCIe embedded to an ICH-7.

-- 
Bruno Ducrot

--  Which is worse:  ignorance or apathy?
--  Don't know.  Don't care.


More information about the freebsd-mobile mailing list