Hello Michael,

On Thu, Oct 21, 2021, 19:55 Michael <macal...@netbsd.org> wrote:

> Hello,
>
> On Wed, 20 Oct 2021 08:26:25 +0000
> Riza Dindir <riza.din...@gmail.com> wrote:
>
> > I am using NetBSD 9.2 (amd64). I have a laptop that has a radeon r7
> > m265 video card (vendor 0x1002, product 0x6604). The system does not
> > recognize this card. It fails with this message:
> >
> > kern error:
> [drm:(/export/netbsd/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c:725)radeon_get_bios]
> > *ERROR* Unable to locate a BIOS ROM
> > radeon0: autoconfiguration error: error: Fatal error during GPU init
> > radeon0: autoconfiguration error: unable to attach drm: 22
> >
> > I wanted to see if I can read the bios of that card and added some
> > test functions to the file mentioned above. The code is as such:
> >
> >   pci_conf_capture(rdev->pdev->pd_pa.pa_pc, rdev->pdev->pd_pa.pa_tag,
> >       &conf);
> >
> >   address = PCI_MAPREG_ROM_ADDR(conf.reg[12]);
> >   size = PCI_MAPREG_ROM_SIZE(address);
> >   DRM_INFO("rom addr: %x, rom size: %lu\n", address, size);
> >
> >   result = bus_space_map(rdev->pdev->pd_pa.pa_memt,
> >       PCI_MAPREG_ROM_ADDR(address),
> >       size, BUS_SPACE_MAP_LINEAR | BUS_SPACE_MAP_PREFETCHABLE, &romh);
> >   DRM_INFO("result of bus_space_map(): %d\n", result);
> >
> >   bios = (uint8_t *)bus_space_vaddr(rdev->pdev->pd_pa.pa_memt,
> >       romh);
> >   DRM_INFO("bios: %p\n", bios);
> >   if (bios != NULL) {
> >     DRM_INFO("bios[0]: %X, bios[1]: %X\n", bios[0], bios[1]);
> >   } else {
> >     DRM_INFO("bios was NULL\n");
> >   }
> >
> > The bus_space_map function returns code 35. Maybe I am doing something
> > wrong in the code when I try to read the "expansion rom" of the pci
> > card. Anyone has an idea? How should I read the "expansion rom" of a
> > PCI card?
>
> Is there something sensible in the ROM BAR? If it's NULL the
>

The rom bar register has a value of fffe0000. That means the rim decoder is
not enabled i think.

bus_space_map() would fail. It also needs to be enabled in the BAR,
> which it may or may not be already. Then pray that your chip has
>

You mean the first bit (bit 0) should be 1 to enable the rom. Right?

If the address is the address i gave above and the rom decoder enable is
set to true (or 1), then the bus_space_map must succeed. Will try that.

separate decoders for ROM and regular BARs - the specs allow them to
> share one which would mean you can not access the rest of the card if
> the ROM is enabled - you're meant to turn it on, copy the ROM's
> content, turn it off and run the BIOS from RAM.
> Finally, I've seen laptops with no separate graphics BIOS at all...
>
> have fun
> Michael
>

Reply via email to