* [Qemu-devel] [patch 01/02] create empty_slot device
@ 2010-04-16 23:10 Artyom Tarasenko
2010-05-03 18:26 ` Anthony Liguori
0 siblings, 1 reply; 4+ messages in thread
From: Artyom Tarasenko @ 2010-04-16 23:10 UTC (permalink / raw)
To: qemu-devel; +Cc: blauwirbel, Artyom Tarasenko
create empty_slot device
The empty_slot device emulates known to a bus but not connected devices.
Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
---
hw/empty_slot.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
hw/empty_slot.h | 2 +
2 files changed, 94 insertions(+), 0 deletions(-)
create mode 100644 hw/empty_slot.c
create mode 100644 hw/empty_slot.h
diff --git a/hw/empty_slot.c b/hw/empty_slot.c
new file mode 100644
index 0000000..8dc10ac
--- /dev/null
+++ b/hw/empty_slot.c
@@ -0,0 +1,92 @@
+/*
+ * QEMU Empty Slot
+ *
+ * The empty_slot device emulates known to a bus but not connected devices.
+ *
+ * Copyright (c) 2010 Artyom Tarasenko
+ *
+ * This code is licensed under the GNU GPL v2 or (at your option) any later
+ * version.
+ */
+
+#include "hw.h"
+#include "sysbus.h"
+#include "empty_slot.h"
+
+//#define DEBUG_EMPTY_SLOT
+
+#ifdef DEBUG_EMPTY_SLOT
+#define DPRINTF(fmt, ...) \
+ do { printf("empty_slot: " fmt , ## __VA_ARGS__); } while (0)
+#else
+#define DPRINTF(fmt, ...) do {} while (0)
+#endif
+
+typedef struct EmptySlot {
+ SysBusDevice busdev;
+ uint64_t size;
+} EmptySlot;
+
+static uint32_t empty_slot_readl(void *opaque, target_phys_addr_t addr)
+{
+ DPRINTF("read from " TARGET_FMT_plx "\n", addr);
+ return 0;
+}
+
+static void empty_slot_writel(void *opaque, target_phys_addr_t addr,
+ uint32_t val)
+{
+ DPRINTF("write 0x%x to " TARGET_FMT_plx "\n", val, addr);
+}
+
+CPUReadMemoryFunc * const empty_slot_read[3] = {
+ empty_slot_readl,
+ empty_slot_readl,
+ empty_slot_readl,
+};
+
+static CPUWriteMemoryFunc * const empty_slot_write[3] = {
+ empty_slot_writel,
+ empty_slot_writel,
+ empty_slot_writel,
+};
+
+void empty_slot_init(target_phys_addr_t addr, uint64_t slot_size)
+{
+ DeviceState *dev;
+ SysBusDevice *s;
+ EmptySlot *e;
+
+ dev = qdev_create(NULL, "empty_slot");
+ s = sysbus_from_qdev(dev);
+ e = FROM_SYSBUS(EmptySlot, s);
+ e->size = slot_size;
+
+ qdev_init_nofail(dev);
+
+ sysbus_mmio_map(s, 0, addr);
+}
+
+static int empty_slot_init1(SysBusDevice *dev)
+{
+ EmptySlot *s = FROM_SYSBUS(EmptySlot, dev);
+ ram_addr_t empty_slot_offset;
+
+ empty_slot_offset = cpu_register_io_memory(empty_slot_read,
+ empty_slot_write, s);
+ sysbus_init_mmio(dev, s->size, empty_slot_offset | IO_MEM_RAM);
+ return 0;
+}
+
+static SysBusDeviceInfo empty_slot_info = {
+ .init = empty_slot_init1,
+ .qdev.name = "empty_slot",
+ .qdev.size = sizeof(EmptySlot),
+};
+
+static void empty_slot_register_devices(void)
+{
+ sysbus_register_withprop(&empty_slot_info);
+}
+
+device_init(empty_slot_register_devices);
diff --git a/hw/empty_slot.h b/hw/empty_slot.h
new file mode 100644
index 0000000..377731e
--- /dev/null
+++ b/hw/empty_slot.h
@@ -0,0 +1,2 @@
+/* empty_slot.c */
+void empty_slot_init(target_phys_addr_t addr, uint64_t slot_size);
--
1.6.6.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [patch 01/02] create empty_slot device
2010-04-16 23:10 [Qemu-devel] [patch 01/02] create empty_slot device Artyom Tarasenko
@ 2010-05-03 18:26 ` Anthony Liguori
2010-05-03 19:35 ` Blue Swirl
2010-05-03 21:23 ` Artyom Tarasenko
0 siblings, 2 replies; 4+ messages in thread
From: Anthony Liguori @ 2010-05-03 18:26 UTC (permalink / raw)
To: Artyom Tarasenko; +Cc: blauwirbel, qemu-devel, Artyom Tarasenko
On 04/16/2010 06:10 PM, Artyom Tarasenko wrote:
> create empty_slot device
>
> The empty_slot device emulates known to a bus but not connected devices.
>
> Signed-off-by: Artyom Tarasenko<atar4qemu@gmail.com>
> ---
>
What's this for?
Is there a 2/2 missing?
Regards,
Anthony Liguori
> hw/empty_slot.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> hw/empty_slot.h | 2 +
> 2 files changed, 94 insertions(+), 0 deletions(-)
> create mode 100644 hw/empty_slot.c
> create mode 100644 hw/empty_slot.h
>
> diff --git a/hw/empty_slot.c b/hw/empty_slot.c
> new file mode 100644
> index 0000000..8dc10ac
> --- /dev/null
> +++ b/hw/empty_slot.c
> @@ -0,0 +1,92 @@
> +/*
> + * QEMU Empty Slot
> + *
> + * The empty_slot device emulates known to a bus but not connected devices.
> + *
> + * Copyright (c) 2010 Artyom Tarasenko
> + *
> + * This code is licensed under the GNU GPL v2 or (at your option) any later
> + * version.
> + */
> +
> +#include "hw.h"
> +#include "sysbus.h"
> +#include "empty_slot.h"
> +
> +//#define DEBUG_EMPTY_SLOT
> +
> +#ifdef DEBUG_EMPTY_SLOT
> +#define DPRINTF(fmt, ...) \
> + do { printf("empty_slot: " fmt , ## __VA_ARGS__); } while (0)
> +#else
> +#define DPRINTF(fmt, ...) do {} while (0)
> +#endif
> +
> +typedef struct EmptySlot {
> + SysBusDevice busdev;
> + uint64_t size;
> +} EmptySlot;
> +
> +static uint32_t empty_slot_readl(void *opaque, target_phys_addr_t addr)
> +{
> + DPRINTF("read from " TARGET_FMT_plx "\n", addr);
> + return 0;
> +}
> +
> +static void empty_slot_writel(void *opaque, target_phys_addr_t addr,
> + uint32_t val)
> +{
> + DPRINTF("write 0x%x to " TARGET_FMT_plx "\n", val, addr);
> +}
> +
> +CPUReadMemoryFunc * const empty_slot_read[3] = {
> + empty_slot_readl,
> + empty_slot_readl,
> + empty_slot_readl,
> +};
> +
> +static CPUWriteMemoryFunc * const empty_slot_write[3] = {
> + empty_slot_writel,
> + empty_slot_writel,
> + empty_slot_writel,
> +};
> +
> +void empty_slot_init(target_phys_addr_t addr, uint64_t slot_size)
> +{
> + DeviceState *dev;
> + SysBusDevice *s;
> + EmptySlot *e;
> +
> + dev = qdev_create(NULL, "empty_slot");
> + s = sysbus_from_qdev(dev);
> + e = FROM_SYSBUS(EmptySlot, s);
> + e->size = slot_size;
> +
> + qdev_init_nofail(dev);
> +
> + sysbus_mmio_map(s, 0, addr);
> +}
> +
> +static int empty_slot_init1(SysBusDevice *dev)
> +{
> + EmptySlot *s = FROM_SYSBUS(EmptySlot, dev);
> + ram_addr_t empty_slot_offset;
> +
> + empty_slot_offset = cpu_register_io_memory(empty_slot_read,
> + empty_slot_write, s);
> + sysbus_init_mmio(dev, s->size, empty_slot_offset | IO_MEM_RAM);
> + return 0;
> +}
> +
> +static SysBusDeviceInfo empty_slot_info = {
> + .init = empty_slot_init1,
> + .qdev.name = "empty_slot",
> + .qdev.size = sizeof(EmptySlot),
> +};
> +
> +static void empty_slot_register_devices(void)
> +{
> + sysbus_register_withprop(&empty_slot_info);
> +}
> +
> +device_init(empty_slot_register_devices);
> diff --git a/hw/empty_slot.h b/hw/empty_slot.h
> new file mode 100644
> index 0000000..377731e
> --- /dev/null
> +++ b/hw/empty_slot.h
> @@ -0,0 +1,2 @@
> +/* empty_slot.c */
> +void empty_slot_init(target_phys_addr_t addr, uint64_t slot_size);
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [patch 01/02] create empty_slot device
2010-05-03 18:26 ` Anthony Liguori
@ 2010-05-03 19:35 ` Blue Swirl
2010-05-03 21:23 ` Artyom Tarasenko
1 sibling, 0 replies; 4+ messages in thread
From: Blue Swirl @ 2010-05-03 19:35 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel, Artyom Tarasenko, Artyom Tarasenko
On 5/3/10, Anthony Liguori <anthony@codemonkey.ws> wrote:
> On 04/16/2010 06:10 PM, Artyom Tarasenko wrote:
>
> > create empty_slot device
> >
> > The empty_slot device emulates known to a bus but not connected devices.
> >
> > Signed-off-by: Artyom Tarasenko<atar4qemu@gmail.com>
> > ---
> >
> >
>
> What's this for?
It provides a dummy device, used by Sparc32 in 2/2.
> Is there a 2/2 missing?
No, I've applied both (676d9b9b883691cf99e298291dbc2ad7956516b9 and
da9fcfa54486797a5f261b43ad0c0b2f8dc47181).
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [patch 01/02] create empty_slot device
2010-05-03 18:26 ` Anthony Liguori
2010-05-03 19:35 ` Blue Swirl
@ 2010-05-03 21:23 ` Artyom Tarasenko
1 sibling, 0 replies; 4+ messages in thread
From: Artyom Tarasenko @ 2010-05-03 21:23 UTC (permalink / raw)
To: Anthony Liguori; +Cc: blauwirbel, qemu-devel, Artyom Tarasenko
2010/5/3 Anthony Liguori <anthony@codemonkey.ws>:
> On 04/16/2010 06:10 PM, Artyom Tarasenko wrote:
>>
>> create empty_slot device
>>
>> The empty_slot device emulates known to a bus but not connected devices.
>>
>> Signed-off-by: Artyom Tarasenko<atar4qemu@gmail.com>
>> ---
>>
>
> What's this for?
It's an empty slot for a bus with a handshake. E.g. sbus, or a ram bus
with a parity check.
> Is there a 2/2 missing?
Is already in the current master.
>
> Regards,
>
> Anthony Liguori
>
>> hw/empty_slot.c | 92
>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> hw/empty_slot.h | 2 +
>> 2 files changed, 94 insertions(+), 0 deletions(-)
>> create mode 100644 hw/empty_slot.c
>> create mode 100644 hw/empty_slot.h
>>
>> diff --git a/hw/empty_slot.c b/hw/empty_slot.c
>> new file mode 100644
>> index 0000000..8dc10ac
>> --- /dev/null
>> +++ b/hw/empty_slot.c
>> @@ -0,0 +1,92 @@
>> +/*
>> + * QEMU Empty Slot
>> + *
>> + * The empty_slot device emulates known to a bus but not connected
>> devices.
>> + *
>> + * Copyright (c) 2010 Artyom Tarasenko
>> + *
>> + * This code is licensed under the GNU GPL v2 or (at your option) any
>> later
>> + * version.
>> + */
>> +
>> +#include "hw.h"
>> +#include "sysbus.h"
>> +#include "empty_slot.h"
>> +
>> +//#define DEBUG_EMPTY_SLOT
>> +
>> +#ifdef DEBUG_EMPTY_SLOT
>> +#define DPRINTF(fmt, ...) \
>> + do { printf("empty_slot: " fmt , ## __VA_ARGS__); } while (0)
>> +#else
>> +#define DPRINTF(fmt, ...) do {} while (0)
>> +#endif
>> +
>> +typedef struct EmptySlot {
>> + SysBusDevice busdev;
>> + uint64_t size;
>> +} EmptySlot;
>> +
>> +static uint32_t empty_slot_readl(void *opaque, target_phys_addr_t addr)
>> +{
>> + DPRINTF("read from " TARGET_FMT_plx "\n", addr);
>> + return 0;
>> +}
>> +
>> +static void empty_slot_writel(void *opaque, target_phys_addr_t addr,
>> + uint32_t val)
>> +{
>> + DPRINTF("write 0x%x to " TARGET_FMT_plx "\n", val, addr);
>> +}
>> +
>> +CPUReadMemoryFunc * const empty_slot_read[3] = {
>> + empty_slot_readl,
>> + empty_slot_readl,
>> + empty_slot_readl,
>> +};
>> +
>> +static CPUWriteMemoryFunc * const empty_slot_write[3] = {
>> + empty_slot_writel,
>> + empty_slot_writel,
>> + empty_slot_writel,
>> +};
>> +
>> +void empty_slot_init(target_phys_addr_t addr, uint64_t slot_size)
>> +{
>> + DeviceState *dev;
>> + SysBusDevice *s;
>> + EmptySlot *e;
>> +
>> + dev = qdev_create(NULL, "empty_slot");
>> + s = sysbus_from_qdev(dev);
>> + e = FROM_SYSBUS(EmptySlot, s);
>> + e->size = slot_size;
>> +
>> + qdev_init_nofail(dev);
>> +
>> + sysbus_mmio_map(s, 0, addr);
>> +}
>> +
>> +static int empty_slot_init1(SysBusDevice *dev)
>> +{
>> + EmptySlot *s = FROM_SYSBUS(EmptySlot, dev);
>> + ram_addr_t empty_slot_offset;
>> +
>> + empty_slot_offset = cpu_register_io_memory(empty_slot_read,
>> + empty_slot_write, s);
>> + sysbus_init_mmio(dev, s->size, empty_slot_offset | IO_MEM_RAM);
>> + return 0;
>> +}
>> +
>> +static SysBusDeviceInfo empty_slot_info = {
>> + .init = empty_slot_init1,
>> + .qdev.name = "empty_slot",
>> + .qdev.size = sizeof(EmptySlot),
>> +};
>> +
>> +static void empty_slot_register_devices(void)
>> +{
>> + sysbus_register_withprop(&empty_slot_info);
>> +}
>> +
>> +device_init(empty_slot_register_devices);
>> diff --git a/hw/empty_slot.h b/hw/empty_slot.h
>> new file mode 100644
>> index 0000000..377731e
>> --- /dev/null
>> +++ b/hw/empty_slot.h
>> @@ -0,0 +1,2 @@
>> +/* empty_slot.c */
>> +void empty_slot_init(target_phys_addr_t addr, uint64_t slot_size);
>>
>
>
--
Regards,
Artyom Tarasenko
solaris/sparc under qemu blog: http://tyom.blogspot.com/
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-05-03 21:24 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-16 23:10 [Qemu-devel] [patch 01/02] create empty_slot device Artyom Tarasenko
2010-05-03 18:26 ` Anthony Liguori
2010-05-03 19:35 ` Blue Swirl
2010-05-03 21:23 ` Artyom Tarasenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).