cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

vfio_ccw_cp.h (1469B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * channel program interfaces
      4 *
      5 * Copyright IBM Corp. 2017
      6 *
      7 * Author(s): Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
      8 *            Xiao Feng Ren <renxiaof@linux.vnet.ibm.com>
      9 */
     10
     11#ifndef _VFIO_CCW_CP_H_
     12#define _VFIO_CCW_CP_H_
     13
     14#include <asm/cio.h>
     15#include <asm/scsw.h>
     16
     17#include "orb.h"
     18#include "vfio_ccw_trace.h"
     19
     20/*
     21 * Max length for ccw chain.
     22 * XXX: Limit to 256, need to check more?
     23 */
     24#define CCWCHAIN_LEN_MAX	256
     25
     26/**
     27 * struct channel_program - manage information for channel program
     28 * @ccwchain_list: list head of ccwchains
     29 * @orb: orb for the currently processed ssch request
     30 * @mdev: the mediated device to perform page pinning/unpinning
     31 * @initialized: whether this instance is actually initialized
     32 *
     33 * @ccwchain_list is the head of a ccwchain list, that contents the
     34 * translated result of the guest channel program that pointed out by
     35 * the iova parameter when calling cp_init.
     36 */
     37struct channel_program {
     38	struct list_head ccwchain_list;
     39	union orb orb;
     40	bool initialized;
     41	struct ccw1 *guest_cp;
     42};
     43
     44extern int cp_init(struct channel_program *cp, union orb *orb);
     45extern void cp_free(struct channel_program *cp);
     46extern int cp_prefetch(struct channel_program *cp);
     47extern union orb *cp_get_orb(struct channel_program *cp, u32 intparm, u8 lpm);
     48extern void cp_update_scsw(struct channel_program *cp, union scsw *scsw);
     49extern bool cp_iova_pinned(struct channel_program *cp, u64 iova);
     50
     51#endif