From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
To: Ralf Baechle <ralf@linux-mips.org>
Cc: bzolnier@gmail.com, linux-ide@vger.kernel.org,
"Maciej W. Rozycki" <macro@linux-mips.org>,
linux-mips@linux-mips.org
Subject: Re: [PATCH] IDE: Fix platform device registration in Swarm IDE driver
Date: Wed, 24 Sep 2008 15:08:13 +0400 [thread overview]
Message-ID: <48DA1F9D.6000501@ru.mvista.com> (raw)
In-Reply-To: <20080922122853.GA15210@linux-mips.org>
Hello.
Ralf Baechle wrote:
> The Swarm IDE driver uses a release method which is defined in the driver
> itself thus potencially oopsable. The simpel fix would be to just leak
>
"Potentially" and "simple". :-P
> the device but this patch goes the full length and moves the entire
> handling of the platform device in the platform code and retains only
> the platform driver code in drivers/ide/mips/swarm.c.
>
> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
> ---
>
> This patch is for 2.6.27. The same issue exists in -stable but the patch
> won't apply due to other driver changes.
>
> arch/mips/sibyte/swarm/Makefile | 3
> arch/mips/sibyte/swarm/platform.c | 60 ++++++++++++++++
> drivers/ide/mips/swarm.c | 140 +++++++++++---------------------------
> 3 files changed, 104 insertions(+), 99 deletions(-)
>
> Index: linux-mips/arch/mips/sibyte/swarm/platform.c
> ===================================================================
> --- /dev/null
> +++ linux-mips/arch/mips/sibyte/swarm/platform.c
> @@ -0,0 +1,60 @@
>
[...]
> +static struct resource swarm_ide_resource[] = {
> + {
> + .name = "Swarm GenBus IDE",
> + .flags = IORESOURCE_MEM,
> + }, {
> + .name = "Swarm GenBus IDE",
> + .flags = IORESOURCE_IRQ,
> + .start = K_INT_GB_IDE,
> + .end = K_INT_GB_IDE,
> + },
> +};
> +
> +static int __init swarm_ide_init(void)
> +{
>
[...]
> + pdev = platform_device_register_simple(DEV_NAME, -1,
> + swarm_ide_resource, ARRAY_SIZE(swarm_ide_resource));
>
If you have the resources as static array anyway, why not have the
device in the static variable too and use platform_device_register()?
> Index: linux-mips/drivers/ide/mips/swarm.c
> ===================================================================
> --- linux-mips.orig/drivers/ide/mips/swarm.c
> +++ linux-mips/drivers/ide/mips/swarm.c
> @@ -46,21 +46,10 @@
>
> #include <asm/io.h>
>
> -#include <asm/sibyte/board.h>
> -#include <asm/sibyte/sb1250_genbus.h>
> -#include <asm/sibyte/sb1250_regs.h>
> -
> #define DRV_NAME "ide-swarm"
>
> static char swarm_ide_string[] = DRV_NAME;
>
> -static struct resource swarm_ide_resource = {
> - .name = "SWARM GenBus IDE",
> - .flags = IORESOURCE_MEM,
> -};
> -
> -static struct platform_device *swarm_ide_dev;
>
Platform device in the driver itself? Interesting... :-)
> @@ -70,41 +59,18 @@ static const struct ide_port_info swarm_
> * swarm_ide_probe - if the board header indicates the existence of
> * Generic Bus IDE, allocate a HWIF for it.
> */
> -static int __devinit swarm_ide_probe(struct device *dev)
> +static int __devinit swarm_ide_probe(struct platform_device *pdev)
> {
> u8 __iomem *base;
> struct ide_host *host;
> phys_t offset, size;
> + struct resource *r;
> int i, rc;
> hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };
>
> - if (!SIBYTE_HAVE_IDE)
> - return -ENODEV;
> -
> - base = ioremap(A_IO_EXT_BASE, 0x800);
> - offset = __raw_readq(base + R_IO_EXT_REG(R_IO_EXT_START_ADDR, IDE_CS));
> - size = __raw_readq(base + R_IO_EXT_REG(R_IO_EXT_MULT_SIZE, IDE_CS));
> - iounmap(base);
> -
> - offset = G_IO_START_ADDR(offset) << S_IO_ADDRBASE;
> - size = (G_IO_MULT_SIZE(size) + 1) << S_IO_REGSIZE;
> - if (offset < A_PHYS_GENBUS || offset >= A_PHYS_GENBUS_END) {
> - printk(KERN_INFO DRV_NAME
> - ": IDE interface at GenBus disabled\n");
> - return -EBUSY;
> - }
> -
> - printk(KERN_INFO DRV_NAME ": IDE interface at GenBus slot %i\n",
> - IDE_CS);
> -
> - swarm_ide_resource.start = offset;
> - swarm_ide_resource.end = offset + size - 1;
> - if (request_resource(&iomem_resource, &swarm_ide_resource)) {
>
Why drop request_resource() completely? Replace it by
request_mem_region().
MBR, Sergei
next prev parent reply other threads:[~2008-09-24 11:08 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-22 12:29 [PATCH] IDE: Fix platform device registration in Swarm IDE driver Ralf Baechle
2008-09-24 11:08 ` Sergei Shtylyov [this message]
2008-09-24 13:52 ` Maciej W. Rozycki
2008-09-27 23:51 ` Ralf Baechle
2008-09-27 16:59 ` Bartlomiej Zolnierkiewicz
2008-09-28 9:22 ` Sergei Shtylyov
2008-09-28 11:39 ` Ralf Baechle
2008-09-28 13:12 ` Sergei Shtylyov
2008-09-28 17:54 ` [PATCH v2] " Ralf Baechle
2008-09-28 21:51 ` Sergei Shtylyov
2008-09-28 21:57 ` Ralf Baechle
2008-09-29 8:00 ` Sergei Shtylyov
2008-10-03 17:00 ` Bartlomiej Zolnierkiewicz
2008-10-03 18:25 ` Ralf Baechle
2008-09-28 11:47 ` [PATCH] " Ralf Baechle
2008-09-28 12:51 ` Sergei Shtylyov
2008-09-28 17:18 ` Geert Uytterhoeven
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=48DA1F9D.6000501@ru.mvista.com \
--to=sshtylyov@ru.mvista.com \
--cc=bzolnier@gmail.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=macro@linux-mips.org \
--cc=ralf@linux-mips.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.