WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Add hypercall function for retrieving EDI

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Add hypercall function for retrieving EDID info
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 21 Jun 2007 05:02:42 -0700
Delivery-date: Thu, 21 Jun 2007 05:01:04 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1182363848 -3600
# Node ID cf846f4d756f53a0cc8d4f33e6a2ef7de82db8cc
# Parent  6310aebd34a6e9f2b7751edd22d6f8c6da44b244
Add hypercall function for retrieving EDID info
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/arch/x86/platform_hypercall.c |   24 ++++++++++++++++++++++++
 xen/include/public/platform.h     |   12 ++++++++++--
 2 files changed, 34 insertions(+), 2 deletions(-)

diff -r 6310aebd34a6 -r cf846f4d756f xen/arch/x86/platform_hypercall.c
--- a/xen/arch/x86/platform_hypercall.c Wed Jun 20 19:08:45 2007 +0100
+++ b/xen/arch/x86/platform_hypercall.c Wed Jun 20 19:24:08 2007 +0100
@@ -24,6 +24,9 @@
 #include <asm/mtrr.h>
 #include "cpu/mtrr/mtrr.h"
 
+extern uint16_t boot_edid_caps;
+extern uint8_t boot_edid_info[];
+
 #ifndef COMPAT
 typedef long ret_t;
 DEFINE_SPINLOCK(xenpf_lock);
@@ -217,6 +220,27 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe
                    ? -EFAULT : 0);
             break;
         }
+        case XEN_FW_VBEDDC_INFO:
+            ret = -ESRCH;
+            if ( op->u.firmware_info.index != 0 )
+                break;
+            if ( *(u32 *)bootsym(boot_edid_info) == 0x13131313 )
+                break;
+
+            op->u.firmware_info.u.ddc_info.capabilities =
+                bootsym(boot_edid_caps);
+            op->u.firmware_info.u.ddc_info.edid_transfer_time =
+                bootsym(boot_edid_caps) >> 8;
+
+            ret = 0;
+            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,
+                                bootsym(boot_edid_info), 128) )
+                ret = -EFAULT;
+            break;
         default:
             ret = -EINVAL;
             break;
diff -r 6310aebd34a6 -r cf846f4d756f xen/include/public/platform.h
--- a/xen/include/public/platform.h     Wed Jun 20 19:08:45 2007 +0100
+++ b/xen/include/public/platform.h     Wed Jun 20 19:24:08 2007 +0100
@@ -115,8 +115,9 @@ DEFINE_XEN_GUEST_HANDLE(xenpf_platform_q
 DEFINE_XEN_GUEST_HANDLE(xenpf_platform_quirk_t);
 
 #define XENPF_firmware_info       50
-#define XEN_FW_DISK_INFO          1
-#define XEN_FW_DISK_MBR_SIGNATURE 2
+#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;
@@ -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; /* XEN_FW_VBEDDC_INFO */
     } u;
 };
 typedef struct xenpf_firmware_info xenpf_firmware_info_t;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Add hypercall function for retrieving EDID info, Xen patchbot-unstable <=