* [Xen-devel] [PATCH v2 0/3] x86: S3 resume adjustments
@ 2019-08-30 13:38 Jan Beulich
2019-08-30 13:41 ` [Xen-devel] [PATCH v2 1/3] x86/ACPI: restore VESA mode upon resume from S3 Jan Beulich
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Jan Beulich @ 2019-08-30 13:38 UTC (permalink / raw)
To: xen-devel; +Cc: Andrew Cooper, Wei Liu, Roger Pau Monné
1: x86/ACPI: restore VESA mode upon resume from S3
2: x86: a little bit of 16-bit video mode setting code cleanup
3: x86: shrink video_{flags,mode} to {8,16} bits
Patch 1 is meant to address an issue I've observed while testing
the v1 patch that was committed already, and patch 2 is simply a
collection of misc changes noticed while putting together patch 1
as possibly worthwhile to make. Patch 3 is a result of v1 review
feedback.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Xen-devel] [PATCH v2 1/3] x86/ACPI: restore VESA mode upon resume from S3
2019-08-30 13:38 [Xen-devel] [PATCH v2 0/3] x86: S3 resume adjustments Jan Beulich
@ 2019-08-30 13:41 ` Jan Beulich
2019-09-02 10:42 ` Andrew Cooper
2019-08-30 13:41 ` [Xen-devel] [PATCH v2 2/3] x86: a little bit of 16-bit video mode setting code cleanup Jan Beulich
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Jan Beulich @ 2019-08-30 13:41 UTC (permalink / raw)
To: xen-devel; +Cc: Andrew Cooper, Wei Liu, Roger Pau Monné
In order for "acpi_sleep=s3_mode" to have any effect, we should record
the video mode we switched to during boot. Since right now there's mode
setting code for VESA modes only in the resume case, record the mode
just in that one case.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
I'm wondering actually whether the user having to explicitly request the
mode restoration is a good model: Why would we _not_ want to restore the
mode we've set during boot? In the worst case Dom0 kernel or X will
change the mode another time.
--- a/xen/arch/x86/boot/video.S
+++ b/xen/arch/x86/boot/video.S
@@ -455,14 +455,17 @@ check_vesa:
cmpb $0x99, %al
jnz _setbad # Doh! No linear frame buffer.
+ pushw %bx
subb $VIDEO_FIRST_VESA>>8, %bh
orw $0x4000, %bx # Use linear frame buffer
movw $0x4f02, %ax # VESA BIOS mode set call
int $0x10
+ popw %bx
cmpw $0x004f, %ax # AL=4f if implemented
jnz _setbad # AH=0 if OK
movb $1, bootsym(graphic_mode) # flag graphic mode
+ movw %bx, bootsym(video_mode)
stc
ret
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Xen-devel] [PATCH v2 2/3] x86: a little bit of 16-bit video mode setting code cleanup
2019-08-30 13:38 [Xen-devel] [PATCH v2 0/3] x86: S3 resume adjustments Jan Beulich
2019-08-30 13:41 ` [Xen-devel] [PATCH v2 1/3] x86/ACPI: restore VESA mode upon resume from S3 Jan Beulich
@ 2019-08-30 13:41 ` Jan Beulich
2019-09-02 10:44 ` Andrew Cooper
2019-08-30 13:42 ` [Xen-devel] [PATCH v2 3/3] x86: shrink video_{flags, mode} to {8, 16} bits Jan Beulich
2019-08-30 13:43 ` [Xen-devel] [PATCH v2 0/3] x86: S3 resume adjustments Jan Beulich
3 siblings, 1 reply; 9+ messages in thread
From: Jan Beulich @ 2019-08-30 13:41 UTC (permalink / raw)
To: xen-devel; +Cc: Andrew Cooper, Wei Liu, Roger Pau Monné
To "compensate" for the code size growth by an earlier change:
- drop "trampoline" labels (in almost all cases the target label is
reachable with an 8-bit-displacement branch anyway, and a single 16-
bit-displacement branch is still better than a pair of two branches)
- drop an entirely dead insn from wakeup.S:mode_setw
- reduce code size in a few other (obvious I hope) cases, by more
suitable insn/operands selection
Also drop redundant #define-s (move suitable #include a little earlier
instead) and add two alignment directives.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Minor adjustment to description. Re-base.
--- a/xen/arch/x86/boot/trampoline.S
+++ b/xen/arch/x86/boot/trampoline.S
@@ -176,6 +176,7 @@ start64:
jmpq *%rdi
+#include "video.h"
#include "wakeup.S"
.balign 8
@@ -282,8 +283,6 @@ trampoline_boot_cpu_entry:
/* Jump to the common bootstrap entry point. */
jmp trampoline_protmode_entry
-#include "video.h"
-
.align 2
/* Keep in sync with cmdline.c:early_boot_opts_t type! */
early_boot_opts:
--- a/xen/arch/x86/boot/video.S
+++ b/xen/arch/x86/boot/video.S
@@ -384,9 +384,6 @@ lmbad: leaw bootsym(unknt), %si
jmp mode_menu
lmdef: ret
-_setrec: jmp setrec # Ugly...
-_set_80x25: jmp set_80x25
-
# Setting of user mode (AX=mode ID) => CF=success
mode_set:
movw %ax, bootsym(boot_vid_mode)
@@ -396,7 +393,7 @@ mode_set:
je setvesabysize
testb $VIDEO_RECALC>>8, %ah
- jnz _setrec
+ jnz setrec
cmpb $VIDEO_FIRST_SPECIAL>>8, %ah
jz setspc
@@ -421,7 +418,7 @@ setspc: xorb %bh, %bh
setmenu:
orb %al, %al # 80x25 is an exception
- jz _set_80x25
+ jz set_80x25
pushw %bx # Set mode chosen from menu
call mode_table # Build the mode table
@@ -441,36 +438,32 @@ check_vesa:
cmpw $0x004f, %ax
jnz setbad
- leaw vesa_mode_info, %di
- subb $VIDEO_FIRST_VESA>>8, %bh
- movw %bx, %cx # Get mode information structure
+ leaw vesa_mode_info, %di # Get mode information structure
+ leaw -VIDEO_FIRST_VESA(%bx), %cx
movw $0x4f01, %ax
int $0x10
- addb $VIDEO_FIRST_VESA>>8, %bh
cmpw $0x004f, %ax
jnz setbad
movb (%di), %al # Check mode attributes.
andb $0x99, %al
cmpb $0x99, %al
- jnz _setbad # Doh! No linear frame buffer.
+ jnz setbad # Doh! No linear frame buffer.
pushw %bx
subb $VIDEO_FIRST_VESA>>8, %bh
- orw $0x4000, %bx # Use linear frame buffer
+ orb $0x40, %bh # Use linear frame buffer
movw $0x4f02, %ax # VESA BIOS mode set call
int $0x10
popw %bx
cmpw $0x004f, %ax # AL=4f if implemented
- jnz _setbad # AH=0 if OK
+ jnz setbad # AH=0 if OK
movb $1, bootsym(graphic_mode) # flag graphic mode
movw %bx, bootsym(video_mode)
stc
ret
-_setbad: jmp setbad # Ugly...
-
# Recalculate vertical display end registers -- this fixes various
# inconsistencies of extended modes on many adapters. Called when
# the VIDEO_RECALC flag is set in the mode ID.
@@ -515,7 +508,7 @@ setvesabysize:
leaw modelist,%si
1: add $8,%si
cmpw $ASK_VGA,-8(%si) # End?
- je _setbad
+ je setbad
movw -6(%si),%ax
cmpw %ax,bootsym(vesa_size)+0
jne 1b
@@ -948,6 +941,7 @@ store_edid:
#endif
ret
+ .p2align 1
mt_end: .word 0 # End of video mode table if built
edit_buf: .space 6 # Line editor buffer
card_name: .word 0 # Pointer to adapter name
@@ -991,6 +985,7 @@ vesa_name: .asciz "VESA"
name_bann: .asciz "Video adapter: "
+ .p2align 1
force_size: .word 0 # Use this size instead of the one in BIOS vars
GLOBAL(boot_vid_info)
--- a/xen/arch/x86/boot/wakeup.S
+++ b/xen/arch/x86/boot/wakeup.S
@@ -30,7 +30,7 @@ ENTRY(wakeup_start)
jne bogus_real_magic
# for acpi_sleep=s3_bios
- testl $1, wakesym(video_flags)
+ testb $1, wakesym(video_flags)
jz 1f
lcall $0xc000, $3
movw %cs, %ax # In case messed by BIOS
@@ -38,9 +38,9 @@ ENTRY(wakeup_start)
movw %ax, %ss # Need this? How to ret if clobbered?
1: # for acpi_sleep=s3_mode
- testl $2, wakesym(video_flags)
+ testb $2, wakesym(video_flags)
jz 1f
- movl wakesym(video_mode), %eax
+ movw wakesym(video_mode), %ax
call mode_setw
1: # Show some progress if VGA is resumed
@@ -56,48 +56,26 @@ ENTRY(wakeup_start)
ljmpl $BOOT_CS32, $bootsym_rel(wakeup_32, 6)
-/* This code uses an extended set of video mode numbers. These include:
- * Aliases for standard modes
- * NORMAL_VGA (-1)
- * EXTENDED_VGA (-2)
- * ASK_VGA (-3)
- * Video modes numbered by menu position -- NOT RECOMMENDED because of lack
- * of compatibility when extending the table. These are between 0x00 and 0xff.
- */
-#define VIDEO_FIRST_MENU 0x0000
-
-/* Standard BIOS video modes (BIOS number + 0x0100) */
-#define VIDEO_FIRST_BIOS 0x0100
-
-/* VESA BIOS video modes (VESA number + 0x0200) */
-#define VIDEO_FIRST_VESA 0x0200
-
-/* Video7 special modes (BIOS number + 0x0900) */
-#define VIDEO_FIRST_V7 0x0900
-
# Setting of user mode (AX=mode ID) => CF=success
mode_setw:
movw %ax, %bx
cmpb $VIDEO_FIRST_VESA>>8, %ah
jnc check_vesaw
- decb %ah
setbadw: clc
ret
check_vesaw:
subb $VIDEO_FIRST_VESA>>8, %bh
- orw $0x4000, %bx # Use linear frame buffer
+ orb $0x40, %bh # Use linear frame buffer
movw $0x4f02, %ax # VESA BIOS mode set call
int $0x10
cmpw $0x004f, %ax # AL=4f if implemented
- jnz _setbadw # AH=0 if OK
+ jnz setbadw # AH=0 if OK
stc
ret
-_setbadw: jmp setbadw
-
bogus_real_magic:
movw $0x0e00 + 'B', %fs:(0x12)
jmp bogus_real_magic
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Xen-devel] [PATCH v2 3/3] x86: shrink video_{flags, mode} to {8, 16} bits
2019-08-30 13:38 [Xen-devel] [PATCH v2 0/3] x86: S3 resume adjustments Jan Beulich
2019-08-30 13:41 ` [Xen-devel] [PATCH v2 1/3] x86/ACPI: restore VESA mode upon resume from S3 Jan Beulich
2019-08-30 13:41 ` [Xen-devel] [PATCH v2 2/3] x86: a little bit of 16-bit video mode setting code cleanup Jan Beulich
@ 2019-08-30 13:42 ` Jan Beulich
2019-09-02 10:46 ` Andrew Cooper
2019-08-30 13:43 ` [Xen-devel] [PATCH v2 0/3] x86: S3 resume adjustments Jan Beulich
3 siblings, 1 reply; 9+ messages in thread
From: Jan Beulich @ 2019-08-30 13:42 UTC (permalink / raw)
To: xen-devel; +Cc: Andrew Cooper, Wei Liu, Roger Pau Monné
We really don't need them to be any wider.
Also remove the C level declaration (and hence also the GLOBAL) of
video_mode altogether; it's used in assembly code only.
Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: New.
--- a/xen/arch/x86/boot/wakeup.S
+++ b/xen/arch/x86/boot/wakeup.S
@@ -82,10 +82,9 @@ bogus_real_magic:
.align 4
real_magic: .long 0x12345678
-GLOBAL(video_mode)
- .long 0
+video_mode: .word 0
GLOBAL(video_flags)
- .long 0
+ .byte 0
.code32
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -99,7 +99,9 @@ extern char trampoline_realmode_entry[];
extern unsigned int trampoline_xen_phys_start;
extern unsigned char trampoline_cpu_started;
extern char wakeup_start[];
-extern unsigned int video_mode, video_flags;
+
+extern unsigned char video_flags;
+
extern unsigned short boot_edid_caps;
extern unsigned char boot_edid_info[128];
#endif
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xen-devel] [PATCH v2 0/3] x86: S3 resume adjustments
2019-08-30 13:38 [Xen-devel] [PATCH v2 0/3] x86: S3 resume adjustments Jan Beulich
` (2 preceding siblings ...)
2019-08-30 13:42 ` [Xen-devel] [PATCH v2 3/3] x86: shrink video_{flags, mode} to {8, 16} bits Jan Beulich
@ 2019-08-30 13:43 ` Jan Beulich
3 siblings, 0 replies; 9+ messages in thread
From: Jan Beulich @ 2019-08-30 13:43 UTC (permalink / raw)
To: xen-devel; +Cc: Andrew Cooper, Wei Liu, Roger Pau Monné
[-- Attachment #1: Type: text/plain, Size: 261 bytes --]
On 30.08.2019 15:38, Jan Beulich wrote:
> 1: x86/ACPI: restore VESA mode upon resume from S3
> 2: x86: a little bit of 16-bit video mode setting code cleanup
> 3: x86: shrink video_{flags,mode} to {8,16} bits
And (sadly) the patches as attachments again.
Jan
[-- Attachment #2: 01-x86-S3-restore-VESA-mode.patch --]
[-- Type: text/plain, Size: 1277 bytes --]
x86/ACPI: restore VESA mode upon resume from S3
In order for "acpi_sleep=s3_mode" to have any effect, we should record
the video mode we switched to during boot. Since right now there's mode
setting code for VESA modes only in the resume case, record the mode
just in that one case.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
I'm wondering actually whether the user having to explicitly request the
mode restoration is a good model: Why would we _not_ want to restore the
mode we've set during boot? In the worst case Dom0 kernel or X will
change the mode another time.
--- a/xen/arch/x86/boot/video.S
+++ b/xen/arch/x86/boot/video.S
@@ -455,14 +455,17 @@ check_vesa:
cmpb $0x99, %al
jnz _setbad # Doh! No linear frame buffer.
+ pushw %bx
subb $VIDEO_FIRST_VESA>>8, %bh
orw $0x4000, %bx # Use linear frame buffer
movw $0x4f02, %ax # VESA BIOS mode set call
int $0x10
+ popw %bx
cmpw $0x004f, %ax # AL=4f if implemented
jnz _setbad # AH=0 if OK
movb $1, bootsym(graphic_mode) # flag graphic mode
+ movw %bx, bootsym(video_mode)
stc
ret
[-- Attachment #3: 02-x86-S3-16bit-cleanup.patch --]
[-- Type: text/plain, Size: 6843 bytes --]
x86: a little bit of 16-bit video mode setting code cleanup
To "compensate" for the code size growth by an earlier change:
- drop "trampoline" labels (in almost all cases the target label is
reachable with an 8-bit-displacement branch anyway, and a single 16-
bit-displacement branch is still better than a pair of two branches)
- drop an entirely dead insn from wakeup.S:mode_setw
- reduce code size in a few other (obvious I hope) cases, by more
suitable insn/operands selection
Also drop redundant #define-s (move suitable #include a little earlier
instead) and add two alignment directives.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Minor adjustment to description. Re-base.
--- a/xen/arch/x86/boot/trampoline.S
+++ b/xen/arch/x86/boot/trampoline.S
@@ -176,6 +176,7 @@ start64:
jmpq *%rdi
+#include "video.h"
#include "wakeup.S"
.balign 8
@@ -282,8 +283,6 @@ trampoline_boot_cpu_entry:
/* Jump to the common bootstrap entry point. */
jmp trampoline_protmode_entry
-#include "video.h"
-
.align 2
/* Keep in sync with cmdline.c:early_boot_opts_t type! */
early_boot_opts:
--- a/xen/arch/x86/boot/video.S
+++ b/xen/arch/x86/boot/video.S
@@ -384,9 +384,6 @@ lmbad: leaw bootsym(unknt), %si
jmp mode_menu
lmdef: ret
-_setrec: jmp setrec # Ugly...
-_set_80x25: jmp set_80x25
-
# Setting of user mode (AX=mode ID) => CF=success
mode_set:
movw %ax, bootsym(boot_vid_mode)
@@ -396,7 +393,7 @@ mode_set:
je setvesabysize
testb $VIDEO_RECALC>>8, %ah
- jnz _setrec
+ jnz setrec
cmpb $VIDEO_FIRST_SPECIAL>>8, %ah
jz setspc
@@ -421,7 +418,7 @@ setspc: xorb %bh, %bh
setmenu:
orb %al, %al # 80x25 is an exception
- jz _set_80x25
+ jz set_80x25
pushw %bx # Set mode chosen from menu
call mode_table # Build the mode table
@@ -441,36 +438,32 @@ check_vesa:
cmpw $0x004f, %ax
jnz setbad
- leaw vesa_mode_info, %di
- subb $VIDEO_FIRST_VESA>>8, %bh
- movw %bx, %cx # Get mode information structure
+ leaw vesa_mode_info, %di # Get mode information structure
+ leaw -VIDEO_FIRST_VESA(%bx), %cx
movw $0x4f01, %ax
int $0x10
- addb $VIDEO_FIRST_VESA>>8, %bh
cmpw $0x004f, %ax
jnz setbad
movb (%di), %al # Check mode attributes.
andb $0x99, %al
cmpb $0x99, %al
- jnz _setbad # Doh! No linear frame buffer.
+ jnz setbad # Doh! No linear frame buffer.
pushw %bx
subb $VIDEO_FIRST_VESA>>8, %bh
- orw $0x4000, %bx # Use linear frame buffer
+ orb $0x40, %bh # Use linear frame buffer
movw $0x4f02, %ax # VESA BIOS mode set call
int $0x10
popw %bx
cmpw $0x004f, %ax # AL=4f if implemented
- jnz _setbad # AH=0 if OK
+ jnz setbad # AH=0 if OK
movb $1, bootsym(graphic_mode) # flag graphic mode
movw %bx, bootsym(video_mode)
stc
ret
-_setbad: jmp setbad # Ugly...
-
# Recalculate vertical display end registers -- this fixes various
# inconsistencies of extended modes on many adapters. Called when
# the VIDEO_RECALC flag is set in the mode ID.
@@ -515,7 +508,7 @@ setvesabysize:
leaw modelist,%si
1: add $8,%si
cmpw $ASK_VGA,-8(%si) # End?
- je _setbad
+ je setbad
movw -6(%si),%ax
cmpw %ax,bootsym(vesa_size)+0
jne 1b
@@ -948,6 +941,7 @@ store_edid:
#endif
ret
+ .p2align 1
mt_end: .word 0 # End of video mode table if built
edit_buf: .space 6 # Line editor buffer
card_name: .word 0 # Pointer to adapter name
@@ -991,6 +985,7 @@ vesa_name: .asciz "VESA"
name_bann: .asciz "Video adapter: "
+ .p2align 1
force_size: .word 0 # Use this size instead of the one in BIOS vars
GLOBAL(boot_vid_info)
--- a/xen/arch/x86/boot/wakeup.S
+++ b/xen/arch/x86/boot/wakeup.S
@@ -30,7 +30,7 @@ ENTRY(wakeup_start)
jne bogus_real_magic
# for acpi_sleep=s3_bios
- testl $1, wakesym(video_flags)
+ testb $1, wakesym(video_flags)
jz 1f
lcall $0xc000, $3
movw %cs, %ax # In case messed by BIOS
@@ -38,9 +38,9 @@ ENTRY(wakeup_start)
movw %ax, %ss # Need this? How to ret if clobbered?
1: # for acpi_sleep=s3_mode
- testl $2, wakesym(video_flags)
+ testb $2, wakesym(video_flags)
jz 1f
- movl wakesym(video_mode), %eax
+ movw wakesym(video_mode), %ax
call mode_setw
1: # Show some progress if VGA is resumed
@@ -56,48 +56,26 @@ ENTRY(wakeup_start)
ljmpl $BOOT_CS32, $bootsym_rel(wakeup_32, 6)
-/* This code uses an extended set of video mode numbers. These include:
- * Aliases for standard modes
- * NORMAL_VGA (-1)
- * EXTENDED_VGA (-2)
- * ASK_VGA (-3)
- * Video modes numbered by menu position -- NOT RECOMMENDED because of lack
- * of compatibility when extending the table. These are between 0x00 and 0xff.
- */
-#define VIDEO_FIRST_MENU 0x0000
-
-/* Standard BIOS video modes (BIOS number + 0x0100) */
-#define VIDEO_FIRST_BIOS 0x0100
-
-/* VESA BIOS video modes (VESA number + 0x0200) */
-#define VIDEO_FIRST_VESA 0x0200
-
-/* Video7 special modes (BIOS number + 0x0900) */
-#define VIDEO_FIRST_V7 0x0900
-
# Setting of user mode (AX=mode ID) => CF=success
mode_setw:
movw %ax, %bx
cmpb $VIDEO_FIRST_VESA>>8, %ah
jnc check_vesaw
- decb %ah
setbadw: clc
ret
check_vesaw:
subb $VIDEO_FIRST_VESA>>8, %bh
- orw $0x4000, %bx # Use linear frame buffer
+ orb $0x40, %bh # Use linear frame buffer
movw $0x4f02, %ax # VESA BIOS mode set call
int $0x10
cmpw $0x004f, %ax # AL=4f if implemented
- jnz _setbadw # AH=0 if OK
+ jnz setbadw # AH=0 if OK
stc
ret
-_setbadw: jmp setbadw
-
bogus_real_magic:
movw $0x0e00 + 'B', %fs:(0x12)
jmp bogus_real_magic
[-- Attachment #4: 03-x86-S3-shrink-vars.patch --]
[-- Type: text/plain, Size: 1054 bytes --]
x86: shrink video_{flags,mode} to {8,16} bits
We really don't need them to be any wider.
Also remove the C level declaration (and hence also the GLOBAL) of
video_mode altogether; it's used in assembly code only.
Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: New.
--- a/xen/arch/x86/boot/wakeup.S
+++ b/xen/arch/x86/boot/wakeup.S
@@ -82,10 +82,9 @@ bogus_real_magic:
.align 4
real_magic: .long 0x12345678
-GLOBAL(video_mode)
- .long 0
+video_mode: .word 0
GLOBAL(video_flags)
- .long 0
+ .byte 0
.code32
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -99,7 +99,9 @@ extern char trampoline_realmode_entry[];
extern unsigned int trampoline_xen_phys_start;
extern unsigned char trampoline_cpu_started;
extern char wakeup_start[];
-extern unsigned int video_mode, video_flags;
+
+extern unsigned char video_flags;
+
extern unsigned short boot_edid_caps;
extern unsigned char boot_edid_info[128];
#endif
[-- Attachment #5: Type: text/plain, Size: 157 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xen-devel] [PATCH v2 1/3] x86/ACPI: restore VESA mode upon resume from S3
2019-08-30 13:41 ` [Xen-devel] [PATCH v2 1/3] x86/ACPI: restore VESA mode upon resume from S3 Jan Beulich
@ 2019-09-02 10:42 ` Andrew Cooper
2019-09-02 10:50 ` Jan Beulich
0 siblings, 1 reply; 9+ messages in thread
From: Andrew Cooper @ 2019-09-02 10:42 UTC (permalink / raw)
To: Jan Beulich, xen-devel; +Cc: Wei Liu, Roger Pau Monné
On 30/08/2019 14:41, Jan Beulich wrote:
> In order for "acpi_sleep=s3_mode" to have any effect, we should record
> the video mode we switched to during boot. Since right now there's mode
> setting code for VESA modes only in the resume case, record the mode
> just in that one case.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> I'm wondering actually whether the user having to explicitly request the
> mode restoration is a good model: Why would we _not_ want to restore the
> mode we've set during boot? In the worst case Dom0 kernel or X will
> change the mode another time.
By this, I presume you mean drop the acpi_sleep option entirely?
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xen-devel] [PATCH v2 2/3] x86: a little bit of 16-bit video mode setting code cleanup
2019-08-30 13:41 ` [Xen-devel] [PATCH v2 2/3] x86: a little bit of 16-bit video mode setting code cleanup Jan Beulich
@ 2019-09-02 10:44 ` Andrew Cooper
0 siblings, 0 replies; 9+ messages in thread
From: Andrew Cooper @ 2019-09-02 10:44 UTC (permalink / raw)
To: Jan Beulich, xen-devel; +Cc: Wei Liu, Roger Pau Monné
On 30/08/2019 14:41, Jan Beulich wrote:
> To "compensate" for the code size growth by an earlier change:
> - drop "trampoline" labels (in almost all cases the target label is
> reachable with an 8-bit-displacement branch anyway, and a single 16-
> bit-displacement branch is still better than a pair of two branches)
> - drop an entirely dead insn from wakeup.S:mode_setw
> - reduce code size in a few other (obvious I hope) cases, by more
> suitable insn/operands selection
>
> Also drop redundant #define-s (move suitable #include a little earlier
> instead) and add two alignment directives.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xen-devel] [PATCH v2 3/3] x86: shrink video_{flags, mode} to {8, 16} bits
2019-08-30 13:42 ` [Xen-devel] [PATCH v2 3/3] x86: shrink video_{flags, mode} to {8, 16} bits Jan Beulich
@ 2019-09-02 10:46 ` Andrew Cooper
0 siblings, 0 replies; 9+ messages in thread
From: Andrew Cooper @ 2019-09-02 10:46 UTC (permalink / raw)
To: Jan Beulich, xen-devel; +Cc: Wei Liu, Roger Pau Monné
On 30/08/2019 14:42, Jan Beulich wrote:
> We really don't need them to be any wider.
>
> Also remove the C level declaration (and hence also the GLOBAL) of
> video_mode altogether; it's used in assembly code only.
>
> Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Xen-devel] [PATCH v2 1/3] x86/ACPI: restore VESA mode upon resume from S3
2019-09-02 10:42 ` Andrew Cooper
@ 2019-09-02 10:50 ` Jan Beulich
0 siblings, 0 replies; 9+ messages in thread
From: Jan Beulich @ 2019-09-02 10:50 UTC (permalink / raw)
To: Andrew Cooper; +Cc: xen-devel, Wei Liu, Roger Pau Monné
On 02.09.2019 12:42, Andrew Cooper wrote:
> On 30/08/2019 14:41, Jan Beulich wrote:
>> In order for "acpi_sleep=s3_mode" to have any effect, we should record
>> the video mode we switched to during boot. Since right now there's mode
>> setting code for VESA modes only in the resume case, record the mode
>> just in that one case.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
Thanks.
>> ---
>> I'm wondering actually whether the user having to explicitly request the
>> mode restoration is a good model: Why would we _not_ want to restore the
>> mode we've set during boot? In the worst case Dom0 kernel or X will
>> change the mode another time.
>
> By this, I presume you mean drop the acpi_sleep option entirely?
Well, no, not drop it altogether. But invert the s3_mode default.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-09-02 10:50 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-30 13:38 [Xen-devel] [PATCH v2 0/3] x86: S3 resume adjustments Jan Beulich
2019-08-30 13:41 ` [Xen-devel] [PATCH v2 1/3] x86/ACPI: restore VESA mode upon resume from S3 Jan Beulich
2019-09-02 10:42 ` Andrew Cooper
2019-09-02 10:50 ` Jan Beulich
2019-08-30 13:41 ` [Xen-devel] [PATCH v2 2/3] x86: a little bit of 16-bit video mode setting code cleanup Jan Beulich
2019-09-02 10:44 ` Andrew Cooper
2019-08-30 13:42 ` [Xen-devel] [PATCH v2 3/3] x86: shrink video_{flags, mode} to {8, 16} bits Jan Beulich
2019-09-02 10:46 ` Andrew Cooper
2019-08-30 13:43 ` [Xen-devel] [PATCH v2 0/3] x86: S3 resume adjustments Jan Beulich
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.