diff options
Diffstat (limited to 'drivers/parisc/sba_iommu.c')
-rw-r--r-- | drivers/parisc/sba_iommu.c | 86 |
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 | } |