Commit graph

982,081 commits

Author SHA1 Message Date
Rylan Dmello
7b58387cd5 staging: qlge: Remove unnecessary parentheses around struct field
Remove unnecessary parentheses around a struct field accessor that
causes a build failure when QL_DEV_DUMP is set.

Signed-off-by: Rylan Dmello <mail@rylan.coffee>
Link: https://lore.kernel.org/r/4dea7a7fae6a56c51cc19228b82a3c230029f54b.1587959245.git.mail@rylan.coffee
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:25:26 +02:00
Malcolm Priestley
9075e3180e staging: vt6656: Remove preamble_type setting from vnt_tx_packet.
preamble_type is set in vnt_bss_info_changed no need to set it
here.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Link: https://lore.kernel.org/r/04874ae5-0859-7cb5-619a-ac96a207be5d@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:25:26 +02:00
Malcolm Priestley
7d1a8c9849 staging: vt6656: Remove set short time in vnt_init_registers.
The short time is set in vnt_bss_info_changed no need to set it
here.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Link: https://lore.kernel.org/r/a2bfc4f5-3f7f-3718-6056-2907a004477f@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:25:26 +02:00
Niklas Söderlund
770ae40cd6 MAINTAINERS: Add entry for Renesas R-Car thermal drivers
Add an entry to make myself a maintainer of the Renesas R-Car thermal
drivers.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Acked-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/20200216130252.125100-1-niklas.soderlund+renesas@ragnatech.se
2020-04-28 14:19:48 +02:00
Malcolm Priestley
ea0c2a6214 staging: vt6656: rxtx: remove duration_id and void returns.
duration_id is not used by driver anymore so remove the returns
and set all functions in patch to void.

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Link: https://lore.kernel.org/r/04a9c19f-c374-c175-6e46-d1bfbab2f42e@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:19:13 +02:00
Michael Straube
de7db0dc0e staging: rtl8188eu: remove some superfluous comments
Remove some obviously superflous comments.

Signed-off-by: Michael Straube <straube.linux@gmail.com>
Link: https://lore.kernel.org/r/20200425092822.19925-1-straube.linux@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:19:13 +02:00
Oscar Carter
345f2d84dd staging: vt6656: Add formula to the vnt_rf_addpower function
Use a formula to calculate the return value of the vnt_rf_addpower
function instead of the "if" statement with literal values for every
case.

Signed-off-by: Oscar Carter <oscar.carter@gmx.com>
Link: https://lore.kernel.org/r/20200425141514.5528-1-oscar.carter@gmx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:19:13 +02:00
Oscar Carter
f5e5e3024c staging: vt6656: Remove functions' documentation
Remove the functions' documentation as the names of the functions are
clear enought. Also, the actual documentation it's not correct in all
cases.

Signed-off-by: Oscar Carter <oscar.carter@gmx.com>
Link: https://lore.kernel.org/r/20200425134257.4502-3-oscar.carter@gmx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:16:50 +02:00
Oscar Carter
81969fd8ab staging: vt6656: Check the return value of vnt_control_out_* calls
Check the return value of vnt_control_out_* function calls. When
necessary modify the function prototype to be able to return the new
checked error code.

It's safe to modify all the function prototypes without fix the call
because the only change is the return value from void to int. If before
the call didn't check the return value, now neither.

Signed-off-by: Oscar Carter <oscar.carter@gmx.com>
Link: https://lore.kernel.org/r/20200425134257.4502-2-oscar.carter@gmx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:16:49 +02:00
Ivan Safonov
628cbd971a staging:r8188eu: avoid skb_clone for amsdu to msdu conversion
skb clones use same data buffer,
so tail of one skb is corrupted by beginning of next skb.

Signed-off-by: Ivan Safonov <insafonov@gmail.com>
Link: https://lore.kernel.org/r/20200423191404.12028-1-insafonov@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:16:49 +02:00
Jérôme Pouiller
f158242af8 staging: wfx: update list of errors
The device raises error indications when it thinks there is a bug in the
driver and it can't recover it (while it raises exception when a bug is
detected in the device).

The current list of of errors was a bit dated.

This patch cleans up the list of errors and the associated message. It
is also the right time to clean up the way the error indications are
handled. Replace the switch..case with a clean loop over an array.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-18-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:29 +02:00
Jérôme Pouiller
be13e854bf staging: wfx: fix display of exception indication
Until now, the exception received from the chip was only displayed if
driver was compiled with DEBUG enabled. It was not very convenient to
help users. We prefer to show the exception unconditionally.

In add, this patch provides the semantic of the first bytes of the
struct.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-17-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:29 +02:00
Jérôme Pouiller
fa5a345e0f staging: wfx: fix messages names in tracepoints
The names of the hardware interface messages are not displayed correctly
in tracepoints. Thus, REQ_JOIN is displayed JOIN_REQ. Fix that in order
to get the names as defined in headers of HIF API.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-16-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:28 +02:00
Jérôme Pouiller
508d99375f staging: wfx: update list of known messages in tracepoints
Some messages are missing from the list of symbolic messages defined in
traces.h. Add them.

Also sort the list in order to simplify next changes.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-15-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:28 +02:00
Jérôme Pouiller
ef27a25628 staging: wfx: also show unnamed counters fields
The struct hif_mib_extended_count_table contains some debug information
accessible from the debugfs. The struct contains not yet used fields at
the end. In order to support future firmware versions, this patch also
show these not yet named fields.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-14-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:28 +02:00
Jérôme Pouiller
2760220700 staging: wfx: show counters of all interfaces
The device keep up to date three series of stats. One for each
virtual interface and one for the whole device.

Until to now, the stats for the whole device were unavailable. Moreover,
it is interesting to retrieve counters for all interfaces even if they
are not awake.

Change the counters available in debugfs in order to retrieve stats
from all interfaces.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-13-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:28 +02:00
Jérôme Pouiller
6ae0878b48 staging: wfx: fix double init of tx_policy_upload_work
The work_struct tx_policy_upload_work was initialized twice.

Fixes: 99879121bf ("staging: wfx: fix the cache of rate policies on interface reset")
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-12-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:28 +02:00
Jérôme Pouiller
29d84944ca staging: wfx: fix the warning "inconsistent notification"
In some circumstances, Tx traffic is sent without associated station but
the station exists when the Tx status is received. Beside that, the
driver keep a counter associated to each station. So, in this case, the
counter is not incremented, but is decremented. In this case a warning
"inconsistent notification" appears:

   ------------[ cut here ]------------
   WARNING: CPU: 3 PID: 82 at /home/jerome/wfx/data_tx.c:469 wfx_skb_dtor+0x1a4/0x1d4 [wfx]
   inconsistent notification
   Modules linked in: [...]
   CPU: 3 PID: 82 Comm: kworker/3:1H Tainted: G         C O      4.19.57-v7l+ #1244
   Hardware name: BCM2835
   Workqueue: events_highpri bh_work [wfx]
   [<c0212c8c>] (unwind_backtrace) from [<c020d49c>] (show_stack+0x20/0x24)
   [<c020d49c>] (show_stack) from [<c0976220>] (dump_stack+0xd4/0x118)
   [<c0976220>] (dump_stack) from [<c0222270>] (__warn+0x104/0x11c)
   [<c0222270>] (__warn) from [<c02222e0>] (warn_slowpath_fmt+0x58/0x74)
   [<c02222e0>] (warn_slowpath_fmt) from [<bf497b48>] (wfx_skb_dtor+0x1a4/0x1d4 [wfx])
   [<bf497b48>] (wfx_skb_dtor [wfx]) from [<bf4988b4>] (wfx_tx_confirm_cb+0x198/0x2f0 [wfx])
   [<bf4988b4>] (wfx_tx_confirm_cb [wfx]) from [<bf49d054>] (hif_tx_confirm+0x50/0x70 [wfx])
   [<bf49d054>] (hif_tx_confirm [wfx]) from [<bf49d42c>] (wfx_handle_rx+0x128/0x22c [wfx])
   [<bf49d42c>] (wfx_handle_rx [wfx]) from [<bf4953cc>] (bh_work+0x3cc/0x964 [wfx])
   [<bf4953cc>] (bh_work [wfx]) from [<c023dab8>] (process_one_work+0x170/0x458)
   [<c023dab8>] (process_one_work) from [<c023ddfc>] (worker_thread+0x5c/0x5a4)
   [<c023ddfc>] (worker_thread) from [<c02440e8>] (kthread+0x138/0x168)
   [<c02440e8>] (kthread) from [<c02010ac>] (ret_from_fork+0x14/0x28)
   Exception stack(0xee199fb0 to 0xee199ff8)
   9fa0:                                     00000000 00000000 00000000 00000000
   9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
   9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
   ---[ end trace 64b9e754e12ef7de ]---

This patch fix this race between the station creation and the Tx data.

Fixes: 7d2d2bfdeb ("staging: wfx: relocate "buffered" information to sta_priv")
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-11-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:28 +02:00
Jérôme Pouiller
87066173e3 staging: wfx: fix overflow in frame counters
It has been reported that trying to send small packets of data could
produce a "inconsistent notification" warning.

It seems that in some circumstances, the number of frame queued in the
driver could greatly increase and exceed UCHAR_MAX. So the field
"buffered" from struct sta_priv can overflow.

Just increase the size of "bueffered" to fix the problem.

Fixes: 7d2d2bfdeb ("staging: wfx: relocate "buffered" information to sta_priv")
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-10-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:27 +02:00
Jérôme Pouiller
bfe2eb23d9 staging: wfx: fix highest Rx value declared in ieee80211_supported_band
The highest Rx value declared in ieee80211_supported_band had two
problems:
    1. The value should be little endian
    2. ShortGI was not taken into account. So value should be 72 instead
       of 65.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-9-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:27 +02:00
Jérôme Pouiller
5f041538e2 staging: wfx: add an explicit warning when chip detect too high temperature
Device is able to measure its temperature and raise warning when this
one is too high. If the the temperature is even higher, the chipis also
able to send an error just before to stop responding.

Until now, the error message was "asynchronous error: unknown (6)".

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-8-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:27 +02:00
Jérôme Pouiller
1d52d29983 staging: wfx: add support for 'device too hot' indication
Device is able to detect a high temperature. In this case, the traffic
is not allowed to be sent until the temperature decrease.

This patch detects the warnings raised by the device and stop the
traffic accordingly. It also add a delayed task as safeguard in case the
chip would never send the indication that the temperature decrease.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-7-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:27 +02:00
Jérôme Pouiller
8e47df5fc4 staging: wfx: fix CAB sent at the wrong time
wfx_suspend_resume_mc() is called when the device is about to sent a
DTIM. This is the right moment to enqueue Content After DTIM Beacon
(CAB).

However, wfx_suspend_resume_mc() is also called when the DTIM period
ends. Until now, this event did also trig CAB.

Note this issue did not have too much impact since when a CAB is sent
outside of DTIM window, an error is reported by the firmware and
mac80211 retries to send the data.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-6-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:27 +02:00
Jérôme Pouiller
dd5eba1bb5 staging: wfx: fix support for AP that do not support PS-Poll
When multiple virtual interfaces (on different channels) are in use, the
device ask to activate Power Save on station interfaces. The device
developers recommends to use legacy PS-Poll in this case since it is the
mode that disturb the less the other interface. However, some AP start
to not answer anymore to PS-Poll. The device is able to detect this case
and return a special warning in this case.

So, this commit catch the warning and force usage of FastPS in this
case.

In order to confuse the less possible the other interface a small FastPS
period is used (30ms).

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-5-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:27 +02:00
Jérôme Pouiller
7acf88f864 staging: wfx: mark chip frozen on error indication
When the driver receive an error indication, it means the chip won't
answer to any command anymore. Therefore, mark the chip frozen when it
happens (as when the driver receive an exception indication).

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-4-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:26 +02:00
Jérôme Pouiller
18f0dddf1f staging: wfx: change the field chip_frozen into a boolean
The field chip_frozen is declared as an integer, but it is only used as
a boolean. So, convert it into a boolean.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-3-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:26 +02:00
Jérôme Pouiller
7508f5d90d staging: wfx: fix (future) TDLS support
The device does not expect that the AP to have a link-id. However, TDLS
peers should have a a link-id.

The driver does not yet declare itself as supporting TDLS.
Notwithstanding, fix the code in anticipation of the support of TDLS.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200427134031.323403-2-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:14:26 +02:00
Suraj Upadhyay
2405c85691 staging: wfx: cleanup long lines in data_tx.c
Break lines with length over 80 characters to
conform to the linux coding style and refactor
wherever necessary.

Reviewed-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Signed-off-by: Suraj Upadhyay <usuraj35@gmail.com>
Link: https://lore.kernel.org/r/20200425113234.GA14492@blackclown
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-28 14:02:59 +02:00
Julian Wiedmann
19d4c761c1 s390/qdio: remove always-true condition
buf_in_between() gets passed q->u.in.ack_start as 'bufnr' parameter.

The ack_start always ranges between 0 and QDIO_MAX_BUFFERS_PER_Q - 1,
so the subsequent check will always return true. Remove it.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:48 +02:00
Julian Wiedmann
9b7012dfc3 s390/qdio: de-duplicate tiqdio_inbound_processing()
Except for some initial thinint-only steps, the processing is identical
to the non-thinint case. So re-use the existing helper.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:48 +02:00
Julian Wiedmann
d188cac397 s390/qdio: keep track of allocated queue count
Knowing how many queues we initially allocated allows us to
1) sanity-check a subsequent qdio_establish() request, and
2) walk the queue arrays without further checks. Apply this while
   cleanly splitting qdio_free_queues() into two separate helpers.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Steffen Maier <maier@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:48 +02:00
Julian Wiedmann
2a7cf35c40 s390/qdio: roll-back after queue allocation error
When qdio_allocate_qs() fails, have it deal with its previous
allocations.
This way qdio_allocate() doesn't need to clean up afterwards.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Steffen Maier <maier@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:47 +02:00
Julian Wiedmann
edbf3b2a87 s390/qdio: do more fine-grained allocation roll-back
Instead of having a catch-all qdio_release_memory() helper, free the
individual allocations from the respective error path.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Steffen Maier <maier@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:47 +02:00
Julian Wiedmann
3050f022df s390/qdio: consolidate thinint init/exit
Wrap the init/exit steps for thinint into a single helper that follows
the established naming scheme.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Steffen Maier <maier@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:47 +02:00
Julian Wiedmann
75e82bec6b s390/qdio: put thinint indicator after early error
qdio_establish() calls qdio_setup_thinint() via qdio_setup_irq().
If the subsequent qdio_establish_thinint() fails, we miss to put the
DSCI again. Thus the DSCI isn't available for re-use. Given enough of
such errors, we could end up with having only the shared DSCI available.

Merge qdio_setup_thinint() into qdio_establish_thinint(), and deal with
such an error internally.

Fixes: 779e6e1c72 ("[S390] qdio: new qdio driver.")
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:47 +02:00
Julian Wiedmann
68a381746f s390/qdio: tear down thinint indicator after early error
qdio_establish() calls qdio_establish_thinint(), but later has an error
exit path that doesn't roll this call back. Fix it.

Fixes: 779e6e1c72 ("[S390] qdio: new qdio driver.")
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:47 +02:00
Julian Wiedmann
7b942b4be9 s390/qdio: consistently restore the IRQ handler
For rolling back after an error, qdio_establish() calls qdio_shutdown().
If the error occurs early enough, then the qdio_irq's state still is
QDIO_IRQ_STATE_INACTIVE and qdio_shutdown() does nothing.

But at _any_ point where qdio_establish() bails out in this way,
qdio_setup_irq() will have already replaced the IRQ handler. This then
won't be restored after an early error, and the device can end up being
returned to the device driver with qdio's IRQ handler still installed.

Slightly reorder qdio_setup_irq() so we can be 100% sure that the IRQ
handler was replaced. Then fix the bug in qdio_establish() by calling a
helper that rolls back only the IRQ handler modification.

Also use the new helper in qdio_shutdown() to keep things in sync, and
slightly clean up the locking while doing so.
This makes minor semantical changes, but holding setup_mutex gives us
sufficient leeway to eg. pull qdio_shutdown_thinint() outside of the
ccwdev lock's scope.

Fixes: 779e6e1c72 ("[S390] qdio: new qdio driver.")
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:47 +02:00
Pierre Morel
de267a7c71 s390/pci: Documentation for zPCI
There are changes in the usage of PCI for the user:
 - new kernel parameter
 - modification of the way functions are enumerated

Let's document these.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:47 +02:00
Pierre Morel
53dd462ac4 s390/pci: Do not disable PF when VFs exist
The Physical function should not be disabled until no virtual
functions depends on it.
Let's force the user to first use echo 0 > sriov_numfs before
allowing to disable the PF with echo 0 > power.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:47 +02:00
Pierre Morel
44510d6fa0 s390/pci: Handling multifunctions
We allow multiple functions on a single bus.
We suppress the ZPCI_DEVFN definition and replace its
occurences with zpci->devfn.

We verify the number of device during the registration.

There can never be more domains in use than existing
devices, so we do not need to verify the count of domain
after having verified the count of devices.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:47 +02:00
Pierre Morel
65e450a9f9 s390/pci: Adding bus resource
The current PCI implementation do not provide a bus resource.
This leads to a notice being print at boot.
Let's do it more nicely and provide the bus resource.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:46 +02:00
Pierre Morel
f606b3ef47 s390/pci: adapt events for zbus
Simplify the event handling.
Set the zpci state explicitly.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:46 +02:00
Pierre Morel
05bc1be6db s390/pci: create zPCI bus
The zPCI bus is in charge to handle common zPCI resources for
zPCI devices.

Creating the zPCI bus, the PCI bus, the zPCI devices and the
PCI devices and hotplug slots
done in a specific order:
- PCI hotplug slot creation needs a PCI bus
- PCI bus needs a PCI domain
  which is reported by the pci_domain_nr() when setting up the
  host bridge
- PCI domain is set from the zPCI with devfn 0
  this is necessary to have a reproducible enumeration

Therefore we can not create devices or hotplug slots for any PCI
device associated with a zPCI device before having discovered
the function zero of the bus.

The discovery and initialization of devices can be done at several
points in the code:
- On Events, serialized in a thread context
- On initialization, in the kernel init thread context
- When powering on the hotplug slot, in a user thread context

The removal of devices and their parent bus may also be done on
events or for devices when powering down the slot.

To guarantee the existence of the bus and devices until they are
no more needed we use kref in zPCI bus and introduce a reference
count in the zPCI devices.

In this patch the zPCI bus still only accept a device with
a devfn 0.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:46 +02:00
Pierre Morel
c9a1752b84 s390/pci: define RID and RID available
Firmware provides the bus/devfn part of the PCI addresses of a zPCI
function inside the new field RID of the CLP query PCI function
with a bit to know if this field is available to use.

Let's add these fields to the clp_rsp_query_pci structure,
add corresponding fields to zdev and initialize them.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:46 +02:00
Pierre Morel
6cf17f9a67 s390/pci: define kernel parameters for PCI multifunction
Using PCI multifunctions in S390 is a new feature we may want
to ignore to continue provide the same topology as in the past
to userland even if the configuration supports exposing the
topology of a multi-Function device.

A new boolean parameters allows to overwrite the kernel
pci configuration:

- pci=norid when on, disallow the use a new firmware field,
  RID, which provides the PCI <bus>:<device>.<function> part
  of the PCI address.

To be used in the following patches and satisfy the checkpatch.pl
the variable is exposed in pci.h

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:46 +02:00
Pierre Morel
d08d6f5d75 s390/pci: adaptation of iommu to multifunction
In the future the bus sysdata may not directly point to the
zpci_dev.

In preparation of upcoming patches let us abstract the
access to the zpci_dev from the device inside the pci device.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:46 +02:00
Alexander Schmidt
e6ab7490ff s390/pci: Expose new port attribute for PCIe functions
Add SysFS attribute that provides the port number for PCI functions
representing a single port of a multi-port device.

Signed-off-by: Alexander Schmidt <alexs@linux.ibm.com>
Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2020-04-28 13:49:46 +02:00
Linus Walleij
8312d50b3f gpio fixes for v5.7-rc3
- fix set_config in pca953x
 - improve robustness of the new line watch/unwatch ioctl()
 - fix a bug with caling a sleeping function with spinlock taken
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEFp3rbAvDxGAT0sefEacuoBRx13IFAl6hu14ACgkQEacuoBRx
 13KESg//SGOW6MigYFT+b/kl7rfhcvYn+iQQApsPu8a8uRBZHmzo/7Hb/a+UHScZ
 m8s7UW8ddoDo0lZ2iBD1P5Gns4Uu/iMJ1kdztOJtsUqDDfx8G71Qhty3yOuCRcsJ
 Q85i6MPitRSDbLm/lWOasf+N0C99HK52xf1AUHF5jqY3ITqEKM8I3lzZdWL+M3ab
 RkZbSYMGLq/szOY+9G8xquvIsfKRzdn7ATI6IbGUssBsASTKu1j46EbrqWKcdA+E
 MwVVCIf/yvnfhMsx26sKeRcedx15sFpDwjg044hFjv3nfmPYfvlGy7HGpidhqxn5
 c1mRxaEI/oUr934XaNop0HqR9+0UbyY2f8x0Ely3N4pVcKOuHGqNKWU1kBfw8R3j
 TkNB2o6yzwFtfIRR6W49MNUFZGYw4xDOuq5HUmAeJvMN8oVadrAD5Ar7HsYHgrLA
 tqyYlyp1tvmIksHrl2gef+qugixTyFo0l3puEl8XaAV8AoSb723MO63lz8CxQY4+
 Nqqi/g+YVUNnZRdstkBCoD9VdZ+XObLi1Hp5wum2ceP7TeWTn0W2TbN0lVT+XNfP
 nIDKwgs+QB6uXQHV0AwkpENVhD2/6yQqbWZlz3LKfbAsE9ECKPA3++6f5sgtuNh5
 bPznzav0tAB5fdHAGByY4LkJIsExwUxOE9TbVICZF47SXM93rqw=
 =/p1V
 -----END PGP SIGNATURE-----

Merge tag 'gpio-fixes-for-v5.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into fixes

gpio fixes for v5.7-rc3

- fix set_config in pca953x
- improve robustness of the new line watch/unwatch ioctl()
- fix a bug with caling a sleeping function with spinlock taken
2020-04-28 13:38:47 +02:00
Wolfram Sang
8839e4605e Revert "i2c: tegra: Better handle case where CPU0 is busy for a long time"
This reverts commit a900aeac25 because
regressions were showing up.

Suggested-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/dmaengine/20200319201140.17451-1-digetx@gmail.com/
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
2020-04-28 13:31:17 +02:00
Wolfram Sang
deb821ffe2 Revert "i2c: tegra: Synchronize DMA before termination"
This reverts commit 8814044fe0 because
regressions were showing up.

Suggested-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/dmaengine/20200319201140.17451-1-digetx@gmail.com/
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
2020-04-28 13:31:16 +02:00