|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 1 6/8] xen/pt: Make xen_pt_unregister_device idempotent
> > @@ -858,15 +863,20 @@ static void xen_pt_unregister_device(PCIDevice *d)
> > machine_irq, errno);
> > }
> > }
> > + s->machine_irq = 0;
> > }
> >
> > /* delete all emulated config registers */
> > xen_pt_config_delete(s);
> >
> > - memory_listener_unregister(&s->memory_listener);
> > - memory_listener_unregister(&s->io_listener);
> > -
> > - xen_host_pci_device_put(&s->real_device);
> > + if (s->listener_set) {
> > + memory_listener_unregister(&s->memory_listener);
> > + memory_listener_unregister(&s->io_listener);
> > + s->listener_set = false;
>
> If you call QTAILQ_INIT on memory_listener and io_listener, then you
> simply check on QTAILQ_EMPTY and remove listener_set.
No dice. For that to work they need to be QTAIL_HEAD while
they are of QTAILQ_ENTRY.
That is, the include/exec/memory.h:
struct MemoryListener {
...
AddressSpace *address_space_filter;
QTAILQ_ENTRY(MemoryListener) link;
}
And the QTAILQ_EMPTY checks for '>tqh_first' while the
QTAILQ_ENTRY only defines two pointers: tqe_next and tqe_prev.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |