CC: kbuild-...@lists.01.org BCC: l...@intel.com In-Reply-To: <20220317002704.1835870-3-vishal.l.ve...@intel.com> References: <20220317002704.1835870-3-vishal.l.ve...@intel.com> TO: Vishal Verma <vishal.l.ve...@intel.com>
Hi Vishal, [FYI, it's a private test report for your RFC patch.] [auto build test WARNING on 74be98774dfbc5b8b795db726bd772e735d2edd4] url: https://github.com/0day-ci/linux/commits/Vishal-Verma/acpi-add-support-for-CXL-_OSC/20220317-082840 base: 74be98774dfbc5b8b795db726bd772e735d2edd4 :::::: branch date: 5 hours ago :::::: commit date: 5 hours ago config: x86_64-randconfig-m001 (https://download.01.org/0day-ci/archive/20220317/202203171337.1o6vuotj-...@intel.com/config) compiler: gcc-9 (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> Reported-by: Dan Carpenter <dan.carpen...@oracle.com> New smatch warnings: drivers/acpi/pci_root.c:450 acpi_pci_osc_control_set() error: uninitialized symbol 'cxl_ctrl'. drivers/acpi/pci_root.c:564 calculate_cxl_control() error: uninitialized symbol 'control'. drivers/acpi/pci_root.c:619 negotiate_os_control() error: uninitialized symbol 'cxl_support'. Old smatch warnings: drivers/acpi/pci_root.c:453 acpi_pci_osc_control_set() error: uninitialized symbol 'cxl_ctrl'. drivers/acpi/pci_root.c:466 acpi_pci_osc_control_set() error: uninitialized symbol 'cxl_ctrl'. drivers/acpi/pci_root.c:480 acpi_pci_osc_control_set() error: uninitialized symbol 'cxl_ctrl'. vim +/cxl_ctrl +450 drivers/acpi/pci_root.c 2f7bbceb5b6aa93 Alexander Chiang 2009-06-10 401 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 402 /** 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 403 * acpi_pci_osc_control_set - Request control of PCI root _OSC features. 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 404 * @handle: ACPI handle of a PCI root bridge (or PCIe Root Complex). 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 405 * @mask: Mask of _OSC bits to request control of, place to store control mask. 843438deebe247f Yang Li 2021-12-23 406 * @support: _OSC supported capability. 8020d862c22d52b Vishal Verma 2022-03-16 407 * @cxl_mask: Mask of CXL _OSC control bits, place to store control mask. 8020d862c22d52b Vishal Verma 2022-03-16 408 * @cxl_support: CXL _OSC supported capability. 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 409 * 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 410 * Run _OSC query for @mask and if that is successful, compare the returned 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 411 * mask of control bits with @req. If all of the @req bits are set in the 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 412 * returned mask, run _OSC request for it. 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 413 * 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 414 * The variable at the @mask address may be modified regardless of whether or 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 415 * not the function returns success. On success it will contain the mask of 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 416 * _OSC bits the BIOS has granted control of, but its contents are meaningless 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 417 * on failure. 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 418 **/ 8020d862c22d52b Vishal Verma 2022-03-16 419 static acpi_status acpi_pci_osc_control_set(acpi_handle handle, u32 *mask, 8020d862c22d52b Vishal Verma 2022-03-16 420 u32 support, u32 *cxl_mask, 8020d862c22d52b Vishal Verma 2022-03-16 421 u32 cxl_support) 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 422 { 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 423 u32 req = OSC_PCI_EXPRESS_CAPABILITY_CONTROL; 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 424 struct acpi_pci_root *root; 866e61fc40c96e7 Bjorn Helgaas 2020-06-02 425 acpi_status status; 8020d862c22d52b Vishal Verma 2022-03-16 426 u32 ctrl, cxl_ctrl, capbuf[8]; 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 427 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 428 if (!mask) 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 429 return AE_BAD_PARAMETER; 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 430 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 431 root = acpi_pci_find_root(handle); 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 432 if (!root) 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 433 return AE_NOT_EXIST; 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 434 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 435 ctrl = *mask; 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 436 *mask |= root->osc_control_set; 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 437 8020d862c22d52b Vishal Verma 2022-03-16 438 if (is_cxl(root)) { 8020d862c22d52b Vishal Verma 2022-03-16 439 cxl_ctrl = *cxl_mask; 8020d862c22d52b Vishal Verma 2022-03-16 440 *mask |= root->osc_control_set; 8020d862c22d52b Vishal Verma 2022-03-16 441 } 8020d862c22d52b Vishal Verma 2022-03-16 442 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 443 /* Need to check the available controls bits before requesting them. */ 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 444 do { 8020d862c22d52b Vishal Verma 2022-03-16 445 status = acpi_pci_query_osc(root, support, mask, cxl_support, 8020d862c22d52b Vishal Verma 2022-03-16 446 cxl_mask); 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 447 if (ACPI_FAILURE(status)) 866e61fc40c96e7 Bjorn Helgaas 2020-06-02 448 return status; 8020d862c22d52b Vishal Verma 2022-03-16 449 if (is_cxl(root)) { 8020d862c22d52b Vishal Verma 2022-03-16 @450 if ((ctrl == *mask) && (cxl_ctrl == *cxl_mask)) 8020d862c22d52b Vishal Verma 2022-03-16 451 break; 8020d862c22d52b Vishal Verma 2022-03-16 452 decode_cxl_osc_control(root, "platform does not support", 8020d862c22d52b Vishal Verma 2022-03-16 453 cxl_ctrl & ~(*cxl_mask)); 8020d862c22d52b Vishal Verma 2022-03-16 454 } else { 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 455 if (ctrl == *mask) 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 456 break; 955f14b4ed0648d Bjorn Helgaas 2013-09-05 457 decode_osc_control(root, "platform does not support", 955f14b4ed0648d Bjorn Helgaas 2013-09-05 458 ctrl & ~(*mask)); 8020d862c22d52b Vishal Verma 2022-03-16 459 } 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 460 ctrl = *mask; 8020d862c22d52b Vishal Verma 2022-03-16 461 cxl_ctrl = *cxl_mask; 8020d862c22d52b Vishal Verma 2022-03-16 462 } while (*mask || *cxl_mask); 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 463 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 464 /* No need to request _OSC if the control was already granted. */ 8020d862c22d52b Vishal Verma 2022-03-16 465 if (((root->osc_control_set & ctrl) == ctrl) && 8020d862c22d52b Vishal Verma 2022-03-16 466 ((root->cxl_osc_control_set & cxl_ctrl) == cxl_ctrl)) 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 467 return AE_OK; 2b8fd9186d9275b Rafael J. Wysocki 2010-08-23 468 75fb60f26befb59 Rafael J. Wysocki 2010-08-23 469 if ((ctrl & req) != req) { 955f14b4ed0648d Bjorn Helgaas 2013-09-05 470 decode_osc_control(root, "not requesting control; platform does not support", 955f14b4ed0648d Bjorn Helgaas 2013-09-05 471 req & ~(ctrl)); 866e61fc40c96e7 Bjorn Helgaas 2020-06-02 472 return AE_SUPPORT; 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 473 } 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 474 b938a229c85a567 Bjorn Helgaas 2013-09-05 475 capbuf[OSC_QUERY_DWORD] = 0; b938a229c85a567 Bjorn Helgaas 2013-09-05 476 capbuf[OSC_SUPPORT_DWORD] = root->osc_support_set; b938a229c85a567 Bjorn Helgaas 2013-09-05 477 capbuf[OSC_CONTROL_DWORD] = ctrl; 8020d862c22d52b Vishal Verma 2022-03-16 478 if (is_cxl(root)) { 8020d862c22d52b Vishal Verma 2022-03-16 479 capbuf[OSC_CXL_SUPPORT_DWORD] = root->cxl_osc_support_set; 8020d862c22d52b Vishal Verma 2022-03-16 480 capbuf[OSC_CXL_CONTROL_DWORD] = cxl_ctrl; 8020d862c22d52b Vishal Verma 2022-03-16 481 } 8020d862c22d52b Vishal Verma 2022-03-16 482 8020d862c22d52b Vishal Verma 2022-03-16 483 status = acpi_pci_run_osc(root, capbuf, mask, cxl_mask); 866e61fc40c96e7 Bjorn Helgaas 2020-06-02 484 if (ACPI_FAILURE(status)) 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 485 return status; 866e61fc40c96e7 Bjorn Helgaas 2020-06-02 486 866e61fc40c96e7 Bjorn Helgaas 2020-06-02 487 root->osc_control_set = *mask; 8020d862c22d52b Vishal Verma 2022-03-16 488 root->cxl_osc_control_set = *cxl_mask; 866e61fc40c96e7 Bjorn Helgaas 2020-06-02 489 return AE_OK; 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 490 } 63f10f0f6df4e4e Kenji Kaneshige 2009-02-09 491 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 492 static u32 calculate_support(void) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 493 { 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 494 u32 support; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 495 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 496 /* 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 497 * All supported architectures that use ACPI have support for 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 498 * PCI domains, so we indicate this in _OSC support capabilities. 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 499 */ 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 500 support = OSC_PCI_SEGMENT_GROUPS_SUPPORT; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 501 support |= OSC_PCI_HPX_TYPE_3_SUPPORT; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 502 if (pci_ext_cfg_avail()) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 503 support |= OSC_PCI_EXT_CONFIG_SUPPORT; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 504 if (pcie_aspm_support_enabled()) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 505 support |= OSC_PCI_ASPM_SUPPORT | OSC_PCI_CLOCK_PM_SUPPORT; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 506 if (pci_msi_enabled()) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 507 support |= OSC_PCI_MSI_SUPPORT; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 508 if (IS_ENABLED(CONFIG_PCIE_EDR)) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 509 support |= OSC_PCI_EDR_SUPPORT; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 510 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 511 return support; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 512 } 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 513 8020d862c22d52b Vishal Verma 2022-03-16 514 static u32 calculate_cxl_support(void) 8020d862c22d52b Vishal Verma 2022-03-16 515 { 8020d862c22d52b Vishal Verma 2022-03-16 516 u32 support; 8020d862c22d52b Vishal Verma 2022-03-16 517 8020d862c22d52b Vishal Verma 2022-03-16 518 support = OSC_CXL_2_0_PORT_DEV_REG_ACCESS_SUPPORT; 8020d862c22d52b Vishal Verma 2022-03-16 519 support |= OSC_CXL_PER_SUPPORT; 8020d862c22d52b Vishal Verma 2022-03-16 520 if (IS_ENABLED(CONFIG_HOTPLUG_PCI_PCIE)) 8020d862c22d52b Vishal Verma 2022-03-16 521 support |= OSC_CXL_NATIVE_HP_SUPPORT; 8020d862c22d52b Vishal Verma 2022-03-16 522 8020d862c22d52b Vishal Verma 2022-03-16 523 return support; 8020d862c22d52b Vishal Verma 2022-03-16 524 } 8020d862c22d52b Vishal Verma 2022-03-16 525 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 526 static u32 calculate_control(void) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 527 { 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 528 u32 control; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 529 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 530 control = OSC_PCI_EXPRESS_CAPABILITY_CONTROL 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 531 | OSC_PCI_EXPRESS_PME_CONTROL; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 532 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 533 if (IS_ENABLED(CONFIG_PCIEASPM)) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 534 control |= OSC_PCI_EXPRESS_LTR_CONTROL; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 535 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 536 if (IS_ENABLED(CONFIG_HOTPLUG_PCI_PCIE)) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 537 control |= OSC_PCI_EXPRESS_NATIVE_HP_CONTROL; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 538 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 539 if (IS_ENABLED(CONFIG_HOTPLUG_PCI_SHPC)) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 540 control |= OSC_PCI_SHPC_NATIVE_HP_CONTROL; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 541 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 542 if (pci_aer_available()) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 543 control |= OSC_PCI_EXPRESS_AER_CONTROL; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 544 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 545 /* 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 546 * Per the Downstream Port Containment Related Enhancements ECN to 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 547 * the PCI Firmware Spec, r3.2, sec 4.5.1, table 4-5, 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 548 * OSC_PCI_EXPRESS_DPC_CONTROL indicates the OS supports both DPC 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 549 * and EDR. 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 550 */ 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 551 if (IS_ENABLED(CONFIG_PCIE_DPC) && IS_ENABLED(CONFIG_PCIE_EDR)) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 552 control |= OSC_PCI_EXPRESS_DPC_CONTROL; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 553 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 554 return control; 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 555 } 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 556 8020d862c22d52b Vishal Verma 2022-03-16 557 static u32 calculate_cxl_control(void) 8020d862c22d52b Vishal Verma 2022-03-16 558 { 8020d862c22d52b Vishal Verma 2022-03-16 559 u32 control; 8020d862c22d52b Vishal Verma 2022-03-16 560 8020d862c22d52b Vishal Verma 2022-03-16 561 if (pci_aer_available()) 8020d862c22d52b Vishal Verma 2022-03-16 562 control |= OSC_CXL_ERROR_REPORTING_CONTROL; 8020d862c22d52b Vishal Verma 2022-03-16 563 8020d862c22d52b Vishal Verma 2022-03-16 @564 return control; 8020d862c22d52b Vishal Verma 2022-03-16 565 } 8020d862c22d52b Vishal Verma 2022-03-16 566 87f1f87a16818c3 Joerg Roedel 2021-08-24 567 static bool os_control_query_checks(struct acpi_pci_root *root, u32 support) 87f1f87a16818c3 Joerg Roedel 2021-08-24 568 { 87f1f87a16818c3 Joerg Roedel 2021-08-24 569 struct acpi_device *device = root->device; 87f1f87a16818c3 Joerg Roedel 2021-08-24 570 87f1f87a16818c3 Joerg Roedel 2021-08-24 571 if (pcie_ports_disabled) { 87f1f87a16818c3 Joerg Roedel 2021-08-24 572 dev_info(&device->dev, "PCIe port services disabled; not requesting _OSC control\n"); 87f1f87a16818c3 Joerg Roedel 2021-08-24 573 return false; 87f1f87a16818c3 Joerg Roedel 2021-08-24 574 } 87f1f87a16818c3 Joerg Roedel 2021-08-24 575 87f1f87a16818c3 Joerg Roedel 2021-08-24 576 if ((support & ACPI_PCIE_REQ_SUPPORT) != ACPI_PCIE_REQ_SUPPORT) { 87f1f87a16818c3 Joerg Roedel 2021-08-24 577 decode_osc_support(root, "not requesting OS control; OS requires", 87f1f87a16818c3 Joerg Roedel 2021-08-24 578 ACPI_PCIE_REQ_SUPPORT); 87f1f87a16818c3 Joerg Roedel 2021-08-24 579 return false; 87f1f87a16818c3 Joerg Roedel 2021-08-24 580 } 87f1f87a16818c3 Joerg Roedel 2021-08-24 581 87f1f87a16818c3 Joerg Roedel 2021-08-24 582 return true; 87f1f87a16818c3 Joerg Roedel 2021-08-24 583 } 87f1f87a16818c3 Joerg Roedel 2021-08-24 584 53da48751c13ffc Dan Williams 2022-03-16 585 static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm) ^1da177e4c3f415 Linus Torvalds 2005-04-16 586 { 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 587 u32 support, control = 0, requested = 0; 8020d862c22d52b Vishal Verma 2022-03-16 588 u32 cxl_support, cxl_control = 0, cxl_requested = 0; 3e43abb012d45dc Bjorn Helgaas 2013-09-05 589 acpi_status status; 3e43abb012d45dc Bjorn Helgaas 2013-09-05 590 struct acpi_device *device = root->device; bfe2414aecca03d Jiang Liu 2013-05-28 591 acpi_handle handle = device->handle; ^1da177e4c3f415 Linus Torvalds 2005-04-16 592 7bc5a2bad0b8d9d Matthew Garrett 2014-09-20 593 /* 7bc5a2bad0b8d9d Matthew Garrett 2014-09-20 594 * Apple always return failure on _OSC calls when _OSI("Darwin") has 7bc5a2bad0b8d9d Matthew Garrett 2014-09-20 595 * been called successfully. We know the feature set supported by the 7bc5a2bad0b8d9d Matthew Garrett 2014-09-20 596 * platform, so avoid calling _OSC at all 7bc5a2bad0b8d9d Matthew Garrett 2014-09-20 597 */ 630b3aff8a51c90 Lukas Wunner 2017-08-01 598 if (x86_apple_machine) { 7bc5a2bad0b8d9d Matthew Garrett 2014-09-20 599 root->osc_control_set = ~OSC_PCI_EXPRESS_PME_CONTROL; 7bc5a2bad0b8d9d Matthew Garrett 2014-09-20 600 decode_osc_control(root, "OS assumes control of", 7bc5a2bad0b8d9d Matthew Garrett 2014-09-20 601 root->osc_control_set); 7bc5a2bad0b8d9d Matthew Garrett 2014-09-20 602 return; 7bc5a2bad0b8d9d Matthew Garrett 2014-09-20 603 } 7bc5a2bad0b8d9d Matthew Garrett 2014-09-20 604 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 605 support = calculate_support(); 955f14b4ed0648d Bjorn Helgaas 2013-09-05 606 955f14b4ed0648d Bjorn Helgaas 2013-09-05 607 decode_osc_support(root, "OS supports", support); de18966228ed4b4 Bjorn Helgaas 2013-09-05 608 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 609 if (os_control_query_checks(root, support)) 4c6f6060b7c4fe0 Joerg Roedel 2021-08-24 610 requested = control = calculate_control(); ac1c8e35a3262d0 Kuppuswamy Sathyanarayanan 2020-03-23 611 8020d862c22d52b Vishal Verma 2022-03-16 612 if (is_cxl(root)) { 8020d862c22d52b Vishal Verma 2022-03-16 613 cxl_support = calculate_cxl_support(); 8020d862c22d52b Vishal Verma 2022-03-16 614 decode_cxl_osc_support(root, "OS supports", cxl_support); 8020d862c22d52b Vishal Verma 2022-03-16 615 cxl_requested = cxl_control = calculate_cxl_control(); 8020d862c22d52b Vishal Verma 2022-03-16 616 } 8020d862c22d52b Vishal Verma 2022-03-16 617 8020d862c22d52b Vishal Verma 2022-03-16 618 status = acpi_pci_osc_control_set(handle, &control, support, 8020d862c22d52b Vishal Verma 2022-03-16 @619 &cxl_control, cxl_support); eca67315e0e0d5f Naga Chumbalkar 2011-03-21 620 if (ACPI_SUCCESS(status)) { 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 621 if (control) 955f14b4ed0648d Bjorn Helgaas 2013-09-05 622 decode_osc_control(root, "OS now controls", control); 8020d862c22d52b Vishal Verma 2022-03-16 623 if (cxl_control) 8020d862c22d52b Vishal Verma 2022-03-16 624 decode_cxl_osc_control(root, "OS now controls", 8020d862c22d52b Vishal Verma 2022-03-16 625 cxl_control); 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 626 b8178f130e25c1b Bjorn Helgaas 2013-04-01 627 if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) { b8178f130e25c1b Bjorn Helgaas 2013-04-01 628 /* 387d37577fdd05e Matthew Garrett 2015-04-07 629 * We have ASPM control, but the FADT indicates that 387d37577fdd05e Matthew Garrett 2015-04-07 630 * it's unsupported. Leave existing configuration 387d37577fdd05e Matthew Garrett 2015-04-07 631 * intact and prevent the OS from touching it. b8178f130e25c1b Bjorn Helgaas 2013-04-01 632 */ 387d37577fdd05e Matthew Garrett 2015-04-07 633 dev_info(&device->dev, "FADT indicates ASPM is unsupported, using BIOS configuration\n"); 387d37577fdd05e Matthew Garrett 2015-04-07 634 *no_aspm = 1; b8178f130e25c1b Bjorn Helgaas 2013-04-01 635 } eca67315e0e0d5f Naga Chumbalkar 2011-03-21 636 } else { 3dc48af310709b8 Neil Horman 2013-08-29 637 /* 3dc48af310709b8 Neil Horman 2013-08-29 638 * We want to disable ASPM here, but aspm_disabled 3dc48af310709b8 Neil Horman 2013-08-29 639 * needs to remain in its state from boot so that we 3dc48af310709b8 Neil Horman 2013-08-29 640 * properly handle PCIe 1.1 devices. So we set this 3dc48af310709b8 Neil Horman 2013-08-29 641 * flag here, to defer the action until after the ACPI 3dc48af310709b8 Neil Horman 2013-08-29 642 * root scan. 3dc48af310709b8 Neil Horman 2013-08-29 643 */ 3e43abb012d45dc Bjorn Helgaas 2013-09-05 644 *no_aspm = 1; 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 645 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 646 /* _OSC is optional for PCI host bridges */ 53da48751c13ffc Dan Williams 2022-03-16 647 if ((status == AE_NOT_FOUND) && !is_pcie(root)) 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 648 return; 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 649 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 650 if (control) { 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 651 decode_osc_control(root, "OS requested", requested); 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 652 decode_osc_control(root, "platform willing to grant", control); 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 653 } 8020d862c22d52b Vishal Verma 2022-03-16 654 if (cxl_control) { 8020d862c22d52b Vishal Verma 2022-03-16 655 decode_cxl_osc_control(root, "OS requested", cxl_requested); 8020d862c22d52b Vishal Verma 2022-03-16 656 decode_cxl_osc_control(root, "platform willing to grant", 8020d862c22d52b Vishal Verma 2022-03-16 657 cxl_control); 8020d862c22d52b Vishal Verma 2022-03-16 658 } 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 659 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 660 dev_info(&device->dev, "_OSC: platform retains control of PCIe features (%s)\n", 6bc779ee05d4fa6 Joerg Roedel 2021-08-24 661 acpi_format_exception(status)); eca67315e0e0d5f Naga Chumbalkar 2011-03-21 662 } 3e43abb012d45dc Bjorn Helgaas 2013-09-05 663 } 3e43abb012d45dc Bjorn Helgaas 2013-09-05 664 --- 0-DAY CI Kernel Test Service https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org _______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org