Removes hypercall device, old balloon device, and vmchannel stuff from QEMU.  
The
stuff never was used publicly and is being/has been replaced by virtio.

Signed-off-by: Anthony Liguori <[EMAIL PROTECTED]>

diff --git a/qemu/Makefile.target b/qemu/Makefile.target
index 8ba8f9a..a7468c1 100644
--- a/qemu/Makefile.target
+++ b/qemu/Makefile.target
@@ -575,9 +575,6 @@ OBJS += pcnet.o
 OBJS += rtl8139.o
 OBJS += e1000.o
 
-# PCI Hypercall
-OBJS+= hypercall.o
-
 # virtio devices
 OBJS += virtio.o virtio-net.o virtio-blk.o
 
diff --git a/qemu/hw/hypercall.c b/qemu/hw/hypercall.c
deleted file mode 100644
index 73f6bb1..0000000
--- a/qemu/hw/hypercall.c
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- * QEMU-KVM Hypercall emulation
- * 
- * Copyright (c) 2003-2004 Fabrice Bellard
- * Copyright (c) 2006 Qumranet
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to 
deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-#include "hw/hw.h"
-#include "sysemu.h"
-#include "qemu-char.h"
-#include "hw/isa.h"
-#include "hw/irq.h"
-#include "hw/pci.h"
-#include "hypercall.h"
-#include <stddef.h>
-
-#define HYPERCALL_IOPORT_SIZE 0x100
-
-static int use_hypercall_dev = 0;
-
-typedef struct VmChannelCharDriverState {
-    CharDriverState *vmchannel_hd;
-    uint32_t deviceid;
-} VmChannelCharDriverState;
-
-static VmChannelCharDriverState vmchannel_hds[MAX_VMCHANNEL_DEVICES];
-
-typedef struct HypercallState {
-    uint32_t hcr;
-    uint32_t hsr;
-    uint32_t txsize;
-    uint32_t txbuff;
-    uint32_t rxsize;
-    uint8_t  RxBuff[HP_MEM_SIZE];
-    uint8_t  txbufferaccu[HP_MEM_SIZE];
-    int      txbufferaccu_offset;
-    int      irq;
-    PCIDevice *pci_dev;
-    uint32_t index;
-} HypercallState;
-
-static HypercallState *pHypercallStates[MAX_VMCHANNEL_DEVICES] = {NULL};
-
-//#define HYPERCALL_DEBUG 1
-
-static void hp_reset(HypercallState *s)
-{
-    s->hcr = HCR_DI;
-    s->hsr = 0;
-    s->txsize = 0;
-    s->txbuff = 0;
-    s->rxsize= 0;
-    s->txbufferaccu_offset = 0;
-}
-
-static void hypercall_update_irq(HypercallState *s);
-
-
-static void hp_ioport_write(void *opaque, uint32_t addr, uint32_t val)
-{
-    HypercallState *s = opaque;
-
-#ifdef HYPERCALL_DEBUG
-    printf("%s: addr=0x%x, val=0x%x\n", __FUNCTION__, addr, val);
-#endif
-    addr &= 0xff;
-
-    switch(addr)
-    {
-        case HCR_REGISTER:
-        {
-            s->hcr = val;
-           if (s->hcr & HCR_DI)
-                hypercall_update_irq(s);
-            if (val & HCR_GRS){
-                hp_reset(s);
-            }
-            break;
-        }
-
-        case HP_TXSIZE:
-        {
-            // handle the case when the we are being called when txsize is not 0
-            if (s->txsize != 0) {
-                printf("txsize is being set, but txsize is not 0!!!\n");
-            }
-            if (val > HP_MEM_SIZE) {
-                printf("txsize is larger than allowed by hw!!!\n");
-            }
-            s->txsize = val;
-            s->txbufferaccu_offset = 0;
-            break;
-        }
-
-        case HP_TXBUFF:
-        {
-            if (s->txsize == 0) {
-                printf("error with txbuff!!!\n");
-                break;
-            }
-
-            s->txbufferaccu[s->txbufferaccu_offset] = val;
-            s->txbufferaccu_offset++;
-            if (s->txbufferaccu_offset >= s->txsize) {
-                qemu_chr_write(vmchannel_hds[s->index].vmchannel_hd, 
s->txbufferaccu, s->txsize);
-                s->txbufferaccu_offset = 0;
-                s->txsize = 0;
-            }
-            break;
-        }
-        default:
-        {
-            printf("hp_ioport_write to unhandled address!!!\n");
-        }
-    }
-}
-
-static uint32_t hp_ioport_read(void *opaque, uint32_t addr)
-{
-    HypercallState *s = opaque;
-    int ret;
-
-    addr &= 0xff;
-#ifdef HYPERCALL_DEBUG
-    // Since HSR_REGISTER is being repeatedly read in the guest ISR we don't 
print it
-    if (addr != HSR_REGISTER)
-        printf("%s: addr=0x%x", __FUNCTION__, addr);
-#endif
-
-    if (addr >= offsetof(HypercallState, RxBuff) )
-    {
-        int RxBuffOffset = addr - (offsetof(HypercallState, RxBuff));
-        ret = s->RxBuff[RxBuffOffset];
-#ifdef HYPERCALL_DEBUG
-    printf(" val=%x\n", ret);
-#endif
-        return ret;
-    }
-
-    switch (addr)
-    {
-    case HSR_REGISTER:
-        ret = s->hsr;
-        if (ret & HSR_VDR) {
-            s->hsr &= ~HSR_VDR;
-        }
-        break;
-    case HP_RXSIZE:
-        ret = s->rxsize;
-        break;
-
-    default:
-        ret = 0x00;
-        break;
-    }
-#ifdef HYPERCALL_DEBUG
-    printf(" val=%x\n", ret);
-#endif
-    return ret;
-}
-
-/***********************************************************/
-/* PCI Hypercall definitions */
-
-typedef struct PCIHypercallState {
-    PCIDevice dev;
-    HypercallState hp;
-} PCIHypercallState;
-
-static void hp_map(PCIDevice *pci_dev, int region_num, 
-                       uint32_t addr, uint32_t size, int type)
-{
-    PCIHypercallState *d = (PCIHypercallState *)pci_dev;
-    HypercallState *s = &d->hp;
-
-    register_ioport_write(addr, HYPERCALL_IOPORT_SIZE, 1, hp_ioport_write, s);
-    register_ioport_read(addr, HYPERCALL_IOPORT_SIZE, 1, hp_ioport_read, s);
-
-}
-
-
-static void hypercall_update_irq(HypercallState *s)
-{
-    /* PCI irq */
-    qemu_set_irq(s->pci_dev->irq[0], !(s->hcr & HCR_DI));
-}
-
-static void hc_save(QEMUFile* f,void* opaque)
-{
-    HypercallState* s=(HypercallState*)opaque;
-
-    pci_device_save(s->pci_dev, f);
-
-    qemu_put_be32s(f, &s->hcr);
-    qemu_put_be32s(f, &s->hsr);
-    qemu_put_be32s(f, &s->txsize);
-    qemu_put_be32s(f, &s->txbuff);
-    qemu_put_be32s(f, &s->rxsize);
-    qemu_put_buffer(f, s->RxBuff, HP_MEM_SIZE);
-    qemu_put_buffer(f, s->txbufferaccu, HP_MEM_SIZE);
-    qemu_put_be32s(f, &s->txbufferaccu_offset);
-    qemu_put_be32s(f, &s->irq);
-    qemu_put_be32s(f, &s->index);
-
-}
-
-static int hc_load(QEMUFile* f,void* opaque,int version_id)
-{
-    HypercallState* s=(HypercallState*)opaque;
-    int ret;
-
-    if (version_id != 1)
-        return -EINVAL;
-
-    ret = pci_device_load(s->pci_dev, f);
-    if (ret < 0)
-        return ret;
-
-    qemu_get_be32s(f, &s->hcr);
-    qemu_get_be32s(f, &s->hsr);
-    qemu_get_be32s(f, &s->txsize);
-    qemu_get_be32s(f, &s->txbuff);
-    qemu_get_be32s(f, &s->rxsize);
-    qemu_get_buffer(f, s->RxBuff, HP_MEM_SIZE);
-    qemu_get_buffer(f, s->txbufferaccu, HP_MEM_SIZE);
-    qemu_get_be32s(f, &s->txbufferaccu_offset);
-    qemu_get_be32s(f, &s->irq);
-    qemu_get_be32s(f, &s->index);
-
-    return 0;
-}
-
-static void pci_hypercall_single_init(PCIBus *bus, uint32_t deviceid, uint32_t 
index)
-{
-    PCIHypercallState *d;
-    HypercallState *s;
-    uint8_t *pci_conf;
-    char name[sizeof("HypercallX")];
-
-    sprintf(name, "Hypercall%d", index);
-
-#ifdef HYPERCALL_DEBUG
-    printf("%s, devicename:%s\n", __FUNCTION__, name);
-#endif
-
-    // If the vmchannel wasn't initialized, we don't want the Hypercall device 
in the guest
-    if (use_hypercall_dev == 0) {
-        return;
-    }
-
-    d = (PCIHypercallState *)pci_register_device(bus,
-                                                 name, 
sizeof(PCIHypercallState),
-                                                 -1,
-                                                 NULL, NULL);
-
-    pci_conf = d->dev.config;
-    pci_conf[0x00] = 0x02; // Qumranet vendor ID 0x5002
-    pci_conf[0x01] = 0x50;
-    pci_conf[0x02] = deviceid & 0x00ff;
-    pci_conf[0x03] = (deviceid & 0xff00) >> 8;
-
-    pci_conf[0x09] = 0x00; // ProgIf
-    pci_conf[0x0a] = 0x00; // SubClass
-    pci_conf[0x0b] = 0x05; // BaseClass
-
-    pci_conf[0x0e] = 0x00; // header_type
-    pci_conf[0x3d] = 1; // interrupt pin 0
-
-    pci_register_io_region(&d->dev, 0, HYPERCALL_IOPORT_SIZE,
-                           PCI_ADDRESS_SPACE_IO, hp_map);
-    s = &d->hp;
-    pHypercallStates[index] = s;
-    s->index = index;
-    s->irq = 16; /* PCI interrupt */
-    s->pci_dev = (PCIDevice *)d;
-
-    hp_reset(s);
-    register_savevm(name, index, 1, hc_save, hc_load, s);
-}
-
-void pci_hypercall_init(PCIBus *bus)
-{
-    int i;
-
-    // loop devices & call pci_hypercall_single_init with device id's
-    for(i = 0; i < MAX_VMCHANNEL_DEVICES; i++){
-        if (vmchannel_hds[i].vmchannel_hd) {
-            pci_hypercall_single_init(bus, vmchannel_hds[i].deviceid, i);
-        }
-    }
-}
-
-static int vmchannel_can_read(void *opaque)
-{
-    return 128;
-}
-
-static void vmchannel_event(void *opaque, int event)
-{
-
-#ifdef HYPERCALL_DEBUG
-    // if index is to be used outside the printf, take it out of the #ifdef 
block!
-    long index = (long)opaque;
-    printf("%s index:%ld, got event %i\n", __FUNCTION__, index, event);
-#endif
-    
-    return;
-}
-
-// input from vmchannel outside caller
-static void vmchannel_read(void *opaque, const uint8_t *buf, int size)
-{
-    int i;
-    long index = (long)opaque;
-
-#ifdef HYPERCALL_DEBUG    
-    printf("vmchannel_read buf size:%d\n", size);
-#endif
-
-    // if the hypercall device is in interrupts disabled state, don't accept 
the data
-    if (pHypercallStates[index]->hcr & HCR_DI) {
-        return;
-    }
-
-    for(i = 0; i < size; i++) {
-        pHypercallStates[index]->RxBuff[i] = buf[i];
-    }
-    pHypercallStates[index]->rxsize = size;
-    pHypercallStates[index]->hsr = HSR_VDR;
-    hypercall_update_irq(pHypercallStates[index]);
-}
-
-void vmchannel_init(CharDriverState *hd, uint32_t deviceid, uint32_t index)
-{
-#ifdef HYPERCALL_DEBUG
-    printf("vmchannel_init, index=%d, deviceid=0x%x\n", index, deviceid);
-#endif
-
-    vmchannel_hds[index].deviceid = deviceid;
-    vmchannel_hds[index].vmchannel_hd = hd;
-   
-    use_hypercall_dev = 1;
-    qemu_chr_add_handlers(vmchannel_hds[index].vmchannel_hd, 
vmchannel_can_read, vmchannel_read,
-                          vmchannel_event, (void *)(long)index);
-}
diff --git a/qemu/hw/hypercall.h b/qemu/hw/hypercall.h
deleted file mode 100644
index 97434a7..0000000
--- a/qemu/hw/hypercall.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * QEMU-KVM Hypercall emulation
- * 
- * Copyright (c) 2003-2004 Fabrice Bellard
- * Copyright (c) 2006 Qumranet
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to 
deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#define HCR_REGISTER    0x00  // Hypercall Command Register WR
-#define HSR_REGISTER    0x04  // Hypercall Status Register RD
-#define HP_TXSIZE       0x08
-#define HP_TXBUFF       0x0c
-#define HP_RXSIZE       0x10
-#define HP_RXBUFF       0x14
-
-// HCR_REGISTER commands
-#define HCR_DI         1 // disable interrupts
-#define HCR_EI         2 // enable interrupts
-#define HCR_GRS                4 // Global reset
-#define HCR_RESET      (HCR_GRS|HCR_DI)
-
-
-// Bits in HSR_REGISTER
-#define HSR_VDR                0x01  // vmchannel Data is ready to be read
-
-#define HP_MEM_SIZE    0xE0
-
-
diff --git a/qemu/hw/pc.c b/qemu/hw/pc.c
index d578e68..da60199 100644
--- a/qemu/hw/pc.c
+++ b/qemu/hw/pc.c
@@ -1055,10 +1055,6 @@ static void pc_init1(ram_addr_t ram_size, int 
vga_ram_size,
     }
 
     qemu_system_hot_add_init(cpu_model);
