Thread (2 messages) flat view 2 messages, 2 authors, 2017-11-30

Re: [PATCH 2/3] net: socionext: Add Synquacer NetSec driver

From: David Miller <hidden>
Date: 2017-11-30 17:29:17
Also in: netdev

From: jassisinghbrar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Date: Thu, 30 Nov 2017 21:43:16 +0530
+	priv->eeprom_base = devm_memremap(&pdev->dev, eeprom_res->start,
+					  resource_size(eeprom_res),
+					  MEMREMAP_WT);
+	if (!priv->eeprom_base) {
+		dev_err(&pdev->dev, "devm_memremap() failed for EEPROM\n");
+		ret = -ENXIO;
+		goto free_ndev;
+	}
dev_memremap() is implemented via memremap() which for MEMREMAP_WT is
in turn implemented using ioremap_wt() which returns an "__iomem"
pointer.

The memremap() function talks about __iomem being about side effects.
That's not really the full story.  The __iomem annotation is also
about whether a special accessor is necessary to "dereference" the
pointer.  On sparc64, for example, the ioremap_*() functions return a
physical address not a virtual one.  So you cannot directly
dereference pointers that are returned from the ioremap*() interfaces.

You'll also need to mark priv->eeprom_base as "__iomem".

devm_memremap() returns a straight "void *" without the __iomem
annotation, and this is wrong then ioremap_*() is used.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help