From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Xu Subject: Re: [PATCH kvm-unit-tests 13/17] pci: edu: introduce pci-edu helpers Date: Tue, 8 Nov 2016 01:44:01 +0800 Message-ID: <20161107174401.GK3719@pxdev.xzpeter.org> References: <1477468040-21034-1-git-send-email-peterx@redhat.com> <1477468040-21034-14-git-send-email-peterx@redhat.com> <20161104172448.a2zy5jtpnfh2iomf@kamzik.brq.redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Cc: kvm@vger.kernel.org, rkrcmar@redhat.com, agordeev@redhat.com, jan.kiszka@web.de, pbonzini@redhat.com To: Andrew Jones Return-path: Received: from mx1.redhat.com ([209.132.183.28]:43072 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932426AbcKGRoE (ORCPT ); Mon, 7 Nov 2016 12:44:04 -0500 Content-Disposition: inline In-Reply-To: <20161104172448.a2zy5jtpnfh2iomf@kamzik.brq.redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On Fri, Nov 04, 2016 at 06:24:48PM +0100, Andrew Jones wrote: > On Wed, Oct 26, 2016 at 03:47:16PM +0800, Peter Xu wrote: > > QEMU edu device is a pci device that is originally written for > > educational purpose, however it also suits for IOMMU unit test. Adding > > helpers for this specific device to implement the device logic. > > > > The device supports lots of functions, here only DMA operation is > > supported. > > > > The spec of the device can be found at: > > > > https://github.com/qemu/qemu/blob/master/docs/specs/edu.txt > > > > Signed-off-by: Peter Xu > > --- > > lib/pci-edu.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > lib/pci-edu.h | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 153 insertions(+) > > create mode 100644 lib/pci-edu.c > > create mode 100644 lib/pci-edu.h > > > > diff --git a/lib/pci-edu.c b/lib/pci-edu.c > > new file mode 100644 > > index 0000000..c594e08 > > --- /dev/null > > +++ b/lib/pci-edu.c > > @@ -0,0 +1,74 @@ > > +/* > > + * Edu PCI device. > > + * > > + * Copyright (C) 2016 Red Hat, Inc. > > + * > > + * Authors: > > + * Peter Xu , > > + * > > + * This work is licensed under the terms of the GNU LGPL, version 2 or > > + * later. > > + */ > > + > > +#include "pci-edu.h" > > +#include "asm/barrier.h" > > + > > +/* Return true if alive */ > > +static inline bool edu_check_alive(struct pci_edu_dev *dev) > > +{ > > + static uint32_t live_count = 1; > > + uint32_t value; > > + > > + edu_reg_write(dev, EDU_REG_ALIVE, live_count++); > > + value = edu_reg_read(dev, EDU_REG_ALIVE); > > + return (live_count - 1 == ~value); > > +} > > + > > +int edu_init(struct pci_edu_dev *dev) > > +{ > > + int ret; > > + > > + ret = pci_find_dev(&dev->pci_dev, PCI_VENDOR_ID_QEMU, > > + PCI_DEVICE_ID_EDU); > > + if (ret) > > + return ret; > > Another comment: as I mentioned earlier, I think pci_find_dev should > return a bool. Here too, i.e. edu_init returns true when init > succeeds, else false. The only reason to go with a zero success, > non-zero (negative) failure is if multiple error codes will be > introduced. I don't think that'll happen for kvm-unit-tests though. Ok. Will change pci_find_dev's return code into bool. Thanks, -- peterx