pcib allocation failure
deeptech71 at gmail.com
deeptech71 at gmail.com
Sun May 22 17:20:41 UTC 2011
On Sat, May 21, 2011 at 3:59 PM, deeptech71 at gmail.com
<deeptech71 at gmail.com> wrote:
> On Thu, May 19, 2011 at 11:35 PM, John Baldwin <jhb at freebsd.org> wrote:
>> Index: pci_pci.c
>> ===================================================================
>> --- pci_pci.c (revision 222093)
>> +++ pci_pci.c (working copy)
>> @@ -162,8 +162,13 @@ pcib_write_windows(struct pcib_softc *sc, int mask
>> {
>> device_t dev;
>> uint32_t val;
>> + uint16_t cmd;
>>
>> dev = sc->dev;
>> + cmd = pci_read_config(dev, PCIR_COMMAND, 2);
>> + if (cmd & (PCIM_CMD_PORTEN | PCIM_CMD_MEMEN))
>> + pci_write_config(dev, PCIR_COMMAND,
>> + cmd & ~(PCIM_CMD_PORTEN | PCIM_CMD_MEMEN), 2);
>> if (sc->io.valid && mask & WIN_IO) {
>> val = pci_read_config(dev, PCIR_IOBASEL_1, 1);
>> if ((val & PCIM_BRIO_MASK) == PCIM_BRIO_32) {
>> @@ -192,6 +197,8 @@ pcib_write_windows(struct pcib_softc *sc, int mask
>> pci_write_config(dev, PCIR_PMBASEL_1, sc->pmem.base >> 16, 2);
>> pci_write_config(dev, PCIR_PMLIMITL_1, sc->pmem.limit >> 16, 2);
>> }
>> + if (cmd & (PCIM_CMD_PORTEN | PCIM_CMD_MEMEN))
>> + pci_write_config(dev, PCIR_COMMAND, cmd, 2);
>> }
>>
>> static void
>> @@ -231,7 +238,9 @@ pcib_alloc_window(struct pcib_softc *sc, struct pc
>> w->name, (uintmax_t)w->base, (uintmax_t)w->limit);
>> w->base = max_address;
>> w->limit = 0;
>> +#if 0
>> pcib_write_windows(sc, w->mask);
>> +#endif
>> return;
>> }
>> pcib_activate_window(sc, type);
>
> that seems to work.
oops, i forgot to set the AGP aperture size to 128M during testing.
that patch actually does NOT work.
More information about the freebsd-current
mailing list