From patchwork Fri Oct 30 00:11:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Perches X-Patchwork-Id: 1390515 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-ide-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=perches.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4CMjRG1dqMz9sSf for ; Fri, 30 Oct 2020 11:11:54 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726062AbgJ3ALw (ORCPT ); Thu, 29 Oct 2020 20:11:52 -0400 Received: from smtprelay0132.hostedemail.com ([216.40.44.132]:56254 "EHLO smtprelay.hostedemail.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725846AbgJ3ALw (ORCPT ); Thu, 29 Oct 2020 20:11:52 -0400 Received: from filter.hostedemail.com (clb03-v110.bra.tucows.net [216.40.38.60]) by smtprelay06.hostedemail.com (Postfix) with ESMTP id 4AEA618224D75; Fri, 30 Oct 2020 00:11:50 +0000 (UTC) X-Session-Marker: 6A6F6540706572636865732E636F6D X-Spam-Summary: 2,0,0,,d41d8cd98f00b204,joe@perches.com,,RULES_HIT:1:41:69:355:379:800:960:966:968:973:982:988:989:1042:1260:1277:1311:1313:1314:1345:1359:1437:1515:1516:1518:1593:1594:1605:1730:1747:1777:1792:2196:2199:2393:2538:2559:2562:2638:2734:2828:2898:2899:2901:3138:3139:3140:3141:3142:3369:3855:3865:3866:3867:3868:3870:3871:3872:3874:4250:4321:4385:4605:5007:6117:6119:6742:7875:7903:7904:8603:9010:9036:9592:10004:10848:11026:11232:11473:11658:11914:12043:12291:12296:12297:12438:12555:12679:12683:12760:12986:13439:14394:14659:21063:21067:21080:21433:21451:21627:21772:21939:21987:21990:30012:30054:30067:30070:30079,0,RBL:none,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:,MSBL:0,DNSBL:none,Custom_rules:0:0:0,LFtime:1,LUA_SUMMARY:none X-HE-Tag: watch11_400bb4e27291 X-Filterd-Recvd-Size: 14105 Received: from XPS-9350.home (unknown [47.151.133.149]) (Authenticated sender: joe@perches.com) by omf18.hostedemail.com (Postfix) with ESMTPA; Fri, 30 Oct 2020 00:11:47 +0000 (UTC) Message-ID: <4945b720d67e9f67b8c8ba02a29c6af1ffa15b08.camel@perches.com> Subject: [PATCH] z2ram: MODULE_LICENSE update and neatening From: Joe Perches To: Christoph Hellwig , Jens Axboe Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" , Denis Efremov , "David S. Miller" , Song Liu , Al Viro , Finn Thain , Michael Schmitz , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, linux-raid@vger.kernel.org, linux-scsi@vger.kernel.org, linux-m68k@lists.linux-m68k.org, Hannes Reinecke Date: Thu, 29 Oct 2020 17:11:46 -0700 In-Reply-To: <20201029145841.144173-18-hch@lst.de> References: <20201029145841.144173-1-hch@lst.de> <20201029145841.144173-18-hch@lst.de> User-Agent: Evolution 3.38.1-1 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org Additional style neatenings. Miscellanea: o Make MODULE_LICENSE match the actual license text o Comment neatening o alloc failure message removals as there is already a dump_stack() o Add pr_fmt() and convert printks to pr_ o Unindent code blocks by using continue o Return early z2open when current_device != 1 and unindent code block o Add and remove braces where appropriate Signed-off-by: Joe Perches --- Uncompiled/untested. On top of Christoph's changes. This file still does not have an SPDX line. What should it be? Is this still used by anyone? drivers/block/z2ram.c | 304 ++++++++++++++++++++++---------------------------- 1 file changed, 132 insertions(+), 172 deletions(-) diff --git a/drivers/block/z2ram.c b/drivers/block/z2ram.c index c1d20818e649..4e6c5564f1e8 100644 --- a/drivers/block/z2ram.c +++ b/drivers/block/z2ram.c @@ -1,30 +1,31 @@ /* -** z2ram - Amiga pseudo-driver to access 16bit-RAM in ZorroII space -** as a block device, to be used as a RAM disk or swap space -** -** Copyright (C) 1994 by Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de) -** -** ++Geert: support for zorro_unused_z2ram, better range checking -** ++roman: translate accesses via an array -** ++Milan: support for ChipRAM usage -** ++yambo: converted to 2.0 kernel -** ++yambo: modularized and support added for 3 minor devices including: -** MAJOR MINOR DESCRIPTION -** ----- ----- ---------------------------------------------- -** 37 0 Use Zorro II and Chip ram -** 37 1 Use only Zorro II ram -** 37 2 Use only Chip ram -** 37 4-7 Use memory list entry 1-4 (first is 0) -** ++jskov: support for 1-4th memory list entry. -** -** Permission to use, copy, modify, and distribute this software and its -** documentation for any purpose and without fee is hereby granted, provided -** that the above copyright notice appear in all copies and that both that -** copyright notice and this permission notice appear in supporting -** documentation. This software is provided "as is" without express or -** implied warranty. -*/ - + * z2ram - Amiga pseudo-driver to access 16bit-RAM in ZorroII space + * as a block device, to be used as a RAM disk or swap space + * + * Copyright (C) 1994 by Ingo Wilken (Ingo.Wilken@informatik.uni-oldenburg.de) + * + * ++Geert: support for zorro_unused_z2ram, better range checking + * ++roman: translate accesses via an array + * ++Milan: support for ChipRAM usage + * ++yambo: converted to 2.0 kernel + * ++yambo: modularized and support added for 3 minor devices including: + * MAJOR MINOR DESCRIPTION + * ----- ----- ---------------------------------------------- + * 37 0 Use Zorro II and Chip ram + * 37 1 Use only Zorro II ram + * 37 2 Use only Chip ram + * 37 4-7 Use memory list entry 1-4 (first is 0) + * ++jskov: support for 1-4th memory list entry. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. This software is provided "as is" without express or + * implied warranty. + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #define DEVICE_NAME "Z2RAM" #include @@ -51,7 +52,7 @@ #define Z2MINOR_MEMLIST4 (7) #define Z2MINOR_COUNT (8) /* Move this down when adding a new minor */ -#define Z2RAM_CHUNK1024 ( Z2RAM_CHUNKSIZE >> 10 ) +#define Z2RAM_CHUNK1024 (Z2RAM_CHUNKSIZE >> 10) static DEFINE_MUTEX(z2ram_mutex); static u_long *z2ram_map = NULL; @@ -75,8 +76,7 @@ static blk_status_t z2_queue_rq(struct blk_mq_hw_ctx *hctx, blk_mq_start_request(req); if (start + len > z2ram_size) { - pr_err(DEVICE_NAME ": bad access: block=%llu, " - "count=%u\n", + pr_err("bad access: block=%llu, count=%u\n", (unsigned long long)blk_rq_pos(req), blk_rq_cur_sectors(req)); return BLK_STS_IOERR; @@ -93,9 +93,9 @@ static blk_status_t z2_queue_rq(struct blk_mq_hw_ctx *hctx, size = len; addr += z2ram_map[start >> Z2RAM_CHUNKSHIFT]; if (rq_data_dir(req) == READ) - memcpy(buffer, (char *)addr, size); + memcpy(buffer, (void *)addr, size); else - memcpy((char *)addr, buffer, size); + memcpy((void *)addr, buffer, size); start += size; len -= size; } @@ -107,37 +107,29 @@ static blk_status_t z2_queue_rq(struct blk_mq_hw_ctx *hctx, static void get_z2ram(void) { + unsigned long vaddr = (unsigned long)ZTWO_VADDR(Z2RAM_START); int i; for (i = 0; i < Z2RAM_SIZE / Z2RAM_CHUNKSIZE; i++) { - if (test_bit(i, zorro_unused_z2ram)) { - z2_count++; - z2ram_map[z2ram_size++] = - (unsigned long)ZTWO_VADDR(Z2RAM_START) + - (i << Z2RAM_CHUNKSHIFT); - clear_bit(i, zorro_unused_z2ram); - } + if (!test_and_clear_bit(i, zorro_unused_z2ram)) + continue; + z2_count++; + z2ram_map[z2ram_size++] = vaddr + (i << Z2RAM_CHUNKSHIFT); } - - return; } static void get_chipram(void) { - while (amiga_chip_avail() > (Z2RAM_CHUNKSIZE * 4)) { chip_count++; z2ram_map[z2ram_size] = - (u_long) amiga_chip_alloc(Z2RAM_CHUNKSIZE, "z2ram"); + (u_long)amiga_chip_alloc(Z2RAM_CHUNKSIZE, "z2ram"); - if (z2ram_map[z2ram_size] == 0) { + if (z2ram_map[z2ram_size] == 0) break; - } z2ram_size++; } - - return; } static int z2_open(struct block_device *bdev, fmode_t mode) @@ -146,146 +138,120 @@ static int z2_open(struct block_device *bdev, fmode_t mode) int max_z2_map = (Z2RAM_SIZE / Z2RAM_CHUNKSIZE) * sizeof(z2ram_map[0]); int max_chip_map = (amiga_chip_size / Z2RAM_CHUNKSIZE) * sizeof(z2ram_map[0]); - int rc = -ENOMEM; + int ret = -ENOMEM; device = MINOR(bdev->bd_dev); mutex_lock(&z2ram_mutex); - if (current_device != -1 && current_device != device) { - rc = -EBUSY; - goto err_out; + if (current_device != -1) { + ret = (current_device != device) ? -EBUSY : 0; + mutex_unlock(&z2ram_mutex); + return ret; } - if (current_device == -1) { - z2_count = 0; - chip_count = 0; - list_count = 0; - z2ram_size = 0; - - /* Use a specific list entry. */ - if (device >= Z2MINOR_MEMLIST1 && device <= Z2MINOR_MEMLIST4) { - int index = device - Z2MINOR_MEMLIST1 + 1; - unsigned long size, paddr, vaddr; - - if (index >= m68k_realnum_memory) { - printk(KERN_ERR DEVICE_NAME - ": no such entry in z2ram_map\n"); - goto err_out; - } + z2_count = 0; + chip_count = 0; + list_count = 0; + z2ram_size = 0; - paddr = m68k_memory[index].addr; - size = m68k_memory[index].size & ~(Z2RAM_CHUNKSIZE - 1); + /* Use a specific list entry. */ + if (device >= Z2MINOR_MEMLIST1 && device <= Z2MINOR_MEMLIST4) { + int index = device - Z2MINOR_MEMLIST1 + 1; + unsigned long size, paddr, vaddr; + + if (index >= m68k_realnum_memory) { + pr_err("no such entry in z2ram_map\n"); + goto err_out; + } + + paddr = m68k_memory[index].addr; + size = m68k_memory[index].size & ~(Z2RAM_CHUNKSIZE - 1); #ifdef __powerpc__ - /* FIXME: ioremap doesn't build correct memory tables. */ - { - vfree(vmalloc(size)); - } + /* FIXME: ioremap doesn't build correct memory tables. */ + { + vfree(vmalloc(size)); + } - vaddr = (unsigned long)ioremap_wt(paddr, size); + vaddr = (unsigned long)ioremap_wt(paddr, size); #else - vaddr = - (unsigned long)z_remap_nocache_nonser(paddr, size); + vaddr = (unsigned long)z_remap_nocache_nonser(paddr, size); #endif - z2ram_map = - kmalloc_array(size / Z2RAM_CHUNKSIZE, + z2ram_map = kmalloc_array(size / Z2RAM_CHUNKSIZE, sizeof(z2ram_map[0]), GFP_KERNEL); - if (z2ram_map == NULL) { - printk(KERN_ERR DEVICE_NAME - ": cannot get mem for z2ram_map\n"); + if (!z2ram_map) + goto err_out; + + while (size) { + z2ram_map[z2ram_size++] = vaddr; + size -= Z2RAM_CHUNKSIZE; + vaddr += Z2RAM_CHUNKSIZE; + list_count++; + } + + if (z2ram_size != 0) + pr_info("using %iK List Entry %d Memory\n", + list_count * Z2RAM_CHUNK1024, index); + } else { + switch (device) { + case Z2MINOR_COMBINED: + + z2ram_map = kmalloc(max_z2_map + max_chip_map, + GFP_KERNEL); + if (!z2ram_map) goto err_out; - } - while (size) { - z2ram_map[z2ram_size++] = vaddr; - size -= Z2RAM_CHUNKSIZE; - vaddr += Z2RAM_CHUNKSIZE; - list_count++; - } + get_z2ram(); + get_chipram(); if (z2ram_size != 0) - printk(KERN_INFO DEVICE_NAME - ": using %iK List Entry %d Memory\n", - list_count * Z2RAM_CHUNK1024, index); - } else - switch (device) { - case Z2MINOR_COMBINED: - - z2ram_map = - kmalloc(max_z2_map + max_chip_map, - GFP_KERNEL); - if (z2ram_map == NULL) { - printk(KERN_ERR DEVICE_NAME - ": cannot get mem for z2ram_map\n"); - goto err_out; - } - - get_z2ram(); - get_chipram(); - - if (z2ram_size != 0) - printk(KERN_INFO DEVICE_NAME - ": using %iK Zorro II RAM and %iK Chip RAM (Total %dK)\n", - z2_count * Z2RAM_CHUNK1024, - chip_count * Z2RAM_CHUNK1024, - (z2_count + - chip_count) * Z2RAM_CHUNK1024); - - break; - - case Z2MINOR_Z2ONLY: - z2ram_map = kmalloc(max_z2_map, GFP_KERNEL); - if (z2ram_map == NULL) { - printk(KERN_ERR DEVICE_NAME - ": cannot get mem for z2ram_map\n"); - goto err_out; - } - - get_z2ram(); - - if (z2ram_size != 0) - printk(KERN_INFO DEVICE_NAME - ": using %iK of Zorro II RAM\n", - z2_count * Z2RAM_CHUNK1024); - - break; - - case Z2MINOR_CHIPONLY: - z2ram_map = kmalloc(max_chip_map, GFP_KERNEL); - if (z2ram_map == NULL) { - printk(KERN_ERR DEVICE_NAME - ": cannot get mem for z2ram_map\n"); - goto err_out; - } - - get_chipram(); - - if (z2ram_size != 0) - printk(KERN_INFO DEVICE_NAME - ": using %iK Chip RAM\n", - chip_count * Z2RAM_CHUNK1024); - - break; - - default: - rc = -ENODEV; + pr_info("using %iK Zorro II RAM and %iK Chip RAM (Total %dK)\n", + z2_count * Z2RAM_CHUNK1024, + chip_count * Z2RAM_CHUNK1024, + (z2_count + chip_count) * Z2RAM_CHUNK1024); + + break; + + case Z2MINOR_Z2ONLY: + z2ram_map = kmalloc(max_z2_map, GFP_KERNEL); + if (!z2ram_map) + goto err_out; + + get_z2ram(); + + if (z2ram_size != 0) + pr_info("using %iK of Zorro II RAM\n", + z2_count * Z2RAM_CHUNK1024); + break; + + case Z2MINOR_CHIPONLY: + z2ram_map = kmalloc(max_chip_map, GFP_KERNEL); + if (!z2ram_map) goto err_out; - break; - } + get_chipram(); - if (z2ram_size == 0) { - printk(KERN_NOTICE DEVICE_NAME - ": no unused ZII/Chip RAM found\n"); - goto err_out_kfree; + if (z2ram_size != 0) + pr_info("using %iK Chip RAM\n", + chip_count * Z2RAM_CHUNK1024); + break; + + default: + ret = -ENODEV; + goto err_out; } + } - current_device = device; - z2ram_size <<= Z2RAM_CHUNKSHIFT; - set_capacity(z2ram_gendisk[device], z2ram_size >> 9); + if (z2ram_size == 0) { + pr_notice("no unused ZII/Chip RAM found\n"); + goto err_out_kfree; } + current_device = device; + z2ram_size <<= Z2RAM_CHUNKSHIFT; + set_capacity(z2ram_gendisk[device], z2ram_size >> 9); + mutex_unlock(&z2ram_mutex); return 0; @@ -293,7 +259,7 @@ static int z2_open(struct block_device *bdev, fmode_t mode) kfree(z2ram_map); err_out: mutex_unlock(&z2ram_mutex); - return rc; + return ret; } static void z2_release(struct gendisk *disk, fmode_t mode) @@ -401,24 +367,18 @@ static void __exit z2_exit(void) if (current_device != -1) { i = 0; - for (j = 0; j < z2_count; j++) { + for (j = 0; j < z2_count; j++) set_bit(i++, zorro_unused_z2ram); - } for (j = 0; j < chip_count; j++) { - if (z2ram_map[i]) { + if (z2ram_map[i]) amiga_chip_free((void *)z2ram_map[i++]); - } } - if (z2ram_map != NULL) { - kfree(z2ram_map); - } + kfree(z2ram_map); } - - return; } module_init(z2_init); module_exit(z2_exit); -MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL and additional rights");