Dne 28. 08. 19 v 15:06 Koenig, Christian napsal(a): >> Yeah but sadly it seems it is possible to only increase the BAR size from >> its currently default 256MB. > > Well the specification allows to change the BAR size from 1MB up to > several TB. The key point is we usually use it to increase the BAR size, > but it is perfectly possible to make it smaller as well. >
Yeah but only with the sizes reported in Resizable BAR Capability Register (+0x4). Which in my case contains the value 0x0001f000. The first bit from right is 12, which means 256 MB, 512 MB, ... . So I guess my RX460 doesn't go under 256. Anyway, thanks for help. Petr > Take a look at the function pci_rebar_set_size() for example. You should > be able to use this as something like pci_rebar_set_size(&adev->pdev, 0, > 6) to get a 64MB BAR. > > Alternatively you can try to program the PCIe config space with the > setpci commandline tool. > > Then you need to force a rescan of the PCIe bus so that the kernel can > actually detect the change. > > Regards, > Christian. > > Am 28.08.19 um 14:46 schrieb Petr Cvek: >> Dne 28. 08. 19 v 10:31 Christian König napsal(a): >>> Hi Petr, >>> >>> well that is indeed a rather unusual use case. >>> >>> I'm not 100% sure how you actually hacked the HD4550 to do what you want to >>> do, cause this ASIC generation shouldn't support this. >> I don't remember correctly how exactly I've managed to do that but I think >> the process was: >> >> I compared different BIOSes first and I found a correlation between aperture >> sizes in the ROM images of older (x1300/R520) generation. While doing that >> I've found mentions of MEM_AP_SIZE ROM powerup strap registers (from x.org >> documents) and I tried to flash the settings of HD4550 from 256MB (default) >> directly to 64MB and I was surprised it worked (I've though it will be only >> 128MB). IF I google the "MEM_AP_SIZE" now I can find a document [1], which >> says (page 56) the ROM address is 0x78 (page 56) and the table says 64MB is >> possible, which both match the experiment. >> >> Of course the bios is now CRC broken, but it doesn't matter in linux (the >> ROM code is just x86 anyway). >> >> [1] https://dev.xdevs.com/attachments/download/233/AMD_RV710_ds_nda_1.01b.pdf >> >>> For a Polaris you can just use the PCIe resizeable BAR extension. For how >>> to use it see the pci_resize_resource() function in the linux kernel. >>> >>> Please be aware that we usually use the function to increase the BAR size >>> to allow the CPU to access more of the on board memory, so making it >>> smaller might actually not be tested at all. >> Yeah but sadly it seems it is possible to only increase the BAR size from >> its currently default 256MB. >> >>> Regards, >>> Christian. >>> >>> >>> Am 27.08.19 um 04:36 schrieb Petr Cvek: >>>> Hello, >>>> >>>> I'm trying to run AMD GPUs in unusual configurations. I was able to >>>> decrease the PCI BAR size in HD4550 by its BIOS strap configuration and >>>> change it to 64MB (and I was able to run it on MIPS vocore2 board :-D ). >>>> Is there a similar configuration location for AMD polaris 11/RX 460 BIOS? >>>> >>>> Petr Cvek >>>> _______________________________________________ >>>> amd-gfx mailing list >>>> amd-gfx@lists.freedesktop.org >>>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx > _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx