From: Arnd Bergmann <arnd@arndb.de>
To: Eric Auger <eric.auger@linaro.org>
Cc: kvm@vger.kernel.org, patches@linaro.org,
linux-kernel@vger.kernel.org, alex.williamson@redhat.com,
eric.auger@st.com, kvmarm@lists.cs.columbia.edu,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 6/6] vfio: platform: move get/put reset at open/release
Date: Thu, 22 Oct 2015 12:29:13 +0200 [thread overview]
Message-ID: <4304536.D7eNHjlsvD@wuerfel> (raw)
In-Reply-To: <1445506922-6005-7-git-send-email-eric.auger@linaro.org>
On Thursday 22 October 2015 11:42:02 Eric Auger wrote:
> Currently reset lookup is done on probe. This introduces a
> race with new registration mechanism in the case where the
> vfio-platform driver is bound to the device before its module
> is loaded: on the load, the probe happens which triggers the
> reset module load which itself attempts to get the symbol for
> the registration function (vfio_platform_register_reset). The
> symbol is not yet available hence the lookup fails. In case we
> do the lookup in the first open we are sure the vfio-platform
> module is loaded and vfio_platform_register_reset is available.
>
> Signed-off-by: Eric Auger <eric.auger@linaro.org>
I don't understand the explanation. I would expect the request_module()
call to block until the module is actually loaded. Is this not
what happens?
> mutex_unlock(&driver_lock);
> @@ -181,6 +182,8 @@ static int vfio_platform_open(void *device_data)
> if (ret)
> goto err_irq;
>
> + vfio_platform_get_reset(vdev);
> +
> if (vdev->reset)
> vdev->reset(vdev);
>
This needs some error handling to ensure that the open() fails
if there is no reset handler.
Arnd
WARNING: multiple messages have this Message-ID (diff)
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 6/6] vfio: platform: move get/put reset at open/release
Date: Thu, 22 Oct 2015 12:29:13 +0200 [thread overview]
Message-ID: <4304536.D7eNHjlsvD@wuerfel> (raw)
In-Reply-To: <1445506922-6005-7-git-send-email-eric.auger@linaro.org>
On Thursday 22 October 2015 11:42:02 Eric Auger wrote:
> Currently reset lookup is done on probe. This introduces a
> race with new registration mechanism in the case where the
> vfio-platform driver is bound to the device before its module
> is loaded: on the load, the probe happens which triggers the
> reset module load which itself attempts to get the symbol for
> the registration function (vfio_platform_register_reset). The
> symbol is not yet available hence the lookup fails. In case we
> do the lookup in the first open we are sure the vfio-platform
> module is loaded and vfio_platform_register_reset is available.
>
> Signed-off-by: Eric Auger <eric.auger@linaro.org>
I don't understand the explanation. I would expect the request_module()
call to block until the module is actually loaded. Is this not
what happens?
> mutex_unlock(&driver_lock);
> @@ -181,6 +182,8 @@ static int vfio_platform_open(void *device_data)
> if (ret)
> goto err_irq;
>
> + vfio_platform_get_reset(vdev);
> +
> if (vdev->reset)
> vdev->reset(vdev);
>
This needs some error handling to ensure that the open() fails
if there is no reset handler.
Arnd
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Eric Auger <eric.auger@linaro.org>
Cc: eric.auger@st.com, alex.williamson@redhat.com,
b.reynal@virtualopensystems.com,
linux-arm-kernel@lists.infradead.org,
kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org,
christoffer.dall@linaro.org, linux-kernel@vger.kernel.org,
patches@linaro.org
Subject: Re: [PATCH v2 6/6] vfio: platform: move get/put reset at open/release
Date: Thu, 22 Oct 2015 12:29:13 +0200 [thread overview]
Message-ID: <4304536.D7eNHjlsvD@wuerfel> (raw)
In-Reply-To: <1445506922-6005-7-git-send-email-eric.auger@linaro.org>
On Thursday 22 October 2015 11:42:02 Eric Auger wrote:
> Currently reset lookup is done on probe. This introduces a
> race with new registration mechanism in the case where the
> vfio-platform driver is bound to the device before its module
> is loaded: on the load, the probe happens which triggers the
> reset module load which itself attempts to get the symbol for
> the registration function (vfio_platform_register_reset). The
> symbol is not yet available hence the lookup fails. In case we
> do the lookup in the first open we are sure the vfio-platform
> module is loaded and vfio_platform_register_reset is available.
>
> Signed-off-by: Eric Auger <eric.auger@linaro.org>
I don't understand the explanation. I would expect the request_module()
call to block until the module is actually loaded. Is this not
what happens?
> mutex_unlock(&driver_lock);
> @@ -181,6 +182,8 @@ static int vfio_platform_open(void *device_data)
> if (ret)
> goto err_irq;
>
> + vfio_platform_get_reset(vdev);
> +
> if (vdev->reset)
> vdev->reset(vdev);
>
This needs some error handling to ensure that the open() fails
if there is no reset handler.
Arnd
next prev parent reply other threads:[~2015-10-22 10:26 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-22 9:41 [PATCH v2 0/6] VFIO platform reset module rework Eric Auger
2015-10-22 9:41 ` Eric Auger
2015-10-22 9:41 ` [PATCH v2 1/6] vfio: platform: add capability to register a reset function Eric Auger
2015-10-22 9:41 ` Eric Auger
2015-10-22 9:41 ` Eric Auger
2015-10-22 10:06 ` Arnd Bergmann
2015-10-22 10:06 ` Arnd Bergmann
2015-10-22 9:41 ` [PATCH v2 2/6] vfio: platform: reset: add vfio_platform_reset_private.h Eric Auger
2015-10-22 9:41 ` Eric Auger
2015-10-22 9:41 ` Eric Auger
2015-10-22 10:12 ` Arnd Bergmann
2015-10-22 10:12 ` Arnd Bergmann
2015-10-22 10:12 ` Arnd Bergmann
2015-10-22 9:41 ` [PATCH v2 3/6] vfio: platform: reset: calxedaxgmac: add reset function registration Eric Auger
2015-10-22 9:41 ` Eric Auger
2015-10-22 9:41 ` Eric Auger
2015-10-22 10:13 ` Arnd Bergmann
2015-10-22 10:13 ` Arnd Bergmann
2015-10-22 11:54 ` Eric Auger
2015-10-22 11:54 ` Eric Auger
2015-10-22 11:54 ` Eric Auger
2015-10-22 12:09 ` Arnd Bergmann
2015-10-22 12:09 ` Arnd Bergmann
2015-10-22 12:29 ` Eric Auger
2015-10-22 12:29 ` Eric Auger
2015-10-22 12:29 ` Eric Auger
2015-10-22 9:42 ` [PATCH v2 4/6] vfio: platform: add compat in vfio_platform_device Eric Auger
2015-10-22 9:42 ` Eric Auger
2015-10-22 9:42 ` Eric Auger
2015-10-22 9:42 ` [PATCH v2 5/6] vfio: platform: use list of registered reset function Eric Auger
2015-10-22 9:42 ` Eric Auger
2015-10-22 9:42 ` Eric Auger
2015-10-22 10:19 ` Arnd Bergmann
2015-10-22 10:19 ` Arnd Bergmann
2015-10-22 10:19 ` Arnd Bergmann
2015-10-22 11:46 ` Eric Auger
2015-10-22 11:46 ` Eric Auger
2015-10-22 11:46 ` Eric Auger
2015-10-22 9:42 ` [PATCH v2 6/6] vfio: platform: move get/put reset at open/release Eric Auger
2015-10-22 9:42 ` Eric Auger
2015-10-22 9:42 ` Eric Auger
2015-10-22 10:29 ` Arnd Bergmann [this message]
2015-10-22 10:29 ` Arnd Bergmann
2015-10-22 10:29 ` Arnd Bergmann
2015-10-22 11:40 ` Eric Auger
2015-10-22 11:40 ` Eric Auger
2015-10-22 12:05 ` Arnd Bergmann
2015-10-22 12:05 ` Arnd Bergmann
2015-10-22 12:27 ` Eric Auger
2015-10-22 12:27 ` Eric Auger
2015-10-22 12:27 ` Eric Auger
2015-10-22 13:26 ` Eric Auger
2015-10-22 13:26 ` Eric Auger
2015-10-22 13:26 ` Eric Auger
2015-10-22 14:10 ` Arnd Bergmann
2015-10-22 14:10 ` Arnd Bergmann
2015-10-22 14:10 ` Arnd Bergmann
2015-10-22 14:23 ` Eric Auger
2015-10-22 14:23 ` Eric Auger
2015-10-22 14:23 ` Eric Auger
2015-10-22 15:40 ` Alex Williamson
2015-10-22 15:40 ` Alex Williamson
2015-10-22 15:40 ` Alex Williamson
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=4304536.D7eNHjlsvD@wuerfel \
--to=arnd@arndb.de \
--cc=alex.williamson@redhat.com \
--cc=eric.auger@linaro.org \
--cc=eric.auger@st.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@linaro.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.