[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 1/7] VT-d: parse ACPI "SoC Integrated Address Translation Cache Reporting Structure"s
On Mon, Feb 12, 2024 at 10:32:00AM +0100, Jan Beulich wrote: > On 09.02.2024 10:00, Roger Pau Monné wrote: > > On Thu, Feb 08, 2024 at 04:29:34PM +0100, Jan Beulich wrote: > >> On 08.02.2024 10:17, Roger Pau Monné wrote: > >>> On Mon, Feb 05, 2024 at 02:55:17PM +0100, Jan Beulich wrote: > >>>> + { > >>>> + dprintk(XENLOG_WARNING VTDPREFIX, > >>>> + " Non-existent device (%pp) is reported in SATC > >>>> scope!\n", > >>>> + &PCI_SBDF(satcu->segment, b, d, f)); > >>>> + ignore = true; > >>> > >>> This is kind of reporting is incomplete: as soon as one device is > >>> found the loop is exited and no further detection happens. If we want > >>> to print such information, we should do the full scan and avoid > >>> exiting early when a populated device is detected. > >> > >> Not sure I follow, but first of all - these are dprintk()s only, so > >> meant to only help in dev environments. Specifically ... > >> > >>>> + } > >>>> + else > >>>> + { > >>>> + ignore = false; > >>>> + break; > >>>> + } > >>>> + } > >>>> + > >>>> + if ( ignore ) > >>>> + { > >>>> + dprintk(XENLOG_WARNING VTDPREFIX, > >>>> + " Ignore SATC for seg %04x as no device under its scope > >>>> is PCI discoverable!\n", > >> > >> ... this message is then issued only bogus entries were found. IOW > >> when a real device was found, there's no real reason to report N > >> other bogus ones, I think. > > > > I guess it's a question of taste. I do find it odd (asymmetric > > maybe?) that we stop reporting non-existing devices once a valid > > device is found. Makes me wonder what's the point of reporting them > > in the first place, if the list of non-existing devices is not > > complete? > > Since you look to not be taking this into account, let me re-emphasize > that these are dprintk() only. In the event of an issue, seeing the > log messages you at least get a hint of one device that poses a > problem. That may or may not be enough of an indication for figuring > what's wrong. Making the loop run for longer than necessary when > especially in a release build there's not going to be any change (but > the logic would become [slightly] more complex, as after setting > "ignore" to true we'd need to avoid clearing it back to false) is just > pointless imo. IOW I view this 1st message as merely a courtesy for > the case where the 2nd one would end up also being logged. I will not insist anymore. > >>>> + satcu = xzalloc(struct acpi_satc_unit); > >>>> + if ( !satcu ) > >>>> + return -ENOMEM; > >>>> + > >>>> + satcu->segment = satc->segment; > >>>> + satcu->atc_required = satc->flags & 1; > >>> > >>> I would add this as a define in actbl2.h: > >>> > >>> #define ACPI_DMAR_ATC_REQUIRED (1U << 0) > >>> > >>> Or some such (maybe just using plain 1 is also fine). > >> > >> I intended to do so, but strictly staying in line with what Linux has. > >> To my surprise they use a literal number and have no #define. Hence I > >> didn't add any either. > > > > I would prefer the define unless you have strong objections, even if > > that means diverging from Linux. > > I could probably accept such a #define living in one of dmar.[ch]. I'd > rather not see it go into actbl2.h. Fine. I think the current open coding of 1 in Linux is wrong. Other flag fields in DMAR structures have the related defines. Thanks, Roger.
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |