10 May, 2013

1 commit

  • Pull slave-dmaengine updates from Vinod Koul:
    "This time we have dmatest improvements from Andy along with dw_dmac
    fixes. He has also done support for acpi for dmanegine.

    Also we have bunch of fixes going in DT support for dmanegine for
    various folks. Then Haswell and other ioat changes from Dave and
    SUDMAC support from Shimoda."

    * 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (53 commits)
    dma: tegra: implement suspend/resume callbacks
    dma:of: Use a mutex to protect the of_dma_list
    dma: of: Fix of_node reference leak
    dmaengine: sirf: move driver init from module_init to subsys_initcall
    sudmac: add support for SUDMAC
    dma: sh: add Kconfig
    at_hdmac: move to generic DMA binding
    ioatdma: ioat3_alloc_sed can be static
    ioatdma: Adding write back descriptor error status support for ioatdma 3.3
    ioatdma: S1200 platforms ioatdma channel 2 and 3 falsely advertise RAID cap
    ioatdma: Adding support for 16 src PQ ops and super extended descriptors
    ioatdma: Removing hw bug workaround for CB3.x .2 and earlier
    dw_dmac: add ACPI support
    dmaengine: call acpi_dma_request_slave_channel as well
    dma: acpi-dma: introduce ACPI DMA helpers
    dma: of: Remove unnecessary list_empty check
    DMA: OF: Check properties value before running be32_to_cpup() on it
    DMA: of: Constant names
    ioatdma: skip silicon bug workaround for pq_align for cb3.3
    ioatdma: Removing PQ val disable for cb3.3
    ...

    Linus Torvalds
     

16 Apr, 2013

