Re: [Xen-devel] [PATCH] x86/shutdown: Use ACPI reboot method for Dell PowerEdge R740

2018-01-24 Thread Jan Beulich
>>> On 19.01.18 at 17:57,  wrote:
> When EFI booting the Dell PowerEdge R740, it consistently wanders into the
> weeds and gets an invalid opcode in the EFI ResetSystem call.
> Quirk this hardware to use the ACPI reboot method instead.
> 
> Example stack trace:
> 
> [ Xen-4.11-unstable  x86_64  debug=n   Not tainted ]
> CPU:0
> RIP:e008:[<0017>] 0017
> RFLAGS: 00010202   CONTEXT: hypervisor
> rax: 66eb2ff0   rbx: 83005f627c20   rcx: 6c54e100
> rdx:    rsi: 0065   rdi: 00107355f000
> rbp: 83005f627c70   rsp: 83005f627b48   r8:  83005f627b90
> r9:     r10: 83005f627c88   r11: 
> r12:    r13: 0cf9   r14: 0065
> r15: 8300   cr0: 80050033   cr4: 003526e0
> cr3: 00107355f000   cr2: c9cff000
> fsb:    gsb: 88019f60   gss: 
> ds:    es:    fs:    gs:    ss: e010   cs: e008
> Xen code around <0017> (0017):
>  f0 d8 dd 00 f0 54 ff 00  50 dd 00 f0 d8 dd 00 f0 a5 fe 00 f0 87 e9 00
> Xen stack trace from rsp=83005f627b48:
>83005f627b50 ffda 6c547aaa 82d1
>83005f627bec 00107355f000 6c546fb8 83107ffe3240
>  8002 
>6c546b95 6c54c700 83005f627bdc 83005f627be8
>5f616000 83005f627c20  0cf9
>820080350001 000b 82d080351eda 
>   5f616000
> 82d08095ff60 82d08095ff60 00f1
>82d080296097 e008  83005f627c88
> fffe 82d0802959d2 82d0802959d2
>8095f300 5f627c9c 00f8 
>00f8 82d080932c00  82d08095f7c8
>82d080932c00   82d080295a9b
>83005f627d98 82d0802361f3 82d080932c00 8000
>83005f627d98 82d080279a19 82d08095f02c 82d08000
> 00fb  0071484e54f6
>831073542098 82d08093ac78 831072befd30 
>   
> 82d08034f185 82d080949460 
>82d08095f270 0008 83107357ae20 007146ce4bd3
> Xen call trace:
>[<0017>] 0017
>[] efi_reset_system+0x5a/0x90
>[] smp_send_stop+0x97/0xa0
>[] machine_restart+0x212/0x2d0
>[] machine_restart+0x212/0x2d0
>[] shutdown.c#__machine_restart+0xb/0x10
>[] smp_call_function_interrupt+0x53/0x80
>[] do_IRQ+0x259/0x660
>[] common_interrupt+0x85/0x90
>[] mwait-idle.c#mwait_idle+0x242/0x390
>[] domain.c#idle_loop+0x86/0xc0
> 
> 
> Panic on CPU 0:
> FATAL TRAP: vector = 6 (invalid opcode)
> 
> 
> dmidecode info:
> 
> BIOS Information:
> Vendor: Dell Inc.
> Version: 1.2.11
> Release Date: 10/19/2017
> BIOS Revision: 1.2
> System Information:
> Manufacturer: Dell Inc.
> Product Name: PowerEdge R740
> 
> Signed-off-by: Ross Lagerwall 

Taking into account your subsequent argumentation
Acked-by: Jan Beulich 

Jan


___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH] x86/shutdown: Use ACPI reboot method for Dell PowerEdge R740

2018-01-24 Thread Ross Lagerwall

On 01/23/2018 04:05 PM, Ross Lagerwall wrote:

On 01/22/2018 12:29 PM, Jan Beulich wrote:

