Commit graph

429,015 commits

Author SHA1 Message Date
H Hartley Sweeten
8429504a57 staging: comedi: pcl816: only hook up async command support if DMA is available
This driver only supports async commands if a DMA channel is available. Modify
the subdevice init so that the command support only gets hooked up if we can
do DMA.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:11 -08:00
H Hartley Sweeten
885a7da351 staging: comedi: pcl816: remove unreachable interrupt handler code
According to the users manual, when using interrupt (non-DMA) transfers
this hardware generates an interrupt at the start of a conversion. This
requires the interrupt routine to busywait until the end-of-conversion.
It appears this was unreliable and interrupt only async command support
was removed at some time. Async command support is still available when
DMA is used.

Remove the unreachable interrupt only handler code.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:11 -08:00
H Hartley Sweeten
127005717d staging: comedi: pcl818: interrupt handlers should not busywait
The interrupt is only generated by the hardware at the completion of
an A/D conversion. Because of this the sanity check to make sure that
the A/D conversion is complete and data is available is probably
unnecessary but it doesn't hurt anything.

The busywait loop is a different issue. Interrupt routines should not
busywait. That's just mean...

Remove the bustwait and use pcl818_ai_eoc() to check for the end-of-
conversion.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:11 -08:00
H Hartley Sweeten
db0446d0e2 staging: comedi: pcl812: interrupt handlers should not busywait
The interrupt is only generated by the hardware at the completion of
an A/D conversion. Because of this the sanity check to make sure that
the A/D conversion is complete and data is available is probably
unnecessary but it doesn't hurt anything.

The busywait loop is a different issue. Interrupt routines should not
busywait. That's just mean...

Remove the bustwait and use pcl812_ai_eoc() to check for the end-of-
conversion.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:11 -08:00
H Hartley Sweeten
080ee8820d staging: comedi: pcl816: remove 'dmasamplesize' from private data
This member of the private data is not used. Remove it.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:11 -08:00
H Hartley Sweeten
b0b908549e staging: comedi: pcl812: remove 'ai_data_len' from private data
This member of the private data is only used in the initial dma setup.
Refactor that code to not need it and remove the member.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:10 -08:00
H Hartley Sweeten
ab72ef30da staging: comedi: pcl818: factor out dma setup to helper functions
To assist in cleaning up the the rest of the driver, factor the initial
dma setup and the next dma buffer setup into helper functions.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:10 -08:00
H Hartley Sweeten
82ac3e7ad1 staging: comedi: pcl816: factor out dma setup to helper functions
To assist in cleaning up the the rest of the driver, factor the initial
dma setup and the next dma buffer setup into helper functions.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:10 -08:00
H Hartley Sweeten
9173bf10f9 staging: comedi: pcl812: factor out dma setup to helper functions
To assist in cleaning up the the rest of the driver, factor the initial
dma setup and the next dma buffer setup into helper functions.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:10 -08:00
H Hartley Sweeten
00aba6e7b5 staging: comedi: pcl818: remove 'neverending_ai' from private data
This member of the private data is not needed. We can check the stop_src
to determine this information:

  neverending_ai -> cmd->stop_src == TRIG_NONE
  !neverending_ai -> cmd->stop_src == TRIG_COUNT

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:10 -08:00
H Hartley Sweeten
68d7808f09 staging: comedi: pcl816: remove 'ai_neverending' from private data
This member of the private data is not needed. We can check the stop_src
to determine this information:

  ai_neverending -> cmd->stop_src == TRIG_NONE
  !ai_neverending -> cmd->stop_src == TRIG_COUNT

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:09 -08:00
H Hartley Sweeten
be40b46d6a staging: comedi: pcl812: remove 'ai_neverending' from private data
This member of the private data is not needed. We can check the stop_src
to determine this information:

  ai_neverending -> cmd->stop_src == TRIG_NONE
  !ai_neverending -> cmd->stop_src == TRIG_COUNT

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:09 -08:00
H Hartley Sweeten
80cc64863a staging: comedi: pcl818: fix board resource region request
Some of the PCL-818 compatible boards have a FIFO that can be used
when running analog input async commands. This FIFO increased the
resource range used by the driver.

Request the correct resources used by the board even if the FIFO is
not used. This prevents another driver from trying to use the I/O
space.

Modify the attach so that the 'usefifo' flag is only set if we have
and IRQ, the board has a FIFO, and the user wahts to use it.

Fix pcl818_reset() so that the FIFO is always flushed and disabled
if it exists.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:09 -08:00
H Hartley Sweeten
569d138fc4 staging: comedi: pcl818: remove pcl818_check()
This function is a _very_ simplified probe that tried to verify that
the driver is being attached to a PCL-818 compatible board. The function
simply writes some values to specific registers then reads back the
values to see if they are the same.

It's possible that the user could try to attach this driver to a non-
compatible board but the check would still pass depending on the register
map of the board.

Just remove the buggy function to simplify the attach a bit.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:09 -08:00
H Hartley Sweeten
3b84e790cf staging: comedi: pcl816: remove pcl816_check()
This function is a _very_ simplified probe that tried to verify that
the driver is being attached to a PCL-816 compatible board. The function
simply writes some values to specific registers then reads back the
values to see if they are the same.

It's possible that the user could try to attach this driver to a non-
compatible board but the check would still pass depending on the register
map of the board.

Just remove the buggy function to simplify the attach a bit.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 17:06:09 -08:00
Dave Airlie
45db98e542 Merge branch 'drm-fixes-3.14' of git://people.freedesktop.org/~agd5f/linux into drm-fixes
one more radeon fix.

* 'drm-fixes-3.14' of git://people.freedesktop.org/~agd5f/linux:
  drm/radeon/atom: select the proper number of lanes in transmitter setup
2014-03-07 09:27:22 +10:00
Alex Deucher
d03874c881 drm/radeon/atom: select the proper number of lanes in transmitter setup
We need to check for DVI vs. HDMI when setting up duallink since
HDMI is single link only.  Fixes 4k modes on newer asics.

bug:
https://bugs.freedesktop.org/show_bug.cgi?id=75223

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
2014-03-06 18:09:52 -05:00
Russell King
f50d7146a2 MAINTAINERS: add maintainer entry for TDA998x driver
Add a maintainers entry for the TDA998x driver.  Rob Clark has handed
this driver over to me to look after.

Acked-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2014-03-07 09:05:45 +10:00
Gerd Hoffmann
77ac9a05d4 drm: fix bochs kconfig dependencies
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2014-03-07 09:05:10 +10:00
Dave Airlie
ae693400bd Merge branch 'drm-armada-fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-cubox into drm-fixes
fix for kfifo api change.
* 'drm-armada-fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-cubox:
  DRM: armada: fix use of kfifo_put()
2014-03-07 09:04:32 +10:00
Dave Airlie
7a4ee320cd Merge branch 'drm-fixes-3.14' of git://people.freedesktop.org/~agd5f/linux into drm-fixes
a few more radeon fixes.

* 'drm-fixes-3.14' of git://people.freedesktop.org/~agd5f/linux:
  drm/radeon/dpm: fix typo in EVERGREEN_SMC_FIRMWARE_HEADER_softRegisters
  drm/radeon/cik: fix typo in documentation
  drm/radeon: silence GCC warning on 32 bit
  drm/radeon: resume old pm late
  drm/radeon: TTM must be init with cpu-visible VRAM, v2
2014-03-07 08:41:12 +10:00
Sabrina Dubroca
c88507fbad ipv6: don't set DST_NOCOUNT for remotely added routes
DST_NOCOUNT should only be used if an authorized user adds routes
locally. In case of routes which are added on behalf of router
advertisments this flag must not get used as it allows an unlimited
number of routes getting added remotely.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-06 17:29:27 -05:00
Mark Hounschell
002de0ba87 staging: dgap: Simplify and cleanup dgap_init_module function
This patch simplifies and cleans up the dgap_init_module function. It also fixes
a possible double free condition as a result pci_unregister_driver possibly
being called twice.

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:16:40 -08:00
Mark Hounschell
434b679bdb staging: dgap: Remove printks associated with sysfile creation
This patch removes printks associated with sysfile creation
and changes the dgap_create_driver_sysfiles function to return
an int so we can check for errors in the sysfile creation
process.

The printk's were flagged by checkpatch but then
driver_create_file was flagged by checkpatch for
not checking its return. So we remove the printk's
and check the return of driver_create_file.

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:16:40 -08:00
Mark Hounschell
6126022800 staging: dgap: Remove some dead code
This patch removes more dead code and code associated
with that dead code. The from_user variable in the
dgap_tty_write function was never true. The code under
its test was never being executed. So variables and
functions supporting only that code are also dead.

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:16:39 -08:00
Mark Hounschell
8fc324e4ae staging: dgap: fix a few more 80+ lines as reported by checkpatch
This patch fixes a few 80+ char lines as reported by checkpatch

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:16:39 -08:00
Mark Hounschell
8a2c9c44ce staging: dgap: fix a few more 80+ lines as reported by checkpatch
This patch fixes a few 80+ char lines as reported by checkpatch

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:16:39 -08:00
Mark Hounschell
6045b6af49 staging: dgap: fix a few more 80+ lines as reported by checkpatch
This patch fixes a few 80+ char lines as reported by checkpatch

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:16:39 -08:00
Mark Hounschell
2f60b3336c staging: dgap: fix a few 80+ char lines as reported by checkpatch
This patch fixes a few of the many 80+ character lines
as reported by checkpatch

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:14:37 -08:00
Mark Hounschell
af5b80bef9 staging: dgap: fix suspect code indent for conditional statements checkpatch warning
This patch fixes a checkpatch warning for
suspect code indent for conditional statements

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:14:37 -08:00
Mark Hounschell
c4875ebf2e staging: dgap: fix checkpatch warning on sscanf usage
This patch fixes a checkpatch warning for not checking
the return value of sscanf.

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:14:37 -08:00
Mark Hounschell
c96f565e88 staging: dgap: Remove module param and sysfs var rawreadok
This patch removes the rawreadok module param and sysfs var
previously used to enable flip buffer bypass. Code dealing
with that param was removed previously.

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:14:37 -08:00
Mark Hounschell
a9072fe056 staging: dgap: remove unnecessary dgap_global_lock
dgap_global_lock is no longer required. This patch
removes it.

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:14:37 -08:00
Mark Hounschell
54794d196b staging: dgap: Don't remove sysfs group we failed to create
We should not remove a sysfs group we failed to create

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:14:36 -08:00
Mark Hounschell
249e7343c4 staging: dgap: fix some pr_warns with new lines in the string
This patch fixes some pr_warns that have newline
chars in the string because they mess up the
output.

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:12:47 -08:00
Mark Hounschell
82ed97747d staging: dgap: Add curly braces back in for Multi-line indent block
Multi-line indent blocks get curly braces for readability.

Signed-off-by: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:12:47 -08:00
Mark Hounschell
3eb141511b staging: dgap: get rid of nasty DGAP_VERIFY_BOARD macro
This patch replaces the DGAP_VERIFY_BOARD macro with
the dgap_verify_board function because of checkpatch error.

Signed-off-by: Mark Hounschell <markh@compro.net>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:10:58 -08:00
Mark Hounschell
dc7fcc96d9 staging: dgap: Remove more degug/tracing code
This patch removes more, if not all, of the debug/tracing code

Signed-off-by: Mark Hounschell <markh@compro.net>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:10:58 -08:00
Mark Hounschell
9b073ac53e staging: dgap: Fix various previously missed checkpatch errors
This patch fixes various small checkpatch errors
I missed in patches 01-10.

Remove check for kfree of brd->channels as kfree is safe.
Also there is no need to set it to NULL after freeing it.

Remove a useless cast for a kzalloc return value.

Remove double negative test in a white space fix line.

Signed-off-by: Mark Hounschell <markh@compro.net>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-03-06 14:10:58 -08:00
Amir Vadai
97989356af net/mlx4_core: mlx4_init_slave() shouldn't access comm channel before PF is ready
Currently, the PF call to pci_enable_sriov from the PF probe function
stalls for 10 seconds times the number of VFs probed on the host. This
happens because the way for such VFs to determine of the PF
initialization finished, is by attempting to issue reset on the
comm-channel and get timeout (after 10s).

The PF probe function is called from a kenernel workqueue, and therefore
during that time, rcu lock is being held and kernel's workqueue is
stalled. This blocks other processes that try to use the workqueue
or rcu lock.  For example, interface renaming which is calling
rcu_synchronize is blocked, and timedout by systemd.

Changed mlx4_init_slave() to allow VF probed on the host to immediatly
detect that the PF is not ready, and return EPROBE_DEFER instantly.

Only when the PF finishes the initialization, allow such VFs to
access the comm channel.

This issue and fix are relevant only for probed VFs on the hypervisor,
there is no way to pass this information to a VM until comm channel is
ready, so in a VM, if PF is not ready, the first command will be timedout
after 10 seconds and return EPROBE_DEFER.

Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-06 17:09:04 -05:00
Amir Vadai
57352ef4f5 net/mlx4_core: Fix memory access error in mlx4_QUERY_DEV_CAP_wrapper()
Fix a regression introduced by [1]. outbox was accessed instead of
outbox->buf. Typo was copy-pasted to [2] and [3].

[1] - cc1ade9 mlx4_core: Disable memory windows for virtual functions
[2] - 4de6580 mlx4_core: Add support for steerable IB UD QPs
[3] - 7ffdf72 net/mlx4_core: Add basic support for TCP/IP offloads under
      tunneling

Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-06 17:09:04 -05:00
Sasha Levin
5bd4e4c158 bonding: correctly handle out of range parameters for lp_interval
We didn't correctly check cases where the value for lp_interval is not
within the legal range due to a missing table terminator.

This would let userspace trigger a kernel panic by specifying a value out
of range:

	echo -1 > /sys/devices/virtual/net/bond0/bonding/lp_interval

