[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH] spice: add qxl device
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] Re: [PATCH] spice: add qxl device |
Date: |
Tue, 16 Nov 2010 19:43:06 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Tue, Nov 02, 2010 at 02:34:58PM +0100, Gerd Hoffmann wrote:
> + if (ram_size < 32 * 1024 * 1024)
> + ram_size = 32 * 1024 * 1024;
> + vga_common_init(vga, ram_size);
> + vga_init(vga);
> + register_ioport_write(0x3c0, 16, 1, qxl_vga_ioport_write, vga);
> + register_ioport_write(0x3b4, 2, 1, qxl_vga_ioport_write, vga);
> + register_ioport_write(0x3d4, 2, 1, qxl_vga_ioport_write, vga);
> + register_ioport_write(0x3ba, 1, 1, qxl_vga_ioport_write, vga);
> + register_ioport_write(0x3da, 1, 1, qxl_vga_ioport_write, vga);
> +
> + vga->ds = graphic_console_init(qxl_hw_update, qxl_hw_invalidate,
> + qxl_hw_screen_dump,
> qxl_hw_text_update, qxl);
> + qxl->ssd.ds = vga->ds;
> + qxl->ssd.bufsize = (16 * 1024 * 1024);
> + qxl->ssd.buf = qemu_malloc(qxl->ssd.bufsize);
> +
> + qxl0 = qxl;
What happens when this device is then removed?
> + register_displaychangelistener(vga->ds, &display_listener);
> +
> + if (qxl->pci.romfile == NULL) {
> + if (pci_device_id == 0x01ff) {
> + qxl->pci.romfile = qemu_strdup("vgabios-qxldev.bin");
> + } else {
> + qxl->pci.romfile = qemu_strdup("vgabios-qxl.bin");
> + }
> + }
> + pci_config_set_class(config, PCI_CLASS_DISPLAY_VGA);
> + } else {
> + if (ram_size < 16 * 1024 * 1024)
> + ram_size = 16 * 1024 * 1024;
> + qxl->vga.vram_size = ram_size;
> + qxl->vga.vram_offset = qemu_ram_alloc(&qxl->pci.qdev, "qxl.vgavram",
> + qxl->vga.vram_size);
> + qxl->vga.vram_ptr = qemu_get_ram_ptr(qxl->vga.vram_offset);
> +
> + pci_config_set_class(config, PCI_CLASS_DISPLAY_OTHER);
So 1st device has device id different from the rest?
Why?
> + }
> +
> + pci_config_set_vendor_id(config, REDHAT_PCI_VENDOR_ID);
> + pci_config_set_device_id(config, pci_device_id);
> + pci_set_byte(&config[PCI_REVISION_ID], pci_device_rev);
> + pci_set_byte(&config[PCI_INTERRUPT_PIN], 1);
> +
> + qxl->rom_size = qxl_rom_size();
> + qxl->rom_offset = qemu_ram_alloc(&qxl->pci.qdev, "qxl.vrom",
> qxl->rom_size);
> + init_qxl_rom(qxl);
> + init_qxl_ram(qxl);
> +
> + if (qxl->vram_size < 16 * 1024 * 1024) {
> + qxl->vram_size = 16 * 1024 * 1024;
> + }
> + if (qxl->revision == 1) {
> + qxl->vram_size = 4096;
> + }
> + qxl->vram_size = msb_mask(qxl->vram_size * 2 - 1);
> + qxl->vram_offset = qemu_ram_alloc(&qxl->pci.qdev, "qxl.vram",
> qxl->vram_size);
> +
> + io_size = msb_mask(QXL_IO_RANGE_SIZE * 2 - 1);
> + if (qxl->revision == 1) {
> + io_size = 8;
> + }
> +
> + pci_register_bar(&qxl->pci, QXL_IO_RANGE_INDEX,
> + io_size, PCI_BASE_ADDRESS_SPACE_IO, qxl_map);
> +
> + pci_register_bar(&qxl->pci, QXL_ROM_RANGE_INDEX,
> + qxl->rom_size, PCI_BASE_ADDRESS_SPACE_MEMORY,
> + qxl_map);
> +
> + pci_register_bar(&qxl->pci, QXL_RAM_RANGE_INDEX,
> + qxl->vga.vram_size, PCI_BASE_ADDRESS_SPACE_MEMORY,
> + qxl_map);
> +
> + pci_register_bar(&qxl->pci, QXL_VRAM_RANGE_INDEX, qxl->vram_size,
> + PCI_BASE_ADDRESS_SPACE_MEMORY, qxl_map);
> +
> + qxl->ssd.qxl.base.sif = &qxl_interface.base;
> + qxl->ssd.qxl.id = qxl->id;
> + qemu_spice_add_interface(&qxl->ssd.qxl.base);
> + qemu_add_vm_change_state_handler(qxl_vm_change_state_handler, qxl);
> +
> + init_pipe_signaling(qxl);
> + qxl_reset_state(qxl);
> +
> + device_id++;
what happens when this wraps around?
Since it's an int probably undefined behaviour ...
- [Qemu-devel] [PATCH] spice: add qxl device, Gerd Hoffmann, 2010/11/02
- Re: [Qemu-devel] [PATCH] spice: add qxl device, Anthony Liguori, 2010/11/16
- [Qemu-devel] Re: [PATCH] spice: add qxl device,
Michael S. Tsirkin <=
- [Qemu-devel] Re: [PATCH] spice: add qxl device, Gerd Hoffmann, 2010/11/17
- [Qemu-devel] Re: [PATCH] spice: add qxl device, Michael S. Tsirkin, 2010/11/17
- [Qemu-devel] Re: [PATCH] spice: add qxl device, Gerd Hoffmann, 2010/11/17
- [Qemu-devel] Re: [PATCH] spice: add qxl device, Michael S. Tsirkin, 2010/11/17
- [Qemu-devel] Re: [PATCH] spice: add qxl device, Gerd Hoffmann, 2010/11/17
- [Qemu-devel] Re: [PATCH] spice: add qxl device, Michael S. Tsirkin, 2010/11/17
- Re: [Qemu-devel] Re: [PATCH] spice: add qxl device, Gleb Natapov, 2010/11/18
- Re: [Qemu-devel] Re: [PATCH] spice: add qxl device, Gerd Hoffmann, 2010/11/18
- Re: [Qemu-devel] Re: [PATCH] spice: add qxl device, Michael S. Tsirkin, 2010/11/18
- Re: [Qemu-devel] Re: [PATCH] spice: add qxl device, Gerd Hoffmann, 2010/11/18