[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH] ssi-sd: Make devices picking up backends un
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [RFC PATCH] ssi-sd: Make devices picking up backends unavailable with -device |
Date: |
Wed, 26 Sep 2018 12:01:01 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0 |
Hi Markus,
On 9/26/18 11:00 AM, Markus Armbruster wrote:
> Device models aren't supposed to go on fishing expeditions for
> backends. They should expose suitable properties for the user to set.
> For onboard devices, board code sets them.
>
> Device ssi-sd picks up its block backend in its init() method with
> drive_get_next() instead. This mistake is already marked FIXME since
> commit af9e40a.
>
> Unset user_creatable to remove the mistake from our external
> interface. Since the SSI bus doesn't support hotplug, only -device
> can be affected. Only certain ARM machines provide an SSI bus.
There is also a MicroBlaze machine.
Note that out of those target, we could model SSI buses on
southbridges/LPC devices but there is no interest.
I'm also spending some hobby time on a MIPS SoC which exposes a SSI bus.
> Signed-off-by: Markus Armbruster <address@hidden>
> ---
> Are there valid uses of -device ssi-sd? If no, this patch is fine.
> If yes, this patch breaks them. But fixing the FIXME will also break
> them. What should we do?
This device was probably orphan (not used) for a long time, and seems
unusable in it current state to me, see:
http://lists.nongnu.org/archive/html/qemu-devel/2018-06/msg01757.html
I have to address Peter's comment to my patch noted in my TODO (low
priority), so I'm OK to get ride of the FIXME.
I suppose it is easier for you to get your patch in, then let me clean
that later.
Regards,
Phil.
>
> hw/sd/ssi-sd.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c
> index 95a143bfba..ec7c7e6dbf 100644
> --- a/hw/sd/ssi-sd.c
> +++ b/hw/sd/ssi-sd.c
> @@ -284,6 +284,8 @@ static void ssi_sd_class_init(ObjectClass *klass, void
> *data)
> k->cs_polarity = SSI_CS_LOW;
> dc->vmsd = &vmstate_ssi_sd;
> dc->reset = ssi_sd_reset;
> + /* Reason: init() method uses drive_get_next() */
> + dc->cannot_instantiate_with_device_add_yet = true;
> }
>
> static const TypeInfo ssi_sd_info = {
>