01 Nov, 2011

1 commit


29 Oct, 2011

1 commit

  • * 'next-rebase' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci:
    PCI: Clean-up MPS debug output
    pci: Clamp pcie_set_readrq() when using "performance" settings
    PCI: enable MPS "performance" setting to properly handle bridge MPS
    PCI: Workaround for Intel MPS errata
    PCI: Add support for PASID capability
    PCI: Add implementation for PRI capability
    PCI: Export ATS functions to modules
    PCI: Move ATS implementation into own file
    PCI / PM: Remove unnecessary error variable from acpi_dev_run_wake()
    PCI hotplug: acpiphp: Prevent deadlock on PCI-to-PCI bridge remove
    PCI / PM: Extend PME polling to all PCI devices
    PCI quirk: mmc: Always check for lower base frequency quirk for Ricoh 1180:e823
    PCI: Make pci_setup_bridge() non-static for use by arch code
    x86: constify PCI raw ops structures
    PCI: Add quirk for known incorrect MPSS
    PCI: Add Solarflare vendor ID and SFC4000 device IDs

    Linus Torvalds
     

28 Oct, 2011

1 commit

  • Intel 5000 and 5100 series memory controllers have a known issue if read
    completion coalescing is enabled and the PCI-E Maximum Payload Size is
    set to 256B. To work around this issue, disable read completion
    coalescing in the memory controller and root complexes. Unfortunately,
    it must always be disabled, even if no 256B MPS devices are present, due
    to the possibility of one being hotplugged.

    Links to erratas:
    http://www.intel.com/content/dam/doc/specification-update/5000-chipset-memory-controller-hub-specification-update.pdf
    http://www.intel.com/content/dam/doc/specification-update/5100-memory-controller-hub-chipset-specification-update.pdf

    Thanks to Jesse Brandeburg and Ben Hutchings for providing insight into
    the problem.

    Tested-and-Reported-by: Avi Kivity
    Signed-off-by: Jon Mason
    Signed-off-by: Jesse Barnes

    Jon Mason
     

15 Oct, 2011

2 commits

  • Commit 15bed0f2f added a quirk for the e823 Ricoh card reader to lower the
    base frequency. However, the quirk first checks to see if the proprietary
    MMC controller is disabled, and returns if so. On some devices, such as the
    Lenovo X220, the MMC controller is already disabled by firmware it seems,
    but the frequency change is still needed so sdhci-pci can talk to the cards.
    Since the MMC controller is disabled, the frequency fixup was never being run
    on these machines.

    This moves the e823 check above the MMC controller check so that it always
    gets run.

    This fixes https://bugzilla.redhat.com/show_bug.cgi?id=722509

    Signed-off-by: Josh Boyer
    Signed-off-by: Jesse Barnes

    Josh Boyer
     
  • Using legacy interrupts and TLPs > 256 bytes on the SFC4000 (all
    revisions) may cause interrupt messages to be replayed. In some
    systems this results in a non-recoverable MCE. Early boards using the
    SFC4000 set the maximum payload size supported (MPSS) to 1024 bytes
    and we should override that.

    There are probably other devices with similar issues, so give this
    quirk a generic name.

    Signed-off-by: Ben Hutchings
    Signed-off-by: Jesse Barnes

    Ben Hutchings
     

21 Sep, 2011

1 commit

  • Change the CONFIG_DMAR to CONFIG_INTEL_IOMMU to be consistent
    with the other IOMMU options.

    Rename the CONFIG_INTR_REMAP to CONFIG_IRQ_REMAP to match the
    irq subsystem name.

    And define the CONFIG_DMAR_TABLE for the common ACPI DMAR
    routines shared by both CONFIG_INTEL_IOMMU and CONFIG_IRQ_REMAP.

    Signed-off-by: Suresh Siddha
    Cc: yinghai@kernel.org
    Cc: youquan.song@intel.com
    Cc: joerg.roedel@amd.com
    Cc: tony.luck@intel.com
    Cc: dwmw2@infradead.org
    Link: http://lkml.kernel.org/r/20110824001456.558630224@sbsiddha-desk.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     

21 Jul, 2011

1 commit

  • Ricoh 1180:e823 does not recognize certain types of SD/MMC cards,
    as reported at http://launchpad.net/bugs/773524. Lowering the SD
    base clock frequency from 200Mhz to 50Mhz fixes this issue. This
    solution was suggest by Koji Matsumuro, Ricoh Company, Ltd.

    This change has no negative performance effect on standard SD
    cards, though it's quite possible that there will be one on
    UHS-1 cards.

    Signed-off-by: Manoj Iyer
    Tested-by: Daniel Manrique
    Cc: Koji Matsumuro
    Cc:
    Acked-by: Jesse Barnes
    Signed-off-by: Chris Ball

    Manoj Iyer
     

19 Jun, 2011

1 commit


22 May, 2011

1 commit


11 May, 2011

3 commits


31 Mar, 2011

1 commit


05 Mar, 2011

2 commits

  • Some broken BIOSes on ICH4 chipset report an ACPI region which is in
    conflict with legacy IDE ports when ACPI is disabled. Even though the
    regions overlap, IDE ports are working correctly (we cannot find out
    the decoding rules on chipsets).

    So the only problem is the reported region itself, if we don't reserve
    the region in the quirk everything works as expected.

    This patch avoids reserving any quirk regions below PCIBIOS_MIN_IO
    which is 0x1000. Some regions might be (and are by a fast google
    query) below this border, but the only difference is that they won't
    be reserved anymore. They should still work though the same as before.

    The conflicts look like (1f.0 is bridge, 1f.1 is IDE ctrl):
    pci 0000:00:1f.1: address space collision: [io 0x0170-0x0177] conflicts with 0000:00:1f.0 [io 0x0100-0x017f]

    At 0x0100 a 128 bytes long ACPI region is reported in the quirk for
    ICH4. ata_piix then fails to find disks because the IDE legacy ports
    are zeroed:
    ata_piix 0000:00:1f.1: device not available (can't reserve [io 0x0000-0x0007])

    References: https://bugzilla.novell.com/show_bug.cgi?id=558740
    Signed-off-by: Jiri Slaby
    Cc: Bjorn Helgaas
    Cc: "David S. Miller"
    Cc: Thomas Renninger
    Signed-off-by: Jesse Barnes

    Jiri Slaby
     
  • Per ICH4 and ICH6 specs, ACPI and GPIO regions are valid iff ACPI_EN
    and GPIO_EN bits are set to 1. Add checks for these bits into the
    quirks prior to the region creation.

    While at it, name the constants by macros.

    Signed-off-by: Jiri Slaby
    Cc: Bjorn Helgaas
    Cc: "David S. Miller"
    Cc: Thomas Renninger
    Signed-off-by: Jesse Barnes

    Jiri Slaby
     

17 Feb, 2011

1 commit

  • Revert commit 7eb93b175d4de9438a4b0af3a94a112cb5266944
    Author: Yu Zhao
    Date: Fri Apr 3 15:18:11 2009 +0800

    PCI: SR-IOV quirk for Intel 82576 NIC

    If BIOS doesn't allocate resources for the SR-IOV BARs, zero the Flash
    BAR and program the SR-IOV BARs to use the old Flash Memory Space.

    Please refer to Intel 82576 Gigabit Ethernet Controller Datasheet
    section 7.9.2.14.2 for details.
    http://download.intel.com/design/network/datashts/82576_Datasheet.pdf

    Signed-off-by: Yu Zhao
    Signed-off-by: Jesse Barnes

    This quirk was added before SR-IOV was in production and now all machines that
    originally had this issue alreayd have bios updates to correct the issue. The
    quirk itself is no longer needed and in fact causes bugs if run. Remove it.

    Signed-off-by: Jesse Brandeburg
    CC: Yu Zhao
    CC: Jesse Barnes
    Signed-off-by: Jesse Barnes

    Brandeburg, Jesse
     

20 Dec, 2010

1 commit

  • …nel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86-32: Make sure we can map all of lowmem if we need to
    x86, vt-d: Handle previous faults after enabling fault handling
    x86: Enable the intr-remap fault handling after local APIC setup
    x86, vt-d: Fix the vt-d fault handling irq migration in the x2apic mode
    x86, vt-d: Quirk for masking vtd spec errors to platform error handling logic
    x86, xsave: Use alloc_bootmem_align() instead of alloc_bootmem()
    bootmem: Add alloc_bootmem_align()
    x86, gcc-4.6: Use gcc -m options when building vdso
    x86: HPET: Chose a paranoid safe value for the ETIME check
    x86: io_apic: Avoid unused variable warning when CONFIG_GENERIC_PENDING_IRQ=n

    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    perf: Fix off by one in perf_swevent_init()
    perf: Fix duplicate events with multiple-pmu vs software events
    ftrace: Have recordmcount honor endianness in fn_ELF_R_INFO
    scripts/tags.sh: Add magic for trace-events
    tracing: Fix panic when lseek() called on "trace" opened for writing

    Linus Torvalds
     

17 Dec, 2010

1 commit

  • I wrote this quirk awhile ago to properly setup MCP55 chips on hypertransport
    busses so that interrupts reached whatever cpu happend to boot the kdump kernel.
    while that works well, it was recently shown to me that a a non-hypertransport
    variant of the MCP55 exists, and on those system the register that this quirk
    manipulates causes hangs if you write to it. Since the quirk was only meant to
    handle errors found on MCP55 chips that have a HT interface, this patch adds a
    filter to make sure the chip is an HT capable before making the needed register
    adjustment. This lets the broken MCP55s work with kdump while not breaking the
    non-HT variants.

    Resolves https://bugzilla.kernel.org/show_bug.cgi?id=23952

    Tested successfully by the reporter and myself.

    Cc: stable@kernel.org
    Reported-by: Mathieu Bérard
    Acked-by: Vivek Goyal
    Signed-off-by: Neil Horman
    Signed-off-by: Jesse Barnes

    Neil Horman
     

14 Dec, 2010

1 commit

  • On platforms with Intel 7500 chipset, there were some reports of system
    hang/NMI's during kexec/kdump in the presence of interrupt-remapping enabled.

    During kdump, there is a window where the devices might be still using old
    kernel's interrupt information, while the kdump kernel is coming up. This can
    cause vt-d faults as the interrupt configuration from the old kernel map to
    null IRTE entries in the new kernel etc. (with out interrupt-remapping enabled,
    we still have the same issue but in this case we will see benign spurious
    interrupt hit the new kernel).

    Based on platform config settings, these platforms seem to generate NMI/SMI
    when a vt-d fault happens and there were reports that the resulting SMI causes
    the system to hang.

    Fix it by masking vt-d spec defined errors to platform error reporting logic.
    VT-d spec related errors are already handled by the VT-d OS code, so need to
    report the same error through other channels.

    Signed-off-by: Suresh Siddha
    LKML-Reference:
    Cc: stable@kernel.org [v2.6.32+]
    Reported-by: Max Asbock
    Reported-and-tested-by: Takao Indoh
    Acked-by: Chris Wright
    Acked-by: Kenji Kaneshige
    Signed-off-by: H. Peter Anvin

    Suresh Siddha
     

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

  • * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: (27 commits)
    x86: allocate space within a region top-down
    x86: update iomem_resource end based on CPU physical address capabilities
    x86/PCI: allocate space from the end of a region, not the beginning
    PCI: allocate bus resources from the top down
    resources: support allocating space within a region from the top down
    resources: handle overflow when aligning start of available area
    resources: ensure callback doesn't allocate outside available space
    resources: factor out resource_clip() to simplify find_resource()
    resources: add a default alignf to simplify find_resource()
    x86/PCI: MMCONFIG: fix region end calculation
    PCI: Add support for polling PME state on suspended legacy PCI devices
    PCI: Export some PCI PM functionality
    PCI: fix message typo
    PCI: log vendor/device ID always
    PCI: update Intel chipset names and defines
    PCI: use new ccflags variable in Makefile
    PCI: add PCI_MSIX_TABLE/PBA defines
    PCI: add PCI vendor id for STmicroelectronics
    x86/PCI: irq and pci_ids patch for Intel Patsburg DeviceIDs
    PCI: OLPC: Only enable PCI configuration type override on XO-1
    ...

    Linus Torvalds
     

25 Oct, 2010

1 commit

  • * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)
    Update broken web addresses in arch directory.
    Update broken web addresses in the kernel.
    Revert "drivers/usb: Remove unnecessary return's from void functions" for musb gadget
    Revert "Fix typo: configuation => configuration" partially
    ida: document IDA_BITMAP_LONGS calculation
    ext2: fix a typo on comment in ext2/inode.c
    drivers/scsi: Remove unnecessary casts of private_data
    drivers/s390: Remove unnecessary casts of private_data
    net/sunrpc/rpc_pipe.c: Remove unnecessary casts of private_data
    drivers/infiniband: Remove unnecessary casts of private_data
    drivers/gpu/drm: Remove unnecessary casts of private_data
    kernel/pm_qos_params.c: Remove unnecessary casts of private_data
    fs/ecryptfs: Remove unnecessary casts of private_data
    fs/seq_file.c: Remove unnecessary casts of private_data
    arm: uengine.c: remove C99 comments
    arm: scoop.c: remove C99 comments
    Fix typo configue => configure in comments
    Fix typo: configuation => configuration
    Fix typo interrest[ing|ed] => interest[ing|ed]
    Fix various typos of valid in comments
    ...

    Fix up trivial conflicts in:
    drivers/char/ipmi/ipmi_si_intf.c
    drivers/usb/gadget/rndis.c
    net/irda/irnet/irnet_ppp.c

    Linus Torvalds
     

18 Oct, 2010

1 commit

  • The patch below updates broken web addresses in the kernel

    Signed-off-by: Justin P. Mattock
    Cc: Maciej W. Rozycki
    Cc: Geert Uytterhoeven
    Cc: Finn Thain
    Cc: Randy Dunlap
    Cc: Matt Turner
    Cc: Dimitry Torokhov
    Cc: Mike Frysinger
    Acked-by: Ben Pfaff
    Acked-by: Hans J. Koch
    Reviewed-by: Finn Thain
    Signed-off-by: Jiri Kosina

    Justin P. Mattock
     

16 Oct, 2010

1 commit

  • A long time ago I worked on a RHEL5 bug in which kdump hung during boot
    on a set of systems. The systems hung because they never received timer
    interrupts during calibrate_delay. These systems also all had Opteron
    processors on a hypertransport bus, bridged to a pci bus via an Nvidia
    MCP55 northbridge chip. After much wrangling I managed to learn from
    Nvidia that they have an undocumented register in some versions of that
    chip which control how legacy interrupts are send to the cpu complex
    when the ioapic isn't active. Nvidia defaults this register to only
    send legacy interrupts to the BSP, so if kdump happens to boot on an AP,
    we never get timer interrupts and boom. I had initially used this quirk
    as a workaround, with my intent being to move apic initalization to an
    earlier point in the boot process, so the setting of the register would
    be irrelevant. Given the work involved in doing that however, the
    fragile nature of the apic initalization code, and the fact that, over
    the 2 years since we found this bug, the MCP55 is the only chip which
    seems to have this issue, I've figure at this point its likely safer to
    just carry the quirk around. By setting the referenced bits in this
    hidden register, interrupts will be broadcast to all cpus when the
    ioapic isn't active on the above described systems.

    Acked-by: Simon Horman
    Acked-by: Vivek Goyal
    Signed-off-by: Neil Horman
    Signed-off-by: Jesse Barnes

    Neil Horman
     

25 Sep, 2010

1 commit

  • When the Lenovo Ideapad S10-3 is booted with HT enabled,
    it hits a boot hang in the intel_idle driver.

    This occurs when entering ATM-C4 for the first time,
    unless BM_STS is first cleared.

    acpi_idle doesn't see this because it first checks
    and clears BM_STS, but it would hit the same hang
    if that check were disabled.

    http://bugs.meego.com/show_bug.cgi?id=7093
    https://bugs.launchpad.net/ubuntu/+source/linux/+bug/634702

    Signed-off-by: Len Brown

    Len Brown
     

07 Aug, 2010

1 commit

  • * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: (30 commits)
    PCI: update for owner removal from struct device_attribute
    PCI: Fix warnings when CONFIG_DMI unset
    PCI: Do not run NVidia quirks related to MSI with MSI disabled
    x86/PCI: use for_each_pci_dev()
    PCI: use for_each_pci_dev()
    PCI: MSI: Restore read_msi_msg_desc(); add get_cached_msi_msg_desc()
    PCI: export SMBIOS provided firmware instance and label to sysfs
    PCI: Allow read/write access to sysfs I/O port resources
    x86/PCI: use host bridge _CRS info on ASRock ALiveSATA2-GLAN
    PCI: remove unused HAVE_ARCH_PCI_SET_DMA_MAX_SEGMENT_{SIZE|BOUNDARY}
    PCI: disable mmio during bar sizing
    PCI: MSI: Remove unsafe and unnecessary hardware access
    PCI: Default PCIe ASPM control to on and require !EMBEDDED to disable
    PCI: kernel oops on access to pci proc file while hot-removal
    PCI: pci-sysfs: remove casts from void*
    ACPI: Disable ASPM if the platform won't provide _OSC control for PCIe
    PCI hotplug: make sure child bridges are enabled at hotplug time
    PCI hotplug: shpchp: Removed check for hotplug of display devices
    PCI hotplug: pciehp: Fixed return value sign for pciehp_unconfigure_device
    PCI: Don't enable aspm before drivers have had a chance to veto it
    ...

    Linus Torvalds
     

02 Aug, 2010

1 commit


31 Jul, 2010

5 commits

  • There is no reason to run NVidia-specific quirks related to HT MSI
    mappings with MSI disabled via pci=nomsi, so make
    __nv_msi_ht_cap_quirk() return immediately in that case.

    This allows at least one machine to boot 100% of the time with
    pci=nomsi (it still doesn't boot reliably without that).

    Addresses https://bugzilla.kernel.org/show_bug.cgi?id=16443 .

    Cc: stable@kernel.org
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Jesse Barnes

    Rafael J. Wysocki
     
  • Use for_each_pci_dev() to simplify the code.

    Signed-off-by: Kulikov Vasiliy
    Signed-off-by: Jesse Barnes

    Kulikov Vasiliy
     
  • It is a known issue that mmio decoding shall be disabled while doing PCI
    bar sizing. Host bridge and other devices (PCI PIC) shall be excluded for
    certain platforms. This patch mainly comes from Mathew Willcox's
    patch in http://kerneltrap.org/mailarchive/linux-kernel/2007/9/13/258969.

    A new flag bit "mmio_alway_on" is added to pci_dev with the intention that
    devices with their mmio decoding cannot be disabled during BAR sizing shall
    have this bit set, preferrablly in their quirks.

    Without this patch, Intel Moorestown platform graphics unit will be
    corrupted during bar sizing activities.

    Signed-off-by: Jacob Pan
    Signed-off-by: Jesse Barnes

    Jacob Pan
     
  • MSI delivery from on-board ahci controller doesn't work on K8M800. At
    this point, it's unclear whether the culprit is with the ahci
    controller or the host bridge. Given the track record and considering
    the rather minimal impact of MSI, disabling it seems reasonable.

    Signed-off-by: Tejun Heo
    Reported-by: Rainer Hurtado Navarro
    Cc: stable@kernel.org
    Signed-off-by: Jesse Barnes

    Tejun Heo
     
  • In all AMD 780 family northbridges, the vendor ID of the internal
    graphics PCI/PCI bridge reads not as AMD but as that of the mainboard
    vendor, because the hardware actually returns the value of the subsystem
    vendor ID (erratum 18).

    We currently have additional quirk entries for Asus and Acer, but it is
    likely that we will encounter more systems with other vendor IDs.

    Since we do not know in advance all possible vendor IDs, a better way to
    find the device is to declare the quirk on the host bridge, whose ID is
    always correct, and use that device as a stepping stone to find the PCI/
    PCI bridge, if present.

    Reviewed-by: Matthew Wilcox
    Signed-off-by: Clemens Ladisch
    Signed-off-by: Jesse Barnes

    Clemens Ladisch
     

08 Jun, 2010

1 commit

  • JMB362 is a new variant of jmicron controller which is similar to
    JMB360 but has two SATA ports instead of one. As there is no PATA
    port, single function AHCI mode can be used as in JMB360. Add pci
    quirk for JMB362.

    Signed-off-by: Tejun Heo
    Reported-by: Aries Lee
    Cc: stable@kernel.org
    Signed-off-by: Jeff Garzik

    Tejun Heo
     

22 May, 2010

1 commit

  • At the moment only PCI-E briges can be flagged as hotplug, thus
    allowing manual resource preallocation via pci=hpmemsize=nnM and
    pci=hpiosize=nnM kernel parameters. Some PCI hotplug bridges, e.g.
    PLX 6254 can also benefit from this functionalily, as kernel fails
    to properly allocate their resources when hotplug device is added
    and PCI bus is rescanned.

    This patch adds header quirk for PLX 6254 that marks this bridge
    as hotplug. Other PCI bridges with similar problems can use it
    as well.

    Signed-off-by: Felix Radensky
    Signed-off-by: Jesse Barnes

    Felix Radensky
     

19 May, 2010

2 commits


03 Apr, 2010

1 commit

  • The missing initialization of the nb_cntl.strap_msi_enable does not
    seem to be the only problem that prevents MSI, so that quirk is not
    sufficient to enable MSI on all machines. To be safe, disable MSI
    unconditionally for the internal graphics and HDMI audio on these
    chipsets.

    [rjw: Added the PCI_VENDOR_ID_AI quirk.]

    Signed-off-by: Clemens Ladisch
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Linus Torvalds

    Clemens Ladisch
     

25 Mar, 2010

3 commits

  • pci_claim_resource() can fail, so pay attention and only claim success
    when it actually succeeded. If pci_claim_resource() fails, it prints a
    useful diagnostic.

    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • Bugzilla 15287 indicates that there's a problem with Message Signalled
    Interrupts on VIA K8T890 systems. Add a quirk to disable MSI on these
    systems.

    Signed-off-by: Matthew Wilcox
    Tested-by: Jan Kreuzer
    Tested-by: lh
    Signed-off-by: Jesse Barnes

    Matthew Wilcox
     
  • AMD says in section 2.5.4 (GFX MSI Enable) of #43291 (AMD 780G Family
    Register Programming Requirements):

    The SBIOS must enable internal graphics MSI capability in GCCFG by
    setting the following: NBCFG.NB_CNTL.STRAP_MSI_ENABLE='1'

    Quite a few BIOS writers misinterpret this sentence and think that
    enabling MSI is an optional feature. However, clearing that bit just
    prevents delivery of MSI messages but does not remove the MSI PCI
    capabilities registers, and so leaves these devices unusable for any
    driver that attempts to use MSI.

    Setting that bit is not possible after the BIOS has locked down the
    configuration registers, so we have to manually disable MSI for the
    affected devices.

    This fixes the codec communication errors in the HDA driver when
    accessing the HDMI audio device, and allows us to get rid of the
    overcautious quirk in radeon_irq_kms.c.

    Signed-off-by: Clemens Ladisch
    Tested-by: Alex Deucher
    Cc:
    Signed-off-by: Jesse Barnes

    Clemens Ladisch