__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Interface based on include/net/netlink.h
*/
#ifndef _ASM_POWERPC_GUEST_STATE_BUFFER_H
#define _ASM_POWERPC_GUEST_STATE_BUFFER_H
#include "asm/hvcall.h"
#include <linux/gfp.h>
#include <linux/bitmap.h>
#include <asm/plpar_wrappers.h>
/**************************************************************************
* Guest State Buffer Constants
**************************************************************************/
/* Element without a value and any length */
#define KVMPPC_GSID_BLANK 0x0000
/* Size required for the L0's internal VCPU representation */
#define KVMPPC_GSID_HOST_STATE_SIZE 0x0001
/* Minimum size for the H_GUEST_RUN_VCPU output buffer */
#define KVMPPC_GSID_RUN_OUTPUT_MIN_SIZE 0x0002
/* "Logical" PVR value as defined in the PAPR */
#define KVMPPC_GSID_LOGICAL_PVR 0x0003
/* L0 relative timebase offset */
#define KVMPPC_GSID_TB_OFFSET 0x0004
/* Partition Scoped Page Table Info */
#define KVMPPC_GSID_PARTITION_TABLE 0x0005
/* Process Table Info */
#define KVMPPC_GSID_PROCESS_TABLE 0x0006
/* H_GUEST_RUN_VCPU input buffer Info */
#define KVMPPC_GSID_RUN_INPUT 0x0C00
/* H_GUEST_RUN_VCPU output buffer Info */
#define KVMPPC_GSID_RUN_OUTPUT 0x0C01
#define KVMPPC_GSID_VPA 0x0C02
#define KVMPPC_GSID_GPR(x) (0x1000 + (x))
#define KVMPPC_GSID_HDEC_EXPIRY_TB 0x1020
#define KVMPPC_GSID_NIA 0x1021
#define KVMPPC_GSID_MSR 0x1022
#define KVMPPC_GSID_LR 0x1023
#define KVMPPC_GSID_XER 0x1024
#define KVMPPC_GSID_CTR 0x1025
#define KVMPPC_GSID_CFAR 0x1026
#define KVMPPC_GSID_SRR0 0x1027
#define KVMPPC_GSID_SRR1 0x1028
#define KVMPPC_GSID_DAR 0x1029
#define KVMPPC_GSID_DEC_EXPIRY_TB 0x102A
#define KVMPPC_GSID_VTB 0x102B
#define KVMPPC_GSID_LPCR 0x102C
#define KVMPPC_GSID_HFSCR 0x102D
#define KVMPPC_GSID_FSCR 0x102E
#define KVMPPC_GSID_FPSCR 0x102F
#define KVMPPC_GSID_DAWR0 0x1030
#define KVMPPC_GSID_DAWR1 0x1031
#define KVMPPC_GSID_CIABR 0x1032
#define KVMPPC_GSID_PURR 0x1033
#define KVMPPC_GSID_SPURR 0x1034
#define KVMPPC_GSID_IC 0x1035
#define KVMPPC_GSID_SPRG0 0x1036
#define KVMPPC_GSID_SPRG1 0x1037
#define KVMPPC_GSID_SPRG2 0x1038
#define KVMPPC_GSID_SPRG3 0x1039
#define KVMPPC_GSID_PPR 0x103A
#define KVMPPC_GSID_MMCR(x) (0x103B + (x))
#define KVMPPC_GSID_MMCRA 0x103F
#define KVMPPC_GSID_SIER(x) (0x1040 + (x))
#define KVMPPC_GSID_BESCR 0x1043
#define KVMPPC_GSID_EBBHR 0x1044
#define KVMPPC_GSID_EBBRR 0x1045
#define KVMPPC_GSID_AMR 0x1046
#define KVMPPC_GSID_IAMR 0x1047
#define KVMPPC_GSID_AMOR 0x1048
#define KVMPPC_GSID_UAMOR 0x1049
#define KVMPPC_GSID_SDAR 0x104A
#define KVMPPC_GSID_SIAR 0x104B
#define KVMPPC_GSID_DSCR 0x104C
#define KVMPPC_GSID_TAR 0x104D
#define KVMPPC_GSID_DEXCR 0x104E
#define KVMPPC_GSID_HDEXCR 0x104F
#define KVMPPC_GSID_HASHKEYR 0x1050
#define KVMPPC_GSID_HASHPKEYR 0x1051
#define KVMPPC_GSID_CTRL 0x1052
#define KVMPPC_GSID_DPDES 0x1053
#define KVMPPC_GSID_CR 0x2000
#define KVMPPC_GSID_PIDR 0x2001
#define KVMPPC_GSID_DSISR 0x2002
#define KVMPPC_GSID_VSCR 0x2003
#define KVMPPC_GSID_VRSAVE 0x2004
#define KVMPPC_GSID_DAWRX0 0x2005
#define KVMPPC_GSID_DAWRX1 0x2006
#define KVMPPC_GSID_PMC(x) (0x2007 + (x))
#define KVMPPC_GSID_WORT 0x200D
#define KVMPPC_GSID_PSPB 0x200E
#define KVMPPC_GSID_VSRS(x) (0x3000 + (x))
#define KVMPPC_GSID_HDAR 0xF000
#define KVMPPC_GSID_HDSISR 0xF001
#define KVMPPC_GSID_HEIR 0xF002
#define KVMPPC_GSID_ASDR 0xF003
#define KVMPPC_GSE_GUESTWIDE_START KVMPPC_GSID_BLANK
#define KVMPPC_GSE_GUESTWIDE_END KVMPPC_GSID_PROCESS_TABLE
#define KVMPPC_GSE_GUESTWIDE_COUNT \
(KVMPPC_GSE_GUESTWIDE_END - KVMPPC_GSE_GUESTWIDE_START + 1)
#define KVMPPC_GSE_META_START KVMPPC_GSID_RUN_INPUT
#define KVMPPC_GSE_META_END KVMPPC_GSID_VPA
#define KVMPPC_GSE_META_COUNT (KVMPPC_GSE_META_END - KVMPPC_GSE_META_START + 1)
#define KVMPPC_GSE_DW_REGS_START KVMPPC_GSID_GPR(0)
#define KVMPPC_GSE_DW_REGS_END KVMPPC_GSID_DPDES
#define KVMPPC_GSE_DW_REGS_COUNT \
(KVMPPC_GSE_DW_REGS_END - KVMPPC_GSE_DW_REGS_START + 1)
#define KVMPPC_GSE_W_REGS_START KVMPPC_GSID_CR
#define KVMPPC_GSE_W_REGS_END KVMPPC_GSID_PSPB
#define KVMPPC_GSE_W_REGS_COUNT \
(KVMPPC_GSE_W_REGS_END - KVMPPC_GSE_W_REGS_START + 1)
#define KVMPPC_GSE_VSRS_START KVMPPC_GSID_VSRS(0)
#define KVMPPC_GSE_VSRS_END KVMPPC_GSID_VSRS(63)
#define KVMPPC_GSE_VSRS_COUNT (KVMPPC_GSE_VSRS_END - KVMPPC_GSE_VSRS_START + 1)
#define KVMPPC_GSE_INTR_REGS_START KVMPPC_GSID_HDAR
#define KVMPPC_GSE_INTR_REGS_END KVMPPC_GSID_ASDR
#define KVMPPC_GSE_INTR_REGS_COUNT \
(KVMPPC_GSE_INTR_REGS_END - KVMPPC_GSE_INTR_REGS_START + 1)
#define KVMPPC_GSE_IDEN_COUNT \
(KVMPPC_GSE_GUESTWIDE_COUNT + KVMPPC_GSE_META_COUNT + \
KVMPPC_GSE_DW_REGS_COUNT + KVMPPC_GSE_W_REGS_COUNT + \
KVMPPC_GSE_VSRS_COUNT + KVMPPC_GSE_INTR_REGS_COUNT)
/**
* Ranges of guest state buffer elements
*/
enum {
KVMPPC_GS_CLASS_GUESTWIDE = 0x01,
KVMPPC_GS_CLASS_META = 0x02,
KVMPPC_GS_CLASS_DWORD_REG = 0x04,
KVMPPC_GS_CLASS_WORD_REG = 0x08,
KVMPPC_GS_CLASS_VECTOR = 0x10,
KVMPPC_GS_CLASS_INTR = 0x20,
};
/**
* Types of guest state buffer elements
*/
enum {
KVMPPC_GSE_BE32,
KVMPPC_GSE_BE64,
KVMPPC_GSE_VEC128,
KVMPPC_GSE_PARTITION_TABLE,
KVMPPC_GSE_PROCESS_TABLE,
KVMPPC_GSE_BUFFER,
__KVMPPC_GSE_TYPE_MAX,
};
/**
* Flags for guest state elements
*/
enum {
KVMPPC_GS_FLAGS_WIDE = 0x01,
};
/**
* struct kvmppc_gs_part_table - deserialized partition table information
* element
* @address: start of the partition table
* @ea_bits: number of bits in the effective address
* @gpd_size: root page directory size
*/
struct kvmppc_gs_part_table {
u64 address;
u64 ea_bits;
u64 gpd_size;
};
/**
* struct kvmppc_gs_proc_table - deserialized process table information element
* @address: start of the process table
* @gpd_size: process table size
*/
struct kvmppc_gs_proc_table {
u64 address;
u64 gpd_size;
};
/**
* struct kvmppc_gs_buff_info - deserialized meta guest state buffer information
* @address: start of the guest state buffer
* @size: size of the guest state buffer
*/
struct kvmppc_gs_buff_info {
u64 address;
u64 size;
};
/**
* struct kvmppc_gs_header - serialized guest state buffer header
* @nelem: count of guest state elements in the buffer
* @data: start of the stream of elements in the buffer
*/
struct kvmppc_gs_header {
__be32 nelems;
char data[];
} __packed;
/**
* struct kvmppc_gs_elem - serialized guest state buffer element
* @iden: Guest State ID
* @len: length of data
* @data: the guest state buffer element's value
*/
struct kvmppc_gs_elem {
__be16 iden;
__be16 len;
char data[];
} __packed;
/**
* struct kvmppc_gs_buff - a guest state buffer with metadata.
* @capacity: total length of the buffer
* @len: current length of the elements and header
* @guest_id: guest id associated with the buffer
* @vcpu_id: vcpu_id associated with the buffer
* @hdr: the serialised guest state buffer
*/
struct kvmppc_gs_buff {
size_t capacity;
size_t len;
unsigned long guest_id;
unsigned long vcpu_id;
struct kvmppc_gs_header *hdr;
};
/**
* struct kvmppc_gs_bitmap - a bitmap for element ids
* @bitmap: a bitmap large enough for all Guest State IDs
*/
struct kvmppc_gs_bitmap {
/* private: */
DECLARE_BITMAP(bitmap, KVMPPC_GSE_IDEN_COUNT);
};
/**
* struct kvmppc_gs_parser - a map of element ids to locations in a buffer
* @iterator: bitmap used for iterating
* @gses: contains the pointers to elements
*
* A guest state parser is used for deserialising a guest state buffer.
* Given a buffer, it then allows looking up guest state elements using
* a guest state id.
*/
struct kvmppc_gs_parser {
/* private: */
struct kvmppc_gs_bitmap iterator;
struct kvmppc_gs_elem *gses[KVMPPC_GSE_IDEN_COUNT];
};
enum {
GSM_GUEST_WIDE = 0x1,
GSM_SEND = 0x2,
GSM_RECEIVE = 0x4,
GSM_GSB_OWNER = 0x8,
};
struct kvmppc_gs_msg;
/**
* struct kvmppc_gs_msg_ops - guest state message behavior
* @get_size: maximum size required for the message data
* @fill_info: serializes to the guest state buffer format
* @refresh_info: dserializes from the guest state buffer format
*/
struct kvmppc_gs_msg_ops {
size_t (*get_size)(struct kvmppc_gs_msg *gsm);
int (*fill_info)(struct kvmppc_gs_buff *gsb, struct kvmppc_gs_msg *gsm);
int (*refresh_info)(struct kvmppc_gs_msg *gsm,
struct kvmppc_gs_buff *gsb);
};
/**
* struct kvmppc_gs_msg - a guest state message
* @bitmap: the guest state ids that should be included
* @ops: modify message behavior for reading and writing to buffers
* @flags: guest wide or thread wide
* @data: location where buffer data will be written to or from.
*
* A guest state message is allows flexibility in sending in receiving data
* in a guest state buffer format.
*/
struct kvmppc_gs_msg {
struct kvmppc_gs_bitmap bitmap;
struct kvmppc_gs_msg_ops *ops;
unsigned long flags;
void *data;
};
/**************************************************************************
* Guest State IDs
**************************************************************************/
u16 kvmppc_gsid_size(u16 iden);
unsigned long kvmppc_gsid_flags(u16 iden);
u64 kvmppc_gsid_mask(u16 iden);
/**************************************************************************
* Guest State Buffers
**************************************************************************/
struct kvmppc_gs_buff *kvmppc_gsb_new(size_t size, unsigned long guest_id,
unsigned long vcpu_id, gfp_t flags);
void kvmppc_gsb_free(struct kvmppc_gs_buff *gsb);
void *kvmppc_gsb_put(struct kvmppc_gs_buff *gsb, size_t size);
int kvmppc_gsb_send(struct kvmppc_gs_buff *gsb, unsigned long flags);
int kvmppc_gsb_recv(struct kvmppc_gs_buff *gsb, unsigned long flags);
/**
* kvmppc_gsb_header() - the header of a guest state buffer
* @gsb: guest state buffer
*
* Returns a pointer to the buffer header.
*/
static inline struct kvmppc_gs_header *
kvmppc_gsb_header(struct kvmppc_gs_buff *gsb)
{
return gsb->hdr;
}
/**
* kvmppc_gsb_data() - the elements of a guest state buffer
* @gsb: guest state buffer
*
* Returns a pointer to the first element of the buffer data.
*/
static inline struct kvmppc_gs_elem *kvmppc_gsb_data(struct kvmppc_gs_buff *gsb)
{
return (struct kvmppc_gs_elem *)kvmppc_gsb_header(gsb)->data;
}
/**
* kvmppc_gsb_len() - the current length of a guest state buffer
* @gsb: guest state buffer
*
* Returns the length including the header of a buffer.
*/
static inline size_t kvmppc_gsb_len(struct kvmppc_gs_buff *gsb)
{
return gsb->len;
}
/**
* kvmppc_gsb_capacity() - the capacity of a guest state buffer
* @gsb: guest state buffer
*
* Returns the capacity of a buffer.
*/
static inline size_t kvmppc_gsb_capacity(struct kvmppc_gs_buff *gsb)
{
return gsb->capacity;
}
/**
* kvmppc_gsb_paddress() - the physical address of buffer
* @gsb: guest state buffer
*
* Returns the physical address of the buffer.
*/
static inline u64 kvmppc_gsb_paddress(struct kvmppc_gs_buff *gsb)
{
return __pa(kvmppc_gsb_header(gsb));
}
/**
* kvmppc_gsb_nelems() - the number of elements in a buffer
* @gsb: guest state buffer
*
* Returns the number of elements in a buffer
*/
static inline u32 kvmppc_gsb_nelems(struct kvmppc_gs_buff *gsb)
{
return be32_to_cpu(kvmppc_gsb_header(gsb)->nelems);
}
/**
* kvmppc_gsb_reset() - empty a guest state buffer
* @gsb: guest state buffer
*
* Reset the number of elements and length of buffer to empty.
*/
static inline void kvmppc_gsb_reset(struct kvmppc_gs_buff *gsb)
{
kvmppc_gsb_header(gsb)->nelems = cpu_to_be32(0);
gsb->len = sizeof(struct kvmppc_gs_header);
}
/**
* kvmppc_gsb_data_len() - the length of a buffer excluding the header
* @gsb: guest state buffer
*
* Returns the length of a buffer excluding the header
*/
static inline size_t kvmppc_gsb_data_len(struct kvmppc_gs_buff *gsb)
{
return gsb->len - sizeof(struct kvmppc_gs_header);
}
/**
* kvmppc_gsb_data_cap() - the capacity of a buffer excluding the header
* @gsb: guest state buffer
*
* Returns the capacity of a buffer excluding the header
*/
static inline size_t kvmppc_gsb_data_cap(struct kvmppc_gs_buff *gsb)
{
return gsb->capacity - sizeof(struct kvmppc_gs_header);
}
/**
* kvmppc_gsb_for_each_elem - iterate over the elements in a buffer
* @i: loop counter
* @pos: set to current element
* @gsb: guest state buffer
* @rem: initialized to buffer capacity, holds bytes currently remaining in
* stream
*/
#define kvmppc_gsb_for_each_elem(i, pos, gsb, rem) \
kvmppc_gse_for_each_elem(i, kvmppc_gsb_nelems(gsb), pos, \
kvmppc_gsb_data(gsb), \
kvmppc_gsb_data_cap(gsb), rem)
/**************************************************************************
* Guest State Elements
**************************************************************************/
/**
* kvmppc_gse_iden() - guest state ID of element
* @gse: guest state element
*
* Return the guest state ID in host endianness.
*/
static inline u16 kvmppc_gse_iden(const struct kvmppc_gs_elem *gse)
{
return be16_to_cpu(gse->iden);
}
/**
* kvmppc_gse_len() - length of guest state element data
* @gse: guest state element
*
* Returns the length of guest state element data
*/
static inline u16 kvmppc_gse_len(const struct kvmppc_gs_elem *gse)
{
return be16_to_cpu(gse->len);
}
/**
* kvmppc_gse_total_len() - total length of guest state element
* @gse: guest state element
*
* Returns the length of the data plus the ID and size header.
*/
static inline u16 kvmppc_gse_total_len(const struct kvmppc_gs_elem *gse)
{
return be16_to_cpu(gse->len) + sizeof(*gse);
}
/**
* kvmppc_gse_total_size() - space needed for a given data length
* @size: data length
*
* Returns size plus the space needed for the ID and size header.
*/
static inline u16 kvmppc_gse_total_size(u16 size)
{
return sizeof(struct kvmppc_gs_elem) + size;
}
/**
* kvmppc_gse_data() - pointer to data of a guest state element
* @gse: guest state element
*
* Returns a pointer to the beginning of guest state element data.
*/
static inline void *kvmppc_gse_data(const struct kvmppc_gs_elem *gse)
{
return (void *)gse->data;
}
/**
* kvmppc_gse_ok() - checks space exists for guest state element
* @gse: guest state element
* @remaining: bytes of space remaining
*
* Returns true if the guest state element can fit in remaining space.
*/
static inline bool kvmppc_gse_ok(const struct kvmppc_gs_elem *gse,
int remaining)
{
return remaining >= kvmppc_gse_total_len(gse);
}
/**
* kvmppc_gse_next() - iterate to the next guest state element in a stream
* @gse: stream of guest state elements
* @remaining: length of the guest element stream
*
* Returns the next guest state element in a stream of elements. The length of
* the stream is updated in remaining.
*/
static inline struct kvmppc_gs_elem *
kvmppc_gse_next(const struct kvmppc_gs_elem *gse, int *remaining)
{
int len = sizeof(*gse) + kvmppc_gse_len(gse);
*remaining -= len;
return (struct kvmppc_gs_elem *)(gse->data + kvmppc_gse_len(gse));
}
/**
* kvmppc_gse_for_each_elem - iterate over a stream of guest state elements
* @i: loop counter
* @max: number of elements
* @pos: set to current element
* @head: head of elements
* @len: length of the stream
* @rem: initialized to len, holds bytes currently remaining elements
*/
#define kvmppc_gse_for_each_elem(i, max, pos, head, len, rem) \
for (i = 0, pos = head, rem = len; kvmppc_gse_ok(pos, rem) && i < max; \
pos = kvmppc_gse_next(pos, &(rem)), i++)
int __kvmppc_gse_put(struct kvmppc_gs_buff *gsb, u16 iden, u16 size,
const void *data);
int kvmppc_gse_parse(struct kvmppc_gs_parser *gsp, struct kvmppc_gs_buff *gsb);
/**
* kvmppc_gse_put_be32() - add a be32 guest state element to a buffer
* @gsb: guest state buffer to add element to
* @iden: guest state ID
* @val: big endian value
*/
static inline int kvmppc_gse_put_be32(struct kvmppc_gs_buff *gsb, u16 iden,
__be32 val)
{
__be32 tmp;
tmp = val;
return __kvmppc_gse_put(gsb, iden, sizeof(__be32), &tmp);
}
/**
* kvmppc_gse_put_u32() - add a host endian 32bit int guest state element to a
* buffer
* @gsb: guest state buffer to add element to
* @iden: guest state ID
* @val: host endian value
*/
static inline int kvmppc_gse_put_u32(struct kvmppc_gs_buff *gsb, u16 iden,
u32 val)
{
__be32 tmp;
val &= kvmppc_gsid_mask(iden);
tmp = cpu_to_be32(val);
return kvmppc_gse_put_be32(gsb, iden, tmp);
}
/**
* kvmppc_gse_put_be64() - add a be64 guest state element to a buffer
* @gsb: guest state buffer to add element to
* @iden: guest state ID
* @val: big endian value
*/
static inline int kvmppc_gse_put_be64(struct kvmppc_gs_buff *gsb, u16 iden,
__be64 val)
{
__be64 tmp;
tmp = val;
return __kvmppc_gse_put(gsb, iden, sizeof(__be64), &tmp);
}
/**
* kvmppc_gse_put_u64() - add a host endian 64bit guest state element to a
* buffer
* @gsb: guest state buffer to add element to
* @iden: guest state ID
* @val: host endian value
*/
static inline int kvmppc_gse_put_u64(struct kvmppc_gs_buff *gsb, u16 iden,
u64 val)
{
__be64 tmp;
val &= kvmppc_gsid_mask(iden);
tmp = cpu_to_be64(val);
return kvmppc_gse_put_be64(gsb, iden, tmp);
}
/**
* __kvmppc_gse_put_reg() - add a register type guest state element to a buffer
* @gsb: guest state buffer to add element to
* @iden: guest state ID
* @val: host endian value
*
* Adds a register type guest state element. Uses the guest state ID for
* determining the length of the guest element. If the guest state ID has
* bits that can not be set they will be cleared.
*/
static inline int __kvmppc_gse_put_reg(struct kvmppc_gs_buff *gsb, u16 iden,
u64 val)
{
val &= kvmppc_gsid_mask(iden);
if (kvmppc_gsid_size(iden) == sizeof(u64))
return kvmppc_gse_put_u64(gsb, iden, val);
if (kvmppc_gsid_size(iden) == sizeof(u32)) {
u32 tmp;
tmp = (u32)val;
if (tmp != val)
return -EINVAL;
return kvmppc_gse_put_u32(gsb, iden, tmp);
}
return -EINVAL;
}
/**
* kvmppc_gse_put_vector128() - add a vector guest state element to a buffer
* @gsb: guest state buffer to add element to
* @iden: guest state ID
* @val: 16 byte vector value
*/
static inline int kvmppc_gse_put_vector128(struct kvmppc_gs_buff *gsb, u16 iden,
vector128 *val)
{
__be64 tmp[2] = { 0 };
union {
__vector128 v;
u64 dw[2];
} u;
u.v = *val;
tmp[0] = cpu_to_be64(u.dw[TS_FPROFFSET]);
#ifdef CONFIG_VSX
tmp[1] = cpu_to_be64(u.dw[TS_VSRLOWOFFSET]);
#endif
return __kvmppc_gse_put(gsb, iden, sizeof(tmp), &tmp);
}
/**
* kvmppc_gse_put_part_table() - add a partition table guest state element to a
* buffer
* @gsb: guest state buffer to add element to
* @iden: guest state ID
* @val: partition table value
*/
static inline int kvmppc_gse_put_part_table(struct kvmppc_gs_buff *gsb,
u16 iden,
struct kvmppc_gs_part_table val)
{
__be64 tmp[3];
tmp[0] = cpu_to_be64(val.address);
tmp[1] = cpu_to_be64(val.ea_bits);
tmp[2] = cpu_to_be64(val.gpd_size);
return __kvmppc_gse_put(gsb, KVMPPC_GSID_PARTITION_TABLE, sizeof(tmp),
&tmp);
}
/**
* kvmppc_gse_put_proc_table() - add a process table guest state element to a
* buffer
* @gsb: guest state buffer to add element to
* @iden: guest state ID
* @val: process table value
*/
static inline int kvmppc_gse_put_proc_table(struct kvmppc_gs_buff *gsb,
u16 iden,
struct kvmppc_gs_proc_table val)
{
__be64 tmp[2];
tmp[0] = cpu_to_be64(val.address);
tmp[1] = cpu_to_be64(val.gpd_size);
return __kvmppc_gse_put(gsb, KVMPPC_GSID_PROCESS_TABLE, sizeof(tmp),
&tmp);
}
/**
* kvmppc_gse_put_buff_info() - adds a GSB description guest state element to a
* buffer
* @gsb: guest state buffer to add element to
* @iden: guest state ID
* @val: guest state buffer description value
*/
static inline int kvmppc_gse_put_buff_info(struct kvmppc_gs_buff *gsb, u16 iden,
struct kvmppc_gs_buff_info val)
{
__be64 tmp[2];
tmp[0] = cpu_to_be64(val.address);
tmp[1] = cpu_to_be64(val.size);
return __kvmppc_gse_put(gsb, iden, sizeof(tmp), &tmp);
}
int __kvmppc_gse_put(struct kvmppc_gs_buff *gsb, u16 iden, u16 size,
const void *data);
/**
* kvmppc_gse_get_be32() - return the data of a be32 element
* @gse: guest state element
*/
static inline __be32 kvmppc_gse_get_be32(const struct kvmppc_gs_elem *gse)
{
if (WARN_ON(kvmppc_gse_len(gse) != sizeof(__be32)))
return 0;
return *(__be32 *)kvmppc_gse_data(gse);
}
/**
* kvmppc_gse_get_u32() - return the data of a be32 element in host endianness
* @gse: guest state element
*/
static inline u32 kvmppc_gse_get_u32(const struct kvmppc_gs_elem *gse)
{
return be32_to_cpu(kvmppc_gse_get_be32(gse));
}
/**
* kvmppc_gse_get_be64() - return the data of a be64 element
* @gse: guest state element
*/
static inline __be64 kvmppc_gse_get_be64(const struct kvmppc_gs_elem *gse)
{
if (WARN_ON(kvmppc_gse_len(gse) != sizeof(__be64)))
return 0;
return *(__be64 *)kvmppc_gse_data(gse);
}
/**
* kvmppc_gse_get_u64() - return the data of a be64 element in host endianness
* @gse: guest state element
*/
static inline u64 kvmppc_gse_get_u64(const struct kvmppc_gs_elem *gse)
{
return be64_to_cpu(kvmppc_gse_get_be64(gse));
}
/**
* kvmppc_gse_get_vector128() - return the data of a vector element
* @gse: guest state element
*/
static inline void kvmppc_gse_get_vector128(const struct kvmppc_gs_elem *gse,
vector128 *v)
{
union {
__vector128 v;
u64 dw[2];
} u = { 0 };
__be64 *src;
if (WARN_ON(kvmppc_gse_len(gse) != sizeof(__vector128)))
*v = u.v;
src = (__be64 *)kvmppc_gse_data(gse);
u.dw[TS_FPROFFSET] = be64_to_cpu(src[0]);
#ifdef CONFIG_VSX
u.dw[TS_VSRLOWOFFSET] = be64_to_cpu(src[1]);
#endif
*v = u.v;
}
/**************************************************************************
* Guest State Bitmap
**************************************************************************/
bool kvmppc_gsbm_test(struct kvmppc_gs_bitmap *gsbm, u16 iden);
void kvmppc_gsbm_set(struct kvmppc_gs_bitmap *gsbm, u16 iden);
void kvmppc_gsbm_clear(struct kvmppc_gs_bitmap *gsbm, u16 iden);
u16 kvmppc_gsbm_next(struct kvmppc_gs_bitmap *gsbm, u16 prev);
/**
* kvmppc_gsbm_zero - zero the entire bitmap
* @gsbm: guest state buffer bitmap
*/
static inline void kvmppc_gsbm_zero(struct kvmppc_gs_bitmap *gsbm)
{
bitmap_zero(gsbm->bitmap, KVMPPC_GSE_IDEN_COUNT);
}
/**
* kvmppc_gsbm_fill - fill the entire bitmap
* @gsbm: guest state buffer bitmap
*/
static inline void kvmppc_gsbm_fill(struct kvmppc_gs_bitmap *gsbm)
{
bitmap_fill(gsbm->bitmap, KVMPPC_GSE_IDEN_COUNT);
clear_bit(0, gsbm->bitmap);
}
/**
* kvmppc_gsbm_for_each - iterate the present guest state IDs
* @gsbm: guest state buffer bitmap
* @iden: current guest state ID
*/
#define kvmppc_gsbm_for_each(gsbm, iden) \
for (iden = kvmppc_gsbm_next(gsbm, 0); iden != 0; \
iden = kvmppc_gsbm_next(gsbm, iden))
/**************************************************************************
* Guest State Parser
**************************************************************************/
void kvmppc_gsp_insert(struct kvmppc_gs_parser *gsp, u16 iden,
struct kvmppc_gs_elem *gse);
struct kvmppc_gs_elem *kvmppc_gsp_lookup(struct kvmppc_gs_parser *gsp,
u16 iden);
/**
* kvmppc_gsp_for_each - iterate the <guest state IDs, guest state element>
* pairs
* @gsp: guest state buffer bitmap
* @iden: current guest state ID
* @gse: guest state element
*/
#define kvmppc_gsp_for_each(gsp, iden, gse) \
for (iden = kvmppc_gsbm_next(&(gsp)->iterator, 0), \
gse = kvmppc_gsp_lookup((gsp), iden); \
iden != 0; iden = kvmppc_gsbm_next(&(gsp)->iterator, iden), \
gse = kvmppc_gsp_lookup((gsp), iden))
/**************************************************************************
* Guest State Message
**************************************************************************/
/**
* kvmppc_gsm_for_each - iterate the guest state IDs included in a guest state
* message
* @gsp: guest state buffer bitmap
* @iden: current guest state ID
* @gse: guest state element
*/
#define kvmppc_gsm_for_each(gsm, iden) \
for (iden = kvmppc_gsbm_next(&gsm->bitmap, 0); iden != 0; \
iden = kvmppc_gsbm_next(&gsm->bitmap, iden))
int kvmppc_gsm_init(struct kvmppc_gs_msg *mgs, struct kvmppc_gs_msg_ops *ops,
void *data, unsigned long flags);
struct kvmppc_gs_msg *kvmppc_gsm_new(struct kvmppc_gs_msg_ops *ops, void *data,
unsigned long flags, gfp_t gfp_flags);
void kvmppc_gsm_free(struct kvmppc_gs_msg *gsm);
size_t kvmppc_gsm_size(struct kvmppc_gs_msg *gsm);
int kvmppc_gsm_fill_info(struct kvmppc_gs_msg *gsm, struct kvmppc_gs_buff *gsb);
int kvmppc_gsm_refresh_info(struct kvmppc_gs_msg *gsm,
struct kvmppc_gs_buff *gsb);
/**
* kvmppc_gsm_include - indicate a guest state ID should be included when
* serializing
* @gsm: guest state message
* @iden: guest state ID
*/
static inline void kvmppc_gsm_include(struct kvmppc_gs_msg *gsm, u16 iden)
{
kvmppc_gsbm_set(&gsm->bitmap, iden);
}
/**
* kvmppc_gsm_includes - check if a guest state ID will be included when
* serializing
* @gsm: guest state message
* @iden: guest state ID
*/
static inline bool kvmppc_gsm_includes(struct kvmppc_gs_msg *gsm, u16 iden)
{
return kvmppc_gsbm_test(&gsm->bitmap, iden);
}
/**
* kvmppc_gsm_includes - indicate all guest state IDs should be included when
* serializing
* @gsm: guest state message
* @iden: guest state ID
*/
static inline void kvmppc_gsm_include_all(struct kvmppc_gs_msg *gsm)
{
kvmppc_gsbm_fill(&gsm->bitmap);
}
/**
* kvmppc_gsm_include - clear the guest state IDs that should be included when
* serializing
* @gsm: guest state message
*/
static inline void kvmppc_gsm_reset(struct kvmppc_gs_msg *gsm)
{
kvmppc_gsbm_zero(&gsm->bitmap);
}
/**
* kvmppc_gsb_receive_data - flexibly update values from a guest state buffer
* @gsb: guest state buffer
* @gsm: guest state message
*
* Requests updated values for the guest state values included in the guest
* state message. The guest state message will then deserialize the guest state
* buffer.
*/
static inline int kvmppc_gsb_receive_data(struct kvmppc_gs_buff *gsb,
struct kvmppc_gs_msg *gsm)
{
int rc;
kvmppc_gsb_reset(gsb);
rc = kvmppc_gsm_fill_info(gsm, gsb);
if (rc < 0)
return rc;
rc = kvmppc_gsb_recv(gsb, gsm->flags);
if (rc < 0)
return rc;
rc = kvmppc_gsm_refresh_info(gsm, gsb);
if (rc < 0)
return rc;
return 0;
}
/**
* kvmppc_gsb_recv - receive a single guest state ID
* @gsb: guest state buffer
* @gsm: guest state message
* @iden: guest state identity
*/
static inline int kvmppc_gsb_receive_datum(struct kvmppc_gs_buff *gsb,
struct kvmppc_gs_msg *gsm, u16 iden)
{
int rc;
kvmppc_gsm_include(gsm, iden);
rc = kvmppc_gsb_receive_data(gsb, gsm);
if (rc < 0)
return rc;
kvmppc_gsm_reset(gsm);
return 0;
}
/**
* kvmppc_gsb_send_data - flexibly send values from a guest state buffer
* @gsb: guest state buffer
* @gsm: guest state message
*
* Sends the guest state values included in the guest state message.
*/
static inline int kvmppc_gsb_send_data(struct kvmppc_gs_buff *gsb,
struct kvmppc_gs_msg *gsm)
{
int rc;
kvmppc_gsb_reset(gsb);
rc = kvmppc_gsm_fill_info(gsm, gsb);
if (rc < 0)
return rc;
rc = kvmppc_gsb_send(gsb, gsm->flags);
return rc;
}
/**
* kvmppc_gsb_recv - send a single guest state ID
* @gsb: guest state buffer
* @gsm: guest state message
* @iden: guest state identity
*/
static inline int kvmppc_gsb_send_datum(struct kvmppc_gs_buff *gsb,
struct kvmppc_gs_msg *gsm, u16 iden)
{
int rc;
kvmppc_gsm_include(gsm, iden);
rc = kvmppc_gsb_send_data(gsb, gsm);
if (rc < 0)
return rc;
kvmppc_gsm_reset(gsm);
return 0;
}
#endif /* _ASM_POWERPC_GUEST_STATE_BUFFER_H */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| book3s | Folder | 0755 |
|
|
| nohash | Folder | 0755 |
|
|
| vdso | Folder | 0755 |
|
|
| 8xx_immap.h | File | 13.81 KB | 0644 |
|
| Kbuild | File | 262 B | 0644 |
|
| accounting.h | File | 908 B | 0644 |
|
| archrandom.h | File | 417 B | 0644 |
|
| asm-compat.h | File | 1.94 KB | 0644 |
|
| asm-const.h | File | 443 B | 0644 |
|
| asm-offsets.h | File | 35 B | 0644 |
|
| asm-prototypes.h | File | 2.17 KB | 0644 |
|
| asm.h | File | 154 B | 0644 |
|
| async_tx.h | File | 908 B | 0644 |
|
| atomic.h | File | 11.55 KB | 0644 |
|
| backlight.h | File | 1.02 KB | 0644 |
|
| barrier.h | File | 3.95 KB | 0644 |
|
| bitops.h | File | 9.13 KB | 0644 |
|
| bootx.h | File | 1.12 KB | 0644 |
|
| bpf_perf_event.h | File | 233 B | 0644 |
|
| btext.h | File | 1006 B | 0644 |
|
| bug.h | File | 3.23 KB | 0644 |
|
| cache.h | File | 2.9 KB | 0644 |
|
| cacheflush.h | File | 3.91 KB | 0644 |
|
| cell-pmu.h | File | 3.41 KB | 0644 |
|
| cell-regs.h | File | 9.57 KB | 0644 |
|
| checksum.h | File | 5.73 KB | 0644 |
|
| clocksource.h | File | 185 B | 0644 |
|
| cmpxchg.h | File | 16.28 KB | 0644 |
|
| code-patching-asm.h | File | 397 B | 0644 |
|
| compat.h | File | 2.5 KB | 0644 |
|
| context_tracking.h | File | 250 B | 0644 |
|
| copro.h | File | 593 B | 0644 |
|
| cpm.h | File | 25 B | 0644 |
|
| cpm1.h | File | 21.06 KB | 0644 |
|
| cpm2.h | File | 48.4 KB | 0644 |
|
| cpu_has_feature.h | File | 1.31 KB | 0644 |
|
| cpu_setup.h | File | 2.48 KB | 0644 |
|
| cpufeature.h | File | 1.04 KB | 0644 |
|
| cpuidle.h | File | 3.33 KB | 0644 |
|
| cputable.h | File | 23.17 KB | 0644 |
|
| cputhreads.h | File | 2.83 KB | 0644 |
|
| cputime.h | File | 2.22 KB | 0644 |
|
| crashdump-ppc64.h | File | 624 B | 0644 |
|
| current.h | File | 680 B | 0644 |
|
| dbdma.h | File | 3.72 KB | 0644 |
|
| dbell.h | File | 3.93 KB | 0644 |
|
| dcr-generic.h | File | 930 B | 0644 |
|
| dcr-mmio.h | File | 1 KB | 0644 |
|
| dcr-native.h | File | 3.77 KB | 0644 |
|
| dcr-regs.h | File | 5.71 KB | 0644 |
|
| dcr.h | File | 2.06 KB | 0644 |
|
| debug.h | File | 1.9 KB | 0644 |
|
| delay.h | File | 3.22 KB | 0644 |
|
| device.h | File | 1.09 KB | 0644 |
|
| disassemble.h | File | 2.14 KB | 0644 |
|
| dma-direct.h | File | 391 B | 0644 |
|
| dma.h | File | 10.38 KB | 0644 |
|
| drmem.h | File | 2.94 KB | 0644 |
|
| dt_cpu_ftrs.h | File | 756 B | 0644 |
|
| dtl.h | File | 1.06 KB | 0644 |
|
| edac.h | File | 1.08 KB | 0644 |
|
| eeh.h | File | 14.79 KB | 0644 |
|
| eeh_event.h | File | 826 B | 0644 |
|
| ehv_pic.h | File | 963 B | 0644 |
|
| elf.h | File | 6.48 KB | 0644 |
|
| elfnote.h | File | 527 B | 0644 |
|
| emergency-restart.h | File | 43 B | 0644 |
|
| emulated_ops.h | File | 2.02 KB | 0644 |
|
| epapr_hcalls.h | File | 16.43 KB | 0644 |
|
| exception-64e.h | File | 5.72 KB | 0644 |
|
| exception-64s.h | File | 4.25 KB | 0644 |
|
| exec.h | File | 246 B | 0644 |
|
| extable.h | File | 1.18 KB | 0644 |
|
| fadump-internal.h | File | 5.35 KB | 0644 |
|
| fadump.h | File | 1.38 KB | 0644 |
|
| feature-fixups.h | File | 9.7 KB | 0644 |
|
| firmware.h | File | 5.47 KB | 0644 |
|
| fixmap.h | File | 3.46 KB | 0644 |
|
| floppy.h | File | 5.01 KB | 0644 |
|
| fpu.h | File | 509 B | 0644 |
|
| fsl_gtm.h | File | 1.17 KB | 0644 |
|
| fsl_hcalls.h | File | 17.2 KB | 0644 |
|
| fsl_lbc.h | File | 10.24 KB | 0644 |
|
| fsl_pamu_stash.h | File | 411 B | 0644 |
|
| fsl_pm.h | File | 1.16 KB | 0644 |
|
| ftrace.h | File | 5.08 KB | 0644 |
|
| futex.h | File | 2.19 KB | 0644 |
|
| grackle.h | File | 331 B | 0644 |
|
| guest-state-buffer.h | File | 27.38 KB | 0644 |
|
| hardirq.h | File | 948 B | 0644 |
|
| head-64.h | File | 5.36 KB | 0644 |
|
| heathrow.h | File | 2.53 KB | 0644 |
|
| highmem.h | File | 2.03 KB | 0644 |
|
| hmi.h | File | 971 B | 0644 |
|
| hugetlb.h | File | 2.3 KB | 0644 |
|
| hvcall.h | File | 22.61 KB | 0644 |
|
| hvconsole.h | File | 800 B | 0644 |
|
| hvcserver.h | File | 1.44 KB | 0644 |
|
| hvsi.h | File | 2.83 KB | 0644 |
|
| hw_breakpoint.h | File | 3.69 KB | 0644 |
|
| hw_irq.h | File | 12.64 KB | 0644 |
|
| hydra.h | File | 2.88 KB | 0644 |
|
| i8259.h | File | 361 B | 0644 |
|
| ibmebus.h | File | 2.18 KB | 0644 |
|
| icswx.h | File | 4.97 KB | 0644 |
|
| idle.h | File | 2.37 KB | 0644 |
|
| imc-pmu.h | File | 3.91 KB | 0644 |
|
| immap_cpm2.h | File | 10.5 KB | 0644 |
|
| inst.h | File | 3.9 KB | 0644 |
|
| interrupt.h | File | 20.21 KB | 0644 |
|
| io-defs.h | File | 3.09 KB | 0644 |
|
| io-workarounds.h | File | 1.28 KB | 0644 |
|
| io.h | File | 30.97 KB | 0644 |
|
| io_event_irq.h | File | 1.71 KB | 0644 |
|
| iommu.h | File | 10.19 KB | 0644 |
|
| ipic.h | File | 3.07 KB | 0644 |
|
| irq.h | File | 1.33 KB | 0644 |
|
| irq_work.h | File | 213 B | 0644 |
|
| irqflags.h | File | 239 B | 0644 |
|
| isa-bridge.h | File | 654 B | 0644 |
|
| jump_label.h | File | 1.3 KB | 0644 |
|
| kasan.h | File | 2.27 KB | 0644 |
|
| kdebug.h | File | 291 B | 0644 |
|
| kdump.h | File | 1.37 KB | 0644 |
|
| kexec.h | File | 6 KB | 0644 |
|
| kexec_ranges.h | File | 743 B | 0644 |
|
| keylargo.h | File | 10.8 KB | 0644 |
|
| kfence.h | File | 1.16 KB | 0644 |
|
| kgdb.h | File | 2.11 KB | 0644 |
|
| kprobes.h | File | 2.64 KB | 0644 |
|
| kup.h | File | 4.21 KB | 0644 |
|
| kvm_asm.h | File | 4.89 KB | 0644 |
|
| kvm_book3s.h | File | 23.17 KB | 0644 |
|
| kvm_book3s_32.h | File | 816 B | 0644 |
|
| kvm_book3s_64.h | File | 18.78 KB | 0644 |
|
| kvm_book3s_asm.h | File | 3.56 KB | 0644 |
|
| kvm_book3s_uvmem.h | File | 2.67 KB | 0644 |
|
| kvm_booke.h | File | 2.41 KB | 0644 |
|
| kvm_booke_hv_asm.h | File | 1.91 KB | 0644 |
|
| kvm_fpu.h | File | 2.15 KB | 0644 |
|
| kvm_guest.h | File | 573 B | 0644 |
|
| kvm_host.h | File | 22.43 KB | 0644 |
|
| kvm_para.h | File | 752 B | 0644 |
|
| kvm_ppc.h | File | 37.63 KB | 0644 |
|
| libata-portmap.h | File | 249 B | 0644 |
|
| linkage.h | File | 508 B | 0644 |
|
| livepatch.h | File | 604 B | 0644 |
|
| local.h | File | 3.36 KB | 0644 |
|
| lppaca.h | File | 4.53 KB | 0644 |
|
| lv1call.h | File | 18.12 KB | 0644 |
|
| machdep.h | File | 8.74 KB | 0644 |
|
| macio.h | File | 3.93 KB | 0644 |
|
| mc146818rtc.h | File | 736 B | 0644 |
|
| mce.h | File | 6.58 KB | 0644 |
|
| mediabay.h | File | 1.34 KB | 0644 |
|
| mem_encrypt.h | File | 456 B | 0644 |
|
| membarrier.h | File | 877 B | 0644 |
|
| mman.h | File | 1.11 KB | 0644 |
|
| mmiowb.h | File | 374 B | 0644 |
|
| mmu.h | File | 10.63 KB | 0644 |
|
| mmu_context.h | File | 8.67 KB | 0644 |
|
| mmzone.h | File | 902 B | 0644 |
|
| module.h | File | 2.38 KB | 0644 |
|
| module.lds.h | File | 95 B | 0644 |
|
| mpc5121.h | File | 3.77 KB | 0644 |
|
| mpc52xx.h | File | 9.76 KB | 0644 |
|
| mpc52xx_psc.h | File | 9.89 KB | 0644 |
|
| mpc5xxx.h | File | 610 B | 0644 |
|
| mpc6xx.h | File | 143 B | 0644 |
|
| mpc85xx.h | File | 2.33 KB | 0644 |
|
| mpic.h | File | 13.98 KB | 0644 |
|
| mpic_msgr.h | File | 3.36 KB | 0644 |
|
| mpic_timer.h | File | 1.16 KB | 0644 |
|
| msi_bitmap.h | File | 867 B | 0644 |
|
| nmi.h | File | 372 B | 0644 |
|
| nvram.h | File | 2.77 KB | 0644 |
|
| ohare.h | File | 1.64 KB | 0644 |
|
| opal-api.h | File | 30.97 KB | 0644 |
|
| opal.h | File | 17.01 KB | 0644 |
|
| paca.h | File | 8.66 KB | 0644 |
|
| page.h | File | 8.64 KB | 0644 |
|
| page_32.h | File | 1.51 KB | 0644 |
|
| page_64.h | File | 2.65 KB | 0644 |
|
| papr-sysparm.h | File | 1.51 KB | 0644 |
|
| paravirt.h | File | 6.18 KB | 0644 |
|
| paravirt_api_clock.h | File | 65 B | 0644 |
|
| parport.h | File | 960 B | 0644 |
|
| pasemi_dma.h | File | 22.73 KB | 0644 |
|
| pci-bridge.h | File | 9.36 KB | 0644 |
|
| pci.h | File | 3.51 KB | 0644 |
|
| percpu.h | File | 782 B | 0644 |
|
| perf_event.h | File | 1.47 KB | 0644 |
|
| perf_event_fsl_emb.h | File | 1.22 KB | 0644 |
|
| perf_event_server.h | File | 7.01 KB | 0644 |
|
| pgalloc.h | File | 2.2 KB | 0644 |
|
| pgtable-be-types.h | File | 2.37 KB | 0644 |
|
| pgtable-masks.h | File | 1.11 KB | 0644 |
|
| pgtable-types.h | File | 2.23 KB | 0644 |
|
| pgtable.h | File | 5.99 KB | 0644 |
|
| pkeys.h | File | 4.18 KB | 0644 |
|
| plpar_wrappers.h | File | 14.62 KB | 0644 |
|
| plpks.h | File | 5.09 KB | 0644 |
|
| pmac_feature.h | File | 13.35 KB | 0644 |
|
| pmac_low_i2c.h | File | 3.03 KB | 0644 |
|
| pmac_pfunc.h | File | 8.04 KB | 0644 |
|
| pmc.h | File | 1.09 KB | 0644 |
|
| pmi.h | File | 1.15 KB | 0644 |
|
| pnv-ocxl.h | File | 3 KB | 0644 |
|
| pnv-pci.h | File | 2.4 KB | 0644 |
|
| powernv.h | File | 454 B | 0644 |
|
| ppc-opcode.h | File | 32.59 KB | 0644 |
|
| ppc-pci.h | File | 2.77 KB | 0644 |
|
| ppc4xx.h | File | 328 B | 0644 |
|
| ppc_asm.h | File | 23.13 KB | 0644 |
|
| probes.h | File | 2.46 KB | 0644 |
|
| processor.h | File | 13.06 KB | 0644 |
|
| prom.h | File | 7 KB | 0644 |
|
| ps3.h | File | 14.84 KB | 0644 |
|
| ps3av.h | File | 22.81 KB | 0644 |
|
| ps3gpu.h | File | 1.88 KB | 0644 |
|
| ps3stor.h | File | 1.38 KB | 0644 |
|
| pte-walk.h | File | 1.52 KB | 0644 |
|
| ptrace.h | File | 11.81 KB | 0644 |
|
| qspinlock.h | File | 4.76 KB | 0644 |
|
| qspinlock_types.h | File | 1.59 KB | 0644 |
|
| reg.h | File | 63.24 KB | 0644 |
|
| reg_8xx.h | File | 2.8 KB | 0644 |
|
| reg_booke.h | File | 28.05 KB | 0644 |
|
| reg_fsl_emb.h | File | 3.94 KB | 0644 |
|
| rheap.h | File | 2.52 KB | 0644 |
|
| rio.h | File | 424 B | 0644 |
|
| rtas-types.h | File | 2.84 KB | 0644 |
|
| rtas-work-area.h | File | 2.75 KB | 0644 |
|
| rtas.h | File | 23.33 KB | 0644 |
|
| runlatch.h | File | 1.15 KB | 0644 |
|
| seccomp.h | File | 1.02 KB | 0644 |
|
| sections.h | File | 2.04 KB | 0644 |
|
| secure_boot.h | File | 476 B | 0644 |
|
| security_features.h | File | 3.43 KB | 0644 |
|
| secvar.h | File | 994 B | 0644 |
|
| serial.h | File | 473 B | 0644 |
|
| set_memory.h | File | 1.41 KB | 0644 |
|
| setjmp.h | File | 400 B | 0644 |
|
| setup.h | File | 2.79 KB | 0644 |
|
| sfp-machine.h | File | 12.38 KB | 0644 |
|
| shmparam.h | File | 206 B | 0644 |
|
| signal.h | File | 506 B | 0644 |
|
| simple_spinlock.h | File | 6.1 KB | 0644 |
|
| simple_spinlock_types.h | File | 487 B | 0644 |
|
| smp.h | File | 7.01 KB | 0644 |
|
| smu.h | File | 19.33 KB | 0644 |
|
| sparsemem.h | File | 843 B | 0644 |
|
| spinlock.h | File | 474 B | 0644 |
|
| spinlock_types.h | File | 380 B | 0644 |
|
| spu.h | File | 23.41 KB | 0644 |
|
| spu_csa.h | File | 6.02 KB | 0644 |
|
| spu_info.h | File | 272 B | 0644 |
|
| spu_priv1.h | File | 5.01 KB | 0644 |
|
| sstep.h | File | 4.6 KB | 0644 |
|
| stackprotector.h | File | 604 B | 0644 |
|
| stacktrace.h | File | 297 B | 0644 |
|
| static_call.h | File | 1.04 KB | 0644 |
|
| string.h | File | 2.8 KB | 0644 |
|
| svm.h | File | 591 B | 0644 |
|
| swab.h | File | 173 B | 0644 |
|
| swiotlb.h | File | 413 B | 0644 |
|
| switch_to.h | File | 3.15 KB | 0644 |
|
| synch.h | File | 2.11 KB | 0644 |
|
| syscall.h | File | 2.95 KB | 0644 |
|
| syscall_wrapper.h | File | 1.63 KB | 0644 |
|
| syscalls.h | File | 5.05 KB | 0644 |
|
| syscalls_32.h | File | 1.58 KB | 0644 |
|
| systemcfg.h | File | 1.69 KB | 0644 |
|
| task_size_32.h | File | 544 B | 0644 |
|
| task_size_64.h | File | 2.57 KB | 0644 |
|
| tce.h | File | 892 B | 0644 |
|
| text-patching.h | File | 7.37 KB | 0644 |
|
| thread_info.h | File | 7.7 KB | 0644 |
|
| time.h | File | 2.92 KB | 0644 |
|
| timex.h | File | 463 B | 0644 |
|
| tlb.h | File | 2.3 KB | 0644 |
|
| tlbflush.h | File | 271 B | 0644 |
|
| tm.h | File | 624 B | 0644 |
|
| topology.h | File | 4.07 KB | 0644 |
|
| trace.h | File | 7.26 KB | 0644 |
|
| trace_clock.h | File | 372 B | 0644 |
|
| tsi108.h | File | 3.19 KB | 0644 |
|
| tsi108_irq.h | File | 3.82 KB | 0644 |
|
| tsi108_pci.h | File | 1.16 KB | 0644 |
|
| types.h | File | 573 B | 0644 |
|
| uaccess.h | File | 14.44 KB | 0644 |
|
| udbg.h | File | 1.7 KB | 0644 |
|
| uic.h | File | 403 B | 0644 |
|
| ultravisor-api.h | File | 941 B | 0644 |
|
| ultravisor.h | File | 2.05 KB | 0644 |
|
| uninorth.h | File | 8.21 KB | 0644 |
|
| unistd.h | File | 1.45 KB | 0644 |
|
| uprobes.h | File | 770 B | 0644 |
|
| user.h | File | 1.95 KB | 0644 |
|
| vas.h | File | 7.91 KB | 0644 |
|
| vdso.h | File | 1022 B | 0644 |
|
| vdso_datapage.h | File | 1.72 KB | 0644 |
|
| vermagic.h | File | 612 B | 0644 |
|
| vga.h | File | 1.13 KB | 0644 |
|
| video.h | File | 431 B | 0644 |
|
| vio.h | File | 4.54 KB | 0644 |
|
| vmalloc.h | File | 554 B | 0644 |
|
| vphn.h | File | 802 B | 0644 |
|
| word-at-a-time.h | File | 4.79 KB | 0644 |
|
| xics.h | File | 4.39 KB | 0644 |
|
| xive-regs.h | File | 4.96 KB | 0644 |
|
| xive.h | File | 5.07 KB | 0644 |
|
| xmon.h | File | 733 B | 0644 |
|
| xor.h | File | 1017 B | 0644 |
|
| xor_altivec.h | File | 888 B | 0644 |
|