Hi Mario, On Fri, Dec 29, 2023 at 08:30:00PM -0600, Mario Limonciello wrote: > On 12/28/2023 21:57, Takashi Sakamoto wrote: > > @@ -3527,6 +3534,45 @@ static const struct fw_card_driver ohci_driver = { > > .stop_iso = ohci_stop_iso, > > }; > > +// On PCI Express Root Complex in any type of AMD Ryzen machine, VIA VT6306/6307/6308 with Asmedia > > +// ASM1083/1085 brings an inconvenience that read accesses to 'Isochronous Cycle Timer' register > > +// (at offset 0xf0 in PCI I/O space) often causes unexpected system reboot. The mechanism is not > > +// clear, since the read access to the other registers is enough safe; e.g. 'Node ID' register, > > +// while it is probable due to detection of any type of PCIe error. > > +#if IS_ENABLED(CONFIG_X86) > > + > > +#define PCI_DEVICE_ID_ASMEDIA_ASM108X 0x1080 > > + > > +static bool detect_vt630x_with_asm1083_on_amd_ryzen_machine(const struct pci_dev *pdev, > > + struct fw_ohci *ohci) > > +{ > > + const struct pci_dev *pcie_to_pci_bridge; > > + const struct cpuinfo_x86 *cinfo = &cpu_data(0); > > + > > + // Detect any type of AMD Ryzen machine. > > + if (cinfo->x86_vendor != X86_VENDOR_AMD || cinfo->x86 < 0x17) > > + return false; > > Maybe it's better to use X86_FEATURE_ZEN? Indeed. We can use it under the condition branch for CONFIG_X86, like: + // Detect any type of AMD Ryzen machine. + if (!static_cpu_has(X86_FEATURE_ZEN)) + return false; Thanks Takashi Sakamoto