-#define USE_HYPERCALL
-#ifdef USE_HYPERCALL
-    pci_hypercall_init(pci_bus);
-#endif
 
     if (drive_get_max_bus(IF_IDE) >= MAX_IDE_BUS) {
         fprintf(stderr, "qemu: too many IDE bus\n");
diff --git a/qemu/sysemu.h b/qemu/sysemu.h
index 993d67b..f03b022 100644
--- a/qemu/sysemu.h
+++ b/qemu/sysemu.h
@@ -172,12 +172,6 @@ void drive_hot_add(int pcibus, const char *devfn_string, 
const char *opts);
 void device_hot_remove(int pcibus, int slot);
 void device_hot_remove_success(int pcibus, int slot);
 
-/* vmchannel devices */
-
-#define MAX_VMCHANNEL_DEVICES 4
-void pci_hypercall_init(PCIBus *bus);
-void vmchannel_init(CharDriverState *hd, uint32_t deviceid, uint32_t index);
-
 /* serial ports */
 
 #define MAX_SERIAL_PORTS 4
diff --git a/qemu/vl.c b/qemu/vl.c
index 7cc670b..e76396f 100644
--- a/qemu/vl.c
+++ b/qemu/vl.c
@@ -199,8 +199,6 @@ int graphic_depth = 15;
 int full_screen = 0;
 int no_frame = 0;
 int no_quit = 0;
-int balloon_used = 0;
-CharDriverState *vmchannel_hds[MAX_VMCHANNEL_DEVICES];
 CharDriverState *serial_hds[MAX_SERIAL_PORTS];
 CharDriverState *parallel_hds[MAX_PARALLEL_PORTS];
 #ifdef TARGET_I386
@@ -7944,8 +7942,6 @@ static void help(int exitcode)
            "\n"
            "Debug/Expert options:\n"
            "-monitor dev    redirect the monitor to char device 'dev'\n"
-           "-vmchannel di:DI,dev  redirect the hypercall device with device id 
DI, to char device 'dev'\n"
-           "-balloon dev    redirect the balloon hypercall device to char 
device 'dev'\n"
            "-serial dev     redirect the serial port to char device 'dev'\n"
            "-parallel dev   redirect the parallel port to char device 'dev'\n"
            "-pidfile file   Write PID to 'file'\n"
@@ -8069,8 +8065,6 @@ enum {
     QEMU_OPTION_std_vga,
     QEMU_OPTION_echr,
     QEMU_OPTION_monitor,
-    QEMU_OPTION_balloon,
-    QEMU_OPTION_vmchannel,
     QEMU_OPTION_serial,
     QEMU_OPTION_parallel,
     QEMU_OPTION_loadvm,
@@ -8187,8 +8181,6 @@ const QEMUOption qemu_options[] = {
     { "localtime", 0, QEMU_OPTION_localtime },
     { "std-vga", 0, QEMU_OPTION_std_vga },
     { "monitor", 1, QEMU_OPTION_monitor },
-    { "balloon", 1, QEMU_OPTION_balloon },
-    { "vmchannel", 1, QEMU_OPTION_vmchannel },
     { "echr", HAS_ARG, QEMU_OPTION_echr },
     { "monitor", HAS_ARG, QEMU_OPTION_monitor },
     { "serial", HAS_ARG, QEMU_OPTION_serial },
@@ -8542,8 +8534,6 @@ int main(int argc, char **argv)
     const char *monitor_device;
     const char *serial_devices[MAX_SERIAL_PORTS];
     int serial_device_index;
-    char vmchannel_devices[MAX_VMCHANNEL_DEVICES][128];
-    int vmchannel_device_index;
     const char *parallel_devices[MAX_PARALLEL_PORTS];
     int parallel_device_index;
     const char *loadvm = NULL;
@@ -8609,10 +8599,6 @@ int main(int argc, char **argv)
     translation = BIOS_ATA_TRANSLATION_AUTO;
     monitor_device = "vc";
 
-    for(i = 0; i < MAX_VMCHANNEL_DEVICES; i++)
-        vmchannel_devices[i][0] = '\0';
-    vmchannel_device_index = 0;
-
     serial_devices[0] = "vc:80Cx24C";
     for(i = 1; i < MAX_SERIAL_PORTS; i++)
         serial_devices[i] = NULL;
@@ -9004,28 +8990,6 @@ int main(int argc, char **argv)
             case QEMU_OPTION_monitor:
                 monitor_device = optarg;
                 break;
-            case QEMU_OPTION_balloon:
-                if (vmchannel_device_index >= MAX_VMCHANNEL_DEVICES) {
-                    fprintf(stderr, "qemu: too many balloon/vmchannel 
devices\n");
-                    exit(1);
-                }
-                if (balloon_used) {
-                    fprintf(stderr, "qemu: only one balloon device can be 
used\n");
-                    exit(1);
-                }
-                
sprintf(vmchannel_devices[vmchannel_device_index],"di:cdcd,%s", optarg);
-                vmchannel_device_index++;
-                balloon_used = 1;
-                break;
-            case QEMU_OPTION_vmchannel:
-                if (vmchannel_device_index >= MAX_VMCHANNEL_DEVICES) {
-                    fprintf(stderr, "qemu: too many balloon/vmchannel 
devices\n");
-                    exit(1);
-                }
-                pstrcpy(vmchannel_devices[vmchannel_device_index], 
-                        sizeof(vmchannel_devices[0]), optarg);
-                vmchannel_device_index++;
-                break;
             case QEMU_OPTION_serial:
                 if (serial_device_index >= MAX_SERIAL_PORTS) {
                     fprintf(stderr, "qemu: too many serial ports\n");
@@ -9535,31 +9499,6 @@ int main(int argc, char **argv)
         monitor_init(monitor_hd, !nographic);
     }
 
-    for(i = 0; i < MAX_VMCHANNEL_DEVICES; i++) {
-        const char *devname = vmchannel_devices[i];
-        if (devname[0] != '\0' && strcmp(devname, "none")) {
-            int devid;
-            char *termn;
-
-            if (strstart(devname, "di:", &devname)) {
-                devid = strtol(devname, &termn, 16);
-                devname = termn + 1;
-            }
-            else {
-                fprintf(stderr, "qemu: could not find vmchannel device id 
'%s'\n", 
-                        devname);
-                exit(1);
-            }
-            vmchannel_hds[i] = qemu_chr_open(devname);
-            if (!vmchannel_hds[i]) {
-                fprintf(stderr, "qemu: could not open vmchannel device 
'%s'\n", 
-                        devname);
-                exit(1);
-            }
-            vmchannel_init(vmchannel_hds[i], devid, i);
-        }
-    }
-
     for(i = 0; i < MAX_SERIAL_PORTS; i++) {
         const char *devname = serial_devices[i];
         if (devname && strcmp(devname, "none")) {
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to