From: James Mckenzie Date: Sat, 26 Sep 2009 01:28:01 +0000 (+0100) Subject: Hopefully fix XC-258 X-Git-Url: http://xenbits.xen.org/gitweb?a=commitdiff_plain;h=09f2f7b5b8a5f6230ba4348671b99d2b87f8ca69;p=xenclient%2Fioemu-pq.git Hopefully fix XC-258 --- diff --git a/master/fix-video b/master/fix-video index 530a368..9593981 100644 --- a/master/fix-video +++ b/master/fix-video @@ -11,7 +11,7 @@ index 8c9b09b..def586a 100644 int is_graphic_console(void); int is_fixedsize_console(void); diff --git a/hw/vga.c b/hw/vga.c -index a2b8744..66f77b0 100644 +index a2b8744..a6b768c 100644 --- a/hw/vga.c +++ b/hw/vga.c @@ -34,6 +34,8 @@ @@ -31,18 +31,17 @@ index a2b8744..66f77b0 100644 return val; } -@@ -631,7 +634,9 @@ static void vbe_ioport_write_data(void *opaque, uint32_t addr, uint32_t val) +@@ -631,7 +634,8 @@ static void vbe_ioport_write_data(void *opaque, uint32_t addr, uint32_t val) !(s->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED)) { int h, shift_control; - if (s->vram_gmfn != s->lfb_addr && intel_output != 1) { -+ /* If framebuffer memory isn't mapped over the real frame buffer, -+ * dom0 needs to be able to see it */ ++ /* If the real frambuffer isn't mapped in, check that the qemu allocd one is*/ + if (s->vram_gmfn != s->lfb_addr && intel_output != INTEL_OUTPUT_MAPPED) { set_vram_mapping(s, s->lfb_addr, s->lfb_end); } -@@ -1686,7 +1691,8 @@ static void vga_draw_graphic(VGAState *s, int full_update) +@@ -1686,7 +1690,8 @@ static void vga_draw_graphic(VGAState *s, int full_update) } } @@ -52,19 +51,8 @@ index a2b8744..66f77b0 100644 return; vga_draw_line = vga_draw_line_table[v * NB_DEPTHS + get_depth_index(s->ds)]; -@@ -2341,6 +2347,10 @@ static void vga_map(PCIDevice *pci_dev, int region_num, - #endif - - fprintf(stderr, "vga s->lfb_addr = %lx s->lfb_end = %lx \n", (unsigned long) s->lfb_addr,(unsigned long) s->lfb_end); -+ fprintf(stderr, "vbe regs VBE_DISPI_INDEX_VIDEO_MEMORY_64K=%d VBE_DISPI_INDEX_XRES=%d VBE_DISPI_INDEX_BPP=%d\n", -+ s->vbe_regs[VBE_DISPI_INDEX_VIDEO_MEMORY_64K], -+ s->vbe_regs[VBE_DISPI_INDEX_XRES], -+ s->vbe_regs[VBE_DISPI_INDEX_BPP]); - - if (size != s->vram_size) - fprintf(stderr, "vga map with size %x != %x\n", size, s->vram_size); diff --git a/intel.c b/intel.c -index df9ebf7..0f0bfde 100644 +index df9ebf7..46949f6 100644 --- a/intel.c +++ b/intel.c @@ -14,31 +14,15 @@ @@ -99,40 +87,53 @@ index df9ebf7..0f0bfde 100644 extern int vga_passthrough; uint32_t guest_framebuffer; -int intel_output; -+int intel_output = INTEL_OUTPUT_UNDEF; ++int intel_output = INTEL_OUTPUT_BLITTED; static int display = 0; static int mmio_fd = -1; -@@ -284,7 +268,7 @@ static void intel_resize(DisplayState *ds) +@@ -187,6 +171,8 @@ static void set_fb_mapping(void) + int rc; + unsigned long nr_pfn; + ++ intel_output = INTEL_OUTPUT_MAPPED; ++ + unset_vga_acc(); + INTEL_DEBUG("set_fb_mapping: %x %x\n", (intel_fb_base + intel_get_surface()), guest_framebuffer); + nr_pfn = (ds_get_linesize(lds) * ds_get_height(lds)) >> TARGET_PAGE_BITS; +@@ -226,6 +212,7 @@ static void unset_fb_mapping(void) + } + + set_vga_acc(); ++ intel_output = INTEL_OUTPUT_BLITTED; + memcpy(ds_get_data(lds), + (uint8_t *) (intel_mem + intel_get_surface()), + ds_get_linesize(lds) * ds_get_height(lds)); +@@ -284,7 +271,6 @@ static void intel_resize(DisplayState *ds) intel_force_linear(ds_get_linesize(ds)); set_fb_mapping(); } - intel_output = 1; -+ intel_output = INTEL_OUTPUT_MAPPED; } else { -@@ -292,12 +276,12 @@ static void intel_resize(DisplayState *ds) +@@ -292,12 +278,10 @@ static void intel_resize(DisplayState *ds) unset_fb_mapping(); else intel_force_linear(0); - intel_output = 2; -+ intel_output = INTEL_OUTPUT_BLITTED; } } else { if (map_size) unset_fb_mapping(); - intel_output = 1; -+ intel_output = INTEL_OUTPUT_MAPPED; } } -@@ -512,6 +496,6 @@ void intel_display_init(DisplayState *ds) +@@ -512,6 +496,5 @@ void intel_display_init(DisplayState *ds) dpy_resize(ds); } - intel_output = 1; -+ intel_output = INTEL_OUTPUT_BLITTED; lds = ds; } diff --git a/intel.h b/intel.h