Prev: [patch 117/123] KVM: x86 emulator: Forbid modifying CS segment register by mov instruction
Next: [patch 114/123] dm ioctl: only issue uevent on resume if state changed
From: Greg KH on 12 Mar 2010 19:30 2.6.33-stable review patch. If anyone has any objections, please let me know. ----------------- From: Edward Shao <laface.tw(a)gmail.com> commit 05197921ff3dad52d99fd1647974c57d9c28d40e upstream. According "5.3.6 Capability Parameters (HCCPARAMS)" of xHCI rev0.96 spec, value of xECP register indicates a relative offset, in 32-bit words, from Base to the beginning of the first extended capability. The wrong calculation will cause BIOS handoff fail (not handoff from BIOS) in some platform with BIOS USB legacy sup support. Signed-off-by: Edward Shao <laface.tw(a)gmail.com> Cc: Sarah Sharp <sarah.a.sharp(a)linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh(a)suse.de> --- drivers/usb/host/xhci-ext-caps.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --- a/drivers/usb/host/xhci-ext-caps.h +++ b/drivers/usb/host/xhci-ext-caps.h @@ -101,12 +101,15 @@ static inline int xhci_find_next_cap_off next = readl(base + ext_offset); - if (ext_offset == XHCI_HCC_PARAMS_OFFSET) + if (ext_offset == XHCI_HCC_PARAMS_OFFSET) { /* Find the first extended capability */ next = XHCI_HCC_EXT_CAPS(next); - else + ext_offset = 0; + } else { /* Find the next extended capability */ next = XHCI_EXT_CAPS_NEXT(next); + } + if (!next) return 0; /* -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |