static size_t omap_dump_tlb_entries(struct omap_iommu *obj, struct seq_file *s) { int i, num; struct cr_regs *cr; num = obj->nr_tlb_entries; cr = kcalloc(num, sizeof(*cr), GFP_KERNEL); if (!cr) return 0; num = __dump_tlb_entries(obj, cr, num); for (i = 0; i < num; i++) iotlb_dump_cr(obj, cr + i, s); kfree(cr); return 0; }
/** * dump_tlb_entries - dump cr arrays to given buffer * @obj: target iommu * @buf: output buffer **/ size_t dump_tlb_entries(struct iommu *obj, char *buf, ssize_t bytes) { int i, num; struct cr_regs *cr; char *p = buf; num = bytes / sizeof(*cr); num = min(obj->nr_tlb_entries, num); cr = kcalloc(num, sizeof(*cr), GFP_KERNEL); if (!cr) return 0; num = __dump_tlb_entries(obj, cr, num); for (i = 0; i < num; i++) p += iotlb_dump_cr(obj, cr + i, p); kfree(cr); return p - buf; }