From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [PATCH] device-assignment: Reset device on system reset Date: Thu, 17 Mar 2011 15:17:50 -0600 Message-ID: <1300396670.3155.9.camel@x201> References: <20110317192923.24889.79288.stgit@s20.home> <20110317211210.GL15007@x200.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, ddutile@redhat.com, bernhard.kohl@nsn.com, libvir-list@redhat.com To: Chris Wright Return-path: Received: from mx1.redhat.com ([209.132.183.28]:46018 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755473Ab1CQVR7 (ORCPT ); Thu, 17 Mar 2011 17:17:59 -0400 In-Reply-To: <20110317211210.GL15007@x200.localdomain> Sender: kvm-owner@vger.kernel.org List-ID: On Thu, 2011-03-17 at 14:12 -0700, Chris Wright wrote: > * Alex Williamson (alex.williamson@redhat.com) wrote: > > static void reset_assigned_device(DeviceState *dev) > > { > > - PCIDevice *d = DO_UPCAST(PCIDevice, qdev, dev); > > + PCIDevice *pci_dev = DO_UPCAST(PCIDevice, qdev, dev); > > + AssignedDevice *adev = DO_UPCAST(AssignedDevice, dev, pci_dev); > > + char reset_file[64]; > > + const char reset[] = "1"; > > + int fd, ret; > > + > > + snprintf(reset_file, sizeof(reset_file), > > + "/sys/bus/pci/devices/0000:%02x:%02x.%01x/reset", > > + adev->host.bus, adev->host.dev, adev->host.func); > > need to consider segment: %04x:..., adev->host.seg, ... Shoot, I ported this over from a code base w/o seg support. Thanks for the catch. > > + /* > > + * Issue a device reset via pci-sysfs. Note that we use write(2) here > > + * and ignore the return value because some kernels have a bug that > > + * returns 0 rather than bytes written on success, sending us into an > > + * infinite retry loop using other write mechanisms. > > + */ > > + fd = open(reset_file, O_WRONLY); > > + if (fd != -1) { > > + ret = write(fd, reset, strlen(reset)); > > + close(fd); > > + } > > This will probably fail when it's managed by libvirt. I expect it > will need some file ownership and security label mgmt added to device > assignement path I expect. Already posted a patch for adding file rights, seems to be sufficient: https://www.redhat.com/archives/libvir-list/2011-March/msg00823.html Thanks, Alex