Re: kernel unaligned accesses on IA64 in IDE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 20.08.2008 [09:35:31 -0500], Robin Holt wrote:
> On Tue, Aug 19, 2008 at 03:56:06PM -0700, Nishanth Aravamudan wrote:
> > Hi Tony, Bart,
> > 
> > As mentioned in the cpu_clock() thread, I am seeing (consistently) 5
> > unaligned accesses in the bootlogs on a 2-node IA64 box:
> > 
> > [   32.593534] kernel unaligned access to 0xe000000644220466, ip=0xa000000100516fa1
> > [   32.601171] kernel unaligned access to 0xe00000064422046e, ip=0xa000000100516fa1
> > [   35.333273] kernel unaligned access to 0xe00000064451693e, ip=0xa000000100516fa1
> > [   35.340912] kernel unaligned access to 0xe000000644516942, ip=0xa000000100516fa1
> > [   35.348557] kernel unaligned access to 0xe000000644516946, ip=0xa000000100516fa1
> > 
> > Looking in the corresponding System.map, I see:
> > 
> > a000000100516940 T ide_input_data
> > a000000100516ec0 T ide_output_data
> > a000000100517340 T ide_execute_command
> > a000000100517420 t atapi_reset_pollfunc
> 
> I compiled your .config with commit ??? and got ide_output_data at
> a000000100516ae0 so the offending instruction is at a000000100516bc1
> 
> a000000100516bc0:       08 a8 00 4c 18 10       [MMI]       ld8 r21=[r38]
> a000000100516bc6:       d0 22 90 20 28 c0                   ld4 r45=[r36],4
> a000000100516bcc:       05 28 01 84                         mov r46=r37
> 
> Those look reasonable.

See my reply to Peter, but this seems the same as my results.

> That seems to be coming from include/asm/io.h:280
> 
> static inline void
> __outsl (unsigned long port, const void *src, unsigned long count)
> {
> 	const unsigned int *sp = src;
> 
> 	while (count--)
> 		platform_outl(*sp++, port);
> }
> 
> which is really outsl and that is only used on line 339:
> 			outsl(data_addr, buf, len / 4);

As does this.

> With as little as I know about what I am doing, I would probably add a
> printk immediately after the outsl line and dump out data_addr, buf,
> and len to see what those values are.  I expect either data_addr is
> not aligned on an 8 byte boundary or buf is not aligned on a 4 byte
> boundary.

Here's what I got, I put the printk() before the outsl() line, as I
don't believe the arguments are being manipulated?

[   32.597792] outsl(496, e000000644678466, 3)
[   32.602116] kernel unaligned access to 0xe000000644678466, ip=0xa0000001005174d1
[   32.609744] kernel unaligned access to 0xe00000064467846e, ip=0xa0000001005174d1
[   35.342053] outsl(496, e0000013041d693e, 3)
[   35.346388] kernel unaligned access to 0xe0000013041d693e, ip=0xa0000001005174d1
[   35.354016] kernel unaligned access to 0xe0000013041d6942, ip=0xa000000100517531
[   35.361633] kernel unaligned access to 0xe0000013041d6946, ip=0xa0000001005174d1
[   32.648053] outsl(496, e000000644678466, 3)
[   35.377343] outsl(496, e0000013041d693e, 3)
[   35.383999] outsl(496, e000001303fbd9c6, 3)
[   35.398650] outsl(496, e0000013041d693e, 3)
[   35.405287] outsl(496, e000001303fbd9c6, 3)
[   35.410586] outsl(496, e0000013041d693e, 3)
[   35.417489] outsl(496, e000001303fbd9c6, 3)
[   35.444091] outsl(496, e000001303fbd2a6, 3)
[   35.449121] outsl(496, e0000013041d693e, 3)
[   35.455748] outsl(496, e000001303fbd2a6, 3)
[   35.470427] outsl(496, e0000013041d693e, 3)
[   35.477141] outsl(496, e000001303fbd2a6, 3)
[   35.482305] outsl(496, e0000013041d693e, 3)
[   35.488964] outsl(496, e000001303fbd2a6, 3)
[   35.494232] outsl(496, e0000013041d693e, 3)
[   35.500912] outsl(496, e000001303fbd2a6, 3)


Thanks,
Nish

-- 
Nishanth Aravamudan <nacc@xxxxxxxxxx>
IBM Linux Technology Center
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux