Re: [PATCH v2] x86/acpi: Don't add CPUs that are not online capable
by Rafael J. Wysocki
Sorry for the delay.
On Tue, Aug 17, 2021 at 8:41 PM Limonciello, Mario
<mario.limonciello(a)amd.com> wrote:
>
> On 8/16/2021 09:04, Rafael J. Wysocki wrote:
> > On Fri, Aug 13, 2021 at 6:19 PM Mario Limonciello
> > <mario.limonciello(a)amd.com> wrote:
> >>
> >> A number of systems are showing "hotplug capable" CPUs when they
> >> are not really hotpluggable. This is because the MADT has extra
> >> CPU entries to support different CPUs that may be inserted into
> >> the socket with different numbers of cores.
> >>
> >> Starting with ACPI 6.3 the spec has an Online Capable bit in the
> >> MADT used to determine whether or not a CPU is hotplug capable
> >> when the enabled bit is not set.
> >>
> >> Link: https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuefi.or...
> >> Signed-off-by: Mario Limonciello <mario.limonciello(a)amd.com>
> >> ---
> >> arch/x86/kernel/acpi/boot.c | 10 ++++++++++
> >> include/acpi/actbl2.h | 1 +
> >> 2 files changed, 11 insertions(+)
> >>
> >> Changes from v1->v2:
> >> * Check the revision field in MADT to determine if it matches the
> >> bump from ACPI 6.3 as suggested by Hanjun Guo
> >> * Update description
> >>
> >> diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
> >> index e55e0c1fad8c..bfa69a5c9c0b 100644
> >> --- a/arch/x86/kernel/acpi/boot.c
> >> +++ b/arch/x86/kernel/acpi/boot.c
> >> @@ -53,6 +53,8 @@ int acpi_ioapic;
> >> int acpi_strict;
> >> int acpi_disable_cmcff;
> >>
> >> +bool acpi_support_online_capable;
> >
> > Missing static?
>
> Ack, thanks.
>
> >
> >> +
> >> /* ACPI SCI override configuration */
> >> u8 acpi_sci_flags __initdata;
> >> u32 acpi_sci_override_gsi __initdata = INVALID_ACPI_IRQ;
> >> @@ -138,6 +140,8 @@ static int __init acpi_parse_madt(struct acpi_table_header *table)
> >>
> >> pr_debug("Local APIC address 0x%08x\n", madt->address);
> >> }
> >> + if (madt->header.revision >= 5)
> >> + acpi_support_online_capable = true;
> >>
> >> default_acpi_madt_oem_check(madt->header.oem_id,
> >> madt->header.oem_table_id);
> >> @@ -239,6 +243,12 @@ acpi_parse_lapic(union acpi_subtable_headers * header, const unsigned long end)
> >> if (processor->id == 0xff)
> >> return 0;
> >>
> >> + /* don't register processors that can not be onlined */
> >> + if (acpi_support_online_capable &&
> >> + !(processor->lapic_flags & ACPI_MADT_ENABLED) &&
> >> + !(processor->lapic_flags & ACPI_MADT_ONLINE_CAPABLE))
> >> + return 0;
> >> +
> >> /*
> >> * We need to register disabled CPU as well to permit
> >> * counting disabled CPUs. This allows us to size
> >> diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
> >> index 2069ac38a4e2..fae45e383987 100644
> >> --- a/include/acpi/actbl2.h
> >> +++ b/include/acpi/actbl2.h
> >
> > The one below is an ACPICA change and I'd prefer it to be integrated
> > via the upstream ACPICA.
> >
> > Could you prepare an ACPICA pull request for just the bit below and
> > send it via GitHub?
>
> Sure thing.
> http://github.com/acpica/acpica/pull/708/
>
> They said they would take it later this month or next month.
>
> Given that, how do you want to proceed with the first part of this?
>
> Should I send a 2 patch series that will add the MADT bit to actbl2.h in
> advance of their next release, or should I wait to resubmit until after
> their next release and you've brought it into your tree?
If you want this to go into 5.15, I would suggest going for the first option.
Knowing that the ACPICA patch is going to reach upstream at one point,
I can put it into Linux in advance.
> >
> >> @@ -808,6 +808,7 @@ struct acpi_madt_multiproc_wakeup_mailbox {
> >> /* MADT Local APIC flags */
> >>
> >> #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */
> >> +#define ACPI_MADT_ONLINE_CAPABLE (2) /* 01: System HW supports enabling processor at runtime */
> >>
> >> /* MADT MPS INTI flags (inti_flags) */
> >>
> >> --
>
10 months
[pm:bleeding-edge] BUILD SUCCESS a93c0039d89d6f11b98f49db841515e65a5dd0ba
by kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
branch HEAD: a93c0039d89d6f11b98f49db841515e65a5dd0ba Merge branch 'acpi-bus' into linux-next
elapsed time: 4062m
configs tested: 387
configs skipped: 5
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
arm defconfig
arm64 allyesconfig
arm64 defconfig
arm allyesconfig
arm allmodconfig
i386 randconfig-c001-20210827
i386 randconfig-c001-20210829
i386 randconfig-c001-20210830
ia64 allmodconfig
i386 allyesconfig
x86_64 allyesconfig
x86_64 rhel-8.3-kselftests
ia64 allyesconfig
powerpc randconfig-c003-20210827
um x86_64_defconfig
riscv allyesconfig
mips allyesconfig
um i386_defconfig
mips allmodconfig
riscv allmodconfig
powerpc allyesconfig
s390 allyesconfig
m68k allmodconfig
s390 allmodconfig
powerpc allmodconfig
m68k allyesconfig
sparc allyesconfig
xtensa allyesconfig
h8300 allyesconfig
sh allmodconfig
parisc allyesconfig
arc allyesconfig
nios2 allyesconfig
alpha allyesconfig
mips randconfig-c004-20210829
arm mini2440_defconfig
x86_64 allnoconfig
powerpc ppc44x_defconfig
powerpc tqm5200_defconfig
xtensa smp_lx200_defconfig
arm realview_defconfig
arm ep93xx_defconfig
arm pxa3xx_defconfig
mips malta_qemu_32r6_defconfig
mips cobalt_defconfig
mips qi_lb60_defconfig
sparc64 alldefconfig
arm iop32x_defconfig
sh sh2007_defconfig
arm ixp4xx_defconfig
sh se7705_defconfig
powerpc fsp2_defconfig
sh ul2_defconfig
sh sh7785lcr_defconfig
sh se7780_defconfig
nios2 10m50_defconfig
sparc sparc64_defconfig
arm am200epdkit_defconfig
sh sh7757lcr_defconfig
powerpc mpc836x_mds_defconfig
nios2 3c120_defconfig
sh rsk7264_defconfig
arm spear6xx_defconfig
arm h3600_defconfig
powerpc mpc832x_mds_defconfig
sh polaris_defconfig
powerpc rainier_defconfig
arm rpc_defconfig
powerpc pseries_defconfig
powerpc mpc8315_rdb_defconfig
mips gcw0_defconfig
sh rsk7269_defconfig
mips fuloong2e_defconfig
sh sh7763rdp_defconfig
m68k m5275evb_defconfig
arm spear13xx_defconfig
arm footbridge_defconfig
um alldefconfig
microblaze mmu_defconfig
m68k multi_defconfig
powerpc tqm8541_defconfig
mips ath25_defconfig
arc nsimosci_hs_defconfig
arm nhk8815_defconfig
arm lpc18xx_defconfig
mips mpc30x_defconfig
mips ip32_defconfig
m68k m5272c3_defconfig
arm gemini_defconfig
powerpc xes_mpc85xx_defconfig
mips cu1000-neo_defconfig
sparc sparc32_defconfig
arm sunxi_defconfig
mips workpad_defconfig
powerpc amigaone_defconfig
powerpc sbc8548_defconfig
arm at91_dt_defconfig
sh ecovec24-romimage_defconfig
powerpc g5_defconfig
sh ecovec24_defconfig
xtensa virt_defconfig
arm socfpga_defconfig
powerpc mvme5100_defconfig
arm64 alldefconfig
powerpc holly_defconfig
arm multi_v5_defconfig
powerpc mpc512x_defconfig
sh se7206_defconfig
mips loongson2k_defconfig
arm h5000_defconfig
mips cu1830-neo_defconfig
sh sdk7780_defconfig
x86_64 alldefconfig
powerpc microwatt_defconfig
sh se7724_defconfig
arm pcm027_defconfig
arm palmz72_defconfig
xtensa audio_kc705_defconfig
powerpc ksi8560_defconfig
m68k m5475evb_defconfig
sh kfr2r09_defconfig
mips pic32mzda_defconfig
arm lart_defconfig
sh apsh4a3a_defconfig
arm imx_v4_v5_defconfig
mips xway_defconfig
mips maltaup_defconfig
openrisc simple_smp_defconfig
sh sh7770_generic_defconfig
sh migor_defconfig
arm pxa168_defconfig
s390 defconfig
sh r7780mp_defconfig
arm badge4_defconfig
mips decstation_64_defconfig
powerpc mpc834x_mds_defconfig
powerpc redwood_defconfig
arm stm32_defconfig
s390 alldefconfig
powerpc tqm8xx_defconfig
mips loongson1b_defconfig
arm s5pv210_defconfig
xtensa alldefconfig
sh edosk7705_defconfig
mips tb0219_defconfig
sh kfr2r09-romimage_defconfig
powerpc ebony_defconfig
sh espt_defconfig
arm mvebu_v7_defconfig
powerpc obs600_defconfig
sh shmin_defconfig
mips ip28_defconfig
openrisc or1klitex_defconfig
mips malta_kvm_defconfig
powerpc cm5200_defconfig
sh se7722_defconfig
sh se7751_defconfig
ia64 generic_defconfig
sh rsk7201_defconfig
sh microdev_defconfig
arm mmp2_defconfig
m68k m5307c3_defconfig
powerpc mpc7448_hpc2_defconfig
mips nlm_xlp_defconfig
powerpc warp_defconfig
m68k mvme147_defconfig
xtensa common_defconfig
mips cavium_octeon_defconfig
arm hackkit_defconfig
arm pxa255-idp_defconfig
m68k bvme6000_defconfig
mips maltaup_xpa_defconfig
sh edosk7760_defconfig
powerpc storcenter_defconfig
powerpc makalu_defconfig
powerpc mpc885_ads_defconfig
powerpc ppc6xx_defconfig
sh se7721_defconfig
m68k defconfig
mips db1xxx_defconfig
arm vf610m4_defconfig
xtensa defconfig
um defconfig
sh se7750_defconfig
powerpc mpc834x_itx_defconfig
mips ar7_defconfig
arc hsdk_defconfig
h8300 defconfig
sh lboxre2_defconfig
arm shannon_defconfig
powerpc powernv_defconfig
powerpc socrates_defconfig
arm netwinder_defconfig
arc tb10x_defconfig
arm keystone_defconfig
powerpc chrp32_defconfig
arm multi_v4t_defconfig
mips tb0226_defconfig
m68k alldefconfig
mips capcella_defconfig
arm assabet_defconfig
arm integrator_defconfig
openrisc alldefconfig
arm sama5_defconfig
mips bcm47xx_defconfig
arm dove_defconfig
riscv rv32_defconfig
powerpc akebono_defconfig
arc vdk_hs38_defconfig
sh ap325rxa_defconfig
sh rts7751r2dplus_defconfig
nds32 allnoconfig
alpha defconfig
powerpc bamboo_defconfig
powerpc ppc64e_defconfig
arm colibri_pxa270_defconfig
m68k m5249evb_defconfig
powerpc ppc64_defconfig
arm cerfcube_defconfig
sparc alldefconfig
parisc generic-32bit_defconfig
m68k q40_defconfig
powerpc mpc834x_itxgp_defconfig
arm vt8500_v6_v7_defconfig
powerpc mpc837x_mds_defconfig
xtensa nommu_kc705_defconfig
arc vdk_hs38_smp_defconfig
arm vexpress_defconfig
mips rt305x_defconfig
arc haps_hs_smp_defconfig
arm shmobile_defconfig
mips rs90_defconfig
arm hisi_defconfig
powerpc pasemi_defconfig
powerpc mpc832x_rdb_defconfig
m68k m5208evb_defconfig
arm pleb_defconfig
powerpc mpc836x_rdk_defconfig
arm s3c6400_defconfig
arm lubbock_defconfig
sh rts7751r2d1_defconfig
i386 alldefconfig
mips rbtx49xx_defconfig
arm bcm2835_defconfig
sh se7343_defconfig
powerpc kilauea_defconfig
arm imx_v6_v7_defconfig
sh secureedge5410_defconfig
mips bcm63xx_defconfig
microblaze defconfig
openrisc defconfig
powerpc eiger_defconfig
mips maltasmvp_eva_defconfig
sh apsh4ad0a_defconfig
ia64 defconfig
nios2 defconfig
nds32 defconfig
csky defconfig
arc defconfig
parisc defconfig
sparc defconfig
i386 defconfig
powerpc allnoconfig
i386 randconfig-a001-20210828
i386 randconfig-a006-20210828
i386 randconfig-a002-20210828
i386 randconfig-a005-20210828
i386 randconfig-a003-20210828
i386 randconfig-a004-20210828
x86_64 randconfig-a014-20210827
x86_64 randconfig-a015-20210827
x86_64 randconfig-a016-20210827
x86_64 randconfig-a013-20210827
x86_64 randconfig-a012-20210827
x86_64 randconfig-a011-20210827
x86_64 randconfig-a014-20210830
x86_64 randconfig-a015-20210830
x86_64 randconfig-a013-20210830
x86_64 randconfig-a016-20210830
x86_64 randconfig-a012-20210830
x86_64 randconfig-a011-20210830
x86_64 randconfig-a014-20210829
x86_64 randconfig-a016-20210829
x86_64 randconfig-a015-20210829
x86_64 randconfig-a012-20210829
x86_64 randconfig-a013-20210829
x86_64 randconfig-a011-20210829
i386 randconfig-a011-20210827
i386 randconfig-a016-20210827
i386 randconfig-a012-20210827
i386 randconfig-a014-20210827
i386 randconfig-a013-20210827
i386 randconfig-a015-20210827
i386 randconfig-a011-20210829
i386 randconfig-a016-20210829
i386 randconfig-a012-20210829
i386 randconfig-a014-20210829
i386 randconfig-a013-20210829
i386 randconfig-a015-20210829
i386 randconfig-a016-20210830
i386 randconfig-a011-20210830
i386 randconfig-a015-20210830
i386 randconfig-a014-20210830
i386 randconfig-a012-20210830
i386 randconfig-a013-20210830
arc randconfig-r043-20210827
riscv randconfig-r042-20210827
s390 randconfig-r044-20210827
s390 randconfig-r044-20210830
arc randconfig-r043-20210830
riscv randconfig-r042-20210830
arc randconfig-r043-20210829
riscv randconfig-r042-20210829
s390 randconfig-r044-20210829
riscv nommu_k210_defconfig
riscv nommu_virt_defconfig
riscv allnoconfig
riscv defconfig
x86_64 defconfig
x86_64 rhel-8.3
x86_64 kexec
clang tested configs:
s390 randconfig-c005-20210829
i386 randconfig-c001-20210829
arm randconfig-c002-20210829
riscv randconfig-c006-20210829
x86_64 randconfig-c007-20210829
powerpc randconfig-c003-20210829
mips randconfig-c004-20210829
i386 randconfig-c001-20210828
s390 randconfig-c005-20210828
arm randconfig-c002-20210828
riscv randconfig-c006-20210828
x86_64 randconfig-c007-20210828
mips randconfig-c004-20210828
s390 randconfig-c005-20210827
i386 randconfig-c001-20210827
arm randconfig-c002-20210827
riscv randconfig-c006-20210827
powerpc randconfig-c003-20210827
x86_64 randconfig-c007-20210827
mips randconfig-c004-20210827
i386 randconfig-c001-20210830
s390 randconfig-c005-20210830
riscv randconfig-c006-20210830
powerpc randconfig-c003-20210830
mips randconfig-c004-20210830
arm randconfig-c002-20210830
x86_64 randconfig-c007-20210830
x86_64 randconfig-a005-20210827
x86_64 randconfig-a001-20210827
x86_64 randconfig-a006-20210827
x86_64 randconfig-a003-20210827
x86_64 randconfig-a004-20210827
x86_64 randconfig-a002-20210827
x86_64 randconfig-a001-20210829
x86_64 randconfig-a006-20210829
x86_64 randconfig-a005-20210829
x86_64 randconfig-a003-20210829
x86_64 randconfig-a004-20210829
x86_64 randconfig-a002-20210829
x86_64 randconfig-a005-20210830
x86_64 randconfig-a001-20210830
x86_64 randconfig-a003-20210830
x86_64 randconfig-a002-20210830
x86_64 randconfig-a004-20210830
x86_64 randconfig-a006-20210830
i386 randconfig-a001-20210829
i386 randconfig-a006-20210829
i386 randconfig-a005-20210829
i386 randconfig-a004-20210829
i386 randconfig-a003-20210829
i386 randconfig-a006-20210827
i386 randconfig-a001-20210827
i386 randconfig-a002-20210827
i386 randconfig-a005-20210827
i386 randconfig-a004-20210827
i386 randconfig-a003-20210827
i386 randconfig-a002-20210829
i386 randconfig-a005-20210830
i386 randconfig-a002-20210830
i386 randconfig-a003-20210830
i386 randconfig-a006-20210830
i386 randconfig-a004-20210830
i386 randconfig-a001-20210830
i386 randconfig-a011-20210828
i386 randconfig-a016-20210828
i386 randconfig-a012-20210828
i386 randconfig-a014-20210828
i386 randconfig-a013-20210828
i386 randconfig-a015-20210828
hexagon randconfig-r041-20210827
hexagon randconfig-r045-20210827
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
10 months
[pm:bleeding-edge] BUILD SUCCESS 10bc7fbefe3a9ab4a8e7531752e200ceff5919c7
by kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
branch HEAD: 10bc7fbefe3a9ab4a8e7531752e200ceff5919c7 Merge branch 'pm-cpufreq-fixes' into linux-next
elapsed time: 1048m
configs tested: 117
configs skipped: 3
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
arm defconfig
arm64 allyesconfig
arm64 defconfig
arm allyesconfig
arm allmodconfig
i386 randconfig-c001-20210816
arc allyesconfig
nios2 allyesconfig
alpha allyesconfig
riscv nommu_k210_defconfig
mips malta_kvm_defconfig
powerpc rainier_defconfig
ia64 generic_defconfig
powerpc tqm8540_defconfig
mips maltasmvp_defconfig
powerpc sequoia_defconfig
sh sh7757lcr_defconfig
powerpc icon_defconfig
powerpc redwood_defconfig
powerpc asp8347_defconfig
parisc generic-32bit_defconfig
powerpc mpc837x_mds_defconfig
arm mps2_defconfig
arc vdk_hs38_defconfig
mips jazz_defconfig
mips cu1000-neo_defconfig
ia64 zx1_defconfig
sh edosk7705_defconfig
powerpc microwatt_defconfig
arm colibri_pxa270_defconfig
um alldefconfig
sh se7721_defconfig
sh rsk7201_defconfig
mips jmr3927_defconfig
arm footbridge_defconfig
arm ep93xx_defconfig
arm keystone_defconfig
mips ath79_defconfig
powerpc katmai_defconfig
x86_64 allnoconfig
powerpc currituck_defconfig
powerpc canyonlands_defconfig
sh ecovec24_defconfig
powerpc allnoconfig
arm cm_x300_defconfig
mips maltasmvp_eva_defconfig
powerpc cm5200_defconfig
arm spear13xx_defconfig
arm socfpga_defconfig
xtensa xip_kc705_defconfig
mips loongson1c_defconfig
arm badge4_defconfig
ia64 allmodconfig
ia64 defconfig
ia64 allyesconfig
m68k allmodconfig
m68k defconfig
m68k allyesconfig
nios2 defconfig
nds32 allnoconfig
nds32 defconfig
csky defconfig
alpha defconfig
xtensa allyesconfig
h8300 allyesconfig
arc defconfig
sh allmodconfig
parisc defconfig
s390 allyesconfig
s390 allmodconfig
parisc allyesconfig
s390 defconfig
i386 allyesconfig
sparc allyesconfig
sparc defconfig
i386 defconfig
mips allyesconfig
mips allmodconfig
powerpc allyesconfig
powerpc allmodconfig
x86_64 randconfig-a006-20210816
x86_64 randconfig-a004-20210816
x86_64 randconfig-a003-20210816
x86_64 randconfig-a001-20210816
x86_64 randconfig-a005-20210816
x86_64 randconfig-a002-20210816
i386 randconfig-a004-20210816
i386 randconfig-a003-20210816
i386 randconfig-a002-20210816
i386 randconfig-a001-20210816
i386 randconfig-a006-20210816
i386 randconfig-a005-20210816
riscv allyesconfig
riscv allnoconfig
riscv allmodconfig
riscv nommu_virt_defconfig
riscv defconfig
riscv rv32_defconfig
um x86_64_defconfig
um i386_defconfig
x86_64 allyesconfig
x86_64 rhel-8.3-kselftests
x86_64 defconfig
x86_64 rhel-8.3
x86_64 kexec
clang tested configs:
x86_64 randconfig-a011-20210816
x86_64 randconfig-a013-20210816
x86_64 randconfig-a016-20210816
x86_64 randconfig-a012-20210816
x86_64 randconfig-a015-20210816
x86_64 randconfig-a014-20210816
i386 randconfig-a011-20210816
i386 randconfig-a015-20210816
i386 randconfig-a013-20210816
i386 randconfig-a014-20210816
i386 randconfig-a016-20210816
i386 randconfig-a012-20210816
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
10 months, 2 weeks
[pm:bleeding-edge] BUILD SUCCESS d0eded4f9e450c928a018f5fd675b75e1b726803
by kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
branch HEAD: d0eded4f9e450c928a018f5fd675b75e1b726803 Merge branch 'pm-cpu' into bleeding-edge
elapsed time: 931m
configs tested: 95
configs skipped: 3
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
arm defconfig
arm64 allyesconfig
arm64 defconfig
arm allyesconfig
arm allmodconfig
i386 randconfig-c001-20210816
mips gcw0_defconfig
arm keystone_defconfig
arm h5000_defconfig
arm colibri_pxa270_defconfig
sh hp6xx_defconfig
arm mainstone_defconfig
powerpc pasemi_defconfig
arm lubbock_defconfig
xtensa iss_defconfig
sh shmin_defconfig
m68k sun3_defconfig
arc axs101_defconfig
mips loongson2k_defconfig
arm cerfcube_defconfig
arm imx_v4_v5_defconfig
powerpc xes_mpc85xx_defconfig
mips decstation_defconfig
arm jornada720_defconfig
ia64 allmodconfig
ia64 defconfig
ia64 allyesconfig
x86_64 allnoconfig
m68k allmodconfig
m68k defconfig
m68k allyesconfig
nds32 defconfig
nios2 allyesconfig
csky defconfig
alpha defconfig
alpha allyesconfig
xtensa allyesconfig
h8300 allyesconfig
arc defconfig
sh allmodconfig
parisc defconfig
s390 allyesconfig
s390 allmodconfig
parisc allyesconfig
s390 defconfig
i386 allyesconfig
sparc allyesconfig
sparc defconfig
i386 defconfig
nios2 defconfig
arc allyesconfig
nds32 allnoconfig
mips allyesconfig
mips allmodconfig
powerpc allyesconfig
powerpc allmodconfig
powerpc allnoconfig
x86_64 randconfig-a006-20210816
x86_64 randconfig-a004-20210816
x86_64 randconfig-a003-20210816
x86_64 randconfig-a001-20210816
x86_64 randconfig-a005-20210816
x86_64 randconfig-a002-20210816
i386 randconfig-a004-20210816
i386 randconfig-a003-20210816
i386 randconfig-a002-20210816
i386 randconfig-a001-20210816
i386 randconfig-a006-20210816
i386 randconfig-a005-20210816
riscv nommu_k210_defconfig
riscv allyesconfig
riscv nommu_virt_defconfig
riscv allnoconfig
riscv defconfig
riscv rv32_defconfig
riscv allmodconfig
x86_64 rhel-8.3-kselftests
um x86_64_defconfig
um i386_defconfig
x86_64 allyesconfig
x86_64 defconfig
x86_64 rhel-8.3
x86_64 kexec
clang tested configs:
x86_64 randconfig-a011-20210816
x86_64 randconfig-a013-20210816
x86_64 randconfig-a016-20210816
x86_64 randconfig-a012-20210816
x86_64 randconfig-a015-20210816
x86_64 randconfig-a014-20210816
i386 randconfig-a011-20210816
i386 randconfig-a015-20210816
i386 randconfig-a013-20210816
i386 randconfig-a014-20210816
i386 randconfig-a016-20210816
i386 randconfig-a012-20210816
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
10 months, 2 weeks
Re: [PATCH 2/2] ACPI: SPCR: Add support for the new 16550-compatible Serial Port Subtype
by Rafael J. Wysocki
On Wed, Jul 14, 2021 at 11:46 PM Marcin Wojtas <mw(a)semihalf.com> wrote:
>
> The Microsoft Debug Port Table 2 (DBG2) specification revision
> May 31, 2017 added definition of the 16550-compatible Serial Port
> Subtype with parameters defined in Generic Address Structure (GAS) [1]
>
> Add its support in the SPCR table parsing routine.
>
> [1] https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup/acpi-de...
>
> Signed-off-by: Marcin Wojtas <mw(a)semihalf.com>
> ---
> drivers/acpi/spcr.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/acpi/spcr.c b/drivers/acpi/spcr.c
> index 88460bacd5ae..25c2d0be953e 100644
> --- a/drivers/acpi/spcr.c
> +++ b/drivers/acpi/spcr.c
> @@ -136,6 +136,7 @@ int __init acpi_parse_spcr(bool enable_earlycon, bool enable_console)
> break;
> case ACPI_DBG2_16550_COMPATIBLE:
> case ACPI_DBG2_16550_SUBSET:
> + case ACPI_DBG2_16550_WITH_GAS:
> uart = "uart";
> break;
> default:
> --
Applied as 5.15 material, thanks!
10 months, 2 weeks
Re: [PATCH v2] x86/acpi: Don't add CPUs that are not online capable
by Rafael J. Wysocki
On Fri, Aug 13, 2021 at 6:19 PM Mario Limonciello
<mario.limonciello(a)amd.com> wrote:
>
> A number of systems are showing "hotplug capable" CPUs when they
> are not really hotpluggable. This is because the MADT has extra
> CPU entries to support different CPUs that may be inserted into
> the socket with different numbers of cores.
>
> Starting with ACPI 6.3 the spec has an Online Capable bit in the
> MADT used to determine whether or not a CPU is hotplug capable
> when the enabled bit is not set.
>
> Link: https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/05_ACPI_Software_Programmin...
> Signed-off-by: Mario Limonciello <mario.limonciello(a)amd.com>
> ---
> arch/x86/kernel/acpi/boot.c | 10 ++++++++++
> include/acpi/actbl2.h | 1 +
> 2 files changed, 11 insertions(+)
>
> Changes from v1->v2:
> * Check the revision field in MADT to determine if it matches the
> bump from ACPI 6.3 as suggested by Hanjun Guo
> * Update description
>
> diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
> index e55e0c1fad8c..bfa69a5c9c0b 100644
> --- a/arch/x86/kernel/acpi/boot.c
> +++ b/arch/x86/kernel/acpi/boot.c
> @@ -53,6 +53,8 @@ int acpi_ioapic;
> int acpi_strict;
> int acpi_disable_cmcff;
>
> +bool acpi_support_online_capable;
Missing static?
> +
> /* ACPI SCI override configuration */
> u8 acpi_sci_flags __initdata;
> u32 acpi_sci_override_gsi __initdata = INVALID_ACPI_IRQ;
> @@ -138,6 +140,8 @@ static int __init acpi_parse_madt(struct acpi_table_header *table)
>
> pr_debug("Local APIC address 0x%08x\n", madt->address);
> }
> + if (madt->header.revision >= 5)
> + acpi_support_online_capable = true;
>
> default_acpi_madt_oem_check(madt->header.oem_id,
> madt->header.oem_table_id);
> @@ -239,6 +243,12 @@ acpi_parse_lapic(union acpi_subtable_headers * header, const unsigned long end)
> if (processor->id == 0xff)
> return 0;
>
> + /* don't register processors that can not be onlined */
> + if (acpi_support_online_capable &&
> + !(processor->lapic_flags & ACPI_MADT_ENABLED) &&
> + !(processor->lapic_flags & ACPI_MADT_ONLINE_CAPABLE))
> + return 0;
> +
> /*
> * We need to register disabled CPU as well to permit
> * counting disabled CPUs. This allows us to size
> diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
> index 2069ac38a4e2..fae45e383987 100644
> --- a/include/acpi/actbl2.h
> +++ b/include/acpi/actbl2.h
The one below is an ACPICA change and I'd prefer it to be integrated
via the upstream ACPICA.
Could you prepare an ACPICA pull request for just the bit below and
send it via GitHub?
> @@ -808,6 +808,7 @@ struct acpi_madt_multiproc_wakeup_mailbox {
> /* MADT Local APIC flags */
>
> #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */
> +#define ACPI_MADT_ONLINE_CAPABLE (2) /* 01: System HW supports enabling processor at runtime */
>
> /* MADT MPS INTI flags (inti_flags) */
>
> --
10 months, 2 weeks
Re: [PATCH] x86/acpi: Don't add CPUs that are not online capable
by Hanjun Guo
On 2021/8/12 13:16, Mario Limonciello wrote:
> A number of systems are showing "hotplug capable" CPUs when they
> are not really hotpluggable. This is because the MADT has extra
> CPU entries to support different CPUs that may be inserted into
> the socket with different numbers of cores.
>
> The ACPI spec is clear that the Online Capable bit in the
> MADT should be used to determine whether or not a CPU is hotplug
> capable when the enabled bit is not set.
This was introduced in ACPI 6.3 spec, which means ACPI 6.2 and
earlier versions don't include the "Online Capable bit".
>
> Link: https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/05_ACPI_Software_Programmin...
> Reviewed-by: Alex Deucher <alexander.deucher(a)amd.com>
> Reviewed-by: Huang Rui <ray.huang(a)amd.com>
> Signed-off-by: Mario Limonciello <mario.limonciello(a)amd.com>
> ---
> arch/x86/kernel/acpi/boot.c | 6 ++++++
> include/acpi/actbl2.h | 1 +
> 2 files changed, 7 insertions(+)
>
> diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
> index e55e0c1fad8c..eeb10b27d6de 100644
> --- a/arch/x86/kernel/acpi/boot.c
> +++ b/arch/x86/kernel/acpi/boot.c
> @@ -239,6 +239,12 @@ acpi_parse_lapic(union acpi_subtable_headers * header, const unsigned long end)
> if (processor->id == 0xff)
> return 0;
>
> + /* don't register processors that can not be onlined */
> + if (!(processor->lapic_flags & ACPI_MADT_ENABLED)) {
> + if (!(processor->lapic_flags & ACPI_MADT_ONLINE_CAPABLE))
> + return 0;
> + }
For firmware using ACPI 6.2 and early versions, the
ACPI_MADT_ONLINE_CAPABLE bit is reserved as zero, so if
we set CPU as disabled, the code here will always return
0 in those firmwares.
> +
> /*
> * We need to register disabled CPU as well to permit
> * counting disabled CPUs. This allows us to size
So we will not register the disabled CPU and will break
CPU hotplug features.
I think we need to consider the compatibility with old versions
of firmware.
Thanks
Hanjun
10 months, 3 weeks
[pm:bleeding-edge] BUILD SUCCESS 228706e6d423b9209b3f55f36cb34a95e7f1a153
by kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
branch HEAD: 228706e6d423b9209b3f55f36cb34a95e7f1a153 Merge branch 'pm-cpufreq' into bleeding-edge
elapsed time: 2139m
configs tested: 98
configs skipped: 4
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
arm defconfig
arm64 allyesconfig
arm64 defconfig
arm allyesconfig
arm allmodconfig
i386 randconfig-c001-20210804
arc haps_hs_smp_defconfig
arm pcm027_defconfig
arm lpc32xx_defconfig
sh sh2007_defconfig
mips nlm_xlp_defconfig
sh rsk7264_defconfig
arm imx_v6_v7_defconfig
ia64 generic_defconfig
powerpc wii_defconfig
mips bcm47xx_defconfig
sh migor_defconfig
m68k m5307c3_defconfig
powerpc fsp2_defconfig
arm footbridge_defconfig
arm spitz_defconfig
powerpc stx_gp3_defconfig
powerpc mpc834x_itxgp_defconfig
sh edosk7760_defconfig
arm tegra_defconfig
microblaze defconfig
ia64 allmodconfig
ia64 defconfig
ia64 allyesconfig
x86_64 allnoconfig
m68k allmodconfig
m68k defconfig
m68k allyesconfig
nios2 defconfig
arc allyesconfig
nds32 allnoconfig
nds32 defconfig
nios2 allyesconfig
csky defconfig
alpha defconfig
alpha allyesconfig
xtensa allyesconfig
h8300 allyesconfig
arc defconfig
sh allmodconfig
parisc defconfig
s390 allyesconfig
s390 allmodconfig
parisc allyesconfig
s390 defconfig
i386 allyesconfig
sparc allyesconfig
sparc defconfig
i386 defconfig
mips allyesconfig
mips allmodconfig
powerpc allyesconfig
powerpc allmodconfig
powerpc allnoconfig
i386 randconfig-a005-20210805
i386 randconfig-a004-20210805
i386 randconfig-a002-20210805
i386 randconfig-a006-20210805
i386 randconfig-a003-20210805
i386 randconfig-a001-20210805
x86_64 randconfig-a012-20210804
x86_64 randconfig-a016-20210804
x86_64 randconfig-a011-20210804
x86_64 randconfig-a013-20210804
x86_64 randconfig-a014-20210804
x86_64 randconfig-a015-20210804
i386 randconfig-a012-20210806
i386 randconfig-a011-20210806
i386 randconfig-a015-20210806
i386 randconfig-a013-20210806
i386 randconfig-a014-20210806
i386 randconfig-a016-20210806
riscv nommu_k210_defconfig
riscv allyesconfig
riscv nommu_virt_defconfig
riscv allnoconfig
riscv defconfig
riscv rv32_defconfig
riscv allmodconfig
um x86_64_defconfig
um i386_defconfig
x86_64 allyesconfig
x86_64 rhel-8.3-kselftests
x86_64 defconfig
x86_64 rhel-8.3
x86_64 kexec
clang tested configs:
x86_64 randconfig-c001-20210806
x86_64 randconfig-a002-20210804
x86_64 randconfig-a006-20210804
x86_64 randconfig-a004-20210804
x86_64 randconfig-a003-20210804
x86_64 randconfig-a001-20210804
x86_64 randconfig-a005-20210804
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
10 months, 3 weeks
[pm:bleeding-edge] BUILD SUCCESS b68b2e316d76f86c4bf16e64e18a067cc4a7e773
by kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
branch HEAD: b68b2e316d76f86c4bf16e64e18a067cc4a7e773 Merge branch 'acpi-processor' into bleeding-edge
elapsed time: 726m
configs tested: 91
configs skipped: 3
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
arm defconfig
arm64 allyesconfig
arm64 defconfig
arm allyesconfig
arm allmodconfig
i386 randconfig-c001-20210805
powerpc ppc64_defconfig
arm magician_defconfig
riscv nommu_k210_sdcard_defconfig
xtensa defconfig
mips sb1250_swarm_defconfig
arm corgi_defconfig
sh rsk7269_defconfig
powerpc adder875_defconfig
sh sh7757lcr_defconfig
arm pxa_defconfig
mips loongson2k_defconfig
parisc alldefconfig
mips loongson1b_defconfig
ia64 allmodconfig
ia64 defconfig
ia64 allyesconfig
x86_64 allnoconfig
m68k allmodconfig
m68k defconfig
m68k allyesconfig
nds32 defconfig
nios2 allyesconfig
csky defconfig
alpha defconfig
alpha allyesconfig
xtensa allyesconfig
h8300 allyesconfig
arc defconfig
sh allmodconfig
parisc defconfig
s390 allyesconfig
s390 allmodconfig
parisc allyesconfig
s390 defconfig
i386 allyesconfig
sparc allyesconfig
sparc defconfig
i386 defconfig
nios2 defconfig
arc allyesconfig
nds32 allnoconfig
mips allyesconfig
mips allmodconfig
powerpc allyesconfig
powerpc allmodconfig
powerpc allnoconfig
x86_64 randconfig-a002-20210805
x86_64 randconfig-a006-20210805
x86_64 randconfig-a004-20210805
x86_64 randconfig-a003-20210805
x86_64 randconfig-a001-20210805
x86_64 randconfig-a005-20210805
i386 randconfig-a005-20210804
i386 randconfig-a004-20210804
i386 randconfig-a002-20210804
i386 randconfig-a006-20210804
i386 randconfig-a003-20210804
i386 randconfig-a001-20210804
i386 randconfig-a012-20210804
i386 randconfig-a011-20210804
i386 randconfig-a015-20210804
i386 randconfig-a013-20210804
i386 randconfig-a014-20210804
i386 randconfig-a016-20210804
riscv nommu_k210_defconfig
riscv allyesconfig
riscv nommu_virt_defconfig
riscv allnoconfig
riscv defconfig
riscv rv32_defconfig
riscv allmodconfig
um x86_64_defconfig
um i386_defconfig
x86_64 allyesconfig
x86_64 rhel-8.3-kselftests
x86_64 defconfig
x86_64 rhel-8.3
x86_64 kexec
clang tested configs:
x86_64 randconfig-c001-20210804
x86_64 randconfig-a012-20210805
x86_64 randconfig-a016-20210805
x86_64 randconfig-a011-20210805
x86_64 randconfig-a013-20210805
x86_64 randconfig-a014-20210805
x86_64 randconfig-a015-20210805
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
11 months
[pm:bleeding-edge] BUILD SUCCESS 1c016eb02e4517ee1a985e4db117f2a6764d0f01
by kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
branch HEAD: 1c016eb02e4517ee1a985e4db117f2a6764d0f01 Merge branch 'acpica' into bleeding-edge
elapsed time: 808m
configs tested: 87
configs skipped: 3
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
arm defconfig
arm64 allyesconfig
arm64 defconfig
arm allyesconfig
arm allmodconfig
powerpc tqm5200_defconfig
powerpc mpc832x_mds_defconfig
mips qi_lb60_defconfig
arm u8500_defconfig
arm am200epdkit_defconfig
mips nlm_xlr_defconfig
ia64 generic_defconfig
powerpc acadia_defconfig
arm multi_v5_defconfig
arm mps2_defconfig
arc axs103_defconfig
ia64 allmodconfig
ia64 defconfig
ia64 allyesconfig
x86_64 allnoconfig
m68k allmodconfig
m68k defconfig
m68k allyesconfig
nios2 defconfig
arc allyesconfig
nds32 allnoconfig
nds32 defconfig
nios2 allyesconfig
csky defconfig
alpha defconfig
alpha allyesconfig
xtensa allyesconfig
h8300 allyesconfig
arc defconfig
sh allmodconfig
parisc defconfig
s390 allyesconfig
s390 allmodconfig
parisc allyesconfig
s390 defconfig
i386 allyesconfig
sparc allyesconfig
sparc defconfig
i386 defconfig
mips allyesconfig
mips allmodconfig
powerpc allyesconfig
powerpc allmodconfig
powerpc allnoconfig
i386 randconfig-a004-20210803
i386 randconfig-a005-20210803
i386 randconfig-a002-20210803
i386 randconfig-a006-20210803
i386 randconfig-a001-20210803
i386 randconfig-a003-20210803
i386 randconfig-a012-20210803
i386 randconfig-a011-20210803
i386 randconfig-a015-20210803
i386 randconfig-a013-20210803
i386 randconfig-a014-20210803
i386 randconfig-a016-20210803
x86_64 randconfig-a002-20210803
x86_64 randconfig-a004-20210803
x86_64 randconfig-a006-20210803
x86_64 randconfig-a003-20210803
x86_64 randconfig-a001-20210803
x86_64 randconfig-a005-20210803
riscv nommu_k210_defconfig
riscv allyesconfig
riscv nommu_virt_defconfig
riscv allnoconfig
riscv defconfig
riscv rv32_defconfig
riscv allmodconfig
um x86_64_defconfig
um i386_defconfig
x86_64 allyesconfig
x86_64 rhel-8.3-kselftests
x86_64 defconfig
x86_64 rhel-8.3
x86_64 kexec
clang tested configs:
x86_64 randconfig-a012-20210803
x86_64 randconfig-a016-20210803
x86_64 randconfig-a013-20210803
x86_64 randconfig-a011-20210803
x86_64 randconfig-a014-20210803
x86_64 randconfig-a015-20210803
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
11 months