Re: [PATCH v3] axon_ram: add dax_operations support
From: kbuild test robot
Date: Thu Apr 20 2017 - 01:48:01 EST
Hi Dan,
[auto build test WARNING on powerpc/next]
[also build test WARNING on v4.11-rc7 next-20170419]
[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/axon_ram-add-dax_operations-support/20170420-091615
base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: powerpc-allyesconfig (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 warnings (new ones prefixed by >>):
arch/powerpc/sysdev/axonram.c: In function 'axon_ram_dax_direct_access':
arch/powerpc/sysdev/axonram.c:176:31: error: implicit declaration of function 'dax_get_private' [-Werror=implicit-function-declaration]
struct axon_ram_bank *bank = dax_get_private(dax_dev);
^~~~~~~~~~~~~~~
>> arch/powerpc/sysdev/axonram.c:176:31: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
arch/powerpc/sysdev/axonram.c: At top level:
arch/powerpc/sysdev/axonram.c:181:21: error: variable 'axon_ram_dax_ops' has initializer but incomplete type
static const struct dax_operations axon_ram_dax_ops = {
^~~~~~~~~~~~~~
arch/powerpc/sysdev/axonram.c:182:2: error: unknown field 'direct_access' specified in initializer
.direct_access = axon_ram_dax_direct_access,
^
>> arch/powerpc/sysdev/axonram.c:182:19: warning: excess elements in struct initializer
.direct_access = axon_ram_dax_direct_access,
^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/sysdev/axonram.c:182:19: note: (near initialization for 'axon_ram_dax_ops')
arch/powerpc/sysdev/axonram.c: In function 'axon_ram_probe':
arch/powerpc/sysdev/axonram.c:255:18: error: implicit declaration of function 'alloc_dax' [-Werror=implicit-function-declaration]
bank->dax_dev = alloc_dax(bank, bank->disk->disk_name,
^~~~~~~~~
>> arch/powerpc/sysdev/axonram.c:255:16: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
bank->dax_dev = alloc_dax(bank, bank->disk->disk_name,
^
arch/powerpc/sysdev/axonram.c:313:3: error: implicit declaration of function 'kill_dax' [-Werror=implicit-function-declaration]
kill_dax(bank->dax_dev);
^~~~~~~~
arch/powerpc/sysdev/axonram.c:314:3: error: implicit declaration of function 'put_dax' [-Werror=implicit-function-declaration]
put_dax(bank->dax_dev);
^~~~~~~
arch/powerpc/sysdev/axonram.c: At top level:
arch/powerpc/sysdev/axonram.c:181:36: error: storage size of 'axon_ram_dax_ops' isn't known
static const struct dax_operations axon_ram_dax_ops = {
^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +176 arch/powerpc/sysdev/axonram.c
170 };
171
172 static long
173 axon_ram_dax_direct_access(struct dax_device *dax_dev, pgoff_t pgoff, long nr_pages,
174 void **kaddr, pfn_t *pfn)
175 {
> 176 struct axon_ram_bank *bank = dax_get_private(dax_dev);
177
178 return __axon_ram_direct_access(bank, pgoff, nr_pages, kaddr, pfn);
179 }
180
181 static const struct dax_operations axon_ram_dax_ops = {
> 182 .direct_access = axon_ram_dax_direct_access,
183 };
184
185 /**
186 * axon_ram_probe - probe() method for platform driver
187 * @device: see platform_driver method
188 */
189 static int axon_ram_probe(struct platform_device *device)
190 {
191 static int axon_ram_bank_id = -1;
192 struct axon_ram_bank *bank;
193 struct resource resource;
194 int rc = 0;
195
196 axon_ram_bank_id++;
197
198 dev_info(&device->dev, "Found memory controller on %s\n",
199 device->dev.of_node->full_name);
200
201 bank = kzalloc(sizeof(struct axon_ram_bank), GFP_KERNEL);
202 if (bank == NULL) {
203 dev_err(&device->dev, "Out of memory\n");
204 rc = -ENOMEM;
205 goto failed;
206 }
207
208 device->dev.platform_data = bank;
209
210 bank->device = device;
211
212 if (of_address_to_resource(device->dev.of_node, 0, &resource) != 0) {
213 dev_err(&device->dev, "Cannot access device tree\n");
214 rc = -EFAULT;
215 goto failed;
216 }
217
218 bank->size = resource_size(&resource);
219
220 if (bank->size == 0) {
221 dev_err(&device->dev, "No DDR2 memory found for %s%d\n",
222 AXON_RAM_DEVICE_NAME, axon_ram_bank_id);
223 rc = -ENODEV;
224 goto failed;
225 }
226
227 dev_info(&device->dev, "Register DDR2 memory device %s%d with %luMB\n",
228 AXON_RAM_DEVICE_NAME, axon_ram_bank_id, bank->size >> 20);
229
230 bank->ph_addr = resource.start;
231 bank->io_addr = (unsigned long) ioremap_prot(
232 bank->ph_addr, bank->size, _PAGE_NO_CACHE);
233 if (bank->io_addr == 0) {
234 dev_err(&device->dev, "ioremap() failed\n");
235 rc = -EFAULT;
236 goto failed;
237 }
238
239 bank->disk = alloc_disk(AXON_RAM_MINORS_PER_DISK);
240 if (bank->disk == NULL) {
241 dev_err(&device->dev, "Cannot register disk\n");
242 rc = -EFAULT;
243 goto failed;
244 }
245
246
247 bank->disk->major = azfs_major;
248 bank->disk->first_minor = azfs_minor;
249 bank->disk->fops = &axon_ram_devops;
250 bank->disk->private_data = bank;
251
252 sprintf(bank->disk->disk_name, "%s%d",
253 AXON_RAM_DEVICE_NAME, axon_ram_bank_id);
254
> 255 bank->dax_dev = alloc_dax(bank, bank->disk->disk_name,
256 &axon_ram_dax_ops);
257 if (!bank->dax_dev) {
258 rc = -ENOMEM;
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip