Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bbf0ef03 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-intel-next-2014-10-03-no-ppgtt' of...

Merge tag 'drm-intel-next-2014-10-03-no-ppgtt' of git://anongit.freedesktop.org/drm-intel into drm-next

Ok, new attempt, this time around with full ppgtt disabled again.

drm-intel-next-2014-10-03:
- first batch of skl stage 1 enabling
- fixes from Rodrigo to the PSR, fbc and sink crc code
- kerneldoc for the frontbuffer tracking code, runtime pm code and the basic
  interrupt enable/disable functions
- smaller stuff all over
drm-intel-next-2014-09-19:
- bunch more i830M fixes from Ville
- full ppgtt now again enabled by default
- more ppgtt fixes from Michel Thierry and Chris Wilson
- plane config work from Gustavo Padovan
- spinlock clarifications
- piles of smaller improvements all over, as usual

* tag 'drm-intel-next-2014-10-03-no-ppgtt' of git://anongit.freedesktop.org/drm-intel: (114 commits)
  Revert "drm/i915: Enable full PPGTT on gen7"
  drm/i915: Update DRIVER_DATE to 20141003
  drm/i915: Remove the duplicated logic between the two shrink phases
  drm/i915: kerneldoc for interrupt enable/disable functions
  drm/i915: Use dev_priv instead of dev in irq setup functions
  drm/i915: s/pm._irqs_disabled/pm.irqs_enabled/
  drm/i915: Clear TX FIFO reset master override bits on chv
  drm/i915: Make sure hardware uses the correct swing margin/deemph bits on chv
  drm/i915: make sink_crc return -EIO on aux read/write failure
  drm/i915: Constify send buffer for intel_dp_aux_ch
  drm/i915: De-magic the PSR AUX message
  drm/i915: Reinstate error level message for non-simulated gpu hangs
  drm/i915: Kerneldoc for intel_runtime_pm.c
  drm/i915: Call runtime_pm_disable directly
  drm/i915: Move intel_display_set_init_power to intel_runtime_pm.c
  drm/i915: Bikeshed rpm functions name a bit.
  drm/i915: Extract intel_runtime_pm.c
  drm/i915: Remove intel_modeset_suspend_hw
  drm/i915: spelling fixes for frontbuffer tracking kerneldoc
  drm/i915: Tighting frontbuffer tracking around flips
  ...
parents cac7f242 cacc6c83
Loading
Loading
Loading
Loading
+28 −0
Original line number Original line Diff line number Diff line
@@ -3787,6 +3787,26 @@ int num_ioctls;</synopsis>
      blocks. This excludes a set of SoC platforms with an SGX rendering unit,
      blocks. This excludes a set of SoC platforms with an SGX rendering unit,
      those have basic support through the gma500 drm driver.
      those have basic support through the gma500 drm driver.
    </para>
    </para>
    <sect1>
      <title>Core Driver Infrastructure</title>
      <para>
	This section covers core driver infrastructure used by both the display
	and the GEM parts of the driver.
      </para>
      <sect2>
        <title>Runtime Power Management</title>
!Pdrivers/gpu/drm/i915/intel_runtime_pm.c runtime pm
!Idrivers/gpu/drm/i915/intel_runtime_pm.c
      </sect2>
      <sect2>
        <title>Interrupt Handling</title>
!Pdrivers/gpu/drm/i915/i915_irq.c interrupt handling
!Fdrivers/gpu/drm/i915/i915_irq.c intel_irq_init intel_irq_init_hw intel_hpd_init
!Fdrivers/gpu/drm/i915/i915_irq.c intel_irq_fini
!Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_disable_interrupts
!Fdrivers/gpu/drm/i915/i915_irq.c intel_runtime_pm_enable_interrupts
      </sect2>
    </sect1>
    <sect1>
    <sect1>
      <title>Display Hardware Handling</title>
      <title>Display Hardware Handling</title>
      <para>
      <para>
@@ -3803,6 +3823,13 @@ int num_ioctls;</synopsis>
          configuration change.
          configuration change.
        </para>
        </para>
      </sect2>
      </sect2>
      <sect2>
        <title>Frontbuffer Tracking</title>
!Pdrivers/gpu/drm/i915/intel_frontbuffer.c frontbuffer tracking
!Idrivers/gpu/drm/i915/intel_frontbuffer.c
!Fdrivers/gpu/drm/i915/intel_drv.h intel_frontbuffer_flip
!Fdrivers/gpu/drm/i915/i915_gem.c i915_gem_track_fb
      </sect2>
      <sect2>
      <sect2>
        <title>Plane Configuration</title>
        <title>Plane Configuration</title>
        <para>
        <para>
@@ -3932,5 +3959,6 @@ int num_ioctls;</synopsis>
      </sect2>
      </sect2>
    </sect1>
    </sect1>
  </chapter>
  </chapter>
!Cdrivers/gpu/drm/i915/i915_irq.c
</part>
</part>
</book>
</book>
+23 −0
Original line number Original line Diff line number Diff line
@@ -455,6 +455,23 @@ struct intel_stolen_funcs {
	u32 (*base)(int num, int slot, int func, size_t size);
	u32 (*base)(int num, int slot, int func, size_t size);
};
};


static size_t __init gen9_stolen_size(int num, int slot, int func)
{
	u16 gmch_ctrl;

	gmch_ctrl = read_pci_config_16(num, slot, func, SNB_GMCH_CTRL);
	gmch_ctrl >>= BDW_GMCH_GMS_SHIFT;
	gmch_ctrl &= BDW_GMCH_GMS_MASK;

	if (gmch_ctrl < 0xf0)
		return gmch_ctrl << 25; /* 32 MB units */
	else
		/* 4MB increments starting at 0xf0 for 4MB */
		return (gmch_ctrl - 0xf0 + 1) << 22;
}

typedef size_t (*stolen_size_fn)(int num, int slot, int func);

static const struct intel_stolen_funcs i830_stolen_funcs __initconst = {
static const struct intel_stolen_funcs i830_stolen_funcs __initconst = {
	.base = i830_stolen_base,
	.base = i830_stolen_base,
	.size = i830_stolen_size,
	.size = i830_stolen_size,
@@ -490,6 +507,11 @@ static const struct intel_stolen_funcs gen8_stolen_funcs __initconst = {
	.size = gen8_stolen_size,
	.size = gen8_stolen_size,
};
};


static const struct intel_stolen_funcs gen9_stolen_funcs __initconst = {
	.base = intel_stolen_base,
	.size = gen9_stolen_size,
};

static const struct intel_stolen_funcs chv_stolen_funcs __initconst = {
static const struct intel_stolen_funcs chv_stolen_funcs __initconst = {
	.base = intel_stolen_base,
	.base = intel_stolen_base,
	.size = chv_stolen_size,
	.size = chv_stolen_size,
@@ -523,6 +545,7 @@ static const struct pci_device_id intel_stolen_ids[] __initconst = {
	INTEL_BDW_M_IDS(&gen8_stolen_funcs),
	INTEL_BDW_M_IDS(&gen8_stolen_funcs),
	INTEL_BDW_D_IDS(&gen8_stolen_funcs),
	INTEL_BDW_D_IDS(&gen8_stolen_funcs),
	INTEL_CHV_IDS(&chv_stolen_funcs),
	INTEL_CHV_IDS(&chv_stolen_funcs),
	INTEL_SKL_IDS(&gen9_stolen_funcs),
};
};


static void __init intel_graphics_stolen(int num, int slot, int func)
static void __init intel_graphics_stolen(int num, int slot, int func)
+0 −4
Original line number Original line Diff line number Diff line
@@ -153,7 +153,6 @@ static struct page *i8xx_alloc_pages(void)
		__free_pages(page, 2);
		__free_pages(page, 2);
		return NULL;
		return NULL;
	}
	}
	get_page(page);
	atomic_inc(&agp_bridge->current_memory_agp);
	atomic_inc(&agp_bridge->current_memory_agp);
	return page;
	return page;
}
}
@@ -164,7 +163,6 @@ static void i8xx_destroy_pages(struct page *page)
		return;
		return;


	set_pages_wb(page, 4);
	set_pages_wb(page, 4);
	put_page(page);
	__free_pages(page, 2);
	__free_pages(page, 2);
	atomic_dec(&agp_bridge->current_memory_agp);
	atomic_dec(&agp_bridge->current_memory_agp);
}
}
@@ -300,7 +298,6 @@ static int intel_gtt_setup_scratch_page(void)
	page = alloc_page(GFP_KERNEL | GFP_DMA32 | __GFP_ZERO);
	page = alloc_page(GFP_KERNEL | GFP_DMA32 | __GFP_ZERO);
	if (page == NULL)
	if (page == NULL)
		return -ENOMEM;
		return -ENOMEM;
	get_page(page);
	set_pages_uc(page, 1);
	set_pages_uc(page, 1);


	if (intel_private.needs_dmar) {
	if (intel_private.needs_dmar) {
@@ -560,7 +557,6 @@ static void intel_gtt_teardown_scratch_page(void)
	set_pages_wb(intel_private.scratch_page, 1);
	set_pages_wb(intel_private.scratch_page, 1);
	pci_unmap_page(intel_private.pcidev, intel_private.scratch_page_dma,
	pci_unmap_page(intel_private.pcidev, intel_private.scratch_page_dma,
		       PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
		       PAGE_SIZE, PCI_DMA_BIDIRECTIONAL);
	put_page(intel_private.scratch_page);
	__free_page(intel_private.scratch_page);
	__free_page(intel_private.scratch_page);
}
}


+4 −1
Original line number Original line Diff line number Diff line
@@ -11,7 +11,9 @@ i915-y := i915_drv.o \
	  i915_params.o \
	  i915_params.o \
          i915_suspend.o \
          i915_suspend.o \
	  i915_sysfs.o \
	  i915_sysfs.o \
	  intel_pm.o
	  intel_pm.o \
	  intel_runtime_pm.o

i915-$(CONFIG_COMPAT)   += i915_ioc32.o
i915-$(CONFIG_COMPAT)   += i915_ioc32.o
i915-$(CONFIG_DEBUG_FS) += i915_debugfs.o
i915-$(CONFIG_DEBUG_FS) += i915_debugfs.o


@@ -43,6 +45,7 @@ i915-y += intel_renderstate_gen6.o \
# modesetting core code
# modesetting core code
i915-y += intel_bios.o \
i915-y += intel_bios.o \
	  intel_display.o \
	  intel_display.o \
	  intel_frontbuffer.o \
	  intel_modes.o \
	  intel_modes.o \
	  intel_overlay.o \
	  intel_overlay.o \
	  intel_sideband.o \
	  intel_sideband.o \
+4 −7
Original line number Original line Diff line number Diff line
@@ -847,12 +847,7 @@ bool i915_needs_cmd_parser(struct intel_engine_cs *ring)
	if (!ring->needs_cmd_parser)
	if (!ring->needs_cmd_parser)
		return false;
		return false;


	/*
	if (!USES_PPGTT(ring->dev))
	 * XXX: VLV is Gen7 and therefore has cmd_tables, but has PPGTT
	 * disabled. That will cause all of the parser's PPGTT checks to
	 * fail. For now, disable parsing when PPGTT is off.
	 */
	if (USES_PPGTT(ring->dev))
		return false;
		return false;


	return (i915.enable_cmd_parser == 1);
	return (i915.enable_cmd_parser == 1);
@@ -888,8 +883,10 @@ static bool check_cmd(const struct intel_engine_cs *ring,
		 * OACONTROL writes to only MI_LOAD_REGISTER_IMM commands.
		 * OACONTROL writes to only MI_LOAD_REGISTER_IMM commands.
		 */
		 */
		if (reg_addr == OACONTROL) {
		if (reg_addr == OACONTROL) {
			if (desc->cmd.value == MI_LOAD_REGISTER_MEM)
			if (desc->cmd.value == MI_LOAD_REGISTER_MEM) {
				DRM_DEBUG_DRIVER("CMD: Rejected LRM to OACONTROL\n");
				return false;
				return false;
			}


			if (desc->cmd.value == MI_LOAD_REGISTER_IMM(1))
			if (desc->cmd.value == MI_LOAD_REGISTER_IMM(1))
				*oacontrol_set = (cmd[2] != 0);
				*oacontrol_set = (cmd[2] != 0);
Loading