From: Alexander Graf <agraf@suse.de>
To: Bhushan Bharat-R65777 <R65777@freescale.com>
Cc: Wood Scott-B07421 <B07421@freescale.com>,
"kvm-ppc@vger.kernel.org" <kvm-ppc@vger.kernel.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: Re: [PATCH v2] booke: Added ONE_REG interface for IAC/DAC debug registers
Date: Tue, 24 Jul 2012 14:46:27 +0200 [thread overview]
Message-ID: <500E9923.8070504@suse.de> (raw)
In-Reply-To: <6A3DF150A5B70D4F9B66A25E3F7C888D03DD61E6@039-SN2MPN1-023.039d.mgd.msft.net>
On 07/24/2012 03:04 AM, Bhushan Bharat-R65777 wrote:
>
>> -----Original Message-----
>> From: Alexander Graf [mailto:agraf@suse.de]
>> Sent: Monday, July 23, 2012 11:12 PM
>> To: Bhushan Bharat-R65777
>> Cc: Wood Scott-B07421; kvm-ppc@vger.kernel.org; kvm@vger.kernel.org
>> Subject: Re: [PATCH v2] booke: Added ONE_REG interface for IAC/DAC debug
>> registers
>>
>> On 07/23/2012 05:48 PM, Bhushan Bharat-R65777 wrote:
>>>> -----Original Message-----
>>>> From: Wood Scott-B07421
>>>> Sent: Monday, July 23, 2012 9:12 PM
>>>> To: Bhushan Bharat-R65777
>>>> Cc: kvm-ppc@vger.kernel.org; agraf@suse.de; kvm@vger.kernel.org;
>>>> Bhushan Bharat-
>>>> R65777
>>>> Subject: Re: [PATCH v2] booke: Added ONE_REG interface for IAC/DAC
>>>> debug registers
>>>>
>>>> On 07/23/2012 06:19 AM, Bharat Bhushan wrote:
>>>>> IAC/DAC are defined as 32 bit while they are 64 bit wide. So ONE_REG
>>>>> interface is added to set/get them.
>>>>>
>>>>> Signed-off-by: Bharat Bhushan <bharat.bhushan@freescale.com>
>>>>> ---
>>>>> v2:
>>>>> - Using copy_to/from_user() apis.
>>>>>
>>>>> arch/powerpc/include/asm/kvm.h | 12 ++++++
>>>>> arch/powerpc/include/asm/kvm_host.h | 28 ++++++++++++++-
>>>>> arch/powerpc/kvm/booke.c | 64
>> +++++++++++++++++++++++++++++++++-
>>>>> arch/powerpc/kvm/booke_emulate.c | 8 ++--
>>>>> 4 files changed, 104 insertions(+), 8 deletions(-)
>>>>>
>>>>> diff --git a/arch/powerpc/include/asm/kvm.h
>>>>> b/arch/powerpc/include/asm/kvm.h index 1bea4d8..3c14202 100644
>>>>> --- a/arch/powerpc/include/asm/kvm.h
>>>>> +++ b/arch/powerpc/include/asm/kvm.h
>>>>> @@ -221,6 +221,12 @@ struct kvm_sregs {
>>>>>
>>>>> __u32 dbsr; /* KVM_SREGS_E_UPDATE_DBSR */
>>>>> __u32 dbcr[3];
>>>>> + /*
>>>>> + * iac/dac registers are 64bit wide, while this API
>>>>> + * interface provides only lower 32 bits on 64 bit
>>>>> + * processors. ONE_REG interface is added for 64bit
>>>>> + * iac/dac registers.
>>>>> + */
>>>>> __u32 iac[4];
>>>>> __u32 dac[2];
>>>>> __u32 dvc[2];
>>>>> @@ -326,5 +332,11 @@ struct kvm_book3e_206_tlb_params { };
>>>>>
>>>>> #define KVM_REG_PPC_HIOR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x1)
>>>>> +#define KVM_REG_PPC_IAC1 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x2)
>>>>> +#define KVM_REG_PPC_IAC2 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x3)
>>>>> +#define KVM_REG_PPC_IAC3 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x4)
>>>>> +#define KVM_REG_PPC_IAC4 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x5)
>>>>> +#define KVM_REG_PPC_DAC1 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x6)
>>>>> +#define KVM_REG_PPC_DAC2 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x7)
>>>>>
>>>>> #endif /* __LINUX_KVM_POWERPC_H */ diff --git
>>>>> a/arch/powerpc/include/asm/kvm_host.h
>>>>> b/arch/powerpc/include/asm/kvm_host.h
>>>>> index 43cac48..2c0f015 100644
>>>>> --- a/arch/powerpc/include/asm/kvm_host.h
>>>>> +++ b/arch/powerpc/include/asm/kvm_host.h
>>>>> @@ -342,6 +342,31 @@ struct kvmppc_slb {
>>>>> bool class : 1;
>>>>> };
>>>>>
>>>>> +#ifdef CONFIG_BOOKE
>>>>> +# ifdef CONFIG_PPC_FSL_BOOK3E
>>>>> +#define KVMPPC_IAC_NUM 2
>>>>> +#define KVMPPC_DAC_NUM 2
>>>>> +# else
>>>>> +#define KVMPPC_IAC_NUM 4
>>>>> +#define KVMPPC_DAC_NUM 2
>>>>> +# endif
>>>>> +#define KVMPPC_MAX_IAC 4
>>>>> +#define KVMPPC_MAX_DAC 2
>>>>> +#endif
>>>>> +
>>>>> +struct kvmppc_debug_reg {
>>>>> +#ifdef CONFIG_BOOKE
>>>>> + u32 dbcr0;
>>>>> + u32 dbcr1;
>>>>> + u32 dbcr2;
>>>>> +#ifdef CONFIG_KVM_E500MC
>>>>> + u32 dbcr4;
>>>>> +#endif
>>>>> + u64 iac[KVMPPC_MAX_IAC];
>>>>> + u64 dac[KVMPPC_MAX_DAC];
>>>>> +#endif
>>>>> +};
>>>> Is there any reason for this to be a separate struct?
>>> No specific reason, The rest of debug ( which will follow sometime soon) uses
>> this structure and looks to make code look easy.
>>
>> So why not use an fsl / booke specific struct for the debug patches then? Debug
>> registers are really nothing common between book3s and booke, so we shouldn't
>> treat them as such by using the same struct definition.
>>
> All elements of struct are under #ifdef CONFIG_BOOKE? So for book3s it is as good as void, only struct type if declared. Do you want the struct type also under config_booke ?
struct kvmppc_booke_debug_reg {
<lots of defines>
};
struct kvmppc_book3s_debug_reg {
<lots of other defines>
};
void booke_foo() {
struct kvmppc_booke_debug_reg r;
r.dbcr0 = 0;
}
vs
struct kvmppc_debug_reg {
#ifdef CONFIG_BOOKE
<lots of defines>
#else
<lots of other defines>
#endif
};
void booke_foo() {
struct kvmppc_debug_reg r;
r.dbcr0 = 0;
}
Which one has less #ifdefs? Keep in mind that the less #ifdefs you have,
the more readable and maintainable your code becomes, because config
options have less effect on your syntax.
Alex
next prev parent reply other threads:[~2012-07-24 12:46 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-23 11:19 [PATCH v2] booke: Added ONE_REG interface for IAC/DAC debug registers Bharat Bhushan
2012-07-23 15:42 ` Scott Wood
2012-07-23 15:48 ` Bhushan Bharat-R65777
2012-07-23 16:02 ` Scott Wood
2012-07-23 17:41 ` Alexander Graf
2012-07-24 1:04 ` Bhushan Bharat-R65777
2012-07-24 12:46 ` Alexander Graf [this message]
2012-07-24 13:26 ` Bhushan Bharat-R65777
2012-07-24 14:56 ` Alexander Graf
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=500E9923.8070504@suse.de \
--to=agraf@suse.de \
--cc=B07421@freescale.com \
--cc=R65777@freescale.com \
--cc=kvm-ppc@vger.kernel.org \
--cc=kvm@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox