Skip to content

Commit

Permalink
platform/x86/intel/sdsi: Fix bug in multi packet reads
Browse files Browse the repository at this point in the history
Fix bug that added an offset to the mailbox addr during multi-packet
reads. Did not affect current ABI since it doesn't support multi-packet
transactions.

Fixes: 2546c60 ("platform/x86: Add Intel Software Defined Silicon driver")
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Link: https://lore.kernel.org/r/20220420155622.1763633-4-david.e.box@linux.intel.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
  • Loading branch information
David E. Box authored and Hans de Goede committed Apr 27, 2022
1 parent 5a79615 commit 20b5ec3
Showing 1 changed file with 3 additions and 5 deletions.
8 changes: 3 additions & 5 deletions drivers/platform/x86/intel/sdsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ enum sdsi_command {

struct sdsi_mbox_info {
u64 *payload;
u64 *buffer;
void *buffer;
int size;
};

Expand Down Expand Up @@ -165,9 +165,7 @@ static int sdsi_mbox_cmd_read(struct sdsi_priv *priv, struct sdsi_mbox_info *inf
total = 0;
loop = 0;
do {
int offset = SDSI_SIZE_MAILBOX * loop;
void __iomem *addr = priv->mbox_addr + offset;
u64 *buf = info->buffer + offset / SDSI_SIZE_CMD;
void *buf = info->buffer + (SDSI_SIZE_MAILBOX * loop);
u32 packet_size;

/* Poll on ready bit */
Expand Down Expand Up @@ -198,7 +196,7 @@ static int sdsi_mbox_cmd_read(struct sdsi_priv *priv, struct sdsi_mbox_info *inf
break;
}

sdsi_memcpy64_fromio(buf, addr, round_up(packet_size, SDSI_SIZE_CMD));
sdsi_memcpy64_fromio(buf, priv->mbox_addr, round_up(packet_size, SDSI_SIZE_CMD));

total += packet_size;

Expand Down

0 comments on commit 20b5ec3

Please sign in to comment.