WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] This patch remove the obsolete ioapic code on qemu devic

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] This patch remove the obsolete ioapic code on qemu device model side.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 07 Nov 2005 19:54:07 +0000
Delivery-date: Mon, 07 Nov 2005 19:54:55 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 63aeaa2152d81f47fb76e1fd73359e52e89da331
# Parent  9bb7a75f120fcd7db6b9e9dd1bc3700701168ada
This patch remove the obsolete ioapic code on qemu device model side.

Signed-off-by: Yunhong Jiang <yunhong.jiang@xxxxxxxxx>

diff -r 9bb7a75f120f -r 63aeaa2152d8 tools/ioemu/hw/ioapic.c
--- a/tools/ioemu/hw/ioapic.c   Mon Nov  7 15:36:27 2005
+++ /dev/null   Mon Nov  7 15:37:58 2005
@@ -1,704 +0,0 @@
-/////////////////////////////////////////////////////////////////////////
-//
-//  Copyright (C) 2001  MandrakeSoft S.A.
-//
-//    MandrakeSoft S.A.
-//    43, rue d'Aboukir
-//    75002 Paris - France
-//    http://www.linux-mandrake.com/
-//    http://www.mandrakesoft.com/
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2 of the License, or (at your option) any later version.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-
-#include "vl.h"
-#include "ioapic.h"
-
-#ifdef __OS
-#undef __OS
-#endif
-#ifdef __i386__
-#define __OS   "l"
-#else
-#define __OS "q"
-#endif
-#define ADDR (*(volatile long *) addr)
-
-#ifdef IOAPIC_DEBUG
-#define IOAPIC_LOG(a...) fprintf(logfile, ##a)
-#else
-#define IOAPIC_LOG(a...)
-#endif
-
-static IOAPICState *ioapic;
-
-#define IOAPIC_ERR(a...) fprintf(logfile, ##a)
-static __inline__ int test_and_set_bit(long nr, volatile void * addr)
-{
-       long oldbit;
-
-       __asm__ __volatile__( 
-               "bts"__OS" %2,%1\n\tsbb"__OS" %0,%0"
-               :"=r" (oldbit),"=m" (ADDR)
-               :"Ir" (nr) : "memory");
-       return oldbit;
-}
-
-static __inline__ int test_and_clear_bit(long nr, volatile void * addr)
-{
-       long oldbit;
-
-       __asm__ __volatile__( LOCK_PREFIX
-               "btr"__OS" %2,%1\n\tsbb"__OS" %0,%0"
-               :"=r" (oldbit),"=m" (ADDR)
-               :"dIr" (nr) : "memory");
-       return oldbit;
-}
-
-static __inline__ void clear_bit(long nr, volatile void * addr)
-{
-       __asm__ __volatile__( 
-               "btr"__OS" %1,%0"
-               :"=m" (ADDR)
-               :"Ir" (nr));
-}
-
-static inline
-void get_shareinfo_apic_msg(vlapic_info *share_info){
-    while(test_and_set_bit(VL_STATE_MSG_LOCK, &share_info->vl_state)){};
-}
-
-static inline
-void put_shareinfo_apic_msg(vlapic_info *share_info){
-    clear_bit(VL_STATE_MSG_LOCK, &share_info->vl_state);
-}
-static inline
-void get_shareinfo_eoi(vlapic_info *share_info){
-    while(test_and_set_bit(VL_STATE_EOI_LOCK, &share_info->vl_state)){};
-}
-
-static inline
-void put_shareinfo_eoi(vlapic_info *share_info){
-    clear_bit(VL_STATE_EOI_LOCK, &share_info->vl_state);
-}
-
-
-static inline
-void get_shareinfo_ext(vlapic_info *share_info){
-    while(test_and_set_bit(VL_STATE_EXT_LOCK, &share_info->vl_state));
-}
-
-static inline
-void put_shareinfo_ext(vlapic_info *share_info){
-    clear_bit(VL_STATE_EXT_LOCK, &share_info->vl_state);
-}
-
-
-static __inline__ int test_bit(int nr, uint32_t value){
-    return value & (1 << nr);
-}
-
-static void ioapic_enable(IOAPICState *s, uint8_t enable)
-{
-    if (!enable ^ IOAPICEnabled(s)) return;
-    if(enable)
-        s->flags |= IOAPIC_ENABLE_FLAG;
-    else
-        s->flags &= ~IOAPIC_ENABLE_FLAG;
-}
-
-#ifdef IOAPIC_DEBUG
-static void
-ioapic_dump_redir(IOAPICState *s, uint8_t entry)
-{
-    if (!s)
-        return;
-
-    RedirStatus redir = s->redirtbl[entry];
-
-    fprintf(logfile, "entry %x: "
-      "vector %x deliver_mod %x destmode %x delivestatus %x "
-      "polarity %x remote_irr %x trigmod %x mask %x dest_id %x\n",
-      entry,
-      redir.RedirForm.vector, redir.RedirForm.deliver_mode,
-      redir.RedirForm.destmode, redir.RedirForm.delivestatus,
-      redir.RedirForm.polarity, redir.RedirForm.remoteirr,
-      redir.RedirForm.trigmod, redir.RedirForm.mask,
-      redir.RedirForm.dest_id);
-}
-
-static void
-ioapic_dump_shareinfo(IOAPICState *s , int number)
-{
-    if (!s || !s->lapic_info[number])
-        return;
-    vlapic_info *m = s->lapic_info[number];
-    IOAPIC_LOG("lapic_info %x : "
-      "vl_lapic_id %x vl_logical_dest %x vl_dest_format %x vl_arb_id %x\n",
-      number, m->vl_lapic_id, m->vl_logical_dest, m->vl_dest_format, 
m->vl_arb_id );
-}
-#endif
-
-static void
-ioapic_save(QEMUFile* f,void* opaque)
-{
-    IOAPIC_ERR("no implementation for ioapic_save\n");
-}
-
-static
-int ioapic_load(QEMUFile* f,void* opaque,int version_id)
-{
-    IOAPIC_ERR("no implementation for ioapic_load\n");
-    return 0;
-}
-
-uint32_t
-ioapic_mem_readb(void *opaque, target_phys_addr_t addr)
-{
-    IOAPIC_ERR("ioapic_mem_readb\n");
-    return 0;
-}
-
-uint32_t
-ioapic_mem_readw(void *opaque, target_phys_addr_t addr)
-{
-    IOAPIC_ERR("ioapic_mem_readw\n");
-    return 0;
-}
-
-static
-void ioapic_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
-{
-    IOAPIC_ERR("ioapic_mem_writeb\n");
-}
-
-static
-void ioapic_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val)
-{
-    IOAPIC_ERR("ioapic_mem_writew\n");
-}
-
-static
-uint32_t ioapic_mem_readl(void *opaque, target_phys_addr_t addr)
-{
-    unsigned short ioregsel;
-    IOAPICState *s = opaque;
-    uint32_t    result = 0;
-    uint32_t    redir_index = 0;
-    uint64_t    redir_content = 0;
-
-    IOAPIC_LOG("apic_mem_readl addr %x\n", addr);
-    if (!s){
-        IOAPIC_ERR("null pointer for apic_mem_readl\n");
-        return result;
-    }
-
-    addr &= 0xff;
-    if(addr == 0x00){
-        result = s->ioregsel;
-        return result;
-    }else if (addr != 0x10){
-        IOAPIC_ERR("apic_mem_readl address error\n");
-        return result;
-    }
-
-    ioregsel = s->ioregsel;
-
-    switch (ioregsel){
-        case IOAPIC_REG_APIC_ID:
-            result = ((s->id & 0xf) << 24);
-            break;
-        case IOAPIC_REG_VERSION:
-            result = ((((IOAPIC_NUM_PINS-1) & 0xff) << 16)  
-                     | (IOAPIC_VERSION_ID & 0x0f));
-            break;
-        case IOAPIC_REG_ARB_ID:
-            //FIXME
-            result = ((s->id & 0xf) << 24);
-            break;
-        default:
-            redir_index = (ioregsel - 0x10) >> 1;
-            if (redir_index >= 0 && redir_index < IOAPIC_NUM_PINS){
-               redir_content = s->redirtbl[redir_index].value;
-               result = (ioregsel & 0x1)?
-                        (redir_content >> 32) & 0xffffffff :
-                        redir_content & 0xffffffff;
-            }else{
-                IOAPIC_ERR(
-                  "upic_mem_readl:undefined ioregsel %x\n",
-                  ioregsel);
-            }
-    }
-    return result;
-}
-
-static
-void ioapic_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
-{
-    IOAPICState *s = opaque;
-    uint32_t redir_index = 0;
-    uint64_t redir_content;
-
-    IOAPIC_LOG("apic_mem_writel addr %x val %x\n", addr, val);
-
-    if (!s){
-        IOAPIC_ERR("apic_mem_writel: null opaque\n");
-        return;
-    }
-
-    addr &= 0xff;
-    if (addr == 0x00){
-        s->ioregsel = val;
-        return;
-    }else if (addr != 0x10){
-        IOAPIC_ERR("apic_mem_writel: unsupported address\n");
-    }
-
-    switch (s->ioregsel){
-        case IOAPIC_REG_APIC_ID:
-            s->id = (val >> 24) & 0xf;
-            break;
-        case IOAPIC_REG_VERSION:
-            IOAPIC_ERR("apic_mem_writel: version register read only\n");
-            break;
-        case IOAPIC_REG_ARB_ID:
-            s->arb_id = val;
-            break;
-        default:
-            redir_index = (s->ioregsel - 0x10) >> 1;
-//            IOAPIC_LOG("apic_mem_write: change redir :index %x before %lx, 
val %x\n", redir_index, s->redirtbl[redir_index].value, val);
-            if (redir_index >= 0 && redir_index < IOAPIC_NUM_PINS){
-                redir_content = s->redirtbl[redir_index].value;
-                if (s->ioregsel & 0x1)
-                   redir_content = (((uint64_t)val & 0xffffffff) << 32) | 
(redir_content & 0xffffffff);
-                else
-                    redir_content = ((redir_content >> 32) << 32) | (val & 
0xffffffff);
-                s->redirtbl[redir_index].value = redir_content;
-            }else {
-                IOAPIC_ERR("apic_mem_writel: error register\n");
-            }
-            //IOAPIC_LOG("after value is %lx\n",  
s->redirtbl[redir_index].value);
-    }
-}
-
-static CPUReadMemoryFunc *ioapic_mem_read[3] = {
-    ioapic_mem_readb,
-    ioapic_mem_readw,
-    ioapic_mem_readl,
-};
-
-static CPUWriteMemoryFunc *ioapic_mem_write[3] = {
-    ioapic_mem_writeb,
-    ioapic_mem_writew,
-    ioapic_mem_writel,
-};
-
-void
-IOAPICReset(IOAPICState *s)
-{
-    int i;
-    if (!s)
-        return ;
-
-    memset(s, 0, sizeof(IOAPICState));
-
-    for (i = 0; i < IOAPIC_NUM_PINS; i++)
-        s->redirtbl[i].RedirForm.mask = 0x1;
-//    IOAPIC_LOG("after Reset %lx\n",  s->redirtbl[0].value);
-}
-
-void
-ioapic_update_config(IOAPICState *s, unsigned long address, uint8_t enable)
-{
-    int ioapic_mem;
-    if (!s)
-       return;
-
-    ioapic_enable(s, enable);
-
-    if (address != s->base_address){
-        ioapic_mem = cpu_register_io_memory(0, ioapic_mem_read, 
ioapic_mem_write, s);
-        cpu_register_physical_memory(address, IOAPIC_MEM_LENGTH, ioapic_mem);
-        s->base_address = ioapic_mem;
-    }
-}
-
-#define direct_intr(mode)   \
-  (mode == VLAPIC_DELIV_MODE_SMI || \
-   mode == VLAPIC_DELIV_MODE_NMI || \
-   mode == VLAPIC_DELIV_MODE_INIT ||\
-   mode == VLAPIC_DELIV_MODE_STARTUP)
-
-int
-ioapic_inj_irq(IOAPICState *s, uint8_t dest, uint8_t vector, uint8_t 
trig_mode, uint8_t delivery_mode)
-{
-    int msg_count;
-    if (!s || !s->lapic_info[dest]){
-        IOAPIC_ERR("ioapic_inj_irq NULL parameter\n");
-        return 0;
-    }
-    IOAPIC_LOG("ioapic_inj_irq %d , trig %d delive mode %d\n",
-      vector, trig_mode, delivery_mode);
-    switch(delivery_mode){
-        case VLAPIC_DELIV_MODE_FIXED:
-        case VLAPIC_DELIV_MODE_LPRI:
-            get_shareinfo_apic_msg(s->lapic_info[dest]);
-            msg_count = s->lapic_info[dest]->apic_msg_count;
-            s->lapic_info[dest]->vl_apic_msg[msg_count].deliv_mode = 
delivery_mode;
-            s->lapic_info[dest]->vl_apic_msg[msg_count].level = trig_mode;
-            s->lapic_info[dest]->vl_apic_msg[msg_count].vector = vector;
-            s->lapic_info[dest]->vl_apic_msg[msg_count].vector = vector;
-            s->lapic_info[dest]->apic_msg_count ++;
-            put_shareinfo_apic_msg(s->lapic_info[dest]);
-            break;
-        case VLAPIC_DELIV_MODE_EXT:
-/*            get_shareinfo_ext(s->lapic_info[dest]);
-            test_and_set_bit(vector, &s->lapic_info[dest]->vl_ext_intr[0]);
-            put_shareinfo_ext(s->lapic_info[dest]);*/
-            IOAPIC_ERR("<ioapic_inj_irq> Ext interrupt\n");
-            return 0;
-        default:
-            IOAPIC_ERR("<ioapic_inj_irq> error delivery mode\n");
-            break;
-    }
-    return 1;
-}
-
-int
-ioapic_match_logical_addr(IOAPICState *s, int number, uint8_t address)
-{
-    if(!s || !s->lapic_info[number]){
-        IOAPIC_ERR("ioapic_match_logical_addr NULL parameter: "
-          "number: %i s %p address %x\n",
-          number, s, address);
-        return 0;
-    }
-    IOAPIC_LOG("ioapic_match_logical_addr number %i address %x\n",
-      number, address);
-
-    if (((s->lapic_info[number]->vl_dest_format >> 28 ) & 0xf) != 0xf) {
-        IOAPIC_ERR("ioapic_match_logical_addr: cluster model not implemented 
still%x"
-          ,s->lapic_info[number]->vl_dest_format);
-#ifdef IOAPIC_DEBUG
-        ioapic_dump_shareinfo(s, number);
-#endif
-        return 0;
-    }
-    return ((address & ((s->lapic_info[number]->vl_logical_dest >> 24) & 
0xff)) != 0);
-}
-
-int
-ioapic_get_apr_lowpri(IOAPICState *s, int number)
-{
-    if(!s || !s->lapic_info[number]){
-        IOAPIC_ERR("ioapic_get_apr_lowpri NULL parameter\n");
-        return 0;
-    }
-    return s->lapic_info[number]->vl_arb_id;
-}
-
-uint32_t
-ioapic_get_delivery_bitmask(IOAPICState *s,
-uint8_t dest, uint8_t dest_mode, uint8_t vector, uint8_t delivery_mode)
-{
-    uint32_t mask = 0;
-    int low_priority = 256, selected = -1, i;
-    fprintf(logfile, "<ioapic_get_delivery_bitmask>: dest %d dest_mode %d"
-      "vector %d del_mode %d, lapic_count %d\n",
-      dest, dest_mode, vector, delivery_mode, s->lapic_count);
-    if (!s) return mask;
-    if (dest_mode == 0) { //Physical mode
-        if ((dest < s->lapic_count) && s->lapic_info[dest])
-            mask = 1 << dest;
-    }
-    else {
-        /* logical destination. call match_logical_addr for each APIC. */
-        if (dest == 0) return 0;
-        for (i=0; i< s->lapic_count; i++) {
-            //FIXME focus one, since no such issue on IPF, shoudl we add it?
-            if ( s->lapic_info[i] && ioapic_match_logical_addr(s, i, dest)){
-                if (delivery_mode != APIC_DM_LOWPRI)
-                    mask |= (1<<i);
-                else {
-                    if (low_priority > ioapic_get_apr_lowpri(s, i)){
-                        low_priority = ioapic_get_apr_lowpri(s, i);
-                        selected = i;
-                    }
-                    fprintf(logfile, "%d low_priority %d apr %d select %d\n",
-                      i, low_priority, ioapic_get_apr_lowpri(s, i), selected);
-                }
-            }
-        }
-        if (delivery_mode == APIC_DM_LOWPRI && (selected != -1)) 
-            mask |= (1<< selected);
-    }
-  return mask;
-}
-
-void
-ioapic_deliver(IOAPICState *s, int irqno){
-    uint8_t dest = s->redirtbl[irqno].RedirForm.dest_id;
-    uint8_t dest_mode = s->redirtbl[irqno].RedirForm.destmode;
-    uint8_t delivery_mode = s->redirtbl[irqno].RedirForm.deliver_mode;
-    uint8_t vector = s->redirtbl[irqno].RedirForm.vector;
-    uint8_t trig_mode = s->redirtbl[irqno].RedirForm.trigmod;
-    uint8_t bit;
-    uint32_t deliver_bitmask; 
-
-    IOAPIC_LOG("IOAPIC deliver: "
-      "dest %x dest_mode %x delivery_mode %x vector %x trig_mode %x\n",
-      dest, dest_mode, delivery_mode, vector, trig_mode);
-
-    deliver_bitmask =
-      ioapic_get_delivery_bitmask(s, dest, dest_mode, vector, delivery_mode);
-
-      IOAPIC_LOG("ioapic_get_delivery_bitmask return %x\n", deliver_bitmask);
-    if (!deliver_bitmask){
-        IOAPIC_ERR("Ioapic deliver, no target on destination\n");
-        return ;
-    }
-
-    switch (delivery_mode){
-        case VLAPIC_DELIV_MODE_FIXED:
-        case VLAPIC_DELIV_MODE_LPRI:
-        case VLAPIC_DELIV_MODE_EXT:
-            break;
-        case VLAPIC_DELIV_MODE_SMI:
-        case VLAPIC_DELIV_MODE_NMI:
-        case VLAPIC_DELIV_MODE_INIT:
-        case VLAPIC_DELIV_MODE_STARTUP:
-        default:
-            IOAPIC_ERR("Not support delivey mode %d\n", delivery_mode);
-            return ;
-    }
-
-    for (bit = 0; bit < s->lapic_count; bit++){
-        if (deliver_bitmask & (1 << bit)){
-            if (s->lapic_info[bit]){
-                ioapic_inj_irq(s, bit, vector, trig_mode, delivery_mode);
-            }
-        }
-    }
-}
-
-static inline int __fls(uint32_t word)
-{
-    int bit;
-    __asm__("bsrl %1,%0"
-      :"=r" (bit)
-      :"rm" (word));
-    return word ? bit : -1;
-}
-
-#if 0
-static __inline__ int find_highest_bit(unsigned long *data, int length){
-    while(length && !data[--length]);
-    return __fls(data[length]) +  32 * length;
-}
-#endif
-int
-ioapic_get_highest_irq(IOAPICState *s){
-    uint32_t irqs;
-    if (!s)
-        return -1;
-    irqs = s->irr & ~s->isr;
-    return __fls(irqs);
-}
-
-
-void
-service_ioapic(IOAPICState *s){
-    int irqno;
-
-    while((irqno = ioapic_get_highest_irq(s)) != -1){
-        IOAPIC_LOG("service_ioapic: highest irqno %x\n", irqno);
-
-        if (!s->redirtbl[irqno].RedirForm.mask)
-            ioapic_deliver(s, irqno);
-
-        if (s->redirtbl[irqno].RedirForm.trigmod == IOAPIC_LEVEL_TRIGGER){
-            s->isr |= (1 << irqno);
-        }
- //       clear_bit(irqno, &s->irr);
-        s->irr &= ~(1 << irqno);
-    }
-}
-
-void
-ioapic_update_irq(IOAPICState *s)
-{
-    s->INTR = 1;
-}
-
-void
-ioapic_set_irq(IOAPICState *s, int irq, int level)
-{
-    IOAPIC_LOG("ioapic_set_irq %x %x\n", irq, level);
-
-    /* Timer interrupt implemented on HV side */
-    if(irq == 0x0) return;
-    if (!s){
-        fprintf(logfile, "ioapic_set_irq null parameter\n");
-        return;
-    }
-    if (!IOAPICEnabled(s) || s->redirtbl[irq].RedirForm.mask)
-        return;
-#ifdef IOAPIC_DEBUG
-    ioapic_dump_redir(s, irq);
-#endif
-    if (irq >= 0 && irq < IOAPIC_NUM_PINS){
-        uint32_t bit = 1 << irq;
-        if (s->redirtbl[irq].RedirForm.trigmod == IOAPIC_LEVEL_TRIGGER){
-            if(level)
-                s->irr |= bit;
-            else
-                s->irr &= ~bit;
-        }else{
-            if(level)
-                /* XXX No irr clear for edge interrupt */
-                s->irr |= bit;
-        }
-    }
-
-    ioapic_update_irq(s);
-}
-
-void
-ioapic_legacy_irq(int irq, int level)
-{
-    ioapic_set_irq(ioapic, irq, level);
-}
-
-static inline int find_highest_bit(uint32_t *data, int length){
-        while(length && !data[--length]);
-            return __fls(data[length]) +  32 * length;
-}
-
-int
-get_redir_num(IOAPICState *s, int vector){
-    int i = 0;
-    if(!s){
-        IOAPIC_ERR("Null parameter for get_redir_num\n");
-        return -1;
-    }
-    for(; i < IOAPIC_NUM_PINS-1; i++){
-        if (s->redirtbl[i].RedirForm.vector == vector)
-            return i;
-    }
-    return -1;
-}
-
-void
-ioapic_update_EOI()
-{
-    int i = 0;
-    uint32_t isr_info ;
-    uint32_t vector;
-    IOAPICState *s = ioapic;
-
-    isr_info = s->isr;
-
-    for (i = 0; i < s->lapic_count; i++){
-        if (!s->lapic_info[i] ||
-          !test_bit(VL_STATE_EOI, s->lapic_info[i]->vl_state))
-            continue;
-        get_shareinfo_eoi(s->lapic_info[i]);
-        while((vector = find_highest_bit((unsigned int 
*)&s->lapic_info[i]->vl_eoi[0],VLAPIC_INT_COUNT_32)) != -1){
-            int redir_num;
-            if ((redir_num = get_redir_num(s, vector)) == -1){
-                IOAPIC_ERR("Can't find redir item for %d EOI \n", vector);
-                continue;
-            }
-            if (!test_and_clear_bit(redir_num, &s->isr)){
-                IOAPIC_ERR("redir %d not set for %d  EOI\n", redir_num, 
vector);
-                continue;
-            }
-            clear_bit(vector, &s->lapic_info[i]->vl_eoi[0]); 
-        }
-        clear_bit(VL_STATE_EOI, &s->lapic_info[i]->vl_state);
-        put_shareinfo_eoi(s->lapic_info[i]);
-    }
-}
-
-
-void
-ioapic_init_apic_info(IOAPICState *s)
-{
-#ifdef IOAPIC_DEBUG
-    fprintf(logfile, "ioapic_init_apic_info\n");
-    if (!s)
-        return;
-#endif
-
-#if 0
-    if (!vio || !(vio->vl_number)){
-        fprintf(logfile, "null vio or o vl number\n");
-        return;
-    }
-
-    for (i = 0; i < MAX_LAPIC_NUM; i++) s->lapic_info[i] = NULL;
-
-    s->lapic_count = vio->vl_number;
-    for (i = 0; i < vio->vl_number; i++)
-        s->lapic_info[i] = vio->vl_info + i;
-#endif
-
-}
-
-void
-ioapic_intack(IOAPICState *s)
-{
-#ifdef IOAPIC_DEBUG
-    if (!s){
-        fprintf(logfile, "ioapic_intack null parameter\n");
-        return;
-    }
-#endif
-    if (!s) s->INTR = 0;
-}
-
-int
-ioapic_has_intr()
-{
-    return ioapic->INTR;
-}
-
-void
-do_ioapic()
-{
-    service_ioapic(ioapic);
-    ioapic_intack(ioapic);
-}
-
-IOAPICState *
-IOAPICInit( )
-{
-    IOAPICState *s;
-
-    s = qemu_mallocz(sizeof(IOAPICState));
-    if (!s){
-        fprintf(logfile, "IOAPICInit: malloc failed\n");
-        return NULL;
-    }
-
-    IOAPICReset(s);
-    ioapic_init_apic_info(s);
-    register_savevm("ioapic", 0, 1, ioapic_save, ioapic_load, s);
-    /* Remove after GFW ready */
-    ioapic_update_config(s, 0xfec00000, 1);
-
-    ioapic = s;
-    return s;
-}
diff -r 9bb7a75f120f -r 63aeaa2152d8 tools/ioemu/hw/ioapic.h
--- a/tools/ioemu/hw/ioapic.h   Mon Nov  7 15:36:27 2005
+++ /dev/null   Mon Nov  7 15:37:58 2005
@@ -1,128 +0,0 @@
-/////////////////////////////////////////////////////////////////////////
-//
-//  Copyright (C) 2001  MandrakeSoft S.A.
-//
-//    MandrakeSoft S.A.
-//    43, rue d'Aboukir
-//    75002 Paris - France
-//    http://www.linux-mandrake.com/
-//    http://www.mandrakesoft.com/
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2 of the License, or (at your option) any later version.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-
-#ifndef __IOAPIC_H
-#define __IOAPIC_H
-
-#include <xenctrl.h>
-#include <xen/io/ioreq.h>
-#include <xen/io/vmx_vlapic.h>
-
-#define IOAPIC_NUM_PINS 24
-#define IOAPIC_VERSION_ID 0x11
-#define IOAPIC_LEVEL_TRIGGER 1
-#define APIC_DM_FIXED  0
-#define APIC_DM_LOWPRI 1
-
-
-
-#ifdef CONFIG_SMP
-#define LOCK_PREFIX "lock ; "
-#else
-#define LOCK_PREFIX ""
-#endif
-
-#ifdef __I386__
-#define __OS "q" 
-#define __OP "r" 
-#else
-#define __OS "l"  /* Operation Suffix */
-#define __OP "e"  /* Operand Prefix */
-#endif
-
-#define ADDR (*(volatile long *) addr)
-#if 0
-#endif
-extern void *shared_page;
-extern FILE *logfile;
-#ifdef __BIGENDIAN__
-typedef union RedirStatus
-{
-    uint64_t value;
-    struct {
-        uint8_t dest_id;
-        uint8_t reserved[4];
-        uint8_t reserve:7;
-        uint8_t mask:1;         /* interrupt mask*/
-        uint8_t trigmod:1;
-        uint8_t remoteirr:1;
-        uint8_t polarity:1;
-        uint8_t delivestatus:1;
-        uint8_t destmode:1;
-        uint8_t deliver_mode:3;
-        uint8_t vector;
-    }RedirForm;
-}RedirStatus;
-#else
-typedef union RedirStatus
-{
-    uint64_t value;
-    struct {
-        uint8_t vector;
-        uint8_t deliver_mode:3;
-        uint8_t destmode:1;
-        uint8_t delivestatus:1;
-        uint8_t polarity:1;
-        uint8_t remoteirr:1;
-        uint8_t trigmod:1;
-        uint8_t mask:1;         /* interrupt mask*/
-        uint8_t reserve:7;
-        uint8_t reserved[4];
-        uint8_t dest_id;
-    }RedirForm;
-}RedirStatus;
-#endif
-/*
- * IOAPICState stands for a instance of a IOAPIC
- */
-
-/* FIXME tmp before working with Local APIC */
-#define IOAPIC_MEM_LENGTH 0x100
-#define IOAPIC_ENABLE_MASK 0x0
-#define IOAPIC_ENABLE_FLAG (1 << IOAPIC_ENABLE_MASK)
-#define MAX_LAPIC_NUM 32
-
-struct IOAPICState{
-    uint32_t INTR;
-    uint32_t id;
-    uint32_t arb_id;
-    uint32_t  flags;
-    unsigned long base_address;
-    uint32_t irr;
-    uint32_t isr;           /* This is used for level trigger */
-    uint8_t  vector_irr[256];
-    RedirStatus redirtbl[IOAPIC_NUM_PINS];
-    uint32_t ioregsel;
-    uint32_t lapic_count;
-    vlapic_info *lapic_info[MAX_LAPIC_NUM];
-};
-#define IOAPIC_REG_APIC_ID 0x0
-#define IOAPIC_REG_VERSION 0x1
-#define IOAPIC_REG_ARB_ID  0x2
-#define IOAPICEnabled(s) (s->flags & IOAPIC_ENABLE_FLAG)
-
-typedef struct IOAPICState IOAPICState;
-
-#endif

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] This patch remove the obsolete ioapic code on qemu device model side., Xen patchbot -unstable <=