This commit is contained in:
committed by
Git OBS Bridge
parent
075d47716d
commit
c47215274f
103
edid.patch
103
edid.patch
@@ -1,7 +1,7 @@
|
||||
Index: 2007-03-19/xen/arch/x86/Makefile
|
||||
Index: 2007-05-14/xen/arch/x86/Makefile
|
||||
===================================================================
|
||||
--- 2007-03-19.orig/xen/arch/x86/Makefile 2007-03-19 14:07:47.000000000 +0100
|
||||
+++ 2007-03-19/xen/arch/x86/Makefile 2007-03-19 14:07:50.000000000 +0100
|
||||
--- 2007-05-14.orig/xen/arch/x86/Makefile 2007-07-02 12:09:34.000000000 +0200
|
||||
+++ 2007-05-14/xen/arch/x86/Makefile 2007-03-19 14:07:50.000000000 +0100
|
||||
@@ -78,7 +78,7 @@ xen.lds: $(TARGET_SUBARCH)/xen.lds.S $(H
|
||||
boot/mkelf32: boot/mkelf32.c
|
||||
$(HOSTCC) $(HOSTCFLAGS) -o $@ $<
|
||||
@@ -11,10 +11,10 @@ Index: 2007-03-19/xen/arch/x86/Makefile
|
||||
|
||||
.PHONY: clean
|
||||
clean::
|
||||
Index: 2007-03-19/xen/arch/x86/boot/realmode.S
|
||||
Index: 2007-05-14/xen/arch/x86/boot/realmode.S
|
||||
===================================================================
|
||||
--- 2007-03-19.orig/xen/arch/x86/boot/realmode.S 2007-03-21 14:35:06.000000000 +0100
|
||||
+++ 2007-03-19/xen/arch/x86/boot/realmode.S 2007-03-21 14:35:14.000000000 +0100
|
||||
--- 2007-05-14.orig/xen/arch/x86/boot/realmode.S 2007-07-02 12:09:34.000000000 +0200
|
||||
+++ 2007-05-14/xen/arch/x86/boot/realmode.S 2007-03-21 14:35:14.000000000 +0100
|
||||
@@ -142,4 +142,11 @@ eddbuf: .skip EDDMAXNR * (EDDEXTSIZE +
|
||||
edd_mbr_sig_buf: .skip EDD_MBR_SIG_MAX * 4
|
||||
eddnr: .skip 1
|
||||
@@ -27,10 +27,10 @@ Index: 2007-03-19/xen/arch/x86/boot/realmode.S
|
||||
.previous
|
||||
+
|
||||
+#include "video.S"
|
||||
Index: 2007-03-19/xen/arch/x86/boot/video.S
|
||||
Index: 2007-05-14/xen/arch/x86/boot/video.S
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ 2007-03-19/xen/arch/x86/boot/video.S 2007-03-19 14:07:50.000000000 +0100
|
||||
+++ 2007-05-14/xen/arch/x86/boot/video.S 2007-03-19 14:07:50.000000000 +0100
|
||||
@@ -0,0 +1,35 @@
|
||||
+store_edid:
|
||||
+ movl $0x13131313, %eax # memset block with 0x13
|
||||
@@ -67,10 +67,10 @@ Index: 2007-03-19/xen/arch/x86/boot/video.S
|
||||
+
|
||||
+no_edid:
|
||||
+ ret
|
||||
Index: 2007-03-19/xen/arch/x86/boot/x86_32.S
|
||||
Index: 2007-05-14/xen/arch/x86/boot/x86_32.S
|
||||
===================================================================
|
||||
--- 2007-03-19.orig/xen/arch/x86/boot/x86_32.S 2007-03-19 14:07:47.000000000 +0100
|
||||
+++ 2007-03-19/xen/arch/x86/boot/x86_32.S 2007-03-19 14:07:50.000000000 +0100
|
||||
--- 2007-05-14.orig/xen/arch/x86/boot/x86_32.S 2007-07-02 12:09:34.000000000 +0200
|
||||
+++ 2007-05-14/xen/arch/x86/boot/x86_32.S 2007-03-19 14:07:50.000000000 +0100
|
||||
@@ -92,6 +92,8 @@ __start:
|
||||
|
||||
pushl $SYM_PHYS(edd)
|
||||
@@ -80,10 +80,10 @@ Index: 2007-03-19/xen/arch/x86/boot/x86_32.S
|
||||
|
||||
#ifdef CONFIG_X86_PAE
|
||||
/* Initialize low and high mappings of all memory with 2MB pages */
|
||||
Index: 2007-03-19/xen/arch/x86/boot/x86_64.S
|
||||
Index: 2007-05-14/xen/arch/x86/boot/x86_64.S
|
||||
===================================================================
|
||||
--- 2007-03-19.orig/xen/arch/x86/boot/x86_64.S 2007-03-19 14:07:47.000000000 +0100
|
||||
+++ 2007-03-19/xen/arch/x86/boot/x86_64.S 2007-03-19 14:07:50.000000000 +0100
|
||||
--- 2007-05-14.orig/xen/arch/x86/boot/x86_64.S 2007-07-02 12:09:34.000000000 +0200
|
||||
+++ 2007-05-14/xen/arch/x86/boot/x86_64.S 2007-03-19 14:07:50.000000000 +0100
|
||||
@@ -75,6 +75,8 @@ __start:
|
||||
lss SYM_PHYS(.Lstack_start),%esp
|
||||
pushl $SYM_PHYS(edd)
|
||||
@@ -93,10 +93,10 @@ Index: 2007-03-19/xen/arch/x86/boot/x86_64.S
|
||||
|
||||
/* We begin by interrogating the CPU for the presence of long mode. */
|
||||
mov $0x80000000,%eax
|
||||
Index: 2007-03-19/xen/arch/x86/platform_hypercall.c
|
||||
Index: 2007-05-14/xen/arch/x86/platform_hypercall.c
|
||||
===================================================================
|
||||
--- 2007-03-19.orig/xen/arch/x86/platform_hypercall.c 2007-03-19 14:07:47.000000000 +0100
|
||||
+++ 2007-03-19/xen/arch/x86/platform_hypercall.c 2007-03-19 14:07:50.000000000 +0100
|
||||
--- 2007-05-14.orig/xen/arch/x86/platform_hypercall.c 2007-07-02 12:09:34.000000000 +0200
|
||||
+++ 2007-05-14/xen/arch/x86/platform_hypercall.c 2007-07-02 12:09:50.000000000 +0200
|
||||
@@ -24,10 +24,15 @@
|
||||
#include <asm/mtrr.h>
|
||||
#include "cpu/mtrr/mtrr.h"
|
||||
@@ -121,29 +121,35 @@ Index: 2007-03-19/xen/arch/x86/platform_hypercall.c
|
||||
#endif
|
||||
|
||||
ret_t do_platform_op(XEN_GUEST_HANDLE(xen_platform_op_t) u_xenpf_op)
|
||||
@@ -219,6 +225,21 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe
|
||||
else
|
||||
ret = -ESRCH;
|
||||
@@ -212,6 +218,27 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe
|
||||
u.firmware_info.u.disk_mbr_signature)
|
||||
? -EFAULT : 0);
|
||||
break;
|
||||
+ case XEN_FW_DDC_INFO:
|
||||
+ if ( op->u.firmware_info.index == 0 )
|
||||
+ {
|
||||
+ op->u.firmware_info.u.ddc_info.capabilities = ddc.capabilities;
|
||||
+ op->u.firmware_info.u.ddc_info.edid_transfer_time = ddc.edid_transfer_time;
|
||||
+ if ( copy_field_to_guest(u_xenpf_op, op, u.firmware_info.u.ddc_info.capabilities) ||
|
||||
+ copy_field_to_guest(u_xenpf_op, op, u.firmware_info.u.ddc_info.edid_transfer_time) ||
|
||||
+ copy_to_compat(op->u.firmware_info.u.ddc_info.edid,
|
||||
+ ddc.edid,
|
||||
+ ARRAY_SIZE(ddc.edid)) )
|
||||
+ ret = -EFAULT;
|
||||
+ }
|
||||
+ else
|
||||
+ ret = -ESRCH;
|
||||
+ case XEN_FW_VBEDDC_INFO:
|
||||
+ ret = -ESRCH;
|
||||
+ if ( op->u.firmware_info.index != 0 )
|
||||
+ break;
|
||||
+ if ( *(u32 *)ddc.edid == 0x13131313 )
|
||||
+ break;
|
||||
+
|
||||
+ op->u.firmware_info.u.vbeddc_info.capabilities =
|
||||
+ ddc.capabilities;
|
||||
+ op->u.firmware_info.u.vbeddc_info.edid_transfer_time =
|
||||
+ ddc.edid_transfer_time;
|
||||
+
|
||||
+ ret = 0;
|
||||
+ if ( copy_field_to_guest(u_xenpf_op, op, u.firmware_info.
|
||||
+ u.vbeddc_info.capabilities) ||
|
||||
+ copy_field_to_guest(u_xenpf_op, op, u.firmware_info.
|
||||
+ u.vbeddc_info.edid_transfer_time) ||
|
||||
+ copy_to_compat(op->u.firmware_info.u.vbeddc_info.edid,
|
||||
+ ddc.edid, ARRAY_SIZE(ddc.edid)) )
|
||||
+ ret = -EFAULT;
|
||||
+ break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
@@ -238,11 +259,17 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe
|
||||
@@ -231,11 +258,17 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe
|
||||
#ifndef COMPAT
|
||||
static int __init firmware_init(void)
|
||||
{
|
||||
@@ -161,28 +167,29 @@ Index: 2007-03-19/xen/arch/x86/platform_hypercall.c
|
||||
return 0;
|
||||
}
|
||||
__initcall(firmware_init);
|
||||
Index: 2007-03-19/xen/include/public/platform.h
|
||||
Index: 2007-05-14/xen/include/public/platform.h
|
||||
===================================================================
|
||||
--- 2007-03-19.orig/xen/include/public/platform.h 2007-03-19 14:07:47.000000000 +0100
|
||||
+++ 2007-03-19/xen/include/public/platform.h 2007-03-19 14:07:50.000000000 +0100
|
||||
@@ -119,6 +119,7 @@ DEFINE_XEN_GUEST_HANDLE(xenpf_platform_q
|
||||
#define XEN_FW_EDD_INFO 2 /* from int 13 AH=41 */
|
||||
#define XEN_FW_EDD_PARAMS 3 /* from int 13 AH=48 */
|
||||
#define XEN_FW_MBR_SIGNATURE 4
|
||||
+#define XEN_FW_DDC_INFO 5 /* from int 10 AX=4f15 */
|
||||
--- 2007-05-14.orig/xen/include/public/platform.h 2007-07-02 12:09:34.000000000 +0200
|
||||
+++ 2007-05-14/xen/include/public/platform.h 2007-07-02 11:49:06.000000000 +0200
|
||||
@@ -117,6 +117,7 @@ DEFINE_XEN_GUEST_HANDLE(xenpf_platform_q
|
||||
#define XENPF_firmware_info 50
|
||||
#define XEN_FW_DISK_INFO 1 /* from int 13 AH=08/41/48 */
|
||||
#define XEN_FW_DISK_MBR_SIGNATURE 2 /* from MBR offset 0x1b8 */
|
||||
+#define XEN_FW_VBEDDC_INFO 3 /* from int 10 AX=4f15 */
|
||||
struct xenpf_firmware_info {
|
||||
/* IN variables. */
|
||||
uint32_t type;
|
||||
@@ -138,6 +139,12 @@ struct xenpf_firmware_info {
|
||||
/* first uint16_t of buffer must be set to buffer size */
|
||||
XEN_GUEST_HANDLE(void) edd_params;
|
||||
uint32_t mbr_signature;
|
||||
@@ -140,6 +141,13 @@ struct xenpf_firmware_info {
|
||||
uint8_t device; /* bios device number */
|
||||
uint32_t mbr_signature; /* offset 0x1b8 in mbr */
|
||||
} disk_mbr_signature; /* XEN_FW_DISK_MBR_SIGNATURE */
|
||||
+ struct {
|
||||
+ /* Int10, AX=4F15: Get EDID info. */
|
||||
+ uint8_t capabilities;
|
||||
+ uint8_t edid_transfer_time;
|
||||
+ /* must refer to 128-byte buffer */
|
||||
+ XEN_GUEST_HANDLE(uint8_t) edid;
|
||||
+ } ddc_info;
|
||||
+ } vbeddc_info; /* XEN_FW_VBEDDC_INFO */
|
||||
} u;
|
||||
};
|
||||
typedef struct xenpf_firmware_info xenpf_firmware_info_t;
|
||||
|
Reference in New Issue
Block a user