summaryrefslogtreecommitdiff
path: root/makedumpfile.conf
diff options
context:
space:
mode:
Diffstat (limited to 'makedumpfile.conf')
-rw-r--r--makedumpfile.conf149
1 files changed, 149 insertions, 0 deletions
diff --git a/makedumpfile.conf b/makedumpfile.conf
new file mode 100644
index 0000000..cd0e4ab
--- /dev/null
+++ b/makedumpfile.conf
@@ -0,0 +1,149 @@
+## Filter config file
+##
+## Description:
+## Configuration file to specify filter commands to filter out desired
+## kernel data from vmcore. It supports erasing of symbol data and
+## it's members of any data type. In case of filtering of data pointed by
+## void * pointer, user needs to provide size to filter out.
+##
+## Please refer to manpage makedumpfile.conf(5) for more details.
+##
+##
+## - Module section
+## =========================================================
+## Syntax:
+## [ModuleName]
+##
+## Define the module section where the symbols specified in subsequent erase
+## commands belong to. The section name is a kernel module name (including
+## vmlinux). The unnamed section defaults to [vmlinux] section.
+##
+## NOTE: There should not be any whitespaces before or after the ModuleName.
+##
+## e.g.
+## [vmlinux] # Symbols in erase command belongs to main kernel (vmlinux)
+## erase modules
+## erase cred_jar.name
+## erase cred_jar.name size 10
+## erase cred_jar.array
+## erase vmlist.addr nullify
+##
+## [z90crypt] # Symbols in erase command belongs to kernel module z90crypt
+## erase ap_device_list
+##
+## # erase entire CPRBX structure
+## erase static_cprbx
+##
+##
+## - To erase kernel data referred through a kernel Symbol
+## =========================================================
+## Syntax:
+## erase <Symbol>[.member[...]] [size <SizeValue>[K|M]]
+## erase <Symbol>[.member[...]] [size <SizeSymbol>]
+## erase <Symbol>[.member[...]] [nullify]]
+##
+## where
+## <Symbol>
+## A variable name from the kernel or module, which is part of
+## global symbols '/proc/kallsyms'.
+## <SizeValue>
+## Integer value that specifies size of data to be erased. The
+## suffixes 'K' and 'M' can be used to specify kilobytes and
+## megabytes respectively where, K means 1024 bytes and M means
+## 1024 ^ 2 = 1048576 bytes.
+## <SizeSymbol>
+## A simple axpression of the form <Symbol>[.member[...]] that
+## denotes a symbol which contains a positive integer value as a
+## size of the data in bytes to be erased.
+##
+## Filter out the specified size of the data referred by symbol/member.
+## If size option is not provided then the size of <Symbol> will be calculated
+## according to it's data type. For 'char *' data type, string length will be
+## determined with an upper limit of 1024.
+##
+## If specified <Symbol> is of type 'void *', then user needs to provide
+## either 'size' or 'nullify' option. Otherwise erase command will not have
+## any effect.
+##
+## The option 'nullify' will work only if filter symbol/member is a pointer and
+## is used to set NULL value to the pointer type symbol/member.
+##
+## NOTE: Please note that by nullifying pointer values will affect the
+## debug ability of created DUMPFILE. Use 'nullify' option only when size of
+## data to be filter out is not known e.g. data pointed by 'void *'.
+##
+## e.g.
+## [vmlinux]
+## erase modules
+## erase cred_jar.name
+## erase cred_jar.name size 10
+## erase cred_jar.array
+## erase vmlist.addr nullify
+##
+##
+## - To filter kernel data referred through Array/list_head Symbol
+## =================================================================
+## Syntax:
+## for <id> in { <ArrayVar> |
+## <StructVar> via <NextMember> |
+## <ListHeadVar> within <StructName>:<ListHeadMember> }
+## erase <id>[.MemberExpression] [size <SizeExpression>|nullify]
+## [erase <id> ...]
+## [...]
+## endfor
+##
+## where
+## <id>
+## Arbitrary name used to temporarily point to elements of the
+## list. Referred as iteration variable.
+## <ArrayVar>
+## A simple expression in the form of <Symbol>[.member[...]] that
+## results into an array variable.
+## <StructVar>
+## A simple expression in the form of <Symbol>[.member[...]] that
+## results into a variable that points to a structure.
+## <NextMember>
+## Member within <StructVar> that points to an object of same
+## type that of <StructVar>.
+## <ListHeadVar>
+## A simple expression in the form of <Symbol>[.member[...]] that
+## results into a variable of type struct list_head.
+## <StructName>
+## Name of the structure type that can be traversed using
+## HEAD variable <ListHeadVar> and contains a member named
+## <ListHeadMember>.
+## <ListHeadMember>
+## Name of a member in <StructName>, of type struct list_head.
+## <MemberExpression>
+## A simple expression in the form of [.member[...]] to specify a
+## member or component of a member in <ArrayVar>, <StructVar> or
+## <StructName>.
+## <SizeExpression>
+## One of the following:
+## - An integer value.
+## - <Symbol>[.member[...]]
+## - <id>[.MemberExpresion]
+##
+## The <ArrayVar>, <StructVar> and <ListHeadVar> is also referred as LIST
+## entry
+##
+## Filter out the specified size of the data accessible through LIST entries.
+## e.g.
+## [vmlinux]
+## # Traversing <ListHeadVar>
+## for m in modules.next within module:list
+## erase m.holders_dir.name
+## endfor
+## # Traversing <ArrayVar>
+## for lc in lowcore_ptr
+## erase lc
+## endfor
+## # Traversing link-list
+## for cj in cred_jar via slabp_cache
+## erase cj.name
+## endfor
+## [z90crypt]
+## for ap_dev in ap_device_list.next within ap_device:list
+## erase ap_dev.reply.message size ap_dev.reply.length
+## endfor
+##