linux-2.6-block.git
12 years agoMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
John W. Linville [Wed, 30 May 2012 14:32:16 +0000 (10:32 -0400)]
Merge branch 'master' of git://git./linux/kernel/git/linville/wireless into for-davem

12 years agodrop_monitor: Add module alias to enable automatic module loading
Neil Horman [Tue, 29 May 2012 09:30:42 +0000 (09:30 +0000)]
drop_monitor: Add module alias to enable automatic module loading

Now that we have module alias macros for generic netlink families, lets use
those to mark modules with the appropriate family names for loading

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: Eric Dumazet <eric.dumazet@gmail.com>
CC: David Miller <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agogenetlink: Build a generic netlink family module alias
Neil Horman [Tue, 29 May 2012 09:30:41 +0000 (09:30 +0000)]
genetlink: Build a generic netlink family module alias

Generic netlink searches for -type- formatted aliases when requesting a module to
fulfill a protocol request (i.e. net-pf-16-proto-16-type-<x>, where x is a type
value).  However generic netlink protocols have no well defined type numbers,
they have string names.  Modify genl_ctrl_getfamily to request an alias in the
format net-pf-16-proto-16-family-<x> instead, where x is a generic string, and
add a macro that builds on the previously added MODULE_ALIAS_NET_PF_PROTO_NAME
macro to allow modules to specifify those generic strings.

Note, l2tp previously hacked together an net-pf-16-proto-16-type-l2tp alias
using the MODULE_ALIAS macro, with these updates we can convert that to use the
PROTO_NAME macro.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: Eric Dumazet <eric.dumazet@gmail.com>
CC: James Chapman <jchapman@katalix.com>
CC: David Miller <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agonet: add MODULE_ALIAS_NET_PF_PROTO_NAME
Neil Horman [Tue, 29 May 2012 09:30:40 +0000 (09:30 +0000)]
net: add MODULE_ALIAS_NET_PF_PROTO_NAME

The MODULE_ALAIS_NET_PF macro set is missing a variant that allows for the
appending of an arbitrary string to the net-pf-<x>-proto-<y> base.  while
MODULE_ALIAS_NET_PF_PROTO_NAME_TYPE allows an appending of a numerical type, we
need to be able to append a generic string to support generic netlink families
that have neither a fix numberical protocol nor type number

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: Eric Dumazet <eric.dumazet@gmail.com>
CC: David Miller <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agor6040: Do a Proper deinit at errorpath and also when driver unloads (calling r6040_re...
Devendra Naga [Tue, 29 May 2012 13:43:34 +0000 (13:43 +0000)]
r6040: Do a Proper deinit at errorpath and also when driver unloads (calling r6040_remove_one)

so if mdiobus_alloc fails, the errorpath doesnt do a netif_napi_del and also
doesn't set the priv data of the driver to NULL.

at the driver unload stage the driver doesn't remove the NAPI context, and
doesnt' set the priv data to NULL, and also doesn't call the pci_iounmap.

Signed-off-by: Devendra Naga <devendra.aaru@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agor6040: disable pci device if the subsequent calls (after pci_enable_device) fails
Devendra Naga [Tue, 29 May 2012 13:38:42 +0000 (13:38 +0000)]
r6040: disable pci device if the subsequent calls (after pci_enable_device) fails

the calls after the pci_enable_device may fail, and will error out with out
disabling it. disable the device at error paths.

Signed-off-by: Devendra Naga <devendra.aaru@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agoskb: avoid unnecessary reallocations in __skb_cow
Felix Fietkau [Tue, 29 May 2012 03:35:08 +0000 (03:35 +0000)]
skb: avoid unnecessary reallocations in __skb_cow

At the beginning of __skb_cow, headroom gets set to a minimum of
NET_SKB_PAD. This causes unnecessary reallocations if the buffer was not
cloned and the headroom is just below NET_SKB_PAD, but still more than the
amount requested by the caller.
This was showing up frequently in my tests on VLAN tx, where
vlan_insert_tag calls skb_cow_head(skb, VLAN_HLEN).

Locally generated packets should have enough headroom, and for forward
paths, we already have NET_SKB_PAD bytes of headroom, so we don't need to
add any extra space here.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agonet: sh_eth: fix the rxdesc pointer when rx descriptor empty happens
Yoshihiro Shimoda [Mon, 28 May 2012 23:07:55 +0000 (23:07 +0000)]
net: sh_eth: fix the rxdesc pointer when rx descriptor empty happens

When Receive Descriptor Empty happens, rxdesc pointer of the driver
and actual next descriptor of the controller may be mismatch.
This patch fixes it.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agoasix: allow full size 8021Q frames to be received
Eric Dumazet [Mon, 28 May 2012 22:31:41 +0000 (22:31 +0000)]
asix: allow full size 8021Q frames to be received

asix driver drops 8021Q full size frames because it doesn't take into
account VLAN header size.

Tested on AX88772 adapter.

Signed-off-by: Eric Dumazet <edumazet@google.com>
CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
CC: Allan Chou <allan@asix.com.tw>
CC: Trond Wuellner <trond@chromium.org>
CC: Grant Grundler <grundler@chromium.org>
CC: Paul Stewart <pstew@chromium.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agords_rdma: don't assume infiniband device is PCI
Thadeu Lima de Souza Cascardo [Mon, 28 May 2012 08:52:05 +0000 (08:52 +0000)]
rds_rdma: don't assume infiniband device is PCI

RDS code assumes that the struct ib_device dma_device member, which is a
pointer, points to a struct device embedded in a struct pci_dev.

This is not the case for ehca, for example, which is a OF driver, and
makes dma_device point to a struct device embedded in a struct
platform_device.

This will make the system crash when rds_rdma is loaded in a system
with ehca, since it will try to access the bus member of a non-existent
struct pci_dev.

The only reason rds_rdma uses the struct pci_dev is to get the NUMA node
the device is attached to. Using dev_to_node for that is much better,
since it won't assume which bus the infiniband is attached to.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
Cc: dledford@redhat.com
Cc: Jes.Sorensen@redhat.com
Cc: Venkat Venkatsubra <venkat.x.venkatsubra@oracle.com>
Acked-by: Venkat Venkatsubra <venkat.x.venkatsubra@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agol2tp: fix oops in L2TP IP sockets for connect() AF_UNSPEC case
James Chapman [Tue, 29 May 2012 03:30:42 +0000 (03:30 +0000)]
l2tp: fix oops in L2TP IP sockets for connect() AF_UNSPEC case

An application may call connect() to disconnect a socket using an
address with family AF_UNSPEC. The L2TP IP sockets were not handling
this case when the socket is not bound and an attempt to connect()
using AF_UNSPEC in such cases would result in an oops. This patch
addresses the problem by protecting the sk_prot->disconnect() call
against trying to unhash the socket before it is bound.

The L2TP IPv4 and IPv6 sockets have the same problem. Both are fixed
by this patch.

The patch also adds more checks that the sockaddr supplied to bind()
and connect() calls is valid.

 RIP: 0010:[<ffffffff82e133b0>]  [<ffffffff82e133b0>] inet_unhash+0x50/0xd0
 RSP: 0018:ffff88001989be28  EFLAGS: 00010293
 Stack:
  ffff8800407a8000 0000000000000000 ffff88001989be78 ffffffff82e3a249
  ffffffff82e3a050 ffff88001989bec8 ffff88001989be88 ffff8800407a8000
  0000000000000010 ffff88001989bec8 ffff88001989bea8 ffffffff82e42639
 Call Trace:
 [<ffffffff82e3a249>] udp_disconnect+0x1f9/0x290
 [<ffffffff82e42639>] inet_dgram_connect+0x29/0x80
 [<ffffffff82d012fc>] sys_connect+0x9c/0x100

Reported-by: Sasha Levin <levinsasha928@gmail.com>
Signed-off-by: James Chapman <jchapman@katalix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agomac80211: fix ADDBA declined after suspend with wowlan
Eyal Shapira [Tue, 29 May 2012 09:00:22 +0000 (02:00 -0700)]
mac80211: fix ADDBA declined after suspend with wowlan

WLAN_STA_BLOCK_BA is set while suspending but doesn't get cleared
when resuming in case of wowlan. This causes further ADDBA requests
received to be rejected. Fix it by clearing it in the wowlan path
as well.

Signed-off-by: Eyal Shapira <eyal@wizery.com>
Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Cc: stable@vger.kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agowlcore: fix undefined symbols when CONFIG_PM is not defined
Eyal Shapira [Tue, 29 May 2012 08:28:42 +0000 (01:28 -0700)]
wlcore: fix undefined symbols when CONFIG_PM is not defined

commit c21eebb50379a96e1335e933583dcd5b455c6b64
"wl12xx: add RX filters ACX commands" breaks the build
when CONFIG_PM isn't defined:

ERROR: "wl1271_rx_filter_get_fields_size"
[drivers/net/wireless/ti/wlcore/wlcore.ko] undefined!
ERROR: "wl1271_rx_filter_flatten_fields"
[drivers/net/wireless/ti/wlcore/wlcore.ko] undefined!

code in drivers/net/wireless/ti/wlcore/acx.c is using these
functions unconditionally while they are #ifdefed CONFIG_PM.
Fix it by ifdefing all relevant RX filters code with CONFIG_PM.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Acked-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agomac80211: fix flag check for QoS NOACK frames
Claudio Pisa [Mon, 28 May 2012 12:06:25 +0000 (13:06 +0100)]
mac80211: fix flag check for QoS NOACK frames

Signed-off-by: Claudio Pisa <claudio.pisa@uniroma2.it>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k_hw: apply internal regulator settings on AR933x
Felix Fietkau [Thu, 24 May 2012 12:32:22 +0000 (14:32 +0200)]
ath9k_hw: apply internal regulator settings on AR933x

On AR933x, the internal regulator settings need to be applied before the
PLL init to avoid stability issues.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k_hw: update AR933x initvals to fix issues with high power devices
Felix Fietkau [Thu, 24 May 2012 12:32:21 +0000 (14:32 +0200)]
ath9k_hw: update AR933x initvals to fix issues with high power devices

"> Can you provide more information about the issues with high power devices?
Tx being flakey and Rx not working at all."

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k: fix a use-after-free-bug when ath_tx_setup_buffer() fails
Felix Fietkau [Thu, 24 May 2012 12:32:20 +0000 (14:32 +0200)]
ath9k: fix a use-after-free-bug when ath_tx_setup_buffer() fails

ath_tx_setup_buffer() can fail if there is no ath_buf left, or if mapping DMA
failed. In this case it frees the skb passed to it.
If ath_tx_setup_buffer is called from ath_tx_form_aggr, the skb is still
linked into the tid buffer list and must be dequeued before being released.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Cc: stable@vger.kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k: stop rx dma before stopping tx
Felix Fietkau [Thu, 24 May 2012 12:32:19 +0000 (14:32 +0200)]
ath9k: stop rx dma before stopping tx

It has been found that active Rx can interfere with stopping tx DMA, which
could result in at least parts of those "Failed to stop Tx DMA!" messages.
Stopping rx before tx should prevent that.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath5k: add possible wiphy interface combinations
Felix Fietkau [Tue, 17 Apr 2012 04:39:27 +0000 (00:39 -0400)]
ath5k: add possible wiphy interface combinations

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
12 years agoipv6: fix incorrect ipsec fragment
Gao feng [Sat, 26 May 2012 01:30:53 +0000 (01:30 +0000)]
ipv6: fix incorrect ipsec fragment

Since commit ad0081e43a
"ipv6: Fragment locally generated tunnel-mode IPSec6 packets as needed"
the fragment of packets is incorrect.
because tunnel mode needs IPsec headers and trailer for all fragments,
while on transport mode it is sufficient to add the headers to the
first fragment and the trailer to the last.

so modify mtu and maxfraglen base on ipsec mode and if fragment is first
or last.

with my test,it work well(every fragment's size is the mtu)
and does not trigger slow fragment path.

Changes from v1:
though optimization, mtu_prev and maxfraglen_prev can be delete.
replace xfrm mode codes with dst_entry's new frag DST_XFRM_TUNNEL.
add fuction ip6_append_data_mtu to make codes clearer.

Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agoxfrm: take net hdr len into account for esp payload size calculation
Benjamin Poirier [Thu, 24 May 2012 11:32:38 +0000 (11:32 +0000)]
xfrm: take net hdr len into account for esp payload size calculation

Corrects the function that determines the esp payload size. The calculations
done in esp{4,6}_get_mtu() lead to overlength frames in transport mode for
certain mtu values and suboptimal frames for others.

According to what is done, mainly in esp{,6}_output() and tcp_mtu_to_mss(),
net_header_len must be taken into account before doing the alignment
calculation.

Signed-off-by: Benjamin Poirier <bpoirier@suse.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agomac80211: Fix race in checking AP status by sending null frame
Soumik Das [Sun, 20 May 2012 10:01:13 +0000 (15:31 +0530)]
mac80211: Fix race in checking AP status by sending null frame

mac80211 tries to verify the existence of the current AP by
probing or sending a NULL frame in function
ieee80211_mgd_probe_ap_send. It 1st sends a null frame to the AP,
increments probe_send_count and waits for the ACK to the NULL
frame for a finite duration of time. At times, it happens that by
the time mac80211 gets to increment probe_send_count, the ACK for
the NULL frame transmitted has already been processed. This leads
to a race condition where mac80211 times out waiting for the ACK
for the NULL frame causing unnecessary disconnection with the AP.

Signed-off-by: Soumik Das <soumik.das@stericsson.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agobrcmfmac: use vmalloc to allocate mem for the firmware
Hauke Mehrtens [Fri, 18 May 2012 18:22:53 +0000 (20:22 +0200)]
brcmfmac: use vmalloc to allocate mem for the firmware

The firmware is more than 300KB big and you should not use kmalloc for
such big allocations. This allocation with kmalloc failed on my mips
based device (BCM47186).

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Acked-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoNFC: potential integer overflow problem in check_crc()
Dan Carpenter [Fri, 18 May 2012 07:36:47 +0000 (10:36 +0300)]
NFC: potential integer overflow problem in check_crc()

If "buf[0]" is 255 then "len" gets set to 0.  The call to
"crc_ccitt(0xffff, buf, len - 2);" casts the "len - 2" to a high
positive number which is ugly.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agowl1251: fix oops on early interrupt
Grazvydas Ignotas [Fri, 18 May 2012 00:04:08 +0000 (03:04 +0300)]
wl1251: fix oops on early interrupt

This driver disables interrupt just after requesting it and enables it
later, after interface is up. However currently there is a time window
between request_irq() and disable_irq() where if interrupt arrives, the
driver oopses because it's not yet ready to process it. This can be
reproduced by inserting the module, associating and removing the module
multiple times.

Eliminate this race by setting IRQF_NOAUTOEN flag before request_irq().

Cc: stable@vger.kernel.org # v2.6.37+
Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlwifi: fix memory leak if opmode fails to init
Johannes Berg [Wed, 16 May 2012 20:49:49 +0000 (22:49 +0200)]
iwlwifi: fix memory leak if opmode fails to init

If drv->op_mode is NULL after trying to init the
opmode, we go to the wrong label. Fix this, and
clean up the code a bit.

Reviewed-by: Gregory Greenman <gregory.greenman@intel.com>
Reviewed-by: Guy Cohen <guy.cohen@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlwifi: do not send lq cmd when station add fails
Meenakshi Venkataraman [Wed, 16 May 2012 20:49:48 +0000 (22:49 +0200)]
iwlwifi: do not send lq cmd when station add fails

When adding a station fails in
iwl_restore_stations, the driver treats it
like a successful station add and sends a
link quality command, when it it shouldn't.

This patch fixes one of the potential
sources for kernel warnings like this one:

WARNING: at drivers/net/wireless/iwlwifi/iwl-agn-sta.c:905 iwl_send_lq_cmd+0x130/0x217 [iwlwifi]()
Hardware name: 3323A2G
Modules linked in: ...
Pid: 17359, comm: kworker/u:2 Tainted: G           O 3.3.0-wl+ #1
Call Trace:
 [<ffffffff81039620>] warn_slowpath_common+0x7e/0x96
 [<ffffffff8103964d>] warn_slowpath_null+0x15/0x17
 [<ffffffffa02a9f0b>] iwl_send_lq_cmd+0x130/0x217 [iwlwifi]
 [<ffffffffa02aa1fb>] iwl_restore_stations+0x209/0x289 [iwlwifi]
 [<ffffffffa02b07c2>] iwlagn_commit_rxon+0x602/0x7bd [iwlwifi]
 [<ffffffffa02b111f>] iwlagn_bss_info_changed+0x247/0x31a [iwlwifi]
 [<ffffffffa0861437>] ieee80211_bss_info_change_notify+0x1a5/0x1ba [mac80211]
 [<ffffffffa088afad>] ieee80211_destroy_auth_data+0x4b/0x70 [mac80211]
 [<ffffffffa088df26>] ieee80211_sta_work+0xb5/0x954 [mac80211]

Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
Reviewed-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlwifi: remove ucode16 option
Johannes Berg [Wed, 16 May 2012 20:49:47 +0000 (22:49 +0200)]
iwlwifi: remove ucode16 option

The ucode16 option is still very much work in
progress, so there's no need to ask any users
about it. Remove the option and code for now,
we'll put it back when it's actually working.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlwifi: do not use shadow registers by default
Meenakshi Venkataraman [Wed, 16 May 2012 20:35:59 +0000 (22:35 +0200)]
iwlwifi: do not use shadow registers by default

Shadow registers in the device are meant to
allow the driver to update certain device
registers without needing to wake up all
components of the device. However, using
this feature in the device causes
communication between the driver and the
device to become unreliable, resulting in
host command timeouts.

Disable this feature by default till a fix is
available for the bug.

Cc: stable@vger.kernel.org #2.6.38+
Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlwifi: fix the Transmit Frame Descriptor rings
Emmanuel Grumbach [Wed, 16 May 2012 20:35:58 +0000 (22:35 +0200)]
iwlwifi: fix the Transmit Frame Descriptor rings

The logic that allows to have a short TFD queue was completely wrong.
We do maintain 256 Transmit Frame Descriptors, but they point to
recycled buffers. We used to attach and de-attach different TFDs for
the same buffer and it worked since they pointed to the same buffer.

Also zero the number of BDs after unmapping a TFD. This seems not
necessary since we don't reclaim the same TFD twice, but I like
housekeeping.

This patch solves this warning:

[ 6427.079855] WARNING: at lib/dma-debug.c:866 check_unmap+0x727/0x7a0()
[ 6427.079859] Hardware name: Latitude E6410
[ 6427.079865] iwlwifi 0000:02:00.0: DMA-API: device driver tries to free DMA memory it has not allocated [device address=0x00000000296d393c] [size=8 bytes]
[ 6427.079870] Modules linked in: ...
[ 6427.079950] Pid: 6613, comm: ifconfig Tainted: G           O 3.3.3 #5
[ 6427.079954] Call Trace:
[ 6427.079963]  [<c10337a2>] warn_slowpath_common+0x72/0xa0
[ 6427.079982]  [<c1033873>] warn_slowpath_fmt+0x33/0x40
[ 6427.079988]  [<c12dcb77>] check_unmap+0x727/0x7a0
[ 6427.079995]  [<c12dcdaa>] debug_dma_unmap_page+0x5a/0x80
[ 6427.080024]  [<fe2312ac>] iwlagn_unmap_tfd+0x12c/0x180 [iwlwifi]
[ 6427.080048]  [<fe231349>] iwlagn_txq_free_tfd+0x49/0xb0 [iwlwifi]
[ 6427.080071]  [<fe228e37>] iwl_tx_queue_unmap+0x67/0x90 [iwlwifi]
[ 6427.080095]  [<fe22d221>] iwl_trans_pcie_stop_device+0x341/0x7b0 [iwlwifi]
[ 6427.080113]  [<fe204b0e>] iwl_down+0x17e/0x260 [iwlwifi]
[ 6427.080132]  [<fe20efec>] iwlagn_mac_stop+0x6c/0xf0 [iwlwifi]
[ 6427.080168]  [<fd8480ce>] ieee80211_stop_device+0x5e/0x190 [mac80211]
[ 6427.080198]  [<fd833208>] ieee80211_do_stop+0x288/0x620 [mac80211]
[ 6427.080243]  [<fd8335b7>] ieee80211_stop+0x17/0x20 [mac80211]
[ 6427.080250]  [<c148dac1>] __dev_close_many+0x81/0xd0
[ 6427.080270]  [<c148db3d>] __dev_close+0x2d/0x50
[ 6427.080276]  [<c148d152>] __dev_change_flags+0x82/0x150
[ 6427.080282]  [<c148e3e3>] dev_change_flags+0x23/0x60
[ 6427.080289]  [<c14f6320>] devinet_ioctl+0x6a0/0x770
[ 6427.080296]  [<c14f8705>] inet_ioctl+0x95/0xb0
[ 6427.080304]  [<c147a0f0>] sock_ioctl+0x70/0x270

Cc: stable@vger.kernel.org
Reported-by: Antonio Quartulli <ordex@autistici.org>
Tested-by: Antonio Quartulli <ordex@autistici.org>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlwifi: update BT traffic load states correctly
Meenakshi Venkataraman [Wed, 16 May 2012 20:35:57 +0000 (22:35 +0200)]
iwlwifi: update BT traffic load states correctly

When BT traffic load changes from its
previous state, a new LQ command needs to be
sent down to the firmware. This needs to
be done only once per change. The state
variable that keeps track of this change is
last_bt_traffic_load. However, it was not
being updated when the change had been
handled. Not updating this variable was
causing a flood of advanced BT config
commands to be sent to the firmware. Fix
this.

Cc: stable@vger.kernel.org #2.6.38+
Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agonet/wanrouter: Deprecate and schedule for removal
Joe Perches [Thu, 24 May 2012 07:13:30 +0000 (07:13 +0000)]
net/wanrouter: Deprecate and schedule for removal

No one uses this on current kernels anymore.

Let it be known it's going to be removed eventually.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agoxen/netback: Calculate the number of SKB slots required correctly
Simon Graham [Thu, 24 May 2012 06:26:07 +0000 (06:26 +0000)]
xen/netback: Calculate the number of SKB slots required correctly

When calculating the number of slots required for a packet header, the code
was reserving too many slots if the header crossed a page boundary. Since
netbk_gop_skb copies the header to the start of the page, the count of
slots required for the header should be based solely on the header size.

This problem is easy to reproduce if a VIF is bridged to a USB 3G modem
device as the skb->data value always starts near the end of the first page.

Signed-off-by: Simon Graham <simon.graham@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agosolos-pci: Fix DMA support
David Woodhouse [Thu, 24 May 2012 04:58:27 +0000 (04:58 +0000)]
solos-pci: Fix DMA support

DMA support has finally made its way to the top of the TODO list, having
realised that a Geode using MMIO can't keep up with two ADSL2+ lines
each running at 21Mb/s.

This patch fixes a couple of bugs in the DMA support in the driver, so
once the corresponding FPGA update is complete and tested everything
should work properly.

We weren't storing the currently-transmitting skb, so we were never
unmapping it and never freeing/popping it when the TX was done.
And the addition of pci_set_master() is fairly self-explanatory.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Cc: stable@kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agoMAINTAINERS
jamal [Thu, 24 May 2012 02:45:02 +0000 (02:45 +0000)]
MAINTAINERS

After about two decades, I am giving up on cyberus.
Nabwaga Manyanga.

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agonet: qmi_wwan: Add Sierra Wireless device IDs
Bjørn Mork [Wed, 23 May 2012 23:19:32 +0000 (23:19 +0000)]
net: qmi_wwan: Add Sierra Wireless device IDs

Some additional Gobi3K IDs found in the BSD/GPL licensed
out-of-tree GobiNet driver from Sierra Wireless.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
12 years agoMerge branch 'drm-core-next' of git://people.freedesktop.org/~airlied/linux
Linus Torvalds [Thu, 24 May 2012 19:42:54 +0000 (12:42 -0700)]
Merge branch 'drm-core-next' of git://people.freedesktop.org/~airlied/linux

Pull main drm updates from Dave Airlie:
 "This is the main merge window request for the drm.

  It's big, but jam packed will lots of features and of course 0
  regressions.  (okay maybe there'll be one).

  Highlights:

   - new KMS drivers for server GPU chipsets: ast, mgag200 and cirrus
     (qemu only).  These drivers use the generic modesetting drivers.

   - initial prime/dma-buf support for i915, nouveau, radeon, udl and
     exynos

   - switcheroo audio support: so GPUs with HDMI can turn off the sound
     driver without crashing stuff.

   - There are some patches drifting outside drivers/gpu into x86 and
     EFI for better handling of multiple video adapters in Apple Macs,
     they've got correct acks except one trivial fixup.

   - Core:
edid parser has better DMT and reduced blanking support,
crtc properties,
plane properties,

   - Drivers:
exynos: add 2D core accel support, prime support, hdmi features
intel: more Haswell support, initial Valleyview support, more
    hdmi infoframe fixes, update MAINTAINERS for Daniel, lots of
    cleanups and fixes
radeon: more HDMI audio support, improved GPU lockup recovery
    support, remove nested mutexes, less memory copying on PCIE, fix
    bus master enable race (kexec), improved fence handling
gma500: cleanups, 1080p support, acpi fixes
nouveau: better nva3 memory reclocking, kepler accel (needs
    external firmware rip), async buffer moves on nv84+ hw.

  I've some more dma-buf patches that rely on the dma-buf merge for vmap
  stuff, and I've a few fixes building up, but I'd decided I'd better
  get rid of the main pull sooner rather than later, so the audio guys
  are also unblocked."

Fix up trivial conflict due to some duplicated changes in
drivers/gpu/drm/i915/intel_ringbuffer.c

* 'drm-core-next' of git://people.freedesktop.org/~airlied/linux: (605 commits)
  drm/nouveau/nvd9: Fix GPIO initialisation sequence.
  drm/nouveau: Unregister switcheroo client on exit
  drm/nouveau: Check dsm on switcheroo unregister
  drm/nouveau: fix a minor annoyance in an output string
  drm/nouveau: turn a BUG into a WARN
  drm/nv50: decode PGRAPH DATA_ERROR = 0x24
  drm/nouveau/disp: fix dithering not being enabled on some eDP macbooks
  drm/nvd9/copy: initialise copy engine, seems to work like nvc0
  drm/nvc0/ttm: use copy engines for async buffer moves
  drm/nva3/ttm: use copy engine for async buffer moves
  drm/nv98/ttm: add in a (disabled) crypto engine buffer copy method
  drm/nv84/ttm: use crypto engine for async buffer copies
  drm/nouveau/ttm: untangle code to support accelerated buffer moves
  drm/nouveau/fbcon: use fence for sync, rather than notifier
  drm/nv98/crypt: non-stub implementation of the engine hooks
  drm/nouveau/fifo: turn all fifo modules into engine modules
  drm/nv50/graph: remove ability to do interrupt-driven context switching
  drm/nv50: remove manual context unload on context destruction
  drm/nv50: remove execution engine context saves on suspend
  drm/nv50/fifo: use hardware channel kickoff functionality
  ...

12 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Linus Torvalds [Thu, 24 May 2012 18:54:29 +0000 (11:54 -0700)]
Merge git://git./linux/kernel/git/davem/net

Pull more networking updates from David Miller:
 "Ok, everything from here on out will be bug fixes."

1) One final sync of wireless and bluetooth stuff from John Linville.
   These changes have all been in his tree for more than a week, and
   therefore have had the necessary -next exposure.  John was just away
   on a trip and didn't have a change to send the pull request until a
   day or two ago.

2) Put back some defines in user exposed header file areas that were
   removed during the tokenring purge.  From Stephen Hemminger and Paul
   Gortmaker.

3) A bug fix for UDP hash table allocation got lost in the pile due to
   one of those "you got it..  no I've got it.." situations.  :-)

   From Tim Bird.

4) SKB coalescing in TCP needs to have stricter checks, otherwise we'll
   try to coalesce overlapping frags and crash.  Fix from Eric Dumazet.

5) RCU routing table lookups can race with free_fib_info(), causing
   crashes when we deref the device pointers in the route.  Fix by
   releasing the net device in the RCU callback.  From Yanmin Zhang.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (293 commits)
  tcp: take care of overlaps in tcp_try_coalesce()
  ipv4: fix the rcu race between free_fib_info and ip_route_output_slow
  mm: add a low limit to alloc_large_system_hash
  ipx: restore token ring define to include/linux/ipx.h
  if: restore token ring ARP type to header
  xen: do not disable netfront in dom0
  phy/micrel: Fix ID of KSZ9021
  mISDN: Add X-Tensions USB ISDN TA XC-525
  gianfar:don't add FCB length to hard_header_len
  Bluetooth: Report proper error number in disconnection
  Bluetooth: Create flags for bt_sk()
  Bluetooth: report the right security level in getsockopt
  Bluetooth: Lock the L2CAP channel when sending
  Bluetooth: Restore locking semantics when looking up L2CAP channels
  Bluetooth: Fix a redundant and problematic incoming MTU check
  Bluetooth: Add support for Foxconn/Hon Hai AR5BBU22 0489:E03C
  Bluetooth: Fix EIR data generation for mgmt_device_found
  Bluetooth: Fix Inquiry with RSSI event mask
  Bluetooth: improve readability of l2cap_seq_list code
  Bluetooth: Fix skb length calculation
  ...

12 years agoMerge branch 'perf-uprobes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
Linus Torvalds [Thu, 24 May 2012 18:39:34 +0000 (11:39 -0700)]
Merge branch 'perf-uprobes-for-linus' of git://git./linux/kernel/git/tip/tip

Pull user-space probe instrumentation from Ingo Molnar:
 "The uprobes code originates from SystemTap and has been used for years
  in Fedora and RHEL kernels.  This version is much rewritten, reviews
  from PeterZ, Oleg and myself shaped the end result.

  This tree includes uprobes support in 'perf probe' - but SystemTap
  (and other tools) can take advantage of user probe points as well.

  Sample usage of uprobes via perf, for example to profile malloc()
  calls without modifying user-space binaries.

  First boot a new kernel with CONFIG_UPROBE_EVENT=y enabled.

  If you don't know which function you want to probe you can pick one
  from 'perf top' or can get a list all functions that can be probed
  within libc (binaries can be specified as well):

$ perf probe -F -x /lib/libc.so.6

  To probe libc's malloc():

$ perf probe -x /lib64/libc.so.6 malloc
Added new event:
probe_libc:malloc    (on 0x7eac0)

  You can now use it in all perf tools, such as:

perf record -e probe_libc:malloc -aR sleep 1

  Make use of it to create a call graph (as the flat profile is going to
  look very boring):

$ perf record -e probe_libc:malloc -gR make
[ perf record: Woken up 173 times to write data ]
[ perf record: Captured and wrote 44.190 MB perf.data (~1930712

$ perf report | less

  32.03%            git  libc-2.15.so   [.] malloc
                    |
                    --- malloc

  29.49%            cc1  libc-2.15.so   [.] malloc
                    |
                    --- malloc
                       |
                       |--0.95%-- 0x208eb1000000000
                       |
                       |--0.63%-- htab_traverse_noresize

  11.04%             as  libc-2.15.so   [.] malloc
                     |
                     --- malloc
                        |

   7.15%             ld  libc-2.15.so   [.] malloc
                     |
                     --- malloc
                        |

   5.07%             sh  libc-2.15.so   [.] malloc
                     |
                     --- malloc
                        |
   4.99%  python-config  libc-2.15.so   [.] malloc
          |
          --- malloc
             |
   4.54%           make  libc-2.15.so   [.] malloc
                   |
                   --- malloc
                      |
                      |--7.34%-- glob
                      |          |
                      |          |--93.18%-- 0x41588f
                      |          |
                      |           --6.82%-- glob
                      |                     0x41588f

   ...

  Or:

$ perf report -g flat | less

# Overhead        Command  Shared Object      Symbol
# ........  .............  .............  ..........
#
  32.03%            git  libc-2.15.so   [.] malloc
          27.19%
              malloc

  29.49%            cc1  libc-2.15.so   [.] malloc
          24.77%
              malloc

  11.04%             as  libc-2.15.so   [.] malloc
          11.02%
              malloc

   7.15%             ld  libc-2.15.so   [.] malloc
           6.57%
              malloc

 ...

  The core uprobes design is fairly straightforward: uprobes probe
  points register themselves at (inode:offset) addresses of
  libraries/binaries, after which all existing (or new) vmas that map
  that address will have a software breakpoint injected at that address.
  vmas are COW-ed to preserve original content.  The probe points are
  kept in an rbtree.

  If user-space executes the probed inode:offset instruction address
  then an event is generated which can be recovered from the regular
  perf event channels and mmap-ed ring-buffer.

  Multiple probes at the same address are supported, they create a
  dynamic callback list of event consumers.

  The basic model is further complicated by the XOL speedup: the
  original instruction that is probed is copied (in an architecture
  specific fashion) and executed out of line when the probe triggers.
  The XOL area is a single vma per process, with a fixed number of
  entries (which limits probe execution parallelism).

  The API: uprobes are installed/removed via
  /sys/kernel/debug/tracing/uprobe_events, the API is integrated to
  align with the kprobes interface as much as possible, but is separate
  to it.

  Injecting a probe point is privileged operation, which can be relaxed
  by setting perf_paranoid to -1.

  You can use multiple probes as well and mix them with kprobes and
  regular PMU events or tracepoints, when instrumenting a task."

Fix up trivial conflicts in mm/memory.c due to previous cleanup of
unmap_single_vma().

* 'perf-uprobes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (21 commits)
  perf probe: Detect probe target when m/x options are absent
  perf probe: Provide perf interface for uprobes
  tracing: Fix kconfig warning due to a typo
  tracing: Provide trace events interface for uprobes
  tracing: Extract out common code for kprobes/uprobes trace events
  tracing: Modify is_delete, is_return from int to bool
  uprobes/core: Decrement uprobe count before the pages are unmapped
  uprobes/core: Make background page replacement logic account for rss_stat counters
  uprobes/core: Optimize probe hits with the help of a counter
  uprobes/core: Allocate XOL slots for uprobes use
  uprobes/core: Handle breakpoint and singlestep exceptions
  uprobes/core: Rename bkpt to swbp
  uprobes/core: Make order of function parameters consistent across functions
  uprobes/core: Make macro names consistent
  uprobes: Update copyright notices
  uprobes/core: Move insn to arch specific structure
  uprobes/core: Remove uprobe_opcode_sz
  uprobes/core: Make instruction tables volatile
  uprobes: Move to kernel/events/
  uprobes/core: Clean up, refactor and improve the code
  ...

12 years agoMerge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Linus Torvalds [Thu, 24 May 2012 17:34:29 +0000 (10:34 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/dtor/input

Pull input layer updates from Dmitry Torokhov:
 - a bunch of new drivers (DA9052/53 touchscreenn controller, Synaptics
   Navpoint, LM8333 keypads, Wacom I2C touhscreen);
 - updates to existing touchpad drivers (ALPS, Sntelic);
 - Wacom driver now supports Intuos5;
 - device-tree bindings in numerous drivers;
 - other cleanups and fixes.

Fix annoying conflict in drivers/input/tablet/wacom_wac.c that I think
implies that the input layer device naming is broken, but let's see.  I
brough it up with Dmitry.

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (57 commits)
  Input: matrix-keymap - fix building keymaps
  Input: spear-keyboard - document DT bindings
  Input: spear-keyboard - add device tree bindings
  Input: matrix-keymap - wire up device tree support
  Input: matrix-keymap - uninline and prepare for device tree support
  Input: adp5588 - add support for gpio names
  Input: omap-keypad - dynamically handle register offsets
  Input: synaptics - fix compile warning
  MAINTAINERS: adjust input-related patterns
  Input: ALPS - switch to using input_mt_report_finger_count
  Input: ALPS - add semi-MT support for v4 protocol
  Input: Add Synaptics NavPoint (PXA27x SSP/SPI) driver
  Input: atmel_mxt_ts - dump each message on just 1 line
  Input: atmel_mxt_ts - do not read extra (checksum) byte
  Input: atmel_mxt_ts - verify object size in mxt_write_object
  Input: atmel_mxt_ts - only allow root to update firmware
  Input: atmel_mxt_ts - use CONFIG_PM_SLEEP
  Input: sentelic - report device's production serial number
  Input: tl6040-vibra - Device Tree support
  Input: evdev - properly handle read/write with count 0
  ...

12 years agoMerge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
Linus Torvalds [Thu, 24 May 2012 17:21:51 +0000 (10:21 -0700)]
Merge branch 'v4l_for_linus' of git://git./linux/kernel/git/mchehab/linux-media

Pull media updates from Mauro Carvalho Chehab:
 - some V4L2 API updates needed by embedded devices
 - DVB API extensions for ATSC-MH delivery system, used in US for mobile
   TV
 - new tuners for fc0011/0012/0013 and tua9001
 - a new dvb driver for af9033/9035
 - a new ATSC-MH frontend (lg2160)
 - new remote controller keymaps
 - Removal of a few legacy webcam driver that got replaced by gspca on
   several kernel versions ago
 - a new driver for Exynos 4/5 webcams(s5pp fimc-lite)
 - a new webcam sensor driver (smiapp)
 - a new video input driver for embedded (sta2x1xx)
 - several improvements, fixes, cleanups, etc inside the drivers.

Manually fix up conflicts due to err() -> dev_err() conversion in
drivers/staging/media/easycap/easycap_main.c

* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (484 commits)
  [media] saa7134-cards: Remove a PCI entry added by mistake
  [media] radio-sf16fmi: add support for SF16-FMD
  [media] rc-loopback: remove duplicate line
  [media] patch for Asus My Cinema PS3-100 (1043:48cd)
  [media] au0828: Move the Kconfig knob under V4L_USB_DRIVERS
  [media] em28xx: simple comment fix
  [media] [resend] radio-sf16fmr2: add PnP support for SF16-FMD2
  [media] smiapp: Use v4l2_ctrl_new_int_menu() instead of v4l2_ctrl_new_custom()
  [media] smiapp: Add support for 8-bit uncompressed formats
  [media] smiapp: Allow generic quirk registers
  [media] smiapp: Use non-binning limits if the binning limit is zero
  [media] smiapp: Initialise rval in smiapp_read_nvm()
  [media] smiapp: Round minimum pre_pll up rather than down in ip_clk_freq check
  [media] smiapp: Use 8-bit reads only before identifying the sensor
  [media] smiapp: Quirk for sensors that only do 8-bit reads
  [media] smiapp: Pass struct sensor to register writing commands instead of i2c_client
  [media] smiapp: Allow using external clock from the clock framework
  [media] zl10353: change .read_snr() to report SNR as a 0.1 dB
  [media] media: add support to gspca/pac7302.c for 093a:2627 (Genius FaceCam 300)
  [media] m88rs2000 - only flip bit 2 on reg 0x70 on 16th try
  ...

12 years agoMerge branch 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux...
Dave Airlie [Thu, 24 May 2012 09:17:16 +0000 (10:17 +0100)]
Merge branch 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-core-next

Ben was distracted:

"Apologies for being really late with this, feel free to bash me in the
future so I remember on time!

Overview:
- improvements to reclocking (especially memory) on nva3+
- kepler accel support (if you have blob ucode)
- better inter-channel synchronisation on nv84+
- async ttm buffer moves on nv84+ (earlier cards don't have a non-PGRAPH
engine that's useful)"

* 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6: (60 commits)
  drm/nouveau/nvd9: Fix GPIO initialisation sequence.
  drm/nouveau: Unregister switcheroo client on exit
  drm/nouveau: Check dsm on switcheroo unregister
  drm/nouveau: fix a minor annoyance in an output string
  drm/nouveau: turn a BUG into a WARN
  drm/nv50: decode PGRAPH DATA_ERROR = 0x24
  drm/nouveau/disp: fix dithering not being enabled on some eDP macbooks
  drm/nvd9/copy: initialise copy engine, seems to work like nvc0
  drm/nvc0/ttm: use copy engines for async buffer moves
  drm/nva3/ttm: use copy engine for async buffer moves
  drm/nv98/ttm: add in a (disabled) crypto engine buffer copy method
  drm/nv84/ttm: use crypto engine for async buffer copies
  drm/nouveau/ttm: untangle code to support accelerated buffer moves
  drm/nouveau/fbcon: use fence for sync, rather than notifier
  drm/nv98/crypt: non-stub implementation of the engine hooks
  drm/nouveau/fifo: turn all fifo modules into engine modules
  drm/nv50/graph: remove ability to do interrupt-driven context switching
  drm/nv50: remove manual context unload on context destruction
  drm/nv50: remove execution engine context saves on suspend
  drm/nv50/fifo: use hardware channel kickoff functionality
  ...

12 years agoMerge branch 'next' into for-linus
Dmitry Torokhov [Thu, 24 May 2012 08:13:01 +0000 (01:13 -0700)]
Merge branch 'next' into for-linus

12 years agoInput: matrix-keymap - fix building keymaps
Dmitry Torokhov [Thu, 24 May 2012 08:10:20 +0000 (01:10 -0700)]
Input: matrix-keymap - fix building keymaps

Keymaps used by drivers based on matrix-keymap facilities are arrays of
unsigned shorts, not chars. Treating them otherwise produces corrupted
keymaps.

Reported-by: Sourav Poddar <sourav.poddar@ti.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
12 years agodrm/nouveau/nvd9: Fix GPIO initialisation sequence.
Marcin Kościelnicki [Mon, 21 May 2012 12:51:50 +0000 (14:51 +0200)]
drm/nouveau/nvd9: Fix GPIO initialisation sequence.

Signed-off-by: Marcin Kościelnicki <koriakin@0x04.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: Unregister switcheroo client on exit
Andreas Heider [Sun, 20 May 2012 23:14:51 +0000 (00:14 +0100)]
drm/nouveau: Unregister switcheroo client on exit

Currently nouveau only registers as a vga_switcheroo client, but never
unregisters. This patch adds the necessary unregister calls.

Signed-off-by: Andreas Heider <andreas@meetr.de>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: Check dsm on switcheroo unregister
Andreas Heider [Sun, 20 May 2012 23:14:50 +0000 (00:14 +0100)]
drm/nouveau: Check dsm on switcheroo unregister

Currently vga_switcheroo_unregister_handler is called unconditionally when
nouveau is unloaded, even when nouveau never registered a handler. This
interferes with other switcheroo handlers, as vga_switcheroo doesn't check who
called unregister_handler, but simply unregisters the current handler. This
patch adds a check so unregister is only called if a handler was registered by
nouveau before.

Signed-off-by: Andreas Heider <andreas@meetr.de>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: fix a minor annoyance in an output string
Ben Skeggs [Wed, 9 May 2012 10:17:07 +0000 (20:17 +1000)]
drm/nouveau: fix a minor annoyance in an output string

Bugs me every time I put in the TNT2..

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: turn a BUG into a WARN
Ben Skeggs [Wed, 9 May 2012 02:47:03 +0000 (12:47 +1000)]
drm/nouveau: turn a BUG into a WARN

This is very annoying sometimes..

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50: decode PGRAPH DATA_ERROR = 0x24
Marcin Slusarz [Sun, 6 May 2012 21:08:55 +0000 (23:08 +0200)]
drm/nv50: decode PGRAPH DATA_ERROR = 0x24

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/disp: fix dithering not being enabled on some eDP macbooks
Ben Skeggs [Fri, 4 May 2012 14:39:21 +0000 (00:39 +1000)]
drm/nouveau/disp: fix dithering not being enabled on some eDP macbooks

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nvd9/copy: initialise copy engine, seems to work like nvc0
Ben Skeggs [Fri, 4 May 2012 07:16:46 +0000 (17:16 +1000)]
drm/nvd9/copy: initialise copy engine, seems to work like nvc0

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nvc0/ttm: use copy engines for async buffer moves
Ben Skeggs [Fri, 4 May 2012 05:17:28 +0000 (15:17 +1000)]
drm/nvc0/ttm: use copy engines for async buffer moves

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nva3/ttm: use copy engine for async buffer moves
Ben Skeggs [Fri, 4 May 2012 05:15:12 +0000 (15:15 +1000)]
drm/nva3/ttm: use copy engine for async buffer moves

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv98/ttm: add in a (disabled) crypto engine buffer copy method
Ben Skeggs [Fri, 4 May 2012 04:34:16 +0000 (14:34 +1000)]
drm/nv98/ttm: add in a (disabled) crypto engine buffer copy method

Disabled for the moment until some performance issues are sorted out, code
committed as a reference point.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv84/ttm: use crypto engine for async buffer copies
Ben Skeggs [Fri, 4 May 2012 04:21:15 +0000 (14:21 +1000)]
drm/nv84/ttm: use crypto engine for async buffer copies

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/ttm: untangle code to support accelerated buffer moves
Ben Skeggs [Fri, 4 May 2012 04:01:52 +0000 (14:01 +1000)]
drm/nouveau/ttm: untangle code to support accelerated buffer moves

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/fbcon: use fence for sync, rather than notifier
Ben Skeggs [Fri, 4 May 2012 04:01:28 +0000 (14:01 +1000)]
drm/nouveau/fbcon: use fence for sync, rather than notifier

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv98/crypt: non-stub implementation of the engine hooks
Ben Skeggs [Wed, 2 May 2012 11:00:20 +0000 (21:00 +1000)]
drm/nv98/crypt: non-stub implementation of the engine hooks

fuc is from pscnv driver.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/fifo: turn all fifo modules into engine modules
Ben Skeggs [Tue, 1 May 2012 10:48:08 +0000 (20:48 +1000)]
drm/nouveau/fifo: turn all fifo modules into engine modules

Been tested on each major revision that's relevant here, but I'm sure there
are still bugs waiting to be ironed out.

This is a *very* invasive change.

There's a couple of pieces left that I don't like much (eg. other engines
using fifo_priv for the channel count), but that's an artefact of there
being a master channel list still.  This is changing, slowly.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50/graph: remove ability to do interrupt-driven context switching
Ben Skeggs [Tue, 1 May 2012 06:48:50 +0000 (16:48 +1000)]
drm/nv50/graph: remove ability to do interrupt-driven context switching

We never turn this on, no point maintaining the code for it..

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50: remove manual context unload on context destruction
Ben Skeggs [Tue, 1 May 2012 06:46:28 +0000 (16:46 +1000)]
drm/nv50: remove manual context unload on context destruction

PFIFO context destruction triggers this automagically now.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50: remove execution engine context saves on suspend
Ben Skeggs [Tue, 1 May 2012 06:39:08 +0000 (16:39 +1000)]
drm/nv50: remove execution engine context saves on suspend

Now triggered automagically by the GPU on PFIFO takedown.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50/fifo: use hardware channel kickoff functionality
Ben Skeggs [Tue, 1 May 2012 06:33:37 +0000 (16:33 +1000)]
drm/nv50/fifo: use hardware channel kickoff functionality

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50/gr: make sure NEXT_TO_CURRENT is executed even if nothing done
Ben Skeggs [Tue, 1 May 2012 06:12:32 +0000 (16:12 +1000)]
drm/nv50/gr: make sure NEXT_TO_CURRENT is executed even if nothing done

PFIFO channel kickoff will hang sometimes otherwise.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50/fifo: construct playlist from hw context table state
Ben Skeggs [Tue, 1 May 2012 03:59:31 +0000 (13:59 +1000)]
drm/nv50/fifo: construct playlist from hw context table state

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/fifo: remove all the "special" engine hooks
Ben Skeggs [Tue, 1 May 2012 00:14:07 +0000 (10:14 +1000)]
drm/nouveau/fifo: remove all the "special" engine hooks

All the places this stuff is actually needed tends to be chipset-specific
anyway, so we're able to just inline the register bashing instead.

The parts of the common code that still directly touch PFIFO temporarily
have conditionals, these will be removed in subsequent commits that will
refactor the fifo modules into engine modules like graph/mpeg etc.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/fence: fix a race where fence->channel can disappear
Ben Skeggs [Fri, 4 May 2012 06:25:47 +0000 (16:25 +1000)]
drm/nouveau/fence: fix a race where fence->channel can disappear

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/bios: fix some shadowing issues, particularly acpi
Ben Skeggs [Fri, 4 May 2012 06:25:13 +0000 (16:25 +1000)]
drm/nouveau/bios: fix some shadowing issues, particularly acpi

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: fix engine context destructor ordering
Ben Skeggs [Thu, 3 May 2012 06:54:15 +0000 (16:54 +1000)]
drm/nouveau: fix engine context destructor ordering

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/fence: convert to exec engine, and improve channel sync
Ben Skeggs [Mon, 30 Apr 2012 03:55:29 +0000 (13:55 +1000)]
drm/nouveau/fence: convert to exec engine, and improve channel sync

Now have a somewhat simpler semaphore sync implementation for nv17:nv84,
and a switched to using semaphores as fences on nv84+ and making use of
the hardware's >= acquire operation.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/fence: minor api changes for an upcoming rework
Ben Skeggs [Mon, 30 Apr 2012 03:30:00 +0000 (13:30 +1000)]
drm/nouveau/fence: minor api changes for an upcoming rework

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/fence: make ttm interfaces wrap ours, not the other way around
Ben Skeggs [Mon, 30 Apr 2012 02:51:48 +0000 (12:51 +1000)]
drm/nouveau/fence: make ttm interfaces wrap ours, not the other way around

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: move flip-related channel setup to software engine
Ben Skeggs [Mon, 30 Apr 2012 16:34:10 +0000 (11:34 -0500)]
drm/nouveau: move flip-related channel setup to software engine

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: create real execution engine for software object class
Ben Skeggs [Mon, 30 Apr 2012 16:33:43 +0000 (11:33 -0500)]
drm/nouveau: create real execution engine for software object class

Just a cleanup more or less, and to remove the need for special handling of
software objects.

This removes a heap of documentation on dma/graph object formats.  The info
is very out of date with our current understanding, and is far better
documented in rnndb in envytools git.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nvd0/disp: remove unnecessary sync from flip_next
Ben Skeggs [Mon, 30 Apr 2012 00:56:09 +0000 (10:56 +1000)]
drm/nvd0/disp: remove unnecessary sync from flip_next

This shouldn't be necessary, I believe this is just a bit of missed debug
code that got left over somehow.

Causes flips to be always synced to vblank, regardless of swap interval,
which we don't want..

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv04/disp: disable vblank interrupts when disabling display
Ben Skeggs [Tue, 22 Nov 2011 03:59:30 +0000 (13:59 +1000)]
drm/nv04/disp: disable vblank interrupts when disabling display

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: base fence timeout on time of emission
Marcin Slusarz [Wed, 25 Apr 2012 21:20:33 +0000 (23:20 +0200)]
drm/nouveau: base fence timeout on time of emission

Wait loop can be interrupted by signal, so if signals are raised
periodically (e.g. SIGALRM) this loop may never finish. Use
emission time as a base for fence timeout.

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv40-50/gr: restructure grctx/prog generation
Ben Skeggs [Fri, 20 Apr 2012 01:54:33 +0000 (11:54 +1000)]
drm/nv40-50/gr: restructure grctx/prog generation

The conditional definition of the generation helper functions apparently
confuses some IDEs....

Reported-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50/disp: fixup error paths in crtc object creation
Ben Skeggs [Fri, 20 Apr 2012 01:01:46 +0000 (11:01 +1000)]
drm/nv50/disp: fixup error paths in crtc object creation

Reported-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: cleanup after display init failure
Marcin Slusarz [Sun, 15 Apr 2012 12:36:08 +0000 (14:36 +0200)]
drm/nouveau: cleanup after display init failure

Depending on exact point of failure, not cleaning would lead to
BUG_ONs/oopses in various distant places.

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50: fix ramin heap size for kernel channel too
Marcin Slusarz [Sun, 15 Apr 2012 12:36:07 +0000 (14:36 +0200)]
drm/nv50: fix ramin heap size for kernel channel too

Port change from "drm/nouveau: Keep RAMIN heap within the channel"
to kernel channel, which has its own ramin heap initialisation.

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Cc: Younes Manton <younes.m@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nve0/graph: bump hub2gpc buffer size
Ben Skeggs [Wed, 4 Apr 2012 01:16:44 +0000 (11:16 +1000)]
drm/nve0/graph: bump hub2gpc buffer size

Reported-by: Christoph Bumiller <e0425955@student.tuwien.ac.at>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: use the same packet header macros as userspace
Ben Skeggs [Sun, 1 Apr 2012 11:09:13 +0000 (21:09 +1000)]
drm/nouveau: use the same packet header macros as userspace

Cosmetic cleanup only.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/bios: allow loading alternate vbios image as firmware
Ben Skeggs [Fri, 30 Mar 2012 03:14:45 +0000 (13:14 +1000)]
drm/nouveau/bios: allow loading alternate vbios image as firmware

Useful for debugging different VBIOS versions.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nve0/ttm: implement buffer moves with weirdo pcopy-on-pgraph methods
Ben Skeggs [Tue, 20 Mar 2012 04:36:04 +0000 (14:36 +1000)]
drm/nve0/ttm: implement buffer moves with weirdo pcopy-on-pgraph methods

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nv50-/fbcon: move 2d class to subchannel 3
Ben Skeggs [Tue, 20 Mar 2012 04:20:50 +0000 (14:20 +1000)]
drm/nv50-/fbcon: move 2d class to subchannel 3

Kepler GRAPH has (well, sorta) fixed subchannel<->class assignments, make
this match up to keep it happy without trapping.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nve0/gr: initial implementation
Ben Skeggs [Tue, 13 Mar 2012 03:05:13 +0000 (13:05 +1000)]
drm/nve0/gr: initial implementation

This may, perhaps, get re-merged with nvc0_graph.c at some point.  It's
still unclear as to how great an idea that'd be.  Stay tuned...

Completely dependent on firmware blobs from NVIDIA binary driver currently.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nve0/fifo: initial implementation
Ben Skeggs [Thu, 8 Mar 2012 00:41:45 +0000 (10:41 +1000)]
drm/nve0/fifo: initial implementation

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau: give a slightly larger pci(e)gart aperture on all chipsets
Ben Skeggs [Tue, 27 Mar 2012 05:15:18 +0000 (15:15 +1000)]
drm/nouveau: give a slightly larger pci(e)gart aperture on all chipsets

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nouveau/pm: some more delays for ddr3 reclocking
Ben Skeggs [Mon, 6 Feb 2012 06:20:30 +0000 (16:20 +1000)]
drm/nouveau/pm: some more delays for ddr3 reclocking

These numbers from the binary driver's daemon scripts, and fix the transition
to perflvl 3 on my T510.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nvc0/pm: very initial mclk freq change
Ben Skeggs [Mon, 6 Feb 2012 03:51:30 +0000 (13:51 +1000)]
drm/nvc0/pm: very initial mclk freq change

Loads of magic missing, this will probably blow up if you try it.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nvd9/pm: oops, fix timing calc
Ben Skeggs [Mon, 6 Feb 2012 01:42:29 +0000 (11:42 +1000)]
drm/nvd9/pm: oops, fix timing calc

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nvc0/pm: enable mpll src pll, and calc mpll coefficients
Ben Skeggs [Mon, 6 Feb 2012 01:34:20 +0000 (11:34 +1000)]
drm/nvc0/pm: enable mpll src pll, and calc mpll coefficients

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nvc0/pm: start filling in memory reclocking stubs
Ben Skeggs [Tue, 31 Jan 2012 23:00:57 +0000 (09:00 +1000)]
drm/nvc0/pm: start filling in memory reclocking stubs

12 years agodrm/nva3/pm: another few magic regs, and slightly better 0x004018 handling
Ben Skeggs [Sun, 5 Feb 2012 23:58:09 +0000 (09:58 +1000)]
drm/nva3/pm: another few magic regs, and slightly better 0x004018 handling

Not entirely convinced 0x004018 transitions are correct yet, but, it's
an improvement.

The 750MHz value comes from fiddling with the binary driver + coolbits on
two different DDR3 NVA8 chipsets (T510 NVS3100M, and NVS300), not a clue
where this number comes from.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nva3/pm: initial attempt at handling 111100/111104
Ben Skeggs [Fri, 3 Feb 2012 00:34:33 +0000 (10:34 +1000)]
drm/nva3/pm: initial attempt at handling 111100/111104

Probably not quite right, but this is enough now to make NVS300 reclock
between all 3 of its perflvls correctly.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nva3/pm: make pll->pll mode work
Ben Skeggs [Fri, 3 Feb 2012 00:02:03 +0000 (10:02 +1000)]
drm/nva3/pm: make pll->pll mode work

This probably wants a cleanup, but I'm holding off until I know for sure
how the rest of the things that need doing fit together.

Tested on NVS300 by hacking up perflvl 1 to require PLL mode, and switching
between perflvl 3 and 1.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nva3/pm: attempt to bash a few 0x100200 bits correctly
Ben Skeggs [Thu, 2 Feb 2012 05:07:13 +0000 (15:07 +1000)]
drm/nva3/pm: attempt to bash a few 0x100200 bits correctly

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
12 years agodrm/nva3/pm: begin to restructure memory clock changes + another magic
Ben Skeggs [Thu, 2 Feb 2012 01:43:31 +0000 (11:43 +1000)]
drm/nva3/pm: begin to restructure memory clock changes + another magic

The binary driver appears to do various bits and pieces of the memory
clock frequency change at different times, depending on the particular
transition that's occuring.  I've attempted to replicate this here
for div->pll, pll->div and div->div transitions.

With some additional (patches upcoming) magic regs being bashed, this
allows me to correctly transition between all 3 perflvls on NVS300.

pll->pll transitions will *not* work correctly at the moment, pending
me tricking the binary driver into doing one and seeing how to correctly
handle it.

This patch also handles (hopefully) 0x1110e0, which appears to need
changing depending on whether in PLL or divider mode.. Maybe.  We'll
see.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>