Forcing PCI-PCI bridge to have memory resources

Forcing PCI-PCI bridge to have memory resources

Post by Bret Indrele » Fri, 17 Jan 2003 01:20:15



I'm working with Linux version 2.4.18-xfs with hotswap support.

I'm trying to make a PCI-PCI bridge always have a minimum of 1MB of
memory address space allocated to it. I know that the BIOS we are
using always (correctly, by spec) sets a bridge with no devices behind
it to disable the memory window. It does this by setting the
MEM_LIMIT < MEM_BASE.

I've been going through the sources in drivers/pci, trying to figure
out how things are set up. At the time of the pci scan, the resources
are usually initialized (in bci_read_breidge_bases) by doing a read of
the bridge registers and setting the resource values appropropriately.

For the disabled bridges, the resources are copied from the parent
which in this case results in 0 being set in flags, start and end.

It looks like I will want to call pci_assign_resource(dev, 1); in
order to give it a memory window, but I'm not sure how to initialize
the resources so they are assigned correctly.

Our situation is similiar to what a hotswap CPCI system should encounter
when a hotswap device is inserted behind a previously empty PCI-PCI bridge.

Any help people can give would be greatly appreciated.

-Bret

--
Bret Indrelee                 QLogic Corporation

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

Forcing PCI-PCI bridge to have memory resources

Post by Scott Murra » Fri, 17 Jan 2003 08:00:09



> I'm working with Linux version 2.4.18-xfs with hotswap support.

> I'm trying to make a PCI-PCI bridge always have a minimum of 1MB of
> memory address space allocated to it. I know that the BIOS we are
> using always (correctly, by spec) sets a bridge with no devices behind
> it to disable the memory window. It does this by setting the
> MEM_LIMIT < MEM_BASE.

> I've been going through the sources in drivers/pci, trying to figure
> out how things are set up. At the time of the pci scan, the resources
> are usually initialized (in bci_read_breidge_bases) by doing a read of
> the bridge registers and setting the resource values appropropriately.

> For the disabled bridges, the resources are copied from the parent
> which in this case results in 0 being set in flags, start and end.

> It looks like I will want to call pci_assign_resource(dev, 1); in
> order to give it a memory window, but I'm not sure how to initialize
> the resources so they are assigned correctly.

> Our situation is similiar to what a hotswap CPCI system should encounter
> when a hotswap device is inserted behind a previously empty PCI-PCI bridge.

> Any help people can give would be greatly appreciated.

I've some functionality in my 2.4 cPCI code that allows manually
specifying resource reservations for PCI bridges.  I'm about to start
porting it forward to 2.5, but I'll dig out the bits and send you a
2.4.18 patch tomorrow.  If you're impatient, there should be a version
of it in the mailing archives of this list (search for PCI resource
reservation), since I posted it for comment at the end of last summer
sometime.

Scott

--
Scott Murray
SOMA Networks, Inc.
Toronto, Ontario

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

1. Memory leak in Solaris 2.8 kernel PCI-PCI bridge

ddi_getlongprop(9F) allocates the memory to hold the property returned to
the called. In sun4u/io/pci/pci_pci.c the DDI_CTLOPS_NREGS  and
DDI_CTLOPS_REGSIZE operations do not free the memory allocated in this
operation; see about line 361.

        *(int *)result = 0;
        if (ddi_getlongprop(DDI_DEV_T_NONE, rdip,
                DDI_PROP_DONTPASS | DDI_PROP_CANSLEEP, "reg",
                (caddr_t)&drv_regp, &reglen) != DDI_SUCCESS)
                return (DDI_FAILURE);

The fix is to add the following line before the
        return (DDI_SUCCESS);
statement:

        kmem_free(drv_regp, reglen);
        return(DDI_SUCCESS);

--
Nigel Horne. Arranger, Composer, Conductor, Typesetter.
Owner of the brass band group of the Internet. ICQ#20252325

2. PPP HELP: ->tcsetattr:

3. S1692DL Tiger 2 unknown PCI bridge :unknown Host bridge :unknown PCI Device

4. Suggestions for proxy server or address resolution software

5. Configuring PCI<-->PCI bridges behind Cardbus bridges

6. PowerSupply voltage

7. transparent pci-pci bridges fix

8. CD-ROM mounting troubles

9. Resource conflict with AGP or PCI Bridge, MVP3 motherboards and AGP video cards

10. pci bus resources, transparent bridges

11. PCI to PCI Bridge

12. pci to pci bridge

13. transparent PCI-to-PCI bridges