ACPI Attach (acpi_ibm) stops mouse from working
John Baldwin
jhb at freebsd.org
Thu Oct 25 10:04:20 PDT 2007
On Wednesday 24 October 2007 06:59:24 pm Tom Judge wrote:
> John Baldwin wrote:
> > On Monday 22 October 2007 12:04:52 pm Tom Judge wrote:
> >> Hi,
> >>
> >>
> >> I have recently setup an IBM/Lenovo T43 with RELENG_7 as of mid last
> >> week, however I have a problem with the acpi_ibm module.
> >>
> >> If I add acpi_ibm_load="YES" to loader.conf I get the following message
> >> during boot:
> >>
> >> psm0: unable to allocate IRQ
> >>
> >> This is followed by a message stating that the acpi_ibm module has
> >> attached to IRQ 12.
> >>
> >> If I remove this module from loader.conf and boot the system the mouse
> >> attaches and works as expected. If I then kldload acpi_ibm the module
> >> attaches to acpi0.
> >>
> >>
> >> Is there any way to make this work without loading the acpi module after
> >> boot?
> >
> > Can you provide your acpidump as well as devinfo -rv output from both
cases?
> > (i.e. when it is loaded at boot and when it is kldloaded after boot)
> >
> Hi,
>
> After spending many hours trying to reproduce this I have narrowed it
> down to the order in which the modules are loaded (and by nature listed
> in /boot/loader.conf). It seems that the psm will only attach when
> acpi_ibm is listed at the end of loader.conf.
>
> I have run a sequence of tests and gathered the following data
>
> acpidump -dt
> devinfo -rv
> /var/run/dmesg.boot
> Kernel config (T43)
>
> The file names are in the format {data}-{acpi_ibm_load line number in
> loader.conf}-{good=psm attached/bad=psm failed to attach}
>
> The files are avaliable here: http://www.tomjudge.com/tmp/debug.tgz
>
> If you want any more information please let me know.
You BIOS makes your PS/2 mouse show up as an acpi_ibm(4) device which is your
problem. acpi_ibm(4) looks for two different IDs:
static char *ibm_ids[] = {"IBM0057", "IBM0068", NULL};
Your hotkey device shows up as "IBM0068":
Device (HKEY)
{
Name (_HID, EisaId ("IBM0068"))
...
}
You mouse has a split personality and picks the "IBM" ID during boot via the
MOU.MHID() method:
Scope (\_SB)
{
Method (_INI, 0, NotSerialized)
{
...
\_SB.PCI0.LPC.MOU.MHID ()
...
}
...
Device (MOU)
{
Name (_HID, EisaId ("IBM3780"))
Name (_CID, 0x130FD041)
Name (_CRS, ResourceTemplate ()
{
IRQNoFlags ()
{12}
})
Method (MHID, 0, NotSerialized)
{
If (\_SB.PCI0.LPC.PADD)
{
Store (0x80374D24, _HID)
}
Else
{
Store (0x57004D24, _HID)
}
}
}
...
}
So, it starts out as "IBM3780", but if 'PADD' is zero (maybe changed via a
BIOS setting?) it uses "IBM0057" which causes acpi_ibm(4) to attach to this
device if it sees it before the psm(4) driver sees it.
The linux acpi_ibm driver only attaches to IBM0068 FWIW. You can try
removing "IBM0057" from the ID list in acpi_ibm.c, that should fix your mouse
issue.
--
John Baldwin
More information about the freebsd-mobile
mailing list