platform/kernel/linux-rpi.git
9 years agotools/virtio: add virtio 1.0 in virtio_test
Michael S. Tsirkin [Sun, 14 Dec 2014 20:49:16 +0000 (22:49 +0200)]
tools/virtio: add virtio 1.0 in virtio_test

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agotools/virtio: enable -Werror
Michael S. Tsirkin [Sun, 14 Dec 2014 21:26:54 +0000 (23:26 +0200)]
tools/virtio: enable -Werror

Seems to mostly be a positive.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agotools/virtio: 64 bit features
Michael S. Tsirkin [Sun, 14 Dec 2014 20:52:25 +0000 (22:52 +0200)]
tools/virtio: 64 bit features

Missed one place where vringh_test used
long to pass features. Fix it up to u64.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agotools/virtio: fix vringh test
Michael S. Tsirkin [Sun, 14 Dec 2014 19:46:04 +0000 (21:46 +0200)]
tools/virtio: fix vringh test

Include missing virtio_config.h

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agotools/virtio: more stubs
Michael S. Tsirkin [Mon, 15 Dec 2014 21:47:07 +0000 (23:47 +0200)]
tools/virtio: more stubs

As usual, add more stubs to fix test build after main
codebase changes.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio: core support for config generation
Michael S. Tsirkin [Sun, 14 Dec 2014 14:55:44 +0000 (16:55 +0200)]
virtio: core support for config generation

virtio 1.0 spec says:

Drivers MUST NOT assume reads from fields greater than 32 bits wide are
atomic, nor are reads from multiple fields: drivers SHOULD read device
configuration space fields like so:
u32 before, after;
do {
before = get_config_generation(device);
// read config entry/entries.
after = get_config_generation(device);
} while (after != before);

Do exactly this, for transports that support it.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci: add VIRTIO_PCI_NO_LEGACY
Michael S. Tsirkin [Thu, 11 Dec 2014 11:46:52 +0000 (13:46 +0200)]
virtio_pci: add VIRTIO_PCI_NO_LEGACY

Add macro to disable all legacy register defines.
Helpful to make sure legacy macros don't leak
through into modern code.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci: move probe to common file
Michael S. Tsirkin [Thu, 11 Dec 2014 19:47:49 +0000 (21:47 +0200)]
virtio_pci: move probe to common file

It turns out this make everything easier.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci_common.h: drop VIRTIO_PCI_NO_LEGACY
Michael S. Tsirkin [Thu, 11 Dec 2014 12:13:16 +0000 (14:13 +0200)]
virtio_pci_common.h: drop VIRTIO_PCI_NO_LEGACY

Legacy drivers use virtio_pci_common.h too, we should not
define VIRTIO_PCI_NO_LEGACY there.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_config: fix virtio_cread_bytes
Michael S. Tsirkin [Thu, 11 Dec 2014 13:54:07 +0000 (15:54 +0200)]
virtio_config: fix virtio_cread_bytes

virtio_cread_bytes is implemented incorrectly in case length happens to
be 2,4 or 8 bytes: transports and devices will assume it's an integer
value that has to be converted to LE format.

Let's just do multiple 1-byte reads: this also makes life easier
for transports who only need to implement 1,2,4 and 8 byte reads.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio: set VIRTIO_CONFIG_S_FEATURES_OK on restore
Michael S. Tsirkin [Thu, 11 Dec 2014 11:37:13 +0000 (13:37 +0200)]
virtio: set VIRTIO_CONFIG_S_FEATURES_OK on restore

virtio 1.0 devices require that drivers set VIRTIO_CONFIG_S_FEATURES_OK
after finalizing features.
virtio core missed doing this on restore, fix it up.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio_ccw: finalize_features error handling
Cornelia Huck [Tue, 9 Dec 2014 10:46:59 +0000 (11:46 +0100)]
virtio_ccw: finalize_features error handling

We previously tried to use device even if finalize_features failed, but
that's wrong since driver and device are now out of sync.

Fail probe if we detect failures during finalize_features.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_ccw: future-proof finalize_features
Michael S. Tsirkin [Tue, 9 Dec 2014 12:46:44 +0000 (14:46 +0200)]
virtio_ccw: future-proof finalize_features

We never negotiate revision > 1, but just to
make this code more likely to work when we do,
require VERSION_1 with any revision >= 1.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio_pci: rename virtio_pci -> virtio_pci_common
Michael S. Tsirkin [Mon, 8 Dec 2014 14:39:45 +0000 (16:39 +0200)]
virtio_pci: rename virtio_pci -> virtio_pci_common

kbuild does not seem to like it when we name source
files same as the module.
Let's rename virtio_pci -> virtio_pci_common,
and get rid of #include-ing c files.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci: update file descriptions and copyright
Michael S. Tsirkin [Mon, 8 Dec 2014 10:31:02 +0000 (12:31 +0200)]
virtio_pci: update file descriptions and copyright

There's been a lot of changes since 2007.
List main authors, add Red Hat copyright.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci: split out legacy device support
Michael S. Tsirkin [Sun, 7 Dec 2014 16:41:16 +0000 (18:41 +0200)]
virtio_pci: split out legacy device support

Move everything dealing with legacy devices out to virtio_pci_legacy.c.
Expose common code APIs in virtio_pci.h

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci: setup config vector indirectly
Michael S. Tsirkin [Sun, 7 Dec 2014 16:18:09 +0000 (18:18 +0200)]
virtio_pci: setup config vector indirectly

config vector setup is version specific, do it indirectly.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci: setup vqs indirectly
Michael S. Tsirkin [Sun, 7 Dec 2014 16:03:49 +0000 (18:03 +0200)]
virtio_pci: setup vqs indirectly

VQ setup is mostly version-specific, add another level of indirection to
split the version-independent code out.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci: delete vqs indirectly
Michael S. Tsirkin [Sun, 7 Dec 2014 16:03:49 +0000 (18:03 +0200)]
virtio_pci: delete vqs indirectly

VQ deletion is mostly version-specific, add another level of indirection
to split the version-independent code out.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci: use priv for vq notification
Michael S. Tsirkin [Wed, 3 Dec 2014 16:01:58 +0000 (18:01 +0200)]
virtio_pci: use priv for vq notification

slightly reduce the amount of pointer chasing this needs to do.
More importantly, this will easily generalize to virtio 1.0.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci: free up vq->priv
Michael S. Tsirkin [Wed, 3 Dec 2014 15:50:50 +0000 (17:50 +0200)]
virtio_pci: free up vq->priv

We don't need to go from vq to vq info on
data path, so using direct vq->priv pointer for that
seems like a waste.

Let's build an array of vq infos, then we can use vq->index
for that lookup.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci: fix coding style for structs
Michael S. Tsirkin [Wed, 3 Dec 2014 14:34:30 +0000 (16:34 +0200)]
virtio_pci: fix coding style for structs

should be

struct foo {
}

not

struct foo
{
}

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_pci: add isr field
Michael S. Tsirkin [Tue, 2 Dec 2014 12:35:27 +0000 (14:35 +0200)]
virtio_pci: add isr field

Use isr field instead of direct access to ioaddr.
This way generalizes easily to virtio 1.0.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio: drop legacy_only driver flag
Michael S. Tsirkin [Thu, 4 Dec 2014 17:31:45 +0000 (19:31 +0200)]
virtio: drop legacy_only driver flag

legacy_only flag is now unused, drop it from core.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio_balloon: drop legacy_only driver flag
Michael S. Tsirkin [Thu, 4 Dec 2014 17:32:02 +0000 (19:32 +0200)]
virtio_balloon: drop legacy_only driver flag

we have blacklisted balloon in core, no need
for a driver flag.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio_ccw: rev 1 devices set VIRTIO_F_VERSION_1
Michael S. Tsirkin [Thu, 4 Dec 2014 17:16:43 +0000 (19:16 +0200)]
virtio_ccw: rev 1 devices set VIRTIO_F_VERSION_1

What does it mean if rev 1 device does not set
VIRTIO_F_VERSION_1? E.g. is it native endian?

Let's not even try to drive such devices:
fail attempts to finalize features.
virtio core will detect this and bail out.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio: allow finalize_features to fail
Michael S. Tsirkin [Thu, 4 Dec 2014 18:20:27 +0000 (20:20 +0200)]
virtio: allow finalize_features to fail

This will make it easy for transports to validate features and return
failure.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_ccw: legacy: don't negotiate rev 1/features
Michael S. Tsirkin [Thu, 4 Dec 2014 16:59:50 +0000 (18:59 +0200)]
virtio_ccw: legacy: don't negotiate rev 1/features

Legacy balloon device doesn't pretend to support revision 1 or 64 bit
features.

But just in case someone implements a broken one that does, let's not
even try to drive legacy only devices using revision 1, and let's not
give them a chance to say they support VIRTIO_F_VERSION_1 by not reading
or writing high feature bits.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio: add API to detect legacy devices
Michael S. Tsirkin [Thu, 4 Dec 2014 16:49:58 +0000 (18:49 +0200)]
virtio: add API to detect legacy devices

transports need to be able to detect legacy-only
devices (ATM balloon only) to use legacy path
to drive them.

Add a core API to do just that.
The implementation just blacklists balloon:
not too pretty, but let's not over-engineer.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio_console: fix sparse warnings
Michael S. Tsirkin [Mon, 1 Dec 2014 11:31:45 +0000 (13:31 +0200)]
virtio_console: fix sparse warnings

CHECK drivers/char/virtio_console.c
drivers/char/virtio_console.c:687:36: warning: incorrect type in
argument 1 (different address spaces)
drivers/char/virtio_console.c:687:36:    expected void [noderef]
<asn:1>*to
drivers/char/virtio_console.c:687:36:    got char *out_buf
drivers/char/virtio_console.c:790:35: warning: incorrect type in
argument 2 (different address spaces)
drivers/char/virtio_console.c:790:35:    expected char *out_buf
drivers/char/virtio_console.c:790:35:    got char [noderef]
<asn:1>*ubuf

fill_readbuf is reused with both kernel and userspace pointers,
depending on value of to_user flag.

Tag address parameter as __user, and cast to/from regular pointer type
when we know it's safe.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovhost: remove unnecessary forward declarations in vhost.h
Jason Wang [Thu, 27 Nov 2014 06:41:21 +0000 (14:41 +0800)]
vhost: remove unnecessary forward declarations in vhost.h

Signed-off-by: Jason Wang <jasowang@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio: drop VIRTIO_F_VERSION_1 from drivers
Michael S. Tsirkin [Mon, 1 Dec 2014 14:49:44 +0000 (16:49 +0200)]
virtio: drop VIRTIO_F_VERSION_1 from drivers

Core activates this bit automatically now,
drop it from drivers that set it explicitly.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio: make VIRTIO_F_VERSION_1 a transport bit
Michael S. Tsirkin [Mon, 1 Dec 2014 13:52:40 +0000 (15:52 +0200)]
virtio: make VIRTIO_F_VERSION_1 a transport bit

Activate VIRTIO_F_VERSION_1 automatically unless legacy_only
is set.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_balloon: add legacy_only flag
Michael S. Tsirkin [Mon, 1 Dec 2014 13:50:29 +0000 (15:50 +0200)]
virtio_balloon: add legacy_only flag

We have no plans to support virtio 1.0 in balloon driver.  Add an
explicit flag to mark it legacy only.

This will be used by follow-up patches.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_console: virtio 1.0 support
Michael S. Tsirkin [Mon, 1 Dec 2014 11:17:40 +0000 (13:17 +0200)]
virtio_console: virtio 1.0 support

Pretty straight-forward, just use accessors for all fields.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agoaf_packet: virtio 1.0 stubs
Michael S. Tsirkin [Sun, 23 Nov 2014 16:16:19 +0000 (18:16 +0200)]
af_packet: virtio 1.0 stubs

This merely fixes sparse warnings, without actually
adding support for the new APIs.

Still working out the best way to enable the new
functionality.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovhost/scsi: partial virtio 1.0 support
Michael S. Tsirkin [Sun, 23 Nov 2014 16:01:34 +0000 (18:01 +0200)]
vhost/scsi: partial virtio 1.0 support

Include all endian conversions as required by virtio 1.0.
Don't set virtio 1.0 yet, since that requires ANY_LAYOUT
which we don't yet support.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
9 years agovirtio_scsi: export to userspace
Michael S. Tsirkin [Sun, 23 Nov 2014 15:49:12 +0000 (17:49 +0200)]
virtio_scsi: export to userspace

Replace uXX by __uXX and _packed by __attribute((packed))
as seems to be the norm for userspace headers.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
9 years agovirtio_scsi: move to uapi
Michael S. Tsirkin [Sun, 23 Nov 2014 15:45:53 +0000 (17:45 +0200)]
virtio_scsi: move to uapi

Guests need to use virtio scsi API, so export it to uapi,
nice to e.g. qemu and will help us remember this file
affects ABI.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
9 years agovirtio_scsi: v1.0 support
Michael S. Tsirkin [Sun, 23 Nov 2014 15:28:57 +0000 (17:28 +0200)]
virtio_scsi: v1.0 support

Note: for consistency, and to avoid sparse errors,
  convert all fields, even those no longer in use
  for virtio v1.0.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
9 years agomacvtap: TUN_VNET_LE support
Michael S. Tsirkin [Sun, 23 Nov 2014 15:24:15 +0000 (17:24 +0200)]
macvtap: TUN_VNET_LE support

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
9 years agotun: TUN_VNET_LE support, fix sparse warnings for virtio headers
Michael S. Tsirkin [Thu, 23 Oct 2014 19:59:31 +0000 (22:59 +0300)]
tun: TUN_VNET_LE support, fix sparse warnings for virtio headers

Pretty straight-forward: convert all fields to/from
virtio endian-ness.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
9 years agotun: add VNET_LE flag
Michael S. Tsirkin [Tue, 18 Nov 2014 15:38:08 +0000 (17:38 +0200)]
tun: add VNET_LE flag

virtio 1.0 modified virtio net header format,
making all fields little endian.

Users can tweak header format before submitting it to tun,
but this means more data copies where none were necessary.
And if the iovec is in RO memory, this means we might
need to split iovec also means we might in theory overflow
iovec max size.

This patch adds a simpler way for applications to handle this,
using new "little endian" flag in tun.
As a result, tun simply byte-swaps header fields as appropriate.
This is a NOP on LE architectures.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agotun: drop most type defines
Michael S. Tsirkin [Wed, 19 Nov 2014 13:17:31 +0000 (15:17 +0200)]
tun: drop most type defines

It's just as easy to use IFF_ flags directly,
there's no point in adding our own defines.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agotun: move internal flag defines out of uapi
Michael S. Tsirkin [Wed, 19 Nov 2014 12:44:40 +0000 (14:44 +0200)]
tun: move internal flag defines out of uapi

TUN_ flags are internal and never exposed
to userspace. Any application using it is almost
certainly buggy.

Move them out to tun.c.

Note: we remove these completely in follow-up patches,
this code movement is split out for ease of review.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovhost/net: enable virtio 1.0
Michael S. Tsirkin [Fri, 24 Oct 2014 11:25:03 +0000 (14:25 +0300)]
vhost/net: enable virtio 1.0

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovhost/net: larger header for virtio 1.0
Michael S. Tsirkin [Fri, 24 Oct 2014 11:23:52 +0000 (14:23 +0300)]
vhost/net: larger header for virtio 1.0

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovhost/net: virtio 1.0 byte swap
Michael S. Tsirkin [Fri, 24 Oct 2014 11:19:48 +0000 (14:19 +0300)]
vhost/net: virtio 1.0 byte swap

I had to add an explicit tag to suppress compiler warning:
gcc isn't smart enough to notice that
len is always initialized since function is called with size > 0.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovhost: virtio 1.0 endian-ness support
Michael S. Tsirkin [Fri, 24 Oct 2014 11:04:47 +0000 (14:04 +0300)]
vhost: virtio 1.0 endian-ness support

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovhost: switch to __get/__put_user exclusively
Michael S. Tsirkin [Mon, 1 Dec 2014 15:39:39 +0000 (17:39 +0200)]
vhost: switch to __get/__put_user exclusively

Most places in vhost can use __get/__put_user rather than
get/put_user since addresses are pre-validated.
This should be good for performance, but this also
will help make code sparse-clean: get/put_user macros
don't play well with __virtioXX bitwise tags.
Switch to get/put_user to __ variants everywhere in vhost.
There's one exception - for consistency switch that
as well, and add an explicit access_ok check.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovhost/net: force len for TX to host endian
Michael S. Tsirkin [Fri, 24 Oct 2014 08:49:27 +0000 (11:49 +0300)]
vhost/net: force len for TX to host endian

vhost/net keeps a copy of the used ring in host memory but (ab)uses
the length field for internal house-keeping. This works because the
length in the used ring for tx is always 0. In order to suppress sparse
warnings, we force native endianness here.
Note that these values are never exposed to guests.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
9 years agovhost: add memory access wrappers
Michael S. Tsirkin [Fri, 24 Oct 2014 08:48:17 +0000 (11:48 +0300)]
vhost: add memory access wrappers

Add guest memory access wrappers to handle virtio endianness
conversions.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovhost: make features 64 bit
Michael S. Tsirkin [Fri, 24 Oct 2014 11:08:18 +0000 (14:08 +0300)]
vhost: make features 64 bit

We need to use bit 32 for virtio 1.0.
Make vhost_has_feature bool to avoid discarding high bits.

Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Cc: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
9 years agovirtio_net: enable v1.0 support
Michael S. Tsirkin [Thu, 23 Oct 2014 21:32:24 +0000 (00:32 +0300)]
virtio_net: enable v1.0 support

Now that we have completed 1.0 support, enable it in our driver.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_net: disable mac write for virtio 1.0
Michael S. Tsirkin [Wed, 26 Nov 2014 13:58:28 +0000 (15:58 +0200)]
virtio_net: disable mac write for virtio 1.0

The spec states that mac in config space is only driver-writable in the
legacy case.  Fence writing it in virtnet_set_mac_address() in the
virtio 1.0 case.

Suggested-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio_net: bigger header when VERSION_1 is set
Michael S. Tsirkin [Thu, 23 Oct 2014 21:24:03 +0000 (00:24 +0300)]
virtio_net: bigger header when VERSION_1 is set

With VERSION_1 virtio_net uses same header size
whether mergeable buffers are enabled or not.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
9 years agovirtio_net: stricter short buffer length checks
Michael S. Tsirkin [Thu, 23 Oct 2014 21:22:11 +0000 (00:22 +0300)]
virtio_net: stricter short buffer length checks

Our buffer length check is not strict enough for mergeable
buffers: buffer can still be shorter that header + address
by 2 bytes.

Fix that up.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
9 years agovirtio_net: get rid of virtio_net_hdr/skb_vnet_hdr
Michael S. Tsirkin [Fri, 24 Oct 2014 13:55:57 +0000 (16:55 +0300)]
virtio_net: get rid of virtio_net_hdr/skb_vnet_hdr

virtio 1.0 doesn't use virtio_net_hdr anymore, and in fact, it's not
really useful since virtio_net_hdr_mrg_rxbuf includes that as the first
field anyway.

Let's drop it, precalculate header len and store within vi instead.

This way we can also remove struct skb_vnet_hdr.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
9 years agovirtio_net: pass vi around
Michael S. Tsirkin [Thu, 23 Oct 2014 21:12:10 +0000 (00:12 +0300)]
virtio_net: pass vi around

Too many places poke at [rs]q->vq->vdev->priv just to get
the vi structure.  Let's just pass the pointer around: seems
cleaner, and might even be faster.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio_blk: fix race at module removal
Michael S. Tsirkin [Thu, 23 Oct 2014 15:57:19 +0000 (18:57 +0300)]
virtio_blk: fix race at module removal

If a device appears while module is being removed,
driver will get a callback after we've given up
on the major number.

In theory this means this major number can get reused
by something else, resulting in a conflict.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio_blk: make serial attribute static
Michael S. Tsirkin [Thu, 23 Oct 2014 13:08:44 +0000 (16:08 +0300)]
virtio_blk: make serial attribute static

It's never declared so no need to make it extern.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agoKVM: s390: enable virtio-ccw revision 1
Cornelia Huck [Tue, 7 Oct 2014 14:39:52 +0000 (16:39 +0200)]
KVM: s390: enable virtio-ccw revision 1

Now that virtio-ccw has everything needed to support virtio 1.0 in
place, try to enable it if the host supports it.

Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agoKVM: s390 allow virtio_ccw status writes to fail
Michael S. Tsirkin [Thu, 23 Oct 2014 15:40:30 +0000 (18:40 +0300)]
KVM: s390 allow virtio_ccw status writes to fail

Gracefully handle failure to write device status.
We really should handle other errors as well, but this one is needed for
virtio 1.0 compliance.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agoKVM: s390: virtio-ccw revision 1 SET_VQ
Cornelia Huck [Tue, 7 Oct 2014 14:39:51 +0000 (16:39 +0200)]
KVM: s390: virtio-ccw revision 1 SET_VQ

The CCW_CMD_SET_VQ command has a different format for revision 1+
devices, allowing to specify a more complex virtqueue layout. For
now, we stay however with the old layout and simply use the new
command format for virtio-1 devices.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
9 years agoKVM: s390: Set virtio-ccw transport revision
Thomas Huth [Tue, 7 Oct 2014 14:39:50 +0000 (16:39 +0200)]
KVM: s390: Set virtio-ccw transport revision

With the new SET-VIRTIO-REVISION command of the virtio 1.0 standard, we
can now negotiate the virtio-ccw revision after setting a channel online.

Note that we don't negotiate version 1 yet.

[Cornelia Huck: reworked revision loop a bit]
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_blk: v1.0 support
Michael S. Tsirkin [Tue, 7 Oct 2014 14:39:49 +0000 (16:39 +0200)]
virtio_blk: v1.0 support

Based on patch by Cornelia Huck.

Note: for consistency, and to avoid sparse errors,
      convert all fields, even those no longer in use
      for virtio v1.0.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_net: v1.0 endianness
Michael S. Tsirkin [Tue, 7 Oct 2014 14:39:48 +0000 (16:39 +0200)]
virtio_net: v1.0 endianness

Based on patches by Rusty Russell, Cornelia Huck.
Note: more code changes are needed for 1.0 support
(due to different header size).
So we don't advertize support for 1.0 yet.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio: add legacy feature table support
Michael S. Tsirkin [Thu, 23 Oct 2014 15:07:47 +0000 (18:07 +0300)]
virtio: add legacy feature table support

