09 Feb, 2010

4 commits

  • This patch updates the shared INTC code to use
    set_irq_chained_handler() for intc_redirect_irq().

    With this in place request_irq() on a merged irq
    which has been redirected will now return -EINVAL
    instead of 0 together with a crash. This thanks to
    the protection of the IRQ_NOREQUEST flag set for
    chained interrupt handlers.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • Paul Mundt
     
  • Extend the shared INTC code with force_enable support to
    allow keeping mask bits statically enabled. Needed by
    upcoming INTC SDHI patches that mux together a bunch of
    vectors to a single linux interrupt which is masked by
    a priority register, but needs individual mask bits
    constantly enabled.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • This patch updates the INTC code by moving all vectors,
    groups and registers from struct intc_desc to struct
    intc_hw_desc.

    The idea is that INTC tables should go from using the
    macro(s) DECLARE_INTC_DESC..() only to using struct
    intc_desc with name and hw initialized using the macro
    INTC_HW_DESC(). This move makes it easy to initialize
    an extended struct intc_desc in the future.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     

08 Feb, 2010

7 commits

  • Paul Mundt
     
  • Since sci_rxd_in() is used by SCI only, clean up
    the header file by killing off code dealing with
    SCIF ports and their register definitions.

    Also introduce a default sci_rxd_in() function
    which can be shared by all SCIF-only processors.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • Conflicts:
    arch/sh/drivers/dma/dma-sh.c

    Paul Mundt
     
  • Tested to work with a SIU ASoC driver on sh7722 (migor).

    Signed-off-by: Guennadi Liakhovetski
    Acked-by: Dan Williams
    Signed-off-by: Paul Mundt

    Guennadi Liakhovetski
     
  • Both the original arch/sh/drivers/dma/dma-sh.c and the new SH dmaengine drivers
    do not take into account bits 3:2 of the Transfer Size field in the CHCR
    register, besides, bit-field defines set bit 2, but the mask only passes bits
    1:0 through. TS_16BLK and TS_32BLK macros are bogus too. This patch fixes all
    these issues for sh7722 and sh7724, other CPUs stay unchanged and might need to
    be fixed too.

    Signed-off-by: Guennadi Liakhovetski
    Acked-by: Dan Williams
    Signed-off-by: Paul Mundt

    Guennadi Liakhovetski
     
  • Slave DMA functionality uses scatter-gather arrays for data transfers,
    whereas memcpy just uses a single data buffer. This patch converts the
    current memcpy implementation in shdma.c to use scatter-gather, making it
    just a special case with one SG-element. This allows us to isolate
    descriptor list manipulations and locking into one function, thus reducing
    error chances.

    Signed-off-by: Guennadi Liakhovetski
    Acked-by: Dan Williams
    Signed-off-by: Paul Mundt

    Guennadi Liakhovetski
     
  • This reverts commit 703625118069 ("tty: fix race in tty_fasync") and
    commit b04da8bfdfbb ("fnctl: f_modown should call write_lock_irqsave/
    restore") that tried to fix up some of the fallout but was incomplete.

    It turns out that we really cannot hold 'tty->ctrl_lock' over calling
    __f_setown, because not only did that cause problems with interrupt
    disables (which the second commit fixed), it also causes a potential
    ABBA deadlock due to lock ordering.

    Thanks to Tetsuo Handa for following up on the issue, and running
    lockdep to show the problem. It goes roughly like this:

    - f_getown gets filp->f_owner.lock for reading without interrupts
    disabled, so an interrupt that happens while that lock is held can
    cause a lockdep chain from f_owner.lock -> sighand->siglock.

    - at the same time, the tty->ctrl_lock -> f_owner.lock chain that
    commit 703625118069 introduced, together with the pre-existing
    sighand->siglock -> tty->ctrl_lock chain means that we have a lock
    dependency the other way too.

    So instead of extending tty->ctrl_lock over the whole __f_setown() call,
    we now just take a reference to the 'pid' structure while holding the
    lock, and then release it after having done the __f_setown. That still
    guarantees that 'struct pid' won't go away from under us, which is all
    we really ever needed.

    Reported-and-tested-by: Tetsuo Handa
    Acked-by: Greg Kroah-Hartman
    Acked-by: Américo Wang
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

07 Feb, 2010

2 commits

  • * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
    hwmon: (w83781d) Request I/O ports individually for probing
    hwmon: (lm78) Request I/O ports individually for probing
    hwmon: (adt7462) Wrong ADT7462_VOLT_COUNT

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel:
    drm/i915: Fix leak of relocs along do_execbuffer error path
    drm/i915: slow acpi_lid_open() causes flickering - V2
    drm/i915: Disable SR when more than one pipe is enabled
    drm/i915: page flip support for Ironlake
    drm/i915: Fix the incorrect DMI string for Samsung SX20S laptop
    drm/i915: Add support for SDVO composite TV
    drm/i915: don't trigger ironlake vblank interrupt at irq install
    drm/i915: handle non-flip pending case when unpinning the scanout buffer
    drm/i915: Fix the device info of Pineview
    drm/i915: enable vblank interrupt on ironlake
    drm/i915: Prevent use of uninitialized pointers along error path.
    drm/i915: disable hotplug detect before Ironlake CRT detect

    Linus Torvalds
     

06 Feb, 2010

3 commits

  • Different motherboards have different PNP declarations for
    W83781D/W83782D chips. Some declare the whole range of I/O ports (8
    ports), some declare only the useful ports (2 ports at offset 5) and
    some declare fancy ranges, for example 4 ports at offset 4. To
    properly handle all cases, request all ports individually for probing.
    After we have determined that we really have a W83781D or W83782D
    chip, the useful port range will be requested again, as a single
    block.

    I did not see a board which needs this yet, but I know of one for lm78
    driver and I'd like to keep the logic of these two drivers in sync.

    Signed-off-by: Jean Delvare
    Cc: stable@kernel.org

    Jean Delvare
     
  • Different motherboards have different PNP declarations for LM78/LM79
    chips. Some declare the whole range of I/O ports (8 ports), some
    declare only the useful ports (2 ports at offset 5) and some declare
    fancy ranges, for example 4 ports at offset 4. To properly handle all
    cases, request all ports individually for probing. After we have
    determined that we really have an LM78 or LM79 chip, the useful port
    range will be requested again, as a single block.

    This fixes the driver on the Olivetti M3000 DT 540, at least.

    Signed-off-by: Jean Delvare
    Cc: stable@kernel.org

    Jean Delvare
     
  • The #define ADT7462_VOLT_COUNT is wrong, it should be 13 not 12. All the
    for loops that use this as a limit count are of the typical form, "for
    (n = 0; n < ADT7462_VOLT_COUNT; n++)", so to loop through all voltages
    w/o missing the last one it is necessary for the count to be one greater
    than it is. (Specifically, you will miss the +1.5V 3GPIO input with count
    = 12 vs. 13.)

    Signed-off-by: Ray Copeland
    Acked-by: "Darrick J. Wong"
    Signed-off-by: Jean Delvare
    Cc: stable@kernel.org

    Ray Copeland
     

05 Feb, 2010

19 commits

  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
    [libata] Call flush_dcache_page after PIO data transfers in libata-sff.c
    ahci: add Acer G725 to broken suspend list
    libata: fix ata_id_logical_per_physical_sectors
    libata-scsi passthru: fix bug which truncated LBA48 return values

    Linus Torvalds
     
  • The new cs5535-* drivers use PCI header config info rather than MSRs to
    determine the memory region to use for things like GPIOs and MFGPTs. As
    anticipated, we've run into a buggy BIOS:

    [ 0.081818] pci 0000:00:14.0: reg 10: [io 0x6000-0x7fff]
    [ 0.081906] pci 0000:00:14.0: reg 14: [io 0x6100-0x61ff]
    [ 0.082015] pci 0000:00:14.0: reg 18: [io 0x6200-0x63ff]
    [ 0.082917] pci 0000:00:14.2: reg 20: [io 0xe000-0xe00f]
    [ 0.083551] pci 0000:00:15.0: reg 10: [mem 0xa0010000-0xa0010fff]
    [ 0.084436] pci 0000:00:15.1: reg 10: [mem 0xa0011000-0xa0011fff]
    [ 0.088816] PCI: pci_cache_line_size set to 32 bytes
    [ 0.088938] pci 0000:00:14.0: address space collision: [io 0x6100-0x61ff] already in use
    [ 0.089052] pci 0000:00:14.0: can't reserve [io 0x6100-0x61ff]

    This is a Soekris board, and its BIOS sets the size of the PCI ISA bridge
    device's BAR0 to 8k. In reality, it should be 8 bytes (BAR0 is used for
    SMBus stuff). This quirk checks for an incorrect size, and resets it
    accordingly.

    Signed-off-by: Andres Salomon
    Tested-by: Leigh Porter
    Tested-by: Jens Rottmann
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • * 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
    drm/radeon/kms: fix r300 vram width calculations
    drm/radeon/kms: rs400/480 MC setup is different than r300.
    drm/radeon/kms: make initial state of load detect property correct.
    drm/radeon/kms: disable HDMI audio for now on rv710/rv730
    drm/radeon/kms: don't call suspend path before cleaning up GPU
    drivers/gpu/drm/radeon/radeon_combios.c: fix warning
    ati_pcigart: fix printk format warning
    drm/r100/kms: Emit cache flush to the end of command buffer. (v2)
    drm/radeon/kms: fix regression rendering issue on R6XX/R7XX
    drm/radeon/kms: move blit initialization after we disabled VGA

    Linus Torvalds
     
  • This was incorrect according to the docs and the UMS driver does
    it like this.

    Signed-off-by: Dave Airlie

    Dave Airlie
     
  • Boot testing on my rs480 laptop found the MC idle never happened
    on startup, a quick check with AMD found the idle bit is in a different
    place on the rs4xx than r300.

    Implement a new rs400 mc idle function to fix this.

    Signed-off-by: Dave Airlie

    Dave Airlie
     
  • Paul Mundt
     
  • The current root hub polling code exhibits a spinlock recursion on the
    private controller lock. r8a66597_root_hub_control() is called from
    r8a66597_timer() which grabs the lock and disables IRQs. The following
    chain emerges:

    r8a66597_timer()
    Acked-by: Yoshihiro Shimoda

    Paul Mundt
     
  • This implements the same D-cache flushing logic for r8a66597-hcd as
    Catalin's isp1760 (http://patchwork.kernel.org/patch/76391/) change,
    with the same note applying here as well:

    When the HDC driver writes the data to the transfer buffers it
    pollutes the D-cache (unlike DMA drivers where the device writes
    the data). If the corresponding pages get mapped into user space,
    there are no additional cache flushing operations performed and
    this causes random user space faults on architectures with
    separate I and D caches (Harvard) or those with aliasing D-cache.

    This fixes up crashes during USB boot on SH7724 and others:

    http://marc.info/?l=linux-sh&m=126439837308912&w=2

    Reported-by: Goda Yusuke
    Tested-by: Goda Yusuke
    Cc: stable@kernel.org
    Signed-off-by: Paul Mundt
    Acked-by: Yoshihiro Shimoda

    Paul Mundt
     
  • this was incorrect on my rs480.

    Signed-off-by: Dave Airlie

    Dave Airlie
     
  • Support isn't correct yet and we are getting green tinges on the
    displays.

    Signed-off-by: Dave Airlie

    Dave Airlie
     
  • In suspend path we unmap the GART table while in cleaning up
    path we will unbind buffer and thus try to write to unmapped
    GART leading to oops. In order to avoid this we don't call the
    suspend path in cleanup path. Cleanup path is clever enough
    to desactive GPU like the suspend path is doing, thus this was
    redondant.

    Tested on: RV370, R420, RV515, RV570, RV610, RV770 (all PCIE)

    Signed-off-by: Jerome Glisse
    Signed-off-by: Dave Airlie

    Jerome Glisse
     
  • drivers/gpu/drm/radeon/radeon_combios.c: In function 'radeon_combios_get_lvds_info':
    drivers/gpu/drm/radeon/radeon_combios.c:893: warning: comparison is always false due to limited range of data type

    Cc: Dave Airlie
    Signed-off-by: Andrew Morton
    Signed-off-by: Dave Airlie

    Andrew Morton
     
  • Fix ati_pcigart printk format warning:

    drivers/gpu/drm/ati_pcigart.c:115: warning: format '%Lx' expects type 'long long unsigned int', but argument 3 has type 'dma_addr_t'

    Signed-off-by: Randy Dunlap
    Cc: Zhenyu Wang
    Cc: Dave Airlie
    Signed-off-by: Andrew Morton
    Signed-off-by: Dave Airlie

    Randy Dunlap
     
  • Cache flush is required in case CPU is accessing rendered data.

    This fixes glean/readPixSanity test case and random rendering
    errors in sauerbraten and warzone2100.

    v2 Fix comment ordering in r100_fence_ring_emit and remove extra
    defines added in first version.

    Signed-off-by: Pauli Nieminen
    Reviewed-by: Jerome Glisse
    Signed-off-by: Dave Airlie

    Pauli Nieminen
     
  • It seems that some R6XX/R7XX silently ignore HDP flush when
    programmed through ring, this patch addback an ioctl callback
    to allow R6XX/R7XX hw to perform such flush through MMIO in
    order to fix a regression. For more details see:

    http://bugzilla.kernel.org/show_bug.cgi?id=15186

    Signed-off-by: Jerome Glisse
    Signed-off-by: Dave Airlie

    Jerome Glisse
     
  • VGA might be overwritting VRAM and corrupt our blit shader leading
    to corruption, it likely won't happen if you load fbcon right after
    radeon. Thanks to Shawn Starr and Andre Maasikas for tracking down
    this issue.

    Signed-off-by: Jerome Glisse
    Signed-off-by: Dave Airlie

    Jerome Glisse
     
  • Following a gpu hang, we would leak the relocation buffer. So simply
    earrange the error path to always free the relocation buffer.

    Signed-off-by: Chris Wilson
    Signed-off-by: Eric Anholt

    Chris Wilson
     
  • acpi_lid_open() could take up to 10ms on my computer. Some component is
    calling the drm GETCONNECTOR ioctl many times in a row. This results in
    flickering (for example, when starting a video). Fix it by assuming an
    always connected lid status.

    Signed-off-by: Thomas Meyer
    Signed-off-by: Eric Anholt

    Thomas Meyer
     
  • Self Refresh should be disabled on dual plane configs. Otherwise, as
    the SR watermark is not calculated for such configs, switching to non
    VGA mode causes FIFO underrun and display flicker.

    This fixes Korg Bug #14897.

    Signed-off-by: David John
    Signed-off-by: Jesse Barnes
    Cc: stable@kernel.org
    Signed-off-by: Eric Anholt

    David John
     

04 Feb, 2010

4 commits


03 Feb, 2010

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (23 commits)
    connector: Delete buggy notification code.
    be2net: use eq-id to calculate cev-isr reg offset
    Bluetooth: Use the control channel for raw HID reports
    Bluetooth: Add DFU driver for Atheros Bluetooth chipset AR3011
    Bluetooth: Redo checks in IRQ handler for shared IRQ support
    Bluetooth: Fix memory leak in L2CAP
    Bluetooth: Remove double free of SKB pointer in L2CAP
    cdc_ether: Partially revert "usbnet: Set link down initially ..."
    be2net: Fix memset() arg ordering.
    bonding: bond_open error return value
    ixgbe: if ixgbe_copy_dcb_cfg is going to fail learn about it early
    ixgbe: set the correct DCB bit for pg tx settings
    igbvf: fix issue w/ mapped_as_page being left set after unmap
    drivers/net: ks8851_mll ethernet network driver
    be2net: Bug fix to support newer generation of BE ASIC
    starfire: clean up properly if firmware loading fails
    mac80211: fix NULL pointer dereference when ftrace is enabled
    netfilter: ctnetlink: fix expectation mask dump
    ipv6: conntrack: Add member of user to nf_ct_frag6_queue structure
    ath9k: fix eeprom INI values override for 2GHz-only cards
    ...

    Linus Torvalds