Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7fd6641d authored by Balbir Singh's avatar Balbir Singh Committed by Michael Ellerman
Browse files

powerpc/powernv/memtrace: Let the arch hotunplug code flush cache



Don't do this via custom code, instead now that we have support in the
arch hotplug/hotunplug code, rely on those routines to do the right
thing.

The existing flush doesn't work because it uses ppc64_caches.l1d.size
instead of ppc64_caches.l1d.line_size.

Fixes: 9d5171a8 ("powerpc/powernv: Enable removal of memory for in memory tracing")
Signed-off-by: default avatarBalbir Singh <bsingharora@gmail.com>
Reviewed-by: default avatarRashmica Gupta <rashmica.g@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent fb5924fd
Loading
Loading
Loading
Loading
+0 −17
Original line number Diff line number Diff line
@@ -82,19 +82,6 @@ static const struct file_operations memtrace_fops = {
	.open	= simple_open,
};

static void flush_memory_region(u64 base, u64 size)
{
	unsigned long line_size = ppc64_caches.l1d.size;
	u64 end = base + size;
	u64 addr;

	base = round_down(base, line_size);
	end = round_up(end, line_size);

	for (addr = base; addr < end; addr += line_size)
		asm volatile("dcbf 0,%0" : "=r" (addr) :: "memory");
}

static int check_memblock_online(struct memory_block *mem, void *arg)
{
	if (mem->state != MEM_ONLINE)
@@ -132,10 +119,6 @@ static bool memtrace_offline_pages(u32 nid, u64 start_pfn, u64 nr_pages)
	walk_memory_range(start_pfn, end_pfn, (void *)MEM_OFFLINE,
			  change_memblock_state);

	/* RCU grace period? */
	flush_memory_region((u64)__va(start_pfn << PAGE_SHIFT),
			    nr_pages << PAGE_SHIFT);

	lock_device_hotplug();
	remove_memory(nid, start_pfn << PAGE_SHIFT, nr_pages << PAGE_SHIFT);
	unlock_device_hotplug();