virtio-blk has some legacy feature bits that modern drivers
must not negotiate, but are needed for old legacy hosts
(that e.g. don't support virtio-scsi).
Allow a separate legacy feature table for such cases.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio: simplify feature bit handling
Michael S. Tsirkin [Thu, 23 Oct 2014 14:57:30 +0000 (17:57 +0300)]
virtio: simplify feature bit handling

Now that we use u64 for bits, we can simply & them together.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio: set FEATURES_OK
Michael S. Tsirkin [Wed, 22 Oct 2014 14:41:38 +0000 (17:41 +0300)]
virtio: set FEATURES_OK

set FEATURES_OK as per virtio 1.0 spec

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio: allow transports to get avail/used addresses
Cornelia Huck [Tue, 7 Oct 2014 14:39:47 +0000 (16:39 +0200)]
virtio: allow transports to get avail/used addresses

For virtio-1, we can theoretically have a more complex virtqueue
layout with avail and used buffers not on a contiguous memory area
with the descriptor table. For now, it's fine for a transport driver
to stay with the old layout: It needs, however, a way to access
the locations of the avail/used rings so it can register them with
the host.

Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio_config: endian conversion for v1.0
Michael S. Tsirkin [Wed, 22 Oct 2014 13:59:01 +0000 (16:59 +0300)]
virtio_config: endian conversion for v1.0

We (ab)use virtio conversion functions for device-specific
config space accesses.

Based on original patches by Cornelia and Rusty.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.com>
9 years agovirtio_ring: switch to new memory access APIs
Michael S. Tsirkin [Wed, 22 Oct 2014 12:42:09 +0000 (15:42 +0300)]
virtio_ring: switch to new memory access APIs

Use virtioXX_to_cpu and friends for access to
all multibyte structures in memory.

Note: this is intentionally mechanical.
A follow-up patch will split long lines etc.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio: memory access APIs
Michael S. Tsirkin [Wed, 22 Oct 2014 12:35:56 +0000 (15:35 +0300)]
virtio: memory access APIs

virtio 1.0 makes all memory structures LE, so
we need APIs to conditionally do a byteswap on BE
architectures.

To make it easier to check code statically,
add virtio specific types for multi-byte integers
in memory.

Add low level wrappers that do a byteswap conditionally, these will be
useful e.g. for vhost.  Add high level wrappers that
query device endian-ness and act accordingly.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio: add virtio 1.0 feature bit
Michael S. Tsirkin [Wed, 22 Oct 2014 12:49:34 +0000 (15:49 +0300)]
virtio: add virtio 1.0 feature bit

Based on original patches by Rusty Russell, Thomas Huth
and Cornelia Huck.

Note: at this time, we do not negotiate this feature bit
in core, drivers have to declare VERSION_1 support explicitly.

For this reason we treat this bit as a device bit
and not as a transport bit for now.

After all drivers are converted, we will be able to
move VERSION_1 to core and drop it from all drivers.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio_ccw: add support for 64 bit features.
Michael S. Tsirkin [Thu, 27 Nov 2014 11:54:28 +0000 (13:54 +0200)]
virtio_ccw: add support for 64 bit features.

Negotiate full 64 bit features.
Change u32 to u64, make sure to use 1ULL everywhere.

Note: devices guarantee that VERSION_1 is clear unless
revision 1 is negotiated.

Note: We don't need to re-setup the ccw, but we do it
for clarity.

Based on patches by Rusty, Thomas Huth and Cornelia.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: David Hildebrand <dahi@linux.vnet.ibm.com>
9 years agovirtio: assert 32 bit features in transports
Michael S. Tsirkin [Thu, 27 Nov 2014 11:45:58 +0000 (13:45 +0200)]
virtio: assert 32 bit features in transports

At this point, no transports set any of the high 32 feature bits.
Since transports generally can't (yet) cope with such bits, add BUG_ON
checks to make sure they are not set by mistake.

Based on rproc patch by Rusty.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio: add support for 64 bit features.
Michael S. Tsirkin [Tue, 7 Oct 2014 14:39:43 +0000 (16:39 +0200)]
virtio: add support for 64 bit features.

Change u32 to u64, and use BIT_ULL and 1ULL everywhere.

Note: transports are unchanged, and only set low 32 bit.
This guarantees that no transport sets e.g. VERSION_1
by mistake without proper support.

Based on patch by Rusty.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agomic_virtio: robust feature array size calculation
Michael S. Tsirkin [Thu, 27 Nov 2014 11:29:24 +0000 (13:29 +0200)]
mic_virtio: robust feature array size calculation

mic reads sizeof(vdev->features) bits from device, but in fact it stores
bits in local features variable. use sizeof(features) to make code
robust against future changes extending sizeof(vdev->features).

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
9 years agovirtio: use u32, not bitmap for features
Michael S. Tsirkin [Tue, 7 Oct 2014 14:39:42 +0000 (16:39 +0200)]
virtio: use u32, not bitmap for features

It seemed like a good idea to use bitmap for features
in struct virtio_device, but it's actually a pain,
and seems to become even more painful when we get more
than 32 feature bits.  Just change it to a u32 for now.

Based on patch by Rusty.

Suggested-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agovirtio: add low-level APIs for feature bits
Michael S. Tsirkin [Thu, 27 Nov 2014 19:19:02 +0000 (21:19 +0200)]
virtio: add low-level APIs for feature bits

Add low level APIs to test/set/clear feature bits.
For use by transports, to make it easier to
write code independent of feature bit array format.

Note: APIs is prefixed with __ and has _bit suffix
to stress its low level nature.  It's for use by transports only:
drivers should use virtio_has_feature and never need to set/clear
features.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
9 years agoLinux 3.18
Linus Torvalds [Sun, 7 Dec 2014 22:21:05 +0000 (14:21 -0800)]
Linux 3.18

9 years agoMerge branch 'for-3.18-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj...
Linus Torvalds [Sun, 7 Dec 2014 20:00:14 +0000 (12:00 -0800)]
Merge branch 'for-3.18-fixes' of git://git./linux/kernel/git/tj/libata

Pull libata fixes from Tejun Heo:
 "Three libata fixes for v3.18.  Nothing too interesting.  PCI ID ID and
  quirk additions to ahci and an error handling path fix in sata_fsl"

* 'for-3.18-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
  ahci: disable MSI on SAMSUNG 0xa800 SSD
  sata_fsl: fix error handling of irq_of_parse_and_map
  AHCI: Add DeviceIDs for Sunrise Point-LP SATA controller

9 years agoMerge git://www.linux-watchdog.org/linux-watchdog
Linus Torvalds [Sat, 6 Dec 2014 19:27:25 +0000 (11:27 -0800)]
Merge git://www.linux-watchdog.org/linux-watchdog

Pull watchdog fix from Wim Van Sebroeck:
 "Fix the watchdog mask bit offset for Exynos7"

* git://www.linux-watchdog.org/linux-watchdog:
  watchdog: s3c2410_wdt: Fix the mask bit offset for Exynos7

9 years agoMerge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa...
Linus Torvalds [Sat, 6 Dec 2014 19:26:01 +0000 (11:26 -0800)]
Merge branch 'i2c/for-current' of git://git./linux/kernel/git/wsa/linux

Pull i2c fixes from Wolfram Sang:
 "Here are two more driver bugfixes for I2C which would be good to have"

* 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
  i2c: cadence: Set the hardware time-out register to maximum value
  i2c: davinci: generate STP always when NACK is received

9 years agowatchdog: s3c2410_wdt: Fix the mask bit offset for Exynos7
Abhilash Kesavan [Fri, 17 Oct 2014 16:12:53 +0000 (21:42 +0530)]
watchdog: s3c2410_wdt: Fix the mask bit offset for Exynos7

The watchdog mask bit offset listed for Exynos7 is incorrect.
Fix this.

Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
Acked-by: Naveen Krishna Chatradhi <naveenkrishna.ch@gmail.com
Reviewd-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
9 years agoMerge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
Linus Torvalds [Fri, 5 Dec 2014 18:47:19 +0000 (10:47 -0800)]
Merge branch 'x86-urgent-for-linus' of git://git./linux/kernel/git/tip/tip

Pull x86 fixes from Thomas Gleixner:
 "Two final fixlets for 3.18:
   - Prevent microcode reload wreckage on 32bit
   - Unbreak cross compilation"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86, microcode: Limit the microcode reloading to 64-bit for now
  x86: Use $(OBJDUMP) instead of plain objdump

9 years agoMerge tag 'sound-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Linus Torvalds [Fri, 5 Dec 2014 18:39:49 +0000 (10:39 -0800)]
Merge tag 'sound-3.18' of git://git./linux/kernel/git/tiwai/sound

Pull sound fixlet from Takashi Iwai:
 "Just one commit for adding a copule of HD-audio quirk entries"

* tag 'sound-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: hda/realtek - Add headset Mic support for new Dell machine

9 years agoMerge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Linus Torvalds [Fri, 5 Dec 2014 06:39:37 +0000 (22:39 -0800)]
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull drm intel fixes from Dave Airlie:
 "Two intel stable fixes, that should be it from me for this round"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
  drm/i915: Unlock panel even when LVDS is disabled
  drm/i915: More cautious with pch fifo underruns

9 years agoMerge tag 'pm+acpi-3.18-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
Linus Torvalds [Fri, 5 Dec 2014 01:48:13 +0000 (17:48 -0800)]
Merge tag 'pm+acpi-3.18-rc8' of git://git./linux/kernel/git/rafael/linux-pm

Pull ACPI backlight fix from Rafael Wysocki:
 "This is a simple fix for an ACPI backlight regression introduced by a
  recent commit that overlooked a corner case which should have been
  taken into account"

* tag 'pm+acpi-3.18-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI / video: update condition to check if device is in _DOD list

9 years agoMerge tag 'drm-intel-fixes-2014-12-04' of git://anongit.freedesktop.org/drm-intel...
Dave Airlie [Fri, 5 Dec 2014 01:12:29 +0000 (11:12 +1000)]
Merge tag 'drm-intel-fixes-2014-12-04' of git://anongit.freedesktop.org/drm-intel into drm-fixes

Silence some pch fifo underrun reports and panel locking backtraces,
both cc: stable.

* tag 'drm-intel-fixes-2014-12-04' of git://anongit.freedesktop.org/drm-intel:
  drm/i915: Unlock panel even when LVDS is disabled
  drm/i915: More cautious with pch fifo underruns

9 years agoMerge tag 'media/v3.18-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
Linus Torvalds [Fri, 5 Dec 2014 00:06:02 +0000 (16:06 -0800)]
Merge tag 'media/v3.18-rc8' of git://git./linux/kernel/git/mchehab/linux-media

Pull media fixes from Mauro Carvalho Chehab:
 "A core fix and some driver fixes:
   - regression fix in Remote Controller core affecting RC6 protocol
     handling
   - fix video buffer handling in cx23885
   - race fix in solo6x10
   - fix image selection in smiapp
   - fix reported payload size on s2255drv
   - two updates for MAINTAINERS file"

* tag 'media/v3.18-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
  [media] rc-core: fix toggle handling in the rc6 decoder
  MAINTAINERS: Update mchehab's addresses
  [media] cx23885: use sg = sg_next(sg) instead of sg++
  [media] s2255drv: fix payload size for JPG, MJPEG
  [media] Update MAINTAINERS for solo6x10
  [media] solo6x10: fix a race in IRQ handler
  [media] smiapp: Only some selection targets are settable

9 years agouapi: fix to export linux/vm_sockets.h
Masahiro Yamada [Thu, 4 Dec 2014 22:42:25 +0000 (14:42 -0800)]
uapi: fix to export linux/vm_sockets.h

A typo "header=y" was introduced by commit 7071cf7fc435 ("uapi: add
missing network related headers to kbuild").

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: David Miller <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years agoi2c: cadence: Set the hardware time-out register to maximum value
Vishnu Motghare [Wed, 3 Dec 2014 12:35:25 +0000 (18:05 +0530)]
i2c: cadence: Set the hardware time-out register to maximum value

Cadence I2C controller has bug wherein it generates invalid read transactions
after timeout in master receiver mode. This driver does not use the HW
timeout and this interrupt is disabled but the feature itself cannot be
disabled. Hence, this patch writes the maximum value (0xFF) to this register.
This is one of the workarounds to this bug and it will not avoid the issue
completely but reduces the chances of error.

Signed-off-by: Vishnu Motghare <vishnum@xilinx.com>
Signed-off-by: Harini Katakam <harinik@xilinx.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Cc: stable@kernel.org
9 years agoi2c: davinci: generate STP always when NACK is received
Grygorii Strashko [Mon, 1 Dec 2014 15:34:04 +0000 (17:34 +0200)]
i2c: davinci: generate STP always when NACK is received

According to I2C specification the NACK should be handled as follows:
"When SDA remains HIGH during this ninth clock pulse, this is defined as the Not
Acknowledge signal. The master can then generate either a STOP condition to
abort the transfer, or a repeated START condition to start a new transfer."
[I2C spec Rev. 6, 3.1.6: http://www.nxp.com/documents/user_manual/UM10204.pdf]

Currently the Davinci i2c driver interrupts the transfer on receipt of a
NACK but fails to send a STOP in some situations and so makes the bus
stuck until next I2C IP reset (idle/enable).

For example, the issue will happen during SMBus read transfer which
consists from two i2c messages write command/address and read data:

S Slave Address Wr A Command Code A Sr Slave Address Rd A D1..Dn A P
<--- write -----------------------> <--- read --------------------->

The I2C client device will send NACK if it can't recognize "Command Code"
and it's expected from I2C master to generate STP in this case.
But now, Davinci i2C driver will just exit with -EREMOTEIO and STP will
not be generated.

Hence, fix it by generating Stop condition (STP) always when NACK is received.

This patch fixes Davinci I2C in the same way it was done for OMAP I2C
commit cda2109a26eb ("i2c: omap: query STP always when NACK is received").

Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reported-by: Hein Tibosch <hein_tibosch@yahoo.es>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Cc: stable@kernel.org
9 years agoahci: disable MSI on SAMSUNG 0xa800 SSD
Tejun Heo [Thu, 4 Dec 2014 18:13:28 +0000 (13:13 -0500)]
ahci: disable MSI on SAMSUNG 0xa800 SSD

Just like 0x1600 which got blacklisted by 66a7cbc303f4 ("ahci: disable
MSI instead of NCQ on Samsung pci-e SSDs on macbooks"), 0xa800 chokes
on NCQ commands if MSI is enabled.  Disable MSI.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Dominik Mierzejewski <dominik@greysector.net>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=89171
Cc: stable@vger.kernel.org
9 years agocontext_tracking: Restore previous state in schedule_user
Andy Lutomirski [Wed, 3 Dec 2014 23:37:08 +0000 (15:37 -0800)]
context_tracking: Restore previous state in schedule_user

It appears that some SCHEDULE_USER (asm for schedule_user) callers
in arch/x86/kernel/entry_64.S are called from RCU kernel context,
and schedule_user will return in RCU user context.  This causes RCU
warnings and possible failures.

This is intended to be a minimal fix suitable for 3.18.

Reported-and-tested-by: Dave Jones <davej@redhat.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years agoMerge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa...
Linus Torvalds [Wed, 3 Dec 2014 22:27:07 +0000 (14:27 -0800)]
Merge branch 'i2c/for-current' of git://git./linux/kernel/git/wsa/linux

Pull i2c bugfixes from Wolfram Sang:
 "A few driver bugfixes for 3.18"

* 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
  i2c: omap: fix i207 errata handling
  i2c: designware: prevent early stop on TX FIFO empty
  i2c: omap: fix NACK and Arbitration Lost irq handling

9 years agoMerge tag 'pci-v3.18-fixes-4' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaa...
Linus Torvalds [Wed, 3 Dec 2014 22:24:10 +0000 (14:24 -0800)]
Merge tag 'pci-v3.18-fixes-4' of git://git./linux/kernel/git/helgaas/pci

Pull PCI fix from Bjorn Helgaas:
 "This fixes a Tegra20 regression that we introduced during the v3.18
  merge window"

* tag 'pci-v3.18-fixes-4' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
  PCI: tegra: Use physical range for I/O mapping

9 years agoMerge tag 'devicetree-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
Linus Torvalds [Wed, 3 Dec 2014 22:08:50 +0000 (14:08 -0800)]
Merge tag 'devicetree-for-linus' of git://git./linux/kernel/git/glikely/linux

Pull devicetree bugfix from Grant Likely:
 "One more bug fix for v3.18.  I debated whether or not to send you this
  merge request because we're at such a late rc.  The bug isn't critical
  in that there is only one system known to be affected and the patch is
  easy to backport.  The codepath is used by pretty much every DT based
  system, so there is risk a of regression (it /should/ be safe, but
  I've been bitten by stuff that should be safe before).  I've had it in
  linux-next for a week and haven't received any complaints.

  I think it probably should just be merged right away rather than
  waiting for the merge window and backporting.  It does fix a real bug
  and the code is theoretically safer after the change.  I can't think
  of any situation where it would be dangerous to reserve the DT memory
  an extra time.

  Summary from tag:

    Single bugfix for boot failure seen in the wild.  The memory reserve
    code tries to be clever about reserving the FDT, but it should just
    go ahead and reserve it unconditionally to avoid the problem of
    partial overlap described in the patch"

* tag 'devicetree-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux:
  of/fdt: memblock_reserve /memreserve/ regions in the case of partial overlap