All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Nathan Chancellor <nathan@kernel.org>
Cc: Shuai Xue <xueshuai@linux.alibaba.com>,
	Bjorn Helgaas <helgaas@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Borislav Petkov <bp@alien8.de>, Tony Luck <tony.luck@intel.com>,
	James Morse <james.morse@arm.com>, Len Brown <lenb@kernel.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Bjorn Helgaas <bhelgaas@google.com>,
	luanshi <zhangliguang@linux.alibaba.com>,
	zhuo.song@linux.alibaba.com,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	Linux PCI <linux-pci@vger.kernel.org>
Subject: Re: [PATCH v7 1/2] ACPI: APEI: explicit init HEST and GHES in apci_init
Date: Mon, 21 Feb 2022 19:25:35 +0100	[thread overview]
Message-ID: <CAJZ5v0iwpvOMYt-bAAaN86+6+dzWqMRmdZnVqyw8wjhjh1Mp4w@mail.gmail.com> (raw)
In-Reply-To: <YhPXX+CSoK++9MP6@dev-arch.archlinux-ax161>

On Mon, Feb 21, 2022 at 7:18 PM Nathan Chancellor <nathan@kernel.org> wrote:
>
> Hi Shuai,
>
> On Sat, Jan 22, 2022 at 01:26:17PM +0800, Shuai Xue wrote:
> > From commit e147133a42cb ("ACPI / APEI: Make hest.c manage the estatus
> > memory pool") was merged, ghes_init() relies on acpi_hest_init() to manage
> > the estatus memory pool. On the other hand, ghes_init() relies on
> > sdei_init() to detect the SDEI version and (un)register events. The
> > dependencies are as follows:
> >
> >     ghes_init() => acpi_hest_init() => acpi_bus_init() => acpi_init()
> >     ghes_init() => sdei_init()
> >
> > HEST is not PCI-specific and initcall ordering is implicit and not
> > well-defined within a level.
> >
> > Based on above, remove acpi_hest_init() from acpi_pci_root_init() and
> > convert ghes_init() and sdei_init() from initcalls to explicit calls in the
> > following order:
> >
> >     acpi_hest_init()
> >     ghes_init()
> >         sdei_init()
> >
> > Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
> > ---
> >  drivers/acpi/apei/ghes.c    | 19 ++++++++-----------
> >  drivers/acpi/bus.c          |  2 ++
> >  drivers/acpi/pci_root.c     |  3 ---
> >  drivers/firmware/Kconfig    |  1 +
> >  drivers/firmware/arm_sdei.c | 13 ++-----------
> >  include/acpi/apei.h         |  4 +++-
> >  include/linux/arm_sdei.h    |  2 ++
> >  7 files changed, 18 insertions(+), 26 deletions(-)
> >
> > diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
> > index 0c5c9acc6254..aadc0a972f18 100644
> > --- a/drivers/acpi/apei/ghes.c
> > +++ b/drivers/acpi/apei/ghes.c
> > @@ -1457,33 +1457,35 @@ static struct platform_driver ghes_platform_driver = {
> >       .remove         = ghes_remove,
> >  };
> >
> > -static int __init ghes_init(void)
> > +void __init ghes_init(void)
> >  {
> >       int rc;
> >
> > +     sdei_init();
> > +
> >       if (acpi_disabled)
> > -             return -ENODEV;
> > +             return;
> >
> >       switch (hest_disable) {
> >       case HEST_NOT_FOUND:
> > -             return -ENODEV;
> > +             return;
> >       case HEST_DISABLED:
> >               pr_info(GHES_PFX "HEST is not enabled!\n");
> > -             return -EINVAL;
> > +             return;
> >       default:
> >               break;
> >       }
> >
> >       if (ghes_disable) {
> >               pr_info(GHES_PFX "GHES is not enabled!\n");
> > -             return -EINVAL;
> > +             return;
> >       }
> >
> >       ghes_nmi_init_cxt();
> >
> >       rc = platform_driver_register(&ghes_platform_driver);
> >       if (rc)
> > -             goto err;
> > +             return;
> >
> >       rc = apei_osc_setup();
> >       if (rc == 0 && osc_sb_apei_support_acked)
> > @@ -1494,9 +1496,4 @@ static int __init ghes_init(void)
> >               pr_info(GHES_PFX "APEI firmware first mode is enabled by APEI bit.\n");
> >       else
> >               pr_info(GHES_PFX "Failed to enable APEI firmware first mode.\n");
> > -
> > -     return 0;
> > -err:
> > -     return rc;
> >  }
> > -device_initcall(ghes_init);
> > diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> > index 07f604832fd6..3f403db20f69 100644
> > --- a/drivers/acpi/bus.c
> > +++ b/drivers/acpi/bus.c
> > @@ -1331,6 +1331,8 @@ static int __init acpi_init(void)
> >
> >       pci_mmcfg_late_init();
> >       acpi_iort_init();
> > +     acpi_hest_init();
> > +     ghes_init();
> >       acpi_scan_init();
> >       acpi_ec_init();
> >       acpi_debugfs_init();
> > diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> > index b76db99cced3..6f9e75d14808 100644
> > --- a/drivers/acpi/pci_root.c
> > +++ b/drivers/acpi/pci_root.c
> > @@ -22,8 +22,6 @@
> >  #include <linux/slab.h>
> >  #include <linux/dmi.h>
> >  #include <linux/platform_data/x86/apple.h>
> > -#include <acpi/apei.h>       /* for acpi_hest_init() */
> > -
> >  #include "internal.h"
> >
> >  #define ACPI_PCI_ROOT_CLASS          "pci_bridge"
> > @@ -943,7 +941,6 @@ struct pci_bus *acpi_pci_root_create(struct acpi_pci_root *root,
> >
> >  void __init acpi_pci_root_init(void)
> >  {
> > -     acpi_hest_init();
> >       if (acpi_pci_disabled)
> >               return;
> >
> > diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
> > index 75cb91055c17..ad114d9cdf8e 100644
> > --- a/drivers/firmware/Kconfig
> > +++ b/drivers/firmware/Kconfig
> > @@ -40,6 +40,7 @@ config ARM_SCPI_POWER_DOMAIN
> >  config ARM_SDE_INTERFACE
> >       bool "ARM Software Delegated Exception Interface (SDEI)"
> >       depends on ARM64
> > +     select ACPI_APEI_GHES
>
> As the kernel test robot pointed out [1], you cannot do this.
> CONFIG_ACPI_APEI_GHES is a user selectable symbol that has dependencies,
> which 'select' completely overrides, resulting in build failures when
> CONFIG_ACPI_APEI is not enabled.
>
> If CONFIG_ARM_SDE_INTERFACE truly requires CONFIG_ACPI_APEI_GHES, you
> should have "depends on ACPI_APEI_GHES".
>
> If CONFIG_ARM_SDE_INTERFACE soft depends on CONFIG_ACPI_APEI_GHES for
> functionality but can work without it, you could use
> "imply ACPI_APEI_GHES", which will enable CONFIG_ACPI_APEI_GHES if its
> dependencies are met.
>
> I noticed the same error with Alpine Linux's aarch64 configuration [2]
> if you wanted a quick configuration to test with.
>
> [1]: https://lore.kernel.org/r/202202151504.jWpZGPaH-lkp@intel.com/
> [2]: https://git.alpinelinux.org/aports/plain/community/linux-edge/config-edge.aarch64

Note that I've dropped these patches from my linux-next branch now.

WARNING: multiple messages have this Message-ID (diff)
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Nathan Chancellor <nathan@kernel.org>
Cc: Shuai Xue <xueshuai@linux.alibaba.com>,
	Bjorn Helgaas <helgaas@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Borislav Petkov <bp@alien8.de>, Tony Luck <tony.luck@intel.com>,
	 James Morse <james.morse@arm.com>, Len Brown <lenb@kernel.org>,
	 "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Bjorn Helgaas <bhelgaas@google.com>,
	 luanshi <zhangliguang@linux.alibaba.com>,
	zhuo.song@linux.alibaba.com,
	 Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	 ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	 Linux ARM <linux-arm-kernel@lists.infradead.org>,
	 Linux PCI <linux-pci@vger.kernel.org>
Subject: Re: [PATCH v7 1/2] ACPI: APEI: explicit init HEST and GHES in apci_init
Date: Mon, 21 Feb 2022 19:25:35 +0100	[thread overview]
Message-ID: <CAJZ5v0iwpvOMYt-bAAaN86+6+dzWqMRmdZnVqyw8wjhjh1Mp4w@mail.gmail.com> (raw)
In-Reply-To: <YhPXX+CSoK++9MP6@dev-arch.archlinux-ax161>

On Mon, Feb 21, 2022 at 7:18 PM Nathan Chancellor <nathan@kernel.org> wrote:
>
> Hi Shuai,
>
> On Sat, Jan 22, 2022 at 01:26:17PM +0800, Shuai Xue wrote:
> > From commit e147133a42cb ("ACPI / APEI: Make hest.c manage the estatus
> > memory pool") was merged, ghes_init() relies on acpi_hest_init() to manage
> > the estatus memory pool. On the other hand, ghes_init() relies on
> > sdei_init() to detect the SDEI version and (un)register events. The
> > dependencies are as follows:
> >
> >     ghes_init() => acpi_hest_init() => acpi_bus_init() => acpi_init()
> >     ghes_init() => sdei_init()
> >
> > HEST is not PCI-specific and initcall ordering is implicit and not
> > well-defined within a level.
> >
> > Based on above, remove acpi_hest_init() from acpi_pci_root_init() and
> > convert ghes_init() and sdei_init() from initcalls to explicit calls in the
> > following order:
> >
> >     acpi_hest_init()
> >     ghes_init()
> >         sdei_init()
> >
> > Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
> > ---
> >  drivers/acpi/apei/ghes.c    | 19 ++++++++-----------
> >  drivers/acpi/bus.c          |  2 ++
> >  drivers/acpi/pci_root.c     |  3 ---
> >  drivers/firmware/Kconfig    |  1 +
> >  drivers/firmware/arm_sdei.c | 13 ++-----------
> >  include/acpi/apei.h         |  4 +++-
> >  include/linux/arm_sdei.h    |  2 ++
> >  7 files changed, 18 insertions(+), 26 deletions(-)
> >
> > diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
> > index 0c5c9acc6254..aadc0a972f18 100644
> > --- a/drivers/acpi/apei/ghes.c
> > +++ b/drivers/acpi/apei/ghes.c
> > @@ -1457,33 +1457,35 @@ static struct platform_driver ghes_platform_driver = {
> >       .remove         = ghes_remove,
> >  };
> >
> > -static int __init ghes_init(void)
> > +void __init ghes_init(void)
> >  {
> >       int rc;
> >
> > +     sdei_init();
> > +
> >       if (acpi_disabled)
> > -             return -ENODEV;
> > +             return;
> >
> >       switch (hest_disable) {
> >       case HEST_NOT_FOUND:
> > -             return -ENODEV;
> > +             return;
> >       case HEST_DISABLED:
> >               pr_info(GHES_PFX "HEST is not enabled!\n");
> > -             return -EINVAL;
> > +             return;
> >       default:
> >               break;
> >       }
> >
> >       if (ghes_disable) {
> >               pr_info(GHES_PFX "GHES is not enabled!\n");
> > -             return -EINVAL;
> > +             return;
> >       }
> >
> >       ghes_nmi_init_cxt();
> >
> >       rc = platform_driver_register(&ghes_platform_driver);
> >       if (rc)
> > -             goto err;
> > +             return;
> >
> >       rc = apei_osc_setup();
> >       if (rc == 0 && osc_sb_apei_support_acked)
> > @@ -1494,9 +1496,4 @@ static int __init ghes_init(void)
> >               pr_info(GHES_PFX "APEI firmware first mode is enabled by APEI bit.\n");
> >       else
> >               pr_info(GHES_PFX "Failed to enable APEI firmware first mode.\n");
> > -
> > -     return 0;
> > -err:
> > -     return rc;
> >  }
> > -device_initcall(ghes_init);
> > diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> > index 07f604832fd6..3f403db20f69 100644
> > --- a/drivers/acpi/bus.c
> > +++ b/drivers/acpi/bus.c
> > @@ -1331,6 +1331,8 @@ static int __init acpi_init(void)
> >
> >       pci_mmcfg_late_init();
> >       acpi_iort_init();
> > +     acpi_hest_init();
> > +     ghes_init();
> >       acpi_scan_init();
> >       acpi_ec_init();
> >       acpi_debugfs_init();
> > diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> > index b76db99cced3..6f9e75d14808 100644
> > --- a/drivers/acpi/pci_root.c
> > +++ b/drivers/acpi/pci_root.c
> > @@ -22,8 +22,6 @@
> >  #include <linux/slab.h>
> >  #include <linux/dmi.h>
> >  #include <linux/platform_data/x86/apple.h>
> > -#include <acpi/apei.h>       /* for acpi_hest_init() */
> > -
> >  #include "internal.h"
> >
> >  #define ACPI_PCI_ROOT_CLASS          "pci_bridge"
> > @@ -943,7 +941,6 @@ struct pci_bus *acpi_pci_root_create(struct acpi_pci_root *root,
> >
> >  void __init acpi_pci_root_init(void)
> >  {
> > -     acpi_hest_init();
> >       if (acpi_pci_disabled)
> >               return;
> >
> > diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
> > index 75cb91055c17..ad114d9cdf8e 100644
> > --- a/drivers/firmware/Kconfig
> > +++ b/drivers/firmware/Kconfig
> > @@ -40,6 +40,7 @@ config ARM_SCPI_POWER_DOMAIN
> >  config ARM_SDE_INTERFACE
> >       bool "ARM Software Delegated Exception Interface (SDEI)"
> >       depends on ARM64
> > +     select ACPI_APEI_GHES
>
> As the kernel test robot pointed out [1], you cannot do this.
> CONFIG_ACPI_APEI_GHES is a user selectable symbol that has dependencies,
> which 'select' completely overrides, resulting in build failures when
> CONFIG_ACPI_APEI is not enabled.
>
> If CONFIG_ARM_SDE_INTERFACE truly requires CONFIG_ACPI_APEI_GHES, you
> should have "depends on ACPI_APEI_GHES".
>
> If CONFIG_ARM_SDE_INTERFACE soft depends on CONFIG_ACPI_APEI_GHES for
> functionality but can work without it, you could use
> "imply ACPI_APEI_GHES", which will enable CONFIG_ACPI_APEI_GHES if its
> dependencies are met.
>
> I noticed the same error with Alpine Linux's aarch64 configuration [2]
> if you wanted a quick configuration to test with.
>
> [1]: https://lore.kernel.org/r/202202151504.jWpZGPaH-lkp@intel.com/
> [2]: https://git.alpinelinux.org/aports/plain/community/linux-edge/config-edge.aarch64

Note that I've dropped these patches from my linux-next branch now.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-02-21 18:27 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-26  7:04 [RFC PATCH v4] ACPI: Move sdei_init and ghes_init ahead to handle platform errors earlier Shuai Xue
2021-11-26  7:04 ` Shuai Xue
2021-12-02 12:50 ` Shuai Xue
2021-12-02 12:50   ` Shuai Xue
2021-12-16 13:34 ` [RESEND " Shuai Xue
2021-12-16 13:34   ` Shuai Xue
2021-12-17 18:17   ` Rafael J. Wysocki
2021-12-17 18:17     ` Rafael J. Wysocki
2021-12-19  4:04     ` Shuai Xue
2021-12-19  4:04       ` Shuai Xue
2021-12-21 23:17   ` Bjorn Helgaas
2021-12-21 23:17     ` Bjorn Helgaas
2021-12-23  8:11     ` Shuai Xue
2021-12-23  8:11       ` Shuai Xue
2021-12-24  0:17       ` Bjorn Helgaas
2021-12-24  0:17         ` Bjorn Helgaas
2021-12-24  8:55         ` Shuai Xue
2021-12-24  8:55           ` Shuai Xue
2022-01-13 13:38           ` Shuai Xue
2022-01-13 13:38             ` Shuai Xue
2022-01-16  8:43 ` [PATCH v5] " Shuai Xue
2022-01-16  8:43   ` Shuai Xue
2022-01-18 22:49   ` Bjorn Helgaas
2022-01-18 22:49     ` Bjorn Helgaas
2022-01-19  6:40     ` Shuai Xue
2022-01-19  6:40       ` Shuai Xue
2022-01-19 20:42       ` Bjorn Helgaas
2022-01-19 20:42         ` Bjorn Helgaas
2022-01-20  2:40         ` Shuai Xue
2022-01-20  2:40           ` Shuai Xue
2022-01-20 16:24         ` Rafael J. Wysocki
2022-01-20 16:24           ` Rafael J. Wysocki
2022-01-20  5:05 ` [PATCH v6] ACPI: explicit init HEST, SDEI and GHES in apci_init Shuai Xue
2022-01-20  5:05   ` Shuai Xue
2022-01-20 16:22   ` Bjorn Helgaas
2022-01-20 16:22     ` Bjorn Helgaas
2022-01-21  3:43     ` Shuai Xue
2022-01-21  3:43       ` Shuai Xue
2022-01-21 19:46       ` Bjorn Helgaas
2022-01-21 19:46         ` Bjorn Helgaas
2022-01-22  5:26 ` [PATCH v7 1/2] ACPI: APEI: explicit init HEST " Shuai Xue
2022-01-22  5:26   ` Shuai Xue
2022-02-10  9:39   ` Shuai Xue
2022-02-10  9:39     ` Shuai Xue
2022-02-14 18:51     ` Rafael J. Wysocki
2022-02-14 18:51       ` Rafael J. Wysocki
2022-02-21 18:18   ` Nathan Chancellor
2022-02-21 18:18     ` Nathan Chancellor
2022-02-21 18:25     ` Rafael J. Wysocki [this message]
2022-02-21 18:25       ` Rafael J. Wysocki
2022-02-22  6:03     ` Shuai Xue
2022-02-22  6:03       ` Shuai Xue
2022-01-22  5:26 ` [PATCH v7 2/2] ACPI: APEI: rename ghes_init with an "acpi_" prefix Shuai Xue
2022-01-22  5:26   ` Shuai Xue
2022-02-27 12:25 ` [PATCH v8 1/2] ACPI: APEI: explicit init HEST and GHES in apci_init Shuai Xue
2022-02-27 12:25   ` Shuai Xue
2022-03-03 19:27   ` Rafael J. Wysocki
2022-03-03 19:27     ` Rafael J. Wysocki
2022-02-27 12:25 ` [PATCH v8 2/2] ACPI: APEI: rename ghes_init with an "acpi_" prefix Shuai Xue
2022-02-27 12:25   ` Shuai Xue

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=CAJZ5v0iwpvOMYt-bAAaN86+6+dzWqMRmdZnVqyw8wjhjh1Mp4w@mail.gmail.com \
    --to=rafael@kernel.org \
    --cc=bhelgaas@google.com \
    --cc=bp@alien8.de \
    --cc=helgaas@kernel.org \
    --cc=james.morse@arm.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=nathan@kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=tony.luck@intel.com \
    --cc=xueshuai@linux.alibaba.com \
    --cc=zhangliguang@linux.alibaba.com \
    --cc=zhuo.song@linux.alibaba.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.