[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <m2d30tvatv.fsf@firstfloor.org>
Date: Sun, 07 Oct 2012 21:37:00 -0700
From: Andi Kleen <andi@...stfloor.org>
To: Yasuaki Ishimatsu <isimatu.yasuaki@...fujitsu.com>
Cc: <x86@...nel.org>, <linux-mm@...ck.org>,
<linux-kernel@...r.kernel.org>, <linuxppc-dev@...ts.ozlabs.org>,
<linux-acpi@...r.kernel.org>, <linux-s390@...r.kernel.org>,
<linux-sh@...r.kernel.org>, <linux-ia64@...r.kernel.org>,
<cmetcalf@...era.com>, <sparclinux@...r.kernel.org>,
<rientjes@...gle.com>, <liuj97@...il.com>, <len.brown@...el.com>,
<cl@...ux.com>, <minchan.kim@...il.com>,
<akpm@...ux-foundation.org>, <kosaki.motohiro@...fujitsu.com>,
<wency@...fujitsu.com>
Subject: Re: [PATCH 8/10] memory-hotplug : remove page table of x86_64 architecture
Yasuaki Ishimatsu <isimatu.yasuaki@...fujitsu.com> writes:
> + }
> +
> + /*
> + * We use 2M page, but we need to remove part of them,
> + * so split 2M page to 4K page.
> + */
> + pte = alloc_low_page(&pte_phys);
What happens when the allocation fails?
alloc_low_page seems to be buggy there too, it would __pa a NULL
pointer.
> + if (pud_large(*pud)) {
> + if ((addr & ~PUD_MASK) == 0 && next <= end) {
> + set_pud(pud, __pud(0));
> + pages++;
> + continue;
> + }
> +
> + /*
> + * We use 1G page, but we need to remove part of them,
> + * so split 1G page to 2M page.
> + */
> + pmd = alloc_low_page(&pmd_phys);
Same here
> + __split_large_page((pte_t *)pud, addr, (pte_t *)pmd);
> +
> + spin_lock(&init_mm.page_table_lock);
> + pud_populate(&init_mm, pud, __va(pmd_phys));
> + spin_unlock(&init_mm.page_table_lock);
> + }
> +
> + pmd = map_low_page(pmd_offset(pud, 0));
> + phys_pmd_remove(pmd, addr, end);
> + unmap_low_page(pmd);
> + __flush_tlb_all();
> + }
> + __flush_tlb_all();
This doesn't flush the other CPUs doesn't it?
-Andi
--
ak@...ux.intel.com -- Speaking for myself only
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists