From: "Roger Pau Monné" <roger.pau@citrix.com> To: <linux-kernel@vger.kernel.org> Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Juergen Gross <jgross@suse.com>, "Stefano Stabellini" <sstabellini@kernel.org>, Dan Carpenter <dan.carpenter@oracle.com>, Wei Liu <wl@xen.org>, Yan Yankovskyi <yyankovskyi@gmail.com>, <dri-devel@lists.freedesktop.org>, <xen-devel@lists.xenproject.org>, <linux-mm@kvack.org>, David Hildenbrand <david@redhat.com>, Michal Hocko <mhocko@kernel.org>, Dan Williams <dan.j.williams@intel.com> Subject: Re: [PATCH v5 3/3] xen: add helpers to allocate unpopulated memory Date: Tue, 1 Sep 2020 16:45:39 +0200 [thread overview] Message-ID: <20200901144539.GI753@Air-de-Roger> (raw) In-Reply-To: <20200901083326.21264-4-roger.pau@citrix.com> On Tue, Sep 01, 2020 at 10:33:26AM +0200, Roger Pau Monne wrote: > +static int fill_list(unsigned int nr_pages) > +{ > + struct dev_pagemap *pgmap; > + void *vaddr; > + unsigned int i, alloc_pages = round_up(nr_pages, PAGES_PER_SECTION); > + int nid, ret; > + > + pgmap = kzalloc(sizeof(*pgmap), GFP_KERNEL); > + if (!pgmap) > + return -ENOMEM; > + > + pgmap->type = MEMORY_DEVICE_GENERIC; > + pgmap->res.name = "Xen scratch"; > + pgmap->res.flags = IORESOURCE_MEM | IORESOURCE_BUSY; > + > + ret = allocate_resource(&iomem_resource, &pgmap->res, > + alloc_pages * PAGE_SIZE, 0, -1, > + PAGES_PER_SECTION * PAGE_SIZE, NULL, NULL); > + if (ret < 0) { > + pr_err("Cannot allocate new IOMEM resource\n"); > + kfree(pgmap); > + return ret; > + } > + > + nid = memory_add_physaddr_to_nid(pgmap->res.start); I think this is not needed ... > + > +#ifdef CONFIG_XEN_HAVE_PVMMU > + /* > + * memremap will build page tables for the new memory so > + * the p2m must contain invalid entries so the correct > + * non-present PTEs will be written. > + * > + * If a failure occurs, the original (identity) p2m entries > + * are not restored since this region is now known not to > + * conflict with any devices. > + */ > + if (!xen_feature(XENFEAT_auto_translated_physmap)) { > + xen_pfn_t pfn = PFN_DOWN(pgmap->res.start); > + > + for (i = 0; i < alloc_pages; i++) { > + if (!set_phys_to_machine(pfn + i, INVALID_P2M_ENTRY)) { > + pr_warn("set_phys_to_machine() failed, no memory added\n"); > + release_resource(&pgmap->res); > + kfree(pgmap); > + return -ENOMEM; > + } > + } > + } > +#endif > + > + vaddr = memremap_pages(pgmap, nid); ... and NUMA_NO_NODE should be used here instead, as this memory is just fictitious space to map foreign memory, and shouldn't be related to any NUMA node. The following chunk should be folded in, or I can resend. Thanks, Roger. ---8<--- diff --git a/drivers/xen/unpopulated-alloc.c b/drivers/xen/unpopulated-alloc.c index 1b5d157c6977..3b98dc921426 100644 --- a/drivers/xen/unpopulated-alloc.c +++ b/drivers/xen/unpopulated-alloc.c @@ -20,7 +20,7 @@ static int fill_list(unsigned int nr_pages) struct dev_pagemap *pgmap; void *vaddr; unsigned int i, alloc_pages = round_up(nr_pages, PAGES_PER_SECTION); - int nid, ret; + int ret; pgmap = kzalloc(sizeof(*pgmap), GFP_KERNEL); if (!pgmap) @@ -39,8 +39,6 @@ static int fill_list(unsigned int nr_pages) return ret; } - nid = memory_add_physaddr_to_nid(pgmap->res.start); - #ifdef CONFIG_XEN_HAVE_PVMMU /* * memremap will build page tables for the new memory so @@ -65,7 +63,7 @@ static int fill_list(unsigned int nr_pages) } #endif - vaddr = memremap_pages(pgmap, nid); + vaddr = memremap_pages(pgmap, NUMA_NO_NODE); if (IS_ERR(vaddr)) { pr_err("Cannot remap memory range\n"); release_resource(&pgmap->res);
WARNING: multiple messages have this Message-ID (diff)
From: "Roger Pau Monné" <roger.pau@citrix.com> To: <linux-kernel@vger.kernel.org> Cc: Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, David Airlie <airlied@linux.ie>, Yan Yankovskyi <yyankovskyi@gmail.com>, David Hildenbrand <david@redhat.com>, dri-devel@lists.freedesktop.org, Michal Hocko <mhocko@kernel.org>, linux-mm@kvack.org, xen-devel@lists.xenproject.org, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Dan Williams <dan.j.williams@intel.com>, Dan Carpenter <dan.carpenter@oracle.com> Subject: Re: [PATCH v5 3/3] xen: add helpers to allocate unpopulated memory Date: Tue, 1 Sep 2020 16:45:39 +0200 [thread overview] Message-ID: <20200901144539.GI753@Air-de-Roger> (raw) In-Reply-To: <20200901083326.21264-4-roger.pau@citrix.com> On Tue, Sep 01, 2020 at 10:33:26AM +0200, Roger Pau Monne wrote: > +static int fill_list(unsigned int nr_pages) > +{ > + struct dev_pagemap *pgmap; > + void *vaddr; > + unsigned int i, alloc_pages = round_up(nr_pages, PAGES_PER_SECTION); > + int nid, ret; > + > + pgmap = kzalloc(sizeof(*pgmap), GFP_KERNEL); > + if (!pgmap) > + return -ENOMEM; > + > + pgmap->type = MEMORY_DEVICE_GENERIC; > + pgmap->res.name = "Xen scratch"; > + pgmap->res.flags = IORESOURCE_MEM | IORESOURCE_BUSY; > + > + ret = allocate_resource(&iomem_resource, &pgmap->res, > + alloc_pages * PAGE_SIZE, 0, -1, > + PAGES_PER_SECTION * PAGE_SIZE, NULL, NULL); > + if (ret < 0) { > + pr_err("Cannot allocate new IOMEM resource\n"); > + kfree(pgmap); > + return ret; > + } > + > + nid = memory_add_physaddr_to_nid(pgmap->res.start); I think this is not needed ... > + > +#ifdef CONFIG_XEN_HAVE_PVMMU > + /* > + * memremap will build page tables for the new memory so > + * the p2m must contain invalid entries so the correct > + * non-present PTEs will be written. > + * > + * If a failure occurs, the original (identity) p2m entries > + * are not restored since this region is now known not to > + * conflict with any devices. > + */ > + if (!xen_feature(XENFEAT_auto_translated_physmap)) { > + xen_pfn_t pfn = PFN_DOWN(pgmap->res.start); > + > + for (i = 0; i < alloc_pages; i++) { > + if (!set_phys_to_machine(pfn + i, INVALID_P2M_ENTRY)) { > + pr_warn("set_phys_to_machine() failed, no memory added\n"); > + release_resource(&pgmap->res); > + kfree(pgmap); > + return -ENOMEM; > + } > + } > + } > +#endif > + > + vaddr = memremap_pages(pgmap, nid); ... and NUMA_NO_NODE should be used here instead, as this memory is just fictitious space to map foreign memory, and shouldn't be related to any NUMA node. The following chunk should be folded in, or I can resend. Thanks, Roger. ---8<--- diff --git a/drivers/xen/unpopulated-alloc.c b/drivers/xen/unpopulated-alloc.c index 1b5d157c6977..3b98dc921426 100644 --- a/drivers/xen/unpopulated-alloc.c +++ b/drivers/xen/unpopulated-alloc.c @@ -20,7 +20,7 @@ static int fill_list(unsigned int nr_pages) struct dev_pagemap *pgmap; void *vaddr; unsigned int i, alloc_pages = round_up(nr_pages, PAGES_PER_SECTION); - int nid, ret; + int ret; pgmap = kzalloc(sizeof(*pgmap), GFP_KERNEL); if (!pgmap) @@ -39,8 +39,6 @@ static int fill_list(unsigned int nr_pages) return ret; } - nid = memory_add_physaddr_to_nid(pgmap->res.start); - #ifdef CONFIG_XEN_HAVE_PVMMU /* * memremap will build page tables for the new memory so @@ -65,7 +63,7 @@ static int fill_list(unsigned int nr_pages) } #endif - vaddr = memremap_pages(pgmap, nid); + vaddr = memremap_pages(pgmap, NUMA_NO_NODE); if (IS_ERR(vaddr)) { pr_err("Cannot remap memory range\n"); release_resource(&pgmap->res); _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-09-01 14:46 UTC|newest] Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-01 8:33 [PATCH v5 0/3] xen/balloon: fixes for memory hotplug Roger Pau Monne 2020-09-01 8:33 ` [PATCH v5 1/3] xen/balloon: add header guard Roger Pau Monne 2020-09-01 8:33 ` [PATCH v5 2/3] memremap: rename MEMORY_DEVICE_DEVDAX to MEMORY_DEVICE_GENERIC Roger Pau Monne 2020-09-01 8:33 ` Roger Pau Monne 2020-09-01 8:54 ` Pankaj Gupta 2020-09-01 8:54 ` Pankaj Gupta 2020-09-01 8:54 ` Pankaj Gupta 2020-09-24 19:02 ` Dan Williams 2020-09-24 19:02 ` Dan Williams 2020-09-24 19:02 ` Dan Williams 2020-09-24 19:02 ` Dan Williams 2020-09-01 8:33 ` [PATCH v5 3/3] xen: add helpers to allocate unpopulated memory Roger Pau Monne 2020-09-01 8:33 ` Roger Pau Monne 2020-09-01 8:33 ` Roger Pau Monne 2020-09-01 13:37 ` kernel test robot 2020-09-01 13:37 ` kernel test robot 2020-09-01 14:45 ` Roger Pau Monné [this message] 2020-09-01 14:45 ` Roger Pau Monné 2020-09-01 14:54 ` Jürgen Groß 2020-09-01 14:54 ` Jürgen Groß 2020-09-03 15:30 ` Jürgen Groß 2020-09-03 15:30 ` Jürgen Groß 2020-09-03 16:38 ` Roger Pau Monné 2020-09-03 16:38 ` Roger Pau Monné 2020-09-04 7:00 ` Jürgen Groß 2020-09-04 7:00 ` Jürgen Groß 2020-09-04 8:42 ` Roger Pau Monné 2020-09-04 8:42 ` Roger Pau Monné 2020-09-04 12:40 ` Jürgen Groß 2020-09-04 12:40 ` Jürgen Groß 2020-09-04 12:40 ` [PATCH v5 0/3] xen/balloon: fixes for memory hotplug Jürgen Groß
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200901144539.GI753@Air-de-Roger \ --to=roger.pau@citrix.com \ --cc=airlied@linux.ie \ --cc=boris.ostrovsky@oracle.com \ --cc=dan.carpenter@oracle.com \ --cc=dan.j.williams@intel.com \ --cc=daniel@ffwll.ch \ --cc=david@redhat.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=jgross@suse.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mhocko@kernel.org \ --cc=oleksandr_andrushchenko@epam.com \ --cc=sstabellini@kernel.org \ --cc=wl@xen.org \ --cc=xen-devel@lists.xenproject.org \ --cc=yyankovskyi@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.