From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O90MD-000639-8B for qemu-devel@nongnu.org; Mon, 03 May 2010 14:27:05 -0400 Received: from [140.186.70.92] (port=43184 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O90MB-00061k-Hi for qemu-devel@nongnu.org; Mon, 03 May 2010 14:27:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O90M8-0004OW-G1 for qemu-devel@nongnu.org; Mon, 03 May 2010 14:27:02 -0400 Received: from mail-gw0-f45.google.com ([74.125.83.45]:50002) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O90M6-0004Nn-Tt for qemu-devel@nongnu.org; Mon, 03 May 2010 14:26:59 -0400 Received: by gwb15 with SMTP id 15so1301668gwb.4 for ; Mon, 03 May 2010 11:26:58 -0700 (PDT) Message-ID: <4BDF156E.2090207@codemonkey.ws> Date: Mon, 03 May 2010 13:26:54 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [patch 01/02] create empty_slot device References: <1271459404-21790-1-git-send-email-atar4qemu@google.com> In-Reply-To: <1271459404-21790-1-git-send-email-atar4qemu@google.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Artyom Tarasenko Cc: blauwirbel@gmail.com, qemu-devel@nongnu.org, 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 > --- > 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); >