1. 16 Oct, 2007 12 commits
    • Jeremy Fitzhardinge's avatar
      xfs: eagerly remove vmap mappings to avoid upsetting Xen · ace2e92e
      Jeremy Fitzhardinge authored
      XFS leaves stray mappings around when it vmaps memory to make it
      virtually contigious.  This upsets Xen if one of those pages is being
      recycled into a pagetable, since it finds an extra writable mapping of
      the page.
      
      This patch solves the problem in a brute force way, by making XFS
      always eagerly unmap its mappings.  David Chinner says this shouldn't
      have any performance impact on filesystems with default block sizes;
      it will only affect filesystems with large block sizes.
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      Acked-by: default avatarDavid Chinner <dgc@sgi.com>
      Cc: Nick Piggin <nickpiggin@yahoo.com.au>
      Cc: XFS masters <xfs-masters@oss.sgi.com>
      Cc: Stable kernel <stable@kernel.org>
      Cc: Morten =?utf-8?q?B=C3=B8geskov?= <xen-users@morten.bogeskov.dk>
      Cc: Mark Williamson <mark.williamson@cl.cam.ac.uk>
      ace2e92e
    • Jeremy Fitzhardinge's avatar
      xen: add some debug output for failed multicalls · a122d623
      Jeremy Fitzhardinge authored
      Multicalls are expected to never fail, and the normal response to a
      failed multicall is very terse.  In the interests of better
      debuggability, add some more verbose output.  It may be worth turning
      this off once it all seems more tested.
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      a122d623
    • Jeremy Fitzhardinge's avatar
      xen: fix incorrect vcpu_register_vcpu_info hypercall argument · e3d26976
      Jeremy Fitzhardinge authored
      The kernel's copy of struct vcpu_register_vcpu_info was out of date,
      at best causing the hypercall to fail and the guest kernel to fall
      back to the old mechanism, or worse, causing random memory corruption.
      
      [ Stable folks: applies to 2.6.23 ]
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      Cc: Stable Kernel <stable@kernel.org>
      Cc: Morten =?utf-8?q?B=C3=B8geskov?= <xen-users@morten.bogeskov.dk>
      Cc: Mark Williamson <mark.williamson@cl.cam.ac.uk>
      e3d26976
    • Jeremy Fitzhardinge's avatar
      xen: ask the hypervisor how much space it needs reserved · fb1d8404
      Jeremy Fitzhardinge authored
      Ask the hypervisor how much space it needs reserved, since 32-on-64
      doesn't need any space, and it may change in future.
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      fb1d8404
    • Jeremy Fitzhardinge's avatar
      xen: lock pte pages while pinning/unpinning · 74260714
      Jeremy Fitzhardinge authored
      When a pagetable is created, it is made globally visible in the rmap
      prio tree before it is pinned via arch_dup_mmap(), and remains in the
      rmap tree while it is unpinned with arch_exit_mmap().
      
      This means that other CPUs may race with the pinning/unpinning
      process, and see a pte between when it gets marked RO and actually
      pinned, causing any pte updates to fail with write-protect faults.
      
      As a result, all pte pages must be properly locked, and only unlocked
      once the pinning/unpinning process has finished.
      
      In order to avoid taking spinlocks for the whole pagetable - which may
      overflow the PREEMPT_BITS portion of preempt counter - it locks and pins
      each pte page individually, and then finally pins the whole pagetable.
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Hugh Dickens <hugh@veritas.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andi Kleen <ak@suse.de>
      Cc: Keir Fraser <keir@xensource.com>
      Cc: Jan Beulich <jbeulich@novell.com>
      74260714
    • Jeremy Fitzhardinge's avatar
      xen: deal with stale cr3 values when unpinning pagetables · 9f79991d
      Jeremy Fitzhardinge authored
      When a pagetable is no longer in use, it must be unpinned so that its
      pages can be freed.  However, this is only possible if there are no
      stray uses of the pagetable.  The code currently deals with all the
      usual cases, but there's a rare case where a vcpu is changing cr3, but
      is doing so lazily, and the change hasn't actually happened by the time
      the pagetable is unpinned, even though it appears to have been completed.
      
      This change adds a second per-cpu cr3 variable - xen_current_cr3 -
      which tracks the actual state of the vcpu cr3.  It is only updated once
      the actual hypercall to set cr3 has been completed.  Other processors
      wishing to unpin a pagetable can check other vcpu's xen_current_cr3
      values to see if any cross-cpu IPIs are needed to clean things up.
      
      [ Stable folks: 2.6.23 bugfix ]
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      Cc: Stable Kernel <stable@kernel.org>
      9f79991d
    • Jeremy Fitzhardinge's avatar
      xen: add batch completion callbacks · 91e0c5f3
      Jeremy Fitzhardinge authored
      This adds a mechanism to register a callback function to be called once
      a batch of hypercalls has been issued.  This is typically used to unlock
      things which must remain locked until the hypercall has taken place.
      
      [ Stable folks: pre-req for 2.6.23 bugfix "xen: deal with stale cr3
        values when unpinning pagetables" ]
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      Cc: Stable Kernel <stable@kernel.org>
      91e0c5f3
    • Jeremy Fitzhardinge's avatar
      xen: yield to IPI target if necessary · f0d73394
      Jeremy Fitzhardinge authored
      When sending a call-function IPI to a vcpu, yield if the vcpu isn't
      running.
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      f0d73394
    • Jesper Juhl's avatar
      Clean up duplicate includes in arch/i386/xen/ · d626a1f1
      Jesper Juhl authored
      This patch cleans up duplicate includes in
      	arch/i386/xen/
      Signed-off-by: default avatarJesper Juhl <jesper.juhl@gmail.com>
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      d626a1f1
    • Jeremy Fitzhardinge's avatar
      remove dead code in pgtable_cache_init · 4f817847
      Jeremy Fitzhardinge authored
      The conversion from using a slab cache to quicklist left some residual
      dead code.
      
      I note that in the conversion it now always allocates a whole page for
      the pgd, rather than the 32 bytes needed for a PAE pgd.  Was this
      intended?
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      Cc: Christoph Lameter <clameter@sgi.com>
      Cc: Andi Kleen <ak@suse.de>
      Cc: William Lee Irwin III <wli@holomorphy.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      4f817847
    • Jeremy Fitzhardinge's avatar
      paravirt: clean up lazy mode handling · 8965c1c0
      Jeremy Fitzhardinge authored
      Currently, the set_lazy_mode pv_op is overloaded with 5 functions:
       1. enter lazy cpu mode
       2. leave lazy cpu mode
       3. enter lazy mmu mode
       4. leave lazy mmu mode
       5. flush pending batched operations
      
      This complicates each paravirt backend, since it needs to deal with
      all the possible state transitions, handling flushing, etc. In
      particular, flushing is quite distinct from the other 4 functions, and
      seems to just cause complication.
      
      This patch removes the set_lazy_mode operation, and adds "enter" and
      "leave" lazy mode operations on mmu_ops and cpu_ops.  All the logic
      associated with enter and leaving lazy states is now in common code
      (basically BUG_ONs to make sure that no mode is current when entering
      a lazy mode, and make sure that the mode is current when leaving).
      Also, flush is handled in a common way, by simply leaving and
      re-entering the lazy mode.
      
      The result is that the Xen, lguest and VMI lazy mode implementations
      are much simpler.
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      Cc: Andi Kleen <ak@suse.de>
      Cc: Zach Amsden <zach@vmware.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Avi Kivity <avi@qumranet.com>
      Cc: Anthony Liguory <aliguori@us.ibm.com>
      Cc: "Glauber de Oliveira Costa" <glommer@gmail.com>
      Cc: Jun Nakajima <jun.nakajima@intel.com>
      8965c1c0
    • Jeremy Fitzhardinge's avatar
      paravirt: refactor struct paravirt_ops into smaller pv_*_ops · 93b1eab3
      Jeremy Fitzhardinge authored
      This patch refactors the paravirt_ops structure into groups of
      functionally related ops:
      
      pv_info - random info, rather than function entrypoints
      pv_init_ops - functions used at boot time (some for module_init too)
      pv_misc_ops - lazy mode, which didn't fit well anywhere else
      pv_time_ops - time-related functions
      pv_cpu_ops - various privileged instruction ops
      pv_irq_ops - operations for managing interrupt state
      pv_apic_ops - APIC operations
      pv_mmu_ops - operations for managing pagetables
      
      There are several motivations for this:
      
      1. Some of these ops will be general to all x86, and some will be
         i386/x86-64 specific.  This makes it easier to share common stuff
         while allowing separate implementations where needed.
      
      2. At the moment we must export all of paravirt_ops, but modules only
         need selected parts of it.  This allows us to export on a case by case
         basis (and also choose which export license we want to apply).
      
      3. Functional groupings make things a bit more readable.
      
      Struct paravirt_ops is now only used as a template to generate
      patch-site identifiers, and to extract function pointers for inserting
      into jmp/calls when patching.  It is only instantiated when needed.
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Cc: Andi Kleen <ak@suse.de>
      Cc: Zach Amsden <zach@vmware.com>
      Cc: Avi Kivity <avi@qumranet.com>
      Cc: Anthony Liguory <aliguori@us.ibm.com>
      Cc: "Glauber de Oliveira Costa" <glommer@gmail.com>
      Cc: Jun Nakajima <jun.nakajima@intel.com>
      93b1eab3
  2. 12 Oct, 2007 28 commits
    • Linus Torvalds's avatar
      Merge branch 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev · ab9c2322
      Linus Torvalds authored
      * 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: (119 commits)
        [libata] struct pci_dev related cleanups
        libata: use ata_exec_internal() for PMP register access
        libata: implement ATA_PFLAG_RESETTING
        libata: add @timeout to ata_exec_internal[_sg]()
        ahci: fix notification handling
        ahci: clean up PORT_IRQ_BAD_PMP enabling
        ahci: kill leftover from enabling NCQ over PMP
        libata: wrap schedule_timeout_uninterruptible() in loop
        libata: skip suppress reporting if ATA_EHI_QUIET
        libata: clear ehi description after initial host report
        pata_jmicron: match vendor and class code only
        libata: add ST9160821AS / 3.ALD to NCQ blacklist
        pata_acpi: ACPI driver support
        libata-core: Expose gtm methods for driver use
        libata: add HDT722516DLA380 to NCQ blacklist
        libata: blacklist NCQ on Seagate Barracuda ST380817AS
        [libata] Turn on ACPI by default
        libata_scsi: Fix ATAPI transfer lengths
        libata: correct handling of SRST reset sequences
        libata: Integrate ACPI-based PATA/SATA hotplug - version 5
        ...
      ab9c2322
    • Andi Kleen's avatar
      Update maintainers file · 8bd0983e
      Andi Kleen authored
      Since there is no x86-64 architecture anymore it cannot be maintained.
      Signed-off-by: default avatarAndi Kleen <ak@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8bd0983e
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 · 6a84258e
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (37 commits)
        PCI: merge almost all of pci_32.h and pci_64.h together
        PCI: X86: Introduce and enable PCI domain support
        PCI: Add 'nodomains' boot option, and pci_domains_supported global
        PCI: modify PCI bridge control ISA flag for clarity
        PCI: use _CRS for PCI resource allocation
        PCI: avoid P2P prefetch window for expansion ROMs
        PCI: skip ISA ioresource alignment on some systems
        PCI: remove transparent bridge sizing
        pci: write file size to inode on proc bus file write
        pci: use size stored in proc_dir_entry for proc bus files
        pci: implement "pci=noaer"
        PCI: fix IDE legacy mode resources
        MSI: Use correct data offset for 32-bit MSI in read_msi_msg()
        PCI: Fix incorrect argument order to list_add_tail() in PCI dynamic ID code
        PCI: i386: Compaq EVO N800c needs PCI bus renumbering
        PCI: Remove no longer correct documentation regarding MSI vector assignment
        PCI: re-enable onboard sound on "MSI K8T Neo2-FIR"
        PCI: quirk_vt82c586_acpi: Omit reading PCI revision ID
        PCI: quirk amd_8131_mmrbc: Omit reading pci revision ID
        cpqphp: Use PCI_CLASS_REVISION instead of PCI_REVISION_ID for read
        ...
      6a84258e
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6 · efefc6eb
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6: (75 commits)
        PM: merge device power-management source files
        sysfs: add copyrights
        kobject: update the copyrights
        kset: add some kerneldoc to help describe what these strange things are
        Driver core: rename ktype_edd and ktype_efivar
        Driver core: rename ktype_driver
        Driver core: rename ktype_device
        Driver core: rename ktype_class
        driver core: remove subsystem_init()
        sysfs: move sysfs file poll implementation to sysfs_open_dirent
        sysfs: implement sysfs_open_dirent
        sysfs: move sysfs_dirent->s_children into sysfs_dirent->s_dir
        sysfs: make sysfs_root a regular directory dirent
        sysfs: open code sysfs_attach_dentry()
        sysfs: make s_elem an anonymous union
        sysfs: make bin attr open get active reference of parent too
        sysfs: kill unnecessary NULL pointer check in sysfs_release()
        sysfs: kill unnecessary sysfs_get() in open paths
        sysfs: reposition sysfs_dirent->s_mode.
        sysfs: kill sysfs_update_file()
        ...
      efefc6eb
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 · 117494a1
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6: (142 commits)
        USB: fix race in autosuspend reschedule
        atmel_usba_udc: Keep track of the device status
        USB: Nikon D40X unusual_devs entry
        USB: serial core should respect driver requirements
        USB: documentation for USB power management
        USB: skip autosuspended devices during system resume
        USB: mutual exclusion for EHCI init and port resets
        USB: allow usbstorage to have LUNS greater than 2Tb
        USB: Adding support for SHARP WS011SH to ipaq.c
        USB: add atmel_usba_udc driver
        USB: ohci SSB bus glue
        USB: ehci build fixes on au1xxx, ppc-soc
        USB: add runtime frame_no quirk for big-endian OHCI
        USB: funsoft: Fix termios
        USB: visor: termios bits
        USB: unusual_devs entry for Nikon DSC D2Xs
        USB: re-remove <linux/usb_sl811.h>
        USB: move <linux/usb_gadget.h> to <linux/usb/gadget.h>
        USB: Export URB statistics for powertop
        USB: serial gadget: Disable endpoints on unload
        ...
      117494a1
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq · 4d5709a7
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq:
        [CPUFREQ] Don't take semaphore in cpufreq_quick_get()
        [CPUFREQ] Support different families in fid/did to frequency conversion
        [CPUFREQ] cpufreq_stats: misc cpuinit section annotations
        [CPUFREQ] implement !CONFIG_CPU_FREQ stub for  cpufreq_unregister_notifier()
        [CPUFREQ] mark hotplug notifier callback as __cpuinit
        [CPUFREQ] Only check for transition latency on problematic governors (kconfig fix)
        [CPUFREQ] allow ondemand and conservative cpufreq governors to be used as default
        [CPUFREQ] move policy's governor initialisation out of low-level drivers into cpufreq core
        [CPUFREQ] Longhaul - Add support for PM133 northbridge
        [CPUFREQ] x86: use num_online_nodes to get physical cpus numbers for
      4d5709a7
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/tglx/linux-2.6-x86 · 57c5b999
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/tglx/linux-2.6-x86: (40 commits)
        x86: HPET add another ICH7 PCI id
        x86: HPET force enable ICH5 suspend/resume fix
        x86: HPET force enable for ICH5
        x86: HPET try to activate force detected hpet
        x86: HPET force enable o ICH7 and later
        x86: HPET restructure hpet code for hpet force enable
        clock events: allow replacement of broadcast timer
        i386/x8664: cleanup the shared hpet code
        i386: Remove the useless #ifdef in i8253.h
        ACPI: remove the now unused ifdef code
        jiffies: remove unused macros
        x86_64: cleanup apic.c after clock events switch
        x86_64: remove now unused code
        x86: unify timex.h variants
        x86: kill 8253pit.h
        x86: disable apic timer for AMD C1E enabled CPUs
        x86: Fix irq0 / local apic timer accounting
        x86_64: convert to clock events
        x86_64: Add (not yet used) clock event functions
        x86_64: prepare idle loop for dynamic ticks
        ...
      57c5b999
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 · a6e3d7db
      Linus Torvalds authored
      * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2: (23 commits)
        ocfs2: Optionally return filldir errors
        ocfs2: Write support for directories with inline data
        ocfs2: Read support for directories with inline data
        ocfs2: Write support for inline data
        ocfs2: Read support for inline data
        ocfs2: Structure updates for inline data
        ocfs2: Cleanup dirent size check
        ocfs2: Rename cleanups
        ocfs2: Provide convenience function for ino lookup
        ocfs2: Implement ocfs2_empty_dir() as a caller of ocfs2_dir_foreach()
        ocfs2: Remove open coded readdir()
        ocfs2: Pass raw u64 to filldir
        ocfs2: Abstract out core dir listing functionality
        ocfs2: Move directory manipulation code into dir.c
        ocfs2: Small refactor of truncate zeroing code
        ocfs2: move nonsparse hole-filling into ocfs2_write_begin()
        ocfs2: Sync ocfs2_fs.h with ocfs2-tools
        [PATCH] fs/ocfs2/: removed unneeded initial value and function's return value
        ocfs2: Implement show_options()
        ocfs2: Clear slot map when umounting a local volume
        ...
      a6e3d7db
    • Linus Torvalds's avatar
      Merge branch 'isdn-cleanups' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/misc-2.6 · 42f04b6d
      Linus Torvalds authored
      * 'isdn-cleanups' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/misc-2.6:
        [ISDN] HiSax diva: split setup into three smaller functions
        [ISDN] HiSax sedlbauer: move ISAPNP and PCI code into functions of their own
        [ISDN] HiSax elsa: split huge setup function into four smaller functions
        [ISDN] HiSax avm_pci: split setup into three smaller functions
        [ISDN] Remove CONFIG_PCI ifdefs from 100% PCI source code
      42f04b6d
    • Greg Kroah-Hartman's avatar
      PCI: merge almost all of pci_32.h and pci_64.h together · f3e6f164
      Greg Kroah-Hartman authored
      It was just duplicated code...
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      f3e6f164
    • Jeff Garzik's avatar
      PCI: X86: Introduce and enable PCI domain support · a79e4198
      Jeff Garzik authored
      * fix bug in pci_read() and pci_write() which prevented PCI domain
        support from working (hardcoded domain 0).
      
      * unconditionally enable CONFIG_PCI_DOMAINS
      
      * implement pci_domain_nr() and pci_proc_domain(), as required of
        all arches when CONFIG_PCI_DOMAINS is enabled.
      
      * store domain in struct pci_sysdata, as assigned by ACPI
      
      * support "pci=nodomains"
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      a79e4198
    • Jeff Garzik's avatar
      PCI: Add 'nodomains' boot option, and pci_domains_supported global · 32a2eea7
      Jeff Garzik authored
      * Introduce pci_domains_supported global, hardcoded to zero if
        !CONFIG_PCI_DOMAINS.
      
      * Introduce 'nodomains' boot option, which clears pci_domains_supported
        on platforms that enable it by default (x86, x86-64, and others when
        they are converted to use this).
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      32a2eea7
    • Gary Hade's avatar
      PCI: modify PCI bridge control ISA flag for clarity · 11949255
      Gary Hade authored
      Modify PCI Bridge Control ISA flag for clarity
      
      This patch changes PCI_BRIDGE_CTL_NO_ISA to PCI_BRIDGE_CTL_ISA
      and modifies it's clarifying comment and locations where used.
      The change reduces the chance of future confusion since it makes
      the set/unset meaning of the bit the same in both the bridge
      control register and bridge_ctl field of the pci_bus struct.
      Signed-off-by: default avatarGary Hade <garyhade@us.ibm.com>
      Acked-by: default avatarLinas Vepstas <linas@austin.ibm.com>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      11949255
    • Gary Hade's avatar
      PCI: use _CRS for PCI resource allocation · 62f420f8
      Gary Hade authored
      Use _CRS for PCI resource allocation
      
      This patch resolves an issue where incorrect PCI memory and i/o ranges
      are being assigned to hotplugged PCI devices on some IBM systems.  The
      resource mis-allocation not only makes the PCI device unuseable but
      often makes the entire system unuseable due to resulting machine checks.
      
      The hotplug capable PCI slots on the affected systems are not located
      under a standard P2P bridge but are instead located under PCI root
      bridges or subtractive decode P2P bridges.  For example, the IBM x3850
      contains 2 hotplug capable PCI-X slots and 4 hotplug capable PCIe slots
      with the PCI-X slots each located under a PCI root bridge and the PCIe
      slots each located under a subtractive decode P2P bridge.
      
      The current i386/x86_64 PCI resource allocation code does not use _CRS
      returned resource information.  No other resource information source is
      available for slots that are not below a standard P2P bridge so
      incorrect ranges are being allocated from e820 hole causing the bad
      result.
      
      This patch causes the kernel to use _CRS returned resource info.  It is
      roughly based on a change provided by Matthew Wilcox for the ia64 kernel
      in 2005.  Due to possible buggy BIOS factor and possible yet to be
      discovered kernel issues the function is disabled by default and can be
      enabled with pci=use_crs.
      Signed-off-by: default avatarGary Hade <gary.hade@us.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      62f420f8
    • Gary Hade's avatar
      PCI: avoid P2P prefetch window for expansion ROMs · fd64cb46
      Gary Hade authored
      Avoid creating P2P prefetch window for expansion ROMs
      
      Because of the future possibility that P2P prefetch windows will contain
      address ranges above 4GB some BIOSes are providing space in the P2P
      non-prefetch windows for expansion ROMs.  This is due to expansion ROM
      BAR 32-bit limitation.  When expansion ROM BARs without BIOS assigned
      address(es) are currently found behind a P2P bridge, the kernel attempts
      to create a P2P prefetch window for them even though space for them has
      already been provided in the non-prefetch window.  _CRS on some systems
      with certain resource conservation conscious BIOSes may not provide the
      extra 1MB or more memory resource needed for the expansion ROM motivated
      prefetch window causing resource allocation errors.
      
      This change corrects the problem by removing IORESOURCE_PREFETCH from
      the expansion ROM flags initialization.  It also removes
      IORESOURCE_CACHEABLE which seems inappropriate if only non-cacheable
      memory is available.
      Signed-off-by: default avatarGary Hade <gary.hade@us.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      fd64cb46
    • Gary Hade's avatar
      PCI: skip ISA ioresource alignment on some systems · 036fff4c
      Gary Hade authored
      Skip ISA ioresource alignment on some systems
      
      To conserve limited PCI i/o resource on some IBM multi-node systems, the
      BIOS allocates (via _CRS) and expects the kernel to use addresses in
      ranges currently excluded by pcibios_align_resource() [i386/pci/i386.c].
      This change allows the kernel to use the currently excluded address
      ranges on the IBM x3800, x3850, and x3950.
      Signed-off-by: default avatarGary Hade <gary.hade@us.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      036fff4c
    • Gary Hade's avatar
      PCI: remove transparent bridge sizing · 8fa5913d
      Gary Hade authored
      Remove transparent bridge sizing.
      
      Due to code in pci_read_bridge_bases() [drivers/pci/probe.c] the child
      bus of a transparent bridge already has access to the parent bus
      resources so transparent bridge sizing appears unnecessary.  The bridge
      sizing includes alignment and granularity adjustments that can cause
      significantly more memory to be reserved from the parant bus than
      required by devices on the child bus and allotted by _CRS.
      Signed-off-by: default avatarGary Hade <gary.hade@us.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      8fa5913d
    • David Rientjes's avatar
      pci: write file size to inode on proc bus file write · ecb39080
      David Rientjes authored
      When a /proc/bus/pci file is written to, the size of that PCI device's
      configuration space must be written to the inode.  Otherwise, it is
      possible for the file to specify a size of 0 on stat if a task is holding
      the same file open.
      Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      ecb39080
    • David Rientjes's avatar
      pci: use size stored in proc_dir_entry for proc bus files · cd68602f
      David Rientjes authored
      On pci_proc_attach_device(), the size of the PCI configuration space is
      stored in the proc_dir_entry as the size of the file.  Thus, the procfs
      interface to PCI devices should use it instead of the device directly.
      Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      cd68602f
    • Randy Dunlap's avatar
      pci: implement "pci=noaer" · 7f785763
      Randy Dunlap authored
      For cases in which CONFIG_PCIEAER=y (such as distro kernels), allow users
      to disable PCIE Advanced Error Reporting by using "pci=noaer" on the
      kernel command line.
      
      This can be used to work around hardware or (kernel) software problems.
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      7f785763
    • Yoichi Yuasa's avatar
      PCI: fix IDE legacy mode resources · fd6e7321
      Yoichi Yuasa authored
      I got the following error on MIPS Cobalt.
      
      PCI: Unable to reserve I/O region #1:8@f00001f0 for device 0000:00:09.1
      pata_via 0000:00:09.1: failed to request/iomap BARs for port 0 (errno=-16)
      PCI: Unable to reserve I/O region #3:8@f0000170 for device 0000:00:09.1
      pata_via 0000:00:09.1: failed to request/iomap BARs for port 1 (errno=-16)
      pata_via 0000:00:09.1: no available native port
      
      The legacy mode IDE resources set the following order.
      
      pci_setup_device()
          Legacy mode ATA controllers have fixed addresses.
          IDE resources: 0x1F0-0x1F7, 0x3F6, 0x170-0x177, 0x376
          |
          V
      pcibios_fixup_bus()
          MIPS Cobalt PCI bus regions have the -0x10000000 offset from PCI resources.
          pcibios_fixup_bus() fix PCI bus regions.
          0x1F0 - 0x10000000 = 0xF00001F0
          |
          V
      ata_pci_init_one()
          PCI: Unable to reserve I/O region #1:8@f00001f0 for device 0000:00:09.1
      
      In some architectures, PCI bus regions have the offset from PCI resources. 
      For this reason, pci_setup_device() should set PCI bus regions to
      dev->resource[].
      
      [akpm@linux-foundation.org: use struct initialiser]
      Signed-off-by: default avatarYoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: Greg KH <greg@kroah.com>
      Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      fd6e7321
    • Roland Dreier's avatar
      MSI: Use correct data offset for 32-bit MSI in read_msi_msg() · cbf5d9e6
      Roland Dreier authored
      While reading the MSI code trying to find a reason why MSI wouldn't
      work for devices that have a 32-bit MSI address capability, I noticed
      that read_msi_msg() seems to read the message data from the wrong
      offset in this case.
      Signed-off-by: default avatarRoland Dreier <roland@digitalvampire.org>
      Acked-by: default avatarEric W. Biederman <ebiederm@xmission.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      
      cbf5d9e6
    • Michael Ellerman's avatar
      PCI: Fix incorrect argument order to list_add_tail() in PCI dynamic ID code · a56bc69a
      Michael Ellerman authored
      The code for dynamically assigning new ids to PCI drivers,
      store_new_id(), calls list_add_tail() with the list head and new node
      arguments in reversed order.
      
      The result is that every new id written essentially overwrites the
      previous list of ids.
      
      Caught with the help of Rusty's "horribly bad" list_node patch:
       http://lkml.org/lkml/2007/6/10/10Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      a56bc69a
    • Juha Laiho's avatar
      PCI: i386: Compaq EVO N800c needs PCI bus renumbering · 5b1ea82f
      Juha Laiho authored
      Force PCI bus renumbering for Compaq EVO N800c laptop, in order to get
      the cardbus slot recognised.
      Signed-off-by: default avatarJuha Laiho <Juha.Laiho@iki.fi>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      
      5b1ea82f
    • Michael Ellerman's avatar
      PCI: Remove no longer correct documentation regarding MSI vector assignment · 4904e23b
      Michael Ellerman authored
      The MSI vector reservation system described in Documentation/MSI-HOWTO.txt
      was removed by Eric in 92db6d10. Remove
      the references to it in the documentation.
      
      While we're here § 5.5.1 refers to x86 hardware requirements, so make that
      clear.
      Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
      Cc: Eric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      4904e23b
    • Johannes Goecke's avatar
      PCI: re-enable onboard sound on "MSI K8T Neo2-FIR" · 346ca04d
      Johannes Goecke authored
      On the "MSI K8T Neo2-FIR" board the BIOS disables the onboard
      soundcard, if a second PCI soundcard is present.
      
      This patch sets the korrect register bit to enable the onboard sound.
      
      Removed old code in /drivers/pci/quirks.c that only checks for the
      PCI-ID and fires on any Board with VIA 8237.
      
      New code in /arch/i386/pci/fixup.c checks the DMI-tables and only runs
      on the specific board.
      Signed-off-by: default avatarJohannes Goecke <goecke@upb.de>
      Acked-by: default avatarJean Delvare <khali@linux-fr.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      346ca04d
    • Auke Kok's avatar
      651472fb
    • Auke Kok's avatar
      PCI: quirk amd_8131_mmrbc: Omit reading pci revision ID · aa288d4d
      Auke Kok authored
      Signed-off-by: default avatarAuke Kok <auke-jan.h.kok@intel.com>
      Cc: Peter Oruba <peter.oruba@amd.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      aa288d4d