Skip to contentSkip to conversation

two little bochs-display patches.

PATCH In review Gerd Hoffmann 2 participants 6 messages Oct 5, 2018

lore
Share & tools
lore
#0 lore raw

cover two little bochs-display patches.

Gerd Hoffmann (2):
display: add separate config option for bochs-display
bochs-display: wire up edid support

 hw/display/bochs-display.c | 13 +++++++++++++
 default-configs/pci.mak    |  1 +
 hw/display/Makefile.objs   |  3 ++-
 3 files changed, 16 insertions(+), 1 deletion(-)
Signature · 1 line
2.9.3
#1 lore raw

PATCH 1/2 display: add separate config option for bochs-display

This allows modern architectures which don't care about vga compatibility (risc-v for example) build bochs-display without including all vga emulation too.

---
 default-configs/pci.mak  | 1 +
 hw/display/Makefile.objs | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
default-configs/pci.mak +1 -0
index de53d20ac6..6c7be12779 100644
@@ -44,5 +44,6 @@ CONFIG_SDHCI=y
 CONFIG_EDU=y
 CONFIG_VGA=y
 CONFIG_VGA_PCI=y
+CONFIG_BOCHS_DISPLAY=y
 CONFIG_IVSHMEM_DEVICE=$(CONFIG_IVSHMEM)
 CONFIG_ROCKER=y
hw/display/Makefile.objs +1 -1
index 780a76b9f0..2a0de16a55 100644
@@ -14,11 +14,11 @@ common-obj-$(CONFIG_SSD0323) += ssd0323.o
 common-obj-$(CONFIG_XEN) += xenfb.o
 
 common-obj-$(CONFIG_VGA_PCI) += vga-pci.o
-common-obj-$(CONFIG_VGA_PCI) += bochs-display.o
 common-obj-$(CONFIG_VGA_PCI) += edid-region.o
 common-obj-$(CONFIG_VGA_ISA) += vga-isa.o
 common-obj-$(CONFIG_VGA_ISA_MM) += vga-isa-mm.o
 common-obj-$(CONFIG_VMWARE_VGA) += vmware_vga.o
+common-obj-$(CONFIG_BOCHS_DISPLAY) += bochs-display.o
 
 common-obj-$(CONFIG_BLIZZARD) += blizzard.o
 common-obj-$(CONFIG_EXYNOS4) += exynos4210_fimd.o
Signature · 1 line
2.9.3
Reviewed-by on v1 1/2
#2 lore raw

Re: [Qemu-devel] [PATCH 1/2] display: add separate config option for bochs-display

Quoted 4 lines · Gerd Hoffmann

This allows modern architectures which don't care about vga compatibility (risc-v for example) build bochs-display without including all vga emulation too.

For RISC-V we end up including pci.mak anyway for other things such as NVMe drives. So we don't really need this, but it still seems useful.

Quoted 2 lines

Alistair

Quoted 37 lines
---
 default-configs/pci.mak  | 1 +
 hw/display/Makefile.objs | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
default-configs/pci.mak +1 -0
index de53d20ac6..6c7be12779 100644
@@ -44,5 +44,6 @@ CONFIG_SDHCI=y
 CONFIG_EDU=y
 CONFIG_VGA=y
 CONFIG_VGA_PCI=y
+CONFIG_BOCHS_DISPLAY=y
 CONFIG_IVSHMEM_DEVICE=$(CONFIG_IVSHMEM)
 CONFIG_ROCKER=y
hw/display/Makefile.objs +1 -2
index 780a76b9f0..2a0de16a55 100644
@@ -14,11 +14,11 @@ common-obj-$(CONFIG_SSD0323) += ssd0323.o
 common-obj-$(CONFIG_XEN) += xenfb.o
 
 common-obj-$(CONFIG_VGA_PCI) += vga-pci.o
-common-obj-$(CONFIG_VGA_PCI) += bochs-display.o
 common-obj-$(CONFIG_VGA_PCI) += edid-region.o
 common-obj-$(CONFIG_VGA_ISA) += vga-isa.o
 common-obj-$(CONFIG_VGA_ISA_MM) += vga-isa-mm.o
 common-obj-$(CONFIG_VMWARE_VGA) += vmware_vga.o
+common-obj-$(CONFIG_BOCHS_DISPLAY) += bochs-display.o
 
 common-obj-$(CONFIG_BLIZZARD) += blizzard.o
 common-obj-$(CONFIG_EXYNOS4) += exynos4210_fimd.o
--

2.9.3

#3 lore raw

Re: [Qemu-devel] [PATCH 1/2] display: add separate config option for bochs-display

Quoted 8 lines · Alistair Francis
Quoted 4 lines · Gerd Hoffmann

This allows modern architectures which don't care about vga compatibility (risc-v for example) build bochs-display without including all vga emulation too.

For RISC-V we end up including pci.mak anyway for other things such as NVMe drives. So we don't really need this, but it still seems useful.

Hmm, maybe we should split pci.mak into pci-legacy.mak and pci-express.mak then?

cheers,
Gerd

#4 lore raw

Re: [Qemu-devel] [PATCH 1/2] display: add separate config option for bochs-display

Quoted 7 lines · Gerd Hoffmann
Quoted 6 lines · Alistair Francis
Quoted 4 lines · Gerd Hoffmann

This allows modern architectures which don't care about vga compatibility (risc-v for example) build bochs-display without including all vga emulation too.

Quoted 5 lines
Quoted 2 lines

For RISC-V we end up including pci.mak anyway for other things such as NVMe drives. So we don't really need this, but it still seems useful.

Hmm, maybe we should split pci.mak into pci-legacy.mak and pci-express.mak then?

That sounds like a good idea.

Alistair

Quoted 4 lines

cheers,
Gerd

#5 lore raw

PATCH 2/2 bochs-display: wire up edid support

In reply to Gerd Hoffmann
---
 hw/display/bochs-display.c | 13 +++++++++++++
 hw/display/Makefile.objs   |  1 +
 2 files changed, 14 insertions(+)
hw/display/bochs-display.c +13 -0
index 09d8944a1b..3d439eb240 100644
@@ -9,6 +9,7 @@
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
 #include "hw/display/bochs-vbe.h"
+#include "hw/display/edid.h"
 
 #include "qapi/error.h"
 
@@ -35,9 +36,13 @@ typedef struct BochsDisplayState {
     MemoryRegion     mmio;
     MemoryRegion     vbe;
     MemoryRegion     qext;
+    MemoryRegion     edid;
 
     /* device config */
     uint64_t         vgamem;
+    bool             enable_edid;
+    qemu_edid_info   edid_info;
+    uint8_t          edid_blob[256];
 
     /* device registers */
     uint16_t         vbe_regs[VBE_DISPI_INDEX_NB];
@@ -283,6 +288,12 @@ static void bochs_display_realize(PCIDevice *dev, Error **errp)
     pci_register_bar(&s->pci, 0, PCI_BASE_ADDRESS_MEM_PREFETCH, &s->vram);
     pci_register_bar(&s->pci, 2, PCI_BASE_ADDRESS_SPACE_MEMORY, &s->mmio);
 
+    if (s->enable_edid) {
+        qemu_edid_generate(s->edid_blob, sizeof(s->edid_blob), &s->edid_info);
+        qemu_edid_region_io(&s->edid, obj, s->edid_blob, sizeof(s->edid_blob));
+        memory_region_add_subregion(&s->mmio, 0, &s->edid);
+    }
+
     if (pci_bus_is_express(pci_get_bus(dev))) {
         dev->cap_present |= QEMU_PCI_CAP_EXPRESS;
         ret = pcie_endpoint_cap_init(dev, 0x80);
@@ -325,6 +336,8 @@ static void bochs_display_exit(PCIDevice *dev)
 
 static Property bochs_display_properties[] = {
     DEFINE_PROP_SIZE("vgamem", BochsDisplayState, vgamem, 16 * MiB),
+    DEFINE_PROP_BOOL("edid", BochsDisplayState, enable_edid, false),
+    DEFINE_EDID_PROPERTIES(BochsDisplayState, edid_info),
     DEFINE_PROP_END_OF_LIST(),
 };
 
hw/display/Makefile.objs +1 -0
index 2a0de16a55..2e1b1bcd22 100644
@@ -19,6 +19,7 @@ common-obj-$(CONFIG_VGA_ISA) += vga-isa.o
 common-obj-$(CONFIG_VGA_ISA_MM) += vga-isa-mm.o
 common-obj-$(CONFIG_VMWARE_VGA) += vmware_vga.o
 common-obj-$(CONFIG_BOCHS_DISPLAY) += bochs-display.o
+common-obj-$(CONFIG_BOCHS_DISPLAY) += edid-region.o
 
 common-obj-$(CONFIG_BLIZZARD) += blizzard.o
 common-obj-$(CONFIG_EXYNOS4) += exynos4210_fimd.o
Signature · 1 line
2.9.3