@@ -445,73 +445,70 @@ bool osc_sb_cppc2_support_acked;
445445static void acpi_bus_osc_negotiate_platform_control (void )
446446{
447447 static const u8 sb_uuid_str [] = "0811B06E-4A27-44F9-8D60-3CBBC22E7B48" ;
448- u32 capbuf [2 ];
448+ u32 capbuf [2 ], feature_mask ;
449449 struct acpi_buffer cap = {
450450 .pointer = capbuf ,
451451 .length = sizeof (capbuf ),
452452 };
453453 acpi_handle handle ;
454454
455- capbuf [OSC_SUPPORT_DWORD ] = OSC_SB_PR3_SUPPORT ; /* _PR3 is in use */
455+ feature_mask = OSC_SB_PR3_SUPPORT | OSC_SB_HOTPLUG_OST_SUPPORT |
456+ OSC_SB_PCLPI_SUPPORT | OSC_SB_OVER_16_PSTATES_SUPPORT |
457+ OSC_SB_GED_SUPPORT | OSC_SB_IRQ_RESOURCE_SOURCE_SUPPORT ;
458+
459+ if (IS_ENABLED (CONFIG_ARM64 ) || IS_ENABLED (CONFIG_X86 ))
460+ feature_mask |= OSC_SB_GENERIC_INITIATOR_SUPPORT ;
461+
462+ if (IS_ENABLED (CONFIG_ACPI_CPPC_LIB )) {
463+ feature_mask |= OSC_SB_CPC_SUPPORT | OSC_SB_CPCV2_SUPPORT |
464+ OSC_SB_CPC_FLEXIBLE_ADR_SPACE ;
465+ if (IS_ENABLED (CONFIG_SCHED_MC_PRIO ))
466+ feature_mask |= OSC_SB_CPC_DIVERSE_HIGH_SUPPORT ;
467+ }
468+
456469 if (IS_ENABLED (CONFIG_ACPI_PROCESSOR_AGGREGATOR ))
457- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_PAD_SUPPORT ;
470+ feature_mask |= OSC_SB_PAD_SUPPORT ;
471+
458472 if (IS_ENABLED (CONFIG_ACPI_PROCESSOR ))
459- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_PPC_OST_SUPPORT ;
473+ feature_mask |= OSC_SB_PPC_OST_SUPPORT ;
474+
460475 if (IS_ENABLED (CONFIG_ACPI_THERMAL ))
461- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_FAST_THERMAL_SAMPLING_SUPPORT ;
476+ feature_mask |= OSC_SB_FAST_THERMAL_SAMPLING_SUPPORT ;
477+
462478 if (IS_ENABLED (CONFIG_ACPI_BATTERY ))
463- capbuf [ OSC_SUPPORT_DWORD ] |= OSC_SB_BATTERY_CHARGE_LIMITING_SUPPORT ;
479+ feature_mask |= OSC_SB_BATTERY_CHARGE_LIMITING_SUPPORT ;
464480
465- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_HOTPLUG_OST_SUPPORT ;
466- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_PCLPI_SUPPORT ;
467- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_OVER_16_PSTATES_SUPPORT ;
468- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_GED_SUPPORT ;
469- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_IRQ_RESOURCE_SOURCE_SUPPORT ;
470481 if (IS_ENABLED (CONFIG_ACPI_PRMT ))
471- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_PRM_SUPPORT ;
472- if (IS_ENABLED (CONFIG_ACPI_FFH ))
473- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_FFH_OPR_SUPPORT ;
482+ feature_mask |= OSC_SB_PRM_SUPPORT ;
474483
475- #ifdef CONFIG_ARM64
476- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_GENERIC_INITIATOR_SUPPORT ;
477- #endif
478- #ifdef CONFIG_X86
479- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_GENERIC_INITIATOR_SUPPORT ;
480- #endif
481-
482- #ifdef CONFIG_ACPI_CPPC_LIB
483- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_CPC_SUPPORT ;
484- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_CPCV2_SUPPORT ;
485- #endif
486-
487- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_CPC_FLEXIBLE_ADR_SPACE ;
488-
489- if (IS_ENABLED (CONFIG_SCHED_MC_PRIO ))
490- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_CPC_DIVERSE_HIGH_SUPPORT ;
484+ if (IS_ENABLED (CONFIG_ACPI_FFH ))
485+ feature_mask |= OSC_SB_FFH_OPR_SUPPORT ;
491486
492487 if (IS_ENABLED (CONFIG_USB4 ))
493- capbuf [ OSC_SUPPORT_DWORD ] |= OSC_SB_NATIVE_USB4_SUPPORT ;
488+ feature_mask |= OSC_SB_NATIVE_USB4_SUPPORT ;
494489
495490 if (!ghes_disable )
496- capbuf [OSC_SUPPORT_DWORD ] |= OSC_SB_APEI_SUPPORT ;
491+ feature_mask |= OSC_SB_APEI_SUPPORT ;
492+
497493 if (ACPI_FAILURE (acpi_get_handle (NULL , "\\_SB" , & handle )))
498494 return ;
499495
496+ capbuf [OSC_SUPPORT_DWORD ] = feature_mask ;
497+
498+ acpi_handle_info (handle , "platform _OSC: OS support mask [%08x]\n" , feature_mask );
499+
500500 if (acpi_osc_handshake (handle , sb_uuid_str , 1 , & cap ))
501501 return ;
502502
503- #ifdef CONFIG_ACPI_CPPC_LIB
504- osc_sb_cppc2_support_acked = capbuf [ OSC_SUPPORT_DWORD ] & OSC_SB_CPCV2_SUPPORT ;
505- #endif
503+ feature_mask = capbuf [ OSC_SUPPORT_DWORD ];
504+
505+ acpi_handle_info ( handle , "platform _OSC: OS control mask [%08x]\n" , feature_mask );
506506
507- osc_sb_apei_support_acked =
508- capbuf [OSC_SUPPORT_DWORD ] & OSC_SB_APEI_SUPPORT ;
509- osc_pc_lpi_support_confirmed =
510- capbuf [OSC_SUPPORT_DWORD ] & OSC_SB_PCLPI_SUPPORT ;
511- osc_sb_native_usb4_support_confirmed =
512- capbuf [OSC_SUPPORT_DWORD ] & OSC_SB_NATIVE_USB4_SUPPORT ;
513- osc_cpc_flexible_adr_space_confirmed =
514- capbuf [OSC_SUPPORT_DWORD ] & OSC_SB_CPC_FLEXIBLE_ADR_SPACE ;
507+ osc_sb_cppc2_support_acked = feature_mask & OSC_SB_CPCV2_SUPPORT ;
508+ osc_sb_apei_support_acked = feature_mask & OSC_SB_APEI_SUPPORT ;
509+ osc_pc_lpi_support_confirmed = feature_mask & OSC_SB_PCLPI_SUPPORT ;
510+ osc_sb_native_usb4_support_confirmed = feature_mask & OSC_SB_NATIVE_USB4_SUPPORT ;
511+ osc_cpc_flexible_adr_space_confirmed = feature_mask & OSC_SB_CPC_FLEXIBLE_ADR_SPACE ;
515512}
516513
517514/*
0 commit comments