Re: [PATCH] acpi, spcr: Make SPCR available to x86
On 02/12/2018 10:44 AM, Peter Zijlstra wrote: > On Mon, Feb 12, 2018 at 10:18:06AM -0500, Prarit Bhargava wrote: >>> But when I specify "earlyprintk=serial,ttyS0,115200" this SPCR crud will >>> not interfere? >>> >> >> I tested "earlyprintk=serial,ttyS0,115200" on a system which is known to >> have a >> functional console with "console=ttyS0,1152008N1" both with and without >> CONFIG_ACPI_SPCR_TABLE enabled. > > OK, but my point was that SPCR will never override explicit earlyprintk > stuff. There is absolutely nothing worse than breaking working setups. > Oh, I see. SPCR will not override earlyprintk config. P. -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] acpi, spcr: Make SPCR available to x86
On Mon, Feb 12, 2018 at 10:18:06AM -0500, Prarit Bhargava wrote: > > But when I specify "earlyprintk=serial,ttyS0,115200" this SPCR crud will > > not interfere? > > > > I tested "earlyprintk=serial,ttyS0,115200" on a system which is known to have > a > functional console with "console=ttyS0,1152008N1" both with and without > CONFIG_ACPI_SPCR_TABLE enabled. OK, but my point was that SPCR will never override explicit earlyprintk stuff. There is absolutely nothing worse than breaking working setups. -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] acpi, spcr: Make SPCR available to x86
On 02/12/2018 09:56 AM, Peter Zijlstra wrote: > On Mon, Feb 12, 2018 at 08:47:57AM -0500, Prarit Bhargava wrote: >> >> >> On 02/12/2018 08:34 AM, Peter Zijlstra wrote: >>> On Thu, Jan 18, 2018 at 10:09:51AM -0500, Prarit Bhargava wrote: config ACPI_SPCR_TABLE + bool "ACPI Serial Port Console Redirection Support" + default y if X86 + help +Enable support for Serial Port Console Redirection (SPCR) Table. +This table provides information about the configuration of the +earlycon console. >>> >>> I just got asked this by oldconfig, which left me rather puzzled, WTF >>> does this do? >> >> Odd -- I thought I had taken care of that :( My apologies Peter. >> >> ACPI SPCR is used by a vendor to define the serial console for a system. If >> SPCR exists a user can add kernel parameter "earlycon" (no extra kernel >> parameters) and the console will work out-of-the-box. >> >> The serial console configuration varies from vendor to vendor. This takes >> the >> guess-work out of defining a serial console. > > But when I specify "earlyprintk=serial,ttyS0,115200" this SPCR crud will > not interfere? > I tested "earlyprintk=serial,ttyS0,115200" on a system which is known to have a functional console with "console=ttyS0,1152008N1" both with and without CONFIG_ACPI_SPCR_TABLE enabled. I do not see any significant difference in output. diff of boot logs: --- earlyprintk_no_spcr_enable 2018-02-12 10:11:00.477288423 -0500 +++ earlyprintk_spcr_enable 2018-02-12 10:16:02.282574797 -0500 @@ -1,5 +1,5 @@ microcode: microcode updated early to revision 0x235, date = 2017-10-17 -Linux version 4.15.0+ (r...@intel-purley-lr-02.khw.lab.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)) #5 SMP Mon Feb 12 10:06:08 EST 2018 +Linux version 4.15.0+ (r...@intel-purley-lr-02.khw.lab.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)) #6 SMP Mon Feb 12 10:11:42 EST 2018 Command line: BOOT_IMAGE=/vmlinuz-4.15.0+ root=/dev/mapper/rhel_intel--purley--lr--02-root ro crashkernel=auto rd.lvm.lv=rhel_intel-purley-lr-02/root rd.lvm.lv=rhel_intel-purley-lr-02/swap earlyprintk=serial,ttyS0,115200 LANG=en_US.UTF-8 x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers' x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers' @@ -205,7 +205,7 @@ e820: last_pfn = 0x6f800 max_arch_pfn = 0x4 Using GB pages for direct mapping Secure boot disabled -RAMDISK: [mem 0x3a563000-0x3bba2fff] +RAMDISK: [mem 0x3a5da000-0x3bba2fff] ACPI: Early table checksum verification disabled ACPI: RSDP 0x6922A014 24 (v02 INTEL ) ACPI: XSDT 0x690DD188 000114 (v01 INTEL EDK2 0113) @@ -519,6 +519,8 @@ ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) Using ACPI (MADT) for SMP configuration information ACPI: HPET id: 0x8086a701 base: 0xfed0 +ACPI: SPCR: SPCR table version 1 +ACPI: SPCR: console: uart,io,0x3f8,115200 smpboot: Allowing 432 CPUs, 224 hotplug CPUs PM: Registered nosave memory: [mem 0x-0x0fff] PM: Registered nosave memory: [mem 0x000a-0x000f] @@ -555,10 +557,10 @@ log_buf_len total cpu_extra contributions: 1765376 bytes log_buf_len min size: 524288 bytes log_buf_len: 4194304 bytes -early log buf free: 477984(91%) -Memory: 394593504K/401282564K available (10252K kernel code, 2147K rwdata, 3664K rodata, 2504K init, 1800K bss, 6689060K reserved, 0K cma-reserved) +early log buf free: 477876(91%) +Memory: 394593976K/401282564K available (10252K kernel code, 2147K rwdata, 3664K rodata, 2504K init, 1800K bss, 6688588K reserved, 0K cma-reserved) Kernel/User page tables isolation: enabled -ftrace: allocating 35205 entries in 138 pages +ftrace: allocating 35206 entries in 138 pages Hierarchical RCU implementation. RCU restricting CPUs from NR_CPUS=8192 to nr_cpu_ids=432. Tasks RCU enabled. P. -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] acpi, spcr: Make SPCR available to x86
On 2/12/18 8:49 AM, Prarit Bhargava wrote: That's true on ARM64. I specifically did not enable the console by default on x86. There are users who do not want a console active during boot & runtime. H... That's a good point. On ARM systems with SPCR, you get a console whether you like it or not. -- Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project. -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] acpi, spcr: Make SPCR available to x86
On Mon, Feb 12, 2018 at 08:47:57AM -0500, Prarit Bhargava wrote: > > > On 02/12/2018 08:34 AM, Peter Zijlstra wrote: > > On Thu, Jan 18, 2018 at 10:09:51AM -0500, Prarit Bhargava wrote: > >> config ACPI_SPCR_TABLE > >> + bool "ACPI Serial Port Console Redirection Support" > >> + default y if X86 > >> + help > >> +Enable support for Serial Port Console Redirection (SPCR) Table. > >> +This table provides information about the configuration of the > >> +earlycon console. > > > > I just got asked this by oldconfig, which left me rather puzzled, WTF > > does this do? > > Odd -- I thought I had taken care of that :( My apologies Peter. > > ACPI SPCR is used by a vendor to define the serial console for a system. If > SPCR exists a user can add kernel parameter "earlycon" (no extra kernel > parameters) and the console will work out-of-the-box. > > The serial console configuration varies from vendor to vendor. This takes the > guess-work out of defining a serial console. But when I specify "earlyprintk=serial,ttyS0,115200" this SPCR crud will not interfere? -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] acpi, spcr: Make SPCR available to x86
On 02/12/2018 09:43 AM, Timur Tabi wrote: > On 2/12/18 7:47 AM, Prarit Bhargava wrote: >> ACPI SPCR is used by a vendor to define the serial console for a system. If >> SPCR exists a user can add kernel parameter "earlycon" (no extra kernel >> parameters) and the console will work out-of-the-box. > > "earlycon" is needed only for an *early* console. You don't need any command > line parameters for a normal console to work with SPCR. That's true on ARM64. I specifically did not enable the console by default on x86. There are users who do not want a console active during boot & runtime. P. > -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] acpi, spcr: Make SPCR available to x86
On 2/12/18 7:47 AM, Prarit Bhargava wrote: ACPI SPCR is used by a vendor to define the serial console for a system. If SPCR exists a user can add kernel parameter "earlycon" (no extra kernel parameters) and the console will work out-of-the-box. "earlycon" is needed only for an *early* console. You don't need any command line parameters for a normal console to work with SPCR. -- Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project. -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] acpi, spcr: Make SPCR available to x86
On 02/12/2018 08:34 AM, Peter Zijlstra wrote: > On Thu, Jan 18, 2018 at 10:09:51AM -0500, Prarit Bhargava wrote: >> config ACPI_SPCR_TABLE >> +bool "ACPI Serial Port Console Redirection Support" >> +default y if X86 >> +help >> + Enable support for Serial Port Console Redirection (SPCR) Table. >> + This table provides information about the configuration of the >> + earlycon console. > > I just got asked this by oldconfig, which left me rather puzzled, WTF > does this do? Odd -- I thought I had taken care of that :( My apologies Peter. ACPI SPCR is used by a vendor to define the serial console for a system. If SPCR exists a user can add kernel parameter "earlycon" (no extra kernel parameters) and the console will work out-of-the-box. The serial console configuration varies from vendor to vendor. This takes the guess-work out of defining a serial console. P. > -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] acpi, spcr: Make SPCR available to x86
On Thu, Jan 18, 2018 at 10:09:51AM -0500, Prarit Bhargava wrote: > config ACPI_SPCR_TABLE > + bool "ACPI Serial Port Console Redirection Support" > + default y if X86 > + help > + Enable support for Serial Port Console Redirection (SPCR) Table. > + This table provides information about the configuration of the > + earlycon console. I just got asked this by oldconfig, which left me rather puzzled, WTF does this do? -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] acpi, spcr: Make SPCR available to x86
On 01/22/2018 04:49 PM, Timur Tabi wrote: > On 01/18/2018 09:09 AM, Prarit Bhargava wrote: >> if (acpi_disabled) { >> -if (earlycon_init_is_deferred) >> +if (earlycon_acpi_spcr_enable) > > This patch works for me, so I can ACK it, but first you might want to rename > earlycon_acpi_spcr_enable, because these two lines don't make much sense. > > "If ACPI is disabled, and ACPI SCPR is enabled, then " > > If ACPI is disabled, then how can a variable called > "earlycon_acpi_spcr_enable" > be true? > > Would it make more sense to rename it to earlycon_spcr_enable? > acpi_disabled is a global runtime flag that can be set via "acpi=off" on the command line. It does not disable the tables, only the reading and interpreting of the data in the tables. P. -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] acpi, spcr: Make SPCR available to x86
* Prarit Bhargavawrote: > Note on testing: I've tested this on several ARM64 and x86 boxes (only > earlycon, console=ttyS0,115200, and with both options), verified that > functionality on ARM64 has not changed (ie, CONFIG_ACPI_SPCR_TABLE is > always =y), and verified functionality when !CONFIG_ACPI_SPCR_TABLE on > x86. > > P. > > 8< > > SPCR is currently only enabled or ARM64 and x86 can use SPCR to setup an > early console. > > General fixes include updating Documentation & Kconfig (for x86), updating > comments, and changing parse_spcr() to acpi_parse_spcr(), and > earlycon_init_is_deferred to earlycon_acpi_spcr_enable to be more > descriptive. > > On x86, many systems have a valid SPCR table but the table version is not > 2 so the table version check must be a warning. > > On ARM64 when the kernel parameter earlycon is used both the early console > and console are enabled. On x86, only the earlycon should be enabled by > by default. Modify acpi_parse_spcr() to allow options for initializing > the early console and console separately. > > Signed-off-by: Prarit Bhargava > Cc: linux-a...@vger.kernel.org > Cc: linux-doc@vger.kernel.org > Cc: linux-arm-ker...@lists.infradead.org > Cc: linux...@vger.kernel.org > Cc: linux-ser...@vger.kernel.org > Cc: Bhupesh Sharma > Cc: Lv Zheng > Cc: Thomas Gleixner > Cc: Ingo Molnar > Cc: "H. Peter Anvin" > Cc: x...@kernel.org > Cc: Jonathan Corbet > Cc: Catalin Marinas > Cc: Will Deacon > Cc: "Rafael J. Wysocki" m...@rjwysocki.net> > Cc: Timur Tabi > Cc: graeme.greg...@linaro.org > Cc: mark.sal...@redhat.com > --- > Documentation/admin-guide/kernel-parameters.txt | 9 +--- > arch/arm64/kernel/acpi.c| 4 ++-- > arch/x86/kernel/acpi/boot.c | 3 +++ > drivers/acpi/Kconfig| 7 +- > drivers/acpi/spcr.c | 29 > + > drivers/tty/serial/earlycon.c | 15 + > include/linux/acpi.h| 7 -- > include/linux/serial_core.h | 4 ++-- > 8 files changed, 44 insertions(+), 34 deletions(-) I'm fine with the x86 aspect of this: Acked-by: Ingo Molnar > earlycon= [KNL] Output early console device and options. > > - When used with no options, the early console is > - determined by the stdout-path property in device > - tree's chosen node. > + [ARM64] The early console is determined by the > + stdout-path property in device tree's chosen node, > + or determined by the ACPI SPCR table. s/in device tree's chosen node /in the device tree's chosen node Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] acpi, spcr: Make SPCR available to x86
Note on testing: I've tested this on several ARM64 and x86 boxes (only earlycon, console=ttyS0,115200, and with both options), verified that functionality on ARM64 has not changed (ie, CONFIG_ACPI_SPCR_TABLE is always =y), and verified functionality when !CONFIG_ACPI_SPCR_TABLE on x86. P. 8< SPCR is currently only enabled or ARM64 and x86 can use SPCR to setup an early console. General fixes include updating Documentation & Kconfig (for x86), updating comments, and changing parse_spcr() to acpi_parse_spcr(), and earlycon_init_is_deferred to earlycon_acpi_spcr_enable to be more descriptive. On x86, many systems have a valid SPCR table but the table version is not 2 so the table version check must be a warning. On ARM64 when the kernel parameter earlycon is used both the early console and console are enabled. On x86, only the earlycon should be enabled by by default. Modify acpi_parse_spcr() to allow options for initializing the early console and console separately. Signed-off-by: Prarit BhargavaCc: linux-a...@vger.kernel.org Cc: linux-doc@vger.kernel.org Cc: linux-arm-ker...@lists.infradead.org Cc: linux...@vger.kernel.org Cc: linux-ser...@vger.kernel.org Cc: Bhupesh Sharma Cc: Lv Zheng Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: x...@kernel.org Cc: Jonathan Corbet Cc: Catalin Marinas Cc: Will Deacon Cc: "Rafael J. Wysocki" m...@rjwysocki.net> Cc: Timur Tabi Cc: graeme.greg...@linaro.org Cc: mark.sal...@redhat.com --- Documentation/admin-guide/kernel-parameters.txt | 9 +--- arch/arm64/kernel/acpi.c| 4 ++-- arch/x86/kernel/acpi/boot.c | 3 +++ drivers/acpi/Kconfig| 7 +- drivers/acpi/spcr.c | 29 + drivers/tty/serial/earlycon.c | 15 + include/linux/acpi.h| 7 -- include/linux/serial_core.h | 4 ++-- 8 files changed, 44 insertions(+), 34 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 46b26bfee27b..6f519230ed34 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -915,9 +915,12 @@ earlycon= [KNL] Output early console device and options. - When used with no options, the early console is - determined by the stdout-path property in device - tree's chosen node. + [ARM64] The early console is determined by the + stdout-path property in device tree's chosen node, + or determined by the ACPI SPCR table. + + [X86] When used with no options the early console is + determined by the ACPI SPCR table. cdns,[,options] Start an early, polled-mode console on a Cadence diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c index b3162715ed78..2aa5609def27 100644 --- a/arch/arm64/kernel/acpi.c +++ b/arch/arm64/kernel/acpi.c @@ -230,10 +230,10 @@ void __init acpi_boot_table_init(void) done: if (acpi_disabled) { - if (earlycon_init_is_deferred) + if (earlycon_acpi_spcr_enable) early_init_dt_scan_chosen_stdout(); } else { - parse_spcr(earlycon_init_is_deferred); + acpi_parse_spcr(earlycon_acpi_spcr_enable, true); if (IS_ENABLED(CONFIG_ACPI_BGRT)) acpi_table_parse(ACPI_SIG_BGRT, acpi_parse_bgrt); } diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index f4c463df8b08..0bf6a58f7a6d 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -1626,6 +1627,8 @@ int __init acpi_boot_init(void) if (!acpi_noirq) x86_init.pci.init = pci_acpi_init; + /* Do not enable ACPI SPCR console by default */ + acpi_parse_spcr(earlycon_acpi_spcr_enable, false); return 0; } diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index 46505396869e..ddcb5f40e8ee 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -79,7 +79,12 @@ config ACPI_DEBUGGER_USER endif config ACPI_SPCR_TABLE - bool + bool "ACPI Serial Port Console Redirection Support" + default y if X86 + help + Enable support for Serial Port Console Redirection (SPCR) Table. + This table provides information about the configuration of the + earlycon console. config