diff mbox

[01/27] drm/i915/icl: Add initial Icelake definitions.

Message ID 20180109232336.11029-2-paulo.r.zanoni@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Zanoni, Paulo R Jan. 9, 2018, 11:23 p.m. UTC
From: Rodrigo Vivi <rodrigo.vivi@intel.com>

Icelake is a Intel® Processor containing Intel® HD Graphics.

This is just an initial Icelake definition. PCI IDs, Icelake support
and new features coming in following patches.

v2: Add .ddb_size and .has_guc (Michal Wajdeczko).
v3: Add the ICL_FEATURES macro (Kelvin Gardiner).

Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h          |  2 ++
 drivers/gpu/drm/i915/i915_pci.c          | 13 +++++++++++++
 drivers/gpu/drm/i915/intel_device_info.c |  1 +
 drivers/gpu/drm/i915/intel_device_info.h |  2 ++
 4 files changed, 18 insertions(+)

Comments

oscar.mateo@intel.com Jan. 9, 2018, 11:59 p.m. UTC | #1
On 01/09/2018 03:23 PM, Paulo Zanoni wrote:
> From: Rodrigo Vivi <rodrigo.vivi@intel.com>
>
> Icelake is a Intel® Processor containing Intel® HD Graphics.
>
> This is just an initial Icelake definition. PCI IDs, Icelake support
> and new features coming in following patches.
>
> v2: Add .ddb_size and .has_guc (Michal Wajdeczko).
> v3: Add the ICL_FEATURES macro (Kelvin Gardiner).
>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> ---
>   drivers/gpu/drm/i915/i915_drv.h          |  2 ++
>   drivers/gpu/drm/i915/i915_pci.c          | 13 +++++++++++++
>   drivers/gpu/drm/i915/intel_device_info.c |  1 +
>   drivers/gpu/drm/i915/intel_device_info.h |  2 ++
>   4 files changed, 18 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index a689396d0ff6..016920f58ae6 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2595,6 +2595,7 @@ intel_info(const struct drm_i915_private *dev_priv)
>   #define IS_GEMINILAKE(dev_priv)	IS_PLATFORM(dev_priv, INTEL_GEMINILAKE)
>   #define IS_COFFEELAKE(dev_priv)	IS_PLATFORM(dev_priv, INTEL_COFFEELAKE)
>   #define IS_CANNONLAKE(dev_priv)	IS_PLATFORM(dev_priv, INTEL_CANNONLAKE)
> +#define IS_ICELAKE(dev_priv)	IS_PLATFORM(dev_priv, INTEL_ICELAKE)
>   #define IS_MOBILE(dev_priv)	((dev_priv)->info.is_mobile)
>   #define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv) && \
>   				    (INTEL_DEVID(dev_priv) & 0xFF00) == 0x0C00)
> @@ -2706,6 +2707,7 @@ intel_info(const struct drm_i915_private *dev_priv)
>   #define IS_GEN8(dev_priv)	(!!((dev_priv)->info.gen_mask & BIT(7)))
>   #define IS_GEN9(dev_priv)	(!!((dev_priv)->info.gen_mask & BIT(8)))
>   #define IS_GEN10(dev_priv)	(!!((dev_priv)->info.gen_mask & BIT(9)))
> +#define IS_GEN11(dev_priv)	(!!((dev_priv)->info.gen_mask & BIT(10)))
>   
>   #define IS_LP(dev_priv)	(INTEL_INFO(dev_priv)->is_lp)
>   #define IS_GEN9_LP(dev_priv)	(IS_GEN9(dev_priv) && IS_LP(dev_priv))
> diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
> index 36d48422b475..88cd4a3b12f5 100644
> --- a/drivers/gpu/drm/i915/i915_pci.c
> +++ b/drivers/gpu/drm/i915/i915_pci.c
> @@ -579,6 +579,19 @@ static const struct intel_device_info intel_cannonlake_gt2_info __initconst = {
>   	.gt = 2,
>   };
>   
> +#define GEN11_FEATURES \
> +	GEN10_FEATURES, \
> +	.gen = 11, \
> +	.ddb_size = 2048, \
> +	.has_csr = 0
> +
> +static const struct intel_device_info intel_icelake_11_info = {
> +	GEN11_FEATURES,
> +	.platform = INTEL_ICELAKE,
> +	.is_alpha_support = 1,
> +	.has_resource_streamer = 0,
> +};
> +

This needs to change to fit the new GEN features inheritance 
organization recently introduced by Rodrigo (with a GEN11_FEATURES and I 
guess an ICL_11_PLATFORM). Should I go ahead?

>   /*
>    * Make sure any device matches here are from most specific to most
>    * general.  For example, since the Quanta match is based on the subsystem
> diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
> index d28592e43512..a2c16140169f 100644
> --- a/drivers/gpu/drm/i915/intel_device_info.c
> +++ b/drivers/gpu/drm/i915/intel_device_info.c
> @@ -56,6 +56,7 @@ static const char * const platform_names[] = {
>   	PLATFORM_NAME(GEMINILAKE),
>   	PLATFORM_NAME(COFFEELAKE),
>   	PLATFORM_NAME(CANNONLAKE),
> +	PLATFORM_NAME(ICELAKE),
>   };
>   #undef PLATFORM_NAME
>   
> diff --git a/drivers/gpu/drm/i915/intel_device_info.h b/drivers/gpu/drm/i915/intel_device_info.h
> index 49cb27bd04c1..9542018d11d0 100644
> --- a/drivers/gpu/drm/i915/intel_device_info.h
> +++ b/drivers/gpu/drm/i915/intel_device_info.h
> @@ -69,6 +69,8 @@ enum intel_platform {
>   	INTEL_COFFEELAKE,
>   	/* gen10 */
>   	INTEL_CANNONLAKE,
> +	/* gen11 */
> +	INTEL_ICELAKE,
>   	INTEL_MAX_PLATFORMS
>   };
>
Chris Wilson Jan. 10, 2018, 10:15 a.m. UTC | #2
Quoting Paulo Zanoni (2018-01-09 23:23:10)
> From: Rodrigo Vivi <rodrigo.vivi@intel.com>
> 
> Icelake is a Intel® Processor containing Intel® HD Graphics.

One thing to check, is the marketing term now UHD Graphics?
-Chris
Zanoni, Paulo R Jan. 10, 2018, 5:57 p.m. UTC | #3
Em Ter, 2018-01-09 às 15:59 -0800, Oscar Mateo escreveu:
> 
> On 01/09/2018 03:23 PM, Paulo Zanoni wrote:
> > From: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > 
> > Icelake is a Intel® Processor containing Intel® HD Graphics.
> > 
> > This is just an initial Icelake definition. PCI IDs, Icelake
> > support
> > and new features coming in following patches.
> > 
> > v2: Add .ddb_size and .has_guc (Michal Wajdeczko).
> > v3: Add the ICL_FEATURES macro (Kelvin Gardiner).
> > 
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > ---
> >   drivers/gpu/drm/i915/i915_drv.h          |  2 ++
> >   drivers/gpu/drm/i915/i915_pci.c          | 13 +++++++++++++
> >   drivers/gpu/drm/i915/intel_device_info.c |  1 +
> >   drivers/gpu/drm/i915/intel_device_info.h |  2 ++
> >   4 files changed, 18 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_drv.h
> > b/drivers/gpu/drm/i915/i915_drv.h
> > index a689396d0ff6..016920f58ae6 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.h
> > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > @@ -2595,6 +2595,7 @@ intel_info(const struct drm_i915_private
> > *dev_priv)
> >   #define IS_GEMINILAKE(dev_priv)	IS_PLATFORM(dev_priv,
> > INTEL_GEMINILAKE)
> >   #define IS_COFFEELAKE(dev_priv)	IS_PLATFORM(dev_priv,
> > INTEL_COFFEELAKE)
> >   #define IS_CANNONLAKE(dev_priv)	IS_PLATFORM(dev_priv,
> > INTEL_CANNONLAKE)
> > +#define IS_ICELAKE(dev_priv)	IS_PLATFORM(dev_priv,
> > INTEL_ICELAKE)
> >   #define IS_MOBILE(dev_priv)	((dev_priv)->info.is_mobile)
> >   #define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv) && \
> >   				    (INTEL_DEVID(dev_priv) &
> > 0xFF00) == 0x0C00)
> > @@ -2706,6 +2707,7 @@ intel_info(const struct drm_i915_private
> > *dev_priv)
> >   #define IS_GEN8(dev_priv)	(!!((dev_priv)->info.gen_mask &
> > BIT(7)))
> >   #define IS_GEN9(dev_priv)	(!!((dev_priv)->info.gen_mask &
> > BIT(8)))
> >   #define IS_GEN10(dev_priv)	(!!((dev_priv)->info.gen_mask &
> > BIT(9)))
> > +#define IS_GEN11(dev_priv)	(!!((dev_priv)->info.gen_mask &
> > BIT(10)))
> >   
> >   #define IS_LP(dev_priv)	(INTEL_INFO(dev_priv)->is_lp)
> >   #define IS_GEN9_LP(dev_priv)	(IS_GEN9(dev_priv) &&
> > IS_LP(dev_priv))
> > diff --git a/drivers/gpu/drm/i915/i915_pci.c
> > b/drivers/gpu/drm/i915/i915_pci.c
> > index 36d48422b475..88cd4a3b12f5 100644
> > --- a/drivers/gpu/drm/i915/i915_pci.c
> > +++ b/drivers/gpu/drm/i915/i915_pci.c
> > @@ -579,6 +579,19 @@ static const struct intel_device_info
> > intel_cannonlake_gt2_info __initconst = {
> >   	.gt = 2,
> >   };
> >   
> > +#define GEN11_FEATURES \
> > +	GEN10_FEATURES, \
> > +	.gen = 11, \
> > +	.ddb_size = 2048, \
> > +	.has_csr = 0
> > +
> > +static const struct intel_device_info intel_icelake_11_info = {
> > +	GEN11_FEATURES,
> > +	.platform = INTEL_ICELAKE,
> > +	.is_alpha_support = 1,
> > +	.has_resource_streamer = 0,
> > +};
> > +
> 
> This needs to change to fit the new GEN features inheritance 
> organization recently introduced by Rodrigo (with a GEN11_FEATURES
> and I 
> guess an ICL_11_PLATFORM). Should I go ahead?

My understanding is that this is already following the new inheritance
model. There's already a GEN11_FEATURES and it doesn't include an
ICL_11_PLATFORM because it doesn't need to (and CNL also doesn't have a
CNL_PLATFORM). What do you think needs to be changed?

The one thing I do see we lack is the __initconst keyword.


