[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: [Qemu-devel] [PATCH RFC V3 05/12] piix_pci: Introduces Xen specific call for irq.



On Fri, 17 Sep 2010, Blue Swirl wrote:

> On Fri, Sep 17, 2010 at 11:15 AM,  <anthony.perard@xxxxxxxxxx> wrote:
> > From: Anthony PERARD <anthony.perard@xxxxxxxxxx>
> >
> > This patch introduces Xen specific call in piix_pci.
> >
> > The specific part for Xen is in write_config, set_irq and get_pirq.
> >
> > Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> > ---
> > Âhw/piix_pci.c | Â 10 +++++++++-
> > Âhw/xen.h   Â|  Â6 ++++++
> > Âxen-all.c   |  29 +++++++++++++++++++++++++++++
> > Âxen-stub.c  Â|  13 +++++++++++++
> > Â4 files changed, 57 insertions(+), 1 deletions(-)

[...]

> > diff --git a/xen-all.c b/xen-all.c
> > index f505563..948e439 100644
> > --- a/xen-all.c
> > +++ b/xen-all.c
> > @@ -8,9 +8,38 @@
> >
> > Â#include "config.h"
> >
> > +#include "hw/pci.h"
> > Â#include "hw/xen_common.h"
> > Â#include "hw/xen_backend.h"
> >
> > +/* Xen specific function for piix pci */
> > +
> > +int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num)
> > +{
> > + Â Âreturn irq_num + ((pci_dev->devfn >> 3) << 2);
> > +}
> > +
> > +void xen_piix3_set_irq(void *opaque, int irq_num, int level)
> > +{
> > + Â Âxc_hvm_set_pci_intx_level(xen_xc, xen_domid, 0, 0, irq_num >> 2,
> > + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Âirq_num & 3, level);
> > +}
> > +
> > +void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int 
> > len)
>
> address should be target_phys_addr_t.

I use the same type as for PCIConfigWriteFunc, and address is uint32_t.
But I can change if it's necessary.

> > +{
> > + Â Âint i;
> > +
> > + Â Â/* Scan for updates to PCI link routes (0x60-0x63). */
> > + Â Âfor (i = 0; i < len; i++) {
> > + Â Â Â Âuint8_t v = (val >> (8*i)) & 0xff;
>
> Please add spaces around '*'.
>
> > + Â Â Â Âif (v & 0x80)
>
> braces
>
> > + Â Â Â Â Â Âv = 0;
> > + Â Â Â Âv &= 0xf;
> > + Â Â Â Âif (((address+i) >= 0x60) && ((address+i) <= 0x63))
>
> Braces and spaces around '+'.
>
> > + Â Â Â Â Â Âxc_hvm_set_pci_link_route(xen_xc, xen_domid, address + i - 
> > 0x60, v);
> > + Â Â}
> > +}
> > +
> > Â/* Initialise Xen */
> >
> > Âint xen_init(int smp_cpus)
> > diff --git a/xen-stub.c b/xen-stub.c
> > index 0fa9c51..07e64bc 100644
> > --- a/xen-stub.c
> > +++ b/xen-stub.c
> > @@ -11,6 +11,19 @@
> > Â#include "qemu-common.h"
> > Â#include "hw/xen.h"
> >
> > +int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num)
> > +{
> > + Â Âreturn -1;
> > +}
> > +
> > +void xen_piix3_set_irq(void *opaque, int irq_num, int level)
> > +{
> > +}
> > +
> > +void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int 
> > len)
>
> Also here the address should be target_phys_addr_t.

-- 
Anthony PERARD
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.