RE: (2) [RESEND PATCH 00/10] memblock: introduce memsize showing reserved memory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>On Mon, May 27, 2024 at 10:35:04AM +0900, Jaewon Kim wrote:

>> >On Fri, May 24, 2024 at 06:07:15PM +0900, Jaewon Kim wrote:

>> >> >On Tue, May 21, 2024 at 07:17:53PM +0900, Jaewon Kim wrote:

>> >> >> >On Tue, May 21, 2024 at 11:53:29AM +0900, Jaewon Kim wrote:

>> >> >> >> 

>> >> >> >> This is actually RESEND as it was introduced 2 years ago.

>> >> >> >> Please refer to https://lore.kernel.org/linux-mm/YkQB6Ah603yPR3qf@xxxxxxxxxx/#t

>> >> >> >> 

>> >> >> >> > But you never provided details about *why* you want this information exposed.

>> >> >> >> 

>> >> >> >> For your question, I'd like to say ;

>> >> >> >> We can see the same format and exact information between different version of kernel status.

>> >> >> >> 

>> >> >> >> 1) Internally we can check if the reserved memory changes.

>> >> >> >> 2) Externally we can communicate between chipset vendors and OEM, with a same format.

>> >> >> >

>> >> >> >Why the existing debugfs interface is not sufficient?

>> >> >> 

>> >> >> debugfs/memblock/memory & debugfs/memblock/reserved have changed its

>> >> >> format but still does not show name, reusable, kernel size.  If memory is

>> >> >> reserved from memblock, and did not freed back to memblock. Memblock does

>> >> >> not know even after the memory is freed to system.  I think a simple

>> >> >> debug interface is needed to easily communicate with others or compare

>> >> >> different SW releases.

>> >> >

>> >> >I still don't understand what problem are you trying to solve with these

>> >> >patches. 

>> >> 

>> >> I think we need a common API to easily see the reserved memory status.

>> >> Through MemTotal on /proc/meminfo, we can only see only the total size

>> >> of reserved memory. We don't how big kernel init size within the the

>> >> total size. I think this really helps to compare different kernel and

>> >> communicate with others.

>> >

>> > As was already mentioned on this thread, something like

>> >

>> > $ dmesg | grep Memory:

>> > [    0.000000] Memory: 8058204K/8388608K available (35392K kernel code, 8706K rwdata, 23320K rodata, 16832K init, 848K bss, 297636K reserved, 32768K cma-reserved)

>> >

>> > already shows init, rodata and bss sizes.

>> >

>> > And size -A vmlinux provides detailed breakdown of the kernel image into

>> > sections.

>> > 

>> >> I think the debugfs API or early boot log shows quite much information

>> >> for the reserved memory information defined in device tree. But it is

>> >> difficult to see after boot, as the boot log already was removed ouf of

>> >> the kernel log buffer.

>> >

>> > Kernel log is persisted, isn't it?

>> 

>> Early kernel log is removed after other log is written to the log buffer. I may

>> not be able to get it, after waiting for the target device is ready to be

>> connected from host PC. I wanted to keep that information.

>> 

>> Actually the commit aeb9267eb6b1 ("of: reserved-mem: print out reserved-mem

>> details during boot") seems to show most of information if I can get the early

>> boot log.

>

>Unless the kernel log is stored on the target you need to redirect

>target's console to a file on the host, then all of the boot log will be

>accessible on the host.

>

>Then with memblock=debug kernel parameter you'll be able to get much more

>information about memblock reservations.

>> If you don't mind, let me ask one question. How can we easily find the undefined

>> DRAM memory regions in kernel persective. Do we have to look into the debugfs 

>> memblock/memory and combine the information with the kernel log information?

>> 

>> case1) Actual DRAM is mapped as two regions like,

>>    2GB @ 0x00000000_80000000 and 6GB @ 0x00000008_80000000,

>>    how can we find the hole, 0x00000000_80000000--0x00000008_7FFFFFFF ?

>

>The actual memory banks reported to Linux are shown at

>debugfs/memblock/memory

>> case2) If some region is already carved out at bootloader stage like.

>>    0x00000000_81200000-0x00000000_812FFFFF was not initinally on memblock.

>>    0x00000000_80000000-0x00000000_81200000 was removed as no-map through device tree.

>>    how can we find the hole, 0x00000000_81200000-0x00000000_812FFFFF ?

>

>nomap regions are shown in debugfs/memblock/memory as NOMAP.


Oh good thing, I did not know this patch. Thanks.


By the way, I've tried to get memblock/memory and kernel log from a device based on

v6.6.17 kernel device, to see upstream patches above.


memblok/memory does not show region for 0x00000000_80000000..0x0x00000000_8195ffff.

   0: 0x0000000081960000..0x00000000819fffff    0 NONE


The kernel log shows information for 0x0000000080000000..0x00000000813fffff, but

we don't see information for 0x0000000081400000..0x000000008195ffff from kernel log.

(I removed the name.)

  

<6>[    0.000000][    T0] OF: reserved mem: 0x0000000080000000..0x0000000080dfffff (14336 KiB) nomap non-reusable AAA

<6>[    0.000000][    T0] OF: reserved mem: 0x0000000080e00000..0x00000000811fffff (4096 KiB) nomap non-reusable BBB

<6>[    0.000000][    T0] OF: reserved mem: 0x0000000081200000..0x00000000813fffff (2048 KiB) nomap non-reusable CCC

<6>[    0.000000][    T0] OF: reserved mem: 0x0000000081a00000..0x0000000081a3ffff (256 KiB) nomap non-reusable DD


A smart parser should gather these kernel log and memblock/memory log and should show

log like my memsize logic shows below.


0x0000000081400000-0x0000000081960000 0x00560000 (    5504 KB ) nomap unusable unknown


Thank you

Jaewon


>

>-- 

>Sincerely yours,

>Mike.


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux