833c95456a
Many devices run firmware and/or complex hardware, and most of that can have bugs. When it misbehaves, however, it is often much harder to debug than software running on the host. Introduce a "device coredump" mechanism to allow dumping internal device/firmware state through a generalized mechanism. As devices are different and information needed can vary accordingly, this doesn't prescribe a file format - it just provides mechanism to get data to be able to capture it in a generalized way (e.g. in distributions.) The dumped data will be readable in sysfs in the virtual device's data file under /sys/class/devcoredump/devcd*/. Writing to it will free the data and remove the device, as does a 5-minute timeout. Note that generalized capturing of such data may result in privacy issues, so users generally need to be involved. In order to allow certain users/system integrators/... to disable the feature at all, introduce a Kconfig option to override the drivers that would like to have the feature. For now, this provides two ways of dumping data: 1) with a vmalloc'ed area, that is then given to the subsystem and freed after retrieval or timeout 2) with a generalized reader/free function method We could/should add more options, e.g. a list of pages, since the vmalloc area is very limited on some architectures. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27 lines
889 B
Makefile
27 lines
889 B
Makefile
# Makefile for the Linux device tree
|
|
|
|
obj-y := component.o core.o bus.o dd.o syscore.o \
|
|
driver.o class.o platform.o \
|
|
cpu.o firmware.o init.o map.o devres.o \
|
|
attribute_container.o transport_class.o \
|
|
topology.o container.o
|
|
obj-$(CONFIG_DEVTMPFS) += devtmpfs.o
|
|
obj-$(CONFIG_DMA_CMA) += dma-contiguous.o
|
|
obj-y += power/
|
|
obj-$(CONFIG_HAS_DMA) += dma-mapping.o
|
|
obj-$(CONFIG_HAVE_GENERIC_DMA_COHERENT) += dma-coherent.o
|
|
obj-$(CONFIG_ISA) += isa.o
|
|
obj-$(CONFIG_FW_LOADER) += firmware_class.o
|
|
obj-$(CONFIG_NUMA) += node.o
|
|
obj-$(CONFIG_MEMORY_HOTPLUG_SPARSE) += memory.o
|
|
ifeq ($(CONFIG_SYSFS),y)
|
|
obj-$(CONFIG_MODULES) += module.o
|
|
endif
|
|
obj-$(CONFIG_SYS_HYPERVISOR) += hypervisor.o
|
|
obj-$(CONFIG_REGMAP) += regmap/
|
|
obj-$(CONFIG_SOC_BUS) += soc.o
|
|
obj-$(CONFIG_PINCTRL) += pinctrl.o
|
|
obj-$(CONFIG_DEV_COREDUMP) += devcoredump.o
|
|
|
|
ccflags-$(CONFIG_DEBUG_DRIVER) := -DDEBUG
|
|
|