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
| ||
|
Date: Wed, 23 Jul 2008 09:01:34 +0200 From: "pHilipp Zabel" <philipp.zabel@...il.com> To: "Greg KH" <gregkh@...e.de> Cc: linux-kernel@...r.kernel.org, stable@...nel.org, "Linus Torvalds" <torvalds@...ux-foundation.org>, "Justin Forbes" <jmforbes@...uxtx.org>, "Zwane Mwaikambo" <zwane@....linux.org.uk>, "Theodore Ts'o" <tytso@....edu>, "Randy Dunlap" <rdunlap@...otime.net>, "Dave Jones" <davej@...hat.com>, "Chuck Wolber" <chuckw@...ntumlinux.com>, "Chris Wedgwood" <reviews@...cw.f00f.org>, "Michael Krufky" <mkrufky@...uxtv.org>, "Chuck Ebbert" <cebbert@...hat.com>, "Domenico Andreoli" <cavokz@...il.com>, "Willy Tarreau" <w@....eu>, "Rodrigo Rubira Branco" <rbranco@...checkpoint.com>, "Jake Edge" <jake@....net>, akpm@...ux-foundation.org, alan@...rguk.ukuu.org.uk, "Pierre Ossman" <drzeus@...eus.cx> Subject: Re: [patch 44/47] pxamci: fix byte aligned DMA transfers Hi, On Wed, Jul 23, 2008 at 1:17 AM, Greg KH <gregkh@...e.de> wrote: > 2.6.25-stable review patch. If anyone has any objections, please let us > know. There is an ugly typo in the patch below that was fixed by Karl Beldan: http://git.kernel.org/?p=linux/kernel/git/drzeus/mmc.git;a=commit;h=28bbe535df5c461c25eb57affb30e007072429c3 Not sure how you handle this, maybe this patch should only go in together with the other. > ------------------ > From: Philipp Zabel <philipp.zabel@...il.com> > > commit 97f8571e663c808ad2d01a396627235167291556 upstream > > The pxa27x DMA controller defaults to 64-bit alignment. This caused > the SCR reads to fail (and, depending on card type, error out) when > card->raw_scr was not aligned on a 8-byte boundary. > > For performance reasons all scatter-gather addresses passed to > pxamci_request should be aligned on 8-byte boundaries, but if > this can't be guaranteed, byte aligned DMA transfers in the > have to be enabled in the controller to get correct behaviour. > > Signed-off-by: Philipp Zabel <philipp.zabel@...il.com> > Signed-off-by: Pierre Ossman <drzeus@...eus.cx> > Signed-off-by: Linus Torvalds <torvalds@...ux-foundation.org> > Signed-off-by: Greg Kroah-Hartman <gregkh@...e.de> > > --- > drivers/mmc/host/pxamci.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > --- a/drivers/mmc/host/pxamci.c > +++ b/drivers/mmc/host/pxamci.c > @@ -114,6 +114,7 @@ static void pxamci_setup_data(struct pxa > unsigned int nob = data->blocks; > unsigned long long clks; > unsigned int timeout; > + bool dalgn = 0; > u32 dcmd; > int i; > > @@ -152,6 +153,9 @@ static void pxamci_setup_data(struct pxa > host->sg_cpu[i].dcmd = dcmd | length; > if (length & 31 && !(data->flags & MMC_DATA_READ)) > host->sg_cpu[i].dcmd |= DCMD_ENDIRQEN; > + /* Not aligned to 8-byte boundary? */ > + if (sg_dma_address(&data->sg[i]) & 0x7) > + dalgn = 1; > if (data->flags & MMC_DATA_READ) { > host->sg_cpu[i].dsadr = host->res->start + MMC_RXFIFO; > host->sg_cpu[i].dtadr = sg_dma_address(&data->sg[i]); > @@ -165,6 +169,15 @@ static void pxamci_setup_data(struct pxa > host->sg_cpu[host->dma_len - 1].ddadr = DDADR_STOP; > wmb(); > > + /* > + * The PXA27x DMA controller encounters overhead when working with > + * unaligned (to 8-byte boundaries) data, so switch on byte alignment > + * mode only if we have unaligned data. > + */ > + if (dalgn) > + DALGN |= (1 << host->dma); > + else > + DALGN &= (1 << host->dma); ^^^^^ here > DDADR(host->dma) = host->sg_dma; > DCSR(host->dma) = DCSR_RUN; > } > > -- > regards Philipp -- 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