> 
> >   /*
> >    * Make sure any device matches here are from most specific to
> > most
> >    * general.  For example, since the Quanta match is based on the
> > subsystem
> > diff --git a/drivers/gpu/drm/i915/intel_device_info.c
> > b/drivers/gpu/drm/i915/intel_device_info.c
> > index d28592e43512..a2c16140169f 100644
> > --- a/drivers/gpu/drm/i915/intel_device_info.c
> > +++ b/drivers/gpu/drm/i915/intel_device_info.c
> > @@ -56,6 +56,7 @@ static const char * const platform_names[] = {
> >   	PLATFORM_NAME(GEMINILAKE),
> >   	PLATFORM_NAME(COFFEELAKE),
> >   	PLATFORM_NAME(CANNONLAKE),
> > +	PLATFORM_NAME(ICELAKE),
> >   };
> >   #undef PLATFORM_NAME
> >   
> > diff --git a/drivers/gpu/drm/i915/intel_device_info.h
> > b/drivers/gpu/drm/i915/intel_device_info.h
> > index 49cb27bd04c1..9542018d11d0 100644
> > --- a/drivers/gpu/drm/i915/intel_device_info.h
> > +++ b/drivers/gpu/drm/i915/intel_device_info.h
> > @@ -69,6 +69,8 @@ enum intel_platform {
> >   	INTEL_COFFEELAKE,
> >   	/* gen10 */
> >   	INTEL_CANNONLAKE,
> > +	/* gen11 */
> > +	INTEL_ICELAKE,
> >   	INTEL_MAX_PLATFORMS
> >   };
> >   
> 
>
oscar.mateo@intel.com Jan. 10, 2018, 6:08 p.m. UTC | #4
On 01/10/2018 09:57 AM, Paulo Zanoni wrote:
> Em Ter, 2018-01-09 às 15:59 -0800, Oscar Mateo escreveu:
>> On 01/09/2018 03:23 PM, Paulo Zanoni wrote:
>>> From: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>>
>>> Icelake is a Intel® Processor containing Intel® HD Graphics.
>>>
>>> This is just an initial Icelake definition. PCI IDs, Icelake
>>> support
>>> and new features coming in following patches.
>>>
>>> v2: Add .ddb_size and .has_guc (Michal Wajdeczko).
>>> v3: Add the ICL_FEATURES macro (Kelvin Gardiner).
>>>
>>> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
>>> ---
>>>    drivers/gpu/drm/i915/i915_drv.h          |  2 ++
>>>    drivers/gpu/drm/i915/i915_pci.c          | 13 +++++++++++++
>>>    drivers/gpu/drm/i915/intel_device_info.c |  1 +
>>>    drivers/gpu/drm/i915/intel_device_info.h |  2 ++
>>>    4 files changed, 18 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/i915/i915_drv.h
>>> b/drivers/gpu/drm/i915/i915_drv.h
>>> index a689396d0ff6..016920f58ae6 100644
>>> --- a/drivers/gpu/drm/i915/i915_drv.h
>>> +++ b/drivers/gpu/drm/i915/i915_drv.h
>>> @@ -2595,6 +2595,7 @@ intel_info(const struct drm_i915_private
>>> *dev_priv)
>>>    #define IS_GEMINILAKE(dev_priv)	IS_PLATFORM(dev_priv,
>>> INTEL_GEMINILAKE)
>>>    #define IS_COFFEELAKE(dev_priv)	IS_PLATFORM(dev_priv,
>>> INTEL_COFFEELAKE)
>>>    #define IS_CANNONLAKE(dev_priv)	IS_PLATFORM(dev_priv,
>>> INTEL_CANNONLAKE)
>>> +#define IS_ICELAKE(dev_priv)	IS_PLATFORM(dev_priv,
>>> INTEL_ICELAKE)
>>>    #define IS_MOBILE(dev_priv)	((dev_priv)->info.is_mobile)
>>>    #define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv) && \
>>>    				    (INTEL_DEVID(dev_priv) &
>>> 0xFF00) == 0x0C00)
>>> @@ -2706,6 +2707,7 @@ intel_info(const struct drm_i915_private
>>> *dev_priv)
>>>    #define IS_GEN8(dev_priv)	(!!((dev_priv)->info.gen_mask &
>>> BIT(7)))
>>>    #define IS_GEN9(dev_priv)	(!!((dev_priv)->info.gen_mask &
>>> BIT(8)))
>>>    #define IS_GEN10(dev_priv)	(!!((dev_priv)->info.gen_mask &
>>> BIT(9)))
>>> +#define IS_GEN11(dev_priv)	(!!((dev_priv)->info.gen_mask &
>>> BIT(10)))
>>>    
>>>    #define IS_LP(dev_priv)	(INTEL_INFO(dev_priv)->is_lp)
>>>    #define IS_GEN9_LP(dev_priv)	(IS_GEN9(dev_priv) &&
>>> IS_LP(dev_priv))
>>> diff --git a/drivers/gpu/drm/i915/i915_pci.c
>>> b/drivers/gpu/drm/i915/i915_pci.c
>>> index 36d48422b475..88cd4a3b12f5 100644
>>> --- a/drivers/gpu/drm/i915/i915_pci.c
>>> +++ b/drivers/gpu/drm/i915/i915_pci.c
>>> @@ -579,6 +579,19 @@ static const struct intel_device_info
>>> intel_cannonlake_gt2_info __initconst = {
>>>    	.gt = 2,
>>>    };
>>>    
>>> +#define GEN11_FEATURES \
>>> +	GEN10_FEATURES, \
>>> +	.gen = 11, \
>>> +	.ddb_size = 2048, \
>>> +	.has_csr = 0
>>> +
>>> +static const struct intel_device_info intel_icelake_11_info = {
>>> +	GEN11_FEATURES,
>>> +	.platform = INTEL_ICELAKE,
>>> +	.is_alpha_support = 1,
>>> +	.has_resource_streamer = 0,
>>> +};
>>> +
>> This needs to change to fit the new GEN features inheritance
>> organization recently introduced by Rodrigo (with a GEN11_FEATURES
>> and I
>> guess an ICL_11_PLATFORM). Should I go ahead?
> My understanding is that this is already following the new inheritance
> model. There's already a GEN11_FEATURES and it doesn't include an
> ICL_11_PLATFORM because it doesn't need to (and CNL also doesn't have a
> CNL_PLATFORM). What do you think needs to be changed?
>
> The one thing I do see we lack is the __initconst keyword.

As a minimum there is the __initconst keyword and the fact that the .gen 
value is not assigned inside the GENX_FEATURES for any other platform. 
As for the PLATFORM, we can do that now or wait until we need it, I 
guess it doesn't matter.

>
>>>    /*
>>>     * Make sure any device matches here are from most specific to
>>> most
>>>     * general.  For example, since the Quanta match is based on the
>>> subsystem
>>> diff --git a/drivers/gpu/drm/i915/intel_device_info.c
>>> b/drivers/gpu/drm/i915/intel_device_info.c
>>> index d28592e43512..a2c16140169f 100644
>>> --- a/drivers/gpu/drm/i915/intel_device_info.c
>>> +++ b/drivers/gpu/drm/i915/intel_device_info.c
>>> @@ -56,6 +56,7 @@ static const char * const platform_names[] = {
>>>    	PLATFORM_NAME(GEMINILAKE),
>>>    	PLATFORM_NAME(COFFEELAKE),
>>>    	PLATFORM_NAME(CANNONLAKE),
>>> +	PLATFORM_NAME(ICELAKE),
>>>    };
>>>    #undef PLATFORM_NAME
>>>    
>>> diff --git a/drivers/gpu/drm/i915/intel_device_info.h
>>> b/drivers/gpu/drm/i915/intel_device_info.h
>>> index 49cb27bd04c1..9542018d11d0 100644
>>> --- a/drivers/gpu/drm/i915/intel_device_info.h
>>> +++ b/drivers/gpu/drm/i915/intel_device_info.h
>>> @@ -69,6 +69,8 @@ enum intel_platform {
>>>    	INTEL_COFFEELAKE,
>>>    	/* gen10 */
>>>    	INTEL_CANNONLAKE,
>>> +	/* gen11 */
>>> +	INTEL_ICELAKE,
>>>    	INTEL_MAX_PLATFORMS
>>>    };
>>>    
>>
Zanoni, Paulo R Jan. 10, 2018, 6:19 p.m. UTC | #5
Em Qua, 2018-01-10 às 10:15 +0000, Chris Wilson escreveu:
> Quoting Paulo Zanoni (2018-01-09 23:23:10)
> > From: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > 
> > Icelake is a Intel® Processor containing Intel® HD Graphics.
> 
> One thing to check, is the marketing term now UHD Graphics?

Marketing names are not available yet for ICL, and Kernel commit
messages should definitely not be considered reliable for that matter.
From what I can see on ark.intel.com, in the 8th generation everything
is UHD. But, for example, the Iris Plus products on the 7th generation
don't even have "HD" in their names, so I guess we've been misleading
in the previous commit messages too. I'll change the wording so it
doesn't look like we're announcing marketing names.

(also, I'm not a native English speaker, but shouldn't we "s/ a / an /"
there too?)

> -Chris
Rodrigo Vivi Jan. 10, 2018, 6:22 p.m. UTC | #6
On Wed, Jan 10, 2018 at 06:08:21PM +0000, Oscar Mateo wrote:
> 
> 
> On 01/10/2018 09:57 AM, Paulo Zanoni wrote:
> > Em Ter, 2018-01-09 às 15:59 -0800, Oscar Mateo escreveu:
> > > On 01/09/2018 03:23 PM, Paulo Zanoni wrote:
> > > > From: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > > 
> > > > Icelake is a Intel® Processor containing Intel® HD Graphics.
> > > > 
> > > > This is just an initial Icelake definition. PCI IDs, Icelake
> > > > support
> > > > and new features coming in following patches.
> > > > 
> > > > v2: Add .ddb_size and .has_guc (Michal Wajdeczko).
> > > > v3: Add the ICL_FEATURES macro (Kelvin Gardiner).
> > > > 
> > > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > > Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > > ---
> > > >    drivers/gpu/drm/i915/i915_drv.h          |  2 ++
> > > >    drivers/gpu/drm/i915/i915_pci.c          | 13 +++++++++++++
> > > >    drivers/gpu/drm/i915/intel_device_info.c |  1 +
> > > >    drivers/gpu/drm/i915/intel_device_info.h |  2 ++
> > > >    4 files changed, 18 insertions(+)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/i915_drv.h
> > > > b/drivers/gpu/drm/i915/i915_drv.h
> > > > index a689396d0ff6..016920f58ae6 100644
> > > > --- a/drivers/gpu/drm/i915/i915_drv.h
> > > > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > > > @@ -2595,6 +2595,7 @@ intel_info(const struct drm_i915_private
> > > > *dev_priv)
> > > >    #define IS_GEMINILAKE(dev_priv)	IS_PLATFORM(dev_priv,
> > > > INTEL_GEMINILAKE)
> > > >    #define IS_COFFEELAKE(dev_priv)	IS_PLATFORM(dev_priv,
> > > > INTEL_COFFEELAKE)
> > > >    #define IS_CANNONLAKE(dev_priv)	IS_PLATFORM(dev_priv,
> > > > INTEL_CANNONLAKE)
> > > > +#define IS_ICELAKE(dev_priv)	IS_PLATFORM(dev_priv,
> > > > INTEL_ICELAKE)
> > > >    #define IS_MOBILE(dev_priv)	((dev_priv)->info.is_mobile)
> > > >    #define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv) && \
> > > >    				    (INTEL_DEVID(dev_priv) &
> > > > 0xFF00) == 0x0C00)
> > > > @@ -2706,6 +2707,7 @@ intel_info(const struct drm_i915_private
> > > > *dev_priv)
> > > >    #define IS_GEN8(dev_priv)	(!!((dev_priv)->info.gen_mask &
> > > > BIT(7)))
> > > >    #define IS_GEN9(dev_priv)	(!!((dev_priv)->info.gen_mask &
> > > > BIT(8)))
> > > >    #define IS_GEN10(dev_priv)	(!!((dev_priv)->info.gen_mask &
> > > > BIT(9)))
> > > > +#define IS_GEN11(dev_priv)	(!!((dev_priv)->info.gen_mask &
> > > > BIT(10)))
> > > >    #define IS_LP(dev_priv)	(INTEL_INFO(dev_priv)->is_lp)
> > > >    #define IS_GEN9_LP(dev_priv)	(IS_GEN9(dev_priv) &&
> > > > IS_LP(dev_priv))
> > > > diff --git a/drivers/gpu/drm/i915/i915_pci.c
> > > > b/drivers/gpu/drm/i915/i915_pci.c
> > > > index 36d48422b475..88cd4a3b12f5 100644
> > > > --- a/drivers/gpu/drm/i915/i915_pci.c
> > > > +++ b/drivers/gpu/drm/i915/i915_pci.c
> > > > @@ -579,6 +579,19 @@ static const struct intel_device_info
> > > > intel_cannonlake_gt2_info __initconst = {
> > > >    	.gt = 2,
> > > >    };
> > > > +#define GEN11_FEATURES \
> > > > +	GEN10_FEATURES, \
> > > > +	.gen = 11, \
> > > > +	.ddb_size = 2048, \
> > > > +	.has_csr = 0
> > > > +
> > > > +static const struct intel_device_info intel_icelake_11_info = {
> > > > +	GEN11_FEATURES,
> > > > +	.platform = INTEL_ICELAKE,
> > > > +	.is_alpha_support = 1,
> > > > +	.has_resource_streamer = 0,
> > > > +};
> > > > +
> > > This needs to change to fit the new GEN features inheritance
> > > organization recently introduced by Rodrigo (with a GEN11_FEATURES
> > > and I
> > > guess an ICL_11_PLATFORM). Should I go ahead?
> > My understanding is that this is already following the new inheritance
> > model. There's already a GEN11_FEATURES and it doesn't include an
> > ICL_11_PLATFORM because it doesn't need to (and CNL also doesn't have a
> > CNL_PLATFORM). What do you think needs to be changed?
> > 
> > The one thing I do see we lack is the __initconst keyword.
> 
> As a minimum there is the __initconst keyword and the fact that the .gen
> value is not assigned inside the GENX_FEATURES for any other platform. As
> for the PLATFORM, we can do that now or wait until we need it, I guess it
> doesn't matter.

On the current code only gen9_lp add the .gen inside the feature blocks,
core platform adds on the platform definition.
I can't remember if this was intentional to make inheritance clear on
platforms that reuse display from one gen and core from another or it was
just a mistake.

Anyways, for this patch here with __initconst I believe it follows the
current standard so:


Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>



> 
> > 
> > > >    /*
> > > >     * Make sure any device matches here are from most specific to
> > > > most
> > > >     * general.  For example, since the Quanta match is based on the
> > > > subsystem
> > > > diff --git a/drivers/gpu/drm/i915/intel_device_info.c
> > > > b/drivers/gpu/drm/i915/intel_device_info.c
> > > > index d28592e43512..a2c16140169f 100644
> > > > --- a/drivers/gpu/drm/i915/intel_device_info.c
> > > > +++ b/drivers/gpu/drm/i915/intel_device_info.c
> > > > @@ -56,6 +56,7 @@ static const char * const platform_names[] = {
> > > >    	PLATFORM_NAME(GEMINILAKE),
> > > >    	PLATFORM_NAME(COFFEELAKE),
> > > >    	PLATFORM_NAME(CANNONLAKE),
> > > > +	PLATFORM_NAME(ICELAKE),
> > > >    };
> > > >    #undef PLATFORM_NAME
> > > > diff --git a/drivers/gpu/drm/i915/intel_device_info.h
> > > > b/drivers/gpu/drm/i915/intel_device_info.h
> > > > index 49cb27bd04c1..9542018d11d0 100644
> > > > --- a/drivers/gpu/drm/i915/intel_device_info.h
> > > > +++ b/drivers/gpu/drm/i915/intel_device_info.h
> > > > @@ -69,6 +69,8 @@ enum intel_platform {
> > > >    	INTEL_COFFEELAKE,
> > > >    	/* gen10 */
> > > >    	INTEL_CANNONLAKE,
> > > > +	/* gen11 */
> > > > +	INTEL_ICELAKE,
> > > >    	INTEL_MAX_PLATFORMS
> > > >    };
> > > 
>
Zanoni, Paulo R Jan. 10, 2018, 6:38 p.m. UTC | #7
Em Qua, 2018-01-10 às 10:22 -0800, Rodrigo Vivi escreveu:
> On Wed, Jan 10, 2018 at 06:08:21PM +0000, Oscar Mateo wrote:
> > 
> > 
> > On 01/10/2018 09:57 AM, Paulo Zanoni wrote:
> > > Em Ter, 2018-01-09 às 15:59 -0800, Oscar Mateo escreveu:
> > > > On 01/09/2018 03:23 PM, Paulo Zanoni wrote:
> > > > > From: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > > > 
> > > > > Icelake is a Intel® Processor containing Intel® HD Graphics.
> > > > > 
> > > > > This is just an initial Icelake definition. PCI IDs, Icelake
> > > > > support
> > > > > and new features coming in following patches.
> > > > > 
> > > > > v2: Add .ddb_size and .has_guc (Michal Wajdeczko).
> > > > > v3: Add the ICL_FEATURES macro (Kelvin Gardiner).
> > > > > 
> > > > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > > > Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > > > ---
> > > > >    drivers/gpu/drm/i915/i915_drv.h          |  2 ++
> > > > >    drivers/gpu/drm/i915/i915_pci.c          | 13
> > > > > +++++++++++++
> > > > >    drivers/gpu/drm/i915/intel_device_info.c |  1 +
> > > > >    drivers/gpu/drm/i915/intel_device_info.h |  2 ++
> > > > >    4 files changed, 18 insertions(+)
> > > > > 
> > > > > diff --git a/drivers/gpu/drm/i915/i915_drv.h
> > > > > b/drivers/gpu/drm/i915/i915_drv.h
> > > > > index a689396d0ff6..016920f58ae6 100644
> > > > > --- a/drivers/gpu/drm/i915/i915_drv.h
> > > > > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > > > > @@ -2595,6 +2595,7 @@ intel_info(const struct
> > > > > drm_i915_private
> > > > > *dev_priv)
> > > > >    #define IS_GEMINILAKE(dev_priv)	IS_PLATFORM(dev_pri
> > > > > v,
> > > > > INTEL_GEMINILAKE)
> > > > >    #define IS_COFFEELAKE(dev_priv)	IS_PLATFORM(dev_pri
> > > > > v,
> > > > > INTEL_COFFEELAKE)
> > > > >    #define IS_CANNONLAKE(dev_priv)	IS_PLATFORM(dev_pri
> > > > > v,
> > > > > INTEL_CANNONLAKE)
> > > > > +#define IS_ICELAKE(dev_priv)	IS_PLATFORM(dev_priv,
> > > > > INTEL_ICELAKE)
> > > > >    #define IS_MOBILE(dev_priv)	((dev_priv)-
> > > > > >info.is_mobile)
> > > > >    #define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv)
> > > > > && \
> > > > >    				    (INTEL_DEVID(dev_priv)
> > > > > &
> > > > > 0xFF00) == 0x0C00)
> > > > > @@ -2706,6 +2707,7 @@ intel_info(const struct
> > > > > drm_i915_private
> > > > > *dev_priv)
> > > > >    #define IS_GEN8(dev_priv)	(!!((dev_priv)-
> > > > > >info.gen_mask &
> > > > > BIT(7)))
> > > > >    #define IS_GEN9(dev_priv)	(!!((dev_priv)-
> > > > > >info.gen_mask &
> > > > > BIT(8)))
> > > > >    #define IS_GEN10(dev_priv)	(!!((dev_priv)-
> > > > > >info.gen_mask &
> > > > > BIT(9)))
> > > > > +#define IS_GEN11(dev_priv)	(!!((dev_priv)-
> > > > > >info.gen_mask &
> > > > > BIT(10)))
> > > > >    #define IS_LP(dev_priv)	(INTEL_INFO(dev_priv)-
> > > > > >is_lp)
> > > > >    #define IS_GEN9_LP(dev_priv)	(IS_GEN9(dev_priv) &&
> > > > > IS_LP(dev_priv))
> > > > > diff --git a/drivers/gpu/drm/i915/i915_pci.c
> > > > > b/drivers/gpu/drm/i915/i915_pci.c
> > > > > index 36d48422b475..88cd4a3b12f5 100644
> > > > > --- a/drivers/gpu/drm/i915/i915_pci.c
> > > > > +++ b/drivers/gpu/drm/i915/i915_pci.c
> > > > > @@ -579,6 +579,19 @@ static const struct intel_device_info
> > > > > intel_cannonlake_gt2_info __initconst = {
> > > > >    	.gt = 2,
> > > > >    };
> > > > > +#define GEN11_FEATURES \
> > > > > +	GEN10_FEATURES, \
> > > > > +	.gen = 11, \
> > > > > +	.ddb_size = 2048, \
> > > > > +	.has_csr = 0
> > > > > +
> > > > > +static const struct intel_device_info intel_icelake_11_info
> > > > > = {
> > > > > +	GEN11_FEATURES,
> > > > > +	.platform = INTEL_ICELAKE,
> > > > > +	.is_alpha_support = 1,
> > > > > +	.has_resource_streamer = 0,
> > > > > +};
> > > > > +
> > > > 
> > > > This needs to change to fit the new GEN features inheritance
> > > > organization recently introduced by Rodrigo (with a
> > > > GEN11_FEATURES
> > > > and I
> > > > guess an ICL_11_PLATFORM). Should I go ahead?
> > > 
> > > My understanding is that this is already following the new
> > > inheritance
> > > model. There's already a GEN11_FEATURES and it doesn't include an
> > > ICL_11_PLATFORM because it doesn't need to (and CNL also doesn't
> > > have a
> > > CNL_PLATFORM). What do you think needs to be changed?
> > > 
> > > The one thing I do see we lack is the __initconst keyword.
> > 
> > As a minimum there is the __initconst keyword and the fact that the
> > .gen
> > value is not assigned inside the GENX_FEATURES for any other
> > platform. As
> > for the PLATFORM, we can do that now or wait until we need it, I
> > guess it
> > doesn't matter.
> 
> On the current code only gen9_lp add the .gen inside the feature
> blocks,
> core platform adds on the platform definition.
> I can't remember if this was intentional to make inheritance clear on
> platforms that reuse display from one gen and core from another or it
> was
> just a mistake.

