Linux 2.6.38.1

Drop linux-2.6-ehci-check-port-status.patch, merged in .38.1
Add dcdbas-force-smi-to-happen-when-expected.patch
This commit is contained in:
Chuck Ebbert 2011-03-23 17:50:28 -04:00
parent a13914ae1e
commit 6236c85dc6
5 changed files with 48 additions and 2662 deletions

View File

@ -0,0 +1,34 @@
From: Stuart Hayes <stuart_hayes@yahoo.com>
Date: Wed, 2 Mar 2011 12:42:05 +0000 (+0100)
Subject: dcdbas: force SMI to happen when expected
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=dd65c736d1b5312c80c88a64bf521db4959eded5
dcdbas: force SMI to happen when expected
The dcdbas driver can do an I/O write to cause a SMI to occur. The SMI handler
looks at certain registers and memory locations, so the SMI needs to happen
immediately. On some systems I/O writes are posted, though, causing the SMI to
happen well after the "outb" occurred, which causes random failures. Following
the "outb" with an "inb" forces the write to go through even if it is posted.
Signed-off-by: Stuart Hayes <stuart_hayes@yahoo.com>
Acked-by: Doug Warzecha <douglas_warzecha@dell.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
diff --git a/drivers/firmware/dcdbas.c b/drivers/firmware/dcdbas.c
index 69ad529..ea5ac2d 100644
--- a/drivers/firmware/dcdbas.c
+++ b/drivers/firmware/dcdbas.c
@@ -268,8 +268,10 @@ int dcdbas_smi_request(struct smi_cmd *smi_cmd)
}
/* generate SMI */
+ /* inb to force posted write through and make SMI happen now */
asm volatile (
- "outb %b0,%w1"
+ "outb %b0,%w1\n"
+ "inb %w1"
: /* no output args */
: "a" (smi_cmd->command_code),
"d" (smi_cmd->command_address),

File diff suppressed because it is too large Load Diff

View File

@ -51,7 +51,7 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be prepended with "0.", so
# for example a 3 here will become 0.3
#
%global baserelease 5
%global baserelease 6
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@ -63,7 +63,7 @@ Summary: The Linux kernel
%if 0%{?released_kernel}
# Do we have a -stable update to apply?
%define stable_update 0
%define stable_update 1
# Is it a -stable RC?
%define stable_rc 0
# Set rpm version accordingly
@ -727,7 +727,6 @@ Patch12102: efifb_update.patch
Patch12200: acpi_reboot.patch
# Runtime power management
Patch12202: linux-2.6-ehci-check-port-status.patch
Patch12203: linux-2.6-usb-pci-autosuspend.patch
Patch12204: linux-2.6-enable-more-pci-autosuspend.patch
Patch12205: runtime_pm_fixups.patch
@ -736,6 +735,9 @@ Patch12303: dmar-disable-when-ricoh-multifunction.patch
Patch12421: fs-call-security_d_instantiate-in-d_obtain_alias.patch
# Fix possible memory corruption on Dell HW
Patch12430: dcdbas-force-smi-to-happen-when-expected.patch
%endif
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@ -1356,7 +1358,6 @@ ApplyPatch efifb_update.patch
ApplyPatch acpi_reboot.patch
# Runtime PM
#ApplyPatch linux-2.6-ehci-check-port-status.patch
#ApplyPatch linux-2.6-usb-pci-autosuspend.patch
### Broken by implicit notify support & ACPICA rebase
###ApplyPatch linux-2.6-enable-more-pci-autosuspend.patch
@ -1368,6 +1369,9 @@ ApplyPatch dmar-disable-when-ricoh-multifunction.patch
# rhbz#662344,600690
ApplyPatch fs-call-security_d_instantiate-in-d_obtain_alias.patch
# Fix possible memory corruption on Dell HW
ApplyPatch dcdbas-force-smi-to-happen-when-expected.patch
# END OF PATCH APPLICATIONS
%endif
@ -1976,6 +1980,11 @@ fi
# and build.
%changelog
* Wed Mar 23 2011 Chuck Ebbert <cebbert@redhat.com> 2.6.38.1-6
- Linux 2.6.38.1
- Drop linux-2.6-ehci-check-port-status.patch, merged in .38.1
- Add dcdbas-force-smi-to-happen-when-expected.patch
* Wed Mar 23 2011 Kyle McMartin <kmcmartin@redhat.com>
- Re-create ACPI battery sysfs files on resume from suspend, fixes the
upstream changes to the dropped

View File

@ -1,54 +0,0 @@
commit e17a07a9e0b62d5a5f0a5683ecbabad3aa95a4d5
Author: Matthew Garrett <mjg@redhat.com>
Date: Tue Jan 11 12:19:40 2011 -0500
ehci: Check individual port status registers on resume
If a device plug/unplug is detected on an ATI SB700 USB controller in D3,
it appears to set the port status register but not the controller status
register. As a result we'll fail to detect the plug event. Check the port
status register on resume as well in order to catch this case.
Signed-off-by: Matthew Garrett <mjg@redhat.com>
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
index 796ea0c..d9c0748 100644
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -106,6 +106,27 @@ static void ehci_handover_companion_ports(struct ehci_hcd *ehci)
ehci->owned_ports = 0;
}
+static int ehci_port_change(struct ehci_hcd *ehci)
+{
+ int i = HCS_N_PORTS(ehci->hcs_params);
+
+ /* First check if the controller indicates a change event */
+
+ if (ehci_readl(ehci, &ehci->regs->status) & STS_PCD)
+ return 1;
+
+ /*
+ * Not all controllers appear to update this while going from D3 to D0,
+ * so check the individual port status registers as well
+ */
+
+ while (i--)
+ if (ehci_readl(ehci, &ehci->regs->port_status[i]) & PORT_CSC)
+ return 1;
+
+ return 0;
+}
+
static void ehci_adjust_port_wakeup_flags(struct ehci_hcd *ehci,
bool suspending, bool do_wakeup)
{
@@ -168,7 +189,7 @@ static void ehci_adjust_port_wakeup_flags(struct ehci_hcd *ehci,
}
/* Does the root hub have a port wakeup pending? */
- if (!suspending && (ehci_readl(ehci, &ehci->regs->status) & STS_PCD))
+ if (!suspending && ehci_port_change(ehci))
usb_hcd_resume_root_hub(ehci_to_hcd(ehci));
spin_unlock_irqrestore(&ehci->lock, flags);

View File

@ -1 +1,2 @@
7d471477bfa67546f902da62227fa976 linux-2.6.38.tar.bz2
bd2be4d0465345e4e9355d6773f5f6fe patch-2.6.38.1.bz2