Skip to contentSkip to conversation

IO memory read from /proc/vmcore leads to hang.

DISCUSSION Daniel Walker 3 participants 9 messages Jul 11, 2016 – Jul 25, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi,

I found found that on my Powerpc machine there is some IO memory which will cause the box to hang if I read it. It's a custom device that was added to the board for a special purpose.

I was looking for a way to exclude this memory from the dump, and while doing that I found that kexec makes a list of memory segments that go into the core file. I was wondering why most of the kexec architecture don't appear to exclude device memory like what's listed in /proc/iomem.

Is there a good reason why that's not the case?

Daniel

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

#1 lore raw
Quoted 7 lines · Daniel Walker

Hi,

I found found that on my Powerpc machine there is some IO memory which will cause the box to hang if I read it. It's a custom device that was added to the board for a special purpose.

Quoted 6 lines

I was looking for a way to exclude this memory from the dump, and while doing that I found that kexec makes a list of memory segments that go into the core file. I was wondering why most of the kexec architecture don't appear to exclude device memory like what's listed in /proc/iomem.

Is there a good reason why that's not the case?

Kexec/Kdump is designed to capture entire old kernel's memory that will be available in /proc/vmcore. There is a different userspace tool called 'makedumpfile' (https://sourceforge.net/projects/makedumpfile/), which can be used to exclude certain memory pages from the dump while reading from /proc/vmcore. See if that helps you.

Thanks,
-Mahesh.

Quoted 8 lines

Daniel

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

#2 lore raw
In reply to Daniel Walker

Mahesh, I didn't get your email for some reason . I saw it in the Archives.

makedumpfile doesn't appear to have a way to drop free form memory areas. So I need to drop 00800000 to 00807fff , but I don't see a way to do that. Any other suggestions on how to prevent this hang ?

Quoted 10 lines · Daniel Walker

Hi,

I found found that on my Powerpc machine there is some IO memory which will cause the box to hang if I read it. It's a custom device that was added to the board for a special purpose.

I was looking for a way to exclude this memory from the dump, and while doing that I found that kexec makes a list of memory segments that go into the core file. I was wondering why most of the kexec architecture don't appear to exclude device memory like what's listed in /proc/iomem.

Is there a good reason why that's not the case?

Daniel

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

#3 lore raw

Second kernel should already know that it's not system ram of the first kernel and in that case makedumpfile will not dump that memory. Simple way is to pass additional kernel argument to kexec is when you load the kernel. If it works than you can think how it's better to pass this parameter. Variants might be request_resource() in first kernel or add some logic to kexec tools.

Best regards,
Maxim.

2016-07-20 22:18 GMT+03:00 Daniel Walker <[email protected]>:

Quoted 33 lines

Mahesh, I didn't get your email for some reason . I saw it in the Archives.

makedumpfile doesn't appear to have a way to drop free form memory areas. So I need to drop 00800000 to 00807fff , but I don't see a way to do that. Any other suggestions on how to prevent this hang ?

Quoted 8 lines · Daniel Walker

Hi,

I found found that on my Powerpc machine there is some IO memory which will cause the box to hang if I read it. It's a custom device that was added to the board for a special purpose.

Quoted 8 lines

I was looking for a way to exclude this memory from the dump, and while doing that I found that kexec makes a list of memory segments that go into the core file. I was wondering why most of the kexec architecture don't appear to exclude device memory like what's listed in /proc/iomem.

Is there a good reason why that's not the case?

Daniel

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Signature · 7 lines
Best regards,
Maxim Uvarov

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec
#4 lore raw

There appears to be no code which checks what is or is not System ram,
there is nothing that checks the device tree to see what is IO memory, and nothing reads /proc/iomem .. So AFAIK nothing cares if it's IO memory, or system ram, and there's no method to config things to skip any memory in the system, except in makedumpfile which can skip symbols not IO memory.

Quoted 7 lines · Maxim Uvarov

Second kernel should already know that it's not system ram of the first kernel and in that case makedumpfile will not dump that memory. Simple way is to pass additional kernel argument to kexec is when you load the kernel. If it works than you can think how it's better to pass this parameter. Variants might be request_resource() in first kernel or add some logic to kexec tools.

Quoted 36 lines

Best regards,
Maxim.

2016-07-20 22:18 GMT+03:00 Daniel Walker <[email protected]>:

Quoted 30 lines

Mahesh, I didn't get your email for some reason . I saw it in the Archives.

makedumpfile doesn't appear to have a way to drop free form memory areas. So I need to drop 00800000 to 00807fff , but I don't see a way to do that. Any other suggestions on how to prevent this hang ?

Quoted 7 lines · Daniel Walker

Hi,

I found found that on my Powerpc machine there is some IO memory which will cause the box to hang if I read it. It's a custom device that was added to the board for a special purpose.

Quoted 8 lines

I was looking for a way to exclude this memory from the dump, and while doing that I found that kexec makes a list of memory segments that go into the core file. I was wondering why most of the kexec architecture don't appear to exclude device memory like what's listed in /proc/iomem.

Is there a good reason why that's not the case?

Daniel

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

#5 lore raw

2016-07-21 18:19 GMT+03:00 Daniel Walker <[email protected]>:

Quoted 8 lines

There appears to be no code which checks what is or is not System ram,
there is nothing that checks the device tree to see what is IO memory, and nothing reads /proc/iomem .. So AFAIK nothing cares if it's IO memory, or system ram, and there's no method to config things to skip any memory in the system, except in makedumpfile which can skip symbols not IO memory.

