support EFI rtc on arm64

Bug #1441291 reported by dann frazier
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Fix Released
Undecided
Unassigned
Trusty
Fix Released
Undecided
dann frazier
Utopic
Fix Released
Undecided
dann frazier
linux-lts-utopic (Ubuntu)
Invalid
Undecided
Unassigned
Trusty
Fix Released
Undecided
Unassigned
Utopic
Invalid
Undecided
Unassigned

Bug Description

[Impact]
ARM64 EFI platforms have no real time clock support. This can leave a system with a very out-of-date system clock. It can be somewhat mitigated by using NTP, but that still leaves issues in early boot (inaccurate last mount times, etc).

[Test Case]
if dmesg | grep -q 'rtc-efi: setting system clock'; then
  PASS
else
  FAIL
fi

[Regression Risk]
This enables a new driver only on ARM64, so the risk should be low to other platforms. The upstream patches do refactor the rtc-efi driver but, that driver was previously only compilable on ia64, which isn't supported by Ubuntu.

CVE References

dann frazier (dannf)
Changed in linux (Ubuntu):
status: Confirmed → Fix Released
Changed in linux (Ubuntu Utopic):
status: New → Confirmed
Changed in linux (Ubuntu Trusty):
status: New → Confirmed
Changed in linux-lts-utopic (Ubuntu Trusty):
status: New → Confirmed
Changed in linux-lts-utopic (Ubuntu Utopic):
status: New → Invalid
Tim Gardner (timg-tpi)
Changed in linux (Ubuntu Utopic):
assignee: nobody → dann frazier (dannf)
status: Confirmed → Fix Committed
dann frazier (dannf)
Changed in linux (Ubuntu Trusty):
status: Confirmed → In Progress
assignee: nobody → dann frazier (dannf)
Revision history for this message
Brad Figg (brad-figg) 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-utopic' to 'verification-done-utopic'.

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

dannf@ubuntu:~$ cat /proc/version
Linux version 3.16.0-36-generic (buildd@beebe) (gcc version 4.9.1 (Ubuntu/Linaro 4.9.1-16ubuntu6) ) #48-Ubuntu SMP Tue Apr 14 20:18:23 UTC 2015
dannf@ubuntu:~$ if dmesg | grep -q 'rtc-efi: setting system clock'; then echo PASS; else echo FAIL; fi
PASS

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

This bug was fixed in the package linux - 3.16.0-36.48

---------------
linux (3.16.0-36.48) utopic; urgency=low

  [ Luis Henriques ]

  * Release Tracking Bug
    - LP: #1443946
  * Merged back Ubuntu-3.16.0-34.47 security release

