Hi all, After merging the akpm-current tree, today's linux-next build (x86_64 allmodconfig) failed like this: drivers/xen/unpopulated-alloc.c: In function 'fill_list': drivers/xen/unpopulated-alloc.c:30:9: error: 'struct dev_pagemap' has no member named 'res'; did you mean 'ref'? 30 | pgmap->res.name = "Xen scratch"; | ^~~ | ref drivers/xen/unpopulated-alloc.c:31:9: error: 'struct dev_pagemap' has no member named 'res'; did you mean 'ref'? 31 | pgmap->res.flags = IORESOURCE_MEM | IORESOURCE_BUSY; | ^~~ | ref drivers/xen/unpopulated-alloc.c:33:51: error: 'struct dev_pagemap' has no member named 'res'; did you mean 'ref'? 33 | ret = allocate_resource(&iomem_resource, &pgmap->res, | ^~~ | ref In file included from include/asm-generic/memory_model.h:5, from arch/x86/include/asm/page.h:76, from arch/x86/include/asm/thread_info.h:12, from include/linux/thread_info.h:38, from arch/x86/include/asm/preempt.h:7, from include/linux/preempt.h:78, from include/linux/spinlock.h:51, from include/linux/mmzone.h:8, from include/linux/gfp.h:6, from drivers/xen/unpopulated-alloc.c:3: drivers/xen/unpopulated-alloc.c:53:35: error: 'struct dev_pagemap' has no member named 'res'; did you mean 'ref'? 53 | xen_pfn_t pfn = PFN_DOWN(pgmap->res.start); | ^~~ include/linux/pfn.h:20:23: note: in definition of macro 'PFN_DOWN' 20 | #define PFN_DOWN(x) ((x) >> PAGE_SHIFT) | ^ drivers/xen/unpopulated-alloc.c:58:30: error: 'struct dev_pagemap' has no member named 'res'; did you mean 'ref'? 58 | release_resource(&pgmap->res); | ^~~ | ref drivers/xen/unpopulated-alloc.c:69:28: error: 'struct dev_pagemap' has no member named 'res'; did you mean 'ref'? 69 | release_resource(&pgmap->res); | ^~~ | ref fs/fuse/virtio_fs.c: In function 'virtio_fs_setup_dax': fs/fuse/virtio_fs.c:838:9: error: 'struct dev_pagemap' has no member named 'res'; did you mean 'ref'? 838 | pgmap->res = (struct resource){ | ^~~ | ref Caused by commit b3e022c5a68c ("mm/memremap_pages: convert to 'struct range'") interacting with commit 9e2369c06c8a ("xen: add helpers to allocate unpopulated memory") from Linus' tree (in v5.9-rc4) and commit 7e833303db20 ("virtiofs: set up virtio_fs dax_device") from the fuse tree. I have added the following patch which may require more work but at least makes it all build. From: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Date: Tue, 8 Sep 2020 20:00:20 +1000 Subject: [PATCH] merge fix up for "mm/memremap_pages: convert to 'struct range'" Signed-off-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> --- drivers/xen/unpopulated-alloc.c | 15 +++++++++------ fs/fuse/virtio_fs.c | 3 +-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/xen/unpopulated-alloc.c b/drivers/xen/unpopulated-alloc.c index 3b98dc921426..9fa7ce330628 100644 --- a/drivers/xen/unpopulated-alloc.c +++ b/drivers/xen/unpopulated-alloc.c @@ -18,6 +18,7 @@ static unsigned int list_count; static int fill_list(unsigned int nr_pages) { struct dev_pagemap *pgmap; + struct resource res; void *vaddr; unsigned int i, alloc_pages = round_up(nr_pages, PAGES_PER_SECTION); int ret; @@ -27,10 +28,10 @@ static int fill_list(unsigned int nr_pages) return -ENOMEM; pgmap->type = MEMORY_DEVICE_GENERIC; - pgmap->res.name = "Xen scratch"; - pgmap->res.flags = IORESOURCE_MEM | IORESOURCE_BUSY; + res.name = "Xen scratch"; + res.flags = IORESOURCE_MEM | IORESOURCE_BUSY; - ret = allocate_resource(&iomem_resource, &pgmap->res, + ret = allocate_resource(&iomem_resource, &res, alloc_pages * PAGE_SIZE, 0, -1, PAGES_PER_SECTION * PAGE_SIZE, NULL, NULL); if (ret < 0) { @@ -38,6 +39,8 @@ static int fill_list(unsigned int nr_pages) kfree(pgmap); return ret; } + pgmap->range.start = res.start; + pgmap->range.end = res.end; #ifdef CONFIG_XEN_HAVE_PVMMU /* @@ -50,12 +53,12 @@ static int fill_list(unsigned int nr_pages) * conflict with any devices. */ if (!xen_feature(XENFEAT_auto_translated_physmap)) { - xen_pfn_t pfn = PFN_DOWN(pgmap->res.start); + xen_pfn_t pfn = PFN_DOWN(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); + release_resource(&res); kfree(pgmap); return -ENOMEM; } @@ -66,7 +69,7 @@ static int fill_list(unsigned int nr_pages) vaddr = memremap_pages(pgmap, NUMA_NO_NODE); if (IS_ERR(vaddr)) { pr_err("Cannot remap memory range\n"); - release_resource(&pgmap->res); + release_resource(&res); kfree(pgmap); return PTR_ERR(vaddr); } diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c index da3ede268604..8f27478497fa 100644 --- a/fs/fuse/virtio_fs.c +++ b/fs/fuse/virtio_fs.c @@ -835,8 +835,7 @@ static int virtio_fs_setup_dax(struct virtio_device *vdev, struct virtio_fs *fs) * initialize a struct resource from scratch (only the start * and end fields will be used). */ - pgmap->res = (struct resource){ - .name = "virtio-fs dax window", + pgmap->range = (struct range){ .start = (phys_addr_t) cache_reg.addr, .end = (phys_addr_t) cache_reg.addr + cache_reg.len - 1, }; -- 2.28.0 -- Cheers, Stephen Rothwell
Attachment:
pgpgLaLMJR5ob.pgp
Description: OpenPGP digital signature