15 Oct, 2011

1 commit

  • ATS does not depend on IOV support, so move the code into
    its own file. This file will also include support for the
    PRI and PASID capabilities later.
    Also give ATS its own Kconfig variable to allow selecting it
    without IOV support.

    Reviewed-by: Bjorn Helgaas
    Signed-off-by: Joerg Roedel
    Signed-off-by: Jesse Barnes

    Joerg Roedel
     

23 Jul, 2011

2 commits

  • …/git/tip/linux-2.6-tip

    * 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    iommu/core: Fix build with INTR_REMAP=y && CONFIG_DMAR=n
    iommu/amd: Don't use MSI address range for DMA addresses
    iommu/amd: Move missing parts to drivers/iommu
    iommu: Move iommu Kconfig entries to submenu
    x86/ia64: intel-iommu: move to drivers/iommu/
    x86: amd_iommu: move to drivers/iommu/
    msm: iommu: move to drivers/iommu/
    drivers: iommu: move to a dedicated folder
    x86/amd-iommu: Store device alias as dev_data pointer
    x86/amd-iommu: Search for existind dev_data before allocting a new one
    x86/amd-iommu: Allow dev_data->alias to be NULL
    x86/amd-iommu: Use only dev_data in low-level domain attach/detach functions
    x86/amd-iommu: Use only dev_data for dte and iotlb flushing routines
    x86/amd-iommu: Store ATS state in dev_data
    x86/amd-iommu: Store devid in dev_data
    x86/amd-iommu: Introduce global dev_data_list
    x86/amd-iommu: Remove redundant device_flush_dte() calls
    iommu-api: Add missing header file

    Fix up trivial conflicts (independent additions close to each other) in
    drivers/Makefile and include/linux/pci.h

    Linus Torvalds
     
  • * 'of-pci' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
    pci/of: Consolidate pci_bus_to_OF_node()
    pci/of: Consolidate pci_device_to_OF_node()
    x86/devicetree: Use generic PCI OF matching
    microblaze/pci: Move the remains of pci_32.c to pci-common.c
    microblaze/pci: Remove powermac originated cruft
    pci/of: Match PCI devices to OF nodes dynamically

    Linus Torvalds
     

21 Jun, 2011

1 commit

  • This should ease finding similarities with different platforms,
    with the intention of solving problems once in a generic framework
    which everyone can use.

    Note: to move intel-iommu.c, the declaration of pci_find_upstream_pcie_bridge()
    has to move from drivers/pci/pci.h to include/linux/pci.h. This is handled
    in this patch, too.

    As suggested, also drop DMAR's EXPERIMENTAL tag while we're at it.

    Compile-tested on x86_64.

    Signed-off-by: Ohad Ben-Cohen
    Signed-off-by: Joerg Roedel

    Ohad Ben-Cohen
     

08 Jun, 2011

1 commit

  • powerpc has two different ways of matching PCI devices to their
    corresponding OF node (if any) for historical reasons. The ppc64 one
    does a scan looking for matching bus/dev/fn, while the ppc32 one does a
    scan looking only for matching dev/fn on each level in order to be
    agnostic to busses being renumbered (which Linux does on some
    platforms).

    This removes both and instead moves the matching code to the PCI core
    itself. It's the most logical place to do it: when a pci_dev is created,
    we know the parent and thus can do a single level scan for the matching
    device_node (if any).

    The benefit is that all archs now get the matching for free. There's one
    hook the arch might want to provide to match a PHB bus to its device
    node. A default weak implementation is provided that looks for the
    parent device device node, but it's not entirely reliable on powerpc for
    various reasons so powerpc provides its own.

    Signed-off-by: Benjamin Herrenschmidt
    Acked-by: Michal Simek
    Acked-by: Jesse Barnes

    Benjamin Herrenschmidt
     

03 Jun, 2011

1 commit


12 Apr, 2011

1 commit


19 Mar, 2011

