Mailing List Archive

[linux-2.6.18-xen] Dom0 ACPI: handle I/O access width that are not a multiple of 8 bits
# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1221731055 -3600
# Node ID 5f3c40a4c21491b311b9837c0990ff833d4bf62b
# Parent 3161879fdf229fe9893e5dea7089aa0a926e86d0
Dom0 ACPI: handle I/O access width that are not a multiple of 8 bits

Back ported following patch from upstream to support 4-bit access
width which is required by T-state control.
Below are original commit comments from upstream.

commit 49fbabf56dc715bbb51e59742e82ba762790aac0
Author: Zhao Yakui <yakui.zhao@intel.com>
Date: Thu Nov 15 17:01:06 2007 +0800

ACPI: Handle I/O access width requestst that are not a multiple of
8 bits.

We've run into BIOS that hand us 4-bit access width requests
for T-state control when the code expected only multipls of
8-bits.
Round up.

Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Signed-off-by: Li Shaohua <shaohua.li@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>

Signed-off-by: Wei Gang <gang.wei@intel.com>
---
drivers/acpi/osl.c | 25 +++++++++----------------
1 files changed, 9 insertions(+), 16 deletions(-)

diff -r 3161879fdf22 -r 5f3c40a4c214 drivers/acpi/osl.c
--- a/drivers/acpi/osl.c Tue Sep 16 21:26:15 2008 +0900
+++ b/drivers/acpi/osl.c Thu Sep 18 10:44:15 2008 +0100
@@ -337,17 +337,14 @@ acpi_status acpi_os_read_port(acpi_io_ad
if (!value)
value = &dummy;

- switch (width) {
- case 8:
+ *value = 0;
+ if (width <= 8) {
*(u8 *) value = inb(port);
- break;
- case 16:
+ } else if (width <= 16) {
*(u16 *) value = inw(port);
- break;
- case 32:
+ } else if (width <= 32) {
*(u32 *) value = inl(port);
- break;
- default:
+ } else {
BUG();
}

@@ -358,17 +355,13 @@ EXPORT_SYMBOL(acpi_os_read_port);

acpi_status acpi_os_write_port(acpi_io_address port, u32 value, u32 width)
{
- switch (width) {
- case 8:
+ if (width <= 8) {
outb(value, port);
- break;
- case 16:
+ } else if (width <= 16) {
outw(value, port);
- break;
- case 32:
+ } else if (width <= 32) {
outl(value, port);
- break;
- default:
+ } else {
BUG();
}


_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog