From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Ian Jackson <Ian.Jackson@eu.citrix.com>
Cc: wei.liu2@citrix.com, Ian.Campbell@citrix.com,
stefano.stabellini@eu.citrix.com, xen-devel@lists.xen.org,
JBeulich@suse.com, Chao Peng <chao.p.peng@linux.intel.com>,
keir@xen.org
Subject: Re: [PATCH v2 2/5] tools: add routine to get CMT L3 event mask
Date: Wed, 7 Jan 2015 17:09:28 +0000 [thread overview]
Message-ID: <54AD6848.90807@citrix.com> (raw)
In-Reply-To: <21677.24788.869267.896079@mariner.uk.xensource.com>
On 07/01/15 16:37, Ian Jackson wrote:
> Andrew Cooper writes ("Re: [Xen-devel] [PATCH v2 2/5] tools: add routine to get CMT L3 event mask"):
>> On 07/01/15 11:12, Chao Peng wrote:
>>> +int xc_psr_cmt_get_l3_event_mask(xc_interface *xch, uint32_t *event_mask)
>>> +{
>>> + static int val = 0;
>> This should be uint32_t rather than int.
>>
>> I am somewhat concerned about multithreaded use of libxc, but this is
>> not the first issue in libxc, and probably shouldn't be held against
>> this patch.
> On the contrary, this is quite bad. libxc should be properly
> reentrant and I think it generally is. If you are aware of other
> global variables of this kind please do ...
>
> ... I have just seen that the existing version of xc_psr.c has this
> problem already.
>
> IMO this is a serious bug. Why was it made static before ?
The idea is to caching a constant value from Xen.
>From a quick grep (and not very thorough):
Other culprits are xc_get_max_nodes(), xc_get_max_cpus(), 4 instances in
xc_psr.c and most things in xc_offline_page.c which appears to have
static structures for domain context. The "pluggable loader"
infrastructure in xc_dom.c also appears to be thread-unsafe.
xc_dom_decompress_unsafe.c also uses static data, but "unsafe" in the
name might be a sufficient guard?
There are quite a few files which have static data structures which
appear to be able to get away with being static const, and should
probably move in that direction.
>
>> As the result of the hypercall is going to be the same, the
>> worse that a race could achieve is a wasted hypercall.
> This kind of analysis is unfounded in the presence of modern compilers
> with aggressive optimisations. At the very least, if you're going to
> do some caching like this, it needs a lock around it.
No aggressively optimising compiler is going to perform partial writes
on a naturally aligned integer, so I stand by my comment when applied to
the common case.
A dumb compiler on the other hand might, and C/POSIX make no guarantees
in this regard, so the issue is indeed more serious than my initial
analysis.
~Andrew
next prev parent reply other threads:[~2015-01-07 17:09 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-07 11:12 [PATCH v2 0/5] enable Memory Bandwidth Monitoring (MBM) for VMs Chao Peng
2015-01-07 11:12 ` [PATCH v2 1/5] x86: expose CMT L3 event mask to user space Chao Peng
2015-01-07 11:12 ` [PATCH v2 2/5] tools: add routine to get CMT L3 event mask Chao Peng
2015-01-07 11:27 ` Andrew Cooper
2015-01-07 16:37 ` Ian Jackson
2015-01-07 16:54 ` Wei Liu
2015-01-07 17:04 ` Ian Campbell
2015-01-07 17:09 ` Andrew Cooper [this message]
2015-01-07 21:43 ` Ian Jackson
2015-01-08 3:19 ` Chao Peng
2015-01-07 11:12 ` [PATCH v2 3/5] tools: correct coding style for psr Chao Peng
2015-01-07 11:16 ` Wei Liu
2015-01-07 11:12 ` [PATCH v2 4/5] tools: code refactoring for MBM Chao Peng
2015-01-07 12:15 ` Wei Liu
2015-01-07 11:12 ` [PATCH v2 5/5] tools: add total/local memory bandwith monitoring Chao Peng
2015-01-07 12:23 ` Wei Liu
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=54AD6848.90807@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=JBeulich@suse.com \
--cc=chao.p.peng@linux.intel.com \
--cc=keir@xen.org \
--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.