All of lore.kernel.org
 help / color / mirror / Atom feed
From: oliver+list@schinagl.nl (Oliver Schinagl)
To: linux-arm-kernel@lists.infradead.org
Subject: [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?
>

WARNING: multiple messages have this Message-ID (diff)
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:21 UTC|newest]

Thread overview: 122+ 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 ` Oliver Schinagl
2013-06-02 14:58 ` [PATCH 1/2] Initial support for Allwinner's Security ID fuses Oliver Schinagl
2013-06-02 14:58   ` Oliver Schinagl
2013-06-02 15:09   ` Russell King - ARM Linux
2013-06-02 15:09     ` Russell King - ARM Linux
2013-06-02 15:21     ` Oliver Schinagl [this message]
2013-06-02 15:21       ` Oliver Schinagl
2013-06-06 19:16   ` Andy Shevchenko
2013-06-06 19:16     ` Andy Shevchenko
2013-06-10 21:43     ` Oliver Schinagl
2013-06-10 21:43       ` Oliver Schinagl
2013-06-11 10:51       ` Andy Shevchenko
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-11 17:44           ` Oliver Schinagl
2013-06-02 14:58 ` [PATCH 2/2] Add sunxi-sid to dts for sun4i and sun5i Oliver Schinagl
2013-06-02 14:58   ` 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 at schinagl.nl
2013-08-27 14:13 ` [PATCH 1/2] Initial support for Allwinner's Security ID fuses oliver+list at schinagl.nl
2013-08-27 14:13   ` oliver+list
2013-08-27 15:42   ` Maxime Ripard
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 20:59   ` Oliver Schinagl
2013-06-17 21:06   ` Tomasz Figa
2013-06-17 21:06     ` Tomasz Figa
2013-06-17 22:58   ` Greg KH
2013-06-17 22:58     ` Greg KH
2013-06-24  9:29     ` Maxime Ripard
2013-06-24  9:29       ` Maxime Ripard
2013-06-24 16:04       ` Greg KH
2013-06-24 16:04         ` Greg KH
2013-06-24 17:11         ` Oliver Schinagl
2013-06-24 17:11           ` Oliver Schinagl
2013-06-24 18:15           ` Greg KH
2013-06-24 18:15             ` Greg KH
2013-06-24 21:21             ` Oliver Schinagl
2013-06-24 21:21               ` Oliver Schinagl
2013-06-24 21:46               ` Greg KH
2013-06-24 21:46                 ` Greg KH
2013-06-26  8:32                 ` Oliver Schinagl
2013-06-26  8:32                   ` Oliver Schinagl
2013-06-26 17:51                   ` Greg KH
2013-06-26 17:51                     ` Greg KH
2013-07-05  7:24                     ` Oliver Schinagl
2013-07-05  7:24                       ` Oliver Schinagl
2013-07-06 19:36                       ` Greg KH
2013-07-06 19:36                         ` Greg KH
2013-07-07  0:17                         ` Greg KH
2013-07-07  0:17                           ` Greg KH
2013-06-26  9:10                 ` Russell King - ARM Linux
2013-06-26  9:10                   ` Russell King - ARM Linux
2013-06-26 17:51                   ` Greg KH
2013-06-26 17:51                     ` Greg KH
2013-06-24 21:04         ` Maxime Ripard
2013-06-24 21:04           ` Maxime Ripard
2013-06-26  9:22         ` Geert Uytterhoeven
2013-06-26  9:22           ` Geert Uytterhoeven
2013-06-26  9:22           ` Geert Uytterhoeven
2013-06-26 17:49           ` Greg KH
2013-06-26 17:49             ` Greg KH
2013-06-26 17:49             ` Greg KH
2013-06-18  5:41   ` Andy Shevchenko
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-14 23:16   ` Oliver Schinagl
2013-06-15  2:14   ` Andy Shevchenko
2013-06-15  2:14     ` Andy Shevchenko
2013-06-15  9:34     ` Oliver Schinagl
2013-06-15  9:34       ` Oliver Schinagl
2013-06-15 10:28   ` Tomasz Figa
2013-06-15 10:28     ` Tomasz Figa
2013-06-17 10:36     ` Oliver Schinagl
2013-06-17 10:36       ` Oliver Schinagl
2013-06-17 11:25       ` Russell King - ARM Linux
2013-06-17 11:25         ` Russell King - ARM Linux
2013-06-17 11:32         ` Oliver Schinagl
2013-06-17 11:32           ` Oliver Schinagl
2013-06-17 11:51       ` Maxime Ripard
2013-06-17 11:51         ` Maxime Ripard
2013-06-17 12:04         ` Oliver Schinagl
2013-06-17 12:04           ` Oliver Schinagl
2013-06-17 12:51       ` Tomasz Figa
2013-06-17 12:51         ` Tomasz Figa
2013-06-17 13:10         ` Oliver Schinagl
2013-06-17 13:10           ` Oliver Schinagl
2013-06-17 13:23           ` Tomasz Figa
2013-06-17 13:23             ` Tomasz Figa
2013-06-17 13:47             ` Oliver Schinagl
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:35   ` Oliver Schinagl
2013-05-17 13:45   ` Arnd Bergmann
2013-05-17 13:45     ` Arnd Bergmann
2013-05-17 18:54     ` Oliver Schinagl
2013-05-17 18:54       ` Oliver Schinagl
2013-05-17 21:18   ` Maxime Ripard
2013-05-17 21:18     ` Maxime Ripard
2013-05-18 17:19     ` Oliver Schinagl
2013-05-18 17:19       ` Oliver Schinagl
2013-05-19 15:22       ` Maxime Ripard
2013-05-19 15:22         ` Maxime Ripard
2013-05-24 21:50       ` Oliver Schinagl
2013-05-24 21:50         ` Oliver Schinagl
2013-05-25 12:22         ` Maxime Ripard
2013-05-25 12:22           ` Maxime Ripard
2013-05-25 19:25           ` Oliver Schinagl
2013-05-25 19:25             ` Oliver Schinagl
2013-05-26  9:35             ` Maxime Ripard
2013-05-26  9:35               ` Maxime Ripard
2013-05-23  7:56   ` Linus Walleij
2013-05-23  7:56     ` Linus Walleij
2013-05-23  8:10     ` Oliver Schinagl
2013-05-23  8:10       ` Oliver Schinagl
2013-05-23  8:20       ` Linus Walleij
2013-05-23  8:20         ` Linus Walleij
2013-05-23 14:58       ` Maxime Ripard
2013-05-23 14:58         ` Maxime Ripard
2013-05-23 15:05         ` Oliver Schinagl
2013-05-23 15:05           ` Oliver Schinagl
2013-05-23 15:27           ` Maxime Ripard
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=linux-arm-kernel@lists.infradead.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.