tty: pl011: fix earlycon work-around for QDF2400 erratum 44

Bug #1689818 reported by Manoj Iyer
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Fix Released
High
Manoj Iyer
Nominated for Zesty by Thadeu Lima de Souza Cascardo

Bug Description

[Impact]
The work-around for the Qualcomm Datacenter Technologies QDF2400 erratum 44 sets the qdf2400_e44_present" global variable if the work-around is needed. However, this check does not happen until after earlycon is initialized, which means the work-around is not used, and the console hangs as soon as it displays one character.

[Test Case]
Enable earlycon and boot the kernel. Please see comments below for detailed test results on QDF2400 system.

[Regression Potential]
This impacts only Qualcomm Datacenter Technologies QDF2400 platforms.

[Fix]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e53e597fd4c4a0b6ae58e57d76a240927fd17eaa

https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git/commit/?h=tty-testing&id=5a0722b898f851b9ef108ea7babc529e4efc773d

CVE References

Revision history for this message
Brad Figg (brad-figg) wrote : Missing required logs.

This bug is missing log files that will aid in diagnosing the problem. From a terminal window please run:

apport-collect 1689818

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: New → Incomplete
Revision history for this message
Manoj Iyer (manjo) wrote : Re: What is the command to enable earlycon?

On Wed, May 10, 2017 at 8:42 AM, Timur Tabi <email address hidden>
wrote:
> You need these patches:
>
> tty: pl011: Work around QDF2400 E44 stuck BUSY bit (4.10)
> tty: acpi/spcr: QDF2400 E44 checks for wrong OEM revision (4.11)
> tty: pl011: fix earlycon work-around for QDF2400 erratum 44 (4.11)

These are in linus's tree or linux-next
>
> tty: pl011: use "qdf2400_e44" as the earlycon name for QDF2400 E44
> (4.12)

But this one is not in linux-next yet.

> and then it's one of these two:
>
> earlycon=qdf2400_e44,0xff78ed1000 (UART)
> earlycon=qdf2400_e44,0xff78ef1000 (SOL)
>
> Or you can just do "earlycon" without anything after that, but that
> triggers after the ACPI tables have been parsed.
>
> From: Manoj Iyer <email address hidden>
> Date: Wednesday, May 10, 2017 at 8:30 AM
> To: Timur Tabi <email address hidden>
> Subject: What is the command to enable earlycon?
>
> Timur,
>
> What is the kernel parameter to enable earlycon? I know it changed
> for AW and we have never used it . I need it to test
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1689818
>
> Thanks
> Manoj Iyer

Manoj Iyer (manjo)
tags: added: qdf2400
Revision history for this message
Manoj Iyer (manjo) wrote :

On Wed, May 10, 2017 at 9:15 AM, Timur Tabi <email address hidden>
wrote:
> You need all four patches. The last one is in the tty-next tree:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git/commit/?h=tty-next&id=5a0722b898f851b9ef108ea7babc529e4efc773d

Thanks will cherry pick from there.

>
> From: Manoj Iyer <email address hidden>
> Date: Wednesday, May 10, 2017 at 9:02 AM
> To: Timur Tabi <email address hidden>
> Cc: Manoj Iyer <email address hidden>
> Subject: Re: What is the command to enable earlycon?
>
>
>
> On Wed, May 10, 2017 at 8:42 AM, Timur Tabi <email address hidden>
> wrote:
>> You need these patches:
>>
>> tty: pl011: Work around QDF2400 E44 stuck BUSY bit (4.10)
>> tty: acpi/spcr: QDF2400 E44 checks for wrong OEM revision (4.11)
>> tty: pl011: fix earlycon work-around for QDF2400 erratum 44 (4.11)
>
> These are in linus's tree or linux-next
>> tty: pl011: use "qdf2400_e44" as the earlycon name for QDF2400
>> E44 (4.12)
>
> But this one is not in linux-next yet.
>
>> and then it's one of these two:
>>
>> earlycon=qdf2400_e44,0xff78ed1000 (UART)
>> earlycon=qdf2400_e44,0xff78ef1000 (SOL)
>>
>> Or you can just do "earlycon" without anything after that, but that
>> triggers after the ACPI tables have been parsed.
>>
>> From: Manoj Iyer <email address hidden>
>> Date: Wednesday, May 10, 2017 at 8:30 AM
>> To: Timur Tabi <email address hidden>
>> Subject: What is the command to enable earlycon?
>>
>> Timur,
>>
>> What is the kernel parameter to enable earlycon? I know it changed
>> for AW and we have never used it . I need it to test
>> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1689818
>>
>> Thanks
>> Manoj Iyer

Revision history for this message
Manoj Iyer (manjo) wrote :
Download full text (19.3 KiB)

Tested on QDF2400 system. The console used here is an SOL connection to the server.

== With earlycon=qdf2400_e44,0xff78ef1000 (SOL) ==

Loading Linux 4.10.0-20-generic ...
Loading initial ramdisk ...
EFI stub: Booting Linux Kernel...
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services and installing virtual address map...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.10.0-20-generic (manjo@tangerine) (gcc version 5.3.1 20160413 (Ubuntu/Linaro 5.3.1-14ubuntu2) ) #22~lp1689818+sru3.4 SMP Wed May 10 19:28:25 UTC 2017 (Ubuntu 4.10.0-20.22~lp1689818+sru3.4-generic 4.10.8)
[ 0.000000] Boot CPU: AArch64 Processor [510f8000]
[ 0.000000] earlycon: qdf2400_e44 at MMIO 0x000000ff78ef1000 (options '')
[ 0.000000] bootconsole [qdf2400_e44] enabled
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] efi: EFI v2.60 by Qualcomm
[ 0.000000] efi: ACPI 2.0=0x95e0000 PROP=0xe823580 SMBIOS 3.0=0x5750000 ESRT=0xac7c198 MEMATTR=0xac58018 RNG=0xe7ce798
[ 0.000000] esrt: Reserving ESRT space from 0x000000000ac7c198 to 0x000000000ac7c270.
[ 0.000000] ACPI: Early table checksum verification disabled
[ 0.000000] ACPI: RSDP 0x00000000095E0000 000024 (v02 QCOM )
[ 0.000000] ACPI: XSDT 0x00000000095D0000 000084 (v01 QCOM QDF2400 00000000 QCOM 00000001)
[ 0.000000] ACPI: FACP 0x00000000093D0000 000114 (v06 QCOM QDF2400 00000000 INTL 20150515)
[ 0.000000] ACPI: DSDT 0x00000000093E0000 0344BE (v02 QCOM QDF2400 00000004 INTL 20150515)
[ 0.000000] ACPI: DBG2 0x0000000009470000 000072 (v00 QCOM QDF2400 00000001 INTL 20150515)
[ 0.000000] ACPI: IORT 0x0000000009450000 000A40 (v00 QCOM QDF2400 00000001 INTL 20150515)
[ 0.000000] ACPI: TPM2 0x0000000009440000 000040 (v04 QCOM QDF2400 00000001 INTL 20150515)
[ 0.000000] ACPI: BERT 0x0000000009420000 000030 (v01 QCOM QDF2400 00000001 INTL 20150515)
[ 0.000000] ACPI: GTDT 0x00000000093C0000 00007C (v02 QCOM QDF2400 00000001 INTL 20150515)
[ 0.000000] ACPI: PCCT 0x00000000093A0000 0000AC (v01 QCOM QDF2400 00000001 INTL 20150515)
[ 0.000000] ACPI: SPMI 0x0000000009390000 000041 (v04 QCOM QDF2400 00000000 INTL 20150515)
[ 0.000000] ACPI: APIC 0x0000000009430000 000F70 (v04 QCOM QDF2400 00000001 INTL 20150515)
[ 0.000000] ACPI: HEST 0x0000000009460000 000288 (v01 QCOM QDF2400 00000001 INTL 20150515)
[ 0.000000] ACPI: MCFG 0x00000000093B0000 00005C (v01 QCOM QDF2400 00000001 QCOM 00000001)
[ 0.000000] ACPI: SPCR 0x00000000042D0000 000050 (v04 QCOM QDF2400 00000001 QCOM 00000001)
[ 0.000000] ACPI: SPCR: console: qdf2400_e44,mmio,0xff78ef1000,115200
[ 0.000000] ACPI: NUMA: Failed to initialise from firmware
[ 0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x00000017ffffffff]
[ 0.000000] NUMA: Adding memblock [0x200000 - 0x20ffff] on node 0
[ 0.000000] NUMA: Adding memblock [0x820000 - 0x307ffff] on node 0
[ 0.000000] NUMA: Adding memblock [0x3080000 - 0x308ffff] on node 0
[ 0.000000] NUMA: Adding memblock [0x3090000 - 0x31fffff] on node 0
[ 0.000000] NUMA: Adding memblock [0x3200000 - 0x33fffff] on node 0
[ 0.000000] NUM...

description: updated
Revision history for this message
Thadeu Lima de Souza Cascardo (cascardo) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-zesty' to 'verification-done-zesty'. If the problem still exists, change the tag 'verification-needed-zesty' to 'verification-failed-zesty'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-zesty
Revision history for this message
Manoj Iyer (manjo) wrote :

Loading Linux 4.10.0-22-generic ...
Loading initial ramdisk ...
EFI stub: Booting Linux Kernel...
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services and installing virtual address map...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.10.0-22-generic (buildd@bos01-arm64-038) (gcc version 6.3.0 20170406 (Ubuntu/Linaro 6.3.0-12ubuntu2) ) #24-Ubuntu SMP Mon May 22 17:43:39 UTC 2017 (Ubuntu 4.10.0-22.24-generic 4.10.15)
[ 0.000000] Boot CPU: AArch64 Processor [510f8000]
[ 0.000000] earlycon: qdf2400_e44 at MMIO 0x000000ff78ef1000 (options '')
[ 0.000000] bootconsole [qdf2400_e44] enabled

tags: added: verification-done
removed: verification-needed-zesty
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (16.0 KiB)

This bug was fixed in the package linux - 4.10.0-22.24

---------------
linux (4.10.0-22.24) zesty; urgency=low

  * linux: 4.10.0-22.24 -proposed tracker (LP: #1691146)

  * Fix NVLINK2 TCE route (LP: #1690155)
    - powerpc/powernv: Fix TCE kill on NVLink2

  * CVE-2017-0605
    - tracing: Use strlcpy() instead of strcpy() in __trace_find_cmdline()

  * perf: qcom: Add L3 cache PMU driver (LP: #1689856)
    - [Config] CONFIG_QCOM_L3_PMU=y
    - perf: qcom: Add L3 cache PMU driver

  * No PMU support for ACPI-based arm64 systems (LP: #1689661)
    - drivers/perf: arm_pmu: rework per-cpu allocation
    - drivers/perf: arm_pmu: manage interrupts per-cpu
    - drivers/perf: arm_pmu: split irq request from enable
    - drivers/perf: arm_pmu: remove pointless PMU disabling
    - drivers/perf: arm_pmu: define armpmu_init_fn
    - drivers/perf: arm_pmu: fold init into alloc
    - drivers/perf: arm_pmu: factor out pmu registration
    - drivers/perf: arm_pmu: simplify cpu_pmu_request_irqs()
    - drivers/perf: arm_pmu: handle no platform_device
    - drivers/perf: arm_pmu: rename irq request/free functions
    - drivers/perf: arm_pmu: split cpu-local irq request/free
    - drivers/perf: arm_pmu: move irq request/free into probe
    - drivers/perf: arm_pmu: split out platform device probe logic
    - arm64: add function to get a cpu's MADT GICC table
    - [Config] CONFIG_ARM_PMU_ACPI=y
    - drivers/perf: arm_pmu: add ACPI framework
    - arm64: pmuv3: handle !PMUv3 when probing
    - arm64: pmuv3: use arm_pmu ACPI framework

  * [SRU][Zesty]QDF2400 kernel oops on ipmitool fru write 0 fru.bin
    (LP: #1689886)
    - ipmi: Fix kernel panic at ipmi_ssif_thread()

  * tty: pl011: fix earlycon work-around for QDF2400 erratum 44 (LP: #1689818)
    - tty: pl011: fix earlycon work-around for QDF2400 erratum 44
    - tty: pl011: use "qdf2400_e44" as the earlycon name for QDF2400 E44

  * kernel-wedge fails in artful due to leftover squashfs-modules d-i files
    (LP: #1688259)
    - Remove squashfs-modules files from d-i
    - [Config] as squashfs-modules is builtin kernel-image must Provides: it

  * arm64/ACPI support for SBSA watchdog (LP: #1688114)
    - clocksource: arm_arch_timer: clean up printk usage
    - clocksource: arm_arch_timer: rename type macros
    - clocksource: arm_arch_timer: rename the PPI enum
    - clocksource: arm_arch_timer: move enums and defines to header file
    - clocksource: arm_arch_timer: add a new enum for spi type
    - clocksource: arm_arch_timer: rework PPI selection
    - clocksource: arm_arch_timer: split dt-only rate handling
    - clocksource: arm_arch_timer: refactor arch_timer_needs_probing
    - clocksource: arm_arch_timer: move arch_timer_needs_of_probing into DT init
      call
    - clocksource: arm_arch_timer: add structs to describe MMIO timer
    - clocksource: arm_arch_timer: split MMIO timer probing.
    - [Config] CONFIG_ACPI_GTDT=y
    - acpi/arm64: Add GTDT table parse driver
    - clocksource: arm_arch_timer: simplify ACPI support code.
    - acpi/arm64: Add memory-mapped timer support in GTDT driver
    - clocksource: arm_arch_timer: add GTDT support for memory-mapped timer
    - acpi/arm64: Add SBS...

Changed in linux (Ubuntu):
status: Incomplete → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.