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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




From: jassisinghbrar@xxxxxxxxx
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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux