From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: "Luck, Tony" <tony.luck@intel.com>
Cc: Robin Holt <holt@sgi.com>,
Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>,
"petkovbb@gmail.com" <petkovbb@gmail.com>,
Nishanth Aravamudan <nacc@us.ibm.com>,
"linux-ia64@vger.kernel.org" <linux-ia64@vger.kernel.org>,
"linux-ide@vger.kernel.org" <linux-ide@vger.kernel.org>,
FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Subject: Re: kernel unaligned accesses on IA64 in IDE
Date: Fri, 22 Aug 2008 16:15:22 -0500 [thread overview]
Message-ID: <1219439722.3339.89.camel@localhost.localdomain> (raw)
In-Reply-To: <200808222036.m7MKa6bT008897@agluck-lia64.sc.intel.com>
On Fri, 2008-08-22 at 13:36 -0700, Luck, Tony wrote:
> > How about long instead of int. int leaves us with the possibility that
> > something else will expect 8 byte alignment.
>
> How about this?
>
> Align __cmd to ward off kernel unaligned access consoles messages on
> ia64 (and perhaps make an almost imperceptible performance improvement
> on other architectures that can handle unaligned access, but do so
> more slowly than aligned accesses).
>
> Signed-off-by: Tony Luck <tony.luck@intel.com>
Yuk, really ... you're blowing out the size of a critical structure by
padding which is unnecessary in 99% of cases. Commands are supposed to
be byte streams. Adding extra alignment to generic code because some
driver has strange rules isn't very well layered.
Also, these are string out instructions ... They don't have any
alignment requirements (or they're not supposed to; they're like
memcpy); they're modelled on the x86 instructions
What about this as the obvious solution? It makes the ia64 version of
this command behave exactly as the x86 version does.
James
---
diff --git a/arch/ia64/include/asm/io.h b/arch/ia64/include/asm/io.h
index 260a85a..7f25750 100644
--- a/arch/ia64/include/asm/io.h
+++ b/arch/ia64/include/asm/io.h
@@ -19,6 +19,8 @@
* Copyright (C) 1999 Don Dugger <don.dugger@intel.com>
*/
+#include <asm/unaligned.h>
+
/* We don't use IO slowdowns on the ia64, but.. */
#define __SLOW_DOWN_IO do { } while (0)
#define SLOW_DOWN_IO do { } while (0)
@@ -241,7 +243,7 @@ __insw (unsigned long port, void *dst, unsigned long count)
unsigned short *dp = dst;
while (count--)
- *dp++ = platform_inw(port);
+ put_unaligned(platform_inw(port), dp++);
}
static inline void
@@ -250,7 +252,7 @@ __insl (unsigned long port, void *dst, unsigned long count)
unsigned int *dp = dst;
while (count--)
- *dp++ = platform_inl(port);
+ put_unaligned(platform_inl(port), dp++);
}
static inline void
@@ -268,7 +270,7 @@ __outsw (unsigned long port, const void *src, unsigned long count)
const unsigned short *sp = src;
while (count--)
- platform_outw(*sp++, port);
+ platform_outw(get_unaligned(sp++), port);
}
static inline void
@@ -277,7 +279,7 @@ __outsl (unsigned long port, const void *src, unsigned long count)
const unsigned int *sp = src;
while (count--)
- platform_outl(*sp++, port);
+ platform_outl(get_unaligned(sp++), port);
}
/*
next prev parent reply other threads:[~2008-08-22 21:15 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-19 22:56 kernel unaligned accesses on IA64 in IDE Nishanth Aravamudan
2008-08-20 1:39 ` Peter Chubb
2008-08-21 21:28 ` Nishanth Aravamudan
2008-08-20 14:35 ` Robin Holt
2008-08-21 21:31 ` Nishanth Aravamudan
2008-08-21 21:54 ` Robin Holt
2008-08-22 0:39 ` Nishanth Aravamudan
2008-08-22 1:11 ` Robin Holt
2008-08-22 16:45 ` Nishanth Aravamudan
2008-08-22 10:15 ` Bartlomiej Zolnierkiewicz
2008-08-22 10:55 ` Boris Petkov
2008-08-22 16:45 ` Nishanth Aravamudan
2008-08-22 17:29 ` Boris Petkov
2008-08-22 18:36 ` Bartlomiej Zolnierkiewicz
2008-08-22 18:51 ` Luck, Tony
2008-08-22 19:39 ` Robin Holt
2008-08-22 20:36 ` Luck, Tony
2008-08-22 20:41 ` Borislav Petkov
2008-08-22 20:54 ` Borislav Petkov
2008-08-22 21:38 ` Nishanth Aravamudan
2008-08-22 21:49 ` Borislav Petkov
2008-08-22 21:14 ` Borislav Petkov
2008-08-22 23:02 ` Nishanth Aravamudan
2008-08-22 23:30 ` Luck, Tony
2008-08-22 23:33 ` James Bottomley
2008-08-22 21:15 ` James Bottomley [this message]
2008-08-25 16:31 ` Nishanth Aravamudan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1219439722.3339.89.camel@localhost.localdomain \
--to=james.bottomley@hansenpartnership.com \
--cc=bzolnier@gmail.com \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=holt@sgi.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-ide@vger.kernel.org \
--cc=nacc@us.ibm.com \
--cc=petkovbb@gmail.com \
--cc=tony.luck@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).