03 Jan, 2007

1 commit

  • This is a slight variant on the patch I posted December 16th to fix
    libata combined mode handling. The only real change is that we now
    correctly also reserve BAR1,2,4. That is basically a neatness issue.

    Jeff was unhappy about two things

    1. That it didn't work in the case of one channel native one channel
    legacy.

    This is a silly complaint because the SFF layer in libata doesn't handle
    this case yet anyway.

    2. The case where combined mode is in use and IDE=n.

    In this case the libata quirk code reserves the resources in question
    correctly already.

    Once the combined mode stuff is redone properly (2.6.21) then the entire
    mess turns into a single pci_request_regions() for all cases and all the
    ugly resource hackery goes away.

    I'm sending this now rather than after running full test suites so that
    it can get the maximal testing in a short time. I'll be running tests on
    this after lunch.

    Signed-off-by: Alan Cox
    Cc: Jeff Garzik
    Acked-by: Alessandro Suardi
    Acked-by: Theodore Tso
    Signed-off-by: Linus Torvalds

    Alan
     

03 Dec, 2006

3 commits

  • Now that BMDMA status is recorded in irq handler. ata_bmdma_freeze()
    is free to manipulate host status. Under certain circumstances, some
    controllers (ICH7 in enhanced mode w/ IRQ shared) raise IRQ when CTL
    register is written to and ATA_NIEN doesn't mask it.

    This patch makes ata_bmdma_freeze() clear all pending IRQs after
    freezing a port. This change makes explicit clearing in
    ata_device_add() unnecessary and thus kills it. The removed code was
    SFF-specific and was in the wrong place.

    Note that ->freeze() handler is always called under ap->lock held and
    irq disabled. Even if CTL manipulation causes stuck IRQ, it's cleared
    immediately. This should be safe (enough) even in SMP environment.
    More correct solution is to mask the IRQ from IRQ controller but that
    would be an overkill.

    Signed-off-by: Tejun Heo

    Tejun Heo
     
  • For certain errors, interrupt handler alter BMDMA host status before
    entering EH (clears active and intr). Thus altered BMDMA host status
    value is recorded by BMDMA EH and reported to user. Move BMDMA host
    status recording from EH to interrupt handler.

    Signed-off-by: Tejun Heo

    Tejun Heo
     
  • There are machines out there which share legacy PCI IDE IRQs w/ other
    devices. libata SFF interrupt/HSM code is ready for shared IRQ and
    has been setting IRQF_SHARED for devices in native PCI mode. Device
    in legacy mode is still a PCI device and thus supposedly uses
    active-low level triggered IRQ.

    Machines with such setup should be quite rare and w/o this flag libata
    is likely to fail loading and render the system unuseable. Also, IDE
    driver has been setting IRQF_SHARED for devices in legacy mode for a
    looooong time.

    Signed-off-by: Tejun Heo

    Tejun Heo
     

02 Dec, 2006

2 commits

  • ata_irq_on() isn't used outside of libata core layer. The function is
    TF/SFF interface specific but currently used by core path with some
    hack too. Move it from include/linux/libata.h to
    drivers/ata/libata-sff.c.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • This patch adds support for ADMA mode on NVIDIA nForce4 (CK804/MCP04) SATA
    controllers to the sata_nv driver. Benefits of ADMA mode include:

    - NCQ support

    - Reduced CPU overhead (controller DMAs command information from memory
    instead of them being pushed in by the CPU)

    - Full 64-bit DMA support

    ADMA mode is enabled by default in this version. To disable it, set the
    module parameter adma_enabled=0.

    Signed-off-by: Robert Hancock
    Cc: Jeff Garzik
    Cc: Tejun Heo
    Signed-off-by: Andrew Morton
    Signed-off-by: Jeff Garzik

    Robert Hancock
     

22 Oct, 2006

1 commit

  • There are some Linux supported platforms that simply cannot hit the low
    I/O addresses used by ATA legacy mode PCI mappings. These platforms have
    a window for PCI space that is fixed by the board logic and doesn't
    include the neccessary locations.

    Provide a config option so that such platforms faced with a controller
    that they cannot support simply error it and punt

    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Alan Cox
     

28 Sep, 2006

2 commits


27 Sep, 2006

2 commits


19 Sep, 2006

2 commits

  • Non-uniform ports handling got broken while updating libata to handle
    those in the same host. Only separate irq for the non-uniform
    secondary port was implemented while all other fields (host flags,
    transfer mode...) of the secondary port simply shared those of the
    first.

    For ata_piix combined mode, which ATM is the only user of non-uniform
    ports, this causes the secondary port assume the wrong type. This can
    cause PATA port to use SATA ops, which results in bogus check on PCS
    and detection failure.

    This patch adds ata_probe_ent->pinfo2 which points to optional
    port_info for the secondary port. For the time being, this seems to
    be the simplest solution. This workaround will be removed together
    with ata_probe_ent itself after init model is updated to allow more
    flexibility.

    Signed-off-by: Tejun Heo
    Cc: Alan Cox
    Cc: Nelson A. de Oliveira
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Conflicts:

    drivers/ata/libata-sff.c

    Jeff Garzik
     

24 Aug, 2006

1 commit