• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/pci/

Lines Matching refs:qi

834 static inline void reclaim_free_desc(struct q_inval *qi)
836 while (qi->desc_status[qi->free_tail] == QI_DONE ||
837 qi->desc_status[qi->free_tail] == QI_ABORT) {
838 qi->desc_status[qi->free_tail] = QI_FREE;
839 qi->free_tail = (qi->free_tail + 1) % QI_LENGTH;
840 qi->free_cnt++;
848 struct q_inval *qi = iommu->qi;
851 if (qi->desc_status[wait_index] == QI_ABORT)
866 (unsigned long long)qi->desc[index].low,
867 (unsigned long long)qi->desc[index].high);
868 memcpy(&qi->desc[index], &qi->desc[wait_index],
870 __iommu_flush_cache(iommu, &qi->desc[index],
891 if (qi->desc_status[head] == QI_IN_USE)
892 qi->desc_status[head] = QI_ABORT;
896 if (qi->desc_status[wait_index] == QI_ABORT)
913 struct q_inval *qi = iommu->qi;
918 if (!qi)
921 hw = qi->desc;
926 spin_lock_irqsave(&qi->q_lock, flags);
927 while (qi->free_cnt < 3) {
928 spin_unlock_irqrestore(&qi->q_lock, flags);
930 spin_lock_irqsave(&qi->q_lock, flags);
933 index = qi->free_head;
936 qi->desc_status[index] = qi->desc_status[wait_index] = QI_IN_USE;
942 wait_desc.high = virt_to_phys(&qi->desc_status[wait_index]);
949 qi->free_head = (qi->free_head + 2) % QI_LENGTH;
950 qi->free_cnt -= 2;
956 writel(qi->free_head << DMAR_IQ_SHIFT, iommu->reg + DMAR_IQT_REG);
958 while (qi->desc_status[wait_index] != QI_DONE) {
970 spin_unlock(&qi->q_lock);
972 spin_lock(&qi->q_lock);
975 qi->desc_status[index] = QI_DONE;
977 reclaim_free_desc(qi);
978 spin_unlock_irqrestore(&qi->q_lock, flags);
1097 struct q_inval *qi = iommu->qi;
1099 qi->free_head = qi->free_tail = 0;
1100 qi->free_cnt = QI_LENGTH;
1107 dmar_writeq(iommu->reg + DMAR_IQA_REG, virt_to_phys(qi->desc));
1125 struct q_inval *qi;
1134 if (iommu->qi)
1137 iommu->qi = kmalloc(sizeof(*qi), GFP_ATOMIC);
1138 if (!iommu->qi)
1141 qi = iommu->qi;
1146 kfree(qi);
1147 iommu->qi = 0;
1151 qi->desc = page_address(desc_page);
1153 qi->desc_status = kmalloc(QI_LENGTH * sizeof(int), GFP_ATOMIC);
1154 if (!qi->desc_status) {
1155 free_page((unsigned long) qi->desc);
1156 kfree(qi);
1157 iommu->qi = 0;
1161 qi->free_head = qi->free_tail = 0;
1162 qi->free_cnt = QI_LENGTH;
1164 spin_lock_init(&qi->q_lock);
1435 if (!iommu->qi)