lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220421203659.27853-1-d-gerlach@ti.com>
Date:   Thu, 21 Apr 2022 15:36:53 -0500
From:   Dave Gerlach <d-gerlach@...com>
To:     Rob Herring <robh+dt@...nel.org>,
        Santosh Shilimkar <ssantosh@...nel.org>,
        Krzysztof Kozlowski <krzk+dt@...nel.org>,
        Tero Kristo <kristo@...nel.org>, Nishanth Menon <nm@...com>
CC:     <linux-arm-kernel@...ts.infradead.org>,
        <linux-kernel@...r.kernel.org>, <devicetree@...r.kernel.org>,
        Vignesh Raghavendra <vigneshr@...com>,
        Dave Gerlach <d-gerlach@...com>
Subject: [PATCH 0/6] firmware: ti_sci: Introduce system suspend support

Hi,

This series introduces necessary ti_sci driver functionality in
preparation of supporting DeepSleep mode for suspend to mem on TI K3
AM62 [1]. This series applies on top of [2], which is also required for
proper system suspend operation.

Deep Sleep mode is described in section "5.2.4.4 DeepSleep" of the AM62
Technical Reference Manual: https://www.ti.com/lit/pdf/spruiv7

The kernel triggers entry to Deep Sleep mode through the mem suspend
transition with the following:

* Use a TF-A binary that supports PSCI_SYSTEM_SUSPEND call, which is
  enabled by the pending patches here [3]. This causes system to use
  PSCI system suspend as last step of mem sleep.

* The firmware requires that the OS sends a TISCI_MSG_PREPARE_SLEEP
  message in order to provide details about suspend, so we must add the
  ability to send this message. (Patch 3)

* A memory carveout address must be provided to the firmware using
  the above message, which is passed through device tree to the
  driver. (Patches 1 and 4)

* System must load firmware to a specific location before Deep Sleep is
  entered, and this is accomplished using an lpm memory region in device
  tree to indicate where this firmware should be loaded, and also a
  "ti,lpm-firmware-name" property to indicate the name of the firmware
  to load. The ti_sci driver checks in its suspend handler to see if
  the firmware has been loaded and if not, loads it. (Patches 2 and 5)

* Finally, the ti_sci driver must actually send TISCI_MSG_PREPARE_SLEEP
  message to firmware with the above information included, which it
  does during the driver suspend handler when PM_MEM_SUSPEND is the
  determined state being entered. (Patch 6)

This is tested on am625-sk using a ramdisk with all devices disabled
apart from cpu0, main_uart0, dmsc, and secure_proxy_main.

Regards,
Dave

[1] https://lore.kernel.org/lkml/20220225120239.1303821-1-vigneshr@ti.com/
[2] https://lore.kernel.org/lkml/20220412192138.31189-1-d-gerlach@ti.com/
[3] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/14714/3

Dave Gerlach (6):
  dt-bindings: ti,sci: Add ti,ctx-memory-region property
  dt-bindings: ti,sci: Add lpm region and ti,lpm-firmware-name
  firmware: ti_sci: Introduce Power Management Ops
  firmware: ti_sci: Introduce ti,ctx-memory-region for reserved LPM
    memory
  firmware: ti_sci: Use dt provided fw name and address to load at
    suspend time
  firmware: ti_sci: Introduce prepare system suspend call

 .../bindings/arm/keystone/ti,sci.yaml         |  30 ++-
 drivers/firmware/ti_sci.c                     | 207 +++++++++++++++++-
 drivers/firmware/ti_sci.h                     |  32 ++-
 include/linux/soc/ti/ti_sci_protocol.h        |   6 +
 4 files changed, 269 insertions(+), 6 deletions(-)

-- 
2.35.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