From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark Salter Subject: Re: [PATCH v7 0/5] ACPI: parse the SPCR table Date: Tue, 05 Apr 2016 12:27:07 -0400 Message-ID: <1459873627.10130.21.camel@redhat.com> References: <1459431629-27934-1-git-send-email-aleksey.makarov@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-Reply-To: <1459431629-27934-1-git-send-email-aleksey.makarov@linaro.org> Sender: linux-kernel-owner@vger.kernel.org To: Aleksey Makarov , Russell King , Greg Kroah-Hartman Cc: "Zheng, Lv" , Peter Hurley , Graeme Gregory , Andy Shevchenko , "Rafael J . Wysocki" , linux-kernel@vger.kernel.org, Leif Lindholm , linux-acpi@vger.kernel.org, Yury Norov , Christopher Covington , linux-serial@vger.kernel.org, Al Stone , linux-arm-kernel@lists.infradead.org, Len Brown List-Id: linux-serial@vger.kernel.org Could you CC me on future postings of this series, please? So v3 fixed a problem where platforms using 8250 didn't work. Then in v5, that fix was lost so 8250 no longer works. --Mark On Thu, 2016-03-31 at 16:40 +0300, Aleksey Makarov wrote: > 'ARM Server Base Boot Requirements' [1] mentions SPCR (Serial Port > Console Redirection Table) [2] as a mandatory ACPI table that > specifies the configuration of serial console. >=20 > Move "earlycon" early_param handling to earlycon.c to parse this opti= on once >=20 > *** PATCH=C2=A0=C2=A0"ACPICA: Headers: Add new constants for the DBG2= ACPI table" > *** IS JUST TO ENABLE BUILDING THE PATCHSET ON linux-next >=20 > Patch "ACPICA: Headers: Add new constants for the DBG2 ACPI table" is= required > for the next patch.=C2=A0=C2=A0It is taken from ACPICA series [3], bu= t it has not appeared > in linux-next yet. >=20 > Parse SPCR table, setup earlycon and add register specified console. >=20 > Enable parsing this table on ARM64.=C2=A0=C2=A0Earlycon should be set= up > as early as possible.=C2=A0=C2=A0ACPI boot tables are mapped in > arch/arm64/kernel/acpi.c:acpi_boot_table_init() called from setup_arc= h() > and that's where we parse spcr.=C2=A0=C2=A0So it has to be opted-in p= er-arch. >=20 > Implement console_match() for pl011. >=20 > Based on the work by Leif Lindholm [4] > Thanks to Peter Hurley for explaining how this should work. >=20 > Should be applied to next-20160331. >=20 > Tested on QEMU.=C2=A0=C2=A0SPCR support is included in QEMU's ARM mac= h-virt > since 2.4 release. >=20 > v7: > - add Acked-by: Rob Herring for "of/serial: move earlycon early_param= handling > =C2=A0 to serial" > - call DT earlycon initialization from the arch ACPI code, not from p= arse_spcr() > =C2=A0 (Rafael J. Wysocki) > - fix a few minor issues (Rafael J. Wysocki) >=20 > v6: > https://lkml.kernel.org/g/1458823925-19560-1-git-send-email-aleksey.m= akarov@linaro.org > - add documentation for parse_spcr() functioin (Yury Norov) > - don't initialize err variable (Yury Norov) > - add __initdata for the earlycon_init_is_deferred flag variable > - rename the function exported in "of/serial: move earlycon early_par= am handling > =C2=A0 to serial" to avoid clash with the function from arch/microbla= ze/kernel/prom.c > - defer initialization of DT earlycon until DT/ACPI decision is made > =C2=A0 (Rob Herring, Peter Hurley) > - use snprintf instead of sprintf (Andy Shevchenko) > - drop patch that adds EARLYCON_DECLARE for pl011 as EARLYCON_DECLARE= is > =C2=A0 equivalent to OF_EARLYCON_DECLARE for 4.6+ (Peter Hurley).=C2=A0= =C2=A0This means that > =C2=A0 SPCR earlycon will not work on the kernels before 4.6 >=20 > v5: > https://lkml.kernel.org/g/1458643595-14719-1-git-send-email-aleksey.m= akarov@linaro.org > - drop patch "serial: pl011: use ACPI SPCR to setup 32-bit access" be= cause > =C2=A0 it is ugly. Also because Christopher Covington came with a bet= ter solution [5] > - remove error message when the table is not provided by ACPI (Andy S= hevchenko) > - rewrite spcr.c following the suggestions by Peter Hurley > - add console_match() for pl011 in a separate patch > - add EARLYCON_DECLARE for pl011 in a separate patch > - add patch "of/serial: move earlycon early_param handling to serial"= from > =C2=A0 the GDB2 series >=20 > v4: > https://lkml.kernel.org/g/1456747355-15692-1-git-send-email-aleksey.m= akarov@linaro.org > - drop patch "ACPI: change __init to __ref for early_acpi_os_unmap_me= mory()" > =C2=A0 ACPI developers work on a new API and asked not to do that. > =C2=A0 Instead, use acpi_get_table_with_size()/early_acpi_os_unmap_me= mory() once > =C2=A0 and cache the result. (Lv Zheng) > - fix some style issues (Yury Norov) >=20 > v3: > https://lkml.kernel.org/g/1455559532-8305-1-git-send-email-aleksey.ma= karov@linaro.org >=20 > Greg Kroah-Hartman did not like v2 so I have rewritten this patchset: >=20 > - drop acpi_match() member of struct console > - drop implementations of this member for pl011 and 8250 > - drop the patch that renames some vars in printk.c as it is not need= ed anymore > - drop patch that introduces system wide acpi_table_parse2(). > =C2=A0 Instead introduce a custom acpi_table_parse_spcr() in spcr.c >=20 > Instead of introducing a new match_acpi() member of struct console, > this patchset introduces a new function acpi_console_check(). > This function is called when a new uart is registered at serial_core.= c > the same way OF code checks for console.=C2=A0=C2=A0If the registered= uart is the > console specified by SPCR table, this function calls add_preferred_co= nsole() >=20 > The restrictions of this approach are: >=20 > - only serial consoles can be set up > - only consoles specified by the memory/io address can be set up > =C2=A0 (SPCR can specify devices by PCI id/PCI address) >=20 > v2: > https://lkml.kernel.org/g/1455299022-11641-1-git-send-email-aleksey.m= akarov@linaro.org > - don't use SPCR if user specified console in command line > - fix initialization order of newcon->index =3D 0 > - rename some variables at printk.c (Joe Perches, Peter Hurley) > - enable ACPI_SPCR_TABLE in a separate patch (Andy Shevchenko) > - remove the retry loop for console registering (Peter Hurley). > =C2=A0 Instead, obtain SPCR with acpi_get_table().=C2=A0=C2=A0That wo= rks after > =C2=A0 call to acpi_early_init() i. e. in any *_initcall() > - describe design decision behind introducing acpi_match() (Peter Hur= ley) > - fix compilation for x86 + ACPI (Graeme Gregory) > - introduce DBG2 constants in a separate patch (Andy Shevchenko) > - fix a typo in DBG2 constants (Andy Shevchenko) > - add ACPI_DBG2_ARM_SBSA_32BIT constant (Christopher Covington) > - add support for ACPI_DBG2_ARM_SBSA_* consoles (Christopher Covingto= n) > - add documentation for functions > - add a patch that uses SPCR to find if SBSA serial driver should use= 32-bit > =C2=A0 accessor functions (Christopher Covington) > - change __init to __ref for early_acpi_os_unmap_memory() in a separa= te patch > - introduce acpi_table_parse2() in a separate patch > - fix fetching the SPCR table early (Mark Salter) > - add a patch from Mark Salter that introduces support for matching 8= 250-based > =C2=A0 consoles >=20 > v1: > https://lkml.kernel.org/g/1453722324-22407-1-git-send-email-aleksey.m= akarov@linaro.org >=20 > [1] http://infocenter.arm.com/help/index.jsp?topic=3D/com.arm.doc.den= 0044a/index.html > [2] https://msdn.microsoft.com/en-us/library/windows/hardware/dn63913= 2(v=3Dvs.85).aspx > [3] https://lkml.kernel.org/g/cover.1458714002.git.lv.zheng@intel.com > [4] https://lkml.kernel.org/g/1441716217-23786-1-git-send-email-leif.= lindholm@linaro.org > [5] https://lkml.kernel.org/g/1457415800-8799-1-git-send-email-cov@co= deaurora.org >=20 > Aleksey Makarov (4): > =C2=A0 ACPICA: Headers: Add new constants for the DBG2 ACPI table > =C2=A0 ACPI: parse SPCR and enable matching console > =C2=A0 ARM64: ACPI: enable ACPI_SPCR_TABLE > =C2=A0 serial: pl011: add console matching function >=20 > Leif Lindholm (1): > =C2=A0 of/serial: move earlycon early_param handling to serial >=20 > =C2=A0arch/arm64/Kconfig=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0=C2=A0=C2=A01 + > =C2=A0arch/arm64/kernel/acpi.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0|=C2=A0=C2=A011 +++- > =C2=A0drivers/acpi/Kconfig=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0=C2=A0=C2=A03 ++ > =C2=A0drivers/acpi/Makefile=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0=C2=A0=C2=A01 + > =C2=A0drivers/acpi/spcr.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0| 111 ++++++++++++++++++++++++++++++++= ++++++++ > =C2=A0drivers/of/fdt.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0=C2=A011 +--- > =C2=A0drivers/tty/serial/amba-pl011.c |=C2=A0=C2=A056 +++++++++++++++= +++++ > =C2=A0drivers/tty/serial/earlycon.c=C2=A0=C2=A0=C2=A0|=C2=A0=C2=A019 = ++++++- > =C2=A0include/acpi/actbl2.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0=C2=A0=C2=A07 ++- > =C2=A0include/linux/acpi.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0=C2=A0=C2=A06 +++ > =C2=A0include/linux/of_fdt.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0|=C2=A0=C2=A0=C2=A02 + > =C2=A0include/linux/serial_core.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0= =C2=A0=C2=A06 +++ > =C2=A012 files changed, 220 insertions(+), 14 deletions(-) > =C2=A0create mode 100644 drivers/acpi/spcr.c >=20