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] merge

# HG changeset patch
# User ack@xxxxxxxxxxxxxxxxxxxxx
# Node ID e86343be473083c22247060eb532e8881ee0bbdd
# Parent  e16d57440134a92239fb22bfa2667d1303ca0fee
# Parent  6dcd85ea232e0de5445f325abd0829a0ed6d56a1
merge
---
 tools/ioemu/patches/ioemu-ia64       |   27 ++--
 tools/ioemu/target-i386-dm/exec-dm.c |    6 -
 xen/drivers/video/vga.c              |  196 ++++++++++++++++++-----------------
 xen/include/xen/vga.h                |    1 
 4 files changed, 118 insertions(+), 112 deletions(-)

diff -r e16d57440134 -r e86343be4730 tools/ioemu/patches/ioemu-ia64
--- a/tools/ioemu/patches/ioemu-ia64    Tue Aug 15 15:48:31 2006 +0100
+++ b/tools/ioemu/patches/ioemu-ia64    Tue Aug 15 15:49:16 2006 +0100
@@ -1,7 +1,7 @@ Index: ioemu/hw/iommu.c
 Index: ioemu/hw/iommu.c
 ===================================================================
---- ioemu.orig/hw/iommu.c      2006-08-06 01:55:03.240628184 +0100
-+++ ioemu/hw/iommu.c   2006-08-06 02:18:54.843126039 +0100
+--- ioemu.orig/hw/iommu.c      2006-08-15 13:51:31.425498388 +0100
++++ ioemu/hw/iommu.c   2006-08-15 13:51:35.834011166 +0100
 @@ -82,7 +82,11 @@
  #define IOPTE_VALID         0x00000002 /* IOPTE is valid */
  #define IOPTE_WAZ           0x00000001 /* Write as zeros */
@@ -16,8 +16,8 @@ Index: ioemu/hw/iommu.c
  
 Index: ioemu/cpu-all.h
 ===================================================================
---- ioemu.orig/cpu-all.h       2006-08-06 02:17:09.392881406 +0100
-+++ ioemu/cpu-all.h    2006-08-06 02:18:54.844125928 +0100
+--- ioemu.orig/cpu-all.h       2006-08-15 13:51:35.772018017 +0100
++++ ioemu/cpu-all.h    2006-08-15 13:51:35.835011055 +0100
 @@ -835,6 +835,31 @@
                  :"=m" (*(volatile long *)addr)
                  :"dIr" (nr));
@@ -52,8 +52,8 @@ Index: ioemu/cpu-all.h
  /* memory API */
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-06 02:18:45.608155528 +0100
-+++ ioemu/vl.c 2006-08-06 02:18:54.847125593 +0100
+--- ioemu.orig/vl.c    2006-08-15 13:51:35.824012271 +0100
++++ ioemu/vl.c 2006-08-15 13:51:46.770802425 +0100
 @@ -6140,6 +6140,11 @@
      /* init the memory */
      phys_ram_size = ram_size + vga_ram_size + bios_size;
@@ -118,8 +118,8 @@ Index: ioemu/vl.c
      phys_ram_base = qemu_vmalloc(phys_ram_size);
 Index: ioemu/target-i386-dm/exec-dm.c
 ===================================================================
---- ioemu.orig/target-i386-dm/exec-dm.c        2006-08-06 02:15:01.776108064 
+0100
-+++ ioemu/target-i386-dm/exec-dm.c     2006-08-06 02:18:54.848125482 +0100
+--- ioemu.orig/target-i386-dm/exec-dm.c        2006-08-15 13:51:35.705025421 
+0100
++++ ioemu/target-i386-dm/exec-dm.c     2006-08-15 13:51:51.987225890 +0100
 @@ -341,6 +341,23 @@
      return io_mem_read[io_index >> IO_MEM_SHIFT];
  }
@@ -144,20 +144,20 @@ Index: ioemu/target-i386-dm/exec-dm.c
  /* physical memory access (slow version, mainly for debug) */
  #if defined(CONFIG_USER_ONLY)
  void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf, 
-@@ -456,6 +473,9 @@
-                 ptr = phys_ram_base + (pd & TARGET_PAGE_MASK) + 
-                     (addr & ~TARGET_PAGE_MASK);
-                 memcpy(buf, ptr, l);
+@@ -432,6 +449,9 @@
+                 /* RAM case */
+                 ptr = phys_ram_base + addr1;
+                 memcpy(ptr, buf, l);
 +#ifdef __ia64__
 +                sync_icache((unsigned long)ptr, l);
 +#endif 
-             } else {
-                 /* unreported MMIO space */
-                 memset(buf, 0xff, len);
+             }
+         } else {
+             if (io_index) {
 Index: ioemu/exec-all.h
 ===================================================================
---- ioemu.orig/exec-all.h      2006-08-06 02:14:09.796902750 +0100
-+++ ioemu/exec-all.h   2006-08-06 02:18:54.848125482 +0100
+--- ioemu.orig/exec-all.h      2006-08-15 13:51:35.682027963 +0100
++++ ioemu/exec-all.h   2006-08-15 13:51:35.839010613 +0100
 @@ -462,12 +462,13 @@
  }
  #endif
@@ -177,8 +177,8 @@ Index: ioemu/exec-all.h
  
 Index: ioemu/target-i386-dm/cpu.h
 ===================================================================
---- ioemu.orig/target-i386-dm/cpu.h    2006-08-06 02:15:01.776108064 +0100
-+++ ioemu/target-i386-dm/cpu.h 2006-08-06 02:18:54.848125482 +0100
+--- ioemu.orig/target-i386-dm/cpu.h    2006-08-15 13:51:35.704025531 +0100
++++ ioemu/target-i386-dm/cpu.h 2006-08-15 13:51:35.839010613 +0100
 @@ -80,7 +80,11 @@
  /* helper2.c */
  int main_loop(void);
@@ -194,7 +194,7 @@ Index: ioemu/ia64_intrinsic.h
 Index: ioemu/ia64_intrinsic.h
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/ia64_intrinsic.h     2006-08-06 02:18:54.849125370 +0100
++++ ioemu/ia64_intrinsic.h     2006-08-15 13:51:35.840010502 +0100
 @@ -0,0 +1,276 @@
 +#ifndef IA64_INTRINSIC_H
 +#define IA64_INTRINSIC_H
diff -r e16d57440134 -r e86343be4730 tools/ioemu/target-i386-dm/exec-dm.c
--- a/tools/ioemu/target-i386-dm/exec-dm.c      Tue Aug 15 15:48:31 2006 +0100
+++ b/tools/ioemu/target-i386-dm/exec-dm.c      Tue Aug 15 15:49:16 2006 +0100
@@ -449,6 +449,9 @@ void cpu_physical_memory_rw(target_phys_
                 /* RAM case */
                 ptr = phys_ram_base + addr1;
                 memcpy(ptr, buf, l);
+#ifdef __ia64__
+                sync_icache((unsigned long)ptr, l);
+#endif 
             }
         } else {
             if (io_index) {
@@ -473,9 +476,6 @@ void cpu_physical_memory_rw(target_phys_
                 ptr = phys_ram_base + (pd & TARGET_PAGE_MASK) + 
                     (addr & ~TARGET_PAGE_MASK);
                 memcpy(buf, ptr, l);
-#ifdef __ia64__
-                sync_icache((unsigned long)ptr, l);
-#endif 
             } else {
                 /* unreported MMIO space */
                 memset(buf, 0xff, len);
diff -r e16d57440134 -r e86343be4730 xen/drivers/video/vga.c
--- a/xen/drivers/video/vga.c   Tue Aug 15 15:48:31 2006 +0100
+++ b/xen/drivers/video/vga.c   Tue Aug 15 15:49:16 2006 +0100
@@ -170,59 +170,59 @@
  * generic VGA port read/write
  */
  
-static inline uint8_t vga_io_r (uint16_t port)
+static inline uint8_t vga_io_r(uint16_t port)
 {
     return inb(port);
 }
 
-static inline void vga_io_w (uint16_t port, uint8_t val)
+static inline void vga_io_w(uint16_t port, uint8_t val)
 {
     outb(val, port);
 }
 
-static inline void vga_io_w_fast (uint16_t port, uint8_t reg, uint8_t val)
-{
-    outw(VGA_OUT16VAL (val, reg), port);
-}
-
-static inline uint8_t vga_mm_r (void __iomem *regbase, uint16_t port)
-{
-    return readb (regbase + port);
-}
-
-static inline void vga_mm_w (void __iomem *regbase, uint16_t port, uint8_t val)
-{
-    writeb (val, regbase + port);
-}
-
-static inline void vga_mm_w_fast (void __iomem *regbase, uint16_t port, 
uint8_t reg, uint8_t val)
-{
-    writew (VGA_OUT16VAL (val, reg), regbase + port);
-}
-
-static inline uint8_t vga_r (void __iomem *regbase, uint16_t port)
+static inline void vga_io_w_fast(uint16_t port, uint8_t reg, uint8_t val)
+{
+    outw(VGA_OUT16VAL(val, reg), port);
+}
+
+static inline uint8_t vga_mm_r(void __iomem *regbase, uint16_t port)
+{
+    return readb(regbase + port);
+}
+
+static inline void vga_mm_w(void __iomem *regbase, uint16_t port, uint8_t val)
+{
+    writeb(val, regbase + port);
+}
+
+static inline void vga_mm_w_fast(void __iomem *regbase, uint16_t port, uint8_t 
reg, uint8_t val)
+{
+    writew(VGA_OUT16VAL(val, reg), regbase + port);
+}
+
+static inline uint8_t vga_r(void __iomem *regbase, uint16_t port)
 {
     if (regbase)
-        return vga_mm_r (regbase, port);
+        return vga_mm_r(regbase, port);
     else
-        return vga_io_r (port);
-}
-
-static inline void vga_w (void __iomem *regbase, uint16_t port, uint8_t val)
+        return vga_io_r(port);
+}
+
+static inline void vga_w(void __iomem *regbase, uint16_t port, uint8_t val)
 {
     if (regbase)
-        vga_mm_w (regbase, port, val);
+        vga_mm_w(regbase, port, val);
     else
-        vga_io_w (port, val);
-}
-
-
-static inline void vga_w_fast (void __iomem *regbase, uint16_t port, uint8_t 
reg, uint8_t val)
+        vga_io_w(port, val);
+}
+
+
+static inline void vga_w_fast(void __iomem *regbase, uint16_t port, uint8_t 
reg, uint8_t val)
 {
     if (regbase)
-        vga_mm_w_fast (regbase, port, reg, val);
+        vga_mm_w_fast(regbase, port, reg, val);
     else
-        vga_io_w_fast (port, reg, val);
+        vga_io_w_fast(port, reg, val);
 }
 
 
@@ -230,19 +230,19 @@ static inline void vga_w_fast (void __io
  * VGA CRTC register read/write
  */
  
-static inline uint8_t vga_rcrt (void __iomem *regbase, uint8_t reg)
-{
-    vga_w (regbase, VGA_CRT_IC, reg);
-    return vga_r (regbase, VGA_CRT_DC);
-}
-
-static inline void vga_wcrt (void __iomem *regbase, uint8_t reg, uint8_t val)
+static inline uint8_t vga_rcrt(void __iomem *regbase, uint8_t reg)
+{
+    vga_w(regbase, VGA_CRT_IC, reg);
+    return vga_r(regbase, VGA_CRT_DC);
+}
+
+static inline void vga_wcrt(void __iomem *regbase, uint8_t reg, uint8_t val)
 {
 #ifdef VGA_OUTW_WRITE
-    vga_w_fast (regbase, VGA_CRT_IC, reg, val);
+    vga_w_fast(regbase, VGA_CRT_IC, reg, val);
 #else
-    vga_w (regbase, VGA_CRT_IC, reg);
-    vga_w (regbase, VGA_CRT_DC, val);
+    vga_w(regbase, VGA_CRT_IC, reg);
+    vga_w(regbase, VGA_CRT_DC, val);
 #endif /* VGA_OUTW_WRITE */
 }
 
@@ -250,19 +250,19 @@ static inline void vga_wcrt (void __iome
  * VGA sequencer register read/write
  */
  
-static inline uint8_t vga_rseq (void __iomem *regbase, uint8_t reg)
-{
-    vga_w (regbase, VGA_SEQ_I, reg);
-    return vga_r (regbase, VGA_SEQ_D);
-}
-
-static inline void vga_wseq (void __iomem *regbase, uint8_t reg, uint8_t val)
+static inline uint8_t vga_rseq(void __iomem *regbase, uint8_t reg)
+{
+    vga_w(regbase, VGA_SEQ_I, reg);
+    return vga_r(regbase, VGA_SEQ_D);
+}
+
+static inline void vga_wseq(void __iomem *regbase, uint8_t reg, uint8_t val)
 {
 #ifdef VGA_OUTW_WRITE
-    vga_w_fast (regbase, VGA_SEQ_I, reg, val);
+    vga_w_fast(regbase, VGA_SEQ_I, reg, val);
 #else
-    vga_w (regbase, VGA_SEQ_I, reg);
-    vga_w (regbase, VGA_SEQ_D, val);
+    vga_w(regbase, VGA_SEQ_I, reg);
+    vga_w(regbase, VGA_SEQ_D, val);
 #endif /* VGA_OUTW_WRITE */
 }
 
@@ -270,19 +270,19 @@ static inline void vga_wseq (void __iome
  * VGA graphics controller register read/write
  */
  
-static inline uint8_t vga_rgfx (void __iomem *regbase, uint8_t reg)
-{
-    vga_w (regbase, VGA_GFX_I, reg);
-    return vga_r (regbase, VGA_GFX_D);
-}
-
-static inline void vga_wgfx (void __iomem *regbase, uint8_t reg, uint8_t val)
+static inline uint8_t vga_rgfx(void __iomem *regbase, uint8_t reg)
+{
+    vga_w(regbase, VGA_GFX_I, reg);
+    return vga_r(regbase, VGA_GFX_D);
+}
+
+static inline void vga_wgfx(void __iomem *regbase, uint8_t reg, uint8_t val)
 {
 #ifdef VGA_OUTW_WRITE
-    vga_w_fast (regbase, VGA_GFX_I, reg, val);
+    vga_w_fast(regbase, VGA_GFX_I, reg, val);
 #else
-    vga_w (regbase, VGA_GFX_I, reg);
-    vga_w (regbase, VGA_GFX_D, val);
+    vga_w(regbase, VGA_GFX_I, reg);
+    vga_w(regbase, VGA_GFX_D, val);
 #endif /* VGA_OUTW_WRITE */
 }
 
@@ -290,16 +290,16 @@ static inline void vga_wgfx (void __iome
  * VGA attribute controller register read/write
  */
  
-static inline uint8_t vga_rattr (void __iomem *regbase, uint8_t reg)
-{
-    vga_w (regbase, VGA_ATT_IW, reg);
-    return vga_r (regbase, VGA_ATT_R);
-}
-
-static inline void vga_wattr (void __iomem *regbase, uint8_t reg, uint8_t val)
-{
-    vga_w (regbase, VGA_ATT_IW, reg);
-    vga_w (regbase, VGA_ATT_W, val);
+static inline uint8_t vga_rattr(void __iomem *regbase, uint8_t reg)
+{
+    vga_w(regbase, VGA_ATT_IW, reg);
+    return vga_r(regbase, VGA_ATT_R);
+}
+
+static inline void vga_wattr(void __iomem *regbase, uint8_t reg, uint8_t val)
+{
+    vga_w(regbase, VGA_ATT_IW, reg);
+    vga_w(regbase, VGA_ATT_W, val);
 }
 
 static int detect_video(void *video_base)
@@ -324,7 +324,7 @@ static int detect_video(void *video_base
     return video_found;
 }
 
-int detect_vga()
+static int detect_vga(void)
 {
     /*
      * Look at a number of well-known locations. Even if video is not at
@@ -341,7 +341,7 @@ int detect_vga()
 }
 
 /* This is actually code from vgaHWRestore in an old version of XFree86 :-) */
-void *setup_vga()
+void *setup_vga(void)
 {
     /* The following VGA state was saved from a chip in text mode 3. */
     static unsigned char regs[] = {
@@ -464,10 +464,13 @@ static int vga_set_scanlines(unsigned sc
 #define FONT_HEIGHT_MAX 32
 #define CHAR_MAP_SIZE (FONT_COUNT_MAX * FONT_HEIGHT_MAX)
 
-/* At least on various ATI cards I haven't been able to get the sequencer
-   to honor the change to the character map select register, thus at least
-   a way to override the slot is needed. */
-static unsigned font_slot = 2;
+/*
+ * We use font slot 0 because ATI cards do not honour changes to the
+ * character map select register. The fontslot parameter can be used to
+ * choose a non-default slot if the video card supports it and you wish to
+ * preserve the BIOS-initialised font data.
+ */
+static unsigned font_slot = 0;
 integer_param("fontslot", font_slot);
 
 int vga_load_font(const struct font_desc *font, unsigned rows)
@@ -508,15 +511,18 @@ int vga_load_font(const struct font_desc
     /* map start at A000:0000 */
     vga_wgfx(vgabase, VGA_GFX_MISC, 0x00);
 
-    if (font) {
+    if ( font )
+    {
         unsigned i, j;
         const uint8_t *data = font->data;
-        uint8_t *map = (uint8_t *)__va(0xA0000) + font_slot * 2 * 
CHAR_MAP_SIZE;
-
-        for (i = j = 0; i < CHAR_MAP_SIZE; ) {
-            vga_writeb(j < font->count * fontheight ? data[j++] : 0, map + 
i++);
-            if (!(j % fontheight))
-                while(i & (FONT_HEIGHT_MAX - 1))
+        uint8_t *map = (uint8_t *)__va(0xA0000) + font_slot*2*CHAR_MAP_SIZE;
+
+        for ( i = j = 0; i < CHAR_MAP_SIZE; )
+        {
+            vga_writeb(j < font->count * fontheight ? data[j++] : 0,
+                       map + i++);
+            if ( !(j % fontheight) )
+                while ( i & (FONT_HEIGHT_MAX - 1) )
                     vga_writeb(0, map + i++);
         }
     }
@@ -527,9 +533,9 @@ int vga_load_font(const struct font_desc
     vga_wseq(vgabase, VGA_SEQ_PLANE_WRITE, 0x03);
     /* odd-even addressing */
     vga_wseq(vgabase, VGA_SEQ_MEMORY_MODE, 0x03);
-    /* Character Map Select: The default font is kept in slot 0 and
-     * is never touched. Our custom font is loaded in slot 2. */
-    vga_wseq(vgabase, VGA_SEQ_CHARACTER_MAP, font ? font_slot | (font_slot << 
2) : 0x00);
+    /* Character Map Select: The default font is kept in slot 0. */
+    vga_wseq(vgabase, VGA_SEQ_CHARACTER_MAP,
+             font ? font_slot | (font_slot << 2) : 0x00);
     /* clear synchronous reset */
     vga_wseq(vgabase, VGA_SEQ_RESET, 0x03);
 
@@ -545,9 +551,11 @@ int vga_load_font(const struct font_desc
     vga_wcrt(vgabase, VGA_CRTC_MAX_SCAN, fsr);
 
     /* Cursor shape registers */
-    fsr = (vga_rcrt(vgabase, VGA_CRTC_CURSOR_END) & 0xe0) | (fontheight - 
fontheight / 6);
+    fsr  = vga_rcrt(vgabase, VGA_CRTC_CURSOR_END) & 0xe0;
+    fsr |= fontheight - fontheight / 6;
     vga_wcrt(vgabase, VGA_CRTC_CURSOR_END, fsr);
-    fsr = (vga_rcrt(vgabase, VGA_CRTC_CURSOR_START) & 0xe0) | ((fsr & 0x1f) - 
1);
+    fsr  = vga_rcrt(vgabase, VGA_CRTC_CURSOR_START) & 0xe0;
+    fsr |= (fsr & 0x1f) - 1;
     vga_wcrt(vgabase, VGA_CRTC_CURSOR_START, fsr);
 
     return 0;
diff -r e16d57440134 -r e86343be4730 xen/include/xen/vga.h
--- a/xen/include/xen/vga.h     Tue Aug 15 15:48:31 2006 +0100
+++ b/xen/include/xen/vga.h     Tue Aug 15 15:49:16 2006 +0100
@@ -11,7 +11,6 @@
 
 struct font_desc;
 
-int detect_vga(void);
 void *setup_vga(void);
 void vga_cursor_off(void);
 int vga_load_font(const struct font_desc *, unsigned rows);

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

<Prev in Thread] Current Thread [Next in Thread>