1 commit

  • There is a new generic API to get a DMA channel for a slave device (commit
    9a6cecc8 "dmaengine: add helper function to request a slave DMA channel"). In
    similar fashion to the DT case (commit aa3da644 "of: Add generic device tree
    DMA helpers") we introduce helpers to the DMAC drivers which are enumerated by
    ACPI.

    The proposed extension provides the following API calls:
    acpi_dma_controller_register(), devm_acpi_dma_controller_register()
    acpi_dma_controller_free(), devm_acpi_dma_controller_free()
    acpi_dma_simple_xlate()
    acpi_dma_request_slave_chan_by_index()
    acpi_dma_request_slave_chan_by_name()

    The first two should be used, for example, at probe() and remove() of the
    corresponding DMAC driver. At the register stage the DMAC driver supplies a
    custom xlate() function to translate a struct dma_spec into struct dma_chan.

    Accordingly to the ACPI Fixed DMA resource specification the only two pieces of
    information the slave device has are the channel id and the request line (slave
    id). Those two are represented by struct dma_spec. The
    acpi_dma_request_slave_chan_by_index() provides access to the specifix FixedDMA
    resource by its index. Whereas dma_request_slave_channel() takes a string
    parameter to identify the DMA resources required by the slave device. To make a
    slave device driver work with both DeviceTree and ACPI enumeration a simple
    convention is established: "tx" corresponds to the index 0 and "rx" to the
    index 1. In case of robust configuration the slave device driver unfortunately
    needs to call acpi_dma_request_slave_chan_by_index() directly.

    Additionally the patch provides "managed" version of the register/free pair
    i.e. devm_acpi_dma_controller_register() and devm_acpi_dma_controller_free().
    Usually, the driver uses only devm_acpi_dma_controller_register().

    Signed-off-by: Andy Shevchenko
    Reviewed-by: Mika Westerberg
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Vinod Koul

    Andy Shevchenko
     

12 Apr, 2013

1 commit

  • Instead of open-coding ACPI GPIO resource lookup in each driver, we provide
    a helper function analogous to Device Tree version that allows drivers to
    specify which GPIO resource they are interested (using an index to the GPIO
    resources). The function then finds out the correct resource, translates
    the ACPI GPIO number to the corresponding Linux GPIO number and returns
    that.

    Signed-off-by: Mika Westerberg
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Linus Walleij

    Mika Westerberg
     

13 Feb, 2013

1 commit


30 Jan, 2013

1 commit

  • Introduce struct acpi_scan_handler for representing objects that
    will do configuration tasks depending on ACPI device nodes'
    hardware IDs (HIDs).

    Currently, those tasks are done either directly by the ACPI namespace
    scanning code or by ACPI device drivers designed specifically for
    this purpose. None of the above is desirable, however, because
    doing that directly in the namespace scanning code makes that code
    overly complicated and difficult to follow and doing that in
    "special" device drivers leads to a great deal of confusion about
    their role and to confusing interactions with the driver core (for
    example, sysfs directories are created for those drivers, but they
    are completely unnecessary and only increase the kernel's memory
    footprint in vain).

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Yinghai Lu
    Acked-by: Yasuaki Ishimatsu
    Acked-by: Toshi Kani

    Rafael J. Wysocki
     

04 Jan, 2013

1 commit

  • CONFIG_HOTPLUG is going away as an option. As a result, the __dev*
    markings need to be removed.

    This change removes the use of __devinit, __devexit_p, __devinitdata,
    __devinitconst, and __devexit from the kernel documentation.

    Based on patches originally written by Bill Pemberton, but redone by me
    in order to handle some of the coding style issues better, by hand.

    Cc: Bill Pemberton
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

15 Dec, 2012

1 commit

  • Pull x86 ACPI update from Peter Anvin:
    "This is a patchset which didn't make the last merge window. It adds a
    debugging capability to feed ACPI tables via the initramfs.

    On a grander scope, it formalizes using the initramfs protocol for
    feeding arbitrary blobs which need to be accessed early to the kernel:
    they are fed first in the initramfs blob (lots of bootloaders can
    concatenate this at boot time, others can use a single file) in an
    uncompressed cpio archive using filenames starting with "kernel/".

    The ACPI maintainers requested that this patchset be fed via the x86
    tree rather than the ACPI tree as the footprint in the general x86
    code is much bigger than in the ACPI code proper."

    * 'x86-acpi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    X86 ACPI: Use #ifdef not #if for CONFIG_X86 check
    ACPI: Fix build when disabled
    ACPI: Document ACPI table overriding via initrd
    ACPI: Create acpi_table_taint() function to avoid code duplication
    ACPI: Implement physical address table override
    ACPI: Store valid ACPI tables passed via early initrd in reserved memblock areas
    x86, acpi: Introduce x86 arch specific arch_reserve_mem_area() for e820 handling
    lib: Add early cpio decoder

    Linus Torvalds
     

08 Dec, 2012

1 commit

  • Add a document that describes how to take advantage of ACPI enumeration for
    buses like platform, I2C and SPI. In addition to that we document how to
    translate ACPI GpioIo and GpioInt resources to be useful in Linux device
    drivers.

    Signed-off-by: Mika Westerberg
    Signed-off-by: Rafael J. Wysocki

    Mika Westerberg
     

01 Oct, 2012

1 commit


30 Mar, 2012

1 commit

  • Add description of parameter notrigger in the einj.txt.
    One can utilize this new parameter to do some SRAR injection
    test. Pay attention, the operation is highly depended on the
    BIOS implementation. If no proper BIOS supports it, even if
    enabling this parameter, expected result will not happen.

    v2:
    Update the documentation suggested by Tony

    Suggested-by: Tony Luck
    Signed-off-by: Chen Gong
    Signed-off-by: Len Brown

    Chen Gong
     

18 Jan, 2012

1 commit

  • ACPI 5.0 provides extensions to the EINJ mechanism to specify the
    target for the error injection - by APICID for cpu related errors,
    by address for memory related errors, and by segment/bus/device/function
    for PCIe related errors. Also extensions for vendor specific error
    injections.

    Tested-by: Chen Gong
    Signed-off-by: Tony Luck
    Signed-off-by: Len Brown

    Tony Luck
     

03 Aug, 2011

1 commit

  • EINJ parameter support is only usable for some specific BIOS.
    Originally, it is expected to have no harm for BIOS does not support
    it. But now, we found it will cause issue (memory overwriting) for
    some BIOS. So param support is disabled by default and only enabled
    when newly added module parameter named "param_extension" is
    explicitly specified.

    Signed-off-by: Huang Ying
    Cc: Matthew Garrett
    Acked-by: Don Zickus
    Acked-by: Tony Luck
    Signed-off-by: Len Brown

    Huang Ying
     

29 May, 2011

1 commit

  • With /sys/kernel/debug/acpi/custom_method root can write
    to arbitrary memory and increase his priveleges, even if
    these are restricted.

    -> Make this an own debug .config option and warn about the
    security issue in the config description.

    -> Still keep acpi/debugfs.c which now only creates an empty
    /sys/kernel/debug/acpi directory. There might be other
    users of it later.

    Signed-off-by: Thomas Renninger
    Acked-by: Rafael J. Wysocki
    Acked-by: rui.zhang@intel.com
    Signed-off-by: Len Brown

    Thomas Renninger
     

22 Mar, 2011

1 commit

  • The AER error information printing support is implemented in
    drivers/pci/pcie/aer/aer_print.c. So some string constants, functions
    and macros definitions can be re-used without being exported.

    The original PCIe AER error information printing function is not
    re-used directly because the overall format is quite different. And
    changing the original printing format may make some original users'
    scripts broken.

    Signed-off-by: Huang Ying
    CC: Jesse Barnes
    CC: Zhang Yanmin
    Signed-off-by: Len Brown

    Huang Ying
     

14 Dec, 2010

1 commit

  • In APEI, Hardware error information reported by firmware to Linux
    kernel is in the data structure of APEI generic error status (struct
    acpi_hes_generic_status). While now printk is used by Linux kernel to
    report hardware error information to user space.

    So, this patch adds printing support for the data structure, so that
    the corresponding hardware error information can be reported to user
    space via printk.

    PCIe AER information printing is not implemented yet. Will refactor the
    original PCIe AER information printing code to avoid code duplicating.

    The output format is as follow:

    :=
    APEI generic hardware error status
    severity: ,
    section: , severity: ,
    flags:

    fru_id:
    fru_text:
    section_type:

    * := recoverable | fatal | corrected | info

    # :=
    [primary][, containment warning][, reset][, threshold exceeded]\
    [, resource not accessible][, latent error]

    := generic processor error | memory error | \
    PCIe error | unknown,

    :=
    | | \
    |

    :=
    [processor_type: , ]
    [processor_isa: , ]
    [error_type:
    ]
    [operation: , ]
    [flags:
    ]
    [level: ]
    [version_info: ]
    [processor_id: ]
    [target_address: ]
    [requestor_id: ]
    [responder_id: ]
    [IP: ]

    * := IA32/X64 | IA64

    * := IA32 | IA64 | X64

    # :=
    [cache error][, TLB error][, bus error][, micro-architectural error]

    * := unknown or generic | data read | data write | \
    instruction execution

    # :=
    [restartable][, precise IP][, overflow][, corrected]

    :=
    [error_status: ]
    [physical_address: ]
    [physical_address_mask: ]
    [node: ]
    [card: ]
    [module: ]
    [bank: ]
    [device: ]
    [row: ]
    [column: ]
    [bit_position: ]
    [requestor_id: ]
    [responder_id: ]
    [target_id: ]
    [error_type: , ]

    * :=
    unknown | no error | single-bit ECC | multi-bit ECC | \
    single-symbol chipkill ECC | multi-symbol chipkill ECC | master abort | \
    target abort | parity error | watchdog timeout | invalid address | \
    mirror Broken | memory sparing | scrub corrected error | \
    scrub uncorrected error

    :=
    [port_type: , ]
    [version: .]
    [command: , status: ]
    [device_id: ::.
    slot:
    secondary_bus:
    vendor_id: , device_id:
    class_code: ]
    [serial number: , ]
    [bridge: secondary_status: , control: ]

    * := PCIe end point | legacy PCI end point | \
    unknown | unknown | root port | upstream switch port | \
    downstream switch port | PCIe to PCI/PCI-X bridge | \
    PCI/PCI-X to PCIe bridge | root complex integrated endpoint device | \
    root complex event collector

    Where, [] designate corresponding content is optional

    All description with * has the following format:

    field: ,

    Where value of should be the position of "string" in description. Otherwise, will be "unknown".

    All description with # has the following format:

    field:

    Where each string in corresponding to one set bit of
    . The bit position is the position of "string" in description.

    For more detailed explanation of every field, please refer to UEFI
    specification version 2.3 or later, section Appendix N: Common
    Platform Error Record.

    Signed-off-by: Huang Ying
    Signed-off-by: Len Brown

    Huang Ying
     

15 Aug, 2010

1 commit

  • Introduce module parameter acpi.aml_debug_output.

    With acpi.aml_debug_output set, we can get AML debug object output
    (Store (AAA, Debug)), even with CONFIG_ACPI_DEBUG cleared.

    Together with the runtime custom method mechanism,
    we can debug AML code problems without rebuilding the kernel.

    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown

    Zhang Rui
     

20 May, 2010

2 commits

  • Some hardware error injection needs parameters, for example, it is
    useful to specify memory address and memory address mask for memory
    errors.

    Some BIOSes allow parameters to be specified via an unpublished
    extension. This patch adds support to it. The parameters will be
    ignored on machines without necessary BIOS support.

    Signed-off-by: Huang Ying
    Signed-off-by: Andi Kleen
    Signed-off-by: Len Brown

    Huang Ying
     
  • Add document for APEI, including kernel parameters and EINJ debug file
    sytem interface.

    Signed-off-by: Huang Ying
    Signed-off-by: Andi Kleen
    Signed-off-by: Len Brown

    Huang Ying
     

11 Dec, 2009

1 commit

  • Introduce a new debugfs I/F (/sys/kernel/debug/acpi/custom_method) for ACPI,
    which can be used to customize the ACPI control methods at runtime.

    We can use this to debug the AML code level bugs instead of overriding the
    whole DSDT table, without rebuilding/rebooting kernel any more.

    Detailed description about how to use this debugfs I/F is stated in
    Documentation/acpi/method-customizing.txt

    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown

    Zhang Rui
     

08 Nov, 2008

1 commit

  • Reformat acpi.debug_layer and acpi.debug_level documentation so it's
    more readable, add some clues about how to figure out the mask bits that
    enable a specific ACPI_DEBUG_PRINT statement, and include some useful
    examples.

    Move the list of masks to Documentation/acpi/debug.txt (these are
    copies of the authoritative values in acoutput.h and acpi_drivers.h).

    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Len Brown

    Bjorn Helgaas
     

16 Mar, 2008

1 commit

  • This essentially reverts commit 71fc47a9adf8ee89e5c96a47222915c5485ac437
    ("ACPI: basic initramfs DSDT override support"), because the code simply
    isn't ready.

    It did ugly things to the init sequence to populate the rootfs image
    early, but that just ended up showing other problems with the whole
    approach. The fact is, the VFS layer simply isn't initialized this
    early, and the relevant ACPI code should either run much later, or this
    shouldn't be done at all.

    For 2.6.25, we'll just pick the latter option. We can revisit this
    concept later if necessary.

    Cc: Dave Hansen
    Cc: Tilman Schmidt
    Cc: Andrew Morton
    Cc: Thomas Renninger
    Cc: Eric Piel
    Cc: Len Brown
    Cc: Christoph Hellwig
    Cc: Markus Gaugusch
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

07 Feb, 2008

3 commits


20 Nov, 2007

1 commit