Daniel, unfortunately it's long time for me when I looked to powerpc code. But I just
checked that here:

kexec-tools-2.0.6/kexec/arch/ppc64/kexec-ppc64.c

is probably what you need.

Maxim.

Quoted 56 lines · Maxim Uvarov
Quoted 53 lines

Second kernel should already know that it's not system ram of the first kernel and in that case makedumpfile will not dump that memory. Simple way is to pass additional kernel argument to kexec is when you load the kernel. If it works than you can think how it's better to pass this parameter. Variants might be request_resource() in first kernel or add some logic to kexec tools.

Best regards,
Maxim.

2016-07-20 22:18 GMT+03:00 Daniel Walker <[email protected]>:

Quoted 38 lines

Mahesh, I didn't get your email for some reason . I saw it in the Archives.

makedumpfile doesn't appear to have a way to drop free form memory areas. So
I need to drop 00800000 to 00807fff , but I don't see a way to do that. Any
other suggestions on how to prevent this hang ?

Quoted 15 lines · Daniel Walker

Hi,

I found found that on my Powerpc machine there is some IO memory which will cause the box to hang if I read it. It's a custom device that was added
to the board for a special purpose.

I was looking for a way to exclude this memory from the dump, and while doing that I found that kexec makes a list of memory segments that go into
the core file. I was wondering why most of the kexec architecture don't appear to exclude device memory like what's listed in /proc/iomem.

Quoted 3 lines

Is there a good reason why that's not the case?

Daniel

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Signature · 7 lines
Best regards,
Maxim Uvarov

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec
#6 lore raw
Quoted 8 lines · Maxim Uvarov

2016-07-21 18:19 GMT+03:00 Daniel Walker <[email protected]>:

Quoted 7 lines

There appears to be no code which checks what is or is not System ram,
there is nothing that checks the device tree to see what is IO memory, and nothing reads /proc/iomem .. So AFAIK nothing cares if it's IO memory, or system ram, and there's no method to config things to skip any memory in the system, except in makedumpfile which can skip symbols not IO memory.

Quoted 7 lines

Daniel, unfortunately it's long time for me when I looked to powerpc code. But I just
checked that here:

kexec-tools-2.0.6/kexec/arch/ppc64/kexec-ppc64.c

is probably what you need.

I have a powerpc32 .. In the powerpc64 file I only see something called "reserved-ranges" which may do what I want, however, that doesn't exist in the 32bit version. It appers the reserved-ranges is used by OPAL firmware , which I don't have. There doesn't appear to be anything generic in ppc64 to exclude device IO memory.

Daniel

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

#7 lore raw

I might be wrong but as I remember powerpc32 is deprecated in kexec-tools and all code use ppc64 directory even for 32 bit code...

2016-07-21 23:04 GMT+03:00 Daniel Walker <[email protected]>:

Quoted 29 lines · Maxim Uvarov
Quoted 12 lines

2016-07-21 18:19 GMT+03:00 Daniel Walker <[email protected]>:

Quoted 10 lines

There appears to be no code which checks what is or is not System ram,
there is nothing that checks the device tree to see what is IO memory, and
nothing reads /proc/iomem .. So AFAIK nothing cares if it's IO memory, or system ram, and there's no method to config things to skip any memory in the
system, except in makedumpfile which can skip symbols not IO memory.

Quoted 7 lines

Daniel, unfortunately it's long time for me when I looked to powerpc code. But I just
checked that here:

kexec-tools-2.0.6/kexec/arch/ppc64/kexec-ppc64.c

is probably what you need.

I have a powerpc32 .. In the powerpc64 file I only see something called "reserved-ranges" which may do what I want, however, that doesn't exist in the 32bit version. It appers the reserved-ranges is used by OPAL firmware , which I don't have. There doesn't appear to be anything generic in ppc64 to exclude device IO memory.

Daniel

Signature · 7 lines
Best regards,
Maxim Uvarov

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec
#8 lore raw

This doesn't appear to be the case. As of 2.0.6 ppc32 is still used. I don't see any changesets in the git tree that would change that for later versions.

Quoted 32 lines · Maxim Uvarov

I might be wrong but as I remember powerpc32 is deprecated in kexec-tools and all code use ppc64 directory even for 32 bit code...

2016-07-21 23:04 GMT+03:00 Daniel Walker <[email protected]>:

Quoted 26 lines · Maxim Uvarov
Quoted 10 lines

2016-07-21 18:19 GMT+03:00 Daniel Walker <[email protected]>:

Quoted 9 lines

There appears to be no code which checks what is or is not System ram,
there is nothing that checks the device tree to see what is IO memory, and
nothing reads /proc/iomem .. So AFAIK nothing cares if it's IO memory, or system ram, and there's no method to config things to skip any memory in the
system, except in makedumpfile which can skip symbols not IO memory.

Quoted 7 lines

Daniel, unfortunately it's long time for me when I looked to powerpc code. But I just
checked that here:

kexec-tools-2.0.6/kexec/arch/ppc64/kexec-ppc64.c

is probably what you need.

I have a powerpc32 .. In the powerpc64 file I only see something called "reserved-ranges" which may do what I want, however, that doesn't exist in the 32bit version. It appers the reserved-ranges is used by OPAL firmware , which I don't have. There doesn't appear to be anything generic in ppc64 to exclude device IO memory.

Daniel

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec