All of lore.kernel.org
 help / color / mirror / Atom feed
From: Isaac Manjarres <isaacmanjarres@google.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: Saravana Kannan <saravanak@google.com>,
	Russell King <linux@armlinux.org.uk>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Rob Herring <robh@kernel.org>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	Sudeep Holla <sudeep.holla@arm.com>,
	Nicolas Saenz Julienne <nsaenz@kernel.org>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@armlinux.org.uk, kernel-team@android.com,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6] amba: Remove deferred device addition
Date: Mon, 15 Aug 2022 11:43:10 -0700	[thread overview]
Message-ID: <YvqTvuqSll30Rv2k@google.com> (raw)
In-Reply-To: <1c20eedf-4fa9-9cb1-b232-3bc490c1be7c@roeck-us.net>

On Fri, Aug 12, 2022 at 08:30:46AM -0700, Guenter Roeck wrote:
> After more testing: the changes above result in qemu sx1 boot failures.
> There is no crash, boot just hangs.
> 
> qemu command line:
> 
> qemu-system-arm -M sx1 -kernel arch/arm/boot/zImage -no-reboot \
> 	-initrd rootfs-armv4.cpio \
> 	--append "rdinit=/sbin/init console=ttyS0,115200 earlycon=uart8250,mmio32,0xfffb0000,115200n8" \
> 	-nographic -monitor null -serial stdio
> 
> with configuration from
> https://github.com/groeck/linux-build-test/blob/master/rootfs/arm/qemu_sx1_defconfig
> and root file system from
> https://github.com/groeck/linux-build-test/blob/master/rootfs/arm/rootfs-armv4.cpio.gz
> 
> This is with your other patch applied.
> 
> Guenter

Thanks for testing out the patch and sharing the qemu commandline you
used for the new issue. I was able to reproduce it on my end :) Can you
please try the following patch instead of the second patch I gave you?
This worked for me on sx1 and versatileab:

diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
index 32b0e0b930c1..110a535648d2 100644
--- a/drivers/amba/bus.c
+++ b/drivers/amba/bus.c
@@ -209,6 +209,7 @@ static int amba_match(struct device *dev, struct device_driver *drv)
        struct amba_device *pcdev = to_amba_device(dev);
        struct amba_driver *pcdrv = to_amba_driver(drv);

+       mutex_lock(&pcdev->periphid_lock);
        if (!pcdev->periphid) {
                int ret = amba_read_periphid(pcdev);

@@ -218,11 +219,14 @@ static int amba_match(struct device *dev, struct device_driver *drv)
                 * permanent failure in reading pid and cid, simply map it to
                 * -EPROBE_DEFER.
                 */
-               if (ret)
+               if (ret) {
+                       mutex_unlock(&pcdev->periphid_lock);
                        return -EPROBE_DEFER;
+               }
                dev_set_uevent_suppress(dev, false);
                kobject_uevent(&dev->kobj, KOBJ_ADD);
        }
+       mutex_unlock(&pcdev->periphid_lock);

        /* When driver_override is set, only bind to the matching driver */
        if (pcdev->driver_override)
@@ -532,6 +536,7 @@ static void amba_device_release(struct device *dev)

        if (d->res.parent)
                release_resource(&d->res);
+       mutex_destroy(&d->periphid_lock);
        kfree(d);
 }

@@ -584,6 +589,7 @@ static void amba_device_initialize(struct amba_device *dev, const char *name)
        dev->dev.dma_mask = &dev->dev.coherent_dma_mask;
        dev->dev.dma_parms = &dev->dma_parms;
        dev->res.name = dev_name(&dev->dev);
+       mutex_init(&dev->periphid_lock);
 }

 /**
diff --git a/include/linux/amba/bus.h b/include/linux/amba/bus.h
index e94cdf235f1d..5001e14c5c06 100644
--- a/include/linux/amba/bus.h
+++ b/include/linux/amba/bus.h
@@ -67,6 +67,7 @@ struct amba_device {
        struct clk              *pclk;
        struct device_dma_parameters dma_parms;
        unsigned int            periphid;
+       struct mutex            periphid_lock;
        unsigned int            cid;
        struct amba_cs_uci_id   uci;
        unsigned int            irq[AMBA_NR_IRQS];


Thanks,
Isaac

      reply	other threads:[~2022-08-15 19:33 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-27 18:19 [PATCH v6] amba: Remove deferred device addition Saravana Kannan
2022-07-27 22:16 ` Russell King (Oracle)
2022-07-28  0:10   ` Saravana Kannan
2022-07-28 14:16     ` Russell King (Oracle)
2022-07-28 18:29       ` Saravana Kannan
2022-08-09 10:30 ` Guenter Roeck
2022-08-10  0:42   ` Saravana Kannan
2022-08-10  1:34     ` Guenter Roeck
2022-08-10  3:33       ` Saravana Kannan
2022-08-10 12:58         ` Guenter Roeck
2022-08-10 21:47           ` Isaac Manjarres
2022-08-11  2:03             ` Guenter Roeck
2022-08-11  2:28               ` Saravana Kannan
2022-08-11  4:09                 ` Guenter Roeck
2022-08-11 16:51                   ` Isaac Manjarres
2022-08-11 19:18                     ` Isaac Manjarres
2022-08-11 19:55                       ` Guenter Roeck
2022-08-12  5:12                         ` Isaac Manjarres
2022-08-12 15:19                           ` Guenter Roeck
2022-08-12 15:30                           ` Guenter Roeck
2022-08-15 18:43                             ` Isaac Manjarres [this message]

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=YvqTvuqSll30Rv2k@google.com \
    --to=isaacmanjarres@google.com \
    --cc=geert+renesas@glider.be \
    --cc=gregkh@linuxfoundation.org \
    --cc=kernel-team@android.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=linux@roeck-us.net \
    --cc=m.szyprowski@samsung.com \
    --cc=nsaenz@kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=patches@armlinux.org.uk \
    --cc=robh@kernel.org \
    --cc=saravanak@google.com \
    --cc=sudeep.holla@arm.com \
    --cc=ulf.hansson@linaro.org \
    --cc=wangkefeng.wang@huawei.com \
    /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.