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

Re: [Xen-devel] [PATCH] qemu-trad: stop using the default IOREQ server



Paul Durrant writes ("[PATCH] qemu-trad: stop using the default IOREQ server"):
> Because qemu-trad is using the legacy HVM param mechanism of hooking into
> Xen, it means that Xen has to maintain the notion of a 'default' IOREQ
> server which is where all I/O goes if no other device model claims it.
> Maintaining this code in Xen has a cost and it would be good if the project
> no longer had to pay it.
> 
> This patch makes the necessary minimal changes to the qemu-trad to use the
> IOREQ server API to hook into Xen. This means the default IOREQ server
> will no longer be in use and thus it no longer needs to be maintained.

That is a good thing.

I looked overr the patch.  Most of it is about what I would have
expected.

But I did want to query this:

> +    case IOREQ_TYPE_PCI_CONFIG: {
> +        uint32_t sbdf = req->addr >> 32;
> +        uint32_t val;
> +
> +        /* Fake out to 0xcf8 */
> +        val = (1u << 31) |
> +            ((req->addr & 0x0f00) << 16) |
> +            ((sbdf & 0xffff) << 8) |
> +            (req->addr & 0xfc);
> +        do_outp(env, 0xcf8, 4, val);
> +
> +        /* Now fake I/O to 0xcfc */
> +        req->addr = 0xcfc | (req->addr & 0x03);
> +        cpu_ioreq_pio(env, req);
> +        break;
> +    }

This looks messy.  Can someone please explain why this is needed and
why it is best to do it this way ?

(I'm don't know much about PCI, which is probably a contributory
factor in my querying this.  Sorry about that.)

Regards,
Ian.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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