Did you apply the alignment patch too? AFAIK, the problem is never fixed in mainstream trees.
Best Regards, Leo > -----Original Message----- > From: linuxppc-embedded-bounces+leoli=freescale.com at ozlabs.org > [mailto:linuxppc-embedded-bounces+leoli=freescale.com at ozlabs.org] On Behalf > Of Laurent Lagrange > Sent: Tuesday, July 04, 2006 11:37 PM > To: pantelis at embeddedalley.com > Cc: linuxppc-embedded at ozlabs.org > Subject: Linux 2.6.x : cpm_dpalloc alignment bug perhaps not fully resolved > > > Hello Pantelis, > > Few months ago (25 January 2006), I sent a mail about an alignment bug in > cpm_dpalloc. > I applied and verified the provided patch. I was very satisfied with the > result. > > Today I port a driver from Linux 2.4 to Linux 2.6 and I have strange > results. > > The driver allocates rx and tx bds (8 bytes aligned) in the module_init for > 4 SCC ports. > That is always right. Then one port is opened by an application and a user > configuration > is set via an ioctl (set_conf). > > This ioctl first frees the old bds : > cpm_dpfree(chan->rx_bd_offset); > cpm_dpfree(chan->tx_bd_offset); > then allocates the new ones : > chan->rx_bd_offset = cpm_dpalloc(sizeof(cbd_t) * chan->conf.rx_bufnbr, > 8); > chan->tx_bd_offset = cpm_dpalloc(sizeof(cbd_t) * chan->conf.tx_bufnbr, > 8); > with rx_bufnbr == 8 and tx_bufnbr == 2 > > module_init > SCC1 rx_bd_offset=160 > SCC1 tx_bd_offset=1a8 > SCC2 rx_bd_offset=1c0 > SCC2 tx_bd_offset=208 > SCC3 rx_bd_offset=220 > SCC3 tx_bd_offset=260 > SCC4 rx_bd_offset=278 > SCC4 tx_bd_offset=2c0 > set_conf > SCC1 rx_bd_offset=160 > SCC1 tx_bd_offset=1a4 -> ??? > > module_init > SCC1 rx_bd_offset=160 > SCC1 tx_bd_offset=1a8 > SCC2 rx_bd_offset=1c0 > SCC2 tx_bd_offset=208 > SCC3 rx_bd_offset=220 > SCC3 tx_bd_offset=260 > SCC4 rx_bd_offset=278 > SCC4 tx_bd_offset=2c0 > set_conf > SCC2 rx_bd_offset=1c0 > SCC2 tx_bd_offset=202 -> ??? > > module_init > SCC1 rx_bd_offset=160 > SCC1 tx_bd_offset=1a8 > SCC2 rx_bd_offset=1c0 > SCC2 tx_bd_offset=208 > SCC3 rx_bd_offset=220 > SCC3 tx_bd_offset=260 > SCC4 rx_bd_offset=278 > SCC4 tx_bd_offset=2c0 > set_conf > SCC3 rx_bd_offset=220 > SCC3 tx_bd_offset=260 -> ok > > module_init > SCC1 rx_bd_offset=160 > SCC1 tx_bd_offset=1a8 > SCC2 rx_bd_offset=1c0 > SCC2 tx_bd_offset=208 > SCC3 rx_bd_offset=220 > SCC3 tx_bd_offset=260 > SCC4 rx_bd_offset=278 > SCC4 tx_bd_offset=2c0 > set_conf > SCC4 rx_bd_offset=278 > SCC4 tx_bd_offset=2c0 -> ok > > WARNING : if I only uses the SCC1 port without allocating bds for the other > ports, > I can free and reallocate the bds for the SCC1 port as many times I want. > > module_init > SCC1 rx_bd_offset=160 > SCC1 tx_bd_offset=1a8 > set_conf > SCC1 rx_bd_offset=160 > SCC1 tx_bd_offset=1a8 -> ok > > Really, I don't understand how this can arise. > Any idea ? > > Thanks > Laurent > > > > > _______________________________________________ > Linuxppc-embedded mailing list > Linuxppc-embedded at ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-embedded
