mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-08-01 15:07:49 +00:00
linux: add some patches from fedora
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
2c201c762a
commit
7e2f4c3e8d
@ -0,0 +1,53 @@
|
|||||||
|
Improve our reboot handling for compatibility with Windows. Upstream in .38?
|
||||||
|
|
||||||
|
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
|
||||||
|
index c495aa8..c770e66 100644
|
||||||
|
--- a/arch/x86/kernel/reboot.c
|
||||||
|
+++ b/arch/x86/kernel/reboot.c
|
||||||
|
@@ -34,7 +34,7 @@ EXPORT_SYMBOL(pm_power_off);
|
||||||
|
|
||||||
|
static const struct desc_ptr no_idt = {};
|
||||||
|
static int reboot_mode;
|
||||||
|
-enum reboot_type reboot_type = BOOT_KBD;
|
||||||
|
+enum reboot_type reboot_type = BOOT_ACPI;
|
||||||
|
int reboot_force;
|
||||||
|
|
||||||
|
#if defined(CONFIG_X86_32) && defined(CONFIG_SMP)
|
||||||
|
@@ -538,9 +538,23 @@ void __attribute__((weak)) mach_reboot_fixups(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * Windows does the following on reboot:
|
||||||
|
+ * 1) If the FADT has the ACPI reboot register flag set, try it
|
||||||
|
+ * 2) If still alive, write to the keyboard controller
|
||||||
|
+ * 3) If still alive, write to the ACPI reboot register again
|
||||||
|
+ * 4) If still alive, write to the keyboard controller again
|
||||||
|
+ *
|
||||||
|
+ * If the machine is still alive at this stage, it gives up. We default to
|
||||||
|
+ * following the same pattern, except that if we're still alive after (4) we'll
|
||||||
|
+ * try to force a triple fault and then cycle between hitting the keyboard
|
||||||
|
+ * controller and doing that
|
||||||
|
+ */
|
||||||
|
static void native_machine_emergency_restart(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
+ int attempt = 0;
|
||||||
|
+ int orig_reboot_type = reboot_type;
|
||||||
|
|
||||||
|
if (reboot_emergency)
|
||||||
|
emergency_vmx_disable_all();
|
||||||
|
@@ -562,6 +576,13 @@ static void native_machine_emergency_restart(void)
|
||||||
|
outb(0xfe, 0x64); /* pulse reset low */
|
||||||
|
udelay(50);
|
||||||
|
}
|
||||||
|
+ if (attempt == 0 && orig_reboot_type == BOOT_ACPI) {
|
||||||
|
+ attempt = 1;
|
||||||
|
+ reboot_type = BOOT_ACPI;
|
||||||
|
+ } else {
|
||||||
|
+ reboot_type = BOOT_TRIPLE;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
|
||||||
|
case BOOT_TRIPLE:
|
||||||
|
load_idt(&no_idt);
|
@ -0,0 +1,22 @@
|
|||||||
|
commit 15d89120d03116adbbf3226a85fbd2fff0b12576
|
||||||
|
Author: Matthew Garrett <mjg@redhat.com>
|
||||||
|
Date: Fri Sep 17 11:09:12 2010 -0400
|
||||||
|
|
||||||
|
Enable USB PCI autosuspend by default
|
||||||
|
|
||||||
|
diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c
|
||||||
|
index c3f9854..3c020e6 100644
|
||||||
|
--- a/drivers/usb/core/hcd-pci.c
|
||||||
|
+++ b/drivers/usb/core/hcd-pci.c
|
||||||
|
@@ -248,8 +248,10 @@ int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
|
||||||
|
goto err4;
|
||||||
|
set_hs_companion(dev, hcd);
|
||||||
|
|
||||||
|
- if (pci_dev_run_wake(dev))
|
||||||
|
+ if (pci_dev_run_wake(dev)) {
|
||||||
|
pm_runtime_put_noidle(&dev->dev);
|
||||||
|
+ pm_runtime_allow(&dev->dev);
|
||||||
|
+ }
|
||||||
|
return retval;
|
||||||
|
|
||||||
|
err4:
|
Loading…
x
Reference in New Issue
Block a user