aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2012-09-17Merge branch 'for-pci-res-alloc'HEADmasterYinghai Lu26-480/+1265
2012-09-17PCI, x86: Add pci=pref_bar to realloc pref barsYinghai Lu3-7/+17
So could reallocate 64bit pref mem above 4g. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Treat ROM resource as optional during assigning.Yinghai Lu1-14/+7
So will try to allocate them together with requested ones, if can not assign them, could go with requested one only, and just skip ROM resource. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Sort unassigned resources with correct alignmentYinghai Lu1-7/+26
For SIZEALIGN type resource, we need to add back add_size in optional resource list during __dev_sort_resources(), otherwise those optional resources will get skipped. SRIOV BAR is specical one, it will always re-read size for BAR. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use is_pci_iov_resource_idx()Yinghai Lu1-4/+3
So we can remove one ifdef in setup-bus.c. and will share the code in that ifdef block later. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17resource: Only return range with needed alignYinghai Lu1-1/+13
Compare align between put range in head and tail, pick small one to leave big one for future user. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Don't allocate small resource in big empty space.Yinghai Lu4-18/+54
Use allocate_resource_fit to allocate one fit resource only Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17resource: Add allocate_resource_fit()Yinghai Lu2-8/+27
Use updated find_resource to return matched resource instead using head of bigger range. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17resource: Make find_resource could return just fit resourceYinghai Lu1-2/+56
Find all suitable empty slots and pick one just fit, so we could save the big slot for needed ones later. -v2: updated after __allocate_resource change, and add field in constraint instead of passing it directly. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Allocate resource with big size at first when alignment is the sameYinghai Lu1-2/+5
When sorting them, put the one with big size before small size. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17intel-gtt: Read 64bit for gmar_bus_addrYinghai Lu1-4/+10
That bar could be 64bit pref mem. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: David Airlie <airlied@linux.ie> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-09-17PCI: Add pci=alloc_high supportYinghai Lu4-0/+23
add pci=alloc_high to enable/disable alloc_high for resource allcation. default to alloc high to disable. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Try to allocate mem64 above 4G at firstYinghai Lu4-13/+36
Will fall back to below 4g if it can not find any above 4g. x86 32bit without X86_PAE support will have bottom set to 0, because resource_size_t is 32bit. Also for 32bit with resource_size_t 64bit kernel on machine with pae support we are safe because iomem_resource is limited to 32bit according to x86_phys_bits. -v2: update bottom assigning to make it clear for non-pae support machine. -v3: Bjorn's change: use MAX_REOURCE instead of -1 use start/end instead of bottom/max for all arch instead of just x86_64 -v4: updated after PCI_MAX_RESOURCE_32 change. -v5: restore io handling to use PCI_MAX_RESOURCE_32 as limit. -v6: checking pcibios_resource_to_bus return for every bus res, to decide it if we need to try high at first. It supports all arches instead of just x86_64. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Add pcibios_bus_addr_to_res()Yinghai Lu2-0/+16
it takes addr and return converted address only. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: pcibus address to resource converting take bus directlyYinghai Lu2-13/+24
For allocating resource under bus path, we do have dev pass along, and we could just use bus instead. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Don't shrink too much for hotplug bridgeYinghai Lu1-0/+6
Otherwise may have problem later if we plug pcie cards with bridges. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: More strict checking of valid range for bridgeYinghai Lu1-1/+44
Found one sick system with two sibling bridge have overlaping range from BIOS. 00:02.1 bus range is 0x30-0x30 00:02.2 bus range is 0x30-0x3f, and it have two children under it. RHEL 6.2 kernel, will just 00:02.1 have child bus 0x30, and bridge 00:02.2 will not have. before this patch, this patchset will have 00:02.1 to have bus 0x30, and 00:02.2 will have reallocate range bus 01. but 00:02.1 will have scaned at first, so later it will have two fake devices. To fix the problem, We need to check with unscaned sibling bridge about range overlapping. If there is overlapping found, will mark both sides to be broken. So we could prevent one side take too big range. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, pciehp: Remove not needed bus number range checkingYinghai Lu1-11/+1
Found hotplug adding one EM with bridge fail, bios only leave one bus range for slot. [ 1169.621444] pciehp: No bus number available for hot-added bridge 0000:55:00.0 [ 1169.633277] pcieport 0000:40:03.0: PCI bridge to [bus 55-55] With busn_res tracking and allocating, we don't need that checking anymore. Parent bridges' bus number will be extended safely. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17pcmcia: Remove workaround for fixing pci parent bus subordinateYinghai Lu1-75/+0
Now pci busn allocation code is there, and it will preallocate bus number and it will make sure parent buses subordinate is right. So remove workaround here. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Tested-by: Dominik Brodowski <linux@dominikbrodowski.net> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Mauro Carvalho Chehab <mchehab@redhat.com> Cc: linux-pcmcia@lists.infradead.org
2012-09-17PCI: Seperate child bus scanning to two passes overallYinghai Lu1-16/+34
In extreme case: Two bridges are properly setup. bridge A bridge AA bridge AB bridge B bridge BA bridge BB but AA, AB are not setup properly. bridge A has small range, and bridge AB could need more, when do the first pass0 for bridge A, it will do pass0 and pass1 for AA and AB, during that process, it will extend range of A for AB blindly. because bridge B is not registered yet. that could overlap range that is used by bridge B. Right way should be: do pass0 for all good bridges at first. So we could do pass0 for bridge B before pass1 for bridge AB. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Kill pci_fixup_parent_subordinate_busnr()Yinghai Lu1-32/+0
Now we can safely extend parent top and shrink them by probing them. Don't need that anymore. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Strict checking of valid range for bridgeYinghai Lu1-0/+27
Children bridges busn range should be allocated from parent bus range. So we could avoid overlapping between sibling bridges on same bus. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Allocate bus range instead of use max blindlyYinghai Lu1-45/+55
Every bus have extra busn_res, and linked them together under root bus busn_res When need to find usable bus number range, try probe it. To avoid falling to small hole in the middle, we try from 8 spare bus. If can not find 8 or more in the middle, will try to append 8 on top later. then if can not append, will try to find 7 from the middle, then will try to append 7 on top. then if can not append, will try to find 6 from the middle... For cardbus will only find 4 spare. If extend from top, at last will shrink back to really needed range... -v4: fix checking with pci rescan. Found by Bjorn. -v5: Use update bridge probe busn_res function and replace_resource Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Add pci_bus_replace_busn_res()Yinghai Lu1-0/+15
It will use replace_resource to put bus's busn_res in the resource tree. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Probe safe range that we can use for unassigned bridge.Yinghai Lu1-0/+33
Try to allocate from parent bus busn_res. If we can not find any big enough, will try to extend parent bus top. even the extending is through allocating, after allocating will pad the range to parent buses top. When extending happens, We will record the parent_res, so could use it as stopper for really extend/shrink top later. -v4: Use generic probe_resource() -v5: Use updated probe_resource() that will not decrease needed_size Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Add pci_bus_extend/shrink_top()Yinghai Lu1-0/+28
Extend or shrink bus and parent buses top (subordinate) Extended range is verified safe range, and stop at recorded parent_res. -v2: Remove busn_res change, it is updated in other function. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17resources: Replace registered resource in tree.Yinghai Lu2-0/+26
We could have one resource inserted in tree at first during probing. Later we need to put real resource into the tree. So try to hold the lock to swap them. -v2: make it more generic to handle old one with children or no parent. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org>
2012-09-17resources: Add probe_resource()Yinghai Lu2-0/+108
It is changed from busn_res only version, because Bjorn found that version was not holding resource_lock. Even it may be ok for busn_res not holding resource_lock. It would be better to have it to be generic and use lock and we may use it for other resources. probe_resource() will try to find specified size or more in parent bus. If can not find current parent resource, and it will try to expand parents top. If still can not find that specified on top, it will try to reduce target size until find one. It will return 0, if it find any resource that could be used. Returned resource is registered in the tree. So caller may need to use replace_resource to put real resource in tree. -v3: remove two parameters that is for debug purpose. -v4: fix stop_flags checking. -v5: adjust stop_flags checking position to avoid not needed calling into allocate_resource(). -v6: use updated __allocate_resource. -v7: Linus said: "resource_extend_parents()" thing is too dangerous as it is. It can corrupt the resource list by making the resource end overlap with the next resource (for extension) or not cover all the child resources (for shrinking). Try to fold in resource_extend_parents_top, and have updated one resource_shrink_parent_top() with adjust_resource that will checking parent and children covering. -v8: Linus said: allocation/return is not right, and -1 step tricks make it not work as generic resource probe. So try to remove the needed_size tricks, and also use __adjust_resource for probing instead. -v9: remove two lines that is supposed to be removed after converting to use __adjust_resource -v10: split out two __adjust_resource and shrink_parent_res_top to another two patches. Also remove the local limit condition. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org>
2012-09-17resources: Add resource_shrink_parents_top()Yinghai Lu2-0/+43
We use it to shrink the resource top of parents that could be expanded before. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org>
2012-09-17resources: Separate __adjust_resource()Yinghai Lu1-4/+13
Will use it when lock get hold by caller. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org>
2012-09-17resources: Split out __allocate_resource()Yinghai Lu1-8/+33
It will not hold lock, so we could use it in other functions that hold the resource lock already. -v2: according to Linus, using "bool lock" as parameter aka "conditionally take lock" is *wrong*. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: Andrew Morton <akpm@linux-foundation.org>
2012-09-17IOMMU: Add intel iommu irq-remapping and dmar hotplug supportfor-iommuYinghai Lu1-0/+220
Will use acpi_pci_driver to parse and init them between pci root bus scanning and start. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17IOMMU: Add dmar_parse_one_drhd()Yinghai Lu2-19/+79
To parse new hot-added iommu dmar entry table Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17IOMMU: Add intel_enable_irq_remapping_one()Yinghai Lu1-7/+129
Will need that for hot-added iommu interrupt remapping suppor. Signed-off-by: Yinghai <yinghai@kernel.org>
2012-09-17IOMMU: Add init_dmar_one()Yinghai Lu2-12/+115
Will need that for hot added intel iommu Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17IOMMU: Separate free_dmar_iommu from free_iommuYinghai Lu2-2/+1
We will need separate two calling later for iommu_remove. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17ACPI: Add acpi_run_dsm()Yinghai Lu2-0/+87
Will need to use that get dmar entries for hotplug Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17IOMMU: iommu_unique_seq_id()Yinghai Lu1-2/+16
So for hot-remove/hot-add will reuse seq_id. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17IOMMU: Don't clean handler data before free_irq()Yinghai Lu1-1/+0
need that in __free_irq. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17IOMMU: Fix tboot force iommu logicYinghai Lu1-3/+3
Should check dmar_disabled just after tboot_force_iommu. Otherwise when tboot is not used, and intel_iommu=off, and nointrmap still get dmar_table_init() called. that will cause some get_device calling, and it will have some device refcount leaking. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: David Woodhouse <dwmw2@infradead.org> Cc: iommu@lists.linux-foundation.org
2012-09-17IOMMU: Update dmar units devices list during hotplugYinghai Lu4-12/+206
When do pci remove/rescan on system that have more iommus, got [ 894.089745] Set context mapping for c4:00.0 [ 894.110890] mpt2sas3: Allocated physical memory: size(4293 kB) [ 894.112556] mpt2sas3: Current Controller Queue Depth(1883), Max Controller Queue Depth(2144) [ 894.127278] mpt2sas3: Scatter Gather Elements per IO(128) [ 894.361295] DRHD: handling fault status reg 2 [ 894.364053] DMAR:[DMA Read] Request device [c4:00.0] fault addr fffbe000 [ 894.364056] DMAR:[fault reason 02] Present bit in context entry is cl It turns out when remove/rescan, pci dev will be freed and will get another new dev. But drhd units still keep old one... so dmar_find_matched_drhd_unit will return wrong drhd and iommu for the device that is not on first iommu. So need to update devices in drhd_units during pci remove/rescan. Could save domain/bus/device/function aside in the list and according that info restore new dev to drhd_units later. Then dmar_find_matched_drdh_unit and device_to_iommu could return right drhd and iommu. Add remove_dev_from_drhd/restore_dev_to_drhd functions to do the real work. call them in device ADD_DEVICE and UNBOUND_DRIVER Need to do the samething to atsr. (expose dmar_atsr_units and add atsru->segment) After patch, will have right iommu for the new dev and will not get DMAR error anymore. -v2: add pci_dev_put/pci_dev_get to make refcount consistent. -v3: fix one left over CONFIG_DMAR -v4: pass pci_dev *dev in save_dev_dmaru()/get_dev_dmaru() according to Bjorn. -v5: fix case only have intr-remap enabled. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Vinod Koul <vinod.koul@intel.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: iommu@lists.linux-foundation.org
2012-09-17x86, ioapic: Find usable ioapic id for 64bit.Yinghai Lu1-7/+34
Checking the id in register, if that is duplicated, will pick one and update one one in register. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, x86: Use acpi_pci_driver instead of pci_driver for ioapic hotplugYinghai Lu1-56/+169
We need to have that setup before other really pci drivers. otherwise other pci driver can not enable ioapic routing. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Disable mem in the ioapic removing pathYinghai Lu1-0/+13
For physical hot plug should be ok, but for remove/rescan path will need us to disable that. otherwise rescan mmio resource for pci ioapic device will not be sized and allocated, aka skiped. For ioapic_probe:pci_enable_device will not enable the device correctly, and will bail out early. So we can just disable mmio for all removing case. that will hurt real hotplug path. Signed-off-by: <yinghai@kernel.org> Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
2012-09-17PCI: Make sure hotplug ioapic driver get loaded earlyYinghai Lu3-9/+5
at least before port service. Some system MADT will only have no hotplug entries even those devices are there before os is booting. So we need to enable those ioapic early before real device driver need to setup ioapic irq. Also need to make it depends on X86_IO_APIC. Signed-off-by: <yinghai@kernel.org> Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
2012-09-17x86, acpi, irq: Enable pci device type ioapic hotplugYinghai Lu1-4/+6
Fill the blank stub of acpi_register_ioapic/acpi_unregister_ioapic. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Len Brown <len.brown@intel.com> Cc: Pavel Machek <pavel@ucw.cz> Cc: "Rafael J. Wysocki" <rjw@sisk.pl> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: linux-pm@vger.kernel.org
2012-09-17x86: move declaration for mp_register_ioapic()Yinghai Lu1-1/+18
mptable could use that too... Reported-by: Fengguang Wu <wfg@linux.intel.com> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17x86, irq: Make ioapics loop code skip blank slotYinghai Lu1-6/+23
When multiple ioapics get added and removed, we could have blank slot in ioapics array. Add skip code in this case by check nr_registers. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17x86, irq: Add mp_unregister_ioapic could handle hotremove ioapicYinghai Lu2-0/+43
it will free ioapic related irq_desc and also clear allocated_irqs bits. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17x86, irq: Make mp_register_ioapic could handle hotadd ioapicYinghai Lu2-14/+46
it will reserve irq block in allocated_irqs bit maps and irq_base will be used to get right irq for ioapic/pin or gsi. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17x86, irq: more strict check for register ioapicYinghai Lu1-7/+23
1. check overlaping gsi range for hotplug ioapic case, BIOS may have some entries in MADT and also in pci bus with _GSB. 2. make bad_ioapics take idx instead of nr_ioapics. for hotadd ioapic could find spare slot in the middle later. 3. check if entries in right range. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17genirq: bail out early in free_desc()Yinghai Lu1-0/+3
So we can use irq_free_descs to clear allocated_irqs bits for preserved irqs. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17x86, irq: add ioapic_gsi_to_irqYinghai Lu3-18/+34
it will handle hot add ioapic that irq_base is not equal to gsi_base. Also remove irq_to_gsi that is causing confusing. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Len Brown <len.brown@intel.com> Cc: Pavel Machek <pavel@ucw.cz> Cc: "Rafael J. Wysocki" <rjw@sisk.pl> Cc: Henrik Kretzschmar <henne@nachtwindheim.de> Cc: Suresh Siddha <suresh.b.siddha@intel.com> Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
2012-09-17x86, irq: pre-reserve irq range that are used by ioapicYinghai Lu2-46/+88
realloc_irq_and_cfg_at already can handle pre-reserved case. those for non-hot add ioapic, but make them to share same code path that will be used by hot add ioapic. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Henrik Kretzschmar <henne@nachtwindheim.de> Cc: Suresh Siddha <suresh.b.siddha@intel.com> Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
2012-09-17x86, irq: Add realloc_irq_and_cfg_at()Yinghai Lu3-1/+63
Will use it to allocate irq that are pre-reserved. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17genirq: Split __irq_reserve_irqs from irq_alloc_descsYinghai Lu2-28/+28
also make irq_reserve_irqs to reuse __irq_reserve_irqs. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: David Daney <ddaney@caviumnetworks.com>
2012-09-17x86, irq: Convert irq_2_pin list to generic listYinghai Lu2-11/+13
So we can use generic list helper function. Also make free_irq_cfg() free irq_2_pin list. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Mike Frysinger <vapier@gentoo.org> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17x86, irq: kill create_irq()Yinghai Lu1-15/+0
create_irq() will return -1 when fail to allocate. create_irq_nr() will return 0 when fail to allocate. it only causes confusing. And now we don't have user for create_irq(). So remove create_irq() for x86. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17iommu, irq: alloc irq_desc for dmar_msi with local nodeYinghai Lu1-1/+1
Also fix the return value checking problem. create_irq() will return -1 when fail to allocate. create_irq_nr() will return 0 when fail to allocate. here only check !irq, so need to change it to create_irq_nr. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17ia64, irq: add dummy create_irq_nr()Yinghai Lu1-0/+10
create_irq() will return -1 when fail to allocate. create_irq_nr() will return 0 when fail to allocate. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: linux-ia64@vger.kernel.org
2012-09-17x86, irq: Make dmar_msi/hpet_msi irq_chip name consistentYinghai Lu1-2/+2
all others are using - instead _. Change those to use - too. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17x86, irq: Let msi/x have pci name in irq name shown in /proc/interruptYinghai Lu1-3/+14
update irq_print_chip() to append pci device name. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17x86, irq: Let msi-x to shown as MSI-X in /proc/interruptYinghai Lu1-1/+11
Use new added irq_print_chip() to append -X after MSI for msi-x. -v2: do not need to check if msi_desc is null in msi_irq_print_chip(). Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17x86, irq: more clear about msix printoutYinghai Lu1-1/+2
Print out exact MSI or MSI-X instead of MSI/MSI-X Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17x86, irq: Modify irq chip one time when irq remapping is enabledYinghai Lu3-7/+27
So we don't need change irq chip during every irq setup. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Suresh Siddha <suresh.b.siddha@intel.com>
2012-09-17Merge branch 'for-pci-root-bus-hotplug' into for-x86-irq-basefor-x86-irq-baseYinghai Lu118-1791/+1797
2012-09-17PCI: Use addon_fixed_resource with ati fixed resourceYinghai Lu1-3/+5
after they are put in add-on resources, they will be safely claimed later. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Make quirk_io_region to use addon_resource supportYinghai Lu1-85/+70
after they are put in add-on resources, they will be safely claimed later. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Make piix4 quirk to use addon_resource supportYinghai Lu1-16/+77
after they are put in add-on resources, they will be safely claimed later. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Make assign/update resource to support addon_resYinghai Lu1-6/+18
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Update pci_resource_bar() to support addon_resourceYinghai Lu1-0/+7
need to loop addon resource list to retrieve reg_addr in it. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Add helpers for add addon_resourceYinghai Lu2-0/+73
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Add addon_resource support for pci_devYinghai Lu2-2/+56
Will add addon_resources list in pci_dev, it will be used for resources other than standard, rom, sriov, bridges. Some could be same as std reg, but using different register. Some could have own way to read/write to them. Kernel using different way to hack those resources like abusing pci bridge resource spot on non bridge pci device. With this patch, will treat addon-resource like standard resource with special ops. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use for_each_res with xen pciYinghai Lu1-3/+1
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use for_each_res with mrsYinghai Lu1-3/+4
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use for_each_res pci bases readingYinghai Lu1-2/+4
Replace those open code, and make code more readable. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use for_each_res pci release releaseYinghai Lu1-3/+2
Replace those open code, and make code more readable. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use for_each_res pci bases pci_dev_driver()Yinghai Lu1-2/+4
Replace those open code, and make code more readable. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use for_each_res with noassign_barsYinghai Lu1-2/+1
Replace those open code, and make code more readable. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use for_each_res pci_assign_resourceYinghai Lu1-8/+6
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use for_each_res with pci bar reassign funcsYinghai Lu1-16/+12
Replace those open code, and make code more readable. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use for_each_pci_dev_resource pci_reassigndevYinghai Lu1-4/+2
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use for_each_pci_dev_resource pci_enable_devYinghai Lu1-7/+8
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, pciehp: Use for_each_pci_dev_resource helperYinghai Lu1-2/+3
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, acpiphp: Use for_each_pci_dev_resource helperYinghai Lu1-2/+2
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use for_each_res with IOV releated funcsYinghai Lu1-16/+15
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17x86, PCI: Use for_each_res with pci_allocate_dev_resourcesYinghai Lu1-35/+20
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17x86, PCI: Use for_each_res with pci_allocate_bridge_resourcesYinghai Lu1-2/+1
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Update pci_resource_start to use pci_dev_resource_n()Yinghai Lu1-3/+3
instead of use resource[bar], to prepare for addon resource usages. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Add is_pci_*_resource_idx()Yinghai Lu1-0/+23
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17pci: pci resource iteratorRam Pai2-0/+71
Currently pci_dev structure holds an array of 17 PCI resources; six base BARs, one ROM BAR, four BRIDGE BARs, six sriov BARs. This is wasteful. A bridge device just needs the 4 bridge resources. A non-bridge device just needs the six base resources and one ROM resource. The sriov resources are needed only if the device has SRIOV capability. The pci_dev structure needs to be re-organized to avoid unnecessary bloating. However too much code outside the pci-bus driver, assumes the internal details of the pci_dev structure, thus making it hard to re-organize the datastructure. As a first step this patch provides generic methods to access the resource structure of the pci_dev. Finally we can re-organize the resource structure in the pci_dev structure and correspondingly update the methods. -v2: Consolidated iterator interface as per Bjorn's suggestion. -v3: Add the idx back - Yinghai Lu -v7: Change to use bitmap for searching - Yinghai Lu Signed-off-by: Ram Pai <linuxram@us.ibm.com> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Add pci_dev_resource_idx()Yinghai Lu2-0/+10
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Add pci_dev_resource_n()Yinghai Lu2-0/+11
Prepare to use it with addon_resource and for_each_resource macro. -v2: Add EXPORT_SYMBOL to find building error found by Gary Hade Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17ACPI: Enable SCI_EMULATE to manually simulate physical hotplug testing.Ashok Raj3-0/+156
Emulate an ACPI SCI interrupt to emulate a hot-plug event. Useful for testing ACPI based hot-plug on systems that don't have the necessary firmware support. Enable CONFIG_ACPI_SCI_EMULATE on kernel compile. Now you will notice /sys/kernel/debug/acpi/sci_notify when new kernel is booted. echo "\_SB.PCIB 1" > /sys/kernel/debug/acpi/sci_notify to trigger a hot-add of root bus that is corresponding to PCIB. echo "\_SB.PCIB 3" > /sys/kernel/debug/acpi/sci_notify to trigger a hot-remove of root bus that is corresponding to PCIB. -v2: Update to current upstream, and remove not related stuff. -v3: According to Len's request, update it to use debugfs. - Yinghai Lu Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Len Brown <lenb@kernel.org> Cc: linux-acpi@vger.kernel.org ===================================================================
2012-09-17PCI, acpiphp: Don't ailout even no slots found yet.Yinghai Lu3-44/+2
Could have root bus hot add later and there may be slot there that need acpiphp. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17ACPI, PCI: Skip extra pci_enable_bridges for non hot-add rootYinghai Lu3-1/+4
Pre-installed will be handled later, need to skip the one only for hot-added roots. Otherwise will get anonying failing message about can not reserve, irq ... Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, x86: Move pci_enable_bridges() downfor-pci-root-bus-hotplug-part5Yinghai Lu3-2/+4
After we get hot-added ioapic registered. pci_enable_bridges will try to enable ioapic irq for pci bridge. So need to move it down. Or We can move out pcibios_enable_irq() out of pci_enable_device() and call pcibios_enable_irq in pci_bus_add_devices ? also will need to move ... pcibios_resource_survey_bus(root->bus); pci_assign_unassigned_bus_resources(root->bus); to the start add .... Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Set dev_node early for pci_devYinghai Lu1-0/+1
otherwise irq_desc for pci bridge with hot-added ioapic can not be on local node. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17ACPI, PCI: Protect global lists in drivers/acpi/pci_root.cJiang Liu1-30/+40
There are two global lists inf file drivers/acpi/pci_root.c. One is for registered acpi_pci_drivers, the other is for enumerated ACPI PCI root bridge objects. These two global lists may change dynamically when registering/deregistering acpi_pci_drivers or adding/removing ACPI PCI root bridge objects. So protect them by mutex lock. -v2: remove -rcu Signed-off-by: Jiang Liu <jiang.liu@huawei.com> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17ACPI, PCI: Notify acpi_pci_drivers when hot-plugging PCI root bridgesJiang Liu1-0/+11
When hot-plugging PCI root bridge, acpi_pci_drivers' add()/remove() methods should be invoked to notify registered drivers. -v2: Move add calling to acpi_pci_root_start - Yinghai -v3: use acpi_pci_root pointer instead of handle - Yinghai -v3: Fold stop ioapic/iommu drivers after pci devices change in. - Yinghai Signed-off-by: Jiang Liu <jiang.liu@huawei.com> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17ACPI, PCI: Use normal list for struct acpi_pci_driverJiang Liu2-14/+4
Use normal list for struct acpi_pci_driver to simplify code. Signed-off-by: Jiang Liu <jiang.liu@huawei.com> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, ACPI: Make kacpi_hotplug_wq staticfor-pci-root-bus-hotplug-part4Yinghai Lu2-4/+1
No external user anymore. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Len Brown <lenb@kernel.org> Cc: linux-acpi@vger.kernel.org
2012-09-17PCI, pci_root_hp: Use acpi_hp_workYinghai Lu1-31/+3
Remove local copy: acpi_root_hp_work Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Len Brown <lenb@kernel.org> Cc: linux-acpi@vger.kernel.org
2012-09-17PCI, acpiphp: Use acpi_hp_workYinghai Lu1-36/+6
Remove local defined acpiphp_hp_work. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Len Brown <lenb@kernel.org> Cc: linux-acpi@vger.kernel.org
2012-09-17PCI, ACPI: Add alloc_acpi_hp_work()Yinghai Lu2-0/+30
Will use it with acpiphp and pci_root_hp events handling Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Len Brown <lenb@kernel.org> Cc: linux-acpi@vger.kernel.org
2012-09-17PCI, ACPI: Add pci_root_hp hot removal notification support.Yinghai Lu1-0/+67
Add missing hot_remove support for root device. How to use it? Find out root bus number to acpi root name mapping from dmesg or /sys echo "\_SB.PCIB 3" > /sys/kernel/debug/acpi/sci_notify to remove root bus -v2: separate stop and remove, so could use acpi_pci_bind_notify()... Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Len Brown <lenb@kernel.org> Cc: linux-acpi@vger.kernel.org
2012-09-17ACPI: acpi_bus_trim to support two steps.Yinghai Lu1-4/+1
current all acpi_bus_trim callers have rmdevice to 1. that means it will remove all acpi devices. When 0, is passed, it will keep one parent. For root bus hotremove support, we need to have pci device removed before acpi devices. So try to keep all acpi devices, and only stop drivers with them. This change should be safe because all current callers all have 1 passed. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Len Brown <lenb@kernel.org> Cc: linux-acpi@vger.kernel.org
2012-09-17PCI, ACPI: del root bus prtYinghai Lu1-0/+6
corresponding to add path. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, ACPI: Make acpi_pci_root_remove remove pci root bus tooYinghai Lu1-0/+16
It will call new added pci_stop_and_remove_bus() to stop/remove pci root bus. Also checking if that pci_root_bus get removed already in bus remove in /sys Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Len Brown <lenb@kernel.org> Cc: linux-acpi@vger.kernel.org
2012-09-17PCI, acpi: Update acpi_pci_driver add/remove interfaceYinghai Lu4-14/+18
To take acpi_pci_root pointer instead, so later caller will not need to check the apci_pci_root list to find it. Suggested-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, ACPI: Pass device instead of handle when config root bridgeYinghai Lu1-3/+3
So we can avoid one calling of acpi_pci_find_root(). Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, acpiphp: Separate out hot-add support of pci host bridgeYinghai Lu3-44/+254
It causes confusion. We may only need acpi hp for pci host bridge. Split host bridge hot-add support to pci_root_hp, and keep acpiphp simple. Also remove not used res_lock in the struct. -v2: put back pci_root_hp change in one patch -v3: add pcibios_resource_survey_bus() calling -v4: remove not needed code with remove_bridge -v5: put back support for acpiphp support for slots just on root bus. -v6: change some functions to *_p2p_* to make it more clean. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Add pci_stop_and_remove_root_bus()Yinghai Lu2-0/+42
It supports both pci root bus and pci bus under pci bridge. -v2: clear pci_bridge's subordinate. -v3: only handle root bus. and also put Jiang's get/put pair in -v4: fold pci_stop/remove_bus_devices in... reducing confusing. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Fix a device reference count leakage issue in pci_dev_present()Jiang Liu1-5/+5
Function pci_get_dev_by_id() will hold a reference count on the pci device returned, so pci_dev_present() should release the corresponding reference count to avoid memory leakage. Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
2012-09-17PCI, sysfs: Clean up rescan/remove with scheule_callbackfor-pci-root-bus-hotplug-part3Yinghai Lu1-11/+14
Change to use three return according to Bjorn. Suggested-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Rescan bus using callback method tooYinghai Lu1-9/+19
Just like removal. Because We could add new bus under the bridges... Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Use __pci_bus_size_bridges() directly in ↵Yinghai Lu1-7/+1
pci_assign_unassigned_bus_resources() Now __pci_bus_size_bridges() will not include self bridge. So we don't need to have our own version in pci_assign_unassigned_bus_resources anymore. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: pci_bus_size_bridges() should not size own bridgeYinghai Lu3-10/+18
During checking acpiphp code, found following sequence: pci_bus_size_bridges(bus); pci_bus_assign_resources(bus); pci_enable_bridges(bus); The problem is that when bus is not root bus, pci_bus_size_bridges would also size own pci bridge bus->self if that bridge resource is not inserted before. but later pci_bus_assign_resources will not allocate those size bridge res. So try make it less confusing, let it does not include self sizing. and add with_self parameter info __pci_bus_size_bridge() Fixes caller in pci hotplug componets. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Move back pci_rescan_bus() to probe.cYinghai Lu2-22/+21
We have pci_assign_unassigned_bus_resources() in as global function now. So could move back pci_rescan_bus to probe.c where it should be. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Separate out pci_assign_unassigned_bus_resources()Yinghai Lu2-14/+19
It is main portion of pci_rescan_bus(). Separate it out and need to use it for pci root bus hot add later. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Claim hw/fw allocated resources in hot add path.for-pci-root-bus-hotplug-part2Yinghai Lu3-0/+16
During testing remove/rescan root bus 00, found [ 338.142574] bus: 'pci': really_probe: probing driver ata_piix with device 0000:00:01.1 [ 338.146788] ata_piix 0000:00:01.1: device not available (can't reserve [io 0x01f0-0x01f7]) [ 338.150565] ata_piix: probe of 0000:00:01.1 failed with error -22 because that fixed resource is not claimed from arch/x86/pci/i386.c::pcibios_allocate_resources() that is init path. Try to claim those resources, so on the remove/rescan will still use old resources. It is some kind honoring HW/FW setting in the registers during hot add. esp root-bus hot add is through acpi, BIOS have chance to set some register for us. -v2: add rom resource claiming. -v3: separate __init removing to another patch, also put pci_probe checking with caller from rom resource allocating Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, x86: Remove __init for hw/fw allocated functionsYinghai Lu1-6/+6
will need it for hot add path. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, x86: Add pcibios_fw_addr_doneYinghai Lu1-1/+9
Use it to skip not needed function after pcibios_fw_addr_list_del is called. for pci root bus hot add, we will need to use pcibios_allocate_dev_resources(), and don't want to mess up with fw_addr. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17x86, PCI: Separate rom resource claim outYinghai Lu1-17/+35
So could use it with hot-added root bus. -v2: remove extra functions. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17x86, PCI: Let pcibios_allocate_bus_resources() take bus insteadYinghai Lu1-13/+25
Will need call the same code for one single root bus during hot add. So try to make it take bus instead of bus_list. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17x86, PCI: Separate pcibios_allocate_dev_resources()Yinghai Lu1-19/+23
Thus pcibios_allocate_resources() could more simple and clean Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17x86, PCI: Separate pcibios_allocate_bridge_resources()Yinghai Lu1-22/+24
Thus pcibios_allocate_bus_resources() could more simple and clean Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Split out stop_bus_device and remove_bus_dev again.for-pci-root-bus-hotplug-part1Yinghai Lu1-16/+35
So later could use them for pci root bus hotplug support. Also restore old behavoir: stop all at first then remove all. -v2: only split the functions. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI: Add root bus children dev's res to fail listYinghai Lu1-1/+1
We can stop according to try number now and do not need to use root_bus checking as stop sign anymore. Also in extreme case we could need to reallocate device just under bus 0. Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, acpiphp: Add is_hotplug_bridge detectionYinghai Lu1-1/+26
When system support hotplug bridge with children hotplug slots, we need to make sure that parent bridge get preallocated resource so later when device is plugged into children slot, those children devices will get resource allocated. We do not meet this problem, because for pcie hotplug card, when acpiphp is used, pci_scan_bridge will set that for us when detect hotplug bit in slot cap. Reported-and-tested-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Yinghai Lu <yinghai@kernel.org> Acked-by: Jason Baron <jbaron@redhat.com>
2012-09-17PCI, x86: clear initial value for root info resourcesYinghai Lu1-2/+1
Found one system one root bus hot remove get panic. Panic happens when try to release hostbridge resource. It turns out that resource get reject during put into resource tree because of conflicts. Also that resource parent pointer have random value. That invalid value cause it pass through check __release_pci_root_info and panic in release_resource. Try to use kzalloc instead. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: x86@kernel.org
2012-09-17PCI: Use correct type when freeing bus resource listYinghai Lu1-1/+5
Should use struct pci_bus_resource instead of struct pci_host_bridge_window Signed-off-by: Yinghai Lu <yinghai@kernel.org>
2012-09-17PCI, x86: fix default vga ref_countYinghai Lu1-1/+5
when __ARCH_HAS_VGA_DEFAULT_DEVICE is not defined, aka EFIFB is not used, for static path, vga_default setting is through vga_arbiter_add_pci_device. and for x86 pci_fixup_video, will skip that. because subsys_initcall(vga_arb_device_init) come first to call vga_arbiter_add_pci_device. for hotplug path, even vga_arbiter_add_pci_device is called via notifier, but it will check VGA_RSRC_LEGACY_MASK that is not set for hotplug path. So x86 pci_fixup_video will take over to call vga_set_default_device(). We need to hold one dev reference there. otherwise vga_arbiter_del_pci_device that does not check VGA_RSRC_LEGACY_MASK will call put_device and it will cause ref_count to decrease extra. that will have that device get deleted early wrongly. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: x86@kernel.org
2012-09-17Merge branch 'linus'Ingo Molnar90-478/+602
2012-09-17Merge branch 'linus'Ingo Molnar183-742/+1819
2012-09-16Linux 3.6-rc6Linus Torvalds1-1/+1
2012-09-16Merge tag 'mfd-for-linus-3.6-2' of ↵Linus Torvalds58-247/+343
git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Pull mfd fixes from Samuel Ortiz: "This is the remaining MFD fixes for 3.6, with 5 pending fixes: - A tps65217 build error fix. - A lcp_ich regression fix caused by the MFD driver failing to initialize the watchdog sub device due to ACPI conflicts. - 2 MAX77693 interrupt handling bug fixes. - An MFD core fix, adding an IRQ domain argument to the MFD device addition API in order to prevent silent and potentially harmful remapping behaviour changes for drivers supporting non-DT platforms." * tag 'mfd-for-linus-3.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: mfd: MAX77693: Fix NULL pointer error when initializing irqs mfd: MAX77693: Fix interrupt handling bug mfd: core: Push irqdomain mapping out into devices mfd: lpc_ich: Fix a 3.5 kernel regression for iTCO_wdt driver mfd: Move tps65217 regulator plat data handling to regulator
2012-09-16Merge tag 'for-3.6-rc6' of git://gitorious.org/linux-pwm/linux-pwmLinus Torvalds2-0/+36
Pull pwm fixes from Thierry Reding: "While this comes a bit later than I had wished, both patches are rather minor and touch only new drivers so I think these are still safe for merging." * tag 'for-3.6-rc6' of git://gitorious.org/linux-pwm/linux-pwm: pwm: pwm-tiehrpwm: Fix conflicting channel period setting pwm: pwm-tiecap: Disable APWM mode after configure
2012-09-16Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pendingLinus Torvalds10-126/+141
Pull scsi target fixes from Nicholas Bellinger: "Here is the current set of target-pending fixes headed for v3.6-final The main parts of this series include bug-fixes from Paolo Bonzini to address an use-after-free bug in pSCSI sense exception handling, along with addressing some long-standing bugs wrt the handling of zero- length SCSI CDB payloads also specific to pSCSI pass-through device backends." * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: target: go through normal processing for zero-length REQUEST_SENSE target: support zero allocation length in REQUEST SENSE target: support zero-size allocation lengths in transport_kmap_data_sg target: fail REPORT LUNS with less than 16 bytes of payload target: report too-small parameter lists everywhere target: go through normal processing for zero-length PSCSI commands target: fix use-after-free with PSCSI sense data target: simplify code around transport_get_sense_data target: move transport_get_sense_data target: Check idr_get_new return value in iscsi_login_zero_tsih_s1 target: Fix ->data_length re-assignment bug with SCSI overflow
2012-09-16Merge tag 'pm-for-3.6-rc6' of ↵Linus Torvalds2-12/+34
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm Pull power management fixes from Rafael J. Wysocki: "Three ACPI device power management fixes related to checking and setting device power states." * tag 'pm-for-3.6-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: ACPI / PM: Use KERN_DEBUG when no power resources are found ACPI / PM: Fix resource_lock dead lock in acpi_power_on_device ACPI / PM: Infer parent power state from child if unknown, v2
2012-09-16Merge branch 'for-linus' of ↵Linus Torvalds1-6/+2
git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs Pull a btrfs revert from Chris Mason: "My for-linus branch has one revert in the new quota code. We're building up more fixes at etc for the next merge window, but I'm keeping them out unless they are bigger regressions or have a huge impact." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: Revert "Btrfs: fix some error codes in btrfs_qgroup_inherit()"
2012-09-16Merge tag 'sound-3.6' of ↵Linus Torvalds13-40/+23
git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull more sound fixes from Takashi Iwai: "Yet more (a bunch of) small fixes that slipped from the previous pull request. Most of commits are pending ASoC fixes, all of which are fairly trivial commits." * tag 'sound-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ASoC: wm8904: correct the index ALSA: hda - Yet another position_fix quirk for ASUS machines ASoC: tegra: fix maxburst settings in dmaengine code ASoC: samsung dma - Don't indicate support for pause/resume. ASoC: mc13783: Remove mono support ASoC: arizona: Fix typo in 44.1kHz rates ASoC: spear: correct the check for NULL dma_buffer pointer sound: tegra_alc5632: remove HP detect GPIO inversion ASoC: atmel-ssc: include linux/io.h for raw io ASoC: dapm: Don't force card bias level to be updated ASoC: dapm: Make sure we update the bias level for CODECs with no op ASoC: am3517evm: fix error return code ASoC: ux500_msp_i2s: better use devm functions and fix error return code ASoC: imx-sgtl5000: fix error return code
2012-09-16Revert "sched: Improve scalability via 'CPU buddies', which withstand random ↵Linus Torvalds3-46/+22
perturbations" This reverts commit 970e178985cadbca660feb02f4d2ee3a09f7fdda. Nikolay Ulyanitsky reported thatthe 3.6-rc5 kernel has a 15-20% performance drop on PostgreSQL 9.2 on his machine (running "pgbench"). Borislav Petkov was able to reproduce this, and bisected it to this commit 970e178985ca ("sched: Improve scalability via 'CPU buddies' ...") apparently because the new single-idle-buddy model simply doesn't find idle CPU's to reschedule on aggressively enough. Mike Galbraith suspects that it is likely due to the user-mode spinlocks in PostgreSQL not reacting well to preemption, but we don't really know the details - I'll just revert the commit for now. There are hopefully other approaches to improve scheduler scalability without it causing these kinds of downsides. Reported-by: Nikolay Ulyanitsky <lystor@gmail.com> Bisected-by: Borislav Petkov <bp@alien8.de> Acked-by: Mike Galbraith <efault@gmx.de> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@kernel.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-09-16mfd: MAX77693: Fix NULL pointer error when initializing irqsChanwoo Choi2-7/+26
This patch initialize register map of MUIC device because mfd driver of Maxim MAX77693 use regmap-muic instance of MUIC device when irqs of Maxim MAX77693 is initialized before call max77693-muic probe() function. Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Reported-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2012-09-16mfd: MAX77693: Fix interrupt handling bugChanwoo Choi1-5/+31
This patch fix bug related to interrupt handling for MAX77693 devices. - Unmask interrupt masking bit for charger/flash/muic to revolve that interrupt isn't happened when external connector is attached. - Fix wrong regmap instance when muic interrupt is happened. This patch were discussed and confirm discussion about this patch on below url: http://lkml.org/lkml/2012/7/16/118 Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2012-09-15mfd: core: Push irqdomain mapping out into devicesMark Brown54-112/+125
Currently the MFD core supports remapping MFD cell interrupts using an irqdomain but only if the MFD is being instantiated using device tree and only if the device tree bindings use the pattern of registering IPs in the device tree with compatible properties. This will be actively harmful for drivers which support non-DT platforms and use this pattern for their DT bindings as it will mean that the core will silently change remapping behaviour and it is also limiting for drivers which don't do DT with this particular pattern. There is also a potential fragility if there are interrupts not associated with MFD cells and all the cells are omitted from the device tree for some reason. Instead change the code to take an IRQ domain as an optional argument, allowing drivers to take the decision about the parent domain for their interrupts. The one current user of this feature is ab8500-core, it has the domain lookup pushed out into the driver. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2012-09-15Merge tag 'asoc-3.6' of ↵Takashi Iwai474-2871/+5042
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus ASoC: Updates for 3.6 A bigger set of updates than I'm entirely comfortable with - things backed up a bit due to travel. As ever the majority of these are small, focused updates for specific drivers though there are a couple of core changes. There's been good exposure in -next. The AT91 patch fixes a build break.
2012-09-14Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixesLinus Torvalds3-44/+61
Pull GFS2 fixes from Steven Whitehouse: "Here are three GFS2 fixes for the current kernel tree. These are all related to the block reservation code which was added at the merge window. That code will be getting an update at the forthcoming merge window too. In the mean time though there are a few smaller issues which should be fixed. The first patch resolves an issue with write sizes of greater than 32 bits with the size hinting code. The second ensures that the allocation data structure is initialised when using xattrs and the third takes into account allocations which may have been made by other nodes which affect a reservation on the local node." * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes: GFS2: Take account of blockages when using reserved blocks GFS2: Fix missing allocation data for set/remove xattr GFS2: Make write size hinting code common
2012-09-14Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86Linus Torvalds7-36/+31
Pull x86 platform driver updates from Matthew Garrett: "A few small updates for 3.6 - a trivial regression fix and a couple of conformance updates for the gmux driver, plus some tiny fixes for asus-wmi, eeepc-laptop and thinkpad_acpi." * 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86: thinkpad_acpi: buffer overflow in fan_get_status() eeepc-laptop: fix device reference count leakage in eeepc_rfkill_hotplug() platform/x86: fix asus_laptop.wled_type description asus-laptop: HRWS/HWRS typo drivers-platform-x86: remove useless #ifdef CONFIG_ACPI_VIDEO apple-gmux: Fix port address calculation in gmux_pio_write32() apple-gmux: Fix index read functions apple-gmux: Obtain version info from indexed gmux
2012-09-14Merge branch 'i2c-embedded/for-current' of ↵Linus Torvalds5-33/+42
git://git.pengutronix.de/git/wsa/linux Pull i2c embedded fixes from Wolfram Sang: "The last bunch of (typical) i2c-embedded driver fixes for 3.6. Also update the MAINTAINERS file to point to my tree since people keep asking where to find their patches." * 'i2c-embedded/for-current' of git://git.pengutronix.de/git/wsa/linux: i2c: algo: pca: Fix mode selection for PCA9665 MAINTAINERS: fix tree for current i2c-embedded development i2c: mxs: correctly setup speed for non devicetree i2c: pnx: Fix read transactions of >= 2 bytes i2c: pnx: Fix bit definitions
2012-09-14Merge tag 'ecryptfs-3.6-rc6-fixes' of ↵Linus Torvalds3-2/+14
git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs Pull ecryptfs fixes from Tyler Hicks: - Fixes a regression, introduced in 3.6-rc1, when a file is closed before its shared memory mapping is dirtied and unmapped. The lower file was being released when the eCryptfs file was closed and the dirtied pages could not be written out. - Adds a call to the lower filesystem's ->flush() from ecryptfs_flush(). - Fixes a regression, introduced in 2.6.39, when a file is renamed on top of another file. The target file's inode was not being evicted and the space taken by the file was not reclaimed until eCryptfs was unmounted. * tag 'ecryptfs-3.6-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs: eCryptfs: Copy up attributes of the lower target inode after rename eCryptfs: Call lower ->flush() from ecryptfs_flush() eCryptfs: Write out all dirty pages just before releasing the lower file
2012-09-14Merge branch 'fixes-for-3.6' of ↵Linus Torvalds1-1/+1
git://git.linaro.org/people/mszyprowski/linux-dma-mapping Pull one more DMA-mapping fix from Marek Szyprowski: "This patch fixes very subtle bug (typical off-by-one error) which might appear in very rare circumstances." * 'fixes-for-3.6' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping: arm: mm: fix DMA pool affiliation check
2012-09-14Merge tag 'hwmon-for-linus' of ↵Linus Torvalds2-25/+14
git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging Pull hwmon fixes from Guenter Roeck: "Fix word size register read and write operations in ina2xx driver, and initialize uninitialized structure elements in twl4030-madc-hwmon driver." * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: hwmon: (ina2xx) Fix word size register read and write operations hwmon: (twl4030-madc-hwmon) Initialize uninitialized structure elements
2012-09-14Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linuxLinus Torvalds26-138/+298
Pull drm fixes from Dave Airlie: "I realise this a bit bigger than I would want at this point. Exynos is a large chunk, I got them to half what they wanted already, and hey its ARM based, so not going to hurt many people. Radeon has only two fixes, but the PLL fixes were a bit bigger, but required for a lot of scenarios, the fence fix is really urgent. vmwgfx: I've pulled in a dumb ioctl support patch that I was going to shove in later and cc stable, but we need it asap, its mainly to stop mesa growing a really ugly dependency in userspace to run stuff on vmware, and if I don't stick it in the kernel now, everyone will have to ship ugly userspace libs to workaround it. nouveau: single urgent fix found in F18 testing, causes X to not start properly when f18 plymouth is used i915: smattering of fixes and debug quieting gma500: single regression fix So as I said a bit large, but its fairly well scattered and its all stuff I'll be shipping in F18's 3.6 kernel." * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (26 commits) drm/nouveau: fix booting with plymouth + dumb support drm/radeon: make 64bit fences more robust v3 drm/radeon: rework pll selection (v3) drm: Drop the NV12M and YUV420M formats drm/exynos: remove DRM_FORMAT_NV12M from plane module drm/exynos: fix double call of drm_prime_(init/destroy)_file_private drm/exynos: add dummy support for dmabuf-mmap drm/exynos: Add missing braces around sizeof in exynos_mixer.c drm/exynos: Add missing braces around sizeof in exynos_hdmi.c drm/exynos: Make g2d_pm_ops static drm/exynos: Add dependency for G2D in Kconfig drm/exynos: fixed page align bug. drm/exynos: Use ERR_CAST inlined function instead of ERR_PTR(PTR_ERR(.. [1] drm/exynos: Use devm_* functions in exynos_drm_g2d.c file drm/exynos: Use devm_kzalloc in exynos_drm_hdmi.c file drm/exynos: Use devm_kzalloc in exynos_drm_vidi.c file drm/exynos: Remove redundant check in exynos_drm_fimd.c file drm/exynos: Remove redundant check in exynos_hdmi.c file vmwgfx: add dumb ioctl support gma500: Fix regression on Oaktrail devices ...
2012-09-14Merge branch 'sched-urgent-for-linus' of ↵Linus Torvalds5-29/+17
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull scheduler fixes from Ingo Molnar: "Smaller fixlets" * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: sched: Fix kernel-doc warnings in kernel/sched/fair.c sched: Unthrottle rt runqueues in __disable_runtime() sched: Add missing call to calc_load_exit_idle() sched: Fix load avg vs cpu-hotplug
2012-09-14Merge branch 'perf-urgent-for-linus' of ↵Linus Torvalds7-38/+58
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull perf fixes from Ingo Molnar: "This tree includes various fixes" Ingo really needs to improve on the whole "explain git pull" part. "Various fixes" indeed. * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: perf/hwpb: Invoke __perf_event_disable() if interrupts are already disabled perf/x86: Enable Intel Cedarview Atom suppport perf_event: Switch to internal refcount, fix race with close() oprofile, s390: Fix uninitialized memory access when writing to oprofilefs perf/x86: Fix microcode revision check for SNB-PEBS
2012-09-14Merge branch 'core-urgent-for-linus' of ↵Linus Torvalds1-1/+1
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull a core sparse warning fix from Ingo Molnar * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: mm/memblock: Use NULL instead of 0 for pointers
2012-09-14Revert "Btrfs: fix some error codes in btrfs_qgroup_inherit()"Chris Mason1-6/+2
This reverts commit 5986802c2fcc754040bb7ed95f30bb16c4a843b7. Both paths are not error paths but regular cases where non-qgroup subvols are involved. Signed-off-by: Chris Mason <chris.mason@fusionio.com>
2012-09-14Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/netLinus Torvalds85-342/+808
Pull networking fixes from David Miller: 1) Use after free and new device IDs in bluetooth from Andre Guedes, Yevgeniy Melnichuk, Gustavo Padovan, and Henrik Rydberg. 2) Fix crashes with short packet lengths and VLAN in pktgen, from Nishank Trivedi. 3) mISDN calls flush_work_sync() with locks held, fix from Karsten Keil. 4) Packet scheduler gred parameters are reported to userspace improperly scaled, and WRED idling is not performed correctly. All from David Ward. 5) Fix TCP socket refcount problem in ipv6, from Julian Anastasov. 6) ibmveth device has RX queue alignment requirements which are not being explicitly met resulting in sporadic failures, fix from Santiago Leon. 7) Netfilter needs to take care when interpreting sockets attached to socket buffers, they could be time-wait minisockets. Fix from Eric Dumazet. 8) sock_edemux() has the same issue as netfilter did in #7 above, fix from Eric Dumazet. 9) Avoid infinite loops in CBQ scheduler with some configurations, from Eric Dumazet. 10) Deal with "Reflection scan: an Off-Path Attack on TCP", from Jozsef Kadlecsik. 11) SCTP overcharges socket for TX packets, fix from Thomas Graf. 12) CODEL packet scheduler should not reset it's state every time it builds a new flow, fix from Eric Dumazet. 13) Fix memory leak in nl80211, from Wei Yongjun. 14) NETROM doesn't check skb_copy_datagram_iovec() return values, from Alan Cox. 15) l2tp ethernet was using sizeof(ETH_HLEN) instead of plain ETH_HLEN, oops. From Eric Dumazet. 16) Fix selection of ath9k chips on which PA linearization and AM2PM predistoration are used, from Felix Fietkau. 17) Flow steering settings in mlx4 driver need to be validated properly, from Hadar Hen Zion. 18) bnx2x doesn't show the correct link duplex setting, from Yaniv Rosner. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (75 commits) pktgen: fix crash with vlan and packet size less than 46 bnx2x: Add missing afex code bnx2x: fix registers dumped bnx2x: correct advertisement of pause capabilities bnx2x: display the correct duplex value bnx2x: prevent timeouts when using PFC bnx2x: fix stats copying logic bnx2x: Avoid sending multiple statistics queries net: qmi_wwan: call subdriver with control intf only net_sched: gred: actually perform idling in WRED mode net_sched: gred: fix qave reporting via netlink net_sched: gred: eliminate redundant DP prio comparisons net_sched: gred: correct comment about qavg calculation in RIO mode mISDN: Fix wrong usage of flush_work_sync while holding locks netfilter: log: Fix log-level processing net-sched: sch_cbq: avoid infinite loop net: qmi_wwan: fix Gobi device probing for un2430 net: fix net/core/sock.c build error ixp4xx_hss: fix build failure due to missing linux/module.h inclusion caif: move the dereference below the NULL test ...
2012-09-14Merge tag 'usb-3.6-rc6' of ↵Linus Torvalds26-57/+410
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb Pull USB patches from Greg Kroah-Hartman: "Here are a number of USB patches, a bit more than I normally like this late in the -rc series, but given people's vacations (myself included), and the kernel summit, it seems to have happened this way. All are tiny, but they add up. A number of gadget and xhci fixes, and a few new device ids. All have been tested in linux-next. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>" * tag 'usb-3.6-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (33 commits) usb: chipidea: udc: don't stall endpoint if request list is empty in isr_tr_complete_low usb: chipidea: cleanup dma_pool if udc_start() fails usb: chipidea: udc: fix error path in udc_start() usb: chipidea: udc: add pullup fuction, needed by the uvc gadget usb: chipidea: udc: fix setup of endpoint maxpacket size USB: option: replace ZTE K5006-Z entry with vendor class rule EHCI: Update qTD next pointer in QH overlay region during unlink USB: cdc-wdm: fix wdm_find_device* return value USB: ftdi_sio: do not claim CDC ACM function usb: dwc3: gadget: fix pending isoc handling usb: renesas_usbhs: fixup DMA transport data alignment usb: gadget: at91udc: Don't check for ep->ep.desc usb: gadget: at91udc: don't overwrite driver data usb: dwc3: core: fix incorrect usage of resource pointer usb: musb: musbhsdma: fix IRQ check usb: musb: tusb6010: fix error path in tusb_probe() usb: musb: host: fix for musb_start_urb Oops usb: gadget: dummy_hcd: add support for USB_DT_BOS on rh usb: gadget: dummy_hcd: fixup error probe path usb: gadget: s3c-hsotg.c: fix error return code ...
2012-09-14Merge tag 'tty-3.6-rc6' of ↵Linus Torvalds1-15/+15
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty Pull TTY fixes from Greg Kroah-Hartman: "Here are 2 tiny patches for a serial driver to resolve issues that people have reported with the 3.6-rc tree. Both of these have been in the linux-next tree for a while now. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>" * tag 'tty-3.6-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: tty: serial: imx: don't reinit clock in imx_setup_ufcr() tty: serial: imx: console write routing is unsafe on SMP
2012-09-14Merge tag 'staging-3.6-rc6' of ↵Linus Torvalds22-47/+123
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging Pull staging tree fixes from Greg Kroah-Hartman: "Here are a few staging tree fixes for problems that have been reported. Nothing major, just a number of tiny driver fixes. All of these have been in the linux-next tree for a while. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>" * tag 'staging-3.6-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: drm/omap: add more new timings fields drm/omap: update for interlaced staging: r8712u: fix bug in r8712_recv_indicatepkt() staging: zcache: fix cleancache race condition with shrinker Staging: Android alarm: IOCTL command encoding fix staging: vt6656: [BUG] - Failed connection, incorrect endian. staging: ozwpan: fix memcmp() test in oz_set_active_pd() staging: wlan-ng: Fix problem with wrong arguments staging: comedi: das08: Correct AO output for das08jr-16-ao staging: comedi: das08: Correct AI encoding for das08jr-16-ao staging: comedi: das08: Fix PCI ref count staging: comedi: amplc_pci230: Fix PCI ref count staging: comedi: amplc_pc263: Fix PCI ref count staging: comedi: amplc_pc236: Fix PCI ref count staging: comedi: amplc_dio200: Fix PCI ref count staging: comedi: amplc_pci224: Fix PCI ref count drivers/iio/adc/at91_adc.c: adjust inconsistent IS_ERR and PTR_ERR staging iio: fix potential memory leak in lis3l02dq_ring.c staging:iio: prevent divide by zero bugs
2012-09-14Merge tag 'driver-core-3.6-rc6' of ↵Linus Torvalds1-1/+1
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core Pull driver core fix from Greg Kroah-Hartman: "Here is one fix for 3.6-rc6 for the kobject.h file. It fixes a reported oops if CONFIG_HOTPLUG is disabled. It's been in the linux-next tree for a while now. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>" * tag 'driver-core-3.6-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: kobject: fix oops with "input0: bad kobj_uevent_env content in show_uevent()"
2012-09-14vfs: make O_PATH file descriptors usable for 'fstat()'Linus Torvalds1-1/+1
We already use them for openat() and friends, but fstat() also wants to be able to use O_PATH file descriptors. This should make it more directly comparable to the O_SEARCH of Solaris. Note that you could already do the same thing with "fstatat()" and an empty path, but just doing "fstat()" directly is simpler and faster, so there is no reason not to just allow it directly. See also commit 332a2e1244bd, which did the same thing for fchdir, for the same reasons. Reported-by: ольга крыжановская <olga.kryzhanovska@gmail.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: stable@kernel.org # O_PATH introduced in 3.0+ Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-09-14Merge branch 'linus'Ingo Molnar49-164/+346
2012-09-14ACPI / PM: Use KERN_DEBUG when no power resources are foundAaron Lu1-1/+1
commit a606dac368eed5696fb38e16b1394f1d049c09e9 adds support to link devices which have _PRx, if a device does not have _PRx, a warning message will be printed. This commit is for ZPODD on Intel ZPODD capable platforms, on other platforms, it has no problem if there is no power resource for this device, so a warning here is not appropriate, change it to debug. Reported-by: Borislav Petkov <bp@amd64.org> Signed-off-by: Aaron Lu <aaron.lu@intel.com> Cc: stable@vger.kernel.org Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
2012-09-14Merge branch 'pci/tejun-workqueue' into nextBjorn Helgaas1-20/+28
* pci/tejun-workqueue: PCI: Rewrite pci_call_probe() to use workqueue instead of work_on_cpu() Conflicts: drivers/pci/pci-driver.c
2012-09-14ASoC: wm8904: correct the indexBo Shen1-1/+1
Signed-off-by: Bo Shen <voice.shen@atmel.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-09-14eCryptfs: Copy up attributes of the lower target inode after renameTyler Hicks1-0/+5
After calling into the lower filesystem to do a rename, the lower target inode's attributes were not copied up to the eCryptfs target inode. This resulted in the eCryptfs target inode staying around, rather than being evicted, because i_nlink was not updated for the eCryptfs inode. This also meant that eCryptfs didn't do the final iput() on the lower target inode so it stayed around, as well. This would result in a failure to free up space occupied by the target file in the rename() operation. Both target inodes would eventually be evicted when the eCryptfs filesystem was unmounted. This patch calls fsstack_copy_attr_all() after the lower filesystem does its ->rename() so that important inode attributes, such as i_nlink, are updated at the eCryptfs layer. ecryptfs_evict_inode() is now called and eCryptfs can drop its final reference on the lower inode. http://launchpad.net/bugs/561129 Signed-off-by: Tyler Hicks <tyhicks@canonical.com> Tested-by: Colin Ian King <colin.king@canonical.com> Cc: <stable@vger.kernel.org> [2.6.39+]
2012-09-14eCryptfs: Call lower ->flush() from ecryptfs_flush()Tyler Hicks1-2/+8
Since eCryptfs only calls fput() on the lower file in ecryptfs_release(), eCryptfs should call the lower filesystem's ->flush() from ecryptfs_flush(). If the lower filesystem implements ->flush(), then eCryptfs should try to flush out any dirty pages prior to calling the lower ->flush(). If the lower filesystem does not implement ->flush(), then eCryptfs has no need to do anything in ecryptfs_flush() since dirty pages are now written out to the lower filesystem in ecryptfs_release(). Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
2012-09-14eCryptfs: Write out all dirty pages just before releasing the lower fileTyler Hicks1-0/+1
Fixes a regression caused by: 821f749 eCryptfs: Revert to a writethrough cache model That patch reverted some code (specifically, 32001d6f) that was necessary to properly handle open() -> mmap() -> close() -> dirty pages -> munmap(), because the lower file could be closed before the dirty pages are written out. Rather than reapplying 32001d6f, this approach is a better way of ensuring that the lower file is still open in order to handle writing out the dirty pages. It is called from ecryptfs_release(), while we have a lock on the lower file pointer, just before the lower file gets the final fput() and we overwrite the pointer. https://launchpad.net/bugs/1047261 Signed-off-by: Tyler Hicks <tyhicks@canonical.com> Reported-by: Artemy Tregubenko <me@arty.name> Tested-by: Artemy Tregubenko <me@arty.name> Tested-by: Colin Ian King <colin.king@canonical.com>
2012-09-14i2c: algo: pca: Fix mode selection for PCA9665Thomas Kavanagh1-3/+3
The code currently always selects turbo mode for PCA9665, no matter which clock frequency is configured. This is because it compares the clock frequency against constants reflecting (boundary / 100). Compare against real boundary frequencies to fix the problem. Signed-off-by: Thomas Kavanagh <tkavanagh@juniper.net> Signed-off-by: Guenter Roeck <groeck@juniper.net> Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
2012-09-14MAINTAINERS: fix tree for current i2c-embedded developmentWolfram Sang1-1/+1
Guide people to where their patches can be found these days. Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Acked-by: Jean Delvare <khali@linux-fr.org> Acked-by: Ben Dooks <ben-linux@fluff.org>
2012-09-14Merge branch 'perf/core'Ingo Molnar8-24/+46
2012-09-14Merge branch 'tip/perf/core' of ↵Ingo Molnar8-24/+46
git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/core Pull tracing updates from Steve Rostedt. Signed-off-by: Ingo Molnar <mingo@kernel.org>
2012-09-14drm/nouveau: fix booting with plymouth + dumb supportDave Airlie1-1/+1
We noticed a plymouth bug on Fedora 18, and I then noticed this stupid thinko, fixing it fixed the problem with plymouth. Cc: stable@vger.kernel.org Acked-by: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-09-13kprobes/x86: Fix to support jprobes on ftrace-based kprobeMasami Hiramatsu2-16/+29
Fix kprobes/x86 to support jprobes on ftrace-based kprobes. Because of -mfentry support of ftrace, ftrace is now put on the beginning of function where jprobes are put. Originally ftrace-based kprobes doesn't support jprobe because it will change regs->ip and ftrace doesn't support changing IP and ftrace itself doesn't conflict jprobe. However, ftrace -mfentry support moves mcount call on the top of functions where jprobes are put. This means that jprobe always conflicts with ftrace-based kprobe and fails. This patch allows ftrace-based kprobes to support jprobes by allowing to modify regs->ip and kprobes breakpoint handler also allows to skip singlestepping because there is a ftrace call (not an original instruction). Link: http://lkml.kernel.org/r/20120905143125.10329.90836.stgit@localhost.localdomain Reported-by: Fengguang Wu <fengguang.wu@intel.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2012-09-13ftrace/x86-64: Allow to change RIP in handlersSteven Rostedt1-0/+4
Allow ftrace handlers to change RIP register (regs->ip) in handlers. This will allow handlers to call another function instead of original function. Link: http://lkml.kernel.org/r/20120905143118.10329.5078.stgit@localhost.localdomain Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2012-09-13kprobes/x86: Fix kprobes to collectly handle IP on ftraceMasami Hiramatsu1-3/+6
Current kprobe_ftrace_handler expects regs->ip == ip, but it is incorrect (originally on x86-64). Actually, ftrace handler sets regs->ip = ip + MCOUNT_INSN_SIZE. kprobe_ftrace_handler must take care for that. Link: http://lkml.kernel.org/r/20120905143112.10329.72069.stgit@localhost.localdomain Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2012-09-13ftrace/x86: Adjust x86 regs.ip as like as x86-64Masami Hiramatsu1-2/+1
Adjust x86 regs.ip to ip + MCOUNT_INSN_SIZE as like as on x86-64. This helps us to consolidate codes which use regs->ip on both of x86/x86-64. Link: http://lkml.kernel.org/r/20120905143100.10329.60109.stgit@localhost.localdomain Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2012-09-13trace: Stop compiling in trace_clock unconditionallyJosh Triplett3-6/+7
Commit 56449f437 "tracing: make the trace clocks available generally", in April 2009, made trace_clock available unconditionally, since CONFIG_X86_DS used it too. Commit faa4602e47 "x86, perf, bts, mm: Delete the never used BTS-ptrace code", in March 2010, removed CONFIG_X86_DS, and now only CONFIG_RING_BUFFER (split out from CONFIG_TRACING for general use) has a dependency on trace_clock. So, only compile in trace_clock with CONFIG_RING_BUFFER or CONFIG_TRACING enabled. Link: http://lkml.kernel.org/r/20120903024513.GA19583@leaf Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2012-09-13tracing: Skip printing "OK" if failed to disable eventYuanhan Liu1-1/+3
No acutal case found. But logically, we should skip "OK" in case any error met. Link: http://lkml.kernel.org/r/1346051625-25231-1-git-send-email-yuanhan.liu@linux.intel.com Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2012-09-14Merge branch 'drm-fixes-3.6' of git://people.freedesktop.org/~agd5f/linux ↵Dave Airlie2-37/+134
into drm-fixes Alex writes: This is the current set of radeon fixes for 3.6. Two small fixes: - fix the fence issues introduced in 3.5 with 64-bit fences - PLL fix for multiple DP heads * 'drm-fixes-3.6' of git://people.freedesktop.org/~agd5f/linux: drm/radeon: make 64bit fences more robust v3 drm/radeon: rework pll selection (v3)
2012-09-14ACPI / PM: Fix resource_lock dead lock in acpi_power_on_deviceLin Ming1-11/+23
Commit 0090def("ACPI: Add interface to register/unregister device to/from power resources") used resource_lock to protect the devices list that relies on power resource. It caused a mutex dead lock, as below acpi_power_on ---> lock resource_lock __acpi_power_on acpi_power_on_device acpi_power_get_inferred_state acpi_power_get_list_state ---> lock resource_lock This patch adds a new mutex "devices_lock" to protect the devices list and calls acpi_power_on_device in acpi_power_on, instead of __acpi_power_on, after the resource_lock is released. [rjw: Changed data type of a boolean variable to bool.] Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Aaron Lu <aaron.lu@intel.com> Cc: stable@vger.kernel.org Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
2012-09-14ACPI / PM: Infer parent power state from child if unknown, v2Rafael J. Wysocki1-0/+10
It turns out that there are ACPI BIOSes defining device objects with _PSx and without either _PSC or _PRx. For devices corresponding to those ACPI objetcs __acpi_bus_get_power() returns ACPI_STATE_UNKNOWN and their initial power states are regarded as unknown as a result. If such a device is a parent of another power-manageable device, the child cannot be put into a low-power state through ACPI, because __acpi_bus_set_power() refuses to change power states of devices whose parents' power states are unknown. To work around this problem, observe that the ACPI power state of a device cannot be higher-power (lower-number) than the power state of its parent. Thus, if the device's _PSC method or the configuration of its power resources indicates that the device is in D0, the device's parent has to be in D0 as well. Consequently, if the parent's power state is unknown when we've just learned that its child's power state is D0, we can safely set the parent's power.state field to ACPI_STATE_D0. Tested-by: Aaron Lu <aaron.lu@intel.com> Cc: stable@vger.kernel.org Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
2012-09-13pktgen: fix crash with vlan and packet size less than 46Nishank Trivedi1-1/+1
If vlan option is being specified in the pktgen and packet size being requested is less than 46 bytes, despite being illogical request, pktgen should not crash the kernel. BUG: unable to handle kernel paging request at ffff88021fb82000 Process kpktgend_0 (pid: 1184, threadinfo ffff880215f1a000, task ffff880218544530) Call Trace: [<ffffffffa0637cd2>] ? pktgen_finalize_skb+0x222/0x300 [pktgen] [<ffffffff814f0084>] ? build_skb+0x34/0x1c0 [<ffffffffa0639b11>] pktgen_thread_worker+0x5d1/0x1790 [pktgen] [<ffffffffa03ffb10>] ? igb_xmit_frame_ring+0xa30/0xa30 [igb] [<ffffffff8107ba20>] ? wake_up_bit+0x40/0x40 [<ffffffff8107ba20>] ? wake_up_bit+0x40/0x40 [<ffffffffa0639540>] ? spin+0x240/0x240 [pktgen] [<ffffffff8107b4e3>] kthread+0x93/0xa0 [<ffffffff81615de4>] kernel_thread_helper+0x4/0x10 [<ffffffff8107b450>] ? flush_kthread_worker+0x80/0x80 [<ffffffff81615de0>] ? gs_change+0x13/0x13 The root cause of why pktgen is not able to handle this case is due to comparison of signed (datalen) and unsigned data (sizeof), which eventually passes a huge number to skb_put(). Signed-off-by: Nishank Trivedi <nistrive@cisco.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2012-09-13thinkpad_acpi: buffer overflow in fan_get_status()Dan Carpenter1-6/+7
The acpi_evalf() function modifies four bytes of data but in fan_get_status() we pass a pointer to u8. I have modified the function to use type checking now. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2012-09-13eeepc-laptop: fix device reference count leakage in eeepc_rfkill_hotplug()Jiang Liu1-4/+6
Fix a device reference count leakage issue in function eeepc_rfkill_hotplug(). Signed-off-by: Jiang Liu <jiang.liu@huawei.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2012-09-13platform/x86: fix asus_laptop.wled_type descriptionMaxim Nikulin1-1/+1
MODULE_PARM_DESC for wlan_status is further in the same file Signed-off-by: Maxim A. Nikulin <M.A.Nikulin@gmail.com> Signed-off-by: Corentin Chary <corentin.chary@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2012-09-13asus-laptop: HRWS/HWRS typoCorentin Chary1-4/+4
Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=24222 Signed-off-by: Corentin Chary <corentin.chary@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2012-09-13drivers-platform-x86: remove useless #ifdef CONFIG_ACPI_VIDEOCorentin Chary4-14/+0
Signed-off-by: Corentin Chary <corentin.chary@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2012-09-13apple-gmux: Fix port address calculation in gmux_pio_write32()Seth Forshee1-1/+1
This function fails to add the start address of the gmux I/O range to the requested port address and thus writes to the wrong location. Signed-off-by: Seth Forshee <seth.forshee@canonical.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2012-09-13apple-gmux: Fix index read functionsBernhard Froemel1-2/+4
Study of Apple's binary driver revealed that the GMUX_READ_PORT should be written between calls to gmux_index_wait_ready and gmux_index_wait_complete (i.e., the new index protocol must be followed). If this is not done correctly, the indexed gmux device only partially accepts writes which lead to problems concerning GPU switching. Special thanks to Seth Forshee who helped greatly with identifying unnecessary changes. Signed-off-by: Bernhard Froemel <froemel@vmars.tuwien.ac.at> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2012-09-13apple-gmux: Obtain version info from indexed gmuxBernhard Froemel1-4/+8
This patch extracts and displays version information from the indexed gmux device as it is also done for the classic gmux device. Signed-off-by: Bernhard Froemel <froemel@vmars.tuwien.ac.at> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2012-09-13bnx2x: Add missing afex codeYuval Mintz2-11/+21
Commit a334872224a67b614dc888460377862621f3dac7 added afex support but lacked several logical changes. This lack can cause afex to crash, and also have a slight effect on other flows (i.e., driver always assumes the Tx ring has less available buffers than what it actually has). This patch adds the missing segments, fixing said issues. Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Barak Witkowski <barak@broadcom.com> Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2012-09-13bnx2x: fix registers dumpedDmitry Kravkov2-18/+9
Under traffic, there are several registers that when read (e.g., via 'ethtool -d') may cause the chip to stall. This patch corrects the registers read in such flows. Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2012-09-13bnx2x: correct advertisement of pause capabilitiesYaniv Rosner1-0/+6
This patch propagates users' requested flow-control into the link layer, which will later be used to advertise this flow-control for auto-negotiation (until now these values were ignored). Signed-off-by: Yaniv Rosner <yaniv.rosner@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2012-09-13bnx2x: display the correct duplex valueYaniv Rosner1-4/+6
Prior to this fix, the driver reported the chip's active duplex state is always 'full', even if using half-duplex mode. Signed-off-by: Yaniv Rosner <yaniv.rosner@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2012-09-13bnx2x: prevent timeouts when using PFCYaniv Rosner1-3/+5
Prevent updating the xmac PFC configuration when using a link speed slower than 10G -the umac block is responsible for 1G or slower connections, therefore it is possible the xmac block is reset when connection is slower. Signed-off-by: Yaniv Rosner <yaniv.rosner@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2012-09-13bnx2x: fix stats copying logicYuval Mintz1-2/+5
FW needs the driver statistics for management. Current logic is broken in that the function that gathers the port statistics does not copy its own statistics to a place where the FW can use it. This patch causes every function that can pass statistics to the FW to do so. Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>