[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] HVMlite ABI specification DRAFT B + implementation outline
>>> On 09.02.16 at 14:00, <roger.pau@xxxxxxxxxx> wrote: > El 9/2/16 a les 13:10, Jan Beulich ha escrit: >>>>> On 09.02.16 at 12:58, <roger.pau@xxxxxxxxxx> wrote: >>> El 9/2/16 a les 11:56, Andrew Cooper ha escrit: >>>> On 08/02/16 19:03, Roger Pau Monnà wrote: >>>>> * PCI Express MMCFG: if Xen is able to identify any of these regions at > boot >>>>> time they will also be made available to the guest at the same position >>>>> in it's physical memory map. It is possible that Xen will trap >>>>> accesses > to >>>>> those regions, but a guest should be able to use the native >>>>> configuration >>>>> mechanism in order to interact with this configuration space. If the >>>>> hardware domain reports the presence of any of those regions using the >>>>> PHYSDEVOP_pci_mmcfg_reserved hypercall Xen will also all guest access >>>>> to >>>>> them. >>>>> >>>>> * PCI BARs: it's not possible for Xen to know the position of the BARs of >>>>> the PCI devices without hardware domain interaction. >>>> >>>> Xen requires no dom0 interaction to find all information like this for >>>> devices in segment 0 (i.e. all current hardware). Segments other than 0 >>>> may have their MMCONF regions expressed in AML only. >>> >>> Thanks for the comments, please bear with me. I think we are mixing two >>> things here, one is the MMCFG areas, and the other one are the BARs of >>> each PCI device. >>> >>> AFAIK MMCFG areas are described in the 'MCFG' ACPI table, which is >>> static and Xen should be able to parse on it's own. Then I'm not sure >>> why PHYSDEVOP_pci_mmcfg_reserved is needed at all. >> >> Because there are safety nets: Xen and Linux consult the memory >> map to determine whether actually using what the firmware say is >> an MMCFG area is actually safe. Linux in addition checks ACPI >> tables, and this is what Xen can't do (as it require an AML >> interpreter), hence the hypercall to inform the hypervisor. > > Hm, I guess I'm overlooking something, but I think Xen checks the ACPI > tables, see xen/arch/x86/x86_64/mmconfig-shared.c:400: > > if (pci_mmcfg_check_hostbridge()) { > unsigned int i; > > pci_mmcfg_arch_init(); > for (i = 0; i < pci_mmcfg_config_num; ++i) > if (pci_mmcfg_arch_enable(i)) > valid = 0; > } else { > acpi_table_parse(ACPI_SIG_MCFG, acpi_parse_mcfg); > pci_mmcfg_arch_init(); > valid = pci_mmcfg_reject_broken(); > } > > Which AFAICT suggests that Xen is indeed able to parse the 'MCFG' table, > which contains the list of MMCFG regions on the system. Is there any > other ACPI table where this information is reported that I'm missing? You didn't read my reply carefully enough: I didn't say Xen can't parse these tables. What I said is that Xen isn't by itself in the position to do sanity checks that have proven necessary. Hence ... > This would suggest then that the hypercall is no longer needed. ... it's needed - see Linux'es is_mmconf_reserved() which checks both E820 and data read from DSDT (and maybe SSDT). Also please don't forget about the hotplug case, where _CBA methods need evaluation in order to obtain address information. >>> Then for BARs you need to know the specific PCI devices, which are >>> enumerated in the DSDT or similar ACPI tables, which are not static, and >>> thus cannot be parsed by Xen. We could do a brute force scan of the >>> whole PCI bus using the config registers, but that seems hacky. And as >>> Boris said we need to keep the usage of PHYSDEVOP_pci_device_add in >>> order to notify Xen of the PXM information. >> >> We can only be sure to have access to segment 0 at boot time. >> Other segments may be accessible via MMCFG only, and whether >> we can safely use the respective MMCFG we won't know - see >> above - early enough. That's also the reason why today we do a >> brute force scan only on segment 0. > > Andrew suggested that all current hardware only uses segment 0, so it > seems like covering segment 0 is all that's needed for now. Are OSes > already capable of dealing with segments different than 0 that only > support MMCFG accesses? Of course - Linux for example. I've actually seen Linux (and Xen) run on a system with multiple segments. > And in which case, if a segment != 0 appears, and it only supports MMCFG > accesses, the MCFG table should contain an entry for this area, which > should allow us to properly scan it. See above. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |