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
|