RE: [PATCH v2] booke: Added ONE_REG interface for IAC/DAC debug registers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Alexander Graf [mailto:agraf@xxxxxxx]
> Sent: Monday, July 23, 2012 11:12 PM
> To: Bhushan Bharat-R65777
> Cc: Wood Scott-B07421; kvm-ppc@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx
> 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@xxxxxxxxxxxxxxx; agraf@xxxxxxx; kvm@xxxxxxxxxxxxxxx;
> >> 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@xxxxxxxxxxxxx>
> >>> ---
> >>> 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 ?

Thanks
-Bharat

��.n��������+%������w��{.n�����o�^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux