aboutsummaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)AuthorFilesLines
2010-08-28Merge branch 'for-linus' of ↵Linus Torvalds18-59/+54
git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: pxa27x_keypad - remove input_free_device() in pxa27x_keypad_remove() Input: mousedev - fix regression of inverting axes Input: uinput - add devname alias to allow module on-demand load Input: hil_kbd - fix compile error USB: drop tty argument from usb_serial_handle_sysrq_char() Input: sysrq - drop tty argument form handle_sysrq() Input: sysrq - drop tty argument from sysrq ops handlers
2010-08-27libertas: if_sdio: fix buffer alignment in struct if_sdio_cardMike Rapoport1-1/+1
The commit 886275ce41a9751117367fb387ed171049eb6148 (param: lock if_sdio's lbs_helper_name and lbs_fw_name against sysfs changes) introduced new fields into the if_sdio_card structure. It caused missalignment of the if_sdio_card.buffer field and failure at driver load time: ~# modprobe libertas_sdio [ 62.315124] libertas_sdio: Libertas SDIO driver [ 62.319976] libertas_sdio: Copyright Pierre Ossman [ 63.020629] DMA misaligned error with device 48 [ 63.025207] mmci-omap-hs mmci-omap-hs.1: unexpected dma status 800 [ 66.005035] libertas: command 0x0003 timed out [ 66.009826] libertas: Timeout submitting command 0x0003 [ 66.016296] libertas: PREP_CMD: command 0x0003 failed: -110 Adding explicit alignment attribute for the if_sdio_card.buffer field fixes this problem. Signed-off-by: Mike Rapoport <[email protected]> Acked-by: Marek Vasut <[email protected]> Acked-by: Dan Williams <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2010-08-27drm/radeon/kms: add missing scratch update in dp_detectAlex Deucher1-0/+1
Signed-off-by: Alex Deucher <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-08-27drm/modes: Fix CVT-R modeline generationAdam Jackson1-1/+4
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=16651 Signed-off-by: Adam Jackson <[email protected]> Tested-by: Adam Serbinski <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-08-27drm: fix regression in drm locking since BKL removal.Arnd Bergmann1-0/+2
This locking path needs proper auditing but probably too late for changes at this point for 2.6.36, so lets go with the quick fix, which is to drop the lock around schedule. Reported-by: Andreas Schwab <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-08-27drm/radeon/kms: remove stray radeon_i2c_destroyAlex Deucher1-2/+0
I missed this one in the i2c unification patch. This is handled in the core radeon i2c code now. Signed-off-by: Alex Deucher <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-08-27drm: mm: fix range restricted allocationsDaniel Vetter1-10/+14
With the code cleanup in 7a6b2896f261894dde287d3faefa4b432cddca53 is the first bad commit commit 7a6b2896f261894dde287d3faefa4b432cddca53 Author: Daniel Vetter <[email protected]> Date: Fri Jul 2 15:02:15 2010 +0100 drm_mm: extract check_free_mm_node I've botched up the range-restriction checks. The result is usually an X server dying with SIGBUS in libpixman (software fallback rendering). Change the code to adjust the start and end for range restricted allocations. IMHO this even makes the code a bit clearer. Fixes regression bug: https://bugs.freedesktop.org/show_bug.cgi?id=29738 Reported-by-Tested-by: Till MAtthiesen <[email protected]> Acked-by: Alex Deucher <[email protected]> Signed-off-by: Daniel Vetter <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-08-27Merge remote branch 'nouveau/for-airlied' of /ssd/git/drm-nouveau-next into ↵Dave Airlie7-61/+61
drm-fixes * 'nouveau/for-airlied' of /ssd/git/drm-nouveau-next: drm/nouveau: drop drm_global_mutex before sleeping in submission path drm: export drm_global_mutex for drivers to use drm/nv20: Don't use pushbuf calls on the original nv20. drm/nouveau: Fix TMDS on some DCB1.5 boards. drm/nouveau: Fix backlight control on PPC machines with an internal TMDS panel. drm/nv30: Apply modesetting to the correct slave encoder drm/nouveau: Use a helper function to match PCI device/subsystem IDs. drm/nv50: add dcb type 14 to enum to prevent compiler complaint
2010-08-27drm/nouveau: drop drm_global_mutex before sleeping in submission pathBen Skeggs1-0/+2
If we keep hold of the mutex here, the process which currently holds the buffer object will never be able to release it, causing a deadlock. Signed-off-by: Ben Skeggs <[email protected]>
2010-08-27drm: export drm_global_mutex for drivers to useBen Skeggs1-0/+1
Nouveau needs to be able to drop the mutex before sleeping to prevent a deadlock from occuring. Signed-off-by: Ben Skeggs <[email protected]>
2010-08-26qlge: reset the chip before freeing the buffersBreno Leitao1-2/+2
Qlge is freeing the buffers before stopping the card DMA, and this can cause some severe error, as a EEH event on PPC. This patch just stop the card and then free the resources. Signed-off-by: Breno Leitao <[email protected]> Signed-off-by: Ron Mercer <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-08-26amd64_edac: Do not report error overflow as a separate errorBorislav Petkov2-13/+2
When the Overflow MCi_STATUS bit is set, EDAC reports the lost error with a "no information available" message which often puzzles users parsing the dmesg. This doesn't make much sense since this error has been lost anyway so no need for reporting it separately. Thus, report the overflow bit setting in the MCE dump instead. While at it, remove reporting of MiscV and ErrorEnable (en) which are superfluous. Now it looks like this: [ 1501.650024] MC4_STATUS: Corrected error, other errors lost: yes, CPU context corrupt: no, CECC Error [ 1501.666887] Northbridge Error, node 2 Signed-off-by: Borislav Petkov <[email protected]>
2010-08-26drm/nv20: Don't use pushbuf calls on the original nv20.Francisco Jerez1-2/+2
The "return" command is buggy on the original nv20, it jumps back to the caller address as expected, but it doesn't clear the subroutine active bit making the subsequent pushbuf calls fail with a "stack" overflow. Signed-off-by: Francisco Jerez <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2010-08-26drm/nouveau: Fix TMDS on some DCB1.5 boards.Francisco Jerez1-14/+6
The TMDS output of an nv11 was being detected as LVDS, because it uses DCB type 2 for TMDS instead of type 4. Reported-by: Bertrand VIEILLE <[email protected]> Signed-off-by: Francisco Jerez <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2010-08-26drm/nouveau: Fix backlight control on PPC machines with an internal TMDS panel.Francisco Jerez2-21/+27
This commit fixes fdo bug 29685. Reported-by: Vlado Plaga <[email protected]> Signed-off-by: Francisco Jerez <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2010-08-26drm/nv30: Apply modesetting to the correct slave encoderPatrice Mandin1-3/+5
Signed-off-by: Patrice Mandin <[email protected]> Reviewed-by: Francisco Jerez <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2010-08-26drm/nouveau: Use a helper function to match PCI device/subsystem IDs.Francisco Jerez3-20/+16
Signed-off-by: Francisco Jerez <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2010-08-26drm/nv50: add dcb type 14 to enum to prevent compiler complaintBen Skeggs2-1/+2
Signed-off-by: Ben Skeggs <[email protected]>
2010-08-25libata-sff: remove harmful BUG_ON from ata_bmdma_qc_issueMark Lord1-4/+0
Remove harmful BUG_ON() from ata_bmdma_qc_issue(), as it casts too wide of a net and breaks sata_mv. It also crashes the kernel while doing the BUG_ON(). There's already a WARN_ON_ONCE() further down to catch the case of POLLING for a BMDMA operation. Signed-off-by: Mark Lord <[email protected]> Signed-off-by: Jeff Garzik <[email protected]> Cc: [email protected]
2010-08-25sata_mv: fix broken DSM/TRIM support (v2)Mark Lord1-7/+37
Fix DSM/TRIM commands in sata_mv (v2). These need to be issued using old-school "BM DMA", rather than via the EDMA host queue. Since the chips don't have proper BM DMA status, we need to be more careful with setting the ATA_DMA_INTR bit, since DSM/TRIM often has a long delay between "DMA complete" and "command complete". GEN_I chips don't have BM DMA, so no TRIM for them. Signed-off-by: Mark Lord <[email protected]> Signed-off-by: Jeff Garzik <[email protected]> Cc: [email protected]
2010-08-25libata: be less of a drama queen on empty data commandsTejun Heo1-4/+7
ata_qc_issue() BUG_ON()s on data commands w/o data, which may be submitted via SG_IO. Be less of a drama queen and just trigger WARN_ON_ONCE() and fail the command with AC_ERR_SYSTEM. Signed-off-by: Tejun Heo <[email protected]> Reported-by: Stefan Hübner <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2010-08-25[libata] sata_dwc_460ex: signdness bugDan Carpenter1-1/+1
dma_dwc_xfer_setup() returns an int and "dma_chan" needs to be signed for the error handling to work. Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2010-08-25ahci: add HFLAG_YES_FBS and apply it to 88SE9128Tejun Heo3-2/+26
88SE9128 can do FBS and sets it in HOST_CAP but forgets to set FBSCP in PORT_CMD. Implement AHCI_HFLAG_YES_FBS and apply it to 88SE9128. Signed-off-by: Tejun Heo <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2010-08-25libata: remove no longer needed pata_winbond driverBartlomiej Zolnierkiewicz4-285/+14
Winbond W83759A controller is fully supported by pata_legacy driver so remove no longer needed pata_winbond driver. Leave PATA_WINBOND_VLB config option for compatibility reasons and teach pata_legacy to preserve the old behavior of pata_winbond driver. Signed-off-by: Bartlomiej Zolnierkiewicz <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2010-08-25pata_cmd64x: revert commit d62f5576Tejun Heo1-6/+0
Commit d62f5576 (pata_cmd64x: fix handling of address setup timings) incorrectly called ata_timing_compute() on UDMA mode on 0 @UT leading to devide by zero fault. Revert it until better fix is available. This is reported in bko#16607 by Milan Kocian who also root caused it. https://bugzilla.kernel.org/show_bug.cgi?id=16607 Signed-off-by: Tejun Heo <[email protected]> Reported-and-root-caused-by: Milan Kocian <[email protected]> Cc: Bartlomiej Zolnierkiewicz <[email protected]> Cc: [email protected] Signed-off-by: Jeff Garzik <[email protected]>
2010-08-25PCI hotplug: Fix build with CONFIG_ACPI unsetRafael J. Wysocki1-0/+4
One of the recent changes caused complilation of drivers/pci/hotplug/pciehp_core.c to fail. Fix this issue. Signed-off-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>
2010-08-25cciss: fix reporting of max queue depth since initStephen M. Cameron1-0/+2
The ioctl path and the scsi tape path were not accounting for their additions to the queue depth. Signed-off-by: Stephen M. Cameron <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
2010-08-25Merge branch 'hwmon-for-linus' of ↵Linus Torvalds3-23/+51
git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: MAINTAINERS: hwmon/coretemp: Change maintainers hwmon: (k8temp) Differentiate between AM2 and ASB1 hwmon: (ads7871) Fix ads7871_probe error paths hwmon: (coretemp) Fix harmless build warning
2010-08-25Merge branch 'upstream/core' of ↵Linus Torvalds1-5/+16
git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen * 'upstream/core' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen: xen: handle events as edge-triggered xen: use percpu interrupts for IPIs and VIRQs
2010-08-25Input: pxa27x_keypad - remove input_free_device() in pxa27x_keypad_remove()Axel Lin1-2/+0
No need to call input_free_device() after input_unregister_device(). Signed-off-by: Axel Lin <[email protected]> Signed-off-by: Dmitry Torokhov <[email protected]>
2010-08-25Input: mousedev - fix regression of inverting axesChristoph Fritz1-4/+4
Introduced by 987a6c0298260b7aa40702b349282554d6180e4b a swap in max/min calculation gets fixed by this patch. Reported-by: Bruno Prémont <[email protected]> Signed-off-by: Christoph Fritz <[email protected]> Signed-off-by: Dmitry Torokhov <[email protected]>
2010-08-25hwmon: (k8temp) Differentiate between AM2 and ASB1Andreas Herrmann1-3/+32
Commit 8bf0223ed515be24de0c671eedaff49e78bebc9c (hwmon, k8temp: Fix temperature reporting for ASB1 processor revisions) fixed temperature reporting for ASB1 CPUs. But those CPU models (model 0x6b, 0x6f, 0x7f) were packaged both as AM2 (desktop) and ASB1 (mobile). Thus the commit leads to wrong temperature reporting for AM2 CPU parts. The solution is to determine the package type for models 0x6b, 0x6f, 0x7f. This is done using BrandId from CPUID Fn8000_0001_EBX[15:0]. See "Constructing the processor Name String" in "Revision Guide for AMD NPT Family 0Fh Processors" (Rev. 3.46). Cc: Rudolf Marek <[email protected]> Cc: [email protected] [.32.x, .33.x, .34.x, .35.x] Reported-by: Vladislav Guberinic <[email protected]> Signed-off-by: Andreas Herrmann <[email protected]> Signed-off-by: Jean Delvare <[email protected]>
2010-08-25hwmon: (ads7871) Fix ads7871_probe error pathsAxel Lin1-19/+19
1. remove 'status' variable 2. remove unneeded initialization of 'err' variable 3. return missing error code if sysfs_create_group fail. 4. fix the init sequence as: - check hardware existence - kzalloc for ads7871_data - sysfs_create_group - hwmon_device_register Signed-off-by: Axel Lin <[email protected]> Cc: [email protected] Signed-off-by: Jean Delvare <[email protected]>
2010-08-25hwmon: (coretemp) Fix harmless build warningJean Delvare1-1/+0
Fix the following build warning: CC [M] drivers/hwmon/coretemp.o drivers/hwmon/coretemp.c: In function "coretemp_init": drivers/hwmon/coretemp.c:521: warning: unused variable "n" drivers/hwmon/coretemp.c:521: warning: unused variable "p" Introduced by commit 851b29cb3b196cb66452ec964ab5f66c9c9cd1ed. When you drop code, you also have to drop the variables this code was using. Signed-off-by: Jean Delvare <[email protected]> Cc: Chen Gong <[email protected]> Cc: Rudolf Marek <[email protected]> Cc: Huaxu Wan <[email protected]>
2010-08-25oprofile: fix crash when accessing freed task structsRobert Richter2-15/+14
This patch fixes a crash during shutdown reported below. The crash is caused by accessing already freed task structs. The fix changes the order for registering and unregistering notifier callbacks. All notifiers must be initialized before buffers start working. To stop buffer synchronization we cancel all workqueues, unregister the notifier callback and then flush all buffers. After all of this we finally can free all tasks listed. This should avoid accessing freed tasks. On 22.07.10 01:14:40, Benjamin Herrenschmidt wrote: > So the initial observation is a spinlock bad magic followed by a crash > in the spinlock debug code: > > [ 1541.586531] BUG: spinlock bad magic on CPU#5, events/5/136 > [ 1541.597564] Unable to handle kernel paging request for data at address 0x6b6b6b6b6b6b6d03 > > Backtrace looks like: > > spin_bug+0x74/0xd4 > ._raw_spin_lock+0x48/0x184 > ._spin_lock+0x10/0x24 > .get_task_mm+0x28/0x8c > .sync_buffer+0x1b4/0x598 > .wq_sync_buffer+0xa0/0xdc > .worker_thread+0x1d8/0x2a8 > .kthread+0xa8/0xb4 > .kernel_thread+0x54/0x70 > > So we are accessing a freed task struct in the work queue when > processing the samples. Reported-by: Benjamin Herrenschmidt <[email protected]> Cc: [email protected] Signed-off-by: Robert Richter <[email protected]>
2010-08-24pxa168_eth: silence gcc warningsDan Carpenter1-3/+3
Casting "pep->tx_desc_dma" to to a struct tx_desc pointer makes gcc complain: drivers/net/pxa168_eth.c:657: warning: cast to pointer from integer of different size Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-08-24pxa168_eth: update call to phy_mii_ioctl()Dan Carpenter1-1/+1
The phy_mii_ioctl() function changed recently. It now takes a struct ifreq pointer directly. Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-08-24pxa168_eth: fix error handling in propeDan Carpenter1-22/+22
A couple issues here: * Some resources weren't released. * If alloc_etherdev() failed it would have caused a NULL dereference because "pep" would be null when we checked "if (pep->clk)". * Also it's better to propagate the error codes from mdiobus_register() instead of just returning -ENOMEM. Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-08-24pxa168_eth: remove unneeded null checkDan Carpenter1-4/+2
"pep->pd" isn't checked consistently in this function. For example it's dereferenced unconditionally on the next line after the end of the if condition. This function is only called from pxa168_eth_probe() and pep->pd is always non-NULL so I removed the check. Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-08-24phylib: Fix race between returning phydev and calling adjust_linkAnton Vorontsov1-0/+2
It is possible that phylib will call adjust_link before returning from {,of_}phy_connect(), which may cause the following [very rare, though] oops upon reopening the device: Unable to handle kernel paging request for data at address 0x0000024c Oops: Kernel access of bad area, sig: 11 [#1] PREEMPT SMP NR_CPUS=2 LTT NESTING LEVEL : 0 P1021 RDB Modules linked in: NIP: c0345dac LR: c0345dac CTR: c0345d84 TASK = dffab6b0[30] 'events/0' THREAD: c0d24000 CPU: 0 [...] NIP [c0345dac] adjust_link+0x28/0x19c LR [c0345dac] adjust_link+0x28/0x19c Call Trace: [c0d25f00] [000045e1] 0x45e1 (unreliable) [c0d25f30] [c036c158] phy_state_machine+0x3ac/0x554 [...] Here is why. Drivers store phydev in their private structures, e.g. gianfar driver: static int init_phy(struct net_device *dev) { ... priv->phydev = of_phy_connect(...); ... } So that adjust_link could retrieve it back: static void adjust_link(struct net_device *dev) { ... struct phy_device *phydev = priv->phydev; ... } If the device has been opened before, then phydev->state is set to PHY_HALTED (or undefined if the driver didn't call phy_stop()). Now, phy_connect starts the PHY state machine before returning phydev to the driver: phy_start_machine(phydev, NULL); if (phydev->irq > 0) phy_start_interrupts(phydev); return phydev; The time between 'phy_start_machine()' and 'return phydev' is undefined. The start machine routine delays execution for 1 second, which is enough for most cases. But under heavy load, or if you're unlucky, it is quite possible that PHY state machine will execute before phy_connect() returns, and so adjust_link callback will try to dereference phydev, which is not yet ready. To fix the issue, simply initialize the PHY's state to PHY_READY during phy_attach(). This will ensure that phylib won't call adjust_link before phy_start(). Signed-off-by: Anton Vorontsov <[email protected]> Signed-off-by: David S. Miller <[email protected]>
2010-08-24PCI: PCIe: Remove the port driver module exit routineKenji Kaneshige1-7/+0
The PCIe port driver's module exit routine is never used, so drop it. Signed-off-by: Kenji Kaneshige <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]> Reviewed-by: Hidetoshi Seto <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>
2010-08-24PCI: PCIe: Move PCIe PME code to the pcie directoryRafael J. Wysocki3-8/+3
The PCIe PME code only consists of one file, so it doesn't need to occupy its own directory. Move it to drivers/pci/pcie/pme.c and remove the contents of drivers/pci/pcie/pme . Signed-off-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>
2010-08-24PCI: PCIe: Disable PCIe port services during port initializationRafael J. Wysocki1-3/+26
In principle PCIe port services may be enabled by the BIOS, so it's better to disable them during port initialization to avoid spurious events from being generated. Signed-off-by: Rafael J. Wysocki <[email protected]> Reviewed-by: Hidetoshi Seto <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>
2010-08-24PCI: PCIe: Ask BIOS for control of all native services at onceRafael J. Wysocki16-230/+149
After commit 852972acff8f10f3a15679be2059bb94916cba5d (ACPI: Disable ASPM if the platform won't provide _OSC control for PCIe) control of the PCIe Capability Structure is unconditionally requested by acpi_pci_root_add(), which in principle may cause problems to happen in two ways. First, the BIOS may refuse to give control of the PCIe Capability Structure if it is not asked for any of the _OSC features depending on it at the same time. Second, the BIOS may assume that control of the _OSC features depending on the PCIe Capability Structure will be requested in the future and may behave incorrectly if that doesn't happen. For this reason, control of the PCIe Capability Structure should always be requested along with control of any other _OSC features that may depend on it (ie. PCIe native PME, PCIe native hot-plug, PCIe AER). Rework the PCIe port driver so that (1) it checks which native PCIe port services can be enabled, according to the BIOS, and (2) it requests control of all these services simultaneously. In particular, this causes pcie_portdrv_probe() to fail if the BIOS refuses to grant control of the PCIe Capability Structure, which means that no native PCIe port services can be enabled for the PCIe Root Complex the given port belongs to. If that happens, ASPM is disabled to avoid problems with mishandling it by the part of the PCIe hierarchy for which control of the PCIe Capability Structure has not been received. Make it possible to override this behavior using 'pcie_ports=native' (use the PCIe native services regardless of the BIOS response to the control request), or 'pcie_ports=compat' (do not use the PCIe native services at all). Accordingly, rework the existing PCIe port service drivers so that they don't request control of the services directly. Signed-off-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>
2010-08-24ACPI/PCI: Negotiate _OSC control bits before requesting them Rafael J. Wysocki4-28/+47
It is possible that the BIOS will not grant control of all _OSC features requested via acpi_pci_osc_control_set(), so it is recommended to negotiate the final set of _OSC features with the query flag set before calling _OSC to request control of these features. To implement it, rework acpi_pci_osc_control_set() so that the caller can specify the mask of _OSC control bits to negotiate and the mask of _OSC control bits that are absolutely necessary to it. Then, acpi_pci_osc_control_set() will run _OSC queries in a loop until the mask of _OSC control bits returned by the BIOS is equal to the mask passed to it. Also, before running the _OSC request acpi_pci_osc_control_set() will check if the caller's required control bits are present in the final mask. Using this mechanism we will be able to avoid situations in which the BIOS doesn't grant control of certain _OSC features, because they depend on some other _OSC features that have not been requested. Signed-off-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>
2010-08-24ACPI/PCI: Do not preserve _OSC control bits returned by a query Rafael J. Wysocki1-13/+7
There is the assumption in acpi_pci_osc_control_set() that it is always sufficient to compare the mask of _OSC control bits to be requested with the result of an _OSC query where all of the known control bits have been checked. However, in general, that need not be the case. For example, if an _OSC feature A depends on an _OSC feature B and control of A, B plus another _OSC feature C is requested simultaneously, the BIOS may return A, B, C, while it would only return C if A and C were requested without B. That may result in passing a wrong mask of _OSC control bits to an _OSC control request, in which case the BIOS may only grant control of a subset of the requested features. Moreover, acpi_pci_run_osc() will return error code if that happens and the caller of acpi_pci_osc_control_set() will not know that it's been granted control of some _OSC features. Consequently, the system will generally not work as expected. Apart from this acpi_pci_osc_control_set() always uses the mask of _OSC control bits returned by the very first invocation of acpi_pci_query_osc(), but that is done with the second argument equal to OSC_PCI_SEGMENT_GROUPS_SUPPORT which generally happens to affect the returned _OSC control bits. For these reasons, make acpi_pci_osc_control_set() always check if control of the requested _OSC features will be granted before making the final control request. As a result, the osc_control_qry and osc_queried members of struct acpi_pci_root are not necessary any more, so drop them and remove the remaining code referring to them. Signed-off-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>
2010-08-24ACPI/PCI: Make acpi_pci_query_osc() return control bitsRafael J. Wysocki1-11/+24
Make acpi_pci_query_osc() use an additional pointer argument to return the mask of control bits obtained from the BIOS to the caller. Signed-off-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>
2010-08-24ACPI/PCI: Reorder checks in acpi_pci_osc_control_set()Rafael J. Wysocki1-4/+4
Make acpi_pci_osc_control_set() attempt to find the handle of the _OSC object under the given PCI root bridge object after verifying that its second argument is correct and that there is a struct acpi_pci_root object for the given root bridge handle, which is more logical than the old code. Signed-off-by: Rafael J. Wysocki <[email protected]> Reviewed-by: Hidetoshi Seto <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>
2010-08-24PCI: PCIe: Introduce commad line switch for disabling port servicesRafael J. Wysocki3-0/+20
Introduce kernel command line switch pcie_ports= allowing one to disable all of the native PCIe port services, so that PCIe ports are treated like PCI-to-PCI bridges. Signed-off-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>
2010-08-24PCI: PCIe AER: Introduce pci_aer_available()Rafael J. Wysocki2-3/+8
Introduce a function allowing the caller to check whether to try to enable PCIe AER. Signed-off-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>