hw/block/nvme.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)
The check for `n->namespace.blkconf.blk` always fails because
this is in the initialization function.
Signed-off-by: Joelle van Dyne <j@getutm.app>
---
hw/block/nvme.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index 6842b01ab5..42605fc55d 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -6330,11 +6330,9 @@ static void nvme_instance_init(Object *obj)
{
NvmeCtrl *n = NVME(obj);
- if (n->namespace.blkconf.blk) {
- device_add_bootindex_property(obj, &n->namespace.blkconf.bootindex,
- "bootindex", "/namespace@1,0",
- DEVICE(obj));
- }
+ device_add_bootindex_property(obj, &n->namespace.blkconf.bootindex,
+ "bootindex", "/namespace@1,0",
+ DEVICE(obj));
object_property_add(obj, "smart_critical_warning", "uint8",
nvme_get_smart_warning,
--
2.28.0
On 3/22/21 9:24 AM, Joelle van Dyne wrote:
> The check for `n->namespace.blkconf.blk` always fails because
> this is in the initialization function.
This usually mean the code depends to some state only available
during the QOM 'realization' step, so this code should be in
nvme_realize(). Maybe in this case we don't need it there and
can add the property regardless a block drive is provided, I
haven't checked.
>
> Signed-off-by: Joelle van Dyne <j@getutm.app>
> ---
> hw/block/nvme.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> index 6842b01ab5..42605fc55d 100644
> --- a/hw/block/nvme.c
> +++ b/hw/block/nvme.c
> @@ -6330,11 +6330,9 @@ static void nvme_instance_init(Object *obj)
> {
> NvmeCtrl *n = NVME(obj);
>
> - if (n->namespace.blkconf.blk) {
> - device_add_bootindex_property(obj, &n->namespace.blkconf.bootindex,
> - "bootindex", "/namespace@1,0",
> - DEVICE(obj));
> - }
> + device_add_bootindex_property(obj, &n->namespace.blkconf.bootindex,
> + "bootindex", "/namespace@1,0",
> + DEVICE(obj));
>
> object_property_add(obj, "smart_critical_warning", "uint8",
> nvme_get_smart_warning,
>
On Mar 22 10:58, Philippe Mathieu-Daudé wrote:
> On 3/22/21 9:24 AM, Joelle van Dyne wrote:
> > The check for `n->namespace.blkconf.blk` always fails because
> > this is in the initialization function.
>
> This usually mean the code depends to some state only available
> during the QOM 'realization' step, so this code should be in
> nvme_realize(). Maybe in this case we don't need it there and
> can add the property regardless a block drive is provided, I
> haven't checked.
>
If we defer to realization, it won't be available as a parameter on the
command line, but as far as I can test, adding it unconditionally
doesn't break anything when there is no drive attached to the controller
device.
> >
> > Signed-off-by: Joelle van Dyne <j@getutm.app>
> > ---
> > hw/block/nvme.c | 8 +++-----
> > 1 file changed, 3 insertions(+), 5 deletions(-)
> >
> > diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> > index 6842b01ab5..42605fc55d 100644
> > --- a/hw/block/nvme.c
> > +++ b/hw/block/nvme.c
> > @@ -6330,11 +6330,9 @@ static void nvme_instance_init(Object *obj)
> > {
> > NvmeCtrl *n = NVME(obj);
> >
> > - if (n->namespace.blkconf.blk) {
> > - device_add_bootindex_property(obj, &n->namespace.blkconf.bootindex,
> > - "bootindex", "/namespace@1,0",
> > - DEVICE(obj));
> > - }
> > + device_add_bootindex_property(obj, &n->namespace.blkconf.bootindex,
> > + "bootindex", "/namespace@1,0",
> > + DEVICE(obj));
> >
> > object_property_add(obj, "smart_critical_warning", "uint8",
> > nvme_get_smart_warning,
> >
>
>
On 3/22/21 1:37 PM, Klaus Jensen wrote: > On Mar 22 10:58, Philippe Mathieu-Daudé wrote: >> On 3/22/21 9:24 AM, Joelle van Dyne wrote: >>> The check for `n->namespace.blkconf.blk` always fails because >>> this is in the initialization function. >> >> This usually mean the code depends to some state only available >> during the QOM 'realization' step, so this code should be in >> nvme_realize(). Maybe in this case we don't need it there and >> can add the property regardless a block drive is provided, I >> haven't checked. >> > > If we defer to realization, it won't be available as a parameter on the > command line, but as far as I can test, adding it unconditionally > doesn't break anything when there is no drive attached to the controller > device. Patch is good then :)
On Mar 22 14:10, Philippe Mathieu-Daudé wrote: > On 3/22/21 1:37 PM, Klaus Jensen wrote: > > On Mar 22 10:58, Philippe Mathieu-Daudé wrote: > >> On 3/22/21 9:24 AM, Joelle van Dyne wrote: > >>> The check for `n->namespace.blkconf.blk` always fails because > >>> this is in the initialization function. > >> > >> This usually mean the code depends to some state only available > >> during the QOM 'realization' step, so this code should be in > >> nvme_realize(). Maybe in this case we don't need it there and > >> can add the property regardless a block drive is provided, I > >> haven't checked. > >> > > > > If we defer to realization, it won't be available as a parameter on the > > command line, but as far as I can test, adding it unconditionally > > doesn't break anything when there is no drive attached to the controller > > device. > > Patch is good then :) > Agreed :) Reviewed-by: Klaus Jensen <k.jensen@samsung.com>
© 2016 - 2026 Red Hat, Inc.