1 commit

  • * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:
    PCI: label: remove #include of ACPI header to avoid warnings
    PCI: label: Fix compilation error when CONFIG_ACPI is unset
    PCI: pre-allocate additional resources to devices only after successful allocation of essential resources.
    PCI: introduce reset_resource()
    PCI: data structure agnostic free list function
    PCI: refactor io size calculation code
    PCI: do not create quirk I/O regions below PCIBIOS_MIN_IO for ICH
    PCI hotplug: acpiphp: set current_state to D0 in register_slot
    PCI: Export ACPI _DSM provided firmware instance number and string name to sysfs
    PCI: add more checking to ICH region quirks
    PCI: aer-inject: Override PCIe AER Mask Registers
    PCI: fix tlan build when CONFIG_PCI is not enabled
    PCI: remove quirk for pre-production systems
    PCI: Avoid potential NULL pointer dereference in pci_scan_bridge
    PCI/lpc: irq and pci_ids patch for Intel DH89xxCC DeviceIDs
    PCI: sysfs: Fix failure path for addition of "vpd" attribute

    Linus Torvalds
     

17 Mar, 2011

1 commit


05 Mar, 2011

1 commit

  • This patch exports ACPI _DSM (Device Specific Method) provided firmware
    instance number and string name of PCI devices as defined by 'PCI
    Firmware Specification Revision 3.1' section 4.6.7.( DSM for Naming a
    PCI or PCI Express Device Under Operating Systems) to sysfs.

    New files created are:
    /sys/bus/pci/devices/.../label which contains the firmware name for
    the device in question, and
    /sys/bus/pci/devices/.../acpi_index which contains the firmware device type
    instance for the given device.

    cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/acpi_index
    1
    cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/label
    Embedded Broadcom 5709C NIC 1

    cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/acpi_index
    2
    cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/label
    Embedded Broadcom 5709C NIC 2

    The ACPI _DSM provided firmware 'instance number' and 'string name' will
    be given priority if the firmware also provides 'SMBIOS type 41 device
    type instance and string'.

    Signed-off-by: Matthew Garrett
    Signed-off-by: Jordan Hargrave
    Signed-off-by: Narendra K
    Signed-off-by: Jesse Barnes

    Narendra_K@Dell.com
     

25 Nov, 2010

1 commit

  • This change enables PCI root complex support for TILEPro. Unlike
    TILE-Gx, TILEPro has no support for memory-mapped I/O, so the PCI
    support consists of hypervisor upcalls for PIO, DMA, etc. However,
    the performance is fine for the devices we have tested with so far
    (1Gb Ethernet, SATA, etc.).

    The header was tweaked to be a little bit more aggressive
    about disabling attempts to map/unmap IO port space. The hacky
    header was rolled into the header
    and the result was simplified. Both of the latter two headers were
    preliminary versions not meant for release before now - oh well.

    There is one quirk for our TILEmpower platform, which accidentally
    negotiates up to 5GT and needs to be kicked down to 2.5GT.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

29 Oct, 2010

1 commit

  • and branch 'for-linus' of git://xenbits.xen.org/people/sstabellini/linux-pvhvm

    * 'for-linus' of git://xenbits.xen.org/people/sstabellini/linux-pvhvm:
    xen: register xen pci notifier
    xen: initialize cpu masks for pv guests in xen_smp_init
    xen: add a missing #include to arch/x86/pci/xen.c
    xen: mask the MTRR feature from the cpuid
    xen: make hvc_xen console work for dom0.
    xen: add the direct mapping area for ISA bus access
    xen: Initialize xenbus for dom0.
    xen: use vcpu_ops to setup cpu masks
    xen: map a dummy page for local apic and ioapic in xen_set_fixmap
    xen: remap MSIs into pirqs when running as initial domain
    xen: remap GSIs as pirqs when running as initial domain
    xen: introduce XEN_DOM0 as a silent option
    xen: map MSIs into pirqs
    xen: support GSI -> pirq remapping in PV on HVM guests
    xen: add xen hvm acpi_register_gsi variant
    acpi: use indirect call to register gsi in different modes
    xen: implement xen_hvm_register_pirq
    xen: get the maximum number of pirqs from xen
    xen: support pirq != irq

    * 'stable/xen-pcifront-0.8.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen: (27 commits)
    X86/PCI: Remove the dependency on isapnp_disable.
    xen: Update Makefile with CONFIG_BLOCK dependency for biomerge.c
    MAINTAINERS: Add myself to the Xen Hypervisor Interface and remove Chris Wright.
    x86: xen: Sanitse irq handling (part two)
    swiotlb-xen: On x86-32 builts, select SWIOTLB instead of depending on it.
    MAINTAINERS: Add myself for Xen PCI and Xen SWIOTLB maintainer.
    xen/pci: Request ACS when Xen-SWIOTLB is activated.
    xen-pcifront: Xen PCI frontend driver.
    xenbus: prevent warnings on unhandled enumeration values
    xenbus: Xen paravirtualised PCI hotplug support.
    xen/x86/PCI: Add support for the Xen PCI subsystem
    x86: Introduce x86_msi_ops
    msi: Introduce default_[teardown|setup]_msi_irqs with fallback.
    x86/PCI: Export pci_walk_bus function.
    x86/PCI: make sure _PAGE_IOMAP it set on pci mappings
    x86/PCI: Clean up pci_cache_line_size
    xen: fix shared irq device passthrough
    xen: Provide a variant of xen_poll_irq with timeout.
    xen: Find an unbound irq number in reverse order (high to low).
    xen: statically initialize cpu_evtchn_mask_p
    ...

    Fix up trivial conflicts in drivers/pci/Makefile

    Linus Torvalds
     

18 Oct, 2010

2 commits

  • This is a port of the 2.6.18 Xen PCI front driver with fixes
    to make it build under 2.6.34 and later (for the full list of
    changes: git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen.git
    historic/xen-pcifront-0.1). It also includes the fixes
    to make it work properly.

    [v2: Updated Kconfig, removed crud, added Reviewed-by]
    [v3: Added 'static', fixed grant table leak, redid Kconfig]
    [v4: Added one more 'static' and removed comments]

    Signed-off-by: Konrad Rzeszutek Wilk
    Reviewed-by: Stefano Stabellini
    Reviewed-by: Jan Beulich

    Ryan Wilson
     
  • Replace EXTRA_CFLAGS with ccflags-y.

    Signed-off-by: matt mooney
    Signed-off-by: Jesse Barnes

    matt mooney
     

31 Jul, 2010

1 commit

  • This patch exports SMBIOS provided firmware instance and label of
    onboard PCI devices to sysfs. New files are:
    /sys/bus/pci/devices/.../label which contains the firmware name for
    the device in question, and
    /sys/bus/pci/devices/.../index which contains the firmware device type
    instance for the given device.

    Signed-off-by: Jordan Hargrave
    Signed-off-by: Narendra K
    Signed-off-by: Jesse Barnes

    Narendra K
     

11 Mar, 2010

1 commit

  • There are two parts of changes. The first is just enable
    PCI in Makefiles and in Kconfig. The second is the rest of
    missing files. I didn't want to add it with previous patch
    because that patch is too big.

    Current Microblaze toolchain has problem with weak symbols
    that's why is necessary to apply this changes to be possible
    to compile pci support.
    Xilinx knows about this problem.

    Signed-off-by: Michal Simek

    Michal Simek
     

01 Mar, 2010

1 commit


28 Feb, 2010

1 commit


23 Feb, 2010

2 commits

  • The ISDN4Linux HiSax driver family contains the last remaining users
    of the deprecated pci_find_device() function. This patch creates a
    private copy of that function in HiSax, and removes the now unused
    global function together with its controlling configuration option,
    CONFIG_PCI_LEGACY.

    Signed-off-by: Tilman Schmidt
    Signed-off-by: Jesse Barnes

    Tilman Schmidt
     
  • Currently, drivers/pci/quirks.c is built unconditionally, but if
    CONFIG_PCI_QUIRKS is unset, the only things actually built in this
    file are definitions of global variables and empty functions (due to
    the #ifdef CONFIG_PCI_QUIRKS embracing all of the code inside the
    file). This is not particularly nice and if someone overlooks
    the #ifdef CONFIG_PCI_QUIRKS, build errors are introduced.

    To clean that up, move the definitions of the global variables in
    quirks.c that are always built to pci.c, move the definitions of
    the empty functions (compiled when CONFIG_PCI_QUIRKS is unset) to
    headers (additionally make these functions static inline) and modify
    drivers/pci/Makefile so that quirks.c is only built if
    CONFIG_PCI_QUIRKS is set.

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Jesse Barnes

    Rafael J. Wysocki
     

05 Nov, 2009

1 commit

  • This patch moves PCI I/O APIC support from acpiphp to a separate driver.

    Like pciehp and shpchp, acpiphp handles PCI hotplug, i.e., addition and
    removal of PCI adapters. But in addition, acpiphp handles some ACPI
    hotplug, such as the addition of new host bridges, and the I/O APIC
    support was tangled up with that.

    I don't think the I/O APIC support needs to be in acpiphp; PCI I/O APICs
    usually appear as a function on a PCI host bridge, and we'll enumerate the
    APIC before any of the devices behind the bridge that use it.

    As far as I know, nobody actually uses I/O APIC hotplug. It depends on
    acpi_register_ioapic(), which is only implemented for ia64, and I don't
    think any vendors have supported I/O chassis hotplug yet.

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Kenji Kaneshige
    CC: Satoru Takeuchi
    CC: MUNEDA Takahiro
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     

10 Sep, 2009

1 commit

  • Shut off the long standing

    linux/drivers/pci/search.c:144: warning: 'pci_find_device' is deprecated (declared at linux/drivers/pci/search.c:136)
    linux/drivers/pci/search.c:144: warning: 'pci_find_device' is deprecated (declared at linux/drivers/pci/search.c:136)

    warnings that appear on every build when CONFIG_PCI_LEGACY is enabled.

    gcc warns for the use in EXPORT_SYMBOL

    I moved these to a separate file and disabled the warning in the Makefile for that file.

    Signed-off-by: Andi Kleen
    Signed-off-by: Jesse Barnes

    Andi Kleen
     

23 Jun, 2009

1 commit

  • * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: (74 commits)
    PCI: make msi_free_irqs() to use msix_mask_irq() instead of open coded write
    PCI: Fix the NIU MSI-X problem in a better way
    PCI ASPM: remove get_root_port_link
    PCI ASPM: cleanup pcie_aspm_sanity_check
    PCI ASPM: remove has_switch field
    PCI ASPM: cleanup calc_Lx_latency
    PCI ASPM: cleanup pcie_aspm_get_cap_device
    PCI ASPM: cleanup clkpm checks
    PCI ASPM: cleanup __pcie_aspm_check_state_one
    PCI ASPM: cleanup initialization
    PCI ASPM: cleanup change input argument of aspm functions
    PCI ASPM: cleanup misc in struct pcie_link_state
    PCI ASPM: cleanup clkpm state in struct pcie_link_state
    PCI ASPM: cleanup latency field in struct pcie_link_state
    PCI ASPM: cleanup aspm state field in struct pcie_link_state
    PCI ASPM: fix typo in struct pcie_link_state
    PCI: drivers/pci/slot.c should depend on CONFIG_SYSFS
    PCI: remove redundant __msi_set_enable()
    PCI PM: consistently use type bool for wake enable variable
    x86/ACPI: Correct maximum allowed _CRS returned resources and warn if exceeded
    ...

    Linus Torvalds
     

19 Jun, 2009

1 commit

  • There is no way to interact with a physical PCI slot without
    sysfs, so encode the dependency and prevent this build error:

    drivers/pci/slot.c: In function 'pci_hp_create_module_link':
    drivers/pci/slot.c:327: error: 'module_kset' undeclared

    This patch _should_ make pci-sysfs.o depend on CONFIG_SYSFS too,
    but we cannot (yet) because the PCI core merrily assumes the
    existence of sysfs:

    drivers/built-in.o: In function `pci_bus_add_device':
    drivers/pci/bus.c:89: undefined reference to `pci_create_sysfs_dev_files'
    drivers/built-in.o: In function `pci_stop_dev':
    drivers/pci/remove.c:24: undefined reference to `pci_remove_sysfs_dev_files'

    So do the minimal bit for now and figure out how to untangle it
    later.

    Reported-by: Randy Dunlap
    Acked-by: Randy Dunlap
    Reported-by: Stephen Rothwell
    Fix-suggested-by: Matthew Wilcox
    Signed-off-by: Alex Chiang
    Signed-off-by: Jesse Barnes

    Alex Chiang
     

21 May, 2009

1 commit

  • * Removed building setup-irq on ppc32, we don't use it anymore
    * Remove duplicate prototype for setup_grackle() code that needs it
    gets it from
    * Removed gratuitous pci_io_size type differences between ppc32/ppc64

    Signed-off-by: Kumar Gala
    Signed-off-by: Benjamin Herrenschmidt

    Kumar Gala
     

21 Mar, 2009

1 commit

  • If a device has the SR-IOV capability, initialize it (set the ARI
    Capable Hierarchy in the lowest numbered PF if necessary; calculate
    the System Page Size for the VF MMIO, probe the VF Offset, Stride
    and BARs). A lock for the VF bus allocation is also initialized if
    a PF is the lowest numbered PF.

    Reviewed-by: Matthew Wilcox
    Signed-off-by: Yu Zhao
    Signed-off-by: Jesse Barnes

    Yu Zhao
     

08 Jan, 2009

1 commit

  • When doing device assignment with KVM there's currently nothing to
    protect the device from having a driver in the host as well as the guest.
    This trivial module just binds the pci device on the host to a stub
    driver so that a real host driver can't bind to the device. It has no
    pci id table, it supports only dynamic ids.

    # echo "8086 10f5" > /sys/bus/pci/drivers/pci-stub/new_id
    # echo -n 0000:00:19.0 > /sys/bus/pci/drivers/e1000e/unbind
    # echo -n 0000:00:19.0 > /sys/bus/pci/drivers/pci-stub/bind
    # ls -l /sys/bus/pci/devices/0000:00:19.0/driver
    lrwxrwxrwx 1 root root 0 2008-11-25 19:10 /sys/bus/pci/devices/0000:00:19.0/driver -> ../../../bus/pci/drivers/pci-stub

    Cc: "Kay, Allen M"
    Cc: "Nakajima, Jun"
    Signed-off-by: Chris Wright
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Jesse Barnes

    Chris Wright
     

24 Oct, 2008

1 commit


19 Jul, 2008

1 commit


12 Jul, 2008

1 commit

  • Parse the vt-d device scope structures to find the mapping between IO-APICs
    and the interrupt remapping hardware units.

    This will be used later for enabling Interrupt-remapping for IOAPIC devices.

    Signed-off-by: Suresh Siddha
    Cc: akpm@linux-foundation.org
    Cc: arjan@linux.intel.com
    Cc: andi@firstfloor.org
    Cc: ebiederm@xmission.com
    Cc: jbarnes@virtuousgeek.org
    Cc: steiner@sgi.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     

11 Jun, 2008

1 commit

  • Currently, /sys/bus/pci/slots/ only exposes hotplug attributes when a
    hotplug driver is loaded, but PCI slots have attributes such as address,
    speed, width, etc. that are not related to hotplug at all.

    Introduce pci_slot as the primary data structure and kobject model.
    Hotplug attributes described in hotplug_slot become a secondary
    structure associated with the pci_slot.

    This patch only creates the infrastructure that allows the separation of
    PCI slot attributes and hotplug attributes. In this patch, the PCI
    hotplug core remains the only user of this infrastructure, and thus,
    /sys/bus/pci/slots/ will still only become populated when a hotplug
    driver is loaded.

    A later patch in this series will add a second user of this new
    infrastructure and demonstrate splitting the task of exposing pci_slot
    attributes from hotplug_slot attributes.

    - Make pci_slot the primary sysfs entity. hotplug_slot becomes a
    subsidiary structure.
    o pci_create_slot() creates and registers a slot with the PCI core
    o pci_slot_add_hotplug() gives it hotplug capability

    - Change the prototype of pci_hp_register() to take the bus and
    slot number (on parent bus) as parameters.

    - Remove all the ->get_address methods since this functionality is
    now handled by pci_slot directly.

    [achiang@hp.com: rpaphp-correctly-pci_hp_register-for-empty-pci-slots]
    Tested-by: Badari Pulavarty
    Acked-by: Benjamin Herrenschmidt
    [akpm@linux-foundation.org: build fix]
    [akpm@linux-foundation.org: make headers_check happy]
    [akpm@linux-foundation.org: nuther build fix]
    [akpm@linux-foundation.org: fix typo in #include]
    Signed-off-by: Alex Chiang
    Signed-off-by: Matthew Wilcox
    Cc: Greg KH
    Cc: Kristen Carlson Accardi
    Cc: Len Brown
    Acked-by: Kenji Kaneshige
    Signed-off-by: Andrew Morton
    Signed-off-by: Jesse Barnes

    Alex Chiang
     

09 Feb, 2008

1 commit

  • Add architecture support for the MN10300/AM33 CPUs produced by MEI to the
    kernel.

    This patch also adds board support for the ASB2303 with the ASB2308 daughter
    board, and the ASB2305. The only processor supported is the MN103E010, which
    is an AM33v2 core plus on-chip devices.

    [akpm@linux-foundation.org: nuke cvs control strings]
    Signed-off-by: Masakazu Urade
    Signed-off-by: Koichi Yasutake
    Signed-off-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     

03 Feb, 2008

1 commit

  • Fix following warnings:
    WARNING: o-x86_64/drivers/pci/built-in.o(.text+0xb054): Section mismatch in reference from the function cpci_configure_slot() to the function .devinit.text:pci_do_scan_bus()
    WARNING: o-x86_64/drivers/pci/built-in.o(.text+0x153ab): Section mismatch in reference from the function shpchp_configure_device() to the function .devinit.text:pci_do_scan_bus()
    WARNING: o-x86_64/drivers/pci/built-in.o(__ksymtab+0xc0): Section mismatch in reference from the variable __ksymtab_pci_do_scan_bus to the function .devinit.text:pci_do_scan_bus()

    PCI hotplug were the only user of pci_do_scan_bus()
    so moving this function to a separate file that is build
    only when we enable CONFIG_HOTPLUG_PCI.

    Signed-off-by: Sam Ravnborg
    Cc: Adrian Bunk
    Signed-off-by: Greg Kroah-Hartman

    Sam Ravnborg
     

28 Jan, 2008

1 commit

  • The common arch/powerpc code calls in to functions in setup-bus.c
    so some builds of ppc32 would fail.

    Note, ppc32 usage of setup-irq.c is limited to arch/ppc and should be
    removed when arch/ppc goes away.

    Signed-off-by: Kumar Gala
    Signed-off-by: Greg Kroah-Hartman

    Kumar Gala
     

22 Oct, 2007

2 commits

  • Actual intel IOMMU driver. Hardware spec can be found at:
    http://www.intel.com/technology/virtualization

    This driver sets X86_64 'dma_ops', so hook into standard DMA APIs. In this
    way, PCI driver will get virtual DMA address. This change is transparent to
    PCI drivers.

    [akpm@linux-foundation.org: remove unneeded cast]
    [akpm@linux-foundation.org: build fix]
    [bunk@stusta.de: fix duplicate CONFIG_DMAR Makefile line]
    Signed-off-by: Anil S Keshavamurthy
    Cc: Andi Kleen
    Cc: Peter Zijlstra
    Cc: Muli Ben-Yehuda
    Cc: "Siddha, Suresh B"
    Cc: Arjan van de Ven
    Cc: Ashok Raj
    Cc: "David S. Miller"
    Cc: Christoph Lameter
    Cc: Greg KH
    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Keshavamurthy, Anil S
     
  • This patch supports the upcomming Intel IOMMU hardware a.k.a. Intel(R)
    Virtualization Technology for Directed I/O Architecture and the hardware spec
    for the same can be found here
    http://www.intel.com/technology/virtualization/index.htm

    FAQ! (questions from akpm, answers from ak)

    > So... what's all this code for?
    >
    > I assume that the intent here is to speed things up under Xen, etc?

    Yes in some cases, but not this code. That would be the Xen version of this
    code that could potentially assign whole devices to guests. I expect this to
    be only useful in some special cases though because most hardware is not
    virtualizable and you typically want an own instance for each guest.

    Ok at some point KVM might implement this too; i likely would use this code
    for this.

    > Do we
    > have any benchmark results to help us to decide whether a merge would be
    > justified?

    The main advantage for doing it in the normal kernel is not performance, but
    more safety. Broken devices won't be able to corrupt memory by doing random
    DMA.

    Unfortunately that doesn't work for graphics yet, for that need user space
    interfaces for the X server are needed.

    There are some potential performance benefits too:

    - When you have a device that cannot address the complete address range an
    IOMMU can remap its memory instead of bounce buffering. Remapping is likely
    cheaper than copying.

    - The IOMMU can merge sg lists into a single virtual block. This could
    potentially speed up SG IO when the device is slow walking SG lists. [I
    long ago benchmarked 5% on some block benchmark with an old MPT Fusion; but
    it probably depends a lot on the HBA]

    And you get better driver debugging because unexpected memory accesses from
    the devices will cause a trappable event.

    >
    > Does it slow anything down?

    It adds more overhead to each IO so yes.

    This patch:

    Add support for early detection and parsing of DMAR's (DMA Remapping) reported
    to OS via ACPI tables.

    DMA remapping(DMAR) devices support enables independent address translations
    for Direct Memory Access(DMA) from Devices. These DMA remapping devices are
    reported via ACPI tables and includes pci device scope covered by these DMA
    remapping device.

    For detailed info on the specification of "Intel(R) Virtualization Technology
    for Directed I/O Architecture" please see
    http://www.intel.com/technology/virtualization/index.htm

    Signed-off-by: Anil S Keshavamurthy
    Cc: Andi Kleen
    Cc: Peter Zijlstra
    Cc: Muli Ben-Yehuda
    Cc: "Siddha, Suresh B"
    Cc: Arjan van de Ven
    Cc: Ashok Raj
    Cc: "David S. Miller"
    Cc: Christoph Lameter
    Cc: Greg KH
    Cc: Len Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Keshavamurthy, Anil S
     

12 Jul, 2007

1 commit


04 Oct, 2006

3 commits

  • This moves the declarations for the architecture helpers into
    include/linux/htirq.h from the generic include/linux/pci.h. Hopefully this
    will make this distinction clearer.

    htirq.h is included where it is needed.

    The dependency on the msi code is fixed and removed.

    The Makefile is tidied up.

    Signed-off-by: Eric W. Biederman
    Cc: Ingo Molnar
    Cc: Tony Luck
    Cc: Andi Kleen
    Cc: Thomas Gleixner
    Cc: Greg KH
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • This is just a few makefile tweaks and some file renames.

    Signed-off-by: Eric W. Biederman
    Cc: Ingo Molnar
    Cc: Tony Luck
    Cc: Andi Kleen
    Cc: Thomas Gleixner
    Cc: Greg KH
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • This patch implements two functions ht_create_irq and ht_destroy_irq for
    use by drivers. Several other functions are implemented as helpers for
    arch specific irq_chip handlers.

    The driver for the card I tested this on isn't yet ready to be merged.
    However this code is and hypertransport irqs are in use in a few other
    places in the kernel. Not that any of this will get merged before 2.6.19

    Because the ipath-ht400 is slightly out of spec this code will need to be
    generalized to work there.

    I think all of the powerpc uses are for a plain interrupt controller in a
    chipset so support for native hypertransport devices is a little less
    interesting.

    However I think this is a half way decent model on how to separate arch
    specific and generic helper code, and I think this is a functional model of
    how to get the architecture dependencies out of the msi code.

    [akpm@osdl.org: Kconfig fix]
    Signed-off-by: Eric W. Biederman
    Cc: Greg KH
    Cc: Andi Kleen
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman