Re: [PATCH 0/9] platform/surface: aggregator: Improve target/source handling in SSH messages

From: Hans de Goede
Date: Mon Jan 23 2023 - 10:38:04 EST


Hi,

On 12/2/22 23:33, Maximilian Luz wrote:
> We have some new insights into the Serial Hub protocol, obtained through
> reverse engineering. In particular, regarding the command structure. The
> input/output target IDs actually represent source and target IDs of
> (what looks like) physical entities (specifically: host, SAM EC, KIP EC,
> debug connector, and SurfLink connector).
>
> This series aims to improve handling of messages with regards to those
> new findings and, mainly, improve clarity of the documentation and usage
> around those fields.
>
> See the discussion in
>
> https://github.com/linux-surface/surface-aggregator-module/issues/64
>
> for more details.
>
> There are a couple of standouts:
>
> - Patch 1 ensures that we only handle commands actually intended for us.
> It's possible that we receive messages not intended for us when we
> enable debugging. I've kept it intentionally minimal to simplify
> backporting. The rest of the series patch 9 focuses more on clarity
> and documentation, which is probably too much to backport.
>
> - Patch 8 touches on multiple subsystems. The intention is to enforce
> proper usage and documentation of target IDs in the SSAM_SDEV() /
> SSAM_VDEV() macros. As it directly touches those macros I
> unfortunately can't split it up by subsystem.
>
> - Patch 9 is a loosely connected cleanup for consistency.
>
> Hans, Jiri, Benjamin, Sebastian: While patch 8 ("platform/surface:
> aggregator: Enforce use of target-ID enum in device ID macros") touches
> multiple subsystems, it should be possible to take the whole series
> through the pdx86 tree. The changes in other subsystems are fairly
> limited.

Thank you for your patch-series, I've applied the series to my
review-hans branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans

Note it will show up in my review-hans branch once I've pushed my
local branch there, which might take a while.

Once I've run some tests on this branch the patches there will be
added to the platform-drivers-x86/for-next branch and eventually
will be included in the pdx86 pull-request to Linus for the next
merge-window.

Regards,

Hans



>
>
> Maximilian Luz (9):
> platform/surface: aggregator: Ignore command messages not intended for
> us
> platform/surface: aggregator: Improve documentation and handling of
> message target and source IDs
> platform/surface: aggregator: Add target and source IDs to command
> trace events
> platform/surface: aggregator_hub: Use target-ID enum instead of
> hard-coding values
> platform/surface: aggregator_tabletsw: Use target-ID enum instead of
> hard-coding values
> platform/surface: dtx: Use target-ID enum instead of hard-coding
> values
> HID: surface-hid: Use target-ID enum instead of hard-coding values
> platform/surface: aggregator: Enforce use of target-ID enum in device
> ID macros
> platform/surface: aggregator_registry: Fix target-ID of base-hub
>
> .../driver-api/surface_aggregator/client.rst | 4 +-
> .../driver-api/surface_aggregator/ssh.rst | 36 ++++-----
> drivers/hid/surface-hid/surface_hid.c | 2 +-
> drivers/hid/surface-hid/surface_kbd.c | 2 +-
> .../platform/surface/aggregator/controller.c | 12 +--
> .../platform/surface/aggregator/ssh_msgb.h | 4 +-
> .../surface/aggregator/ssh_request_layer.c | 15 ++++
> drivers/platform/surface/aggregator/trace.h | 73 +++++++++++++++++--
> .../platform/surface/surface_aggregator_hub.c | 8 +-
> .../surface/surface_aggregator_registry.c | 2 +-
> .../surface/surface_aggregator_tabletsw.c | 10 +--
> drivers/platform/surface/surface_dtx.c | 20 ++---
> .../surface/surface_platform_profile.c | 2 +-
> drivers/power/supply/surface_battery.c | 4 +-
> drivers/power/supply/surface_charger.c | 2 +-
> include/linux/surface_aggregator/controller.h | 4 +-
> include/linux/surface_aggregator/device.h | 50 ++++++-------
> include/linux/surface_aggregator/serial_hub.h | 40 ++++++----
> 18 files changed, 191 insertions(+), 99 deletions(-)
>