Skip to content
  • Roger Pau Monne's avatar
    164ae033
    x86/time: prefer CMOS over EFI_GET_TIME · 164ae033
    Roger Pau Monne authored
    
    
    The EFI_GET_TIME implementation is well known to be broken for many firmware
    implementations, for Xen the result on such implementations are:
    
    ----[ Xen-4.19-unstable  x86_64  debug=y  Tainted:   C    ]----
    CPU:    0
    RIP:    e008:[<0000000062ccfa70>] 0000000062ccfa70
    [...]
    Xen call trace:
       [<0000000062ccfa70>] R 0000000062ccfa70
       [<00000000732e9a3f>] S 00000000732e9a3f
       [<ffff82d04034f34f>] F arch/x86/time.c#get_cmos_time+0x1b3/0x26e
       [<ffff82d04045926f>] F init_xen_time+0x28/0xa4
       [<ffff82d040454bc4>] F __start_xen+0x1ee7/0x2578
       [<ffff82d040203334>] F __high_start+0x94/0xa0
    
    Pagetable walk from 0000000062ccfa70:
     L4[0x000] = 000000207ef1c063 ffffffffffffffff
     L3[0x001] = 000000005d6c0063 ffffffffffffffff
     L2[0x116] = 8000000062c001e3 ffffffffffffffff (PSE)
    
    ****************************************
    Panic on CPU 0:
    FATAL PAGE FAULT
    [error_code=0011]
    Faulting linear address: 0000000062ccfa70
    ****************************************
    
    Swap the preference to default to CMOS first, and EFI later, in an attempt to
    use EFI_GET_TIME as a last resort option only.  Note that Linux for example
    doesn't allow calling the get_time method, and instead provides a dummy handler
    that unconditionally returns EFI_UNSUPPORTED on x86-64.
    
    Such change in the preferences requires some re-arranging of the function
    logic, so that panic messages with workaround suggestions are suitably printed.
    
    Signed-off-by: default avatarRoger Pau Monné <roger.pau@citrix.com>
    Acked-by: default avatarAndrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: default avatarMarek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Acked-By: default avatarOleksii <Kurochko&lt;oleksii.kurochko@gmail.com>
    Release-Acked-by: default avatarOleksii <Kurochko&lt;oleksii.kurochko@gmail.com>
    164ae033
    x86/time: prefer CMOS over EFI_GET_TIME
    Roger Pau Monne authored
    
    
    The EFI_GET_TIME implementation is well known to be broken for many firmware
    implementations, for Xen the result on such implementations are:
    
    ----[ Xen-4.19-unstable  x86_64  debug=y  Tainted:   C    ]----
    CPU:    0
    RIP:    e008:[<0000000062ccfa70>] 0000000062ccfa70
    [...]
    Xen call trace:
       [<0000000062ccfa70>] R 0000000062ccfa70
       [<00000000732e9a3f>] S 00000000732e9a3f
       [<ffff82d04034f34f>] F arch/x86/time.c#get_cmos_time+0x1b3/0x26e
       [<ffff82d04045926f>] F init_xen_time+0x28/0xa4
       [<ffff82d040454bc4>] F __start_xen+0x1ee7/0x2578
       [<ffff82d040203334>] F __high_start+0x94/0xa0
    
    Pagetable walk from 0000000062ccfa70:
     L4[0x000] = 000000207ef1c063 ffffffffffffffff
     L3[0x001] = 000000005d6c0063 ffffffffffffffff
     L2[0x116] = 8000000062c001e3 ffffffffffffffff (PSE)
    
    ****************************************
    Panic on CPU 0:
    FATAL PAGE FAULT
    [error_code=0011]
    Faulting linear address: 0000000062ccfa70
    ****************************************
    
    Swap the preference to default to CMOS first, and EFI later, in an attempt to
    use EFI_GET_TIME as a last resort option only.  Note that Linux for example
    doesn't allow calling the get_time method, and instead provides a dummy handler
    that unconditionally returns EFI_UNSUPPORTED on x86-64.
    
    Such change in the preferences requires some re-arranging of the function
    logic, so that panic messages with workaround suggestions are suitably printed.
    
    Signed-off-by: default avatarRoger Pau Monné <roger.pau@citrix.com>
    Acked-by: default avatarAndrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: default avatarMarek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Acked-By: default avatarOleksii <Kurochko&lt;oleksii.kurochko@gmail.com>
    Release-Acked-by: default avatarOleksii <Kurochko&lt;oleksii.kurochko@gmail.com>
To find the state of this project's repository at the time of any of these versions, check out the tags.
Loading