lkml.org 
[lkml]   [2017]   [Sep]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v8 00/10] Enable VAS
From
Date
So this is upstream now but it will cause a crash on boot with older skiboots
with:

powernv-cpufreq: cpufreq pstate min 101 nominal 50 max 0
powernv-cpufreq: Workload Optimized Frequency is enabled in the platform
Disabling lock debugging due to kernel taint
Severe Machine check interrupt [Not recovered]
  NIP [c000000000098530]: reset_window_regs+0x20/0x220
  Initiator: CPU
  Error type: Unknown
opal: Machine check interrupt unrecoverable: MSR(RI=0)
opal: Hardware platform error: Unrecoverable Machine Check exception
CPU: 1 PID: 1 Comm: swapper/0 Tainted: G   M            4.13.0-rc7-00708-g8b680911e774-dirty #10
task: c000000f22680000 task.stack: c000000f22700000
NIP:  c000000000098530 LR: c000000000098758 CTR: 0000000000000000
REGS: c00000003ffebd80 TRAP: 0200   Tainted: G   M             (4.13.0-rc7-00708-g8b680911e774-dirty)
MSR:  9000000008349031 <SF,HV,EE,ME,IR,DR,LE>  CR: 24000224  XER: 00000000
CFAR: c000000000098754 DAR: 00000000100bef30 DSISR: 40000000 SOFTE: 0 
GPR00: c000000000098f44 c000000f22703a00 c000000000eff200 c000000f1cf861e0 
GPR04: c000000f22703a50 0000000000000001 0000000000000fff 0000000000000003 
GPR08: c00c0000842f0000 0000000000000001 0000000000000000 0000000000000000 
GPR12: 0000000000000000 c00000000fd40580 c000000000c03590 c000000000c1f428 
GPR16: c000000000c4a640 c000000000c31360 c000000000c92738 c000000000c92690 
GPR20: c000000000c926a0 c000000000c926f0 c000000f1d672940 0000000000000000 
GPR24: c000000000c92638 0000000000000000 c000000000e888b0 c000000000dce428 
GPR28: 0000000000000002 c000000f0e800000 c000000f22703a50 c000000f1cf861e0 
NIP [c000000000098530] reset_window_regs+0x20/0x220
LR [c000000000098758] init_winctx_regs+0x28/0x6c0
Call Trace:
[c000000f22703a00] [0000000000000002] 0x2 (unreliable)
[c000000f22703a30] [c000000000098f44] vas_rx_win_open.part.11+0x154/0x210
[c000000f22703ae0] [c000000000d668e8] nx842_powernv_init+0x6b4/0x824
[c000000f22703c[   38.412765557,0] OPAL: Reboot requested due to Platform error.
[   38.412828287,3] OPAL: Reboot requested due to Platform error.40] [c00000000000ca60] do_one_initcall+0x60/0x1c0

If you see this you need a new skiboot with at least these two patches:

b503dcf16d vas: Set mmio enable bits in DD2
a5c124072f vas: Set FIRs according to workbook

This is a community announcement brought to you by OzLabs. 
OzLabs: Making Linux better since 1999

Mikey


On Mon, 2017-08-28 at 23:23 -0700, Sukadev Bhattiprolu wrote:
> Power9 introduces a hardware subsystem referred to as the Virtual
> Accelerator Switchboard (VAS). VAS allows kernel subsystems and user
> space processes to directly access the Nest Accelerator (NX) engines
> which implement compression and encryption algorithms in the hardware.
>
> NX has been in Power processors since Power7+, but access to the NX
> engines was through the 'icswx' instruction which is only available
> to the kernel/hypervisor. Starting with Power9, access to the NX
> engines is provided to both kernel and user space processes through
> VAS.
>
> The switchboard (i.e VAS) multiplexes accesses between "receivers" and
> "senders", where the "receivers" are typically the NX engines and
> "senders" are the kernel subsystems and user processors that wish to
> access the receivers (NX engines).  Once a sender is "connected" to
> a receiver through the switchboard, the senders can submit compression/
> encryption requests to the hardware using the new (PowerISA 3.0)
> "copy" and "paste" instructions.
>
> In the initial OPAL and PowerNV kernel patchsets, the "senders" can
> only be kernel subsystems (eg NX-842 driver) and receivers can only
> be the NX-842 engine. Follow-on patch sets will allow senders/receivers
> to be user-space processes and receivers to be NX-GZIP engines.
>
> Provides:
>
> This kernel patch set configures the VAS subsystems and provides
> kernel interfaces to drivers like NX-842 to open receive and send
> windows in VAS and to submit compression requests to the NX engine.
>
> Requires:
>
> This patch set needs corresponding VAS/NX skiboot patches which
> were merged into skiboot tree. i.e skiboot must include:
> commit b503dcf ("vas: Set mmio enable bits in DD2")
>
> Tests:
>         In-kernel compression requests were tested on DD1 and DD2 POWER9
> hardware using compression self-test module and the following
> NX-842 patch set from Haren Myneni:
>
>         https://lists.ozlabs.org/pipermail/linuxppc-dev/2017-July/160620.html
>
> and by dropping the last parameters to both vas_copy_crb() and
> vas_paste_crb() calls in drivers/crypto/nx/nx-842-powernv.c.
> See also PATCH 10/10.
>
> Git Tree:
>
>         https://github.com/sukadev/linux/ 
> Branch: vas-kern-v8
>
> Thanks to input from Ben Herrenschmidt, Michael Neuling, Michael Ellerman
> and Haren Myneni.
>
> Changelog[v8]:
> - [Michael Ellerman] Use kernel int types (u64, u32 etc); make VAS
>   a built-in rather than a module; drop unnecessary fields from
>   struct vas_instance; Update ISA references; use 0 or 1 with
>   SET_FIELD macros instead of bool; skip writing to SPARE registers;
>   minor cleanup of debug/error messages; retry if ida_get_new()
>   fails with EAGAIN; fix couple of leaks in ids in error handling;
>   drop vas_initialized() check; drop vas_win_id() and vas_paste_addr()
>   interfaces as they are not yet used; Set task_state() and fix
>   parameter to schedule_timeout(); Reuse existing copy/paste macros
>   drop unnecessary parameters and add cr0 to clobbers list
>
> Changelog[v7]:
> - Drop support for user space send/receive FTW windows (will be
>   posted separately) Simplifies the rx-win-open interface a bit.
> - [Michael Ellerman] Move GET_FIELD/SET_FIELD macros from 
>   uapi/asm/vas.h to asm/vas.h.
>
> Changelog[v6]
> - Add support for user space send/receive FTW windows
> - Add a new, NX-FTW driver which provides the FTW user interface
>
> Changelog[v5]
> - [Ben Herrenschmidt] Make VAS a platform device in the device tree
>   and use the core platform functions to parse the VAS properties.
>   Map the VAS MMIO regions as non-cachable and paste regions as
>   cachable. Use CONFIG_PPC_VAS rather than CONFIG_VAS; Don't assume
>   VAS ids are sequential.
> - Copy the FIFO address as is into LFIFO_BAR (don't shift it).
>
> Changelog[v4]
> Comments from Michael Neuling:
> - Move VAS code from drivers/misc/vas to arch/powerpc/platforms/powernv
>   since VAS only provides interfaces to other drivers like NX-842.
> - Drop vas-internal.h and use vas.h in separate dirs for VAS
>   internal, kernel API and user API
> - Rather than create 6 separate device tree properties windows
>   and window context, combine them into 6 "reg" properties.
> - Drop vas_window_reset() since windows are reset/cleared before
>   being assigned to kernel/users.
> - Use ilog2() and radix_enabled() helpers
>
> Changelog[v3]
> - Rebase to v4.11-rc1
> - Add interfaces to initialize send/receive window attributes to
>   defaults that drivers can use (see arch/powerpc/include/asm/vas.h)
> - Modify interface vas_paste() to return 0 or error code
> - Fix a bug in setting Translation Control Mode (0b11 not 0x11)
> - Enable send-window-credit checking 
> - Reorg code  in vas_win_close()
> - Minor reorgs and tweaks to register field settings to make it
>   easier to add support for user space windows.
> - Skip writing to read-only registers
> - Start window indexing from 0 rather than 1
>
> Changelog[v2]
> - Use vas-id, HVWC, UWC and paste address, entries from device tree
>   rather than defining/computing them in kernel and reorg code.
>
>
> Sukadev Bhattiprolu (10):
>   powerpc/vas: Define macros, register fields and structures
>   Move GET_FIELD/SET_FIELD to vas.h
>   powerpc/vas: Define vas_init() and vas_exit()
>   powerpc/vas: Define helpers to access MMIO regions
>   powerpc/vas: Define helpers to init window context
>   powerpc/vas: Define helpers to alloc/free windows
>   powerpc/vas: Define vas_rx_win_open() interface
>   powerpc/vas: Define vas_win_close() interface
>   powerpc/vas: Define vas_tx_win_open()
>   powerpc/vas: Define copy/paste interfaces
>
>  .../devicetree/bindings/powerpc/ibm,vas.txt        |   23 +
>  MAINTAINERS                                        |    9 +
>  arch/powerpc/include/asm/ppc-opcode.h              |    2 +
>  arch/powerpc/include/asm/vas.h                     |  160 +++
>  arch/powerpc/platforms/powernv/Kconfig             |   14 +
>  arch/powerpc/platforms/powernv/Makefile            |    1 +
>  arch/powerpc/platforms/powernv/copy-paste.h        |   46 +
>  arch/powerpc/platforms/powernv/vas-window.c        | 1134
> ++++++++++++++++++++
>  arch/powerpc/platforms/powernv/vas.c               |  151 +++
>  arch/powerpc/platforms/powernv/vas.h               |  467 ++++++++
>  drivers/crypto/nx/nx-842-powernv.c                 |    7 +-
>  drivers/crypto/nx/nx-842.h                         |    5 -
>  12 files changed, 2011 insertions(+), 8 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/powerpc/ibm,vas.txt
>  create mode 100644 arch/powerpc/include/asm/vas.h
>  create mode 100644 arch/powerpc/platforms/powernv/copy-paste.h
>  create mode 100644 arch/powerpc/platforms/powernv/vas-window.c
>  create mode 100644 arch/powerpc/platforms/powernv/vas.c
>  create mode 100644 arch/powerpc/platforms/powernv/vas.h
>

\
 
 \ /
  Last update: 2017-09-07 09:00    [W:0.215 / U:2.504 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site