提交 92068801 编写于 作者: C Corey Minyard 提交者: Linus Torvalds

[PATCH] IPMI: fix for handling bad IPMI DMI data

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: NCorey Minyard <minyard@acm.org>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 5717ffbe
...@@ -1623,7 +1623,13 @@ static int decode_dmi(dmi_header_t *dm, int intf_num) ...@@ -1623,7 +1623,13 @@ static int decode_dmi(dmi_header_t *dm, int intf_num)
} }
} else { } else {
/* Old DMI spec. */ /* 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->addr_space = IPMI_IO_ADDR_SPACE;
ipmi_data->offset = 1; ipmi_data->offset = 1;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册