Message ID | 156077922319.433243.609897156640506891.stgit@bahia.lan (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | xics/kvm: Improve error handling | expand |
On 17/06/2019 15:47, Greg Kurz wrote: > Make xics_kvm_disconnect() able to undo the changes of a partial execution > of xics_kvm_connect() and use it to perform rollback. > > Note that kvmppc_define_rtas_kernel_token(0) never fails, no matter the > RTAS call has been defined or not. > > Signed-off-by: Greg Kurz <groug@kaod.org> Reviewed-by: Cédric Le Goater <clg@kaod.org> Thanks, C. > --- > hw/intc/xics_kvm.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c > index 4bfbe1a84092..51433b19b076 100644 > --- a/hw/intc/xics_kvm.c > +++ b/hw/intc/xics_kvm.c > @@ -421,10 +421,7 @@ int xics_kvm_connect(SpaprMachineState *spapr, Error **errp) > > fail: > error_propagate(errp, local_err); > - kvmppc_define_rtas_kernel_token(0, "ibm,set-xive"); > - kvmppc_define_rtas_kernel_token(0, "ibm,get-xive"); > - kvmppc_define_rtas_kernel_token(0, "ibm,int-on"); > - kvmppc_define_rtas_kernel_token(0, "ibm,int-off"); > + xics_kvm_disconnect(spapr, NULL); > return -1; > } > > @@ -448,8 +445,10 @@ void xics_kvm_disconnect(SpaprMachineState *spapr, Error **errp) > * removed from the list of devices of the VM. The VCPU presenters > * are also detached from the device. > */ > - close(kernel_xics_fd); > - kernel_xics_fd = -1; > + if (kernel_xics_fd != -1) { > + close(kernel_xics_fd); > + kernel_xics_fd = -1; > + } > > kvmppc_define_rtas_kernel_token(0, "ibm,set-xive"); > kvmppc_define_rtas_kernel_token(0, "ibm,get-xive"); >
On Mon, Jun 17, 2019 at 03:47:03PM +0200, Greg Kurz wrote: > Make xics_kvm_disconnect() able to undo the changes of a partial execution > of xics_kvm_connect() and use it to perform rollback. > > Note that kvmppc_define_rtas_kernel_token(0) never fails, no matter the > RTAS call has been defined or not. > > Signed-off-by: Greg Kurz <groug@kaod.org> Applied, thanks. > --- > hw/intc/xics_kvm.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c > index 4bfbe1a84092..51433b19b076 100644 > --- a/hw/intc/xics_kvm.c > +++ b/hw/intc/xics_kvm.c > @@ -421,10 +421,7 @@ int xics_kvm_connect(SpaprMachineState *spapr, Error **errp) > > fail: > error_propagate(errp, local_err); > - kvmppc_define_rtas_kernel_token(0, "ibm,set-xive"); > - kvmppc_define_rtas_kernel_token(0, "ibm,get-xive"); > - kvmppc_define_rtas_kernel_token(0, "ibm,int-on"); > - kvmppc_define_rtas_kernel_token(0, "ibm,int-off"); > + xics_kvm_disconnect(spapr, NULL); > return -1; > } > > @@ -448,8 +445,10 @@ void xics_kvm_disconnect(SpaprMachineState *spapr, Error **errp) > * removed from the list of devices of the VM. The VCPU presenters > * are also detached from the device. > */ > - close(kernel_xics_fd); > - kernel_xics_fd = -1; > + if (kernel_xics_fd != -1) { > + close(kernel_xics_fd); > + kernel_xics_fd = -1; > + } > > kvmppc_define_rtas_kernel_token(0, "ibm,set-xive"); > kvmppc_define_rtas_kernel_token(0, "ibm,get-xive"); >
diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c index 4bfbe1a84092..51433b19b076 100644 --- a/hw/intc/xics_kvm.c +++ b/hw/intc/xics_kvm.c @@ -421,10 +421,7 @@ int xics_kvm_connect(SpaprMachineState *spapr, Error **errp) fail: error_propagate(errp, local_err); - kvmppc_define_rtas_kernel_token(0, "ibm,set-xive"); - kvmppc_define_rtas_kernel_token(0, "ibm,get-xive"); - kvmppc_define_rtas_kernel_token(0, "ibm,int-on"); - kvmppc_define_rtas_kernel_token(0, "ibm,int-off"); + xics_kvm_disconnect(spapr, NULL); return -1; } @@ -448,8 +445,10 @@ void xics_kvm_disconnect(SpaprMachineState *spapr, Error **errp) * removed from the list of devices of the VM. The VCPU presenters * are also detached from the device. */ - close(kernel_xics_fd); - kernel_xics_fd = -1; + if (kernel_xics_fd != -1) { + close(kernel_xics_fd); + kernel_xics_fd = -1; + } kvmppc_define_rtas_kernel_token(0, "ibm,set-xive"); kvmppc_define_rtas_kernel_token(0, "ibm,get-xive");
Make xics_kvm_disconnect() able to undo the changes of a partial execution of xics_kvm_connect() and use it to perform rollback. Note that kvmppc_define_rtas_kernel_token(0) never fails, no matter the RTAS call has been defined or not. Signed-off-by: Greg Kurz <groug@kaod.org> --- hw/intc/xics_kvm.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)