Introduced by commit 4325b374f8 ("bonding: convert lp_interval to use
the new option API").

Acked-by: Nikolay Aleksandrov <nikolay@redhat.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-06 17:06:17 -05:00
Alex Deucher
13714323f8 drm/radeon/dpm: fix typo in EVERGREEN_SMC_FIRMWARE_HEADER_softRegisters
Should be at 0x8 rather than 0.

fixes:
https://bugzilla.kernel.org/show_bug.cgi?id=60523

Noticed by ArtForz on #radeon

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
2014-03-06 16:46:58 -05:00
Alex Deucher
972c5ddb17 drm/radeon/cik: fix typo in documentation
Copy-paste typo.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2014-03-06 16:46:57 -05:00
Paul Bolle
0d997b6857 drm/radeon: silence GCC warning on 32 bit
Building radeon_ttm.o on 32 bit x86 triggers a warning:
    In file included from include/asm-generic/bug.h:13:0,
                     from [...]/arch/x86/include/asm/bug.h:38,
                     from include/linux/bug.h:4,
                     from include/drm/drm_mm.h:39,
                     from include/drm/drm_vma_manager.h:26,
                     from include/drm/ttm/ttm_bo_api.h:35,
                     from drivers/gpu/drm/radeon/radeon_ttm.c:32:
    drivers/gpu/drm/radeon/radeon_ttm.c: In function 'radeon_ttm_gtt_read':
    include/linux/kernel.h:712:17: warning: comparison of distinct pointer types lacks a cast [enabled by default]
      (void) (&_min1 == &_min2);  \
                     ^
    drivers/gpu/drm/radeon/radeon_ttm.c:938:22: note: in expansion of macro 'min'
       ssize_t cur_size = min(size, PAGE_SIZE - off);
                          ^

Silence this warning by using min_t(). Since cur_size will never be
negative and its upper bound is PAGE_SIZE, we can change its type to
size_t and use min_t(size_t, [...]) here.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
2014-03-06 16:46:56 -05:00
Alex Deucher
bc6a62955f drm/radeon: resume old pm late
Moving the pm resume up in the init order to fix
dpm seems to have regressed somes cases with the old
pm code.  Move it back to late resume.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2014-03-06 16:46:56 -05:00
Lauri Kasanen
14eedc32a3 drm/radeon: TTM must be init with cpu-visible VRAM, v2
Without this, a bo may get created in the cpu-inaccessible vram.
Before the CP engines get setup, all copies are done via cpu memcpy.

This means that the cpu tries to read from inaccessible memory, fails,
and the radeon module proceeds to disable acceleration.

Doing this has no downsides, as the real VRAM size gets set as soon as the
CP engines get init.

This is a candidate for 3.14 fixes.

v2: Add comment on why the function is used

Signed-off-by: Lauri Kasanen <cand@gmx.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Cc: stable@vger.kernel.org
2014-03-06 16:46:55 -05:00
Anton Nayshtut
d2d273ffab ipv6: Fix exthdrs offload registration.
Without this fix, ipv6_exthdrs_offload_init doesn't register IPPROTO_DSTOPTS
offload, but returns 0 (as the IPPROTO_ROUTING registration actually succeeds).

This then causes the ipv6_gso_segment to drop IPv6 packets with IPPROTO_DSTOPTS
header.

The issue detected and the fix verified by running MS HCK Offload LSO test on
top of QEMU Windows guests, as this test sends IPv6 packets with
IPPROTO_DSTOPTS.

Signed-off-by: Anton Nayshtut <anton@swortex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-06 16:35:55 -05:00
Anton Blanchard
d746ca9561 ibmveth: Fix endian issues with MAC addresses
The code to load a MAC address into a u64 for passing to the
hypervisor via a register is broken on little endian.

Create a helper function called ibmveth_encode_mac_addr
which does the right thing in both big and little endian.

We were storing the MAC address in a long in struct ibmveth_adapter.
It's never used so remove it - we don't need another place in the
driver where we create endian issues with MAC addresses.

Signed-off-by: Anton Blanchard <anton@samba.org>
Cc: stable@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-06 16:26:41 -05:00
Anton Blanchard
0a13404dd3 net: unix socket code abuses csum_partial
The unix socket code is using the result of csum_partial to
hash into a lookup table:

	unix_hash_fold(csum_partial(sunaddr, len, 0));

csum_partial is only guaranteed to produce something that can be
folded into a checksum, as its prototype explains:

 * returns a 32-bit number suitable for feeding into itself
 * or csum_tcpudp_magic

The 32bit value should not be used directly.

Depending on the alignment, the ppc64 csum_partial will return
different 32bit partial checksums that will fold into the same
16bit checksum.

This difference causes the following testcase (courtesy of
Gustavo) to sometimes fail:

#include <sys/socket.h>
#include <stdio.h>

int main()
{
	int fd = socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0);

	int i = 1;
	setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &i, 4);

	struct sockaddr addr;
	addr.sa_family = AF_LOCAL;
	bind(fd, &addr, 2);

	listen(fd, 128);

	struct sockaddr_storage ss;
	socklen_t sslen = (socklen_t)sizeof(ss);
	getsockname(fd, (struct sockaddr*)&ss, &sslen);

	fd = socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0);

	if (connect(fd, (struct sockaddr*)&ss, sslen) == -1){
		perror(NULL);
		return 1;
	}
	printf("OK\n");
	return 0;
}

As suggested by davem, fix this by using csum_fold to fold the
partial 32bit checksum into a 16bit checksum before using it.

Signed-off-by: Anton Blanchard <anton@samba.org>
Cc: stable@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-06 16:19:33 -05:00