All of lore.kernel.org
 help / color / mirror / Atom feed
From: Helge Deller <deller@gmx.de>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	richard.henderson@linaro.org, mst@redhat.com,
	pbonzini@redhat.com, peter.maydell@linaro.org,
	hpoussin@reactos.org, aleksandar.rikalo@syrmia.com,
	f4bug@amsat.org, jiaxun.yang@flygoat.com, qemu-arm@nongnu.org,
	qemu-devel@nongnu.org
Subject: Re: [PATCH 00/50] PS2 device QOMification - part 1
Date: Tue, 24 May 2022 20:25:23 +0200	[thread overview]
Message-ID: <31ca8828-9b69-42da-7e0a-d1e3c5db2f08@gmx.de> (raw)
In-Reply-To: <20220522181836.864-1-mark.cave-ayland@ilande.co.uk>

Hi Mark,

On 5/22/22 20:17, Mark Cave-Ayland wrote:
> This series came about when looking at improving the LASI PS2 device for
> the HPPA machine: there were improvements that I was keen to make, but
> was restricted because the PS2 device(s) weren't QOMified.
>
> Trying to do everything in a single patchset would be a very large series
> indeed, so here is part 1 of the series which does the basic QOMification
> process and consists of:
>
> - QOMifying the basic PS2, PS2 keyboard and PS2 mouse types
>
> - Moving any functionality that exists in a global device init function
>   directly into the relevant device, so that all device behaviour is
>   configured using qdev properties and QOM
>
> - Introducing a new I8042_MMIO type for use by the MIPS magnum machine
>
> - Switch all PS2 devices to use qdev gpios for IRQs instead of using the
>   update_irq() callback function along with the update_arg opaque
>
> Once this work has been done, a follow-up part 2 series will finish the
> remainder of the work which involves i) improving the QOM object model
> now QOMification is complete and ii) removing the legacy global device
> init functions for PS2 and related devices.
>
> Testing for this series has comprised of booting a machine with each type
> of PS2 device and confirming that i) the machine responds to keypresses
> when using a graphical console and ii) completing a successful migration
> from a machine with this series applies back to a machine running latest
> git master. The test machines I used were:
>
> - qemu-system-x86_64 -M pc for the I8042 device
> - qemu-system-hppa for the LASIPS2 device
> - qemu-system-arm -M versatilepb for the PL050 device
> - qemu-system-mips64el -M magnum for the I8042_MMIO device
>
> Finally the QOM tree changes caused by QOMification of the PS2 devices
> trigger a failure due to a bug in the bios-tables-test qtest for subtest
> /x86_64/acpi/q35/viot. This can be fixed by applying the series at
> https://lists.gnu.org/archive/html/qemu-devel/2022-05/msg04266.html
> "hw/acpi/viot: generate stable VIOT ACPI tables" first.
>
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>

Thanks a lot for this QOMifying and cleanup work!
I've sucessfully tested it with qemu-system-hppa for HP-UX 10 and 11.

You may add either or both of:

Acked-by: Helge Deller <deller@gmx.de>
Tested-by: Helge Deller <deller@gmx.de>

Thank you!
Helge


>
>
> Mark Cave-Ayland (50):
>   ps2: checkpatch fixes
>   ps2: QOMify PS2State
>   ps2: QOMify PS2KbdState
>   ps2: QOMify PS2MouseState
>   ps2: move QOM type definitions from ps2.c to ps2.h
>   ps2: improve function prototypes in ps2.c and ps2.h
>   ps2: introduce PS2DeviceClass
>   ps2: implement ps2_reset() for the PS2_DEVICE QOM type based upon
>     ps2_common_reset()
>   ps2: remove duplicate setting of scancode_set in ps2_kbd_init()
>   ps2: implement ps2_kbd_realize() and use it to register
>     ps2_keyboard_handler
>   ps2: implement ps2_mouse_realize() and use it to register
>     ps2_mouse_handler
>   ps2: don't use vmstate_register() in ps2_kbd_init()
>   ps2: don't use vmstate_register() in ps2_mouse_init()
>   pl050: checkpatch fixes
>   pl050: split pl050_update_irq() into separate pl050_set_irq() and
>     pl050_update_irq() functions
>   lasips2: spacing fixes
>   lasips2: rename ps2dev_update_irq() to lasips2_port_set_irq()
>   pckbd: checkpatch fixes
>   pckbd: move KBDState from pckbd.c to i8042.h
>   pckbd: move ISAKBDState from pckbd.c to i8042.h
>   pckbd: introduce new I8042_MMIO QOM type
>   pckbd: implement i8042_mmio_reset() for I8042_MMIO device
>   pckbd: add mask qdev property to I8042_MMIO device
>   pckbd: add size qdev property to I8042_MMIO device
>   pckbd: implement i8042_mmio_realize() function
>   pckbd: implement i8042_mmio_init() function
>   pckbd: alter i8042_mm_init() to return a I8042_MMIO device
>   pckbd: move mapping of I8042_MMIO registers to MIPS magnum machine
>   pckbd: more vmstate_register() from i8042_mm_init() to
>     i8042_mmio_realize()
>   pckbd: move ps2_kbd_init() and ps2_mouse_init() to
>     i8042_mmio_realize()
>   ps2: make ps2_raise_irq() function static
>   ps2: use ps2_raise_irq() instead of calling update_irq() directly
>   ps2: introduce ps2_lower_irq() instead of calling update_irq()
>     directly
>   ps2: add gpio for output IRQ and optionally use it in ps2_raise_irq()
>     and ps2_lower_irq()
>   pckbd: replace irq_kbd and irq_mouse with qemu_irq array in KBDState
>   pl050: switch over from update_irq() function to PS2 device gpio
>   lasips2: QOMify LASIPS2State
>   lasips2: move lasips2 QOM types from lasips2.c to lasips2.h
>   lasips2: rename lasips2_init() to lasips2_initfn() and update it to
>     return the LASIPS2 device
>   lasips2: implement lasips2_init() function
>   lasips2: move mapping of LASIPS2 registers to HPPA machine
>   lasips2: move initialisation of PS2 ports from lasi_initfn() to
>     lasi_init()
>   lasips2: add base property
>   lasips2: implement lasips2_realize()
>   lasips2: use qdev gpio for output IRQ
>   lasips2: switch over from update_irq() function to PS2 device gpio
>   pckbd: switch I8042_MMIO device from update_irq() function to PS2
>     device gpio
>   pckbd: add i8042_reset() function to I8042 device
>   pckbd: switch I8042 device from update_irq() function to PS2 device
>     gpio
>   ps2: remove update_irq() function and update_arg parameter
>
>  hw/hppa/machine.c          |  11 +-
>  hw/input/lasips2.c         | 110 +++++---
>  hw/input/pckbd.c           | 321 ++++++++++++++++--------
>  hw/input/pl050.c           |  50 ++--
>  hw/input/ps2.c             | 500 +++++++++++++++++++++----------------
>  hw/mips/jazz.c             |  11 +-
>  include/hw/input/i8042.h   |  54 +++-
>  include/hw/input/lasips2.h |  27 +-
>  include/hw/input/ps2.h     |  79 +++++-
>  9 files changed, 775 insertions(+), 388 deletions(-)
>



  parent reply	other threads:[~2022-05-24 18:28 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-22 18:17 [PATCH 00/50] PS2 device QOMification - part 1 Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 01/50] ps2: checkpatch fixes Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 02/50] ps2: QOMify PS2State Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 03/50] ps2: QOMify PS2KbdState Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 04/50] ps2: QOMify PS2MouseState Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 05/50] ps2: move QOM type definitions from ps2.c to ps2.h Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 06/50] ps2: improve function prototypes in ps2.c and ps2.h Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 07/50] ps2: introduce PS2DeviceClass Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 08/50] ps2: implement ps2_reset() for the PS2_DEVICE QOM type based upon ps2_common_reset() Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 09/50] ps2: remove duplicate setting of scancode_set in ps2_kbd_init() Mark Cave-Ayland
2022-05-22 22:22   ` Philippe Mathieu-Daudé via
2022-05-24 17:19     ` Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 10/50] ps2: implement ps2_kbd_realize() and use it to register ps2_keyboard_handler Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 11/50] ps2: implement ps2_mouse_realize() and use it to register ps2_mouse_handler Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 12/50] ps2: don't use vmstate_register() in ps2_kbd_init() Mark Cave-Ayland
2022-05-22 18:17 ` [PATCH 13/50] ps2: don't use vmstate_register() in ps2_mouse_init() Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 14/50] pl050: checkpatch fixes Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 15/50] pl050: split pl050_update_irq() into separate pl050_set_irq() and pl050_update_irq() functions Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 16/50] lasips2: spacing fixes Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 17/50] lasips2: rename ps2dev_update_irq() to lasips2_port_set_irq() Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 18/50] pckbd: checkpatch fixes Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 19/50] pckbd: move KBDState from pckbd.c to i8042.h Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 20/50] pckbd: move ISAKBDState " Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 21/50] pckbd: introduce new I8042_MMIO QOM type Mark Cave-Ayland
2022-06-09 10:45   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 22/50] pckbd: implement i8042_mmio_reset() for I8042_MMIO device Mark Cave-Ayland
2022-06-09 10:49   ` Peter Maydell
2022-06-10  6:53     ` Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 23/50] pckbd: add mask qdev property to " Mark Cave-Ayland
2022-06-09 10:49   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 24/50] pckbd: add size " Mark Cave-Ayland
2022-06-09 10:50   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 25/50] pckbd: implement i8042_mmio_realize() function Mark Cave-Ayland
2022-06-09 10:52   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 26/50] pckbd: implement i8042_mmio_init() function Mark Cave-Ayland
2022-06-09 10:53   ` Peter Maydell
2022-06-10  6:57     ` Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 27/50] pckbd: alter i8042_mm_init() to return a I8042_MMIO device Mark Cave-Ayland
2022-06-09 10:58   ` Peter Maydell
2022-06-10  7:04     ` Mark Cave-Ayland
2022-06-24 13:28       ` Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 28/50] pckbd: move mapping of I8042_MMIO registers to MIPS magnum machine Mark Cave-Ayland
2022-06-09 10:59   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 29/50] pckbd: more vmstate_register() from i8042_mm_init() to i8042_mmio_realize() Mark Cave-Ayland
2022-05-23  6:34   ` Hervé Poussineau
2022-05-24 17:24     ` Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 30/50] pckbd: move ps2_kbd_init() and ps2_mouse_init() " Mark Cave-Ayland
2022-06-09 11:00   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 31/50] ps2: make ps2_raise_irq() function static Mark Cave-Ayland
2022-06-09 11:01   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 32/50] ps2: use ps2_raise_irq() instead of calling update_irq() directly Mark Cave-Ayland
2022-06-09 11:01   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 33/50] ps2: introduce ps2_lower_irq() " Mark Cave-Ayland
2022-06-09 11:01   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 34/50] ps2: add gpio for output IRQ and optionally use it in ps2_raise_irq() and ps2_lower_irq() Mark Cave-Ayland
2022-06-09 11:05   ` Peter Maydell
2022-06-10  7:09     ` Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 35/50] pckbd: replace irq_kbd and irq_mouse with qemu_irq array in KBDState Mark Cave-Ayland
2022-06-09 11:06   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 36/50] pl050: switch over from update_irq() function to PS2 device gpio Mark Cave-Ayland
2022-06-09 11:08   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 37/50] lasips2: QOMify LASIPS2State Mark Cave-Ayland
2022-06-09 11:09   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 38/50] lasips2: move lasips2 QOM types from lasips2.c to lasips2.h Mark Cave-Ayland
2022-06-09 11:09   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 39/50] lasips2: rename lasips2_init() to lasips2_initfn() and update it to return the LASIPS2 device Mark Cave-Ayland
2022-06-09 11:10   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 40/50] lasips2: implement lasips2_init() function Mark Cave-Ayland
2022-06-09 11:10   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 41/50] lasips2: move mapping of LASIPS2 registers to HPPA machine Mark Cave-Ayland
2022-06-09 11:11   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 42/50] lasips2: move initialisation of PS2 ports from lasi_initfn() to lasi_init() Mark Cave-Ayland
2022-06-09 11:11   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 43/50] lasips2: add base property Mark Cave-Ayland
2022-06-09 11:16   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 44/50] lasips2: implement lasips2_realize() Mark Cave-Ayland
2022-06-09 11:14   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 45/50] lasips2: use qdev gpio for output IRQ Mark Cave-Ayland
2022-06-09 11:18   ` Peter Maydell
2022-06-10  7:17     ` Mark Cave-Ayland
2022-06-11 15:44       ` Mark Cave-Ayland
2022-06-20 10:17         ` Peter Maydell
2022-06-20 13:22           ` Mark Cave-Ayland
2022-06-20 14:13             ` Peter Maydell
2022-06-24 13:32               ` Mark Cave-Ayland
2022-06-13 13:43   ` Philippe Mathieu-Daudé via
2022-05-22 18:18 ` [PATCH 46/50] lasips2: switch over from update_irq() function to PS2 device gpio Mark Cave-Ayland
2022-06-09 11:21   ` Peter Maydell
2022-06-10  7:19     ` Mark Cave-Ayland
2022-05-22 18:18 ` [PATCH 47/50] pckbd: switch I8042_MMIO device " Mark Cave-Ayland
2022-06-09 12:52   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 48/50] pckbd: add i8042_reset() function to I8042 device Mark Cave-Ayland
2022-06-09 12:50   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 49/50] pckbd: switch I8042 device from update_irq() function to PS2 device gpio Mark Cave-Ayland
2022-06-09 12:52   ` Peter Maydell
2022-05-22 18:18 ` [PATCH 50/50] ps2: remove update_irq() function and update_arg parameter Mark Cave-Ayland
2022-06-09 12:50   ` Peter Maydell
2022-05-22 22:29 ` [PATCH 00/50] PS2 device QOMification - part 1 Philippe Mathieu-Daudé via
2022-05-24 18:25 ` Helge Deller [this message]
2022-05-28  6:15   ` Mark Cave-Ayland
2022-06-07 15:54 ` Mark Cave-Ayland
2022-06-10 15:35   ` Philippe Mathieu-Daudé via
2022-06-10 15:43     ` Mark Cave-Ayland
2022-06-11  9:31       ` Philippe Mathieu-Daudé via

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=31ca8828-9b69-42da-7e0a-d1e3c5db2f08@gmx.de \
    --to=deller@gmx.de \
    --cc=aleksandar.rikalo@syrmia.com \
    --cc=f4bug@amsat.org \
    --cc=hpoussin@reactos.org \
    --cc=jiaxun.yang@flygoat.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.