All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Chen, Tiejun" <tiejun.chen@intel.com>
To: Ian Jackson <Ian.Jackson@eu.citrix.com>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Wei Liu <wei.liu2@citrix.com>,
	Ian Campbell <ian.campbell@citrix.com>,
	xen-devel@lists.xen.org
Subject: Re: [v7][PATCH 11/16] tools/libxl: detect and avoid conflicts with RDM
Date: Fri, 10 Jul 2015 11:19:55 +0800	[thread overview]
Message-ID: <559F39DB.8030106@intel.com> (raw)
In-Reply-To: <21918.47614.887667.234848@mariner.uk.xensource.com>

> I have found a few things in this patch which I would like to see
> improved.  See below.
>
> Given how late I am with this review, I do not feel that I should be
> nacking it at this time.  You have a tools ack from Wei, so my
> comments are not a blocker for this series.
>
> But if you need to respin, please take these comments into account,
> and consider which are feasible to fix in the time available.  If you
> are respinning this series targeting Xen 4.7 or later, please address
> all of the points I make below.

Thanks for your comments and looks I should address them now.

>
> Thanks.
>
>
>> +int libxl__domain_device_construct_rdm(libxl__gc *gc,
>> +                                       libxl_domain_config *d_config,
>> +                                       uint64_t rdm_mem_boundary,
>> +                                       struct xc_hvm_build_args *args)
> ...
>> +    uint64_t highmem_end = args->highmem_end ? args->highmem_end : (1ull\
> <<32);
> ...
>> +    if (strategy == LIBXL_RDM_RESERVE_STRATEGY_IGNORE && !d_config->num_\
> pcidevs)
>
> There are quite a few of these long lines, which should be wrapped.
> See tools/libxl/CODING_STYLE.

Sorry I can't found any case to what you're talking.

So are you saying this?

if (strategy == LIBXL_RDM_RESERVE_STRATEGY_IGNORE &&
     !d_config->num_pcidevs)
Or

@@ -143,6 +143,15 @@ static bool overlaps_rdm(uint64_t start, uint64_t 
memsize,
  }

  /*
+ * Check whether any rdm should be exposed..
+ * Returns true if needs, else returns false.
+ */
+static bool exposes_rdm(uint32_t strategy, int num_pcidevs)
+{
+    return strategy == LIBXL_RDM_RESERVE_STRATEGY_IGNORE && !num_pcidevs;
+}
+
+/*
   * Check reported RDM regions and handle potential gfn conflicts according
   * to user preferred policy.
   *
@@ -182,7 +191,7 @@ int libxl__domain_device_construct_rdm(libxl__gc *gc,
      uint64_t highmem_end = args->highmem_end ? args->highmem_end : 
(1ull<<32);

      /* Might not expose rdm. */
-    if (strategy == LIBXL_RDM_RESERVE_STRATEGY_IGNORE && 
!d_config->num_pcidevs)
+    if (exposes_rdm(strategy, d_config->num_pcidevs))
          return 0;

      /* Query all RDM entries in this platform */


>
>> +        d_config->num_rdms = nr_entries;
>> +        d_config->rdms = libxl__realloc(NOGC, d_config->rdms,
>> +                        d_config->num_rdms * sizeof(libxl_device_rdm));
>
> This code is remarkably similar to a function later on which adds an
> rdm.  Please can you factor it out.

Do you mean I should merge them as one as possible?

But seems not be possible because we have seveal combinations of these 
two conditions, strategy = LIBXL_RDM_RESERVE_STRATEGY_HOST and one or 
pci devices are also passes through.

#1. strategy = LIBXL_RDM_RESERVE_STRATEGY_HOST but without any devices

So it appropriately needs this libxl__realloc() here. The second 
libxl__realloc() doesn't take any effect.

#2. strategy = LIBXL_RDM_RESERVE_STRATEGY_HOST with one or more devices

Actually we don't need the second libxl__realloc(). This is same as #1.

#3. strategy != LIBXL_RDM_RESERVE_STRATEGY_HOST also with one or more 
devices

So we just need the second libxl__realloc() later. The fist 
libxl__realloc() doesn't be called at all. Especially, its very possible 
we're going to handle less RDMs, compared to 
LIBXL_RDM_RESERVE_STRATEGY_HOST.

>
>> +    } else
>> +        d_config->num_rdms = 0;
>
> Please can you put { } around the else block too.  I don't think this
> mixed style is good.

Fixed.

