All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alistair Francis <alistair.francis@xilinx.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>,
	Patch Tracking <patches@linaro.org>,
	"qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>,
	Markus Armbruster <armbru@redhat.com>,
	Kevin O'Connor <kevin@koconnor.net>,
	qemu-arm <qemu-arm@nongnu.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair.francis@xilinx.com>
Subject: Re: [Qemu-devel] [PATCH 02/10] hw/sd/sd.c: QOMify
Date: Thu, 17 Dec 2015 16:20:42 -0800	[thread overview]
Message-ID: <CAKmqyKNJHzMQLPpNuSbXXXq1ow8tSxmL5t=q-VHPhQf_D6WKqw@mail.gmail.com> (raw)
In-Reply-To: <CAFEAcA8d8HTGqur_eN5KYJP6-SGNTUUygSTzRxnD+==7M9OUqw@mail.gmail.com>

On Thu, Dec 17, 2015 at 2:11 PM, Peter Maydell <peter.maydell@linaro.org> wrote:
> On 17 December 2015 at 21:45, Alistair Francis
> <alistair.francis@xilinx.com> wrote:
>> On Fri, Dec 11, 2015 at 8:37 AM, Peter Maydell <peter.maydell@linaro.org> wrote:
>>> Turn the SD card into a QOM device.
>>> This conversion only changes the device itself; the various
>>> functions which are effectively methods on the device are not
>>> touched at this point.
>>>
>>> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
>
>>> @@ -472,34 +476,26 @@ static const VMStateDescription sd_vmstate = {
>>>      }
>>>  };
>>>
>>> -/* We do not model the chip select pin, so allow the board to select
>>> -   whether card should be in SSI or MMC/SD mode.  It is also up to the
>>> -   board to ensure that ssi transfers only occur when the chip select
>>> -   is asserted.  */
>>> +/* Legacy initialization function for use by non-qdevified callers */
>>>  SDState *sd_init(BlockBackend *blk, bool is_spi)
>>>  {
>>> -    SDState *sd;
>>> +    DeviceState *dev;
>>> +    Error *err = NULL;
>>>
>>> -    if (blk && blk_is_read_only(blk)) {
>>> -        fprintf(stderr, "sd_init: Cannot use read-only drive\n");
>>> +    dev = qdev_create(NULL, TYPE_SD);
>>> +    qdev_prop_set_drive(dev, "drive", blk, &err);
>>> +    if (err) {
>>> +        error_report("sd_init failed: %s", error_get_pretty(err));
>>>          return NULL;
>>>      }
>>> -
>>> -    sd = (SDState *) g_malloc0(sizeof(SDState));
>>> -    sd->buf = blk_blockalign(blk, 512);
>>> -    sd->spi = is_spi;
>>> -    sd->enable = true;
>>> -    sd->blk = blk;
>>> -    sd_reset(sd);
>>> -    if (sd->blk) {
>>> -        /* Attach dev if not already attached.  (This call ignores an
>>> -         * error return code if sd->blk is already attached.) */
>>> -        /* FIXME ignoring blk_attach_dev() failure is dangerously brittle */
>>> -        blk_attach_dev(sd->blk, sd);
>>
>> This functionality is removed with this patch. If the block is not
>> already attached won't this cause errors?
>
> The block backend is attached when we set the "drive" property
> (which we do in this function in the new code just above).
> [the actual call to blk_attach_dev() is in parse_drive() in
> hw/core/qdev-properties-system.c.]
>
> The blk_set_dev_ops() moves in this patch to sd_realize().
>
> There is incidentally no longer any case where the block backend
> could be already attached when we call sd_init(), because the
> only case there was when it had been attached to the sdhci
> controller device because of the x-drive property on that device,
> and we removed the property in the previous patch. It's exactly
> because setting a drive property does an implicit blk_attach_dev
> that this code previously had to have special casing for
> "attach of an already attached blk".

Ok, fair enough, just thought I would check. The rest of the logic
looks good then.

Thanks,

Alistair

>
>>> -        blk_set_dev_ops(sd->blk, &sd_block_ops, sd);
>>> +    qdev_prop_set_bit(dev, "spi", is_spi);
>>> +    object_property_set_bool(OBJECT(dev), true, "realized", &err);
>>> +    if (err) {
>>> +        error_report("sd_init failed: %s", error_get_pretty(err));
>>> +        return NULL;
>>>      }
>>> -    vmstate_register(NULL, -1, &sd_vmstate, sd);
>>> -    return sd;
>>> +
>>> +    return SD(dev);
>>>  }
>>>
>>>  void sd_set_cb(SDState *sd, qemu_irq readonly, qemu_irq insert)
>>> @@ -1765,3 +1761,62 @@ void sd_enable(SDState *sd, bool enable)
>>>  {
>>>      sd->enable = enable;
>>>  }
>>> +
>>> +static void sd_instance_init(Object *obj)
>>> +{
>>> +    SDState *sd = SD(obj);
>>> +
>>> +    sd->enable = true;
>>> +}
>>> +
>>> +static void sd_realize(DeviceState *dev, Error ** errp)
>>
>> You have one too many spaces here.
>
> Yep, will fix.
>
> thanks
> -- PMM
>

  reply	other threads:[~2015-12-18  0:21 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-11 16:37 [Qemu-devel] [PATCH 00/10] hw/sd: QOMify sd.c (and pxa2xx_mmci) Peter Maydell
2015-12-11 16:37 ` [Qemu-devel] [PATCH 01/10] hw/sd/sdhci.c: Remove x-drive property Peter Maydell
2015-12-17 19:28   ` Alistair Francis
2015-12-19 21:33   ` Peter Crosthwaite
2015-12-11 16:37 ` [Qemu-devel] [PATCH 02/10] hw/sd/sd.c: QOMify Peter Maydell
2015-12-17 21:45   ` Alistair Francis
2015-12-17 22:11     ` Peter Maydell
2015-12-18  0:20       ` Alistair Francis [this message]
2015-12-19 21:36   ` Peter Crosthwaite
2015-12-20 17:07     ` Peter Maydell
2015-12-20 18:25       ` Peter Crosthwaite
2015-12-11 16:37 ` [Qemu-devel] [PATCH 03/10] hw/sd/sd.c: Convert sd_reset() function into Device reset method Peter Maydell
2015-12-17 23:51   ` Alistair Francis
2015-12-19 21:37   ` Peter Crosthwaite
2015-12-11 16:37 ` [Qemu-devel] [PATCH 04/10] hw/sd: Add QOM bus which SD cards plug in to Peter Maydell
2015-12-19 21:38   ` Peter Crosthwaite
2015-12-20 17:10     ` Peter Maydell
2015-12-20 20:51       ` Peter Crosthwaite
2015-12-20 23:18         ` Peter Maydell
2015-12-21  0:15           ` Peter Crosthwaite
2016-01-07 18:09         ` Peter Maydell
2016-01-08 14:51           ` Peter Crosthwaite
2015-12-11 16:37 ` [Qemu-devel] [PATCH 05/10] hw/sd/sdhci.c: Update to use SDBus APIs Peter Maydell
2015-12-11 19:01   ` Kevin O'Connor
2015-12-11 23:08     ` Peter Maydell
2015-12-19 21:39   ` Peter Crosthwaite
2015-12-20 17:10     ` Peter Maydell
2015-12-11 16:37 ` [Qemu-devel] [PATCH 06/10] sdhci_sysbus: Create SD card device in users, not the device itself Peter Maydell
2015-12-18  0:18   ` Alistair Francis
2015-12-18  9:00     ` Peter Maydell
2015-12-19 21:40     ` Peter Crosthwaite
2015-12-11 16:37 ` [Qemu-devel] [PATCH 07/10] hw/sd/pxa2xx_mmci: convert to SysBusDevice object Peter Maydell
2015-12-19 21:41   ` Peter Crosthwaite
2015-12-11 16:37 ` [Qemu-devel] [PATCH 08/10] hw/sd/pxa2xx_mmci: Update to use new SDBus APIs Peter Maydell
2015-12-19 21:42   ` Peter Crosthwaite
2015-12-20 17:14     ` Peter Maydell
2015-12-11 16:37 ` [Qemu-devel] [PATCH 09/10] hw/sd/pxa2xx_mmci: Convert to VMStateDescription Peter Maydell
2015-12-19 21:45   ` Peter Crosthwaite
2015-12-20 17:17     ` Peter Maydell
2015-12-11 16:37 ` [Qemu-devel] [PATCH 10/10] hw/sd/pxa2xx_mmci: Add reset function Peter Maydell
2015-12-19 21:45   ` Peter Crosthwaite
2015-12-17  1:25 ` [Qemu-devel] [PATCH 00/10] hw/sd: QOMify sd.c (and pxa2xx_mmci) Alistair Francis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAKmqyKNJHzMQLPpNuSbXXXq1ow8tSxmL5t=q-VHPhQf_D6WKqw@mail.gmail.com' \
    --to=alistair.francis@xilinx.com \
    --cc=armbru@redhat.com \
    --cc=crosthwaite.peter@gmail.com \
    --cc=edgar.iglesias@gmail.com \
    --cc=kevin@koconnor.net \
    --cc=patches@linaro.org \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.