aboutsummaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)AuthorFilesLines
2010-04-09drm/nouveau: remove some unused members from drm_nouveau_privateBen Skeggs2-11/+0
Signed-off-by: Ben Skeggs <[email protected]>
2010-04-09drm/nouveau: Make use of TTM busy_placements.Francisco Jerez3-59/+61
Previously we were filling it the same as "placements", but in some cases there're valid alternatives that we were ignoring completely. Keeping a back-up memory type helps on several low-mem situations. Signed-off-by: Francisco Jerez <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2010-04-09drm/nv50: add more 0x100c80 flushy magicBen Skeggs2-0/+46
Fixes the !vbo_fifo path in the 3D driver on certain chipsets. Still not really any good idea of what exactly the magic achieves, but it makes things work. While we're at it, in the PCIEGART path, flush on unbinding also. Signed-off-by: Ben Skeggs <[email protected]>
2010-04-09drm/nv50: fix fbcon when framebuffer above 4GiB markBen Skeggs1-6/+7
This can't actually happen right now, but lets fix it anyway. Signed-off-by: Ben Skeggs <[email protected]>
2010-04-09drm/nv50: Fix NEWCTX_DONE flag numberMarcin Kościelnicki1-3/+3
Signed-off-by: Marcin Kościelnicki <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2010-04-08[SCSI] qla2xxx: fix lock imbalanceJiri Slaby1-0/+1
Stanse found that one error path in qla24xx_bsg_timeout omits to unlock ha->hardware_lock. Fix that. Signed-off-by: Jiri Slaby <[email protected]> Acked-by: Giridhar Malavali <[email protected]> Signed-off-by: James Bottomley <[email protected]>
2010-04-08[SCSI] lpfc: fix lock imbalancesJiri Slaby1-2/+2
Stanse found that two error paths in lpfc_bsg_rport_els_cmp and lpfc_issue_ct_rsp_cmp omits to unlock phba->ct_ev_lock. It is because they wrongly unlock phba->hbalock instead. Fix that. Signed-off-by: Jiri Slaby <[email protected]> Acked-by: James Smart <[email protected]> Signed-off-by: James Bottomley <[email protected]>
2010-04-08[SCSI] be2iscsi: fix lock imbalanceJiri Slaby1-0/+1
Stanse found that one error path in mgmt_invalidate_icds omits to unlock ctrl->mbox_lock. Fix that. Added in 756d29c8c7ed8887ed7d752371ce2f (Enable async mode for mcc rings) where the spinlock was moved. Signed-off-by: Jiri Slaby <[email protected]> Acked-by: Jayamohan Kallickal <[email protected]> Reviewed-by: Mike Christie <[email protected]> Signed-off-by: James Bottomley <[email protected]>
2010-04-08[SCSI] dpt_i2o: several use after free issuesDan Carpenter1-6/+9
adpt_i2o_delete_hba() calls kfree() so we have to save "pHba->next" before calling it. Also inside adpt_i2o_delete_hba() itself, there was another use after free bug which I fixed by moving the kfree() down a line. Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: James Bottomley <[email protected]>
2010-04-08iwlwifi: need check for valid qos packet before freeWey-Yi Guy1-4/+9
For 4965, need to check it is valid qos frame before free, only valid QoS frame has the tid used to free the packets. Signed-off-by: Wey-Yi Guy <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2010-04-08loop: Update mtime when writing using aopsNikanth Karthikesan1-0/+2
Update mtime when writing to backing filesystem using the address space operations write_begin and write_end. Signed-off-by: Nikanth Karthikesan <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
2010-04-08Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6Linus Torvalds4-6/+5
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6: ide: Fix IDE taskfile with cfq scheduler ide: Must hold queue lock when requeueing ide: Requeue request after DMA timeout
2010-04-08Merge branch 'release' of ↵Linus Torvalds10-98/+131
git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: ACPI / PM: Move ACPI video resume to a PM notifier ACPI: Reduce ACPI resource conflict message to KERN_WARNING, printk cleanup ACPI: battery drivers should call power_supply_changed() ACPI: battery: Fix CONFIG_ACPI_SYSFS_POWER=n PNPACPI: truncate _CRS windows with _LEN > _MAX - _MIN + 1 ACPI: Don't send KEY_UNKNOWN for random video notifications ACPI: NUMA: map pxms to low node ids ACPI: use _HID when supplied by root-level devices ACPI / ACPICA: Do not check reference counters in acpi_ev_enable_gpe() ACPI: fixes a false alarm from lockdep ACPI dock: support multiple ACPI dock devices ACPI: EC: Allow multibyte access to EC
2010-04-07myri10ge: fix rx_pause in myri10ge_set_pauseparamBrice Goglin1-1/+1
Fix rx_pause management in myri10ge_set_pauseparam(). Signed-off-by: Brice Goglin <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-04-07stmmac: use resource_size()Dan Carpenter1-5/+5
Resource size should be calculated as end - start + 1 because we start counting at zero. I changed the code to resource_size() to do the calculation. Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-04-07cnic: Fix crash during bnx2x MTU change.Michael Chan1-5/+5
cnic_service_bnx2x() irq handler can be called during chip reset from MTU change. Need to check that the cnic's device state is up before handling the irq. Signed-off-by: Michael Chan <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-04-08hvc_console: Fix race between hvc_close and hvc_removeAnton Blanchard1-4/+0
I don't claim to understand the tty layer, but it seems like hvc_open and hvc_close should be balanced in their kref reference counting. Right now we get a kref every call to hvc_open: if (hp->count++ > 0) { tty_kref_get(tty); <----- here spin_unlock_irqrestore(&hp->lock, flags); hvc_kick(); return 0; } /* else count == 0 */ tty->driver_data = hp; hp->tty = tty_kref_get(tty); <------ or here if hp->count was 0 But hvc_close has: tty_kref_get(tty); if (--hp->count == 0) { ... /* Put the ref obtained in hvc_open() */ tty_kref_put(tty); ... } tty_kref_put(tty); Since the outside kref get/put balance we only do a single kref_put when count reaches 0. The patch below changes things to call tty_kref_put once for every hvc_close call, and with that my machine boots fine. Signed-off-by: Anton Blanchard <[email protected]> Acked-by: Amit Shah <[email protected]> Signed-off-by: Rusty Russell <[email protected]>
2010-04-08virtio: disable multiport console support.Michael S. Tsirkin1-8/+41
Move MULTIPORT feature and related config changes out of exported headers, and disable the feature at runtime. At this point, it seems less risky to keep code around until we can enable it than rip it out completely. Signed-off-by: Michael S. Tsirkin <[email protected]> Signed-off-by: Rusty Russell <[email protected]>
2010-04-08virtio: console makes incorrect assumption about virtio APIRusty Russell1-7/+3
The get_buf() API sets the second arg to the number of bytes *written* by the other side; in this case it should be zero as these are output buffers. lguest gets this right (obviously kvm's console doesn't), resulting in continual buildup of console writes. Signed-off-by: Rusty Russell <[email protected]> Acked-by: Amit Shah <[email protected]>
2010-04-08virtio: console: Fix early_put_chars usageFrançois Diakhaté1-3/+3
Currently early_put_chars is not used by virtio_console because it can only be used once a port has been found, at which point it's too late because it is no longer needed. This patch should fix it. Acked-by: Christian Borntraeger <[email protected]> Signed-off-by: Amit Shah <[email protected]> Signed-off-by: Rusty Russell <[email protected]>
2010-04-07Merge branch 'vhost' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhostDavid S. Miller1-0/+4
2010-04-07qlcnic: fix set mac addrAmit Kumar Salecha1-0/+3
If interface is down, mac address request are not sent to fw but it is getting add in driver mac list. Driver mac list should be in sync with fw i.e addresses communicated to fw. Signed-off-by: Amit Kumar Salecha <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-04-07r6040: fix r6040_multicast_listFlorian Fainelli1-7/+4
As reported in <https://bugzilla.kernel.org/show_bug.cgi?id=15355>, r6040_ multicast_list currently crashes. This is due a wrong maximum of multicast entries. This patch fixes the following issues with multicast: - number of maximum entries if off-by-one (4 instead of 3) - the writing of the hash table index is not necessary and leads to invalid values being written into the MCR1 register, so the MAC is simply put in a non coherent state - when we exceed the maximum number of mutlticast address, writing the broadcast address should be done in registers MID_1{L,M,H} instead of MID_O{L,M,H}, otherwise we would loose the adapter's MAC address Signed-off-by: Florian Fainelli <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-04-07Merge branch 'master' of ↵David S. Miller5-51/+130
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
2010-04-07IB/mlx4: Check correct variable for allocation failureDan Carpenter1-1/+1
The intent here is to check the "mfrpl->mapped_page_list" allocation. We checked "mfrpl->ibfrpl.page_list" earlier. Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: Roland Dreier <[email protected]>
2010-04-07RDMA/nes: Correct cap.max_inline_data assignment in nes_query_qp()Chien Tung1-5/+4
cap.max_inline_data is incorrectly set in init_attr instead of attr. Set it in attr so subsequent init_attr.cap assignment will get the correct value. Signed-off-by: Chien Tung <[email protected]> Signed-off-by: Roland Dreier <[email protected]>
2010-04-07RDMA/cm: Set num_paths when manually assigning path recordsSean Hefty1-0/+1
When manually assigning the path records to use for a connection, save the number of paths that were set. Otherwise, checks against num_path will show 0, even though path record data is available. This was discovered by manually setting the path records from user space, then querying the kernel to see if the correct path records were assigned, only to discover that the kernel returned 0 path records to the query. Signed-off-by: Sean Hefty <[email protected]> Signed-off-by: Roland Dreier <[email protected]>
2010-04-07Merge branch 'x86-fixes-for-linus' of ↵Linus Torvalds1-3/+8
git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip: x86: Fix double enable_IR_x2apic() call on SMP kernel on !SMP boards x86: Increase CONFIG_NODES_SHIFT max to 10 ibft, x86: Change reserve_ibft_region() to find_ibft_region() x86, hpet: Fix bug in RTC emulation x86, hpet: Erratum workaround for read after write of HPET comparator bootmem, x86: Fix 32bit numa system without RAM on node 0 nobootmem, x86: Fix 32bit numa system without RAM on node 0 x86: Handle overlapping mptables x86: Make e820_remove_range to handle all covered case x86-32, resume: do a global tlb flush in S4 resume
2010-04-07Merge branch 'slabh' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/miscLinus Torvalds1-1/+1
* 'slabh' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc: nodemask: include slab.h from drivers/base/node.c
2010-04-07frv: hide uncached_access() when pgprot_noncached is not #definedDavid Howells1-0/+2
Hide uncached_access() when pgprot_noncached is not #defined. This prevents the following warning: CC drivers/char/mem.o drivers/char/mem.c:229: warning: 'uncached_access' defined but not used Repairs d7d4d849b4e3acc405ec222884936800ffb26d48 ("drivers/char/mem.c: cleanups"). Signed-off-by: David Howells <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07rtc-mxc: multiple fixes in rtc-mxc probe methodVladimir Zapolskiy1-13/+13
On exit paths in mxc_rtc_probe() method some resources are not freed correctly. This patch fixes: * unrequested memory region containing imx RTC registers * iounmap() isn't called on exit_free_pdata branch * clock get rate is called for freed clock source * clock isn't disabled on exit_put_clk branch To simplify the fix managed device resources are used. [[email protected]: coding-style fixes] Signed-off-by: Vladimir Zapolskiy <[email protected]> Cc: Alessandro Zummo <[email protected]> Cc: Daniel Mack <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07/dev/mem: allow rewindingEric Dumazet1-5/+0
commit dcefafb6 ("/dev/mem: dont allow seek to last page") inadvertently disabled rewinding on /dev/mem. This broke x86info for example. Signed-off-by: Eric Dumazet <[email protected]> Acked-by: Wu Fengguang <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07vfs: rename block_fsync() to blkdev_fsync()Andrew Morton1-1/+1
Requested by hch, for consistency now it is exported. Cc: Alexander Viro <[email protected]> Cc: Anton Blanchard <[email protected]> Cc: Christoph Hellwig <[email protected]> Cc: Jan Kara <[email protected]> Cc: Jeff Moyer <[email protected]> Cc: Jens Axboe <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07raw: fsync method is now requiredAnton Blanchard1-0/+1
Commit 148f948ba877f4d3cdef036b1ff6d9f68986706a (vfs: Introduce new helpers for syncing after writing to O_SYNC file or IS_SYNC inode) broke the raw driver. We now call through generic_file_aio_write -> generic_write_sync -> vfs_fsync_range. vfs_fsync_range has: if (!fop || !fop->fsync) { ret = -EINVAL; goto out; } But drivers/char/raw.c doesn't set an fsync method. We have two options: fix it or remove the raw driver completely. I'm happy to do either, the fact this has been broken for so long suggests it is rarely used. The patch below adds an fsync method to the raw driver. My knowledge of the block layer is pretty sketchy so this could do with a once over. If we instead decide to remove the raw driver, this patch might still be useful as a backport to 2.6.33 and 2.6.32. Signed-off-by: Anton Blanchard <[email protected]> Reviewed-by: Jan Kara <[email protected]> Cc: Christoph Hellwig <[email protected]> Cc: Alexander Viro <[email protected]> Cc: Jens Axboe <[email protected]> Reviewed-by: Jeff Moyer <[email protected]> Tested-by: Jeff Moyer <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07mb862xxfb: update Valentin's email addressAlexander Shishkin1-1/+1
Since Valentin's email address @siemens.com is no longer valid, it's time to change it to the one that actually works so that I don't have to manually forward patches against mb862xx to him every time. Signed-off-by: Alexander Shishkin <[email protected]> Acked-by: Valentin Sitdikov <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07mb862xxfb: fix acceleration module licenseRandy Dunlap1-0/+3
mb862xxfb_accel built as a separate module, but it does not have a MODULE_LICENSE, so it taints the kernel. Add a MODULE_LICENSE to it (same as mb862xxfb license). mb862xxfb_accel: module license 'unspecified' taints kernel. Or should mb862xxfb_accel be built into the mb862xxfb binary file instead? Signed-off-by: Randy Dunlap <[email protected]> Acked-by: Alexander Shishkin <[email protected]> Cc: Valentin Sitdikov <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07devmem: handle class_create() failureAnton Blanchard1-0/+3
I hit this when we had a bug in IDR for a few days. Basically sysfs would fail to create new inodes since it uses an IDR and therefore class_create would fail. While we are unlikely to see this fail we may as well handle it instead of oopsing. Signed-off-by: Anton Blanchard <[email protected]> Reviewed-by: Wu Fengguang <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07device_attributes: add sysfs_attr_init() for dynamic attributesWolfram Sang4-0/+11
Made necessary by 6992f5334995af474c2b58d010d08bc597f0f2fe ("sysfs: Use one lockdep class per sysfs attribute"). Prevents further "key xxx not in .data" bug-reports. Although some attributes could probably be converted to static ones, this is left for people having hardware to test. Found by this semantic patch: @ init @ type T; identifier A; @@ T { ... struct device_attribute A; ... }; @ main extends init @ expression E; statement S; identifier err; T *name; @@ ... when != sysfs_attr_init(&name->A.attr); ( + sysfs_attr_init(&name->A.attr); if (device_create_file(E, &name->A)) S | + sysfs_attr_init(&name->A.attr); err = device_create_file(E, &name->A); ) While reviewing, I put the initialization to apropriate places. Signed-off-by: Wolfram Sang <[email protected]> Cc: Eric W. Biederman <[email protected]> Cc: Greg KH <[email protected]> Cc: Benjamin Herrenschmidt <[email protected]> Cc: Grant Likely <[email protected]> Cc: Mike Isely <[email protected]> Cc: Mauro Carvalho Chehab <[email protected]> Cc: Sujith Thomas <[email protected]> Cc: Matthew Garrett <[email protected]> Cc: Len Brown <[email protected]> Cc: Krzysztof Helt <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07drivers/thermal/thermal_sys.c: fix 'key f70f4b50 not in .data' in thermal_sysSergey Senozhatsky1-0/+3
Initialize sysfs attributes before device_create_file call. Addresses https://bugzilla.kernel.org/show_bug.cgi?id=15548 Signed-off-by: Wolfram Sang <[email protected]> Signed-off-by: Sergey Senozhatsky <[email protected]> Cc: "Eric W. Biederman" <[email protected]> Cc: Greg KH <[email protected]> Cc: Zhang Rui <[email protected]> Cc: Len Brown <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07cciss: unlock on error pathDan Carpenter1-0/+1
We take the spin_lock again in fail_all_cmds() so we need to unlock here. Signed-off-by: Dan Carpenter <[email protected]> Acked-by: Steve Cameron <[email protected]> Cc: Jens Axboe <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07mxser: spin_lock() => spin_lock_irq()Dan Carpenter1-3/+3
This should be spin_lock_irq() to match the spin_unlock_irq(). Originally it was a lock_kernel() but we switched everything to spin_lock_irq() last November. [[email protected]: fix the MOXA_ASPP_MON case too (per Jiri)] Signed-off-by: Dan Carpenter <[email protected]> Cc: Jiri Slaby <[email protected]> Cc: Alan Cox <[email protected]> Cc: Greg KH <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07omap hsmmc: fix a bug in card remove scenarioMadhusudhan Chikkature1-7/+2
The reset of data lines when the card is removed from the cage results in a failure.The failure is seen if the card is removed from the cage when TC is pending after a CMD with data received CC.The reset logic leaves the controller in a state where niether a TC is received nor DTO. The rest code can be safely removed here since it is taken care in the IRQ handler. Signed-off-by: Madhusudhan Chikkature <[email protected]> Cc: Adrian Hunter <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07drivers/gpio/timbgpio.c: add missing unlockJulia Lawall1-4/+8
In an error handling case the lock is not unlocked. The return is converted to a goto, to share the unlock at the end of the function. A simplified version of the semantic patch that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r exists@ expression E1; identifier f; @@ f (...) { <+... * spin_lock_irqsave (E1,...); ... when != E1 * return ...; ...+> } // </smpl> Signed-off-by: Julia Lawall <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07drivers/char/amiserial.c: add missing local_irq_restoreJulia Lawall1-2/+2
rs_init() is failing to restore interrupts on two error paths, and is incorrectly calling tty_unregister_driver() with local interrupts disabled. Fix these things by disabling interrupts later, after the reauest_irq() calls. A simplified version of the semantic patch that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r exists@ expression E1; identifier f; @@ f (...) { <+... * local_irq_save (E1,...); ... when != E1 * return ...; ...+> } // </smpl> [[email protected]: reimplement the fix] Signed-off-by: Julia Lawall <[email protected]> Cc: Thadeu Lima de Souza Cascardo <[email protected]> Cc: Greg KH <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07vesafb: use platform_driver_probe() instead of platform_driver_register()Jan Beulich1-13/+13
Commit c2e13037e6794bd0d9de3f9ecabf5615f15c160b ("platform-drivers: move probe to .devinit.text in drivers/video") introduced a huge amount of section mismatch warnings in vesafb code. Rather than converting all of the annotations, do the obvious and revert the __init -> __devinit change, and use the recommended (in that patch) alternative to calling platform_driver_register(): vesafb depends on information obtained from by kernel at boot time, cannot be a module, and no post-boot devices can ever show up. Signed-off-by: Jan Beulich <[email protected]> Cc: Greg KH <[email protected]> Acked-by: Uwe Kleine-König <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2010-04-07vhost-net: fix vq_memory_access_ok error checkingJeff Dike1-0/+4
vq_memory_access_ok needs to check whether mem == NULL Signed-off-by: Jeff Dike <[email protected]> Signed-off-by: Michael S. Tsirkin <[email protected]>
2010-04-07drm/radeon/kms/combios: verify dac_adj values are validAlex Deucher1-5/+15
Some vbios dac_adj tables are all zeros. Check for that case and use the default table if so. Should fix fdo bug 27478. Signed-off-by: Alex Deucher <[email protected]> Cc: stable <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-04-07drm/radeon/kms: clean up atom dac handlingAlex Deucher1-14/+7
- make sure legacy dac1 has an enc priv - remove unused num var - no need for extra tv_dac var in atom dac functions Signed-off-by: Alex Deucher <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-04-07drm/radeon/kms: legacy tv dac cleanupAlex Deucher1-25/+33
- fix formatting - clean up tv_dac_cntl handling for tv Signed-off-by: Alex Deucher <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-04-07drm/radeon/kms: small memory leak in atom exit codeDan Carpenter1-2/+5
This is an unlikely memory leak, but we may as well fix it. It's easy to fix and every static checker will complain if we don't. Signed-off-by: Dan Carpenter <[email protected]> Reviewed-by: Matt Turner <[email protected]> Signed-off-by: Dave Airlie <[email protected]>