NeilBrown [Mon, 21 May 2018 04:35:12 +0000 (14:35 +1000)]
staging: lustre: replace libcfs_register_ioctl with a blocking notifier_chain
libcfs allows other modules to register handlers for ioctls.
The implementation it uses for this is nearly identical to a
blocking notifier chain, so change to use that.
The biggest difference is that the return value from notifier has a
defined format, where libcfs_register_ioctl uses -EINVAL to mean
"continue". This requires a little bit of conversion.
NeilBrown [Mon, 21 May 2018 04:35:12 +0000 (14:35 +1000)]
staging: lustre: discard cfs_block_sigsinv()
cfs_block_sigsinv() and cfs_restore_sigs() are simple
wrappers which save a couple of line of code and
hurt readability for people not familiar with them.
They aren't used often enough to be worthwhile,
so discard them and open-code the functionality.
The sigorsets() call isn't needed as or-ing with current->blocked is
exactly what sigprocmask(SIG_BLOCK) does.
NeilBrown [Mon, 21 May 2018 04:35:12 +0000 (14:35 +1000)]
staging: lustre: discard CFS_TICK
This undocumented macro seems to represent "a small amount of time".
Sometimes it is used as-is, some times it is multiplied by 5 for no
obvious reason.
It does not appear that there is any connection between the different
places it is used - they all just want a short period for different
purposes and of different durarions.
So discard CFS_TICK and lets each use-site just use whatever number
of jiffies seems appropriate in that case.
NeilBrown [Mon, 21 May 2018 04:35:12 +0000 (14:35 +1000)]
staging: lustre: discard cfs_cap_t, use kernel_cap_t
lustre only sends 32bits of capabilities in on-the-wire RPC calls.
It current strips off higher bits and uses a 32bit cfs_cap_t
throughout.
Though there is a small memory cost, it is cleaner to use
kernel_cap_t throughout and only truncate when marshalling
data for RPC calls.
So this patch replaces cfs_cap_t with kernel_cap_t throughout,
and where a cfs_cap_t was previous stored in a __u32, we now
store cap.cap[0] instead.
With this, we can remove include/linux/libcfs/curproc.h
NeilBrown [Mon, 21 May 2018 04:35:12 +0000 (14:35 +1000)]
staging: lustre: simplify capability dropping.
Lustre has a 'squash credentials' concept similar to the "anon_uid"
for nfsd. When accessing a file with squashed credentials, we
need to also drop capabilities.
Linux has cap_drop_fs_set() and cap_drop_nfsd_set(). Rather than
taking a completely different approach, this patch changes lustre
to use this same cap_drop_*_set() approach.
With this change we also drop CAP_MKNOD and CAP_MAC_OVERRIDE
which are probably appropriate, and don't drop
CAP_SYS_ADMIN or CAP_SYS_BOOT which should be irrelevant for
file permission checking
Calling both cap_drop_*_set() seems a bit clumsy, but gets
the job done.
NeilBrown [Mon, 21 May 2018 04:35:12 +0000 (14:35 +1000)]
staging: lustre: remove conditional compilation from libcfs_cpu.c
libcfs_cpu.c manages CPU partitions. In the !CONFIG_SMP case, most
of this disappears and 'static inline's from libcfs_cpu.h are used.
However we still allocate a 'struct cfs_cpt_table' and keep some
dummy data in it. This is a bit pointless.
This patch removes all the !CONFIG_SMP code from libcfs_cpu.c and
conditionally compiles the whole file only when CONFIG_SMP.
We no longer allocate a 'struct cfs_cpt_table' on !CONFIG_SMP,
and don't even declare a structure. The name "cfs_cpt_tab"
becomes always "NULL", which allows some code to be optimized away.
This means that cfs_cpt_tab can sometimes be NULL, so we need to
discard the assertion that it isn't.
NeilBrown [Mon, 21 May 2018 04:35:12 +0000 (14:35 +1000)]
staging: lustre: rename cfs_cpt_table to cfs_cpt_tab
The variable "cfs_cpt_table" has the same name as
the structure "struct cfs_cpt_table".
This makes it hard to use #define to make one disappear
on a uni-processor build, but keep the other.
So rename the variable to cfs_cpt_tab.
NeilBrown [Mon, 21 May 2018 04:35:12 +0000 (14:35 +1000)]
staging: lustre: move files out of lustre/lnet/libcfs/linux/
There is no longer any value in having this separate
subdirectory, so promote the files in it.
Also tidy the Makefile a little to use the common "*-obj-y"
macro name. This will allow individual files to be conditionally
compiled.
NeilBrown [Mon, 21 May 2018 04:35:12 +0000 (14:35 +1000)]
staging: lustre: refactor libcfs initialization.
Many lustre modules depend on libcfs having initialized
properly, but do not explicit check that it did.
When lustre is built as discrete modules, this does not
cause a problem because if the libcfs module fails
initialization, the other modules don't even get loaded.
When lustre is compiled into the kernel, all module_init()
routines get run, so they need to check the required initialization
succeeded.
This patch splits out the initialization of libcfs into a new
libcfs_setup(), and has all modules call that.
The misc_register() call is kept separate as it does not allocate any
resources and if it fails, it fails hard - no point in retrying.
Other set-up allocates resources and so is best delayed until they
are needed, and can be worth retrying.
Ideally, the initialization would happen at mount time (or similar)
rather than at load time. Doing this requires each module to
check dependencies when they are activated rather than when
they are loaded. Achieving that is a much larger job that would
have to progress in stages.
For now, this change ensures that if some initialization in libcfs
fails, other modules will fail-safe.
NeilBrown [Mon, 21 May 2018 04:35:12 +0000 (14:35 +1000)]
staging: lustre: osc: tidy up osc_init()
A module_init() function that registers the services
of the module should do that last, after all other
initialization has succeeded.
This patch moves the class_register_type() call to the
end and ensures everything else that might have been
set up, is cleaned up on error.
Nishad Kamdar [Thu, 24 May 2018 17:44:40 +0000 (23:14 +0530)]
staging: comedi: comedidev.h: Fix SPDX-License-Identifier tag style
Replace // SPDX-License-Identifier: GPL-2.0+ by
/* SPDX-License-Identifier: GPL-2.0+ */ as per licensing rule
for C header files. Issue found by checkpatch. Part of
Eudyptula Challenge.
Merge tag 'iio-for-4.18b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next
Jonathan writes:
Second set of new device support, features and cleanup for IIO in the 4.18 cycle
Usual mixture of new devices support and other stuff. A couple of
staging graduations in here and some old driver drops.
New device support
* ad5686
- Add support for AD5691R, AD5692R, AD5693 and AD5693R i2c DACs
- Add support for AD5681R, AD5682R, AD5683 and AD5683R SPI DACs
* lmp91000
- Add ID for LMP91002
* stm32-dfsdm
- Add support for the stm32mp1 devices.
Drivers dropped
* ADE7753
- No longer easily available, no users came forward and needs a lot
of work to move out of staging.
* ADE7754
* ADE7758
* ADE7759
Staging graduations
- ad2s1200 - good cleanup from David Veenstra.
- tsl2772 (was tsl2x7x) - Brian's quest is at an end and
staging/iio/light is no more!
Features
* tools
- loop forever on a negative number of loops being specified.
* ltc 2632
- add of_match_table
- support an external reference regulator.
* mag3110
- Support continuous mode when running fast as it increases the
posssible sampling rate.
* ti-ads8688
- Add trigger and buffer support to this ADC.
Cleanups / minor tweaks.
* tools
- tidy up types in iio_generic_buffer.
* ad2s1200
- Whitespace cleanup.
- Drop pointless initializations.
- Improve kernel docs.
- Reorder to setup the SPI prior to device registration (race fix).
- Change to modern gpiod framework.
- Drop platform data and move to DT bindings. There are no in
kernel users of the platform data. Any out of tree boards will
need changes.
- Add an explicit compatible table.
- Provide _scale for angular velocity and angle channels.
- Add David Veenstra to copyright notice as this cleanup was non
trivial.
* ade8366
- Avoid a race by ensuring channel init is before registration
with the subsystem.
* afe
- binding spelling fix.
* imx7d-adc
- typo fix in Freescale
* inv_mpu6050
- tidy up an ugly loop to take advantage of known entry condition.
- add a comment explaining why the sensible sampling frequencies
are more limited than might be immediately apparent (aliasing).
* mma8452
- reduce the sleep time on data not ready when running at high
frequency.
* stm32-dfsdm
- add missing header.
* tsl2583
- fix integration_time_availabe which was in microsecs rather the
millisecs.
* tsl2x7x/tsl2772
- Whitespace cleanup.
- Change to direct returns where sensible.
- Turn the chip off in the registration error path.
- Use macro to reduce repition when setting up the device_info
structures.
- Change the _available attributes over to read_avail callback,
and the range definitions that supports.
- Fix some wrong period values.
- Add some range checkign for _write_raw.
- Rename the driver to tsl2772 to avoid wild card clash problems
in future.
Martin Kelly [Mon, 21 May 2018 18:41:54 +0000 (11:41 -0700)]
iio: imu: inv_mpu6050: add comment about frequencies
Although the driver allows frequencies between 4 and 1000 Hz, only the
frequencies advertised in the available frequencies file are backed
properly by a low-pass filter to prevent aliasing, so it's best to use
them. Since this is not obvious to the user, add a comment explaining
what's going on.
Signed-off-by: Martin Kelly <mkelly@xevo.com> Acked-by: Jean-Baptiste Maneyrol <jmaneyrol@invensense.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Sometimes it's useful to stream samples forever, such as when
stress-testing a driver overnight to check for memory leaks or other
issues. When the program receives a signal, it will gracefully cleanup,
so it is still safe to terminate at any time.
Add support for specifying a negative -c option, meaning that we should
loop forever. To do so, we need to use a long long (instead of just
long) for num_loops so that current code specifying num_loops greater
than UNSIGNED_LONG_MAX doesn't break.
Signed-off-by: Martin Kelly <mkelly@xevo.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
I announced the intent to drop some of these meter drivers
on the IIO list last cycle. This device is obsolete and not easily
obtained. No one has come forward with suitable test hardware and
the driver would need a lot of work to move out of staging.
As such I am dropping it. We can always bring it back again
if a user / tester emerges in the future.
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
I announced the intent to drop some of these meter drivers
on the IIO list last cycle. This device is obsolete and not easily
obtained. No one has come forward with suitable test hardware and
the driver would need a lot of work to move out of staging.
As such I am dropping it. We can always bring it back again
if a user / tester emerges in the future.
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
I announced the intent to drop some of these meter drivers
on the IIO list last cycle. This device is obsolete and not easily
obtained. No one has come forward with suitable test hardware and
the driver would need a lot of work to move out of staging.
As such I am dropping it. We can always bring it back again
if a user / tester emerges in the future.
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
I announced the intent to drop some of these meter drivers
on the IIO list last cycle. This device is obsolete and not easily
obtained. No one has come forward with suitable test hardware and
the driver would need a lot of work to move out of staging.
As such I am dropping it. We can always bring it back again
if a user / tester emerges in the future.
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
David Veenstra [Fri, 18 May 2018 18:23:01 +0000 (20:23 +0200)]
staging: iio: ad2s1200: Add scaling factor for angular velocity channel
The sysfs iio ABI states radians per second is expected as the unit for
angular velocity, but the 12-bit angular velocity register has
revolution per seconds as its unit. So a scaling factor of approximately
2 * Pi is added to the angular velocity channel.
Signed-off-by: David Veenstra <davidjulianveenstra@gmail.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Stefan Popa [Fri, 18 May 2018 15:23:34 +0000 (18:23 +0300)]
iio:dac:ad5686: Add AD5681R/AD5682R/AD5683/AD5683R support
The AD5681R/AD5682R/AD5683/AD5683R are a family of one channel DACs with
12-bit, 14-bit and 16-bit precision respectively. The devices have either
no built-in reference, or built-in 2.5V reference.
These devices are similar to AD5691R/AD5692R/AD5693/AD5693R except
with a few notable differences:
* they use the SPI interface instead of I2C
* in the write control register, DB18 and DB17 are used for setting the
power mode, while DB16 is the REF bit. This is why a new regmap type
was defined and checked accordingly.
* the shift register is 24 bits wide, the first four bits are the command
bits followed by the data bits. As the data comprises of 20-bit, 18-bit
or 16-bit input code, this means that 4 LSB bits are don't care. This is
why the data needs to be shifted on the left with four bits. Therefore,
AD5683_REGMAP is checked inside a switch case in the ad5686_spi_write()
function. On the other hand, similar devices such as AD5693R family,
have the 4 MSB command bits followed by 4 don't care bits.
Stefan Popa [Fri, 18 May 2018 15:22:50 +0000 (18:22 +0300)]
iio:dac:ad5686: Add AD5691R/AD5692R/AD5693/AD5693R support
The AD5691R/AD5692R/AD5693/AD5693R are a family of one channel DACs with
12-bit, 14-bit and 16-bit precision respectively. The devices have either
no built-in reference, or built-in 2.5V reference.
These devices are pretty similar to AD5671R/AD5675R and
AD5694/AD5694R/AD5695R/AD5696/AD5696R, except that they have one channel.
Another difference is that they use a write control register(addr 0x04) for
setting the power down modes and the internal reference instead of separate
registers for each function.
Fabrice Gasnier [Tue, 15 May 2018 15:19:17 +0000 (17:19 +0200)]
iio: adc: stm32-dfsdm: include stm32-dfsdm-adc.h
Fix the following sparse warnings:
CHECK drivers/iio/adc/stm32-dfsdm-adc.c
symbol 'stm32_dfsdm_get_buff_cb' was not declared. Should it be static?
symbol 'stm32_dfsdm_release_buff_cb' was not declared. Should it be static?
BTW, move interrupt.h to sort headers alphabetically.
Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Brian Masney [Sun, 13 May 2018 00:20:39 +0000 (20:20 -0400)]
iio: tsl2583: correct values in integration_time_available
The times reported by the in_illuminance_integration_time_available
sysfs attribute are actually in milliseconds, not microseconds. This
patch corrects the times with the correct unit.
The fixes tag is inaccurate as the issue existed when the driver
was still in staging. However, lots of changes occured before
it graduated so this is as a good a point as any for backports.
Signed-off-by: Brian Masney <masneyb@onstation.org> Fixes: f44d5c8ac399 ("staging: iio: tsl2583: move out of staging") Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Laura Abbott [Mon, 14 May 2018 21:35:09 +0000 (14:35 -0700)]
staging: android: ion: Switch to pr_warn_once in ion_buffer_destroy
Syzbot reported yet another warning with Ion:
WARNING: CPU: 0 PID: 1467 at drivers/staging/android/ion/ion.c:122
ion_buffer_destroy+0xd4/0x190 drivers/staging/android/ion/ion.c:122
Kernel panic - not syncing: panic_on_warn set ...
This is catching that a buffer was freed with an existing kernel mapping
still present. This can be easily be triggered from userspace by calling
DMA_BUF_SYNC_START without calling DMA_BUF_SYNC_END. Switch to a single
pr_warn_once to indicate the error without being disruptive.
It's good to have SPDX identifiers in driver files to make it easier to
audit the kernel tree for correct licenses.
Fix up the one of staging gpio-mt7621 file to have a proper SPDX
identifier, based on the license text in the file itself. The SPDX
identifier is a legally binding shorthand, which can be used instead of
the full boiler plate text.
Lai Siyao [Tue, 15 May 2018 02:15:48 +0000 (22:15 -0400)]
staging: lustre: obdclass: change object lookup to no wait mode
Currently we set LU_OBJECT_HEARD_BANSHEE on object when we want
to remove object from cache, but this may lead to deadlock, because
when other process lookup such object, it needs to wait for this
object until release (done at last refcount put), while that process
maybe already hold an LDLM lock.
Now that current code can handle dying object correctly, we can just
return such object in lookup, thus the above deadlock can be avoided.
Signed-off-by: Lai Siyao <lai.siyao@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-9049
Reviewed-on: https://review.whamcloud.com/26965 Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com> Tested-by: Cliff White <cliff.white@intel.com> Reviewed-by: Fan Yong <fan.yong@intel.com> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Reviewed-by: NeilBrown <neil@brown.name> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
staging: android: ion: Check return value of ion_buffer_kmap_get
GCC warns that vaddr is set but unused. Check the return value of
ion_buffer_kmap_get to make vaddr useful and make sure everything
is properly configured before beginning a DMA.
staging: ks7010: replace cast type in assignment in hostif_sme_set_pmksa
There is an assignment inside hostif_sme_set_pmksa function
which is being used together with cpu_to_le16 using uint16_t as cast
type. Replace it to use 'u16' instead.
staging: ks7010: use 'u16' for casts in assignments in hostif_sme_set_rsn
There are some assignments inside hostif_sme_set_rsn function
which are being used together with cpu_to_le16 using uint16_t
as cast type. Replace all of them to use 'u16' instead.
staging: ks7010: change two parameter types in hostif_mic_failure_request
Parameters 'failure_count' and 'timer' was declared as unsigned
short and then there was being casted to u16 inside cpu_to_le16
to make the assignation. Just declare them as 'u16' and avoid
casting at all.
staging: ks7010: replace uint* type into the u* ones in hostif_bss_scan_request
In function hostif_bss_scan_request parameters 'scan_ssid' and
'scan_ssid_len' are declared as uint8_t. Change them to be 'u8'
instead which is preferred. Also update two casts inside the same
function to use 'u32' instead of 'uint32_t'.
staging: ks7010: replace cast types in assignments in hostif_phy_information_request
There are some assignments inside hostif_phy_information_request
function which are being used together with cpu_to_le16 using
uint16_t as cast type. Replace all of them to use 'u16' instead.
staging: ks7010: replace cast type in assignment in hostif_adhoc_set_request
There is an assignment inside hostif_adhoc_set_request function
which is being used together with cpu_to_le16 using uint16_t as cast
type. Replace it to use 'u16' instead.
staging: ks7010: replace cast type in assignments in hostif_infrastructure_set_request
There are some assignments inside hostif_infrastructure_set_request
function which are being used together with cpu_to_le16 using
uint16_t as cast type. Replace all of them to use 'u16' instead.
staging: ks7010: use u16 as type for casting in hostif_ps_adhoc_set_request
There is an assignment inside hostif_ps_adhoc_set_request function
which is being used together with cpu_to_le16 using uint16_t as cast
type. Replace it to use 'u16' instead.
staging: ks7010: replace casts to use type u16 in init_request
There are soem assignments inside init_request function which
are being used together with cpu_to_le16 using uint16_t as cast
type. Replace all of them to use 'u16' instead.
staging: ks7010: avoid no needed cast in ks_wlan_cap
In ks_wlan_cap there is a cast to uint16_t to use cpu_to_le16
with variable 'capability' which is already defined as u16.
Avoid this cast to clean code.
staging: ks7010: change parameter type in hostif_mib_get_request
Second parameter 'mib_attribute' in function hostif_mib_get_request
is declared as unsigned long and inside the function a cast to uint32_t
is being used. Just pass a u32 instead and avoid the casting.
staging: ks7010: change some cast type from uint16_t to u16 in hostif_data_request
There are some castings inside the function hostif_data_request
which are being using with uint16_t type. Fields which have being
assigned are declared as u16. So update casts types to u16 in all
of them.
staging: ks7010: use u16 as type for casting in hostif_data_indication_wpa
Field 'counter' in mic_failure struct is being assigned casting
value using uint16_t. Replace with u16 which is the correct type
of the field and the preferred one.
staging: ks7010: replace not standard uint type to unsigned int
The field 'wakeup_count' in 'ks_wlan_private' struct is declared
as 'uint' which is not a standard type. Replace in favour of
'unsigned int' which it is.
staging: ks7010: replace uint8_t with u8 in ks_wlan_set_rx_gain
In function ks_wlan_set_rx_gain a cast to uint8_t is being used
to assign reception gain. 'rx_gain' field is defined as u8 so
replace the cast to the correct type
staging: ks7010: replace uint8_t with u8 in ks_wlan_set_tx_gain
In function ks_wlan_set_tx_gain a cast to uint8_t is being used
to assign transmission gain. 'tx_gain' field is defined as u8 so
replace the cast to the correct type.
staging: ks7010: change uint8_t casts to u8 in ks_wlan_set_rate
There are some casts to uint8_t in ks_wlan_set_rate function to
assign values of the bitrate. Just change it to u8 which is the one
defined for the field 'body' of the struct which is in use.
staging: ks7010: change parameter type in ks_wlan_hw_rx function
The parameter 'size' in function ks_wlan_hw_rx is declared as
uint16_t and can be declared as size_t which makes more sense.
It is being passed to hif_align_size function which also expects
a size_t as parameter so just change its type. Also update two
casts in calls to this function.
staging: ks7010: replace unsigned char type with u8
Variable 'byte' in ks7010_upload_firmware function is declared
as unsigned char and is only being used to read hardware
registers which are expected in sdio_read_byteb function as u8.
Change 'byte' variable type to u8 which is preferred.
Kamal Heib [Sat, 12 May 2018 20:40:03 +0000 (23:40 +0300)]
staging: mt7621-eth: Refactor ethtool stats
This patch removes the ugly macro hack to make sure hw_stats and ethtool
strings are consisten, instead define a new struct which will hold the
stat string and his index within the hw_stats struct.
Signed-off-by: Kamal Heib <kamalheib1@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ajay Singh [Fri, 11 May 2018 08:13:31 +0000 (13:43 +0530)]
staging: wilc1000: refactor host_int_parse_assoc_resp_info() to remove unused code
Remove 'connect_resp_info' structure as most of its elements are not used.
Modified wilc_parse_assoc_resp_info() to directly parse and fill value
in connect_info structure variable. Remove use of 'assoc_resp_len' variable.
get_assoc_resp_cap_info() & get_asoc_id() functions are remove as its
not used anymore.
Ajay Singh [Fri, 11 May 2018 08:13:27 +0000 (13:43 +0530)]
staging: wilc1000: remove 'flag' argument from wilc_mac_indicate()
Remove 'flag' function parameter in wilc_mac_indicate() as only one
condition was handled using that parameter. Also removed unnecessary
call to wilc_mac_indicate() as no operation was performed in that
function call.
After above changes below macros are not required anymore.
WILC_MAC_INDICATE_STATUS 0x1
WILC_MAC_INDICATE_SCAN 0x2
This changes also helped in resolving the line over 80 chars issue
found by checkatpch.pl script.
Ajay Singh [Fri, 11 May 2018 08:13:17 +0000 (13:43 +0530)]
staging: wilc1000: fix line over 80 chars in wilc_wfi_cfg_tx_vendor_spec()
Fix line over 80 characters issues reported by checkpatch.pl script in
wilc_wfi_cfg_tx_vendor_spec() by using temporary variable. Simplified
'if else' condition with 'if'.