From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Oliver Schinagl <oliver+list@schinagl.nl>
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, 2 Jun 2013 16:09:46 +0100 [thread overview]
Message-ID: <20130602150946.GF18614@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1370185130-15332-2-git-send-email-oliver+list@schinagl.nl>
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.
> +#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?
next prev parent reply other threads:[~2013-06-02 15:10 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 [this message]
2013-06-02 15:21 ` Oliver Schinagl
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=20130602150946.GF18614@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maxime.ripard@free-electrons.com \
--cc=oliver+list@schinagl.nl \
--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).