6 Mayıs 2019 Pazartesi 11:43:48 UTC+3 tarihinde Henning Schild yazdı:
> Hi Hakki,
>
> you found the right spot to exclude something from the generally
> blacklisted "reserved" but i still have a few comments, find them
> inline.
>
> Am Sun, 5 May 2019 12:35:49 -0700
> schrieb Hakkı Kurumahmut <[email protected]>:
>
> > While kernel command parameters are intel_iommu=on intremap=on at
> > some machines, cat /proc/iomem shows DMAR region under reserved
> > section. This patch must be done for config creation to complete
> > because of generating DMAR region not found error although it exist.
> > If this patch is not apply, below error is throw by "cell create"
> > command whether intel_iommu On or Off because "reserved" regions are
> > currently excluded from the generated config although DMAR region
> > exists. Thus, DMAR under reserved section must be parsed by parser.
> >
> >
> > if size == 0:
> > raise RuntimeError('DMAR region size cannot be
> > identified.\n' 'Target Linux must run with Intel IOMMU '
> > 'enabled.')
> >
> >
> > git diff
> > diff --git a/pyjailhouse/sysfs_parser.py
> > b/pyjailhouse/sysfs_parser.py index 46c95fc2..70fe8869 100644
> > --- a/pyjailhouse/sysfs_parser.py
> > +++ b/pyjailhouse/sysfs_parser.py
> > @@ -94,14 +94,13 @@ def input_listdir(dir, wildcards):
> >
> >
> > def parse_iomem(pcidevices):
> > - regions = IOMemRegionTree.parse_iomem_tree(
> > - IOMemRegionTree.parse_iomem_file())
> > + dmar_regions = []
> > + regions =
> > IOMemRegionTree.parse_iomem_tree(IOMemRegionTree.parse_iomem_file(),
> > dmar_regions) rom_region = MemRegion(0xc0000, 0xdffff, 'ROMs')
> > add_rom_region = False
>
> This is confusing. I guess parse_iomem_tree should return (regions,
> dmar_regions). Here you mix returning by value and by ref.
In my first code, parse_iomem_tree() method returned (regions, dmar_regions)
but parse_iomem_tree() of return's value is used by list extend method
Below code is not interpreted by Python.
(regions, dmar_regions).extend(IOMemRegionTree.parse_iomem_tree(tree))
Thus, I had to do it as a parameter.
> > ret = []
> > - dmar_regions = []
> > for r in regions:
> > append_r = True
> > # filter the list for MSI-X pages
> > @@ -878,9 +877,27 @@ class IOMemRegionTree:
> >
> > return regions
> >
> > + # find DMAR regions in tree
> > + @staticmethod
> > + def find_dmar_regions(tree):
> > + regions = []
> > +
> > + for tree in tree.children:
> > + r = tree.region
> > + s = r.typestr
> > +
> > + if (s.find('dmar') >= 0):
> > + regions.append(r)
> > +
> > + # if the tree continues recurse further down ...
> > + if (len(tree.children) > 0):
> > +
> > regions.extend(IOMemRegionTree.find_dmar_regions(tree))
> > +
> > + return regions
>
> This is just a copy of find_hpet_regions. I would suggest to change the
> original to i.e. "find_regions_by_name(tree, name)"
>
> And now call that once with name="HPET" and once with name="dmar".
It will prevent repeated coding. good advice.
>
> > # recurse down the tree
> > @staticmethod
> > - def parse_iomem_tree(tree):
> > + def parse_iomem_tree(tree, dmar_regions):
> >
> > regions = []
> >
> > for tree in tree.children:
> > @@ -904,11 +921,12 @@ class IOMemRegionTree:
> >
> > # generally blacklisted, unless we find an HPET behind
>
> This is now incorrect. Change to i.e. "# generally blacklisted, with a
> few exceptions"
> Henning
>
> > it if (s.lower() == 'reserved'):
> > regions.extend(IOMemRegionTree.find_hpet_regions(tree))
> > +
> > dmar_regions.extend(IOMemRegionTree.find_dmar_regions(tree)) continue
> >
> >
> > # if the tree continues recurse further down ...
> > if (len(tree.children) > 0):
> > -
> > regions.extend(IOMemRegionTree.parse_iomem_tree(tree))
> > +
> > regions.extend(IOMemRegionTree.parse_iomem_tree(tree, dmar_regions))
> > continue
> > # add all remaining leaves
> >
> >
> > Example /proc/iomem
> >
> > "intel_iommu=on intremap=on"
> >
> > You can see that dmar0 under Reserved region.
> >
> > ubuntu@ubuntu-HP8300:~$ sudo cat /proc/iomem
> > 00000000-00000fff : Reserved
> > 00001000-0009ffff : System RAM
> > 000a0000-000bffff : PCI Bus 0000:00
> > 000c0000-000ce9ff : Video ROM
> > 000cf000-000cffff : Adapter ROM
> > 000d0000-000d3fff : PCI Bus 0000:00
> > 000d4000-000d7fff : PCI Bus 0000:00
> > 000d8000-000dbfff : PCI Bus 0000:00
> > 000dc000-000dffff : PCI Bus 0000:00
> > 000f0000-000fffff : System ROM
> > 00100000-38ffffff : System RAM
> > 39000000-78ffffff : Reserved
> > 79000000-de35bfff : System RAM
> > de35c000-de365fff : Unknown E820 type
> > de366000-de3e6fff : Reserved
> > de3e7000-de414fff : Unknown E820 type
> > de415000-de93efff : Reserved
> > de93f000-deba4fff : ACPI Non-volatile Storage
> > deba5000-debb5fff : ACPI Tables
> > debb6000-debbefff : ACPI Non-volatile Storage
> > debbf000-debc3fff : ACPI Tables
> > debc4000-dec06fff : ACPI Non-volatile Storage
> > dec07000-deffffff : System RAM
> > df000000-dfffffff : RAM buffer
> > e0000000-feafffff : PCI Bus 0000:00
> > e0000000-efffffff : PCI Bus 0000:01
> > e0000000-efffffff : 0000:01:00.0
> > f0000000-f0000fff : pnp 00:0a
> > f7e00000-f7efffff : PCI Bus 0000:01
> > f7e20000-f7e3ffff : 0000:01:00.0
> > f7f00000-f7f1ffff : 0000:00:19.0
> > f7f00000-f7f1ffff : e1000e
> > f7f20000-f7f2ffff : 0000:00:14.0
> > f7f20000-f7f2ffff : xhci-hcd
> > f7f30000-f7f33fff : 0000:00:1b.0
> > f7f30000-f7f33fff : ICH HD audio
> > f7f35000-f7f350ff : 0000:00:1f.3
> > f7f36000-f7f367ff : 0000:00:1f.2
> > f7f36000-f7f367ff : ahci
> > f7f37000-f7f373ff : 0000:00:1d.0
> > f7f37000-f7f373ff : ehci_hcd
> > f7f38000-f7f383ff : 0000:00:1a.0
> > f7f38000-f7f383ff : ehci_hcd
> > f7f39000-f7f39fff : 0000:00:19.0
> > f7f39000-f7f39fff : e1000e
> > f7f3a000-f7f3afff : 0000:00:16.3
> > f7f3c000-f7f3c00f : 0000:00:16.0
> > f7f3c000-f7f3c00f : mei_me
> > f8000000-fbffffff : PCI MMCONFIG 0000 [bus 00-3f]
> > f8000000-fbffffff : Reserved
> > f8000000-fbffffff : pnp 00:0a
> > fec00000-fec00fff : Reserved
> > fec00000-fec003ff : IOAPIC 0
> > fed00000-fed03fff : Reserved
> > fed00000-fed003ff : HPET 0
> > fed00000-fed003ff : PNP0103:00
> > fed10000-fed17fff : pnp 00:0a
> > fed18000-fed18fff : pnp 00:0a
> > fed19000-fed19fff : pnp 00:0a
> > fed1c000-fed44fff : Reserved
> > fed1c000-fed1ffff : pnp 00:0a
> > fed1f410-fed1f414 : iTCO_wdt.0.auto
> > fed20000-fed3ffff : pnp 00:0a
> > fed40000-fed44fff : pnp 00:00
> > fed40000-fed44fff : TPM
> > fed45000-fed8ffff : pnp 00:0a
> > fed90000-fed93fff : Reserved
> > fed90000-fed90fff : dmar0 *****DMAR is under
> > reserved region, current parser ignores****** fee00000-fee00fff :
> > Local APIC fee00000-fee00fff : Reserved
> > ff000000-ffffffff : Reserved
> > ff000000-ffffffff : INT0800:00
> > ff000000-ffffffff : pnp 00:0a
> > 100000000-21dffffff : System RAM
> > 1fe800000-1ff4031d0 : Kernel code
> > 1ff4031d1-1ffe928ff : Kernel data
> > 200119000-200361fff : Kernel bss
> > 21e000000-21fffffff : RAM buffer
> > ubuntu@ubuntu-HP8300:~$
> >
> >
> > HAKKI
> >
--
You received this message because you are subscribed to the Google Groups
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.