qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Add an isa device for SGA
@ 2011-05-11 17:11 Glauber Costa
  2011-05-11 20:00 ` Jan Kiszka
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Glauber Costa @ 2011-05-11 17:11 UTC (permalink / raw)
  To: kvm; +Cc: aliguori, mtosatti, qemu-devel, avi

This patch adds a dummy legacy ISA device whose responsibility is to
deploy sgabios, an option rom for a serial graphics adapter.
The proposal is that this device is always-on when -nographics,
but can otherwise be enable in any setup when -device sga is used.

Signed-off-by: Glauber Costa <glommer@redhat.com>
---
 Makefile.target |    2 +-
 hw/pc.c         |    2 ++
 hw/pc.h         |    3 +++
 hw/sga.c        |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 55 insertions(+), 1 deletions(-)
 create mode 100644 hw/sga.c

diff --git a/Makefile.target b/Makefile.target
index fdbdc6c..004ea7e 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -224,7 +224,7 @@ obj-$(CONFIG_KVM) += ivshmem.o
 # Hardware support
 obj-i386-y += vga.o
 obj-i386-y += mc146818rtc.o i8259.o pc.o
-obj-i386-y += cirrus_vga.o apic.o ioapic.o piix_pci.o
+obj-i386-y += cirrus_vga.o sga.o apic.o ioapic.o piix_pci.o
 obj-i386-y += vmport.o
 obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o
 obj-i386-y += extboot.o
diff --git a/hw/pc.c b/hw/pc.c
index 8d351ba..56c3887 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -1096,6 +1096,8 @@ void pc_vga_init(PCIBus *pci_bus)
             isa_vga_init();
         }
     }
+
+    isa_sga_init();
 }
 
 static void cpu_request_exit(void *opaque, int irq, int level)
diff --git a/hw/pc.h b/hw/pc.h
index 1291e2d..a00e054 100644
--- a/hw/pc.h
+++ b/hw/pc.h
@@ -219,6 +219,9 @@ int isa_vga_mm_init(target_phys_addr_t vram_base,
 void pci_cirrus_vga_init(PCIBus *bus);
 void isa_cirrus_vga_init(void);
 
+/* serial graphics */
+void isa_sga_init(void);
+
 /* ne2000.c */
 static inline bool isa_ne2000_init(int base, int irq, NICInfo *nd)
 {
diff --git a/hw/sga.c b/hw/sga.c
new file mode 100644
index 0000000..411191b
--- /dev/null
+++ b/hw/sga.c
@@ -0,0 +1,49 @@
+#include "pci.h"
+#include "pc.h"
+#include "loader.h"
+#include "sysemu.h"
+
+#define SGABIOS_FILENAME "sgabios.bin"
+
+typedef struct ISAGAState {
+    ISADevice dev;
+} ISASGAState;
+
+/* We can have both -device, and the initfn called, so better
+ * avoid to have the rom loaded twice */
+static void deploy_rom(void)
+{
+    static int rom_deployed = 0;
+
+    if (!rom_deployed++) {
+        rom_add_vga(SGABIOS_FILENAME);
+    }
+}
+
+static int isa_cirrus_vga_initfn(ISADevice *dev)
+{
+    deploy_rom();
+
+    return 0;
+}
+
+void isa_sga_init(void)
+{
+    if (display_type == DT_NOGRAPHIC) {
+        deploy_rom();
+    }
+}
+
+static ISADeviceInfo sga_info = {
+    .qdev.name    = "sga",
+    .qdev.desc    = "Serial Graphics Adapter",
+    .qdev.size    = sizeof(ISASGAState),
+    .init         = isa_cirrus_vga_initfn,
+};
+
+static void sga_register(void)
+{
+      isa_qdev_register(&sga_info);
+}
+
+device_init(sga_register);
-- 
1.7.4.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] Add an isa device for SGA
  2011-05-11 17:11 [Qemu-devel] [PATCH] Add an isa device for SGA Glauber Costa
@ 2011-05-11 20:00 ` Jan Kiszka
  2011-05-11 20:57   ` Glauber de Oliveira Costa
  2011-05-12  9:07 ` Markus Armbruster
  2011-05-12 14:46 ` Gerd Hoffmann
  2 siblings, 1 reply; 5+ messages in thread
From: Jan Kiszka @ 2011-05-11 20:00 UTC (permalink / raw)
  To: Glauber Costa; +Cc: aliguori, mtosatti, qemu-devel, kvm, avi

[-- Attachment #1: Type: text/plain, Size: 682 bytes --]

On 2011-05-11 19:11, Glauber Costa wrote:
> This patch adds a dummy legacy ISA device whose responsibility is to
> deploy sgabios, an option rom for a serial graphics adapter.
> The proposal is that this device is always-on when -nographics,
> but can otherwise be enable in any setup when -device sga is used.

That means bios output is written to the virtual uart? Sounds
interesting. Where do we find such an option rom?

Alternatively, what about adding serial console support to SeaBIOS? I've
seen real BIOSes that allow driving both VGA and serial in parallel.
That could be controlled via -boot and some fwcfg, just like we request
the boot menu today.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 259 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] Add an isa device for SGA
  2011-05-11 20:00 ` Jan Kiszka
@ 2011-05-11 20:57   ` Glauber de Oliveira Costa
  0 siblings, 0 replies; 5+ messages in thread
From: Glauber de Oliveira Costa @ 2011-05-11 20:57 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: aliguori, kvm, Glauber Costa, mtosatti, qemu-devel, avi



----- Original Message -----
> From: "Jan Kiszka" <jan.kiszka@web.de>
> To: "Glauber Costa" <glommer@redhat.com>
> Cc: kvm@vger.kernel.org, aliguori@us.ibm.com, mtosatti@redhat.com, qemu-devel@nongnu.org, avi@redhat.com
> Sent: Wednesday, May 11, 2011 5:00:10 PM
> Subject: Re: [PATCH] Add an isa device for SGA
> On 2011-05-11 19:11, Glauber Costa wrote:
> > This patch adds a dummy legacy ISA device whose responsibility is to
> > deploy sgabios, an option rom for a serial graphics adapter.
> > The proposal is that this device is always-on when -nographics,
> > but can otherwise be enable in any setup when -device sga is used.
> 
> That means bios output is written to the virtual uart? Sounds
> interesting. Where do we find such an option rom?

code.google.com/p/sgabios

Plan is to include it in the set of roms distributed by QEMU.

> Alternatively, what about adding serial console support to SeaBIOS?
> I've
> seen real BIOSes that allow driving both VGA and serial in parallel.
> That could be controlled via -boot and some fwcfg, just like we
> request
> the boot menu today.
Possible, cleaner, but much more work.

I think using sgabios give us what we need for very little additional cost.
If someone would be willing to do the work in SeaBIOS, that would be another story.

> 
> Jan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] Add an isa device for SGA
  2011-05-11 17:11 [Qemu-devel] [PATCH] Add an isa device for SGA Glauber Costa
  2011-05-11 20:00 ` Jan Kiszka
@ 2011-05-12  9:07 ` Markus Armbruster
  2011-05-12 14:46 ` Gerd Hoffmann
  2 siblings, 0 replies; 5+ messages in thread
From: Markus Armbruster @ 2011-05-12  9:07 UTC (permalink / raw)
  To: Glauber Costa; +Cc: aliguori, mtosatti, qemu-devel, kvm, avi

Glauber Costa <glommer@redhat.com> writes:

> This patch adds a dummy legacy ISA device whose responsibility is to
> deploy sgabios, an option rom for a serial graphics adapter.
> The proposal is that this device is always-on when -nographics,
> but can otherwise be enable in any setup when -device sga is used.
>
> Signed-off-by: Glauber Costa <glommer@redhat.com>
> ---
>  Makefile.target |    2 +-
>  hw/pc.c         |    2 ++
>  hw/pc.h         |    3 +++
>  hw/sga.c        |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 55 insertions(+), 1 deletions(-)
>  create mode 100644 hw/sga.c
>
> diff --git a/Makefile.target b/Makefile.target
> index fdbdc6c..004ea7e 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -224,7 +224,7 @@ obj-$(CONFIG_KVM) += ivshmem.o
>  # Hardware support
>  obj-i386-y += vga.o
>  obj-i386-y += mc146818rtc.o i8259.o pc.o
> -obj-i386-y += cirrus_vga.o apic.o ioapic.o piix_pci.o
> +obj-i386-y += cirrus_vga.o sga.o apic.o ioapic.o piix_pci.o
>  obj-i386-y += vmport.o
>  obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o
>  obj-i386-y += extboot.o
> diff --git a/hw/pc.c b/hw/pc.c
> index 8d351ba..56c3887 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -1096,6 +1096,8 @@ void pc_vga_init(PCIBus *pci_bus)
>              isa_vga_init();
>          }
>      }
> +
> +    isa_sga_init();


Please do this the qdev way (untested):

    if (display_type == DT_NOGRAPHIC) {
        dev = qdev_create(NULL, "sga");
        qdev_init_nofail(dev);
    }

>  }
>  
>  static void cpu_request_exit(void *opaque, int irq, int level)
> diff --git a/hw/pc.h b/hw/pc.h
> index 1291e2d..a00e054 100644
> --- a/hw/pc.h
> +++ b/hw/pc.h
> @@ -219,6 +219,9 @@ int isa_vga_mm_init(target_phys_addr_t vram_base,
>  void pci_cirrus_vga_init(PCIBus *bus);
>  void isa_cirrus_vga_init(void);
>  
> +/* serial graphics */
> +void isa_sga_init(void);
> +
>  /* ne2000.c */
>  static inline bool isa_ne2000_init(int base, int irq, NICInfo *nd)
>  {
> diff --git a/hw/sga.c b/hw/sga.c
> new file mode 100644
> index 0000000..411191b
> --- /dev/null
> +++ b/hw/sga.c
> @@ -0,0 +1,49 @@
> +#include "pci.h"
> +#include "pc.h"
> +#include "loader.h"
> +#include "sysemu.h"
> +
> +#define SGABIOS_FILENAME "sgabios.bin"
> +
> +typedef struct ISAGAState {
> +    ISADevice dev;
> +} ISASGAState;
> +
> +/* We can have both -device, and the initfn called, so better
> + * avoid to have the rom loaded twice */
> +static void deploy_rom(void)
> +{
> +    static int rom_deployed = 0;
> +
> +    if (!rom_deployed++) {
> +        rom_add_vga(SGABIOS_FILENAME);
> +    }
> +}

Is rom_deployed still needed with isa_sga_init() gone?

> +
> +static int isa_cirrus_vga_initfn(ISADevice *dev)
> +{
> +    deploy_rom();
> +
> +    return 0;
> +}
> +
> +void isa_sga_init(void)
> +{
> +    if (display_type == DT_NOGRAPHIC) {
> +        deploy_rom();
> +    }
> +}
> +
> +static ISADeviceInfo sga_info = {
> +    .qdev.name    = "sga",
> +    .qdev.desc    = "Serial Graphics Adapter",
> +    .qdev.size    = sizeof(ISASGAState),
> +    .init         = isa_cirrus_vga_initfn,
> +};
> +
> +static void sga_register(void)
> +{
> +      isa_qdev_register(&sga_info);
> +}
> +
> +device_init(sga_register);

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] Add an isa device for SGA
  2011-05-11 17:11 [Qemu-devel] [PATCH] Add an isa device for SGA Glauber Costa
  2011-05-11 20:00 ` Jan Kiszka
  2011-05-12  9:07 ` Markus Armbruster
@ 2011-05-12 14:46 ` Gerd Hoffmann
  2 siblings, 0 replies; 5+ messages in thread
From: Gerd Hoffmann @ 2011-05-12 14:46 UTC (permalink / raw)
  To: Glauber Costa; +Cc: aliguori, mtosatti, qemu-devel, kvm, avi

On 05/11/11 19:11, Glauber Costa wrote:
> This patch adds a dummy legacy ISA device whose responsibility is to
> deploy sgabios, an option rom for a serial graphics adapter.
> The proposal is that this device is always-on when -nographics,
> but can otherwise be enable in any setup when -device sga is used.

How about adding a qdev property to isa-serial instead?

cheers,
   Gerd

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-05-12 14:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-11 17:11 [Qemu-devel] [PATCH] Add an isa device for SGA Glauber Costa
2011-05-11 20:00 ` Jan Kiszka
2011-05-11 20:57   ` Glauber de Oliveira Costa
2011-05-12  9:07 ` Markus Armbruster
2011-05-12 14:46 ` Gerd Hoffmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).