From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linuxarm@huawei.com, mauro.chehab@huawei.com,
Mauro Carvalho Chehab <mchehab+huawei@kernel.org>,
John Stultz <john.stultz@linaro.org>,
Manivannan Sadhasivam <mani@kernel.org>,
linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org
Subject: [PATCH 12/16] iommu: hisi_smmu_lpae: cleanup printk macros
Date: Mon, 17 Aug 2020 09:50:11 +0200 [thread overview]
Message-ID: <cdf4b4783d9ff2b55b1fa2bed66df3e7750260dd.1597650455.git.mchehab+huawei@kernel.org> (raw)
In-Reply-To: <cover.1597650455.git.mchehab+huawei@kernel.org>
- Whenever possible, use dev_foo() instead of pr_foo();
- Replace dbg() macro by either pr_debug() or dev_dbg();
- Fix some warnings due to different integer types.
- add debug at hisi_smmu_domain_alloc_lpae() to allow checking
what domains were mapped.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
drivers/staging/hikey9xx/hisi_smmu.h | 9 +--
drivers/staging/hikey9xx/hisi_smmu_lpae.c | 72 ++++++++++++-----------
2 files changed, 39 insertions(+), 42 deletions(-)
diff --git a/drivers/staging/hikey9xx/hisi_smmu.h b/drivers/staging/hikey9xx/hisi_smmu.h
index 290f2e11c3be..8724806bc507 100644
--- a/drivers/staging/hikey9xx/hisi_smmu.h
+++ b/drivers/staging/hikey9xx/hisi_smmu.h
@@ -3,13 +3,6 @@
#ifndef HISI_SMMU_H
#define HISI_SMMU_H
-/*#define IOMMU_DEBUG*/
-#ifdef IOMMU_DEBUG
-#define dbg(format, arg...) printk(KERN_ERR "[iommu]" format, ##arg)
-#else
-#define dbg(format, arg...)
-#endif
-
#define SMMU_PHY_PTRS_PER_PTE (256)
/*#define SMMU_PHY_PTRS_PER_PGD (4096)*/
#define SMMU_PTRS_PER_PGD (4)
@@ -163,7 +156,7 @@ static inline void smmu_set_pgd_lpae(smmu_pgd_t *pgdp, u64 pgd)
/*fill the pmd entry, pgd value must be 64bit */
static inline void smmu_set_pmd_lpae(smmu_pgd_t *pmdp, u64 pmd)
{
- dbg("smmu_set_pmd_lpae: pmd = 0x%lx\n", pmd);
+ pr_debug("smmu_set_pmd_lpae: pmd = 0x%llx\n", pmd);
*pmdp = pmd;
dsb(ishst);
isb();
diff --git a/drivers/staging/hikey9xx/hisi_smmu_lpae.c b/drivers/staging/hikey9xx/hisi_smmu_lpae.c
index c8c7e8e3dde2..33aba006d6a1 100644
--- a/drivers/staging/hikey9xx/hisi_smmu_lpae.c
+++ b/drivers/staging/hikey9xx/hisi_smmu_lpae.c
@@ -36,7 +36,7 @@ static pgtable_t smmu_pgd_to_pte_lpae(unsigned int ppte_table)
unsigned long page_table_addr;
if (!ppte_table) {
- dbg("error: the pointer of pte_table is NULL\n");
+ pr_debug("error: the pointer of pte_table is NULL\n");
return NULL;
}
page_table_addr = (unsigned long)ppte_table;
@@ -49,14 +49,15 @@ static pgtable_t smmu_pmd_to_pte_lpae(unsigned long ppte_table)
struct page *table = NULL;
if (!ppte_table) {
- dbg("error: the pointer of pte_table is NULL\n");
+ pr_debug("error: the pointer of pte_table is NULL\n");
return NULL;
}
table = phys_to_page(ppte_table);
return table;
}
-static int get_domain_data_lpae(struct device_node *np,
+static int get_domain_data_lpae(struct device *dev,
+ struct device_node *np,
struct hisi_smmu_domain_data *data)
{
unsigned long long align;
@@ -70,18 +71,18 @@ static int get_domain_data_lpae(struct device_node *np,
node = of_find_node_by_name(np, "iommu_info");
if (!node) {
- dbg("find iommu_info node error\n");
+ dev_dbg(dev, "find iommu_info node error\n");
return -ENODEV;
}
ret = of_property_read_u32(node, "start-addr",
&data->iova_start);
if (ret) {
- dbg("read iova start address error\n");
+ dev_dbg(dev, "read iova start address error\n");
goto read_error;
}
ret = of_property_read_u32(node, "size", &data->iova_size);
if (ret) {
- dbg("read iova size error\n");
+ dev_dbg(dev, "read iova size error\n");
goto read_error;
}
ret = of_property_read_u64(node, "iova-align", &align);
@@ -90,7 +91,7 @@ static int get_domain_data_lpae(struct device_node *np,
else
data->iova_align = SZ_256K;
- pr_err("%s:start_addr 0x%x, size 0x%x align 0x%lx\n",
+ pr_err("%s: start_addr 0x%x, size 0x%x align 0x%lx\n",
__func__, data->iova_start,
data->iova_size, data->iova_align);
@@ -105,8 +106,11 @@ static struct iommu_domain
{
struct hisi_smmu_domain *hisi_dom;
- if (iommu_domain_type != IOMMU_DOMAIN_UNMANAGED)
+ if (iommu_domain_type != IOMMU_DOMAIN_UNMANAGED) {
+ pr_debug("%s: expecting an IOMMU_DOMAIN_UNMANAGED domain\n",
+ __func__);
return NULL;
+ }
hisi_dom = kzalloc(sizeof(*hisi_dom), GFP_KERNEL);
@@ -125,7 +129,7 @@ static void hisi_smmu_free_ptes_lpae(smmu_pgd_t pmd)
pgtable_t table = smmu_pgd_to_pte_lpae(pmd);
if (!table) {
- dbg("pte table is null\n");
+ pr_debug("pte table is null\n");
return;
}
__free_page(table);
@@ -137,7 +141,7 @@ static void hisi_smmu_free_pmds_lpae(smmu_pgd_t pgd)
pgtable_t table = smmu_pmd_to_pte_lpae(pgd);
if (!table) {
- dbg("pte table is null\n");
+ pr_debug("pte table is null\n");
return;
}
__free_page(table);
@@ -193,7 +197,7 @@ static int hisi_smmu_alloc_init_pte_lpae(smmu_pmd_t *ppmd,
table = alloc_page(GFP_KERNEL | __GFP_ZERO | __GFP_DMA);
spin_lock_irqsave(&hisi_smmu_dev->lock, *flags);
if (!table) {
- dbg("%s: alloc page fail\n", __func__);
+ pr_debug("%s: alloc page fail\n", __func__);
return -ENOMEM;
}
@@ -266,7 +270,7 @@ static int hisi_smmu_alloc_init_pmd_lpae(smmu_pgd_t *ppgd,
table = alloc_page(GFP_KERNEL | __GFP_ZERO | __GFP_DMA);
spin_lock_irqsave(&hisi_smmu_dev->lock, *flags);
if (!table) {
- dbg("%s: alloc page fail\n", __func__);
+ pr_debug("%s: alloc page fail\n", __func__);
return -ENOMEM;
}
@@ -309,7 +313,7 @@ int hisi_smmu_handle_mapping_lpae(struct iommu_domain *domain,
smmu_pgd_t *pgd = (smmu_pgd_t *)hisi_smmu_dev->va_pgtable_addr;
if (!pgd) {
- dbg("pgd is null\n");
+ pr_debug("pgd is null\n");
return -EINVAL;
}
iova = ALIGN(iova, SMMU_PAGE_SIZE);
@@ -341,24 +345,24 @@ static int hisi_smmu_map_lpae(struct iommu_domain *domain,
struct hisi_smmu_domain_data *data;
if (!domain) {
- dbg("domain is null\n");
+ pr_debug("domain is null\n");
return -ENODEV;
}
data = to_smmu(domain);
max_iova = data->iova_start + data->iova_size;
if (iova < data->iova_start) {
- dbg("iova failed: iova = 0x%lx, start = 0x%8x\n",
- iova, data->iova_start);
+ pr_debug("iova failed: iova = 0x%lx, start = 0x%8x\n",
+ iova, data->iova_start);
goto error;
}
if ((iova + size) > max_iova) {
- dbg("iova out of domain range, iova+size=0x%lx, end=0x%lx\n",
- iova + size, max_iova);
+ pr_debug("iova out of domain range, iova+size=0x%lx, end=0x%lx\n",
+ iova + size, max_iova);
goto error;
}
return hisi_smmu_handle_mapping_lpae(domain, iova, paddr, size, prot);
error:
- dbg("iova is not in this range\n");
+ pr_debug("iova is not in this range\n");
return -EINVAL;
}
@@ -392,7 +396,7 @@ static unsigned int hisi_smmu_clear_pmd_lpae(smmu_pgd_t *pgdp,
next = smmu_pmd_addr_end_lpae(iova, end);
hisi_smmu_clear_pte_lpae(ppmd, iova, next);
iova = next;
- dbg("%s: iova=0x%lx, end=0x%lx\n", __func__, iova, end);
+ pr_debug("%s: iova=0x%x, end=0x%x\n", __func__, iova, end);
} while (ppmd++, iova < end);
return size;
@@ -411,14 +415,14 @@ unsigned int hisi_smmu_handle_unmapping_lpae(struct iommu_domain *domain,
size = SMMU_PAGE_ALIGN(size);
pgdp = (smmu_pgd_t *)hisi_smmu_dev->va_pgtable_addr;
end = iova + size;
- dbg("%s:end=0x%x\n", __func__, end);
+ pr_debug("%s: end=0x%x\n", __func__, end);
pgdp += smmu_pgd_index(iova);
spin_lock_irqsave(&hisi_smmu_dev->lock, flags);
do {
next = smmu_pgd_addr_end_lpae(iova, end);
unmap_size += hisi_smmu_clear_pmd_lpae(pgdp, iova, next);
iova = next;
- dbg("%s: pgdp=%p, iova=0x%lx\n", __func__, pgdp, iova);
+ pr_debug("%s: pgdp=%p, iova=0x%lx\n", __func__, pgdp, iova);
} while (pgdp++, iova < end);
spin_unlock_irqrestore(&hisi_smmu_dev->lock, flags);
@@ -434,7 +438,7 @@ static size_t hisi_smmu_unmap_lpae(struct iommu_domain *domain,
struct hisi_smmu_domain_data *data;
if (!domain) {
- dbg("domain is null\n");
+ pr_debug("domain is null\n");
return -ENODEV;
}
data = to_smmu(domain);
@@ -444,20 +448,20 @@ static size_t hisi_smmu_unmap_lpae(struct iommu_domain *domain,
if (iova < data->iova_start)
goto error;
if ((iova + size) > max_iova) {
- dbg("iova out of domain range, iova+size=0x%lx, end=0x%lx\n",
- iova + size, max_iova);
+ pr_debug("iova out of domain range, iova+size=0x%lx, end=0x%lx\n",
+ iova + size, max_iova);
goto error;
}
/*unmapping the range of iova*/
ret = hisi_smmu_handle_unmapping_lpae(domain, iova, size);
if (ret == size) {
- dbg("%s:unmap size:0x%x\n", __func__, (unsigned int)size);
+ pr_debug("%s: unmap size:0x%x\n", __func__, (unsigned int)size);
return size;
} else {
return 0;
}
error:
- dbg("%s:the range of io address is wrong\n", __func__);
+ pr_debug("%s: the range of io address is wrong\n", __func__);
return -EINVAL;
}
@@ -496,16 +500,15 @@ static int hisi_attach_dev_lpae(struct iommu_domain *domain, struct device *dev)
struct hisi_smmu_domain *hisi_dom;
iommu_info = kzalloc(sizeof(*iommu_info), GFP_KERNEL);
- if (!iommu_info) {
- dbg("alloc hisi_smmu_domain_data fail\n");
+ if (!iommu_info)
return -EINVAL;
- }
+
list_add(&iommu_info->list, &hisi_smmu_dev->domain_list);
hisi_dom = container_of(domain, struct hisi_smmu_domain, domain);
hisi_dom->iommu_info = iommu_info;
dev_iommu_priv_set(dev, iommu_info);
- ret = get_domain_data_lpae(np, iommu_info);
+ ret = get_domain_data_lpae(dev, np, iommu_info);
return ret;
}
@@ -520,7 +523,7 @@ static void hisi_detach_dev_lpae(struct iommu_domain *domain,
dev_iommu_priv_set(dev, NULL);
kfree(data);
} else {
- dbg("%s:error! data entry has been delected\n", __func__);
+ dev_dbg(dev, "error! domain priv struct is NULL\n");
}
}
@@ -559,7 +562,7 @@ static int hisi_smmu_probe_lpae(struct platform_device *pdev)
struct device *dev = &pdev->dev;
int ret;
- dbg("enter %s\n", __func__);
+ dev_dbg(dev, "%s:\n", __func__);
hisi_smmu_dev = devm_kzalloc(dev,
sizeof(struct hisi_smmu_device_lpae),
GFP_KERNEL);
@@ -573,10 +576,11 @@ static int hisi_smmu_probe_lpae(struct platform_device *pdev)
INIT_LIST_HEAD(&hisi_smmu_dev->domain_list);
spin_lock_init(&hisi_smmu_dev->lock);
- hisi_smmu_dev->smmu_pgd = (smmu_pgd_t *)(ALIGN((unsigned long)(hisi_smmu_dev->smmu_pgd), SZ_32));
+ hisi_smmu_dev->smmu_pgd = (smmu_pgd_t *)(ALIGN((unsigned long)(hisi_smmu_dev->smmu_pgd), SZ_32));
hisi_smmu_dev->smmu_phy_pgtable_addr =
virt_to_phys(hisi_smmu_dev->smmu_pgd);
+
dev_info(&pdev->dev, "%s, smmu_phy_pgtable_addr is = 0x%llx\n",
__func__, hisi_smmu_dev->smmu_phy_pgtable_addr);
--
2.26.2
next prev parent reply other threads:[~2020-08-17 7:50 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-17 7:49 [PATCH 00/16] IOMMU driver for Kirin 960/970 Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 01/16] iommu: add support for HiSilicon Kirin 960/970 iommu Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 02/16] iommu: hisilicon: remove default iommu_map_sg handler Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 03/16] iommu: hisilicon: map and unmap ops gained new arguments Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 04/16] iommu: hisi_smmu_lpae: rebase it to work with upstream Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 05/16] iommu: hisi_smmu: remove linux/hisi/hisi-iommu.h Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 06/16] iommu: hisilicon: cleanup its code style Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 07/16] iommu: hisi_smmu_lpae: get rid of IOMMU_SEC and IOMMU_DEVICE Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 08/16] iommu: get rid of map/unmap tile functions Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 09/16] iommu: hisi_smmu_lpae: use the right code to get domain-priv data Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 10/16] iommu: hisi_smmu_lpae: convert it to probe_device Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 11/16] iommu: add Hisilicon Kirin970 iommu at the building system Mauro Carvalho Chehab
2020-08-17 7:50 ` Mauro Carvalho Chehab [this message]
2020-08-17 7:50 ` [PATCH 13/16] iommu: hisi_smmu_lpae: make OF compatible more standard Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 14/16] dt: add an spec for the Kirin36x0 SMMU Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 15/16] dt: hi3670-hikey970.dts: load the SMMU driver on Hikey970 Mauro Carvalho Chehab
2020-08-17 7:50 ` [PATCH 16/16] staging: hikey9xx: add an item about the iommu driver Mauro Carvalho Chehab
2020-08-17 8:21 ` [PATCH 00/16] IOMMU driver for Kirin 960/970 Christoph Hellwig
2020-08-17 9:27 ` Mauro Carvalho Chehab
2020-08-17 9:31 ` Christoph Hellwig
2020-08-17 9:37 ` Greg Kroah-Hartman
2020-08-17 10:46 ` Mauro Carvalho Chehab
2020-08-17 10:53 ` Greg Kroah-Hartman
2020-08-17 12:59 ` Joerg Roedel
2020-08-18 14:47 ` Robin Murphy
2020-08-18 15:29 ` Mauro Carvalho Chehab
2020-08-18 16:26 ` Robin Murphy
2020-08-18 22:02 ` John Stultz
2020-08-19 10:12 ` Robin Murphy
2020-08-19 10:28 ` Mauro Carvalho Chehab
2020-08-19 11:33 ` Robin Murphy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cdf4b4783d9ff2b55b1fa2bed66df3e7750260dd.1597650455.git.mchehab+huawei@kernel.org \
--to=mchehab+huawei@kernel.org \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=john.stultz@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=mani@kernel.org \
--cc=mauro.chehab@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).