* Re: [PATCH v1] ACPI / platform: Unregister stale platform devices
2019-08-30 14:34 [PATCH v1] ACPI / platform: Unregister stale platform devices Andy Shevchenko
@ 2019-09-02 6:38 ` kbuild test robot
2019-09-02 9:52 ` Andy Shevchenko
2019-09-02 7:19 ` kbuild test robot
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: kbuild test robot @ 2019-09-02 6:38 UTC (permalink / raw)
To: Andy Shevchenko
Cc: kbuild-all, Rafael J . Wysocki, Len Brown, linux-acpi,
Ferry Toth, Andy Shevchenko, Mika Westerberg
[-- Attachment #1: Type: text/plain, Size: 1822 bytes --]
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on linus/master]
[cannot apply to v5.3-rc6 next-20190830]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/ACPI-platform-Unregister-stale-platform-devices/20190902-001307
config: x86_64-lkp (attached as .config)
compiler: gcc-7 (Debian 7.4.0-11) 7.4.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers//acpi/acpi_platform.c: In function 'acpi_platform_device_find_by_adev':
>> drivers//acpi/acpi_platform.c:38:8: error: implicit declaration of function 'bus_find_device_by_acpi_dev'; did you mean 'bus_find_device_by_name'? [-Werror=implicit-function-declaration]
dev = bus_find_device_by_acpi_dev(&platform_bus_type, adev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
bus_find_device_by_name
drivers//acpi/acpi_platform.c:38:6: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
dev = bus_find_device_by_acpi_dev(&platform_bus_type, adev);
^
cc1: some warnings being treated as errors
vim +38 drivers//acpi/acpi_platform.c
33
34 static struct platform_device *acpi_platform_device_find_by_adev(struct acpi_device *adev)
35 {
36 struct device *dev;
37
> 38 dev = bus_find_device_by_acpi_dev(&platform_bus_type, adev);
39 return dev ? to_platform_device(dev) : NULL;
40 }
41
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 28166 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] ACPI / platform: Unregister stale platform devices
2019-09-02 6:38 ` kbuild test robot
@ 2019-09-02 9:52 ` Andy Shevchenko
2019-09-04 8:46 ` [kbuild-all] " Rong Chen
0 siblings, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2019-09-02 9:52 UTC (permalink / raw)
To: kbuild test robot
Cc: kbuild-all, Rafael J . Wysocki, Len Brown, linux-acpi,
Ferry Toth, Mika Westerberg
On Mon, Sep 02, 2019 at 02:38:05PM +0800, kbuild test robot wrote:
> Hi Andy,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on linus/master]
> [cannot apply to v5.3-rc6 next-20190830]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/ACPI-platform-Unregister-stale-platform-devices/20190902-001307
> config: x86_64-lkp (attached as .config)
> compiler: gcc-7 (Debian 7.4.0-11) 7.4.0
> reproduce:
> # save the attached .config to linux build tree
> make ARCH=x86_64
>
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
> drivers//acpi/acpi_platform.c: In function 'acpi_platform_device_find_by_adev':
> >> drivers//acpi/acpi_platform.c:38:8: error: implicit declaration of function 'bus_find_device_by_acpi_dev'; did you mean 'bus_find_device_by_name'? [-Werror=implicit-function-declaration]
False positive, it has Depends-on tag for the dependency which is not yet in
upstream.
Btw, have you noticed double slash in the paths in your scripts for LKP?
(Look above)
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [kbuild-all] [PATCH v1] ACPI / platform: Unregister stale platform devices
2019-09-02 9:52 ` Andy Shevchenko
@ 2019-09-04 8:46 ` Rong Chen
0 siblings, 0 replies; 9+ messages in thread
From: Rong Chen @ 2019-09-04 8:46 UTC (permalink / raw)
To: Andy Shevchenko, kbuild test robot
Cc: Rafael J . Wysocki, Ferry Toth, linux-acpi, kbuild-all,
Mika Westerberg, Len Brown
On 9/2/19 5:52 PM, Andy Shevchenko wrote:
> On Mon, Sep 02, 2019 at 02:38:05PM +0800, kbuild test robot wrote:
>> Hi Andy,
>>
>> I love your patch! Yet something to improve:
>>
>> [auto build test ERROR on linus/master]
>> [cannot apply to v5.3-rc6 next-20190830]
>> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>>
>> url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/ACPI-platform-Unregister-stale-platform-devices/20190902-001307
>> config: x86_64-lkp (attached as .config)
>> compiler: gcc-7 (Debian 7.4.0-11) 7.4.0
>> reproduce:
>> # save the attached .config to linux build tree
>> make ARCH=x86_64
>>
>> If you fix the issue, kindly add following tag
>> Reported-by: kbuild test robot <lkp@intel.com>
>>
>> All errors (new ones prefixed by >>):
>>
>> drivers//acpi/acpi_platform.c: In function 'acpi_platform_device_find_by_adev':
>>>> drivers//acpi/acpi_platform.c:38:8: error: implicit declaration of function 'bus_find_device_by_acpi_dev'; did you mean 'bus_find_device_by_name'? [-Werror=implicit-function-declaration]
> False positive, it has Depends-on tag for the dependency which is not yet in
> upstream.
>
> Btw, have you noticed double slash in the paths in your scripts for LKP?
> (Look above)
Hi Andy,
Thanks for the new finding, The double slash not always appears .
I think the double slash is not from our scripts.
Best Regards,
Rong Chen
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] ACPI / platform: Unregister stale platform devices
2019-08-30 14:34 [PATCH v1] ACPI / platform: Unregister stale platform devices Andy Shevchenko
2019-09-02 6:38 ` kbuild test robot
@ 2019-09-02 7:19 ` kbuild test robot
2019-09-02 9:55 ` Andy Shevchenko
2019-10-17 11:38 ` Andy Shevchenko
2019-10-17 21:57 ` Rafael J. Wysocki
3 siblings, 1 reply; 9+ messages in thread
From: kbuild test robot @ 2019-09-02 7:19 UTC (permalink / raw)
To: Andy Shevchenko
Cc: kbuild-all, Rafael J . Wysocki, Len Brown, linux-acpi,
Ferry Toth, Andy Shevchenko, Mika Westerberg
[-- Attachment #1: Type: text/plain, Size: 1819 bytes --]
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on linus/master]
[cannot apply to v5.3-rc6 next-20190830]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/ACPI-platform-Unregister-stale-platform-devices/20190902-001307
config: x86_64-rhel (attached as .config)
compiler: gcc-7 (Debian 7.4.0-11) 7.4.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/acpi/acpi_platform.c: In function 'acpi_platform_device_find_by_adev':
>> drivers/acpi/acpi_platform.c:38:8: error: implicit declaration of function 'bus_find_device_by_acpi_dev'; did you mean 'bus_find_device_by_name'? [-Werror=implicit-function-declaration]
dev = bus_find_device_by_acpi_dev(&platform_bus_type, adev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
bus_find_device_by_name
drivers/acpi/acpi_platform.c:38:6: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
dev = bus_find_device_by_acpi_dev(&platform_bus_type, adev);
^
cc1: some warnings being treated as errors
vim +38 drivers/acpi/acpi_platform.c
33
34 static struct platform_device *acpi_platform_device_find_by_adev(struct acpi_device *adev)
35 {
36 struct device *dev;
37
> 38 dev = bus_find_device_by_acpi_dev(&platform_bus_type, adev);
39 return dev ? to_platform_device(dev) : NULL;
40 }
41
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 43497 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] ACPI / platform: Unregister stale platform devices
2019-09-02 7:19 ` kbuild test robot
@ 2019-09-02 9:55 ` Andy Shevchenko
0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2019-09-02 9:55 UTC (permalink / raw)
To: kbuild test robot
Cc: kbuild-all, Rafael J . Wysocki, Len Brown, linux-acpi,
Ferry Toth, Mika Westerberg
On Mon, Sep 02, 2019 at 03:19:11PM +0800, kbuild test robot wrote:
> drivers/acpi/acpi_platform.c: In function 'acpi_platform_device_find_by_adev':
> >> drivers/acpi/acpi_platform.c:38:8: error: implicit declaration of function 'bus_find_device_by_acpi_dev'; did you mean 'bus_find_device_by_name'? [-Werror=implicit-function-declaration]
Same false positive.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] ACPI / platform: Unregister stale platform devices
2019-08-30 14:34 [PATCH v1] ACPI / platform: Unregister stale platform devices Andy Shevchenko
2019-09-02 6:38 ` kbuild test robot
2019-09-02 7:19 ` kbuild test robot
@ 2019-10-17 11:38 ` Andy Shevchenko
2019-10-17 21:57 ` Rafael J. Wysocki
3 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2019-10-17 11:38 UTC (permalink / raw)
To: Rafael J . Wysocki , Len Brown, linux-acpi, Ferry Toth; +Cc: Mika Westerberg
On Fri, Aug 30, 2019 at 05:34:32PM +0300, Andy Shevchenko wrote:
> When the commit 68bdb6773289
>
> ("ACPI: add support for ACPI reconfiguration notifiers")
>
> introduced reconfiguration notifiers it misses the point that the ACPI table,
> which may be loaded and then unloaded via ConfigFS, can contain devices that are
> not enumerated by their parents.
>
> In such case the stale platform device is dangling in the system while the rest
> of the devices from the same table are already gone.
>
> Introduce acpi_platform_device_remove_notify() notifier that, in similar way to
> I²C or SPI buses, unregisters the platform devices on table removal event.
>
Rafael, all dependencies now in v5.4-rc1.
Can this be applied, or I need to do more work?
> Depends-on: 00500147cbd3 ("drivers: Introduce device lookup variants by ACPI_COMPANION device")
> Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> drivers/acpi/acpi_platform.c | 43 ++++++++++++++++++++++++++++++++++++
> drivers/acpi/scan.c | 1 +
> 2 files changed, 44 insertions(+)
>
> diff --git a/drivers/acpi/acpi_platform.c b/drivers/acpi/acpi_platform.c
> index 00ec4f2bf015..dfcd6210828e 100644
> --- a/drivers/acpi/acpi_platform.c
> +++ b/drivers/acpi/acpi_platform.c
> @@ -31,6 +31,44 @@ static const struct acpi_device_id forbidden_id_list[] = {
> {"", 0},
> };
>
> +static struct platform_device *acpi_platform_device_find_by_adev(struct acpi_device *adev)
> +{
> + struct device *dev;
> +
> + dev = bus_find_device_by_acpi_dev(&platform_bus_type, adev);
> + return dev ? to_platform_device(dev) : NULL;
> +}
> +
> +static int acpi_platform_device_remove_notify(struct notifier_block *nb,
> + unsigned long value, void *arg)
> +{
> + struct acpi_device *adev = arg;
> + struct platform_device *pdev;
> +
> + switch (value) {
> + case ACPI_RECONFIG_DEVICE_ADD:
> + /* Nothing to do here */
> + break;
> + case ACPI_RECONFIG_DEVICE_REMOVE:
> + if (!acpi_device_enumerated(adev))
> + break;
> +
> + pdev = acpi_platform_device_find_by_adev(adev);
> + if (!pdev)
> + break;
> +
> + platform_device_unregister(pdev);
> + put_device(&pdev->dev);
> + break;
> + }
> +
> + return NOTIFY_OK;
> +}
> +
> +static struct notifier_block acpi_platform_notifier = {
> + .notifier_call = acpi_platform_device_remove_notify,
> +};
> +
> static void acpi_platform_fill_resource(struct acpi_device *adev,
> const struct resource *src, struct resource *dest)
> {
> @@ -130,3 +168,8 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
> return pdev;
> }
> EXPORT_SYMBOL_GPL(acpi_create_platform_device);
> +
> +void __init acpi_platform_init(void)
> +{
> + acpi_reconfig_notifier_register(&acpi_platform_notifier);
> +}
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index aad6be5c0af0..915650bf519f 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -2174,6 +2174,7 @@ int __init acpi_scan_init(void)
> acpi_pci_root_init();
> acpi_pci_link_init();
> acpi_processor_init();
> + acpi_platform_init();
> acpi_lpss_init();
> acpi_apd_init();
> acpi_cmos_rtc_init();
> --
> 2.23.0.rc1
>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] ACPI / platform: Unregister stale platform devices
2019-08-30 14:34 [PATCH v1] ACPI / platform: Unregister stale platform devices Andy Shevchenko
` (2 preceding siblings ...)
2019-10-17 11:38 ` Andy Shevchenko
@ 2019-10-17 21:57 ` Rafael J. Wysocki
2019-10-18 8:35 ` Andy Shevchenko
3 siblings, 1 reply; 9+ messages in thread
From: Rafael J. Wysocki @ 2019-10-17 21:57 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Rafael J . Wysocki, Len Brown, ACPI Devel Maling List,
Ferry Toth, Mika Westerberg
On Fri, Aug 30, 2019 at 4:34 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> When the commit 68bdb6773289
>
> ("ACPI: add support for ACPI reconfiguration notifiers")
>
> introduced reconfiguration notifiers it misses the point that the ACPI table,
> which may be loaded and then unloaded via ConfigFS, can contain devices that are
> not enumerated by their parents.
>
> In such case the stale platform device is dangling in the system while the rest
> of the devices from the same table are already gone.
>
> Introduce acpi_platform_device_remove_notify() notifier that, in similar way to
> I²C or SPI buses, unregisters the platform devices on table removal event.
>
> Depends-on: 00500147cbd3 ("drivers: Introduce device lookup variants by ACPI_COMPANION device")
> Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> drivers/acpi/acpi_platform.c | 43 ++++++++++++++++++++++++++++++++++++
> drivers/acpi/scan.c | 1 +
> 2 files changed, 44 insertions(+)
>
> diff --git a/drivers/acpi/acpi_platform.c b/drivers/acpi/acpi_platform.c
> index 00ec4f2bf015..dfcd6210828e 100644
> --- a/drivers/acpi/acpi_platform.c
> +++ b/drivers/acpi/acpi_platform.c
> @@ -31,6 +31,44 @@ static const struct acpi_device_id forbidden_id_list[] = {
> {"", 0},
> };
>
> +static struct platform_device *acpi_platform_device_find_by_adev(struct acpi_device *adev)
> +{
> + struct device *dev;
> +
> + dev = bus_find_device_by_acpi_dev(&platform_bus_type, adev);
> + return dev ? to_platform_device(dev) : NULL;
> +}
> +
> +static int acpi_platform_device_remove_notify(struct notifier_block *nb,
> + unsigned long value, void *arg)
> +{
> + struct acpi_device *adev = arg;
> + struct platform_device *pdev;
> +
> + switch (value) {
> + case ACPI_RECONFIG_DEVICE_ADD:
> + /* Nothing to do here */
> + break;
> + case ACPI_RECONFIG_DEVICE_REMOVE:
> + if (!acpi_device_enumerated(adev))
> + break;
> +
> + pdev = acpi_platform_device_find_by_adev(adev);
> + if (!pdev)
> + break;
> +
> + platform_device_unregister(pdev);
> + put_device(&pdev->dev);
> + break;
> + }
> +
> + return NOTIFY_OK;
> +}
> +
> +static struct notifier_block acpi_platform_notifier = {
> + .notifier_call = acpi_platform_device_remove_notify,
> +};
> +
> static void acpi_platform_fill_resource(struct acpi_device *adev,
> const struct resource *src, struct resource *dest)
> {
> @@ -130,3 +168,8 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
> return pdev;
> }
> EXPORT_SYMBOL_GPL(acpi_create_platform_device);
> +
> +void __init acpi_platform_init(void)
> +{
> + acpi_reconfig_notifier_register(&acpi_platform_notifier);
> +}
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index aad6be5c0af0..915650bf519f 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -2174,6 +2174,7 @@ int __init acpi_scan_init(void)
> acpi_pci_root_init();
> acpi_pci_link_init();
> acpi_processor_init();
> + acpi_platform_init();
> acpi_lpss_init();
> acpi_apd_init();
> acpi_cmos_rtc_init();
> --
Applying (with minor modifications) as 5.5 material, thanks!
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1] ACPI / platform: Unregister stale platform devices
2019-10-17 21:57 ` Rafael J. Wysocki
@ 2019-10-18 8:35 ` Andy Shevchenko
0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2019-10-18 8:35 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Rafael J . Wysocki, Len Brown, ACPI Devel Maling List,
Ferry Toth, Mika Westerberg
On Thu, Oct 17, 2019 at 11:57:25PM +0200, Rafael J. Wysocki wrote:
> Applying (with minor modifications) as 5.5 material, thanks!
Thank you!
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread