Re: [PATCH v1 1/2] powerpc/pseries/hotplug-memory: stop checking is_mem_section_removable()

From: David Hildenbrand
Date: Thu Apr 09 2020 - 03:32:54 EST


> It's also not very pretty in dmesg.
>
> Before:
>
> pseries-hotplug-mem: Attempting to hot-add 10 LMB(s)
> pseries-hotplug-mem: Memory hot-add failed, removing any added LMBs
> dlpar: Could not handle DLPAR request "memory add count 10"
>

Thanks for running it through the mill.

Here you test "hotadd", below you test "hot-remove". But yeah, there is
a change in the amount of dmesg.

> After:
>
> pseries-hotplug-mem: Attempting to hot-remove 10 LMB(s)
> page:c00c000001ca8200 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0xc00000072a080180
> flags: 0x7ffff000000200(slab)
> raw: 007ffff000000200 c00c000001cffd48 c000000781c51410 c000000793327580
> raw: c00000072a080180 0000000001550001 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000001cc4a80 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0xc00000079b110080
> flags: 0x7ffff000000000()
> raw: 007ffff000000000 5deadbeef0000100 5deadbeef0000122 0000000000000000
> raw: c00000079b110080 0000000000000000 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000001d08200 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0xc00000074208ff00
> flags: 0x7ffff000000200(slab)
> raw: 007ffff000000200 c000000781c5f150 c00c000001d37f88 c000000798a24880
> raw: c00000074208ff00 0000000001550002 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000001d40140 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0xc000000750059c00
> flags: 0x7ffff000000200(slab)
> raw: 007ffff000000200 c00c000001dfcfc8 c00c000001d3c288 c0000007851c2d00
> raw: c000000750059c00 0000000001000003 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000001d9c000 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0xc000000002370080
> flags: 0x7ffff000000000()
> raw: 007ffff000000000 5deadbeef0000100 5deadbeef0000122 0000000000000000
> raw: c000000002370080 0000000000000000 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000001dc0200 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0xc000000002370080
> flags: 0x7ffff000000000()
> raw: 007ffff000000000 5deadbeef0000100 5deadbeef0000122 0000000000000000
> raw: c000000002370080 0000000000000000 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000001e00000 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0x0
> flags: 0x7ffff000000200(slab)
> raw: 007ffff000000200 5deadbeef0000100 5deadbeef0000122 c0000007a801f500
> raw: 0000000000000000 0000000008000800 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000001e40440 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0x0
> flags: 0x7ffff000000200(slab)
> raw: 007ffff000000200 5deadbeef0000100 5deadbeef0000122 c0000007a801e380
> raw: 0000000000000000 0000000000400040 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000001e80000 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0xc0000007a0000640
> flags: 0x7ffff000000200(slab)
> raw: 007ffff000000200 c00c000001e5af48 c00c000001e80408 c000000f42d00a00
> raw: c0000007a0000640 00000000066600a2 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000003c89d40 refcount:2 mapcount:1 mapping:0000000018c4a547 index:0x10a41
> anon flags: 0x17ffff000080024(uptodate|active|swapbacked)
> raw: 017ffff000080024 5deadbeef0000100 5deadbeef0000122 c0000007986b03c9
> raw: 0000000000010a41 0000000000000000 0000000200000000 c00000000340b000
> page dumped because: unmovable page
> page->mem_cgroup:c00000000340b000
> page:c00c000003cc0000 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0xc000000f3000fd38
> flags: 0x17ffff000000200(slab)
> raw: 017ffff000000200 c000000f3c911890 c000000f3c911890 c00000079fffd980
> raw: c000000f3000fd38 0000000000700003 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000003d00000 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0xc0000007a2ec0000
> flags: 0x17ffff000000000()
> raw: 017ffff000000000 5deadbeef0000100 5deadbeef0000122 0000000000000000
> raw: c0000007a2ec0000 0000000000000000 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000003e2c000 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0xc000000f8b008400
> flags: 0x27ffff000000200(slab)
> raw: 027ffff000000200 c000000f8e000190 c000000f8e000190 c0000007a801e380
> raw: c000000f8b008400 0000000000400038 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> page:c00c000003fec000 refcount:1 mapcount:0 mapping:0000000018c4a547 index:0x0
> flags: 0x37ffff000000000()
> raw: 037ffff000000000 5deadbeef0000100 5deadbeef0000122 0000000000000000
> raw: 0000000000000000 0000000000000000 00000001ffffffff 0000000000000000
> page dumped because: unmovable page
> pseries-hotplug-mem: Memory hot-remove failed, adding LMB's back
> dlpar: Could not handle DLPAR request "memory remove count 10"
>
>
>
> It looks like set_migratetype_isolate() and start_isolate_page_range()
> can be told not to report those warnings, but we're just calling
> device_offline() which doesn't let us specify that.

Yeah, but these messages can easily pop up (to a more limited degree)
with the current code as well, as checking for movable pages without
isolating the page range gives you no guarantees that no unmovable data
will end up on the lmb until you offline it. It's simply racy.

I discussed this output with Michal when we changed the
/sys/devices/system/memory/memoryX/removable behavior, and he had the
opinion that dmesg (debug) output should not really be an issue.

We could make this output

a) configurable at runtime and let powerpc code disable it while calling
device_offline(). So user space attempts will still trigger the messages

b) configurable at compile time


--
Thanks,

David / dhildenb