From: Oliver <oohall@gmail.com> To: kbuild test robot <lkp@intel.com> Cc: linux-kernel@vger.kernel.org, kbuild-all@01.org, "linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org> Subject: Re: [PATCH 2/3] libnvdimm, pfn, dax: show supported dax/pfn region alignments in sysfs Date: Tue, 15 Aug 2017 16:46:36 +1000 [thread overview] Message-ID: <CAOSf1CGa3BBmDZ5KjsK0fsT8e7uN10oTSqKNyognAe+8hSDKVQ@mail.gmail.com> (raw) In-Reply-To: <201708151333.nLya1R9C%fengguang.wu@intel.com> On Tue, Aug 15, 2017 at 4:02 PM, kbuild test robot <lkp@intel.com> wrote: > Hi Oliver, > > [auto build test ERROR on linux-nvdimm/libnvdimm-for-next] > [also build test ERROR on v4.13-rc5 next-20170811] > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] > > url: https://github.com/0day-ci/linux/commits/Dan-Williams/libnvdimm-export-supported-page-size-alignments/20170815-105258 > base: https://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git libnvdimm-for-next > config: powerpc-allmodconfig (attached as .config) > compiler: powerpc64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 > reproduce: > wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # save the attached .config to linux build tree > make.cross ARCH=powerpc > > All error/warnings (new ones prefixed by >>): > > In file included from include/linux/mm.h:446:0, > from include/linux/memremap.h:3, > from drivers//nvdimm/pfn_devs.c:13: > drivers//nvdimm/pfn_devs.c: In function 'nd_pfn_supported_alignments': >>> include/linux/huge_mm.h:83:24: error: initializer element is not constant > #define HPAGE_PMD_SIZE ((1UL) << HPAGE_PMD_SHIFT) > ^ >>> drivers//nvdimm/pfn_devs.c:123:3: note: in expansion of macro 'HPAGE_PMD_SIZE' > HPAGE_PMD_SIZE, > ^~~~~~~~~~~~~~ > include/linux/huge_mm.h:83:24: note: (near initialization for 'supported_alignments[1]') > #define HPAGE_PMD_SIZE ((1UL) << HPAGE_PMD_SHIFT) > ^ >>> drivers//nvdimm/pfn_devs.c:123:3: note: in expansion of macro 'HPAGE_PMD_SIZE' > HPAGE_PMD_SIZE, > ^~~~~~~~~~~~~~ > -- > In file included from include/linux/mm.h:446:0, > from include/linux/memremap.h:3, > from drivers/nvdimm/pfn_devs.c:13: > drivers/nvdimm/pfn_devs.c: In function 'nd_pfn_supported_alignments': >>> include/linux/huge_mm.h:83:24: error: initializer element is not constant > #define HPAGE_PMD_SIZE ((1UL) << HPAGE_PMD_SHIFT) > ^ > drivers/nvdimm/pfn_devs.c:123:3: note: in expansion of macro 'HPAGE_PMD_SIZE' > HPAGE_PMD_SIZE, > ^~~~~~~~~~~~~~ > include/linux/huge_mm.h:83:24: note: (near initialization for 'supported_alignments[1]') > #define HPAGE_PMD_SIZE ((1UL) << HPAGE_PMD_SHIFT) > ^ > drivers/nvdimm/pfn_devs.c:123:3: note: in expansion of macro 'HPAGE_PMD_SIZE' > HPAGE_PMD_SIZE, > ^~~~~~~~~~~~~~ > > vim +/HPAGE_PMD_SIZE +123 drivers//nvdimm/pfn_devs.c > > > 13 #include <linux/memremap.h> > 14 #include <linux/blkdev.h> > 15 #include <linux/device.h> > 16 #include <linux/genhd.h> > 17 #include <linux/sizes.h> > 18 #include <linux/slab.h> > 19 #include <linux/fs.h> > 20 #include <linux/mm.h> > 21 #include "nd-core.h" > 22 #include "pfn.h" > 23 #include "nd.h" > 24 > 25 static void nd_pfn_release(struct device *dev) > 26 { > 27 struct nd_region *nd_region = to_nd_region(dev->parent); > 28 struct nd_pfn *nd_pfn = to_nd_pfn(dev); > 29 > 30 dev_dbg(dev, "%s\n", __func__); > 31 nd_detach_ndns(&nd_pfn->dev, &nd_pfn->ndns); > 32 ida_simple_remove(&nd_region->pfn_ida, nd_pfn->id); > 33 kfree(nd_pfn->uuid); > 34 kfree(nd_pfn); > 35 } > 36 > 37 static struct device_type nd_pfn_device_type = { > 38 .name = "nd_pfn", > 39 .release = nd_pfn_release, > 40 }; > 41 > 42 bool is_nd_pfn(struct device *dev) > 43 { > 44 return dev ? dev->type == &nd_pfn_device_type : false; > 45 } > 46 EXPORT_SYMBOL(is_nd_pfn); > 47 > 48 struct nd_pfn *to_nd_pfn(struct device *dev) > 49 { > 50 struct nd_pfn *nd_pfn = container_of(dev, struct nd_pfn, dev); > 51 > 52 WARN_ON(!is_nd_pfn(dev)); > 53 return nd_pfn; > 54 } > 55 EXPORT_SYMBOL(to_nd_pfn); > 56 > 57 static ssize_t mode_show(struct device *dev, > 58 struct device_attribute *attr, char *buf) > 59 { > 60 struct nd_pfn *nd_pfn = to_nd_pfn_safe(dev); > 61 > 62 switch (nd_pfn->mode) { > 63 case PFN_MODE_RAM: > 64 return sprintf(buf, "ram\n"); > 65 case PFN_MODE_PMEM: > 66 return sprintf(buf, "pmem\n"); > 67 default: > 68 return sprintf(buf, "none\n"); > 69 } > 70 } > 71 > 72 static ssize_t mode_store(struct device *dev, > 73 struct device_attribute *attr, const char *buf, size_t len) > 74 { > 75 struct nd_pfn *nd_pfn = to_nd_pfn_safe(dev); > 76 ssize_t rc = 0; > 77 > 78 device_lock(dev); > 79 nvdimm_bus_lock(dev); > 80 if (dev->driver) > 81 rc = -EBUSY; > 82 else { > 83 size_t n = len - 1; > 84 > 85 if (strncmp(buf, "pmem\n", n) == 0 > 86 || strncmp(buf, "pmem", n) == 0) { > 87 nd_pfn->mode = PFN_MODE_PMEM; > 88 } else if (strncmp(buf, "ram\n", n) == 0 > 89 || strncmp(buf, "ram", n) == 0) > 90 nd_pfn->mode = PFN_MODE_RAM; > 91 else if (strncmp(buf, "none\n", n) == 0 > 92 || strncmp(buf, "none", n) == 0) > 93 nd_pfn->mode = PFN_MODE_NONE; > 94 else > 95 rc = -EINVAL; > 96 } > 97 dev_dbg(dev, "%s: result: %zd wrote: %s%s", __func__, > 98 rc, buf, buf[len - 1] == '\n' ? "" : "\n"); > 99 nvdimm_bus_unlock(dev); > 100 device_unlock(dev); > 101 > 102 return rc ? rc : len; > 103 } > 104 static DEVICE_ATTR_RW(mode); > 105 > 106 static ssize_t align_show(struct device *dev, > 107 struct device_attribute *attr, char *buf) > 108 { > 109 struct nd_pfn *nd_pfn = to_nd_pfn_safe(dev); > 110 > 111 return sprintf(buf, "%ld\n", nd_pfn->align); > 112 } > 113 > 114 static const unsigned long *nd_pfn_supported_alignments(void) > 115 { > 116 /* > 117 * This needs to be a local variable because the *_SIZE macros > 118 * aren't always constants. > 119 */ I probably should have been clearer, "local" here really means "non-static". Otherwise the array could have been made a global. > 120 static const unsigned long supported_alignments[] = { > 121 PAGE_SIZE, > 122 #ifdef CONFIG_TRANSPARENT_HUGEPAGE > > 123 HPAGE_PMD_SIZE, > 124 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD > 125 HPAGE_PUD_SIZE, > 126 #endif > 127 #endif > 128 0, > 129 }; > 130 > 131 return supported_alignments; > 132 } > 133 > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm
WARNING: multiple messages have this Message-ID (diff)
From: Oliver <oohall@gmail.com> To: kbuild test robot <lkp@intel.com> Cc: Dan Williams <dan.j.williams@intel.com>, kbuild-all@01.org, "linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/3] libnvdimm, pfn, dax: show supported dax/pfn region alignments in sysfs Date: Tue, 15 Aug 2017 16:46:36 +1000 [thread overview] Message-ID: <CAOSf1CGa3BBmDZ5KjsK0fsT8e7uN10oTSqKNyognAe+8hSDKVQ@mail.gmail.com> (raw) In-Reply-To: <201708151333.nLya1R9C%fengguang.wu@intel.com> On Tue, Aug 15, 2017 at 4:02 PM, kbuild test robot <lkp@intel.com> wrote: > Hi Oliver, > > [auto build test ERROR on linux-nvdimm/libnvdimm-for-next] > [also build test ERROR on v4.13-rc5 next-20170811] > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] > > url: https://github.com/0day-ci/linux/commits/Dan-Williams/libnvdimm-export-supported-page-size-alignments/20170815-105258 > base: https://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git libnvdimm-for-next > config: powerpc-allmodconfig (attached as .config) > compiler: powerpc64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 > reproduce: > wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # save the attached .config to linux build tree > make.cross ARCH=powerpc > > All error/warnings (new ones prefixed by >>): > > In file included from include/linux/mm.h:446:0, > from include/linux/memremap.h:3, > from drivers//nvdimm/pfn_devs.c:13: > drivers//nvdimm/pfn_devs.c: In function 'nd_pfn_supported_alignments': >>> include/linux/huge_mm.h:83:24: error: initializer element is not constant > #define HPAGE_PMD_SIZE ((1UL) << HPAGE_PMD_SHIFT) > ^ >>> drivers//nvdimm/pfn_devs.c:123:3: note: in expansion of macro 'HPAGE_PMD_SIZE' > HPAGE_PMD_SIZE, > ^~~~~~~~~~~~~~ > include/linux/huge_mm.h:83:24: note: (near initialization for 'supported_alignments[1]') > #define HPAGE_PMD_SIZE ((1UL) << HPAGE_PMD_SHIFT) > ^ >>> drivers//nvdimm/pfn_devs.c:123:3: note: in expansion of macro 'HPAGE_PMD_SIZE' > HPAGE_PMD_SIZE, > ^~~~~~~~~~~~~~ > -- > In file included from include/linux/mm.h:446:0, > from include/linux/memremap.h:3, > from drivers/nvdimm/pfn_devs.c:13: > drivers/nvdimm/pfn_devs.c: In function 'nd_pfn_supported_alignments': >>> include/linux/huge_mm.h:83:24: error: initializer element is not constant > #define HPAGE_PMD_SIZE ((1UL) << HPAGE_PMD_SHIFT) > ^ > drivers/nvdimm/pfn_devs.c:123:3: note: in expansion of macro 'HPAGE_PMD_SIZE' > HPAGE_PMD_SIZE, > ^~~~~~~~~~~~~~ > include/linux/huge_mm.h:83:24: note: (near initialization for 'supported_alignments[1]') > #define HPAGE_PMD_SIZE ((1UL) << HPAGE_PMD_SHIFT) > ^ > drivers/nvdimm/pfn_devs.c:123:3: note: in expansion of macro 'HPAGE_PMD_SIZE' > HPAGE_PMD_SIZE, > ^~~~~~~~~~~~~~ > > vim +/HPAGE_PMD_SIZE +123 drivers//nvdimm/pfn_devs.c > > > 13 #include <linux/memremap.h> > 14 #include <linux/blkdev.h> > 15 #include <linux/device.h> > 16 #include <linux/genhd.h> > 17 #include <linux/sizes.h> > 18 #include <linux/slab.h> > 19 #include <linux/fs.h> > 20 #include <linux/mm.h> > 21 #include "nd-core.h" > 22 #include "pfn.h" > 23 #include "nd.h" > 24 > 25 static void nd_pfn_release(struct device *dev) > 26 { > 27 struct nd_region *nd_region = to_nd_region(dev->parent); > 28 struct nd_pfn *nd_pfn = to_nd_pfn(dev); > 29 > 30 dev_dbg(dev, "%s\n", __func__); > 31 nd_detach_ndns(&nd_pfn->dev, &nd_pfn->ndns); > 32 ida_simple_remove(&nd_region->pfn_ida, nd_pfn->id); > 33 kfree(nd_pfn->uuid); > 34 kfree(nd_pfn); > 35 } > 36 > 37 static struct device_type nd_pfn_device_type = { > 38 .name = "nd_pfn", > 39 .release = nd_pfn_release, > 40 }; > 41 > 42 bool is_nd_pfn(struct device *dev) > 43 { > 44 return dev ? dev->type == &nd_pfn_device_type : false; > 45 } > 46 EXPORT_SYMBOL(is_nd_pfn); > 47 > 48 struct nd_pfn *to_nd_pfn(struct device *dev) > 49 { > 50 struct nd_pfn *nd_pfn = container_of(dev, struct nd_pfn, dev); > 51 > 52 WARN_ON(!is_nd_pfn(dev)); > 53 return nd_pfn; > 54 } > 55 EXPORT_SYMBOL(to_nd_pfn); > 56 > 57 static ssize_t mode_show(struct device *dev, > 58 struct device_attribute *attr, char *buf) > 59 { > 60 struct nd_pfn *nd_pfn = to_nd_pfn_safe(dev); > 61 > 62 switch (nd_pfn->mode) { > 63 case PFN_MODE_RAM: > 64 return sprintf(buf, "ram\n"); > 65 case PFN_MODE_PMEM: > 66 return sprintf(buf, "pmem\n"); > 67 default: > 68 return sprintf(buf, "none\n"); > 69 } > 70 } > 71 > 72 static ssize_t mode_store(struct device *dev, > 73 struct device_attribute *attr, const char *buf, size_t len) > 74 { > 75 struct nd_pfn *nd_pfn = to_nd_pfn_safe(dev); > 76 ssize_t rc = 0; > 77 > 78 device_lock(dev); > 79 nvdimm_bus_lock(dev); > 80 if (dev->driver) > 81 rc = -EBUSY; > 82 else { > 83 size_t n = len - 1; > 84 > 85 if (strncmp(buf, "pmem\n", n) == 0 > 86 || strncmp(buf, "pmem", n) == 0) { > 87 nd_pfn->mode = PFN_MODE_PMEM; > 88 } else if (strncmp(buf, "ram\n", n) == 0 > 89 || strncmp(buf, "ram", n) == 0) > 90 nd_pfn->mode = PFN_MODE_RAM; > 91 else if (strncmp(buf, "none\n", n) == 0 > 92 || strncmp(buf, "none", n) == 0) > 93 nd_pfn->mode = PFN_MODE_NONE; > 94 else > 95 rc = -EINVAL; > 96 } > 97 dev_dbg(dev, "%s: result: %zd wrote: %s%s", __func__, > 98 rc, buf, buf[len - 1] == '\n' ? "" : "\n"); > 99 nvdimm_bus_unlock(dev); > 100 device_unlock(dev); > 101 > 102 return rc ? rc : len; > 103 } > 104 static DEVICE_ATTR_RW(mode); > 105 > 106 static ssize_t align_show(struct device *dev, > 107 struct device_attribute *attr, char *buf) > 108 { > 109 struct nd_pfn *nd_pfn = to_nd_pfn_safe(dev); > 110 > 111 return sprintf(buf, "%ld\n", nd_pfn->align); > 112 } > 113 > 114 static const unsigned long *nd_pfn_supported_alignments(void) > 115 { > 116 /* > 117 * This needs to be a local variable because the *_SIZE macros > 118 * aren't always constants. > 119 */ I probably should have been clearer, "local" here really means "non-static". Otherwise the array could have been made a global. > 120 static const unsigned long supported_alignments[] = { > 121 PAGE_SIZE, > 122 #ifdef CONFIG_TRANSPARENT_HUGEPAGE > > 123 HPAGE_PMD_SIZE, > 124 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD > 125 HPAGE_PUD_SIZE, > 126 #endif > 127 #endif > 128 0, > 129 }; > 130 > 131 return supported_alignments; > 132 } > 133 > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation
next prev parent reply other threads:[~2017-08-15 6:44 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-08-12 5:12 [PATCH 0/3] libnvdimm: export supported page size alignments Dan Williams 2017-08-12 5:12 ` Dan Williams 2017-08-12 5:12 ` [PATCH 1/3] libnvdimm: rename nd_sector_size_{show, store} to nd_size_select_{show, store} Dan Williams 2017-08-12 5:12 ` Dan Williams 2017-08-12 5:12 ` [PATCH 2/3] libnvdimm, pfn, dax: show supported dax/pfn region alignments in sysfs Dan Williams 2017-08-12 5:12 ` Dan Williams 2017-08-15 6:02 ` kbuild test robot 2017-08-15 6:02 ` kbuild test robot 2017-08-15 6:46 ` Oliver [this message] 2017-08-15 6:46 ` Oliver 2017-08-15 15:47 ` Dan Williams 2017-08-15 15:47 ` Dan Williams 2017-08-16 5:23 ` Oliver 2017-08-16 5:23 ` Oliver 2017-08-12 5:12 ` [PATCH 3/3] libnvdimm, pfn, dax: limit namespace alignments to the supported set Dan Williams 2017-08-12 5:12 ` Dan Williams
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=CAOSf1CGa3BBmDZ5KjsK0fsT8e7uN10oTSqKNyognAe+8hSDKVQ@mail.gmail.com \ --to=oohall@gmail.com \ --cc=kbuild-all@01.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-nvdimm@lists.01.org \ --cc=lkp@intel.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.