Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'staging-4.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging driver fixes from Greg KH:
"Here are some tiny staging driver and documentation fixes for 4.3-rc3.

All of these resolve reported issues that people have found and have
been in the linux-next tree for a while with no problems"

* tag 'staging-4.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
MAINTAINERS: Update email address for Martyn Welch
staging: ion: fix corruption of ion_import_dma_buf
staging: dgap: Remove myself from the MAINTAINERS file
staging: most: Add dependency to HAS_IOMEM
staging: unisys: remove reference of visorutil
staging: unisys: visornic: handle error return from device registration
staging: unisys: stop device registration before visorbus registration
staging: unisys: visorbus: Unregister driver on error
staging: unisys: visornic: Fix receive bytes statistics
staging: unisys: unregister netdev when create debugfs fails
staging: fbtft: replace master->setup() with spi_setup()
staging: fbtft: fix 9-bit SPI support detection
staging/lustre: change Lustre URLs and mailing list
staging/android: Update ION TODO per LPC discussion
Staging: most: MOST and MOSTCORE should depend on HAS_DMA
staging: most: fix HDM_USB dependencies and build errors

+66 -47
+3 -4
MAINTAINERS
··· 3401 3401 3402 3402 DIGI EPCA PCI PRODUCTS 3403 3403 M: Lidza Louina <lidza.louina@gmail.com> 3404 - M: Mark Hounschell <markh@compro.net> 3405 3404 M: Daeseok Youn <daeseok.youn@gmail.com> 3406 3405 L: driverdev-devel@linuxdriverproject.org 3407 3406 S: Maintained ··· 9909 9910 STAGING - LUSTRE PARALLEL FILESYSTEM 9910 9911 M: Oleg Drokin <oleg.drokin@intel.com> 9911 9912 M: Andreas Dilger <andreas.dilger@intel.com> 9912 - L: HPDD-discuss@lists.01.org (moderated for non-subscribers) 9913 - W: http://lustre.opensfs.org/ 9913 + L: lustre-devel@lists.lustre.org (moderated for non-subscribers) 9914 + W: http://wiki.lustre.org/ 9914 9915 S: Maintained 9915 9916 F: drivers/staging/lustre 9916 9917 ··· 11202 11203 F: include/linux/vlynq.h 11203 11204 11204 11205 VME SUBSYSTEM 11205 - M: Martyn Welch <martyn.welch@ge.com> 11206 + M: Martyn Welch <martyn@welchs.me.uk> 11206 11207 M: Manohar Vanga <manohar.vanga@gmail.com> 11207 11208 M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> 11208 11209 L: devel@driverdev.osuosl.org
+20
drivers/staging/android/TODO
··· 5 5 - add proper arch dependencies as needed 6 6 - audit userspace interfaces to make sure they are sane 7 7 8 + 9 + ion/ 10 + - Remove ION_IOC_SYNC: Flushing for devices should be purely a kernel internal 11 + interface on top of dma-buf. flush_for_device needs to be added to dma-buf 12 + first. 13 + - Remove ION_IOC_CUSTOM: Atm used for cache flushing for cpu access in some 14 + vendor trees. Should be replaced with an ioctl on the dma-buf to expose the 15 + begin/end_cpu_access hooks to userspace. 16 + - Clarify the tricks ion plays with explicitly managing coherency behind the 17 + dma api's back (this is absolutely needed for high-perf gpu drivers): Add an 18 + explicit coherency management mode to flush_for_device to be used by drivers 19 + which want to manage caches themselves and which indicates whether cpu caches 20 + need flushing. 21 + - With those removed there's probably no use for ION_IOC_IMPORT anymore either 22 + since ion would just be the central allocator for shared buffers. 23 + - Add dt-binding to expose cma regions as ion heaps, with the rule that any 24 + such cma regions must already be used by some device for dma. I.e. ion only 25 + exposes existing cma regions and doesn't reserve unecessarily memory when 26 + booting a system which doesn't use ion. 27 + 8 28 Please send patches to Greg Kroah-Hartman <greg@kroah.com> and Cc: 9 29 Arve Hjønnevåg <arve@android.com> and Riley Andrews <riandrews@android.com>
+3 -3
drivers/staging/android/ion/ion.c
··· 1179 1179 mutex_unlock(&client->lock); 1180 1180 goto end; 1181 1181 } 1182 - mutex_unlock(&client->lock); 1183 1182 1184 1183 handle = ion_handle_create(client, buffer); 1185 - if (IS_ERR(handle)) 1184 + if (IS_ERR(handle)) { 1185 + mutex_unlock(&client->lock); 1186 1186 goto end; 1187 + } 1187 1188 1188 - mutex_lock(&client->lock); 1189 1189 ret = ion_handle_add(client, handle); 1190 1190 mutex_unlock(&client->lock); 1191 1191 if (ret) {
+1 -1
drivers/staging/fbtft/fb_uc1611.c
··· 76 76 77 77 /* Set CS active high */ 78 78 par->spi->mode |= SPI_CS_HIGH; 79 - ret = par->spi->master->setup(par->spi); 79 + ret = spi_setup(par->spi); 80 80 if (ret) { 81 81 dev_err(par->info->device, "Could not set SPI_CS_HIGH\n"); 82 82 return ret;
+2 -2
drivers/staging/fbtft/fb_watterott.c
··· 169 169 /* enable SPI interface by having CS and MOSI low during reset */ 170 170 save_mode = par->spi->mode; 171 171 par->spi->mode |= SPI_CS_HIGH; 172 - ret = par->spi->master->setup(par->spi); /* set CS inactive low */ 172 + ret = spi_setup(par->spi); /* set CS inactive low */ 173 173 if (ret) { 174 174 dev_err(par->info->device, "Could not set SPI_CS_HIGH\n"); 175 175 return ret; ··· 180 180 par->fbtftops.reset(par); 181 181 mdelay(1000); 182 182 par->spi->mode = save_mode; 183 - ret = par->spi->master->setup(par->spi); 183 + ret = spi_setup(par->spi); 184 184 if (ret) { 185 185 dev_err(par->info->device, "Could not restore SPI mode\n"); 186 186 return ret;
+3 -7
drivers/staging/fbtft/fbtft-core.c
··· 1436 1436 1437 1437 /* 9-bit SPI setup */ 1438 1438 if (par->spi && display->buswidth == 9) { 1439 - par->spi->bits_per_word = 9; 1440 - ret = par->spi->master->setup(par->spi); 1441 - if (ret) { 1439 + if (par->spi->master->bits_per_word_mask & SPI_BPW_MASK(9)) { 1440 + par->spi->bits_per_word = 9; 1441 + } else { 1442 1442 dev_warn(&par->spi->dev, 1443 1443 "9-bit SPI not available, emulating using 8-bit.\n"); 1444 - par->spi->bits_per_word = 8; 1445 - ret = par->spi->master->setup(par->spi); 1446 - if (ret) 1447 - goto out_release; 1448 1444 /* allocate buffer with room for dc bits */ 1449 1445 par->extra = devm_kzalloc(par->info->device, 1450 1446 par->txbuf.len + (par->txbuf.len / 8) + 8,
+4 -7
drivers/staging/fbtft/flexfb.c
··· 463 463 } 464 464 par->fbtftops.write_register = fbtft_write_reg8_bus9; 465 465 par->fbtftops.write_vmem = fbtft_write_vmem16_bus9; 466 - sdev->bits_per_word = 9; 467 - ret = sdev->master->setup(sdev); 468 - if (ret) { 466 + if (par->spi->master->bits_per_word_mask 467 + & SPI_BPW_MASK(9)) { 468 + par->spi->bits_per_word = 9; 469 + } else { 469 470 dev_warn(dev, 470 471 "9-bit SPI not available, emulating using 8-bit.\n"); 471 - sdev->bits_per_word = 8; 472 - ret = sdev->master->setup(sdev); 473 - if (ret) 474 - goto out_release; 475 472 /* allocate buffer with room for dc bits */ 476 473 par->extra = devm_kzalloc(par->info->device, 477 474 par->txbuf.len + (par->txbuf.len / 8) + 8,
+6 -10
drivers/staging/lustre/README.txt
··· 14 14 Lustre has independent Metadata and Data servers that clients can access 15 15 in parallel to maximize performance. 16 16 17 - In order to use Lustre client you will need to download lustre client 18 - tools from 19 - https://downloads.hpdd.intel.com/public/lustre/latest-feature-release/ 20 - the package name is lustre-client. 17 + In order to use Lustre client you will need to download the "lustre-client" 18 + package that contains the userspace tools from http://lustre.org/download/ 21 19 22 20 You will need to install and configure your Lustre servers separately. 23 21 ··· 74 76 75 77 More Information 76 78 ================ 77 - You can get more information at 78 - OpenSFS website: http://lustre.opensfs.org/about/ 79 - Intel HPDD wiki: https://wiki.hpdd.intel.com 79 + You can get more information at the Lustre website: http://wiki.lustre.org/ 80 80 81 - Out of tree Lustre client and server code is available at: 82 - http://git.whamcloud.com/fs/lustre-release.git 81 + Source for the userspace tools and out-of-tree client and server code 82 + is available at: http://git.hpdd.intel.com/fs/lustre-release.git 83 83 84 84 Latest binary packages: 85 - http://lustre.opensfs.org/download-lustre/ 85 + http://lustre.org/download/
+1
drivers/staging/most/Kconfig
··· 1 1 menuconfig MOST 2 2 tristate "MOST driver" 3 + depends on HAS_DMA 3 4 select MOSTCORE 4 5 default n 5 6 ---help---
+1
drivers/staging/most/hdm-dim2/Kconfig
··· 5 5 config HDM_DIM2 6 6 tristate "DIM2 HDM" 7 7 depends on AIM_NETWORK 8 + depends on HAS_IOMEM 8 9 9 10 ---help--- 10 11 Say Y here if you want to connect via MediaLB to network transceiver.
+1 -1
drivers/staging/most/hdm-usb/Kconfig
··· 4 4 5 5 config HDM_USB 6 6 tristate "USB HDM" 7 - depends on USB 7 + depends on USB && NET 8 8 select AIM_NETWORK 9 9 ---help--- 10 10 Say Y here if you want to connect via USB to network tranceiver.
+1
drivers/staging/most/mostcore/Kconfig
··· 4 4 5 5 config MOSTCORE 6 6 tristate "MOST Core" 7 + depends on HAS_DMA 7 8 8 9 ---help--- 9 10 Say Y here if you want to enable MOST support.
-1
drivers/staging/unisys/visorbus/Makefile
··· 10 10 visorbus-y += periodic_work.o 11 11 12 12 ccflags-y += -Idrivers/staging/unisys/include 13 - ccflags-y += -Idrivers/staging/unisys/visorutil
+9 -4
drivers/staging/unisys/visorbus/visorbus_main.c
··· 37 37 #define POLLJIFFIES_TESTWORK 100 38 38 #define POLLJIFFIES_NORMALCHANNEL 10 39 39 40 + static int busreg_rc = -ENODEV; /* stores the result from bus registration */ 41 + 40 42 static int visorbus_uevent(struct device *xdev, struct kobj_uevent_env *env); 41 43 static int visorbus_match(struct device *xdev, struct device_driver *xdrv); 42 44 static void fix_vbus_dev_info(struct visor_device *visordev); ··· 865 863 { 866 864 int rc = 0; 867 865 866 + if (busreg_rc < 0) 867 + return -ENODEV; /*can't register on a nonexistent bus*/ 868 + 868 869 drv->driver.name = drv->name; 869 870 drv->driver.bus = &visorbus_type; 870 871 drv->driver.probe = visordriver_probe_device; ··· 890 885 if (rc < 0) 891 886 return rc; 892 887 rc = register_driver_attributes(drv); 888 + if (rc < 0) 889 + driver_unregister(&drv->driver); 893 890 return rc; 894 891 } 895 892 EXPORT_SYMBOL_GPL(visorbus_register_visor_driver); ··· 1267 1260 static int 1268 1261 create_bus_type(void) 1269 1262 { 1270 - int rc = 0; 1271 - 1272 - rc = bus_register(&visorbus_type); 1273 - return rc; 1263 + busreg_rc = bus_register(&visorbus_type); 1264 + return busreg_rc; 1274 1265 } 1275 1266 1276 1267 /** Remove the one-and-only one instance of the visor bus type (visorbus_type).
+11 -7
drivers/staging/unisys/visornic/visornic_main.c
··· 1189 1189 spin_lock_irqsave(&devdata->priv_lock, flags); 1190 1190 atomic_dec(&devdata->num_rcvbuf_in_iovm); 1191 1191 1192 - /* update rcv stats - call it with priv_lock held */ 1193 - devdata->net_stats.rx_packets++; 1194 - devdata->net_stats.rx_bytes = skb->len; 1195 - 1196 1192 /* set length to how much was ACTUALLY received - 1197 1193 * NOTE: rcv_done_len includes actual length of data rcvd 1198 1194 * including ethhdr 1199 1195 */ 1200 1196 skb->len = cmdrsp->net.rcv.rcv_done_len; 1197 + 1198 + /* update rcv stats - call it with priv_lock held */ 1199 + devdata->net_stats.rx_packets++; 1200 + devdata->net_stats.rx_bytes += skb->len; 1201 1201 1202 1202 /* test enabled while holding lock */ 1203 1203 if (!(devdata->enabled && devdata->enab_dis_acked)) { ··· 1924 1924 "%s debugfs_create_dir %s failed\n", 1925 1925 __func__, netdev->name); 1926 1926 err = -ENOMEM; 1927 - goto cleanup_xmit_cmdrsp; 1927 + goto cleanup_register_netdev; 1928 1928 } 1929 1929 1930 1930 dev_info(&dev->device, "%s success netdev=%s\n", 1931 1931 __func__, netdev->name); 1932 1932 return 0; 1933 + 1934 + cleanup_register_netdev: 1935 + unregister_netdev(netdev); 1933 1936 1934 1937 cleanup_napi_add: 1935 1938 del_timer_sync(&devdata->irq_poll_timer); ··· 2131 2128 if (!dev_num_pool) 2132 2129 goto cleanup_workqueue; 2133 2130 2134 - visorbus_register_visor_driver(&visornic_driver); 2135 - return 0; 2131 + err = visorbus_register_visor_driver(&visornic_driver); 2132 + if (!err) 2133 + return 0; 2136 2134 2137 2135 cleanup_workqueue: 2138 2136 if (visornic_timeout_reset_workqueue) {