forked from mirror/openwrt
kernel: add kmod-pstore-blk
This module enables support for pstore oops and panic logger writing to block devices. This is needed for some x86 targets, e.g. the APU series of devices that can't work with ramoops.
This commit is contained in:
parent
4bdbb413cc
commit
2dbcd182bc
5 changed files with 81 additions and 10 deletions
|
|
@ -356,4 +356,18 @@ menu "Target Images"
|
|||
across reboots. When enabled, /var/run will still be linked
|
||||
to /tmp/run.
|
||||
|
||||
config TARGET_PSTORE_BLK_ENABLE
|
||||
bool "Enable creating a PSTORE partition"
|
||||
depends on GRUB_IMAGES || GRUB_EFI_IMAGES
|
||||
help
|
||||
Create a partition for usage with the pstore-blk kernel module.
|
||||
|
||||
config TARGET_PSTORE_BLK_PARTSIZE
|
||||
int "pstore partition size (in MB)"
|
||||
depends on TARGET_PSTORE_BLK_ENABLE
|
||||
|
||||
config TARGET_PSTORE_BLK_PARTNAME
|
||||
string "pstore partition on target device"
|
||||
depends on TARGET_PSTORE_BLK_ENABLE
|
||||
|
||||
endmenu
|
||||
|
|
|
|||
|
|
@ -700,7 +700,6 @@ define KernelPackage/pstore
|
|||
CONFIG_PSTORE \
|
||||
CONFIG_PSTORE_COMPRESS=y
|
||||
FILES:= $(LINUX_DIR)/fs/pstore/pstore.ko
|
||||
AUTOLOAD:=$(call AutoLoad,30,pstore,1)
|
||||
DEPENDS:=+kmod-lib-zlib-deflate +kmod-lib-zlib-inflate
|
||||
endef
|
||||
|
||||
|
|
|
|||
|
|
@ -544,6 +544,45 @@ endef
|
|||
$(eval $(call KernelPackage,ramoops))
|
||||
|
||||
|
||||
define KernelPackage/pstore-blk
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Pstore block device (pstore_blk)
|
||||
DEFAULT:=m if ALL_KMODS
|
||||
KCONFIG:=CONFIG_PSTORE_BLK \
|
||||
CONFIG_PSTORE_CONSOLE=y \
|
||||
CONFIG_PSTORE_BLK_BLKDEV="" \
|
||||
CONFIG_PSTORE_BLK_CONSOLE_SIZE=1024 \
|
||||
CONFIG_PSTORE_BLK_KMSG_SIZE=1024 \
|
||||
CONFIG_PSTORE_BLK_MAX_REASON=2
|
||||
DEPENDS:=+kmod-pstore +kmod-pstore-zone
|
||||
FILES:= $(LINUX_DIR)/fs/pstore/pstore_blk.ko
|
||||
AUTOLOAD:=$(call AutoLoad,90,pstore_blk)
|
||||
MODPARAMS.pstore_blk:=best_effort=y blkdev=/dev/vda2
|
||||
endef
|
||||
|
||||
define KernelPackage/pstore-blk/description
|
||||
Kernel module for pstore-blk crash log storage on block devices
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,pstore-blk))
|
||||
|
||||
|
||||
define KernelPackage/pstore-zone
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Ramoops (pstore-zone)
|
||||
DEFAULT:=m if ALL_KMODS
|
||||
KCONFIG:=CONFIG_PSTORE_ZONE
|
||||
DEPENDS:=+kmod-pstore
|
||||
FILES:= $(LINUX_DIR)/fs/pstore/pstore_zone.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/pstore-zone/description
|
||||
Kernel module for pstore-zone crash log storage
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,pstore-zone))
|
||||
|
||||
|
||||
define KernelPackage/reed-solomon
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Reed-Solomon error correction
|
||||
|
|
|
|||
|
|
@ -15,18 +15,30 @@ ROOTFSIMAGE="$5"
|
|||
ROOTFSPARTTYPE=${ROOTFSPARTTYPE:-83}
|
||||
ALIGN="$6"
|
||||
|
||||
PSTORESIZE="16"
|
||||
PSTOREPARTTYPE=${PSTOREPARTTYPE:-83}
|
||||
|
||||
rm -f "$OUTPUT"
|
||||
|
||||
head=16
|
||||
sect=63
|
||||
|
||||
# create partition table
|
||||
set $(ptgen -o "$OUTPUT" -h $head -s $sect ${GUID:+-g} -t "${KERNELPARTTYPE}" -p "${KERNELSIZE}m${PARTOFFSET:+@$PARTOFFSET}" -t "${ROOTFSPARTTYPE}" -p "${ROOTFSSIZE}m" ${ALIGN:+-l $ALIGN} ${SIGNATURE:+-S 0x$SIGNATURE} ${GUID:+-G $GUID})
|
||||
|
||||
KERNELOFFSET="$(($1 / 512))"
|
||||
KERNELSIZE="$2"
|
||||
ROOTFSOFFSET="$(($3 / 512))"
|
||||
ROOTFSSIZE="$(($4 / 512))"
|
||||
if [ -n "$PSTORE_ENABLE" ]; then
|
||||
set $(ptgen -o "$OUTPUT" -h $head -s $sect ${GUID:+-g} -t "${KERNELPARTTYPE}" -p "${KERNELSIZE}m${PARTOFFSET:+@$PARTOFFSET}" -t "${PSTOREPARTTYPE}" -p "${PSTORESIZE}m" -t "${ROOTFSPARTTYPE}" -p "${ROOTFSSIZE}m" ${ALIGN:+-l $ALIGN} ${SIGNATURE:+-S 0x$SIGNATURE} ${GUID:+-G $GUID})
|
||||
KERNELOFFSET="$(($1 / 512))"
|
||||
KERNELSIZE="$2"
|
||||
PSTOREOFFSET="$(($3 / 512))"
|
||||
PSTORESIZE="$(($4 / 512))"
|
||||
ROOTFSOFFSET="$(($5 / 512))"
|
||||
ROOTFSSIZE="$(($6 / 512))"
|
||||
else
|
||||
set $(ptgen -o "$OUTPUT" -h $head -s $sect ${GUID:+-g} -t "${KERNELPARTTYPE}" -p "${KERNELSIZE}m${PARTOFFSET:+@$PARTOFFSET}" -t "${ROOTFSPARTTYPE}" -p "${ROOTFSSIZE}m" ${ALIGN:+-l $ALIGN} ${SIGNATURE:+-S 0x$SIGNATURE} ${GUID:+-G $GUID})
|
||||
KERNELOFFSET="$(($1 / 512))"
|
||||
KERNELSIZE="$2"
|
||||
ROOTFSOFFSET="$(($3 / 512))"
|
||||
ROOTFSSIZE="$(($4 / 512))"
|
||||
fi
|
||||
|
||||
# Using mcopy -s ... is using READDIR(3) to iterate through the directory
|
||||
# entries, hence they end up in the FAT filesystem in traversal order which
|
||||
|
|
|
|||
|
|
@ -25,9 +25,16 @@ GRUB_TERMINALS += serial
|
|||
GRUB_TERMINAL_CONFIG := terminal_input $(GRUB_TERMINALS); terminal_output $(GRUB_TERMINALS)
|
||||
|
||||
ROOTPART:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_PARTNAME))
|
||||
ROOTPART:=$(if $(ROOTPART),$(ROOTPART),PARTUUID=$(IMG_PART_SIGNATURE)-02)
|
||||
GPT_ROOTPART:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_PARTNAME))
|
||||
GPT_ROOTPART:=$(if $(GPT_ROOTPART),$(GPT_ROOTPART),PARTUUID=$(shell echo $(IMG_PART_DISKGUID) | sed 's/00$$/02/'))
|
||||
|
||||
ifneq ($(CONFIG_PACKAGE_kmod-pstore-blk),)
|
||||
PSTORE_BLK_ENABLE:="1"
|
||||
ROOTPART:=$(if $(ROOTPART),$(ROOTPART),PARTUUID=$(IMG_PART_SIGNATURE)-03)
|
||||
GPT_ROOTPART:=$(if $(GPT_ROOTPART),$(GPT_ROOTPART),PARTUUID=$(shell echo $(IMG_PART_DISKGUID) | sed 's/00$$/03/'))
|
||||
else
|
||||
ROOTPART:=$(if $(ROOTPART),$(ROOTPART),PARTUUID=$(IMG_PART_SIGNATURE)-02)
|
||||
GPT_ROOTPART:=$(if $(GPT_ROOTPART),$(GPT_ROOTPART),PARTUUID=$(shell echo $(IMG_PART_DISKGUID) | sed 's/00$$/02/'))
|
||||
endif
|
||||
|
||||
GRUB_TIMEOUT:=$(call qstrip,$(CONFIG_GRUB_TIMEOUT))
|
||||
GRUB_TITLE:=$(call qstrip,$(CONFIG_GRUB_TITLE))
|
||||
|
|
@ -44,7 +51,7 @@ define Build/combined
|
|||
$(INSTALL_DIR) $@.boot/efi/boot
|
||||
$(CP) $(STAGING_DIR_IMAGE)/grub2/boot$(if $(CONFIG_x86_64),x64,ia32).efi $@.boot/efi/boot/
|
||||
)
|
||||
PADDING="1" SIGNATURE="$(IMG_PART_SIGNATURE)" \
|
||||
PADDING="1" PSTORE_ENABLE="$(PSTORE_BLK_ENABLE)" SIGNATURE="$(IMG_PART_SIGNATURE)" \
|
||||
$(if $(filter $(1),efi),GUID="$(IMG_PART_DISKGUID)") $(SCRIPT_DIR)/gen_image_generic.sh \
|
||||
$@ \
|
||||
$(CONFIG_TARGET_KERNEL_PARTSIZE) $@.boot \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue