mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-25 13:43:55 +08:00
powerpc/powernv: Fix endian issues in memory error handling code
struct OpalMemoryErrorData is passed to us from firmware, so we have to byteswap it. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
2213fb142f
commit
223ca9d855
@ -510,7 +510,7 @@ enum OpalMemErr_DynErrType {
|
||||
struct OpalMemoryErrorData {
|
||||
enum OpalMemErr_Version version:8; /* 0x00 */
|
||||
enum OpalMemErrType type:8; /* 0x01 */
|
||||
uint16_t flags; /* 0x02 */
|
||||
__be16 flags; /* 0x02 */
|
||||
uint8_t reserved_1[4]; /* 0x04 */
|
||||
|
||||
union {
|
||||
@ -518,15 +518,15 @@ struct OpalMemoryErrorData {
|
||||
struct {
|
||||
enum OpalMemErr_ResilErrType resil_err_type:8;
|
||||
uint8_t reserved_1[7];
|
||||
uint64_t physical_address_start;
|
||||
uint64_t physical_address_end;
|
||||
__be64 physical_address_start;
|
||||
__be64 physical_address_end;
|
||||
} resilience;
|
||||
/* Dynamic memory deallocation error info */
|
||||
struct {
|
||||
enum OpalMemErr_DynErrType dyn_err_type:8;
|
||||
uint8_t reserved_1[7];
|
||||
uint64_t physical_address_start;
|
||||
uint64_t physical_address_end;
|
||||
__be64 physical_address_start;
|
||||
__be64 physical_address_end;
|
||||
} dyn_dealloc;
|
||||
} u;
|
||||
};
|
||||
|
@ -47,12 +47,12 @@ static void handle_memory_error_event(struct OpalMemoryErrorData *merr_evt)
|
||||
__func__, merr_evt->type);
|
||||
switch (merr_evt->type) {
|
||||
case OPAL_MEM_ERR_TYPE_RESILIENCE:
|
||||
paddr_start = merr_evt->u.resilience.physical_address_start;
|
||||
paddr_end = merr_evt->u.resilience.physical_address_end;
|
||||
paddr_start = be64_to_cpu(merr_evt->u.resilience.physical_address_start);
|
||||
paddr_end = be64_to_cpu(merr_evt->u.resilience.physical_address_end);
|
||||
break;
|
||||
case OPAL_MEM_ERR_TYPE_DYN_DALLOC:
|
||||
paddr_start = merr_evt->u.dyn_dealloc.physical_address_start;
|
||||
paddr_end = merr_evt->u.dyn_dealloc.physical_address_end;
|
||||
paddr_start = be64_to_cpu(merr_evt->u.dyn_dealloc.physical_address_start);
|
||||
paddr_end = be64_to_cpu(merr_evt->u.dyn_dealloc.physical_address_end);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user