On 19.01.18 at 17:57,  wrote:

--- a/xen/arch/x86/shutdown.c
+++ b/xen/arch/x86/shutdown.c
@@ -511,6 +511,15 @@ static struct dmi_system_id __initdata 
reboot_dmi_table[] = {

  DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6520"),
  },
  },
+    {    /* Handle problems with rebooting on Dell PowerEdge R740. */
+    .callback = override_reboot,
+    .driver_data = (void *)(long)BOOT_ACPI,
+    .ident = "Dell PowerEdge R740",
+    .matches = {
+    DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+    DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge R740"),
+    },
+    },


Judging from the description you don't really want or need to
override the reboot method if not running under EFI, or if there
was an override on the command line already. override_reboot(),
however, overrides everything and under all circumstances. I
therefore think you may want to introduce a new callback
function.


Agreed, it should only apply when running under EFI. Note that the 
command-line takes priority over override_reboot() -- see the note at 
the start of reboot_init().




Actually, now that I think about it, this quirk would have no effect 
when not running under EFI since in either case, the quirk uses 
BOOT_ACPI unless acpi_disabled is set in which case it uses BOOT_KBD. 
This matches what default_reboot_type() does. So I think this patch is 
fine and no further changes are needed unless I'm missing something?


Thanks,
--
Ross Lagerwall

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH] x86/shutdown: Use ACPI reboot method for Dell PowerEdge R740

2018-01-23 Thread Ross Lagerwall

On 01/22/2018 12:29 PM, Jan Beulich wrote:

On 19.01.18 at 17:57,  wrote:

--- a/xen/arch/x86/shutdown.c
+++ b/xen/arch/x86/shutdown.c
@@ -511,6 +511,15 @@ static struct dmi_system_id __initdata reboot_dmi_table[] 
= {
  DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6520"),
  },
  },
+{/* Handle problems with rebooting on Dell PowerEdge R740. */
+.callback = override_reboot,
+.driver_data = (void *)(long)BOOT_ACPI,
+.ident = "Dell PowerEdge R740",
+.matches = {
+DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge R740"),
+},
+},


Judging from the description you don't really want or need to
override the reboot method if not running under EFI, or if there
was an override on the command line already. override_reboot(),
however, overrides everything and under all circumstances. I
therefore think you may want to introduce a new callback
function.


Agreed, it should only apply when running under EFI. Note that the 
command-line takes priority over override_reboot() -- see the note at 
the start of reboot_init().




As an aside - how come the page at address zero is actually
mapped at the time of the reboot attempt?



No idea...

--
Ross Lagerwall

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH] x86/shutdown: Use ACPI reboot method for Dell PowerEdge R740

2018-01-22 Thread Jan Beulich
>>> On 19.01.18 at 17:57,  wrote:
> --- a/xen/arch/x86/shutdown.c
> +++ b/xen/arch/x86/shutdown.c
> @@ -511,6 +511,15 @@ static struct dmi_system_id __initdata 
> reboot_dmi_table[] = {
>  DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6520"),
>  },
>  },
> +{/* Handle problems with rebooting on Dell PowerEdge R740. */
> +.callback = override_reboot,
> +.driver_data = (void *)(long)BOOT_ACPI,
> +.ident = "Dell PowerEdge R740",
> +.matches = {
> +DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> +DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge R740"),
> +},
> +},

Judging from the description you don't really want or need to
override the reboot method if not running under EFI, or if there
was an override on the command line already. override_reboot(),
however, overrides everything and under all circumstances. I
therefore think you may want to introduce a new callback
function.

As an aside - how come the page at address zero is actually
mapped at the time of the reboot attempt?

Jan


___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

[Xen-devel] [PATCH] x86/shutdown: Use ACPI reboot method for Dell PowerEdge R740

2018-01-19 Thread Ross Lagerwall
When EFI booting the Dell PowerEdge R740, it consistently wanders into the
weeds and gets an invalid opcode in the EFI ResetSystem call.
Quirk this hardware to use the ACPI reboot method instead.

Example stack trace:

[ Xen-4.11-unstable  x86_64  debug=n   Not tainted ]
CPU:0
RIP:e008:[<0017>] 0017
RFLAGS: 00010202   CONTEXT: hypervisor
rax: 66eb2ff0   rbx: 83005f627c20   rcx: 6c54e100
rdx:    rsi: 0065   rdi: 00107355f000
rbp: 83005f627c70   rsp: 83005f627b48   r8:  83005f627b90
r9:     r10: 83005f627c88   r11: 
r12:    r13: 0cf9   r14: 0065
r15: 8300   cr0: 80050033   cr4: 003526e0
cr3: 00107355f000   cr2: c9cff000
fsb:    gsb: 88019f60   gss: 
ds:    es:    fs:    gs:    ss: e010   cs: e008
Xen code around <0017> (0017):
 f0 d8 dd 00 f0 54 ff 00  50 dd 00 f0 d8 dd 00 f0 a5 fe 00 f0 87 e9 00
Xen stack trace from rsp=83005f627b48:
   83005f627b50 ffda 6c547aaa 82d1
   83005f627bec 00107355f000 6c546fb8 83107ffe3240
     8002 
   6c546b95 6c54c700 83005f627bdc 83005f627be8
   5f616000 83005f627c20  0cf9
   820080350001 000b 82d080351eda 
      5f616000
    82d08095ff60 82d08095ff60 00f1
   82d080296097 e008  83005f627c88
    fffe 82d0802959d2 82d0802959d2
   8095f300 5f627c9c 00f8 
   00f8 82d080932c00  82d08095f7c8
   82d080932c00   82d080295a9b
   83005f627d98 82d0802361f3 82d080932c00 8000
   83005f627d98 82d080279a19 82d08095f02c 82d08000
    00fb  0071484e54f6
   831073542098 82d08093ac78 831072befd30 
      
    82d08034f185 82d080949460 
   82d08095f270 0008 83107357ae20 007146ce4bd3
Xen call trace:
   [<0017>] 0017
   [] efi_reset_system+0x5a/0x90
   [] smp_send_stop+0x97/0xa0
   [] machine_restart+0x212/0x2d0
   [] machine_restart+0x212/0x2d0
   [] shutdown.c#__machine_restart+0xb/0x10
   [] smp_call_function_interrupt+0x53/0x80
   [] do_IRQ+0x259/0x660
   [] common_interrupt+0x85/0x90
   [] mwait-idle.c#mwait_idle+0x242/0x390
   [] domain.c#idle_loop+0x86/0xc0


Panic on CPU 0:
FATAL TRAP: vector = 6 (invalid opcode)


dmidecode info:

BIOS Information:
Vendor: Dell Inc.
Version: 1.2.11
Release Date: 10/19/2017
BIOS Revision: 1.2
System Information:
Manufacturer: Dell Inc.
Product Name: PowerEdge R740

Signed-off-by: Ross Lagerwall 
---
 xen/arch/x86/shutdown.c | 9 +
 1 file changed, 9 insertions(+)

diff --git a/xen/arch/x86/shutdown.c b/xen/arch/x86/shutdown.c
index a350714..c709e13 100644
--- a/xen/arch/x86/shutdown.c
+++ b/xen/arch/x86/shutdown.c
@@ -511,6 +511,15 @@ static struct dmi_system_id __initdata reboot_dmi_table[] 
= {
 DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6520"),
 },
 },
+{/* Handle problems with rebooting on Dell PowerEdge R740. */
+.callback = override_reboot,
+.driver_data = (void *)(long)BOOT_ACPI,
+.ident = "Dell PowerEdge R740",
+.matches = {
+DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge R740"),
+},
+},
 { }
 };
 
-- 
2.9.5


___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel