Lines Matching refs:parser
3672 struct hl_cs_parser *parser,
3680 parser->job_userptr_list, &userptr))
3692 list_add_tail(&userptr->job_node, parser->job_userptr_list);
3705 parser->patched_cb_size +=
3719 struct hl_cs_parser *parser,
3748 parser->patched_cb_size += sizeof(*user_dma_pkt);
3750 rc = gaudi_pin_memory_before_cs(hdev, parser, user_dma_pkt,
3757 struct hl_cs_parser *parser,
3777 parser->patched_cb_size += sizeof(*user_dma_pkt);
3781 if (parser->hw_queue_id <= GAUDI_QUEUE_ID_DMA_0_3)
3784 return gaudi_validate_dma_pkt_host(hdev, parser, user_dma_pkt,
3789 struct hl_cs_parser *parser,
3802 parser->patched_cb_size += sizeof(struct packet_load_and_exe);
3808 struct hl_cs_parser *parser, bool is_mmu)
3813 parser->patched_cb_size = 0;
3816 while (cb_parsed_length < parser->user_cb_size) {
3821 user_pkt = parser->user_cb->kernel_address + cb_parsed_length;
3836 if (cb_parsed_length > parser->user_cb_size) {
3867 rc = gaudi_validate_load_and_exe_pkt(hdev, parser,
3872 parser->contains_dma_pkt = true;
3874 parser->patched_cb_size += pkt_size;
3876 rc = gaudi_validate_dma_pkt_no_mmu(hdev, parser,
3887 parser->patched_cb_size += pkt_size;
3906 parser->patched_cb_size += sizeof(struct packet_msg_prot) * 2;
3912 struct hl_cs_parser *parser,
3931 if (parser->hw_queue_id <= GAUDI_QUEUE_ID_DMA_0_3)
3952 parser->job_userptr_list, &userptr))) {
4031 struct hl_cs_parser *parser)
4038 while (cb_parsed_length < parser->user_cb_size) {
4044 user_pkt = parser->user_cb->kernel_address + cb_parsed_length;
4045 kernel_pkt = parser->patched_cb->kernel_address +
4061 if (cb_parsed_length > parser->user_cb_size) {
4070 rc = gaudi_patch_dma_packet(hdev, parser,
4121 struct hl_cs_parser *parser)
4133 parser->patched_cb_size = parser->user_cb_size +
4137 parser->patched_cb_size, false, false,
4148 parser->patched_cb = hl_cb_get(hdev, &hdev->kernel_cb_mgr,
4151 WARN(!parser->patched_cb, "DMA CB handle invalid 0x%x\n",
4153 if (!parser->patched_cb) {
4159 * The check that parser->user_cb_size <= parser->user_cb->size was done
4162 memcpy(parser->patched_cb->kernel_address,
4163 parser->user_cb->kernel_address,
4164 parser->user_cb_size);
4166 patched_cb_size = parser->patched_cb_size;
4169 user_cb = parser->user_cb;
4170 parser->user_cb = parser->patched_cb;
4171 rc = gaudi_validate_cb(hdev, parser, true);
4172 parser->user_cb = user_cb;
4175 hl_cb_put(parser->patched_cb);
4179 if (patched_cb_size != parser->patched_cb_size) {
4181 hl_cb_put(parser->patched_cb);
4200 struct hl_cs_parser *parser)
4205 rc = gaudi_validate_cb(hdev, parser, false);
4211 parser->patched_cb_size, false, false,
4220 parser->patched_cb = hl_cb_get(hdev, &hdev->kernel_cb_mgr,
4223 WARN(!parser->patched_cb, "DMA CB handle invalid 0x%x\n",
4225 if (!parser->patched_cb) {
4230 rc = gaudi_patch_cb(hdev, parser);
4233 hl_cb_put(parser->patched_cb);
4247 hl_userptr_delete_list(hdev, parser->job_userptr_list);
4252 struct hl_cs_parser *parser)
4257 if (hl_mem_area_inside_range((u64) (uintptr_t) parser->user_cb,
4258 parser->user_cb_size,
4263 if (hl_mem_area_inside_range((u64) (uintptr_t) parser->user_cb,
4264 parser->user_cb_size,
4270 if (hl_mem_area_inside_range((u64) (uintptr_t) parser->user_cb,
4271 parser->user_cb_size,
4278 parser->user_cb, parser->user_cb_size);
4283 static int gaudi_cs_parser(struct hl_device *hdev, struct hl_cs_parser *parser)
4287 if (parser->queue_type == QUEUE_TYPE_INT)
4288 return gaudi_parse_cb_no_ext_queue(hdev, parser);
4291 return gaudi_parse_cb_mmu(hdev, parser);
4293 return gaudi_parse_cb_no_mmu(hdev, parser);