Message ID | 20250310153552.32987-4-rreyes@linux.ibm.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Report vfio-ap configuration changes | expand |
On 3/10/25 11:35 AM, Rorie Reyes wrote: > Creates an object indicating that an AP configuration change event > has been received and stores it in a queue. These objects will later > be used to store event information for an AP configuration change > when the CHSC instruction is intercepted. > > Signed-off-by: Rorie Reyes <rreyes@linux.ibm.com> > --- > hw/vfio/ap.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c > index 3614657218..ddab764ab4 100644 > --- a/hw/vfio/ap.c > +++ b/hw/vfio/ap.c > @@ -41,6 +41,13 @@ struct VFIOAPDevice { > EventNotifier cfg_notifier; > }; > > +typedef struct APConfigChgEvent { > + QTAILQ_ENTRY(APConfigChgEvent) next; > +} APConfigChgEvent; > + > +QTAILQ_HEAD(, APConfigChgEvent) cfg_chg_events = > + QTAILQ_HEAD_INITIALIZER(cfg_chg_events); > + > OBJECT_DECLARE_SIMPLE_TYPE(VFIOAPDevice, VFIO_AP_DEVICE) > > static void vfio_ap_compute_needs_reset(VFIODevice *vdev) > @@ -75,11 +82,14 @@ static void vfio_ap_req_notifier_handler(void *opaque) > static void vfio_ap_cfg_chg_notifier_handler(void *opaque) > { > VFIOAPDevice *vapdev = opaque; > + APConfigChgEvent *cfg_chg_event = g_new0(APConfigChgEvent, 1); It doesn't make sense to allocate this before the check below. If the event_notifier_test_and_clear() fails, you'll have allocated this for no reason. Allocate cfg_cgh_event prior to inserting it into the queue below. > > if (!event_notifier_test_and_clear(&vapdev->cfg_notifier)) { > return; > } > > + QTAILQ_INSERT_TAIL(&cfg_chg_events, cfg_chg_event, next); > + > css_generate_css_crws(0); > > }
diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c index 3614657218..ddab764ab4 100644 --- a/hw/vfio/ap.c +++ b/hw/vfio/ap.c @@ -41,6 +41,13 @@ struct VFIOAPDevice { EventNotifier cfg_notifier; }; +typedef struct APConfigChgEvent { + QTAILQ_ENTRY(APConfigChgEvent) next; +} APConfigChgEvent; + +QTAILQ_HEAD(, APConfigChgEvent) cfg_chg_events = + QTAILQ_HEAD_INITIALIZER(cfg_chg_events); + OBJECT_DECLARE_SIMPLE_TYPE(VFIOAPDevice, VFIO_AP_DEVICE) static void vfio_ap_compute_needs_reset(VFIODevice *vdev) @@ -75,11 +82,14 @@ static void vfio_ap_req_notifier_handler(void *opaque) static void vfio_ap_cfg_chg_notifier_handler(void *opaque) { VFIOAPDevice *vapdev = opaque; + APConfigChgEvent *cfg_chg_event = g_new0(APConfigChgEvent, 1); if (!event_notifier_test_and_clear(&vapdev->cfg_notifier)) { return; } + QTAILQ_INSERT_TAIL(&cfg_chg_events, cfg_chg_event, next); + css_generate_css_crws(0); }
Creates an object indicating that an AP configuration change event has been received and stores it in a queue. These objects will later be used to store event information for an AP configuration change when the CHSC instruction is intercepted. Signed-off-by: Rorie Reyes <rreyes@linux.ibm.com> --- hw/vfio/ap.c | 10 ++++++++++ 1 file changed, 10 insertions(+)