Lines Matching refs:cmd

274 static int do_complete_ppr_request(struct domain *d, cmd_entry_t *cmd)  in do_complete_ppr_request()  argument
279 dev_id = machine_bdf(d, iommu_get_devid_from_cmd(cmd->data[0])); in do_complete_ppr_request()
290 iommu_set_devid_to_cmd(&cmd->data[0], dev_id); in do_complete_ppr_request()
291 amd_iommu_send_guest_cmd(iommu, cmd->data); in do_complete_ppr_request()
296 static int do_invalidate_pages(struct domain *d, cmd_entry_t *cmd) in do_invalidate_pages() argument
301 gdom_id = get_field_from_reg_u32(cmd->data[1], in do_invalidate_pages()
306 set_field_in_reg_u32(hdom_id, cmd->data[1], in do_invalidate_pages()
308 IOMMU_INV_IOMMU_PAGES_DOMAIN_ID_SHIFT, &cmd->data[1]); in do_invalidate_pages()
311 amd_iommu_send_guest_cmd(iommu, cmd->data); in do_invalidate_pages()
316 static int do_invalidate_all(struct domain *d, cmd_entry_t *cmd) in do_invalidate_all() argument
326 static int do_invalidate_iotlb_pages(struct domain *d, cmd_entry_t *cmd) in do_invalidate_iotlb_pages() argument
331 dev_id = machine_bdf(d, iommu_get_devid_from_cmd(cmd->data[0])); in do_invalidate_iotlb_pages()
341 iommu_set_devid_to_cmd(&cmd->data[0], dev_id); in do_invalidate_iotlb_pages()
342 amd_iommu_send_guest_cmd(iommu, cmd->data); in do_invalidate_iotlb_pages()
347 static int do_completion_wait(struct domain *d, cmd_entry_t *cmd) in do_completion_wait() argument
356 i = iommu_get_bit(cmd->data[0], IOMMU_COMP_WAIT_I_FLAG_SHIFT); in do_completion_wait()
357 s = iommu_get_bit(cmd->data[0], IOMMU_COMP_WAIT_S_FLAG_SHIFT); in do_completion_wait()
367 data = (uint64_t)cmd->data[3] << 32 | cmd->data[2]; in do_completion_wait()
368 gaddr_lo = get_field_from_reg_u32(cmd->data[0], in do_completion_wait()
371 gaddr_hi = get_field_from_reg_u32(cmd->data[1], in do_completion_wait()
397 static int do_invalidate_dte(struct domain *d, cmd_entry_t *cmd) in do_invalidate_dte() argument
409 gbdf = iommu_get_devid_from_cmd(cmd->data[0]); in do_invalidate_dte()
472 cmd_entry_t *cmd, *cmd_base; in guest_iommu_process_command() local
508 cmd = cmd_base + head % entries_per_page; in guest_iommu_process_command()
510 opcode = get_field_from_reg_u32(cmd->data[1], in guest_iommu_process_command()
516 ret = do_completion_wait(d, cmd); in guest_iommu_process_command()
519 ret = do_invalidate_dte(d, cmd); in guest_iommu_process_command()
522 ret = do_invalidate_pages(d, cmd); in guest_iommu_process_command()
525 ret = do_invalidate_iotlb_pages(d, cmd); in guest_iommu_process_command()
530 ret = do_complete_ppr_request(d, cmd); in guest_iommu_process_command()
533 ret = do_invalidate_all(d, cmd); in guest_iommu_process_command()