aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/parisc/sba_iommu.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/parisc/sba_iommu.c')
-rw-r--r--drivers/parisc/sba_iommu.c86
1 files changed, 42 insertions, 44 deletions
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c
index 1ff1b67e8b27..f07471264689 100644
--- a/drivers/parisc/sba_iommu.c
+++ b/drivers/parisc/sba_iommu.c
@@ -1774,37 +1774,35 @@ static int sba_proc_info(struct seq_file *m, void *p)
1774#ifdef SBA_COLLECT_STATS 1774#ifdef SBA_COLLECT_STATS
1775 unsigned long avg = 0, min, max; 1775 unsigned long avg = 0, min, max;
1776#endif 1776#endif
1777 int i, len = 0; 1777 int i;
1778 1778
1779 len += seq_printf(m, "%s rev %d.%d\n", 1779 seq_printf(m, "%s rev %d.%d\n",
1780 sba_dev->name, 1780 sba_dev->name,
1781 (sba_dev->hw_rev & 0x7) + 1, 1781 (sba_dev->hw_rev & 0x7) + 1,
1782 (sba_dev->hw_rev & 0x18) >> 3 1782 (sba_dev->hw_rev & 0x18) >> 3);
1783 ); 1783 seq_printf(m, "IO PDIR size : %d bytes (%d entries)\n",
1784 len += seq_printf(m, "IO PDIR size : %d bytes (%d entries)\n", 1784 (int)((ioc->res_size << 3) * sizeof(u64)), /* 8 bits/byte */
1785 (int) ((ioc->res_size << 3) * sizeof(u64)), /* 8 bits/byte */ 1785 total_pages);
1786 total_pages); 1786
1787 1787 seq_printf(m, "Resource bitmap : %d bytes (%d pages)\n",
1788 len += seq_printf(m, "Resource bitmap : %d bytes (%d pages)\n", 1788 ioc->res_size, ioc->res_size << 3); /* 8 bits per byte */
1789 ioc->res_size, ioc->res_size << 3); /* 8 bits per byte */ 1789
1790 1790 seq_printf(m, "LMMIO_BASE/MASK/ROUTE %08x %08x %08x\n",
1791 len += seq_printf(m, "LMMIO_BASE/MASK/ROUTE %08x %08x %08x\n", 1791 READ_REG32(sba_dev->sba_hpa + LMMIO_DIST_BASE),
1792 READ_REG32(sba_dev->sba_hpa + LMMIO_DIST_BASE), 1792 READ_REG32(sba_dev->sba_hpa + LMMIO_DIST_MASK),
1793 READ_REG32(sba_dev->sba_hpa + LMMIO_DIST_MASK), 1793 READ_REG32(sba_dev->sba_hpa + LMMIO_DIST_ROUTE));
1794 READ_REG32(sba_dev->sba_hpa + LMMIO_DIST_ROUTE)
1795 );
1796 1794
1797 for (i=0; i<4; i++) 1795 for (i=0; i<4; i++)
1798 len += seq_printf(m, "DIR%d_BASE/MASK/ROUTE %08x %08x %08x\n", i, 1796 seq_printf(m, "DIR%d_BASE/MASK/ROUTE %08x %08x %08x\n",
1799 READ_REG32(sba_dev->sba_hpa + LMMIO_DIRECT0_BASE + i*0x18), 1797 i,
1800 READ_REG32(sba_dev->sba_hpa + LMMIO_DIRECT0_MASK + i*0x18), 1798 READ_REG32(sba_dev->sba_hpa + LMMIO_DIRECT0_BASE + i*0x18),
1801 READ_REG32(sba_dev->sba_hpa + LMMIO_DIRECT0_ROUTE + i*0x18) 1799 READ_REG32(sba_dev->sba_hpa + LMMIO_DIRECT0_MASK + i*0x18),
1802 ); 1800 READ_REG32(sba_dev->sba_hpa + LMMIO_DIRECT0_ROUTE + i*0x18));
1803 1801
1804#ifdef SBA_COLLECT_STATS 1802#ifdef SBA_COLLECT_STATS
1805 len += seq_printf(m, "IO PDIR entries : %ld free %ld used (%d%%)\n", 1803 seq_printf(m, "IO PDIR entries : %ld free %ld used (%d%%)\n",
1806 total_pages - ioc->used_pages, ioc->used_pages, 1804 total_pages - ioc->used_pages, ioc->used_pages,
1807 (int) (ioc->used_pages * 100 / total_pages)); 1805 (int)(ioc->used_pages * 100 / total_pages));
1808 1806
1809 min = max = ioc->avg_search[0]; 1807 min = max = ioc->avg_search[0];
1810 for (i = 0; i < SBA_SEARCH_SAMPLE; i++) { 1808 for (i = 0; i < SBA_SEARCH_SAMPLE; i++) {
@@ -1813,26 +1811,26 @@ static int sba_proc_info(struct seq_file *m, void *p)
1813 if (ioc->avg_search[i] < min) min = ioc->avg_search[i]; 1811 if (ioc->avg_search[i] < min) min = ioc->avg_search[i];
1814 } 1812 }
1815 avg /= SBA_SEARCH_SAMPLE; 1813 avg /= SBA_SEARCH_SAMPLE;
1816 len += seq_printf(m, " Bitmap search : %ld/%ld/%ld (min/avg/max CPU Cycles)\n", 1814 seq_printf(m, " Bitmap search : %ld/%ld/%ld (min/avg/max CPU Cycles)\n",
1817 min, avg, max); 1815 min, avg, max);
1818 1816
1819 len += seq_printf(m, "pci_map_single(): %12ld calls %12ld pages (avg %d/1000)\n", 1817 seq_printf(m, "pci_map_single(): %12ld calls %12ld pages (avg %d/1000)\n",
1820 ioc->msingle_calls, ioc->msingle_pages, 1818 ioc->msingle_calls, ioc->msingle_pages,
1821 (int) ((ioc->msingle_pages * 1000)/ioc->msingle_calls)); 1819 (int)((ioc->msingle_pages * 1000)/ioc->msingle_calls));
1822 1820
1823 /* KLUGE - unmap_sg calls unmap_single for each mapped page */ 1821 /* KLUGE - unmap_sg calls unmap_single for each mapped page */
1824 min = ioc->usingle_calls; 1822 min = ioc->usingle_calls;
1825 max = ioc->usingle_pages - ioc->usg_pages; 1823 max = ioc->usingle_pages - ioc->usg_pages;
1826 len += seq_printf(m, "pci_unmap_single: %12ld calls %12ld pages (avg %d/1000)\n", 1824 seq_printf(m, "pci_unmap_single: %12ld calls %12ld pages (avg %d/1000)\n",
1827 min, max, (int) ((max * 1000)/min)); 1825 min, max, (int)((max * 1000)/min));
1828 1826
1829 len += seq_printf(m, "pci_map_sg() : %12ld calls %12ld pages (avg %d/1000)\n", 1827 seq_printf(m, "pci_map_sg() : %12ld calls %12ld pages (avg %d/1000)\n",
1830 ioc->msg_calls, ioc->msg_pages, 1828 ioc->msg_calls, ioc->msg_pages,
1831 (int) ((ioc->msg_pages * 1000)/ioc->msg_calls)); 1829 (int)((ioc->msg_pages * 1000)/ioc->msg_calls));
1832 1830
1833 len += seq_printf(m, "pci_unmap_sg() : %12ld calls %12ld pages (avg %d/1000)\n", 1831 seq_printf(m, "pci_unmap_sg() : %12ld calls %12ld pages (avg %d/1000)\n",
1834 ioc->usg_calls, ioc->usg_pages, 1832 ioc->usg_calls, ioc->usg_pages,
1835 (int) ((ioc->usg_pages * 1000)/ioc->usg_calls)); 1833 (int)((ioc->usg_pages * 1000)/ioc->usg_calls));
1836#endif 1834#endif
1837 1835
1838 return 0; 1836 return 0;
@@ -1858,14 +1856,14 @@ sba_proc_bitmap_info(struct seq_file *m, void *p)
1858 struct sba_device *sba_dev = sba_list; 1856 struct sba_device *sba_dev = sba_list;
1859 struct ioc *ioc = &sba_dev->ioc[0]; /* FIXME: Multi-IOC support! */ 1857 struct ioc *ioc = &sba_dev->ioc[0]; /* FIXME: Multi-IOC support! */
1860 unsigned int *res_ptr = (unsigned int *)ioc->res_map; 1858 unsigned int *res_ptr = (unsigned int *)ioc->res_map;
1861 int i, len = 0; 1859 int i;
1862 1860
1863 for (i = 0; i < (ioc->res_size/sizeof(unsigned int)); ++i, ++res_ptr) { 1861 for (i = 0; i < (ioc->res_size/sizeof(unsigned int)); ++i, ++res_ptr) {
1864 if ((i & 7) == 0) 1862 if ((i & 7) == 0)
1865 len += seq_printf(m, "\n "); 1863 seq_puts(m, "\n ");
1866 len += seq_printf(m, " %08x", *res_ptr); 1864 seq_printf(m, " %08x", *res_ptr);
1867 } 1865 }
1868 len += seq_printf(m, "\n"); 1866 seq_putc(m, '\n');
1869 1867
1870 return 0; 1868 return 0;
1871} 1869}