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