16 Sep, 2009

2 commits

  • * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: (75 commits)
    PCI hotplug: clean up acpi_run_hpp()
    PCI hotplug: acpiphp: use generic pci_configure_slot()
    PCI hotplug: shpchp: use generic pci_configure_slot()
    PCI hotplug: pciehp: use generic pci_configure_slot()
    PCI hotplug: add pci_configure_slot()
    PCI hotplug: clean up acpi_get_hp_params_from_firmware() interface
    PCI hotplug: acpiphp: don't cache hotplug_params in acpiphp_bridge
    PCI hotplug: acpiphp: remove superfluous _HPP/_HPX evaluation
    PCI: Clear saved_state after the state has been restored
    PCI PM: Return error codes from pci_pm_resume()
    PCI: use dev_printk in quirk messages
    PCI / PCIe portdrv: Fix pcie_portdrv_slot_reset()
    PCI Hotplug: convert acpi_pci_detect_ejectable() to take an acpi_handle
    PCI Hotplug: acpiphp: find bridges the easy way
    PCI: pcie portdrv: remove unused variable
    PCI / ACPI PM: Propagate wake-up enable for devices w/o ACPI support
    ACPI PM: Replace wakeup.prepared with reference counter
    PCI PM: Introduce device flag wakeup_prepared
    PCI / ACPI PM: Rework some debug messages
    PCI PM: Simplify PCI wake-up code
    ...

    Fixed up conflict in arch/powerpc/kernel/pci_64.c due to OF device tree
    scanning having been moved and merged for the 32- and 64-bit cases. The
    'needs_freset' initialization added in 6e19314cc ("PCI/powerpc: support
    PCIe fundamental reset") is now in arch/powerpc/kernel/pci_of_scan.c.

    Linus Torvalds
     
  • * 'x86-txt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, intel_txt: clean up the impact on generic code, unbreak non-x86
    x86, intel_txt: Handle ACPI_SLEEP without X86_TRAMPOLINE
    x86, intel_txt: Fix typos in Kconfig help
    x86, intel_txt: Factor out the code for S3 setup
    x86, intel_txt: tboot.c needs
    intel_txt: Force IOMMU on for Intel TXT launch
    x86, intel_txt: Intel TXT Sx shutdown support
    x86, intel_txt: Intel TXT reboot/halt shutdown support
    x86, intel_txt: Intel TXT boot support

    Linus Torvalds
     

15 Sep, 2009

13 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (52 commits)
    Input: bcm5974 - silence uninitialized variables warnings
    Input: wistron_btns - add keymap for AOpen 1557
    Input: psmouse - use boolean type
    Input: i8042 - use platform_driver_probe
    Input: i8042 - use boolean type where it makes sense
    Input: i8042 - try disabling and re-enabling AUX port at close
    Input: pxa27x_keypad - allow modifying keymap from userspace
    Input: sunkbd - fix formatting
    Input: i8042 - bypass AUX IRQ delivery test on laptops
    Input: wacom_w8001 - simplify querying logic
    Input: atkbd - allow setting force-release bitmap via sysfs
    Input: w90p910_keypad - move a dereference below a NULL test
    Input: add twl4030_keypad driver
    Input: matrix-keypad - add function to build device keymap
    Input: tosakbd - fix cleaning up KEY_STROBEs after error
    Input: joydev - validate axis/button maps before clobbering current ones
    Input: xpad - add USB ID for the drumkit controller from Rock Band
    Input: w90p910_keypad - rename driver name to match platform
    Input: add new driver for Sentelic Finger Sensing Pad
    Input: psmouse - allow defining read-only attributes
    ...

    Linus Torvalds
     
  • This patch cleans up acpi_run_hpp() and follows the style of acpi_run_hpx():
    - remove unnecessary METHOD_NAME__HPP #define
    - use ACPI_ALLOCATE_BUFFER rather than evaluating _HPP twice
    - validate _HPP package length (defined as 4 by the spec)
    - avoid ref to undefined data if FW provides < 4 elements
    - remove temporary nui[] array

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Alex Chiang
    Reviewed-by: Kenji Kaneshige
    Acked-by: Kenji Kaneshige
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • Use the generic pci_configure_slot() rather than the acpiphp-specific
    decode_hpp() and program_hpp().

    Unlike the previous acpiphp-specific code, pci_configure_slot() programs
    PCIe settings when an _HPX method provides them, so acpiphp-managed PCIe
    devices can now be configured.

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Kenji Kaneshige
    Acked-by: Kenji Kaneshige
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • Use the generic pci_configure_slot() rather than the SHPC-specific
    program_fw_provided_values().

    Unlike the previous SHPC-specific code, pci_configure_slot() programs PCIe
    settings when an _HPX method provides them, so if it's possible to have an
    SHPC-managed PCIe device, it can now be configured.

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Kenji Kaneshige
    Acked-by: Kenji Kaneshige
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • Use the generic pci_configure_slot() rather than the PCIe-specific
    program_fw_provided_values().

    Unlike the previous pciehp-specific code, we now walk through subordinate
    devices even if there are no settings for the parent. This should be
    harmless because we won't change anything unless we discover firmware
    settings farther down.

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Kenji Kaneshige
    Acked-by: Kenji Kaneshige
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • This patch adds a new pci_configure_slot() function that programs the
    PCI bus characteristics for a newly-added device. This is based on
    code in pciehp_pci.c, but should be generic enough to be used by pciehp,
    shpchp, and acpiphp.

    The hotplug_params struct and the program_hpp_typeX() functions are based
    on the ACPI definitions, but they aren't really ACPI-specific, and there's
    no alternate implementation, so I don't see the need to abstract them yet.

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Alex Chiang
    Reviewed-by: Kenji Kaneshige
    Acked-by: Kenji Kaneshige
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • This patch makes acpi_get_hp_params_from_firmware() take a
    pci_dev rather than a pci_bus and makes it return a standard
    int errno rather than acpi_status.

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Kenji Kaneshige
    Acked-by: Kenji Kaneshige
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • We always look up hotplug_params with decode_hpp() immediately before using
    them, so we don't need to save them in the acpiphp_bridge struct. This
    patch follows the example of program_fw_provided_values() in pciehp_pci.c
    and shpchp_pci.c by just keeping the params on the stack while we need them.

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Alex Chiang
    Reviewed-by: Kenji Kaneshige
    Acked-by: Kenji Kaneshige
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • decode_hpp() looks up hotplug PCI parameters from ACPI and saves them
    in the acpiphp_bridge structure. These parameters (in bridge->hpp) are
    only used by the acpiphp_set_hpp_values() -> program_hpp() path. In
    that path, we always call decode_hpp() before program_hpp(), so there's
    no need to do it in init_bridge_misc().

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Alex Chiang
    Reviewed-by: Kenji Kaneshige
    Acked-by: Kenji Kaneshige
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • Some PCI devices fail if their standard configuration registers are
    restored twice in a row. Prevent this from happening by making
    pci_restore_state() clear the saved_state flag of the device right
    after the device's standard configuration registers have been
    populated with the previously saved values.

    Simplify PCI PM callbacks by removing the direct clearing of
    state_saved from them, as it shouldn't be necessary any more (except
    in pci_pm_thaw(), where it has to be cleared, so that the values saved
    during the "freeze" phase of hibernation are not used later by mistake).

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

    Rafael J. Wysocki
     
  • Currently pci_pm_resume() always returns 0, which makes the error
    variable defined in there a bit pointless. Make pci_pm_resume()
    return error codes obtained from drivers' callbacks.

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

    Rafael J. Wysocki
     
  • Convert quirk printks to dev_printk().

    Signed-off-by: Bjorn Helgaas
    CC: Olaf Dabrunz
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • After commit c82f63e411f1b58427c103bd95af2863b1c96dd1
    (PCI: check saved state before restore) pcie_portdrv_slot_reset()
    may not work correctly if dev->error_state is equal to
    pci_channel_io_frozen, because dev->state_saved need not be set at
    that time. Fix this issue by setting dev->state_saved before
    pci_restore_state() is called in pcie_portdrv_slot_reset().

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

    Rafael J. Wysocki
     

14 Sep, 2009

2 commits

  • acpi_pci_detect_ejectable() goes through effort to convert its
    struct pci_bus arg to an acpi_handle, but every time we use this
    interface, we already have the handle available.

    So let's just use the handle instead of converting back and forth.

    Reviewed-by: Kenji Kaneshige
    Tested-by: Kenji Kaneshige
    Signed-off-by: Alex Chiang
    Signed-off-by: Jesse Barnes

    Alex Chiang
     
  • Instead of constantly evaluating _ADR and _SEG over and over again,
    let's simplify our lives by using:

    acpi_pci_find_root() for root bridges
    acpi_get_pci_dev() for p2p bridges

    This change eliminates some copy 'n paste code and also allows us
    to simplify some internal interfaces.

    Reviewed-by: Kenji Kaneshige
    Tested-by: Kenji Kaneshige
    Cc: Bjorn Helgaas
    Signed-off-by: Alex Chiang
    Signed-off-by: Jesse Barnes

    Alex Chiang
     

12 Sep, 2009

2 commits

  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: (25 commits)
    pata_rz1000: use printk_once
    ahci: kill @force_restart and refine CLO for ahci_kick_engine()
    pata_cs5535: add pci id for AMD based CS5535 controllers
    ahci: Add AMD SB900 SATA/IDE controller device IDs
    drivers/ata: use resource_size
    sata_fsl: Defer non-ncq commands when ncq commands active
    libata: add SATA PMP revision information for spec 1.2
    libata: fix off-by-one error in ata_tf_read_block()
    ahci: Gigabyte GA-MA69VM-S2 can't do 64bit DMA
    ahci: make ahci_asus_m2a_vm_32bit_only() quirk more generic
    dmi: extend dmi_get_year() to dmi_get_date()
    dmi: fix date handling in dmi_get_year()
    libata: unbreak TPM filtering by reorganizing ata_scsi_pass_thru()
    sata_sis: convert to slave_link
    sata_sil24: always set protocol override for non-ATAPI data commands
    libata: Export AHCI capabilities
    libata: Delegate nonrot flag setting to SCSI
    [libata] Add pata_rdc driver for RDC ATA devices
    drivers/ata: Remove unnecessary semicolons
    libata: remove spindown skipping and warning
    ...

    Linus Torvalds
     
  • * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    pci/intr_remapping: Allocate irq_iommu on node
    irq: Add irq_node() primitive
    irq: Make sure irq_desc for legacy irq get correct node setting
    genirq: Add prototype for handle_nested_irq()
    irq: Remove superfluous NULL pointer check in check_irq_resend()
    irq: Clean up by removing irqfixup MODULE_PARM_DESC()
    genirq: Fix comment describing suspend_device_irqs()
    genirq: Remove obsolete defines and typedefs

    Linus Torvalds
     

11 Sep, 2009

2 commits


10 Sep, 2009

19 commits

  • Some PCI devices (not PCI Express), like PCI add-on cards, can
    generate PME#, but they don't have any special platform wake-up
    support. For this reason, even if they generate PME# to wake up the
    system from a sleep state, wake-up events are not generated by the
    platform.

    It turns out that, at least on some systems, PCI bridges and the PCI
    host bridge have ACPI GPEs associated with them that, if enabled to
    generate wake-up events, allow the system to wake up if one of the
    add-on devices asserts PME# while the system is in a sleep state.
    Following this observation, if a PCI device without direct ACPI
    wake-up support is prepared to wake up the system during a transition
    into a sleep state (eg. suspend to RAM), try to configure the bridges
    on the path from the device to the root bridge to wake-up the system.

    Reviewed-by: Matthew Garrett
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Jesse Barnes

    Rafael J. Wysocki
     
  • Introduce a new PCI device flag, wakeup_prepared, to prevent PCI
    wake-up preparation code from being executed twice in a row for the
    same device and for the same purpose.

    Reviewed-by: Matthew Garrett
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Jesse Barnes

    Rafael J. Wysocki
     
  • Move a debug message from acpi_pci_sleep_wake() to
    acpi_pm_device_sleep_wake() and use the standard dev_*() macros
    in there.

    Reviewed-by: Matthew Garrett
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Jesse Barnes

    Rafael J. Wysocki
     
  • Rework the PCI wake-up code so that it's easier to read without
    changing the functionality.

    Reviewed-by: Matthew Garrett
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Jesse Barnes

    Rafael J. Wysocki
     
  • In general a BIOS may goof or we may hotplug in a hotplug controller.
    In either case the kernel needs to reserve resources for plugging
    in more devices in the future instead of creating a minimal resource
    assignment.

    We already do this for cardbus bridges I am just adding a variant
    for pcie bridges.

    v2: Make testing for pcie hotplug bridges based on a flag.

    So far we only set the flag for pcie but a header_quirk
    could easily be added for the non-standard pci hotplug
    bridges.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Jesse Barnes

    Eric W. Biederman
     
  • There is a very old quirk for the intel E7502 E7320 and E7525 memory
    controller hubs that disables usage of msi interrupts on pcie hotplug
    bridges of those devices, and disables changing the affinity of irqs.

    Today all we have to do to disable msi on a specific device is to set
    dev->no_msi, which is much more straightforward than the previous
    logic.

    The re-running of this fixup after pci hotplug happens below these
    devices is totally bogus. All of the state we change is pure software
    state and we don't change the hardware at all. Which means hotplug on
    the lower devices doesn't have a chance to change this state. So we
    can safely remove the special case from the pciehp driver and the pcie
    portdriver.

    I suspect the special case was someone's expermental debug code that
    slipped in. Certainly it isn't mentioned in commit
    6fb8880a61510295aece04a542767161f624dffe aka BKrev:
    41966101LJ_ogfOU0m2aE6teZfQnuQ where the code first appears.

    Reviewed-by: Kenji Kaneshige
    Signed-off-by: "Eric W. Biederman"
    Signed-off-by: Jesse Barnes

    Eric W. Biederman
     
  • This patch is required not to lost error records by action invoked on
    error recovery, such as slot reset etc.

    Following sample (real machine + dummy record injected by aer-inject)
    shows that record of 28:00.1 could not be retrieved by recovery of 28:00.0:

    - Before:

    pcieport-driver 0000:00:02.0: AER: Multiple Uncorrected (Non-Fatal) error received: id=2801
    e1000e 0000:28:00.0: PCIE Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, id=2800(Receiver ID)
    e1000e 0000:28:00.0: device [8086:1096] error status/mask=00001000/00100000
    e1000e 0000:28:00.0: [12] Poisoned TLP (First)
    e1000e 0000:28:00.0: TLP Header: 00000000 00000001 00000002 00000003
    e1000e 0000:28:00.0: broadcast error_detected message
    e1000e 0000:28:00.0: broadcast slot_reset message
    e1000e 0000:28:00.0: setting latency timer to 64
    e1000e 0000:28:00.0: restoring config space at offset 0x1 (was 0x100547, writing 0x100147)
    e1000e 0000:28:00.0: PME# disabled
    e1000e 0000:28:00.0: PME# disabled
    e1000e 0000:28:00.1: setting latency timer to 64
    e1000e 0000:28:00.1: restoring config space at offset 0x1 (was 0x100547, writing 0x100147)
    e1000e 0000:28:00.1: PME# disabled
    e1000e 0000:28:00.1: PME# disabled
    e1000e 0000:28:00.0: broadcast resume message
    e1000e 0000:28:00.0: AER driver successfully recovered
    e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX

    - After:

    pcieport-driver 0000:00:02.0: AER: Multiple Uncorrected (Non-Fatal) error received: id=2801
    e1000e 0000:28:00.0: PCIE Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, id=2800(Receiver ID)
    e1000e 0000:28:00.0: device [8086:1096] error status/mask=00001000/00100000
    e1000e 0000:28:00.0: [12] Poisoned TLP (First)
    e1000e 0000:28:00.0: TLP Header: 00000000 00000001 00000002 00000003
    e1000e 0000:28:00.1: PCIE Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, id=2801(Receiver ID)
    e1000e 0000:28:00.1: device [8086:1096] error status/mask=00081000/00100000
    e1000e 0000:28:00.1: [12] Poisoned TLP (First)
    e1000e 0000:28:00.1: [19] ECRC
    e1000e 0000:28:00.1: TLP Header: 00000000 00000001 00000002 00000003
    e1000e 0000:28:00.1: Error of this Agent(2801) is reported first
    e1000e 0000:28:00.0: broadcast error_detected message
    e1000e 0000:28:00.0: broadcast slot_reset message
    e1000e 0000:28:00.0: setting latency timer to 64
    e1000e 0000:28:00.0: restoring config space at offset 0x1 (was 0x100547, writing 0x100147)
    e1000e 0000:28:00.0: PME# disabled
    e1000e 0000:28:00.0: PME# disabled
    e1000e 0000:28:00.1: setting latency timer to 64
    e1000e 0000:28:00.1: restoring config space at offset 0x1 (was 0x100547, writing 0x100147)
    e1000e 0000:28:00.1: PME# disabled
    e1000e 0000:28:00.1: PME# disabled
    e1000e 0000:28:00.0: broadcast resume message
    e1000e 0000:28:00.0: AER driver successfully recovered
    e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX

    Signed-off-by: Hidetoshi Seto
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • Use dev_printk like format.

    Sample (real machine + dummy error injected by aer-inject):

    - Before:

    +------ PCI-Express Device Error ------+
    Error Severity : Corrected
    PCIE Bus Error type : Data Link Layer
    Bad TLP :
    Receiver ID : 2800
    VendorID=8086h, DeviceID=1096h, Bus=28h, Device=00h, Function=00h
    +------ PCI-Express Device Error ------+
    Error Severity : Corrected
    PCIE Bus Error type : Data Link Layer
    Bad TLP :
    Bad DLLP :
    Receiver ID : 2801
    VendorID=8086h, DeviceID=1096h, Bus=28h, Device=00h, Function=01h
    Error of this Agent(2801) is reported first

    - After:

    pcieport-driver 0000:00:02.0: AER: Multiple Corrected error received: id=2801
    e1000e 0000:28:00.0: PCIE Bus Error: severity=Corrected, type=Data Link Layer, id=2800(Receiver ID)
    e1000e 0000:28:00.0: device [8086:1096] error status/mask=00000040/00000000
    e1000e 0000:28:00.0: [ 6] Bad TLP
    e1000e 0000:28:00.1: PCIE Bus Error: severity=Corrected, type=Data Link Layer, id=2801(Receiver ID)
    e1000e 0000:28:00.1: device [8086:1096] error status/mask=000000c0/00000000
    e1000e 0000:28:00.1: [ 6] Bad TLP
    e1000e 0000:28:00.1: [ 7] Bad DLLP
    e1000e 0000:28:00.1: Error of this Agent(2801) is reported first

    Signed-off-by: Hidetoshi Seto
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • Compact struct and codes.

    Signed-off-by: Hidetoshi Seto
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • Cleanup.

    Signed-off-by: Hidetoshi Seto
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • Multiple bits might be set in the Uncorrectable Error Status
    register. But aer_print_error_source() only report a error of
    the lowest bit set in the error status register.

    So print strings for all bits unmasked and set.

    And check First Error Pointer to mark the error occured first.
    This FEP is not valid when the corresponing bit of the Uncorrectable
    Error Status register is not set, or unimplemented or undefined.

    Signed-off-by: Hidetoshi Seto
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • ERR_{,UN}CORRECTABLE_ERROR_MASK are set of error bits which linux know,
    set of PCI_ERR_COR_* and PCI_ERR_UNC_* defined in linux/pci_regs.h.
    This masks make aerdrv not to report errors of unknown bit, while aerdrv
    have ability to report such undefined errors as "Unknown Error Bit %2d".

    OTOH aerdrv_errprint does not have any check of setting in mask register.
    So it could report masked wrong error by finding bit in status without
    knowing that the bit is masked in the mask register.

    This patch changes aerdrv to use mask state in mask register propely
    instead of defined/hardcoded ERR_{,UN}CORRECTABLE_ERROR_MASK.
    This change prevents aerdrv from reporting masked error, and also enable
    reporting unknown errors.

    Signed-off-by: Hidetoshi Seto
    Reviewed-by: Andrew Patterson
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • The static buffer errmsg_buff[] is used only for building error
    message in fixed format, and is protected by a spinlock.

    This patch removes this buffer and the spinlock.

    Signed-off-by: Hidetoshi Seto
    Reviewed-by: Andrew Patterson
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • The flag AER_MULTI_ERROR_VALID_FLAG in info->flag does mean that the
    root port receives multiple error messages. Error messages can be
    posted from different devices, so it does not mean that each reported
    device has multiple errors.

    If there are multiple error devices and the root port has valid error
    source ID, it would be nice to report which device is the error source
    reported first.

    Signed-off-by: Hidetoshi Seto
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • In case of multiple errors, struct aer_err_info would be reused among
    all reported devices. So the info->status should be initialized before
    recycled. Otherwise error of one device might be reported as the error
    of another device. Also info->flags has similar problem on reporting
    TLP header.

    Signed-off-by: Hidetoshi Seto
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • Definitions of MASK macros in aerdrv_errprint.c are tricky and unsafe.

    For example, AER_AGENT_TRANSMITTER_MASK(_sev, _stat) does work like:
    static inline func(int _sev, int _stat)
    {
    if (_sev == AER_CORRECTABLE)
    return (_stat & (PCI_ERR_COR_REP_ROLL|PCI_ERR_COR_REP_TIMER));
    else
    return (_stat & PCI_ERR_COR_REP_ROLL);
    }
    In case of else path here, for uncorrectable errors, testing bits in
    _stat by PCI_ERR_COR_* does not make sense because _stat should have only
    PCI_ERR_UNC_* bits originated in uncorrectable error status register.
    But at this time this is safe because uncorrectable error using bit
    position same to PCI_ERR_COR_REP_ROLL(= bit position 8) is not defined.
    Likewise, AER_AGENT_COMPLETER_MASK is always PCI_ERR_UNC_COMP_ABORT but
    it works because bit 15 of correctable error status is not defined.

    It means that these MASK macros will turn to be wrong once if new error
    is defined. (In fact, bit 15 of correctable is now defined in PCIe 2.1)

    This patch changes these MASK macros to be more strict, not to return
    PCI_ERR_COR_* bits for uncorrectable error status and vise versa.

    Signed-off-by: Hidetoshi Seto
    Reviewed-by: Andrew Patterson
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • Add workaround macro to reduce the number of checkpatch warning:
    WARNING: printk() should include KERN_ facility level

    Before:
    total: 0 errors, 10 warnings, 247 lines checked
    After:
    total: 0 errors, 1 warnings, 243 lines checked

    Signed-off-by: Hidetoshi Seto
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • Before:
    drivers/pci/pcie/aer/aer_inject.c
    total: 4 errors, 4 warnings, 473 lines checked
    drivers/pci/pcie/aer/aerdrv.c
    total: 5 errors, 2 warnings, 333 lines checked
    drivers/pci/pcie/aer/aerdrv.h
    total: 1 errors, 0 warnings, 139 lines checked
    drivers/pci/pcie/aer/aerdrv_core.c
    total: 4 errors, 3 warnings, 872 lines checked
    drivers/pci/pcie/aer/aerdrv_errprint.c
    total: 12 errors, 11 warnings, 248 lines checked

    After:
    drivers/pci/pcie/aer/aer_inject.c
    total: 0 errors, 0 warnings, 466 lines checked
    drivers/pci/pcie/aer/aerdrv.c
    total: 0 errors, 0 warnings, 335 lines checked
    drivers/pci/pcie/aer/aerdrv.h
    total: 0 errors, 0 warnings, 139 lines checked
    drivers/pci/pcie/aer/aerdrv_core.c
    total: 0 errors, 0 warnings, 869 lines checked
    drivers/pci/pcie/aer/aerdrv_errprint.c
    total: 0 errors, 10 warnings, 247 lines checked

    Signed-off-by: Hidetoshi Seto
    Reviewed-by: Andrew Patterson
    Signed-off-by: Jesse Barnes

    Hidetoshi Seto
     
  • Add ids module parameter which allows specifying initial IDs for the
    pci-stub driver. When built into the kernel, pci-stub is linked
    before any real pci drivers and by setting up IDs from initialization
    it can prevent built-in drivers from attaching to specific devices.

    While at it, make pci_stub_probe() print out about devices it grabbed
    to weed out "but my controller isn't being probed" bug reports.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jesse Barnes

    Tejun Heo