tree: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git intel_idle+acpi head: dcedc03145600b929a32acb85b212131b079bc46 commit: 0300cf31f061e6287810c894337f29df2e200e2d [4/10] ACPI: processor: Export acpi_processor_evaluate_cst() config: x86_64-randconfig-s0-20191216 (attached as .config) compiler: gcc-4.9 (Debian 4.9.2-10+deb8u1) 4.9.2 reproduce: git checkout 0300cf31f061e6287810c894337f29df2e200e2d # 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 All errors (new ones prefixed by >>): ld: drivers/acpi/acpi_processor.o: in function `acpi_processor_evaluate_cst': >> drivers/acpi/acpi_processor.c:831: undefined reference to `acpi_processor_ffh_cstate_probe' vim +831 drivers/acpi/acpi_processor.c 732 733 /** 734 * acpi_processor_evaluate_cst - Evaluate the processor _CST control method. 735 * @handle: ACPI handle of the processor object containing the _CST. 736 * @cpu: The numeric ID of the target CPU. 737 * @info: Object write the C-states information into. 738 * 739 * Extract the C-state information for the given CPU from the output of the _CST 740 * control method under the corresponding ACPI processor object (or processor 741 * device object) and populate @info with it. 742 * 743 * If any ACPI_ADR_SPACE_FIXED_HARDWARE C-states are found, invoke 744 * acpi_processor_ffh_cstate_probe() to verify them and update the 745 * cpu_cstate_entry data for @cpu. 746 */ 747 int acpi_processor_evaluate_cst(acpi_handle handle, u32 cpu, 748 struct acpi_processor_power *info) 749 { 750 struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; 751 union acpi_object *cst; 752 acpi_status status; 753 u64 count; 754 int last_index = 0; 755 int i, ret = 0; 756 757 status = acpi_evaluate_object(handle, "_CST", NULL, &buffer); 758 if (ACPI_FAILURE(status)) { 759 acpi_handle_debug(handle, "No _CST\n"); 760 return -ENODEV; 761 } 762 763 cst = buffer.pointer; 764 765 /* There must be at least 2 elements. */ 766 if (!cst || cst->type != ACPI_TYPE_PACKAGE || cst->package.count < 2) { 767 acpi_handle_warn(handle, "Invalid _CST output\n"); 768 ret = -EFAULT; 769 goto end; 770 } 771 772 count = cst->package.elements[0].integer.value; 773 774 /* Validate the number of C-states. */ 775 if (count < 1 || count != cst->package.count - 1) { 776 acpi_handle_warn(handle, "Inconsistent _CST data\n"); 777 ret = -EFAULT; 778 goto end; 779 } 780 781 for (i = 1; i <= count; i++) { 782 union acpi_object *element; 783 union acpi_object *obj; 784 struct acpi_power_register *reg; 785 struct acpi_processor_cx cx; 786 787 /* 788 * If there is not enough space for all C-states, skip the 789 * excess ones and log a warning. 790 */ 791 if (last_index >= ACPI_PROCESSOR_MAX_POWER - 1) { 792 acpi_handle_warn(handle, 793 "No room for more idle states (limit: %d)\n", 794 ACPI_PROCESSOR_MAX_POWER - 1); 795 break; 796 } 797 798 memset(&cx, 0, sizeof(cx)); 799 800 element = &cst->package.elements[i]; 801 if (element->type != ACPI_TYPE_PACKAGE) 802 continue; 803 804 if (element->package.count != 4) 805 continue; 806 807 obj = &element->package.elements[0]; 808 809 if (obj->type != ACPI_TYPE_BUFFER) 810 continue; 811 812 reg = (struct acpi_power_register *)obj->buffer.pointer; 813 814 obj = &element->package.elements[1]; 815 if (obj->type != ACPI_TYPE_INTEGER) 816 continue; 817 818 cx.type = obj->integer.value; 819 /* 820 * There are known cases in which the _CST output does not 821 * contain C1, so if the type of the first state found is not 822 * C1, leave an empty slot for C1 to be filled in later. 823 */ 824 if (i == 1 && cx.type != ACPI_STATE_C1) 825 last_index = 1; 826 827 cx.address = reg->address; 828 cx.index = last_index + 1; 829 830 if (reg->space_id == ACPI_ADR_SPACE_FIXED_HARDWARE) { > 831 if (!acpi_processor_ffh_cstate_probe(cpu, &cx, reg)) { --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation