lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:	Wed, 15 Aug 2007 14:54:57 +0800
From:	"Sonic Zhang" <sonic.adi@...il.com>
To:	"Alan Cox" <alan@...rguk.ukuu.org.uk>
Cc:	linux-kernel@...r.kernel.org
Subject: Re: [PATCH again] [libata] libata driver for bf548 on chip ATAPI controller.

forgot to reply to all.

On 8/15/07, Sonic Zhang <sonic.adi@...il.com> wrote:
> On 8/14/07, Alan Cox <alan@...rguk.ukuu.org.uk> wrote:
> > > +/**
> > > + * Register transfer timing table
> > > + */
> >
> > Libata has a complete set of transfer mode tables and timing functions -
> > any reason for not using them ?
>
> These code are from the sample code in hardware manual. I will check
> the libata source to see if I can rewrite them in libata functions.
>
> >
> >
> > > +                       /* increase tcyc - tdvs (tcyc_tdvs) until we
> > > meed
> > > +                        * the minimum cycle length
> > > +                        */
> > > +                       while ( (tdvs + tcyc_tdvs) < tcyc ) {
> > > +                               tcyc_tdvs++;
> > > +                       }
> >
> > Why not
> >
> >                         if ((tdvs + tcyc_tvds) < tcyc)
> >                                 tcyc_tdvs = tcyc - tdvs;
> >
> > > +                       /* increase tk until we meed the minimum cycle
> > > length */
> > > +                       while ( (tkw+td) < n0 ) {
> > > +                               tkw++;
> > > +                       }
> >
> >
> >                         if (tkw + td < n0)
> >                                 tkw = n0 - td;
> >
> > (and fix up brackets)
>
> Yes, your suggestion is better.
>
> > >
> > > +static void inline wait_complete(unsigned long base, unsigned short
> > > mask)
> > > +{
> > > +       unsigned short status;
> > > +
> > > +       do {
> > > +               status = ATAPI_GET_INT_STATUS(base) & mask;
> > > +       } while (!status);
> >
> > Does this need a timeout or can a device write never get stuck ?
>
> The hardware manual says whenever an ATAPI operation is done or
> terminated in error by the devices, a bit in the status register is
> set. Is a timeout still necessary?
>
>
> >
> > > +static int bfin_port_start(struct ata_port *ap)
> > > +{
> > > +       pr_debug("in atapi port start\n");
> > > +       if (ap->udma_mask != 0 || ap->mwdma_mask != 0) {
> > > +               if (request_dma(CH_ATAPI_RX, "BFIN ATAPI RX DMA") >= 0)
> > > {
> > > +                       if (request_dma(CH_ATAPI_TX,
> > > +                               "BFIN ATAPI TX DMA") >= 0) {
> > > +                               return 0;
> > > +                       }
> > > +                       free_dma(CH_ATAPI_RX);
> > > +               }
> > > +               ap->udma_mask = 0;
> > > +               ap->mwdma_mask = 0;
> > > +               dev_err(ap->dev, "Unable to request ATAPI DMA!\n");
> > > +               return -EBUSY;
> >
> > Is this an error case - if you clear the UDMA/MWDMA mask then DMA won't
> > be needed will it so you can continue after the problem but slowly ?
>
> UDMA/MWDMA masks are set in ata_host_alloc_pinfo(), where it is
> cleared? If these masks are cleared before port starts, this driver
> falls back to PIO mode. Why this is an error case?
>
>
> >
> > Otherwise looks sound. A lot of reset method duplication but that isn't
> > your fault and something that wants more work in libata to avoid
> >
> >
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