hmp: Remove "info pcmcia"
This command lists PCMCIA sockets and cards. Only a few ARM boards have sockets (akita, borzoi, connex, mainstone, spitz, terrier, tosa, verdex, z2), the only card is the DSCM-1xxxx Hitachi Microdrive (qdev "microdrive"), and it is only inserted during machine init, if ever. So this command doesn't really tell anybody anything new so far. Moreover, pcmcia_socket_unregister() has a use-after-free bug, flagged by Coverity. Has never been used, because there has never been code to eject a PCMCIA card. Not worth fixing & converting to QMP. Remove it. Signed-off-by: Markus Armbruster <armbru@redhat.com> Acked-by: Luiz Capitulino <lcapitulino@redhat.com> Acked-by: Andreas Färber <afaerber@suse.de> Message-id: 1411144812-22958-1-git-send-email-armbru@redhat.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
1430500bb8
commit
7797a73947
@ -1748,8 +1748,6 @@ show information about active capturing
|
||||
show list of VM snapshots
|
||||
@item info status
|
||||
show the current VM status (running|paused)
|
||||
@item info pcmcia
|
||||
show guest PCMCIA status
|
||||
@item info mice
|
||||
show which guest mouse is receiving events
|
||||
@item info vnc
|
||||
|
@ -543,7 +543,6 @@ static int dscm1xxxx_attach(PCMCIACardState *card)
|
||||
device_reset(DEVICE(md));
|
||||
md_interrupt_update(md);
|
||||
|
||||
card->slot->card_string = "DSCM-1xxxx Hitachi Microdrive";
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -149,24 +149,11 @@ PXA2xxPCMCIAState *pxa2xx_pcmcia_init(MemoryRegion *sysmem,
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base);
|
||||
s = PXA2XX_PCMCIA(dev);
|
||||
|
||||
if (base == 0x30000000) {
|
||||
s->slot.slot_string = "PXA PC Card Socket 1";
|
||||
} else {
|
||||
s->slot.slot_string = "PXA PC Card Socket 0";
|
||||
}
|
||||
|
||||
qdev_init_nofail(dev);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
static void pxa2xx_pcmcia_realize(DeviceState *dev, Error **errp)
|
||||
{
|
||||
PXA2xxPCMCIAState *s = PXA2XX_PCMCIA(dev);
|
||||
|
||||
pcmcia_socket_register(&s->slot);
|
||||
}
|
||||
|
||||
static void pxa2xx_pcmcia_initfn(Object *obj)
|
||||
{
|
||||
SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
|
||||
@ -262,19 +249,11 @@ void pxa2xx_pcmcia_set_irq_cb(void *opaque, qemu_irq irq, qemu_irq cd_irq)
|
||||
s->cd_irq = cd_irq;
|
||||
}
|
||||
|
||||
static void pxa2xx_pcmcia_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(oc);
|
||||
|
||||
dc->realize = pxa2xx_pcmcia_realize;
|
||||
}
|
||||
|
||||
static const TypeInfo pxa2xx_pcmcia_type_info = {
|
||||
.name = TYPE_PXA2XX_PCMCIA,
|
||||
.parent = TYPE_SYS_BUS_DEVICE,
|
||||
.instance_size = sizeof(PXA2xxPCMCIAState),
|
||||
.instance_init = pxa2xx_pcmcia_initfn,
|
||||
.class_init = pxa2xx_pcmcia_class_init,
|
||||
};
|
||||
|
||||
static void pxa2xx_pcmcia_register_types(void)
|
||||
|
@ -8,14 +8,8 @@
|
||||
typedef struct PCMCIASocket {
|
||||
qemu_irq irq;
|
||||
bool attached;
|
||||
const char *slot_string;
|
||||
const char *card_string;
|
||||
} PCMCIASocket;
|
||||
|
||||
void pcmcia_socket_register(PCMCIASocket *socket);
|
||||
void pcmcia_socket_unregister(PCMCIASocket *socket);
|
||||
void pcmcia_info(Monitor *mon, const QDict *qdict);
|
||||
|
||||
#define TYPE_PCMCIA_CARD "pcmcia-card"
|
||||
#define PCMCIA_CARD(obj) \
|
||||
OBJECT_CHECK(PCMCIACardState, (obj), TYPE_PCMCIA_CARD)
|
||||
|
@ -25,7 +25,6 @@
|
||||
#include "hw/hw.h"
|
||||
#include "monitor/qdev.h"
|
||||
#include "hw/usb.h"
|
||||
#include "hw/pcmcia.h"
|
||||
#include "hw/i386/pc.h"
|
||||
#include "hw/pci/pci.h"
|
||||
#include "sysemu/watchdog.h"
|
||||
@ -2791,13 +2790,6 @@ static mon_cmd_t info_cmds[] = {
|
||||
.help = "show the current VM status (running|paused)",
|
||||
.mhandler.cmd = hmp_info_status,
|
||||
},
|
||||
{
|
||||
.name = "pcmcia",
|
||||
.args_type = "",
|
||||
.params = "",
|
||||
.help = "show guest PCMCIA status",
|
||||
.mhandler.cmd = pcmcia_info,
|
||||
},
|
||||
{
|
||||
.name = "mice",
|
||||
.args_type = "",
|
||||
|
44
vl.c
44
vl.c
@ -63,7 +63,6 @@ int main(int argc, char **argv)
|
||||
#include "hw/boards.h"
|
||||
#include "sysemu/accel.h"
|
||||
#include "hw/usb.h"
|
||||
#include "hw/pcmcia.h"
|
||||
#include "hw/i386/pc.h"
|
||||
#include "hw/isa/isa.h"
|
||||
#include "hw/bt.h"
|
||||
@ -1407,49 +1406,6 @@ void do_usb_del(Monitor *mon, const QDict *qdict)
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************/
|
||||
/* PCMCIA/Cardbus */
|
||||
|
||||
static struct pcmcia_socket_entry_s {
|
||||
PCMCIASocket *socket;
|
||||
struct pcmcia_socket_entry_s *next;
|
||||
} *pcmcia_sockets = 0;
|
||||
|
||||
void pcmcia_socket_register(PCMCIASocket *socket)
|
||||
{
|
||||
struct pcmcia_socket_entry_s *entry;
|
||||
|
||||
entry = g_malloc(sizeof(struct pcmcia_socket_entry_s));
|
||||
entry->socket = socket;
|
||||
entry->next = pcmcia_sockets;
|
||||
pcmcia_sockets = entry;
|
||||
}
|
||||
|
||||
void pcmcia_socket_unregister(PCMCIASocket *socket)
|
||||
{
|
||||
struct pcmcia_socket_entry_s *entry, **ptr;
|
||||
|
||||
ptr = &pcmcia_sockets;
|
||||
for (entry = *ptr; entry; ptr = &entry->next, entry = *ptr)
|
||||
if (entry->socket == socket) {
|
||||
*ptr = entry->next;
|
||||
g_free(entry);
|
||||
}
|
||||
}
|
||||
|
||||
void pcmcia_info(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
struct pcmcia_socket_entry_s *iter;
|
||||
|
||||
if (!pcmcia_sockets)
|
||||
monitor_printf(mon, "No PCMCIA sockets\n");
|
||||
|
||||
for (iter = pcmcia_sockets; iter; iter = iter->next)
|
||||
monitor_printf(mon, "%s: %s\n", iter->socket->slot_string,
|
||||
iter->socket->attached ? iter->socket->card_string :
|
||||
"Empty");
|
||||
}
|
||||
|
||||
/***********************************************************/
|
||||
/* machine registration */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user