linux (3.16.0-35.46) utopic; urgency=low

  [ Brad Figg ]

  * Release Tracking Bug
    - LP: #1442324

  [ Andy Whitcroft ]

  * [Config] CONFIG_DEFAULT_MMAP_MIN_ADDR needs to match on armhf and arm64
    - LP: #1418140

  [ Chris J Arges ]

  * [Config] CONFIG_PCIEASPM_DEBUG=y
    - LP: #1398544

  [ dann frazier ]

  * [Config] CONFIG_RTC_DRV_EFI=y on arm64
    - LP: #1441291

  [ Upstream Kernel Changes ]

  * Revert "USB: serial: make bulk_out_size a lower limit"
    - LP: #1441317
  * Revert "i2c: core: Dispose OF IRQ mapping at client removal time"
    - LP: #1441317
  * Revert "net: cx82310_eth: use common match macro"
    - LP: #1441317
  * KEYS: request_key() should reget expired keys rather than give
    EKEYEXPIRED
    - LP: #1124250
  * drm/i915/bdw: 3D_CHICKEN3 has write mask bits
    - LP: #1374389
  * drm/i915: call lpt_init_clock_gating on BDW too
    - LP: #1374389
  * drm/i915/bdw: Apply workarounds in render ring init function
    - LP: #1374389
  * drm/i915/bdw: Cleanup pre prod workarounds
    - LP: #1374389
  * drm/i915: Refactor Broadwell PIPE_CONTROL emission into a helper.
    - LP: #1374389
  * drm/i915: Add the WaCsStallBeforeStateCacheInvalidate:bdw workaround.
    - LP: #1374389
  * drm/i915/bdw: Remove BDW preproduction W/As until C stepping.
    - LP: #1374389
  * drm/i915: Rework GPU reset sequence to match driver load & thaw
    - LP: #1384469
  * drm/ast: switch to using CACHED by default for sysram
    - LP: #1420627
  * drm/ast: Add missing entry to dclk_table[]
    - LP: #1420627
  * drm/ast: Add reduced blanking modes for wide screen mode
    - LP: #1420627
  * drm/ast: Try to use MMIO registers when PIO isn't supported
    - LP: #1420627
  * drm/ast: POST chip at probe time if VGA not enabled
    - LP: #1420627
  * drm/ast: Properly initialize P2A base before using it in
    ast_init_3rdtx()
    - LP: #1420627
  * drm/ast: Don't assume DVO enabled means SIL164 on uninitialized chips
    - LP: #1420627
  * drm/ast: Cleanup analog init code path
    - LP: #1420627
  * audit: correctly record file names with different path name types
    - LP: #1439441
  * of: Create of_console_check() for selecting a console specified in
    /chosen
    - LP: #1438585
  * of: Enable console on serial ports specified by /chosen/stdout-path
    - LP: #1438585
  * of: correct of_console_check()'s return value
    - LP: #1438585
  * of: Add bindings for chosen node, stdout-path
    - LP: #1438585
  * of: add optional options parameter to of_find_node_by_path()
    - LP: #1438585
  * of: support passing console options with stdout-path
    - LP: #1438585
  * netfilter: nf_tables: disable preemption when restoring chain counters
    - LP: #1441317
  * netfilter: nf_tables: fix leaks in error path of nf_tables_newchain()
    - LP: #1441317
  * ipvs: rerouting to local clients is not needed anymore
    - LP: #1441317
  * netfilter: nft_compat: fix module refcount underflow
    - LP: #1441317
  * netf...

Changed in linux (Ubuntu Utopic):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (15.5 KiB)

This bug was fixed in the package linux-lts-utopic - 3.16.0-36.48~14.04.1

---------------
linux-lts-utopic (3.16.0-36.48~14.04.1) trusty; urgency=low

  [ Luis Henriques ]

  * Release Tracking Bug
    - LP: #1444249
  * Merged back Ubuntu-3.16.0-34.47 security release

linux (3.16.0-35.46) utopic; urgency=low

  [ Brad Figg ]

  * Release Tracking Bug
    - LP: #1442324

  [ Andy Whitcroft ]

  * [Config] CONFIG_DEFAULT_MMAP_MIN_ADDR needs to match on armhf and arm64
    - LP: #1418140

  [ Chris J Arges ]

  * [Config] CONFIG_PCIEASPM_DEBUG=y
    - LP: #1398544

  [ dann frazier ]

  * [Config] CONFIG_RTC_DRV_EFI=y on arm64
    - LP: #1441291

  [ Upstream Kernel Changes ]

  * Revert "USB: serial: make bulk_out_size a lower limit"
    - LP: #1441317
  * Revert "i2c: core: Dispose OF IRQ mapping at client removal time"
    - LP: #1441317
  * Revert "net: cx82310_eth: use common match macro"
    - LP: #1441317
  * KEYS: request_key() should reget expired keys rather than give
    EKEYEXPIRED
    - LP: #1124250
  * drm/i915/bdw: 3D_CHICKEN3 has write mask bits
    - LP: #1374389
  * drm/i915: call lpt_init_clock_gating on BDW too
    - LP: #1374389
  * drm/i915/bdw: Apply workarounds in render ring init function
    - LP: #1374389
  * drm/i915/bdw: Cleanup pre prod workarounds
    - LP: #1374389
  * drm/i915: Refactor Broadwell PIPE_CONTROL emission into a helper.
    - LP: #1374389
  * drm/i915: Add the WaCsStallBeforeStateCacheInvalidate:bdw workaround.
    - LP: #1374389
  * drm/i915/bdw: Remove BDW preproduction W/As until C stepping.
    - LP: #1374389
  * drm/i915: Rework GPU reset sequence to match driver load & thaw
    - LP: #1384469
  * drm/ast: switch to using CACHED by default for sysram
    - LP: #1420627
  * drm/ast: Add missing entry to dclk_table[]
    - LP: #1420627
  * drm/ast: Add reduced blanking modes for wide screen mode
    - LP: #1420627
  * drm/ast: Try to use MMIO registers when PIO isn't supported
    - LP: #1420627
  * drm/ast: POST chip at probe time if VGA not enabled
    - LP: #1420627
  * drm/ast: Properly initialize P2A base before using it in
    ast_init_3rdtx()
    - LP: #1420627
  * drm/ast: Don't assume DVO enabled means SIL164 on uninitialized chips
    - LP: #1420627
  * drm/ast: Cleanup analog init code path
    - LP: #1420627
  * audit: correctly record file names with different path name types
    - LP: #1439441
  * of: Create of_console_check() for selecting a console specified in
    /chosen
    - LP: #1438585
  * of: Enable console on serial ports specified by /chosen/stdout-path
    - LP: #1438585
  * of: correct of_console_check()'s return value
    - LP: #1438585
  * of: Add bindings for chosen node, stdout-path
    - LP: #1438585
  * of: add optional options parameter to of_find_node_by_path()
    - LP: #1438585
  * of: support passing console options with stdout-path
    - LP: #1438585
  * netfilter: nf_tables: disable preemption when restoring chain counters
    - LP: #1441317
  * netfilter: nf_tables: fix leaks in error path of nf_tables_newchain()
    - LP: #1441317
  * ipvs: rerouting to local clients is not needed anymore
    - LP: #1441317
  * netfilter: nft_compat: fix module refcount...

Changed in linux-lts-utopic (Ubuntu Trusty):
status: Confirmed → Fix Released
Mathew Hodson (mhodson)
Changed in linux-lts-utopic (Ubuntu):
status: New → Invalid
Andy Whitcroft (apw)
Changed in linux (Ubuntu Trusty):
status: In Progress → Fix Committed
Revision history for this message
Luis Henriques (henrix) 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-trusty' to 'verification-done-trusty'.

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-trusty
Revision history for this message
dann frazier (dannf) wrote :
Download full text (11.5 KiB)

Verified using tianocore/qemu (search for rtc below):

  Booting a command list

EFI stub: Booting Linux Kernel...
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.13.0-53-generic (buildd@auburn) (gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-19ubuntu1) ) #87-Ubuntu SMP Thu May 7 14:43:55 UTC 2015 (Ubuntu 3.13.0-53.87-generic 3.13.11-ckt19)
[ 0.000000] CPU: AArch64 Processor [500f0000] revision 0
[ 0.000000] No earlyprintk arguments passed.
[ 0.000000] efi: Getting parameters from FDT:
[ 0.000000] EFI v2.40 by EDK II
[ 0.000000] efi:
[ 0.000000] psci: probing function IDs from device-tree
[ 0.000000] PERCPU: Embedded 11 pages/cpu @ffffffc03f9bb000 s16192 r8192 d20672 u45056
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 258560
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.13.0-53-generic root=UUID=1aaf7ff5-f468-46de-bca4-960eaf01a7b4 ro earlyprintk console=ttyAMA0
[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] software IO TLB [mem 0x73098000-0x77098000] (64MB) mapped at [ffffffc033098000-ffffffc037097fff]
[ 0.000000] Memory: 901200K/1048576K available (5750K kernel code, 587K rwdata, 2548K rodata, 315K init, 542K bss, 147376K reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vmalloc : 0xffffff8000000000 - 0xffffffbbffff0000 (245759 MB)
[ 0.000000] vmemmap : 0xffffffbc00e00000 - 0xffffffbc01c00000 ( 14 MB)
[ 0.000000] modules : 0xffffffbffc000000 - 0xffffffc000000000 ( 64 MB)
[ 0.000000] memory : 0xffffffc000000000 - 0xffffffc040000000 ( 1024 MB)
[ 0.000000] .init : 0xffffffc00089c000 - 0xffffffc0008eaf40 ( 316 kB)
[ 0.000000] .text : 0xffffffc000080000 - 0xffffffc00089b9b4 ( 8303 kB)
[ 0.000000] .data : 0xffffffc0008eb000 - 0xffffffc00097df68 ( 588 kB)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] RCU dyntick-idle grace-period acceleration is enabled.
[ 0.000000] RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
[ 0.000000] NR_IRQS:64 nr_irqs:64 0
[ 0.000000] Architected cp15 timer(s) running at 50.00MHz (virt).
[ 0.000000] sched_clock: 56 bits at 50MHz, resolution 20ns, wraps every 2748779069440ns
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] allocated 4194304 bytes of page_cgroup
[ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[ 0.001040] Calibrating delay loop (skipped), value calculated using timer frequency.. 100.00 BogoMIPS (lpj=500000)
[ 0.001045] pid_max: default: 32768 minimum: 301
[ 0.001091] Security Framework initialized
[ 0.001122] AppArmor: AppArmor initialized
[ 0.001125] Yama: becoming mindful.
[ 0.001153] Mount-cache hash table entries: 2048 (order: 2, 16384 ...

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

This bug was fixed in the package linux - 3.13.0-53.88

---------------
linux (3.13.0-53.88) trusty; urgency=low

  [ Brad Figg ]

  * Release Tracking Bug
    - LP: #1454785

  [ Upstream Kernel Changes ]

  * mmc: card: Don't access RPMB partitions for normal read/write
    - LP: #1454013

linux (3.13.0-53.87) trusty; urgency=low

  [ Luis Henriques ]

  * Release Tracking Bug
    - LP: #1452736

  [ dann frazier ]

  * [Config] CONFIG_{EFI_PARAMS_FROM_FDT,GENERIC_EARLY_IOREMAP,LIBFDT}=y
    - LP: #1441876
  * Move get_dram_base to arm private file
    - LP: #1441876
  * arm64: Implement efi_enabled()
    - LP: #1441876
  * [Config] CONFIG_RTC_DRV_EFI=y on arm64
    - LP: #1441291

  [ Kamal Mostafa ]

  * Fix "mei: me: release hw from reset only during the reset flow"
    - LP: #1450813

  [ Stefan Bader ]

  * SAUCE: vesafb: Set mtrr:3 (write-combining) as default
    - LP: #1434581

  [ Upstream Kernel Changes ]

  * Revert "net: cx82310_eth: use common match macro"
    - LP: #1451900
  * netfilter: nf_conntrack: reserve two bytes for nf_ct_ext->len
    - LP: #1442080
    - CVE-2014-9715
  * add generic fixmap.h
    - LP: #1441876
  * mm: create generic early_ioremap() support
    - LP: #1441876
  * arm64: initialize pgprot info earlier in boot
    - LP: #1441876
  * arm64: add early_ioremap support
    - LP: #1441876
  * arm64: fixmap: fix missing sub-page offset for earlyprintk
    - LP: #1441876
  * efi: create memory map iteration helper
    - LP: #1441876
  * efi: Add get_dram_base() helper function
    - LP: #1441876
  * lib: add fdt_empty_tree.c
    - LP: #1441876
  * doc: efi-stub.txt updates for ARM
    - LP: #1441876
  * efi: add helper function to get UEFI params from FDT
    - LP: #1441876
  * arm64: Add function to create identity mappings
    - LP: #1441876
  * efi: Add shared FDT related functions for ARM/ARM64
    - LP: #1441876
  * arm64: add EFI runtime services
    - LP: #1441876
  * doc: arm: add UEFI support documentation
    - LP: #1441876
  * arm64: efi: add EFI stub
    - LP: #1441876
  * doc: arm64: add description of EFI stub support
    - LP: #1441876
  * efi/arm64: ignore dtb= when UEFI SecureBoot is enabled
    - LP: #1441876
  * arm64: efi: only attempt efi map setup if booting via EFI
    - LP: #1441876
  * PCI: Don't clear ASPM bits when the FADT declares it's unsupported
    - LP: #1441335
  * regmap: Skip read-only registers in regcache_sync()
    - LP: #1448830
  * rtc: ia64: allow other architectures to use EFI RTC
    - LP: #1441291
  * rtc: Disable EFI rtc for x86
    - LP: #1441291
  * mei: me: fix hw ready reset flow
    - LP: #1450813
  * Input: serio - add firmware_id sysfs attribute
    - LP: #1414930
  * Input: i8042 - add firmware_id support
    - LP: #1414930
  * Input: Add INPUT_PROP_TOPBUTTONPAD device property
    - LP: #1414930
  * Input: synaptics - report INPUT_PROP_TOPBUTTONPAD property
    - LP: #1414930
  * Input: synaptics - add a matches_pnp_id helper function
    - LP: #1414930
  * Input: synaptics - change min/max quirk table to pnp-id matching
    - LP: #1414930
  * Input: psmouse - add psmouse_matches_pnp_id helper function
    - LP: #1414930
  * Input: synaptics - split synapt...

Changed in linux (Ubuntu Trusty):
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.