Lines Matching defs:cmd
464 static void its_encode_cmd(struct its_cmd_block *cmd, u8 cmd_nr)
466 its_mask_encode(&cmd->raw_cmd[0], cmd_nr, 7, 0);
469 static void its_encode_devid(struct its_cmd_block *cmd, u32 devid)
471 its_mask_encode(&cmd->raw_cmd[0], devid, 63, 32);
474 static void its_encode_event_id(struct its_cmd_block *cmd, u32 id)
476 its_mask_encode(&cmd->raw_cmd[1], id, 31, 0);
479 static void its_encode_phys_id(struct its_cmd_block *cmd, u32 phys_id)
481 its_mask_encode(&cmd->raw_cmd[1], phys_id, 63, 32);
484 static void its_encode_size(struct its_cmd_block *cmd, u8 size)
486 its_mask_encode(&cmd->raw_cmd[1], size, 4, 0);
489 static void its_encode_itt(struct its_cmd_block *cmd, u64 itt_addr)
491 its_mask_encode(&cmd->raw_cmd[2], itt_addr >> 8, 51, 8);
494 static void its_encode_valid(struct its_cmd_block *cmd, int valid)
496 its_mask_encode(&cmd->raw_cmd[2], !!valid, 63, 63);
499 static void its_encode_target(struct its_cmd_block *cmd, u64 target_addr)
501 its_mask_encode(&cmd->raw_cmd[2], target_addr >> 16, 51, 16);
504 static void its_encode_collection(struct its_cmd_block *cmd, u16 col)
506 its_mask_encode(&cmd->raw_cmd[2], col, 15, 0);
509 static void its_encode_vpeid(struct its_cmd_block *cmd, u16 vpeid)
511 its_mask_encode(&cmd->raw_cmd[1], vpeid, 47, 32);
514 static void its_encode_virt_id(struct its_cmd_block *cmd, u32 virt_id)
516 its_mask_encode(&cmd->raw_cmd[2], virt_id, 31, 0);
519 static void its_encode_db_phys_id(struct its_cmd_block *cmd, u32 db_phys_id)
521 its_mask_encode(&cmd->raw_cmd[2], db_phys_id, 63, 32);
524 static void its_encode_db_valid(struct its_cmd_block *cmd, bool db_valid)
526 its_mask_encode(&cmd->raw_cmd[2], db_valid, 0, 0);
529 static void its_encode_seq_num(struct its_cmd_block *cmd, u16 seq_num)
531 its_mask_encode(&cmd->raw_cmd[0], seq_num, 47, 32);
534 static void its_encode_its_list(struct its_cmd_block *cmd, u16 its_list)
536 its_mask_encode(&cmd->raw_cmd[1], its_list, 15, 0);
539 static void its_encode_vpt_addr(struct its_cmd_block *cmd, u64 vpt_pa)
541 its_mask_encode(&cmd->raw_cmd[3], vpt_pa >> 16, 51, 16);
544 static void its_encode_vpt_size(struct its_cmd_block *cmd, u8 vpt_size)
546 its_mask_encode(&cmd->raw_cmd[3], vpt_size, 4, 0);
549 static void its_encode_vconf_addr(struct its_cmd_block *cmd, u64 vconf_pa)
551 its_mask_encode(&cmd->raw_cmd[0], vconf_pa >> 16, 51, 16);
554 static void its_encode_alloc(struct its_cmd_block *cmd, bool alloc)
556 its_mask_encode(&cmd->raw_cmd[0], alloc, 8, 8);
559 static void its_encode_ptz(struct its_cmd_block *cmd, bool ptz)
561 its_mask_encode(&cmd->raw_cmd[0], ptz, 9, 9);
564 static void its_encode_vmapp_default_db(struct its_cmd_block *cmd,
567 its_mask_encode(&cmd->raw_cmd[1], vpe_db_lpi, 31, 0);
570 static void its_encode_vmovp_default_db(struct its_cmd_block *cmd,
573 its_mask_encode(&cmd->raw_cmd[3], vpe_db_lpi, 31, 0);
576 static void its_encode_db(struct its_cmd_block *cmd, bool db)
578 its_mask_encode(&cmd->raw_cmd[2], db, 63, 63);
581 static void its_encode_sgi_intid(struct its_cmd_block *cmd, u8 sgi)
583 its_mask_encode(&cmd->raw_cmd[0], sgi, 35, 32);
586 static void its_encode_sgi_priority(struct its_cmd_block *cmd, u8 prio)
588 its_mask_encode(&cmd->raw_cmd[0], prio >> 4, 23, 20);
591 static void its_encode_sgi_group(struct its_cmd_block *cmd, bool grp)
593 its_mask_encode(&cmd->raw_cmd[0], grp, 10, 10);
596 static void its_encode_sgi_clear(struct its_cmd_block *cmd, bool clr)
598 its_mask_encode(&cmd->raw_cmd[0], clr, 9, 9);
601 static void its_encode_sgi_enable(struct its_cmd_block *cmd, bool en)
603 its_mask_encode(&cmd->raw_cmd[0], en, 8, 8);
606 static inline void its_fixup_cmd(struct its_cmd_block *cmd)
609 cmd->raw_cmd_le[0] = cpu_to_le64(cmd->raw_cmd[0]);
610 cmd->raw_cmd_le[1] = cpu_to_le64(cmd->raw_cmd[1]);
611 cmd->raw_cmd_le[2] = cpu_to_le64(cmd->raw_cmd[2]);
612 cmd->raw_cmd_le[3] = cpu_to_le64(cmd->raw_cmd[3]);
616 struct its_cmd_block *cmd,
625 its_encode_cmd(cmd, GITS_CMD_MAPD);
626 its_encode_devid(cmd, desc->its_mapd_cmd.dev->device_id);
627 its_encode_size(cmd, size - 1);
628 its_encode_itt(cmd, itt_addr);
629 its_encode_valid(cmd, desc->its_mapd_cmd.valid);
631 its_fixup_cmd(cmd);
637 struct its_cmd_block *cmd,
640 its_encode_cmd(cmd, GITS_CMD_MAPC);
641 its_encode_collection(cmd, desc->its_mapc_cmd.col->col_id);
642 its_encode_target(cmd, desc->its_mapc_cmd.col->target_address);
643 its_encode_valid(cmd, desc->its_mapc_cmd.valid);
645 its_fixup_cmd(cmd);
651 struct its_cmd_block *cmd,
659 its_encode_cmd(cmd, GITS_CMD_MAPTI);
660 its_encode_devid(cmd, desc->its_mapti_cmd.dev->device_id);
661 its_encode_event_id(cmd, desc->its_mapti_cmd.event_id);
662 its_encode_phys_id(cmd, desc->its_mapti_cmd.phys_id);
663 its_encode_collection(cmd, col->col_id);
665 its_fixup_cmd(cmd);
671 struct its_cmd_block *cmd,
679 its_encode_cmd(cmd, GITS_CMD_MOVI);
680 its_encode_devid(cmd, desc->its_movi_cmd.dev->device_id);
681 its_encode_event_id(cmd, desc->its_movi_cmd.event_id);
682 its_encode_collection(cmd, desc->its_movi_cmd.col->col_id);
684 its_fixup_cmd(cmd);
690 struct its_cmd_block *cmd,
698 its_encode_cmd(cmd, GITS_CMD_DISCARD);
699 its_encode_devid(cmd, desc->its_discard_cmd.dev->device_id);
700 its_encode_event_id(cmd, desc->its_discard_cmd.event_id);
702 its_fixup_cmd(cmd);
708 struct its_cmd_block *cmd,
716 its_encode_cmd(cmd, GITS_CMD_INV);
717 its_encode_devid(cmd, desc->its_inv_cmd.dev->device_id);
718 its_encode_event_id(cmd, desc->its_inv_cmd.event_id);
720 its_fixup_cmd(cmd);
726 struct its_cmd_block *cmd,
734 its_encode_cmd(cmd, GITS_CMD_INT);
735 its_encode_devid(cmd, desc->its_int_cmd.dev->device_id);
736 its_encode_event_id(cmd, desc->its_int_cmd.event_id);
738 its_fixup_cmd(cmd);
744 struct its_cmd_block *cmd,
752 its_encode_cmd(cmd, GITS_CMD_CLEAR);
753 its_encode_devid(cmd, desc->its_clear_cmd.dev->device_id);
754 its_encode_event_id(cmd, desc->its_clear_cmd.event_id);
756 its_fixup_cmd(cmd);
762 struct its_cmd_block *cmd,
765 its_encode_cmd(cmd, GITS_CMD_INVALL);
766 its_encode_collection(cmd, desc->its_invall_cmd.col->col_id);
768 its_fixup_cmd(cmd);
774 struct its_cmd_block *cmd,
777 its_encode_cmd(cmd, GITS_CMD_VINVALL);
778 its_encode_vpeid(cmd, desc->its_vinvall_cmd.vpe->vpe_id);
780 its_fixup_cmd(cmd);
786 struct its_cmd_block *cmd,
793 its_encode_cmd(cmd, GITS_CMD_VMAPP);
794 its_encode_vpeid(cmd, desc->its_vmapp_cmd.vpe->vpe_id);
795 its_encode_valid(cmd, desc->its_vmapp_cmd.valid);
800 its_encode_alloc(cmd, alloc);
809 its_encode_target(cmd, target);
810 its_encode_vpt_addr(cmd, vpt_addr);
811 its_encode_vpt_size(cmd, LPI_NRBITS - 1);
820 its_encode_alloc(cmd, alloc);
828 its_encode_ptz(cmd, false);
829 its_encode_vconf_addr(cmd, vconf_addr);
830 its_encode_vmapp_default_db(cmd, desc->its_vmapp_cmd.vpe->vpe_db_lpi);
833 its_fixup_cmd(cmd);
839 struct its_cmd_block *cmd,
849 its_encode_cmd(cmd, GITS_CMD_VMAPTI);
850 its_encode_devid(cmd, desc->its_vmapti_cmd.dev->device_id);
851 its_encode_vpeid(cmd, desc->its_vmapti_cmd.vpe->vpe_id);
852 its_encode_event_id(cmd, desc->its_vmapti_cmd.event_id);
853 its_encode_db_phys_id(cmd, db);
854 its_encode_virt_id(cmd, desc->its_vmapti_cmd.virt_id);
856 its_fixup_cmd(cmd);
862 struct its_cmd_block *cmd,
872 its_encode_cmd(cmd, GITS_CMD_VMOVI);
873 its_encode_devid(cmd, desc->its_vmovi_cmd.dev->device_id);
874 its_encode_vpeid(cmd, desc->its_vmovi_cmd.vpe->vpe_id);
875 its_encode_event_id(cmd, desc->its_vmovi_cmd.event_id);
876 its_encode_db_phys_id(cmd, db);
877 its_encode_db_valid(cmd, true);
879 its_fixup_cmd(cmd);
885 struct its_cmd_block *cmd,
891 its_encode_cmd(cmd, GITS_CMD_VMOVP);
892 its_encode_seq_num(cmd, desc->its_vmovp_cmd.seq_num);
893 its_encode_its_list(cmd, desc->its_vmovp_cmd.its_list);
894 its_encode_vpeid(cmd, desc->its_vmovp_cmd.vpe->vpe_id);
895 its_encode_target(cmd, target);
898 its_encode_db(cmd, true);
899 its_encode_vmovp_default_db(cmd, desc->its_vmovp_cmd.vpe->vpe_db_lpi);
902 its_fixup_cmd(cmd);
908 struct its_cmd_block *cmd,
916 its_encode_cmd(cmd, GITS_CMD_INV);
917 its_encode_devid(cmd, desc->its_inv_cmd.dev->device_id);
918 its_encode_event_id(cmd, desc->its_inv_cmd.event_id);
920 its_fixup_cmd(cmd);
926 struct its_cmd_block *cmd,
934 its_encode_cmd(cmd, GITS_CMD_INT);
935 its_encode_devid(cmd, desc->its_int_cmd.dev->device_id);
936 its_encode_event_id(cmd, desc->its_int_cmd.event_id);
938 its_fixup_cmd(cmd);
944 struct its_cmd_block *cmd,
952 its_encode_cmd(cmd, GITS_CMD_CLEAR);
953 its_encode_devid(cmd, desc->its_clear_cmd.dev->device_id);
954 its_encode_event_id(cmd, desc->its_clear_cmd.event_id);
956 its_fixup_cmd(cmd);
962 struct its_cmd_block *cmd,
968 its_encode_cmd(cmd, GITS_CMD_INVDB);
969 its_encode_vpeid(cmd, desc->its_invdb_cmd.vpe->vpe_id);
971 its_fixup_cmd(cmd);
977 struct its_cmd_block *cmd,
983 its_encode_cmd(cmd, GITS_CMD_VSGI);
984 its_encode_vpeid(cmd, desc->its_vsgi_cmd.vpe->vpe_id);
985 its_encode_sgi_intid(cmd, desc->its_vsgi_cmd.sgi);
986 its_encode_sgi_priority(cmd, desc->its_vsgi_cmd.priority);
987 its_encode_sgi_group(cmd, desc->its_vsgi_cmd.group);
988 its_encode_sgi_clear(cmd, desc->its_vsgi_cmd.clear);
989 its_encode_sgi_enable(cmd, desc->its_vsgi_cmd.enable);
991 its_fixup_cmd(cmd);
1019 struct its_cmd_block *cmd;
1032 cmd = its->cmd_write++;
1039 cmd->raw_cmd[0] = 0;
1040 cmd->raw_cmd[1] = 0;
1041 cmd->raw_cmd[2] = 0;
1042 cmd->raw_cmd[3] = 0;
1044 return cmd;
1056 static void its_flush_cmd(struct its_node *its, struct its_cmd_block *cmd)
1063 gic_flush_dcache_to_poc(cmd, sizeof(*cmd));
1119 struct its_cmd_block *cmd, *sync_cmd, *next_cmd; \
1126 cmd = its_allocate_entry(its); \
1127 if (!cmd) { /* We're soooooo screewed... */ \
1131 sync_obj = builder(its, cmd, desc); \
1132 its_flush_cmd(its, cmd); \
1149 pr_err_ratelimited("ITS cmd %ps failed\n", builder); \
3982 void (*cmd)(struct its_device *, u32))
3989 cmd(vpe_proxy.dev, vpe->vpe_proxy_event);
5171 pr_info("ITS: using cache flushing for cmd queue\n");