From: Michael Mueller <mimu@linux.vnet.ibm.com>
To: Richard Henderson <rth@twiddle.net>
Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org,
linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
Gleb Natapov <gleb@kernel.org>, Alexander Graf <agraf@suse.de>,
Christian Borntraeger <borntraeger@de.ibm.com>,
"Jason J. Herne" <jjherne@linux.vnet.ibm.com>,
Cornelia Huck <cornelia.huck@de.ibm.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Andreas Faerber <afaerber@suse.de>
Subject: Re: [Qemu-devel] [RFC PATCH v2 10/15] cpu-model/s390: Add cpu class initialization routines
Date: Fri, 20 Feb 2015 19:59:28 +0100 [thread overview]
Message-ID: <20150220195928.6388e017@bee> (raw)
In-Reply-To: <54E778EB.5050301@twiddle.net>
[-- Attachment #1: Type: text/plain, Size: 1109 bytes --]
On Fri, 20 Feb 2015 10:11:55 -0800
Richard Henderson <rth@twiddle.net> wrote:
> > +static inline uint64_t big_endian_bit(unsigned long nr)
> > +{
> > + return 1ul << (BITS_PER_LONG - (nr % BITS_PER_LONG));
> > +};
>
> This is buggy. NR=0 should map to 63, not 64.
I'm sure I was asked to replace my constant 64 and 63 with that defines and at the end I messed
it up... :-(
>
> > + return !!(*ptr & big_endian_bit(nr));
>
> Personally I dislike !! as an idiom. Given that big_endian_bit isn't used
> anywhere else, can we integrate it and change this to
>
> static inline int test_facility(unsigned long nr, uint64_t *fac_list)
> {
> unsigned long word = nr / BITS_PER_LONG;
> unsigned long be_bit = 63 - (nr % BITS_PER_LONG);
> return (fac_list[word] >> be_bit) & 1;
> }
Yes, I just use it in this context. I will integrate your version.
BTW I changed the whole facility defining code to be generated by an external helper at compile
time. That is more simple and safe to change. I will send it with v3. See attachment for an
example of the generated header file.
Thanks,
Michael
[-- Attachment #2: gen-facilities.h --]
[-- Type: text/x-chdr, Size: 2452 bytes --]
/*
* AUTOMATICALLY GENERATED, DO NOT MODIFY HERE, EDIT
* SOURCE FILE "target-s390x/tools/gen-facilities.c" INSTEAD.
*
* Copyright 2014, 2015 IBM Corp.
*
* This work is licensed under the terms of the GNU GPL, version 2 or (at
* your option) any later version. See the COPYING file in the top-level
* directory.
*/
#ifndef TARGET_S390X_GEN_FACILITIES_H
#define TARGET_S390X_GEN_FACILITIES_H
/* S390 CPU facility defines per CPU model */
#define FAC_LIST_CPU_S390_2064_GA1 0xe000000000000000
#define FAC_LIST_CPU_S390_2064_GA2 0xe000800000000000
#define FAC_LIST_CPU_S390_2064_GA3 0xe000800000000000
#define FAC_LIST_CPU_S390_2066_GA1 0xe000800000000000
#define FAC_LIST_CPU_S390_2084_GA1 0xf000f80000000000
#define FAC_LIST_CPU_S390_2084_GA2 0xf800f80000000000
#define FAC_LIST_CPU_S390_2084_GA3 0xfa00fa0000000000
#define FAC_LIST_CPU_S390_2086_GA1 0xfa00fa0000000000
#define FAC_LIST_CPU_S390_2084_GA4 0xfa00fa0000000000
#define FAC_LIST_CPU_S390_2086_GA2 0xfa00fa0000000000
#define FAC_LIST_CPU_S390_2084_GA5 0xfa00fa0800000000
#define FAC_LIST_CPU_S390_2086_GA3 0xfa00fa0800000000
#define FAC_LIST_CPU_S390_2094_GA1 0xfb00ffcb00000000
#define FAC_LIST_CPU_S390_2094_GA2 0xfb40ffdb80600000
#define FAC_LIST_CPU_S390_2094_GA3 0xfb40ffdb80680000
#define FAC_LIST_CPU_S390_2096_GA1 0xfb40ffdb80680000
#define FAC_LIST_CPU_S390_2096_GA2 0xfb40ffdb80680000
#define FAC_LIST_CPU_S390_2097_GA1 0xfbf0fffbf0780000
#define FAC_LIST_CPU_S390_2097_GA2 0xfbf0fffbf0780000,0x5800000000000000
#define FAC_LIST_CPU_S390_2098_GA1 0xfbf0fffbf0780000,0x5800000000000000
#define FAC_LIST_CPU_S390_2097_GA3 0xfbf0fffbf0f80000,0x5800000000000000
#define FAC_LIST_CPU_S390_2098_GA2 0xfbf0fffbf0f80000,0x5800000000000000
#define FAC_LIST_CPU_S390_2817_GA1 0xfbf0fffbfcfe0000,0x1810000000000000
#define FAC_LIST_CPU_S390_2817_GA2 0xfbf6fffbfcff0000,0x381c000000000000
#define FAC_LIST_CPU_S390_2818_GA1 0xfbf6fffbfcff0000,0x381c000000000000
#define FAC_LIST_CPU_S390_2827_GA1 0xfbf6fffbfcfff800,0x3dde000000000000
#define FAC_LIST_CPU_S390_2827_GA2 0xfbf6fffbfcfff800,0x3dde000000000000
#define FAC_LIST_CPU_S390_2828_GA1 0xfbf6fffbfcfff800,0x3dde000000000000
#define FAC_LIST_CPU_S390_2964_GA1 0xfbf6fffbfcfff800,0x3dde000000000000,0x4000000000000000
/* QEMU facility mask defines */
#define FAC_LIST_CPU_S390_MASK_QEMU 0x0000000000000000,0x0580000000000000
/* Maximum size of generated facility list defines */
#define FAC_LIST_CPU_S390_SIZE_UINT64 3
#endif
next prev parent reply other threads:[~2015-02-20 18:59 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-17 14:23 [RFC PATCH v2 00/15] QEMU: s390: cpu model implementation Michael Mueller
2015-02-17 14:23 ` [RFC PATCH v2 01/15] cpu-model: Introduce probe mode for machine none Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 02/15] cpu-model: Introduce option --probe to switch into probe mode Michael Mueller
2015-02-17 14:24 ` Michael Mueller
2015-02-17 19:16 ` Eric Blake
2015-02-17 19:16 ` [Qemu-devel] " Eric Blake
2015-02-18 9:08 ` Michael Mueller
2015-02-18 9:08 ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 03/15] cpu-model: Introduce stub routine cpu_desc_avail Michael Mueller
2015-02-17 14:24 ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 04/15] cpu-model/s390: Introduce S390 CPU models Michael Mueller
2015-02-17 14:24 ` Michael Mueller
2015-02-20 13:54 ` Alexander Graf
2015-02-20 15:00 ` [Qemu-devel] " Michael Mueller
2015-02-20 15:22 ` Alexander Graf
2015-02-20 15:49 ` Michael Mueller
2015-02-20 16:57 ` Alexander Graf
2015-02-20 17:37 ` Michael Mueller
2015-02-20 17:50 ` Alexander Graf
2015-02-20 19:43 ` Michael Mueller
2015-02-20 19:55 ` Alexander Graf
2015-02-23 12:56 ` Christian Borntraeger
2015-02-23 13:27 ` Christian Borntraeger
2015-02-20 13:55 ` Alexander Graf
2015-02-20 15:02 ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 05/15] cpu-model/s390: Introduce S390 CPU facilities Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 06/15] cpu-model/s390: Define cpu model specific facility lists Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 07/15] cpu-model/s390: Add cpu model alias definition routines Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 08/15] cpu-model/s390: Update linux-headers/asm-s390/kvm.h Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 09/15] cpu-model/s390: Add KVM VM attribute interface routines Michael Mueller
2015-02-20 13:59 ` Alexander Graf
2015-02-20 15:18 ` [Qemu-devel] " Michael Mueller
2015-02-20 16:59 ` Alexander Graf
2015-02-20 18:42 ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 10/15] cpu-model/s390: Add cpu class initialization routines Michael Mueller
2015-02-17 14:24 ` Michael Mueller
2015-02-20 16:02 ` Richard Henderson
2015-02-20 16:12 ` Michael Mueller
2015-02-20 16:12 ` [Qemu-devel] " Michael Mueller
2015-02-20 16:27 ` Michael Mueller
2015-02-20 16:34 ` Andreas Färber
2015-02-20 16:55 ` Michael Mueller
2015-02-20 18:11 ` Richard Henderson
2015-02-20 18:59 ` Michael Mueller [this message]
2015-02-20 19:21 ` [Qemu-devel] " Alexander Graf
2015-02-20 19:35 ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 11/15] cpu-model/s390: Add QMP command query-cpu-model Michael Mueller
2015-02-17 14:24 ` Michael Mueller
2015-02-17 18:03 ` [Qemu-devel] " Eric Blake
2015-02-18 8:39 ` Michael Mueller
2015-02-18 8:39 ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 12/15] cpu-model/s390: Extend QMP command query-cpu-definitions Michael Mueller
2015-02-17 18:09 ` [Qemu-devel] " Eric Blake
2015-02-18 9:29 ` Michael Mueller
2015-02-18 9:29 ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 13/15] cpu-model/s390: Add processor property routines Michael Mueller
2015-02-20 14:03 ` Alexander Graf
2015-02-20 15:32 ` [Qemu-devel] " Michael Mueller
2015-02-20 15:41 ` Andreas Färber
2015-02-20 16:04 ` Michael Mueller
2015-02-20 16:28 ` Andreas Färber
2015-02-20 16:53 ` Michael Mueller
2015-02-20 16:05 ` Michael Mueller
2015-02-20 17:00 ` Alexander Graf
2015-02-20 19:29 ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 14/15] cpu-model/s390: Add cpu model selection routine Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 15/15] cpu-model/s390: Enable S390 cpu model Michael Mueller
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=20150220195928.6388e017@bee \
--to=mimu@linux.vnet.ibm.com \
--cc=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=borntraeger@de.ibm.com \
--cc=cornelia.huck@de.ibm.com \
--cc=gleb@kernel.org \
--cc=jjherne@linux.vnet.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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.