diff mbox

[1/1] hmp: Remove "info pcmcia"

Message ID 1411144812-22958-1-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster Sept. 19, 2014, 4:40 p.m. UTC
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>
---
 hmp-commands.hx     |  2 --
 hw/ide/microdrive.c |  1 -
 hw/pcmcia/pxa2xx.c  | 21 ---------------------
 include/hw/pcmcia.h |  6 ------
 monitor.c           |  8 --------
 vl.c                | 44 --------------------------------------------
 6 files changed, 82 deletions(-)

Comments

Markus Armbruster Oct. 1, 2014, 8:54 a.m. UTC | #1
Ping?

Markus Armbruster <armbru@redhat.com> writes:

> 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>
Luiz Capitulino Oct. 9, 2014, 1:47 p.m. UTC | #2
On Wed, 01 Oct 2014 10:54:44 +0200
Markus Armbruster <armbru@redhat.com> wrote:

> Ping?
> 
> Markus Armbruster <armbru@redhat.com> writes:
> 
> > 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.

Sorry for the long delay on this one. But this patch is more about PCMCIA
support in QEMU than HMP, so I can provide my ACK, but I don't think this
is HMP material.

Acked-by: Luiz Capitulino <lcapitulino@redhat.com>
Andreas Färber Oct. 9, 2014, 2:41 p.m. UTC | #3
Am 09.10.2014 um 15:47 schrieb Luiz Capitulino:
> On Wed, 01 Oct 2014 10:54:44 +0200
> Markus Armbruster <armbru@redhat.com> wrote:
> 
>> Ping?
>>
>> Markus Armbruster <armbru@redhat.com> writes:
>>
>>> 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.
> 
> Sorry for the long delay on this one. But this patch is more about PCMCIA
> support in QEMU than HMP, so I can provide my ACK, but I don't think this
> is HMP material.
> 
> Acked-by: Luiz Capitulino <lcapitulino@redhat.com>

As the probably last one to have touched the ugly PCMCIA code,

Acked-by: Andreas Färber <afaerber@suse.de>

Maybe take it through the arm queue due to affected machines, Peter?

Regards,
Andreas
Peter Maydell Oct. 9, 2014, 2:58 p.m. UTC | #4
On 9 October 2014 15:41, Andreas Färber <afaerber@suse.de> wrote:
> Am 09.10.2014 um 15:47 schrieb Luiz Capitulino:
>> On Wed, 01 Oct 2014 10:54:44 +0200
>> Markus Armbruster <armbru@redhat.com> wrote:
>>
>>> Ping?
>>>
>>> Markus Armbruster <armbru@redhat.com> writes:
>>>
>>>> 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.
>>
>> Sorry for the long delay on this one. But this patch is more about PCMCIA
>> support in QEMU than HMP, so I can provide my ACK, but I don't think this
>> is HMP material.
>>
>> Acked-by: Luiz Capitulino <lcapitulino@redhat.com>
>
> As the probably last one to have touched the ugly PCMCIA code,
>
> Acked-by: Andreas Färber <afaerber@suse.de>
>
> Maybe take it through the arm queue due to affected machines, Peter?

I don't particularly care -- the machines in question are near-dead
so there's not much chance of conflicts. I can take it if that's
easiest for everybody I guess?

-- PMM
Markus Armbruster Oct. 9, 2014, 3:16 p.m. UTC | #5
Peter Maydell <peter.maydell@linaro.org> writes:

> On 9 October 2014 15:41, Andreas Färber <afaerber@suse.de> wrote:
>> Am 09.10.2014 um 15:47 schrieb Luiz Capitulino:
>>> On Wed, 01 Oct 2014 10:54:44 +0200
>>> Markus Armbruster <armbru@redhat.com> wrote:
>>>
>>>> Ping?
>>>>
>>>> Markus Armbruster <armbru@redhat.com> writes:
>>>>
>>>>> 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.
>>>
>>> Sorry for the long delay on this one. But this patch is more about PCMCIA
>>> support in QEMU than HMP, so I can provide my ACK, but I don't think this
>>> is HMP material.
>>>
>>> Acked-by: Luiz Capitulino <lcapitulino@redhat.com>
>>
>> As the probably last one to have touched the ugly PCMCIA code,
>>
>> Acked-by: Andreas Färber <afaerber@suse.de>
>>
>> Maybe take it through the arm queue due to affected machines, Peter?
>
> I don't particularly care -- the machines in question are near-dead
> so there's not much chance of conflicts. I can take it if that's
> easiest for everybody I guess?

Yes, please!
diff mbox

Patch

diff --git a/hmp-commands.hx b/hmp-commands.hx
index f859f8d..0ffcb18 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -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
diff --git a/hw/ide/microdrive.c b/hw/ide/microdrive.c
index 15671b8..cca0648 100644
--- a/hw/ide/microdrive.c
+++ b/hw/ide/microdrive.c
@@ -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;
 }
 
diff --git a/hw/pcmcia/pxa2xx.c b/hw/pcmcia/pxa2xx.c
index 55e8a2a..a7e1877 100644
--- a/hw/pcmcia/pxa2xx.c
+++ b/hw/pcmcia/pxa2xx.c
@@ -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)
diff --git a/include/hw/pcmcia.h b/include/hw/pcmcia.h
index 2695d3c..98406ff 100644
--- a/include/hw/pcmcia.h
+++ b/include/hw/pcmcia.h
@@ -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)
diff --git a/monitor.c b/monitor.c
index 667efb7..6bb2f44 100644
--- a/monitor.c
+++ b/monitor.c
@@ -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[] = {
         .mhandler.cmd = hmp_info_status,
     },
     {
-        .name       = "pcmcia",
-        .args_type  = "",
-        .params     = "",
-        .help       = "show guest PCMCIA status",
-        .mhandler.cmd = pcmcia_info,
-    },
-    {
         .name       = "mice",
         .args_type  = "",
         .params     = "",
diff --git a/vl.c b/vl.c
index dc792fe..620a305 100644
--- a/vl.c
+++ b/vl.c
@@ -62,7 +62,6 @@  int main(int argc, char **argv)
 #include "hw/hw.h"
 #include "hw/boards.h"
 #include "hw/usb.h"
-#include "hw/pcmcia.h"
 #include "hw/i386/pc.h"
 #include "hw/isa/isa.h"
 #include "hw/bt.h"
@@ -1523,49 +1522,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 */
 
 MachineState *current_machine;