* [PATCH] ACPI, APEI: Cleanup alignment related codes for APEI
@ 2013-11-07 8:11 Chen, Gong
2013-11-07 20:51 ` Luck, Tony
0 siblings, 1 reply; 3+ messages in thread
From: Chen, Gong @ 2013-11-07 8:11 UTC (permalink / raw)
To: tony.luck, bp; +Cc: linux-acpi, Chen, Gong
We ever used *memcpy* to avoid access alignment issue between
firmware and OS. Now we can use a better and standard way
to avoid this issue. No functional changes.
Signed-off-by: Chen, Gong <gong.chen@linux.intel.com>
---
drivers/acpi/apei/apei-base.c | 4 ++--
drivers/acpi/apei/einj.c | 19 +++++++++----------
drivers/acpi/apei/erst.c | 2 +-
3 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/drivers/acpi/apei/apei-base.c b/drivers/acpi/apei/apei-base.c
index 46f80e2..c481adf 100644
--- a/drivers/acpi/apei/apei-base.c
+++ b/drivers/acpi/apei/apei-base.c
@@ -41,6 +41,7 @@
#include <linux/rculist.h>
#include <linux/interrupt.h>
#include <linux/debugfs.h>
+#include <asm/unaligned.h>
#include "apei-internal.h"
@@ -567,8 +568,7 @@ static int apei_check_gar(struct acpi_generic_address *reg, u64 *paddr,
bit_offset = reg->bit_offset;
access_size_code = reg->access_width;
space_id = reg->space_id;
- /* Handle possible alignment issues */
- memcpy(paddr, ®->address, sizeof(*paddr));
+ paddr = get_unaligned(®->address);
if (!*paddr) {
pr_warning(FW_BUG APEI_PFX
"Invalid physical address in GAR [0x%llx/%u/%u/%u/%u]\n",
diff --git a/drivers/acpi/apei/einj.c b/drivers/acpi/apei/einj.c
index fb57d03..361177a 100644
--- a/drivers/acpi/apei/einj.c
+++ b/drivers/acpi/apei/einj.c
@@ -34,6 +34,7 @@
#include <linux/delay.h>
#include <linux/mm.h>
#include <acpi/acpi.h>
+#include <asm/unaligned.h>
#include "apei-internal.h"
@@ -216,7 +217,7 @@ static void check_vendor_extension(u64 paddr,
static void *einj_get_parameter_address(void)
{
int i;
- u64 paddrv4 = 0, paddrv5 = 0;
+ u64 pa_v4 = 0, pa_v5 = 0;
struct acpi_whea_header *entry;
entry = EINJ_TAB_ENTRY(einj_tab);
@@ -225,30 +226,28 @@ static void *einj_get_parameter_address(void)
entry->instruction == ACPI_EINJ_WRITE_REGISTER &&
entry->register_region.space_id ==
ACPI_ADR_SPACE_SYSTEM_MEMORY)
- memcpy(&paddrv4, &entry->register_region.address,
- sizeof(paddrv4));
+ pa_v4 = get_unaligned(&entry->register_region.address);
if (entry->action == ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS &&
entry->instruction == ACPI_EINJ_WRITE_REGISTER &&
entry->register_region.space_id ==
ACPI_ADR_SPACE_SYSTEM_MEMORY)
- memcpy(&paddrv5, &entry->register_region.address,
- sizeof(paddrv5));
+ pa_v5 = get_unaligned(&entry->register_region.address);
entry++;
}
- if (paddrv5) {
+ if (pa_v5) {
struct set_error_type_with_address *v5param;
- v5param = acpi_os_map_memory(paddrv5, sizeof(*v5param));
+ v5param = acpi_os_map_memory(pa_v5, sizeof(*v5param));
if (v5param) {
acpi5 = 1;
- check_vendor_extension(paddrv5, v5param);
+ check_vendor_extension(pa_v5, v5param);
return v5param;
}
}
- if (param_extension && paddrv4) {
+ if (param_extension && pa_v4) {
struct einj_parameter *v4param;
- v4param = acpi_os_map_memory(paddrv4, sizeof(*v4param));
+ v4param = acpi_os_map_memory(pa_v4, sizeof(*v4param));
if (!v4param)
return NULL;
if (v4param->reserved1 || v4param->reserved2) {
diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c
index 26311f2..bf30a12 100644
--- a/drivers/acpi/apei/erst.c
+++ b/drivers/acpi/apei/erst.c
@@ -611,7 +611,7 @@ static void __erst_record_id_cache_compact(void)
if (entries[i] == APEI_ERST_INVALID_RECORD_ID)
continue;
if (wpos != i)
- memcpy(&entries[wpos], &entries[i], sizeof(entries[i]));
+ entries[wpos] = entries[i];
wpos++;
}
erst_record_id_cache.len = wpos;
--
1.8.4.rc3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [PATCH] ACPI, APEI: Cleanup alignment related codes for APEI
2013-11-07 8:11 [PATCH] ACPI, APEI: Cleanup alignment related codes for APEI Chen, Gong
@ 2013-11-07 20:51 ` Luck, Tony
2013-11-08 2:33 ` Chen, Gong
0 siblings, 1 reply; 3+ messages in thread
From: Luck, Tony @ 2013-11-07 20:51 UTC (permalink / raw)
To: Chen, Gong, bp@alien8.de; +Cc: linux-acpi@vger.kernel.org
> We ever used *memcpy* to avoid access alignment issue between
> firmware and OS. Now we can use a better and standard way
> to avoid this issue. No functional changes.
There are some other cleanups in here (changing variable names,
using structure assignment instead of memcpy). Commit message
should describe them all, not just the change that you started out
to make.
-Tony
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] ACPI, APEI: Cleanup alignment related codes for APEI
2013-11-07 20:51 ` Luck, Tony
@ 2013-11-08 2:33 ` Chen, Gong
0 siblings, 0 replies; 3+ messages in thread
From: Chen, Gong @ 2013-11-08 2:33 UTC (permalink / raw)
To: Luck, Tony; +Cc: bp@alien8.de, linux-acpi@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 1121 bytes --]
On Thu, Nov 07, 2013 at 08:51:32PM +0000, Luck, Tony wrote:
> Date: Thu, 7 Nov 2013 20:51:32 +0000
> From: "Luck, Tony" <tony.luck@intel.com>
> To: "Chen, Gong" <gong.chen@linux.intel.com>, "bp@alien8.de" <bp@alien8.de>
> CC: "linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>
> Subject: RE: [PATCH] ACPI, APEI: Cleanup alignment related codes for APEI
>
> > We ever used *memcpy* to avoid access alignment issue between
> > firmware and OS. Now we can use a better and standard way
> > to avoid this issue. No functional changes.
>
> There are some other cleanups in here (changing variable names,
> using structure assignment instead of memcpy). Commit message
> should describe them all, not just the change that you started out
> to make.
>
> -Tony
How about this:
We ever used *memcpy* to avoid access alignment issue between
firmware and OS. Now we can use a better and standard way
to avoid this issue. In the meanwhile, simplify some variable names
to avoid the limit of 80 characters per line and use structure
assignment instead of unnecessary memcpy. No functional changes.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-11-08 2:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-07 8:11 [PATCH] ACPI, APEI: Cleanup alignment related codes for APEI Chen, Gong
2013-11-07 20:51 ` Luck, Tony
2013-11-08 2:33 ` Chen, Gong
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).