hwrng: amd - manage resource allocation

As amd driver doesn't bind to PCI device, we'd better manage reource
allocation on our own to disallow (possible) conflicts.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Acked-by: Matt Mackall <mpm@selenic.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
Dmitry Eremin-Solenikov 2011-04-27 23:21:15 +04:00 committed by Herbert Xu
parent 0200f3ecc1
commit bd68ccb390
1 changed files with 9 additions and 0 deletions

View File

@ -133,6 +133,12 @@ found:
pmbase &= 0x0000FF00; pmbase &= 0x0000FF00;
if (pmbase == 0) if (pmbase == 0)
goto out; goto out;
if (!request_region(pmbase + 0xF0, 8, "AMD HWRNG")) {
dev_err(&pdev->dev, "AMD HWRNG region 0x%x already in use!\n",
pmbase + 0xF0);
err = -EBUSY;
goto out;
}
amd_rng.priv = (unsigned long)pmbase; amd_rng.priv = (unsigned long)pmbase;
amd_pdev = pdev; amd_pdev = pdev;
@ -141,6 +147,7 @@ found:
if (err) { if (err) {
printk(KERN_ERR PFX "RNG registering failed (%d)\n", printk(KERN_ERR PFX "RNG registering failed (%d)\n",
err); err);
release_region(pmbase + 0xF0, 8);
goto out; goto out;
} }
out: out:
@ -149,6 +156,8 @@ out:
static void __exit mod_exit(void) static void __exit mod_exit(void)
{ {
u32 pmbase = (unsigned long)amd_rng.priv;
release_region(pmbase + 0xF0, 8);
hwrng_unregister(&amd_rng); hwrng_unregister(&amd_rng);
} }