Skip to content

Commit

Permalink
[PATCH] IPMI: fix for handling bad IPMI DMI data
Browse files Browse the repository at this point in the history
Ignore the bottom bit of the base address from the DMI data.  It is
supposed to be set to 1 if it is I/O space.  Few systems do this, but this
enables the ones that do set it to work properly.

Signed-off-by: Corey Minyard <minyard@acm.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Corey Minyard authored and Linus Torvalds committed May 1, 2005
1 parent 5717ffb commit 9206880
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion drivers/char/ipmi/ipmi_si_intf.c
Original file line number Diff line number Diff line change
Expand Up @@ -1623,7 +1623,13 @@ static int decode_dmi(dmi_header_t *dm, int intf_num)
}
} else {
/* Old DMI spec. */
ipmi_data->base_addr = base_addr;
/* Note that technically, the lower bit of the base
* address should be 1 if the address is I/O and 0 if
* the address is in memory. So many systems get that
* wrong (and all that I have seen are I/O) so we just
* ignore that bit and assume I/O. Systems that use
* memory should use the newer spec, anyway. */
ipmi_data->base_addr = base_addr & 0xfffe;
ipmi_data->addr_space = IPMI_IO_ADDR_SPACE;
ipmi_data->offset = 1;
}
Expand Down

0 comments on commit 9206880

Please sign in to comment.