Re: [PATCH] arm64: paravirt: Initialize steal time when cpu is online

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 16/09/2020 16:45, Andrew Jones wrote:
Steal time initialization requires mapping a memory region which
invokes a memory allocation. Doing this at CPU starting time results
in the following trace when CONFIG_DEBUG_ATOMIC_SLEEP is enabled:

BUG: sleeping function called from invalid context at mm/slab.h:498
in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 0, name: swapper/1
CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.9.0-rc5+ #1
Call trace:
  dump_backtrace+0x0/0x208
  show_stack+0x1c/0x28
  dump_stack+0xc4/0x11c
  ___might_sleep+0xf8/0x130
  __might_sleep+0x58/0x90
  slab_pre_alloc_hook.constprop.101+0xd0/0x118
  kmem_cache_alloc_node_trace+0x84/0x270
  __get_vm_area_node+0x88/0x210
  get_vm_area_caller+0x38/0x40
  __ioremap_caller+0x70/0xf8
  ioremap_cache+0x78/0xb0
  memremap+0x9c/0x1a8
  init_stolen_time_cpu+0x54/0xf0
  cpuhp_invoke_callback+0xa8/0x720
  notify_cpu_starting+0xc8/0xd8
  secondary_start_kernel+0x114/0x180
CPU1: Booted secondary processor 0x0000000001 [0x431f0a11]

However we don't need to initialize steal time at CPU starting time.
We can simply wait until CPU online time, just sacrificing a bit of
accuracy by returning zero for steal time until we know better.

While at it, add __init to the functions that are only called by
pv_time_init() which is __init.

Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx>

The changes look good to me - it simplifies things delaying the startup of stolen time and I doubt anyone will notice the accuracy loss.

Reviewed-by: Steven Price <steven.price@xxxxxxx>

Do we need a CC: stable (or Fixes:)?

Steve
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm



[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux