On 1/8/2024 9:04 PM, Ruipeng Qi wrote:
On Wed, Jan 3, 2024 at 11:27 PM Mukesh Ojha <quic_mojha@xxxxxxxxxxx> wrote:
One more thing, kernel part of minidump, we are calling it APSS Minidump
has limitation of no of entries so it will be difficult to dump
non-continuous regions after a certain number of registration ~200. However,
we do have a solution in downstream kernel for it like to create a big
CMA buffer and register this buffer with Minidump so that whatever gets
dumped in that buffer gets captured during crash and fill up this buffer
and create elf during panic. I think, similar thing you are also doing
with your OS-minidump.
I have just glanced into your implementation of OS-minidump, it
more of relying on basic concept of RAM content preserved
across boot and later reading it through procfs but this basic
stuff is common to pstore(ram) as well and pstore has file system
support why don't you make your driver as one of pstore record and that
way Qualcomm minidump also gets benefited where entire OS-minidump
record gets registered with Qualcomm minidump and we get this on panic
and you get this via pstorefs.
Thanks Mukesh!It is a good suggestion to move OS-minidump forward!
By the way, I have some questions here for which I need your assistance.
Firstly,I can reimplement OS-minidump as one of the pstore records to
dump data. The resulting dump file would contain thousands of
non-contiguous memory regions, each with only the virtual address and
size recorded. As far as I know, Qualcomm's minidump can handle
several memory regions, each with a physical address and size.
This seems to be a difference, and I'm curious as to how you deal with
data dumped by OS-minidump. I would really appreciate it if you could
provide more details on your approach.
What my thought was to think your OS-minidump to be one of pstore record
similar to existing records like console, ftrace, pmsg, dmesg etc.,
If you follow this series patch 11/12 and 12/12 is trying to get the
pstore(ram) record information and registering with minidump and here
the physical address are of the ramoops record addresses.
So, once you are capturing everything inside in a record, all minidump
has to do is get your Os-minidump record physical address and size
and register with minidump.
Secondly, what tools do you use to analyze the dump data, and does it
support crash tool?
Currently, we are trying to capture only pstore ramoops region in text
format and not been using any tool.
Since, Qualcomm minidump is controlled from boot firmware and it can
not be used on non-Qualcomm SoCs so here minidump driver and its usecase
is limited to capture only pstore (ram)records for targets where RAM
content is not guaranteed to be preserved across boots.
So, you can think minidump as one of ramoops backend which will be
dumping all the ramoops regions/records/zones.
+---------+ +---------+ +--------+ +---------+
| console | | pmsg | | ftrace | | dmesg | ...Os-minidump
+---------+ +---------+ +--------+ +---------+
| | | |
| | | |
+------------------------------------------+
|
\ /
+----------------+
(1) |pstore frontends|
+----------------+
|
\ /
+------------------- +
(2) | pstore backend(ram)|
+--------------------+
|
\ /
+---------------+
(3) | qcom_minidump |
+---------------+
Lastly, is Qualcomm minidump compatible with non-Qualcomm SoCs,
and if so, how can one use it?
I already replied it above.
-Mukesh
Best Regards
Ruipeng Qi