I think something is messed up with those USB ports on G505s too, because I have to use irqpoll on them in Qubes. I have the BKDG for AMD 15h. Where can I find the appropriate IRQ routings for the G505s's chipset?
Build a coreboot for G505S with CONFIG_DEBUG_PIRQ and see the warning/error messages. To me, it seems that - to fix the interrupts - first of all we need to convert the stuff like irq_tables.c from a G505S "legacy style" ( i.e. pirq_info function ) to AM1I-A "new style" ( i.e. intel_irq_routing_table structure ). On another fam15h board (A88XM-E) and most likely on G505S too, if CONFIG_DEBUG_PIRQ is enabled, this "legacy style" code is giving bad warning like "Can't write PCI IRQ assignments because mainboard_pirq_data structure does not exist" and i.e. KolibriOS can't see the interrupt numbers at all. While, on fam16h AM1I-A board, "new style" code seems to work fine - "Finished writing PCI config space IRQ assignments" - and KolibriOS sees the interrupt numbers OK. Maybe using KolibriOS as an indicator seems irrelevant, however to me its' a sign that "new style" code for interrupt routing is better quality, and maybe simply converting G505S interrupts code from "legacy style" to "new style" alone should fix them.
Sadly no fam15h boards have a "new style" interrupt routing code: if to search like " find . -type f -name "irq_tables.c" -print0 | xargs -0 grep -n "intel_irq_routing_table" ", only fam14h and fam16h boards appear. But I don't expect it to be too difficult: i.e. AM1I-A fam16h code is based on ASRock IMB-A180 according to d777c78 commit message, and the conversion went OK, also fam15h and 16h are similar enough except the vendorcode. I suggest doing " git reset --hard d777c78 " , " kdiff3 ./src/mainboard/asrock/imb-a180/ ./src/mainboard/biostar/am1ml/ & " , and applying the same logic while converting a G505S code. I don't have the time to do this conversion myself (spent all holidays working on coreboot and they ran out), but if you succeed in this I will happily review your change.
Best regards, Mike Banon
I have taken a look on the irq_tables files for almost all AMD boards and what I noticed is that the tables define a bridge device 14.4 as a router and old SBXXX device/vendor ID. To me it looks like a copy-paste from very old code base. I am going to look into that soon if I find some spare time.
I also wonder why the boards are not using intel_irq_routing_table that describe the devices and their corresponding IRQs instead.
Regards, Michał
On 08.01.2020 12:16, Mike Banon wrote:
I think something is messed up with those USB ports on G505s too, because I have to use irqpoll on them in Qubes. I have the BKDG for AMD 15h. Where can I find the appropriate IRQ routings for the G505s's chipset?
Build a coreboot for G505S with CONFIG_DEBUG_PIRQ and see the warning/error messages. To me, it seems that - to fix the interrupts - first of all we need to convert the stuff like irq_tables.c from a G505S "legacy style" ( i.e. pirq_info function ) to AM1I-A "new style" ( i.e. intel_irq_routing_table structure ). On another fam15h board (A88XM-E) and most likely on G505S too, if CONFIG_DEBUG_PIRQ is enabled, this "legacy style" code is giving bad warning like "Can't write PCI IRQ assignments because mainboard_pirq_data structure does not exist" and i.e. KolibriOS can't see the interrupt numbers at all. While, on fam16h AM1I-A board, "new style" code seems to work fine - "Finished writing PCI config space IRQ assignments" - and KolibriOS sees the interrupt numbers OK. Maybe using KolibriOS as an indicator seems irrelevant, however to me its' a sign that "new style" code for interrupt routing is better quality, and maybe simply converting G505S interrupts code from "legacy style" to "new style" alone should fix them.
Sadly no fam15h boards have a "new style" interrupt routing code: if to search like " find . -type f -name "irq_tables.c" -print0 | xargs -0 grep -n "intel_irq_routing_table" ", only fam14h and fam16h boards appear. But I don't expect it to be too difficult: i.e. AM1I-A fam16h code is based on ASRock IMB-A180 according to d777c78 commit message, and the conversion went OK, also fam15h and 16h are similar enough except the vendorcode. I suggest doing " git reset --hard d777c78 " , " kdiff3 ./src/mainboard/asrock/imb-a180/ ./src/mainboard/biostar/am1ml/ & " , and applying the same logic while converting a G505S code. I don't have the time to do this conversion myself (spent all holidays working on coreboot and they ran out), but if you succeed in this I will happily review your change.
Best regards, Mike Banon _______________________________________________ coreboot mailing list -- coreboot@coreboot.org To unsubscribe send an email to coreboot-leave@coreboot.org