Lines Matching defs:obj

74 	struct spmc_shmem_obj *obj;
92 /* Ensure the obj size has not overflowed. */
104 obj = (struct spmc_shmem_obj *)(state->data + state->allocated);
105 obj->desc = (struct ffa_mtd) {0};
106 obj->desc_size = desc_size;
107 obj->desc_filled = 0;
108 obj->in_use = 0;
110 return obj;
116 * @obj: Object to free.
118 * Release memory used by @obj. Other objects may move, so on return all
120 * just @obj.
127 struct spmc_shmem_obj *obj)
129 size_t free_size = spmc_shmem_obj_size(obj->desc_size);
130 uint8_t *shift_dest = (uint8_t *)obj;
154 struct spmc_shmem_obj *obj = (struct spmc_shmem_obj *)curr;
156 if (obj->desc.handle == handle) {
157 return obj;
159 curr += spmc_shmem_obj_size(obj->desc_size);
179 struct spmc_shmem_obj *obj = (struct spmc_shmem_obj *)curr;
181 *offset += spmc_shmem_obj_size(obj->desc_size);
183 return obj;
229 * @obj: Object containing ffa_memory_region_descriptor.
235 spmc_shmem_obj_get_comp_mrd(struct spmc_shmem_obj *obj, uint32_t ffa_version)
243 struct ffa_emad_v1_0 *emad = spmc_shmem_obj_get_emad(&obj->desc, 0,
254 ((uint8_t *)(&obj->desc) + emad->comp_mrd_offset);
261 * @obj: The shared memory object containing the descriptor
265 bool spmc_shmem_obj_validate_id(struct spmc_shmem_obj *obj, uint16_t sp_id)
268 struct ffa_mtd *desc = &obj->desc;
269 size_t desc_size = obj->desc_size;
655 /* Get a new obj to store the v1.0 descriptor. */
773 * @obj: Object containing ffa_memory_region_descriptor.
779 static int spmc_shmem_check_obj(struct spmc_shmem_obj *obj,
793 if (obj->desc_filled != obj->desc_size) {
795 __func__, obj->desc_filled, obj->desc_size);
799 if (spmc_validate_mtd_start(&obj->desc, ffa_version,
800 obj->desc_filled, obj->desc_size)) {
806 first_emad = spmc_shmem_obj_get_emad(&obj->desc, 0,
808 end_emad = emad_advance(first_emad, obj->desc.emad_count * emad_size);
859 (const uint8_t *)&obj->desc);
879 size = obj->desc_size;
884 __func__, comp_mrd_offset, obj->desc_size);
892 __func__, comp_mrd_offset, obj->desc_size);
900 ((const uint8_t *)(&obj->desc) + comp_mrd_offset);
912 if (expected_size != obj->desc_size) {
914 __func__, expected_size, obj->desc_size);
955 * @obj: Object containing ffa_memory_region_descriptor.
960 static int spmc_shmem_check_state_obj(struct spmc_shmem_obj *obj,
967 struct ffa_comp_mrd *requested_mrd = spmc_shmem_obj_get_comp_mrd(obj,
982 if ((obj->desc.handle != inflight_obj->desc.handle) &&
983 (obj->desc_size == obj->desc_filled)) {
1002 struct spmc_shmem_obj *obj,
1026 if (fragment_length > obj->desc_size - obj->desc_filled) {
1028 fragment_length, obj->desc_size - obj->desc_filled);
1033 memcpy((uint8_t *)&obj->desc + obj->desc_filled,
1037 if (ffa_is_secure_world_id(obj->desc.sender_id)) {
1039 __func__, obj->desc.sender_id);
1045 if ((obj->desc.memory_region_attributes & FFA_MEM_ATTR_NS_BIT) != 0U) {
1055 if (obj->desc.flags != 0U && mtd_flag != 0U &&
1056 (obj->desc.flags != mtd_flag)) {
1058 __func__, obj->desc.flags, mtd_flag);
1063 if (obj->desc_filled == 0U) {
1065 ret = spmc_validate_mtd_start(&obj->desc, ffa_version,
1066 fragment_length, obj->desc_size);
1071 obj->desc.handle = spmc_shmem_obj_state.next_handle++;
1072 obj->desc.flags |= mtd_flag;
1075 obj->desc_filled += fragment_length;
1077 handle_low = (uint32_t)obj->desc.handle;
1078 handle_high = obj->desc.handle >> 32;
1080 if (obj->desc_filled != obj->desc_size) {
1082 handle_high, obj->desc_filled,
1083 (uint32_t)obj->desc.sender_id << 16, 0, 0, 0);
1088 ret = spmc_shmem_check_obj(obj, ffa_version);
1093 ret = spmc_shmem_check_state_obj(obj, ffa_version);
1109 spmc_shm_get_v1_1_descriptor_size((void *) &obj->desc,
1110 obj->desc_size);
1117 /* Get a new obj to store the v1.1 descriptor. */
1129 if (!spmc_shm_convert_shmem_obj_from_v1_0(v1_1_obj, obj)) {
1139 mem_handle = obj->desc.handle;
1140 spmc_shmem_obj_free(&spmc_shmem_obj_state, obj);
1141 obj = spmc_shmem_obj_lookup(&spmc_shmem_obj_state, mem_handle);
1142 if (obj == NULL) {
1151 ret = plat_spmc_shmem_begin(&obj->desc);
1161 spmc_shmem_obj_free(&spmc_shmem_obj_state, obj);
1194 struct spmc_shmem_obj *obj;
1242 obj = spmc_shmem_obj_alloc(&spmc_shmem_obj_state, total_length);
1243 if (obj == NULL) {
1249 ret = spmc_ffa_fill_desc(mbox, obj, fragment_length, mtd_flag,
1288 struct spmc_shmem_obj *obj;
1293 obj = spmc_shmem_obj_lookup(&spmc_shmem_obj_state, mem_handle);
1294 if (obj == NULL) {
1301 desc_sender_id = (uint32_t)obj->desc.sender_id << 16;
1309 if (obj->desc_filled == obj->desc_size) {
1311 obj->desc_filled);
1317 ret = spmc_ffa_fill_desc(mbox, obj, fragment_length, 0, ffa_version,
1401 struct spmc_shmem_obj *obj = NULL;
1445 __func__, obj->desc.emad_count);
1465 obj = spmc_shmem_obj_lookup(&spmc_shmem_obj_state, req->handle);
1466 if (obj == NULL) {
1471 if (obj->desc_filled != obj->desc_size) {
1473 __func__, obj->desc_filled, obj->desc_size);
1478 if (req->emad_count != 0U && req->sender_id != obj->desc.sender_id) {
1480 __func__, req->sender_id, obj->desc.sender_id);
1485 if (req->emad_count != 0U && req->tag != obj->desc.tag) {
1487 __func__, req->tag, obj->desc.tag);
1492 if (req->emad_count != 0U && req->emad_count != obj->desc.emad_count) {
1494 __func__, req->emad_count, obj->desc.emad_count);
1508 (obj->desc.flags & FFA_MTD_FLAG_TYPE_MASK)) {
1514 __func__, req->flags, obj->desc.flags);
1532 if (!spmc_shmem_obj_validate_id(obj, sp_ctx->sp_id)) {
1570 for (size_t j = 0; j < obj->desc.emad_count; j++) {
1572 &obj->desc, j, MAKE_FFA_VERSION(1, 1),
1594 obj->in_use++;
1602 ret = spmc_populate_ffa_v1_0_descriptor(resp, obj, buf_size, 0,
1610 copy_size = MIN(obj->desc_size, buf_size);
1611 out_desc_size = obj->desc_size;
1613 memcpy(resp, &obj->desc, copy_size);
1663 struct spmc_shmem_obj *obj;
1675 obj = spmc_shmem_obj_lookup(&spmc_shmem_obj_state, mem_handle);
1676 if (obj == NULL) {
1683 desc_sender_id = (uint32_t)obj->desc.sender_id << 16;
1691 if (fragment_offset >= obj->desc_size) {
1693 __func__, fragment_offset, obj->desc_size);
1723 ret = spmc_populate_ffa_v1_0_descriptor(mbox->rx_buffer, obj,
1733 full_copy_size = obj->desc_size - fragment_offset;
1736 src = &obj->desc;
1777 struct spmc_shmem_obj *obj;
1811 obj = spmc_shmem_obj_lookup(&spmc_shmem_obj_state, req->handle);
1812 if (obj == NULL) {
1837 if (!spmc_shmem_obj_validate_id(obj, sp_ctx->sp_id)) {
1844 if (obj->in_use == 0U) {
1848 obj->in_use--;
1886 struct spmc_shmem_obj *obj;
1903 obj = spmc_shmem_obj_lookup(&spmc_shmem_obj_state, mem_handle);
1904 if (obj == NULL) {
1908 if (obj->in_use != 0U) {
1913 if (obj->desc_filled != obj->desc_size) {
1915 __func__, obj->desc_filled, obj->desc_size);
1921 ret = plat_spmc_shmem_reclaim(&obj->desc);
1926 spmc_shmem_obj_free(&spmc_shmem_obj_state, obj);