Message ID | 20201124080159.11912-8-paul@xen.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | xl / libxl: named PCI pass-through devices | expand |
Hi, Paul! On 11/24/20 10:01 AM, Paul Durrant wrote: > From: Paul Durrant <pdurrant@amazon.com> > > ... to hold a pointer to the device. > > There is already a 'pci' field in 'pci_add_state' so simply use that from > the start. This also allows the 'pci' (#3) argument to be dropped from > do_pci_add(). > > NOTE: This patch also changes the type of the 'pci_domid' field in > 'pci_add_state' from 'int' to 'libxl_domid' which is more appropriate > given what the field is used for. > > Signed-off-by: Paul Durrant <pdurrant@amazon.com> Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> Thank you, Oleksandr > --- > Cc: Ian Jackson <iwj@xenproject.org> > Cc: Wei Liu <wl@xen.org> > --- > tools/libs/light/libxl_pci.c | 19 +++++++------------ > 1 file changed, 7 insertions(+), 12 deletions(-) > > diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c > index 41e4b2b571..77edd27345 100644 > --- a/tools/libs/light/libxl_pci.c > +++ b/tools/libs/light/libxl_pci.c > @@ -1074,7 +1074,7 @@ typedef struct pci_add_state { > libxl__ev_qmp qmp; > libxl__ev_time timeout; > libxl_device_pci *pci; > - int pci_domid; > + libxl_domid pci_domid; > } pci_add_state; > > static void pci_add_qemu_trad_watch_state_cb(libxl__egc *egc, > @@ -1091,7 +1091,6 @@ static void pci_add_dm_done(libxl__egc *, > > static void do_pci_add(libxl__egc *egc, > libxl_domid domid, > - libxl_device_pci *pci, > pci_add_state *pas) > { > STATE_AO_GC(pas->aodev->ao); > @@ -1101,7 +1100,6 @@ static void do_pci_add(libxl__egc *egc, > /* init pci_add_state */ > libxl__xswait_init(&pas->xswait); > libxl__ev_qmp_init(&pas->qmp); > - pas->pci = pci; > pas->pci_domid = domid; > libxl__ev_time_init(&pas->timeout); > > @@ -1564,13 +1562,10 @@ void libxl__device_pci_add(libxl__egc *egc, uint32_t domid, > int stubdomid = 0; > pci_add_state *pas; > > - /* Store *pci to be used by callbacks */ > - aodev->device_config = pci; > - aodev->device_type = &libxl__pci_devtype; > - > GCNEW(pas); > pas->aodev = aodev; > pas->domid = domid; > + pas->pci = pci; > pas->starting = starting; > pas->callback = device_pci_add_stubdom_done; > > @@ -1624,9 +1619,10 @@ void libxl__device_pci_add(libxl__egc *egc, uint32_t domid, > GCNEW(pci_s); > libxl_device_pci_init(pci_s); > libxl_device_pci_copy(CTX, pci_s, pci); > + pas->pci = pci_s; > pas->callback = device_pci_add_stubdom_wait; > > - do_pci_add(egc, stubdomid, pci_s, pas); /* must be last */ > + do_pci_add(egc, stubdomid, pas); /* must be last */ > return; > } > > @@ -1681,9 +1677,8 @@ static void device_pci_add_stubdom_done(libxl__egc *egc, > int i; > > /* Convenience aliases */ > - libxl__ao_device *aodev = pas->aodev; > libxl_domid domid = pas->domid; > - libxl_device_pci *pci = aodev->device_config; > + libxl_device_pci *pci = pas->pci; > > if (rc) goto out; > > @@ -1718,7 +1713,7 @@ static void device_pci_add_stubdom_done(libxl__egc *egc, > pci->vdevfn = orig_vdev; > } > pas->callback = device_pci_add_done; > - do_pci_add(egc, domid, pci, pas); /* must be last */ > + do_pci_add(egc, domid, pas); /* must be last */ > return; > } > } > @@ -1734,7 +1729,7 @@ static void device_pci_add_done(libxl__egc *egc, > EGC_GC; > libxl__ao_device *aodev = pas->aodev; > libxl_domid domid = pas->domid; > - libxl_device_pci *pci = aodev->device_config; > + libxl_device_pci *pci = pas->pci; > > if (rc) { > LOGD(ERROR, domid,
diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c index 41e4b2b571..77edd27345 100644 --- a/tools/libs/light/libxl_pci.c +++ b/tools/libs/light/libxl_pci.c @@ -1074,7 +1074,7 @@ typedef struct pci_add_state { libxl__ev_qmp qmp; libxl__ev_time timeout; libxl_device_pci *pci; - int pci_domid; + libxl_domid pci_domid; } pci_add_state; static void pci_add_qemu_trad_watch_state_cb(libxl__egc *egc, @@ -1091,7 +1091,6 @@ static void pci_add_dm_done(libxl__egc *, static void do_pci_add(libxl__egc *egc, libxl_domid domid, - libxl_device_pci *pci, pci_add_state *pas) { STATE_AO_GC(pas->aodev->ao); @@ -1101,7 +1100,6 @@ static void do_pci_add(libxl__egc *egc, /* init pci_add_state */ libxl__xswait_init(&pas->xswait); libxl__ev_qmp_init(&pas->qmp); - pas->pci = pci; pas->pci_domid = domid; libxl__ev_time_init(&pas->timeout); @@ -1564,13 +1562,10 @@ void libxl__device_pci_add(libxl__egc *egc, uint32_t domid, int stubdomid = 0; pci_add_state *pas; - /* Store *pci to be used by callbacks */ - aodev->device_config = pci; - aodev->device_type = &libxl__pci_devtype; - GCNEW(pas); pas->aodev = aodev; pas->domid = domid; + pas->pci = pci; pas->starting = starting; pas->callback = device_pci_add_stubdom_done; @@ -1624,9 +1619,10 @@ void libxl__device_pci_add(libxl__egc *egc, uint32_t domid, GCNEW(pci_s); libxl_device_pci_init(pci_s); libxl_device_pci_copy(CTX, pci_s, pci); + pas->pci = pci_s; pas->callback = device_pci_add_stubdom_wait; - do_pci_add(egc, stubdomid, pci_s, pas); /* must be last */ + do_pci_add(egc, stubdomid, pas); /* must be last */ return; } @@ -1681,9 +1677,8 @@ static void device_pci_add_stubdom_done(libxl__egc *egc, int i; /* Convenience aliases */ - libxl__ao_device *aodev = pas->aodev; libxl_domid domid = pas->domid; - libxl_device_pci *pci = aodev->device_config; + libxl_device_pci *pci = pas->pci; if (rc) goto out; @@ -1718,7 +1713,7 @@ static void device_pci_add_stubdom_done(libxl__egc *egc, pci->vdevfn = orig_vdev; } pas->callback = device_pci_add_done; - do_pci_add(egc, domid, pci, pas); /* must be last */ + do_pci_add(egc, domid, pas); /* must be last */ return; } } @@ -1734,7 +1729,7 @@ static void device_pci_add_done(libxl__egc *egc, EGC_GC; libxl__ao_device *aodev = pas->aodev; libxl_domid domid = pas->domid; - libxl_device_pci *pci = aodev->device_config; + libxl_device_pci *pci = pas->pci; if (rc) { LOGD(ERROR, domid,