linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Oliver Schinagl <oliver+list@schinagl.nl>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: maxime.ripard@free-electrons.com, arnd@arndb.de,
	gregkh@linuxfoundation.org, Oliver Schinagl <oliver@schinagl.nl>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/2] Initial support for Allwinner's Security ID fuses
Date: Sun, 02 Jun 2013 17:21:51 +0200	[thread overview]
Message-ID: <51AB630F.9040109@schinagl.nl> (raw)
In-Reply-To: <20130602150946.GF18614@n2100.arm.linux.org.uk>

On 06/02/13 17:09, Russell King - ARM Linux wrote:
> On Sun, Jun 02, 2013 at 04:58:49PM +0200, Oliver Schinagl wrote:
>> +#include <asm/io.h>
>
> We have an include file called linux/io.h.  Please use linux/*.h files which
> include asm/*.h files in preference to directly using asm/*.h.
>
> In fact, no driver should include an asm/*.h header.
And I didn't have that there, but it kept refusing to find ioread32be. 
Of course, now I change it back to linux/io.h (which I had, I swear) and 
all works swell.

Concider it changed.
>
>> +#include <linux/compiler.h>
>> +#include <linux/device.h>
>> +#include <linux/err.h>
>> +#include <linux/errno.h>
>> +#include <linux/export.h>
>> +#include <linux/fs.h>
>> +#include <linux/init.h>
>> +#include <linux/kernel.h>
>> +#include <linux/kobject.h>
>> +#include <linux/module.h>
>> +#include <linux/of_address.h>
>> +#include <linux/platform_device.h>
>> +#include <linux/random.h>
>> +#include <linux/stat.h>
>> +#include <linux/sysfs.h>
>> +#include <linux/types.h>
>> +
>> +#define DRV_NAME "sunxi-sid"
>> +#define DRV_VERSION "1.0"
>> +
>> +/* There are 4 32-bit keys */
>> +#define SID_KEYS 4
>> +/* and 4 byte sized keys per 32-bit key */
>> +#define SID_SIZE (SID_KEYS * 4)
>> +
>> +static void __iomem *p_sid_reg_base;
>> +
>> +/* We read the entire key, but only return the requested byte. This is of
>> + * course slower then it could be and uses 4 times more reads as needed but
>> + * keeps code a simpler.
>> + */
>> +u8 sunxi_sid_read_byte(const int offset)
>> +{
>> +	u32 sid_key;
>> +	u8 ret;
>> +
>> +	ret = 0;
>> +
>> +	if (likely((SID_SIZE))) {
>> +		sid_key = ioread32be(p_sid_reg_base + round_down(offset, 4));
>> +		sid_key >>= (offset % 4) * 8;
>> +		ret = sid_key & 0xff;
>> +	}
>
> What happens if you unbind the device in sysfs and then try and use
> this function?
>
>> +static int sunxi_sid_remove(struct platform_device *pdev)
>> +{
>> +	device_remove_bin_file(&pdev->dev, &sid_bin_attr);
>> +	dev_info(&pdev->dev, "Sunxi SID driver unloaded successfully.\n");
>
> Maybe you want to set p_sid_reg_base to NULL here?
>
>> +
>> +	return 0;
>> +}
>> +
>> +static int __init sunxi_sid_probe(struct platform_device *pdev)
>> +{
>> +	int entropy[SID_SIZE], i, ret;
>> +	struct device *dev;
>> +	struct resource *res;
>> +	void __iomem *sid_reg_base;
>> +
>> +	dev = &pdev->dev;
>> +	if (unlikely(!pdev->dev.of_node)) {
>> +		dev_err(dev, "No devicetree data available\n");
>> +		ret = -EFAULT;
>> +		goto exit;
>> +	}
>> +
>> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>> +	sid_reg_base = devm_ioremap_resource(&pdev->dev, res);
>> +	if (IS_ERR(sid_reg_base)) {
>> +		dev_err(dev, "Unable to obtain resource\n");
>> +		ret = PTR_ERR(sid_reg_base);
>> +		goto exit;
>> +	}
>> +	platform_set_drvdata(pdev, sid_reg_base);
>> +	p_sid_reg_base = sid_reg_base;
>
> So what happens if you have two of these devices?  Maybe you want to check
> whether p_sid_reg_base is already set?
>
>> +
>> +	ret = device_create_bin_file(dev, &sid_bin_attr);
>> +	if (unlikely(ret)) {
>> +		dev_err(dev, "Unable to create sysfs bin entry\n");
>> +		goto exit;
>> +	}
>> +
>> +	for (i = 0; i < SID_SIZE; i++)
>> +		entropy[i] = sunxi_sid_read_byte(i);
>> +	add_device_randomness(entropy, SID_SIZE);
>> +
>> +	dev_info(dev, "Sunxi SID driver loaded successfully.\n");
>
> Do we really need to report that the driver "loaded successfully" ?
> Do we need lots of lines in the kernel log telling us simply that
> random driver X was built into the kernel or the module was loaded?
>


  reply	other threads:[~2013-06-02 15:22 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-02 14:58 [PATCH 0/2] v2 Driver for Allwinner sunxi Security ID Oliver Schinagl
2013-06-02 14:58 ` [PATCH 1/2] Initial support for Allwinner's Security ID fuses Oliver Schinagl
2013-06-02 15:09   ` Russell King - ARM Linux
2013-06-02 15:21     ` Oliver Schinagl [this message]
2013-06-06 19:16   ` Andy Shevchenko
2013-06-10 21:43     ` Oliver Schinagl
2013-06-11 10:51       ` Andy Shevchenko
2013-06-11 17:44         ` [PATCH 1/2] Initial support for Allwinner's Security ID fuses; Unanswered comments Oliver Schinagl
2013-06-02 14:58 ` [PATCH 2/2] Add sunxi-sid to dts for sun4i and sun5i Oliver Schinagl
  -- strict thread matches above, loose matches on Subject: below --
2013-08-27 14:13 [PATCHv5 0/2] Driver for Allwinner sunxi Security ID oliver+list
2013-08-27 14:13 ` [PATCH 1/2] Initial support for Allwinner's Security ID fuses oliver+list
2013-08-27 15:42   ` Maxime Ripard
2013-06-17 20:59 [PATCH 0/2] v4 Driver for Allwinner sunxi Security ID Oliver Schinagl
2013-06-17 20:59 ` [PATCH 1/2] Initial support for Allwinner's Security ID fuses Oliver Schinagl
2013-06-17 21:06   ` Tomasz Figa
2013-06-17 22:58   ` Greg KH
2013-06-24  9:29     ` Maxime Ripard
2013-06-24 16:04       ` Greg KH
2013-06-24 17:11         ` Oliver Schinagl
2013-06-24 18:15           ` Greg KH
2013-06-24 21:21             ` Oliver Schinagl
2013-06-24 21:46               ` Greg KH
2013-06-26  8:32                 ` Oliver Schinagl
2013-06-26 17:51                   ` Greg KH
2013-07-05  7:24                     ` Oliver Schinagl
2013-07-06 19:36                       ` Greg KH
2013-07-07  0:17                         ` Greg KH
2013-06-26  9:10                 ` Russell King - ARM Linux
2013-06-26 17:51                   ` Greg KH
2013-06-24 21:04         ` Maxime Ripard
2013-06-26  9:22         ` Geert Uytterhoeven
2013-06-26 17:49           ` Greg KH
2013-06-18  5:41   ` Andy Shevchenko
2013-06-14 23:16 [PATCH 0/2] v3 Driver for Allwinner sunxi Security ID Oliver Schinagl
2013-06-14 23:16 ` [PATCH 1/2] Initial support for Allwinner's Security ID fuses Oliver Schinagl
2013-06-15  2:14   ` Andy Shevchenko
2013-06-15  9:34     ` Oliver Schinagl
2013-06-15 10:28   ` Tomasz Figa
2013-06-17 10:36     ` Oliver Schinagl
2013-06-17 11:25       ` Russell King - ARM Linux
2013-06-17 11:32         ` Oliver Schinagl
2013-06-17 11:51       ` Maxime Ripard
2013-06-17 12:04         ` Oliver Schinagl
2013-06-17 12:51       ` Tomasz Figa
2013-06-17 13:10         ` Oliver Schinagl
2013-06-17 13:23           ` Tomasz Figa
2013-06-17 13:47             ` Oliver Schinagl
2013-05-17 13:35 [PATCH 0/2] Driver for Allwinner sunxi Security ID Oliver Schinagl
2013-05-17 13:35 ` [PATCH 1/2] Initial support for Allwinner's Security ID fuses Oliver Schinagl
2013-05-17 13:45   ` Arnd Bergmann
2013-05-17 18:54     ` Oliver Schinagl
2013-05-17 21:18   ` Maxime Ripard
2013-05-18 17:19     ` Oliver Schinagl
2013-05-19 15:22       ` Maxime Ripard
2013-05-24 21:50       ` Oliver Schinagl
2013-05-25 12:22         ` Maxime Ripard
2013-05-25 19:25           ` Oliver Schinagl
2013-05-26  9:35             ` Maxime Ripard
2013-05-23  7:56   ` Linus Walleij
2013-05-23  8:10     ` Oliver Schinagl
2013-05-23  8:20       ` Linus Walleij
2013-05-23 14:58       ` Maxime Ripard
2013-05-23 15:05         ` Oliver Schinagl
2013-05-23 15:27           ` Maxime Ripard

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=51AB630F.9040109@schinagl.nl \
    --to=oliver+list@schinagl.nl \
    --cc=arnd@arndb.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=maxime.ripard@free-electrons.com \
    --cc=oliver@schinagl.nl \
    /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).