• Eric DeVolder's avatar
    crash: memory and CPU hotplug sysfs attributes · 88a6f899
    Eric DeVolder authored
    Introduce the crash_hotplug attribute for memory and CPUs for use by
    userspace.  These attributes directly facilitate the udev rule for
    managing userspace re-loading of the crash kernel upon hot un/plug
    changes.
    
    For memory, expose the crash_hotplug attribute to the
    /sys/devices/system/memory directory.  For example:
    
     # udevadm info --attribute-walk /sys/devices/system/memory/memory81
      looking at device '/devices/system/memory/memory81':
        KERNEL=="memory81"
        SUBSYSTEM=="memory"
        DRIVER==""
        ATTR{online}=="1"
        ATTR{phys_device}=="0"
        ATTR{phys_index}=="00000051"
        ATTR{removable}=="1"
        ATTR{state}=="online"
        ATTR{valid_zones}=="Movable"
    
      looking at parent device '/devices/system/memory':
        KERNELS=="memory"
        SUBSYSTEMS==""
        DRIVERS==""
        ATTRS{auto_online_blocks}=="offline"
        ATTRS{block_size_bytes}=="8000000"
        ATTRS{crash_hotplug}=="1"
    
    For CPUs, expose the crash_hotplug attribute to the
    /sys/devices/system/cpu directory. For example:
    
     # udevadm info --attribute-walk /sys/devices/system/cpu/cpu0
      looking at device '/devices/system/cpu/cpu0':
        KERNEL=="cpu0"
        SUBSYSTEM=="cpu"
        DRIVER=="processor"
        ATTR{crash_notes}=="277c38600"
        ATTR{crash_notes_size}=="368"
        ATTR{online}=="1"
    
      looking at parent device '/devices/system/cpu':
        KERNELS=="cpu"
        SUBSYSTEMS==""
        DRIVERS==""
        ATTRS{crash_hotplug}=="1"
        ATTRS{isolated}==""
        ATTRS{kernel_max}=="8191"
        ATTRS{nohz_full}=="  (null)"
        ATTRS{offline}=="4-7"
        ATTRS{online}=="0-3"
        ATTRS{possible}=="0-7"
        ATTRS{present}=="0-3"
    
    With these sysfs attributes in place, it is possible to efficiently
    instruct the udev rule to skip crash kernel reloading for kernels
    configured with crash hotplug support.
    
    For example, the following is the proposed udev rule change for RHEL
    system 98-kexec.rules (as the first lines of the rule file):
    
     # The kernel updates the crash elfcorehdr for CPU and memory changes
     SUBSYSTEM=="cpu", ATTRS{crash_hotplug}=="1", GOTO="kdump_reload_end"
     SUBSYSTEM=="memory", ATTRS{crash_hotplug}=="1", GOTO="kdump_reload_end"
    
    When examined in the context of 98-kexec.rules, the above rules test if
    crash_hotplug is set, and if so, the userspace initiated
    unload-then-reload of the crash kernel is skipped.
    
    CPU and memory checks are separated in accordance with CONFIG_HOTPLUG_CPU
    and CONFIG_MEMORY_HOTPLUG kernel config options.  If an architecture
    supports, for example, memory hotplug but not CPU hotplug, then the
    /sys/devices/system/memory/crash_hotplug attribute file is present, but
    the /sys/devices/system/cpu/crash_hotplug attribute file will NOT be
    present.  Thus the udev rule skips userspace processing of memory hot
    un/plug events, but the udev rule will evaluate false for CPU events, thus
    allowing userspace to process CPU hot un/plug events (ie the
    unload-then-reload of the kdump capture kernel).
    
    Link: https://lkml.kernel.org/r/20230814214446.6659-5-eric.devolder@oracle.comSigned-off-by: default avatarEric DeVolder <eric.devolder@oracle.com>
    Reviewed-by: default avatarSourabh Jain <sourabhjain@linux.ibm.com>
    Acked-by: default avatarHari Bathini <hbathini@linux.ibm.com>
    Acked-by: default avatarBaoquan He <bhe@redhat.com>
    Cc: Akhil Raj <lf32.dev@gmail.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Borislav Petkov (AMD) <bp@alien8.de>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Mimi Zohar <zohar@linux.ibm.com>
    Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: "Rafael J. Wysocki" <rafael@kernel.org>
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: Takashi Iwai <tiwai@suse.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Thomas Weißschuh <linux@weissschuh.net>
    Cc: Valentin Schneider <vschneid@redhat.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    88a6f899
sysfs-devices-memory 4.62 KB