[coreboot] Resource Allocation discussion

Myles Watson mylesgw at gmail.com
Tue Dec 2 20:03:52 CET 2008


On Tue, Dec 2, 2008 at 11:44 AM, Marc Jones <marcj303 at gmail.com> wrote:

> On Tue, Dec 2, 2008 at 6:57 AM, Myles Watson <mylesgw at gmail.com> wrote:
> >
> >
> >> -----Original Message-----
> >> From: Marc Jones [mailto:marcj303 at gmail.com]
> >> Sent: Monday, December 01, 2008 10:42 PM
> >> To: Myles Watson
> >> Cc: Coreboot
> >> Subject: Re: [coreboot] Resource Allocation discussion
> >>
> >> Hi Myles,
> >> I will try to help..... :)
> >>
> >> On Mon, Dec 1, 2008 at 2:37 PM, Myles Watson <mylesgw at gmail.com> wrote:
> >> > The resource patches I submitted work fairly well, but still need a
> >> little
> >> > help.
> >> >
> >> > I haven't touched subtractively decoded resources, and that's where
> the
> >> > breakage is right now.
> >> >
> >> > Questions:
> >> > - Who should have a resource that moves all other IO resources above
> >> 0x400
> >> > or 0x1000?
> >>
> >> What do you mean? By definition the subtractive port takes all
> >> unclaimed cycles. There should be a LPC or ISA bridge in the
> >> southbridge that forwards cycles that the legacy southbridge devices
> >> don't claim.
> >
> > Sorry.  I wasn't clear enough again.  What I meant was something more
> like:
> >
> > Since the resource allocation algorithm can't avoid resources that it
> > doesn't know about, who decides if the subtractive area to avoid is
> > 0x0-0x400, 0x0-0x1000, or some other range?  If I declare some device to
> > hold these addresses so that no other resource ends up there, should it
> be
> > subtractive?  I'm inclined to put it in the domain or in the SuperIO.
>
> I think it belongs in the southbridge lpc/isa device which is in the
> domain. It should be 0x0-0x1000.


So like this? For qemu:

static void i82371eb_isa_read_resources(struct device *dev)
{
    struct resource *res;
    res = new_resource(dev, IOINDEX_SUBTRACTIVE(0,0));
    res->base = 0x0UL;
    res->size = 0x1000UL;
    res->limit = 0xFFFUL;
    res->flags = IORESOURCE_MEM | IORESOURCE_SUBTRACTIVE |
             IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
}

static void i82371eb_isa_set_resources(struct device *dev)
{
    struct resource *res;
    res = probe_resource(dev, IOINDEX_SUBTRACTIVE(0,0));
    res->flags |= IORESOURCE_STORED;
    pci_set_resources(dev);
}

Thanks for the help.

Myles
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20081202/761d1d62/attachment.html>


More information about the coreboot mailing list