2020-10-07 21:21:29

by Paul Menzel

[permalink] [raw]
Subject: i8042_init: PS/2 mouse not detected with ACPIPnP/PnPBIOS

Dear Linux folks,


On the Asus F2A85-M PRO Linux 5.9-rc8 (and previous versions) does not
recognize a plugged in PS/2 mouse using the Plug & Play method. The PS/2
keyboard is detected fine, and using `i8042.nopnp`, the PS/2 mouse also
works.

> [ 1.035915] calling i8042_init+0x0/0x42d @ 1
> [ 1.035947] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
> [ 1.035948] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
> [ 1.036589] serio: i8042 KBD port at 0x60,0x64 irq 1
> [ 1.036621] initcall i8042_init+0x0/0x42d returned 0 after 687 usecs

But, the DSDT includes the “mouse device”. From

acpidump > dump.bin; acpixtract dump.bin; iasl -d *dat; more dsdt.dsl

we get

Device (PS2M)
{
Name (_HID, EisaId ("PNP0F03") /* Microsoft
PS/2-style Mouse */) // _HID: Hardware ID
Name (_CID, EisaId ("PNP0F13") /* PS/2 Mouse */)
// _CID: Compatible ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((IOST & 0x4000))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}

and the identifiers PNP0F03 and PNP0F13 are both listed in the array
`pnp_aux_devids[]`. But adding print statements to
`i8042_pnp_aux_probe()`, I do not see them, so the function does not
seem to be called.

Hints for further debugging are much appreciated.


Kind regards,

Paul



2020-10-07 22:18:26

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: i8042_init: PS/2 mouse not detected with ACPIPnP/PnPBIOS

Hi Paul,

On Wed, Oct 07, 2020 at 11:18:41PM +0200, Paul Menzel wrote:
> Dear Linux folks,
>
>
> On the Asus F2A85-M PRO Linux 5.9-rc8 (and previous versions) does not
> recognize a plugged in PS/2 mouse using the Plug & Play method. The PS/2
> keyboard is detected fine, and using `i8042.nopnp`, the PS/2 mouse also
> works.
>
> > [ 1.035915] calling i8042_init+0x0/0x42d @ 1
> > [ 1.035947] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
> > [ 1.035948] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
> > [ 1.036589] serio: i8042 KBD port at 0x60,0x64 irq 1
> > [ 1.036621] initcall i8042_init+0x0/0x42d returned 0 after 687 usecs
>
> But, the DSDT includes the “mouse device”. From
>
> acpidump > dump.bin; acpixtract dump.bin; iasl -d *dat; more dsdt.dsl
>
> we get
>
> Device (PS2M)
> {
> Name (_HID, EisaId ("PNP0F03") /* Microsoft PS/2-style
> Mouse */) // _HID: Hardware ID
> Name (_CID, EisaId ("PNP0F13") /* PS/2 Mouse */) //
> _CID: Compatible ID
> Method (_STA, 0, NotSerialized) // _STA: Status
> {
> If ((IOST & 0x4000))
> {
> Return (0x0F)
> }
> Else
> {
> Return (Zero)
> }
> }
>
> and the identifiers PNP0F03 and PNP0F13 are both listed in the array
> `pnp_aux_devids[]`. But adding print statements to `i8042_pnp_aux_probe()`,
> I do not see them, so the function does not seem to be called.

My guess is that _STA returns 0 indicating that the device is not
present. I would try tracking where IOST is being set and figuring out
why it does not have mouse bit enabled.

Thanks.

--
Dmitry

2020-10-10 23:11:41

by Paul Menzel

[permalink] [raw]
Subject: Re: i8042_init: PS/2 mouse not detected with ACPIPnP/PnPBIOS

Dear Dmitry, dear Rafael, dear Len,


Am 08.10.20 um 00:16 schrieb Dmitry Torokhov:

> On Wed, Oct 07, 2020 at 11:18:41PM +0200, Paul Menzel wrote:

>> On the Asus F2A85-M PRO Linux 5.9-rc8 (and previous versions) does not
>> recognize a plugged in PS/2 mouse using the Plug & Play method. The PS/2
>> keyboard is detected fine, and using `i8042.nopnp`, the PS/2 mouse also
>> works.
>>
>>> [ 1.035915] calling i8042_init+0x0/0x42d @ 1
>>> [ 1.035947] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
>>> [ 1.035948] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
>>> [ 1.036589] serio: i8042 KBD port at 0x60,0x64 irq 1
>>> [ 1.036621] initcall i8042_init+0x0/0x42d returned 0 after 687 usecs
>>
>> But, the DSDT includes the “mouse device”. From
>>
>> acpidump > dump.bin; acpixtract dump.bin; iasl -d *dat; more dsdt.dsl
>>
>> we get
>>
>> Device (PS2M)
>> {
>> Name (_HID, EisaId ("PNP0F03") /* Microsoft PS/2-style Mouse */) // _HID: Hardware ID
>> Name (_CID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _CID: Compatible ID
>> Method (_STA, 0, NotSerialized) // _STA: Status
>> {
>> If ((IOST & 0x4000))
>> {
>> Return (0x0F)
>> }
>> Else
>> {
>> Return (Zero)
>> }
>> }
>>
>> and the identifiers PNP0F03 and PNP0F13 are both listed in the array
>> `pnp_aux_devids[]`. But adding print statements to `i8042_pnp_aux_probe()`,
>> I do not see them, so the function does not seem to be called.
>
> My guess is that _STA returns 0 indicating that the device is not
> present. I would try tracking where IOST is being set and figuring out
> why it does not have mouse bit enabled.

Does the ACPI subsystem allow to track, how ACPI variables(?) like IOST
are read and set?


Kind regards,

Paul

2020-10-12 10:43:58

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: i8042_init: PS/2 mouse not detected with ACPIPnP/PnPBIOS

On Sun, Oct 11, 2020 at 1:08 AM Paul Menzel <[email protected]> wrote:
>
> Dear Dmitry, dear Rafael, dear Len,
>
>
> Am 08.10.20 um 00:16 schrieb Dmitry Torokhov:
>
> > On Wed, Oct 07, 2020 at 11:18:41PM +0200, Paul Menzel wrote:
>
> >> On the Asus F2A85-M PRO Linux 5.9-rc8 (and previous versions) does not
> >> recognize a plugged in PS/2 mouse using the Plug & Play method. The PS/2
> >> keyboard is detected fine, and using `i8042.nopnp`, the PS/2 mouse also
> >> works.
> >>
> >>> [ 1.035915] calling i8042_init+0x0/0x42d @ 1
> >>> [ 1.035947] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
> >>> [ 1.035948] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
> >>> [ 1.036589] serio: i8042 KBD port at 0x60,0x64 irq 1
> >>> [ 1.036621] initcall i8042_init+0x0/0x42d returned 0 after 687 usecs
> >>
> >> But, the DSDT includes the “mouse device”. From
> >>
> >> acpidump > dump.bin; acpixtract dump.bin; iasl -d *dat; more dsdt.dsl
> >>
> >> we get
> >>
> >> Device (PS2M)
> >> {
> >> Name (_HID, EisaId ("PNP0F03") /* Microsoft PS/2-style Mouse */) // _HID: Hardware ID
> >> Name (_CID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _CID: Compatible ID
> >> Method (_STA, 0, NotSerialized) // _STA: Status
> >> {
> >> If ((IOST & 0x4000))
> >> {
> >> Return (0x0F)
> >> }
> >> Else
> >> {
> >> Return (Zero)
> >> }
> >> }
> >>
> >> and the identifiers PNP0F03 and PNP0F13 are both listed in the array
> >> `pnp_aux_devids[]`. But adding print statements to `i8042_pnp_aux_probe()`,
> >> I do not see them, so the function does not seem to be called.
> >
> > My guess is that _STA returns 0 indicating that the device is not
> > present. I would try tracking where IOST is being set and figuring out
> > why it does not have mouse bit enabled.
>
> Does the ACPI subsystem allow to track, how ACPI variables(?) like IOST
> are read and set?

My guess would be that IOST is a field in an operation region which
would indicate that it is initialized by the bootstrap part of the
BIOS.

2020-10-12 10:53:53

by Paul Menzel

[permalink] [raw]
Subject: Re: i8042_init: PS/2 mouse not detected with ACPIPnP/PnPBIOS

Dear Rafael,


Am 12.10.20 um 12:39 schrieb Rafael J. Wysocki:
> On Sun, Oct 11, 2020 at 1:08 AM Paul Menzel <[email protected]> wrote:
>>
>> Dear Dmitry, dear Rafael, dear Len,
>>
>>
>> Am 08.10.20 um 00:16 schrieb Dmitry Torokhov:
>>
>>> On Wed, Oct 07, 2020 at 11:18:41PM +0200, Paul Menzel wrote:
>>
>>>> On the Asus F2A85-M PRO Linux 5.9-rc8 (and previous versions) does not
>>>> recognize a plugged in PS/2 mouse using the Plug & Play method. The PS/2
>>>> keyboard is detected fine, and using `i8042.nopnp`, the PS/2 mouse also
>>>> works.
>>>>
>>>>> [ 1.035915] calling i8042_init+0x0/0x42d @ 1
>>>>> [ 1.035947] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
>>>>> [ 1.035948] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
>>>>> [ 1.036589] serio: i8042 KBD port at 0x60,0x64 irq 1
>>>>> [ 1.036621] initcall i8042_init+0x0/0x42d returned 0 after 687 usecs
>>>>
>>>> But, the DSDT includes the “mouse device”. From
>>>>
>>>> acpidump > dump.bin; acpixtract dump.bin; iasl -d *dat; more dsdt.dsl
>>>>
>>>> we get
>>>>
>>>> Device (PS2M)
>>>> {
>>>> Name (_HID, EisaId ("PNP0F03") /* Microsoft PS/2-style Mouse */) // _HID: Hardware ID
>>>> Name (_CID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _CID: Compatible ID
>>>> Method (_STA, 0, NotSerialized) // _STA: Status
>>>> {
>>>> If ((IOST & 0x4000))
>>>> {
>>>> Return (0x0F)
>>>> }
>>>> Else
>>>> {
>>>> Return (Zero)
>>>> }
>>>> }
>>>>
>>>> and the identifiers PNP0F03 and PNP0F13 are both listed in the array
>>>> `pnp_aux_devids[]`. But adding print statements to `i8042_pnp_aux_probe()`,
>>>> I do not see them, so the function does not seem to be called.
>>>
>>> My guess is that _STA returns 0 indicating that the device is not
>>> present. I would try tracking where IOST is being set and figuring out
>>> why it does not have mouse bit enabled.
>>
>> Does the ACPI subsystem allow to track, how ACPI variables(?) like IOST
>> are read and set?
>
> My guess would be that IOST is a field in an operation region which
> would indicate that it is initialized by the bootstrap part of the
> BIOS.

Thank you for your answer. But how can I verify that? Is there a Linux
kernel parameter, that would print it?


Kind regards,

Paul

2020-10-12 20:47:36

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: i8042_init: PS/2 mouse not detected with ACPIPnP/PnPBIOS

On Mon, Oct 12, 2020 at 12:50 PM Paul Menzel <[email protected]> wrote:
>
> Dear Rafael,
>
>
> Am 12.10.20 um 12:39 schrieb Rafael J. Wysocki:
> > On Sun, Oct 11, 2020 at 1:08 AM Paul Menzel <[email protected]> wrote:
> >>
> >> Dear Dmitry, dear Rafael, dear Len,
> >>
> >>
> >> Am 08.10.20 um 00:16 schrieb Dmitry Torokhov:
> >>
> >>> On Wed, Oct 07, 2020 at 11:18:41PM +0200, Paul Menzel wrote:
> >>
> >>>> On the Asus F2A85-M PRO Linux 5.9-rc8 (and previous versions) does not
> >>>> recognize a plugged in PS/2 mouse using the Plug & Play method. The PS/2
> >>>> keyboard is detected fine, and using `i8042.nopnp`, the PS/2 mouse also
> >>>> works.
> >>>>
> >>>>> [ 1.035915] calling i8042_init+0x0/0x42d @ 1
> >>>>> [ 1.035947] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
> >>>>> [ 1.035948] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
> >>>>> [ 1.036589] serio: i8042 KBD port at 0x60,0x64 irq 1
> >>>>> [ 1.036621] initcall i8042_init+0x0/0x42d returned 0 after 687 usecs
> >>>>
> >>>> But, the DSDT includes the “mouse device”. From
> >>>>
> >>>> acpidump > dump.bin; acpixtract dump.bin; iasl -d *dat; more dsdt.dsl
> >>>>
> >>>> we get
> >>>>
> >>>> Device (PS2M)
> >>>> {
> >>>> Name (_HID, EisaId ("PNP0F03") /* Microsoft PS/2-style Mouse */) // _HID: Hardware ID
> >>>> Name (_CID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _CID: Compatible ID
> >>>> Method (_STA, 0, NotSerialized) // _STA: Status
> >>>> {
> >>>> If ((IOST & 0x4000))
> >>>> {
> >>>> Return (0x0F)
> >>>> }
> >>>> Else
> >>>> {
> >>>> Return (Zero)
> >>>> }
> >>>> }
> >>>>
> >>>> and the identifiers PNP0F03 and PNP0F13 are both listed in the array
> >>>> `pnp_aux_devids[]`. But adding print statements to `i8042_pnp_aux_probe()`,
> >>>> I do not see them, so the function does not seem to be called.
> >>>
> >>> My guess is that _STA returns 0 indicating that the device is not
> >>> present. I would try tracking where IOST is being set and figuring out
> >>> why it does not have mouse bit enabled.
> >>
> >> Does the ACPI subsystem allow to track, how ACPI variables(?) like IOST
> >> are read and set?
> >
> > My guess would be that IOST is a field in an operation region which
> > would indicate that it is initialized by the bootstrap part of the
> > BIOS.
>
> Thank you for your answer. But how can I verify that?

Inspecting the ACPI tables from the system in question could help you
to find out whether or not IOST really is a field in an operation
region, but its initial value may not be possible to determine this
way.

> Is there a Linux kernel parameter, that would print it?

Not that I know of.

2020-10-13 17:22:40

by Paul Menzel

[permalink] [raw]
Subject: Re: i8042_init: PS/2 mouse not detected with ACPIPnP/PnPBIOS

Dear Rafael, dear Dmitry,


Am 12.10.20 um 13:00 schrieb Rafael J. Wysocki:
> On Mon, Oct 12, 2020 at 12:50 PM Paul Menzel wrote:

>> Am 12.10.20 um 12:39 schrieb Rafael J. Wysocki:
>>> On Sun, Oct 11, 2020 at 1:08 AM Paul Menzel wrote:

>>>> Am 08.10.20 um 00:16 schrieb Dmitry Torokhov:
>>>>
>>>>> On Wed, Oct 07, 2020 at 11:18:41PM +0200, Paul Menzel wrote:
>>>>
>>>>>> On the Asus F2A85-M PRO Linux 5.9-rc8 (and previous versions) does not
>>>>>> recognize a plugged in PS/2 mouse using the Plug & Play method. The PS/2
>>>>>> keyboard is detected fine, and using `i8042.nopnp`, the PS/2 mouse also
>>>>>> works.
>>>>>>
>>>>>>> [ 1.035915] calling i8042_init+0x0/0x42d @ 1
>>>>>>> [ 1.035947] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
>>>>>>> [ 1.035948] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
>>>>>>> [ 1.036589] serio: i8042 KBD port at 0x60,0x64 irq 1
>>>>>>> [ 1.036621] initcall i8042_init+0x0/0x42d returned 0 after 687 usecs
>>>>>>
>>>>>> But, the DSDT includes the “mouse device”. From
>>>>>>
>>>>>> acpidump > dump.bin; acpixtract dump.bin; iasl -d *dat; more dsdt.dsl
>>>>>>
>>>>>> we get
>>>>>>
>>>>>> Device (PS2M)
>>>>>> {
>>>>>> Name (_HID, EisaId ("PNP0F03") /* Microsoft PS/2-style Mouse */) // _HID: Hardware ID
>>>>>> Name (_CID, EisaId ("PNP0F13") /* PS/2 Mouse */) // _CID: Compatible ID
>>>>>> Method (_STA, 0, NotSerialized) // _STA: Status
>>>>>> {
>>>>>> If ((IOST & 0x4000))
>>>>>> {
>>>>>> Return (0x0F)
>>>>>> }
>>>>>> Else
>>>>>> {
>>>>>> Return (Zero)
>>>>>> }
>>>>>> }
>>>>>>
>>>>>> and the identifiers PNP0F03 and PNP0F13 are both listed in the array
>>>>>> `pnp_aux_devids[]`. But adding print statements to `i8042_pnp_aux_probe()`,
>>>>>> I do not see them, so the function does not seem to be called.
>>>>>
>>>>> My guess is that _STA returns 0 indicating that the device is not
>>>>> present. I would try tracking where IOST is being set and figuring out
>>>>> why it does not have mouse bit enabled.
>>>>
>>>> Does the ACPI subsystem allow to track, how ACPI variables(?) like IOST
>>>> are read and set?
>>>
>>> My guess would be that IOST is a field in an operation region which
>>> would indicate that it is initialized by the bootstrap part of the
>>> BIOS.
>>
>> Thank you for your answer. But how can I verify that?
>
> Inspecting the ACPI tables from the system in question could help you
> to find out whether or not IOST really is a field in an operation
> region, but its initial value may not be possible to determine this
> way.
>
>> Is there a Linux kernel parameter, that would print it?
>
> Not that I know of.

I created an issue in the Linux kernel bugtracker [1] and attached the
output of `acpidump` there.

Could

If ((IOST & 0x4000))

versus

If ((IOST & 0x0400))

be a typo?


Kind regards,

Paul


[1]: https://bugzilla.kernel.org/show_bug.cgi?id=209657

2020-10-13 17:33:09

by Wysocki, Rafael J

[permalink] [raw]
Subject: Re: i8042_init: PS/2 mouse not detected with ACPIPnP/PnPBIOS

On 10/13/2020 5:00 PM, Paul Menzel wrote:
> Dear Rafael, dear Dmitry,
>
>
> Am 12.10.20 um 13:00 schrieb Rafael J. Wysocki:
>> On Mon, Oct 12, 2020 at 12:50 PM Paul Menzel wrote:
>
>>> Am 12.10.20 um 12:39 schrieb Rafael J. Wysocki:
>>>> On Sun, Oct 11, 2020 at 1:08 AM Paul Menzel wrote:
>
>>>>> Am 08.10.20 um 00:16 schrieb Dmitry Torokhov:
>>>>>
>>>>>> On Wed, Oct 07, 2020 at 11:18:41PM +0200, Paul Menzel wrote:
>>>>>
>>>>>>> On the Asus F2A85-M PRO Linux 5.9-rc8 (and previous versions)
>>>>>>> does not
>>>>>>> recognize a plugged in PS/2 mouse using the Plug & Play method.
>>>>>>> The PS/2
>>>>>>> keyboard is detected fine, and using `i8042.nopnp`, the PS/2
>>>>>>> mouse also
>>>>>>> works.
>>>>>>>
>>>>>>>> [    1.035915] calling i8042_init+0x0/0x42d @ 1
>>>>>>>> [    1.035947] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at
>>>>>>>> 0x60,0x64 irq 1
>>>>>>>> [    1.035948] i8042: PNP: PS/2 appears to have AUX port
>>>>>>>> disabled, if this is incorrect please boot with i8042.nopnp
>>>>>>>> [    1.036589] serio: i8042 KBD port at 0x60,0x64 irq 1
>>>>>>>> [    1.036621] initcall i8042_init+0x0/0x42d returned 0 after
>>>>>>>> 687 usecs
>>>>>>>
>>>>>>> But, the DSDT includes the “mouse device”. From
>>>>>>>
>>>>>>>        acpidump > dump.bin; acpixtract dump.bin; iasl -d *dat;
>>>>>>> more dsdt.dsl
>>>>>>>
>>>>>>> we get
>>>>>>>
>>>>>>>                    Device (PS2M)
>>>>>>>                    {
>>>>>>>                        Name (_HID, EisaId ("PNP0F03") /*
>>>>>>> Microsoft PS/2-style Mouse */)  // _HID: Hardware ID
>>>>>>>                        Name (_CID, EisaId ("PNP0F13") /* PS/2
>>>>>>> Mouse */) // _CID: Compatible ID
>>>>>>>                        Method (_STA, 0, NotSerialized)  // _STA:
>>>>>>> Status
>>>>>>>                        {
>>>>>>>                            If ((IOST & 0x4000))
>>>>>>>                            {
>>>>>>>                                Return (0x0F)
>>>>>>>                            }
>>>>>>>                            Else
>>>>>>>                            {
>>>>>>>                                Return (Zero)
>>>>>>>                            }
>>>>>>>                        }
>>>>>>>
>>>>>>> and the identifiers PNP0F03 and PNP0F13 are both listed in the
>>>>>>> array
>>>>>>> `pnp_aux_devids[]`. But adding print statements to
>>>>>>> `i8042_pnp_aux_probe()`,
>>>>>>> I do not see them, so the function does not seem to be called.
>>>>>>
>>>>>> My guess is that _STA returns 0 indicating that the device is not
>>>>>> present. I would try tracking where IOST is being set and
>>>>>> figuring out
>>>>>> why it does not have mouse bit enabled.
>>>>>
>>>>> Does the ACPI subsystem allow to track, how ACPI variables(?) like
>>>>> IOST
>>>>> are read and set?
>>>>
>>>> My guess would be that IOST is a field in an operation region which
>>>> would indicate that it is initialized by the bootstrap part of the
>>>> BIOS.
>>>
>>> Thank you for your answer. But how can I verify that?
>>
>> Inspecting the ACPI tables from the system in question could help you
>> to find out whether or not IOST really is a field in an operation
>> region, but its initial value may not be possible to determine this
>> way.
>>
>>> Is there a Linux kernel parameter, that would print it?
>>
>> Not that I know of.
>
> I created an issue in the Linux kernel bugtracker [1] and attached the
> output of `acpidump` there.
>
> Could
>
>     If ((IOST & 0x4000))
>
> versus
>
>     If ((IOST & 0x0400))
>
> be a typo?
>
Yes, it could.