diff mbox series

[-next] ACPI: bus: Fix the _OSC capability check for FFH OpRegion

Message ID 20221118140059.614302-1-sudeep.holla@arm.com (mailing list archive)
State Mainlined, archived
Headers show
Series [-next] ACPI: bus: Fix the _OSC capability check for FFH OpRegion | expand

Commit Message

Sudeep Holla Nov. 18, 2022, 2 p.m. UTC
As per the ACPI specification(vide section Platform-Wide OSPM Capabilities)
the OSPM must set this bit to indicate support for the usage of Functional
Fixed Hardware (FFixedHW) Operation Regions rather than the firmware as
expected in the code.

Update the check accordingly to reflect the requirement as stated in the
specification.

Reported-by: Jose Marinho <jose.marinho@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/acpi/bus.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

Hi Rafael,

Sorry for this, but looks like I clearly missed to noticed this change
in the process of evolution of FFH OpRegions support. I had platform with
buggy/prototype firmware(must be from the initial code-first proposal)
and failed to catch this earlier. Thanks to Jose for identifying this.

Regards,
Sudeep

Comments

Rafael J. Wysocki Nov. 21, 2022, 7:12 p.m. UTC | #1
On Fri, Nov 18, 2022 at 3:01 PM Sudeep Holla <sudeep.holla@arm.com> wrote:
>
> As per the ACPI specification(vide section Platform-Wide OSPM Capabilities)
> the OSPM must set this bit to indicate support for the usage of Functional
> Fixed Hardware (FFixedHW) Operation Regions rather than the firmware as
> expected in the code.
>
> Update the check accordingly to reflect the requirement as stated in the
> specification.
>
> Reported-by: Jose Marinho <jose.marinho@arm.com>
> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
> ---
>  drivers/acpi/bus.c | 9 +++------
>  1 file changed, 3 insertions(+), 6 deletions(-)
>
> Hi Rafael,
>
> Sorry for this, but looks like I clearly missed to noticed this change
> in the process of evolution of FFH OpRegions support. I had platform with
> buggy/prototype firmware(must be from the initial code-first proposal)
> and failed to catch this earlier. Thanks to Jose for identifying this.

Applied, thanks!

> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> index 245fb0828e47..2b9eac7e7777 100644
> --- a/drivers/acpi/bus.c
> +++ b/drivers/acpi/bus.c
> @@ -300,8 +300,6 @@ EXPORT_SYMBOL_GPL(osc_sb_native_usb4_support_confirmed);
>
>  bool osc_sb_cppc2_support_acked;
>
> -bool osc_sb_ffh_opregion_support_confirmed;
> -
>  static u8 sb_uuid_str[] = "0811B06E-4A27-44F9-8D60-3CBBC22E7B48";
>  static void acpi_bus_osc_negotiate_platform_control(void)
>  {
> @@ -325,6 +323,8 @@ static void acpi_bus_osc_negotiate_platform_control(void)
>         capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PCLPI_SUPPORT;
>         if (IS_ENABLED(CONFIG_ACPI_PRMT))
>                 capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PRM_SUPPORT;
> +       if (IS_ENABLED(CONFIG_ACPI_FFH))
> +               capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_FFH_OPR_SUPPORT;
>
>  #ifdef CONFIG_ARM64
>         capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_GENERIC_INITIATOR_SUPPORT;
> @@ -385,8 +385,6 @@ static void acpi_bus_osc_negotiate_platform_control(void)
>                         capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_NATIVE_USB4_SUPPORT;
>                 osc_cpc_flexible_adr_space_confirmed =
>                         capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_CPC_FLEXIBLE_ADR_SPACE;
> -               osc_sb_ffh_opregion_support_confirmed =
> -                       capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_FFH_OPR_SUPPORT;
>         }
>
>         kfree(context.ret.pointer);
> @@ -1412,8 +1410,7 @@ static int __init acpi_init(void)
>                 disable_acpi();
>                 return result;
>         }
> -       if (osc_sb_ffh_opregion_support_confirmed)
> -               acpi_init_ffh();
> +       acpi_init_ffh();
>
>         pci_mmcfg_late_init();
>         acpi_iort_init();
> --
> 2.38.1
>
diff mbox series

Patch

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 245fb0828e47..2b9eac7e7777 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -300,8 +300,6 @@  EXPORT_SYMBOL_GPL(osc_sb_native_usb4_support_confirmed);
 
 bool osc_sb_cppc2_support_acked;
 
-bool osc_sb_ffh_opregion_support_confirmed;
-
 static u8 sb_uuid_str[] = "0811B06E-4A27-44F9-8D60-3CBBC22E7B48";
 static void acpi_bus_osc_negotiate_platform_control(void)
 {
@@ -325,6 +323,8 @@  static void acpi_bus_osc_negotiate_platform_control(void)
 	capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PCLPI_SUPPORT;
 	if (IS_ENABLED(CONFIG_ACPI_PRMT))
 		capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PRM_SUPPORT;
+	if (IS_ENABLED(CONFIG_ACPI_FFH))
+		capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_FFH_OPR_SUPPORT;
 
 #ifdef CONFIG_ARM64
 	capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_GENERIC_INITIATOR_SUPPORT;
@@ -385,8 +385,6 @@  static void acpi_bus_osc_negotiate_platform_control(void)
 			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_NATIVE_USB4_SUPPORT;
 		osc_cpc_flexible_adr_space_confirmed =
 			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_CPC_FLEXIBLE_ADR_SPACE;
-		osc_sb_ffh_opregion_support_confirmed =
-			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_FFH_OPR_SUPPORT;
 	}
 
 	kfree(context.ret.pointer);
@@ -1412,8 +1410,7 @@  static int __init acpi_init(void)
 		disable_acpi();
 		return result;
 	}
-	if (osc_sb_ffh_opregion_support_confirmed)
-		acpi_init_ffh();
+	acpi_init_ffh();
 
 	pci_mmcfg_late_init();
 	acpi_iort_init();