Angel Pons has uploaded this change for review.

View Change

nb/intel/ironlake: Avoid casting pointers to structs

Instead, convert the struct to a union and pass in a pointer to it.

Without the initialization of `reply.command`, Packard Bell MS2290 does
not change. This might be due to incorrect compiler optimizations.

Change-Id: I60e3dca7ad101d840759bdc0c88c50d9f07d65e2
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
---
M src/northbridge/intel/ironlake/raminit.c
1 file changed, 16 insertions(+), 11 deletions(-)

git pull ssh://review.coreboot.org:29418/coreboot refs/changes/67/45367/1
diff --git a/src/northbridge/intel/ironlake/raminit.c b/src/northbridge/intel/ironlake/raminit.c
index aa73d99..9ee2253 100644
--- a/src/northbridge/intel/ironlake/raminit.c
+++ b/src/northbridge/intel/ironlake/raminit.c
@@ -1724,8 +1724,20 @@
return 0;
}

+union uma_reply {
+ struct {
+ u8 group_id;
+ u8 command;
+ u8 reserved;
+ u8 result;
+ u8 field2;
+ u8 unk3[0x48 - 4 - 1];
+ };
+ u32 dwords[0x48 / sizeof(u32)];
+} __packed;
+
/* FIXME: Add timeout. */
-static int recv_heci_message(u32 *message, u32 *message_size)
+static int recv_heci_message(union uma_reply *message, u32 *message_size)
{
struct mei_header head;
int current_position;
@@ -1735,7 +1747,7 @@
u32 current_size;
current_size = *message_size - current_position;
if (recv_heci_packet
- (&head, message + (current_position >> 2),
+ (&head, message->dwords + (current_position >> 2),
&current_size) == -1)
break;
if (!current_size)
@@ -1755,14 +1767,7 @@

static void send_heci_uma_message(const u64 heci_uma_addr, const unsigned int heci_uma_size)
{
- struct uma_reply {
- u8 group_id;
- u8 command;
- u8 reserved;
- u8 result;
- u8 field2;
- u8 unk3[0x48 - 4 - 1];
- } __packed reply;
+ union uma_reply reply;

/* FIXME: recv_heci_message() does not always initialize 'reply' */
reply.command = 0;
@@ -1791,7 +1796,7 @@
send_heci_message((u8 *) &msg, sizeof(msg), 0, 7);

reply_size = sizeof(reply);
- if (recv_heci_message((u32 *) &reply, &reply_size) == -1)
+ if (recv_heci_message(&reply, &reply_size) == -1)
return;

if (reply.command != (MKHI_SET_UMA | (1 << 7)))

To view, visit change 45367. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I60e3dca7ad101d840759bdc0c88c50d9f07d65e2
Gerrit-Change-Number: 45367
Gerrit-PatchSet: 1
Gerrit-Owner: Angel Pons <th3fanbus@gmail.com>
Gerrit-Reviewer: Patrick Rudolph <siro@das-labor.org>
Gerrit-MessageType: newchange