>
>> +        for (j = 0; j < d_config->num_rdms; j++) {
>> +            if (d_config->rdms[j].start ==
>> +                         (uint64_t)xrdm[0].start_pfn << XC_PAGE_SHIFT)
>
> This construct
>     (uint64_t)some_pfn << XC_PAGE_SHIFT
> appears an awful lot.
>
> I would prefer it if it were done in an inline function (or maybe a
> macro).

Like this?

#define AAAA(x) ((uint64_t)x << XC_PAGE_SHIFT)

Sorry I can't figure out a good name here :) Any suggestions?

>
>
>> +    libxl_domain_build_info *const info = &d_config->b_info;
>> +    /*
>> +     * Currently we fix this as 2G to guarantte how to handle
>                                           ^^^^^^^^^
>
> Should read "guarantee".

Fixed.

>
>> +    ret = libxl__domain_device_construct_rdm(gc, d_config,
>> +                                             rdm_mem_boundary,
>> +                                             &args);
>> +    if (ret) {
>> +        LOG(ERROR, "checking reserved device memory failed");
>> +        goto out;
>> +    }
>
> `rc' should be used here rather than `ret'.  (It is unfortunate that
> this function has poor style already, but it would be best not to make
> it worse.)
>

I can do this but according to tools/libxl/CODING_STYLE, looks I should 
first post a separate patch to fix this code style issue, and then 
rebase my patch, right?

Thanks
TIejun

  reply	other threads:[~2015-07-10  3:19 UTC|newest]

Thread overview: 119+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-09  5:33 [v7][PATCH 00/16] Fix RMRR Tiejun Chen
2015-07-09  5:33 ` [v7][PATCH 01/16] xen: introduce XENMEM_reserved_device_memory_map Tiejun Chen
2015-07-09  5:33 ` [v7][PATCH 02/16] xen/vtd: create RMRR mapping Tiejun Chen
2015-07-09  5:33 ` [v7][PATCH 03/16] xen/passthrough: extend hypercall to support rdm reservation policy Tiejun Chen
2015-07-10 13:26   ` George Dunlap
2015-07-10 15:01     ` Jan Beulich
2015-07-10 15:07       ` George Dunlap
2015-07-13  6:37         ` Chen, Tiejun
2015-07-13  5:57       ` Chen, Tiejun
2015-07-13  6:47     ` Chen, Tiejun
2015-07-13  8:57       ` Jan Beulich
2015-07-14 10:46       ` George Dunlap
2015-07-14 10:53         ` Chen, Tiejun
2015-07-14 11:30           ` George Dunlap
2015-07-14 11:45             ` Jan Beulich
2015-07-14 13:25               ` George Dunlap
2015-07-09  5:33 ` [v7][PATCH 04/16] xen: enable XENMEM_memory_map in hvm Tiejun Chen
2015-07-09  5:33 ` [v7][PATCH 05/16] hvmloader: get guest memory map into memory_map[] Tiejun Chen
2015-07-10 13:49   ` George Dunlap
2015-07-13  7:03     ` Chen, Tiejun
2015-07-09  5:33 ` [v7][PATCH 06/16] hvmloader/pci: skip reserved ranges Tiejun Chen
2015-07-13 13:12   ` Jan Beulich
2015-07-14  6:39     ` Chen, Tiejun
2015-07-14  9:27       ` Jan Beulich
2015-07-14 10:54         ` Chen, Tiejun
2015-07-14 11:50           ` Jan Beulich
2015-07-15  0:55             ` Chen, Tiejun
2015-07-15  4:27               ` Chen, Tiejun
2015-07-15  8:34                 ` Jan Beulich
2015-07-15  8:59                   ` Chen, Tiejun
2015-07-15  9:10                     ` Chen, Tiejun
2015-07-15  9:27                     ` Jan Beulich
2015-07-15 10:34                       ` Chen, Tiejun
2015-07-15 11:25                         ` Jan Beulich
2015-07-15 11:34                           ` Chen, Tiejun
2015-07-15 13:56                             ` George Dunlap
2015-07-15 16:14                               ` George Dunlap
2015-07-16  2:05                                 ` Chen, Tiejun
2015-07-16  9:40                                   ` George Dunlap
2015-07-16 10:01                                     ` Chen, Tiejun
2015-07-15 11:05                       ` George Dunlap
2015-07-15 11:20                         ` Chen, Tiejun
2015-07-15 12:43                           ` George Dunlap
2015-07-15 13:23                             ` Chen, Tiejun
2015-07-15 11:24                         ` Jan Beulich
2015-07-15 11:38                           ` George Dunlap
2015-07-15 11:27                         ` Jan Beulich
2015-07-15 11:40                           ` Chen, Tiejun
2015-07-15  8:32               ` Jan Beulich
2015-07-15  9:04                 ` Chen, Tiejun
2015-07-15 12:57                 ` Wei Liu
2015-07-15 13:40     ` George Dunlap
2015-07-15 14:00       ` Jan Beulich
2015-07-15 15:19         ` George Dunlap
2015-07-09  5:33 ` [v7][PATCH 07/16] hvmloader/e820: construct guest e820 table Tiejun Chen
2015-07-13 13:35   ` Jan Beulich
2015-07-14  5:22     ` Chen, Tiejun
2015-07-14  9:32       ` Jan Beulich
2015-07-14 10:22         ` Chen, Tiejun
2015-07-14 10:48           ` Jan Beulich
2015-07-15 16:00   ` George Dunlap
2015-07-16  1:58     ` Chen, Tiejun
2015-07-16  9:41       ` George Dunlap
2015-07-09  5:33 ` [v7][PATCH 08/16] tools/libxc: Expose new hypercall xc_reserved_device_memory_map Tiejun Chen
2015-07-09  5:34 ` [v7][PATCH 09/16] tools: extend xc_assign_device() to support rdm reservation policy Tiejun Chen
2015-07-09  5:34 ` [v7][PATCH 10/16] tools: introduce some new parameters to set rdm policy Tiejun Chen
2015-07-09  9:20   ` Wei Liu
2015-07-09  9:44     ` Chen, Tiejun
2015-07-09 10:37       ` Ian Jackson
2015-07-09 10:53         ` Chen, Tiejun
2015-07-09 18:02   ` Ian Jackson
2015-07-10  0:46     ` Chen, Tiejun
2015-07-09  5:34 ` [v7][PATCH 11/16] tools/libxl: detect and avoid conflicts with RDM Tiejun Chen
2015-07-09  9:11   ` Wei Liu
2015-07-09  9:41     ` Chen, Tiejun
2015-07-09 18:14   ` Ian Jackson
2015-07-10  3:19     ` Chen, Tiejun [this message]
2015-07-10 10:14       ` Ian Jackson
2015-07-13  9:19         ` Chen, Tiejun
2015-07-09  5:34 ` [v7][PATCH 12/16] tools: introduce a new parameter to set a predefined rdm boundary Tiejun Chen
2015-07-09 18:14   ` Ian Jackson
2015-07-09  5:34 ` [v7][PATCH 13/16] libxl: construct e820 map with RDM information for HVM guest Tiejun Chen
2015-07-09 18:17   ` Ian Jackson
2015-07-10  5:40     ` Chen, Tiejun
2015-07-10  9:18       ` Ian Campbell
2015-07-13  9:47         ` Chen, Tiejun
2015-07-13 10:15           ` Ian Campbell
2015-07-14  5:44             ` Chen, Tiejun
2015-07-14  7:42               ` Ian Campbell
2015-07-14  8:03                 ` Chen, Tiejun
2015-07-10 10:15       ` Ian Jackson
2015-07-09  5:34 ` [v7][PATCH 14/16] xen/vtd: enable USB device assignment Tiejun Chen
2015-07-09  5:34 ` [v7][PATCH 15/16] xen/vtd: prevent from assign the device with shared rmrr Tiejun Chen
2015-07-13 13:41   ` Jan Beulich
2015-07-14  1:42     ` Chen, Tiejun
2015-07-14  9:19       ` Jan Beulich
2015-07-09  5:34 ` [v7][PATCH 16/16] tools: parse to enable new rdm policy parameters Tiejun Chen
2015-07-09 18:23   ` Ian Jackson
2015-07-10  6:05     ` Chen, Tiejun
2015-07-10 10:23       ` Ian Jackson
2015-07-13  9:31         ` Chen, Tiejun
2015-07-13  9:40           ` Ian Campbell
2015-07-13  9:55             ` Chen, Tiejun
2015-07-13 10:17               ` Ian Campbell
2015-07-13 17:08                 ` Ian Jackson
2015-07-14  1:29                   ` Chen, Tiejun
2015-07-10 14:50 ` [v7][PATCH 00/16] Fix RMRR George Dunlap
2015-07-10 14:56   ` Jan Beulich
2015-07-16  7:55   ` Jan Beulich
2015-07-16  8:03     ` Chen, Tiejun
2015-07-16  8:08       ` Jan Beulich
2015-07-16  8:13         ` Chen, Tiejun
2015-07-16  8:26           ` Jan Beulich
2015-07-16  9:27             ` George Dunlap
2015-07-16  9:44               ` Jan Beulich
2015-07-16  9:59                 ` George Dunlap
2015-07-16  8:30         ` Ian Campbell
2015-07-16  8:46           ` Wei Liu
2015-07-16  9:45           ` Lars Kurth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=559F39DB.8030106@intel.com \
    --to=tiejun.chen@intel.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.