Yeah, there's some confusion on gen 8/9.

> 
> Anyways, for this patch here with __initconst I believe it follows
> the
> current standard so:
> 
> 
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

So, since you're the maintainer and I assume you're leading by example,
can I start giving R-B tags to my own patches too? :)

Anyway, I also think the next version I'm going to submit will be fine,
so I suppose a r-b from me would count.

If anybody disagrees the current plan is mergeable please say so.

> 
> 
> 
> > 
> > > 
> > > > >    /*
> > > > >     * Make sure any device matches here are from most
> > > > > specific to
> > > > > most
> > > > >     * general.  For example, since the Quanta match is based
> > > > > on the
> > > > > subsystem
> > > > > diff --git a/drivers/gpu/drm/i915/intel_device_info.c
> > > > > b/drivers/gpu/drm/i915/intel_device_info.c
> > > > > index d28592e43512..a2c16140169f 100644
> > > > > --- a/drivers/gpu/drm/i915/intel_device_info.c
> > > > > +++ b/drivers/gpu/drm/i915/intel_device_info.c
> > > > > @@ -56,6 +56,7 @@ static const char * const platform_names[]
> > > > > = {
> > > > >    	PLATFORM_NAME(GEMINILAKE),
> > > > >    	PLATFORM_NAME(COFFEELAKE),
> > > > >    	PLATFORM_NAME(CANNONLAKE),
> > > > > +	PLATFORM_NAME(ICELAKE),
> > > > >    };
> > > > >    #undef PLATFORM_NAME
> > > > > diff --git a/drivers/gpu/drm/i915/intel_device_info.h
> > > > > b/drivers/gpu/drm/i915/intel_device_info.h
> > > > > index 49cb27bd04c1..9542018d11d0 100644
> > > > > --- a/drivers/gpu/drm/i915/intel_device_info.h
> > > > > +++ b/drivers/gpu/drm/i915/intel_device_info.h
> > > > > @@ -69,6 +69,8 @@ enum intel_platform {
> > > > >    	INTEL_COFFEELAKE,
> > > > >    	/* gen10 */
> > > > >    	INTEL_CANNONLAKE,
> > > > > +	/* gen11 */
> > > > > +	INTEL_ICELAKE,
> > > > >    	INTEL_MAX_PLATFORMS
> > > > >    };
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Rodrigo Vivi Jan. 11, 2018, 1:25 a.m. UTC | #8
On Wed, Jan 10, 2018 at 06:38:13PM +0000, Paulo Zanoni wrote:
> Em Qua, 2018-01-10 às 10:22 -0800, Rodrigo Vivi escreveu:
> > On Wed, Jan 10, 2018 at 06:08:21PM +0000, Oscar Mateo wrote:
> > > 
> > > 
> > > On 01/10/2018 09:57 AM, Paulo Zanoni wrote:
> > > > Em Ter, 2018-01-09 às 15:59 -0800, Oscar Mateo escreveu:
> > > > > On 01/09/2018 03:23 PM, Paulo Zanoni wrote:
> > > > > > From: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > > > > 
> > > > > > Icelake is a Intel® Processor containing Intel® HD Graphics.
> > > > > > 
> > > > > > This is just an initial Icelake definition. PCI IDs, Icelake
> > > > > > support
> > > > > > and new features coming in following patches.
> > > > > > 
> > > > > > v2: Add .ddb_size and .has_guc (Michal Wajdeczko).
> > > > > > v3: Add the ICL_FEATURES macro (Kelvin Gardiner).
> > > > > > 
> > > > > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > > > > Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > > > > > ---
> > > > > >    drivers/gpu/drm/i915/i915_drv.h          |  2 ++
> > > > > >    drivers/gpu/drm/i915/i915_pci.c          | 13
> > > > > > +++++++++++++
> > > > > >    drivers/gpu/drm/i915/intel_device_info.c |  1 +
> > > > > >    drivers/gpu/drm/i915/intel_device_info.h |  2 ++
> > > > > >    4 files changed, 18 insertions(+)
> > > > > > 
> > > > > > diff --git a/drivers/gpu/drm/i915/i915_drv.h
> > > > > > b/drivers/gpu/drm/i915/i915_drv.h
> > > > > > index a689396d0ff6..016920f58ae6 100644
> > > > > > --- a/drivers/gpu/drm/i915/i915_drv.h
> > > > > > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > > > > > @@ -2595,6 +2595,7 @@ intel_info(const struct
> > > > > > drm_i915_private
> > > > > > *dev_priv)
> > > > > >    #define IS_GEMINILAKE(dev_priv)	IS_PLATFORM(dev_pri
> > > > > > v,
> > > > > > INTEL_GEMINILAKE)
> > > > > >    #define IS_COFFEELAKE(dev_priv)	IS_PLATFORM(dev_pri
> > > > > > v,
> > > > > > INTEL_COFFEELAKE)
> > > > > >    #define IS_CANNONLAKE(dev_priv)	IS_PLATFORM(dev_pri
> > > > > > v,
> > > > > > INTEL_CANNONLAKE)
> > > > > > +#define IS_ICELAKE(dev_priv)	IS_PLATFORM(dev_priv,
> > > > > > INTEL_ICELAKE)
> > > > > >    #define IS_MOBILE(dev_priv)	((dev_priv)-
> > > > > > >info.is_mobile)
> > > > > >    #define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv)
> > > > > > && \
> > > > > >    				    (INTEL_DEVID(dev_priv)
> > > > > > &
> > > > > > 0xFF00) == 0x0C00)
> > > > > > @@ -2706,6 +2707,7 @@ intel_info(const struct
> > > > > > drm_i915_private
> > > > > > *dev_priv)
> > > > > >    #define IS_GEN8(dev_priv)	(!!((dev_priv)-
> > > > > > >info.gen_mask &
> > > > > > BIT(7)))
> > > > > >    #define IS_GEN9(dev_priv)	(!!((dev_priv)-
> > > > > > >info.gen_mask &
> > > > > > BIT(8)))
> > > > > >    #define IS_GEN10(dev_priv)	(!!((dev_priv)-
> > > > > > >info.gen_mask &
> > > > > > BIT(9)))
> > > > > > +#define IS_GEN11(dev_priv)	(!!((dev_priv)-
> > > > > > >info.gen_mask &
> > > > > > BIT(10)))
> > > > > >    #define IS_LP(dev_priv)	(INTEL_INFO(dev_priv)-
> > > > > > >is_lp)
> > > > > >    #define IS_GEN9_LP(dev_priv)	(IS_GEN9(dev_priv) &&
> > > > > > IS_LP(dev_priv))
> > > > > > diff --git a/drivers/gpu/drm/i915/i915_pci.c
> > > > > > b/drivers/gpu/drm/i915/i915_pci.c
> > > > > > index 36d48422b475..88cd4a3b12f5 100644
> > > > > > --- a/drivers/gpu/drm/i915/i915_pci.c
> > > > > > +++ b/drivers/gpu/drm/i915/i915_pci.c
> > > > > > @@ -579,6 +579,19 @@ static const struct intel_device_info
> > > > > > intel_cannonlake_gt2_info __initconst = {
> > > > > >    	.gt = 2,
> > > > > >    };
> > > > > > +#define GEN11_FEATURES \
> > > > > > +	GEN10_FEATURES, \
> > > > > > +	.gen = 11, \
> > > > > > +	.ddb_size = 2048, \
> > > > > > +	.has_csr = 0
> > > > > > +
> > > > > > +static const struct intel_device_info intel_icelake_11_info
> > > > > > = {
> > > > > > +	GEN11_FEATURES,
> > > > > > +	.platform = INTEL_ICELAKE,
> > > > > > +	.is_alpha_support = 1,
> > > > > > +	.has_resource_streamer = 0,
> > > > > > +};
> > > > > > +
> > > > > 
> > > > > This needs to change to fit the new GEN features inheritance
> > > > > organization recently introduced by Rodrigo (with a
> > > > > GEN11_FEATURES
> > > > > and I
> > > > > guess an ICL_11_PLATFORM). Should I go ahead?
> > > > 
> > > > My understanding is that this is already following the new
> > > > inheritance
> > > > model. There's already a GEN11_FEATURES and it doesn't include an
> > > > ICL_11_PLATFORM because it doesn't need to (and CNL also doesn't
> > > > have a
> > > > CNL_PLATFORM). What do you think needs to be changed?
> > > > 
> > > > The one thing I do see we lack is the __initconst keyword.
> > > 
> > > As a minimum there is the __initconst keyword and the fact that the
> > > .gen
> > > value is not assigned inside the GENX_FEATURES for any other
> > > platform. As
> > > for the PLATFORM, we can do that now or wait until we need it, I
> > > guess it
> > > doesn't matter.
> > 
> > On the current code only gen9_lp add the .gen inside the feature
> > blocks,
> > core platform adds on the platform definition.
> > I can't remember if this was intentional to make inheritance clear on
> > platforms that reuse display from one gen and core from another or it
> > was
> > just a mistake.
> 
> Yeah, there's some confusion on gen 8/9.
> 
> > 
> > Anyways, for this patch here with __initconst I believe it follows
> > the
> > current standard so:
> > 
> > 
> > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> 
> So, since you're the maintainer and I assume you're leading by example,
> can I start giving R-B tags to my own patches too? :)

hahaha I didn't remember and I didn't noticed it! :)

the important part is that we have now 2 people agreeing with this patch

> 
> Anyway, I also think the next version I'm going to submit will be fine,
> so I suppose a r-b from me would count.
> 
> If anybody disagrees the current plan is mergeable please say so.
> 
> > 
> > 
> > 
> > > 
> > > > 
> > > > > >    /*
> > > > > >     * Make sure any device matches here are from most
> > > > > > specific to
> > > > > > most
> > > > > >     * general.  For example, since the Quanta match is based
> > > > > > on the
> > > > > > subsystem
> > > > > > diff --git a/drivers/gpu/drm/i915/intel_device_info.c
> > > > > > b/drivers/gpu/drm/i915/intel_device_info.c
> > > > > > index d28592e43512..a2c16140169f 100644
> > > > > > --- a/drivers/gpu/drm/i915/intel_device_info.c
> > > > > > +++ b/drivers/gpu/drm/i915/intel_device_info.c
> > > > > > @@ -56,6 +56,7 @@ static const char * const platform_names[]
> > > > > > = {
> > > > > >    	PLATFORM_NAME(GEMINILAKE),
> > > > > >    	PLATFORM_NAME(COFFEELAKE),
> > > > > >    	PLATFORM_NAME(CANNONLAKE),
> > > > > > +	PLATFORM_NAME(ICELAKE),
> > > > > >    };
> > > > > >    #undef PLATFORM_NAME
> > > > > > diff --git a/drivers/gpu/drm/i915/intel_device_info.h
> > > > > > b/drivers/gpu/drm/i915/intel_device_info.h
> > > > > > index 49cb27bd04c1..9542018d11d0 100644
> > > > > > --- a/drivers/gpu/drm/i915/intel_device_info.h
> > > > > > +++ b/drivers/gpu/drm/i915/intel_device_info.h
> > > > > > @@ -69,6 +69,8 @@ enum intel_platform {
> > > > > >    	INTEL_COFFEELAKE,
> > > > > >    	/* gen10 */
> > > > > >    	INTEL_CANNONLAKE,
> > > > > > +	/* gen11 */
> > > > > > +	INTEL_ICELAKE,
> > > > > >    	INTEL_MAX_PLATFORMS
> > > > > >    };
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index a689396d0ff6..016920f58ae6 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2595,6 +2595,7 @@  intel_info(const struct drm_i915_private *dev_priv)
 #define IS_GEMINILAKE(dev_priv)	IS_PLATFORM(dev_priv, INTEL_GEMINILAKE)
 #define IS_COFFEELAKE(dev_priv)	IS_PLATFORM(dev_priv, INTEL_COFFEELAKE)
 #define IS_CANNONLAKE(dev_priv)	IS_PLATFORM(dev_priv, INTEL_CANNONLAKE)
+#define IS_ICELAKE(dev_priv)	IS_PLATFORM(dev_priv, INTEL_ICELAKE)
 #define IS_MOBILE(dev_priv)	((dev_priv)->info.is_mobile)
 #define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv) && \
 				    (INTEL_DEVID(dev_priv) & 0xFF00) == 0x0C00)
@@ -2706,6 +2707,7 @@  intel_info(const struct drm_i915_private *dev_priv)
 #define IS_GEN8(dev_priv)	(!!((dev_priv)->info.gen_mask & BIT(7)))
 #define IS_GEN9(dev_priv)	(!!((dev_priv)->info.gen_mask & BIT(8)))
 #define IS_GEN10(dev_priv)	(!!((dev_priv)->info.gen_mask & BIT(9)))
+#define IS_GEN11(dev_priv)	(!!((dev_priv)->info.gen_mask & BIT(10)))
 
 #define IS_LP(dev_priv)	(INTEL_INFO(dev_priv)->is_lp)
 #define IS_GEN9_LP(dev_priv)	(IS_GEN9(dev_priv) && IS_LP(dev_priv))
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 36d48422b475..88cd4a3b12f5 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -579,6 +579,19 @@  static const struct intel_device_info intel_cannonlake_gt2_info __initconst = {
 	.gt = 2,
 };
 
+#define GEN11_FEATURES \
+	GEN10_FEATURES, \
+	.gen = 11, \
+	.ddb_size = 2048, \
+	.has_csr = 0
+
+static const struct intel_device_info intel_icelake_11_info = {
+	GEN11_FEATURES,
+	.platform = INTEL_ICELAKE,
+	.is_alpha_support = 1,
+	.has_resource_streamer = 0,
+};
+
 /*
  * Make sure any device matches here are from most specific to most
  * general.  For example, since the Quanta match is based on the subsystem
diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
index d28592e43512..a2c16140169f 100644
--- a/drivers/gpu/drm/i915/intel_device_info.c
+++ b/drivers/gpu/drm/i915/intel_device_info.c
@@ -56,6 +56,7 @@  static const char * const platform_names[] = {
 	PLATFORM_NAME(GEMINILAKE),
 	PLATFORM_NAME(COFFEELAKE),
 	PLATFORM_NAME(CANNONLAKE),
+	PLATFORM_NAME(ICELAKE),
 };
 #undef PLATFORM_NAME
 
diff --git a/drivers/gpu/drm/i915/intel_device_info.h b/drivers/gpu/drm/i915/intel_device_info.h
index 49cb27bd04c1..9542018d11d0 100644
--- a/drivers/gpu/drm/i915/intel_device_info.h
+++ b/drivers/gpu/drm/i915/intel_device_info.h
@@ -69,6 +69,8 @@  enum intel_platform {
 	INTEL_COFFEELAKE,
 	/* gen10 */
 	INTEL_CANNONLAKE,
+	/* gen11 */
+	INTEL_ICELAKE,
 	INTEL_MAX_PLATFORMS
 };