diff mbox series

ps2kbd: default to scan enabled after reset

Message ID 20181021190721.2148-1-hpoussin@reactos.org
State New
Headers show
Series ps2kbd: default to scan enabled after reset | expand

Commit Message

Hervé Poussineau Oct. 21, 2018, 7:07 p.m. UTC
A check for scan_enabled has been added to ps2_keyboard_event in commit
143c04c7e0639e53086519592ead15d2556bfbf2 to prevent stream corruption.
This works well as long as operating system is resetting keyboard, or enabling it.

This fixes IBM 40p firmware, which doesn't bother sending KBD_CMD_RESET,
KBD_CMD_ENABLE or KBD_CMD_RESET_ENABLE before trying to use the keyboard.

Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
---
 hw/input/ps2.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Hervé Poussineau Nov. 10, 2018, 8:53 p.m. UTC | #1
Ping.

Le 21/10/2018 à 21:07, Hervé Poussineau a écrit :
> A check for scan_enabled has been added to ps2_keyboard_event in commit
> 143c04c7e0639e53086519592ead15d2556bfbf2 to prevent stream corruption.
> This works well as long as operating system is resetting keyboard, or enabling it.
> 
> This fixes IBM 40p firmware, which doesn't bother sending KBD_CMD_RESET,
> KBD_CMD_ENABLE or KBD_CMD_RESET_ENABLE before trying to use the keyboard.
> 
> Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
> ---
>   hw/input/ps2.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/input/ps2.c b/hw/input/ps2.c
> index fdfcadf9a1..eded4f0f8d 100644
> --- a/hw/input/ps2.c
> +++ b/hw/input/ps2.c
> @@ -938,7 +938,7 @@ static void ps2_kbd_reset(void *opaque)
>   
>       trace_ps2_kbd_reset(opaque);
>       ps2_common_reset(&s->common);
> -    s->scan_enabled = 0;
> +    s->scan_enabled = 1;
>       s->translate = 0;
>       s->scancode_set = 2;
>       s->modifiers = 0;
>
Philippe Mathieu-Daudé via Nov. 10, 2018, 9:25 p.m. UTC | #2
Hi Hervé,

On Sun, Oct 21, 2018 at 9:12 PM Hervé Poussineau <hpoussin@reactos.org> wrote:
> A check for scan_enabled has been added to ps2_keyboard_event in commit
> 143c04c7e0639e53086519592ead15d2556bfbf2 to prevent stream corruption.
> This works well as long as operating system is resetting keyboard, or enabling it.
>
> This fixes IBM 40p firmware, which doesn't bother sending KBD_CMD_RESET,
> KBD_CMD_ENABLE or KBD_CMD_RESET_ENABLE before trying to use the keyboard.
>
> Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
> ---
>  hw/input/ps2.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/input/ps2.c b/hw/input/ps2.c
> index fdfcadf9a1..eded4f0f8d 100644
> --- a/hw/input/ps2.c
> +++ b/hw/input/ps2.c
> @@ -938,7 +938,7 @@ static void ps2_kbd_reset(void *opaque)
>
>      trace_ps2_kbd_reset(opaque);
>      ps2_common_reset(&s->common);
> -    s->scan_enabled = 0;
> +    s->scan_enabled = 1;
>      s->translate = 0;
>      s->scancode_set = 2;
>      s->modifiers = 0;
> --
> 2.11.0
>

I think QOM'ifying this device would force a cleanup of those various
reset functions.
Then ps2_kbd_reset could call ps2_reset_keyboard.

In the meantime this patch makes sense as a bugfix.
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Regards,

Phil.
Hervé Poussineau Nov. 18, 2018, 10:09 a.m. UTC | #3
Ping again.

v3.0 didn't contain 143c04c7e0639e53086519592ead15d2556bfbf2, so this commit fixes a regression.

Le 10/11/2018 à 21:53, Hervé Poussineau a écrit :
> Ping.
> 
> Le 21/10/2018 à 21:07, Hervé Poussineau a écrit :
>> A check for scan_enabled has been added to ps2_keyboard_event in commit
>> 143c04c7e0639e53086519592ead15d2556bfbf2 to prevent stream corruption.
>> This works well as long as operating system is resetting keyboard, or enabling it.
>>
>> This fixes IBM 40p firmware, which doesn't bother sending KBD_CMD_RESET,
>> KBD_CMD_ENABLE or KBD_CMD_RESET_ENABLE before trying to use the keyboard.
>>
>> Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
>> ---
>>   hw/input/ps2.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/hw/input/ps2.c b/hw/input/ps2.c
>> index fdfcadf9a1..eded4f0f8d 100644
>> --- a/hw/input/ps2.c
>> +++ b/hw/input/ps2.c
>> @@ -938,7 +938,7 @@ static void ps2_kbd_reset(void *opaque)
>>       trace_ps2_kbd_reset(opaque);
>>       ps2_common_reset(&s->common);
>> -    s->scan_enabled = 0;
>> +    s->scan_enabled = 1;
>>       s->translate = 0;
>>       s->scancode_set = 2;
>>       s->modifiers = 0;
>>
>
Hervé Poussineau Nov. 22, 2018, 6:30 p.m. UTC | #4
Ping again.

Le 18/11/2018 à 11:09, Hervé Poussineau a écrit :
> Ping again.
> 
> v3.0 didn't contain 143c04c7e0639e53086519592ead15d2556bfbf2, so this commit fixes a regression.
> 
> Le 10/11/2018 à 21:53, Hervé Poussineau a écrit :
>> Ping.
>>
>> Le 21/10/2018 à 21:07, Hervé Poussineau a écrit :
>>> A check for scan_enabled has been added to ps2_keyboard_event in commit
>>> 143c04c7e0639e53086519592ead15d2556bfbf2 to prevent stream corruption.
>>> This works well as long as operating system is resetting keyboard, or enabling it.
>>>
>>> This fixes IBM 40p firmware, which doesn't bother sending KBD_CMD_RESET,
>>> KBD_CMD_ENABLE or KBD_CMD_RESET_ENABLE before trying to use the keyboard.
>>>
>>> Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
>>> ---
>>>   hw/input/ps2.c | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/hw/input/ps2.c b/hw/input/ps2.c
>>> index fdfcadf9a1..eded4f0f8d 100644
>>> --- a/hw/input/ps2.c
>>> +++ b/hw/input/ps2.c
>>> @@ -938,7 +938,7 @@ static void ps2_kbd_reset(void *opaque)
>>>       trace_ps2_kbd_reset(opaque);
>>>       ps2_common_reset(&s->common);
>>> -    s->scan_enabled = 0;
>>> +    s->scan_enabled = 1;
>>>       s->translate = 0;
>>>       s->scancode_set = 2;
>>>       s->modifiers = 0;
>>>
>>
> 
>
Gerd Hoffmann Nov. 23, 2018, 6:25 a.m. UTC | #5
On Thu, Nov 22, 2018 at 07:30:41PM +0100, Hervé Poussineau wrote:
> Ping again.

Queued up for 3.1

thanks,
  Gerd
diff mbox series

Patch

diff --git a/hw/input/ps2.c b/hw/input/ps2.c
index fdfcadf9a1..eded4f0f8d 100644
--- a/hw/input/ps2.c
+++ b/hw/input/ps2.c
@@ -938,7 +938,7 @@  static void ps2_kbd_reset(void *opaque)
 
     trace_ps2_kbd_reset(opaque);
     ps2_common_reset(&s->common);
-    s->scan_enabled = 0;
+    s->scan_enabled = 1;
     s->translate = 0;
     s->scancode_set = 2;
     s->modifiers = 0;