7 Mayıs 2019 Salı 18:06:36 UTC+3 tarihinde Henning Schild yazdı:
> Am Mon, 6 May 2019 12:26:42 -0700
> schrieb Hakkı Kurumahmut <[email protected]>:
> 
> > Hi Henning,
> > 
> > I have write new patch but I have not test it more. But it is more
> > suitable for your advices.
> > 
> 
> That one looks very good and you can propose it with "git format-patch
> --subject prefix PATCHv2" after a few more things. Again comments inline
> 
> > diff --git a/pyjailhouse/sysfs_parser.py b/pyjailhouse/sysfs_parser.py
> > index 46c95fc2..985c1129 100644
> > --- a/pyjailhouse/sysfs_parser.py
> > +++ b/pyjailhouse/sysfs_parser.py
> > @@ -22,6 +22,7 @@ import struct
> >  import os
> >  import fnmatch
> >  
> > +# root_dir = "/home/ubuntu/repos/siemens/jailhouse/data/"
> >  root_dir = "/"
> 
> Do you already know about "jailhouse-config-collect" and the "-r" switch for 
> the config creator?

Thanks useful information.
 
> Needless to say that this should not become part of the patch. The same 
> applies to some whitespace diff and the debug prints.

This is the draft code written to get your opinion. After testing, the 
recommended code was at the bottom of the mail. we can proceed through it.
 
> >  def set_root_dir(dir):
> > @@ -58,6 +59,7 @@
> > inputs['files_intel'].add('/sys/firmware/acpi/tables/DMAR')
> > inputs['files_amd'].add('/sys/firmware/acpi/tables/IVRS') 
> >  
> > +
> >  def check_input_listed(name, optional=False):
> >      set = inputs['files_opt']
> >      if optional is False:
> > @@ -94,14 +96,15 @@ def input_listdir(dir, wildcards):
> >  
> >  
> >  def parse_iomem(pcidevices):
> > -    regions = IOMemRegionTree.parse_iomem_tree(
> > +    dmar_regions = []
> 
> this is already done inside the function and can be skipped
> 
> > +    (regions, dmar_regions) = IOMemRegionTree.parse_iomem_tree(
> >          IOMemRegionTree.parse_iomem_file())
> >  
> >      rom_region = MemRegion(0xc0000, 0xdffff, 'ROMs')
> >      add_rom_region = False
> >  
> >      ret = []
> > -    dmar_regions = []
> > +    
> >      for r in regions:
> >          append_r = True
> >          # filter the list for MSI-X pages
> > @@ -249,9 +252,14 @@ def parse_dmar(pcidevices, ioapics,
> > dmar_regions): if d.iommu is None:
> >                          d.iommu = len(units) - 1
> >              offset += 16 - offset
> > +            print('DRHD: struct_len: %d offset: %2d -> flags: %d
> > segment: %d base: 0x%x ' % (struct_len, offset, flags, segment,
> > base)) + while offset < struct_len:
> >                  (scope_type, scope_len, id, bus, dev, fn) =\
> >                      parse_dmar_devscope(f)
> > +
> > +                print('DevScope: offset: %2d ->  scope_type: %d
> > scope_len: %d id: %d bus: %d dev: %d fn: %d' % (offset, scope_type,
> > scope_len, id, bus, dev, fn)) + # PCI Endpoint Device
> >                  if scope_type == 1:
> >                      assert not (flags & 1)
> > @@ -290,11 +298,15 @@ def parse_dmar(pcidevices, ioapics,
> > dmar_regions): offset += 8 - offset
> >              (base, limit) = struct.unpack('<QQ', f.read(16))
> >              offset += 16
> > +            print('RMRR: struct_len: %d offset: %2d ->  base: 0x%x
> > limit: %d ' % (struct_len, offset, base, limit)) 
> >              comments = []
> >              while offset < struct_len:
> >                  (scope_type, scope_len, id, bus, dev, fn) =\
> >                      parse_dmar_devscope(f)
> > +                
> > +                print('DevScope: offset: %2d ->  scope_type: %d
> > scope_len: %d id: %d bus: %d dev: %d fn: %d' % (offset, scope_type,
> > scope_len, id, bus, dev, fn)) + if scope_type == 1:
> >                      comments.append('PCI device: %02x:%02x.%x' %
> >                                      (bus, dev, fn))
> > @@ -860,21 +872,21 @@ class IOMemRegionTree:
> >  
> >          return root
> >  
> > -    # find HPET regions in tree
> > +    # find specific regions in tree
> >      @staticmethod
> > -    def find_hpet_regions(tree):
> > +    def find_regions_by_name(tree, string):
> >          regions = []
> >  
> >          for tree in tree.children:
> >              r = tree.region
> >              s = r.typestr
> >  
> > -            if (s.find('HPET') >= 0):
> > +            if (s.find(string) >= 0):
> >                  regions.append(r)
> >  
> >              # if the tree continues recurse further down ...
> >              if (len(tree.children) > 0):
> > -
> > regions.extend(IOMemRegionTree.find_hpet_regions(tree))
> > +
> > regions.extend(IOMemRegionTree.find_regions_by_name(tree, string)) 
> >          return regions
> >  
> > @@ -882,6 +894,7 @@ class IOMemRegionTree:
> >      @staticmethod
> >      def parse_iomem_tree(tree):
> >          regions = []
> > +        dmar_regions = []
> >  
> >          for tree in tree.children:
> >              r = tree.region
> > @@ -901,20 +914,23 @@ class IOMemRegionTree:
> >              ):
> >                  continue
> >  
> > -            # generally blacklisted, unless we find an HPET behind it
> > +            # generally blacklisted, with a few exceptions
> >              if (s.lower() == 'reserved'):
> > -
> > regions.extend(IOMemRegionTree.find_hpet_regions(tree))
> > +
> > regions.extend(IOMemRegionTree.find_regions_by_name(tree, 'HPET'))
> > +
> > dmar_regions.extend(IOMemRegionTree.find_regions_by_name(tree,
> > 'dmar')) continue 
> >              # if the tree continues recurse further down ...
> >              if (len(tree.children) > 0):
> > -
> > regions.extend(IOMemRegionTree.parse_iomem_tree(tree))
> > +                (temp_regions, temp_dmar_regions) =
> > IOMemRegionTree.parse_iomem_tree(tree)
> > +                regions.extend(temp_regions)
> > +                dmar_regions.extend(temp_dmar_regions)
> 
> Exactly the pattern i was about to suggest when i saw one previous
> mail ;)
> 
> Looks all good to me and should be turned into a v2.
> 
> Henning
> 
> >                  continue
> >  
> >              # add all remaining leaves
> >              regions.append(r)
> >  
> > -        return regions
> > +        return regions, dmar_regions
> >  
> >  
> >  class IOMMUConfig:
> > 
> >

-- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jailhouse-dev/ca983998-f4b0-4341-9264-091d0fcee183%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to