ACPI support for the ARMv8.2 Statistical Profiling Extension

Bug #1841490 reported by dann frazier
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Fix Committed
Undecided
dann frazier
Disco
Fix Released
Undecided
dann frazier

Bug Description

[Impact]
perf support for the ARMv8.2 Statistical Profiling Extension does not work on ACPI platforms.

[Test Case]
ubuntu@d06-2:~$ sudo perf record -e arm_spe/ts_enable=1,pa_enable=1/ dd if=/dev/zero of=/dev/null count=10000
10000+0 records in
10000+0 records out
5120000 bytes (5.1 MB, 4.9 MiB) copied, 0.0201586 s, 254 MB/s
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 1.354 MB perf.data ]
ubuntu@d06-2:~$ sudo perf report --dump-raw-trace
[...]
0 0 0x4a90 [0x30]: PERF_RECORD_AUXTRACE size: 0x155fd0 offset: 0 ref: 0x226974
.
. ... ARM SPE data: size 1400784 bytes
. 00000000: b0 28 31 25 10 00 00 ff c0 PC 0xff00001025312
. 00000009: 99 07 00 LAT 7 ISSUE
. 0000000c: 98 09 00 LAT 9 TOT
. 0000000f: 52 16 00 EV RETIRED L1D-ACC
[...]

[Fix]
d482e575fbf0f perf: arm_spe: Enable ACPI/Platform automatic module loading
d24a0c7099b32 arm_pmu: acpi: spe: Add initial MADT/SPE probing
56855a99f3d0d ACPI/PPTT: Add function to return ACPI 6.3 Identical tokens
ed2b664fcc807 ACPI/PPTT: Modify node flag detection to find last IDENTICAL

[Regression Risk]
The functional changes are all ARM specific (while ACPI PPTT is generic, it is only enabled under arch/arm64 currently). There are new macros and an updated structure in generic code, but all pretty innocuous.

dann frazier (dannf)
Changed in linux (Ubuntu Disco):
status: New → In Progress
assignee: nobody → dann frazier (dannf)
dann frazier (dannf)
description: updated
Seth Forshee (sforshee)
Changed in linux (Ubuntu):
status: In Progress → Fix Committed
Changed in linux (Ubuntu Disco):
status: In Progress → Fix Committed
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) 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-disco' to 'verification-done-disco'. If the problem still exists, change the tag 'verification-needed-disco' to 'verification-failed-disco'.

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-disco
Revision history for this message
dann frazier (dannf) wrote :

Verification:

ubuntu@d06-2:~$ cat /proc/version
Linux version 5.0.0-28-generic (buildd@bos02-arm64-078) (gcc version 8.3.0 (Ubuntu/Linaro 8.3.0-6ubuntu1)) #30-Ubuntu SMP Wed Sep 4 11:48:26 UTC 2019
ubuntu@d06-2:~$ sudo perf record -e arm_spe/ts_enable=1,pa_enable=1/ dd if=/dev/zero of=/dev/null count=10000
10000+0 records in
10000+0 records out
5120000 bytes (5.1 MB, 4.9 MiB) copied, 0.0179591 s, 285 MB/s
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 1.233 MB perf.data ]
ubuntu@d06-2:~$
ubuntu@d06-2:~$
ubuntu@d06-2:~$ sudo perf report --dump-raw-trace
# To display the perf.data header info, please use --header/--header-only options.
#

0x768 [0x20]: event: 70
.
. ... raw event: size 32 bytes
. 0000: 46 00 00 00 00 00 20 00 04 00 00 00 00 00 00 00 F..... .........
. 0010: 39 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9...............

0 0 0x768 [0x20]: PERF_RECORD_AUXTRACE_INFO type: 4
  PMU Type 57

0x788 [0x60]: event: 1
.
. ... raw event: size 96 bytes
. 0000: 01 00 00 00 01 00 60 00 ff ff ff ff 00 00 00 00 ......`.........
. 0010: 00 00 08 10 00 00 ff ff ff ff f7 ef ff ff 00 00 ................
. 0020: 00 00 08 10 00 00 ff ff 5b 6b 65 72 6e 65 6c 2e ........[kernel.
. 0030: 6b 61 6c 6c 73 79 6d 73 5d 5f 74 65 78 74 00 00 kallsyms]_text..
. 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
. 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

0 0 0x788 [0x60]: PERF_RECORD_MMAP -1/0: [0xffff000010080000(0xffffeff7ffff) @ 0xffff000010080000]: x [kernel.kal
...skipping...
. ... ARM SPE data: size 1272808 bytes
. 00000000: b0 20 cb 24 10 00 00 ff c0 PC 0xff00001024cb20 el2 ns=1
. 00000009: 99 08 00 LAT 8 ISSUE
. 0000000c: 98 0a 00 LAT 10 TOT
. 0000000f: 52 16 00 EV RETIRED L1D-ACCESS TLB-ACCESS

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

This bug was fixed in the package linux - 5.0.0-31.33

---------------
linux (5.0.0-31.33) disco; urgency=medium

  * disco/linux: 5.0.0-31.33 -proposed tracker (LP: #1846026)

  * Packaging resync (LP: #1786013)
    - [Packaging] update helper scripts

  * /proc/self/maps paths missing on live session (was vlc won't start; eoan
    19.10 & bionic 18.04 ubuntu/lubuntu/kubuntu/xubuntu/ubuntu-mate dailies)
    (LP: #1842382)
    - SAUCE: Revert "UBUNTU: SAUCE: shiftfs: enable overlayfs on shiftfs"

linux (5.0.0-30.32) disco; urgency=medium

  * disco/linux: 5.0.0-30.32 -proposed tracker (LP: #1844362)

  * Disco update: upstream stable patchset 2019-08-20 (LP: #1840846)
    - Revert "e1000e: fix cyclic resets at link up with active tx"
    - e1000e: start network tx queue only when link is up
    - Input: synaptics - enable SMBUS on T480 thinkpad trackpad
    - nilfs2: do not use unexported cpu_to_le32()/le32_to_cpu() in uapi header
    - drivers: base: cacheinfo: Ensure cpu hotplug work is done before Intel RDT
    - firmware: improve LSM/IMA security behaviour
    - irqchip/gic-v3-its: Fix command queue pointer comparison bug
    - clk: ti: clkctrl: Fix returning uninitialized data
    - efi/bgrt: Drop BGRT status field reserved bits check
    - perf/core: Fix perf_sample_regs_user() mm check
    - ARM: dts: gemini Fix up DNS-313 compatible string
    - ARM: omap2: remove incorrect __init annotation
    - afs: Fix uninitialised spinlock afs_volume::cb_break_lock
    - x86/apic: Fix integer overflow on 10 bit left shift of cpu_khz
    - be2net: fix link failure after ethtool offline test
    - ppp: mppe: Add softdep to arc4
    - sis900: fix TX completion
    - ARM: dts: imx6ul: fix PWM[1-4] interrupts
    - pinctrl: mcp23s08: Fix add_data and irqchip_add_nested call order
    - dm table: don't copy from a NULL pointer in realloc_argv()
    - dm verity: use message limit for data block corruption message
    - x86/boot/64: Fix crash if kernel image crosses page table boundary
    - x86/boot/64: Add missing fixup_pointer() for next_early_pgt access
    - HID: chicony: add another quirk for PixArt mouse
    - pinctrl: mediatek: Ignore interrupts that are wake only during resume
    - cpu/hotplug: Fix out-of-bounds read when setting fail state
    - pinctrl: mediatek: Update cur_mask in mask/mask ops
    - linux/kernel.h: fix overflow for DIV_ROUND_UP_ULL
    - genirq: Delay deactivation in free_irq()
    - genirq: Fix misleading synchronize_irq() documentation
    - genirq: Add optional hardware synchronization for shutdown
    - x86/ioapic: Implement irq_get_irqchip_state() callback
    - x86/irq: Handle spurious interrupt after shutdown gracefully
    - x86/irq: Seperate unused system vectors from spurious entry again
    - ARC: hide unused function unw_hdr_alloc
    - s390: fix stfle zero padding
    - s390/qdio: (re-)initialize tiqdio list entries
    - s390/qdio: don't touch the dsci in tiqdio_add_input_queues()
    - crypto: talitos - move struct talitos_edesc into talitos.h
    - crypto: talitos - fix hash on SEC1.
    - crypto/NX: Set receive window credits to max number of CRBs in RxFIFO
    - drm/udl: introduce a macro to convert dev t...

Changed in linux (Ubuntu Disco):
status: Fix Committed → 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.